Merge branch aosp/icu68 into aosp/master am: 1c70eaa634

Original change: https://android-review.googlesource.com/c/platform/external/icu/+/1557188

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I2c39fca14c306d9aa37383b3d9dd8560724d64ca
diff --git a/README.version b/README.version
index e135d06..39c819c 100644
--- a/README.version
+++ b/README.version
@@ -1,3 +1,3 @@
 URL: https://github.com/unicode-org/icu
-Version: 67.1
+Version: 68.2
 BugComponent: 23970
diff --git a/android_icu4j/resources/android/icu/ICUConfig.properties b/android_icu4j/resources/android/icu/ICUConfig.properties
index 8851038..9d26445 100644
--- a/android_icu4j/resources/android/icu/ICUConfig.properties
+++ b/android_icu4j/resources/android/icu/ICUConfig.properties
@@ -1,7 +1,7 @@
 #*
 #*******************************************************************************
 # Copyright (C) 2016 and later: Unicode, Inc. and others.                      *
-# License & terms of use: http://www.unicode.org/copyright.html#License        *
+# License & terms of use: http://www.unicode.org/copyright.html        *
 #*******************************************************************************
 #*******************************************************************************
 #* Copyright (C) 2008-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/resources/android/icu/impl/duration/impl/data/index.txt b/android_icu4j/resources/android/icu/impl/duration/impl/data/index.txt
index b4d05ac..7735c1e 100644
--- a/android_icu4j/resources/android/icu/impl/duration/impl/data/index.txt
+++ b/android_icu4j/resources/android/icu/impl/duration/impl/data/index.txt
@@ -1,6 +1,6 @@
 #******************************************************************************
 #* Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-#* License & terms of use: http://www.unicode.org/copyright.html#License      *
+#* License & terms of use: http://www.unicode.org/copyright.html      *
 #******************************************************************************
 #******************************************************************************
 #* Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ar_EG.xml b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ar_EG.xml
index edf1c1b..4ce4f5f 100644
--- a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ar_EG.xml
+++ b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ar_EG.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ar_EG.xml.escaped b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ar_EG.xml.escaped
index 97db591..9c8eb93 100644
--- a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ar_EG.xml.escaped
+++ b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ar_EG.xml.escaped
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_en.xml b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_en.xml
index d802a9d..28b2f12 100644
--- a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_en.xml
+++ b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_en.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_es.xml b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_es.xml
index b3ec83e..d6b309a 100644
--- a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_es.xml
+++ b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_es.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_fr.xml b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_fr.xml
index e1d314b..e77dfce 100644
--- a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_fr.xml
+++ b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_fr.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_he_IL.xml b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_he_IL.xml
index 7a87962..67ed43d 100644
--- a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_he_IL.xml
+++ b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_he_IL.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_hi.xml b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_hi.xml
index 002f71b..8de0d61 100644
--- a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_hi.xml
+++ b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_hi.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_it.xml b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_it.xml
index 0d99c71..4fa77d9 100644
--- a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_it.xml
+++ b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_it.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ja.xml b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ja.xml
index 2070f13..f3aacd9 100644
--- a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ja.xml
+++ b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ja.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ko.xml b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ko.xml
index 1323562..430ebab 100644
--- a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ko.xml
+++ b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ko.xml
@@ -2,7 +2,7 @@
 <!--
 *******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                     *
-* License & terms of use: http://www.unicode.org/copyright.html#License       *
+* License & terms of use: http://www.unicode.org/copyright.html       *
 *******************************************************************************
 *******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and     *
diff --git a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ru.xml b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ru.xml
index 7dc9d5f..8a88afe 100644
--- a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ru.xml
+++ b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_ru.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_th.xml b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_th.xml
index 86ae843..f79b272 100644
--- a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_th.xml
+++ b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_th.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_zh_Hans.xml b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_zh_Hans.xml
index adae420..58e30dd 100644
--- a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_zh_Hans.xml
+++ b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_zh_Hans.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_zh_Hans_SG.xml b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_zh_Hans_SG.xml
index 1bcc983..44d0d63 100644
--- a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_zh_Hans_SG.xml
+++ b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_zh_Hans_SG.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_zh_Hant.xml b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_zh_Hant.xml
index d1093de..cec3b85 100644
--- a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_zh_Hant.xml
+++ b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_zh_Hant.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_zh_Hant_HK.xml b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_zh_Hant_HK.xml
index 18cac3f..2c4006e 100644
--- a/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_zh_Hant_HK.xml
+++ b/android_icu4j/resources/android/icu/impl/duration/impl/data/pfd_zh_Hant_HK.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/Assert.java b/android_icu4j/src/main/java/android/icu/impl/Assert.java
index af0e672..18dfc8e 100644
--- a/android_icu4j/src/main/java/android/icu/impl/Assert.java
+++ b/android_icu4j/src/main/java/android/icu/impl/Assert.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2005-2006, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/BMPSet.java b/android_icu4j/src/main/java/android/icu/impl/BMPSet.java
index b4d025f..aceb9d5 100644
--- a/android_icu4j/src/main/java/android/icu/impl/BMPSet.java
+++ b/android_icu4j/src/main/java/android/icu/impl/BMPSet.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  *
diff --git a/android_icu4j/src/main/java/android/icu/impl/CSCharacterIterator.java b/android_icu4j/src/main/java/android/icu/impl/CSCharacterIterator.java
index 4b234db..50aea08 100644
--- a/android_icu4j/src/main/java/android/icu/impl/CSCharacterIterator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/CSCharacterIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl;
 
 import java.text.CharacterIterator;
diff --git a/android_icu4j/src/main/java/android/icu/impl/CacheBase.java b/android_icu4j/src/main/java/android/icu/impl/CacheBase.java
index 307e60b..e7c2bd0 100644
--- a/android_icu4j/src/main/java/android/icu/impl/CacheBase.java
+++ b/android_icu4j/src/main/java/android/icu/impl/CacheBase.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2010, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/CacheValue.java b/android_icu4j/src/main/java/android/icu/impl/CacheValue.java
index 88850c1..18bdea9 100644
--- a/android_icu4j/src/main/java/android/icu/impl/CacheValue.java
+++ b/android_icu4j/src/main/java/android/icu/impl/CacheValue.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/CalType.java b/android_icu4j/src/main/java/android/icu/impl/CalType.java
index 7ec64fa..52ad03e 100644
--- a/android_icu4j/src/main/java/android/icu/impl/CalType.java
+++ b/android_icu4j/src/main/java/android/icu/impl/CalType.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl;
 
 /**
diff --git a/android_icu4j/src/main/java/android/icu/impl/CalendarAstronomer.java b/android_icu4j/src/main/java/android/icu/impl/CalendarAstronomer.java
index 1e49ee5..2ea9ebd 100644
--- a/android_icu4j/src/main/java/android/icu/impl/CalendarAstronomer.java
+++ b/android_icu4j/src/main/java/android/icu/impl/CalendarAstronomer.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2011, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/CalendarCache.java b/android_icu4j/src/main/java/android/icu/impl/CalendarCache.java
index f702809..e9fb3ac 100644
--- a/android_icu4j/src/main/java/android/icu/impl/CalendarCache.java
+++ b/android_icu4j/src/main/java/android/icu/impl/CalendarCache.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2011, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/CalendarUtil.java b/android_icu4j/src/main/java/android/icu/impl/CalendarUtil.java
index 2da9cf3..7307935 100644
--- a/android_icu4j/src/main/java/android/icu/impl/CalendarUtil.java
+++ b/android_icu4j/src/main/java/android/icu/impl/CalendarUtil.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009,2016 International Business Machines Corporation and
@@ -48,7 +48,7 @@
             return calType.toLowerCase(Locale.ROOT);
         }
 
-        // Canonicalize, so grandfathered variant will be transformed to keywords
+        // Canonicalize, so that an old-style variant will be transformed to keywords.
         ULocale canonical = ULocale.createCanonical(loc.toString());
         calType = canonical.getKeywordValue(CALKEY);
         if (calType != null) {
diff --git a/android_icu4j/src/main/java/android/icu/impl/CaseMapImpl.java b/android_icu4j/src/main/java/android/icu/impl/CaseMapImpl.java
index 00c2fb0..137c4b9 100644
--- a/android_icu4j/src/main/java/android/icu/impl/CaseMapImpl.java
+++ b/android_icu4j/src/main/java/android/icu/impl/CaseMapImpl.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl;
 
 import java.io.IOException;
diff --git a/android_icu4j/src/main/java/android/icu/impl/CharTrie.java b/android_icu4j/src/main/java/android/icu/impl/CharTrie.java
index 2ca9c04..b2938e1 100644
--- a/android_icu4j/src/main/java/android/icu/impl/CharTrie.java
+++ b/android_icu4j/src/main/java/android/icu/impl/CharTrie.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/CharacterIteration.java b/android_icu4j/src/main/java/android/icu/impl/CharacterIteration.java
index d8e47d0..7a52a00 100644
--- a/android_icu4j/src/main/java/android/icu/impl/CharacterIteration.java
+++ b/android_icu4j/src/main/java/android/icu/impl/CharacterIteration.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/impl/CharacterIteratorWrapper.java b/android_icu4j/src/main/java/android/icu/impl/CharacterIteratorWrapper.java
index 58065f2..d76f4e7 100644
--- a/android_icu4j/src/main/java/android/icu/impl/CharacterIteratorWrapper.java
+++ b/android_icu4j/src/main/java/android/icu/impl/CharacterIteratorWrapper.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/CharacterPropertiesImpl.java b/android_icu4j/src/main/java/android/icu/impl/CharacterPropertiesImpl.java
index 42e9ee7..7a6bd9b 100644
--- a/android_icu4j/src/main/java/android/icu/impl/CharacterPropertiesImpl.java
+++ b/android_icu4j/src/main/java/android/icu/impl/CharacterPropertiesImpl.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl;
 
 import android.icu.lang.UCharacter;
diff --git a/android_icu4j/src/main/java/android/icu/impl/ClassLoaderUtil.java b/android_icu4j/src/main/java/android/icu/impl/ClassLoaderUtil.java
index bfff0fd..83e8fdd 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ClassLoaderUtil.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ClassLoaderUtil.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/CollectionSet.java b/android_icu4j/src/main/java/android/icu/impl/CollectionSet.java
index 3843f37..f2b089c 100644
--- a/android_icu4j/src/main/java/android/icu/impl/CollectionSet.java
+++ b/android_icu4j/src/main/java/android/icu/impl/CollectionSet.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl;
 
 import java.util.Collection;
diff --git a/android_icu4j/src/main/java/android/icu/impl/CurrencyData.java b/android_icu4j/src/main/java/android/icu/impl/CurrencyData.java
index ffb0a89..60aac64 100644
--- a/android_icu4j/src/main/java/android/icu/impl/CurrencyData.java
+++ b/android_icu4j/src/main/java/android/icu/impl/CurrencyData.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/DateNumberFormat.java b/android_icu4j/src/main/java/android/icu/impl/DateNumberFormat.java
index 5ec623e..6bf6589 100644
--- a/android_icu4j/src/main/java/android/icu/impl/DateNumberFormat.java
+++ b/android_icu4j/src/main/java/android/icu/impl/DateNumberFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2007-2016, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/DayPeriodRules.java b/android_icu4j/src/main/java/android/icu/impl/DayPeriodRules.java
index 9d67d22..56d77f4 100644
--- a/android_icu4j/src/main/java/android/icu/impl/DayPeriodRules.java
+++ b/android_icu4j/src/main/java/android/icu/impl/DayPeriodRules.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/DontCareFieldPosition.java b/android_icu4j/src/main/java/android/icu/impl/DontCareFieldPosition.java
index f71afe1..89cdb74 100644
--- a/android_icu4j/src/main/java/android/icu/impl/DontCareFieldPosition.java
+++ b/android_icu4j/src/main/java/android/icu/impl/DontCareFieldPosition.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2013-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/EraRules.java b/android_icu4j/src/main/java/android/icu/impl/EraRules.java
index 1d5370f..3bb2c54 100644
--- a/android_icu4j/src/main/java/android/icu/impl/EraRules.java
+++ b/android_icu4j/src/main/java/android/icu/impl/EraRules.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl;
 
 import java.util.Arrays;
@@ -314,4 +314,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/FormattedStringBuilder.java b/android_icu4j/src/main/java/android/icu/impl/FormattedStringBuilder.java
index 0b793f3..6c971d2 100644
--- a/android_icu4j/src/main/java/android/icu/impl/FormattedStringBuilder.java
+++ b/android_icu4j/src/main/java/android/icu/impl/FormattedStringBuilder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl;
 
 import java.util.Arrays;
diff --git a/android_icu4j/src/main/java/android/icu/impl/FormattedValueFieldPositionIteratorImpl.java b/android_icu4j/src/main/java/android/icu/impl/FormattedValueFieldPositionIteratorImpl.java
index 138012a..8f2f6e4 100644
--- a/android_icu4j/src/main/java/android/icu/impl/FormattedValueFieldPositionIteratorImpl.java
+++ b/android_icu4j/src/main/java/android/icu/impl/FormattedValueFieldPositionIteratorImpl.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl;
 
 import java.text.AttributedCharacterIterator;
diff --git a/android_icu4j/src/main/java/android/icu/impl/FormattedValueStringBuilderImpl.java b/android_icu4j/src/main/java/android/icu/impl/FormattedValueStringBuilderImpl.java
index 4cce71c..c5e8954 100644
--- a/android_icu4j/src/main/java/android/icu/impl/FormattedValueStringBuilderImpl.java
+++ b/android_icu4j/src/main/java/android/icu/impl/FormattedValueStringBuilderImpl.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl;
 
 import java.text.AttributedCharacterIterator;
@@ -230,6 +230,12 @@
         }
 
         assert currField == null;
+        // Always set the position to the end so that we don't revisit previous sections
+        cfpos.setState(
+            cfpos.getField(),
+            cfpos.getFieldValue(),
+            self.length,
+            self.length);
         return false;
     }
 
diff --git a/android_icu4j/src/main/java/android/icu/impl/Grego.java b/android_icu4j/src/main/java/android/icu/impl/Grego.java
index ead16de..0fcac6a 100644
--- a/android_icu4j/src/main/java/android/icu/impl/Grego.java
+++ b/android_icu4j/src/main/java/android/icu/impl/Grego.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2003-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUBinary.java b/android_icu4j/src/main/java/android/icu/impl/ICUBinary.java
index c315559..b1f9a72 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUBinary.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUBinary.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUCache.java b/android_icu4j/src/main/java/android/icu/impl/ICUCache.java
index 60b8bcb..b7736e9 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUCache.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUCache.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ***************************************************************************
  * Copyright (c) 2007-2009 International Business Machines Corporation and *
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUConfig.java b/android_icu4j/src/main/java/android/icu/impl/ICUConfig.java
index 03afc68..5e47011 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUConfig.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUConfig.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUCurrencyDisplayInfoProvider.java b/android_icu4j/src/main/java/android/icu/impl/ICUCurrencyDisplayInfoProvider.java
index 78fddf8..5ba1c2d 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUCurrencyDisplayInfoProvider.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUCurrencyDisplayInfoProvider.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUCurrencyMetaInfo.java b/android_icu4j/src/main/java/android/icu/impl/ICUCurrencyMetaInfo.java
index 1058bd1..8b5cb2f 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUCurrencyMetaInfo.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUCurrencyMetaInfo.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUData.java b/android_icu4j/src/main/java/android/icu/impl/ICUData.java
index fa025f4..15a1328 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUData.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUData.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUDataVersion.java b/android_icu4j/src/main/java/android/icu/impl/ICUDataVersion.java
index 0c03a18..1fea717 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUDataVersion.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUDataVersion.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2009-2016, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUDebug.java b/android_icu4j/src/main/java/android/icu/impl/ICUDebug.java
index e6a81b1..e3a7ae1 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUDebug.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUDebug.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICULangDataTables.java b/android_icu4j/src/main/java/android/icu/impl/ICULangDataTables.java
index e88d015..195ed2c 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICULangDataTables.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICULangDataTables.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICULocaleService.java b/android_icu4j/src/main/java/android/icu/impl/ICULocaleService.java
index 5fcc1a5..035225f 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICULocaleService.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICULocaleService.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUNotifier.java b/android_icu4j/src/main/java/android/icu/impl/ICUNotifier.java
index d7ed124..8fe0319 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUNotifier.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUNotifier.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2009, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICURWLock.java b/android_icu4j/src/main/java/android/icu/impl/ICURWLock.java
index 8bad67e..e719ad9 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICURWLock.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICURWLock.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2013, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICURegionDataTables.java b/android_icu4j/src/main/java/android/icu/impl/ICURegionDataTables.java
index c082e3d..224d1fd 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICURegionDataTables.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICURegionDataTables.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUResourceBundle.java b/android_icu4j/src/main/java/android/icu/impl/ICUResourceBundle.java
index 893d211..fe64de1 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUResourceBundle.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUResourceBundle.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * *****************************************************************************
  * Copyright (C) 2005-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUResourceBundleImpl.java b/android_icu4j/src/main/java/android/icu/impl/ICUResourceBundleImpl.java
index fd2c69c..c137d03 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUResourceBundleImpl.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUResourceBundleImpl.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUResourceBundleReader.java b/android_icu4j/src/main/java/android/icu/impl/ICUResourceBundleReader.java
index 8aa0999..ce7b1c7 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUResourceBundleReader.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUResourceBundleReader.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUResourceTableAccess.java b/android_icu4j/src/main/java/android/icu/impl/ICUResourceTableAccess.java
index 52e3ab0..cbdb5ff 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUResourceTableAccess.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUResourceTableAccess.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUService.java b/android_icu4j/src/main/java/android/icu/impl/ICUService.java
index 850da1a..5ee1620 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUService.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUService.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/IDNA2003.java b/android_icu4j/src/main/java/android/icu/impl/IDNA2003.java
index 25f1b19..f4ee5ae 100644
--- a/android_icu4j/src/main/java/android/icu/impl/IDNA2003.java
+++ b/android_icu4j/src/main/java/android/icu/impl/IDNA2003.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2003-2010, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/IllegalIcuArgumentException.java b/android_icu4j/src/main/java/android/icu/impl/IllegalIcuArgumentException.java
index f83ff5b..9908ca2 100644
--- a/android_icu4j/src/main/java/android/icu/impl/IllegalIcuArgumentException.java
+++ b/android_icu4j/src/main/java/android/icu/impl/IllegalIcuArgumentException.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009, Google, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/impl/IntTrie.java b/android_icu4j/src/main/java/android/icu/impl/IntTrie.java
index 6f767a5..a387b32 100644
--- a/android_icu4j/src/main/java/android/icu/impl/IntTrie.java
+++ b/android_icu4j/src/main/java/android/icu/impl/IntTrie.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/IntTrieBuilder.java b/android_icu4j/src/main/java/android/icu/impl/IntTrieBuilder.java
index b6713a9..d2ee3cc 100644
--- a/android_icu4j/src/main/java/android/icu/impl/IntTrieBuilder.java
+++ b/android_icu4j/src/main/java/android/icu/impl/IntTrieBuilder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 1996-2010, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/InvalidFormatException.java b/android_icu4j/src/main/java/android/icu/impl/InvalidFormatException.java
index 113c073..4b3445c 100644
--- a/android_icu4j/src/main/java/android/icu/impl/InvalidFormatException.java
+++ b/android_icu4j/src/main/java/android/icu/impl/InvalidFormatException.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2006-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/IterableComparator.java b/android_icu4j/src/main/java/android/icu/impl/IterableComparator.java
index 3b727fa..d7a589c 100644
--- a/android_icu4j/src/main/java/android/icu/impl/IterableComparator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/IterableComparator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ************************************************************************************
  * Copyright (C) 2007-2015, Google Inc, International Business Machines Corporation
@@ -67,4 +67,4 @@
 
     @SuppressWarnings("rawtypes")
     private static final IterableComparator NOCOMPARATOR = new IterableComparator();
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/JavaTimeZone.java b/android_icu4j/src/main/java/android/icu/impl/JavaTimeZone.java
index b7b2402..8a9c610 100644
--- a/android_icu4j/src/main/java/android/icu/impl/JavaTimeZone.java
+++ b/android_icu4j/src/main/java/android/icu/impl/JavaTimeZone.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/LocaleDisplayNamesImpl.java b/android_icu4j/src/main/java/android/icu/impl/LocaleDisplayNamesImpl.java
index 2ce944e..8ee53be 100644
--- a/android_icu4j/src/main/java/android/icu/impl/LocaleDisplayNamesImpl.java
+++ b/android_icu4j/src/main/java/android/icu/impl/LocaleDisplayNamesImpl.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/LocaleIDParser.java b/android_icu4j/src/main/java/android/icu/impl/LocaleIDParser.java
index a44b7a5..a9f3186 100644
--- a/android_icu4j/src/main/java/android/icu/impl/LocaleIDParser.java
+++ b/android_icu4j/src/main/java/android/icu/impl/LocaleIDParser.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2003-2011, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/LocaleIDs.java b/android_icu4j/src/main/java/android/icu/impl/LocaleIDs.java
index 2ebb60c..15cfe36 100644
--- a/android_icu4j/src/main/java/android/icu/impl/LocaleIDs.java
+++ b/android_icu4j/src/main/java/android/icu/impl/LocaleIDs.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2013, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/LocaleUtility.java b/android_icu4j/src/main/java/android/icu/impl/LocaleUtility.java
index a1d2c43..8982f22 100644
--- a/android_icu4j/src/main/java/android/icu/impl/LocaleUtility.java
+++ b/android_icu4j/src/main/java/android/icu/impl/LocaleUtility.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 1996-2007, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/Norm2AllModes.java b/android_icu4j/src/main/java/android/icu/impl/Norm2AllModes.java
index c5373a1..701f311 100644
--- a/android_icu4j/src/main/java/android/icu/impl/Norm2AllModes.java
+++ b/android_icu4j/src/main/java/android/icu/impl/Norm2AllModes.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  *   Copyright (C) 2009-2016, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/Normalizer2Impl.java b/android_icu4j/src/main/java/android/icu/impl/Normalizer2Impl.java
index 065e124..b2b4085 100644
--- a/android_icu4j/src/main/java/android/icu/impl/Normalizer2Impl.java
+++ b/android_icu4j/src/main/java/android/icu/impl/Normalizer2Impl.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  *   Copyright (C) 2009-2015, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/OlsonTimeZone.java b/android_icu4j/src/main/java/android/icu/impl/OlsonTimeZone.java
index 8af8656..0e8a20b 100644
--- a/android_icu4j/src/main/java/android/icu/impl/OlsonTimeZone.java
+++ b/android_icu4j/src/main/java/android/icu/impl/OlsonTimeZone.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
  /*
   *******************************************************************************
   * Copyright (C) 2005-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/PVecToTrieCompactHandler.java b/android_icu4j/src/main/java/android/icu/impl/PVecToTrieCompactHandler.java
index cf254df..affe9ec 100644
--- a/android_icu4j/src/main/java/android/icu/impl/PVecToTrieCompactHandler.java
+++ b/android_icu4j/src/main/java/android/icu/impl/PVecToTrieCompactHandler.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 1996-2009, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/Pair.java b/android_icu4j/src/main/java/android/icu/impl/Pair.java
index 6a5b5bf..64f95c9 100644
--- a/android_icu4j/src/main/java/android/icu/impl/Pair.java
+++ b/android_icu4j/src/main/java/android/icu/impl/Pair.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/PatternProps.java b/android_icu4j/src/main/java/android/icu/impl/PatternProps.java
index 014d1a4..bf3448c 100644
--- a/android_icu4j/src/main/java/android/icu/impl/PatternProps.java
+++ b/android_icu4j/src/main/java/android/icu/impl/PatternProps.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/PatternTokenizer.java b/android_icu4j/src/main/java/android/icu/impl/PatternTokenizer.java
index 440180c..810fdea 100644
--- a/android_icu4j/src/main/java/android/icu/impl/PatternTokenizer.java
+++ b/android_icu4j/src/main/java/android/icu/impl/PatternTokenizer.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2006-2009, Google, International Business Machines Corporation *
diff --git a/android_icu4j/src/main/java/android/icu/impl/PluralRulesLoader.java b/android_icu4j/src/main/java/android/icu/impl/PluralRulesLoader.java
index 41401d4..e30a857 100644
--- a/android_icu4j/src/main/java/android/icu/impl/PluralRulesLoader.java
+++ b/android_icu4j/src/main/java/android/icu/impl/PluralRulesLoader.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2016, International Business Machines Corporation and
@@ -19,7 +19,7 @@
 import java.util.Set;
 import java.util.TreeMap;
 
-import android.icu.text.PluralRanges;
+import android.icu.impl.number.range.StandardPluralRanges;
 import android.icu.text.PluralRules;
 import android.icu.text.PluralRules.PluralType;
 import android.icu.util.ULocale;
@@ -30,19 +30,19 @@
  * @hide Only a subset of ICU is exposed in Android
  */
 public class PluralRulesLoader extends PluralRules.Factory {
-    private final Map<String, PluralRules> rulesIdToRules;
+    // Key is rules set + ranges set
+    private final Map<String, PluralRules> pluralRulesCache;
     // lazy init, use getLocaleIdToRulesIdMap to access
     private Map<String, String> localeIdToCardinalRulesId;
     private Map<String, String> localeIdToOrdinalRulesId;
     private Map<String, ULocale> rulesIdToEquivalentULocale;
-    private static Map<String, PluralRanges> localeIdToPluralRanges;
 
 
     /**
      * Access through singleton.
      */
     private PluralRulesLoader() {
-        rulesIdToRules = new HashMap<String, PluralRules>();
+        pluralRulesCache = new HashMap<String, PluralRules>();
     }
 
     /**
@@ -181,14 +181,20 @@
      * Gets the rule from the rulesId. If there is no rule for this rulesId,
      * return null.
      */
-    public PluralRules getRulesForRulesId(String rulesId) {
+    public PluralRules getOrCreateRulesForLocale(ULocale locale, PluralRules.PluralType type) {
+        String rulesId = getRulesIdForLocale(locale, type);
+        if (rulesId == null || rulesId.trim().length() == 0) {
+            return null;
+        }
+        String rangesId = StandardPluralRanges.getSetForLocale(locale);
+        String cacheKey = rulesId + "/" + rangesId; // could end with "/null" (this is OK)
         // synchronize on the map.  release the lock temporarily while we build the rules.
         PluralRules rules = null;
         boolean hasRules;  // Separate boolean because stored rules can be null.
-        synchronized (rulesIdToRules) {
-            hasRules = rulesIdToRules.containsKey(rulesId);
+        synchronized (pluralRulesCache) {
+            hasRules = pluralRulesCache.containsKey(cacheKey);
             if (hasRules) {
-                rules = rulesIdToRules.get(rulesId);  // can be null
+                rules = pluralRulesCache.get(cacheKey);  // can be null
             }
         }
         if (!hasRules) {
@@ -207,15 +213,16 @@
                     sb.append(": ");
                     sb.append(b.getString());
                 }
-                rules = PluralRules.parseDescription(sb.toString());
+                StandardPluralRanges ranges = StandardPluralRanges.forSet(rangesId);
+                rules = PluralRules.newInternal(sb.toString(), ranges);
             } catch (ParseException e) {
             } catch (MissingResourceException e) {
             }
-            synchronized (rulesIdToRules) {
-                if (rulesIdToRules.containsKey(rulesId)) {
-                    rules = rulesIdToRules.get(rulesId);
+            synchronized (pluralRulesCache) {
+                if (pluralRulesCache.containsKey(cacheKey)) {
+                    rules = pluralRulesCache.get(cacheKey);
                 } else {
-                    rulesIdToRules.put(rulesId, rules);  // can be null
+                    pluralRulesCache.put(cacheKey, rules);  // can be null
                 }
             }
         }
@@ -237,11 +244,7 @@
      * android.icu.text.PluralRules.DEFAULT is returned.
      */
     public PluralRules forLocale(ULocale locale, PluralRules.PluralType type) {
-        String rulesId = getRulesIdForLocale(locale, type);
-        if (rulesId == null || rulesId.trim().length() == 0) {
-            return PluralRules.DEFAULT;
-        }
-        PluralRules rules = getRulesForRulesId(rulesId);
+        PluralRules rules = getOrCreateRulesForLocale(locale, type);
         if (rules == null) {
             rules = PluralRules.DEFAULT;
         }
@@ -260,245 +263,4 @@
     public boolean hasOverride(ULocale locale) {
         return false;
     }
-    
-    private static final PluralRanges UNKNOWN_RANGE = new PluralRanges().freeze();
-
-    public PluralRanges getPluralRanges(ULocale locale) {
-        // TODO markdavis Fix the bad fallback, here and elsewhere in this file.
-        String localeId = ULocale.canonicalize(locale.getBaseName());
-        PluralRanges result;
-        while (null == (result = localeIdToPluralRanges.get(localeId))) {
-            int ix = localeId.lastIndexOf("_");
-            if (ix == -1) {
-                result = UNKNOWN_RANGE;
-                break;
-            }
-            localeId = localeId.substring(0, ix);
-        }
-        return result;
-    }
-
-    public boolean isPluralRangesAvailable(ULocale locale) {
-        return getPluralRanges(locale) == UNKNOWN_RANGE;
-    }
-
-    // TODO markdavis FIX HARD-CODED HACK once we have data from CLDR in the bundles
-    static {
-        String[][] pluralRangeData = {
-                {"locales", "id ja km ko lo ms my th vi zh"},
-                {"other", "other", "other"},
-
-                {"locales", "am bn fr gu hi hy kn mr pa zu"},
-                {"one", "one", "one"},
-                {"one", "other", "other"},
-                {"other", "other", "other"},
-
-                {"locales", "fa"},
-                {"one", "one", "other"},
-                {"one", "other", "other"},
-                {"other", "other", "other"},
-
-                {"locales", "ka"},
-                {"one", "other", "one"},
-                {"other", "one", "other"},
-                {"other", "other", "other"},
-
-                {"locales", "az de el gl hu it kk ky ml mn ne nl pt sq sw ta te tr ug uz"},
-                {"one", "other", "other"},
-                {"other", "one", "one"},
-                {"other", "other", "other"},
-
-                {"locales", "af bg ca en es et eu fi nb sv ur"},
-                {"one", "other", "other"},
-                {"other", "one", "other"},
-                {"other", "other", "other"},
-
-                {"locales", "da fil is"},
-                {"one", "one", "one"},
-                {"one", "other", "other"},
-                {"other", "one", "one"},
-                {"other", "other", "other"},
-
-                {"locales", "si"},
-                {"one", "one", "one"},
-                {"one", "other", "other"},
-                {"other", "one", "other"},
-                {"other", "other", "other"},
-
-                {"locales", "mk"},
-                {"one", "one", "other"},
-                {"one", "other", "other"},
-                {"other", "one", "other"},
-                {"other", "other", "other"},
-
-                {"locales", "lv"},
-                {"zero", "zero", "other"},
-                {"zero", "one", "one"},
-                {"zero", "other", "other"},
-                {"one", "zero", "other"},
-                {"one", "one", "one"},
-                {"one", "other", "other"},
-                {"other", "zero", "other"},
-                {"other", "one", "one"},
-                {"other", "other", "other"},
-
-                {"locales", "ro"},
-                {"one", "few", "few"},
-                {"one", "other", "other"},
-                {"few", "one", "few"},
-                {"few", "few", "few"},
-                {"few", "other", "other"},
-                {"other", "few", "few"},
-                {"other", "other", "other"},
-
-                {"locales", "hr sr bs"},
-                {"one", "one", "one"},
-                {"one", "few", "few"},
-                {"one", "other", "other"},
-                {"few", "one", "one"},
-                {"few", "few", "few"},
-                {"few", "other", "other"},
-                {"other", "one", "one"},
-                {"other", "few", "few"},
-                {"other", "other", "other"},
-
-                {"locales", "sl"},
-                {"one", "one", "few"},
-                {"one", "two", "two"},
-                {"one", "few", "few"},
-                {"one", "other", "other"},
-                {"two", "one", "few"},
-                {"two", "two", "two"},
-                {"two", "few", "few"},
-                {"two", "other", "other"},
-                {"few", "one", "few"},
-                {"few", "two", "two"},
-                {"few", "few", "few"},
-                {"few", "other", "other"},
-                {"other", "one", "few"},
-                {"other", "two", "two"},
-                {"other", "few", "few"},
-                {"other", "other", "other"},
-
-                {"locales", "he"},
-                {"one", "two", "other"},
-                {"one", "many", "many"},
-                {"one", "other", "other"},
-                {"two", "many", "other"},
-                {"two", "other", "other"},
-                {"many", "many", "many"},
-                {"many", "other", "many"},
-                {"other", "one", "other"},
-                {"other", "two", "other"},
-                {"other", "many", "many"},
-                {"other", "other", "other"},
-
-                {"locales", "cs pl sk"},
-                {"one", "few", "few"},
-                {"one", "many", "many"},
-                {"one", "other", "other"},
-                {"few", "few", "few"},
-                {"few", "many", "many"},
-                {"few", "other", "other"},
-                {"many", "one", "one"},
-                {"many", "few", "few"},
-                {"many", "many", "many"},
-                {"many", "other", "other"},
-                {"other", "one", "one"},
-                {"other", "few", "few"},
-                {"other", "many", "many"},
-                {"other", "other", "other"},
-
-                {"locales", "lt ru uk"},
-                {"one", "one", "one"},
-                {"one", "few", "few"},
-                {"one", "many", "many"},
-                {"one", "other", "other"},
-                {"few", "one", "one"},
-                {"few", "few", "few"},
-                {"few", "many", "many"},
-                {"few", "other", "other"},
-                {"many", "one", "one"},
-                {"many", "few", "few"},
-                {"many", "many", "many"},
-                {"many", "other", "other"},
-                {"other", "one", "one"},
-                {"other", "few", "few"},
-                {"other", "many", "many"},
-                {"other", "other", "other"},
-
-                {"locales", "cy"},
-                {"zero", "one", "one"},
-                {"zero", "two", "two"},
-                {"zero", "few", "few"},
-                {"zero", "many", "many"},
-                {"zero", "other", "other"},
-                {"one", "two", "two"},
-                {"one", "few", "few"},
-                {"one", "many", "many"},
-                {"one", "other", "other"},
-                {"two", "few", "few"},
-                {"two", "many", "many"},
-                {"two", "other", "other"},
-                {"few", "many", "many"},
-                {"few", "other", "other"},
-                {"many", "other", "other"},
-                {"other", "one", "one"},
-                {"other", "two", "two"},
-                {"other", "few", "few"},
-                {"other", "many", "many"},
-                {"other", "other", "other"},
-
-                {"locales", "ar"},
-                {"zero", "one", "zero"},
-                {"zero", "two", "zero"},
-                {"zero", "few", "few"},
-                {"zero", "many", "many"},
-                {"zero", "other", "other"},
-                {"one", "two", "other"},
-                {"one", "few", "few"},
-                {"one", "many", "many"},
-                {"one", "other", "other"},
-                {"two", "few", "few"},
-                {"two", "many", "many"},
-                {"two", "other", "other"},
-                {"few", "few", "few"},
-                {"few", "many", "many"},
-                {"few", "other", "other"},
-                {"many", "few", "few"},
-                {"many", "many", "many"},
-                {"many", "other", "other"},
-                {"other", "one", "other"},
-                {"other", "two", "other"},
-                {"other", "few", "few"},
-                {"other", "many", "many"},
-                {"other", "other", "other"},     
-        };
-        PluralRanges pr = null;
-        String[] locales = null;
-        HashMap<String, PluralRanges> tempLocaleIdToPluralRanges = new HashMap<String, PluralRanges>();
-        for (String[] row : pluralRangeData) {
-            if (row[0].equals("locales")) {
-                if (pr != null) {
-                    pr.freeze();
-                    for (String locale : locales) {
-                        tempLocaleIdToPluralRanges.put(locale, pr);
-                    }
-                }
-                locales = row[1].split(" ");
-                pr = new PluralRanges();
-            } else {
-                pr.add(
-                        StandardPlural.fromString(row[0]),
-                        StandardPlural.fromString(row[1]),
-                        StandardPlural.fromString(row[2]));
-            }
-        }
-        // do last one
-        for (String locale : locales) {
-            tempLocaleIdToPluralRanges.put(locale, pr);
-        }
-        // now make whole thing immutable
-        localeIdToPluralRanges = Collections.unmodifiableMap(tempLocaleIdToPluralRanges);
-    }
 }
diff --git a/android_icu4j/src/main/java/android/icu/impl/PropsVectors.java b/android_icu4j/src/main/java/android/icu/impl/PropsVectors.java
index ca208df..99f52fd 100644
--- a/android_icu4j/src/main/java/android/icu/impl/PropsVectors.java
+++ b/android_icu4j/src/main/java/android/icu/impl/PropsVectors.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 1996-2011, International Business Machines Corporation and   *
@@ -566,4 +566,4 @@
         public void setRowIndexForErrorValue(int rowIndex);
         public void startRealValues(int rowIndex);
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/Punycode.java b/android_icu4j/src/main/java/android/icu/impl/Punycode.java
index d6325ab..296e4b0 100644
--- a/android_icu4j/src/main/java/android/icu/impl/Punycode.java
+++ b/android_icu4j/src/main/java/android/icu/impl/Punycode.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2014, International Business Machines Corporation and
@@ -12,9 +12,10 @@
 import android.icu.lang.UCharacter;
 import android.icu.text.StringPrepParseException;
 import android.icu.text.UTF16;
+import android.icu.util.ICUInputTooLongException;
 
 /**
- * Ported code from ICU punycode.c 
+ * Ported code from ICU punycode.c
  * @author ram
  * @hide Only a subset of ICU is exposed in Android
  */
@@ -28,17 +29,17 @@
     private static final int DAMP           = 700;
     private static final int INITIAL_BIAS   = 72;
     private static final int INITIAL_N      = 0x80;
-    
+
     /* "Basic" Unicode/ASCII code points */
     private static final char HYPHEN        = 0x2d;
     private static final char DELIMITER     = HYPHEN;
-    
+
     private static final int ZERO           = 0x30;
     //private static final int NINE           = 0x39;
-    
+
     private static final int SMALL_A        = 0x61;
     private static final int SMALL_Z        = 0x7a;
-    
+
     private static final int CAPITAL_A      = 0x41;
     private static final int CAPITAL_Z      = 0x5a;
 
@@ -55,39 +56,30 @@
             delta/=(BASE-TMIN);
         }
 
-        return count+(((BASE-TMIN+1)*delta)/(delta+SKEW));         
+        return count+(((BASE-TMIN+1)*delta)/(delta+SKEW));
     }
 
     /**
-     * basicToDigit[] contains the numeric value of a basic code
-     * point (for use in representing integers) in the range 0 to
-     * BASE-1, or -1 if b is does not represent a value.
+     * @return the numeric value of a basic code point (for use in representing integers)
+     *         in the range 0 to BASE-1, or a negative value if cp is invalid.
      */
-    static final int[]    basicToDigit= new int[]{
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1,
-    
-        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
-        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-    
-        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
-        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-    
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
-    };
+    private static final int decodeDigit(int cp) {
+        if(cp<='Z') {
+            if(cp<='9') {
+                if(cp<'0') {
+                    return -1;
+                } else {
+                    return cp-'0'+26;  // 0..9 -> 26..35
+                }
+            } else {
+                return cp-'A';  // A-Z -> 0..25
+            }
+        } else if(cp<='z') {
+            return cp-'a';  // a..z -> 0..25
+        } else {
+            return -1;
+        }
+    }
 
     ///CLOVER:OFF
     private static char asciiCaseMap(char b, boolean uppercase) {
@@ -101,7 +93,7 @@
             }
         }
         return b;
-    }    
+    }
     ///CLOVER:ON
     /**
      * digitToBasic() returns the basic code point whose value
@@ -122,11 +114,17 @@
             return (char)((ZERO-26)+digit);
         }
     }
+
+    // ICU-13727: Limit input length for n^2 algorithm
+    // where well-formed strings are at most 59 characters long.
+    private static final int ENCODE_MAX_CODE_UNITS = 1000;
+    private static final int DECODE_MAX_CHARS = 2000;
+
     /**
      * Converts Unicode to Punycode.
      * The input string must not contain single, unpaired surrogates.
      * The output will be represented as an array of ASCII code points.
-     * 
+     *
      * @param src The source of the String Buffer passed.
      * @param caseFlags The boolean array of case flags.
      * @return An array of ASCII code points.
@@ -135,6 +133,10 @@
         int n, delta, handledCPCount, basicLength, bias, j, m, q, k, t, srcCPCount;
         char c, c2;
         int srcLength = src.length();
+        if (srcLength > ENCODE_MAX_CODE_UNITS) {
+            throw new ICUInputTooLongException(
+                    "input too long: " + srcLength + " UTF-16 code units");
+        }
         int[] cpBuffer = new int[srcLength];
         StringBuilder dest = new StringBuilder(srcLength);
         /*
@@ -142,7 +144,7 @@
          * convert extended ones to UTF-32 in cpBuffer (caseFlag in sign bit):
          */
         srcCPCount=0;
-        
+
         for(j=0; j<srcLength; ++j) {
             c=src.charAt(j);
             if(isBasic(c)) {
@@ -154,7 +156,7 @@
                     n|=c;
                 } else if(UTF16.isLeadSurrogate(c) && (j+1)<srcLength && UTF16.isTrailSurrogate(c2=src.charAt(j+1))) {
                     ++j;
-                    
+
                     n|=UCharacter.getCodePoint(c, c2);
                 } else {
                     /* error: unmatched surrogate */
@@ -198,7 +200,7 @@
              * Increase delta enough to advance the decoder's
              * <n,i> state to <m,0>, but guard against overflow:
              */
-            if(m-n>(0x7fffffff-delta)/(handledCPCount+1)) {
+            if(m-n>(0x7fffffff-handledCPCount-delta)/(handledCPCount+1)) {
                 throw new IllegalStateException("Internal program error");
             }
             delta+=(m-n)*(handledCPCount+1);
@@ -213,7 +215,7 @@
                     /* Represent delta as a generalized variable-length integer: */
                     for(q=delta, k=BASE; /* no condition */; k+=BASE) {
 
-                        /** RAM: comment out the old code for conformance with draft-ietf-idn-punycode-03.txt   
+                        /** RAM: comment out the old code for conformance with draft-ietf-idn-punycode-03.txt
 
                         t=k-bias;
                         if(t<TMIN) {
@@ -222,7 +224,7 @@
                             t=TMAX;
                         }
                         */
-                    
+
                         t=k-bias;
                         if(t<TMIN) {
                             t=TMIN;
@@ -251,7 +253,7 @@
 
         return dest;
     }
-    
+
     private static boolean isBasic(int ch){
         return (ch < INITIAL_N);
     }
@@ -266,14 +268,17 @@
     /**
      * Converts Punycode to Unicode.
      * The Unicode string will be at most as long as the Punycode string.
-     * 
+     *
      * @param src The source of the string buffer being passed.
      * @param caseFlags The array of boolean case flags.
      * @return StringBuilder string.
      */
-    public static StringBuilder decode(CharSequence src, boolean[] caseFlags) 
+    public static StringBuilder decode(CharSequence src, boolean[] caseFlags)
                                throws StringPrepParseException{
         int srcLength = src.length();
+        if (srcLength > DECODE_MAX_CHARS) {
+            throw new ICUInputTooLongException("input too long: " + srcLength + " characters");
+        }
         StringBuilder dest = new StringBuilder(src.length());
         int n, i, bias, basicLength, j, in, oldi, w, k, digit, t,
                 destCPCount, firstSupplementaryIndex, cpLength;
@@ -332,7 +337,7 @@
                     throw new StringPrepParseException("Illegal char found", StringPrepParseException.ILLEGAL_CHAR_FOUND);
                 }
 
-                digit=basicToDigit[src.charAt(in++) & 0xFF];
+                digit=decodeDigit(src.charAt(in++));
                 if(digit<0) {
                     throw new StringPrepParseException("Invalid char found", StringPrepParseException.INVALID_CHAR_FOUND);
                 }
diff --git a/android_icu4j/src/main/java/android/icu/impl/RBBIDataWrapper.java b/android_icu4j/src/main/java/android/icu/impl/RBBIDataWrapper.java
index 191022e..010a859 100644
--- a/android_icu4j/src/main/java/android/icu/impl/RBBIDataWrapper.java
+++ b/android_icu4j/src/main/java/android/icu/impl/RBBIDataWrapper.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
@@ -13,10 +13,12 @@
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 
 import android.icu.impl.ICUBinary.Authenticate;
 import android.icu.text.RuleBasedBreakIterator;
+import android.icu.util.CodePointTrie;
 
 /**
 * <p>Internal class used for Rule Based Break Iterators.</p>
@@ -43,17 +45,28 @@
          */
         public int     fRowLen;
         /**
+         * Char category number of the first dictionary char class,
+         * or the the largest category number + 1 if there are no dictionary categories.
+         */
+        public int     fDictCategoriesStart;
+        /**
+         * Size of run-time array required for holding
+         * look-ahead results. Indexed by row.fLookAhead.
+         */
+        public int     fLookAheadResultsSize;
+        /**
          * Option Flags for this state table.
          */
         public int     fFlags;
         /**
-         * Option Flags for this state table.
+         * Length in bytes of the state table header, of all the int32 fields
+         * preceding fTable in the serialized form.
          */
-        public int     fReserved;
+        public static int fHeaderSize = 20;
         /**
          * Linear array of next state values, accessed as short[state, char_class]
          */
-        public short[] fTable;
+        public char[] fTable;
 
         public RBBIStateTable() {
         }
@@ -62,30 +75,50 @@
             if (length == 0) {
                 return null;
             }
-            if (length < 16) {
+            if (length < fHeaderSize) {
                 throw new IOException("Invalid RBBI state table length.");
             }
             RBBIStateTable This = new RBBIStateTable();
             This.fNumStates = bytes.getInt();
             This.fRowLen    = bytes.getInt();
+            This.fDictCategoriesStart = bytes.getInt();
+            This.fLookAheadResultsSize = bytes.getInt();
             This.fFlags     = bytes.getInt();
-            This.fReserved  = bytes.getInt();
-            int lengthOfShorts = length - 16;   // length in bytes.
-            This.fTable     = ICUBinary.getShorts(bytes, lengthOfShorts / 2, lengthOfShorts & 1);
+            int lengthOfTable = length - fHeaderSize;   // length in bytes.
+            boolean use8Bits = (This.fFlags & RBBIDataWrapper.RBBI_8BITS_ROWS) == RBBIDataWrapper.RBBI_8BITS_ROWS;
+            if (use8Bits) {
+                This.fTable = new char[lengthOfTable];
+                for (int i = 0; i < lengthOfTable; i++) {
+                    byte b = bytes.get();
+                    This.fTable[i] = (char)(0xff & b); // Treat b as unsigned.
+                }
+                ICUBinary.skipBytes(bytes, lengthOfTable & 1);
+            } else {
+                This.fTable    = ICUBinary.getChars(bytes, lengthOfTable / 2, lengthOfTable & 1);
+            }
             return This;
         }
 
         public int put(DataOutputStream bytes) throws IOException {
             bytes.writeInt(fNumStates);
             bytes.writeInt(fRowLen);
+            bytes.writeInt(fDictCategoriesStart);
+            bytes.writeInt(fLookAheadResultsSize);
             bytes.writeInt(fFlags);
-            bytes.writeInt(fReserved);
-            int tableLen = fRowLen * fNumStates / 2;  // fRowLen is bytes.
-            for (int i = 0; i < tableLen; i++) {
-                bytes.writeShort(fTable[i]);
+            if ((fFlags & RBBIDataWrapper.RBBI_8BITS_ROWS) == RBBIDataWrapper.RBBI_8BITS_ROWS) {
+                int tableLen = fRowLen * fNumStates;  // fRowLen is bytes.
+                for (int i = 0; i < tableLen; i++) {
+                    byte b = (byte)(fTable[i] & 0x00ff);
+                    bytes.writeByte(b);
+                }
+            } else {
+                int tableLen = fRowLen * fNumStates / 2;  // fRowLen is bytes.
+                for (int i = 0; i < tableLen; i++) {
+                    bytes.writeChar(fTable[i]);
+                }
             }
-            int bytesWritten = 16 + fRowLen * fNumStates;   // total bytes written,
-                                                            // including 16 for the header.
+            int bytesWritten = fHeaderSize + fRowLen * fNumStates;   // total bytes written,
+                                                                     // including the header.
             while (bytesWritten % 8 != 0) {
                 bytes.writeByte(0);
                 ++bytesWritten;
@@ -107,8 +140,9 @@
             RBBIStateTable otherST = (RBBIStateTable)other;
             if (fNumStates != otherST.fNumStates) return false;
             if (fRowLen    != otherST.fRowLen)    return false;
+            if (fDictCategoriesStart != otherST.fDictCategoriesStart) return false;
+            if (fLookAheadResultsSize != otherST.fLookAheadResultsSize) return false;
             if (fFlags     != otherST.fFlags)     return false;
-            if (fReserved  != otherST.fReserved)  return false;
             return Arrays.equals(fTable, otherST.fTable);
         }
     }
@@ -137,12 +171,12 @@
 
     public RBBIStateTable   fRTable;
 
-    public Trie2   fTrie;
+    public CodePointTrie    fTrie;
     public String  fRuleSource;
     public int     fStatusTable[];
 
     public static final int DATA_FORMAT = 0x42726b20;     // "Brk "
-    public static final int FORMAT_VERSION = 0x05000000;  // 4.0.0.0
+    public static final int FORMAT_VERSION = 0x06000000;  // 6.0.0.0
 
     private static final class IsAcceptable implements Authenticate {
         @Override
@@ -188,21 +222,23 @@
     /**
      * offset to the "tagIndex" field in a state table row.
      */
-    public final static int      TAGIDX     = 2;
-    /**
-     * offset to the reserved field in a state table row.
-     */
-    public final static int      RESERVED   = 3;
+    public final static int      TAGSIDX    = 2;
     /**
      * offset to the start of the next states array in a state table row.
      */
-    public final static int      NEXTSTATES = 4;
+    public final static int      NEXTSTATES = 3;
+
+    /**
+     *  value constant for the ACCEPTING field of a state table row.
+     */
+    public final static int      ACCEPTING_UNCONDITIONAL = 1;
 
     //  Bit selectors for the "FLAGS" field of the state table header
     //     enum RBBIStateTableFlags in the C version.
     //
     public final static int      RBBI_LOOKAHEAD_HARD_BREAK = 1;
     public final static int      RBBI_BOF_REQUIRED         = 2;
+    public final static int      RBBI_8BITS_ROWS           = 4;
 
     /**
      * Data Header.  A struct-like class with the fields from the RBBI data file header.
@@ -247,7 +283,7 @@
      * array index of the start of the state table row for that state.
      */
     public int getRowIndex(int state){
-        return state * (fHeader.fCatCount + 4);
+        return state * (fHeader.fCatCount + NEXTSTATES);
     }
 
     RBBIDataWrapper() {
@@ -334,7 +370,10 @@
                                                 //  as we don't go more than 100 bytes past the
                                                 //  past the end of the TRIE.
 
-        This.fTrie = Trie2.createFromSerialized(bytes);  // Deserialize the TRIE, leaving buffer
+        This.fTrie = CodePointTrie.fromBinary(
+            CodePointTrie.Type.FAST,
+            null,
+            bytes);  // Deserialize the TRIE, leaving buffer
                                                 //  at an unknown position, preceding the
                                                 //  padding between TRIE and following section.
 
@@ -363,8 +402,8 @@
         }
         ICUBinary.skipBytes(bytes, This.fHeader.fRuleSource - pos);
         pos = This.fHeader.fRuleSource;
-        This.fRuleSource = ICUBinary.getString(
-                bytes, This.fHeader.fRuleSourceLen / 2, This.fHeader.fRuleSourceLen & 1);
+        This.fRuleSource = new String(
+            ICUBinary.getBytes(bytes, This.fHeader.fRuleSourceLen, 0), StandardCharsets.UTF_8);
 
         if (RuleBasedBreakIterator.fDebugEnv!=null && RuleBasedBreakIterator.fDebugEnv.indexOf("data")>=0) {
             This.dump(System.out);
@@ -400,6 +439,15 @@
         return dest.toString();
     }
 
+    static public String charToString(char n, int width) {
+        StringBuilder  dest = new StringBuilder(width);
+        dest.append(n);
+        while (dest.length() < width) {
+           dest.insert(0, ' ');
+        }
+        return dest.toString();
+    }
+
     /** Fixed width int-to-string conversion. */
     static public String intToHexString(int n, int width) {
         StringBuilder  dest = new StringBuilder(width);
@@ -412,11 +460,11 @@
 
     /** Dump a state table.  (A full set of RBBI rules has 4 state tables.)  */
     private void dumpTable(java.io.PrintStream out, RBBIStateTable table) {
-        if (table == null || table.fTable.length == 0)   {
+        if (table == null || (table.fTable.length == 0)) {
             out.println("  -- null -- ");
         } else {
-            int n;
-            int state;
+            char n;
+            char state;
             StringBuilder header = new StringBuilder(" Row  Acc Look  Tag");
             for (n=0; n<fHeader.fCatCount; n++) {
                 header.append(intToString(n, 5));
@@ -438,21 +486,21 @@
      * @param table
      * @param state
      */
-    private void dumpRow(java.io.PrintStream out, RBBIStateTable table, int   state) {
+    private void dumpRow(java.io.PrintStream out, RBBIStateTable table, char   state) {
         StringBuilder dest = new StringBuilder(fHeader.fCatCount*5 + 20);
         dest.append(intToString(state, 4));
         int row = getRowIndex(state);
         if (table.fTable[row+ACCEPTING] != 0) {
-           dest.append(intToString(table.fTable[row+ACCEPTING], 5));
-        }else {
+            dest.append(intToString(table.fTable[row+ACCEPTING], 5));
+        } else {
             dest.append("     ");
         }
         if (table.fTable[row+LOOKAHEAD] != 0) {
             dest.append(intToString(table.fTable[row+LOOKAHEAD], 5));
-        }else {
+        } else {
             dest.append("     ");
         }
-        dest.append(intToString(table.fTable[row+TAGIDX], 5));
+        dest.append(intToString(table.fTable[row+TAGSIDX], 5));
 
         for (int col=0; col<fHeader.fCatCount; col++) {
             dest.append(intToString(table.fTable[row+NEXTSTATES+col], 5));
@@ -478,7 +526,6 @@
         out.println("--------------------");
         for (char32 = 0; char32<=0x10ffff; char32++) {
             category = fTrie.get(char32);
-            category &= ~0x4000;            // Mask off dictionary bit.
             if (category < 0 || category > fHeader.fCatCount) {
                 out.println("Error, bad category " + Integer.toHexString(category) +
                         " for char " + Integer.toHexString(char32));
diff --git a/android_icu4j/src/main/java/android/icu/impl/Relation.java b/android_icu4j/src/main/java/android/icu/impl/Relation.java
index 2d330a3..cf95903 100644
--- a/android_icu4j/src/main/java/android/icu/impl/Relation.java
+++ b/android_icu4j/src/main/java/android/icu/impl/Relation.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2002-2015, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/RelativeDateFormat.java b/android_icu4j/src/main/java/android/icu/impl/RelativeDateFormat.java
index 7f7dc8a..0c19c31 100644
--- a/android_icu4j/src/main/java/android/icu/impl/RelativeDateFormat.java
+++ b/android_icu4j/src/main/java/android/icu/impl/RelativeDateFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/ReplaceableUCharacterIterator.java b/android_icu4j/src/main/java/android/icu/impl/ReplaceableUCharacterIterator.java
index a80ffc3..2c820a9 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ReplaceableUCharacterIterator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ReplaceableUCharacterIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/ResourceBundleWrapper.java b/android_icu4j/src/main/java/android/icu/impl/ResourceBundleWrapper.java
index 0fb09c1..7bfa565 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ResourceBundleWrapper.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ResourceBundleWrapper.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2004-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/Row.java b/android_icu4j/src/main/java/android/icu/impl/Row.java
index 2de54a8..def70a9 100644
--- a/android_icu4j/src/main/java/android/icu/impl/Row.java
+++ b/android_icu4j/src/main/java/android/icu/impl/Row.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2002-2014, Google, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/RuleCharacterIterator.java b/android_icu4j/src/main/java/android/icu/impl/RuleCharacterIterator.java
index d9dc0eb..7a824a3 100644
--- a/android_icu4j/src/main/java/android/icu/impl/RuleCharacterIterator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/RuleCharacterIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2003-2011, International Business Machines
@@ -346,4 +346,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/SimpleCache.java b/android_icu4j/src/main/java/android/icu/impl/SimpleCache.java
index 7760b46..405dd72 100644
--- a/android_icu4j/src/main/java/android/icu/impl/SimpleCache.java
+++ b/android_icu4j/src/main/java/android/icu/impl/SimpleCache.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ****************************************************************************
  * Copyright (c) 2007-2015 International Business Machines Corporation and  *
diff --git a/android_icu4j/src/main/java/android/icu/impl/SimpleFilteredSentenceBreakIterator.java b/android_icu4j/src/main/java/android/icu/impl/SimpleFilteredSentenceBreakIterator.java
index 343dafe..c8bfae7 100644
--- a/android_icu4j/src/main/java/android/icu/impl/SimpleFilteredSentenceBreakIterator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/SimpleFilteredSentenceBreakIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/SimpleFormatterImpl.java b/android_icu4j/src/main/java/android/icu/impl/SimpleFormatterImpl.java
index f25a0d9..60933ad 100644
--- a/android_icu4j/src/main/java/android/icu/impl/SimpleFormatterImpl.java
+++ b/android_icu4j/src/main/java/android/icu/impl/SimpleFormatterImpl.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/SoftCache.java b/android_icu4j/src/main/java/android/icu/impl/SoftCache.java
index 69edf89..176e130 100644
--- a/android_icu4j/src/main/java/android/icu/impl/SoftCache.java
+++ b/android_icu4j/src/main/java/android/icu/impl/SoftCache.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2010-2016, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/SortedSetRelation.java b/android_icu4j/src/main/java/android/icu/impl/SortedSetRelation.java
index d7b593e..be674f5 100644
--- a/android_icu4j/src/main/java/android/icu/impl/SortedSetRelation.java
+++ b/android_icu4j/src/main/java/android/icu/impl/SortedSetRelation.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2002-2010, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/StandardPlural.java b/android_icu4j/src/main/java/android/icu/impl/StandardPlural.java
index 0ee617e..f84c24b 100644
--- a/android_icu4j/src/main/java/android/icu/impl/StandardPlural.java
+++ b/android_icu4j/src/main/java/android/icu/impl/StandardPlural.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2015, International Business Machines Corporation and
@@ -143,4 +143,4 @@
             throw new IllegalArgumentException(keyword.toString());
         }
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/StaticUnicodeSets.java b/android_icu4j/src/main/java/android/icu/impl/StaticUnicodeSets.java
index 60a6cc4..028339c 100644
--- a/android_icu4j/src/main/java/android/icu/impl/StaticUnicodeSets.java
+++ b/android_icu4j/src/main/java/android/icu/impl/StaticUnicodeSets.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl;
 
 import static android.icu.impl.number.parse.ParsingUtils.safeContains;
diff --git a/android_icu4j/src/main/java/android/icu/impl/StringPrepDataReader.java b/android_icu4j/src/main/java/android/icu/impl/StringPrepDataReader.java
index d2584d8..dd86455 100644
--- a/android_icu4j/src/main/java/android/icu/impl/StringPrepDataReader.java
+++ b/android_icu4j/src/main/java/android/icu/impl/StringPrepDataReader.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2003-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/StringRange.java b/android_icu4j/src/main/java/android/icu/impl/StringRange.java
index 36eb9d7..39674db 100644
--- a/android_icu4j/src/main/java/android/icu/impl/StringRange.java
+++ b/android_icu4j/src/main/java/android/icu/impl/StringRange.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, Google, Inc., International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/StringSegment.java b/android_icu4j/src/main/java/android/icu/impl/StringSegment.java
index 28cf055..5704c98 100644
--- a/android_icu4j/src/main/java/android/icu/impl/StringSegment.java
+++ b/android_icu4j/src/main/java/android/icu/impl/StringSegment.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl;
 
 import android.icu.lang.UCharacter;
diff --git a/android_icu4j/src/main/java/android/icu/impl/TZDBTimeZoneNames.java b/android_icu4j/src/main/java/android/icu/impl/TZDBTimeZoneNames.java
index 2ea7d3a..5cbe65f 100644
--- a/android_icu4j/src/main/java/android/icu/impl/TZDBTimeZoneNames.java
+++ b/android_icu4j/src/main/java/android/icu/impl/TZDBTimeZoneNames.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/TextTrieMap.java b/android_icu4j/src/main/java/android/icu/impl/TextTrieMap.java
index 5b0a315..0c7df93 100644
--- a/android_icu4j/src/main/java/android/icu/impl/TextTrieMap.java
+++ b/android_icu4j/src/main/java/android/icu/impl/TextTrieMap.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * ********************************************************************************
  * Copyright (C) 2007-2011, International Business Machines Corporation and others.
diff --git a/android_icu4j/src/main/java/android/icu/impl/TimeZoneAdapter.java b/android_icu4j/src/main/java/android/icu/impl/TimeZoneAdapter.java
index 0fea4ae..37ae2b5 100644
--- a/android_icu4j/src/main/java/android/icu/impl/TimeZoneAdapter.java
+++ b/android_icu4j/src/main/java/android/icu/impl/TimeZoneAdapter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2003-2010, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/TimeZoneGenericNames.java b/android_icu4j/src/main/java/android/icu/impl/TimeZoneGenericNames.java
index fe4e3a4..17db218 100644
--- a/android_icu4j/src/main/java/android/icu/impl/TimeZoneGenericNames.java
+++ b/android_icu4j/src/main/java/android/icu/impl/TimeZoneGenericNames.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/TimeZoneNamesFactoryImpl.java b/android_icu4j/src/main/java/android/icu/impl/TimeZoneNamesFactoryImpl.java
index ff97759..8712f09 100644
--- a/android_icu4j/src/main/java/android/icu/impl/TimeZoneNamesFactoryImpl.java
+++ b/android_icu4j/src/main/java/android/icu/impl/TimeZoneNamesFactoryImpl.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/impl/TimeZoneNamesImpl.java b/android_icu4j/src/main/java/android/icu/impl/TimeZoneNamesImpl.java
index 771fb23..8588435 100644
--- a/android_icu4j/src/main/java/android/icu/impl/TimeZoneNamesImpl.java
+++ b/android_icu4j/src/main/java/android/icu/impl/TimeZoneNamesImpl.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/Trie.java b/android_icu4j/src/main/java/android/icu/impl/Trie.java
index 3c974fc..610fade 100644
--- a/android_icu4j/src/main/java/android/icu/impl/Trie.java
+++ b/android_icu4j/src/main/java/android/icu/impl/Trie.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/Trie2.java b/android_icu4j/src/main/java/android/icu/impl/Trie2.java
index ba675e1..c3a07d5 100644
--- a/android_icu4j/src/main/java/android/icu/impl/Trie2.java
+++ b/android_icu4j/src/main/java/android/icu/impl/Trie2.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/Trie2Writable.java b/android_icu4j/src/main/java/android/icu/impl/Trie2Writable.java
index f7b4b8b..d7c7971 100644
--- a/android_icu4j/src/main/java/android/icu/impl/Trie2Writable.java
+++ b/android_icu4j/src/main/java/android/icu/impl/Trie2Writable.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/impl/Trie2_16.java b/android_icu4j/src/main/java/android/icu/impl/Trie2_16.java
index acdc26a..1f338ef 100644
--- a/android_icu4j/src/main/java/android/icu/impl/Trie2_16.java
+++ b/android_icu4j/src/main/java/android/icu/impl/Trie2_16.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/Trie2_32.java b/android_icu4j/src/main/java/android/icu/impl/Trie2_32.java
index 3f17db6..c9634a8 100644
--- a/android_icu4j/src/main/java/android/icu/impl/Trie2_32.java
+++ b/android_icu4j/src/main/java/android/icu/impl/Trie2_32.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/TrieBuilder.java b/android_icu4j/src/main/java/android/icu/impl/TrieBuilder.java
index f106ecb..91b69a3 100644
--- a/android_icu4j/src/main/java/android/icu/impl/TrieBuilder.java
+++ b/android_icu4j/src/main/java/android/icu/impl/TrieBuilder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 1996-2010, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/TrieIterator.java b/android_icu4j/src/main/java/android/icu/impl/TrieIterator.java
index e464bab..1bf2090 100644
--- a/android_icu4j/src/main/java/android/icu/impl/TrieIterator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/TrieIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/UBiDiProps.java b/android_icu4j/src/main/java/android/icu/impl/UBiDiProps.java
index b613a21..df2edf7 100644
--- a/android_icu4j/src/main/java/android/icu/impl/UBiDiProps.java
+++ b/android_icu4j/src/main/java/android/icu/impl/UBiDiProps.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  *
diff --git a/android_icu4j/src/main/java/android/icu/impl/UCaseProps.java b/android_icu4j/src/main/java/android/icu/impl/UCaseProps.java
index 997aabd..8301e1c 100644
--- a/android_icu4j/src/main/java/android/icu/impl/UCaseProps.java
+++ b/android_icu4j/src/main/java/android/icu/impl/UCaseProps.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  *
@@ -787,6 +787,7 @@
     static final int LOC_LITHUANIAN=3;
     static final int LOC_GREEK=4;
     public static final int LOC_DUTCH=5;
+    static final int LOC_ARMENIAN=6;
 
     public static final int getCaseLocale(Locale locale) {
         return getCaseLocale(locale.getLanguage());
@@ -811,6 +812,8 @@
                 return LOC_LITHUANIAN;
             } else if(language.equals("nl")) {
                 return LOC_DUTCH;
+            } else if(language.equals("hy")) {
+                return LOC_ARMENIAN;
             }
         } else if(language.length()==3) {
             if(language.equals("tur") || language.equals("aze")) {
@@ -821,6 +824,8 @@
                 return LOC_LITHUANIAN;
             } else if(language.equals("nld")) {
                 return LOC_DUTCH;
+            } else if(language.equals("hye")) {  // *not* hyw
+                return LOC_ARMENIAN;
             }
         }
         return LOC_ROOT;
@@ -1195,6 +1200,21 @@
                         0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE
                      */
                     return 0; /* remove the dot (continue without output) */
+                } else if(c==0x0587) {
+                    // See ICU-13416:
+                    // և ligature ech-yiwn
+                    // uppercases to ԵՒ=ech+yiwn by default and in Western Armenian,
+                    // but to ԵՎ=ech+vew in Eastern Armenian.
+                    try {
+                        if(loc==LOC_ARMENIAN) {
+                            out.append(upperNotTitle ? "ԵՎ" : "Եվ");
+                        } else {
+                            out.append(upperNotTitle ? "ԵՒ" : "Եւ");
+                        }
+                        return 2;
+                    } catch (IOException e) {
+                        throw new ICUUncheckedIOException(e);
+                    }
                 } else {
                     /* no known conditional special case mapping, use a normal mapping */
                 }
diff --git a/android_icu4j/src/main/java/android/icu/impl/UCharArrayIterator.java b/android_icu4j/src/main/java/android/icu/impl/UCharArrayIterator.java
index 7541b57..6c5c1b0 100644
--- a/android_icu4j/src/main/java/android/icu/impl/UCharArrayIterator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/UCharArrayIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2010, International Business Machines Corporation and    *
@@ -93,4 +93,4 @@
             return null; // never invoked
         }
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/UCharacterIteratorWrapper.java b/android_icu4j/src/main/java/android/icu/impl/UCharacterIteratorWrapper.java
index 7ae2cd6..96db20b 100644
--- a/android_icu4j/src/main/java/android/icu/impl/UCharacterIteratorWrapper.java
+++ b/android_icu4j/src/main/java/android/icu/impl/UCharacterIteratorWrapper.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/UCharacterName.java b/android_icu4j/src/main/java/android/icu/impl/UCharacterName.java
index 368dc2e..60aa8d1 100644
--- a/android_icu4j/src/main/java/android/icu/impl/UCharacterName.java
+++ b/android_icu4j/src/main/java/android/icu/impl/UCharacterName.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/UCharacterNameChoice.java b/android_icu4j/src/main/java/android/icu/impl/UCharacterNameChoice.java
index 487ddcc..86abe2e 100644
--- a/android_icu4j/src/main/java/android/icu/impl/UCharacterNameChoice.java
+++ b/android_icu4j/src/main/java/android/icu/impl/UCharacterNameChoice.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2011, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/UCharacterNameReader.java b/android_icu4j/src/main/java/android/icu/impl/UCharacterNameReader.java
index f0f6db0..526ea60 100644
--- a/android_icu4j/src/main/java/android/icu/impl/UCharacterNameReader.java
+++ b/android_icu4j/src/main/java/android/icu/impl/UCharacterNameReader.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/UCharacterProperty.java b/android_icu4j/src/main/java/android/icu/impl/UCharacterProperty.java
index c9c3bf8..dafeb79 100644
--- a/android_icu4j/src/main/java/android/icu/impl/UCharacterProperty.java
+++ b/android_icu4j/src/main/java/android/icu/impl/UCharacterProperty.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/UCharacterUtility.java b/android_icu4j/src/main/java/android/icu/impl/UCharacterUtility.java
index 51708dd..abf8b27 100644
--- a/android_icu4j/src/main/java/android/icu/impl/UCharacterUtility.java
+++ b/android_icu4j/src/main/java/android/icu/impl/UCharacterUtility.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2004, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/UPropertyAliases.java b/android_icu4j/src/main/java/android/icu/impl/UPropertyAliases.java
index 99bddc8..81a4a2d 100644
--- a/android_icu4j/src/main/java/android/icu/impl/UPropertyAliases.java
+++ b/android_icu4j/src/main/java/android/icu/impl/UPropertyAliases.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2002-2015, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/URLHandler.java b/android_icu4j/src/main/java/android/icu/impl/URLHandler.java
index 007e2fe..a76db28 100644
--- a/android_icu4j/src/main/java/android/icu/impl/URLHandler.java
+++ b/android_icu4j/src/main/java/android/icu/impl/URLHandler.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2005-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/UResource.java b/android_icu4j/src/main/java/android/icu/impl/UResource.java
index e6a18ce..c3342da 100644
--- a/android_icu4j/src/main/java/android/icu/impl/UResource.java
+++ b/android_icu4j/src/main/java/android/icu/impl/UResource.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2015-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/USerializedSet.java b/android_icu4j/src/main/java/android/icu/impl/USerializedSet.java
index 555014b..627b829 100644
--- a/android_icu4j/src/main/java/android/icu/impl/USerializedSet.java
+++ b/android_icu4j/src/main/java/android/icu/impl/USerializedSet.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  *   Copyright (C) 2002-2010, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/UTS46.java b/android_icu4j/src/main/java/android/icu/impl/UTS46.java
index 20b47b0..327e5ee 100644
--- a/android_icu4j/src/main/java/android/icu/impl/UTS46.java
+++ b/android_icu4j/src/main/java/android/icu/impl/UTS46.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2010-2014, International Business Machines
@@ -342,6 +342,16 @@
             dest.charAt(labelStart+2)=='-' && dest.charAt(labelStart+3)=='-'
         ) {
             // Label starts with "xn--", try to un-Punycode it.
+            // In IDNA2008, labels like "xn--" (decodes to an empty string) and
+            // "xn--ASCII-" (decodes to just "ASCII") fail the round-trip validation from
+            // comparing the ToUnicode input with the back-to-ToASCII output.
+            // They are alternate encodings of the respective ASCII labels.
+            // Ignore "xn---" here: It will fail Punycode.decode() which logically comes before
+            // the round-trip verification.
+            if(labelLength==4 || (labelLength>5 && dest.charAt(labelStart+labelLength-1)=='-')) {
+                addLabelError(info, Error.INVALID_ACE_LABEL);
+                return markBadACELabel(dest, labelStart, labelLength, toASCII, info);
+            }
             wasPunycode=true;
             try {
                 fromPunycode=Punycode.decode(dest.subSequence(labelStart+4, labelStart+labelLength), null);
@@ -497,9 +507,9 @@
         boolean disallowNonLDHDot=(options&USE_STD3_RULES)!=0;
         boolean isASCII=true;
         boolean onlyLDH=true;
-        int i=labelStart+4;  // After the initial "xn--".
         int limit=labelStart+labelLength;
-        do {
+        // Start after the initial "xn--".
+        for(int i=labelStart+4; i<limit; ++i) {
             char c=dest.charAt(i);
             if(c<=0x7f) {
                 if(c=='.') {
@@ -516,7 +526,7 @@
             } else {
                 isASCII=onlyLDH=false;
             }
-        } while(++i<limit);
+        }
         if(onlyLDH) {
             dest.insert(labelStart+labelLength, '\ufffd');
             ++labelLength;
diff --git a/android_icu4j/src/main/java/android/icu/impl/UnicodeRegex.java b/android_icu4j/src/main/java/android/icu/impl/UnicodeRegex.java
index 4f3d6e6..e0ecad7 100644
--- a/android_icu4j/src/main/java/android/icu/impl/UnicodeRegex.java
+++ b/android_icu4j/src/main/java/android/icu/impl/UnicodeRegex.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2015, Google, International Business Machines Corporation
diff --git a/android_icu4j/src/main/java/android/icu/impl/UnicodeSetStringSpan.java b/android_icu4j/src/main/java/android/icu/impl/UnicodeSetStringSpan.java
index a78b5a9..c3ed68f 100644
--- a/android_icu4j/src/main/java/android/icu/impl/UnicodeSetStringSpan.java
+++ b/android_icu4j/src/main/java/android/icu/impl/UnicodeSetStringSpan.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  *
diff --git a/android_icu4j/src/main/java/android/icu/impl/Utility.java b/android_icu4j/src/main/java/android/icu/impl/Utility.java
index d22392b..b10e705 100644
--- a/android_icu4j/src/main/java/android/icu/impl/Utility.java
+++ b/android_icu4j/src/main/java/android/icu/impl/Utility.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
@@ -11,6 +11,7 @@
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.Locale;
 import java.util.regex.Pattern;
 
@@ -1862,4 +1863,32 @@
             throw new ICUUncheckedIOException(e);
         }
     }
+
+    /**
+     * Java 8+ String#join(CharSequence, Iterable<? extends CharSequence>) compatible method for Java 7 env.
+     * @param delimiter the delimiter that separates each element
+     * @param elements the elements to join together.
+     * @return a new String that is composed of the elements separated by the delimiter
+     * @throws NullPointerException If delimiter or elements is null
+     */
+    public static String joinStrings(CharSequence delimiter, Iterable<? extends CharSequence> elements) {
+        if (delimiter == null || elements == null) {
+            throw new NullPointerException("Delimiter or elements is null");
+        }
+        StringBuilder buf = new StringBuilder();
+        Iterator<? extends CharSequence> itr = elements.iterator();
+        boolean isFirstElem = true;
+        while (itr.hasNext()) {
+            CharSequence element = itr.next();
+            if (element != null) {
+                if (!isFirstElem) {
+                    buf.append(delimiter);
+                } else {
+                    isFirstElem = false;
+                }
+                buf.append(element);
+            }
+        }
+        return buf.toString();
+    }
 }
diff --git a/android_icu4j/src/main/java/android/icu/impl/UtilityExtensions.java b/android_icu4j/src/main/java/android/icu/impl/UtilityExtensions.java
index cb965fc..e53ecb7 100644
--- a/android_icu4j/src/main/java/android/icu/impl/UtilityExtensions.java
+++ b/android_icu4j/src/main/java/android/icu/impl/UtilityExtensions.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2010, International Business Machines Corporation and    *
@@ -114,4 +114,4 @@
     }
 
 }
-//CLOVER:ON
\ No newline at end of file
+//CLOVER:ON
diff --git a/android_icu4j/src/main/java/android/icu/impl/ValidIdentifiers.java b/android_icu4j/src/main/java/android/icu/impl/ValidIdentifiers.java
index 7a8e8cc..d069a26 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ValidIdentifiers.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ValidIdentifiers.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2015-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/ZoneMeta.java b/android_icu4j/src/main/java/android/icu/impl/ZoneMeta.java
index acc18eb..ae5c271 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ZoneMeta.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ZoneMeta.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2003-2016 International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/BOCSU.java b/android_icu4j/src/main/java/android/icu/impl/coll/BOCSU.java
index 98b85b7..ba4aad4 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/BOCSU.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/BOCSU.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/Collation.java b/android_icu4j/src/main/java/android/icu/impl/coll/Collation.java
index 631047e..abb465f 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/Collation.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/Collation.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2010-2015, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/CollationBuilder.java b/android_icu4j/src/main/java/android/icu/impl/coll/CollationBuilder.java
index 57316ae..0b77abe 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/CollationBuilder.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/CollationBuilder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2015, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/CollationCompare.java b/android_icu4j/src/main/java/android/icu/impl/coll/CollationCompare.java
index cb21bd5..a7b8c33 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/CollationCompare.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/CollationCompare.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/CollationData.java b/android_icu4j/src/main/java/android/icu/impl/coll/CollationData.java
index 0fbdc1a..00f9829 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/CollationData.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/CollationData.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2010-2015, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/CollationDataBuilder.java b/android_icu4j/src/main/java/android/icu/impl/coll/CollationDataBuilder.java
index d3ac142..80a8487 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/CollationDataBuilder.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/CollationDataBuilder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2012-2015, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/CollationDataReader.java b/android_icu4j/src/main/java/android/icu/impl/coll/CollationDataReader.java
index cfa96dc..ebc8e7e 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/CollationDataReader.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/CollationDataReader.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2015, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/CollationFCD.java b/android_icu4j/src/main/java/android/icu/impl/coll/CollationFCD.java
index 38167c6..9bac086 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/CollationFCD.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/CollationFCD.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2012-2016, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/CollationFastLatin.java b/android_icu4j/src/main/java/android/icu/impl/coll/CollationFastLatin.java
index d4881c8..cfbc369 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/CollationFastLatin.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/CollationFastLatin.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2015, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/CollationFastLatinBuilder.java b/android_icu4j/src/main/java/android/icu/impl/coll/CollationFastLatinBuilder.java
index b230987..805fb02 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/CollationFastLatinBuilder.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/CollationFastLatinBuilder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2015, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/CollationIterator.java b/android_icu4j/src/main/java/android/icu/impl/coll/CollationIterator.java
index c62df96..c01064a 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/CollationIterator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/CollationIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2010-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/CollationKeys.java b/android_icu4j/src/main/java/android/icu/impl/coll/CollationKeys.java
index e18aff4..9b974ec 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/CollationKeys.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/CollationKeys.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012-2015, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/CollationLoader.java b/android_icu4j/src/main/java/android/icu/impl/coll/CollationLoader.java
index 128bb5a..d61e666 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/CollationLoader.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/CollationLoader.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/CollationRoot.java b/android_icu4j/src/main/java/android/icu/impl/coll/CollationRoot.java
index 17983fe..5bf342e 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/CollationRoot.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/CollationRoot.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2012-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/CollationRootElements.java b/android_icu4j/src/main/java/android/icu/impl/coll/CollationRootElements.java
index 35300c9..04e56e9 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/CollationRootElements.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/CollationRootElements.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/CollationRuleParser.java b/android_icu4j/src/main/java/android/icu/impl/coll/CollationRuleParser.java
index 841e17e..4f3343f 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/CollationRuleParser.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/CollationRuleParser.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2015, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/CollationSettings.java b/android_icu4j/src/main/java/android/icu/impl/coll/CollationSettings.java
index 0af8a7c..3575e60 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/CollationSettings.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/CollationSettings.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2015, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/CollationTailoring.java b/android_icu4j/src/main/java/android/icu/impl/coll/CollationTailoring.java
index deb9df9..aa1fd08 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/CollationTailoring.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/CollationTailoring.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2015, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/CollationWeights.java b/android_icu4j/src/main/java/android/icu/impl/coll/CollationWeights.java
index d65320a..42542e1 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/CollationWeights.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/CollationWeights.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/ContractionsAndExpansions.java b/android_icu4j/src/main/java/android/icu/impl/coll/ContractionsAndExpansions.java
index ccd6716..e33f78b 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/ContractionsAndExpansions.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/ContractionsAndExpansions.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2014, International Business Machines
@@ -310,4 +310,4 @@
     private void resetPrefix() {
         unreversedPrefix.setLength(0);
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/FCDIterCollationIterator.java b/android_icu4j/src/main/java/android/icu/impl/coll/FCDIterCollationIterator.java
index fbb2ee1..a5d6cbb 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/FCDIterCollationIterator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/FCDIterCollationIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2012-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/FCDUTF16CollationIterator.java b/android_icu4j/src/main/java/android/icu/impl/coll/FCDUTF16CollationIterator.java
index 7b4bf9c..ad18516 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/FCDUTF16CollationIterator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/FCDUTF16CollationIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2010-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/IterCollationIterator.java b/android_icu4j/src/main/java/android/icu/impl/coll/IterCollationIterator.java
index 7d4174e..0720f5a 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/IterCollationIterator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/IterCollationIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2012-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/SharedObject.java b/android_icu4j/src/main/java/android/icu/impl/coll/SharedObject.java
index 4cb7e1b..afe0319 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/SharedObject.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/SharedObject.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/TailoredSet.java b/android_icu4j/src/main/java/android/icu/impl/coll/TailoredSet.java
index b242323..4524799 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/TailoredSet.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/TailoredSet.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/UTF16CollationIterator.java b/android_icu4j/src/main/java/android/icu/impl/coll/UTF16CollationIterator.java
index 6e952f4..b64528d 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/UTF16CollationIterator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/UTF16CollationIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2010-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/UVector32.java b/android_icu4j/src/main/java/android/icu/impl/coll/UVector32.java
index 4d91e3a..0528116 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/UVector32.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/UVector32.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/coll/UVector64.java b/android_icu4j/src/main/java/android/icu/impl/coll/UVector64.java
index 26bcab7..96c9545 100644
--- a/android_icu4j/src/main/java/android/icu/impl/coll/UVector64.java
+++ b/android_icu4j/src/main/java/android/icu/impl/coll/UVector64.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle.java
index 64909f3..19fd3da 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_da.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_da.java
index 8ac0dc3..b959120 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_da.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_da.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_da_DK.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_da_DK.java
index f4ae62b..655b631 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_da_DK.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_da_DK.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_de.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_de.java
index a7ed2f7..9a2d44d 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_de.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_de.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_de_AT.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_de_AT.java
index 0fac491..817f360 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_de_AT.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_de_AT.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_de_DE.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_de_DE.java
index ee1b5da..491fbbf 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_de_DE.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_de_DE.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_el.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_el.java
index 22c33cb..de36d9a 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_el.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_el.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_el_GR.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_el_GR.java
index 57f11d5..0920abd 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_el_GR.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_el_GR.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_en.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_en.java
index c5fd734..cdb42d6 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_en.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_en.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_en_CA.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_en_CA.java
index 81e511d..27fd136 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_en_CA.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_en_CA.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_en_GB.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_en_GB.java
index cbbd9f3..24fb706 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_en_GB.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_en_GB.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_en_US.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_en_US.java
index a6c8e7e..e70a944 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_en_US.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_en_US.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_es.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_es.java
index e56ffd5..86a8a65 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_es.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_es.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_es_MX.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_es_MX.java
index 13d28c9..e067ea9 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_es_MX.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_es_MX.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_fr.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_fr.java
index 2defda1..12e94b2 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_fr.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_fr.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_fr_CA.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_fr_CA.java
index ebdc533..2223570 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_fr_CA.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_fr_CA.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_fr_FR.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_fr_FR.java
index 8370a3e..bad85ac 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_fr_FR.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_fr_FR.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_it.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_it.java
index 84985bf..7b02d24 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_it.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_it.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_it_IT.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_it_IT.java
index 49a10d8..5ac993b 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_it_IT.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_it_IT.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_iw.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_iw.java
index 0dc1ab6..a89337c 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_iw.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_iw.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_iw_IL.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_iw_IL.java
index 364abf8..47f5d37 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_iw_IL.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_iw_IL.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_ja_JP.java b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_ja_JP.java
index 0cad6bd..a2d6ddc 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_ja_JP.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/HolidayBundle_ja_JP.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/ResourceReader.java b/android_icu4j/src/main/java/android/icu/impl/data/ResourceReader.java
index d169410..cfcd944 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/ResourceReader.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/ResourceReader.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/data/TokenIterator.java b/android_icu4j/src/main/java/android/icu/impl/data/TokenIterator.java
index 83b466a..87a3be4 100644
--- a/android_icu4j/src/main/java/android/icu/impl/data/TokenIterator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/data/TokenIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2004-2015, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/BasicDurationFormat.java b/android_icu4j/src/main/java/android/icu/impl/duration/BasicDurationFormat.java
index 84ba446..d958901 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/BasicDurationFormat.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/BasicDurationFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2013, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/BasicDurationFormatter.java b/android_icu4j/src/main/java/android/icu/impl/duration/BasicDurationFormatter.java
index a3d321c..c634033 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/BasicDurationFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/BasicDurationFormatter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2014, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/BasicDurationFormatterFactory.java b/android_icu4j/src/main/java/android/icu/impl/duration/BasicDurationFormatterFactory.java
index 5c69398..448e027 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/BasicDurationFormatterFactory.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/BasicDurationFormatterFactory.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2009, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/BasicPeriodBuilderFactory.java b/android_icu4j/src/main/java/android/icu/impl/duration/BasicPeriodBuilderFactory.java
index 8983a8c..b2675e0 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/BasicPeriodBuilderFactory.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/BasicPeriodBuilderFactory.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2011, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/BasicPeriodFormatter.java b/android_icu4j/src/main/java/android/icu/impl/duration/BasicPeriodFormatter.java
index 5c2dd81..833fce1 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/BasicPeriodFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/BasicPeriodFormatter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/BasicPeriodFormatterFactory.java b/android_icu4j/src/main/java/android/icu/impl/duration/BasicPeriodFormatterFactory.java
index cae9df5..ab9cefa 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/BasicPeriodFormatterFactory.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/BasicPeriodFormatterFactory.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/BasicPeriodFormatterService.java b/android_icu4j/src/main/java/android/icu/impl/duration/BasicPeriodFormatterService.java
index 2b8360e..11a51f1 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/BasicPeriodFormatterService.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/BasicPeriodFormatterService.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/DateFormatter.java b/android_icu4j/src/main/java/android/icu/impl/duration/DateFormatter.java
index 65c17a1..48d6337 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/DateFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/DateFormatter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/DurationFormatter.java b/android_icu4j/src/main/java/android/icu/impl/duration/DurationFormatter.java
index cd2f0c1..e332ac2 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/DurationFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/DurationFormatter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/DurationFormatterFactory.java b/android_icu4j/src/main/java/android/icu/impl/duration/DurationFormatterFactory.java
index 74e3f76..6d6dfc0 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/DurationFormatterFactory.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/DurationFormatterFactory.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2009, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/Period.java b/android_icu4j/src/main/java/android/icu/impl/duration/Period.java
index 89c0789..d0ee846 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/Period.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/Period.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/PeriodBuilder.java b/android_icu4j/src/main/java/android/icu/impl/duration/PeriodBuilder.java
index afaad62..b809425 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/PeriodBuilder.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/PeriodBuilder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/PeriodBuilderFactory.java b/android_icu4j/src/main/java/android/icu/impl/duration/PeriodBuilderFactory.java
index fad3828..762abda 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/PeriodBuilderFactory.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/PeriodBuilderFactory.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2009, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/PeriodFormatter.java b/android_icu4j/src/main/java/android/icu/impl/duration/PeriodFormatter.java
index d545b98..93e5bba 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/PeriodFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/PeriodFormatter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/PeriodFormatterFactory.java b/android_icu4j/src/main/java/android/icu/impl/duration/PeriodFormatterFactory.java
index aa6372e..83451fa 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/PeriodFormatterFactory.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/PeriodFormatterFactory.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/PeriodFormatterService.java b/android_icu4j/src/main/java/android/icu/impl/duration/PeriodFormatterService.java
index bfbcf55..5644e88 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/PeriodFormatterService.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/PeriodFormatterService.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2007-2009, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/TimeUnit.java b/android_icu4j/src/main/java/android/icu/impl/duration/TimeUnit.java
index aa5cf97..316feb9 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/TimeUnit.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/TimeUnit.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/TimeUnitConstants.java b/android_icu4j/src/main/java/android/icu/impl/duration/TimeUnitConstants.java
index a4024ff..5a0215e 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/TimeUnitConstants.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/TimeUnitConstants.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/impl/DataRecord.java b/android_icu4j/src/main/java/android/icu/impl/duration/impl/DataRecord.java
index 4224365..bba1169 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/impl/DataRecord.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/impl/DataRecord.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2007-2009, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/impl/PeriodFormatterData.java b/android_icu4j/src/main/java/android/icu/impl/duration/impl/PeriodFormatterData.java
index 32f3fdb..75275d2 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/impl/PeriodFormatterData.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/impl/PeriodFormatterData.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2009-2011, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/impl/PeriodFormatterDataService.java b/android_icu4j/src/main/java/android/icu/impl/duration/impl/PeriodFormatterDataService.java
index f36d0da..4a83a91 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/impl/PeriodFormatterDataService.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/impl/PeriodFormatterDataService.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2007-2009, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/impl/RecordReader.java b/android_icu4j/src/main/java/android/icu/impl/duration/impl/RecordReader.java
index 0cb9c55..ae25644 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/impl/RecordReader.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/impl/RecordReader.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/impl/RecordWriter.java b/android_icu4j/src/main/java/android/icu/impl/duration/impl/RecordWriter.java
index 494fc13..983474f 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/impl/RecordWriter.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/impl/RecordWriter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/impl/ResourceBasedPeriodFormatterDataService.java b/android_icu4j/src/main/java/android/icu/impl/duration/impl/ResourceBasedPeriodFormatterDataService.java
index d11521f..632ed6f 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/impl/ResourceBasedPeriodFormatterDataService.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/impl/ResourceBasedPeriodFormatterDataService.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2007-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/impl/Utils.java b/android_icu4j/src/main/java/android/icu/impl/duration/impl/Utils.java
index 4e8216d..d3685f1 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/impl/Utils.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/impl/Utils.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2012, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/impl/XMLRecordReader.java b/android_icu4j/src/main/java/android/icu/impl/duration/impl/XMLRecordReader.java
index 68d55b6..7ed169e 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/impl/XMLRecordReader.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/impl/XMLRecordReader.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/duration/impl/XMLRecordWriter.java b/android_icu4j/src/main/java/android/icu/impl/duration/impl/XMLRecordWriter.java
index 48571cf..e8418c9 100644
--- a/android_icu4j/src/main/java/android/icu/impl/duration/impl/XMLRecordWriter.java
+++ b/android_icu4j/src/main/java/android/icu/impl/duration/impl/XMLRecordWriter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/AsciiUtil.java b/android_icu4j/src/main/java/android/icu/impl/locale/AsciiUtil.java
index d4b7fa4..f2b2731 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/AsciiUtil.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/AsciiUtil.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/BaseLocale.java b/android_icu4j/src/main/java/android/icu/impl/locale/BaseLocale.java
index 520a723..bae7333 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/BaseLocale.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/BaseLocale.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/Extension.java b/android_icu4j/src/main/java/android/icu/impl/locale/Extension.java
index 72fd3e5..50bc125 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/Extension.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/Extension.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2010, International Business Machines Corporation and    *
@@ -42,4 +42,4 @@
     public String toString() {
         return getID();
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/InternalLocaleBuilder.java b/android_icu4j/src/main/java/android/icu/impl/locale/InternalLocaleBuilder.java
index 9eb1657..66c86e3 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/InternalLocaleBuilder.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/InternalLocaleBuilder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/KeyTypeData.java b/android_icu4j/src/main/java/android/icu/impl/locale/KeyTypeData.java
index ac813e8..2833610 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/KeyTypeData.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/KeyTypeData.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2016, International Business Machines Corporation and
@@ -69,6 +69,14 @@
         }
     }
 
+    private static class ScriptCodeTypeHandler extends SpecialTypeHandler {
+        private static final Pattern pat = Pattern.compile("[a-zA-Z]{4}(-[a-zA-Z]{4})*");
+        @Override
+        boolean isWellFormed(String value) {
+            return pat.matcher(value).matches();
+        }
+    }
+
     private static class SubdivisionKeyValueTypeHandler extends SpecialTypeHandler {
         private static final Pattern pat = Pattern.compile("([a-zA-Z]{2}|[0-9]{3})");
         @Override
@@ -89,6 +97,7 @@
         CODEPOINTS(new CodepointsTypeHandler()),
         REORDER_CODE(new ReorderCodeTypeHandler()),
         RG_KEY_VALUE(new RgKeyValueTypeHandler()),
+        SCRIPT_CODE(new ScriptCodeTypeHandler()),
         SUBDIVISION_CODE(new SubdivisionKeyValueTypeHandler()),
         PRIVATE_USE(new PrivateUseKeyValueTypeHandler()),
         ;
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/LSR.java b/android_icu4j/src/main/java/android/icu/impl/locale/LSR.java
index d494409..ac47e51 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/LSR.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/LSR.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.locale;
 
 import java.util.Objects;
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/LanguageTag.java b/android_icu4j/src/main/java/android/icu/impl/locale/LanguageTag.java
index f1b1a9c..00d2ee6 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/LanguageTag.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/LanguageTag.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2010-2013, International Business Machines Corporation and    *
@@ -42,13 +42,13 @@
     private List<String> _variants = Collections.emptyList();   // variant subtags
     private List<String> _extensions = Collections.emptyList(); // extensions
 
-    // Map contains grandfathered tags and its preferred mappings from
-    // http://www.ietf.org/rfc/rfc5646.txt
-    private static final Map<AsciiUtil.CaseInsensitiveKey, String[]> GRANDFATHERED =
+    // The Map contains legacy language tags (marked as “Type: grandfathered” in BCP 47)
+    // and their preferred mappings from BCP 47.
+    private static final Map<AsciiUtil.CaseInsensitiveKey, String[]> LEGACY =
         new HashMap<AsciiUtil.CaseInsensitiveKey, String[]>();
 
     static {
-        // grandfathered = irregular           ; non-redundant tags registered
+        // legacy        = irregular           ; non-redundant tags registered
         //               / regular             ; during the RFC 3066 era
         //
         // irregular     = "en-GB-oed"         ; irregular tags do not match
@@ -82,7 +82,7 @@
         final String[][] entries = {
           //{"tag",         "preferred"},
             {"art-lojban",  "jbo"},
-            {"cel-gaulish", "xtg-x-cel-gaulish"},   // fallback
+            {"cel-gaulish", "xtg"},   // fallback
             {"en-GB-oed",   "en-GB-x-oed"},         // fallback
             {"i-ami",       "ami"},
             {"i-bnn",       "bnn"},
@@ -109,57 +109,17 @@
             {"zh-xiang",    "hsn"},
         };
         for (String[] e : entries) {
-            GRANDFATHERED.put(new AsciiUtil.CaseInsensitiveKey(e[0]), e);
+            LEGACY.put(new AsciiUtil.CaseInsensitiveKey(e[0]), e);
         }
     }
 
     private LanguageTag() {
     }
 
-    /*
-     * BNF in RFC5464
-     *
-     * Language-Tag  = langtag             ; normal language tags
-     *               / privateuse          ; private use tag
-     *               / grandfathered       ; grandfathered tags
-     *
-     *
-     * langtag       = language
-     *                 ["-" script]
-     *                 ["-" region]
-     *                 *("-" variant)
-     *                 *("-" extension)
-     *                 ["-" privateuse]
-     *
-     * language      = 2*3ALPHA            ; shortest ISO 639 code
-     *                 ["-" extlang]       ; sometimes followed by
-     *                                     ; extended language subtags
-     *               / 4ALPHA              ; or reserved for future use
-     *               / 5*8ALPHA            ; or registered language subtag
-     *
-     * extlang       = 3ALPHA              ; selected ISO 639 codes
-     *                 *2("-" 3ALPHA)      ; permanently reserved
-     *
-     * script        = 4ALPHA              ; ISO 15924 code
-     *
-     * region        = 2ALPHA              ; ISO 3166-1 code
-     *               / 3DIGIT              ; UN M.49 code
-     *
-     * variant       = 5*8alphanum         ; registered variants
-     *               / (DIGIT 3alphanum)
-     *
-     * extension     = singleton 1*("-" (2*8alphanum))
-     *
-     *                                     ; Single alphanumerics
-     *                                     ; "x" reserved for private use
-     * singleton     = DIGIT               ; 0 - 9
-     *               / %x41-57             ; A - W
-     *               / %x59-5A             ; Y - Z
-     *               / %x61-77             ; a - w
-     *               / %x79-7A             ; y - z
-     *
-     * privateuse    = "x" 1*("-" (1*8alphanum))
-     *
+    /**
+     * See BCP 47 “Tags for Identifying Languages”:
+     * https://www.rfc-editor.org/info/bcp47 -->
+     * https://www.rfc-editor.org/rfc/rfc5646.html#section-2.1
      */
     public static LanguageTag parse(String languageTag, ParseStatus sts) {
         if (sts == null) {
@@ -169,14 +129,13 @@
         }
 
         StringTokenIterator itr;
-        boolean isGrandfathered = false;
+        boolean isLegacy = false;
 
-        // Check if the tag is grandfathered
-        String[] gfmap = GRANDFATHERED.get(new AsciiUtil.CaseInsensitiveKey(languageTag));
+        String[] gfmap = LEGACY.get(new AsciiUtil.CaseInsensitiveKey(languageTag));
         // Language tag is at least 2 alpha so we can skip searching the first 2 chars.
         int dash = 2;
         while (gfmap == null && (dash = languageTag.indexOf('-', dash + 1)) != -1) {
-            gfmap = GRANDFATHERED.get(new AsciiUtil.CaseInsensitiveKey(languageTag.substring(0, dash)));
+            gfmap = LEGACY.get(new AsciiUtil.CaseInsensitiveKey(languageTag.substring(0, dash)));
         }
 
         if (gfmap != null) {
@@ -187,7 +146,7 @@
                 // append the rest of the tag.
                 itr = new StringTokenIterator(gfmap[1] + languageTag.substring(dash), SEP);
             }
-            isGrandfathered = true;
+            isLegacy = true;
         } else {
             itr = new StringTokenIterator(languageTag, SEP);
         }
@@ -206,8 +165,8 @@
         }
         tag.parsePrivateuse(itr, sts);
 
-        if (isGrandfathered) {
-            // Grandfathered tag is replaced with a well-formed tag above.
+        if (isLegacy) {
+            // A legacy tag is replaced with a well-formed tag above.
             // However, the parsed length must be the original tag length.
             assert (itr.isDone());
             assert (!sts.isError());
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/LocaleDistance.java b/android_icu4j/src/main/java/android/icu/impl/locale/LocaleDistance.java
index 25da1d8..de6fe96 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/LocaleDistance.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/LocaleDistance.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.locale;
 
 import java.nio.ByteBuffer;
@@ -94,7 +94,7 @@
         return shiftedDistance / (1 << DISTANCE_SHIFT);
     }
 
-    private static final int getDistanceFloor(int indexAndDistance) {
+    public static final int getDistanceFloor(int indexAndDistance) {
         return (indexAndDistance & DISTANCE_MASK) >> DISTANCE_SHIFT;
     }
 
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/LocaleExtensions.java b/android_icu4j/src/main/java/android/icu/impl/locale/LocaleExtensions.java
index d872b83..0e1ed89 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/LocaleExtensions.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/LocaleExtensions.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/LocaleObjectCache.java b/android_icu4j/src/main/java/android/icu/impl/locale/LocaleObjectCache.java
index 765b752..f4704b7 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/LocaleObjectCache.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/LocaleObjectCache.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/LocaleSyntaxException.java b/android_icu4j/src/main/java/android/icu/impl/locale/LocaleSyntaxException.java
index 3f20152..e61e713 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/LocaleSyntaxException.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/LocaleSyntaxException.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/LocaleValidityChecker.java b/android_icu4j/src/main/java/android/icu/impl/locale/LocaleValidityChecker.java
index e030116..b996dec 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/LocaleValidityChecker.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/LocaleValidityChecker.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2015-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/ParseStatus.java b/android_icu4j/src/main/java/android/icu/impl/locale/ParseStatus.java
index dbafef6..ad0dceb 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/ParseStatus.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/ParseStatus.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2010, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/StringTokenIterator.java b/android_icu4j/src/main/java/android/icu/impl/locale/StringTokenIterator.java
index 8098ed8..e2aa352 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/StringTokenIterator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/StringTokenIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/UnicodeLocaleExtension.java b/android_icu4j/src/main/java/android/icu/impl/locale/UnicodeLocaleExtension.java
index 3d2c126..564119e 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/UnicodeLocaleExtension.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/UnicodeLocaleExtension.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/XCldrStub.java b/android_icu4j/src/main/java/android/icu/impl/locale/XCldrStub.java
index cff072b..9f2e375 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/XCldrStub.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/XCldrStub.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.locale;
 
 import java.io.BufferedReader;
@@ -456,4 +456,4 @@
          */
         boolean test(T t);
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/locale/XLikelySubtags.java b/android_icu4j/src/main/java/android/icu/impl/locale/XLikelySubtags.java
index 0294a36..4e290e0 100644
--- a/android_icu4j/src/main/java/android/icu/impl/locale/XLikelySubtags.java
+++ b/android_icu4j/src/main/java/android/icu/impl/locale/XLikelySubtags.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.locale;
 
 import java.nio.ByteBuffer;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/AdoptingModifierStore.java b/android_icu4j/src/main/java/android/icu/impl/number/AdoptingModifierStore.java
index 76c3d64..65b7c80 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/AdoptingModifierStore.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/AdoptingModifierStore.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import android.icu.impl.StandardPlural;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/AffixPatternProvider.java b/android_icu4j/src/main/java/android/icu/impl/number/AffixPatternProvider.java
index 38dcf8a..251656a 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/AffixPatternProvider.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/AffixPatternProvider.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 /**
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/AffixUtils.java b/android_icu4j/src/main/java/android/icu/impl/number/AffixUtils.java
index 71629a1..44b847e 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/AffixUtils.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/AffixUtils.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import android.icu.impl.FormattedStringBuilder;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/CompactData.java b/android_icu4j/src/main/java/android/icu/impl/number/CompactData.java
index eaaf9f2..c65f2d0 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/CompactData.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/CompactData.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import java.util.Arrays;
@@ -103,7 +103,12 @@
                 .entrySet()) {
             byte magnitude = (byte) (magnitudeEntry.getKey().length() - 1);
             for (Map.Entry<String, String> pluralEntry : magnitudeEntry.getValue().entrySet()) {
-                StandardPlural plural = StandardPlural.fromString(pluralEntry.getKey().toString());
+                String pluralString = pluralEntry.getKey().toString();
+                if ("0".equals(pluralString) || "1".equals(pluralString)) {
+                    // TODO(ICU-21258): Handle this case. For now, skip.
+                    continue;
+                }
+                StandardPlural plural = StandardPlural.fromString(pluralString);
                 String patternString = pluralEntry.getValue().toString();
                 patterns[getIndex(magnitude, plural)] = patternString;
                 int numZeros = countZeros(patternString);
@@ -182,6 +187,11 @@
                 UResource.Table pluralVariantsTable = value.getTable();
                 for (int i4 = 0; pluralVariantsTable.getKeyAndValue(i4, key, value); ++i4) {
 
+                    if ("0".equals(key.toString()) || "1".equals(key.toString())) {
+                        // TODO(ICU-21258): Handle this case. For now, skip.
+                        continue;
+                    }
+
                     // Skip this magnitude/plural if we already have it from a child locale.
                     // Note: This also skips USE_FALLBACK entries.
                     StandardPlural plural = StandardPlural.fromString(key.toString());
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/ConstantAffixModifier.java b/android_icu4j/src/main/java/android/icu/impl/number/ConstantAffixModifier.java
index c579148..e3c970c 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/ConstantAffixModifier.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/ConstantAffixModifier.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import java.text.Format.Field;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/ConstantMultiFieldModifier.java b/android_icu4j/src/main/java/android/icu/impl/number/ConstantMultiFieldModifier.java
index e8e787e..19b21d3 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/ConstantMultiFieldModifier.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/ConstantMultiFieldModifier.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import java.text.Format.Field;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/CurrencyPluralInfoAffixProvider.java b/android_icu4j/src/main/java/android/icu/impl/number/CurrencyPluralInfoAffixProvider.java
index 2b578e2..213ffac 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/CurrencyPluralInfoAffixProvider.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/CurrencyPluralInfoAffixProvider.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import android.icu.impl.StandardPlural;
@@ -72,4 +72,4 @@
     public boolean hasBody() {
         return affixesByPlural[StandardPlural.OTHER.ordinal()].hasBody();
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/CurrencySpacingEnabledModifier.java b/android_icu4j/src/main/java/android/icu/impl/number/CurrencySpacingEnabledModifier.java
index 5c93ba9..d5ec388 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/CurrencySpacingEnabledModifier.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/CurrencySpacingEnabledModifier.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import android.icu.impl.FormattedStringBuilder;
@@ -16,7 +16,7 @@
     // Pre-compute them for performance.
     // The unit test testCurrencySpacingPatternStability() will start failing if these change in CLDR.
     private static final UnicodeSet UNISET_DIGIT = new UnicodeSet("[:digit:]").freeze();
-    private static final UnicodeSet UNISET_NOTS = new UnicodeSet("[:^S:]").freeze();
+    private static final UnicodeSet UNISET_NOTSZ = new UnicodeSet("[[:^S:]&[:^Z:]]").freeze();
 
     // Constants for better readability. Types are for compiler checking.
     static final byte PREFIX = 0;
@@ -159,8 +159,8 @@
                         affix == SUFFIX);
         if (pattern.equals("[:digit:]")) {
             return UNISET_DIGIT;
-        } else if (pattern.equals("[:^S:]")) {
-            return UNISET_NOTS;
+        } else if (pattern.equals("[[:^S:]&[:^Z:]]")) {
+            return UNISET_NOTSZ;
         } else {
             return new UnicodeSet(pattern);
         }
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/CustomSymbolCurrency.java b/android_icu4j/src/main/java/android/icu/impl/number/CustomSymbolCurrency.java
index 63fcdb3..e5030c3 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/CustomSymbolCurrency.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/CustomSymbolCurrency.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import android.icu.text.DecimalFormatSymbols;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/DecimalFormatProperties.java b/android_icu4j/src/main/java/android/icu/impl/number/DecimalFormatProperties.java
index 4a73640..d701344 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/DecimalFormatProperties.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/DecimalFormatProperties.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import java.io.IOException;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/DecimalQuantity.java b/android_icu4j/src/main/java/android/icu/impl/number/DecimalQuantity.java
index b6f548d..ddf546b 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/DecimalQuantity.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/DecimalQuantity.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import java.math.BigDecimal;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/DecimalQuantity_AbstractBCD.java b/android_icu4j/src/main/java/android/icu/impl/number/DecimalQuantity_AbstractBCD.java
index f00ae97..0bb8254 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/DecimalQuantity_AbstractBCD.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/DecimalQuantity_AbstractBCD.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import java.math.BigDecimal;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/DecimalQuantity_DualStorageBCD.java b/android_icu4j/src/main/java/android/icu/impl/number/DecimalQuantity_DualStorageBCD.java
index bfca13c..e224259 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/DecimalQuantity_DualStorageBCD.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/DecimalQuantity_DualStorageBCD.java
@@ -1,10 +1,11 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
+import java.util.Arrays;
 
 /**
  * A DecimalQuantity with internal storage as a 64-bit BCD, with fallback to a byte array for numbers
@@ -125,13 +126,8 @@
         }
         if (usingBytes) {
             ensureCapacity(precision + numDigits);
-            int i = precision + numDigits - 1;
-            for (; i >= numDigits; i--) {
-                bcdBytes[i] = bcdBytes[i - numDigits];
-            }
-            for (; i >= 0; i--) {
-                bcdBytes[i] = 0;
-            }
+            System.arraycopy(bcdBytes, 0, bcdBytes, numDigits, precision);
+            Arrays.fill(bcdBytes, 0, numDigits, (byte) 0);
         } else {
             bcdLong <<= (numDigits * 4);
         }
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/Grouper.java b/android_icu4j/src/main/java/android/icu/impl/number/Grouper.java
index 9c12037..c5db57b 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/Grouper.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/Grouper.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import android.icu.impl.ICUData;
@@ -121,8 +121,20 @@
     }
 
     public Grouper withLocaleData(ULocale locale, ParsedPatternInfo patternInfo) {
-        if (this.grouping1 != -2 && this.grouping1 != -4) {
-            return this;
+        short minGrouping;
+        if (this.minGrouping == -2) {
+            minGrouping = getMinGroupingForLocale(locale);
+        } else if (this.minGrouping == -3) {
+            minGrouping = (short) Math.max(2, getMinGroupingForLocale(locale));
+        } else {
+            minGrouping = this.minGrouping;
+        }
+
+        if (this.grouping1 != -2 && this.grouping2 != -4) {
+            if (minGrouping == this.minGrouping) {
+              return this;
+            }
+            return getInstance(this.grouping1, this.grouping2, minGrouping);
         }
 
         short grouping1 = (short) (patternInfo.positive.groupingSizes & 0xffff);
@@ -135,15 +147,6 @@
             grouping2 = grouping1;
         }
 
-        short minGrouping;
-        if (this.minGrouping == -2) {
-            minGrouping = getMinGroupingForLocale(locale);
-        } else if (this.minGrouping == -3) {
-            minGrouping = (short) Math.max(2, getMinGroupingForLocale(locale));
-        } else {
-            minGrouping = this.minGrouping;
-        }
-
         return getInstance(grouping1, grouping2, minGrouping);
     }
 
@@ -166,4 +169,4 @@
     public short getSecondary() {
         return grouping2;
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/LocalizedNumberFormatterAsFormat.java b/android_icu4j/src/main/java/android/icu/impl/number/LocalizedNumberFormatterAsFormat.java
index 79d62ed..cbbd966 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/LocalizedNumberFormatterAsFormat.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/LocalizedNumberFormatterAsFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import java.io.Externalizable;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/LongNameHandler.java b/android_icu4j/src/main/java/android/icu/impl/number/LongNameHandler.java
index d67f021..33dd783 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/LongNameHandler.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/LongNameHandler.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import java.util.EnumMap;
@@ -26,11 +26,12 @@
 /**
  * @hide Only a subset of ICU is exposed in Android
  */
-public class LongNameHandler implements MicroPropsGenerator, ModifierStore {
+public class LongNameHandler
+    implements MicroPropsGenerator, ModifierStore, LongNameMultiplexer.ParentlessMicroPropsGenerator {
 
     private static final int DNAM_INDEX = StandardPlural.COUNT;
     private static final int PER_INDEX = StandardPlural.COUNT + 1;
-    private static final int ARRAY_LENGTH = StandardPlural.COUNT + 2;
+    static final int ARRAY_LENGTH = StandardPlural.COUNT + 2;
 
     private static int getIndex(String pluralKeyword) {
         // pluralKeyword can also be "dnam" or "per"
@@ -43,7 +44,7 @@
         }
     }
 
-    private static String getWithPlural(String[] strings, StandardPlural plural) {
+    static String getWithPlural(String[] strings, StandardPlural plural) {
         String result = strings[plural.ordinal()];
         if (result == null) {
             result = strings[StandardPlural.OTHER.ordinal()];
@@ -83,7 +84,7 @@
 
     // NOTE: outArray MUST have at least ARRAY_LENGTH entries. No bounds checking is performed.
 
-    private static void getMeasureData(
+    static void getMeasureData(
             ULocale locale,
             MeasureUnit unit,
             UnitWidth width,
@@ -105,7 +106,7 @@
 
         // Map duration-year-person, duration-week-person, etc. to duration-year, duration-week, ...
         // TODO(ICU-20400): Get duration-*-person data properly with aliases.
-        if (unit.getSubtype().endsWith("-person")) {
+        if (unit.getSubtype() != null && unit.getSubtype().endsWith("-person")) {
             key.append(unit.getSubtype(), 0, unit.getSubtype().length() - 7);
         } else {
             key.append(unit.getSubtype());
@@ -195,6 +196,22 @@
         return result;
     }
 
+    /**
+     * Construct a localized LongNameHandler for the specified MeasureUnit.
+     * <p>
+     * Compound units can be constructed via `unit` and `perUnit`. Both of these
+     * must then be built-in units.
+     * <p>
+     * Mixed units are not supported, use MixedUnitLongNameHandler.forMeasureUnit.
+     *
+     * @param locale The desired locale.
+     * @param unit The measure unit to construct a LongNameHandler for. If
+     *     `perUnit` is also defined, `unit` must not be a mixed unit.
+     * @param perUnit If `unit` is a mixed unit, `perUnit` must be null.
+     * @param width Specifies the desired unit rendering.
+     * @param rules Plural rules.
+     * @param parent Plural rules.
+     */
     public static LongNameHandler forMeasureUnit(
             ULocale locale,
             MeasureUnit unit,
@@ -204,8 +221,8 @@
             MicroPropsGenerator parent) {
         if (perUnit != null) {
             // Compound unit: first try to simplify (e.g., meters per second is its own unit).
-            MeasureUnit simplified = MeasureUnit.resolveUnitPerUnit(unit, perUnit);
-            if (simplified != null) {
+            MeasureUnit simplified = unit.product(perUnit.reciprocal());
+            if (simplified.getType() != null) {
                 unit = simplified;
             } else {
                 // No simplified form is available.
@@ -213,6 +230,12 @@
             }
         }
 
+        if (unit.getType() == null) {
+            // TODO(ICU-20941): Unsanctioned unit. Not yet fully supported.
+            throw new UnsupportedOperationException("Unsanctioned unit, not yet supported: " +
+                                                    unit.getIdentifier());
+        }
+
         String[] simpleFormats = new String[ARRAY_LENGTH];
         getMeasureData(locale, unit, width, simpleFormats);
         // TODO(ICU4J): Reduce the number of object creations here?
@@ -230,6 +253,13 @@
             UnitWidth width,
             PluralRules rules,
             MicroPropsGenerator parent) {
+        if (unit.getType() == null || perUnit.getType() == null) {
+            // TODO(ICU-20941): Unsanctioned unit. Not yet fully supported. Set an
+            // error code.
+            throw new UnsupportedOperationException(
+                "Unsanctioned units, not yet supported: " + unit.getIdentifier() + "/" +
+                perUnit.getIdentifier());
+        }
         String[] primaryData = new String[ARRAY_LENGTH];
         getMeasureData(locale, unit, width, primaryData);
         String[] secondaryData = new String[ARRAY_LENGTH];
@@ -302,6 +332,20 @@
         return micros;
     }
 
+    /**
+     * Produces a plural-appropriate Modifier for a unit: `quantity` is taken as
+     * the final smallest unit, while the larger unit values must be provided
+     * via `micros.mixedMeasures`.
+     *
+     * Does not call parent.processQuantity, so cannot get a MicroProps instance
+     * that way. Instead, the instance is passed in as a parameter.
+     */
+    public MicroProps processQuantityWithMicros(DecimalQuantity quantity, MicroProps micros) {
+        StandardPlural pluralForm = RoundingUtils.getPluralSafe(micros.rounder, rules, quantity);
+        micros.modOuter = modifiers.get(pluralForm);
+        return micros;
+    }
+
     @Override
     public Modifier getModifier(Signum signum, StandardPlural plural) {
         // Signum ignored
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/LongNameMultiplexer.java b/android_icu4j/src/main/java/android/icu/impl/number/LongNameMultiplexer.java
new file mode 100644
index 0000000..024cc12
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/impl/number/LongNameMultiplexer.java
@@ -0,0 +1,98 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package android.icu.impl.number;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import android.icu.number.NumberFormatter;
+import android.icu.text.PluralRules;
+import android.icu.util.MeasureUnit;
+import android.icu.util.NoUnit;
+import android.icu.util.ULocale;
+
+/**
+ * A MicroPropsGenerator that multiplexes between different LongNameHandlers,
+ * depending on the outputUnit.
+ *
+ * See processQuantity() for the input requirements.
+ * @hide Only a subset of ICU is exposed in Android
+ */
+public class LongNameMultiplexer implements MicroPropsGenerator {
+    /**
+     * LongNameMultiplexer calls the parent MicroPropsGenerator itself,
+     * receiving the MicroProps instance in use for this formatting pipeline.
+     * Next it multiplexes between name handlers (fHandlers) which are not given
+     * access to a parent. Consequently LongNameMultiplexer must give these
+     * handlers the MicroProps instance.
+     * @hide Only a subset of ICU is exposed in Android
+     */
+    public static interface ParentlessMicroPropsGenerator {
+        public MicroProps processQuantityWithMicros(DecimalQuantity quantity, MicroProps micros);
+    }
+
+    private final MicroPropsGenerator fParent;
+
+    private List<ParentlessMicroPropsGenerator> fHandlers;
+
+    // Each MeasureUnit corresponds to the same-index MicroPropsGenerator
+    // pointed to in fHandlers.
+    private List<MeasureUnit> fMeasureUnits;
+
+    public LongNameMultiplexer(MicroPropsGenerator fParent) {
+        this.fParent = fParent;
+    }
+
+    // Produces a multiplexer for LongNameHandlers, one for each unit in
+    // `units`. An individual unit might be a mixed unit.
+    public static LongNameMultiplexer forMeasureUnits(ULocale locale,
+                                                      List<MeasureUnit> units,
+                                                      NumberFormatter.UnitWidth width,
+                                                      PluralRules rules,
+                                                      MicroPropsGenerator parent) {
+        LongNameMultiplexer result = new LongNameMultiplexer(parent);
+
+        assert (units.size() > 0);
+
+        result.fMeasureUnits = new ArrayList<>();
+        result.fHandlers = new ArrayList<>();
+
+
+        for (int i = 0; i < units.size(); i++) {
+            MeasureUnit unit = units.get(i);
+            result.fMeasureUnits.add(unit);
+            if (unit.getComplexity() == MeasureUnit.Complexity.MIXED) {
+                MixedUnitLongNameHandler mlnh = MixedUnitLongNameHandler
+                        .forMeasureUnit(locale, unit, width, rules, null);
+                result.fHandlers.add(mlnh);
+            } else {
+                LongNameHandler lnh = LongNameHandler
+                        .forMeasureUnit(locale, unit, NoUnit.BASE, width, rules, null);
+                result.fHandlers.add(lnh);
+            }
+        }
+
+        return result;
+    }
+
+    // The output unit must be provided via `micros.outputUnit`, it must match
+    // one of the units provided to the factory function.
+    @Override
+    public MicroProps processQuantity(DecimalQuantity quantity) {
+        // We call parent->processQuantity() from the Multiplexer, instead of
+        // letting LongNameHandler handle it: we don't know which LongNameHandler to
+        // call until we've called the parent!
+        MicroProps micros = this.fParent.processQuantity(quantity);
+
+        // Call the correct LongNameHandler based on outputUnit
+        for (int i = 0; i < this.fHandlers.size(); i++) {
+            if (fMeasureUnits.get(i).equals(micros.outputUnit)) {
+                ParentlessMicroPropsGenerator handler = fHandlers.get(i);
+                return handler.processQuantityWithMicros(quantity, micros);
+            }
+        }
+        throw new AssertionError
+                (" We shouldn't receive any outputUnit for which we haven't already got a LongNameHandler");
+    }
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/MacroProps.java b/android_icu4j/src/main/java/android/icu/impl/number/MacroProps.java
index bb5a6a9..1a97450 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/MacroProps.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/MacroProps.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import java.math.RoundingMode;
@@ -34,6 +34,7 @@
     public SignDisplay sign;
     public DecimalSeparatorDisplay decimal;
     public Scale scale;
+    public String usage;
     public AffixPatternProvider affixProvider; // not in API; for JDK compatibility mode only
     public PluralRules rules; // not in API; could be made public in the future
     public Long threshold; // not in API; controls internal self-regulation threshold
@@ -74,6 +75,8 @@
             affixProvider = fallback.affixProvider;
         if (scale == null)
             scale = fallback.scale;
+        if (usage == null)
+            usage = fallback.usage;
         if (rules == null)
             rules = fallback.rules;
         if (loc == null)
@@ -96,6 +99,7 @@
                 decimal,
                 affixProvider,
                 scale,
+                usage,
                 rules,
                 loc);
     }
@@ -123,6 +127,7 @@
                 && Objects.equals(decimal, other.decimal)
                 && Objects.equals(affixProvider, other.affixProvider)
                 && Objects.equals(scale, other.scale)
+                && Objects.equals(usage, other.usage)
                 && Objects.equals(rules, other.rules)
                 && Objects.equals(loc, other.loc);
     }
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/MicroProps.java b/android_icu4j/src/main/java/android/icu/impl/number/MicroProps.java
index d87396c..606b0af 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/MicroProps.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/MicroProps.java
@@ -1,15 +1,22 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
+import java.util.List;
+
 import android.icu.number.IntegerWidth;
 import android.icu.number.NumberFormatter.DecimalSeparatorDisplay;
 import android.icu.number.NumberFormatter.SignDisplay;
 import android.icu.number.Precision;
 import android.icu.text.DecimalFormatSymbols;
+import android.icu.util.Measure;
+import android.icu.util.MeasureUnit;
 
 /**
+ * MicroProps is the first MicroPropsGenerator that should be should be called,
+ * producing an initialized MicroProps instance that will be passed on and
+ * modified throughout the rest of the chain of MicroPropsGenerator instances.
  * @hide Only a subset of ICU is exposed in Android
  */
 public class MicroProps implements Cloneable, MicroPropsGenerator {
@@ -21,16 +28,37 @@
     public DecimalSeparatorDisplay decimal;
     public IntegerWidth integerWidth;
 
-    // Populated by notation/unit:
+    // Modifiers provided by the number formatting pipeline (when the value is known):
+
+    // A Modifier provided by LongNameHandler, used for currency long names and
+    // units. If there is no LongNameHandler needed, this should be an
+    // null. (This is typically the third modifier applied.)
     public Modifier modOuter;
+
+    // A Modifier for short currencies and compact notation. (This is typically
+    // the second modifier applied.)
     public Modifier modMiddle;
+
+    // A Modifier provided by ScientificHandler, used for scientific notation.
+    // This is typically the first modifier applied.
     public Modifier modInner;
+
     public Precision rounder;
     public Grouper grouping;
     public boolean useCurrency;
 
     // Internal fields:
     private final boolean immutable;
+
+    // The MeasureUnit with which the output is represented. May also have
+    // MeasureUnit.Complexity.MIXED complexity, in which case mixedMeasures comes into
+    // play.
+    public MeasureUnit outputUnit;
+
+    // In the case of mixed units, this is the set of integer-only units
+    // *preceding* the final unit.
+    public List<Measure> mixedMeasures;
+
     private volatile boolean exhausted;
 
     /**
@@ -42,6 +70,19 @@
         this.immutable = immutable;
     }
 
+    /**
+     * As MicroProps is the "base instance", this implementation of
+     * MircoPropsGenerator.processQuantity() just ensures that the output
+     * `micros` is correctly initialized.
+     * <p>
+     * For the "safe" invocation of this function, micros must not be *this,
+     * such that a copy of the base instance is made. For the "unsafe" path,
+     * this function can be used only once, because the base MicroProps instance
+     * will be modified and thus not be available for re-use.
+     *
+     * @param quantity The quantity for consideration and optional mutation.
+     * @return an initialized MicroProps instance.
+     */
     @Override
     public MicroProps processQuantity(DecimalQuantity quantity) {
         if (immutable) {
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/MicroPropsGenerator.java b/android_icu4j/src/main/java/android/icu/impl/number/MicroPropsGenerator.java
index c186ac0..5e58bb9 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/MicroPropsGenerator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/MicroPropsGenerator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 /**
@@ -21,6 +21,10 @@
  * calls {@link #processQuantity} on its "parent", then does its work, and then returns the result.
  *
  * <p>
+ * This chain of MicroPropsGenerators is typically constructed by NumberFormatterImpl::macrosToMicroGenerator() when
+ * constructing a NumberFormatter.
+ *
+ * <p>
  * A class implementing MicroPropsGenerator looks something like this:
  *
  * <pre>
@@ -54,4 +58,4 @@
      * @return A MicroProps instance resolved for the quantity.
      */
     public MicroProps processQuantity(DecimalQuantity quantity);
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/MicroPropsMutator.java b/android_icu4j/src/main/java/android/icu/impl/number/MicroPropsMutator.java
index a71206a..247a41f 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/MicroPropsMutator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/MicroPropsMutator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 /**
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/MixedUnitLongNameHandler.java b/android_icu4j/src/main/java/android/icu/impl/number/MixedUnitLongNameHandler.java
new file mode 100644
index 0000000..9d1e0e5
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/impl/number/MixedUnitLongNameHandler.java
@@ -0,0 +1,218 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package android.icu.impl.number;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import android.icu.impl.FormattedStringBuilder;
+import android.icu.impl.SimpleFormatterImpl;
+import android.icu.impl.StandardPlural;
+import android.icu.number.LocalizedNumberFormatter;
+import android.icu.number.NumberFormatter;
+import android.icu.text.ListFormatter;
+import android.icu.text.PluralRules;
+import android.icu.text.SimpleFormatter;
+import android.icu.util.MeasureUnit;
+import android.icu.util.ULocale;
+
+/** Similar to LongNameHandler, but only for MIXED units. 
+ * @hide Only a subset of ICU is exposed in Android*/
+public class MixedUnitLongNameHandler
+    implements MicroPropsGenerator, ModifierStore, LongNameMultiplexer.ParentlessMicroPropsGenerator {
+    private final PluralRules rules;
+    private final MicroPropsGenerator parent;
+
+    /**
+     * Stores unit data for each of the individual units. For each unit, it
+     * stores ARRAY_LENGTH strings, as returned by getMeasureData.
+     */
+    private List<String[]> fMixedUnitData;
+
+    /**
+     * A localized NumberFormatter used to format the integer-valued bigger
+     * units of Mixed Unit measurements.
+     */
+    private LocalizedNumberFormatter fIntegerFormatter;
+
+    /** A localised list formatter for joining mixed units together. */
+    private ListFormatter fListFormatter;
+
+    private MixedUnitLongNameHandler(PluralRules rules, MicroPropsGenerator parent) {
+        this.rules = rules;
+        this.parent = parent;
+    }
+
+    /**
+     * Construct a localized MixedUnitLongNameHandler for the specified
+     * MeasureUnit. It must be a MIXED unit.
+     * <p>
+     *
+     * @param locale    The desired locale.
+     * @param mixedUnit The mixed measure unit to construct a
+     *                  MixedUnitLongNameHandler for.
+     * @param width     Specifies the desired unit rendering.
+     * @param rules     PluralRules instance.
+     * @param parent    MicroPropsGenerator instance.
+     */
+    public static MixedUnitLongNameHandler forMeasureUnit(ULocale locale, MeasureUnit mixedUnit,
+                                                          NumberFormatter.UnitWidth width, PluralRules rules,
+                                                          MicroPropsGenerator parent) {
+        assert (mixedUnit.getComplexity() == MeasureUnit.Complexity.MIXED);
+
+        MixedUnitLongNameHandler result = new MixedUnitLongNameHandler(rules, parent);
+        List<MeasureUnit> individualUnits = mixedUnit.splitToSingleUnits();
+
+        result.fMixedUnitData = new ArrayList<>();
+        for (int i = 0; i < individualUnits.size(); i++) {
+            // Grab data for each of the components.
+            String[] unitData = new String[LongNameHandler.ARRAY_LENGTH];
+            LongNameHandler.getMeasureData(locale, individualUnits.get(i), width, unitData);
+            result.fMixedUnitData.add(unitData);
+        }
+
+        ListFormatter.Width listWidth = ListFormatter.Width.SHORT;
+        if (width == NumberFormatter.UnitWidth.NARROW) {
+            listWidth = ListFormatter.Width.NARROW;
+        } else if (width == NumberFormatter.UnitWidth.FULL_NAME) {
+            // This might be the same as SHORT in most languages:
+            listWidth = ListFormatter.Width.WIDE;
+        }
+
+        result.fListFormatter = ListFormatter.getInstance(locale, ListFormatter.Type.UNITS, listWidth);
+
+
+        // We need a localised NumberFormatter for the integers of the bigger units
+        // (providing Arabic numerals, for example).
+        result.fIntegerFormatter = NumberFormatter.withLocale(locale);
+
+        return result;
+    }
+
+    /**
+     * Produces a plural-appropriate Modifier for a mixed unit: `quantity` is
+     * taken as the final smallest unit, while the larger unit values must be
+     * provided by `micros.mixedMeasures`, micros being the MicroProps instance
+     * returned by the parent.
+     *
+     * This function must not be called if this instance has no parent: call
+     * processQuantityWithMicros() instead.
+     */
+    @Override
+    public MicroProps processQuantity(DecimalQuantity quantity) {
+        assert (fMixedUnitData.size() > 1);
+        MicroProps micros;
+        micros = parent.processQuantity(quantity);
+        micros.modOuter = getMixedUnitModifier(quantity, micros);
+        return micros;
+    }
+
+    /**
+     * Produces a plural-appropriate Modifier for a mixed unit: `quantity` is
+     * taken as the final smallest unit, while the larger unit values must be
+     * provided via `micros.mixedMeasures`.
+     *
+     * Does not call parent.processQuantity, so cannot get a MicroProps instance
+     * that way. Instead, the instance is passed in as a parameter.
+     */
+    public MicroProps processQuantityWithMicros(DecimalQuantity quantity, MicroProps micros) {
+        assert (fMixedUnitData.size() > 1);
+        micros.modOuter = getMixedUnitModifier(quantity, micros);
+        return micros;
+    }
+
+    /**
+     * Required for ModifierStore. And ModifierStore is required by
+     * SimpleModifier constructor's last parameter. We assert his will never get
+     * called though.
+     */
+    @Override
+    public Modifier getModifier(Modifier.Signum signum, StandardPlural plural) {
+        // TODO(units): investigate this method while investigating where
+        // LongNameHandler.getModifier() gets used. To be sure it remains
+        // unreachable:
+        assert false : "should be unreachable";
+        return null;
+    }
+
+    /**
+     * For a mixed unit, returns a Modifier that takes only one parameter: the
+     * smallest and final unit of the set. The bigger units' values and labels
+     * get baked into this Modifier, together with the unit label of the final
+     * unit.
+     */
+    private Modifier getMixedUnitModifier(DecimalQuantity quantity, MicroProps micros) {
+        // If we don't have at least one mixedMeasure, the LongNameHandler would be
+        // sufficient and we shouldn't be running MixedUnitLongNameHandler code:
+        if (micros.mixedMeasures.size() == 0) {
+            assert false : "Mixed unit: we must have more than one unit value";
+            throw new UnsupportedOperationException();
+        }
+
+        // Algorithm:
+        //
+        // For the mixed-units measurement of: "3 yard, 1 foot, 2.6 inch", we should
+        // find "3 yard" and "1 foot" in micros.mixedMeasures.
+        //
+        // Obtain long-names with plural forms corresponding to measure values:
+        //   * {0} yards, {0} foot, {0} inches
+        //
+        // Format the integer values appropriately and modify with the format
+        // strings:
+        //   - 3 yards, 1 foot
+        //
+        // Use ListFormatter to combine, with one placeholder:
+        //   - 3 yards, 1 foot and {0} inches /* TODO: how about the case of `1 inch` */
+        //
+        // Return a SimpleModifier for this pattern, letting the rest of the
+        // pipeline take care of the remaining inches.
+
+        List<String> outputMeasuresList = new ArrayList<>();
+
+        for (int i = 0; i < micros.mixedMeasures.size(); i++) {
+            DecimalQuantity fdec = new DecimalQuantity_DualStorageBCD(micros.mixedMeasures.get(i).getNumber());
+            if (i > 0 && fdec.isNegative()) {
+                // If numbers are negative, only the first number needs to have its
+                // negative sign formatted.
+                fdec.negate();
+            }
+            StandardPlural pluralForm = fdec.getStandardPlural(rules);
+
+            String simpleFormat = LongNameHandler.getWithPlural(this.fMixedUnitData.get(i), pluralForm);
+            SimpleFormatter compiledFormatter = SimpleFormatter.compileMinMaxArguments(simpleFormat, 0, 1);
+
+            FormattedStringBuilder appendable = new FormattedStringBuilder();
+            this.fIntegerFormatter.formatImpl(fdec, appendable);
+            outputMeasuresList.add(compiledFormatter.format(appendable.toString()));
+            // TODO(icu-units#67): fix field positions
+        }
+
+        // Reiterated: we have at least one mixedMeasure:
+        assert micros.mixedMeasures.size() > 0;
+        // Thus if negative, a negative has already been formatted:
+        if (quantity.isNegative()) {
+            quantity.negate();
+        }
+
+        String[] finalSimpleFormats = this.fMixedUnitData.get(this.fMixedUnitData.size() - 1);
+        StandardPlural finalPlural = RoundingUtils.getPluralSafe(micros.rounder, rules, quantity);
+        String finalSimpleFormat = LongNameHandler.getWithPlural(finalSimpleFormats, finalPlural);
+        SimpleFormatter finalFormatter = SimpleFormatter.compileMinMaxArguments(finalSimpleFormat, 0, 1);
+        outputMeasuresList.add(finalFormatter.format("{0}"));
+
+        // Combine list into a "premixed" pattern
+        String premixedFormatPattern = this.fListFormatter.format(outputMeasuresList);
+        StringBuilder sb = new StringBuilder();
+        String premixedCompiled =
+            SimpleFormatterImpl.compileToStringMinMaxArguments(premixedFormatPattern, sb, 0, 1);
+
+        // TODO(icu-units#67): fix field positions
+        Modifier.Parameters params = new Modifier.Parameters();
+        params.obj = this;
+        params.signum = Modifier.Signum.POS_ZERO;
+        params.plural = finalPlural;
+        // Return a SimpleModifier for the "premixed" pattern
+        return new SimpleModifier(premixedCompiled, null, false, params);
+    }
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/Modifier.java b/android_icu4j/src/main/java/android/icu/impl/number/Modifier.java
index 5fa5fd1..db6c27d 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/Modifier.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/Modifier.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import java.text.Format.Field;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/ModifierStore.java b/android_icu4j/src/main/java/android/icu/impl/number/ModifierStore.java
index 134d94d..d5dc2f3 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/ModifierStore.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/ModifierStore.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import android.icu.impl.StandardPlural;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/MultiplierFormatHandler.java b/android_icu4j/src/main/java/android/icu/impl/number/MultiplierFormatHandler.java
index 8c73e65..3b4c2e6 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/MultiplierFormatHandler.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/MultiplierFormatHandler.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import android.icu.number.Scale;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/MultiplierProducer.java b/android_icu4j/src/main/java/android/icu/impl/number/MultiplierProducer.java
index 601ebb8..7e758b0 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/MultiplierProducer.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/MultiplierProducer.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 /**
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/MutablePatternModifier.java b/android_icu4j/src/main/java/android/icu/impl/number/MutablePatternModifier.java
index 89f9274..3d7baa5 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/MutablePatternModifier.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/MutablePatternModifier.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import android.icu.impl.FormattedStringBuilder;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/Padder.java b/android_icu4j/src/main/java/android/icu/impl/number/Padder.java
index a428802..4c12bd2 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/Padder.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/Padder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import android.icu.impl.FormattedStringBuilder;
@@ -131,4 +131,4 @@
         }
         return paddingString.length() * requiredPadding;
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/PatternStringParser.java b/android_icu4j/src/main/java/android/icu/impl/number/PatternStringParser.java
index 04f4189..1c83604 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/PatternStringParser.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/PatternStringParser.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import android.icu.impl.number.Padder.PadPosition;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/PatternStringUtils.java b/android_icu4j/src/main/java/android/icu/impl/number/PatternStringUtils.java
index 2aeb45a..b36bc13 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/PatternStringUtils.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/PatternStringUtils.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import java.math.BigDecimal;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/Properties.java b/android_icu4j/src/main/java/android/icu/impl/number/Properties.java
index 8207147..1ed9704 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/Properties.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/Properties.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import java.io.IOException;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/PropertiesAffixPatternProvider.java b/android_icu4j/src/main/java/android/icu/impl/number/PropertiesAffixPatternProvider.java
index f9deb37..749babf 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/PropertiesAffixPatternProvider.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/PropertiesAffixPatternProvider.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 /**
@@ -167,4 +167,4 @@
                 + negSuffix
                 + "}";
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/RoundingUtils.java b/android_icu4j/src/main/java/android/icu/impl/number/RoundingUtils.java
index 8dfeea2..1fa80b4 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/RoundingUtils.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/RoundingUtils.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import java.math.BigDecimal;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/SimpleModifier.java b/android_icu4j/src/main/java/android/icu/impl/number/SimpleModifier.java
index 923e905..8a34133 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/SimpleModifier.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/SimpleModifier.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number;
 
 import java.text.Format.Field;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/UnitConversionHandler.java b/android_icu4j/src/main/java/android/icu/impl/number/UnitConversionHandler.java
new file mode 100644
index 0000000..b120ae3
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/impl/number/UnitConversionHandler.java
@@ -0,0 +1,60 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package android.icu.impl.number;
+
+import java.util.List;
+
+import android.icu.impl.units.ComplexUnitsConverter;
+import android.icu.impl.units.MeasureUnitImpl;
+import android.icu.impl.units.UnitsData;
+import android.icu.util.Measure;
+import android.icu.util.MeasureUnit;
+
+/**
+ * A MicroPropsGenerator which converts a measurement from one MeasureUnit to
+ * another. In particular, the output MeasureUnit may be a mixed unit. (The
+ * input unit may not be a mixed unit.)
+ * @hide Only a subset of ICU is exposed in Android
+ */
+public class UnitConversionHandler implements MicroPropsGenerator {
+
+    private final MicroPropsGenerator fParent;
+    private MeasureUnit fOutputUnit;
+    private ComplexUnitsConverter fComplexUnitConverter;
+
+    /**
+     * Constructor.
+     *
+     * @param inputUnit Specifies the input MeasureUnit. Mixed units are not
+     *     supported as input (because input is just a single decimal quantity).
+     * @param outputUnit Specifies the output MeasureUnit.
+     * @param parent The parent MicroPropsGenerator.
+     */
+    public UnitConversionHandler(MeasureUnit inputUnit,
+                                 MeasureUnit outputUnit,
+                                 MicroPropsGenerator parent) {
+        this.fOutputUnit = outputUnit;
+        this.fParent = parent;
+        MeasureUnitImpl inputUnitImpl = MeasureUnitImpl.forIdentifier(inputUnit.getIdentifier());
+        MeasureUnitImpl outputUnitImpl = MeasureUnitImpl.forIdentifier(outputUnit.getIdentifier());
+        this.fComplexUnitConverter = new ComplexUnitsConverter(inputUnitImpl, outputUnitImpl,
+                                                               new UnitsData().getConversionRates());
+    }
+
+    /**
+     * Obtains the appropriate output values from the Unit Converter.
+     */
+    @Override
+    public MicroProps processQuantity(DecimalQuantity quantity) {
+        MicroProps result = this.fParent.processQuantity(quantity);
+
+        quantity.roundToInfinity(); // Enables toDouble
+        List<Measure> measures = this.fComplexUnitConverter.convert(quantity.toBigDecimal(), result.rounder);
+
+        result.outputUnit = this.fOutputUnit;
+        UsagePrefsHandler.mixedMeasuresToMicros(measures, quantity, result);
+
+        return result;
+    }
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/UsagePrefsHandler.java b/android_icu4j/src/main/java/android/icu/impl/number/UsagePrefsHandler.java
new file mode 100644
index 0000000..d2e887a
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/impl/number/UsagePrefsHandler.java
@@ -0,0 +1,88 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package android.icu.impl.number;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+import android.icu.impl.units.MeasureUnitImpl;
+import android.icu.impl.units.UnitsRouter;
+import android.icu.util.Measure;
+import android.icu.util.MeasureUnit;
+import android.icu.util.ULocale;
+
+/**
+ * @hide Only a subset of ICU is exposed in Android
+ */
+public class UsagePrefsHandler implements MicroPropsGenerator {
+
+    private final MicroPropsGenerator fParent;
+    private UnitsRouter fUnitsRouter;
+
+    public UsagePrefsHandler(ULocale locale, MeasureUnit inputUnit, String usage, MicroPropsGenerator parent) {
+        assert parent != null;
+
+        this.fParent = parent;
+        this.fUnitsRouter =
+                new UnitsRouter(MeasureUnitImpl.forIdentifier(inputUnit.getIdentifier()), locale.getCountry(), usage);
+    }
+
+    /**
+     * Populates micros.mixedMeasures and modifies quantity, based on the values
+     * in measures.
+     */
+    protected static void
+    mixedMeasuresToMicros(List<Measure> measures, DecimalQuantity outQuantity, MicroProps outMicros) {
+        outMicros.mixedMeasures = new ArrayList<>();
+        if (measures.size() > 1) {
+            // For debugging
+            assert (outMicros.outputUnit.getComplexity() == MeasureUnit.Complexity.MIXED);
+
+            // Check that we received the expected number of measurements:
+            assert measures.size() == outMicros.outputUnit.splitToSingleUnits().size();
+
+            // Mixed units: except for the last value, we pass all values to the
+            // LongNameHandler via micros->mixedMeasures.
+            for (int i = 0, n = measures.size() - 1; i < n; i++) {
+                outMicros.mixedMeasures.add(measures.get(i));
+            }
+        }
+
+        // The last value (potentially the only value) gets passed on via quantity.
+        outQuantity.setToBigDecimal((BigDecimal) measures.get(measures.size()- 1).getNumber());
+    }
+
+    /**
+     * Returns the list of possible output units, i.e. the full set of
+     * preferences, for the localized, usage-specific unit preferences.
+     * <p>
+     * The returned pointer should be valid for the lifetime of the
+     * UsagePrefsHandler instance.
+     */
+    public List<MeasureUnit> getOutputUnits() {
+        return fUnitsRouter.getOutputUnits();
+    }
+
+    /**
+     * Obtains the appropriate output value, MeasureUnit and
+     * rounding/precision behaviour from the UnitsRouter.
+     * <p>
+     * The output unit is passed on to the LongNameHandler via
+     * micros.outputUnit.
+     */
+    @Override
+    public MicroProps processQuantity(DecimalQuantity quantity) {
+        MicroProps micros = this.fParent.processQuantity(quantity);
+
+        quantity.roundToInfinity(); // Enables toDouble
+        final UnitsRouter.RouteResult routed = fUnitsRouter.route(quantity.toBigDecimal(), micros);
+
+        final List<Measure> routedMeasures = routed.measures;
+        micros.outputUnit = routed.outputUnit.build();
+
+        UsagePrefsHandler.mixedMeasuresToMicros(routedMeasures, quantity, micros);
+        return micros;
+    }
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/AffixMatcher.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/AffixMatcher.java
index b9e7075..7651470 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/AffixMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/AffixMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import java.util.ArrayList;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/AffixPatternMatcher.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/AffixPatternMatcher.java
index 125e413..29ef664 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/AffixPatternMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/AffixPatternMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import android.icu.impl.number.AffixUtils;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/AffixTokenMatcherFactory.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/AffixTokenMatcherFactory.java
index 2970318..58b57ad 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/AffixTokenMatcherFactory.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/AffixTokenMatcherFactory.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import android.icu.text.DecimalFormatSymbols;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/CodePointMatcher.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/CodePointMatcher.java
index 7fa7504..abf87c4 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/CodePointMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/CodePointMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import android.icu.impl.StringSegment;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/CombinedCurrencyMatcher.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/CombinedCurrencyMatcher.java
index 24add47..dba1592 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/CombinedCurrencyMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/CombinedCurrencyMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import java.util.Iterator;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/DecimalMatcher.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/DecimalMatcher.java
index ba43d5e..8b74020 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/DecimalMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/DecimalMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import android.icu.impl.StaticUnicodeSets;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/IgnorablesMatcher.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/IgnorablesMatcher.java
index 5600c03..228bfd0 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/IgnorablesMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/IgnorablesMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import android.icu.impl.StaticUnicodeSets;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/InfinityMatcher.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/InfinityMatcher.java
index 720b4fc..505a3e6 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/InfinityMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/InfinityMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import static android.icu.impl.number.parse.ParsingUtils.safeContains;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/MinusSignMatcher.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/MinusSignMatcher.java
index bf08bab..bd67d6c 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/MinusSignMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/MinusSignMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import static android.icu.impl.number.parse.ParsingUtils.safeContains;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/MultiplierParseHandler.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/MultiplierParseHandler.java
index f849427..d43c920 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/MultiplierParseHandler.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/MultiplierParseHandler.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import android.icu.number.Scale;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/NanMatcher.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/NanMatcher.java
index 8427560..9766c23 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/NanMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/NanMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import android.icu.impl.StringSegment;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/NumberParseMatcher.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/NumberParseMatcher.java
index 5b5531b..402c0bd 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/NumberParseMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/NumberParseMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import android.icu.impl.StringSegment;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/NumberParserImpl.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/NumberParserImpl.java
index 5b847dd..f937a07 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/NumberParserImpl.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/NumberParserImpl.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import java.text.ParsePosition;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/PaddingMatcher.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/PaddingMatcher.java
index 2ec8699..d6fb22c 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/PaddingMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/PaddingMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import android.icu.impl.StringSegment;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/ParsedNumber.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/ParsedNumber.java
index 045ead1..c7d73ed 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/ParsedNumber.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/ParsedNumber.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import java.util.Comparator;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/ParsingUtils.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/ParsingUtils.java
index 3b7e1e7..306ef5e 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/ParsingUtils.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/ParsingUtils.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import android.icu.text.UnicodeSet;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/PercentMatcher.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/PercentMatcher.java
index cd95e9b..056f212 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/PercentMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/PercentMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import android.icu.impl.StaticUnicodeSets;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/PermilleMatcher.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/PermilleMatcher.java
index c3afccf..888f1c2 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/PermilleMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/PermilleMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import android.icu.impl.StaticUnicodeSets;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/PlusSignMatcher.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/PlusSignMatcher.java
index 4c1ba0c..0abdfd9 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/PlusSignMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/PlusSignMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import static android.icu.impl.number.parse.ParsingUtils.safeContains;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/RequireAffixValidator.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/RequireAffixValidator.java
index 3a74ae2..5fd6d39 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/RequireAffixValidator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/RequireAffixValidator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 /**
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/RequireCurrencyValidator.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/RequireCurrencyValidator.java
index 147d7bf..158b313 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/RequireCurrencyValidator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/RequireCurrencyValidator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 /**
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/RequireDecimalSeparatorValidator.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/RequireDecimalSeparatorValidator.java
index 80fb97e..d8e0497 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/RequireDecimalSeparatorValidator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/RequireDecimalSeparatorValidator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 /**
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/RequireNumberValidator.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/RequireNumberValidator.java
index 1f982ed..f793f38 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/RequireNumberValidator.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/RequireNumberValidator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 /**
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/ScientificMatcher.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/ScientificMatcher.java
index 5b570c0..88af56c 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/ScientificMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/ScientificMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import static android.icu.impl.number.parse.ParsingUtils.safeContains;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/SeriesMatcher.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/SeriesMatcher.java
index f8ac8e1..ac946df 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/SeriesMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/SeriesMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import java.util.ArrayList;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/SymbolMatcher.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/SymbolMatcher.java
index 5540050..54b80bd 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/SymbolMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/SymbolMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import android.icu.impl.StaticUnicodeSets;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/parse/ValidationMatcher.java b/android_icu4j/src/main/java/android/icu/impl/number/parse/ValidationMatcher.java
index 6fdc7f6..ebd7acd 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/parse/ValidationMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/parse/ValidationMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.parse;
 
 import android.icu.impl.StringSegment;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/range/PrefixInfixSuffixLengthHelper.java b/android_icu4j/src/main/java/android/icu/impl/number/range/PrefixInfixSuffixLengthHelper.java
index 8bb8ff0..22b4172 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/range/PrefixInfixSuffixLengthHelper.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/range/PrefixInfixSuffixLengthHelper.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.range;
 
 /**
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/range/RangeMacroProps.java b/android_icu4j/src/main/java/android/icu/impl/number/range/RangeMacroProps.java
index df4adc3..47f0006 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/range/RangeMacroProps.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/range/RangeMacroProps.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.range;
 
 import java.util.Objects;
diff --git a/android_icu4j/src/main/java/android/icu/impl/number/range/StandardPluralRanges.java b/android_icu4j/src/main/java/android/icu/impl/number/range/StandardPluralRanges.java
index 2c3c6c1..61ffa7d 100644
--- a/android_icu4j/src/main/java/android/icu/impl/number/range/StandardPluralRanges.java
+++ b/android_icu4j/src/main/java/android/icu/impl/number/range/StandardPluralRanges.java
@@ -1,9 +1,11 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.impl.number.range;
 
-import java.util.MissingResourceException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
 
 import android.icu.impl.ICUData;
 import android.icu.impl.ICUResourceBundle;
@@ -11,6 +13,7 @@
 import android.icu.impl.UResource;
 import android.icu.util.ULocale;
 import android.icu.util.UResourceBundle;
+import android.icu.util.UResourceTypeMismatchException;
 
 /**
  * @author sffc
@@ -22,8 +25,54 @@
     StandardPlural[] flatTriples;
     int numTriples = 0;
 
+    /**
+     * An immutable map from language codes to set IDs.
+     * Pre-computed and cached in Java since it is used as a cache key for PluralRules.
+     */
+    private static volatile Map<String, String> languageToSet;
+
+    /** An empty StandardPluralRanges instance. */
+    public static final StandardPluralRanges DEFAULT = new StandardPluralRanges();
+
     ////////////////////
 
+    private static final class PluralRangeSetsDataSink extends UResource.Sink {
+
+        Map<String, String> output;
+
+        PluralRangeSetsDataSink(Map<String, String> output) {
+            this.output = output;
+        }
+
+        @Override
+        public void put(UResource.Key key, UResource.Value value, boolean noFallback) {
+            UResource.Table table = value.getTable();
+            for (int i = 0; table.getKeyAndValue(i, key, value); ++i) {
+                // The data has only languages; no regions/scripts. If this changes, this
+                // code and languageToSet will need to change.
+                assert key.toString().equals(new ULocale(key.toString()).getLanguage());
+                output.put(key.toString(), value.toString());
+            }
+        }
+    }
+
+    private static Map<String, String> getLanguageToSet() {
+        Map<String, String> candidate = languageToSet;
+        if (candidate == null) {
+            Map<String, String> map = new HashMap<String, String>();
+            PluralRangeSetsDataSink sink = new PluralRangeSetsDataSink(map);
+            ICUResourceBundle resource = (ICUResourceBundle)
+                UResourceBundle.getBundleInstance(ICUData.ICU_BASE_NAME, "pluralRanges");
+            resource.getAllItemsWithFallback("locales", sink);
+            candidate = Collections.unmodifiableMap(map);
+        }
+        // Check if another thread set languageToSet in the mean time
+        if (languageToSet == null) {
+            languageToSet = candidate;
+        }
+        return languageToSet;
+    }
+
     private static final class PluralRangesDataSink extends UResource.Sink {
 
         StandardPluralRanges output;
@@ -38,6 +87,10 @@
             output.setCapacity(entriesArray.getSize());
             for (int i = 0; entriesArray.getValue(i, value); ++i) {
                 UResource.Array pluralFormsArray = value.getArray();
+                if (pluralFormsArray.getSize() != 3) {
+                    throw new UResourceTypeMismatchException(
+                        "Expected 3 elements in pluralRanges.txt array");
+                }
                 pluralFormsArray.getValue(0, value);
                 StandardPlural first = StandardPlural.fromString(value.getString());
                 pluralFormsArray.getValue(1, value);
@@ -50,34 +103,43 @@
     }
 
     private static void getPluralRangesData(
-            ULocale locale,
+            String set,
             StandardPluralRanges out) {
         StringBuilder sb = new StringBuilder();
         ICUResourceBundle resource;
         resource = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUData.ICU_BASE_NAME, "pluralRanges");
-        sb.append("locales/");
-        sb.append(locale.getLanguage());
-        String key = sb.toString();
-        String set;
-        try {
-            set = resource.getStringWithFallback(key);
-        } catch (MissingResourceException e) {
-            // Not all languages are covered: fail gracefully
-            return;
-        }
-
         sb.setLength(0);
         sb.append("rules/");
         sb.append(set);
-        key = sb.toString();
+        String key = sb.toString();
         PluralRangesDataSink sink = new PluralRangesDataSink(out);
         resource.getAllItemsWithFallback(key, sink);
     }
 
     ////////////////////
 
-    public StandardPluralRanges(ULocale locale) {
-        getPluralRangesData(locale, this);
+    /** Create a StandardPluralRanges based on locale. */
+    public static StandardPluralRanges forLocale(ULocale locale) {
+        return forSet(getSetForLocale(locale));
+    }
+
+    /** Create a StandardPluralRanges based on set name. */
+    public static StandardPluralRanges forSet(String set) {
+        StandardPluralRanges result = new StandardPluralRanges();
+        if (set == null) {
+            // Not all languages are covered: fail gracefully
+            return DEFAULT;
+        }
+        getPluralRangesData(set, result);
+        return result;
+    }
+
+    /** Get the set name from the locale. */
+    public static String getSetForLocale(ULocale locale) {
+        return getLanguageToSet().get(locale.getLanguage());
+    }
+
+    private StandardPluralRanges() {
     }
 
     /** Used for data loading. */
diff --git a/android_icu4j/src/main/java/android/icu/impl/text/RbnfScannerProviderImpl.java b/android_icu4j/src/main/java/android/icu/impl/text/RbnfScannerProviderImpl.java
index 2ff6434..f56ed5f 100644
--- a/android_icu4j/src/main/java/android/icu/impl/text/RbnfScannerProviderImpl.java
+++ b/android_icu4j/src/main/java/android/icu/impl/text/RbnfScannerProviderImpl.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2009-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/impl/units/ComplexUnitsConverter.java b/android_icu4j/src/main/java/android/icu/impl/units/ComplexUnitsConverter.java
new file mode 100644
index 0000000..109f8f5
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/impl/units/ComplexUnitsConverter.java
@@ -0,0 +1,215 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package android.icu.impl.units;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import android.icu.impl.number.DecimalQuantity;
+import android.icu.impl.number.DecimalQuantity_DualStorageBCD;
+import android.icu.number.Precision;
+import android.icu.util.Measure;
+import android.icu.util.MeasureUnit;
+
+/**
+ * Converts from single or compound unit to single, compound or mixed units.
+ * For example, from `meter` to `foot+inch`.
+ * <p>
+ * DESIGN:
+ * This class uses `UnitConverter` in order to perform the single converter (i.e. converters from a
+ * single unit to another single unit). Therefore, `ComplexUnitsConverter` class contains multiple
+ * instances of the `UnitConverter` to perform the conversion.
+ * @hide Only a subset of ICU is exposed in Android
+ */
+public class ComplexUnitsConverter {
+    public static final BigDecimal EPSILON = BigDecimal.valueOf(Math.ulp(1.0));
+    public static final BigDecimal EPSILON_MULTIPLIER = BigDecimal.valueOf(1).add(EPSILON);
+    private ArrayList<UnitConverter> unitConverters_;
+    // Individual units of mixed units, sorted big to small
+    private ArrayList<MeasureUnitImpl> units_;
+    // Individual units of mixed units, sorted in desired output order
+    private ArrayList<MeasureUnit> outputUnits_;
+
+    /**
+     * Constructor of `ComplexUnitsConverter`.
+     * NOTE:
+     * - inputUnit and outputUnits must be under the same category
+     * - e.g. meter to feet and inches --> all of them are length units.
+     *
+     * @param inputUnit   represents the source unit. (should be single or compound unit).
+     * @param outputUnits represents the output unit. could be any type. (single, compound or mixed).
+     */
+    public ComplexUnitsConverter(MeasureUnitImpl inputUnit, MeasureUnitImpl outputUnits,
+                                 ConversionRates conversionRates) {
+        units_ = outputUnits.extractIndividualUnits();
+        outputUnits_ = new ArrayList<>(units_.size());
+        for (MeasureUnitImpl itr : units_) {
+            outputUnits_.add(itr.build());
+        }
+        assert (!units_.isEmpty());
+
+        // Sort the units in a descending order.
+        Collections.sort(
+                this.units_,
+                Collections.reverseOrder(new MeasureUnitImpl.MeasureUnitImplComparator(conversionRates)));
+
+
+        // If the `outputUnits` is `UMEASURE_UNIT_MIXED` such as `foot+inch`. Thus means there is more than one unit
+        //  and In this case we need more converters to convert from the `inputUnit` to the first unit in the
+        //  `outputUnits`. Then, a converter from the first unit in the `outputUnits` to the second unit and so on.
+        //      For Example:
+        //          - inputUnit is `meter`
+        //          - outputUnits is `foot+inch`
+        //              - Therefore, we need to have two converters:
+        //                      1. a converter from `meter` to `foot`
+        //                      2. a converter from `foot` to `inch`
+        //          - Therefore, if the input is `2 meter`:
+        //              1. convert `meter` to `foot` --> 2 meter to 6.56168 feet
+        //              2. convert the residual of 6.56168 feet (0.56168) to inches, which will be (6.74016
+        //              inches)
+        //              3. then, the final result will be (6 feet and 6.74016 inches)
+        unitConverters_ = new ArrayList<>();
+        for (int i = 0, n = units_.size(); i < n; i++) {
+            if (i == 0) { // first element
+                unitConverters_.add(new UnitConverter(inputUnit, units_.get(i), conversionRates));
+            } else {
+                unitConverters_.add(new UnitConverter(units_.get(i - 1), units_.get(i), conversionRates));
+            }
+        }
+    }
+
+    /**
+     * Returns true if the specified `quantity` of the `inputUnit`, expressed in terms of the biggest
+     * unit in the MeasureUnit `outputUnit`, is greater than or equal to `limit`.
+     * <p>
+     * For example, if the input unit is `meter` and the target unit is `foot+inch`. Therefore, this
+     * function will convert the `quantity` from `meter` to `foot`, then, it will compare the value in
+     * `foot` with the `limit`.
+     */
+    public boolean greaterThanOrEqual(BigDecimal quantity, BigDecimal limit) {
+        assert !units_.isEmpty();
+
+        // NOTE: First converter converts to the biggest quantity.
+        return unitConverters_.get(0).convert(quantity).multiply(EPSILON_MULTIPLIER).compareTo(limit) >= 0;
+    }
+
+    /**
+     * Returns outputMeasures which is an array with the corresponding values.
+     * - E.g. converting meters to feet and inches.
+     * 1 meter --> 3 feet, 3.3701 inches
+     * NOTE:
+     * the smallest element is the only element that could have fractional values. And all
+     * other elements are floored to the nearest integer
+     */
+    public List<Measure> convert(BigDecimal quantity, Precision rounder) {
+        List<Measure> result = new ArrayList<>(unitConverters_.size());
+        BigDecimal sign = BigDecimal.ONE;
+        if (quantity.compareTo(BigDecimal.ZERO) < 0) {
+            quantity = quantity.abs();
+            sign = sign.negate();
+        }
+
+        // For N converters:
+        // - the first converter converts from the input unit to the largest
+        //   unit,
+        // - N-1 converters convert to bigger units for which we want integers,
+        // - the Nth converter (index N-1) converts to the smallest unit, which
+        //   isn't (necessarily) an integer.
+        List<BigDecimal> intValues = new ArrayList<>(unitConverters_.size() - 1);
+
+        for (int i = 0, n = unitConverters_.size(); i < n; ++i) {
+            quantity = (unitConverters_.get(i)).convert(quantity);
+
+            if (i < n - 1) {
+                // The double type has 15 decimal digits of precision. For choosing
+                // whether to use the current unit or the next smaller unit, we
+                // therefore nudge up the number with which the thresholding
+                // decision is made. However after the thresholding, we use the
+                // original values to ensure unbiased accuracy (to the extent of
+                // double's capabilities).
+                BigDecimal roundedQuantity =
+                    quantity.multiply(EPSILON_MULTIPLIER).setScale(0, RoundingMode.FLOOR);
+                intValues.add(roundedQuantity);
+
+                // Keep the residual of the quantity.
+                //   For example: `3.6 feet`, keep only `0.6 feet`
+                quantity = quantity.subtract(roundedQuantity);
+                if (quantity.compareTo(BigDecimal.ZERO) == -1) {
+                    quantity = BigDecimal.ZERO;
+                }
+            } else { // LAST ELEMENT
+                if (rounder == null) {
+                    // Nothing to do for the last element.
+                    break;
+                }
+
+                // Round the last value
+                // TODO(ICU-21288): get smarter about precision for mixed units.
+                DecimalQuantity quant = new DecimalQuantity_DualStorageBCD(quantity);
+                rounder.apply(quant);
+                quantity = quant.toBigDecimal();
+                if (i == 0) {
+                    // Last element is also the first element, so we're done
+                    break;
+                }
+
+                // Check if there's a carry, and bubble it back up the resulting intValues.
+                BigDecimal carry = unitConverters_.get(i)
+                                       .convertInverse(quantity)
+                                       .multiply(EPSILON_MULTIPLIER)
+                                       .setScale(0, RoundingMode.FLOOR);
+                if (carry.compareTo(BigDecimal.ZERO) <= 0) { // carry is not greater than zero
+                    break;
+                }
+                quantity = quantity.subtract(unitConverters_.get(i).convert(carry));
+                intValues.set(i - 1, intValues.get(i - 1).add(carry));
+
+                // We don't use the first converter: that one is for the input unit
+                for (int j = i - 1; j > 0; j--) {
+                    carry = unitConverters_.get(j)
+                                .convertInverse(intValues.get(j))
+                                .multiply(EPSILON_MULTIPLIER)
+                                .setScale(0, RoundingMode.FLOOR);
+                    if (carry.compareTo(BigDecimal.ZERO) <= 0) { // carry is not greater than zero
+                        break;
+                    }
+                    intValues.set(j, intValues.get(j).subtract(unitConverters_.get(j).convert(carry)));
+                    intValues.set(j - 1, intValues.get(j - 1).add(carry));
+                }
+            }
+        }
+
+        // Package values into Measure instances in result:
+        for (int i = 0, n = unitConverters_.size(); i < n; ++i) {
+            if (i < n - 1) {
+                result.add(new Measure(intValues.get(i).multiply(sign), units_.get(i).build()));
+            } else {
+                result.add(new Measure(quantity.multiply(sign), units_.get(i).build()));
+            }
+        }
+
+        for (int i = 0; i < result.size(); i++) {
+            for (int j = i; j < result.size(); j++) {
+                // Find the next expected unit, and swap it into place.
+                if (result.get(j).getUnit().equals(outputUnits_.get(i))) {
+                    if (j != i) {
+                        Measure tmp = result.get(j);
+                        result.set(j, result.get(i));
+                        result.set(i, tmp);
+                    }
+                }
+            }
+        }
+    
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "ComplexUnitsConverter [unitConverters_=" + unitConverters_ + ", units_=" + units_ + "]";
+    }
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/units/ConversionRates.java b/android_icu4j/src/main/java/android/icu/impl/units/ConversionRates.java
new file mode 100644
index 0000000..036b9a0
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/impl/units/ConversionRates.java
@@ -0,0 +1,245 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+
+package android.icu.impl.units;
+
+import java.math.BigDecimal;
+import java.math.MathContext;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import android.icu.impl.ICUData;
+import android.icu.impl.ICUResourceBundle;
+import android.icu.impl.UResource;
+import android.icu.util.MeasureUnit;
+import android.icu.util.UResourceBundle;
+
+/**
+ * @hide Only a subset of ICU is exposed in Android
+ */
+public class ConversionRates {
+
+    /**
+     * Map from any simple unit (i.e. "meter", "foot", "inch") to its basic/root conversion rate info.
+     */
+    private HashMap<String, ConversionRateInfo> mapToConversionRate;
+
+    public ConversionRates() {
+        // Read the conversion rates from the data (units.txt).
+        ICUResourceBundle resource;
+        resource = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUData.ICU_BASE_NAME, "units");
+        ConversionRatesSink sink = new ConversionRatesSink();
+        resource.getAllItemsWithFallback(UnitsData.Constants.CONVERSION_UNIT_TABLE_NAME, sink);
+        this.mapToConversionRate = sink.getMapToConversionRate();
+    }
+
+    /**
+     * Extracts the factor from a `SingleUnitImpl` to its Basic Unit.
+     *
+     * @param singleUnit
+     * @return
+     */
+    private UnitConverter.Factor getFactorToBase(SingleUnitImpl singleUnit) {
+        int power = singleUnit.getDimensionality();
+        MeasureUnit.SIPrefix siPrefix = singleUnit.getSiPrefix();
+        UnitConverter.Factor result = UnitConverter.Factor.processFactor(mapToConversionRate.get(singleUnit.getSimpleUnit()).getConversionRate());
+
+        return result.applySiPrefix(siPrefix).power(power); // NOTE: you must apply the SI prefixes before the power.
+    }
+
+    public UnitConverter.Factor getFactorToBase(MeasureUnitImpl measureUnit) {
+        UnitConverter.Factor result = new UnitConverter.Factor();
+        for (SingleUnitImpl singleUnit :
+                measureUnit.getSingleUnits()) {
+            result = result.multiply(getFactorToBase(singleUnit));
+        }
+
+        return result;
+    }
+
+    protected BigDecimal getOffset(MeasureUnitImpl source, MeasureUnitImpl target, UnitConverter.Factor
+            sourceToBase, UnitConverter.Factor targetToBase, UnitConverter.Convertibility convertibility) {
+        if (convertibility != UnitConverter.Convertibility.CONVERTIBLE) return BigDecimal.valueOf(0);
+        if (!(checkSimpleUnit(source) && checkSimpleUnit(target))) return BigDecimal.valueOf(0);
+
+        String sourceSimpleIdentifier = source.getSingleUnits().get(0).getSimpleUnit();
+        String targetSimpleIdentifier = target.getSingleUnits().get(0).getSimpleUnit();
+
+        BigDecimal sourceOffset = this.mapToConversionRate.get(sourceSimpleIdentifier).getOffset();
+        BigDecimal targetOffset = this.mapToConversionRate.get(targetSimpleIdentifier).getOffset();
+        return sourceOffset
+                .subtract(targetOffset)
+                .divide(targetToBase.getConversionRate(), MathContext.DECIMAL128);
+
+
+    }
+
+    public MeasureUnitImpl extractCompoundBaseUnit(MeasureUnitImpl measureUnit) {
+        ArrayList<SingleUnitImpl> baseUnits = this.extractBaseUnits(measureUnit);
+
+        MeasureUnitImpl result = new MeasureUnitImpl();
+        for (SingleUnitImpl baseUnit :
+                baseUnits) {
+            result.appendSingleUnit(baseUnit);
+        }
+
+        return result;
+    }
+
+    public ArrayList<SingleUnitImpl> extractBaseUnits(MeasureUnitImpl measureUnitImpl) {
+        ArrayList<SingleUnitImpl> result = new ArrayList<>();
+        ArrayList<SingleUnitImpl> singleUnits = measureUnitImpl.getSingleUnits();
+        for (SingleUnitImpl singleUnit :
+                singleUnits) {
+            result.addAll(extractBaseUnits(singleUnit));
+        }
+
+        return result;
+    }
+
+    /**
+     * @param singleUnit An instance of SingleUnitImpl.
+     * @return The base units in the `SingleUnitImpl` with applying the dimensionality only and not the SI prefix.
+     * <p>
+     * NOTE:
+     * This method is helpful when checking the convertibility because no need to check convertibility.
+     */
+    public ArrayList<SingleUnitImpl> extractBaseUnits(SingleUnitImpl singleUnit) {
+        String target = mapToConversionRate.get(singleUnit.getSimpleUnit()).getTarget();
+        MeasureUnitImpl targetImpl = MeasureUnitImpl.UnitsParser.parseForIdentifier(target);
+
+        // Each unit must be powered by the same dimension
+        targetImpl.applyDimensionality(singleUnit.getDimensionality());
+
+        // NOTE: we do not apply SI prefixes.
+
+        return targetImpl.getSingleUnits();
+    }
+
+    /**
+     * Checks if the `MeasureUnitImpl` is simple or not.
+     *
+     * @param measureUnitImpl
+     * @return true if the `MeasureUnitImpl` is simple, false otherwise.
+     */
+    private boolean checkSimpleUnit(MeasureUnitImpl measureUnitImpl) {
+        if (measureUnitImpl.getComplexity() != MeasureUnit.Complexity.SINGLE) return false;
+        SingleUnitImpl singleUnit = measureUnitImpl.getSingleUnits().get(0);
+
+        if (singleUnit.getSiPrefix() != MeasureUnit.SIPrefix.ONE) return false;
+        if (singleUnit.getDimensionality() != 1) return false;
+
+        return true;
+    }
+
+    /**
+     * @hide Only a subset of ICU is exposed in Android
+     */
+    public static class ConversionRatesSink extends UResource.Sink {
+        /**
+         * Map from any simple unit (i.e. "meter", "foot", "inch") to its basic/root conversion rate info.
+         */
+        private HashMap<String, ConversionRateInfo> mapToConversionRate = new HashMap<>();
+
+        @Override
+        public void put(UResource.Key key, UResource.Value value, boolean noFallback) {
+            assert (UnitsData.Constants.CONVERSION_UNIT_TABLE_NAME.equals(key.toString()));
+
+            UResource.Table conversionRateTable = value.getTable();
+            for (int i = 0; conversionRateTable.getKeyAndValue(i, key, value); i++) {
+                assert (value.getType() == UResourceBundle.TABLE);
+
+                String simpleUnit = key.toString();
+
+                UResource.Table simpleUnitConversionInfo = value.getTable();
+                String target = null;
+                String factor = null;
+                String offset = "0";
+                for (int j = 0; simpleUnitConversionInfo.getKeyAndValue(j, key, value); j++) {
+                    assert (value.getType() == UResourceBundle.STRING);
+
+
+                    String keyString = key.toString();
+                    String valueString = value.toString().replaceAll(" ", "");
+                    if ("target".equals(keyString)) {
+                        target = valueString;
+                    } else if ("factor".equals(keyString)) {
+                        factor = valueString;
+                    } else if ("offset".equals(keyString)) {
+                        offset = valueString;
+                    } else {
+                        assert false : "The key must be target, factor or offset";
+                    }
+                }
+
+                // HERE a single conversion rate data should be loaded
+                assert (target != null);
+                assert (factor != null);
+
+                mapToConversionRate.put(simpleUnit, new ConversionRateInfo(simpleUnit, target, factor, offset));
+            }
+
+
+        }
+
+        public HashMap<String, ConversionRateInfo> getMapToConversionRate() {
+            return mapToConversionRate;
+        }
+    }
+
+    /**
+     * @hide Only a subset of ICU is exposed in Android
+     */
+    public static class ConversionRateInfo {
+
+        @SuppressWarnings("unused")
+        private final String simpleUnit;
+        private final String target;
+        private final String conversionRate;
+        private final BigDecimal offset;
+
+        public ConversionRateInfo(String simpleUnit, String target, String conversionRate, String offset) {
+            this.simpleUnit = simpleUnit;
+            this.target = target;
+            this.conversionRate = conversionRate;
+            this.offset = forNumberWithDivision(offset);
+        }
+
+        private static BigDecimal forNumberWithDivision(String numberWithDivision) {
+            String[] numbers = numberWithDivision.split("/");
+            assert (numbers.length <= 2);
+
+            if (numbers.length == 1) {
+                return new BigDecimal(numbers[0]);
+            }
+
+            return new BigDecimal(numbers[0]).divide(new BigDecimal(numbers[1]), MathContext.DECIMAL128);
+        }
+
+        /**
+         * @return the base unit.
+         * <p>
+         * For example:
+         * ("meter", "foot", "inch", "mile" ... etc.) have "meter" as a base/root unit.
+         */
+        public String getTarget() {
+            return this.target;
+        }
+
+        /**
+         * @return The offset from this unit to the base unit.
+         */
+        public BigDecimal getOffset() {
+            return this.offset;
+        }
+
+        /**
+         * @return The conversion rate from this unit to the base unit.
+         */
+        public String getConversionRate() {
+            return conversionRate;
+        }
+    }
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/units/MeasureUnitImpl.java b/android_icu4j/src/main/java/android/icu/impl/units/MeasureUnitImpl.java
new file mode 100644
index 0000000..135d3ba
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/impl/units/MeasureUnitImpl.java
@@ -0,0 +1,780 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package android.icu.impl.units;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+
+import android.icu.util.BytesTrie;
+import android.icu.util.CharsTrie;
+import android.icu.util.CharsTrieBuilder;
+import android.icu.util.ICUCloneNotSupportedException;
+import android.icu.util.MeasureUnit;
+import android.icu.util.StringTrieBuilder;
+
+/**
+ * @hide Only a subset of ICU is exposed in Android
+ */
+public class MeasureUnitImpl {
+
+    /**
+     * The full unit identifier.  Null if not computed.
+     */
+    private String identifier = null;
+
+    /**
+     * The complexity, either SINGLE, COMPOUND, or MIXED.
+     */
+    private MeasureUnit.Complexity complexity = MeasureUnit.Complexity.SINGLE;
+
+    /**
+     * The list of simple units. These may be summed or multiplied, based on the
+     * value of the complexity field.
+     * <p>
+     * The "dimensionless" unit (SingleUnitImpl default constructor) must not be
+     * added to this list.
+     * <p>
+     * The "dimensionless" <code>MeasureUnitImpl</code> has an empty <code>singleUnits</code>.
+     */
+    private final ArrayList<SingleUnitImpl> singleUnits;
+
+    public MeasureUnitImpl() {
+        singleUnits = new ArrayList<>();
+    }
+
+    public MeasureUnitImpl(SingleUnitImpl singleUnit) {
+        this();
+        this.appendSingleUnit(singleUnit);
+    }
+
+    /**
+     * Parse a unit identifier into a MeasureUnitImpl.
+     *
+     * @param identifier The unit identifier string.
+     * @return A newly parsed object.
+     * @throws IllegalArgumentException in case of incorrect/non-parsed identifier.
+     */
+    public static MeasureUnitImpl forIdentifier(String identifier) {
+        return UnitsParser.parseForIdentifier(identifier);
+    }
+
+    /**
+     * Used for currency units.
+     */
+    public static MeasureUnitImpl forCurrencyCode(String currencyCode) {
+        MeasureUnitImpl result = new MeasureUnitImpl();
+        result.identifier = currencyCode;
+        return result;
+    }
+
+    public MeasureUnitImpl copy() {
+        MeasureUnitImpl result = new MeasureUnitImpl();
+        result.complexity = this.complexity;
+        result.identifier = this.identifier;
+        for (SingleUnitImpl single : this.singleUnits) {
+            result.singleUnits.add(single.copy());
+        }
+        return result;
+    }
+
+    /**
+     * Returns the list of simple units.
+     */
+    public ArrayList<SingleUnitImpl> getSingleUnits() {
+        return singleUnits;
+    }
+
+    /**
+     * Mutates this MeasureUnitImpl to take the reciprocal.
+     */
+    public void takeReciprocal() {
+        this.identifier = null;
+        for (SingleUnitImpl singleUnit :
+                this.singleUnits) {
+            singleUnit.setDimensionality(singleUnit.getDimensionality() * -1);
+        }
+    }
+
+    /**
+     * Extracts the list of all the individual units inside the `MeasureUnitImpl`.
+     * For example:
+     * -   if the <code>MeasureUnitImpl</code> is <code>foot-per-hour</code>
+     * it will return a list of 1 <code>{foot-per-hour}</code>
+     * -   if the <code>MeasureUnitImpl</code> is <code>foot-and-inch</code>
+     * it will return a list of 2 <code>{ foot, inch}</code>
+     *
+     * @return a list of <code>MeasureUnitImpl</code>
+     */
+    public ArrayList<MeasureUnitImpl> extractIndividualUnits() {
+        ArrayList<MeasureUnitImpl> result = new ArrayList<>();
+        if (this.getComplexity() == MeasureUnit.Complexity.MIXED) {
+            // In case of mixed units, each single unit can be considered as a stand alone MeasureUnitImpl.
+            for (SingleUnitImpl singleUnit :
+                    this.getSingleUnits()) {
+                result.add(new MeasureUnitImpl(singleUnit));
+            }
+
+            return result;
+        }
+
+        result.add(this.copy());
+        return result;
+    }
+
+    /**
+     * Applies dimensionality to all the internal single units.
+     * For example: <b>square-meter-per-second</b>, when we apply dimensionality -2, it will be <b>square-second-per-p4-meter</b>
+     */
+    public void applyDimensionality(int dimensionality) {
+        for (SingleUnitImpl singleUnit :
+                singleUnits) {
+            singleUnit.setDimensionality(singleUnit.getDimensionality() * dimensionality);
+        }
+    }
+
+    /**
+     * Mutates this MeasureUnitImpl to append a single unit.
+     *
+     * @return true if a new item was added. If unit is the dimensionless unit,
+     * it is never added: the return value will always be false.
+     */
+    public boolean appendSingleUnit(SingleUnitImpl singleUnit) {
+        identifier = null;
+
+        if (singleUnit == null) {
+            // We don't append dimensionless units.
+            return false;
+        }
+
+        // Find a similar unit that already exists, to attempt to coalesce
+        SingleUnitImpl oldUnit = null;
+        for (SingleUnitImpl candidate : this.singleUnits) {
+            if (candidate.isCompatibleWith(singleUnit)) {
+                oldUnit = candidate;
+                break;
+            }
+        }
+
+        if (oldUnit != null) {
+            // Both dimensionalities will be positive, or both will be negative, by
+            // virtue of isCompatibleWith().
+            oldUnit.setDimensionality(oldUnit.getDimensionality() + singleUnit.getDimensionality());
+
+            return false;
+        }
+
+        // Add a copy of singleUnit
+        this.singleUnits.add(singleUnit.copy());
+
+        // If the MeasureUnitImpl is `UMEASURE_UNIT_SINGLE` and after the appending a unit, the singleUnits are more
+        // than one singleUnit. thus means the complexity should be `UMEASURE_UNIT_COMPOUND`
+        if (this.singleUnits.size() > 1 && this.complexity == MeasureUnit.Complexity.SINGLE) {
+            this.setComplexity(MeasureUnit.Complexity.COMPOUND);
+        }
+
+        return true;
+    }
+
+    /**
+     * Transform this MeasureUnitImpl into a MeasureUnit, simplifying if possible.
+     * <p>
+     * NOTE: this function must be called from a thread-safe class
+     */
+    public MeasureUnit build() {
+        return MeasureUnit.fromMeasureUnitImpl(this);
+    }
+
+    /**
+     * @return SingleUnitImpl
+     * @throws UnsupportedOperationException if the object could not be converted to SingleUnitImpl.
+     */
+    public SingleUnitImpl getSingleUnitImpl() {
+        if (this.singleUnits.size() == 0) {
+            return new SingleUnitImpl();
+        }
+        if (this.singleUnits.size() == 1) {
+            return this.singleUnits.get(0).copy();
+        }
+
+        throw new UnsupportedOperationException();
+    }
+
+
+    /**
+     * Returns the CLDR unit identifier and null if not computed.
+     */
+    public String getIdentifier() {
+        return identifier;
+    }
+
+    public MeasureUnit.Complexity getComplexity() {
+        return complexity;
+    }
+
+    public void setComplexity(MeasureUnit.Complexity complexity) {
+        this.complexity = complexity;
+    }
+
+    /**
+     * Normalizes the MeasureUnitImpl and generates the identifier string in place.
+     */
+    public void serialize() {
+        if (this.getSingleUnits().size() == 0) {
+            // Dimensionless, constructed by the default constructor: no appending
+            // to this.result, we wish it to contain the zero-length string.
+            return;
+        }
+        if (this.complexity == MeasureUnit.Complexity.COMPOUND) {
+            // Note: don't sort a MIXED unit
+            Collections.sort(this.getSingleUnits(), new SingleUnitComparator());
+        }
+
+        StringBuilder result = new StringBuilder();
+        boolean beforePer = true;
+        boolean firstTimeNegativeDimension = false;
+        for (SingleUnitImpl singleUnit :
+                this.getSingleUnits()) {
+            if (beforePer && singleUnit.getDimensionality() < 0) {
+                beforePer = false;
+                firstTimeNegativeDimension = true;
+            } else if (singleUnit.getDimensionality() < 0) {
+                firstTimeNegativeDimension = false;
+            }
+
+            String singleUnitIdentifier = singleUnit.getNeutralIdentifier();
+            if (this.getComplexity() == MeasureUnit.Complexity.MIXED) {
+                if (result.length() != 0) {
+                    result.append("-and-");
+                }
+            } else {
+                if (firstTimeNegativeDimension) {
+                    if (result.length() == 0) {
+                        result.append("per-");
+                    } else {
+                        result.append("-per-");
+                    }
+                } else {
+                    if (result.length() != 0) {
+                        result.append("-");
+                    }
+                }
+            }
+
+            result.append(singleUnitIdentifier);
+        }
+
+        this.identifier = result.toString();
+    }
+
+    /**
+     * @hide Only a subset of ICU is exposed in Android
+     */
+    public enum CompoundPart {
+        // Represents "-per-"
+        PER(0),
+        // Represents "-"
+        TIMES(1),
+        // Represents "-and-"
+        AND(2);
+
+        private final int index;
+
+        CompoundPart(int index) {
+            this.index = index;
+        }
+
+        public static CompoundPart getCompoundPartFromTrieIndex(int trieIndex) {
+            int index = trieIndex - UnitsData.Constants.kCompoundPartOffset;
+            switch (index) {
+                case 0:
+                    return CompoundPart.PER;
+                case 1:
+                    return CompoundPart.TIMES;
+                case 2:
+                    return CompoundPart.AND;
+                default:
+                    throw new AssertionError("CompoundPart index must be 0, 1 or 2");
+            }
+        }
+
+        public int getTrieIndex() {
+            return this.index + UnitsData.Constants.kCompoundPartOffset;
+        }
+
+        public int getValue() {
+            return index;
+        }
+    }
+
+    /**
+     * @hide Only a subset of ICU is exposed in Android
+     */
+    public enum PowerPart {
+        P2(2),
+        P3(3),
+        P4(4),
+        P5(5),
+        P6(6),
+        P7(7),
+        P8(8),
+        P9(9),
+        P10(10),
+        P11(11),
+        P12(12),
+        P13(13),
+        P14(14),
+        P15(15);
+
+        private final int power;
+
+        PowerPart(int power) {
+            this.power = power;
+        }
+
+        public static int getPowerFromTrieIndex(int trieIndex) {
+            return trieIndex - UnitsData.Constants.kPowerPartOffset;
+        }
+
+        public int getTrieIndex() {
+            return this.power + UnitsData.Constants.kPowerPartOffset;
+        }
+
+        public int getValue() {
+            return power;
+        }
+    }
+
+    /**
+     * @hide Only a subset of ICU is exposed in Android
+     */
+    public enum InitialCompoundPart {
+
+        // Represents "per-", the only compound part that can appear at the start of
+        // an identifier.
+        INITIAL_COMPOUND_PART_PER(0);
+
+        private final int index;
+
+        InitialCompoundPart(int powerIndex) {
+            this.index = powerIndex;
+        }
+
+        public static InitialCompoundPart getInitialCompoundPartFromTrieIndex(int trieIndex) {
+            int index = trieIndex - UnitsData.Constants.kInitialCompoundPartOffset;
+            if (index == 0) {
+                return INITIAL_COMPOUND_PART_PER;
+            }
+
+            throw new IllegalArgumentException("Incorrect trieIndex");
+        }
+
+        public int getTrieIndex() {
+            return this.index + UnitsData.Constants.kInitialCompoundPartOffset;
+        }
+
+        public int getValue() {
+            return index;
+        }
+
+    }
+
+    /**
+     * @hide Only a subset of ICU is exposed in Android
+     */
+    public static class UnitsParser {
+        // This used only to not build the trie each time we use the parser
+        private volatile static CharsTrie savedTrie = null;
+
+        // This trie used in the parsing operation.
+        private final CharsTrie trie;
+        private final String fSource;
+        // Tracks parser progress: the offset into fSource.
+        private int fIndex = 0;
+        // Set to true when we've seen a "-per-" or a "per-", after which all units
+        // are in the denominator. Until we find an "-and-", at which point the
+        // identifier is invalid pending TODO(CLDR-13700).
+        private boolean fAfterPer = false;
+        // If an "-and-" was parsed prior to finding the "single
+        //     * unit", sawAnd is set to true. If not, it is left as is.
+        private boolean fSawAnd = false;
+
+        private UnitsParser(String identifier) {
+            this.fSource = identifier;
+
+            try {
+                this.trie = UnitsParser.savedTrie.clone();
+            } catch (CloneNotSupportedException e) {
+                throw new ICUCloneNotSupportedException();
+            }
+        }
+
+        static {
+            // Build Units trie.
+            CharsTrieBuilder trieBuilder;
+            trieBuilder = new CharsTrieBuilder();
+
+            // Add syntax parts (compound, power prefixes)
+            trieBuilder.add("-per-", CompoundPart.PER.getTrieIndex());
+            trieBuilder.add("-", CompoundPart.TIMES.getTrieIndex());
+            trieBuilder.add("-and-", CompoundPart.AND.getTrieIndex());
+            trieBuilder.add("per-", InitialCompoundPart.INITIAL_COMPOUND_PART_PER.getTrieIndex());
+            trieBuilder.add("square-", PowerPart.P2.getTrieIndex());
+            trieBuilder.add("cubic-", PowerPart.P3.getTrieIndex());
+            trieBuilder.add("pow2-", PowerPart.P2.getTrieIndex());
+            trieBuilder.add("pow3-", PowerPart.P3.getTrieIndex());
+            trieBuilder.add("pow4-", PowerPart.P4.getTrieIndex());
+            trieBuilder.add("pow5-", PowerPart.P5.getTrieIndex());
+            trieBuilder.add("pow6-", PowerPart.P6.getTrieIndex());
+            trieBuilder.add("pow7-", PowerPart.P7.getTrieIndex());
+            trieBuilder.add("pow8-", PowerPart.P8.getTrieIndex());
+            trieBuilder.add("pow9-", PowerPart.P9.getTrieIndex());
+            trieBuilder.add("pow10-", PowerPart.P10.getTrieIndex());
+            trieBuilder.add("pow11-", PowerPart.P11.getTrieIndex());
+            trieBuilder.add("pow12-", PowerPart.P12.getTrieIndex());
+            trieBuilder.add("pow13-", PowerPart.P13.getTrieIndex());
+            trieBuilder.add("pow14-", PowerPart.P14.getTrieIndex());
+            trieBuilder.add("pow15-", PowerPart.P15.getTrieIndex());
+
+            // Add SI prefixes
+            for (MeasureUnit.SIPrefix siPrefix :
+                    MeasureUnit.SIPrefix.values()) {
+                trieBuilder.add(siPrefix.getIdentifier(), getTrieIndex(siPrefix));
+            }
+
+            // Add simple units
+            String[] simpleUnits = UnitsData.getSimpleUnits();
+            for (int i = 0; i < simpleUnits.length; i++) {
+                trieBuilder.add(simpleUnits[i], i + UnitsData.Constants.kSimpleUnitOffset);
+
+            }
+
+            // TODO: Use SLOW or FAST here?
+            UnitsParser.savedTrie = trieBuilder.build(StringTrieBuilder.Option.FAST);
+        }
+
+        /**
+         * Construct a MeasureUnit from a CLDR Unit Identifier, defined in UTS 35.
+         * Validates and canonicalizes the identifier.
+         *
+         * @return MeasureUnitImpl object or null if the identifier is empty.
+         * @throws IllegalArgumentException in case of invalid identifier.
+         */
+        public static MeasureUnitImpl parseForIdentifier(String identifier) {
+            if (identifier == null || identifier.isEmpty()) {
+                return null;
+            }
+
+            UnitsParser parser = new UnitsParser(identifier);
+            return parser.parse();
+
+        }
+
+        private static MeasureUnit.SIPrefix getSiPrefixFromTrieIndex(int trieIndex) {
+            for (MeasureUnit.SIPrefix element :
+                    MeasureUnit.SIPrefix.values()) {
+                if (getTrieIndex(element) == trieIndex)
+                    return element;
+            }
+
+            throw new IllegalArgumentException("Incorrect trieIndex");
+        }
+
+        private static int getTrieIndex(MeasureUnit.SIPrefix prefix) {
+            return prefix.getPower() + UnitsData.Constants.kSIPrefixOffset;
+        }
+
+        private MeasureUnitImpl parse() {
+            MeasureUnitImpl result = new MeasureUnitImpl();
+
+            if (fSource.isEmpty()) {
+                // The dimensionless unit: nothing to parse. return null.
+                return null;
+            }
+
+            while (hasNext()) {
+                fSawAnd = false;
+                SingleUnitImpl singleUnit = nextSingleUnit();
+
+                boolean added = result.appendSingleUnit(singleUnit);
+                if (fSawAnd && !added) {
+                    throw new IllegalArgumentException("Two similar units are not allowed in a mixed unit.");
+                }
+
+                if ((result.singleUnits.size()) >= 2) {
+                    // nextSingleUnit fails appropriately for "per" and "and" in the
+                    // same identifier. It doesn't fail for other compound units
+                    // (COMPOUND_PART_TIMES). Consequently we take care of that
+                    // here.
+                    MeasureUnit.Complexity complexity =
+                            fSawAnd ? MeasureUnit.Complexity.MIXED : MeasureUnit.Complexity.COMPOUND;
+                    if (result.getSingleUnits().size() == 2) {
+                        // After appending two singleUnits, the complexity will be `UMEASURE_UNIT_COMPOUND`
+                        assert result.getComplexity() == MeasureUnit.Complexity.COMPOUND;
+                        result.setComplexity(complexity);
+                    } else if (result.getComplexity() != complexity) {
+                        throw new IllegalArgumentException("Can't have mixed compound units");
+                    }
+                }
+            }
+
+            return result;
+        }
+
+        /**
+         * Returns the next "single unit" via result.
+         * <p>
+         * If a "-per-" was parsed, the result will have appropriate negative
+         * dimensionality.
+         * <p>
+         *
+         * @throws IllegalArgumentException if we parse both compound units and "-and-", since mixed
+         *                                  compound units are not yet supported - TODO(CLDR-13700).
+         */
+        private SingleUnitImpl nextSingleUnit() {
+            SingleUnitImpl result = new SingleUnitImpl();
+
+            // state:
+            // 0 = no tokens seen yet (will accept power, SI prefix, or simple unit)
+            // 1 = power token seen (will not accept another power token)
+            // 2 = SI prefix token seen (will not accept a power or SI prefix token)
+            int state = 0;
+
+            boolean atStart = fIndex == 0;
+            Token token = nextToken();
+
+            if (atStart) {
+                // Identifiers optionally start with "per-".
+                if (token.getType() == Token.Type.TYPE_INITIAL_COMPOUND_PART) {
+                    assert token.getInitialCompoundPart() == InitialCompoundPart.INITIAL_COMPOUND_PART_PER;
+
+                    fAfterPer = true;
+                    result.setDimensionality(-1);
+
+                    token = nextToken();
+                }
+            } else {
+                // All other SingleUnit's are separated from previous SingleUnit's
+                // via a compound part:
+                if (token.getType() != Token.Type.TYPE_COMPOUND_PART) {
+                    throw new IllegalArgumentException("token type must be TYPE_COMPOUND_PART");
+                }
+
+                CompoundPart compoundPart = CompoundPart.getCompoundPartFromTrieIndex(token.getMatch());
+                switch (compoundPart) {
+                    case PER:
+                        if (fSawAnd) {
+                            throw new IllegalArgumentException("Mixed compound units not yet supported");
+                            // TODO(CLDR-13700).
+                        }
+
+                        fAfterPer = true;
+                        result.setDimensionality(-1);
+                        break;
+
+                    case TIMES:
+                        if (fAfterPer) {
+                            result.setDimensionality(-1);
+                        }
+                        break;
+
+                    case AND:
+                        if (fAfterPer) {
+                            // not yet supported, TODO(CLDR-13700).
+                            throw new IllegalArgumentException("Can't start with \"-and-\", and mixed compound units");
+                        }
+                        fSawAnd = true;
+                        break;
+                }
+
+                token = nextToken();
+            }
+
+            // Read tokens until we have a complete SingleUnit or we reach the end.
+            while (true) {
+                switch (token.getType()) {
+                    case TYPE_POWER_PART:
+                        if (state > 0) {
+                            throw new IllegalArgumentException();
+                        }
+
+                        result.setDimensionality(result.getDimensionality() * token.getPower());
+                        state = 1;
+                        break;
+
+                    case TYPE_SI_PREFIX:
+                        if (state > 1) {
+                            throw new IllegalArgumentException();
+                        }
+
+                        result.setSiPrefix(token.getSIPrefix());
+                        state = 2;
+                        break;
+
+                    case TYPE_SIMPLE_UNIT:
+                        result.setSimpleUnit(token.getSimpleUnitIndex(), UnitsData.getSimpleUnits());
+                        return result;
+
+                    default:
+                        throw new IllegalArgumentException();
+                }
+
+                if (!hasNext()) {
+                    throw new IllegalArgumentException("We ran out of tokens before finding a complete single unit.");
+                }
+
+                token = nextToken();
+            }
+        }
+
+        private boolean hasNext() {
+            return fIndex < fSource.length();
+        }
+
+        private Token nextToken() {
+            trie.reset();
+            int match = -1;
+            // Saves the position in the fSource string for the end of the most
+            // recent matching token.
+            int previ = -1;
+
+            // Find the longest token that matches a value in the trie:
+            while (fIndex < fSource.length()) {
+                BytesTrie.Result result = trie.next(fSource.charAt(fIndex++));
+                if (result == BytesTrie.Result.NO_MATCH) {
+                    break;
+                } else if (result == BytesTrie.Result.NO_VALUE) {
+                    continue;
+                }
+
+                match = trie.getValue();
+                previ = fIndex;
+
+                if (result == BytesTrie.Result.FINAL_VALUE) {
+                    break;
+                }
+
+                if (result != BytesTrie.Result.INTERMEDIATE_VALUE) {
+                    throw new IllegalArgumentException("result must has an intermediate value");
+                }
+
+                // continue;
+            }
+
+
+            if (match < 0) {
+                throw new IllegalArgumentException("Encountered unknown token starting at index " + previ);
+            } else {
+                fIndex = previ;
+            }
+
+            return new Token(match);
+        }
+
+        static class Token {
+
+            private final int fMatch;
+            private final Type type;
+
+            public Token(int fMatch) {
+                this.fMatch = fMatch;
+                type = calculateType(fMatch);
+            }
+
+            public Type getType() {
+                return this.type;
+            }
+
+            public MeasureUnit.SIPrefix getSIPrefix() {
+                assert this.type == Type.TYPE_SI_PREFIX;
+                return getSiPrefixFromTrieIndex(this.fMatch);
+            }
+
+            // Valid only for tokens with type TYPE_COMPOUND_PART.
+            public int getMatch() {
+                assert getType() == Type.TYPE_COMPOUND_PART;
+                return fMatch;
+            }
+
+            // Even if there is only one InitialCompoundPart value, we have this
+            // function for the simplicity of code consistency.
+            public InitialCompoundPart getInitialCompoundPart() {
+                assert (this.type == Type.TYPE_INITIAL_COMPOUND_PART
+                        &&
+                        fMatch == InitialCompoundPart.INITIAL_COMPOUND_PART_PER.getTrieIndex());
+                return InitialCompoundPart.getInitialCompoundPartFromTrieIndex(fMatch);
+            }
+
+            public int getPower() {
+                assert this.type == Type.TYPE_POWER_PART;
+                return PowerPart.getPowerFromTrieIndex(this.fMatch);
+            }
+
+            public int getSimpleUnitIndex() {
+                return this.fMatch - UnitsData.Constants.kSimpleUnitOffset;
+            }
+
+            // Calling calculateType() is invalid, resulting in an assertion failure, if Token
+            // value isn't positive.
+            private Type calculateType(int fMatch) {
+                if (fMatch <= 0) {
+                    throw new AssertionError("fMatch must have a positive value");
+                }
+
+                if (fMatch < UnitsData.Constants.kCompoundPartOffset) {
+                    return Type.TYPE_SI_PREFIX;
+                }
+                if (fMatch < UnitsData.Constants.kInitialCompoundPartOffset) {
+                    return Type.TYPE_COMPOUND_PART;
+                }
+                if (fMatch < UnitsData.Constants.kPowerPartOffset) {
+                    return Type.TYPE_INITIAL_COMPOUND_PART;
+                }
+                if (fMatch < UnitsData.Constants.kSimpleUnitOffset) {
+                    return Type.TYPE_POWER_PART;
+                }
+
+                return Type.TYPE_SIMPLE_UNIT;
+            }
+
+            enum Type {
+                TYPE_UNDEFINED,
+                TYPE_SI_PREFIX,
+                // Token type for "-per-", "-", and "-and-".
+                TYPE_COMPOUND_PART,
+                // Token type for "per-".
+                TYPE_INITIAL_COMPOUND_PART,
+                TYPE_POWER_PART,
+                TYPE_SIMPLE_UNIT,
+            }
+        }
+    }
+
+    static class MeasureUnitImplComparator implements Comparator<MeasureUnitImpl> {
+        private final ConversionRates conversionRates;
+
+        public MeasureUnitImplComparator(ConversionRates conversionRates) {
+            this.conversionRates = conversionRates;
+        }
+
+        @Override
+        public int compare(MeasureUnitImpl o1, MeasureUnitImpl o2) {
+            UnitConverter fromO1toO2 = new UnitConverter(o1, o2, conversionRates);
+            return fromO1toO2.convert(BigDecimal.valueOf(1)).compareTo(BigDecimal.valueOf(1));
+        }
+    }
+
+    static class SingleUnitComparator implements Comparator<SingleUnitImpl> {
+        @Override
+        public int compare(SingleUnitImpl o1, SingleUnitImpl o2) {
+            return o1.compareTo(o2);
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "MeasureUnitImpl [" + build().getIdentifier() + "]";
+    }
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/units/SingleUnitImpl.java b/android_icu4j/src/main/java/android/icu/impl/units/SingleUnitImpl.java
new file mode 100644
index 0000000..22ffe07
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/impl/units/SingleUnitImpl.java
@@ -0,0 +1,159 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+package android.icu.impl.units;
+
+import android.icu.util.MeasureUnit;
+
+/**
+ * @hide Only a subset of ICU is exposed in Android
+ */
+public class SingleUnitImpl {
+    /**
+     * Simple unit index, unique for every simple unit, -1 for the dimensionless
+     * unit. This is an index into a string list in unit.txt {ConversionUnits}.
+     * <p>
+     * The default value is -1, meaning the dimensionless unit:
+     * isDimensionless() will return true, until index is changed.
+     */
+    private int index = -1;
+    /**
+     * SimpleUnit is the simplest form of a Unit. For example, for "square-millimeter", the simple unit would be "meter"Ò
+     * <p>
+     * The default value is "", meaning the dimensionless unit:
+     * isDimensionless() will return true, until index is changed.
+     */
+    private String simpleUnit = "";
+    /**
+     * Determine the power of the `SingleUnit`. For example, for "square-meter", the dimensionality will be `2`.
+     * <p>
+     * NOTE:
+     * Default dimensionality is 1.
+     */
+    private int dimensionality = 1;
+    /**
+     * SI Prefix
+     */
+    private MeasureUnit.SIPrefix siPrefix = MeasureUnit.SIPrefix.ONE;
+
+    public SingleUnitImpl copy() {
+        SingleUnitImpl result = new SingleUnitImpl();
+        result.index = this.index;
+        result.dimensionality = this.dimensionality;
+        result.simpleUnit = this.simpleUnit;
+        result.siPrefix = this.siPrefix;
+
+        return result;
+    }
+
+    public MeasureUnit build() {
+        MeasureUnitImpl measureUnit = new MeasureUnitImpl(this);
+        return measureUnit.build();
+    }
+
+    /**
+     * Generates an neutral identifier string for a single unit which means we do not include the dimension signal.
+     */
+    public String getNeutralIdentifier() {
+        StringBuilder result = new StringBuilder();
+        int posPower = Math.abs(this.getDimensionality());
+
+        assert posPower > 0 : "getIdentifier does not support the dimensionless";
+
+        if (posPower == 1) {
+            // no-op
+        } else if (posPower == 2) {
+            result.append("square-");
+        } else if (posPower == 3) {
+            result.append("cubic-");
+        } else if (posPower <= 15) {
+            result.append("pow");
+            result.append(posPower);
+            result.append('-');
+        } else {
+            // TODO: IllegalArgumentException might not be appropriate here
+            throw new IllegalArgumentException("Unit Identifier Syntax Error");
+        }
+
+        result.append(this.getSiPrefix().getIdentifier());
+        result.append(this.getSimpleUnit());
+
+        return result.toString();
+    }
+
+    /**
+     * Compare this SingleUnitImpl to another SingleUnitImpl for the sake of
+     * sorting and coalescing.
+     * <p>
+     * Takes the sign of dimensionality into account, but not the absolute
+     * value: per-meter is not considered the same as meter, but meter is
+     * considered the same as square-meter.
+     * <p>
+     * The dimensionless unit generally does not get compared, but if it did, it
+     * would sort before other units by virtue of index being < 0 and
+     * dimensionality not being negative.
+     */
+    int compareTo(SingleUnitImpl other) {
+        if (dimensionality < 0 && other.dimensionality > 0) {
+            // Positive dimensions first
+            return 1;
+        }
+        if (dimensionality > 0 && other.dimensionality < 0) {
+            return -1;
+        }
+        if (index < other.index) {
+            return -1;
+        }
+        if (index > other.index) {
+            return 1;
+        }
+        if (this.getSiPrefix().getPower() < other.getSiPrefix().getPower()) {
+            return -1;
+        }
+        if (this.getSiPrefix().getPower() > other.getSiPrefix().getPower()) {
+            return 1;
+        }
+        return 0;
+    }
+
+    /**
+     * Checks whether this SingleUnitImpl is compatible with another for the purpose of coalescing.
+     * <p>
+     * Units with the same base unit and SI prefix should match, except that they must also have
+     * the same dimensionality sign, such that we don't merge numerator and denominator.
+     */
+    boolean isCompatibleWith(SingleUnitImpl other) {
+        return (compareTo(other) == 0);
+    }
+
+    public String getSimpleUnit() {
+        return simpleUnit;
+    }
+
+    public void setSimpleUnit(int simpleUnitIndex, String[] simpleUnits) {
+        this.index = simpleUnitIndex;
+        this.simpleUnit = simpleUnits[simpleUnitIndex];
+    }
+
+    public int getDimensionality() {
+        return dimensionality;
+    }
+
+    public void setDimensionality(int dimensionality) {
+        this.dimensionality = dimensionality;
+    }
+
+    public MeasureUnit.SIPrefix getSiPrefix() {
+        return siPrefix;
+    }
+
+    public void setSiPrefix(MeasureUnit.SIPrefix siPrefix) {
+        this.siPrefix = siPrefix;
+    }
+
+    public int getIndex() {
+        return index;
+    }
+
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/units/UnitConverter.java b/android_icu4j/src/main/java/android/icu/impl/units/UnitConverter.java
new file mode 100644
index 0000000..81bdc5e
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/impl/units/UnitConverter.java
@@ -0,0 +1,323 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package android.icu.impl.units;
+
+import static java.math.MathContext.DECIMAL128;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.regex.Pattern;
+
+import android.icu.util.MeasureUnit;
+
+/**
+ * @hide Only a subset of ICU is exposed in Android
+ */
+public class UnitConverter {
+    private BigDecimal conversionRate;
+    private BigDecimal offset;
+
+    /**
+     * Constructor of `UnitConverter`.
+     * NOTE:
+     * - source and target must be under the same category
+     * - e.g. meter to mile --> both of them are length units.
+     *
+     * @param source          represents the source unit.
+     * @param target          represents the target unit.
+     * @param conversionRates contains all the needed conversion rates.
+     */
+    public UnitConverter(MeasureUnitImpl source, MeasureUnitImpl target, ConversionRates conversionRates) {
+        Convertibility convertibility = extractConvertibility(source, target, conversionRates);
+        assert (convertibility == Convertibility.CONVERTIBLE || convertibility == Convertibility.RECIPROCAL);
+
+        Factor sourceToBase = conversionRates.getFactorToBase(source);
+        Factor targetToBase = conversionRates.getFactorToBase(target);
+
+        if (convertibility == Convertibility.CONVERTIBLE) {
+            this.conversionRate = sourceToBase.divide(targetToBase).getConversionRate();
+        } else {
+            this.conversionRate = sourceToBase.multiply(targetToBase).getConversionRate();
+        }
+
+        // calculate the offset
+        this.offset = conversionRates.getOffset(source, target, sourceToBase, targetToBase, convertibility);
+    }
+
+    static public Convertibility extractConvertibility(MeasureUnitImpl source, MeasureUnitImpl target, ConversionRates conversionRates) {
+        ArrayList<SingleUnitImpl> sourceSingleUnits = conversionRates.extractBaseUnits(source);
+        ArrayList<SingleUnitImpl> targetSingleUnits = conversionRates.extractBaseUnits(target);
+
+        HashMap<String, Integer> dimensionMap = new HashMap<>();
+
+        insertInMap(dimensionMap, sourceSingleUnits, 1);
+        insertInMap(dimensionMap, targetSingleUnits, -1);
+
+        if (areDimensionsZeroes(dimensionMap)) return Convertibility.CONVERTIBLE;
+
+        insertInMap(dimensionMap, targetSingleUnits, 2);
+        if (areDimensionsZeroes(dimensionMap)) return Convertibility.RECIPROCAL;
+
+        return Convertibility.UNCONVERTIBLE;
+    }
+
+    /**
+     * Helpers
+     */
+    private static void insertInMap(HashMap<String, Integer> dimensionMap, ArrayList<SingleUnitImpl> singleUnits, int multiplier) {
+        for (SingleUnitImpl singleUnit :
+                singleUnits) {
+            if (dimensionMap.containsKey(singleUnit.getSimpleUnit())) {
+                dimensionMap.put(singleUnit.getSimpleUnit(), dimensionMap.get(singleUnit.getSimpleUnit()) + singleUnit.getDimensionality() * multiplier);
+            } else {
+                dimensionMap.put(singleUnit.getSimpleUnit(), singleUnit.getDimensionality() * multiplier);
+            }
+        }
+    }
+
+    private static boolean areDimensionsZeroes(HashMap<String, Integer> dimensionMap) {
+        for (Integer value :
+                dimensionMap.values()) {
+            if (!value.equals(0)) return false;
+        }
+
+        return true;
+    }
+
+    public BigDecimal convert(BigDecimal inputValue) {
+        return inputValue.multiply(this.conversionRate).add(offset);
+    }
+
+    public BigDecimal convertInverse(BigDecimal inputValue) {
+        return inputValue.subtract(offset).divide(this.conversionRate, DECIMAL128);
+    }
+
+    /**
+     * @hide Only a subset of ICU is exposed in Android
+     */
+    public enum Convertibility {
+        CONVERTIBLE,
+        RECIPROCAL,
+        UNCONVERTIBLE,
+    }
+
+    // TODO: improve documentation and Constant implementation
+
+    /**
+     * Responsible for all the Factor operation
+     * NOTE:
+     * This class is immutable
+     */
+    static class Factor {
+        private BigDecimal factorNum;
+        private BigDecimal factorDen;
+        /* FACTOR CONSTANTS */
+        private int
+                CONSTANT_FT2M = 0,    // ft2m stands for foot to meter.
+                CONSTANT_PI = 0,      // PI
+                CONSTANT_GRAVITY = 0, // Gravity
+                CONSTANT_G = 0,
+                CONSTANT_GAL_IMP2M3 = 0, // Gallon imp to m3
+                CONSTANT_LB2KG = 0;      // Pound to Kilogram
+
+
+        /**
+         * Creates Empty Factor
+         */
+        public Factor() {
+            this.factorNum = BigDecimal.valueOf(1);
+            this.factorDen = BigDecimal.valueOf(1);
+        }
+
+        public static Factor processFactor(String factor) {
+            assert (!factor.isEmpty());
+
+            // Remove all spaces in the factor
+            factor = factor.replaceAll("\\s+", "");
+
+            String[] fractions = factor.split("/");
+            assert (fractions.length == 1 || fractions.length == 2);
+
+            if (fractions.length == 1) {
+                return processFactorWithoutDivision(fractions[0]);
+            }
+
+            Factor num = processFactorWithoutDivision(fractions[0]);
+            Factor den = processFactorWithoutDivision(fractions[1]);
+            return num.divide(den);
+        }
+
+        private static Factor processFactorWithoutDivision(String factorWithoutDivision) {
+            Factor result = new Factor();
+            for (String poweredEntity :
+                    factorWithoutDivision.split(Pattern.quote("*"))) {
+                result.addPoweredEntity(poweredEntity);
+            }
+
+            return result;
+        }
+
+        /**
+         * Copy this <code>Factor</code>.
+         */
+        protected Factor copy() {
+            Factor result = new Factor();
+            result.factorNum = this.factorNum;
+            result.factorDen = this.factorDen;
+
+            result.CONSTANT_FT2M = this.CONSTANT_FT2M;
+            result.CONSTANT_PI = this.CONSTANT_PI;
+            result.CONSTANT_GRAVITY = this.CONSTANT_GRAVITY;
+            result.CONSTANT_G = this.CONSTANT_G;
+            result.CONSTANT_GAL_IMP2M3 = this.CONSTANT_GAL_IMP2M3;
+            result.CONSTANT_LB2KG = this.CONSTANT_LB2KG;
+
+            return result;
+        }
+
+        /**
+         * Returns a single `BigDecimal` that represent the conversion rate after substituting all the constants.
+         */
+        public BigDecimal getConversionRate() {
+            Factor resultCollector = this.copy();
+
+            resultCollector.substitute(new BigDecimal("0.3048"), this.CONSTANT_FT2M);
+            resultCollector.substitute(new BigDecimal("411557987.0").divide(new BigDecimal("131002976.0"), DECIMAL128), this.CONSTANT_PI);
+            resultCollector.substitute(new BigDecimal("9.80665"), this.CONSTANT_GRAVITY);
+            resultCollector.substitute(new BigDecimal("6.67408E-11"), this.CONSTANT_G);
+            resultCollector.substitute(new BigDecimal("0.00454609"), this.CONSTANT_GAL_IMP2M3);
+            resultCollector.substitute(new BigDecimal("0.45359237"), this.CONSTANT_LB2KG);
+
+            return resultCollector.factorNum.divide(resultCollector.factorDen, DECIMAL128);
+        }
+
+        private void substitute(BigDecimal value, int power) {
+            if (power == 0) return;
+
+            BigDecimal absPoweredValue = value.pow(Math.abs(power), DECIMAL128);
+            if (power > 0) {
+                this.factorNum = this.factorNum.multiply(absPoweredValue);
+            } else {
+                this.factorDen = this.factorDen.multiply(absPoweredValue);
+            }
+        }
+
+        public Factor applySiPrefix(MeasureUnit.SIPrefix siPrefix) {
+            Factor result = this.copy();
+            if (siPrefix == MeasureUnit.SIPrefix.ONE) {
+                return result;
+            }
+
+            BigDecimal siApplied = BigDecimal.valueOf(Math.pow(10.0, Math.abs(siPrefix.getPower())));
+
+            if (siPrefix.getPower() < 0) {
+                result.factorDen = this.factorDen.multiply(siApplied);
+                return result;
+            }
+
+            result.factorNum = this.factorNum.multiply(siApplied);
+            return result;
+        }
+
+        public Factor power(int power) {
+            Factor result = new Factor();
+            if (power == 0) return result;
+            if (power > 0) {
+                result.factorNum = this.factorNum.pow(power);
+                result.factorDen = this.factorDen.pow(power);
+            } else {
+                result.factorNum = this.factorDen.pow(power * -1);
+                result.factorDen = this.factorNum.pow(power * -1);
+            }
+
+            result.CONSTANT_FT2M = this.CONSTANT_FT2M * power;
+            result.CONSTANT_PI = this.CONSTANT_PI * power;
+            result.CONSTANT_GRAVITY = this.CONSTANT_GRAVITY * power;
+            result.CONSTANT_G = this.CONSTANT_G * power;
+            result.CONSTANT_GAL_IMP2M3 = this.CONSTANT_GAL_IMP2M3 * power;
+            result.CONSTANT_LB2KG = this.CONSTANT_LB2KG * power;
+
+            return result;
+        }
+
+        public Factor divide(Factor other) {
+            Factor result = new Factor();
+            result.factorNum = this.factorNum.multiply(other.factorDen);
+            result.factorDen = this.factorDen.multiply(other.factorNum);
+
+            result.CONSTANT_FT2M = this.CONSTANT_FT2M - other.CONSTANT_FT2M;
+            result.CONSTANT_PI = this.CONSTANT_PI - other.CONSTANT_PI;
+            result.CONSTANT_GRAVITY = this.CONSTANT_GRAVITY - other.CONSTANT_GRAVITY;
+            result.CONSTANT_G = this.CONSTANT_G - other.CONSTANT_G;
+            result.CONSTANT_GAL_IMP2M3 = this.CONSTANT_GAL_IMP2M3 - other.CONSTANT_GAL_IMP2M3;
+            result.CONSTANT_LB2KG = this.CONSTANT_LB2KG - other.CONSTANT_LB2KG;
+
+            return result;
+        }
+
+        public Factor multiply(Factor other) {
+            Factor result = new Factor();
+            result.factorNum = this.factorNum.multiply(other.factorNum);
+            result.factorDen = this.factorDen.multiply(other.factorDen);
+
+            result.CONSTANT_FT2M = this.CONSTANT_FT2M + other.CONSTANT_FT2M;
+            result.CONSTANT_PI = this.CONSTANT_PI + other.CONSTANT_PI;
+            result.CONSTANT_GRAVITY = this.CONSTANT_GRAVITY + other.CONSTANT_GRAVITY;
+            result.CONSTANT_G = this.CONSTANT_G + other.CONSTANT_G;
+            result.CONSTANT_GAL_IMP2M3 = this.CONSTANT_GAL_IMP2M3 + other.CONSTANT_GAL_IMP2M3;
+            result.CONSTANT_LB2KG = this.CONSTANT_LB2KG + other.CONSTANT_LB2KG;
+
+            return result;
+        }
+
+        /**
+         * Adds Entity with power or not. For example, `12 ^ 3` or `12`.
+         *
+         * @param poweredEntity
+         */
+        private void addPoweredEntity(String poweredEntity) {
+            String[] entities = poweredEntity.split(Pattern.quote("^"));
+            assert (entities.length == 1 || entities.length == 2);
+
+            int power = entities.length == 2 ? Integer.parseInt(entities[1]) : 1;
+            this.addEntity(entities[0], power);
+        }
+
+        private void addEntity(String entity, int power) {
+            if ("ft_to_m".equals(entity)) {
+                this.CONSTANT_FT2M += power;
+            } else if ("ft2_to_m2".equals(entity)) {
+                this.CONSTANT_FT2M += 2 * power;
+            } else if ("ft3_to_m3".equals(entity)) {
+                this.CONSTANT_FT2M += 3 * power;
+            } else if ("in3_to_m3".equals(entity)) {
+                this.CONSTANT_FT2M += 3 * power;
+                this.factorDen = this.factorDen.multiply(BigDecimal.valueOf(Math.pow(12, 3)));
+            } else if ("gal_to_m3".equals(entity)) {
+                this.factorNum = this.factorNum.multiply(BigDecimal.valueOf(231));
+                this.CONSTANT_FT2M += 3 * power;
+                this.factorDen = this.factorDen.multiply(BigDecimal.valueOf(12 * 12 * 12));
+            } else if ("gal_imp_to_m3".equals(entity)) {
+                this.CONSTANT_GAL_IMP2M3 += power;
+            } else if ("G".equals(entity)) {
+                this.CONSTANT_G += power;
+            } else if ("gravity".equals(entity)) {
+                this.CONSTANT_GRAVITY += power;
+            } else if ("lb_to_kg".equals(entity)) {
+                this.CONSTANT_LB2KG += power;
+            } else if ("PI".equals(entity)) {
+                this.CONSTANT_PI += power;
+            } else {
+                BigDecimal decimalEntity = new BigDecimal(entity).pow(power, DECIMAL128);
+                this.factorNum = this.factorNum.multiply(decimalEntity);
+            }
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "UnitConverter [conversionRate=" + conversionRate + ", offset=" + offset + "]";
+    }
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/units/UnitPreferences.java b/android_icu4j/src/main/java/android/icu/impl/units/UnitPreferences.java
new file mode 100644
index 0000000..c8deed7
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/impl/units/UnitPreferences.java
@@ -0,0 +1,218 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package android.icu.impl.units;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import android.icu.impl.ICUData;
+import android.icu.impl.ICUResourceBundle;
+import android.icu.impl.UResource;
+import android.icu.util.UResourceBundle;
+
+/**
+ * @hide Only a subset of ICU is exposed in Android
+ */
+public class UnitPreferences {
+
+    private HashMap<String, HashMap<String, UnitPreference[]>> mapToUnitPreferences = new HashMap<>();
+
+    public UnitPreferences() {
+        // Read unit preferences
+        ICUResourceBundle resource;
+        resource = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUData.ICU_BASE_NAME, "units");
+        UnitPreferencesSink sink = new UnitPreferencesSink();
+        resource.getAllItemsWithFallback(UnitsData.Constants.UNIT_PREFERENCE_TABLE_NAME, sink);
+        this.mapToUnitPreferences = sink.getMapToUnitPreferences();
+    }
+
+    public static String formMapKey(String category, String usage) {
+        return category + "++" + usage;
+    }
+
+    /**
+     * Extracts all the sub-usages from a usage including the default one in the end.
+     * The usages will be in order starting with the longest matching one.
+     * For example:
+     * if usage                :   "person-height-child"
+     * the function will return:   "person-height-child"
+     * "person-height"
+     * "person"
+     * "default"
+     *
+     * @param usage
+     * @return
+     */
+    private static String[] getAllUsages(String usage) {
+        ArrayList<String> result = new ArrayList<>();
+        result.add(usage);
+        for (int i = usage.length() - 1; i >= 0; --i) {
+            if (usage.charAt(i) == '-') {
+                result.add(usage.substring(0, i));
+            }
+        }
+
+        if (!usage.equals(UnitsData.Constants.DEFAULT_USAGE)) { // Do not add default usage twice.
+            result.add(UnitsData.Constants.DEFAULT_USAGE);
+        }
+        return result.toArray(new String[0]);
+    }
+
+    public UnitPreference[] getPreferencesFor(String category, String usage, String region) {
+        String[] subUsages = getAllUsages(usage);
+        UnitPreference[] result = null;
+        for (String subUsage :
+                subUsages) {
+            result = getUnitPreferences(category, subUsage, region);
+            if (result != null) break;
+        }
+
+        assert (result != null) : "At least the category must be exist";
+        return result;
+    }
+
+    /**
+     * @param category
+     * @param usage
+     * @param region
+     * @return null if there is no entry associated to the category and usage. O.W. returns the corresponding UnitPreference[]
+     */
+    private UnitPreference[] getUnitPreferences(String category, String usage, String region) {
+        String key = formMapKey(category, usage);
+        if (this.mapToUnitPreferences.containsKey(key)) {
+            HashMap<String, UnitPreference[]> unitPreferencesMap = this.mapToUnitPreferences.get(key);
+            UnitPreference[] result =
+                    unitPreferencesMap.containsKey(region) ?
+                            unitPreferencesMap.get(region) :
+                            unitPreferencesMap.get(UnitsData.Constants.DEFAULT_REGION);
+
+            assert (result != null);
+            return result;
+        }
+
+        return null;
+    }
+
+    /**
+     * @hide Only a subset of ICU is exposed in Android
+     */
+    public static class UnitPreference {
+        private final String unit;
+        private final BigDecimal geq;
+        private final String skeleton;
+
+
+        public UnitPreference(String unit, String geq, String skeleton) {
+            this.unit = unit;
+            this.geq = new BigDecimal(geq);
+            this.skeleton = skeleton;
+        }
+
+        public String getUnit() {
+            return this.unit;
+        }
+
+        public BigDecimal getGeq() {
+            return geq;
+        }
+
+        public String getSkeleton() {
+            return skeleton;
+        }
+    }
+
+    /**
+     * @hide Only a subset of ICU is exposed in Android
+     */
+    public static class UnitPreferencesSink extends UResource.Sink {
+
+        private HashMap<String, HashMap<String, UnitPreference[]>> mapToUnitPreferences;
+
+        public UnitPreferencesSink() {
+            this.mapToUnitPreferences = new HashMap<>();
+        }
+
+        public HashMap<String, HashMap<String, UnitPreference[]>> getMapToUnitPreferences() {
+            return mapToUnitPreferences;
+        }
+
+        /**
+         * The unitPreferenceData structure (see icu4c/source/data/misc/units.txt) contains a
+         * hierarchy of category/usage/region, within which are a set of
+         * preferences. Hence three for-loops and another loop for the
+         * preferences themselves.
+         */
+        @Override
+        public void put(UResource.Key key, UResource.Value value, boolean noFallback) {
+            assert (UnitsData.Constants.UNIT_PREFERENCE_TABLE_NAME.equals(key.toString()));
+
+            UResource.Table categoryTable = value.getTable();
+            for (int i = 0; categoryTable.getKeyAndValue(i, key, value); i++) {
+                assert (value.getType() == UResourceBundle.TABLE);
+
+                String category = key.toString();
+                UResource.Table usageTable = value.getTable();
+                for (int j = 0; usageTable.getKeyAndValue(j, key, value); j++) {
+                    assert (value.getType() == UResourceBundle.TABLE);
+
+                    String usage = key.toString();
+                    UResource.Table regionTable = value.getTable();
+                    for (int k = 0; regionTable.getKeyAndValue(k, key, value); k++) {
+                        assert (value.getType() == UResourceBundle.ARRAY);
+
+                        String region = key.toString();
+                        UResource.Array preferencesTable = value.getArray();
+                        ArrayList<UnitPreference> unitPreferences = new ArrayList<>();
+                        for (int l = 0; preferencesTable.getValue(l, value); l++) {
+                            assert (value.getType() == UResourceBundle.TABLE);
+
+                            UResource.Table singlePrefTable = value.getTable();
+                            // TODO collect the data
+                            String unit = null;
+                            String geq = "1";
+                            String skeleton = "";
+                            for (int m = 0; singlePrefTable.getKeyAndValue(m, key, value); m++) {
+                                assert (value.getType() == UResourceBundle.STRING);
+                                String keyString = key.toString();
+                                if ("unit".equals(keyString)) {
+                                    unit = value.getString();
+                                } else if ("geq".equals(keyString)) {
+                                    geq = value.getString();
+                                } else if ("skeleton".equals(keyString)) {
+                                    skeleton = value.getString();
+                                } else {
+                                    assert false : "key must be unit, geq or skeleton";
+                                }
+                            }
+                            assert (unit != null);
+                            unitPreferences.add(new UnitPreference(unit, geq, skeleton));
+                        }
+
+                        assert (!unitPreferences.isEmpty());
+                        this.insertUnitPreferences(
+                                category,
+                                usage,
+                                region,
+                                unitPreferences.toArray(new UnitPreference[0])
+                        );
+                    }
+                }
+            }
+        }
+
+        private void insertUnitPreferences(String category, String usage, String region, UnitPreference[] unitPreferences) {
+            String key = formMapKey(category, usage);
+            HashMap<String, UnitPreference[]> shouldInsert;
+            if (this.mapToUnitPreferences.containsKey(key)) {
+                shouldInsert = this.mapToUnitPreferences.get(key);
+            } else {
+                shouldInsert = new HashMap<>();
+                this.mapToUnitPreferences.put(key, shouldInsert);
+            }
+
+            shouldInsert.put(region, unitPreferences);
+        }
+    }
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/units/UnitsData.java b/android_icu4j/src/main/java/android/icu/impl/units/UnitsData.java
new file mode 100644
index 0000000..e637315
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/impl/units/UnitsData.java
@@ -0,0 +1,197 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+
+package android.icu.impl.units;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import android.icu.impl.ICUData;
+import android.icu.impl.ICUResourceBundle;
+import android.icu.impl.UResource;
+import android.icu.util.MeasureUnit;
+import android.icu.util.UResourceBundle;
+
+/**
+ * Responsible for all units data operations (retriever, analysis, extraction certain data ... etc.).
+ * @hide Only a subset of ICU is exposed in Android
+ */
+public class UnitsData {
+    private volatile static String[] simpleUnits = null;
+    private ConversionRates conversionRates;
+    private UnitPreferences unitPreferences;
+    /**
+     * Pairs of categories and the corresponding base units.
+     */
+    private Categories categories;
+
+    public UnitsData() {
+        this.conversionRates = new ConversionRates();
+        this.unitPreferences = new UnitPreferences();
+        this.categories = new Categories();
+    }
+
+    public static String[] getSimpleUnits() {
+        if (simpleUnits != null) {
+            return simpleUnits;
+        }
+
+        // Read simple units
+        ICUResourceBundle resource;
+        resource = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUData.ICU_BASE_NAME, "units");
+        SimpleUnitIdentifiersSink sink = new SimpleUnitIdentifiersSink();
+        resource.getAllItemsWithFallback("convertUnits", sink);
+        simpleUnits = sink.simpleUnits;
+
+        return simpleUnits;
+    }
+
+    public ConversionRates getConversionRates() {
+        return conversionRates;
+    }
+
+    public UnitPreferences getUnitPreferences() {
+        return unitPreferences;
+    }
+
+    /**
+     * @param measureUnit An instance of MeasureUnitImpl.
+     * @return the corresponding category.
+     */
+    public String getCategory(MeasureUnitImpl measureUnit) {
+        MeasureUnitImpl baseMeasureUnit
+                = this.getConversionRates().extractCompoundBaseUnit(measureUnit);
+        String baseUnitIdentifier = MeasureUnit.fromMeasureUnitImpl(baseMeasureUnit).getIdentifier();
+
+        if (baseUnitIdentifier.equals("meter-per-cubic-meter")) {
+            // TODO(CLDR-13787,hugovdm): special-casing the consumption-inverse
+            // case. Once CLDR-13787 is clarified, this should be generalised (or
+            // possibly removed):
+
+            return "consumption-inverse";
+        }
+
+        return this.categories.mapFromUnitToCategory.get(baseUnitIdentifier);
+    }
+
+    public UnitPreferences.UnitPreference[] getPreferencesFor(String category, String usage, String region) {
+        return this.unitPreferences.getPreferencesFor(category, usage, region);
+    }
+
+    /**
+     * @hide Only a subset of ICU is exposed in Android
+     */
+    public static class SimpleUnitIdentifiersSink extends UResource.Sink {
+        String[] simpleUnits = null;
+
+        @Override
+        public void put(UResource.Key key, UResource.Value value, boolean noFallback) {
+            assert key.toString().equals(Constants.CONVERSION_UNIT_TABLE_NAME);
+            assert value.getType() == UResourceBundle.TABLE;
+
+            UResource.Table simpleUnitsTable = value.getTable();
+            ArrayList<String> simpleUnits = new ArrayList<>();
+            for (int i = 0; simpleUnitsTable.getKeyAndValue(i, key, value); i++) {
+                if (key.toString().equals("kilogram")) {
+
+                    // For parsing, we use "gram", the prefixless metric mass unit. We
+                    // thus ignore the SI Base Unit of Mass: it exists due to being the
+                    // mass conversion target unit, but not needed for MeasureUnit
+                    // parsing.
+                    continue;
+                }
+
+                simpleUnits.add(key.toString());
+            }
+
+            this.simpleUnits = simpleUnits.toArray(new String[0]);
+        }
+    }
+
+    /**
+     * Contains all the needed constants.
+     * @hide Only a subset of ICU is exposed in Android
+     */
+    public static class Constants {
+        // Trie value offset for simple units, e.g. "gram", "nautical-mile",
+        // "fluid-ounce-imperial".
+        public static final int kSimpleUnitOffset = 512;
+
+        // Trie value offset for powers like "square-", "cubic-", "pow2-" etc.
+        public static final int kPowerPartOffset = 256;
+
+
+        // Trie value offset for "per-".
+        public final static int kInitialCompoundPartOffset = 192;
+
+        // Trie value offset for compound parts, e.g. "-per-", "-", "-and-".
+        public final static int kCompoundPartOffset = 128;
+
+        // Trie value offset for SI Prefixes. This is big enough to ensure we only
+        // insert positive integers into the trie.
+        public static final int kSIPrefixOffset = 64;
+
+
+        /* Tables Names*/
+        public static final String CONVERSION_UNIT_TABLE_NAME = "convertUnits";
+        public static final String UNIT_PREFERENCE_TABLE_NAME = "unitPreferenceData";
+        public static final String CATEGORY_TABLE_NAME = "unitQuantities";
+        public static final String DEFAULT_REGION = "001";
+        public static final String DEFAULT_USAGE = "default";
+    }
+
+    /**
+     * @hide Only a subset of ICU is exposed in Android
+     */
+    public static class Categories {
+
+        /**
+         * Contains the map between units in their base units into their category.
+         * For example:  meter-per-second --> "speed"
+         */
+        HashMap<String, String> mapFromUnitToCategory;
+
+
+        public Categories() {
+            // Read unit Categories
+            ICUResourceBundle resource;
+            resource = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUData.ICU_BASE_NAME, "units");
+            CategoriesSink sink = new CategoriesSink();
+            resource.getAllItemsWithFallback(Constants.CATEGORY_TABLE_NAME, sink);
+            this.mapFromUnitToCategory = sink.getMapFromUnitToCategory();
+        }
+    }
+
+    /**
+     * @hide Only a subset of ICU is exposed in Android
+     */
+    public static class CategoriesSink extends UResource.Sink {
+        /**
+         * Contains the map between units in their base units into their category.
+         * For example:  meter-per-second --> "speed"
+         */
+        HashMap<String, String> mapFromUnitToCategory;
+
+        public CategoriesSink() {
+            mapFromUnitToCategory = new HashMap<>();
+        }
+
+        @Override
+        public void put(UResource.Key key, UResource.Value value, boolean noFallback) {
+            assert (key.toString().equals(Constants.CATEGORY_TABLE_NAME));
+            assert (value.getType() == UResourceBundle.TABLE);
+
+            UResource.Table categoryTable = value.getTable();
+            for (int i = 0; categoryTable.getKeyAndValue(i, key, value); i++) {
+                assert (value.getType() == UResourceBundle.STRING);
+                mapFromUnitToCategory.put(key.toString(), value.toString());
+            }
+        }
+
+        public HashMap<String, String> getMapFromUnitToCategory() {
+            return mapFromUnitToCategory;
+        }
+    }
+}
diff --git a/android_icu4j/src/main/java/android/icu/impl/units/UnitsRouter.java b/android_icu4j/src/main/java/android/icu/impl/units/UnitsRouter.java
new file mode 100644
index 0000000..9a6a696
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/impl/units/UnitsRouter.java
@@ -0,0 +1,201 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package android.icu.impl.units;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+import android.icu.impl.IllegalIcuArgumentException;
+import android.icu.impl.number.MicroProps;
+import android.icu.number.Precision;
+import android.icu.util.Measure;
+import android.icu.util.MeasureUnit;
+
+/**
+ * `UnitsRouter` responsible for converting from a single unit (such as `meter` or `meter-per-second`) to
+ * one of the complex units based on the limits.
+ * For example:
+ * if the input is `meter` and the output as following
+ * {`foot+inch`, limit: 3.0}
+ * {`inch`     , limit: no value (-inf)}
+ * Thus means if the input in `meter` is greater than or equal to `3.0 feet`, the output will be in
+ * `foot+inch`, otherwise, the output will be in `inch`.
+ * <p>
+ * NOTE:
+ * the output units and the their limits MUST BE in order, for example, if the output units, from the
+ * previous example, are the following:
+ * {`inch`     , limit: no value (-inf)}
+ * {`foot+inch`, limit: 3.0}
+ * IN THIS CASE THE OUTPUT WILL BE ALWAYS IN `inch`.
+ * <p>
+ * NOTE:
+ * the output units  and their limits will be extracted from the units preferences database by knowing
+ * the followings:
+ * - input unit
+ * - locale
+ * - usage
+ * <p>
+ * DESIGN:
+ * `UnitRouter` uses internally `ComplexUnitConverter` in order to convert the input units to the
+ * desired complex units and to check the limit too.
+ * @hide Only a subset of ICU is exposed in Android
+ */
+public class UnitsRouter {
+    // List of possible output units. TODO: converterPreferences_ now also has
+    // this data available. Maybe drop outputUnits_ and have getOutputUnits
+    // construct a the list from data in converterPreferences_ instead?
+    private ArrayList<MeasureUnit> outputUnits_ = new ArrayList<>();
+    private ArrayList<ConverterPreference> converterPreferences_ = new ArrayList<>();
+
+    public UnitsRouter(MeasureUnitImpl inputUnitImpl, String region, String usage) {
+        // TODO: do we want to pass in ConversionRates and UnitPreferences instead?
+        // of loading in each UnitsRouter instance? (Or make global?)
+        UnitsData data = new UnitsData();
+
+        //MeasureUnitImpl inputUnitImpl = MeasureUnitImpl.forMeasureUnitMaybeCopy(inputUnit);
+        String category = data.getCategory(inputUnitImpl);
+        UnitPreferences.UnitPreference[] unitPreferences = data.getPreferencesFor(category, usage, region);
+
+        for (int i = 0; i < unitPreferences.length; ++i) {
+            UnitPreferences.UnitPreference preference = unitPreferences[i];
+
+            MeasureUnitImpl complexTargetUnitImpl =
+                    MeasureUnitImpl.UnitsParser.parseForIdentifier(preference.getUnit());
+
+            String precision = preference.getSkeleton();
+
+            // For now, we only have "precision-increment" in Units Preferences skeleton.
+            // Therefore, we check if the skeleton starts with "precision-increment" and force the program to
+            // fail otherwise.
+            // NOTE:
+            //  It is allowed to have an empty precision.
+            if (!precision.isEmpty() && !precision.startsWith("precision-increment")) {
+                throw new AssertionError("Only `precision-increment` is allowed");
+            }
+
+            outputUnits_.add(complexTargetUnitImpl.build());
+            converterPreferences_.add(new ConverterPreference(inputUnitImpl, complexTargetUnitImpl,
+                    preference.getGeq(), precision,
+                    data.getConversionRates()));
+        }
+    }
+
+    /** If micros.rounder is a BogusRounder, this function replaces it with a valid one. */
+    public RouteResult route(BigDecimal quantity, MicroProps micros) {
+        Precision rounder = micros == null ? null : micros.rounder;
+        ConverterPreference converterPreference = null;
+        for (ConverterPreference itr : converterPreferences_) {
+            converterPreference = itr;
+            if (converterPreference.converter.greaterThanOrEqual(quantity.abs(),
+                                                                 converterPreference.limit)) {
+                break;
+            }
+        }
+        assert converterPreference != null;
+        assert converterPreference.precision != null;
+
+        // Set up the rounder for this preference's precision
+        if (rounder != null && rounder instanceof Precision.BogusRounder) {
+            Precision.BogusRounder bogus = (Precision.BogusRounder)rounder;
+            if (converterPreference.precision.length() > 0) {
+                rounder = bogus.into(parseSkeletonToPrecision(converterPreference.precision));
+            } else {
+                // We use the same rounding mode as COMPACT notation: known to be a
+                // human-friendly rounding mode: integers, but add a decimal digit
+                // as needed to ensure we have at least 2 significant digits.
+                rounder = bogus.into(Precision.integer().withMinDigits(2));
+            }
+        }
+
+        if (micros != null) {
+            micros.rounder = rounder;
+        }
+        return new RouteResult(
+                converterPreference.converter.convert(quantity, rounder),
+                converterPreference.targetUnit
+        );
+    }
+
+    private static Precision parseSkeletonToPrecision(String precisionSkeleton) {
+        final String kSkeletonPrefix = "precision-increment/";
+        if (!precisionSkeleton.startsWith(kSkeletonPrefix)) {
+            throw new IllegalIcuArgumentException("precisionSkeleton is only precision-increment");
+        }
+
+        // TODO(icu-units#104): the C++ code uses a more sophisticated
+        // parseIncrementOption which supports "withMinFraction" - e.g.
+        // "precision-increment/0.5". Test with a unit preference that uses
+        // this, and fix Java.
+        String incrementValue = precisionSkeleton.substring(kSkeletonPrefix.length());
+        return Precision.increment(new BigDecimal(incrementValue));
+    }
+
+    /**
+     * Returns the list of possible output units, i.e. the full set of
+     * preferences, for the localized, usage-specific unit preferences.
+     * <p>
+     * The returned pointer should be valid for the lifetime of the
+     * UnitsRouter instance.
+     */
+    public List<MeasureUnit> getOutputUnits() {
+        return this.outputUnits_;
+    }
+
+    /**
+     * Contains the complex unit converter and the limit which representing the smallest value that the
+     * converter should accept. For example, if the converter is converting to `foot+inch` and the limit
+     * equals 3.0, thus means the converter should not convert to a value less than `3.0 feet`.
+     * <p>
+     * NOTE:
+     * if the limit doest not has a value `i.e. (std::numeric_limits<double>::lowest())`, this mean there
+     * is no limit for the converter.
+     * @hide Only a subset of ICU is exposed in Android
+     */
+    public static class ConverterPreference {
+        // The output unit for this ConverterPreference. This may be a MIXED unit -
+        // for example: "yard-and-foot-and-inch".
+        final MeasureUnitImpl targetUnit;
+        final ComplexUnitsConverter converter;
+        final BigDecimal limit;
+        final String precision;
+
+        // In case there is no limit, the limit will be -inf.
+        public ConverterPreference(MeasureUnitImpl source, MeasureUnitImpl targetUnit,
+                                   String precision, ConversionRates conversionRates) {
+            this(source, targetUnit, BigDecimal.valueOf(Double.MIN_VALUE), precision,
+                    conversionRates);
+        }
+
+        public ConverterPreference(MeasureUnitImpl source, MeasureUnitImpl targetUnit,
+                                   BigDecimal limit, String precision, ConversionRates conversionRates) {
+            this.converter = new ComplexUnitsConverter(source, targetUnit, conversionRates);
+            this.limit = limit;
+            this.precision = precision;
+            this.targetUnit = targetUnit;
+
+        }
+    }
+
+    /**
+     * @hide Only a subset of ICU is exposed in Android
+     */
+    public class RouteResult {
+        // A list of measures: a single measure for single units, multiple measures
+        // for mixed units.
+        //
+        // TODO(icu-units/icu#21): figure out the right mixed unit API.
+        public final List<Measure> measures;
+
+        // The output unit for this RouteResult. This may be a MIXED unit - for
+        // example: "yard-and-foot-and-inch", for which `measures` will have three
+        // elements.
+        public final MeasureUnitImpl outputUnit;
+
+        RouteResult(List<Measure> measures, MeasureUnitImpl outputUnit) {
+            this.measures = measures;
+            this.outputUnit = outputUnit;
+        }
+    }
+}
diff --git a/android_icu4j/src/main/java/android/icu/lang/CharSequences.java b/android_icu4j/src/main/java/android/icu/lang/CharSequences.java
index f8c6587..6ec0048 100644
--- a/android_icu4j/src/main/java/android/icu/lang/CharSequences.java
+++ b/android_icu4j/src/main/java/android/icu/lang/CharSequences.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
  * Copyright (C) 2010-2014, Google, International Business Machines Corporation *
diff --git a/android_icu4j/src/main/java/android/icu/lang/CharacterProperties.java b/android_icu4j/src/main/java/android/icu/lang/CharacterProperties.java
index b89743f..9e57d12 100644
--- a/android_icu4j/src/main/java/android/icu/lang/CharacterProperties.java
+++ b/android_icu4j/src/main/java/android/icu/lang/CharacterProperties.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 package android.icu.lang;
 
diff --git a/android_icu4j/src/main/java/android/icu/lang/UCharacter.java b/android_icu4j/src/main/java/android/icu/lang/UCharacter.java
index 7706939..1e32bc8 100644
--- a/android_icu4j/src/main/java/android/icu/lang/UCharacter.java
+++ b/android_icu4j/src/main/java/android/icu/lang/UCharacter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/lang/UCharacterCategory.java b/android_icu4j/src/main/java/android/icu/lang/UCharacterCategory.java
index 7f577b2..179ffed 100644
--- a/android_icu4j/src/main/java/android/icu/lang/UCharacterCategory.java
+++ b/android_icu4j/src/main/java/android/icu/lang/UCharacterCategory.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 1996-2004, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/lang/UCharacterDirection.java b/android_icu4j/src/main/java/android/icu/lang/UCharacterDirection.java
index 32ed17a..e2390e2 100644
--- a/android_icu4j/src/main/java/android/icu/lang/UCharacterDirection.java
+++ b/android_icu4j/src/main/java/android/icu/lang/UCharacterDirection.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2013, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/lang/UCharacterEnums.java b/android_icu4j/src/main/java/android/icu/lang/UCharacterEnums.java
index 1a8bfd2..3b6bdce 100644
--- a/android_icu4j/src/main/java/android/icu/lang/UCharacterEnums.java
+++ b/android_icu4j/src/main/java/android/icu/lang/UCharacterEnums.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2004-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/lang/UCharacterNameIterator.java b/android_icu4j/src/main/java/android/icu/lang/UCharacterNameIterator.java
index aba8d74..4e63dd9 100644
--- a/android_icu4j/src/main/java/android/icu/lang/UCharacterNameIterator.java
+++ b/android_icu4j/src/main/java/android/icu/lang/UCharacterNameIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 1996-2011, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/lang/UProperty.java b/android_icu4j/src/main/java/android/icu/lang/UProperty.java
index e00a70c..1be09f4 100644
--- a/android_icu4j/src/main/java/android/icu/lang/UProperty.java
+++ b/android_icu4j/src/main/java/android/icu/lang/UProperty.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/lang/UScript.java b/android_icu4j/src/main/java/android/icu/lang/UScript.java
index b089b46..a4ab1d9 100644
--- a/android_icu4j/src/main/java/android/icu/lang/UScript.java
+++ b/android_icu4j/src/main/java/android/icu/lang/UScript.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2016 International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/lang/UScriptRun.java b/android_icu4j/src/main/java/android/icu/lang/UScriptRun.java
index a499ea5..1c89c5c 100644
--- a/android_icu4j/src/main/java/android/icu/lang/UScriptRun.java
+++ b/android_icu4j/src/main/java/android/icu/lang/UScriptRun.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  *
diff --git a/android_icu4j/src/main/java/android/icu/math/BigDecimal.java b/android_icu4j/src/main/java/android/icu/math/BigDecimal.java
index b078e07..2eaf4a8 100644
--- a/android_icu4j/src/main/java/android/icu/math/BigDecimal.java
+++ b/android_icu4j/src/main/java/android/icu/math/BigDecimal.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /* Generated from 'BigDecimal.nrx' 8 Sep 2000 11:10:50 [v2.00] */
 /* Options: Binary Comments Crossref Format Java Logo Strictargs Strictcase Trace2 Verbose3 */
 package android.icu.math;
diff --git a/android_icu4j/src/main/java/android/icu/math/MathContext.java b/android_icu4j/src/main/java/android/icu/math/MathContext.java
index 70f70b1..30616f4 100644
--- a/android_icu4j/src/main/java/android/icu/math/MathContext.java
+++ b/android_icu4j/src/main/java/android/icu/math/MathContext.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /* Generated from 'MathContext.nrx' 8 Sep 2000 11:07:48 [v2.00] */
 /* Options: Binary Comments Crossref Format Java Logo Strictargs Strictcase Trace2 Verbose3 */
 package android.icu.math;
diff --git a/android_icu4j/src/main/java/android/icu/number/CompactNotation.java b/android_icu4j/src/main/java/android/icu/number/CompactNotation.java
index 02aa21e..0faca2b 100644
--- a/android_icu4j/src/main/java/android/icu/number/CompactNotation.java
+++ b/android_icu4j/src/main/java/android/icu/number/CompactNotation.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import java.util.HashMap;
@@ -168,4 +168,4 @@
             return micros;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/number/CurrencyPrecision.java b/android_icu4j/src/main/java/android/icu/number/CurrencyPrecision.java
index 654a69e..4564171 100644
--- a/android_icu4j/src/main/java/android/icu/number/CurrencyPrecision.java
+++ b/android_icu4j/src/main/java/android/icu/number/CurrencyPrecision.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import android.icu.util.Currency;
@@ -44,4 +44,4 @@
             throw new IllegalArgumentException("Currency must not be null");
         }
     };
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/number/FormattedNumber.java b/android_icu4j/src/main/java/android/icu/number/FormattedNumber.java
index 5c8b3e8..9537cc1 100644
--- a/android_icu4j/src/main/java/android/icu/number/FormattedNumber.java
+++ b/android_icu4j/src/main/java/android/icu/number/FormattedNumber.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import java.math.BigDecimal;
@@ -13,6 +13,7 @@
 import android.icu.text.ConstrainedFieldPosition;
 import android.icu.text.FormattedValue;
 import android.icu.text.PluralRules.IFixedDecimal;
+import android.icu.util.MeasureUnit;
 
 /**
  * The result of a number formatting operation. This class allows the result to be exported in several
@@ -25,10 +26,12 @@
 public class FormattedNumber implements FormattedValue {
     final FormattedStringBuilder string;
     final DecimalQuantity fq;
+    final MeasureUnit outputUnit;
 
-    FormattedNumber(FormattedStringBuilder nsb, DecimalQuantity fq) {
+    FormattedNumber(FormattedStringBuilder nsb, DecimalQuantity fq, MeasureUnit outputUnit) {
         this.string = nsb;
         this.fq = fq;
+        this.outputUnit = outputUnit;
     }
 
     /**
@@ -100,6 +103,21 @@
     }
 
     /**
+     * Gets the resolved output unit.
+     * <p>
+     * The output unit is dependent upon the localized preferences for the usage
+     * specified via NumberFormatterSettings.usage(), and may be a unit with
+     * MeasureUnit.Complexity.MIXED unit complexity (MeasureUnit.getComplexity()), such
+     * as "foot-and-inch" or "hour-and-minute-and-second".
+     *
+     * @return `MeasureUnit`.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public MeasureUnit getOutputUnit() {
+        return this.outputUnit;
+    }
+
+    /**
      * @deprecated This API is ICU internal only.
      * @hide draft / provisional / internal are hidden on Android
      */
@@ -107,4 +125,4 @@
     public IFixedDecimal getFixedDecimal() {
         return fq;
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/number/FormattedNumberRange.java b/android_icu4j/src/main/java/android/icu/number/FormattedNumberRange.java
index f908d5a..bae5b9b 100644
--- a/android_icu4j/src/main/java/android/icu/number/FormattedNumberRange.java
+++ b/android_icu4j/src/main/java/android/icu/number/FormattedNumberRange.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import java.io.IOException;
@@ -14,6 +14,7 @@
 import android.icu.number.NumberRangeFormatter.RangeIdentityResult;
 import android.icu.text.ConstrainedFieldPosition;
 import android.icu.text.FormattedValue;
+import android.icu.text.PluralRules.IFixedDecimal;
 import android.icu.util.ICUUncheckedIOException;
 
 /**
@@ -168,4 +169,22 @@
                 && quantity1.toBigDecimal().equals(_other.quantity1.toBigDecimal())
                 && quantity2.toBigDecimal().equals(_other.quantity2.toBigDecimal());
     }
+
+    /**
+     * @deprecated This API is ICU internal only.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    @Deprecated
+    public IFixedDecimal getFirstFixedDecimal() {
+        return quantity1;
+    }
+
+    /**
+     * @deprecated This API is ICU internal only.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    @Deprecated
+    public IFixedDecimal getSecondFixedDecimal() {
+        return quantity2;
+    }
 }
diff --git a/android_icu4j/src/main/java/android/icu/number/FractionPrecision.java b/android_icu4j/src/main/java/android/icu/number/FractionPrecision.java
index 9b301d9..ff4c28c 100644
--- a/android_icu4j/src/main/java/android/icu/number/FractionPrecision.java
+++ b/android_icu4j/src/main/java/android/icu/number/FractionPrecision.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import android.icu.impl.number.RoundingUtils;
@@ -74,4 +74,4 @@
                     + " (inclusive)");
         }
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/number/IntegerWidth.java b/android_icu4j/src/main/java/android/icu/number/IntegerWidth.java
index 9ff75ad..36d530e 100644
--- a/android_icu4j/src/main/java/android/icu/number/IntegerWidth.java
+++ b/android_icu4j/src/main/java/android/icu/number/IntegerWidth.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import android.icu.impl.number.RoundingUtils;
@@ -77,4 +77,4 @@
                     + " (inclusive)");
         }
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/number/LocalizedNumberFormatter.java b/android_icu4j/src/main/java/android/icu/number/LocalizedNumberFormatter.java
index 181831f..c290a27 100644
--- a/android_icu4j/src/main/java/android/icu/number/LocalizedNumberFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/number/LocalizedNumberFormatter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import java.math.BigInteger;
@@ -14,6 +14,7 @@
 import android.icu.impl.number.DecimalQuantity_DualStorageBCD;
 import android.icu.impl.number.LocalizedNumberFormatterAsFormat;
 import android.icu.impl.number.MacroProps;
+import android.icu.impl.number.MicroProps;
 import android.icu.math.BigDecimal;
 import android.icu.util.CurrencyAmount;
 import android.icu.util.Measure;
@@ -96,8 +97,8 @@
         DecimalQuantity fq = new DecimalQuantity_DualStorageBCD(input.getNumber());
         MeasureUnit unit = input.getUnit();
         FormattedStringBuilder string = new FormattedStringBuilder();
-        formatImpl(fq, unit, string);
-        return new FormattedNumber(string, fq);
+        MicroProps micros = formatImpl(fq, unit, string);
+        return new FormattedNumber(string, fq, micros.outputUnit);
     }
 
     /**
@@ -115,11 +116,13 @@
         return new LocalizedNumberFormatterAsFormat(this, resolve().loc);
     }
 
-    /** Helper method that creates a FormattedStringBuilder and formats. */
+    /**
+     *  Helper method that creates a FormattedStringBuilder and formats.
+     */
     private FormattedNumber format(DecimalQuantity fq) {
         FormattedStringBuilder string = new FormattedStringBuilder();
-        formatImpl(fq, string);
-        return new FormattedNumber(string, fq);
+        MicroProps micros = formatImpl(fq, string);
+        return new FormattedNumber(string, fq, micros.outputUnit);
     }
 
     /**
@@ -139,12 +142,11 @@
      * @hide draft / provisional / internal are hidden on Android
      */
     @Deprecated
-    public void formatImpl(DecimalQuantity fq, FormattedStringBuilder string) {
+    public MicroProps formatImpl(DecimalQuantity fq, FormattedStringBuilder string) {
         if (computeCompiled()) {
-            compiled.format(fq, string);
-        } else {
-            NumberFormatterImpl.formatStatic(resolve(), fq, string);
+            return compiled.format(fq, string);
         }
+        return NumberFormatterImpl.formatStatic(resolve(), fq, string);
     }
 
     /**
@@ -154,11 +156,11 @@
      * @hide draft / provisional / internal are hidden on Android
      */
     @Deprecated
-    public void formatImpl(DecimalQuantity fq, MeasureUnit unit, FormattedStringBuilder string) {
+    public MicroProps formatImpl(DecimalQuantity fq, MeasureUnit unit, FormattedStringBuilder string) {
         // Use this formatter if possible
         if (Objects.equals(resolve().unit, unit)) {
-            formatImpl(fq, string);
-            return;
+            return formatImpl(fq, string);
+
         }
         // This mechanism saves the previously used unit, so if the user calls this method with the
         // same unit multiple times in a row, they get a more efficient code path.
@@ -167,7 +169,7 @@
             withUnit = new LocalizedNumberFormatter(this, KEY_UNIT, unit);
             savedWithUnit = withUnit;
         }
-        withUnit.formatImpl(fq, string);
+        return withUnit.formatImpl(fq, string);
     }
 
     /**
@@ -214,4 +216,4 @@
     LocalizedNumberFormatter create(int key, Object value) {
         return new LocalizedNumberFormatter(this, key, value);
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/number/LocalizedNumberRangeFormatter.java b/android_icu4j/src/main/java/android/icu/number/LocalizedNumberRangeFormatter.java
index bb5b857..6873c03 100644
--- a/android_icu4j/src/main/java/android/icu/number/LocalizedNumberRangeFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/number/LocalizedNumberRangeFormatter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import android.icu.impl.number.DecimalQuantity;
diff --git a/android_icu4j/src/main/java/android/icu/number/Notation.java b/android_icu4j/src/main/java/android/icu/number/Notation.java
index cb7e963..1a3d5ca 100644
--- a/android_icu4j/src/main/java/android/icu/number/Notation.java
+++ b/android_icu4j/src/main/java/android/icu/number/Notation.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import android.icu.number.NumberFormatter.SignDisplay;
@@ -183,4 +183,4 @@
     public static SimpleNotation simple() {
         return SIMPLE;
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/number/NumberFormatter.java b/android_icu4j/src/main/java/android/icu/number/NumberFormatter.java
index 1b20071..92f2027 100644
--- a/android_icu4j/src/main/java/android/icu/number/NumberFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/number/NumberFormatter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import java.util.Locale;
diff --git a/android_icu4j/src/main/java/android/icu/number/NumberFormatterImpl.java b/android_icu4j/src/main/java/android/icu/number/NumberFormatterImpl.java
index 0ec562e..566f90a 100644
--- a/android_icu4j/src/main/java/android/icu/number/NumberFormatterImpl.java
+++ b/android_icu4j/src/main/java/android/icu/number/NumberFormatterImpl.java
@@ -1,9 +1,10 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import android.icu.impl.FormattedStringBuilder;
+import android.icu.impl.IllegalIcuArgumentException;
 import android.icu.impl.StandardPlural;
 import android.icu.impl.number.CompactData.CompactType;
 import android.icu.impl.number.ConstantAffixModifier;
@@ -11,9 +12,11 @@
 import android.icu.impl.number.DecimalQuantity_DualStorageBCD;
 import android.icu.impl.number.Grouper;
 import android.icu.impl.number.LongNameHandler;
+import android.icu.impl.number.LongNameMultiplexer;
 import android.icu.impl.number.MacroProps;
 import android.icu.impl.number.MicroProps;
 import android.icu.impl.number.MicroPropsGenerator;
+import android.icu.impl.number.MixedUnitLongNameHandler;
 import android.icu.impl.number.MultiplierFormatHandler;
 import android.icu.impl.number.MutablePatternModifier;
 import android.icu.impl.number.MutablePatternModifier.ImmutablePatternModifier;
@@ -21,6 +24,8 @@
 import android.icu.impl.number.PatternStringParser;
 import android.icu.impl.number.PatternStringParser.ParsedPatternInfo;
 import android.icu.impl.number.RoundingUtils;
+import android.icu.impl.number.UnitConversionHandler;
+import android.icu.impl.number.UsagePrefsHandler;
 import android.icu.number.NumberFormatter.DecimalSeparatorDisplay;
 import android.icu.number.NumberFormatter.GroupingStrategy;
 import android.icu.number.NumberFormatter.SignDisplay;
@@ -42,7 +47,9 @@
  */
 class NumberFormatterImpl {
 
-    /** Builds a "safe" MicroPropsGenerator, which is thread-safe and can be used repeatedly. */
+    /**
+     * Builds a "safe" MicroPropsGenerator, which is thread-safe and can be used repeatedly.
+     */
     public NumberFormatterImpl(MacroProps macros) {
         micros = new MicroProps(true);
         microPropsGenerator = macrosToMicroGenerator(macros, micros, true);
@@ -51,14 +58,14 @@
     /**
      * Builds and evaluates an "unsafe" MicroPropsGenerator, which is cheaper but can be used only once.
      */
-    public static int formatStatic(
+    public static MicroProps formatStatic(
             MacroProps macros,
             DecimalQuantity inValue,
             FormattedStringBuilder outString) {
         MicroProps micros = preProcessUnsafe(macros, inValue);
         int length = writeNumber(micros, inValue, outString, 0);
-        length += writeAffixes(micros, outString, 0, length);
-        return length;
+        writeAffixes(micros, outString, 0, length);
+        return micros;
     }
 
     /**
@@ -85,11 +92,11 @@
     /**
      * Evaluates the "safe" MicroPropsGenerator created by "fromMacros".
      */
-    public int format(DecimalQuantity inValue, FormattedStringBuilder outString) {
+    public MicroProps format(DecimalQuantity inValue, FormattedStringBuilder outString) {
         MicroProps micros = preProcess(inValue);
         int length = writeNumber(micros, inValue, outString, 0);
-        length += writeAffixes(micros, outString, 0, length);
-        return length;
+        writeAffixes(micros, outString, 0, length);
+        return micros;
     }
 
     /**
@@ -147,10 +154,8 @@
         return unit != null && "currency".equals(unit.getType());
     }
 
-    private static boolean unitIsNoUnit(MeasureUnit unit) {
-        // NOTE: In ICU4C, units cannot be null, and the default unit is a NoUnit.
-        // In ICU4J, return TRUE for a null unit from this method.
-        return unit == null || "none".equals(unit.getType());
+    private static boolean unitIsBaseUnit(MeasureUnit unit) {
+        return unit == null;
     }
 
     private static boolean unitIsPercent(MeasureUnit unit) {
@@ -182,9 +187,10 @@
 
         // Pre-compute a few values for efficiency.
         boolean isCurrency = unitIsCurrency(macros.unit);
-        boolean isNoUnit = unitIsNoUnit(macros.unit);
+        boolean isBaseUnit = unitIsBaseUnit(macros.unit);
         boolean isPercent = unitIsPercent(macros.unit);
         boolean isPermille = unitIsPermille(macros.unit);
+        boolean isCompactNotation = (macros.notation instanceof CompactNotation);
         boolean isAccounting = macros.sign == SignDisplay.ACCOUNTING
                 || macros.sign == SignDisplay.ACCOUNTING_ALWAYS
                 || macros.sign == SignDisplay.ACCOUNTING_EXCEPT_ZERO;
@@ -193,8 +199,21 @@
         if (macros.unitWidth != null) {
             unitWidth = macros.unitWidth;
         }
-        boolean isCldrUnit = !isCurrency && !isNoUnit &&
-            (unitWidth == UnitWidth.FULL_NAME || !(isPercent || isPermille));
+        // Use CLDR unit data for all MeasureUnits (not currency and not
+        // no-unit), except use the dedicated percent pattern for percent and
+        // permille. However, use the CLDR unit data for percent/permille if a
+        // long name was requested OR if compact notation is being used, since
+        // compact notation overrides the middle modifier (micros.modMiddle)
+        // normally used for the percent pattern.
+        boolean isCldrUnit = !isCurrency
+            && !isBaseUnit
+            && (unitWidth == UnitWidth.FULL_NAME
+                || !(isPercent || isPermille)
+                || isCompactNotation
+            );
+        boolean isMixedUnit = isCldrUnit && macros.unit.getType() == null &&
+                              macros.unit.getComplexity() == MeasureUnit.Complexity.MIXED;
+
         PluralRules rules = macros.rules;
 
         // Select the numbering system.
@@ -247,6 +266,20 @@
         /// START POPULATING THE DEFAULT MICROPROPS AND BUILDING THE MICROPROPS GENERATOR ///
         /////////////////////////////////////////////////////////////////////////////////////
 
+        // Unit Preferences and Conversions as our first step
+        UsagePrefsHandler usagePrefsHandler = null;
+        if (macros.usage != null) {
+            if (!isCldrUnit) {
+                throw new IllegalIcuArgumentException(
+                        "We only support \"usage\" when the input unit is specified, and is a CLDR Unit.");
+            }
+            chain = usagePrefsHandler = new UsagePrefsHandler(macros.loc, macros.unit, macros.usage, chain);
+        } else if (isMixedUnit) {
+            // TODO(icu-units#97): The input unit should be the largest unit, not the first unit, in the identifier.
+            MeasureUnit inputUnit = macros.unit.splitToSingleUnits().get(0);
+            chain = new UnitConversionHandler(inputUnit, macros.unit, chain);
+        }
+
         // Multiplier
         if (macros.scale != null) {
             chain = new MultiplierFormatHandler(macros.scale, chain);
@@ -255,10 +288,13 @@
         // Rounding strategy
         if (macros.precision != null) {
             micros.rounder = macros.precision;
-        } else if (macros.notation instanceof CompactNotation) {
+        } else if (isCompactNotation) {
             micros.rounder = Precision.COMPACT_STRATEGY;
         } else if (isCurrency) {
             micros.rounder = Precision.MONETARY_STANDARD;
+        } else if (macros.usage != null) {
+            // Bogus Precision - it will get set in the UsagePrefsHandler instead
+            micros.rounder = Precision.BOGUS_PRECISION;
         } else {
             micros.rounder = Precision.DEFAULT_MAX_FRAC_6;
         }
@@ -273,7 +309,7 @@
             micros.grouping = (Grouper) macros.grouping;
         } else if (macros.grouping instanceof GroupingStrategy) {
             micros.grouping = Grouper.forStrategy((GroupingStrategy) macros.grouping);
-        } else if (macros.notation instanceof CompactNotation) {
+        } else if (isCompactNotation) {
             // Compact notation uses minGrouping by default since ICU 59
             micros.grouping = Grouper.forStrategy(GroupingStrategy.MIN2);
         } else {
@@ -345,8 +381,33 @@
                 // Lazily create PluralRules
                 rules = PluralRules.forLocale(macros.loc);
             }
-            chain = LongNameHandler
-                    .forMeasureUnit(macros.loc, macros.unit, macros.perUnit, unitWidth, rules, chain);
+            PluralRules pluralRules = macros.rules != null ?
+                    macros.rules :
+                    PluralRules.forLocale(macros.loc);
+
+            if (macros.usage != null) {
+                assert usagePrefsHandler != null;
+                chain = LongNameMultiplexer.forMeasureUnits(
+                        macros.loc,
+                        usagePrefsHandler.getOutputUnits(),
+                        unitWidth,
+                        pluralRules,
+                        chain);
+            } else if (isMixedUnit) {
+                chain = MixedUnitLongNameHandler.forMeasureUnit(
+                        macros.loc,
+                        macros.unit,
+                        unitWidth,
+                        pluralRules,
+                        chain);
+            } else {
+                chain = LongNameHandler.forMeasureUnit(macros.loc,
+                        macros.unit,
+                        macros.perUnit,
+                        unitWidth,
+                        pluralRules,
+                        chain);
+            }
         } else if (isCurrency && unitWidth == UnitWidth.FULL_NAME) {
             if (rules == null) {
                 // Lazily create PluralRules
@@ -359,7 +420,7 @@
         }
 
         // Compact notation
-        if (macros.notation instanceof CompactNotation) {
+        if (isCompactNotation) {
             if (rules == null) {
                 // Lazily create PluralRules
                 rules = PluralRules.forLocale(macros.loc);
diff --git a/android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java b/android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java
index 99ddf9e..24d3af8 100644
--- a/android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java
+++ b/android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import java.math.RoundingMode;
@@ -44,7 +44,8 @@
     static final int KEY_SCALE = 13;
     static final int KEY_THRESHOLD = 14;
     static final int KEY_PER_UNIT = 15;
-    static final int KEY_MAX = 16;
+    static final int KEY_USAGE = 16;
+    static final int KEY_MAX = 17;
 
     private final NumberFormatterSettings<?> parent;
     private final int key;
@@ -120,15 +121,14 @@
      * NumberFormatter.with().unit(Currency.getInstance("USD"))
      * </pre>
      *
-     * Percent:
-     *
-     * <pre>
-     * NumberFormatter.with().unit(NoUnit.PERCENT)
-     * </pre>
-     *
      * <p>
      * See {@link #perUnit} for information on how to format strings like "5 meters per second".
      *
+     * <p>
+     * If the input usage is correctly set the output unit <b>will change</b>
+     * according to `usage`, `locale` and `unit` value.
+     * </p>
+     *
      * @param unit
      *            The unit to render.
      * @return The fluent chain.
@@ -211,7 +211,7 @@
      *
      * The default is HALF_EVEN. For more information on rounding mode, see the ICU userguide here:
      *
-     * http://userguide.icu-project.org/formatparse/numbers/rounding-modes
+     * https://unicode-org.github.io/icu/userguide/format_parse/numbers/rounding-modes
      *
      * @param roundingMode
      *            The rounding mode to use.
@@ -470,6 +470,61 @@
     }
 
     /**
+     * Specifies the usage for which numbers will be formatted ("person-height",
+     * "road", "rainfall", etc.)
+     *
+     * <p>
+     * When a `usage` is specified, the output unit will change depending on the
+     * `Locale` and the unit quantity. For example, formatting length
+     * measurements specified in meters:
+     *
+     * <pre>
+     * NumberFormatter.with().usage("person").unit(MeasureUnit.METER).locale(new ULocale("en-US"))
+     * </pre>
+     * <ul>
+     *   <li> When formatting 0.25, the output will be "10 inches".
+     *   <li> When formatting 1.50, the output will be "4 feet and 11 inches".
+     * </ul>
+     *
+     * <p>
+     * The input unit specified via unit() determines the type of measurement
+     * being formatted (e.g. "length" when the unit is "foot"). The usage
+     * requested will be looked for only within this category of measurement
+     * units.
+     *
+     * <p>
+     * The output unit can be found via FormattedNumber.getOutputUnit().
+     *
+     * <p>
+     * If the usage has multiple parts (e.g. "land-agriculture-grain") and does
+     * not match a known usage preference, the last part will be dropped
+     * repeatedly until a match is found (e.g. trying "land-agriculture", then
+     * "land"). If a match is still not found, usage will fall back to
+     * "default".
+     *
+     * <p>
+     * Setting usage to an empty string clears the usage (disables usage-based
+     * localized formatting).
+     *
+     * <p>
+     * Setting a usage string but not a correct input unit will result in an
+     * U_ILLEGAL_ARGUMENT_ERROR.
+     *
+     * <p>
+     * When using usage, specifying rounding or precision is unnecessary.
+     * Specifying a precision in some manner will override the default
+     * formatting.
+     *
+     * @param usage A usage parameter from the units resource.
+     * @return The fluent chain
+     * @throws IllegalArgumentException in case of Setting a usage string but not a correct input unit.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public T usage(String usage) {
+        return create(KEY_USAGE, usage);
+    }
+
+    /**
      * Internal method to set a starting macros.
      *
      * @deprecated ICU 60 This API is ICU internal only.
@@ -534,86 +589,67 @@
         // of a MacroProps object at each step.
         // TODO: Remove the reference to the parent after the macros are resolved?
         MacroProps macros = new MacroProps();
+        // Bitmap: 1 if seen; 0 if unseen
+        long seen = 0;
         NumberFormatterSettings<?> current = this;
         while (current != null) {
+            long keyBitmask = (1L << current.key);
+            if (0 != (seen & keyBitmask)) {
+                current = current.parent;
+                continue;
+            }
+            seen |= keyBitmask;
             switch (current.key) {
             case KEY_MACROS:
                 macros.fallback((MacroProps) current.value);
                 break;
             case KEY_LOCALE:
-                if (macros.loc == null) {
-                    macros.loc = (ULocale) current.value;
-                }
+                macros.loc = (ULocale) current.value;
                 break;
             case KEY_NOTATION:
-                if (macros.notation == null) {
-                    macros.notation = (Notation) current.value;
-                }
+                macros.notation = (Notation) current.value;
                 break;
             case KEY_UNIT:
-                if (macros.unit == null) {
-                    macros.unit = (MeasureUnit) current.value;
-                }
+                macros.unit = (MeasureUnit) current.value;
                 break;
             case KEY_PRECISION:
-                if (macros.precision == null) {
-                    macros.precision = (Precision) current.value;
-                }
+                macros.precision = (Precision) current.value;
                 break;
             case KEY_ROUNDING_MODE:
-                if (macros.roundingMode == null) {
-                    macros.roundingMode = (RoundingMode) current.value;
-                }
+                macros.roundingMode = (RoundingMode) current.value;
                 break;
             case KEY_GROUPING:
-                if (macros.grouping == null) {
-                    macros.grouping = /* (Object) */ current.value;
-                }
+                macros.grouping = /* (Object) */ current.value;
                 break;
             case KEY_PADDER:
-                if (macros.padder == null) {
-                    macros.padder = (Padder) current.value;
-                }
+                macros.padder = (Padder) current.value;
                 break;
             case KEY_INTEGER:
-                if (macros.integerWidth == null) {
-                    macros.integerWidth = (IntegerWidth) current.value;
-                }
+                macros.integerWidth = (IntegerWidth) current.value;
                 break;
             case KEY_SYMBOLS:
-                if (macros.symbols == null) {
-                    macros.symbols = /* (Object) */ current.value;
-                }
+                macros.symbols = /* (Object) */ current.value;
                 break;
             case KEY_UNIT_WIDTH:
-                if (macros.unitWidth == null) {
-                    macros.unitWidth = (UnitWidth) current.value;
-                }
+                macros.unitWidth = (UnitWidth) current.value;
                 break;
             case KEY_SIGN:
-                if (macros.sign == null) {
-                    macros.sign = (SignDisplay) current.value;
-                }
+                macros.sign = (SignDisplay) current.value;
                 break;
             case KEY_DECIMAL:
-                if (macros.decimal == null) {
-                    macros.decimal = (DecimalSeparatorDisplay) current.value;
-                }
+                macros.decimal = (DecimalSeparatorDisplay) current.value;
                 break;
             case KEY_SCALE:
-                if (macros.scale == null) {
-                    macros.scale = (Scale) current.value;
-                }
+                macros.scale = (Scale) current.value;
                 break;
             case KEY_THRESHOLD:
-                if (macros.threshold == null) {
-                    macros.threshold = (Long) current.value;
-                }
+                macros.threshold = (Long) current.value;
                 break;
             case KEY_PER_UNIT:
-                if (macros.perUnit == null) {
-                    macros.perUnit = (MeasureUnit) current.value;
-                }
+                macros.perUnit = (MeasureUnit) current.value;
+                break;
+            case KEY_USAGE:
+                macros.usage = (String) current.value;
                 break;
             default:
                 throw new AssertionError("Unknown key: " + current.key);
diff --git a/android_icu4j/src/main/java/android/icu/number/NumberPropertyMapper.java b/android_icu4j/src/main/java/android/icu/number/NumberPropertyMapper.java
index f76e71d..343ea32 100644
--- a/android_icu4j/src/main/java/android/icu/number/NumberPropertyMapper.java
+++ b/android_icu4j/src/main/java/android/icu/number/NumberPropertyMapper.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import java.math.BigDecimal;
diff --git a/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatter.java b/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatter.java
index 57944d8..3f690a9 100644
--- a/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import java.util.Locale;
diff --git a/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatterImpl.java b/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatterImpl.java
index 906dd92..1cb5ddd 100644
--- a/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatterImpl.java
+++ b/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatterImpl.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import java.util.MissingResourceException;
@@ -149,7 +149,7 @@
         getNumberRangeData(macros.loc, nsName, this);
 
         // TODO: Get locale from PluralRules instead?
-        fPluralRanges = new StandardPluralRanges(macros.loc);
+        fPluralRanges = StandardPluralRanges.forLocale(macros.loc);
     }
 
     public FormattedNumberRange format(DecimalQuantity quantity1, DecimalQuantity quantity2, boolean equalBeforeRounding) {
diff --git a/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatterSettings.java b/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatterSettings.java
index af85bb5..226e75f 100644
--- a/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatterSettings.java
+++ b/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatterSettings.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import android.icu.impl.number.range.RangeMacroProps;
diff --git a/android_icu4j/src/main/java/android/icu/number/NumberSkeletonImpl.java b/android_icu4j/src/main/java/android/icu/number/NumberSkeletonImpl.java
index 8dfb9ec..2d7640d 100644
--- a/android_icu4j/src/main/java/android/icu/number/NumberSkeletonImpl.java
+++ b/android_icu4j/src/main/java/android/icu/number/NumberSkeletonImpl.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import java.math.BigDecimal;
@@ -13,6 +13,8 @@
 import android.icu.impl.StringSegment;
 import android.icu.impl.number.MacroProps;
 import android.icu.impl.number.RoundingUtils;
+import android.icu.impl.units.MeasureUnitImpl;
+import android.icu.impl.units.SingleUnitImpl;
 import android.icu.number.NumberFormatter.DecimalSeparatorDisplay;
 import android.icu.number.NumberFormatter.GroupingStrategy;
 import android.icu.number.NumberFormatter.SignDisplay;
@@ -34,10 +36,12 @@
  */
 class NumberSkeletonImpl {
 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    // NOTE: For an example of how to add a new stem to the number skeleton parser, see: //
-    // http://bugs.icu-project.org/trac/changeset/41193                                  //
-    ///////////////////////////////////////////////////////////////////////////////////////
+    //////////////////////////////////////////////////////////////////////////////////////////
+    // NOTE: For examples of how to add a new stem to the number skeleton parser, see:      //
+    // https://github.com/unicode-org/icu/commit/a2a7982216b2348070dc71093775ac7195793d73   //
+    // and                                                                                  //
+    // https://github.com/unicode-org/icu/commit/6fe86f3934a8a5701034f648a8f7c5087e84aa28   //
+    //////////////////////////////////////////////////////////////////////////////////////////
 
     /**
      * While parsing a skeleton, this enum records what type of option we expect to find next.
@@ -55,6 +59,7 @@
         STATE_MEASURE_UNIT,
         STATE_PER_MEASURE_UNIT,
         STATE_IDENTIFIER_UNIT,
+        STATE_UNIT_USAGE,
         STATE_CURRENCY_UNIT,
         STATE_INTEGER_WIDTH,
         STATE_NUMBERING_SYSTEM,
@@ -119,6 +124,7 @@
         STEM_MEASURE_UNIT,
         STEM_PER_MEASURE_UNIT,
         STEM_UNIT,
+        STEM_UNIT_USAGE,
         STEM_CURRENCY,
         STEM_INTEGER_WIDTH,
         STEM_NUMBERING_SYSTEM,
@@ -194,6 +200,7 @@
         b.add("measure-unit", StemEnum.STEM_MEASURE_UNIT.ordinal());
         b.add("per-measure-unit", StemEnum.STEM_PER_MEASURE_UNIT.ordinal());
         b.add("unit", StemEnum.STEM_UNIT.ordinal());
+        b.add("usage", StemEnum.STEM_UNIT_USAGE.ordinal());
         b.add("currency", StemEnum.STEM_CURRENCY.ordinal());
         b.add("integer-width", StemEnum.STEM_INTEGER_WIDTH.ordinal());
         b.add("numbering-system", StemEnum.STEM_NUMBERING_SYSTEM.ordinal());
@@ -614,6 +621,8 @@
                 case STATE_INCREMENT_PRECISION:
                 case STATE_MEASURE_UNIT:
                 case STATE_PER_MEASURE_UNIT:
+                case STATE_IDENTIFIER_UNIT:
+                case STATE_UNIT_USAGE:
                 case STATE_CURRENCY_UNIT:
                 case STATE_INTEGER_WIDTH:
                 case STATE_NUMBERING_SYSTEM:
@@ -654,7 +663,7 @@
             BlueprintHelpers.parseScientificStem(segment, macros);
             return ParseState.STATE_NULL;
         case '0':
-            checkNull(macros.notation, segment);
+            checkNull(macros.integerWidth, segment);
             BlueprintHelpers.parseIntegerStem(segment, macros);
             return ParseState.STATE_NULL;
         }
@@ -779,6 +788,11 @@
             return ParseState.STATE_MEASURE_UNIT;
 
         case STEM_PER_MEASURE_UNIT:
+            // In C++, STEM_CURRENCY's checks mark perUnit as "seen". Here we do
+            // the inverse: checking that macros.unit is not set to a currency.
+            if (macros.unit instanceof Currency) {
+                throw new SkeletonSyntaxException("Duplicated setting", segment);
+            }
             checkNull(macros.perUnit, segment);
             return ParseState.STATE_PER_MEASURE_UNIT;
 
@@ -787,8 +801,13 @@
             checkNull(macros.perUnit, segment);
             return ParseState.STATE_IDENTIFIER_UNIT;
 
+        case STEM_UNIT_USAGE:
+            checkNull(macros.usage, segment);
+            return ParseState.STATE_UNIT_USAGE;
+
         case STEM_CURRENCY:
             checkNull(macros.unit, segment);
+            checkNull(macros.perUnit, segment);
             return ParseState.STATE_CURRENCY_UNIT;
 
         case STEM_INTEGER_WIDTH:
@@ -831,6 +850,9 @@
         case STATE_IDENTIFIER_UNIT:
             BlueprintHelpers.parseIdentifierUnitOption(segment, macros);
             return ParseState.STATE_NULL;
+        case STATE_UNIT_USAGE:
+            BlueprintHelpers.parseUnitUsageOption(segment, macros);
+            return ParseState.STATE_NULL;
         case STATE_INCREMENT_PRECISION:
             BlueprintHelpers.parseIncrementOption(segment, macros);
             return ParseState.STATE_NULL;
@@ -892,7 +914,7 @@
         if (macros.unit != null && GeneratorHelpers.unit(macros, sb)) {
             sb.append(' ');
         }
-        if (macros.perUnit != null && GeneratorHelpers.perUnit(macros, sb)) {
+        if (macros.usage != null && GeneratorHelpers.usage(macros, sb)) {
             sb.append(' ');
         }
         if (macros.precision != null && GeneratorHelpers.precision(macros, sb)) {
@@ -1011,6 +1033,7 @@
             sb.append(currency.getCurrencyCode());
         }
 
+        // "measure-unit/" is deprecated in favour of "unit/".
         private static void parseMeasureUnitOption(StringSegment segment, MacroProps macros) {
             // NOTE: The category (type) of the unit is guaranteed to be a valid subtag (alphanumeric)
             // http://unicode.org/reports/tr35/#Validity_Data
@@ -1033,12 +1056,7 @@
             throw new SkeletonSyntaxException("Unknown measure unit", segment);
         }
 
-        private static void generateMeasureUnitOption(MeasureUnit unit, StringBuilder sb) {
-            sb.append(unit.getType());
-            sb.append("-");
-            sb.append(unit.getSubtype());
-        }
-
+        // "per-measure-unit/" is deprecated in favour of "unit/".
         private static void parseMeasurePerUnitOption(StringSegment segment, MacroProps macros) {
             // A little bit of a hack: save the current unit (numerator), call the main measure unit
             // parsing code, put back the numerator unit, and put the new unit into per-unit.
@@ -1048,15 +1066,56 @@
             macros.unit = numerator;
         }
 
+        /**
+         * Parses unit identifiers like "meter-per-second" and "foot-and-inch", as
+         * specified via a "unit/" concise skeleton.
+         */
         private static void parseIdentifierUnitOption(StringSegment segment, MacroProps macros) {
-            MeasureUnit[] units = MeasureUnit.parseCoreUnitIdentifier(segment.asString());
-            if (units == null) {
-                throw new SkeletonSyntaxException("Invalid core unit identifier", segment);
+            MeasureUnitImpl fullUnit;
+            try {
+                fullUnit = MeasureUnitImpl.forIdentifier(segment.asString());
+            } catch (IllegalArgumentException e) {
+                throw new SkeletonSyntaxException("Invalid unit stem", segment);
             }
-            macros.unit = units[0];
-            if (units.length == 2) {
-                macros.perUnit = units[1];
+
+            // Mixed units can only be represented by full MeasureUnit instances, so we
+            // don't split the denominator into macros.perUnit.
+            if (fullUnit.getComplexity() == MeasureUnit.Complexity.MIXED) {
+                macros.unit = fullUnit.build();
+                return;
             }
+
+            // When we have a built-in unit (e.g. meter-per-second), we don't split it up
+            MeasureUnit testBuiltin = fullUnit.build();
+            if (testBuiltin.getType() != null) {
+                macros.unit = testBuiltin;
+                return;
+            }
+
+            // TODO(ICU-20941): Clean this up.
+            for (SingleUnitImpl subUnit : fullUnit.getSingleUnits()) {
+                if (subUnit.getDimensionality() > 0) {
+                    if (macros.unit == null) {
+                        macros.unit = subUnit.build();
+                    } else {
+                        macros.unit = macros.unit.product(subUnit.build());
+                    }
+                } else {
+                    // It's okay to mutate fullUnit, we're throwing it away after this:
+                    subUnit.setDimensionality(subUnit.getDimensionality() * -1);
+                    if (macros.perUnit == null) {
+                        macros.perUnit = subUnit.build();
+                    } else {
+                        macros.perUnit = macros.perUnit.product(subUnit.build());
+                    }
+                }
+            }
+        }
+
+        private static void parseUnitUsageOption(StringSegment segment, MacroProps macros) {
+            macros.usage = segment.asString();
+            // We do not do any validation of the usage string: it depends on the
+            // unitPreferenceData in the units resources.
         }
 
         private static void parseFractionStem(StringSegment segment, MacroProps macros) {
@@ -1433,39 +1492,39 @@
         }
 
         private static boolean unit(MacroProps macros, StringBuilder sb) {
-            if (macros.unit instanceof Currency) {
-                sb.append("currency/");
-                BlueprintHelpers.generateCurrencyOption((Currency) macros.unit, sb);
-                return true;
-            } else if (macros.unit instanceof NoUnit) {
-                if (macros.unit == NoUnit.PERCENT) {
-                    sb.append("percent");
-                    return true;
-                } else if (macros.unit == NoUnit.PERMILLE) {
-                    sb.append("permille");
-                    return true;
-                } else {
-                    assert macros.unit == NoUnit.BASE;
-                    // Default value is not shown in normalized form
-                    return false;
+            MeasureUnit unit = macros.unit;
+            if (macros.perUnit != null) {
+                if (macros.unit instanceof Currency || macros.perUnit instanceof Currency) {
+                    throw new UnsupportedOperationException(
+                        "Cannot generate number skeleton with currency unit and per-unit");
                 }
+                unit = unit.product(macros.perUnit.reciprocal());
+            }
+            if (unit instanceof Currency) {
+                sb.append("currency/");
+                BlueprintHelpers.generateCurrencyOption((Currency)unit, sb);
+                return true;
+            } else if (unit.equals(MeasureUnit.PERCENT)) {
+                sb.append("percent");
+                return true;
+            } else if (unit.equals(MeasureUnit.PERMILLE)) {
+                sb.append("permille");
+                return true;
             } else {
-                sb.append("measure-unit/");
-                BlueprintHelpers.generateMeasureUnitOption(macros.unit, sb);
+                sb.append("unit/");
+                sb.append(unit.getIdentifier());
                 return true;
             }
         }
 
-        private static boolean perUnit(MacroProps macros, StringBuilder sb) {
-            // Per-units are currently expected to be only MeasureUnits.
-            if (macros.perUnit instanceof Currency || macros.perUnit instanceof NoUnit) {
-                throw new UnsupportedOperationException(
-                        "Cannot generate number skeleton with per-unit that is not a standard measure unit");
-            } else {
-                sb.append("per-measure-unit/");
-                BlueprintHelpers.generateMeasureUnitOption(macros.perUnit, sb);
+        private static boolean usage(MacroProps macros, StringBuilder sb) {
+            if (macros.usage != null  && macros.usage.length() > 0) {
+                sb.append("usage/");
+                sb.append(macros.usage);
+
                 return true;
             }
+            return false;
         }
 
         private static boolean precision(MacroProps macros, StringBuilder sb) {
diff --git a/android_icu4j/src/main/java/android/icu/number/Precision.java b/android_icu4j/src/main/java/android/icu/number/Precision.java
index e0dd174..3f4e906 100644
--- a/android_icu4j/src/main/java/android/icu/number/Precision.java
+++ b/android_icu4j/src/main/java/android/icu/number/Precision.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import java.math.BigDecimal;
@@ -353,6 +353,13 @@
     // PACKAGE-PRIVATE APIS //
     //////////////////////////
 
+    /**
+     * @deprecated ICU internal only.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    @Deprecated
+    public static final BogusRounder BOGUS_PRECISION = new BogusRounder();
+
     static final InfiniteRounderImpl NONE = new InfiniteRounderImpl();
 
     static final FractionRounderImpl FIXED_FRAC_0 = new FractionRounderImpl(0, 0);
@@ -532,6 +539,56 @@
     // INTERNALS //
     ///////////////
 
+    /**
+     * An BogusRounder's MathContext into precision.
+     *
+     * @deprecated This API is ICU internal only.
+     * @hide Only a subset of ICU is exposed in Android
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    @Deprecated
+    public static class BogusRounder extends Precision {
+        /**
+         * Default constructor.
+         * @deprecated This API is ICU internal only.
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        @Deprecated
+        public BogusRounder() {
+        }
+
+        /**
+         * {@inheritDoc}
+         * @deprecated This API is ICU internal only.
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        @Override
+        @Deprecated
+        public void apply(DecimalQuantity value) {
+            throw new AssertionError("BogusRounder must not be applied");
+        }
+
+        @Override
+        BogusRounder createCopy() {
+            BogusRounder copy = new BogusRounder();
+            copy.mathContext = mathContext;
+            return copy;
+        }
+
+        /**
+         * Copies the BogusRounder's MathContext into precision.
+         *
+         * @deprecated This API is ICU internal only.
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        @Deprecated
+        public Precision into(Precision precision) {
+            Precision copy = precision.createCopy();
+            copy.mathContext = mathContext;
+            return copy;
+        }
+    }
+
     static class InfiniteRounderImpl extends Precision {
 
         public InfiniteRounderImpl() {
diff --git a/android_icu4j/src/main/java/android/icu/number/Scale.java b/android_icu4j/src/main/java/android/icu/number/Scale.java
index 28e116e..60ca6f4 100644
--- a/android_icu4j/src/main/java/android/icu/number/Scale.java
+++ b/android_icu4j/src/main/java/android/icu/number/Scale.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import java.math.BigDecimal;
diff --git a/android_icu4j/src/main/java/android/icu/number/ScientificNotation.java b/android_icu4j/src/main/java/android/icu/number/ScientificNotation.java
index 591703c..ff19242 100644
--- a/android_icu4j/src/main/java/android/icu/number/ScientificNotation.java
+++ b/android_icu4j/src/main/java/android/icu/number/ScientificNotation.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import java.text.Format.Field;
@@ -341,4 +341,4 @@
             return exponent == _other.exponent;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/number/SimpleNotation.java b/android_icu4j/src/main/java/android/icu/number/SimpleNotation.java
index c422681..2a250d3 100644
--- a/android_icu4j/src/main/java/android/icu/number/SimpleNotation.java
+++ b/android_icu4j/src/main/java/android/icu/number/SimpleNotation.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 /**
@@ -15,4 +15,4 @@
 public class SimpleNotation extends Notation {
     /* package-private */ SimpleNotation() {
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/number/SkeletonSyntaxException.java b/android_icu4j/src/main/java/android/icu/number/SkeletonSyntaxException.java
index b657f5b..0bfcc74 100644
--- a/android_icu4j/src/main/java/android/icu/number/SkeletonSyntaxException.java
+++ b/android_icu4j/src/main/java/android/icu/number/SkeletonSyntaxException.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 /**
diff --git a/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberFormatter.java b/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberFormatter.java
index 3ca7cfe..f551d00 100644
--- a/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberFormatter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import java.util.Locale;
@@ -61,4 +61,4 @@
     UnlocalizedNumberFormatter create(int key, Object value) {
         return new UnlocalizedNumberFormatter(this, key, value);
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberRangeFormatter.java b/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberRangeFormatter.java
index 08211a1..91d3e63 100644
--- a/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberRangeFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberRangeFormatter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.number;
 
 import java.util.Locale;
diff --git a/android_icu4j/src/main/java/android/icu/text/AlphabeticIndex.java b/android_icu4j/src/main/java/android/icu/text/AlphabeticIndex.java
index e2aecfb..207c1fd 100644
--- a/android_icu4j/src/main/java/android/icu/text/AlphabeticIndex.java
+++ b/android_icu4j/src/main/java/android/icu/text/AlphabeticIndex.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2016, Google Inc, International Business Machines Corporation
diff --git a/android_icu4j/src/main/java/android/icu/text/AnyTransliterator.java b/android_icu4j/src/main/java/android/icu/text/AnyTransliterator.java
index bebe45a..934b03b 100644
--- a/android_icu4j/src/main/java/android/icu/text/AnyTransliterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/AnyTransliterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************
 * Copyright (c) 2002-2014, International Business Machines Corporation
diff --git a/android_icu4j/src/main/java/android/icu/text/ArabicShaping.java b/android_icu4j/src/main/java/android/icu/text/ArabicShaping.java
index 920a125..339234e 100644
--- a/android_icu4j/src/main/java/android/icu/text/ArabicShaping.java
+++ b/android_icu4j/src/main/java/android/icu/text/ArabicShaping.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2012, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/ArabicShapingException.java b/android_icu4j/src/main/java/android/icu/text/ArabicShapingException.java
index 98529ea..cb7b8d7 100644
--- a/android_icu4j/src/main/java/android/icu/text/ArabicShapingException.java
+++ b/android_icu4j/src/main/java/android/icu/text/ArabicShapingException.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  *   Copyright (C) 2001-2008, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/Bidi.java b/android_icu4j/src/main/java/android/icu/text/Bidi.java
index 52643e3..a6319a7 100644
--- a/android_icu4j/src/main/java/android/icu/text/Bidi.java
+++ b/android_icu4j/src/main/java/android/icu/text/Bidi.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2016, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/BidiClassifier.java b/android_icu4j/src/main/java/android/icu/text/BidiClassifier.java
index 8189893..4e49007 100644
--- a/android_icu4j/src/main/java/android/icu/text/BidiClassifier.java
+++ b/android_icu4j/src/main/java/android/icu/text/BidiClassifier.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2009, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/BidiLine.java b/android_icu4j/src/main/java/android/icu/text/BidiLine.java
index 061c787..e07b223 100644
--- a/android_icu4j/src/main/java/android/icu/text/BidiLine.java
+++ b/android_icu4j/src/main/java/android/icu/text/BidiLine.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/BidiRun.java b/android_icu4j/src/main/java/android/icu/text/BidiRun.java
index b28c859..4d6ac86 100644
--- a/android_icu4j/src/main/java/android/icu/text/BidiRun.java
+++ b/android_icu4j/src/main/java/android/icu/text/BidiRun.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2016, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/BidiTransform.java b/android_icu4j/src/main/java/android/icu/text/BidiTransform.java
index 92fe88b..01f19ca 100644
--- a/android_icu4j/src/main/java/android/icu/text/BidiTransform.java
+++ b/android_icu4j/src/main/java/android/icu/text/BidiTransform.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 package android.icu.text;
 
diff --git a/android_icu4j/src/main/java/android/icu/text/BidiWriter.java b/android_icu4j/src/main/java/android/icu/text/BidiWriter.java
index ea08854..2d80df2 100644
--- a/android_icu4j/src/main/java/android/icu/text/BidiWriter.java
+++ b/android_icu4j/src/main/java/android/icu/text/BidiWriter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2010, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/BreakIterator.java b/android_icu4j/src/main/java/android/icu/text/BreakIterator.java
index 6799ceb..6b2e80a 100644
--- a/android_icu4j/src/main/java/android/icu/text/BreakIterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/BreakIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/BreakIteratorFactory.java b/android_icu4j/src/main/java/android/icu/text/BreakIteratorFactory.java
index fb80659..8971dfc 100644
--- a/android_icu4j/src/main/java/android/icu/text/BreakIteratorFactory.java
+++ b/android_icu4j/src/main/java/android/icu/text/BreakIteratorFactory.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/BreakTransliterator.java b/android_icu4j/src/main/java/android/icu/text/BreakTransliterator.java
index 431642d..be562ad 100644
--- a/android_icu4j/src/main/java/android/icu/text/BreakTransliterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/BreakTransliterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/BurmeseBreakEngine.java b/android_icu4j/src/main/java/android/icu/text/BurmeseBreakEngine.java
index 1fdc103..f52f7e8 100644
--- a/android_icu4j/src/main/java/android/icu/text/BurmeseBreakEngine.java
+++ b/android_icu4j/src/main/java/android/icu/text/BurmeseBreakEngine.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/text/BytesDictionaryMatcher.java b/android_icu4j/src/main/java/android/icu/text/BytesDictionaryMatcher.java
index 1d6dc75..91ed2d3 100644
--- a/android_icu4j/src/main/java/android/icu/text/BytesDictionaryMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/text/BytesDictionaryMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/text/CanonicalIterator.java b/android_icu4j/src/main/java/android/icu/text/CanonicalIterator.java
index 7bf027c..3f20563 100644
--- a/android_icu4j/src/main/java/android/icu/text/CanonicalIterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/CanonicalIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/CaseFoldTransliterator.java b/android_icu4j/src/main/java/android/icu/text/CaseFoldTransliterator.java
index 6149bd1..b980e94 100644
--- a/android_icu4j/src/main/java/android/icu/text/CaseFoldTransliterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/CaseFoldTransliterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2011, Google, International Business Machines Corporation
diff --git a/android_icu4j/src/main/java/android/icu/text/CaseMap.java b/android_icu4j/src/main/java/android/icu/text/CaseMap.java
index 28fd3dc..9060c18 100644
--- a/android_icu4j/src/main/java/android/icu/text/CaseMap.java
+++ b/android_icu4j/src/main/java/android/icu/text/CaseMap.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.text;
 
 import java.util.Locale;
diff --git a/android_icu4j/src/main/java/android/icu/text/CharsDictionaryMatcher.java b/android_icu4j/src/main/java/android/icu/text/CharsDictionaryMatcher.java
index dd39cad..cc50062 100644
--- a/android_icu4j/src/main/java/android/icu/text/CharsDictionaryMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/text/CharsDictionaryMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/text/CharsetDetector.java b/android_icu4j/src/main/java/android/icu/text/CharsetDetector.java
index e5a0b2a..e761d35 100644
--- a/android_icu4j/src/main/java/android/icu/text/CharsetDetector.java
+++ b/android_icu4j/src/main/java/android/icu/text/CharsetDetector.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2005-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/CharsetMatch.java b/android_icu4j/src/main/java/android/icu/text/CharsetMatch.java
index f9c09a5..6a46072 100644
--- a/android_icu4j/src/main/java/android/icu/text/CharsetMatch.java
+++ b/android_icu4j/src/main/java/android/icu/text/CharsetMatch.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2005-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/CharsetRecog_2022.java b/android_icu4j/src/main/java/android/icu/text/CharsetRecog_2022.java
index 3feacae..98ff2bb 100644
--- a/android_icu4j/src/main/java/android/icu/text/CharsetRecog_2022.java
+++ b/android_icu4j/src/main/java/android/icu/text/CharsetRecog_2022.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2005 - 2012, International Business Machines Corporation and  *
diff --git a/android_icu4j/src/main/java/android/icu/text/CharsetRecog_UTF8.java b/android_icu4j/src/main/java/android/icu/text/CharsetRecog_UTF8.java
index fb65059..bf5e17c 100644
--- a/android_icu4j/src/main/java/android/icu/text/CharsetRecog_UTF8.java
+++ b/android_icu4j/src/main/java/android/icu/text/CharsetRecog_UTF8.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2005 - 2014, International Business Machines Corporation and  *
diff --git a/android_icu4j/src/main/java/android/icu/text/CharsetRecog_Unicode.java b/android_icu4j/src/main/java/android/icu/text/CharsetRecog_Unicode.java
index 2c9b866..0c605e0 100644
--- a/android_icu4j/src/main/java/android/icu/text/CharsetRecog_Unicode.java
+++ b/android_icu4j/src/main/java/android/icu/text/CharsetRecog_Unicode.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2013, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/CharsetRecog_mbcs.java b/android_icu4j/src/main/java/android/icu/text/CharsetRecog_mbcs.java
index e68eeca..b250c2c 100644
--- a/android_icu4j/src/main/java/android/icu/text/CharsetRecog_mbcs.java
+++ b/android_icu4j/src/main/java/android/icu/text/CharsetRecog_mbcs.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ****************************************************************************
  * Copyright (C) 2005-2012, International Business Machines Corporation and *
diff --git a/android_icu4j/src/main/java/android/icu/text/CharsetRecog_sbcs.java b/android_icu4j/src/main/java/android/icu/text/CharsetRecog_sbcs.java
index 29e60f2..bf39267 100644
--- a/android_icu4j/src/main/java/android/icu/text/CharsetRecog_sbcs.java
+++ b/android_icu4j/src/main/java/android/icu/text/CharsetRecog_sbcs.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ****************************************************************************
  * Copyright (C) 2005-2013, International Business Machines Corporation and *
diff --git a/android_icu4j/src/main/java/android/icu/text/CharsetRecognizer.java b/android_icu4j/src/main/java/android/icu/text/CharsetRecognizer.java
index 0bf08e2..e6a4220 100644
--- a/android_icu4j/src/main/java/android/icu/text/CharsetRecognizer.java
+++ b/android_icu4j/src/main/java/android/icu/text/CharsetRecognizer.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2005-2012, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/ChineseDateFormat.java b/android_icu4j/src/main/java/android/icu/text/ChineseDateFormat.java
index 5e8c05a..66ccb8d 100644
--- a/android_icu4j/src/main/java/android/icu/text/ChineseDateFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/ChineseDateFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*********************************************************************
  * Copyright (C) 2000-2014, International Business Machines Corporation and
  * others. All Rights Reserved.
diff --git a/android_icu4j/src/main/java/android/icu/text/ChineseDateFormatSymbols.java b/android_icu4j/src/main/java/android/icu/text/ChineseDateFormatSymbols.java
index f3255c0..57c83b7 100644
--- a/android_icu4j/src/main/java/android/icu/text/ChineseDateFormatSymbols.java
+++ b/android_icu4j/src/main/java/android/icu/text/ChineseDateFormatSymbols.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /****************************************************************************
  * Copyright (C) 2000-2014, International Business Machines Corporation and
  * others. All Rights Reserved.
diff --git a/android_icu4j/src/main/java/android/icu/text/CjkBreakEngine.java b/android_icu4j/src/main/java/android/icu/text/CjkBreakEngine.java
index f26fc77..6e5d328 100644
--- a/android_icu4j/src/main/java/android/icu/text/CjkBreakEngine.java
+++ b/android_icu4j/src/main/java/android/icu/text/CjkBreakEngine.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012-2016, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/text/CollationElementIterator.java b/android_icu4j/src/main/java/android/icu/text/CollationElementIterator.java
index 18c8015..47b01a0 100644
--- a/android_icu4j/src/main/java/android/icu/text/CollationElementIterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/CollationElementIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2016, International Business Machines Corporation and
@@ -56,7 +56,7 @@
  * can not be compared simply by using basic arithmetic operators,
  * e.g. &lt;, == or &gt;, further processing has to be done. Details
  * can be found in the ICU
- * <a href="http://userguide.icu-project.org/collation/architecture">
+ * <a href="https://unicode-org.github.io/icu/userguide/collation/architecture">
  * User Guide</a>. An example of using the CollationElementIterator
  * for collation ordering comparison is the class
  * {@link android.icu.text.StringSearch}.
diff --git a/android_icu4j/src/main/java/android/icu/text/CollationKey.java b/android_icu4j/src/main/java/android/icu/text/CollationKey.java
index 3161c0f..dea2abe 100644
--- a/android_icu4j/src/main/java/android/icu/text/CollationKey.java
+++ b/android_icu4j/src/main/java/android/icu/text/CollationKey.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2016, International Business Machines Corporation and
@@ -480,7 +480,7 @@
      * Using strings with U+FFFE may yield shorter sort keys.
      *
      * <p>For details about Sort Key Features see
-     * http://userguide.icu-project.org/collation/api#TOC-Sort-Key-Features
+     * https://unicode-org.github.io/icu/userguide/collation/api#sort-key-features
      *
      * <p>It is possible to merge multiple sort keys by consecutively merging
      * another one with the intermediate result.
diff --git a/android_icu4j/src/main/java/android/icu/text/Collator.java b/android_icu4j/src/main/java/android/icu/text/Collator.java
index 2759abb..dda667b 100644
--- a/android_icu4j/src/main/java/android/icu/text/Collator.java
+++ b/android_icu4j/src/main/java/android/icu/text/Collator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2016, International Business Machines Corporation and
@@ -65,7 +65,7 @@
 *     difference between large and small Kana. A tertiary difference is ignored
 *     when there is a primary or secondary difference anywhere in the strings.
 * <li>QUATERNARY strength: When punctuation is ignored
-*     (see <a href="http://userguide.icu-project.org/collation/concepts#TOC-Ignoring-Punctuation">
+*     (see <a href="https://unicode-org.github.io/icu/userguide/collation/concepts#ignoring-punctuation">
 *     Ignoring Punctuations in the User Guide</a>) at PRIMARY to TERTIARY
 *     strength, an additional strength level can
 *     be used to distinguish words with and without punctuation (for example,
@@ -96,7 +96,7 @@
 * a comparison or before getting a CollationKey.
 *
 * <p>For more information about the collation service see the
-* <a href="http://userguide.icu-project.org/collation">User Guide</a>.
+* <a href="https://unicode-org.github.io/icu/userguide/collation">User Guide</a>.
 *
 * <p>Examples of use
 * <pre>
@@ -169,7 +169,7 @@
     /**
      * <strong>[icu]</strong> Fourth level collator strength value.
      * When punctuation is ignored
-     * (see <a href="http://userguide.icu-project.org/collation/concepts#TOC-Ignoring-Punctuation">
+     * (see <a href="https://unicode-org.github.io/icu/userguide/collation/concepts#ignoring-punctuation">
      * Ignoring Punctuation in the User Guide</a>) at PRIMARY to TERTIARY
      * strength, an additional strength level can
      * be used to distinguish words with and without punctuation.
@@ -777,7 +777,7 @@
      * Starting with ICU 54, collation attributes can be specified via locale keywords as well,
      * in the old locale extension syntax ("el@colCaseFirst=upper")
      * or in language tag syntax ("el-u-kf-upper").
-     * See <a href="http://userguide.icu-project.org/collation/api">User Guide: Collation API</a>.
+     * See <a href="https://unicode-org.github.io/icu/userguide/collation/api">User Guide: Collation API</a>.
      *
      * @param locale the desired locale.
      * @return Collator for the desired locale if it is created successfully.
@@ -810,7 +810,7 @@
      * Starting with ICU 54, collation attributes can be specified via locale keywords as well,
      * in the old locale extension syntax ("el@colCaseFirst=upper", only with {@link ULocale})
      * or in language tag syntax ("el-u-kf-upper").
-     * See <a href="http://userguide.icu-project.org/collation/api">User Guide: Collation API</a>.
+     * See <a href="https://unicode-org.github.io/icu/userguide/collation/api">User Guide: Collation API</a>.
      *
      * @param locale the desired locale.
      * @return Collator for the desired locale if it is created successfully.
@@ -1017,7 +1017,7 @@
      * applications who wish to cache collators, or otherwise reuse
      * collators when possible.  The functional equivalent may change
      * over time.  For more information, please see the <a
-     * href="http://userguide.icu-project.org/locale#TOC-Locales-and-Services">
+     * href="https://unicode-org.github.io/icu/userguide/locale#locales-and-services">
      * Locales and Services</a> section of the ICU User Guide.
      * @param keyword a particular keyword as enumerated by
      * getKeywords.
diff --git a/android_icu4j/src/main/java/android/icu/text/CollatorServiceShim.java b/android_icu4j/src/main/java/android/icu/text/CollatorServiceShim.java
index c069978..74e299e 100644
--- a/android_icu4j/src/main/java/android/icu/text/CollatorServiceShim.java
+++ b/android_icu4j/src/main/java/android/icu/text/CollatorServiceShim.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2003-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/CompactDecimalFormat.java b/android_icu4j/src/main/java/android/icu/text/CompactDecimalFormat.java
index 690b241..82be12c 100644
--- a/android_icu4j/src/main/java/android/icu/text/CompactDecimalFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/CompactDecimalFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, Google, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/ComposedCharIter.java b/android_icu4j/src/main/java/android/icu/text/ComposedCharIter.java
index 40ba716..cae0299 100644
--- a/android_icu4j/src/main/java/android/icu/text/ComposedCharIter.java
+++ b/android_icu4j/src/main/java/android/icu/text/ComposedCharIter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/CompoundTransliterator.java b/android_icu4j/src/main/java/android/icu/text/CompoundTransliterator.java
index 856ec5a..fb85f8b 100644
--- a/android_icu4j/src/main/java/android/icu/text/CompoundTransliterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/CompoundTransliterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/ConstrainedFieldPosition.java b/android_icu4j/src/main/java/android/icu/text/ConstrainedFieldPosition.java
index 9b9ecfb..cb513a9 100644
--- a/android_icu4j/src/main/java/android/icu/text/ConstrainedFieldPosition.java
+++ b/android_icu4j/src/main/java/android/icu/text/ConstrainedFieldPosition.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.text;
 
 import java.text.Format.Field;
@@ -282,7 +282,9 @@
      */
     public void setState(Field field, Object value, int start, int limit) {
         // Check matchesField only as an assertion (debug build)
-        assert matchesField(field, value);
+        if (field != null) {
+            assert matchesField(field, value);
+        }
 
         fField = field;
         fValue = value;
diff --git a/android_icu4j/src/main/java/android/icu/text/CurrencyDisplayNames.java b/android_icu4j/src/main/java/android/icu/text/CurrencyDisplayNames.java
index dcdcb73..0f1dff0 100644
--- a/android_icu4j/src/main/java/android/icu/text/CurrencyDisplayNames.java
+++ b/android_icu4j/src/main/java/android/icu/text/CurrencyDisplayNames.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/CurrencyFormat.java b/android_icu4j/src/main/java/android/icu/text/CurrencyFormat.java
index 2726eea..f50d8e6 100644
--- a/android_icu4j/src/main/java/android/icu/text/CurrencyFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/CurrencyFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2004-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/CurrencyMetaInfo.java b/android_icu4j/src/main/java/android/icu/text/CurrencyMetaInfo.java
index f8aaedc..5c4f8fb 100644
--- a/android_icu4j/src/main/java/android/icu/text/CurrencyMetaInfo.java
+++ b/android_icu4j/src/main/java/android/icu/text/CurrencyMetaInfo.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2015, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/CurrencyPluralInfo.java b/android_icu4j/src/main/java/android/icu/text/CurrencyPluralInfo.java
index 26a47d1..beeefb0 100644
--- a/android_icu4j/src/main/java/android/icu/text/CurrencyPluralInfo.java
+++ b/android_icu4j/src/main/java/android/icu/text/CurrencyPluralInfo.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/DateFormat.java b/android_icu4j/src/main/java/android/icu/text/DateFormat.java
index 62dd155..f814af0 100644
--- a/android_icu4j/src/main/java/android/icu/text/DateFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/DateFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *   Copyright (C) 1996-2016, International Business Machines
  *   Corporation and others.  All Rights Reserved.
@@ -2193,7 +2193,7 @@
             GregorianCalendar cal = new GregorianCalendar();
             CAL_FIELD_COUNT = cal.getFieldCount();
             CAL_FIELDS = new Field[CAL_FIELD_COUNT];
-            FIELD_NAME_MAP = new HashMap<String, Field>(CAL_FIELD_COUNT);
+            FIELD_NAME_MAP = new HashMap<>(CAL_FIELD_COUNT);
         }
 
         // Java fields -------------------
diff --git a/android_icu4j/src/main/java/android/icu/text/DateFormatSymbols.java b/android_icu4j/src/main/java/android/icu/text/DateFormatSymbols.java
index 53361e4..9f8b781 100644
--- a/android_icu4j/src/main/java/android/icu/text/DateFormatSymbols.java
+++ b/android_icu4j/src/main/java/android/icu/text/DateFormatSymbols.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/DateIntervalFormat.java b/android_icu4j/src/main/java/android/icu/text/DateIntervalFormat.java
index bc6f7d4..15a82d2 100644
--- a/android_icu4j/src/main/java/android/icu/text/DateIntervalFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/DateIntervalFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *   Copyright (C) 2008-2016, International Business Machines
 *   Corporation and others.  All Rights Reserved.
@@ -471,6 +471,10 @@
     private String fTimePattern = null;
     private String fDateTimeFormat = null;
 
+    /*
+     * Capitalization context, new in ICU 68
+     */
+    private DisplayContext fCapitalizationSetting = DisplayContext.CAPITALIZATION_NONE;
 
     /*
      * default constructor; private because we don't want anyone to use
@@ -704,6 +708,7 @@
         other.fDatePattern = fDatePattern;
         other.fTimePattern = fTimePattern;
         other.fDateTimeFormat = fDateTimeFormat;
+        other.fCapitalizationSetting = fCapitalizationSetting;
         return other;
     }
 
@@ -898,6 +903,10 @@
             throw new IllegalArgumentException("can not format on two different calendars");
         }
 
+        // Set up fDateFormat to handle the first or only part of the interval
+        // (override later for any second part).
+        fDateFormat.setContext(fCapitalizationSetting);
+
         // First, find the largest different calendar field.
         int field = -1; //init with an invalid value.
 
@@ -986,6 +995,8 @@
         }
         if ( intervalPattern.getSecondPart() != null ) {
             fDateFormat.applyPattern(intervalPattern.getSecondPart());
+            // No capitalization for second part of interval
+            fDateFormat.setContext(DisplayContext.CAPITALIZATION_NONE);
             fDateFormat.format(secondCal, appendTo, pos, attributes);
         }
         fDateFormat.applyPattern(originalPattern);
@@ -1023,6 +1034,8 @@
             if (pos.getEndIndex() > 0) {
                 pos = new FieldPosition(0);
             }
+            // No capitalization for second portion
+            fDateFormat.setContext(DisplayContext.CAPITALIZATION_NONE);
         }
     }
 
@@ -1077,6 +1090,8 @@
                 if (pos.getEndIndex() > 0) {
                     pos = new FieldPosition(0);
                 }
+                // No capitalization for second portion
+                fDateFormat.setContext(DisplayContext.CAPITALIZATION_NONE);
             }
 
             // restore full pattern
@@ -1209,7 +1224,7 @@
         if (fDateFormat != null) {
             fDateFormat.setTimeZone(zoneToSet);
         }
-        // fDateFormat has the master calendar for the DateIntervalFormat;
+        // fDateFormat has the primary calendar for the DateIntervalFormat;
         // fFromCalendar and fToCalendar are internal work clones of that calendar.
         if (fFromCalendar != null) {
             fFromCalendar.setTimeZone(zoneToSet);
@@ -1220,6 +1235,37 @@
     }
 
     /**
+     * <strong>[icu]</strong> Set a particular DisplayContext value in the formatter,
+     * such as CAPITALIZATION_FOR_STANDALONE. This causes the formatted
+     * result to be capitalized appropriately for the context in which
+     * it is intended to be used, considering both the locale and the
+     * type of field at the beginning of the formatted result.
+     *
+     * @param context The DisplayContext value to set.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public void setContext(DisplayContext context)
+    {
+        if (context.type() == DisplayContext.Type.CAPITALIZATION) {
+            fCapitalizationSetting = context;
+        }
+    }
+
+    /**
+     * <strong>[icu]</strong> Get the formatter's DisplayContext value for the specified DisplayContext.Type,
+     * such as CAPITALIZATION.
+     *
+     * @param type the DisplayContext.Type whose value to return
+     * @return the current DisplayContext setting for the specified type
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public DisplayContext getContext(DisplayContext.Type type)
+    {
+        return (type == DisplayContext.Type.CAPITALIZATION && fCapitalizationSetting != null)?
+                fCapitalizationSetting: DisplayContext.CAPITALIZATION_NONE;
+    }
+
+    /**
      * Gets the date formatter
      * @return a copy of the date formatter associated with
      * this date interval formatter.
@@ -1305,7 +1351,7 @@
             // or by getInstance(String skeleton, .... )
             fSkeleton = dtpng.getSkeleton(fullPattern);
         }
-        String skeleton = fSkeleton;
+        String skeleton = normalizeHourMetacharacters(fSkeleton, locale);
 
         HashMap<String, PatternInfo> intervalPatterns = new HashMap<>();
 
@@ -1521,6 +1567,89 @@
     }
     */
 
+    private String normalizeHourMetacharacters(String skeleton, ULocale locale) {
+        StringBuilder result = new StringBuilder(skeleton);
+    
+        char hourMetachar = '\0';
+        int metacharStart = 0;
+        int metacharCount = 0;
+        for (int i = 0; i < result.length(); i++) {
+            char c = result.charAt(i);
+            if (c == 'j' || c == 'J' || c == 'C') {
+                if (hourMetachar == '\0') {
+                    hourMetachar = c;
+                    metacharStart = i;
+                }
+                ++metacharCount;
+            } else {
+                if (hourMetachar != '\0') {
+                    break;
+                }
+            }
+        }
+    
+        if (hourMetachar != '\0') {
+            char hourChar = 'H';
+            char dayPeriodChar = 'a';
+
+            DateTimePatternGenerator dtptng = DateTimePatternGenerator.getInstance(locale);
+            String convertedPattern = dtptng.getBestPattern(String.valueOf(hourMetachar));
+
+            // strip literal text from the pattern (so literal characters don't get mistaken for pattern
+            // characters-- such as the 'h' in 'Uhr' in German)
+            int firstQuotePos;
+            while ((firstQuotePos = convertedPattern.indexOf('\'')) != -1) {
+                int secondQuotePos = convertedPattern.indexOf('\'', firstQuotePos + 1);
+                if (secondQuotePos == -1) {
+                    secondQuotePos = firstQuotePos;
+                }
+                convertedPattern = convertedPattern.substring(0, firstQuotePos) + convertedPattern.substring(secondQuotePos + 1);
+            }
+    
+            if (convertedPattern.indexOf('h') != -1) {
+                hourChar = 'h';
+            } else if (convertedPattern.indexOf('K') != -1) {
+                hourChar = 'K';
+            } else if (convertedPattern.indexOf('k') != -1) {
+                hourChar = 'k';
+            }
+        
+            if (convertedPattern.indexOf('b') != -1) {
+                dayPeriodChar = 'b';
+            } else if (convertedPattern.indexOf('B') != -1) {
+                dayPeriodChar = 'B';
+            }
+        
+            if (hourChar == 'H' || hourChar == 'k') {
+                result.replace(metacharStart, metacharStart + metacharCount, String.valueOf(hourChar));
+            } else {
+                StringBuilder hourAndDayPeriod = new StringBuilder();
+                hourAndDayPeriod.append(hourChar);
+                switch (metacharCount) {
+                    case 1:
+                    case 2:
+                    default:
+                        hourAndDayPeriod.append(dayPeriodChar);
+                        break;
+                    case 3:
+                    case 4:
+                        for (int i = 0; i < 4; i++) {
+                            hourAndDayPeriod.append(dayPeriodChar);
+                        }
+                        break;
+                    case 5:
+                    case 6:
+                        for (int i = 0; i < 5; i++) {
+                            hourAndDayPeriod.append(dayPeriodChar);
+                        }
+                        break;
+                }
+                result.replace(metacharStart, metacharStart + metacharCount, hourAndDayPeriod.toString());
+            }
+        }
+        return result.toString();
+    }
+
     /*
      * get separated date and time skeleton from a combined skeleton.
      *
@@ -1557,11 +1686,10 @@
         int dCount = 0;
         int MCount = 0;
         int yCount = 0;
-        int hCount = 0;
-        int HCount = 0;
         int mCount = 0;
         int vCount = 0;
         int zCount = 0;
+        char hourChar = '\0';
 
         for (i = 0; i < skeleton.length(); ++i) {
             char ch = skeleton.charAt(i);
@@ -1601,17 +1729,14 @@
                 normalizedDateSkeleton.append(ch);
                 dateSkeleton.append(ch);
                 break;
-              case 'a':
-                // 'a' is implicitly handled
-                timeSkeleton.append(ch);
-                break;
               case 'h':
-                timeSkeleton.append(ch);
-                ++hCount;
-                break;
               case 'H':
+              case 'k':
+              case 'K':
                 timeSkeleton.append(ch);
-                ++HCount;
+                if (hourChar == '\0') {
+                    hourChar = ch;
+                }
                 break;
               case 'm':
                 timeSkeleton.append(ch);
@@ -1625,14 +1750,15 @@
                 ++vCount;
                 timeSkeleton.append(ch);
                 break;
+              case 'a':
               case 'V':
               case 'Z':
-              case 'k':
-              case 'K':
               case 'j':
               case 's':
               case 'S':
               case 'A':
+              case 'b':
+              case 'B':
                 timeSkeleton.append(ch);
                 normalizedTimeSkeleton.append(ch);
                 break;
@@ -1668,11 +1794,8 @@
         }
 
         /* generate normalized form for time */
-        if ( HCount != 0 ) {
-            normalizedTimeSkeleton.append('H');
-        }
-        else if ( hCount != 0 ) {
-            normalizedTimeSkeleton.append('h');
+        if ( hourChar != '\0' ) {
+            normalizedTimeSkeleton.append(hourChar);
         }
         if ( mCount != 0 ) {
             normalizedTimeSkeleton.append('m');
@@ -1831,6 +1954,14 @@
                  pattern = fInfo.getIntervalPattern(bestSkeleton,
                                                          Calendar.HOUR);
                  if ( pattern != null ) {
+                    boolean suppressDayPeriodField = fSkeleton.indexOf('J') != -1;
+                    String part1 = adjustFieldWidth(skeleton, bestSkeleton,
+                                       pattern.getFirstPart(), differenceInfo, suppressDayPeriodField);
+                    String part2 = adjustFieldWidth(skeleton, bestSkeleton,
+                                       pattern.getSecondPart(), differenceInfo, suppressDayPeriodField);
+                    pattern =  new PatternInfo(part1, part2,
+                                               pattern.firstDateInPtnIsLaterDate());
+                                               
                       // share
                       intervalPatterns.put(DateIntervalInfo.
                           CALENDAR_FIELD_TO_PATTERN_LETTER[field],
@@ -1868,10 +1999,11 @@
         }
         if ( pattern != null ) {
             if ( differenceInfo != 0 ) {
+                boolean suppressDayPeriodField = fSkeleton.indexOf('J') != -1;
                 String part1 = adjustFieldWidth(skeleton, bestSkeleton,
-                                   pattern.getFirstPart(), differenceInfo);
+                                   pattern.getFirstPart(), differenceInfo, suppressDayPeriodField);
                 String part2 = adjustFieldWidth(skeleton, bestSkeleton,
-                                   pattern.getSecondPart(), differenceInfo);
+                                   pattern.getSecondPart(), differenceInfo, suppressDayPeriodField);
                 pattern =  new PatternInfo(part1, part2,
                                            pattern.firstDateInPtnIsLaterDate());
             } else {
@@ -1910,12 +2042,14 @@
      * @param differenceInfo           the difference between 2 skeletons
      *                                 1 means only field width differs
      *                                 2 means v/z exchange
+     * @param suppressDayPeriodField   if true, remove the day period field from the result
      * @return the adjusted interval pattern
      */
     private static String adjustFieldWidth(String inputSkeleton,
                                     String bestMatchSkeleton,
                                     String bestMatchIntervalPattern,
-                                    int differenceInfo ) {
+                                    int differenceInfo,
+                                    boolean suppressDayPeriodField ) {
 
         if ( bestMatchIntervalPattern == null ) {
             return null; // the 2nd part could be null
@@ -1937,20 +2071,46 @@
         */
 
 
+        int PATTERN_CHAR_BASE = 0x41;
+
         DateIntervalInfo.parseSkeleton(inputSkeleton, inputSkeletonFieldWidth);
         DateIntervalInfo.parseSkeleton(bestMatchSkeleton, bestMatchSkeletonFieldWidth);
+        if (suppressDayPeriodField) {
+            if (bestMatchIntervalPattern.indexOf(" a") != -1) {
+                bestMatchIntervalPattern = findReplaceInPattern(bestMatchIntervalPattern, " a", "");
+            } else if (bestMatchIntervalPattern.indexOf("a ") != -1) {
+                bestMatchIntervalPattern = findReplaceInPattern(bestMatchIntervalPattern, "a ", "");
+            }
+            bestMatchIntervalPattern = findReplaceInPattern(bestMatchIntervalPattern, "a", "");
+        }
         if ( differenceInfo == 2 ) {
-            bestMatchIntervalPattern = bestMatchIntervalPattern.replace('v', 'z');
+            if (inputSkeleton.indexOf('z') != -1) {
+                bestMatchIntervalPattern = findReplaceInPattern(bestMatchIntervalPattern, "v", "z");
+            }
+            if (inputSkeleton.indexOf('K') != -1) {
+                bestMatchIntervalPattern = findReplaceInPattern(bestMatchIntervalPattern, "h", "K");
+            }
+            if (inputSkeleton.indexOf('k') != -1) {
+                bestMatchIntervalPattern = findReplaceInPattern(bestMatchIntervalPattern, "H", "k");
+            }
+            if (inputSkeleton.indexOf('b') != -1) {
+                bestMatchIntervalPattern = findReplaceInPattern(bestMatchIntervalPattern, "a", "b");
+            }
+        }
+        if (bestMatchIntervalPattern.indexOf('a') != -1 && bestMatchSkeletonFieldWidth['a' - PATTERN_CHAR_BASE] == 0) {
+            bestMatchSkeletonFieldWidth['a' - PATTERN_CHAR_BASE] = 1;
+        }
+        if (bestMatchIntervalPattern.indexOf('b') != -1 && bestMatchSkeletonFieldWidth['b' - PATTERN_CHAR_BASE] == 0) {
+            bestMatchSkeletonFieldWidth['b' - PATTERN_CHAR_BASE] = 1;
         }
 
         StringBuilder adjustedPtn = new StringBuilder(bestMatchIntervalPattern);
 
+
         boolean inQuote = false;
         char prevCh = 0;
         int count = 0;
 
-        int PATTERN_CHAR_BASE = 0x41;
-
         // loop through the pattern string character by character
         int adjustedPtnLength = adjustedPtn.length();
         for (int i = 0; i < adjustedPtnLength; ++i) {
@@ -2009,6 +2169,43 @@
         }
         return adjustedPtn.toString();
     }
+    
+    /**
+     * Does the same thing as String.replace(), except that it won't perform the
+     * substitution inside quoted literal text.
+     * @param targetString The string to perform the find-replace operation on.
+     * @param strToReplace The string to search for and replace in the target string.
+     * @param strToReplaceWith The string to substitute in wherever `stringToReplace` was found.
+     */
+    private static String findReplaceInPattern(String targetString,
+                                               String strToReplace,
+                                               String strToReplaceWith) {
+        int firstQuoteIndex = targetString.indexOf("\'");
+        if (firstQuoteIndex < 0) {
+            return targetString.replace(strToReplace, strToReplaceWith);
+        } else {
+            StringBuilder result = new StringBuilder();
+            String source = targetString;
+    
+            while (firstQuoteIndex >= 0) {
+                int secondQuoteIndex = source.indexOf("\'", firstQuoteIndex + 1);
+                if (secondQuoteIndex < 0) {
+                    secondQuoteIndex = source.length() - 1;
+                }
+        
+                String unquotedText = source.substring(0, firstQuoteIndex);
+                String quotedText = source.substring(firstQuoteIndex, secondQuoteIndex + 1);
+        
+                result.append(unquotedText.replace(strToReplace, strToReplaceWith));
+                result.append(quotedText);
+        
+                source = source.substring(secondQuoteIndex + 1);
+                firstQuoteIndex = source.indexOf("\'");
+            }
+            result.append(source.replace(strToReplace, strToReplaceWith));
+            return result.toString();
+        }
+  }
 
 
     /*
@@ -2065,6 +2262,10 @@
         throws IOException, ClassNotFoundException {
         stream.defaultReadObject();
         initializePattern(isDateIntervalInfoDefault ? LOCAL_PATTERN_CACHE : null);
+        // if deserialized from a release that didn't have fCapitalizationSetting, set it to default
+        if (fCapitalizationSetting == null) {
+            fCapitalizationSetting = DisplayContext.CAPITALIZATION_NONE;
+        }
     }
 
     /**
diff --git a/android_icu4j/src/main/java/android/icu/text/DateIntervalInfo.java b/android_icu4j/src/main/java/android/icu/text/DateIntervalInfo.java
index 7614818..ca87075 100644
--- a/android_icu4j/src/main/java/android/icu/text/DateIntervalInfo.java
+++ b/android_icu4j/src/main/java/android/icu/text/DateIntervalInfo.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2016, International Business Machines Corporation and
@@ -522,7 +522,7 @@
 
             // Check that the pattern letter is accepted
             char letter = patternLetter.charAt(0);
-            if (ACCEPTED_PATTERN_LETTERS.indexOf(letter) < 0) {
+            if (ACCEPTED_PATTERN_LETTERS.indexOf(letter) < 0 && letter != 'B') {
                 return null;
             }
 
@@ -530,6 +530,12 @@
             if (letter == CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.HOUR_OF_DAY].charAt(0)) {
                 patternLetter = CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.HOUR];
             }
+            
+            // Replace 'a' for 'B'
+            // TODO: Using AM/PM as a proxy for flexible day period isn’t really correct, but it’s close
+            if (letter == 'B') {
+                patternLetter = CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.AM_PM];
+            }
 
             return patternLetter;
         }
@@ -1059,20 +1065,25 @@
         final int STRING_NUMERIC_DIFFERENCE = 0x100;
         final int BASE = 0x41;
 
-        // TODO: this is a hack for 'v' and 'z'
-        // resource bundle only have time skeletons ending with 'v',
-        // but not for time skeletons ending with 'z'.
-        boolean replaceZWithV = false;
-        if ( inputSkeleton.indexOf('z') != -1 ) {
+        // hack for certain alternate characters
+        // resource bundles only have time skeletons containing 'v', 'h', and 'H'
+        // but not time skeletons containing 'z', 'K', or 'k'
+        // the skeleton may also include 'a' or 'b', which never occur in the resource bundles, so strip them out too
+        boolean replacedAlternateChars = false;
+        if ( inputSkeleton.indexOf('z') != -1 || inputSkeleton.indexOf('k') != -1 || inputSkeleton.indexOf('K') != -1 || inputSkeleton.indexOf('a') != -1 || inputSkeleton.indexOf('b') != -1 ) {
             inputSkeleton = inputSkeleton.replace('z', 'v');
-            replaceZWithV = true;
+            inputSkeleton = inputSkeleton.replace('k', 'H');
+            inputSkeleton = inputSkeleton.replace('K', 'h');
+            inputSkeleton = inputSkeleton.replace("a", "");
+            inputSkeleton = inputSkeleton.replace("b", "");
+            replacedAlternateChars = true;
         }
 
         parseSkeleton(inputSkeleton, inputSkeletonFieldWidth);
         int bestDistance = Integer.MAX_VALUE;
         // 0 means exact the same skeletons;
         // 1 means having the same field, but with different length,
-        // 2 means only z/v differs
+        // 2 means only z/v, h/K, or H/k differs
         // -1 means having different field.
         int bestFieldDifference = 0;
         for (String skeleton : fIntervalPatterns.keySet()) {
@@ -1113,7 +1124,7 @@
                 break;
             }
         }
-        if ( replaceZWithV && bestFieldDifference != -1 ) {
+        if ( replacedAlternateChars && bestFieldDifference != -1 ) {
             bestFieldDifference = 2;
         }
         return new DateIntervalFormat.BestMatchInfo(bestSkeleton, bestFieldDifference);
diff --git a/android_icu4j/src/main/java/android/icu/text/DateTimePatternGenerator.java b/android_icu4j/src/main/java/android/icu/text/DateTimePatternGenerator.java
index 497cfa2..c2ec9e6 100644
--- a/android_icu4j/src/main/java/android/icu/text/DateTimePatternGenerator.java
+++ b/android_icu4j/src/main/java/android/icu/text/DateTimePatternGenerator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
  * Copyright (C) 2006-2016, Google, International Business Machines Corporation
@@ -121,7 +121,7 @@
         }
 
         result = new DateTimePatternGenerator();
-        result.initData(uLocale);
+        result.initData(uLocale, false);
 
         // freeze and cache
         result.freeze();
@@ -129,16 +129,39 @@
         return result;
     }
 
-    private void initData(ULocale uLocale) {
+    /**
+     * Construct a non-frozen instance of DateTimePatternGenerator for a
+     * given locale that skips using the standard date and time patterns.
+     * Because this is different than the normal instance for the locale,
+     * it does not set or use the cache.
+     * @param uLocale The locale to pass.
+     * @deprecated This API is ICU internal only.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    @Deprecated
+    public static DateTimePatternGenerator getInstanceNoStdPat(ULocale uLocale) {
+        DateTimePatternGenerator result = new DateTimePatternGenerator();
+        result.initData(uLocale, true);
+        return result;
+    }
+
+    private void initData(ULocale uLocale, boolean skipStdPatterns) {
         // This instance of PatternInfo is required for calling some functions.  It is used for
         // passing additional information to the caller.  We won't use this extra information, but
         // we still need to make a temporary instance.
         PatternInfo returnInfo = new PatternInfo();
 
         addCanonicalItems();
-        addICUPatterns(returnInfo, uLocale);
+        if (!skipStdPatterns) { // skip to prevent circular dependency when used by Calendar
+            addICUPatterns(returnInfo, uLocale);
+        }
         addCLDRData(returnInfo, uLocale);
-        setDateTimeFromCalendar(uLocale);
+        if (!skipStdPatterns) { // also skip to prevent circular dependency from Calendar
+            setDateTimeFromCalendar(uLocale);
+        } else {
+            // instead, since from Calendar we do not care about dateTimePattern, use a fallback
+            setDateTimeFormat("{1} {0}");
+        }
         setDecimalSymbols(uLocale);
         getAllowedHourFormats(uLocale);
         fillInMissing();
diff --git a/android_icu4j/src/main/java/android/icu/text/DecimalFormat.java b/android_icu4j/src/main/java/android/icu/text/DecimalFormat.java
index a19dae9..3918076 100644
--- a/android_icu4j/src/main/java/android/icu/text/DecimalFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/DecimalFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.text;
 
 import java.io.IOException;
@@ -126,8 +126,8 @@
  * <p>It is also possible to specify the <em>rounding mode</em> to use. The default rounding mode is
  * "half even", which rounds numbers to their closest increment, with ties broken in favor of
  * trailing numbers being even. For more information, see {@link #setRoundingMode} and <a
- * href="http://userguide.icu-project.org/formatparse/numbers/rounding-modes">the ICU User
- * Guide</a>.
+ * href="https://unicode-org.github.io/icu/userguide/format_parse/numbers/rounding-modes">the ICU
+ * User Guide</a>.
  *
  * <h3>Pattern Strings</h3>
  *
@@ -1205,8 +1205,8 @@
    * number, and rounds to the closest even number if at the midpoint.
    *
    * <p>For more detail on rounding modes, see <a
-   * href="http://userguide.icu-project.org/formatparse/numbers/rounding-modes">the ICU User
-   * Guide</a>.
+   * href="https://unicode-org.github.io/icu/userguide/format_parse/numbers/rounding-modes">the ICU
+   * User Guide</a>.
    *
    * <p>For backwards compatibility, the rounding mode is specified as an int argument, which can be
    * from either the constants in {@link BigDecimal} or the ordinal value of {@link RoundingMode}.
@@ -1852,6 +1852,16 @@
    * order for the grouping separator to be printed. For example, if minimum grouping digits is set
    * to 2, in <em>en-US</em>, 1234 will be printed as "1234" and 12345 will be printed as "12,345".
    *
+    * Set the value to:
+   * <ul>
+   * <li>1 to turn off minimum grouping digits.</li>
+   * <li>MINIMUM_GROUPING_DIGITS_AUTO to display grouping using the default
+   * strategy for all locales.</li>
+   * <li>MINIMUM_GROUPING_DIGITS_MIN2 to display grouping using locale defaults,
+   * except do not show grouping on values smaller than 10000 (such that there is a minimum of
+   * two digits before the first separator).</li>
+   * </ul>
+   *
    * @param number The minimum number of digits before grouping is triggered.
    */
   public synchronized void setMinimumGroupingDigits(int number) {
@@ -1860,6 +1870,27 @@
   }
 
   /**
+   * <strong>[icu]</strong> Constant for {@link #setMinimumGroupingDigits(int)} to specify display
+   * grouping using the default strategy for all locales.
+   *
+   * @see #setMinimumGroupingDigits(int)
+   * @see #MINIMUM_GROUPING_DIGITS_MIN2
+   * @hide draft / provisional / internal are hidden on Android
+   */
+  public static final int MINIMUM_GROUPING_DIGITS_AUTO = -2;
+
+  /**
+   * <strong>[icu]</strong> Constant for {@link #setMinimumGroupingDigits(int)} to specify display
+   * grouping using locale defaults, except do not show grouping on values smaller than
+   * 10000 (such that there is a minimum of two digits before the first separator).
+   *
+   * @see #setMinimumGroupingDigits(int)
+   * @see #MINIMUM_GROUPING_DIGITS_AUTO
+   * @hide draft / provisional / internal are hidden on Android
+   */
+  public static final int MINIMUM_GROUPING_DIGITS_MIN2 = -3;
+
+  /**
    * Returns whether the decimal separator is shown on integers.
    *
    * @see #setDecimalSeparatorAlwaysShown
@@ -2039,6 +2070,16 @@
     refreshFormatter();
   }
 
+  // BEGIN android-added: Allow libcore to use java-compatible parsing mode
+  /**
+   * @param parseJavaCompatible true for java-compatible mode, and otherwise lenient mode.
+   * @hide draft / provisional / internal are hidden on Android
+   */
+  public void setParseJavaCompatible(boolean parseJavaCompatible) {
+    setParseStrictMode(parseJavaCompatible ? ParseMode.JAVA_COMPATIBILITY : ParseMode.LENIENT);
+  }
+  // END android-added: Allow libcore to use java-compatible parsing mode
+
   /**
    * Android libcore uses this internal method to set {@link ParseMode#JAVA_COMPATIBILITY}.
    * @deprecated This API is ICU internal only.
diff --git a/android_icu4j/src/main/java/android/icu/text/DecimalFormatSymbols.java b/android_icu4j/src/main/java/android/icu/text/DecimalFormatSymbols.java
index eabae71..e2ed259 100644
--- a/android_icu4j/src/main/java/android/icu/text/DecimalFormatSymbols.java
+++ b/android_icu4j/src/main/java/android/icu/text/DecimalFormatSymbols.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/DictionaryBreakEngine.java b/android_icu4j/src/main/java/android/icu/text/DictionaryBreakEngine.java
index 1012ad5..d0e5ec5 100644
--- a/android_icu4j/src/main/java/android/icu/text/DictionaryBreakEngine.java
+++ b/android_icu4j/src/main/java/android/icu/text/DictionaryBreakEngine.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/text/DictionaryData.java b/android_icu4j/src/main/java/android/icu/text/DictionaryData.java
index 614c7eb..ad2b39b 100644
--- a/android_icu4j/src/main/java/android/icu/text/DictionaryData.java
+++ b/android_icu4j/src/main/java/android/icu/text/DictionaryData.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/DictionaryMatcher.java b/android_icu4j/src/main/java/android/icu/text/DictionaryMatcher.java
index 2f9eee0..3b27240 100644
--- a/android_icu4j/src/main/java/android/icu/text/DictionaryMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/text/DictionaryMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/text/DisplayContext.java b/android_icu4j/src/main/java/android/icu/text/DisplayContext.java
index 03cf7c4..ada8582 100644
--- a/android_icu4j/src/main/java/android/icu/text/DisplayContext.java
+++ b/android_icu4j/src/main/java/android/icu/text/DisplayContext.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012-2015, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/DurationFormat.java b/android_icu4j/src/main/java/android/icu/text/DurationFormat.java
index 77d7977..6c0db0e 100644
--- a/android_icu4j/src/main/java/android/icu/text/DurationFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/DurationFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/Edits.java b/android_icu4j/src/main/java/android/icu/text/Edits.java
index f75d737..1d91064 100644
--- a/android_icu4j/src/main/java/android/icu/text/Edits.java
+++ b/android_icu4j/src/main/java/android/icu/text/Edits.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.text;
 
 import java.nio.BufferOverflowException;
diff --git a/android_icu4j/src/main/java/android/icu/text/EscapeTransliterator.java b/android_icu4j/src/main/java/android/icu/text/EscapeTransliterator.java
index bd25adc..a58539a 100644
--- a/android_icu4j/src/main/java/android/icu/text/EscapeTransliterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/EscapeTransliterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2001-2011, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/FilteredBreakIteratorBuilder.java b/android_icu4j/src/main/java/android/icu/text/FilteredBreakIteratorBuilder.java
index eac6267..8044db7 100644
--- a/android_icu4j/src/main/java/android/icu/text/FilteredBreakIteratorBuilder.java
+++ b/android_icu4j/src/main/java/android/icu/text/FilteredBreakIteratorBuilder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2016, International Business Machines Corporation and
@@ -105,4 +105,4 @@
     @Deprecated
     protected FilteredBreakIteratorBuilder() {
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/text/FilteredNormalizer2.java b/android_icu4j/src/main/java/android/icu/text/FilteredNormalizer2.java
index f522a09..ee59b2f 100644
--- a/android_icu4j/src/main/java/android/icu/text/FilteredNormalizer2.java
+++ b/android_icu4j/src/main/java/android/icu/text/FilteredNormalizer2.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2009-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/FormattedValue.java b/android_icu4j/src/main/java/android/icu/text/FormattedValue.java
index 3241ba5..2b9f3d4 100644
--- a/android_icu4j/src/main/java/android/icu/text/FormattedValue.java
+++ b/android_icu4j/src/main/java/android/icu/text/FormattedValue.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.text;
 
 import java.text.AttributedCharacterIterator;
diff --git a/android_icu4j/src/main/java/android/icu/text/FunctionReplacer.java b/android_icu4j/src/main/java/android/icu/text/FunctionReplacer.java
index f0a465c..96936cb 100644
--- a/android_icu4j/src/main/java/android/icu/text/FunctionReplacer.java
+++ b/android_icu4j/src/main/java/android/icu/text/FunctionReplacer.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2002-2010, International Business Machines Corporation
diff --git a/android_icu4j/src/main/java/android/icu/text/IDNA.java b/android_icu4j/src/main/java/android/icu/text/IDNA.java
index 3f7929c..669c475 100644
--- a/android_icu4j/src/main/java/android/icu/text/IDNA.java
+++ b/android_icu4j/src/main/java/android/icu/text/IDNA.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/KhmerBreakEngine.java b/android_icu4j/src/main/java/android/icu/text/KhmerBreakEngine.java
index dabaf68..d40cb1b 100644
--- a/android_icu4j/src/main/java/android/icu/text/KhmerBreakEngine.java
+++ b/android_icu4j/src/main/java/android/icu/text/KhmerBreakEngine.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/text/LanguageBreakEngine.java b/android_icu4j/src/main/java/android/icu/text/LanguageBreakEngine.java
index d589048..5e1f38a 100644
--- a/android_icu4j/src/main/java/android/icu/text/LanguageBreakEngine.java
+++ b/android_icu4j/src/main/java/android/icu/text/LanguageBreakEngine.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/text/LaoBreakEngine.java b/android_icu4j/src/main/java/android/icu/text/LaoBreakEngine.java
index 4b377a5..687b593 100644
--- a/android_icu4j/src/main/java/android/icu/text/LaoBreakEngine.java
+++ b/android_icu4j/src/main/java/android/icu/text/LaoBreakEngine.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/text/ListFormatter.java b/android_icu4j/src/main/java/android/icu/text/ListFormatter.java
index 795af87..cbc4041 100644
--- a/android_icu4j/src/main/java/android/icu/text/ListFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/text/ListFormatter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012-2016, Google, International Business Machines Corporation and
@@ -520,7 +520,7 @@
     }
 
     // A static handler just returns the pattern without considering the input text.
-    private class StaticHandler implements PatternHandler {
+    private static final class StaticHandler implements PatternHandler {
         StaticHandler(String two, String end) {
             twoPattern = two;
             endPattern = end;
@@ -537,7 +537,7 @@
     }
 
     // A contextual handler returns one of the two patterns depending on whether the text matched the regexp.
-    private class ContextualHandler implements PatternHandler {
+    private static final class ContextualHandler implements PatternHandler {
         ContextualHandler(Pattern regexp, String thenTwo, String elseTwo, String thenEnd, String elseEnd) {
             this.regexp = regexp;
             thenTwoPattern = thenTwo;
diff --git a/android_icu4j/src/main/java/android/icu/text/LocaleDisplayNames.java b/android_icu4j/src/main/java/android/icu/text/LocaleDisplayNames.java
index 872727a..22a8cfc 100644
--- a/android_icu4j/src/main/java/android/icu/text/LocaleDisplayNames.java
+++ b/android_icu4j/src/main/java/android/icu/text/LocaleDisplayNames.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/LowercaseTransliterator.java b/android_icu4j/src/main/java/android/icu/text/LowercaseTransliterator.java
index 768f43c..1db3e78 100644
--- a/android_icu4j/src/main/java/android/icu/text/LowercaseTransliterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/LowercaseTransliterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2011, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/MeasureFormat.java b/android_icu4j/src/main/java/android/icu/text/MeasureFormat.java
index 4122d18..0f52825 100644
--- a/android_icu4j/src/main/java/android/icu/text/MeasureFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/MeasureFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2004-2016, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/MessageFormat.java b/android_icu4j/src/main/java/android/icu/text/MessageFormat.java
index c5dba06..1a83f3d 100644
--- a/android_icu4j/src/main/java/android/icu/text/MessageFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/MessageFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2004-2016, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/MessagePattern.java b/android_icu4j/src/main/java/android/icu/text/MessagePattern.java
index ca40836..b6bbe63 100644
--- a/android_icu4j/src/main/java/android/icu/text/MessagePattern.java
+++ b/android_icu4j/src/main/java/android/icu/text/MessagePattern.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2010-2016, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/MessagePatternUtil.java b/android_icu4j/src/main/java/android/icu/text/MessagePatternUtil.java
index 10eee4b..60dec5f 100644
--- a/android_icu4j/src/main/java/android/icu/text/MessagePatternUtil.java
+++ b/android_icu4j/src/main/java/android/icu/text/MessagePatternUtil.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/NFRule.java b/android_icu4j/src/main/java/android/icu/text/NFRule.java
index 42a46cd..7cfdd9e 100644
--- a/android_icu4j/src/main/java/android/icu/text/NFRule.java
+++ b/android_icu4j/src/main/java/android/icu/text/NFRule.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
@@ -42,9 +42,9 @@
     static final int PROPER_FRACTION_RULE = -3;
 
     /**
-     * Special base value used to identify a master rule
+     * Special base value used to identify a default rule
      */
-    static final int MASTER_RULE = -4;
+    static final int DEFAULT_RULE = -4;
 
     /**
      * Special base value used to identify an infinity rule
@@ -170,7 +170,7 @@
             if ((rule1.baseValue > 0
                  && rule1.baseValue % (power(rule1.radix, rule1.exponent)) == 0)
                 || rule1.baseValue == IMPROPER_FRACTION_RULE
-                || rule1.baseValue == MASTER_RULE)
+                || rule1.baseValue == DEFAULT_RULE)
             {
 
                 // if it passes that test, new up the second rule.  If the
@@ -191,9 +191,9 @@
                     // the proper fraction rule
                     rule2.baseValue = PROPER_FRACTION_RULE;
                 }
-                else if (rule1.baseValue == MASTER_RULE) {
+                else if (rule1.baseValue == DEFAULT_RULE) {
                     // if the description began with "x.0" and contains bracketed
-                    // text, it describes both the master rule and the
+                    // text, it describes both the default rule and the
                     // improper fraction rule
                     rule2.baseValue = rule1.baseValue;
                     rule1.baseValue = IMPROPER_FRACTION_RULE;
@@ -379,7 +379,7 @@
                     decimalPoint = descriptor.charAt(1);
                 }
                 else if (firstChar == 'x' && lastChar == '0') {
-                    setBaseValue(MASTER_RULE);
+                    setBaseValue(DEFAULT_RULE);
                     decimalPoint = descriptor.charAt(1);
                 }
                 else if (descriptor.equals("NaN")) {
@@ -652,7 +652,7 @@
         else if (baseValue == PROPER_FRACTION_RULE) {
             result.append('0').append(decimalPoint == 0 ? '.' : decimalPoint).append("x: ");
         }
-        else if (baseValue == MASTER_RULE) {
+        else if (baseValue == DEFAULT_RULE) {
             result.append('x').append(decimalPoint == 0 ? '.' : decimalPoint).append("0: ");
         }
         else if (baseValue == INFINITY_RULE) {
@@ -1242,6 +1242,10 @@
 
         RbnfLenientScanner scanner = formatter.getLenientScanner();
         if (scanner != null) {
+            // Check if non-lenient rule finds the text before call lenient parsing
+            if (str.startsWith(prefix)) {
+                return prefix.length();
+            }
             return scanner.prefixLength(str, prefix);
         }
 
@@ -1291,9 +1295,14 @@
         }
 
         if (scanner != null) {
-            // if lenient parsing is turned ON, we've got some work
-            // ahead of us
-            return scanner.findText(str, key, startingAt);
+            // Check if non-lenient rule finds the text before call lenient parsing
+            int pos[] = new int[] { str.indexOf(key, startingAt), key.length() };
+            if (pos[0] >= 0) {
+                return pos;
+            } else {
+                // if lenient parsing is turned ON, we've got some work ahead of us
+                return scanner.findText(str, key, startingAt);
+            }
         }
         // if lenient parsing is turned off, this is easy. Just call
         // String.indexOf() and we're done
diff --git a/android_icu4j/src/main/java/android/icu/text/NFRuleSet.java b/android_icu4j/src/main/java/android/icu/text/NFRuleSet.java
index 5f84f2c..ed2e375 100644
--- a/android_icu4j/src/main/java/android/icu/text/NFRuleSet.java
+++ b/android_icu4j/src/main/java/android/icu/text/NFRuleSet.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
@@ -58,7 +58,7 @@
     /** 0.x */
     static final int PROPER_FRACTION_RULE_INDEX = 2;
     /** x.0 */
-    static final int MASTER_RULE_INDEX = 3;
+    static final int DEFAULT_RULE_INDEX = 3;
     /** Inf */
     static final int INFINITY_RULE_INDEX = 4;
     /** NaN */
@@ -244,8 +244,8 @@
         else if (baseValue == NFRule.PROPER_FRACTION_RULE) {
             setBestFractionRule(NFRuleSet.PROPER_FRACTION_RULE_INDEX, rule, true);
         }
-        else if (baseValue == NFRule.MASTER_RULE) {
-            setBestFractionRule(NFRuleSet.MASTER_RULE_INDEX, rule, true);
+        else if (baseValue == NFRule.DEFAULT_RULE) {
+            setBestFractionRule(NFRuleSet.DEFAULT_RULE_INDEX, rule, true);
         }
         else if (baseValue == NFRule.INFINITY_RULE) {
             nonNumericalRules[NFRuleSet.INFINITY_RULE_INDEX] = rule;
@@ -369,7 +369,7 @@
             if (rule != null) {
                 if (rule.getBaseValue() == NFRule.IMPROPER_FRACTION_RULE
                     || rule.getBaseValue() == NFRule.PROPER_FRACTION_RULE
-                    || rule.getBaseValue() == NFRule.MASTER_RULE)
+                    || rule.getBaseValue() == NFRule.DEFAULT_RULE)
                 {
                     for (NFRule fractionRule : fractionRules) {
                         if (fractionRule.getBaseValue() == rule.getBaseValue()) {
@@ -509,9 +509,9 @@
             }
         }
 
-        // if there's a master rule, use it to format the number
-        if (nonNumericalRules[MASTER_RULE_INDEX] != null) {
-            return nonNumericalRules[MASTER_RULE_INDEX];
+        // if there's a default rule, use it to format the number
+        if (nonNumericalRules[DEFAULT_RULE_INDEX] != null) {
+            return nonNumericalRules[DEFAULT_RULE_INDEX];
         }
         else {
             // and if we haven't yet returned a rule, use findNormalRule()
@@ -558,9 +558,9 @@
         // do them in findRule(), because the version of format() that
         // takes a long bypasses findRule() and goes straight to this
         // function.  This function does skip the fraction rules since
-        // we know the value is an integer (it also skips the master
+        // we know the value is an integer (it also skips the default
         // rule, since it's considered a fraction rule.  Skipping the
-        // master rule in this function is also how we avoid infinite
+        // default rule in this function is also how we avoid infinite
         // recursion)
 
         // binary-search the rule list for the applicable rule
@@ -601,8 +601,8 @@
             }
             return result;
         }
-        // else use the master rule
-        return nonNumericalRules[MASTER_RULE_INDEX];
+        // else use the default rule
+        return nonNumericalRules[DEFAULT_RULE_INDEX];
     }
 
     /**
@@ -830,7 +830,7 @@
         }
         // Switch the fraction rules to mirror the DecimalFormatSymbols.
         if (fractionRules != null) {
-            for (int nonNumericalIdx = IMPROPER_FRACTION_RULE_INDEX; nonNumericalIdx <= MASTER_RULE_INDEX; nonNumericalIdx++) {
+            for (int nonNumericalIdx = IMPROPER_FRACTION_RULE_INDEX; nonNumericalIdx <= DEFAULT_RULE_INDEX; nonNumericalIdx++) {
                 if (nonNumericalRules[nonNumericalIdx] != null) {
                     for (NFRule rule : fractionRules) {
                         if (nonNumericalRules[nonNumericalIdx].getBaseValue() == rule.getBaseValue()) {
diff --git a/android_icu4j/src/main/java/android/icu/text/NFSubstitution.java b/android_icu4j/src/main/java/android/icu/text/NFSubstitution.java
index edc7129..cd001f7 100644
--- a/android_icu4j/src/main/java/android/icu/text/NFSubstitution.java
+++ b/android_icu4j/src/main/java/android/icu/text/NFSubstitution.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
@@ -91,7 +91,7 @@
             }
             else if (rule.getBaseValue() == NFRule.IMPROPER_FRACTION_RULE
                      || rule.getBaseValue() == NFRule.PROPER_FRACTION_RULE
-                     || rule.getBaseValue() == NFRule.MASTER_RULE)
+                     || rule.getBaseValue() == NFRule.DEFAULT_RULE)
             {
                 // if the rule is a fraction rule, return an IntegralPartSubstitution
                 return new IntegralPartSubstitution(pos, ruleSet, description);
@@ -116,7 +116,7 @@
             }
             else if (rule.getBaseValue() == NFRule.IMPROPER_FRACTION_RULE
                      || rule.getBaseValue() == NFRule.PROPER_FRACTION_RULE
-                     || rule.getBaseValue() == NFRule.MASTER_RULE)
+                     || rule.getBaseValue() == NFRule.DEFAULT_RULE)
             {
                 // if the rule is a fraction rule, return a
                 // FractionalPartSubstitution
diff --git a/android_icu4j/src/main/java/android/icu/text/NameUnicodeTransliterator.java b/android_icu4j/src/main/java/android/icu/text/NameUnicodeTransliterator.java
index 277c6b9..8fea600 100644
--- a/android_icu4j/src/main/java/android/icu/text/NameUnicodeTransliterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/NameUnicodeTransliterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 1996-2011, International Business Machines Corporation and
  * others. All Rights Reserved.
diff --git a/android_icu4j/src/main/java/android/icu/text/NormalizationTransliterator.java b/android_icu4j/src/main/java/android/icu/text/NormalizationTransliterator.java
index 9e9ba71..7aaed9b 100644
--- a/android_icu4j/src/main/java/android/icu/text/NormalizationTransliterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/NormalizationTransliterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  *   Copyright (C) 2001-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/Normalizer.java b/android_icu4j/src/main/java/android/icu/text/Normalizer.java
index 5a8ae50..2ad1106 100644
--- a/android_icu4j/src/main/java/android/icu/text/Normalizer.java
+++ b/android_icu4j/src/main/java/android/icu/text/Normalizer.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/Normalizer2.java b/android_icu4j/src/main/java/android/icu/text/Normalizer2.java
index 0e1fec5..36b030a 100644
--- a/android_icu4j/src/main/java/android/icu/text/Normalizer2.java
+++ b/android_icu4j/src/main/java/android/icu/text/Normalizer2.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  *   Copyright (C) 2009-2016, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/NullTransliterator.java b/android_icu4j/src/main/java/android/icu/text/NullTransliterator.java
index fa9a362..1b50fb8 100644
--- a/android_icu4j/src/main/java/android/icu/text/NullTransliterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/NullTransliterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/NumberFormat.java b/android_icu4j/src/main/java/android/icu/text/NumberFormat.java
index bd5a89d..b64b191 100644
--- a/android_icu4j/src/main/java/android/icu/text/NumberFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/NumberFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/NumberFormatServiceShim.java b/android_icu4j/src/main/java/android/icu/text/NumberFormatServiceShim.java
index 6ed4339..8a27315 100644
--- a/android_icu4j/src/main/java/android/icu/text/NumberFormatServiceShim.java
+++ b/android_icu4j/src/main/java/android/icu/text/NumberFormatServiceShim.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2011, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/NumberingSystem.java b/android_icu4j/src/main/java/android/icu/text/NumberingSystem.java
index 36ea97b..0180a8f 100644
--- a/android_icu4j/src/main/java/android/icu/text/NumberingSystem.java
+++ b/android_icu4j/src/main/java/android/icu/text/NumberingSystem.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/PluralFormat.java b/android_icu4j/src/main/java/android/icu/text/PluralFormat.java
index f7bead6..6fbc4b5 100644
--- a/android_icu4j/src/main/java/android/icu/text/PluralFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/PluralFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2016, International Business Machines Corporation and
@@ -741,9 +741,15 @@
 
             String currArg = pattern.substring(partStart.getLimit(), partLimit.getIndex());
             if (scanner != null) {
-                // If lenient parsing is turned ON, we've got some time consuming parsing ahead of us.
-                int[] scannerMatchResult = scanner.findText(source, currArg, startingAt);
-                currMatchIndex = scannerMatchResult[0];
+                // Check if non-lenient rule finds the text before call lenient parsing
+                int tempPos = source.indexOf(currArg, startingAt);
+                if (tempPos >= 0) {
+                    currMatchIndex = tempPos;
+                } else {
+                    // If lenient parsing is turned ON, we've got some time consuming parsing ahead of us.
+                    int[] scannerMatchResult = scanner.findText(source, currArg, startingAt);
+                    currMatchIndex = scannerMatchResult[0];
+                }
             }
             else {
                 currMatchIndex = source.indexOf(currArg, startingAt);
diff --git a/android_icu4j/src/main/java/android/icu/text/PluralRanges.java b/android_icu4j/src/main/java/android/icu/text/PluralRanges.java
deleted file mode 100644
index 2890cb3..0000000
--- a/android_icu4j/src/main/java/android/icu/text/PluralRanges.java
+++ /dev/null
@@ -1,368 +0,0 @@
-/* GENERATED SOURCE. DO NOT MODIFY. */
-// © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-/*
- *******************************************************************************
- * Copyright (C) 2008-2015, Google, International Business Machines Corporation and
- * others. All Rights Reserved.
- *******************************************************************************
- */
-package android.icu.text;
-
-import java.util.Arrays;
-import java.util.EnumSet;
-
-import android.icu.impl.StandardPlural;
-import android.icu.util.Freezable;
-import android.icu.util.Output;
-
-/**
- * Utility class for returning the plural category for a range of numbers, such as 1–5, so that appropriate messages can
- * be chosen. The rules for determining this value vary widely across locales.
- *
- * @author markdavis
- * @deprecated This API is ICU internal only.
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
- */
-@Deprecated
-public final class PluralRanges implements Freezable<PluralRanges>, Comparable<PluralRanges> {
-
-    private volatile boolean isFrozen;
-    private Matrix matrix = new Matrix();
-    private boolean[] explicit = new boolean[StandardPlural.COUNT];
-
-    /**
-     * Constructor
-     *
-     * @deprecated This API is ICU internal only.
-     * @hide draft / provisional / internal are hidden on Android
-     */
-    @Deprecated
-    public PluralRanges() {
-    }
-
-    /**
-     * Internal class for mapping from two StandardPluralCategories values to another.
-     */
-    private static final class Matrix implements Comparable<Matrix>, Cloneable {
-        private byte[] data = new byte[StandardPlural.COUNT * StandardPlural.COUNT];
-        {
-            for (int i = 0; i < data.length; ++i) {
-                data[i] = -1;
-            }
-        }
-
-        Matrix() {
-        }
-
-        /**
-         * Internal method for setting.
-         */
-        @SuppressWarnings("unused")
-        void set(StandardPlural start, StandardPlural end, StandardPlural result) {
-            data[start.ordinal() * StandardPlural.COUNT + end.ordinal()] = result == null ? (byte) -1
-                    : (byte) result.ordinal();
-        }
-
-        /**
-         * Internal method for setting; throws exception if already set.
-         */
-        void setIfNew(StandardPlural start, StandardPlural end,
-                StandardPlural result) {
-            byte old = data[start.ordinal() * StandardPlural.COUNT + end.ordinal()];
-            if (old >= 0) {
-                throw new IllegalArgumentException("Previously set value for <" + start + ", " + end + ", "
-                        + StandardPlural.VALUES.get(old) + ">");
-            }
-            data[start.ordinal() * StandardPlural.COUNT + end.ordinal()] = result == null ? (byte) -1
-                    : (byte) result.ordinal();
-        }
-
-        /**
-         * Internal method for getting.
-         */
-        StandardPlural get(StandardPlural start, StandardPlural end) {
-            byte result = data[start.ordinal() * StandardPlural.COUNT + end.ordinal()];
-            return result < 0 ? null : StandardPlural.VALUES.get(result);
-        }
-
-        /**
-         * Internal method to see if <*,end> values are all the same.
-         */
-        @SuppressWarnings("unused")
-        StandardPlural endSame(StandardPlural end) {
-            StandardPlural first = null;
-            for (StandardPlural start : StandardPlural.VALUES) {
-                StandardPlural item = get(start, end);
-                if (item == null) {
-                    continue;
-                }
-                if (first == null) {
-                    first = item;
-                    continue;
-                }
-                if (first != item) {
-                    return null;
-                }
-            }
-            return first;
-        }
-
-        /**
-         * Internal method to see if <start,*> values are all the same.
-         */
-        @SuppressWarnings("unused")
-        StandardPlural startSame(StandardPlural start,
-                EnumSet<StandardPlural> endDone, Output<Boolean> emit) {
-            emit.value = false;
-            StandardPlural first = null;
-            for (StandardPlural end : StandardPlural.VALUES) {
-                StandardPlural item = get(start, end);
-                if (item == null) {
-                    continue;
-                }
-                if (first == null) {
-                    first = item;
-                    continue;
-                }
-                if (first != item) {
-                    return null;
-                }
-                // only emit if we didn't cover with the 'end' values
-                if (!endDone.contains(end)) {
-                    emit.value = true;
-                }
-            }
-            return first;
-        }
-
-        @Override
-        public int hashCode() {
-            int result = 0;
-            for (int i = 0; i < data.length; ++i) {
-                result = result * 37 + data[i];
-            }
-            return result;
-        }
-
-        @Override
-        public boolean equals(Object other) {
-            if (!(other instanceof Matrix)) {
-                return false;
-            }
-            return 0 == compareTo((Matrix) other);
-        }
-
-        @Override
-        public int compareTo(Matrix o) {
-            for (int i = 0; i < data.length; ++i) {
-                int diff = data[i] - o.data[i];
-                if (diff != 0) {
-                    return diff;
-                }
-            }
-            return 0;
-        }
-
-        @Override
-        public Matrix clone() {
-            Matrix result = new Matrix();
-            result.data = data.clone();
-            return result;
-        }
-
-        @Override
-        public String toString() {
-            StringBuilder result = new StringBuilder();
-            for (StandardPlural i : StandardPlural.values()) {
-                for (StandardPlural j : StandardPlural.values()) {
-                    StandardPlural x = get(i, j);
-                    if (x != null) {
-                        result.append(i + " & " + j + " → " + x + ";\n");
-                    }
-                }
-            }
-            return result.toString();
-        }
-    }
-
-    /**
-     * Internal method for building. If the start or end are null, it means everything of that type.
-     *
-     * @param rangeStart
-     *            plural category for the start of the range
-     * @param rangeEnd
-     *            plural category for the end of the range
-     * @param result
-     *            the resulting plural category
-     * @deprecated This API is ICU internal only.
-     * @hide draft / provisional / internal are hidden on Android
-     */
-    @Deprecated
-    public void add(StandardPlural rangeStart, StandardPlural rangeEnd,
-            StandardPlural result) {
-        if (isFrozen) {
-            throw new UnsupportedOperationException();
-        }
-        explicit[result.ordinal()] = true;
-        if (rangeStart == null) {
-            for (StandardPlural rs : StandardPlural.values()) {
-                if (rangeEnd == null) {
-                    for (StandardPlural re : StandardPlural.values()) {
-                        matrix.setIfNew(rs, re, result);
-                    }
-                } else {
-                    explicit[rangeEnd.ordinal()] = true;
-                    matrix.setIfNew(rs, rangeEnd, result);
-                }
-            }
-        } else if (rangeEnd == null) {
-            explicit[rangeStart.ordinal()] = true;
-            for (StandardPlural re : StandardPlural.values()) {
-                matrix.setIfNew(rangeStart, re, result);
-            }
-        } else {
-            explicit[rangeStart.ordinal()] = true;
-            explicit[rangeEnd.ordinal()] = true;
-            matrix.setIfNew(rangeStart, rangeEnd, result);
-        }
-    }
-
-    /**
-     * Returns the appropriate plural category for a range from start to end. If there is no available data, then
-     * 'end' is returned as an implicit value. (Such an implicit value can be tested for with {@link #isExplicit}.)
-     *
-     * @param start
-     *            plural category for the start of the range
-     * @param end
-     *            plural category for the end of the range
-     * @return the resulting plural category, or 'end' if there is no data.
-     * @deprecated This API is ICU internal only.
-     * @hide draft / provisional / internal are hidden on Android
-     */
-    @Deprecated
-    public StandardPlural get(StandardPlural start, StandardPlural end) {
-        StandardPlural result = matrix.get(start, end);
-        return result == null ? end : result;
-    }
-
-    /**
-     * Returns whether the appropriate plural category for a range from start to end
-     * is explicitly in the data (vs given an implicit value). See also {@link #get}.
-     *
-     * @param start
-     *            plural category for the start of the range
-     * @param end
-     *            plural category for the end of the range
-     * @return whether the value for (start,end) is explicit or not.
-     * @deprecated This API is ICU internal only.
-     * @hide draft / provisional / internal are hidden on Android
-     */
-    @Deprecated
-    public boolean isExplicit(StandardPlural start, StandardPlural end) {
-        return matrix.get(start, end) != null;
-    }
-
-    /**
-     * Internal method to determines whether the StandardPluralCategories was explicitly used in any add statement.
-     *
-     * @param count
-     *            plural category to test
-     * @return true if set
-     * @deprecated This API is ICU internal only.
-     * @hide draft / provisional / internal are hidden on Android
-     */
-    @Deprecated
-    public boolean isExplicitlySet(StandardPlural count) {
-        return explicit[count.ordinal()];
-    }
-
-    /**
-     * {@inheritDoc}
-     * @deprecated This API is ICU internal only.
-     * @hide draft / provisional / internal are hidden on Android
-     */
-    @Deprecated
-    @Override
-    public boolean equals(Object other) {
-        if (this == other) {
-            return true;
-        }
-        if (!(other instanceof PluralRanges)) {
-            return false;
-        }
-        PluralRanges otherPR = (PluralRanges)other;
-        return matrix.equals(otherPR.matrix) && Arrays.equals(explicit, otherPR.explicit);
-    }
-
-    /**
-     * {@inheritDoc}
-     * @deprecated This API is ICU internal only.
-     * @hide draft / provisional / internal are hidden on Android
-     */
-    @Override
-    @Deprecated
-    public int hashCode() {
-        return matrix.hashCode();
-    }
-
-    /**
-     * {@inheritDoc}
-     * @deprecated This API is ICU internal only.
-     * @hide draft / provisional / internal are hidden on Android
-     */
-    @Override
-    @Deprecated
-    public int compareTo(PluralRanges that) {
-        return matrix.compareTo(that.matrix);
-    }
-
-    /**
-     * {@inheritDoc}
-     * @deprecated This API is ICU internal only.
-     * @hide draft / provisional / internal are hidden on Android
-     */
-    @Override
-    @Deprecated
-    public boolean isFrozen() {
-        return isFrozen;
-    }
-
-    /**
-     * {@inheritDoc}
-     * @deprecated This API is ICU internal only.
-     * @hide draft / provisional / internal are hidden on Android
-     */
-    @Override
-    @Deprecated
-    public PluralRanges freeze() {
-        isFrozen = true;
-        return this;
-    }
-
-    /**
-     * {@inheritDoc}
-     * @deprecated This API is ICU internal only.
-     * @hide draft / provisional / internal are hidden on Android
-     */
-    @Override
-    @Deprecated
-    public PluralRanges cloneAsThawed() {
-        PluralRanges result = new PluralRanges();
-        result.explicit = explicit.clone();
-        result.matrix = matrix.clone();
-        return result;
-    }
-
-    /**
-     * {@inheritDoc}
-     * @deprecated This API is ICU internal only.
-     * @hide draft / provisional / internal are hidden on Android
-     */
-    @Override
-    @Deprecated
-    public String toString() {
-        return matrix.toString();
-    }
-}
\ No newline at end of file
diff --git a/android_icu4j/src/main/java/android/icu/text/PluralRules.java b/android_icu4j/src/main/java/android/icu/text/PluralRules.java
index 89435f5..4ad72ac 100644
--- a/android_icu4j/src/main/java/android/icu/text/PluralRules.java
+++ b/android_icu4j/src/main/java/android/icu/text/PluralRules.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2016, International Business Machines Corporation and
@@ -30,7 +30,10 @@
 import java.util.regex.Pattern;
 
 import android.icu.impl.PluralRulesLoader;
+import android.icu.impl.StandardPlural;
+import android.icu.impl.number.range.StandardPluralRanges;
 import android.icu.number.FormattedNumber;
+import android.icu.number.FormattedNumberRange;
 import android.icu.number.NumberFormatter;
 import android.icu.util.Output;
 import android.icu.util.ULocale;
@@ -183,6 +186,7 @@
 
     private final RuleList rules;
     private final transient Set<String> keywords;
+    private final transient StandardPluralRanges standardPluralRanges;
 
     /**
      * Provides a factory for returning plural rules
@@ -377,9 +381,7 @@
      */
     public static PluralRules parseDescription(String description)
             throws ParseException {
-
-        description = description.trim();
-        return description.length() == 0 ? DEFAULT : new PluralRules(parseRuleChain(description));
+        return newInternal(description, null);
     }
 
     /**
@@ -397,10 +399,24 @@
     }
 
     /**
+     * @deprecated This API is ICU internal only.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    @Deprecated
+    public static PluralRules newInternal(String description, StandardPluralRanges ranges)
+            throws ParseException {
+        description = description.trim();
+        return description.length() == 0
+            ? DEFAULT
+            : new PluralRules(parseRuleChain(description), ranges);
+    }
+
+    /**
      * The default rules that accept any number and return
      * {@link #KEYWORD_OTHER}.
      */
-    public static final PluralRules DEFAULT = new PluralRules(new RuleList().addRule(DEFAULT_RULE));
+    public static final PluralRules DEFAULT = new PluralRules(
+        new RuleList().addRule(DEFAULT_RULE), StandardPluralRanges.DEFAULT);
 
     /**
      * @deprecated This API is ICU internal only.
@@ -573,6 +589,8 @@
          */
         final boolean isNegative;
 
+        final int exponent;
+
         private final int baseFactor;
 
         /**
@@ -673,11 +691,11 @@
          * @param v number of digits to the right of the decimal place. e.g 1.00 = 2 25. = 0
          * @param f Corresponds to f in the plural rules grammar.
          *   The digits to the right of the decimal place as an integer. e.g 1.10 = 10
-         * @hide original deprecated declaration
+         * @param e Suppressed exponent for scientific and compact notation
          * @hide draft / provisional / internal are hidden on Android
          */
         @Deprecated
-        public FixedDecimal(double n, int v, long f) {
+        public FixedDecimal(double n, int v, long f, int e) {
             isNegative = n < 0;
             source = isNegative ? -n : n;
             visibleDecimalDigitCount = v;
@@ -685,6 +703,7 @@
             integerValue = n > MAX
                     ? MAX
                             : (long)n;
+            exponent = e;
             hasIntegerValue = source == integerValue;
             // check values. TODO make into unit test.
             //
@@ -721,6 +740,25 @@
          * @hide draft / provisional / internal are hidden on Android
          */
         @Deprecated
+        public FixedDecimal(double n, int v, long f) {
+            this(n, v, f, 0);
+        }
+
+        /**
+         * @deprecated This API is ICU internal only.
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        @Deprecated
+        public static FixedDecimal createWithExponent(double n, int v, int e) {
+            return new FixedDecimal(n,v,getFractionalDigits(n, v), e);
+        }
+
+        /**
+         * @deprecated This API is ICU internal only.
+         * @hide original deprecated declaration
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        @Deprecated
         public FixedDecimal(double n, int v) {
             this(n,v,getFractionalDigits(n, v));
         }
@@ -812,6 +850,29 @@
         }
 
         /**
+         * @deprecated This API is ICU internal only
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        @Deprecated
+        private FixedDecimal (FixedDecimal other) {
+            // Ugly, but necessary, because constructors must only call other
+            // constructors in the first line of the body, and
+            // FixedDecimal(String) was refactored to support exponents.
+            this.source = other.source;
+            this.visibleDecimalDigitCount = other.visibleDecimalDigitCount;
+            this.visibleDecimalDigitCountWithoutTrailingZeros =
+                    other.visibleDecimalDigitCountWithoutTrailingZeros;
+            this.decimalDigits = other.decimalDigits;
+            this.decimalDigitsWithoutTrailingZeros =
+                    other.decimalDigitsWithoutTrailingZeros;
+            this.integerValue = other.integerValue;
+            this.hasIntegerValue = other.hasIntegerValue;
+            this.isNegative = other.isNegative;
+            this.exponent = other.exponent;
+            this.baseFactor = other.baseFactor;
+        }
+
+        /**
          * @deprecated This API is ICU internal only.
          * @hide original deprecated declaration
          * @hide draft / provisional / internal are hidden on Android
@@ -819,7 +880,28 @@
         @Deprecated
         public FixedDecimal (String n) {
             // Ugly, but for samples we don't care.
-            this(Double.parseDouble(n), getVisibleFractionCount(n));
+            this(parseDecimalSampleRangeNumString(n));
+        }
+
+        /**
+         * @deprecated This API is ICU internal only
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        @Deprecated
+        private static FixedDecimal parseDecimalSampleRangeNumString(String num) {
+            if (num.contains("e")) {
+                int ePos = num.lastIndexOf('e');
+                int expNumPos = ePos + 1;
+                String exponentStr = num.substring(expNumPos);
+                int exponent = Integer.parseInt(exponentStr);
+                String fractionStr = num.substring(0, ePos);
+                return FixedDecimal.createWithExponent(
+                        Double.parseDouble(fractionStr),
+                        getVisibleFractionCount(fractionStr),
+                        exponent);
+            } else {
+                return new FixedDecimal(Double.parseDouble(num), getVisibleFractionCount(num));
+            }
         }
 
         private static int getVisibleFractionCount(String value) {
@@ -848,7 +930,7 @@
             case t: return decimalDigitsWithoutTrailingZeros;
             case v: return visibleDecimalDigitCount;
             case w: return visibleDecimalDigitCountWithoutTrailingZeros;
-            case e: return 0;
+            case e: return exponent;
             default: return source;
             }
         }
@@ -872,6 +954,9 @@
         @Override
         @Deprecated
         public int compareTo(FixedDecimal other) {
+            if (exponent != other.exponent) {
+                return doubleValue() < other.doubleValue() ? -1 : 1;
+            }
             if (integerValue != other.integerValue) {
                 return integerValue < other.integerValue ? -1 : 1;
             }
@@ -906,7 +991,8 @@
                 return false;
             }
             FixedDecimal other = (FixedDecimal)arg0;
-            return source == other.source && visibleDecimalDigitCount == other.visibleDecimalDigitCount && decimalDigits == other.decimalDigits;
+            return source == other.source && visibleDecimalDigitCount == other.visibleDecimalDigitCount && decimalDigits == other.decimalDigits
+                    && exponent == other.exponent;
         }
 
         /**
@@ -929,7 +1015,12 @@
         @Deprecated
         @Override
         public String toString() {
-            return String.format(Locale.ROOT, "%." + visibleDecimalDigitCount + "f", source);
+            String baseString = String.format(Locale.ROOT, "%." + visibleDecimalDigitCount + "f", source);
+            if (exponent == 0) {
+                return baseString;
+            } else {
+                return baseString + "e" + exponent;
+            }
         }
 
         /**
@@ -951,7 +1042,7 @@
         @Override
         public int intValue() {
             // TODO Auto-generated method stub
-            return (int)integerValue;
+            return (int) longValue();
         }
 
         /**
@@ -962,7 +1053,11 @@
         @Deprecated
         @Override
         public long longValue() {
-            return integerValue;
+            if (exponent == 0) {
+                return integerValue;
+            } else {
+                return (long) (Math.pow(10, exponent) * integerValue);
+            }
         }
 
         /**
@@ -973,7 +1068,7 @@
         @Deprecated
         @Override
         public float floatValue() {
-            return (float) source;
+            return (float) (source * Math.pow(10, exponent));
         }
 
         /**
@@ -984,7 +1079,7 @@
         @Deprecated
         @Override
         public double doubleValue() {
-            return isNegative ? -source : source;
+            return (isNegative ? -source : source) * Math.pow(10, exponent);
         }
 
         /**
@@ -2080,9 +2175,10 @@
     /*
      * Creates a new <code>PluralRules</code> object.  Immutable.
      */
-    private PluralRules(RuleList rules) {
+    private PluralRules(RuleList rules, StandardPluralRanges standardPluralRanges) {
         this.rules = rules;
         this.keywords = Collections.unmodifiableSet(rules.getKeywords());
+        this.standardPluralRanges = standardPluralRanges;
     }
 
     /**
@@ -2121,6 +2217,33 @@
     }
 
     /**
+     * Given a formatted number range, returns the overall plural form of the
+     * range. For example, "3-5" returns "other" in English.
+     *
+     * To get a FormattedNumberRange, see {@link android.icu.number.NumberRangeFormatter}.
+     *
+     * This method only works if PluralRules was created with a locale. If it was created
+     * from PluralRules.createRules(), or if it was deserialized, this method throws
+     * UnsupportedOperationException.
+     *
+     * @param range  The number range onto which the rules will be applied.
+     * @return       The keyword of the selected rule.
+     * @throws UnsupportedOperationException If called on an instance without plural ranges data.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public String select(FormattedNumberRange range) {
+        if (standardPluralRanges == null) {
+            throw new UnsupportedOperationException("Plural ranges are unavailable on this instance");
+        }
+        StandardPlural form1 = StandardPlural.fromString(
+            select(range.getFirstFixedDecimal()));
+        StandardPlural form2 = StandardPlural.fromString(
+            select(range.getSecondFixedDecimal()));
+        StandardPlural result = standardPluralRanges.resolve(form1, form2);
+        return result.getKeyword();
+    }
+
+    /**
      * Given a number, returns the keyword of the first rule that applies to
      * the number.
      *
diff --git a/android_icu4j/src/main/java/android/icu/text/PluralRulesSerialProxy.java b/android_icu4j/src/main/java/android/icu/text/PluralRulesSerialProxy.java
index 11f90d9..7251f92 100644
--- a/android_icu4j/src/main/java/android/icu/text/PluralRulesSerialProxy.java
+++ b/android_icu4j/src/main/java/android/icu/text/PluralRulesSerialProxy.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013, Google Inc, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/text/PluralSamples.java b/android_icu4j/src/main/java/android/icu/text/PluralSamples.java
index 3c1e931..42ca5b9 100644
--- a/android_icu4j/src/main/java/android/icu/text/PluralSamples.java
+++ b/android_icu4j/src/main/java/android/icu/text/PluralSamples.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/Quantifier.java b/android_icu4j/src/main/java/android/icu/text/Quantifier.java
index 7024b49..9c17063 100644
--- a/android_icu4j/src/main/java/android/icu/text/Quantifier.java
+++ b/android_icu4j/src/main/java/android/icu/text/Quantifier.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2011, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/QuantityFormatter.java b/android_icu4j/src/main/java/android/icu/text/QuantityFormatter.java
index 392080f..6fef0a8 100644
--- a/android_icu4j/src/main/java/android/icu/text/QuantityFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/text/QuantityFormatter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/RBBINode.java b/android_icu4j/src/main/java/android/icu/text/RBBINode.java
index 6b6a964..ecc9757 100644
--- a/android_icu4j/src/main/java/android/icu/text/RBBINode.java
+++ b/android_icu4j/src/main/java/android/icu/text/RBBINode.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
  * Copyright (c) 2001-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/RBBIRuleBuilder.java b/android_icu4j/src/main/java/android/icu/text/RBBIRuleBuilder.java
index f462cac..a38f8d4 100644
--- a/android_icu4j/src/main/java/android/icu/text/RBBIRuleBuilder.java
+++ b/android_icu4j/src/main/java/android/icu/text/RBBIRuleBuilder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 //
 //    Copyright (C) 2002-2014, International Business Machines Corporation and others.
 //    All Rights Reserved.
@@ -12,6 +12,7 @@
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -67,7 +68,7 @@
     //
     // Status {tag} values.   These structures are common to all of the rule sets (Forward, Reverse, etc.).
     //
-    Map<Set<Integer>, Integer> fStatusSets = new HashMap<Set<Integer>, Integer>(); // Status value sets encountered so far.
+    Map<Set<Integer>, Integer> fStatusSets = new HashMap<>(); // Status value sets encountered so far.
                                                                                    //  Map Key is the set of values.
                                                                                    //  Map Value is the runtime array index.
 
@@ -146,8 +147,8 @@
                             ICUDebug.value("rbbi") : null;
         fRules          = rules;
         fStrippedRules  = new StringBuilder(rules);
-        fUSetNodes      = new ArrayList<RBBINode>();
-        fRuleStatusVals = new ArrayList<Integer>();
+        fUSetNodes      = new ArrayList<>();
+        fRuleStatusVals = new ArrayList<>();
         fScanner        = new RBBIRuleScanner(this);
         fSetBuilder     = new RBBISetBuilder(this);
     }
@@ -183,7 +184,9 @@
         int reverseTableSize = align8(fForwardTable.getSafeTableSize());
         int trieSize         = align8(fSetBuilder.getTrieSize());
         int statusTableSize  = align8(fRuleStatusVals.size() * 4);
-        int rulesSize        = align8((strippedRules.length()) * 2);
+
+        byte[] strippedRulesUTF8 = strippedRules.getBytes(StandardCharsets.UTF_8);
+        int rulesSize        = align8(strippedRulesUTF8.length + 1);
 
         int totalSize = headerSize
                 + forwardTableSize
@@ -203,7 +206,7 @@
         header[RBBIDataWrapper.DH_MAGIC]         = 0xb1a0;
         header[RBBIDataWrapper.DH_FORMATVERSION] = RBBIDataWrapper.FORMAT_VERSION;
         header[RBBIDataWrapper.DH_LENGTH]        = totalSize;            // fLength, the total size of all rule sections.
-        header[RBBIDataWrapper.DH_CATCOUNT]      = fSetBuilder.getNumCharCategories(); // fCatCount.
+        header[RBBIDataWrapper.DH_CATCOUNT]      = fSetBuilder.getNumCharCategories();
 
         header[RBBIDataWrapper.DH_FTABLE]        = headerSize;           // fFTable
         header[RBBIDataWrapper.DH_FTABLELEN]     = forwardTableSize;     // fTableLen
@@ -215,11 +218,11 @@
                                                      + header[RBBIDataWrapper.DH_RTABLELEN]; // fTrie
         header[RBBIDataWrapper.DH_TRIELEN]       = fSetBuilder.getTrieSize(); // fTrieLen
         header[RBBIDataWrapper.DH_STATUSTABLE]   = header[RBBIDataWrapper.DH_TRIE]
-                                                     + header[RBBIDataWrapper.DH_TRIELEN];
+                                                     + trieSize;
         header[RBBIDataWrapper.DH_STATUSTABLELEN] = statusTableSize; // fStatusTableLen
         header[RBBIDataWrapper.DH_RULESOURCE]    = header[RBBIDataWrapper.DH_STATUSTABLE]
                                                      + statusTableSize;
-        header[RBBIDataWrapper.DH_RULESOURCELEN] = strippedRules.length() * 2;
+        header[RBBIDataWrapper.DH_RULESOURCELEN] = strippedRulesUTF8.length;
         for (i = 0; i < header.length; i++) {
             dos.writeInt(header[i]);
             outputPos += 4;
@@ -258,8 +261,9 @@
         // Write out the stripped rules (rules with extra spaces removed
         //   These go last in the data area, even though they are not last in the header.
         Assert.assrt(outputPos == header[RBBIDataWrapper.DH_RULESOURCE]);
-        dos.writeChars(strippedRules);
-        outputPos += strippedRules.length() * 2;
+        dos.write(strippedRulesUTF8, 0, strippedRulesUTF8.length);
+        dos.write(0);  // Null termination
+        outputPos += strippedRulesUTF8.length + 1;
         while (outputPos % 8 != 0) { // pad to an 8 byte boundary
             dos.write(0);
             outputPos += 1;
@@ -291,9 +295,7 @@
 
         //
         // UnicodeSet processing.
-        //    Munge the Unicode Sets to create a set of character categories.
-        //    Generate the mapping tables (TRIE) from input code points to
-        //    the character categories.
+        //    Munge the Unicode Sets to create an initial set of character categories.
         //
         fSetBuilder.buildRanges();
 
@@ -302,6 +304,10 @@
         //
         fForwardTable = new RBBITableBuilder(this, fForwardTree);
         fForwardTable.buildForwardTable();
+        // State table and character category optimization.
+        // Merge equivalent rows and columns.
+        // Note that this process alters the the initial set of character categories,
+        // causing the representation of UnicodeSets in the parse tree to become invalid.
         optimizeTables();
         fForwardTable.buildSafeReverseTable();
 
@@ -312,7 +318,9 @@
             fForwardTable.printRuleStatusTable();
             fForwardTable.printReverseTable();
         }
-
+        //    Generate the mapping tables (TRIE) from input code points to
+        //    the character categories.
+        //
         fSetBuilder.buildTrie();
         //
         //   Package up the compiled data, writing it to an output stream
diff --git a/android_icu4j/src/main/java/android/icu/text/RBBIRuleParseTable.java b/android_icu4j/src/main/java/android/icu/text/RBBIRuleParseTable.java
index 6a94f91..b3fb83c 100644
--- a/android_icu4j/src/main/java/android/icu/text/RBBIRuleParseTable.java
+++ b/android_icu4j/src/main/java/android/icu/text/RBBIRuleParseTable.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (c) 2003-2016, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/RBBIRuleScanner.java b/android_icu4j/src/main/java/android/icu/text/RBBIRuleScanner.java
index 77a76f0..3adc749 100644
--- a/android_icu4j/src/main/java/android/icu/text/RBBIRuleScanner.java
+++ b/android_icu4j/src/main/java/android/icu/text/RBBIRuleScanner.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2016, International Business Machines Corporation and others. All Rights Reserved.
@@ -698,16 +698,14 @@
     static String stripRules(String rules) {
         StringBuilder strippedRules = new StringBuilder();
         int rulesLength = rules.length();
-        boolean skippingSpaces = false;
 
         for (int idx = 0; idx < rulesLength; idx = rules.offsetByCodePoints(idx, 1)) {
             int cp = rules.codePointAt(idx);
             boolean whiteSpace = UCharacter.hasBinaryProperty(cp, UProperty.PATTERN_WHITE_SPACE);
-            if (skippingSpaces && whiteSpace) {
+            if (whiteSpace) {
                 continue;
             }
             strippedRules.appendCodePoint(cp);
-            skippingSpaces = whiteSpace;
         }
         return strippedRules.toString();
     }
diff --git a/android_icu4j/src/main/java/android/icu/text/RBBISetBuilder.java b/android_icu4j/src/main/java/android/icu/text/RBBISetBuilder.java
index c0ef19d..1d0f5e7 100644
--- a/android_icu4j/src/main/java/android/icu/text/RBBISetBuilder.java
+++ b/android_icu4j/src/main/java/android/icu/text/RBBISetBuilder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2003-2011, International Business Machines Corporation and    *
@@ -9,15 +9,16 @@
 */
 package android.icu.text;
 
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.List;
 
 import android.icu.impl.Assert;
-import android.icu.impl.Trie2Writable;
-import android.icu.impl.Trie2_16;
 import android.icu.text.RBBIRuleBuilder.IntPair;
+import android.icu.util.CodePointTrie;
+import android.icu.util.MutableCodePointTrie;
 
 //
 //  RBBISetBuilder   Handles processing of Unicode Sets from RBBI rules
@@ -29,7 +30,7 @@
 //                      by the RBBI rules.
 //                   -  compute a set of non-overlapping character ranges
 //                      with all characters within a range belonging to the same
-//                      set of input uniocde sets.
+//                      set of input unicode sets.
 //                   -  Derive a set of non-overlapping UnicodeSet (like things)
 //                      that will correspond to columns in the state table for
 //                      the RBBI execution engine.  All characters within one
@@ -41,23 +42,27 @@
 //
 class RBBISetBuilder {
     static class RangeDescriptor  {
-           int                fStartChar;      // Start of range, unicode 32 bit value.
-           int                fEndChar;        // End of range, unicode 32 bit value.
-           int                fNum;            // runtime-mapped input value for this range.
-           List<RBBINode>     fIncludesSets;    // vector of the the original
-                                                 //   Unicode sets that include this range.
-                                                //    (Contains ptrs to uset nodes)
-            RangeDescriptor   fNext;           // Next RangeDescriptor in the linked list.
+           int                fStartChar = 0;         // Start of range, unicode 32 bit value.
+           int                fEndChar = 0;           // End of range, unicode 32 bit value.
+           int                fNum = 0;               // runtime-mapped input value for this range.
+           boolean            fIncludesDict = false;  // True if the range includes $dictionary.
+           boolean            fFirstInGroup = false;  // True if first range in a group with the same fNum.
+           List<RBBINode>     fIncludesSets;          // vector of the the original
+                                                      //   Unicode sets that include this range.
+                                                      //    (Contains ptrs to uset nodes)
+            RangeDescriptor   fNext;                  // Next RangeDescriptor in the linked list.
 
             RangeDescriptor() {
-                fIncludesSets = new ArrayList<RBBINode>();
+                fIncludesSets = new ArrayList<>();
             }
 
             RangeDescriptor(RangeDescriptor other) {
                 fStartChar = other.fStartChar;
                 fEndChar   = other.fEndChar;
                 fNum       = other.fNum;
-                fIncludesSets = new ArrayList<RBBINode>(other.fIncludesSets);
+                fIncludesDict = other.fIncludesDict;
+                fFirstInGroup = other.fFirstInGroup;
+                fIncludesSets = new ArrayList<>(other.fIncludesSets);
             }
 
             //-------------------------------------------------------------------------------------
@@ -82,28 +87,18 @@
             }
 
 
-            //-------------------------------------------------------------------------------------
-            //
-            //          RangeDescriptor::setDictionaryFlag
-            //
-            //          Character Category Numbers that include characters from
-            //          the original Unicode Set named "dictionary" have bit 14
-            //          set to 1.  The RBBI runtime engine uses this to trigger
-            //          use of the word dictionary.
-            //
-            //          This function looks through the Unicode Sets that it
-            //          (the range) includes, and sets the bit in fNum when
-            //          "dictionary" is among them.
-            //
+            /**
+             * Test whether this range includes characters from the original Unicode Set named "dictionary".
+             *
+             * This function looks through the Unicode Sets that
+             * the range includes, checking for one named "dictionary"
+             */
             //          TODO:  a faster way would be to find the set node for
             //          "dictionary" just once, rather than looking it
             //          up by name every time.
             //
-            // -------------------------------------------------------------------------------------
-            void setDictionaryFlag() {
-                int i;
-
-                for (i=0; i<this.fIncludesSets.size(); i++) {
+            boolean isDictionaryRange() {
+                for (int i=0; i<this.fIncludesSets.size(); i++) {
                     RBBINode        usetNode    = fIncludesSets.get(i);
                     String          setName = "";
                     RBBINode        setRef = usetNode.fParent;
@@ -114,11 +109,10 @@
                         }
                     }
                     if (setName.equals("dictionary")) {
-                        this.fNum |= DICT_BIT;
-                        break;
+                        return true;
                     }
                 }
-
+                return false;
         }
     }
 
@@ -126,22 +120,22 @@
     RBBIRuleBuilder       fRB;             // The RBBI Rule Compiler that owns us.
     RangeDescriptor       fRangeList;      // Head of the linked list of RangeDescriptors
 
-    Trie2Writable         fTrie;           // The mapping TRIE that is the end result of processing
+    MutableCodePointTrie  fTrie;           // The mapping TRIE that is the end result of processing
                                            //  the Unicode Sets.
-    Trie2_16              fFrozenTrie;
+    CodePointTrie         fFrozenTrie;
 
-    // Groups correspond to character categories -
-    //       groups of ranges that are in the same original UnicodeSets.
-    //       fGroupCount is the index of the last used group.
-    //       fGroupCount+1 is also the number of columns in the RBBI state table being compiled.
-    //       State table column 0 is not used.  Column 1 is for end-of-input.
-    //       column 2 is for group 0.  Funny counting.
+    /**
+     * Number of range groups, which are groups of ranges that are in the same original UnicodeSets.
+     */
     int                fGroupCount;
+    /**
+     * The number of the first dictionary char category.
+     * If there are no Dictionary categories, set to the last category + 1.
+     */
+    int                fDictCategoriesStart;
 
     boolean             fSawBOF;
 
-    static final int    DICT_BIT = 0x4000;
-
 
     //------------------------------------------------------------------------
     //
@@ -238,25 +232,49 @@
         //
         //    Numbering: # 0  (state table column 0) is unused.
         //               # 1  is reserved - table column 1 is for end-of-input
-        //               # 2  is reserved - table column 2 is for beginning-in-input
+        //               # 2  is reserved - table column 2 is for beginning-of-input
         //               # 3  is the first range list.
         //
         RangeDescriptor rlSearchRange;
+        int dictGroupCount = 0;
+
         for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
             for (rlSearchRange=fRangeList; rlSearchRange != rlRange; rlSearchRange=rlSearchRange.fNext) {
                 if (rlRange.fIncludesSets.equals(rlSearchRange.fIncludesSets)) {
                     rlRange.fNum = rlSearchRange.fNum;
+                    rlRange.fIncludesDict = rlSearchRange.fIncludesDict;
                     break;
                 }
             }
             if (rlRange.fNum == 0) {
-                fGroupCount ++;
-                rlRange.fNum = fGroupCount+2;
-                rlRange.setDictionaryFlag();
-                addValToSets(rlRange.fIncludesSets, fGroupCount+2);
+                rlRange.fFirstInGroup = true;
+                if (rlRange.isDictionaryRange()) {
+                    rlRange.fNum = ++dictGroupCount;
+                    rlRange.fIncludesDict = true;
+                } else {
+                    fGroupCount++;
+                    rlRange.fNum = fGroupCount + 2;
+                    addValToSets(rlRange.fIncludesSets, fGroupCount + 2);
+                }
             }
         }
 
+        // Move the character category numbers for any dictionary ranges up, so that they
+        // immediately follow the non-dictionary ranges.
+
+        fDictCategoriesStart = fGroupCount + 3;
+        for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
+            if (rlRange.fIncludesDict) {
+                rlRange.fNum += fDictCategoriesStart - 1;
+                if (rlRange.fFirstInGroup) {
+                    addValToSets(rlRange.fIncludesSets, rlRange.fNum);
+                }
+            }
+        }
+        fGroupCount += dictGroupCount;
+
+
+
         // Handle input sets that contain the special string {eof}.
         //   Column 1 of the state table is reserved for EOF on input.
         //   Column 2 is reserved for before-the-start-input.
@@ -287,23 +305,21 @@
     }
 
 
+    private static final int MAX_CHAR_CATEGORIES_FOR_8BITS_TRIE = 255;
+
     /**
      * Build the Trie table for mapping UChar32 values to the corresponding
      * range group number.
      */
     void buildTrie() {
-        RangeDescriptor rlRange;
+        fTrie = new MutableCodePointTrie(0,       //   Initial value for all code points.
+                                         0);      //   Error value for out-of-range input.
 
-        fTrie = new Trie2Writable(0,       //   Initial value for all code points.
-                                  0);      //   Error value for out-of-range input.
-
-        for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
-            fTrie.setRange(
-                    rlRange.fStartChar,     // Range start
-                    rlRange.fEndChar,       // Range end (inclusive)
-                    rlRange.fNum,           // value for range
-                    true                    // Overwrite previously written values
-                    );
+        for (RangeDescriptor rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
+            fTrie.setRange(rlRange.fStartChar,     // Range start
+                           rlRange.fEndChar,       // Range end (inclusive)
+                           rlRange.fNum            // value for range
+                          );
         }
     }
 
@@ -315,16 +331,37 @@
     void mergeCategories(IntPair categories) {
         assert(categories.first >= 1);
         assert(categories.second > categories.first);
+        assert((categories.first <  fDictCategoriesStart && categories.second <  fDictCategoriesStart) ||
+                (categories.first >= fDictCategoriesStart && categories.second >= fDictCategoriesStart));
         for (RangeDescriptor rd = fRangeList; rd != null; rd = rd.fNext) {
-            int rangeNum = rd.fNum & ~DICT_BIT;
-            int rangeDict = rd.fNum & DICT_BIT;
+            int rangeNum = rd.fNum;
             if (rangeNum == categories.second) {
-                rd.fNum = categories.first | rangeDict;
+                rd.fNum = categories.first;
             } else if (rangeNum > categories.second) {
                 rd.fNum--;
             }
         }
         --fGroupCount;
+        if (categories.second <= fDictCategoriesStart) {
+            --fDictCategoriesStart;
+        }
+    }
+
+    //-----------------------------------------------------------------------------------
+    //
+    //          freezeTrieIfNotYet()    Ensure the trie is frozen. Shared code by getTrieSize
+    //                                  and serializeTrie.
+    //
+    //-----------------------------------------------------------------------------------
+    void freezeTrieIfNotYet()  {
+        if (fFrozenTrie == null) {
+            boolean use8Bits = getNumCharCategories() <= MAX_CHAR_CATEGORIES_FOR_8BITS_TRIE;
+            fFrozenTrie = fTrie.buildImmutable(CodePointTrie.Type.FAST,
+                                               use8Bits ?
+                                               CodePointTrie.ValueWidth.BITS_8 :
+                                               CodePointTrie.ValueWidth.BITS_16);
+            fTrie = null;
+        }
     }
 
     //-----------------------------------------------------------------------------------
@@ -333,11 +370,8 @@
     //
     //-----------------------------------------------------------------------------------
     int getTrieSize()  {
-        if (fFrozenTrie == null) {
-            fFrozenTrie = fTrie.toTrie2_16();
-            fTrie = null;
-        }
-        return fFrozenTrie.getSerializedLength();
+        freezeTrieIfNotYet();
+        return fFrozenTrie.toBinary(new ByteArrayOutputStream());
     }
 
 
@@ -347,11 +381,8 @@
     //
     //-----------------------------------------------------------------------------------
     void serializeTrie(OutputStream os) throws IOException {
-        if (fFrozenTrie == null) {
-            fFrozenTrie = fTrie.toTrie2_16();
-            fTrie = null;
-        }
-        fFrozenTrie.serialize(os);
+        freezeTrieIfNotYet();
+        fFrozenTrie.toBinary(os);
    }
 
     //------------------------------------------------------------------------
@@ -407,6 +438,16 @@
 
     //------------------------------------------------------------------------
     //
+    //   getDictCategoriesStart
+    //
+    //------------------------------------------------------------------------
+    int  getDictCategoriesStart() {
+        return fDictCategoriesStart;
+    }
+
+
+    //------------------------------------------------------------------------
+    //
     //           sawBOF
     //
     //------------------------------------------------------------------------
@@ -434,7 +475,6 @@
     }
 
 
-
     //------------------------------------------------------------------------
     //
     //           printRanges        A debugging function.
@@ -448,7 +488,7 @@
 
         System.out.print("\n\n Nonoverlapping Ranges ...\n");
         for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
-            System.out.print(" " + rlRange.fNum + "   " + rlRange.fStartChar + "-" + rlRange.fEndChar);
+            System.out.printf("%04x-%04x ", rlRange.fStartChar, rlRange.fEndChar);
 
             for (i=0; i<rlRange.fIncludesSets.size(); i++) {
                 RBBINode       usetNode    = rlRange.fIncludesSets.get(i);
@@ -476,20 +516,16 @@
     //------------------------------------------------------------------------
     ///CLOVER:OFF
     void printRangeGroups() {
-        RangeDescriptor       rlRange;
-        RangeDescriptor       tRange;
         int                    i;
-        int                    lastPrintedGroupNum = 0;
 
         System.out.print("\nRanges grouped by Unicode Set Membership...\n");
-        for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
-            int groupNum = rlRange.fNum & 0xbfff;
-            if (groupNum > lastPrintedGroupNum) {
-                lastPrintedGroupNum = groupNum;
+        for (RangeDescriptor rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
+            if (rlRange.fFirstInGroup) {
+                int groupNum = rlRange.fNum;
                 if (groupNum<10) {System.out.print(" ");}
                 System.out.print(groupNum + " ");
 
-                if ((rlRange.fNum & DICT_BIT) != 0) { System.out.print(" <DICT> ");}
+                if (groupNum >= fDictCategoriesStart) { System.out.print(" <DICT> ");}
 
                 for (i=0; i<rlRange.fIncludesSets.size(); i++) {
                     RBBINode       usetNode    = rlRange.fIncludesSets.get(i);
@@ -505,7 +541,7 @@
                 }
 
                 i = 0;
-                for (tRange = rlRange; tRange != null; tRange = tRange.fNext) {
+                for (RangeDescriptor tRange = rlRange; tRange != null; tRange = tRange.fNext) {
                     if (tRange.fNum == rlRange.fNum) {
                         if (i++ % 5 == 0) {
                             System.out.print("\n    ");
diff --git a/android_icu4j/src/main/java/android/icu/text/RBBISymbolTable.java b/android_icu4j/src/main/java/android/icu/text/RBBISymbolTable.java
index 2eabc05..eccfb7c 100644
--- a/android_icu4j/src/main/java/android/icu/text/RBBISymbolTable.java
+++ b/android_icu4j/src/main/java/android/icu/text/RBBISymbolTable.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
 *   Copyright (C) 2002-2009 International Business Machines Corporation   *
diff --git a/android_icu4j/src/main/java/android/icu/text/RBBITableBuilder.java b/android_icu4j/src/main/java/android/icu/text/RBBITableBuilder.java
index 73561f2..0e26eb6 100644
--- a/android_icu4j/src/main/java/android/icu/text/RBBITableBuilder.java
+++ b/android_icu4j/src/main/java/android/icu/text/RBBITableBuilder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2002-2016, International Business Machines
@@ -75,9 +75,17 @@
     /** Synthesized safe table, a List of row arrays.  */
     private List<short[]>    fSafeTable;
 
+    private static final int MAX_STATE_FOR_8BITS_TABLE = 255;
+
     /** Map from rule number (fVal in look ahead nodes) to sequential lookahead index. */
     int[] fLookAheadRuleMap;
 
+    /** Counter used when assigning lookahead rule numbers.
+     * Contains the last look-ahead number already in use.
+     * The first look-ahead number is 2; Number 1 (ACCEPTING_UNCONDITIONAL) is reserved
+     * for non-lookahead accepting states. See the declarations of RBBIStateTableRowT.   */
+    int  fLASlotsInUse = RBBIDataWrapper.ACCEPTING_UNCONDITIONAL;
+
     //-----------------------------------------------------------------------------
     //
     //  Constructor    for RBBITableBuilder.
@@ -615,7 +623,6 @@
        */
       void mapLookAheadRules() {
           fLookAheadRuleMap =  new int[fRB.fScanner.numRules() + 1];
-          int laSlotsInUse = 0;
 
           for (RBBIStateDescriptor sd: fDStates) {
               int laSlotForState = 0;
@@ -650,7 +657,7 @@
               }
 
               if (laSlotForState == 0) {
-                  laSlotForState = ++laSlotsInUse;
+                  laSlotForState = ++fLASlotsInUse;
               }
 
               // For each look ahead node covered by this state,
@@ -691,27 +698,26 @@
                endMarker = endMarkerNodes.get(i);
                for (n=0; n<fDStates.size(); n++) {
                    RBBIStateDescriptor sd = fDStates.get(n);
-                   //if (sd.fPositions.indexOf(endMarker) >= 0) {
                    if (sd.fPositions.contains(endMarker)) {
                        // Any non-zero value for fAccepting means this is an accepting node.
                        // The value is what will be returned to the user as the break status.
-                       // If no other value was specified, force it to -1.
+                       // If no other value was specified, force it to ACCEPTING_UNCONDITIONAL (1).
 
                        if (sd.fAccepting==0) {
                            // State hasn't been marked as accepting yet.  Do it now.
                            sd.fAccepting = fLookAheadRuleMap[endMarker.fVal];
                            if (sd.fAccepting == 0) {
-                               sd.fAccepting = -1;
+                               sd.fAccepting = RBBIDataWrapper.ACCEPTING_UNCONDITIONAL;
                            }
                        }
-                       if (sd.fAccepting==-1 && endMarker.fVal != 0) {
+                       if (sd.fAccepting==RBBIDataWrapper.ACCEPTING_UNCONDITIONAL && endMarker.fVal != 0) {
                            // Both lookahead and non-lookahead accepting for this state.
                            // Favor the look-ahead, because a look-ahead match needs to
                            // immediately stop the run-time engine. First match, not longest.
                            sd.fAccepting = fLookAheadRuleMap[endMarker.fVal];
                        }
                        // implicit else:
-                       // if sd.fAccepting already had a value other than 0 or -1, leave it be.
+                       // if sd.fAccepting already had a value other than 0 or 1, leave it be.
                    }
                }
            }
@@ -900,7 +906,13 @@
            int table_base = 0;
            int table_dupl = 0;
            for (; categories.first < numCols-1; ++categories.first) {
-               for (categories.second=categories.first+1; categories.second < numCols; ++categories.second) {
+               // Note: dictionary & non-dictionary columns cannot be merged.
+               //       The limitSecond value prevents considering mixed pairs.
+               //       Dictionary categories are >= DictCategoriesStart.
+               //       Non dict categories are   <  DictCategoriesStart.
+               int limitSecond = categories.first < fRB.fSetBuilder.getDictCategoriesStart() ?
+                   fRB.fSetBuilder.getDictCategoriesStart() : numCols;
+               for (categories.second=categories.first+1; categories.second < limitSecond; ++categories.second) {
                    for (int state=0; state<numStates; state++) {
                        RBBIStateDescriptor sd = fDStates.get(state);
                        table_base = sd.fDtran[categories.first];
@@ -1098,10 +1110,11 @@
            if (fRB.fTreeRoots[fRootIx] == null) {
                return 0;
            }
-           int size    = 16;    // The header of 4 ints, with no rows to the table.
+           int size    = RBBIDataWrapper.RBBIStateTable.fHeaderSize;    // The header, with no rows to the table.
            int numRows = fDStates.size();
            int numCols = fRB.fSetBuilder.getNumCharCategories();
-           int rowSize = 8 + 2*numCols;
+           boolean use8Bits = numRows <= MAX_STATE_FOR_8BITS_TABLE;
+           int rowSize = (use8Bits ? 1 : 2 ) * (RBBIDataWrapper.NEXTSTATES + numCols);
            size   += numRows * rowSize;
            size = (size + 7) & ~7;   // round up to a multiple of 8 bytes
            return size;
@@ -1126,13 +1139,23 @@
            Assert.assrt(fRB.fSetBuilder.getNumCharCategories() < 0x7fff &&
                fDStates.size() < 0x7fff);
            table.fNumStates = fDStates.size();
+           table.fDictCategoriesStart = fRB.fSetBuilder.getDictCategoriesStart();
+           table.fLookAheadResultsSize =
+                   fLASlotsInUse == RBBIDataWrapper.ACCEPTING_UNCONDITIONAL ? 0 : fLASlotsInUse + 1;
+           boolean use8Bits = table.fNumStates <= MAX_STATE_FOR_8BITS_TABLE;
 
            // Size of table size in shorts.
-           //  the "4" is the size of struct RBBIStateTableRow, the row header part only.
-           int rowLen = 4 + fRB.fSetBuilder.getNumCharCategories();   // Row Length in shorts.
-           int tableSize = (getTableSize() - 16) / 2;       // fTable length in shorts.
-           table.fTable = new short[tableSize];
-           table.fRowLen = rowLen * 2;                      // Row length in bytes.
+           int rowLen = RBBIDataWrapper.NEXTSTATES + fRB.fSetBuilder.getNumCharCategories();   // Row Length in shorts.
+           int tableSize;
+           if (use8Bits) {
+               tableSize = (getTableSize() - RBBIDataWrapper.RBBIStateTable.fHeaderSize);       // fTable length in bytes.
+               table.fTable = new char[tableSize];
+               table.fRowLen = rowLen;                          // Row length in bytes.
+           } else {
+               tableSize = (getTableSize() - RBBIDataWrapper.RBBIStateTable.fHeaderSize) / 2;   // fTable length in shorts.
+               table.fTable = new char[tableSize];
+               table.fRowLen = rowLen * 2;                      // Row length in bytes.
+           }
 
            if (fRB.fLookAheadHardBreak) {
                table.fFlags  |= RBBIDataWrapper.RBBI_LOOKAHEAD_HARD_BREAK;
@@ -1140,18 +1163,29 @@
            if (fRB.fSetBuilder.sawBOF()) {
                table.fFlags  |= RBBIDataWrapper.RBBI_BOF_REQUIRED;
            }
+           if (use8Bits) {
+               table.fFlags  |= RBBIDataWrapper.RBBI_8BITS_ROWS;
+           }
 
            int numCharCategories = fRB.fSetBuilder.getNumCharCategories();
            for (state=0; state<table.fNumStates; state++) {
                RBBIStateDescriptor sd = fDStates.get(state);
                int row = state*rowLen;
-               Assert.assrt (-32768 < sd.fAccepting && sd.fAccepting <= 32767);
-               Assert.assrt (-32768 < sd.fLookAhead && sd.fLookAhead <= 32767);
-               table.fTable[row + RBBIDataWrapper.ACCEPTING] = (short)sd.fAccepting;
-               table.fTable[row + RBBIDataWrapper.LOOKAHEAD] = (short)sd.fLookAhead;
-               table.fTable[row + RBBIDataWrapper.TAGIDX]    = (short)sd.fTagsIdx;
+               if (use8Bits) {
+                   Assert.assrt (0 <= sd.fAccepting && sd.fAccepting <= 255);
+                   Assert.assrt (0 <= sd.fLookAhead && sd.fLookAhead <= 255);
+               } else {
+                   Assert.assrt (0 <= sd.fAccepting && sd.fAccepting <= 0xffff);
+                   Assert.assrt (0 <= sd.fLookAhead && sd.fLookAhead <= 0xffff);
+               }
+               table.fTable[row + RBBIDataWrapper.ACCEPTING] = (char)sd.fAccepting;
+               table.fTable[row + RBBIDataWrapper.LOOKAHEAD] = (char)sd.fLookAhead;
+               table.fTable[row + RBBIDataWrapper.TAGSIDX]   = (char)sd.fTagsIdx;
                for (col=0; col<numCharCategories; col++) {
-                   table.fTable[row + RBBIDataWrapper.NEXTSTATES + col] = (short)sd.fDtran[col];
+                   if (use8Bits) {
+                       Assert.assrt (0 <= sd.fDtran[col] && sd.fDtran[col] <= MAX_STATE_FOR_8BITS_TABLE);
+                   }
+                   table.fTable[row + RBBIDataWrapper.NEXTSTATES + col] = (char)sd.fDtran[col];
                }
            }
            return table;
@@ -1251,10 +1285,12 @@
            if (fSafeTable == null) {
                return 0;
            }
-           int size    = 16;    // The header of 4 ints, with no rows to the table.
+           int size    = RBBIDataWrapper.RBBIStateTable.fHeaderSize;    // The header, with no rows to the table.
            int numRows = fSafeTable.size();
            int numCols = fSafeTable.get(0).length;
-           int rowSize = 8 + 2*numCols;
+           boolean use8Bits = numRows <= MAX_STATE_FOR_8BITS_TABLE;
+
+           int rowSize = (use8Bits ? 1 : 2 ) * (RBBIDataWrapper.NEXTSTATES + numCols);
            size += numRows * rowSize;
            // TODO: there are redundant round-up. Figure out best place, get rid of the rest.
            size = (size + 7) & ~7;   // round up to a multiple of 8 bytes
@@ -1270,23 +1306,33 @@
        RBBIDataWrapper.RBBIStateTable exportSafeTable() {
            RBBIDataWrapper.RBBIStateTable table = new RBBIDataWrapper.RBBIStateTable();
            table.fNumStates = fSafeTable.size();
+           boolean use8Bits = table.fNumStates <= MAX_STATE_FOR_8BITS_TABLE;
            int numCharCategories = fSafeTable.get(0).length;
 
            // Size of table size in shorts.
-           //  the "4" is the size of struct RBBIStateTableRow, the row header part only.
-           int rowLen = 4 + numCharCategories;
+           int rowLen = RBBIDataWrapper.NEXTSTATES + numCharCategories;
            // TODO: tableSize is basically numStates * numCharCategories,
            //       except for alignment padding. Clean up here, and in main exportTable().
-           int tableSize = (getSafeTableSize() - 16) / 2;   // fTable length in shorts.
-           table.fTable = new short[tableSize];
-           table.fRowLen = rowLen * 2;                      // Row length in bytes.
+           int tableSize = (getSafeTableSize() - RBBIDataWrapper.RBBIStateTable.fHeaderSize);     // fTable length in bytes.
+           if (use8Bits) {
+               table.fFlags  |= RBBIDataWrapper.RBBI_8BITS_ROWS;
+               table.fTable = new char[tableSize];
+               table.fRowLen = rowLen;                          // Row length in bytes.
+           } else {
+               tableSize /= 2;   // fTable length in shorts.
+               table.fTable = new char[tableSize];
+               table.fRowLen = rowLen * 2;                      // Row length in bytes.
+           }
 
            for (int state=0; state<table.fNumStates; state++) {
                short[] rowArray = fSafeTable.get(state);
                int row = state * rowLen;
 
                for (int col=0; col<numCharCategories; col++) {
-                   table.fTable[row + RBBIDataWrapper.NEXTSTATES + col] = rowArray[col];
+                   if (use8Bits) {
+                       Assert.assrt (rowArray[col] <= MAX_STATE_FOR_8BITS_TABLE);
+                   }
+                   table.fTable[row + RBBIDataWrapper.NEXTSTATES + col] = (char)rowArray[col];
                }
            }
            return table;
@@ -1321,12 +1367,12 @@
            System.out.print("state |           i n p u t     s y m b o l s \n");
            System.out.print("      | Acc  LA    Tag");
            for (c=0; c<fRB.fSetBuilder.getNumCharCategories(); c++) {
-               RBBINode.printInt(c, 3);
+               RBBINode.printInt(c, 4);
            }
            System.out.print("\n");
            System.out.print("      |---------------");
            for (c=0; c<fRB.fSetBuilder.getNumCharCategories(); c++) {
-               System.out.print("---");
+               System.out.print("----");
            }
            System.out.print("\n");
 
@@ -1340,7 +1386,7 @@
                RBBINode.printInt(sd.fTagsIdx, 6);
                System.out.print(" ");
                for (c=0; c<fRB.fSetBuilder.getNumCharCategories(); c++) {
-                   RBBINode.printInt(sd.fDtran[c], 3);
+                   RBBINode.printInt(sd.fDtran[c], 4);
                }
                System.out.print("\n");
            }
diff --git a/android_icu4j/src/main/java/android/icu/text/RBNFChinesePostProcessor.java b/android_icu4j/src/main/java/android/icu/text/RBNFChinesePostProcessor.java
index 4796505..8f742f1 100644
--- a/android_icu4j/src/main/java/android/icu/text/RBNFChinesePostProcessor.java
+++ b/android_icu4j/src/main/java/android/icu/text/RBNFChinesePostProcessor.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2009, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/RBNFPostProcessor.java b/android_icu4j/src/main/java/android/icu/text/RBNFPostProcessor.java
index 674b273..eb59024 100644
--- a/android_icu4j/src/main/java/android/icu/text/RBNFPostProcessor.java
+++ b/android_icu4j/src/main/java/android/icu/text/RBNFPostProcessor.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/RawCollationKey.java b/android_icu4j/src/main/java/android/icu/text/RawCollationKey.java
index 8169d2a..5d5b069 100644
--- a/android_icu4j/src/main/java/android/icu/text/RawCollationKey.java
+++ b/android_icu4j/src/main/java/android/icu/text/RawCollationKey.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/RbnfLenientScanner.java b/android_icu4j/src/main/java/android/icu/text/RbnfLenientScanner.java
index 0d48fe5..708bde0 100644
--- a/android_icu4j/src/main/java/android/icu/text/RbnfLenientScanner.java
+++ b/android_icu4j/src/main/java/android/icu/text/RbnfLenientScanner.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, International Business Machines Corporation and    *
@@ -59,4 +59,4 @@
      */
     @Deprecated
     int[] findText(String str, String key, int startingAt);
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/text/RbnfLenientScannerProvider.java b/android_icu4j/src/main/java/android/icu/text/RbnfLenientScannerProvider.java
index 3bb6a32..5883748 100644
--- a/android_icu4j/src/main/java/android/icu/text/RbnfLenientScannerProvider.java
+++ b/android_icu4j/src/main/java/android/icu/text/RbnfLenientScannerProvider.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, International Business Machines Corporation and    *
@@ -31,4 +31,4 @@
      */
     @Deprecated
     RbnfLenientScanner get(ULocale locale, String extras);
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/text/RelativeDateTimeFormatter.java b/android_icu4j/src/main/java/android/icu/text/RelativeDateTimeFormatter.java
index 78609e5..815e067 100644
--- a/android_icu4j/src/main/java/android/icu/text/RelativeDateTimeFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/text/RelativeDateTimeFormatter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2016, International Business Machines Corporation and
@@ -226,13 +226,13 @@
 
         /**
          * Hour
-         * @hide draft / provisional / internal are hidden on Android
+         * @hide Hide new API in Android temporarily
          */
         HOUR,
 
         /**
          * Minute
-         * @hide draft / provisional / internal are hidden on Android
+         * @hide Hide new API in Android temporarily
          */
         MINUTE,
     }
diff --git a/android_icu4j/src/main/java/android/icu/text/RemoveTransliterator.java b/android_icu4j/src/main/java/android/icu/text/RemoveTransliterator.java
index 1091634..3d523ee 100644
--- a/android_icu4j/src/main/java/android/icu/text/RemoveTransliterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/RemoveTransliterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/Replaceable.java b/android_icu4j/src/main/java/android/icu/text/Replaceable.java
index fe82c77..fb19299 100644
--- a/android_icu4j/src/main/java/android/icu/text/Replaceable.java
+++ b/android_icu4j/src/main/java/android/icu/text/Replaceable.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/ReplaceableContextIterator.java b/android_icu4j/src/main/java/android/icu/text/ReplaceableContextIterator.java
index 7fd9820..38924c5 100644
--- a/android_icu4j/src/main/java/android/icu/text/ReplaceableContextIterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/ReplaceableContextIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *
diff --git a/android_icu4j/src/main/java/android/icu/text/ReplaceableString.java b/android_icu4j/src/main/java/android/icu/text/ReplaceableString.java
index dbf5614..05d64fc 100644
--- a/android_icu4j/src/main/java/android/icu/text/ReplaceableString.java
+++ b/android_icu4j/src/main/java/android/icu/text/ReplaceableString.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/RuleBasedBreakIterator.java b/android_icu4j/src/main/java/android/icu/text/RuleBasedBreakIterator.java
index df416d1..e711557 100644
--- a/android_icu4j/src/main/java/android/icu/text/RuleBasedBreakIterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/RuleBasedBreakIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2016 International Business Machines Corporation and
@@ -27,10 +27,10 @@
 import android.icu.impl.ICUBinary;
 import android.icu.impl.ICUDebug;
 import android.icu.impl.RBBIDataWrapper;
-import android.icu.impl.Trie2;
 import android.icu.lang.UCharacter;
 import android.icu.lang.UProperty;
 import android.icu.lang.UScript;
+import android.icu.util.CodePointTrie;
 
 /**
  * Rule Based Break Iterator
@@ -70,6 +70,7 @@
     public static RuleBasedBreakIterator getInstanceFromCompiledRules(InputStream is) throws IOException {
         RuleBasedBreakIterator  This = new RuleBasedBreakIterator();
         This.fRData = RBBIDataWrapper.get(ICUBinary.getByteBufferFromInputStreamAndCloseStream(is));
+        This.fLookAheadMatches = new int[This.fRData.fFTable.fLookAheadResultsSize];
         return This;
     }
 
@@ -93,6 +94,7 @@
     public static RuleBasedBreakIterator getInstanceFromCompiledRules(ByteBuffer bytes) throws IOException {
         RuleBasedBreakIterator  This = new RuleBasedBreakIterator();
         This.fRData = RBBIDataWrapper.get(bytes);
+        This.fLookAheadMatches = new int[This.fRData.fFTable.fLookAheadResultsSize];
         return This;
     }
 
@@ -106,6 +108,7 @@
             ByteArrayOutputStream ruleOS = new ByteArrayOutputStream();
             compileRules(rules, ruleOS);
             fRData = RBBIDataWrapper.get(ByteBuffer.wrap(ruleOS.toByteArray()));
+            fLookAheadMatches = new int[fRData.fFTable.fLookAheadResultsSize];
         } catch (IOException e) {
             ///CLOVER:OFF
             // An IO exception can only arrive here if there is a bug in the RBBI Rule compiler,
@@ -136,7 +139,7 @@
         synchronized (gAllBreakEngines)  {
             result.fBreakEngines = new ArrayList<>(gAllBreakEngines);
         }
-        result.fLookAheadMatches = new LookAheadResults();
+        result.fLookAheadMatches = new int[fRData.fFTable.fLookAheadResultsSize];
         result.fBreakCache = result.new BreakCache(fBreakCache);
         result.fDictionaryCache = result.new DictionaryCache(fDictionaryCache);
         return result;
@@ -247,6 +250,11 @@
     private boolean            fDone;
 
     /**
+     *  Array of look-ahead tentative results.
+     */
+    private int[]              fLookAheadMatches;
+
+    /**
      *   Cache of previously determined boundary positions.
      */
     private BreakCache         fBreakCache = new BreakCache();
@@ -719,53 +727,6 @@
         }   // end synchronized(gAllBreakEngines)
     }
 
-    private static final int kMaxLookaheads = 8;
-    private static class LookAheadResults {
-        int      fUsedSlotLimit;
-        int[]    fPositions;
-        int[]    fKeys;
-
-        LookAheadResults() {
-            fUsedSlotLimit= 0;
-            fPositions = new int[kMaxLookaheads];
-            fKeys = new int[kMaxLookaheads];
-        }
-
-        int getPosition(int key) {
-            for (int i=0; i<fUsedSlotLimit; ++i) {
-                if (fKeys[i] == key) {
-                    return fPositions[i];
-                }
-            }
-            assert(false);
-            return -1;
-        }
-
-        void setPosition(int key, int position) {
-            int i;
-            for (i=0; i<fUsedSlotLimit; ++i) {
-                if (fKeys[i] == key) {
-                    fPositions[i] = position;
-                    return;
-                }
-            }
-            if (i >= kMaxLookaheads) {
-                assert(false);
-                i = kMaxLookaheads - 1;
-            }
-            fKeys[i] = key;
-            fPositions[i] = position;
-            assert(fUsedSlotLimit == i);
-            fUsedSlotLimit = i + 1;
-        }
-
-        void reset() {
-            fUsedSlotLimit = 0;
-        }
-    };
-    private LookAheadResults fLookAheadMatches = new LookAheadResults();
-
-
     /**
      * The State Machine Engine for moving forward is here.
      * This function is the heart of the RBBI run time engine.
@@ -800,9 +761,9 @@
 
         // caches for quicker access
         CharacterIterator text = fText;
-        Trie2 trie = fRData.fTrie;
+        CodePointTrie trie = fRData.fTrie;
 
-        short[] stateTable  = fRData.fFTable.fTable;
+        char[] stateTable  = fRData.fFTable.fTable;
         int initialPosition = fPosition;
         text.setIndex(initialPosition);
         int result          = initialPosition;
@@ -822,6 +783,7 @@
         int row             = fRData.getRowIndex(state);
         short category      = 3;
         int flagsState      = fRData.fFTable.fFlags;
+        int dictStart       = fRData.fFTable.fDictCategoriesStart;
         int mode            = RBBI_RUN;
         if ((flagsState & RBBIDataWrapper.RBBI_BOF_REQUIRED) != 0) {
             category = 2;
@@ -832,7 +794,6 @@
                 System.out.println(RBBIDataWrapper.intToString(state,7) + RBBIDataWrapper.intToString(category,6));
             }
         }
-        fLookAheadMatches.reset();
 
         // loop until we reach the end of the text or transition to state 0
         while (state != STOP_STATE) {
@@ -859,15 +820,9 @@
                 //
                 category = (short) trie.get(c);
 
-                // Check the dictionary bit in the character's category.
-                //    Counter is only used by dictionary based iterators (subclasses).
-                //    Chars that need to be handled by a dictionary have a flag bit set
-                //    in their category values.
-                //
-                if ((category & 0x4000) != 0)  {
+                // Check for categories that require word dictionary handling.
+                if (category >= dictStart) {
                     fDictionaryCharCount++;
-                    //  And off the dictionary flag bit.
-                    category &= ~0x4000;
                 }
 
                 if (TRACE) {
@@ -891,8 +846,8 @@
             // look up a state transition in the state table
             state = stateTable[row + RBBIDataWrapper.NEXTSTATES + category];
             row   = fRData.getRowIndex(state);
-
-            if (stateTable[row + RBBIDataWrapper.ACCEPTING] == -1) {
+            int accepting = stateTable[row + RBBIDataWrapper.ACCEPTING];
+            if (accepting == RBBIDataWrapper.ACCEPTING_UNCONDITIONAL) {
                 // Match found, common case
                 result = text.getIndex();
                 if (c >= UTF16.SUPPLEMENTARY_MIN_VALUE && c <= UTF16.CODEPOINT_MAX_VALUE) {
@@ -902,27 +857,25 @@
                 }
 
                 //  Remember the break status (tag) values.
-                fRuleStatusIndex = stateTable[row + RBBIDataWrapper.TAGIDX];
-            }
-
-            int completedRule = stateTable[row + RBBIDataWrapper.ACCEPTING];
-            if (completedRule > 0) {
+                fRuleStatusIndex = stateTable[row + RBBIDataWrapper.TAGSIDX];
+            } else if (accepting > RBBIDataWrapper.ACCEPTING_UNCONDITIONAL) {
                 // Lookahead match is completed
-                int lookaheadResult = fLookAheadMatches.getPosition(completedRule);
+                int lookaheadResult = fLookAheadMatches[accepting];
                 if (lookaheadResult >= 0) {
-                    fRuleStatusIndex = stateTable[row + RBBIDataWrapper.TAGIDX];
+                    fRuleStatusIndex = stateTable[row + RBBIDataWrapper.TAGSIDX];
                     fPosition = lookaheadResult;
                     return lookaheadResult;
                 }
             }
 
+
             // If we are at the position of the '/' in a look-ahead (hard break) rule;
             // record the current position, to be returned later, if the full rule matches.
             // TODO: Move this check before the previous check of fAccepting.
             //       This would enable hard-break rules with no following context.
             //       But there are line break test failures when trying this. Investigate.
             //       Issue ICU-20837
-            int rule =  stateTable[row + RBBIDataWrapper.LOOKAHEAD];
+            int rule = stateTable[row + RBBIDataWrapper.LOOKAHEAD];
             if (rule != 0) {
                 int  pos = text.getIndex();
                 if (c >= UTF16.SUPPLEMENTARY_MIN_VALUE && c <= UTF16.CODEPOINT_MAX_VALUE) {
@@ -930,7 +883,7 @@
                     // We want the beginning  of it.
                     pos--;
                 }
-                fLookAheadMatches.setPosition(rule, pos);
+                fLookAheadMatches[rule] = pos;
             }
 
 
@@ -975,14 +928,14 @@
      * @hide draft / provisional / internal are hidden on Android
      */
     private int handleSafePrevious(int fromPosition) {
-        int             state;
+        char            state;
         short           category = 0;
         int             result = 0;
 
         // caches for quicker access
         CharacterIterator text = fText;
-        Trie2 trie = fRData.fTrie;
-        short[] stateTable  = fRData.fRTable.fTable;
+        CodePointTrie trie = fRData.fTrie;
+        char[] stateTable  = fRData.fRTable.fTable;
 
         CISetIndex32(text, fromPosition);
         if (TRACE) {
@@ -1008,7 +961,6 @@
             //
             //  And off the dictionary flag bit. For reverse iteration it is not used.
             category = (short) trie.get(c);
-            category &= ~0x4000;
             if (TRACE) {
                 System.out.print("            " +  RBBIDataWrapper.intToString(text.getIndex(), 5));
                 System.out.print(RBBIDataWrapper.intToHexString(c, 10));
@@ -1196,9 +1148,10 @@
             fText.setIndex(rangeStart);
             int     c = CharacterIteration.current32(fText);
             category = (short)fRData.fTrie.get(c);
+            int dictStart = fRData.fFTable.fDictCategoriesStart;
 
             while(true) {
-                while((current = fText.getIndex()) < rangeEnd && (category & 0x4000) == 0) {
+                while((current = fText.getIndex()) < rangeEnd && (category < dictStart)) {
                     c = CharacterIteration.next32(fText);    // pre-increment
                     category = (short)fRData.fTrie.get(c);
                 }
diff --git a/android_icu4j/src/main/java/android/icu/text/RuleBasedCollator.java b/android_icu4j/src/main/java/android/icu/text/RuleBasedCollator.java
index 6012d44..bd522bc 100644
--- a/android_icu4j/src/main/java/android/icu/text/RuleBasedCollator.java
+++ b/android_icu4j/src/main/java/android/icu/text/RuleBasedCollator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
@@ -51,7 +51,7 @@
  * <p>A Collator is thread-safe only when frozen. See {{@link #isFrozen()} and {@link android.icu.util.Freezable}.
  *
  * <p>
- * Users are strongly encouraged to read the <a href="http://userguide.icu-project.org/collation">User
+ * Users are strongly encouraged to read the <a href="https://unicode-org.github.io/icu/userguide/collation">User
  * Guide</a> for more information about the collation service before using this class.
  *
  * <p>
@@ -68,8 +68,8 @@
  *
  * <p>
  * For information about the collation rule syntax and details about customization, please refer to the <a
- * href="http://userguide.icu-project.org/collation/customization">Collation customization</a> section of the
- * User Guide.
+ * href="https://unicode-org.github.io/icu/userguide/collation/customization">Collation customization</a>
+ * section of the User Guide.
  *
  * <p>
  * <strong>Note</strong> that there are some differences between the Collation rule syntax used in Java and ICU4J:
@@ -193,7 +193,7 @@
      * The collator will be based on the CLDR root collation, with the
      * attributes and re-ordering of the characters specified in the argument rules.
      * <p>
-     * See the User Guide's section on <a href="http://userguide.icu-project.org/collation/customization">
+     * See the User Guide's section on <a href="https://unicode-org.github.io/icu/userguide/collation/customization">
      * Collation Customization</a> for details on the rule syntax.
      *
      * @param rules
@@ -554,7 +554,7 @@
     /**
      * Sets the mode for the direction of SECONDARY weights to be used in French collation. The default value is false,
      * which treats SECONDARY weights in the order they appear. If set to true, the SECONDARY weights will be sorted
-     * backwards. See the section on <a href="http://userguide.icu-project.org/collation/architecture">
+     * backwards. See the section on <a href="https://unicode-org.github.io/icu/userguide/collation/architecture">
      * French collation</a> for more information.
      *
      * @param flag
@@ -601,7 +601,7 @@
      * first mode. A simple way to ignore accent differences in a string is to set the strength to PRIMARY and enable
      * case level.
      * <p>
-     * See the section on <a href="http://userguide.icu-project.org/collation/architecture">case
+     * See the section on <a href="https://unicode-org.github.io/icu/userguide/collation/architecture">case
      * level</a> for more information.
      *
      * @param flag
@@ -942,7 +942,7 @@
      *
      * <p>The root collation rules are an <i>approximation</i> of the root collator's sort order.
      * They are almost never used or useful at runtime and can be removed from the data.
-     * See <a href="http://userguide.icu-project.org/collation/customization#TOC-Building-on-Existing-Locales">User Guide:
+     * See <a href="https://unicode-org.github.io/icu/userguide/collation/customization#building-on-existing-locales">User Guide:
      * Collation Customization, Building on Existing Locales</a>
      *
      * <p>{@link #getRules()} should normally be used instead.
diff --git a/android_icu4j/src/main/java/android/icu/text/RuleBasedNumberFormat.java b/android_icu4j/src/main/java/android/icu/text/RuleBasedNumberFormat.java
index e09bfa8..a089dfa 100644
--- a/android_icu4j/src/main/java/android/icu/text/RuleBasedNumberFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/RuleBasedNumberFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
@@ -276,7 +276,7 @@
  *   <tr>
  *     <td style="width: 5%; vertical-align: top;"></td>
  *     <td style="width: 8%; vertical-align: top;">x.0:</td>
- *     <td valign="top">The rule is a <em>master rule</em>. If the full stop in
+ *     <td valign="top">The rule is a <em>default rule</em>. If the full stop in
  *     the middle of the rule name is replaced with the decimal point
  *     that is used in the language or DecimalFormatSymbols, then that rule will
  *     have precedence when formatting and parsing this rule. For example, some
@@ -314,9 +314,9 @@
  * algorithms: If the rule set is a regular rule set, do the following:
  *
  * <ul>
- *   <li>If the rule set includes a master rule (and the number was passed in as a <tt>double</tt>),
- *     use the master rule.&nbsp; (If the number being formatted was passed in as a <tt>long</tt>,
- *     the master rule is ignored.)</li>
+ *   <li>If the rule set includes a default rule (and the number was passed in as a <tt>double</tt>),
+ *     use the default rule.&nbsp; (If the number being formatted was passed in as a <tt>long</tt>,
+ *     the default rule is ignored.)</li>
  *   <li>If the number is negative, use the negative-number rule.</li>
  *   <li>If the number has a fractional part and is greater than 1, use the improper fraction
  *     rule.</li>
@@ -378,7 +378,7 @@
  *   <tr>
  *     <td style="width: 37;"></td>
  *     <td style="width: 23;"></td>
- *     <td style="width: 165; vertical-align: top;">in fraction or master rule</td>
+ *     <td style="width: 165; vertical-align: top;">in fraction or default rule</td>
  *     <td>Isolate the number's fractional part and format it.</td>
  *   </tr>
  *   <tr>
@@ -416,7 +416,7 @@
  *   <tr>
  *     <td style="width: 37;"></td>
  *     <td style="width: 23;"></td>
- *     <td style="width: 165; vertical-align: top;">in fraction or master rule</td>
+ *     <td style="width: 165; vertical-align: top;">in fraction or default rule</td>
  *     <td>Isolate the number's integral part and format it.</td>
  *   </tr>
  *   <tr>
@@ -453,7 +453,7 @@
  *   <tr>
  *     <td style="width: 37;"></td>
  *     <td style="width: 23;"></td>
- *     <td style="width: 165; vertical-align: top;">in master rule</td>
+ *     <td style="width: 165; vertical-align: top;">in default rule</td>
  *     <td>Omit the optional text if the number is an integer (same as specifying both an x.x
  *     rule and an x.0 rule)</td>
  *   </tr>
@@ -1131,7 +1131,7 @@
 
     /**
      * Formats the specified number according to the specified rule set.
-     * (If the specified rule set specifies a master ["x.0"] rule, this function
+     * (If the specified rule set specifies a default ["x.0"] rule, this function
      * ignores it.  Convert the number to a double first if you ned it.)  This
      * function preserves all the precision in the long-- it doesn't convert it
      * to a double.
@@ -1175,7 +1175,7 @@
     /**
      * Formats the specified number using the formatter's default rule set.
      * (The default rule set is the last public rule set defined in the description.)
-     * (If the specified rule set specifies a master ["x.0"] rule, this function
+     * (If the specified rule set specifies a default ["x.0"] rule, this function
      * ignores it.  Convert the number to a double first if you ned it.)  This
      * function preserves all the precision in the long-- it doesn't convert it
      * to a double.
diff --git a/android_icu4j/src/main/java/android/icu/text/RuleBasedTransliterator.java b/android_icu4j/src/main/java/android/icu/text/RuleBasedTransliterator.java
index 8646fbe..edcf60e 100644
--- a/android_icu4j/src/main/java/android/icu/text/RuleBasedTransliterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/RuleBasedTransliterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/SCSU.java b/android_icu4j/src/main/java/android/icu/text/SCSU.java
index 93abc5c..cdd8b66 100644
--- a/android_icu4j/src/main/java/android/icu/text/SCSU.java
+++ b/android_icu4j/src/main/java/android/icu/text/SCSU.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2007, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/ScientificNumberFormatter.java b/android_icu4j/src/main/java/android/icu/text/ScientificNumberFormatter.java
index c764356..23a8c27 100644
--- a/android_icu4j/src/main/java/android/icu/text/ScientificNumberFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/text/ScientificNumberFormatter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/SearchIterator.java b/android_icu4j/src/main/java/android/icu/text/SearchIterator.java
index 47a1fc4..1cc3d10 100644
--- a/android_icu4j/src/main/java/android/icu/text/SearchIterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/SearchIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/SelectFormat.java b/android_icu4j/src/main/java/android/icu/text/SelectFormat.java
index b3f0dea..bdd7239 100644
--- a/android_icu4j/src/main/java/android/icu/text/SelectFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/SelectFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/SimpleDateFormat.java b/android_icu4j/src/main/java/android/icu/text/SimpleDateFormat.java
index 67a6455..ff41df8 100644
--- a/android_icu4j/src/main/java/android/icu/text/SimpleDateFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/SimpleDateFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/SimpleFormatter.java b/android_icu4j/src/main/java/android/icu/text/SimpleFormatter.java
index 70555f4..f660eff 100644
--- a/android_icu4j/src/main/java/android/icu/text/SimpleFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/text/SimpleFormatter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/SourceTargetUtility.java b/android_icu4j/src/main/java/android/icu/text/SourceTargetUtility.java
index e6b71b9..8943dce 100644
--- a/android_icu4j/src/main/java/android/icu/text/SourceTargetUtility.java
+++ b/android_icu4j/src/main/java/android/icu/text/SourceTargetUtility.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2010-2011, Google, International Business Machines            *
diff --git a/android_icu4j/src/main/java/android/icu/text/SpoofChecker.java b/android_icu4j/src/main/java/android/icu/text/SpoofChecker.java
index dad8c07..bfe58f5 100644
--- a/android_icu4j/src/main/java/android/icu/text/SpoofChecker.java
+++ b/android_icu4j/src/main/java/android/icu/text/SpoofChecker.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ***************************************************************************
  * Copyright (C) 2008-2016 International Business Machines Corporation
@@ -577,8 +577,10 @@
          * Specify the bitmask of checks that will be performed by {@link SpoofChecker#failsChecks}. Calling this method
          * overwrites any checks that may have already been enabled. By default, all checks are enabled.
          *
-         * To enable specific checks and disable all others, the "whitelisted" checks should be ORed together. For
-         * example, to fail strings containing characters outside of the set specified by {@link #setAllowedChars} and
+         * To enable specific checks and disable all others,
+         * OR together only the bit constants for the desired checks.
+         * For example, to fail strings containing characters outside of
+         * the set specified by {@link #setAllowedChars} and
          * also strings that contain digits from mixed numbering systems:
          *
          * <pre>
@@ -587,8 +589,9 @@
          * }
          * </pre>
          *
-         * To disable specific checks and enable all others, the "blacklisted" checks should be ANDed away from
-         * ALL_CHECKS. For example, if you are not planning to use the {@link SpoofChecker#areConfusable} functionality,
+         * To disable specific checks and enable all others,
+         * start with ALL_CHECKS and "AND away" the not-desired checks.
+         * For example, if you are not planning to use the {@link SpoofChecker#areConfusable} functionality,
          * it is good practice to disable the CONFUSABLE check:
          *
          * <pre>
diff --git a/android_icu4j/src/main/java/android/icu/text/StringCharacterIterator.java b/android_icu4j/src/main/java/android/icu/text/StringCharacterIterator.java
index 9d91c94..6d99de5 100644
--- a/android_icu4j/src/main/java/android/icu/text/StringCharacterIterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/StringCharacterIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/StringMatcher.java b/android_icu4j/src/main/java/android/icu/text/StringMatcher.java
index 05364ee..ccfb9a6 100644
--- a/android_icu4j/src/main/java/android/icu/text/StringMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/text/StringMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2004, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/StringPrep.java b/android_icu4j/src/main/java/android/icu/text/StringPrep.java
index 0bd6a5b..02742c1 100644
--- a/android_icu4j/src/main/java/android/icu/text/StringPrep.java
+++ b/android_icu4j/src/main/java/android/icu/text/StringPrep.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/StringPrepParseException.java b/android_icu4j/src/main/java/android/icu/text/StringPrepParseException.java
index fd4812c..f11b2d6 100644
--- a/android_icu4j/src/main/java/android/icu/text/StringPrepParseException.java
+++ b/android_icu4j/src/main/java/android/icu/text/StringPrepParseException.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/StringReplacer.java b/android_icu4j/src/main/java/android/icu/text/StringReplacer.java
index 5d26203..de2050b 100644
--- a/android_icu4j/src/main/java/android/icu/text/StringReplacer.java
+++ b/android_icu4j/src/main/java/android/icu/text/StringReplacer.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2002-2007, International Business Machines Corporation
diff --git a/android_icu4j/src/main/java/android/icu/text/StringSearch.java b/android_icu4j/src/main/java/android/icu/text/StringSearch.java
index a419643..1c8b12a 100644
--- a/android_icu4j/src/main/java/android/icu/text/StringSearch.java
+++ b/android_icu4j/src/main/java/android/icu/text/StringSearch.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/StringTransform.java b/android_icu4j/src/main/java/android/icu/text/StringTransform.java
index f6b2282..24afbf3 100644
--- a/android_icu4j/src/main/java/android/icu/text/StringTransform.java
+++ b/android_icu4j/src/main/java/android/icu/text/StringTransform.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2009, Google, International Business Machines Corporation and    *
@@ -24,4 +24,4 @@
      */
     @Override
     public String transform(String source);
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/text/SymbolTable.java b/android_icu4j/src/main/java/android/icu/text/SymbolTable.java
index 3a100fa..286a8a0 100644
--- a/android_icu4j/src/main/java/android/icu/text/SymbolTable.java
+++ b/android_icu4j/src/main/java/android/icu/text/SymbolTable.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/ThaiBreakEngine.java b/android_icu4j/src/main/java/android/icu/text/ThaiBreakEngine.java
index 721cdc6..776046c 100644
--- a/android_icu4j/src/main/java/android/icu/text/ThaiBreakEngine.java
+++ b/android_icu4j/src/main/java/android/icu/text/ThaiBreakEngine.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/text/TimeUnitFormat.java b/android_icu4j/src/main/java/android/icu/text/TimeUnitFormat.java
index d6b7800..9be67e3 100644
--- a/android_icu4j/src/main/java/android/icu/text/TimeUnitFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/TimeUnitFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **************************************************************************
  * Copyright (C) 2008-2014, Google, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/TimeZoneFormat.java b/android_icu4j/src/main/java/android/icu/text/TimeZoneFormat.java
index bb52d2b..69b67fd 100644
--- a/android_icu4j/src/main/java/android/icu/text/TimeZoneFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/TimeZoneFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/TimeZoneNames.java b/android_icu4j/src/main/java/android/icu/text/TimeZoneNames.java
index a776f6a..c53e320 100644
--- a/android_icu4j/src/main/java/android/icu/text/TimeZoneNames.java
+++ b/android_icu4j/src/main/java/android/icu/text/TimeZoneNames.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/TitlecaseTransliterator.java b/android_icu4j/src/main/java/android/icu/text/TitlecaseTransliterator.java
index ad4c5a2..da9343c 100644
--- a/android_icu4j/src/main/java/android/icu/text/TitlecaseTransliterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/TitlecaseTransliterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 1996-2011, International Business Machines Corporation and
  * others. All Rights Reserved.
diff --git a/android_icu4j/src/main/java/android/icu/text/Transform.java b/android_icu4j/src/main/java/android/icu/text/Transform.java
index 4916902..99c3d83 100644
--- a/android_icu4j/src/main/java/android/icu/text/Transform.java
+++ b/android_icu4j/src/main/java/android/icu/text/Transform.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
  * Copyright (C) 2009-2010, Google, International Business Machines Corporation *
diff --git a/android_icu4j/src/main/java/android/icu/text/TransliterationRule.java b/android_icu4j/src/main/java/android/icu/text/TransliterationRule.java
index f828ace..da8b112 100644
--- a/android_icu4j/src/main/java/android/icu/text/TransliterationRule.java
+++ b/android_icu4j/src/main/java/android/icu/text/TransliterationRule.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/TransliterationRuleSet.java b/android_icu4j/src/main/java/android/icu/text/TransliterationRuleSet.java
index 76b950a..efac4a1 100644
--- a/android_icu4j/src/main/java/android/icu/text/TransliterationRuleSet.java
+++ b/android_icu4j/src/main/java/android/icu/text/TransliterationRuleSet.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/Transliterator.java b/android_icu4j/src/main/java/android/icu/text/Transliterator.java
index 2ecffac..283139c 100644
--- a/android_icu4j/src/main/java/android/icu/text/Transliterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/Transliterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/TransliteratorIDParser.java b/android_icu4j/src/main/java/android/icu/text/TransliteratorIDParser.java
index bf38643..c227dc5 100644
--- a/android_icu4j/src/main/java/android/icu/text/TransliteratorIDParser.java
+++ b/android_icu4j/src/main/java/android/icu/text/TransliteratorIDParser.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2002-2011, International Business Machines Corporation
diff --git a/android_icu4j/src/main/java/android/icu/text/TransliteratorParser.java b/android_icu4j/src/main/java/android/icu/text/TransliteratorParser.java
index 2ac536e..ea4ae1d 100644
--- a/android_icu4j/src/main/java/android/icu/text/TransliteratorParser.java
+++ b/android_icu4j/src/main/java/android/icu/text/TransliteratorParser.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2001-2011, International Business Machines
@@ -1494,7 +1494,7 @@
                 throw new RuntimeException("Variable range exhausted");
             }
             c = variableNext++;
-            // Set a placeholder in the master variables vector that will be
+            // Set a placeholder in the primary variables vector that will be
             // filled in later by setSegmentObject().  We know that we will get
             // called first because setSegmentObject() will call us.
             variablesVector.add(null);
diff --git a/android_icu4j/src/main/java/android/icu/text/TransliteratorRegistry.java b/android_icu4j/src/main/java/android/icu/text/TransliteratorRegistry.java
index 1f1cfb4..6039bc0 100644
--- a/android_icu4j/src/main/java/android/icu/text/TransliteratorRegistry.java
+++ b/android_icu4j/src/main/java/android/icu/text/TransliteratorRegistry.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2001-2016, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/UCharacterIterator.java b/android_icu4j/src/main/java/android/icu/text/UCharacterIterator.java
index cd4a222..22b9023 100644
--- a/android_icu4j/src/main/java/android/icu/text/UCharacterIterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/UCharacterIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/UFieldPosition.java b/android_icu4j/src/main/java/android/icu/text/UFieldPosition.java
index a37e994..31910b2 100644
--- a/android_icu4j/src/main/java/android/icu/text/UFieldPosition.java
+++ b/android_icu4j/src/main/java/android/icu/text/UFieldPosition.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/UFormat.java b/android_icu4j/src/main/java/android/icu/text/UFormat.java
index 30a8114..8a11cc8 100644
--- a/android_icu4j/src/main/java/android/icu/text/UFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/UFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/UForwardCharacterIterator.java b/android_icu4j/src/main/java/android/icu/text/UForwardCharacterIterator.java
index efa3e90..7363779 100644
--- a/android_icu4j/src/main/java/android/icu/text/UForwardCharacterIterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/UForwardCharacterIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/UTF16.java b/android_icu4j/src/main/java/android/icu/text/UTF16.java
index b7a6072..7086075 100644
--- a/android_icu4j/src/main/java/android/icu/text/UTF16.java
+++ b/android_icu4j/src/main/java/android/icu/text/UTF16.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/UnescapeTransliterator.java b/android_icu4j/src/main/java/android/icu/text/UnescapeTransliterator.java
index 6f89ef0..2ecc947 100644
--- a/android_icu4j/src/main/java/android/icu/text/UnescapeTransliterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/UnescapeTransliterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2001-2011, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/text/UnhandledBreakEngine.java b/android_icu4j/src/main/java/android/icu/text/UnhandledBreakEngine.java
index 027f4bb..b035185 100644
--- a/android_icu4j/src/main/java/android/icu/text/UnhandledBreakEngine.java
+++ b/android_icu4j/src/main/java/android/icu/text/UnhandledBreakEngine.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2016, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/java/android/icu/text/UnicodeCompressor.java b/android_icu4j/src/main/java/android/icu/text/UnicodeCompressor.java
index 422073c..545298a 100644
--- a/android_icu4j/src/main/java/android/icu/text/UnicodeCompressor.java
+++ b/android_icu4j/src/main/java/android/icu/text/UnicodeCompressor.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/UnicodeDecompressor.java b/android_icu4j/src/main/java/android/icu/text/UnicodeDecompressor.java
index 1678397..c33227f 100644
--- a/android_icu4j/src/main/java/android/icu/text/UnicodeDecompressor.java
+++ b/android_icu4j/src/main/java/android/icu/text/UnicodeDecompressor.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/UnicodeFilter.java b/android_icu4j/src/main/java/android/icu/text/UnicodeFilter.java
index 7fa7b64..619fdc5 100644
--- a/android_icu4j/src/main/java/android/icu/text/UnicodeFilter.java
+++ b/android_icu4j/src/main/java/android/icu/text/UnicodeFilter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/UnicodeMatcher.java b/android_icu4j/src/main/java/android/icu/text/UnicodeMatcher.java
index 6737024..ef294b0 100644
--- a/android_icu4j/src/main/java/android/icu/text/UnicodeMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/text/UnicodeMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/UnicodeNameTransliterator.java b/android_icu4j/src/main/java/android/icu/text/UnicodeNameTransliterator.java
index 96102ae..f6d01a8 100644
--- a/android_icu4j/src/main/java/android/icu/text/UnicodeNameTransliterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/UnicodeNameTransliterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 1996-2010, International Business Machines Corporation and
  * others. All Rights Reserved.
diff --git a/android_icu4j/src/main/java/android/icu/text/UnicodeReplacer.java b/android_icu4j/src/main/java/android/icu/text/UnicodeReplacer.java
index 0aaa0ce..9b2a77c 100644
--- a/android_icu4j/src/main/java/android/icu/text/UnicodeReplacer.java
+++ b/android_icu4j/src/main/java/android/icu/text/UnicodeReplacer.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2002, International Business Machines Corporation
diff --git a/android_icu4j/src/main/java/android/icu/text/UnicodeSet.java b/android_icu4j/src/main/java/android/icu/text/UnicodeSet.java
index 8480932..78a9158 100644
--- a/android_icu4j/src/main/java/android/icu/text/UnicodeSet.java
+++ b/android_icu4j/src/main/java/android/icu/text/UnicodeSet.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/UnicodeSetIterator.java b/android_icu4j/src/main/java/android/icu/text/UnicodeSetIterator.java
index b539353..79abd78 100644
--- a/android_icu4j/src/main/java/android/icu/text/UnicodeSetIterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/UnicodeSetIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/text/UnicodeSetSpanner.java b/android_icu4j/src/main/java/android/icu/text/UnicodeSetSpanner.java
index 1f26c13..99ce2d8 100644
--- a/android_icu4j/src/main/java/android/icu/text/UnicodeSetSpanner.java
+++ b/android_icu4j/src/main/java/android/icu/text/UnicodeSetSpanner.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/text/UppercaseTransliterator.java b/android_icu4j/src/main/java/android/icu/text/UppercaseTransliterator.java
index 6fedd9a..2865990 100644
--- a/android_icu4j/src/main/java/android/icu/text/UppercaseTransliterator.java
+++ b/android_icu4j/src/main/java/android/icu/text/UppercaseTransliterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2011, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/AnnualTimeZoneRule.java b/android_icu4j/src/main/java/android/icu/util/AnnualTimeZoneRule.java
index 3c3290f..65926dd 100644
--- a/android_icu4j/src/main/java/android/icu/util/AnnualTimeZoneRule.java
+++ b/android_icu4j/src/main/java/android/icu/util/AnnualTimeZoneRule.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/BasicTimeZone.java b/android_icu4j/src/main/java/android/icu/util/BasicTimeZone.java
index c8adf08..b885c25 100644
--- a/android_icu4j/src/main/java/android/icu/util/BasicTimeZone.java
+++ b/android_icu4j/src/main/java/android/icu/util/BasicTimeZone.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/BuddhistCalendar.java b/android_icu4j/src/main/java/android/icu/util/BuddhistCalendar.java
index 4fad74a..a72f82d 100644
--- a/android_icu4j/src/main/java/android/icu/util/BuddhistCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/BuddhistCalendar.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2012, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/ByteArrayWrapper.java b/android_icu4j/src/main/java/android/icu/util/ByteArrayWrapper.java
index b74974d..39890a7 100644
--- a/android_icu4j/src/main/java/android/icu/util/ByteArrayWrapper.java
+++ b/android_icu4j/src/main/java/android/icu/util/ByteArrayWrapper.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/BytesTrie.java b/android_icu4j/src/main/java/android/icu/util/BytesTrie.java
index 583fc3e..d7fa208 100644
--- a/android_icu4j/src/main/java/android/icu/util/BytesTrie.java
+++ b/android_icu4j/src/main/java/android/icu/util/BytesTrie.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2010-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/util/BytesTrieBuilder.java b/android_icu4j/src/main/java/android/icu/util/BytesTrieBuilder.java
index bef71f7..a0845d5 100644
--- a/android_icu4j/src/main/java/android/icu/util/BytesTrieBuilder.java
+++ b/android_icu4j/src/main/java/android/icu/util/BytesTrieBuilder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/util/CECalendar.java b/android_icu4j/src/main/java/android/icu/util/CECalendar.java
index a55143a..99af4c6 100644
--- a/android_icu4j/src/main/java/android/icu/util/CECalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/CECalendar.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2011, International Business Machines Corporation and    *
@@ -77,7 +77,7 @@
      * @param aLocale The locale for the new calendar.
      */
     protected CECalendar(Locale aLocale) {
-        this(TimeZone.getDefault(), aLocale);
+        this(TimeZone.forLocaleOrDefault(aLocale), aLocale);
     }
 
     /**
@@ -87,7 +87,7 @@
      * @param locale The locale for the new calendar.
      */
     protected CECalendar(ULocale locale) {
-        this(TimeZone.getDefault(), locale);
+        this(TimeZone.forULocaleOrDefault(locale), locale);
     }
 
     /**
diff --git a/android_icu4j/src/main/java/android/icu/util/Calendar.java b/android_icu4j/src/main/java/android/icu/util/Calendar.java
index 4c4a7e4..696c4ac 100644
--- a/android_icu4j/src/main/java/android/icu/util/Calendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/Calendar.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *   Copyright (C) 1996-2016, International Business Machines
  *   Corporation and others.  All Rights Reserved.
@@ -28,6 +28,7 @@
 import android.icu.impl.SoftCache;
 import android.icu.text.DateFormat;
 import android.icu.text.DateFormatSymbols;
+import android.icu.text.DateTimePatternGenerator;
 import android.icu.text.SimpleDateFormat;
 import android.icu.util.ULocale.Category;
 
@@ -1693,7 +1694,7 @@
             locale = ULocale.getDefault(Category.FORMAT);
         }
         if (tz == null) {
-            tz = TimeZone.getDefault();
+            tz = TimeZone.forULocaleOrDefault(locale);
         }
 
         Calendar cal = createInstance(locale);
@@ -1725,7 +1726,7 @@
 
     private static Calendar createInstance(ULocale locale) {
         Calendar cal = null;
-        TimeZone zone = TimeZone.getDefault();
+        TimeZone zone = TimeZone.forULocaleOrDefault(locale);
         CalType calType = getCalendarTypeForLocale(locale);
         if (calType == CalType.UNKNOWN) {
             // fallback to Gregorian
@@ -3407,6 +3408,13 @@
         "{1} {0}",
         "{1} {0}"
     };
+    // final fallback patterns
+    private static final String[] TIME_SKELETONS = {
+        "jmmsszzzz",    // Full
+        "jmmssz",       // Long
+        "jmmss",        // Medium
+        "jmm"           // Short
+    };
 
     static private DateFormat formatHelper(Calendar cal, ULocale loc, int dateStyle,
             int timeStyle) {
@@ -3557,7 +3565,39 @@
         int patternsSize = dtPatternsRb.getSize();
         String[] dateTimePatterns = new String[patternsSize];
         String[] dateTimePatternsOverrides = new String[patternsSize];
-        for (int i = 0; i < patternsSize; i++) {
+        int i = 0; // index for dateTimePatterns, dateTimePatternsOverrides
+
+        String baseLocID = locale.getBaseName();
+        if (baseLocID.length() > 0 && !baseLocID.equals("und")) {
+            ULocale baseLoc = new ULocale(baseLocID);
+            // The following is different from ICU4C, where we can get the valid locale
+            // for the SimpleDateFormat object. Here we do not have a SimpleDateFormat and
+            // valid locale for the Calendar is a bit meaningless.
+            ULocale validLoc = ULocale.addLikelySubtags(dtPatternsRb.getULocale());
+            if (validLoc != baseLoc) {
+                String baseReg = baseLoc.getCountry();
+                if ((baseReg.length() > 0 && !baseReg.equals(validLoc.getCountry()))
+                        || !baseLoc.getLanguage().equals(validLoc.getLanguage())) {
+                    // use DTPG if the standard time formats may have the wrong time cycle,
+                    // because the valid locale differs in important ways (region, language)
+                    // from the base locale.
+                    // We could *also* check whether they do actually have a mismatch with
+                    // the time cycle preferences for the region, but that is a lot more
+                    // work for little or no additional benefit, since just going ahead
+                    // and always synthesizing the time format as per the following should
+                    // create a locale-appropriate pattern with cycle that matches the
+                    // region preferences anyway.
+                    // In this case we get the first 4 entries of dateTimePatterns using
+                    // DateTimePatternGenerator, not resource data.
+                    DateTimePatternGenerator dtpg = DateTimePatternGenerator.getInstanceNoStdPat(locale);
+                    for (; i < 4; i++) {
+                        dateTimePatterns[i] = dtpg.getBestPattern(TIME_SKELETONS[i]);
+                    }
+                }
+            }
+        }
+
+        for (; i < patternsSize; i++) { // get all or remaining dateTimePatterns entries
             ICUResourceBundle concatenationPatternRb = (ICUResourceBundle) dtPatternsRb.get(i);
             switch (concatenationPatternRb.getType()) {
                 case UResourceBundle.STRING:
diff --git a/android_icu4j/src/main/java/android/icu/util/CaseInsensitiveString.java b/android_icu4j/src/main/java/android/icu/util/CaseInsensitiveString.java
index 3eacb83..55a91c0 100644
--- a/android_icu4j/src/main/java/android/icu/util/CaseInsensitiveString.java
+++ b/android_icu4j/src/main/java/android/icu/util/CaseInsensitiveString.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2013, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/CharsTrie.java b/android_icu4j/src/main/java/android/icu/util/CharsTrie.java
index ebfd7e3..ee17f21 100644
--- a/android_icu4j/src/main/java/android/icu/util/CharsTrie.java
+++ b/android_icu4j/src/main/java/android/icu/util/CharsTrie.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/util/CharsTrieBuilder.java b/android_icu4j/src/main/java/android/icu/util/CharsTrieBuilder.java
index 0de2f7c..b14d4b2 100644
--- a/android_icu4j/src/main/java/android/icu/util/CharsTrieBuilder.java
+++ b/android_icu4j/src/main/java/android/icu/util/CharsTrieBuilder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/util/ChineseCalendar.java b/android_icu4j/src/main/java/android/icu/util/ChineseCalendar.java
index b2ee08d..6a0e7e6 100644
--- a/android_icu4j/src/main/java/android/icu/util/ChineseCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/ChineseCalendar.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*********************************************************************
  * Copyright (C) 2000-2014, International Business Machines
  * Corporation and others. All Rights Reserved.
@@ -277,7 +277,7 @@
      * @param aLocale The given locale
      */
     public ChineseCalendar(Locale aLocale) {
-        this(TimeZone.getDefault(), ULocale.forLocale(aLocale), CHINESE_EPOCH_YEAR, CHINA_ZONE);
+        this(TimeZone.forLocaleOrDefault(aLocale), ULocale.forLocale(aLocale), CHINESE_EPOCH_YEAR, CHINA_ZONE);
     }
 
     /**
@@ -307,7 +307,7 @@
      * @param locale the given ulocale
      */
     public ChineseCalendar(ULocale locale) {
-        this(TimeZone.getDefault(), locale, CHINESE_EPOCH_YEAR, CHINA_ZONE);
+        this(TimeZone.forULocaleOrDefault(locale), locale, CHINESE_EPOCH_YEAR, CHINA_ZONE);
     }
 
     /**
diff --git a/android_icu4j/src/main/java/android/icu/util/CodePointMap.java b/android_icu4j/src/main/java/android/icu/util/CodePointMap.java
index d8938b1..1783edb 100644
--- a/android_icu4j/src/main/java/android/icu/util/CodePointMap.java
+++ b/android_icu4j/src/main/java/android/icu/util/CodePointMap.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // created: 2018may10 Markus W. Scherer
 
diff --git a/android_icu4j/src/main/java/android/icu/util/CodePointTrie.java b/android_icu4j/src/main/java/android/icu/util/CodePointTrie.java
index e6f90a5..e1af712 100644
--- a/android_icu4j/src/main/java/android/icu/util/CodePointTrie.java
+++ b/android_icu4j/src/main/java/android/icu/util/CodePointTrie.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // created: 2018may04 Markus W. Scherer
 
diff --git a/android_icu4j/src/main/java/android/icu/util/CompactByteArray.java b/android_icu4j/src/main/java/android/icu/util/CompactByteArray.java
index 62ade3d..8cd0bbf 100644
--- a/android_icu4j/src/main/java/android/icu/util/CompactByteArray.java
+++ b/android_icu4j/src/main/java/android/icu/util/CompactByteArray.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/CompactCharArray.java b/android_icu4j/src/main/java/android/icu/util/CompactCharArray.java
index 7e04036..29b0a1c 100644
--- a/android_icu4j/src/main/java/android/icu/util/CompactCharArray.java
+++ b/android_icu4j/src/main/java/android/icu/util/CompactCharArray.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/CopticCalendar.java b/android_icu4j/src/main/java/android/icu/util/CopticCalendar.java
index 13e29a8..a18fd16 100644
--- a/android_icu4j/src/main/java/android/icu/util/CopticCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/CopticCalendar.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/Currency.java b/android_icu4j/src/main/java/android/icu/util/Currency.java
index 4e141b3..da10569 100644
--- a/android_icu4j/src/main/java/android/icu/util/Currency.java
+++ b/android_icu4j/src/main/java/android/icu/util/Currency.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/util/CurrencyAmount.java b/android_icu4j/src/main/java/android/icu/util/CurrencyAmount.java
index ecc4ba7..0a29aea 100644
--- a/android_icu4j/src/main/java/android/icu/util/CurrencyAmount.java
+++ b/android_icu4j/src/main/java/android/icu/util/CurrencyAmount.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2004-2010, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/util/CurrencyServiceShim.java b/android_icu4j/src/main/java/android/icu/util/CurrencyServiceShim.java
index 0c7ff7d..1048c88 100644
--- a/android_icu4j/src/main/java/android/icu/util/CurrencyServiceShim.java
+++ b/android_icu4j/src/main/java/android/icu/util/CurrencyServiceShim.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2011, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/DangiCalendar.java b/android_icu4j/src/main/java/android/icu/util/DangiCalendar.java
index db56498..1991fae 100644
--- a/android_icu4j/src/main/java/android/icu/util/DangiCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/DangiCalendar.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/DateInterval.java b/android_icu4j/src/main/java/android/icu/util/DateInterval.java
index cac57f2..c792074 100644
--- a/android_icu4j/src/main/java/android/icu/util/DateInterval.java
+++ b/android_icu4j/src/main/java/android/icu/util/DateInterval.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  *   Copyright (C) 2008-2009, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/util/DateRule.java b/android_icu4j/src/main/java/android/icu/util/DateRule.java
index e75eaf4..175aec4 100644
--- a/android_icu4j/src/main/java/android/icu/util/DateRule.java
+++ b/android_icu4j/src/main/java/android/icu/util/DateRule.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/DateTimeRule.java b/android_icu4j/src/main/java/android/icu/util/DateTimeRule.java
index b787e68..3f26a3c 100644
--- a/android_icu4j/src/main/java/android/icu/util/DateTimeRule.java
+++ b/android_icu4j/src/main/java/android/icu/util/DateTimeRule.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/EasterHoliday.java b/android_icu4j/src/main/java/android/icu/util/EasterHoliday.java
index 12312f1..e5b0691 100644
--- a/android_icu4j/src/main/java/android/icu/util/EasterHoliday.java
+++ b/android_icu4j/src/main/java/android/icu/util/EasterHoliday.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/EthiopicCalendar.java b/android_icu4j/src/main/java/android/icu/util/EthiopicCalendar.java
index 4eeee00..cc59df1 100644
--- a/android_icu4j/src/main/java/android/icu/util/EthiopicCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/EthiopicCalendar.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2016, International Business Machines Corporation and
@@ -161,7 +161,7 @@
      * @param aLocale The locale for the new calendar.
      */
     public EthiopicCalendar(Locale aLocale) {
-        this(TimeZone.getDefault(), aLocale);
+        this(TimeZone.forLocaleOrDefault(aLocale), aLocale);
     }
 
     /**
@@ -171,7 +171,7 @@
      * @param locale The icu locale for the new calendar.
      */
     public EthiopicCalendar(ULocale locale) {
-        this(TimeZone.getDefault(), locale);
+        this(TimeZone.forULocaleOrDefault(locale), locale);
     }
 
     /**
diff --git a/android_icu4j/src/main/java/android/icu/util/Freezable.java b/android_icu4j/src/main/java/android/icu/util/Freezable.java
index 5bec657..84e406b 100644
--- a/android_icu4j/src/main/java/android/icu/util/Freezable.java
+++ b/android_icu4j/src/main/java/android/icu/util/Freezable.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2005-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/GenderInfo.java b/android_icu4j/src/main/java/android/icu/util/GenderInfo.java
index 415f4cd..4cd6099 100644
--- a/android_icu4j/src/main/java/android/icu/util/GenderInfo.java
+++ b/android_icu4j/src/main/java/android/icu/util/GenderInfo.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
  * Copyright (C) 2003-2016, Google, International Business Machines Corporation
diff --git a/android_icu4j/src/main/java/android/icu/util/GlobalizationPreferences.java b/android_icu4j/src/main/java/android/icu/util/GlobalizationPreferences.java
index 52e797f..7c15f09 100644
--- a/android_icu4j/src/main/java/android/icu/util/GlobalizationPreferences.java
+++ b/android_icu4j/src/main/java/android/icu/util/GlobalizationPreferences.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/util/GregorianCalendar.java b/android_icu4j/src/main/java/android/icu/util/GregorianCalendar.java
index bbe4098..5f69f8a 100644
--- a/android_icu4j/src/main/java/android/icu/util/GregorianCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/GregorianCalendar.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 1996-2016, International Business Machines
  * Corporation and others.  All Rights Reserved.
@@ -350,7 +350,7 @@
      * @param aLocale the given locale.
      */
     public GregorianCalendar(Locale aLocale) {
-        this(TimeZone.getDefault(), aLocale);
+        this(TimeZone.forLocaleOrDefault(aLocale), aLocale);
     }
 
     /**
@@ -359,7 +359,7 @@
      * @param locale the given ulocale.
      */
     public GregorianCalendar(ULocale locale) {
-        this(TimeZone.getDefault(), locale);
+        this(TimeZone.forULocaleOrDefault(locale), locale);
     }
 
     /**
diff --git a/android_icu4j/src/main/java/android/icu/util/HebrewCalendar.java b/android_icu4j/src/main/java/android/icu/util/HebrewCalendar.java
index 8127547..6978698 100644
--- a/android_icu4j/src/main/java/android/icu/util/HebrewCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/HebrewCalendar.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
@@ -63,7 +63,7 @@
  * <p>
  * This class should not be subclassed.</p>
  * <p>
- * HebrewCalendar usually should be instantiated using 
+ * HebrewCalendar usually should be instantiated using
  * {@link android.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
  * with the tag <code>"@calendar=hebrew"</code>.</p>
  *
@@ -82,28 +82,28 @@
     //-------------------------------------------------------------------------
 
 
-    /** 
-     * Constant for Tishri, the 1st month of the Hebrew year. 
+    /**
+     * Constant for Tishri, the 1st month of the Hebrew year.
      */
     public static final int TISHRI = 0;
 
     /**
-     * Constant for Heshvan, the 2nd month of the Hebrew year. 
+     * Constant for Heshvan, the 2nd month of the Hebrew year.
      */
     public static final int HESHVAN = 1;
 
     /**
-     * Constant for Kislev, the 3rd month of the Hebrew year. 
+     * Constant for Kislev, the 3rd month of the Hebrew year.
      */
     public static final int KISLEV = 2;
 
     /**
-     * Constant for Tevet, the 4th month of the Hebrew year. 
+     * Constant for Tevet, the 4th month of the Hebrew year.
      */
     public static final int TEVET = 3;
 
     /**
-     * Constant for Shevat, the 5th month of the Hebrew year. 
+     * Constant for Shevat, the 5th month of the Hebrew year.
      */
     public static final int SHEVAT = 4;
 
@@ -114,38 +114,38 @@
      */
     public static final int ADAR_1 = 5;
 
-    /** 
-     * Constant for the Adar, the 7th month of the Hebrew year. 
+    /**
+     * Constant for the Adar, the 7th month of the Hebrew year.
      */
     public static final int ADAR = 6;
 
     /**
-     * Constant for Nisan, the 8th month of the Hebrew year. 
+     * Constant for Nisan, the 8th month of the Hebrew year.
      */
     public static final int NISAN = 7;
 
     /**
-     * Constant for Iyar, the 9th month of the Hebrew year. 
+     * Constant for Iyar, the 9th month of the Hebrew year.
      */
     public static final int IYAR = 8;
 
     /**
-     * Constant for Sivan, the 10th month of the Hebrew year. 
+     * Constant for Sivan, the 10th month of the Hebrew year.
      */
     public static final int SIVAN = 9;
 
     /**
-     * Constant for Tammuz, the 11th month of the Hebrew year. 
+     * Constant for Tammuz, the 11th month of the Hebrew year.
      */
     public static final int TAMUZ = 10;
 
     /**
-     * Constant for Av, the 12th month of the Hebrew year. 
+     * Constant for Av, the 12th month of the Hebrew year.
      */
     public static final int AV = 11;
 
     /**
-     * Constant for Elul, the 13th month of the Hebrew year. 
+     * Constant for Elul, the 13th month of the Hebrew year.
      */
     public static final int ELUL = 12;
 
@@ -257,7 +257,7 @@
     //-------------------------------------------------------------------------
 
     private static CalendarCache cache = new CalendarCache();
-    
+
     //-------------------------------------------------------------------------
     // Constructors...
     //-------------------------------------------------------------------------
@@ -289,7 +289,7 @@
      * @param aLocale The locale for the new calendar.
      */
     public HebrewCalendar(Locale aLocale) {
-        this(TimeZone.getDefault(), aLocale);
+        this(TimeZone.forLocaleOrDefault(aLocale), aLocale);
     }
 
     /**
@@ -299,7 +299,7 @@
      * @param locale The locale for the new calendar.
      */
     public HebrewCalendar(ULocale locale) {
-        this(TimeZone.getDefault(), locale);
+        this(TimeZone.forULocaleOrDefault(locale), locale);
     }
 
     /**
@@ -399,7 +399,7 @@
     /**
      * Add a signed amount to a specified field, using this calendar's rules.
      * For example, to add three days to the current date, you can call
-     * <code>add(Calendar.DATE, 3)</code>. 
+     * <code>add(Calendar.DATE, 3)</code>.
      * <p>
      * When adding to certain fields, the values of other fields may conflict and
      * need to be changed.  For example, when adding one to the {@link #MONTH MONTH} field
@@ -422,10 +422,11 @@
      * @exception   IllegalArgumentException if the field is invalid or refers
      *              to a field that cannot be handled by this method.
      */
+    @Override
     public void add(int field, int amount)
     {
         switch (field) {
-        case MONTH: 
+        case MONTH:
             {
                 // We can't just do a set(MONTH, get(MONTH) + amount).  The
                 // reason is ADAR_1.  Suppose amount is +2 and we land in
@@ -469,7 +470,7 @@
                 pinField(DAY_OF_MONTH);
                 break;
             }
-            
+
         default:
             super.add(field, amount);
             break;
@@ -481,7 +482,7 @@
      * example, to roll the current date up by three days, you can call
      * <code>roll(Calendar.DATE, 3)</code>.  If the
      * field is rolled past its maximum allowable value, it will "wrap" back
-     * to its minimum and continue rolling.  
+     * to its minimum and continue rolling.
      * For example, calling <code>roll(Calendar.DATE, 10)</code>
      * on a Hebrew calendar set to "25 Av 5758" will result in the date "5 Av 5758".
      * <p>
@@ -507,6 +508,7 @@
      * @exception   IllegalArgumentException if the field is invalid or refers
      *              to a field that cannot be handled by this method.
      */
+    @Override
     public void roll(int field, int amount)
     {
         switch (field) {
@@ -514,7 +516,7 @@
             {
                 int month = get(MONTH);
                 int year = get(YEAR);
-                
+
                 boolean leapYear = isLeapYear(year);
                 int yearLength = monthsInYear(year);
                 int newMonth = month + (amount % yearLength);
@@ -546,14 +548,14 @@
     // "parts" (or halakim), which are 1/1080 of an hour, or 3 1/3 seconds.
     private static final long HOUR_PARTS = 1080;
     private static final long DAY_PARTS  = 24*HOUR_PARTS;
-    
+
     // An approximate value for the length of a lunar month.
     // It is used to calculate the approximate year and month of a given
     // absolute date.
     static private final int  MONTH_DAYS = 29;
     static private final long MONTH_FRACT = 12*HOUR_PARTS + 793;
     static private final long MONTH_PARTS = MONTH_DAYS*DAY_PARTS + MONTH_FRACT;
-    
+
     // The time of the new moon (in parts) on 1 Tishri, year 1 (the epoch)
     // counting from noon on the day before.  BAHARAD is an abbreviation of
     // Bet (Monday), Hey (5 hours from sunset), Resh-Daled (204).
@@ -582,9 +584,10 @@
     private static long startOfYear(int year)
     {
         long day = cache.get(year);
-        
+
         if (day == CalendarCache.EMPTY) {
-            int months = (235 * year - 234) / 19;           // # of months before year
+            // # of months before year
+            int months = (int)floorDivide((235 * (long)year - 234), 19);
 
             long frac = months * MONTH_FRACT + BAHARAD;     // Fractional part of day #
             day  = months * 29 + (frac / DAY_PARTS);        // Whole # part of calculation
@@ -682,6 +685,7 @@
 
     /**
      */
+    @Override
     protected int handleGetLimit(int field, int limitType) {
         return LIMITS[field][limitType];
     }
@@ -689,6 +693,7 @@
     /**
      * Returns the length of the given month in the given year
      */
+    @Override
     protected int handleGetMonthLength(int extendedYear, int month) {
         // Resolve out-of-range months.  This is necessary in order to
         // obtain the correct year.  We correct to
@@ -709,7 +714,7 @@
             case KISLEV:
                 // These two month lengths can vary
                 return MONTH_LENGTH[month][yearType(extendedYear)];
-                
+
             default:
                 // The rest are a fixed length
                 return MONTH_LENGTH[month][0];
@@ -719,6 +724,7 @@
     /**
      * Returns the number of days in the given Hebrew year
      */
+    @Override
     protected int handleGetYearLength(int eyear) {
         return (int)(startOfYear(eyear+1) - startOfYear(eyear));
     }
@@ -732,6 +738,7 @@
      * @hide original deprecated declaration
      * @hide draft / provisional / internal are hidden on Android
      */
+    @Override
     @Deprecated
     protected void validateField(int field) {
         if (field == MONTH && !isLeapYear(handleGetExtendedYear()) && internalGet(MONTH) == ADAR_1) {
@@ -755,7 +762,7 @@
      * <li>DAY_OF_MONTH
      * <li>DAY_OF_YEAR
      * <li>EXTENDED_YEAR</ul>
-     * 
+     *
      * Subclasses can refer to the DAY_OF_WEEK and DOW_LOCAL fields,
      * which will be set when this method is called.  Subclasses can
      * also call the getGregorianXxx() methods to obtain Gregorian
@@ -765,10 +772,11 @@
      * fields, that is, fields from BASE_FIELD_COUNT to
      * getFieldCount() - 1.
      */
+    @Override
     protected void handleComputeFields(int julianDay) {
         long d = julianDay - 347997;
-        long m = (d * DAY_PARTS) / MONTH_PARTS;         // Months (approx)
-        int year = (int)((19 * m + 234) / 235) + 1;     // Years (approx)
+        long m = floorDivide((d * DAY_PARTS), MONTH_PARTS); // Months (approx)
+        int year = (int)(floorDivide((19 * m + 234), 235) + 1);   // Years (approx)
         long ys  = startOfYear(year);                   // 1st day of year
         int dayOfYear = (int)(d - ys);
 
@@ -795,7 +803,7 @@
         internalSet(EXTENDED_YEAR, year);
         internalSet(MONTH, month);
         internalSet(DAY_OF_MONTH, dayOfMonth);
-        internalSet(DAY_OF_YEAR, dayOfYear);       
+        internalSet(DAY_OF_YEAR, dayOfYear);
     }
 
     //-------------------------------------------------------------------------
@@ -804,6 +812,7 @@
 
     /**
      */
+    @Override
     protected int handleGetExtendedYear() {
         int year;
         if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
@@ -817,6 +826,7 @@
     /**
      * Return JD of start of given month/year.
      */
+    @Override
     protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
 
         // Resolve out-of-range months.  This is necessary in order to
@@ -849,6 +859,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public String getType() {
         return "hebrew";
     }
diff --git a/android_icu4j/src/main/java/android/icu/util/HebrewHoliday.java b/android_icu4j/src/main/java/android/icu/util/HebrewHoliday.java
index 12b65dd..f74f76a 100644
--- a/android_icu4j/src/main/java/android/icu/util/HebrewHoliday.java
+++ b/android_icu4j/src/main/java/android/icu/util/HebrewHoliday.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/Holiday.java b/android_icu4j/src/main/java/android/icu/util/Holiday.java
index 97ef099..413f782 100644
--- a/android_icu4j/src/main/java/android/icu/util/Holiday.java
+++ b/android_icu4j/src/main/java/android/icu/util/Holiday.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2011, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/ICUCloneNotSupportedException.java b/android_icu4j/src/main/java/android/icu/util/ICUCloneNotSupportedException.java
index f145a23..6ad65c4 100644
--- a/android_icu4j/src/main/java/android/icu/util/ICUCloneNotSupportedException.java
+++ b/android_icu4j/src/main/java/android/icu/util/ICUCloneNotSupportedException.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/util/ICUException.java b/android_icu4j/src/main/java/android/icu/util/ICUException.java
index 1dbe328..6ccf10f 100644
--- a/android_icu4j/src/main/java/android/icu/util/ICUException.java
+++ b/android_icu4j/src/main/java/android/icu/util/ICUException.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/util/ICUInputTooLongException.java b/android_icu4j/src/main/java/android/icu/util/ICUInputTooLongException.java
new file mode 100644
index 0000000..e166c01
--- /dev/null
+++ b/android_icu4j/src/main/java/android/icu/util/ICUInputTooLongException.java
@@ -0,0 +1,55 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package android.icu.util;
+
+/**
+ * The input is impractically long for an operation.
+ * It is rejected because it may lead to problems such as excessive
+ * processing time, stack depth, or heap memory requirements.
+ *
+ * @hide Only a subset of ICU is exposed in Android
+ * @hide draft / provisional / internal are hidden on Android
+ */
+public class ICUInputTooLongException extends ICUException {
+    private static final long serialVersionUID = -2602876786689338226L;
+
+    /**
+     * Default constructor.
+     *
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public ICUInputTooLongException() {
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param message exception message string
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public ICUInputTooLongException(String message) {
+        super(message);
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param cause original exception
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public ICUInputTooLongException(Throwable cause) {
+        super(cause);
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param message exception message string
+     * @param cause original exception
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public ICUInputTooLongException(String message, Throwable cause) {
+        super(message, cause);
+    }
+}
diff --git a/android_icu4j/src/main/java/android/icu/util/ICUUncheckedIOException.java b/android_icu4j/src/main/java/android/icu/util/ICUUncheckedIOException.java
index a83c014..1dd6760 100644
--- a/android_icu4j/src/main/java/android/icu/util/ICUUncheckedIOException.java
+++ b/android_icu4j/src/main/java/android/icu/util/ICUUncheckedIOException.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/util/IllformedLocaleException.java b/android_icu4j/src/main/java/android/icu/util/IllformedLocaleException.java
index 959b2af..300a050 100644
--- a/android_icu4j/src/main/java/android/icu/util/IllformedLocaleException.java
+++ b/android_icu4j/src/main/java/android/icu/util/IllformedLocaleException.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2012, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/IndianCalendar.java b/android_icu4j/src/main/java/android/icu/util/IndianCalendar.java
index f999396..56425b2 100644
--- a/android_icu4j/src/main/java/android/icu/util/IndianCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/IndianCalendar.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2011, International Business Machines Corporation and    *
@@ -168,7 +168,7 @@
      * @param aLocale the given locale.
      */
     public IndianCalendar(Locale aLocale) {
-        this(TimeZone.getDefault(), aLocale);
+        this(TimeZone.forLocaleOrDefault(aLocale), aLocale);
     }
 
     /**
@@ -178,7 +178,7 @@
      * @param locale the given ulocale.
      */
     public IndianCalendar(ULocale locale) {
-       this(TimeZone.getDefault(), locale);
+        this(TimeZone.forULocaleOrDefault(locale), locale);
     }
 
     /**
@@ -315,7 +315,7 @@
             month = remainder[0];
         }
 
-        if(isGregorianLeap(extendedYear + INDIAN_ERA_START) && month == 0) {
+        if(isGregorianLeapYear(extendedYear + INDIAN_ERA_START) && month == 0) {
             return 31;
         }
 
@@ -332,20 +332,20 @@
     protected void handleComputeFields(int julianDay){
         double jdAtStartOfGregYear;
         int leapMonth, IndianYear, yday, IndianMonth, IndianDayOfMonth, mday;
-        int[] gregorianDay;          // Stores gregorian date corresponding to Julian day;
+        computeGregorianFields(julianDay);
+        int gregorianYear = getGregorianYear(); // Stores gregorian date corresponding to Julian day;
+        IndianYear = gregorianYear - INDIAN_ERA_START;            // Year in Saka era
 
-        gregorianDay = jdToGregorian(julianDay);                    // Gregorian date for Julian day
-        IndianYear = gregorianDay[0] - INDIAN_ERA_START;            // Year in Saka era
-        jdAtStartOfGregYear = gregorianToJD(gregorianDay[0], 1, 1); // JD at start of Gregorian year
+        jdAtStartOfGregYear = gregorianToJD(gregorianYear, 0 /* first month in 0 base */, 1); // JD at start of Gregorian year
         yday = (int)(julianDay - jdAtStartOfGregYear);              // Day number in Gregorian year (starting from 0)
 
         if (yday < INDIAN_YEAR_START) {
             //  Day is at the end of the preceding Saka year
             IndianYear -= 1;
-            leapMonth = isGregorianLeap(gregorianDay[0] - 1) ? 31 : 30; // Days in leapMonth this year, previous Gregorian year
+            leapMonth = isGregorianLeapYear(gregorianYear - 1) ? 31 : 30; // Days in leapMonth this year, previous Gregorian year
             yday += leapMonth + (31 * 5) + (30 * 3) + 10;
         } else {
-            leapMonth = isGregorianLeap(gregorianDay[0]) ? 31 : 30; // Days in leapMonth this year
+            leapMonth = isGregorianLeapYear(gregorianYear) ? 31 : 30; // Days in leapMonth this year
             yday -= INDIAN_YEAR_START;
         }
 
@@ -436,19 +436,19 @@
      * @param month  The month according to Indian calendar (between 1 to 12)
      * @param date   The date in month 
      */
-    private static double IndianToJD(int year, int month, int date) {
+    private double IndianToJD(int year, int month, int date) {
        int leapMonth, gyear, m;
        double start, jd;
 
        gyear = year + INDIAN_ERA_START;
 
 
-       if(isGregorianLeap(gyear)) {
+       if(isGregorianLeapYear(gyear)) {
           leapMonth = 31;
-          start = gregorianToJD(gyear, 3, 21);
+          start = gregorianToJD(gyear, 2 /* third month in 0 based */, 21);
        } else {
           leapMonth = 30;
-          start = gregorianToJD(gyear, 3, 22);
+          start = gregorianToJD(gyear, 2 /* third month in 0 based */, 22);
        }
 
        if (month == 1) {
@@ -475,74 +475,10 @@
      * @param month  The month according to Gregorian calendar (between 0 to 11)
      * @param date   The date in month 
      */
-    private static double gregorianToJD(int year, int month, int date) {
-       double JULIAN_EPOCH = 1721425.5;
-       int y = year - 1;
-       int result = (365 * y)
-                  + (y / 4)
-                  - (y / 100)
-                  + (y / 400)
-                  + (((367 * month) - 362) / 12)
-                  + ((month <= 2) ? 0 : (isGregorianLeap(year) ? -1 : -2))
-                  + date;
-       return result - 1 + JULIAN_EPOCH;
-    }
-    
-    /*
-     * The following function is not needed for basic calendar functioning.
-     * This routine converts a julian day (jd) to the corresponding date in Gregorian calendar"
-     * @param jd The Julian date in Julian Calendar which is to be converted to Indian date"
-     */
-    private static int[] jdToGregorian(double jd) {
-       double JULIAN_EPOCH = 1721425.5;
-       double wjd, depoch, quadricent, dqc, cent, dcent, quad, dquad, yindex, yearday, leapadj;
-       int year, month, day;
-       
-       wjd = Math.floor(jd - 0.5) + 0.5;
-       depoch = wjd - JULIAN_EPOCH;
-       quadricent = Math.floor(depoch / 146097);
-       dqc = depoch % 146097;
-       cent = Math.floor(dqc / 36524);
-       dcent = dqc % 36524;
-       quad = Math.floor(dcent / 1461);
-       dquad = dcent % 1461;
-       yindex = Math.floor(dquad / 365);
-       year = (int)((quadricent * 400) + (cent * 100) + (quad * 4) + yindex);
-       
-       if (!((cent == 4) || (yindex == 4))) {
-          year++;
-       }
-       
-       yearday = wjd - gregorianToJD(year, 1, 1);
-       leapadj = ((wjd < gregorianToJD(year, 3, 1)) ? 0
-             :
-             (isGregorianLeap(year) ? 1 : 2)
-             );
-       
-       month = (int)Math.floor((((yearday + leapadj) * 12) + 373) / 367);
-       day = (int)(wjd - gregorianToJD(year, month, 1)) + 1;
-
-       int[] julianDate = new int[3];
-       
-       julianDate[0] = year;
-       julianDate[1] = month;
-       julianDate[2] = day;
-       
-       return julianDate;
-    }
-    
-    /*
-     * The following function is not needed for basic calendar functioning.
-     * This routine checks if the Gregorian year is a leap year"
-     * @param year      The year in Gregorian Calendar
-     */
-    private static boolean isGregorianLeap(int year)
-    {
-       return ((year % 4) == 0) &&
-          (!(((year % 100) == 0) && ((year % 400) != 0)));
+    private double gregorianToJD(int year, int month, int date) {
+       return computeGregorianMonthStart(year, month) + date - 0.5;
     }
 
-    
     /**
      * {@inheritDoc}
      */
diff --git a/android_icu4j/src/main/java/android/icu/util/InitialTimeZoneRule.java b/android_icu4j/src/main/java/android/icu/util/InitialTimeZoneRule.java
index b1bf75d..cafcfff 100644
--- a/android_icu4j/src/main/java/android/icu/util/InitialTimeZoneRule.java
+++ b/android_icu4j/src/main/java/android/icu/util/InitialTimeZoneRule.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2008, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/IslamicCalendar.java b/android_icu4j/src/main/java/android/icu/util/IslamicCalendar.java
index a087af4..972f2e5 100644
--- a/android_icu4j/src/main/java/android/icu/util/IslamicCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/IslamicCalendar.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
@@ -195,7 +195,7 @@
      */
     public IslamicCalendar(Locale aLocale)
     {
-        this(TimeZone.getDefault(), aLocale);
+        this(TimeZone.forLocaleOrDefault(aLocale), aLocale);
     }
 
     /**
@@ -206,7 +206,7 @@
      */
     public IslamicCalendar(ULocale locale)
     {
-        this(TimeZone.getDefault(), locale);
+        this(TimeZone.forULocaleOrDefault(locale), locale);
     }
 
     /**
@@ -839,8 +839,8 @@
                 months--;
             }
 
-            year = months / 12 + 1;
-            month = months % 12;
+            year = months >=  0 ? ((months / 12) + 1) : ((months + 1 ) / 12);
+            month = ((months % 12) + 12 ) % 12;
         } else if (cType == CalculationType.ISLAMIC_UMALQURA) {
             long umalquraStartdays = yearStart(UMALQURA_YEAR_START);
             if( days < umalquraStartdays) {
diff --git a/android_icu4j/src/main/java/android/icu/util/JapaneseCalendar.java b/android_icu4j/src/main/java/android/icu/util/JapaneseCalendar.java
index 44867ff..06927b5 100644
--- a/android_icu4j/src/main/java/android/icu/util/JapaneseCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/JapaneseCalendar.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/LocaleData.java b/android_icu4j/src/main/java/android/icu/util/LocaleData.java
index 221e936..6c6249c 100644
--- a/android_icu4j/src/main/java/android/icu/util/LocaleData.java
+++ b/android_icu4j/src/main/java/android/icu/util/LocaleData.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **************************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation,
diff --git a/android_icu4j/src/main/java/android/icu/util/LocaleMatcher.java b/android_icu4j/src/main/java/android/icu/util/LocaleMatcher.java
index 39a54ac..d2bb79c 100644
--- a/android_icu4j/src/main/java/android/icu/util/LocaleMatcher.java
+++ b/android_icu4j/src/main/java/android/icu/util/LocaleMatcher.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ****************************************************************************************
  * Copyright (C) 2009-2016, Google, Inc.; International Business Machines Corporation
@@ -90,20 +90,15 @@
      *
      * @see LocaleMatcher.Builder#setFavorSubtag(LocaleMatcher.FavorSubtag)
      * @hide Only a subset of ICU is exposed in Android
-     * @hide draft / provisional / internal are hidden on Android
      */
     public enum FavorSubtag {
         /**
          * Language differences are most important, then script differences, then region differences.
          * (This is the default behavior.)
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
         LANGUAGE,
         /**
          * Makes script differences matter relatively more than language differences.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
         SCRIPT
     }
@@ -114,13 +109,10 @@
      *
      * @see LocaleMatcher.Builder#setDemotionPerDesiredLocale(LocaleMatcher.Demotion)
      * @hide Only a subset of ICU is exposed in Android
-     * @hide draft / provisional / internal are hidden on Android
      */
     public enum Demotion {
         /**
          * All desired locales are treated equally.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
         NONE,
         /**
@@ -146,8 +138,6 @@
          *       (As of CLDR 35 there is no such case, but
          *        this is possible in future versions of the data.)
          * </ul>
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
         REGION
     }
@@ -190,7 +180,6 @@
      * Data for the best-matching pair of a desired and a supported locale.
      *
      * @hide Only a subset of ICU is exposed in Android
-     * @hide draft / provisional / internal are hidden on Android
      */
     public static final class Result {
         private final ULocale desiredULocale;
@@ -216,7 +205,6 @@
          * null if the list of desired locales is empty or if none matched well enough.
          *
          * @return the best-matching desired locale, or null.
-         * @hide draft / provisional / internal are hidden on Android
          */
         public ULocale getDesiredULocale() {
             return desiredULocale == null && desiredLocale != null ?
@@ -227,7 +215,6 @@
          * null if the list of desired locales is empty or if none matched well enough.
          *
          * @return the best-matching desired locale, or null.
-         * @hide draft / provisional / internal are hidden on Android
          */
         public Locale getDesiredLocale() {
             return desiredLocale == null && desiredULocale != null ?
@@ -237,21 +224,19 @@
         /**
          * Returns the best-matching supported locale.
          * If none matched well enough, this is the default locale.
-         * The default locale is null if the list of supported locales is empty and
-         * no explicit default locale is set.
+         * The default locale is null if {@link Builder#setNoDefaultLocale()} was called,
+         * or if the list of supported locales is empty and no explicit default locale is set.
          *
          * @return the best-matching supported locale, or null.
-         * @hide draft / provisional / internal are hidden on Android
          */
         public ULocale getSupportedULocale() { return supportedULocale; }
         /**
          * Returns the best-matching supported locale.
          * If none matched well enough, this is the default locale.
-         * The default locale is null if the list of supported locales is empty and
-         * no explicit default locale is set.
+         * The default locale is null if {@link Builder#setNoDefaultLocale()} was called,
+         * or if the list of supported locales is empty and no explicit default locale is set.
          *
          * @return the best-matching supported locale, or null.
-         * @hide draft / provisional / internal are hidden on Android
          */
         public Locale getSupportedLocale() { return supportedLocale; }
 
@@ -260,7 +245,6 @@
          * -1 if the list of desired locales is empty or if none matched well enough.
          *
          * @return the index of the best-matching desired locale, or -1.
-         * @hide draft / provisional / internal are hidden on Android
          */
         public int getDesiredIndex() { return desiredIndex; }
 
@@ -272,7 +256,6 @@
          * -1 if the list of supported locales is empty or if none matched well enough.
          *
          * @return the index of the best-matching supported locale, or -1.
-         * @hide draft / provisional / internal are hidden on Android
          */
         public int getSupportedIndex() { return supportedIndex; }
 
@@ -286,7 +269,6 @@
          * <p>Example: desired=ar-SA-u-nu-latn, supported=ar-EG, resolved locale=ar-SA-u-nu-latn
          *
          * @return a locale combining the best-matching desired and supported locales.
-         * @hide draft / provisional / internal are hidden on Android
          */
         public ULocale makeResolvedULocale() {
             ULocale bestDesired = getDesiredULocale();
@@ -331,7 +313,6 @@
          * <p>Example: desired=ar-SA-u-nu-latn, supported=ar-EG, resolved locale=ar-SA-u-nu-latn
          *
          * @return a locale combining the best-matching desired and supported locales.
-         * @hide draft / provisional / internal are hidden on Android
          */
         public Locale makeResolvedLocale() {
             ULocale resolved = makeResolvedULocale();
@@ -362,15 +343,17 @@
      *
      * @see LocaleMatcher#builder()
      * @hide Only a subset of ICU is exposed in Android
-     * @hide draft / provisional / internal are hidden on Android
      */
     public static final class Builder {
         private List<ULocale> supportedLocales;
         private int thresholdDistance = -1;
         private Demotion demotion;
         private ULocale defaultLocale;
+        private boolean withDefault = true;
         private FavorSubtag favor;
         private Direction direction;
+        private ULocale maxDistanceDesired;
+        private ULocale maxDistanceSupported;
 
         private Builder() {}
 
@@ -381,7 +364,6 @@
          *
          * @param locales the string of locales to set, to be parsed like LocalePriorityList does
          * @return this Builder object
-         * @hide draft / provisional / internal are hidden on Android
          */
         public Builder setSupportedLocales(String locales) {
             return setSupportedULocales(LocalePriorityList.add(locales).build().getULocales());
@@ -394,7 +376,6 @@
          *
          * @param locales the list of locales
          * @return this Builder object
-         * @hide draft / provisional / internal are hidden on Android
          */
         public Builder setSupportedULocales(Collection<ULocale> locales) {
             supportedLocales = new ArrayList<>(locales);
@@ -408,7 +389,6 @@
          *
          * @param locales the list of locale
          * @return this Builder object
-         * @hide draft / provisional / internal are hidden on Android
          */
         public Builder setSupportedLocales(Collection<Locale> locales) {
             supportedLocales = new ArrayList<>(locales.size());
@@ -424,7 +404,6 @@
          *
          * @param locale another locale
          * @return this Builder object
-         * @hide draft / provisional / internal are hidden on Android
          */
         public Builder addSupportedULocale(ULocale locale) {
             if (supportedLocales == null) {
@@ -440,35 +419,52 @@
          *
          * @param locale another locale
          * @return this Builder object
-         * @hide draft / provisional / internal are hidden on Android
          */
         public Builder addSupportedLocale(Locale locale) {
             return addSupportedULocale(ULocale.forLocale(locale));
         }
 
         /**
-         * Sets the default locale; if null, or if it is not set explicitly,
-         * then the first supported locale is used as the default locale.
+         * Sets no default locale.
+         * There will be no explicit or implicit default locale.
+         * If there is no good match, then the matcher will return null for the
+         * best supported locale.
          *
-         * @param defaultLocale the default locale
-         * @return this Builder object
          * @hide draft / provisional / internal are hidden on Android
          */
-        public Builder setDefaultULocale(ULocale defaultLocale) {
-            this.defaultLocale = defaultLocale;
+        public Builder setNoDefaultLocale() {
+            this.defaultLocale = null;
+            withDefault = false;
             return this;
         }
 
         /**
          * Sets the default locale; if null, or if it is not set explicitly,
          * then the first supported locale is used as the default locale.
+         * There is no default locale at all (null will be returned instead)
+         * if {@link #setNoDefaultLocale()} is called.
          *
          * @param defaultLocale the default locale
          * @return this Builder object
-         * @hide draft / provisional / internal are hidden on Android
+         */
+        public Builder setDefaultULocale(ULocale defaultLocale) {
+            this.defaultLocale = defaultLocale;
+            withDefault = true;
+            return this;
+        }
+
+        /**
+         * Sets the default locale; if null, or if it is not set explicitly,
+         * then the first supported locale is used as the default locale.
+         * There is no default locale at all (null will be returned instead)
+         * if {@link #setNoDefaultLocale()} is called.
+         *
+         * @param defaultLocale the default locale
+         * @return this Builder object
          */
         public Builder setDefaultLocale(Locale defaultLocale) {
             this.defaultLocale = ULocale.forLocale(defaultLocale);
+            withDefault = true;
             return this;
         }
 
@@ -479,7 +475,6 @@
          *
          * @param subtag the subtag to favor
          * @return this Builder object
-         * @hide draft / provisional / internal are hidden on Android
          */
         public Builder setFavorSubtag(FavorSubtag subtag) {
             this.favor = subtag;
@@ -492,7 +487,6 @@
          *
          * @param demotion the demotion per desired locale to set.
          * @return this Builder object
-         * @hide draft / provisional / internal are hidden on Android
          */
         public Builder setDemotionPerDesiredLocale(Demotion demotion) {
             this.demotion = demotion;
@@ -513,6 +507,64 @@
         }
 
         /**
+         * Sets the maximum distance for an acceptable match.
+         * The matcher will return a match for a pair of locales only if
+         * they match at least as well as the pair given here.
+         *
+         * <p>For example, setMaxDistance(en-US, en-GB) limits matches to ones where the
+         * (desired, support) locales have a distance no greater than a region subtag difference.
+         * This is much stricter than the CLDR default.
+         *
+         * <p>The details of locale matching are subject to changes in
+         * CLDR data and in the algorithm.
+         * Specifying a maximum distance in relative terms via a sample pair of locales
+         * insulates from changes that affect all distance metrics similarly,
+         * but some changes will necessarily affect relative distances between
+         * different pairs of locales.
+         *
+         * @param desired the desired locale for distance comparison.
+         * @param supported the supported locale for distance comparison.
+         * @return this Builder object
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        public Builder setMaxDistance(Locale desired, Locale supported) {
+            if (desired == null || supported == null) {
+                throw new IllegalArgumentException("desired/supported locales must not be null");
+            }
+            return setMaxDistance(ULocale.forLocale(desired), ULocale.forLocale(supported));
+        }
+
+        /**
+         * Sets the maximum distance for an acceptable match.
+         * The matcher will return a match for a pair of locales only if
+         * they match at least as well as the pair given here.
+         *
+         * <p>For example, setMaxDistance(en-US, en-GB) limits matches to ones where the
+         * (desired, support) locales have a distance no greater than a region subtag difference.
+         * This is much stricter than the CLDR default.
+         *
+         * <p>The details of locale matching are subject to changes in
+         * CLDR data and in the algorithm.
+         * Specifying a maximum distance in relative terms via a sample pair of locales
+         * insulates from changes that affect all distance metrics similarly,
+         * but some changes will necessarily affect relative distances between
+         * different pairs of locales.
+         *
+         * @param desired the desired locale for distance comparison.
+         * @param supported the supported locale for distance comparison.
+         * @return this Builder object
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        public Builder setMaxDistance(ULocale desired, ULocale supported) {
+            if (desired == null || supported == null) {
+                throw new IllegalArgumentException("desired/supported locales must not be null");
+            }
+            maxDistanceDesired = desired;
+            maxDistanceSupported = supported;
+            return this;
+        }
+
+        /**
          * <i>Internal only!</i>
          *
          * @param thresholdDistance the thresholdDistance to set, with -1 = default
@@ -534,7 +586,6 @@
          * This builder can continue to be used.
          *
          * @return new LocaleMatcher.
-         * @hide draft / provisional / internal are hidden on Android
          */
         public LocaleMatcher build() {
             return new LocaleMatcher(this);
@@ -542,7 +593,6 @@
 
         /**
          * {@inheritDoc}
-         * @hide draft / provisional / internal are hidden on Android
          */
         @Override
         public String toString() {
@@ -570,7 +620,6 @@
      * Returns a builder used in chaining parameters for building a LocaleMatcher.
      *
      * @return a new Builder object
-     * @hide draft / provisional / internal are hidden on Android
      */
     public static Builder builder() {
         return new Builder();
@@ -600,8 +649,6 @@
     }
 
     private LocaleMatcher(Builder builder) {
-        thresholdDistance = builder.thresholdDistance < 0 ?
-                LocaleDistance.INSTANCE.getDefaultScriptDistance() : builder.thresholdDistance;
         ULocale udef = builder.defaultLocale;
         Locale def = null;
         LSR defLSR = null;
@@ -645,13 +692,14 @@
         i = 0;
         for (ULocale locale : supportedULocales) {
             LSR lsr = lsrs[i];
-            if (defLSR == null) {
+            if (defLSR == null && builder.withDefault) {
+                // Implicit default locale = first supported locale, if not turned off.
                 assert i == 0;
                 udef = locale;
                 def = supportedLocales[0];
                 defLSR = lsr;
                 suppLength = putIfAbsent(lsr, 0, suppLength);
-            } else if (lsr.isEquivalentTo(defLSR)) {
+            } else if (defLSR != null && lsr.isEquivalentTo(defLSR)) {
                 suppLength = putIfAbsent(lsr, i, suppLength);
             } else if (LocaleDistance.INSTANCE.isParadigmLSR(lsr)) {
                 order[i] = 2;
@@ -686,6 +734,22 @@
                     LocaleDistance.INSTANCE.getDefaultDemotionPerDesiredLocale();  // null or REGION
         favorSubtag = builder.favor;
         direction = builder.direction;
+
+        int threshold;
+        if (builder.thresholdDistance >= 0) {
+            threshold = builder.thresholdDistance;
+        } else if (builder.maxDistanceDesired != null) {
+            int indexAndDistance = LocaleDistance.INSTANCE.getBestIndexAndDistance(
+                    getMaximalLsrOrUnd(builder.maxDistanceDesired),
+                    new LSR[] { getMaximalLsrOrUnd(builder.maxDistanceSupported) }, 1,
+                    LocaleDistance.shiftDistance(100), favorSubtag, direction);
+            // +1 for an exclusive threshold from an inclusive max.
+            threshold = LocaleDistance.getDistanceFloor(indexAndDistance) + 1;
+        } else {
+            threshold = LocaleDistance.INSTANCE.getDefaultScriptDistance();
+        }
+        thresholdDistance = threshold;
+
         if (TRACE_MATCHER) {
             System.err.printf("new LocaleMatcher: %s\n", toString());
         }
@@ -815,7 +879,6 @@
      *
      * @param desiredLocale Typically a user's language.
      * @return the best-matching supported locale.
-     * @hide draft / provisional / internal are hidden on Android
      */
     public Locale getBestLocale(Locale desiredLocale) {
         LSR desiredLSR = getMaximalLsrOrUnd(desiredLocale);
@@ -828,7 +891,6 @@
      *
      * @param desiredLocales Typically a user's languages, in order of preference (descending).
      * @return the best-matching supported locale.
-     * @hide draft / provisional / internal are hidden on Android
      */
     public Locale getBestLocale(Iterable<Locale> desiredLocales) {
         Iterator<Locale> desiredIter = desiredLocales.iterator();
@@ -875,7 +937,6 @@
      *
      * @param desiredLocale Typically a user's language.
      * @return the best-matching pair of the desired and a supported locale.
-     * @hide draft / provisional / internal are hidden on Android
      */
     public Result getBestMatchResult(ULocale desiredLocale) {
         LSR desiredLSR = getMaximalLsrOrUnd(desiredLocale);
@@ -888,7 +949,6 @@
      *
      * @param desiredLocales Typically a user's languages, in order of preference (descending).
      * @return the best-matching pair of a desired and a supported locale.
-     * @hide draft / provisional / internal are hidden on Android
      */
     public Result getBestMatchResult(Iterable<ULocale> desiredLocales) {
         Iterator<ULocale> desiredIter = desiredLocales.iterator();
@@ -906,7 +966,6 @@
      *
      * @param desiredLocale Typically a user's language.
      * @return the best-matching pair of the desired and a supported locale.
-     * @hide draft / provisional / internal are hidden on Android
      */
     public Result getBestLocaleResult(Locale desiredLocale) {
         LSR desiredLSR = getMaximalLsrOrUnd(desiredLocale);
@@ -919,7 +978,6 @@
      *
      * @param desiredLocales Typically a user's languages, in order of preference (descending).
      * @return the best-matching pair of a desired and a supported locale.
-     * @hide draft / provisional / internal are hidden on Android
      */
     public Result getBestLocaleResult(Iterable<Locale> desiredLocales) {
         Iterator<Locale> desiredIter = desiredLocales.iterator();
@@ -992,6 +1050,42 @@
     }
 
     /**
+     * Returns true if the pair of locales matches acceptably.
+     * This is influenced by Builder options such as setDirection(), setFavorSubtag(),
+     * and setMaxDistance().
+     *
+     * @param desired The desired locale.
+     * @param supported The supported locale.
+     * @return true if the pair of locales matches acceptably.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public boolean isMatch(Locale desired, Locale supported) {
+        int indexAndDistance = LocaleDistance.INSTANCE.getBestIndexAndDistance(
+                getMaximalLsrOrUnd(desired),
+                new LSR[] { getMaximalLsrOrUnd(supported) }, 1,
+                LocaleDistance.shiftDistance(thresholdDistance), favorSubtag, direction);
+        return indexAndDistance >= 0;
+    }
+
+    /**
+     * Returns true if the pair of locales matches acceptably.
+     * This is influenced by Builder options such as setDirection(), setFavorSubtag(),
+     * and setMaxDistance().
+     *
+     * @param desired The desired locale.
+     * @param supported The supported locale.
+     * @return true if the pair of locales matches acceptably.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public boolean isMatch(ULocale desired, ULocale supported) {
+        int indexAndDistance = LocaleDistance.INSTANCE.getBestIndexAndDistance(
+                getMaximalLsrOrUnd(desired),
+                new LSR[] { getMaximalLsrOrUnd(supported) }, 1,
+                LocaleDistance.shiftDistance(thresholdDistance), favorSubtag, direction);
+        return indexAndDistance >= 0;
+    }
+
+    /**
      * Returns a fraction between 0 and 1, where 1 means that the languages are a
      * perfect match, and 0 means that they are completely different.
      *
diff --git a/android_icu4j/src/main/java/android/icu/util/LocalePriorityList.java b/android_icu4j/src/main/java/android/icu/util/LocalePriorityList.java
index d3a1f23..6d519d1 100644
--- a/android_icu4j/src/main/java/android/icu/util/LocalePriorityList.java
+++ b/android_icu4j/src/main/java/android/icu/util/LocalePriorityList.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2010-2016, Google, Inc.; International Business Machines      *
@@ -138,7 +138,6 @@
      * The set has the same iteration order as this object itself.
      *
      * @return the locales
-     * @hide draft / provisional / internal are hidden on Android
      */
     public Set<ULocale> getULocales() {
         return languagesAndWeights.keySet();
diff --git a/android_icu4j/src/main/java/android/icu/util/Measure.java b/android_icu4j/src/main/java/android/icu/util/Measure.java
index 8b87c4d..08c301a 100644
--- a/android_icu4j/src/main/java/android/icu/util/Measure.java
+++ b/android_icu4j/src/main/java/android/icu/util/Measure.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2004-2013, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/util/MeasureUnit.java b/android_icu4j/src/main/java/android/icu/util/MeasureUnit.java
index 042eeee..72aaf07 100644
--- a/android_icu4j/src/main/java/android/icu/util/MeasureUnit.java
+++ b/android_icu4j/src/main/java/android/icu/util/MeasureUnit.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2016, Google Inc, International Business Machines
@@ -15,19 +15,23 @@
 import java.io.ObjectOutput;
 import java.io.ObjectStreamException;
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 import android.icu.impl.CollectionSet;
 import android.icu.impl.ICUData;
 import android.icu.impl.ICUResourceBundle;
-import android.icu.impl.Pair;
 import android.icu.impl.UResource;
+import android.icu.impl.units.MeasureUnitImpl;
+import android.icu.impl.units.SingleUnitImpl;
 import android.icu.text.UnicodeSet;
 
+
 /**
  * A unit such as length, mass, volume, currency, etc.  A unit is
  * coupled with a numeric amount to produce a Measure. MeasureUnit objects are immutable.
@@ -48,6 +52,7 @@
     private static boolean cacheIsPopulated = false;
 
     /**
+     * If type set to null, measureUnitImpl is in use instead of type and subType.
      * @deprecated This API is ICU internal only.
      * @hide original deprecated declaration
      * @hide draft / provisional / internal are hidden on Android
@@ -56,6 +61,7 @@
     protected final String type;
 
     /**
+     * If subType set to null, measureUnitImpl is in use instead of type and subType.
      * @deprecated This API is ICU internal only.
      * @hide original deprecated declaration
      * @hide draft / provisional / internal are hidden on Android
@@ -64,6 +70,236 @@
     protected final String subType;
 
     /**
+     * Used by new draft APIs in ICU 68.
+     *
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    private MeasureUnitImpl measureUnitImpl;
+
+    /**
+     * Enumeration for unit complexity. There are three levels:
+     * <p>
+     * - SINGLE: A single unit, optionally with a power and/or SI prefix. Examples: hectare,
+     * square-kilometer, kilojoule, one-per-second.
+     * - COMPOUND: A unit composed of the product of multiple single units. Examples:
+     * meter-per-second, kilowatt-hour, kilogram-meter-per-square-second.
+     * - MIXED: A unit composed of the sum of multiple single units. Examples: foot-and-inch,
+     * hour-and-minute-and-second, degree-and-arcminute-and-arcsecond.
+     * <p>
+     * The complexity determines which operations are available. For example, you cannot set the power
+     * or SI prefix of a compound unit.
+     *
+     * @hide Only a subset of ICU is exposed in Android
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public enum Complexity {
+        /**
+         * A single unit, like kilojoule.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        SINGLE,
+
+        /**
+         * A compound unit, like meter-per-second.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        COMPOUND,
+
+        /**
+         * A mixed unit, like hour-and-minute.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        MIXED
+    }
+
+    /**
+     * Enumeration for SI prefixes, such as "kilo".
+     *
+     * @hide Only a subset of ICU is exposed in Android
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public enum SIPrefix {
+
+        /**
+         * SI prefix: yotta, 10^24.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        YOTTA(24, "yotta"),
+
+        /**
+         * SI prefix: zetta, 10^21.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        ZETTA(21, "zetta"),
+
+        /**
+         * SI prefix: exa, 10^18.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        EXA(18, "exa"),
+
+        /**
+         * SI prefix: peta, 10^15.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        PETA(15, "peta"),
+
+        /**
+         * SI prefix: tera, 10^12.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        TERA(12, "tera"),
+
+        /**
+         * SI prefix: giga, 10^9.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        GIGA(9, "giga"),
+
+        /**
+         * SI prefix: mega, 10^6.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        MEGA(6, "mega"),
+
+        /**
+         * SI prefix: kilo, 10^3.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        KILO(3, "kilo"),
+
+        /**
+         * SI prefix: hecto, 10^2.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        HECTO(2, "hecto"),
+
+        /**
+         * SI prefix: deka, 10^1.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        DEKA(1, "deka"),
+
+        /**
+         * The absence of an SI prefix.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        ONE(0, ""),
+
+        /**
+         * SI prefix: deci, 10^-1.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        DECI(-1, "deci"),
+
+        /**
+         * SI prefix: centi, 10^-2.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        CENTI(-2, "centi"),
+
+        /**
+         * SI prefix: milli, 10^-3.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        MILLI(-3, "milli"),
+
+        /**
+         * SI prefix: micro, 10^-6.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        MICRO(-6, "micro"),
+
+        /**
+         * SI prefix: nano, 10^-9.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        NANO(-9, "nano"),
+
+        /**
+         * SI prefix: pico, 10^-12.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        PICO(-12, "pico"),
+
+        /**
+         * SI prefix: femto, 10^-15.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        FEMTO(-15, "femto"),
+
+        /**
+         * SI prefix: atto, 10^-18.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        ATTO(-18, "atto"),
+
+        /**
+         * SI prefix: zepto, 10^-21.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        ZEPTO(-21, "zepto"),
+
+        /**
+         * SI prefix: yocto, 10^-24.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        YOCTO(-24, "yocto");
+
+        private final int power;
+        private final String identifier;
+
+        SIPrefix(int power, String identifier) {
+            this.power = power;
+            this.identifier = identifier;
+        }
+
+        /**
+         * Returns the identifier of the prefix.
+         *
+         * @deprecated This API is ICU internal only.
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        @Deprecated
+        public String getIdentifier() {
+            return identifier;
+        }
+
+        /**
+         * Returns the power of 10 of the prefix. For example, if the prefix is "centi", the power will be -2.
+         *
+         * @hide draft / provisional / internal are hidden on Android
+         */
+        public int getPower() {
+            return power;
+        }
+    }
+
+    /**
      * @deprecated This API is ICU internal only.
      * @hide original deprecated declaration
      * @hide draft / provisional / internal are hidden on Android
@@ -75,7 +311,53 @@
     }
 
     /**
-     * Get the type, such as "length"
+     * Construct a MeasureUnit from a CLDR Unit Identifier, defined in UTS 35.
+     * Validates and canonicalizes the identifier.
+     *
+     * Note: dimensionless <code>MeasureUnit</code> is <code>null</code>
+     *
+     * <pre>
+     * MeasureUnit example = MeasureUnit::forIdentifier("furlong-per-nanosecond")
+     * </pre>
+     *
+     * @param identifier The CLDR Sequence Unit Identifier
+     * @throws IllegalArgumentException if the identifier is invalid.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public static MeasureUnit forIdentifier(String identifier) {
+        if (identifier == null || identifier.isEmpty()) {
+            return NoUnit.BASE;
+        }
+
+        return MeasureUnitImpl.forIdentifier(identifier).build();
+    }
+
+    /**
+     * @deprecated Internal API for ICU use only.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    @Deprecated
+    public static MeasureUnit fromMeasureUnitImpl(MeasureUnitImpl measureUnitImpl) {
+        measureUnitImpl.serialize();
+        String identifier = measureUnitImpl.getIdentifier();
+        MeasureUnit result = MeasureUnit.findBySubType(identifier);
+        if (result != null) {
+            return result;
+        }
+
+        return new MeasureUnit(measureUnitImpl);
+    }
+
+    private MeasureUnit(MeasureUnitImpl measureUnitImpl) {
+        type = null;
+        subType = null;
+        this.measureUnitImpl = measureUnitImpl.copy();
+    }
+
+
+
+    /**
+     * Get the type, such as "length". May return null.
      */
     public String getType() {
         return type;
@@ -83,13 +365,184 @@
 
 
     /**
-     * Get the subType, such as “foot”.
+     * Get the subType, such as “foot”. May return null.
      */
     public String getSubtype() {
         return subType;
     }
 
+    /**
+     * Gets the CLDR Unit Identifier for this MeasureUnit, as defined in UTS 35.
+     *
+     * @return The string form of this unit.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public String getIdentifier() {
+        String result = measureUnitImpl == null ? getSubtype() : measureUnitImpl.getIdentifier();
+        return result == null ? "" : result;
+    }
 
+    /**
+     * Compute the complexity of the unit. See Complexity for more information.
+     *
+     * @return The unit complexity.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public Complexity getComplexity() {
+        if (measureUnitImpl == null) {
+            return MeasureUnitImpl.forIdentifier(getIdentifier()).getComplexity();
+        }
+
+        return measureUnitImpl.getComplexity();
+    }
+
+    /**
+     * Creates a MeasureUnit which is this SINGLE unit augmented with the specified SI prefix.
+     * For example, SI_PREFIX_KILO for "kilo".
+     * May return this if this unit already has that prefix.
+     * <p>
+     * There is sufficient locale data to format all standard SI prefixes.
+     * <p>
+     * NOTE: Only works on SINGLE units. If this is a COMPOUND or MIXED unit, an error will
+     * occur. For more information, see `Complexity`.
+     *
+     * @param prefix The SI prefix, from SIPrefix.
+     * @return A new SINGLE unit.
+     * @throws UnsupportedOperationException if this unit is a COMPOUND or MIXED unit.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public MeasureUnit withSIPrefix(SIPrefix prefix) {
+        SingleUnitImpl singleUnit = getSingleUnitImpl();
+        singleUnit.setSiPrefix(prefix);
+        return singleUnit.build();
+    }
+
+    /**
+     * Returns the current SI prefix of this SINGLE unit. For example, if the unit has the SI prefix
+     * "kilo", then SI_PREFIX_KILO is returned.
+     * <p>
+     * NOTE: Only works on SINGLE units. If this is a COMPOUND or MIXED unit, an error will
+     * occur. For more information, see `Complexity`.
+     *
+     * @return The SI prefix of this SINGLE unit, from SIPrefix.
+     * @throws UnsupportedOperationException if the unit is COMPOUND or MIXED.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public SIPrefix getSIPrefix() {
+        return getSingleUnitImpl().getSiPrefix();
+    }
+
+    /**
+     * Returns the dimensionality (power) of this MeasureUnit. For example, if the unit is square,
+     * then 2 is returned.
+     * <p>
+     * NOTE: Only works on SINGLE units. If this is a COMPOUND or MIXED unit, an exception will be thrown.
+     * For more information, see `Complexity`.
+     *
+     * @return The dimensionality (power) of this simple unit.
+     * @throws UnsupportedOperationException if the unit is COMPOUND or MIXED.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public int getDimensionality() {
+        return getSingleUnitImpl().getDimensionality();
+    }
+
+    /**
+     * Creates a MeasureUnit which is this SINGLE unit augmented with the specified dimensionality
+     * (power). For example, if dimensionality is 2, the unit will be squared.
+     * <p>
+     * NOTE: Only works on SINGLE units. If this is a COMPOUND or MIXED unit, an exception is thrown.
+     * For more information, see `Complexity`.
+     *
+     * @param dimensionality The dimensionality (power).
+     * @return A new SINGLE unit.
+     * @throws UnsupportedOperationException if the unit is COMPOUND or MIXED.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public MeasureUnit withDimensionality(int dimensionality) {
+        SingleUnitImpl singleUnit = getSingleUnitImpl();
+        singleUnit.setDimensionality(dimensionality);
+        return singleUnit.build();
+    }
+
+    /**
+     * Computes the reciprocal of this MeasureUnit, with the numerator and denominator flipped.
+     * <p>
+     * For example, if the receiver is "meter-per-second", the unit "second-per-meter" is returned.
+     * <p>
+     * NOTE: Only works on SINGLE and COMPOUND units. If this is a MIXED unit, an error will
+     * occur. For more information, see `Complexity`.
+     *
+     * @return The reciprocal of the target unit.
+     * @throws UnsupportedOperationException if the unit is MIXED.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public MeasureUnit reciprocal() {
+        MeasureUnitImpl measureUnit = getCopyOfMeasureUnitImpl();
+        measureUnit.takeReciprocal();
+        return measureUnit.build();
+    }
+
+    /**
+     * Computes the product of this unit with another unit. This is a way to build units from
+     * constituent parts.
+     * <p>
+     * The numerator and denominator are preserved through this operation.
+     * <p>
+     * For example, if the receiver is "kilowatt" and the argument is "hour-per-day", then the
+     * unit "kilowatt-hour-per-day" is returned.
+     * <p>
+     * NOTE: Only works on SINGLE and COMPOUND units. If either unit (receivee and argument) is a
+     * MIXED unit, an error will occur. For more information, see `Complexity`.
+     *
+     * @param other The MeasureUnit to multiply with the target.
+     * @return The product of the target unit with the provided unit.
+     * @throws UnsupportedOperationException if the unit is MIXED.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public MeasureUnit product(MeasureUnit other) {
+        MeasureUnitImpl implCopy = getCopyOfMeasureUnitImpl();
+
+        if (other == null /* dimensionless */) {
+            return implCopy.build();
+        }
+
+        final MeasureUnitImpl otherImplRef = other.getMayBeReferenceOfMeasureUnitImpl();
+        if (implCopy.getComplexity() == Complexity.MIXED || otherImplRef.getComplexity() == Complexity.MIXED) {
+            throw new UnsupportedOperationException();
+        }
+
+        for (SingleUnitImpl singleUnit :
+                otherImplRef.getSingleUnits()) {
+            implCopy.appendSingleUnit(singleUnit);
+        }
+
+        return implCopy.build();
+    }
+
+    /**
+     * Returns the list of SINGLE units contained within a sequence of COMPOUND units.
+     * <p>
+     * Examples:
+     * - Given "meter-kilogram-per-second", three units will be returned: "meter",
+     * "kilogram", and "one-per-second".
+     * - Given "hour+minute+second", three units will be returned: "hour", "minute",
+     * and "second".
+     * <p>
+     * If this is a SINGLE unit, a list of length 1 will be returned.
+     *
+     * @return An unmodifiable list of single units
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    public List<MeasureUnit> splitToSingleUnits() {
+        final ArrayList<SingleUnitImpl> singleUnits = getMayBeReferenceOfMeasureUnitImpl().getSingleUnits();
+        List<MeasureUnit> result = new ArrayList<>(singleUnits.size());
+        for (SingleUnitImpl singleUnit : singleUnits) {
+            result.add(singleUnit.build());
+        }
+
+        return result;
+    }
 
     /**
      * {@inheritDoc}
@@ -110,8 +563,8 @@
         if (!(rhs instanceof MeasureUnit)) {
             return false;
         }
-        MeasureUnit c = (MeasureUnit) rhs;
-        return type.equals(c.type) && subType.equals(c.subType);
+
+        return this.getIdentifier().equals(((MeasureUnit) rhs).getIdentifier());
     }
 
     /**
@@ -186,8 +639,6 @@
             factory = CURRENCY_FACTORY;
         } else if ("duration".equals(type)) {
             factory = TIMEUNIT_FACTORY;
-        } else if ("none".equals(type)) {
-            factory = NOUNIT_FACTORY;
         } else {
             factory = UNIT_FACTORY;
         }
@@ -204,48 +655,6 @@
         return null;
     }
 
-    /**
-     * For ICU use only.
-     * @deprecated This API is ICU internal only.
-     * @hide draft / provisional / internal are hidden on Android
-     */
-    @Deprecated
-    public static MeasureUnit[] parseCoreUnitIdentifier(String coreUnitIdentifier) {
-        // First search for the whole code unit identifier as a subType
-        MeasureUnit whole = findBySubType(coreUnitIdentifier);
-        if (whole != null) {
-            return new MeasureUnit[] { whole }; // found a numerator but not denominator
-        }
-
-        // If not found, try breaking apart numerator and denominator
-        int perIdx = coreUnitIdentifier.indexOf("-per-");
-        if (perIdx == -1) {
-            // String does not contain "-per-"
-            return null;
-        }
-        String numeratorStr = coreUnitIdentifier.substring(0, perIdx);
-        String denominatorStr = coreUnitIdentifier.substring(perIdx + 5);
-        MeasureUnit numerator = findBySubType(numeratorStr);
-        MeasureUnit denominator = findBySubType(denominatorStr);
-        if (numerator != null && denominator != null) {
-            return new MeasureUnit[] { numerator, denominator }; // found both a numerator and denominator
-        }
-
-        // The numerator or denominator were invalid
-        return null;
-    }
-
-    /**
-     * For ICU use only.
-     * @deprecated This API is ICU internal only.
-     * @hide original deprecated declaration
-     * @hide draft / provisional / internal are hidden on Android
-     */
-    @Deprecated
-    public static MeasureUnit resolveUnitPerUnit(MeasureUnit unit, MeasureUnit perUnit) {
-        return unitPerUnitToSingleUnit.get(Pair.of(unit, perUnit));
-    }
-
     static final UnicodeSet ASCII = new UnicodeSet('a', 'z').freeze();
     static final UnicodeSet ASCII_HYPHEN_DIGITS = new UnicodeSet('-', '-', '0', '9', 'a', 'z').freeze();
 
@@ -286,13 +695,6 @@
         }
     };
 
-    static Factory NOUNIT_FACTORY = new Factory() {
-        @Override
-        public MeasureUnit create(String type, String subType) {
-           return new NoUnit(subType);
-        }
-    };
-
     /**
      * Sink for enumerating the available measure units.
      */
@@ -515,11 +917,6 @@
     public static final MeasureUnit MOLE = MeasureUnit.internalGetInstance("concentr", "mole");
 
     /**
-     * Constant for unit of concentr: permillion
-     */
-    public static final MeasureUnit PART_PER_MILLION = MeasureUnit.internalGetInstance("concentr", "permillion");
-
-    /**
      * Constant for unit of concentr: percent
      */
     public static final MeasureUnit PERCENT = MeasureUnit.internalGetInstance("concentr", "percent");
@@ -530,6 +927,11 @@
     public static final MeasureUnit PERMILLE = MeasureUnit.internalGetInstance("concentr", "permille");
 
     /**
+     * Constant for unit of concentr: permillion
+     */
+    public static final MeasureUnit PART_PER_MILLION = MeasureUnit.internalGetInstance("concentr", "permillion");
+
+    /**
      * Constant for unit of concentr: permyriad
      * @hide unsupported on Android
      */
@@ -628,7 +1030,7 @@
 
     /**
      * Constant for unit of duration: decade
-     * @hide draft / provisional / internal are hidden on Android
+     * @hide Hide new API in Android temporarily
      */
     public static final MeasureUnit DECADE = MeasureUnit.internalGetInstance("duration", "decade");
 
@@ -759,7 +1161,7 @@
 
     /**
      * Constant for unit of energy: therm-us
-     * @hide draft / provisional / internal are hidden on Android
+     * @hide Hide new API in Android temporarily
      */
     public static final MeasureUnit THERM_US = MeasureUnit.internalGetInstance("energy", "therm-us");
 
@@ -796,44 +1198,50 @@
     public static final MeasureUnit MEGAHERTZ = MeasureUnit.internalGetInstance("frequency", "megahertz");
 
     /**
-     * Constant for unit of graphics: dot-per-centimeter
+     * Constant for unit of graphics: dot
      * @hide draft / provisional / internal are hidden on Android
+    */
+    public static final MeasureUnit DOT = MeasureUnit.internalGetInstance("graphics", "dot");
+
+    /**
+     * Constant for unit of graphics: dot-per-centimeter
+     * @hide Hide new API in Android temporarily
      */
     public static final MeasureUnit DOT_PER_CENTIMETER = MeasureUnit.internalGetInstance("graphics", "dot-per-centimeter");
 
     /**
      * Constant for unit of graphics: dot-per-inch
-     * @hide draft / provisional / internal are hidden on Android
+     * @hide Hide new API in Android temporarily
      */
     public static final MeasureUnit DOT_PER_INCH = MeasureUnit.internalGetInstance("graphics", "dot-per-inch");
 
     /**
      * Constant for unit of graphics: em
-     * @hide draft / provisional / internal are hidden on Android
+     * @hide Hide new API in Android temporarily
      */
     public static final MeasureUnit EM = MeasureUnit.internalGetInstance("graphics", "em");
 
     /**
      * Constant for unit of graphics: megapixel
-     * @hide draft / provisional / internal are hidden on Android
+     * @hide Hide new API in Android temporarily
      */
     public static final MeasureUnit MEGAPIXEL = MeasureUnit.internalGetInstance("graphics", "megapixel");
 
     /**
      * Constant for unit of graphics: pixel
-     * @hide draft / provisional / internal are hidden on Android
+     * @hide Hide new API in Android temporarily
      */
     public static final MeasureUnit PIXEL = MeasureUnit.internalGetInstance("graphics", "pixel");
 
     /**
      * Constant for unit of graphics: pixel-per-centimeter
-     * @hide draft / provisional / internal are hidden on Android
+     * @hide Hide new API in Android temporarily
      */
     public static final MeasureUnit PIXEL_PER_CENTIMETER = MeasureUnit.internalGetInstance("graphics", "pixel-per-centimeter");
 
     /**
      * Constant for unit of graphics: pixel-per-inch
-     * @hide draft / provisional / internal are hidden on Android
+     * @hide Hide new API in Android temporarily
      */
     public static final MeasureUnit PIXEL_PER_INCH = MeasureUnit.internalGetInstance("graphics", "pixel-per-inch");
 
@@ -853,6 +1261,12 @@
     public static final MeasureUnit DECIMETER = MeasureUnit.internalGetInstance("length", "decimeter");
 
     /**
+     * Constant for unit of length: earth-radius
+     * @hide draft / provisional / internal are hidden on Android
+    */
+    public static final MeasureUnit EARTH_RADIUS = MeasureUnit.internalGetInstance("length", "earth-radius");
+
+    /**
      * Constant for unit of length: fathom
      */
     public static final MeasureUnit FATHOM = MeasureUnit.internalGetInstance("length", "fathom");
@@ -944,6 +1358,18 @@
     public static final MeasureUnit YARD = MeasureUnit.internalGetInstance("length", "yard");
 
     /**
+     * Constant for unit of light: candela
+     * @hide draft / provisional / internal are hidden on Android
+    */
+    public static final MeasureUnit CANDELA = MeasureUnit.internalGetInstance("light", "candela");
+
+    /**
+     * Constant for unit of light: lumen
+     * @hide draft / provisional / internal are hidden on Android
+    */
+    public static final MeasureUnit LUMEN = MeasureUnit.internalGetInstance("light", "lumen");
+
+    /**
      * Constant for unit of light: lux
      */
     public static final MeasureUnit LUX = MeasureUnit.internalGetInstance("light", "lux");
@@ -972,6 +1398,12 @@
     public static final MeasureUnit EARTH_MASS = MeasureUnit.internalGetInstance("mass", "earth-mass");
 
     /**
+     * Constant for unit of mass: grain
+     * @hide draft / provisional / internal are hidden on Android
+    */
+    public static final MeasureUnit GRAIN = MeasureUnit.internalGetInstance("mass", "grain");
+
+    /**
      * Constant for unit of mass: gram
      */
     public static final MeasureUnit GRAM = MeasureUnit.internalGetInstance("mass", "gram");
@@ -1064,7 +1496,7 @@
 
     /**
      * Constant for unit of pressure: bar
-     * @hide draft / provisional / internal are hidden on Android
+     * @hide Hide new API in Android temporarily
      */
     public static final MeasureUnit BAR = MeasureUnit.internalGetInstance("pressure", "bar");
 
@@ -1102,7 +1534,7 @@
 
     /**
      * Constant for unit of pressure: pascal
-     * @hide draft / provisional / internal are hidden on Android
+     * @hide Hide new API in Android temporarily
      */
     public static final MeasureUnit PASCAL = MeasureUnit.internalGetInstance("pressure", "pascal");
 
@@ -1235,6 +1667,30 @@
     public static final MeasureUnit DECILITER = MeasureUnit.internalGetInstance("volume", "deciliter");
 
     /**
+     * Constant for unit of volume: dessert-spoon
+     * @hide draft / provisional / internal are hidden on Android
+    */
+    public static final MeasureUnit DESSERT_SPOON = MeasureUnit.internalGetInstance("volume", "dessert-spoon");
+
+    /**
+     * Constant for unit of volume: dessert-spoon-imperial
+     * @hide draft / provisional / internal are hidden on Android
+    */
+    public static final MeasureUnit DESSERT_SPOON_IMPERIAL = MeasureUnit.internalGetInstance("volume", "dessert-spoon-imperial");
+
+    /**
+     * Constant for unit of volume: dram
+     * @hide draft / provisional / internal are hidden on Android
+    */
+    public static final MeasureUnit DRAM = MeasureUnit.internalGetInstance("volume", "dram");
+
+    /**
+     * Constant for unit of volume: drop
+     * @hide draft / provisional / internal are hidden on Android
+    */
+    public static final MeasureUnit DROP = MeasureUnit.internalGetInstance("volume", "drop");
+
+    /**
      * Constant for unit of volume: fluid-ounce
      */
     public static final MeasureUnit FLUID_OUNCE = MeasureUnit.internalGetInstance("volume", "fluid-ounce");
@@ -1261,6 +1717,12 @@
     public static final MeasureUnit HECTOLITER = MeasureUnit.internalGetInstance("volume", "hectoliter");
 
     /**
+     * Constant for unit of volume: jigger
+     * @hide draft / provisional / internal are hidden on Android
+    */
+    public static final MeasureUnit JIGGER = MeasureUnit.internalGetInstance("volume", "jigger");
+
+    /**
      * Constant for unit of volume: liter
      */
     public static final MeasureUnit LITER = MeasureUnit.internalGetInstance("volume", "liter");
@@ -1276,6 +1738,12 @@
     public static final MeasureUnit MILLILITER = MeasureUnit.internalGetInstance("volume", "milliliter");
 
     /**
+     * Constant for unit of volume: pinch
+     * @hide draft / provisional / internal are hidden on Android
+    */
+    public static final MeasureUnit PINCH = MeasureUnit.internalGetInstance("volume", "pinch");
+
+    /**
      * Constant for unit of volume: pint
      */
     public static final MeasureUnit PINT = MeasureUnit.internalGetInstance("volume", "pint");
@@ -1291,6 +1759,12 @@
     public static final MeasureUnit QUART = MeasureUnit.internalGetInstance("volume", "quart");
 
     /**
+     * Constant for unit of volume: quart-imperial
+     * @hide draft / provisional / internal are hidden on Android
+    */
+    public static final MeasureUnit QUART_IMPERIAL = MeasureUnit.internalGetInstance("volume", "quart-imperial");
+
+    /**
      * Constant for unit of volume: tablespoon
      */
     public static final MeasureUnit TABLESPOON = MeasureUnit.internalGetInstance("volume", "tablespoon");
@@ -1300,21 +1774,7 @@
      */
     public static final MeasureUnit TEASPOON = MeasureUnit.internalGetInstance("volume", "teaspoon");
 
-    private static HashMap<Pair<MeasureUnit, MeasureUnit>, MeasureUnit>unitPerUnitToSingleUnit =
-            new HashMap<>();
-
-    static {
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.LITER, MeasureUnit.KILOMETER), MeasureUnit.LITER_PER_KILOMETER);
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.POUND, MeasureUnit.SQUARE_INCH), MeasureUnit.POUND_PER_SQUARE_INCH);
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.PIXEL, MeasureUnit.CENTIMETER), MeasureUnit.PIXEL_PER_CENTIMETER);
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.MILE, MeasureUnit.HOUR), MeasureUnit.MILE_PER_HOUR);
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.MILLIGRAM, MeasureUnit.DECILITER), MeasureUnit.MILLIGRAM_PER_DECILITER);
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.MILE, MeasureUnit.GALLON_IMPERIAL), MeasureUnit.MILE_PER_GALLON_IMPERIAL);
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.KILOMETER, MeasureUnit.HOUR), MeasureUnit.KILOMETER_PER_HOUR);
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.MILE, MeasureUnit.GALLON), MeasureUnit.MILE_PER_GALLON);
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.PIXEL, MeasureUnit.INCH), MeasureUnit.PIXEL_PER_INCH);
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.METER, MeasureUnit.SECOND), MeasureUnit.METER_PER_SECOND);
-    }
+    // unitPerUnitToSingleUnit no longer in use! TODO: remove from code-generation code.
 
     // End generated MeasureUnit constants
     /* Private */
@@ -1323,6 +1783,39 @@
         return new MeasureUnitProxy(type, subType);
     }
 
+    /**
+     *
+     * @return this object as a SingleUnitImpl.
+     * @throws UnsupportedOperationException if this object could not be converted to a single unit.
+     */
+    private SingleUnitImpl getSingleUnitImpl() {
+        if (measureUnitImpl == null) {
+            return MeasureUnitImpl.forIdentifier(getIdentifier()).getSingleUnitImpl();
+        }
+
+        return measureUnitImpl.getSingleUnitImpl();
+    }
+
+    /**
+     *
+     * @return this object in a MeasureUnitImpl form.
+     */
+    private MeasureUnitImpl getCopyOfMeasureUnitImpl() {
+        return this.measureUnitImpl == null ?
+                MeasureUnitImpl.forIdentifier(getIdentifier()) :
+                this.measureUnitImpl.copy();
+    }
+
+    /**
+     *
+     * @return this object in a MeasureUnitImpl form.
+     */
+    private MeasureUnitImpl getMayBeReferenceOfMeasureUnitImpl(){
+        return this.measureUnitImpl == null ?
+                MeasureUnitImpl.forIdentifier(getIdentifier()) :
+                this.measureUnitImpl;
+    }
+
     static final class MeasureUnitProxy implements Externalizable {
         private static final long serialVersionUID = -3910681415330989598L;
 
diff --git a/android_icu4j/src/main/java/android/icu/util/MutableCodePointTrie.java b/android_icu4j/src/main/java/android/icu/util/MutableCodePointTrie.java
index dbb6029..4fe1956 100644
--- a/android_icu4j/src/main/java/android/icu/util/MutableCodePointTrie.java
+++ b/android_icu4j/src/main/java/android/icu/util/MutableCodePointTrie.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // created: 2018may04 Markus W. Scherer
 
diff --git a/android_icu4j/src/main/java/android/icu/util/NoUnit.java b/android_icu4j/src/main/java/android/icu/util/NoUnit.java
index 853857c..32cf3d8 100644
--- a/android_icu4j/src/main/java/android/icu/util/NoUnit.java
+++ b/android_icu4j/src/main/java/android/icu/util/NoUnit.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.util;
 
 import android.icu.number.NumberFormatter;
@@ -11,41 +11,40 @@
  * @hide Only a subset of ICU is exposed in Android
  * @hide draft / provisional / internal are hidden on Android
  */
-public class NoUnit extends MeasureUnit {
-    private static final long serialVersionUID = 2467174286237024095L;
-
+public final class NoUnit {
     /**
      * Constant for the base unit (dimensionless and no scaling).
      *
+     * Prior to ICU 68, this constant equaled an instance of NoUnit.
+     *
+     * Since ICU 68, this constant equals null.
+     *
      * @hide draft / provisional / internal are hidden on Android
      */
-    public static final NoUnit BASE =
-        (NoUnit) MeasureUnit.internalGetInstance("none", "base");
+    public static final MeasureUnit BASE = null;
 
     /**
      * Constant for the percent unit, or 1/100 of a base unit.
      *
+     * Prior to ICU 68, this constant equaled an instance of NoUnit.
+     *
+     * Since ICU 68, this constant is equivalent to MeasureUnit.PERCENT.
+     *
      * @hide draft / provisional / internal are hidden on Android
      */
-    public static final NoUnit PERCENT =
-        (NoUnit) MeasureUnit.internalGetInstance("none", "percent");
+    public static final MeasureUnit PERCENT = MeasureUnit.PERCENT;
 
     /**
      * Constant for the permille unit, or 1/100 of a base unit.
      *
+     * Prior to ICU 68, this constant equaled an instance of NoUnit.
+     *
+     * Since ICU 68, this constant is equivalent to MeasureUnit.PERMILLE.
+     *
      * @hide draft / provisional / internal are hidden on Android
      */
-    public static final NoUnit PERMILLE =
-        (NoUnit) MeasureUnit.internalGetInstance("none", "permille");
+    public static final MeasureUnit PERMILLE = MeasureUnit.PERMILLE;
 
-
-    /**
-     * Package local constructor. This class is not designed for subclassing
-     * by ICU users.
-     *
-     * @param subType   The unit subtype.
-     */
-    NoUnit(String subType) {
-        super("none", subType);
-    }
+    // This class is a namespace not intended to be instantiated:
+    private NoUnit() {}
 }
diff --git a/android_icu4j/src/main/java/android/icu/util/Output.java b/android_icu4j/src/main/java/android/icu/util/Output.java
index 8043c61..efcc553 100644
--- a/android_icu4j/src/main/java/android/icu/util/Output.java
+++ b/android_icu4j/src/main/java/android/icu/util/Output.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/OutputInt.java b/android_icu4j/src/main/java/android/icu/util/OutputInt.java
index fbd4319..f1235bc 100644
--- a/android_icu4j/src/main/java/android/icu/util/OutputInt.java
+++ b/android_icu4j/src/main/java/android/icu/util/OutputInt.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/util/PersianCalendar.java b/android_icu4j/src/main/java/android/icu/util/PersianCalendar.java
index fa87dd6..c4efb11 100644
--- a/android_icu4j/src/main/java/android/icu/util/PersianCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/PersianCalendar.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
@@ -141,7 +141,7 @@
     @Deprecated
     public PersianCalendar(Locale aLocale)
     {
-        this(TimeZone.getDefault(), aLocale);
+        this(TimeZone.forLocaleOrDefault(aLocale), aLocale);
     }
 
     /**
@@ -156,7 +156,7 @@
     @Deprecated
     public PersianCalendar(ULocale locale)
     {
-        this(TimeZone.getDefault(), locale);
+        this(TimeZone.forULocaleOrDefault(locale), locale);
     }
 
     /**
diff --git a/android_icu4j/src/main/java/android/icu/util/RangeDateRule.java b/android_icu4j/src/main/java/android/icu/util/RangeDateRule.java
index e6f8c00..db78d54 100644
--- a/android_icu4j/src/main/java/android/icu/util/RangeDateRule.java
+++ b/android_icu4j/src/main/java/android/icu/util/RangeDateRule.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/RangeValueIterator.java b/android_icu4j/src/main/java/android/icu/util/RangeValueIterator.java
index d4298da..a03116f 100644
--- a/android_icu4j/src/main/java/android/icu/util/RangeValueIterator.java
+++ b/android_icu4j/src/main/java/android/icu/util/RangeValueIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 1996-2016, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/util/Region.java b/android_icu4j/src/main/java/android/icu/util/Region.java
index 4e69705..44a41e6 100644
--- a/android_icu4j/src/main/java/android/icu/util/Region.java
+++ b/android_icu4j/src/main/java/android/icu/util/Region.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011-2016, International Business Machines Corporation
@@ -212,7 +212,7 @@
 
         regions = new ArrayList<Region>(regionCodes.size());
 
-        // First process the region codes and create the master array of regions.
+        // First process the region codes and create the primary array of regions.
         for ( String id : regionCodes) {
             Region r = new Region();
             r.id = id;
@@ -241,7 +241,7 @@
                 Region r;
                 if ( regionIDMap.containsKey(aliasFrom) ) {  // This is a deprecated region
                     r = regionIDMap.get(aliasFrom);
-                } else { // Deprecated region code not in the master codes list - so need to create a deprecated region for it.
+                } else { // Deprecated region code not in the primary codes list - so need to create a deprecated region for it.
                     r = new Region();
                     r.id = aliasFrom;
                     regionIDMap.put(aliasFrom, r);
diff --git a/android_icu4j/src/main/java/android/icu/util/RuleBasedTimeZone.java b/android_icu4j/src/main/java/android/icu/util/RuleBasedTimeZone.java
index fd56a7c..cda97ef 100644
--- a/android_icu4j/src/main/java/android/icu/util/RuleBasedTimeZone.java
+++ b/android_icu4j/src/main/java/android/icu/util/RuleBasedTimeZone.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/STZInfo.java b/android_icu4j/src/main/java/android/icu/util/STZInfo.java
index bc36838..5e93d52 100644
--- a/android_icu4j/src/main/java/android/icu/util/STZInfo.java
+++ b/android_icu4j/src/main/java/android/icu/util/STZInfo.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *   Copyright (C) 2005-2010, International Business Machines
  *   Corporation and others.  All Rights Reserved.
diff --git a/android_icu4j/src/main/java/android/icu/util/SimpleDateRule.java b/android_icu4j/src/main/java/android/icu/util/SimpleDateRule.java
index b539ff9..51b513e 100644
--- a/android_icu4j/src/main/java/android/icu/util/SimpleDateRule.java
+++ b/android_icu4j/src/main/java/android/icu/util/SimpleDateRule.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/SimpleHoliday.java b/android_icu4j/src/main/java/android/icu/util/SimpleHoliday.java
index d51dca7..1d9c127 100644
--- a/android_icu4j/src/main/java/android/icu/util/SimpleHoliday.java
+++ b/android_icu4j/src/main/java/android/icu/util/SimpleHoliday.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/SimpleTimeZone.java b/android_icu4j/src/main/java/android/icu/util/SimpleTimeZone.java
index f2af8ad..f4ad8b5 100644
--- a/android_icu4j/src/main/java/android/icu/util/SimpleTimeZone.java
+++ b/android_icu4j/src/main/java/android/icu/util/SimpleTimeZone.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
  /*
 *   Copyright (C) 1996-2016, International Business Machines
 *   Corporation and others.  All Rights Reserved.
diff --git a/android_icu4j/src/main/java/android/icu/util/StringTokenizer.java b/android_icu4j/src/main/java/android/icu/util/StringTokenizer.java
index 7a72178..268cc07 100644
--- a/android_icu4j/src/main/java/android/icu/util/StringTokenizer.java
+++ b/android_icu4j/src/main/java/android/icu/util/StringTokenizer.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/StringTrieBuilder.java b/android_icu4j/src/main/java/android/icu/util/StringTrieBuilder.java
index 4e43322..e876f32 100644
--- a/android_icu4j/src/main/java/android/icu/util/StringTrieBuilder.java
+++ b/android_icu4j/src/main/java/android/icu/util/StringTrieBuilder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011-2014, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/util/TaiwanCalendar.java b/android_icu4j/src/main/java/android/icu/util/TaiwanCalendar.java
index 775056a..cb51199 100644
--- a/android_icu4j/src/main/java/android/icu/util/TaiwanCalendar.java
+++ b/android_icu4j/src/main/java/android/icu/util/TaiwanCalendar.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/TimeArrayTimeZoneRule.java b/android_icu4j/src/main/java/android/icu/util/TimeArrayTimeZoneRule.java
index 1d360c3..0bcb3a0 100644
--- a/android_icu4j/src/main/java/android/icu/util/TimeArrayTimeZoneRule.java
+++ b/android_icu4j/src/main/java/android/icu/util/TimeArrayTimeZoneRule.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/TimeUnit.java b/android_icu4j/src/main/java/android/icu/util/TimeUnit.java
index c85fe2d..9a39ab7 100644
--- a/android_icu4j/src/main/java/android/icu/util/TimeUnit.java
+++ b/android_icu4j/src/main/java/android/icu/util/TimeUnit.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **************************************************************************
  * Copyright (C) 2008-2014, Google, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/util/TimeUnitAmount.java b/android_icu4j/src/main/java/android/icu/util/TimeUnitAmount.java
index 848722c..2fb923a 100644
--- a/android_icu4j/src/main/java/android/icu/util/TimeUnitAmount.java
+++ b/android_icu4j/src/main/java/android/icu/util/TimeUnitAmount.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **************************************************************************
  * Copyright (C) 2008-2009, Google, International Business Machines
diff --git a/android_icu4j/src/main/java/android/icu/util/TimeZone.java b/android_icu4j/src/main/java/android/icu/util/TimeZone.java
index 8a7939c..9a887d9 100644
--- a/android_icu4j/src/main/java/android/icu/util/TimeZone.java
+++ b/android_icu4j/src/main/java/android/icu/util/TimeZone.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * @(#)TimeZone.java    1.51 00/01/19
  *
@@ -835,6 +835,37 @@
     }
 
     /**
+     * If the locale contains the timezone keyword, creates a copy of that
+     * <code>TimeZone</code>.
+     * Otherwise, create the default <code>TimeZone</code>.
+     * @param locale a locale which may contains 'timezone' keyword/value.
+     * @return A <code>TimeZone</code>. Clients are responsible for deleting the
+     *   <code>TimeZone</code> object returned.
+     * @deprecated This API is ICU internal only.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    @Deprecated
+    public static TimeZone forULocaleOrDefault(ULocale locale) {
+        String tz = locale.getKeywordValue("timezone");
+        return (tz == null) ? getDefault() : getTimeZone(tz);
+    }
+
+    /**
+     * If the locale contains the timezone keyword, creates a copy of that
+     * <code>TimeZone</code>.
+     * Otherwise, create the default <code>TimeZone</code>.
+     * @param locale a locale which may contains 'timezone' keyword/value.
+     * @return A <code>TimeZone</code>. Clients are responsible for deleting the
+     *   <code>TimeZone</code> object returned.
+     * @deprecated This API is ICU internal only.
+     * @hide draft / provisional / internal are hidden on Android
+     */
+    @Deprecated
+    public static TimeZone forLocaleOrDefault(Locale locale) {
+        return forULocaleOrDefault(ULocale.forLocale(locale));
+    }
+
+    /**
      * Gets the default <code>TimeZone</code> for this host.
      * The source of the default <code>TimeZone</code>
      * may vary with implementation.
@@ -1082,7 +1113,7 @@
      *
      * <p>This implementation utilizes <a href="http://unicode.org/cldr/charts/supplemental/zone_tzid.html">
      * Zone-Tzid mapping data</a>. The mapping data is updated time to time. To get the latest changes,
-     * please read the ICU user guide section <a href="http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data">
+     * please read the ICU user guide section <a href="https://unicode-org.github.io/icu/userguide/datetime/timezone#updating-the-time-zone-data">
      * Updating the Time Zone Data</a>.
      *
      * @param id A system time zone ID
@@ -1140,7 +1171,7 @@
      *
      * <p>This implementation utilizes <a href="http://unicode.org/cldr/charts/supplemental/zone_tzid.html">
      * Zone-Tzid mapping data</a>. The mapping data is updated time to time. To get the latest changes,
-     * please read the ICU user guide section <a href="http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data">
+     * please read the ICU user guide section <a href="https://unicode-org.github.io/icu/userguide/datetime/timezone#updating-the-time-zone-data">
      * Updating the Time Zone Data</a>.
      *
      * @param winid A Windows time zone ID
diff --git a/android_icu4j/src/main/java/android/icu/util/TimeZoneRule.java b/android_icu4j/src/main/java/android/icu/util/TimeZoneRule.java
index 2ed47c2..c0834e9 100644
--- a/android_icu4j/src/main/java/android/icu/util/TimeZoneRule.java
+++ b/android_icu4j/src/main/java/android/icu/util/TimeZoneRule.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/TimeZoneTransition.java b/android_icu4j/src/main/java/android/icu/util/TimeZoneTransition.java
index 12d5209..c035ed1 100644
--- a/android_icu4j/src/main/java/android/icu/util/TimeZoneTransition.java
+++ b/android_icu4j/src/main/java/android/icu/util/TimeZoneTransition.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/ULocale.java b/android_icu4j/src/main/java/android/icu/util/ULocale.java
index 9e268d0..6d5d353 100644
--- a/android_icu4j/src/main/java/android/icu/util/ULocale.java
+++ b/android_icu4j/src/main/java/android/icu/util/ULocale.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2003-2016, International Business Machines Corporation and
@@ -17,12 +17,15 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.MissingResourceException;
+import java.util.Objects;
 import java.util.Set;
 import java.util.TreeMap;
 import java.util.TreeSet;
@@ -35,6 +38,7 @@
 import android.icu.impl.LocaleIDParser;
 import android.icu.impl.LocaleIDs;
 import android.icu.impl.SoftCache;
+import android.icu.impl.Utility;
 import android.icu.impl.locale.AsciiUtil;
 import android.icu.impl.locale.BaseLocale;
 import android.icu.impl.locale.Extension;
@@ -81,7 +85,8 @@
  * Canonicalization additionally performs the following:
  * <ul>
  * <li>POSIX ids are converted to ICU format IDs</li>
- * <li>'grandfathered' 3066 ids are converted to ICU standard form</li>
+ * <li>Legacy language tags (marked as “Type: grandfathered” in BCP 47)
+ * are converted to ICU standard form</li>
  * </ul>
  * All ULocale constructors automatically normalize the locale id.  To handle
  * POSIX ids, <code>canonicalize</code> can be called to convert the id
@@ -114,14 +119,11 @@
      * Types for {@link ULocale#getAvailableLocalesByType}
      *
      * @hide Only a subset of ICU is exposed in Android
-     * @hide draft / provisional / internal are hidden on Android
      */
     public static enum AvailableType {
         /**
          * Locales that return data when passed to ICU APIs,
          * but not including legacy or alias locales.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
         DEFAULT,
 
@@ -140,15 +142,11 @@
          * The locales in this set are disjoint from the ones in
          * DEFAULT. To get both sets at the same time, use
          * WITH_LEGACY_ALIASES.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
         ONLY_LEGACY_ALIASES,
 
         /**
          * The union of the locales in DEFAULT and ONLY_LEGACY_ALIASES.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
         WITH_LEGACY_ALIASES,
     }
@@ -793,7 +791,7 @@
     /**
      * Returns a list of all installed locales according to the specified type.
      *
-     * @hide draft / provisional / internal are hidden on Android
+     * @hide Hide new API in Android temporarily
      */
     public static Collection<ULocale> getAvailableLocalesByType(AvailableType type) {
         if (type == null) {
@@ -1123,9 +1121,399 @@
         return new LocaleIDParser(localeID).getKeywordValue(keywordName);
     }
 
+    static private class AliasReplacer {
+        /**
+         * @param language language subtag to be replaced. Cannot be null but could be empty.
+         * @param script script subtag to be replaced. Cannot be null but could be empty.
+         * @param region region subtag to be replaced. Cannot be null but could be empty.
+         * @param variants variant subtags to be replaced. Cannot be null but could be empty.
+         * @param extensions extensions in string to be replaced. Cannot be null but could be empty.
+         */
+        public AliasReplacer(String language, String script, String region,
+                String variants, String extensions) {
+
+            assert language != null;
+            assert script != null;
+            assert region != null;
+            assert variants != null;
+            assert extensions != null;
+            this.language = language;
+            this.script = script;
+            this.region = region;
+            if (!variants.isEmpty()) {
+                this.variants =
+                    new ArrayList<>(Arrays.asList(variants.split("_")));
+            }
+            this.extensions = extensions;
+        }
+
+        private String language;
+        private String script;
+        private String region;
+        private List<String> variants;
+        private String extensions;
+
+        public String replace() {
+            boolean changed = false;
+            loadAliasData();
+            int count = 0;
+            while (true) {
+                if (count++ > 10) {
+                    // Throw exception when we loop through too many time
+                    // stop to avoid infinity loop cauesd by incorrect data
+                    // in resource.
+                    throw new IllegalArgumentException(
+                        "Have problem to resolve locale alias of " +
+                        lscvToID(language, script, region,
+                            ((variants == null) ? "" : Utility.joinStrings("_", variants))) +
+                        extensions);
+                }
+                // Anytime we replace something, we need to start over again.
+                //                      lang  REGION  variant
+                if (    replaceLanguage(true,  true,  true) ||
+                        replaceLanguage(true,  true,  false) ||
+                        replaceLanguage(true,  false, true) ||
+                        replaceLanguage(true,  false, false) ||
+                        replaceLanguage(false, false, true) ||
+                        replaceRegion() ||
+                        replaceScript() ||
+                        replaceVariant()) {
+                    // Some values in data is changed, try to match from the
+                    // beginning again.
+                    changed = true;
+                    continue;
+                }
+                // Nothing changed in this iteration, break out the loop
+                break;
+            }  // while(1)
+            if (changed) {
+                String result =  lscvToID(language, script, region,
+                    ((variants == null) ? "" : Utility.joinStrings("_", variants)));
+                if (extensions != null) {
+                    result += extensions;
+                }
+                return result;
+            }
+            // Nothing changed in any iteration of the loop.
+            return null;
+        };
+
+        private static boolean aliasDataIsLoaded = false;
+        private static Map<String, String> languageAliasMap = null;
+        private static Map<String, String> scriptAliasMap = null;
+        private static Map<String, List<String>> territoryAliasMap = null;
+        private static Map<String, String> variantAliasMap = null;
+
+        /*
+         * Initializes the alias data from the ICU resource bundles. The alias
+         * data contains alias of language, country, script and variants.
+         *
+         * If the alias data has already loaded, then this method simply
+         * returns without doing anything meaningful.
+         *
+         */
+        private static synchronized void loadAliasData() {
+            if (aliasDataIsLoaded) {
+                return;
+            }
+            languageAliasMap = new HashMap<>();
+            scriptAliasMap = new HashMap<>();
+            territoryAliasMap = new HashMap<>();
+            variantAliasMap = new HashMap<>();
+
+            UResourceBundle metadata = UResourceBundle.getBundleInstance(
+                ICUData.ICU_BASE_NAME, "metadata",
+                ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+            UResourceBundle metadataAlias = metadata.get("alias");
+            UResourceBundle languageAlias = metadataAlias.get("language");
+            UResourceBundle scriptAlias = metadataAlias.get("script");
+            UResourceBundle territoryAlias = metadataAlias.get("territory");
+            UResourceBundle variantAlias = metadataAlias.get("variant");
+
+            for (int i = 0 ; i < languageAlias.getSize(); i++) {
+                UResourceBundle res = languageAlias.get(i);
+                String aliasFrom = res.getKey();
+                String aliasTo = res.get("replacement").getString();
+                Locale testLocale = new Locale(aliasFrom);
+                // if there are script in the aliasFrom
+                // or we have both a und as language and a region code.
+                if (    ! testLocale.getScript().isEmpty() ||
+                        (aliasFrom.startsWith("und") && ! testLocale.getCountry().isEmpty())) {
+                    throw new IllegalArgumentException(
+                        "key [" + aliasFrom +
+                        "] in alias:language contains unsupported fields combination.");
+                }
+                languageAliasMap.put(aliasFrom, aliasTo);
+            }
+            for (int i = 0 ; i < scriptAlias.getSize(); i++) {
+                UResourceBundle res = scriptAlias.get(i);
+                String aliasFrom = res.getKey();
+                String aliasTo = res.get("replacement").getString();
+                if (aliasFrom.length() != 4) {
+                    throw new IllegalArgumentException(
+                        "Incorrect key [" + aliasFrom + "] in alias:script.");
+                }
+                scriptAliasMap.put(aliasFrom, aliasTo);
+            }
+            for (int i = 0 ; i < territoryAlias.getSize(); i++) {
+                UResourceBundle res = territoryAlias.get(i);
+                String aliasFrom = res.getKey();
+                String aliasTo = res.get("replacement").getString();
+                if (aliasFrom.length() < 2 || aliasFrom.length() > 3) {
+                    throw new IllegalArgumentException(
+                        "Incorrect key [" + aliasFrom + "] in alias:territory.");
+                }
+                territoryAliasMap.put(aliasFrom,
+                    new ArrayList<>(Arrays.asList(aliasTo.split(" "))));
+            }
+            for (int i = 0 ; i < variantAlias.getSize(); i++) {
+                UResourceBundle res = variantAlias.get(i);
+                String aliasFrom = res.getKey();
+                String aliasTo = res.get("replacement").getString();
+                if (    aliasFrom.length() < 4 ||
+                        aliasFrom.length() > 8 ||
+                        (aliasFrom.length() == 4 &&
+                         (aliasFrom.charAt(0) < '0' || aliasFrom.charAt(0) > '9'))) {
+                    throw new IllegalArgumentException(
+                        "Incorrect key [" + aliasFrom + "] in alias:variant.");
+                }
+                if (    aliasTo.length() < 4 ||
+                        aliasTo.length() > 8 ||
+                        (aliasTo.length() == 4 &&
+                         (aliasTo.charAt(0) < '0' || aliasTo.charAt(0) > '9'))) {
+                    throw new IllegalArgumentException(
+                        "Incorrect variant [" + aliasTo + "] for the key [" + aliasFrom +
+                        "] in alias:variant.");
+                }
+                variantAliasMap.put(aliasFrom, aliasTo);
+            }
+
+            aliasDataIsLoaded = true;
+        }
+
+        private static String generateKey(
+                String language, String region, String variant) {
+            assert variant == null || variant.length() >= 4;
+            StringBuilder buf = new StringBuilder();
+            buf.append(language);
+            if (region != null && !region.isEmpty()) {
+                buf.append(UNDERSCORE);
+                buf.append(region);
+            }
+            if (variant != null && !variant.isEmpty()) {
+                buf.append(UNDERSCORE);
+                buf.append(variant);
+            }
+            return buf.toString();
+        }
+
+        /**
+         * If replacement is neither null nor empty and input is either null or empty,
+         * return replacement.
+         * If replacement is neither null nor empty but input is not empty, return input.
+         * If replacement is either null or empty and type is either null or empty,
+         * return input.
+         * Otherwise return null.
+         *   replacement  input  type   return
+         *       AAA       ""     *      AAA
+         *       AAA       BBB    *      BBB
+         *       ""        CCC    ""     CCC
+         *       ""        *  i   DDD    ""
+         */
+        private static String deleteOrReplace(
+                String input, String type, String replacement) {
+            return (replacement != null && !replacement.isEmpty()) ?
+                    ((input == null || input.isEmpty()) ? replacement : input) :
+                    ((type == null || type.isEmpty()) ? input : null);
+        }
+
+        private boolean replaceLanguage(boolean checkLanguage,
+                boolean checkRegion, boolean checkVariants) {
+            if (    (checkRegion && (region == null || region.isEmpty())) ||
+                    (checkVariants && (variants == null))) {
+                // Nothing to search
+                return false;
+            }
+            int variantSize = checkVariants ? variants.size() : 1;
+            // Since we may have more than one variant, we need to loop through
+            // them.
+            String searchLanguage = checkLanguage ? language : UNDEFINED_LANGUAGE;
+            String searchRegion = checkRegion ? region : null;
+            String searchVariant = null;
+            for (int variantIndex = 0; variantIndex < variantSize; ++variantIndex) {
+                if (checkVariants) {
+                    searchVariant = variants.get(variantIndex);
+                }
+                if (searchVariant != null && searchVariant.length() < 4) {
+                    // Do not consider  ill-formed variant subtag.
+                    searchVariant = null;
+                }
+                String typeKey = generateKey(
+                    searchLanguage, searchRegion, searchVariant);
+                String replacement = languageAliasMap.get(typeKey);
+                if (replacement == null) {
+                    // Found no replacement data.
+                    continue;
+                }
+                String replacedScript = null;
+                String replacedRegion = null;
+                String replacedVariant = null;
+                String replacedExtensions = null;
+                String replacedLanguage = null;
+
+                if (replacement.indexOf('_') < 0) {
+                    replacedLanguage = replacement.equals(UNDEFINED_LANGUAGE) ?
+                        language : replacement;
+                } else {
+                    String[] replacementFields = replacement.split("_");
+                    replacedLanguage = replacementFields[0];
+                    int index = 1;
+
+                    if (replacedLanguage.equals(UNDEFINED_LANGUAGE)) {
+                        replacedLanguage = language;
+                    }
+                    int consumed = replacementFields[0].length() + 1;
+                    while (replacementFields.length > index) {
+                        String field = replacementFields[index];
+                        int len = field.length();
+                        if (1 == len) {
+                            replacedExtensions = replacement.substring(consumed);
+                            break;
+                        } else if (len >= 2 && len <= 3) {
+                            assert replacedRegion == null;
+                            replacedRegion = field;
+                        } else if (len >= 5 && len <= 8) {
+                            assert replacedVariant == null;
+                            replacedVariant = field;
+                        } else if (len == 4) {
+                            if (field.charAt(0) >= '0' && field.charAt(0) <= '9') {
+                                assert replacedVariant == null;
+                                replacedVariant = field;
+                            } else {
+                                assert replacedScript == null;
+                                replacedScript = field;
+                            }
+                        }
+                        index++;
+                        consumed += len + 1;
+                    }
+                }
+
+                replacedScript = deleteOrReplace(script, null, replacedScript);
+                replacedRegion = deleteOrReplace(region, searchRegion, replacedRegion);
+                replacedVariant = deleteOrReplace(searchVariant, searchVariant, replacedVariant);
+
+                if (    this.language.equals(replacedLanguage) &&
+                        this.script.equals(replacedScript) &&
+                        this.region.equals(replacedRegion) &&
+                        Objects.equals(searchVariant, replacedVariant) &&
+                        replacedExtensions == null) {
+                    // Replacement produce no changes on search.
+                    // For example, apply pa_IN=> pa_Guru_IN on pa_Guru_IN.
+                    continue;
+                }
+                this.language = replacedLanguage;
+                this.script = replacedScript;
+                this.region = replacedRegion;
+                if (searchVariant != null && !searchVariant.isEmpty()) {
+                    if (replacedVariant != null && !replacedVariant.isEmpty()) {
+                        this.variants.set(variantIndex, replacedVariant);
+                    } else {
+                        this.variants.remove(variantIndex);
+                        if (this.variants.isEmpty()) {
+                            this.variants = null;
+                        }
+                    }
+                }
+                if (replacedExtensions != null && !replacedExtensions.isEmpty()) {
+                    // TODO(ICU-21292)
+                    // DO NOTHING
+                    // UTS35 does not specifiy what should we do if we have extensions in the
+                    // replacement. Currently we know only the following 4 "BCP47 LegacyRules" have
+                    // extensions in them languageAlias:
+                    //  i_default => en_x_i_default
+                    //  i_enochian => und_x_i_enochian
+                    //  i_mingo => see_x_i_mingo
+                    //  zh_min => nan_x_zh_min
+                    // But all of them are already changed by code inside LanguageTag before
+                    // hitting this code.
+                }
+                // Something in search changed by language alias data.
+                return true;
+            }
+            // Nothing changed in search by language alias data.
+            return false;
+        }
+
+        private boolean replaceRegion() {
+            if (region == null || region.isEmpty()) return false;
+            List<String> replacement = territoryAliasMap.get(region);
+            if (replacement == null) {
+                // Found no replacement data for this region.
+                return false;
+            }
+            String replacedRegion;
+            if (replacement.size() > 1) {
+                String regionOfLanguageAndScript =
+                    ULocale.addLikelySubtags(
+                        new ULocale(this.language, this.script, null))
+                    .getCountry();
+                replacedRegion = replacement.contains(regionOfLanguageAndScript) ?
+                    regionOfLanguageAndScript : replacement.get(0);
+            } else {
+                replacedRegion = replacement.get(0);
+            }
+            assert !this.region.equals(replacedRegion);
+            this.region = replacedRegion;
+            // The region is changed by data in territory alias.
+            return true;
+        }
+
+        private boolean replaceScript() {
+            if (script == null || script.isEmpty()) return false;
+            String replacement = scriptAliasMap.get(script);
+            if (replacement == null) {
+                // Found no replacement data for this script.
+                return false;
+            }
+            assert !this.script.equals(replacement);
+            this.script = replacement;
+            // The script is changed by data in script alias.
+            return true;
+        }
+
+        private boolean replaceVariant() {
+            if (variants == null) return false;
+            for (int i = 0; i < variants.size(); i++) {
+                 String variant = variants.get(i);
+                 String replacement = variantAliasMap.get(variant);
+                 if (replacement == null) {
+                     // Found no replacement data for this variant.
+                     continue;
+                 }
+                 assert replacement.length() >= 4;
+                 assert replacement.length() <= 8;
+                 assert replacement.length() != 4 ||
+                     ( replacement.charAt(0) >= '0' && replacement.charAt(0) <= '9');
+                 if (!variant.equals(replacement)) {
+                     variants.set(i, replacement);
+                     // Special hack to handle hepburn-heploc => alalc97
+                     if (variant.equals("heploc")) {
+                         variants.remove("hepburn");
+                         if (variants.isEmpty()) {
+                             variants = null;
+                         }
+                     }
+                     return true;
+                 }
+            }
+            return false;
+        }
+    };
+
     /**
      * <strong>[icu]</strong> Returns the canonical name according to CLDR for the specified locale ID.
-     * This is used to convert POSIX and other grandfathered IDs to standard ICU form.
+     * This is used to convert POSIX and other legacy IDs to standard ICU form.
      * @param localeID the locale id
      * @return the canonicalized id
      */
@@ -1158,147 +1546,54 @@
             }
         }
 
-        // If the BCP 47 primary language subtag matches the type attribute of a languageAlias
-        // element in Supplemental Data, replace the language subtag with the replacement value.
-        // If there are additional subtags in the replacement value, add them to the result, but
-        // only if there is no corresponding subtag already in the tag.
-        // Five special deprecated grandfathered codes (such as i-default) are in type attributes, and are also replaced.
-        try {
-            UResourceBundle languageAlias = UResourceBundle.getBundleInstance(ICUData.ICU_BASE_NAME,
-                "metadata", ICUResourceBundle.ICU_DATA_CLASS_LOADER)
-                .get("alias")
-                .get("language");
-            // language _ variant
-            if (!parser.getVariant().isEmpty()) {
-                String [] variants = parser.getVariant().split("_");
-                for (String variant : variants) {
-                    try {
-                        // Note the key in the metadata.txt is formatted as language_variant
-                        // instead of language__variant but lscvToID will generate
-                        // language__variant so we have to build the string ourselves.
-                        ULocale replaceLocale = new ULocale(languageAlias.get(
-                            (new StringBuilder(parser.getLanguage().length() + 1 + parser.getVariant().length()))
-                                .append(parser.getLanguage())
-                                .append("_")
-                                .append(variant)
-                                .toString())
-                            .get("replacement")
-                            .getString());
-                        StringBuilder replacedVariant = new StringBuilder(parser.getVariant().length());
-                        for (String current : variants) {
-                            if (current.equals(variant)) continue;
-                            if (replacedVariant.length() > 0) replacedVariant.append("_");
-                            replacedVariant.append(current);
-                        }
-                        parser = new LocaleIDParser(
-                            (new StringBuilder(localeID.length()))
-                                .append(lscvToID(replaceLocale.getLanguage(),
-                                    !parser.getScript().isEmpty() ? parser.getScript() : replaceLocale.getScript(),
-                                    !parser.getCountry().isEmpty() ? parser.getCountry() : replaceLocale.getCountry(),
-                                    replacedVariant.toString()))
-                                .append(parser.getName().substring(parser.getBaseName().length()))
-                                .toString());
-                    } catch (MissingResourceException e) {
-                    }
-                }
-            }
-
-            // language _ script _ country
-            // ug_Arab_CN -> ug_CN
-            if (!parser.getScript().isEmpty() && !parser.getCountry().isEmpty()) {
-                try {
-                    ULocale replaceLocale = new ULocale(languageAlias.get(
-                        lscvToID(parser.getLanguage(), parser.getScript(), parser.getCountry(), null))
-                        .get("replacement")
-                        .getString());
-                    parser = new LocaleIDParser((new StringBuilder(localeID.length()))
-                        .append(lscvToID(replaceLocale.getLanguage(),
-                            replaceLocale.getScript(),
-                            replaceLocale.getCountry(),
-                            parser.getVariant()))
-                        .append(parser.getName().substring(parser.getBaseName().length()))
-                        .toString());
-                } catch (MissingResourceException e) {
-                }
-            }
-            // language _ country
-            // eg. az_AZ -> az_Latn_AZ
-            if (!parser.getCountry().isEmpty()) {
-                try {
-                    ULocale replaceLocale = new ULocale(languageAlias.get(
-                        lscvToID(parser.getLanguage(), null, parser.getCountry(), null))
-                        .get("replacement")
-                        .getString());
-                    parser = new LocaleIDParser((new StringBuilder(localeID.length()))
-                        .append(lscvToID(replaceLocale.getLanguage(),
-                            parser.getScript().isEmpty() ? replaceLocale.getScript() : parser.getScript(),
-                            replaceLocale.getCountry(),
-                            parser.getVariant()))
-                        .append(parser.getName().substring(parser.getBaseName().length()))
-                        .toString());
-                } catch (MissingResourceException e) {
-                }
-            }
-            // only language
-            // e.g. twi -> ak
-            try {
-                ULocale replaceLocale = new ULocale(languageAlias.get(parser.getLanguage())
-                    .get("replacement")
-                    .getString());
-                parser = new LocaleIDParser((new StringBuilder(localeID.length()))
-                    .append(lscvToID(replaceLocale.getLanguage(),
-                        parser.getScript().isEmpty() ? replaceLocale.getScript() : parser.getScript() ,
-                        parser.getCountry().isEmpty() ? replaceLocale.getCountry() : parser.getCountry() ,
-                        parser.getVariant()))
-                    .append(parser.getName().substring(parser.getBaseName().length()))
-                    .toString());
-            } catch (MissingResourceException e) {
-            }
-        } catch (MissingResourceException e) {
-        }
-
-        // If the BCP 47 region subtag matches the type attribute of a
-        // territoryAlias element in Supplemental Data, replace the language
-        // subtag with the replacement value, as follows:
-        if (!parser.getCountry().isEmpty()) {
-            try {
-                String replacements[] = UResourceBundle.getBundleInstance(ICUData.ICU_BASE_NAME,
-                    "metadata", ICUResourceBundle.ICU_DATA_CLASS_LOADER)
-                    .get("alias")
-                    .get("territory")
-                    .get(parser.getCountry())
-                    .get("replacement")
-                    .getString()
-                    .split(" ");
-                String replacement = replacements[0];
-                // If there is a single territory in the replacement, use it.
-                // If there are multiple territories:
-                // Look up the most likely territory for the base language code (and script, if there is one).
-                // If that likely territory is in the list, use it.
-                // Otherwise, use the first territory in the list.
-                if (replacements.length > 1) {
-                    String likelyCountry = ULocale.addLikelySubtags(
-                        new ULocale(lscvToID(parser.getLanguage(), parser.getScript(), null, parser.getVariant())))
-                        .getCountry();
-                    for (String country : replacements) {
-                        if (country.equals(likelyCountry)) {
-                            replacement = likelyCountry;
-                            break;
-                        }
-                    }
-                }
-                parser = new LocaleIDParser(
-                    (new StringBuilder(localeID.length()))
-                    .append(lscvToID(parser.getLanguage(), parser.getScript(), replacement, parser.getVariant()))
-                    .append(parser.getName().substring(parser.getBaseName().length()))
-                    .toString());
-            } catch (MissingResourceException e) {
+        String name = parser.getName();
+        if (!isKnownCanonicalizedLocale(name)) {
+            AliasReplacer replacer = new AliasReplacer(
+                parser.getLanguage(), parser.getScript(), parser.getCountry(),
+                AsciiUtil.toLowerString(parser.getVariant()),
+                parser.getName().substring(parser.getBaseName().length()));
+            String replaced = replacer.replace();
+            if (replaced != null) {
+                parser =  new LocaleIDParser(replaced);
             }
         }
 
         return parser.getName();
     }
 
+    private static synchronized boolean isKnownCanonicalizedLocale(String name) {
+        if (name.equals("c") || name.equals("en") || name.equals("en_US")) {
+            return true;
+        }
+        if (gKnownCanonicalizedCases == null) {
+            List<String> items = Arrays.asList(
+                "af", "af_ZA", "am", "am_ET", "ar", "ar_001", "as", "as_IN", "az", "az_AZ",
+                "be", "be_BY", "bg", "bg_BG", "bn", "bn_IN", "bs", "bs_BA", "ca", "ca_ES",
+                "cs", "cs_CZ", "cy", "cy_GB", "da", "da_DK", "de", "de_DE", "el", "el_GR",
+                "en", "en_GB", "en_US", "es", "es_419", "es_ES", "et", "et_EE", "eu",
+                "eu_ES", "fa", "fa_IR", "fi", "fi_FI", "fil", "fil_PH", "fr", "fr_FR",
+                "ga", "ga_IE", "gl", "gl_ES", "gu", "gu_IN", "he", "he_IL", "hi", "hi_IN",
+                "hr", "hr_HR", "hu", "hu_HU", "hy", "hy_AM", "id", "id_ID", "is", "is_IS",
+                "it", "it_IT", "ja", "ja_JP", "jv", "jv_ID", "ka", "ka_GE", "kk", "kk_KZ",
+                "km", "km_KH", "kn", "kn_IN", "ko", "ko_KR", "ky", "ky_KG", "lo", "lo_LA",
+                "lt", "lt_LT", "lv", "lv_LV", "mk", "mk_MK", "ml", "ml_IN", "mn", "mn_MN",
+                "mr", "mr_IN", "ms", "ms_MY", "my", "my_MM", "nb", "nb_NO", "ne", "ne_NP",
+                "nl", "nl_NL", "or", "or_IN", "pa", "pa_IN", "pl", "pl_PL", "ps", "ps_AF",
+                "pt", "pt_BR", "pt_PT", "ro", "ro_RO", "ru", "ru_RU", "sd", "sd_IN", "si",
+                "si_LK", "sk", "sk_SK", "sl", "sl_SI", "so", "so_SO", "sq", "sq_AL", "sr",
+                "sr_Cyrl_RS", "sr_Latn", "sr_RS", "sv", "sv_SE", "sw", "sw_TZ", "ta",
+                "ta_IN", "te", "te_IN", "th", "th_TH", "tk", "tk_TM", "tr", "tr_TR", "uk",
+                "uk_UA", "ur", "ur_PK", "uz", "uz_UZ", "vi", "vi_VN", "yue", "yue_Hant",
+                "yue_Hant_HK", "yue_HK", "zh", "zh_CN", "zh_Hans", "zh_Hans_CN", "zh_Hant",
+                "zh_Hant_TW", "zh_TW", "zu", "zu_ZA");
+            gKnownCanonicalizedCases = new HashSet<>(items);
+
+        }
+        return gKnownCanonicalizedCases.contains(name);
+    }
+
+    private static Set<String> gKnownCanonicalizedCases = null;
+
     /**
      * <strong>[icu]</strong> Given a keyword and a value, return a new locale with an updated
      * keyword and value.  If the keyword is null, this removes all keywords from the locale id.
@@ -3048,58 +3343,16 @@
      *
      * </ul>
      *
-     * <p>This implements the 'Language-Tag' production of BCP47, and
-     * so supports grandfathered (regular and irregular) as well as
-     * private use language tags.  Stand alone private use tags are
-     * represented as empty language and extension 'x-whatever',
-     * and grandfathered tags are converted to their canonical replacements
-     * where they exist.
+     * <p>This implements the 'Language-Tag' production of BCP 47, and so
+     * supports legacy language tags (marked as “Type: grandfathered” in BCP 47)
+     * (regular and irregular) as well as private use language tags.
      *
-     * <p>Grandfathered tags with canonical replacements are as follows:
+     * <p>Stand-alone private use tags are represented as empty language and extension 'x-whatever',
+     * and legacy tags are converted to their canonical replacements where they exist.
      *
-     * <table>
-     * <tbody align="center">
-     * <tr><th>grandfathered tag</th><th>&nbsp;</th><th>modern replacement</th></tr>
-     * <tr><td>art-lojban</td><td>&nbsp;</td><td>jbo</td></tr>
-     * <tr><td>i-ami</td><td>&nbsp;</td><td>ami</td></tr>
-     * <tr><td>i-bnn</td><td>&nbsp;</td><td>bnn</td></tr>
-     * <tr><td>i-hak</td><td>&nbsp;</td><td>hak</td></tr>
-     * <tr><td>i-klingon</td><td>&nbsp;</td><td>tlh</td></tr>
-     * <tr><td>i-lux</td><td>&nbsp;</td><td>lb</td></tr>
-     * <tr><td>i-navajo</td><td>&nbsp;</td><td>nv</td></tr>
-     * <tr><td>i-pwn</td><td>&nbsp;</td><td>pwn</td></tr>
-     * <tr><td>i-tao</td><td>&nbsp;</td><td>tao</td></tr>
-     * <tr><td>i-tay</td><td>&nbsp;</td><td>tay</td></tr>
-     * <tr><td>i-tsu</td><td>&nbsp;</td><td>tsu</td></tr>
-     * <tr><td>no-bok</td><td>&nbsp;</td><td>nb</td></tr>
-     * <tr><td>no-nyn</td><td>&nbsp;</td><td>nn</td></tr>
-     * <tr><td>sgn-BE-FR</td><td>&nbsp;</td><td>sfb</td></tr>
-     * <tr><td>sgn-BE-NL</td><td>&nbsp;</td><td>vgt</td></tr>
-     * <tr><td>sgn-CH-DE</td><td>&nbsp;</td><td>sgg</td></tr>
-     * <tr><td>zh-guoyu</td><td>&nbsp;</td><td>cmn</td></tr>
-     * <tr><td>zh-hakka</td><td>&nbsp;</td><td>hak</td></tr>
-     * <tr><td>zh-min-nan</td><td>&nbsp;</td><td>nan</td></tr>
-     * <tr><td>zh-xiang</td><td>&nbsp;</td><td>hsn</td></tr>
-     * </tbody>
-     * </table>
-     *
-     * <p>Grandfathered tags with no modern replacement will be
-     * converted as follows:
-     *
-     * <table>
-     * <tbody align="center">
-     * <tr><th>grandfathered tag</th><th>&nbsp;</th><th>converts to</th></tr>
-     * <tr><td>cel-gaulish</td><td>&nbsp;</td><td>xtg-x-cel-gaulish</td></tr>
-     * <tr><td>en-GB-oed</td><td>&nbsp;</td><td>en-GB-x-oed</td></tr>
-     * <tr><td>i-default</td><td>&nbsp;</td><td>en-x-i-default</td></tr>
-     * <tr><td>i-enochian</td><td>&nbsp;</td><td>und-x-i-enochian</td></tr>
-     * <tr><td>i-mingo</td><td>&nbsp;</td><td>see-x-i-mingo</td></tr>
-     * <tr><td>zh-min</td><td>&nbsp;</td><td>nan-x-zh-min</td></tr>
-     * </tbody>
-     * </table>
-     *
-     * <p>For a list of all grandfathered tags, see the
-     * IANA Language Subtag Registry (search for "Type: grandfathered").
+     * <p>Note that a few legacy tags have no modern replacement;
+     * these will be converted using the fallback described in
+     * the first paragraph, so some information might be lost.
      *
      * <p><b>Note</b>: there is no guarantee that <code>toLanguageTag</code>
      * and <code>forLanguageTag</code> will round-trip.
@@ -3326,7 +3579,7 @@
          * Resets the Builder to match the provided IETF BCP 47
          * language tag.  Discards the existing state.  Null and the
          * empty string cause the builder to be reset, like {@link
-         * #clear}.  Grandfathered tags (see {@link
+         * #clear}.  Legacy tags (see {@link
          * ULocale#forLanguageTag}) are converted to their canonical
          * form before being processed.  Otherwise, the language tag
          * must be well-formed (see {@link ULocale}) or an exception is
diff --git a/android_icu4j/src/main/java/android/icu/util/UResourceBundle.java b/android_icu4j/src/main/java/android/icu/util/UResourceBundle.java
index 65b049c..819b5be 100644
--- a/android_icu4j/src/main/java/android/icu/util/UResourceBundle.java
+++ b/android_icu4j/src/main/java/android/icu/util/UResourceBundle.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/java/android/icu/util/UResourceBundleIterator.java b/android_icu4j/src/main/java/android/icu/util/UResourceBundleIterator.java
index 40f17a4..d72bb58 100644
--- a/android_icu4j/src/main/java/android/icu/util/UResourceBundleIterator.java
+++ b/android_icu4j/src/main/java/android/icu/util/UResourceBundleIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2004-2009, International Business Machines Corporation and   *
@@ -92,4 +92,4 @@
     public boolean hasNext(){
         return index < size;   
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/java/android/icu/util/UResourceTypeMismatchException.java b/android_icu4j/src/main/java/android/icu/util/UResourceTypeMismatchException.java
index 3c2da87..d0d98f0 100644
--- a/android_icu4j/src/main/java/android/icu/util/UResourceTypeMismatchException.java
+++ b/android_icu4j/src/main/java/android/icu/util/UResourceTypeMismatchException.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2004-2006, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/util/UniversalTimeScale.java b/android_icu4j/src/main/java/android/icu/util/UniversalTimeScale.java
index 81d2cf0..02d6be9 100644
--- a/android_icu4j/src/main/java/android/icu/util/UniversalTimeScale.java
+++ b/android_icu4j/src/main/java/android/icu/util/UniversalTimeScale.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *********************************************************************************
  * Copyright (C) 2004-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/VTimeZone.java b/android_icu4j/src/main/java/android/icu/util/VTimeZone.java
index ed08cb0..7fe5bc1 100644
--- a/android_icu4j/src/main/java/android/icu/util/VTimeZone.java
+++ b/android_icu4j/src/main/java/android/icu/util/VTimeZone.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2015, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/java/android/icu/util/ValueIterator.java b/android_icu4j/src/main/java/android/icu/util/ValueIterator.java
index 6f95964..593329e 100644
--- a/android_icu4j/src/main/java/android/icu/util/ValueIterator.java
+++ b/android_icu4j/src/main/java/android/icu/util/ValueIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 1996-2016, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/java/android/icu/util/VersionInfo.java b/android_icu4j/src/main/java/android/icu/util/VersionInfo.java
index 7301870..4e5c7d8 100644
--- a/android_icu4j/src/main/java/android/icu/util/VersionInfo.java
+++ b/android_icu4j/src/main/java/android/icu/util/VersionInfo.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
@@ -180,7 +180,7 @@
      * @hide draft / provisional / internal are hidden on Android
      */
     @Deprecated
-    public static final String ICU_DATA_VERSION_PATH = "67b";
+    public static final String ICU_DATA_VERSION_PATH = "68b";
 
     /**
      * Data version in ICU4J.
@@ -335,57 +335,6 @@
         return getInstance(major, 0, 0, 0);
     }
 
-    private static volatile VersionInfo javaVersion;
-
-    /**
-     * @deprecated This API is ICU internal only.
-     * @hide original deprecated declaration
-     * @hide draft / provisional / internal are hidden on Android
-     */
-    @Deprecated
-    public static VersionInfo javaVersion() {
-        if (javaVersion == null) {
-            synchronized(VersionInfo.class) {
-                if (javaVersion == null) {
-                    String s = System.getProperty("java.version");
-                    // clean string
-                    // preserve only digits, separated by single '.'
-                    // ignore over 4 digit sequences
-                    // does not test < 255, very odd...
-
-                    char[] chars = s.toCharArray();
-                    int r = 0, w = 0, count = 0;
-                    boolean numeric = false; // ignore leading non-numerics
-                    while (r < chars.length) {
-                        char c = chars[r++];
-                        if (c < '0' || c > '9') {
-                            if (numeric) {
-                                if (count == 3) {
-                                    // only four digit strings allowed
-                                    break;
-                                }
-                                numeric = false;
-                                chars[w++] = '.';
-                                ++count;
-                            }
-                        } else {
-                            numeric = true;
-                            chars[w++] = c;
-                        }
-                    }
-                    while (w > 0 && chars[w-1] == '.') {
-                        --w;
-                    }
-
-                    String vs = new String(chars, 0, w);
-
-                    javaVersion = VersionInfo.getInstance(vs);
-                }
-            }
-        }
-        return javaVersion;
-    }
-
     /**
      * Returns the String representative of VersionInfo in the format of
      * "major.minor.milli.micro"
@@ -477,7 +426,15 @@
     @Override
     public int compareTo(VersionInfo other)
     {
-        return m_version_ - other.m_version_;
+        // m_version_ is an int, a signed 32-bit integer.
+        // When the major version is >=128, then the version int is negative.
+        // Compare it in two steps to simulate an unsigned-int comparison.
+        // (Alternatively we could turn each int into a long and reset the upper 32 bits.)
+        // Compare the upper bits first, using logical shift right (unsigned).
+        int diff = (m_version_ >>> 1) - (other.m_version_ >>> 1);
+        if (diff != 0) { return diff; }
+        // Compare the remaining bits.
+        return (m_version_ & 1) - (other.m_version_ & 1);
     }
 
     // private data members ----------------------------------------------
@@ -551,7 +508,7 @@
         UNICODE_12_1   = getInstance(12, 1, 0, 0);
         UNICODE_13_0   = getInstance(13, 0, 0, 0);
 
-        ICU_VERSION   = getInstance(67, 1, 0, 0);
+        ICU_VERSION   = getInstance(68, 2, 0, 0);
         ICU_DATA_VERSION = ICU_VERSION;
         UNICODE_VERSION = UNICODE_13_0;
 
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/TestDataElements_testtypes.java b/android_icu4j/src/main/tests/android/icu/dev/data/TestDataElements_testtypes.java
index affd332..41c8d23 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/TestDataElements_testtypes.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/TestDataElements_testtypes.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2008, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/_readme.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/_readme.txt
new file mode 100644
index 0000000..323c53f
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/_readme.txt
@@ -0,0 +1,6 @@
+# Test data for units: conversions and preferences
+#  Copyright © 1991-2020 Unicode, Inc.
+#  For terms of use, see http://www.unicode.org/copyright.html
+#  Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+#  CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+# The format may vary between folders or files.
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitPreferencesTest.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitPreferencesTest.txt
new file mode 100644
index 0000000..b0dabe0
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitPreferencesTest.txt
@@ -0,0 +1,454 @@
+# Test data for unit preferences
+#  Copyright © 1991-2020 Unicode, Inc.
+#  For terms of use, see http://www.unicode.org/copyright.html
+#  Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+#  CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# Format:
+#	Quantity;	Usage;	Region;	Input (r);	Input (d);	Input Unit;	Output (r);	Output (d);	Output Unit
+#
+# Use: Convert the Input amount & unit according to the Usage and Region.
+#	 The result should match the Output amount and unit.
+#	 Both rational (r) and double64 (d) forms of the input and output amounts are supplied so that implementations
+#	 have two options for testing based on the precision in their implementations. For example:
+#	   3429 / 12500; 0.27432; meter;
+#	 The Output amount and Unit are repeated for mixed units. In such a case, only the smallest unit will have
+#	 both a rational and decimal amount; the others will have a single integer value, such as:
+#	   length; person-height; CA; 3429 / 12500; 0.27432; meter; 2; foot; 54 / 5; 10.8; inch
+#	 The input and output units are unit identifers; in particular, the output does not have further processing:
+#		 • no localization
+#		 • no adjustment for pluralization
+#		 • no formatted with the skeleton
+#		 • no suppression of zero values (for secondary -and- units such as pound in stone-and-pound)
+#
+# Generation: Set GENERATE_TESTS in TestUnits.java, and look at TestUnitPreferences results.
+
+area;	default;	001;	1100000;	1100000.0;	square-meter;	11 / 10;	1.1;	square-kilometer
+area;	default;	001;	1000000;	1000000.0;	square-meter;	1;	1.0;	square-kilometer
+area;	default;	001;	900000;	900000.0;	square-meter;	90;	90.0;	hectare
+area;	default;	001;	10000;	10000.0;	square-meter;	1;	1.0;	hectare
+area;	default;	001;	9000;	9000.0;	square-meter;	9000;	9000.0;	square-meter
+area;	default;	001;	1;	1.0;	square-meter;	1;	1.0;	square-meter
+area;	default;	001;	9 / 10;	0.9;	square-meter;	9000;	9000.0;	square-centimeter
+area;	default;	001;	1 / 10000;	1.0E-4;	square-meter;	1;	1.0;	square-centimeter
+area;	default;	001;	9 / 100000;	9.0E-5;	square-meter;	9 / 10;	0.9;	square-centimeter
+
+area;	default;	GB;	222577103232 / 78125;	2848986.9213696;	square-meter;	11 / 10;	1.1;	square-mile
+area;	default;	GB;	40468564224 / 15625;	2589988.110336;	square-meter;	1;	1.0;	square-mile
+area;	default;	GB;	182108539008 / 78125;	2330989.2993024;	square-meter;	576;	576.0;	acre
+area;	default;	GB;	316160658 / 78125;	4046.8564224;	square-meter;	1;	1.0;	acre
+area;	default;	GB;	1422722961 / 390625;	3642.17078016;	square-meter;	39204;	39204.0;	square-foot
+area;	default;	GB;	145161 / 1562500;	0.09290304;	square-meter;	1;	1.0;	square-foot
+area;	default;	GB;	1306449 / 15625000;	0.083612736;	square-meter;	648 / 5;	129.6;	square-inch
+area;	default;	GB;	16129 / 25000000;	6.4516E-4;	square-meter;	1;	1.0;	square-inch
+area;	default;	GB;	145161 / 250000000;	5.80644E-4;	square-meter;	9 / 10;	0.9;	square-inch
+
+area;	geograph;	001;	1100000;	1100000.0;	square-meter;	11 / 10;	1.1;	square-kilometer
+area;	geograph;	001;	1000000;	1000000.0;	square-meter;	1;	1.0;	square-kilometer
+area;	geograph;	001;	900000;	900000.0;	square-meter;	9 / 10;	0.9;	square-kilometer
+
+area;	geograph;	GB;	222577103232 / 78125;	2848986.9213696;	square-meter;	11 / 10;	1.1;	square-mile
+area;	geograph;	GB;	40468564224 / 15625;	2589988.110336;	square-meter;	1;	1.0;	square-mile
+area;	geograph;	GB;	182108539008 / 78125;	2330989.2993024;	square-meter;	9 / 10;	0.9;	square-mile
+
+area;	land;	001;	11000;	11000.0;	square-meter;	11 / 10;	1.1;	hectare
+area;	land;	001;	10000;	10000.0;	square-meter;	1;	1.0;	hectare
+area;	land;	001;	9000;	9000.0;	square-meter;	9 / 10;	0.9;	hectare
+
+area;	land;	GB;	1738883619 / 390625;	4451.54206464;	square-meter;	11 / 10;	1.1;	acre
+area;	land;	GB;	316160658 / 78125;	4046.8564224;	square-meter;	1;	1.0;	acre
+area;	land;	GB;	1422722961 / 390625;	3642.17078016;	square-meter;	9 / 10;	0.9;	acre
+
+concentration;	blood-glucose;	AG;	662435483600000000000000;	6.624354836E23;	item-per-cubic-meter;	11 / 10;	1.1;	millimole-per-liter
+concentration;	blood-glucose;	AG;	602214076000000000000000;	6.02214076E23;	item-per-cubic-meter;	1;	1.0;	millimole-per-liter
+concentration;	blood-glucose;	AG;	541992668400000000000000;	5.419926684E23;	item-per-cubic-meter;	9 / 10;	0.9;	millimole-per-liter
+
+concentration;	default;	001;	11 / 10;	1.1;	item-per-cubic-meter;	11 / 10;	1.1;	item-per-cubic-meter
+concentration;	default;	001;	1;	1.0;	item-per-cubic-meter;	1;	1.0;	item-per-cubic-meter
+concentration;	default;	001;	9 / 10;	0.9;	item-per-cubic-meter;	9 / 10;	0.9;	item-per-cubic-meter
+
+consumption;	default;	001;	11 / 1000000000;	1.1E-8;	cubic-meter-per-meter;	11 / 10;	1.1;	liter-per-100-kilometer
+consumption;	default;	001;	1 / 100000000;	1.0E-8;	cubic-meter-per-meter;	1;	1.0;	liter-per-100-kilometer
+consumption;	default;	001;	9 / 1000000000;	9.0E-9;	cubic-meter-per-meter;	9 / 10;	0.9;	liter-per-100-kilometer
+
+consumption;	vehicle-fuel;	001;	11 / 1000000000;	1.1E-8;	cubic-meter-per-meter;	11 / 10;	1.1;	liter-per-100-kilometer
+consumption;	vehicle-fuel;	001;	1 / 100000000;	1.0E-8;	cubic-meter-per-meter;	1;	1.0;	liter-per-100-kilometer
+consumption;	vehicle-fuel;	001;	9 / 1000000000;	9.0E-9;	cubic-meter-per-meter;	9 / 10;	0.9;	liter-per-100-kilometer
+
+consumption;	vehicle-fuel;	BR;	11 / 10000000;	1.1E-6;	cubic-meter-per-meter;	11 / 10;	1.1;	liter-per-kilometer
+consumption;	vehicle-fuel;	BR;	1 / 1000000;	1.0E-6;	cubic-meter-per-meter;	1;	1.0;	liter-per-kilometer
+consumption;	vehicle-fuel;	BR;	9 / 10000000;	9.0E-7;	cubic-meter-per-meter;	9 / 10;	0.9;	liter-per-kilometer
+
+consumption-inverse;	default;	001;	110000000;	1.1E8;	meter-per-cubic-meter;	11 / 10;	1.1;	kilometer-per-centiliter
+consumption-inverse;	default;	001;	100000000;	1.0E8;	meter-per-cubic-meter;	1;	1.0;	kilometer-per-centiliter
+consumption-inverse;	default;	001;	90000000;	9.0E7;	meter-per-cubic-meter;	9 / 10;	0.9;	kilometer-per-centiliter
+
+consumption-inverse;	vehicle-fuel;	001;	110000000;	1.1E8;	meter-per-cubic-meter;	11 / 10;	1.1;	kilometer-per-centiliter
+consumption-inverse;	vehicle-fuel;	001;	100000000;	1.0E8;	meter-per-cubic-meter;	1;	1.0;	kilometer-per-centiliter
+consumption-inverse;	vehicle-fuel;	001;	90000000;	9.0E7;	meter-per-cubic-meter;	9 / 10;	0.9;	kilometer-per-centiliter
+
+consumption-inverse;	vehicle-fuel;	US;	52800000000 / 112903;	467658.0781732992;	meter-per-cubic-meter;	11 / 10;	1.1;	mile-per-gallon
+consumption-inverse;	vehicle-fuel;	US;	48000000000 / 112903;	425143.707430272;	meter-per-cubic-meter;	1;	1.0;	mile-per-gallon
+consumption-inverse;	vehicle-fuel;	US;	43200000000 / 112903;	382629.3366872448;	meter-per-cubic-meter;	9 / 10;	0.9;	mile-per-gallon
+
+consumption-inverse;	vehicle-fuel;	CA;	177027840000 / 454609;	389406.8089281118;	meter-per-cubic-meter;	11 / 10;	1.1;	mile-per-gallon-imperial
+consumption-inverse;	vehicle-fuel;	CA;	160934400000 / 454609;	354006.1899346471;	meter-per-cubic-meter;	1;	1.0;	mile-per-gallon-imperial
+consumption-inverse;	vehicle-fuel;	CA;	144840960000 / 454609;	318605.5709411824;	meter-per-cubic-meter;	9 / 10;	0.9;	mile-per-gallon-imperial
+
+duration;	default;	001;	95040;	95040.0;	second;	11 / 10;	1.1;	day
+duration;	default;	001;	86400;	86400.0;	second;	1;	1.0;	day
+duration;	default;	001;	77760;	77760.0;	second;	108 / 5;	21.6;	hour
+duration;	default;	001;	3600;	3600.0;	second;	1;	1.0;	hour
+duration;	default;	001;	3240;	3240.0;	second;	54;	54.0;	minute
+duration;	default;	001;	60;	60.0;	second;	1;	1.0;	minute
+duration;	default;	001;	54;	54.0;	second;	54;	54.0;	second
+duration;	default;	001;	1;	1.0;	second;	1;	1.0;	second
+duration;	default;	001;	9 / 10;	0.9;	second;	900;	900.0;	millisecond
+duration;	default;	001;	1 / 1000;	0.001;	second;	1;	1.0;	millisecond
+duration;	default;	001;	9 / 10000;	9.0E-4;	second;	900;	900.0;	microsecond
+duration;	default;	001;	1 / 1000000;	1.0E-6;	second;	1;	1.0;	microsecond
+duration;	default;	001;	9 / 10000000;	9.0E-7;	second;	900;	900.0;	nanosecond
+duration;	default;	001;	1 / 1000000000;	1.0E-9;	second;	1;	1.0;	nanosecond
+duration;	default;	001;	9 / 10000000000;	9.0E-10;	second;	9 / 10;	0.9;	nanosecond
+
+duration;	media;	001;	66;	66.0;	second;	1;	minute;	6;	6.0;	second
+duration;	media;	001;	60;	60.0;	second;	1;	minute;	0;	0.0;	second
+duration;	media;	001;	54;	54.0;	second;	54;	54.0;	second
+duration;	media;	001;	1;	1.0;	second;	1;	1.0;	second
+duration;	media;	001;	9 / 10;	0.9;	second;	9 / 10;	0.9;	second
+
+energy;	default;	001;	3960000;	3960000.0;	kilogram-square-meter-per-square-second;	11 / 10;	1.1;	kilowatt-hour
+energy;	default;	001;	3600000;	3600000.0;	kilogram-square-meter-per-square-second;	1;	1.0;	kilowatt-hour
+energy;	default;	001;	3240000;	3240000.0;	kilogram-square-meter-per-square-second;	9 / 10;	0.9;	kilowatt-hour
+
+energy;	food;	US;	23012 / 5;	4602.4;	kilogram-square-meter-per-square-second;	11 / 10;	1.1;	foodcalorie
+energy;	food;	US;	4184;	4184.0;	kilogram-square-meter-per-square-second;	1;	1.0;	foodcalorie
+energy;	food;	US;	18828 / 5;	3765.6;	kilogram-square-meter-per-square-second;	9 / 10;	0.9;	foodcalorie
+
+energy;	food;	001;	23012 / 5;	4602.4;	kilogram-square-meter-per-square-second;	11 / 10;	1.1;	kilocalorie
+energy;	food;	001;	4184;	4184.0;	kilogram-square-meter-per-square-second;	1;	1.0;	kilocalorie
+energy;	food;	001;	18828 / 5;	3765.6;	kilogram-square-meter-per-square-second;	9 / 10;	0.9;	kilocalorie
+
+length;	default;	001;	1100;	1100.0;	meter;	11 / 10;	1.1;	kilometer
+length;	default;	001;	1000;	1000.0;	meter;	1;	1.0;	kilometer
+length;	default;	001;	900;	900.0;	meter;	900;	900.0;	meter
+length;	default;	001;	1;	1.0;	meter;	1;	1.0;	meter
+length;	default;	001;	9 / 10;	0.9;	meter;	90;	90.0;	centimeter
+length;	default;	001;	1 / 100;	0.01;	meter;	1;	1.0;	centimeter
+length;	default;	001;	9 / 1000;	0.009;	meter;	9 / 10;	0.9;	centimeter
+
+length;	default;	GB;	1106424 / 625;	1770.2784;	meter;	11 / 10;	1.1;	mile
+length;	default;	GB;	201168 / 125;	1609.344;	meter;	1;	1.0;	mile
+length;	default;	GB;	905256 / 625;	1448.4096;	meter;	4752;	4752.0;	foot
+length;	default;	GB;	381 / 1250;	0.3048;	meter;	1;	1.0;	foot
+length;	default;	GB;	3429 / 12500;	0.27432;	meter;	54 / 5;	10.8;	inch
+length;	default;	GB;	127 / 5000;	0.0254;	meter;	1;	1.0;	inch
+length;	default;	GB;	1143 / 50000;	0.02286;	meter;	9 / 10;	0.9;	inch
+
+length;	focal-length;	001;	11 / 10000;	0.0011;	meter;	11 / 10;	1.1;	millimeter
+length;	focal-length;	001;	1 / 1000;	0.001;	meter;	1;	1.0;	millimeter
+length;	focal-length;	001;	9 / 10000;	9.0E-4;	meter;	9 / 10;	0.9;	millimeter
+
+length;	person;	001;	11 / 1000;	0.011;	meter;	11 / 10;	1.1;	centimeter
+length;	person;	001;	1 / 100;	0.01;	meter;	1;	1.0;	centimeter
+length;	person;	001;	9 / 1000;	0.009;	meter;	9 / 10;	0.9;	centimeter
+
+length;	person;	CA;	1397 / 50000;	0.02794;	meter;	11 / 10;	1.1;	inch
+length;	person;	CA;	127 / 5000;	0.0254;	meter;	1;	1.0;	inch
+length;	person;	CA;	1143 / 50000;	0.02286;	meter;	9 / 10;	0.9;	inch
+
+length;	person-height;	001;	11 / 1000;	0.011;	meter;	11 / 10;	1.1;	centimeter
+length;	person-height;	001;	1 / 100;	0.01;	meter;	1;	1.0;	centimeter
+length;	person-height;	001;	9 / 1000;	0.009;	meter;	9 / 10;	0.9;	centimeter
+
+length;	person-height;	CA;	11811 / 12500;	0.94488;	meter;	3;	foot;	6 / 5;	1.2;	inch
+length;	person-height;	CA;	1143 / 1250;	0.9144;	meter;	3;	foot;	0;	0.0;	inch
+length;	person-height;	CA;	11049 / 12500;	0.88392;	meter;	174 / 5;	34.8;	inch
+length;	person-height;	CA;	127 / 5000;	0.0254;	meter;	1;	1.0;	inch
+length;	person-height;	CA;	1143 / 50000;	0.02286;	meter;	9 / 10;	0.9;	inch
+
+length;	person-height;	AT;	11 / 10;	1.1;	meter;	1;	meter;	10;	10.0;	centimeter
+length;	person-height;	AT;	1;	1.0;	meter;	1;	meter;	0;	0.0;	centimeter
+length;	person-height;	AT;	9 / 10;	0.9;	meter;	0;	meter;	90;	90.0;	centimeter
+
+length;	rainfall;	BR;	11 / 1000;	0.011;	meter;	11 / 10;	1.1;	centimeter
+length;	rainfall;	BR;	1 / 100;	0.01;	meter;	1;	1.0;	centimeter
+length;	rainfall;	BR;	9 / 1000;	0.009;	meter;	9 / 10;	0.9;	centimeter
+
+length;	rainfall;	US;	1397 / 50000;	0.02794;	meter;	11 / 10;	1.1;	inch
+length;	rainfall;	US;	127 / 5000;	0.0254;	meter;	1;	1.0;	inch
+length;	rainfall;	US;	1143 / 50000;	0.02286;	meter;	9 / 10;	0.9;	inch
+
+length;	rainfall;	001;	11 / 10000;	0.0011;	meter;	11 / 10;	1.1;	millimeter
+length;	rainfall;	001;	1 / 1000;	0.001;	meter;	1;	1.0;	millimeter
+length;	rainfall;	001;	9 / 10000;	9.0E-4;	meter;	9 / 10;	0.9;	millimeter
+
+length;	road;	001;	1000;	1000.0;	meter;	1;	1.0;	kilometer
+length;	road;	001;	900;	900.0;	meter;	9 / 10;	0.9;	kilometer
+length;	road;	001;	800;	800.0;	meter;	800;	800.0;	meter
+length;	road;	001;	300;	300.0;	meter;	300;	300.0;	meter
+length;	road;	001;	2999 / 10;	299.9;	meter;	2999 / 10;	299.9;	meter
+length;	road;	001;	1;	1.0;	meter;	1;	1.0;	meter
+length;	road;	001;	9 / 10;	0.9;	meter;	9 / 10;	0.9;	meter
+
+length;	road;	US;	603504 / 625;	965.6064;	meter;	3 / 5;	0.6;	mile
+length;	road;	US;	100584 / 125;	804.672;	meter;	1 / 2;	0.5;	mile
+length;	road;	US;	402336 / 625;	643.7376;	meter;	2112;	2112.0;	foot
+length;	road;	US;	762 / 25;	30.48;	meter;	100;	100.0;	foot
+length;	road;	US;	380619 / 12500;	30.44952;	meter;	999 / 10;	99.9;	foot
+length;	road;	US;	381 / 1250;	0.3048;	meter;	1;	1.0;	foot
+length;	road;	US;	3429 / 12500;	0.27432;	meter;	9 / 10;	0.9;	foot
+
+length;	road;	GB;	603504 / 625;	965.6064;	meter;	3 / 5;	0.6;	mile
+length;	road;	GB;	100584 / 125;	804.672;	meter;	1 / 2;	0.5;	mile
+length;	road;	GB;	402336 / 625;	643.7376;	meter;	704;	704.0;	yard
+length;	road;	GB;	2286 / 25;	91.44;	meter;	100;	100.0;	yard
+length;	road;	GB;	1141857 / 12500;	91.34856;	meter;	999 / 10;	99.9;	yard
+length;	road;	GB;	1143 / 1250;	0.9144;	meter;	1;	1.0;	yard
+length;	road;	GB;	10287 / 12500;	0.82296;	meter;	9 / 10;	0.9;	yard
+
+length;	road;	SE;	11000;	11000.0;	meter;	11 / 10;	1.1;	mile-scandinavian
+length;	road;	SE;	10000;	10000.0;	meter;	1;	1.0;	mile-scandinavian
+length;	road;	SE;	9000;	9000.0;	meter;	9;	9.0;	kilometer
+length;	road;	SE;	1000;	1000.0;	meter;	1;	1.0;	kilometer
+length;	road;	SE;	900;	900.0;	meter;	900;	900.0;	meter
+length;	road;	SE;	300;	300.0;	meter;	300;	300.0;	meter
+length;	road;	SE;	2999 / 10;	299.9;	meter;	2999 / 10;	299.9;	meter
+length;	road;	SE;	1;	1.0;	meter;	1;	1.0;	meter
+length;	road;	SE;	9 / 10;	0.9;	meter;	9 / 10;	0.9;	meter
+
+length;	snowfall;	001;	11 / 1000;	0.011;	meter;	11 / 10;	1.1;	centimeter
+length;	snowfall;	001;	1 / 100;	0.01;	meter;	1;	1.0;	centimeter
+length;	snowfall;	001;	9 / 1000;	0.009;	meter;	9 / 10;	0.9;	centimeter
+
+length;	snowfall;	US;	1397 / 50000;	0.02794;	meter;	11 / 10;	1.1;	inch
+length;	snowfall;	US;	127 / 5000;	0.0254;	meter;	1;	1.0;	inch
+length;	snowfall;	US;	1143 / 50000;	0.02286;	meter;	9 / 10;	0.9;	inch
+
+length;	vehicle;	GB;	4191 / 12500;	0.33528;	meter;	1;	foot;	6 / 5;	1.2;	inch
+length;	vehicle;	GB;	381 / 1250;	0.3048;	meter;	1;	foot;	0;	0.0;	inch
+length;	vehicle;	GB;	3429 / 12500;	0.27432;	meter;	0;	foot;	54 / 5;	10.8;	inch
+
+length;	vehicle;	001;	11 / 10;	1.1;	meter;	11 / 10;	1.1;	meter
+length;	vehicle;	001;	1;	1.0;	meter;	1;	1.0;	meter
+length;	vehicle;	001;	9 / 10;	0.9;	meter;	9 / 10;	0.9;	meter
+
+length;	vehicle;	MX;	11 / 10;	1.1;	meter;	1;	meter;	10;	10.0;	centimeter
+length;	vehicle;	MX;	1;	1.0;	meter;	1;	meter;	0;	0.0;	centimeter
+length;	vehicle;	MX;	9 / 10;	0.9;	meter;	0;	meter;	90;	90.0;	centimeter
+
+length;	visiblty;	001;	200;	200.0;	meter;	1 / 5;	0.2;	kilometer
+length;	visiblty;	001;	100;	100.0;	meter;	1 / 10;	0.1;	kilometer
+length;	visiblty;	001;	1;	1.0;	meter;	1;	1.0;	meter
+length;	visiblty;	001;	9 / 10;	0.9;	meter;	9 / 10;	0.9;	meter
+length;	visiblty;	001;	0;	0.0;	meter;	0;	0.0;	meter
+
+length;	visiblty;	DE;	11 / 10;	1.1;	meter;	11 / 10;	1.1;	meter
+length;	visiblty;	DE;	1;	1.0;	meter;	1;	1.0;	meter
+length;	visiblty;	DE;	9 / 10;	0.9;	meter;	9 / 10;	0.9;	meter
+
+length;	visiblty;	GB;	1106424 / 625;	1770.2784;	meter;	11 / 10;	1.1;	mile
+length;	visiblty;	GB;	201168 / 125;	1609.344;	meter;	1;	1.0;	mile
+length;	visiblty;	GB;	905256 / 625;	1448.4096;	meter;	4752;	4752.0;	foot
+length;	visiblty;	GB;	381 / 1250;	0.3048;	meter;	1;	1.0;	foot
+length;	visiblty;	GB;	3429 / 12500;	0.27432;	meter;	9 / 10;	0.9;	foot
+
+mass;	default;	001;	1100;	1100.0;	kilogram;	11 / 10;	1.1;	metric-ton
+mass;	default;	001;	1000;	1000.0;	kilogram;	1;	1.0;	metric-ton
+mass;	default;	001;	900;	900.0;	kilogram;	900;	900.0;	kilogram
+mass;	default;	001;	1;	1.0;	kilogram;	1;	1.0;	kilogram
+mass;	default;	001;	9 / 10;	0.9;	kilogram;	900;	900.0;	gram
+mass;	default;	001;	1 / 1000;	0.001;	kilogram;	1;	1.0;	gram
+mass;	default;	001;	9 / 10000;	9.0E-4;	kilogram;	900;	900.0;	milligram
+mass;	default;	001;	1 / 1000000;	1.0E-6;	kilogram;	1;	1.0;	milligram
+mass;	default;	001;	9 / 10000000;	9.0E-7;	kilogram;	900;	900.0;	microgram
+mass;	default;	001;	1 / 1000000000;	1.0E-9;	kilogram;	1;	1.0;	microgram
+mass;	default;	001;	9 / 10000000000;	9.0E-10;	kilogram;	9 / 10;	0.9;	microgram
+
+mass;	default;	GB;	498951607 / 500000;	997.903214;	kilogram;	11 / 10;	1.1;	ton
+mass;	default;	GB;	45359237 / 50000;	907.18474;	kilogram;	1;	1.0;	ton
+mass;	default;	GB;	408233133 / 500000;	816.466266;	kilogram;	1800;	1800.0;	pound
+mass;	default;	GB;	45359237 / 100000000;	0.45359237;	kilogram;	1;	1.0;	pound
+mass;	default;	GB;	408233133 / 1000000000;	0.408233133;	kilogram;	72 / 5;	14.4;	ounce
+mass;	default;	GB;	45359237 / 1600000000;	0.028349523125;	kilogram;	1;	1.0;	ounce
+mass;	default;	GB;	408233133 / 16000000000;	0.0255145708125;	kilogram;	9 / 10;	0.9;	ounce
+
+mass;	person;	001;	11 / 10;	1.1;	kilogram;	11 / 10;	1.1;	kilogram
+mass;	person;	001;	1;	1.0;	kilogram;	1;	1.0;	kilogram
+mass;	person;	001;	9 / 10;	0.9;	kilogram;	900;	900.0;	gram
+mass;	person;	001;	1 / 1000;	0.001;	kilogram;	1;	1.0;	gram
+mass;	person;	001;	9 / 10000;	9.0E-4;	kilogram;	9 / 10;	0.9;	gram
+
+mass;	person;	DZ;	11 / 10;	1.1;	kilogram;	1;	kilogram;	100;	100.0;	gram
+mass;	person;	DZ;	1;	1.0;	kilogram;	1;	kilogram;	0;	0.0;	gram
+mass;	person;	DZ;	9 / 10;	0.9;	kilogram;	0;	kilogram;	900;	900.0;	gram
+
+mass;	person;	US;	498951607 / 1000000000;	0.498951607;	kilogram;	11 / 10;	1.1;	pound
+mass;	person;	US;	45359237 / 100000000;	0.45359237;	kilogram;	1;	1.0;	pound
+mass;	person;	US;	408233133 / 1000000000;	0.408233133;	kilogram;	0;	pound;	72 / 5;	14.4;	ounce
+
+mass;	person;	GB;	3492661249 / 500000000;	6.985322498;	kilogram;	1;	stone;	7 / 5;	1.4;	pound
+mass;	person;	GB;	317514659 / 50000000;	6.35029318;	kilogram;	1;	stone;	0;	0.0;	pound
+mass;	person;	GB;	2857631931 / 500000000;	5.715263862;	kilogram;	12;	pound;	48 / 5;	9.6;	ounce
+mass;	person;	GB;	45359237 / 100000000;	0.45359237;	kilogram;	1;	pound;	0;	0.0;	ounce
+mass;	person;	GB;	408233133 / 1000000000;	0.408233133;	kilogram;	0;	pound;	72 / 5;	14.4;	ounce
+
+mass;	person;	HK;	498951607 / 1000000000;	0.498951607;	kilogram;	1;	pound;	8 / 5;	1.6;	ounce
+mass;	person;	HK;	45359237 / 100000000;	0.45359237;	kilogram;	1;	pound;	0;	0.0;	ounce
+mass;	person;	HK;	408233133 / 1000000000;	0.408233133;	kilogram;	0;	pound;	72 / 5;	14.4;	ounce
+
+mass-density;	blood-glucose;	001;	11 / 1000;	0.011;	kilogram-per-cubic-meter;	11 / 10;	1.1;	milligram-per-deciliter
+mass-density;	blood-glucose;	001;	1 / 100;	0.01;	kilogram-per-cubic-meter;	1;	1.0;	milligram-per-deciliter
+mass-density;	blood-glucose;	001;	9 / 1000;	0.009;	kilogram-per-cubic-meter;	9 / 10;	0.9;	milligram-per-deciliter
+
+mass-density;	default;	001;	11 / 10;	1.1;	kilogram-per-cubic-meter;	11 / 10;	1.1;	kilogram-per-cubic-meter
+mass-density;	default;	001;	1;	1.0;	kilogram-per-cubic-meter;	1;	1.0;	kilogram-per-cubic-meter
+mass-density;	default;	001;	9 / 10;	0.9;	kilogram-per-cubic-meter;	9 / 10;	0.9;	kilogram-per-cubic-meter
+
+power;	default;	001;	1100000000;	1.1E9;	kilogram-square-meter-per-cubic-second;	11 / 10;	1.1;	gigawatt
+power;	default;	001;	1000000000;	1.0E9;	kilogram-square-meter-per-cubic-second;	1;	1.0;	gigawatt
+power;	default;	001;	900000000;	9.0E8;	kilogram-square-meter-per-cubic-second;	900;	900.0;	megawatt
+power;	default;	001;	1000000;	1000000.0;	kilogram-square-meter-per-cubic-second;	1;	1.0;	megawatt
+power;	default;	001;	900000;	900000.0;	kilogram-square-meter-per-cubic-second;	900;	900.0;	kilowatt
+power;	default;	001;	1000;	1000.0;	kilogram-square-meter-per-cubic-second;	1;	1.0;	kilowatt
+power;	default;	001;	900;	900.0;	kilogram-square-meter-per-cubic-second;	900;	900.0;	watt
+power;	default;	001;	1;	1.0;	kilogram-square-meter-per-cubic-second;	1;	1.0;	watt
+power;	default;	001;	9 / 10;	0.9;	kilogram-square-meter-per-cubic-second;	900;	900.0;	milliwatt
+power;	default;	001;	1 / 1000;	0.001;	kilogram-square-meter-per-cubic-second;	1;	1.0;	milliwatt
+power;	default;	001;	9 / 10000;	9.0E-4;	kilogram-square-meter-per-cubic-second;	9 / 10;	0.9;	milliwatt
+
+power;	engine;	001;	1100;	1100.0;	kilogram-square-meter-per-cubic-second;	11 / 10;	1.1;	kilowatt
+power;	engine;	001;	1000;	1000.0;	kilogram-square-meter-per-cubic-second;	1;	1.0;	kilowatt
+power;	engine;	001;	900;	900.0;	kilogram-square-meter-per-cubic-second;	9 / 10;	0.9;	kilowatt
+
+power;	engine;	GB;	410134929370248621 / 500000000000000;	820.2698587404972;	kilogram-square-meter-per-cubic-second;	11 / 10;	1.1;	horsepower
+power;	engine;	GB;	37284993579113511 / 50000000000000;	745.6998715822702;	kilogram-square-meter-per-cubic-second;	1;	1.0;	horsepower
+power;	engine;	GB;	335564942212021599 / 500000000000000;	671.1298844240432;	kilogram-square-meter-per-cubic-second;	9 / 10;	0.9;	horsepower
+
+pressure;	baromtrc;	001;	110;	110.0;	kilogram-per-meter-square-second;	11 / 10;	1.1;	hectopascal
+pressure;	baromtrc;	001;	100;	100.0;	kilogram-per-meter-square-second;	1;	1.0;	hectopascal
+pressure;	baromtrc;	001;	90;	90.0;	kilogram-per-meter-square-second;	9 / 10;	0.9;	hectopascal
+
+pressure;	baromtrc;	IN;	37250275043751 / 10000000000;	3725.0275043751;	kilogram-per-meter-square-second;	11 / 10;	1.1;	inch-ofhg
+pressure;	baromtrc;	IN;	3386388640341 / 1000000000;	3386.388640341;	kilogram-per-meter-square-second;	1;	1.0;	inch-ofhg
+pressure;	baromtrc;	IN;	30477497763069 / 10000000000;	3047.7497763069;	kilogram-per-meter-square-second;	9 / 10;	0.9;	inch-ofhg
+
+pressure;	baromtrc;	BR;	110;	110.0;	kilogram-per-meter-square-second;	11 / 10;	1.1;	millibar
+pressure;	baromtrc;	BR;	100;	100.0;	kilogram-per-meter-square-second;	1;	1.0;	millibar
+pressure;	baromtrc;	BR;	90;	90.0;	kilogram-per-meter-square-second;	9 / 10;	0.9;	millibar
+
+pressure;	baromtrc;	MX;	293309252313 / 2000000000;	146.6546261565;	kilogram-per-meter-square-second;	11 / 10;	1.1;	millimeter-ofhg
+pressure;	baromtrc;	MX;	26664477483 / 200000000;	133.322387415;	kilogram-per-meter-square-second;	1;	1.0;	millimeter-ofhg
+pressure;	baromtrc;	MX;	239980297347 / 2000000000;	119.9901486735;	kilogram-per-meter-square-second;	9 / 10;	0.9;	millimeter-ofhg
+
+pressure;	default;	001;	1100000;	1100000.0;	kilogram-per-meter-square-second;	11 / 10;	1.1;	megapascal
+pressure;	default;	001;	1000000;	1000000.0;	kilogram-per-meter-square-second;	1;	1.0;	megapascal
+pressure;	default;	001;	900000;	900000.0;	kilogram-per-meter-square-second;	900000;	900000.0;	pascal
+pressure;	default;	001;	1;	1.0;	kilogram-per-meter-square-second;	1;	1.0;	pascal
+pressure;	default;	001;	9 / 10;	0.9;	kilogram-per-meter-square-second;	9 / 10;	0.9;	pascal
+
+pressure;	default;	GB;	97860875535731 / 12903200000;	7584.233022485197;	kilogram-per-meter-square-second;	11 / 10;	1.1;	pound-force-per-square-inch
+pressure;	default;	GB;	8896443230521 / 1290320000;	6894.757293168361;	kilogram-per-meter-square-second;	1;	1.0;	pound-force-per-square-inch
+pressure;	default;	GB;	80067989074689 / 12903200000;	6205.281563851525;	kilogram-per-meter-square-second;	9 / 10;	0.9;	pound-force-per-square-inch
+
+speed;	default;	001;	11 / 36;	0.3055555555555556;	meter-per-second;	11 / 10;	1.1;	kilometer-per-hour
+speed;	default;	001;	5 / 18;	0.2777777777777778;	meter-per-second;	1;	1.0;	kilometer-per-hour
+speed;	default;	001;	1 / 4;	0.25;	meter-per-second;	9 / 10;	0.9;	kilometer-per-hour
+
+speed;	default;	GB;	15367 / 31250;	0.491744;	meter-per-second;	11 / 10;	1.1;	mile-per-hour
+speed;	default;	GB;	1397 / 3125;	0.44704;	meter-per-second;	1;	1.0;	mile-per-hour
+speed;	default;	GB;	12573 / 31250;	0.402336;	meter-per-second;	9 / 10;	0.9;	mile-per-hour
+
+speed;	wind;	001;	11 / 36;	0.3055555555555556;	meter-per-second;	11 / 10;	1.1;	kilometer-per-hour
+speed;	wind;	001;	5 / 18;	0.2777777777777778;	meter-per-second;	1;	1.0;	kilometer-per-hour
+speed;	wind;	001;	1 / 4;	0.25;	meter-per-second;	9 / 10;	0.9;	kilometer-per-hour
+
+speed;	wind;	FI;	11 / 10;	1.1;	meter-per-second;	11 / 10;	1.1;	meter-per-second
+speed;	wind;	FI;	1;	1.0;	meter-per-second;	1;	1.0;	meter-per-second
+speed;	wind;	FI;	9 / 10;	0.9;	meter-per-second;	9 / 10;	0.9;	meter-per-second
+
+speed;	wind;	US;	15367 / 31250;	0.491744;	meter-per-second;	11 / 10;	1.1;	mile-per-hour
+speed;	wind;	US;	1397 / 3125;	0.44704;	meter-per-second;	1;	1.0;	mile-per-hour
+speed;	wind;	US;	12573 / 31250;	0.402336;	meter-per-second;	9 / 10;	0.9;	mile-per-hour
+
+temperature;	default;	001;	1097 / 4;	274.25;	kelvin;	11 / 10;	1.1;	celsius
+temperature;	default;	001;	5483 / 20;	274.15;	kelvin;	1;	1.0;	celsius
+temperature;	default;	001;	5481 / 20;	274.05;	kelvin;	9 / 10;	0.9;	celsius
+
+temperature;	default;	US;	15359 / 60;	255.9833333333333;	kelvin;	11 / 10;	1.1;	fahrenheit
+temperature;	default;	US;	46067 / 180;	255.9277777777778;	kelvin;	1;	1.0;	fahrenheit
+temperature;	default;	US;	46057 / 180;	255.8722222222222;	kelvin;	9 / 10;	0.9;	fahrenheit
+
+temperature;	weather;	001;	1097 / 4;	274.25;	kelvin;	11 / 10;	1.1;	celsius
+temperature;	weather;	001;	5483 / 20;	274.15;	kelvin;	1;	1.0;	celsius
+temperature;	weather;	001;	5481 / 20;	274.05;	kelvin;	9 / 10;	0.9;	celsius
+
+temperature;	weather;	BS;	15359 / 60;	255.9833333333333;	kelvin;	11 / 10;	1.1;	fahrenheit
+temperature;	weather;	BS;	46067 / 180;	255.9277777777778;	kelvin;	1;	1.0;	fahrenheit
+temperature;	weather;	BS;	46057 / 180;	255.8722222222222;	kelvin;	9 / 10;	0.9;	fahrenheit
+
+volume;	default;	001;	11 / 10;	1.1;	cubic-meter;	11 / 10;	1.1;	cubic-meter
+volume;	default;	001;	1;	1.0;	cubic-meter;	1;	1.0;	cubic-meter
+volume;	default;	001;	9 / 10;	0.9;	cubic-meter;	900000;	900000.0;	cubic-centimeter
+volume;	default;	001;	1 / 1000000;	1.0E-6;	cubic-meter;	1;	1.0;	cubic-centimeter
+volume;	default;	001;	9 / 10000000;	9.0E-7;	cubic-meter;	9 / 10;	0.9;	cubic-centimeter
+
+volume;	default;	GB;	608369751 / 19531250000;	0.0311485312512;	cubic-meter;	11 / 10;	1.1;	cubic-foot
+volume;	default;	GB;	55306341 / 1953125000;	0.028316846592;	cubic-meter;	1;	1.0;	cubic-foot
+volume;	default;	GB;	497757069 / 19531250000;	0.0254851619328;	cubic-meter;	7776 / 5;	1555.2;	cubic-inch
+volume;	default;	GB;	2048383 / 125000000000;	1.6387064E-5;	cubic-meter;	1;	1.0;	cubic-inch
+volume;	default;	GB;	18435447 / 1250000000000;	1.47483576E-5;	cubic-meter;	9 / 10;	0.9;	cubic-inch
+
+volume;	fluid;	001;	11 / 10000;	0.0011;	cubic-meter;	11 / 10;	1.1;	liter
+volume;	fluid;	001;	1 / 1000;	0.001;	cubic-meter;	1;	1.0;	liter
+volume;	fluid;	001;	9 / 10000;	9.0E-4;	cubic-meter;	900;	900.0;	milliliter
+volume;	fluid;	001;	1 / 1000000;	1.0E-6;	cubic-meter;	1;	1.0;	milliliter
+volume;	fluid;	001;	9 / 10000000;	9.0E-7;	cubic-meter;	9 / 10;	0.9;	milliliter
+
+volume;	fluid;	US;	5204941203 / 1250000000000;	0.0041639529624;	cubic-meter;	11 / 10;	1.1;	gallon
+volume;	fluid;	US;	473176473 / 125000000000;	0.003785411784;	cubic-meter;	1;	1.0;	gallon
+volume;	fluid;	US;	4258588257 / 1250000000000;	0.0034068706056;	cubic-meter;	18 / 5;	3.6;	quart
+volume;	fluid;	US;	473176473 / 500000000000;	9.46352946E-4;	cubic-meter;	1;	1.0;	quart
+volume;	fluid;	US;	4258588257 / 5000000000000;	8.517176514E-4;	cubic-meter;	9 / 5;	1.8;	pint
+volume;	fluid;	US;	473176473 / 1000000000000;	4.73176473E-4;	cubic-meter;	1;	1.0;	pint
+volume;	fluid;	US;	4258588257 / 10000000000000;	4.258588257E-4;	cubic-meter;	9 / 5;	1.8;	cup
+volume;	fluid;	US;	473176473 / 2000000000000;	2.365882365E-4;	cubic-meter;	1;	1.0;	cup
+volume;	fluid;	US;	4258588257 / 20000000000000;	2.1292941285E-4;	cubic-meter;	36 / 5;	7.2;	fluid-ounce
+volume;	fluid;	US;	473176473 / 16000000000000;	2.95735295625E-5;	cubic-meter;	1;	1.0;	fluid-ounce
+volume;	fluid;	US;	4258588257 / 160000000000000;	2.661617660625E-5;	cubic-meter;	9 / 5;	1.8;	tablespoon
+volume;	fluid;	US;	473176473 / 32000000000000;	1.478676478125E-5;	cubic-meter;	1;	1.0;	tablespoon
+volume;	fluid;	US;	4258588257 / 320000000000000;	1.3308088303125E-5;	cubic-meter;	27 / 10;	2.7;	teaspoon
+volume;	fluid;	US;	157725491 / 32000000000000;	4.92892159375E-6;	cubic-meter;	1;	1.0;	teaspoon
+volume;	fluid;	US;	1419529419 / 320000000000000;	4.436029434375E-6;	cubic-meter;	9 / 10;	0.9;	teaspoon
+
+volume;	fluid;	GB;	5000699 / 1000000000;	0.005000699;	cubic-meter;	11 / 10;	1.1;	gallon-imperial
+volume;	fluid;	GB;	454609 / 100000000;	0.00454609;	cubic-meter;	1;	1.0;	gallon-imperial
+volume;	fluid;	GB;	4091481 / 1000000000;	0.004091481;	cubic-meter;	144;	144.0;	fluid-ounce-imperial
+volume;	fluid;	GB;	454609 / 16000000000;	2.84130625E-5;	cubic-meter;	1;	1.0;	fluid-ounce-imperial
+volume;	fluid;	GB;	4091481 / 160000000000;	2.557175625E-5;	cubic-meter;	9 / 10;	0.9;	fluid-ounce-imperial
+
+volume;	oil;	001;	109303765263 / 625000000000;	0.1748860244208;	cubic-meter;	11 / 10;	1.1;	barrel
+volume;	oil;	001;	9936705933 / 62500000000;	0.158987294928;	cubic-meter;	1;	1.0;	barrel
+volume;	oil;	001;	89430353397 / 625000000000;	0.1430885654352;	cubic-meter;	9 / 10;	0.9;	barrel
+
+volume;	vehicle;	US;	5204941203 / 1250000000000;	0.0041639529624;	cubic-meter;	11 / 10;	1.1;	gallon
+volume;	vehicle;	US;	473176473 / 125000000000;	0.003785411784;	cubic-meter;	1;	1.0;	gallon
+volume;	vehicle;	US;	4258588257 / 1250000000000;	0.0034068706056;	cubic-meter;	9 / 10;	0.9;	gallon
+
+volume;	vehicle;	001;	11 / 10000;	0.0011;	cubic-meter;	11 / 10;	1.1;	liter
+volume;	vehicle;	001;	1 / 1000;	0.001;	cubic-meter;	1;	1.0;	liter
+volume;	vehicle;	001;	9 / 10000;	9.0E-4;	cubic-meter;	9 / 10;	0.9;	liter
+
+year-duration;	default;	001;	11 / 10;	1.1;	year;	11 / 10;	1.1;	year
+year-duration;	default;	001;	1;	1.0;	year;	1;	1.0;	year
+year-duration;	default;	001;	9 / 10;	0.9;	year;	54 / 5;	10.8;	month
+year-duration;	default;	001;	1 / 12;	0.08333333333333333;	year;	1;	1.0;	month
+year-duration;	default;	001;	3 / 40;	0.075;	year;	9 / 10;	0.9;	month
+
+year-duration;	person-age;	001;	13 / 5;	2.6;	year;	13 / 5;	2.6;	year-person
+year-duration;	person-age;	001;	5 / 2;	2.5;	year;	5 / 2;	2.5;	year-person
+year-duration;	person-age;	001;	12 / 5;	2.4;	year;	2;	year-person;	24 / 5;	4.8;	month-person
+year-duration;	person-age;	001;	1;	1.0;	year;	1;	year-person;	0;	0.0;	month-person
+year-duration;	person-age;	001;	9 / 10;	0.9;	year;	54 / 5;	10.8;	month-person
+year-duration;	person-age;	001;	1 / 12;	0.08333333333333333;	year;	1;	1.0;	month-person
+year-duration;	person-age;	001;	3 / 40;	0.075;	year;	9 / 10;	0.9;	month-person
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitsTest.txt b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitsTest.txt
new file mode 100644
index 0000000..d2facef
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/cldr/units/unitsTest.txt
@@ -0,0 +1,203 @@
+# Test data for unit conversions
+#  Copyright © 1991-2020 Unicode, Inc.
+#  For terms of use, see http://www.unicode.org/copyright.html
+#  Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+#  CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# Format:
+#	Quantity	;	x	;	y	;	conversion to y (rational)	;	test: 1000 x ⟹ y
+#
+# Use: convert 1000 x units to the y unit; the result should match the final column,
+#   at the given precision. For example, when the last column is 159.1549,
+#   round to 4 decimal digits before comparing.
+# Note that certain conversions are approximate, such as degrees to radians
+#
+# Generation: Set GENERATE_TESTS in TestUnits.java, and look at TestParseUnit results.
+
+acceleration	;	meter-per-square-second	;	meter-per-square-second	;	1 * x	;	1,000.00
+acceleration	;	g-force	;	meter-per-square-second	;	9.80665 * x	;	9806.65
+angle	;	arc-second	;	revolution	;	0.0000625/81 * x	;	7.716049E-4
+angle	;	arc-minute	;	revolution	;	0.00125/27 * x	;	0.0462963
+angle	;	degree	;	revolution	;	0.025/9 * x	;	2.777778
+angle	;	radian	;	revolution	;	65,501,488/411,557,987 * x	;	159.1549
+angle	;	revolution	;	revolution	;	1 * x	;	1,000.00
+area	;	square-centimeter	;	square-meter	;	0.0001 * x	;	0.1
+area	;	square-inch	;	square-meter	;	0.00064516 * x	;	0.64516
+area	;	square-foot	;	square-meter	;	0.09290304 * x	;	92.90304
+area	;	square-yard	;	square-meter	;	0.83612736 * x	;	836.1274
+area	;	square-meter	;	square-meter	;	1 * x	;	1,000.00
+area	;	dunam	;	square-meter	;	1,000 * x	;	1000000.0
+area	;	acre	;	square-meter	;	4,046.8564224 * x	;	4046856.0
+area	;	hectare	;	square-meter	;	10,000 * x	;	1.0E7
+area	;	square-kilometer	;	square-meter	;	1,000,000 * x	;	1.0E9
+area	;	square-mile	;	square-meter	;	2,589,988.110336 * x	;	2.589988E9
+concentration	;	millimole-per-liter	;	item-per-cubic-meter	;	602,214,076,000,000,000,000,000 * x	;	6.022141E26
+consumption	;	liter-per-100-kilometer	;	cubic-meter-per-meter	;	0.00000001 * x	;	1.0E-5
+consumption	;	liter-per-kilometer	;	cubic-meter-per-meter	;	0.000001 * x	;	0.001
+consumption-inverse	;	mile-per-gallon-imperial	;	meter-per-cubic-meter	;	160,934,400,000/454,609 * x	;	3.540062E8
+consumption-inverse	;	mile-per-gallon	;	meter-per-cubic-meter	;	48,000,000,000/112,903 * x	;	4.251437E8
+digital	;	bit	;	bit	;	1 * x	;	1,000.00
+digital	;	byte	;	bit	;	8 * x	;	8000.0
+digital	;	kilobit	;	bit	;	1,000 * x	;	1000000.0
+digital	;	kilobyte	;	bit	;	8,000 * x	;	8000000.0
+digital	;	megabit	;	bit	;	1,000,000 * x	;	1.0E9
+digital	;	megabyte	;	bit	;	8,000,000 * x	;	8.0E9
+digital	;	gigabit	;	bit	;	1,000,000,000 * x	;	1.0E12
+digital	;	gigabyte	;	bit	;	8,000,000,000 * x	;	8.0E12
+digital	;	terabit	;	bit	;	1,000,000,000,000 * x	;	1.0E15
+digital	;	terabyte	;	bit	;	8,000,000,000,000 * x	;	8.0E15
+digital	;	petabyte	;	bit	;	8,000,000,000,000,000 * x	;	8.0E18
+duration	;	nanosecond	;	second	;	0.000000001 * x	;	1.0E-6
+duration	;	microsecond	;	second	;	0.000001 * x	;	0.001
+duration	;	millisecond	;	second	;	0.001 * x	;	1.0
+duration	;	second	;	second	;	1 * x	;	1,000.00
+duration	;	minute	;	second	;	60 * x	;	60000.0
+duration	;	hour	;	second	;	3,600 * x	;	3600000.0
+duration	;	day	;	second	;	86,400 * x	;	8.64E7
+duration	;	day-person	;	second	;	86,400 * x	;	8.64E7
+duration	;	week	;	second	;	604,800 * x	;	6.048E8
+duration	;	week-person	;	second	;	604,800 * x	;	6.048E8
+electric-current	;	milliampere	;	ampere	;	0.001 * x	;	1.0
+electric-current	;	ampere	;	ampere	;	1 * x	;	1,000.00
+electric-resistance	;	ohm	;	kilogram-square-meter-per-cubic-second-square-ampere	;	1 * x	;	1000.0
+energy	;	electronvolt	;	kilogram-square-meter-per-square-second	;	0.0000000000000000001602177 * x	;	1.602177E-16
+energy	;	dalton	;	kilogram-square-meter-per-square-second	;	0.00000000014924180856 * x	;	1.492418E-7
+energy	;	joule	;	kilogram-square-meter-per-square-second	;	1 * x	;	1000.0
+energy	;	newton-meter	;	kilogram-square-meter-per-square-second	;	1 * x	;	1000.0
+energy	;	pound-force-foot	;	kilogram-square-meter-per-square-second	;	1.3558179483314004 * x	;	1355.818
+energy	;	calorie	;	kilogram-square-meter-per-square-second	;	4.184 * x	;	4184.0
+energy	;	kilojoule	;	kilogram-square-meter-per-square-second	;	1,000 * x	;	1000000.0
+energy	;	british-thermal-unit	;	kilogram-square-meter-per-square-second	;	9,489.1523804/9 * x	;	1054350.0
+energy	;	foodcalorie	;	kilogram-square-meter-per-square-second	;	4,184 * x	;	4184000.0
+energy	;	kilocalorie	;	kilogram-square-meter-per-square-second	;	4,184 * x	;	4184000.0
+energy	;	kilowatt-hour	;	kilogram-square-meter-second-per-cubic-second	;	3,600,000 * x	;	3.6E9
+energy	;	therm-us	;	kilogram-square-meter-per-square-second	;	105,480,400 * x	;	1.054804E11
+force	;	newton	;	kilogram-meter-per-square-second	;	1 * x	;	1000.0
+force	;	pound-force	;	kilogram-meter-per-square-second	;	4.4482216152605 * x	;	4448.222
+frequency	;	hertz	;	revolution-per-second	;	1 * x	;	1000.0
+frequency	;	kilohertz	;	revolution-per-second	;	1,000 * x	;	1000000.0
+frequency	;	megahertz	;	revolution-per-second	;	1,000,000 * x	;	1.0E9
+frequency	;	gigahertz	;	revolution-per-second	;	1,000,000,000 * x	;	1.0E12
+graphics	;	dot	;	pixel	;	1 * x	;	1000.0
+graphics	;	pixel	;	pixel	;	1 * x	;	1,000.00
+graphics	;	megapixel	;	pixel	;	1,000,000 * x	;	1.0E9
+illuminance	;	lux	;	candela-per-square-meter	;	1 * x	;	1000.0
+length	;	picometer	;	meter	;	0.000000000001 * x	;	1.0E-9
+length	;	nanometer	;	meter	;	0.000000001 * x	;	1.0E-6
+length	;	micrometer	;	meter	;	0.000001 * x	;	0.001
+length	;	point	;	meter	;	0.003175/9 * x	;	0.3527778
+length	;	millimeter	;	meter	;	0.001 * x	;	1.0
+length	;	centimeter	;	meter	;	0.01 * x	;	10.0
+length	;	inch	;	meter	;	0.0254 * x	;	25.4
+length	;	decimeter	;	meter	;	0.1 * x	;	100.0
+length	;	foot	;	meter	;	0.3048 * x	;	304.8
+length	;	yard	;	meter	;	0.9144 * x	;	914.4
+length	;	meter	;	meter	;	1 * x	;	1,000.00
+length	;	fathom	;	meter	;	1.8288 * x	;	1828.8
+length	;	furlong	;	meter	;	201.168 * x	;	201168.0
+length	;	kilometer	;	meter	;	1,000 * x	;	1000000.0
+length	;	mile	;	meter	;	1,609.344 * x	;	1609344.0
+length	;	nautical-mile	;	meter	;	1,852 * x	;	1852000.0
+length	;	mile-scandinavian	;	meter	;	10,000 * x	;	1.0E7
+length	;	100-kilometer	;	meter	;	100,000 * x	;	1.0E8
+length	;	earth-radius	;	meter	;	6,378,100 * x	;	6.3781E9
+length	;	solar-radius	;	meter	;	695,700,000 * x	;	6.957E11
+length	;	astronomical-unit	;	meter	;	149,597,900,000 * x	;	1.495979E14
+length	;	light-year	;	meter	;	9,460,730,000,000,000 * x	;	9.46073E18
+length	;	parsec	;	meter	;	30,856,780,000,000,000 * x	;	3.085678E19
+luminous-flux	;	lumen	;	candela-square-meter-per-square-meter	;	1 * x	;	1000.0
+luminous-intensity	;	candela	;	candela	;	1 * x	;	1,000.00
+mass	;	microgram	;	kilogram	;	0.000000001 * x	;	1.0E-6
+mass	;	milligram	;	kilogram	;	0.000001 * x	;	0.001
+mass	;	grain	;	kilogram	;	0.00006479891 * x	;	0.06479891
+mass	;	carat	;	kilogram	;	0.0002 * x	;	0.2
+mass	;	gram	;	kilogram	;	0.001 * x	;	1.0
+mass	;	ounce	;	kilogram	;	0.028349523125 * x	;	28.34952
+mass	;	ounce-troy	;	kilogram	;	0.03110348 * x	;	31.10348
+mass	;	pound	;	kilogram	;	0.45359237 * x	;	453.5924
+mass	;	kilogram	;	kilogram	;	1 * x	;	1,000.00
+mass	;	stone	;	kilogram	;	6.35029318 * x	;	6350.293
+mass	;	ton	;	kilogram	;	907.18474 * x	;	907184.7
+mass	;	metric-ton	;	kilogram	;	1,000 * x	;	1000000.0
+mass	;	earth-mass	;	kilogram	;	5,972,200,000,000,000,000,000,000 * x	;	5.9722E27
+mass	;	solar-mass	;	kilogram	;	1,988,470,000,000,000,000,000,000,000,000 * x	;	1.98847E33
+mass-density	;	milligram-per-deciliter	;	kilogram-per-cubic-meter	;	0.01 * x	;	10.0
+portion	;	permillion	;	portion	;	0.000001 * x	;	0.001
+portion	;	permyriad	;	portion	;	0.0001 * x	;	0.1
+portion	;	permille	;	portion	;	0.001 * x	;	1.0
+portion	;	percent	;	portion	;	0.01 * x	;	10.0
+portion	;	karat	;	portion	;	0.125/3 * x	;	41.66667
+portion	;	portion	;	portion	;	1 * x	;	1,000.00
+power	;	milliwatt	;	kilogram-square-meter-per-cubic-second	;	0.001 * x	;	1.0
+power	;	watt	;	kilogram-square-meter-per-cubic-second	;	1 * x	;	1000.0
+power	;	horsepower	;	kilogram-square-meter-per-cubic-second	;	745.69987158227022 * x	;	745699.9
+power	;	kilowatt	;	kilogram-square-meter-per-cubic-second	;	1,000 * x	;	1000000.0
+power	;	megawatt	;	kilogram-square-meter-per-cubic-second	;	1,000,000 * x	;	1.0E9
+power	;	gigawatt	;	kilogram-square-meter-per-cubic-second	;	1,000,000,000 * x	;	1.0E12
+power	;	solar-luminosity	;	kilogram-square-meter-per-cubic-second	;	382,800,000,000,000,000,000,000,000 * x	;	3.828E29
+pressure	;	pascal	;	kilogram-per-meter-square-second	;	1 * x	;	1000.0
+pressure	;	hectopascal	;	kilogram-per-meter-square-second	;	100 * x	;	100000.0
+pressure	;	millibar	;	kilogram-per-meter-square-second	;	100 * x	;	100000.0
+pressure	;	millimeter-ofhg	;	kilogram-meter-per-square-meter-square-second	;	133.322387415 * x	;	133322.4
+pressure	;	kilopascal	;	kilogram-per-meter-square-second	;	1,000 * x	;	1000000.0
+pressure	;	inch-ofhg	;	kilogram-meter-per-square-meter-square-second	;	3,386.388640341 * x	;	3386389.0
+pressure	;	pound-force-per-square-inch	;	kilogram-meter-per-square-meter-square-second	;	111,205,540.3815125/16,129 * x	;	6894757.0
+pressure	;	bar	;	kilogram-per-meter-square-second	;	100,000 * x	;	1.0E8
+pressure	;	atmosphere	;	kilogram-per-meter-square-second	;	101,325 * x	;	1.01325E8
+pressure	;	megapascal	;	kilogram-per-meter-square-second	;	1,000,000 * x	;	1.0E9
+pressure-per-length	;	ofhg	;	kilogram-per-square-meter-square-second	;	133,322.387415 * x	;	1.333224E8
+resolution	;	dot-per-inch	;	pixel-per-meter	;	5,000/127 * x	;	39370.08
+resolution	;	pixel-per-inch	;	pixel-per-meter	;	5,000/127 * x	;	39370.08
+resolution	;	dot-per-centimeter	;	pixel-per-meter	;	100 * x	;	100000.0
+resolution	;	pixel-per-centimeter	;	pixel-per-meter	;	100 * x	;	100000.0
+speed	;	kilometer-per-hour	;	meter-per-second	;	2.5/9 * x	;	277.7778
+speed	;	mile-per-hour	;	meter-per-second	;	0.44704 * x	;	447.04
+speed	;	knot	;	meter-per-second	;	4.63/9 * x	;	514.4444
+speed	;	meter-per-second	;	meter-per-second	;	1 * x	;	1,000.00
+substance-amount	;	item	;	item	;	1 * x	;	1,000.00
+substance-amount	;	mole	;	item	;	602,214,076,000,000,000,000,000 * x	;	6.022141E26
+temperature	;	fahrenheit	;	kelvin	;	5/9 * x - 2,298.35/9	;	810.9278
+temperature	;	kelvin	;	kelvin	;	1 * x	;	1,000.00
+temperature	;	celsius	;	kelvin	;	1 * x - 273.15	;	1273.15
+typewidth	;	em	;	em	;	1 * x	;	1,000.00
+voltage	;	volt	;	kilogram-square-meter-per-cubic-second-ampere	;	1 * x	;	1000.0
+volume	;	drop	;	cubic-meter	;	0.0000001540287998046875/3 * x	;	5.134293E-5
+volume	;	pinch	;	cubic-meter	;	0.00000023104319970703125 * x	;	2.310432E-4
+volume	;	cubic-centimeter	;	cubic-meter	;	0.000001 * x	;	0.001
+volume	;	milliliter	;	cubic-meter	;	0.000001 * x	;	0.001
+volume	;	dessert-spoon	;	cubic-meter	;	0.00000184834559765625 * x	;	0.001848346
+volume	;	dessert-spoon-imperial	;	cubic-meter	;	0.0000022197705078125 * x	;	0.002219771
+volume	;	dram	;	cubic-meter	;	0.0000036966911953125 * x	;	0.003696691
+volume	;	teaspoon	;	cubic-meter	;	0.00000492892159375 * x	;	0.004928922
+volume	;	centiliter	;	cubic-meter	;	0.00001 * x	;	0.01
+volume	;	tablespoon	;	cubic-meter	;	0.00001478676478125 * x	;	0.01478676
+volume	;	cubic-inch	;	cubic-meter	;	0.000016387064 * x	;	0.01638706
+volume	;	fluid-ounce-imperial	;	cubic-meter	;	0.0000284130625 * x	;	0.02841306
+volume	;	fluid-ounce	;	cubic-meter	;	0.0000295735295625 * x	;	0.02957353
+volume	;	jigger	;	cubic-meter	;	0.00004436029434375 * x	;	0.04436029
+volume	;	deciliter	;	cubic-meter	;	0.0001 * x	;	0.1
+volume	;	cup	;	cubic-meter	;	0.0002365882365 * x	;	0.2365882
+volume	;	cup-metric	;	cubic-meter	;	0.00025 * x	;	0.25
+volume	;	pint	;	cubic-meter	;	0.000473176473 * x	;	0.4731765
+volume	;	pint-metric	;	cubic-meter	;	0.0005 * x	;	0.5
+volume	;	quart	;	cubic-meter	;	0.000946352946 * x	;	0.9463529
+volume	;	liter	;	cubic-meter	;	0.001 * x	;	1.0
+volume	;	quart-imperial	;	cubic-meter	;	0.0011365225 * x	;	1.136522
+volume	;	gallon	;	cubic-meter	;	0.003785411784 * x	;	3.785412
+volume	;	gallon-imperial	;	cubic-meter	;	0.00454609 * x	;	4.54609
+volume	;	cubic-foot	;	cubic-meter	;	0.028316846592 * x	;	28.31685
+volume	;	bushel	;	cubic-meter	;	0.03523907016688 * x	;	35.23907
+volume	;	hectoliter	;	cubic-meter	;	0.1 * x	;	100.0
+volume	;	barrel	;	cubic-meter	;	0.158987294928 * x	;	158.9873
+volume	;	cubic-yard	;	cubic-meter	;	0.764554857984 * x	;	764.5549
+volume	;	cubic-meter	;	cubic-meter	;	1 * x	;	1,000.00
+volume	;	megaliter	;	cubic-meter	;	1,000 * x	;	1000000.0
+volume	;	acre-foot	;	cubic-meter	;	1,233.48183754752 * x	;	1233482.0
+volume	;	cubic-kilometer	;	cubic-meter	;	1,000,000,000 * x	;	1.0E12
+volume	;	cubic-mile	;	cubic-meter	;	4,168,181,825.440579584 * x	;	4.168182E12
+year-duration	;	month	;	year	;	0.25/3 * x	;	83.33333
+year-duration	;	month-person	;	year	;	0.25/3 * x	;	83.33333
+year-duration	;	year	;	year	;	1 * x	;	1,000.00
+year-duration	;	year-person	;	year	;	1 * x	;	1000.0
+year-duration	;	decade	;	year	;	10 * x	;	10000.0
+year-duration	;	century	;	year	;	100 * x	;	100000.0
\ No newline at end of file
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/numberpermutationtest.txt b/android_icu4j/src/main/tests/android/icu/dev/data/numberpermutationtest.txt
index 24136ad..9767baa 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/numberpermutationtest.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/numberpermutationtest.txt
@@ -3,31 +3,31 @@
 
 compact-short percent unit-width-narrow
   es-MX
-    0 %
-    92 k
-    -0.22 %
+    0%
+    92 k%
+    -0.22%
   zh-TW
     0%
-    9.2萬
+    9.2萬%
     -0.22%
   bn-BD
     ০%
-    ৯২ হা
+    ৯২ হা%
     -০.২২%
 
 compact-short percent unit-width-full-name
   es-MX
-    0 %
-    92 k
-    -0.22 %
+    0 por ciento
+    92 k por ciento
+    -0.22 por ciento
   zh-TW
     0%
-    9.2萬
+    9.2萬%
     -0.22%
   bn-BD
-    ০%
-    ৯২ হা
-    -০.২২%
+    ০শতাংশ
+    ৯২ হাশতাংশ
+    -০.২২শতাংশ
 
 compact-short currency/EUR unit-width-narrow
   es-MX
@@ -73,9 +73,9 @@
 
 compact-short measure-unit/length-furlong unit-width-full-name
   es-MX
-    0 fur
-    92 k fur
-    -0.22 fur
+    0 furlongs
+    92 k furlongs
+    -0.22 furlongs
   zh-TW
     0 化朗
     9.2萬 化朗
@@ -101,17 +101,17 @@
 
 scientific/+ee/sign-always percent unit-width-full-name
   es-MX
-    0E+00 %
-    9.182736E+04 %
-    -2.2222E-01 %
+    0E+00 por ciento
+    9.182736E+04 por ciento
+    -2.2222E-01 por ciento
   zh-TW
     0E+00%
     9.182736E+04%
     -2.2222E-01%
   bn-BD
-    ০E+০০%
-    ৯.১৮২৭৩৬E+০৪%
-    -২.২২২২E-০১%
+    ০E+০০শতাংশ
+    ৯.১৮২৭৩৬E+০৪শতাংশ
+    -২.২২২২E-০১শতাংশ
 
 scientific/+ee/sign-always currency/EUR unit-width-narrow
   es-MX
@@ -157,9 +157,9 @@
 
 scientific/+ee/sign-always measure-unit/length-furlong unit-width-full-name
   es-MX
-    0E+00 fur
-    9.182736E+04 fur
-    -2.2222E-01 fur
+    0E+00 furlongs
+    9.182736E+04 furlongs
+    -2.2222E-01 furlongs
   zh-TW
     0E+00 化朗
     9.182736E+04 化朗
@@ -172,57 +172,57 @@
 compact-short percent precision-integer
   es-MX
     0 %
-    92 k
+    92 k %
     -0 %
   zh-TW
     0%
-    9萬
+    9萬%
     -0%
   bn-BD
     ০%
-    ৯২ হা
+    ৯২ হা%
     -০%
 
 compact-short percent .000
   es-MX
     0.000 %
-    91.827 k
+    91.827 k %
     -0.222 %
   zh-TW
     0.000%
-    9.183萬
+    9.183萬%
     -0.222%
   bn-BD
     ০.০০০%
-    ৯১.৮২৭ হা
+    ৯১.৮২৭ হা%
     -০.২২২%
 
 compact-short percent .##/@@@+
   es-MX
     0 %
-    91.83 k
+    91.83 k %
     -0.222 %
   zh-TW
     0%
-    9.18萬
+    9.18萬%
     -0.222%
   bn-BD
     ০%
-    ৯১.৮৩ হা
+    ৯১.৮৩ হা%
     -০.২২২%
 
 compact-short percent @@
   es-MX
     0.0 %
-    92 k
+    92 k %
     -0.22 %
   zh-TW
     0.0%
-    9.2萬
+    9.2萬%
     -0.22%
   bn-BD
     ০.০%
-    ৯২ হা
+    ৯২ হা%
     -০.২২%
 
 compact-short currency/EUR precision-integer
@@ -508,15 +508,15 @@
 compact-short percent rounding-mode-floor
   es-MX
     0 %
-    91 k
+    91 k %
     -0.23 %
   zh-TW
     0%
-    9.1萬
+    9.1萬%
     -0.23%
   bn-BD
     ০%
-    ৯১ হা
+    ৯১ হা%
     -০.২৩%
 
 compact-short currency/EUR rounding-mode-floor
@@ -592,15 +592,15 @@
 compact-short percent integer-width/##00
   es-MX
     00 %
-    92 k
+    92 k %
     -00.22 %
   zh-TW
     00%
-    09.2萬
+    09.2萬%
     -00.22%
   bn-BD
     ০০%
-    ৯২ হা
+    ৯২ হা%
     -০০.২২%
 
 compact-short currency/EUR integer-width/##00
@@ -676,15 +676,15 @@
 compact-short percent scale/0.5
   es-MX
     0 %
-    46 k
+    46 k %
     -0.11 %
   zh-TW
     0%
-    4.6萬
+    4.6萬%
     -0.11%
   bn-BD
     ০%
-    ৪৬ হা
+    ৪৬ হা%
     -০.১১%
 
 compact-short currency/EUR scale/0.5
@@ -760,15 +760,15 @@
 compact-short percent group-on-aligned
   es-MX
     0 %
-    92 k
+    92 k %
     -0.22 %
   zh-TW
     0%
-    9.2萬
+    9.2萬%
     -0.22%
   bn-BD
     ০%
-    ৯২ হা
+    ৯২ হা%
     -০.২২%
 
 compact-short currency/EUR group-on-aligned
@@ -844,15 +844,15 @@
 compact-short percent latin
   es-MX
     0 %
-    92 k
+    92 k %
     -0.22 %
   zh-TW
     0%
-    9.2萬
+    9.2萬%
     -0.22%
   bn-BD
     0%
-    92 হা
+    92 হা%
     -0.22%
 
 compact-short currency/EUR latin
@@ -928,15 +928,15 @@
 compact-short percent sign-accounting-except-zero
   es-MX
     0 %
-    +92 k
+    +92 k %
     -0.22 %
   zh-TW
     0%
-    +9.2萬
+    +9.2萬%
     -0.22%
   bn-BD
     ০%
-    +৯২ হা
+    +৯২ হা%
     -০.২২%
 
 compact-short currency/EUR sign-accounting-except-zero
@@ -1012,15 +1012,15 @@
 compact-short percent decimal-always
   es-MX
     0. %
-    92. k
+    92. k %
     -0.22 %
   zh-TW
     0.%
-    9.2萬
+    9.2萬%
     -0.22%
   bn-BD
     ০.%
-    ৯২. হা
+    ৯২. হা%
     -০.২২%
 
 compact-short currency/EUR decimal-always
@@ -3139,59 +3139,59 @@
 
 percent unit-width-full-name precision-integer
   es-MX
-    0 %
-    91,827 %
-    -0 %
+    0 por ciento
+    91,827 por ciento
+    -0 por ciento
   zh-TW
     0%
     91,827%
     -0%
   bn-BD
-    ০%
-    ৯১,৮২৭%
-    -০%
+    ০শতাংশ
+    ৯১,৮২৭শতাংশ
+    -০শতাংশ
 
 percent unit-width-full-name .000
   es-MX
-    0.000 %
-    91,827.364 %
-    -0.222 %
+    0.000 por ciento
+    91,827.364 por ciento
+    -0.222 por ciento
   zh-TW
     0.000%
     91,827.364%
     -0.222%
   bn-BD
-    ০.০০০%
-    ৯১,৮২৭.৩৬৪%
-    -০.২২২%
+    ০.০০০শতাংশ
+    ৯১,৮২৭.৩৬৪শতাংশ
+    -০.২২২শতাংশ
 
 percent unit-width-full-name .##/@@@+
   es-MX
-    0 %
-    91,827.36 %
-    -0.222 %
+    0 por ciento
+    91,827.36 por ciento
+    -0.222 por ciento
   zh-TW
     0%
     91,827.36%
     -0.222%
   bn-BD
-    ০%
-    ৯১,৮২৭.৩৬%
-    -০.২২২%
+    ০শতাংশ
+    ৯১,৮২৭.৩৬শতাংশ
+    -০.২২২শতাংশ
 
 percent unit-width-full-name @@
   es-MX
-    0.0 %
-    92,000 %
-    -0.22 %
+    0.0 por ciento
+    92,000 por ciento
+    -0.22 por ciento
   zh-TW
     0.0%
     92,000%
     -0.22%
   bn-BD
-    ০.০%
-    ৯২,০০০%
-    -০.২২%
+    ০.০শতাংশ
+    ৯২,০০০শতাংশ
+    -০.২২শতাংশ
 
 currency/EUR unit-width-narrow precision-integer
   es-MX
@@ -3363,9 +3363,9 @@
 
 measure-unit/length-furlong unit-width-full-name precision-integer
   es-MX
-    0 fur
-    91,827 fur
-    -0 fur
+    0 furlongs
+    91,827 furlongs
+    -0 furlongs
   zh-TW
     0 化朗
     91,827 化朗
@@ -3377,9 +3377,9 @@
 
 measure-unit/length-furlong unit-width-full-name .000
   es-MX
-    0.000 fur
-    91,827.364 fur
-    -0.222 fur
+    0.000 furlongs
+    91,827.364 furlongs
+    -0.222 furlongs
   zh-TW
     0.000 化朗
     91,827.364 化朗
@@ -3391,9 +3391,9 @@
 
 measure-unit/length-furlong unit-width-full-name .##/@@@+
   es-MX
-    0 fur
-    91,827.36 fur
-    -0.222 fur
+    0 furlongs
+    91,827.36 furlongs
+    -0.222 furlongs
   zh-TW
     0 化朗
     91,827.36 化朗
@@ -3405,9 +3405,9 @@
 
 measure-unit/length-furlong unit-width-full-name @@
   es-MX
-    0.0 fur
-    92,000 fur
-    -0.22 fur
+    0.0 furlongs
+    92,000 furlongs
+    -0.22 furlongs
   zh-TW
     0.0 化朗
     92,000 化朗
@@ -3433,17 +3433,17 @@
 
 percent unit-width-full-name rounding-mode-floor
   es-MX
-    0 %
-    91,827.3645 %
-    -0.22222 %
+    0 por ciento
+    91,827.3645 por ciento
+    -0.22222 por ciento
   zh-TW
     0%
     91,827.3645%
     -0.22222%
   bn-BD
-    ০%
-    ৯১,৮২৭.৩৬৪৫%
-    -০.২২২২২%
+    ০শতাংশ
+    ৯১,৮২৭.৩৬৪৫শতাংশ
+    -০.২২২২২শতাংশ
 
 currency/EUR unit-width-narrow rounding-mode-floor
   es-MX
@@ -3489,9 +3489,9 @@
 
 measure-unit/length-furlong unit-width-full-name rounding-mode-floor
   es-MX
-    0 fur
-    91,827.3645 fur
-    -0.22222 fur
+    0 furlongs
+    91,827.3645 furlongs
+    -0.22222 furlongs
   zh-TW
     0 化朗
     91,827.3645 化朗
@@ -3517,17 +3517,17 @@
 
 percent unit-width-full-name integer-width/##00
   es-MX
-    00 %
-    1827.3645 %
-    -00.22222 %
+    00 por ciento
+    1827.3645 por ciento
+    -00.22222 por ciento
   zh-TW
     00%
     1,827.3645%
     -00.22222%
   bn-BD
-    ০০%
-    ১,৮২৭.৩৬৪৫%
-    -০০.২২২২২%
+    ০০শতাংশ
+    ১,৮২৭.৩৬৪৫শতাংশ
+    -০০.২২২২২শতাংশ
 
 currency/EUR unit-width-narrow integer-width/##00
   es-MX
@@ -3573,9 +3573,9 @@
 
 measure-unit/length-furlong unit-width-full-name integer-width/##00
   es-MX
-    00 fur
-    1827.3645 fur
-    -00.22222 fur
+    00 furlongs
+    1827.3645 furlongs
+    -00.22222 furlongs
   zh-TW
     00 化朗
     1,827.3645 化朗
@@ -3601,17 +3601,17 @@
 
 percent unit-width-full-name scale/0.5
   es-MX
-    0 %
-    45,913.68225 %
-    -0.11111 %
+    0 por ciento
+    45,913.68225 por ciento
+    -0.11111 por ciento
   zh-TW
     0%
     45,913.68225%
     -0.11111%
   bn-BD
-    ০%
-    ৪৫,৯১৩.৬৮২২৫%
-    -০.১১১১১%
+    ০শতাংশ
+    ৪৫,৯১৩.৬৮২২৫শতাংশ
+    -০.১১১১১শতাংশ
 
 currency/EUR unit-width-narrow scale/0.5
   es-MX
@@ -3657,9 +3657,9 @@
 
 measure-unit/length-furlong unit-width-full-name scale/0.5
   es-MX
-    0 fur
-    45,913.68225 fur
-    -0.11111 fur
+    0 furlongs
+    45,913.68225 furlongs
+    -0.11111 furlongs
   zh-TW
     0 化朗
     45,913.68225 化朗
@@ -3685,17 +3685,17 @@
 
 percent unit-width-full-name group-on-aligned
   es-MX
-    0 %
-    91,827.3645 %
-    -0.22222 %
+    0 por ciento
+    91,827.3645 por ciento
+    -0.22222 por ciento
   zh-TW
     0%
     91,827.3645%
     -0.22222%
   bn-BD
-    ০%
-    ৯১,৮২৭.৩৬৪৫%
-    -০.২২২২২%
+    ০শতাংশ
+    ৯১,৮২৭.৩৬৪৫শতাংশ
+    -০.২২২২২শতাংশ
 
 currency/EUR unit-width-narrow group-on-aligned
   es-MX
@@ -3741,9 +3741,9 @@
 
 measure-unit/length-furlong unit-width-full-name group-on-aligned
   es-MX
-    0 fur
-    91,827.3645 fur
-    -0.22222 fur
+    0 furlongs
+    91,827.3645 furlongs
+    -0.22222 furlongs
   zh-TW
     0 化朗
     91,827.3645 化朗
@@ -3769,17 +3769,17 @@
 
 percent unit-width-full-name latin
   es-MX
-    0 %
-    91,827.3645 %
-    -0.22222 %
+    0 por ciento
+    91,827.3645 por ciento
+    -0.22222 por ciento
   zh-TW
     0%
     91,827.3645%
     -0.22222%
   bn-BD
-    0%
-    91,827.3645%
-    -0.22222%
+    0শতাংশ
+    91,827.3645শতাংশ
+    -0.22222শতাংশ
 
 currency/EUR unit-width-narrow latin
   es-MX
@@ -3825,9 +3825,9 @@
 
 measure-unit/length-furlong unit-width-full-name latin
   es-MX
-    0 fur
-    91,827.3645 fur
-    -0.22222 fur
+    0 furlongs
+    91,827.3645 furlongs
+    -0.22222 furlongs
   zh-TW
     0 化朗
     91,827.3645 化朗
@@ -3853,17 +3853,17 @@
 
 percent unit-width-full-name sign-accounting-except-zero
   es-MX
-    0 %
-    +91,827.3645 %
-    -0.22222 %
+    0 por ciento
+    +91,827.3645 por ciento
+    -0.22222 por ciento
   zh-TW
     0%
     +91,827.3645%
     -0.22222%
   bn-BD
-    ০%
-    +৯১,৮২৭.৩৬৪৫%
-    -০.২২২২২%
+    ০শতাংশ
+    +৯১,৮২৭.৩৬৪৫শতাংশ
+    -০.২২২২২শতাংশ
 
 currency/EUR unit-width-narrow sign-accounting-except-zero
   es-MX
@@ -3909,9 +3909,9 @@
 
 measure-unit/length-furlong unit-width-full-name sign-accounting-except-zero
   es-MX
-    0 fur
-    +91,827.3645 fur
-    -0.22222 fur
+    0 furlongs
+    +91,827.3645 furlongs
+    -0.22222 furlongs
   zh-TW
     0 化朗
     +91,827.3645 化朗
@@ -3937,17 +3937,17 @@
 
 percent unit-width-full-name decimal-always
   es-MX
-    0. %
-    91,827.3645 %
-    -0.22222 %
+    0. por ciento
+    91,827.3645 por ciento
+    -0.22222 por ciento
   zh-TW
     0.%
     91,827.3645%
     -0.22222%
   bn-BD
-    ০.%
-    ৯১,৮২৭.৩৬৪৫%
-    -০.২২২২২%
+    ০.শতাংশ
+    ৯১,৮২৭.৩৬৪৫শতাংশ
+    -০.২২২২২শতাংশ
 
 currency/EUR unit-width-narrow decimal-always
   es-MX
@@ -3993,9 +3993,9 @@
 
 measure-unit/length-furlong unit-width-full-name decimal-always
   es-MX
-    0. fur
-    91,827.3645 fur
-    -0.22222 fur
+    0. furlongs
+    91,827.3645 furlongs
+    -0.22222 furlongs
   zh-TW
     0. 化朗
     91,827.3645 化朗
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements.java b/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements.java
index fcd6b9c..3d20393 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
  /*
   *******************************************************************************
   * Copyright (C) 2005-2008, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_en.properties b/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_en.properties
index d81f8fc..e6f015f 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_en.properties
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_en.properties
@@ -1,7 +1,7 @@
 # *
 # *******************************************************************************
 # * Copyright (C) 2016 and later: Unicode, Inc. and others.                     *
-# * License & terms of use: http://www.unicode.org/copyright.html#License       *
+# * License & terms of use: http://www.unicode.org/copyright.html       *
 # *******************************************************************************
 # *******************************************************************************
 # * Copyright (C) 2005-2006, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_en_Latn.properties b/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_en_Latn.properties
index 10fb156..1bc964b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_en_Latn.properties
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_en_Latn.properties
@@ -1,7 +1,7 @@
 # *
 # *******************************************************************************
 # * Copyright (C) 2016 and later: Unicode, Inc. and others.                     *
-# * License & terms of use: http://www.unicode.org/copyright.html#License       *
+# * License & terms of use: http://www.unicode.org/copyright.html       *
 # *******************************************************************************
 # *******************************************************************************
 # * Copyright (C) 2005-2006, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_en_Latn_US.java b/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_en_Latn_US.java
index 593f2c6..13537fd 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_en_Latn_US.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_en_Latn_US.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
  /*
   *******************************************************************************
   * Copyright (C) 2005-2008, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_en_US.java b/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_en_US.java
index c66c16a..314746b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_en_US.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_en_US.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
  /*
   *******************************************************************************
   * Copyright (C) 2005, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_fr_Latn_FR.java b/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_fr_Latn_FR.java
index 1d0867a..87c4814 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_fr_Latn_FR.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_fr_Latn_FR.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
  /*
   *******************************************************************************
   * Copyright (C) 2005-2009, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_te.java b/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_te.java
index 2e3d15e..878a53b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_te.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestDataElements_te.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
  /*
   *******************************************************************************
   * Copyright (C) 2006-2008, International Business Machines Corporation and    *
@@ -23,4 +23,4 @@
     protected Object[][] getContents() {
         return data;
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestMessages.java b/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestMessages.java
index d44ed6b..8a71755 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestMessages.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/resources/TestMessages.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2010, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/resources/testmessages.properties b/android_icu4j/src/main/tests/android/icu/dev/data/resources/testmessages.properties
index 1b271a2..6e0bff0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/resources/testmessages.properties
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/resources/testmessages.properties
@@ -1,6 +1,6 @@
 # *******************************************************************************
 # * Copyright (C) 2016 and later: Unicode, Inc. and others.                     *
-# * License & terms of use: http://www.unicode.org/copyright.html#License       *
+# * License & terms of use: http://www.unicode.org/copyright.html       *
 # *******************************************************************************
 # *******************************************************************************
 # * Copyright (C) 2010, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/riwords.txt b/android_icu4j/src/main/tests/android/icu/dev/data/riwords.txt
index 446a1df..2bb6ecd 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/riwords.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/riwords.txt
@@ -1,6 +1,6 @@
 #*******************************************************************************
 # © 2016 and later: Unicode, Inc. and others.                                  *
-# License & terms of use: http://www.unicode.org/copyright.html#License        *
+# License & terms of use: http://www.unicode.org/copyright.html        *
 #*******************************************************************************
 #* Copyright (C) 2003-2012, International Business Machines Corporation and    *
 #* others. All Rights Reserved.                                                *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/calendar.res b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/calendar.res
index b6a4e74..dc009ae 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/calendar.res
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/calendar.res
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/ibm9027.cnv b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/ibm9027.cnv
index 8a53bfe..681cbe1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/ibm9027.cnv
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/ibm9027.cnv
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/root.res b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/root.res
index 3d30e16..a1d8cbb 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/root.res
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/root.res
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/structLocale.res b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/structLocale.res
index 086ded7..59f3f39 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/structLocale.res
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/structLocale.res
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test1.cnv b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test1.cnv
index 499ee2e..1e9a4db 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test1.cnv
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test1.cnv
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test1bmp.cnv b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test1bmp.cnv
index b81ee10..71c77c0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test1bmp.cnv
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test1bmp.cnv
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test2.cnv b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test2.cnv
index f853304..cb41283 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test2.cnv
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test2.cnv
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test3.cnv b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test3.cnv
index 327529a..6999660 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test3.cnv
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test3.cnv
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test4.cnv b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test4.cnv
index 557221c..d24fe1c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test4.cnv
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test4.cnv
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test4x.cnv b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test4x.cnv
index cab1387..8f9db63 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test4x.cnv
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test4x.cnv
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test5.cnv b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test5.cnv
index 758e3bd..b32c3fa 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test5.cnv
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/testdata/test5.cnv
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/unicode/NormalizationTest-3.2.0.txt b/android_icu4j/src/main/tests/android/icu/dev/data/unicode/NormalizationTest-3.2.0.txt
index c269dcb..73f4e3c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/data/unicode/NormalizationTest-3.2.0.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/unicode/NormalizationTest-3.2.0.txt
@@ -1,5 +1,5 @@
 # © 2002 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # NormalizationTest-3.2.0.txt
 # Date: 2002-03-19,23:31:18 GMT [MD]
diff --git a/android_icu4j/src/main/tests/android/icu/dev/data/unicode/localeCanonicalization.txt b/android_icu4j/src/main/tests/android/icu/dev/data/unicode/localeCanonicalization.txt
new file mode 100644
index 0000000..ce0e191
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/data/unicode/localeCanonicalization.txt
@@ -0,0 +1,1647 @@
+# Test data for locale identifier canonicalization
+#  Copyright © 1991-2020 Unicode, Inc.
+#  For terms of use, see http://www.unicode.org/copyright.html
+#  Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+#  CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# Format:
+# <source locale identifier>	;	<expected canonicalized locale identifier>
+#
+# The data lines are divided into 4 sets:
+#   explicit:    a short list of explicit test cases.
+#   fromAliases: test cases generated from the alias data.
+#   decanonicalized: test cases generated by reversing the normalization process.
+#   withIrrelevants: test cases generated from the others by adding irrelevant fields where possible,
+#                           to ensure that the canonicalization implementation is not sensitive to irrelevant fields. These include:
+#     Language: aaa
+#     Script:   Adlm
+#     Region:   AC
+#     Variant:  fonipa
+######
+
+
+
+# explicit
+
+art_lojban	;	jbo
+en_US_aaland	;	en_US
+en_US_heploc	;	en_US_alalc97
+en_US_polytoni	;	en_US_polyton
+en_aaland	;	en_AX
+en_arevela	;	en
+en_arevmda_arevela	;	en
+en_lojban	;	en
+hy_arevela	;	hy
+hy_arevmda	;	hyw
+hy_arevmda_arevela	;	hyw
+hye_arevmda	;	hyw
+no_bokmal_nynorsk	;	nb
+no_nynorsk_bokmal	;	nb
+zh_guoyu_hakka_xiang	;	hak
+zh_hakka_xiang	;	hak
+
+# fromAliases
+
+aa_saaho	;	ssy
+aam	;	aas
+aar	;	aa
+abk	;	ab
+adp	;	dz
+afr	;	af
+aju	;	jrb
+aka	;	ak
+alb	;	sq
+als	;	sq
+amh	;	am
+ara	;	ar
+arb	;	ar
+arg	;	an
+arm	;	hy
+asd	;	snz
+asm	;	as
+aue	;	ktz
+ava	;	av
+ave	;	ae
+aym	;	ay
+ayr	;	ay
+ayx	;	nun
+aze	;	az
+azj	;	az
+bak	;	ba
+bam	;	bm
+baq	;	eu
+bcc	;	bal
+bcl	;	bik
+bel	;	be
+ben	;	bn
+bgm	;	bcg
+bh	;	bho
+bih	;	bho
+bis	;	bi
+bjd	;	drl
+bod	;	bo
+bos	;	bs
+bre	;	br
+bul	;	bg
+bur	;	my
+bxk	;	luy
+bxr	;	bua
+cat	;	ca
+ccq	;	rki
+cel_gaulish	;	xtg
+ces	;	cs
+cha	;	ch
+che	;	ce
+chi	;	zh
+chu	;	cu
+chv	;	cv
+cjr	;	mom
+cka	;	cmr
+cld	;	syr
+cmk	;	xch
+cmn	;	zh
+cnr	;	sr_ME
+cor	;	kw
+cos	;	co
+coy	;	pij
+cqu	;	quh
+cre	;	cr
+cwd	;	cr
+cym	;	cy
+cze	;	cs
+dan	;	da
+deu	;	de
+dgo	;	doi
+dhd	;	mwr
+dik	;	din
+diq	;	zza
+dit	;	dif
+div	;	dv
+drh	;	mn
+drw	;	fa_AF
+dut	;	nl
+dzo	;	dz
+ekk	;	et
+ell	;	el
+emk	;	man
+eng	;	en
+epo	;	eo
+esk	;	ik
+est	;	et
+eus	;	eu
+ewe	;	ee
+fao	;	fo
+fas	;	fa
+fat	;	ak
+fij	;	fj
+fin	;	fi
+fra	;	fr
+fre	;	fr
+fry	;	fy
+fuc	;	ff
+ful	;	ff
+gav	;	dev
+gaz	;	om
+gbo	;	grb
+geo	;	ka
+ger	;	de
+gfx	;	vaj
+ggn	;	gvr
+gla	;	gd
+gle	;	ga
+glg	;	gl
+glv	;	gv
+gno	;	gon
+gre	;	el
+grn	;	gn
+gti	;	nyc
+gug	;	gn
+guj	;	gu
+guv	;	duz
+gya	;	gba
+hat	;	ht
+hau	;	ha
+hbs	;	sr_Latn
+hdn	;	hai
+hea	;	hmn
+heb	;	he
+her	;	hz
+him	;	srx
+hin	;	hi
+hmo	;	ho
+hrr	;	jal
+hrv	;	hr
+hun	;	hu
+hye	;	hy
+ibi	;	opa
+ibo	;	ig
+ice	;	is
+ido	;	io
+iii	;	ii
+ike	;	iu
+iku	;	iu
+ile	;	ie
+ilw	;	gal
+in	;	id
+ina	;	ia
+ind	;	id
+ipk	;	ik
+isl	;	is
+ita	;	it
+iw	;	he
+jav	;	jv
+jeg	;	oyb
+ji	;	yi
+jpn	;	ja
+jw	;	jv
+kal	;	kl
+kan	;	kn
+kas	;	ks
+kat	;	ka
+kau	;	kr
+kaz	;	kk
+kgc	;	tdf
+kgh	;	kml
+khk	;	mn
+khm	;	km
+kik	;	ki
+kin	;	rw
+kir	;	ky
+kmr	;	ku
+knc	;	kr
+kng	;	kg
+knn	;	kok
+koj	;	kwv
+kom	;	kv
+kon	;	kg
+kor	;	ko
+kpv	;	kv
+krm	;	bmf
+ktr	;	dtp
+kua	;	kj
+kur	;	ku
+kvs	;	gdj
+kwq	;	yam
+kxe	;	tvd
+kzj	;	dtp
+kzt	;	dtp
+lao	;	lo
+lat	;	la
+lav	;	lv
+lbk	;	bnc
+lii	;	raq
+lim	;	li
+lin	;	ln
+lit	;	lt
+llo	;	ngt
+lmm	;	rmx
+ltz	;	lb
+lub	;	lu
+lug	;	lg
+lvs	;	lv
+mac	;	mk
+mah	;	mh
+mal	;	ml
+mao	;	mi
+mar	;	mr
+may	;	ms
+meg	;	cir
+mhr	;	chm
+mkd	;	mk
+mlg	;	mg
+mlt	;	mt
+mnk	;	man
+mo	;	ro
+mol	;	ro
+mon	;	mn
+mri	;	mi
+msa	;	ms
+mst	;	mry
+mup	;	raj
+mwj	;	vaj
+mya	;	my
+myd	;	aog
+myt	;	mry
+nad	;	xny
+nau	;	na
+nav	;	nv
+nbl	;	nr
+ncp	;	kdz
+nde	;	nd
+ndo	;	ng
+nep	;	ne
+nld	;	nl
+nno	;	nn
+nns	;	nbr
+nnx	;	ngv
+no	;	nb
+no_bokmal	;	nb
+no_nynorsk	;	nn
+nob	;	nb
+nor	;	nb
+npi	;	ne
+nts	;	pij
+nya	;	ny
+oci	;	oc
+ojg	;	oj
+oji	;	oj
+ori	;	or
+orm	;	om
+ory	;	or
+oss	;	os
+oun	;	vaj
+pan	;	pa
+pbu	;	ps
+pcr	;	adx
+per	;	fa
+pes	;	fa
+pli	;	pi
+plt	;	mg
+pmc	;	huw
+pmu	;	phr
+pnb	;	lah
+pol	;	pl
+por	;	pt
+ppa	;	bfy
+ppr	;	lcq
+prs	;	fa_AF
+pry	;	prt
+pus	;	ps
+puz	;	pub
+que	;	qu
+quz	;	qu
+rmy	;	rom
+roh	;	rm
+ron	;	ro
+rum	;	ro
+run	;	rn
+rus	;	ru
+sag	;	sg
+san	;	sa
+sca	;	hle
+scc	;	sr
+scr	;	hr
+sgn_BR	;	bzs
+sgn_CO	;	csn
+sgn_DE	;	gsg
+sgn_DK	;	dsl
+sgn_FR	;	fsl
+sgn_GB	;	bfi
+sgn_GR	;	gss
+sgn_IE	;	isg
+sgn_IT	;	ise
+sgn_JP	;	jsl
+sgn_MX	;	mfs
+sgn_NI	;	ncs
+sgn_NL	;	dse
+sgn_NO	;	nsi
+sgn_PT	;	psr
+sgn_SE	;	swl
+sgn_US	;	ase
+sgn_ZA	;	sfs
+sh	;	sr_Latn
+sin	;	si
+skk	;	oyb
+slk	;	sk
+slo	;	sk
+slv	;	sl
+sme	;	se
+smo	;	sm
+sna	;	sn
+snd	;	sd
+som	;	so
+sot	;	st
+spa	;	es
+spy	;	kln
+sqi	;	sq
+src	;	sc
+srd	;	sc
+srp	;	sr
+ssw	;	ss
+sun	;	su
+swa	;	sw
+swc	;	sw_CD
+swe	;	sv
+swh	;	sw
+tah	;	ty
+tam	;	ta
+tat	;	tt
+tdu	;	dtp
+tel	;	te
+tgk	;	tg
+tgl	;	fil
+tha	;	th
+thc	;	tpo
+thx	;	oyb
+tib	;	bo
+tie	;	ras
+tir	;	ti
+tkk	;	twm
+tl	;	fil
+tlw	;	weo
+tmp	;	tyj
+tne	;	kak
+tnf	;	fa_AF
+ton	;	to
+tsf	;	taj
+tsn	;	tn
+tso	;	ts
+ttq	;	tmh
+tuk	;	tk
+tur	;	tr
+tw	;	ak
+twi	;	ak
+uig	;	ug
+ukr	;	uk
+umu	;	del
+und_004	;	und_AF
+und_008	;	und_AL
+und_010	;	und_AQ
+und_012	;	und_DZ
+und_016	;	und_AS
+und_020	;	und_AD
+und_024	;	und_AO
+und_028	;	und_AG
+und_031	;	und_AZ
+und_032	;	und_AR
+und_036	;	und_AU
+und_040	;	und_AT
+und_044	;	und_BS
+und_048	;	und_BH
+und_050	;	und_BD
+und_051	;	und_AM
+und_052	;	und_BB
+und_056	;	und_BE
+und_060	;	und_BM
+und_062	;	und_034
+und_064	;	und_BT
+und_068	;	und_BO
+und_070	;	und_BA
+und_072	;	und_BW
+und_074	;	und_BV
+und_076	;	und_BR
+und_084	;	und_BZ
+und_086	;	und_IO
+und_090	;	und_SB
+und_092	;	und_VG
+und_096	;	und_BN
+und_100	;	und_BG
+und_104	;	und_MM
+und_108	;	und_BI
+und_112	;	und_BY
+und_116	;	und_KH
+und_120	;	und_CM
+und_124	;	und_CA
+und_132	;	und_CV
+und_136	;	und_KY
+und_140	;	und_CF
+und_144	;	und_LK
+und_148	;	und_TD
+und_152	;	und_CL
+und_156	;	und_CN
+und_158	;	und_TW
+und_162	;	und_CX
+und_166	;	und_CC
+und_170	;	und_CO
+und_172	;	und_RU
+und_174	;	und_KM
+und_175	;	und_YT
+und_178	;	und_CG
+und_180	;	und_CD
+und_184	;	und_CK
+und_188	;	und_CR
+und_191	;	und_HR
+und_192	;	und_CU
+und_196	;	und_CY
+und_200	;	und_CZ
+und_203	;	und_CZ
+und_204	;	und_BJ
+und_208	;	und_DK
+und_212	;	und_DM
+und_214	;	und_DO
+und_218	;	und_EC
+und_222	;	und_SV
+und_226	;	und_GQ
+und_230	;	und_ET
+und_231	;	und_ET
+und_232	;	und_ER
+und_233	;	und_EE
+und_234	;	und_FO
+und_238	;	und_FK
+und_239	;	und_GS
+und_242	;	und_FJ
+und_246	;	und_FI
+und_248	;	und_AX
+und_249	;	und_FR
+und_250	;	und_FR
+und_254	;	und_GF
+und_258	;	und_PF
+und_260	;	und_TF
+und_262	;	und_DJ
+und_266	;	und_GA
+und_268	;	und_GE
+und_270	;	und_GM
+und_275	;	und_PS
+und_276	;	und_DE
+und_278	;	und_DE
+und_280	;	und_DE
+und_288	;	und_GH
+und_292	;	und_GI
+und_296	;	und_KI
+und_300	;	und_GR
+und_304	;	und_GL
+und_308	;	und_GD
+und_312	;	und_GP
+und_316	;	und_GU
+und_320	;	und_GT
+und_324	;	und_GN
+und_328	;	und_GY
+und_332	;	und_HT
+und_334	;	und_HM
+und_336	;	und_VA
+und_340	;	und_HN
+und_344	;	und_HK
+und_348	;	und_HU
+und_352	;	und_IS
+und_356	;	und_IN
+und_360	;	und_ID
+und_364	;	und_IR
+und_368	;	und_IQ
+und_372	;	und_IE
+und_376	;	und_IL
+und_380	;	und_IT
+und_384	;	und_CI
+und_388	;	und_JM
+und_392	;	und_JP
+und_398	;	und_KZ
+und_400	;	und_JO
+und_404	;	und_KE
+und_408	;	und_KP
+und_410	;	und_KR
+und_414	;	und_KW
+und_417	;	und_KG
+und_418	;	und_LA
+und_422	;	und_LB
+und_426	;	und_LS
+und_428	;	und_LV
+und_430	;	und_LR
+und_434	;	und_LY
+und_438	;	und_LI
+und_440	;	und_LT
+und_442	;	und_LU
+und_446	;	und_MO
+und_450	;	und_MG
+und_454	;	und_MW
+und_458	;	und_MY
+und_462	;	und_MV
+und_466	;	und_ML
+und_470	;	und_MT
+und_474	;	und_MQ
+und_478	;	und_MR
+und_480	;	und_MU
+und_484	;	und_MX
+und_492	;	und_MC
+und_496	;	und_MN
+und_498	;	und_MD
+und_499	;	und_ME
+und_500	;	und_MS
+und_504	;	und_MA
+und_508	;	und_MZ
+und_512	;	und_OM
+und_516	;	und_NA
+und_520	;	und_NR
+und_524	;	und_NP
+und_528	;	und_NL
+und_530	;	und_CW
+und_531	;	und_CW
+und_532	;	und_CW
+und_533	;	und_AW
+und_534	;	und_SX
+und_535	;	und_BQ
+und_536	;	und_SA
+und_540	;	und_NC
+und_548	;	und_VU
+und_554	;	und_NZ
+und_558	;	und_NI
+und_562	;	und_NE
+und_566	;	und_NG
+und_570	;	und_NU
+und_574	;	und_NF
+und_578	;	und_NO
+und_580	;	und_MP
+und_581	;	und_UM
+und_582	;	und_FM
+und_583	;	und_FM
+und_584	;	und_MH
+und_585	;	und_PW
+und_586	;	und_PK
+und_591	;	und_PA
+und_598	;	und_PG
+und_600	;	und_PY
+und_604	;	und_PE
+und_608	;	und_PH
+und_612	;	und_PN
+und_616	;	und_PL
+und_620	;	und_PT
+und_624	;	und_GW
+und_626	;	und_TL
+und_630	;	und_PR
+und_634	;	und_QA
+und_638	;	und_RE
+und_642	;	und_RO
+und_643	;	und_RU
+und_646	;	und_RW
+und_652	;	und_BL
+und_654	;	und_SH
+und_659	;	und_KN
+und_660	;	und_AI
+und_662	;	und_LC
+und_663	;	und_MF
+und_666	;	und_PM
+und_670	;	und_VC
+und_674	;	und_SM
+und_678	;	und_ST
+und_682	;	und_SA
+und_686	;	und_SN
+und_688	;	und_RS
+und_690	;	und_SC
+und_694	;	und_SL
+und_702	;	und_SG
+und_703	;	und_SK
+und_704	;	und_VN
+und_705	;	und_SI
+und_706	;	und_SO
+und_710	;	und_ZA
+und_716	;	und_ZW
+und_720	;	und_YE
+und_724	;	und_ES
+und_728	;	und_SS
+und_729	;	und_SD
+und_732	;	und_EH
+und_736	;	und_SD
+und_740	;	und_SR
+und_744	;	und_SJ
+und_748	;	und_SZ
+und_752	;	und_SE
+und_756	;	und_CH
+und_760	;	und_SY
+und_762	;	und_TJ
+und_764	;	und_TH
+und_768	;	und_TG
+und_772	;	und_TK
+und_776	;	und_TO
+und_780	;	und_TT
+und_784	;	und_AE
+und_788	;	und_TN
+und_792	;	und_TR
+und_795	;	und_TM
+und_796	;	und_TC
+und_798	;	und_TV
+und_800	;	und_UG
+und_804	;	und_UA
+und_807	;	und_MK
+und_810	;	und_RU
+und_818	;	und_EG
+und_826	;	und_GB
+und_830	;	und_JE
+und_831	;	und_GG
+und_832	;	und_JE
+und_833	;	und_IM
+und_834	;	und_TZ
+und_840	;	und_US
+und_850	;	und_VI
+und_854	;	und_BF
+und_858	;	und_UY
+und_860	;	und_UZ
+und_862	;	und_VE
+und_876	;	und_WF
+und_882	;	und_WS
+und_886	;	und_YE
+und_887	;	und_YE
+und_890	;	und_RS
+und_891	;	und_RS
+und_894	;	und_ZM
+und_958	;	und_AA
+und_959	;	und_QM
+und_960	;	und_QN
+und_962	;	und_QP
+und_963	;	und_QQ
+und_964	;	und_QR
+und_965	;	und_QS
+und_966	;	und_QT
+und_967	;	und_EU
+und_968	;	und_QV
+und_969	;	und_QW
+und_970	;	und_QX
+und_971	;	und_QY
+und_972	;	und_QZ
+und_973	;	und_XA
+und_974	;	und_XB
+und_975	;	und_XC
+und_976	;	und_XD
+und_977	;	und_XE
+und_978	;	und_XF
+und_979	;	und_XG
+und_980	;	und_XH
+und_981	;	und_XI
+und_982	;	und_XJ
+und_983	;	und_XK
+und_984	;	und_XL
+und_985	;	und_XM
+und_986	;	und_XN
+und_987	;	und_XO
+und_988	;	und_XP
+und_989	;	und_XQ
+und_990	;	und_XR
+und_991	;	und_XS
+und_992	;	und_XT
+und_993	;	und_XU
+und_994	;	und_XV
+und_995	;	und_XW
+und_996	;	und_XX
+und_997	;	und_XY
+und_998	;	und_XZ
+und_999	;	und_ZZ
+und_AN	;	und_CW
+und_BU	;	und_MM
+und_CS	;	und_RS
+und_CT	;	und_KI
+und_DD	;	und_DE
+und_DY	;	und_BJ
+und_FQ	;	und_AQ
+und_FX	;	und_FR
+und_HV	;	und_BF
+und_JT	;	und_UM
+und_MI	;	und_UM
+und_NH	;	und_VU
+und_NQ	;	und_AQ
+und_NT	;	und_SA
+und_PC	;	und_FM
+und_PU	;	und_UM
+und_PZ	;	und_PA
+und_QU	;	und_EU
+und_Qaai	;	und_Zinh
+und_RH	;	und_ZW
+und_SU	;	und_RU
+und_TP	;	und_TL
+und_UK	;	und_GB
+und_VD	;	und_VN
+und_WK	;	und_UM
+und_YD	;	und_YE
+und_YU	;	und_RS
+und_ZR	;	und_CD
+und_aaland	;	und_AX
+und_arevela	;	und
+und_arevmda	;	und
+und_bokmal	;	und
+und_hakka	;	und
+und_heploc	;	und_alalc97
+und_lojban	;	und
+und_nynorsk	;	und
+und_polytoni	;	und_polyton
+und_saaho	;	und
+und_xiang	;	und
+uok	;	ema
+urd	;	ur
+uzb	;	uz
+uzn	;	uz
+ven	;	ve
+vie	;	vi
+vol	;	vo
+wel	;	cy
+wln	;	wa
+wol	;	wo
+xba	;	cax
+xho	;	xh
+xia	;	acn
+xkh	;	waw
+xpe	;	kpe
+xsj	;	suj
+xsl	;	den
+ybd	;	rki
+ydd	;	yi
+yid	;	yi
+yma	;	lrr
+ymt	;	mtm
+yor	;	yo
+yos	;	zom
+yuu	;	yug
+zai	;	zap
+zh_guoyu	;	zh
+zh_hakka	;	hak
+zh_xiang	;	hsn
+zha	;	za
+zho	;	zh
+zsm	;	ms
+zul	;	zu
+zyb	;	za
+
+# decanonicalized
+
+aar_saaho	;	ssy
+arm_arevela	;	hy
+arm_arevela_arevmda	;	hyw
+arm_arevmda	;	hyw
+chi_guoyu	;	zh
+chi_guoyu_hakka_xiang	;	hak
+chi_hakka	;	hak
+chi_hakka_xiang	;	hak
+chi_xiang	;	hsn
+cmn_guoyu	;	zh
+cmn_guoyu_hakka_xiang	;	hak
+cmn_hakka	;	hak
+cmn_hakka_xiang	;	hak
+cmn_xiang	;	hsn
+en_840_aaland	;	en_US
+en_840_heploc	;	en_US_alalc97
+en_840_polytoni	;	en_US_polyton
+eng_840_aaland	;	en_US
+eng_840_heploc	;	en_US_alalc97
+eng_840_polytoni	;	en_US_polyton
+eng_US_aaland	;	en_US
+eng_US_heploc	;	en_US_alalc97
+eng_US_polytoni	;	en_US_polyton
+eng_aaland	;	en_AX
+eng_arevela	;	en
+eng_arevela_arevmda	;	en
+eng_lojban	;	en
+hye_arevela	;	hy
+hye_arevela_arevmda	;	hyw
+sgn_076	;	bzs
+sgn_170	;	csn
+sgn_208	;	dsl
+sgn_249	;	fsl
+sgn_250	;	fsl
+sgn_276	;	gsg
+sgn_278	;	gsg
+sgn_280	;	gsg
+sgn_300	;	gss
+sgn_372	;	isg
+sgn_380	;	ise
+sgn_392	;	jsl
+sgn_484	;	mfs
+sgn_528	;	dse
+sgn_558	;	ncs
+sgn_578	;	nsi
+sgn_620	;	psr
+sgn_710	;	sfs
+sgn_752	;	swl
+sgn_826	;	bfi
+sgn_840	;	ase
+sgn_DD	;	gsg
+sgn_FX	;	fsl
+sgn_UK	;	bfi
+zho_guoyu	;	zh
+zho_guoyu_hakka_xiang	;	hak
+zho_hakka	;	hak
+zho_hakka_xiang	;	hak
+zho_xiang	;	hsn
+
+# withIrrelevants
+
+aa_Adlm_AC_fonipa_saaho	;	ssy_Adlm_AC_fonipa
+aaa_Adlm_004_fonipa	;	aaa_Adlm_AF_fonipa
+aaa_Adlm_008_fonipa	;	aaa_Adlm_AL_fonipa
+aaa_Adlm_010_fonipa	;	aaa_Adlm_AQ_fonipa
+aaa_Adlm_012_fonipa	;	aaa_Adlm_DZ_fonipa
+aaa_Adlm_016_fonipa	;	aaa_Adlm_AS_fonipa
+aaa_Adlm_020_fonipa	;	aaa_Adlm_AD_fonipa
+aaa_Adlm_024_fonipa	;	aaa_Adlm_AO_fonipa
+aaa_Adlm_028_fonipa	;	aaa_Adlm_AG_fonipa
+aaa_Adlm_031_fonipa	;	aaa_Adlm_AZ_fonipa
+aaa_Adlm_032_fonipa	;	aaa_Adlm_AR_fonipa
+aaa_Adlm_036_fonipa	;	aaa_Adlm_AU_fonipa
+aaa_Adlm_040_fonipa	;	aaa_Adlm_AT_fonipa
+aaa_Adlm_044_fonipa	;	aaa_Adlm_BS_fonipa
+aaa_Adlm_048_fonipa	;	aaa_Adlm_BH_fonipa
+aaa_Adlm_050_fonipa	;	aaa_Adlm_BD_fonipa
+aaa_Adlm_051_fonipa	;	aaa_Adlm_AM_fonipa
+aaa_Adlm_052_fonipa	;	aaa_Adlm_BB_fonipa
+aaa_Adlm_056_fonipa	;	aaa_Adlm_BE_fonipa
+aaa_Adlm_060_fonipa	;	aaa_Adlm_BM_fonipa
+aaa_Adlm_062_fonipa	;	aaa_Adlm_034_fonipa
+aaa_Adlm_064_fonipa	;	aaa_Adlm_BT_fonipa
+aaa_Adlm_068_fonipa	;	aaa_Adlm_BO_fonipa
+aaa_Adlm_070_fonipa	;	aaa_Adlm_BA_fonipa
+aaa_Adlm_072_fonipa	;	aaa_Adlm_BW_fonipa
+aaa_Adlm_074_fonipa	;	aaa_Adlm_BV_fonipa
+aaa_Adlm_076_fonipa	;	aaa_Adlm_BR_fonipa
+aaa_Adlm_084_fonipa	;	aaa_Adlm_BZ_fonipa
+aaa_Adlm_086_fonipa	;	aaa_Adlm_IO_fonipa
+aaa_Adlm_090_fonipa	;	aaa_Adlm_SB_fonipa
+aaa_Adlm_092_fonipa	;	aaa_Adlm_VG_fonipa
+aaa_Adlm_096_fonipa	;	aaa_Adlm_BN_fonipa
+aaa_Adlm_100_fonipa	;	aaa_Adlm_BG_fonipa
+aaa_Adlm_104_fonipa	;	aaa_Adlm_MM_fonipa
+aaa_Adlm_108_fonipa	;	aaa_Adlm_BI_fonipa
+aaa_Adlm_112_fonipa	;	aaa_Adlm_BY_fonipa
+aaa_Adlm_116_fonipa	;	aaa_Adlm_KH_fonipa
+aaa_Adlm_120_fonipa	;	aaa_Adlm_CM_fonipa
+aaa_Adlm_124_fonipa	;	aaa_Adlm_CA_fonipa
+aaa_Adlm_132_fonipa	;	aaa_Adlm_CV_fonipa
+aaa_Adlm_136_fonipa	;	aaa_Adlm_KY_fonipa
+aaa_Adlm_140_fonipa	;	aaa_Adlm_CF_fonipa
+aaa_Adlm_144_fonipa	;	aaa_Adlm_LK_fonipa
+aaa_Adlm_148_fonipa	;	aaa_Adlm_TD_fonipa
+aaa_Adlm_152_fonipa	;	aaa_Adlm_CL_fonipa
+aaa_Adlm_156_fonipa	;	aaa_Adlm_CN_fonipa
+aaa_Adlm_158_fonipa	;	aaa_Adlm_TW_fonipa
+aaa_Adlm_162_fonipa	;	aaa_Adlm_CX_fonipa
+aaa_Adlm_166_fonipa	;	aaa_Adlm_CC_fonipa
+aaa_Adlm_170_fonipa	;	aaa_Adlm_CO_fonipa
+aaa_Adlm_172_fonipa	;	aaa_Adlm_RU_fonipa
+aaa_Adlm_174_fonipa	;	aaa_Adlm_KM_fonipa
+aaa_Adlm_175_fonipa	;	aaa_Adlm_YT_fonipa
+aaa_Adlm_178_fonipa	;	aaa_Adlm_CG_fonipa
+aaa_Adlm_180_fonipa	;	aaa_Adlm_CD_fonipa
+aaa_Adlm_184_fonipa	;	aaa_Adlm_CK_fonipa
+aaa_Adlm_188_fonipa	;	aaa_Adlm_CR_fonipa
+aaa_Adlm_191_fonipa	;	aaa_Adlm_HR_fonipa
+aaa_Adlm_192_fonipa	;	aaa_Adlm_CU_fonipa
+aaa_Adlm_196_fonipa	;	aaa_Adlm_CY_fonipa
+aaa_Adlm_200_fonipa	;	aaa_Adlm_CZ_fonipa
+aaa_Adlm_203_fonipa	;	aaa_Adlm_CZ_fonipa
+aaa_Adlm_204_fonipa	;	aaa_Adlm_BJ_fonipa
+aaa_Adlm_208_fonipa	;	aaa_Adlm_DK_fonipa
+aaa_Adlm_212_fonipa	;	aaa_Adlm_DM_fonipa
+aaa_Adlm_214_fonipa	;	aaa_Adlm_DO_fonipa
+aaa_Adlm_218_fonipa	;	aaa_Adlm_EC_fonipa
+aaa_Adlm_222_fonipa	;	aaa_Adlm_SV_fonipa
+aaa_Adlm_226_fonipa	;	aaa_Adlm_GQ_fonipa
+aaa_Adlm_230_fonipa	;	aaa_Adlm_ET_fonipa
+aaa_Adlm_231_fonipa	;	aaa_Adlm_ET_fonipa
+aaa_Adlm_232_fonipa	;	aaa_Adlm_ER_fonipa
+aaa_Adlm_233_fonipa	;	aaa_Adlm_EE_fonipa
+aaa_Adlm_234_fonipa	;	aaa_Adlm_FO_fonipa
+aaa_Adlm_238_fonipa	;	aaa_Adlm_FK_fonipa
+aaa_Adlm_239_fonipa	;	aaa_Adlm_GS_fonipa
+aaa_Adlm_242_fonipa	;	aaa_Adlm_FJ_fonipa
+aaa_Adlm_246_fonipa	;	aaa_Adlm_FI_fonipa
+aaa_Adlm_248_fonipa	;	aaa_Adlm_AX_fonipa
+aaa_Adlm_249_fonipa	;	aaa_Adlm_FR_fonipa
+aaa_Adlm_250_fonipa	;	aaa_Adlm_FR_fonipa
+aaa_Adlm_254_fonipa	;	aaa_Adlm_GF_fonipa
+aaa_Adlm_258_fonipa	;	aaa_Adlm_PF_fonipa
+aaa_Adlm_260_fonipa	;	aaa_Adlm_TF_fonipa
+aaa_Adlm_262_fonipa	;	aaa_Adlm_DJ_fonipa
+aaa_Adlm_266_fonipa	;	aaa_Adlm_GA_fonipa
+aaa_Adlm_268_fonipa	;	aaa_Adlm_GE_fonipa
+aaa_Adlm_270_fonipa	;	aaa_Adlm_GM_fonipa
+aaa_Adlm_275_fonipa	;	aaa_Adlm_PS_fonipa
+aaa_Adlm_276_fonipa	;	aaa_Adlm_DE_fonipa
+aaa_Adlm_278_fonipa	;	aaa_Adlm_DE_fonipa
+aaa_Adlm_280_fonipa	;	aaa_Adlm_DE_fonipa
+aaa_Adlm_288_fonipa	;	aaa_Adlm_GH_fonipa
+aaa_Adlm_292_fonipa	;	aaa_Adlm_GI_fonipa
+aaa_Adlm_296_fonipa	;	aaa_Adlm_KI_fonipa
+aaa_Adlm_300_fonipa	;	aaa_Adlm_GR_fonipa
+aaa_Adlm_304_fonipa	;	aaa_Adlm_GL_fonipa
+aaa_Adlm_308_fonipa	;	aaa_Adlm_GD_fonipa
+aaa_Adlm_312_fonipa	;	aaa_Adlm_GP_fonipa
+aaa_Adlm_316_fonipa	;	aaa_Adlm_GU_fonipa
+aaa_Adlm_320_fonipa	;	aaa_Adlm_GT_fonipa
+aaa_Adlm_324_fonipa	;	aaa_Adlm_GN_fonipa
+aaa_Adlm_328_fonipa	;	aaa_Adlm_GY_fonipa
+aaa_Adlm_332_fonipa	;	aaa_Adlm_HT_fonipa
+aaa_Adlm_334_fonipa	;	aaa_Adlm_HM_fonipa
+aaa_Adlm_336_fonipa	;	aaa_Adlm_VA_fonipa
+aaa_Adlm_340_fonipa	;	aaa_Adlm_HN_fonipa
+aaa_Adlm_344_fonipa	;	aaa_Adlm_HK_fonipa
+aaa_Adlm_348_fonipa	;	aaa_Adlm_HU_fonipa
+aaa_Adlm_352_fonipa	;	aaa_Adlm_IS_fonipa
+aaa_Adlm_356_fonipa	;	aaa_Adlm_IN_fonipa
+aaa_Adlm_360_fonipa	;	aaa_Adlm_ID_fonipa
+aaa_Adlm_364_fonipa	;	aaa_Adlm_IR_fonipa
+aaa_Adlm_368_fonipa	;	aaa_Adlm_IQ_fonipa
+aaa_Adlm_372_fonipa	;	aaa_Adlm_IE_fonipa
+aaa_Adlm_376_fonipa	;	aaa_Adlm_IL_fonipa
+aaa_Adlm_380_fonipa	;	aaa_Adlm_IT_fonipa
+aaa_Adlm_384_fonipa	;	aaa_Adlm_CI_fonipa
+aaa_Adlm_388_fonipa	;	aaa_Adlm_JM_fonipa
+aaa_Adlm_392_fonipa	;	aaa_Adlm_JP_fonipa
+aaa_Adlm_398_fonipa	;	aaa_Adlm_KZ_fonipa
+aaa_Adlm_400_fonipa	;	aaa_Adlm_JO_fonipa
+aaa_Adlm_404_fonipa	;	aaa_Adlm_KE_fonipa
+aaa_Adlm_408_fonipa	;	aaa_Adlm_KP_fonipa
+aaa_Adlm_410_fonipa	;	aaa_Adlm_KR_fonipa
+aaa_Adlm_414_fonipa	;	aaa_Adlm_KW_fonipa
+aaa_Adlm_417_fonipa	;	aaa_Adlm_KG_fonipa
+aaa_Adlm_418_fonipa	;	aaa_Adlm_LA_fonipa
+aaa_Adlm_422_fonipa	;	aaa_Adlm_LB_fonipa
+aaa_Adlm_426_fonipa	;	aaa_Adlm_LS_fonipa
+aaa_Adlm_428_fonipa	;	aaa_Adlm_LV_fonipa
+aaa_Adlm_430_fonipa	;	aaa_Adlm_LR_fonipa
+aaa_Adlm_434_fonipa	;	aaa_Adlm_LY_fonipa
+aaa_Adlm_438_fonipa	;	aaa_Adlm_LI_fonipa
+aaa_Adlm_440_fonipa	;	aaa_Adlm_LT_fonipa
+aaa_Adlm_442_fonipa	;	aaa_Adlm_LU_fonipa
+aaa_Adlm_446_fonipa	;	aaa_Adlm_MO_fonipa
+aaa_Adlm_450_fonipa	;	aaa_Adlm_MG_fonipa
+aaa_Adlm_454_fonipa	;	aaa_Adlm_MW_fonipa
+aaa_Adlm_458_fonipa	;	aaa_Adlm_MY_fonipa
+aaa_Adlm_462_fonipa	;	aaa_Adlm_MV_fonipa
+aaa_Adlm_466_fonipa	;	aaa_Adlm_ML_fonipa
+aaa_Adlm_470_fonipa	;	aaa_Adlm_MT_fonipa
+aaa_Adlm_474_fonipa	;	aaa_Adlm_MQ_fonipa
+aaa_Adlm_478_fonipa	;	aaa_Adlm_MR_fonipa
+aaa_Adlm_480_fonipa	;	aaa_Adlm_MU_fonipa
+aaa_Adlm_484_fonipa	;	aaa_Adlm_MX_fonipa
+aaa_Adlm_492_fonipa	;	aaa_Adlm_MC_fonipa
+aaa_Adlm_496_fonipa	;	aaa_Adlm_MN_fonipa
+aaa_Adlm_498_fonipa	;	aaa_Adlm_MD_fonipa
+aaa_Adlm_499_fonipa	;	aaa_Adlm_ME_fonipa
+aaa_Adlm_500_fonipa	;	aaa_Adlm_MS_fonipa
+aaa_Adlm_504_fonipa	;	aaa_Adlm_MA_fonipa
+aaa_Adlm_508_fonipa	;	aaa_Adlm_MZ_fonipa
+aaa_Adlm_512_fonipa	;	aaa_Adlm_OM_fonipa
+aaa_Adlm_516_fonipa	;	aaa_Adlm_NA_fonipa
+aaa_Adlm_520_fonipa	;	aaa_Adlm_NR_fonipa
+aaa_Adlm_524_fonipa	;	aaa_Adlm_NP_fonipa
+aaa_Adlm_528_fonipa	;	aaa_Adlm_NL_fonipa
+aaa_Adlm_530_fonipa	;	aaa_Adlm_CW_fonipa
+aaa_Adlm_531_fonipa	;	aaa_Adlm_CW_fonipa
+aaa_Adlm_532_fonipa	;	aaa_Adlm_CW_fonipa
+aaa_Adlm_533_fonipa	;	aaa_Adlm_AW_fonipa
+aaa_Adlm_534_fonipa	;	aaa_Adlm_SX_fonipa
+aaa_Adlm_535_fonipa	;	aaa_Adlm_BQ_fonipa
+aaa_Adlm_536_fonipa	;	aaa_Adlm_SA_fonipa
+aaa_Adlm_540_fonipa	;	aaa_Adlm_NC_fonipa
+aaa_Adlm_548_fonipa	;	aaa_Adlm_VU_fonipa
+aaa_Adlm_554_fonipa	;	aaa_Adlm_NZ_fonipa
+aaa_Adlm_558_fonipa	;	aaa_Adlm_NI_fonipa
+aaa_Adlm_562_fonipa	;	aaa_Adlm_NE_fonipa
+aaa_Adlm_566_fonipa	;	aaa_Adlm_NG_fonipa
+aaa_Adlm_570_fonipa	;	aaa_Adlm_NU_fonipa
+aaa_Adlm_574_fonipa	;	aaa_Adlm_NF_fonipa
+aaa_Adlm_578_fonipa	;	aaa_Adlm_NO_fonipa
+aaa_Adlm_580_fonipa	;	aaa_Adlm_MP_fonipa
+aaa_Adlm_581_fonipa	;	aaa_Adlm_UM_fonipa
+aaa_Adlm_582_fonipa	;	aaa_Adlm_FM_fonipa
+aaa_Adlm_583_fonipa	;	aaa_Adlm_FM_fonipa
+aaa_Adlm_584_fonipa	;	aaa_Adlm_MH_fonipa
+aaa_Adlm_585_fonipa	;	aaa_Adlm_PW_fonipa
+aaa_Adlm_586_fonipa	;	aaa_Adlm_PK_fonipa
+aaa_Adlm_591_fonipa	;	aaa_Adlm_PA_fonipa
+aaa_Adlm_598_fonipa	;	aaa_Adlm_PG_fonipa
+aaa_Adlm_600_fonipa	;	aaa_Adlm_PY_fonipa
+aaa_Adlm_604_fonipa	;	aaa_Adlm_PE_fonipa
+aaa_Adlm_608_fonipa	;	aaa_Adlm_PH_fonipa
+aaa_Adlm_612_fonipa	;	aaa_Adlm_PN_fonipa
+aaa_Adlm_616_fonipa	;	aaa_Adlm_PL_fonipa
+aaa_Adlm_620_fonipa	;	aaa_Adlm_PT_fonipa
+aaa_Adlm_624_fonipa	;	aaa_Adlm_GW_fonipa
+aaa_Adlm_626_fonipa	;	aaa_Adlm_TL_fonipa
+aaa_Adlm_630_fonipa	;	aaa_Adlm_PR_fonipa
+aaa_Adlm_634_fonipa	;	aaa_Adlm_QA_fonipa
+aaa_Adlm_638_fonipa	;	aaa_Adlm_RE_fonipa
+aaa_Adlm_642_fonipa	;	aaa_Adlm_RO_fonipa
+aaa_Adlm_643_fonipa	;	aaa_Adlm_RU_fonipa
+aaa_Adlm_646_fonipa	;	aaa_Adlm_RW_fonipa
+aaa_Adlm_652_fonipa	;	aaa_Adlm_BL_fonipa
+aaa_Adlm_654_fonipa	;	aaa_Adlm_SH_fonipa
+aaa_Adlm_659_fonipa	;	aaa_Adlm_KN_fonipa
+aaa_Adlm_660_fonipa	;	aaa_Adlm_AI_fonipa
+aaa_Adlm_662_fonipa	;	aaa_Adlm_LC_fonipa
+aaa_Adlm_663_fonipa	;	aaa_Adlm_MF_fonipa
+aaa_Adlm_666_fonipa	;	aaa_Adlm_PM_fonipa
+aaa_Adlm_670_fonipa	;	aaa_Adlm_VC_fonipa
+aaa_Adlm_674_fonipa	;	aaa_Adlm_SM_fonipa
+aaa_Adlm_678_fonipa	;	aaa_Adlm_ST_fonipa
+aaa_Adlm_682_fonipa	;	aaa_Adlm_SA_fonipa
+aaa_Adlm_686_fonipa	;	aaa_Adlm_SN_fonipa
+aaa_Adlm_688_fonipa	;	aaa_Adlm_RS_fonipa
+aaa_Adlm_690_fonipa	;	aaa_Adlm_SC_fonipa
+aaa_Adlm_694_fonipa	;	aaa_Adlm_SL_fonipa
+aaa_Adlm_702_fonipa	;	aaa_Adlm_SG_fonipa
+aaa_Adlm_703_fonipa	;	aaa_Adlm_SK_fonipa
+aaa_Adlm_704_fonipa	;	aaa_Adlm_VN_fonipa
+aaa_Adlm_705_fonipa	;	aaa_Adlm_SI_fonipa
+aaa_Adlm_706_fonipa	;	aaa_Adlm_SO_fonipa
+aaa_Adlm_710_fonipa	;	aaa_Adlm_ZA_fonipa
+aaa_Adlm_716_fonipa	;	aaa_Adlm_ZW_fonipa
+aaa_Adlm_720_fonipa	;	aaa_Adlm_YE_fonipa
+aaa_Adlm_724_fonipa	;	aaa_Adlm_ES_fonipa
+aaa_Adlm_728_fonipa	;	aaa_Adlm_SS_fonipa
+aaa_Adlm_729_fonipa	;	aaa_Adlm_SD_fonipa
+aaa_Adlm_732_fonipa	;	aaa_Adlm_EH_fonipa
+aaa_Adlm_736_fonipa	;	aaa_Adlm_SD_fonipa
+aaa_Adlm_740_fonipa	;	aaa_Adlm_SR_fonipa
+aaa_Adlm_744_fonipa	;	aaa_Adlm_SJ_fonipa
+aaa_Adlm_748_fonipa	;	aaa_Adlm_SZ_fonipa
+aaa_Adlm_752_fonipa	;	aaa_Adlm_SE_fonipa
+aaa_Adlm_756_fonipa	;	aaa_Adlm_CH_fonipa
+aaa_Adlm_760_fonipa	;	aaa_Adlm_SY_fonipa
+aaa_Adlm_762_fonipa	;	aaa_Adlm_TJ_fonipa
+aaa_Adlm_764_fonipa	;	aaa_Adlm_TH_fonipa
+aaa_Adlm_768_fonipa	;	aaa_Adlm_TG_fonipa
+aaa_Adlm_772_fonipa	;	aaa_Adlm_TK_fonipa
+aaa_Adlm_776_fonipa	;	aaa_Adlm_TO_fonipa
+aaa_Adlm_780_fonipa	;	aaa_Adlm_TT_fonipa
+aaa_Adlm_784_fonipa	;	aaa_Adlm_AE_fonipa
+aaa_Adlm_788_fonipa	;	aaa_Adlm_TN_fonipa
+aaa_Adlm_792_fonipa	;	aaa_Adlm_TR_fonipa
+aaa_Adlm_795_fonipa	;	aaa_Adlm_TM_fonipa
+aaa_Adlm_796_fonipa	;	aaa_Adlm_TC_fonipa
+aaa_Adlm_798_fonipa	;	aaa_Adlm_TV_fonipa
+aaa_Adlm_800_fonipa	;	aaa_Adlm_UG_fonipa
+aaa_Adlm_804_fonipa	;	aaa_Adlm_UA_fonipa
+aaa_Adlm_807_fonipa	;	aaa_Adlm_MK_fonipa
+aaa_Adlm_810_fonipa	;	aaa_Adlm_RU_fonipa
+aaa_Adlm_818_fonipa	;	aaa_Adlm_EG_fonipa
+aaa_Adlm_826_fonipa	;	aaa_Adlm_GB_fonipa
+aaa_Adlm_830_fonipa	;	aaa_Adlm_JE_fonipa
+aaa_Adlm_831_fonipa	;	aaa_Adlm_GG_fonipa
+aaa_Adlm_832_fonipa	;	aaa_Adlm_JE_fonipa
+aaa_Adlm_833_fonipa	;	aaa_Adlm_IM_fonipa
+aaa_Adlm_834_fonipa	;	aaa_Adlm_TZ_fonipa
+aaa_Adlm_840_fonipa	;	aaa_Adlm_US_fonipa
+aaa_Adlm_850_fonipa	;	aaa_Adlm_VI_fonipa
+aaa_Adlm_854_fonipa	;	aaa_Adlm_BF_fonipa
+aaa_Adlm_858_fonipa	;	aaa_Adlm_UY_fonipa
+aaa_Adlm_860_fonipa	;	aaa_Adlm_UZ_fonipa
+aaa_Adlm_862_fonipa	;	aaa_Adlm_VE_fonipa
+aaa_Adlm_876_fonipa	;	aaa_Adlm_WF_fonipa
+aaa_Adlm_882_fonipa	;	aaa_Adlm_WS_fonipa
+aaa_Adlm_886_fonipa	;	aaa_Adlm_YE_fonipa
+aaa_Adlm_887_fonipa	;	aaa_Adlm_YE_fonipa
+aaa_Adlm_890_fonipa	;	aaa_Adlm_RS_fonipa
+aaa_Adlm_891_fonipa	;	aaa_Adlm_RS_fonipa
+aaa_Adlm_894_fonipa	;	aaa_Adlm_ZM_fonipa
+aaa_Adlm_958_fonipa	;	aaa_Adlm_AA_fonipa
+aaa_Adlm_959_fonipa	;	aaa_Adlm_QM_fonipa
+aaa_Adlm_960_fonipa	;	aaa_Adlm_QN_fonipa
+aaa_Adlm_962_fonipa	;	aaa_Adlm_QP_fonipa
+aaa_Adlm_963_fonipa	;	aaa_Adlm_QQ_fonipa
+aaa_Adlm_964_fonipa	;	aaa_Adlm_QR_fonipa
+aaa_Adlm_965_fonipa	;	aaa_Adlm_QS_fonipa
+aaa_Adlm_966_fonipa	;	aaa_Adlm_QT_fonipa
+aaa_Adlm_967_fonipa	;	aaa_Adlm_EU_fonipa
+aaa_Adlm_968_fonipa	;	aaa_Adlm_QV_fonipa
+aaa_Adlm_969_fonipa	;	aaa_Adlm_QW_fonipa
+aaa_Adlm_970_fonipa	;	aaa_Adlm_QX_fonipa
+aaa_Adlm_971_fonipa	;	aaa_Adlm_QY_fonipa
+aaa_Adlm_972_fonipa	;	aaa_Adlm_QZ_fonipa
+aaa_Adlm_973_fonipa	;	aaa_Adlm_XA_fonipa
+aaa_Adlm_974_fonipa	;	aaa_Adlm_XB_fonipa
+aaa_Adlm_975_fonipa	;	aaa_Adlm_XC_fonipa
+aaa_Adlm_976_fonipa	;	aaa_Adlm_XD_fonipa
+aaa_Adlm_977_fonipa	;	aaa_Adlm_XE_fonipa
+aaa_Adlm_978_fonipa	;	aaa_Adlm_XF_fonipa
+aaa_Adlm_979_fonipa	;	aaa_Adlm_XG_fonipa
+aaa_Adlm_980_fonipa	;	aaa_Adlm_XH_fonipa
+aaa_Adlm_981_fonipa	;	aaa_Adlm_XI_fonipa
+aaa_Adlm_982_fonipa	;	aaa_Adlm_XJ_fonipa
+aaa_Adlm_983_fonipa	;	aaa_Adlm_XK_fonipa
+aaa_Adlm_984_fonipa	;	aaa_Adlm_XL_fonipa
+aaa_Adlm_985_fonipa	;	aaa_Adlm_XM_fonipa
+aaa_Adlm_986_fonipa	;	aaa_Adlm_XN_fonipa
+aaa_Adlm_987_fonipa	;	aaa_Adlm_XO_fonipa
+aaa_Adlm_988_fonipa	;	aaa_Adlm_XP_fonipa
+aaa_Adlm_989_fonipa	;	aaa_Adlm_XQ_fonipa
+aaa_Adlm_990_fonipa	;	aaa_Adlm_XR_fonipa
+aaa_Adlm_991_fonipa	;	aaa_Adlm_XS_fonipa
+aaa_Adlm_992_fonipa	;	aaa_Adlm_XT_fonipa
+aaa_Adlm_993_fonipa	;	aaa_Adlm_XU_fonipa
+aaa_Adlm_994_fonipa	;	aaa_Adlm_XV_fonipa
+aaa_Adlm_995_fonipa	;	aaa_Adlm_XW_fonipa
+aaa_Adlm_996_fonipa	;	aaa_Adlm_XX_fonipa
+aaa_Adlm_997_fonipa	;	aaa_Adlm_XY_fonipa
+aaa_Adlm_998_fonipa	;	aaa_Adlm_XZ_fonipa
+aaa_Adlm_999_fonipa	;	aaa_Adlm_ZZ_fonipa
+aaa_Adlm_AC_aaland_fonipa	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_arevela_fonipa	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_arevmda_fonipa	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_bokmal_fonipa	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_fonipa_hakka	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_fonipa_heploc	;	aaa_Adlm_AC_alalc97_fonipa
+aaa_Adlm_AC_fonipa_lojban	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_fonipa_nynorsk	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_fonipa_polytoni	;	aaa_Adlm_AC_fonipa_polyton
+aaa_Adlm_AC_fonipa_saaho	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_fonipa_xiang	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AN_fonipa	;	aaa_Adlm_CW_fonipa
+aaa_Adlm_BU_fonipa	;	aaa_Adlm_MM_fonipa
+aaa_Adlm_CS_fonipa	;	aaa_Adlm_RS_fonipa
+aaa_Adlm_CT_fonipa	;	aaa_Adlm_KI_fonipa
+aaa_Adlm_DD_fonipa	;	aaa_Adlm_DE_fonipa
+aaa_Adlm_DY_fonipa	;	aaa_Adlm_BJ_fonipa
+aaa_Adlm_FQ_fonipa	;	aaa_Adlm_AQ_fonipa
+aaa_Adlm_FX_fonipa	;	aaa_Adlm_FR_fonipa
+aaa_Adlm_HV_fonipa	;	aaa_Adlm_BF_fonipa
+aaa_Adlm_JT_fonipa	;	aaa_Adlm_UM_fonipa
+aaa_Adlm_MI_fonipa	;	aaa_Adlm_UM_fonipa
+aaa_Adlm_NH_fonipa	;	aaa_Adlm_VU_fonipa
+aaa_Adlm_NQ_fonipa	;	aaa_Adlm_AQ_fonipa
+aaa_Adlm_NT_fonipa	;	aaa_Adlm_SA_fonipa
+aaa_Adlm_PC_fonipa	;	aaa_Adlm_FM_fonipa
+aaa_Adlm_PU_fonipa	;	aaa_Adlm_UM_fonipa
+aaa_Adlm_PZ_fonipa	;	aaa_Adlm_PA_fonipa
+aaa_Adlm_QU_fonipa	;	aaa_Adlm_EU_fonipa
+aaa_Adlm_RH_fonipa	;	aaa_Adlm_ZW_fonipa
+aaa_Adlm_SU_fonipa	;	aaa_Adlm_RU_fonipa
+aaa_Adlm_TP_fonipa	;	aaa_Adlm_TL_fonipa
+aaa_Adlm_UK_fonipa	;	aaa_Adlm_GB_fonipa
+aaa_Adlm_VD_fonipa	;	aaa_Adlm_VN_fonipa
+aaa_Adlm_WK_fonipa	;	aaa_Adlm_UM_fonipa
+aaa_Adlm_YD_fonipa	;	aaa_Adlm_YE_fonipa
+aaa_Adlm_YU_fonipa	;	aaa_Adlm_RS_fonipa
+aaa_Adlm_ZR_fonipa	;	aaa_Adlm_CD_fonipa
+aaa_Qaai_AC_fonipa	;	aaa_Zinh_AC_fonipa
+aam_Adlm_AC_fonipa	;	aas_Adlm_AC_fonipa
+aar_Adlm_AC_fonipa	;	aa_Adlm_AC_fonipa
+aar_Adlm_AC_fonipa_saaho	;	ssy_Adlm_AC_fonipa
+abk_Adlm_AC_fonipa	;	ab_Adlm_AC_fonipa
+adp_Adlm_AC_fonipa	;	dz_Adlm_AC_fonipa
+afr_Adlm_AC_fonipa	;	af_Adlm_AC_fonipa
+aju_Adlm_AC_fonipa	;	jrb_Adlm_AC_fonipa
+aka_Adlm_AC_fonipa	;	ak_Adlm_AC_fonipa
+alb_Adlm_AC_fonipa	;	sq_Adlm_AC_fonipa
+als_Adlm_AC_fonipa	;	sq_Adlm_AC_fonipa
+amh_Adlm_AC_fonipa	;	am_Adlm_AC_fonipa
+ara_Adlm_AC_fonipa	;	ar_Adlm_AC_fonipa
+arb_Adlm_AC_fonipa	;	ar_Adlm_AC_fonipa
+arg_Adlm_AC_fonipa	;	an_Adlm_AC_fonipa
+arm_Adlm_AC_arevela_arevmda_fonipa	;	hyw_Adlm_AC_fonipa
+arm_Adlm_AC_arevela_fonipa	;	hy_Adlm_AC_fonipa
+arm_Adlm_AC_arevmda_fonipa	;	hyw_Adlm_AC_fonipa
+arm_Adlm_AC_fonipa	;	hy_Adlm_AC_fonipa
+art_Adlm_AC_fonipa_lojban	;	jbo_Adlm_AC_fonipa
+asd_Adlm_AC_fonipa	;	snz_Adlm_AC_fonipa
+asm_Adlm_AC_fonipa	;	as_Adlm_AC_fonipa
+aue_Adlm_AC_fonipa	;	ktz_Adlm_AC_fonipa
+ava_Adlm_AC_fonipa	;	av_Adlm_AC_fonipa
+ave_Adlm_AC_fonipa	;	ae_Adlm_AC_fonipa
+aym_Adlm_AC_fonipa	;	ay_Adlm_AC_fonipa
+ayr_Adlm_AC_fonipa	;	ay_Adlm_AC_fonipa
+ayx_Adlm_AC_fonipa	;	nun_Adlm_AC_fonipa
+aze_Adlm_AC_fonipa	;	az_Adlm_AC_fonipa
+azj_Adlm_AC_fonipa	;	az_Adlm_AC_fonipa
+bak_Adlm_AC_fonipa	;	ba_Adlm_AC_fonipa
+bam_Adlm_AC_fonipa	;	bm_Adlm_AC_fonipa
+baq_Adlm_AC_fonipa	;	eu_Adlm_AC_fonipa
+bcc_Adlm_AC_fonipa	;	bal_Adlm_AC_fonipa
+bcl_Adlm_AC_fonipa	;	bik_Adlm_AC_fonipa
+bel_Adlm_AC_fonipa	;	be_Adlm_AC_fonipa
+ben_Adlm_AC_fonipa	;	bn_Adlm_AC_fonipa
+bgm_Adlm_AC_fonipa	;	bcg_Adlm_AC_fonipa
+bh_Adlm_AC_fonipa	;	bho_Adlm_AC_fonipa
+bih_Adlm_AC_fonipa	;	bho_Adlm_AC_fonipa
+bis_Adlm_AC_fonipa	;	bi_Adlm_AC_fonipa
+bjd_Adlm_AC_fonipa	;	drl_Adlm_AC_fonipa
+bod_Adlm_AC_fonipa	;	bo_Adlm_AC_fonipa
+bos_Adlm_AC_fonipa	;	bs_Adlm_AC_fonipa
+bre_Adlm_AC_fonipa	;	br_Adlm_AC_fonipa
+bul_Adlm_AC_fonipa	;	bg_Adlm_AC_fonipa
+bur_Adlm_AC_fonipa	;	my_Adlm_AC_fonipa
+bxk_Adlm_AC_fonipa	;	luy_Adlm_AC_fonipa
+bxr_Adlm_AC_fonipa	;	bua_Adlm_AC_fonipa
+cat_Adlm_AC_fonipa	;	ca_Adlm_AC_fonipa
+ccq_Adlm_AC_fonipa	;	rki_Adlm_AC_fonipa
+cel_Adlm_AC_fonipa_gaulish	;	xtg_Adlm_AC_fonipa
+ces_Adlm_AC_fonipa	;	cs_Adlm_AC_fonipa
+cha_Adlm_AC_fonipa	;	ch_Adlm_AC_fonipa
+che_Adlm_AC_fonipa	;	ce_Adlm_AC_fonipa
+chi_Adlm_AC_fonipa	;	zh_Adlm_AC_fonipa
+chi_Adlm_AC_fonipa_guoyu	;	zh_Adlm_AC_fonipa
+chi_Adlm_AC_fonipa_guoyu_hakka_xiang	;	hak_Adlm_AC_fonipa
+chi_Adlm_AC_fonipa_hakka	;	hak_Adlm_AC_fonipa
+chi_Adlm_AC_fonipa_hakka_xiang	;	hak_Adlm_AC_fonipa
+chi_Adlm_AC_fonipa_xiang	;	hsn_Adlm_AC_fonipa
+chu_Adlm_AC_fonipa	;	cu_Adlm_AC_fonipa
+chv_Adlm_AC_fonipa	;	cv_Adlm_AC_fonipa
+cjr_Adlm_AC_fonipa	;	mom_Adlm_AC_fonipa
+cka_Adlm_AC_fonipa	;	cmr_Adlm_AC_fonipa
+cld_Adlm_AC_fonipa	;	syr_Adlm_AC_fonipa
+cmk_Adlm_AC_fonipa	;	xch_Adlm_AC_fonipa
+cmn_Adlm_AC_fonipa	;	zh_Adlm_AC_fonipa
+cmn_Adlm_AC_fonipa_guoyu	;	zh_Adlm_AC_fonipa
+cmn_Adlm_AC_fonipa_guoyu_hakka_xiang	;	hak_Adlm_AC_fonipa
+cmn_Adlm_AC_fonipa_hakka	;	hak_Adlm_AC_fonipa
+cmn_Adlm_AC_fonipa_hakka_xiang	;	hak_Adlm_AC_fonipa
+cmn_Adlm_AC_fonipa_xiang	;	hsn_Adlm_AC_fonipa
+cnr_Adlm_AC_fonipa	;	sr_Adlm_AC_fonipa
+cor_Adlm_AC_fonipa	;	kw_Adlm_AC_fonipa
+cos_Adlm_AC_fonipa	;	co_Adlm_AC_fonipa
+coy_Adlm_AC_fonipa	;	pij_Adlm_AC_fonipa
+cqu_Adlm_AC_fonipa	;	quh_Adlm_AC_fonipa
+cre_Adlm_AC_fonipa	;	cr_Adlm_AC_fonipa
+cwd_Adlm_AC_fonipa	;	cr_Adlm_AC_fonipa
+cym_Adlm_AC_fonipa	;	cy_Adlm_AC_fonipa
+cze_Adlm_AC_fonipa	;	cs_Adlm_AC_fonipa
+dan_Adlm_AC_fonipa	;	da_Adlm_AC_fonipa
+deu_Adlm_AC_fonipa	;	de_Adlm_AC_fonipa
+dgo_Adlm_AC_fonipa	;	doi_Adlm_AC_fonipa
+dhd_Adlm_AC_fonipa	;	mwr_Adlm_AC_fonipa
+dik_Adlm_AC_fonipa	;	din_Adlm_AC_fonipa
+diq_Adlm_AC_fonipa	;	zza_Adlm_AC_fonipa
+dit_Adlm_AC_fonipa	;	dif_Adlm_AC_fonipa
+div_Adlm_AC_fonipa	;	dv_Adlm_AC_fonipa
+drh_Adlm_AC_fonipa	;	mn_Adlm_AC_fonipa
+drw_Adlm_AC_fonipa	;	fa_Adlm_AC_fonipa
+dut_Adlm_AC_fonipa	;	nl_Adlm_AC_fonipa
+dzo_Adlm_AC_fonipa	;	dz_Adlm_AC_fonipa
+ekk_Adlm_AC_fonipa	;	et_Adlm_AC_fonipa
+ell_Adlm_AC_fonipa	;	el_Adlm_AC_fonipa
+emk_Adlm_AC_fonipa	;	man_Adlm_AC_fonipa
+en_Adlm_840_aaland_fonipa	;	en_Adlm_US_fonipa
+en_Adlm_840_fonipa_heploc	;	en_Adlm_US_alalc97_fonipa
+en_Adlm_840_fonipa_polytoni	;	en_Adlm_US_fonipa_polyton
+en_Adlm_AC_aaland_fonipa	;	en_Adlm_AC_fonipa
+en_Adlm_AC_arevela_arevmda_fonipa	;	en_Adlm_AC_fonipa
+en_Adlm_AC_arevela_fonipa	;	en_Adlm_AC_fonipa
+en_Adlm_AC_fonipa_lojban	;	en_Adlm_AC_fonipa
+en_Adlm_US_aaland_fonipa	;	en_Adlm_US_fonipa
+en_Adlm_US_fonipa_heploc	;	en_Adlm_US_alalc97_fonipa
+en_Adlm_US_fonipa_polytoni	;	en_Adlm_US_fonipa_polyton
+eng_Adlm_840_aaland_fonipa	;	en_Adlm_US_fonipa
+eng_Adlm_840_fonipa_heploc	;	en_Adlm_US_alalc97_fonipa
+eng_Adlm_840_fonipa_polytoni	;	en_Adlm_US_fonipa_polyton
+eng_Adlm_AC_aaland_fonipa	;	en_Adlm_AC_fonipa
+eng_Adlm_AC_arevela_arevmda_fonipa	;	en_Adlm_AC_fonipa
+eng_Adlm_AC_arevela_fonipa	;	en_Adlm_AC_fonipa
+eng_Adlm_AC_fonipa	;	en_Adlm_AC_fonipa
+eng_Adlm_AC_fonipa_lojban	;	en_Adlm_AC_fonipa
+eng_Adlm_US_aaland_fonipa	;	en_Adlm_US_fonipa
+eng_Adlm_US_fonipa_heploc	;	en_Adlm_US_alalc97_fonipa
+eng_Adlm_US_fonipa_polytoni	;	en_Adlm_US_fonipa_polyton
+epo_Adlm_AC_fonipa	;	eo_Adlm_AC_fonipa
+esk_Adlm_AC_fonipa	;	ik_Adlm_AC_fonipa
+est_Adlm_AC_fonipa	;	et_Adlm_AC_fonipa
+eus_Adlm_AC_fonipa	;	eu_Adlm_AC_fonipa
+ewe_Adlm_AC_fonipa	;	ee_Adlm_AC_fonipa
+fao_Adlm_AC_fonipa	;	fo_Adlm_AC_fonipa
+fas_Adlm_AC_fonipa	;	fa_Adlm_AC_fonipa
+fat_Adlm_AC_fonipa	;	ak_Adlm_AC_fonipa
+fij_Adlm_AC_fonipa	;	fj_Adlm_AC_fonipa
+fin_Adlm_AC_fonipa	;	fi_Adlm_AC_fonipa
+fra_Adlm_AC_fonipa	;	fr_Adlm_AC_fonipa
+fre_Adlm_AC_fonipa	;	fr_Adlm_AC_fonipa
+fry_Adlm_AC_fonipa	;	fy_Adlm_AC_fonipa
+fuc_Adlm_AC_fonipa	;	ff_Adlm_AC_fonipa
+ful_Adlm_AC_fonipa	;	ff_Adlm_AC_fonipa
+gav_Adlm_AC_fonipa	;	dev_Adlm_AC_fonipa
+gaz_Adlm_AC_fonipa	;	om_Adlm_AC_fonipa
+gbo_Adlm_AC_fonipa	;	grb_Adlm_AC_fonipa
+geo_Adlm_AC_fonipa	;	ka_Adlm_AC_fonipa
+ger_Adlm_AC_fonipa	;	de_Adlm_AC_fonipa
+gfx_Adlm_AC_fonipa	;	vaj_Adlm_AC_fonipa
+ggn_Adlm_AC_fonipa	;	gvr_Adlm_AC_fonipa
+gla_Adlm_AC_fonipa	;	gd_Adlm_AC_fonipa
+gle_Adlm_AC_fonipa	;	ga_Adlm_AC_fonipa
+glg_Adlm_AC_fonipa	;	gl_Adlm_AC_fonipa
+glv_Adlm_AC_fonipa	;	gv_Adlm_AC_fonipa
+gno_Adlm_AC_fonipa	;	gon_Adlm_AC_fonipa
+gre_Adlm_AC_fonipa	;	el_Adlm_AC_fonipa
+grn_Adlm_AC_fonipa	;	gn_Adlm_AC_fonipa
+gti_Adlm_AC_fonipa	;	nyc_Adlm_AC_fonipa
+gug_Adlm_AC_fonipa	;	gn_Adlm_AC_fonipa
+guj_Adlm_AC_fonipa	;	gu_Adlm_AC_fonipa
+guv_Adlm_AC_fonipa	;	duz_Adlm_AC_fonipa
+gya_Adlm_AC_fonipa	;	gba_Adlm_AC_fonipa
+hat_Adlm_AC_fonipa	;	ht_Adlm_AC_fonipa
+hau_Adlm_AC_fonipa	;	ha_Adlm_AC_fonipa
+hbs_Adlm_AC_fonipa	;	sr_Adlm_AC_fonipa
+hdn_Adlm_AC_fonipa	;	hai_Adlm_AC_fonipa
+hea_Adlm_AC_fonipa	;	hmn_Adlm_AC_fonipa
+heb_Adlm_AC_fonipa	;	he_Adlm_AC_fonipa
+her_Adlm_AC_fonipa	;	hz_Adlm_AC_fonipa
+him_Adlm_AC_fonipa	;	srx_Adlm_AC_fonipa
+hin_Adlm_AC_fonipa	;	hi_Adlm_AC_fonipa
+hmo_Adlm_AC_fonipa	;	ho_Adlm_AC_fonipa
+hrr_Adlm_AC_fonipa	;	jal_Adlm_AC_fonipa
+hrv_Adlm_AC_fonipa	;	hr_Adlm_AC_fonipa
+hun_Adlm_AC_fonipa	;	hu_Adlm_AC_fonipa
+hy_Adlm_AC_arevela_arevmda_fonipa	;	hyw_Adlm_AC_fonipa
+hy_Adlm_AC_arevela_fonipa	;	hy_Adlm_AC_fonipa
+hy_Adlm_AC_arevmda_fonipa	;	hyw_Adlm_AC_fonipa
+hye_Adlm_AC_arevela_arevmda_fonipa	;	hyw_Adlm_AC_fonipa
+hye_Adlm_AC_arevela_fonipa	;	hy_Adlm_AC_fonipa
+hye_Adlm_AC_arevmda_fonipa	;	hyw_Adlm_AC_fonipa
+hye_Adlm_AC_fonipa	;	hy_Adlm_AC_fonipa
+ibi_Adlm_AC_fonipa	;	opa_Adlm_AC_fonipa
+ibo_Adlm_AC_fonipa	;	ig_Adlm_AC_fonipa
+ice_Adlm_AC_fonipa	;	is_Adlm_AC_fonipa
+ido_Adlm_AC_fonipa	;	io_Adlm_AC_fonipa
+iii_Adlm_AC_fonipa	;	ii_Adlm_AC_fonipa
+ike_Adlm_AC_fonipa	;	iu_Adlm_AC_fonipa
+iku_Adlm_AC_fonipa	;	iu_Adlm_AC_fonipa
+ile_Adlm_AC_fonipa	;	ie_Adlm_AC_fonipa
+ilw_Adlm_AC_fonipa	;	gal_Adlm_AC_fonipa
+in_Adlm_AC_fonipa	;	id_Adlm_AC_fonipa
+ina_Adlm_AC_fonipa	;	ia_Adlm_AC_fonipa
+ind_Adlm_AC_fonipa	;	id_Adlm_AC_fonipa
+ipk_Adlm_AC_fonipa	;	ik_Adlm_AC_fonipa
+isl_Adlm_AC_fonipa	;	is_Adlm_AC_fonipa
+ita_Adlm_AC_fonipa	;	it_Adlm_AC_fonipa
+iw_Adlm_AC_fonipa	;	he_Adlm_AC_fonipa
+jav_Adlm_AC_fonipa	;	jv_Adlm_AC_fonipa
+jeg_Adlm_AC_fonipa	;	oyb_Adlm_AC_fonipa
+ji_Adlm_AC_fonipa	;	yi_Adlm_AC_fonipa
+jpn_Adlm_AC_fonipa	;	ja_Adlm_AC_fonipa
+jw_Adlm_AC_fonipa	;	jv_Adlm_AC_fonipa
+kal_Adlm_AC_fonipa	;	kl_Adlm_AC_fonipa
+kan_Adlm_AC_fonipa	;	kn_Adlm_AC_fonipa
+kas_Adlm_AC_fonipa	;	ks_Adlm_AC_fonipa
+kat_Adlm_AC_fonipa	;	ka_Adlm_AC_fonipa
+kau_Adlm_AC_fonipa	;	kr_Adlm_AC_fonipa
+kaz_Adlm_AC_fonipa	;	kk_Adlm_AC_fonipa
+kgc_Adlm_AC_fonipa	;	tdf_Adlm_AC_fonipa
+kgh_Adlm_AC_fonipa	;	kml_Adlm_AC_fonipa
+khk_Adlm_AC_fonipa	;	mn_Adlm_AC_fonipa
+khm_Adlm_AC_fonipa	;	km_Adlm_AC_fonipa
+kik_Adlm_AC_fonipa	;	ki_Adlm_AC_fonipa
+kin_Adlm_AC_fonipa	;	rw_Adlm_AC_fonipa
+kir_Adlm_AC_fonipa	;	ky_Adlm_AC_fonipa
+kmr_Adlm_AC_fonipa	;	ku_Adlm_AC_fonipa
+knc_Adlm_AC_fonipa	;	kr_Adlm_AC_fonipa
+kng_Adlm_AC_fonipa	;	kg_Adlm_AC_fonipa
+knn_Adlm_AC_fonipa	;	kok_Adlm_AC_fonipa
+koj_Adlm_AC_fonipa	;	kwv_Adlm_AC_fonipa
+kom_Adlm_AC_fonipa	;	kv_Adlm_AC_fonipa
+kon_Adlm_AC_fonipa	;	kg_Adlm_AC_fonipa
+kor_Adlm_AC_fonipa	;	ko_Adlm_AC_fonipa
+kpv_Adlm_AC_fonipa	;	kv_Adlm_AC_fonipa
+krm_Adlm_AC_fonipa	;	bmf_Adlm_AC_fonipa
+ktr_Adlm_AC_fonipa	;	dtp_Adlm_AC_fonipa
+kua_Adlm_AC_fonipa	;	kj_Adlm_AC_fonipa
+kur_Adlm_AC_fonipa	;	ku_Adlm_AC_fonipa
+kvs_Adlm_AC_fonipa	;	gdj_Adlm_AC_fonipa
+kwq_Adlm_AC_fonipa	;	yam_Adlm_AC_fonipa
+kxe_Adlm_AC_fonipa	;	tvd_Adlm_AC_fonipa
+kzj_Adlm_AC_fonipa	;	dtp_Adlm_AC_fonipa
+kzt_Adlm_AC_fonipa	;	dtp_Adlm_AC_fonipa
+lao_Adlm_AC_fonipa	;	lo_Adlm_AC_fonipa
+lat_Adlm_AC_fonipa	;	la_Adlm_AC_fonipa
+lav_Adlm_AC_fonipa	;	lv_Adlm_AC_fonipa
+lbk_Adlm_AC_fonipa	;	bnc_Adlm_AC_fonipa
+lii_Adlm_AC_fonipa	;	raq_Adlm_AC_fonipa
+lim_Adlm_AC_fonipa	;	li_Adlm_AC_fonipa
+lin_Adlm_AC_fonipa	;	ln_Adlm_AC_fonipa
+lit_Adlm_AC_fonipa	;	lt_Adlm_AC_fonipa
+llo_Adlm_AC_fonipa	;	ngt_Adlm_AC_fonipa
+lmm_Adlm_AC_fonipa	;	rmx_Adlm_AC_fonipa
+ltz_Adlm_AC_fonipa	;	lb_Adlm_AC_fonipa
+lub_Adlm_AC_fonipa	;	lu_Adlm_AC_fonipa
+lug_Adlm_AC_fonipa	;	lg_Adlm_AC_fonipa
+lvs_Adlm_AC_fonipa	;	lv_Adlm_AC_fonipa
+mac_Adlm_AC_fonipa	;	mk_Adlm_AC_fonipa
+mah_Adlm_AC_fonipa	;	mh_Adlm_AC_fonipa
+mal_Adlm_AC_fonipa	;	ml_Adlm_AC_fonipa
+mao_Adlm_AC_fonipa	;	mi_Adlm_AC_fonipa
+mar_Adlm_AC_fonipa	;	mr_Adlm_AC_fonipa
+may_Adlm_AC_fonipa	;	ms_Adlm_AC_fonipa
+meg_Adlm_AC_fonipa	;	cir_Adlm_AC_fonipa
+mhr_Adlm_AC_fonipa	;	chm_Adlm_AC_fonipa
+mkd_Adlm_AC_fonipa	;	mk_Adlm_AC_fonipa
+mlg_Adlm_AC_fonipa	;	mg_Adlm_AC_fonipa
+mlt_Adlm_AC_fonipa	;	mt_Adlm_AC_fonipa
+mnk_Adlm_AC_fonipa	;	man_Adlm_AC_fonipa
+mo_Adlm_AC_fonipa	;	ro_Adlm_AC_fonipa
+mol_Adlm_AC_fonipa	;	ro_Adlm_AC_fonipa
+mon_Adlm_AC_fonipa	;	mn_Adlm_AC_fonipa
+mri_Adlm_AC_fonipa	;	mi_Adlm_AC_fonipa
+msa_Adlm_AC_fonipa	;	ms_Adlm_AC_fonipa
+mst_Adlm_AC_fonipa	;	mry_Adlm_AC_fonipa
+mup_Adlm_AC_fonipa	;	raj_Adlm_AC_fonipa
+mwj_Adlm_AC_fonipa	;	vaj_Adlm_AC_fonipa
+mya_Adlm_AC_fonipa	;	my_Adlm_AC_fonipa
+myd_Adlm_AC_fonipa	;	aog_Adlm_AC_fonipa
+myt_Adlm_AC_fonipa	;	mry_Adlm_AC_fonipa
+nad_Adlm_AC_fonipa	;	xny_Adlm_AC_fonipa
+nau_Adlm_AC_fonipa	;	na_Adlm_AC_fonipa
+nav_Adlm_AC_fonipa	;	nv_Adlm_AC_fonipa
+nbl_Adlm_AC_fonipa	;	nr_Adlm_AC_fonipa
+ncp_Adlm_AC_fonipa	;	kdz_Adlm_AC_fonipa
+nde_Adlm_AC_fonipa	;	nd_Adlm_AC_fonipa
+ndo_Adlm_AC_fonipa	;	ng_Adlm_AC_fonipa
+nep_Adlm_AC_fonipa	;	ne_Adlm_AC_fonipa
+nld_Adlm_AC_fonipa	;	nl_Adlm_AC_fonipa
+nno_Adlm_AC_fonipa	;	nn_Adlm_AC_fonipa
+nns_Adlm_AC_fonipa	;	nbr_Adlm_AC_fonipa
+nnx_Adlm_AC_fonipa	;	ngv_Adlm_AC_fonipa
+no_Adlm_AC_bokmal_fonipa	;	nb_Adlm_AC_fonipa
+no_Adlm_AC_bokmal_fonipa_nynorsk	;	nb_Adlm_AC_fonipa
+no_Adlm_AC_fonipa	;	nb_Adlm_AC_fonipa
+no_Adlm_AC_fonipa_nynorsk	;	nn_Adlm_AC_fonipa
+nob_Adlm_AC_fonipa	;	nb_Adlm_AC_fonipa
+nor_Adlm_AC_fonipa	;	nb_Adlm_AC_fonipa
+npi_Adlm_AC_fonipa	;	ne_Adlm_AC_fonipa
+nts_Adlm_AC_fonipa	;	pij_Adlm_AC_fonipa
+nya_Adlm_AC_fonipa	;	ny_Adlm_AC_fonipa
+oci_Adlm_AC_fonipa	;	oc_Adlm_AC_fonipa
+ojg_Adlm_AC_fonipa	;	oj_Adlm_AC_fonipa
+oji_Adlm_AC_fonipa	;	oj_Adlm_AC_fonipa
+ori_Adlm_AC_fonipa	;	or_Adlm_AC_fonipa
+orm_Adlm_AC_fonipa	;	om_Adlm_AC_fonipa
+ory_Adlm_AC_fonipa	;	or_Adlm_AC_fonipa
+oss_Adlm_AC_fonipa	;	os_Adlm_AC_fonipa
+oun_Adlm_AC_fonipa	;	vaj_Adlm_AC_fonipa
+pan_Adlm_AC_fonipa	;	pa_Adlm_AC_fonipa
+pbu_Adlm_AC_fonipa	;	ps_Adlm_AC_fonipa
+pcr_Adlm_AC_fonipa	;	adx_Adlm_AC_fonipa
+per_Adlm_AC_fonipa	;	fa_Adlm_AC_fonipa
+pes_Adlm_AC_fonipa	;	fa_Adlm_AC_fonipa
+pli_Adlm_AC_fonipa	;	pi_Adlm_AC_fonipa
+plt_Adlm_AC_fonipa	;	mg_Adlm_AC_fonipa
+pmc_Adlm_AC_fonipa	;	huw_Adlm_AC_fonipa
+pmu_Adlm_AC_fonipa	;	phr_Adlm_AC_fonipa
+pnb_Adlm_AC_fonipa	;	lah_Adlm_AC_fonipa
+pol_Adlm_AC_fonipa	;	pl_Adlm_AC_fonipa
+por_Adlm_AC_fonipa	;	pt_Adlm_AC_fonipa
+ppa_Adlm_AC_fonipa	;	bfy_Adlm_AC_fonipa
+ppr_Adlm_AC_fonipa	;	lcq_Adlm_AC_fonipa
+prs_Adlm_AC_fonipa	;	fa_Adlm_AC_fonipa
+pry_Adlm_AC_fonipa	;	prt_Adlm_AC_fonipa
+pus_Adlm_AC_fonipa	;	ps_Adlm_AC_fonipa
+puz_Adlm_AC_fonipa	;	pub_Adlm_AC_fonipa
+que_Adlm_AC_fonipa	;	qu_Adlm_AC_fonipa
+quz_Adlm_AC_fonipa	;	qu_Adlm_AC_fonipa
+rmy_Adlm_AC_fonipa	;	rom_Adlm_AC_fonipa
+roh_Adlm_AC_fonipa	;	rm_Adlm_AC_fonipa
+ron_Adlm_AC_fonipa	;	ro_Adlm_AC_fonipa
+rum_Adlm_AC_fonipa	;	ro_Adlm_AC_fonipa
+run_Adlm_AC_fonipa	;	rn_Adlm_AC_fonipa
+rus_Adlm_AC_fonipa	;	ru_Adlm_AC_fonipa
+sag_Adlm_AC_fonipa	;	sg_Adlm_AC_fonipa
+san_Adlm_AC_fonipa	;	sa_Adlm_AC_fonipa
+sca_Adlm_AC_fonipa	;	hle_Adlm_AC_fonipa
+scc_Adlm_AC_fonipa	;	sr_Adlm_AC_fonipa
+scr_Adlm_AC_fonipa	;	hr_Adlm_AC_fonipa
+sgn_Adlm_076_fonipa	;	bzs_Adlm_fonipa
+sgn_Adlm_170_fonipa	;	csn_Adlm_fonipa
+sgn_Adlm_208_fonipa	;	dsl_Adlm_fonipa
+sgn_Adlm_249_fonipa	;	fsl_Adlm_fonipa
+sgn_Adlm_250_fonipa	;	fsl_Adlm_fonipa
+sgn_Adlm_276_fonipa	;	gsg_Adlm_fonipa
+sgn_Adlm_278_fonipa	;	gsg_Adlm_fonipa
+sgn_Adlm_280_fonipa	;	gsg_Adlm_fonipa
+sgn_Adlm_300_fonipa	;	gss_Adlm_fonipa
+sgn_Adlm_372_fonipa	;	isg_Adlm_fonipa
+sgn_Adlm_380_fonipa	;	ise_Adlm_fonipa
+sgn_Adlm_392_fonipa	;	jsl_Adlm_fonipa
+sgn_Adlm_484_fonipa	;	mfs_Adlm_fonipa
+sgn_Adlm_528_fonipa	;	dse_Adlm_fonipa
+sgn_Adlm_558_fonipa	;	ncs_Adlm_fonipa
+sgn_Adlm_578_fonipa	;	nsi_Adlm_fonipa
+sgn_Adlm_620_fonipa	;	psr_Adlm_fonipa
+sgn_Adlm_710_fonipa	;	sfs_Adlm_fonipa
+sgn_Adlm_752_fonipa	;	swl_Adlm_fonipa
+sgn_Adlm_826_fonipa	;	bfi_Adlm_fonipa
+sgn_Adlm_840_fonipa	;	ase_Adlm_fonipa
+sgn_Adlm_BR_fonipa	;	bzs_Adlm_fonipa
+sgn_Adlm_CO_fonipa	;	csn_Adlm_fonipa
+sgn_Adlm_DD_fonipa	;	gsg_Adlm_fonipa
+sgn_Adlm_DE_fonipa	;	gsg_Adlm_fonipa
+sgn_Adlm_DK_fonipa	;	dsl_Adlm_fonipa
+sgn_Adlm_FR_fonipa	;	fsl_Adlm_fonipa
+sgn_Adlm_FX_fonipa	;	fsl_Adlm_fonipa
+sgn_Adlm_GB_fonipa	;	bfi_Adlm_fonipa
+sgn_Adlm_GR_fonipa	;	gss_Adlm_fonipa
+sgn_Adlm_IE_fonipa	;	isg_Adlm_fonipa
+sgn_Adlm_IT_fonipa	;	ise_Adlm_fonipa
+sgn_Adlm_JP_fonipa	;	jsl_Adlm_fonipa
+sgn_Adlm_MX_fonipa	;	mfs_Adlm_fonipa
+sgn_Adlm_NI_fonipa	;	ncs_Adlm_fonipa
+sgn_Adlm_NL_fonipa	;	dse_Adlm_fonipa
+sgn_Adlm_NO_fonipa	;	nsi_Adlm_fonipa
+sgn_Adlm_PT_fonipa	;	psr_Adlm_fonipa
+sgn_Adlm_SE_fonipa	;	swl_Adlm_fonipa
+sgn_Adlm_UK_fonipa	;	bfi_Adlm_fonipa
+sgn_Adlm_US_fonipa	;	ase_Adlm_fonipa
+sgn_Adlm_ZA_fonipa	;	sfs_Adlm_fonipa
+sh_Adlm_AC_fonipa	;	sr_Adlm_AC_fonipa
+sin_Adlm_AC_fonipa	;	si_Adlm_AC_fonipa
+skk_Adlm_AC_fonipa	;	oyb_Adlm_AC_fonipa
+slk_Adlm_AC_fonipa	;	sk_Adlm_AC_fonipa
+slo_Adlm_AC_fonipa	;	sk_Adlm_AC_fonipa
+slv_Adlm_AC_fonipa	;	sl_Adlm_AC_fonipa
+sme_Adlm_AC_fonipa	;	se_Adlm_AC_fonipa
+smo_Adlm_AC_fonipa	;	sm_Adlm_AC_fonipa
+sna_Adlm_AC_fonipa	;	sn_Adlm_AC_fonipa
+snd_Adlm_AC_fonipa	;	sd_Adlm_AC_fonipa
+som_Adlm_AC_fonipa	;	so_Adlm_AC_fonipa
+sot_Adlm_AC_fonipa	;	st_Adlm_AC_fonipa
+spa_Adlm_AC_fonipa	;	es_Adlm_AC_fonipa
+spy_Adlm_AC_fonipa	;	kln_Adlm_AC_fonipa
+sqi_Adlm_AC_fonipa	;	sq_Adlm_AC_fonipa
+src_Adlm_AC_fonipa	;	sc_Adlm_AC_fonipa
+srd_Adlm_AC_fonipa	;	sc_Adlm_AC_fonipa
+srp_Adlm_AC_fonipa	;	sr_Adlm_AC_fonipa
+ssw_Adlm_AC_fonipa	;	ss_Adlm_AC_fonipa
+sun_Adlm_AC_fonipa	;	su_Adlm_AC_fonipa
+swa_Adlm_AC_fonipa	;	sw_Adlm_AC_fonipa
+swc_Adlm_AC_fonipa	;	sw_Adlm_AC_fonipa
+swe_Adlm_AC_fonipa	;	sv_Adlm_AC_fonipa
+swh_Adlm_AC_fonipa	;	sw_Adlm_AC_fonipa
+tah_Adlm_AC_fonipa	;	ty_Adlm_AC_fonipa
+tam_Adlm_AC_fonipa	;	ta_Adlm_AC_fonipa
+tat_Adlm_AC_fonipa	;	tt_Adlm_AC_fonipa
+tdu_Adlm_AC_fonipa	;	dtp_Adlm_AC_fonipa
+tel_Adlm_AC_fonipa	;	te_Adlm_AC_fonipa
+tgk_Adlm_AC_fonipa	;	tg_Adlm_AC_fonipa
+tgl_Adlm_AC_fonipa	;	fil_Adlm_AC_fonipa
+tha_Adlm_AC_fonipa	;	th_Adlm_AC_fonipa
+thc_Adlm_AC_fonipa	;	tpo_Adlm_AC_fonipa
+thx_Adlm_AC_fonipa	;	oyb_Adlm_AC_fonipa
+tib_Adlm_AC_fonipa	;	bo_Adlm_AC_fonipa
+tie_Adlm_AC_fonipa	;	ras_Adlm_AC_fonipa
+tir_Adlm_AC_fonipa	;	ti_Adlm_AC_fonipa
+tkk_Adlm_AC_fonipa	;	twm_Adlm_AC_fonipa
+tl_Adlm_AC_fonipa	;	fil_Adlm_AC_fonipa
+tlw_Adlm_AC_fonipa	;	weo_Adlm_AC_fonipa
+tmp_Adlm_AC_fonipa	;	tyj_Adlm_AC_fonipa
+tne_Adlm_AC_fonipa	;	kak_Adlm_AC_fonipa
+tnf_Adlm_AC_fonipa	;	fa_Adlm_AC_fonipa
+ton_Adlm_AC_fonipa	;	to_Adlm_AC_fonipa
+tsf_Adlm_AC_fonipa	;	taj_Adlm_AC_fonipa
+tsn_Adlm_AC_fonipa	;	tn_Adlm_AC_fonipa
+tso_Adlm_AC_fonipa	;	ts_Adlm_AC_fonipa
+ttq_Adlm_AC_fonipa	;	tmh_Adlm_AC_fonipa
+tuk_Adlm_AC_fonipa	;	tk_Adlm_AC_fonipa
+tur_Adlm_AC_fonipa	;	tr_Adlm_AC_fonipa
+tw_Adlm_AC_fonipa	;	ak_Adlm_AC_fonipa
+twi_Adlm_AC_fonipa	;	ak_Adlm_AC_fonipa
+uig_Adlm_AC_fonipa	;	ug_Adlm_AC_fonipa
+ukr_Adlm_AC_fonipa	;	uk_Adlm_AC_fonipa
+umu_Adlm_AC_fonipa	;	del_Adlm_AC_fonipa
+uok_Adlm_AC_fonipa	;	ema_Adlm_AC_fonipa
+urd_Adlm_AC_fonipa	;	ur_Adlm_AC_fonipa
+uzb_Adlm_AC_fonipa	;	uz_Adlm_AC_fonipa
+uzn_Adlm_AC_fonipa	;	uz_Adlm_AC_fonipa
+ven_Adlm_AC_fonipa	;	ve_Adlm_AC_fonipa
+vie_Adlm_AC_fonipa	;	vi_Adlm_AC_fonipa
+vol_Adlm_AC_fonipa	;	vo_Adlm_AC_fonipa
+wel_Adlm_AC_fonipa	;	cy_Adlm_AC_fonipa
+wln_Adlm_AC_fonipa	;	wa_Adlm_AC_fonipa
+wol_Adlm_AC_fonipa	;	wo_Adlm_AC_fonipa
+xba_Adlm_AC_fonipa	;	cax_Adlm_AC_fonipa
+xho_Adlm_AC_fonipa	;	xh_Adlm_AC_fonipa
+xia_Adlm_AC_fonipa	;	acn_Adlm_AC_fonipa
+xkh_Adlm_AC_fonipa	;	waw_Adlm_AC_fonipa
+xpe_Adlm_AC_fonipa	;	kpe_Adlm_AC_fonipa
+xsj_Adlm_AC_fonipa	;	suj_Adlm_AC_fonipa
+xsl_Adlm_AC_fonipa	;	den_Adlm_AC_fonipa
+ybd_Adlm_AC_fonipa	;	rki_Adlm_AC_fonipa
+ydd_Adlm_AC_fonipa	;	yi_Adlm_AC_fonipa
+yid_Adlm_AC_fonipa	;	yi_Adlm_AC_fonipa
+yma_Adlm_AC_fonipa	;	lrr_Adlm_AC_fonipa
+ymt_Adlm_AC_fonipa	;	mtm_Adlm_AC_fonipa
+yor_Adlm_AC_fonipa	;	yo_Adlm_AC_fonipa
+yos_Adlm_AC_fonipa	;	zom_Adlm_AC_fonipa
+yuu_Adlm_AC_fonipa	;	yug_Adlm_AC_fonipa
+zai_Adlm_AC_fonipa	;	zap_Adlm_AC_fonipa
+zh_Adlm_AC_fonipa_guoyu	;	zh_Adlm_AC_fonipa
+zh_Adlm_AC_fonipa_guoyu_hakka_xiang	;	hak_Adlm_AC_fonipa
+zh_Adlm_AC_fonipa_hakka	;	hak_Adlm_AC_fonipa
+zh_Adlm_AC_fonipa_hakka_xiang	;	hak_Adlm_AC_fonipa
+zh_Adlm_AC_fonipa_xiang	;	hsn_Adlm_AC_fonipa
+zha_Adlm_AC_fonipa	;	za_Adlm_AC_fonipa
+zho_Adlm_AC_fonipa	;	zh_Adlm_AC_fonipa
+zho_Adlm_AC_fonipa_guoyu	;	zh_Adlm_AC_fonipa
+zho_Adlm_AC_fonipa_guoyu_hakka_xiang	;	hak_Adlm_AC_fonipa
+zho_Adlm_AC_fonipa_hakka	;	hak_Adlm_AC_fonipa
+zho_Adlm_AC_fonipa_hakka_xiang	;	hak_Adlm_AC_fonipa
+zho_Adlm_AC_fonipa_xiang	;	hsn_Adlm_AC_fonipa
+zsm_Adlm_AC_fonipa	;	ms_Adlm_AC_fonipa
+zul_Adlm_AC_fonipa	;	zu_Adlm_AC_fonipa
+zyb_Adlm_AC_fonipa	;	za_Adlm_AC_fonipa
diff --git a/android_icu4j/src/main/tests/android/icu/dev/impl/number/DecimalQuantity_64BitBCD.java b/android_icu4j/src/main/tests/android/icu/dev/impl/number/DecimalQuantity_64BitBCD.java
index 4d35af8..24a3b06 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/impl/number/DecimalQuantity_64BitBCD.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/impl/number/DecimalQuantity_64BitBCD.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.impl.number;
 
 import java.math.BigDecimal;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/impl/number/DecimalQuantity_ByteArrayBCD.java b/android_icu4j/src/main/tests/android/icu/dev/impl/number/DecimalQuantity_ByteArrayBCD.java
index 7e281cb..b560b01 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/impl/number/DecimalQuantity_ByteArrayBCD.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/impl/number/DecimalQuantity_ByteArrayBCD.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.impl.number;
 
 import java.math.BigDecimal;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/impl/number/DecimalQuantity_SimpleStorage.java b/android_icu4j/src/main/tests/android/icu/dev/impl/number/DecimalQuantity_SimpleStorage.java
index 394a2b2..ed8bb8e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/impl/number/DecimalQuantity_SimpleStorage.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/impl/number/DecimalQuantity_SimpleStorage.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.impl.number;
 
 import java.math.BigDecimal;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/AbstractTestLog.java b/android_icu4j/src/main/tests/android/icu/dev/test/AbstractTestLog.java
index ebc70d1..158c2f3 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/AbstractTestLog.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/AbstractTestLog.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2003-2011, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/ModuleTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/ModuleTest.java
index 8478a88..2ed22b7 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/ModuleTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/ModuleTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2007, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/ResourceModule.java b/android_icu4j/src/main/tests/android/icu/dev/test/ResourceModule.java
index e0a69f6..447169f 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/ResourceModule.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/ResourceModule.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2006-2016, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/TestBoilerplate.java b/android_icu4j/src/main/tests/android/icu/dev/test/TestBoilerplate.java
index 7aac48b..e058677 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/TestBoilerplate.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/TestBoilerplate.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2016, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/TestDataModule.java b/android_icu4j/src/main/tests/android/icu/dev/test/TestDataModule.java
index a1baa37..c22e54f 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/TestDataModule.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/TestDataModule.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2009, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/TestFmwk.java b/android_icu4j/src/main/tests/android/icu/dev/test/TestFmwk.java
index 9834bad..f04cf56 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/TestFmwk.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/TestFmwk.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/TestLocaleNamePackaging.java b/android_icu4j/src/main/tests/android/icu/dev/test/TestLocaleNamePackaging.java
index bb3cf1f..cfaed38 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/TestLocaleNamePackaging.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/TestLocaleNamePackaging.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/TestLog.java b/android_icu4j/src/main/tests/android/icu/dev/test/TestLog.java
index bab77f2..d3536ed 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/TestLog.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/TestLog.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2000-2004, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/TestUtil.java b/android_icu4j/src/main/tests/android/icu/dev/test/TestUtil.java
index dff51af..2b0a62c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/TestUtil.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/TestUtil.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/UTF16Util.java b/android_icu4j/src/main/tests/android/icu/dev/test/UTF16Util.java
index eb09f7d..a316aca 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/UTF16Util.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/UTF16Util.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2002-2004, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/BiDiConformanceTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/BiDiConformanceTest.java
index 37c4eea..7bbf505 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/BiDiConformanceTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/BiDiConformanceTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2010-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/BidiFmwk.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/BidiFmwk.java
index b6f1e73..e65d221 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/BidiFmwk.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/BidiFmwk.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2013, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestBidi.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestBidi.java
index dda7e77..bd39714 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestBidi.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestBidi.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2007-2013, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestBidiTransform.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestBidiTransform.java
index ae617c9..a22dded 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestBidiTransform.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestBidiTransform.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 package android.icu.dev.test.bidi;
 
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestCharFromDirProp.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestCharFromDirProp.java
index 78aeba2..10f0c77 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestCharFromDirProp.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestCharFromDirProp.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2007-2010, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestClassOverride.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestClassOverride.java
index 890e32b..bc74ba6 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestClassOverride.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestClassOverride.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2007-2013, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestCompatibility.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestCompatibility.java
index d764424..1256327 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestCompatibility.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestCompatibility.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2007-2010, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestContext.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestContext.java
index ceb438c..ebc9907 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestContext.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestContext.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2007-2011, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestData.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestData.java
index c444dc7..4932ac4 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestData.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestData.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2013, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestFailureRecovery.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestFailureRecovery.java
index 2180358..692c047 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestFailureRecovery.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestFailureRecovery.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2007-2013, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestInverse.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestInverse.java
index a872deb..6e5f820 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestInverse.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestInverse.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2013, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestMultipleParagraphs.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestMultipleParagraphs.java
index 12d555f..e9340d6 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestMultipleParagraphs.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestMultipleParagraphs.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2008-2010, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestReorder.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestReorder.java
index bb8f79a..b371365 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestReorder.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestReorder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2013, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestReorderArabicMathSymbols.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestReorderArabicMathSymbols.java
index 622839f..74e089e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestReorderArabicMathSymbols.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestReorderArabicMathSymbols.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestReorderRunsOnly.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestReorderRunsOnly.java
index cc774af..fad03a4 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestReorderRunsOnly.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestReorderRunsOnly.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2007, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestReorderingMode.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestReorderingMode.java
index d70c9c4..646b0ac 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestReorderingMode.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestReorderingMode.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2010, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestStreaming.java b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestStreaming.java
index cf7bb25..7eed267 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestStreaming.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bidi/TestStreaming.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2013, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/bigdec/DiagBigDecimalTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/bigdec/DiagBigDecimalTest.java
index 664b1fb..f4bf7f4 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/bigdec/DiagBigDecimalTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/bigdec/DiagBigDecimalTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/AstroTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/AstroTest.java
index 827a151..86179c0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/AstroTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/AstroTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CalendarRegressionTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CalendarRegressionTest.java
index 7e4cdd6..1996c2a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CalendarRegressionTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CalendarRegressionTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2000-2016, International Business Machines Corporation and    *
@@ -2562,5 +2562,69 @@
             errln("Fail: Expected year=" + year + ", actual=" + resultYear);
         }
     }
+
+    @Test
+    public void TestTimeZoneInLocale20465() {
+        String TESTS[][] = {
+            { "en-u-tz-usden",                     "America/Denver",             "gregorian" },
+            { "es-u-tz-usden",                     "America/Denver",             "gregorian" },
+            { "ms-u-tz-mykul",                     "Asia/Kuala_Lumpur",          "gregorian" },
+            { "zh-u-tz-mykul",                     "Asia/Kuala_Lumpur",          "gregorian" },
+            { "fr-u-ca-buddhist-tz-phmnl",         "Asia/Manila",                "buddhist" },
+            { "th-u-ca-chinese-tz-gblon",          "Europe/London",              "chinese" },
+            { "de-u-ca-coptic-tz-ciabj",           "Africa/Abidjan",             "coptic" },
+            { "ja-u-ca-dangi-tz-hkhkg",            "Asia/Hong_Kong",             "dangi" },
+            { "da-u-ca-ethioaa-tz-ruunera",        "Asia/Ust-Nera",              "ethiopic-amete-alem" },
+            { "ko-u-ca-ethiopic-tz-cvrai",         "Atlantic/Cape_Verde",        "ethiopic" },
+            { "fil-u-ca-gregory-tz-aubne",         "Australia/Brisbane",         "gregorian" },
+            { "fa-u-ca-hebrew-tz-brrbr",           "America/Rio_Branco",         "hebrew" },
+            { "gr-u-ca-indian-tz-lccas",           "America/St_Lucia",           "indian" },
+            { "or-u-ca-islamic-tz-cayyn",          "America/Swift_Current",      "islamic" },
+            { "my-u-ca-islamic-umalqura-tz-kzala", "Asia/Almaty",                "islamic-umalqura" },
+            { "lo-u-ca-islamic-tbla-tz-bmbda",     "Atlantic/Bermuda",           "islamic-tbla" },
+            { "km-u-ca-islamic-civil-tz-aqplm",    "Antarctica/Palmer",          "islamic-civil" },
+            { "kk-u-ca-islamic-rgsa-tz-usanc",     "America/Anchorage",          "islamic" },
+            { "ar-u-ca-iso8601-tz-bjptn",          "Africa/Porto-Novo",          "gregorian" },
+            { "he-u-ca-japanese-tz-tzdar",         "Africa/Dar_es_Salaam",       "japanese" },
+            { "bs-u-ca-persian-tz-etadd",          "Africa/Addis_Ababa",         "persian" },
+            { "it-u-ca-roc-tz-aruaq",              "America/Argentina/San_Juan", "roc" },
+        };
+        TimeZone other = TimeZone.getTimeZone("America/Louisville");
+        for (int i = 0; i < TESTS.length; ++i) {
+            ULocale ulocale = new ULocale(TESTS[i][0]);
+            Locale locale = new Locale(TESTS[i][0]);
+            Calendar cal = Calendar.getInstance(locale);
+            assertEquals(
+                "TimeZone from Calendar.getInstance(Locale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][1], cal.getTimeZone().getID());
+            assertEquals(
+                "Calendar from Calendar.getInstance(Locale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], cal.getType());
+
+            cal = Calendar.getInstance(ulocale);
+            assertEquals(
+                "TimeZone from Calendar.getInstance(ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][1], cal.getTimeZone().getID());
+            assertEquals(
+                "Calendar from Calendar.getInstance(ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], cal.getType());
+
+            cal = Calendar.getInstance(other, locale);
+            assertEquals(
+                "TimeZone from Calendar.getInstance(TimeZone zone=\"uslui\", Locale loc=\"" + TESTS[i][0] + "\")",
+                         other.getID(), cal.getTimeZone().getID());
+            assertEquals(
+                "Calendar from Calendar.getInstance(TimeZone zone=\"uslui\", Locale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], cal.getType());
+
+            cal = Calendar.getInstance(other, ulocale);
+            assertEquals(
+                "TimeZone from Calendar.getInstance(TimeZone zone=\"uslui\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         other.getID(), cal.getTimeZone().getID());
+            assertEquals(
+                "Calendar from Calendar.getInstance(TimeZone zone=\"uslui\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], cal.getType());
+        }
+    }
 }
 //eof
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CalendarTestFmwk.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CalendarTestFmwk.java
index 1a3865f..d1f69f0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CalendarTestFmwk.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CalendarTestFmwk.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/ChineseTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/ChineseTest.java
index 6a6b632..b39ca0f 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/ChineseTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/ChineseTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*********************************************************************
  * Copyright (C) 2000-2016, International Business Machines Corporation and
  * others. All Rights Reserved.
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/ChineseTestCase.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/ChineseTestCase.java
index 31e22f5..e13288d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/ChineseTestCase.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/ChineseTestCase.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CompatibilityTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CompatibilityTest.java
index 9fb8ad0..d0fe5d2 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CompatibilityTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CompatibilityTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2000-2009,2011 International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CopticTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CopticTest.java
index 8904d5d..ad5abe4 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CopticTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/CopticTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/DangiTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/DangiTest.java
index 63b5952..ce6ec33 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/DangiTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/DangiTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/DataDrivenCalendarTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/DataDrivenCalendarTest.java
index 056dec1..2e0915d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/DataDrivenCalendarTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/DataDrivenCalendarTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2013, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/EraRulesTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/EraRulesTest.java
index d417722..5ddf282 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/EraRulesTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/EraRulesTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.calendar;
 
 import org.junit.Test;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/EthiopicTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/EthiopicTest.java
index 677e25c..7a36cf1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/EthiopicTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/EthiopicTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/HebrewTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/HebrewTest.java
index b467041..c7c87e5 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/HebrewTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/HebrewTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2013, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/HolidayTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/HolidayTest.java
index fff81a0..82a3fee 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/HolidayTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/HolidayTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/IBMCalendarTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/IBMCalendarTest.java
index fb7287a..35b7ae1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/IBMCalendarTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/IBMCalendarTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2016, International Business Machines Corporation and
@@ -29,6 +29,9 @@
 import android.icu.util.Calendar;
 import android.icu.util.ChineseCalendar;
 import android.icu.util.GregorianCalendar;
+import android.icu.util.HebrewCalendar;
+import android.icu.util.IndianCalendar;
+import android.icu.util.IslamicCalendar;
 import android.icu.util.JapaneseCalendar;
 import android.icu.util.TaiwanCalendar;
 import android.icu.util.TimeZone;
@@ -2020,4 +2023,221 @@
         StubSimpleDateFormat stub = new StubSimpleDateFormat("EEE MMM dd yyyy G HH:mm:ss.SSS", Locale.US);
         stub.run();
     }
+
+    @Test
+    public void TestConsistencyGregorian() {
+        checkConsistency("en@calendar=gregorian");
+    }
+
+    @Test
+    public void TestConsistencyIndian() {
+        checkConsistency("en@calendar=indian");
+    }
+
+    @Test
+    public void TestConsistencyHebrew() {
+        checkConsistency("en@calendar=hebrew");
+    }
+
+    @Test
+    public void TestConsistencyIslamic() {
+        checkConsistency("en@calendar=islamic");
+    }
+
+    @Test
+    public void TestConsistencyIslamicRGSA() {
+        checkConsistency("en@calendar=islamic-rgsa");
+    }
+
+    @Test
+    public void TestConsistencyIslamicTBLA() {
+        checkConsistency("en@calendar=islamic-tbla");
+    }
+
+    @Test
+    public void TestConsistencyIslamicUmalqura() {
+        checkConsistency("en@calendar=islamic-umalqura");
+    }
+
+    @Test
+    public void TestConsistencyIslamicCivil() {
+        checkConsistency("en@calendar=islamic-civil");
+    }
+
+    @Test
+    public void TestConsistencyCoptic() {
+        checkConsistency("en@calendar=coptic");
+    }
+
+    @Test
+    public void TestConsistencyEthiopic() {
+        checkConsistency("en@calendar=ethiopic");
+    }
+
+    @Test
+    public void TestConsistencyROC() {
+        checkConsistency("en@calendar=roc");
+    }
+
+    @Test
+    public void TestConsistencyChinese() {
+        checkConsistency("en@calendar=chinese");
+    }
+
+    @Test
+    public void TestConsistencyDangi() {
+        checkConsistency("en@calendar=dangi");
+    }
+
+    @Test
+    public void TestConsistencyPersian() {
+        checkConsistency("en@calendar=persian");
+    }
+
+    @Test
+    public void TestConsistencyBuddhist() {
+        checkConsistency("en@calendar=buddhist");
+    }
+
+    @Test
+    public void TestConsistencyJapanese() {
+        checkConsistency("en@calendar=japanese");
+    }
+
+    @Test
+    public void TestConsistencyEthiopicAmeteAlem() {
+        checkConsistency("en@calendar=ethiopic-amete-alem");
+    }
+
+    public void checkConsistency(String locale) {
+        boolean quick = getExhaustiveness() <= 5;
+        // Check 3 years in quick mode and 8000 years in exhaustive mode.
+        int numOfDaysToTest = (quick ? 3 * 365 : 8000 * 365);
+        int msInADay = 1000*60*60*24;
+
+        // g is just for debugging messages.
+        Calendar g = new GregorianCalendar(TimeZone.GMT_ZONE, ULocale.ENGLISH);
+        Calendar base = Calendar.getInstance(TimeZone.GMT_ZONE, new ULocale(locale));
+        Date test = Calendar.getInstance().getTime();
+
+        Calendar r = (Calendar)base.clone();
+        int lastDay = 1;
+        for (int j = 0; j < numOfDaysToTest; j++, test.setTime(test.getTime() - msInADay)) {
+            g.setTime(test);
+            base.clear();
+            base.setTime(test);
+            // First, we verify the date from base is decrease one day from the
+            // last day unless the last day is 1.
+            int cday = base.get(Calendar.DAY_OF_MONTH);
+            if (lastDay == 1) {
+                lastDay = cday;
+            } else {
+                if (cday != lastDay-1) {
+                    // Ignore if it is the last day before Gregorian Calendar switch on
+                    // 1582 Oct 4
+                    if (    g.get(Calendar.YEAR) == 1582 && (g.get(Calendar.MONTH) + 1) == 10 &&
+                            g.get(Calendar.DAY_OF_MONTH) == 4) {
+                        lastDay = 5;
+                    } else {
+                        errln("Day is not one less from previous date for Gregorian(e=" +
+                            g.get(Calendar.ERA) + " " + g.get(Calendar.YEAR) + "/" +
+                            (g.get(Calendar.MONTH) + 1) + "/" + g.get(Calendar.DAY_OF_MONTH) +
+                            ") " + locale + "(" +
+                            base.get(Calendar.ERA) + " " + base.get(Calendar.YEAR) + "/" +
+                            (base.get(Calendar.MONTH) + 1 ) + "/" + base.get(Calendar.DAY_OF_MONTH) +
+                            ")");
+                    }
+                }
+                lastDay--;
+            }
+            // Second, we verify the month is in reasonale range.
+            int cmonth = base.get(Calendar.MONTH);
+            if (cmonth < 0 || cmonth > 13) {
+                errln("Month is out of range Gregorian(e=" + g.get(Calendar.ERA) + " " +
+                    g.get(Calendar.YEAR) + "/" + (g.get(Calendar.MONTH) + 1) + "/" +
+                    g.get(Calendar.DAY_OF_MONTH) + ") " + locale + "(" + base.get(Calendar.ERA) +
+                    " " + base.get(Calendar.YEAR) + "/" + (base.get(Calendar.MONTH) + 1 ) + "/" +
+                    base.get(Calendar.DAY_OF_MONTH) + ")");
+            }
+            // Third, we verify the set function can round trip the time back.
+            r.clear();
+            for (int f = 0; f < base.getFieldCount(); f++) {
+                r.set(f, base.get(f));
+            }
+            Date result = r.getTime();
+            if (!test.equals(result)) {
+                errln("Round trip conversion produces different time from " + test + " to  " +
+                    result + " delta: " + (result.getTime() - test.getTime()) +
+                    " Gregorian(e=" + g.get(Calendar.ERA) + " " + g.get(Calendar.YEAR) + "/" +
+                    (g.get(Calendar.MONTH) + 1) + "/" + g.get(Calendar.DAY_OF_MONTH) + ") ");
+            }
+        }
+    }
+
+    @Test
+    public void TestBug21043Indian() {
+        Calendar cal = new IndianCalendar(ULocale.ENGLISH);
+        Calendar g = new GregorianCalendar(ULocale.ENGLISH);
+        // set to 10 BC
+        g.set(Calendar.ERA, GregorianCalendar.BC);
+        g.set(10, 1, 1);
+        cal.setTime(g.getTime());
+        int m = cal.get(Calendar.MONTH);
+        if (m < 0 || m > 11) {
+            errln("Month (" + m + ") should be between 0 and 11 in India calendar");
+        }
+    }
+
+    @Test
+    public void TestBug21044Hebrew() {
+        Calendar cal = new HebrewCalendar(ULocale.ENGLISH);
+        Calendar g = new GregorianCalendar(ULocale.ENGLISH);
+        // set to 3771/10/27 BC which is before 3760 BC.
+        g.set(Calendar.ERA, GregorianCalendar.BC);
+        g.set(3771, 9, 27);
+        cal.setTime(g.getTime());
+        int y = cal.get(Calendar.YEAR);
+        int m = cal.get(Calendar.MONTH);
+        int d = cal.get(Calendar.DATE);
+        if (y > 0 || m < 0 || m > 12 || d < 0 || d > 32) {
+            errln("Out of rage!\nYear " +  y + " should be " +
+              "negative number before 1AD.\nMonth " + m + " should " +
+              "be between 0 and 12 in Hebrew calendar.\nDate " + d +
+              " should be between 0 and 32 in Islamic calendar.");
+        }
+    }
+
+    @Test
+    public void TestBug21045Islamic() {
+        Calendar cal = new IslamicCalendar(ULocale.ENGLISH);
+        Calendar g = new GregorianCalendar(ULocale.ENGLISH);
+        // set to 500 AD before 622 AD.
+        g.set(Calendar.ERA, GregorianCalendar.AD);
+        g.set(500, 1, 1);
+        cal.setTime(g.getTime());
+        int m = cal.get(Calendar.MONTH);
+        if (m < 0 || m > 11) {
+            errln("Month (" + m + ") should be between 0 and 11 in Islamic calendar");
+        }
+    }
+
+    @Test
+    public void TestBug21046IslamicUmalqura() {
+        IslamicCalendar cal = new IslamicCalendar(ULocale.ENGLISH);
+        cal.setCalculationType(IslamicCalendar.CalculationType.ISLAMIC_UMALQURA);
+        Calendar g = new GregorianCalendar(ULocale.ENGLISH);
+        // set to 195366 BC
+        g.set(Calendar.ERA, GregorianCalendar.BC);
+        g.set(195366, 1, 1);
+        cal.setTime(g.getTime());
+        int y = cal.get(Calendar.YEAR);
+        int m = cal.get(Calendar.MONTH);
+        int d = cal.get(Calendar.DATE);
+        if (y > 0 || m < 0 || m > 11 || d < 0 || d > 32) {
+            errln("Out of rage!\nYear " +  y + " should be " +
+              "negative number before 1AD.\nMonth " + m + " should " +
+              "be between 0 and 11 in Islamic calendar.\nDate " + d +
+              " should be between 0 and 32 in Islamic calendar.");
+        }
+    }
 }
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/IndianTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/IndianTest.java
index 9d96700..c5e2408 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/IndianTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/IndianTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/IslamicTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/IslamicTest.java
index 9bf4633..1f5c307 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/IslamicTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/IslamicTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/JapaneseTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/JapaneseTest.java
index 4180ed4..f318add 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/JapaneseTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/JapaneseTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2010, International Business Machines Corporation and    *
@@ -237,10 +237,10 @@
 
     @Test
     public void TestForceGannenNumbering() {
-        final String jCalShortPattern = "y/M/d"; // Note: just 'y' doesn't work here.
-        final String jCalGannenDate = "1/5/9"; // A date in the above format after the accession date for Heisei [1989-] era (Heisei year 1 Jan 8)
-                                               // or Reiwa [2019-] era (Reiwa year 1 May 1). If before the accession date,
-                                               // the year will be in the previous era.
+//        final String jCalShortPattern = "y/M/d"; // Note: just 'y' doesn't work here.
+//        final String jCalGannenDate = "1/5/9"; // A date in the above format after the accession date for Heisei [1989-] era (Heisei year 1 Jan 8)
+//                                               // or Reiwa [2019-] era (Reiwa year 1 May 1). If before the accession date,
+//                                               // the year will be in the previous era.
         ULocale loc = new ULocale("ja_JP@calendar=japanese");
         Date refDate = new Date(600336000000L); // 1989 Jan 9 Monday = Heisei 1
         final String patText = "Gy年M月d日";
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/PersianTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/PersianTest.java
index 628b871..e770f17 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/PersianTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/PersianTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/TestCase.java b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/TestCase.java
index 0c66fed..5e914df 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/calendar/TestCase.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/calendar/TestCase.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/charsetdet/CharsetDetectionTests.xml b/android_icu4j/src/main/tests/android/icu/dev/test/charsetdet/CharsetDetectionTests.xml
index fc88012..0782fb4 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/charsetdet/CharsetDetectionTests.xml
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/charsetdet/CharsetDetectionTests.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!-- Copyright (C) 2016 and later: Unicode, Inc. and others. -->
-<!-- License & terms of use: http://www.unicode.org/copyright.html#License -->
+<!-- License & terms of use: http://www.unicode.org/copyright.html -->
 <!-- Copyright (c) 2005-2015 IBM Corporation and others. All rights reserved -->
 <!-- See individual test cases for their specific copyright. -->
 
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/charsetdet/TestCharsetDetector.java b/android_icu4j/src/main/tests/android/icu/dev/test/charsetdet/TestCharsetDetector.java
index 24512d5..3605c16 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/charsetdet/TestCharsetDetector.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/charsetdet/TestCharsetDetector.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2005-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/AlphabeticIndexTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/AlphabeticIndexTest.java
index a784b06..0893ef0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/AlphabeticIndexTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/AlphabeticIndexTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and
@@ -87,7 +87,7 @@
             /* Latvian*/    {"lv", "A:B:C:\u010C:D:E:F:G:\u0122:H:I:J:K:\u0136:L:\u013B:M:N:\u0145:O:P:Q:R:S:\u0160:T:U:V:W:X:Z:\u017D"},
             /* Norwegian Bokm\u00E5l*/  {"nb", "A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:\u00C6:\u00D8:\u00C5"},
             /* Dutch*/  {"nl", "A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z"},
-            /* Polish*/ {"pl", "A:\u0104:B:C:\u0106:D:E:\u0118:F:G:H:I:J:K:L:\u0141:M:N:\u0143:O:\u00D3:P:Q:R:S:\u015A:T:U:V:W:X:Y:Z:\u0179:\u017B"},
+            /* Polish*/ {"pl", "A:B:C:\u0106:D:E:F:G:H:I:J:K:L:\u0141:M:N:O:\u00D3:P:Q:R:S:\u015A:T:U:V:W:X:Y:Z:\u0179:\u017B"},
             /* Portuguese*/ {"pt", "A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z"},
             /* Romanian*/   {"ro", "A:\u0102:\u00C2:B:C:D:E:F:G:H:I:\u00CE:J:K:L:M:N:O:P:Q:R:S:\u0218:T:\u021A:U:V:W:X:Y:Z"},
             /* Russian*/    {"ru", "\u0410:\u0411:\u0412:\u0413:\u0414:\u0415:\u0416:\u0417:\u0418:\u0419:\u041A:\u041B:\u041C:\u041D:\u041E:\u041F:\u0420:\u0421:\u0422:\u0423:\u0424:\u0425:\u0426:\u0427:\u0428:\u0429:\u042B:\u042D:\u042E:\u042F"},
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationAPITest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationAPITest.java
index d76066a..c3fdfc7 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationAPITest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationAPITest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationChineseTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationChineseTest.java
index e6c4d99..093e791 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationChineseTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationChineseTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2010, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationCreationMethodTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationCreationMethodTest.java
index 558cf5e..fd76ede 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationCreationMethodTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationCreationMethodTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationCurrencyTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationCurrencyTest.java
index 319837f..4c09c2c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationCurrencyTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationCurrencyTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationDummyTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationDummyTest.java
index 3f3530e..a6292aa 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationDummyTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationDummyTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationEnglishTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationEnglishTest.java
index 97ab78b..f614724 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationEnglishTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationEnglishTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationFinnishTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationFinnishTest.java
index 9a303fe..293e1f5 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationFinnishTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationFinnishTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationFrenchTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationFrenchTest.java
index c9e5cce..181b314 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationFrenchTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationFrenchTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationFrozenMonkeyTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationFrozenMonkeyTest.java
index 9d1fb8b..9203f55 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationFrozenMonkeyTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationFrozenMonkeyTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationGermanTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationGermanTest.java
index 8a9b109..bca5a26 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationGermanTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationGermanTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationIteratorTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationIteratorTest.java
index e1f9911..46485e0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationIteratorTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationIteratorTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationKanaTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationKanaTest.java
index ce852cb..a27077d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationKanaTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationKanaTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationMiscTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationMiscTest.java
index dbcf765..1bcf696 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationMiscTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationMiscTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationMonkeyTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationMonkeyTest.java
index 4c1a01f..c5be05b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationMonkeyTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationMonkeyTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationRegressionTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationRegressionTest.java
index 73cc968..43f70a6 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationRegressionTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationRegressionTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationServiceTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationServiceTest.java
index ee77306..ecd6205 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationServiceTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationServiceTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationSpanishTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationSpanishTest.java
index ffff51d..91eb02e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationSpanishTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationSpanishTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationTest.java
index 9516d70..6f4eaf3 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationThaiTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationThaiTest.java
index 574018e..d98ae3c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationThaiTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationThaiTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationThreadTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationThreadTest.java
index ae63d2f..e3cbdd6 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationThreadTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationThreadTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationTurkishTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationTurkishTest.java
index a548399..e2bd6b9 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationTurkishTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/CollationTurkishTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/Counter.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/Counter.java
index 24de11e..71ce949 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/Counter.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/Counter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/G7CollationTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/G7CollationTest.java
index 2ca8776..7e12b62 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/G7CollationTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/G7CollationTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/LotusCollationKoreanTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/LotusCollationKoreanTest.java
index 121b501..0dfc6e0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/LotusCollationKoreanTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/LotusCollationKoreanTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/collator/UCAConformanceTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/collator/UCAConformanceTest.java
index 21b8a98..f7c7253 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/collator/UCAConformanceTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/collator/UCAConformanceTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2002-2014, International Business Machines Corporation and
  * others. All Rights Reserved.
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/compression/DecompressionTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/compression/DecompressionTest.java
index 144f190..e309ebb 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/compression/DecompressionTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/compression/DecompressionTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/compression/ExhaustiveTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/compression/ExhaustiveTest.java
index 43cfa6a..b60067d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/compression/ExhaustiveTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/compression/ExhaustiveTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/DataReadWriteTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/DataReadWriteTest.java
index b24e49d..8b9edeb 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/DataReadWriteTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/DataReadWriteTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/ICUDurationTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/ICUDurationTest.java
index 07f450e..96b5080 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/ICUDurationTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/ICUDurationTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/LanguageTestFmwk.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/LanguageTestFmwk.java
index e6888f9..03e1b4e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/LanguageTestFmwk.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/LanguageTestFmwk.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2007-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/PeriodBuilderFactoryTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/PeriodBuilderFactoryTest.java
index f090dd6..53e524a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/PeriodBuilderFactoryTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/PeriodBuilderFactoryTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2011, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/PeriodTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/PeriodTest.java
index cfee5ae..96c862a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/PeriodTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/PeriodTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/RegressionTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/RegressionTest.java
index eb79093..570a75d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/RegressionTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/RegressionTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/ResourceBasedPeriodFormatterDataServiceTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/ResourceBasedPeriodFormatterDataServiceTest.java
index fa785a1..66e0322 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/ResourceBasedPeriodFormatterDataServiceTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/ResourceBasedPeriodFormatterDataServiceTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_ar_EG.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_ar_EG.java
index 917bc8d..b1d23ec 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_ar_EG.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_ar_EG.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_en.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_en.java
index 13f8e49..9941049 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_en.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_en.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_es.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_es.java
index 7da63a0..0f16e9a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_es.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_es.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_fr.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_fr.java
index 90c4700..1396f37 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_fr.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_fr.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_he_IL.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_he_IL.java
index 83eb84b..2214b79 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_he_IL.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_he_IL.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_hi.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_hi.java
index 2289247..f540460 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_hi.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_hi.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_it.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_it.java
index 443b7e4..97d776d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_it.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_it.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_ja.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_ja.java
index c62fa0b..e527a1b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_ja.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_ja.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_ko.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_ko.java
index 1b08f71..4be0bae 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_ko.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_ko.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_ru.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_ru.java
index 6bfb8cd..12da798 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_ru.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_ru.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_zh_Hans.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_zh_Hans.java
index c493779..9af9ae9 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_zh_Hans.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_zh_Hans.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_zh_Hans_SG.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_zh_Hans_SG.java
index 0a54e0a..a80a1b2 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_zh_Hans_SG.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_zh_Hans_SG.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_zh_Hant.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_zh_Hant.java
index 42a8188..0277395 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_zh_Hant.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_zh_Hant.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_zh_Hant_HK.java b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_zh_Hant_HK.java
index 5e5d62a..8beff4d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_zh_Hant_HK.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/duration/languages/Test_zh_Hant_HK.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/BigNumberFormatTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/BigNumberFormatTest.java
index b58a3dc..9a97bfe 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/BigNumberFormatTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/BigNumberFormatTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2009, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/CompactDecimalFormatTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/CompactDecimalFormatTest.java
index 599f4cd..882a34c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/CompactDecimalFormatTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/CompactDecimalFormatTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, Google, International Business Machines Corporation and
@@ -701,9 +701,9 @@
         // Check currency formatting as well
         cdf = CompactDecimalFormat.getInstance(new ULocale("ar-EG"), CompactDecimalFormat.CompactStyle.SHORT);
         result = cdf.format(new CurrencyAmount(43000f, Currency.getInstance("USD")));
-        assertEquals("CDF should correctly format 43000 with currency in 'ar-EG'", "US$ ٤٣ ألف", result);
+        assertEquals("CDF should correctly format 43000 with currency in 'ar-EG'", "٤٣ ألف US$", result);
         result = cdf.format(new CurrencyAmount(-43000f, Currency.getInstance("USD")));
-        assertEquals("CDF should correctly format -43000 with currency in 'ar-EG'", "؜-US$ ٤٣ ألف", result);
+        assertEquals("CDF should correctly format -43000 with currency in 'ar-EG'", "؜-٤٣ ألف US$", result);
 
         // Extra locale with different positive/negative formats
         cdf = CompactDecimalFormat.getInstance(new ULocale("fi"), CompactDecimalFormat.CompactStyle.SHORT);
@@ -716,45 +716,33 @@
 
     @Test
     public void TestBug12689() {
-        if (logKnownIssue("12689", "CDF fails for numbers less than 1 thousand in most locales")) {
-            return;
-        }
-
         CompactDecimalFormat cdf;
         String result;
 
         cdf = CompactDecimalFormat.getInstance(ULocale.forLanguageTag("en"), CompactStyle.SHORT);
         result = cdf.format(new CurrencyAmount(123, Currency.getInstance("USD")));
-        assertEquals("CDF should correctly format 123 with currency in 'en'", "$120", result);
+        assertEquals("CDF should correctly format 123 with currency in 'en'", "$123", result);
 
         cdf = CompactDecimalFormat.getInstance(ULocale.forLanguageTag("it"), CompactStyle.SHORT);
         result = cdf.format(new CurrencyAmount(123, Currency.getInstance("EUR")));
-        assertEquals("CDF should correctly format 123 with currency in 'it'", "120 €", result);
+        assertEquals("CDF should correctly format 123 with currency in 'it'", "123\u00A0€", result);
     }
 
     @Test
     public void TestBug12688() {
-        if (logKnownIssue("12688", "CDF fails for numbers less than 1 million in 'it'")) {
-            return;
-        }
-
         CompactDecimalFormat cdf;
         String result;
 
         cdf = CompactDecimalFormat.getInstance(ULocale.forLanguageTag("it"), CompactStyle.SHORT);
         result = cdf.format(new CurrencyAmount(123000, Currency.getInstance("EUR")));
-        assertEquals("CDF should correctly format 123000 with currency in 'it'", "120000 €", result);
+        assertEquals("CDF should correctly format 123000 with currency in 'it'", "123.000\u00A0€", result);
     }
 
     @Test
     public void TestBug11319() {
-        if (logKnownIssue("11319", "CDF does not fall back from zh-Hant-HK to zh-Hant")) {
-            return;
-        }
-
-        CompactDecimalFormat cdf = CompactDecimalFormat.getInstance(new ULocale("zh-Hant-HK"), CompactStyle.SHORT);
+        CompactDecimalFormat cdf = CompactDecimalFormat.getInstance(new ULocale("yue-HK"), CompactStyle.SHORT);
         String result = cdf.format(958000000L);
-        assertEquals("CDF should correctly format 958 million in zh-Hant-HK", "9.6億", result);
+        assertEquals("CDF should correctly format 958 million in yue-HK", "9.6億", result);
     }
 
     @Test
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/DataDrivenFormatTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/DataDrivenFormatTest.java
index 2755bcc..fe0b051 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/DataDrivenFormatTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/DataDrivenFormatTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2012, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/DataDrivenNumberFormatTestData.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/DataDrivenNumberFormatTestData.java
index 1f0ff7b..af484f1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/DataDrivenNumberFormatTestData.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/DataDrivenNumberFormatTestData.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2015, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/DataDrivenNumberFormatTestUtility.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/DataDrivenNumberFormatTestUtility.java
index e08187b..98b2493 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/DataDrivenNumberFormatTestUtility.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/DataDrivenNumberFormatTestUtility.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2015, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatMiscTests.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatMiscTests.java
index 2e32b19..e82e6cb 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatMiscTests.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatMiscTests.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2011, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatRegressionTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatRegressionTest.java
index d6885d1..30c6200 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatRegressionTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatRegressionTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2015, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatRegressionTestJ.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatRegressionTestJ.java
index 9579e02..da8c907 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatRegressionTestJ.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatRegressionTestJ.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatRoundTripTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatRoundTripTest.java
index 400a0ca..c83734a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatRoundTripTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatRoundTripTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatTest.java
index 1704bcb..7d918ae 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateFormatTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2016, International Business Machines Corporation and
@@ -782,6 +782,93 @@
         }
     }
 
+    @Test
+    public void TestTimeZoneInLocale() {
+        String TESTS[][] = {
+            { "en-u-tz-usden",                     "America/Denver",             "gregorian" },
+            { "es-u-tz-usden",                     "America/Denver",             "gregorian" },
+            { "ms-u-tz-mykul",                     "Asia/Kuala_Lumpur",          "gregorian" },
+            { "zh-u-tz-mykul",                     "Asia/Kuala_Lumpur",          "gregorian" },
+            { "fr-u-ca-buddhist-tz-phmnl",         "Asia/Manila",                "buddhist" },
+            { "th-u-ca-chinese-tz-gblon",          "Europe/London",              "chinese" },
+            { "de-u-ca-coptic-tz-ciabj",           "Africa/Abidjan",             "coptic" },
+            { "ja-u-ca-dangi-tz-hkhkg",            "Asia/Hong_Kong",             "dangi" },
+            { "da-u-ca-ethioaa-tz-ruunera",        "Asia/Ust-Nera",              "ethiopic-amete-alem" },
+            { "ko-u-ca-ethiopic-tz-cvrai",         "Atlantic/Cape_Verde",        "ethiopic" },
+            { "fil-u-ca-gregory-tz-aubne",         "Australia/Brisbane",         "gregorian" },
+            { "fa-u-ca-hebrew-tz-brrbr",           "America/Rio_Branco",         "hebrew" },
+            { "gr-u-ca-indian-tz-lccas",           "America/St_Lucia",           "indian" },
+            { "or-u-ca-islamic-tz-cayyn",          "America/Swift_Current",      "islamic" },
+            { "my-u-ca-islamic-umalqura-tz-kzala", "Asia/Almaty",                "islamic-umalqura" },
+            { "lo-u-ca-islamic-tbla-tz-bmbda",     "Atlantic/Bermuda",           "islamic-tbla" },
+            { "km-u-ca-islamic-civil-tz-aqplm",    "Antarctica/Palmer",          "islamic-civil" },
+            { "kk-u-ca-islamic-rgsa-tz-usanc",     "America/Anchorage",          "islamic" },
+            { "ar-u-ca-iso8601-tz-bjptn",          "Africa/Porto-Novo",          "gregorian" },
+            { "he-u-ca-japanese-tz-tzdar",         "Africa/Dar_es_Salaam",       "japanese" },
+            { "bs-u-ca-persian-tz-etadd",          "Africa/Addis_Ababa",         "persian" },
+            { "it-u-ca-roc-tz-aruaq",              "America/Argentina/San_Juan", "roc" },
+        };
+        for (int i = 0; i < TESTS.length; ++i) {
+            ULocale ulocale = new ULocale(TESTS[i][0]);
+            Locale locale = new Locale(TESTS[i][0]);
+            SimpleDateFormat smptfmt = new SimpleDateFormat("Z", locale);
+            assertEquals(
+                "TimeZone from SimpleDateFormat(\"Z\", Locale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][1], smptfmt.getTimeZone().getID());
+            assertEquals(
+                "Calendar from SimpleDateFormat(\"Z\", Locale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], smptfmt.getCalendar().getType());
+
+            smptfmt = new SimpleDateFormat("Z", "", ulocale);
+            assertEquals(
+                "TimeZone from SimpleDateFormat(\"Z\", \"\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][1], smptfmt.getTimeZone().getID());
+            assertEquals(
+                "Calendar from SimpleDateFormat(\"Z\", \"\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], smptfmt.getCalendar().getType());
+
+            smptfmt = new SimpleDateFormat("Z", ulocale);
+            assertEquals(
+                "TimeZone from SimpleDateFormat(\"Z\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][1], smptfmt.getTimeZone().getID());
+            assertEquals(
+                "Calendar from SimpleDateFormat(\"Z\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], smptfmt.getCalendar().getType());
+
+            DateFormat dfmt = DateFormat.getInstanceForSkeleton("Z", locale);
+            assertEquals(
+                "TimeZone from DateFormat.getInstanceForSkeleton(\"Z\", Locale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][1], dfmt.getTimeZone().getID());
+            assertEquals(
+                "Calendar from DateFormat.getInstanceForSkeleton(\"Z\", Locale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], dfmt.getCalendar().getType());
+
+            dfmt = DateFormat.getInstanceForSkeleton("Z", ulocale);
+            assertEquals(
+                "TimeZone from DateFormat.getInstanceForSkeleton(\"Z\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][1], dfmt.getTimeZone().getID());
+            assertEquals(
+                "Calendar from DateFormat.getInstanceForSkeleton(\"Z\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], dfmt.getCalendar().getType());
+
+            dfmt = DateFormat.getPatternInstance("Z", locale);
+            assertEquals(
+                "TimeZone from DateFormat.getPatternInstance(\"Z\", Locale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][1], dfmt.getTimeZone().getID());
+            assertEquals(
+                "Calendar from DateFormat.getPatternInstance(\"Z\", Locale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], dfmt.getCalendar().getType());
+
+            dfmt = DateFormat.getPatternInstance("Z", ulocale);
+            assertEquals(
+                "TimeZone from DateFormat.getPatternInstance(\"Z\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][1], dfmt.getTimeZone().getID());
+            assertEquals(
+                "Calendar from DateFormat.getPatternInstance(\"Z\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], dfmt.getCalendar().getType());
+        }
+    }
+
     private static final String GMT_BG = "\u0413\u0440\u0438\u043D\u0443\u0438\u0447";
     private static final String GMT_ZH = "GMT";
     //private static final String GMT_ZH = "\u683C\u6797\u5C3C\u6CBB\u6807\u51C6\u65F6\u95F4";
@@ -1010,13 +1097,13 @@
         { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" },
         { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
         { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+5:30", "+5:30" },
-        { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "Indische Zeit", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "Indische Normalzeit", "+5:30" },
         { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" },
         { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
         { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+5:30", "+05:30" },
-        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "Indische Zeit", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "Indische Normalzeit", "+5:30" },
         { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "Indien Zeit", "Asia/Calcutta" },
-        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "Indische Zeit", "Asia/Calcutta" },
+        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "Indische Normalzeit", "Asia/Calcutta" },
 
         // ==========
 
@@ -1515,7 +1602,7 @@
         { "ti", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" },
         { "ti", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" },
         { "ti", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+1", "+1:00" },
-        { "ti", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" },
+        { "ti", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "British Summer Time", "+1:00" },
         { "ti", "Europe/London", "2004-07-15T00:00:00Z", "v", "\u12A5\u1295\u130D\u120A\u12DD", "Europe/London" },
         { "ti", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\u12A5\u1295\u130D\u120A\u12DD", "Europe/London" },
 
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateIntervalFormatTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateIntervalFormatTest.java
index 0e3737e..2d4c948 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateIntervalFormatTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateIntervalFormatTest.java
@@ -1,7 +1,7 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2016, International Business Machines Corporation and    *
@@ -37,6 +37,7 @@
 import android.icu.text.DateIntervalFormat.FormattedDateInterval;
 import android.icu.text.DateIntervalInfo;
 import android.icu.text.DateIntervalInfo.PatternInfo;
+import android.icu.text.DisplayContext;
 import android.icu.text.SimpleDateFormat;
 import android.icu.util.Calendar;
 import android.icu.util.DateInterval;
@@ -432,7 +433,7 @@
 
                 "zh", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "EEEEdMMMMy", "2007\\u5e7410\\u670810\\u65e5\\u661f\\u671f\\u4e09\\u81f32008\\u5e7410\\u670810\\u65e5\\u661f\\u671f\\u4e94",
 
-                "zh", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "hm", "2007/10/10 \\u4e0a\\u534810:10 \\u2013 2008/10/10 \\u4e0a\\u534810:10",
+                "zh", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "hm", "2007/10/10\\u4e0a\\u534810:10 \\u2013 2008/10/10\\u4e0a\\u534810:10",
 
                 "zh", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "dMMMMy", "2007\\u5e7410\\u670810\\u65e5\\u81f311\\u670810\\u65e5",
 
@@ -442,7 +443,7 @@
 
                 "zh", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "EEEEdMMMM", "10\\u670810\\u65e5\\u661f\\u671f\\u4e09\\u81f311\\u670810\\u65e5\\u661f\\u671f\\u516d",
 
-                "zh", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "hmv", "2007/10/10 \\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10 \\u2013 2007/11/10 \\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10",
+                "zh", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "hmv", "2007/10/10\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10 \\u2013 2007/11/10\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10",
 
                 "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EEEEdMMMMy", "2007\\u5e7411\\u670810\\u65e5\\u661f\\u671f\\u516d\\u81f320\\u65e5\\u661f\\u671f\\u4e8c",
 
@@ -475,29 +476,29 @@
 
                 "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "MMMM", "\\u5341\\u4E00\\u6708", // (fixed expected result per ticket 6872<-6626 and others)
 
-                "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "hmz", "2007/11/10 GMT-8 \\u4e0a\\u534810:10 \\u2013 2007/11/20 GMT-8 \\u4e0a\\u534810:10",
+                "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "hmz", "2007/11/10GMT-8 \\u4e0a\\u534810:10 \\u2013 2007/11/20GMT-8 \\u4e0a\\u534810:10",
 
-                "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "h", "2007/11/10 \\u4e0a\\u534810\\u65f6 \\u2013 2007/11/20 \\u4e0a\\u534810\\u65f6",
+                "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "h", "2007/11/10\\u4e0a\\u534810\\u65f6 \\u2013 2007/11/20\\u4e0a\\u534810\\u65f6",
 
                 "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "EEEEdMMMMy", "2007\\u5e741\\u670810\\u65e5\\u661f\\u671f\\u4e09", // (fixed expected result per ticket 6872<-6626)
 
                 "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hm", "\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10",
 
-                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hmv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4\\u4E0A\\u534810:00\\u81F3\\u4E0B\\u53482:10",
+                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hmv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:00\\u81F3\\u4E0B\\u53482:10",
 
-                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hmz", "GMT-8\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10",
+                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hmz", "GMT-8 \\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10",
 
                 "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "h", "\\u4e0a\\u534810\\u65F6\\u81f3\\u4e0b\\u53482\\u65f6",
 
-                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4\\u4E0A\\u534810\\u65F6\\u81F3\\u4E0B\\u53482\\u65F6",
+                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810\\u65F6\\u81F3\\u4E0B\\u53482\\u65F6",
 
-                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hz", "GMT-8\\u4e0a\\u534810\\u65F6\\u81f3\\u4e0b\\u53482\\u65f6",
+                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hz", "GMT-8 \\u4e0a\\u534810\\u65F6\\u81f3\\u4e0b\\u53482\\u65f6",
 
                 "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "dMMMM", "1\\u670810\\u65e5", // (fixed expected result per ticket 6872<-6626)
 
                 "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hm", "\\u4e0a\\u534810:00\\u81f310:20",
 
-                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hmv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4\\u4E0A\\u534810:00\\u81F310:20",
+                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hmv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:00\\u81F310:20",
 
                 "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "h", "\\u4e0a\\u534810\\u65f6",
 
@@ -731,6 +732,103 @@
     }
 
 
+    /**
+     * Test handling of hour and day period metacharacters
+     */
+    @Test
+    public void TestHourMetacharacters() {
+        // first item is date pattern
+        // followed by a group of locale/from_data/to_data/skeleton/interval_data
+        // Note that from_data/to_data are specified using era names from root, for the calendar specified by locale.
+        String[] DATA = {
+            "GGGGG y MM dd HH:mm:ss", // pattern for from_data/to_data
+
+            // This test is for tickets ICU-21154, ICU-21155, and ICU-21156 and is intended to verify
+            // that all of the special skeleton characters for hours and day periods work as expected
+            // with date intervals:
+            // - If a, b, or B is included in the skeleton, it correctly sets the length of the day-period field
+            // - If k or K is included, it behaves the same as H or h, except for the difference in the actual
+            //   number used for the hour.
+            // - If j is included, it behaves the same as either h or H as appropriate, and multiple j's have the
+            //   intended effect on the length of the day period field (if there is one)
+            // - If J is included, it correctly suppresses the day period field if j would include it
+            // - If C is included, it behaves the same as j and brings up the correct day period field
+            // - In all cases, if the day period of both ends of the range is the same, you only see it once
+
+            // baseline (h and H)
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "hh", "12 \\u2013 1 AM",
+            "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "HH", "00\\u201301 Uhr",
+
+            // k and K (ICU-21154 and ICU-21156)
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "KK", "0 \\u2013 1 AM",
+            "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "kk", "24\\u201301 Uhr",
+
+            // different lengths of the 'a' field
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "ha", "10 AM \\u2013 1 PM",
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "ha", "12 \\u2013 1 AM",
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 12:00:00", "haaaaa", "10 a \\u2013 12 p",
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "haaaaa", "12 \\u2013 1 a",
+
+            // j (ICU-21155)
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jj", "10 AM \\u2013 1 PM",
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jj", "12 \\u2013 1 AM",
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jjjjj", "10 a \\u2013 1 p",
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jjjjj", "12 \\u2013 1 a",
+            "de", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jj", "10\\u201313 Uhr",
+            "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jj", "00\\u201301 Uhr",
+            "de", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jjjjj", "10\\u201313 Uhr",
+            "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jjjjj", "00\\u201301 Uhr",
+
+            // b and B
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 12:00:00", "hb", "10 AM \\u2013 12 noon",
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 12:00:00", "hbbbbb", "10 a \\u2013 12 n",
+            "en", "CE 2010 09 27 13:00:00", "CE 2010 09 27 14:00:00", "hb", "1 \\u2013 2 PM",
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "hB", "10 in the morning \\u2013 1 in the afternoon",
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "hB", "12 \\u2013 1 at night",
+
+            // J
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "J", "10 \\u2013 1",
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "J", "12 \\u2013 1",
+            "de", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "J", "10\\u201313 Uhr",
+            "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "J", "00\\u201301 Uhr",
+
+            // C
+            // (for English and German, C should do the same thing as j)
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CC", "10 AM \\u2013 1 PM",
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CC", "12 \\u2013 1 AM",
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CCCCC", "10 a \\u2013 1 p",
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CCCCC", "12 \\u2013 1 a",
+            "de", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CC", "10\\u201313 Uhr",
+            "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CC", "00\\u201301 Uhr",
+            "de", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CCCCC", "10\\u201313 Uhr",
+            "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CCCCC", "00\\u201301 Uhr",
+            // (for zh_HK and hi_IN, j maps to ha, but C maps to hB)
+        "zh_HK", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jj", "\\u4E0A\\u534810\\u6642\\u81F3\\u4E0B\\u53481\\u6642",
+        "zh_HK", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jj", "\\u4E0A\\u534812\\u6642\\u81F31\\u6642",
+        "zh_HK", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "hB", "\\u4E0A\\u534810\\u6642 \\u2013 \\u4E0B\\u53481\\u6642",
+        "zh_HK", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "hB", "\\u51CC\\u666812\\u20131\\u6642",
+        "zh_HK", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CC", "\\u4E0A\\u534810\\u6642 \\u2013 \\u4E0B\\u53481\\u6642",
+        "zh_HK", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CC", "\\u51CC\\u666812\\u20131\\u6642",
+        "hi_IN", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jj", "10 am \\u2013 1 pm",
+        "hi_IN", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jj", "12\\u20131 am",
+        "hi_IN", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "hB", "\\u0938\\u0941\\u092C\\u0939 10 \\u2013 \\u0926\\u094B\\u092A\\u0939\\u0930 1",
+        "hi_IN", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "hB", "\\u0930\\u093E\\u0924 12\\u20131",
+        "hi_IN", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CC", "\\u0938\\u0941\\u092C\\u0939 10 \\u2013 \\u0926\\u094B\\u092A\\u0939\\u0930 1",
+        "hi_IN", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CC", "\\u0930\\u093E\\u0924 12\\u20131",
+
+         // regression test for ICU-21342
+         "en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 10:00:00", "kk", "24\\u201310",
+         "en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 11:00:00", "kk", "24\\u201311",
+         "en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 12:00:00", "kk", "24\\u201312",
+         "en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 13:00:00", "kk", "24\\u201313",
+
+         // regression test for ICU-21343
+         "de", "CE 2010 09 27 01:00:00", "CE 2010 09 27 10:00:00", "KK", "1 \\u2013 10 Uhr AM",
+        };
+        expect(DATA, DATA.length);
+    }
+
+
     private void expect(String[] data, int data_length) {
         int i = 0;
         String pattern = data[i++];
@@ -814,17 +912,17 @@
 
                 "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "10. Jan. 2007",
 
-                "es", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "10 oct. 2007 --- 10 oct. 2008",
+                "es", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "10 oct 2007 --- 10 oct 2008",
 
-                "es", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 oct. 10 - nov. 2007",
+                "es", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 oct 10 - nov 2007",
 
-                "es", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "10 nov. 2007 --- 20 nov. 2007",
+                "es", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "10 nov 2007 --- 20 nov 2007",
 
-                "es", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "10 ene. 2007",
+                "es", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "10 ene 2007",
 
-                "es", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "10 ene. 2007",
+                "es", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "10 ene 2007",
 
-                "es", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "10 ene. 2007",
+                "es", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "10 ene 2007",
         };
         expectUserDII(DATA, DATA.length);
     }
@@ -865,7 +963,65 @@
         }
     }
 
+    /*
+     * Test format using DisplayContext
+     */
+    @Test
+    public void TestContext() {
+        final long startDate = 1285599629000L; // 2010-Sep-27 0800 in America/Los_Angeles
+        final long day = 24*60*60*1000; // milliseconds in a day
 
+        class DateIntervalContextItem {
+            public String locale;
+            public String skeleton;
+            public DisplayContext context;
+            public long deltaDate;
+            public String expectResult;
+             // Simple constructor
+            public DateIntervalContextItem(String loc, String skel, DisplayContext ctxt, long delta, String expect) {
+                locale = loc;
+                skeleton = skel;
+                context = ctxt;
+                deltaDate = delta;
+                expectResult = expect;
+            }
+        };
+
+        final DateIntervalContextItem[] testItems = {
+           new DateIntervalContextItem( "cs", "MMMEd", DisplayContext.CAPITALIZATION_NONE,                      60*day, "po 27. 9. – pá 26. 11." ),
+           new DateIntervalContextItem( "cs", "yMMMM", DisplayContext.CAPITALIZATION_NONE,                      60*day, "září–listopad 2010" ),
+           new DateIntervalContextItem( "cs", "yMMMM", DisplayContext.CAPITALIZATION_NONE,                       1*day, "září 2010" ),
+           new DateIntervalContextItem( "cs", "MMMEd", DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, 60*day, "Po 27. 9. – pá 26. 11." ),
+           new DateIntervalContextItem( "cs", "yMMMM", DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, 60*day, "Září–listopad 2010" ),
+           new DateIntervalContextItem( "cs", "yMMMM", DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE,  1*day, "Září 2010" ),
+           new DateIntervalContextItem( "cs", "MMMEd", DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU,       60*day, "Po 27. 9. – pá 26. 11." ),
+           new DateIntervalContextItem( "cs", "yMMMM", DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU,       60*day, "Září–listopad 2010" ),
+           new DateIntervalContextItem( "cs", "yMMMM", DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU,        1*day, "Září 2010" ),
+           new DateIntervalContextItem( "cs", "MMMEd", DisplayContext.CAPITALIZATION_FOR_STANDALONE,            60*day, "po 27. 9. – pá 26. 11." ),
+           new DateIntervalContextItem( "cs", "yMMMM", DisplayContext.CAPITALIZATION_FOR_STANDALONE,            60*day, "září–listopad 2010" ),
+           new DateIntervalContextItem( "cs", "yMMMM", DisplayContext.CAPITALIZATION_FOR_STANDALONE,             1*day, "září 2010" ),
+        };
+
+        for (DateIntervalContextItem item: testItems) {
+            DateIntervalFormat difmt = DateIntervalFormat.getInstance(item.skeleton, new ULocale(item.locale));
+            difmt.setTimeZone(TimeZone.getFrozenTimeZone("America/Los_Angeles"));
+
+            difmt.setContext(item.context);
+            DisplayContext getContext = difmt.getContext(DisplayContext.Type.CAPITALIZATION);
+            if (getContext != item.context) {
+                errln("For locale "  + item.locale + ", skeleton " + item.skeleton + ", context " + item.context +
+                        ": getContext returned " + getContext);
+            }
+            DateInterval interval = new DateInterval(startDate, startDate + item.deltaDate);
+            FieldPosition pos = new FieldPosition(0);
+            StringBuffer getResult = new StringBuffer();
+            difmt.format(interval, getResult, pos);
+            if (!getResult.toString().equals(item.expectResult)) {
+                errln("For locale "  + item.locale + ", skeleton " + item.skeleton + ", context " + item.context +
+                       ": expected " + item.expectResult + ", got " + getResult.toString());
+            }
+        }
+    }
 
     /*
      * Test format using user defined DateIntervalInfo
@@ -2050,6 +2206,7 @@
                 ULocale.AvailableType.WITH_LEGACY_ALIASES)) {
             // Only test 1/5 of the locale in quick mode.
             if (quick && (count++ % 5 > 0)) continue;
+            @SuppressWarnings("unused")
             DateIntervalFormat fmt = DateIntervalFormat.getInstance("dMMMMy", locale);
             for (String calendar : Calendar.getKeywordValuesForLocale(
                     "calendar", locale, false)) {
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateTimeGeneratorTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateTimeGeneratorTest.java
index b3a93ad..ee77d01 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/DateTimeGeneratorTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/DateTimeGeneratorTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2006-2016, Google, International Business Machines Corporation
@@ -449,11 +449,11 @@
 
         new ULocale("es"),
         new String[] {"yM", "1/1999"},
-        new String[] {"yMMM", "ene. 1999"},
+        new String[] {"yMMM", "ene 1999"},
         new String[] {"yMd", "13/1/1999"},
-        new String[] {"yMMMd", "13 ene. 1999"},
+        new String[] {"yMMMd", "13 ene 1999"},
         new String[] {"Md", "13/1"},
-        new String[] {"MMMd", "13 ene."},
+        new String[] {"MMMd", "13 ene"},
         new String[] {"MMMMd", "13 de enero"},
         new String[] {"yQQQ", "T1 1999"},
         new String[] {"hhmm", "11:58 p.\u00A0m."},
@@ -461,8 +461,8 @@
         new String[] {"jjmm", "23:58"},
         new String[] {"mmss", "58:59"},
         new String[] {"yyyyMMMM", "enero de 1999"},
-        new String[] {"MMMEd", "mi\u00E9., 13 ene."},
-        new String[] {"Ed", "mi\u00E9. 13"},
+        new String[] {"MMMEd", "mi\u00E9, 13 ene"},
+        new String[] {"Ed", "mi\u00E9 13"},
         new String[] {"jmmssSSS", "23:58:59,123"},
         new String[] {"JJmm", "23:58"},
 
@@ -1746,8 +1746,7 @@
             // en_NH is interesting because NH is a depregated region code.
             {"en_NH", "h a", "h:mm a", "HOUR_CYCLE_12"},
             // ch_ZH is a typo (should be zh_CN), but we should fail gracefully.
-            // {"cn_ZH", "HH", "H:mm"}, // TODO(ICU-20653): Desired behavior
-            {"cn_ZH", "HH", "h:mm a", "HOUR_CYCLE_23"}, // Actual behavior
+            {"cn_ZH", "HH", "HH:mm", "HOUR_CYCLE_23"}, // Desired & now actual behavior (does this fix ICU-20653?)
             // a non-BCP47 locale without a country code should not fail
             {"ja_TRADITIONAL", "H時", "H:mm", "HOUR_CYCLE_23"},
         };
@@ -1768,4 +1767,39 @@
                 cas[3], dtpg.getDefaultHourCycle().toString());
         }
     }
+
+    @Test
+    public void test_jConsistencyOddLocales() { // ICU-20590
+        String[] localeIDs = {
+            "en", "ro", // known languages 12h / 24h
+            "en-RO", "ro-US",  // known languages with known regions, hour conflict language vs region
+            "en-XZ", "ro-XZ", // known languages 12h / 24h, unknown region
+            "xz-RO", "xz-US",  // unknown language with known regions
+            "xz", // unknown language
+            "xz-ZX",  // unknown language with unknown country
+            "ars", "wuu" // aliased locales
+        };
+        final String skeleton = "jm";
+        for (String localeID : localeIDs) {
+            ULocale locale = new ULocale(localeID);
+
+            DateFormat dtfShort = DateFormat.getTimeInstance(DateFormat.SHORT, locale);
+            String dtfShortPattern = ((SimpleDateFormat)dtfShort).toPattern();
+
+            DateFormat dtfSkel = DateFormat.getInstanceForSkeleton(skeleton, locale);
+            String dtfSkelPattern = ((SimpleDateFormat)dtfSkel).toPattern();
+
+            DateTimePatternGenerator dtpg = DateTimePatternGenerator.getInstance(locale);
+            String dtpgPattern = dtpg.getBestPattern(skeleton);
+
+            if (!dtfShortPattern.equals(dtfSkelPattern) || !dtfSkelPattern.equals(dtpgPattern)) {
+                String dtfShortValidLoc = dtfShort.getLocale(ULocale.VALID_LOCALE).getName();
+                String dtfShortActualLoc = dtfShort.getLocale(ULocale.ACTUAL_LOCALE).getName();
+                errln("For locale " + localeID +
+                        " expected same pattern from DateTimePatGen: " + dtpgPattern +
+                        ", DateFmt-forSkel: " + dtfSkelPattern + ", DateFmt-short: "  + dtfShortPattern +
+                        "; latter has validLoc " + dtfShortValidLoc + ", actualLoc " + dtfShortActualLoc);
+            }
+        }
+    }
 }
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/FormattedStringBuilderTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/FormattedStringBuilderTest.java
index d2651df..a31a023 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/FormattedStringBuilderTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/FormattedStringBuilderTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.format;
 
 import static org.junit.Assert.assertEquals;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/FormattedValueTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/FormattedValueTest.java
index b3c92f4..6d72080 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/FormattedValueTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/FormattedValueTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.format;
 
 import static org.junit.Assert.assertEquals;
@@ -218,6 +218,8 @@
         }
         boolean afterLoopResult = fv.nextPosition(cfpos);
         assertFalse(baseMessage + "after loop: " + cfpos, afterLoopResult);
+        afterLoopResult = fv.nextPosition(cfpos);
+        assertFalse(baseMessage + "after loop again: " + cfpos, afterLoopResult);
 
         // Check nextPosition constrained over each class one at a time
         for (Class<?> classConstraint : uniqueFieldClasses) {
@@ -241,6 +243,8 @@
             }
             afterLoopResult = fv.nextPosition(cfpos);
             assertFalse(baseMessage + "after loop: " + cfpos, afterLoopResult);
+            afterLoopResult = fv.nextPosition(cfpos);
+            assertFalse(baseMessage + "after loop again: " + cfpos, afterLoopResult);
         }
 
         // Check nextPosition constrained over an unrelated class
@@ -270,6 +274,8 @@
             }
             afterLoopResult = fv.nextPosition(cfpos);
             assertFalse(baseMessage + "after loop: " + cfpos, afterLoopResult);
+            afterLoopResult = fv.nextPosition(cfpos);
+            assertFalse(baseMessage + "after loop again: " + cfpos, afterLoopResult);
         }
     }
 
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/GlobalizationPreferencesTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/GlobalizationPreferencesTest.java
index ee0fa33..e0cd7a0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/GlobalizationPreferencesTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/GlobalizationPreferencesTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormat.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormat.java
index 507aa0e..598fa73 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormat.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /***************************************************************************************
  *
  *   Copyright (C) 1996-2010, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormatAPI.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormatAPI.java
index e47e171..b2b4a91 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormatAPI.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormatAPI.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*****************************************************************************************
  *
  *   Copyright (C) 1996-2015, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormatAPIC.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormatAPIC.java
index 0fa038b..966628a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormatAPIC.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormatAPIC.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
@@ -164,4 +164,4 @@
         }
         */
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormatSymbols.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormatSymbols.java
index 021c41a..45250c0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormatSymbols.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDateFormatSymbols.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*****************************************************************************************
  *
  *   Copyright (C) 1996-2014, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatAPI.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatAPI.java
index 049094d..6eef5ee 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatAPI.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatAPI.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*****************************************************************************************
  *
  *   Copyright (C) 1996-2012, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatAPIC.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
index 3a083fe..81e4abf 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatSymbols.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatSymbols.java
index 1752250..87c50bc 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatSymbols.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatSymbols.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*****************************************************************************************
  *
  *   Copyright (C) 1996-2016, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java
index 630f1e8..2fd2d12 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
@@ -147,4 +147,4 @@
                 expected + ", Got " + buffer);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestNumberFormat.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestNumberFormat.java
index f958435..d29f8aa 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestNumberFormat.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestNumberFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2011, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestNumberFormatAPI.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestNumberFormatAPI.java
index 8cc4cee..0f4fe9a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestNumberFormatAPI.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestNumberFormatAPI.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*****************************************************************************************
  *
  *   Copyright (C) 1996-2009, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java
index af1f9d3..cf63192 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*****************************************************************************************
  * (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
  * (C) Copyright IBM Corp. 1996-2012 - All Rights Reserved
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/ListFormatterTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/ListFormatterTest.java
index 7e1a7b5..0298821 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/ListFormatterTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/ListFormatterTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012-2013, Google, International Business Machines Corporation and
@@ -220,9 +220,8 @@
 
     @Test
     public void TestFormattedValue() {
-        ListFormatter fmt = ListFormatter.getInstance(ULocale.ENGLISH);
-
         {
+            ListFormatter fmt = ListFormatter.getInstance(ULocale.ENGLISH);
             String message = "Field position test 1";
             String expectedString = "hello, wonderful, and world";
             String[] inputs = {
@@ -247,6 +246,85 @@
                 expectedString,
                 expectedFieldPositions);
         }
+
+        {
+            ListFormatter fmt = ListFormatter.getInstance(ULocale.CHINESE, Type.UNITS, Width.SHORT);
+            String message = "Field position test 2 (ICU-21340)";
+            String expectedString = "aabbbbbbbccc";
+            String inputs[] = {
+                "aa",
+                "bbbbbbb",
+                "ccc"
+            };
+            FormattedList result = fmt.formatToValue(Arrays.asList(inputs));
+            Object[][] expectedFieldPositions = {
+                // field, begin index, end index
+                {ListFormatter.SpanField.LIST_SPAN, 0, 2, 0},
+                {ListFormatter.Field.ELEMENT, 0, 2},
+                {ListFormatter.SpanField.LIST_SPAN, 2, 9, 1},
+                {ListFormatter.Field.ELEMENT, 2, 9},
+                {ListFormatter.SpanField.LIST_SPAN, 9, 12, 2},
+                {ListFormatter.Field.ELEMENT, 9, 12}};
+            if (!logKnownIssue("21351", "Java still coalesces adjacent elements")) {
+                FormattedValueTest.checkFormattedValue(
+                    message,
+                    result,
+                    expectedString,
+                    expectedFieldPositions);
+            }
+        }
+    
+        {
+            ListFormatter fmt = ListFormatter.getInstance(ULocale.ENGLISH, Type.UNITS, Width.SHORT);
+            String message = "ICU-21383 Long list";
+            String expectedString = "a, b, c, d, e, f, g, h, i";
+            String inputs[] = {
+                "a",
+                "b",
+                "c",
+                "d",
+                "e",
+                "f",
+                "g",
+                "h",
+                "i",
+            };
+            FormattedList result = fmt.formatToValue(Arrays.asList(inputs));
+            Object[][] expectedFieldPositions = {
+                // field, begin index, end index
+                {ListFormatter.SpanField.LIST_SPAN, 0, 1, 0},
+                {ListFormatter.Field.ELEMENT, 0, 1},
+                {ListFormatter.Field.LITERAL, 1, 3},
+                {ListFormatter.SpanField.LIST_SPAN, 3, 4, 1},
+                {ListFormatter.Field.ELEMENT, 3, 4},
+                {ListFormatter.Field.LITERAL, 4, 6},
+                {ListFormatter.SpanField.LIST_SPAN, 6, 7, 2},
+                {ListFormatter.Field.ELEMENT, 6, 7},
+                {ListFormatter.Field.LITERAL, 7, 9},
+                {ListFormatter.SpanField.LIST_SPAN, 9, 10, 3},
+                {ListFormatter.Field.ELEMENT, 9, 10},
+                {ListFormatter.Field.LITERAL, 10, 12},
+                {ListFormatter.SpanField.LIST_SPAN, 12, 13, 4},
+                {ListFormatter.Field.ELEMENT, 12, 13},
+                {ListFormatter.Field.LITERAL, 13, 15},
+                {ListFormatter.SpanField.LIST_SPAN, 15, 16, 5},
+                {ListFormatter.Field.ELEMENT, 15, 16},
+                {ListFormatter.Field.LITERAL, 16, 18},
+                {ListFormatter.SpanField.LIST_SPAN, 18, 19, 6},
+                {ListFormatter.Field.ELEMENT, 18, 19},
+                {ListFormatter.Field.LITERAL, 19, 21},
+                {ListFormatter.SpanField.LIST_SPAN, 21, 22, 7},
+                {ListFormatter.Field.ELEMENT, 21, 22},
+                {ListFormatter.Field.LITERAL, 22, 24},
+                {ListFormatter.SpanField.LIST_SPAN, 24, 25, 8},
+                {ListFormatter.Field.ELEMENT, 24, 25},
+                };
+            FormattedValueTest.checkFormattedValue(
+                message,
+                result,
+                expectedString,
+                expectedFieldPositions);
+        }
     }
 
     @Test
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/MeasureUnitTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/MeasureUnitTest.java
index a475414..aa26de1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/MeasureUnitTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/MeasureUnitTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2016, International Business Machines Corporation and
@@ -87,7 +87,7 @@
         }
     }
 
-    private static final String[] DRAFT_VERSIONS = {"64", "65", "66", "67"};
+    private static final String[] DRAFT_VERSIONS = {"66", "67", "68"};
 
     private static final HashSet<String> DRAFT_VERSION_SET = new HashSet<>();
 
@@ -266,6 +266,18 @@
         {"PIXEL_PER_INCH", "65"},
         {"BAR", "65"},
         {"PASCAL", "65"},
+        {"DOT", "68"},
+        {"EARTH_RADIUS", "68"},
+        {"CANDELA", "68"},
+        {"LUMEN", "68"},
+        {"GRAIN", "68"},
+        {"DESSERT_SPOON", "68"},
+        {"DESSERT_SPOON_IMPERIAL", "68"},
+        {"DRAM", "68"},
+        {"DROP", "68"},
+        {"JIGGER", "68"},
+        {"PINCH", "68"},
+        {"QUART_IMPERIAL", "68"},
     };
 
     private static final HashMap<String, String> JAVA_VERSION_MAP = new HashMap<>();
@@ -309,12 +321,12 @@
         // various generateXXX calls go here, see
         // http://site.icu-project.org/design/formatting/measureformat/updating-measure-unit
         // use this test to run each of the ollowing in succession
-        //generateConstants("67"); // for MeasureUnit.java, update generated MeasureUnit constants
-        //generateBackwardCompatibilityTest("67"); // for MeasureUnitTest.java, create TestCompatible65
-        //generateCXXHConstants("67"); // for measunit.h, update generated createXXX methods
+        //generateConstants("68"); // for MeasureUnit.java, update generated MeasureUnit constants
+        //generateBackwardCompatibilityTest("68"); // for MeasureUnitTest.java, create TestCompatible65
+        //generateCXXHConstants("68"); // for measunit.h, update generated createXXX methods
         //generateCXXConstants(); // for measunit.cpp, update generated code
-        //generateCXXBackwardCompatibilityTest("67"); // for measfmttest.cpp, create TestCompatible65
-        //updateJAVAVersions("67"); // for MeasureUnitTest.java, JAVA_VERSIONS
+        //generateCXXBackwardCompatibilityTest("68"); // for measfmttest.cpp, create TestCompatible65
+        //updateJAVAVersions("68"); // for MeasureUnitTest.java, JAVA_VERSIONS
     }
 
     @Test
@@ -1688,6 +1700,197 @@
     }
 
     @Test
+    public void TestCompatible68() {
+        MeasureUnit[] units = {
+                MeasureUnit.G_FORCE,
+                MeasureUnit.METER_PER_SECOND_SQUARED,
+                MeasureUnit.ARC_MINUTE,
+                MeasureUnit.ARC_SECOND,
+                MeasureUnit.DEGREE,
+                MeasureUnit.RADIAN,
+                MeasureUnit.REVOLUTION_ANGLE,
+                MeasureUnit.ACRE,
+                MeasureUnit.DUNAM,
+                MeasureUnit.HECTARE,
+                MeasureUnit.SQUARE_CENTIMETER,
+                MeasureUnit.SQUARE_FOOT,
+                MeasureUnit.SQUARE_INCH,
+                MeasureUnit.SQUARE_KILOMETER,
+                MeasureUnit.SQUARE_METER,
+                MeasureUnit.SQUARE_MILE,
+                MeasureUnit.SQUARE_YARD,
+                MeasureUnit.KARAT,
+                MeasureUnit.MILLIGRAM_PER_DECILITER,
+                MeasureUnit.MILLIMOLE_PER_LITER,
+                MeasureUnit.MOLE,
+                MeasureUnit.PERCENT,
+                MeasureUnit.PERMILLE,
+                MeasureUnit.PART_PER_MILLION,
+                MeasureUnit.PERMYRIAD,
+                MeasureUnit.LITER_PER_100KILOMETERS,
+                MeasureUnit.LITER_PER_KILOMETER,
+                MeasureUnit.MILE_PER_GALLON,
+                MeasureUnit.MILE_PER_GALLON_IMPERIAL,
+                MeasureUnit.BIT,
+                MeasureUnit.BYTE,
+                MeasureUnit.GIGABIT,
+                MeasureUnit.GIGABYTE,
+                MeasureUnit.KILOBIT,
+                MeasureUnit.KILOBYTE,
+                MeasureUnit.MEGABIT,
+                MeasureUnit.MEGABYTE,
+                MeasureUnit.PETABYTE,
+                MeasureUnit.TERABIT,
+                MeasureUnit.TERABYTE,
+                MeasureUnit.CENTURY,
+                MeasureUnit.DAY,
+                MeasureUnit.DAY_PERSON,
+                MeasureUnit.DECADE,
+                MeasureUnit.HOUR,
+                MeasureUnit.MICROSECOND,
+                MeasureUnit.MILLISECOND,
+                MeasureUnit.MINUTE,
+                MeasureUnit.MONTH,
+                MeasureUnit.MONTH_PERSON,
+                MeasureUnit.NANOSECOND,
+                MeasureUnit.SECOND,
+                MeasureUnit.WEEK,
+                MeasureUnit.WEEK_PERSON,
+                MeasureUnit.YEAR,
+                MeasureUnit.YEAR_PERSON,
+                MeasureUnit.AMPERE,
+                MeasureUnit.MILLIAMPERE,
+                MeasureUnit.OHM,
+                MeasureUnit.VOLT,
+                MeasureUnit.BRITISH_THERMAL_UNIT,
+                MeasureUnit.CALORIE,
+                MeasureUnit.ELECTRONVOLT,
+                MeasureUnit.FOODCALORIE,
+                MeasureUnit.JOULE,
+                MeasureUnit.KILOCALORIE,
+                MeasureUnit.KILOJOULE,
+                MeasureUnit.KILOWATT_HOUR,
+                MeasureUnit.THERM_US,
+                MeasureUnit.NEWTON,
+                MeasureUnit.POUND_FORCE,
+                MeasureUnit.GIGAHERTZ,
+                MeasureUnit.HERTZ,
+                MeasureUnit.KILOHERTZ,
+                MeasureUnit.MEGAHERTZ,
+                MeasureUnit.DOT,
+                MeasureUnit.DOT_PER_CENTIMETER,
+                MeasureUnit.DOT_PER_INCH,
+                MeasureUnit.EM,
+                MeasureUnit.MEGAPIXEL,
+                MeasureUnit.PIXEL,
+                MeasureUnit.PIXEL_PER_CENTIMETER,
+                MeasureUnit.PIXEL_PER_INCH,
+                MeasureUnit.ASTRONOMICAL_UNIT,
+                MeasureUnit.CENTIMETER,
+                MeasureUnit.DECIMETER,
+                MeasureUnit.EARTH_RADIUS,
+                MeasureUnit.FATHOM,
+                MeasureUnit.FOOT,
+                MeasureUnit.FURLONG,
+                MeasureUnit.INCH,
+                MeasureUnit.KILOMETER,
+                MeasureUnit.LIGHT_YEAR,
+                MeasureUnit.METER,
+                MeasureUnit.MICROMETER,
+                MeasureUnit.MILE,
+                MeasureUnit.MILE_SCANDINAVIAN,
+                MeasureUnit.MILLIMETER,
+                MeasureUnit.NANOMETER,
+                MeasureUnit.NAUTICAL_MILE,
+                MeasureUnit.PARSEC,
+                MeasureUnit.PICOMETER,
+                MeasureUnit.POINT,
+                MeasureUnit.SOLAR_RADIUS,
+                MeasureUnit.YARD,
+                MeasureUnit.CANDELA,
+                MeasureUnit.LUMEN,
+                MeasureUnit.LUX,
+                MeasureUnit.SOLAR_LUMINOSITY,
+                MeasureUnit.CARAT,
+                MeasureUnit.DALTON,
+                MeasureUnit.EARTH_MASS,
+                MeasureUnit.GRAIN,
+                MeasureUnit.GRAM,
+                MeasureUnit.KILOGRAM,
+                MeasureUnit.METRIC_TON,
+                MeasureUnit.MICROGRAM,
+                MeasureUnit.MILLIGRAM,
+                MeasureUnit.OUNCE,
+                MeasureUnit.OUNCE_TROY,
+                MeasureUnit.POUND,
+                MeasureUnit.SOLAR_MASS,
+                MeasureUnit.STONE,
+                MeasureUnit.TON,
+                MeasureUnit.GIGAWATT,
+                MeasureUnit.HORSEPOWER,
+                MeasureUnit.KILOWATT,
+                MeasureUnit.MEGAWATT,
+                MeasureUnit.MILLIWATT,
+                MeasureUnit.WATT,
+                MeasureUnit.ATMOSPHERE,
+                MeasureUnit.BAR,
+                MeasureUnit.HECTOPASCAL,
+                MeasureUnit.INCH_HG,
+                MeasureUnit.KILOPASCAL,
+                MeasureUnit.MEGAPASCAL,
+                MeasureUnit.MILLIBAR,
+                MeasureUnit.MILLIMETER_OF_MERCURY,
+                MeasureUnit.PASCAL,
+                MeasureUnit.POUND_PER_SQUARE_INCH,
+                MeasureUnit.KILOMETER_PER_HOUR,
+                MeasureUnit.KNOT,
+                MeasureUnit.METER_PER_SECOND,
+                MeasureUnit.MILE_PER_HOUR,
+                MeasureUnit.CELSIUS,
+                MeasureUnit.FAHRENHEIT,
+                MeasureUnit.GENERIC_TEMPERATURE,
+                MeasureUnit.KELVIN,
+                MeasureUnit.NEWTON_METER,
+                MeasureUnit.POUND_FOOT,
+                MeasureUnit.ACRE_FOOT,
+                MeasureUnit.BARREL,
+                MeasureUnit.BUSHEL,
+                MeasureUnit.CENTILITER,
+                MeasureUnit.CUBIC_CENTIMETER,
+                MeasureUnit.CUBIC_FOOT,
+                MeasureUnit.CUBIC_INCH,
+                MeasureUnit.CUBIC_KILOMETER,
+                MeasureUnit.CUBIC_METER,
+                MeasureUnit.CUBIC_MILE,
+                MeasureUnit.CUBIC_YARD,
+                MeasureUnit.CUP,
+                MeasureUnit.CUP_METRIC,
+                MeasureUnit.DECILITER,
+                MeasureUnit.DESSERT_SPOON,
+                MeasureUnit.DESSERT_SPOON_IMPERIAL,
+                MeasureUnit.DRAM,
+                MeasureUnit.DROP,
+                MeasureUnit.FLUID_OUNCE,
+                MeasureUnit.FLUID_OUNCE_IMPERIAL,
+                MeasureUnit.GALLON,
+                MeasureUnit.GALLON_IMPERIAL,
+                MeasureUnit.HECTOLITER,
+                MeasureUnit.JIGGER,
+                MeasureUnit.LITER,
+                MeasureUnit.MEGALITER,
+                MeasureUnit.MILLILITER,
+                MeasureUnit.PINCH,
+                MeasureUnit.PINT,
+                MeasureUnit.PINT_METRIC,
+                MeasureUnit.QUART,
+                MeasureUnit.QUART_IMPERIAL,
+                MeasureUnit.TABLESPOON,
+                MeasureUnit.TEASPOON,
+        };
+        assertEquals("",  184, units.length);
+    }
+
+    @Test
     public void TestExamplesInDocs() {
         MeasureFormat fmtFr = MeasureFormat.getInstance(
                 ULocale.FRENCH, FormatWidth.SHORT);
@@ -2086,7 +2289,7 @@
                 {ULocale.ENGLISH, FormatWidth.SHORT, "2 mi, 1 ft, 2.3 in"},
                 {ULocale.ENGLISH, FormatWidth.NARROW, "2mi 1\u2032 2.3\u2033"},
                 {russia, FormatWidth.WIDE,   "2 \u043C\u0438\u043B\u0438 1 \u0444\u0443\u0442 2,3 \u0434\u044E\u0439\u043C\u0430"},
-                {russia, FormatWidth.SHORT,  "2 \u043C\u0438\u043B\u0438 1 \u0444\u0442 2,3 \u0434\u044E\u0439\u043C."},
+                {russia, FormatWidth.SHORT,  "2 \u043C\u0438 1 \u0444\u0442 2,3 \u0434\u044E\u0439\u043C."},
                 {russia, FormatWidth.NARROW, "2 \u043C\u0438\u043B\u044C 1 \u0444\u0442 2,3 \u0434\u044E\u0439\u043C\u0430"},
    };
         for (Object[] row : data) {
@@ -2121,7 +2324,7 @@
             { ULocale.GERMAN,   FormatWidth.NUMERIC, "5:37" },
             { ULocale.ENGLISH,  FormatWidth.NARROW,  "5h 37m" },
             { ULocale.ENGLISH,  FormatWidth.NUMERIC, "5:37" },
-            { ulocSpanish,      FormatWidth.NARROW,  "5 h 37 min" },
+            { ulocSpanish,      FormatWidth.NARROW,  "5h 37min" },
             { ulocSpanish,      FormatWidth.NUMERIC, "5:37" },
             { ulocFinnish,      FormatWidth.NARROW,  "5t 37min" },
             { ulocFinnish,      FormatWidth.NUMERIC, "5.37" },
@@ -2135,7 +2338,7 @@
             { ulocNorwegianBok, FormatWidth.NUMERIC, "5:37" },
             { ulocDutch,        FormatWidth.NARROW,  "5 u, 37 m" },
             { ulocDutch,        FormatWidth.NUMERIC, "5:37" },
-            { ulocNorwegianNyn, FormatWidth.NARROW,  "5t og 37m" },
+            { ulocNorwegianNyn, FormatWidth.NARROW,  "5t 37m" },
             { ulocNorwegianNyn, FormatWidth.NUMERIC, "5:37" },
             { ulocSwedish,      FormatWidth.NARROW,  "5h 37m" },
             { ulocSwedish,      FormatWidth.NUMERIC, "5:37" },
@@ -2452,7 +2655,7 @@
         // This fails unless we resolve to MeasureUnit.POUND_PER_SQUARE_INCH
         assertEquals("", "50 psi",
                 fmt.formatMeasurePerUnit(
-                        new Measure(50, MeasureUnit.POUND),
+                        new Measure(50, MeasureUnit.POUND_FORCE),
                         MeasureUnit.SQUARE_INCH,
                         new StringBuilder(),
                         new FieldPosition(0)).toString());
@@ -3139,7 +3342,7 @@
      * @return
      */
     private String showBytes(byte[] contents) {
-      StringBuilder b = new StringBuilder('[');
+      StringBuilder b = new StringBuilder("[");
       for (int i = 0; i < contents.length; ++i) {
         int item = contents[i] & 0xFF;
         if (item >= 0x20 && item <= 0x7F) {
@@ -3285,4 +3488,405 @@
         fmt = MeasureFormat.getInstance(ULocale.forLanguageTag("da"), FormatWidth.NUMERIC);
         Assert.assertEquals("2.03,877", fmt.formatMeasures(fhours, fminutes));
     }
+
+    @Test
+    public void TestIdentifiers() {
+        class TestCase {
+            final String id;
+            final String normalized;
+
+            TestCase(String id, String normalized) {
+                this.id = id;
+                this.normalized = normalized;
+            }
+        }
+
+        TestCase cases[] = {
+                // Correctly normalized identifiers should not change
+                new TestCase("square-meter-per-square-meter", "square-meter-per-square-meter"),
+                new TestCase("kilogram-meter-per-square-meter-square-second",
+                        "kilogram-meter-per-square-meter-square-second"),
+                new TestCase("square-mile-and-square-foot", "square-mile-and-square-foot"),
+                new TestCase("square-foot-and-square-mile", "square-foot-and-square-mile"),
+                new TestCase("per-cubic-centimeter", "per-cubic-centimeter"),
+                new TestCase("per-kilometer", "per-kilometer"),
+
+                // Normalization of power and per
+                new TestCase(
+                        "pow2-foot-and-pow2-mile", "square-foot-and-square-mile"),
+                new TestCase(
+                        "gram-square-gram-per-dekagram", "cubic-gram-per-dekagram"),
+                new TestCase(
+                        "kilogram-per-meter-per-second", "kilogram-per-meter-second"),
+
+                // TODO(ICU-21284): Add more test cases once the proper ranking is available.
+        };
+
+
+        for (TestCase testCase : cases) {
+            MeasureUnit unit = MeasureUnit.forIdentifier(testCase.id);
+
+            final String actual = unit.getIdentifier();
+            assertEquals(testCase.id, testCase.normalized, actual);
+        }
+
+        assertEquals("for empty identifiers, the MeasureUnit will be null",
+                null, MeasureUnit.forIdentifier(""));
+    }
+
+    @Test
+    public void TestInvalidIdentifiers() {
+        final String inputs[] = {
+                "kilo",
+                "kilokilo",
+                "onekilo",
+                "meterkilo",
+                "meter-kilo",
+                "k",
+                "meter-",
+                "meter+",
+                "-meter",
+                "+meter",
+                "-kilometer",
+                "+kilometer",
+                "-pow2-meter",
+                "+pow2-meter",
+                "p2-meter",
+                "p4-meter",
+                "+",
+                "-",
+                "-mile",
+                "-and-mile",
+                "-per-mile",
+                "one",
+                "one-one",
+                "one-per-mile",
+                "one-per-cubic-centimeter",
+                "square--per-meter",
+                "metersecond", // Must have compound part in between single units
+
+                // Negative powers not supported in mixed units yet. TODO(CLDR-13701).
+                "per-hour-and-hertz",
+                "hertz-and-per-hour",
+
+                // Compound units not supported in mixed units yet. TODO(CLDR-13700).
+                "kilonewton-meter-and-newton-meter",
+        };
+
+        for (String input : inputs) {
+            try {
+                MeasureUnit.forIdentifier(input);
+                Assert.fail("An IllegalArgumentException must be thrown");
+            } catch (IllegalArgumentException e) {
+                continue;
+            }
+        }
+    }
+
+    @Test
+    public void TestCompoundUnitOperations() {
+        MeasureUnit.forIdentifier("kilometer-per-second-joule");
+
+        MeasureUnit kilometer = MeasureUnit.KILOMETER;
+        MeasureUnit cubicMeter = MeasureUnit.CUBIC_METER;
+        MeasureUnit meter = kilometer.withSIPrefix(MeasureUnit.SIPrefix.ONE);
+        MeasureUnit centimeter1 = kilometer.withSIPrefix(MeasureUnit.SIPrefix.CENTI);
+        MeasureUnit centimeter2 = meter.withSIPrefix(MeasureUnit.SIPrefix.CENTI);
+        MeasureUnit cubicDecimeter = cubicMeter.withSIPrefix(MeasureUnit.SIPrefix.DECI);
+
+        verifySingleUnit(kilometer, MeasureUnit.SIPrefix.KILO, 1, "kilometer");
+        verifySingleUnit(meter, MeasureUnit.SIPrefix.ONE, 1, "meter");
+        verifySingleUnit(centimeter1, MeasureUnit.SIPrefix.CENTI, 1, "centimeter");
+        verifySingleUnit(centimeter2, MeasureUnit.SIPrefix.CENTI, 1, "centimeter");
+        verifySingleUnit(cubicDecimeter, MeasureUnit.SIPrefix.DECI, 3, "cubic-decimeter");
+
+        assertTrue("centimeter equality", centimeter1.equals( centimeter2));
+        assertTrue("kilometer inequality", !centimeter1.equals( kilometer));
+
+        MeasureUnit squareMeter = meter.withDimensionality(2);
+        MeasureUnit overCubicCentimeter = centimeter1.withDimensionality(-3);
+        MeasureUnit quarticKilometer = kilometer.withDimensionality(4);
+        MeasureUnit overQuarticKilometer1 = kilometer.withDimensionality(-4);
+
+        verifySingleUnit(squareMeter, MeasureUnit.SIPrefix.ONE, 2, "square-meter");
+        verifySingleUnit(overCubicCentimeter, MeasureUnit.SIPrefix.CENTI, -3, "per-cubic-centimeter");
+        verifySingleUnit(quarticKilometer, MeasureUnit.SIPrefix.KILO, 4, "pow4-kilometer");
+        verifySingleUnit(overQuarticKilometer1, MeasureUnit.SIPrefix.KILO, -4, "per-pow4-kilometer");
+
+        assertTrue("power inequality", quarticKilometer != overQuarticKilometer1);
+
+        MeasureUnit overQuarticKilometer2 = quarticKilometer.reciprocal();
+        MeasureUnit overQuarticKilometer3 = kilometer.product(kilometer)
+                .product(kilometer)
+                .product(kilometer)
+                .reciprocal();
+        MeasureUnit overQuarticKilometer4 = meter.withDimensionality(4)
+                .reciprocal()
+                .withSIPrefix(MeasureUnit.SIPrefix.KILO);
+
+        verifySingleUnit(overQuarticKilometer2, MeasureUnit.SIPrefix.KILO, -4, "per-pow4-kilometer");
+        verifySingleUnit(overQuarticKilometer3, MeasureUnit.SIPrefix.KILO, -4, "per-pow4-kilometer");
+        verifySingleUnit(overQuarticKilometer4, MeasureUnit.SIPrefix.KILO, -4, "per-pow4-kilometer");
+
+        assertTrue("reciprocal equality", overQuarticKilometer1.equals(overQuarticKilometer2));
+        assertTrue("reciprocal equality", overQuarticKilometer1.equals(overQuarticKilometer3));
+        assertTrue("reciprocal equality", overQuarticKilometer1.equals(overQuarticKilometer4));
+
+        MeasureUnit kiloSquareSecond = MeasureUnit.SECOND
+                .withDimensionality(2).withSIPrefix(MeasureUnit.SIPrefix.KILO);
+        MeasureUnit meterSecond = meter.product(kiloSquareSecond);
+        MeasureUnit cubicMeterSecond1 = meter.withDimensionality(3).product(kiloSquareSecond);
+        MeasureUnit centimeterSecond1 = meter.withSIPrefix(MeasureUnit.SIPrefix.CENTI).product(kiloSquareSecond);
+        MeasureUnit secondCubicMeter = kiloSquareSecond.product(meter.withDimensionality(3));
+        MeasureUnit secondCentimeter = kiloSquareSecond.product(meter.withSIPrefix(MeasureUnit.SIPrefix.CENTI));
+        MeasureUnit secondCentimeterPerKilometer = secondCentimeter.product(kilometer.reciprocal());
+
+        verifySingleUnit(kiloSquareSecond, MeasureUnit.SIPrefix.KILO, 2, "square-kilosecond");
+        String meterSecondSub[] = {
+                "meter", "square-kilosecond"
+        };
+        verifyCompoundUnit(meterSecond, "meter-square-kilosecond",
+                meterSecondSub, meterSecondSub.length);
+        String cubicMeterSecond1Sub[] = {
+                "cubic-meter", "square-kilosecond"
+        };
+        verifyCompoundUnit(cubicMeterSecond1, "cubic-meter-square-kilosecond",
+                cubicMeterSecond1Sub, cubicMeterSecond1Sub.length);
+        String centimeterSecond1Sub[] = {
+                "centimeter", "square-kilosecond"
+        };
+        verifyCompoundUnit(centimeterSecond1, "centimeter-square-kilosecond",
+                centimeterSecond1Sub, centimeterSecond1Sub.length);
+        String secondCubicMeterSub[] = {
+                "cubic-meter", "square-kilosecond"
+        };
+        verifyCompoundUnit(secondCubicMeter, "cubic-meter-square-kilosecond",
+                secondCubicMeterSub, secondCubicMeterSub.length);
+        String secondCentimeterSub[] = {
+                "centimeter", "square-kilosecond"
+        };
+        verifyCompoundUnit(secondCentimeter, "centimeter-square-kilosecond",
+                secondCentimeterSub, secondCentimeterSub.length);
+        String secondCentimeterPerKilometerSub[] = {
+                "centimeter", "square-kilosecond", "per-kilometer"
+        };
+        verifyCompoundUnit(secondCentimeterPerKilometer, "centimeter-square-kilosecond-per-kilometer",
+                secondCentimeterPerKilometerSub, secondCentimeterPerKilometerSub.length);
+
+        assertTrue("reordering equality", cubicMeterSecond1.equals(secondCubicMeter));
+        assertTrue("additional simple units inequality", !secondCubicMeter.equals(secondCentimeter));
+
+        // Don't allow get/set power or SI prefix on compound units
+        try {
+            meterSecond.getDimensionality();
+            fail("UnsupportedOperationException must be thrown");
+        } catch (UnsupportedOperationException e) {
+            // Expecting an exception to be thrown
+        }
+
+        try {
+            meterSecond.withDimensionality(3);
+            fail("UnsupportedOperationException must be thrown");
+        } catch (UnsupportedOperationException e) {
+            // Expecting an exception to be thrown
+        }
+
+        try {
+            meterSecond.getSIPrefix();
+            fail("UnsupportedOperationException must be thrown");
+        } catch (UnsupportedOperationException e) {
+            // Expecting an exception to be thrown
+        }
+
+        try {
+            meterSecond.withSIPrefix(MeasureUnit.SIPrefix.CENTI);
+            fail("UnsupportedOperationException must be thrown");
+        } catch (UnsupportedOperationException e) {
+            // Expecting an exception to be thrown
+        }
+
+        MeasureUnit footInch = MeasureUnit.forIdentifier("foot-and-inch");
+        MeasureUnit inchFoot = MeasureUnit.forIdentifier("inch-and-foot");
+
+        String footInchSub[] = {
+                "foot", "inch"
+        };
+        verifyMixedUnit(footInch, "foot-and-inch",
+                footInchSub, footInchSub.length);
+        String inchFootSub[] = {
+                "inch", "foot"
+        };
+        verifyMixedUnit(inchFoot, "inch-and-foot",
+                inchFootSub, inchFootSub.length);
+
+        assertTrue("order matters inequality", !footInch.equals(inchFoot));
+
+
+        MeasureUnit dimensionless  = NoUnit.BASE;
+        MeasureUnit dimensionless2 = MeasureUnit.forIdentifier("");
+        assertEquals("dimensionless equality", dimensionless, dimensionless2);
+
+        // We support starting from an "identity" MeasureUnit and then combining it
+        // with others via product:
+        MeasureUnit kilometer2 = kilometer.product(dimensionless);
+
+        verifySingleUnit(kilometer2, MeasureUnit.SIPrefix.KILO, 1, "kilometer");
+        assertTrue("kilometer equality", kilometer.equals(kilometer2));
+
+        // Test out-of-range powers
+        MeasureUnit power15 = MeasureUnit.forIdentifier("pow15-kilometer");
+        verifySingleUnit(power15, MeasureUnit.SIPrefix.KILO, 15, "pow15-kilometer");
+
+        try {
+            MeasureUnit.forIdentifier("pow16-kilometer");
+            fail("An IllegalArgumentException must be thrown");
+        } catch (IllegalArgumentException e) {
+            // Expecting an exception to be thrown
+        }
+
+        try {
+            power15.product(kilometer);
+            fail("An IllegalArgumentException must be thrown");
+        } catch (IllegalArgumentException e) {
+            // Expecting an exception to be thrown
+        }
+
+        MeasureUnit powerN15 = MeasureUnit.forIdentifier("per-pow15-kilometer");
+        verifySingleUnit(powerN15, MeasureUnit.SIPrefix.KILO, -15, "per-pow15-kilometer");
+
+        try {
+            MeasureUnit.forIdentifier("per-pow16-kilometer");
+            fail("An IllegalArgumentException must be thrown");
+        } catch (IllegalArgumentException e) {
+            // Expecting an exception to be thrown
+        }
+
+        try {
+            powerN15.product(overQuarticKilometer1);
+            fail("An IllegalArgumentException must be thrown");
+        } catch (IllegalArgumentException e) {
+            // Expecting an exception to be thrown
+        }
+    }
+
+    @Test
+    public void TestDimensionlessBehaviour() {
+        MeasureUnit dimensionless = MeasureUnit.forIdentifier("");
+        MeasureUnit dimensionless2 = NoUnit.BASE;
+        MeasureUnit dimensionless3 = null;
+        MeasureUnit dimensionless4 = MeasureUnit.forIdentifier(null);
+
+        assertEquals("dimensionless must be equals", dimensionless, dimensionless2);
+        assertEquals("dimensionless must be equals", dimensionless2, dimensionless3);
+        assertEquals("dimensionless must be equals", dimensionless3, dimensionless4);
+
+        // product(dimensionless)
+        MeasureUnit mile = MeasureUnit.MILE;
+        mile = mile.product(dimensionless);
+        verifySingleUnit(mile, MeasureUnit.SIPrefix.ONE, 1, "mile");
+    }
+
+    private void verifySingleUnit(MeasureUnit singleMeasureUnit, MeasureUnit.SIPrefix prefix, int power, String identifier) {
+        assertEquals(identifier + ": SI prefix", prefix, singleMeasureUnit.getSIPrefix());
+
+        assertEquals(identifier + ": Power", power, singleMeasureUnit.getDimensionality());
+
+        assertEquals(identifier + ": Identifier", identifier, singleMeasureUnit.getIdentifier());
+
+        assertTrue(identifier + ": Constructor", singleMeasureUnit.equals(MeasureUnit.forIdentifier(identifier)));
+
+        assertEquals(identifier + ": Complexity", MeasureUnit.Complexity.SINGLE, singleMeasureUnit.getComplexity());
+    }
+
+
+    // Kilogram is a "base unit", although it's also "gram" with a kilo- prefix.
+    // This tests that it is handled in the preferred manner.
+    @Test
+    public void TestKilogramIdentifier() {
+        // SI unit of mass
+        MeasureUnit kilogram = MeasureUnit.forIdentifier("kilogram");
+        // Metric mass unit
+        MeasureUnit gram = MeasureUnit.forIdentifier("gram");
+        // Microgram: still a built-in type
+        MeasureUnit microgram = MeasureUnit.forIdentifier("microgram");
+        // Nanogram: not a built-in type at this time
+        MeasureUnit nanogram = MeasureUnit.forIdentifier("nanogram");
+
+        assertEquals("parsed kilogram equals built-in kilogram", MeasureUnit.KILOGRAM.getType(),
+                kilogram.getType());
+        assertEquals("parsed kilogram equals built-in kilogram", MeasureUnit.KILOGRAM.getSubtype(),
+                kilogram.getSubtype());
+        assertEquals("parsed gram equals built-in gram", MeasureUnit.GRAM.getType(), gram.getType());
+        assertEquals("parsed gram equals built-in gram", MeasureUnit.GRAM.getSubtype(),
+                gram.getSubtype());
+        assertEquals("parsed microgram equals built-in microgram", MeasureUnit.MICROGRAM.getType(),
+                microgram.getType());
+        assertEquals("parsed microgram equals built-in microgram", MeasureUnit.MICROGRAM.getSubtype(),
+                microgram.getSubtype());
+        assertEquals("nanogram", null, nanogram.getType());
+        assertEquals("nanogram", "nanogram", nanogram.getIdentifier());
+
+        assertEquals("prefix of kilogram", MeasureUnit.SIPrefix.KILO, kilogram.getSIPrefix());
+        assertEquals("prefix of gram", MeasureUnit.SIPrefix.ONE, gram.getSIPrefix());
+        assertEquals("prefix of microgram", MeasureUnit.SIPrefix.MICRO, microgram.getSIPrefix());
+        assertEquals("prefix of nanogram", MeasureUnit.SIPrefix.NANO, nanogram.getSIPrefix());
+
+        MeasureUnit tmp = kilogram.withSIPrefix(MeasureUnit.SIPrefix.MILLI);
+        assertEquals("Kilogram + milli should be milligram, got: " + tmp.getIdentifier(),
+                MeasureUnit.MILLIGRAM.getIdentifier(), tmp.getIdentifier());
+    }
+
+    private void verifyCompoundUnit(
+            MeasureUnit unit,
+            String identifier,
+            String subIdentifiers[],
+            int subIdentifierCount) {
+        assertEquals(identifier + ": Identifier",
+                identifier,
+                unit.getIdentifier());
+
+        assertTrue(identifier + ": Constructor",
+                unit.equals(MeasureUnit.forIdentifier(identifier)));
+
+        assertEquals(identifier + ": Complexity",
+                MeasureUnit.Complexity.COMPOUND,
+                unit.getComplexity());
+
+        List<MeasureUnit> subUnits = unit.splitToSingleUnits();
+        assertEquals(identifier + ": Length", subIdentifierCount, subUnits.size());
+        for (int i = 0; ; i++) {
+            if (i >= subIdentifierCount || i >= subUnits.size()) break;
+            assertEquals(identifier + ": Sub-unit #" + i,
+                    subIdentifiers[i],
+                    subUnits.get(i).getIdentifier());
+            assertEquals(identifier + ": Sub-unit Complexity",
+                    MeasureUnit.Complexity.SINGLE,
+                    subUnits.get(i).getComplexity());
+        }
+    }
+
+    private void verifyMixedUnit(
+            MeasureUnit unit,
+            String identifier,
+            String subIdentifiers[],
+            int subIdentifierCount) {
+        assertEquals(identifier + ": Identifier",
+                identifier,
+                unit.getIdentifier());
+        assertTrue(identifier + ": Constructor",
+                unit.equals(MeasureUnit.forIdentifier(identifier)));
+
+        assertEquals(identifier + ": Complexity",
+                MeasureUnit.Complexity.MIXED,
+                unit.getComplexity());
+
+        List<MeasureUnit> subUnits = unit.splitToSingleUnits();
+        assertEquals(identifier + ": Length", subIdentifierCount, subUnits.size());
+        for (int i = 0; ; i++) {
+            if (i >= subIdentifierCount || i >= subUnits.size()) break;
+            assertEquals(identifier + ": Sub-unit #" + i,
+                    subIdentifiers[i],
+                    subUnits.get(i).getIdentifier());
+        }
+    }
 }
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/MeasureUnitThreadTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/MeasureUnitThreadTest.java
index b075142..fe36bfa 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/MeasureUnitThreadTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/MeasureUnitThreadTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 package android.icu.dev.test.format;
 
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/MessagePatternUtilTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/MessagePatternUtilTest.java
index e5fab06..8fdea4e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/MessagePatternUtilTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/MessagePatternUtilTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011-2012, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/MessageRegressionTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/MessageRegressionTest.java
index f0947c9..200f951 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/MessageRegressionTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/MessageRegressionTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2005-2011, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatDataDrivenTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatDataDrivenTest.java
index 96998f9..6c90465 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatDataDrivenTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatDataDrivenTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.format;
 
 import java.math.BigDecimal;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatJavaCompatilityTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatJavaCompatilityTest.java
index 5d11c40..212cda0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatJavaCompatilityTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatJavaCompatilityTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.format;
 
 import static org.junit.Assert.assertEquals;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatRegistrationTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatRegistrationTest.java
index 6243d2e..a5c4fc7 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatRegistrationTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatRegistrationTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatRegressionTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatRegressionTest.java
index 5bf8dbd..4d9c9f2 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatRegressionTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatRegressionTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2012, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatRoundTripTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatRoundTripTest.java
index 98815d2..e05f78e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatRoundTripTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatRoundTripTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatSerialTestData.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatSerialTestData.java
index eb105e4..9ac3c0c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatSerialTestData.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatSerialTestData.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2004, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatSpecificationTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatSpecificationTest.java
index 5b7a3e9..a45292e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatSpecificationTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatSpecificationTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
@@ -133,9 +133,7 @@
             DecimalFormatSymbols sym = new DecimalFormatSymbols(ULocale.FRANCE);
             DecimalFormat fmt = new DecimalFormat("¤¤ **#######0", sym);
             fmt.setCurrency(Currency.getInstance("JPY"));
-            if (!logKnownIssue("11025", "Padding broken when used with currencies")) {
-                assertEquals("", "JPY ****433", fmt.format(433.22));
-            }
+            assertEquals("", "JPY ****433", fmt.format(433.22));
         }
         {
             DecimalFormatSymbols sym = new DecimalFormatSymbols(ULocale.US);
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatTest.java
index 76f483c..5505837 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2016, International Business Machines Corporation and
@@ -682,7 +682,7 @@
     @Test
     public void TestCurrency() {
         String[] DATA = {
-                "fr_CA", "1,50\u00a0$",
+                "fr_CA", "1,50\u00a0$\u00a0CA",
                 "de_DE", "1,50\u00a0\u20AC",
                 "de_DE@currency=DEM", "1,50\u00a0DM",
                 "fr_FR", "1,50\u00a0\u20AC",
@@ -6139,6 +6139,41 @@
             actual = df.format(l);
             assertEquals("Output is wrong for 2, "+i, allExpected[i][1], actual);
         }
+
+        String[] locales = {"en-US", "es"};
+        int[] groupingDigits = {
+          1,
+          DecimalFormat.MINIMUM_GROUPING_DIGITS_AUTO,
+          DecimalFormat.MINIMUM_GROUPING_DIGITS_MIN2
+        };
+        int[] values = {1000, 10000};
+        String[] allExpected2 = {
+          // locale: en-US
+          "1,000", "10,000",  // minimumGroupingDigits = 1
+          "1,000", "10,000",  // minimumGroupingDigits = MINIMUM_GROUPING_DIGITS_AUTO
+          "1000" , "10,000",  // minimumGroupingDigits = MINIMUM_GROUPING_DIGITS_MIN2
+          // locale: es
+          "1.000", "10.000",  // minimumGroupingDigits = 1
+          "1000",  "10.000",  // minimumGroupingDigits = MINIMUM_GROUPING_DIGITS_AUTO
+          "1000",  "10.000"   // minimumGroupingDigits = MINIMUM_GROUPING_DIGITS_MIN2
+        };
+
+        int i = 0;
+        for (String locale : locales) {
+          for (int minimumGroupingDigits : groupingDigits) {
+            for (int value : values) {
+              NumberFormat f = NumberFormat.getInstance(new ULocale(locale));
+              df = (DecimalFormat) f;
+              df.setMinimumGroupingDigits(minimumGroupingDigits);
+              String actual = df.format(value);
+              String expected = allExpected2[i++];
+              assertEquals("Output is wrong for " + value +
+                  " locale=" + locale + " minimumGroupingDigits=" + minimumGroupingDigits,
+                  expected, actual);
+            }
+          }
+        }
+
     }
 
     @Test
@@ -6797,4 +6832,94 @@
         DecimalFormat decimalFormat = (DecimalFormat) NumberFormat.getInstance(ULocale.US, NumberFormat.PLURALCURRENCYSTYLE);
         assertEquals("Currency pattern", "#,##0.00 ¤¤¤", decimalFormat.toPattern());
     }
+
+    @Test
+    public void test13733_StrictAndLenient() {
+        Object[][] cases = { {"CA$ 12", "¤ 0", 12, 12},
+                {"CA$12", "¤0", 12, 12},
+                {"CAD 12", "¤¤ 0", 12, 12},
+                {"12 CAD", "0 ¤¤", 12, 12},
+                {"12 Canadian dollars", "0 ¤¤¤", 12, 12},
+                {"$12 ", "¤¤¤¤0", 12, 12},
+                {"12$", "0¤¤¤¤", 12, 12},
+                {"CA$ 12", "¤0", 0, 12},
+                {"CA$ 12", "0 ¤¤", 0, 12},
+                {"CA$ 12", "0 ¤¤¤", 0, 12},
+                {"CA$ 12", "¤¤¤¤0", 0, 12},
+                {"CA$ 12", "0¤¤¤¤", 0, 12},
+                {"CA$12", "¤ 0", 0, 12},
+                {"CA$12", "¤¤ 0", 0, 12},
+                {"CA$12", "0 ¤¤", 0, 12},
+                {"CA$12", "0 ¤¤¤", 0, 12},
+                {"CA$12", "0¤¤¤¤", 0, 12},
+                {"CAD 12", "¤0", 0, 12},
+                {"CAD 12", "0 ¤¤", 0, 12},
+                {"CAD 12", "0 ¤¤¤", 0, 12},
+                {"CAD 12", "¤¤¤¤0", 0, 12},
+                {"CAD 12", "0¤¤¤¤", 0, 12},
+                {"12 CAD", "¤ 0", 0, 12},
+                {"12 CAD", "¤0", 0, 12},
+                {"12 CAD", "¤¤ 0", 0, 12},
+                {"12 CAD", "¤¤¤¤0", 0, 12},
+                {"12 CAD", "0¤¤¤¤", 0, 12},
+                {"12 Canadian dollars", "¤ 0", 0, 12},
+                {"12 Canadian dollars", "¤0", 0, 12},
+                {"12 Canadian dollars", "¤¤ 0", 0, 12},
+                {"12 Canadian dollars", "¤¤¤¤0", 0, 12},
+                {"12 Canadian dollars", "0¤¤¤¤", 0, 12},
+                {"$12 ", "¤ 0", 0, 12},
+                {"$12 ", "¤¤ 0", 0, 12},
+                {"$12 ", "0 ¤¤", 0, 12},
+                {"$12 ", "0 ¤¤¤", 0, 12},
+                {"$12 ", "0¤¤¤¤", 0, 12},
+                {"12$", "¤ 0", 0, 12},
+                {"12$", "¤0", 0, 12},
+                {"12$", "¤¤ 0", 0, 12},
+                {"12$", "0 ¤¤", 0, 12},
+                {"12$", "0 ¤¤¤", 0, 12},
+                {"12$", "¤¤¤¤0", 0, 12} };
+
+        for (Object[] cas : cases) {
+            String inputString = (String) cas[0];
+            String patternString = (String) cas[1];
+            int expectedStrictParse = (int) cas[2];
+            int expectedLenientParse = (int) cas[3];
+
+            int parsedStrictValue = 0;
+            int parsedLenientValue = 0;
+            ParsePosition ppos = new ParsePosition(0);
+            DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(ULocale.ENGLISH);
+            DecimalFormat df = new DecimalFormat(patternString, dfs);
+
+            df.setParseStrict(true);
+            CurrencyAmount ca_strict = df.parseCurrency(inputString, ppos);
+            if (null != ca_strict) {
+                parsedStrictValue = ca_strict.getNumber().intValue();
+            }
+            assertEquals("Strict parse of " + inputString + " using " + patternString,
+                    parsedStrictValue, expectedStrictParse);
+
+            ppos.setIndex(0);
+            df.setParseStrict(false);
+            CurrencyAmount ca_lenient = df.parseCurrency(inputString, ppos);
+            if (null != ca_lenient) {
+                parsedLenientValue = ca_lenient.getNumber().intValue();
+            }
+            assertEquals("Strict parse of " + inputString + " using " + patternString,
+                    parsedLenientValue, expectedLenientParse);
+        }
+    }
+
+    @Test
+    public void Test21232_ParseTimeout() throws ParseException {
+        DecimalFormat df = new DecimalFormat();
+        StringBuilder input = new StringBuilder();
+        input.append("4444444444444444444444444444444444444444");
+        for (int i = 0; i < 8; i++) {
+            input.append(input);
+        }
+        assertEquals("Long input of digits", 10240, input.length());
+        df.parse(input.toString());
+        // Should not hang
+    }
 }
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatTestCases.txt b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatTestCases.txt
index 18cb765..25eeb91 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatTestCases.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberFormatTestCases.txt
@@ -1,6 +1,6 @@
 #######################################################################
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #######################################################################
 #######################################################################
 # Copyright (c) 2004, 2012 International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberRegressionTests.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberRegressionTests.java
index 8df7ac3..18a1b96 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberRegressionTests.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/NumberRegressionTests.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*****************************************************************************************
  *
  * Copyright (C) 1996-2016, International Business Machines
@@ -555,7 +555,7 @@
         String expectedPercent = "-578 998%";
     */
         String expectedDefault = "-5\u00a0789,988";
-        String expectedCurrency = "5\u00a0789,99\u00a0$";
+        String expectedCurrency = "5\u00a0789,99\u00a0$\u00a0CA";
         String expectedPercent = "-578\u00a0999\u00A0%";
 
         formatter = NumberFormat.getNumberInstance(Locale.CANADA_FRENCH);
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralFormatTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralFormatTest.java
index 65ead5a..1e86d11 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralFormatTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralFormatTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralFormatUnitTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralFormatUnitTest.java
index 29618b2..54f0272 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralFormatUnitTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralFormatUnitTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralRangesTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralRangesTest.java
index e6c8a46..c3add20 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralRangesTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralRangesTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2016, International Business Machines Corporation and
@@ -11,7 +11,6 @@
 
 import java.util.Arrays;
 
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -19,12 +18,14 @@
 import android.icu.dev.test.TestFmwk;
 import android.icu.impl.SimpleFormatterImpl;
 import android.icu.impl.StandardPlural;
+import android.icu.impl.number.range.StandardPluralRanges;
+import android.icu.number.FormattedNumberRange;
+import android.icu.number.NumberFormatter;
+import android.icu.number.NumberFormatter.UnitWidth;
+import android.icu.number.NumberRangeFormatter;
 import android.icu.text.MeasureFormat;
 import android.icu.text.MeasureFormat.FormatWidth;
-import android.icu.text.PluralRanges;
-import android.icu.text.PluralRules.Factory;
 import android.icu.util.Currency;
-import android.icu.util.Measure;
 import android.icu.util.MeasureUnit;
 import android.icu.util.ULocale;
 import android.icu.testsharding.MainTestShard;
@@ -40,7 +41,7 @@
     public void TestLocaleData() {
         String[][] tests = {
                 {"de", "other", "one", "one"},
-                {"xxx", "few", "few", "few" },
+                {"xxx", "other", "other", "other" },
                 {"de", "one", "other", "other"},
                 {"de", "other", "one", "one"},
                 {"de", "other", "other", "other"},
@@ -53,9 +54,9 @@
             final StandardPlural start = StandardPlural.fromString(test[1]);
             final StandardPlural end = StandardPlural.fromString(test[2]);
             final StandardPlural expected = StandardPlural.fromString(test[3]);
-            final PluralRanges pluralRanges = Factory.getDefaultFactory().getPluralRanges(locale);
+            final StandardPluralRanges pluralRanges = StandardPluralRanges.forLocale(locale);
 
-            StandardPlural actual = pluralRanges.get(start, end);
+            StandardPlural actual = pluralRanges.resolve(start, end);
             assertEquals("Deriving range category", expected, actual);
         }
     }
@@ -76,30 +77,28 @@
         }
     }
 
-    // TODO: Re-enable this test when #12454 is fixed.
-    @Ignore("http://bugs.icu-project.org/trac/ticket/12454")
     @Test
     public void TestFormatting() {
         Object[][] tests = {
-                {0.0, 1.0, ULocale.FRANCE, FormatWidth.WIDE, MeasureUnit.FAHRENHEIT, "0–1 degré Fahrenheit"},
-                {1.0, 2.0, ULocale.FRANCE, FormatWidth.WIDE, MeasureUnit.FAHRENHEIT, "1–2 degrés Fahrenheit"},
-                {3.1, 4.25, ULocale.FRANCE, FormatWidth.SHORT, MeasureUnit.FAHRENHEIT, "3,1–4,25 °F"},
-                {3.1, 4.25, ULocale.ENGLISH, FormatWidth.SHORT, MeasureUnit.FAHRENHEIT, "3.1–4.25°F"},
-                {3.1, 4.25, ULocale.CHINESE, FormatWidth.WIDE, MeasureUnit.INCH, "3.1-4.25英寸"},
-                {0.0, 1.0, ULocale.ENGLISH, FormatWidth.WIDE, MeasureUnit.INCH, "0–1 inches"},
+                {0.0, 1.0, ULocale.FRANCE, UnitWidth.FULL_NAME, MeasureUnit.FAHRENHEIT, "0–1\u00A0degré Fahrenheit"},
+                {1.0, 2.0, ULocale.FRANCE, UnitWidth.FULL_NAME, MeasureUnit.FAHRENHEIT, "1–2\u00A0degrés Fahrenheit"},
+                {3.1, 4.25, ULocale.FRANCE, UnitWidth.SHORT, MeasureUnit.FAHRENHEIT, "3,1–4,25\u202F°F"},
+                {3.1, 4.25, ULocale.ENGLISH, UnitWidth.SHORT, MeasureUnit.FAHRENHEIT, "3.1–4.25°F"},
+                {3.1, 4.25, ULocale.CHINESE, UnitWidth.FULL_NAME, MeasureUnit.INCH, "3.1-4.25英寸"},
+                {0.0, 1.0, ULocale.ENGLISH, UnitWidth.FULL_NAME, MeasureUnit.INCH, "0–1 inches"},
 
-                {0.0, 1.0, ULocale.ENGLISH, FormatWidth.NARROW, Currency.getInstance("EUR"), "€0.00–1.00"},
-                {0.0, 1.0, ULocale.FRENCH, FormatWidth.NARROW, Currency.getInstance("EUR"), "0,00–1,00 €"},
-                {0.0, 100.0, ULocale.FRENCH, FormatWidth.NARROW, Currency.getInstance("JPY"), "0–100\u00a0JPY"},
+                {0.0, 1.0, ULocale.ENGLISH, UnitWidth.NARROW, Currency.getInstance("EUR"), "€0.00 – €1.00"},
+                {0.0, 1.0, ULocale.FRENCH, UnitWidth.NARROW, Currency.getInstance("EUR"), "0,00–1,00 €"},
+                {0.0, 100.0, ULocale.FRENCH, UnitWidth.NARROW, Currency.getInstance("JPY"), "0–100\u00a0¥"},
 
-                {0.0, 1.0, ULocale.ENGLISH, FormatWidth.SHORT, Currency.getInstance("EUR"), "EUR0.00–1.00"},
-                {0.0, 1.0, ULocale.FRENCH, FormatWidth.SHORT, Currency.getInstance("EUR"), "0,00–1,00\u00a0EUR"},
-                {0.0, 100.0, ULocale.FRENCH, FormatWidth.SHORT, Currency.getInstance("JPY"), "0–100\u00a0JPY"},
+                {0.0, 1.0, ULocale.ENGLISH, UnitWidth.SHORT, Currency.getInstance("EUR"), "€0.00 – €1.00"},
+                {0.0, 1.0, ULocale.FRENCH, UnitWidth.SHORT, Currency.getInstance("EUR"), "0,00–1,00\u00a0€"},
+                {0.0, 100.0, ULocale.FRENCH, UnitWidth.SHORT, Currency.getInstance("JPY"), "0–100\u00a0JPY"},
 
-                {0.0, 1.0, ULocale.ENGLISH, FormatWidth.WIDE, Currency.getInstance("EUR"), "0.00–1.00 euros"},
-                {0.0, 1.0, ULocale.FRENCH, FormatWidth.WIDE, Currency.getInstance("EUR"), "0,00–1,00 euro"},
-                {0.0, 2.0, ULocale.FRENCH, FormatWidth.WIDE, Currency.getInstance("EUR"), "0,00–2,00 euros"},
-                {0.0, 100.0, ULocale.FRENCH, FormatWidth.WIDE, Currency.getInstance("JPY"), "0–100 yens japonais"},
+                {0.0, 1.0, ULocale.ENGLISH, UnitWidth.FULL_NAME, Currency.getInstance("EUR"), "0.00–1.00 euros"},
+                {0.0, 1.0, ULocale.FRENCH, UnitWidth.FULL_NAME, Currency.getInstance("EUR"), "0,00–1,00 euro"},
+                {0.0, 2.0, ULocale.FRENCH, UnitWidth.FULL_NAME, Currency.getInstance("EUR"), "0,00–2,00 euros"},
+                {0.0, 100.0, ULocale.FRENCH, UnitWidth.FULL_NAME, Currency.getInstance("JPY"), "0–100 yens japonais"},
         };
         int i = 0;
         for (Object[] test : tests) {
@@ -107,34 +106,15 @@
             double low = (Double) test[0];
             double high = (Double) test[1];
             final ULocale locale = (ULocale) test[2];
-            final FormatWidth width = (FormatWidth) test[3];
+            final UnitWidth unitWidth = (UnitWidth) test[3];
             final MeasureUnit unit = (MeasureUnit) test[4];
-            final Object expected = test[5];
+            final String expected = (String) test[5];
 
-            MeasureFormat mf = MeasureFormat.getInstance(locale, width);
-            Object actual;
-            try {
-                // TODO: Fix this when range formatting is added again.
-                // To let the code compile, the following line does list formatting.
-                actual = mf.formatMeasures(new Measure(low, unit), new Measure(high, unit));
-            } catch (Exception e) {
-                actual = e.getClass();
-            }
-            assertEquals(i + " Formatting unit", expected, actual);
-        }
-    }
-
-    @Test
-    public void TestBasic() {
-        PluralRanges a = new PluralRanges();
-        a.add(StandardPlural.ONE, StandardPlural.OTHER, StandardPlural.ONE);
-        StandardPlural actual = a.get(StandardPlural.ONE, StandardPlural.OTHER);
-        assertEquals("range", StandardPlural.ONE, actual);
-        a.freeze();
-        try {
-            a.add(StandardPlural.ONE, StandardPlural.ONE, StandardPlural.ONE);
-            errln("Failed to cause exception on frozen instance");
-        } catch (UnsupportedOperationException e) {
+            FormattedNumberRange actual = NumberRangeFormatter.with()
+                .numberFormatterBoth(NumberFormatter.with().unit(unit).unitWidth(unitWidth))
+                .locale(locale)
+                .formatRange(low, high);
+            assertEquals(i + " Formatting unit", expected, actual.toString());
         }
     }
 }
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralRulesFactory.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralRulesFactory.java
index 966c120..59231cd 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralRulesFactory.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralRulesFactory.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013, Google Inc, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralRulesTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralRulesTest.java
index cf23155..de00e37 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralRulesTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/PluralRulesTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2015, International Business Machines Corporation and
@@ -43,8 +43,10 @@
 import android.icu.impl.Relation;
 import android.icu.impl.Utility;
 import android.icu.number.FormattedNumber;
+import android.icu.number.FormattedNumberRange;
 import android.icu.number.LocalizedNumberFormatter;
 import android.icu.number.NumberFormatter;
+import android.icu.number.NumberRangeFormatter;
 import android.icu.number.Precision;
 import android.icu.number.UnlocalizedNumberFormatter;
 import android.icu.text.NumberFormat;
@@ -191,6 +193,35 @@
         checkOldSamples(description, test, "other", SampleType.DECIMAL, 99d, 99.1, 99.2d, 999d);
     }
 
+    /**
+     * This test is for the support of X.YeZ scientific notation of numbers in
+     * the plural sample string.
+     */
+    @Test
+    public void testSamplesWithExponent() {
+        String description = "one: i = 0,1 @integer 0, 1, 1e5 @decimal 0.0~1.5, 1.1e5; "
+                + "many: e = 0 and i != 0 and i % 1000000 = 0 and v = 0 or e != 0..5"
+                + " @integer 1000000, 2e6, 3e6, 4e6, 5e6, 6e6, 7e6, … @decimal 2.1e6, 3.1e6, 4.1e6, 5.1e6, 6.1e6, 7.1e6, …; "
+                + "other:  @integer 2~17, 100, 1000, 10000, 100000, 2e5, 3e5, 4e5, 5e5, 6e5, 7e5, …"
+                + " @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 2.1e5, 3.1e5, 4.1e5, 5.1e5, 6.1e5, 7.1e5, …"
+                ;
+        // Creating the PluralRules object means being able to parse numbers
+        // like 1e5 and 1.1e5
+        PluralRules test = PluralRules.createRules(description);
+        checkNewSamples(description, test, "one", PluralRules.SampleType.INTEGER, "@integer 0, 1, 1e5", true,
+                new FixedDecimal(0));
+        checkNewSamples(description, test, "one", PluralRules.SampleType.DECIMAL, "@decimal 0.0~1.5, 1.1e5", true,
+                new FixedDecimal(0, 1));
+        checkNewSamples(description, test, "many", PluralRules.SampleType.INTEGER, "@integer 1000000, 2e6, 3e6, 4e6, 5e6, 6e6, 7e6, …", false,
+                new FixedDecimal(1000000));
+        checkNewSamples(description, test, "many", PluralRules.SampleType.DECIMAL, "@decimal 2.1e6, 3.1e6, 4.1e6, 5.1e6, 6.1e6, 7.1e6, …", false,
+                FixedDecimal.createWithExponent(2.1, 1, 6));
+        checkNewSamples(description, test, "other", PluralRules.SampleType.INTEGER, "@integer 2~17, 100, 1000, 10000, 100000, 2e5, 3e5, 4e5, 5e5, 6e5, 7e5, …", false,
+                new FixedDecimal(2));
+        checkNewSamples(description, test, "other", PluralRules.SampleType.DECIMAL, "@decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 2.1e5, 3.1e5, 4.1e5, 5.1e5, 6.1e5, 7.1e5, …", false,
+                new FixedDecimal(2.0, 1));
+    }
+
     public void checkOldSamples(String description, PluralRules rules, String keyword, SampleType sampleType,
             Double... expected) {
         Collection<Double> oldSamples = rules.getSamples(keyword, sampleType);
@@ -371,7 +402,10 @@
                             }
                             String old = collisionTest.get(item);
                             if (old != null) {
-                                errln(locale + "\tNon-unique rules: " + item + " => " + old + " & " + foundKeyword);
+                                if (!locale.getLanguage().equals("fr") ||
+                                        !logKnownIssue("21328", "fr Non-unique rules: 1e6 => one & many")) {
+                                    errln(locale + "\tNon-unique rules: " + item + " => " + old + " & " + foundKeyword);
+                                }
                                 rule.select(item);
                             } else {
                                 collisionTest.put(item, foundKeyword);
@@ -681,6 +715,10 @@
             uniqueRuleSet.add(PluralRules.getFunctionalEquivalent(locale, null));
         }
         for (ULocale locale : uniqueRuleSet) {
+            if (locale.getLanguage().equals("fr") &&
+                    logKnownIssue("21299", "PluralRules::getSamples cannot distinguish 1e5 from 100000")) {
+                continue;
+            }
             PluralRules rules = factory.forLocale(locale);
             logln("\nlocale: " + (locale == ULocale.ROOT ? "root" : locale.toString()) + ", rules: " + rules);
             Set<String> keywords = rules.getKeywords();
@@ -869,7 +907,7 @@
                     for (String keyword : rules.getKeywords()) {
                         boolean isLimited = rules.isLimited(keyword, sampleType);
                         boolean computeLimited = rules.computeLimited(keyword, sampleType);
-                        if (!keyword.equals("other")) {
+                        if (!keyword.equals("other") && !(locale.getLanguage().equals("fr") && logKnownIssue("ICU-21270", "fr plurals many case computeLimited == isLimited"))) {
                             assertEquals(getAssertMessage("computeLimited == isLimited", locale, rules, keyword),
                                     computeLimited, isLimited);
                         }
@@ -971,7 +1009,7 @@
         for (Object[] caseDatum : casesData) {
             String skeleton = (String) caseDatum[0];
             int input = (int) caseDatum[1];
-            String expectedString = (String) caseDatum[2];
+            // String expectedString = (String) caseDatum[2];
             String expectPluralRuleKeyword = (String) caseDatum[3];
 
             String actualPluralRuleKeyword =
@@ -1115,7 +1153,7 @@
 
             // [one, other]
             "am,bn,fa,gu,hi,kn,mr,zu; one: @integer 0, 1; other: @integer 2~17, 100, 1000, 10000, 100000, 1000000, …",
-            "ff,fr,hy,kab; one: @integer 0, 1; other: @integer 2~17, 100, 1000, 10000, 100000, 1000000, …",
+            "ff,hy,kab; one: @integer 0, 1; other: @integer 2~17, 100, 1000, 10000, 100000, 1000000, …",
             "ast,ca,de,en,et,fi,fy,gl,it,ji,nl,sv,sw,ur,yi; one: @integer 1; other: @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, …",
             "pt; one: @integer 1; other: @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, …",
             "si; one: @integer 0, 1; other: @integer 2~17, 100, 1000, 10000, 100000, 1000000, …",
@@ -1136,6 +1174,9 @@
             // [one, two, other]
             "iu,naq,se,sma,smi,smj,smn,sms; one: @integer 1; two: @integer 2; other: @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, …",
 
+            // [one, many, other]
+            "fr; one: @integer 0, 1; many: @integer 1000000; other: @integer 2~17, 100, 1000, 10000, 100000, …",
+
             // [one, few, other]
             "shi; one: @integer 0, 1; few: @integer 2~10; other: @integer 11~26, 100, 1000, 10000, 100000, 1000000, …",
             "mo,ro; one: @integer 1; few: @integer 0, 2~16, 102, 1002, …; other: @integer 20~35, 100, 1000, 10000, 100000, 1000000, …",
@@ -1246,7 +1287,7 @@
      * @return
      */
     private String showBytes(byte[] contents) {
-        StringBuilder b = new StringBuilder('[');
+        StringBuilder b = new StringBuilder("[");
         for (int i = 0; i < contents.length; ++i) {
             int item = contents[i] & 0xFF;
             if (item >= 0x20 && item <= 0x7F) {
@@ -1279,4 +1320,37 @@
         Locale.setDefault(Locale.GERMAN);
         assertEquals("FixedDecimal toString", expected, fd.toString());
     }
+
+    @Test
+    public void testSelectRange() {
+        int d1 = 102;
+        int d2 = 201;
+        ULocale locale = new ULocale("sl");
+
+        // Locale sl has interesting data: one + two => few
+        FormattedNumberRange range = NumberRangeFormatter.withLocale(locale).formatRange(d1, d2);
+        PluralRules rules = PluralRules.forLocale(locale);
+
+        // For testing: get plural form of first and second numbers
+        FormattedNumber a = NumberFormatter.withLocale(locale).format(d1);
+        FormattedNumber b = NumberFormatter.withLocale(locale).format(d2);
+        assertEquals("First plural", "two", rules.select(a));
+        assertEquals("Second plural", "one", rules.select(b));
+
+        // Check the range plural now:
+        String form = rules.select(range);
+        assertEquals("Range plural", "few", form);
+
+        // Test when plural ranges data is unavailable:
+        PluralRules bare = PluralRules.createRules("a: i = 0,1");
+        try {
+            form = bare.select(range);
+            fail("Expected exception");
+        } catch (UnsupportedOperationException e) {}
+
+        // However, they should not throw when no data is available for a language.
+        PluralRules xyz = PluralRules.forLocale(new ULocale("xyz"));
+        form = xyz.select(range);
+        assertEquals("Fallback form", "other", form);
+    }
 }
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/RBNFParseTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/RBNFParseTest.java
index fef9605..4e8c4ec 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/RBNFParseTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/RBNFParseTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2013, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/RbnfLenientScannerTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/RbnfLenientScannerTest.java
index 4c926b7..222e6f2 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/RbnfLenientScannerTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/RbnfLenientScannerTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/RbnfRoundTripTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/RbnfRoundTripTest.java
index 94f7b6f..fc10ead 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/RbnfRoundTripTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/RbnfRoundTripTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/RbnfTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/RbnfTest.java
index 5ac088d..3b32d10 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/RbnfTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/RbnfTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
@@ -299,6 +299,17 @@
         };
 
         doTest(formatter, testData, true);
+
+        String[][] testDataLenient = {
+                { "fifty-7", "57" },
+                { " fifty-7", "57" },
+                { "  fifty-7", "57" },
+                { "2 thousand six    HUNDRED fifty-7", "2,657" },
+                { "fifteen hundred and zero", "1,500" },
+                { "FOurhundred     thiRTY six", "436" }
+        };
+
+        doParsingTest(formatter, testDataLenient, true);
     }
 
     /**
@@ -353,6 +364,12 @@
         };
 
         doTest(formatter, testData, true);
+
+        String[][] testDataLenient = {
+                { "2-51-33", "10,293" },
+        };
+
+        doParsingTest(formatter, testDataLenient, true);
     }
 
     /**
@@ -428,6 +445,13 @@
         };
 
         doTest(formatter, testData, true);
+
+        String[][] testDataLenient = {
+                { "trente-et-un", "31" },
+                { "un cent quatre vingt dix huit", "198" },
+        };
+
+        doParsingTest(formatter, testDataLenient, true);
     }
 
     /**
@@ -532,6 +556,12 @@
         };
 
         doTest(formatter, testData, true);
+
+        String[][] testDataLenient = {
+                { "ein Tausend sechs Hundert fuenfunddreissig", "1,635" },
+        };
+
+        doParsingTest(formatter, testDataLenient, true);
     }
 
     /**
@@ -1120,6 +1150,10 @@
                 " (ordinal) "
                 //" (duration) " // English only
         };
+        boolean[] lenientMode = {
+                false, // non-lenient mode
+                true // lenient mode
+        };
         double[] numbers = {45.678, 1, 2, 10, 11, 100, 110, 200, 1000, 1111, -1111};
         int count = numbers.length;
         Random r = (count <= numbers.length ? null : createRandom());
@@ -1145,25 +1179,25 @@
                         logln(loc.getName() + names[j] + "success format: " + n + " -> " + s);
                     }
 
-                    try {
-                        // RBNF parse is extremely slow when lenient option is enabled.
-                        // non-lenient parse
-                        fmt.setLenientParseMode(false);
-                        Number num = fmt.parse(s);
-                        if (isVerbose()) {
-                            logln(loc.getName() + names[j] + "success parse: " + s + " -> " + num);
+                    for (int k = 0; k < lenientMode.length; k++) {
+                        try {
+                            fmt.setLenientParseMode(lenientMode[k]);
+                            Number num = fmt.parse(s);
+                            if (isVerbose()) {
+                                logln(loc.getName() + names[j] + "success parse: " + s + " -> " + num);
+                            }
+                            if (j != 0) {
+                                // TODO: Fix the ordinal rules.
+                                continue;
+                            }
+                            if (n != num.doubleValue()) {
+                                errors.append("\n" + loc + names[j] + "got " + num + " expected " + n);
+                            }
+                        } catch (ParseException pe) {
+                            String msg = loc.getName() + names[j] + "ERROR:" + pe.getMessage();
+                            logln(msg);
+                            errors.append("\n" + msg);
                         }
-                        if (j != 0) {
-                            // TODO: Fix the ordinal rules.
-                            continue;
-                        }
-                        if (n != num.doubleValue()) {
-                            errors.append("\n" + loc + names[j] + "got " + num + " expected " + n);
-                        }
-                    } catch (ParseException pe) {
-                        String msg = loc.getName() + names[j] + "ERROR:" + pe.getMessage();
-                        logln(msg);
-                        errors.append("\n" + msg);
                     }
                 }
             }
@@ -1173,10 +1207,12 @@
         }
     }
 
-    void doTest(RuleBasedNumberFormat formatter, String[][] testData,
-                boolean testParsing) {
-        //        NumberFormat decFmt = NumberFormat.getInstance(Locale.US);
-        NumberFormat decFmt = new DecimalFormat("#,###.################");
+    NumberFormat createDecimalFormatter() {
+        return new DecimalFormat("#,###.################");
+    }
+
+    void doTest(RuleBasedNumberFormat formatter, String[][] testData, boolean testParsing) {
+        NumberFormat decFmt = createDecimalFormatter();
         try {
             for (int i = 0; i < testData.length; i++) {
                 String number = testData[i][0];
@@ -1210,6 +1246,35 @@
         }
     }
 
+    void doParsingTest(RuleBasedNumberFormat formatter, String[][] testData, boolean lenient) {
+        NumberFormat decFmt = createDecimalFormatter();
+
+        if (lenient) {
+            formatter.setLenientParseMode(true);
+        }
+        for (int i = 0; i < testData.length; i++) {
+            try {
+                String s = testData[i][0];
+                Number expectedNumber = decFmt.parse(testData[i][1]);
+                if (isVerbose()) {
+                    logln("test[" + i + "] spellout value: (" + s + ") target: " + expectedNumber);
+                }
+
+                Number num = formatter.parse(s);
+                if (isVerbose()) {
+                    logln("success parse: (" + s + ") -> " + num);
+                }
+
+                if (expectedNumber.doubleValue() != num.doubleValue()) {
+                    errln("\nParsing (" + s + ") failed: got " + num + " expected " + expectedNumber);
+                }
+            } catch (Throwable e) {
+                e.printStackTrace();
+                errln("Test failed with exception: " + e.toString());
+            }
+        }
+    }
+
     /* Tests the method
      *      public boolean equals(Object that)
      */
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/RelativeDateTimeFormatterTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/RelativeDateTimeFormatterTest.java
index d8dc591..4cd6b2c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/RelativeDateTimeFormatterTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/RelativeDateTimeFormatterTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/ScientificNumberFormatterTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/ScientificNumberFormatterTest.java
index c7426de..f5923b0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/ScientificNumberFormatterTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/ScientificNumberFormatterTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/SelectFormatAPITest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/SelectFormatAPITest.java
index f4216d9..4941f06 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/SelectFormatAPITest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/SelectFormatAPITest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (c) 2004-2011, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/SelectFormatUnitTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/SelectFormatUnitTest.java
index c4b6ec7..25b06b1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/SelectFormatUnitTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/SelectFormatUnitTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (c) 2004-2011, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/TestMessageFormat.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/TestMessageFormat.java
index 4e384c7..d11382c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/TestMessageFormat.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/TestMessageFormat.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2004-2016, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeUnitTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeUnitTest.java
index bdd64f3..d917dd8 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeUnitTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeUnitTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeZoneAliases.txt b/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeZoneAliases.txt
index d8efec5..c7a8432 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeZoneAliases.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeZoneAliases.txt
@@ -1,6 +1,6 @@
 #----------------------------------------------------------------------
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #----------------------------------------------------------------------
 #----------------------------------------------------------------------
 # Copyright (c) 2004, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeZoneFormatTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeZoneFormatTest.java
index e854f42..b266224 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeZoneFormatTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/TimeZoneFormatTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
  * Copyright (C) 2007-2016, Google, International Business Machines Corporation
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/WriteNumberFormatSerialTestData.java b/android_icu4j/src/main/tests/android/icu/dev/test/format/WriteNumberFormatSerialTestData.java
index fcccc6e..fe286f5 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/WriteNumberFormatSerialTestData.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/WriteNumberFormatSerialTestData.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/format/plurals.txt b/android_icu4j/src/main/tests/android/icu/dev/test/format/plurals.txt
index d450c83..e33c1ab 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/format/plurals.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/format/plurals.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html#License
+# Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html
 # Copyright (C) 2013, Google Inc, International Business Machines Corporation and others
 af	0 dae
 af	0.00 dae
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/impl/CSCharacterIteratorTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/impl/CSCharacterIteratorTest.java
index cf2d9d2..86fbeae 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/impl/CSCharacterIteratorTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/impl/CSCharacterIteratorTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 package android.icu.dev.test.impl;
 
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/impl/CacheTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/impl/CacheTest.java
index e773dd7..ff9a2d3 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/impl/CacheTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/impl/CacheTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/impl/StringSegmentTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/impl/StringSegmentTest.java
index 154e6d4..f84d034 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/impl/StringSegmentTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/impl/StringSegmentTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.impl;
 
 import static org.junit.Assert.assertEquals;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/impl/UnitsTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/impl/UnitsTest.java
new file mode 100644
index 0000000..6473c36
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/impl/UnitsTest.java
@@ -0,0 +1,389 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package android.icu.dev.test.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.MathContext;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+
+import android.icu.dev.test.TestUtil;
+import android.icu.impl.Pair;
+import android.icu.impl.units.ComplexUnitsConverter;
+import android.icu.impl.units.ConversionRates;
+import android.icu.impl.units.MeasureUnitImpl;
+import android.icu.impl.units.UnitConverter;
+import android.icu.impl.units.UnitsRouter;
+import android.icu.util.Measure;
+import android.icu.util.MeasureUnit;
+import android.icu.testsharding.MainTestShard;
+
+
+@MainTestShard
+public class UnitsTest {
+
+    public static boolean compareTwoBigDecimal(BigDecimal expected, BigDecimal actual, BigDecimal delta) {
+        BigDecimal diff =
+                expected.abs().compareTo(BigDecimal.ZERO) < 1 ?
+                        expected.subtract(actual).abs() :
+                        (expected.subtract(actual).divide(expected, MathContext.DECIMAL128)).abs();
+
+        if (diff.compareTo(delta) == -1) return true;
+        return false;
+    }
+
+    @Test
+    public void testComplexUnitsConverter() {
+        ConversionRates rates = new ConversionRates();
+        MeasureUnit input = MeasureUnit.FOOT;
+        MeasureUnit output = MeasureUnit.forIdentifier("foot-and-inch");
+        final MeasureUnitImpl inputImpl = MeasureUnitImpl.forIdentifier(input.getIdentifier());
+        final MeasureUnitImpl outputImpl = MeasureUnitImpl.forIdentifier(output.getIdentifier());
+        ComplexUnitsConverter converter = new ComplexUnitsConverter(inputImpl, outputImpl, rates);
+
+        // Significantly less than 2.0.
+        List<Measure> measures = converter.convert(BigDecimal.valueOf(1.9999), null);
+        assertEquals("measures length", 2, measures.size());
+        assertEquals("1.9999: measures[0] value", BigDecimal.valueOf(1), measures.get(0).getNumber());
+        assertEquals("1.9999: measures[0] unit", MeasureUnit.FOOT.getIdentifier(),
+                measures.get(0).getUnit().getIdentifier());
+
+        assertTrue("1.9999: measures[1] value", compareTwoBigDecimal(BigDecimal.valueOf(11.9988),
+                BigDecimal.valueOf(measures.get(1).getNumber().doubleValue()), BigDecimal.valueOf(0.0001)));
+        assertEquals("1.9999: measures[1] unit", MeasureUnit.INCH.getIdentifier(),
+                measures.get(1).getUnit().getIdentifier());
+
+        // TODO(icu-units#100): consider factoring out the set of tests to make
+        // this function more data-driven, *after* dealing appropriately with
+        // the C++ memory leaks that can be demonstrated by the C++ version of
+        // this code.
+
+        // A minimal nudge under 2.0.
+        List<Measure> measures2 =
+            converter.convert(BigDecimal.valueOf(2.0).subtract(ComplexUnitsConverter.EPSILON), null);
+        assertEquals("measures length", 2, measures2.size());
+        assertEquals("1 - eps: measures[0] value", BigDecimal.valueOf(2), measures2.get(0).getNumber());
+        assertEquals("1 - eps: measures[0] unit", MeasureUnit.FOOT.getIdentifier(),
+                measures2.get(0).getUnit().getIdentifier());
+        assertEquals("1 - eps: measures[1] value", BigDecimal.ZERO, measures2.get(1).getNumber());
+        assertEquals("1 - eps: measures[1] unit", MeasureUnit.INCH.getIdentifier(),
+                measures2.get(1).getUnit().getIdentifier());
+
+        // Testing precision with meter and light-year. 1e-16 light years is
+        // 0.946073 meters, and double precision can provide only ~15 decimal
+        // digits, so we don't expect to get anything less than 1 meter.
+
+        // An epsilon's nudge under one light-year: should give 1 ly, 0 m.
+        input = MeasureUnit.LIGHT_YEAR;
+        output = MeasureUnit.forIdentifier("light-year-and-meter");
+        final MeasureUnitImpl inputImpl3 = MeasureUnitImpl.forIdentifier(input.getIdentifier());
+        final MeasureUnitImpl outputImpl3 = MeasureUnitImpl.forIdentifier(output.getIdentifier());
+
+        ComplexUnitsConverter converter3 = new ComplexUnitsConverter(inputImpl3, outputImpl3, rates);
+
+        List<Measure> measures3 =
+            converter3.convert(BigDecimal.valueOf(2.0).subtract(ComplexUnitsConverter.EPSILON), null);
+        assertEquals("measures length", 2, measures3.size());
+        assertEquals("light-year test: measures[0] value", BigDecimal.valueOf(2), measures3.get(0).getNumber());
+        assertEquals("light-year test: measures[0] unit", MeasureUnit.LIGHT_YEAR.getIdentifier(),
+                measures3.get(0).getUnit().getIdentifier());
+        assertEquals("light-year test: measures[1] value", BigDecimal.ZERO, measures3.get(1).getNumber());
+        assertEquals("light-year test: measures[1] unit", MeasureUnit.METER.getIdentifier(),
+                measures3.get(1).getUnit().getIdentifier());
+
+        // 1e-15 light years is 9.46073 meters (calculated using "bc" and the CLDR
+        // conversion factor). With double-precision maths, we get 10.5. In this
+        // case, we're off by almost 1 meter.
+        List<Measure> measures4 = converter3.convert(BigDecimal.valueOf(1.0 + 1e-15), null);
+        assertEquals("measures length", 2, measures4.size());
+        assertEquals("light-year test: measures[0] value", BigDecimal.ONE, measures4.get(0).getNumber());
+        assertEquals("light-year test: measures[0] unit", MeasureUnit.LIGHT_YEAR.getIdentifier(),
+                measures4.get(0).getUnit().getIdentifier());
+        assertTrue("light-year test: measures[1] value", compareTwoBigDecimal(BigDecimal.valueOf(10),
+                BigDecimal.valueOf(measures4.get(1).getNumber().doubleValue()),
+                BigDecimal.valueOf(1)));
+        assertEquals("light-year test: measures[1] unit", MeasureUnit.METER.getIdentifier(),
+                measures4.get(1).getUnit().getIdentifier());
+
+        // 2e-16 light years is 1.892146 meters. We consider this in the noise, and
+        // thus expect a 0. (This test fails when 2e-16 is increased to 4e-16.)
+        List<Measure> measures5 = converter3.convert(BigDecimal.valueOf(1.0 + 2e-17), null);
+        assertEquals("measures length", 2, measures5.size());
+        assertEquals("light-year test: measures[0] value", BigDecimal.ONE, measures5.get(0).getNumber());
+        assertEquals("light-year test: measures[0] unit", MeasureUnit.LIGHT_YEAR.getIdentifier(),
+                measures5.get(0).getUnit().getIdentifier());
+        assertEquals("light-year test: measures[1] value", BigDecimal.valueOf(0.0),
+                measures5.get(1).getNumber());
+        assertEquals("light-year test: measures[1] unit", MeasureUnit.METER.getIdentifier(),
+                measures5.get(1).getUnit().getIdentifier());
+
+        // TODO(icu-units#63): test negative numbers!
+    }
+
+
+    @Test
+    public void testComplexUnitConverterSorting() {
+
+        MeasureUnitImpl source = MeasureUnitImpl.forIdentifier("meter");
+        MeasureUnitImpl target = MeasureUnitImpl.forIdentifier("inch-and-foot");
+        ConversionRates conversionRates = new ConversionRates();
+
+        ComplexUnitsConverter complexConverter = new ComplexUnitsConverter(source, target, conversionRates);
+        List<Measure> measures = complexConverter.convert(BigDecimal.valueOf(10.0), null);
+
+        assertEquals(measures.size(), 2);
+        assertEquals("inch-and-foot unit 0", "inch", measures.get(0).getUnit().getIdentifier());
+        assertEquals("inch-and-foot unit 1", "foot", measures.get(1).getUnit().getIdentifier());
+
+        assertEquals("inch-and-foot value 0", 9.7008, measures.get(0).getNumber().doubleValue(), 0.0001);
+        assertEquals("inch-and-foot value 1", 32, measures.get(1).getNumber().doubleValue(), 0.0001);
+    }
+
+
+    @Test
+    public void testExtractConvertibility() {
+        class TestData {
+            MeasureUnitImpl source;
+            MeasureUnitImpl target;
+            UnitConverter.Convertibility expected;
+
+            TestData(String source, String target, UnitConverter.Convertibility convertibility) {
+                this.source = MeasureUnitImpl.UnitsParser.parseForIdentifier(source);
+                this.target = MeasureUnitImpl.UnitsParser.parseForIdentifier(target);
+                this.expected = convertibility;
+            }
+        }
+
+        TestData[] tests = {
+                new TestData("meter", "foot", UnitConverter.Convertibility.CONVERTIBLE),
+                new TestData("square-meter-per-square-hour", "hectare-per-square-second", UnitConverter.Convertibility.CONVERTIBLE),
+                new TestData("hertz", "revolution-per-second", UnitConverter.Convertibility.CONVERTIBLE),
+                new TestData("millimeter", "meter", UnitConverter.Convertibility.CONVERTIBLE),
+                new TestData("yard", "meter", UnitConverter.Convertibility.CONVERTIBLE),
+                new TestData("ounce-troy", "kilogram", UnitConverter.Convertibility.CONVERTIBLE),
+                new TestData("percent", "portion", UnitConverter.Convertibility.CONVERTIBLE),
+                new TestData("ofhg", "kilogram-per-square-meter-square-second", UnitConverter.Convertibility.CONVERTIBLE),
+
+                new TestData("second-per-meter", "meter-per-second", UnitConverter.Convertibility.RECIPROCAL),
+        };
+        ConversionRates conversionRates = new ConversionRates();
+
+        for (TestData test :
+                tests) {
+            assertEquals(test.expected, UnitConverter.extractConvertibility(test.source, test.target, conversionRates));
+        }
+    }
+
+    @Test
+    public void testConverterForTemperature() {
+        class TestData {
+            MeasureUnitImpl source;
+            MeasureUnitImpl target;
+            BigDecimal input;
+            BigDecimal expected;
+
+            TestData(String source, String target, double input, double expected) {
+                this.source = MeasureUnitImpl.UnitsParser.parseForIdentifier(source);
+                this.target = MeasureUnitImpl.UnitsParser.parseForIdentifier(target);
+                this.input = BigDecimal.valueOf(input);
+                this.expected = BigDecimal.valueOf(expected);
+            }
+
+        }
+
+        TestData[] tests = {
+                new TestData("celsius", "fahrenheit", 1000, 1832),
+                new TestData("fahrenheit", "fahrenheit", 1000, 1000),
+        };
+
+        ConversionRates conversionRates = new ConversionRates();
+
+        for (TestData test :
+                tests) {
+            UnitConverter converter = new UnitConverter(test.source, test.target, conversionRates);
+            assertEquals(test.expected.doubleValue(), converter.convert(test.input).doubleValue(), (0.001));
+        }
+
+    }
+
+    @Test
+    public void testConverterFromUnitTests() throws IOException {
+        class TestCase {
+            String category;
+            String sourceString;
+            String targetString;
+            MeasureUnitImpl source;
+            MeasureUnitImpl target;
+            BigDecimal input;
+            BigDecimal expected;
+
+            TestCase(String line) {
+                String[] fields = line
+                        .replaceAll(" ", "") // Remove all the spaces.
+                        .replaceAll(",", "") // Remove all the commas.
+                        .replaceAll("\t", "")
+                        .split(";");
+
+                this.category = fields[0].replaceAll(" ", "");
+                this.sourceString = fields[1];
+                this.targetString = fields[2];
+                this.source = MeasureUnitImpl.UnitsParser.parseForIdentifier(fields[1]);
+                this.target = MeasureUnitImpl.UnitsParser.parseForIdentifier(fields[2]);
+                this.input = BigDecimal.valueOf(1000);
+                this.expected = new BigDecimal(fields[4]);
+            }
+        }
+
+        String codePage = "UTF-8";
+        ArrayList<TestCase> tests = new ArrayList<>();
+        try (BufferedReader f = TestUtil.getDataReader("cldr/units/unitsTest.txt", codePage)) {
+            while (true) {
+                String line = f.readLine();
+                if (line == null) break;
+                if (line.isEmpty() || line.startsWith("#")) continue;
+                tests.add(new TestCase(line));
+            }
+        }
+
+        ConversionRates conversionRates = new ConversionRates();
+
+        for (TestCase testCase :
+                tests) {
+            UnitConverter converter = new UnitConverter(testCase.source, testCase.target, conversionRates);
+            BigDecimal got = converter.convert(testCase.input);
+            if (compareTwoBigDecimal(testCase.expected, got, BigDecimal.valueOf(0.000001))) {
+                continue;
+            } else {
+                fail(new StringBuilder()
+                        .append(testCase.category)
+                        .append(": Converting 1000 ")
+                        .append(testCase.sourceString)
+                        .append(" to ")
+                        .append(testCase.targetString)
+                        .append(", got ")
+                        .append(got)
+                        .append(", expected ")
+                        .append(testCase.expected.toString())
+                        .toString());
+            }
+            BigDecimal inverted = converter.convertInverse(testCase.input);
+            if (compareTwoBigDecimal(BigDecimal.valueOf(1000), inverted, BigDecimal.valueOf(0.000001))) {
+                continue;
+            } else {
+                fail(new StringBuilder()
+                .append("Converting back to ")
+                .append(testCase.sourceString)
+                .append(" from ")
+                .append(testCase.targetString)
+                .append(": got ")
+                .append(inverted)
+                .append(", expected 1000")
+                .toString());
+            }
+        }
+    }
+
+    @Test
+    public void testUnitPreferencesFromUnitTests() throws IOException {
+        class TestCase {
+
+            final ArrayList<Pair<String, MeasureUnitImpl>> outputUnitInOrder = new ArrayList<>();
+            final ArrayList<BigDecimal> expectedInOrder = new ArrayList<>();
+            /**
+             * Test Case Data
+             */
+            @SuppressWarnings("unused")
+            String category;
+            String usage;
+            String region;
+            Pair<String, MeasureUnitImpl> inputUnit;
+            BigDecimal input;
+
+            TestCase(String line) {
+                String[] fields = line
+                        .replaceAll(" ", "") // Remove all the spaces.
+                        .replaceAll(",", "") // Remove all the commas.
+                        .replaceAll("\t", "")
+                        .split(";");
+
+                String category = fields[0];
+                String usage = fields[1];
+                String region = fields[2];
+                String inputValue = fields[4];
+                String inputUnit = fields[5];
+                ArrayList<Pair<String, String>> outputs = new ArrayList<>();
+
+                for (int i = 6; i < fields.length - 2; i += 2) {
+                    if (i == fields.length - 3) { // last field
+                        outputs.add(Pair.of(fields[i + 2], fields[i + 1]));
+                    } else {
+                        outputs.add(Pair.of(fields[i + 1], fields[i]));
+                    }
+                }
+
+                this.insertData(category, usage, region, inputUnit, inputValue, outputs);
+            }
+
+            private void insertData(String category,
+                                    String usage,
+                                    String region,
+                                    String inputUnitString,
+                                    String inputValue,
+                                    ArrayList<Pair<String, String>> outputs /* Unit Identifier, expected value */) {
+                this.category = category;
+                this.usage = usage;
+                this.region = region;
+                this.inputUnit = Pair.of(inputUnitString, MeasureUnitImpl.UnitsParser.parseForIdentifier(inputUnitString));
+                this.input = new BigDecimal(inputValue);
+                for (Pair<String, String> output :
+                        outputs) {
+                    outputUnitInOrder.add(Pair.of(output.first, MeasureUnitImpl.UnitsParser.parseForIdentifier(output.first)));
+                    expectedInOrder.add(new BigDecimal(output.second));
+                }
+            }
+        }
+
+        // Read Test data from the unitPreferencesTest
+        String codePage = "UTF-8";
+        ArrayList<TestCase> tests = new ArrayList<>();
+
+        try (BufferedReader f = TestUtil.getDataReader("cldr/units/unitPreferencesTest.txt", codePage)) {
+            while (true) {
+                String line = f.readLine();
+                if (line == null) break;
+                if (line.isEmpty() || line.startsWith("#")) continue;
+                tests.add(new TestCase(line));
+            }
+        }
+
+        for (TestCase testCase :
+                tests) {
+            UnitsRouter router = new UnitsRouter(testCase.inputUnit.second, testCase.region, testCase.usage);
+            List<Measure> measures = router.route(testCase.input, null).measures;
+
+            assertEquals("Measures size must be the same as expected units",
+                    measures.size(), testCase.expectedInOrder.size());
+            assertEquals("Measures size must be the same as output units",
+                    measures.size(), testCase.outputUnitInOrder.size());
+
+
+            for (int i = 0; i < measures.size(); i++) {
+                if (!UnitsTest
+                        .compareTwoBigDecimal(testCase.expectedInOrder.get(i),
+                                BigDecimal.valueOf(measures.get(i).getNumber().doubleValue()),
+                                BigDecimal.valueOf(0.00001))) {
+                    fail(testCase.toString() + measures.toString());
+                }
+            }
+        }
+    }
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/iterator/TestUCharacterIterator.java b/android_icu4j/src/main/tests/android/icu/dev/test/iterator/TestUCharacterIterator.java
index dfaa2f7..ab12fa7 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/iterator/TestUCharacterIterator.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/iterator/TestUCharacterIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/DataDrivenUScriptTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/DataDrivenUScriptTest.java
index b6f8f87..fc1b65b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/DataDrivenUScriptTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/DataDrivenUScriptTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 package android.icu.dev.test.lang;
 
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/TestUScript.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/TestUScript.java
index 2c541d9..71cc41a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/TestUScript.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/TestUScript.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/TestUScriptRun.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/TestUScriptRun.java
index bba5402..9152679 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/TestUScriptRun.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/TestUScriptRun.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1999-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCaseTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCaseTest.java
index f53b33a..364c5f9 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCaseTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCaseTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2014, International Business Machines Corporation and
@@ -807,6 +807,26 @@
         assertGreekUpper("ή.", "Ή.");
     }
 
+    @Test
+    public void TestArmenian() {
+        Locale hy = new Locale("hy");  // Eastern Armenian
+        Locale hyw = new Locale("hyw");  // Western Armenian
+        Locale root = Locale.ROOT;
+        // See ICU-13416:
+        // և ligature ech-yiwn
+        // uppercases to ԵՒ=ech+yiwn by default and in Western Armenian,
+        // but to ԵՎ=ech+vew in Eastern Armenian.
+        String s = "և Երևանի";
+
+        assertEquals("upper root", "ԵՒ ԵՐԵՒԱՆԻ", CaseMap.toUpper().apply(root, s));
+        assertEquals("upper hy", "ԵՎ ԵՐԵՎԱՆԻ", CaseMap.toUpper().apply(hy, s));
+        assertEquals("upper hyw", "ԵՒ ԵՐԵՒԱՆԻ", CaseMap.toUpper().apply(hyw, s));
+
+        assertEquals("title root", "Եւ Երևանի", CaseMap.toTitle().apply(root, null, s));
+        assertEquals("title hy", "Եվ Երևանի", CaseMap.toTitle().apply(hy, null, s));
+        assertEquals("title hyw", "Եւ Երևանի", CaseMap.toTitle().apply(hyw, null, s));
+    }
+
     private static final class EditChange {
         private boolean change;
         private int oldLength, newLength;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCategoryTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCategoryTest.java
index 880c21a..d8a4979 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCategoryTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCategoryTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2006, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCompare.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCompare.java
index 360ac30..e40e19c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCompare.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCompare.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterDirectionTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterDirectionTest.java
index 9856e04..24d7507 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterDirectionTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterDirectionTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2013, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterSurrogateTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterSurrogateTest.java
index f82c4ad..93a8b6e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterSurrogateTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterSurrogateTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2004-2008, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterTest.java
index a414b20..74c2bcf 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterThreadTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterThreadTest.java
index 33defb5..1bdbd73 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterThreadTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterThreadTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UPropertyAliasesTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UPropertyAliasesTest.java
index a602960..ec64d2a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UPropertyAliasesTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UPropertyAliasesTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2002-2010, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UTF16Test.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UTF16Test.java
index 2cf6396..3e32efc 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UTF16Test.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UTF16Test.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UnicodeSetStringSpanTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UnicodeSetStringSpanTest.java
index ab85d14..26d513e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UnicodeSetStringSpanTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UnicodeSetStringSpanTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UnicodeSetTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UnicodeSetTest.java
index 1e97fca..09a23aa 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UnicodeSetTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UnicodeSetTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/BasicTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/BasicTest.java
index e292ba3..b8dd06d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/BasicTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/BasicTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/ConformanceTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/ConformanceTest.java
index ad4402b..24e6df5 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/ConformanceTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/ConformanceTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/IntHashtable.java b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/IntHashtable.java
index f144731..5c26a4c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/IntHashtable.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/IntHashtable.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.normalizer;
 
 import java.util.HashMap;
@@ -41,4 +41,4 @@
 
     private int defaultValue;
     private Map<Integer, Integer> table = new HashMap<Integer, Integer>();
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/IntStringHashtable.java b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/IntStringHashtable.java
index f04be7b..bd0a143 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/IntStringHashtable.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/IntStringHashtable.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.normalizer;
 
 import java.util.HashMap;
@@ -41,4 +41,4 @@
 
     private String defaultValue;
     private Map<Integer, String> table = new HashMap<Integer, String>();
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/LongHashtable.java b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/LongHashtable.java
index 5125ead..8ccd647 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/LongHashtable.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/LongHashtable.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.normalizer;
 
 import java.util.HashMap;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/NormalizationMonkeyTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/NormalizationMonkeyTest.java
index 88bddb0..22a32d1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/NormalizationMonkeyTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/NormalizationMonkeyTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2004, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/NormalizerBuilder.java b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/NormalizerBuilder.java
index 4ea8c3e..1b19f26 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/NormalizerBuilder.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/NormalizerBuilder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  * Builds the normalization tables. This is a separate class so that it
  * can be unloaded once not needed.<br>
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/NormalizerData.java b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/NormalizerData.java
index e6ca150..417dcab 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/NormalizerData.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/NormalizerData.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 1998-2007 International Business Machines Corporation and
  * Unicode, Inc. All Rights Reserved.<br>
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/NormalizerRegressionTests.java b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/NormalizerRegressionTests.java
index 2d7c2eb..8c5834a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/NormalizerRegressionTests.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/NormalizerRegressionTests.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/TestCanonicalIterator.java b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/TestCanonicalIterator.java
index 642425f..1e203ad 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/TestCanonicalIterator.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/TestCanonicalIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and
@@ -275,4 +275,4 @@
         }
         return result.toString();
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java
index cb9719f..4aefe2d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/UTS46Test.java b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/UTS46Test.java
index dcf4266..07b6ea1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/UTS46Test.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/UTS46Test.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2010-2014, International Business Machines
@@ -25,8 +25,11 @@
 import android.icu.dev.test.TestFmwk;
 import android.icu.dev.test.TestUtil;
 import android.icu.impl.Normalizer2Impl.UTF16Plus;
+import android.icu.impl.Punycode;
 import android.icu.impl.Utility;
 import android.icu.text.IDNA;
+import android.icu.text.StringPrepParseException;
+import android.icu.util.ICUInputTooLongException;
 import android.icu.testsharding.MainTestShard;
 
 /**
@@ -108,9 +111,103 @@
         }
     }
 
+    @Test
+    public void TestInvalidPunycodeDigits() {
+        IDNA idna=IDNA.getUTS46Instance(0);
+        StringBuilder result=new StringBuilder();
+        IDNA.Info info=new IDNA.Info();
+        idna.nameToUnicode("xn--pleP", result, info);  // P=U+0050
+        assertFalse("nameToUnicode() should succeed",
+                info.getErrors().contains(IDNA.Error.PUNYCODE));
+        assertEquals("normal result", "ᔼᔴ", result.toString());
+
+        info=new IDNA.Info();
+        idna.nameToUnicode("xn--pleѐ", result, info);  // ends with non-ASCII U+0450
+        assertTrue("nameToUnicode() should detect non-ASCII",
+                info.getErrors().contains(IDNA.Error.PUNYCODE));
+
+        // Test with ASCII characters adjacent to LDH.
+        info=new IDNA.Info();
+        idna.nameToUnicode("xn--PLE/", result, info);
+        assertTrue("nameToUnicode() should detect '/'",
+                info.getErrors().contains(IDNA.Error.PUNYCODE));
+
+        info=new IDNA.Info();
+        idna.nameToUnicode("xn--ple:", result, info);
+        assertTrue("nameToUnicode() should detect ':'",
+                info.getErrors().contains(IDNA.Error.PUNYCODE));
+
+        info=new IDNA.Info();
+        idna.nameToUnicode("xn--ple@", result, info);
+        assertTrue("nameToUnicode() should detect '@'",
+                info.getErrors().contains(IDNA.Error.PUNYCODE));
+
+        info=new IDNA.Info();
+        idna.nameToUnicode("xn--ple[", result, info);
+        assertTrue("nameToUnicode() should detect '['",
+                info.getErrors().contains(IDNA.Error.PUNYCODE));
+
+        info=new IDNA.Info();
+        idna.nameToUnicode("xn--ple`", result, info);
+        assertTrue("nameToUnicode() should detect '`'",
+                info.getErrors().contains(IDNA.Error.PUNYCODE));
+
+        info=new IDNA.Info();
+        idna.nameToUnicode("xn--ple{", result, info);
+        assertTrue("nameToUnicode() should detect '{'",
+                info.getErrors().contains(IDNA.Error.PUNYCODE));
+    }
+
+    @Test
+    public void TestACELabelEdgeCases() {
+        // In IDNA2008, these labels fail the round-trip validation from comparing
+        // the ToUnicode input with the back-to-ToASCII output.
+        IDNA idna=IDNA.getUTS46Instance(0);
+        StringBuilder result=new StringBuilder();
+        IDNA.Info info=new IDNA.Info();
+        idna.labelToUnicode("xn--", result, info);
+        assertTrue("empty xn--", info.getErrors().contains(IDNA.Error.INVALID_ACE_LABEL));
+
+        info=new IDNA.Info();
+        idna.labelToUnicode("xN--ASCII-", result, info);
+        assertTrue("nothing but ASCII", info.getErrors().contains(IDNA.Error.INVALID_ACE_LABEL));
+
+        // Different error: The Punycode decoding procedure does not consume the last delimiter
+        // if it is right after the xn-- so the main decoding loop fails because the hyphen
+        // is not a valid Punycode digit.
+        info=new IDNA.Info();
+        idna.labelToUnicode("Xn---", result, info);
+        assertTrue("empty Xn---", info.getErrors().contains(IDNA.Error.PUNYCODE));
+    }
+
+    @Test
+    public void TestTooLong() {
+        // ICU-13727: Limit input length for n^2 algorithm
+        // where well-formed strings are at most 59 characters long.
+        int count = 50000;
+        StringBuilder sb = new StringBuilder(count);
+        for (int i = 0; i < count; ++i) {
+            sb.append('a');
+        }
+        try {
+            Punycode.encode(sb, null);
+            fail("encode: expected an exception for too-long input");
+        } catch(ICUInputTooLongException expected) {
+        } catch(StringPrepParseException e) {
+            fail("encode: unexpected StringPrepParseException for too-long input: " + e);
+        }
+        try {
+            Punycode.decode(sb, null);
+            fail("decode: expected an exception for too-long input");
+        } catch(ICUInputTooLongException expected) {
+        } catch(StringPrepParseException e) {
+            fail("decode: unexpected StringPrepParseException for too-long input: " + e);
+        }
+    }
+
     private static final Map<String, IDNA.Error> errorNamesToErrors;
     static {
-        errorNamesToErrors=new TreeMap<String, IDNA.Error>();
+        errorNamesToErrors=new TreeMap<>();
         errorNamesToErrors.put("UIDNA_ERROR_EMPTY_LABEL", IDNA.Error.EMPTY_LABEL);
         errorNamesToErrors.put("UIDNA_ERROR_LABEL_TOO_LONG", IDNA.Error.LABEL_TOO_LONG);
         errorNamesToErrors.put("UIDNA_ERROR_DOMAIN_NAME_TOO_LONG", IDNA.Error.DOMAIN_NAME_TOO_LONG);
@@ -388,13 +485,13 @@
           "UIDNA_ERROR_EMPTY_LABEL|UIDNA_ERROR_LEADING_HYPHEN|UIDNA_ERROR_TRAILING_HYPHEN|"+
           "UIDNA_ERROR_HYPHEN_3_4" },
         { "a..c", "B", "a..c", "UIDNA_ERROR_EMPTY_LABEL" },
-        { "a.xn--.c", "B", "a..c", "UIDNA_ERROR_EMPTY_LABEL" },
+        { "a.xn--.c", "B", "a.xn--\uFFFD.c", "UIDNA_ERROR_INVALID_ACE_LABEL" },
         { "a.-b.", "B", "a.-b.", "UIDNA_ERROR_LEADING_HYPHEN" },
         { "a.b-.c", "B", "a.b-.c", "UIDNA_ERROR_TRAILING_HYPHEN" },
         { "a.-.c", "B", "a.-.c", "UIDNA_ERROR_LEADING_HYPHEN|UIDNA_ERROR_TRAILING_HYPHEN" },
         { "a.bc--de.f", "B", "a.bc--de.f", "UIDNA_ERROR_HYPHEN_3_4" },
         { "\u00E4.\u00AD.c", "B", "\u00E4..c", "UIDNA_ERROR_EMPTY_LABEL" },
-        { "\u00E4.xn--.c", "B", "\u00E4..c", "UIDNA_ERROR_EMPTY_LABEL" },
+        { "\u00E4.xn--.c", "B", "\u00E4.xn--\uFFFD.c", "UIDNA_ERROR_INVALID_ACE_LABEL" },
         { "\u00E4.-b.", "B", "\u00E4.-b.", "UIDNA_ERROR_LEADING_HYPHEN" },
         { "\u00E4.b-.c", "B", "\u00E4.b-.c", "UIDNA_ERROR_TRAILING_HYPHEN" },
         { "\u00E4.-.c", "B", "\u00E4.-.c", "UIDNA_ERROR_LEADING_HYPHEN|UIDNA_ERROR_TRAILING_HYPHEN" },
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/UnicodeNormalizer.java b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/UnicodeNormalizer.java
index bf57383..76f800e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/UnicodeNormalizer.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/UnicodeNormalizer.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 1998-2007 International Business Machines Corporation and
  * Unicode, Inc. All Rights Reserved.<br>
@@ -189,4 +189,4 @@
     String getRawDecompositionMapping (char ch) {
         return data.getRawDecompositionMapping(ch);
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/UnicodeNormalizerConformanceTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/UnicodeNormalizerConformanceTest.java
index 639228e..4bfac27 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/UnicodeNormalizerConformanceTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/normalizer/UnicodeNormalizerConformanceTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/number/AffixUtilsTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/number/AffixUtilsTest.java
index 9d3b9b3..680d862 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/number/AffixUtilsTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/number/AffixUtilsTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.number;
 
 import static org.junit.Assert.assertEquals;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/number/DecimalQuantityTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/number/DecimalQuantityTest.java
index 2453d3e..c36a08d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/number/DecimalQuantityTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/number/DecimalQuantityTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.number;
 
 import java.math.BigDecimal;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/number/ExhaustiveNumberTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/number/ExhaustiveNumberTest.java
index a15c038..d89b11c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/number/ExhaustiveNumberTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/number/ExhaustiveNumberTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.number;
 
 import static android.icu.impl.StaticUnicodeSets.get;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/number/ModifierTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/number/ModifierTest.java
index cd72e40..6eea98f 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/number/ModifierTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/number/ModifierTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.number;
 
 import static org.junit.Assert.assertEquals;
@@ -130,10 +130,10 @@
         // If this test starts failing, please update the method #getUnicodeSet() in
         // BOTH CurrencySpacingEnabledModifier.java AND in C++.
         DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(new ULocale("en-US"));
-        assertEquals("[:^S:]",
+        assertEquals("[[:^S:]&[:^Z:]]",
                 dfs.getPatternForCurrencySpacing(DecimalFormatSymbols.CURRENCY_SPC_CURRENCY_MATCH,
                         true));
-        assertEquals("[:^S:]",
+        assertEquals("[[:^S:]&[:^Z:]]",
                 dfs.getPatternForCurrencySpacing(DecimalFormatSymbols.CURRENCY_SPC_CURRENCY_MATCH,
                         false));
         assertEquals("[:digit:]",
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/number/MutablePatternModifierTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/number/MutablePatternModifierTest.java
index 27d41de..24746f8 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/number/MutablePatternModifierTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/number/MutablePatternModifierTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.number;
 
 import static org.junit.Assert.assertEquals;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberFormatterApiTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberFormatterApiTest.java
index cb72b5a..d913ea6 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberFormatterApiTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberFormatterApiTest.java
@@ -1,14 +1,8 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.number;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.math.BigDecimal;
@@ -21,11 +15,14 @@
 import java.util.Map;
 import java.util.Set;
 
+import org.junit.Assert;
 import org.junit.Ignore;
 import org.junit.Test;
 
+import android.icu.dev.test.TestFmwk;
 import android.icu.dev.test.format.FormattedValueTest;
 import android.icu.dev.test.serializable.SerializableTestUtility;
+import android.icu.impl.IllegalIcuArgumentException;
 import android.icu.impl.number.Grouper;
 import android.icu.impl.number.LocalizedNumberFormatterAsFormat;
 import android.icu.impl.number.MacroProps;
@@ -46,6 +43,7 @@
 import android.icu.number.Precision;
 import android.icu.number.Scale;
 import android.icu.number.ScientificNotation;
+import android.icu.number.SkeletonSyntaxException;
 import android.icu.number.UnlocalizedNumberFormatter;
 import android.icu.text.ConstrainedFieldPosition;
 import android.icu.text.DecimalFormatSymbols;
@@ -61,7 +59,7 @@
 import android.icu.testsharding.MainTestShard;
 
 @MainTestShard
-public class NumberFormatterApiTest {
+public class NumberFormatterApiTest extends TestFmwk {
 
     private static final Currency USD = Currency.getInstance("USD");
     private static final Currency GBP = Currency.getInstance("GBP");
@@ -446,6 +444,17 @@
                 1e7,
                 "1000\u842C");
 
+        if (!logKnownIssue("21258", "StandardPlural cannot handle keywords 1, 0")) {
+            assertFormatSingle(
+                    "Compact with plural form =1 (ICU-21258)",
+                    "compact-long",
+                    "K",
+                    NumberFormatter.with().notation(Notation.compactLong()),
+                    ULocale.FRANCE,
+                    1e3,
+                    "mille");
+        }
+
         assertFormatSingle(
                 "Compact Infinity",
                 "compact-short",
@@ -530,6 +539,23 @@
                 "0.0088 meters",
                 "0 meters");
 
+        // // TODO(ICU-20941): Support formatting for not-built-in units
+        // assertFormatDescending(
+        //         "Hectometers",
+        //         "measure-unit/length-hectometer",
+        //         "unit/hectometer",
+        //         NumberFormatter.with().unit(MeasureUnit.forIdentifier("hectometer")),
+        //         ULocale.ENGLISH,
+        //         "87,650 hm",
+        //         "8,765 ham",
+        //         "876.5 hm",
+        //         "87.65 hm",
+        //         "8.765 hm",
+        //         "0.8765 hm",
+        //         "0.08765 hm",
+        //         "0.008765 hm",
+        //         "0 hm");
+
         assertFormatSingleMeasure(
                 "Meters with Measure Input",
                 "unit-width-full-name",
@@ -638,6 +664,110 @@
                 ULocale.forLanguageTag("es-MX"),
                 1,
                 "kelvin");
+
+        assertFormatSingle(
+                "Person unit not in short form",
+                "measure-unit/duration-year-person unit-width-full-name",
+                "unit/year-person unit-width-full-name",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.YEAR_PERSON)
+                        .unitWidth(UnitWidth.FULL_NAME),
+                ULocale.forLanguageTag("es-MX"),
+                5,
+                "5 a\u00F1os");
+
+        assertFormatSingle(
+                "Mixed unit",
+                "unit/yard-and-foot-and-inch",
+                "unit/yard-and-foot-and-inch",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.forIdentifier("yard-and-foot-and-inch")),
+                new ULocale("en-US"),
+                3.65,
+                "3 yd, 1 ft, 11.4 in");
+
+        assertFormatSingle(
+                "Mixed unit, Scientific",
+                "unit/yard-and-foot-and-inch E0",
+                "unit/yard-and-foot-and-inch E0",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.forIdentifier("yard-and-foot-and-inch"))
+                        .notation(Notation.scientific()),
+                new ULocale("en-US"),
+                3.65,
+                "3 yd, 1 ft, 1.14E1 in");
+
+        assertFormatSingle(
+                "Mixed Unit (Narrow Version)",
+                "unit/metric-ton-and-kilogram-and-gram unit-width-narrow",
+                "unit/metric-ton-and-kilogram-and-gram unit-width-narrow",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.forIdentifier("metric-ton-and-kilogram-and-gram"))
+                        .unitWidth(UnitWidth.NARROW),
+                new ULocale("en-US"),
+                4.28571,
+                "4t 285kg 710g");
+
+        assertFormatSingle(
+                "Mixed Unit (Short Version)",
+                "unit/metric-ton-and-kilogram-and-gram unit-width-short",
+                "unit/metric-ton-and-kilogram-and-gram unit-width-short",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.forIdentifier("metric-ton-and-kilogram-and-gram"))
+                        .unitWidth(UnitWidth.SHORT),
+                new ULocale("en-US"),
+                4.28571,
+                "4 t, 285 kg, 710 g");
+
+        assertFormatSingle(
+                "Mixed Unit (Full Name Version)",
+                "unit/metric-ton-and-kilogram-and-gram unit-width-full-name",
+                "unit/metric-ton-and-kilogram-and-gram unit-width-full-name",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.forIdentifier("metric-ton-and-kilogram-and-gram"))
+                        .unitWidth(UnitWidth.FULL_NAME),
+                new ULocale("en-US"),
+                4.28571,
+                "4 metric tons, 285 kilograms, 710 grams");
+
+        assertFormatSingle(
+                "Testing \"1 foot 12 inches\"",
+                "unit/foot-and-inch @### unit-width-full-name",
+                "unit/foot-and-inch @### unit-width-full-name",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.forIdentifier("foot-and-inch"))
+                        .precision(Precision.maxSignificantDigits(4))
+                        .unitWidth(UnitWidth.FULL_NAME),
+                new ULocale("en-US"),
+                1.9999,
+                "2 feet, 0 inches");
+
+        assertFormatSingle(
+                "Negative numbers: temperature",
+                "measure-unit/temperature-celsius",
+                "unit/celsius",
+                NumberFormatter.with().unit(MeasureUnit.forIdentifier("celsius")),
+                new ULocale("nl-NL"),
+                -6.5,
+                "-6,5\u00B0C");
+
+        assertFormatSingle(
+                "Negative numbers: time",
+                "unit/hour-and-minute-and-second",
+                "unit/hour-and-minute-and-second",
+                NumberFormatter.with().unit(MeasureUnit.forIdentifier("hour-and-minute-and-second")),
+                new ULocale("de-DE"),
+                -1.24,
+                "-1 Std., 14 Min. und 24 Sek.");
+
+        assertFormatSingle(
+                "Zero out the unit field",
+                "",
+                "",
+                NumberFormatter.with().unit(MeasureUnit.KELVIN).unit(NoUnit.BASE),
+                new ULocale("en"),
+                100,
+                "100");
     }
 
     @Test
@@ -645,7 +775,7 @@
         assertFormatDescending(
                 "Meters Per Second Short (unit that simplifies) and perUnit method",
                 "measure-unit/length-meter per-measure-unit/duration-second",
-                "~unit/meter-per-second", // does not round-trip to the full skeleton above
+                "unit/meter-per-second",
                 NumberFormatter.with().unit(MeasureUnit.METER).perUnit(MeasureUnit.SECOND),
                 ULocale.ENGLISH,
                 "87,650 m/s",
@@ -659,6 +789,22 @@
                 "0 m/s");
 
         assertFormatDescending(
+                "Meters Per Second Short, built-in m/s",
+                "measure-unit/speed-meter-per-second",
+                "unit/meter-per-second",
+                NumberFormatter.with().unit(MeasureUnit.METER_PER_SECOND),
+                ULocale.ENGLISH,
+                "87,650 m/s",
+                "8,765 m/s",
+                "876.5 m/s",
+                "87.65 m/s",
+                "8.765 m/s",
+                "0.8765 m/s",
+                "0.08765 m/s",
+                "0.008765 m/s",
+                "0 m/s");
+
+        assertFormatDescending(
                 "Pounds Per Square Mile Short (secondary unit has per-format)",
                 "measure-unit/mass-pound per-measure-unit/area-square-mile",
                 "unit/pound-per-square-mile",
@@ -689,8 +835,697 @@
                 "0.08765 J/fur",
                 "0.008765 J/fur",
                 "0 J/fur");
+
+        // // TODO(ICU-20941): Support constructions such as this one.
+        // assertFormatDescending(
+        //         "Joules Per Furlong Short with unit identifier via API",
+        //         "measure-unit/energy-joule per-measure-unit/length-furlong",
+        //         "unit/joule-per-furlong",
+        //         NumberFormatter.with().unit(MeasureUnit.forIdentifier("joule-per-furlong")),
+        //         ULocale.ENGLISH,
+        //         "87,650 J/fur",
+        //         "8,765 J/fur",
+        //         "876.5 J/fur",
+        //         "87.65 J/fur",
+        //         "8.765 J/fur",
+        //         "0.8765 J/fur",
+        //         "0.08765 J/fur",
+        //         "0.008765 J/fur",
+        //         "0 J/fur");
+
+        assertFormatDescending(
+                "Pounds per Square Inch: composed",
+                "measure-unit/force-pound-force per-measure-unit/area-square-inch",
+                "unit/pound-force-per-square-inch",
+                NumberFormatter.with().unit(MeasureUnit.POUND_FORCE).perUnit(MeasureUnit.SQUARE_INCH),
+                ULocale.ENGLISH,
+                "87,650 psi",
+                "8,765 psi",
+                "876.5 psi",
+                "87.65 psi",
+                "8.765 psi",
+                "0.8765 psi",
+                "0.08765 psi",
+                "0.008765 psi",
+                "0 psi");
+
+        assertFormatDescending(
+                "Pounds per Square Inch: built-in",
+                "measure-unit/force-pound-force per-measure-unit/area-square-inch",
+                "unit/pound-force-per-square-inch",
+                NumberFormatter.with().unit(MeasureUnit.POUND_PER_SQUARE_INCH),
+                ULocale.ENGLISH,
+                "87,650 psi",
+                "8,765 psi",
+                "876.5 psi",
+                "87.65 psi",
+                "8.765 psi",
+                "0.8765 psi",
+                "0.08765 psi",
+                "0.008765 psi",
+                "0 psi");
+
+        assertFormatSingle(
+                "m/s/s simplifies to m/s^2",
+                "measure-unit/speed-meter-per-second per-measure-unit/duration-second",
+                "unit/meter-per-square-second",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER_PER_SECOND)
+                        .perUnit(MeasureUnit.SECOND),
+                new ULocale("en-GB"),
+                2.4,
+                "2.4 m/s\u00B2");
+
+        assertFormatSingle(
+                "Negative numbers: acceleration",
+                "measure-unit/acceleration-meter-per-square-second",
+                "unit/meter-per-second-second",
+                NumberFormatter.with().unit(MeasureUnit.forIdentifier("meter-per-pow2-second")),
+                new ULocale("af-ZA"),
+                -9.81,
+                "-9,81 m/s\u00B2");
+
+        // Testing the rejection of invalid specifications
+
+        // If .unit() is not given a built-in type, .perUnit() is not allowed
+        // (because .unit is now flexible enough to handle compound units,
+        // .perUnit() is supported for backward compatibility).
+        LocalizedNumberFormatter nf = NumberFormatter.with()
+                .unit(MeasureUnit.forIdentifier("furlong-pascal"))
+                .perUnit(MeasureUnit.METER)
+                .locale(new ULocale("en-GB"));
+
+        try {
+            nf.format(2.4d);
+            fail("Expected failure, got: " + nf.format(2.4d) + ".");
+        } catch (UnsupportedOperationException e) {
+            // Pass
+        }
+
+        // .perUnit() may only be passed a built-in type, or something that
+        // combines to a built-in type together with .unit().
+        nf = NumberFormatter.with()
+                .unit(MeasureUnit.FURLONG)
+                .perUnit(MeasureUnit.forIdentifier("square-second"))
+                .locale(new ULocale("en-GB"));
+        try {
+            nf.format(2.4d);
+            fail("Expected failure, got: " + nf.format(2.4d) + ".");
+        } catch (UnsupportedOperationException e) {
+            // pass
+        }
+        // As above, "square-second" is not a built-in type, however this time,
+        // meter-per-square-second is a built-in type.
+        assertFormatSingle(
+                "meter per square-second works as a composed unit",
+                "measure-unit/speed-meter-per-second per-measure-unit/duration-second",
+                "unit/meter-per-square-second",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER)
+                        .perUnit(MeasureUnit.forIdentifier("square-second")),
+                new ULocale("en-GB"),
+                2.4,
+                "2.4 m/s\u00B2");
     }
 
+    // TODO: merge these tests into NumberSkeletonTest.java instead of here:
+    @Test
+    public void unitSkeletons() {
+        Object[][] cases = {
+            {"old-form built-in compound unit",     //
+             "measure-unit/speed-meter-per-second", //
+             "unit/meter-per-second"},
+
+            {"old-form compound construction, converts to built-in",       //
+             "measure-unit/length-meter per-measure-unit/duration-second", //
+             "unit/meter-per-second"},
+
+            {"old-form compound construction which does not simplify to a built-in", //
+             "measure-unit/energy-joule per-measure-unit/length-meter",              //
+             "unit/joule-per-meter"},
+
+            {"old-form compound-compound ugliness resolves neatly",                  //
+             "measure-unit/speed-meter-per-second per-measure-unit/duration-second", //
+             "unit/meter-per-square-second"},
+
+            {"short-form built-in units stick with the built-in", //
+             "unit/meter-per-second",                             //
+             "unit/meter-per-second"},
+
+            {"short-form compound units stay as is", //
+             "unit/square-meter-per-square-meter",   //
+             "unit/square-meter-per-square-meter"},
+
+            {"short-form compound units stay as is", //
+             "unit/joule-per-furlong",               //
+             "unit/joule-per-furlong"},
+
+            {"short-form that doesn't consist of built-in units", //
+             "unit/hectometer-per-second",                        //
+             "unit/hectometer-per-second"},
+
+            {"short-form that doesn't consist of built-in units", //
+             "unit/meter-per-hectosecond",                        //
+             "unit/meter-per-hectosecond"},
+
+            {"percent compound skeletons handled correctly", //
+             "unit/percent-per-meter",                       //
+             "unit/percent-per-meter"},
+
+            {"permille compound skeletons handled correctly",                //
+             "measure-unit/concentr-permille per-measure-unit/length-meter", //
+             "unit/permille-per-meter"},
+
+            {"percent simple unit is not actually considered a unit", //
+             "unit/percent",                                          //
+             "percent"},
+
+            {"permille simple unit is not actually considered a unit", //
+             "measure-unit/concentr-permille",                         //
+             "permille"},
+
+            // // TODO: binary prefixes not supported yet!
+            // {"Round-trip example from icu-units#35", //
+            //  "unit/kibijoule-per-furlong",           //
+            //  "unit/kibijoule-per-furlong"},
+        };
+        for (Object[] cas : cases) {
+            String msg = (String)cas[0];
+            String inputSkeleton = (String)cas[1];
+            String normalizedSkeleton = (String)cas[2];
+            UnlocalizedNumberFormatter nf = NumberFormatter.forSkeleton(inputSkeleton);
+            assertEquals(msg, normalizedSkeleton, nf.toSkeleton());
+        }
+
+        Object[][] failCases = {
+            {"Parsing measure-unit/* results in failure if not built-in unit",
+             "measure-unit/hectometer", //
+             true,                      //
+             false},
+
+            {"Parsing per-measure-unit/* results in failure if not built-in unit",
+             "measure-unit/meter per-measure-unit/hectosecond", //
+             true,                                              //
+             false},
+
+            {"\"currency/EUR measure-unit/length-meter\" fails, conflicting skeleton.",
+             "currency/EUR measure-unit/length-meter", //
+             true,                                     //
+             false},
+
+            {"\"measure-unit/length-meter currency/EUR\" fails, conflicting skeleton.",
+             "measure-unit/length-meter currency/EUR", //
+             true,                                     //
+             false},
+
+            {"\"currency/EUR per-measure-unit/meter\" fails, conflicting skeleton.",
+             "currency/EUR per-measure-unit/length-meter", //
+             true,                                         //
+             false},
+        };
+        for (Object[] cas : failCases) {
+            String msg = (String)cas[0];
+            String inputSkeleton = (String)cas[1];
+            boolean forSkeletonExpectFailure = (boolean)cas[2];
+            boolean toSkeletonExpectFailure = (boolean)cas[3];
+            UnlocalizedNumberFormatter nf = null;
+            try {
+                nf = NumberFormatter.forSkeleton(inputSkeleton);
+                if (forSkeletonExpectFailure) {
+                    fail("forSkeleton() should have failed: " + msg);
+                }
+            } catch (Exception e) {
+                if (!forSkeletonExpectFailure) {
+                    fail("forSkeleton() should not have failed: " + msg);
+                }
+                continue;
+            }
+            try {
+                nf.toSkeleton();
+                if (toSkeletonExpectFailure) {
+                    fail("toSkeleton() should have failed: " + msg);
+                }
+            } catch (Exception e) {
+                if (!toSkeletonExpectFailure) {
+                    fail("toSkeleton() should not have failed: " + msg);
+                }
+            }
+        }
+
+        assertEquals(                                //
+            ".unit(METER_PER_SECOND) normalization", //
+            "unit/meter-per-second",                 //
+            NumberFormatter.with().unit(MeasureUnit.METER_PER_SECOND).toSkeleton());
+        assertEquals(                                     //
+            ".unit(METER).perUnit(SECOND) normalization", //
+            "unit/meter-per-second",
+            NumberFormatter.with().unit(MeasureUnit.METER).perUnit(MeasureUnit.SECOND).toSkeleton());
+        assertEquals(                                                         //
+            ".unit(MeasureUnit.forIdentifier(\"hectometer\")) normalization", //
+            "unit/hectometer",
+            NumberFormatter.with().unit(MeasureUnit.forIdentifier("hectometer")).toSkeleton());
+        assertEquals(                                                         //
+            ".unit(MeasureUnit.forIdentifier(\"hectometer\")) normalization", //
+            "unit/meter-per-hectosecond",
+            NumberFormatter.with()
+                .unit(MeasureUnit.METER)
+                .perUnit(MeasureUnit.forIdentifier("hectosecond"))
+                .toSkeleton());
+
+        assertEquals(                                                //
+            ".unit(CURRENCY) produces a currency/CURRENCY skeleton", //
+            "currency/GBP",                                          //
+            NumberFormatter.with().unit(GBP).toSkeleton());
+
+        // .unit(CURRENCY).perUnit(ANYTHING) is not supported.
+        try {
+            NumberFormatter.with().unit(GBP).perUnit(MeasureUnit.METER).toSkeleton();
+            fail("should give an error, unit(currency) with perUnit() is invalid.");
+        } catch (UnsupportedOperationException e) {
+            // Pass
+        }
+    }
+
+    @Test
+    public void unitUsage() {
+        UnlocalizedNumberFormatter unloc_formatter;
+        LocalizedNumberFormatter formatter;
+        FormattedNumber formattedNum;
+        String uTestCase;
+
+        try {
+            NumberFormatter.with().usage("road").locale(ULocale.ENGLISH).format(1);
+            fail("should give an error, usage() without unit() is invalid");
+        } catch (IllegalIcuArgumentException e) {
+            // Pass
+        }
+
+        unloc_formatter = NumberFormatter.with().usage("road").unit(MeasureUnit.METER);
+
+        uTestCase = "unitUsage() en-ZA road";
+        formatter = unloc_formatter.locale(new ULocale("en-ZA"));
+        formattedNum = formatter.format(321d);
+
+
+        assertTrue(
+                uTestCase + ", got outputUnit: \"" + formattedNum.getOutputUnit().getIdentifier() + "\"",
+                MeasureUnit.METER.equals(formattedNum.getOutputUnit()));
+        assertEquals(uTestCase, "300 m", formattedNum.toString());
+        {
+            final Object[][] expectedFieldPositions = {
+                    {NumberFormat.Field.INTEGER, 0, 3},
+                    {NumberFormat.Field.MEASURE_UNIT, 4, 5}
+            };
+
+            assertNumberFieldPositions(
+                    uTestCase + " field positions",
+                    formattedNum,
+                    expectedFieldPositions);
+        }
+
+        assertFormatDescendingBig(
+                uTestCase,
+                "measure-unit/length-meter usage/road",
+                "unit/meter usage/road",
+                unloc_formatter,
+                new ULocale("en-ZA"),
+                "87\u00A0650 km",
+                "8\u00A0765 km",
+                "876 km", // 6.5 rounds down, 7.5 rounds up.
+                "88 km",
+                "8,8 km",
+                "900 m",
+                "90 m",
+                "10 m",
+                "0 m");
+
+        uTestCase = "unitUsage() en-GB road";
+        formatter = unloc_formatter.locale(new ULocale("en-GB"));
+        formattedNum = formatter.format(321d);
+        assertTrue(
+                uTestCase + ", got outputUnit: \"" + formattedNum.getOutputUnit().getIdentifier() + "\"",
+                MeasureUnit.YARD.equals(formattedNum.getOutputUnit()));
+        assertEquals(uTestCase, "350 yd", formattedNum.toString());
+        {
+            final Object[][] expectedFieldPositions = {
+                    {NumberFormat.Field.INTEGER, 0, 3},
+                    {NumberFormat.Field.MEASURE_UNIT, 4, 6}};
+            assertNumberFieldPositions(
+                    (uTestCase + " field positions"),
+                    formattedNum,
+                    expectedFieldPositions);
+        }
+
+        assertFormatDescendingBig(
+                uTestCase,
+                "measure-unit/length-meter usage/road",
+                "unit/meter usage/road",
+                unloc_formatter,
+                new ULocale("en-GB"),
+                "54,463 mi",
+                "5,446 mi",
+                "545 mi",
+                "54 mi",
+                "5.4 mi",
+                "0.54 mi",
+                "96 yd",
+                "9.6 yd",
+                "0 yd");
+
+        uTestCase = "unitUsage() en-US road";
+        formatter = unloc_formatter.locale(new ULocale("en-US"));
+        formattedNum = formatter.format(321d);
+        assertTrue(
+                uTestCase + ", got outputUnit: \"" + formattedNum.getOutputUnit().getIdentifier() + "\"",
+                MeasureUnit.FOOT == formattedNum.getOutputUnit());
+        assertEquals(uTestCase, "1,050 ft", formattedNum.toString());
+        {
+            final Object[][] expectedFieldPositions = {
+                    {NumberFormat.Field.GROUPING_SEPARATOR, 1, 2},
+                    {NumberFormat.Field.INTEGER, 0, 5},
+                    {NumberFormat.Field.MEASURE_UNIT, 6, 8}};
+            assertNumberFieldPositions(
+                    uTestCase + " field positions",
+                    formattedNum,
+                    expectedFieldPositions);
+        }
+        assertFormatDescendingBig(
+                uTestCase,
+                "measure-unit/length-meter usage/road",
+                "unit/meter usage/road",
+                unloc_formatter,
+                new ULocale("en-US"),
+                "54,463 mi",
+                "5,446 mi",
+                "545 mi",
+                "54 mi",
+                "5.4 mi",
+                "0.54 mi",
+                "300 ft",
+                "30 ft",
+                "0 ft");
+
+        unloc_formatter = NumberFormatter.with().usage("person").unit(MeasureUnit.KILOGRAM);
+        uTestCase = "unitUsage() en-GB person";
+        formatter = unloc_formatter.locale(new ULocale("en-GB"));
+        formattedNum = formatter.format(80d);
+        assertTrue(
+                uTestCase + ", got outputUnit: \"" + formattedNum.getOutputUnit().getIdentifier() + "\"",
+                MeasureUnit.forIdentifier("stone-and-pound").equals(formattedNum.getOutputUnit()));
+        assertEquals(uTestCase, "12 st, 8.4 lb", formattedNum.toString());
+        {
+            final Object[][] expectedFieldPositions = {
+                    // // Desired output: TODO(icu-units#67)
+                    // {NumberFormat.Field.INTEGER, 0, 2},
+                    // {NumberFormat.Field.MEASURE_UNIT, 3, 5},
+                    // {NumberFormat.ULISTFMT_LITERAL_FIELD, 5, 6},
+                    // {NumberFormat.Field.INTEGER, 7, 8},
+                    // {NumberFormat.DECIMAL_SEPARATOR_FIELD, 8, 9},
+                    // {NumberFormat.FRACTION_FIELD, 9, 10},
+                    // {NumberFormat.Field.MEASURE_UNIT, 11, 13}};
+
+                    // Current output: rather no fields than wrong fields
+                    {NumberFormat.Field.INTEGER, 7, 8},
+                    {NumberFormat.Field.DECIMAL_SEPARATOR, 8, 9},
+                    {NumberFormat.Field.FRACTION, 9, 10},
+            };
+
+            assertNumberFieldPositions(
+                    uTestCase + " field positions",
+                    formattedNum,
+                    expectedFieldPositions);
+        }
+        assertFormatDescending(
+                uTestCase,
+                "measure-unit/mass-kilogram usage/person",
+                "unit/kilogram usage/person",
+                unloc_formatter,
+                new ULocale("en-GB"),
+                "13,802 st, 7.2 lb",
+                "1,380 st, 3.5 lb",
+                "138 st, 0.35 lb",
+                "13 st, 11 lb",
+                "1 st, 5.3 lb",
+                "1 lb, 15 oz",
+                "0 lb, 3.1 oz",
+                "0 lb, 0.31 oz",
+                "0 lb, 0 oz");
+
+        assertFormatDescending(
+                uTestCase,
+                "usage/person unit-width-narrow measure-unit/mass-kilogram",
+                "usage/person unit-width-narrow unit/kilogram",
+                unloc_formatter.unitWidth(UnitWidth.NARROW),
+                new ULocale("en-GB"),
+                "13,802st 7.2lb",
+                "1,380st 3.5lb",
+                "138st 0.35lb",
+                "13st 11lb",
+                "1st 5.3lb",
+                "1lb 15oz",
+                "0lb 3.1oz",
+                "0lb 0.31oz",
+                "0lb 0oz");
+
+        assertFormatDescending(
+                uTestCase,
+                "usage/person unit-width-short measure-unit/mass-kilogram",
+                "usage/person unit-width-short unit/kilogram",
+                unloc_formatter.unitWidth(UnitWidth.SHORT),
+                new ULocale("en-GB"),
+                "13,802 st, 7.2 lb",
+                "1,380 st, 3.5 lb",
+                "138 st, 0.35 lb",
+                "13 st, 11 lb",
+                "1 st, 5.3 lb",
+                "1 lb, 15 oz",
+                "0 lb, 3.1 oz",
+                "0 lb, 0.31 oz",
+                "0 lb, 0 oz");
+
+        assertFormatDescending(
+                uTestCase,
+                "usage/person unit-width-full-name measure-unit/mass-kilogram",
+                "usage/person unit-width-full-name unit/kilogram",
+                unloc_formatter.unitWidth(UnitWidth.FULL_NAME),
+                new ULocale("en-GB"),
+                "13,802 stone, 7.2 pounds",
+                "1,380 stone, 3.5 pounds",
+                "138 stone, 0.35 pounds",
+                "13 stone, 11 pounds",
+                "1 stone, 5.3 pounds",
+                "1 pound, 15 ounces",
+                "0 pounds, 3.1 ounces",
+                "0 pounds, 0.31 ounces",
+                "0 pounds, 0 ounces");
+
+       assertFormatDescendingBig(
+               "Scientific notation with Usage: possible when using a reasonable Precision",
+               "scientific @### usage/default measure-unit/area-square-meter unit-width-full-name",
+               "scientific @### usage/default unit/square-meter unit-width-full-name",
+               NumberFormatter.with()
+                       .unit(MeasureUnit.SQUARE_METER)
+                       .usage("default")
+                       .notation(Notation.scientific())
+                       .precision(Precision.minMaxSignificantDigits(1, 4))
+                       .unitWidth(UnitWidth.FULL_NAME),
+               new ULocale("en-ZA"),
+               "8,765E1 square kilometres",
+               "8,765E0 square kilometres",
+               "8,765E1 hectares",
+               "8,765E0 hectares",
+               "8,765E3 square metres",
+               "8,765E2 square metres",
+               "8,765E1 square metres",
+               "8,765E0 square metres",
+               "0E0 square centimetres");
+
+        assertFormatSingle(
+                "Negative numbers: minute-and-second",
+                "measure-unit/duration-second usage/media",
+                "unit/second usage/media",
+                NumberFormatter.with().unit(MeasureUnit.SECOND).usage("media"),
+                new ULocale("nl-NL"),
+                -77.7,
+                "-1 min, 18 sec");
+
+        assertFormatSingle(
+                "Rounding Mode propagates: rounding down",
+                "usage/road measure-unit/length-centimeter rounding-mode-floor",
+                "usage/road unit/centimeter rounding-mode-floor",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.forIdentifier("centimeter"))
+                        .usage("road")
+                        .roundingMode(RoundingMode.FLOOR),
+                new ULocale("en-ZA"),
+                34500,
+                "300 m");
+
+        assertFormatSingle(
+                "Rounding Mode propagates: rounding up",
+                "usage/road measure-unit/length-centimeter rounding-mode-ceiling",
+                "usage/road unit/centimeter rounding-mode-ceiling",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.forIdentifier("centimeter"))
+                        .usage("road")
+                        .roundingMode(RoundingMode.CEILING),
+                new ULocale("en-ZA"),
+                30500,
+                "350 m");
+
+        // TODO(icu-units#38): improve unit testing coverage. E.g. add
+        // vehicle-fuel triggering inversion conversion code. Test with 0 too,
+        // to see divide-by-zero behaviour.
+    }
+
+    @Test
+    public void unitUsageErrorCodes() {
+        UnlocalizedNumberFormatter unloc_formatter;
+
+        try {
+            NumberFormatter.forSkeleton("unit/foobar");
+            fail("should give an error, because foobar is an invalid unit");
+        } catch (SkeletonSyntaxException e) {
+            // Pass
+        }
+
+        unloc_formatter = NumberFormatter.forSkeleton("usage/foobar");
+        // This does not give an error, because usage is not looked up yet.
+        //status.errIfFailureAndReset("Expected behaviour: no immediate error for invalid usage");
+
+        try {
+            // Lacking a unit results in a failure. The skeleton is "incomplete", but we
+            // support adding the unit via the fluent API, so it is not an error until
+            // we build the formatting pipeline itself.
+            unloc_formatter.locale(new ULocale("en-GB")).format(1);
+            fail("should throw IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // Pass
+        }
+
+        // Adding the unit as part of the fluent chain leads to success.
+        unloc_formatter.unit(MeasureUnit.METER).locale(new ULocale("en-GB")).format(1); /* No Exception should be thrown */
+
+    }
+
+
+    // Tests for the "skeletons" field in unitPreferenceData, as well as precision
+    // and notation overrides.
+    @Test
+    public void unitUsageSkeletons() {
+        assertFormatSingle(
+                "Default >300m road preference skeletons round to 50m",
+                "usage/road measure-unit/length-meter",
+                "usage/road unit/meter",
+                NumberFormatter.with().unit(MeasureUnit.METER).usage("road"),
+                new ULocale("en-ZA"),
+                321,
+                "300 m");
+
+        assertFormatSingle(
+                "Precision can be overridden: override takes precedence",
+                "usage/road measure-unit/length-meter @#",
+                "usage/road unit/meter @#",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER)
+                        .usage("road")
+                        .precision(Precision.maxSignificantDigits(2)),
+                new ULocale("en-ZA"),
+                321,
+                "320 m");
+
+        assertFormatSingle(
+                "Compact notation with Usage: bizarre, but possible (short)",
+                "compact-short usage/road measure-unit/length-meter",
+                "compact-short usage/road unit/meter",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER)
+                        .usage("road")
+                        .notation(Notation.compactShort()),
+                new ULocale("en-ZA"),
+                987654321L,
+                "988K km");
+
+        assertFormatSingle(
+                "Compact notation with Usage: bizarre, but possible (short, precision override)",
+                "compact-short usage/road measure-unit/length-meter @#",
+                "compact-short usage/road unit/meter @#",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER)
+                        .usage("road")
+                        .notation(Notation.compactShort())
+                        .precision(Precision.maxSignificantDigits(2)),
+                new ULocale("en-ZA"),
+                987654321L,
+                "990K km");
+
+        assertFormatSingle(
+                "Compact notation with Usage: unusual but possible (long)",
+                "compact-long usage/road measure-unit/length-meter @#",
+                "compact-long usage/road unit/meter @#",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER)
+                        .usage("road")
+                        .notation(Notation.compactLong())
+                        .precision(Precision.maxSignificantDigits(2)),
+                new ULocale("en-ZA"),
+                987654321,
+                "990 thousand km");
+
+        assertFormatSingle(
+                "Compact notation with Usage: unusual but possible (long, precision override)",
+                "compact-long usage/road measure-unit/length-meter @#",
+                "compact-long usage/road unit/meter @#",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER)
+                        .usage("road")
+                        .notation(Notation.compactLong())
+                        .precision(Precision.maxSignificantDigits(2)),
+                new ULocale("en-ZA"),
+                987654321,
+                "990 thousand km");
+
+        assertFormatSingle(
+                "Scientific notation, not recommended, requires precision override for road",
+                "scientific usage/road measure-unit/length-meter",
+                "scientific usage/road unit/meter",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER)
+                        .usage("road")
+                        .notation(Notation.scientific()),
+                new ULocale("en-ZA"),
+                321.45,
+                // Rounding to the nearest "50" is not exponent-adjusted in scientific notation:
+                "0E2 m");
+
+        assertFormatSingle(
+                "Scientific notation with Usage: possible when using a reasonable Precision",
+                "scientific usage/road measure-unit/length-meter @###",
+                "scientific usage/road unit/meter @###",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER)
+                        .usage("road")
+                        .notation(Notation.scientific())
+                        .precision(Precision.maxSignificantDigits(4)),
+                new ULocale("en-ZA"),
+                321.45, // 0.45 rounds down, 0.55 rounds up.
+                "3,214E2 m");
+
+        assertFormatSingle(
+                "Scientific notation with Usage: possible when using a reasonable Precision",
+                "scientific usage/default measure-unit/length-astronomical-unit unit-width-full-name",
+                "scientific usage/default unit/astronomical-unit unit-width-full-name",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.forIdentifier("astronomical-unit"))
+                        .usage("default")
+                        .notation(Notation.scientific())
+                        .unitWidth(UnitWidth.FULL_NAME),
+                new ULocale("en-ZA"),
+                1e20,
+                "1,5E28 kilometres");
+    }
+
+
     @Test
     public void unitCurrency() {
         assertFormatDescending(
@@ -969,6 +1804,78 @@
                 ULocale.ENGLISH,
                 -98.7654321,
                 "-98.765432%");
+
+        // ICU-20923
+        assertFormatDescendingBig(
+                "Compact Percent",
+                "compact-short percent",
+                "K %",
+                NumberFormatter.with()
+                        .notation(Notation.compactShort())
+                        .unit(NoUnit.PERCENT),
+                ULocale.ENGLISH,
+                "88M%",
+                "8.8M%",
+                "876K%",
+                "88K%",
+                "8.8K%",
+                "876%",
+                "88%",
+                "8.8%",
+                "0%");
+
+        // ICU-20923
+        assertFormatDescendingBig(
+                "Compact Percent with Scale",
+                "compact-short percent scale/100",
+                "K %x100",
+                NumberFormatter.with()
+                        .notation(Notation.compactShort())
+                        .unit(NoUnit.PERCENT)
+                        .scale(Scale.powerOfTen(2)),
+                ULocale.ENGLISH,
+                "8.8B%",
+                "876M%",
+                "88M%",
+                "8.8M%",
+                "876K%",
+                "88K%",
+                "8.8K%",
+                "876%",
+                "0%");
+
+        // ICU-20923
+        assertFormatDescendingBig(
+                "Compact Percent Long Name",
+                "compact-short percent unit-width-full-name",
+                "K % unit-width-full-name",
+                NumberFormatter.with()
+                        .notation(Notation.compactShort())
+                        .unit(NoUnit.PERCENT)
+                        .unitWidth(UnitWidth.FULL_NAME),
+                ULocale.ENGLISH,
+                "88M percent",
+                "8.8M percent",
+                "876K percent",
+                "88K percent",
+                "8.8K percent",
+                "876 percent",
+                "88 percent",
+                "8.8 percent",
+                "0 percent");
+
+        assertFormatSingle(
+                "Per Percent",
+                "measure-unit/length-meter per-measure-unit/concentr-percent unit-width-full-name",
+                "measure-unit/length-meter per-measure-unit/concentr-percent unit-width-full-name",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER)
+                        .perUnit(MeasureUnit.PERCENT)
+                        .unitWidth(UnitWidth.FULL_NAME),
+                ULocale.ENGLISH,
+                50,
+                "50 meters per percent");
+
     }
 
     @Test
@@ -2573,10 +3480,10 @@
     @Test
     public void locale() {
         // Coverage for the locale setters.
-        assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.with().locale(Locale.ENGLISH));
-        assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.withLocale(ULocale.ENGLISH));
-        assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.withLocale(Locale.ENGLISH));
-        assertNotEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.with().locale(Locale.FRENCH));
+        Assert.assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.with().locale(Locale.ENGLISH));
+        Assert.assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.withLocale(ULocale.ENGLISH));
+        Assert.assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.withLocale(Locale.ENGLISH));
+        Assert.assertNotEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.with().locale(Locale.FRENCH));
     }
 
     @Test
@@ -2584,19 +3491,19 @@
         LocalizedNumberFormatter formatter = NumberFormatter.withLocale(ULocale.ENGLISH);
 
         // Double
-        assertEquals("514.23", formatter.format(514.23).toString());
+        Assert.assertEquals("514.23", formatter.format(514.23).toString());
 
         // Int64
-        assertEquals("51,423", formatter.format(51423L).toString());
+        Assert.assertEquals("51,423", formatter.format(51423L).toString());
 
         // BigDecimal
-        assertEquals("987,654,321,234,567,890",
+        Assert.assertEquals("987,654,321,234,567,890",
                 formatter.format(new BigDecimal("98765432123456789E1")).toString());
 
         // Also test proper DecimalQuantity bytes storage when all digits are in the fraction.
         // The number needs to have exactly 40 digits, which is the size of the default buffer.
         // (issue discovered by the address sanitizer in C++)
-        assertEquals("0.009876543210987654321098765432109876543211",
+        Assert.assertEquals("0.009876543210987654321098765432109876543211",
                 formatter.precision(Precision.unlimited())
                         .format(new BigDecimal("0.009876543210987654321098765432109876543211"))
                         .toString());
@@ -2722,11 +3629,11 @@
         }
 
         {
-            String message = "Measure unit field position with prefix and suffix";
+            String message = "Measure unit field position with prefix and suffix, composed m/s";
             FormattedNumber result = assertFormatSingle(
                     message,
                     "measure-unit/length-meter per-measure-unit/duration-second unit-width-full-name",
-                    "~unit/meter-per-second unit-width-full-name", // does not round-trip to the full skeleton above
+                    "measure-unit/length-meter per-measure-unit/duration-second unit-width-full-name",
                     NumberFormatter.with().unit(MeasureUnit.METER).perUnit(MeasureUnit.SECOND).unitWidth(UnitWidth.FULL_NAME),
                     new ULocale("ky"), // locale with the interesting data
                     68,
@@ -2743,6 +3650,27 @@
         }
 
         {
+            String message = "Measure unit field position with prefix and suffix, built-in m/s";
+            FormattedNumber result = assertFormatSingle(
+                    message,
+                    "measure-unit/speed-meter-per-second unit-width-full-name",
+                    "unit/meter-per-second unit-width-full-name",
+                    NumberFormatter.with().unit(MeasureUnit.METER_PER_SECOND).unitWidth(UnitWidth.FULL_NAME),
+                    new ULocale("ky"), // locale with the interesting data
+                    68,
+                    "секундасына 68 метр");
+            Object[][] expectedFieldPositions = new Object[][] {
+                    // field, begin index, end index
+                    {NumberFormat.Field.MEASURE_UNIT, 0, 11},
+                    {NumberFormat.Field.INTEGER, 12, 14},
+                    {NumberFormat.Field.MEASURE_UNIT, 15, 19}};
+            assertNumberFieldPositions(
+                    message,
+                    result,
+                    expectedFieldPositions);
+        }
+
+        {
             String message = "Measure unit field position with inner spaces";
             FormattedNumber result = assertFormatSingle(
                     message,
@@ -3256,6 +4184,7 @@
                 conciseSkeleton = conciseSkeleton.substring(1);
                 shouldRoundTrip = false;
             }
+
             LocalizedNumberFormatter l4 = NumberFormatter.forSkeleton(conciseSkeleton).locale(locale);
             if (shouldRoundTrip) {
                 assertEquals(message + ": Concise Skeleton:", normalized, l4.toSkeleton());
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberParserTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberParserTest.java
index e26dc13..237ec13 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberParserTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberParserTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.number;
 
 import static org.junit.Assert.assertEquals;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberPermutationTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberPermutationTest.java
index 31999aa..ba99583 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberPermutationTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberPermutationTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.number;
 
 import java.io.BufferedReader;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberRangeFormatterTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberRangeFormatterTest.java
index 8a5bb3a..00fa0ff 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberRangeFormatterTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberRangeFormatterTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.number;
 
 import static org.junit.Assert.assertEquals;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberSkeletonTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberSkeletonTest.java
index 71825e8..0113b01 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberSkeletonTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/number/NumberSkeletonTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.number;
 
 import static org.junit.Assert.assertEquals;
@@ -329,11 +329,11 @@
             { "scientific/*ee", "scientific/+ee" },
             { "integer-width/*00", "integer-width/+00" },
         };
-    
+
         for (String[] cas : cases) {
             String star = cas[0];
             String plus = cas[1];
-    
+
             String normalized = NumberFormatter.forSkeleton(plus)
                 .toSkeleton();
             assertEquals("Plus should normalize to star", star, normalized);
@@ -407,10 +407,44 @@
                 String skeleton = "measure-unit/";
                 skeleton += cas1[0] + "-" + cas1[1] + " per-measure-unit/" + cas2[0] + "-" + cas2[1];
 
+                @SuppressWarnings("unused")
                 String actual = NumberFormatter.forSkeleton(skeleton).locale(arabic).format(5142.3)
                         .toString();
                 // Just make sure it won't throw exception
             }
         }
     }
+
+    @Test
+    public void perUnitToSkeleton() {
+        String[][] cases = {
+            {"area", "acre"},
+            {"concentr", "percent"},
+            {"concentr", "permille"},
+            {"concentr", "permillion"},
+            {"concentr", "permyriad"},
+            {"digital", "bit"},
+            {"length", "yard"},
+        };
+
+        for (String[] cas1 : cases) {
+            for (String[] cas2 : cases) {
+                String skeleton = "measure-unit/" + cas1[0] + "-" + cas1[1] + " per-measure-unit/" +
+                                  cas2[0] + "-" + cas2[1];
+
+                if (cas1[0] != cas2[0] && cas1[1] != cas2[1]) {
+                    String toSkeleton = NumberFormatter.forSkeleton(skeleton).toSkeleton();
+
+                    // Ensure both subtype are in the toSkeleton.
+                    String msg;
+                    msg = toSkeleton + " should contain '" + cas1[1] + "' when constructed from " +
+                          skeleton;
+                    assertTrue(msg, toSkeleton.indexOf(cas1[1]) >= 0);
+                    msg = toSkeleton + " should contain '" + cas2[1] + "' when constructed from " +
+                          skeleton;
+                    assertTrue(msg, toSkeleton.indexOf(cas2[1]) >= 0);
+                }
+            }
+        }
+    }
 }
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/number/PatternStringTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/number/PatternStringTest.java
index bbc98dc..c4d30e9 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/number/PatternStringTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/number/PatternStringTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.number;
 
 import static org.junit.Assert.assertEquals;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/number/PropertiesTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/number/PropertiesTest.java
index 2b03221..46f083c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/number/PropertiesTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/number/PropertiesTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.number;
 
 import static org.junit.Assert.assertEquals;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/AbstractBreakIteratorTests.java b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/AbstractBreakIteratorTests.java
index fa07227..53f904e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/AbstractBreakIteratorTests.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/AbstractBreakIteratorTests.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.rbbi;
 
 import java.text.CharacterIterator;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/BreakIteratorRegTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/BreakIteratorRegTest.java
index 0e74957..cd076d6 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/BreakIteratorRegTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/BreakIteratorRegTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java
index 1c8eea7..0277e32 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2004, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/BreakIteratorTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/BreakIteratorTest.java
index 54fbf39..1221336 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/BreakIteratorTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/BreakIteratorTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBIAPITest.java b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBIAPITest.java
index 3e067aa..4cf5d01 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBIAPITest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBIAPITest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBIMonkeyTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBIMonkeyTest.java
index a73ca2d..037c6f1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBIMonkeyTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBIMonkeyTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 package android.icu.dev.test.rbbi;
 
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBITest.java b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBITest.java
index 17a772b..9e6a9d8 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBITest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBITest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
@@ -30,9 +30,11 @@
 import android.icu.impl.RBBIDataWrapper;
 import android.icu.text.BreakIterator;
 import android.icu.text.RuleBasedBreakIterator;
+import android.icu.util.CodePointTrie;
 import android.icu.util.ULocale;
 import android.icu.testsharding.MainTestShard;
 
+
 @MainTestShard
 @RunWith(JUnit4.class)
 public class RBBITest extends TestFmwk {
@@ -409,7 +411,7 @@
             }
         }
 
-        List<Thread> threads = new ArrayList<Thread>();
+        List<Thread> threads = new ArrayList<>();
         for (int n = 0; n<4; ++n) {
             threads.add(new Thread(new WorkerThread()));
         }
@@ -514,7 +516,7 @@
         }
         private static final BreakIterator BREAK_ITERATOR_CACHE = BreakIterator.getWordInstance(ULocale.ROOT);
         public static List<Integer> getBoundary(String toParse) {
-            List<Integer> retVal = new ArrayList<Integer>();
+            List<Integer> retVal = new ArrayList<>();
             BreakIterator bi = (BreakIterator) BREAK_ITERATOR_CACHE.clone();
             bi.setText(toParse);
             for (int boundary=bi.first(); boundary != BreakIterator.DONE; boundary = bi.next()) {
@@ -565,7 +567,7 @@
 
         RuleBasedBreakIterator bi  = new RuleBasedBreakIterator(rules);
         String rtRules = bi.toString();        // getRules() in C++
-        assertEquals("Break Iterator rule stripping test", "!!forward; $x = [ab#]; '#' '?'; ",  rtRules);
+        assertEquals("Break Iterator rule stripping test", "!!forward;$x=[ab#];'#''?';",  rtRules);
     }
 
     @Test
@@ -580,19 +582,20 @@
         int numCharClasses = dw.fHeader.fCatCount;
 
         // Check for duplicate columns (character categories)
-        List<String> columns = new ArrayList<String>();
+        List<String> columns = new ArrayList<>();
         for (int column=0; column<numCharClasses; column++) {
             StringBuilder s = new StringBuilder();
             for (int r = 1; r < fwtbl.fNumStates; r++) {
                 int row = dw.getRowIndex(r);
-                short tableVal = fwtbl.fTable[row + RBBIDataWrapper.NEXTSTATES + column];
-                s.append((char)tableVal);
+                char tableVal = fwtbl.fTable[row + RBBIDataWrapper.NEXTSTATES + column];
+                s.append(tableVal);
             }
             columns.add(s.toString());
         }
         // Ignore column (char class) 0 while checking; it's special, and may have duplicates.
         for (int c1=1; c1<numCharClasses; c1++) {
-            for (int c2 = c1+1; c2 < numCharClasses; c2++) {
+            int limit = c1 < fwtbl.fDictCategoriesStart ? fwtbl.fDictCategoriesStart : numCharClasses;
+            for (int c2 = c1+1; c2 < limit; c2++) {
                 assertFalse(String.format("Duplicate columns (%d, %d)", c1, c2), columns.get(c1).equals(columns.get(c2)));
                 // if (columns.get(c1).equals(columns.get(c2))) {
                 //    System.out.printf("Duplicate columns (%d, %d)\n", c1, c2);
@@ -601,17 +604,16 @@
         }
 
         // Check for duplicate states.
-        List<String> rows = new ArrayList<String>();
+        List<String> rows = new ArrayList<>();
         for (int r=0; r<fwtbl.fNumStates; r++) {
             StringBuilder s = new StringBuilder();
             int row = dw.getRowIndex(r);
-            assertTrue("Accepting < -1", fwtbl.fTable[row + RBBIDataWrapper.ACCEPTING] >= -1);
             s.append(fwtbl.fTable[row + RBBIDataWrapper.ACCEPTING]);
             s.append(fwtbl.fTable[row + RBBIDataWrapper.LOOKAHEAD]);
-            s.append(fwtbl.fTable[row + RBBIDataWrapper.TAGIDX]);
+            s.append(fwtbl.fTable[row + RBBIDataWrapper.TAGSIDX]);
             for (int column=0; column<numCharClasses; column++) {
-                short tableVal = fwtbl.fTable[row + RBBIDataWrapper.NEXTSTATES + column];
-                s.append((char)tableVal);
+                char tableVal = fwtbl.fTable[row + RBBIDataWrapper.NEXTSTATES + column];
+                s.append(tableVal);
             }
             rows.add(s.toString());
         }
@@ -645,7 +647,7 @@
     public void TestTableRebuild() {
         // Test to verify that rebuilding the state tables from rule source for the standard
         // break iterator types yields the same tables as are imported from ICU4C as part of the default data.
-        List<RuleBasedBreakIterator> breakIterators = new ArrayList<RuleBasedBreakIterator>();
+        List<RuleBasedBreakIterator> breakIterators = new ArrayList<>();
         breakIterators.add((RuleBasedBreakIterator)BreakIterator.getCharacterInstance(Locale.ENGLISH));
         breakIterators.add((RuleBasedBreakIterator)BreakIterator.getWordInstance(Locale.ENGLISH));
         breakIterators.add((RuleBasedBreakIterator)BreakIterator.getSentenceInstance(Locale.ENGLISH));
@@ -658,4 +660,252 @@
             assertTrue("Reverse Table",      RBBIDataWrapper.equals(bi.fRData.fRTable, bi2.fRData.fRTable));
         }
     }
+
+    // Helper function to test 8/16 bits of trie and 8/16 bits of state table.
+    private void testTrieStateTable(int numChar, boolean expectUCPTrieValueWidthIn8Bits,
+        boolean expectStateRowIn8Bits) {
+        // Text are duplicate characters from U+4E00 to U+4FFF
+        StringBuilder builder = new StringBuilder(2 * (0x5000 - 0x4e00));
+        for (char c = 0x4e00; c < 0x5000; c++) {
+            builder.append(c).append(c);
+        }
+        String text = builder.toString();
+
+        // Generate rule which will caused length+4 character classes and
+        // length+3 states
+
+        builder = new StringBuilder(100 + 6 * numChar);
+        builder.append("!!quoted_literals_only;");
+        for (char c = 0x4e00; c < 0x4e00 + numChar; c++) {
+            builder.append("\'").append(c).append(c).append("';");
+        }
+        builder.append(".;");
+        String rules = builder.toString();
+
+        RuleBasedBreakIterator bi = new RuleBasedBreakIterator(rules);
+
+        RBBIDataWrapper dw = bi.fRData;
+        RBBIDataWrapper.RBBIStateTable fwtbl = dw.fFTable;
+        RBBIDataWrapper.RBBIStateTable rvtbl = dw.fRTable;
+
+        boolean has8BitRowDataForwardTable = (fwtbl.fFlags & RBBIDataWrapper.RBBI_8BITS_ROWS) != 0;
+        boolean has8BitRowDataReverseTable = (rvtbl.fFlags & RBBIDataWrapper.RBBI_8BITS_ROWS) != 0;
+        boolean has8BitsTrie = dw.fTrie.getValueWidth() == CodePointTrie.ValueWidth.BITS_8;
+
+        assertEquals("Number of char classes mismatch numChar=" + numChar, numChar + 4, dw.fHeader.fCatCount);
+        assertEquals("Number of states in Forward Table mismatch numChar=" + numChar, numChar + 3, fwtbl.fNumStates);
+        assertEquals("Number of states in Reverse Table mismatch numChar=" + numChar, numChar + 3, rvtbl.fNumStates);
+        assertEquals("Trie width mismatch numChar=" + numChar, expectUCPTrieValueWidthIn8Bits, has8BitsTrie);
+        assertEquals("Bits of Forward State table mismatch numChar=" + numChar,
+                     expectStateRowIn8Bits, has8BitRowDataForwardTable);
+        assertEquals("Bits of Reverse State table mismatch numChar=" + numChar,
+                     expectStateRowIn8Bits, has8BitRowDataReverseTable);
+
+        bi.setText(text);
+
+        int pos;
+        int i = 0;
+        while ((pos = bi.next()) > 0) {
+            // The first numChar should not break between the pair
+            if (i++ < numChar) {
+                assertEquals("next() mismatch numChar=" + numChar, i * 2, pos);
+            } else {
+                // After the first numChar next(), break on each character.
+                assertEquals("next() mismatch numChar=" + numChar, i + numChar, pos);
+            }
+        }
+        while ((pos = bi.previous()) > 0) {
+            // The first numChar should not break between the pair
+            if (--i < numChar) {
+                assertEquals("previous() mismatch numChar=" + numChar, i * 2, pos);
+            } else {
+                // After the first numChar next(), break on each character.
+                assertEquals("previous() mismatch numChar=" + numChar, i + numChar, pos);
+            }
+        }
+    }
+
+    @Test
+    public void Test8BitsTrieWith8BitStateTable() {
+        testTrieStateTable(251,  true /* expectUCPTrieValueWidthIn8Bits */,  true /* expectStateRowIn8Bits */);
+    }
+
+    @Test
+    public void Test16BitsTrieWith8BitStateTable() {
+        testTrieStateTable(252, false /* expectUCPTrieValueWidthIn8Bits */,  true /* expectStateRowIn8Bits */);
+    }
+
+    @Test
+    public void Test16BitsTrieWith16BitStateTable() {
+        testTrieStateTable(253, false /* expectUCPTrieValueWidthIn8Bits */, false /* expectStateRowIn8Bits */);
+    }
+
+    @Test
+    public void Test8BitsTrieWith16BitStateTable() {
+        // Test UCPTRIE_VALUE_BITS_8 with 16 bits rows. Use a different approach to
+        // create state table in 16 bits.
+
+        // Generate 510 'a' as text
+        StringBuilder builder = new StringBuilder(510);
+        for (int i = 0; i < 510; i++) {
+            builder.append('a');
+        }
+        String text = builder.toString();
+
+        builder = new StringBuilder(550);
+        builder.append("!!quoted_literals_only;'");
+        // 254 'a' in the rule will cause 256 states
+        for (int i = 0; i < 254; i++) {
+            builder.append('a');
+        }
+        builder.append("';.;");
+        String rules = builder.toString();
+
+        RuleBasedBreakIterator bi = new RuleBasedBreakIterator(rules);
+
+        RBBIDataWrapper dw = bi.fRData;
+        RBBIDataWrapper.RBBIStateTable fwtbl = dw.fFTable;
+
+        boolean has8BitRowData = (fwtbl.fFlags & RBBIDataWrapper.RBBI_8BITS_ROWS) != 0;
+        boolean has8BitsTrie = dw.fTrie.getValueWidth() == CodePointTrie.ValueWidth.BITS_8;
+        assertFalse("State table should be in 16 bits", has8BitRowData);
+        assertTrue("Trie should be in 8 bits", has8BitsTrie);
+
+        bi.setText(text);
+
+        // break positions:
+        // 254, 508, 509, 510
+        assertEquals("next()", 254, bi.next());
+        int i = 0;
+        int pos;
+        while ((pos = bi.next()) > 0) {
+            assertEquals("next()", 508 + i , pos);
+            i++;
+        }
+        i = 0;
+        while ((pos = bi.previous()) > 0) {
+             i++;
+            if (pos >= 508) {
+                assertEquals("previous()", 510 - i , pos);
+            } else {
+                assertEquals("previous()", 254 , pos);
+            }
+        }
+    }
+
+    /**
+     * Test that both compact (8 bit) and full sized (16 bit) rbbi tables work, and
+     * that there are no problems with rules at the size that transitions between the two.
+     *
+     * A rule that matches a literal string, like 'abcdefghij', will require one state and
+     * one character class per character in the string. So we can make a rule to tickle the
+     * boundaries by using literal strings of various lengths.
+     *
+     * For both the number of states and the number of character classes, the eight bit format
+     * only has 7 bits available, allowing for 128 values. For both, a few values are reserved,
+     * leaving 120 something available. This test runs the string over the range of 120 - 130,
+     * which allows some margin for changes to the number of values reserved by the rule builder
+     * without breaking the test.
+     */
+    @Test
+    public void TestTable_8_16_Bits() {
+        // testStr serves as both the source of the rule string (truncated to the desired length)
+        // and as test data to check matching behavior. A break rule consisting of the first 120
+        // characters of testStr will match the first 120 chars of the full-length testStr.
+        StringBuilder builder = new StringBuilder(0x200);
+        for (char c=0x3000; c<0x3200; ++c) {
+            builder.append(c);
+        }
+        String testStr = builder.toString();
+
+        int startLength = 120;   // The shortest rule string to test.
+        int endLength = 260;     // The longest rule string to test
+        int increment = 1;
+        for (int ruleLen=startLength; ruleLen <= endLength; ruleLen += increment) {
+            String ruleString = (new String("!!quoted_literals_only; '#';"))
+                .replace("#", testStr.substring(0, ruleLen));
+            RuleBasedBreakIterator bi = new RuleBasedBreakIterator(ruleString);
+
+            // Verify that the break iterator is functioning - that the first boundary found
+            // in testStr is at the length of the rule string.
+            bi.setText(testStr);
+            assertEquals("The first boundary found in testStr should be at the length of the rule string",
+                ruleLen, bi.next());
+
+            // Reverse iteration. Do a setText() first, to flush the break iterator's internal cache
+            // of previously detected boundaries, thus forcing the engine to run the safe reverse rules.
+            bi.setText(testStr);
+            int result = bi.preceding(ruleLen);
+            assertEquals("Reverse iteration should find the boundary at 0", 0, result);
+
+            // Verify that the range of rule lengths being tested cover the transations
+            // from 8 to 16 bit data.
+            RBBIDataWrapper dw = bi.fRData;
+            RBBIDataWrapper.RBBIStateTable fwtbl = dw.fFTable;
+
+            boolean has8BitRowData = (fwtbl.fFlags & RBBIDataWrapper.RBBI_8BITS_ROWS) != 0;
+            boolean has8BitsTrie = dw.fTrie.getValueWidth() == CodePointTrie.ValueWidth.BITS_8;
+            if (ruleLen == startLength) {
+                assertTrue("State table should be in 8 bits", has8BitRowData);
+                assertTrue("Trie should be in 8 bits", has8BitsTrie);
+            }
+            if (ruleLen == endLength) {
+                assertFalse("State table should be in 16 bits", has8BitRowData);
+                assertFalse("Trie should be in 16 bits", has8BitsTrie);
+            }
+        }
+    }
+
+    /* Test handling of a large number of look-ahead rules.
+     * The number of rules in the test exceeds the implementation limits prior to the
+     * improvements introduced with #13590.
+     *
+     * The test look-ahead rules have the form "AB / CE"; "CD / EG"; ...
+     * The text being matched is sequential, "ABCDEFGHI..."
+     *
+     * The upshot is that the look-ahead rules all match on their preceding context,
+     * and consequently must save a potential result, but then fail to match on their
+     * trailing context, so that they don't actually cause a boundary.
+     *
+     * Additionally, add a ".*" rule, so there are no boundaries unless a
+     * look-ahead hard-break rule forces one.
+     */
+    @Test
+    public void TestBug13590() {
+        StringBuilder rules = new StringBuilder("!!quoted_literals_only; !!chain; .*;\n");
+
+        int NUM_LOOKAHEAD_RULES = 50;
+        char STARTING_CHAR = '\u5000';
+        char firstChar = 0;
+        for (int ruleNum = 0; ruleNum < NUM_LOOKAHEAD_RULES; ++ruleNum) {
+            firstChar = (char) (STARTING_CHAR + ruleNum*2);
+            rules.append('\'') .append(firstChar) .append((char)(firstChar+1)) .append('\'')
+                 .append(' ') .append('/') .append(' ')
+                 .append('\'') .append((char)(firstChar+2)) .append((char)(firstChar+4)) .append('\'')
+                 .append(';') .append('\n');
+        }
+
+        // Change the last rule added from the form "UV / WY" to "UV / WX".
+        // Changes the rule so that it will match - all 4 chars are in ascending sequence.
+        String rulesStr = rules.toString().replace((char)(firstChar+4), (char)(firstChar+3));
+
+        RuleBasedBreakIterator bi = new RuleBasedBreakIterator(rulesStr);
+        // bi.dump(System.out);
+
+        StringBuilder testString = new StringBuilder();
+        for (char c = (char) (STARTING_CHAR-200); c < STARTING_CHAR + NUM_LOOKAHEAD_RULES*4; ++c) {
+            testString.append(c);
+        }
+        bi.setText(testString);
+
+        int breaksFound = 0;
+        while (bi.next() != BreakIterator.DONE) {
+            ++breaksFound;
+        }
+
+        // Two matches are expected, one from the last rule that was explicitly modified,
+        // and one at the end of the text.
+        assertEquals("Wrong number of breaks found", 2, breaksFound);
+    }
+
 }
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBITestExtended.java b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBITestExtended.java
index 37c149f..bf2974a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBITestExtended.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBITestExtended.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Created on May 5, 2004
  *
@@ -248,6 +248,11 @@
         case PARSE_DATA:
             if (c == '•') {
                 int  breakIdx = tp.dataToBreak.length();
+                if (tp.expectedBreaks[breakIdx] != 0) {
+                    errln(String.format(
+                            "rbbitst.txt:%d:%d adjacent expected breaks with no intervening test text",
+                            lineNum, column));
+                }
                 tp.expectedBreaks[breakIdx] = -1;
                 tp.srcLine[breakIdx]        = lineNum;
                 tp.srcCol[breakIdx]         = column;
@@ -391,6 +396,11 @@
                     tagValue = -1;
                 }
                 int  breakIdx = tp.dataToBreak.length();
+                if (tp.expectedBreaks[breakIdx] != 0) {
+                    errln(String.format(
+                            "rbbitst.txt:%d:%d adjacent expected breaks with no intervening test text",
+                            lineNum, column));
+                }
                 tp.expectedBreaks[breakIdx] = tagValue;
                 tp.srcLine[breakIdx]        = lineNum;
                 tp.srcCol[breakIdx]         = column;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBITestMonkey.java b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBITestMonkey.java
index 5246ac8..67ca613 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBITestMonkey.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/RBBITestMonkey.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2016 International Business Machines Corporation and
@@ -1898,6 +1898,7 @@
 
     // Helper function for formatting error output.
     // Display a code point in "\\uxxxx" or "\Uxxxxxxxx" format
+    @SuppressWarnings("unused")
     private static void appendCharToBuf(StringBuffer dest, int c, int fieldLen) {
         String hexChars = "0123456789abcdef";
         if (c < 0x10000) {
@@ -1930,6 +1931,7 @@
         StringBuffer     testText         = new StringBuffer();
         int              numCharClasses;
         List             chClasses;
+        @SuppressWarnings("unused")
         int              expectedCount    = 0;
         boolean[]        expectedBreaks   = new boolean[TESTSTRINGLEN*2 + 1];
         boolean[]        forwardBreaks    = new boolean[TESTSTRINGLEN*2 + 1];
@@ -2204,13 +2206,13 @@
 
                         // BMP or SMP character in hex
                         if (c >= 0x10000) {
-                            buffer.append("\\U").append(String.format("%08x", (int) c));
+                            buffer.append("\\U").append(String.format("%08x", c));
                         } else {
-                            buffer.append("    \\u").append(String.format("%04x", (int) c));
+                            buffer.append("    \\u").append(String.format("%04x", c));
                         }
 
                         buffer.append(
-                            String.format(String.format(" %%-%ds", (int) classNameSize),
+                            String.format(String.format(" %%-%ds", classNameSize),
                               mk.classNameFromCodepoint(c)))
                             .append(String.format(" %-40s", mk.getAppliedRule(ci)))
                             .append(String.format(" %-40s\n", UCharacter.getExtendedName(c)));
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/break_rules/readme.txt b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/break_rules/readme.txt
index 33da959..34b1b27 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/break_rules/readme.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/break_rules/readme.txt
@@ -1,6 +1,6 @@
 file: main/tests/core/src/com/ibm/icu/dev/test/rbbi/break_rules/readme.txt
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2015-2016, International Business Machines Corporation and others. All Rights Reserved.
 
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/break_rules/sentence.txt b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/break_rules/sentence.txt
index ed0918f..5f6843c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/break_rules/sentence.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/break_rules/sentence.txt
@@ -1,6 +1,6 @@
 #
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 
 # Copyright (c) 2016, International Business Machines Corporation and others. All Rights Reserved.
 # file: sentence.txt
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/rbbitst.txt b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/rbbitst.txt
index 9962f94..98cf688 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/rbbitst.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/rbbi/rbbitst.txt
@@ -289,7 +289,7 @@
 # वृद्धिसँग ;
 <data>•वृ•द्धि•सँ•ग•</data>
 # अंतःज्ञानी  ;
-<data>•अं•तः•ज्ञा•नी••</data>
+<data>•अं•तः•ज्ञा•नी• •</data>
 # गन्नदी॑धिम ;
 <data>•ग•न्न•दी॑•धि•म•</data>
 # प्प्रप॑द्ये॒ ;
@@ -319,7 +319,7 @@
 # भर्तुर्भोगः ;
 <data>•भ•र्तु•र्भो•गः•</data>
 # शॆत्युल  ;
-<data>•शॆ•त्यु•ल••</data>
+<data>•शॆ•त्यु•ल• •</data>
 # महारॆन्य ;
 <data>•म•हा•रॆ•न्य•</data>
 # सॆक्युल ;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/search/SearchTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/search/SearchTest.java
index 4a2ff1f..b42105e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/search/SearchTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/search/SearchTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2015, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/CalendarHandler.java b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/CalendarHandler.java
index 1220735..e1244e7 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/CalendarHandler.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/CalendarHandler.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2012, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/CompatibilityTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/CompatibilityTest.java
index 28f62ae..d2311b1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/CompatibilityTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/CompatibilityTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/CoverageTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/CoverageTest.java
index 7daf349..e02c36b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/CoverageTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/CoverageTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2016, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/ExceptionHandler.java b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/ExceptionHandler.java
index 484fcb5..4063cbe 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/ExceptionHandler.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/ExceptionHandler.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2013, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/FormatHandler.java b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/FormatHandler.java
index 9ed7d9c..65c9aef 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/FormatHandler.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/FormatHandler.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (c) 2004-2014, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/SerializableChecker.java b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/SerializableChecker.java
index d80d9e1..4517717 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/SerializableChecker.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/SerializableChecker.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/SerializableTestUtility.java b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/SerializableTestUtility.java
index acc9402..dfcda8c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/SerializableTestUtility.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/SerializableTestUtility.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and
@@ -48,6 +48,7 @@
 import android.icu.util.GregorianCalendar;
 import android.icu.util.ICUCloneNotSupportedException;
 import android.icu.util.ICUException;
+import android.icu.util.ICUInputTooLongException;
 import android.icu.util.ICUUncheckedIOException;
 import android.icu.util.InitialTimeZoneRule;
 import android.icu.util.RuleBasedTimeZone;
@@ -752,6 +753,18 @@
         }
     }
 
+    private static class ICUInputTooLongExceptionHandler extends ExceptionHandlerBase {
+        @Override
+        public Object[] getTestObjects() {
+            return new ICUInputTooLongException[] {
+                    new ICUInputTooLongException(),
+                    new ICUInputTooLongException("msg1"),
+                    new ICUInputTooLongException(new RuntimeException("rte1")),
+                    new ICUInputTooLongException("msg2", new RuntimeException("rte2"))
+            };
+        }
+    }
+
     private static HashMap map = new HashMap();
 
     static {
@@ -846,6 +859,7 @@
         map.put("android.icu.util.ICUException", new ICUExceptionHandler());
         map.put("android.icu.util.ICUUncheckedIOException", new ICUUncheckedIOExceptionHandler());
         map.put("android.icu.util.ICUCloneNotSupportedException", new ICUCloneNotSupportedExceptionHandler());
+        map.put("android.icu.util.ICUInputTooLongException", new ICUInputTooLongExceptionHandler());
     }
 
     /*
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/SerializableWriter.java b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/SerializableWriter.java
index e3c2040..66a5f8c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/SerializableWriter.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/SerializableWriter.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2011, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.ChineseDateFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.ChineseDateFormat.dat
deleted file mode 100644
index bb4084d..0000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.ChineseDateFormat.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.ChineseDateFormatSymbols.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.ChineseDateFormatSymbols.dat
deleted file mode 100644
index 0d8a173..0000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.ChineseDateFormatSymbols.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DateFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DateFormat.dat
deleted file mode 100644
index 2383758..0000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DateFormat.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DateFormatSymbols.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DateFormatSymbols.dat
deleted file mode 100644
index 012ebbd..0000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DateFormatSymbols.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DateIntervalFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DateIntervalFormat.dat
deleted file mode 100644
index d33d0b1..0000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DateIntervalFormat.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.SimpleDateFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.SimpleDateFormat.dat
deleted file mode 100644
index 04afc50..0000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.SimpleDateFormat.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.BuddhistCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.BuddhistCalendar.dat
deleted file mode 100644
index e72f936..0000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.BuddhistCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.ChineseCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.ChineseCalendar.dat
deleted file mode 100644
index 1b91de2..0000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.ChineseCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.CopticCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.CopticCalendar.dat
deleted file mode 100644
index 0ddc83a..0000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.CopticCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.DangiCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.DangiCalendar.dat
deleted file mode 100644
index 1d69c74..0000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.DangiCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.EthiopicCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.EthiopicCalendar.dat
deleted file mode 100644
index e28d006..0000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.EthiopicCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.HebrewCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.HebrewCalendar.dat
deleted file mode 100644
index ca24847..0000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.HebrewCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.IndianCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.IndianCalendar.dat
deleted file mode 100644
index 9e00dd0..0000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.IndianCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.JapaneseCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.JapaneseCalendar.dat
deleted file mode 100644
index 35155df..0000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.JapaneseCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.NoUnit.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.NoUnit.dat
deleted file mode 100644
index e97cd29..0000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.NoUnit.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.PersianCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.PersianCalendar.dat
deleted file mode 100644
index 83d0fc5..0000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.PersianCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.TaiwanCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.TaiwanCalendar.dat
deleted file mode 100644
index 35a077e..0000000
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.TaiwanCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.DateNumberFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.DateNumberFormat.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.DateNumberFormat.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.DateNumberFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.IllegalIcuArgumentException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.IllegalIcuArgumentException.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.IllegalIcuArgumentException.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.IllegalIcuArgumentException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.InvalidFormatException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.InvalidFormatException.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.InvalidFormatException.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.InvalidFormatException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.OlsonTimeZone.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.OlsonTimeZone.dat
similarity index 91%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.OlsonTimeZone.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.OlsonTimeZone.dat
index 2294744..13b4448 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.OlsonTimeZone.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.OlsonTimeZone.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.RelativeDateFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.RelativeDateFormat.dat
similarity index 88%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.RelativeDateFormat.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.RelativeDateFormat.dat
index 8468d4f..30de2c7 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.RelativeDateFormat.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.RelativeDateFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.TZDBTimeZoneNames.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.TZDBTimeZoneNames.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.TZDBTimeZoneNames.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.TZDBTimeZoneNames.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.TimeZoneAdapter.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.TimeZoneAdapter.dat
similarity index 91%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.TimeZoneAdapter.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.TimeZoneAdapter.dat
index f284bee..6ebd7fe 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.TimeZoneAdapter.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.TimeZoneAdapter.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.TimeZoneGenericNames.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.TimeZoneGenericNames.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.TimeZoneGenericNames.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.TimeZoneGenericNames.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.TimeZoneNamesImpl.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.TimeZoneNamesImpl.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.TimeZoneNamesImpl.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.TimeZoneNamesImpl.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.duration.BasicDurationFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.duration.BasicDurationFormat.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.duration.BasicDurationFormat.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.duration.BasicDurationFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.locale.LocaleSyntaxException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.locale.LocaleSyntaxException.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.locale.LocaleSyntaxException.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.locale.LocaleSyntaxException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.number.CustomSymbolCurrency.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.number.CustomSymbolCurrency.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.number.CustomSymbolCurrency.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.number.CustomSymbolCurrency.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.number.DecimalFormatProperties.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.number.DecimalFormatProperties.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.number.DecimalFormatProperties.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.number.DecimalFormatProperties.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.number.LocalizedNumberFormatterAsFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.number.LocalizedNumberFormatterAsFormat.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.number.LocalizedNumberFormatterAsFormat.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.number.LocalizedNumberFormatterAsFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.number.Properties.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.number.Properties.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.impl.number.Properties.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.impl.number.Properties.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.math.BigDecimal.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.math.BigDecimal.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.math.BigDecimal.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.math.BigDecimal.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.math.MathContext.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.math.MathContext.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.math.MathContext.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.math.MathContext.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.number.SkeletonSyntaxException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.number.SkeletonSyntaxException.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.number.SkeletonSyntaxException.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.number.SkeletonSyntaxException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.ArabicShapingException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.ArabicShapingException.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.ArabicShapingException.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.ArabicShapingException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.ChineseDateFormat$Field.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.ChineseDateFormat$Field.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.ChineseDateFormat$Field.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.ChineseDateFormat$Field.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.ChineseDateFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.ChineseDateFormat.dat
new file mode 100644
index 0000000..2d78739
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.ChineseDateFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.ChineseDateFormatSymbols.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.ChineseDateFormatSymbols.dat
new file mode 100644
index 0000000..dbbc45e
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.ChineseDateFormatSymbols.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.CompactDecimalFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.CompactDecimalFormat.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.CompactDecimalFormat.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.CompactDecimalFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.CurrencyPluralInfo.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.CurrencyPluralInfo.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.CurrencyPluralInfo.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.CurrencyPluralInfo.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DateFormat$Field.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DateFormat$Field.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DateFormat$Field.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DateFormat$Field.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DateFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DateFormat.dat
new file mode 100644
index 0000000..cf4eb92
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DateFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DateFormatSymbols.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DateFormatSymbols.dat
new file mode 100644
index 0000000..62d06d0
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DateFormatSymbols.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DateIntervalFormat$SpanField.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DateIntervalFormat$SpanField.dat
new file mode 100644
index 0000000..d1fb9f8
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DateIntervalFormat$SpanField.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DateIntervalFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DateIntervalFormat.dat
new file mode 100644
index 0000000..a3a9ffd
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DateIntervalFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DateIntervalInfo$PatternInfo.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DateIntervalInfo$PatternInfo.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DateIntervalInfo$PatternInfo.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DateIntervalInfo$PatternInfo.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DateIntervalInfo.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DateIntervalInfo.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DateIntervalInfo.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DateIntervalInfo.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DecimalFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DecimalFormat.dat
similarity index 98%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DecimalFormat.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DecimalFormat.dat
index b9761f9..51b565e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DecimalFormat.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DecimalFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DecimalFormatSymbols.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DecimalFormatSymbols.dat
similarity index 98%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DecimalFormatSymbols.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DecimalFormatSymbols.dat
index 1a9fe1e..3e81de0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.DecimalFormatSymbols.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.DecimalFormatSymbols.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.ListFormatter$Field.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.ListFormatter$Field.dat
new file mode 100644
index 0000000..d2e6136
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.ListFormatter$Field.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.ListFormatter$SpanField.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.ListFormatter$SpanField.dat
new file mode 100644
index 0000000..50e3c2b
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.ListFormatter$SpanField.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.MeasureFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.MeasureFormat.dat
similarity index 94%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.MeasureFormat.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.MeasureFormat.dat
index 6eb6a2e..ee29ee6 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.MeasureFormat.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.MeasureFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.MessageFormat$Field.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.MessageFormat$Field.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.MessageFormat$Field.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.MessageFormat$Field.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.MessageFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.MessageFormat.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.MessageFormat.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.MessageFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.NumberFormat$Field.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.NumberFormat$Field.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.NumberFormat$Field.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.NumberFormat$Field.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.NumberFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.NumberFormat.dat
similarity index 96%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.NumberFormat.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.NumberFormat.dat
index 6c6664b..15b7fbe 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.NumberFormat.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.NumberFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.PluralFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.PluralFormat.dat
similarity index 95%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.PluralFormat.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.PluralFormat.dat
index b60447e..8262a55 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.PluralFormat.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.PluralFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.PluralRules.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.PluralRules.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.PluralRules.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.PluralRules.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.RelativeDateTimeFormatter$Field.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.RelativeDateTimeFormatter$Field.dat
new file mode 100644
index 0000000..9ff848c
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.RelativeDateTimeFormatter$Field.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.RuleBasedNumberFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.RuleBasedNumberFormat.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.RuleBasedNumberFormat.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.RuleBasedNumberFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.SelectFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.SelectFormat.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.SelectFormat.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.SelectFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.SimpleDateFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.SimpleDateFormat.dat
new file mode 100644
index 0000000..f006ab9
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.SimpleDateFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.StringPrepParseException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.StringPrepParseException.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.StringPrepParseException.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.StringPrepParseException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.TimeUnitFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.TimeUnitFormat.dat
similarity index 94%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.TimeUnitFormat.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.TimeUnitFormat.dat
index 7444d5d..328e2e4 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.TimeUnitFormat.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.TimeUnitFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.TimeZoneFormat.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.TimeZoneFormat.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.text.TimeZoneFormat.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.text.TimeZoneFormat.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.AnnualTimeZoneRule.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.AnnualTimeZoneRule.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.AnnualTimeZoneRule.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.AnnualTimeZoneRule.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.BuddhistCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.BuddhistCalendar.dat
new file mode 100644
index 0000000..75590d3
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.BuddhistCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.Calendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.Calendar.dat
similarity index 65%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.Calendar.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.Calendar.dat
index 1c281db..9067484 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.Calendar.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.Calendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.ChineseCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.ChineseCalendar.dat
new file mode 100644
index 0000000..b483716
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.ChineseCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.CopticCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.CopticCalendar.dat
new file mode 100644
index 0000000..280f7ad
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.CopticCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.Currency.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.Currency.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.Currency.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.Currency.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.DangiCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.DangiCalendar.dat
new file mode 100644
index 0000000..9fbbe0e
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.DangiCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.DateInterval.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.DateInterval.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.DateInterval.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.DateInterval.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.DateTimeRule.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.DateTimeRule.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.DateTimeRule.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.DateTimeRule.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.EthiopicCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.EthiopicCalendar.dat
new file mode 100644
index 0000000..3681c17
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.EthiopicCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.GregorianCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.GregorianCalendar.dat
similarity index 65%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.GregorianCalendar.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.GregorianCalendar.dat
index adec79c..8cdd599 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.GregorianCalendar.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.GregorianCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.HebrewCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.HebrewCalendar.dat
new file mode 100644
index 0000000..8e01135
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.HebrewCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.ICUCloneNotSupportedException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.ICUCloneNotSupportedException.dat
similarity index 77%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.ICUCloneNotSupportedException.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.ICUCloneNotSupportedException.dat
index f2df38d..58ce937 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.ICUCloneNotSupportedException.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.ICUCloneNotSupportedException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.ICUException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.ICUException.dat
similarity index 75%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.ICUException.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.ICUException.dat
index 3f9e9e1..4f265d8 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.ICUException.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.ICUException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.ICUInputTooLongException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.ICUInputTooLongException.dat
new file mode 100644
index 0000000..d710a13
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.ICUInputTooLongException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.ICUUncheckedIOException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.ICUUncheckedIOException.dat
similarity index 76%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.ICUUncheckedIOException.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.ICUUncheckedIOException.dat
index 7e1b622..4dad66e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.ICUUncheckedIOException.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.ICUUncheckedIOException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.IllformedLocaleException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.IllformedLocaleException.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.IllformedLocaleException.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.IllformedLocaleException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.IndianCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.IndianCalendar.dat
new file mode 100644
index 0000000..5a756bf
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.IndianCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.InitialTimeZoneRule.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.InitialTimeZoneRule.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.InitialTimeZoneRule.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.InitialTimeZoneRule.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.IslamicCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.IslamicCalendar.dat
similarity index 63%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.IslamicCalendar.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.IslamicCalendar.dat
index ea036ec..c4fc79f 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.IslamicCalendar.dat
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.IslamicCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.JapaneseCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.JapaneseCalendar.dat
new file mode 100644
index 0000000..d877b7e
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.JapaneseCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.MeasureUnit.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.MeasureUnit.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.MeasureUnit.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.MeasureUnit.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.PersianCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.PersianCalendar.dat
new file mode 100644
index 0000000..b93fcb0
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.PersianCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.RuleBasedTimeZone.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.RuleBasedTimeZone.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.RuleBasedTimeZone.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.RuleBasedTimeZone.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.SimpleTimeZone.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.SimpleTimeZone.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.SimpleTimeZone.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.SimpleTimeZone.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.TaiwanCalendar.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.TaiwanCalendar.dat
new file mode 100644
index 0000000..52ff768
--- /dev/null
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.TaiwanCalendar.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.TimeArrayTimeZoneRule.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.TimeArrayTimeZoneRule.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.TimeArrayTimeZoneRule.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.TimeArrayTimeZoneRule.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.TimeUnit.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.TimeUnit.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.TimeUnit.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.TimeUnit.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.TimeZone.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.TimeZone.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.TimeZone.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.TimeZone.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.ULocale.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.ULocale.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.ULocale.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.ULocale.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.UResourceTypeMismatchException.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.UResourceTypeMismatchException.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.UResourceTypeMismatchException.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.UResourceTypeMismatchException.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.VTimeZone.dat b/android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.VTimeZone.dat
similarity index 100%
rename from android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_63.1/android.icu.util.VTimeZone.dat
rename to android_icu4j/src/main/tests/android/icu/dev/test/serializable/data/ICU_68.1/android.icu.util.VTimeZone.dat
Binary files differ
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/shaping/ArabicShapingRegTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/shaping/ArabicShapingRegTest.java
index 2b6bb40..2a19a91 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/shaping/ArabicShapingRegTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/shaping/ArabicShapingRegTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2012, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/shaping/DataDrivenArabicShapingRegTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/shaping/DataDrivenArabicShapingRegTest.java
index 15f0d29..1397cf1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/shaping/DataDrivenArabicShapingRegTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/shaping/DataDrivenArabicShapingRegTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 package android.icu.dev.test.shaping;
 
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/IDNAConformanceTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/IDNAConformanceTest.java
index 8104797..c836e43 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/IDNAConformanceTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/IDNAConformanceTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/IDNAReference.java b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/IDNAReference.java
index 17fd7c5..6186fa1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/IDNAReference.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/IDNAReference.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2011, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/NFS4StringPrep.java b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/NFS4StringPrep.java
index f21aadb..9ca66bd 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/NFS4StringPrep.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/NFS4StringPrep.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/NamePrepTransform.java b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/NamePrepTransform.java
index f103f72..adc1a41 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/NamePrepTransform.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/NamePrepTransform.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/PunycodeReference.java b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/PunycodeReference.java
index c917cb7..6542e5d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/PunycodeReference.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/PunycodeReference.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2007, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestData.java b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestData.java
index 8d5041a..efefac0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestData.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestData.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2011, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestIDNA.java b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestIDNA.java
index be89bb1..fd740ac 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestIDNA.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestIDNA.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2011, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestIDNARef.java b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestIDNARef.java
index 9553b95..34a7b49 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestIDNARef.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestIDNARef.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestInputDataStructure.java b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestInputDataStructure.java
index 091a384..b633ed4 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestInputDataStructure.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestInputDataStructure.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 
  *******************************************************************************
@@ -151,4 +151,4 @@
     public void setType(String type) {
         this.type = type;
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestStringPrep.java b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestStringPrep.java
index 8f65b9e..405d3a8 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestStringPrep.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestStringPrep.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2009, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestStringPrepProfiles.java b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestStringPrepProfiles.java
index 5a4f578..d534ee3 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestStringPrepProfiles.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/stringprep/TestStringPrepProfiles.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/text/SpoofCheckerTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/text/SpoofCheckerTest.java
index a1e63e0..4ea56e7 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/text/SpoofCheckerTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/text/SpoofCheckerTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/timescale/TimeScaleAPITest.java b/android_icu4j/src/main/tests/android/icu/dev/test/timescale/TimeScaleAPITest.java
index 0f4fa1d..967ba83 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/timescale/TimeScaleAPITest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/timescale/TimeScaleAPITest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/timescale/TimeScaleDataTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/timescale/TimeScaleDataTest.java
index a1b2a9a..33cc695 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/timescale/TimeScaleDataTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/timescale/TimeScaleDataTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/timescale/TimeScaleMonkeyTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/timescale/TimeScaleMonkeyTest.java
index 1dc5ce1..bcf72dd 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/timescale/TimeScaleMonkeyTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/timescale/TimeScaleMonkeyTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ****************************************************************************
  * Copyright (C) 2004-2010, International Business Machines Corporation and *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneAliasTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneAliasTest.java
index efab162..f27eb0d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneAliasTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneAliasTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneBoundaryTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneBoundaryTest.java
index 2f8f7c2..544cb9a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneBoundaryTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneBoundaryTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2000-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneOffsetLocalTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneOffsetLocalTest.java
index f35f0ad..8f0d32e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneOffsetLocalTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneOffsetLocalTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2008, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneRegressionTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneRegressionTest.java
index ffbcc90..b12e1f7 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneRegressionTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneRegressionTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2000-2014, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneRuleTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneRuleTest.java
index d90ea3f..3708dba 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneRuleTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneRuleTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2011, International Business Machines Corporation and    *
@@ -1850,4 +1850,4 @@
             errln("Fail: Exception thrown - " + e.getMessage());
         }
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java
index 25bd35c..a976eaf 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2000-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/AnyScriptTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/AnyScriptTest.java
index f5c1229..f8de347 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/AnyScriptTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/AnyScriptTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, Google, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/CompoundTransliteratorTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/CompoundTransliteratorTest.java
index 1433f59..53478e5 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/CompoundTransliteratorTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/CompoundTransliteratorTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/ErrorTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/ErrorTest.java
index 0eb3caa..3df5aab 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/ErrorTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/ErrorTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/IncrementalProgressTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/IncrementalProgressTest.java
index 7ca7ad7..d20eec8 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/IncrementalProgressTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/IncrementalProgressTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.translit;
 
 import java.util.Enumeration;
@@ -93,4 +93,4 @@
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/JamoTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/JamoTest.java
index 2f2f146..1a2f656 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/JamoTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/JamoTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/RegexUtilitiesTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/RegexUtilitiesTest.java
index 23ea7bb..fe80e03 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/RegexUtilitiesTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/RegexUtilitiesTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/ReplaceableTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/ReplaceableTest.java
index 4cfbff5..f5678db 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/ReplaceableTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/ReplaceableTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/RoundTripTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/RoundTripTest.java
index 964b7ae..046f4f7 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/RoundTripTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/RoundTripTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2000-2013, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/StringBoilerplateTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/StringBoilerplateTest.java
index e67b2fb..d17920f 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/StringBoilerplateTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/StringBoilerplateTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2016, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/TestUtility.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/TestUtility.java
index 8014379..0376a6f 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/TestUtility.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/TestUtility.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2000-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/ThreadTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/ThreadTest.java
index fea5a5f..d75b9d6 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/ThreadTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/ThreadTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/TransliteratorDisorderedMarksTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/TransliteratorDisorderedMarksTest.java
index 2b4141d..9bb1597 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/TransliteratorDisorderedMarksTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/TransliteratorDisorderedMarksTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 package android.icu.dev.test.translit;
 
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/TransliteratorInstantiateAllTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/TransliteratorInstantiateAllTest.java
index f9abebb..16c52f7 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/TransliteratorInstantiateAllTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/TransliteratorInstantiateAllTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.translit;
 
 import java.util.ArrayList;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/TransliteratorTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/TransliteratorTest.java
index 17ca0b9..a7edc09 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/TransliteratorTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/TransliteratorTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2012, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/UnicodeMapBoilerplateTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/UnicodeMapBoilerplateTest.java
index a00e2a1..824ab1b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/UnicodeMapBoilerplateTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/UnicodeMapBoilerplateTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2016, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/UnicodeMapTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/UnicodeMapTest.java
index 89e9d95..1f70a49 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/UnicodeMapTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/UnicodeMapTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/UnicodeSetBoilerplateTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/UnicodeSetBoilerplateTest.java
index 61fead2..7bedaa3 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/UnicodeSetBoilerplateTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/UnicodeSetBoilerplateTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2016, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/WriteCharts.java b/android_icu4j/src/main/tests/android/icu/dev/test/translit/WriteCharts.java
index 200d481..1b61adb 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/WriteCharts.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/WriteCharts.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
@@ -395,4 +395,4 @@
     */
     
 }
-  
\ No newline at end of file
+  
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/translit/langtagRegex.txt b/android_icu4j/src/main/tests/android/icu/dev/test/translit/langtagRegex.txt
index 696750a..4a1f2ae 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/translit/langtagRegex.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/translit/langtagRegex.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html#License
+# Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (C) 2006-2009, Google, International Business Machines Corporation and others. All Rights Reserved.
 # Regex for recognizing RFC 4646 well-formed tags
@@ -38,14 +38,15 @@
 
 $privateUse = $x (?: $s $alphanum{1,8} )+ ; # "x" 1*("-" (1*8alphanum))
 
-# Define certain grandfathered codes, since otherwise the regex is pretty useless.
+# Define certain legacy language tags (marked as “Type: grandfathered” in BCP 47),
+# since otherwise the regex is pretty useless.
 # Since these are limited, this is safe even later changes to the registry --
 # the only oddity is that it might change the type of the tag, and thus
 # the results from the capturing groups.
 # http://www.iana.org/assignments/language-subtag-registry
 # Note that these have to be compared case insensitively, requiring (?i) below.
 
-$grandfathered  = en $s GB $s oed
+$legacy  = en $s GB $s oed
       | i $s (?: ami | bnn | default | enochian | hak | klingon | lux | mingo | navajo | pwn | tao | tay | tsu )
       | no $s (?: bok | nyn )
       | sgn $s (?: BE $s (?: fr | nl) | CH $s de )
@@ -55,7 +56,7 @@
 # For well-formedness, we don't need the ones that would otherwise pass.
 # For validity, they need to be checked.
 
-# $grandfatheredWellFormed = (?:
+# $legacyWellFormed = (?:
 #         art $s lojban
 #     | cel $s gaulish
 #     | zh $s (?: guoyu | hakka | xiang )
@@ -78,12 +79,12 @@
       (?: $s ( $privateUse ) )? 5%);
 
 # Here is the final breakdown, with capturing groups for each of these components
-# The variants, extensions, grandfathered, and private-use may have interior '-'
+# The variants, extensions, legacy, and private-use may have interior '-'
  
 $root = (?i) # case-insensitive
   (?:
       $langtag 90%
     | ( $privateUse ) 5%
-    | ( $grandfathered ) 5%)
+    | ( $legacy ) 5%)
 #    (?: \@ $keywords )? 5%
     ;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/BytesTrieTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/BytesTrieTest.java
index 5e47f35..f543785 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/BytesTrieTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/BytesTrieTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/CalendarFieldsSet.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/CalendarFieldsSet.java
index 404547d..f6b9799 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/CalendarFieldsSet.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/CalendarFieldsSet.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/CharsTrieTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/CharsTrieTest.java
index a166011..4cb1362 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/CharsTrieTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/CharsTrieTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/CodePointTrieTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/CodePointTrieTest.java
index 4aab449..3a4ffba 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/CodePointTrieTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/CodePointTrieTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // created: 2018jul10 Markus W. Scherer
 
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/CompactArrayTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/CompactArrayTest.java
index c0b6edd..6724d3f 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/CompactArrayTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/CompactArrayTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/CurrencyTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/CurrencyTest.java
index f29100c..4d6fdbd 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/CurrencyTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/CurrencyTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2002-2016, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/DataDrivenTestHelper.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/DataDrivenTestHelper.java
index 2feb305..8a83370 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/DataDrivenTestHelper.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/DataDrivenTestHelper.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.util;
 
 import java.io.BufferedReader;
@@ -185,4 +185,4 @@
     public List<List<String>> getLines() {
         return lines;
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/DateTimeStyleSet.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/DateTimeStyleSet.java
index d41ad43..8c5258a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/DateTimeStyleSet.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/DateTimeStyleSet.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/DebugUtilities.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/DebugUtilities.java
index cab5067..bc73abc 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/DebugUtilities.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/DebugUtilities.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/DebugUtilitiesData.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/DebugUtilitiesData.java
index 0f609cc..97296cc 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/DebugUtilitiesData.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/DebugUtilitiesData.java
@@ -14,7 +14,7 @@
 
 @MainTestShard
 public class DebugUtilitiesData extends Object {
-    public static final String ICU4C_VERSION="67.1";
+    public static final String ICU4C_VERSION="68.2";
     public static final int UDebugEnumType = 0;
     public static final int UCalendarDateFields = 1;
     public static final int UCalendarMonths = 2;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/DebugUtilitiesTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/DebugUtilitiesTest.java
index 80be20b..3fc75e5 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/DebugUtilitiesTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/DebugUtilitiesTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/DisplayNameTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/DisplayNameTest.java
index f0acbbc..55befc3 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/DisplayNameTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/DisplayNameTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2008, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/Equator.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/Equator.java
index ff1e075..8d6630d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/Equator.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/Equator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2004, International Business Machines Corporation and    *
@@ -27,4 +27,4 @@
      * @return a hash code for the object
      */
     public int getHashCode(Object object);
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/FieldsSet.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/FieldsSet.java
index 3043dd1..964dc36 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/FieldsSet.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/FieldsSet.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/GenderInfoTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/GenderInfoTest.java
index f1bfc92..173e258 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/GenderInfoTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/GenderInfoTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2012, Google, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUBinaryTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUBinaryTest.java
index 87cd405..e575b8c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUBinaryTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUBinaryTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUResourceBundleCollationTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUResourceBundleCollationTest.java
index b3621d3..4fc04c7 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUResourceBundleCollationTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUResourceBundleCollationTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUResourceBundleTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUResourceBundleTest.java
index b172b5c..7444599 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUResourceBundleTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUResourceBundleTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2016, International Business Machines Corporation and
@@ -702,7 +702,7 @@
     public void TestLocaleDisplayNames() {
         ULocale[] locales = ULocale.getAvailableLocales();
 
-        Set<String> localCountryExceptions = new HashSet<String>();
+        Set<String> localCountryExceptions = new HashSet<>();
         if (logKnownIssue("cldrbug:8903",
                 "No localized region name for lrc_IQ, lrc_IR, nus_SS, nds_DE, su_Latn_ID")) {
             localCountryExceptions.add("lrc_IQ");
@@ -713,7 +713,7 @@
             localCountryExceptions.add("su_Latn_ID");
         }
 
-        Set<String> localLangExceptions = new HashSet<String>();
+        Set<String> localLangExceptions = new HashSet<>();
         if (logKnownIssue("cldrbug:8903", "No localized language name for nmg, nds")) {
             localLangExceptions.add("nmg");
             localLangExceptions.add("nds");
@@ -991,7 +991,7 @@
         }
     }
     private Set<String> setFromEnumeration(Enumeration<String> e) {
-        TreeSet<String> set = new TreeSet<String>();
+        TreeSet<String> set = new TreeSet<>();
         while (e.hasMoreElements()) {
             set.add(e.nextElement());
         }
@@ -1122,7 +1122,10 @@
         if (rb7.getKey() != null) {
             errln("getKey() call should have returned null.");
         }
-        if (((ICUResourceBundle)rb1).findTopLevel(0) == null) {
+        // The following test may no longer be exercised if
+        // rb1 is for a locale like en_US with an empty resource bundle.
+        // (Before ICU-21028 such a bundle would have contained at least a Version string.)
+        if (rb1.getSize() != 0 && ((ICUResourceBundle)rb1).findTopLevel(0) == null) {
             errln("Error calling findTopLevel().");
         }
         if (ICUResourceBundle.getFullLocaleNameSet() == null) {
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUServiceTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUServiceTest.java
index 4359a23..3a918a9 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUServiceTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUServiceTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2013, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUServiceTestSample.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUServiceTestSample.java
index e36dd1e..4d3ced3 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUServiceTestSample.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUServiceTestSample.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUServiceThreadTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUServiceThreadTest.java
index e684c97..500a159 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUServiceThreadTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/ICUServiceThreadTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2013, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleAliasCollationTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleAliasCollationTest.java
index c0801d0..47c3096 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleAliasCollationTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleAliasCollationTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleAliasTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleAliasTest.java
index 1028cf9..7a9337a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleAliasTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleAliasTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleBuilderTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleBuilderTest.java
index 90b7a6f..b9012d2 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleBuilderTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleBuilderTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2012, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleDataTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleDataTest.java
index a8d3128..54ef08d 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleDataTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleDataTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2016, International Business Machines Corporation and    *
@@ -95,13 +95,13 @@
                 continue;
             }
             ULocale fullLoc = ULocale.addLikelySubtags(locale);
-            if(fullLoc.toString().indexOf("_US") >= 0 || fullLoc.toString().indexOf("_MM") >= 0 || fullLoc.toString().indexOf("_LR") >= 0){
+            if(fullLoc.toString().indexOf("_US") >= 0 || fullLoc.toString().indexOf("_LR") >= 0){
                 if(ms == LocaleData.MeasurementSystem.US){
                     logln("Got the expected measurement system for locale: " + locale);
                 }else{
                     errln("Did not get the expected measurement system for locale: "+ locale);
                 }
-            } else if(fullLoc.toString().indexOf("_GB") >= 0){
+            } else if(fullLoc.toString().indexOf("_GB") >= 0 || fullLoc.toString().indexOf("_MM") >= 0){
                 if(ms == LocaleData.MeasurementSystem.UK){
                     logln("Got the expected measurement system for locale: " + locale);
                 }else{
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleDistanceTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleDistanceTest.java
index 0b32c8f..b08aba7 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleDistanceTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleDistanceTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.util;
 
 import java.io.IOException;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleMatcherTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleMatcherTest.java
index 5afb980..b1bb2a9 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleMatcherTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/LocaleMatcherTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************************
  * Copyright (C) 2009-2015, Google, Inc.; International Business Machines Corporation and *
@@ -225,6 +225,30 @@
     }
 
     @Test
+    public void testNoDefault() {
+        // We want null instead of any default locale.
+        List<ULocale> locales = Arrays.asList(
+                new ULocale("fr"), new ULocale("en_GB"), new ULocale("en"));
+        LocaleMatcher matcher = LocaleMatcher.builder().
+            setSupportedULocales(locales).
+            setNoDefaultLocale().
+            build();
+        ULocale best = matcher.getBestMatch("en_GB");
+        assertEquals("getBestMatch(en_GB)", "en_GB", locString(best));
+        best = matcher.getBestMatch("en_US");
+        assertEquals("getBestMatch(en_US)", "en", locString(best));
+        best = matcher.getBestMatch("fr_FR");
+        assertEquals("getBestMatch(fr_FR)", "fr", locString(best));
+        best = matcher.getBestMatch("ja_JP");
+        assertEquals("getBestMatch(ja_JP)", "(null)", locString(best));
+        LocaleMatcher.Result result = matcher.getBestMatchResult(new ULocale("ja_JP"));
+        assertEquals("getBestMatchResult(ja_JP).supp",
+                     "(null)", locString(result.getSupportedULocale()));
+        assertEquals("getBestMatchResult(ja_JP).suppIndex",
+                     -1, result.getSupportedIndex());
+    }
+
+    @Test
     public void testFallback() {
         // check that script fallbacks are handled right
         final LocaleMatcher matcher = newLocaleMatcher("zh_CN, zh_TW, iw");
@@ -344,7 +368,7 @@
     }
 
     @Test
-    public void testMatchGrandfatheredCode() {
+    public void testMatchLegacyCode() {
         final LocaleMatcher matcher = newLocaleMatcher("fr, i_klingon, en_Latn_US");
         assertEquals("en_Latn_US", matcher.getBestMatch("en_GB_oed").toString());
         // assertEquals("tlh", matcher.getBestMatch("i_klingon").toString());
@@ -657,6 +681,29 @@
     }
 
     @Test
+    public void testMaxDistanceAndIsMatch() {
+        LocaleMatcher.Builder builder = LocaleMatcher.builder();
+        LocaleMatcher standard = builder.build();
+        ULocale germanLux = new ULocale("de-LU");
+        ULocale germanPhoenician = new ULocale("de-Phnx-AT");
+        ULocale greek = new ULocale("el");
+        assertTrue("standard de-LU / de", standard.isMatch(germanLux, ULocale.GERMAN));
+        assertFalse("standard de-Phnx-AT / de", standard.isMatch(germanPhoenician, ULocale.GERMAN));
+
+        // Allow a script difference to still match.
+        LocaleMatcher loose = builder.setMaxDistance(germanPhoenician, ULocale.GERMAN).build();
+        assertTrue("loose de-LU / de", loose.isMatch(germanLux, ULocale.GERMAN));
+        assertTrue("loose de-Phnx-AT / de", loose.isMatch(germanPhoenician, ULocale.GERMAN));
+        assertFalse("loose el / de", loose.isMatch(greek, ULocale.GERMAN));
+
+        // Allow at most a regional difference.
+        LocaleMatcher regional = builder.setMaxDistance(new Locale("de", "AT"), Locale.GERMAN).build();
+        assertTrue("regional de-LU / de", regional.isMatch(new Locale("de", "LU"), Locale.GERMAN));
+        assertFalse("regional da / no", regional.isMatch(new Locale("da"), new Locale("no")));
+        assertFalse("regional zh-Hant / zh", regional.isMatch(Locale.CHINESE, Locale.TRADITIONAL_CHINESE));
+    }
+
+    @Test
     public void testCanonicalize() {
         LocaleMatcher matcher = LocaleMatcher.builder().build();
         assertEquals("bh --> bho", new ULocale("bho"), matcher.canonicalize(new ULocale("bh")));
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/LocalePriorityListTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/LocalePriorityListTest.java
index 4c016bd..b441b03 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/LocalePriorityListTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/LocalePriorityListTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************************
  * Copyright (C) 2009-2010, Google, Inc.; International Business Machines Corporation and *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/RegionTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/RegionTest.java
index 1cd3e0f..0a6f12a 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/RegionTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/RegionTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2011-2016, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/SimpleFormatterTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/SimpleFormatterTest.java
index 140755b..177213c 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/SimpleFormatterTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/SimpleFormatterTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2016, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/StaticUnicodeSetsTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/StaticUnicodeSetsTest.java
index 675e398..568e573 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/StaticUnicodeSetsTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/StaticUnicodeSetsTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.test.util;
 
 import static android.icu.impl.StaticUnicodeSets.get;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/StringTokenizerTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/StringTokenizerTest.java
index 4fcb6f1..3115287 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/StringTokenizerTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/StringTokenizerTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 1996-2010, International Business Machines Corporation and    *
@@ -1073,4 +1073,4 @@
                           "an exception.");
               }
           }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/TestLocaleValidity.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/TestLocaleValidity.java
index cb07168..9480891 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/TestLocaleValidity.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/TestLocaleValidity.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2015-2016, International Business Machines Corporation and    *
@@ -63,6 +63,7 @@
                 {"OK", "en-u-co-big5han"},
                 {"OK", "en-u-cu-adp"},
                 {"OK", "en-u-fw-fri"},
+                {"OK", "en-u-dx-thai"},
                 {"OK", "en-u-hc-h11"},
                 {"OK", "en-u-ka-noignore"},
                 {"OK", "en-u-kb-false"},
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/TestUtilities.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/TestUtilities.java
index 6503640..b654775 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/TestUtilities.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/TestUtilities.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/TextTrieMapTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/TextTrieMapTest.java
index 9ef805c..2007722 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/TextTrieMapTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/TextTrieMapTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/Trie2Test.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/Trie2Test.java
index 5f7c1df..a056461 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/Trie2Test.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/Trie2Test.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2015, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/TrieMap.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/TrieMap.java
index 8f7fa51..0045d9e 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/TrieMap.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/TrieMap.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011, Google, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/TrieMapTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/TrieMapTest.java
index b462e19..a10a7ef 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/TrieMapTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/TrieMapTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011-2012, Google, International Business Machines Corporation and
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/TrieTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/TrieTest.java
index eb5dd19..0348642 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/TrieTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/TrieTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/ULocaleCollationTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/ULocaleCollationTest.java
index 44486f3..5a6f0e0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/ULocaleCollationTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/ULocaleCollationTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2015, International Business Machines
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/ULocaleTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/ULocaleTest.java
index 7c1f639..99d7f71 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/ULocaleTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/ULocaleTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2004-2016, International Business Machines
@@ -13,6 +13,8 @@
  */
 package android.icu.dev.test.util;
 
+import java.io.BufferedReader;
+import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Arrays;
@@ -895,8 +897,8 @@
     public void TestCanonicalization(){
         final String[][]testCases = new String[][]{
                 { "zh@collation=pinyin", "zh@collation=pinyin", "zh@collation=pinyin" },
-                { "zh_CN@collation=pinyin", "zh_CN@collation=pinyin", "zh_Hans_CN@collation=pinyin" },
-                { "zh_CN_CA@collation=pinyin", "zh_CN_CA@collation=pinyin", "zh_Hans_CN_CA@collation=pinyin" },
+                { "zh_CN@collation=pinyin", "zh_CN@collation=pinyin", "zh_CN@collation=pinyin" },
+                { "zh_CN_CA@collation=pinyin", "zh_CN_CA@collation=pinyin", "zh_CN_CA@collation=pinyin" },
                 { "en_US_POSIX", "en_US_POSIX", "en_US_POSIX" },
                 { "hy_AM_REVISED", "hy_AM_REVISED", "hy_AM_REVISED" },
                 { "no_NO_NY", "no_NO_NY", "nb_NO_NY" /* not: "nn_NO" [alan ICU3.0] */ },
@@ -959,14 +961,14 @@
                 { "hi__DIRECT", "hi__DIRECT", "hi__DIRECT" },
                 { "ja_JP_TRADITIONAL", "ja_JP_TRADITIONAL", "ja_JP_TRADITIONAL" },
                 { "th_TH_TRADITIONAL", "th_TH_TRADITIONAL", "th_TH_TRADITIONAL" },
-                { "zh_TW_STROKE", "zh_TW_STROKE", "zh_Hant_TW_STROKE" },
+                { "zh_TW_STROKE", "zh_TW_STROKE", "zh_TW_STROKE" },
                 { "zh__PINYIN", "zh__PINYIN", "zh__PINYIN" },
                 { "qz-qz@Euro", null, "qz_QZ_EURO" }, /* qz-qz uses private use iso codes */
                 { "sr-SP-Cyrl", "sr_SP_CYRL", "sr_SP_CYRL" }, /* .NET name */
                 { "sr-SP-Latn", "sr_SP_LATN", "sr_SP_LATN" }, /* .NET name */
                 { "sr_YU_CYRILLIC", "sr_YU_CYRILLIC", "sr_RS_CYRILLIC" }, /* Linux name */
-                { "uz-UZ-Cyrl", "uz_UZ_CYRL", "uz_Latn_UZ_CYRL" }, /* .NET name */
-                { "uz-UZ-Latn", "uz_UZ_LATN", "uz_Latn_UZ_LATN" }, /* .NET name */
+                { "uz-UZ-Cyrl", "uz_UZ_CYRL", "uz_UZ_CYRL" }, /* .NET name */
+                { "uz-UZ-Latn", "uz_UZ_LATN", "uz_UZ_LATN" }, /* .NET name */
                 { "zh-CHS", "zh_CHS", "zh_CHS" }, /* .NET name */
                 { "zh-CHT", "zh_CHT", "zh_CHT" }, /* .NET name This may change back to zh_Hant */
                 /* PRE_EURO and EURO conversions don't affect other keywords */
@@ -1000,6 +1002,11 @@
             }
 
             if (level2Expected != null) {
+                if (logKnownIssue("21236", "skip some canonicalization tests until code fixed")) {
+                    if (source.startsWith("zh_CN") || source.startsWith("zh_TW") || source.startsWith("uz-UZ")) {
+                        continue;
+                    }
+                }
                 String level2 = ULocale.canonicalize(source);
                 if(!level2.equals(level2Expected)){
                     errln("ULocale.getName error for: '" + source +
@@ -1177,10 +1184,10 @@
                 new Item("da", NM_STD, CAP_BEG, LEN_FU, SUB_SU, "en_GB", "Engelsk (Storbritannien)"),
                 new Item("da", NM_STD, CAP_UIL, LEN_FU, SUB_SU, "en_GB", "Engelsk (Storbritannien)"),
                 new Item("da", NM_STD, CAP_STA, LEN_FU, SUB_SU, "en_GB", "engelsk (Storbritannien)"),
-                new Item("da", NM_STD, CAP_MID, LEN_SH, SUB_SU, "en_GB", "engelsk (UK)"),
-                new Item("da", NM_STD, CAP_BEG, LEN_SH, SUB_SU, "en_GB", "Engelsk (UK)"),
-                new Item("da", NM_STD, CAP_UIL, LEN_SH, SUB_SU, "en_GB", "Engelsk (UK)"),
-                new Item("da", NM_STD, CAP_STA, LEN_SH, SUB_SU, "en_GB", "engelsk (UK)"),
+                new Item("da", NM_STD, CAP_MID, LEN_SH, SUB_SU, "en_GB", "engelsk (Storbritannien)"),
+                new Item("da", NM_STD, CAP_BEG, LEN_SH, SUB_SU, "en_GB", "Engelsk (Storbritannien)"),
+                new Item("da", NM_STD, CAP_UIL, LEN_SH, SUB_SU, "en_GB", "Engelsk (Storbritannien)"),
+                new Item("da", NM_STD, CAP_STA, LEN_SH, SUB_SU, "en_GB", "engelsk (Storbritannien)"),
                 new Item("da", NM_DIA, CAP_MID, LEN_FU, SUB_SU, "en_GB", "britisk engelsk"),
                 new Item("da", NM_DIA, CAP_BEG, LEN_FU, SUB_SU, "en_GB", "Britisk engelsk"),
                 new Item("da", NM_DIA, CAP_UIL, LEN_FU, SUB_SU, "en_GB", "Britisk engelsk"),
@@ -3935,6 +3942,50 @@
                     "art_Moon_AQ",
                     "",
                     ""
+                }, {
+                    "aae_Latn_IT",
+                    "aae_Latn_IT",
+                    "aae_Latn_IT"
+                }, {
+                    "aae_Thai_CO",
+                    "aae_Thai_CO",
+                    "aae_Thai_CO"
+                }, {
+                    "und_CW",
+                    "pap_Latn_CW",
+                    "pap_CW"
+                }, {
+                    "zh_Hant",
+                    "zh_Hant_TW",
+                    "zh_TW"
+                }, {
+                    "zh_Hani",
+                    "zh_Hani_CN",
+                    "zh_Hani"
+                }, {
+                    "und",
+                    "en_Latn_US",
+                    "en"
+                }, {
+                    "und_Thai",
+                    "th_Thai_TH",
+                    "th"
+                }, {
+                    "und_419",
+                    "es_Latn_419",
+                    "es_419"
+                }, {
+                    "und_150",
+                    "ru_Cyrl_RU",
+                    "ru"
+                }, {
+                    "und_AT",
+                    "de_Latn_AT",
+                    "de_AT"
+                }, {
+                    "und_US",
+                    "en_Latn_US",
+                    "en"
                 }
         };
 
@@ -5088,25 +5139,27 @@
     public void TestCanonical() {
         // Test replacement of languageAlias
 
-        // language _ variant -> language
-        Assert.assertEquals("nb", canonicalTag("no-BOKMAL"));
-        // also test with script, country and extensions
-        Assert.assertEquals("nb-Cyrl-ID-u-ca-japanese", canonicalTag("no-Cyrl-ID-BOKMAL-u-ca-japanese"));
-        // also test with other variants, script, country and extensions
-        Assert.assertEquals("nb-Cyrl-ID-1901-xsistemo-u-ca-japanese",
-            canonicalTag("no-Cyrl-ID-1901-BOKMAL-xsistemo-u-ca-japanese"));
-        Assert.assertEquals("nb-Cyrl-ID-1901-u-ca-japanese",
-            canonicalTag("no-Cyrl-ID-1901-BOKMAL-u-ca-japanese"));
-        Assert.assertEquals("nb-Cyrl-ID-xsistemo-u-ca-japanese",
-            canonicalTag("no-Cyrl-ID-BOKMAL-xsistemo-u-ca-japanese"));
+        if (!logKnownIssue("21236", "skip some canonicalization tests until code fixed")) {
+            // language _ variant -> language
+            Assert.assertEquals("nb", canonicalTag("no-BOKMAL"));
+            // also test with script, country and extensions
+            Assert.assertEquals("nb-Cyrl-ID-u-ca-japanese", canonicalTag("no-Cyrl-ID-BOKMAL-u-ca-japanese"));
+            // also test with other variants, script, country and extensions
+            Assert.assertEquals("nb-Cyrl-ID-1901-xsistemo-u-ca-japanese",
+                canonicalTag("no-Cyrl-ID-1901-BOKMAL-xsistemo-u-ca-japanese"));
+            Assert.assertEquals("nb-Cyrl-ID-1901-u-ca-japanese",
+                canonicalTag("no-Cyrl-ID-1901-BOKMAL-u-ca-japanese"));
+            Assert.assertEquals("nb-Cyrl-ID-xsistemo-u-ca-japanese",
+                canonicalTag("no-Cyrl-ID-BOKMAL-xsistemo-u-ca-japanese"));
 
-        Assert.assertEquals("nn", canonicalTag("no-NYNORSK"));
-        // also test with script, country and extensions
-        Assert.assertEquals("nn-Cyrl-ID-u-ca-japanese", canonicalTag("no-Cyrl-ID-NYNORSK-u-ca-japanese"));
+            Assert.assertEquals("nn", canonicalTag("no-NYNORSK"));
+            // also test with script, country and extensions
+            Assert.assertEquals("nn-Cyrl-ID-u-ca-japanese", canonicalTag("no-Cyrl-ID-NYNORSK-u-ca-japanese"));
 
-        Assert.assertEquals("ssy", canonicalTag("aa-SAAHO"));
-        // also test with script, country and extensions
-        Assert.assertEquals("ssy-Devn-IN-u-ca-japanese", canonicalTag("aa-Devn-IN-SAAHO-u-ca-japanese"));
+            Assert.assertEquals("ssy", canonicalTag("aa-SAAHO"));
+            // also test with script, country and extensions
+            Assert.assertEquals("ssy-Devn-IN-u-ca-japanese", canonicalTag("aa-Devn-IN-SAAHO-u-ca-japanese"));
+        }
 
         // language -> language
         Assert.assertEquals("aas", canonicalTag("aam"));
@@ -5127,17 +5180,18 @@
         // also test with script, variants and extensions
         Assert.assertEquals("fa-Cyrl-AF-1009-u-ca-roc", canonicalTag("prs-Cyrl-1009-u-ca-roc"));
 
-        //  language _ country -> language _ script _ country
-        Assert.assertEquals("pa-Guru-IN", canonicalTag("pa-IN"));
+        Assert.assertEquals("pa-IN", canonicalTag("pa-IN"));
         // also test with script
         Assert.assertEquals("pa-Latn-IN", canonicalTag("pa-Latn-IN"));
         // also test with variants and extensions
-        Assert.assertEquals("pa-Guru-IN-5678-u-ca-hindi", canonicalTag("pa-IN-5678-u-ca-hindi"));
+        Assert.assertEquals("pa-IN-5678-u-ca-hindi", canonicalTag("pa-IN-5678-u-ca-hindi"));
 
-        //  language _ script _ country -> language _ country
-        Assert.assertEquals("ky-KG", canonicalTag("ky-Cyrl-KG"));
+        Assert.assertEquals("ky-Cyrl-KG", canonicalTag("ky-Cyrl-KG"));
         // also test with variants and extensions
-        Assert.assertEquals("ky-KG-3456-u-ca-roc", canonicalTag("ky-Cyrl-KG-3456-u-ca-roc"));
+        Assert.assertEquals("ky-Cyrl-KG-3456-u-ca-roc", canonicalTag("ky-Cyrl-KG-3456-u-ca-roc"));
+
+        // Test replacement of scriptAlias
+        Assert.assertEquals("en-Zinh", canonicalTag("en-Qaai"));
 
         // Test replacement of territoryAlias
         // 554 has one replacement
@@ -5157,5 +5211,38 @@
         Assert.assertEquals("uz-Cyrl-UZ-5678-u-nu-latn", canonicalTag("uz-Cyrl-172-5678-u-nu-latn"));
         // a language not used in this region
         Assert.assertEquals("fr-RU", canonicalTag("fr-172"));
+
+        Assert.assertEquals("ja-Latn-alalc97", canonicalTag("ja-Latn-hepburn-heploc"));
+
+        Assert.assertEquals("aaa-Fooo-RU", canonicalTag("aaa-Fooo-SU"));
+
+        // ICU-21344
+        Assert.assertEquals("ku-Arab-IQ", canonicalTag("ku-Arab-NT"));
+    }
+
+    @Test
+    public void TestLocaleCanonicalizationFromFile() throws IOException {
+        BufferedReader testFile = TestUtil.getDataReader("unicode/localeCanonicalization.txt");
+        try {
+            String line;
+            while ((line = testFile.readLine()) != null) {
+                if (line.startsWith("#")) {
+                    // ignore any lines start with #
+                    continue;
+                }
+                String[] fields = line.split("\t;\t");
+                if (fields.length != 2) {
+                    // ignore any lines without TAB ; TAB
+                    continue;
+                }
+                String from = fields[0].replace("_", "-");
+                String to = fields[1].replace("_", "-");
+                Assert.assertEquals("canonicalTag(" + from + ")",
+                    to, canonicalTag(from));
+            }
+        } finally {
+            testFile.close();
+        }
+
     }
 }
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/UtilityTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/UtilityTest.java
index f1ef015..e3ea103 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/UtilityTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/UtilityTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2003-2015, International Business Machines
@@ -13,6 +13,7 @@
 */
 package android.icu.dev.test.util;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
@@ -294,4 +295,30 @@
         }
         return sb;
     }
+
+    @Test
+    public void TestJoinStrings() {
+        final String data[][] = {
+            //  {"<expected>", "<delimiter>", "<element1>", "<element2>", ...}
+                {"abc-def", "-", "abc", "def"},
+                {"abc-def-ghi", "-", "abc", "def", "ghi"},
+                {"abc--def", "--", "abc", "def"},
+                {"abc", "-", "abc"},
+                {"def", "_", null, "def"},
+                {"abc_def", "_", null, "abc", null, "def", null},
+                {"", "-", null},
+        };
+
+        for (int i = 0; i < data.length; i++) {
+            String expected = data[i][0];
+            String delim = data[i][1];
+            List<String> elements = new ArrayList<>(data.length - 2);
+            for (int j = 2; j < data[i].length; j++) {
+                elements.add(data[i][j]);
+            }
+
+            String actual = Utility.joinStrings(delim, elements);
+            assertEquals("data[" + i + "]", expected, actual);
+        }
+    }
 }
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/VersionInfoTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/VersionInfoTest.java
index 2bc08ac..4e581ff 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/VersionInfoTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/VersionInfoTest.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 1996-2014, International Business Machines Corporation and    *
@@ -141,6 +141,18 @@
         }
     }
 
+    @Test
+    public void TestCompareLarge() {
+        // One version with major<128, one >=128.
+        VersionInfo small = VersionInfo.getInstance(13);
+        VersionInfo large = VersionInfo.getInstance(222);  // >=128
+        assertTrue(small + " < " + large, small.compareTo(large) < 0);
+        // Difference only in the last bit.
+        small = VersionInfo.getInstance(222, 0, 1, 2);
+        large = VersionInfo.getInstance(222, 0, 1, 3);
+        assertTrue(small + " < " + large, small.compareTo(large) < 0);
+    }
+
     /**
      * Test that the getter function works
      */
@@ -417,4 +429,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/data/localeDistanceTest.txt b/android_icu4j/src/main/tests/android/icu/dev/test/util/data/localeDistanceTest.txt
index a6926da..57adea3 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/data/localeDistanceTest.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/data/localeDistanceTest.txt
@@ -1,5 +1,5 @@
 # © 2017 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Data-driven test for XLocaleDistance.
 # Format
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/data/localeMatcherTest.txt b/android_icu4j/src/main/tests/android/icu/dev/test/util/data/localeMatcherTest.txt
index 7a10986..6d21303 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/data/localeMatcherTest.txt
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/data/localeMatcherTest.txt
@@ -1,5 +1,5 @@
 # © 2017 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Data-driven test for the language/locale matcher.
 # Format:
@@ -279,7 +279,7 @@
 zh-Hant >> und-TW
 zh >> und-TW
 
-** test: testMatchGrandfatheredCode
+** test: testMatchLegacyCode
 
 @supported=fr, i-klingon, en-Latn-US
 en-GB-oed >> en-Latn-US
@@ -984,7 +984,7 @@
 x-piglatin >> x-bork
 x-bork >> x-bork
 
-** test: MatchGrandfatheredCode
+** test: MatchLegacyCode
 @supported=fr, i-klingon, en-Latn-US
 en-GB-oed >> en-Latn-US
 i-klingon >> tlh
@@ -1525,7 +1525,7 @@
 x-piglatin >> fr
 x-bork >> x-bork
 
-** test: grandfathered codes
+** test: legacy codes
 @supported=fr, i-klingon, en-Latn-US
 en-GB-oed >> en-Latn-US
 i-klingon >> tlh
diff --git a/android_icu4j/src/main/tests/android/icu/dev/tool/locale/LikelySubtagsBuilder.java b/android_icu4j/src/main/tests/android/icu/dev/tool/locale/LikelySubtagsBuilder.java
index 9887e89..d729fa2 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/tool/locale/LikelySubtagsBuilder.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/tool/locale/LikelySubtagsBuilder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.tool.locale;
 
 import java.nio.ByteBuffer;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/tool/locale/LocaleDistanceBuilder.java b/android_icu4j/src/main/tests/android/icu/dev/tool/locale/LocaleDistanceBuilder.java
index 6e41d97..f29ebb1 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/tool/locale/LocaleDistanceBuilder.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/tool/locale/LocaleDistanceBuilder.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package android.icu.dev.tool.locale;
 
 import java.io.BufferedWriter;
@@ -895,7 +895,7 @@
         System.out.println("Writing LocaleDistance.Data to " + TXT_PATH + '/' + TXT_FILE_NAME);
         try (PrintWriter out = openWriter()) {
             out.println("// © 2019 and later: Unicode, Inc. and others.\n" +
-                    "// License & terms of use: http://www.unicode.org/copyright.html#License\n" +
+                    "// License & terms of use: http://www.unicode.org/copyright.html\n" +
                     "// Generated by ICU4J LocaleDistanceBuilder.\n" +
                     TXT_FILE_BASE_NAME + ":table(nofallback){");
             out.println("    likely{");
diff --git a/android_icu4j/src/main/tests/android/icu/dev/util/CollectionUtilities.java b/android_icu4j/src/main/tests/android/icu/dev/util/CollectionUtilities.java
index 2eeaa59..5fbbd83 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/util/CollectionUtilities.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/util/CollectionUtilities.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/util/ElapsedTimer.java b/android_icu4j/src/main/tests/android/icu/dev/util/ElapsedTimer.java
index c54fb1d..dff4742 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/util/ElapsedTimer.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/util/ElapsedTimer.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 //
 //  ElapsedTimer.java
 //
diff --git a/android_icu4j/src/main/tests/android/icu/dev/util/ImmutableEntry.java b/android_icu4j/src/main/tests/android/icu/dev/util/ImmutableEntry.java
index cfabdae..da3293b 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/util/ImmutableEntry.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/util/ImmutableEntry.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2012, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/util/Timer.java b/android_icu4j/src/main/tests/android/icu/dev/util/Timer.java
index 86765ba..fc87dc0 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/util/Timer.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/util/Timer.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011-2012, Google, International Business Machines Corporation and
@@ -124,4 +124,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/main/tests/android/icu/dev/util/UnicodeMap.java b/android_icu4j/src/main/tests/android/icu/dev/util/UnicodeMap.java
index ea8d430..c7c58ea 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/util/UnicodeMap.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/util/UnicodeMap.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/dev/util/UnicodeMapIterator.java b/android_icu4j/src/main/tests/android/icu/dev/util/UnicodeMapIterator.java
index a993f3c..ddd9836 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/util/UnicodeMapIterator.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/util/UnicodeMapIterator.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2012, International Business Machines Corporation and    *
diff --git a/android_icu4j/src/main/tests/android/icu/extratest/android_icu_version.properties b/android_icu4j/src/main/tests/android/icu/extratest/android_icu_version.properties
index e6b3f0d..0fe1c26 100644
--- a/android_icu4j/src/main/tests/android/icu/extratest/android_icu_version.properties
+++ b/android_icu4j/src/main/tests/android/icu/extratest/android_icu_version.properties
@@ -1,2 +1,2 @@
 # Property file for AndroidICUVersionTest.
-version=67.1.0.0
+version=68.2.0.0
diff --git a/android_icu4j/src/samples/java/android/icu/samples/text/dateintervalformat/DateIntervalFormatSample.java b/android_icu4j/src/samples/java/android/icu/samples/text/dateintervalformat/DateIntervalFormatSample.java
index ec2e3fa..4afc284 100644
--- a/android_icu4j/src/samples/java/android/icu/samples/text/dateintervalformat/DateIntervalFormatSample.java
+++ b/android_icu4j/src/samples/java/android/icu/samples/text/dateintervalformat/DateIntervalFormatSample.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013, International Business Machines Corporation and         *
diff --git a/android_icu4j/src/samples/java/android/icu/samples/text/datetimepatterngenerator/DateTimePatternGeneratorSample.java b/android_icu4j/src/samples/java/android/icu/samples/text/datetimepatterngenerator/DateTimePatternGeneratorSample.java
index 564da81..70f6424 100644
--- a/android_icu4j/src/samples/java/android/icu/samples/text/datetimepatterngenerator/DateTimePatternGeneratorSample.java
+++ b/android_icu4j/src/samples/java/android/icu/samples/text/datetimepatterngenerator/DateTimePatternGeneratorSample.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013, International Business Machines Corporation and         *
@@ -183,4 +183,4 @@
         **************************************************************************************************/
  // END_INCLUDE(replaceFieldTypesExample)
     }
-}
\ No newline at end of file
+}
diff --git a/android_icu4j/src/samples/java/android/icu/samples/text/pluralformat/PluralFormatSample.java b/android_icu4j/src/samples/java/android/icu/samples/text/pluralformat/PluralFormatSample.java
index f296f71..0dfa0ff 100644
--- a/android_icu4j/src/samples/java/android/icu/samples/text/pluralformat/PluralFormatSample.java
+++ b/android_icu4j/src/samples/java/android/icu/samples/text/pluralformat/PluralFormatSample.java
@@ -1,6 +1,6 @@
 /* GENERATED SOURCE. DO NOT MODIFY. */
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2014, International Business Machines Corporation and    *
@@ -95,4 +95,4 @@
        *******************************************************************/
       // END_INCLUDE(PluralFormatExample)
   }
-}
\ No newline at end of file
+}
diff --git a/icu4c/APIChangeReport.html b/icu4c/APIChangeReport.html
index e2921fe..53919cd 100644
--- a/icu4c/APIChangeReport.html
+++ b/icu4c/APIChangeReport.html
@@ -5,31 +5,31 @@
 	-->
 <head>
 <META http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>ICU4C API Comparison: ICU 66 with ICU 67</title>
+<title>ICU4C API Comparison: ICU 67 with ICU 68</title>
 <link type="text/css" href="icu4c.css" rel="stylesheet">
 </head>
 <body>
 <a name="#_top"></a>
-<h1>ICU4C API Comparison: ICU 66 with ICU 67</h1>
+<h1>ICU4C API Comparison: ICU 67 with ICU 68</h1>
 <div id="toc">
 <ul>
 <li>
-<a href="#removed">Removed from ICU 66</a>
+<a href="#removed">Removed from ICU 67</a>
 </li>
 <li>
-<a href="#deprecated">Deprecated or Obsoleted in ICU 67</a>
+<a href="#deprecated">Deprecated or Obsoleted in ICU 68</a>
 </li>
 <li>
-<a href="#changed">Changed in  ICU 67</a>
+<a href="#changed">Changed in  ICU 68</a>
 </li>
 <li>
-<a href="#promoted">Promoted to stable in ICU 67</a>
+<a href="#promoted">Promoted to stable in ICU 68</a>
 </li>
 <li>
-<a href="#added">Added in ICU 67</a>
+<a href="#added">Added in ICU 68</a>
 </li>
 <li>
-<a href="#other">Other existing drafts in ICU 67</a>
+<a href="#other">Other existing drafts in ICU 68</a>
 </li>
 <li>
 <a href="#simplifications">Signature Simplifications</a>
@@ -38,35 +38,71 @@
 <hr>
 </div>
 <a name="removed"></a>
-<h2>Removed from ICU 66</h2>
+<h2>Removed from ICU 67</h2>
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 66</th><th>ICU 67</th>
+<th>File</th><th>API</th><th>ICU 67</th><th>ICU 68</th>
 </tr>
 </THEAD>
 <tr class="row1">
-<td class="file">listformatter.h</td><td class="proto">UnicodeString&amp; icu::ListFormatter::format(const UnicodeString items[], int32_t, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;) const</td><td class="">Draft<br>ICU 63</td><td>(missing)<br>
+<td class="file">fmtable.h</td><td class="proto">const UFormattable* icu::Formattable::toUFormattable()</td><td class="stabchange">Stable<br>ICU 52</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">UBool icu::number::FormattedNumber::nextFieldPosition(FieldPosition&amp;, UErrorCode&amp;) const</td><td class="">Draft<br>ICU 62</td><td>(missing)<br>
+<td class="file">measunit.h</td><td class="proto">LocalArray&lt;MeasureUnit&gt; icu::MeasureUnit::splitToSingleUnits(int32_t&amp;, UErrorCode&amp;) const</td><td class="">Internal<br>ICU 67</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">void icu::number::FormattedNumber::getAllFieldPositions(FieldPositionIterator&amp;, UErrorCode&amp;) const</td><td class="">Draft<br>ICU 62</td><td>(missing)<br>
+<td class="file">measunit.h</td><td class="proto">int32_t icu::MeasureUnit::getIndex() const</td><td class="">Internal</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">UBool icu::number::FormattedNumberRange::nextFieldPosition(FieldPosition&amp;, UErrorCode&amp;) const</td><td class="">Draft<br>ICU 63</td><td>(missing)<br>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::resolveUnitPerUnit(const MeasureUnit&amp;, const MeasureUnit&amp;, bool*)</td><td class="">Internal</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">void icu::number::FormattedNumberRange::getAllFieldPositions(FieldPositionIterator&amp;, UErrorCode&amp;) const</td><td class="">Draft<br>ICU 63</td><td>(missing)<br>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> int32_t icu::MeasureUnit::getIndexCount()</td><td class="">Internal</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_formatToResult(const UDateIntervalFormat*, UFormattedDateInterval*, UDate, UDate, UErrorCode*)</td><td class="">Draft<br>ICU 64</td><td>(missing)<br>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> int32_t icu::MeasureUnit::internalGetIndexForTypeAndSubtype(const char*, const char*)</td><td class="">Internal</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">nounit.h</td><td class="proto">UClassID icu::NoUnit::getDynamicClassID() const</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">nounit.h</td><td class="proto">icu::NoUnit::NoUnit(const NoUnit&amp;)</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">nounit.h</td><td class="proto">icu::NoUnit::~NoUnit()</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">nounit.h</td><td class="proto"><tt>static</tt> NoUnit icu::NoUnit::base()</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">nounit.h</td><td class="proto"><tt>static</tt> NoUnit icu::NoUnit::percent()</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">nounit.h</td><td class="proto"><tt>static</tt> NoUnit icu::NoUnit::permille()</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">nounit.h</td><td class="proto"><tt>static</tt> UClassID icu::NoUnit::getStaticClassID()</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">nounit.h</td><td class="proto">void* icu::NoUnit::clone() const</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uniset.h</td><td class="proto">const USet* icu::UnicodeSet::toUSet()</td><td class="stabchange">Stable<br>ICU 4.2</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
 </table>
@@ -74,2499 +110,1057 @@
 <a href="#_top">(jump back to top)</a>
 <hr>
 <a name="deprecated"></a>
-<h2>Deprecated or Obsoleted in ICU 67</h2>
+<h2>Deprecated or Obsoleted in ICU 68</h2>
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 66</th><th>ICU 67</th>
+<th>File</th><th>API</th><th>ICU 67</th><th>ICU 68</th>
 </tr>
 </THEAD>
+<tr class="row1">
+<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&amp;) const</td><td class="">Draft<br>ICU 63</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 68</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&amp;) const</td><td class="">Draft<br>ICU 63</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 68</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> FALSE</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 68</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> TRUE</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 68</span></span></td>
+</tr>
 </table>
 <P></P>
 <a href="#_top">(jump back to top)</a>
 <hr>
 <a name="changed"></a>
-<h2>Changed in  ICU 67 (old, new)</h2>
+<h2>Changed in  ICU 68 (old, new)</h2>
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 66</th><th>ICU 67</th>
+<th>File</th><th>API</th><th>ICU 67</th><th>ICU 68</th>
 </tr>
 </THEAD>
 <tr class="row1">
-<td class="file">currunit.h</td><td class="proto">icu::CurrencyUnit::CurrencyUnit(StringPiece, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">bytestrie.h</td><td class="proto">BytesTrie&amp; icu::BytesTrie::resetToState64(uint64_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">UBool icu::DecimalFormat::isFormatFailIfMoreThanMaxDigits() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">bytestrie.h</td><td class="proto">uint64_t icu::BytesTrie::getState64() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">UBool icu::DecimalFormat::isParseCaseSensitive() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">listformatter.h</td><td class="proto"><tt>static</tt> ListFormatter* icu::ListFormatter::createInstance(const Locale&amp;, UListFormatterType, UListFormatterWidth, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">UBool icu::DecimalFormat::isParseNoExponent() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localebuilder.h</td><td class="proto">UBool icu::LocaleBuilder::copyErrorTo(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">UBool icu::DecimalFormat::isSignAlwaysShown() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::addSupportedLocale(const Locale&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">const number::LocalizedNumberFormatter* icu::DecimalFormat::toNumberFormatter(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::operator=(Builder&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">int32_t icu::DecimalFormat::getMinimumGroupingDigits() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setDefaultLocale(const Locale*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">void icu::DecimalFormat::setFormatFailIfMoreThanMaxDigits(UBool)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">void icu::DecimalFormat::setMinimumGroupingDigits(int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">void icu::DecimalFormat::setParseCaseSensitive(UBool)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Iter, Iter)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">void icu::DecimalFormat::setParseNoExponent(UBool)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">void icu::DecimalFormat::setSignAlwaysShown(UBool)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">dtitvfmt.h</td><td class="proto">Appendable&amp; icu::FormattedDateInterval::appendTo(Appendable&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesViaConverter(Iter, Iter, Conv)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">dtitvfmt.h</td><td class="proto">FormattedDateInterval icu::DateIntervalFormat::formatToValue(Calendar&amp;, Calendar&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Locale icu::LocaleMatcher::Result::makeResolvedLocale(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">dtitvfmt.h</td><td class="proto">FormattedDateInterval icu::DateIntervalFormat::formatToValue(const DateInterval&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">LocaleMatcher icu::LocaleMatcher::Builder::build(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">dtitvfmt.h</td><td class="proto">FormattedDateInterval&amp; icu::FormattedDateInterval::operator=(FormattedDateInterval&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">LocaleMatcher&amp; icu::LocaleMatcher::operator=(LocaleMatcher&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">dtitvfmt.h</td><td class="proto">UBool icu::FormattedDateInterval::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Result icu::LocaleMatcher::getBestMatchResult(Locale::Iterator&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">dtitvfmt.h</td><td class="proto">UnicodeString icu::FormattedDateInterval::toString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Result icu::LocaleMatcher::getBestMatchResult(const Locale&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">dtitvfmt.h</td><td class="proto">UnicodeString icu::FormattedDateInterval::toTempString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Result&amp; icu::LocaleMatcher::Result::operator=(Result&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">dtitvfmt.h</td><td class="proto">icu::FormattedDateInterval::FormattedDateInterval()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">UBool icu::LocaleMatcher::Builder::copyErrorTo(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">dtitvfmt.h</td><td class="proto">icu::FormattedDateInterval::FormattedDateInterval(FormattedDateInterval&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::Result::getDesiredLocale() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">dtitvfmt.h</td><td class="proto">icu::FormattedDateInterval::~FormattedDateInterval()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::Result::getSupportedLocale() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">Appendable&amp; icu::FormattedValue::appendTo(Appendable&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatch(Locale::Iterator&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">UBool icu::ConstrainedFieldPosition::matchesField(int32_t, int32_t) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatch(const Locale&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">UBool icu::FormattedValue::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatchForListString(StringPiece, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">UnicodeString icu::FormattedValue::toString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_NONE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">UnicodeString icu::FormattedValue::toTempString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_REGION</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">icu::ConstrainedFieldPosition::ConstrainedFieldPosition()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_LANGUAGE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">icu::ConstrainedFieldPosition::~ConstrainedFieldPosition()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_SCRIPT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">icu::FormattedValue::~FormattedValue()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::Builder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">int32_t icu::ConstrainedFieldPosition::getCategory() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::Builder(Builder&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">int32_t icu::ConstrainedFieldPosition::getField() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::~Builder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">int32_t icu::ConstrainedFieldPosition::getLimit() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::LocaleMatcher(LocaleMatcher&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">int32_t icu::ConstrainedFieldPosition::getStart() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Result::Result(Result&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">int64_t icu::ConstrainedFieldPosition::getInt64IterationContext() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Result::~Result()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">void icu::ConstrainedFieldPosition::constrainCategory(int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::~LocaleMatcher()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">void icu::ConstrainedFieldPosition::constrainField(int32_t, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">int32_t icu::LocaleMatcher::Result::getDesiredIndex() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">void icu::ConstrainedFieldPosition::reset()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">int32_t icu::LocaleMatcher::Result::getSupportedIndex() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">void icu::ConstrainedFieldPosition::setInt64IterationContext(int64_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">UBool icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::hasNext() const override</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">void icu::ConstrainedFieldPosition::setState(int32_t, int32_t, int32_t, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">UBool icu::Locale::Iterator::hasNext() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">listformatter.h</td><td class="proto">Appendable&amp; icu::FormattedList::appendTo(Appendable&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">UBool icu::Locale::RangeIterator&lt; Iter &gt;::hasNext() const override</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">listformatter.h</td><td class="proto">FormattedList icu::ListFormatter::formatStringsToValue(const UnicodeString items[], int32_t, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">const Locale&amp; icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::next() override</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">listformatter.h</td><td class="proto">FormattedList&amp; icu::FormattedList::operator=(FormattedList&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">const Locale&amp; icu::Locale::Iterator::next()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">listformatter.h</td><td class="proto">UBool icu::FormattedList::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">const Locale&amp; icu::Locale::RangeIterator&lt; Iter &gt;::next() override</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">listformatter.h</td><td class="proto">UnicodeString icu::FormattedList::toString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::ConvertingIterator(Iter, Iter, Conv)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">listformatter.h</td><td class="proto">UnicodeString icu::FormattedList::toTempString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">icu::Locale::Iterator::~Iterator()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">listformatter.h</td><td class="proto">icu::FormattedList::FormattedList()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">icu::Locale::RangeIterator&lt; Iter &gt;::RangeIterator(Iter, Iter)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">listformatter.h</td><td class="proto">icu::FormattedList::FormattedList(FormattedList&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBar()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">listformatter.h</td><td class="proto">icu::FormattedList::~FormattedList()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDecade()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">Locale icu::LocaleBuilder::build(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerCentimeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::addUnicodeLocaleAttribute(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerInch()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::clear()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEm()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::clearExtensions()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapixel()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::removeUnicodeLocaleAttribute(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPascal()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::setExtension(char, StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixel()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::setLanguage(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerCentimeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::setLanguageTag(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerInch()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::setLocale(const Locale&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getThermUs()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::setRegion(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createBar(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::setScript(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDecade(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::setUnicodeLocaleKeyword(StringPiece, StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerCentimeter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::setVariant(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerInch(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">icu::LocaleBuilder::LocaleBuilder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEm(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">icu::LocaleBuilder::~LocaleBuilder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapixel(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localpointer.h</td><td class="proto">LocalArray&lt;T&gt;&amp; icu::LocalArray&lt; T &gt;::operator=(std::unique_ptr&lt; T[]&gt;&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPascal(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localpointer.h</td><td class="proto">LocalPointer&lt;T&gt;&amp; icu::LocalPointer&lt; T &gt;::operator=(std::unique_ptr&lt; T &gt;&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixel(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localpointer.h</td><td class="proto">icu::LocalArray&lt; T &gt;::LocalArray(std::unique_ptr&lt; T[]&gt;&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerCentimeter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localpointer.h</td><td class="proto">icu::LocalArray&lt; T &gt;::operator std::unique_ptr&lt; T[]&gt;() &amp;&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerInch(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localpointer.h</td><td class="proto">icu::LocalPointer&lt; T &gt;::LocalPointer(std::unique_ptr&lt; T &gt;&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createThermUs(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localpointer.h</td><td class="proto">icu::LocalPointer&lt; T &gt;::operator std::unique_ptr&lt; T &gt;() &amp;&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">numberformatter.h</td><td class="proto">StringClass icu::number::FormattedNumber::toDecimalNumber(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getAcre()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&amp;) const</td><td class="">Draft<br>ICU 63</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getAcreFoot()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&amp;) const</td><td class="">Draft<br>ICU 63</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 68</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getAmpere()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_HOUR</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getArcMinute()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_MINUTE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getArcSecond()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(T)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getAstronomicalUnit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ucal.h</td><td class="proto">int32_t ucal_getHostTimeZone(UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getAtmosphere()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ucharstrie.h</td><td class="proto">UCharsTrie&amp; icu::UCharsTrie::resetToState64(uint64_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBarrel()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ucharstrie.h</td><td class="proto">uint64_t icu::UCharsTrie::getState64() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ulistformatter.h</td><td class="proto">UListFormatter* ulistfmt_openForType(const char*, UListFormatterType, UListFormatterWidth, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBritishThermalUnit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_AND</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBushel()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_OR</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getByte()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_UNITS</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCalorie()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_NARROW</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCarat()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_SHORT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCelsius()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_WIDE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCentiliter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">uloc.h</td><td class="proto">UEnumeration* uloc_openAvailableByType(ULocAvailableType, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCentimeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_DEFAULT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCentury()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_ONLY_LEGACY_ALIASES</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicCentimeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_WITH_LEGACY_ALIASES</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicFoot()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> FALSE</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 68</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicInch()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> TRUE</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicKilometer()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_BUNDLE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicMeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_DATA_FILE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicMile()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RES_FILE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicYard()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCup()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCupMetric()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDalton()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDay()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDayPerson()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDeciliter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDecimeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDegree()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDunam()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthMass()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getElectronvolt()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFahrenheit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFathom()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFluidOunce()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFluidOunceImperial()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFoodcalorie()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFoot()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFurlong()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGForce()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGallon()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGallonImperial()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGenericTemperature()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGigabit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGigabyte()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGigahertz()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGigawatt()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGram()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getHectare()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getHectoliter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getHectopascal()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getHertz()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getHorsepower()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getHour()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getInch()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getInchHg()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getJoule()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKarat()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKelvin()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilobit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilobyte()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilocalorie()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilogram()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilohertz()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilojoule()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilometer()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilometerPerHour()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilopascal()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowatt()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowattHour()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKnot()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLightYear()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLiter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLiterPer100Kilometers()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLiterPerKilometer()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLux()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegabit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegabyte()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegahertz()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegaliter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapascal()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegawatt()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMeterPerSecond()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMeterPerSecondSquared()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMetricTon()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMicrogram()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMicrometer()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMicrosecond()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMile()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilePerGallon()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilePerGallonImperial()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilePerHour()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMileScandinavian()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilliampere()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMillibar()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligram()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligramPerDeciliter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilliliter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMillimeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMillimeterOfMercury()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMillimolePerLiter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMillisecond()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilliwatt()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMinute()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMole()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMonth()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMonthPerson()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getNanometer()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getNanosecond()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getNauticalMile()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getNewton()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getNewtonMeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getOhm()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getOunce()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getOunceTroy()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getParsec()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPartPerMillion()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPercent()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPermille()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPermyriad()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPetabyte()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPicometer()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPint()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPintMetric()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPoint()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPound()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPoundFoot()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPoundForce()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPoundPerSquareInch()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getQuart()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getRadian()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getRevolutionAngle()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSecond()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSolarLuminosity()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSolarMass()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSolarRadius()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareCentimeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareFoot()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareInch()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareKilometer()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareMeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareMile()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareYard()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getStone()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTablespoon()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTeaspoon()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTerabit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTerabyte()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTon()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getVolt()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getWatt()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getWeek()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getWeekPerson()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getYard()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getYear()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getYearPerson()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createBarrel(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createBritishThermalUnit(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDalton(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDayPerson(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDunam(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthMass(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createElectronvolt(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createFluidOunceImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createKilopascal(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapascal(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMole(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMonthPerson(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createNewton(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createNewtonMeter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPermyriad(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPoundFoot(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPoundForce(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createSolarLuminosity(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createSolarMass(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createSolarRadius(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createWeekPerson(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createYearPerson(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">LocalPointer&lt;Derived&gt; icu::number::NumberFormatterSettings&lt; Derived &gt;::clone() &amp;&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">LocalPointer&lt;Derived&gt; icu::number::NumberFormatterSettings&lt; Derived &gt;::clone() const &amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">UBool icu::number::FormattedNumber::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumber::toTempString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::FormattedNumber::FormattedNumber()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> UnlocalizedNumberFormatter icu::number::NumberFormatter::forSkeleton(const UnicodeString&amp;, UParseError&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">LocalPointer&lt;Derived&gt; icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::clone() &amp;&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">LocalPointer&lt;Derived&gt; icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::clone() const &amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">UBool icu::number::FormattedNumberRange::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::toTempString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">numfmt.h</td><td class="proto"><tt>enum</tt>  							icu::NumberFormat::EAlignmentFields::kCompactField</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">numfmt.h</td><td class="proto"><tt>enum</tt>  							icu::NumberFormat::EAlignmentFields::kMeasureUnitField</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">plurrule.h</td><td class="proto">UnicodeString icu::PluralRules::select(const number::FormattedNumber&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">Appendable&amp; icu::FormattedRelativeDateTime::appendTo(Appendable&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatNumericToValue(double, URelativeDateTimeUnit, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(UDateDirection, UDateAbsoluteUnit, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(double, UDateDirection, UDateRelativeUnit, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(double, URelativeDateTimeUnit, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">FormattedRelativeDateTime&amp; icu::FormattedRelativeDateTime::operator=(FormattedRelativeDateTime&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">UBool icu::FormattedRelativeDateTime::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">UnicodeString icu::FormattedRelativeDateTime::toString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">UnicodeString icu::FormattedRelativeDateTime::toTempString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">icu::FormattedRelativeDateTime::FormattedRelativeDateTime()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">icu::FormattedRelativeDateTime::FormattedRelativeDateTime(FormattedRelativeDateTime&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">icu::FormattedRelativeDateTime::~FormattedRelativeDateTime()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">udateintervalformat.h</td><td class="proto">UFormattedDateInterval* udtitvfmt_openResult(UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">udateintervalformat.h</td><td class="proto">const UFormattedValue* udtitvfmt_resultAsValue(const UFormattedDateInterval*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_closeResult(UFormattedDateInterval*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">UBool ucfpos_matchesField(const UConstrainedFieldPosition*, int32_t, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">UBool ufmtval_nextPosition(const UFormattedValue*, UConstrainedFieldPosition*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">UConstrainedFieldPosition* ucfpos_open(UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">const UChar* ufmtval_getString(const UFormattedValue*, int32_t*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_DATE_INTERVAL_SPAN</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_DATE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_LIST_SPAN</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_LIST</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_NUMBER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_RELATIVE_DATETIME</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">int32_t ucfpos_getCategory(const UConstrainedFieldPosition*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">int32_t ucfpos_getField(const UConstrainedFieldPosition*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">int64_t ucfpos_getInt64IterationContext(const UConstrainedFieldPosition*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_close(UConstrainedFieldPosition*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_constrainCategory(UConstrainedFieldPosition*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_constrainField(UConstrainedFieldPosition*, int32_t, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_getIndexes(const UConstrainedFieldPosition*, int32_t*, int32_t*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_reset(UConstrainedFieldPosition*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_setInt64IterationContext(UConstrainedFieldPosition*, int64_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_setState(UConstrainedFieldPosition*, int32_t, int32_t, int32_t, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">ulistformatter.h</td><td class="proto">UFormattedList* ulistfmt_openResult(UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">ulistformatter.h</td><td class="proto">const UFormattedValue* ulistfmt_resultAsValue(const UFormattedList*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterField::ULISTFMT_ELEMENT_FIELD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterField::ULISTFMT_LITERAL_FIELD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ulistformatter.h</td><td class="proto">void ulistfmt_closeResult(UFormattedList*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">ulistformatter.h</td><td class="proto">void ulistfmt_formatStringsToResult(const UListFormatter*, const UChar* const strings[], const int32_t*, int32_t, UFormattedList*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatAttribute::UNUM_MINIMUM_GROUPING_DIGITS</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatAttribute::UNUM_PARSE_CASE_SENSITIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatAttribute::UNUM_SIGN_ALWAYS_SHOWN</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatFields::UNUM_COMPACT_FIELD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatFields::UNUM_MEASURE_UNIT_FIELD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto">UNumberFormatter* unumf_openForSkeletonAndLocaleWithError(const UChar*, int32_t, const char*, UParseError*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto">const UFormattedValue* unumf_resultAsValue(const UFormattedNumber*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">upluralrules.h</td><td class="proto">int32_t uplrules_selectFormatted(const UPluralRules*, const struct UFormattedNumber*, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto">UFormattedRelativeDateTime* ureldatefmt_openResult(UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto">const UFormattedValue* ureldatefmt_resultAsValue(const UFormattedRelativeDateTime*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeFormatterField::UDAT_REL_LITERAL_FIELD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeFormatterField::UDAT_REL_NUMERIC_FIELD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto">void ureldatefmt_closeResult(UFormattedRelativeDateTime*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto">void ureldatefmt_formatNumericToResult(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UFormattedRelativeDateTime*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto">void ureldatefmt_formatToResult(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UFormattedRelativeDateTime*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_START</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 </table>
 <P></P>
 <a href="#_top">(jump back to top)</a>
 <hr>
 <a name="promoted"></a>
-<h2>Promoted to stable in ICU 67</h2>
+<h2>Promoted to stable in ICU 68</h2>
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 66</th><th>ICU 67</th>
+<th>File</th><th>API</th><th>ICU 67</th><th>ICU 68</th>
 </tr>
 </THEAD>
 <tr class="row1">
-<td class="file">currunit.h</td><td class="proto">icu::CurrencyUnit::CurrencyUnit(StringPiece, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">bytestrie.h</td><td class="proto">BytesTrie&amp; icu::BytesTrie::resetToState64(uint64_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">UBool icu::DecimalFormat::isFormatFailIfMoreThanMaxDigits() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">bytestrie.h</td><td class="proto">uint64_t icu::BytesTrie::getState64() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">UBool icu::DecimalFormat::isParseCaseSensitive() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">fmtable.h</td><td class="proto">UFormattable* icu::Formattable::toUFormattable()</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 52</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">UBool icu::DecimalFormat::isParseNoExponent() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">listformatter.h</td><td class="proto"><tt>static</tt> ListFormatter* icu::ListFormatter::createInstance(const Locale&amp;, UListFormatterType, UListFormatterWidth, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">UBool icu::DecimalFormat::isSignAlwaysShown() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localebuilder.h</td><td class="proto">UBool icu::LocaleBuilder::copyErrorTo(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">const number::LocalizedNumberFormatter* icu::DecimalFormat::toNumberFormatter(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::addSupportedLocale(const Locale&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">int32_t icu::DecimalFormat::getMinimumGroupingDigits() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::operator=(Builder&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">void icu::DecimalFormat::setFormatFailIfMoreThanMaxDigits(UBool)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setDefaultLocale(const Locale*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">void icu::DecimalFormat::setMinimumGroupingDigits(int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">void icu::DecimalFormat::setParseCaseSensitive(UBool)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">decimfmt.h</td><td class="proto">void icu::DecimalFormat::setParseNoExponent(UBool)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Iter, Iter)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">decimfmt.h</td><td class="proto">void icu::DecimalFormat::setSignAlwaysShown(UBool)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">dtitvfmt.h</td><td class="proto">Appendable&amp; icu::FormattedDateInterval::appendTo(Appendable&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">dtitvfmt.h</td><td class="proto">FormattedDateInterval icu::DateIntervalFormat::formatToValue(Calendar&amp;, Calendar&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesViaConverter(Iter, Iter, Conv)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">dtitvfmt.h</td><td class="proto">FormattedDateInterval icu::DateIntervalFormat::formatToValue(const DateInterval&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Locale icu::LocaleMatcher::Result::makeResolvedLocale(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">dtitvfmt.h</td><td class="proto">FormattedDateInterval&amp; icu::FormattedDateInterval::operator=(FormattedDateInterval&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">LocaleMatcher icu::LocaleMatcher::Builder::build(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">dtitvfmt.h</td><td class="proto">UBool icu::FormattedDateInterval::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">LocaleMatcher&amp; icu::LocaleMatcher::operator=(LocaleMatcher&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">dtitvfmt.h</td><td class="proto">UnicodeString icu::FormattedDateInterval::toString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Result icu::LocaleMatcher::getBestMatchResult(Locale::Iterator&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">dtitvfmt.h</td><td class="proto">UnicodeString icu::FormattedDateInterval::toTempString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Result icu::LocaleMatcher::getBestMatchResult(const Locale&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">dtitvfmt.h</td><td class="proto">icu::FormattedDateInterval::FormattedDateInterval()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">Result&amp; icu::LocaleMatcher::Result::operator=(Result&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">dtitvfmt.h</td><td class="proto">icu::FormattedDateInterval::FormattedDateInterval(FormattedDateInterval&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">UBool icu::LocaleMatcher::Builder::copyErrorTo(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">dtitvfmt.h</td><td class="proto">icu::FormattedDateInterval::~FormattedDateInterval()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::Result::getDesiredLocale() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">Appendable&amp; icu::FormattedValue::appendTo(Appendable&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::Result::getSupportedLocale() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">UBool icu::ConstrainedFieldPosition::matchesField(int32_t, int32_t) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatch(Locale::Iterator&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">UBool icu::FormattedValue::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatch(const Locale&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">UnicodeString icu::FormattedValue::toString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatchForListString(StringPiece, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">UnicodeString icu::FormattedValue::toTempString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_NONE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">icu::ConstrainedFieldPosition::ConstrainedFieldPosition()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_REGION</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">icu::ConstrainedFieldPosition::~ConstrainedFieldPosition()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_LANGUAGE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">icu::FormattedValue::~FormattedValue()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_SCRIPT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">int32_t icu::ConstrainedFieldPosition::getCategory() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::Builder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">int32_t icu::ConstrainedFieldPosition::getField() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::Builder(Builder&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">int32_t icu::ConstrainedFieldPosition::getLimit() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::~Builder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">int32_t icu::ConstrainedFieldPosition::getStart() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::LocaleMatcher(LocaleMatcher&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">int64_t icu::ConstrainedFieldPosition::getInt64IterationContext() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Result::Result(Result&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">void icu::ConstrainedFieldPosition::constrainCategory(int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Result::~Result()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">void icu::ConstrainedFieldPosition::constrainField(int32_t, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::~LocaleMatcher()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">void icu::ConstrainedFieldPosition::reset()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">int32_t icu::LocaleMatcher::Result::getDesiredIndex() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">formattedvalue.h</td><td class="proto">void icu::ConstrainedFieldPosition::setInt64IterationContext(int64_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">localematcher.h</td><td class="proto">int32_t icu::LocaleMatcher::Result::getSupportedIndex() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">formattedvalue.h</td><td class="proto">void icu::ConstrainedFieldPosition::setState(int32_t, int32_t, int32_t, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">UBool icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::hasNext() const override</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">listformatter.h</td><td class="proto">Appendable&amp; icu::FormattedList::appendTo(Appendable&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">UBool icu::Locale::Iterator::hasNext() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">listformatter.h</td><td class="proto">FormattedList icu::ListFormatter::formatStringsToValue(const UnicodeString items[], int32_t, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">UBool icu::Locale::RangeIterator&lt; Iter &gt;::hasNext() const override</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">listformatter.h</td><td class="proto">FormattedList&amp; icu::FormattedList::operator=(FormattedList&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">const Locale&amp; icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::next() override</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">listformatter.h</td><td class="proto">UBool icu::FormattedList::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">const Locale&amp; icu::Locale::Iterator::next()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">listformatter.h</td><td class="proto">UnicodeString icu::FormattedList::toString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">const Locale&amp; icu::Locale::RangeIterator&lt; Iter &gt;::next() override</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">listformatter.h</td><td class="proto">UnicodeString icu::FormattedList::toTempString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::ConvertingIterator(Iter, Iter, Conv)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">listformatter.h</td><td class="proto">icu::FormattedList::FormattedList()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">icu::Locale::Iterator::~Iterator()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">listformatter.h</td><td class="proto">icu::FormattedList::FormattedList(FormattedList&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">locid.h</td><td class="proto">icu::Locale::RangeIterator&lt; Iter &gt;::RangeIterator(Iter, Iter)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">listformatter.h</td><td class="proto">icu::FormattedList::~FormattedList()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBar()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">Locale icu::LocaleBuilder::build(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDecade()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::addUnicodeLocaleAttribute(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerCentimeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::clear()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerInch()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::clearExtensions()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEm()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::removeUnicodeLocaleAttribute(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapixel()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::setExtension(char, StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPascal()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::setLanguage(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixel()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::setLanguageTag(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerCentimeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::setLocale(const Locale&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerInch()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::setRegion(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getThermUs()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::setScript(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createBar(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::setUnicodeLocaleKeyword(StringPiece, StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDecade(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">LocaleBuilder&amp; icu::LocaleBuilder::setVariant(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerCentimeter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">icu::LocaleBuilder::LocaleBuilder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerInch(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localebuilder.h</td><td class="proto">icu::LocaleBuilder::~LocaleBuilder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEm(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localpointer.h</td><td class="proto">LocalArray&lt;T&gt;&amp; icu::LocalArray&lt; T &gt;::operator=(std::unique_ptr&lt; T[]&gt;&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapixel(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localpointer.h</td><td class="proto">LocalPointer&lt;T&gt;&amp; icu::LocalPointer&lt; T &gt;::operator=(std::unique_ptr&lt; T &gt;&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPascal(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localpointer.h</td><td class="proto">icu::LocalArray&lt; T &gt;::LocalArray(std::unique_ptr&lt; T[]&gt;&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixel(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localpointer.h</td><td class="proto">icu::LocalArray&lt; T &gt;::operator std::unique_ptr&lt; T[]&gt;() &amp;&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerCentimeter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">localpointer.h</td><td class="proto">icu::LocalPointer&lt; T &gt;::LocalPointer(std::unique_ptr&lt; T &gt;&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerInch(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">localpointer.h</td><td class="proto">icu::LocalPointer&lt; T &gt;::operator std::unique_ptr&lt; T &gt;() &amp;&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createThermUs(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getAcre()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">numberformatter.h</td><td class="proto">StringClass icu::number::FormattedNumber::toDecimalNumber(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getAcreFoot()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_HOUR</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getAmpere()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_MINUTE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getArcMinute()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(T)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getArcSecond()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ucal.h</td><td class="proto">int32_t ucal_getHostTimeZone(UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getAstronomicalUnit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ucharstrie.h</td><td class="proto">UCharsTrie&amp; icu::UCharsTrie::resetToState64(uint64_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getAtmosphere()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ucharstrie.h</td><td class="proto">uint64_t icu::UCharsTrie::getState64() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBarrel()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ulistformatter.h</td><td class="proto">UListFormatter* ulistfmt_openForType(const char*, UListFormatterType, UListFormatterWidth, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_AND</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBritishThermalUnit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_OR</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBushel()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_UNITS</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getByte()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_NARROW</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCalorie()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_SHORT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCarat()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_WIDE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCelsius()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">uloc.h</td><td class="proto">UEnumeration* uloc_openAvailableByType(ULocAvailableType, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCentiliter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_DEFAULT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCentimeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_ONLY_LEGACY_ALIASES</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCentury()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_WITH_LEGACY_ALIASES</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicCentimeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicFoot()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicInch()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicKilometer()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicMeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicMile()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicYard()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCup()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCupMetric()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDalton()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDay()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDayPerson()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDeciliter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDecimeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDegree()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDunam()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthMass()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getElectronvolt()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFahrenheit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFathom()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFluidOunce()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFluidOunceImperial()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFoodcalorie()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFoot()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getFurlong()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGForce()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGallon()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGallonImperial()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGenericTemperature()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGigabit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGigabyte()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGigahertz()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGigawatt()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGram()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getHectare()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getHectoliter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getHectopascal()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getHertz()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getHorsepower()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getHour()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getInch()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getInchHg()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getJoule()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKarat()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKelvin()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilobit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilobyte()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilocalorie()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilogram()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilohertz()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilojoule()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilometer()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilometerPerHour()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilopascal()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowatt()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowattHour()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKnot()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLightYear()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLiter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLiterPer100Kilometers()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLiterPerKilometer()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLux()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegabit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegabyte()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegahertz()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegaliter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapascal()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegawatt()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMeterPerSecond()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMeterPerSecondSquared()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMetricTon()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMicrogram()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMicrometer()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMicrosecond()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMile()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilePerGallon()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilePerGallonImperial()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilePerHour()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMileScandinavian()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilliampere()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMillibar()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligram()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligramPerDeciliter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilliliter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMillimeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMillimeterOfMercury()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMillimolePerLiter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMillisecond()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilliwatt()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMinute()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMole()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMonth()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMonthPerson()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getNanometer()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getNanosecond()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getNauticalMile()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getNewton()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getNewtonMeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getOhm()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getOunce()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getOunceTroy()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getParsec()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPartPerMillion()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPercent()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPermille()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPermyriad()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPetabyte()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPicometer()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPint()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPintMetric()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPoint()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPound()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPoundFoot()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPoundForce()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPoundPerSquareInch()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getQuart()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getRadian()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getRevolutionAngle()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSecond()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSolarLuminosity()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSolarMass()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSolarRadius()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareCentimeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareFoot()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareInch()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareKilometer()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareMeter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareMile()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareYard()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getStone()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTablespoon()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTeaspoon()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTerabit()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTerabyte()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTon()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getVolt()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getWatt()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getWeek()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getWeekPerson()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getYard()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getYear()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getYearPerson()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createBarrel(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createBritishThermalUnit(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDalton(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDayPerson(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDunam(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthMass(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createElectronvolt(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createFluidOunceImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createKilopascal(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapascal(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMole(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMonthPerson(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createNewton(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createNewtonMeter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPermyriad(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPoundFoot(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPoundForce(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createSolarLuminosity(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createSolarMass(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createSolarRadius(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createWeekPerson(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createYearPerson(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">LocalPointer&lt;Derived&gt; icu::number::NumberFormatterSettings&lt; Derived &gt;::clone() &amp;&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">LocalPointer&lt;Derived&gt; icu::number::NumberFormatterSettings&lt; Derived &gt;::clone() const &amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">UBool icu::number::FormattedNumber::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumber::toTempString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::FormattedNumber::FormattedNumber()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> UnlocalizedNumberFormatter icu::number::NumberFormatter::forSkeleton(const UnicodeString&amp;, UParseError&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">LocalPointer&lt;Derived&gt; icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::clone() &amp;&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">LocalPointer&lt;Derived&gt; icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::clone() const &amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">UBool icu::number::FormattedNumberRange::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::toTempString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">numfmt.h</td><td class="proto"><tt>enum</tt>  							icu::NumberFormat::EAlignmentFields::kCompactField</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">numfmt.h</td><td class="proto"><tt>enum</tt>  							icu::NumberFormat::EAlignmentFields::kMeasureUnitField</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">numsys.h</td><td class="proto">NumberingSystem&amp; icu::NumberingSystem::operator=(const NumberingSystem&amp;)=default</td><td class="">(missing)</td><td>Stable<br>
+<td class="file">uniset.h</td><td class="proto">USet* icu::UnicodeSet::toUSet()</td><td class="">(missing)</td><td>Stable<br>
 <span class=""><span>ICU 4.2</span></span></td>
 </tr>
-<tr class="row1">
-<td class="file">plurrule.h</td><td class="proto">UnicodeString icu::PluralRules::select(const number::FormattedNumber&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
 <tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">Appendable&amp; icu::FormattedRelativeDateTime::appendTo(Appendable&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_BUNDLE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatNumericToValue(double, URelativeDateTimeUnit, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_DATA_FILE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(UDateDirection, UDateAbsoluteUnit, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RES_FILE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 <tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(double, UDateDirection, UDateRelativeUnit, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(double, URelativeDateTimeUnit, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">FormattedRelativeDateTime&amp; icu::FormattedRelativeDateTime::operator=(FormattedRelativeDateTime&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">UBool icu::FormattedRelativeDateTime::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">UnicodeString icu::FormattedRelativeDateTime::toString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">UnicodeString icu::FormattedRelativeDateTime::toTempString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">icu::FormattedRelativeDateTime::FormattedRelativeDateTime()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto">icu::FormattedRelativeDateTime::FormattedRelativeDateTime(FormattedRelativeDateTime&amp;&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto">icu::FormattedRelativeDateTime::~FormattedRelativeDateTime()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">udateintervalformat.h</td><td class="proto">UFormattedDateInterval* udtitvfmt_openResult(UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">udateintervalformat.h</td><td class="proto">const UFormattedValue* udtitvfmt_resultAsValue(const UFormattedDateInterval*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_closeResult(UFormattedDateInterval*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">UBool ucfpos_matchesField(const UConstrainedFieldPosition*, int32_t, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">UBool ufmtval_nextPosition(const UFormattedValue*, UConstrainedFieldPosition*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">UConstrainedFieldPosition* ucfpos_open(UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">const UChar* ufmtval_getString(const UFormattedValue*, int32_t*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_DATE_INTERVAL_SPAN</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_DATE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_LIST_SPAN</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_LIST</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_NUMBER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_RELATIVE_DATETIME</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">int32_t ucfpos_getCategory(const UConstrainedFieldPosition*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">int32_t ucfpos_getField(const UConstrainedFieldPosition*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">int64_t ucfpos_getInt64IterationContext(const UConstrainedFieldPosition*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_close(UConstrainedFieldPosition*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_constrainCategory(UConstrainedFieldPosition*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_constrainField(UConstrainedFieldPosition*, int32_t, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_getIndexes(const UConstrainedFieldPosition*, int32_t*, int32_t*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_reset(UConstrainedFieldPosition*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_setInt64IterationContext(UConstrainedFieldPosition*, int64_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto">void ucfpos_setState(UConstrainedFieldPosition*, int32_t, int32_t, int32_t, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">ulistformatter.h</td><td class="proto">UFormattedList* ulistfmt_openResult(UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">ulistformatter.h</td><td class="proto">const UFormattedValue* ulistfmt_resultAsValue(const UFormattedList*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterField::ULISTFMT_ELEMENT_FIELD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterField::ULISTFMT_LITERAL_FIELD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">ulistformatter.h</td><td class="proto">void ulistfmt_closeResult(UFormattedList*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">ulistformatter.h</td><td class="proto">void ulistfmt_formatStringsToResult(const UListFormatter*, const UChar* const strings[], const int32_t*, int32_t, UFormattedList*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatAttribute::UNUM_MINIMUM_GROUPING_DIGITS</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatAttribute::UNUM_PARSE_CASE_SENSITIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatAttribute::UNUM_SIGN_ALWAYS_SHOWN</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatFields::UNUM_COMPACT_FIELD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatFields::UNUM_MEASURE_UNIT_FIELD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto">UNumberFormatter* unumf_openForSkeletonAndLocaleWithError(const UChar*, int32_t, const char*, UParseError*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto">const UFormattedValue* unumf_resultAsValue(const UFormattedNumber*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">upluralrules.h</td><td class="proto">int32_t uplrules_selectFormatted(const UPluralRules*, const struct UFormattedNumber*, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto">UFormattedRelativeDateTime* ureldatefmt_openResult(UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto">const UFormattedValue* ureldatefmt_resultAsValue(const UFormattedRelativeDateTime*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeFormatterField::UDAT_REL_LITERAL_FIELD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto"><tt>enum</tt> URelativeDateTimeFormatterField::UDAT_REL_NUMERIC_FIELD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto">void ureldatefmt_closeResult(UFormattedRelativeDateTime*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row1">
-<td class="file">ureldatefmt.h</td><td class="proto">void ureldatefmt_formatNumericToResult(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UFormattedRelativeDateTime*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
-</tr>
-<tr class="row0">
-<td class="file">ureldatefmt.h</td><td class="proto">void ureldatefmt_formatToResult(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UFormattedRelativeDateTime*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 64</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_START</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 65</td>
 </tr>
 </table>
 <P></P>
 <a href="#_top">(jump back to top)</a>
 <hr>
 <a name="added"></a>
-<h2>Added in ICU 67</h2>
+<h2>Added in ICU 68</h2>
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 66</th><th>ICU 67</th>
+<th>File</th><th>API</th><th>ICU 67</th><th>ICU 68</th>
 </tr>
 </THEAD>
 <tr class="row1">
-<td class="file">bytestream.h</td><td class="proto">void icu::ByteSink::AppendU8(const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">dtitvfmt.h</td><td class="proto">UDisplayContext icu::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">bytestream.h</td><td class="proto">void icu::ByteSink::AppendU8(const char8_t*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">dtitvfmt.h</td><td class="proto">void icu::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">dcfmtsym.h</td><td class="proto">void icu::DecimalFormatSymbols::setCurrency(const UChar*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<td class="file">dtptngen.h</td><td class="proto"><tt>static</tt> DateTimePatternGenerator* icu::DateTimePatternGenerator::createInstanceNoStdPat(const Locale&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">dtptngen.h</td><td class="proto">UDateFormatHourCycle icu::DateTimePatternGenerator::getDefaultHourCycle(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">fmtable.h</td><td class="proto">UFormattable* icu::Formattable::toUFormattable()</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 52</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">listformatter.h</td><td class="proto"><tt>static</tt> ListFormatter* icu::ListFormatter::createInstance(const Locale&amp;, UListFormatterType, UListFormatterWidth, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setMaxDistance(const Locale&amp;, const Locale&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setDirection(ULocMatchDirection)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setNoDefaultLocale()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_ONLY_TWO_WAY</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">localematcher.h</td><td class="proto">UBool icu::LocaleMatcher::isMatch(const Locale&amp;, const Locale&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_WITH_ONE_WAY</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">measunit.h</td><td class="proto">int32_t icu::MeasureUnit::getOffset() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::canonicalize(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCandela()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto">LocalArray&lt;MeasureUnit&gt; icu::MeasureUnit::splitToSingleUnits(int32_t&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoon()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::product(const MeasureUnit&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoonImperial()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::reciprocal(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDot()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withDimensionality(int32_t, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDram()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withSIPrefix(UMeasureSIPrefix, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDrop()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto">MeasureUnit&amp; icu::MeasureUnit::operator=(MeasureUnit&amp;&amp;) noexcept</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthRadius()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto">UMeasureSIPrefix icu::MeasureUnit::getSIPrefix(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGrain()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto">UMeasureUnitComplexity icu::MeasureUnit::getComplexity(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getJigger()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto">const char* icu::MeasureUnit::getIdentifier() const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLumen()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto">icu::MeasureUnit::MeasureUnit(MeasureUnit&amp;&amp;) noexcept</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPinch()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto">int32_t icu::MeasureUnit::getDimensionality(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getQuartImperial()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::forIdentifier(StringPiece, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createCandela(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">numsys.h</td><td class="proto">NumberingSystem&amp; icu::NumberingSystem::operator=(const NumberingSystem&amp;)=default</td><td class="">(missing)</td><td>Stable<br>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoon(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoonImperial(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDot(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDram(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDrop(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthRadius(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGrain(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createJigger(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createLumen(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPinch(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuartImperial(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto">std::pair&lt; LocalArray&lt; MeasureUnit &gt;, int32_t &gt; icu::MeasureUnit::splitToSingleUnits(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece) const&amp;</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece)&amp;&amp;</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numberformatter.h</td><td class="proto">MeasureUnit icu::number::FormattedNumber::getOutputUnit(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">numberformatter.h</td><td class="proto">Usage&amp; icu::number::impl::Usage::operator=(Usage&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numberformatter.h</td><td class="proto">Usage&amp; icu::number::impl::Usage::operator=(const Usage&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">numberformatter.h</td><td class="proto">bool icu::number::impl::Usage::isSet() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::Usage::Usage(Usage&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::Usage::Usage(const Usage&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::Usage::~Usage()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">numberformatter.h</td><td class="proto">int16_t icu::number::impl::Usage::length() const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numberformatter.h</td><td class="proto">void icu::number::impl::Usage::set(StringPiece)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">numberrangeformatter.h</td><td class="proto">std::pair&lt; StringClass, StringClass &gt; icu::number::FormattedNumberRange::getDecimalNumbers(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">plurrule.h</td><td class="proto">UnicodeString icu::PluralRules::select(const number::FormattedNumberRange&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">plurrule.h</td><td class="proto">UnicodeString icu::PluralRules::select(const number::impl::UFormattedNumberRangeData*, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">plurrule.h</td><td class="proto">int32_t icu::PluralRules::getSamples(const UnicodeString&amp;, FixedDecimal*, int32_t, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">timezone.h</td><td class="proto"><tt>static</tt> TimeZone* icu::TimeZone::forLocaleOrDefault(const Locale&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_FORMAL_SYMBOL_NAME</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_VARIANT_SYMBOL_NAME</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">udateintervalformat.h</td><td class="proto">UDisplayContext udtitvfmt_getContext(const UDateIntervalFormat*, UDisplayContextType, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_setContext(UDateIntervalFormat*, UDisplayContext, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">umachine.h</td><td class="proto"><tt>#define</tt> U_DEFINE_FALSE_AND_TRUE</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 68</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uniset.h</td><td class="proto">USet* icu::UnicodeSet::toUSet()</td><td class="">(missing)</td><td>Stable<br>
 <span class=""><span>ICU 4.2</span></span></td>
 </tr>
-<tr class="row1">
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const char8_t*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
-</tr>
 <tr class="row0">
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const char8_t*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_AUTO</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const std::u8string&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_MIN2</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(std::nullptr_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">stringpiece.h</td><td class="proto">int32_t icu::StringPiece::compare(StringPiece)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">stringpiece.h</td><td class="proto">int32_t icu::StringPiece::find(StringPiece, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">unumberformatter.h</td><td class="proto">int32_t unumf_resultToDecimalNumber(const UFormattedNumber*, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">stringpiece.h</td><td class="proto">void icu::StringPiece::set(const char8_t*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">UFormattedNumberRange* unumrf_openResult(UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">stringpiece.h</td><td class="proto">void icu::StringPiece::set(const char8_t*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">UNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(const UChar*, int32_t, UNumberRangeCollapse, UNumberRangeIdentityFallback, const char*, UParseError*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_11</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">UNumberRangeIdentityResult unumrf_resultGetIdentityResult(const UFormattedNumberRange*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_12</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">const UFormattedValue* unumrf_resultAsValue(const UFormattedNumberRange*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_23</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">int32_t unumrf_resultGetFirstDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_24</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">int32_t unumrf_resultGetSecondDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_formatCalendarToResult(const UDateIntervalFormat*, UCalendar*, UCalendar*, UFormattedDateInterval*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_close(UNumberRangeFormatter*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_formatToResult(const UDateIntervalFormat*, UDate, UDate, UFormattedDateInterval*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_closeResult(UFormattedNumberRange*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">udatpg.h</td><td class="proto">UDateFormatHourCycle udatpg_getDefaultHourCycle(const UDateTimePatternGenerator*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_formatDecimalRange(const UNumberRangeFormatter*, const char*, int32_t, const char*, int32_t, UFormattedNumberRange*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">ulistformatter.h</td><td class="proto">UListFormatter* ulistfmt_openForType(const char*, UListFormatterType, UListFormatterWidth, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_formatDoubleRange(const UNumberRangeFormatter*, double, double, UFormattedNumberRange*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_AND</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_OR</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_UNITS</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_NARROW</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_SHORT</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">ulistformatter.h</td><td class="proto"><tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_WIDE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_BREAK_ENGINE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_CHARACTER</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_LINE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_SENTENCE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_TITLE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_WORD</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_LIMIT</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_START</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 67</span></span></td>
+<td class="file">upluralrules.h</td><td class="proto">int32_t uplrules_selectForRange(const UPluralRules*, const struct UFormattedNumberRange*, UChar*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 </table>
 <P></P>
 <a href="#_top">(jump back to top)</a>
 <hr>
 <a name="other"></a>
-<h2>Other existing drafts in ICU 67</h2>
+<h2>Other existing drafts in ICU 68</h2>
 <div class="other">
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 66</th><th>ICU 67</th>
+<th>File</th><th>API</th><th>ICU 67</th><th>ICU 68</th>
 </tr>
 </THEAD>
 <tr class="row1">
-<td class="file">bytestrie.h</td><td class="proto">BytesTrie&amp; icu::BytesTrie::resetToState64(uint64_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">bytestream.h</td><td class="proto">void icu::ByteSink::AppendU8(const char*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">bytestrie.h</td><td class="proto">uint64_t icu::BytesTrie::getState64() const</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">bytestream.h</td><td class="proto">void icu::ByteSink::AppendU8(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">localebuilder.h</td><td class="proto">UBool icu::LocaleBuilder::copyErrorTo(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">dtptngen.h</td><td class="proto">UDateFormatHourCycle icu::DateTimePatternGenerator::getDefaultHourCycle(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::addSupportedLocale(const Locale&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setDirection(ULocMatchDirection)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::operator=(Builder&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_ONLY_TWO_WAY</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setDefaultLocale(const Locale*)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_WITH_ONE_WAY</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">locid.h</td><td class="proto">void icu::Locale::canonicalize(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Iter, Iter)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesViaConverter(Iter, Iter, Conv)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">Locale icu::LocaleMatcher::Result::makeResolvedLocale(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">LocaleMatcher icu::LocaleMatcher::Builder::build(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">LocaleMatcher&amp; icu::LocaleMatcher::operator=(LocaleMatcher&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Result icu::LocaleMatcher::getBestMatchResult(Locale::Iterator&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">Result icu::LocaleMatcher::getBestMatchResult(const Locale&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Result&amp; icu::LocaleMatcher::Result::operator=(Result&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">UBool icu::LocaleMatcher::Builder::copyErrorTo(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::Result::getDesiredLocale() const</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::Result::getSupportedLocale() const</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatch(Locale::Iterator&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatch(const Locale&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">const Locale* icu::LocaleMatcher::getBestMatchForListString(StringPiece, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_NONE</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_REGION</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_LANGUAGE</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_SCRIPT</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::Builder()</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::Builder(Builder&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Builder::~Builder()</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::LocaleMatcher(LocaleMatcher&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Result::Result(Result&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::Result::~Result()</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">icu::LocaleMatcher::~LocaleMatcher()</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">int32_t icu::LocaleMatcher::Result::getDesiredIndex() const</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">int32_t icu::LocaleMatcher::Result::getSupportedIndex() const</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">locid.h</td><td class="proto">UBool icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::hasNext() const override</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">locid.h</td><td class="proto">UBool icu::Locale::Iterator::hasNext() const</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">locid.h</td><td class="proto">UBool icu::Locale::RangeIterator&lt; Iter &gt;::hasNext() const override</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">locid.h</td><td class="proto">const Locale&amp; icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::next() override</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">locid.h</td><td class="proto">const Locale&amp; icu::Locale::Iterator::next()</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">locid.h</td><td class="proto">const Locale&amp; icu::Locale::RangeIterator&lt; Iter &gt;::next() override</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">locid.h</td><td class="proto">icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::ConvertingIterator(Iter, Iter, Conv)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">locid.h</td><td class="proto">icu::Locale::Iterator::~Iterator()</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">locid.h</td><td class="proto">icu::Locale::RangeIterator&lt; Iter &gt;::RangeIterator(Iter, Iter)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
 <td class="file">measfmt.h</td><td class="proto">void icu::MeasureFormat::parseObject(const UnicodeString&amp;, Formattable&amp;, ParsePosition&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 53</td>
 </tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::product(const MeasureUnit&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
+</tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBar()</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::reciprocal(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDecade()</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withDimensionality(int32_t, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerCentimeter()</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withSIPrefix(UMeasureSIPrefix, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerInch()</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">measunit.h</td><td class="proto">MeasureUnit&amp; icu::MeasureUnit::operator=(MeasureUnit&amp;&amp;) noexcept</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEm()</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">measunit.h</td><td class="proto">UMeasureSIPrefix icu::MeasureUnit::getSIPrefix(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapixel()</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">measunit.h</td><td class="proto">UMeasureUnitComplexity icu::MeasureUnit::getComplexity(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPascal()</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">measunit.h</td><td class="proto">const char* icu::MeasureUnit::getIdentifier() const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixel()</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">measunit.h</td><td class="proto">icu::MeasureUnit::MeasureUnit(MeasureUnit&amp;&amp;) noexcept</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerCentimeter()</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">measunit.h</td><td class="proto">int32_t icu::MeasureUnit::getDimensionality(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerInch()</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::forIdentifier(StringPiece, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getThermUs()</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const char8_t*)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createBar(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDecade(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const std::u8string&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerCentimeter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(std::nullptr_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerInch(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">stringpiece.h</td><td class="proto">int32_t icu::StringPiece::compare(StringPiece)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEm(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">stringpiece.h</td><td class="proto">int32_t icu::StringPiece::find(StringPiece, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapixel(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">stringpiece.h</td><td class="proto">void icu::StringPiece::set(const char8_t*)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPascal(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">stringpiece.h</td><td class="proto">void icu::StringPiece::set(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixel(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_11</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerCentimeter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_12</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerInch(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_23</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createThermUs(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_24</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">nounit.h</td><td class="proto">UClassID icu::NoUnit::getDynamicClassID() const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
+<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_formatCalendarToResult(const UDateIntervalFormat*, UCalendar*, UCalendar*, UFormattedDateInterval*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">nounit.h</td><td class="proto">icu::NoUnit::NoUnit(const NoUnit&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
+<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_formatToResult(const UDateIntervalFormat*, UDate, UDate, UFormattedDateInterval*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">nounit.h</td><td class="proto">icu::NoUnit::~NoUnit()</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">nounit.h</td><td class="proto"><tt>static</tt> NoUnit icu::NoUnit::base()</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">nounit.h</td><td class="proto"><tt>static</tt> NoUnit icu::NoUnit::percent()</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">nounit.h</td><td class="proto"><tt>static</tt> NoUnit icu::NoUnit::permille()</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">nounit.h</td><td class="proto"><tt>static</tt> UClassID icu::NoUnit::getStaticClassID()</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
-</tr>
-<tr class="row1">
-<td class="file">nounit.h</td><td class="proto">void* icu::NoUnit::clone() const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">StringClass icu::number::FormattedNumber::toDecimalNumber(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
-</tr>
-<tr class="row1">
-<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_HOUR</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">reldatefmt.h</td><td class="proto"><tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_MINUTE</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(T)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">ucal.h</td><td class="proto">int32_t ucal_getHostTimeZone(UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">ucharstrie.h</td><td class="proto">UCharsTrie&amp; icu::UCharsTrie::resetToState64(uint64_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">ucharstrie.h</td><td class="proto">uint64_t icu::UCharsTrie::getState64() const</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">uloc.h</td><td class="proto">UEnumeration* uloc_openAvailableByType(ULocAvailableType, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_DEFAULT</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row1">
-<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_ONLY_LEGACY_ALIASES</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
-</tr>
-<tr class="row0">
-<td class="file">uloc.h</td><td class="proto"><tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_WITH_LEGACY_ALIASES</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">udatpg.h</td><td class="proto">UDateFormatHourCycle udatpg_getDefaultHourCycle(const UDateTimePatternGenerator*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row1">
 <td class="file">uregex.h</td><td class="proto"><tt>enum</tt> URegexpFlag::UREGEX_CANON_EQ</td><td class="" colspan="2" align="center">Draft<br>ICU 2.4</td>
 </tr>
 <tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_BUNDLE</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_BREAK_ENGINE</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_DATA_FILE</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_CHARACTER</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RESOURCE</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_LINE</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RES_FILE</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_SENTENCE</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 <tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_START</td><td class="" colspan="2" align="center">Draft<br>ICU 65</td>
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_TITLE</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
+</tr>
+<tr class="row1">
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_WORD</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
+</tr>
+<tr class="row0">
+<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_START</td><td class="" colspan="2" align="center">Draft<br>ICU 67</td>
 </tr>
 </table>
 </div>
@@ -2584,7 +1178,7 @@
 <a href="#_top">(jump back to top)</a>
 <hr>
 <p>
-<i><font size="-1">Contents generated by StableAPI tool on Fri Apr 03 07:26:43 PDT 2020<br>
+<i><font size="-1">Contents generated by StableAPI tool on Fri Oct 23 11:35:16 PDT 2020<br>
         Copyright &copy; 2017 and later: Unicode, Inc. and others.<br>
         License &amp; terms of use: http://www.unicode.org/copyright.html
     </font></i>
diff --git a/icu4c/APIChangeReport.md b/icu4c/APIChangeReport.md
index c375408..5385904 100644
--- a/icu4c/APIChangeReport.md
+++ b/icu4c/APIChangeReport.md
@@ -5,862 +5,381 @@
  License & terms of use: http://www.unicode.org/copyright.html
 -->
 
-# ICU4C API Comparison: ICU 66 with ICU 67
+# ICU4C API Comparison: ICU 67 with ICU 68
 
 > _Note_ Markdown format of this document is new for ICU 65.
 
-- [Removed from ICU 66](#removed)
-- [Deprecated or Obsoleted in ICU 67](#deprecated)
-- [Changed in  ICU 67](#changed)
-- [Promoted to stable in ICU 67](#promoted)
-- [Added in ICU 67](#added)
-- [Other existing drafts in ICU 67](#other)
+- [Removed from ICU 67](#removed)
+- [Deprecated or Obsoleted in ICU 68](#deprecated)
+- [Changed in  ICU 68](#changed)
+- [Promoted to stable in ICU 68](#promoted)
+- [Added in ICU 68](#added)
+- [Other existing drafts in ICU 68](#other)
 - [Signature Simplifications](#simplifications)
 
 ## Removed
 
-Removed from ICU 66
+Removed from ICU 67
   
-| File | API | ICU 66 | ICU 67 |
+| File | API | ICU 67 | ICU 68 |
 |---|---|---|---|
-| listformatter.h | UnicodeString&amp; icu::ListFormatter::format(const UnicodeString items[], int32_t, UnicodeString&amp;, FieldPositionIterator*, UErrorCode&amp;) const |  DraftICU 63 | (missing)
-| numberformatter.h | UBool icu::number::FormattedNumber::nextFieldPosition(FieldPosition&amp;, UErrorCode&amp;) const |  DraftICU 62 | (missing)
-| numberformatter.h | void icu::number::FormattedNumber::getAllFieldPositions(FieldPositionIterator&amp;, UErrorCode&amp;) const |  DraftICU 62 | (missing)
-| numberrangeformatter.h | UBool icu::number::FormattedNumberRange::nextFieldPosition(FieldPosition&amp;, UErrorCode&amp;) const |  DraftICU 63 | (missing)
-| numberrangeformatter.h | void icu::number::FormattedNumberRange::getAllFieldPositions(FieldPositionIterator&amp;, UErrorCode&amp;) const |  DraftICU 63 | (missing)
-| udateintervalformat.h | void udtitvfmt_formatToResult(const UDateIntervalFormat*, UFormattedDateInterval*, UDate, UDate, UErrorCode*) |  DraftICU 64 | (missing)
+| fmtable.h | const UFormattable* icu::Formattable::toUFormattable() |  StableICU 52 | (missing)
+| measunit.h | LocalArray&lt;MeasureUnit&gt; icu::MeasureUnit::splitToSingleUnits(int32_t&amp;, UErrorCode&amp;) const |  InternalICU 67 | (missing)
+| measunit.h | int32_t icu::MeasureUnit::getIndex() const |  Internal | (missing)
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::resolveUnitPerUnit(const MeasureUnit&amp;, const MeasureUnit&amp;, bool*) |  Internal | (missing)
+| measunit.h | <tt>static</tt> int32_t icu::MeasureUnit::getIndexCount() |  Internal | (missing)
+| measunit.h | <tt>static</tt> int32_t icu::MeasureUnit::internalGetIndexForTypeAndSubtype(const char*, const char*) |  Internal | (missing)
+| nounit.h | UClassID icu::NoUnit::getDynamicClassID() const |  DraftICU 60 | (missing)
+| nounit.h | icu::NoUnit::NoUnit(const NoUnit&amp;) |  DraftICU 60 | (missing)
+| nounit.h | icu::NoUnit::~NoUnit() |  DraftICU 60 | (missing)
+| nounit.h | <tt>static</tt> NoUnit icu::NoUnit::base() |  DraftICU 60 | (missing)
+| nounit.h | <tt>static</tt> NoUnit icu::NoUnit::percent() |  DraftICU 60 | (missing)
+| nounit.h | <tt>static</tt> NoUnit icu::NoUnit::permille() |  DraftICU 60 | (missing)
+| nounit.h | <tt>static</tt> UClassID icu::NoUnit::getStaticClassID() |  DraftICU 60 | (missing)
+| nounit.h | void* icu::NoUnit::clone() const |  DraftICU 60 | (missing)
+| uniset.h | const USet* icu::UnicodeSet::toUSet() |  StableICU 4.2 | (missing)
 
 ## Deprecated
 
-Deprecated or Obsoleted in ICU 67
+Deprecated or Obsoleted in ICU 68
   
-| File | API | ICU 66 | ICU 67 |
+| File | API | ICU 67 | ICU 68 |
 |---|---|---|---|
+| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&amp;) const |  DraftICU 63 | DeprecatedICU 68
+| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&amp;) const |  DraftICU 63 | DeprecatedICU 68
+| umachine.h | <tt>#define</tt> FALSE |  StableICU 2.0 | DeprecatedICU 68
+| umachine.h | <tt>#define</tt> TRUE |  StableICU 2.0 | DeprecatedICU 68
 
 ## Changed
 
-Changed in  ICU 67 (old, new)
+Changed in  ICU 68 (old, new)
 
 
   
-| File | API | ICU 66 | ICU 67 |
+| File | API | ICU 67 | ICU 68 |
 |---|---|---|---|
-| currunit.h | icu::CurrencyUnit::CurrencyUnit(StringPiece, UErrorCode&amp;) |  Draft→StableICU 64
-| decimfmt.h | UBool icu::DecimalFormat::isFormatFailIfMoreThanMaxDigits() const |  Draft→StableICU 64
-| decimfmt.h | UBool icu::DecimalFormat::isParseCaseSensitive() const |  Draft→StableICU 64
-| decimfmt.h | UBool icu::DecimalFormat::isParseNoExponent() const |  Draft→StableICU 64
-| decimfmt.h | UBool icu::DecimalFormat::isSignAlwaysShown() const |  Draft→StableICU 64
-| decimfmt.h | const number::LocalizedNumberFormatter* icu::DecimalFormat::toNumberFormatter(UErrorCode&amp;) const |  Draft→StableICU 64
-| decimfmt.h | int32_t icu::DecimalFormat::getMinimumGroupingDigits() const |  Draft→StableICU 64
-| decimfmt.h | void icu::DecimalFormat::setFormatFailIfMoreThanMaxDigits(UBool) |  Draft→StableICU 64
-| decimfmt.h | void icu::DecimalFormat::setMinimumGroupingDigits(int32_t) |  Draft→StableICU 64
-| decimfmt.h | void icu::DecimalFormat::setParseCaseSensitive(UBool) |  Draft→StableICU 64
-| decimfmt.h | void icu::DecimalFormat::setParseNoExponent(UBool) |  Draft→StableICU 64
-| decimfmt.h | void icu::DecimalFormat::setSignAlwaysShown(UBool) |  Draft→StableICU 64
-| dtitvfmt.h | Appendable&amp; icu::FormattedDateInterval::appendTo(Appendable&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| dtitvfmt.h | FormattedDateInterval icu::DateIntervalFormat::formatToValue(Calendar&amp;, Calendar&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| dtitvfmt.h | FormattedDateInterval icu::DateIntervalFormat::formatToValue(const DateInterval&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| dtitvfmt.h | FormattedDateInterval&amp; icu::FormattedDateInterval::operator=(FormattedDateInterval&amp;&amp;) |  Draft→StableICU 64
-| dtitvfmt.h | UBool icu::FormattedDateInterval::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| dtitvfmt.h | UnicodeString icu::FormattedDateInterval::toString(UErrorCode&amp;) const |  Draft→StableICU 64
-| dtitvfmt.h | UnicodeString icu::FormattedDateInterval::toTempString(UErrorCode&amp;) const |  Draft→StableICU 64
-| dtitvfmt.h | icu::FormattedDateInterval::FormattedDateInterval() |  Draft→StableICU 64
-| dtitvfmt.h | icu::FormattedDateInterval::FormattedDateInterval(FormattedDateInterval&amp;&amp;) |  Draft→StableICU 64
-| dtitvfmt.h | icu::FormattedDateInterval::~FormattedDateInterval() |  Draft→StableICU 64
-| formattedvalue.h | Appendable&amp; icu::FormattedValue::appendTo(Appendable&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| formattedvalue.h | UBool icu::ConstrainedFieldPosition::matchesField(int32_t, int32_t) const |  Draft→StableICU 64
-| formattedvalue.h | UBool icu::FormattedValue::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| formattedvalue.h | UnicodeString icu::FormattedValue::toString(UErrorCode&amp;) const |  Draft→StableICU 64
-| formattedvalue.h | UnicodeString icu::FormattedValue::toTempString(UErrorCode&amp;) const |  Draft→StableICU 64
-| formattedvalue.h | icu::ConstrainedFieldPosition::ConstrainedFieldPosition() |  Draft→StableICU 64
-| formattedvalue.h | icu::ConstrainedFieldPosition::~ConstrainedFieldPosition() |  Draft→StableICU 64
-| formattedvalue.h | icu::FormattedValue::~FormattedValue() |  Draft→StableICU 64
-| formattedvalue.h | int32_t icu::ConstrainedFieldPosition::getCategory() const |  Draft→StableICU 64
-| formattedvalue.h | int32_t icu::ConstrainedFieldPosition::getField() const |  Draft→StableICU 64
-| formattedvalue.h | int32_t icu::ConstrainedFieldPosition::getLimit() const |  Draft→StableICU 64
-| formattedvalue.h | int32_t icu::ConstrainedFieldPosition::getStart() const |  Draft→StableICU 64
-| formattedvalue.h | int64_t icu::ConstrainedFieldPosition::getInt64IterationContext() const |  Draft→StableICU 64
-| formattedvalue.h | void icu::ConstrainedFieldPosition::constrainCategory(int32_t) |  Draft→StableICU 64
-| formattedvalue.h | void icu::ConstrainedFieldPosition::constrainField(int32_t, int32_t) |  Draft→StableICU 64
-| formattedvalue.h | void icu::ConstrainedFieldPosition::reset() |  Draft→StableICU 64
-| formattedvalue.h | void icu::ConstrainedFieldPosition::setInt64IterationContext(int64_t) |  Draft→StableICU 64
-| formattedvalue.h | void icu::ConstrainedFieldPosition::setState(int32_t, int32_t, int32_t, int32_t) |  Draft→StableICU 64
-| listformatter.h | Appendable&amp; icu::FormattedList::appendTo(Appendable&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| listformatter.h | FormattedList icu::ListFormatter::formatStringsToValue(const UnicodeString items[], int32_t, UErrorCode&amp;) const |  Draft→StableICU 64
-| listformatter.h | FormattedList&amp; icu::FormattedList::operator=(FormattedList&amp;&amp;) |  Draft→StableICU 64
-| listformatter.h | UBool icu::FormattedList::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| listformatter.h | UnicodeString icu::FormattedList::toString(UErrorCode&amp;) const |  Draft→StableICU 64
-| listformatter.h | UnicodeString icu::FormattedList::toTempString(UErrorCode&amp;) const |  Draft→StableICU 64
-| listformatter.h | icu::FormattedList::FormattedList() |  Draft→StableICU 64
-| listformatter.h | icu::FormattedList::FormattedList(FormattedList&amp;&amp;) |  Draft→StableICU 64
-| listformatter.h | icu::FormattedList::~FormattedList() |  Draft→StableICU 64
-| localebuilder.h | Locale icu::LocaleBuilder::build(UErrorCode&amp;) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::addUnicodeLocaleAttribute(StringPiece) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::clear() |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::clearExtensions() |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::removeUnicodeLocaleAttribute(StringPiece) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::setExtension(char, StringPiece) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::setLanguage(StringPiece) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::setLanguageTag(StringPiece) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::setLocale(const Locale&amp;) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::setRegion(StringPiece) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::setScript(StringPiece) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::setUnicodeLocaleKeyword(StringPiece, StringPiece) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::setVariant(StringPiece) |  Draft→StableICU 64
-| localebuilder.h | icu::LocaleBuilder::LocaleBuilder() |  Draft→StableICU 64
-| localebuilder.h | icu::LocaleBuilder::~LocaleBuilder() |  Draft→StableICU 64
-| localpointer.h | LocalArray&lt;T&gt;&amp; icu::LocalArray&lt; T &gt;::operator=(std::unique_ptr&lt; T[]&gt;&amp;&amp;) |  Draft→StableICU 64
-| localpointer.h | LocalPointer&lt;T&gt;&amp; icu::LocalPointer&lt; T &gt;::operator=(std::unique_ptr&lt; T &gt;&amp;&amp;) |  Draft→StableICU 64
-| localpointer.h | icu::LocalArray&lt; T &gt;::LocalArray(std::unique_ptr&lt; T[]&gt;&amp;&amp;) |  Draft→StableICU 64
-| localpointer.h | icu::LocalArray&lt; T &gt;::operator std::unique_ptr&lt; T[]&gt;() &amp;&amp; |  Draft→StableICU 64
-| localpointer.h | icu::LocalPointer&lt; T &gt;::LocalPointer(std::unique_ptr&lt; T &gt;&amp;&amp;) |  Draft→StableICU 64
-| localpointer.h | icu::LocalPointer&lt; T &gt;::operator std::unique_ptr&lt; T &gt;() &amp;&amp; |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getAcre() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getAcreFoot() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getAmpere() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getArcMinute() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getArcSecond() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getAstronomicalUnit() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getAtmosphere() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBarrel() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBit() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBritishThermalUnit() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBushel() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getByte() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCalorie() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCarat() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCelsius() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCentiliter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCentimeter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCentury() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicCentimeter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicFoot() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicInch() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicKilometer() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicMeter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicMile() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicYard() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCup() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCupMetric() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDalton() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDay() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDayPerson() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDeciliter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDecimeter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDegree() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDunam() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthMass() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getElectronvolt() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFahrenheit() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFathom() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFluidOunce() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFluidOunceImperial() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFoodcalorie() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFoot() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFurlong() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGForce() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGallon() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGallonImperial() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGenericTemperature() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGigabit() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGigabyte() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGigahertz() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGigawatt() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGram() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getHectare() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getHectoliter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getHectopascal() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getHertz() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getHorsepower() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getHour() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getInch() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getInchHg() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getJoule() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKarat() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKelvin() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilobit() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilobyte() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilocalorie() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilogram() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilohertz() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilojoule() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilometer() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilometerPerHour() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilopascal() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowatt() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowattHour() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKnot() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLightYear() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLiter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLiterPer100Kilometers() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLiterPerKilometer() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLux() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegabit() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegabyte() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegahertz() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegaliter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapascal() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegawatt() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMeter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMeterPerSecond() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMeterPerSecondSquared() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMetricTon() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMicrogram() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMicrometer() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMicrosecond() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMile() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilePerGallon() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilePerGallonImperial() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilePerHour() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMileScandinavian() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilliampere() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMillibar() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligram() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligramPerDeciliter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilliliter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMillimeter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMillimeterOfMercury() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMillimolePerLiter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMillisecond() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilliwatt() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMinute() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMole() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMonth() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMonthPerson() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getNanometer() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getNanosecond() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getNauticalMile() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getNewton() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getNewtonMeter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getOhm() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getOunce() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getOunceTroy() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getParsec() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPartPerMillion() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPercent() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPermille() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPermyriad() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPetabyte() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPicometer() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPint() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPintMetric() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPoint() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPound() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPoundFoot() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPoundForce() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPoundPerSquareInch() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getQuart() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getRadian() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getRevolutionAngle() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSecond() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSolarLuminosity() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSolarMass() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSolarRadius() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareCentimeter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareFoot() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareInch() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareKilometer() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareMeter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareMile() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareYard() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getStone() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTablespoon() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTeaspoon() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTerabit() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTerabyte() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTon() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getVolt() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getWatt() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getWeek() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getWeekPerson() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getYard() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getYear() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getYearPerson() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createBarrel(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createBritishThermalUnit(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDalton(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDayPerson(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDunam(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthMass(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createElectronvolt(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createFluidOunceImperial(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createKilopascal(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapascal(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMole(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMonthPerson(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createNewton(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createNewtonMeter(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPermyriad(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPoundFoot(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPoundForce(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createSolarLuminosity(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createSolarMass(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createSolarRadius(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createWeekPerson(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createYearPerson(UErrorCode&amp;) |  Draft→StableICU 64
-| numberformatter.h | LocalPointer&lt;Derived&gt; icu::number::NumberFormatterSettings&lt; Derived &gt;::clone() &amp;&amp; |  Draft→StableICU 64
-| numberformatter.h | LocalPointer&lt;Derived&gt; icu::number::NumberFormatterSettings&lt; Derived &gt;::clone() const &amp; |  Draft→StableICU 64
-| numberformatter.h | UBool icu::number::FormattedNumber::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| numberformatter.h | UnicodeString icu::number::FormattedNumber::toTempString(UErrorCode&amp;) const |  Draft→StableICU 64
-| numberformatter.h | icu::number::FormattedNumber::FormattedNumber() |  Draft→StableICU 64
-| numberformatter.h | <tt>static</tt> UnlocalizedNumberFormatter icu::number::NumberFormatter::forSkeleton(const UnicodeString&amp;, UParseError&amp;, UErrorCode&amp;) |  Draft→StableICU 64
-| numberrangeformatter.h | LocalPointer&lt;Derived&gt; icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::clone() &amp;&amp; |  Draft→StableICU 64
-| numberrangeformatter.h | LocalPointer&lt;Derived&gt; icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::clone() const &amp; |  Draft→StableICU 64
-| numberrangeformatter.h | UBool icu::number::FormattedNumberRange::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::toTempString(UErrorCode&amp;) const |  Draft→StableICU 64
-| numfmt.h | <tt>enum</tt>  							icu::NumberFormat::EAlignmentFields::kCompactField |  Draft→StableICU 64
-| numfmt.h | <tt>enum</tt>  							icu::NumberFormat::EAlignmentFields::kMeasureUnitField |  Draft→StableICU 64
-| plurrule.h | UnicodeString icu::PluralRules::select(const number::FormattedNumber&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| reldatefmt.h | Appendable&amp; icu::FormattedRelativeDateTime::appendTo(Appendable&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| reldatefmt.h | FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatNumericToValue(double, URelativeDateTimeUnit, UErrorCode&amp;) const |  Draft→StableICU 64
-| reldatefmt.h | FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(UDateDirection, UDateAbsoluteUnit, UErrorCode&amp;) const |  Draft→StableICU 64
-| reldatefmt.h | FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(double, UDateDirection, UDateRelativeUnit, UErrorCode&amp;) const |  Draft→StableICU 64
-| reldatefmt.h | FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(double, URelativeDateTimeUnit, UErrorCode&amp;) const |  Draft→StableICU 64
-| reldatefmt.h | FormattedRelativeDateTime&amp; icu::FormattedRelativeDateTime::operator=(FormattedRelativeDateTime&amp;&amp;) |  Draft→StableICU 64
-| reldatefmt.h | UBool icu::FormattedRelativeDateTime::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| reldatefmt.h | UnicodeString icu::FormattedRelativeDateTime::toString(UErrorCode&amp;) const |  Draft→StableICU 64
-| reldatefmt.h | UnicodeString icu::FormattedRelativeDateTime::toTempString(UErrorCode&amp;) const |  Draft→StableICU 64
-| reldatefmt.h | icu::FormattedRelativeDateTime::FormattedRelativeDateTime() |  Draft→StableICU 64
-| reldatefmt.h | icu::FormattedRelativeDateTime::FormattedRelativeDateTime(FormattedRelativeDateTime&amp;&amp;) |  Draft→StableICU 64
-| reldatefmt.h | icu::FormattedRelativeDateTime::~FormattedRelativeDateTime() |  Draft→StableICU 64
-| udateintervalformat.h | UFormattedDateInterval* udtitvfmt_openResult(UErrorCode*) |  Draft→StableICU 64
-| udateintervalformat.h | const UFormattedValue* udtitvfmt_resultAsValue(const UFormattedDateInterval*, UErrorCode*) |  Draft→StableICU 64
-| udateintervalformat.h | void udtitvfmt_closeResult(UFormattedDateInterval*) |  Draft→StableICU 64
-| uformattedvalue.h | UBool ucfpos_matchesField(const UConstrainedFieldPosition*, int32_t, int32_t, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | UBool ufmtval_nextPosition(const UFormattedValue*, UConstrainedFieldPosition*, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | UConstrainedFieldPosition* ucfpos_open(UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | const UChar* ufmtval_getString(const UFormattedValue*, int32_t*, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_DATE_INTERVAL_SPAN |  Draft→StableICU 64
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_DATE |  Draft→StableICU 64
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_LIST_SPAN |  Draft→StableICU 64
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_LIST |  Draft→StableICU 64
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_NUMBER |  Draft→StableICU 64
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_RELATIVE_DATETIME |  Draft→StableICU 64
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_UNDEFINED |  Draft→StableICU 64
-| uformattedvalue.h | int32_t ucfpos_getCategory(const UConstrainedFieldPosition*, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | int32_t ucfpos_getField(const UConstrainedFieldPosition*, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | int64_t ucfpos_getInt64IterationContext(const UConstrainedFieldPosition*, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | void ucfpos_close(UConstrainedFieldPosition*) |  Draft→StableICU 64
-| uformattedvalue.h | void ucfpos_constrainCategory(UConstrainedFieldPosition*, int32_t, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | void ucfpos_constrainField(UConstrainedFieldPosition*, int32_t, int32_t, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | void ucfpos_getIndexes(const UConstrainedFieldPosition*, int32_t*, int32_t*, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | void ucfpos_reset(UConstrainedFieldPosition*, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | void ucfpos_setInt64IterationContext(UConstrainedFieldPosition*, int64_t, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | void ucfpos_setState(UConstrainedFieldPosition*, int32_t, int32_t, int32_t, int32_t, UErrorCode*) |  Draft→StableICU 64
-| ulistformatter.h | UFormattedList* ulistfmt_openResult(UErrorCode*) |  Draft→StableICU 64
-| ulistformatter.h | const UFormattedValue* ulistfmt_resultAsValue(const UFormattedList*, UErrorCode*) |  Draft→StableICU 64
-| ulistformatter.h | <tt>enum</tt> UListFormatterField::ULISTFMT_ELEMENT_FIELD |  Draft→StableICU 63
-| ulistformatter.h | <tt>enum</tt> UListFormatterField::ULISTFMT_LITERAL_FIELD |  Draft→StableICU 63
-| ulistformatter.h | void ulistfmt_closeResult(UFormattedList*) |  Draft→StableICU 64
-| ulistformatter.h | void ulistfmt_formatStringsToResult(const UListFormatter*, const UChar* const strings[], const int32_t*, int32_t, UFormattedList*, UErrorCode*) |  Draft→StableICU 64
-| unum.h | <tt>enum</tt> UNumberFormatAttribute::UNUM_MINIMUM_GROUPING_DIGITS |  Draft→StableICU 64
-| unum.h | <tt>enum</tt> UNumberFormatAttribute::UNUM_PARSE_CASE_SENSITIVE |  Draft→StableICU 64
-| unum.h | <tt>enum</tt> UNumberFormatAttribute::UNUM_SIGN_ALWAYS_SHOWN |  Draft→StableICU 64
-| unum.h | <tt>enum</tt> UNumberFormatFields::UNUM_COMPACT_FIELD |  Draft→StableICU 64
-| unum.h | <tt>enum</tt> UNumberFormatFields::UNUM_MEASURE_UNIT_FIELD |  Draft→StableICU 64
-| unumberformatter.h | UNumberFormatter* unumf_openForSkeletonAndLocaleWithError(const UChar*, int32_t, const char*, UParseError*, UErrorCode*) |  Draft→StableICU 64
-| unumberformatter.h | const UFormattedValue* unumf_resultAsValue(const UFormattedNumber*, UErrorCode*) |  Draft→StableICU 64
-| upluralrules.h | int32_t uplrules_selectFormatted(const UPluralRules*, const struct UFormattedNumber*, UChar*, int32_t, UErrorCode*) |  Draft→StableICU 64
-| ureldatefmt.h | UFormattedRelativeDateTime* ureldatefmt_openResult(UErrorCode*) |  Draft→StableICU 64
-| ureldatefmt.h | const UFormattedValue* ureldatefmt_resultAsValue(const UFormattedRelativeDateTime*, UErrorCode*) |  Draft→StableICU 64
-| ureldatefmt.h | <tt>enum</tt> URelativeDateTimeFormatterField::UDAT_REL_LITERAL_FIELD |  Draft→StableICU 64
-| ureldatefmt.h | <tt>enum</tt> URelativeDateTimeFormatterField::UDAT_REL_NUMERIC_FIELD |  Draft→StableICU 64
-| ureldatefmt.h | void ureldatefmt_closeResult(UFormattedRelativeDateTime*) |  Draft→StableICU 64
-| ureldatefmt.h | void ureldatefmt_formatNumericToResult(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UFormattedRelativeDateTime*, UErrorCode*) |  Draft→StableICU 64
-| ureldatefmt.h | void ureldatefmt_formatToResult(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UFormattedRelativeDateTime*, UErrorCode*) |  Draft→StableICU 64
+| bytestrie.h | BytesTrie&amp; icu::BytesTrie::resetToState64(uint64_t) |  Draft→StableICU 65
+| bytestrie.h | uint64_t icu::BytesTrie::getState64() const |  Draft→StableICU 65
+| listformatter.h | <tt>static</tt> ListFormatter* icu::ListFormatter::createInstance(const Locale&amp;, UListFormatterType, UListFormatterWidth, UErrorCode&amp;) |  Draft→StableICU 67
+| localebuilder.h | UBool icu::LocaleBuilder::copyErrorTo(UErrorCode&amp;) const |  Draft→StableICU 65
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::addSupportedLocale(const Locale&amp;) |  Draft→StableICU 65
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::operator=(Builder&amp;&amp;) |  Draft→StableICU 65
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setDefaultLocale(const Locale*) |  Draft→StableICU 65
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion) |  Draft→StableICU 65
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag) |  Draft→StableICU 65
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Iter, Iter) |  Draft→StableICU 65
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator&amp;) |  Draft→StableICU 65
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece) |  Draft→StableICU 65
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesViaConverter(Iter, Iter, Conv) |  Draft→StableICU 65
+| localematcher.h | Locale icu::LocaleMatcher::Result::makeResolvedLocale(UErrorCode&amp;) const |  Draft→StableICU 65
+| localematcher.h | LocaleMatcher icu::LocaleMatcher::Builder::build(UErrorCode&amp;) const |  Draft→StableICU 65
+| localematcher.h | LocaleMatcher&amp; icu::LocaleMatcher::operator=(LocaleMatcher&amp;&amp;) |  Draft→StableICU 65
+| localematcher.h | Result icu::LocaleMatcher::getBestMatchResult(Locale::Iterator&amp;, UErrorCode&amp;) const |  Draft→StableICU 65
+| localematcher.h | Result icu::LocaleMatcher::getBestMatchResult(const Locale&amp;, UErrorCode&amp;) const |  Draft→StableICU 65
+| localematcher.h | Result&amp; icu::LocaleMatcher::Result::operator=(Result&amp;&amp;) |  Draft→StableICU 65
+| localematcher.h | UBool icu::LocaleMatcher::Builder::copyErrorTo(UErrorCode&amp;) const |  Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::Result::getDesiredLocale() const |  Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::Result::getSupportedLocale() const |  Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatch(Locale::Iterator&amp;, UErrorCode&amp;) const |  Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatch(const Locale&amp;, UErrorCode&amp;) const |  Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatchForListString(StringPiece, UErrorCode&amp;) const |  Draft→StableICU 65
+| localematcher.h | <tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_NONE |  Draft→StableICU 65
+| localematcher.h | <tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_REGION |  Draft→StableICU 65
+| localematcher.h | <tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_LANGUAGE |  Draft→StableICU 65
+| localematcher.h | <tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_SCRIPT |  Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Builder::Builder() |  Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Builder::Builder(Builder&amp;&amp;) |  Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Builder::~Builder() |  Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::LocaleMatcher(LocaleMatcher&amp;&amp;) |  Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Result::Result(Result&amp;&amp;) |  Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Result::~Result() |  Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::~LocaleMatcher() |  Draft→StableICU 65
+| localematcher.h | int32_t icu::LocaleMatcher::Result::getDesiredIndex() const |  Draft→StableICU 65
+| localematcher.h | int32_t icu::LocaleMatcher::Result::getSupportedIndex() const |  Draft→StableICU 65
+| locid.h | UBool icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::hasNext() const override |  Draft→StableICU 65
+| locid.h | UBool icu::Locale::Iterator::hasNext() const |  Draft→StableICU 65
+| locid.h | UBool icu::Locale::RangeIterator&lt; Iter &gt;::hasNext() const override |  Draft→StableICU 65
+| locid.h | const Locale&amp; icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::next() override |  Draft→StableICU 65
+| locid.h | const Locale&amp; icu::Locale::Iterator::next() |  Draft→StableICU 65
+| locid.h | const Locale&amp; icu::Locale::RangeIterator&lt; Iter &gt;::next() override |  Draft→StableICU 65
+| locid.h | icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::ConvertingIterator(Iter, Iter, Conv) |  Draft→StableICU 65
+| locid.h | icu::Locale::Iterator::~Iterator() |  Draft→StableICU 65
+| locid.h | icu::Locale::RangeIterator&lt; Iter &gt;::RangeIterator(Iter, Iter) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBar() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDecade() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerCentimeter() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerInch() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getEm() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapixel() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPascal() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixel() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerCentimeter() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerInch() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getThermUs() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createBar(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDecade(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerCentimeter(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerInch(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEm(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapixel(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPascal(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixel(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerCentimeter(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerInch(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createThermUs(UErrorCode&amp;) |  Draft→StableICU 65
+| numberformatter.h | StringClass icu::number::FormattedNumber::toDecimalNumber(UErrorCode&amp;) const |  Draft→StableICU 65
+| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&amp;) const |  DraftICU 63 | DeprecatedICU 68
+| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&amp;) const |  DraftICU 63 | DeprecatedICU 68
+| reldatefmt.h | <tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_HOUR |  Draft→StableICU 65
+| reldatefmt.h | <tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_MINUTE |  Draft→StableICU 65
+| stringpiece.h | icu::StringPiece::StringPiece(T) |  Draft→StableICU 65
+| ucal.h | int32_t ucal_getHostTimeZone(UChar*, int32_t, UErrorCode*) |  Draft→StableICU 65
+| ucharstrie.h | UCharsTrie&amp; icu::UCharsTrie::resetToState64(uint64_t) |  Draft→StableICU 65
+| ucharstrie.h | uint64_t icu::UCharsTrie::getState64() const |  Draft→StableICU 65
+| ulistformatter.h | UListFormatter* ulistfmt_openForType(const char*, UListFormatterType, UListFormatterWidth, UErrorCode*) |  Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_AND |  Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_OR |  Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_UNITS |  Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_NARROW |  Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_SHORT |  Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_WIDE |  Draft→StableICU 67
+| uloc.h | UEnumeration* uloc_openAvailableByType(ULocAvailableType, UErrorCode*) |  Draft→StableICU 65
+| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_DEFAULT |  Draft→StableICU 65
+| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_ONLY_LEGACY_ALIASES |  Draft→StableICU 65
+| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_WITH_LEGACY_ALIASES |  Draft→StableICU 65
+| umachine.h | <tt>#define</tt> FALSE |  StableICU 2.0 | DeprecatedICU 68
+| umachine.h | <tt>#define</tt> TRUE |  StableICU 2.0 | DeprecatedICU 68
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_BUNDLE |  Draft→StableICU 65
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_DATA_FILE |  Draft→StableICU 65
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RES_FILE |  Draft→StableICU 65
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_START |  Draft→StableICU 65
 
 ## Promoted
 
-Promoted to stable in ICU 67
+Promoted to stable in ICU 68
   
-| File | API | ICU 66 | ICU 67 |
+| File | API | ICU 67 | ICU 68 |
 |---|---|---|---|
-| currunit.h | icu::CurrencyUnit::CurrencyUnit(StringPiece, UErrorCode&amp;) |  Draft→StableICU 64
-| decimfmt.h | UBool icu::DecimalFormat::isFormatFailIfMoreThanMaxDigits() const |  Draft→StableICU 64
-| decimfmt.h | UBool icu::DecimalFormat::isParseCaseSensitive() const |  Draft→StableICU 64
-| decimfmt.h | UBool icu::DecimalFormat::isParseNoExponent() const |  Draft→StableICU 64
-| decimfmt.h | UBool icu::DecimalFormat::isSignAlwaysShown() const |  Draft→StableICU 64
-| decimfmt.h | const number::LocalizedNumberFormatter* icu::DecimalFormat::toNumberFormatter(UErrorCode&amp;) const |  Draft→StableICU 64
-| decimfmt.h | int32_t icu::DecimalFormat::getMinimumGroupingDigits() const |  Draft→StableICU 64
-| decimfmt.h | void icu::DecimalFormat::setFormatFailIfMoreThanMaxDigits(UBool) |  Draft→StableICU 64
-| decimfmt.h | void icu::DecimalFormat::setMinimumGroupingDigits(int32_t) |  Draft→StableICU 64
-| decimfmt.h | void icu::DecimalFormat::setParseCaseSensitive(UBool) |  Draft→StableICU 64
-| decimfmt.h | void icu::DecimalFormat::setParseNoExponent(UBool) |  Draft→StableICU 64
-| decimfmt.h | void icu::DecimalFormat::setSignAlwaysShown(UBool) |  Draft→StableICU 64
-| dtitvfmt.h | Appendable&amp; icu::FormattedDateInterval::appendTo(Appendable&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| dtitvfmt.h | FormattedDateInterval icu::DateIntervalFormat::formatToValue(Calendar&amp;, Calendar&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| dtitvfmt.h | FormattedDateInterval icu::DateIntervalFormat::formatToValue(const DateInterval&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| dtitvfmt.h | FormattedDateInterval&amp; icu::FormattedDateInterval::operator=(FormattedDateInterval&amp;&amp;) |  Draft→StableICU 64
-| dtitvfmt.h | UBool icu::FormattedDateInterval::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| dtitvfmt.h | UnicodeString icu::FormattedDateInterval::toString(UErrorCode&amp;) const |  Draft→StableICU 64
-| dtitvfmt.h | UnicodeString icu::FormattedDateInterval::toTempString(UErrorCode&amp;) const |  Draft→StableICU 64
-| dtitvfmt.h | icu::FormattedDateInterval::FormattedDateInterval() |  Draft→StableICU 64
-| dtitvfmt.h | icu::FormattedDateInterval::FormattedDateInterval(FormattedDateInterval&amp;&amp;) |  Draft→StableICU 64
-| dtitvfmt.h | icu::FormattedDateInterval::~FormattedDateInterval() |  Draft→StableICU 64
-| formattedvalue.h | Appendable&amp; icu::FormattedValue::appendTo(Appendable&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| formattedvalue.h | UBool icu::ConstrainedFieldPosition::matchesField(int32_t, int32_t) const |  Draft→StableICU 64
-| formattedvalue.h | UBool icu::FormattedValue::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| formattedvalue.h | UnicodeString icu::FormattedValue::toString(UErrorCode&amp;) const |  Draft→StableICU 64
-| formattedvalue.h | UnicodeString icu::FormattedValue::toTempString(UErrorCode&amp;) const |  Draft→StableICU 64
-| formattedvalue.h | icu::ConstrainedFieldPosition::ConstrainedFieldPosition() |  Draft→StableICU 64
-| formattedvalue.h | icu::ConstrainedFieldPosition::~ConstrainedFieldPosition() |  Draft→StableICU 64
-| formattedvalue.h | icu::FormattedValue::~FormattedValue() |  Draft→StableICU 64
-| formattedvalue.h | int32_t icu::ConstrainedFieldPosition::getCategory() const |  Draft→StableICU 64
-| formattedvalue.h | int32_t icu::ConstrainedFieldPosition::getField() const |  Draft→StableICU 64
-| formattedvalue.h | int32_t icu::ConstrainedFieldPosition::getLimit() const |  Draft→StableICU 64
-| formattedvalue.h | int32_t icu::ConstrainedFieldPosition::getStart() const |  Draft→StableICU 64
-| formattedvalue.h | int64_t icu::ConstrainedFieldPosition::getInt64IterationContext() const |  Draft→StableICU 64
-| formattedvalue.h | void icu::ConstrainedFieldPosition::constrainCategory(int32_t) |  Draft→StableICU 64
-| formattedvalue.h | void icu::ConstrainedFieldPosition::constrainField(int32_t, int32_t) |  Draft→StableICU 64
-| formattedvalue.h | void icu::ConstrainedFieldPosition::reset() |  Draft→StableICU 64
-| formattedvalue.h | void icu::ConstrainedFieldPosition::setInt64IterationContext(int64_t) |  Draft→StableICU 64
-| formattedvalue.h | void icu::ConstrainedFieldPosition::setState(int32_t, int32_t, int32_t, int32_t) |  Draft→StableICU 64
-| listformatter.h | Appendable&amp; icu::FormattedList::appendTo(Appendable&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| listformatter.h | FormattedList icu::ListFormatter::formatStringsToValue(const UnicodeString items[], int32_t, UErrorCode&amp;) const |  Draft→StableICU 64
-| listformatter.h | FormattedList&amp; icu::FormattedList::operator=(FormattedList&amp;&amp;) |  Draft→StableICU 64
-| listformatter.h | UBool icu::FormattedList::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| listformatter.h | UnicodeString icu::FormattedList::toString(UErrorCode&amp;) const |  Draft→StableICU 64
-| listformatter.h | UnicodeString icu::FormattedList::toTempString(UErrorCode&amp;) const |  Draft→StableICU 64
-| listformatter.h | icu::FormattedList::FormattedList() |  Draft→StableICU 64
-| listformatter.h | icu::FormattedList::FormattedList(FormattedList&amp;&amp;) |  Draft→StableICU 64
-| listformatter.h | icu::FormattedList::~FormattedList() |  Draft→StableICU 64
-| localebuilder.h | Locale icu::LocaleBuilder::build(UErrorCode&amp;) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::addUnicodeLocaleAttribute(StringPiece) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::clear() |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::clearExtensions() |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::removeUnicodeLocaleAttribute(StringPiece) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::setExtension(char, StringPiece) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::setLanguage(StringPiece) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::setLanguageTag(StringPiece) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::setLocale(const Locale&amp;) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::setRegion(StringPiece) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::setScript(StringPiece) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::setUnicodeLocaleKeyword(StringPiece, StringPiece) |  Draft→StableICU 64
-| localebuilder.h | LocaleBuilder&amp; icu::LocaleBuilder::setVariant(StringPiece) |  Draft→StableICU 64
-| localebuilder.h | icu::LocaleBuilder::LocaleBuilder() |  Draft→StableICU 64
-| localebuilder.h | icu::LocaleBuilder::~LocaleBuilder() |  Draft→StableICU 64
-| localpointer.h | LocalArray&lt;T&gt;&amp; icu::LocalArray&lt; T &gt;::operator=(std::unique_ptr&lt; T[]&gt;&amp;&amp;) |  Draft→StableICU 64
-| localpointer.h | LocalPointer&lt;T&gt;&amp; icu::LocalPointer&lt; T &gt;::operator=(std::unique_ptr&lt; T &gt;&amp;&amp;) |  Draft→StableICU 64
-| localpointer.h | icu::LocalArray&lt; T &gt;::LocalArray(std::unique_ptr&lt; T[]&gt;&amp;&amp;) |  Draft→StableICU 64
-| localpointer.h | icu::LocalArray&lt; T &gt;::operator std::unique_ptr&lt; T[]&gt;() &amp;&amp; |  Draft→StableICU 64
-| localpointer.h | icu::LocalPointer&lt; T &gt;::LocalPointer(std::unique_ptr&lt; T &gt;&amp;&amp;) |  Draft→StableICU 64
-| localpointer.h | icu::LocalPointer&lt; T &gt;::operator std::unique_ptr&lt; T &gt;() &amp;&amp; |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getAcre() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getAcreFoot() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getAmpere() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getArcMinute() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getArcSecond() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getAstronomicalUnit() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getAtmosphere() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBarrel() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBit() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBritishThermalUnit() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBushel() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getByte() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCalorie() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCarat() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCelsius() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCentiliter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCentimeter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCentury() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicCentimeter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicFoot() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicInch() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicKilometer() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicMeter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicMile() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCubicYard() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCup() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCupMetric() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDalton() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDay() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDayPerson() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDeciliter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDecimeter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDegree() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDunam() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthMass() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getElectronvolt() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFahrenheit() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFathom() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFluidOunce() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFluidOunceImperial() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFoodcalorie() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFoot() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getFurlong() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGForce() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGallon() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGallonImperial() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGenericTemperature() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGigabit() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGigabyte() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGigahertz() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGigawatt() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGram() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getHectare() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getHectoliter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getHectopascal() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getHertz() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getHorsepower() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getHour() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getInch() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getInchHg() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getJoule() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKarat() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKelvin() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilobit() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilobyte() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilocalorie() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilogram() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilohertz() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilojoule() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilometer() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilometerPerHour() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilopascal() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowatt() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowattHour() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKnot() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLightYear() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLiter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLiterPer100Kilometers() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLiterPerKilometer() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLux() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegabit() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegabyte() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegahertz() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegaliter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapascal() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegawatt() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMeter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMeterPerSecond() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMeterPerSecondSquared() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMetricTon() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMicrogram() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMicrometer() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMicrosecond() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMile() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilePerGallon() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilePerGallonImperial() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilePerHour() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMileScandinavian() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilliampere() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMillibar() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligram() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligramPerDeciliter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilliliter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMillimeter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMillimeterOfMercury() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMillimolePerLiter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMillisecond() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilliwatt() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMinute() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMole() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMonth() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMonthPerson() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getNanometer() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getNanosecond() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getNauticalMile() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getNewton() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getNewtonMeter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getOhm() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getOunce() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getOunceTroy() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getParsec() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPartPerMillion() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPercent() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPermille() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPermyriad() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPetabyte() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPicometer() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPint() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPintMetric() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPoint() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPound() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPoundFoot() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPoundForce() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPoundPerSquareInch() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getQuart() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getRadian() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getRevolutionAngle() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSecond() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSolarLuminosity() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSolarMass() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSolarRadius() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareCentimeter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareFoot() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareInch() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareKilometer() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareMeter() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareMile() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getSquareYard() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getStone() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTablespoon() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTeaspoon() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTerabit() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTerabyte() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTon() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getVolt() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getWatt() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getWeek() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getWeekPerson() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getYard() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getYear() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getYearPerson() |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createBarrel(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createBritishThermalUnit(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDalton(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDayPerson(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDunam(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthMass(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createElectronvolt(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createFluidOunceImperial(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createKilopascal(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapascal(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMole(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMonthPerson(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createNewton(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createNewtonMeter(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPermyriad(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPoundFoot(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPoundForce(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createSolarLuminosity(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createSolarMass(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createSolarRadius(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createWeekPerson(UErrorCode&amp;) |  Draft→StableICU 64
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createYearPerson(UErrorCode&amp;) |  Draft→StableICU 64
-| numberformatter.h | LocalPointer&lt;Derived&gt; icu::number::NumberFormatterSettings&lt; Derived &gt;::clone() &amp;&amp; |  Draft→StableICU 64
-| numberformatter.h | LocalPointer&lt;Derived&gt; icu::number::NumberFormatterSettings&lt; Derived &gt;::clone() const &amp; |  Draft→StableICU 64
-| numberformatter.h | UBool icu::number::FormattedNumber::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| numberformatter.h | UnicodeString icu::number::FormattedNumber::toTempString(UErrorCode&amp;) const |  Draft→StableICU 64
-| numberformatter.h | icu::number::FormattedNumber::FormattedNumber() |  Draft→StableICU 64
-| numberformatter.h | <tt>static</tt> UnlocalizedNumberFormatter icu::number::NumberFormatter::forSkeleton(const UnicodeString&amp;, UParseError&amp;, UErrorCode&amp;) |  Draft→StableICU 64
-| numberrangeformatter.h | LocalPointer&lt;Derived&gt; icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::clone() &amp;&amp; |  Draft→StableICU 64
-| numberrangeformatter.h | LocalPointer&lt;Derived&gt; icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::clone() const &amp; |  Draft→StableICU 64
-| numberrangeformatter.h | UBool icu::number::FormattedNumberRange::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::toTempString(UErrorCode&amp;) const |  Draft→StableICU 64
-| numfmt.h | <tt>enum</tt>  							icu::NumberFormat::EAlignmentFields::kCompactField |  Draft→StableICU 64
-| numfmt.h | <tt>enum</tt>  							icu::NumberFormat::EAlignmentFields::kMeasureUnitField |  Draft→StableICU 64
-| numsys.h | NumberingSystem&amp; icu::NumberingSystem::operator=(const NumberingSystem&amp;)=default |  (missing) | StableICU 4.2
-| plurrule.h | UnicodeString icu::PluralRules::select(const number::FormattedNumber&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| reldatefmt.h | Appendable&amp; icu::FormattedRelativeDateTime::appendTo(Appendable&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| reldatefmt.h | FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatNumericToValue(double, URelativeDateTimeUnit, UErrorCode&amp;) const |  Draft→StableICU 64
-| reldatefmt.h | FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(UDateDirection, UDateAbsoluteUnit, UErrorCode&amp;) const |  Draft→StableICU 64
-| reldatefmt.h | FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(double, UDateDirection, UDateRelativeUnit, UErrorCode&amp;) const |  Draft→StableICU 64
-| reldatefmt.h | FormattedRelativeDateTime icu::RelativeDateTimeFormatter::formatToValue(double, URelativeDateTimeUnit, UErrorCode&amp;) const |  Draft→StableICU 64
-| reldatefmt.h | FormattedRelativeDateTime&amp; icu::FormattedRelativeDateTime::operator=(FormattedRelativeDateTime&amp;&amp;) |  Draft→StableICU 64
-| reldatefmt.h | UBool icu::FormattedRelativeDateTime::nextPosition(ConstrainedFieldPosition&amp;, UErrorCode&amp;) const |  Draft→StableICU 64
-| reldatefmt.h | UnicodeString icu::FormattedRelativeDateTime::toString(UErrorCode&amp;) const |  Draft→StableICU 64
-| reldatefmt.h | UnicodeString icu::FormattedRelativeDateTime::toTempString(UErrorCode&amp;) const |  Draft→StableICU 64
-| reldatefmt.h | icu::FormattedRelativeDateTime::FormattedRelativeDateTime() |  Draft→StableICU 64
-| reldatefmt.h | icu::FormattedRelativeDateTime::FormattedRelativeDateTime(FormattedRelativeDateTime&amp;&amp;) |  Draft→StableICU 64
-| reldatefmt.h | icu::FormattedRelativeDateTime::~FormattedRelativeDateTime() |  Draft→StableICU 64
-| udateintervalformat.h | UFormattedDateInterval* udtitvfmt_openResult(UErrorCode*) |  Draft→StableICU 64
-| udateintervalformat.h | const UFormattedValue* udtitvfmt_resultAsValue(const UFormattedDateInterval*, UErrorCode*) |  Draft→StableICU 64
-| udateintervalformat.h | void udtitvfmt_closeResult(UFormattedDateInterval*) |  Draft→StableICU 64
-| uformattedvalue.h | UBool ucfpos_matchesField(const UConstrainedFieldPosition*, int32_t, int32_t, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | UBool ufmtval_nextPosition(const UFormattedValue*, UConstrainedFieldPosition*, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | UConstrainedFieldPosition* ucfpos_open(UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | const UChar* ufmtval_getString(const UFormattedValue*, int32_t*, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_DATE_INTERVAL_SPAN |  Draft→StableICU 64
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_DATE |  Draft→StableICU 64
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_LIST_SPAN |  Draft→StableICU 64
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_LIST |  Draft→StableICU 64
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_NUMBER |  Draft→StableICU 64
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_RELATIVE_DATETIME |  Draft→StableICU 64
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_UNDEFINED |  Draft→StableICU 64
-| uformattedvalue.h | int32_t ucfpos_getCategory(const UConstrainedFieldPosition*, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | int32_t ucfpos_getField(const UConstrainedFieldPosition*, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | int64_t ucfpos_getInt64IterationContext(const UConstrainedFieldPosition*, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | void ucfpos_close(UConstrainedFieldPosition*) |  Draft→StableICU 64
-| uformattedvalue.h | void ucfpos_constrainCategory(UConstrainedFieldPosition*, int32_t, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | void ucfpos_constrainField(UConstrainedFieldPosition*, int32_t, int32_t, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | void ucfpos_getIndexes(const UConstrainedFieldPosition*, int32_t*, int32_t*, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | void ucfpos_reset(UConstrainedFieldPosition*, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | void ucfpos_setInt64IterationContext(UConstrainedFieldPosition*, int64_t, UErrorCode*) |  Draft→StableICU 64
-| uformattedvalue.h | void ucfpos_setState(UConstrainedFieldPosition*, int32_t, int32_t, int32_t, int32_t, UErrorCode*) |  Draft→StableICU 64
-| ulistformatter.h | UFormattedList* ulistfmt_openResult(UErrorCode*) |  Draft→StableICU 64
-| ulistformatter.h | const UFormattedValue* ulistfmt_resultAsValue(const UFormattedList*, UErrorCode*) |  Draft→StableICU 64
-| ulistformatter.h | <tt>enum</tt> UListFormatterField::ULISTFMT_ELEMENT_FIELD |  Draft→StableICU 63
-| ulistformatter.h | <tt>enum</tt> UListFormatterField::ULISTFMT_LITERAL_FIELD |  Draft→StableICU 63
-| ulistformatter.h | void ulistfmt_closeResult(UFormattedList*) |  Draft→StableICU 64
-| ulistformatter.h | void ulistfmt_formatStringsToResult(const UListFormatter*, const UChar* const strings[], const int32_t*, int32_t, UFormattedList*, UErrorCode*) |  Draft→StableICU 64
-| unum.h | <tt>enum</tt> UNumberFormatAttribute::UNUM_MINIMUM_GROUPING_DIGITS |  Draft→StableICU 64
-| unum.h | <tt>enum</tt> UNumberFormatAttribute::UNUM_PARSE_CASE_SENSITIVE |  Draft→StableICU 64
-| unum.h | <tt>enum</tt> UNumberFormatAttribute::UNUM_SIGN_ALWAYS_SHOWN |  Draft→StableICU 64
-| unum.h | <tt>enum</tt> UNumberFormatFields::UNUM_COMPACT_FIELD |  Draft→StableICU 64
-| unum.h | <tt>enum</tt> UNumberFormatFields::UNUM_MEASURE_UNIT_FIELD |  Draft→StableICU 64
-| unumberformatter.h | UNumberFormatter* unumf_openForSkeletonAndLocaleWithError(const UChar*, int32_t, const char*, UParseError*, UErrorCode*) |  Draft→StableICU 64
-| unumberformatter.h | const UFormattedValue* unumf_resultAsValue(const UFormattedNumber*, UErrorCode*) |  Draft→StableICU 64
-| upluralrules.h | int32_t uplrules_selectFormatted(const UPluralRules*, const struct UFormattedNumber*, UChar*, int32_t, UErrorCode*) |  Draft→StableICU 64
-| ureldatefmt.h | UFormattedRelativeDateTime* ureldatefmt_openResult(UErrorCode*) |  Draft→StableICU 64
-| ureldatefmt.h | const UFormattedValue* ureldatefmt_resultAsValue(const UFormattedRelativeDateTime*, UErrorCode*) |  Draft→StableICU 64
-| ureldatefmt.h | <tt>enum</tt> URelativeDateTimeFormatterField::UDAT_REL_LITERAL_FIELD |  Draft→StableICU 64
-| ureldatefmt.h | <tt>enum</tt> URelativeDateTimeFormatterField::UDAT_REL_NUMERIC_FIELD |  Draft→StableICU 64
-| ureldatefmt.h | void ureldatefmt_closeResult(UFormattedRelativeDateTime*) |  Draft→StableICU 64
-| ureldatefmt.h | void ureldatefmt_formatNumericToResult(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UFormattedRelativeDateTime*, UErrorCode*) |  Draft→StableICU 64
-| ureldatefmt.h | void ureldatefmt_formatToResult(const URelativeDateTimeFormatter*, double, URelativeDateTimeUnit, UFormattedRelativeDateTime*, UErrorCode*) |  Draft→StableICU 64
+| bytestrie.h | BytesTrie&amp; icu::BytesTrie::resetToState64(uint64_t) |  Draft→StableICU 65
+| bytestrie.h | uint64_t icu::BytesTrie::getState64() const |  Draft→StableICU 65
+| fmtable.h | UFormattable* icu::Formattable::toUFormattable() |  (missing) | StableICU 52
+| listformatter.h | <tt>static</tt> ListFormatter* icu::ListFormatter::createInstance(const Locale&amp;, UListFormatterType, UListFormatterWidth, UErrorCode&amp;) |  Draft→StableICU 67
+| localebuilder.h | UBool icu::LocaleBuilder::copyErrorTo(UErrorCode&amp;) const |  Draft→StableICU 65
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::addSupportedLocale(const Locale&amp;) |  Draft→StableICU 65
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::operator=(Builder&amp;&amp;) |  Draft→StableICU 65
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setDefaultLocale(const Locale*) |  Draft→StableICU 65
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion) |  Draft→StableICU 65
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag) |  Draft→StableICU 65
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Iter, Iter) |  Draft→StableICU 65
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator&amp;) |  Draft→StableICU 65
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece) |  Draft→StableICU 65
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesViaConverter(Iter, Iter, Conv) |  Draft→StableICU 65
+| localematcher.h | Locale icu::LocaleMatcher::Result::makeResolvedLocale(UErrorCode&amp;) const |  Draft→StableICU 65
+| localematcher.h | LocaleMatcher icu::LocaleMatcher::Builder::build(UErrorCode&amp;) const |  Draft→StableICU 65
+| localematcher.h | LocaleMatcher&amp; icu::LocaleMatcher::operator=(LocaleMatcher&amp;&amp;) |  Draft→StableICU 65
+| localematcher.h | Result icu::LocaleMatcher::getBestMatchResult(Locale::Iterator&amp;, UErrorCode&amp;) const |  Draft→StableICU 65
+| localematcher.h | Result icu::LocaleMatcher::getBestMatchResult(const Locale&amp;, UErrorCode&amp;) const |  Draft→StableICU 65
+| localematcher.h | Result&amp; icu::LocaleMatcher::Result::operator=(Result&amp;&amp;) |  Draft→StableICU 65
+| localematcher.h | UBool icu::LocaleMatcher::Builder::copyErrorTo(UErrorCode&amp;) const |  Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::Result::getDesiredLocale() const |  Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::Result::getSupportedLocale() const |  Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatch(Locale::Iterator&amp;, UErrorCode&amp;) const |  Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatch(const Locale&amp;, UErrorCode&amp;) const |  Draft→StableICU 65
+| localematcher.h | const Locale* icu::LocaleMatcher::getBestMatchForListString(StringPiece, UErrorCode&amp;) const |  Draft→StableICU 65
+| localematcher.h | <tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_NONE |  Draft→StableICU 65
+| localematcher.h | <tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_REGION |  Draft→StableICU 65
+| localematcher.h | <tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_LANGUAGE |  Draft→StableICU 65
+| localematcher.h | <tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_SCRIPT |  Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Builder::Builder() |  Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Builder::Builder(Builder&amp;&amp;) |  Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Builder::~Builder() |  Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::LocaleMatcher(LocaleMatcher&amp;&amp;) |  Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Result::Result(Result&amp;&amp;) |  Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::Result::~Result() |  Draft→StableICU 65
+| localematcher.h | icu::LocaleMatcher::~LocaleMatcher() |  Draft→StableICU 65
+| localematcher.h | int32_t icu::LocaleMatcher::Result::getDesiredIndex() const |  Draft→StableICU 65
+| localematcher.h | int32_t icu::LocaleMatcher::Result::getSupportedIndex() const |  Draft→StableICU 65
+| locid.h | UBool icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::hasNext() const override |  Draft→StableICU 65
+| locid.h | UBool icu::Locale::Iterator::hasNext() const |  Draft→StableICU 65
+| locid.h | UBool icu::Locale::RangeIterator&lt; Iter &gt;::hasNext() const override |  Draft→StableICU 65
+| locid.h | const Locale&amp; icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::next() override |  Draft→StableICU 65
+| locid.h | const Locale&amp; icu::Locale::Iterator::next() |  Draft→StableICU 65
+| locid.h | const Locale&amp; icu::Locale::RangeIterator&lt; Iter &gt;::next() override |  Draft→StableICU 65
+| locid.h | icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::ConvertingIterator(Iter, Iter, Conv) |  Draft→StableICU 65
+| locid.h | icu::Locale::Iterator::~Iterator() |  Draft→StableICU 65
+| locid.h | icu::Locale::RangeIterator&lt; Iter &gt;::RangeIterator(Iter, Iter) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBar() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDecade() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerCentimeter() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerInch() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getEm() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapixel() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPascal() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixel() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerCentimeter() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerInch() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getThermUs() |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createBar(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDecade(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerCentimeter(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerInch(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEm(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapixel(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPascal(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixel(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerCentimeter(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerInch(UErrorCode&amp;) |  Draft→StableICU 65
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createThermUs(UErrorCode&amp;) |  Draft→StableICU 65
+| numberformatter.h | StringClass icu::number::FormattedNumber::toDecimalNumber(UErrorCode&amp;) const |  Draft→StableICU 65
+| reldatefmt.h | <tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_HOUR |  Draft→StableICU 65
+| reldatefmt.h | <tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_MINUTE |  Draft→StableICU 65
+| stringpiece.h | icu::StringPiece::StringPiece(T) |  Draft→StableICU 65
+| ucal.h | int32_t ucal_getHostTimeZone(UChar*, int32_t, UErrorCode*) |  Draft→StableICU 65
+| ucharstrie.h | UCharsTrie&amp; icu::UCharsTrie::resetToState64(uint64_t) |  Draft→StableICU 65
+| ucharstrie.h | uint64_t icu::UCharsTrie::getState64() const |  Draft→StableICU 65
+| ulistformatter.h | UListFormatter* ulistfmt_openForType(const char*, UListFormatterType, UListFormatterWidth, UErrorCode*) |  Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_AND |  Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_OR |  Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_UNITS |  Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_NARROW |  Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_SHORT |  Draft→StableICU 67
+| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_WIDE |  Draft→StableICU 67
+| uloc.h | UEnumeration* uloc_openAvailableByType(ULocAvailableType, UErrorCode*) |  Draft→StableICU 65
+| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_DEFAULT |  Draft→StableICU 65
+| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_ONLY_LEGACY_ALIASES |  Draft→StableICU 65
+| uloc.h | <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_WITH_LEGACY_ALIASES |  Draft→StableICU 65
+| uniset.h | USet* icu::UnicodeSet::toUSet() |  (missing) | StableICU 4.2
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_BUNDLE |  Draft→StableICU 65
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_DATA_FILE |  Draft→StableICU 65
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RES_FILE |  Draft→StableICU 65
+| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_START |  Draft→StableICU 65
 
 ## Added
 
-Added in ICU 67
+Added in ICU 68
   
-| File | API | ICU 66 | ICU 67 |
+| File | API | ICU 67 | ICU 68 |
 |---|---|---|---|
-| bytestream.h | void icu::ByteSink::AppendU8(const char*, int32_t) |  (missing) | DraftICU 67
-| bytestream.h | void icu::ByteSink::AppendU8(const char8_t*, int32_t) |  (missing) | DraftICU 67
-| dcfmtsym.h | void icu::DecimalFormatSymbols::setCurrency(const UChar*, UErrorCode&amp;) |  (missing) | Internal
-| dtptngen.h | UDateFormatHourCycle icu::DateTimePatternGenerator::getDefaultHourCycle(UErrorCode&amp;) const |  (missing) | DraftICU 67
-| listformatter.h | <tt>static</tt> ListFormatter* icu::ListFormatter::createInstance(const Locale&amp;, UListFormatterType, UListFormatterWidth, UErrorCode&amp;) |  (missing) | DraftICU 67
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setDirection(ULocMatchDirection) |  (missing) | DraftICU 67
-| localematcher.h | <tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_ONLY_TWO_WAY |  (missing) | DraftICU 67
-| localematcher.h | <tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_WITH_ONE_WAY |  (missing) | DraftICU 67
-| locid.h | void icu::Locale::canonicalize(UErrorCode&amp;) |  (missing) | DraftICU 67
-| measunit.h | LocalArray&lt;MeasureUnit&gt; icu::MeasureUnit::splitToSingleUnits(int32_t&amp;, UErrorCode&amp;) const |  (missing) | InternalICU 67
-| measunit.h | MeasureUnit icu::MeasureUnit::product(const MeasureUnit&amp;, UErrorCode&amp;) const |  (missing) | DraftICU 67
-| measunit.h | MeasureUnit icu::MeasureUnit::reciprocal(UErrorCode&amp;) const |  (missing) | DraftICU 67
-| measunit.h | MeasureUnit icu::MeasureUnit::withDimensionality(int32_t, UErrorCode&amp;) const |  (missing) | DraftICU 67
-| measunit.h | MeasureUnit icu::MeasureUnit::withSIPrefix(UMeasureSIPrefix, UErrorCode&amp;) const |  (missing) | DraftICU 67
-| measunit.h | MeasureUnit&amp; icu::MeasureUnit::operator=(MeasureUnit&amp;&amp;) noexcept |  (missing) | DraftICU 67
-| measunit.h | UMeasureSIPrefix icu::MeasureUnit::getSIPrefix(UErrorCode&amp;) const |  (missing) | DraftICU 67
-| measunit.h | UMeasureUnitComplexity icu::MeasureUnit::getComplexity(UErrorCode&amp;) const |  (missing) | DraftICU 67
-| measunit.h | const char* icu::MeasureUnit::getIdentifier() const |  (missing) | DraftICU 67
-| measunit.h | icu::MeasureUnit::MeasureUnit(MeasureUnit&amp;&amp;) noexcept |  (missing) | DraftICU 67
-| measunit.h | int32_t icu::MeasureUnit::getDimensionality(UErrorCode&amp;) const |  (missing) | DraftICU 67
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::forIdentifier(StringPiece, UErrorCode&amp;) |  (missing) | DraftICU 67
-| numsys.h | NumberingSystem&amp; icu::NumberingSystem::operator=(const NumberingSystem&amp;)=default |  (missing) | StableICU 4.2
-| stringpiece.h | icu::StringPiece::StringPiece(const char8_t*) |  (missing) | DraftICU 67
-| stringpiece.h | icu::StringPiece::StringPiece(const char8_t*, int32_t) |  (missing) | DraftICU 67
-| stringpiece.h | icu::StringPiece::StringPiece(const std::u8string&amp;) |  (missing) | DraftICU 67
-| stringpiece.h | icu::StringPiece::StringPiece(std::nullptr_t) |  (missing) | DraftICU 67
-| stringpiece.h | int32_t icu::StringPiece::compare(StringPiece) |  (missing) | DraftICU 67
-| stringpiece.h | int32_t icu::StringPiece::find(StringPiece, int32_t) |  (missing) | DraftICU 67
-| stringpiece.h | void icu::StringPiece::set(const char8_t*) |  (missing) | DraftICU 67
-| stringpiece.h | void icu::StringPiece::set(const char8_t*, int32_t) |  (missing) | DraftICU 67
-| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_11 |  (missing) | DraftICU 67
-| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_12 |  (missing) | DraftICU 67
-| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_23 |  (missing) | DraftICU 67
-| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_24 |  (missing) | DraftICU 67
-| udateintervalformat.h | void udtitvfmt_formatCalendarToResult(const UDateIntervalFormat*, UCalendar*, UCalendar*, UFormattedDateInterval*, UErrorCode*) |  (missing) | DraftICU 67
-| udateintervalformat.h | void udtitvfmt_formatToResult(const UDateIntervalFormat*, UDate, UDate, UFormattedDateInterval*, UErrorCode*) |  (missing) | DraftICU 67
-| udatpg.h | UDateFormatHourCycle udatpg_getDefaultHourCycle(const UDateTimePatternGenerator*, UErrorCode*) |  (missing) | DraftICU 67
-| ulistformatter.h | UListFormatter* ulistfmt_openForType(const char*, UListFormatterType, UListFormatterWidth, UErrorCode*) |  (missing) | DraftICU 67
-| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_AND |  (missing) | DraftICU 67
-| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_OR |  (missing) | DraftICU 67
-| ulistformatter.h | <tt>enum</tt> UListFormatterType::ULISTFMT_TYPE_UNITS |  (missing) | DraftICU 67
-| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_NARROW |  (missing) | DraftICU 67
-| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_SHORT |  (missing) | DraftICU 67
-| ulistformatter.h | <tt>enum</tt> UListFormatterWidth::ULISTFMT_WIDTH_WIDE |  (missing) | DraftICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_BREAK_ENGINE |  (missing) | DraftICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_CHARACTER |  (missing) | DraftICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_LINE |  (missing) | DraftICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_SENTENCE |  (missing) | DraftICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_TITLE |  (missing) | DraftICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_WORD |  (missing) | DraftICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_LIMIT |  (missing) | Internal
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_START |  (missing) | DraftICU 67
+| dtitvfmt.h | UDisplayContext icu::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&amp;) const |  (missing) | DraftICU 68
+| dtitvfmt.h | void icu::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&amp;) |  (missing) | DraftICU 68
+| dtptngen.h | <tt>static</tt> DateTimePatternGenerator* icu::DateTimePatternGenerator::createInstanceNoStdPat(const Locale&amp;, UErrorCode&amp;) |  (missing) | Internal
+| fmtable.h | UFormattable* icu::Formattable::toUFormattable() |  (missing) | StableICU 52
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setMaxDistance(const Locale&amp;, const Locale&amp;) |  (missing) | DraftICU 68
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setNoDefaultLocale() |  (missing) | DraftICU 68
+| localematcher.h | UBool icu::LocaleMatcher::isMatch(const Locale&amp;, const Locale&amp;, UErrorCode&amp;) const |  (missing) | DraftICU 68
+| measunit.h | int32_t icu::MeasureUnit::getOffset() const |  (missing) | Internal
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCandela() |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoon() |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoonImperial() |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDot() |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDram() |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDrop() |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthRadius() |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGrain() |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getJigger() |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLumen() |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPinch() |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getQuartImperial() |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createCandela(UErrorCode&amp;) |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoon(UErrorCode&amp;) |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoonImperial(UErrorCode&amp;) |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDot(UErrorCode&amp;) |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDram(UErrorCode&amp;) |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDrop(UErrorCode&amp;) |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthRadius(UErrorCode&amp;) |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createGrain(UErrorCode&amp;) |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createJigger(UErrorCode&amp;) |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createLumen(UErrorCode&amp;) |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPinch(UErrorCode&amp;) |  (missing) | DraftICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuartImperial(UErrorCode&amp;) |  (missing) | DraftICU 68
+| measunit.h | std::pair&lt; LocalArray&lt; MeasureUnit &gt;, int32_t &gt; icu::MeasureUnit::splitToSingleUnits(UErrorCode&amp;) const |  (missing) | DraftICU 68
+| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece) const&amp; |  (missing) | DraftICU 68
+| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece)&amp;&amp; |  (missing) | DraftICU 68
+| numberformatter.h | MeasureUnit icu::number::FormattedNumber::getOutputUnit(UErrorCode&amp;) const |  (missing) | DraftICU 68
+| numberformatter.h | Usage&amp; icu::number::impl::Usage::operator=(Usage&amp;&amp;) |  (missing) | Internal
+| numberformatter.h | Usage&amp; icu::number::impl::Usage::operator=(const Usage&amp;) |  (missing) | Internal
+| numberformatter.h | bool icu::number::impl::Usage::isSet() const |  (missing) | Internal
+| numberformatter.h | icu::number::impl::Usage::Usage(Usage&amp;&amp;) |  (missing) | Internal
+| numberformatter.h | icu::number::impl::Usage::Usage(const Usage&amp;) |  (missing) | Internal
+| numberformatter.h | icu::number::impl::Usage::~Usage() |  (missing) | Internal
+| numberformatter.h | int16_t icu::number::impl::Usage::length() const |  (missing) | Internal
+| numberformatter.h | void icu::number::impl::Usage::set(StringPiece) |  (missing) | Internal
+| numberrangeformatter.h | std::pair&lt; StringClass, StringClass &gt; icu::number::FormattedNumberRange::getDecimalNumbers(UErrorCode&amp;) const |  (missing) | DraftICU 68
+| plurrule.h | UnicodeString icu::PluralRules::select(const number::FormattedNumberRange&amp;, UErrorCode&amp;) const |  (missing) | DraftICU 68
+| plurrule.h | UnicodeString icu::PluralRules::select(const number::impl::UFormattedNumberRangeData*, UErrorCode&amp;) const |  (missing) | Internal
+| plurrule.h | int32_t icu::PluralRules::getSamples(const UnicodeString&amp;, FixedDecimal*, int32_t, UErrorCode&amp;) |  (missing) | Internal
+| timezone.h | <tt>static</tt> TimeZone* icu::TimeZone::forLocaleOrDefault(const Locale&amp;) |  (missing) | Internal
+| ucurr.h | <tt>enum</tt> UCurrNameStyle::UCURR_FORMAL_SYMBOL_NAME |  (missing) | DraftICU 68
+| ucurr.h | <tt>enum</tt> UCurrNameStyle::UCURR_VARIANT_SYMBOL_NAME |  (missing) | DraftICU 68
+| udateintervalformat.h | UDisplayContext udtitvfmt_getContext(const UDateIntervalFormat*, UDisplayContextType, UErrorCode*) |  (missing) | DraftICU 68
+| udateintervalformat.h | void udtitvfmt_setContext(UDateIntervalFormat*, UDisplayContext, UErrorCode*) |  (missing) | DraftICU 68
+| umachine.h | <tt>#define</tt> U_DEFINE_FALSE_AND_TRUE |  (missing) | InternalICU 68
+| uniset.h | USet* icu::UnicodeSet::toUSet() |  (missing) | StableICU 4.2
+| unum.h | <tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_AUTO |  (missing) | DraftICU 68
+| unum.h | <tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_MIN2 |  (missing) | DraftICU 68
+| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL |  (missing) | DraftICU 68
+| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT |  (missing) | DraftICU 68
+| unumberformatter.h | int32_t unumf_resultToDecimalNumber(const UFormattedNumber*, char*, int32_t, UErrorCode*) |  (missing) | DraftICU 68
+| unumberrangeformatter.h | UFormattedNumberRange* unumrf_openResult(UErrorCode*) |  (missing) | DraftICU 68
+| unumberrangeformatter.h | UNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(const UChar*, int32_t, UNumberRangeCollapse, UNumberRangeIdentityFallback, const char*, UParseError*, UErrorCode*) |  (missing) | DraftICU 68
+| unumberrangeformatter.h | UNumberRangeIdentityResult unumrf_resultGetIdentityResult(const UFormattedNumberRange*, UErrorCode*) |  (missing) | DraftICU 68
+| unumberrangeformatter.h | const UFormattedValue* unumrf_resultAsValue(const UFormattedNumberRange*, UErrorCode*) |  (missing) | DraftICU 68
+| unumberrangeformatter.h | int32_t unumrf_resultGetFirstDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*) |  (missing) | DraftICU 68
+| unumberrangeformatter.h | int32_t unumrf_resultGetSecondDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*) |  (missing) | DraftICU 68
+| unumberrangeformatter.h | void unumrf_close(UNumberRangeFormatter*) |  (missing) | DraftICU 68
+| unumberrangeformatter.h | void unumrf_closeResult(UFormattedNumberRange*) |  (missing) | DraftICU 68
+| unumberrangeformatter.h | void unumrf_formatDecimalRange(const UNumberRangeFormatter*, const char*, int32_t, const char*, int32_t, UFormattedNumberRange*, UErrorCode*) |  (missing) | DraftICU 68
+| unumberrangeformatter.h | void unumrf_formatDoubleRange(const UNumberRangeFormatter*, double, double, UFormattedNumberRange*, UErrorCode*) |  (missing) | DraftICU 68
+| upluralrules.h | int32_t uplrules_selectForRange(const UPluralRules*, const struct UFormattedNumberRange*, UChar*, int32_t, UErrorCode*) |  (missing) | DraftICU 68
 
 ## Other
 
-Other existing drafts in ICU 67
+Other existing drafts in ICU 68
 
-| File | API | ICU 66 | ICU 67 |
+| File | API | ICU 67 | ICU 68 |
 |---|---|---|---|
-| bytestrie.h |  BytesTrie&amp; icu::BytesTrie::resetToState64(uint64_t) | DraftICU 65 | 
-| bytestrie.h |  uint64_t icu::BytesTrie::getState64() const | DraftICU 65 | 
-| localebuilder.h |  UBool icu::LocaleBuilder::copyErrorTo(UErrorCode&amp;) const | DraftICU 65 | 
-| localematcher.h |  Builder&amp; icu::LocaleMatcher::Builder::addSupportedLocale(const Locale&amp;) | DraftICU 65 | 
-| localematcher.h |  Builder&amp; icu::LocaleMatcher::Builder::operator=(Builder&amp;&amp;) | DraftICU 65 | 
-| localematcher.h |  Builder&amp; icu::LocaleMatcher::Builder::setDefaultLocale(const Locale*) | DraftICU 65 | 
-| localematcher.h |  Builder&amp; icu::LocaleMatcher::Builder::setDemotionPerDesiredLocale(ULocMatchDemotion) | DraftICU 65 | 
-| localematcher.h |  Builder&amp; icu::LocaleMatcher::Builder::setFavorSubtag(ULocMatchFavorSubtag) | DraftICU 65 | 
-| localematcher.h |  Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Iter, Iter) | DraftICU 65 | 
-| localematcher.h |  Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocales(Locale::Iterator&amp;) | DraftICU 65 | 
-| localematcher.h |  Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesFromListString(StringPiece) | DraftICU 65 | 
-| localematcher.h |  Builder&amp; icu::LocaleMatcher::Builder::setSupportedLocalesViaConverter(Iter, Iter, Conv) | DraftICU 65 | 
-| localematcher.h |  Locale icu::LocaleMatcher::Result::makeResolvedLocale(UErrorCode&amp;) const | DraftICU 65 | 
-| localematcher.h |  LocaleMatcher icu::LocaleMatcher::Builder::build(UErrorCode&amp;) const | DraftICU 65 | 
-| localematcher.h |  LocaleMatcher&amp; icu::LocaleMatcher::operator=(LocaleMatcher&amp;&amp;) | DraftICU 65 | 
-| localematcher.h |  Result icu::LocaleMatcher::getBestMatchResult(Locale::Iterator&amp;, UErrorCode&amp;) const | DraftICU 65 | 
-| localematcher.h |  Result icu::LocaleMatcher::getBestMatchResult(const Locale&amp;, UErrorCode&amp;) const | DraftICU 65 | 
-| localematcher.h |  Result&amp; icu::LocaleMatcher::Result::operator=(Result&amp;&amp;) | DraftICU 65 | 
-| localematcher.h |  UBool icu::LocaleMatcher::Builder::copyErrorTo(UErrorCode&amp;) const | DraftICU 65 | 
-| localematcher.h |  const Locale* icu::LocaleMatcher::Result::getDesiredLocale() const | DraftICU 65 | 
-| localematcher.h |  const Locale* icu::LocaleMatcher::Result::getSupportedLocale() const | DraftICU 65 | 
-| localematcher.h |  const Locale* icu::LocaleMatcher::getBestMatch(Locale::Iterator&amp;, UErrorCode&amp;) const | DraftICU 65 | 
-| localematcher.h |  const Locale* icu::LocaleMatcher::getBestMatch(const Locale&amp;, UErrorCode&amp;) const | DraftICU 65 | 
-| localematcher.h |  const Locale* icu::LocaleMatcher::getBestMatchForListString(StringPiece, UErrorCode&amp;) const | DraftICU 65 | 
-| localematcher.h |  <tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_NONE | DraftICU 65 | 
-| localematcher.h |  <tt>enum</tt> ULocMatchDemotion::ULOCMATCH_DEMOTION_REGION | DraftICU 65 | 
-| localematcher.h |  <tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_LANGUAGE | DraftICU 65 | 
-| localematcher.h |  <tt>enum</tt> ULocMatchFavorSubtag::ULOCMATCH_FAVOR_SCRIPT | DraftICU 65 | 
-| localematcher.h |  icu::LocaleMatcher::Builder::Builder() | DraftICU 65 | 
-| localematcher.h |  icu::LocaleMatcher::Builder::Builder(Builder&amp;&amp;) | DraftICU 65 | 
-| localematcher.h |  icu::LocaleMatcher::Builder::~Builder() | DraftICU 65 | 
-| localematcher.h |  icu::LocaleMatcher::LocaleMatcher(LocaleMatcher&amp;&amp;) | DraftICU 65 | 
-| localematcher.h |  icu::LocaleMatcher::Result::Result(Result&amp;&amp;) | DraftICU 65 | 
-| localematcher.h |  icu::LocaleMatcher::Result::~Result() | DraftICU 65 | 
-| localematcher.h |  icu::LocaleMatcher::~LocaleMatcher() | DraftICU 65 | 
-| localematcher.h |  int32_t icu::LocaleMatcher::Result::getDesiredIndex() const | DraftICU 65 | 
-| localematcher.h |  int32_t icu::LocaleMatcher::Result::getSupportedIndex() const | DraftICU 65 | 
-| locid.h |  UBool icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::hasNext() const override | DraftICU 65 | 
-| locid.h |  UBool icu::Locale::Iterator::hasNext() const | DraftICU 65 | 
-| locid.h |  UBool icu::Locale::RangeIterator&lt; Iter &gt;::hasNext() const override | DraftICU 65 | 
-| locid.h |  const Locale&amp; icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::next() override | DraftICU 65 | 
-| locid.h |  const Locale&amp; icu::Locale::Iterator::next() | DraftICU 65 | 
-| locid.h |  const Locale&amp; icu::Locale::RangeIterator&lt; Iter &gt;::next() override | DraftICU 65 | 
-| locid.h |  icu::Locale::ConvertingIterator&lt; Iter, Conv &gt;::ConvertingIterator(Iter, Iter, Conv) | DraftICU 65 | 
-| locid.h |  icu::Locale::Iterator::~Iterator() | DraftICU 65 | 
-| locid.h |  icu::Locale::RangeIterator&lt; Iter &gt;::RangeIterator(Iter, Iter) | DraftICU 65 | 
+| bytestream.h |  void icu::ByteSink::AppendU8(const char*, int32_t) | DraftICU 67 | 
+| bytestream.h |  void icu::ByteSink::AppendU8(const char8_t*, int32_t) | DraftICU 67 | 
+| dtptngen.h |  UDateFormatHourCycle icu::DateTimePatternGenerator::getDefaultHourCycle(UErrorCode&amp;) const | DraftICU 67 | 
+| localematcher.h |  Builder&amp; icu::LocaleMatcher::Builder::setDirection(ULocMatchDirection) | DraftICU 67 | 
+| localematcher.h |  <tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_ONLY_TWO_WAY | DraftICU 67 | 
+| localematcher.h |  <tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_WITH_ONE_WAY | DraftICU 67 | 
+| locid.h |  void icu::Locale::canonicalize(UErrorCode&amp;) | DraftICU 67 | 
 | measfmt.h |  void icu::MeasureFormat::parseObject(const UnicodeString&amp;, Formattable&amp;, ParsePosition&amp;) const | DraftICU 53 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getBar() | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getDecade() | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerCentimeter() | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getDotPerInch() | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getEm() | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getMegapixel() | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getPascal() | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixel() | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerCentimeter() | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getPixelPerInch() | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getThermUs() | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createBar(UErrorCode&amp;) | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDecade(UErrorCode&amp;) | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerCentimeter(UErrorCode&amp;) | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDotPerInch(UErrorCode&amp;) | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEm(UErrorCode&amp;) | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMegapixel(UErrorCode&amp;) | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPascal(UErrorCode&amp;) | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixel(UErrorCode&amp;) | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerCentimeter(UErrorCode&amp;) | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPixelPerInch(UErrorCode&amp;) | DraftICU 65 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createThermUs(UErrorCode&amp;) | DraftICU 65 | 
-| nounit.h |  UClassID icu::NoUnit::getDynamicClassID() const | DraftICU 60 | 
-| nounit.h |  icu::NoUnit::NoUnit(const NoUnit&amp;) | DraftICU 60 | 
-| nounit.h |  icu::NoUnit::~NoUnit() | DraftICU 60 | 
-| nounit.h |  <tt>static</tt> NoUnit icu::NoUnit::base() | DraftICU 60 | 
-| nounit.h |  <tt>static</tt> NoUnit icu::NoUnit::percent() | DraftICU 60 | 
-| nounit.h |  <tt>static</tt> NoUnit icu::NoUnit::permille() | DraftICU 60 | 
-| nounit.h |  <tt>static</tt> UClassID icu::NoUnit::getStaticClassID() | DraftICU 60 | 
-| nounit.h |  void* icu::NoUnit::clone() const | DraftICU 60 | 
-| numberformatter.h |  StringClass icu::number::FormattedNumber::toDecimalNumber(UErrorCode&amp;) const | DraftICU 65 | 
-| numberrangeformatter.h |  UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&amp;) const | DraftICU 63 | 
-| numberrangeformatter.h |  UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&amp;) const | DraftICU 63 | 
-| reldatefmt.h |  <tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_HOUR | DraftICU 65 | 
-| reldatefmt.h |  <tt>enum</tt> UDateAbsoluteUnit::UDAT_ABSOLUTE_MINUTE | DraftICU 65 | 
-| stringpiece.h |  icu::StringPiece::StringPiece(T) | DraftICU 65 | 
-| ucal.h |  int32_t ucal_getHostTimeZone(UChar*, int32_t, UErrorCode*) | DraftICU 65 | 
-| ucharstrie.h |  UCharsTrie&amp; icu::UCharsTrie::resetToState64(uint64_t) | DraftICU 65 | 
-| ucharstrie.h |  uint64_t icu::UCharsTrie::getState64() const | DraftICU 65 | 
-| uloc.h |  UEnumeration* uloc_openAvailableByType(ULocAvailableType, UErrorCode*) | DraftICU 65 | 
-| uloc.h |  <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_DEFAULT | DraftICU 65 | 
-| uloc.h |  <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_ONLY_LEGACY_ALIASES | DraftICU 65 | 
-| uloc.h |  <tt>enum</tt> ULocAvailableType::ULOC_AVAILABLE_WITH_LEGACY_ALIASES | DraftICU 65 | 
+| measunit.h |  MeasureUnit icu::MeasureUnit::product(const MeasureUnit&amp;, UErrorCode&amp;) const | DraftICU 67 | 
+| measunit.h |  MeasureUnit icu::MeasureUnit::reciprocal(UErrorCode&amp;) const | DraftICU 67 | 
+| measunit.h |  MeasureUnit icu::MeasureUnit::withDimensionality(int32_t, UErrorCode&amp;) const | DraftICU 67 | 
+| measunit.h |  MeasureUnit icu::MeasureUnit::withSIPrefix(UMeasureSIPrefix, UErrorCode&amp;) const | DraftICU 67 | 
+| measunit.h |  MeasureUnit&amp; icu::MeasureUnit::operator=(MeasureUnit&amp;&amp;) noexcept | DraftICU 67 | 
+| measunit.h |  UMeasureSIPrefix icu::MeasureUnit::getSIPrefix(UErrorCode&amp;) const | DraftICU 67 | 
+| measunit.h |  UMeasureUnitComplexity icu::MeasureUnit::getComplexity(UErrorCode&amp;) const | DraftICU 67 | 
+| measunit.h |  const char* icu::MeasureUnit::getIdentifier() const | DraftICU 67 | 
+| measunit.h |  icu::MeasureUnit::MeasureUnit(MeasureUnit&amp;&amp;) noexcept | DraftICU 67 | 
+| measunit.h |  int32_t icu::MeasureUnit::getDimensionality(UErrorCode&amp;) const | DraftICU 67 | 
+| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::forIdentifier(StringPiece, UErrorCode&amp;) | DraftICU 67 | 
+| stringpiece.h |  icu::StringPiece::StringPiece(const char8_t*) | DraftICU 67 | 
+| stringpiece.h |  icu::StringPiece::StringPiece(const char8_t*, int32_t) | DraftICU 67 | 
+| stringpiece.h |  icu::StringPiece::StringPiece(const std::u8string&amp;) | DraftICU 67 | 
+| stringpiece.h |  icu::StringPiece::StringPiece(std::nullptr_t) | DraftICU 67 | 
+| stringpiece.h |  int32_t icu::StringPiece::compare(StringPiece) | DraftICU 67 | 
+| stringpiece.h |  int32_t icu::StringPiece::find(StringPiece, int32_t) | DraftICU 67 | 
+| stringpiece.h |  void icu::StringPiece::set(const char8_t*) | DraftICU 67 | 
+| stringpiece.h |  void icu::StringPiece::set(const char8_t*, int32_t) | DraftICU 67 | 
+| udat.h |  <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_11 | DraftICU 67 | 
+| udat.h |  <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_12 | DraftICU 67 | 
+| udat.h |  <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_23 | DraftICU 67 | 
+| udat.h |  <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_24 | DraftICU 67 | 
+| udateintervalformat.h |  void udtitvfmt_formatCalendarToResult(const UDateIntervalFormat*, UCalendar*, UCalendar*, UFormattedDateInterval*, UErrorCode*) | DraftICU 67 | 
+| udateintervalformat.h |  void udtitvfmt_formatToResult(const UDateIntervalFormat*, UDate, UDate, UFormattedDateInterval*, UErrorCode*) | DraftICU 67 | 
+| udatpg.h |  UDateFormatHourCycle udatpg_getDefaultHourCycle(const UDateTimePatternGenerator*, UErrorCode*) | DraftICU 67 | 
 | uregex.h |  <tt>enum</tt> URegexpFlag::UREGEX_CANON_EQ | DraftICU 2.4 | 
-| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_BUNDLE | DraftICU 65 | 
-| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_DATA_FILE | DraftICU 65 | 
-| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RESOURCE | DraftICU 65 | 
-| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_RES_FILE | DraftICU 65 | 
-| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UDATA_START | DraftICU 65 | 
+| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_BREAK_ENGINE | DraftICU 67 | 
+| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_CHARACTER | DraftICU 67 | 
+| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_LINE | DraftICU 67 | 
+| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_SENTENCE | DraftICU 67 | 
+| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_TITLE | DraftICU 67 | 
+| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_WORD | DraftICU 67 | 
+| utrace.h |  <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_START | DraftICU 67 | 
 
 ## Simplifications
 
@@ -870,7 +389,7 @@
 
 ## Colophon
 
-Contents generated by StableAPI tool on Fri Apr 03 07:26:48 PDT 2020
+Contents generated by StableAPI tool on Fri Oct 23 11:32:42 PDT 2020
 
 Copyright © 2019 and later: Unicode, Inc. and others.
 License & terms of use: http://www.unicode.org/copyright.html
diff --git a/icu4c/LICENSE b/icu4c/LICENSE
index e7f98ed..5d664a0 100644
--- a/icu4c/LICENSE
+++ b/icu4c/LICENSE
@@ -284,9 +284,9 @@
  #  Copyright (c) 2013 International Business Machines Corporation
  #  and others. All Rights Reserved.
  #
- # Project: http://code.google.com/p/lao-dictionary/
- # Dictionary: http://lao-dictionary.googlecode.com/git/Lao-Dictionary.txt
- # License: http://lao-dictionary.googlecode.com/git/Lao-Dictionary-LICENSE.txt
+ # Project: https://github.com/veer66/lao-dictionary
+ # Dictionary: https://github.com/veer66/lao-dictionary/blob/master/Lao-Dictionary.txt
+ # License: https://github.com/veer66/lao-dictionary/blob/master/Lao-Dictionary-LICENSE.txt
  #              (copied below)
  #
  #  This file is derived from the above dictionary, with slight
diff --git a/icu4c/readme.html b/icu4c/readme.html
index 08d52f8..06381c5 100644
--- a/icu4c/readme.html
+++ b/icu4c/readme.html
@@ -3,7 +3,7 @@
 
 <html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
   <head>
-    <title>ReadMe for ICU 67.1</title>
+    <title>ReadMe for ICU 68.2</title>
     <meta name="COPYRIGHT" content=
     "Copyright (C) 2016 and later: Unicode, Inc. and others. License &amp; terms of use: http://www.unicode.org/copyright.html"/>
     <!-- meta name="COPYRIGHT" content=
@@ -33,7 +33,7 @@
       <span class="only-rc">Release Candidate</span>
       <!-- <span class="only-milestone">(Milestone Release)</span> -->
       <span class="only-milestone">(Preview Release)</span>
-      <abbr title="International Components for Unicode">ICU</abbr> 67.1 ReadMe
+      <abbr title="International Components for Unicode">ICU</abbr> 68.2 ReadMe
     </h1>
 
     <!-- Most of the time we shouldn't need to comment/uncomment this paragraph, just change the body class -->
@@ -47,7 +47,7 @@
     <p class="note only-rc">This is a release candidate version of ICU4C.
       It is not recommended for production use.</p>
 
-    <p>Last updated: 2020-Mar-25<br/>
+    <p>Last updated: 2020-Dec-02<br/>
       Copyright &copy; 2016 and later: Unicode, Inc. and others. License &amp; terms of use:
       <a href="http://www.unicode.org/copyright.html">http://www.unicode.org/copyright.html</a><br/>
       Copyright &copy; 1997-2016 International Business Machines Corporation and others.
@@ -185,20 +185,21 @@
         <td>FAQ - Frequently Asked Questions about ICU</td>
 
         <td><a href=
-        "http://userguide.icu-project.org/icufaq">http://userguide.icu-project.org/icufaq</a></td>
+        "https://unicode-org.github.io/icu/userguide/icufaq">https://unicode-org.github.io/icu/userguide/icufaq</a></td>
       </tr>
 
       <tr>
         <td>ICU User's Guide</td>
 
         <td><a href=
-        "http://userguide.icu-project.org/">http://userguide.icu-project.org/</a></td>
+        "https://unicode-org.github.io/icu/userguide/">https://unicode-org.github.io/icu/userguide/</a></td>
       </tr>
 
       <tr>
         <td>How To Use ICU</td>
 
-        <td><a href="http://userguide.icu-project.org/howtouseicu">http://userguide.icu-project.org/howtouseicu</a></td>
+        <td><a href=
+        "https://unicode-org.github.io/icu/userguide/howtouseicu">https://unicode-org.github.io/icu/userguide/howtouseicu</a></td>
       </tr>
 
       <tr>
@@ -236,7 +237,7 @@
 
     <h2><a name="News" href="#News" id="News">What Is New In This Release?</a></h2>
 
-    <p>See the <a href="http://site.icu-project.org/download/67">ICU 67 download page</a>
+    <p>See the <a href="http://site.icu-project.org/download/68">ICU 68 download page</a>
     for more information on this release, including any other changes, bug fixes, known issues,
     changes to supported platforms and build environments,
     and migration issues for existing applications migrating from previous ICU releases.</p>
@@ -284,7 +285,7 @@
     <p>In the descriptions below, <strong><i>&lt;ICU&gt;</i></strong> is the full
     path name of the ICU directory (the top level directory from the distribution
     archives) in your file system. You can also view the <a href=
-    "http://userguide.icu-project.org/design">ICU Architectural
+    "https://unicode-org.github.io/icu/userguide/design">ICU Architectural
     Design</a> section of the User's Guide to see which libraries you need for
     your software product. You need at least the data (<code>[lib]icudt</code>)
     and the common (<code>[lib]icuuc</code>) libraries in order to use ICU.</p>
@@ -443,7 +444,7 @@
           environment variable to the out/ or the out/build/ directories, but
           this is generally discouraged because most people set it incorrectly.
           You can view the <a href=
-          "http://userguide.icu-project.org/icudata">ICU Data
+          "https://unicode-org.github.io/icu/userguide/icudata">ICU Data
           Management</a> section of the ICU User's Guide for details.</p>
         </td>
       </tr>
@@ -687,7 +688,7 @@
         It may be hard if ICU is shipped with
         another shared library (such as the Xerces-C++ XML parser)
         which does not control <code>main()</code>.<br />
-        See the <a href="http://userguide.icu-project.org/icudata">User Guide ICU Data</a>
+        See the <a href="https://unicode-org.github.io/icu/userguide/icudata">User Guide ICU Data</a>
         chapter for more details.<br />
         If possible, we recommend building the .dat package.
         Specify <code>--with-data-packaging=archive</code>
@@ -723,7 +724,7 @@
     <p>If ICU is installed as a system-level library, there are further
       opportunities and restrictions to consider.
       For details, see the <em>Using ICU as an Operating System Level Library</em>
-      section of the <a href="http://userguide.icu-project.org/design">User Guide ICU Architectural Design</a> chapter.</p>
+      section of the <a href="https://unicode-org.github.io/icu/userguide/design">User Guide ICU Architectural Design</a> chapter.</p>
     <ul>
       <li><b>Data path:</b> For a system-level library, it is best to load
         ICU data from the .dat package file because the file system path
@@ -1507,7 +1508,7 @@
     operating systems that do not have a standard C++ ABI (name mangling) for
     compilers, it is recommended to do this special packaging anyway. More
     details on customizing ICU are available in the <a href=
-    "http://userguide.icu-project.org/">User's Guide</a>. The <a href=
+    "https://unicode-org.github.io/icu/userguide/">User's Guide</a>. The <a href=
     "#SourceCode">ICU Source Code Organization</a> section of this readme.html
     gives a more complete description of the libraries.</p>
 
@@ -1536,7 +1537,7 @@
 
         <td>Data required by the Common and I18n libraries. There are many ways
         to package and <a href=
-        "http://userguide.icu-project.org/icudata">customize this
+        "https://unicode-org.github.io/icu/userguide/icudata">customize this
         data</a>, but by default this is all you need.</td>
       </tr>
 
@@ -1790,7 +1791,7 @@
     <p>Data files can be built on a different platform when both platforms share
     the same endianness and the same charset family. This assertion does not
     include platform dependent DLLs/shared/static libraries. For details see the
-    User Guide <a href="http://userguide.icu-project.org/icudata">ICU
+    User Guide <a href="https://unicode-org.github.io/icu/userguide/icudata">ICU
     Data</a> chapter.</p>
 
     <p>ICU 3.6 removes the requirement that ICU be completely built in the native
diff --git a/icu4c/source/.clang-format b/icu4c/source/.clang-format
new file mode 100644
index 0000000..83cbf64
--- /dev/null
+++ b/icu4c/source/.clang-format
@@ -0,0 +1,11 @@
+# © 2020 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+
+---
+Language: Cpp
+BasedOnStyle: LLVM
+IndentWidth: 4
+ColumnLimit: 105
+AllowShortBlocksOnASingleLine: false 
+AllowShortIfStatementsOnASingleLine: true 
+...
diff --git a/icu4c/source/Doxyfile.in b/icu4c/source/Doxyfile.in
index 25b535c..7ced104 100644
--- a/icu4c/source/Doxyfile.in
+++ b/icu4c/source/Doxyfile.in
@@ -1310,7 +1310,7 @@
 HHC_LOCATION           =
 
 # The GENERATE_CHI flag controls if a separate .chi index file is generated
-# (YES) or that it should be included in the master .chm file (NO).
+# (YES) or that it should be included in the primary .chm file (NO).
 # The default value is: NO.
 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
 
diff --git a/icu4c/source/allinone/Build.Windows.PlatformToolset.props b/icu4c/source/allinone/Build.Windows.PlatformToolset.props
index b477767..adee8f6 100644
--- a/icu4c/source/allinone/Build.Windows.PlatformToolset.props
+++ b/icu4c/source/allinone/Build.Windows.PlatformToolset.props
@@ -1,16 +1,22 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html -->
 <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <!-- This file is used to set the PlatformToolset configuration option for all UWP projects. -->
-  
+  <!-- This file is used to set configuration option for all projects. -->
+
   <!-- Automatic PlatformToolset version selection. -->
-  <!-- If there is no DefaultPlatformToolset set, we will detect the version based on version of the build tools. -->
+  <!-- If there is no DefaultPlatformToolset set, we will try to detect the version based on version of the build tools. -->
   <PropertyGroup>
     <BuildToolVersion>$(VisualStudioVersion)</BuildToolVersion>
-    <BuildToolVersion Condition="'$(BuildToolVersion)'==''">$(MSBuildToolsVersion)</BuildToolVersion>
-    <!-- Note: v140 is the Visual Studio 2015 toolset. v141 is the Visual Studio 2017 toolset. -->
+    <!-- Only use the MSBuildToolsVersion if we don't have the VisualStudioVersion and MSBuildToolsVersion is set to something other than Current. -->
+    <BuildToolVersion Condition="'$(BuildToolVersion)'=='' and '$(MSBuildToolsVersion)' != 'Current'">$(MSBuildToolsVersion)</BuildToolVersion>
+    <!-- Note:
+      v140 is the Visual Studio 2015 toolset. (14.0)
+      v141 is the Visual Studio 2017 toolset. (15.0)
+      v142 is the Visual Studio 2019 toolset. (16.0)
+    -->
     <AutoDetectedPlatformToolset Condition="'$(BuildToolVersion)'=='14.0'">v140</AutoDetectedPlatformToolset>
     <AutoDetectedPlatformToolset Condition="'$(BuildToolVersion)'=='15.0'">v141</AutoDetectedPlatformToolset>
+    <AutoDetectedPlatformToolset Condition="'$(BuildToolVersion)'=='16.0'">v142</AutoDetectedPlatformToolset>
   </PropertyGroup>
   <PropertyGroup Label="EmptyDefaultPlatformToolset">
     <DefaultPlatformToolset Condition=" '$(DefaultPlatformToolset)' == '' ">$(AutoDetectedPlatformToolset)</DefaultPlatformToolset>
@@ -18,9 +24,36 @@
   <PropertyGroup Label="PlatformToolset">
     <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
   </PropertyGroup>
+
+  <!-- This is the default SDK target. -->
+  <!--
+    If not already set, use the latest installed version of the Windows 10 SDK.
+    The Windows 10 SDK is backwards compatible to Windows 7, as long as WINVER and _WIN32_WINNT are set before compiling.
+    Note:
+      - With VS2019, using a value of "10.0" means that it will use the latest installed version.
+      - With VS2017, we need to manually detect the latest SDK version from the registry.
+      - With VS2015, use the Windows 8.1 SDK.
+  -->
+  <PropertyGroup Condition="'$(WindowsTargetPlatformVersion)'=='' and '$(PlatformToolset)'=='v142'">
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(WindowsTargetPlatformVersion)'=='' and ('$(PlatformToolset)'=='v141' or '$(AutodetectWin10SDK)'=='true')">
+    <!-- Detect the SDK version. -->
+    <WindowsSdkInstallFolder_10 Condition="'$(WindowsSdkInstallFolder_10)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@InstallationFolder)</WindowsSdkInstallFolder_10>
+    <WindowsSdkInstallFolder_10 Condition="'$(WindowsSdkInstallFolder_10)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0@InstallationFolder)</WindowsSdkInstallFolder_10>
+    <WindowsTargetPlatformVersion_10 Condition="'$(WindowsTargetPlatformVersion_10)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@ProductVersion)</WindowsTargetPlatformVersion_10>
+    <WindowsTargetPlatformVersion_10 Condition="'$(WindowsTargetPlatformVersion_10)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0@ProductVersion)</WindowsTargetPlatformVersion_10>
+    <!-- Sometimes the version in the registry has the '.0' suffix, and sometimes it doesn't. Check and add it. -->
+    <WindowsTargetPlatformVersion_10 Condition="'$(WindowsTargetPlatformVersion_10)' != '' and !$(WindowsTargetPlatformVersion_10.EndsWith('.0'))">$(WindowsTargetPlatformVersion_10).0</WindowsTargetPlatformVersion_10>
+    <!-- Set the default. -->
+    <WindowsTargetPlatformVersion>$(WindowsTargetPlatformVersion_10)</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(WindowsTargetPlatformVersion)'=='' and '$(PlatformToolset)'=='v140'">
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <!-- Disable MSBuild warning about Linker OutputFile. -->
   <PropertyGroup>
-    <!-- Disable MSBuild warning about Linker OutputFile. -->
-    <!-- Ex: MSBuild complains that the common project creates "icuuc62.dll" rather than "common.dll". However, this is intentional. -->
+    <!-- For example: MSBuild complains that the common project creates "icuuc62.dll" rather than "common.dll". However, this is intentional. -->
     <MSBuildWarningsAsMessages>MSB8012</MSBuildWarningsAsMessages>
   </PropertyGroup>
 </Project>
diff --git a/icu4c/source/allinone/Build.Windows.ProjectConfiguration.props b/icu4c/source/allinone/Build.Windows.ProjectConfiguration.props
index ab53588..147689b 100644
--- a/icu4c/source/allinone/Build.Windows.ProjectConfiguration.props
+++ b/icu4c/source/allinone/Build.Windows.ProjectConfiguration.props
@@ -56,13 +56,7 @@
     <IcuBinOutputDir>binARM64</IcuBinOutputDir>
     <IcuLibOutputDir>libARM64</IcuLibOutputDir>
   </PropertyGroup>
-  <!-- This is the default SDK target. -->
-  <PropertyGroup>
-    <!-- Note that the Windows 8.1 SDK is backwards compatible down-level to Windows 7, so
-         setting this to 8.1 does not actually imply targeting Windows 8.1. -->
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <!-- Desktop ARM/ARM64 support requires a newer version of the Windows SDK than 8.1 -->
+  <!-- Desktop ARM/ARM64 support requires a different version of the Windows SDK -->
   <!--
       Note: This version must match the version below in the ARM64 section for AdditionalLibraryDirectories
   -->
diff --git a/icu4c/source/allinone/Build.Windows.UWP.ProjectConfiguration.props b/icu4c/source/allinone/Build.Windows.UWP.ProjectConfiguration.props
index 359d2c2..89d528a 100644
--- a/icu4c/source/allinone/Build.Windows.UWP.ProjectConfiguration.props
+++ b/icu4c/source/allinone/Build.Windows.UWP.ProjectConfiguration.props
@@ -8,18 +8,8 @@
     <ApplicationType>Windows Store</ApplicationType>
     <ApplicationTypeRevision>10.0</ApplicationTypeRevision>
   </PropertyGroup>
-  <!-- If not already set, then we will default to using the latest installed Windows 10 SDK version. -->
-  <PropertyGroup Condition="'$(WindowsTargetPlatformVersion)'==''">
-    <!-- Detect the SDK version. -->
-    <WindowsSdkInstallFolder_10 Condition="'$(WindowsSdkInstallFolder_10)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@InstallationFolder)</WindowsSdkInstallFolder_10>
-    <WindowsSdkInstallFolder_10 Condition="'$(WindowsSdkInstallFolder_10)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0@InstallationFolder)</WindowsSdkInstallFolder_10>
-    <WindowsTargetPlatformVersion_10 Condition="'$(WindowsTargetPlatformVersion_10)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@ProductVersion)</WindowsTargetPlatformVersion_10>
-    <WindowsTargetPlatformVersion_10 Condition="'$(WindowsTargetPlatformVersion_10)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0@ProductVersion)</WindowsTargetPlatformVersion_10>
-    <!-- Sometimes the version in the registry has the '.0' suffix, and sometimes it doesn't. Check and add it. -->
-    <WindowsTargetPlatformVersion_10 Condition="'$(WindowsTargetPlatformVersion_10)' != '' and !$(WindowsTargetPlatformVersion_10.EndsWith('.0'))">$(WindowsTargetPlatformVersion_10).0</WindowsTargetPlatformVersion_10>
-    <!-- Set the default. -->
-    <WindowsTargetPlatformVersion>$(WindowsTargetPlatformVersion_10)</WindowsTargetPlatformVersion>
-    <!-- Set the minimum Win10 SDK version to TH1/RTM. -->
+  <PropertyGroup>
+    <!-- Set the minimum Windows 10 SDK version to TH1/RTM. -->
     <WindowsTargetPlatformMinVersion>10.0.10240.0</WindowsTargetPlatformMinVersion>
   </PropertyGroup>
   <!-- The following import will set the PlatformToolset configuration. -->
diff --git a/icu4c/source/common/Makefile.in b/icu4c/source/common/Makefile.in
index 7d149eb..67bcf00 100644
--- a/icu4c/source/common/Makefile.in
+++ b/icu4c/source/common/Makefile.in
@@ -79,45 +79,8 @@
 # $(LIBICUDT) is either stub data or the real DLL common data.
 LIBS = $(LIBICUDT) $(DEFAULT_LIBS)
 
-OBJECTS = errorcode.o putil.o umath.o utypes.o uinvchar.o umutex.o ucln_cmn.o \
-uinit.o uobject.o cmemory.o charstr.o cstr.o \
-udata.o ucmndata.o udatamem.o umapfile.o udataswp.o utrie_swap.o ucol_swp.o utrace.o \
-uhash.o uhash_us.o uenum.o ustrenum.o uvector.o ustack.o uvectr32.o uvectr64.o \
-ucnv.o ucnv_bld.o ucnv_cnv.o ucnv_io.o ucnv_cb.o ucnv_err.o ucnvlat1.o \
-ucnv_u7.o ucnv_u8.o ucnv_u16.o ucnv_u32.o ucnvscsu.o ucnvbocu.o \
-ucnv_ext.o ucnvmbcs.o ucnv2022.o ucnvhz.o ucnv_lmb.o ucnvisci.o ucnvdisp.o ucnv_set.o ucnv_ct.o \
-resource.o uresbund.o ures_cnv.o uresdata.o resbund.o resbund_cnv.o \
-ucurr.o \
-localebuilder.o localeprioritylist.o \
-messagepattern.o ucat.o locmap.o uloc.o locid.o locutil.o locavailable.o locdispnames.o locdspnm.o loclikely.o locresdata.o \
-lsr.o loclikelysubtags.o locdistance.o localematcher.o \
-bytestream.o stringpiece.o bytesinkutil.o \
-stringtriebuilder.o bytestriebuilder.o \
-bytestrie.o bytestrieiterator.o \
-ucharstrie.o ucharstriebuilder.o ucharstrieiterator.o \
-dictionarydata.o \
-edits.o \
-appendable.o ustr_cnv.o unistr_cnv.o unistr.o unistr_case.o unistr_props.o \
-utf_impl.o ustring.o ustrcase.o ucasemap.o ucasemap_titlecase_brkiter.o cstring.o ustrfmt.o ustrtrns.o ustr_wcs.o utext.o \
-unistr_case_locale.o ustrcase_locale.o unistr_titlecase_brkiter.o ustr_titlecase_brkiter.o \
-normalizer2impl.o normalizer2.o filterednormalizer2.o normlzr.o unorm.o unormcmp.o loadednormalizer2impl.o \
-chariter.o schriter.o uchriter.o uiter.o \
-patternprops.o uchar.o uprops.o ucase.o propname.o ubidi_props.o characterproperties.o \
-ubidi.o ubidiwrt.o ubidiln.o ushape.o \
-uscript.o uscript_props.o usc_impl.o unames.o \
-utrie.o utrie2.o utrie2_builder.o ucptrie.o umutablecptrie.o \
-bmpset.o unisetspan.o uset_props.o uniset_props.o uniset_closure.o uset.o uniset.o usetiter.o ruleiter.o caniter.o unifilt.o unifunct.o \
-uarrsort.o brkiter.o ubrk.o brkeng.o dictbe.o filteredbrk.o \
-rbbi.o rbbidata.o rbbinode.o rbbirb.o rbbiscan.o rbbisetb.o rbbistbl.o rbbitblb.o rbbi_cache.o \
-serv.o servnotf.o servls.o servlk.o servlkf.o servrbf.o servslkf.o \
-uidna.o usprep.o uts46.o punycode.o \
-util.o util_props.o parsepos.o locbased.o cwchar.o wintz.o dtintrv.o ucnvsel.o propsvec.o \
-ulist.o uloc_tag.o icudataver.o icuplug.o \
-sharedobject.o simpleformatter.o unifiedcache.o uloc_keytype.o \
-ubiditransform.o \
-pluralmap.o \
-static_unicode_sets.o \
-restrace.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 ## Header files to install
 HEADERS = $(srcdir)/unicode/*.h
diff --git a/icu4c/source/common/bmpset.h b/icu4c/source/common/bmpset.h
index 018aeb7..e1982ac 100644
--- a/icu4c/source/common/bmpset.h
+++ b/icu4c/source/common/bmpset.h
@@ -101,7 +101,7 @@
      */
     UBool latin1Contains[0x100];
 
-    /* TRUE if contains(U+FFFD). */
+    /* true if contains(U+FFFD). */
     UBool containsFFFD;
 
     /*
diff --git a/icu4c/source/common/brkeng.h b/icu4c/source/common/brkeng.h
index e40fce1..155433b 100644
--- a/icu4c/source/common/brkeng.h
+++ b/icu4c/source/common/brkeng.h
@@ -54,7 +54,7 @@
   * a particular kind of break.</p>
   *
   * @param c A character which begins a run that the engine might handle
-  * @return TRUE if this engine handles the particular character and break
+  * @return true if this engine handles the particular character and break
   * type.
   */
   virtual UBool handles(UChar32 c) const = 0;
@@ -171,7 +171,7 @@
   * a particular kind of break.</p>
   *
   * @param c A character which begins a run that the engine might handle
-  * @return TRUE if this engine handles the particular character and break
+  * @return true if this engine handles the particular character and break
   * type.
   */
   virtual UBool handles(UChar32 c) const;
diff --git a/icu4c/source/common/bytesinkutil.h b/icu4c/source/common/bytesinkutil.h
index 6808fbe..ab25164 100644
--- a/icu4c/source/common/bytesinkutil.h
+++ b/icu4c/source/common/bytesinkutil.h
@@ -45,9 +45,9 @@
     static UBool appendUnchanged(const uint8_t *s, int32_t length,
                                  ByteSink &sink, uint32_t options, Edits *edits,
                                  UErrorCode &errorCode) {
-        if (U_FAILURE(errorCode)) { return FALSE; }
+        if (U_FAILURE(errorCode)) { return false; }
         if (length > 0) { appendNonEmptyUnchanged(s, length, sink, options, edits); }
-        return TRUE;
+        return true;
     }
 
     static UBool appendUnchanged(const uint8_t *s, const uint8_t *limit,
diff --git a/icu4c/source/common/charstr.cpp b/icu4c/source/common/charstr.cpp
index dda29da..318a185 100644
--- a/icu4c/source/common/charstr.cpp
+++ b/icu4c/source/common/charstr.cpp
@@ -20,6 +20,7 @@
 #include "cmemory.h"
 #include "cstring.h"
 #include "uinvchar.h"
+#include "ustr_imp.h"
 
 U_NAMESPACE_BEGIN
 
@@ -46,6 +47,19 @@
     return p;
 }
 
+int32_t CharString::extract(char *dest, int32_t capacity, UErrorCode &errorCode) const {
+    if (U_FAILURE(errorCode)) { return len; }
+    if (capacity < 0 || (capacity > 0 && dest == nullptr)) {
+        errorCode = U_ILLEGAL_ARGUMENT_ERROR;
+        return len;
+    }
+    const char *src = buffer.getAlias();
+    if (0 < len && len <= capacity && src != dest) {
+        uprv_memcpy(dest, src, len);
+    }
+    return u_terminateChars(dest, capacity, len, &errorCode);
+}
+
 CharString &CharString::copyFrom(const CharString &s, UErrorCode &errorCode) {
     if(U_SUCCESS(errorCode) && this!=&s && ensureCapacity(s.len+1, 0, errorCode)) {
         len=s.len;
@@ -197,7 +211,7 @@
     }
     char c;
     if(len>0 && (c=buffer[len-1])!=U_FILE_SEP_CHAR && c!=U_FILE_ALT_SEP_CHAR) {
-        append(U_FILE_SEP_CHAR, errorCode);
+        append(getDirSepChar(), errorCode);
     }
     append(s, errorCode);
     return *this;
@@ -207,9 +221,19 @@
     char c;
     if(U_SUCCESS(errorCode) && len>0 &&
             (c=buffer[len-1])!=U_FILE_SEP_CHAR && c!=U_FILE_ALT_SEP_CHAR) {
-        append(U_FILE_SEP_CHAR, errorCode);
+        append(getDirSepChar(), errorCode);
     }
     return *this;
 }
 
+char CharString::getDirSepChar() const {
+    char dirSepChar = U_FILE_SEP_CHAR;
+#if (U_FILE_SEP_CHAR != U_FILE_ALT_SEP_CHAR)
+    // We may need to return a different directory separator when building for Cygwin or MSYS2.
+    if(len>0 && !uprv_strchr(data(), U_FILE_SEP_CHAR) && uprv_strchr(data(), U_FILE_ALT_SEP_CHAR))
+        dirSepChar = U_FILE_ALT_SEP_CHAR;
+#endif
+    return dirSepChar;
+}
+
 U_NAMESPACE_END
diff --git a/icu4c/source/common/charstr.h b/icu4c/source/common/charstr.h
index 23b950e..6619faa 100644
--- a/icu4c/source/common/charstr.h
+++ b/icu4c/source/common/charstr.h
@@ -87,6 +87,22 @@
      * The caller must uprv_free() the result.
      */
     char *cloneData(UErrorCode &errorCode) const;
+    /**
+     * Copies the contents of the string into dest.
+     * Checks if there is enough space in dest, extracts the entire string if possible,
+     * and NUL-terminates dest if possible.
+     *
+     * If the string fits into dest but cannot be NUL-terminated (length()==capacity),
+     * then the error code is set to U_STRING_NOT_TERMINATED_WARNING.
+     * If the string itself does not fit into dest (length()>capacity),
+     * then the error code is set to U_BUFFER_OVERFLOW_ERROR.
+     *
+     * @param dest Destination string buffer.
+     * @param capacity Size of the dest buffer (number of chars).
+     * @param errorCode ICU error code.
+     * @return length()
+     */
+    int32_t extract(char *dest, int32_t capacity, UErrorCode &errorCode) const;
 
     bool operator==(StringPiece other) const {
         return len == other.length() && (len == 0 || uprv_memcmp(data(), other.data(), len) == 0);
@@ -141,13 +157,13 @@
 
     /**
      * Appends a filename/path part, e.g., a directory name.
-     * First appends a U_FILE_SEP_CHAR if necessary.
+     * First appends a U_FILE_SEP_CHAR or U_FILE_ALT_SEP_CHAR if necessary.
      * Does nothing if s is empty.
      */
     CharString &appendPathPart(StringPiece s, UErrorCode &errorCode);
 
     /**
-     * Appends a U_FILE_SEP_CHAR if this string is not empty
+     * Appends a U_FILE_SEP_CHAR or U_FILE_ALT_SEP_CHAR if this string is not empty
      * and does not already end with a U_FILE_SEP_CHAR or U_FILE_ALT_SEP_CHAR.
      */
     CharString &ensureEndsWithFileSeparator(UErrorCode &errorCode);
@@ -160,6 +176,12 @@
 
     CharString(const CharString &other); // forbid copying of this class
     CharString &operator=(const CharString &other); // forbid copying of this class
+
+    /**
+     * Returns U_FILE_ALT_SEP_CHAR if found in string, and U_FILE_SEP_CHAR is not found.
+     * Otherwise returns U_FILE_SEP_CHAR.
+     */
+    char getDirSepChar() const;
 };
 
 U_NAMESPACE_END
diff --git a/icu4c/source/common/charstrmap.h b/icu4c/source/common/charstrmap.h
new file mode 100644
index 0000000..3320a46
--- /dev/null
+++ b/icu4c/source/common/charstrmap.h
@@ -0,0 +1,55 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+// charstrmap.h
+// created: 2020sep01 Frank Yung-Fong Tang
+
+#ifndef __CHARSTRMAP_H__
+#define __CHARSTRMAP_H__
+
+#include <utility>
+#include "unicode/utypes.h"
+#include "unicode/uobject.h"
+#include "uhash.h"
+
+U_NAMESPACE_BEGIN
+
+/**
+ * Map of const char * keys & values.
+ * Stores pointers as is: Does not own/copy/adopt/release strings.
+ */
+class CharStringMap final : public UMemory {
+public:
+    /** Constructs an unusable non-map. */
+    CharStringMap() : map(nullptr) {}
+    CharStringMap(int32_t size, UErrorCode &errorCode) {
+        map = uhash_openSize(uhash_hashChars, uhash_compareChars, uhash_compareChars,
+                             size, &errorCode);
+    }
+    CharStringMap(CharStringMap &&other) U_NOEXCEPT : map(other.map) {
+        other.map = nullptr;
+    }
+    CharStringMap(const CharStringMap &other) = delete;
+    ~CharStringMap() {
+        uhash_close(map);
+    }
+
+    CharStringMap &operator=(CharStringMap &&other) U_NOEXCEPT {
+        map = other.map;
+        other.map = nullptr;
+        return *this;
+    }
+    CharStringMap &operator=(const CharStringMap &other) = delete;
+
+    const char *get(const char *key) const { return static_cast<const char *>(uhash_get(map, key)); }
+    void put(const char *key, const char *value, UErrorCode &errorCode) {
+        uhash_put(map, const_cast<char *>(key), const_cast<char *>(value), &errorCode);
+    }
+
+private:
+    UHashtable *map;
+};
+
+U_NAMESPACE_END
+
+#endif  //  __CHARSTRMAP_H__
diff --git a/icu4c/source/common/cmemory.h b/icu4c/source/common/cmemory.h
index 8d60442..a9d9424 100644
--- a/icu4c/source/common/cmemory.h
+++ b/icu4c/source/common/cmemory.h
@@ -292,14 +292,21 @@
     /**
      * Default constructor initializes with internal T[stackCapacity] buffer.
      */
-    MaybeStackArray() : ptr(stackArray), capacity(stackCapacity), needToRelease(FALSE) {}
+    MaybeStackArray() : ptr(stackArray), capacity(stackCapacity), needToRelease(false) {}
     /**
      * Automatically allocates the heap array if the argument is larger than the stack capacity.
      * Intended for use when an approximate capacity is known at compile time but the true
      * capacity is not known until runtime.
      */
-    MaybeStackArray(int32_t newCapacity) : MaybeStackArray() {
-        if (capacity < newCapacity) { resize(newCapacity); }
+    MaybeStackArray(int32_t newCapacity, UErrorCode status) : MaybeStackArray() {
+        if (U_FAILURE(status)) {
+            return;
+        }
+        if (capacity < newCapacity) {
+            if (resize(newCapacity) == nullptr) {
+                status = U_MEMORY_ALLOCATION_ERROR;
+            }
+        }
     }
     /**
      * Destructor deletes the array (if owned).
@@ -355,7 +362,7 @@
             releaseArray();
             ptr=otherArray;
             capacity=otherCapacity;
-            needToRelease=FALSE;
+            needToRelease=false;
         }
     }
     /**
@@ -380,6 +387,20 @@
      *         caller becomes responsible for deleting the array
      */
     inline T *orphanOrClone(int32_t length, int32_t &resultCapacity);
+
+protected:
+    // Resizes the array to the size of src, then copies the contents of src.
+    void copyFrom(const MaybeStackArray &src, UErrorCode &status) {
+        if (U_FAILURE(status)) {
+            return;
+        }
+        if (this->resize(src.capacity, 0) == NULL) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+            return;
+        }
+        uprv_memcpy(this->ptr, src.ptr, (size_t)capacity * sizeof(T));
+    }
+
 private:
     T *ptr;
     int32_t capacity;
@@ -393,14 +414,14 @@
     void resetToStackArray() {
         ptr=stackArray;
         capacity=stackCapacity;
-        needToRelease=FALSE;
+        needToRelease=false;
     }
     /* No comparison operators with other MaybeStackArray's. */
-    bool operator==(const MaybeStackArray & /*other*/) {return FALSE;}
-    bool operator!=(const MaybeStackArray & /*other*/) {return TRUE;}
+    bool operator==(const MaybeStackArray & /*other*/) = delete;
+    bool operator!=(const MaybeStackArray & /*other*/) = delete;
     /* No ownership transfer: No copy constructor, no assignment operator. */
-    MaybeStackArray(const MaybeStackArray & /*other*/) {}
-    void operator=(const MaybeStackArray & /*other*/) {}
+    MaybeStackArray(const MaybeStackArray & /*other*/) = delete;
+    void operator=(const MaybeStackArray & /*other*/) = delete;
 };
 
 template<typename T, int32_t stackCapacity>
@@ -435,7 +456,7 @@
 inline T *MaybeStackArray<T, stackCapacity>::resize(int32_t newCapacity, int32_t length) {
     if(newCapacity>0) {
 #if U_DEBUG && defined(UPRV_MALLOC_COUNT)
-      ::fprintf(::stderr,"MaybeStacArray (resize) alloc %d * %lu\n", newCapacity,sizeof(T));
+        ::fprintf(::stderr, "MaybeStackArray (resize) alloc %d * %lu\n", newCapacity, sizeof(T));
 #endif
         T *p=(T *)uprv_malloc(newCapacity*sizeof(T));
         if(p!=NULL) {
@@ -451,7 +472,7 @@
             releaseArray();
             ptr=p;
             capacity=newCapacity;
-            needToRelease=TRUE;
+            needToRelease=true;
         }
         return p;
     } else {
@@ -507,7 +528,7 @@
     /**
      * Default constructor initializes with internal H+T[stackCapacity] buffer.
      */
-    MaybeStackHeaderAndArray() : ptr(&stackHeader), capacity(stackCapacity), needToRelease(FALSE) {}
+    MaybeStackHeaderAndArray() : ptr(&stackHeader), capacity(stackCapacity), needToRelease(false) {}
     /**
      * Destructor deletes the memory (if owned).
      */
@@ -556,7 +577,7 @@
             releaseMemory();
             ptr=otherMemory;
             capacity=otherCapacity;
-            needToRelease=FALSE;
+            needToRelease=false;
         }
     }
     /**
@@ -595,8 +616,8 @@
         }
     }
     /* No comparison operators with other MaybeStackHeaderAndArray's. */
-    bool operator==(const MaybeStackHeaderAndArray & /*other*/) {return FALSE;}
-    bool operator!=(const MaybeStackHeaderAndArray & /*other*/) {return TRUE;}
+    bool operator==(const MaybeStackHeaderAndArray & /*other*/) {return false;}
+    bool operator!=(const MaybeStackHeaderAndArray & /*other*/) {return true;}
     /* No ownership transfer: No copy constructor, no assignment operator. */
     MaybeStackHeaderAndArray(const MaybeStackHeaderAndArray & /*other*/) {}
     void operator=(const MaybeStackHeaderAndArray & /*other*/) {}
@@ -625,7 +646,7 @@
             releaseMemory();
             ptr=p;
             capacity=newCapacity;
-            needToRelease=TRUE;
+            needToRelease=true;
         }
         return p;
     } else {
@@ -657,7 +678,7 @@
     resultCapacity=length;
     ptr=&stackHeader;
     capacity=stackCapacity;
-    needToRelease=FALSE;
+    needToRelease=false;
     return p;
 }
 
@@ -704,9 +725,14 @@
     }
 
     MemoryPool& operator=(MemoryPool&& other) U_NOEXCEPT {
-        fCount = other.fCount;
-        fPool = std::move(other.fPool);
-        other.fCount = 0;
+        // Since `this` may contain instances that need to be deleted, we can't
+        // just throw them away and replace them with `other`. The normal way of
+        // dealing with this in C++ is to swap `this` and `other`, rather than
+        // simply overwrite: the destruction of `other` can then take care of
+        // running MemoryPool::~MemoryPool() over the still-to-be-deallocated
+        // instances.
+        std::swap(fCount, other.fCount);
+        std::swap(fPool, other.fPool);
         return *this;
     }
 
@@ -728,6 +754,18 @@
         return fPool[fCount++] = new T(std::forward<Args>(args)...);
     }
 
+    template <typename... Args>
+    T* createAndCheckErrorCode(UErrorCode &status, Args &&... args) {
+        if (U_FAILURE(status)) {
+            return nullptr;
+        }
+        T *pointer = this->create(args...);
+        if (U_SUCCESS(status) && pointer == nullptr) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+        }
+        return pointer;
+    }
+
     /**
      * @return Number of elements that have been allocated.
      */
@@ -763,14 +801,16 @@
 template<typename T, int32_t stackCapacity = 8>
 class MaybeStackVector : protected MemoryPool<T, stackCapacity> {
 public:
-    using MemoryPool<T, stackCapacity>::MemoryPool;
-    using MemoryPool<T, stackCapacity>::operator=;
-
     template<typename... Args>
     T* emplaceBack(Args&&... args) {
         return this->create(args...);
     }
 
+    template <typename... Args>
+    T *emplaceBackAndCheckErrorCode(UErrorCode &status, Args &&... args) {
+        return this->createAndCheckErrorCode(status, args...);
+    }
+
     int32_t length() const {
         return this->fCount;
     }
@@ -779,6 +819,10 @@
         return this->fPool.getAlias();
     }
 
+    const T *const *getAlias() const {
+        return this->fPool.getAlias();
+    }
+
     /**
      * Array item access (read-only).
      * No index bounds check.
@@ -798,19 +842,6 @@
     T* operator[](ptrdiff_t i) {
         return this->fPool[i];
     }
-
-    /**
-     * Append all the items from another MaybeStackVector to this one.
-     */
-    void appendAll(const MaybeStackVector& other, UErrorCode& status) {
-        for (int32_t i = 0; i < other.fCount; i++) {
-            T* item = emplaceBack(*other[i]);
-            if (!item) {
-                status = U_MEMORY_ALLOCATION_ERROR;
-                return;
-            }
-        }
-    }
 };
 
 
diff --git a/icu4c/source/common/common.vcxproj b/icu4c/source/common/common.vcxproj
index 3cee657..d7f668e 100644
--- a/icu4c/source/common/common.vcxproj
+++ b/icu4c/source/common/common.vcxproj
@@ -16,22 +16,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
@@ -74,7 +58,7 @@
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\$(IcuBinOutputDir)\icuuc67d.dll</OutputFile>
+      <OutputFile>..\..\$(IcuBinOutputDir)\icuuc68d.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icuucd.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\$(IcuLibOutputDir)\icuucd.lib</ImportLibrary>
     </Link>
@@ -86,7 +70,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\$(IcuBinOutputDir)\icuuc67.dll</OutputFile>
+      <OutputFile>..\..\$(IcuBinOutputDir)\icuuc68.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icuuc.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\$(IcuLibOutputDir)\icuuc.lib</ImportLibrary>
     </Link>
@@ -357,7 +341,9 @@
     <ClInclude Include="localeprioritylist.h" />
     <ClInclude Include="locbased.h" />
     <ClInclude Include="locdistance.h" />
+    <ClInclude Include="charstrmap.h" />
     <ClInclude Include="loclikelysubtags.h" />
+    <ClInclude Include="uniquecharstr.h" />
     <ClInclude Include="locutil.h" />
     <ClInclude Include="lsr.h" />
     <ClInclude Include="sharedobject.h" />
diff --git a/icu4c/source/common/common.vcxproj.filters b/icu4c/source/common/common.vcxproj.filters
index 5fabc6f..f1ba901 100644
--- a/icu4c/source/common/common.vcxproj.filters
+++ b/icu4c/source/common/common.vcxproj.filters
@@ -840,6 +840,12 @@
     <ClInclude Include="locdistance.h">
       <Filter>locales &amp; resources</Filter>
     </ClInclude>
+    <ClInclude Include="charstrmap.h">
+      <Filter>locales &amp; resources</Filter>
+    </ClInclude>
+    <ClInclude Include="uniquecharstr.h">
+      <Filter>locales &amp; resources</Filter>
+    </ClInclude>
     <ClInclude Include="loclikelysubtags.h">
       <Filter>locales &amp; resources</Filter>
     </ClInclude>
diff --git a/icu4c/source/common/common_uwp.vcxproj b/icu4c/source/common/common_uwp.vcxproj
index cd97800..a579172 100644
--- a/icu4c/source/common/common_uwp.vcxproj
+++ b/icu4c/source/common/common_uwp.vcxproj
@@ -52,10 +52,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
@@ -129,7 +125,7 @@
     <Link>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <AdditionalDependencies>vccorlib.lib;msvcrt.lib;vcruntime.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>..\..\$(IcuBinOutputDir)\icuuc67.dll</OutputFile>
+      <OutputFile>..\..\$(IcuBinOutputDir)\icuuc68.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icuuc.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\$(IcuLibOutputDir)\icuuc.lib</ImportLibrary>
     </Link>
@@ -152,7 +148,7 @@
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <AdditionalDependencies>vccorlibd.lib;msvcrtd.lib;vcruntimed.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>..\..\$(IcuBinOutputDir)\icuuc67d.dll</OutputFile>
+      <OutputFile>..\..\$(IcuBinOutputDir)\icuuc68d.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icuucd.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\$(IcuLibOutputDir)\icuucd.lib</ImportLibrary>
     </Link>
@@ -480,6 +476,8 @@
     <ClInclude Include="localeprioritylist.h" />
     <ClInclude Include="locbased.h" />
     <ClInclude Include="locdistance.h" />
+    <ClInclude Include="charstrmap.h" />
+    <ClInclude Include="uniquecharstr.h" />
     <ClInclude Include="loclikelysubtags.h" />
     <ClInclude Include="locutil.h" />
     <ClInclude Include="lsr.h" />
@@ -532,4 +530,4 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" Condition="'$(SkipUWP)'!='true'" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/icu4c/source/common/dictbe.h b/icu4c/source/common/dictbe.h
index 731bfdf..4ea676f 100644
--- a/icu4c/source/common/dictbe.h
+++ b/icu4c/source/common/dictbe.h
@@ -59,7 +59,7 @@
    * a particular kind of break.</p>
    *
    * @param c A character which begins a run that the engine might handle
-   * @return TRUE if this engine handles the particular character and break
+   * @return true if this engine handles the particular character and break
    * type.
    */
   virtual UBool handles(UChar32 c) const;
diff --git a/icu4c/source/common/icuplug.cpp b/icu4c/source/common/icuplug.cpp
index c6439cc..4ab8c66 100644
--- a/icu4c/source/common/icuplug.cpp
+++ b/icu4c/source/common/icuplug.cpp
@@ -145,7 +145,7 @@
   return -1;
 }
 
-U_INTERNAL char * U_EXPORT2
+U_CAPI char * U_EXPORT2
 uplug_findLibrary(void *lib, UErrorCode *status) {
   int32_t libEnt;
   char *ret = NULL;
@@ -161,7 +161,7 @@
   return ret;
 }
 
-U_INTERNAL void * U_EXPORT2
+U_CAPI void * U_EXPORT2
 uplug_openLibrary(const char *libName, UErrorCode *status) {
   int32_t libEntry = -1;
   void *lib = NULL;
@@ -209,7 +209,7 @@
   return lib;
 }
 
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 uplug_closeLibrary(void *lib, UErrorCode *status) {
   int32_t i;
     
@@ -507,7 +507,7 @@
   return data->config;
 }
 
-U_INTERNAL UPlugData* U_EXPORT2
+U_CAPI UPlugData* U_EXPORT2
 uplug_getPlugInternal(int32_t n) { 
   if(n <0 || n >= pluginCount) {
     return NULL;
@@ -707,7 +707,7 @@
 static char plugin_file[2048] = "";
 #endif
 
-U_INTERNAL const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uplug_getPluginFile() {
 #if U_ENABLE_DYLOAD && !UCONFIG_NO_FILE_IO
   return plugin_file;
@@ -782,8 +782,8 @@
     /* plugin_file is not used for processing - it is only used 
        so that uplug_getPluginFile() works (i.e. icuinfo)
     */
-    uprv_strncpy(plugin_file, pluginFile.data(), sizeof(plugin_file));
-        
+    pluginFile.extract(plugin_file, sizeof(plugin_file), *status);
+
 #if UPLUG_TRACE
     DBG((stderr, "pluginfile= %s len %d/%d\n", plugin_file, (int)strlen(plugin_file), (int)sizeof(plugin_file)));
 #endif
diff --git a/icu4c/source/common/icuplugimp.h b/icu4c/source/common/icuplugimp.h
index 3cad8f8..9df3092 100644
--- a/icu4c/source/common/icuplugimp.h
+++ b/icu4c/source/common/icuplugimp.h
@@ -36,7 +36,7 @@
  * @return the library pointer, or NULL
  * @internal internal use only
  */
-U_INTERNAL void * U_EXPORT2
+U_CAPI void * U_EXPORT2
 uplug_openLibrary(const char *libName, UErrorCode *status);
 
 /**
@@ -45,7 +45,7 @@
  * @param status error code
  * @internal internal use only
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 uplug_closeLibrary(void *lib, UErrorCode *status);
 
 /**
@@ -55,7 +55,7 @@
  * @return the library name, or NULL if not found.
  * @internal internal use only
  */
-U_INTERNAL  char * U_EXPORT2
+U_CAPI  char * U_EXPORT2
 uplug_findLibrary(void *lib, UErrorCode *status);
 
 /** @} */
@@ -69,21 +69,21 @@
  * @param status error result
  * @internal - Internal use only.
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 uplug_init(UErrorCode *status);
 
 /**
  * Get raw plug N
  * @internal - Internal use only
  */ 
-U_INTERNAL UPlugData* U_EXPORT2
+U_CAPI UPlugData* U_EXPORT2
 uplug_getPlugInternal(int32_t n);
 
 /**
  * Get the name of the plugin file. 
  * @internal - Internal use only.
  */
-U_INTERNAL const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uplug_getPluginFile(void);
 
 /** @} */
diff --git a/icu4c/source/common/localematcher.cpp b/icu4c/source/common/localematcher.cpp
index 85db8c8..5795cbf 100644
--- a/icu4c/source/common/localematcher.cpp
+++ b/icu4c/source/common/localematcher.cpp
@@ -1,12 +1,9 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // localematcher.cpp
 // created: 2019may08 Markus W. Scherer
 
-#ifndef __LOCMATCHER_H__
-#define __LOCMATCHER_H__
-
 #include "unicode/utypes.h"
 #include "unicode/localebuilder.h"
 #include "unicode/localematcher.h"
@@ -131,6 +128,7 @@
         thresholdDistance_(src.thresholdDistance_),
         demotion_(src.demotion_),
         defaultLocale_(src.defaultLocale_),
+        withDefault_(src.withDefault_),
         favor_(src.favor_),
         direction_(src.direction_) {
     src.supportedLocales_ = nullptr;
@@ -140,6 +138,8 @@
 LocaleMatcher::Builder::~Builder() {
     delete supportedLocales_;
     delete defaultLocale_;
+    delete maxDistanceDesired_;
+    delete maxDistanceSupported_;
 }
 
 LocaleMatcher::Builder &LocaleMatcher::Builder::operator=(LocaleMatcher::Builder &&src) U_NOEXCEPT {
@@ -150,6 +150,7 @@
     thresholdDistance_ = src.thresholdDistance_;
     demotion_ = src.demotion_;
     defaultLocale_ = src.defaultLocale_;
+    withDefault_ = src.withDefault_,
     favor_ = src.favor_;
     direction_ = src.direction_;
 
@@ -229,6 +230,14 @@
     return *this;
 }
 
+LocaleMatcher::Builder &LocaleMatcher::Builder::setNoDefaultLocale() {
+    if (U_FAILURE(errorCode_)) { return *this; }
+    delete defaultLocale_;
+    defaultLocale_ = nullptr;
+    withDefault_ = false;
+    return *this;
+}
+
 LocaleMatcher::Builder &LocaleMatcher::Builder::setDefaultLocale(const Locale *defaultLocale) {
     if (U_FAILURE(errorCode_)) { return *this; }
     Locale *clone = nullptr;
@@ -241,6 +250,7 @@
     }
     delete defaultLocale_;
     defaultLocale_ = clone;
+    withDefault_ = true;
     return *this;
 }
 
@@ -256,6 +266,24 @@
     return *this;
 }
 
+LocaleMatcher::Builder &LocaleMatcher::Builder::setMaxDistance(const Locale &desired,
+                                                               const Locale &supported) {
+    if (U_FAILURE(errorCode_)) { return *this; }
+    Locale *desiredClone = desired.clone();
+    Locale *supportedClone = supported.clone();
+    if (desiredClone == nullptr || supportedClone == nullptr) {
+        delete desiredClone;  // in case only one could not be allocated
+        delete supportedClone;
+        errorCode_ = U_MEMORY_ALLOCATION_ERROR;
+        return *this;
+    }
+    delete maxDistanceDesired_;
+    delete maxDistanceSupported_;
+    maxDistanceDesired_ = desiredClone;
+    maxDistanceSupported_ = supportedClone;
+    return *this;
+}
+
 #if 0
 /**
  * <i>Internal only!</i>
@@ -340,9 +368,6 @@
         supportedLSRs(nullptr), supportedIndexes(nullptr), supportedLSRsLength(0),
         ownedDefaultLocale(nullptr), defaultLocale(nullptr) {
     if (U_FAILURE(errorCode)) { return; }
-    if (thresholdDistance < 0) {
-        thresholdDistance = localeDistance.getDefaultScriptDistance();
-    }
     const Locale *def = builder.defaultLocale_;
     LSR builderDefaultLSR;
     const LSR *defLSR = nullptr;
@@ -408,22 +433,20 @@
         int32_t suppLength = 0;
         // Determine insertion order.
         // Add locales immediately that are equivalent to the default.
-        MaybeStackArray<int8_t, 100> order(supportedLocalesLength);
-        if (order.getAlias() == nullptr) {
-            errorCode = U_MEMORY_ALLOCATION_ERROR;
-            return;
-        }
+        MaybeStackArray<int8_t, 100> order(supportedLocalesLength, errorCode);
+        if (U_FAILURE(errorCode)) { return; }
         int32_t numParadigms = 0;
         for (int32_t i = 0; i < supportedLocalesLength; ++i) {
             const Locale &locale = *supportedLocales[i];
             const LSR &lsr = lsrs[i];
-            if (defLSR == nullptr) {
+            if (defLSR == nullptr && builder.withDefault_) {
+                // Implicit default locale = first supported locale, if not turned off.
                 U_ASSERT(i == 0);
                 def = &locale;
                 defLSR = &lsr;
                 order[i] = 1;
                 suppLength = putIfAbsent(lsr, 0, suppLength, errorCode);
-            } else if (lsr.isEquivalentTo(*defLSR)) {
+            } else if (defLSR != nullptr && lsr.isEquivalentTo(*defLSR)) {
                 order[i] = 1;
                 suppLength = putIfAbsent(lsr, i, suppLength, errorCode);
             } else if (localeDistance.isParadigmLSR(lsr)) {
@@ -458,6 +481,25 @@
     if (builder.demotion_ == ULOCMATCH_DEMOTION_REGION) {
         demotionPerDesiredLocale = localeDistance.getDefaultDemotionPerDesiredLocale();
     }
+
+    if (thresholdDistance >= 0) {
+        // already copied
+    } else if (builder.maxDistanceDesired_ != nullptr) {
+        LSR suppLSR = getMaximalLsrOrUnd(likelySubtags, *builder.maxDistanceSupported_, errorCode);
+        const LSR *pSuppLSR = &suppLSR;
+        int32_t indexAndDistance = localeDistance.getBestIndexAndDistance(
+                getMaximalLsrOrUnd(likelySubtags, *builder.maxDistanceDesired_, errorCode),
+                &pSuppLSR, 1,
+                LocaleDistance::shiftDistance(100), favorSubtag, direction);
+        if (U_SUCCESS(errorCode)) {
+            // +1 for an exclusive threshold from an inclusive max.
+            thresholdDistance = LocaleDistance::getDistanceFloor(indexAndDistance) + 1;
+        } else {
+            thresholdDistance = 0;
+        }
+    } else {
+        thresholdDistance = localeDistance.getDefaultScriptDistance();
+    }
 }
 
 LocaleMatcher::LocaleMatcher(LocaleMatcher &&src) U_NOEXCEPT :
@@ -683,6 +725,18 @@
     return supportedIndexes[bestSupportedLsrIndex];
 }
 
+UBool LocaleMatcher::isMatch(const Locale &desired, const Locale &supported,
+                             UErrorCode &errorCode) const {
+    LSR suppLSR = getMaximalLsrOrUnd(likelySubtags, supported, errorCode);
+    if (U_FAILURE(errorCode)) { return 0; }
+    const LSR *pSuppLSR = &suppLSR;
+    int32_t indexAndDistance = localeDistance.getBestIndexAndDistance(
+            getMaximalLsrOrUnd(likelySubtags, desired, errorCode),
+            &pSuppLSR, 1,
+            LocaleDistance::shiftDistance(thresholdDistance), favorSubtag, direction);
+    return indexAndDistance >= 0;
+}
+
 double LocaleMatcher::internalMatch(const Locale &desired, const Locale &supported, UErrorCode &errorCode) const {
     // Returns the inverse of the distance: That is, 1-distance(desired, supported).
     LSR suppLSR = getMaximalLsrOrUnd(likelySubtags, supported, errorCode);
@@ -790,5 +844,3 @@
     return acceptLanguage(*availableLocales, desiredLocales,
                           result, resultAvailable, outResult, *status);
 }
-
-#endif  // __LOCMATCHER_H__
diff --git a/icu4c/source/common/localeprioritylist.cpp b/icu4c/source/common/localeprioritylist.cpp
index cee4082..8916b12 100644
--- a/icu4c/source/common/localeprioritylist.cpp
+++ b/icu4c/source/common/localeprioritylist.cpp
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // localeprioritylist.cpp
 // created: 2019jul11 Markus W. Scherer
diff --git a/icu4c/source/common/localeprioritylist.h b/icu4c/source/common/localeprioritylist.h
index 80ca38a..41e9d3e 100644
--- a/icu4c/source/common/localeprioritylist.h
+++ b/icu4c/source/common/localeprioritylist.h
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // localeprioritylist.h
 // created: 2019jul11 Markus W. Scherer
diff --git a/icu4c/source/common/locdispnames.cpp b/icu4c/source/common/locdispnames.cpp
index d92348e..47c0667 100644
--- a/icu4c/source/common/locdispnames.cpp
+++ b/icu4c/source/common/locdispnames.cpp
@@ -26,6 +26,8 @@
 #include "unicode/uloc.h"
 #include "unicode/ures.h"
 #include "unicode/ustring.h"
+#include "bytesinkutil.h"
+#include "charstr.h"
 #include "cmemory.h"
 #include "cstring.h"
 #include "putilimp.h"
@@ -406,20 +408,26 @@
                       UChar *dest, int32_t destCapacity,
                       UErrorCode *pErrorCode)
 {
-	UErrorCode err = U_ZERO_ERROR;
-	int32_t res = _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
+    UErrorCode err = U_ZERO_ERROR;
+    int32_t res = _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
                 uloc_getScript, _kScriptsStandAlone, &err);
-	
-	if ( err == U_USING_DEFAULT_WARNING ) {
+
+    if (destCapacity == 0 && err == U_BUFFER_OVERFLOW_ERROR) {
+        // For preflight, return the max of the value and the fallback.
+        int32_t fallback_res = _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
+                                                           uloc_getScript, _kScripts, pErrorCode);
+        return (fallback_res > res) ? fallback_res : res;
+    }
+    if ( err == U_USING_DEFAULT_WARNING ) {
         return _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
-                    uloc_getScript, _kScripts, pErrorCode);
-	} else {
-		*pErrorCode = err;
-		return res;
-	}
+                                           uloc_getScript, _kScripts, pErrorCode);
+    } else {
+        *pErrorCode = err;
+        return res;
+    }
 }
 
-U_INTERNAL int32_t U_EXPORT2
+static int32_t
 uloc_getDisplayScriptInContext(const char* locale,
                       const char* displayLocale,
                       UChar *dest, int32_t destCapacity,
@@ -727,7 +735,7 @@
                     int32_t padLen;
                     patPos+=subLen;
                     padLen=(subi==0 ? sub1Pos : patLen)-patPos;
-                    if(length+padLen < destCapacity) {
+                    if(length+padLen <= destCapacity) {
                         p=dest+length;
                         for(int32_t i=0;i<padLen;++i) {
                             *p++=pattern[patPos++];
@@ -805,10 +813,6 @@
                                UErrorCode* status){
 
 
-    char keywordValue[ULOC_FULLNAME_CAPACITY*4];
-    int32_t capacity = ULOC_FULLNAME_CAPACITY*4;
-    int32_t keywordValueLen =0;
-
     /* argument checking */
     if(status==NULL || U_FAILURE(*status)) {
         return 0;
@@ -820,10 +824,11 @@
     }
 
     /* get the keyword value */
-    keywordValue[0]=0;
-    keywordValueLen = uloc_getKeywordValue(locale, keyword, keywordValue, capacity, status);
-    if (*status == U_STRING_NOT_TERMINATED_WARNING)
-      *status = U_BUFFER_OVERFLOW_ERROR;
+    CharString keywordValue;
+    {
+        CharStringByteSink sink(&keywordValue);
+        ulocimp_getKeywordValue(locale, keyword, sink, status);
+    }
 
     /* 
      * if the keyword is equal to currency .. then to get the display name 
@@ -839,7 +844,7 @@
         icu::LocalUResourceBundlePointer currencies(
                 ures_getByKey(bundle.getAlias(), _kCurrencies, NULL, status));
         icu::LocalUResourceBundlePointer currency(
-                ures_getByKeyWithFallback(currencies.getAlias(), keywordValue, NULL, status));
+                ures_getByKeyWithFallback(currencies.getAlias(), keywordValue.data(), NULL, status));
 
         dispName = ures_getStringByIndex(currency.getAlias(), UCURRENCY_DISPLAY_NAME_INDEX, &dispNameLen, status);
 
@@ -863,12 +868,12 @@
             }
         }else{
             /* we have not found the display name for the value .. just copy over */
-            if(keywordValueLen <= destCapacity){
-                u_charsToUChars(keywordValue, dest, keywordValueLen);
-                return u_terminateUChars(dest, destCapacity, keywordValueLen, status);
+            if(keywordValue.length() <= destCapacity){
+                u_charsToUChars(keywordValue.data(), dest, keywordValue.length());
+                return u_terminateUChars(dest, destCapacity, keywordValue.length(), status);
             }else{
                  *status = U_BUFFER_OVERFLOW_ERROR;
-                return keywordValueLen;
+                return keywordValue.length();
             }
         }
 
@@ -877,8 +882,8 @@
 
         return _getStringOrCopyKey(U_ICUDATA_LANG, displayLocale,
                                    _kTypes, keyword, 
-                                   keywordValue,
-                                   keywordValue,
+                                   keywordValue.data(),
+                                   keywordValue.data(),
                                    dest, destCapacity,
                                    status);
     }
diff --git a/icu4c/source/common/locdistance.cpp b/icu4c/source/common/locdistance.cpp
index 18e4d91..ff88927 100644
--- a/icu4c/source/common/locdistance.cpp
+++ b/icu4c/source/common/locdistance.cpp
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // locdistance.cpp
 // created: 2019may08 Markus W. Scherer
diff --git a/icu4c/source/common/locdistance.h b/icu4c/source/common/locdistance.h
index ad84151..51b777e 100644
--- a/icu4c/source/common/locdistance.h
+++ b/icu4c/source/common/locdistance.h
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // locdistance.h
 // created: 2019may08 Markus W. Scherer
@@ -39,6 +39,10 @@
         return shiftedDistance / (1 << DISTANCE_SHIFT);
     }
 
+    static int32_t getDistanceFloor(int32_t indexAndDistance) {
+        return (indexAndDistance & DISTANCE_MASK) >> DISTANCE_SHIFT;
+    }
+
     static int32_t getIndex(int32_t indexAndDistance) {
         // assert indexAndDistance >= 0;
         return indexAndDistance >> INDEX_SHIFT;
@@ -79,10 +83,6 @@
     // tic constexpr int32_t MAX_INDEX = 0x1fffff;  // avoids sign bit
     static constexpr int32_t INDEX_NEG_1 = 0xfffffc00;
 
-    static int32_t getDistanceFloor(int32_t indexAndDistance) {
-        return (indexAndDistance & DISTANCE_MASK) >> DISTANCE_SHIFT;
-    }
-
     LocaleDistance(const LocaleDistanceData &data, const XLikelySubtags &likely);
     LocaleDistance(const LocaleDistance &other) = delete;
     LocaleDistance &operator=(const LocaleDistance &other) = delete;
diff --git a/icu4c/source/common/locid.cpp b/icu4c/source/common/locid.cpp
index 753a452..874e4a7 100644
--- a/icu4c/source/common/locid.cpp
+++ b/icu4c/source/common/locid.cpp
@@ -35,6 +35,7 @@
 
 #include "unicode/bytestream.h"
 #include "unicode/locid.h"
+#include "unicode/localebuilder.h"
 #include "unicode/strenum.h"
 #include "unicode/stringpiece.h"
 #include "unicode/uloc.h"
@@ -42,6 +43,7 @@
 
 #include "bytesinkutil.h"
 #include "charstr.h"
+#include "charstrmap.h"
 #include "cmemory.h"
 #include "cstring.h"
 #include "mutex.h"
@@ -51,7 +53,9 @@
 #include "uhash.h"
 #include "ulocimp.h"
 #include "umutex.h"
+#include "uniquecharstr.h"
 #include "ustr_imp.h"
+#include "uvector.h"
 
 U_CDECL_BEGIN
 static UBool U_CALLCONV locale_cleanup(void);
@@ -102,12 +106,6 @@
     eMAX_LOCALES
 } ELocalePos;
 
-U_CFUNC int32_t locale_getKeywords(const char *localeID,
-            char prev,
-            char *keywords, int32_t keywordCapacity,
-            UBool valuesToo,
-            UErrorCode *status);
-
 U_CDECL_BEGIN
 //
 // Deleter function for Locales owned by the default Locale hash table/
@@ -252,6 +250,7 @@
 // '_'
 // In the platform codepage.
 #define SEP_CHAR '_'
+#define NULL_CHAR '\0'
 
 Locale::~Locale()
 {
@@ -506,38 +505,1132 @@
     return (uprv_strcmp(other.fullName, fullName) == 0);
 }
 
-#define ISASCIIALPHA(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z'))
-
 namespace {
 
-CharString& AppendLSCVE(CharString& out, const char* language, const char* script,
-                 const char* country, const char* variants, const char* extension,
-                 UErrorCode& status) {
-    out.append(language, status);
-    if (script && script[0] != '\0') {
-        out.append('_', status);
-        out.append(script, status);
+UInitOnce gKnownCanonicalizedInitOnce = U_INITONCE_INITIALIZER;
+UHashtable *gKnownCanonicalized = nullptr;
+
+static const char* const KNOWN_CANONICALIZED[] = {
+    "c",
+    // Commonly used locales known are already canonicalized
+    "af", "af_ZA", "am", "am_ET", "ar", "ar_001", "as", "as_IN", "az", "az_AZ",
+    "be", "be_BY", "bg", "bg_BG", "bn", "bn_IN", "bs", "bs_BA", "ca", "ca_ES",
+    "cs", "cs_CZ", "cy", "cy_GB", "da", "da_DK", "de", "de_DE", "el", "el_GR",
+    "en", "en_GB", "en_US", "es", "es_419", "es_ES", "et", "et_EE", "eu",
+    "eu_ES", "fa", "fa_IR", "fi", "fi_FI", "fil", "fil_PH", "fr", "fr_FR",
+    "ga", "ga_IE", "gl", "gl_ES", "gu", "gu_IN", "he", "he_IL", "hi", "hi_IN",
+    "hr", "hr_HR", "hu", "hu_HU", "hy", "hy_AM", "id", "id_ID", "is", "is_IS",
+    "it", "it_IT", "ja", "ja_JP", "jv", "jv_ID", "ka", "ka_GE", "kk", "kk_KZ",
+    "km", "km_KH", "kn", "kn_IN", "ko", "ko_KR", "ky", "ky_KG", "lo", "lo_LA",
+    "lt", "lt_LT", "lv", "lv_LV", "mk", "mk_MK", "ml", "ml_IN", "mn", "mn_MN",
+    "mr", "mr_IN", "ms", "ms_MY", "my", "my_MM", "nb", "nb_NO", "ne", "ne_NP",
+    "nl", "nl_NL", "or", "or_IN", "pa", "pa_IN", "pl", "pl_PL", "ps", "ps_AF",
+    "pt", "pt_BR", "pt_PT", "ro", "ro_RO", "ru", "ru_RU", "sd", "sd_IN", "si",
+    "si_LK", "sk", "sk_SK", "sl", "sl_SI", "so", "so_SO", "sq", "sq_AL", "sr",
+    "sr_Cyrl_RS", "sr_Latn", "sr_RS", "sv", "sv_SE", "sw", "sw_TZ", "ta",
+    "ta_IN", "te", "te_IN", "th", "th_TH", "tk", "tk_TM", "tr", "tr_TR", "uk",
+    "uk_UA", "ur", "ur_PK", "uz", "uz_UZ", "vi", "vi_VN", "yue", "yue_Hant",
+    "yue_Hant_HK", "yue_HK", "zh", "zh_CN", "zh_Hans", "zh_Hans_CN", "zh_Hant",
+    "zh_Hant_TW", "zh_TW", "zu", "zu_ZA"
+};
+
+static UBool U_CALLCONV cleanupKnownCanonicalized() {
+    gKnownCanonicalizedInitOnce.reset();
+    if (gKnownCanonicalized) { uhash_close(gKnownCanonicalized); }
+    return TRUE;
+}
+
+static void U_CALLCONV loadKnownCanonicalized(UErrorCode &status) {
+    ucln_common_registerCleanup(UCLN_COMMON_LOCALE_KNOWN_CANONICALIZED,
+                                cleanupKnownCanonicalized);
+    LocalUHashtablePointer newKnownCanonicalizedMap(
+        uhash_open(uhash_hashChars, uhash_compareChars, nullptr, &status));
+    for (int32_t i = 0;
+            U_SUCCESS(status) && i < UPRV_LENGTHOF(KNOWN_CANONICALIZED);
+            i++) {
+        uhash_puti(newKnownCanonicalizedMap.getAlias(),
+                   (void*)KNOWN_CANONICALIZED[i],
+                   1, &status);
     }
-    if (country && country[0] != '\0') {
-        out.append('_', status);
-        out.append(country, status);
+    if (U_FAILURE(status)) {
+        return;
     }
-    if (variants && variants[0] != '\0') {
-        if ((script == nullptr || script[0] == '\0') &&
-            (country == nullptr || country[0] == '\0')) {
-          out.append('_', status);
+
+    gKnownCanonicalized = newKnownCanonicalizedMap.orphan();
+}
+
+class AliasData;
+
+/**
+ * A Builder class to build the alias data.
+ */
+class AliasDataBuilder {
+public:
+    AliasDataBuilder() {
+    }
+
+    // Build the AliasData from resource.
+    AliasData* build(UErrorCode &status);
+
+private:
+    void readAlias(UResourceBundle* alias,
+                   UniqueCharStrings* strings,
+                   LocalMemory<const char*>& types,
+                   LocalMemory<int32_t>& replacementIndexes,
+                   int32_t &length,
+                   void (*checkType)(const char* type),
+                   void (*checkReplacement)(const UnicodeString& replacement),
+                   UErrorCode &status);
+
+    // Read the languageAlias data from alias to
+    // strings+types+replacementIndexes
+    // The number of record will be stored into length.
+    // Allocate length items for types, to store the type field.
+    // Allocate length items for replacementIndexes,
+    // to store the index in the strings for the replacement script.
+    void readLanguageAlias(UResourceBundle* alias,
+                           UniqueCharStrings* strings,
+                           LocalMemory<const char*>& types,
+                           LocalMemory<int32_t>& replacementIndexes,
+                           int32_t &length,
+                           UErrorCode &status);
+
+    // Read the scriptAlias data from alias to
+    // strings+types+replacementIndexes
+    // Allocate length items for types, to store the type field.
+    // Allocate length items for replacementIndexes,
+    // to store the index in the strings for the replacement script.
+    void readScriptAlias(UResourceBundle* alias,
+                         UniqueCharStrings* strings,
+                         LocalMemory<const char*>& types,
+                         LocalMemory<int32_t>& replacementIndexes,
+                         int32_t &length, UErrorCode &status);
+
+    // Read the territoryAlias data from alias to
+    // strings+types+replacementIndexes
+    // Allocate length items for types, to store the type field.
+    // Allocate length items for replacementIndexes,
+    // to store the index in the strings for the replacement script.
+    void readTerritoryAlias(UResourceBundle* alias,
+                            UniqueCharStrings* strings,
+                            LocalMemory<const char*>& types,
+                            LocalMemory<int32_t>& replacementIndexes,
+                            int32_t &length, UErrorCode &status);
+
+    // Read the variantAlias data from alias to
+    // strings+types+replacementIndexes
+    // Allocate length items for types, to store the type field.
+    // Allocate length items for replacementIndexes,
+    // to store the index in the strings for the replacement variant.
+    void readVariantAlias(UResourceBundle* alias,
+                          UniqueCharStrings* strings,
+                          LocalMemory<const char*>& types,
+                          LocalMemory<int32_t>& replacementIndexes,
+                          int32_t &length, UErrorCode &status);
+};
+
+/**
+ * A class to hold the Alias Data.
+ */
+class AliasData : public UMemory {
+public:
+    static const AliasData* singleton(UErrorCode& status) {
+        if (U_FAILURE(status)) {
+            // Do not get into loadData if the status already has error.
+            return nullptr;
         }
-        out.append('_', status);
-        out.append(variants, status);
+        umtx_initOnce(AliasData::gInitOnce, &AliasData::loadData, status);
+        return gSingleton;
     }
-    if (extension && extension[0] != '\0') {
-        out.append(extension, status);
+
+    const CharStringMap& languageMap() const { return language; }
+    const CharStringMap& scriptMap() const { return script; }
+    const CharStringMap& territoryMap() const { return territory; }
+    const CharStringMap& variantMap() const { return variant; }
+
+    static void U_CALLCONV loadData(UErrorCode &status);
+    static UBool U_CALLCONV cleanup();
+
+    static UInitOnce gInitOnce;
+
+private:
+    AliasData(CharStringMap languageMap,
+              CharStringMap scriptMap,
+              CharStringMap territoryMap,
+              CharStringMap variantMap,
+              CharString* strings)
+        : language(std::move(languageMap)),
+          script(std::move(scriptMap)),
+          territory(std::move(territoryMap)),
+          variant(std::move(variantMap)),
+          strings(strings) {
+    }
+
+    ~AliasData() {
+        delete strings;
+    }
+
+    static const AliasData* gSingleton;
+
+    CharStringMap language;
+    CharStringMap script;
+    CharStringMap territory;
+    CharStringMap variant;
+    CharString* strings;
+
+    friend class AliasDataBuilder;
+};
+
+
+const AliasData* AliasData::gSingleton = nullptr;
+UInitOnce AliasData::gInitOnce = U_INITONCE_INITIALIZER;
+
+UBool U_CALLCONV
+AliasData::cleanup()
+{
+    gInitOnce.reset();
+    delete gSingleton;
+    return TRUE;
+}
+
+void
+AliasDataBuilder::readAlias(
+        UResourceBundle* alias,
+        UniqueCharStrings* strings,
+        LocalMemory<const char*>& types,
+        LocalMemory<int32_t>& replacementIndexes,
+        int32_t &length,
+        void (*checkType)(const char* type),
+        void (*checkReplacement)(const UnicodeString& replacement),
+        UErrorCode &status) {
+    if (U_FAILURE(status)) {
+        return;
+    }
+    length = ures_getSize(alias);
+    const char** rawTypes = types.allocateInsteadAndCopy(length);
+    if (rawTypes == nullptr) {
+        status = U_MEMORY_ALLOCATION_ERROR;
+        return;
+    }
+    int32_t* rawIndexes = replacementIndexes.allocateInsteadAndCopy(length);
+    if (rawIndexes == nullptr) {
+        status = U_MEMORY_ALLOCATION_ERROR;
+        return;
+    }
+    int i = 0;
+    while (ures_hasNext(alias)) {
+        LocalUResourceBundlePointer res(
+            ures_getNextResource(alias, nullptr, &status));
+        const char* aliasFrom = ures_getKey(res.getAlias());
+        UnicodeString aliasTo =
+            ures_getUnicodeStringByKey(res.getAlias(), "replacement", &status);
+
+        checkType(aliasFrom);
+        checkReplacement(aliasTo);
+
+        rawTypes[i] = aliasFrom;
+        rawIndexes[i] = strings->add(aliasTo, status);
+        i++;
+    }
+}
+
+/**
+ * Read the languageAlias data from alias to strings+types+replacementIndexes.
+ * Allocate length items for types, to store the type field. Allocate length
+ * items for replacementIndexes, to store the index in the strings for the
+ * replacement language.
+ */
+void
+AliasDataBuilder::readLanguageAlias(
+        UResourceBundle* alias,
+        UniqueCharStrings* strings,
+        LocalMemory<const char*>& types,
+        LocalMemory<int32_t>& replacementIndexes,
+        int32_t &length,
+        UErrorCode &status)
+{
+    return readAlias(
+        alias, strings, types, replacementIndexes, length,
+#if U_DEBUG
+        [](const char* type) {
+            // Assert the aliasFrom only contains the following possibilties
+            // language_REGION_variant
+            // language_REGION
+            // language_variant
+            // language
+            // und_variant
+            Locale test(type);
+            // Assert no script in aliasFrom
+            U_ASSERT(test.getScript()[0] == '\0');
+            // Assert when language is und, no REGION in aliasFrom.
+            U_ASSERT(test.getLanguage()[0] != '\0' || test.getCountry()[0] == '\0');
+        },
+#else
+        [](const char*) {},
+#endif
+        [](const UnicodeString&) {}, status);
+}
+
+/**
+ * Read the scriptAlias data from alias to strings+types+replacementIndexes.
+ * Allocate length items for types, to store the type field. Allocate length
+ * items for replacementIndexes, to store the index in the strings for the
+ * replacement script.
+ */
+void
+AliasDataBuilder::readScriptAlias(
+        UResourceBundle* alias,
+        UniqueCharStrings* strings,
+        LocalMemory<const char*>& types,
+        LocalMemory<int32_t>& replacementIndexes,
+        int32_t &length,
+        UErrorCode &status)
+{
+    return readAlias(
+        alias, strings, types, replacementIndexes, length,
+#if U_DEBUG
+        [](const char* type) {
+            U_ASSERT(uprv_strlen(type) == 4);
+        },
+        [](const UnicodeString& replacement) {
+            U_ASSERT(replacement.length() == 4);
+        },
+#else
+        [](const char*) {},
+        [](const UnicodeString&) { },
+#endif
+        status);
+}
+
+/**
+ * Read the territoryAlias data from alias to strings+types+replacementIndexes.
+ * Allocate length items for types, to store the type field. Allocate length
+ * items for replacementIndexes, to store the index in the strings for the
+ * replacement regions.
+ */
+void
+AliasDataBuilder::readTerritoryAlias(
+        UResourceBundle* alias,
+        UniqueCharStrings* strings,
+        LocalMemory<const char*>& types,
+        LocalMemory<int32_t>& replacementIndexes,
+        int32_t &length,
+        UErrorCode &status)
+{
+    return readAlias(
+        alias, strings, types, replacementIndexes, length,
+#if U_DEBUG
+        [](const char* type) {
+            U_ASSERT(uprv_strlen(type) == 2 || uprv_strlen(type) == 3);
+        },
+#else
+        [](const char*) {},
+#endif
+        [](const UnicodeString&) { },
+        status);
+}
+
+/**
+ * Read the variantAlias data from alias to strings+types+replacementIndexes.
+ * Allocate length items for types, to store the type field. Allocate length
+ * items for replacementIndexes, to store the index in the strings for the
+ * replacement variant.
+ */
+void
+AliasDataBuilder::readVariantAlias(
+        UResourceBundle* alias,
+        UniqueCharStrings* strings,
+        LocalMemory<const char*>& types,
+        LocalMemory<int32_t>& replacementIndexes,
+        int32_t &length,
+        UErrorCode &status)
+{
+    return readAlias(
+        alias, strings, types, replacementIndexes, length,
+#if U_DEBUG
+        [](const char* type) {
+            U_ASSERT(uprv_strlen(type) >= 4 && uprv_strlen(type) <= 8);
+            U_ASSERT(uprv_strlen(type) != 4 ||
+                     (type[0] >= '0' && type[0] <= '9'));
+        },
+        [](const UnicodeString& replacement) {
+            U_ASSERT(replacement.length() >= 4 && replacement.length() <= 8);
+            U_ASSERT(replacement.length() != 4 ||
+                     (replacement.charAt(0) >= u'0' &&
+                      replacement.charAt(0) <= u'9'));
+        },
+#else
+        [](const char*) {},
+        [](const UnicodeString&) { },
+#endif
+        status);
+}
+
+/**
+ * Initializes the alias data from the ICU resource bundles. The alias data
+ * contains alias of language, country, script and variants.
+ *
+ * If the alias data has already loaded, then this method simply returns without
+ * doing anything meaningful.
+ */
+void U_CALLCONV
+AliasData::loadData(UErrorCode &status)
+{
+#ifdef LOCALE_CANONICALIZATION_DEBUG
+    UDate start = uprv_getRawUTCtime();
+#endif  // LOCALE_CANONICALIZATION_DEBUG
+    ucln_common_registerCleanup(UCLN_COMMON_LOCALE_ALIAS, cleanup);
+    AliasDataBuilder builder;
+    gSingleton = builder.build(status);
+#ifdef LOCALE_CANONICALIZATION_DEBUG
+    UDate end = uprv_getRawUTCtime();
+    printf("AliasData::loadData took total %f ms\n", end - start);
+#endif  // LOCALE_CANONICALIZATION_DEBUG
+}
+
+/**
+ * Build the alias data from resources.
+ */
+AliasData*
+AliasDataBuilder::build(UErrorCode &status) {
+    LocalUResourceBundlePointer metadata(
+        ures_openDirect(nullptr, "metadata", &status));
+    LocalUResourceBundlePointer metadataAlias(
+        ures_getByKey(metadata.getAlias(), "alias", nullptr, &status));
+    LocalUResourceBundlePointer languageAlias(
+        ures_getByKey(metadataAlias.getAlias(), "language", nullptr, &status));
+    LocalUResourceBundlePointer scriptAlias(
+        ures_getByKey(metadataAlias.getAlias(), "script", nullptr, &status));
+    LocalUResourceBundlePointer territoryAlias(
+        ures_getByKey(metadataAlias.getAlias(), "territory", nullptr, &status));
+    LocalUResourceBundlePointer variantAlias(
+        ures_getByKey(metadataAlias.getAlias(), "variant", nullptr, &status));
+
+    if (U_FAILURE(status)) {
+        return nullptr;
+    }
+    int32_t languagesLength = 0, scriptLength = 0, territoryLength = 0,
+            variantLength = 0;
+
+    // Read the languageAlias into languageTypes, languageReplacementIndexes
+    // and strings
+    UniqueCharStrings strings(status);
+    LocalMemory<const char*> languageTypes;
+    LocalMemory<int32_t> languageReplacementIndexes;
+    readLanguageAlias(languageAlias.getAlias(),
+                      &strings,
+                      languageTypes,
+                      languageReplacementIndexes,
+                      languagesLength,
+                      status);
+
+    // Read the scriptAlias into scriptTypes, scriptReplacementIndexes
+    // and strings
+    LocalMemory<const char*> scriptTypes;
+    LocalMemory<int32_t> scriptReplacementIndexes;
+    readScriptAlias(scriptAlias.getAlias(),
+                    &strings,
+                    scriptTypes,
+                    scriptReplacementIndexes,
+                    scriptLength,
+                    status);
+
+    // Read the territoryAlias into territoryTypes, territoryReplacementIndexes
+    // and strings
+    LocalMemory<const char*> territoryTypes;
+    LocalMemory<int32_t> territoryReplacementIndexes;
+    readTerritoryAlias(territoryAlias.getAlias(),
+                       &strings,
+                       territoryTypes,
+                       territoryReplacementIndexes,
+                       territoryLength, status);
+
+    // Read the variantAlias into variantTypes, variantReplacementIndexes
+    // and strings
+    LocalMemory<const char*> variantTypes;
+    LocalMemory<int32_t> variantReplacementIndexes;
+    readVariantAlias(variantAlias.getAlias(),
+                     &strings,
+                     variantTypes,
+                     variantReplacementIndexes,
+                     variantLength, status);
+
+    if (U_FAILURE(status)) {
+        return nullptr;
+    }
+
+    // We can only use strings after freeze it.
+    strings.freeze();
+
+    // Build the languageMap from languageTypes & languageReplacementIndexes
+    CharStringMap languageMap(490, status);
+    for (int32_t i = 0; U_SUCCESS(status) && i < languagesLength; i++) {
+        languageMap.put(languageTypes[i],
+                        strings.get(languageReplacementIndexes[i]),
+                        status);
+    }
+
+    // Build the scriptMap from scriptTypes & scriptReplacementIndexes
+    CharStringMap scriptMap(1, status);
+    for (int32_t i = 0; U_SUCCESS(status) && i < scriptLength; i++) {
+        scriptMap.put(scriptTypes[i],
+                      strings.get(scriptReplacementIndexes[i]),
+                      status);
+    }
+
+    // Build the territoryMap from territoryTypes & territoryReplacementIndexes
+    CharStringMap territoryMap(650, status);
+    for (int32_t i = 0; U_SUCCESS(status) && i < territoryLength; i++) {
+        territoryMap.put(territoryTypes[i],
+                         strings.get(territoryReplacementIndexes[i]),
+                         status);
+    }
+
+    // Build the variantMap from variantTypes & variantReplacementIndexes.
+    CharStringMap variantMap(2, status);
+    for (int32_t i = 0; U_SUCCESS(status) && i < variantLength; i++) {
+        variantMap.put(variantTypes[i],
+                       strings.get(variantReplacementIndexes[i]),
+                       status);
+    }
+
+    if (U_FAILURE(status)) {
+        return nullptr;
+    }
+
+    // copy hashtables
+    auto *data = new AliasData(
+        std::move(languageMap),
+        std::move(scriptMap),
+        std::move(territoryMap),
+        std::move(variantMap),
+        strings.orphanCharStrings());
+
+    if (data == nullptr) {
+        status = U_MEMORY_ALLOCATION_ERROR;
+    }
+    return data;
+}
+
+/**
+ * A class that find the replacement values of locale fields by using AliasData.
+ */
+class AliasReplacer {
+public:
+    AliasReplacer(UErrorCode status) :
+            language(nullptr), script(nullptr), region(nullptr),
+            extensions(nullptr), variants(status),
+            data(nullptr) {
+    }
+    ~AliasReplacer() {
+    }
+
+    // Check the fields inside locale, if need to replace fields,
+    // place the the replaced locale ID in out and return true.
+    // Otherwise return false for no replacement or error.
+    bool replace(
+        const Locale& locale, CharString& out, UErrorCode& status);
+
+private:
+    const char* language;
+    const char* script;
+    const char* region;
+    const char* extensions;
+    UVector variants;
+
+    const AliasData* data;
+
+    inline bool notEmpty(const char* str) {
+        return str && str[0] != NULL_CHAR;
+    }
+
+    /**
+     * If replacement is neither null nor empty and input is either null or empty,
+     * return replacement.
+     * If replacement is neither null nor empty but input is not empty, return input.
+     * If replacement is either null or empty and type is either null or empty,
+     * return input.
+     * Otherwise return null.
+     *   replacement     input      type        return
+     *    AAA             nullptr    *           AAA
+     *    AAA             BBB        *           BBB
+     *    nullptr || ""   CCC        nullptr     CCC
+     *    nullptr || ""   *          DDD         nullptr
+     */
+    inline const char* deleteOrReplace(
+            const char* input, const char* type, const char* replacement) {
+        return notEmpty(replacement) ?
+            ((input == nullptr) ?  replacement : input) :
+            ((type == nullptr) ? input  : nullptr);
+    }
+
+    inline bool same(const char* a, const char* b) {
+        if (a == nullptr && b == nullptr) {
+            return true;
+        }
+        if ((a == nullptr && b != nullptr) ||
+            (a != nullptr && b == nullptr)) {
+          return false;
+        }
+        return uprv_strcmp(a, b) == 0;
+    }
+
+    // Gather fields and generate locale ID into out.
+    CharString& outputToString(CharString& out, UErrorCode status);
+
+    // Generate the lookup key.
+    CharString& generateKey(const char* language, const char* region,
+                            const char* variant, CharString& out,
+                            UErrorCode status);
+
+    void parseLanguageReplacement(const char* replacement,
+                                  const char*& replaceLanguage,
+                                  const char*& replaceScript,
+                                  const char*& replaceRegion,
+                                  const char*& replaceVariant,
+                                  const char*& replaceExtensions,
+                                  UVector& toBeFreed,
+                                  UErrorCode& status);
+
+    // Replace by using languageAlias.
+    bool replaceLanguage(bool checkLanguage, bool checkRegion,
+                         bool checkVariants, UVector& toBeFreed,
+                         UErrorCode& status);
+
+    // Replace by using territoryAlias.
+    bool replaceTerritory(UVector& toBeFreed, UErrorCode& status);
+
+    // Replace by using scriptAlias.
+    bool replaceScript(UErrorCode& status);
+
+    // Replace by using variantAlias.
+    bool replaceVariant(UErrorCode& status);
+};
+
+CharString&
+AliasReplacer::generateKey(
+        const char* language, const char* region, const char* variant,
+        CharString& out, UErrorCode status)
+{
+    out.append(language, status);
+    if (notEmpty(region)) {
+        out.append(SEP_CHAR, status)
+            .append(region, status);
+    }
+    if (notEmpty(variant)) {
+       out.append(SEP_CHAR, status)
+           .append(variant, status);
     }
     return out;
 }
 
+void
+AliasReplacer::parseLanguageReplacement(
+    const char* replacement,
+    const char*& replacedLanguage,
+    const char*& replacedScript,
+    const char*& replacedRegion,
+    const char*& replacedVariant,
+    const char*& replacedExtensions,
+    UVector& toBeFreed,
+    UErrorCode& status)
+{
+    if (U_FAILURE(status)) {
+        return;
+    }
+    replacedScript = replacedRegion = replacedVariant
+        = replacedExtensions = nullptr;
+    if (uprv_strchr(replacement, '_') == nullptr) {
+        replacedLanguage = replacement;
+        // reach the end, just return it.
+        return;
+    }
+    // We have multiple field so we have to allocate and parse
+    CharString* str = new CharString(
+        replacement, (int32_t)uprv_strlen(replacement), status);
+    if (U_FAILURE(status)) {
+        return;
+    }
+    if (str == nullptr) {
+        status = U_MEMORY_ALLOCATION_ERROR;
+        return;
+    }
+    toBeFreed.addElement(str, status);
+    char* data = str->data();
+    replacedLanguage = (const char*) data;
+    char* endOfField = uprv_strchr(data, '_');
+    *endOfField = '\0'; // null terminiate it.
+    endOfField++;
+    const char* start = endOfField;
+    endOfField = (char*) uprv_strchr(start, '_');
+    size_t len = 0;
+    if (endOfField == nullptr) {
+        len = uprv_strlen(start);
+    } else {
+        len = endOfField - start;
+        *endOfField = '\0'; // null terminiate it.
+    }
+    if (len == 4 && uprv_isASCIILetter(*start)) {
+        // Got a script
+        replacedScript = start;
+        if (endOfField == nullptr) {
+            return;
+        }
+        start = endOfField++;
+        endOfField = (char*)uprv_strchr(start, '_');
+        if (endOfField == nullptr) {
+            len = uprv_strlen(start);
+        } else {
+            len = endOfField - start;
+            *endOfField = '\0'; // null terminiate it.
+        }
+    }
+    if (len >= 2 && len <= 3) {
+        // Got a region
+        replacedRegion = start;
+        if (endOfField == nullptr) {
+            return;
+        }
+        start = endOfField++;
+        endOfField = (char*)uprv_strchr(start, '_');
+        if (endOfField == nullptr) {
+            len = uprv_strlen(start);
+        } else {
+            len = endOfField - start;
+            *endOfField = '\0'; // null terminiate it.
+        }
+    }
+    if (len >= 4) {
+        // Got a variant
+        replacedVariant = start;
+        if (endOfField == nullptr) {
+            return;
+        }
+        start = endOfField++;
+    }
+    replacedExtensions = start;
+}
+
+bool
+AliasReplacer::replaceLanguage(
+        bool checkLanguage, bool checkRegion,
+        bool checkVariants, UVector& toBeFreed, UErrorCode& status)
+{
+    if (U_FAILURE(status)) {
+        return false;
+    }
+    if (    (checkRegion && region == nullptr) ||
+            (checkVariants && variants.size() == 0)) {
+        // Nothing to search.
+        return false;
+    }
+    int32_t variant_size = checkVariants ? variants.size() : 1;
+    // Since we may have more than one variant, we need to loop through them.
+    const char* searchLanguage = checkLanguage ? language : "und";
+    const char* searchRegion = checkRegion ? region : nullptr;
+    const char* searchVariant = nullptr;
+    for (int32_t variant_index = 0;
+            variant_index < variant_size;
+            variant_index++) {
+        if (checkVariants) {
+            U_ASSERT(variant_index < variant_size);
+            searchVariant = (const char*)(variants.elementAt(variant_index));
+        }
+
+        if (searchVariant != nullptr && uprv_strlen(searchVariant) < 4) {
+            // Do not consider  ill-formed variant subtag.
+            searchVariant = nullptr;
+        }
+        CharString typeKey;
+        generateKey(searchLanguage, searchRegion, searchVariant, typeKey,
+                    status);
+        if (U_FAILURE(status)) {
+            return false;
+        }
+        const char *replacement = data->languageMap().get(typeKey.data());
+        if (replacement == nullptr) {
+            // Found no replacement data.
+            continue;
+        }
+
+        const char* replacedLanguage = nullptr;
+        const char* replacedScript = nullptr;
+        const char* replacedRegion = nullptr;
+        const char* replacedVariant = nullptr;
+        const char* replacedExtensions = nullptr;
+        parseLanguageReplacement(replacement,
+                                 replacedLanguage,
+                                 replacedScript,
+                                 replacedRegion,
+                                 replacedVariant,
+                                 replacedExtensions,
+                                 toBeFreed,
+                                 status);
+        replacedLanguage =
+            (replacedLanguage != nullptr && uprv_strcmp(replacedLanguage, "und") == 0) ?
+            language : replacedLanguage;
+        replacedScript = deleteOrReplace(script, nullptr, replacedScript);
+        replacedRegion = deleteOrReplace(region, searchRegion, replacedRegion);
+        replacedVariant = deleteOrReplace(
+            searchVariant, searchVariant, replacedVariant);
+
+        if (    same(language, replacedLanguage) &&
+                same(script, replacedScript) &&
+                same(region, replacedRegion) &&
+                same(searchVariant, replacedVariant) &&
+                replacedExtensions == nullptr) {
+            // Replacement produce no changes.
+            continue;
+        }
+
+        language = replacedLanguage;
+        region = replacedRegion;
+        script = replacedScript;
+        if (searchVariant != nullptr) {
+            if (notEmpty(replacedVariant)) {
+                variants.setElementAt((void*)replacedVariant, variant_index);
+            } else {
+                variants.removeElementAt(variant_index);
+            }
+        }
+        if (replacedExtensions != nullptr) {
+            // TODO(ICU-21292)
+            // DO NOTHING
+            // UTS35 does not specifiy what should we do if we have extensions in the
+            // replacement. Currently we know only the following 4 "BCP47 LegacyRules" have
+            // extensions in them languageAlias:
+            //  i_default => en_x_i_default
+            //  i_enochian => und_x_i_enochian
+            //  i_mingo => see_x_i_mingo
+            //  zh_min => nan_x_zh_min
+            // But all of them are already changed by code inside ultag_parse() before
+            // hitting this code.
+        }
+
+        // Something changed by language alias data.
+        return true;
+    }
+    // Nothing changed by language alias data.
+    return false;
+}
+
+bool
+AliasReplacer::replaceTerritory(UVector& toBeFreed, UErrorCode& status)
+{
+    if (U_FAILURE(status)) {
+        return false;
+    }
+    if (region == nullptr) {
+        // No region to search.
+        return false;
+    }
+    const char *replacement = data->territoryMap().get(region);
+    if (replacement == nullptr) {
+        // Found no replacement data for this region.
+        return false;
+    }
+    const char* replacedRegion = replacement;
+    const char* firstSpace = uprv_strchr(replacement, ' ');
+    if (firstSpace != nullptr) {
+        // If there are are more than one region in the replacement.
+        // We need to check which one match based on the language.
+        // Cannot use nullptr for language because that will construct
+        // the default locale, in that case, use "und" to get the correct
+        // locale.
+        Locale l = LocaleBuilder()
+            .setLanguage(language == nullptr ? "und" : language)
+            .setScript(script)
+            .build(status);
+        l.addLikelySubtags(status);
+        const char* likelyRegion = l.getCountry();
+        LocalPointer<CharString> item;
+        if (likelyRegion != nullptr && uprv_strlen(likelyRegion) > 0) {
+            size_t len = uprv_strlen(likelyRegion);
+            const char* foundInReplacement = uprv_strstr(replacement,
+                                                         likelyRegion);
+            if (foundInReplacement != nullptr) {
+                // Assuming the case there are no three letter region code in
+                // the replacement of territoryAlias
+                U_ASSERT(foundInReplacement == replacement ||
+                         *(foundInReplacement-1) == ' ');
+                U_ASSERT(foundInReplacement[len] == ' ' ||
+                         foundInReplacement[len] == '\0');
+                item.adoptInsteadAndCheckErrorCode(
+                    new CharString(foundInReplacement, (int32_t)len, status), status);
+            }
+        }
+        if (item.isNull() && U_SUCCESS(status)) {
+            item.adoptInsteadAndCheckErrorCode(
+                new CharString(replacement,
+                               (int32_t)(firstSpace - replacement), status), status);
+        }
+        if (U_FAILURE(status)) { return false; }
+        if (item.isNull()) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+            return false;
+        }
+        replacedRegion = item->data();
+        toBeFreed.addElement(item.orphan(), status);
+    }
+    U_ASSERT(!same(region, replacedRegion));
+    region = replacedRegion;
+    // The region is changed by data in territory alias.
+    return true;
+}
+
+bool
+AliasReplacer::replaceScript(UErrorCode& status)
+{
+    if (U_FAILURE(status)) {
+        return false;
+    }
+    if (script == nullptr) {
+        // No script to search.
+        return false;
+    }
+    const char *replacement = data->scriptMap().get(script);
+    if (replacement == nullptr) {
+        // Found no replacement data for this script.
+        return false;
+    }
+    U_ASSERT(!same(script, replacement));
+    script = replacement;
+    // The script is changed by data in script alias.
+    return true;
+}
+
+bool
+AliasReplacer::replaceVariant(UErrorCode& status)
+{
+    if (U_FAILURE(status)) {
+        return false;
+    }
+    // Since we may have more than one variant, we need to loop through them.
+    for (int32_t i = 0; i < variants.size(); i++) {
+        const char *variant = (const char*)(variants.elementAt(i));
+        const char *replacement = data->variantMap().get(variant);
+        if (replacement == nullptr) {
+            // Found no replacement data for this variant.
+            continue;
+        }
+        U_ASSERT((uprv_strlen(replacement) >= 5  &&
+                  uprv_strlen(replacement) <= 8) ||
+                 (uprv_strlen(replacement) == 4 &&
+                  replacement[0] >= '0' &&
+                  replacement[0] <= '9'));
+        if (!same(variant, replacement)) {
+            variants.setElementAt((void*)replacement, i);
+            // Special hack to handle hepburn-heploc => alalc97
+            if (uprv_strcmp(variant, "heploc") == 0) {
+                for (int32_t j = 0; j < variants.size(); j++) {
+                     if (uprv_strcmp((const char*)(variants.elementAt(j)),
+                                     "hepburn") == 0) {
+                         variants.removeElementAt(j);
+                     }
+                }
+            }
+            return true;
+        }
+    }
+    return false;
+}
+
+CharString&
+AliasReplacer::outputToString(
+    CharString& out, UErrorCode status)
+{
+    out.append(language, status);
+    if (notEmpty(script)) {
+        out.append(SEP_CHAR, status)
+            .append(script, status);
+    }
+    if (notEmpty(region)) {
+        out.append(SEP_CHAR, status)
+            .append(region, status);
+    }
+    if (variants.size() > 0) {
+        if (!notEmpty(script) && !notEmpty(region)) {
+          out.append(SEP_CHAR, status);
+        }
+        variants.sort([](UElement e1, UElement e2) -> int8_t {
+            return uprv_strcmp(
+                (const char*)e1.pointer, (const char*)e2.pointer);
+        }, status);
+        int32_t variantsStart = out.length();
+        for (int32_t i = 0; i < variants.size(); i++) {
+             out.append(SEP_CHAR, status)
+                 .append((const char*)(variants.elementAt(i)),
+                         status);
+        }
+        T_CString_toUpperCase(out.data() + variantsStart);
+    }
+    if (notEmpty(extensions)) {
+        CharString tmp("und_", status);
+        tmp.append(extensions, status);
+        Locale tmpLocale(tmp.data());
+        // only support x extension inside CLDR for now.
+        U_ASSERT(extensions[0] == 'x');
+        out.append(tmpLocale.getName() + 1, status);
+    }
+    return out;
+}
+
+bool
+AliasReplacer::replace(const Locale& locale, CharString& out, UErrorCode& status)
+{
+    data = AliasData::singleton(status);
+    if (U_FAILURE(status)) {
+        return false;
+    }
+    U_ASSERT(data != nullptr);
+    out.clear();
+    language = locale.getLanguage();
+    if (!notEmpty(language)) {
+        language = nullptr;
+    }
+    script = locale.getScript();
+    if (!notEmpty(script)) {
+        script = nullptr;
+    }
+    region = locale.getCountry();
+    if (!notEmpty(region)) {
+        region = nullptr;
+    }
+    const char* variantsStr = locale.getVariant();
+    const char* extensionsStr = locale_getKeywordsStart(locale.getName());
+    CharString variantsBuff(variantsStr, -1, status);
+    if (!variantsBuff.isEmpty()) {
+        if (U_FAILURE(status)) { return false; }
+        char* start = variantsBuff.data();
+        T_CString_toLowerCase(start);
+        char* end;
+        while ((end = uprv_strchr(start, SEP_CHAR)) != nullptr &&
+               U_SUCCESS(status)) {
+            *end = NULL_CHAR;  // null terminate inside variantsBuff
+            variants.addElement(start, status);
+            start = end + 1;
+        }
+        variants.addElement(start, status);
+    }
+    if (U_FAILURE(status)) { return false; }
+
+    // Sort the variants
+    variants.sort([](UElement e1, UElement e2) -> int8_t {
+        return uprv_strcmp(
+            (const char*)e1.pointer, (const char*)e2.pointer);
+    }, status);
+
+    // A changed count to assert when loop too many times.
+    int changed = 0;
+    // A UVector to to hold CharString allocated by the replace* method
+    // and freed when out of scope from his function.
+    UVector stringsToBeFreed([](void *obj){ delete ((CharString*) obj); },
+                             nullptr, 10, status);
+    while (U_SUCCESS(status)) {
+        // Something wrong with the data cause looping here more than 10 times
+        // already.
+        U_ASSERT(changed < 5);
+        // From observation of key in data/misc/metadata.txt
+        // we know currently we only need to search in the following combination
+        // of fields for type in languageAlias:
+        // * lang_region_variant
+        // * lang_region
+        // * lang_variant
+        // * lang
+        // * und_variant
+        // This assumption is ensured by the U_ASSERT in readLanguageAlias
+        //
+        //                      lang  REGION variant
+        if (    replaceLanguage(true, true,  true,  stringsToBeFreed, status) ||
+                replaceLanguage(true, true,  false, stringsToBeFreed, status) ||
+                replaceLanguage(true, false, true,  stringsToBeFreed, status) ||
+                replaceLanguage(true, false, false, stringsToBeFreed, status) ||
+                replaceLanguage(false,false, true,  stringsToBeFreed, status) ||
+                replaceTerritory(stringsToBeFreed, status) ||
+                replaceScript(status) ||
+                replaceVariant(status)) {
+            // Some values in data is changed, try to match from the beginning
+            // again.
+            changed++;
+            continue;
+        }
+        // Nothing changed. Break out.
+        break;
+    }  // while(1)
+
+    if (U_FAILURE(status)) { return false; }
+    // Nothing changed and we know the order of the vaiants are not change
+    // because we have no variant or only one.
+    if (changed == 0 && variants.size() <= 1) {
+        return false;
+    }
+    outputToString(out, status);
+    if (extensionsStr != nullptr) {
+        out.append(extensionsStr, status);
+    }
+    if (U_FAILURE(status)) {
+        return false;
+    }
+    // If the tag is not changed, return.
+    if (uprv_strcmp(out.data(), locale.getName()) == 0) {
+        U_ASSERT(changed == 0);
+        U_ASSERT(variants.size() > 1);
+        out.clear();
+        return false;
+    }
+    return true;
+}
+
+// Return true if the locale is changed during canonicalization.
+// The replaced value then will be put into out.
+bool
+canonicalizeLocale(const Locale& locale, CharString& out, UErrorCode& status)
+{
+    AliasReplacer replacer(status);
+    return replacer.replace(locale, out, status);
+}
+
+// Function to optimize for known cases without so we can skip the loading
+// of resources in the startup time until we really need it.
+bool
+isKnownCanonicalizedLocale(const char* locale, UErrorCode& status)
+{
+    if (    uprv_strcmp(locale, "c") == 0 ||
+            uprv_strcmp(locale, "en") == 0 ||
+            uprv_strcmp(locale, "en_US") == 0) {
+        return true;
+    }
+
+    // common well-known Canonicalized.
+    umtx_initOnce(gKnownCanonicalizedInitOnce,
+                  &loadKnownCanonicalized, status);
+    if (U_FAILURE(status)) {
+        return false;
+    }
+    U_ASSERT(gKnownCanonicalized != nullptr);
+    return uhash_geti(gKnownCanonicalized, locale) != 0;
+}
+
 }  // namespace
 
+// Function for testing.
+U_CAPI const char* const*
+ulocimp_getKnownCanonicalizedLocaleForTest(int32_t* length)
+{
+    *length = UPRV_LENGTHOF(KNOWN_CANONICALIZED);
+    return KNOWN_CANONICALIZED;
+}
+
+// Function for testing.
+U_CAPI bool
+ulocimp_isCanonicalizedLocaleForTest(const char* localeName)
+{
+    Locale l(localeName);
+    UErrorCode status = U_ZERO_ERROR;
+    CharString temp;
+    return !canonicalizeLocale(l, temp, status) && U_SUCCESS(status);
+}
+
 /*This function initializes a Locale from a C locale ID*/
 Locale& Locale::init(const char* localeID, UBool canonicalize)
 {
@@ -632,9 +1725,9 @@
             uprv_memcpy(language, fullName, fieldLen[0]);
             language[fieldLen[0]] = 0;
         }
-        if (fieldLen[1] == 4 && ISASCIIALPHA(field[1][0]) &&
-                ISASCIIALPHA(field[1][1]) && ISASCIIALPHA(field[1][2]) &&
-                ISASCIIALPHA(field[1][3])) {
+        if (fieldLen[1] == 4 && uprv_isASCIILetter(field[1][0]) &&
+                uprv_isASCIILetter(field[1][1]) && uprv_isASCIILetter(field[1][2]) &&
+                uprv_isASCIILetter(field[1][3])) {
             /* We have at least a script */
             uprv_memcpy(script, field[1], fieldLen[1]);
             script[fieldLen[1]] = 0;
@@ -662,192 +1755,18 @@
         }
 
         if (canonicalize) {
-            UErrorCode status = U_ZERO_ERROR;
-            // TODO: Try to use ResourceDataValue and ures_getValueWithFallback() etc.
-            LocalUResourceBundlePointer metadata(ures_openDirect(NULL, "metadata", &status));
-            LocalUResourceBundlePointer metadataAlias(ures_getByKey(metadata.getAlias(), "alias", NULL, &status));
-            // Look up the metadata:alias:language:$key:replacement entries
-            // key could be one of the following:
-            //   language
-            //   language_Script_REGION
-            //   language_REGION
-            //   language_variant
-            do {
-                // The resource structure looks like
-                // metadata {
-                //   alias {
-                //     language {
-                //       art_lojban {
-                //         replacement{"jbo"}
-                //       }
-                //       ...
-                //       ks_Arab_IN {
-                //         replacement{"ks_IN"}
-                //       }
-                //       ...
-                //       no {
-                //         replacement{"nb"}
-                //       }
-                //       ....
-                //       zh_CN {
-                //         replacement{"zh_Hans_CN"}
-                //       }
-                //     }
-                //     ...
-                //   }
-                // }
-                LocalUResourceBundlePointer languageAlias(ures_getByKey(metadataAlias.getAlias(), "language", NULL, &status));
-                if (U_FAILURE(status))
+            if (!isKnownCanonicalizedLocale(fullName, err)) {
+                CharString replaced;
+                // Not sure it is already canonicalized
+                if (canonicalizeLocale(*this, replaced, err)) {
+                    U_ASSERT(U_SUCCESS(err));
+                    // If need replacement, call init again.
+                    init(replaced.data(), false);
+                }
+                if (U_FAILURE(err)) {
                     break;
-                CharString temp;
-                // Handle cases of key pattern "language _ variant"
-                // ex: Map "art_lojban" to "jbo"
-                const char* variants = getVariant();
-                if (variants != nullptr && variants[0] != '\0') {
-                    const char* begin = variants;
-                    const char* end = begin;
-                    // We may have multiple variants, need to look at each of
-                    // them.
-                    do {
-                        status = U_ZERO_ERROR;
-                        end = uprv_strchr(begin, '_');
-                        int32_t len = (end == nullptr) ? int32_t(uprv_strlen(begin)) : int32_t(end - begin);
-                        temp.clear().append(getLanguage(), status).append("_", status).append(begin, len, status);
-                        LocalUResourceBundlePointer languageVariantAlias(
-                            ures_getByKey(languageAlias.getAlias(),
-                                          temp.data(),
-                                          NULL, &status));
-                        temp.clear().appendInvariantChars(
-                            UnicodeString(ures_getStringByKey(languageVariantAlias.getAlias(), "replacement", nullptr, &status)), status);
-                        if (U_SUCCESS(status)) {
-                            CharString newVar;
-                            if (begin != variants) {
-                                newVar.append(variants, static_cast<int32_t>(begin - variants - 1), status);
-                            }
-                            if (end != nullptr) {
-                                if (begin != variants) {
-                                    newVar.append("_", status);
-                                }
-                                newVar.append(end + 1, status);
-                            }
-                            Locale l(temp.data());
-                            init(AppendLSCVE(temp.clear(),
-                                             l.getLanguage(),
-                                             (getScript() != nullptr && getScript()[0] != '\0') ? getScript() : l.getScript(),
-                                             (getCountry() != nullptr && getCountry()[0] != '\0') ? getCountry() : l.getCountry(),
-                                             newVar.data(),
-                                             uprv_strchr(fullName, '@'), status).data(), false);
-                            break;
-                        }
-                        begin = end + 1;
-                    } while (end != nullptr);
-                }  // End of handle language _ variant
-                // Handle cases of key pattern "language _ Script _ REGION"
-                // ex: Map "ks_Arab_IN" to "ks_IN"
-                if (getScript() != nullptr && getScript()[0] != '\0' &&
-                        getCountry() != nullptr && getCountry()[0] != '\0') {
-                    status = U_ZERO_ERROR;
-                    LocalUResourceBundlePointer replacedAlias(
-                        ures_getByKey(languageAlias.getAlias(),
-                                      AppendLSCVE(temp.clear(), getLanguage(), getScript(), getCountry(),
-                                                  nullptr, nullptr, status).data(), NULL, &status));
-                    temp.clear().appendInvariantChars(
-                        UnicodeString(ures_getStringByKey(replacedAlias.getAlias(), "replacement", nullptr, &status)), status);
-                    if (U_SUCCESS(status)) {
-                        Locale l(temp.data());
-                        init(AppendLSCVE(temp.clear(),
-                                         l.getLanguage(),
-                                         l.getScript(),
-                                         l.getCountry(),
-                                         getVariant(),
-                                         uprv_strchr(fullName, '@'), status).data(), false);
-                    }
-                }  // End of handle language _ Script _ REGION
-                // Handle cases of key pattern "language _ REGION"
-                // ex: Map "zh_CN" to "zh_Hans_CN"
-                if (getCountry() != nullptr && getCountry()[0] != '\0') {
-                    status = U_ZERO_ERROR;
-                    LocalUResourceBundlePointer replacedAlias(
-                        ures_getByKey(languageAlias.getAlias(),
-                                      AppendLSCVE(temp.clear(), getLanguage(), nullptr, getCountry(),
-                                                  nullptr, nullptr, status).data(), NULL, &status));
-                    temp.clear().appendInvariantChars(
-                        UnicodeString(ures_getStringByKey(replacedAlias.getAlias(), "replacement", nullptr, &status)), status);
-                    if (U_SUCCESS(status)) {
-                        Locale l(temp.data());
-                        init(AppendLSCVE(temp.clear(),
-                                         l.getLanguage(),
-                                         (getScript() != nullptr && getScript()[0] != '\0') ? getScript() : l.getScript(),
-                                         l.getCountry(),
-                                         getVariant(),
-                                         uprv_strchr(fullName, '@'), status).data(), false);
-                    }
-                }  // End of handle "language _ REGION"
-                // Handle cases of key pattern "language"
-                // ex: Map "no" to "nb"
-                {
-                    status = U_ZERO_ERROR;
-                    LocalUResourceBundlePointer replaceLanguageAlias(ures_getByKey(languageAlias.getAlias(), getLanguage(), NULL, &status));
-                    temp.clear().appendInvariantChars(
-                        UnicodeString(ures_getStringByKey(replaceLanguageAlias.getAlias(), "replacement", nullptr, &status)), status);
-                    if (U_SUCCESS(status)) {
-                        Locale l(temp.data());
-                        init(AppendLSCVE(temp.clear(),
-                                         l.getLanguage(),
-                                         (getScript() != nullptr && getScript()[0] != '\0') ? getScript() : l.getScript(),
-                                         (getCountry() != nullptr && getCountry()[0] != '\0') ? getCountry() : l.getCountry(),
-                                         getVariant(),
-                                         uprv_strchr(fullName, '@'), status).data(), false);
-                    }
-                }  // End of handle "language"
-
-                // Look up the metadata:alias:territory:$key:replacement entries
-                // key is region code.
-                if (getCountry() != nullptr) {
-                    status = U_ZERO_ERROR;
-                    // The resource structure looks like
-                    // metadata {
-                    //   alias {
-                    //     ...
-                    //     territory: {
-                    //       172 {
-                    //         replacement{"RU AM AZ BY GE KG KZ MD TJ TM UA UZ"}
-                    //       }
-                    //       ...
-                    //       554 {
-                    //         replacement{"NZ"}
-                    //       }
-                    //     }
-                    //   }
-                    // }
-                    LocalUResourceBundlePointer territoryAlias(ures_getByKey(metadataAlias.getAlias(), "territory", NULL, &status));
-                    LocalUResourceBundlePointer countryAlias(ures_getByKey(territoryAlias.getAlias(), getCountry(), NULL, &status));
-                    UnicodeString replacements(
-                        ures_getStringByKey(countryAlias.getAlias(), "replacement", nullptr, &status));
-                    if (U_SUCCESS(status)) {
-                        CharString replacedCountry;
-                        int32_t delPos = replacements.indexOf(' ');
-                        if (delPos == -1) {
-                            replacedCountry.appendInvariantChars(replacements, status);
-                        } else {
-                            Locale l(AppendLSCVE(temp.clear(), getLanguage(), nullptr, getScript(),
-                                                 nullptr, nullptr, status).data());
-                            l.addLikelySubtags(status);
-                            if (replacements.indexOf(UnicodeString(l.getCountry())) != -1) {
-                                replacedCountry.append(l.getCountry(), status);
-                            } else {
-                                replacedCountry.appendInvariantChars(replacements.getBuffer(), delPos, status);
-                            }
-                        }
-                        init(AppendLSCVE(temp.clear(),
-                                         getLanguage(),
-                                         getScript(),
-                                         replacedCountry.data(),
-                                         getVariant(),
-                                         uprv_strchr(fullName, '@'), status).data(), false);
-                    }
-                }   // End of handle REGION
-            } while (0);
+                }
+            }
         }   // if (canonicalize) {
 
         // successful end of init()
@@ -1024,13 +1943,14 @@
         return result;
     }
 
-    // If a BCP-47 language tag is passed as the language parameter to the
+    // If a BCP 47 language tag is passed as the language parameter to the
     // normal Locale constructor, it will actually fall back to invoking
     // uloc_forLanguageTag() to parse it if it somehow is able to detect that
-    // the string actually is BCP-47. This works well for things like strings
-    // using BCP-47 extensions, but it does not at all work for things like
-    // BCP-47 grandfathered tags (eg. "en-GB-oed") which are possible to also
-    // interpret as ICU locale IDs and because of that won't trigger the BCP-47
+    // the string actually is BCP 47. This works well for things like strings
+    // using BCP 47 extensions, but it does not at all work for things like
+    // legacy language tags (marked as “Type: grandfathered” in BCP 47,
+    // e.g., "en-GB-oed") which are possible to also
+    // interpret as ICU locale IDs and because of that won't trigger the BCP 47
     // parsing. Therefore the code here explicitly calls uloc_forLanguageTag()
     // and then Locale::init(), instead of just calling the normal constructor.
 
@@ -1414,8 +2334,6 @@
 StringEnumeration *
 Locale::createKeywords(UErrorCode &status) const
 {
-    char keywords[256];
-    int32_t keywordCapacity = sizeof keywords;
     StringEnumeration *result = NULL;
 
     if (U_FAILURE(status)) {
@@ -1426,9 +2344,11 @@
     const char* assignment = uprv_strchr(fullName, '=');
     if(variantStart) {
         if(assignment > variantStart) {
-            int32_t keyLen = locale_getKeywords(variantStart+1, '@', keywords, keywordCapacity, FALSE, &status);
-            if(U_SUCCESS(status) && keyLen) {
-                result = new KeywordEnumeration(keywords, keyLen, 0, status);
+            CharString keywords;
+            CharStringByteSink sink(&keywords);
+            ulocimp_getKeywords(variantStart+1, '@', sink, FALSE, &status);
+            if (U_SUCCESS(status) && !keywords.isEmpty()) {
+                result = new KeywordEnumeration(keywords.data(), keywords.length(), 0, status);
                 if (!result) {
                     status = U_MEMORY_ALLOCATION_ERROR;
                 }
@@ -1443,8 +2363,6 @@
 StringEnumeration *
 Locale::createUnicodeKeywords(UErrorCode &status) const
 {
-    char keywords[256];
-    int32_t keywordCapacity = sizeof keywords;
     StringEnumeration *result = NULL;
 
     if (U_FAILURE(status)) {
@@ -1455,9 +2373,11 @@
     const char* assignment = uprv_strchr(fullName, '=');
     if(variantStart) {
         if(assignment > variantStart) {
-            int32_t keyLen = locale_getKeywords(variantStart+1, '@', keywords, keywordCapacity, FALSE, &status);
-            if(U_SUCCESS(status) && keyLen) {
-                result = new UnicodeKeywordEnumeration(keywords, keyLen, 0, status);
+            CharString keywords;
+            CharStringByteSink sink(&keywords);
+            ulocimp_getKeywords(variantStart+1, '@', sink, FALSE, &status);
+            if (U_SUCCESS(status) && !keywords.isEmpty()) {
+                result = new UnicodeKeywordEnumeration(keywords.data(), keywords.length(), 0, status);
                 if (!result) {
                     status = U_MEMORY_ALLOCATION_ERROR;
                 }
@@ -1492,48 +2412,7 @@
         return;
     }
 
-    LocalMemory<char> scratch;
-    int32_t scratch_capacity = 16;  // Arbitrarily chosen default size.
-
-    char* buffer;
-    int32_t result_capacity, reslen;
-
-    for (;;) {
-        if (scratch.allocateInsteadAndReset(scratch_capacity) == nullptr) {
-            status = U_MEMORY_ALLOCATION_ERROR;
-            return;
-        }
-
-        buffer = sink.GetAppendBuffer(
-                /*min_capacity=*/scratch_capacity,
-                /*desired_capacity_hint=*/scratch_capacity,
-                scratch.getAlias(),
-                scratch_capacity,
-                &result_capacity);
-
-        reslen = uloc_getKeywordValue(
-                fullName,
-                keywordName_nul.data(),
-                buffer,
-                result_capacity,
-                &status);
-
-        if (status != U_BUFFER_OVERFLOW_ERROR) {
-            break;
-        }
-
-        scratch_capacity = reslen;
-        status = U_ZERO_ERROR;
-    }
-
-    if (U_FAILURE(status)) {
-        return;
-    }
-
-    sink.Append(buffer, reslen);
-    if (status == U_STRING_NOT_TERMINATED_WARNING) {
-        status = U_ZERO_ERROR;  // Terminators not used.
-    }
+    ulocimp_getKeywordValue(fullName, keywordName_nul.data(), sink, &status);
 }
 
 void
@@ -1580,9 +2459,13 @@
     if (U_FAILURE(status)) {
         return;
     }
+    if (status == U_STRING_NOT_TERMINATED_WARNING) {
+        status = U_ZERO_ERROR;
+    }
     int32_t bufferLength = uprv_max((int32_t)(uprv_strlen(fullName) + 1), ULOC_FULLNAME_CAPACITY);
     int32_t newLength = uloc_setKeywordValue(keywordName, keywordValue, fullName,
                                              bufferLength, &status) + 1;
+    U_ASSERT(status != U_STRING_NOT_TERMINATED_WARNING);
     /* Handle the case the current buffer is not enough to hold the new id */
     if (status == U_BUFFER_OVERFLOW_ERROR) {
         U_ASSERT(newLength > bufferLength);
@@ -1599,6 +2482,7 @@
         fullName = newFullName;
         status = U_ZERO_ERROR;
         uloc_setKeywordValue(keywordName, keywordValue, fullName, newLength, &status);
+        U_ASSERT(status != U_STRING_NOT_TERMINATED_WARNING);
     } else {
         U_ASSERT(newLength <= bufferLength);
     }
diff --git a/icu4c/source/common/loclikely.cpp b/icu4c/source/common/loclikely.cpp
index a4a4181..94a60ab 100644
--- a/icu4c/source/common/loclikely.cpp
+++ b/icu4c/source/common/loclikely.cpp
@@ -464,8 +464,7 @@
         goto error;
     }
 
-    subtagLength = ulocimp_getLanguage(position, lang, *langLength, &position);
-    u_terminateChars(lang, *langLength, subtagLength, err);
+    subtagLength = ulocimp_getLanguage(position, &position, *err).extract(lang, *langLength, *err);
 
     /*
      * Note that we explicit consider U_STRING_NOT_TERMINATED_WARNING
@@ -486,8 +485,7 @@
         ++position;
     }
 
-    subtagLength = ulocimp_getScript(position, script, *scriptLength, &position);
-    u_terminateChars(script, *scriptLength, subtagLength, err);
+    subtagLength = ulocimp_getScript(position, &position, *err).extract(script, *scriptLength, *err);
 
     if(U_FAILURE(*err)) {
         goto error;
@@ -511,8 +509,7 @@
         }    
     }
 
-    subtagLength = ulocimp_getCountry(position, region, *regionLength, &position);
-    u_terminateChars(region, *regionLength, subtagLength, err);
+    subtagLength = ulocimp_getCountry(position, &position, *err).extract(region, *regionLength, *err);
 
     if(U_FAILURE(*err)) {
         goto error;
@@ -826,7 +823,7 @@
     } \
 } UPRV_BLOCK_MACRO_END
 
-static void
+static UBool
 _uloc_addLikelySubtags(const char* localeID,
                        icu::ByteSink& sink,
                        UErrorCode* err) {
@@ -897,15 +894,22 @@
         sink.Append(localeID, localIDLength);
     }
 
-    return;
+    return success;
 
 error:
 
     if (!U_FAILURE(*err)) {
         *err = U_ILLEGAL_ARGUMENT_ERROR;
     }
+    return FALSE;
 }
 
+// Add likely subtags to the sink
+// return true if the value in the sink is produced by a match during the lookup
+// return false if the value in the sink is the same as input because there are
+// no match after the lookup.
+static UBool _ulocimp_addLikelySubtags(const char*, icu::ByteSink&, UErrorCode*);
+
 static void
 _uloc_minimizeSubtags(const char* localeID,
                       icu::ByteSink& sink,
@@ -921,6 +925,7 @@
     const char* trailing = "";
     int32_t trailingLength = 0;
     int32_t trailingIndex = 0;
+    UBool successGetMax = FALSE;
 
     if(U_FAILURE(*err)) {
         goto error;
@@ -961,7 +966,7 @@
     {
         icu::CharString base;
         {
-            icu::CharStringByteSink sink(&base);
+            icu::CharStringByteSink baseSink(&base);
             createTagString(
                 lang,
                 langLength,
@@ -971,7 +976,7 @@
                 regionLength,
                 NULL,
                 0,
-                sink,
+                baseSink,
                 err);
         }
 
@@ -980,8 +985,8 @@
          * from AddLikelySubtags.
          **/
         {
-            icu::CharStringByteSink sink(&maximizedTagBuffer);
-            ulocimp_addLikelySubtags(base.data(), sink, err);
+            icu::CharStringByteSink maxSink(&maximizedTagBuffer);
+            successGetMax = _ulocimp_addLikelySubtags(base.data(), maxSink, err);
         }
     }
 
@@ -989,13 +994,40 @@
         goto error;
     }
 
+    if (!successGetMax) {
+        /**
+         * If we got here, return the locale ID parameter unchanged.
+         **/
+        const int32_t localeIDLength = (int32_t)uprv_strlen(localeID);
+        sink.Append(localeID, localeIDLength);
+        return;
+    }
+
+    // In the following, the lang, script, region are referring to those in
+    // the maximizedTagBuffer, not the one in the localeID.
+    langLength = sizeof(lang);
+    scriptLength = sizeof(script);
+    regionLength = sizeof(region);
+    parseTagString(
+        maximizedTagBuffer.data(),
+        lang,
+        &langLength,
+        script,
+        &scriptLength,
+        region,
+        &regionLength,
+        err);
+    if(U_FAILURE(*err)) {
+        goto error;
+    }
+
     /**
      * Start first with just the language.
      **/
     {
         icu::CharString tagBuffer;
         {
-            icu::CharStringByteSink sink(&tagBuffer);
+            icu::CharStringByteSink tagSink(&tagBuffer);
             createLikelySubtagsString(
                 lang,
                 langLength,
@@ -1005,14 +1037,15 @@
                 0,
                 NULL,
                 0,
-                sink,
+                tagSink,
                 err);
         }
 
         if(U_FAILURE(*err)) {
             goto error;
         }
-        else if (!tagBuffer.isEmpty() && uprv_strnicmp(
+        else if (!tagBuffer.isEmpty() &&
+                 uprv_strnicmp(
                     maximizedTagBuffer.data(),
                     tagBuffer.data(),
                     tagBuffer.length()) == 0) {
@@ -1039,7 +1072,7 @@
 
         icu::CharString tagBuffer;
         {
-            icu::CharStringByteSink sink(&tagBuffer);
+            icu::CharStringByteSink tagSink(&tagBuffer);
             createLikelySubtagsString(
                 lang,
                 langLength,
@@ -1049,14 +1082,15 @@
                 regionLength,
                 NULL,
                 0,
-                sink,
+                tagSink,
                 err);
         }
 
         if(U_FAILURE(*err)) {
             goto error;
         }
-        else if (uprv_strnicmp(
+        else if (!tagBuffer.isEmpty() &&
+                 uprv_strnicmp(
                     maximizedTagBuffer.data(),
                     tagBuffer.data(),
                     tagBuffer.length()) == 0) {
@@ -1081,10 +1115,10 @@
      * since trying with all three subtags would only yield the
      * maximal version that we already have.
      **/
-    if (scriptLength > 0 && regionLength > 0) {
+    if (scriptLength > 0) {
         icu::CharString tagBuffer;
         {
-            icu::CharStringByteSink sink(&tagBuffer);
+            icu::CharStringByteSink tagSink(&tagBuffer);
             createLikelySubtagsString(
                 lang,
                 langLength,
@@ -1094,14 +1128,15 @@
                 0,
                 NULL,
                 0,
-                sink,
+                tagSink,
                 err);
         }
 
         if(U_FAILURE(*err)) {
             goto error;
         }
-        else if (uprv_strnicmp(
+        else if (!tagBuffer.isEmpty() &&
+                 uprv_strnicmp(
                     maximizedTagBuffer.data(),
                     tagBuffer.data(),
                     tagBuffer.length()) == 0) {
@@ -1123,10 +1158,19 @@
 
     {
         /**
-         * If we got here, return the locale ID parameter.
+         * If we got here, return the max + trail.
          **/
-        const int32_t localeIDLength = (int32_t)uprv_strlen(localeID);
-        sink.Append(localeID, localeIDLength);
+        createTagString(
+                    lang,
+                    langLength,
+                    script,
+                    scriptLength,
+                    region,
+                    regionLength,
+                    trailing,
+                    trailingLength,
+                    sink,
+                    err);
         return;
     }
 
@@ -1193,15 +1237,23 @@
     return reslen;
 }
 
+static UBool
+_ulocimp_addLikelySubtags(const char* localeID,
+                          icu::ByteSink& sink,
+                          UErrorCode* status) {
+    char localeBuffer[ULOC_FULLNAME_CAPACITY];
+
+    if (do_canonicalize(localeID, localeBuffer, sizeof localeBuffer, status)) {
+        return _uloc_addLikelySubtags(localeBuffer, sink, status);
+    }
+    return FALSE;
+}
+
 U_CAPI void U_EXPORT2
 ulocimp_addLikelySubtags(const char* localeID,
                          icu::ByteSink& sink,
                          UErrorCode* status) {
-    char localeBuffer[ULOC_FULLNAME_CAPACITY];
-
-    if (do_canonicalize(localeID, localeBuffer, sizeof localeBuffer, status)) {
-        _uloc_addLikelySubtags(localeBuffer, sink, status);
-    }
+    _ulocimp_addLikelySubtags(localeID, sink, status);
 }
 
 U_CAPI int32_t U_EXPORT2
diff --git a/icu4c/source/common/loclikelysubtags.cpp b/icu4c/source/common/loclikelysubtags.cpp
index 1fbf1a1..a031bfa 100644
--- a/icu4c/source/common/loclikelysubtags.cpp
+++ b/icu4c/source/common/loclikelysubtags.cpp
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // loclikelysubtags.cpp
 // created: 2019may08 Markus W. Scherer
@@ -20,6 +20,7 @@
 #include "uhash.h"
 #include "uinvchar.h"
 #include "umutex.h"
+#include "uniquecharstr.h"
 #include "uresdata.h"
 #include "uresimp.h"
 
@@ -31,71 +32,6 @@
 constexpr char PSEUDO_BIDI_PREFIX = '+';  // -XB, -PSBIDI
 constexpr char PSEUDO_CRACKED_PREFIX = ',';  // -XC, -PSCRACK
 
-/**
- * Stores NUL-terminated strings with duplicate elimination.
- * Checks for unique UTF-16 string pointers and converts to invariant characters.
- */
-class UniqueCharStrings {
-public:
-    UniqueCharStrings(UErrorCode &errorCode) : strings(nullptr) {
-        uhash_init(&map, uhash_hashUChars, uhash_compareUChars, uhash_compareLong, &errorCode);
-        if (U_FAILURE(errorCode)) { return; }
-        strings = new CharString();
-        if (strings == nullptr) {
-            errorCode = U_MEMORY_ALLOCATION_ERROR;
-        }
-    }
-    ~UniqueCharStrings() {
-        uhash_close(&map);
-        delete strings;
-    }
-
-    /** Returns/orphans the CharString that contains all strings. */
-    CharString *orphanCharStrings() {
-        CharString *result = strings;
-        strings = nullptr;
-        return result;
-    }
-
-    /** Adds a string and returns a unique number for it. */
-    int32_t add(const UnicodeString &s, UErrorCode &errorCode) {
-        if (U_FAILURE(errorCode)) { return 0; }
-        if (isFrozen) {
-            errorCode = U_NO_WRITE_PERMISSION;
-            return 0;
-        }
-        // The string points into the resource bundle.
-        const char16_t *p = s.getBuffer();
-        int32_t oldIndex = uhash_geti(&map, p);
-        if (oldIndex != 0) {  // found duplicate
-            return oldIndex;
-        }
-        // Explicit NUL terminator for the previous string.
-        // The strings object is also terminated with one implicit NUL.
-        strings->append(0, errorCode);
-        int32_t newIndex = strings->length();
-        strings->appendInvariantChars(s, errorCode);
-        uhash_puti(&map, const_cast<char16_t *>(p), newIndex, &errorCode);
-        return newIndex;
-    }
-
-    void freeze() { isFrozen = true; }
-
-    /**
-     * Returns a string pointer for its unique number, if this object is frozen.
-     * Otherwise nullptr.
-     */
-    const char *get(int32_t i) const {
-        U_ASSERT(isFrozen);
-        return isFrozen && i > 0 ? strings->data() + i : nullptr;
-    }
-
-private:
-    UHashtable map;
-    CharString *strings;
-    bool isFrozen = false;
-};
-
 }  // namespace
 
 LocaleDistanceData::LocaleDistanceData(LocaleDistanceData &&data) :
diff --git a/icu4c/source/common/loclikelysubtags.h b/icu4c/source/common/loclikelysubtags.h
index 90ddfff..14a01a5 100644
--- a/icu4c/source/common/loclikelysubtags.h
+++ b/icu4c/source/common/loclikelysubtags.h
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // loclikelysubtags.h
 // created: 2019may08 Markus W. Scherer
@@ -13,49 +13,13 @@
 #include "unicode/locid.h"
 #include "unicode/uobject.h"
 #include "unicode/ures.h"
+#include "charstrmap.h"
 #include "lsr.h"
-#include "uhash.h"
 
 U_NAMESPACE_BEGIN
 
 struct XLikelySubtagsData;
 
-/**
- * Map of const char * keys & values.
- * Stores pointers as is: Does not own/copy/adopt/release strings.
- */
-class CharStringMap final : public UMemory {
-public:
-    /** Constructs an unusable non-map. */
-    CharStringMap() : map(nullptr) {}
-    CharStringMap(int32_t size, UErrorCode &errorCode) {
-        map = uhash_openSize(uhash_hashChars, uhash_compareChars, uhash_compareChars,
-                             size, &errorCode);
-    }
-    CharStringMap(CharStringMap &&other) U_NOEXCEPT : map(other.map) {
-        other.map = nullptr;
-    }
-    CharStringMap(const CharStringMap &other) = delete;
-    ~CharStringMap() {
-        uhash_close(map);
-    }
-
-    CharStringMap &operator=(CharStringMap &&other) U_NOEXCEPT {
-        map = other.map;
-        other.map = nullptr;
-        return *this;
-    }
-    CharStringMap &operator=(const CharStringMap &other) = delete;
-
-    const char *get(const char *key) const { return static_cast<const char *>(uhash_get(map, key)); }
-    void put(const char *key, const char *value, UErrorCode &errorCode) {
-        uhash_put(map, const_cast<char *>(key), const_cast<char *>(value), &errorCode);
-    }
-
-private:
-    UHashtable *map;
-};
-
 struct LocaleDistanceData {
     LocaleDistanceData() = default;
     LocaleDistanceData(LocaleDistanceData &&data);
diff --git a/icu4c/source/common/locmap.cpp b/icu4c/source/common/locmap.cpp
index a631134..29a5646 100644
--- a/icu4c/source/common/locmap.cpp
+++ b/icu4c/source/common/locmap.cpp
@@ -28,8 +28,11 @@
  */
 
 #include "locmap.h"
+#include "bytesinkutil.h"
+#include "charstr.h"
 #include "cstring.h"
 #include "cmemory.h"
+#include "ulocimp.h"
 #include "unicode/uloc.h"
 
 #if U_PLATFORM_HAS_WIN32_API && UCONFIG_USE_WINDOWS_LCID_MAPPING_API
@@ -1167,15 +1170,18 @@
     // conversion functionality when available.
 #if U_PLATFORM_HAS_WIN32_API && UCONFIG_USE_WINDOWS_LCID_MAPPING_API
     int32_t len;
-    char collVal[ULOC_KEYWORDS_CAPACITY] = {};
     char baseName[ULOC_FULLNAME_CAPACITY] = {};
     const char * mylocaleID = localeID;
 
     // Check any for keywords.
     if (uprv_strchr(localeID, '@'))
     {
-        len = uloc_getKeywordValue(localeID, "collation", collVal, UPRV_LENGTHOF(collVal) - 1, status);
-        if (U_SUCCESS(*status) && len > 0)
+        icu::CharString collVal;
+        {
+            icu::CharStringByteSink sink(&collVal);
+            ulocimp_getKeywordValue(localeID, "collation", sink, status);
+        }
+        if (U_SUCCESS(*status) && !collVal.isEmpty())
         {
             // If it contains the keyword collation, return 0 so that the LCID lookup table will be used.
             return 0;
diff --git a/icu4c/source/common/lsr.cpp b/icu4c/source/common/lsr.cpp
index d4308ad..b81808f 100644
--- a/icu4c/source/common/lsr.cpp
+++ b/icu4c/source/common/lsr.cpp
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // lsr.cpp
 // created: 2019may08 Markus W. Scherer
diff --git a/icu4c/source/common/lsr.h b/icu4c/source/common/lsr.h
index d535e5b..a33f855 100644
--- a/icu4c/source/common/lsr.h
+++ b/icu4c/source/common/lsr.h
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // lsr.h
 // created: 2019may08 Markus W. Scherer
diff --git a/icu4c/source/common/messageimpl.h b/icu4c/source/common/messageimpl.h
index dc7a6ed..a564790 100644
--- a/icu4c/source/common/messageimpl.h
+++ b/icu4c/source/common/messageimpl.h
@@ -33,7 +33,7 @@
 class U_COMMON_API MessageImpl {
 public:
     /**
-     * @return TRUE if getApostropheMode()==UMSGPAT_APOS_DOUBLE_REQUIRED
+     * @return true if getApostropheMode()==UMSGPAT_APOS_DOUBLE_REQUIRED
      */
     static UBool jdkAposMode(const MessagePattern &msgPattern) {
         return msgPattern.getApostropheMode()==UMSGPAT_APOS_DOUBLE_REQUIRED;
diff --git a/icu4c/source/common/norm2allmodes.h b/icu4c/source/common/norm2allmodes.h
index 682ece2..e8bd52c 100644
--- a/icu4c/source/common/norm2allmodes.h
+++ b/icu4c/source/common/norm2allmodes.h
@@ -65,13 +65,13 @@
     normalizeSecondAndAppend(UnicodeString &first,
                              const UnicodeString &second,
                              UErrorCode &errorCode) const {
-        return normalizeSecondAndAppend(first, second, TRUE, errorCode);
+        return normalizeSecondAndAppend(first, second, true, errorCode);
     }
     virtual UnicodeString &
     append(UnicodeString &first,
            const UnicodeString &second,
            UErrorCode &errorCode) const {
-        return normalizeSecondAndAppend(first, second, FALSE, errorCode);
+        return normalizeSecondAndAppend(first, second, false, errorCode);
     }
     UnicodeString &
     normalizeSecondAndAppend(UnicodeString &first,
@@ -112,14 +112,14 @@
         int32_t length;
         const UChar *d=impl.getDecomposition(c, buffer, length);
         if(d==NULL) {
-            return FALSE;
+            return false;
         }
         if(d==buffer) {
             decomposition.setTo(buffer, length);  // copy the string (Jamos from Hangul syllable c)
         } else {
-            decomposition.setTo(FALSE, d, length);  // read-only alias
+            decomposition.setTo(false, d, length);  // read-only alias
         }
-        return TRUE;
+        return true;
     }
     virtual UBool
     getRawDecomposition(UChar32 c, UnicodeString &decomposition) const {
@@ -127,14 +127,14 @@
         int32_t length;
         const UChar *d=impl.getRawDecomposition(c, buffer, length);
         if(d==NULL) {
-            return FALSE;
+            return false;
         }
         if(d==buffer) {
             decomposition.setTo(buffer, length);  // copy the string (algorithmic decomposition)
         } else {
-            decomposition.setTo(FALSE, d, length);  // read-only alias
+            decomposition.setTo(false, d, length);  // read-only alias
         }
-        return TRUE;
+        return true;
     }
     virtual UChar32
     composePair(UChar32 a, UChar32 b) const {
@@ -150,12 +150,12 @@
     virtual UBool
     isNormalized(const UnicodeString &s, UErrorCode &errorCode) const {
         if(U_FAILURE(errorCode)) {
-            return FALSE;
+            return false;
         }
         const UChar *sArray=s.getBuffer();
         if(sArray==NULL) {
             errorCode=U_ILLEGAL_ARGUMENT_ERROR;
-            return FALSE;
+            return false;
         }
         const UChar *sLimit=sArray+s.length();
         return sLimit==spanQuickCheckYes(sArray, sLimit, errorCode);
@@ -227,7 +227,7 @@
     virtual void
     normalize(const UChar *src, const UChar *limit,
               ReorderingBuffer &buffer, UErrorCode &errorCode) const U_OVERRIDE {
-        impl.compose(src, limit, onlyContiguous, TRUE, buffer, errorCode);
+        impl.compose(src, limit, onlyContiguous, true, buffer, errorCode);
     }
     using Normalizer2WithImpl::normalize;  // Avoid warning about hiding base class function.
 
@@ -256,24 +256,24 @@
     virtual UBool
     isNormalized(const UnicodeString &s, UErrorCode &errorCode) const U_OVERRIDE {
         if(U_FAILURE(errorCode)) {
-            return FALSE;
+            return false;
         }
         const UChar *sArray=s.getBuffer();
         if(sArray==NULL) {
             errorCode=U_ILLEGAL_ARGUMENT_ERROR;
-            return FALSE;
+            return false;
         }
         UnicodeString temp;
         ReorderingBuffer buffer(impl, temp);
         if(!buffer.init(5, errorCode)) {  // small destCapacity for substring normalization
-            return FALSE;
+            return false;
         }
-        return impl.compose(sArray, sArray+s.length(), onlyContiguous, FALSE, buffer, errorCode);
+        return impl.compose(sArray, sArray+s.length(), onlyContiguous, false, buffer, errorCode);
     }
     virtual UBool
     isNormalizedUTF8(StringPiece sp, UErrorCode &errorCode) const U_OVERRIDE {
         if(U_FAILURE(errorCode)) {
-            return FALSE;
+            return false;
         }
         const uint8_t *s = reinterpret_cast<const uint8_t *>(sp.data());
         return impl.composeUTF8(0, onlyContiguous, s, s + sp.length(), nullptr, nullptr, errorCode);
@@ -343,7 +343,7 @@
 
 struct Norm2AllModes : public UMemory {
     Norm2AllModes(Normalizer2Impl *i)
-            : impl(i), comp(*i, FALSE), decomp(*i), fcd(*i), fcc(*i, TRUE) {}
+            : impl(i), comp(*i, false), decomp(*i), fcd(*i), fcc(*i, true) {}
     ~Norm2AllModes();
 
     static Norm2AllModes *createInstance(Normalizer2Impl *impl, UErrorCode &errorCode);
diff --git a/icu4c/source/common/normalizer2impl.h b/icu4c/source/common/normalizer2impl.h
index cf3015e..4218a30 100644
--- a/icu4c/source/common/normalizer2impl.h
+++ b/icu4c/source/common/normalizer2impl.h
@@ -171,7 +171,7 @@
                  UErrorCode &errorCode);
     UBool appendBMP(UChar c, uint8_t cc, UErrorCode &errorCode) {
         if(remainingCapacity==0 && !resize(1, errorCode)) {
-            return FALSE;
+            return false;
         }
         if(lastCC<=cc || cc==0) {
             *limit++=c;
@@ -183,7 +183,7 @@
             insert(c, cc);
         }
         --remainingCapacity;
-        return TRUE;
+        return true;
     }
     UBool appendZeroCC(UChar32 c, UErrorCode &errorCode);
     UBool appendZeroCC(const UChar *s, const UChar *sLimit, UErrorCode &errorCode);
@@ -359,7 +359,7 @@
         return getFCD16FromNormData(c);
     }
 
-    /** Returns TRUE if the single-or-lead code unit c might have non-zero FCD data. */
+    /** Returns true if the single-or-lead code unit c might have non-zero FCD data. */
     UBool singleLeadMightHaveNonZeroFCD16(UChar32 lead) const {
         // 0<=lead<=0xffff
         uint8_t bits=smallFCD[lead>>8];
@@ -397,8 +397,8 @@
         MIN_YES_YES_WITH_CC=0xfe02,
         JAMO_VT=0xfe00,
         MIN_NORMAL_MAYBE_YES=0xfc00,
-        JAMO_L=2,  // offset=1 hasCompBoundaryAfter=FALSE
-        INERT=1,  // offset=0 hasCompBoundaryAfter=TRUE
+        JAMO_L=2,  // offset=1 hasCompBoundaryAfter=false
+        INERT=1,  // offset=0 hasCompBoundaryAfter=true
 
         // norm16 bit 0 is comp-boundary-after.
         HAS_COMP_BOUNDARY_AFTER=1,
diff --git a/icu4c/source/common/patternprops.h b/icu4c/source/common/patternprops.h
index b57cdeb..95898d5 100644
--- a/icu4c/source/common/patternprops.h
+++ b/icu4c/source/common/patternprops.h
@@ -44,17 +44,17 @@
 class U_COMMON_API PatternProps {
 public:
     /**
-     * @return TRUE if c is a Pattern_Syntax code point.
+     * @return true if c is a Pattern_Syntax code point.
      */
     static UBool isSyntax(UChar32 c);
 
     /**
-     * @return TRUE if c is a Pattern_Syntax or Pattern_White_Space code point.
+     * @return true if c is a Pattern_Syntax or Pattern_White_Space code point.
      */
     static UBool isSyntaxOrWhiteSpace(UChar32 c);
 
     /**
-     * @return TRUE if c is a Pattern_White_Space character.
+     * @return true if c is a Pattern_White_Space character.
      */
     static UBool isWhiteSpace(UChar32 c);
 
@@ -78,7 +78,7 @@
     /**
      * Tests whether the string contains a "pattern identifier", that is,
      * whether it contains only non-Pattern_White_Space, non-Pattern_Syntax characters.
-     * @return TRUE if there are no Pattern_White_Space or Pattern_Syntax characters in s.
+     * @return true if there are no Pattern_White_Space or Pattern_Syntax characters in s.
      */
     static UBool isIdentifier(const UChar *s, int32_t length);
 
diff --git a/icu4c/source/common/pluralmap.h b/icu4c/source/common/pluralmap.h
index db64409..d898ac4 100644
--- a/icu4c/source/common/pluralmap.h
+++ b/icu4c/source/common/pluralmap.h
@@ -234,7 +234,7 @@
     }
 
     /**
-     * Returns TRUE if this object equals rhs.
+     * Returns true if this object equals rhs.
      */
     UBool equals(
             const PluralMap<T> &rhs,
@@ -244,13 +244,13 @@
                 continue;
             }
             if (fVariants[i] == NULL || rhs.fVariants[i] == NULL) {
-                return FALSE;
+                return false;
             }
             if (!eqFunc(*fVariants[i], *rhs.fVariants[i])) {
-                return FALSE;
+                return false;
             }
         }
-        return TRUE;
+        return true;
     }
 
 private:
diff --git a/icu4c/source/common/punycode.cpp b/icu4c/source/common/punycode.cpp
index 90fe1ec..4832938 100644
--- a/icu4c/source/common/punycode.cpp
+++ b/icu4c/source/common/punycode.cpp
@@ -107,36 +107,26 @@
 }
 
 /**
- * basicToDigit[] contains the numeric value of a basic code
- * point (for use in representing integers) in the range 0 to
- * BASE-1, or -1 if b is does not represent a value.
+ * @return the numeric value of a basic code point (for use in representing integers)
+ *         in the range 0 to BASE-1, or a negative value if cp is invalid.
  */
-static const int8_t
-basicToDigit[256]={
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1,
-
-    -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
-    15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-
-    -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
-    15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
-};
+static int32_t decodeDigit(int32_t cp) {
+    if(cp<=u'Z') {
+        if(cp<=u'9') {
+            if(cp<u'0') {
+                return -1;
+            } else {
+                return cp-u'0'+26;  // 0..9 -> 26..35
+            }
+        } else {
+            return cp-u'A';  // A-Z -> 0..25
+        }
+    } else if(cp<=u'z') {
+        return cp-'a';  // a..z -> 0..25
+    } else {
+        return -1;
+    }
+}
 
 static inline char
 asciiCaseMap(char b, UBool uppercase) {
@@ -178,15 +168,23 @@
     return count+(((BASE-TMIN+1)*delta)/(delta+SKEW));
 }
 
-#define MAX_CP_COUNT    200
+namespace {
 
-U_CFUNC int32_t
+// ICU-13727: Limit input length for n^2 algorithm
+// where well-formed strings are at most 59 characters long.
+constexpr int32_t ENCODE_MAX_CODE_UNITS=1000;
+constexpr int32_t DECODE_MAX_CHARS=2000;
+
+}  // namespace
+
+// encode
+U_CAPI int32_t
 u_strToPunycode(const UChar *src, int32_t srcLength,
                 UChar *dest, int32_t destCapacity,
                 const UBool *caseFlags,
                 UErrorCode *pErrorCode) {
 
-    int32_t cpBuffer[MAX_CP_COUNT];
+    int32_t cpBuffer[ENCODE_MAX_CODE_UNITS];
     int32_t n, delta, handledCPCount, basicLength, destLength, bias, j, m, q, k, t, srcCPCount;
     UChar c, c2;
 
@@ -199,6 +197,10 @@
         *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
         return 0;
     }
+    if (srcLength>ENCODE_MAX_CODE_UNITS) {
+        *pErrorCode=U_INPUT_TOO_LONG_ERROR;
+        return 0;
+    }
 
     /*
      * Handle the basic code points and
@@ -211,9 +213,8 @@
             if((c=src[j])==0) {
                 break;
             }
-            if(srcCPCount==MAX_CP_COUNT) {
-                /* too many input code points */
-                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
+            if(j>=ENCODE_MAX_CODE_UNITS) {
+                *pErrorCode=U_INPUT_TOO_LONG_ERROR;
                 return 0;
             }
             if(IS_BASIC(c)) {
@@ -243,11 +244,6 @@
     } else {
         /* length-specified input */
         for(j=0; j<srcLength; ++j) {
-            if(srcCPCount==MAX_CP_COUNT) {
-                /* too many input code points */
-                *pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
-                return 0;
-            }
             c=src[j];
             if(IS_BASIC(c)) {
                 cpBuffer[srcCPCount++]=0;
@@ -312,7 +308,7 @@
          * Increase delta enough to advance the decoder's
          * <n,i> state to <m,0>, but guard against overflow:
          */
-        if(m-n>(0x7fffffff-MAX_CP_COUNT-delta)/(handledCPCount+1)) {
+        if(m-n>(0x7fffffff-handledCPCount-delta)/(handledCPCount+1)) {
             *pErrorCode=U_INTERNAL_PROGRAM_ERROR;
             return 0;
         }
@@ -373,7 +369,8 @@
     return u_terminateUChars(dest, destCapacity, destLength, pErrorCode);
 }
 
-U_CFUNC int32_t
+// decode
+U_CAPI int32_t
 u_strFromPunycode(const UChar *src, int32_t srcLength,
                   UChar *dest, int32_t destCapacity,
                   UBool *caseFlags,
@@ -395,6 +392,10 @@
     if(srcLength==-1) {
         srcLength=u_strlen(src);
     }
+    if (srcLength>DECODE_MAX_CHARS) {
+        *pErrorCode=U_INPUT_TOO_LONG_ERROR;
+        return 0;
+    }
 
     /*
      * Handle the basic code points:
@@ -455,7 +456,7 @@
                 return 0;
             }
 
-            digit=basicToDigit[(uint8_t)src[in++]];
+            digit=decodeDigit(src[in++]);
             if(digit<0) {
                 *pErrorCode=U_INVALID_CHAR_FOUND;
                 return 0;
diff --git a/icu4c/source/common/punycode.h b/icu4c/source/common/punycode.h
index 5d8a243..9e28f77 100644
--- a/icu4c/source/common/punycode.h
+++ b/icu4c/source/common/punycode.h
@@ -50,7 +50,7 @@
  * @param caseFlags Vector of boolean values, one per input UChar,
  *                  indicating that the corresponding character is to be
  *                  marked for the decoder optionally
- *                  uppercasing (TRUE) or lowercasing (FALSE)
+ *                  uppercasing (true) or lowercasing (false)
  *                  the character.
  *                  ASCII characters are output directly in the case as marked.
  *                  Flags corresponding to trail surrogates are ignored.
@@ -65,7 +65,7 @@
  *
  * @see u_strFromPunycode
  */
-U_CFUNC int32_t
+U_CAPI int32_t
 u_strToPunycode(const UChar *src, int32_t srcLength,
                 UChar *dest, int32_t destCapacity,
                 const UBool *caseFlags,
@@ -83,10 +83,10 @@
  *                     and of caseFlags in numbers of UBools.
  * @param caseFlags Output array for case flags as
  *                  defined by the Punycode string.
- *                  The caller should uppercase (TRUE) or lowercase (FASLE)
+ *                  The caller should uppercase (true) or lowercase (FASLE)
  *                  the corresponding character in dest.
  *                  For supplementary characters, only the lead surrogate
- *                  is marked, and FALSE is stored for the trail surrogate.
+ *                  is marked, and false is stored for the trail surrogate.
  *                  This is redundant and not necessary for ASCII characters
  *                  because they are already in the case indicated.
  *                  Can be NULL if the case flags are not needed.
@@ -100,7 +100,7 @@
  *
  * @see u_strToPunycode
  */
-U_CFUNC int32_t
+U_CAPI int32_t
 u_strFromPunycode(const UChar *src, int32_t srcLength,
                   UChar *dest, int32_t destCapacity,
                   UBool *caseFlags,
diff --git a/icu4c/source/common/putil.cpp b/icu4c/source/common/putil.cpp
index 0f3c795..3ed6a05 100644
--- a/icu4c/source/common/putil.cpp
+++ b/icu4c/source/common/putil.cpp
@@ -81,7 +81,7 @@
 #include <float.h>
 
 #ifndef U_COMMON_IMPLEMENTATION
-#error U_COMMON_IMPLEMENTATION not set - must be set for all ICU source files in common/ - see http://userguide.icu-project.org/howtouseicu
+#error U_COMMON_IMPLEMENTATION not set - must be set for all ICU source files in common/ - see https://unicode-org.github.io/icu/userguide/howtouseicu
 #endif
 
 
@@ -118,11 +118,15 @@
 #       ifndef _XPG4_2
 #           define _XPG4_2
 #       endif
+#   elif U_PLATFORM == U_PF_ANDROID
+#       include <sys/system_properties.h>
+#       include <dlfcn.h>
 #   endif
 #elif U_PLATFORM == U_PF_QNX
 #   include <sys/neutrino.h>
 #endif
 
+
 /*
  * Only include langinfo.h if we have a way to get the codeset. If we later
  * depend on more feature, we can test on U_HAVE_NL_LANGINFO.
@@ -886,7 +890,7 @@
  * It is currently use to compare two TZ files.
  */
 static UBool compareBinaryFiles(const char* defaultTZFileName, const char* TZFileName, DefaultTZInfo* tzInfo) {
-    FILE* file; 
+    FILE* file;
     int64_t sizeFile;
     int64_t sizeFileLeft;
     int32_t sizeFileRead;
@@ -1043,9 +1047,53 @@
 }
 #endif
 
+#if U_PLATFORM == U_PF_ANDROID
+typedef int(system_property_read_callback)(const prop_info* info,
+                                           void (*callback)(void* cookie,
+                                                            const char* name,
+                                                            const char* value,
+                                                            uint32_t serial),
+                                           void* cookie);
+typedef int(system_property_get)(const char*, char*);
+
+static char gAndroidTimeZone[PROP_VALUE_MAX] = { '\0' };
+
+static void u_property_read(void* cookie, const char* name, const char* value,
+                            uint32_t serial) {
+    uprv_strcpy((char* )cookie, value);
+}
+#endif
+
 U_CAPI void U_EXPORT2
-uprv_tzname_clear_cache()
+uprv_tzname_clear_cache(void)
 {
+#if U_PLATFORM == U_PF_ANDROID
+    /* Android's timezone is stored in system property. */
+    gAndroidTimeZone[0] = '\0';
+    void* libc = dlopen("libc.so", RTLD_NOLOAD);
+    if (libc) {
+        /* Android API 26+ has new API to get system property and old API
+         * (__system_property_get) is deprecated */
+        system_property_read_callback* property_read_callback =
+            (system_property_read_callback*)dlsym(
+                libc, "__system_property_read_callback");
+        if (property_read_callback) {
+            const prop_info* info =
+                __system_property_find("persist.sys.timezone");
+            if (info) {
+                property_read_callback(info, &u_property_read, gAndroidTimeZone);
+            }
+        } else {
+            system_property_get* property_get =
+                (system_property_get*)dlsym(libc, "__system_property_get");
+            if (property_get) {
+                property_get("persist.sys.timezone", gAndroidTimeZone);
+            }
+        }
+        dlclose(libc);
+    }
+#endif
+
 #if defined(CHECK_LOCALTIME_LINK) && !defined(DEBUG_SKIP_LOCALTIME_LINK)
     gTimeZoneBufferPtr = NULL;
 #endif
@@ -1084,17 +1132,21 @@
 
 /* This code can be temporarily disabled to test tzname resolution later on. */
 #ifndef DEBUG_TZNAME
+#if U_PLATFORM == U_PF_ANDROID
+    tzid = gAndroidTimeZone;
+#else
     tzid = getenv("TZ");
+#endif
     if (tzid != NULL && isValidOlsonID(tzid)
 #if U_PLATFORM == U_PF_SOLARIS
     /* When TZ equals localtime on Solaris, check the /etc/localtime file. */
         && uprv_strcmp(tzid, TZ_ENV_CHECK) != 0
 #endif
     ) {
-        /* The colon forces tzset() to treat the remainder as zoneinfo path */ 
-        if (tzid[0] == ':') { 
-            tzid++; 
-        } 
+        /* The colon forces tzset() to treat the remainder as zoneinfo path */
+        if (tzid[0] == ':') {
+            tzid++;
+        }
         /* This might be a good Olson ID. */
         skipZoneIDPrefix(&tzid);
         return tzid;
@@ -1115,7 +1167,7 @@
             int32_t tzZoneInfoTailLen = uprv_strlen(TZZONEINFOTAIL);
             gTimeZoneBuffer[ret] = 0;
             char *  tzZoneInfoTailPtr = uprv_strstr(gTimeZoneBuffer, TZZONEINFOTAIL);
-            
+
             if (tzZoneInfoTailPtr != NULL
                 && isValidOlsonID(tzZoneInfoTailPtr + tzZoneInfoTailLen))
             {
@@ -1445,7 +1497,7 @@
 #endif
 }
 
-#define TO_STRING(x) TO_STRING_2(x) 
+#define TO_STRING(x) TO_STRING_2(x)
 #define TO_STRING_2(x) #x
 
 static void U_CALLCONV TimeZoneDataDirInitFn(UErrorCode &status) {
@@ -1552,7 +1604,7 @@
         {
             /* Maybe we got some garbage.  Try something more reasonable */
             posixID = getenv("LC_ALL");
-            /* Solaris speaks POSIX -  See IEEE Std 1003.1-2008 
+            /* Solaris speaks POSIX -  See IEEE Std 1003.1-2008
              * This is needed to properly handle empty env. variables
              */
 #if U_PLATFORM == U_PF_SOLARIS
@@ -1563,7 +1615,7 @@
             if (posixID == 0) {
                 posixID = getenv(category == LC_MESSAGES ? "LC_MESSAGES" : "LC_CTYPE");
                 if (posixID == 0) {
-#endif                    
+#endif
                     posixID = getenv("LANG");
                 }
             }
@@ -1671,7 +1723,7 @@
       // (The "C"/"POSIX" case is handled in uprv_getPOSIXIDForCategory())
       uprv_strcpy(correctedPOSIXLocale, "en_US_POSIX");
     }
- 
+
     /* Note that we scan the *uncorrected* ID. */
     const char *p;
     if ((p = uprv_strrchr(posixID, '@')) != nullptr) {
@@ -2092,7 +2144,7 @@
 #endif
     // Special case for UTF-8
     if (codepageNumber == 65001)
-    { 
+    {
         return "UTF-8";
     }
     // Windows codepages can look like windows-1252, so format the found number
@@ -2285,7 +2337,7 @@
 }
 
 /**
- * icucfg.h dependent code 
+ * icucfg.h dependent code
  */
 
 #if U_ENABLE_DYLOAD && HAVE_DLOPEN && !U_PLATFORM_USES_ONLY_WIN32_API
@@ -2299,7 +2351,7 @@
 #include <dlfcn.h>
 #endif /* HAVE_DLFCN_H */
 
-U_INTERNAL void * U_EXPORT2
+U_CAPI void * U_EXPORT2
 uprv_dl_open(const char *libName, UErrorCode *status) {
   void *ret = NULL;
   if(U_FAILURE(*status)) return ret;
@@ -2313,13 +2365,13 @@
   return ret;
 }
 
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 uprv_dl_close(void *lib, UErrorCode *status) {
   if(U_FAILURE(*status)) return;
   dlclose(lib);
 }
 
-U_INTERNAL UVoidFunction* U_EXPORT2
+U_CAPI UVoidFunction* U_EXPORT2
 uprv_dlsym_func(void *lib, const char* sym, UErrorCode *status) {
   union {
       UVoidFunction *fp;
@@ -2342,40 +2394,40 @@
 /* Windows API implementation. */
 // Note: UWP does not expose/allow these APIs, so the UWP version gets the null implementation. */
 
-U_INTERNAL void * U_EXPORT2
+U_CAPI void * U_EXPORT2
 uprv_dl_open(const char *libName, UErrorCode *status) {
   HMODULE lib = NULL;
-  
+
   if(U_FAILURE(*status)) return NULL;
-  
+
   lib = LoadLibraryA(libName);
-  
+
   if(lib==NULL) {
     *status = U_MISSING_RESOURCE_ERROR;
   }
-  
+
   return (void*)lib;
 }
 
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 uprv_dl_close(void *lib, UErrorCode *status) {
   HMODULE handle = (HMODULE)lib;
   if(U_FAILURE(*status)) return;
-  
+
   FreeLibrary(handle);
-  
+
   return;
 }
 
-U_INTERNAL UVoidFunction* U_EXPORT2
+U_CAPI UVoidFunction* U_EXPORT2
 uprv_dlsym_func(void *lib, const char* sym, UErrorCode *status) {
   HMODULE handle = (HMODULE)lib;
   UVoidFunction* addr = NULL;
-  
+
   if(U_FAILURE(*status) || lib==NULL) return NULL;
-  
+
   addr = (UVoidFunction*)GetProcAddress(handle, sym);
-  
+
   if(addr==NULL) {
     DWORD lastError = GetLastError();
     if(lastError == ERROR_PROC_NOT_FOUND) {
@@ -2384,7 +2436,7 @@
       *status = U_UNSUPPORTED_ERROR; /* other unknown error. */
     }
   }
-  
+
   return addr;
 }
 
@@ -2392,7 +2444,7 @@
 
 /* No dynamic loading, null (nonexistent) implementation. */
 
-U_INTERNAL void * U_EXPORT2
+U_CAPI void * U_EXPORT2
 uprv_dl_open(const char *libName, UErrorCode *status) {
     (void)libName;
     if(U_FAILURE(*status)) return NULL;
@@ -2400,7 +2452,7 @@
     return NULL;
 }
 
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 uprv_dl_close(void *lib, UErrorCode *status) {
     (void)lib;
     if(U_FAILURE(*status)) return;
@@ -2408,7 +2460,7 @@
     return;
 }
 
-U_INTERNAL UVoidFunction* U_EXPORT2
+U_CAPI UVoidFunction* U_EXPORT2
 uprv_dlsym_func(void *lib, const char* sym, UErrorCode *status) {
   (void)lib;
   (void)sym;
diff --git a/icu4c/source/common/putilimp.h b/icu4c/source/common/putilimp.h
index d9c90cf..a325c6c 100644
--- a/icu4c/source/common/putilimp.h
+++ b/icu4c/source/common/putilimp.h
@@ -210,93 +210,93 @@
  * Floating point utility to determine if a double is Not a Number (NaN).
  * @internal
  */
-U_INTERNAL UBool   U_EXPORT2 uprv_isNaN(double d);
+U_CAPI UBool   U_EXPORT2 uprv_isNaN(double d);
 /**
  * Floating point utility to determine if a double has an infinite value.
  * @internal
  */
-U_INTERNAL UBool   U_EXPORT2 uprv_isInfinite(double d);
+U_CAPI UBool   U_EXPORT2 uprv_isInfinite(double d);
 /**
  * Floating point utility to determine if a double has a positive infinite value.
  * @internal
  */
-U_INTERNAL UBool   U_EXPORT2 uprv_isPositiveInfinity(double d);
+U_CAPI UBool   U_EXPORT2 uprv_isPositiveInfinity(double d);
 /**
  * Floating point utility to determine if a double has a negative infinite value.
  * @internal
  */
-U_INTERNAL UBool   U_EXPORT2 uprv_isNegativeInfinity(double d);
+U_CAPI UBool   U_EXPORT2 uprv_isNegativeInfinity(double d);
 /**
  * Floating point utility that returns a Not a Number (NaN) value.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_getNaN(void);
+U_CAPI double  U_EXPORT2 uprv_getNaN(void);
 /**
  * Floating point utility that returns an infinite value.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_getInfinity(void);
+U_CAPI double  U_EXPORT2 uprv_getInfinity(void);
 
 /**
  * Floating point utility to truncate a double.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_trunc(double d);
+U_CAPI double  U_EXPORT2 uprv_trunc(double d);
 /**
  * Floating point utility to calculate the floor of a double.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_floor(double d);
+U_CAPI double  U_EXPORT2 uprv_floor(double d);
 /**
  * Floating point utility to calculate the ceiling of a double.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_ceil(double d);
+U_CAPI double  U_EXPORT2 uprv_ceil(double d);
 /**
  * Floating point utility to calculate the absolute value of a double.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_fabs(double d);
+U_CAPI double  U_EXPORT2 uprv_fabs(double d);
 /**
  * Floating point utility to calculate the fractional and integer parts of a double.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_modf(double d, double* pinteger);
+U_CAPI double  U_EXPORT2 uprv_modf(double d, double* pinteger);
 /**
  * Floating point utility to calculate the remainder of a double divided by another double.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_fmod(double d, double y);
+U_CAPI double  U_EXPORT2 uprv_fmod(double d, double y);
 /**
  * Floating point utility to calculate d to the power of exponent (d^exponent).
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_pow(double d, double exponent);
+U_CAPI double  U_EXPORT2 uprv_pow(double d, double exponent);
 /**
  * Floating point utility to calculate 10 to the power of exponent (10^exponent).
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_pow10(int32_t exponent);
+U_CAPI double  U_EXPORT2 uprv_pow10(int32_t exponent);
 /**
  * Floating point utility to calculate the maximum value of two doubles.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_fmax(double d, double y);
+U_CAPI double  U_EXPORT2 uprv_fmax(double d, double y);
 /**
  * Floating point utility to calculate the minimum value of two doubles.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_fmin(double d, double y);
+U_CAPI double  U_EXPORT2 uprv_fmin(double d, double y);
 /**
  * Private utility to calculate the maximum value of two integers.
  * @internal
  */
-U_INTERNAL int32_t U_EXPORT2 uprv_max(int32_t d, int32_t y);
+U_CAPI int32_t U_EXPORT2 uprv_max(int32_t d, int32_t y);
 /**
  * Private utility to calculate the minimum value of two integers.
  * @internal
  */
-U_INTERNAL int32_t U_EXPORT2 uprv_min(int32_t d, int32_t y);
+U_CAPI int32_t U_EXPORT2 uprv_min(int32_t d, int32_t y);
 
 #if U_IS_BIG_ENDIAN
 #   define uprv_isNegative(number) (*((signed char *)&(number))<0)
@@ -309,13 +309,13 @@
  * type of arbitrary bit length.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_maxMantissa(void);
+U_CAPI double  U_EXPORT2 uprv_maxMantissa(void);
 
 /**
  * Floating point utility to calculate the logarithm of a double.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_log(double d);
+U_CAPI double  U_EXPORT2 uprv_log(double d);
 
 /**
  * Does common notion of rounding e.g. uprv_floor(x + 0.5);
@@ -323,7 +323,7 @@
  * @return the rounded double
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_round(double x);
+U_CAPI double  U_EXPORT2 uprv_round(double x);
 
 /**
  * Adds the signed integers a and b, storing the result in res.
@@ -336,7 +336,7 @@
  * @return true if overflow occurred; false if no overflow occurred.
  * @internal
  */
-U_INTERNAL UBool U_EXPORT2 uprv_add32_overflow(int32_t a, int32_t b, int32_t* res);
+U_CAPI UBool U_EXPORT2 uprv_add32_overflow(int32_t a, int32_t b, int32_t* res);
 
 /**
  * Multiplies the signed integers a and b, storing the result in res.
@@ -349,7 +349,7 @@
  * @return true if overflow occurred; false if no overflow occurred.
  * @internal
  */
-U_INTERNAL UBool U_EXPORT2 uprv_mul32_overflow(int32_t a, int32_t b, int32_t* res);
+U_CAPI UBool U_EXPORT2 uprv_mul32_overflow(int32_t a, int32_t b, int32_t* res);
 
 #if 0
 /**
@@ -359,7 +359,7 @@
  * @return the number of digits after the decimal point in a double number x.
  * @internal
  */
-/*U_INTERNAL int32_t  U_EXPORT2 uprv_digitsAfterDecimal(double x);*/
+/*U_CAPI int32_t  U_EXPORT2 uprv_digitsAfterDecimal(double x);*/
 #endif
 
 #if !U_CHARSET_IS_UTF8
@@ -368,22 +368,22 @@
  * Return the default codepage for this platform and locale.
  * This function can call setlocale() on Unix platforms. Please read the
  * platform documentation on setlocale() before calling this function.
- * @return the default codepage for this platform 
+ * @return the default codepage for this platform
  * @internal
  */
-U_INTERNAL const char*  U_EXPORT2 uprv_getDefaultCodepage(void);
+U_CAPI const char*  U_EXPORT2 uprv_getDefaultCodepage(void);
 #endif
 
 /**
  * Please use uloc_getDefault() instead.
  * Return the default locale ID string by querying the system, or
- *     zero if one cannot be found. 
+ *     zero if one cannot be found.
  * This function can call setlocale() on Unix platforms. Please read the
  * platform documentation on setlocale() before calling this function.
  * @return the default locale ID string
  * @internal
  */
-U_INTERNAL const char*  U_EXPORT2 uprv_getDefaultLocaleID(void);
+U_CAPI const char*  U_EXPORT2 uprv_getDefaultLocaleID(void);
 
 /**
  * Time zone utilities
@@ -417,7 +417,7 @@
  * Date/Time application.
  * @internal
  */
-U_INTERNAL void     U_EXPORT2 uprv_tzset(void);
+U_CAPI void     U_EXPORT2 uprv_tzset(void);
 
 /**
  * Difference in seconds between coordinated universal
@@ -425,7 +425,7 @@
  * @return the difference in seconds between coordinated universal time and local time.
  * @internal
  */
-U_INTERNAL int32_t  U_EXPORT2 uprv_timezone(void);
+U_CAPI int32_t  U_EXPORT2 uprv_timezone(void);
 
 /**
  *   tzname(0)  Three-letter time-zone name derived from TZ environment
@@ -435,13 +435,13 @@
  *              tzname(1) is an empty string.
  * @internal
  */
-U_INTERNAL const char* U_EXPORT2 uprv_tzname(int n);
+U_CAPI const char* U_EXPORT2 uprv_tzname(int n);
 
 /**
  * Reset the global tzname cache.
  * @internal
  */
-U_INTERNAL void uprv_tzname_clear_cache();
+U_CAPI void uprv_tzname_clear_cache(void);
 
 /**
  * Get UTC (GMT) time measured in milliseconds since 0:00 on 1/1/1970.
@@ -449,7 +449,7 @@
  * @return the UTC time measured in milliseconds
  * @internal
  */
-U_INTERNAL UDate U_EXPORT2 uprv_getUTCtime(void);
+U_CAPI UDate U_EXPORT2 uprv_getUTCtime(void);
 
 /**
  * Get UTC (GMT) time measured in milliseconds since 0:00 on 1/1/1970.
@@ -458,15 +458,15 @@
  * @return the UTC time measured in milliseconds
  * @internal
  */
-U_INTERNAL UDate U_EXPORT2 uprv_getRawUTCtime(void);
+U_CAPI UDate U_EXPORT2 uprv_getRawUTCtime(void);
 
 /**
  * Determine whether a pathname is absolute or not, as defined by the platform.
  * @param path Pathname to test
- * @return TRUE if the path is absolute
+ * @return true if the path is absolute
  * @internal (ICU 3.0)
  */
-U_INTERNAL UBool U_EXPORT2 uprv_pathIsAbsolute(const char *path);
+U_CAPI UBool U_EXPORT2 uprv_pathIsAbsolute(const char *path);
 
 /**
  * Use U_MAX_PTR instead of this function.
@@ -474,7 +474,7 @@
  * @return the largest possible pointer greater than the base
  * @internal (ICU 3.8)
  */
-U_INTERNAL void * U_EXPORT2 uprv_maximumPtr(void *base);
+U_CAPI void * U_EXPORT2 uprv_maximumPtr(void *base);
 
 /**
  * Maximum value of a (void*) - use to indicate the limit of an 'infinite' buffer.
@@ -572,26 +572,26 @@
  * Load a library
  * @internal (ICU 4.4)
  */
-U_INTERNAL void * U_EXPORT2 uprv_dl_open(const char *libName, UErrorCode *status);
+U_CAPI void * U_EXPORT2 uprv_dl_open(const char *libName, UErrorCode *status);
 
 /**
  * Close a library
  * @internal (ICU 4.4)
  */
-U_INTERNAL void U_EXPORT2 uprv_dl_close( void *lib, UErrorCode *status);
+U_CAPI void U_EXPORT2 uprv_dl_close( void *lib, UErrorCode *status);
 
 /**
  * Extract a symbol from a library (function)
  * @internal (ICU 4.8)
  */
-U_INTERNAL UVoidFunction* U_EXPORT2 uprv_dlsym_func( void *lib, const char *symbolName, UErrorCode *status);
+U_CAPI UVoidFunction* U_EXPORT2 uprv_dlsym_func( void *lib, const char *symbolName, UErrorCode *status);
 
 /**
  * Extract a symbol from a library (function)
  * Not implemented, no clients.
  * @internal
  */
-/* U_INTERNAL void * U_EXPORT2 uprv_dlsym_data( void *lib, const char *symbolName, UErrorCode *status); */
+/* U_CAPI void * U_EXPORT2 uprv_dlsym_data( void *lib, const char *symbolName, UErrorCode *status); */
 
 #endif
 
diff --git a/icu4c/source/common/rbbi.cpp b/icu4c/source/common/rbbi.cpp
index 43ba58b..9b7e70c 100644
--- a/icu4c/source/common/rbbi.cpp
+++ b/icu4c/source/common/rbbi.cpp
@@ -68,10 +68,18 @@
     init(status);
     fData = new RBBIDataWrapper(data, status); // status checked in constructor
     if (U_FAILURE(status)) {return;}
-    if(fData == 0) {
+    if(fData == nullptr) {
         status = U_MEMORY_ALLOCATION_ERROR;
         return;
     }
+    if (fData->fForwardTable->fLookAheadResultsSize > 0) {
+        fLookAheadMatches = static_cast<int32_t *>(
+            uprv_malloc(fData->fForwardTable->fLookAheadResultsSize * sizeof(int32_t)));
+        if (fLookAheadMatches == nullptr) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+            return;
+        }
+    }
 }
 
 //
@@ -98,10 +106,18 @@
     }
     fData = new RBBIDataWrapper(data, RBBIDataWrapper::kDontAdopt, status);
     if (U_FAILURE(status)) {return;}
-    if(fData == 0) {
+    if(fData == nullptr) {
         status = U_MEMORY_ALLOCATION_ERROR;
         return;
     }
+    if (fData->fForwardTable->fLookAheadResultsSize > 0) {
+        fLookAheadMatches = static_cast<int32_t *>(
+            uprv_malloc(fData->fForwardTable->fLookAheadResultsSize * sizeof(int32_t)));
+        if (fLookAheadMatches == nullptr) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+            return;
+        }
+    }
 }
 
 
@@ -117,10 +133,18 @@
     init(status);
     fData = new RBBIDataWrapper(udm, status); // status checked in constructor
     if (U_FAILURE(status)) {return;}
-    if(fData == 0) {
+    if(fData == nullptr) {
         status = U_MEMORY_ALLOCATION_ERROR;
         return;
     }
+    if (fData->fForwardTable->fLookAheadResultsSize > 0) {
+        fLookAheadMatches = static_cast<int32_t *>(
+            uprv_malloc(fData->fForwardTable->fLookAheadResultsSize * sizeof(int32_t)));
+        if (fLookAheadMatches == nullptr) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+            return;
+        }
+    }
 }
 
 
@@ -188,30 +212,34 @@
         // fCharIter was adopted from the outside.
         delete fCharIter;
     }
-    fCharIter = NULL;
+    fCharIter = nullptr;
 
     utext_close(&fText);
 
-    if (fData != NULL) {
+    if (fData != nullptr) {
         fData->removeReference();
-        fData = NULL;
+        fData = nullptr;
     }
     delete fBreakCache;
-    fBreakCache = NULL;
+    fBreakCache = nullptr;
 
     delete fDictionaryCache;
-    fDictionaryCache = NULL;
+    fDictionaryCache = nullptr;
 
     delete fLanguageBreakEngines;
-    fLanguageBreakEngines = NULL;
+    fLanguageBreakEngines = nullptr;
 
     delete fUnhandledBreakEngine;
-    fUnhandledBreakEngine = NULL;
+    fUnhandledBreakEngine = nullptr;
+
+    uprv_free(fLookAheadMatches);
+    fLookAheadMatches = nullptr;
 }
 
 /**
  * Assignment operator.  Sets this iterator to have the same behavior,
  * and iterate over the same text, as the one passed in.
+ * TODO: needs better handling of memory allocation errors.
  */
 RuleBasedBreakIterator&
 RuleBasedBreakIterator::operator=(const RuleBasedBreakIterator& that) {
@@ -252,6 +280,14 @@
         fData = that.fData->addReference();
     }
 
+    uprv_free(fLookAheadMatches);
+    fLookAheadMatches = nullptr;
+    if (fData && fData->fForwardTable->fLookAheadResultsSize > 0) {
+        fLookAheadMatches = static_cast<int32_t *>(
+            uprv_malloc(fData->fForwardTable->fLookAheadResultsSize * sizeof(int32_t)));
+    }
+
+
     fPosition = that.fPosition;
     fRuleStatusIndex = that.fRuleStatusIndex;
     fDone = that.fDone;
@@ -275,16 +311,17 @@
 //
 //-----------------------------------------------------------------------------
 void RuleBasedBreakIterator::init(UErrorCode &status) {
-    fCharIter             = NULL;
-    fData                 = NULL;
+    fCharIter             = nullptr;
+    fData                 = nullptr;
     fPosition             = 0;
     fRuleStatusIndex      = 0;
     fDone                 = false;
     fDictionaryCharCount  = 0;
-    fLanguageBreakEngines = NULL;
-    fUnhandledBreakEngine = NULL;
-    fBreakCache           = NULL;
-    fDictionaryCache      = NULL;
+    fLanguageBreakEngines = nullptr;
+    fUnhandledBreakEngine = nullptr;
+    fBreakCache           = nullptr;
+    fDictionaryCache      = nullptr;
+    fLookAheadMatches     = nullptr;
 
     // Note: IBM xlC is unable to assign or initialize member fText from UTEXT_INITIALIZER.
     // fText                 = UTEXT_INITIALIZER;
@@ -700,50 +737,53 @@
 };
 
 
-// Map from look-ahead break states (corresponds to rules) to boundary positions.
-// Allows multiple lookahead break rules to be in flight at the same time.
+// Wrapper functions to select the appropriate handleNext() or handleSafePrevious()
+// instantiation, based on whether an 8 or 16 bit table is required.
 //
-// This is a temporary approach for ICU 57. A better fix is to make the look-ahead numbers
-// in the state table be sequential, then we can just index an array. And the
-// table could also tell us in advance how big that array needs to be.
-//
-// Before ICU 57 there was just a single simple variable for a look-ahead match that
-// was in progress. Two rules at once did not work.
+// These Trie access functions will be inlined within the handleNext()/Previous() instantions.
+static inline uint16_t TrieFunc8(const UCPTrie *trie, UChar32 c) {
+    return UCPTRIE_FAST_GET(trie, UCPTRIE_8, c);
+}
 
-static const int32_t kMaxLookaheads = 8;
-struct LookAheadResults {
-    int32_t    fUsedSlotLimit;
-    int32_t    fPositions[8];
-    int16_t    fKeys[8];
+static inline uint16_t TrieFunc16(const UCPTrie *trie, UChar32 c) {
+    return UCPTRIE_FAST_GET(trie, UCPTRIE_16, c);
+}
 
-    LookAheadResults() : fUsedSlotLimit(0), fPositions(), fKeys() {}
-
-    int32_t getPosition(int16_t key) {
-        for (int32_t i=0; i<fUsedSlotLimit; ++i) {
-            if (fKeys[i] == key) {
-                return fPositions[i];
-            }
+int32_t RuleBasedBreakIterator::handleNext() {
+    const RBBIStateTable *statetable = fData->fForwardTable;
+    bool use8BitsTrie = ucptrie_getValueWidth(fData->fTrie) == UCPTRIE_VALUE_BITS_8;
+    if (statetable->fFlags & RBBI_8BITS_ROWS) {
+        if (use8BitsTrie) {
+            return handleNext<RBBIStateTableRow8, TrieFunc8>();
+        } else {
+            return handleNext<RBBIStateTableRow8, TrieFunc16>();
         }
-        UPRV_UNREACHABLE;
+    } else {
+        if (use8BitsTrie) {
+            return handleNext<RBBIStateTableRow16, TrieFunc8>();
+        } else {
+            return handleNext<RBBIStateTableRow16, TrieFunc16>();
+        }
     }
+}
 
-    void setPosition(int16_t key, int32_t position) {
-        int32_t i;
-        for (i=0; i<fUsedSlotLimit; ++i) {
-            if (fKeys[i] == key) {
-                fPositions[i] = position;
-                return;
-            }
+int32_t RuleBasedBreakIterator::handleSafePrevious(int32_t fromPosition) {
+    const RBBIStateTable *statetable = fData->fReverseTable;
+    bool use8BitsTrie = ucptrie_getValueWidth(fData->fTrie) == UCPTRIE_VALUE_BITS_8;
+    if (statetable->fFlags & RBBI_8BITS_ROWS) {
+        if (use8BitsTrie) {
+            return handleSafePrevious<RBBIStateTableRow8, TrieFunc8>(fromPosition);
+        } else {
+            return handleSafePrevious<RBBIStateTableRow8, TrieFunc16>(fromPosition);
         }
-        if (i >= kMaxLookaheads) {
-            UPRV_UNREACHABLE;
+    } else {
+        if (use8BitsTrie) {
+            return handleSafePrevious<RBBIStateTableRow16, TrieFunc8>(fromPosition);
+        } else {
+            return handleSafePrevious<RBBIStateTableRow16, TrieFunc16>(fromPosition);
         }
-        fKeys[i] = key;
-        fPositions[i] = position;
-        U_ASSERT(fUsedSlotLimit == i);
-        fUsedSlotLimit = i + 1;
     }
-};
+}
 
 
 //-----------------------------------------------------------------------------------
@@ -752,19 +792,20 @@
 //     Run the state machine to find a boundary
 //
 //-----------------------------------------------------------------------------------
+template <typename RowType, RuleBasedBreakIterator::PTrieFunc trieFunc>
 int32_t RuleBasedBreakIterator::handleNext() {
     int32_t             state;
     uint16_t            category        = 0;
     RBBIRunMode         mode;
 
-    RBBIStateTableRow  *row;
+    RowType             *row;
     UChar32             c;
-    LookAheadResults    lookAheadMatches;
     int32_t             result             = 0;
     int32_t             initialPosition    = 0;
     const RBBIStateTable *statetable       = fData->fForwardTable;
     const char         *tableData          = statetable->fTableData;
     uint32_t            tableRowLen        = statetable->fRowLen;
+    uint32_t            dictStart          = statetable->fDictCategoriesStart;
     #ifdef RBBI_DEBUG
         if (gTrace) {
             RBBIDebugPuts("Handle Next   pos   char  state category");
@@ -789,7 +830,7 @@
 
     //  Set the initial state for the state machine
     state = START_STATE;
-    row = (RBBIStateTableRow *)
+    row = (RowType *)
             //(statetable->fTableData + (statetable->fRowLen * state));
             (tableData + tableRowLen * state);
 
@@ -825,21 +866,8 @@
         if (mode == RBBI_RUN) {
             // look up the current character's character category, which tells us
             // which column in the state table to look at.
-            // Note:  the 16 in UTRIE_GET16 refers to the size of the data being returned,
-            //        not the size of the character going in, which is a UChar32.
-            //
-            category = UTRIE2_GET16(fData->fTrie, c);
-
-            // Check the dictionary bit in the character's category.
-            //    Counter is only used by dictionary based iteration.
-            //    Chars that need to be handled by a dictionary have a flag bit set
-            //    in their category values.
-            //
-            if ((category & 0x4000) != 0)  {
-                fDictionaryCharCount++;
-                //  And off the dictionary flag bit.
-                category &= ~0x4000;
-            }
+            category = trieFunc(fData->fTrie, c);
+            fDictionaryCharCount += (category >= dictStart);
         }
 
        #ifdef RBBI_DEBUG
@@ -860,25 +888,24 @@
         // fNextState is a variable-length array.
         U_ASSERT(category<fData->fHeader->fCatCount);
         state = row->fNextState[category];  /*Not accessing beyond memory*/
-        row = (RBBIStateTableRow *)
+        row = (RowType *)
             // (statetable->fTableData + (statetable->fRowLen * state));
             (tableData + tableRowLen * state);
 
 
-        if (row->fAccepting == -1) {
+        uint16_t accepting = row->fAccepting;
+        if (accepting == ACCEPTING_UNCONDITIONAL) {
             // Match found, common case.
             if (mode != RBBI_START) {
                 result = (int32_t)UTEXT_GETNATIVEINDEX(&fText);
             }
-            fRuleStatusIndex = row->fTagIdx;   // Remember the break status (tag) values.
-        }
-
-        int16_t completedRule = row->fAccepting;
-        if (completedRule > 0) {
+            fRuleStatusIndex = row->fTagsIdx;   // Remember the break status (tag) values.
+        } else if (accepting > ACCEPTING_UNCONDITIONAL) {
             // Lookahead match is completed.
-            int32_t lookaheadResult = lookAheadMatches.getPosition(completedRule);
+            U_ASSERT(accepting < fData->fForwardTable->fLookAheadResultsSize);
+            int32_t lookaheadResult = fLookAheadMatches[accepting];
             if (lookaheadResult >= 0) {
-                fRuleStatusIndex = row->fTagIdx;
+                fRuleStatusIndex = row->fTagsIdx;
                 fPosition = lookaheadResult;
                 return lookaheadResult;
             }
@@ -890,10 +917,12 @@
         //       This would enable hard-break rules with no following context.
         //       But there are line break test failures when trying this. Investigate.
         //       Issue ICU-20837
-        int16_t rule = row->fLookAhead;
-        if (rule != 0) {
+        uint16_t rule = row->fLookAhead;
+        U_ASSERT(rule == 0 || rule > ACCEPTING_UNCONDITIONAL);
+        U_ASSERT(rule == 0 || rule < fData->fForwardTable->fLookAheadResultsSize);
+        if (rule > ACCEPTING_UNCONDITIONAL) {
             int32_t  pos = (int32_t)UTEXT_GETNATIVEINDEX(&fText);
-            lookAheadMatches.setPosition(rule, pos);
+            fLookAheadMatches[rule] = pos;
         }
 
         if (state == STOP_STATE) {
@@ -948,10 +977,12 @@
 //      because the safe table does not require as many options.
 //
 //-----------------------------------------------------------------------------------
+template <typename RowType, RuleBasedBreakIterator::PTrieFunc trieFunc>
 int32_t RuleBasedBreakIterator::handleSafePrevious(int32_t fromPosition) {
+
     int32_t             state;
     uint16_t            category        = 0;
-    RBBIStateTableRow  *row;
+    RowType            *row;
     UChar32             c;
     int32_t             result          = 0;
 
@@ -971,7 +1002,7 @@
     //  Set the initial state for the state machine
     c = UTEXT_PREVIOUS32(&fText);
     state = START_STATE;
-    row = (RBBIStateTableRow *)
+    row = (RowType *)
             (stateTable->fTableData + (stateTable->fRowLen * state));
 
     // loop until we reach the start of the text or transition to state 0
@@ -980,12 +1011,9 @@
 
         // look up the current character's character category, which tells us
         // which column in the state table to look at.
-        // Note:  the 16 in UTRIE_GET16 refers to the size of the data being returned,
-        //        not the size of the character going in, which is a UChar32.
         //
-        //  And off the dictionary flag bit. For reverse iteration it is not used.
-        category = UTRIE2_GET16(fData->fTrie, c);
-        category &= ~0x4000;
+        //  Off the dictionary flag bit. For reverse iteration it is not used.
+        category = trieFunc(fData->fTrie, c);
 
         #ifdef RBBI_DEBUG
             if (gTrace) {
@@ -1004,7 +1032,7 @@
         // fNextState is a variable-length array.
         U_ASSERT(category<fData->fHeader->fCatCount);
         state = row->fNextState[category];  /*Not accessing beyond memory*/
-        row = (RBBIStateTableRow *)
+        row = (RowType *)
             (stateTable->fTableData + (stateTable->fRowLen * state));
 
         if (state == STOP_STATE) {
@@ -1024,6 +1052,7 @@
     return result;
 }
 
+
 //-------------------------------------------------------------------------------
 //
 //   getRuleStatus()   Return the break rule tag associated with the current
diff --git a/icu4c/source/common/rbbi_cache.cpp b/icu4c/source/common/rbbi_cache.cpp
index 4f9e833..63ff300 100644
--- a/icu4c/source/common/rbbi_cache.cpp
+++ b/icu4c/source/common/rbbi_cache.cpp
@@ -142,13 +142,15 @@
 
     utext_setNativeIndex(text, rangeStart);
     UChar32     c = utext_current32(text);
-    category = UTRIE2_GET16(fBI->fData->fTrie, c);
+    category = ucptrie_get(fBI->fData->fTrie, c);
+    uint32_t dictStart = fBI->fData->fForwardTable->fDictCategoriesStart;
 
     while(U_SUCCESS(status)) {
-        while((current = (int32_t)UTEXT_GETNATIVEINDEX(text)) < rangeEnd && (category & 0x4000) == 0) {
+        while((current = (int32_t)UTEXT_GETNATIVEINDEX(text)) < rangeEnd
+                && (category < dictStart)) {
             utext_next32(text);           // TODO: cleaner loop structure.
             c = utext_current32(text);
-            category = UTRIE2_GET16(fBI->fData->fTrie, c);
+            category = ucptrie_get(fBI->fData->fTrie, c);
         }
         if (current >= rangeEnd) {
             break;
@@ -166,7 +168,7 @@
 
         // Reload the loop variables for the next go-round
         c = utext_current32(text);
-        category = UTRIE2_GET16(fBI->fData->fTrie, c);
+        category = ucptrie_get(fBI->fData->fTrie, c);
     }
 
     // If we found breaks, ensure that the first and last entries are
diff --git a/icu4c/source/common/rbbi_cache.h b/icu4c/source/common/rbbi_cache.h
index 7991d6c..597312e 100644
--- a/icu4c/source/common/rbbi_cache.h
+++ b/icu4c/source/common/rbbi_cache.h
@@ -126,13 +126,13 @@
      * Additional boundaries, either preceding or following, may be added
      * to the cache as a side effect.
      *
-     * Return FALSE if the operation failed.
+     * Return false if the operation failed.
      */
     UBool populateNear(int32_t position, UErrorCode &status);
 
     /**
      *  Add boundary(s) to the cache following the current last boundary.
-     *  Return FALSE if at the end of the text, and no more boundaries can be added.
+     *  Return false if at the end of the text, and no more boundaries can be added.
      *  Leave iteration position at the first newly added boundary, or unchanged if no boundary was added.
      */
     UBool populateFollowing();
@@ -170,7 +170,7 @@
      *  Fails if the requested position is outside of the range of boundaries currently held by the cache.
      *  The startPosition must be on a code point boundary.
      *
-     *  Return TRUE if successful, FALSE if the specified position is after
+     *  Return true if successful, false if the specified position is after
      *  the last cached boundary or before the first.
      */
     UBool                   seek(int32_t startPosition);
diff --git a/icu4c/source/common/rbbicst.pl b/icu4c/source/common/rbbicst.pl
index 32dd2ff..9aee3c1 100755
--- a/icu4c/source/common/rbbicst.pl
+++ b/icu4c/source/common/rbbicst.pl
@@ -1,6 +1,6 @@
 #**************************************************************************
 #   Copyright (C) 2016 and later: Unicode, Inc. and others.
-#   License & terms of use: http://www.unicode.org/copyright.html#License
+#   License & terms of use: http://www.unicode.org/copyright.html
 #**************************************************************************
 #**************************************************************************
 #   Copyright (C) 2002-2016 International Business Machines Corporation
diff --git a/icu4c/source/common/rbbidata.cpp b/icu4c/source/common/rbbidata.cpp
index 1d4c9e5..193acaf 100644
--- a/icu4c/source/common/rbbidata.cpp
+++ b/icu4c/source/common/rbbidata.cpp
@@ -11,10 +11,10 @@
 
 #if !UCONFIG_NO_BREAK_ITERATION
 
+#include "unicode/ucptrie.h"
 #include "unicode/utypes.h"
 #include "rbbidata.h"
 #include "rbbirb.h"
-#include "utrie2.h"
 #include "udatamem.h"
 #include "cmemory.h"
 #include "cstring.h"
@@ -110,17 +110,24 @@
         fReverseTable = (RBBIStateTable *)((char *)data + fHeader->fRTable);
     }
 
-    fTrie = utrie2_openFromSerialized(UTRIE2_16_VALUE_BITS,
-                                      (uint8_t *)data + fHeader->fTrie,
-                                      fHeader->fTrieLen,
-                                      NULL,           // *actual length
-                                      &status);
+    fTrie = ucptrie_openFromBinary(UCPTRIE_TYPE_FAST,
+                                   UCPTRIE_VALUE_BITS_ANY,
+                                   (uint8_t *)data + fHeader->fTrie,
+                                   fHeader->fTrieLen,
+                                   nullptr,           // *actual length
+                                   &status);
     if (U_FAILURE(status)) {
         return;
     }
 
-    fRuleSource   = (UChar *)((char *)data + fHeader->fRuleSource);
-    fRuleString.setTo(TRUE, fRuleSource, -1);
+    UCPTrieValueWidth width = ucptrie_getValueWidth(fTrie);
+    if (!(width == UCPTRIE_VALUE_BITS_8 || width == UCPTRIE_VALUE_BITS_16)) {
+        status = U_INVALID_FORMAT_ERROR;
+        return;
+    }
+
+    fRuleSource   = ((char *)data + fHeader->fRuleSource);
+    fRuleString = UnicodeString::fromUTF8(StringPiece(fRuleSource, fHeader->fRuleSourceLen));
     U_ASSERT(data->fRuleSourceLen > 0);
 
     fRuleStatusTable = (int32_t *)((char *)data + fHeader->fStatusTable);
@@ -142,8 +149,8 @@
 //-----------------------------------------------------------------------------
 RBBIDataWrapper::~RBBIDataWrapper() {
     U_ASSERT(fRefCount == 0);
-    utrie2_close(fTrie);
-    fTrie = NULL;
+    ucptrie_close(fTrie);
+    fTrie = nullptr;
     if (fUDataMem) {
         udata_close(fUDataMem);
     } else if (!fDontFreeData) {
@@ -223,9 +230,16 @@
     uint32_t   c;
     uint32_t   s;
 
-    RBBIDebugPrintf("   %s\n", heading);
+    RBBIDebugPrintf("%s\n", heading);
 
-    RBBIDebugPrintf("State |  Acc  LA TagIx");
+    RBBIDebugPrintf("   fDictCategoriesStart: %d\n", table->fDictCategoriesStart);
+    RBBIDebugPrintf("   fLookAheadResultsSize: %d\n", table->fLookAheadResultsSize);
+    RBBIDebugPrintf("   Flags: %4x RBBI_LOOKAHEAD_HARD_BREAK=%s RBBI_BOF_REQUIRED=%s  RBBI_8BITS_ROWS=%s\n",
+                    table->fFlags,
+                    table->fFlags & RBBI_LOOKAHEAD_HARD_BREAK ? "T" : "F",
+                    table->fFlags & RBBI_BOF_REQUIRED ? "T" : "F",
+                    table->fFlags & RBBI_8BITS_ROWS ? "T" : "F");
+    RBBIDebugPrintf("\nState |  Acc  LA TagIx");
     for (c=0; c<fHeader->fCatCount; c++) {RBBIDebugPrintf("%3d ", c);}
     RBBIDebugPrintf("\n------|---------------"); for (c=0;c<fHeader->fCatCount; c++) {
         RBBIDebugPrintf("----");
@@ -236,12 +250,20 @@
         RBBIDebugPrintf("         N U L L   T A B L E\n\n");
         return;
     }
+    UBool use8Bits = table->fFlags & RBBI_8BITS_ROWS;
     for (s=0; s<table->fNumStates; s++) {
         RBBIStateTableRow *row = (RBBIStateTableRow *)
                                   (table->fTableData + (table->fRowLen * s));
-        RBBIDebugPrintf("%4d  |  %3d %3d %3d ", s, row->fAccepting, row->fLookAhead, row->fTagIdx);
-        for (c=0; c<fHeader->fCatCount; c++)  {
-            RBBIDebugPrintf("%3d ", row->fNextState[c]);
+        if (use8Bits) {
+            RBBIDebugPrintf("%4d  |  %3d %3d %3d ", s, row->r8.fAccepting, row->r8.fLookAhead, row->r8.fTagsIdx);
+            for (c=0; c<fHeader->fCatCount; c++)  {
+                RBBIDebugPrintf("%3d ", row->r8.fNextState[c]);
+            }
+        } else {
+            RBBIDebugPrintf("%4d  |  %3d %3d %3d ", s, row->r16.fAccepting, row->r16.fLookAhead, row->r16.fTagsIdx);
+            for (c=0; c<fHeader->fCatCount; c++)  {
+                RBBIDebugPrintf("%3d ", row->r16.fNextState[c]);
+            }
         }
         RBBIDebugPrintf("\n");
     }
@@ -377,35 +399,64 @@
     //
     int32_t         topSize = offsetof(RBBIStateTable, fTableData);
 
-    // Forward state table.  
+    // Forward state table.
     tableStartOffset = ds->readUInt32(rbbiDH->fFTable);
     tableLength      = ds->readUInt32(rbbiDH->fFTableLen);
 
     if (tableLength > 0) {
-        ds->swapArray32(ds, inBytes+tableStartOffset, topSize, 
+        RBBIStateTable *rbbiST = (RBBIStateTable *)(inBytes+tableStartOffset);
+        UBool use8Bits = ds->readUInt32(rbbiST->fFlags) & RBBI_8BITS_ROWS;
+
+        ds->swapArray32(ds, inBytes+tableStartOffset, topSize,
                             outBytes+tableStartOffset, status);
-        ds->swapArray16(ds, inBytes+tableStartOffset+topSize, tableLength-topSize,
-                            outBytes+tableStartOffset+topSize, status);
+
+        // Swap the state table if the table is in 16 bits.
+        if (use8Bits) {
+            if (outBytes != inBytes) {
+                uprv_memmove(outBytes+tableStartOffset+topSize,
+                             inBytes+tableStartOffset+topSize,
+                             tableLength-topSize);
+            }
+        } else {
+            ds->swapArray16(ds, inBytes+tableStartOffset+topSize, tableLength-topSize,
+                                outBytes+tableStartOffset+topSize, status);
+        }
     }
-    
+
     // Reverse state table.  Same layout as forward table, above.
     tableStartOffset = ds->readUInt32(rbbiDH->fRTable);
     tableLength      = ds->readUInt32(rbbiDH->fRTableLen);
 
     if (tableLength > 0) {
-        ds->swapArray32(ds, inBytes+tableStartOffset, topSize, 
+        RBBIStateTable *rbbiST = (RBBIStateTable *)(inBytes+tableStartOffset);
+        UBool use8Bits = ds->readUInt32(rbbiST->fFlags) & RBBI_8BITS_ROWS;
+
+        ds->swapArray32(ds, inBytes+tableStartOffset, topSize,
                             outBytes+tableStartOffset, status);
-        ds->swapArray16(ds, inBytes+tableStartOffset+topSize, tableLength-topSize,
-                            outBytes+tableStartOffset+topSize, status);
+
+        // Swap the state table if the table is in 16 bits.
+        if (use8Bits) {
+            if (outBytes != inBytes) {
+                uprv_memmove(outBytes+tableStartOffset+topSize,
+                             inBytes+tableStartOffset+topSize,
+                             tableLength-topSize);
+            }
+        } else {
+            ds->swapArray16(ds, inBytes+tableStartOffset+topSize, tableLength-topSize,
+                                outBytes+tableStartOffset+topSize, status);
+        }
     }
 
     // Trie table for character categories
-    utrie2_swap(ds, inBytes+ds->readUInt32(rbbiDH->fTrie), ds->readUInt32(rbbiDH->fTrieLen),
-                    outBytes+ds->readUInt32(rbbiDH->fTrie), status);
+    ucptrie_swap(ds, inBytes+ds->readUInt32(rbbiDH->fTrie), ds->readUInt32(rbbiDH->fTrieLen),
+                     outBytes+ds->readUInt32(rbbiDH->fTrie), status);
 
-    // Source Rules Text.  It's UChar data
-    ds->swapArray16(ds, inBytes+ds->readUInt32(rbbiDH->fRuleSource), ds->readUInt32(rbbiDH->fRuleSourceLen),
-                        outBytes+ds->readUInt32(rbbiDH->fRuleSource), status);
+    // Source Rules Text.  It's UTF8 data
+    if (outBytes != inBytes) {
+        uprv_memmove(outBytes+ds->readUInt32(rbbiDH->fRuleSource),
+                     inBytes+ds->readUInt32(rbbiDH->fRuleSource),
+                     ds->readUInt32(rbbiDH->fRuleSourceLen));
+    }
 
     // Table of rule status values.  It's all int_32 values
     ds->swapArray32(ds, inBytes+ds->readUInt32(rbbiDH->fStatusTable), ds->readUInt32(rbbiDH->fStatusTableLen),
diff --git a/icu4c/source/common/rbbidata.h b/icu4c/source/common/rbbidata.h
index 7b9b8d8..3749f16 100644
--- a/icu4c/source/common/rbbidata.h
+++ b/icu4c/source/common/rbbidata.h
@@ -49,16 +49,17 @@
 
 #ifdef __cplusplus
 
+#include "unicode/ucptrie.h"
 #include "unicode/uobject.h"
 #include "unicode/unistr.h"
 #include "unicode/uversion.h"
 #include "umutex.h"
-#include "utrie2.h"
+
 
 U_NAMESPACE_BEGIN
 
 // The current RBBI data format version.
-static const uint8_t RBBI_DATA_FORMAT_VERSION[] = {5, 0, 0, 0};
+static const uint8_t RBBI_DATA_FORMAT_VERSION[] = {6, 0, 0, 0};
 
 /*  
  *   The following structs map exactly onto the raw data from ICU common data file. 
@@ -94,49 +95,61 @@
 
 
 
-struct  RBBIStateTableRow {
-    int16_t          fAccepting;    /*  Non-zero if this row is for an accepting state.   */
-                                    /*  Value 0: not an accepting state.                  */
-                                    /*       -1: Unconditional Accepting state.           */
-                                    /*    positive:  Look-ahead match has completed.      */
-                                    /*           Actual boundary position happened earlier */
-                                    /*           Value here == fLookAhead in earlier      */
-                                    /*              state, at actual boundary pos.        */
-    int16_t          fLookAhead;    /*  Non-zero if this row is for a state that          */
-                                    /*    corresponds to a '/' in the rule source.        */
-                                    /*    Value is the same as the fAccepting             */
-                                    /*      value for the rule (which will appear         */
-                                    /*      in a different state.                         */
-    int16_t          fTagIdx;       /*  Non-zero if this row covers a {tagged} position   */
-                                    /*     from a rule.  Value is the index in the        */
-                                    /*     StatusTable of the set of matching             */
-                                    /*     tags (rule status values)                      */
-    int16_t          fReserved;
-    uint16_t         fNextState[1]; /*  Next State, indexed by char category.             */
-                                    /*    Variable-length array declared with length 1    */
-                                    /*    to disable bounds checkers.                     */
-                                    /*    Array Size is actually fData->fHeader->fCatCount*/
-                                    /*    CAUTION:  see RBBITableBuilder::getTableSize()  */
-                                    /*              before changing anything here.        */
+template <typename T>
+struct RBBIStateTableRowT {
+    T               fAccepting;    //  Non-zero if this row is for an accepting state.
+                                   //  Value 0: not an accepting state.
+                                   //        1: (ACCEPTING_UNCONDITIONAL) Unconditional Accepting state.
+                                   //       >1: Look-ahead match has completed.
+                                   //           Actual boundary position happened earlier.
+                                   //           Value here == fLookAhead in earlier
+                                   //           state, at actual boundary pos.
+    T               fLookAhead;    //  Non-zero if this row is for a state that
+                                   //    corresponds to a '/' in the rule source.
+                                   //    Value is the same as the fAccepting
+                                   //    value for the rule (which will appear
+                                   //    in a different state.
+    T               fTagsIdx;      //  Non-zero if this row covers a {tagged} position
+                                   //    from a rule.  Value is the index in the
+                                   //    StatusTable of the set of matching
+                                   //    tags (rule status values)
+    T               fNextState[1]; //  Next State, indexed by char category.
+                                   //    Variable-length array declared with length 1
+                                   //    to disable bounds checkers.
+                                   //    Array Size is actually fData->fHeader->fCatCount
+                                   //    CAUTION:  see RBBITableBuilder::getTableSize()
+                                   //              before changing anything here.
 };
 
+typedef RBBIStateTableRowT<uint8_t> RBBIStateTableRow8;
+typedef RBBIStateTableRowT<uint16_t> RBBIStateTableRow16;
+
+constexpr uint16_t ACCEPTING_UNCONDITIONAL = 1;   // Value constant for RBBIStateTableRow::fAccepting
+
+union RBBIStateTableRow {
+  RBBIStateTableRow16 r16;
+  RBBIStateTableRow8 r8;
+};
 
 struct RBBIStateTable {
-    uint32_t         fNumStates;    /*  Number of states.                                 */
-    uint32_t         fRowLen;       /*  Length of a state table row, in bytes.            */
-    uint32_t         fFlags;        /*  Option Flags for this state table                 */
-    uint32_t         fReserved;     /*  reserved                                          */
-    char             fTableData[1]; /*  First RBBIStateTableRow begins here.              */
-                                    /*    Variable-length array declared with length 1    */
-                                    /*    to disable bounds checkers.                     */
-                                    /*    (making it char[] simplifies ugly address       */
-                                    /*     arithmetic for indexing variable length rows.) */
+    uint32_t         fNumStates;            // Number of states.
+    uint32_t         fRowLen;               // Length of a state table row, in bytes.
+    uint32_t         fDictCategoriesStart;  // Char category number of the first dictionary
+                                            //   char class, or the the largest category number + 1
+                                            //   if there are no dictionary categories.
+    uint32_t         fLookAheadResultsSize; // Size of run-time array required for holding
+                                            //   look-ahead results. Indexed by row.fLookAhead.
+    uint32_t         fFlags;                // Option Flags for this state table.
+    char             fTableData[1];         // First RBBIStateTableRow begins here.
+                                            //   Variable-length array declared with length 1
+                                            //   to disable bounds checkers.
+                                            //   (making it char[] simplifies ugly address
+                                            //   arithmetic for indexing variable length rows.)
 };
 
-typedef enum {
-    RBBI_LOOKAHEAD_HARD_BREAK = 1,
-    RBBI_BOF_REQUIRED = 2
-} RBBIStateTableFlags;
+constexpr uint32_t RBBI_LOOKAHEAD_HARD_BREAK = 1;
+constexpr uint32_t RBBI_BOF_REQUIRED = 2;
+constexpr uint32_t RBBI_8BITS_ROWS = 4;
 
 
 /*                                        */
@@ -170,13 +183,13 @@
     const RBBIDataHeader     *fHeader;
     const RBBIStateTable     *fForwardTable;
     const RBBIStateTable     *fReverseTable;
-    const UChar              *fRuleSource;
+    const char               *fRuleSource;
     const int32_t            *fRuleStatusTable; 
 
     /* number of int32_t values in the rule status table.   Used to sanity check indexing */
     int32_t             fStatusMaxIdx;
 
-    UTrie2             *fTrie;
+    UCPTrie             *fTrie;
 
 private:
     u_atomic_int32_t    fRefCount;
@@ -184,8 +197,8 @@
     UnicodeString       fRuleString;
     UBool               fDontFreeData;
 
-    RBBIDataWrapper(const RBBIDataWrapper &other); /*  forbid copying of this class */
-    RBBIDataWrapper &operator=(const RBBIDataWrapper &other); /*  forbid copying of this class */
+    RBBIDataWrapper(const RBBIDataWrapper &other) = delete; /*  forbid copying of this class */
+    RBBIDataWrapper &operator=(const RBBIDataWrapper &other) = delete; /*  forbid copying of this class */
 };
 
 
diff --git a/icu4c/source/common/rbbinode.h b/icu4c/source/common/rbbinode.h
index f352596..cff3ba7 100644
--- a/icu4c/source/common/rbbinode.h
+++ b/icu4c/source/common/rbbinode.h
@@ -79,7 +79,7 @@
                                             //   corresponds to columns in the final
                                             //   state transition table.
 
-        UBool         fLookAheadEnd;        // For endMark nodes, set TRUE if
+        UBool         fLookAheadEnd;        // For endMark nodes, set true if
                                             //   marking the end of a look-ahead rule.
 
         UBool         fRuleRoot;            // True if this node is the root of a rule.
diff --git a/icu4c/source/common/rbbirb.cpp b/icu4c/source/common/rbbirb.cpp
index 68ded32..e5c250d 100644
--- a/icu4c/source/common/rbbirb.cpp
+++ b/icu4c/source/common/rbbirb.cpp
@@ -22,6 +22,7 @@
 #include "unicode/uniset.h"
 #include "unicode/uchar.h"
 #include "unicode/uchriter.h"
+#include "unicode/ustring.h"
 #include "unicode/parsepos.h"
 #include "unicode/parseerr.h"
 
@@ -154,7 +155,14 @@
     int32_t reverseTableSize  = align8(fForwardTable->getSafeTableSize());
     int32_t trieSize          = align8(fSetBuilder->getTrieSize());
     int32_t statusTableSize   = align8(fRuleStatusVals->size() * sizeof(int32_t));
-    int32_t rulesSize         = align8((fStrippedRules.length()+1) * sizeof(UChar));
+
+    int32_t rulesLengthInUTF8 = 0;
+    u_strToUTF8WithSub(0, 0, &rulesLengthInUTF8,
+                       fStrippedRules.getBuffer(), fStrippedRules.length(),
+                       0xfffd, nullptr, fStatus);
+    *fStatus = U_ZERO_ERROR;
+
+    int32_t rulesSize         = align8((rulesLengthInUTF8+1));
 
     int32_t         totalSize = headerSize
                                 + forwardTableSize
@@ -197,11 +205,11 @@
     data->fRTableLen     = reverseTableSize;
 
     data->fTrie          = data->fRTable + data->fRTableLen;
-    data->fTrieLen       = fSetBuilder->getTrieSize();
-    data->fStatusTable   = data->fTrie    + trieSize;
+    data->fTrieLen       = trieSize;
+    data->fStatusTable   = data->fTrie    + data->fTrieLen;
     data->fStatusTableLen= statusTableSize;
     data->fRuleSource    = data->fStatusTable + statusTableSize;
-    data->fRuleSourceLen = fStrippedRules.length() * sizeof(UChar);
+    data->fRuleSourceLen = rulesLengthInUTF8;
 
     uprv_memset(data->fReserved, 0, sizeof(data->fReserved));
 
@@ -214,7 +222,12 @@
         ruleStatusTable[i] = fRuleStatusVals->elementAti(i);
     }
 
-    fStrippedRules.extract((UChar *)((uint8_t *)data+data->fRuleSource), rulesSize/2+1, *fStatus);
+    u_strToUTF8WithSub((char *)data+data->fRuleSource, rulesSize, &rulesLengthInUTF8,
+                       fStrippedRules.getBuffer(), fStrippedRules.length(),
+                       0xfffd, nullptr, fStatus);
+    if (U_FAILURE(*fStatus)) {
+        return NULL;
+    }
 
     return data;
 }
@@ -274,9 +287,7 @@
 
     //
     // UnicodeSet processing.
-    //    Munge the Unicode Sets to create a set of character categories.
-    //    Generate the mapping tables (TRIE) from input code points to
-    //    the character categories.
+    //    Munge the Unicode Sets to create an initial set of character categories.
     //
     fSetBuilder->buildRanges();
 
@@ -290,6 +301,12 @@
     }
 
     fForwardTable->buildForwardTable();
+
+    // State table and character category optimization.
+    // Merge equivalent rows and columns.
+    // Note that this process alters the initial set of character categories,
+    // causing the representation of UnicodeSets in the parse tree to become invalid.
+
     optimizeTables();
     fForwardTable->buildSafeReverseTable(status);
 
@@ -302,6 +319,9 @@
     }
 #endif
 
+    //    Generate the mapping tables (TRIE) from input code points to
+    //    the character categories.
+    //
     fSetBuilder->buildTrie();
 
     //
diff --git a/icu4c/source/common/rbbirpt.txt b/icu4c/source/common/rbbirpt.txt
index c27857e..83f7aa4 100644
--- a/icu4c/source/common/rbbirpt.txt
+++ b/icu4c/source/common/rbbirpt.txt
@@ -2,7 +2,7 @@
 #*****************************************************************************
 #
 #   Copyright (C) 2016 and later: Unicode, Inc. and others.
-#   License & terms of use: http://www.unicode.org/copyright.html#License
+#   License & terms of use: http://www.unicode.org/copyright.html
 #
 #*****************************************************************************
 #*****************************************************************************
diff --git a/icu4c/source/common/rbbiscan.cpp b/icu4c/source/common/rbbiscan.cpp
index 4eb324b..9c406af 100644
--- a/icu4c/source/common/rbbiscan.cpp
+++ b/icu4c/source/common/rbbiscan.cpp
@@ -829,16 +829,14 @@
 UnicodeString RBBIRuleScanner::stripRules(const UnicodeString &rules) {
     UnicodeString strippedRules;
     int32_t rulesLength = rules.length();
-    bool skippingSpaces = false;
 
     for (int32_t idx=0; idx<rulesLength; idx = rules.moveIndex32(idx, 1)) {
         UChar32 cp = rules.char32At(idx);
         bool whiteSpace = u_hasBinaryProperty(cp, UCHAR_PATTERN_WHITE_SPACE);
-        if (skippingSpaces && whiteSpace) {
+        if (whiteSpace) {
             continue;
         }
         strippedRules.append(cp);
-        skippingSpaces = whiteSpace;
     }
     return strippedRules;
 }
diff --git a/icu4c/source/common/rbbiscan.h b/icu4c/source/common/rbbiscan.h
index 6828ba3..5802200 100644
--- a/icu4c/source/common/rbbiscan.h
+++ b/icu4c/source/common/rbbiscan.h
@@ -54,7 +54,7 @@
     struct RBBIRuleChar {
         UChar32             fChar;
         UBool               fEscaped;
-        RBBIRuleChar() : fChar(0), fEscaped(FALSE) {}
+        RBBIRuleChar() : fChar(0), fEscaped(false) {}
     };
 
     RBBIRuleScanner(RBBIRuleBuilder  *rb);
diff --git a/icu4c/source/common/rbbisetb.cpp b/icu4c/source/common/rbbisetb.cpp
index 36e2e07..29faeb8 100644
--- a/icu4c/source/common/rbbisetb.cpp
+++ b/icu4c/source/common/rbbisetb.cpp
@@ -19,7 +19,7 @@
 //                      by the RBBI rules.
 //                   -  compute a set of non-overlapping character ranges
 //                      with all characters within a range belonging to the same
-//                      set of input uniocde sets.
+//                      set of input unicode sets.
 //                   -  Derive a set of non-overlapping UnicodeSet (like things)
 //                      that will correspond to columns in the state table for
 //                      the RBBI execution engine.  All characters within one
@@ -35,7 +35,6 @@
 #if !UCONFIG_NO_BREAK_ITERATION
 
 #include "unicode/uniset.h"
-#include "utrie2.h"
 #include "uvector.h"
 #include "uassert.h"
 #include "cmemory.h"
@@ -46,6 +45,7 @@
 
 U_NAMESPACE_BEGIN
 
+const int32_t kMaxCharCategoriesFor8BitsTrie = 255;
 //------------------------------------------------------------------------
 //
 //   Constructor
@@ -55,11 +55,12 @@
 {
     fRB             = rb;
     fStatus         = rb->fStatus;
-    fRangeList      = 0;
-    fTrie           = 0;
+    fRangeList      = nullptr;
+    fMutableTrie    = nullptr;
+    fTrie           = nullptr;
     fTrieSize       = 0;
     fGroupCount     = 0;
-    fSawBOF         = FALSE;
+    fSawBOF         = false;
 }
 
 
@@ -79,7 +80,8 @@
         delete r;
     }
 
-    utrie2_close(fTrie);
+    ucptrie_close(fTrie);
+    umutablecptrie_close(fMutableTrie);
 }
 
 
@@ -194,25 +196,48 @@
     //
     //    Numbering: # 0  (state table column 0) is unused.
     //               # 1  is reserved - table column 1 is for end-of-input
-    //               # 2  is reserved - table column 2 is for beginning-in-input
+    //               # 2  is reserved - table column 2 is for beginning-of-input
     //               # 3  is the first range list.
     //
     RangeDescriptor *rlSearchRange;
-    for (rlRange = fRangeList; rlRange!=0; rlRange=rlRange->fNext) {
+    int32_t dictGroupCount = 0;
+
+    for (rlRange = fRangeList; rlRange!=nullptr; rlRange=rlRange->fNext) {
         for (rlSearchRange=fRangeList; rlSearchRange != rlRange; rlSearchRange=rlSearchRange->fNext) {
             if (rlRange->fIncludesSets->equals(*rlSearchRange->fIncludesSets)) {
                 rlRange->fNum = rlSearchRange->fNum;
+                rlRange->fIncludesDict = rlSearchRange->fIncludesDict;
                 break;
             }
         }
         if (rlRange->fNum == 0) {
-            fGroupCount ++;
-            rlRange->fNum = fGroupCount+2; 
-            rlRange->setDictionaryFlag();
-            addValToSets(rlRange->fIncludesSets, fGroupCount+2);
+            rlRange->fFirstInGroup = true;
+            if (rlRange->isDictionaryRange()) {
+                rlRange->fNum = ++dictGroupCount;
+                rlRange->fIncludesDict = true;
+            } else {
+                fGroupCount++;
+                rlRange->fNum = fGroupCount+2;
+                addValToSets(rlRange->fIncludesSets, rlRange->fNum);
+            }
         }
     }
 
+    // Move the character category numbers for any dictionary ranges up, so that they
+    // immediately follow the non-dictionary ranges.
+
+    fDictCategoriesStart = fGroupCount + 3;
+    for (rlRange = fRangeList; rlRange!=nullptr; rlRange=rlRange->fNext) {
+        if (rlRange->fIncludesDict) {
+            rlRange->fNum += fDictCategoriesStart - 1;
+            if (rlRange->fFirstInGroup) {
+                addValToSets(rlRange->fIncludesSets, rlRange->fNum);
+            }
+        }
+    }
+    fGroupCount += dictGroupCount;
+
+
     // Handle input sets that contain the special string {eof}.
     //   Column 1 of the state table is reserved for EOF on input.
     //   Column 2 is reserved for before-the-start-input.
@@ -220,13 +245,11 @@
     //             references to {bof}.)
     //   Add this column value (1 or 2) to the equivalent expression
     //     subtree for each UnicodeSet that contains the string {eof}
-    //   Because {bof} and {eof} are not a characters in the normal sense,
-    //   they doesn't affect the computation of ranges or TRIE.
-    static const UChar eofUString[] = {0x65, 0x6f, 0x66, 0};
-    static const UChar bofUString[] = {0x62, 0x6f, 0x66, 0};
+    //   Because {bof} and {eof} are not characters in the normal sense,
+    //   they don't affect the computation of the ranges or TRIE.
 
-    UnicodeString eofString(eofUString);
-    UnicodeString bofString(bofUString);
+    UnicodeString eofString(u"eof");
+    UnicodeString bofString(u"bof");
     for (ni=0; ; ni++) {        // Loop over each of the UnicodeSets encountered in the input rules
         usetNode = (RBBINode *)this->fRB->fUSetNodes->elementAt(ni);
         if (usetNode==NULL) {
@@ -253,19 +276,17 @@
 // range group number.
 //
 void RBBISetBuilder::buildTrie() {
-    RangeDescriptor *rlRange;
-
-    fTrie = utrie2_open(0,       //  Initial value for all code points.
+    fMutableTrie = umutablecptrie_open(
+                        0,       //  Initial value for all code points.
                         0,       //  Error value for out-of-range input.
                         fStatus);
 
-    for (rlRange = fRangeList; rlRange!=0 && U_SUCCESS(*fStatus); rlRange=rlRange->fNext) {
-        utrie2_setRange32(fTrie,
-                          rlRange->fStartChar,     // Range start
-                          rlRange->fEndChar,       // Range end (inclusive)
-                          rlRange->fNum,           // value for range
-                          TRUE,                    // Overwrite previously written values
-                          fStatus);
+    for (RangeDescriptor *range = fRangeList; range!=nullptr && U_SUCCESS(*fStatus); range=range->fNext) {
+        umutablecptrie_setRange(fMutableTrie,
+                                range->fStartChar,     // Range start
+                                range->fEndChar,       // Range end (inclusive)
+                                range->fNum,           // value for range
+                                fStatus);
     }
 }
 
@@ -273,16 +294,21 @@
 void RBBISetBuilder::mergeCategories(IntPair categories) {
     U_ASSERT(categories.first >= 1);
     U_ASSERT(categories.second > categories.first);
+    U_ASSERT((categories.first <  fDictCategoriesStart && categories.second <  fDictCategoriesStart) ||
+             (categories.first >= fDictCategoriesStart && categories.second >= fDictCategoriesStart));
+
     for (RangeDescriptor *rd = fRangeList; rd != nullptr; rd = rd->fNext) {
-        int32_t rangeNum = rd->fNum & ~DICT_BIT;
-        int32_t rangeDict = rd->fNum & DICT_BIT;
+        int32_t rangeNum = rd->fNum;
         if (rangeNum == categories.second) {
-            rd->fNum = categories.first | rangeDict;
+            rd->fNum = categories.first;
         } else if (rangeNum > categories.second) {
             rd->fNum--;
         }
     }
     --fGroupCount;
+    if (categories.second <= fDictCategoriesStart) {
+        --fDictCategoriesStart;
+    }
 }
 
 
@@ -295,15 +321,18 @@
     if (U_FAILURE(*fStatus)) {
         return 0;
     }
-    utrie2_freeze(fTrie, UTRIE2_16_VALUE_BITS, fStatus);
-    fTrieSize  = utrie2_serialize(fTrie,
-                                  NULL,                // Buffer
-                                  0,                   // Capacity
-                                  fStatus);
-    if (*fStatus == U_BUFFER_OVERFLOW_ERROR) {
-        *fStatus = U_ZERO_ERROR;
+    if (fTrie == nullptr) {
+        bool use8Bits = getNumCharCategories() <= kMaxCharCategoriesFor8BitsTrie;
+        fTrie = umutablecptrie_buildImmutable(
+            fMutableTrie,
+            UCPTRIE_TYPE_FAST,
+            use8Bits ? UCPTRIE_VALUE_BITS_8 : UCPTRIE_VALUE_BITS_16,
+            fStatus);
+        fTrieSize = ucptrie_toBinary(fTrie, nullptr, 0, fStatus);
+        if (*fStatus == U_BUFFER_OVERFLOW_ERROR) {
+            *fStatus = U_ZERO_ERROR;
+        }
     }
-    // RBBIDebugPrintf("Trie table size is %d\n", trieSize);
     return fTrieSize;
 }
 
@@ -316,9 +345,9 @@
 //
 //-----------------------------------------------------------------------------------
 void RBBISetBuilder::serializeTrie(uint8_t *where) {
-    utrie2_serialize(fTrie,
-                     where,                   // Buffer
-                     fTrieSize,               // Capacity
+    ucptrie_toBinary(fTrie,
+                     where,                // Buffer
+                     fTrieSize,            // Capacity
                      fStatus);
 }
 
@@ -386,6 +415,16 @@
 
 //------------------------------------------------------------------------
 //
+//   getDictCategoriesStart
+//
+//------------------------------------------------------------------------
+int32_t  RBBISetBuilder::getDictCategoriesStart() const {
+    return fDictCategoriesStart;
+}
+
+
+//------------------------------------------------------------------------
+//
 //   sawBOF
 //
 //------------------------------------------------------------------------
@@ -403,7 +442,7 @@
 UChar32  RBBISetBuilder::getFirstChar(int32_t category) const {
     RangeDescriptor   *rlRange;
     UChar32            retVal = (UChar32)-1;
-    for (rlRange = fRangeList; rlRange!=0; rlRange=rlRange->fNext) {
+    for (rlRange = fRangeList; rlRange!=nullptr; rlRange=rlRange->fNext) {
         if (rlRange->fNum == category) {
             retVal = rlRange->fStartChar;
             break;
@@ -413,7 +452,6 @@
 }
 
 
-
 //------------------------------------------------------------------------
 //
 //   printRanges        A debugging function.
@@ -426,16 +464,16 @@
     int                    i;
 
     RBBIDebugPrintf("\n\n Nonoverlapping Ranges ...\n");
-    for (rlRange = fRangeList; rlRange!=0; rlRange=rlRange->fNext) {
-        RBBIDebugPrintf("%2i  %4x-%4x  ", rlRange->fNum, rlRange->fStartChar, rlRange->fEndChar);
+    for (rlRange = fRangeList; rlRange!=nullptr; rlRange=rlRange->fNext) {
+        RBBIDebugPrintf("%4x-%4x  ", rlRange->fStartChar, rlRange->fEndChar);
 
         for (i=0; i<rlRange->fIncludesSets->size(); i++) {
             RBBINode       *usetNode    = (RBBINode *)rlRange->fIncludesSets->elementAt(i);
-            UnicodeString   setName = UNICODE_STRING("anon", 4);
+            UnicodeString   setName {u"anon"};
             RBBINode       *setRef = usetNode->fParent;
-            if (setRef != NULL) {
+            if (setRef != nullptr) {
                 RBBINode *varRef = setRef->fParent;
-                if (varRef != NULL  &&  varRef->fType == RBBINode::varRef) {
+                if (varRef != nullptr  &&  varRef->fType == RBBINode::varRef) {
                     setName = varRef->fText;
                 }
             }
@@ -455,19 +493,15 @@
 //------------------------------------------------------------------------
 #ifdef RBBI_DEBUG
 void RBBISetBuilder::printRangeGroups() {
-    RangeDescriptor       *rlRange;
-    RangeDescriptor       *tRange;
     int                    i;
-    int                    lastPrintedGroupNum = 0;
 
     RBBIDebugPrintf("\nRanges grouped by Unicode Set Membership...\n");
-    for (rlRange = fRangeList; rlRange!=0; rlRange=rlRange->fNext) {
-        int groupNum = rlRange->fNum & 0xbfff;
-        if (groupNum > lastPrintedGroupNum) {
-            lastPrintedGroupNum = groupNum;
+    for (RangeDescriptor *rlRange = fRangeList; rlRange!=nullptr; rlRange=rlRange->fNext) {
+        if (rlRange->fFirstInGroup) {
+            int groupNum = rlRange->fNum;
             RBBIDebugPrintf("%2i  ", groupNum);
 
-            if (rlRange->fNum & DICT_BIT) { RBBIDebugPrintf(" <DICT> ");}
+            if (groupNum >= fDictCategoriesStart) { RBBIDebugPrintf(" <DICT> ");}
 
             for (i=0; i<rlRange->fIncludesSets->size(); i++) {
                 RBBINode       *usetNode    = (RBBINode *)rlRange->fIncludesSets->elementAt(i);
@@ -483,7 +517,7 @@
             }
 
             i = 0;
-            for (tRange = rlRange; tRange != 0; tRange = tRange->fNext) {
+            for (RangeDescriptor *tRange = rlRange; tRange != nullptr; tRange = tRange->fNext) {
                 if (tRange->fNum == rlRange->fNum) {
                     if (i++ % 5 == 0) {
                         RBBIDebugPrintf("\n    ");
@@ -550,28 +584,22 @@
 //
 //-------------------------------------------------------------------------------------
 
-RangeDescriptor::RangeDescriptor(const RangeDescriptor &other, UErrorCode &status) {
-    int  i;
+RangeDescriptor::RangeDescriptor(const RangeDescriptor &other, UErrorCode &status) :
+        fStartChar(other.fStartChar), fEndChar {other.fEndChar}, fNum {other.fNum},
+        fIncludesDict{other.fIncludesDict}, fFirstInGroup{other.fFirstInGroup} {
 
-    this->fStartChar    = other.fStartChar;
-    this->fEndChar      = other.fEndChar;
-    this->fNum          = other.fNum;
-    this->fNext         = NULL;
-    UErrorCode oldstatus = status;
-    this->fIncludesSets = new UVector(status);
-    if (U_FAILURE(oldstatus)) {
-        status = oldstatus;
+    if (U_FAILURE(status)) {
+        return;
+    }
+    fIncludesSets = new UVector(status);
+    if (this->fIncludesSets == nullptr) {
+        status = U_MEMORY_ALLOCATION_ERROR;
     }
     if (U_FAILURE(status)) {
         return;
     }
-    /* test for NULL */
-    if (this->fIncludesSets == 0) {
-        status = U_MEMORY_ALLOCATION_ERROR;
-        return;
-    }
 
-    for (i=0; i<other.fIncludesSets->size(); i++) {
+    for (int32_t i=0; i<other.fIncludesSets->size(); i++) {
         this->fIncludesSets->addElement(other.fIncludesSets->elementAt(i), status);
     }
 }
@@ -583,24 +611,13 @@
 //
 //-------------------------------------------------------------------------------------
 RangeDescriptor::RangeDescriptor(UErrorCode &status) {
-    this->fStartChar    = 0;
-    this->fEndChar      = 0;
-    this->fNum          = 0;
-    this->fNext         = NULL;
-    UErrorCode oldstatus = status;
-    this->fIncludesSets = new UVector(status);
-    if (U_FAILURE(oldstatus)) {
-        status = oldstatus;
-    }
     if (U_FAILURE(status)) {
         return;
     }
-    /* test for NULL */
-    if(this->fIncludesSets == 0) {
+    fIncludesSets = new UVector(status);
+    if (fIncludesSets == nullptr) {
         status = U_MEMORY_ALLOCATION_ERROR;
-        return;
     }
-
 }
 
 
@@ -611,7 +628,7 @@
 //-------------------------------------------------------------------------------------
 RangeDescriptor::~RangeDescriptor() {
     delete  fIncludesSets;
-    fIncludesSets = NULL;
+    fIncludesSets = nullptr;
 }
 
 //-------------------------------------------------------------------------------------
@@ -622,7 +639,7 @@
 void RangeDescriptor::split(UChar32 where, UErrorCode &status) {
     U_ASSERT(where>fStartChar && where<=fEndChar);
     RangeDescriptor *nr = new RangeDescriptor(*this, status);
-    if(nr == 0) {
+    if(nr == nullptr) {
         status = U_MEMORY_ALLOCATION_ERROR;
         return;
     }
@@ -641,27 +658,22 @@
 
 //-------------------------------------------------------------------------------------
 //
-//   RangeDescriptor::setDictionaryFlag
+//   RangeDescriptor::isDictionaryRange
 //
-//            Character Category Numbers that include characters from
-//            the original Unicode Set named "dictionary" have bit 14
-//            set to 1.  The RBBI runtime engine uses this to trigger
-//            use of the word dictionary.
+//            Test whether this range includes characters from
+//            the original Unicode Set named "dictionary".
 //
-//            This function looks through the Unicode Sets that it
-//            (the range) includes, and sets the bit in fNum when
-//            "dictionary" is among them.
+//            This function looks through the Unicode Sets that
+//            the range includes, checking for one named "dictionary"
 //
 //            TODO:  a faster way would be to find the set node for
 //                   "dictionary" just once, rather than looking it
 //                   up by name every time.
 //
 //-------------------------------------------------------------------------------------
-void RangeDescriptor::setDictionaryFlag() {
-    int i;
-
+bool RangeDescriptor::isDictionaryRange() {
     static const char16_t *dictionary = u"dictionary";
-    for (i=0; i<fIncludesSets->size(); i++) {
+    for (int32_t i=0; i<fIncludesSets->size(); i++) {
         RBBINode *usetNode  = (RBBINode *)fIncludesSets->elementAt(i);
         RBBINode *setRef = usetNode->fParent;
         if (setRef != nullptr) {
@@ -669,16 +681,14 @@
             if (varRef && varRef->fType == RBBINode::varRef) {
                 const UnicodeString *setName = &varRef->fText;
                 if (setName->compare(dictionary, -1) == 0) {
-                    fNum |= RBBISetBuilder::DICT_BIT;
-                    break;
+                    return true;
                 }
             }
         }
     }
+    return false;
 }
 
-
-
 U_NAMESPACE_END
 
 #endif /* #if !UCONFIG_NO_BREAK_ITERATION */
diff --git a/icu4c/source/common/rbbisetb.h b/icu4c/source/common/rbbisetb.h
index ed6a76b..6409a4e 100644
--- a/icu4c/source/common/rbbisetb.h
+++ b/icu4c/source/common/rbbisetb.h
@@ -16,9 +16,10 @@
 
 #if !UCONFIG_NO_BREAK_ITERATION
 
+#include "unicode/ucptrie.h"
+#include "unicode/umutablecptrie.h"
 #include "unicode/uobject.h"
 #include "rbbirb.h"
-#include "utrie2.h"
 #include "uvector.h"
 
 U_NAMESPACE_BEGIN
@@ -40,25 +41,26 @@
 //
 class RangeDescriptor : public UMemory {
 public:
-    UChar32            fStartChar;      // Start of range, unicode 32 bit value.
-    UChar32            fEndChar;        // End of range, unicode 32 bit value.
-    int32_t            fNum;            // runtime-mapped input value for this range.
-    UVector           *fIncludesSets;   // vector of the the original
-                                        //   Unicode sets that include this range.
-                                        //    (Contains ptrs to uset nodes)
-    RangeDescriptor   *fNext;           // Next RangeDescriptor in the linked list.
+    UChar32            fStartChar {};            // Start of range, unicode 32 bit value.
+    UChar32            fEndChar {};              // End of range, unicode 32 bit value.
+    int32_t            fNum {0};                 // runtime-mapped input value for this range.
+    bool               fIncludesDict {false};    // True if the range includes $dictionary.
+    bool               fFirstInGroup {false};    // True if first range in a group with the same fNum.
+    UVector           *fIncludesSets {nullptr};  // vector of the the original
+                                                 //   Unicode sets that include this range.
+                                                 //    (Contains ptrs to uset nodes)
+    RangeDescriptor   *fNext {nullptr};          // Next RangeDescriptor in the linked list.
 
     RangeDescriptor(UErrorCode &status);
     RangeDescriptor(const RangeDescriptor &other, UErrorCode &status);
     ~RangeDescriptor();
     void split(UChar32 where, UErrorCode &status);   // Spit this range in two at "where", with
                                         //   where appearing in the second (higher) part.
-    void setDictionaryFlag();           // Check whether this range appears as part of
+    bool isDictionaryRange();           // Check whether this range appears as part of
                                         //   the Unicode set named "dictionary"
 
-private:
-    RangeDescriptor(const RangeDescriptor &other); // forbid copying of this class
-    RangeDescriptor &operator=(const RangeDescriptor &other); // forbid copying of this class
+    RangeDescriptor(const RangeDescriptor &other) = delete; // forbid default copying of this class
+    RangeDescriptor &operator=(const RangeDescriptor &other) = delete; // forbid assigning of this class
 };
 
 
@@ -89,6 +91,8 @@
     int32_t  getNumCharCategories() const;   // CharCategories are the same as input symbol set to the
                                              //    runtime state machine, which are the same as
                                              //    columns in the DFA state table
+    int32_t  getDictCategoriesStart() const; // First char category that includes $dictionary, or
+                                             // last category + 1 if there are no dictionary categories.
     int32_t  getTrieSize() /*const*/;        // Size in bytes of the serialized Trie.
     void     serializeTrie(uint8_t *where);  // write out the serialized Trie.
     UChar32  getFirstChar(int32_t  val) const;
@@ -101,8 +105,6 @@
      */
     void     mergeCategories(IntPair categories);
 
-    static constexpr int32_t DICT_BIT = 0x4000;
-
 #ifdef RBBI_DEBUG
     void     printSets();
     void     printRanges();
@@ -114,24 +116,22 @@
 #endif
 
 private:
-    void           numberSets();
-
     RBBIRuleBuilder       *fRB;             // The RBBI Rule Compiler that owns us.
     UErrorCode            *fStatus;
 
     RangeDescriptor       *fRangeList;      // Head of the linked list of RangeDescriptors
 
-    UTrie2                *fTrie;           // The mapping TRIE that is the end result of processing
-    uint32_t               fTrieSize;       //  the Unicode Sets.
+    UMutableCPTrie        *fMutableTrie;    // The mapping TRIE that is the end result of processing
+    UCPTrie               *fTrie;           //  the Unicode Sets.
+    uint32_t               fTrieSize;
 
-    // Groups correspond to character categories -
-    //       groups of ranges that are in the same original UnicodeSets.
-    //       fGroupCount is the index of the last used group.
-    //       fGroupCount+1 is also the number of columns in the RBBI state table being compiled.
-    //       State table column 0 is not used.  Column 1 is for end-of-input.
-    //       column 2 is for group 0.  Funny counting.
+    // Number of range groups, which are groups of ranges that are in the same original UnicodeSets.
     int32_t               fGroupCount;
 
+    // The number of the first dictionary char category.
+    // If there are no Dictionary categories, set to the last category + 1.
+    int32_t               fDictCategoriesStart;
+
     UBool                 fSawBOF;
 
     RBBISetBuilder(const RBBISetBuilder &other); // forbid copying of this class
diff --git a/icu4c/source/common/rbbitblb.cpp b/icu4c/source/common/rbbitblb.cpp
index 960ef7e..70e260f 100644
--- a/icu4c/source/common/rbbitblb.cpp
+++ b/icu4c/source/common/rbbitblb.cpp
@@ -28,6 +28,8 @@
 
 U_NAMESPACE_BEGIN
 
+const int32_t kMaxStateFor8BitsTable = 255;
+
 RBBITableBuilder::RBBITableBuilder(RBBIRuleBuilder *rb, RBBINode **rootNode, UErrorCode &status) :
         fRB(rb),
         fTree(*rootNode),
@@ -712,7 +714,6 @@
         return;
     }
     fLookAheadRuleMap->setSize(fRB->fScanner->numRules() + 1);
-    int32_t laSlotsInUse = 0;
 
     for (int32_t n=0; n<fDStates->size(); n++) {
         RBBIStateDescriptor *sd = (RBBIStateDescriptor *)fDStates->elementAt(n);
@@ -749,7 +750,7 @@
         }
 
         if (laSlotForState == 0) {
-            laSlotForState = ++laSlotsInUse;
+            laSlotForState = ++fLASlotsInUse;
         }
 
         // For each look ahead node covered by this state,
@@ -805,23 +806,23 @@
             if (sd->fPositions->indexOf(endMarker) >= 0) {
                 // Any non-zero value for fAccepting means this is an accepting node.
                 // The value is what will be returned to the user as the break status.
-                // If no other value was specified, force it to -1.
+                // If no other value was specified, force it to ACCEPTING_UNCONDITIONAL (1).
 
                 if (sd->fAccepting==0) {
                     // State hasn't been marked as accepting yet.  Do it now.
                     sd->fAccepting = fLookAheadRuleMap->elementAti(endMarker->fVal);
                     if (sd->fAccepting == 0) {
-                        sd->fAccepting = -1;
+                        sd->fAccepting = ACCEPTING_UNCONDITIONAL;
                     }
                 }
-                if (sd->fAccepting==-1 && endMarker->fVal != 0) {
+                if (sd->fAccepting==ACCEPTING_UNCONDITIONAL && endMarker->fVal != 0) {
                     // Both lookahead and non-lookahead accepting for this state.
                     // Favor the look-ahead, because a look-ahead match needs to
                     // immediately stop the run-time engine. First match, not longest.
                     sd->fAccepting = fLookAheadRuleMap->elementAti(endMarker->fVal);
                 }
                 // implicit else:
-                // if sd->fAccepting already had a value other than 0 or -1, leave it be.
+                // if sd->fAccepting already had a value other than 0 or 1, leave it be.
             }
         }
     }
@@ -855,7 +856,7 @@
             int32_t positionsIdx = sd->fPositions->indexOf(lookAheadNode);
             if (positionsIdx >= 0) {
                 U_ASSERT(lookAheadNode == sd->fPositions->elementAt(positionsIdx));
-                int32_t lookaheadSlot = fLookAheadRuleMap->elementAti(lookAheadNode->fVal);
+                uint32_t lookaheadSlot = fLookAheadRuleMap->elementAti(lookAheadNode->fVal);
                 U_ASSERT(sd->fLookAhead == 0 || sd->fLookAhead == lookaheadSlot);
                 // if (sd->fLookAhead != 0 && sd->fLookAhead != lookaheadSlot) {
                 //     printf("%s:%d Bingo. sd->fLookAhead:%d   lookaheadSlot:%d\n",
@@ -1148,7 +1149,13 @@
     int32_t numCols = fRB->fSetBuilder->getNumCharCategories();
 
     for (; categories->first < numCols-1; categories->first++) {
-        for (categories->second=categories->first+1; categories->second < numCols; categories->second++) {
+        // Note: dictionary & non-dictionary columns cannot be merged.
+        //       The limitSecond value prevents considering mixed pairs.
+        //       Dictionary categories are >= DictCategoriesStart.
+        //       Non dict categories are   <  DictCategoriesStart.
+        int limitSecond = categories->first < fRB->fSetBuilder->getDictCategoriesStart() ?
+            fRB->fSetBuilder->getDictCategoriesStart() : numCols;
+        for (categories->second=categories->first+1; categories->second < limitSecond; categories->second++) {
             // Initialized to different values to prevent returning true if numStates = 0 (implies no duplicates).
             uint16_t table_base = 0;
             uint16_t table_dupl = 1;
@@ -1335,11 +1342,18 @@
     numRows = fDStates->size();
     numCols = fRB->fSetBuilder->getNumCharCategories();
 
-    rowSize = offsetof(RBBIStateTableRow, fNextState) + sizeof(uint16_t)*numCols;
+    if (use8BitsForTable()) {
+        rowSize = offsetof(RBBIStateTableRow8, fNextState) + sizeof(int8_t)*numCols;
+    } else {
+        rowSize = offsetof(RBBIStateTableRow16, fNextState) + sizeof(int16_t)*numCols;
+    }
     size   += numRows * rowSize;
     return size;
 }
 
+bool RBBITableBuilder::use8BitsForTable() const {
+    return fDStates->size() <= kMaxStateFor8BitsTable;
+}
 
 //-----------------------------------------------------------------------------
 //
@@ -1364,27 +1378,48 @@
         return;
     }
 
-    table->fRowLen    = offsetof(RBBIStateTableRow, fNextState) + sizeof(uint16_t) * catCount;
     table->fNumStates = fDStates->size();
+    table->fDictCategoriesStart = fRB->fSetBuilder->getDictCategoriesStart();
+    table->fLookAheadResultsSize = fLASlotsInUse == ACCEPTING_UNCONDITIONAL ? 0 : fLASlotsInUse + 1;
     table->fFlags     = 0;
+    if (use8BitsForTable()) {
+        table->fRowLen    = offsetof(RBBIStateTableRow8, fNextState) + sizeof(uint8_t) * catCount;
+        table->fFlags  |= RBBI_8BITS_ROWS;
+    } else {
+        table->fRowLen    = offsetof(RBBIStateTableRow16, fNextState) + sizeof(int16_t) * catCount;
+    }
     if (fRB->fLookAheadHardBreak) {
         table->fFlags  |= RBBI_LOOKAHEAD_HARD_BREAK;
     }
     if (fRB->fSetBuilder->sawBOF()) {
         table->fFlags  |= RBBI_BOF_REQUIRED;
     }
-    table->fReserved  = 0;
 
     for (state=0; state<table->fNumStates; state++) {
         RBBIStateDescriptor *sd = (RBBIStateDescriptor *)fDStates->elementAt(state);
         RBBIStateTableRow   *row = (RBBIStateTableRow *)(table->fTableData + state*table->fRowLen);
-        U_ASSERT (-32768 < sd->fAccepting && sd->fAccepting <= 32767);
-        U_ASSERT (-32768 < sd->fLookAhead && sd->fLookAhead <= 32767);
-        row->fAccepting = (int16_t)sd->fAccepting;
-        row->fLookAhead = (int16_t)sd->fLookAhead;
-        row->fTagIdx    = (int16_t)sd->fTagsIdx;
-        for (col=0; col<catCount; col++) {
-            row->fNextState[col] = (uint16_t)sd->fDtran->elementAti(col);
+        if (use8BitsForTable()) {
+            U_ASSERT (sd->fAccepting <= 255);
+            U_ASSERT (sd->fLookAhead <= 255);
+            U_ASSERT (0 <= sd->fTagsIdx && sd->fTagsIdx <= 255);
+            RBBIStateTableRow8 *r8 = (RBBIStateTableRow8*)row;
+            r8->fAccepting = sd->fAccepting;
+            r8->fLookAhead = sd->fLookAhead;
+            r8->fTagsIdx   = sd->fTagsIdx;
+            for (col=0; col<catCount; col++) {
+                U_ASSERT (sd->fDtran->elementAti(col) <= kMaxStateFor8BitsTable);
+                r8->fNextState[col] = sd->fDtran->elementAti(col);
+            }
+        } else {
+            U_ASSERT (sd->fAccepting <= 0xffff);
+            U_ASSERT (sd->fLookAhead <= 0xffff);
+            U_ASSERT (0 <= sd->fTagsIdx && sd->fTagsIdx <= 0xffff);
+            row->r16.fAccepting = sd->fAccepting;
+            row->r16.fLookAhead = sd->fLookAhead;
+            row->r16.fTagsIdx   = sd->fTagsIdx;
+            for (col=0; col<catCount; col++) {
+                row->r16.fNextState[col] = sd->fDtran->elementAti(col);
+            }
         }
     }
 }
@@ -1520,11 +1555,18 @@
     numRows = fSafeTable->size();
     numCols = fRB->fSetBuilder->getNumCharCategories();
 
-    rowSize = offsetof(RBBIStateTableRow, fNextState) + sizeof(uint16_t)*numCols;
+    if (use8BitsForSafeTable()) {
+        rowSize = offsetof(RBBIStateTableRow8, fNextState) + sizeof(int8_t)*numCols;
+    } else {
+        rowSize = offsetof(RBBIStateTableRow16, fNextState) + sizeof(int16_t)*numCols;
+    }
     size   += numRows * rowSize;
     return size;
 }
 
+bool RBBITableBuilder::use8BitsForSafeTable() const {
+    return fSafeTable->size() <= kMaxStateFor8BitsTable;
+}
 
 //-----------------------------------------------------------------------------
 //
@@ -1549,20 +1591,34 @@
         return;
     }
 
-    table->fRowLen    = offsetof(RBBIStateTableRow, fNextState) + sizeof(uint16_t) * catCount;
     table->fNumStates = fSafeTable->size();
     table->fFlags     = 0;
-    table->fReserved  = 0;
+    if (use8BitsForSafeTable()) {
+        table->fRowLen    = offsetof(RBBIStateTableRow8, fNextState) + sizeof(uint8_t) * catCount;
+        table->fFlags  |= RBBI_8BITS_ROWS;
+    } else {
+        table->fRowLen    = offsetof(RBBIStateTableRow16, fNextState) + sizeof(int16_t) * catCount;
+    }
 
     for (state=0; state<table->fNumStates; state++) {
         UnicodeString *rowString = (UnicodeString *)fSafeTable->elementAt(state);
         RBBIStateTableRow   *row = (RBBIStateTableRow *)(table->fTableData + state*table->fRowLen);
-        row->fAccepting = 0;
-        row->fLookAhead = 0;
-        row->fTagIdx    = 0;
-        row->fReserved  = 0;
-        for (col=0; col<catCount; col++) {
-            row->fNextState[col] = rowString->charAt(col);
+        if (use8BitsForSafeTable()) {
+            RBBIStateTableRow8 *r8 = (RBBIStateTableRow8*)row;
+            r8->fAccepting = 0;
+            r8->fLookAhead = 0;
+            r8->fTagsIdx    = 0;
+            for (col=0; col<catCount; col++) {
+                U_ASSERT(rowString->charAt(col) <= kMaxStateFor8BitsTable);
+                r8->fNextState[col] = static_cast<uint8_t>(rowString->charAt(col));
+            }
+        } else {
+            row->r16.fAccepting = 0;
+            row->r16.fLookAhead = 0;
+            row->r16.fTagsIdx    = 0;
+            for (col=0; col<catCount; col++) {
+                row->r16.fNextState[col] = rowString->charAt(col);
+            }
         }
     }
 }
@@ -1600,12 +1656,12 @@
     RBBIDebugPrintf("state |           i n p u t     s y m b o l s \n");
     RBBIDebugPrintf("      | Acc  LA    Tag");
     for (c=0; c<fRB->fSetBuilder->getNumCharCategories(); c++) {
-        RBBIDebugPrintf(" %2d", c);
+        RBBIDebugPrintf(" %3d", c);
     }
     RBBIDebugPrintf("\n");
     RBBIDebugPrintf("      |---------------");
     for (c=0; c<fRB->fSetBuilder->getNumCharCategories(); c++) {
-        RBBIDebugPrintf("---");
+        RBBIDebugPrintf("----");
     }
     RBBIDebugPrintf("\n");
 
@@ -1614,7 +1670,7 @@
         RBBIDebugPrintf("  %3d | " , n);
         RBBIDebugPrintf("%3d %3d %5d ", sd->fAccepting, sd->fLookAhead, sd->fTagsIdx);
         for (c=0; c<fRB->fSetBuilder->getNumCharCategories(); c++) {
-            RBBIDebugPrintf(" %2d", sd->fDtran->elementAti(c));
+            RBBIDebugPrintf(" %3d", sd->fDtran->elementAti(c));
         }
         RBBIDebugPrintf("\n");
     }
diff --git a/icu4c/source/common/rbbitblb.h b/icu4c/source/common/rbbitblb.h
index c2b574f..fe3db8d 100644
--- a/icu4c/source/common/rbbitblb.h
+++ b/icu4c/source/common/rbbitblb.h
@@ -20,6 +20,7 @@
 
 #include "unicode/uobject.h"
 #include "unicode/rbbi.h"
+#include "rbbidata.h"
 #include "rbbirb.h"
 #include "rbbinode.h"
 
@@ -53,6 +54,9 @@
      */
     void     exportTable(void *where);
 
+    /** Use 8 bits to encode the forward table */
+    bool     use8BitsForTable() const;
+
     /**
      *  Find duplicate (redundant) character classes. Begin looking with categories.first.
      *  Duplicate, if found are returned in the categories parameter.
@@ -85,6 +89,8 @@
      */
     void     exportSafeTable(void *where);
 
+    /** Use 8 bits to encode the safe reverse table */
+    bool     use8BitsForSafeTable() const;
 
 private:
     void     calcNullable(RBBINode *n);
@@ -179,9 +185,15 @@
     /** Map from rule number (fVal in look ahead nodes) to sequential lookahead index. */
     UVector32        *fLookAheadRuleMap = nullptr;
 
+    /* Counter used when assigning lookahead rule numbers.
+     * Contains the last look-ahead number already in use.
+     * The first look-ahead number is 2; Number 1 (ACCEPTING_UNCONDITIONAL) is reserved
+     * for non-lookahead accepting states. See the declarations of RBBIStateTableRowT.   */
+    int32_t          fLASlotsInUse = ACCEPTING_UNCONDITIONAL;
 
-    RBBITableBuilder(const RBBITableBuilder &other); // forbid copying of this class
-    RBBITableBuilder &operator=(const RBBITableBuilder &other); // forbid copying of this class
+
+    RBBITableBuilder(const RBBITableBuilder &other) = delete; // forbid copying of this class
+    RBBITableBuilder &operator=(const RBBITableBuilder &other) = delete; // forbid copying of this class
 };
 
 //
@@ -190,8 +202,8 @@
 class RBBIStateDescriptor : public UMemory {
 public:
     UBool            fMarked;
-    int32_t          fAccepting;
-    int32_t          fLookAhead;
+    uint32_t         fAccepting;
+    uint32_t         fLookAhead;
     UVector          *fTagVals;
     int32_t          fTagsIdx;
     UVector          *fPositions;          // Set of parse tree positions associated
diff --git a/icu4c/source/common/resource.h b/icu4c/source/common/resource.h
index 5199b85..3795694 100644
--- a/icu4c/source/common/resource.h
+++ b/icu4c/source/common/resource.h
@@ -60,7 +60,7 @@
     /**
      * @param i Array item index.
      * @param value Output-only, receives the value of the i'th item.
-     * @return TRUE if i is non-negative and less than getSize().
+     * @return true if i is non-negative and less than getSize().
      */
     UBool getValue(int32_t i, ResourceValue &value) const;
 
@@ -97,14 +97,14 @@
      * @param i Table item index.
      * @param key Output-only, receives the key of the i'th item.
      * @param value Output-only, receives the value of the i'th item.
-     * @return TRUE if i is non-negative and less than getSize().
+     * @return true if i is non-negative and less than getSize().
      */
     UBool getKeyAndValue(int32_t i, const char *&key, ResourceValue &value) const;
 
     /**
      * @param key Key string to find in the table.
      * @param value Output-only, receives the value of the item with that key.
-     * @return TRUE if the table contains the key.
+     * @return true if the table contains the key.
      */
     UBool findValue(const char *key, ResourceValue &value) const;
 
@@ -141,7 +141,7 @@
     inline UnicodeString getUnicodeString(UErrorCode &errorCode) const {
         int32_t len = 0;
         const UChar *r = getString(len, errorCode);
-        return UnicodeString(TRUE, r, len);
+        return UnicodeString(true, r, len);
     }
 
     /**
@@ -152,7 +152,7 @@
     inline UnicodeString getAliasUnicodeString(UErrorCode &errorCode) const {
         int32_t len = 0;
         const UChar *r = getAliasString(len, errorCode);
-        return UnicodeString(TRUE, r, len);
+        return UnicodeString(true, r, len);
     }
 
     /**
@@ -199,7 +199,7 @@
      * CLDR no-fallback data values of (three empty-set symbols)=={2205, 2205, 2205}
      * when enumerating tables with fallback from the specific resource bundle to root.
      *
-     * @return TRUE if this is a no-inheritance marker string
+     * @return true if this is a no-inheritance marker string
      */
     virtual UBool isNoInheritanceMarker() const = 0;
 
diff --git a/icu4c/source/common/ruleiter.h b/icu4c/source/common/ruleiter.h
index 4e1be53..28e2ca5 100644
--- a/icu4c/source/common/ruleiter.h
+++ b/icu4c/source/common/ruleiter.h
@@ -114,7 +114,7 @@
      * character.
      * @param options one or more of the following options, bitwise-OR-ed
      * together: PARSE_VARIABLES, PARSE_ESCAPES, SKIP_WHITESPACE.
-     * @param isEscaped output parameter set to TRUE if the character
+     * @param isEscaped output parameter set to true if the character
      * was escaped
      * @param ec input-output error code.  An error will only be set by
      * this routing if options includes PARSE_VARIABLES and an unknown
diff --git a/icu4c/source/common/serv.h b/icu4c/source/common/serv.h
index e1f69cd..ca070b6 100644
--- a/icu4c/source/common/serv.h
+++ b/icu4c/source/common/serv.h
@@ -138,16 +138,16 @@
   * must eventually return false.  This implementation has no fallbacks
   * and always returns false.</p>
   *
-  * @return TRUE if the ICUServiceKey changed to a valid fallback value.
+  * @return true if the ICUServiceKey changed to a valid fallback value.
   */
   virtual UBool fallback();
 
  /**
-  * <p>Return TRUE if a key created from id matches, or would eventually
+  * <p>Return true if a key created from id matches, or would eventually
   * fallback to match, the canonical ID of this ICUServiceKey.</p>
   *
   * @param id the id to test.
-  * @return TRUE if this ICUServiceKey's canonical ID is a fallback of id.
+  * @return true if this ICUServiceKey's canonical ID is a fallback of id.
   */
   virtual UBool isFallbackOf(const UnicodeString& id) const;
 
@@ -291,15 +291,15 @@
  public:
   /**
    * <p>Construct a SimpleFactory that maps a single ID to a single 
-   * service instance.  If visible is TRUE, the ID will be visible.
+   * service instance.  If visible is true, the ID will be visible.
    * The instance must not be NULL.  The SimpleFactory will adopt
    * the instance, which must not be changed subsequent to this call.</p>
    *
    * @param instanceToAdopt the service instance to adopt.
    * @param id the ID to assign to this service instance.
-   * @param visible if TRUE, the ID will be visible.
+   * @param visible if true, the ID will be visible.
    */
-  SimpleFactory(UObject* instanceToAdopt, const UnicodeString& id, UBool visible = TRUE);
+  SimpleFactory(UObject* instanceToAdopt, const UnicodeString& id, UBool visible = true);
 
   /**
    * <p>Destructor.</p>
@@ -318,7 +318,7 @@
   virtual UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const;
 
   /**
-   * <p>This implementation adds a mapping from ID -> this to result if visible is TRUE, 
+   * <p>This implementation adds a mapping from ID -> this to result if visible is true, 
    * otherwise it removes ID from result.</p>
    *
    * @param result the mapping table to update.
@@ -327,7 +327,7 @@
   virtual void updateVisibleIDs(Hashtable& result, UErrorCode& status) const;
 
   /**
-   * <p>This implementation returns the factory ID if it equals id and visible is TRUE,
+   * <p>This implementation returns the factory ID if it equals id and visible is true,
    * otherwise it returns the empty string.  (This implementation provides
    * no localized id information.)</p>
    *
@@ -427,8 +427,8 @@
                             UErrorCode& status);
 
   /**
-   * <p>Return TRUE if either string of the pair is bogus.</p>
-   * @return TRUE if either string of the pair is bogus.
+   * <p>Return true if either string of the pair is bogus.</p>
+   * @return true if either string of the pair is bogus.
    */
   UBool isBogus() const;
 
@@ -761,7 +761,7 @@
 
     /**
      * <p>A convenience override of registerInstance(UObject*, const UnicodeString&, UBool)
-     * that defaults visible to TRUE.</p>
+     * that defaults visible to true.</p>
      *
      * @param objToAdopt the object to register and adopt.
      * @param id the ID to assign to this object.
@@ -774,7 +774,7 @@
     /**
      * <p>Register a service instance with the provided ID.  The ID will be 
      * canonicalized.  The canonicalized ID will be returned by
-     * getVisibleIDs if visible is TRUE.  The service instance will be adopted and
+     * getVisibleIDs if visible is true.  The service instance will be adopted and
      * must not be modified subsequent to this call.</p>
      *
      * <p>This issues a serviceChanged notification to registered listeners.</p>
@@ -784,7 +784,7 @@
      *
      * @param objToAdopt the object to register and adopt.
      * @param id the ID to assign to this object.
-     * @param visible TRUE if getVisibleIDs is to return this ID.
+     * @param visible true if getVisibleIDs is to return this ID.
      * @param status the error code status.
      * @return a registry key that can be passed to unregister() to unregister
      * (and discard) this instance.
@@ -820,7 +820,7 @@
      *
      * @param rkey the registry key.
      * @param status the error code status.  
-     * @return TRUE if the call successfully unregistered the factory.
+     * @return true if the call successfully unregistered the factory.
      */
     virtual UBool unregister(URegistryKey rkey, UErrorCode& status);
 
@@ -833,9 +833,9 @@
     virtual void reset(void);
 
     /**
-     * <p>Return TRUE if the service is in its default state.</p>
+     * <p>Return true if the service is in its default state.</p>
      *
-     * <p>The default implementation returns TRUE if there are no 
+     * <p>The default implementation returns true if there are no 
      * factories registered.</p>
      */
     virtual UBool isDefault(void) const;
@@ -877,7 +877,7 @@
      *
      * @param instanceToAdopt the service instance to adopt.
      * @param id the ID to assign to this service instance.
-     * @param visible if TRUE, the ID will be visible.
+     * @param visible if true, the ID will be visible.
      * @param status the error code status.
      * @return an instance of ICUServiceFactory that maps this instance to the provided ID.
      */
@@ -885,7 +885,7 @@
 
     /**
      * <p>Reinitialize the factory list to its default state.  After this call, isDefault()
-     * must return TRUE.</p>
+     * must return true.</p>
      *
      * <p>This issues a serviceChanged notification to registered listeners.</p>
      *
@@ -928,7 +928,7 @@
      * different listeners.</p>
      *
      * @param l the listener to test.
-     * @return TRUE if the service accepts the listener.
+     * @return true if the service accepts the listener.
      */
     virtual UBool acceptsListener(const EventListener& l) const;
 
diff --git a/icu4c/source/common/servnotf.h b/icu4c/source/common/servnotf.h
index dba7a0f..305570c 100644
--- a/icu4c/source/common/servnotf.h
+++ b/icu4c/source/common/servnotf.h
@@ -105,7 +105,7 @@
     
 protected: 
     /**
-     * Subclasses implement this to return TRUE if the listener is
+     * Subclasses implement this to return true if the listener is
      * of the appropriate type.
      */
     virtual UBool acceptsListener(const EventListener& l) const = 0;
diff --git a/icu4c/source/common/sharedobject.h b/icu4c/source/common/sharedobject.h
index c0a5aba..6ccfb27 100644
--- a/icu4c/source/common/sharedobject.h
+++ b/icu4c/source/common/sharedobject.h
@@ -90,13 +90,13 @@
     int32_t getRefCount() const;
 
     /**
-     * If noHardReferences() == TRUE then this object has no hard references.
+     * If noHardReferences() == true then this object has no hard references.
      * Must be called only from within the internals of UnifiedCache.
      */
     inline UBool noHardReferences() const { return getRefCount() == 0; }
 
     /**
-     * If hasHardReferences() == TRUE then this object has hard references.
+     * If hasHardReferences() == true then this object has hard references.
      * Must be called only from within the internals of UnifiedCache.
      */
     inline UBool hasHardReferences() const { return getRefCount() != 0; }
diff --git a/icu4c/source/common/simpleformatter.cpp b/icu4c/source/common/simpleformatter.cpp
index 76d8f54..f7f7aea 100644
--- a/icu4c/source/common/simpleformatter.cpp
+++ b/icu4c/source/common/simpleformatter.cpp
@@ -263,6 +263,8 @@
             sb.append(compiledPattern + i, n);
             i += n;
         } else if (n < offsetsLength) {
+            // TODO(ICU-20406): This does not distinguish between "{0}{1}" and "{1}{0}".
+            // Consider removing this function and replacing it with an iterator interface.
             offsets[n] = sb.length();
         }
     }
diff --git a/icu4c/source/common/sources.txt b/icu4c/source/common/sources.txt
new file mode 100644
index 0000000..e0410da
--- /dev/null
+++ b/icu4c/source/common/sources.txt
@@ -0,0 +1,196 @@
+appendable.cpp
+bmpset.cpp
+brkeng.cpp
+brkiter.cpp
+bytesinkutil.cpp
+bytestream.cpp
+bytestrie.cpp
+bytestriebuilder.cpp
+bytestrieiterator.cpp
+caniter.cpp
+characterproperties.cpp
+chariter.cpp
+charstr.cpp
+cmemory.cpp
+cstr.cpp
+cstring.cpp
+cwchar.cpp
+dictbe.cpp
+dictionarydata.cpp
+dtintrv.cpp
+edits.cpp
+errorcode.cpp
+filteredbrk.cpp
+filterednormalizer2.cpp
+icudataver.cpp
+icuplug.cpp
+loadednormalizer2impl.cpp
+localebuilder.cpp
+localematcher.cpp
+localeprioritylist.cpp
+locavailable.cpp
+locbased.cpp
+locdispnames.cpp
+locdistance.cpp
+locdspnm.cpp
+locid.cpp
+loclikely.cpp
+loclikelysubtags.cpp
+locmap.cpp
+locresdata.cpp
+locutil.cpp
+lsr.cpp
+messagepattern.cpp
+normalizer2.cpp
+normalizer2impl.cpp
+normlzr.cpp
+parsepos.cpp
+patternprops.cpp
+pluralmap.cpp
+propname.cpp
+propsvec.cpp
+punycode.cpp
+putil.cpp
+rbbi.cpp
+rbbi_cache.cpp
+rbbidata.cpp
+rbbinode.cpp
+rbbirb.cpp
+rbbiscan.cpp
+rbbisetb.cpp
+rbbistbl.cpp
+rbbitblb.cpp
+resbund.cpp
+resbund_cnv.cpp
+resource.cpp
+restrace.cpp
+ruleiter.cpp
+schriter.cpp
+serv.cpp
+servlk.cpp
+servlkf.cpp
+servls.cpp
+servnotf.cpp
+servrbf.cpp
+servslkf.cpp
+sharedobject.cpp
+simpleformatter.cpp
+static_unicode_sets.cpp
+stringpiece.cpp
+stringtriebuilder.cpp
+uarrsort.cpp
+ubidi.cpp
+ubidi_props.cpp
+ubidiln.cpp
+ubiditransform.cpp
+ubidiwrt.cpp
+ubrk.cpp
+ucase.cpp
+ucasemap.cpp
+ucasemap_titlecase_brkiter.cpp
+ucat.cpp
+uchar.cpp
+ucharstrie.cpp
+ucharstriebuilder.cpp
+ucharstrieiterator.cpp
+uchriter.cpp
+ucln_cmn.cpp
+ucmndata.cpp
+ucnv.cpp
+ucnv2022.cpp
+ucnv_bld.cpp
+ucnv_cb.cpp
+ucnv_cnv.cpp
+ucnv_ct.cpp
+ucnv_err.cpp
+ucnv_ext.cpp
+ucnv_io.cpp
+ucnv_lmb.cpp
+ucnv_set.cpp
+ucnv_u16.cpp
+ucnv_u32.cpp
+ucnv_u7.cpp
+ucnv_u8.cpp
+ucnvbocu.cpp
+ucnvdisp.cpp
+ucnvhz.cpp
+ucnvisci.cpp
+ucnvlat1.cpp
+ucnvmbcs.cpp
+ucnvscsu.cpp
+ucnvsel.cpp
+ucol_swp.cpp
+ucptrie.cpp
+ucurr.cpp
+udata.cpp
+udatamem.cpp
+udataswp.cpp
+uenum.cpp
+uhash.cpp
+uhash_us.cpp
+uidna.cpp
+uinit.cpp
+uinvchar.cpp
+uiter.cpp
+ulist.cpp
+uloc.cpp
+uloc_keytype.cpp
+uloc_tag.cpp
+umapfile.cpp
+umath.cpp
+umutablecptrie.cpp
+umutex.cpp
+unames.cpp
+unifiedcache.cpp
+unifilt.cpp
+unifunct.cpp
+uniset.cpp
+uniset_closure.cpp
+uniset_props.cpp
+unisetspan.cpp
+unistr.cpp
+unistr_case.cpp
+unistr_case_locale.cpp
+unistr_cnv.cpp
+unistr_props.cpp
+unistr_titlecase_brkiter.cpp
+unorm.cpp
+unormcmp.cpp
+uobject.cpp
+uprops.cpp
+ures_cnv.cpp
+uresbund.cpp
+uresdata.cpp
+usc_impl.cpp
+uscript.cpp
+uscript_props.cpp
+uset.cpp
+uset_props.cpp
+usetiter.cpp
+ushape.cpp
+usprep.cpp
+ustack.cpp
+ustr_cnv.cpp
+ustr_titlecase_brkiter.cpp
+ustr_wcs.cpp
+ustrcase.cpp
+ustrcase_locale.cpp
+ustrenum.cpp
+ustrfmt.cpp
+ustring.cpp
+ustrtrns.cpp
+utext.cpp
+utf_impl.cpp
+util.cpp
+util_props.cpp
+utrace.cpp
+utrie.cpp
+utrie2.cpp
+utrie2_builder.cpp
+utrie_swap.cpp
+uts46.cpp
+utypes.cpp
+uvector.cpp
+uvectr32.cpp
+uvectr64.cpp
+wintz.cpp
diff --git a/icu4c/source/common/uassert.h b/icu4c/source/common/uassert.h
index 15cd55c..afd31ee 100644
--- a/icu4c/source/common/uassert.h
+++ b/icu4c/source/common/uassert.h
@@ -32,7 +32,7 @@
 #   include <assert.h>
 #   define U_ASSERT(exp) assert(exp)
 #elif U_CPLUSPLUS_VERSION
-#   define U_ASSERT(exp) void()
+#   define U_ASSERT(exp) (void)0
 #else
 #   define U_ASSERT(exp)
 #endif
diff --git a/icu4c/source/common/ubidi_props.cpp b/icu4c/source/common/ubidi_props.cpp
index 4141c21..afcc4aa 100644
--- a/icu4c/source/common/ubidi_props.cpp
+++ b/icu4c/source/common/ubidi_props.cpp
@@ -248,7 +248,7 @@
     return ubidi_getMirror(c);
 }
 
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_getBidiPairedBracket(UChar32 c) {
     return ubidi_getPairedBracket(c);
 }
diff --git a/icu4c/source/common/ubidiimp.h b/icu4c/source/common/ubidiimp.h
index 9746b2b..e48fc6f 100644
--- a/icu4c/source/common/ubidiimp.h
+++ b/icu4c/source/common/ubidiimp.h
@@ -26,6 +26,14 @@
 
 /* miscellaneous definitions ---------------------------------------------- */
 
+// ICU-20853=ICU-20935 Solaris #defines CS and ES in sys/regset.h
+#ifdef CS
+#   undef CS
+#endif
+#ifdef ES
+#   undef ES
+#endif
+
 typedef uint8_t DirProp;
 typedef uint32_t Flags;
 
@@ -451,26 +459,26 @@
 /* additional macros used by ubidi_open() - always allow allocation */
 #define getInitialDirPropsMemory(pBiDi, length) \
         ubidi_getMemory((BidiMemoryForAllocation *)&(pBiDi)->dirPropsMemory, &(pBiDi)->dirPropsSize, \
-                        TRUE, (length))
+                        true, (length))
 
 #define getInitialLevelsMemory(pBiDi, length) \
         ubidi_getMemory((BidiMemoryForAllocation *)&(pBiDi)->levelsMemory, &(pBiDi)->levelsSize, \
-                        TRUE, (length))
+                        true, (length))
 
 #define getInitialOpeningsMemory(pBiDi, length) \
         ubidi_getMemory((BidiMemoryForAllocation *)&(pBiDi)->openingsMemory, &(pBiDi)->openingsSize, \
-                        TRUE, (length)*sizeof(Opening))
+                        true, (length)*sizeof(Opening))
 
 #define getInitialParasMemory(pBiDi, length) \
         ubidi_getMemory((BidiMemoryForAllocation *)&(pBiDi)->parasMemory, &(pBiDi)->parasSize, \
-                        TRUE, (length)*sizeof(Para))
+                        true, (length)*sizeof(Para))
 
 #define getInitialRunsMemory(pBiDi, length) \
         ubidi_getMemory((BidiMemoryForAllocation *)&(pBiDi)->runsMemory, &(pBiDi)->runsSize, \
-                        TRUE, (length)*sizeof(Run))
+                        true, (length)*sizeof(Run))
 
 #define getInitialIsolatesMemory(pBiDi, length) \
         ubidi_getMemory((BidiMemoryForAllocation *)&(pBiDi)->isolatesMemory, &(pBiDi)->isolatesSize, \
-                        TRUE, (length)*sizeof(Isolate))
+                        true, (length)*sizeof(Isolate))
 
 #endif
diff --git a/icu4c/source/common/ubiditransform.cpp b/icu4c/source/common/ubiditransform.cpp
index 5b0d5cf..d56bf15 100644
--- a/icu4c/source/common/ubiditransform.cpp
+++ b/icu4c/source/common/ubiditransform.cpp
@@ -89,7 +89,7 @@
     uint32_t                letters;            /* letter option for ArabicShaping */
 };
 
-U_DRAFT UBiDiTransform* U_EXPORT2
+U_CAPI UBiDiTransform* U_EXPORT2
 ubiditransform_open(UErrorCode *pErrorCode)
 {
     UBiDiTransform *pBiDiTransform = NULL;
@@ -102,7 +102,7 @@
     return pBiDiTransform;
 }
 
-U_DRAFT void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubiditransform_close(UBiDiTransform *pBiDiTransform)
 {
     if (pBiDiTransform != NULL) {
@@ -434,7 +434,7 @@
     return NULL;
 }
 
-U_DRAFT uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 ubiditransform_transform(UBiDiTransform *pBiDiTransform,
             const UChar *src, int32_t srcLength,
             UChar *dest, int32_t destSize,
diff --git a/icu4c/source/common/ucase.cpp b/icu4c/source/common/ucase.cpp
index 4ec25a2..2b142f5 100644
--- a/icu4c/source/common/ucase.cpp
+++ b/icu4c/source/common/ucase.cpp
@@ -707,6 +707,7 @@
 #define is_r(c) ((c)=='r' || (c)=='R')
 #define is_t(c) ((c)=='t' || (c)=='T')
 #define is_u(c) ((c)=='u' || (c)=='U')
+#define is_y(c) ((c)=='y' || (c)=='Y')
 #define is_z(c) ((c)=='z' || (c)=='Z')
 
 /* separator? */
@@ -804,6 +805,18 @@
                     return UCASE_LOC_DUTCH;
                 }
             }
+        } else if(c=='h') {
+            /* hy or hye? *not* hyw */
+            c=*locale++;
+            if(is_y(c)) {
+                c=*locale++;
+                if(is_e(c)) {
+                    c=*locale;
+                }
+                if(is_sep(c)) {
+                    return UCASE_LOC_ARMENIAN;
+                }
+            }
         }
     } else {
         // uppercase c
@@ -868,6 +881,18 @@
                     return UCASE_LOC_DUTCH;
                 }
             }
+        } else if(c=='H') {
+            /* hy or hye? *not* hyw */
+            c=*locale++;
+            if(is_y(c)) {
+                c=*locale++;
+                if(is_e(c)) {
+                    c=*locale;
+                }
+                if(is_sep(c)) {
+                    return UCASE_LOC_ARMENIAN;
+                }
+            }
         }
     }
     return UCASE_LOC_ROOT;
@@ -1229,6 +1254,17 @@
                  */
                 *pString=nullptr;
                 return 0; /* remove the dot (continue without output) */
+            } else if(c==0x0587) {
+                // See ICU-13416:
+                // և ligature ech-yiwn
+                // uppercases to ԵՒ=ech+yiwn by default and in Western Armenian,
+                // but to ԵՎ=ech+vew in Eastern Armenian.
+                if(loc==UCASE_LOC_ARMENIAN) {
+                    *pString=upperNotTitle ? u"ԵՎ" : u"Եվ";
+                } else {
+                    *pString=upperNotTitle ? u"ԵՒ" : u"Եւ";
+                }
+                return 2;
             } else {
                 /* no known conditional special case mapping, use a normal mapping */
             }
diff --git a/icu4c/source/common/ucase.h b/icu4c/source/common/ucase.h
index b0a453b..a018f82 100644
--- a/icu4c/source/common/ucase.h
+++ b/icu4c/source/common/ucase.h
@@ -56,7 +56,8 @@
     UCASE_LOC_TURKISH,
     UCASE_LOC_LITHUANIAN,
     UCASE_LOC_GREEK,
-    UCASE_LOC_DUTCH
+    UCASE_LOC_DUTCH,
+    UCASE_LOC_ARMENIAN
 };
 
 /**
@@ -117,7 +118,7 @@
  * the string itself is added as well as part of its code points' closure.
  * It must be length>=0.
  *
- * @return TRUE if the string was found
+ * @return true if the string was found
  */
 U_CFUNC UBool U_EXPORT2
 ucase_addStringCaseClosure(const UChar *s, int32_t length, const USetAdder *sa);
diff --git a/icu4c/source/common/ucase_props_data.h b/icu4c/source/common/ucase_props_data.h
index 7c97230..aead6d5 100644
--- a/icu4c/source/common/ucase_props_data.h
+++ b/icu4c/source/common/ucase_props_data.h
@@ -13,7 +13,7 @@
 
 static const UVersionInfo ucase_props_dataVersion={0xd,0,0,0};
 
-static const int32_t ucase_props_indexes[UCASE_IX_TOP]={0x10,0x70ca,0x6098,0x687,0x172,0,0,0,0,0,0,0,0,0,0,3};
+static const int32_t ucase_props_indexes[UCASE_IX_TOP]={0x10,0x70c2,0x6098,0x683,0x172,0,0,0,0,0,0,0,0,0,0,3};
 
 static const uint16_t ucase_props_trieIndex[12356]={
 0x336,0x33e,0x346,0x34e,0x35c,0x364,0x36c,0x374,0x37c,0x384,0x38b,0x393,0x39b,0x3a3,0x3ab,0x3b3,
@@ -411,18 +411,18 @@
 0,0,0,0,0,4,4,4,4,0,0,0,0,0,0,0,
 0,0,0,0,0,0,4,0,0,4,4,0,0,0,0,0,
 0,0x64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,4,0,0,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,
-0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,
-0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0,0x179a,0,0,0,0,0,0x179a,0,0,
-0x17b9,0x17e9,0x1819,0x1849,0x1879,0x18a9,0x18d9,0x1909,0x1939,0x1969,0x1999,0x19c9,0x19f9,0x1a29,0x1a59,0x1a89,
-0x1ab9,0x1ae9,0x1b19,0x1b49,0x1b79,0x1ba9,0x1bd9,0x1c09,0x1c39,0x1c69,0x1c99,0x1cc9,0x1cf9,0x1d29,0x1d59,0x1d89,
-0x1db9,0x1de9,0x1e19,0x1e49,0x1e79,0x1ea9,0x1ed9,0x1f09,0x1f39,0x1f69,0x1f99,0,4,0x1fc9,0x1ff9,0x2029,
+0,4,0,0,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,
+0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,
+0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0,0x175a,0,0,0,0,0,0x175a,0,0,
+0x1779,0x17a9,0x17d9,0x1809,0x1839,0x1869,0x1899,0x18c9,0x18f9,0x1929,0x1959,0x1989,0x19b9,0x19e9,0x1a19,0x1a49,
+0x1a79,0x1aa9,0x1ad9,0x1b09,0x1b39,0x1b69,0x1b99,0x1bc9,0x1bf9,0x1c29,0x1c59,0x1c89,0x1cb9,0x1ce9,0x1d19,0x1d49,
+0x1d79,0x1da9,0x1dd9,0x1e09,0x1e39,0x1e69,0x1e99,0x1ec9,0x1ef9,0x1f29,0x1f59,0,4,0x1f89,0x1fb9,0x1fe9,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0x44,0x44,0x44,
-0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,
-0x207a,0x207a,0x207a,0x207a,0x207a,0x207a,0,0,0x2099,0x20c9,0x20f9,0x2129,0x2159,0x2189,0,0,
-0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,
-0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,
+0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,
+0x203a,0x203a,0x203a,0x203a,0x203a,0x203a,0,0,0x2059,0x2089,0x20b9,0x20e9,0x2119,0x2149,0,0,
+0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,
+0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,4,4,0x64,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,4,
@@ -458,9 +458,9 @@
 0,0,0,0,4,4,4,4,4,4,4,4,0,0,4,0x64,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,4,4,4,4,4,4,0,0,
-0x21b9,0x21e9,0x2219,0x2249,0x2279,0x22c9,0x2319,0x2349,0x2379,0,0,0,0,0,0,0,
-0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,
-0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0,0,0x23aa,0x23aa,0x23aa,
+0x2179,0x21a9,0x21d9,0x2209,0x2239,0x2289,0x22d9,0x2309,0x2339,0,0,0,0,0,0,0,
+0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,
+0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0,0,0x236a,0x236a,0x236a,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0x44,0x44,0x44,0,0x64,0x64,0x64,0x64,0x64,0x64,0x44,0x44,0x64,0x64,0x64,0x64,
 0x44,0,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0,0,0,0,0x64,0,0,
@@ -470,10 +470,10 @@
 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
 5,5,0x25,5,5,5,5,5,5,5,5,1,1,1,1,1,
-1,1,1,1,1,1,1,1,5,0x23c9,1,1,1,0x23e9,1,1,
+1,1,1,1,1,1,1,1,5,0x2389,1,1,1,0x23a9,1,1,
 5,5,5,5,0x25,5,5,5,0x25,5,5,5,5,5,5,5,
 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x2409,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x23c9,1,
 1,1,1,1,1,1,0x21,1,1,1,1,5,5,5,5,5,
 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
 0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x64,0x64,0x64,0,0x44,0x64,0x64,0x44,0x64,
@@ -481,27 +481,27 @@
 0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xffb1,0x92,0xff91,
 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
-0x242a,0x2469,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
+0x23ea,0x2429,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
-0x92,0xff91,0x24a9,0x2529,0x25a9,0x2629,0x26a9,0x2729,1,1,0x275a,1,0x92,0xff91,0x92,0xff91,
+0x92,0xff91,0x2469,0x24e9,0x2569,0x25e9,0x2669,0x26e9,1,1,0x271a,1,0x92,0xff91,0x92,0xff91,
 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xffb1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x411,0x411,0x411,0x411,
 0x411,0x411,0x411,0x411,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0x411,0x411,0x411,0x411,
 0x411,0x411,0,0,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0,0,0x411,0x411,0x411,0x411,
 0x411,0x411,0x411,0x411,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0x411,0x411,0x411,0x411,
 0x411,0x411,0x411,0x411,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0x411,0x411,0x411,0x411,
-0x411,0x411,0,0,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0,0,0x27a9,0x411,0x2829,0x411,
-0x28d9,0x411,0x2989,0x411,0,0xfc12,0,0xfc12,0,0xfc12,0,0xfc12,0x411,0x411,0x411,0x411,
+0x411,0x411,0,0,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0,0,0x2769,0x411,0x27e9,0x411,
+0x2899,0x411,0x2949,0x411,0,0xfc12,0,0xfc12,0,0xfc12,0,0xfc12,0x411,0x411,0x411,0x411,
 0x411,0x411,0x411,0x411,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0x2511,0x2511,0x2b11,0x2b11,
-0x2b11,0x2b11,0x3211,0x3211,0x4011,0x4011,0x3811,0x3811,0x3f11,0x3f11,0,0,0x2a39,0x2aa9,0x2b19,0x2b89,
-0x2bf9,0x2c69,0x2cd9,0x2d49,0x2dbb,0x2e2b,0x2e9b,0x2f0b,0x2f7b,0x2feb,0x305b,0x30cb,0x3139,0x31a9,0x3219,0x3289,
-0x32f9,0x3369,0x33d9,0x3449,0x34bb,0x352b,0x359b,0x360b,0x367b,0x36eb,0x375b,0x37cb,0x3839,0x38a9,0x3919,0x3989,
-0x39f9,0x3a69,0x3ad9,0x3b49,0x3bbb,0x3c2b,0x3c9b,0x3d0b,0x3d7b,0x3deb,0x3e5b,0x3ecb,0x411,0x411,0x3f39,0x3fb9,
-0x4029,0,0x40a9,0x4129,0xfc12,0xfc12,0xdb12,0xdb12,0x41db,4,0x4249,4,4,4,0x4299,0x4319,
-0x4389,0,0x4409,0x4489,0xd512,0xd512,0xd512,0xd512,0x453b,4,4,4,0x411,0x411,0x45a9,0x4659,
-0,0,0x4729,0x47a9,0xfc12,0xfc12,0xce12,0xce12,0,4,4,4,0x411,0x411,0x4859,0x4909,
-0x49d9,0x391,0x4a59,0x4ad9,0xfc12,0xfc12,0xc812,0xc812,0xfc92,4,4,4,0,0,0x4b89,0x4c09,
-0x4c79,0,0x4cf9,0x4d79,0xc012,0xc012,0xc112,0xc112,0x4e2b,4,4,0,0,0,0,0,
+0x2b11,0x2b11,0x3211,0x3211,0x4011,0x4011,0x3811,0x3811,0x3f11,0x3f11,0,0,0x29f9,0x2a69,0x2ad9,0x2b49,
+0x2bb9,0x2c29,0x2c99,0x2d09,0x2d7b,0x2deb,0x2e5b,0x2ecb,0x2f3b,0x2fab,0x301b,0x308b,0x30f9,0x3169,0x31d9,0x3249,
+0x32b9,0x3329,0x3399,0x3409,0x347b,0x34eb,0x355b,0x35cb,0x363b,0x36ab,0x371b,0x378b,0x37f9,0x3869,0x38d9,0x3949,
+0x39b9,0x3a29,0x3a99,0x3b09,0x3b7b,0x3beb,0x3c5b,0x3ccb,0x3d3b,0x3dab,0x3e1b,0x3e8b,0x411,0x411,0x3ef9,0x3f79,
+0x3fe9,0,0x4069,0x40e9,0xfc12,0xfc12,0xdb12,0xdb12,0x419b,4,0x4209,4,4,4,0x4259,0x42d9,
+0x4349,0,0x43c9,0x4449,0xd512,0xd512,0xd512,0xd512,0x44fb,4,4,4,0x411,0x411,0x4569,0x4619,
+0,0,0x46e9,0x4769,0xfc12,0xfc12,0xce12,0xce12,0,4,4,4,0x411,0x411,0x4819,0x48c9,
+0x4999,0x391,0x4a19,0x4a99,0xfc12,0xfc12,0xc812,0xc812,0xfc92,4,4,4,0,0,0x4b49,0x4bc9,
+0x4c39,0,0x4cb9,0x4d39,0xc012,0xc012,0xc112,0xc112,0x4deb,4,4,0,0,0,0,0,
 0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,
 0,0,0,0,4,4,0,0,0,0,0,0,4,0,0,4,
 0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,
@@ -515,8 +515,8 @@
 0x64,0x44,0x64,0x64,0x64,0x64,0x64,0x64,0x44,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,
 0,0,1,2,2,2,1,1,2,2,2,1,0,2,0,0,
-0,2,2,2,2,2,0,0,0,0,0,0,2,0,0x4e9a,0,
-2,0,0x4eda,0x4f1a,2,2,0,1,2,2,0xe12,2,1,0,0,0,
+0,2,2,2,2,2,0,0,0,0,0,0,2,0,0x4e5a,0,
+2,0,0x4e9a,0x4eda,2,2,0,1,2,2,0xe12,2,1,0,0,0,
 0,1,0,0,1,1,2,2,0,0,0,0,0,2,1,1,
 0x21,0x21,0,0,0,0,0xf211,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0x812,0x812,0x812,0x812,0x812,0x812,0x812,0x812,
@@ -531,14 +531,14 @@
 0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,
 0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,
 0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,
-0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0,0x92,0xff91,0x4f5a,0x4f7a,0x4f9a,0x4fb9,0x4fd9,0x92,
-0xff91,0x92,0xff91,0x92,0xff91,0x4ffa,0x501a,0x503a,0x505a,1,0x92,0xff91,1,0x92,0xff91,1,
-1,1,1,1,0x25,5,0x507a,0x507a,0x92,0xff91,0x92,0xff91,1,0,0,0,
+0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0,0x92,0xff91,0x4f1a,0x4f3a,0x4f5a,0x4f79,0x4f99,0x92,
+0xff91,0x92,0xff91,0x92,0xff91,0x4fba,0x4fda,0x4ffa,0x501a,1,0x92,0xff91,1,0x92,0xff91,1,
+1,1,1,1,0x25,5,0x503a,0x503a,0x92,0xff91,0x92,0xff91,1,0,0,0,
 0,0,0,0x92,0xff91,0x92,0xff91,0x44,0x44,0x44,0x92,0xff91,0,0,0,0,
-0,0,0,0,0,0,0,0,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,
-0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,
-0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0,0x5099,0,0,0,0,
-0,0x5099,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,
+0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,
+0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0,0x5059,0,0,0,0,
+0,0x5059,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
@@ -552,7 +552,7 @@
 0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0x92,0xff91,0x92,0xff91,
-0x92,0xff91,0x92,0xff91,0x92,0xff91,0x50ba,0x50f9,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
+0x92,0xff91,0x92,0xff91,0x92,0xff91,0x507a,0x50b9,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0,0x44,
 4,4,4,0,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0,4,
 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
@@ -564,11 +564,11 @@
 4,4,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
 1,1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
 0x92,0xff91,0x92,0xff91,5,1,1,1,1,1,1,1,1,0x92,0xff91,0x92,
-0xff91,0x513a,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,4,4,4,0x92,
-0xff91,0x515a,1,0,0x92,0xff91,0x92,0xff91,0x1811,1,0x92,0xff91,0x92,0xff91,0x92,0xff91,
-0x92,0xff91,0x92,0xff91,0x92,0xff91,0x517a,0x519a,0x51ba,0x51da,0x517a,1,0x51fa,0x521a,0x523a,0x525a,
+0xff91,0x50fa,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,4,4,4,0x92,
+0xff91,0x511a,1,0,0x92,0xff91,0x92,0xff91,0x1811,1,0x92,0xff91,0x92,0xff91,0x92,0xff91,
+0x92,0xff91,0x92,0xff91,0x92,0xff91,0x513a,0x515a,0x517a,0x519a,0x513a,1,0x51ba,0x51da,0x51fa,0x521a,
 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0,0,0x92,0xff91,
-0xe812,0x527a,0x529a,0x92,0xff91,0x92,0xff91,0,0,0,0,0,0,0,0,0,
+0xe812,0x523a,0x525a,0x92,0xff91,0x92,0xff91,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0x92,0xff91,0,
 5,5,1,0,0,0,0,0,0,0,4,0,0,0,0x64,0,
 0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -597,17 +597,17 @@
 0,0,0,0,4,4,0,0,0,0,0,4,4,0,0x64,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,0x52b9,1,1,1,1,1,1,1,4,5,5,5,5,
+1,1,1,0x5279,1,1,1,1,1,1,1,4,5,5,5,5,
 1,1,1,1,1,1,1,1,1,4,4,4,0,0,0,0,
-0x52d9,0x5309,0x5339,0x5369,0x5399,0x53c9,0x53f9,0x5429,0x5459,0x5489,0x54b9,0x54e9,0x5519,0x5549,0x5579,0x55a9,
-0x5bd9,0x5c09,0x5c39,0x5c69,0x5c99,0x5cc9,0x5cf9,0x5d29,0x5d59,0x5d89,0x5db9,0x5de9,0x5e19,0x5e49,0x5e79,0x5ea9,
-0x5ed9,0x5f09,0x5f39,0x5f69,0x5f99,0x5fc9,0x5ff9,0x6029,0x6059,0x6089,0x60b9,0x60e9,0x6119,0x6149,0x6179,0x61a9,
-0x55d9,0x5609,0x5639,0x5669,0x5699,0x56c9,0x56f9,0x5729,0x5759,0x5789,0x57b9,0x57e9,0x5819,0x5849,0x5879,0x58a9,
-0x58d9,0x5909,0x5939,0x5969,0x5999,0x59c9,0x59f9,0x5a29,0x5a59,0x5a89,0x5ab9,0x5ae9,0x5b19,0x5b49,0x5b79,0x5ba9,
+0x5299,0x52c9,0x52f9,0x5329,0x5359,0x5389,0x53b9,0x53e9,0x5419,0x5449,0x5479,0x54a9,0x54d9,0x5509,0x5539,0x5569,
+0x5b99,0x5bc9,0x5bf9,0x5c29,0x5c59,0x5c89,0x5cb9,0x5ce9,0x5d19,0x5d49,0x5d79,0x5da9,0x5dd9,0x5e09,0x5e39,0x5e69,
+0x5e99,0x5ec9,0x5ef9,0x5f29,0x5f59,0x5f89,0x5fb9,0x5fe9,0x6019,0x6049,0x6079,0x60a9,0x60d9,0x6109,0x6139,0x6169,
+0x5599,0x55c9,0x55f9,0x5629,0x5659,0x5689,0x56b9,0x56e9,0x5719,0x5749,0x5779,0x57a9,0x57d9,0x5809,0x5839,0x5869,
+0x5899,0x58c9,0x58f9,0x5929,0x5959,0x5989,0x59b9,0x59e9,0x5a19,0x5a49,0x5a79,0x5aa9,0x5ad9,0x5b09,0x5b39,0x5b69,
 0,0,0,0,0,4,0,0,4,0,0,0,0,0x64,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0x61d9,0x6259,0x62d9,0x6359,0x6409,0x64b9,0x6559,0,0,0,0,0,0,0,0,0,
-0,0,0,0x65f9,0x6679,0x66f9,0x6779,0x67f9,0,0,0,0,0,0,0x64,0,
+0x6199,0x6219,0x6299,0x6319,0x63c9,0x6479,0x6519,0,0,0,0,0,0,0,0,0,
+0,0,0,0x65b9,0x6639,0x66b9,0x6739,0x67b9,0,0,0,0,0,0,0x64,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
 4,4,4,4,0,0,0,4,0,0,0,0,0,0,0,0,
@@ -791,7 +791,7 @@
 0,0,0,0
 };
 
-static const uint16_t ucase_props_exceptions[1671]={
+static const uint16_t ucase_props_exceptions[1667]={
 0xc850,0x20,2,0x130,0x131,0x4810,0x20,0x841,0x6b,1,0x212a,0x841,0x73,1,0x17f,0x5c50,
 0x20,2,0x130,0x131,0x844,0x4b,1,0x212a,0x844,0x53,1,0x17f,0x806,0x3bc,0x39c,0x841,
 0xe5,1,0x212b,0x8c0,1,0x2220,0x73,0x73,0x53,0x53,0x53,0x73,0x1e9e,0x844,0xc5,1,
@@ -815,88 +815,88 @@
 0x43e,1,0x1c82,0x841,0x441,1,0x1c83,0x841,0x442,2,0x1c84,0x1c85,0x841,0x44a,1,0x1c86,
 0x844,0x412,1,0x1c80,0x844,0x414,1,0x1c81,0x844,0x41e,1,0x1c82,0x844,0x421,1,0x1c83,
 0x844,0x422,2,0x1c84,0x1c85,0x844,0x42a,1,0x1c86,0x841,0x463,1,0x1c87,0x844,0x462,1,
-0x1c87,0x880,0x2220,0x565,0x582,0x535,0x552,0x535,0x582,0x810,0x1c60,0x80c,0x1c90,0x10d0,0x80c,0x1c91,
-0x10d1,0x80c,0x1c92,0x10d2,0x80c,0x1c93,0x10d3,0x80c,0x1c94,0x10d4,0x80c,0x1c95,0x10d5,0x80c,0x1c96,0x10d6,
-0x80c,0x1c97,0x10d7,0x80c,0x1c98,0x10d8,0x80c,0x1c99,0x10d9,0x80c,0x1c9a,0x10da,0x80c,0x1c9b,0x10db,0x80c,
-0x1c9c,0x10dc,0x80c,0x1c9d,0x10dd,0x80c,0x1c9e,0x10de,0x80c,0x1c9f,0x10df,0x80c,0x1ca0,0x10e0,0x80c,0x1ca1,
-0x10e1,0x80c,0x1ca2,0x10e2,0x80c,0x1ca3,0x10e3,0x80c,0x1ca4,0x10e4,0x80c,0x1ca5,0x10e5,0x80c,0x1ca6,0x10e6,
-0x80c,0x1ca7,0x10e7,0x80c,0x1ca8,0x10e8,0x80c,0x1ca9,0x10e9,0x80c,0x1caa,0x10ea,0x80c,0x1cab,0x10eb,0x80c,
-0x1cac,0x10ec,0x80c,0x1cad,0x10ed,0x80c,0x1cae,0x10ee,0x80c,0x1caf,0x10ef,0x80c,0x1cb0,0x10f0,0x80c,0x1cb1,
-0x10f1,0x80c,0x1cb2,0x10f2,0x80c,0x1cb3,0x10f3,0x80c,0x1cb4,0x10f4,0x80c,0x1cb5,0x10f5,0x80c,0x1cb6,0x10f6,
-0x80c,0x1cb7,0x10f7,0x80c,0x1cb8,0x10f8,0x80c,0x1cb9,0x10f9,0x80c,0x1cba,0x10fa,0x80c,0x1cbd,0x10fd,0x80c,
-0x1cbe,0x10fe,0x80c,0x1cbf,0x10ff,0xa10,0x97d0,0xa10,8,0x806,0x13f0,0x13f0,0x806,0x13f1,0x13f1,0x806,
-0x13f2,0x13f2,0x806,0x13f3,0x13f3,0x806,0x13f4,0x13f4,0x806,0x13f5,0x13f5,0x806,0x432,0x412,0x806,0x434,
-0x414,0x806,0x43e,0x41e,0x806,0x441,0x421,0x846,0x442,0x422,1,0x1c85,0x846,0x442,0x422,1,
-0x1c84,0x806,0x44a,0x42a,0x806,0x463,0x462,0x806,0xa64b,0xa64a,0xc10,0xbc0,0x810,0x8a04,0x810,0xee6,
-0x810,0x8a38,0x841,0x1e61,1,0x1e9b,0x844,0x1e60,1,0x1e9b,0x880,0x2220,0x68,0x331,0x48,0x331,
-0x48,0x331,0x880,0x2220,0x74,0x308,0x54,0x308,0x54,0x308,0x880,0x2220,0x77,0x30a,0x57,0x30a,
-0x57,0x30a,0x880,0x2220,0x79,0x30a,0x59,0x30a,0x59,0x30a,0x880,0x2220,0x61,0x2be,0x41,0x2be,
-0x41,0x2be,0x806,0x1e61,0x1e60,0xc90,0x1dbf,0x20,0x73,0x73,0x880,0x2220,0x3c5,0x313,0x3a5,0x313,
-0x3a5,0x313,0x880,0x3330,0x3c5,0x313,0x300,0x3a5,0x313,0x300,0x3a5,0x313,0x300,0x880,0x3330,0x3c5,
-0x313,0x301,0x3a5,0x313,0x301,0x3a5,0x313,0x301,0x880,0x3330,0x3c5,0x313,0x342,0x3a5,0x313,0x342,
-0x3a5,0x313,0x342,0x890,8,0x220,0x1f00,0x3b9,0x1f08,0x399,0x890,8,0x220,0x1f01,0x3b9,0x1f09,
-0x399,0x890,8,0x220,0x1f02,0x3b9,0x1f0a,0x399,0x890,8,0x220,0x1f03,0x3b9,0x1f0b,0x399,0x890,
-8,0x220,0x1f04,0x3b9,0x1f0c,0x399,0x890,8,0x220,0x1f05,0x3b9,0x1f0d,0x399,0x890,8,0x220,
-0x1f06,0x3b9,0x1f0e,0x399,0x890,8,0x220,0x1f07,0x3b9,0x1f0f,0x399,0xc90,8,0x220,0x1f00,0x3b9,
-0x1f08,0x399,0xc90,8,0x220,0x1f01,0x3b9,0x1f09,0x399,0xc90,8,0x220,0x1f02,0x3b9,0x1f0a,0x399,
-0xc90,8,0x220,0x1f03,0x3b9,0x1f0b,0x399,0xc90,8,0x220,0x1f04,0x3b9,0x1f0c,0x399,0xc90,8,
-0x220,0x1f05,0x3b9,0x1f0d,0x399,0xc90,8,0x220,0x1f06,0x3b9,0x1f0e,0x399,0xc90,8,0x220,0x1f07,
-0x3b9,0x1f0f,0x399,0x890,8,0x220,0x1f20,0x3b9,0x1f28,0x399,0x890,8,0x220,0x1f21,0x3b9,0x1f29,
-0x399,0x890,8,0x220,0x1f22,0x3b9,0x1f2a,0x399,0x890,8,0x220,0x1f23,0x3b9,0x1f2b,0x399,0x890,
-8,0x220,0x1f24,0x3b9,0x1f2c,0x399,0x890,8,0x220,0x1f25,0x3b9,0x1f2d,0x399,0x890,8,0x220,
-0x1f26,0x3b9,0x1f2e,0x399,0x890,8,0x220,0x1f27,0x3b9,0x1f2f,0x399,0xc90,8,0x220,0x1f20,0x3b9,
-0x1f28,0x399,0xc90,8,0x220,0x1f21,0x3b9,0x1f29,0x399,0xc90,8,0x220,0x1f22,0x3b9,0x1f2a,0x399,
-0xc90,8,0x220,0x1f23,0x3b9,0x1f2b,0x399,0xc90,8,0x220,0x1f24,0x3b9,0x1f2c,0x399,0xc90,8,
-0x220,0x1f25,0x3b9,0x1f2d,0x399,0xc90,8,0x220,0x1f26,0x3b9,0x1f2e,0x399,0xc90,8,0x220,0x1f27,
-0x3b9,0x1f2f,0x399,0x890,8,0x220,0x1f60,0x3b9,0x1f68,0x399,0x890,8,0x220,0x1f61,0x3b9,0x1f69,
-0x399,0x890,8,0x220,0x1f62,0x3b9,0x1f6a,0x399,0x890,8,0x220,0x1f63,0x3b9,0x1f6b,0x399,0x890,
-8,0x220,0x1f64,0x3b9,0x1f6c,0x399,0x890,8,0x220,0x1f65,0x3b9,0x1f6d,0x399,0x890,8,0x220,
-0x1f66,0x3b9,0x1f6e,0x399,0x890,8,0x220,0x1f67,0x3b9,0x1f6f,0x399,0xc90,8,0x220,0x1f60,0x3b9,
-0x1f68,0x399,0xc90,8,0x220,0x1f61,0x3b9,0x1f69,0x399,0xc90,8,0x220,0x1f62,0x3b9,0x1f6a,0x399,
-0xc90,8,0x220,0x1f63,0x3b9,0x1f6b,0x399,0xc90,8,0x220,0x1f64,0x3b9,0x1f6c,0x399,0xc90,8,
-0x220,0x1f65,0x3b9,0x1f6d,0x399,0xc90,8,0x220,0x1f66,0x3b9,0x1f6e,0x399,0xc90,8,0x220,0x1f67,
-0x3b9,0x1f6f,0x399,0x880,0x2220,0x1f70,0x3b9,0x1fba,0x399,0x1fba,0x345,0x890,9,0x220,0x3b1,0x3b9,
-0x391,0x399,0x880,0x2220,0x3ac,0x3b9,0x386,0x399,0x386,0x345,0x880,0x2220,0x3b1,0x342,0x391,0x342,
-0x391,0x342,0x880,0x3330,0x3b1,0x342,0x3b9,0x391,0x342,0x399,0x391,0x342,0x345,0xc90,9,0x220,
-0x3b1,0x3b9,0x391,0x399,0x846,0x3b9,0x399,1,0x345,0x880,0x2220,0x1f74,0x3b9,0x1fca,0x399,0x1fca,
-0x345,0x890,9,0x220,0x3b7,0x3b9,0x397,0x399,0x880,0x2220,0x3ae,0x3b9,0x389,0x399,0x389,0x345,
-0x880,0x2220,0x3b7,0x342,0x397,0x342,0x397,0x342,0x880,0x3330,0x3b7,0x342,0x3b9,0x397,0x342,0x399,
-0x397,0x342,0x345,0xc90,9,0x220,0x3b7,0x3b9,0x397,0x399,0x880,0x3330,0x3b9,0x308,0x300,0x399,
-0x308,0x300,0x399,0x308,0x300,0x8c0,1,0x3330,0x3b9,0x308,0x301,0x399,0x308,0x301,0x399,0x308,
-0x301,0x390,0x880,0x2220,0x3b9,0x342,0x399,0x342,0x399,0x342,0x880,0x3330,0x3b9,0x308,0x342,0x399,
-0x308,0x342,0x399,0x308,0x342,0x880,0x3330,0x3c5,0x308,0x300,0x3a5,0x308,0x300,0x3a5,0x308,0x300,
-0x8c0,1,0x3330,0x3c5,0x308,0x301,0x3a5,0x308,0x301,0x3a5,0x308,0x301,0x3b0,0x880,0x2220,0x3c1,
-0x313,0x3a1,0x313,0x3a1,0x313,0x880,0x2220,0x3c5,0x342,0x3a5,0x342,0x3a5,0x342,0x880,0x3330,0x3c5,
-0x308,0x342,0x3a5,0x308,0x342,0x3a5,0x308,0x342,0x880,0x2220,0x1f7c,0x3b9,0x1ffa,0x399,0x1ffa,0x345,
-0x890,9,0x220,0x3c9,0x3b9,0x3a9,0x399,0x880,0x2220,0x3ce,0x3b9,0x38f,0x399,0x38f,0x345,0x880,
-0x2220,0x3c9,0x342,0x3a9,0x342,0x3a9,0x342,0x880,0x3330,0x3c9,0x342,0x3b9,0x3a9,0x342,0x399,0x3a9,
-0x342,0x345,0xc90,9,0x220,0x3c9,0x3b9,0x3a9,0x399,0xc50,0x1d5d,1,0x3a9,0xc50,0x20bf,1,
-0x4b,0xc50,0x2046,1,0xc5,0xc10,0x29f7,0xc10,0xee6,0xc10,0x29e7,0xc10,0x2a2b,0xc10,0x2a28,0xc10,
-0x2a1c,0xc10,0x29fd,0xc10,0x2a1f,0xc10,0x2a1e,0xc10,0x2a3f,0xc10,0x1c60,0x841,0xa64b,1,0x1c88,0x844,
-0xa64a,1,0x1c88,0xc10,0x8a04,0xc10,0xa528,0xc10,0xa544,0xc10,0xa54f,0xc10,0xa54b,0xc10,0xa541,0xc10,
-0xa512,0xc10,0xa52a,0xc10,0xa515,0x810,0x3a0,0xc10,0xa543,0xc10,0x8a38,0xc10,0x3a0,0x806,0x13a0,0x13a0,
-0x806,0x13a1,0x13a1,0x806,0x13a2,0x13a2,0x806,0x13a3,0x13a3,0x806,0x13a4,0x13a4,0x806,0x13a5,0x13a5,0x806,
-0x13a6,0x13a6,0x806,0x13a7,0x13a7,0x806,0x13a8,0x13a8,0x806,0x13a9,0x13a9,0x806,0x13aa,0x13aa,0x806,0x13ab,
-0x13ab,0x806,0x13ac,0x13ac,0x806,0x13ad,0x13ad,0x806,0x13ae,0x13ae,0x806,0x13af,0x13af,0x806,0x13b0,0x13b0,
-0x806,0x13b1,0x13b1,0x806,0x13b2,0x13b2,0x806,0x13b3,0x13b3,0x806,0x13b4,0x13b4,0x806,0x13b5,0x13b5,0x806,
-0x13b6,0x13b6,0x806,0x13b7,0x13b7,0x806,0x13b8,0x13b8,0x806,0x13b9,0x13b9,0x806,0x13ba,0x13ba,0x806,0x13bb,
-0x13bb,0x806,0x13bc,0x13bc,0x806,0x13bd,0x13bd,0x806,0x13be,0x13be,0x806,0x13bf,0x13bf,0x806,0x13c0,0x13c0,
-0x806,0x13c1,0x13c1,0x806,0x13c2,0x13c2,0x806,0x13c3,0x13c3,0x806,0x13c4,0x13c4,0x806,0x13c5,0x13c5,0x806,
-0x13c6,0x13c6,0x806,0x13c7,0x13c7,0x806,0x13c8,0x13c8,0x806,0x13c9,0x13c9,0x806,0x13ca,0x13ca,0x806,0x13cb,
-0x13cb,0x806,0x13cc,0x13cc,0x806,0x13cd,0x13cd,0x806,0x13ce,0x13ce,0x806,0x13cf,0x13cf,0x806,0x13d0,0x13d0,
-0x806,0x13d1,0x13d1,0x806,0x13d2,0x13d2,0x806,0x13d3,0x13d3,0x806,0x13d4,0x13d4,0x806,0x13d5,0x13d5,0x806,
-0x13d6,0x13d6,0x806,0x13d7,0x13d7,0x806,0x13d8,0x13d8,0x806,0x13d9,0x13d9,0x806,0x13da,0x13da,0x806,0x13db,
-0x13db,0x806,0x13dc,0x13dc,0x806,0x13dd,0x13dd,0x806,0x13de,0x13de,0x806,0x13df,0x13df,0x806,0x13e0,0x13e0,
-0x806,0x13e1,0x13e1,0x806,0x13e2,0x13e2,0x806,0x13e3,0x13e3,0x806,0x13e4,0x13e4,0x806,0x13e5,0x13e5,0x806,
-0x13e6,0x13e6,0x806,0x13e7,0x13e7,0x806,0x13e8,0x13e8,0x806,0x13e9,0x13e9,0x806,0x13ea,0x13ea,0x806,0x13eb,
-0x13eb,0x806,0x13ec,0x13ec,0x806,0x13ed,0x13ed,0x806,0x13ee,0x13ee,0x806,0x13ef,0x13ef,0x880,0x2220,0x66,
-0x66,0x46,0x46,0x46,0x66,0x880,0x2220,0x66,0x69,0x46,0x49,0x46,0x69,0x880,0x2220,0x66,
-0x6c,0x46,0x4c,0x46,0x6c,0x880,0x3330,0x66,0x66,0x69,0x46,0x46,0x49,0x46,0x66,0x69,
-0x880,0x3330,0x66,0x66,0x6c,0x46,0x46,0x4c,0x46,0x66,0x6c,0x8c0,1,0x2220,0x73,0x74,
-0x53,0x54,0x53,0x74,0xfb06,0x8c0,1,0x2220,0x73,0x74,0x53,0x54,0x53,0x74,0xfb05,0x880,
-0x2220,0x574,0x576,0x544,0x546,0x544,0x576,0x880,0x2220,0x574,0x565,0x544,0x535,0x544,0x565,0x880,
-0x2220,0x574,0x56b,0x544,0x53b,0x544,0x56b,0x880,0x2220,0x57e,0x576,0x54e,0x546,0x54e,0x576,0x880,
-0x2220,0x574,0x56d,0x544,0x53d,0x544,0x56d
+0x1c87,0x4880,0x20,0x565,0x582,0x810,0x1c60,0x80c,0x1c90,0x10d0,0x80c,0x1c91,0x10d1,0x80c,0x1c92,0x10d2,
+0x80c,0x1c93,0x10d3,0x80c,0x1c94,0x10d4,0x80c,0x1c95,0x10d5,0x80c,0x1c96,0x10d6,0x80c,0x1c97,0x10d7,0x80c,
+0x1c98,0x10d8,0x80c,0x1c99,0x10d9,0x80c,0x1c9a,0x10da,0x80c,0x1c9b,0x10db,0x80c,0x1c9c,0x10dc,0x80c,0x1c9d,
+0x10dd,0x80c,0x1c9e,0x10de,0x80c,0x1c9f,0x10df,0x80c,0x1ca0,0x10e0,0x80c,0x1ca1,0x10e1,0x80c,0x1ca2,0x10e2,
+0x80c,0x1ca3,0x10e3,0x80c,0x1ca4,0x10e4,0x80c,0x1ca5,0x10e5,0x80c,0x1ca6,0x10e6,0x80c,0x1ca7,0x10e7,0x80c,
+0x1ca8,0x10e8,0x80c,0x1ca9,0x10e9,0x80c,0x1caa,0x10ea,0x80c,0x1cab,0x10eb,0x80c,0x1cac,0x10ec,0x80c,0x1cad,
+0x10ed,0x80c,0x1cae,0x10ee,0x80c,0x1caf,0x10ef,0x80c,0x1cb0,0x10f0,0x80c,0x1cb1,0x10f1,0x80c,0x1cb2,0x10f2,
+0x80c,0x1cb3,0x10f3,0x80c,0x1cb4,0x10f4,0x80c,0x1cb5,0x10f5,0x80c,0x1cb6,0x10f6,0x80c,0x1cb7,0x10f7,0x80c,
+0x1cb8,0x10f8,0x80c,0x1cb9,0x10f9,0x80c,0x1cba,0x10fa,0x80c,0x1cbd,0x10fd,0x80c,0x1cbe,0x10fe,0x80c,0x1cbf,
+0x10ff,0xa10,0x97d0,0xa10,8,0x806,0x13f0,0x13f0,0x806,0x13f1,0x13f1,0x806,0x13f2,0x13f2,0x806,0x13f3,
+0x13f3,0x806,0x13f4,0x13f4,0x806,0x13f5,0x13f5,0x806,0x432,0x412,0x806,0x434,0x414,0x806,0x43e,0x41e,
+0x806,0x441,0x421,0x846,0x442,0x422,1,0x1c85,0x846,0x442,0x422,1,0x1c84,0x806,0x44a,0x42a,
+0x806,0x463,0x462,0x806,0xa64b,0xa64a,0xc10,0xbc0,0x810,0x8a04,0x810,0xee6,0x810,0x8a38,0x841,0x1e61,
+1,0x1e9b,0x844,0x1e60,1,0x1e9b,0x880,0x2220,0x68,0x331,0x48,0x331,0x48,0x331,0x880,0x2220,
+0x74,0x308,0x54,0x308,0x54,0x308,0x880,0x2220,0x77,0x30a,0x57,0x30a,0x57,0x30a,0x880,0x2220,
+0x79,0x30a,0x59,0x30a,0x59,0x30a,0x880,0x2220,0x61,0x2be,0x41,0x2be,0x41,0x2be,0x806,0x1e61,
+0x1e60,0xc90,0x1dbf,0x20,0x73,0x73,0x880,0x2220,0x3c5,0x313,0x3a5,0x313,0x3a5,0x313,0x880,0x3330,
+0x3c5,0x313,0x300,0x3a5,0x313,0x300,0x3a5,0x313,0x300,0x880,0x3330,0x3c5,0x313,0x301,0x3a5,0x313,
+0x301,0x3a5,0x313,0x301,0x880,0x3330,0x3c5,0x313,0x342,0x3a5,0x313,0x342,0x3a5,0x313,0x342,0x890,
+8,0x220,0x1f00,0x3b9,0x1f08,0x399,0x890,8,0x220,0x1f01,0x3b9,0x1f09,0x399,0x890,8,0x220,
+0x1f02,0x3b9,0x1f0a,0x399,0x890,8,0x220,0x1f03,0x3b9,0x1f0b,0x399,0x890,8,0x220,0x1f04,0x3b9,
+0x1f0c,0x399,0x890,8,0x220,0x1f05,0x3b9,0x1f0d,0x399,0x890,8,0x220,0x1f06,0x3b9,0x1f0e,0x399,
+0x890,8,0x220,0x1f07,0x3b9,0x1f0f,0x399,0xc90,8,0x220,0x1f00,0x3b9,0x1f08,0x399,0xc90,8,
+0x220,0x1f01,0x3b9,0x1f09,0x399,0xc90,8,0x220,0x1f02,0x3b9,0x1f0a,0x399,0xc90,8,0x220,0x1f03,
+0x3b9,0x1f0b,0x399,0xc90,8,0x220,0x1f04,0x3b9,0x1f0c,0x399,0xc90,8,0x220,0x1f05,0x3b9,0x1f0d,
+0x399,0xc90,8,0x220,0x1f06,0x3b9,0x1f0e,0x399,0xc90,8,0x220,0x1f07,0x3b9,0x1f0f,0x399,0x890,
+8,0x220,0x1f20,0x3b9,0x1f28,0x399,0x890,8,0x220,0x1f21,0x3b9,0x1f29,0x399,0x890,8,0x220,
+0x1f22,0x3b9,0x1f2a,0x399,0x890,8,0x220,0x1f23,0x3b9,0x1f2b,0x399,0x890,8,0x220,0x1f24,0x3b9,
+0x1f2c,0x399,0x890,8,0x220,0x1f25,0x3b9,0x1f2d,0x399,0x890,8,0x220,0x1f26,0x3b9,0x1f2e,0x399,
+0x890,8,0x220,0x1f27,0x3b9,0x1f2f,0x399,0xc90,8,0x220,0x1f20,0x3b9,0x1f28,0x399,0xc90,8,
+0x220,0x1f21,0x3b9,0x1f29,0x399,0xc90,8,0x220,0x1f22,0x3b9,0x1f2a,0x399,0xc90,8,0x220,0x1f23,
+0x3b9,0x1f2b,0x399,0xc90,8,0x220,0x1f24,0x3b9,0x1f2c,0x399,0xc90,8,0x220,0x1f25,0x3b9,0x1f2d,
+0x399,0xc90,8,0x220,0x1f26,0x3b9,0x1f2e,0x399,0xc90,8,0x220,0x1f27,0x3b9,0x1f2f,0x399,0x890,
+8,0x220,0x1f60,0x3b9,0x1f68,0x399,0x890,8,0x220,0x1f61,0x3b9,0x1f69,0x399,0x890,8,0x220,
+0x1f62,0x3b9,0x1f6a,0x399,0x890,8,0x220,0x1f63,0x3b9,0x1f6b,0x399,0x890,8,0x220,0x1f64,0x3b9,
+0x1f6c,0x399,0x890,8,0x220,0x1f65,0x3b9,0x1f6d,0x399,0x890,8,0x220,0x1f66,0x3b9,0x1f6e,0x399,
+0x890,8,0x220,0x1f67,0x3b9,0x1f6f,0x399,0xc90,8,0x220,0x1f60,0x3b9,0x1f68,0x399,0xc90,8,
+0x220,0x1f61,0x3b9,0x1f69,0x399,0xc90,8,0x220,0x1f62,0x3b9,0x1f6a,0x399,0xc90,8,0x220,0x1f63,
+0x3b9,0x1f6b,0x399,0xc90,8,0x220,0x1f64,0x3b9,0x1f6c,0x399,0xc90,8,0x220,0x1f65,0x3b9,0x1f6d,
+0x399,0xc90,8,0x220,0x1f66,0x3b9,0x1f6e,0x399,0xc90,8,0x220,0x1f67,0x3b9,0x1f6f,0x399,0x880,
+0x2220,0x1f70,0x3b9,0x1fba,0x399,0x1fba,0x345,0x890,9,0x220,0x3b1,0x3b9,0x391,0x399,0x880,0x2220,
+0x3ac,0x3b9,0x386,0x399,0x386,0x345,0x880,0x2220,0x3b1,0x342,0x391,0x342,0x391,0x342,0x880,0x3330,
+0x3b1,0x342,0x3b9,0x391,0x342,0x399,0x391,0x342,0x345,0xc90,9,0x220,0x3b1,0x3b9,0x391,0x399,
+0x846,0x3b9,0x399,1,0x345,0x880,0x2220,0x1f74,0x3b9,0x1fca,0x399,0x1fca,0x345,0x890,9,0x220,
+0x3b7,0x3b9,0x397,0x399,0x880,0x2220,0x3ae,0x3b9,0x389,0x399,0x389,0x345,0x880,0x2220,0x3b7,0x342,
+0x397,0x342,0x397,0x342,0x880,0x3330,0x3b7,0x342,0x3b9,0x397,0x342,0x399,0x397,0x342,0x345,0xc90,
+9,0x220,0x3b7,0x3b9,0x397,0x399,0x880,0x3330,0x3b9,0x308,0x300,0x399,0x308,0x300,0x399,0x308,
+0x300,0x8c0,1,0x3330,0x3b9,0x308,0x301,0x399,0x308,0x301,0x399,0x308,0x301,0x390,0x880,0x2220,
+0x3b9,0x342,0x399,0x342,0x399,0x342,0x880,0x3330,0x3b9,0x308,0x342,0x399,0x308,0x342,0x399,0x308,
+0x342,0x880,0x3330,0x3c5,0x308,0x300,0x3a5,0x308,0x300,0x3a5,0x308,0x300,0x8c0,1,0x3330,0x3c5,
+0x308,0x301,0x3a5,0x308,0x301,0x3a5,0x308,0x301,0x3b0,0x880,0x2220,0x3c1,0x313,0x3a1,0x313,0x3a1,
+0x313,0x880,0x2220,0x3c5,0x342,0x3a5,0x342,0x3a5,0x342,0x880,0x3330,0x3c5,0x308,0x342,0x3a5,0x308,
+0x342,0x3a5,0x308,0x342,0x880,0x2220,0x1f7c,0x3b9,0x1ffa,0x399,0x1ffa,0x345,0x890,9,0x220,0x3c9,
+0x3b9,0x3a9,0x399,0x880,0x2220,0x3ce,0x3b9,0x38f,0x399,0x38f,0x345,0x880,0x2220,0x3c9,0x342,0x3a9,
+0x342,0x3a9,0x342,0x880,0x3330,0x3c9,0x342,0x3b9,0x3a9,0x342,0x399,0x3a9,0x342,0x345,0xc90,9,
+0x220,0x3c9,0x3b9,0x3a9,0x399,0xc50,0x1d5d,1,0x3a9,0xc50,0x20bf,1,0x4b,0xc50,0x2046,1,
+0xc5,0xc10,0x29f7,0xc10,0xee6,0xc10,0x29e7,0xc10,0x2a2b,0xc10,0x2a28,0xc10,0x2a1c,0xc10,0x29fd,0xc10,
+0x2a1f,0xc10,0x2a1e,0xc10,0x2a3f,0xc10,0x1c60,0x841,0xa64b,1,0x1c88,0x844,0xa64a,1,0x1c88,0xc10,
+0x8a04,0xc10,0xa528,0xc10,0xa544,0xc10,0xa54f,0xc10,0xa54b,0xc10,0xa541,0xc10,0xa512,0xc10,0xa52a,0xc10,
+0xa515,0x810,0x3a0,0xc10,0xa543,0xc10,0x8a38,0xc10,0x3a0,0x806,0x13a0,0x13a0,0x806,0x13a1,0x13a1,0x806,
+0x13a2,0x13a2,0x806,0x13a3,0x13a3,0x806,0x13a4,0x13a4,0x806,0x13a5,0x13a5,0x806,0x13a6,0x13a6,0x806,0x13a7,
+0x13a7,0x806,0x13a8,0x13a8,0x806,0x13a9,0x13a9,0x806,0x13aa,0x13aa,0x806,0x13ab,0x13ab,0x806,0x13ac,0x13ac,
+0x806,0x13ad,0x13ad,0x806,0x13ae,0x13ae,0x806,0x13af,0x13af,0x806,0x13b0,0x13b0,0x806,0x13b1,0x13b1,0x806,
+0x13b2,0x13b2,0x806,0x13b3,0x13b3,0x806,0x13b4,0x13b4,0x806,0x13b5,0x13b5,0x806,0x13b6,0x13b6,0x806,0x13b7,
+0x13b7,0x806,0x13b8,0x13b8,0x806,0x13b9,0x13b9,0x806,0x13ba,0x13ba,0x806,0x13bb,0x13bb,0x806,0x13bc,0x13bc,
+0x806,0x13bd,0x13bd,0x806,0x13be,0x13be,0x806,0x13bf,0x13bf,0x806,0x13c0,0x13c0,0x806,0x13c1,0x13c1,0x806,
+0x13c2,0x13c2,0x806,0x13c3,0x13c3,0x806,0x13c4,0x13c4,0x806,0x13c5,0x13c5,0x806,0x13c6,0x13c6,0x806,0x13c7,
+0x13c7,0x806,0x13c8,0x13c8,0x806,0x13c9,0x13c9,0x806,0x13ca,0x13ca,0x806,0x13cb,0x13cb,0x806,0x13cc,0x13cc,
+0x806,0x13cd,0x13cd,0x806,0x13ce,0x13ce,0x806,0x13cf,0x13cf,0x806,0x13d0,0x13d0,0x806,0x13d1,0x13d1,0x806,
+0x13d2,0x13d2,0x806,0x13d3,0x13d3,0x806,0x13d4,0x13d4,0x806,0x13d5,0x13d5,0x806,0x13d6,0x13d6,0x806,0x13d7,
+0x13d7,0x806,0x13d8,0x13d8,0x806,0x13d9,0x13d9,0x806,0x13da,0x13da,0x806,0x13db,0x13db,0x806,0x13dc,0x13dc,
+0x806,0x13dd,0x13dd,0x806,0x13de,0x13de,0x806,0x13df,0x13df,0x806,0x13e0,0x13e0,0x806,0x13e1,0x13e1,0x806,
+0x13e2,0x13e2,0x806,0x13e3,0x13e3,0x806,0x13e4,0x13e4,0x806,0x13e5,0x13e5,0x806,0x13e6,0x13e6,0x806,0x13e7,
+0x13e7,0x806,0x13e8,0x13e8,0x806,0x13e9,0x13e9,0x806,0x13ea,0x13ea,0x806,0x13eb,0x13eb,0x806,0x13ec,0x13ec,
+0x806,0x13ed,0x13ed,0x806,0x13ee,0x13ee,0x806,0x13ef,0x13ef,0x880,0x2220,0x66,0x66,0x46,0x46,0x46,
+0x66,0x880,0x2220,0x66,0x69,0x46,0x49,0x46,0x69,0x880,0x2220,0x66,0x6c,0x46,0x4c,0x46,
+0x6c,0x880,0x3330,0x66,0x66,0x69,0x46,0x46,0x49,0x46,0x66,0x69,0x880,0x3330,0x66,0x66,
+0x6c,0x46,0x46,0x4c,0x46,0x66,0x6c,0x8c0,1,0x2220,0x73,0x74,0x53,0x54,0x53,0x74,
+0xfb06,0x8c0,1,0x2220,0x73,0x74,0x53,0x54,0x53,0x74,0xfb05,0x880,0x2220,0x574,0x576,0x544,
+0x546,0x544,0x576,0x880,0x2220,0x574,0x565,0x544,0x535,0x544,0x565,0x880,0x2220,0x574,0x56b,0x544,
+0x53b,0x544,0x56b,0x880,0x2220,0x57e,0x576,0x54e,0x546,0x54e,0x576,0x880,0x2220,0x574,0x56d,0x544,
+0x53d,0x544,0x56d
 };
 
 static const uint16_t ucase_props_unfold[370]={
diff --git a/icu4c/source/common/ucasemap_imp.h b/icu4c/source/common/ucasemap_imp.h
index 7788fd9..e17a0ae 100644
--- a/icu4c/source/common/ucasemap_imp.h
+++ b/icu4c/source/common/ucasemap_imp.h
@@ -68,15 +68,15 @@
 class ByteSink;
 class Locale;               // unicode/locid.h
 
-/** Returns TRUE if the options are valid. Otherwise FALSE, and sets an error. */
+/** Returns true if the options are valid. Otherwise false, and sets an error. */
 inline UBool ustrcase_checkTitleAdjustmentOptions(uint32_t options, UErrorCode &errorCode) {
-    if (U_FAILURE(errorCode)) { return FALSE; }
+    if (U_FAILURE(errorCode)) { return false; }
     if ((options & U_TITLECASE_ADJUSTMENT_MASK) == U_TITLECASE_ADJUSTMENT_MASK) {
         // Both options together.
         errorCode = U_ILLEGAL_ARGUMENT_ERROR;
-        return FALSE;
+        return false;
     }
-    return TRUE;
+    return true;
 }
 
 inline UBool ustrcase_isLNS(UChar32 c) {
diff --git a/icu4c/source/common/ucln_cmn.h b/icu4c/source/common/ucln_cmn.h
index b837fb9..44b73e9 100644
--- a/icu4c/source/common/ucln_cmn.h
+++ b/icu4c/source/common/ucln_cmn.h
@@ -38,6 +38,8 @@
     UCLN_COMMON_SERVICE,
     UCLN_COMMON_LOCALE_KEY_TYPE,
     UCLN_COMMON_LOCALE,
+    UCLN_COMMON_LOCALE_ALIAS,
+    UCLN_COMMON_LOCALE_KNOWN_CANONICALIZED,
     UCLN_COMMON_LOCALE_AVAILABLE,
     UCLN_COMMON_LIKELY_SUBTAGS,
     UCLN_COMMON_LOCALE_DISTANCE,
diff --git a/icu4c/source/common/ucln_imp.h b/icu4c/source/common/ucln_imp.h
index 1bfcde0..63a54c8 100644
--- a/icu4c/source/common/ucln_imp.h
+++ b/icu4c/source/common/ucln_imp.h
@@ -78,7 +78,7 @@
  * Use the ANSI C 'atexit' function. Note that this mechanism does not
  * guarantee the order of cleanup relative to other users of ICU!
  */
-static UBool gAutoCleanRegistered = FALSE;
+static UBool gAutoCleanRegistered = false;
 
 static void ucln_atexit_handler()
 {
@@ -88,7 +88,7 @@
 static void ucln_registerAutomaticCleanup()
 {
     if(!gAutoCleanRegistered) {
-        gAutoCleanRegistered = TRUE;
+        gAutoCleanRegistered = true;
         atexit(&ucln_atexit_handler);
     }
 }
@@ -135,7 +135,7 @@
  */
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 {
-    BOOL status = TRUE;
+    BOOL status = true;
 
     switch(fdwReason) {
         case DLL_PROCESS_ATTACH:
diff --git a/icu4c/source/common/ucnv_bld.cpp b/icu4c/source/common/ucnv_bld.cpp
index 56fc3d6..0e19889 100644
--- a/icu4c/source/common/ucnv_bld.cpp
+++ b/icu4c/source/common/ucnv_bld.cpp
@@ -224,7 +224,7 @@
 static const char DATA_TYPE[] = "cnv";
 
 /* ucnv_flushAvailableConverterCache. This is only called from ucnv_cleanup().
- *                       If it is ever to be called from elsewhere, synchronization 
+ *                       If it is ever to be called from elsewhere, synchronization
  *                       will need to be considered.
  */
 static void
@@ -262,7 +262,7 @@
 }
 
 U_CAPI void U_EXPORT2
-ucnv_enableCleanup() {
+ucnv_enableCleanup(void) {
     ucln_common_registerCleanup(UCLN_COMMON_UCNV, ucnv_cleanup);
 }
 
@@ -1309,7 +1309,7 @@
 
         /* The close may make the current name go away. */
         ucnv_close(cnv);
-  
+
         /* reset the converter cache */
         u_flushDefaultConverter();
     }
diff --git a/icu4c/source/common/ucnv_bld.h b/icu4c/source/common/ucnv_bld.h
index 18b3795..43e6c09 100644
--- a/icu4c/source/common/ucnv_bld.h
+++ b/icu4c/source/common/ucnv_bld.h
@@ -66,8 +66,8 @@
 
 typedef struct UConverterStaticData {   /* +offset: size */
     uint32_t structSize;                /* +0: 4 Size of this structure */
-    
-    char name 
+
+    char name
       [UCNV_MAX_CONVERTER_NAME_LENGTH]; /* +4: 60  internal name of the converter- invariant chars */
 
     int32_t codepage;               /* +64: 4 codepage # (now IBM-$codepage) */
@@ -80,7 +80,7 @@
 
     uint8_t subChar[UCNV_MAX_SUBCHAR_LEN]; /* +72: 4  [note:  4 and 8 byte boundary] */
     int8_t subCharLen;              /* +76: 1 */
-    
+
     uint8_t hasToUnicodeFallback;   /* +77: 1 UBool needs to be changed to UBool to be consistent across platform */
     uint8_t hasFromUnicodeFallback; /* +78: 1 */
     uint8_t unicodeMask;            /* +79: 1  bit 0: has supplementary  bit 1: has single surrogates */
@@ -101,8 +101,8 @@
 
     const UConverterStaticData *staticData; /* pointer to the static (non changing) data. */
 
-    UBool                sharedDataCached;   /* TRUE:  shared data is in cache, don't destroy on ucnv_close() if 0 ref.  FALSE: shared data isn't in the cache, do attempt to clean it up if the ref is 0 */
-    /** If FALSE, then referenceCounter is not used. Must not change after initialization. */
+    UBool                sharedDataCached;   /* true:  shared data is in cache, don't destroy on ucnv_close() if 0 ref.  false: shared data isn't in the cache, do attempt to clean it up if the ref is 0 */
+    /** If false, then referenceCounter is not used. Must not change after initialization. */
     UBool isReferenceCounted;
 
     const UConverterImpl *impl;     /* vtable-style struct of mostly function pointers */
@@ -128,7 +128,7 @@
 #define UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(pStaticData, pImpl) \
     { \
         sizeof(UConverterSharedData), ~((uint32_t)0), \
-        NULL, pStaticData, FALSE, FALSE, pImpl, \
+        NULL, pStaticData, false, false, pImpl, \
         0, UCNV_MBCS_TABLE_INITIALIZER \
     }
 
@@ -181,9 +181,9 @@
 
     uint32_t options; /* options flags from UConverterOpen, may contain additional bits */
 
-    UBool sharedDataIsCached;  /* TRUE:  shared data is in cache, don't destroy on ucnv_close() if 0 ref.  FALSE: shared data isn't in the cache, do attempt to clean it up if the ref is 0 */
-    UBool isCopyLocal;  /* TRUE if UConverter is not owned and not released in ucnv_close() (stack-allocated, safeClone(), etc.) */
-    UBool isExtraLocal; /* TRUE if extraInfo is not owned and not released in ucnv_close() (stack-allocated, safeClone(), etc.) */
+    UBool sharedDataIsCached;  /* true:  shared data is in cache, don't destroy on ucnv_close() if 0 ref.  false: shared data isn't in the cache, do attempt to clean it up if the ref is 0 */
+    UBool isCopyLocal;  /* true if UConverter is not owned and not released in ucnv_close() (stack-allocated, safeClone(), etc.) */
+    UBool isExtraLocal; /* true if extraInfo is not owned and not released in ucnv_close() (stack-allocated, safeClone(), etc.) */
 
     UBool  useFallback;
     int8_t toULength;                   /* number of bytes in toUBytes */
@@ -289,7 +289,7 @@
           UErrorCode *pErrorCode);
 
 U_CAPI void U_EXPORT2
-ucnv_enableCleanup();
+ucnv_enableCleanup(void);
 
 #endif
 
diff --git a/icu4c/source/common/ucnv_cnv.h b/icu4c/source/common/ucnv_cnv.h
index 2eed2c6..59be8bd 100644
--- a/icu4c/source/common/ucnv_cnv.h
+++ b/icu4c/source/common/ucnv_cnv.h
@@ -59,7 +59,7 @@
 } UConverterLoadArgs;
 
 #define UCNV_LOAD_ARGS_INITIALIZER \
-    { (int32_t)sizeof(UConverterLoadArgs), 0, FALSE, FALSE, 0, 0, NULL, NULL, NULL }
+    { (int32_t)sizeof(UConverterLoadArgs), 0, false, false, 0, 0, NULL, NULL, NULL }
 
 typedef void (*UConverterLoad) (UConverterSharedData *sharedData,
                                 UConverterLoadArgs *pArgs,
@@ -267,8 +267,8 @@
 U_CDECL_END
 
 /** Always use fallbacks from codepage to Unicode */
-#define TO_U_USE_FALLBACK(useFallback) TRUE
-#define UCNV_TO_U_USE_FALLBACK(cnv) TRUE
+#define TO_U_USE_FALLBACK(useFallback) true
+#define UCNV_TO_U_USE_FALLBACK(cnv) true
 
 /** Use fallbacks from Unicode to codepage when cnv->useFallback or for private-use code points */
 #define IS_PRIVATE_USE(c) ((uint32_t)((c)-0xe000)<0x1900 || (uint32_t)((c)-0xf0000)<0x20000)
diff --git a/icu4c/source/common/ucnv_u8.cpp b/icu4c/source/common/ucnv_u8.cpp
index 9b518e0..1ef7fa2 100644
--- a/icu4c/source/common/ucnv_u8.cpp
+++ b/icu4c/source/common/ucnv_u8.cpp
@@ -707,9 +707,9 @@
 
         // Do not go back into the bytes that will be read for finishing a partial
         // sequence from the previous buffer.
-        int32_t length=count-toULimit;
+        int32_t length=count-toULength;
         U8_TRUNCATE_IF_INCOMPLETE(source, 0, length);
-        count=toULimit+length;
+        count=toULength+length;
     }
 
     if(c!=0) {
diff --git a/icu4c/source/common/ucnvmbcs.h b/icu4c/source/common/ucnvmbcs.h
index 209cdc5..c8f3b89 100644
--- a/icu4c/source/common/ucnvmbcs.h
+++ b/icu4c/source/common/ucnvmbcs.h
@@ -420,7 +420,7 @@
     NULL, \
     0, \
     0, 0, \
-    FALSE, \
+    false, \
     0, \
      \
     /* roundtrips */ \
diff --git a/icu4c/source/common/ucol_swp.h b/icu4c/source/common/ucol_swp.h
index fd8be9a..0c2990a 100644
--- a/icu4c/source/common/ucol_swp.h
+++ b/icu4c/source/common/ucol_swp.h
@@ -31,7 +31,7 @@
  * Does the data look like a collation binary?
  * @internal
  */
-U_INTERNAL UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucol_looksLikeCollationBinary(const UDataSwapper *ds,
                               const void *inData, int32_t length);
 
diff --git a/icu4c/source/common/ucurr.cpp b/icu4c/source/common/ucurr.cpp
index 5eacc4a..0e14cdd 100644
--- a/icu4c/source/common/ucurr.cpp
+++ b/icu4c/source/common/ucurr.cpp
@@ -91,6 +91,8 @@
 // Tag for localized display names (symbols) of currencies
 static const char CURRENCIES[] = "Currencies";
 static const char CURRENCIES_NARROW[] = "Currencies%narrow";
+static const char CURRENCIES_FORMAL[] = "Currencies%formal";
+static const char CURRENCIES_VARIANT[] = "Currencies%variant";
 static const char CURRENCYPLURALS[] = "CurrencyPlurals";
 
 // ISO codes mapping table
@@ -649,7 +651,7 @@
     }
 
     int32_t choice = (int32_t) nameStyle;
-    if (choice < 0 || choice > 2) {
+    if (choice < 0 || choice > 4) {
         *ec = U_ILLEGAL_ARGUMENT_ERROR;
         return 0;
     }
@@ -684,9 +686,22 @@
     ec2 = U_ZERO_ERROR;
     LocalUResourceBundlePointer rb(ures_open(U_ICUDATA_CURR, loc, &ec2));
 
-    if (nameStyle == UCURR_NARROW_SYMBOL_NAME) {
+    if (nameStyle == UCURR_NARROW_SYMBOL_NAME || nameStyle == UCURR_FORMAL_SYMBOL_NAME || nameStyle == UCURR_VARIANT_SYMBOL_NAME) {
         CharString key;
-        key.append(CURRENCIES_NARROW, ec2);
+        switch (nameStyle) {
+        case UCURR_NARROW_SYMBOL_NAME:
+            key.append(CURRENCIES_NARROW, ec2);
+            break;
+        case UCURR_FORMAL_SYMBOL_NAME:
+            key.append(CURRENCIES_FORMAL, ec2);
+            break;
+        case UCURR_VARIANT_SYMBOL_NAME:
+            key.append(CURRENCIES_VARIANT, ec2);
+            break;
+        default:
+            *ec = U_UNSUPPORTED_ERROR;
+            return 0;
+        }
         key.append("/", ec2);
         key.append(buf, ec2);
         s = ures_getStringByKeyWithFallback(rb.getAlias(), key.data(), len, &ec2);
@@ -1610,7 +1625,7 @@
     return ucurr_getDefaultFractionDigitsForUsage(currency,UCURR_USAGE_STANDARD,ec);
 }
 
-U_DRAFT int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucurr_getDefaultFractionDigitsForUsage(const UChar* currency, const UCurrencyUsage usage, UErrorCode* ec) {
     int32_t fracDigits = 0;
     if (U_SUCCESS(*ec)) {
@@ -1633,7 +1648,7 @@
     return ucurr_getRoundingIncrementForUsage(currency, UCURR_USAGE_STANDARD, ec);
 }
 
-U_DRAFT double U_EXPORT2
+U_CAPI double U_EXPORT2
 ucurr_getRoundingIncrementForUsage(const UChar* currency, const UCurrencyUsage usage, UErrorCode* ec) {
     double result = 0.0;
 
@@ -2259,7 +2274,6 @@
         // local variables
         UErrorCode localStatus = U_ZERO_ERROR;
         char id[ULOC_FULLNAME_CAPACITY];
-        uloc_getKeywordValue(locale, "currency", id, ULOC_FULLNAME_CAPACITY, &localStatus);
 
         // get country or country_variant in `id'
         idForLocale(locale, id, sizeof(id), ec);
@@ -2375,7 +2389,6 @@
             // local variables
             UErrorCode localStatus = U_ZERO_ERROR;
             char id[ULOC_FULLNAME_CAPACITY];
-            resLen = uloc_getKeywordValue(locale, "currency", id, ULOC_FULLNAME_CAPACITY, &localStatus);
 
             // get country or country_variant in `id'
             idForLocale(locale, id, sizeof(id), ec);
diff --git a/icu4c/source/common/uelement.h b/icu4c/source/common/uelement.h
index 05f36a0..88dd4d6 100644
--- a/icu4c/source/common/uelement.h
+++ b/icu4c/source/common/uelement.h
@@ -46,7 +46,7 @@
  * An element-equality (boolean) comparison function.
  * @param e1 An element (object or integer)
  * @param e2 An element (object or integer)
- * @return TRUE if the two elements are equal.
+ * @return true if the two elements are equal.
  */
 typedef UBool U_CALLCONV UElementsAreEqual(const UElement e1, const UElement e2);
 
diff --git a/icu4c/source/common/uinvchar.cpp b/icu4c/source/common/uinvchar.cpp
index 05bcf10..52b8906 100644
--- a/icu4c/source/common/uinvchar.cpp
+++ b/icu4c/source/common/uinvchar.cpp
@@ -579,7 +579,7 @@
     return (char)lowercaseAsciiFromEbcdic[(uint8_t)c];
 }
 
-U_INTERNAL uint8_t* U_EXPORT2
+U_CAPI uint8_t* U_EXPORT2
 uprv_aestrncpy(uint8_t *dst, const uint8_t *src, int32_t n)
 {
   uint8_t *orig_dst = dst;
@@ -600,7 +600,7 @@
   return orig_dst;
 }
 
-U_INTERNAL uint8_t* U_EXPORT2
+U_CAPI uint8_t* U_EXPORT2
 uprv_eastrncpy(uint8_t *dst, const uint8_t *src, int32_t n)
 {
   uint8_t *orig_dst = dst;
diff --git a/icu4c/source/common/uinvchar.h b/icu4c/source/common/uinvchar.h
index a43cfcd..9b7a9bd 100644
--- a/icu4c/source/common/uinvchar.h
+++ b/icu4c/source/common/uinvchar.h
@@ -33,11 +33,11 @@
  *
  * @param s Input string pointer.
  * @param length Length of the string, can be -1 if NUL-terminated.
- * @return TRUE if s contains only invariant characters.
+ * @return true if s contains only invariant characters.
  *
  * @internal (ICU 2.8)
  */
-U_INTERNAL UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uprv_isInvariantString(const char *s, int32_t length);
 
 /**
@@ -46,11 +46,11 @@
  *
  * @param s Input string pointer.
  * @param length Length of the string, can be -1 if NUL-terminated.
- * @return TRUE if s contains only invariant characters.
+ * @return true if s contains only invariant characters.
  *
  * @internal (ICU 2.8)
  */
-U_INTERNAL UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uprv_isInvariantUString(const UChar *s, int32_t length);
 
 /**
@@ -141,7 +141,7 @@
  * Compare two EBCDIC invariant-character strings in ASCII order.
  * @internal
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uprv_compareInvEbcdicAsAscii(const char *s1, const char *s2);
 
 /**
@@ -161,7 +161,7 @@
  * Converts an EBCDIC invariant character to ASCII.
  * @internal
  */
-U_INTERNAL char U_EXPORT2
+U_CAPI char U_EXPORT2
 uprv_ebcdicToAscii(char c);
 
 /**
@@ -181,7 +181,7 @@
  * Converts an EBCDIC invariant character to lowercase ASCII.
  * @internal
  */
-U_INTERNAL char U_EXPORT2
+U_CAPI char U_EXPORT2
 uprv_ebcdicToLowercaseAscii(char c);
 
 /**
@@ -202,7 +202,7 @@
  * @internal
  * @see uprv_strncpy
  */
-U_INTERNAL uint8_t* U_EXPORT2
+U_CAPI uint8_t* U_EXPORT2
 uprv_aestrncpy(uint8_t *dst, const uint8_t *src, int32_t n);
 
 
@@ -211,7 +211,7 @@
  * @internal
  * @see uprv_strncpy
  */
-U_INTERNAL uint8_t* U_EXPORT2
+U_CAPI uint8_t* U_EXPORT2
 uprv_eastrncpy(uint8_t *dst, const uint8_t *src, int32_t n);
 
 
diff --git a/icu4c/source/common/uloc.cpp b/icu4c/source/common/uloc.cpp
index 0e235d7..ebfbb50 100644
--- a/icu4c/source/common/uloc.cpp
+++ b/icu4c/source/common/uloc.cpp
@@ -50,9 +50,6 @@
 #include "uassert.h"
 #include "charstr.h"
 
-#include <algorithm>
-#include <stdio.h> /* for sprintf */
-
 U_NAMESPACE_USE
 
 /* ### Declarations **************************************************/
@@ -60,12 +57,6 @@
 /* Locale stuff from locid.cpp */
 U_CFUNC void locale_set_default(const char *id);
 U_CFUNC const char *locale_get_default(void);
-U_CFUNC int32_t
-locale_getKeywords(const char *localeID,
-            char prev,
-            char *keywords, int32_t keywordCapacity,
-            UBool valuesToo,
-            UErrorCode *status);
 
 /* ### Data tables **************************************************/
 
@@ -601,12 +592,12 @@
     return uprv_strcmp(leftString, rightString);
 }
 
-static void
-_getKeywords(const char *localeID,
-             char prev,
-             ByteSink& sink,
-             UBool valuesToo,
-             UErrorCode *status)
+U_CFUNC void
+ulocimp_getKeywords(const char *localeID,
+                    char prev,
+                    ByteSink& sink,
+                    UBool valuesToo,
+                    UErrorCode *status)
 {
     KeywordStruct keywordList[ULOC_MAX_NO_KEYWORDS];
 
@@ -722,18 +713,18 @@
     }
 }
 
-U_CFUNC int32_t
-locale_getKeywords(const char *localeID,
-                   char prev,
-                   char *keywords, int32_t keywordCapacity,
-                   UBool valuesToo,
-                   UErrorCode *status) {
+U_CAPI int32_t U_EXPORT2
+uloc_getKeywordValue(const char* localeID,
+                     const char* keywordName,
+                     char* buffer, int32_t bufferCapacity,
+                     UErrorCode* status)
+{
     if (U_FAILURE(*status)) {
         return 0;
     }
 
-    CheckedArrayByteSink sink(keywords, keywordCapacity);
-    _getKeywords(localeID, prev, sink, valuesToo, status);
+    CheckedArrayByteSink sink(buffer, bufferCapacity);
+    ulocimp_getKeywordValue(localeID, keywordName, sink, status);
 
     int32_t reslen = sink.NumberOfBytesAppended();
 
@@ -744,26 +735,22 @@
     if (sink.Overflowed()) {
         *status = U_BUFFER_OVERFLOW_ERROR;
     } else {
-        u_terminateChars(keywords, keywordCapacity, reslen, status);
+        u_terminateChars(buffer, bufferCapacity, reslen, status);
     }
 
     return reslen;
 }
 
-U_CAPI int32_t U_EXPORT2
-uloc_getKeywordValue(const char* localeID,
-                     const char* keywordName,
-                     char* buffer, int32_t bufferCapacity,
-                     UErrorCode* status)
+U_CAPI void U_EXPORT2
+ulocimp_getKeywordValue(const char* localeID,
+                        const char* keywordName,
+                        icu::ByteSink& sink,
+                        UErrorCode* status)
 {
-    if (buffer != nullptr) {
-        buffer[0] = '\0';
-    }
     const char* startSearchHere = NULL;
     const char* nextSeparator = NULL;
     char keywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN];
     char localeKeywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN];
-    int32_t result = 0;
 
     if(status && U_SUCCESS(*status) && localeID) {
       char tempBuffer[ULOC_FULLNAME_CAPACITY];
@@ -771,12 +758,12 @@
 
       if (keywordName == NULL || keywordName[0] == 0) {
         *status = U_ILLEGAL_ARGUMENT_ERROR;
-        return 0;
+        return;
       }
 
       locale_canonKeywordName(keywordNameBuffer, keywordName, status);
       if(U_FAILURE(*status)) {
-        return 0;
+        return;
       }
 
       if (_hasBCP47Extension(localeID)) {
@@ -788,7 +775,7 @@
       startSearchHere = locale_getKeywordsStart(tmpLocaleID);
       if(startSearchHere == NULL) {
           /* no keywords, return at once */
-          return 0;
+          return;
       }
 
       /* find the first keyword */
@@ -800,7 +787,7 @@
           nextSeparator = uprv_strchr(startSearchHere, '=');
           if(!nextSeparator) {
               *status = U_ILLEGAL_ARGUMENT_ERROR; /* key must have =value */
-              return 0;
+              return;
           }
           /* strip leading & trailing spaces (TC decided to tolerate these) */
           while(*startSearchHere == ' ') {
@@ -814,20 +801,20 @@
           /* copy & normalize keyName from locale */
           if (startSearchHere == keyValueTail) {
               *status = U_ILLEGAL_ARGUMENT_ERROR; /* empty keyword name in passed-in locale */
-              return 0;
+              return;
           }
           keyValueLen = 0;
           while (startSearchHere < keyValueTail) {
             if (!UPRV_ISALPHANUM(*startSearchHere)) {
               *status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed keyword name */
-              return 0;
+              return;
             }
             if (keyValueLen < ULOC_KEYWORD_BUFFER_LEN - 1) {
               localeKeywordNameBuffer[keyValueLen++] = uprv_tolower(*startSearchHere++);
             } else {
               /* keyword name too long for internal buffer */
               *status = U_INTERNAL_PROGRAM_ERROR;
-              return 0;
+              return;
             }
           }
           localeKeywordNameBuffer[keyValueLen] = 0; /* terminate */
@@ -848,28 +835,20 @@
               /* Now copy the value, but check well-formedness */
               if (nextSeparator == keyValueTail) {
                 *status = U_ILLEGAL_ARGUMENT_ERROR; /* empty key value name in passed-in locale */
-                return 0;
+                return;
               }
-              keyValueLen = 0;
               while (nextSeparator < keyValueTail) {
                 if (!UPRV_ISALPHANUM(*nextSeparator) && !UPRV_OK_VALUE_PUNCTUATION(*nextSeparator)) {
                   *status = U_ILLEGAL_ARGUMENT_ERROR; /* malformed key value */
-                  return 0;
+                  return;
                 }
-                if (keyValueLen < bufferCapacity) {
-                  /* Should we lowercase value to return here? Tests expect as-is. */
-                  buffer[keyValueLen++] = *nextSeparator++;
-                } else { /* keep advancing so we return correct length in case of overflow */
-                  keyValueLen++;
-                  nextSeparator++;
-                }
+                /* Should we lowercase value to return here? Tests expect as-is. */
+                sink.Append(nextSeparator++, 1);
               }
-              result = u_terminateChars(buffer, bufferCapacity, keyValueLen, status);
-              return result;
+              return;
           }
       }
     }
-    return 0;
 }
 
 U_CAPI int32_t U_EXPORT2
@@ -892,13 +871,15 @@
     char* startSearchHere = NULL;
     char* keywordStart = NULL;
     CharString updatedKeysAndValues;
-    int32_t updatedKeysAndValuesLen;
     UBool handledInputKeyAndValue = FALSE;
     char keyValuePrefix = '@';
 
     if(U_FAILURE(*status)) {
         return -1;
     }
+    if (*status == U_STRING_NOT_TERMINATED_WARNING) {
+        *status = U_ZERO_ERROR;
+    }
     if (keywordName == NULL || keywordName[0] == 0 || bufferCapacity <= 1) {
         *status = U_ILLEGAL_ARGUMENT_ERROR;
         return 0;
@@ -936,6 +917,7 @@
     startSearchHere = (char*)locale_getKeywordsStart(buffer);
     if(startSearchHere == NULL || (startSearchHere[1]==0)) {
         if(keywordValueLen == 0) { /* no keywords = nothing to remove */
+            U_ASSERT(*status != U_STRING_NOT_TERMINATED_WARNING);
             return bufLen;
         }
 
@@ -955,6 +937,7 @@
         startSearchHere += keywordNameLen;
         *startSearchHere++ = '=';
         uprv_strcpy(startSearchHere, keywordValueBuffer);
+        U_ASSERT(*status != U_STRING_NOT_TERMINATED_WARNING);
         return needLen;
     } /* end shortcut - no @ */
 
@@ -1069,20 +1052,26 @@
     if (!handledInputKeyAndValue || U_FAILURE(*status)) {
         /* if input key/value specified removal of a keyword not present in locale, or
          * there was an error in CharString.append, leave original locale alone. */
+        U_ASSERT(*status != U_STRING_NOT_TERMINATED_WARNING);
         return bufLen;
     }
 
-    updatedKeysAndValuesLen = updatedKeysAndValues.length();
-    /* needLen = length of the part before '@' + length of updated key-value part including '@' */
-    needLen = (int32_t)(startSearchHere - buffer) + updatedKeysAndValuesLen;
-    if(needLen >= bufferCapacity) {
+    // needLen = length of the part before '@'
+    needLen = (int32_t)(startSearchHere - buffer);
+    // Check to see can we fit the startSearchHere, if not, return
+    // U_BUFFER_OVERFLOW_ERROR without copy updatedKeysAndValues into it.
+    // We do this because this API function does not behave like most others:
+    // It promises never to set a U_STRING_NOT_TERMINATED_WARNING.
+    // When the contents fits but without the terminating NUL, in this case we need to not change
+    // the buffer contents and return with a buffer overflow error.
+    int32_t appendLength = updatedKeysAndValues.length();
+    if (appendLength >= bufferCapacity - needLen) {
         *status = U_BUFFER_OVERFLOW_ERROR;
-        return needLen; /* no change */
+        return needLen + appendLength;
     }
-    if (updatedKeysAndValuesLen > 0) {
-        uprv_strncpy(startSearchHere, updatedKeysAndValues.data(), updatedKeysAndValuesLen);
-    }
-    buffer[needLen]=0;
+    needLen += updatedKeysAndValues.extract(
+                         startSearchHere, bufferCapacity - needLen, *status);
+    U_ASSERT(*status != U_STRING_NOT_TERMINATED_WARNING);
     return needLen;
 }
 
@@ -1148,7 +1137,7 @@
  *
  * TODO try to use this in Locale
  */
-static CharString
+CharString U_EXPORT2
 ulocimp_getLanguage(const char *localeID,
                     const char **pEnd,
                     UErrorCode &status) {
@@ -1193,21 +1182,7 @@
     return result;
 }
 
-U_CFUNC int32_t
-ulocimp_getLanguage(const char *localeID,
-                    char *language, int32_t languageCapacity,
-                    const char **pEnd) {
-    ErrorCode status;
-    CharString result = ulocimp_getLanguage(localeID, pEnd, status);
-    if (status.isFailure()) {
-        return 0;
-    }
-    int32_t reslen = result.length();
-    uprv_memcpy(language, result.data(), std::min(reslen, languageCapacity));
-    return reslen;
-}
-
-static CharString
+CharString U_EXPORT2
 ulocimp_getScript(const char *localeID,
                   const char **pEnd,
                   UErrorCode &status) {
@@ -1241,21 +1216,7 @@
     return result;
 }
 
-U_CFUNC int32_t
-ulocimp_getScript(const char *localeID,
-                  char *script, int32_t scriptCapacity,
-                  const char **pEnd) {
-    ErrorCode status;
-    CharString result = ulocimp_getScript(localeID, pEnd, status);
-    if (status.isFailure()) {
-        return 0;
-    }
-    int32_t reslen = result.length();
-    uprv_memcpy(script, result.data(), std::min(reslen, scriptCapacity));
-    return reslen;
-}
-
-static CharString
+CharString U_EXPORT2
 ulocimp_getCountry(const char *localeID,
                    const char **pEnd,
                    UErrorCode &status) {
@@ -1290,29 +1251,15 @@
     return result;
 }
 
-U_CFUNC int32_t
-ulocimp_getCountry(const char *localeID,
-                   char *country, int32_t countryCapacity,
-                   const char **pEnd) {
-    ErrorCode status;
-    CharString result = ulocimp_getCountry(localeID, pEnd, status);
-    if (status.isFailure()) {
-        return 0;
-    }
-    int32_t reslen = result.length();
-    uprv_memcpy(country, result.data(), std::min(reslen, countryCapacity));
-    return reslen;
-}
-
 /**
  * @param needSeparator if true, then add leading '_' if any variants
  * are added to 'variant'
  */
 static void
-_getVariantEx(const char *localeID,
-              char prev,
-              ByteSink& sink,
-              UBool needSeparator) {
+_getVariant(const char *localeID,
+            char prev,
+            ByteSink& sink,
+            UBool needSeparator) {
     UBool hasVariant = FALSE;
 
     /* get one or more variant tags and separate them with '_' */
@@ -1353,23 +1300,6 @@
     }
 }
 
-static int32_t
-_getVariantEx(const char *localeID,
-              char prev,
-              char *variant, int32_t variantCapacity,
-              UBool needSeparator) {
-    CheckedArrayByteSink sink(variant, variantCapacity);
-    _getVariantEx(localeID, prev, sink, needSeparator);
-    return sink.NumberOfBytesAppended();
-}
-
-static int32_t
-_getVariant(const char *localeID,
-            char prev,
-            char *variant, int32_t variantCapacity) {
-    return _getVariantEx(localeID, prev, variant, variantCapacity, FALSE);
-}
-
 /* Keyword enumeration */
 
 typedef struct UKeywordsContext {
@@ -1466,9 +1396,6 @@
 uloc_openKeywords(const char* localeID,
                         UErrorCode* status)
 {
-    int32_t i=0;
-    char keywords[256];
-    int32_t keywordsCapacity = 256;
     char tempBuffer[ULOC_FULLNAME_CAPACITY];
     const char* tmpLocaleID;
 
@@ -1486,34 +1413,42 @@
     }
 
     /* Skip the language */
-    ulocimp_getLanguage(tmpLocaleID, NULL, 0, &tmpLocaleID);
+    ulocimp_getLanguage(tmpLocaleID, &tmpLocaleID, *status);
+    if (U_FAILURE(*status)) {
+        return 0;
+    }
+
     if(_isIDSeparator(*tmpLocaleID)) {
         const char *scriptID;
         /* Skip the script if available */
-        ulocimp_getScript(tmpLocaleID+1, NULL, 0, &scriptID);
+        ulocimp_getScript(tmpLocaleID+1, &scriptID, *status);
+        if (U_FAILURE(*status)) {
+            return 0;
+        }
         if(scriptID != tmpLocaleID+1) {
             /* Found optional script */
             tmpLocaleID = scriptID;
         }
         /* Skip the Country */
         if (_isIDSeparator(*tmpLocaleID)) {
-            ulocimp_getCountry(tmpLocaleID+1, NULL, 0, &tmpLocaleID);
-            if(_isIDSeparator(*tmpLocaleID)) {
-                _getVariant(tmpLocaleID+1, *tmpLocaleID, NULL, 0);
+            ulocimp_getCountry(tmpLocaleID+1, &tmpLocaleID, *status);
+            if (U_FAILURE(*status)) {
+                return 0;
             }
         }
     }
 
     /* keywords are located after '@' */
     if((tmpLocaleID = locale_getKeywordsStart(tmpLocaleID)) != NULL) {
-        i=locale_getKeywords(tmpLocaleID+1, '@', keywords, keywordsCapacity, FALSE, status);
+        CharString keywords;
+        CharStringByteSink sink(&keywords);
+        ulocimp_getKeywords(tmpLocaleID+1, '@', sink, FALSE, status);
+        if (U_FAILURE(*status)) {
+            return NULL;
+        }
+        return uloc_openKeywordList(keywords.data(), keywords.length(), status);
     }
-
-    if(i) {
-        return uloc_openKeywordList(keywords, i, status);
-    } else {
-        return NULL;
-    }
+    return NULL;
 }
 
 
@@ -1605,7 +1540,7 @@
                 variantSize = -tag.length();
                 {
                     CharStringByteSink s(&tag);
-                    _getVariantEx(tmpLocaleID+1, *tmpLocaleID, s, FALSE);
+                    _getVariant(tmpLocaleID+1, *tmpLocaleID, s, FALSE);
                 }
                 variantSize += tag.length();
                 if (variantSize > 0) {
@@ -1667,7 +1602,7 @@
             int32_t posixVariantSize = -tag.length();
             {
                 CharStringByteSink s(&tag);
-                _getVariantEx(tmpLocaleID+1, '@', s, (UBool)(variantSize > 0));
+                _getVariant(tmpLocaleID+1, '@', s, (UBool)(variantSize > 0));
             }
             posixVariantSize += tag.length();
             if (posixVariantSize > 0) {
@@ -1696,7 +1631,7 @@
             (!separatorIndicator || separatorIndicator > keywordAssign)) {
             sink.Append("@", 1);
             ++fieldCount;
-            _getKeywords(tmpLocaleID+1, '@', sink, TRUE, err);
+            ulocimp_getKeywords(tmpLocaleID+1, '@', sink, TRUE, err);
         }
     }
 }
@@ -1745,7 +1680,6 @@
          UErrorCode* err)
 {
     /* uloc_getLanguage will return a 2 character iso-639 code if one exists. *CWB*/
-    int32_t i=0;
 
     if (err==NULL || U_FAILURE(*err)) {
         return 0;
@@ -1755,8 +1689,7 @@
         localeID=uloc_getDefault();
     }
 
-    i=ulocimp_getLanguage(localeID, language, languageCapacity, NULL);
-    return u_terminateChars(language, languageCapacity, i, err);
+    return ulocimp_getLanguage(localeID, NULL, *err).extract(language, languageCapacity, *err);
 }
 
 U_CAPI int32_t U_EXPORT2
@@ -1765,8 +1698,6 @@
          int32_t scriptCapacity,
          UErrorCode* err)
 {
-    int32_t i=0;
-
     if(err==NULL || U_FAILURE(*err)) {
         return 0;
     }
@@ -1776,11 +1707,15 @@
     }
 
     /* skip the language */
-    ulocimp_getLanguage(localeID, NULL, 0, &localeID);
-    if(_isIDSeparator(*localeID)) {
-        i=ulocimp_getScript(localeID+1, script, scriptCapacity, NULL);
+    ulocimp_getLanguage(localeID, &localeID, *err);
+    if (U_FAILURE(*err)) {
+        return 0;
     }
-    return u_terminateChars(script, scriptCapacity, i, err);
+
+    if(_isIDSeparator(*localeID)) {
+        return ulocimp_getScript(localeID+1, NULL, *err).extract(script, scriptCapacity, *err);
+    }
+    return u_terminateChars(script, scriptCapacity, 0, err);
 }
 
 U_CAPI int32_t  U_EXPORT2
@@ -1789,8 +1724,6 @@
             int32_t countryCapacity,
             UErrorCode* err)
 {
-    int32_t i=0;
-
     if(err==NULL || U_FAILURE(*err)) {
         return 0;
     }
@@ -1800,20 +1733,27 @@
     }
 
     /* Skip the language */
-    ulocimp_getLanguage(localeID, NULL, 0, &localeID);
+    ulocimp_getLanguage(localeID, &localeID, *err);
+    if (U_FAILURE(*err)) {
+        return 0;
+    }
+
     if(_isIDSeparator(*localeID)) {
         const char *scriptID;
         /* Skip the script if available */
-        ulocimp_getScript(localeID+1, NULL, 0, &scriptID);
+        ulocimp_getScript(localeID+1, &scriptID, *err);
+        if (U_FAILURE(*err)) {
+            return 0;
+        }
         if(scriptID != localeID+1) {
             /* Found optional script */
             localeID = scriptID;
         }
         if(_isIDSeparator(*localeID)) {
-            i=ulocimp_getCountry(localeID+1, country, countryCapacity, NULL);
+            return ulocimp_getCountry(localeID+1, NULL, *err).extract(country, countryCapacity, *err);
         }
     }
-    return u_terminateChars(country, countryCapacity, i, err);
+    return u_terminateChars(country, countryCapacity, 0, err);
 }
 
 U_CAPI int32_t  U_EXPORT2
@@ -1840,11 +1780,18 @@
     }
 
     /* Skip the language */
-    ulocimp_getLanguage(tmpLocaleID, NULL, 0, &tmpLocaleID);
+    ulocimp_getLanguage(tmpLocaleID, &tmpLocaleID, *err);
+    if (U_FAILURE(*err)) {
+        return 0;
+    }
+
     if(_isIDSeparator(*tmpLocaleID)) {
         const char *scriptID;
         /* Skip the script if available */
-        ulocimp_getScript(tmpLocaleID+1, NULL, 0, &scriptID);
+        ulocimp_getScript(tmpLocaleID+1, &scriptID, *err);
+        if (U_FAILURE(*err)) {
+            return 0;
+        }
         if(scriptID != tmpLocaleID+1) {
             /* Found optional script */
             tmpLocaleID = scriptID;
@@ -1852,7 +1799,10 @@
         /* Skip the Country */
         if (_isIDSeparator(*tmpLocaleID)) {
             const char *cntryID;
-            ulocimp_getCountry(tmpLocaleID+1, NULL, 0, &cntryID);
+            ulocimp_getCountry(tmpLocaleID+1, &cntryID, *err);
+            if (U_FAILURE(*err)) {
+                return 0;
+            }
             if (cntryID != tmpLocaleID+1) {
                 /* Found optional country */
                 tmpLocaleID = cntryID;
@@ -1862,18 +1812,24 @@
                 if (tmpLocaleID != cntryID && _isIDSeparator(tmpLocaleID[1])) {
                     tmpLocaleID++;
                 }
-                i=_getVariant(tmpLocaleID+1, *tmpLocaleID, variant, variantCapacity);
+
+                CheckedArrayByteSink sink(variant, variantCapacity);
+                _getVariant(tmpLocaleID+1, *tmpLocaleID, sink, FALSE);
+
+                i = sink.NumberOfBytesAppended();
+
+                if (U_FAILURE(*err)) {
+                    return i;
+                }
+
+                if (sink.Overflowed()) {
+                    *err = U_BUFFER_OVERFLOW_ERROR;
+                    return i;
+                }
             }
         }
     }
 
-    /* removed by weiv. We don't want to handle POSIX variants anymore. Use canonicalization function */
-    /* if we do not have a variant tag yet then try a POSIX variant after '@' */
-/*
-    if(!haveVariant && (localeID=uprv_strrchr(localeID, '@'))!=NULL) {
-        i=_getVariant(localeID+1, '@', variant, variantCapacity);
-    }
-*/
     return u_terminateChars(variant, variantCapacity, i, err);
 }
 
@@ -1905,7 +1861,7 @@
     return reslen;
 }
 
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocimp_getName(const char* localeID,
                 ByteSink& sink,
                 UErrorCode* err)
@@ -1941,7 +1897,7 @@
     return reslen;
 }
 
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocimp_getBaseName(const char* localeID,
                     ByteSink& sink,
                     UErrorCode* err)
@@ -1977,7 +1933,7 @@
     return reslen;
 }
 
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocimp_canonicalize(const char* localeID,
                      ByteSink& sink,
                      UErrorCode* err)
@@ -2058,22 +2014,22 @@
         // uprv_convertToLCID does not support keywords other than collation.
         // Remove all keywords except collation.
         int32_t len;
-        char collVal[ULOC_KEYWORDS_CAPACITY];
         char tmpLocaleID[ULOC_FULLNAME_CAPACITY];
 
-        len = uloc_getKeywordValue(localeID, "collation", collVal,
-            UPRV_LENGTHOF(collVal) - 1, &status);
+        CharString collVal;
+        {
+            CharStringByteSink sink(&collVal);
+            ulocimp_getKeywordValue(localeID, "collation", sink, &status);
+        }
 
-        if (U_SUCCESS(status) && len > 0) {
-            collVal[len] = 0;
-
+        if (U_SUCCESS(status) && !collVal.isEmpty()) {
             len = uloc_getBaseName(localeID, tmpLocaleID,
                 UPRV_LENGTHOF(tmpLocaleID) - 1, &status);
 
             if (U_SUCCESS(status) && len > 0) {
                 tmpLocaleID[len] = 0;
 
-                len = uloc_setKeywordValue("collation", collVal, tmpLocaleID,
+                len = uloc_setKeywordValue("collation", collVal.data(), tmpLocaleID,
                     UPRV_LENGTHOF(tmpLocaleID) - len - 1, &status);
 
                 if (U_SUCCESS(status) && len > 0) {
diff --git a/icu4c/source/common/uloc_tag.cpp b/icu4c/source/common/uloc_tag.cpp
index ad5dd64..7f7fd91 100644
--- a/icu4c/source/common/uloc_tag.cpp
+++ b/icu4c/source/common/uloc_tag.cpp
@@ -15,6 +15,7 @@
 #include "unicode/uenum.h"
 #include "unicode/uloc.h"
 #include "ustr_imp.h"
+#include "bytesinkutil.h"
 #include "charstr.h"
 #include "cmemory.h"
 #include "cstring.h"
@@ -53,7 +54,7 @@
     VariantListEntry    *variants;
     ExtensionListEntry  *extensions;
     const char          *privateuse;
-    const char          *grandfathered;
+    const char          *legacy;
 } ULanguageTag;
 
 #define MINLEN 2
@@ -85,8 +86,9 @@
  Updated on 2018-09-12 from
  https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry .
 
- This table has 2 parts. The parts for Grandfathered tags is generated by the
- following scripts from the IANA language tag registry.
+ This table has 2 parts. The part for
+ legacy language tags (marked as “Type: grandfathered” in BCP 47)
+ is generated by the following scripts from the IANA language tag registry.
 
  curl  https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry |\
  egrep -A 7 'Type: grandfathered' | \
@@ -100,8 +102,8 @@
  values. They may have to be removed for the strict BCP 47 compliance.
 
 */
-static const char* const GRANDFATHERED[] = {
-/*  grandfathered   preferred */
+static const char* const LEGACY[] = {
+/*  legacy          preferred */
     "art-lojban",   "jbo",
     "en-gb-oed",    "en-gb-oxendict",
     "i-ami",        "ami",
@@ -124,7 +126,7 @@
     "zh-min-nan",   "nan",
     "zh-xiang",     "hsn",
 
-    // Grandfathered tags with no preferred value in the IANA
+    // Legacy tags with no preferred value in the IANA
     // registry. Kept for now for the backward compatibility
     // because ICU has mapped them this way.
     "cel-gaulish",  "xtg-x-cel-gaulish",
@@ -346,7 +348,7 @@
 
 #if 0
 static const char*
-ultag_getGrandfathered(const ULanguageTag* langtag);
+ultag_getLegacy(const ULanguageTag* langtag);
 #endif
 
 U_NAMESPACE_BEGIN
@@ -986,7 +988,7 @@
     langtag->variants = NULL;
     langtag->extensions = NULL;
 
-    langtag->grandfathered = EMPTY;
+    langtag->legacy = EMPTY;
     langtag->privateuse = EMPTY;
 }
 
@@ -1268,35 +1270,17 @@
         UBool isBcpUExt;
 
         while (TRUE) {
-            icu::CharString buf;
             key = uenum_next(keywordEnum.getAlias(), NULL, status);
             if (key == NULL) {
                 break;
             }
-            char* buffer;
-            int32_t resultCapacity = ULOC_KEYWORD_AND_VALUES_CAPACITY;
 
-            for (;;) {
-                buffer = buf.getAppendBuffer(
-                        /*minCapacity=*/resultCapacity,
-                        /*desiredCapacityHint=*/resultCapacity,
-                        resultCapacity,
-                        tmpStatus);
-
-                if (U_FAILURE(tmpStatus)) {
-                    break;
-                }
-
-                len = uloc_getKeywordValue(
-                        localeID, key, buffer, resultCapacity, &tmpStatus);
-
-                if (tmpStatus != U_BUFFER_OVERFLOW_ERROR) {
-                    break;
-                }
-
-                resultCapacity = len;
-                tmpStatus = U_ZERO_ERROR;
+            icu::CharString buf;
+            {
+                icu::CharStringByteSink sink(&buf);
+                ulocimp_getKeywordValue(localeID, key, sink, &tmpStatus);
             }
+            len = buf.length();
 
             if (U_FAILURE(tmpStatus)) {
                 if (tmpStatus == U_MEMORY_ALLOCATION_ERROR) {
@@ -1312,11 +1296,6 @@
                 continue;
             }
 
-            buf.append(buffer, len, tmpStatus);
-            if (tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
-                tmpStatus = U_ZERO_ERROR;  // Terminators provided by CharString.
-            }
-
             keylen = (int32_t)uprv_strlen(key);
             isBcpUExt = (keylen > 1);
 
@@ -1395,32 +1374,18 @@
                     no known mapping. This implementation normalizes the
                     value to lower case
                     */
-                    icu::CharString* extBuf = extBufPool.create();
+                    icu::CharString* extBuf = extBufPool.create(buf, tmpStatus);
+
                     if (extBuf == nullptr) {
                         *status = U_MEMORY_ALLOCATION_ERROR;
                         break;
                     }
-                    int32_t bcpValueLen = static_cast<int32_t>(uprv_strlen(bcpValue));
-                    int32_t resultCapacity;
-                    char* pExtBuf = extBuf->getAppendBuffer(
-                            /*minCapacity=*/bcpValueLen,
-                            /*desiredCapacityHint=*/bcpValueLen,
-                            resultCapacity,
-                            tmpStatus);
                     if (U_FAILURE(tmpStatus)) {
                         *status = tmpStatus;
                         break;
                     }
 
-                    uprv_strcpy(pExtBuf, bcpValue);
-                    T_CString_toLowerCase(pExtBuf);
-
-                    extBuf->append(pExtBuf, bcpValueLen, tmpStatus);
-                    if (U_FAILURE(tmpStatus)) {
-                        *status = tmpStatus;
-                        break;
-                    }
-
+                    T_CString_toLowerCase(extBuf->data());
                     bcpValue = extBuf->data();
                 }
             } else {
@@ -2023,11 +1988,12 @@
 #define PRIV 0x0080
 
 /**
- * Ticket #12705 - Visual Studio 2015 Update 3 contains a new code optimizer which has problems optimizing
- * this function. (See https://blogs.msdn.microsoft.com/vcblog/2016/05/04/new-code-optimizer/ )
- * As a workaround, we will turn off optimization just for this function on VS2015 Update 3 and above.
+ * Ticket #12705 - The optimizer in Visual Studio 2015 Update 3 has problems optimizing this function.
+ * As a work-around, optimization is disabled for this function on VS2015 and VS2017.
+ * This work-around should be removed once the following versions of Visual Studio are no
+ * longer supported: All versions of VS2015/VS2017, and versions of VS2019 below 16.4.
  */
-#if (defined(_MSC_VER) && (_MSC_VER >= 1900) && defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 190024210))
+#if defined(_MSC_VER) && (_MSC_VER >= 1900) && (_MSC_VER < 1924)
 #pragma optimize( "", off )
 #endif
 
@@ -2042,7 +2008,7 @@
     char *pExtValueSubtag, *pExtValueSubtagEnd;
     int32_t i;
     UBool privateuseVar = FALSE;
-    int32_t grandfatheredLen = 0;
+    int32_t legacyLen = 0;
 
     if (parsedLen != NULL) {
         *parsedLen = 0;
@@ -2082,25 +2048,25 @@
     }
 
     size_t parsedLenDelta = 0;
-    // Grandfathered tag will be consider together. Grandfathered tag with intervening
+    // Legacy tag will be consider together. Legacy tag with intervening
     // script and region such as art-DE-lojban or art-Latn-lojban won't be
     // matched.
-    /* check if the tag is grandfathered */
-    for (i = 0; i < UPRV_LENGTHOF(GRANDFATHERED); i += 2) {
-        int32_t checkGrandfatheredLen = static_cast<int32_t>(uprv_strlen(GRANDFATHERED[i]));
-        if (tagLen < checkGrandfatheredLen) {
+    /* check if the tag is legacy */
+    for (i = 0; i < UPRV_LENGTHOF(LEGACY); i += 2) {
+        int32_t checkLegacyLen = static_cast<int32_t>(uprv_strlen(LEGACY[i]));
+        if (tagLen < checkLegacyLen) {
             continue;
         }
-        if (tagLen > checkGrandfatheredLen && tagBuf[checkGrandfatheredLen] != '-') {
+        if (tagLen > checkLegacyLen && tagBuf[checkLegacyLen] != '-') {
             // make sure next char is '-'.
             continue;
         }
-        if (uprv_strnicmp(GRANDFATHERED[i], tagBuf, checkGrandfatheredLen) == 0) {
+        if (uprv_strnicmp(LEGACY[i], tagBuf, checkLegacyLen) == 0) {
             int32_t newTagLength;
 
-            grandfatheredLen = checkGrandfatheredLen;  /* back up for output parsedLen */
-            int32_t replacementLen = static_cast<int32_t>(uprv_strlen(GRANDFATHERED[i+1]));
-            newTagLength = replacementLen + tagLen - checkGrandfatheredLen;
+            legacyLen = checkLegacyLen;  /* back up for output parsedLen */
+            int32_t replacementLen = static_cast<int32_t>(uprv_strlen(LEGACY[i+1]));
+            newTagLength = replacementLen + tagLen - checkLegacyLen;
             if (tagLen < newTagLength) {
                 uprv_free(tagBuf);
                 tagBuf = (char*)uprv_malloc(newTagLength + 1);
@@ -2111,16 +2077,16 @@
                 t->buf = tagBuf;
                 tagLen = newTagLength;
             }
-            parsedLenDelta = checkGrandfatheredLen - replacementLen;
-            uprv_strcpy(t->buf, GRANDFATHERED[i + 1]);
-            if (checkGrandfatheredLen != tagLen) {
-                uprv_strcpy(t->buf + replacementLen, tag + checkGrandfatheredLen);
+            parsedLenDelta = checkLegacyLen - replacementLen;
+            uprv_strcpy(t->buf, LEGACY[i + 1]);
+            if (checkLegacyLen != tagLen) {
+                uprv_strcpy(t->buf + replacementLen, tag + checkLegacyLen);
             }
             break;
         }
     }
 
-    if (grandfatheredLen == 0) {
+    if (legacyLen == 0) {
         for (i = 0; i < UPRV_LENGTHOF(REDUNDANT); i += 2) {
             const char* redundantTag = REDUNDANT[i];
             size_t redundantTagLen = uprv_strlen(redundantTag);
@@ -2440,10 +2406,8 @@
     return t.orphan();
 }
 
-/**
-* Ticket #12705 - Turn optimization back on.
-*/
-#if (defined(_MSC_VER) && (_MSC_VER >= 1900) && defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 190024210))
+// Ticket #12705 - Turn optimization back on.
+#if defined(_MSC_VER) && (_MSC_VER >= 1900) && (_MSC_VER < 1924)
 #pragma optimize( "", on )
 #endif
 
@@ -2608,8 +2572,8 @@
 
 #if 0
 static const char*
-ultag_getGrandfathered(const ULanguageTag* langtag) {
-    return langtag->grandfathered;
+ultag_getLegacy(const ULanguageTag* langtag) {
+    return langtag->legacy;
 }
 #endif
 
@@ -2720,14 +2684,17 @@
 
                 key = uenum_next(kwdEnum.getAlias(), &len, &tmpStatus);
                 if (len == 1 && *key == PRIVATEUSE) {
-                    char buf[ULOC_KEYWORD_AND_VALUES_CAPACITY];
-                    buf[0] = PRIVATEUSE;
-                    buf[1] = SEP;
-                    len = uloc_getKeywordValue(localeID, key, &buf[2], sizeof(buf) - 2, &tmpStatus);
+                    icu::CharString buf;
+                    {
+                        icu::CharStringByteSink sink(&buf);
+                        ulocimp_getKeywordValue(localeID, key, sink, &tmpStatus);
+                    }
                     if (U_SUCCESS(tmpStatus)) {
-                        if (ultag_isPrivateuseValueSubtags(&buf[2], len)) {
+                        if (ultag_isPrivateuseValueSubtags(buf.data(), buf.length())) {
                             /* return private use only tag */
-                            sink.Append(buf, len + 2);
+                            static const char PREFIX[] = { PRIVATEUSE, SEP };
+                            sink.Append(PREFIX, sizeof(PREFIX));
+                            sink.Append(buf.data(), buf.length());
                             done = TRUE;
                         } else if (strict) {
                             *status = U_ILLEGAL_ARGUMENT_ERROR;
diff --git a/icu4c/source/common/ulocimp.h b/icu4c/source/common/ulocimp.h
index b9e2eb4..5691fe9 100644
--- a/icu4c/source/common/ulocimp.h
+++ b/icu4c/source/common/ulocimp.h
@@ -13,6 +13,8 @@
 #include "unicode/bytestream.h"
 #include "unicode/uloc.h"
 
+#include "charstr.h"
+
 /**
  * Create an iterator over the specified keywords list
  * @param keywordList double-null terminated list. Will be copied.
@@ -38,7 +40,7 @@
     int32_t *pLength,
     UErrorCode *pErrorCode);
 
-/*returns TRUE if a is an ID separator FALSE otherwise*/
+/*returns true if a is an ID separator false otherwise*/
 #define _isIDSeparator(a) (a == '_' || a == '-')
 
 U_CFUNC const char* 
@@ -47,42 +49,55 @@
 U_CFUNC const char* 
 uloc_getCurrentLanguageID(const char* oldID);
 
-U_CFUNC int32_t
+U_CFUNC void
+ulocimp_getKeywords(const char *localeID,
+             char prev,
+             icu::ByteSink& sink,
+             UBool valuesToo,
+             UErrorCode *status);
+
+icu::CharString U_EXPORT2
 ulocimp_getLanguage(const char *localeID,
-                    char *language, int32_t languageCapacity,
-                    const char **pEnd);
+                    const char **pEnd,
+                    UErrorCode &status);
 
-U_CFUNC int32_t
+icu::CharString U_EXPORT2
 ulocimp_getScript(const char *localeID,
-                   char *script, int32_t scriptCapacity,
-                   const char **pEnd);
+                  const char **pEnd,
+                  UErrorCode &status);
 
-U_CFUNC int32_t
+icu::CharString U_EXPORT2
 ulocimp_getCountry(const char *localeID,
-                   char *country, int32_t countryCapacity,
-                   const char **pEnd);
+                   const char **pEnd,
+                   UErrorCode &status);
 
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocimp_getName(const char* localeID,
                 icu::ByteSink& sink,
                 UErrorCode* err);
 
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocimp_getBaseName(const char* localeID,
                     icu::ByteSink& sink,
                     UErrorCode* err);
 
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocimp_canonicalize(const char* localeID,
                      icu::ByteSink& sink,
                      UErrorCode* err);
 
+U_CAPI void U_EXPORT2
+ulocimp_getKeywordValue(const char* localeID,
+                        const char* keywordName,
+                        icu::ByteSink& sink,
+                        UErrorCode* status);
+
 /**
  * Writes a well-formed language tag for this locale ID.
  *
- * **Note**: When `strict` is FALSE, any locale fields which do not satisfy the
+ * **Note**: When `strict` is false, any locale fields which do not satisfy the
  * BCP47 syntax requirement will be omitted from the result.  When `strict` is
- * TRUE, this function sets U_ILLEGAL_ARGUMENT_ERROR to the `err` if any locale
+ * true, this function sets U_ILLEGAL_ARGUMENT_ERROR to the `err` if any locale
  * fields do not satisfy the BCP47 syntax requirement.
  *
  * @param localeID  the input locale ID
@@ -96,7 +111,7 @@
  *
  * @internal ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocimp_toLanguageTag(const char* localeID,
                       icu::ByteSink& sink,
                       UBool strict,
@@ -107,13 +122,17 @@
  * If the specified language tag contains any ill-formed subtags,
  * the first such subtag and all following subtags are ignored.
  * <p>
- * This implements the 'Language-Tag' production of BCP47, and so
- * supports grandfathered (regular and irregular) as well as private
- * use language tags.  Private use tags are represented as 'x-whatever',
- * and grandfathered tags are converted to their canonical replacements
- * where they exist.  Note that a few grandfathered tags have no modern
- * replacement, these will be converted using the fallback described in
+ * This implements the 'Language-Tag' production of BCP 47, and so
+ * supports legacy language tags (marked as “Type: grandfathered” in BCP 47)
+ * (regular and irregular) as well as private use language tags.
+ *
+ * Private use tags are represented as 'x-whatever',
+ * and legacy tags are converted to their canonical replacements where they exist.
+ *
+ * Note that a few legacy tags have no modern replacement;
+ * these will be converted using the fallback described in
  * the first paragraph, so some information might be lost.
+ *
  * @param langtag   the input BCP47 language tag.
  * @param tagLen    the length of langtag, or -1 to call uprv_strlen().
  * @param sink      the output sink receiving a locale ID for the
@@ -135,7 +154,7 @@
  * Get the region to use for supplemental data lookup. Uses
  * (1) any region specified by locale tag "rg"; if none then
  * (2) any unicode_region_tag in the locale ID; if none then
- * (3) if inferRegion is TRUE, the region suggested by
+ * (3) if inferRegion is true, the region suggested by
  * getLikelySubtags on the localeID.
  * If no region is found, returns length 0.
  * 
@@ -143,7 +162,7 @@
  *     The complete locale ID (with keywords) from which
  *     to get the region to use for supplemental data.
  * @param inferRegion
- *     If TRUE, will try to infer region from localeID if
+ *     If true, will try to infer region from localeID if
  *     no other region is found.
  * @param region
  *     Buffer in which to put the region ID found; should
@@ -189,7 +208,7 @@
  * or the localeId is not well-formed, the error code is U_ILLEGAL_ARGUMENT_ERROR.
  * @internal ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocimp_addLikelySubtags(const char* localeID,
                          icu::ByteSink& sink,
                          UErrorCode* err);
@@ -223,7 +242,7 @@
  * or the localeId is not well-formed, the error code is U_ILLEGAL_ARGUMENT_ERROR.
  * @internal ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocimp_minimizeSubtags(const char* localeID,
                         icu::ByteSink& sink,
                         UErrorCode* err);
@@ -279,4 +298,10 @@
 U_CFUNC const char*
 ulocimp_toLegacyType(const char* key, const char* type, UBool* isKnownKey, UBool* isSpecialType);
 
+/* Function for testing purpose */
+U_CAPI const char* const* ulocimp_getKnownCanonicalizedLocaleForTest(int32_t* length);
+
+// Return true if the value is already canonicalized.
+U_CAPI bool ulocimp_isCanonicalizedLocaleForTest(const char* localeName);
+
 #endif
diff --git a/icu4c/source/common/umutex.h b/icu4c/source/common/umutex.h
index 2503aa4..8d76b3f 100644
--- a/icu4c/source/common/umutex.h
+++ b/icu4c/source/common/umutex.h
@@ -262,13 +262,13 @@
  *              the global ICU mutex.  Recursive locks are an error
  *              and may cause a deadlock on some platforms.
  */
-U_INTERNAL void U_EXPORT2 umtx_lock(UMutex* mutex);
+U_CAPI void U_EXPORT2 umtx_lock(UMutex* mutex);
 
 /* Unlock a mutex.
  * @param mutex The given mutex to be unlocked.  Pass NULL to specify
  *              the global ICU mutex.
  */
-U_INTERNAL void U_EXPORT2 umtx_unlock (UMutex* mutex);
+U_CAPI void U_EXPORT2 umtx_unlock (UMutex* mutex);
 
 
 U_NAMESPACE_END
diff --git a/icu4c/source/common/unicode/appendable.h b/icu4c/source/common/unicode/appendable.h
index 4beacaf..fc99254 100644
--- a/icu4c/source/common/unicode/appendable.h
+++ b/icu4c/source/common/unicode/appendable.h
@@ -45,7 +45,7 @@
  *
  * The methods do not take UErrorCode parameters.
  * If an error occurs (e.g., out-of-memory),
- * in addition to returning FALSE from failing operations,
+ * in addition to returning false from failing operations,
  * the implementation must prevent unexpected behavior (e.g., crashes)
  * from further calls and should make the error condition available separately
  * (e.g., store a UErrorCode, make/keep a UnicodeString bogus).
@@ -62,7 +62,7 @@
     /**
      * Appends a 16-bit code unit.
      * @param c code unit
-     * @return TRUE if the operation succeeded
+     * @return true if the operation succeeded
      * @stable ICU 4.8
      */
     virtual UBool appendCodeUnit(char16_t c) = 0;
@@ -71,7 +71,7 @@
      * Appends a code point.
      * The default implementation calls appendCodeUnit(char16_t) once or twice.
      * @param c code point 0..0x10ffff
-     * @return TRUE if the operation succeeded
+     * @return true if the operation succeeded
      * @stable ICU 4.8
      */
     virtual UBool appendCodePoint(UChar32 c);
@@ -81,7 +81,7 @@
      * The default implementation calls appendCodeUnit(char16_t) for each code unit.
      * @param s string, must not be NULL if length!=0
      * @param length string length, or -1 if NUL-terminated
-     * @return TRUE if the operation succeeded
+     * @return true if the operation succeeded
      * @stable ICU 4.8
      */
     virtual UBool appendString(const char16_t *s, int32_t length);
@@ -90,9 +90,9 @@
      * Tells the object that the caller is going to append roughly
      * appendCapacity char16_ts. A subclass might use this to pre-allocate
      * a larger buffer if necessary.
-     * The default implementation does nothing. (It always returns TRUE.)
+     * The default implementation does nothing. (It always returns true.)
      * @param appendCapacity estimated number of char16_ts that will be appended
-     * @return TRUE if the operation succeeded
+     * @return true if the operation succeeded
      * @stable ICU 4.8
      */
     virtual UBool reserveAppendCapacity(int32_t appendCapacity);
@@ -171,7 +171,7 @@
     /**
      * Appends a 16-bit code unit to the string.
      * @param c code unit
-     * @return TRUE if the operation succeeded
+     * @return true if the operation succeeded
      * @stable ICU 4.8
      */
     virtual UBool appendCodeUnit(char16_t c);
@@ -179,7 +179,7 @@
     /**
      * Appends a code point to the string.
      * @param c code point 0..0x10ffff
-     * @return TRUE if the operation succeeded
+     * @return true if the operation succeeded
      * @stable ICU 4.8
      */
     virtual UBool appendCodePoint(UChar32 c);
@@ -188,7 +188,7 @@
      * Appends a string to the UnicodeString.
      * @param s string, must not be NULL if length!=0
      * @param length string length, or -1 if NUL-terminated
-     * @return TRUE if the operation succeeded
+     * @return true if the operation succeeded
      * @stable ICU 4.8
      */
     virtual UBool appendString(const char16_t *s, int32_t length);
@@ -197,7 +197,7 @@
      * Tells the UnicodeString that the caller is going to append roughly
      * appendCapacity char16_ts.
      * @param appendCapacity estimated number of char16_ts that will be appended
-     * @return TRUE if the operation succeeded
+     * @return true if the operation succeeded
      * @stable ICU 4.8
      */
     virtual UBool reserveAppendCapacity(int32_t appendCapacity);
diff --git a/icu4c/source/common/unicode/brkiter.h b/icu4c/source/common/unicode/brkiter.h
index b944497..9bba5fc 100644
--- a/icu4c/source/common/unicode/brkiter.h
+++ b/icu4c/source/common/unicode/brkiter.h
@@ -564,7 +564,7 @@
      * BreakIterator::createXXXInstance to avoid undefined behavior.
      * @param key the registry key returned by a previous call to registerInstance
      * @param status the in/out status code, no special meanings are assigned
-     * @return TRUE if the iterator for the key was successfully unregistered
+     * @return true if the iterator for the key was successfully unregistered
      * @stable ICU 2.4
      */
     static UBool U_EXPORT2 unregister(URegistryKey key, UErrorCode& status);
@@ -655,7 +655,7 @@
 
 inline UBool BreakIterator::isBufferClone()
 {
-    return FALSE;
+    return false;
 }
 
 #endif /* U_HIDE_DEPRECATED_API */
diff --git a/icu4c/source/common/unicode/bytestream.h b/icu4c/source/common/unicode/bytestream.h
index 7fe2406..044f7a7 100644
--- a/icu4c/source/common/unicode/bytestream.h
+++ b/icu4c/source/common/unicode/bytestream.h
@@ -197,7 +197,7 @@
    * Returns the sink to its original state, without modifying the buffer.
    * Useful for reusing both the buffer and the sink for multiple streams.
    * Resets the state to NumberOfBytesWritten()=NumberOfBytesAppended()=0
-   * and Overflowed()=FALSE.
+   * and Overflowed()=false.
    * @return *this
    * @stable ICU 4.6
    */
@@ -236,7 +236,7 @@
   /**
    * Returns true if any bytes were discarded, i.e., if there was an
    * attempt to write more than 'capacity' bytes.
-   * @return TRUE if more than 'capacity' bytes were Append()ed
+   * @return true if more than 'capacity' bytes were Append()ed
    * @stable ICU 4.2
    */
   UBool Overflowed() const { return overflowed_; }
diff --git a/icu4c/source/common/unicode/bytestrie.h b/icu4c/source/common/unicode/bytestrie.h
index 51405f6..85f802d 100644
--- a/icu4c/source/common/unicode/bytestrie.h
+++ b/icu4c/source/common/unicode/bytestrie.h
@@ -97,14 +97,13 @@
         return *this;
     }
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns the state of this trie as a 64-bit integer.
      * The state value is never 0.
      *
      * @return opaque state value
      * @see resetToState64
-     * @draft ICU 65
+     * @stable ICU 65
      */
     uint64_t getState64() const {
         return (static_cast<uint64_t>(remainingMatchLength_ + 2) << kState64RemainingShift) |
@@ -123,14 +122,13 @@
      * @see getState64
      * @see resetToState
      * @see reset
-     * @draft ICU 65
+     * @stable ICU 65
      */
     BytesTrie &resetToState64(uint64_t state) {
         remainingMatchLength_ = static_cast<int32_t>(state >> kState64RemainingShift) - 2;
         pos_ = bytes_ + (state & kState64PosMask);
         return *this;
     }
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * BytesTrie state object, for saving a trie's current state
@@ -253,16 +251,16 @@
     /**
      * Determines whether all byte sequences reachable from the current state
      * map to the same value.
-     * @param uniqueValue Receives the unique value, if this function returns TRUE.
+     * @param uniqueValue Receives the unique value, if this function returns true.
      *                    (output-only)
-     * @return TRUE if all byte sequences reachable from the current state
+     * @return true if all byte sequences reachable from the current state
      *         map to the same value.
      * @stable ICU 4.8
      */
     inline UBool hasUniqueValue(int32_t &uniqueValue) const {
         const uint8_t *pos=pos_;
         // Skip the rest of a pending linear-match node.
-        return pos!=NULL && findUniqueValue(pos+remainingMatchLength_+1, FALSE, uniqueValue);
+        return pos!=NULL && findUniqueValue(pos+remainingMatchLength_+1, false, uniqueValue);
     }
 
     /**
@@ -321,7 +319,7 @@
         Iterator &reset();
 
         /**
-         * @return TRUE if there are more elements.
+         * @return true if there are more elements.
          * @stable ICU 4.8
          */
         UBool hasNext() const;
@@ -337,7 +335,7 @@
          *                  pass the U_SUCCESS() test, or else the function returns
          *                  immediately. Check for U_FAILURE() on output or use with
          *                  function chaining. (See User Guide for details.)
-         * @return TRUE if there is another element.
+         * @return true if there is another element.
          * @stable ICU 4.8
          */
         UBool next(UErrorCode &errorCode);
diff --git a/icu4c/source/common/unicode/bytestriebuilder.h b/icu4c/source/common/unicode/bytestriebuilder.h
index b98374b..cae16e4 100644
--- a/icu4c/source/common/unicode/bytestriebuilder.h
+++ b/icu4c/source/common/unicode/bytestriebuilder.h
@@ -101,9 +101,10 @@
      * Multiple calls to buildStringPiece() return StringPieces referring to the
      * builder's same byte array, without rebuilding.
      * If buildStringPiece() is called after build(), the trie will be
-     * re-serialized into a new array.
-     * If build() is called after buildStringPiece(), the trie object will become
-     * the owner of the previously returned array.
+     * re-serialized into a new array (because build() passes on ownership).
+     * If build() is called after buildStringPiece(), the trie object returned
+     * by build() will become the owner of the underlying string for the
+     * previously returned StringPiece.
      * After clear() has been called, a new array will be used as well.
      * @param buildOption Build option, see UStringTrieBuildOption.
      * @param errorCode Standard ICU error code. Its input value must
@@ -139,7 +140,7 @@
     virtual int32_t skipElementsBySomeUnits(int32_t i, int32_t byteIndex, int32_t count) const;
     virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t byteIndex, char16_t byte) const;
 
-    virtual UBool matchNodesCanHaveValues() const { return FALSE; }
+    virtual UBool matchNodesCanHaveValues() const { return false; }
 
     virtual int32_t getMaxBranchLinearSubNodeLength() const { return BytesTrie::kMaxBranchLinearSubNodeLength; }
     virtual int32_t getMinLinearMatch() const { return BytesTrie::kMinLinearMatch; }
diff --git a/icu4c/source/common/unicode/caniter.h b/icu4c/source/common/unicode/caniter.h
index 13e524f..4ed2b74 100644
--- a/icu4c/source/common/unicode/caniter.h
+++ b/icu4c/source/common/unicode/caniter.h
@@ -25,11 +25,11 @@
  */
  
 /** Should permutation skip characters with combining class zero
- *  Should be either TRUE or FALSE. This is a compile time option
+ *  Should be either true or false. This is a compile time option
  *  @stable ICU 2.4
  */
 #ifndef CANITER_SKIP_ZEROES
-#define CANITER_SKIP_ZEROES TRUE
+#define CANITER_SKIP_ZEROES true
 #endif
 
 U_NAMESPACE_BEGIN
diff --git a/icu4c/source/common/unicode/chariter.h b/icu4c/source/common/unicode/chariter.h
index db86f79..96dc5db 100644
--- a/icu4c/source/common/unicode/chariter.h
+++ b/icu4c/source/common/unicode/chariter.h
@@ -65,7 +65,7 @@
  * check for the end of the iteration. When there are no more
  * characters in the text object:
  * <ul>
- * <li>The hasNext() function returns FALSE.</li>
+ * <li>The hasNext() function returns false.</li>
  * <li>nextPostInc() and next32PostInc() return DONE
  *     when one attempts to read beyond the end of the text object.</li>
  * </ul>
@@ -165,11 +165,11 @@
     virtual UChar32       next32PostInc(void) = 0;
     
     /**
-     * Returns FALSE if there are no more code units or code points
+     * Returns false if there are no more code units or code points
      * at or after the current position in the iteration range.
      * This is used with nextPostInc() or next32PostInc() in forward
      * iteration.
-     * @returns FALSE if there are no more code units or code points
+     * @returns false if there are no more code units or code points
      * at or after the current position in the iteration range.
      * @stable ICU 2.0
      */
@@ -535,12 +535,12 @@
     virtual UChar32       previous32(void) = 0;
 
     /**
-     * Returns FALSE if there are no more code units or code points
+     * Returns false if there are no more code units or code points
      * before the current position in the iteration range.
      * This is used with previous() or previous32() in backward
      * iteration.
-     * @return FALSE if there are no more code units or code points
-     * before the current position in the iteration range, return TRUE otherwise.
+     * @return false if there are no more code units or code points
+     * before the current position in the iteration range, return true otherwise.
      * @stable ICU 2.0
      */
     virtual UBool        hasPrevious() = 0;
diff --git a/icu4c/source/common/unicode/docmain.h b/icu4c/source/common/unicode/docmain.h
index 704139a..edcb5d4 100644
--- a/icu4c/source/common/unicode/docmain.h
+++ b/icu4c/source/common/unicode/docmain.h
@@ -53,10 +53,10 @@
  *
  * <h2>Architecture (User's Guide)</h2>
  * <ul>
- *   <li><a href="http://userguide.icu-project.org/">Introduction</a></li>
- *   <li><a href="http://userguide.icu-project.org/i18n">Internationalization</a></li>
- *   <li><a href="http://userguide.icu-project.org/design">Locale Model, Multithreading, Error Handling, etc.</a></li>
- *   <li><a href="http://userguide.icu-project.org/conversion">Conversion</a></li>
+ *   <li><a href="https://unicode-org.github.io/icu/userguide/">Introduction</a></li>
+ *   <li><a href="https://unicode-org.github.io/icu/userguide/i18n">Internationalization</a></li>
+ *   <li><a href="https://unicode-org.github.io/icu/userguide/design">Locale Model, Multithreading, Error Handling, etc.</a></li>
+ *   <li><a href="https://unicode-org.github.io/icu/userguide/conversion">Conversion</a></li>
  * </ul>
  *
  * <hr>
@@ -143,13 +143,18 @@
  *     <td>icu::MessageFormat</td>
  *   </tr>
  *   <tr>
+ *     <td>List Formatting</td>
+ *     <td>ulistformatter.h</td>
+ *     <td>icu::ListFormatter</td>
+ *   </tr>
+ *   <tr>
  *     <td>Number Formatting<br/>(includes currency and unit formatting)</td>
  *     <td>unumberformatter.h, unum.h</td>
  *     <td>icu::number::NumberFormatter (ICU 60+) or icu::NumberFormat (older versions)</td>
  *   </tr>
  *   <tr>
  *     <td>Number Range Formatting<br />(includes currency and unit ranges)</td>
- *     <td>(no C API)</td>
+ *     <td>unumberrangeformatter.h</td>
  *     <td>icu::number::NumberRangeFormatter</td>
  *   </tr>
  *   <tr>
diff --git a/icu4c/source/common/unicode/dtintrv.h b/icu4c/source/common/unicode/dtintrv.h
index 15e15c9..4f4b6bf 100644
--- a/icu4c/source/common/unicode/dtintrv.h
+++ b/icu4c/source/common/unicode/dtintrv.h
@@ -106,14 +106,14 @@
 
     /**
      * Equality operator.
-     * @return TRUE if the two DateIntervals are the same
+     * @return true if the two DateIntervals are the same
      * @stable ICU 4.0
      */
     virtual UBool operator==(const DateInterval& other) const;
 
     /**
      * Non-equality operator
-     * @return TRUE if the two DateIntervals are not the same
+     * @return true if the two DateIntervals are not the same
      * @stable ICU 4.0
      */
     inline UBool operator!=(const DateInterval& other) const;
diff --git a/icu4c/source/common/unicode/edits.h b/icu4c/source/common/unicode/edits.h
index c3ceacc..bfa07fa 100644
--- a/icu4c/source/common/unicode/edits.h
+++ b/icu4c/source/common/unicode/edits.h
@@ -159,7 +159,7 @@
      * @param outErrorCode Set to an error code if it does not contain one already
      *                  and an error occurred while recording edits.
      *                  Otherwise unchanged.
-     * @return TRUE if U_FAILURE(outErrorCode)
+     * @return true if U_FAILURE(outErrorCode)
      * @stable ICU 59
      */
     UBool copyErrorTo(UErrorCode &outErrorCode) const;
@@ -171,7 +171,7 @@
      */
     int32_t lengthDelta() const { return delta; }
     /**
-     * @return TRUE if there are any change edits
+     * @return true if there are any change edits
      * @stable ICU 59
      */
     UBool hasChanges() const { return numChanges != 0; }
@@ -207,8 +207,8 @@
          */
         Iterator() :
                 array(nullptr), index(0), length(0),
-                remaining(0), onlyChanges_(FALSE), coarse(FALSE),
-                dir(0), changed(FALSE), oldLength_(0), newLength_(0),
+                remaining(0), onlyChanges_(false), coarse(false),
+                dir(0), changed(false), oldLength_(0), newLength_(0),
                 srcIndex(0), replIndex(0), destIndex(0) {}
         /**
          * Copy constructor.
@@ -226,7 +226,7 @@
          * @param errorCode ICU error code. Its input value must pass the U_SUCCESS() test,
          *                  or else the function returns immediately. Check for U_FAILURE()
          *                  on output or use with function chaining. (See User Guide for details.)
-         * @return TRUE if there is another edit
+         * @return true if there is another edit
          * @stable ICU 59
          */
         UBool next(UErrorCode &errorCode) { return next(onlyChanges_, errorCode); }
@@ -247,11 +247,11 @@
          * @param errorCode ICU error code. Its input value must pass the U_SUCCESS() test,
          *                  or else the function returns immediately. Check for U_FAILURE()
          *                  on output or use with function chaining. (See User Guide for details.)
-         * @return TRUE if the edit for the source index was found
+         * @return true if the edit for the source index was found
          * @stable ICU 59
          */
         UBool findSourceIndex(int32_t i, UErrorCode &errorCode) {
-            return findIndex(i, TRUE, errorCode) == 0;
+            return findIndex(i, true, errorCode) == 0;
         }
 
         /**
@@ -270,11 +270,11 @@
          * @param errorCode ICU error code. Its input value must pass the U_SUCCESS() test,
          *                  or else the function returns immediately. Check for U_FAILURE()
          *                  on output or use with function chaining. (See User Guide for details.)
-         * @return TRUE if the edit for the destination index was found
+         * @return true if the edit for the destination index was found
          * @stable ICU 60
          */
         UBool findDestinationIndex(int32_t i, UErrorCode &errorCode) {
-            return findIndex(i, FALSE, errorCode) == 0;
+            return findIndex(i, false, errorCode) == 0;
         }
 
         /**
@@ -328,8 +328,8 @@
         /**
          * Returns whether the edit currently represented by the iterator is a change edit.
          *
-         * @return TRUE if this edit replaces oldLength() units with newLength() different ones.
-         *         FALSE if oldLength units remain unchanged.
+         * @return true if this edit replaces oldLength() units with newLength() different ones.
+         *         false if oldLength units remain unchanged.
          * @stable ICU 59
          */
         UBool hasChange() const { return changed; }
@@ -347,8 +347,8 @@
          * {@link #destinationIndex}, or in the replacement string, which starts at
          * {@link #replacementIndex}.
          *
-         * @return the number of units in the modified string, if hasChange() is TRUE.
-         *         Same as oldLength if hasChange() is FALSE.
+         * @return the number of units in the modified string, if hasChange() is true.
+         *         Same as oldLength if hasChange() is false.
          * @stable ICU 59
          */
         int32_t newLength() const { return newLength_; }
@@ -436,7 +436,7 @@
      * @stable ICU 59
      */
     Iterator getCoarseChangesIterator() const {
-        return Iterator(array, length, TRUE, TRUE);
+        return Iterator(array, length, true, true);
     }
 
     /**
@@ -448,7 +448,7 @@
      * @stable ICU 59
      */
     Iterator getCoarseIterator() const {
-        return Iterator(array, length, FALSE, TRUE);
+        return Iterator(array, length, false, true);
     }
 
     /**
@@ -460,7 +460,7 @@
      * @stable ICU 59
      */
     Iterator getFineChangesIterator() const {
-        return Iterator(array, length, TRUE, FALSE);
+        return Iterator(array, length, true, false);
     }
 
     /**
@@ -471,7 +471,7 @@
      * @stable ICU 59
      */
     Iterator getFineIterator() const {
-        return Iterator(array, length, FALSE, FALSE);
+        return Iterator(array, length, false, false);
     }
 
     /**
diff --git a/icu4c/source/common/unicode/filteredbrk.h b/icu4c/source/common/unicode/filteredbrk.h
index 4293676..8b07e39 100644
--- a/icu4c/source/common/unicode/filteredbrk.h
+++ b/icu4c/source/common/unicode/filteredbrk.h
@@ -85,8 +85,8 @@
    * by the iterator.
    * @param string the string to suppress, such as "Mr."
    * @param status error code
-   * @return returns TRUE if the string was not present and now added,
-   * FALSE if the call was a no-op because the string was already being suppressed.
+   * @return returns true if the string was not present and now added,
+   * false if the call was a no-op because the string was already being suppressed.
    * @stable ICU 56
    */
   virtual UBool suppressBreakAfter(const UnicodeString& string, UErrorCode& status) = 0;
@@ -98,8 +98,8 @@
    * locale data which may be suppressing certain strings.
    * @param string the exception to remove
    * @param status error code
-   * @return returns TRUE if the string was present and now removed,
-   * FALSE if the call was a no-op because the string was not being suppressed.
+   * @return returns true if the string was present and now removed,
+   * false if the call was a no-op because the string was not being suppressed.
    * @stable ICU 56
    */
   virtual UBool unsuppressBreakAfter(const UnicodeString& string, UErrorCode& status) = 0;
diff --git a/icu4c/source/common/unicode/icudataver.h b/icu4c/source/common/unicode/icudataver.h
index 1cb202e..f218ed8 100644
--- a/icu4c/source/common/unicode/icudataver.h
+++ b/icu4c/source/common/unicode/icudataver.h
@@ -38,6 +38,6 @@
  * 
  * @stable ICU 49
  */
-U_STABLE void U_EXPORT2 u_getDataVersion(UVersionInfo dataVersionFillin, UErrorCode *status);
+U_CAPI void U_EXPORT2 u_getDataVersion(UVersionInfo dataVersionFillin, UErrorCode *status);
 
 #endif
diff --git a/icu4c/source/common/unicode/icuplug.h b/icu4c/source/common/unicode/icuplug.h
index 2e57b14..52f810d 100644
--- a/icu4c/source/common/unicode/icuplug.h
+++ b/icu4c/source/common/unicode/icuplug.h
@@ -208,7 +208,7 @@
  * @param dontUnload  set true if this plugin can't be unloaded
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uplug_setPlugNoUnload(UPlugData *plug, UBool dontUnload);
 
 /**
@@ -217,7 +217,7 @@
  * @param level the level of this plugin
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 uplug_setPlugLevel(UPlugData *plug, UPlugLevel level);
 
 /**
@@ -226,7 +226,7 @@
  * @return the level of this plugin
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL UPlugLevel U_EXPORT2
+U_CAPI UPlugLevel U_EXPORT2
 uplug_getPlugLevel(UPlugData *plug);
 
 /**
@@ -236,7 +236,7 @@
  * @return the lowest level of plug which can currently load
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL UPlugLevel U_EXPORT2
+U_CAPI UPlugLevel U_EXPORT2
 uplug_getCurrentLevel(void);
 
 
@@ -245,7 +245,7 @@
  * @return The error code of this plugin's load attempt.
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL UErrorCode U_EXPORT2
+U_CAPI UErrorCode U_EXPORT2
 uplug_getPlugLoadStatus(UPlugData *plug); 
 
 /**
@@ -254,7 +254,7 @@
  * @param name the name of this plugin. The first UPLUG_NAME_MAX characters willi be copied into a new buffer.
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 uplug_setPlugName(UPlugData *plug, const char *name);
 
 /**
@@ -263,7 +263,7 @@
  * @return the name of this plugin
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 uplug_getPlugName(UPlugData *plug);
 
 /**
@@ -272,7 +272,7 @@
  * @return the symbol name, or NULL
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 uplug_getSymbolName(UPlugData *plug);
 
 /**
@@ -282,7 +282,7 @@
  * @return the library name, or NULL
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 uplug_getLibraryName(UPlugData *plug, UErrorCode *status);
 
 /**
@@ -292,7 +292,7 @@
  * @return the library, or NULL
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL void * U_EXPORT2
+U_CAPI void * U_EXPORT2
 uplug_getLibrary(UPlugData *plug);
 
 /**
@@ -301,7 +301,7 @@
  * @return the context, or NULL if not set
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL void * U_EXPORT2
+U_CAPI void * U_EXPORT2
 uplug_getContext(UPlugData *plug);
 
 /**
@@ -310,7 +310,7 @@
  * @param context new context to set
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 uplug_setContext(UPlugData *plug, void *context);
 
 
@@ -321,7 +321,7 @@
  * @return configuration string, or else null.
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 uplug_getConfiguration(UPlugData *plug);
 
 /**
@@ -339,7 +339,7 @@
  * @return the next oldest plugin, or NULL if no more.
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL UPlugData* U_EXPORT2
+U_CAPI UPlugData* U_EXPORT2
 uplug_nextPlug(UPlugData *prior);
 
 /**
@@ -354,7 +354,7 @@
  * @return the new UPlugData associated with this plugin, or NULL if error.
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL UPlugData* U_EXPORT2
+U_CAPI UPlugData* U_EXPORT2
 uplug_loadPlugFromEntrypoint(UPlugEntrypoint *entrypoint, const char *config, UErrorCode *status);
 
 
@@ -368,7 +368,7 @@
  * @return the new UPlugData associated with this plugin, or NULL if error.
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL UPlugData* U_EXPORT2
+U_CAPI UPlugData* U_EXPORT2
 uplug_loadPlugFromLibrary(const char *libName, const char *sym, const char *config, UErrorCode *status);
 
 /**
@@ -378,7 +378,7 @@
  * @param status error result
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 uplug_removePlug(UPlugData *plug, UErrorCode *status);
 #endif  /* U_HIDE_INTERNAL_API */
 
diff --git a/icu4c/source/common/unicode/idna.h b/icu4c/source/common/unicode/idna.h
index 6dfcfe4..1305dc6 100644
--- a/icu4c/source/common/unicode/idna.h
+++ b/icu4c/source/common/unicode/idna.h
@@ -95,7 +95,7 @@
 
     /**
      * Converts a single domain name label into its ASCII form for DNS lookup.
-     * If any processing step fails, then info.hasErrors() will be TRUE and
+     * If any processing step fails, then info.hasErrors() will be true and
      * the result might not be an ASCII string.
      * The label might be modified according to the types of errors.
      * Labels with severe errors will be left in (or turned into) their Unicode form.
@@ -119,7 +119,7 @@
 
     /**
      * Converts a single domain name label into its Unicode form for human-readable display.
-     * If any processing step fails, then info.hasErrors() will be TRUE.
+     * If any processing step fails, then info.hasErrors() will be true.
      * The label might be modified according to the types of errors.
      *
      * The UErrorCode indicates an error only in exceptional cases,
@@ -141,7 +141,7 @@
 
     /**
      * Converts a whole domain name into its ASCII form for DNS lookup.
-     * If any processing step fails, then info.hasErrors() will be TRUE and
+     * If any processing step fails, then info.hasErrors() will be true and
      * the result might not be an ASCII string.
      * The domain name might be modified according to the types of errors.
      * Labels with severe errors will be left in (or turned into) their Unicode form.
@@ -165,7 +165,7 @@
 
     /**
      * Converts a whole domain name into its Unicode form for human-readable display.
-     * If any processing step fails, then info.hasErrors() will be TRUE.
+     * If any processing step fails, then info.hasErrors() will be true.
      * The domain name might be modified according to the types of errors.
      *
      * The UErrorCode indicates an error only in exceptional cases,
@@ -273,10 +273,10 @@
      * Constructor for stack allocation.
      * @stable ICU 4.6
      */
-    IDNAInfo() : errors(0), labelErrors(0), isTransDiff(FALSE), isBiDi(FALSE), isOkBiDi(TRUE) {}
+    IDNAInfo() : errors(0), labelErrors(0), isTransDiff(false), isBiDi(false), isOkBiDi(true) {}
     /**
      * Were there IDNA processing errors?
-     * @return TRUE if there were processing errors
+     * @return true if there were processing errors
      * @stable ICU 4.6
      */
     UBool hasErrors() const { return errors!=0; }
@@ -288,7 +288,7 @@
      */
     uint32_t getErrors() const { return errors; }
     /**
-     * Returns TRUE if transitional and nontransitional processing produce different results.
+     * Returns true if transitional and nontransitional processing produce different results.
      * This is the case when the input label or domain name contains
      * one or more deviation characters outside a Punycode label (see UTS #46).
      * <ul>
@@ -297,7 +297,7 @@
      * <li>With transitional processing, such characters are
      * mapped (sharp s/sigma) or removed (joiner/nonjoiner).
      * </ul>
-     * @return TRUE if transitional and nontransitional processing produce different results
+     * @return true if transitional and nontransitional processing produce different results
      * @stable ICU 4.6
      */
     UBool isTransitionalDifferent() const { return isTransDiff; }
@@ -310,9 +310,9 @@
 
     void reset() {
         errors=labelErrors=0;
-        isTransDiff=FALSE;
-        isBiDi=FALSE;
-        isOkBiDi=TRUE;
+        isTransDiff=false;
+        isBiDi=false;
+        isOkBiDi=true;
     }
 
     uint32_t errors, labelErrors;
diff --git a/icu4c/source/common/unicode/localebuilder.h b/icu4c/source/common/unicode/localebuilder.h
index c5836fe..27a894d 100644
--- a/icu4c/source/common/unicode/localebuilder.h
+++ b/icu4c/source/common/unicode/localebuilder.h
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 #ifndef __LOCALEBUILDER_H__
 #define __LOCALEBUILDER_H__
 
@@ -92,11 +92,12 @@
     /**
      * Resets the LocaleBuilder to match the provided
      * [Unicode Locale Identifier](http://www.unicode.org/reports/tr35/tr35.html#unicode_locale_id) .
-     * Discards the existing state. the empty string cause the builder to be
-     * reset, like {@link #clear}.  Grandfathered tags are converted to their
-     * canonical form before being processed.  Otherwise, the <code>language
-     * tag</code> must be well-formed, or else the build() method will later
-     * report an U_ILLEGAL_ARGUMENT_ERROR.
+     * Discards the existing state.
+     * The empty string causes the builder to be reset, like {@link #clear}.
+     * Legacy language tags (marked as “Type: grandfathered” in BCP 47)
+     * are converted to their canonical form before being processed.
+     * Otherwise, the <code>language tag</code> must be well-formed,
+     * or else the build() method will later report an U_ILLEGAL_ARGUMENT_ERROR.
      *
      * <p>This method clears the internal UErrorCode.
      *
@@ -278,18 +279,16 @@
      */
     Locale build(UErrorCode& status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Sets the UErrorCode if an error occurred while recording sets.
      * Preserves older error codes in the outErrorCode.
      * @param outErrorCode Set to an error code that occurred while setting subtags.
      *                  Unchanged if there is no such error or if outErrorCode
      *                  already contained an error.
-     * @return TRUE if U_FAILURE(outErrorCode)
-     * @draft ICU 65
+     * @return true if U_FAILURE(outErrorCode)
+     * @stable ICU 65
      */
     UBool copyErrorTo(UErrorCode &outErrorCode) const;
-#endif  /* U_HIDE_DRAFT_API */
 
 private:
     friend class LocaleMatcher::Result;
diff --git a/icu4c/source/common/unicode/localematcher.h b/icu4c/source/common/unicode/localematcher.h
index 2e1a7a3..63a68b0 100644
--- a/icu4c/source/common/unicode/localematcher.h
+++ b/icu4c/source/common/unicode/localematcher.h
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // localematcher.h
 // created: 2019may08 Markus W. Scherer
@@ -20,26 +20,24 @@
  * \brief C++ API: Locale matcher: User's desired locales vs. application's supported locales.
  */
 
-#ifndef U_FORCE_HIDE_DRAFT_API
-
 /**
  * Builder option for whether the language subtag or the script subtag is most important.
  *
- * @see Builder#setFavorSubtag(ULocMatchFavorSubtag)
- * @draft ICU 65
+ * @see LocaleMatcher::Builder#setFavorSubtag(ULocMatchFavorSubtag)
+ * @stable ICU 65
  */
 enum ULocMatchFavorSubtag {
     /**
      * Language differences are most important, then script differences, then region differences.
      * (This is the default behavior.)
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     ULOCMATCH_FAVOR_LANGUAGE,
     /**
      * Makes script differences matter relatively more than language differences.
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     ULOCMATCH_FAVOR_SCRIPT
 };
@@ -51,14 +49,14 @@
  * Builder option for whether all desired locales are treated equally or
  * earlier ones are preferred.
  *
- * @see Builder#setDemotionPerDesiredLocale(ULocMatchDemotion)
- * @draft ICU 65
+ * @see LocaleMatcher::Builder#setDemotionPerDesiredLocale(ULocMatchDemotion)
+ * @stable ICU 65
  */
 enum ULocMatchDemotion {
     /**
      * All desired locales are treated equally.
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     ULOCMATCH_DEMOTION_NONE,
     /**
@@ -85,7 +83,7 @@
      *        this is possible in future versions of the data.)
      * </ul>
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     ULOCMATCH_DEMOTION_REGION
 };
@@ -93,6 +91,8 @@
 typedef enum ULocMatchDemotion ULocMatchDemotion;
 #endif
 
+#ifndef U_FORCE_HIDE_DRAFT_API
+
 /**
  * Builder option for whether to include or ignore one-way (fallback) match data.
  * The LocaleMatcher uses CLDR languageMatch data which includes fallback (oneway=true) entries.
@@ -107,7 +107,7 @@
  * if there is a decent match for the original UI language, we want to use it,
  * but not if it is merely a fallback.
  *
- * @see Builder#setDirection(ULocMatchDirection)
+ * @see LocaleMatcher::Builder#setDirection(ULocMatchDirection)
  * @draft ICU 67
  */
 enum ULocMatchDirection {
@@ -129,6 +129,8 @@
 typedef enum ULocMatchDirection ULocMatchDirection;
 #endif
 
+#endif  // U_FORCE_HIDE_DRAFT_API
+
 struct UHashtable;
 
 U_NAMESPACE_BEGIN
@@ -181,7 +183,7 @@
  *
  * <p>This class is not intended for public subclassing.
  *
- * @draft ICU 65
+ * @stable ICU 65
  */
 class U_COMMON_API LocaleMatcher : public UMemory {
 public:
@@ -189,7 +191,7 @@
      * Data for the best-matching pair of a desired and a supported locale.
      * Movable but not copyable.
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     class U_COMMON_API Result : public UMemory {
     public:
@@ -198,14 +200,14 @@
          * This object will have the same contents that the source object had.
          *
          * @param src Result to move contents from.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Result(Result &&src) U_NOEXCEPT;
 
         /**
          * Destructor.
          *
-         * @draft ICU 65
+         * @stable ICU 65
          */
         ~Result();
 
@@ -214,28 +216,27 @@
          * This object will have the same contents that the source object had.
          *
          * @param src Result to move contents from.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Result &operator=(Result &&src) U_NOEXCEPT;
 
-#ifndef U_HIDE_DRAFT_API
         /**
          * Returns the best-matching desired locale.
          * nullptr if the list of desired locales is empty or if none matched well enough.
          *
          * @return the best-matching desired locale, or nullptr.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         inline const Locale *getDesiredLocale() const { return desiredLocale; }
 
         /**
          * Returns the best-matching supported locale.
          * If none matched well enough, this is the default locale.
-         * The default locale is nullptr if the list of supported locales is empty and
-         * no explicit default locale is set.
+         * The default locale is nullptr if Builder::setNoDefaultLocale() was called,
+         * or if the list of supported locales is empty and no explicit default locale is set.
          *
          * @return the best-matching supported locale, or nullptr.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         inline const Locale *getSupportedLocale() const { return supportedLocale; }
 
@@ -244,7 +245,7 @@
          * -1 if the list of desired locales is empty or if none matched well enough.
          *
          * @return the index of the best-matching desired locale, or -1.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         inline int32_t getDesiredIndex() const { return desiredIndex; }
 
@@ -256,7 +257,7 @@
          * -1 if the list of supported locales is empty or if none matched well enough.
          *
          * @return the index of the best-matching supported locale, or -1.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         inline int32_t getSupportedIndex() const { return supportedIndex; }
 
@@ -270,10 +271,9 @@
          * <p>Example: desired=ar-SA-u-nu-latn, supported=ar-EG, resolved locale=ar-SA-u-nu-latn
          *
          * @return a locale combining the best-matching desired and supported locales.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Locale makeResolvedLocale(UErrorCode &errorCode) const;
-#endif  // U_HIDE_DRAFT_API
 
     private:
         Result(const Locale *desired, const Locale *supported,
@@ -298,8 +298,7 @@
      * LocaleMatcher builder.
      * Movable but not copyable.
      *
-     * @see LocaleMatcher#builder()
-     * @draft ICU 65
+     * @stable ICU 65
      */
     class U_COMMON_API Builder : public UMemory {
     public:
@@ -307,7 +306,7 @@
          * Constructs a builder used in chaining parameters for building a LocaleMatcher.
          *
          * @return a new Builder object
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Builder() {}
 
@@ -316,14 +315,14 @@
          * This builder will have the same contents that the source builder had.
          *
          * @param src Builder to move contents from.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Builder(Builder &&src) U_NOEXCEPT;
 
         /**
          * Destructor.
          *
-         * @draft ICU 65
+         * @stable ICU 65
          */
         ~Builder();
 
@@ -332,11 +331,10 @@
          * This builder will have the same contents that the source builder had.
          *
          * @param src Builder to move contents from.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Builder &operator=(Builder &&src) U_NOEXCEPT;
 
-#ifndef U_HIDE_DRAFT_API
         /**
          * Parses an Accept-Language string
          * (<a href="https://tools.ietf.org/html/rfc2616#section-14.4">RFC 2616 Section 14.4</a>),
@@ -346,7 +344,7 @@
          *
          * @param locales the Accept-Language string of locales to set
          * @return this Builder object
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Builder &setSupportedLocalesFromListString(StringPiece locales);
 
@@ -357,7 +355,7 @@
          *
          * @param locales the list of locale
          * @return this Builder object
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Builder &setSupportedLocales(Locale::Iterator &locales);
 
@@ -372,7 +370,7 @@
          * @param begin Start of range.
          * @param end Exclusive end of range.
          * @return this Builder object
-         * @draft ICU 65
+         * @stable ICU 65
          */
         template<typename Iter>
         Builder &setSupportedLocales(Iter begin, Iter end) {
@@ -397,7 +395,7 @@
          * @param end Exclusive end of range.
          * @param converter Converter from *begin to const Locale & or compatible.
          * @return this Builder object
-         * @draft ICU 65
+         * @stable ICU 65
          */
         template<typename Iter, typename Conv>
         Builder &setSupportedLocalesViaConverter(Iter begin, Iter end, Conv converter) {
@@ -415,17 +413,31 @@
          *
          * @param locale another locale
          * @return this Builder object
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Builder &addSupportedLocale(const Locale &locale);
 
+#ifndef U_HIDE_DRAFT_API
+        /**
+         * Sets no default locale.
+         * There will be no explicit or implicit default locale.
+         * If there is no good match, then the matcher will return nullptr for the
+         * best supported locale.
+         *
+         * @draft ICU 68
+         */
+        Builder &setNoDefaultLocale();
+#endif  // U_HIDE_DRAFT_API
+
         /**
          * Sets the default locale; if nullptr, or if it is not set explicitly,
          * then the first supported locale is used as the default locale.
+         * There is no default locale at all (nullptr will be returned instead)
+         * if setNoDefaultLocale() is called.
          *
          * @param defaultLocale the default locale (will be copied)
          * @return this Builder object
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Builder &setDefaultLocale(const Locale *defaultLocale);
 
@@ -437,7 +449,7 @@
          *
          * @param subtag the subtag to favor
          * @return this Builder object
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Builder &setFavorSubtag(ULocMatchFavorSubtag subtag);
 
@@ -447,10 +459,11 @@
          *
          * @param demotion the demotion per desired locale to set.
          * @return this Builder object
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Builder &setDemotionPerDesiredLocale(ULocMatchDemotion demotion);
 
+#ifndef U_HIDE_DRAFT_API
         /**
          * Option for whether to include or ignore one-way (fallback) match data.
          * By default, they are included.
@@ -465,6 +478,32 @@
             }
             return *this;
         }
+#endif  // U_HIDE_DRAFT_API
+
+#ifndef U_HIDE_DRAFT_API
+        /**
+         * Sets the maximum distance for an acceptable match.
+         * The matcher will return a match for a pair of locales only if
+         * they match at least as well as the pair given here.
+         *
+         * For example, setMaxDistance(en-US, en-GB) limits matches to ones where the
+         * (desired, support) locales have a distance no greater than a region subtag difference.
+         * This is much stricter than the CLDR default.
+         *
+         * The details of locale matching are subject to changes in
+         * CLDR data and in the algorithm.
+         * Specifying a maximum distance in relative terms via a sample pair of locales
+         * insulates from changes that affect all distance metrics similarly,
+         * but some changes will necessarily affect relative distances between
+         * different pairs of locales.
+         *
+         * @param desired the desired locale for distance comparison.
+         * @param supported the supported locale for distance comparison.
+         * @return this Builder object
+         * @draft ICU 68
+         */
+        Builder &setMaxDistance(const Locale &desired, const Locale &supported);
+#endif  // U_HIDE_DRAFT_API
 
         /**
          * Sets the UErrorCode if an error occurred while setting parameters.
@@ -473,8 +512,8 @@
          * @param outErrorCode Set to an error code if it does not contain one already
          *                  and an error occurred while setting parameters.
          *                  Otherwise unchanged.
-         * @return TRUE if U_FAILURE(outErrorCode)
-         * @draft ICU 65
+         * @return true if U_FAILURE(outErrorCode)
+         * @stable ICU 65
          */
         UBool copyErrorTo(UErrorCode &outErrorCode) const;
 
@@ -485,11 +524,10 @@
          * @param errorCode ICU error code. Its input value must pass the U_SUCCESS() test,
          *                  or else the function returns immediately. Check for U_FAILURE()
          *                  on output or use with function chaining. (See User Guide for details.)
-         * @return new LocaleMatcher.
-         * @draft ICU 65
+         * @return LocaleMatcher
+         * @stable ICU 65
          */
         LocaleMatcher build(UErrorCode &errorCode) const;
-#endif  // U_HIDE_DRAFT_API
 
     private:
         friend class LocaleMatcher;
@@ -505,8 +543,11 @@
         int32_t thresholdDistance_ = -1;
         ULocMatchDemotion demotion_ = ULOCMATCH_DEMOTION_REGION;
         Locale *defaultLocale_ = nullptr;
+        bool withDefault_ = true;
         ULocMatchFavorSubtag favor_ = ULOCMATCH_FAVOR_LANGUAGE;
         ULocMatchDirection direction_ = ULOCMATCH_DIRECTION_WITH_ONE_WAY;
+        Locale *maxDistanceDesired_ = nullptr;
+        Locale *maxDistanceSupported_ = nullptr;
     };
 
     // FYI No public LocaleMatcher constructors in C++; use the Builder.
@@ -515,13 +556,13 @@
      * Move copy constructor; might modify the source.
      * This matcher will have the same settings that the source matcher had.
      * @param src source matcher
-     * @draft ICU 65
+     * @stable ICU 65
      */
     LocaleMatcher(LocaleMatcher &&src) U_NOEXCEPT;
 
     /**
      * Destructor.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     ~LocaleMatcher();
 
@@ -531,11 +572,10 @@
      * The behavior is undefined if *this and src are the same object.
      * @param src source matcher
      * @return *this
-     * @draft ICU 65
+     * @stable ICU 65
      */
     LocaleMatcher &operator=(LocaleMatcher &&src) U_NOEXCEPT;
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns the supported locale which best matches the desired locale.
      *
@@ -544,7 +584,7 @@
      *                  or else the function returns immediately. Check for U_FAILURE()
      *                  on output or use with function chaining. (See User Guide for details.)
      * @return the best-matching supported locale.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     const Locale *getBestMatch(const Locale &desiredLocale, UErrorCode &errorCode) const;
 
@@ -556,7 +596,7 @@
      *                  or else the function returns immediately. Check for U_FAILURE()
      *                  on output or use with function chaining. (See User Guide for details.)
      * @return the best-matching supported locale.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     const Locale *getBestMatch(Locale::Iterator &desiredLocales, UErrorCode &errorCode) const;
 
@@ -572,7 +612,7 @@
      *                  or else the function returns immediately. Check for U_FAILURE()
      *                  on output or use with function chaining. (See User Guide for details.)
      * @return the best-matching supported locale.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     const Locale *getBestMatchForListString(StringPiece desiredLocaleList, UErrorCode &errorCode) const;
 
@@ -586,7 +626,7 @@
      *                  or else the function returns immediately. Check for U_FAILURE()
      *                  on output or use with function chaining. (See User Guide for details.)
      * @return the best-matching pair of the desired and a supported locale.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     Result getBestMatchResult(const Locale &desiredLocale, UErrorCode &errorCode) const;
 
@@ -600,9 +640,25 @@
      *                  or else the function returns immediately. Check for U_FAILURE()
      *                  on output or use with function chaining. (See User Guide for details.)
      * @return the best-matching pair of a desired and a supported locale.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     Result getBestMatchResult(Locale::Iterator &desiredLocales, UErrorCode &errorCode) const;
+
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns true if the pair of locales matches acceptably.
+     * This is influenced by Builder options such as setDirection(), setFavorSubtag(),
+     * and setMaxDistance().
+     *
+     * @param desired The desired locale.
+     * @param supported The supported locale.
+     * @param errorCode ICU error code. Its input value must pass the U_SUCCESS() test,
+     *                  or else the function returns immediately. Check for U_FAILURE()
+     *                  on output or use with function chaining. (See User Guide for details.)
+     * @return true if the pair of locales matches acceptably.
+     * @draft ICU 68
+     */
+    UBool isMatch(const Locale &desired, const Locale &supported, UErrorCode &errorCode) const;
 #endif  // U_HIDE_DRAFT_API
 
 #ifndef U_HIDE_INTERNAL_API
@@ -660,6 +716,5 @@
 
 U_NAMESPACE_END
 
-#endif  // U_FORCE_HIDE_DRAFT_API
 #endif  // U_SHOW_CPLUSPLUS_API
 #endif  // __LOCALEMATCHER_H__
diff --git a/icu4c/source/common/unicode/localpointer.h b/icu4c/source/common/unicode/localpointer.h
index 61c3020..2a65f2d 100644
--- a/icu4c/source/common/unicode/localpointer.h
+++ b/icu4c/source/common/unicode/localpointer.h
@@ -88,13 +88,13 @@
     ~LocalPointerBase() { /* delete ptr; */ }
     /**
      * NULL check.
-     * @return TRUE if ==NULL
+     * @return true if ==NULL
      * @stable ICU 4.4
      */
     UBool isNull() const { return ptr==NULL; }
     /**
      * NULL check.
-     * @return TRUE if !=NULL
+     * @return true if !=NULL
      * @stable ICU 4.4
      */
     UBool isValid() const { return ptr!=NULL; }
diff --git a/icu4c/source/common/unicode/locid.h b/icu4c/source/common/unicode/locid.h
index 1d031da..ba858d7 100644
--- a/icu4c/source/common/unicode/locid.h
+++ b/icu4c/source/common/unicode/locid.h
@@ -253,7 +253,7 @@
     /**
      * Construct a locale from language, country, variant.
      * If an error occurs, then the constructed object will be "bogus"
-     * (isBogus() will return TRUE).
+     * (isBogus() will return true).
      *
      * @param language Lowercase two-letter or three-letter ISO-639 code.
      *  This parameter can instead be an ICU style C locale (e.g. "en_US"),
@@ -393,13 +393,17 @@
      * If the specified language tag contains any ill-formed subtags,
      * the first such subtag and all following subtags are ignored.
      * <p>
-     * This implements the 'Language-Tag' production of BCP47, and so
-     * supports grandfathered (regular and irregular) as well as private
-     * use language tags.  Private use tags are represented as 'x-whatever',
-     * and grandfathered tags are converted to their canonical replacements
-     * where they exist.  Note that a few grandfathered tags have no modern
-     * replacement, these will be converted using the fallback described in
+     * This implements the 'Language-Tag' production of BCP 47, and so
+     * supports legacy language tags (marked as “Type: grandfathered” in BCP 47)
+     * (regular and irregular) as well as private use language tags.
+     *
+     * Private use tags are represented as 'x-whatever',
+     * and legacy tags are converted to their canonical replacements where they exist.
+     *
+     * Note that a few legacy tags have no modern replacement;
+     * these will be converted using the fallback described in
      * the first paragraph, so some information might be lost.
+     *
      * @param tag     the input BCP47 language tag.
      * @param status  error information if creating the Locale failed.
      * @return        the Locale for the specified BCP47 language tag.
@@ -795,14 +799,14 @@
     /**
      * Returns whether this locale's script is written right-to-left.
      * If there is no script subtag, then the likely script is used, see uloc_addLikelySubtags().
-     * If no likely script is known, then FALSE is returned.
+     * If no likely script is known, then false is returned.
      *
      * A script is right-to-left according to the CLDR script metadata
      * which corresponds to whether the script's letters have Bidi_Class=R or AL.
      *
-     * Returns TRUE for "ar" and "en-Hebr", FALSE for "zh" and "fa-Cyrl".
+     * Returns true for "ar" and "en-Hebr", false for "zh" and "fa-Cyrl".
      *
-     * @return TRUE if the locale's script is written right-to-left
+     * @return true if the locale's script is written right-to-left
      * @stable ICU 54
      */
     UBool isRightToLeft() const;
@@ -956,7 +960,7 @@
 
     /**
      * Gets the bogus state. Locale object can be bogus if it doesn't exist
-     * @return FALSE if it is a real locale, TRUE if it is a bogus locale
+     * @return false if it is a real locale, true if it is a bogus locale
      * @stable ICU 2.1
      */
     inline UBool isBogus(void) const;
@@ -1005,32 +1009,31 @@
      */
     virtual UClassID getDynamicClassID() const;
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * A Locale iterator interface similar to a Java Iterator<Locale>.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     class U_COMMON_API Iterator /* not : public UObject because this is an interface/mixin class */ {
     public:
-        /** @draft ICU 65 */
+        /** @stable ICU 65 */
         virtual ~Iterator();
 
         /**
-         * @return TRUE if next() can be called again.
-         * @draft ICU 65
+         * @return true if next() can be called again.
+         * @stable ICU 65
          */
         virtual UBool hasNext() const = 0;
 
         /**
          * @return the next locale.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         virtual const Locale &next() = 0;
     };
 
     /**
      * A generic Locale iterator implementation over Locale input iterators.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     template<typename Iter>
     class RangeIterator : public Iterator, public UMemory {
@@ -1042,19 +1045,19 @@
          *
          * @param begin Start of range.
          * @param end Exclusive end of range.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         RangeIterator(Iter begin, Iter end) : it_(begin), end_(end) {}
 
         /**
-         * @return TRUE if next() can be called again.
-         * @draft ICU 65
+         * @return true if next() can be called again.
+         * @stable ICU 65
          */
         UBool hasNext() const override { return it_ != end_; }
 
         /**
          * @return the next locale.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         const Locale &next() override { return *it_++; }
 
@@ -1066,7 +1069,7 @@
     /**
      * A generic Locale iterator implementation over Locale input iterators.
      * Calls the converter to convert each *begin to a const Locale &.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     template<typename Iter, typename Conv>
     class ConvertingIterator : public Iterator, public UMemory {
@@ -1079,20 +1082,20 @@
          * @param begin Start of range.
          * @param end Exclusive end of range.
          * @param converter Converter from *begin to const Locale & or compatible.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         ConvertingIterator(Iter begin, Iter end, Conv converter) :
                 it_(begin), end_(end), converter_(converter) {}
 
         /**
-         * @return TRUE if next() can be called again.
-         * @draft ICU 65
+         * @return true if next() can be called again.
+         * @stable ICU 65
          */
         UBool hasNext() const override { return it_ != end_; }
 
         /**
          * @return the next locale.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         const Locale &next() override { return converter_(*it_++); }
 
@@ -1101,7 +1104,6 @@
         const Iter end_;
         Conv converter_;
     };
-#endif  // U_HIDE_DRAFT_API
 
 protected: /* only protected for testing purposes. DO NOT USE. */
 #ifndef U_HIDE_INTERNAL_API
diff --git a/icu4c/source/common/unicode/messagepattern.h b/icu4c/source/common/unicode/messagepattern.h
index 04f00a8..98e7b70 100644
--- a/icu4c/source/common/unicode/messagepattern.h
+++ b/icu4c/source/common/unicode/messagepattern.h
@@ -265,7 +265,7 @@
 
 /**
  * \def UMSGPAT_ARG_TYPE_HAS_PLURAL_STYLE
- * Returns TRUE if the argument type has a plural style part sequence and semantics,
+ * Returns true if the argument type has a plural style part sequence and semantics,
  * for example UMSGPAT_ARG_TYPE_PLURAL and UMSGPAT_ARG_TYPE_SELECTORDINAL.
  * @stable ICU 50
  */
@@ -523,14 +523,14 @@
 
     /**
      * @param other another object to compare with.
-     * @return TRUE if this object is equivalent to the other one.
+     * @return true if this object is equivalent to the other one.
      * @stable ICU 4.8
      */
     UBool operator==(const MessagePattern &other) const;
 
     /**
      * @param other another object to compare with.
-     * @return FALSE if this object is equivalent to the other one.
+     * @return false if this object is equivalent to the other one.
      * @stable ICU 4.8
      */
     inline UBool operator!=(const MessagePattern &other) const {
@@ -564,7 +564,7 @@
 
     /**
      * Does the parsed pattern have named arguments like {first_name}?
-     * @return TRUE if the parsed pattern has at least one named argument.
+     * @return true if the parsed pattern has at least one named argument.
      * @stable ICU 4.8
      */
     UBool hasNamedArguments() const {
@@ -573,7 +573,7 @@
 
     /**
      * Does the parsed pattern have numbered arguments like {2}?
-     * @return TRUE if the parsed pattern has at least one numbered argument.
+     * @return true if the parsed pattern has at least one numbered argument.
      * @stable ICU 4.8
      */
     UBool hasNumberedArguments() const {
@@ -664,7 +664,7 @@
      * Compares the part's substring with the input string s.
      * @param part a part of this MessagePattern.
      * @param s a string.
-     * @return TRUE if getSubstring(part).equals(s).
+     * @return true if getSubstring(part).equals(s).
      * @stable ICU 4.8
      */
     UBool partSubstringMatches(const Part &part, const UnicodeString &s) const {
@@ -785,7 +785,7 @@
          * Indicates whether the Part type has a numeric value.
          * If so, then that numeric value can be retrieved via MessagePattern.getNumericValue().
          * @param type The Part type to be tested.
-         * @return TRUE if the Part type has a numeric value.
+         * @return true if the Part type has a numeric value.
          * @stable ICU 4.8
          */
         static UBool hasNumericValue(UMessagePatternPartType type) {
@@ -794,14 +794,14 @@
 
         /**
          * @param other another object to compare with.
-         * @return TRUE if this object is equivalent to the other one.
+         * @return true if this object is equivalent to the other one.
          * @stable ICU 4.8
          */
         UBool operator==(const Part &other) const;
 
         /**
          * @param other another object to compare with.
-         * @return FALSE if this object is equivalent to the other one.
+         * @return false if this object is equivalent to the other one.
          * @stable ICU 4.8
          */
         inline UBool operator!=(const Part &other) const {
@@ -869,7 +869,7 @@
      * Parses a number from the specified message substring.
      * @param start start index into the message string
      * @param limit limit index into the message string, must be start<limit
-     * @param allowInfinity TRUE if U+221E is allowed (for ChoiceFormat)
+     * @param allowInfinity true if U+221E is allowed (for ChoiceFormat)
      * @param parseError
      * @param errorCode
      */
@@ -900,13 +900,13 @@
     UBool isOrdinal(int32_t index);
 
     /**
-     * @return TRUE if we are inside a MessageFormat (sub-)pattern,
+     * @return true if we are inside a MessageFormat (sub-)pattern,
      *         as opposed to inside a top-level choice/plural/select pattern.
      */
     UBool inMessageFormatPattern(int32_t nestingLevel);
 
     /**
-     * @return TRUE if we are in a MessageFormat sub-pattern
+     * @return true if we are in a MessageFormat sub-pattern
      *         of a top-level ChoiceFormat pattern.
      */
     UBool inTopLevelChoiceMessage(int32_t nestingLevel, UMessagePatternArgType parentType);
diff --git a/icu4c/source/common/unicode/normalizer2.h b/icu4c/source/common/unicode/normalizer2.h
index 4aeb3bb..5eb1d95 100644
--- a/icu4c/source/common/unicode/normalizer2.h
+++ b/icu4c/source/common/unicode/normalizer2.h
@@ -290,13 +290,13 @@
      * Gets the decomposition mapping of c.
      * Roughly equivalent to normalizing the String form of c
      * on a UNORM2_DECOMPOSE Normalizer2 instance, but much faster, and except that this function
-     * returns FALSE and does not write a string
+     * returns false and does not write a string
      * if c does not have a decomposition mapping in this instance's data.
      * This function is independent of the mode of the Normalizer2.
      * @param c code point
      * @param decomposition String object which will be set to c's
      *                      decomposition mapping, if there is one.
-     * @return TRUE if c has a decomposition, otherwise FALSE
+     * @return true if c has a decomposition, otherwise false
      * @stable ICU 4.6
      */
     virtual UBool
@@ -319,11 +319,11 @@
      * in this case, the result contains either one or two code points (=1..4 char16_ts).
      *
      * This function is independent of the mode of the Normalizer2.
-     * The default implementation returns FALSE.
+     * The default implementation returns false.
      * @param c code point
      * @param decomposition String object which will be set to c's
      *                      raw decomposition mapping, if there is one.
-     * @return TRUE if c has a decomposition, otherwise FALSE
+     * @return true if c has a decomposition, otherwise false
      * @stable ICU 49
      */
     virtual UBool
@@ -369,7 +369,7 @@
      *                  pass the U_SUCCESS() test, or else the function returns
      *                  immediately. Check for U_FAILURE() on output or use with
      *                  function chaining. (See User Guide for details.)
-     * @return TRUE if s is normalized
+     * @return true if s is normalized
      * @stable ICU 4.4
      */
     virtual UBool
@@ -392,7 +392,7 @@
      *                  pass the U_SUCCESS() test, or else the function returns
      *                  immediately. Check for U_FAILURE() on output or use with
      *                  function chaining. (See User Guide for details.)
-     * @return TRUE if s is normalized
+     * @return true if s is normalized
      * @stable ICU 60
      */
     virtual UBool
@@ -452,7 +452,7 @@
      * character independently.
      * This is used for iterative normalization. See the class documentation for details.
      * @param c character to test
-     * @return TRUE if c has a normalization boundary before it
+     * @return true if c has a normalization boundary before it
      * @stable ICU 4.4
      */
     virtual UBool hasBoundaryBefore(UChar32 c) const = 0;
@@ -468,7 +468,7 @@
      * This is used for iterative normalization. See the class documentation for details.
      * Note that this operation may be significantly slower than hasBoundaryBefore().
      * @param c character to test
-     * @return TRUE if c has a normalization boundary after it
+     * @return true if c has a normalization boundary after it
      * @stable ICU 4.4
      */
     virtual UBool hasBoundaryAfter(UChar32 c) const = 0;
@@ -483,7 +483,7 @@
      * This is used for iterative normalization. See the class documentation for details.
      * Note that this operation may be significantly slower than hasBoundaryBefore().
      * @param c character to test
-     * @return TRUE if c is normalization-inert
+     * @return true if c is normalization-inert
      * @stable ICU 4.4
      */
     virtual UBool isInert(UChar32 c) const = 0;
@@ -612,7 +612,7 @@
      * @param c code point
      * @param decomposition String object which will be set to c's
      *                      decomposition mapping, if there is one.
-     * @return TRUE if c has a decomposition, otherwise FALSE
+     * @return true if c has a decomposition, otherwise false
      * @stable ICU 4.6
      */
     virtual UBool
@@ -626,7 +626,7 @@
      * @param c code point
      * @param decomposition String object which will be set to c's
      *                      raw decomposition mapping, if there is one.
-     * @return TRUE if c has a decomposition, otherwise FALSE
+     * @return true if c has a decomposition, otherwise false
      * @stable ICU 49
      */
     virtual UBool
@@ -664,7 +664,7 @@
      *                  pass the U_SUCCESS() test, or else the function returns
      *                  immediately. Check for U_FAILURE() on output or use with
      *                  function chaining. (See User Guide for details.)
-     * @return TRUE if s is normalized
+     * @return true if s is normalized
      * @stable ICU 4.4
      */
     virtual UBool
@@ -687,7 +687,7 @@
      *                  pass the U_SUCCESS() test, or else the function returns
      *                  immediately. Check for U_FAILURE() on output or use with
      *                  function chaining. (See User Guide for details.)
-     * @return TRUE if s is normalized
+     * @return true if s is normalized
      * @stable ICU 60
      */
     virtual UBool
@@ -724,7 +724,7 @@
      * regardless of context.
      * For details see the Normalizer2 base class documentation.
      * @param c character to test
-     * @return TRUE if c has a normalization boundary before it
+     * @return true if c has a normalization boundary before it
      * @stable ICU 4.4
      */
     virtual UBool hasBoundaryBefore(UChar32 c) const U_OVERRIDE;
@@ -734,7 +734,7 @@
      * regardless of context.
      * For details see the Normalizer2 base class documentation.
      * @param c character to test
-     * @return TRUE if c has a normalization boundary after it
+     * @return true if c has a normalization boundary after it
      * @stable ICU 4.4
      */
     virtual UBool hasBoundaryAfter(UChar32 c) const U_OVERRIDE;
@@ -743,7 +743,7 @@
      * Tests if the character is normalization-inert.
      * For details see the Normalizer2 base class documentation.
      * @param c character to test
-     * @return TRUE if c is normalization-inert
+     * @return true if c is normalization-inert
      * @stable ICU 4.4
      */
     virtual UBool isInert(UChar32 c) const U_OVERRIDE;
diff --git a/icu4c/source/common/unicode/normlzr.h b/icu4c/source/common/unicode/normlzr.h
index 07a596b..3352983 100644
--- a/icu4c/source/common/unicode/normlzr.h
+++ b/icu4c/source/common/unicode/normlzr.h
@@ -234,7 +234,7 @@
    *
    * @param source    the string to be composed.
    * @param compat    Perform compatibility decomposition before composition.
-   *                  If this argument is <code>FALSE</code>, only canonical
+   *                  If this argument is <code>false</code>, only canonical
    *                  decomposition will be performed.
    * @param options   the optional features to be enabled (0 for no options)
    * @param result    The composed string (on output).
@@ -256,7 +256,7 @@
    *
    * @param source    the string to be decomposed.
    * @param compat    Perform compatibility decomposition.
-   *                  If this argument is <code>FALSE</code>, only canonical
+   *                  If this argument is <code>false</code>, only canonical
    *                  decomposition will be performed.
    * @param options   the optional features to be enabled (0 for no options)
    * @param result    The decomposed string (on output).
@@ -315,7 +315,7 @@
    * never a "maybe".
    * For NFD, NFKD, and FCD, both functions work exactly the same.
    * For NFC and NFKC where quickCheck may return "maybe", this function will
-   * perform further tests to arrive at a TRUE/FALSE result.
+   * perform further tests to arrive at a true/false result.
    *
    * @param src        String that is to be tested if it is in a normalization format.
    * @param mode       Which normalization form to test for.
@@ -577,7 +577,7 @@
   int32_t            endIndex(void) const;
 
   /**
-   * Returns TRUE when both iterators refer to the same character in the same
+   * Returns true when both iterators refer to the same character in the same
    * input text.
    *
    * @param that a Normalizer object to compare this one to
@@ -587,7 +587,7 @@
   UBool        operator==(const Normalizer& that) const;
 
   /**
-   * Returns FALSE when both iterators refer to the same character in the same
+   * Returns false when both iterators refer to the same character in the same
    * input text.
    *
    * @param that a Normalizer object to compare this one to
@@ -655,8 +655,8 @@
    * It is possible to specify multiple options that are all turned on or off.
    *
    * @param   option  the option(s) whose value is/are to be set.
-   * @param   value   the new setting for the option.  Use <code>TRUE</code> to
-   *                  turn the option(s) on and <code>FALSE</code> to turn it/them off.
+   * @param   value   the new setting for the option.  Use <code>true</code> to
+   *                  turn the option(s) on and <code>false</code> to turn it/them off.
    *
    * @see #getOption
    * @deprecated ICU 56 Use Normalizer2 instead.
@@ -666,11 +666,11 @@
 
   /**
    * Determine whether an option is turned on or off.
-   * If multiple options are specified, then the result is TRUE if any
+   * If multiple options are specified, then the result is true if any
    * of them are set.
    * <p>
    * @param option the option(s) that are to be checked
-   * @return TRUE if any of the option(s) are set
+   * @return true if any of the option(s) are set
    * @see #setOption
    * @deprecated ICU 56 Use Normalizer2 instead.
    */
diff --git a/icu4c/source/common/unicode/parsepos.h b/icu4c/source/common/unicode/parsepos.h
index 909d288..260ed4c 100644
--- a/icu4c/source/common/unicode/parsepos.h
+++ b/icu4c/source/common/unicode/parsepos.h
@@ -97,14 +97,14 @@
 
     /**
      * Equality operator.
-     * @return TRUE if the two parse positions are equal, FALSE otherwise.
+     * @return true if the two parse positions are equal, false otherwise.
      * @stable ICU 2.0
      */
     inline UBool              operator==(const ParsePosition& that) const;
 
     /**
      * Equality operator.
-     * @return TRUE if the two parse positions are not equal, FALSE otherwise.
+     * @return true if the two parse positions are not equal, false otherwise.
      * @stable ICU 2.0
      */
     inline UBool              operator!=(const ParsePosition& that) const;
@@ -196,9 +196,9 @@
 ParsePosition::operator==(const ParsePosition& copy) const
 {
   if(index != copy.index || errorIndex != copy.errorIndex)
-  return FALSE;
+  return false;
   else
-  return TRUE;
+  return true;
 }
 
 inline UBool
diff --git a/icu4c/source/common/unicode/putil.h b/icu4c/source/common/unicode/putil.h
index 759b136..500c212 100644
--- a/icu4c/source/common/unicode/putil.h
+++ b/icu4c/source/common/unicode/putil.h
@@ -66,7 +66,7 @@
  *   
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2 u_getDataDirectory(void);
+U_CAPI const char* U_EXPORT2 u_getDataDirectory(void);
 
 
 /** 
@@ -88,7 +88,7 @@
  * @see u_init
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 u_setDataDirectory(const char *directory);
+U_CAPI void U_EXPORT2 u_setDataDirectory(const char *directory);
 
 #ifndef U_HIDE_INTERNAL_API
 /**
@@ -99,7 +99,7 @@
   * @return the time zone data override directory.
   * @internal
   */ 
-U_INTERNAL const char * U_EXPORT2 u_getTimeZoneFilesDirectory(UErrorCode *status);
+U_CAPI const char * U_EXPORT2 u_getTimeZoneFilesDirectory(UErrorCode *status);
 
 /**
   * Set the time zone files override directory.
@@ -109,7 +109,7 @@
   *   will access the time zone data.
   * @internal
   */
-U_INTERNAL void U_EXPORT2 u_setTimeZoneFilesDirectory(const char *path, UErrorCode *status);
+U_CAPI void U_EXPORT2 u_setTimeZoneFilesDirectory(const char *path, UErrorCode *status);
 #endif  /* U_HIDE_INTERNAL_API */
 
 
@@ -155,7 +155,7 @@
  * @see U_CHARSET_FAMILY
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_charsToUChars(const char *cs, UChar *us, int32_t length);
 
 /**
@@ -177,7 +177,7 @@
  * @see U_CHARSET_FAMILY
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_UCharsToChars(const UChar *us, char *cs, int32_t length);
 
 #endif
diff --git a/icu4c/source/common/unicode/rbbi.h b/icu4c/source/common/unicode/rbbi.h
index 7825f60..65117f6 100644
--- a/icu4c/source/common/unicode/rbbi.h
+++ b/icu4c/source/common/unicode/rbbi.h
@@ -32,6 +32,8 @@
 #include "unicode/parseerr.h"
 #include "unicode/schriter.h"
 
+struct UCPTrie;
+
 U_NAMESPACE_BEGIN
 
 /** @internal */
@@ -140,6 +142,11 @@
       */
     UBool           fDone;
 
+    /**
+     *  Array of look-ahead tentative results.
+     */
+    int32_t *fLookAheadMatches;
+
     //=======================================================================
     // constructors
     //=======================================================================
@@ -246,20 +253,20 @@
     RuleBasedBreakIterator& operator=(const RuleBasedBreakIterator& that);
 
     /**
-     * Equality operator.  Returns TRUE if both BreakIterators are of the
+     * Equality operator.  Returns true if both BreakIterators are of the
      * same class, have the same behavior, and iterate over the same text.
      * @param that The BreakIterator to be compared for equality
-     * @return TRUE if both BreakIterators are of the
+     * @return true if both BreakIterators are of the
      * same class, have the same behavior, and iterate over the same text.
      *  @stable ICU 2.0
      */
     virtual UBool operator==(const BreakIterator& that) const;
 
     /**
-     * Not-equal operator.  If operator== returns TRUE, this returns FALSE,
+     * Not-equal operator.  If operator== returns true, this returns false,
      * and vice versa.
      * @param that The BreakIterator to be compared for inequality
-     * @return TRUE if both BreakIterators are not same.
+     * @return true if both BreakIterators are not same.
      *  @stable ICU 2.0
      */
     inline UBool operator!=(const BreakIterator& that) const;
@@ -659,6 +666,28 @@
      */
     int32_t handleNext();
 
+    /*
+     * Templatized version of handleNext() and handleSafePrevious().
+     *
+     * There will be exactly four instantiations, two each for 8 and 16 bit tables,
+     * two each for 8 and 16 bit trie.
+     * Having separate instantiations for the table types keeps conditional tests of
+     * the table type out of the inner loops, at the expense of replicated code.
+     *
+     * The template parameter for the Trie access function is a value, not a type.
+     * Doing it this way, the compiler will inline the Trie function in the
+     * expanded functions. (Both the 8 and 16 bit access functions have the same type
+     * signature)
+     */
+
+    typedef uint16_t (*PTrieFunc)(const UCPTrie *, UChar32);
+
+    template<typename RowType, PTrieFunc trieFunc>
+    int32_t handleSafePrevious(int32_t fromPosition);
+
+    template<typename RowType, PTrieFunc trieFunc>
+    int32_t handleNext();
+
 
     /**
      * This function returns the appropriate LanguageBreakEngine for a
@@ -681,7 +710,6 @@
      * @internal
      */
     void dumpTables();
-
 #endif  /* U_HIDE_INTERNAL_API */
 };
 
diff --git a/icu4c/source/common/unicode/resbund.h b/icu4c/source/common/unicode/resbund.h
index 2894067..37738e2 100644
--- a/icu4c/source/common/unicode/resbund.h
+++ b/icu4c/source/common/unicode/resbund.h
@@ -286,7 +286,7 @@
     /**
      * Checks whether the resource has another element to iterate over.
      *
-     * @return TRUE if there are more elements, FALSE if there is no more elements
+     * @return true if there are more elements, false if there is no more elements
      * @stable ICU 2.0
      */
     UBool
diff --git a/icu4c/source/common/unicode/simpleformatter.h b/icu4c/source/common/unicode/simpleformatter.h
index 9414bca..6d9c04a 100644
--- a/icu4c/source/common/unicode/simpleformatter.h
+++ b/icu4c/source/common/unicode/simpleformatter.h
@@ -125,7 +125,7 @@
      * @param errorCode ICU error code in/out parameter.
      *                  Must fulfill U_SUCCESS before the function call.
      *                  Set to U_ILLEGAL_ARGUMENT_ERROR for bad argument syntax.
-     * @return TRUE if U_SUCCESS(errorCode).
+     * @return true if U_SUCCESS(errorCode).
      * @stable ICU 57
      */
     UBool applyPattern(const UnicodeString &pattern, UErrorCode &errorCode) {
@@ -144,7 +144,7 @@
      *                  Must fulfill U_SUCCESS before the function call.
      *                  Set to U_ILLEGAL_ARGUMENT_ERROR for bad argument syntax and
      *                  too few or too many arguments.
-     * @return TRUE if U_SUCCESS(errorCode).
+     * @return true if U_SUCCESS(errorCode).
      * @stable ICU 57
      */
     UBool applyPatternMinMaxArguments(const UnicodeString &pattern,
diff --git a/icu4c/source/common/unicode/strenum.h b/icu4c/source/common/unicode/strenum.h
index 8601f1f..df72b4b 100644
--- a/icu4c/source/common/unicode/strenum.h
+++ b/icu4c/source/common/unicode/strenum.h
@@ -196,7 +196,7 @@
      * Compares this enumeration to other to check if both are equal
      *
      * @param that The other string enumeration to compare this object to
-     * @return TRUE if the enumerations are equal. FALSE if not.
+     * @return true if the enumerations are equal. false if not.
      * @stable ICU 3.6 
      */
     virtual UBool operator==(const StringEnumeration& that)const;
@@ -204,7 +204,7 @@
      * Compares this enumeration to other to check if both are not equal
      *
      * @param that The other string enumeration to compare this object to
-     * @return TRUE if the enumerations are equal. FALSE if not.
+     * @return true if the enumerations are equal. false if not.
      * @stable ICU 3.6 
      */
     virtual UBool operator!=(const StringEnumeration& that)const;
diff --git a/icu4c/source/common/unicode/stringpiece.h b/icu4c/source/common/unicode/stringpiece.h
index 52c1e9e..7d7d871 100644
--- a/icu4c/source/common/unicode/stringpiece.h
+++ b/icu4c/source/common/unicode/stringpiece.h
@@ -111,7 +111,6 @@
 #endif
 #endif  // U_HIDE_DRAFT_API
 
-#ifndef U_HIDE_DRAFT_API
   /**
    * Constructs from some other implementation of a string piece class, from any
    * C++ record type that has these two methods:
@@ -132,7 +131,7 @@
    * as from std::u8string_view.
    *
    * @param str the other string piece
-   * @draft ICU 65
+   * @stable ICU 65
    */
   template <typename T,
             typename = typename std::enable_if<
@@ -145,7 +144,6 @@
   StringPiece(T str)
       : ptr_(reinterpret_cast<const char*>(str.data())),
         length_(static_cast<int32_t>(str.size())) {}
-#endif  // U_HIDE_DRAFT_API
 
   /**
    * Constructs from a const char * pointer and a specified length.
@@ -209,7 +207,7 @@
   int32_t length() const { return length_; }
   /**
    * Returns whether the string is empty.
-   * @return TRUE if the string is empty
+   * @return true if the string is empty
    * @stable ICU 4.2
    */
   UBool empty() const { return length_ == 0; }
@@ -331,7 +329,7 @@
  * Global operator == for StringPiece
  * @param x The first StringPiece to compare.
  * @param y The second StringPiece to compare.
- * @return TRUE if the string data is equal
+ * @return true if the string data is equal
  * @stable ICU 4.8
  */
 U_EXPORT UBool U_EXPORT2 
@@ -341,7 +339,7 @@
  * Global operator != for StringPiece
  * @param x The first StringPiece to compare.
  * @param y The second StringPiece to compare.
- * @return TRUE if the string data is not equal
+ * @return true if the string data is not equal
  * @stable ICU 4.8
  */
 inline UBool operator!=(const StringPiece& x, const StringPiece& y) {
diff --git a/icu4c/source/common/unicode/stringtriebuilder.h b/icu4c/source/common/unicode/stringtriebuilder.h
index 2c47dd4..fe471bb 100644
--- a/icu4c/source/common/unicode/stringtriebuilder.h
+++ b/icu4c/source/common/unicode/stringtriebuilder.h
@@ -279,10 +279,10 @@
      */
     class ValueNode : public Node {
     public:
-        ValueNode(int32_t initialHash) : Node(initialHash), hasValue(FALSE), value(0) {}
+        ValueNode(int32_t initialHash) : Node(initialHash), hasValue(false), value(0) {}
         virtual UBool operator==(const Node &other) const;
         void setValue(int32_t v) {
-            hasValue=TRUE;
+            hasValue=true;
             value=v;
             hash=hash*37u+v;
         }
diff --git a/icu4c/source/common/unicode/ubidi.h b/icu4c/source/common/unicode/ubidi.h
index 9b048b5..63d0e45 100644
--- a/icu4c/source/common/unicode/ubidi.h
+++ b/icu4c/source/common/unicode/ubidi.h
@@ -499,7 +499,7 @@
  * @return An empty <code>UBiDi</code> object.
  * @stable ICU 2.0
  */
-U_STABLE UBiDi * U_EXPORT2
+U_CAPI UBiDi * U_EXPORT2
 ubidi_open(void);
 
 /**
@@ -536,7 +536,7 @@
  * @return An empty <code>UBiDi</code> object with preallocated memory.
  * @stable ICU 2.0
  */
-U_STABLE UBiDi * U_EXPORT2
+U_CAPI UBiDi * U_EXPORT2
 ubidi_openSized(int32_t maxLength, int32_t maxRunCount, UErrorCode *pErrorCode);
 
 /**
@@ -559,7 +559,7 @@
  * @see ubidi_setLine
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_close(UBiDi *pBiDi);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -597,7 +597,7 @@
  * this "inverse Bidi" and that the current implementation provides only an
  * approximation of "inverse Bidi".</p>
  *
- * <p>With <code>isInverse</code> set to <code>TRUE</code>,
+ * <p>With <code>isInverse</code> set to <code>true</code>,
  * this function changes the behavior of some of the subsequent functions
  * in a way that they can be used for the inverse Bidi algorithm.
  * Specifically, runs of text with numeric characters will be treated in a
@@ -610,12 +610,12 @@
  * the runs of the logically ordered output.</p>
  *
  * <p>Calling this function with argument <code>isInverse</code> set to
- * <code>TRUE</code> is equivalent to calling
+ * <code>true</code> is equivalent to calling
  * <code>ubidi_setReorderingMode</code> with argument
  * <code>reorderingMode</code>
  * set to <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>.<br>
  * Calling this function with argument <code>isInverse</code> set to
- * <code>FALSE</code> is equivalent to calling
+ * <code>false</code> is equivalent to calling
  * <code>ubidi_setReorderingMode</code> with argument
  * <code>reorderingMode</code>
  * set to <code>#UBIDI_REORDER_DEFAULT</code>.
@@ -629,18 +629,18 @@
  * @see ubidi_setReorderingMode
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setInverse(UBiDi *pBiDi, UBool isInverse);
 
 /**
  * Is this Bidi object set to perform the inverse Bidi algorithm?
  * <p>Note: calling this function after setting the reordering mode with
- * <code>ubidi_setReorderingMode</code> will return <code>TRUE</code> if the
+ * <code>ubidi_setReorderingMode</code> will return <code>true</code> if the
  * reordering mode was set to <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>,
- * <code>FALSE</code> for all other values.</p>
+ * <code>false</code> for all other values.</p>
  *
  * @param pBiDi is a <code>UBiDi</code> object.
- * @return TRUE if the Bidi object is set to perform the inverse Bidi algorithm
+ * @return true if the Bidi object is set to perform the inverse Bidi algorithm
  * by handling numbers as L.
  *
  * @see ubidi_setInverse
@@ -648,7 +648,7 @@
  * @stable ICU 2.0
  */
 
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ubidi_isInverse(UBiDi *pBiDi);
 
 /**
@@ -671,7 +671,7 @@
  * @see ubidi_setPara
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_orderParagraphsLTR(UBiDi *pBiDi, UBool orderParagraphsLTR);
 
 /**
@@ -679,13 +679,13 @@
  * successive paragraphs progress from left to right?
  *
  * @param pBiDi is a <code>UBiDi</code> object.
- * @return TRUE if the Bidi object is set to allocate level 0 to block
+ * @return true if the Bidi object is set to allocate level 0 to block
  *         separators.
  *
  * @see ubidi_orderParagraphsLTR
  * @stable ICU 3.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ubidi_isOrderParagraphsLTR(UBiDi *pBiDi);
 
 /**
@@ -717,7 +717,7 @@
       * @stable ICU 3.6 */
     UBIDI_REORDER_RUNS_ONLY,
     /** Visual to Logical algorithm which handles numbers like L
-      * (same algorithm as selected by <code>ubidi_setInverse(TRUE)</code>.
+      * (same algorithm as selected by <code>ubidi_setInverse(true)</code>.
       * @see ubidi_setInverse
       * @stable ICU 3.6 */
     UBIDI_REORDER_INVERSE_NUMBERS_AS_L,
@@ -836,7 +836,7 @@
  * reordered sequence (the option <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code> can
  * be used with function <code>ubidi_writeReordered</code> to this end. This
  * mode is equivalent to calling <code>ubidi_setInverse()</code> with
- * argument <code>isInverse</code> set to <code>TRUE</code>.</li>
+ * argument <code>isInverse</code> set to <code>true</code>.</li>
  *
  * <li>When the reordering mode is set to
  * <code>#UBIDI_REORDER_INVERSE_LIKE_DIRECT</code>, the "direct" Logical to Visual
@@ -889,7 +889,7 @@
  * @see ubidi_writeReordered
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setReorderingMode(UBiDi *pBiDi, UBiDiReorderingMode reorderingMode);
 
 /**
@@ -900,7 +900,7 @@
  * @see ubidi_setReorderingMode
  * @stable ICU 3.6
  */
-U_STABLE UBiDiReorderingMode U_EXPORT2
+U_CAPI UBiDiReorderingMode U_EXPORT2
 ubidi_getReorderingMode(UBiDi *pBiDi);
 
 /**
@@ -938,7 +938,7 @@
      *
      * <p>If this option is set in conjunction with reordering mode
      * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code> or with calling
-     * <code>ubidi_setInverse(TRUE)</code>, it implies
+     * <code>ubidi_setInverse(true)</code>, it implies
      * option <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code>
      * in calls to function <code>ubidi_writeReordered()</code>.</p>
      *
@@ -1019,7 +1019,7 @@
      *
      * <p>When the <code>UBIDI_OPTION_STREAMING</code> option is used,
      * it is recommended to call <code>ubidi_orderParagraphsLTR()</code> with
-     * argument <code>orderParagraphsLTR</code> set to <code>TRUE</code> before
+     * argument <code>orderParagraphsLTR</code> set to <code>true</code> before
      * calling <code>ubidi_setPara</code> so that later paragraphs may be
      * concatenated to previous paragraphs on the right.</p>
      *
@@ -1045,7 +1045,7 @@
  * @see ubidi_getReorderingOptions
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setReorderingOptions(UBiDi *pBiDi, uint32_t reorderingOptions);
 
 /**
@@ -1056,7 +1056,7 @@
  * @see ubidi_setReorderingOptions
  * @stable ICU 3.6
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 ubidi_getReorderingOptions(UBiDi *pBiDi);
 
 /**
@@ -1143,7 +1143,7 @@
  * @see ubidi_setPara
  * @stable ICU 4.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setContext(UBiDi *pBiDi,
                  const UChar *prologue, int32_t proLength,
                  const UChar *epilogue, int32_t epiLength,
@@ -1231,7 +1231,7 @@
  * @param pErrorCode must be a valid pointer to an error code value.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setPara(UBiDi *pBiDi, const UChar *text, int32_t length,
               UBiDiLevel paraLevel, UBiDiLevel *embeddingLevels,
               UErrorCode *pErrorCode);
@@ -1282,7 +1282,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setLine(const UBiDi *pParaBiDi,
               int32_t start, int32_t limit,
               UBiDi *pLineBiDi,
@@ -1303,7 +1303,7 @@
  * @see UBiDiDirection
  * @stable ICU 2.0
  */
-U_STABLE UBiDiDirection U_EXPORT2
+U_CAPI UBiDiDirection U_EXPORT2
 ubidi_getDirection(const UBiDi *pBiDi);
 
 /**
@@ -1333,7 +1333,7 @@
  * @see UBiDiDirection
  * @stable ICU 4.6
  */
-U_STABLE UBiDiDirection U_EXPORT2
+U_CAPI UBiDiDirection U_EXPORT2
 ubidi_getBaseDirection(const UChar *text,  int32_t length );
 
 /**
@@ -1347,7 +1347,7 @@
  * @see ubidi_setLine
  * @stable ICU 2.0
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 ubidi_getText(const UBiDi *pBiDi);
 
 /**
@@ -1358,7 +1358,7 @@
  * @return The length of the text that the UBiDi object was created for.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getLength(const UBiDi *pBiDi);
 
 /**
@@ -1376,7 +1376,7 @@
  * @see ubidi_getParagraphByIndex
  * @stable ICU 2.0
  */
-U_STABLE UBiDiLevel U_EXPORT2
+U_CAPI UBiDiLevel U_EXPORT2
 ubidi_getParaLevel(const UBiDi *pBiDi);
 
 /**
@@ -1387,7 +1387,7 @@
  * @return The number of paragraphs.
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_countParagraphs(UBiDi *pBiDi);
 
 /**
@@ -1424,7 +1424,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getParagraph(const UBiDi *pBiDi, int32_t charIndex, int32_t *pParaStart,
                    int32_t *pParaLimit, UBiDiLevel *pParaLevel,
                    UErrorCode *pErrorCode);
@@ -1456,7 +1456,7 @@
  *
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getParagraphByIndex(const UBiDi *pBiDi, int32_t paraIndex,
                           int32_t *pParaStart, int32_t *pParaLimit,
                           UBiDiLevel *pParaLevel, UErrorCode *pErrorCode);
@@ -1476,7 +1476,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE UBiDiLevel U_EXPORT2
+U_CAPI UBiDiLevel U_EXPORT2
 ubidi_getLevelAt(const UBiDi *pBiDi, int32_t charIndex);
 
 /**
@@ -1497,7 +1497,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE const UBiDiLevel * U_EXPORT2
+U_CAPI const UBiDiLevel * U_EXPORT2
 ubidi_getLevels(UBiDi *pBiDi, UErrorCode *pErrorCode);
 
 /**
@@ -1524,7 +1524,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getLogicalRun(const UBiDi *pBiDi, int32_t logicalPosition,
                     int32_t *pLogicalLimit, UBiDiLevel *pLevel);
 
@@ -1543,7 +1543,7 @@
  * @return The number of runs.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_countRuns(UBiDi *pBiDi, UErrorCode *pErrorCode);
 
 /**
@@ -1602,7 +1602,7 @@
  * to avoid these issues.
  * @stable ICU 2.0
  */
-U_STABLE UBiDiDirection U_EXPORT2
+U_CAPI UBiDiDirection U_EXPORT2
 ubidi_getVisualRun(UBiDi *pBiDi, int32_t runIndex,
                    int32_t *pLogicalStart, int32_t *pLength);
 
@@ -1643,7 +1643,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getVisualIndex(UBiDi *pBiDi, int32_t logicalIndex, UErrorCode *pErrorCode);
 
 /**
@@ -1678,7 +1678,7 @@
  * @see ubidi_getResultLength
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getLogicalIndex(UBiDi *pBiDi, int32_t visualIndex, UErrorCode *pErrorCode);
 
 /**
@@ -1721,7 +1721,7 @@
  * @see ubidi_getResultLength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getLogicalMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode);
 
 /**
@@ -1757,7 +1757,7 @@
  * @see ubidi_getResultLength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getVisualMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode);
 
 /**
@@ -1780,7 +1780,7 @@
  *        The index map will result in <code>indexMap[logicalIndex]==visualIndex</code>.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_reorderLogical(const UBiDiLevel *levels, int32_t length, int32_t *indexMap);
 
 /**
@@ -1803,7 +1803,7 @@
  *        The index map will result in <code>indexMap[visualIndex]==logicalIndex</code>.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_reorderVisual(const UBiDiLevel *levels, int32_t length, int32_t *indexMap);
 
 /**
@@ -1838,7 +1838,7 @@
  * @see UBIDI_MAP_NOWHERE
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_invertMap(const int32_t *srcMap, int32_t *destMap, int32_t length);
 
 /** option flags for ubidi_writeReordered() */
@@ -1943,7 +1943,7 @@
  * @see UBIDI_OPTION_STREAMING
  * @stable ICU 3.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getProcessedLength(const UBiDi *pBiDi);
 
 /**
@@ -1973,7 +1973,7 @@
  * @see UBIDI_OPTION_REMOVE_CONTROLS
  * @stable ICU 3.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getResultLength(const UBiDi *pBiDi);
 
 U_CDECL_BEGIN
@@ -2031,7 +2031,7 @@
  * @see UBiDiClassCallback
  * @stable ICU 3.6
  */
-U_STABLE UCharDirection U_EXPORT2
+U_CAPI UCharDirection U_EXPORT2
 ubidi_getCustomizedClass(UBiDi *pBiDi, UChar32 c);
 
 /**
@@ -2061,7 +2061,7 @@
  * @see ubidi_getClassCallback
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setClassCallback(UBiDi *pBiDi, UBiDiClassCallback *newFn,
                        const void *newContext, UBiDiClassCallback **oldFn,
                        const void **oldContext, UErrorCode *pErrorCode);
@@ -2078,7 +2078,7 @@
  * @see ubidi_setClassCallback
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getClassCallback(UBiDi *pBiDi, UBiDiClassCallback **fn, const void **context);
 
 /**
@@ -2146,7 +2146,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_writeReordered(UBiDi *pBiDi,
                      UChar *dest, int32_t destSize,
                      uint16_t options,
@@ -2198,7 +2198,7 @@
  * @return The length of the output string.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_writeReverse(const UChar *src, int32_t srcLength,
                    UChar *dest, int32_t destSize,
                    uint16_t options,
diff --git a/icu4c/source/common/unicode/ubiditransform.h b/icu4c/source/common/unicode/ubiditransform.h
index 79e22c0..2dd7564 100644
--- a/icu4c/source/common/unicode/ubiditransform.h
+++ b/icu4c/source/common/unicode/ubiditransform.h
@@ -150,10 +150,10 @@
  * calling <code>ubidi_setPara</code> with
  * <code>paraLevel == UBIDI_DEFAULT_RTL</code>,</li>
  * <li><Visual LTR, Logical LTR>: this is equivalent to
- * calling <code>ubidi_setInverse(UBiDi*, TRUE)</code> and then
+ * calling <code>ubidi_setInverse(UBiDi*, true)</code> and then
  * <code>ubidi_setPara</code> with <code>paraLevel == UBIDI_LTR</code>,</li>
  * <li><Visual LTR, Logical RTL>: this is equivalent to
- * calling <code>ubidi_setInverse(UBiDi*, TRUE)</code> and then
+ * calling <code>ubidi_setInverse(UBiDi*, true)</code> and then
  * <code>ubidi_setPara</code> with <code>paraLevel == UBIDI_RTL</code>.</li>
  * </ul>
  * All combinations that involve the Visual RTL scheme are unsupported by
@@ -248,7 +248,7 @@
  * @see u_shapeArabic
  * @stable ICU 58
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 ubiditransform_transform(UBiDiTransform *pBiDiTransform,
             const UChar *src, int32_t srcLength,
             UChar *dest, int32_t destSize,
@@ -294,14 +294,14 @@
  * @return An empty <code>UBiDiTransform</code> object.
  * @stable ICU 58
  */
-U_STABLE UBiDiTransform* U_EXPORT2
+U_CAPI UBiDiTransform* U_EXPORT2
 ubiditransform_open(UErrorCode *pErrorCode);
 
 /**
  * Deallocates the given <code>UBiDiTransform</code> object.
  * @stable ICU 58
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubiditransform_close(UBiDiTransform *pBidiTransform);
 
 #if U_SHOW_CPLUSPLUS_API
diff --git a/icu4c/source/common/unicode/ubrk.h b/icu4c/source/common/unicode/ubrk.h
index da204eb..37189a8 100644
--- a/icu4c/source/common/unicode/ubrk.h
+++ b/icu4c/source/common/unicode/ubrk.h
@@ -241,7 +241,7 @@
  * @see ubrk_openRules
  * @stable ICU 2.0
  */
-U_STABLE UBreakIterator* U_EXPORT2
+U_CAPI UBreakIterator* U_EXPORT2
 ubrk_open(UBreakIteratorType type,
       const char *locale,
       const UChar *text,
@@ -263,7 +263,7 @@
  * @see ubrk_open
  * @stable ICU 2.2
  */
-U_STABLE UBreakIterator* U_EXPORT2
+U_CAPI UBreakIterator* U_EXPORT2
 ubrk_openRules(const UChar     *rules,
                int32_t         rulesLength,
                const UChar     *text,
@@ -291,7 +291,7 @@
  * @see ubrk_getBinaryRules
  * @stable ICU 59
  */
-U_STABLE UBreakIterator* U_EXPORT2
+U_CAPI UBreakIterator* U_EXPORT2
 ubrk_openBinaryRules(const uint8_t *binaryRules, int32_t rulesLength,
                      const UChar *  text, int32_t textLength,
                      UErrorCode *   status);
@@ -314,7 +314,7 @@
  * @return pointer to the new clone
  * @stable ICU 2.0
  */
-U_STABLE UBreakIterator * U_EXPORT2
+U_CAPI UBreakIterator * U_EXPORT2
 ubrk_safeClone(
           const UBreakIterator *bi,
           void *stackBuffer,
@@ -337,7 +337,7 @@
 * @param bi The break iterator to close.
  * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubrk_close(UBreakIterator *bi);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -371,7 +371,7 @@
  * @param status The error code
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubrk_setText(UBreakIterator* bi,
              const UChar*    text,
              int32_t         textLength,
@@ -395,7 +395,7 @@
  * @param status The error code
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubrk_setUText(UBreakIterator* bi,
              UText*          text,
              UErrorCode*     status);
@@ -410,7 +410,7 @@
  * \ref ubrk_first, or \ref ubrk_last.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_current(const UBreakIterator *bi);
 
 /**
@@ -422,7 +422,7 @@
  * @see ubrk_previous
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_next(UBreakIterator *bi);
 
 /**
@@ -434,7 +434,7 @@
  * @see ubrk_next
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_previous(UBreakIterator *bi);
 
 /**
@@ -444,7 +444,7 @@
  * @see ubrk_last
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_first(UBreakIterator *bi);
 
 /**
@@ -456,7 +456,7 @@
  * @see ubrk_first
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_last(UBreakIterator *bi);
 
 /**
@@ -468,7 +468,7 @@
  * @see ubrk_following
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_preceding(UBreakIterator *bi,
            int32_t offset);
 
@@ -481,7 +481,7 @@
  * @see ubrk_preceding
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_following(UBreakIterator *bi,
            int32_t offset);
 
@@ -494,7 +494,7 @@
 * @see ubrk_countAvailable
 * @stable ICU 2.0
 */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 ubrk_getAvailable(int32_t index);
 
 /**
@@ -505,7 +505,7 @@
 * @see ubrk_getAvailable
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_countAvailable(void);
 
 
@@ -518,7 +518,7 @@
 * @return True if "offset" is a boundary position.
 * @stable ICU 2.0
 */
-U_STABLE  UBool U_EXPORT2
+U_CAPI  UBool U_EXPORT2
 ubrk_isBoundary(UBreakIterator *bi, int32_t offset);
 
 /**
@@ -530,7 +530,7 @@
  * For word break iterators, the possible values are defined in enum UWordBreak.
  * @stable ICU 2.2
  */
-U_STABLE  int32_t U_EXPORT2
+U_CAPI  int32_t U_EXPORT2
 ubrk_getRuleStatus(UBreakIterator *bi);
 
 /**
@@ -550,7 +550,7 @@
  *                  the most recent boundary returned by the break iterator.
  * @stable ICU 3.0
  */
-U_STABLE  int32_t U_EXPORT2
+U_CAPI  int32_t U_EXPORT2
 ubrk_getRuleStatusVec(UBreakIterator *bi, int32_t *fillInVec, int32_t capacity, UErrorCode *status);
 
 /**
@@ -562,7 +562,7 @@
  * @return locale string
  * @stable ICU 2.8
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 ubrk_getLocaleByType(const UBreakIterator *bi, ULocDataLocaleType type, UErrorCode* status);
 
 /**
@@ -590,7 +590,7 @@
   *
   * @stable ICU 49
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubrk_refreshUText(UBreakIterator *bi,
                        UText          *text,
                        UErrorCode     *status);
@@ -621,7 +621,7 @@
  * @see ubrk_openBinaryRules
  * @stable ICU 59
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_getBinaryRules(UBreakIterator *bi,
                     uint8_t *       binaryRules, int32_t rulesCapacity,
                     UErrorCode *    status);
diff --git a/icu4c/source/common/unicode/ucasemap.h b/icu4c/source/common/unicode/ucasemap.h
index 06c09a6..d1c1b48 100644
--- a/icu4c/source/common/unicode/ucasemap.h
+++ b/icu4c/source/common/unicode/ucasemap.h
@@ -72,7 +72,7 @@
  * @see U_TITLECASE_NO_BREAK_ADJUSTMENT
  * @stable ICU 3.4
  */
-U_STABLE UCaseMap * U_EXPORT2
+U_CAPI UCaseMap * U_EXPORT2
 ucasemap_open(const char *locale, uint32_t options, UErrorCode *pErrorCode);
 
 /**
@@ -80,7 +80,7 @@
  * @param csm Object to be closed.
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucasemap_close(UCaseMap *csm);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -108,7 +108,7 @@
  * @return locale ID
  * @stable ICU 3.4
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucasemap_getLocale(const UCaseMap *csm);
 
 /**
@@ -117,7 +117,7 @@
  * @return options bit set
  * @stable ICU 3.4
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 ucasemap_getOptions(const UCaseMap *csm);
 
 /**
@@ -131,7 +131,7 @@
  * @see ucasemap_open
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucasemap_setLocale(UCaseMap *csm, const char *locale, UErrorCode *pErrorCode);
 
 /**
@@ -145,7 +145,7 @@
  * @see ucasemap_open
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucasemap_setOptions(UCaseMap *csm, uint32_t options, UErrorCode *pErrorCode);
 
 #if !UCONFIG_NO_BREAK_ITERATION
@@ -157,7 +157,7 @@
  * @return titlecasing break iterator
  * @stable ICU 3.8
  */
-U_STABLE const UBreakIterator * U_EXPORT2
+U_CAPI const UBreakIterator * U_EXPORT2
 ucasemap_getBreakIterator(const UCaseMap *csm);
 
 /**
@@ -180,7 +180,7 @@
  * @see ucasemap_utf8ToTitle
  * @stable ICU 3.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucasemap_setBreakIterator(UCaseMap *csm, UBreakIterator *iterToAdopt, UErrorCode *pErrorCode);
 
 /**
@@ -229,7 +229,7 @@
  * @see u_strToTitle
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucasemap_toTitle(UCaseMap *csm,
                  UChar *dest, int32_t destCapacity,
                  const UChar *src, int32_t srcLength,
@@ -260,7 +260,7 @@
  * @see u_strToLower
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucasemap_utf8ToLower(const UCaseMap *csm,
                      char *dest, int32_t destCapacity,
                      const char *src, int32_t srcLength,
@@ -289,7 +289,7 @@
  * @see u_strToUpper
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucasemap_utf8ToUpper(const UCaseMap *csm,
                      char *dest, int32_t destCapacity,
                      const char *src, int32_t srcLength,
@@ -341,7 +341,7 @@
  * @see U_TITLECASE_NO_BREAK_ADJUSTMENT
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucasemap_utf8ToTitle(UCaseMap *csm,
                     char *dest, int32_t destCapacity,
                     const char *src, int32_t srcLength,
@@ -379,7 +379,7 @@
  * @see U_FOLD_CASE_EXCLUDE_SPECIAL_I
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucasemap_utf8FoldCase(const UCaseMap *csm,
                       char *dest, int32_t destCapacity,
                       const char *src, int32_t srcLength,
diff --git a/icu4c/source/common/unicode/ucat.h b/icu4c/source/common/unicode/ucat.h
index 4d1ff3f..9385034 100644
--- a/icu4c/source/common/unicode/ucat.h
+++ b/icu4c/source/common/unicode/ucat.h
@@ -103,7 +103,7 @@
  * 
  * @stable ICU 2.6
  */
-U_STABLE u_nl_catd U_EXPORT2
+U_CAPI u_nl_catd U_EXPORT2
 u_catopen(const char* name, const char* locale, UErrorCode* ec);
 
 /**
@@ -114,7 +114,7 @@
  * 
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_catclose(u_nl_catd catd);
 
 /**
@@ -149,7 +149,7 @@
  * 
  * @stable ICU 2.6
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 u_catgets(u_nl_catd catd, int32_t set_num, int32_t msg_num,
           const UChar* s,
           int32_t* len, UErrorCode* ec);
diff --git a/icu4c/source/common/unicode/uchar.h b/icu4c/source/common/unicode/uchar.h
index 3b55b23..1e0f82e 100644
--- a/icu4c/source/common/unicode/uchar.h
+++ b/icu4c/source/common/unicode/uchar.h
@@ -80,7 +80,7 @@
  * and the ICU User Guide chapter on Properties (http://icu-project.org/userguide/properties.html).
  *
  * Many properties are accessible via generic functions that take a UProperty selector.
- * - u_hasBinaryProperty() returns a binary value (TRUE/FALSE) per property and code point.
+ * - u_hasBinaryProperty() returns a binary value (true/false) per property and code point.
  * - u_getIntPropertyValue() returns an integer value per property and code point.
  *   For each supported enumerated or catalog property, there is
  *   an enum type for all of the property's values, and
@@ -2586,8 +2586,8 @@
  * @param c Code point to test.
  * @param which UProperty selector constant, identifies which binary property to check.
  *        Must be UCHAR_BINARY_START<=which<UCHAR_BINARY_LIMIT.
- * @return TRUE or FALSE according to the binary Unicode property value for c.
- *         Also FALSE if 'which' is out of bounds or if the Unicode version
+ * @return true or false according to the binary Unicode property value for c.
+ *         Also false if 'which' is out of bounds or if the Unicode version
  *         does not have data for the property at all, or not for this code point.
  *
  * @see UProperty
@@ -2596,7 +2596,7 @@
  * @see u_getUnicodeVersion
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_hasBinaryProperty(UChar32 c, UProperty which);
 
 /**
@@ -2629,7 +2629,7 @@
  * @see u_hasBinaryProperty
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isUAlphabetic(UChar32 c);
 
 /**
@@ -2644,7 +2644,7 @@
  * @see u_hasBinaryProperty
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isULowercase(UChar32 c);
 
 /**
@@ -2659,7 +2659,7 @@
  * @see u_hasBinaryProperty
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isUUppercase(UChar32 c);
 
 /**
@@ -2680,7 +2680,7 @@
  * @see u_hasBinaryProperty
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isUWhiteSpace(UChar32 c);
 
 /**
@@ -2708,7 +2708,7 @@
  *         for enumerated properties, corresponds to the numeric value of the enumerated
  *         constant of the respective property value enumeration type
  *         (cast to enum type if necessary).
- *         Returns 0 or 1 (for FALSE/TRUE) for binary Unicode properties.
+ *         Returns 0 or 1 (for false/true) for binary Unicode properties.
  *         Returns a bit-mask for mask properties.
  *         Returns 0 if 'which' is out of bounds or if the Unicode version
  *         does not have data for the property at all, or not for this code point.
@@ -2721,7 +2721,7 @@
  * @see u_getUnicodeVersion
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getIntPropertyValue(UChar32 c, UProperty which);
 
 /**
@@ -2742,7 +2742,7 @@
  * @see u_getIntPropertyValue
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getIntPropertyMinValue(UProperty which);
 
 /**
@@ -2754,7 +2754,7 @@
  *
  * - UCHAR_BIDI_CLASS:    0/18 (U_LEFT_TO_RIGHT/U_BOUNDARY_NEUTRAL)
  * - UCHAR_SCRIPT:        0/45 (USCRIPT_COMMON/USCRIPT_TAGBANWA)
- * - UCHAR_IDEOGRAPHIC:   0/1  (FALSE/TRUE)
+ * - UCHAR_IDEOGRAPHIC:   0/1  (false/true)
  *
  * For undefined UProperty constant values, min/max values will be 0/-1.
  *
@@ -2771,7 +2771,7 @@
  * @see u_getIntPropertyValue
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getIntPropertyMaxValue(UProperty which);
 
 /**
@@ -2814,7 +2814,7 @@
  * @see U_NO_NUMERIC_VALUE
  * @stable ICU 2.2
  */
-U_STABLE double U_EXPORT2
+U_CAPI double U_EXPORT2
 u_getNumericValue(UChar32 c);
 
 /**
@@ -2842,14 +2842,14 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an Ll lowercase letter
+ * @return true if the code point is an Ll lowercase letter
  *
  * @see UCHAR_LOWERCASE
  * @see u_isupper
  * @see u_istitle
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_islower(UChar32 c);
 
 /**
@@ -2868,7 +2868,7 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an Lu uppercase letter
+ * @return true if the code point is an Lu uppercase letter
  *
  * @see UCHAR_UPPERCASE
  * @see u_islower
@@ -2876,7 +2876,7 @@
  * @see u_tolower
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isupper(UChar32 c);
 
 /**
@@ -2886,14 +2886,14 @@
  * Same as java.lang.Character.isTitleCase().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an Lt titlecase letter
+ * @return true if the code point is an Lt titlecase letter
  *
  * @see u_isupper
  * @see u_islower
  * @see u_totitle
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_istitle(UChar32 c);
 
 /**
@@ -2910,11 +2910,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a digit character according to Character.isDigit()
+ * @return true if the code point is a digit character according to Character.isDigit()
  *
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isdigit(UChar32 c);
 
 /**
@@ -2929,13 +2929,13 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a letter character
+ * @return true if the code point is a letter character
  *
  * @see u_isdigit
  * @see u_isalnum
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isalpha(UChar32 c);
 
 /**
@@ -2952,11 +2952,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an alphanumeric character according to Character.isLetterOrDigit()
+ * @return true if the code point is an alphanumeric character according to Character.isLetterOrDigit()
  *
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isalnum(UChar32 c);
 
 /**
@@ -2975,11 +2975,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a hexadecimal digit
+ * @return true if the code point is a hexadecimal digit
  *
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isxdigit(UChar32 c);
 
 /**
@@ -2991,17 +2991,17 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a punctuation character
+ * @return true if the code point is a punctuation character
  *
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_ispunct(UChar32 c);
 
 /**
  * Determines whether the specified code point is a "graphic" character
  * (printable, excluding spaces).
- * TRUE for all characters except those with general categories
+ * true for all characters except those with general categories
  * "Cc" (control codes), "Cf" (format controls), "Cs" (surrogates),
  * "Cn" (unassigned), and "Z" (separators).
  *
@@ -3010,11 +3010,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a "graphic" character
+ * @return true if the code point is a "graphic" character
  *
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isgraph(UChar32 c);
 
 /**
@@ -3022,13 +3022,13 @@
  * a character that visibly separates words on a line.
  * The following are equivalent definitions:
  *
- * TRUE for Unicode White_Space characters except for "vertical space controls"
+ * true for Unicode White_Space characters except for "vertical space controls"
  * where "vertical space controls" are the following characters:
  * U+000A (LF) U+000B (VT) U+000C (FF) U+000D (CR) U+0085 (NEL) U+2028 (LS) U+2029 (PS)
  *
  * same as
  *
- * TRUE for U+0009 (TAB) and characters with general category "Zs" (space separators).
+ * true for U+0009 (TAB) and characters with general category "Zs" (space separators).
  *
  * Note: There are several ICU whitespace functions; please see the uchar.h
  * file documentation for a detailed comparison.
@@ -3038,11 +3038,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a "blank"
+ * @return true if the code point is a "blank"
  *
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isblank(UChar32 c);
 
 /**
@@ -3057,7 +3057,7 @@
  * Same as java.lang.Character.isDefined().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is assigned a character
+ * @return true if the code point is assigned a character
  *
  * @see u_isdigit
  * @see u_isalpha
@@ -3067,7 +3067,7 @@
  * @see u_istitle
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isdefined(UChar32 c);
 
 /**
@@ -3088,7 +3088,7 @@
  * @see u_isUWhiteSpace
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isspace(UChar32 c);
 
 /**
@@ -3102,14 +3102,14 @@
  * file documentation for a detailed comparison.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a space character according to Character.isSpaceChar()
+ * @return true if the code point is a space character according to Character.isSpaceChar()
  *
  * @see u_isspace
  * @see u_isWhitespace
  * @see u_isUWhiteSpace
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isJavaSpaceChar(UChar32 c);
 
 /**
@@ -3142,14 +3142,14 @@
  * file documentation for a detailed comparison.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a whitespace character according to Java/ICU
+ * @return true if the code point is a whitespace character according to Java/ICU
  *
  * @see u_isspace
  * @see u_isJavaSpaceChar
  * @see u_isUWhiteSpace
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isWhitespace(UChar32 c);
 
 /**
@@ -3167,13 +3167,13 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a control character
+ * @return true if the code point is a control character
  *
  * @see UCHAR_DEFAULT_IGNORABLE_CODE_POINT
  * @see u_isprint
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_iscntrl(UChar32 c);
 
 /**
@@ -3183,12 +3183,12 @@
  * Same as java.lang.Character.isISOControl().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an ISO control code
+ * @return true if the code point is an ISO control code
  *
  * @see u_iscntrl
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isISOControl(UChar32 c);
 
 /**
@@ -3200,13 +3200,13 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a printable character
+ * @return true if the code point is a printable character
  *
  * @see UCHAR_DEFAULT_IGNORABLE_CODE_POINT
  * @see u_iscntrl
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isprint(UChar32 c);
 
 /**
@@ -3220,13 +3220,13 @@
  * Letter (L), Number (N), Punctuation (P), Symbol (S), or Space Separator (Zs).
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a base character according to this function
+ * @return true if the code point is a base character according to this function
  *
  * @see u_isalpha
  * @see u_isdigit
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isbase(UChar32 c);
 
 /**
@@ -3245,7 +3245,7 @@
  * @see UCharDirection
  * @stable ICU 2.0
  */
-U_STABLE UCharDirection U_EXPORT2
+U_CAPI UCharDirection U_EXPORT2
 u_charDirection(UChar32 c);
 
 /**
@@ -3258,12 +3258,12 @@
  * Same as UCHAR_BIDI_MIRRORED
  *
  * @param c the code point to be tested
- * @return TRUE if the character has the Bidi_Mirrored property
+ * @return true if the character has the Bidi_Mirrored property
  *
  * @see UCHAR_BIDI_MIRRORED
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isMirrored(UChar32 c);
 
 /**
@@ -3285,7 +3285,7 @@
  * @see u_isMirrored
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_charMirror(UChar32 c);
 
 /**
@@ -3304,7 +3304,7 @@
  * @see u_charMirror
  * @stable ICU 52
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_getBidiPairedBracket(UChar32 c);
 
 /**
@@ -3318,7 +3318,7 @@
  * @see UCharCategory
  * @stable ICU 2.0
  */
-U_STABLE int8_t U_EXPORT2
+U_CAPI int8_t U_EXPORT2
 u_charType(UChar32 c);
 
 /**
@@ -3341,13 +3341,13 @@
  * of code points c (where start<=c<limit)
  * with the same Unicode general category ("character type").
  *
- * The callback function can stop the enumeration by returning FALSE.
+ * The callback function can stop the enumeration by returning false.
  *
  * @param context an opaque pointer, as passed into utrie_enum()
  * @param start the first code point in a contiguous range with value
  * @param limit one past the last code point in a contiguous range with value
  * @param type the general category for all code points in [start..limit[
- * @return FALSE to stop the enumeration
+ * @return false to stop the enumeration
  *
  * @stable ICU 2.1
  * @see UCharCategory
@@ -3375,7 +3375,7 @@
  * @see UCharCategory
  * @see UCharEnumTypeRange
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_enumCharTypes(UCharEnumTypeRange *enumRange, const void *context);
 
 #if !UCONFIG_NO_NORMALIZATION
@@ -3387,7 +3387,7 @@
  * @return the combining class of the character
  * @stable ICU 2.0
  */
-U_STABLE uint8_t U_EXPORT2
+U_CAPI uint8_t U_EXPORT2
 u_getCombiningClass(UChar32 c);
 
 #endif
@@ -3415,7 +3415,7 @@
  * @see u_getNumericValue
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_charDigitValue(UChar32 c);
 
 /**
@@ -3427,7 +3427,7 @@
  * @see UBlockCode
  * @stable ICU 2.0
  */
-U_STABLE UBlockCode U_EXPORT2
+U_CAPI UBlockCode U_EXPORT2
 ublock_getCode(UChar32 c);
 
 /**
@@ -3462,7 +3462,7 @@
  * @see u_enumCharNames
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_charName(UChar32 code, UCharNameChoice nameChoice,
            char *buffer, int32_t bufferLength,
            UErrorCode *pErrorCode);
@@ -3512,7 +3512,7 @@
  * @see u_enumCharNames
  * @stable ICU 1.7
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_charFromName(UCharNameChoice nameChoice,
                const char *name,
                UErrorCode *pErrorCode);
@@ -3521,14 +3521,14 @@
  * Type of a callback function for u_enumCharNames() that gets called
  * for each Unicode character with the code point value and
  * the character name.
- * If such a function returns FALSE, then the enumeration is stopped.
+ * If such a function returns false, then the enumeration is stopped.
  *
  * @param context The context pointer that was passed to u_enumCharNames().
  * @param code The Unicode code point for the character with this name.
  * @param nameChoice Selector for which kind of names is enumerated.
  * @param name The character's name, zero-terminated.
  * @param length The length of the name.
- * @return TRUE if the enumeration should continue, FALSE to stop it.
+ * @return true if the enumeration should continue, false to stop it.
  *
  * @see UCharNameChoice
  * @see u_enumCharNames
@@ -3561,7 +3561,7 @@
  * @see u_charFromName
  * @stable ICU 1.7
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_enumCharNames(UChar32 start, UChar32 limit,
                 UEnumCharNamesFn *fn,
                 void *context,
@@ -3599,7 +3599,7 @@
  * @see UPropertyNameChoice
  * @stable ICU 2.4
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 u_getPropertyName(UProperty property,
                   UPropertyNameChoice nameChoice);
 
@@ -3622,7 +3622,7 @@
  * @see UProperty
  * @stable ICU 2.4
  */
-U_STABLE UProperty U_EXPORT2
+U_CAPI UProperty U_EXPORT2
 u_getPropertyEnum(const char* alias);
 
 /**
@@ -3672,7 +3672,7 @@
  * @see UPropertyNameChoice
  * @stable ICU 2.4
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 u_getPropertyValueName(UProperty property,
                        int32_t value,
                        UPropertyNameChoice nameChoice);
@@ -3708,7 +3708,7 @@
  * @see UProperty
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getPropertyValueEnum(UProperty property,
                        const char* alias);
 
@@ -3722,14 +3722,14 @@
  * Same as UCHAR_ID_START
  *
  * @param c the code point to be tested
- * @return TRUE if the code point may start an identifier
+ * @return true if the code point may start an identifier
  *
  * @see UCHAR_ID_START
  * @see u_isalpha
  * @see u_isIDPart
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isIDStart(UChar32 c);
 
 /**
@@ -3746,14 +3746,14 @@
  * u_isIDIgnorable(c).
  *
  * @param c the code point to be tested
- * @return TRUE if the code point may occur in an identifier according to Java
+ * @return true if the code point may occur in an identifier according to Java
  *
  * @see UCHAR_ID_CONTINUE
  * @see u_isIDStart
  * @see u_isIDIgnorable
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isIDPart(UChar32 c);
 
 /**
@@ -3769,14 +3769,14 @@
  * Note that Unicode just recommends to ignore Cf (format controls).
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is ignorable in identifiers according to Java
+ * @return true if the code point is ignorable in identifiers according to Java
  *
  * @see UCHAR_DEFAULT_IGNORABLE_CODE_POINT
  * @see u_isIDStart
  * @see u_isIDPart
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isIDIgnorable(UChar32 c);
 
 /**
@@ -3788,14 +3788,14 @@
  * Same as java.lang.Character.isJavaIdentifierStart().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point may start a Java identifier
+ * @return true if the code point may start a Java identifier
  *
  * @see     u_isJavaIDPart
  * @see     u_isalpha
  * @see     u_isIDStart
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isJavaIDStart(UChar32 c);
 
 /**
@@ -3807,7 +3807,7 @@
  * Same as java.lang.Character.isJavaIdentifierPart().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point may occur in a Java identifier
+ * @return true if the code point may occur in a Java identifier
  *
  * @see     u_isIDIgnorable
  * @see     u_isJavaIDStart
@@ -3816,7 +3816,7 @@
  * @see     u_isIDPart
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isJavaIDPart(UChar32 c);
 
 /**
@@ -3841,7 +3841,7 @@
  *         otherwise the code point itself.
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_tolower(UChar32 c);
 
 /**
@@ -3866,7 +3866,7 @@
  *         otherwise the code point itself.
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_toupper(UChar32 c);
 
 /**
@@ -3891,7 +3891,7 @@
  *         otherwise the code point itself.
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_totitle(UChar32 c);
 
 /**
@@ -3916,7 +3916,7 @@
  *         otherwise the code point itself.
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_foldCase(UChar32 c, uint32_t options);
 
 /**
@@ -3957,7 +3957,7 @@
  * @see     u_isdigit
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_digit(UChar32 ch, int8_t radix);
 
 /**
@@ -3988,7 +3988,7 @@
  * @see     u_isdigit
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_forDigit(int32_t digit, int8_t radix);
 
 /**
@@ -4005,7 +4005,7 @@
  *
  * @stable ICU 2.1
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_charAge(UChar32 c, UVersionInfo versionArray);
 
 /**
@@ -4019,7 +4019,7 @@
  *                     the Unicode version number
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_getUnicodeVersion(UVersionInfo versionArray);
 
 #if !UCONFIG_NO_NORMALIZATION
@@ -4044,7 +4044,7 @@
  *
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getFC_NFKC_Closure(UChar32 c, UChar *dest, int32_t destCapacity, UErrorCode *pErrorCode);
 
 #endif
diff --git a/icu4c/source/common/unicode/ucharstrie.h b/icu4c/source/common/unicode/ucharstrie.h
index d5729d9..b6f9e3e 100644
--- a/icu4c/source/common/unicode/ucharstrie.h
+++ b/icu4c/source/common/unicode/ucharstrie.h
@@ -97,14 +97,13 @@
         return *this;
     }
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns the state of this trie as a 64-bit integer.
      * The state value is never 0.
      *
      * @return opaque state value
      * @see resetToState64
-     * @draft ICU 65
+     * @stable ICU 65
      */
     uint64_t getState64() const {
         return (static_cast<uint64_t>(remainingMatchLength_ + 2) << kState64RemainingShift) |
@@ -123,14 +122,13 @@
      * @see getState64
      * @see resetToState
      * @see reset
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UCharsTrie &resetToState64(uint64_t state) {
         remainingMatchLength_ = static_cast<int32_t>(state >> kState64RemainingShift) - 2;
         pos_ = uchars_ + (state & kState64PosMask);
         return *this;
     }
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * UCharsTrie state object, for saving a trie's current state
@@ -268,16 +266,16 @@
     /**
      * Determines whether all strings reachable from the current state
      * map to the same value.
-     * @param uniqueValue Receives the unique value, if this function returns TRUE.
+     * @param uniqueValue Receives the unique value, if this function returns true.
      *                    (output-only)
-     * @return TRUE if all strings reachable from the current state
+     * @return true if all strings reachable from the current state
      *         map to the same value.
      * @stable ICU 4.8
      */
     inline UBool hasUniqueValue(int32_t &uniqueValue) const {
         const char16_t *pos=pos_;
         // Skip the rest of a pending linear-match node.
-        return pos!=NULL && findUniqueValue(pos+remainingMatchLength_+1, FALSE, uniqueValue);
+        return pos!=NULL && findUniqueValue(pos+remainingMatchLength_+1, false, uniqueValue);
     }
 
     /**
@@ -335,7 +333,7 @@
         Iterator &reset();
 
         /**
-         * @return TRUE if there are more elements.
+         * @return true if there are more elements.
          * @stable ICU 4.8
          */
         UBool hasNext() const;
@@ -351,7 +349,7 @@
          *                  pass the U_SUCCESS() test, or else the function returns
          *                  immediately. Check for U_FAILURE() on output or use with
          *                  function chaining. (See User Guide for details.)
-         * @return TRUE if there is another element.
+         * @return true if there is another element.
          * @stable ICU 4.8
          */
         UBool next(UErrorCode &errorCode);
@@ -371,7 +369,7 @@
         UBool truncateAndStop() {
             pos_=NULL;
             value_=-1;  // no real value for str
-            return TRUE;
+            return true;
         }
 
         const char16_t *branchNext(const char16_t *pos, int32_t length, UErrorCode &errorCode);
diff --git a/icu4c/source/common/unicode/ucharstriebuilder.h b/icu4c/source/common/unicode/ucharstriebuilder.h
index 540dcc0..1565770 100644
--- a/icu4c/source/common/unicode/ucharstriebuilder.h
+++ b/icu4c/source/common/unicode/ucharstriebuilder.h
@@ -101,9 +101,10 @@
      * Multiple calls to buildUnicodeString() set the UnicodeStrings to the
      * builder's same char16_t array, without rebuilding.
      * If buildUnicodeString() is called after build(), the trie will be
-     * re-serialized into a new array.
-     * If build() is called after buildUnicodeString(), the trie object will become
-     * the owner of the previously returned array.
+     * re-serialized into a new array (because build() passes on ownership).
+     * If build() is called after buildUnicodeString(), the trie object returned
+     * by build() will become the owner of the underlying data for the
+     * previously returned UnicodeString.
      * After clear() has been called, a new array will be used as well.
      * @param buildOption Build option, see UStringTrieBuildOption.
      * @param result A UnicodeString which will be set to the char16_t-serialized
@@ -147,7 +148,7 @@
     virtual int32_t skipElementsBySomeUnits(int32_t i, int32_t unitIndex, int32_t count) const;
     virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t unitIndex, char16_t unit) const;
 
-    virtual UBool matchNodesCanHaveValues() const { return TRUE; }
+    virtual UBool matchNodesCanHaveValues() const { return true; }
 
     virtual int32_t getMaxBranchLinearSubNodeLength() const { return UCharsTrie::kMaxBranchLinearSubNodeLength; }
     virtual int32_t getMinLinearMatch() const { return UCharsTrie::kMinLinearMatch; }
diff --git a/icu4c/source/common/unicode/uchriter.h b/icu4c/source/common/unicode/uchriter.h
index a485259..f508356 100644
--- a/icu4c/source/common/unicode/uchriter.h
+++ b/icu4c/source/common/unicode/uchriter.h
@@ -274,11 +274,11 @@
   virtual UChar32       next32PostInc(void);
 
   /**
-   * Returns FALSE if there are no more code units or code points
+   * Returns false if there are no more code units or code points
    * at or after the current position in the iteration range.
    * This is used with nextPostInc() or next32PostInc() in forward
    * iteration.
-   * @return FALSE if there are no more code units or code points
+   * @return false if there are no more code units or code points
    * at or after the current position in the iteration range.
    * @stable ICU 2.0
    */
@@ -303,11 +303,11 @@
   virtual UChar32       previous32(void);
 
   /**
-   * Returns FALSE if there are no more code units or code points
+   * Returns false if there are no more code units or code points
    * before the current position in the iteration range.
    * This is used with previous() or previous32() in backward
    * iteration.
-   * @return FALSE if there are no more code units or code points
+   * @return false if there are no more code units or code points
    * before the current position in the iteration range.
    * @stable ICU 2.0
    */
diff --git a/icu4c/source/common/unicode/uclean.h b/icu4c/source/common/unicode/uclean.h
index 7cef6db..c2d920a 100644
--- a/icu4c/source/common/unicode/uclean.h
+++ b/icu4c/source/common/unicode/uclean.h
@@ -49,7 +49,7 @@
  *
  * @stable ICU 2.6
  */  
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_init(UErrorCode *status);
 
 #ifndef U_HIDE_SYSTEM_API
@@ -98,7 +98,7 @@
  * @stable ICU 2.0
  * @system
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_cleanup(void);
 
 U_CDECL_BEGIN
@@ -148,7 +148,7 @@
  *  @stable ICU 2.8
  *  @system
  */  
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_setMemoryFunctions(const void *context, UMemAllocFn * U_CALLCONV_FPTR a, UMemReallocFn * U_CALLCONV_FPTR r, UMemFreeFn * U_CALLCONV_FPTR f, 
                     UErrorCode *status);
 
diff --git a/icu4c/source/common/unicode/ucnv.h b/icu4c/source/common/unicode/ucnv.h
index e0cfe94..58f271c 100644
--- a/icu4c/source/common/unicode/ucnv.h
+++ b/icu4c/source/common/unicode/ucnv.h
@@ -311,7 +311,7 @@
  * lexically follows name2.
  * @stable ICU 2.0
  */
-U_STABLE int U_EXPORT2
+U_CAPI int U_EXPORT2
 ucnv_compareNames(const char *name1, const char *name2);
 
 
@@ -365,7 +365,7 @@
  * @see ucnv_compareNames
  * @stable ICU 2.0
  */
-U_STABLE UConverter* U_EXPORT2
+U_CAPI UConverter* U_EXPORT2
 ucnv_open(const char *converterName, UErrorCode *err);
 
 
@@ -395,7 +395,7 @@
  * @see ucnv_compareNames
  * @stable ICU 2.0
  */
-U_STABLE UConverter* U_EXPORT2
+U_CAPI UConverter* U_EXPORT2
 ucnv_openU(const UChar *name,
            UErrorCode *err);
 
@@ -463,7 +463,7 @@
  * @see UConverterPlatform
  * @stable ICU 2.0
  */
-U_STABLE UConverter* U_EXPORT2
+U_CAPI UConverter* U_EXPORT2
 ucnv_openCCSID(int32_t codepage,
                UConverterPlatform platform,
                UErrorCode * err);
@@ -479,7 +479,7 @@
  * <p>The name will NOT be looked up in the alias mechanism, nor will the converter be
  * stored in the converter cache or the alias table. The only way to open further converters
  * is call this function multiple times, or use the ucnv_safeClone() function to clone a
- * 'master' converter.</p>
+ * 'primary' converter.</p>
  *
  * <p>A future version of ICU may add alias table lookups and/or caching
  * to this function.</p>
@@ -498,7 +498,7 @@
  * @see ucnv_close
  * @stable ICU 2.2
  */
-U_STABLE UConverter* U_EXPORT2
+U_CAPI UConverter* U_EXPORT2
 ucnv_openPackage(const char *packageName, const char *converterName, UErrorCode *err);
 
 /**
@@ -540,7 +540,7 @@
  * @return pointer to the new clone
  * @stable ICU 2.0
  */
-U_STABLE UConverter * U_EXPORT2
+U_CAPI UConverter * U_EXPORT2
 ucnv_safeClone(const UConverter *cnv,
                void             *stackBuffer,
                int32_t          *pBufferSize,
@@ -569,7 +569,7 @@
  * @see ucnv_openCCSID
  * @stable ICU 2.0
  */
-U_STABLE void  U_EXPORT2
+U_CAPI void  U_EXPORT2
 ucnv_close(UConverter * converter);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -608,7 +608,7 @@
  * @see ucnv_setSubstChars
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getSubstChars(const UConverter *converter,
                    char *subChars,
                    int8_t *len,
@@ -633,7 +633,7 @@
  * @see ucnv_getSubstChars
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_setSubstChars(UConverter *converter,
                    const char *subChars,
                    int8_t len,
@@ -666,7 +666,7 @@
  * @see ucnv_getSubstChars
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_setSubstString(UConverter *cnv,
                     const UChar *s,
                     int32_t length,
@@ -685,7 +685,7 @@
  * <TT>U_INDEX_OUTOFBOUNDS_ERROR</TT> will be returned.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getInvalidChars(const UConverter *converter,
                      char *errBytes,
                      int8_t *len,
@@ -704,7 +704,7 @@
  * <TT>U_INDEX_OUTOFBOUNDS_ERROR</TT> will be returned.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getInvalidUChars(const UConverter *converter,
                       UChar *errUChars,
                       int8_t *len,
@@ -717,7 +717,7 @@
  * @param converter the Unicode converter
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_reset(UConverter *converter);
 
 /**
@@ -728,7 +728,7 @@
  * @param converter the Unicode converter
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_resetToUnicode(UConverter *converter);
 
 /**
@@ -739,7 +739,7 @@
  * @param converter the Unicode converter
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_resetFromUnicode(UConverter *converter);
 
 /**
@@ -792,7 +792,7 @@
  * @see ucnv_getMinCharSize
  * @stable ICU 2.0
  */
-U_STABLE int8_t U_EXPORT2
+U_CAPI int8_t U_EXPORT2
 ucnv_getMaxCharSize(const UConverter *converter);
 
 /**
@@ -825,7 +825,7 @@
  * @see ucnv_getMaxCharSize
  * @stable ICU 2.0
  */
-U_STABLE int8_t U_EXPORT2
+U_CAPI int8_t U_EXPORT2
 ucnv_getMinCharSize(const UConverter *converter);
 
 /**
@@ -842,7 +842,7 @@
  * @see ucnv_getName
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_getDisplayName(const UConverter *converter,
                     const char *displayLocale,
                     UChar *displayName,
@@ -859,7 +859,7 @@
  * @see ucnv_getDisplayName
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucnv_getName(const UConverter *converter, UErrorCode *err);
 
 /**
@@ -885,7 +885,7 @@
  * @see ucnv_getPlatform
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_getCCSID(const UConverter *converter,
               UErrorCode *err);
 
@@ -899,7 +899,7 @@
  * @return The codepage platform
  * @stable ICU 2.0
  */
-U_STABLE UConverterPlatform U_EXPORT2
+U_CAPI UConverterPlatform U_EXPORT2
 ucnv_getPlatform(const UConverter *converter,
                  UErrorCode *err);
 
@@ -911,14 +911,14 @@
  * @return the type of the converter
  * @stable ICU 2.0
  */
-U_STABLE UConverterType U_EXPORT2
+U_CAPI UConverterType U_EXPORT2
 ucnv_getType(const UConverter * converter);
 
 /**
  * Gets the "starter" (lead) bytes for converters of type MBCS.
  * Will fill in an <TT>U_ILLEGAL_ARGUMENT_ERROR</TT> if converter passed in
  * is not MBCS. Fills in an array of type UBool, with the value of the byte
- * as offset to the array. For example, if (starters[0x20] == TRUE) at return,
+ * as offset to the array. For example, if (starters[0x20] == true) at return,
  * it means that the byte 0x20 is a starter byte in this converter.
  * Context pointers are always owned by the caller.
  *
@@ -929,7 +929,7 @@
  * @see ucnv_getType
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getStarters(const UConverter* converter,
                  UBool starters[256],
                  UErrorCode* err);
@@ -1000,7 +1000,7 @@
  * @see uset_close
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getUnicodeSet(const UConverter *cnv,
                    USet *setFillIn,
                    UConverterUnicodeSet whichSet,
@@ -1017,7 +1017,7 @@
  * @see ucnv_setToUCallBack
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getToUCallBack (const UConverter * converter,
                      UConverterToUCallback *action,
                      const void **context);
@@ -1033,7 +1033,7 @@
  * @see ucnv_setFromUCallBack
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getFromUCallBack (const UConverter * converter,
                        UConverterFromUCallback *action,
                        const void **context);
@@ -1053,7 +1053,7 @@
  * @see ucnv_getToUCallBack
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_setToUCallBack (UConverter * converter,
                      UConverterToUCallback newAction,
                      const void* newContext,
@@ -1076,7 +1076,7 @@
  * @see ucnv_getFromUCallBack
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_setFromUCallBack (UConverter * converter,
                        UConverterFromUCallback newAction,
                        const void *newContext,
@@ -1103,7 +1103,7 @@
  *  consumed. At that point, the caller should reset the source and
  *  sourceLimit pointers to point to the next chunk.
  *
- * At the end of the stream (flush==TRUE), the input is completely consumed
+ * At the end of the stream (flush==true), the input is completely consumed
  * when *source==sourceLimit and no error code is set.
  * The converter object is then automatically reset by this function.
  * (This means that a converter need not be reset explicitly between data
@@ -1128,9 +1128,9 @@
  * e.g: <TT>offsets[3]</TT> is equal to 6, it means that the <TT>target[3]</TT> was a result of transcoding <TT>source[6]</TT>
  * For output data carried across calls, and other data without a specific source character
  * (such as from escape sequences or callbacks)  -1 will be placed for offsets.
- * @param flush set to <TT>TRUE</TT> if the current source buffer is the last available
- * chunk of the source, <TT>FALSE</TT> otherwise. Note that if a failing status is returned,
- * this function may have to be called multiple times with flush set to <TT>TRUE</TT> until
+ * @param flush set to <TT>true</TT> if the current source buffer is the last available
+ * chunk of the source, <TT>false</TT> otherwise. Note that if a failing status is returned,
+ * this function may have to be called multiple times with flush set to <TT>true</TT> until
  * the source buffer is consumed.
  * @param err the error status.  <TT>U_ILLEGAL_ARGUMENT_ERROR</TT> will be set if the
  * converter is <TT>NULL</TT>.
@@ -1142,7 +1142,7 @@
  * @see ucnv_setToUCallBack
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_fromUnicode (UConverter * converter,
                   char **target,
                   const char *targetLimit,
@@ -1172,7 +1172,7 @@
  *  consumed. At that point, the caller should reset the source and
  *  sourceLimit pointers to point to the next chunk.
  *
- * At the end of the stream (flush==TRUE), the input is completely consumed
+ * At the end of the stream (flush==true), the input is completely consumed
  * when *source==sourceLimit and no error code is set
  * The converter object is then automatically reset by this function.
  * (This means that a converter need not be reset explicitly between data
@@ -1196,9 +1196,9 @@
  * e.g: <TT>offsets[3]</TT> is equal to 6, it means that the <TT>target[3]</TT> was a result of transcoding <TT>source[6]</TT>
  * For output data carried across calls, and other data without a specific source character
  * (such as from escape sequences or callbacks)  -1 will be placed for offsets.
- * @param flush set to <TT>TRUE</TT> if the current source buffer is the last available
- * chunk of the source, <TT>FALSE</TT> otherwise. Note that if a failing status is returned,
- * this function may have to be called multiple times with flush set to <TT>TRUE</TT> until
+ * @param flush set to <TT>true</TT> if the current source buffer is the last available
+ * chunk of the source, <TT>false</TT> otherwise. Note that if a failing status is returned,
+ * this function may have to be called multiple times with flush set to <TT>true</TT> until
  * the source buffer is consumed.
  * @param err the error status.  <TT>U_ILLEGAL_ARGUMENT_ERROR</TT> will be set if the
  * converter is <TT>NULL</TT>.
@@ -1211,7 +1211,7 @@
  * @see ucnv_getNextUChar
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_toUnicode(UConverter *converter,
                UChar **target,
                const UChar *targetLimit,
@@ -1248,7 +1248,7 @@
  * @see UCNV_GET_MAX_BYTES_FOR_STRING
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_fromUChars(UConverter *cnv,
                 char *dest, int32_t destCapacity,
                 const UChar *src, int32_t srcLength,
@@ -1280,7 +1280,7 @@
  * @see ucnv_convert
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_toUChars(UConverter *cnv,
               UChar *dest, int32_t destCapacity,
               const char *src, int32_t srcLength,
@@ -1298,7 +1298,7 @@
  * - Convenient.
  *
  * Limitations compared to ucnv_toUnicode():
- * - Always assumes flush=TRUE.
+ * - Always assumes flush=true.
  *   This makes ucnv_getNextUChar() unsuitable for "streaming" conversion,
  *   that is, for where the input is supplied in multiple buffers,
  *   because ucnv_getNextUChar() will assume the end of the input at the end
@@ -1309,7 +1309,7 @@
  * ucnv_getNextUChar() uses the current state of the converter
  * (unlike ucnv_toUChars() which always resets first).
  * However, if ucnv_getNextUChar() is called after ucnv_toUnicode()
- * stopped in the middle of a character sequence (with flush=FALSE),
+ * stopped in the middle of a character sequence (with flush=false),
  * then ucnv_getNextUChar() will always use the slower ucnv_toUnicode()
  * internally until the next character boundary.
  * (This is new in ICU 2.6. In earlier releases, ucnv_getNextUChar() had to
@@ -1356,7 +1356,7 @@
  * @see ucnv_convert
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 ucnv_getNextUChar(UConverter * converter,
                   const char **source,
                   const char * sourceLimit,
@@ -1388,7 +1388,7 @@
  *
  * ucnv_convertEx() also provides further convenience:
  * - an option to reset the converters at the beginning
- *   (if reset==TRUE, see parameters;
+ *   (if reset==true, see parameters;
  *    also sets *pivotTarget=*pivotSource=pivotStart)
  * - allow NUL-terminated input
  *   (only a single NUL byte, will not work for charsets with multi-byte NULs)
@@ -1445,7 +1445,7 @@
  *                    &target, u8+capacity,
  *                    &s, s+length,
  *                    NULL, NULL, NULL, NULL,
- *                    TRUE, TRUE,
+ *                    true, true,
  *                    pErrorCode);
  *
  *     myReleaseCachedUTF8Converter(utf8Cnv);
@@ -1477,7 +1477,7 @@
  *                      It must be pivotStart<=*pivotSource<=*pivotTarget<=pivotLimit
  *                      and pivotStart<pivotLimit (unless pivotStart==NULL).
  * @param pivotLimit    Pointer to the first unit after the pivot buffer.
- * @param reset         If TRUE, then ucnv_resetToUnicode(sourceCnv) and
+ * @param reset         If true, then ucnv_resetToUnicode(sourceCnv) and
  *                      ucnv_resetFromUnicode(targetCnv) are called, and the
  *                      pivot pointers are reset (*pivotTarget=*pivotSource=pivotStart).
  * @param flush         If true, indicates the end of the input.
@@ -1500,7 +1500,7 @@
  * @see ucnv_toUChars
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
                char **target, const char *targetLimit,
                const char **source, const char *sourceLimit,
@@ -1564,7 +1564,7 @@
  * @see ucnv_getNextUChar
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_convert(const char *toConverterName,
              const char *fromConverterName,
              char *target,
@@ -1618,7 +1618,7 @@
  * @see ucnv_toUChars
  * @stable ICU 2.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_toAlgorithmic(UConverterType algorithmicType,
                    UConverter *cnv,
                    char *target, int32_t targetCapacity,
@@ -1670,7 +1670,7 @@
  * @see ucnv_toUChars
  * @stable ICU 2.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_fromAlgorithmic(UConverter *cnv,
                      UConverterType algorithmicType,
                      char *target, int32_t targetCapacity,
@@ -1684,7 +1684,7 @@
  * @see ucnv_close
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_flushCache(void);
 
 /**
@@ -1694,7 +1694,7 @@
  * @see ucnv_getAvailableName
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_countAvailable(void);
 
 /**
@@ -1707,7 +1707,7 @@
  * @see ucnv_countAvailable
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 ucnv_getAvailableName(int32_t n);
 
 /**
@@ -1722,7 +1722,7 @@
  * @see uenum_next
  * @stable ICU 2.4
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucnv_openAllNames(UErrorCode *pErrorCode);
 
 /**
@@ -1735,7 +1735,7 @@
  * @return number of names on alias list for given alias
  * @stable ICU 2.0
  */
-U_STABLE uint16_t U_EXPORT2
+U_CAPI uint16_t U_EXPORT2
 ucnv_countAliases(const char *alias, UErrorCode *pErrorCode);
 
 /**
@@ -1750,7 +1750,7 @@
  * @see ucnv_countAliases
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucnv_getAlias(const char *alias, uint16_t n, UErrorCode *pErrorCode);
 
 /**
@@ -1766,7 +1766,7 @@
  * @param pErrorCode result of operation
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getAliases(const char *alias, const char **aliases, UErrorCode *pErrorCode);
 
 /**
@@ -1792,7 +1792,7 @@
  * @see uenum_next
  * @stable ICU 2.2
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucnv_openStandardNames(const char *convName,
                        const char *standard,
                        UErrorCode *pErrorCode);
@@ -1802,7 +1802,7 @@
  * @return number of standards
  * @stable ICU 2.0
  */
-U_STABLE uint16_t U_EXPORT2
+U_CAPI uint16_t U_EXPORT2
 ucnv_countStandards(void);
 
 /**
@@ -1812,7 +1812,7 @@
  * @return returns the name of the standard at given index. Owned by the library.
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucnv_getStandard(uint16_t n, UErrorCode *pErrorCode);
 
 /**
@@ -1834,7 +1834,7 @@
  *         then <code>NULL</code> is returned. Owned by the library.
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucnv_getStandardName(const char *name, const char *standard, UErrorCode *pErrorCode);
 
 /**
@@ -1856,7 +1856,7 @@
  * @see ucnv_getStandardName
  * @stable ICU 2.4
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucnv_getCanonicalName(const char *alias, const char *standard, UErrorCode *pErrorCode);
 
 /**
@@ -1873,7 +1873,7 @@
  * @see ucnv_setDefaultName
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucnv_getDefaultName(void);
 
 #ifndef U_HIDE_SYSTEM_API
@@ -1893,7 +1893,7 @@
  * @system
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_setDefaultName(const char *name);
 #endif  /* U_HIDE_SYSTEM_API */
 
@@ -1914,18 +1914,18 @@
  * @see ucnv_isAmbiguous
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_fixFileSeparator(const UConverter *cnv, UChar *source, int32_t sourceLen);
 
 /**
  * Determines if the converter contains ambiguous mappings of the same
  * character or not.
  * @param cnv the converter to be tested
- * @return TRUE if the converter contains ambiguous mapping of the same
- * character, FALSE otherwise.
+ * @return true if the converter contains ambiguous mapping of the same
+ * character, false otherwise.
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucnv_isAmbiguous(const UConverter *cnv);
 
 /**
@@ -1938,12 +1938,12 @@
  * http://www.icu-project.org/userguide/conversion-data.html#ucmformat
  *
  * @param cnv The converter to set the fallback mapping usage on.
- * @param usesFallback TRUE if the user wants the converter to take advantage of the fallback
- * mapping, FALSE otherwise.
+ * @param usesFallback true if the user wants the converter to take advantage of the fallback
+ * mapping, false otherwise.
  * @stable ICU 2.0
  * @see ucnv_usesFallback
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_setFallback(UConverter *cnv, UBool usesFallback);
 
 /**
@@ -1951,11 +1951,11 @@
  * This flag has restrictions, see ucnv_setFallback().
  *
  * @param cnv The converter to be tested
- * @return TRUE if the converter uses fallback, FALSE otherwise.
+ * @return true if the converter uses fallback, false otherwise.
  * @stable ICU 2.0
  * @see ucnv_setFallback
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucnv_usesFallback(const UConverter *cnv);
 
 /**
@@ -1987,7 +1987,7 @@
  * @return The name of the encoding detected. NULL if encoding is not detected.
  * @stable ICU 2.4
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 ucnv_detectUnicodeSignature(const char* source,
                             int32_t sourceLength,
                             int32_t *signatureLength,
@@ -2004,7 +2004,7 @@
  * @return The number of UChars in the state. -1 if an error is encountered.
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_fromUCountPending(const UConverter* cnv, UErrorCode* status);
 
 /**
@@ -2018,7 +2018,7 @@
  * @return The number of chars in the state. -1 if an error is encountered.
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_toUCountPending(const UConverter* cnv, UErrorCode* status);
 
 /**
@@ -2030,13 +2030,13 @@
  * but a UTF-32 converter encodes each code point with 4 bytes.
  * Note: This method is not intended to be used to determine whether the charset has a
  * fixed ratio of bytes to Unicode codes <i>units</i> for any particular Unicode encoding form.
- * FALSE is returned with the UErrorCode if error occurs or cnv is NULL.
+ * false is returned with the UErrorCode if error occurs or cnv is NULL.
  * @param cnv       The converter to be tested
  * @param status    ICU error code in/out paramter
- * @return TRUE if the converter is fixed-width
+ * @return true if the converter is fixed-width
  * @stable ICU 4.8
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucnv_isFixedWidth(UConverter *cnv, UErrorCode *status);
 
 #endif
diff --git a/icu4c/source/common/unicode/ucnv_cb.h b/icu4c/source/common/unicode/ucnv_cb.h
index 14169ed..41845d1 100644
--- a/icu4c/source/common/unicode/ucnv_cb.h
+++ b/icu4c/source/common/unicode/ucnv_cb.h
@@ -84,7 +84,7 @@
  * @see ucnv_cbFromUWriteSub
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_cbFromUWriteBytes (UConverterFromUnicodeArgs *args,
                         const char* source,
                         int32_t length,
@@ -104,7 +104,7 @@
  * @see ucnv_cbFromUWriteBytes
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucnv_cbFromUWriteSub (UConverterFromUnicodeArgs *args,
                       int32_t offsetIndex,
                       UErrorCode * err);
@@ -121,7 +121,7 @@
  * @see ucnv_cbToUWriteSub
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 ucnv_cbFromUWriteUChars(UConverterFromUnicodeArgs *args,
+U_CAPI void U_EXPORT2 ucnv_cbFromUWriteUChars(UConverterFromUnicodeArgs *args,
                              const UChar** source,
                              const UChar*  sourceLimit,
                              int32_t offsetIndex,
@@ -140,7 +140,7 @@
  * @see ucnv_cbToUWriteSub
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 ucnv_cbToUWriteUChars (UConverterToUnicodeArgs *args,
+U_CAPI void U_EXPORT2 ucnv_cbToUWriteUChars (UConverterToUnicodeArgs *args,
                                              const UChar* source,
                                              int32_t length,
                                              int32_t offsetIndex,
@@ -156,7 +156,7 @@
  * @see ucnv_cbToUWriteUChars
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 ucnv_cbToUWriteSub (UConverterToUnicodeArgs *args,
+U_CAPI void U_EXPORT2 ucnv_cbToUWriteSub (UConverterToUnicodeArgs *args,
                        int32_t offsetIndex,
                        UErrorCode * err);
 #endif
diff --git a/icu4c/source/common/unicode/ucnv_err.h b/icu4c/source/common/unicode/ucnv_err.h
index d234710..7209ba5 100644
--- a/icu4c/source/common/unicode/ucnv_err.h
+++ b/icu4c/source/common/unicode/ucnv_err.h
@@ -193,7 +193,7 @@
  */
 typedef struct {
     uint16_t size;              /**< The size of this struct. @stable ICU 2.0 */
-    UBool flush;                /**< The internal state of converter will be reset and data flushed if set to TRUE. @stable ICU 2.0    */
+    UBool flush;                /**< The internal state of converter will be reset and data flushed if set to true. @stable ICU 2.0    */
     UConverter *converter;      /**< Pointer to the converter that is opened and to which this struct is passed as an argument. @stable ICU 2.0  */
     const UChar *source;        /**< Pointer to the source source buffer. @stable ICU 2.0    */
     const UChar *sourceLimit;   /**< Pointer to the limit (end + 1) of source buffer. @stable ICU 2.0    */
@@ -209,7 +209,7 @@
  */
 typedef struct {
     uint16_t size;              /**< The size of this struct   @stable ICU 2.0 */
-    UBool flush;                /**< The internal state of converter will be reset and data flushed if set to TRUE. @stable ICU 2.0   */
+    UBool flush;                /**< The internal state of converter will be reset and data flushed if set to true. @stable ICU 2.0   */
     UConverter *converter;      /**< Pointer to the converter that is opened and to which this struct is passed as an argument. @stable ICU 2.0 */
     const char *source;         /**< Pointer to the source source buffer. @stable ICU 2.0    */
     const char *sourceLimit;    /**< Pointer to the limit (end + 1) of source buffer. @stable ICU 2.0    */
@@ -233,7 +233,7 @@
  * @param err This should always be set to a failure status prior to calling.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_STOP (
+U_CAPI void U_EXPORT2 UCNV_FROM_U_CALLBACK_STOP (
                   const void *context,
                   UConverterFromUnicodeArgs *fromUArgs,
                   const UChar* codeUnits,
@@ -257,7 +257,7 @@
  * @param err This should always be set to a failure status prior to calling.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_STOP (
+U_CAPI void U_EXPORT2 UCNV_TO_U_CALLBACK_STOP (
                   const void *context,
                   UConverterToUnicodeArgs *toUArgs,
                   const char* codeUnits,
@@ -284,7 +284,7 @@
  *      otherwise this value will be set to a failure status.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_SKIP (
+U_CAPI void U_EXPORT2 UCNV_FROM_U_CALLBACK_SKIP (
                   const void *context,
                   UConverterFromUnicodeArgs *fromUArgs,
                   const UChar* codeUnits,
@@ -314,7 +314,7 @@
  * @see ucnv_setSubstChars
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_SUBSTITUTE (
+U_CAPI void U_EXPORT2 UCNV_FROM_U_CALLBACK_SUBSTITUTE (
                   const void *context,
                   UConverterFromUnicodeArgs *fromUArgs,
                   const UChar* codeUnits,
@@ -370,7 +370,7 @@
  *      otherwise this value will be set to a failure status.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_ESCAPE (
+U_CAPI void U_EXPORT2 UCNV_FROM_U_CALLBACK_ESCAPE (
                   const void *context,
                   UConverterFromUnicodeArgs *fromUArgs,
                   const UChar* codeUnits,
@@ -398,7 +398,7 @@
  *      otherwise this value will be set to a failure status.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_SKIP (
+U_CAPI void U_EXPORT2 UCNV_TO_U_CALLBACK_SKIP (
                   const void *context,
                   UConverterToUnicodeArgs *toUArgs,
                   const char* codeUnits,
@@ -424,7 +424,7 @@
  *      otherwise this value will be set to a failure status.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_SUBSTITUTE (
+U_CAPI void U_EXPORT2 UCNV_TO_U_CALLBACK_SUBSTITUTE (
                   const void *context,
                   UConverterToUnicodeArgs *toUArgs,
                   const char* codeUnits,
@@ -450,7 +450,7 @@
  * @stable ICU 2.0
  */
 
-U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_ESCAPE (
+U_CAPI void U_EXPORT2 UCNV_TO_U_CALLBACK_ESCAPE (
                   const void *context,
                   UConverterToUnicodeArgs *toUArgs,
                   const char* codeUnits,
diff --git a/icu4c/source/common/unicode/ucnvsel.h b/icu4c/source/common/unicode/ucnvsel.h
index f33440d..5e0a71c 100644
--- a/icu4c/source/common/unicode/ucnvsel.h
+++ b/icu4c/source/common/unicode/ucnvsel.h
@@ -75,7 +75,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE UConverterSelector* U_EXPORT2
+U_CAPI UConverterSelector* U_EXPORT2
 ucnvsel_open(const char* const*  converterList, int32_t converterListSize,
              const USet* excludedCodePoints,
              const UConverterUnicodeSet whichSet, UErrorCode* status);
@@ -93,7 +93,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnvsel_close(UConverterSelector *sel);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -130,7 +130,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE UConverterSelector* U_EXPORT2
+U_CAPI UConverterSelector* U_EXPORT2
 ucnvsel_openFromSerialized(const void* buffer, int32_t length, UErrorCode* status);
 
 /**
@@ -147,7 +147,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnvsel_serialize(const UConverterSelector* sel,
                   void* buffer, int32_t bufferCapacity, UErrorCode* status);
 
@@ -165,7 +165,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucnvsel_selectForString(const UConverterSelector* sel,
                         const UChar *s, int32_t length, UErrorCode *status);
 
@@ -183,7 +183,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucnvsel_selectForUTF8(const UConverterSelector* sel,
                       const char *s, int32_t length, UErrorCode *status);
 
diff --git a/icu4c/source/common/unicode/ucptrie.h b/icu4c/source/common/unicode/ucptrie.h
index d736fbc..b95491b 100644
--- a/icu4c/source/common/unicode/ucptrie.h
+++ b/icu4c/source/common/unicode/ucptrie.h
@@ -582,11 +582,11 @@
 // Do not conditionalize with #ifndef U_HIDE_INTERNAL_API, needed for public API
 
 /** @internal */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucptrie_internalSmallIndex(const UCPTrie *trie, UChar32 c);
 
 /** @internal */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucptrie_internalSmallU8Index(const UCPTrie *trie, int32_t lt1, uint8_t t2, uint8_t t3);
 
 /**
@@ -594,7 +594,7 @@
  * Do not call directly.
  * @internal
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucptrie_internalU8PrevIndex(const UCPTrie *trie, UChar32 c,
                             const uint8_t *start, const uint8_t *src);
 
diff --git a/icu4c/source/common/unicode/ucurr.h b/icu4c/source/common/unicode/ucurr.h
index f91cc0d..35c2a39 100644
--- a/icu4c/source/common/unicode/ucurr.h
+++ b/icu4c/source/common/unicode/ucurr.h
@@ -78,7 +78,7 @@
  *                invalid. 
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucurr_forLocale(const char* locale,
                 UChar* buff,
                 int32_t buffCapacity,
@@ -113,7 +113,29 @@
      *
      * @stable ICU 61
      */
-    UCURR_NARROW_SYMBOL_NAME
+    UCURR_NARROW_SYMBOL_NAME,
+
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Selector for getName() indicating the formal currency symbol.
+     * The formal currency symbol is similar to the regular currency
+     * symbol, but it always takes the form used in formal settings
+     * such as banking; for example, "NT$" instead of "$" for TWD in zh-TW.
+     *
+     * @draft ICU 68
+     */
+    UCURR_FORMAL_SYMBOL_NAME,
+
+    /**
+     * Selector for getName() indicating the variant currency symbol.
+     * The variant symbol for a currency is an alternative symbol
+     * that is not necessarily as widely used as the regular symbol.
+     *
+     * @draft ICU 68
+     */
+    UCURR_VARIANT_SYMBOL_NAME
+#endif  // U_HIDE_DRAFT_API
+    
 } UCurrNameStyle;
 
 #if !UCONFIG_NO_SERVICE
@@ -133,7 +155,7 @@
  * if there was an error.
  * @stable ICU 2.6
  */
-U_STABLE UCurrRegistryKey U_EXPORT2
+U_CAPI UCurrRegistryKey U_EXPORT2
 ucurr_register(const UChar* isoCode, 
                    const char* locale,  
                    UErrorCode* status);
@@ -145,10 +167,10 @@
  * restored.
  * @param key the registry key returned by a previous call to ucurr_register
  * @param status the in/out status code, no special meanings are assigned
- * @return TRUE if the currency for this key was successfully unregistered
+ * @return true if the currency for this key was successfully unregistered
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucurr_unregister(UCurrRegistryKey key, UErrorCode* status);
 #endif /* UCONFIG_NO_SERVICE */
 
@@ -159,7 +181,7 @@
  * @param currency null-terminated 3-letter ISO 4217 code
  * @param locale locale in which to display currency
  * @param nameStyle selector for which kind of name to return
- * @param isChoiceFormat always set to FALSE, or can be NULL;
+ * @param isChoiceFormat always set to false, or can be NULL;
  *     display names are static strings;
  *     since ICU 4.4, ChoiceFormat patterns are no longer supported
  * @param len fill-in parameter to receive length of result
@@ -169,7 +191,7 @@
  * returned.
  * @stable ICU 2.6
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ucurr_getName(const UChar* currency,
               const char* locale,
               UCurrNameStyle nameStyle,
@@ -183,7 +205,7 @@
  * currency object in the en_US locale is "US dollar" or "US dollars".
  * @param currency null-terminated 3-letter ISO 4217 code
  * @param locale locale in which to display currency
- * @param isChoiceFormat always set to FALSE, or can be NULL;
+ * @param isChoiceFormat always set to false, or can be NULL;
  *     display names are static strings;
  *     since ICU 4.4, ChoiceFormat patterns are no longer supported
  * @param pluralCount plural count
@@ -194,7 +216,7 @@
  * returned.
  * @stable ICU 4.2
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ucurr_getPluralName(const UChar* currency,
                     const char* locale,
                     UBool* isChoiceFormat,
@@ -219,7 +241,7 @@
  * displayed, or 0 if there is an error
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucurr_getDefaultFractionDigits(const UChar* currency,
                                UErrorCode* ec);
 
@@ -240,7 +262,7 @@
  * displayed, or 0 if there is an error
  * @stable ICU 54
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucurr_getDefaultFractionDigitsForUsage(const UChar* currency, 
                                        const UCurrencyUsage usage,
                                        UErrorCode* ec);
@@ -255,7 +277,7 @@
  * or 0.0 if there is an error
  * @stable ICU 3.0
  */
-U_STABLE double U_EXPORT2
+U_CAPI double U_EXPORT2
 ucurr_getRoundingIncrement(const UChar* currency,
                            UErrorCode* ec);
 
@@ -269,7 +291,7 @@
  * or 0.0 if there is an error
  * @stable ICU 54
  */
-U_STABLE double U_EXPORT2
+U_CAPI double U_EXPORT2
 ucurr_getRoundingIncrementForUsage(const UChar* currency,
                                    const UCurrencyUsage usage,
                                    UErrorCode* ec);
@@ -326,7 +348,7 @@
  * @param pErrorCode Error code
  * @stable ICU 3.2
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucurr_openISOCurrencies(uint32_t currType, UErrorCode *pErrorCode);
 
 /**
@@ -351,11 +373,11 @@
   * @param errorCode 
   *            ICU error code 
    * 
-  * @return TRUE if the given ISO 4217 3-letter code is supported on the specified date range. 
+  * @return true if the given ISO 4217 3-letter code is supported on the specified date range. 
   * 
   * @stable ICU 4.8 
   */ 
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucurr_isAvailable(const UChar* isoCode, 
              UDate from, 
              UDate to, 
@@ -375,7 +397,7 @@
  *               values are invalid.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucurr_countCurrencies(const char* locale, 
                  UDate date, 
                  UErrorCode* ec); 
@@ -399,7 +421,7 @@
  *               invalid.  
  * @stable ICU 4.0 
  */ 
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucurr_forLocaleAndDate(const char* locale, 
                 UDate date, 
                 int32_t index,
@@ -423,7 +445,7 @@
  * @return a string enumeration over keyword values for the given key and the locale.
  * @stable ICU 4.2
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucurr_getKeywordValuesForLocale(const char* key,
                                 const char* locale,
                                 UBool commonlyUsed,
@@ -438,7 +460,7 @@
  * @return The ISO 4217 numeric code of the currency
  * @stable ICU 49
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucurr_getNumericCode(const UChar* currency);
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/common/unicode/udata.h b/icu4c/source/common/unicode/udata.h
index c2fc6c2..6caa849 100644
--- a/icu4c/source/common/unicode/udata.h
+++ b/icu4c/source/common/unicode/udata.h
@@ -169,8 +169,8 @@
  * @param pInfo A pointer to the <code>UDataInfo</code> structure
  *              of data that has been loaded and will be returned
  *              by <code>udata_openChoice()</code> if this function
- *              returns <code>TRUE</code>.
- * @return TRUE if the current data memory is acceptable
+ *              returns <code>true</code>.
+ * @return true if the current data memory is acceptable
  * @stable ICU 2.0
  */
 typedef UBool U_CALLCONV
@@ -200,7 +200,7 @@
  * @see udata_openChoice
  * @stable ICU 2.0
  */
-U_STABLE UDataMemory * U_EXPORT2
+U_CAPI UDataMemory * U_EXPORT2
 udata_open(const char *path, const char *type, const char *name,
            UErrorCode *pErrorCode);
 
@@ -242,7 +242,7 @@
  *             This may be <code>NULL</code> or empty.
  * @param name A string that specifies the name of the data.
  * @param isAcceptable This function is called to verify that loaded data
- *                     is useful for the client code. If it returns FALSE
+ *                     is useful for the client code. If it returns false
  *                     for all data items, then <code>udata_openChoice()</code>
  *                     will return with an error.
  * @param context Arbitrary parameter to be passed into isAcceptable.
@@ -252,7 +252,7 @@
  *         to get a pointer to the actual data.
  * @stable ICU 2.0
  */
-U_STABLE UDataMemory * U_EXPORT2
+U_CAPI UDataMemory * U_EXPORT2
 udata_openChoice(const char *path, const char *type, const char *name,
                  UDataMemoryIsAcceptable *isAcceptable, void *context,
                  UErrorCode *pErrorCode);
@@ -264,7 +264,7 @@
  * @param pData The pointer to data memory object
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udata_close(UDataMemory *pData);
 
 /**
@@ -276,7 +276,7 @@
  * @param pData The pointer to data memory object
  * @stable ICU 2.0
  */
-U_STABLE const void * U_EXPORT2
+U_CAPI const void * U_EXPORT2
 udata_getMemory(UDataMemory *pData);
 
 /**
@@ -297,7 +297,7 @@
  * adjusted and only part of the structure will be filled.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udata_getInfo(UDataMemory *pData, UDataInfo *pInfo);
 
 /**
@@ -306,7 +306,7 @@
  * area in memory.
  *
  * ICU data must be at least 8-aligned, and should be 16-aligned.
- * See http://userguide.icu-project.org/icudata
+ * See https://unicode-org.github.io/icu/userguide/icudata
  *
  * The format of this data is that of the icu common data file, as is
  * generated by the pkgdata tool with mode=common or mode=dll.
@@ -343,7 +343,7 @@
  * @param err outgoing error status <code>U_USING_DEFAULT_WARNING, U_UNSUPPORTED_ERROR</code>
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udata_setCommonData(const void *data, UErrorCode *err);
 
 
@@ -353,7 +353,7 @@
  * pointer.
  *
  * ICU data must be at least 8-aligned, and should be 16-aligned.
- * See http://userguide.icu-project.org/icudata
+ * See https://unicode-org.github.io/icu/userguide/icudata
  *
  * The format of this data is that of the icu common data file, like 'icudt26l.dat'
  * or the corresponding shared library (DLL) file.
@@ -374,7 +374,7 @@
  * @see udata_setCommonData
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udata_setAppData(const char *packageName, const void *data, UErrorCode *err);
 
 /**
@@ -413,7 +413,7 @@
  * @see UDataFileAccess
  * @stable ICU 3.4 
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udata_setFileAccess(UDataFileAccess access, UErrorCode *status);
 
 U_CDECL_END
diff --git a/icu4c/source/common/unicode/udisplaycontext.h b/icu4c/source/common/unicode/udisplaycontext.h
index 398481c..6e14217 100644
--- a/icu4c/source/common/unicode/udisplaycontext.h
+++ b/icu4c/source/common/unicode/udisplaycontext.h
@@ -156,7 +156,8 @@
     UDISPCTX_SUBSTITUTE = (UDISPCTX_TYPE_SUBSTITUTE_HANDLING<<8) + 0,
     /**
      * A possible setting for SUBSTITUTE_HANDLING:
-     * Returns a null value when no data is available.
+     * Returns a null value with error code set to U_ILLEGAL_ARGUMENT_ERROR when no
+     * data is available.
      * @stable ICU 58
      */
     UDISPCTX_NO_SUBSTITUTE = (UDISPCTX_TYPE_SUBSTITUTE_HANDLING<<8) + 1
diff --git a/icu4c/source/common/unicode/uenum.h b/icu4c/source/common/unicode/uenum.h
index f6191d9..d9c893e 100644
--- a/icu4c/source/common/unicode/uenum.h
+++ b/icu4c/source/common/unicode/uenum.h
@@ -50,7 +50,7 @@
  * @param en UEnumeration structure pointer
  * @stable ICU 2.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uenum_close(UEnumeration* en);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -86,7 +86,7 @@
  * @return number of elements in the iterator
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uenum_count(UEnumeration* en, UErrorCode* status);
 
 /**
@@ -110,7 +110,7 @@
  *         traversed, returns NULL.
  * @stable ICU 2.2
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 uenum_unext(UEnumeration* en,
             int32_t* resultLength,
             UErrorCode* status);
@@ -143,7 +143,7 @@
  *         traversed, returns NULL.
  * @stable ICU 2.2
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uenum_next(UEnumeration* en,
            int32_t* resultLength,
            UErrorCode* status);
@@ -157,7 +157,7 @@
  *               the iterator is out of sync with its service.  
  * @stable ICU 2.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uenum_reset(UEnumeration* en, UErrorCode* status);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -171,7 +171,7 @@
  * @return a UEnumeration wrapping the adopted StringEnumeration.
  * @stable ICU 4.2
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uenum_openFromStringEnumeration(icu::StringEnumeration* adopted, UErrorCode* ec);
 
 #endif
@@ -187,7 +187,7 @@
  * @see uenum_close
  * @stable ICU 50
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uenum_openUCharStringsEnumeration(const UChar* const strings[], int32_t count,
                                  UErrorCode* ec);
 
@@ -202,7 +202,7 @@
  * @see uenum_close
  * @stable ICU 50
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uenum_openCharStringsEnumeration(const char* const strings[], int32_t count,
                                  UErrorCode* ec);
 
diff --git a/icu4c/source/common/unicode/uidna.h b/icu4c/source/common/unicode/uidna.h
index e789dca..24a81ce 100644
--- a/icu4c/source/common/unicode/uidna.h
+++ b/icu4c/source/common/unicode/uidna.h
@@ -23,6 +23,7 @@
 
 #if !UCONFIG_NO_IDNA
 
+#include <stdbool.h>
 #include "unicode/parseerr.h"
 
 #if U_SHOW_CPLUSPLUS_API
@@ -141,7 +142,7 @@
  * @return the UTS #46 UIDNA instance, if successful
  * @stable ICU 4.6
  */
-U_STABLE UIDNA * U_EXPORT2
+U_CAPI UIDNA * U_EXPORT2
 uidna_openUTS46(uint32_t options, UErrorCode *pErrorCode);
 
 /**
@@ -149,7 +150,7 @@
  * @param idna UIDNA instance to be closed
  * @stable ICU 4.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uidna_close(UIDNA *idna);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -185,7 +186,7 @@
     /** sizeof(UIDNAInfo) @stable ICU 4.6 */
     int16_t size;
     /**
-     * Set to TRUE if transitional and nontransitional processing produce different results.
+     * Set to true if transitional and nontransitional processing produce different results.
      * For details see C++ IDNAInfo::isTransitionalDifferent().
      * @stable ICU 4.6
      */
@@ -207,7 +208,7 @@
  */
 #define UIDNA_INFO_INITIALIZER { \
     (int16_t)sizeof(UIDNAInfo), \
-    FALSE, FALSE, \
+    false, false, \
     0, 0, 0 }
 
 /**
@@ -233,7 +234,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_labelToASCII(const UIDNA *idna,
                    const UChar *label, int32_t length,
                    UChar *dest, int32_t capacity,
@@ -260,7 +261,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_labelToUnicode(const UIDNA *idna,
                      const UChar *label, int32_t length,
                      UChar *dest, int32_t capacity,
@@ -289,7 +290,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_nameToASCII(const UIDNA *idna,
                   const UChar *name, int32_t length,
                   UChar *dest, int32_t capacity,
@@ -316,7 +317,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_nameToUnicode(const UIDNA *idna,
                     const UChar *name, int32_t length,
                     UChar *dest, int32_t capacity,
@@ -341,7 +342,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_labelToASCII_UTF8(const UIDNA *idna,
                         const char *label, int32_t length,
                         char *dest, int32_t capacity,
@@ -364,7 +365,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_labelToUnicodeUTF8(const UIDNA *idna,
                          const char *label, int32_t length,
                          char *dest, int32_t capacity,
@@ -387,7 +388,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_nameToASCII_UTF8(const UIDNA *idna,
                        const char *name, int32_t length,
                        char *dest, int32_t capacity,
@@ -410,7 +411,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_nameToUnicodeUTF8(const UIDNA *idna,
                         const char *name, int32_t length,
                         char *dest, int32_t capacity,
diff --git a/icu4c/source/common/unicode/uiter.h b/icu4c/source/common/unicode/uiter.h
index 11ad75a..be232c7 100644
--- a/icu4c/source/common/unicode/uiter.h
+++ b/icu4c/source/common/unicode/uiter.h
@@ -492,7 +492,7 @@
  * @see UnicodeString::char32At()
  * @stable ICU 2.1
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 uiter_current32(UCharIterator *iter);
 
 /**
@@ -509,7 +509,7 @@
  * @see U16_NEXT
  * @stable ICU 2.1
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 uiter_next32(UCharIterator *iter);
 
 /**
@@ -526,7 +526,7 @@
  * @see U16_PREV
  * @stable ICU 2.1
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 uiter_previous32(UCharIterator *iter);
 
 /**
@@ -547,7 +547,7 @@
  * @see UITER_NO_STATE
  * @stable ICU 2.6
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 uiter_getState(const UCharIterator *iter);
 
 /**
@@ -565,7 +565,7 @@
  * @see UCharIteratorSetState
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uiter_setState(UCharIterator *iter, uint32_t state, UErrorCode *pErrorCode);
 
 /**
@@ -590,7 +590,7 @@
  * @see UCharIterator
  * @stable ICU 2.1
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uiter_setString(UCharIterator *iter, const UChar *s, int32_t length);
 
 /**
@@ -613,7 +613,7 @@
  * @see uiter_setString
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uiter_setUTF16BE(UCharIterator *iter, const char *s, int32_t length);
 
 /**
@@ -649,7 +649,7 @@
  * @see UCharIterator
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uiter_setUTF8(UCharIterator *iter, const char *s, int32_t length);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -674,7 +674,7 @@
  * @see UCharIterator
  * @stable ICU 2.1
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uiter_setCharacterIterator(UCharIterator *iter, icu::CharacterIterator *charIter);
 
 /**
@@ -699,7 +699,7 @@
  * @see UCharIterator
  * @stable ICU 2.1
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uiter_setReplaceable(UCharIterator *iter, const icu::Replaceable *rep);
 
 #endif
diff --git a/icu4c/source/common/unicode/uldnames.h b/icu4c/source/common/unicode/uldnames.h
index 498668e..47b047e 100644
--- a/icu4c/source/common/unicode/uldnames.h
+++ b/icu4c/source/common/unicode/uldnames.h
@@ -68,7 +68,7 @@
  * @param pErrorCode the status code
  * @stable ICU 4.4
  */
-U_STABLE ULocaleDisplayNames * U_EXPORT2
+U_CAPI ULocaleDisplayNames * U_EXPORT2
 uldn_open(const char * locale,
           UDialectHandling dialectHandling,
           UErrorCode *pErrorCode);
@@ -78,7 +78,7 @@
  * @param ldn the ULocaleDisplayNames instance to be closed
  * @stable ICU 4.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uldn_close(ULocaleDisplayNames *ldn);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -109,7 +109,7 @@
  * @return the display locale 
  * @stable ICU 4.4
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 uldn_getLocale(const ULocaleDisplayNames *ldn);
 
 /**
@@ -118,7 +118,7 @@
  * @return the dialect handling enum
  * @stable ICU 4.4
  */
-U_STABLE UDialectHandling U_EXPORT2
+U_CAPI UDialectHandling U_EXPORT2
 uldn_getDialectHandling(const ULocaleDisplayNames *ldn);
 
 /* names for entire locales */
@@ -134,7 +134,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_localeDisplayName(const ULocaleDisplayNames *ldn,
                        const char *locale,
                        UChar *result,
@@ -154,7 +154,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_languageDisplayName(const ULocaleDisplayNames *ldn,
                          const char *lang,
                          UChar *result,
@@ -172,7 +172,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_scriptDisplayName(const ULocaleDisplayNames *ldn,
                        const char *script,
                        UChar *result,
@@ -190,7 +190,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_scriptCodeDisplayName(const ULocaleDisplayNames *ldn,
                            UScriptCode scriptCode,
                            UChar *result,
@@ -208,7 +208,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_regionDisplayName(const ULocaleDisplayNames *ldn,
                        const char *region,
                        UChar *result,
@@ -226,7 +226,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_variantDisplayName(const ULocaleDisplayNames *ldn,
                         const char *variant,
                         UChar *result,
@@ -244,7 +244,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_keyDisplayName(const ULocaleDisplayNames *ldn,
                     const char *key,
                     UChar *result,
@@ -263,7 +263,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_keyValueDisplayName(const ULocaleDisplayNames *ldn,
                          const char *key,
                          const char *value,
@@ -285,7 +285,7 @@
 * @return a ULocaleDisplayNames instance 
 * @stable ICU 51
 */
-U_STABLE ULocaleDisplayNames * U_EXPORT2
+U_CAPI ULocaleDisplayNames * U_EXPORT2
 uldn_openForContext(const char * locale, UDisplayContext *contexts,
                     int32_t length, UErrorCode *pErrorCode);
 
@@ -299,7 +299,7 @@
 * @return the UDisplayContextValue for the specified type.
 * @stable ICU 51
 */
-U_STABLE UDisplayContext U_EXPORT2
+U_CAPI UDisplayContext U_EXPORT2
 uldn_getContext(const ULocaleDisplayNames *ldn, UDisplayContextType type,
                 UErrorCode *pErrorCode);
 
diff --git a/icu4c/source/common/unicode/uloc.h b/icu4c/source/common/unicode/uloc.h
index d877ce4..3addb84 100644
--- a/icu4c/source/common/unicode/uloc.h
+++ b/icu4c/source/common/unicode/uloc.h
@@ -371,7 +371,7 @@
  * @system
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_getDefault(void);
 
 /**
@@ -391,7 +391,7 @@
  * @system
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uloc_setDefault(const char* localeID,
         UErrorCode*       status);
 #endif  /* U_HIDE_SYSTEM_API */
@@ -408,7 +408,7 @@
  * than languageCapacity, the returned language code will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getLanguage(const char*    localeID,
          char* language,
          int32_t languageCapacity,
@@ -426,7 +426,7 @@
  * than scriptCapacity, the returned language code will be truncated.  
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getScript(const char*    localeID,
          char* script,
          int32_t scriptCapacity,
@@ -444,7 +444,7 @@
  * than countryCapacity, the returned country code will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getCountry(const char*    localeID,
         char* country,
         int32_t countryCapacity,
@@ -462,7 +462,7 @@
  * than variantCapacity, the returned variant code will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getVariant(const char*    localeID,
         char* variant,
         int32_t variantCapacity,
@@ -485,7 +485,7 @@
  * than nameCapacity, the returned full name will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getName(const char*    localeID,
          char* name,
          int32_t nameCapacity,
@@ -508,7 +508,7 @@
  * than nameCapacity, the returned full name will be truncated.  
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_canonicalize(const char*    localeID,
          char* name,
          int32_t nameCapacity,
@@ -521,7 +521,7 @@
  * @return language the ISO language code for localeID
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_getISO3Language(const char* localeID);
 
 
@@ -532,7 +532,7 @@
  * @return country the ISO country code for localeID
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_getISO3Country(const char* localeID);
 
 /**
@@ -546,26 +546,31 @@
  * @return country the Win32 LCID for localeID
  * @stable ICU 2.0
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 uloc_getLCID(const char* localeID);
 
 /**
  * Gets the language name suitable for display for the specified locale.
  *
  * @param locale the locale to get the ISO language code with
- * @param displayLocale Specifies the locale to be used to display the name.  In other words,
- *                 if the locale's language code is "en", passing Locale::getFrench() for
- *                 inLocale would result in "Anglais", while passing Locale::getGerman()
- *                 for inLocale would result in "Englisch".
+ * @param displayLocale Specifies the locale to be used to display the name. In
+ *                 other words, if the locale's language code is "en", passing
+ *                 Locale::getFrench() for inLocale would result in "Anglais",
+ *                 while passing Locale::getGerman() for inLocale would result
+ *                 in "Englisch".
  * @param language the displayable language code for localeID
- * @param languageCapacity the size of the language buffer to store the  
- * displayable language code with
- * @param status error information if retrieving the displayable language code failed
- * @return the actual buffer size needed for the displayable language code.  If it's greater 
- * than languageCapacity, the returned language code will be truncated.  
+ * @param languageCapacity the size of the language buffer to store the
+ *                 displayable language code with.
+ * @param status error information if retrieving the displayable language code
+ *                 failed. U_USING_DEFAULT_WARNING indicates that no data was
+ *                 found from the locale resources and a case canonicalized
+ *                 language code is placed into language as fallback.
+ * @return the actual buffer size needed for the displayable language code. If
+ *                 it's greater than languageCapacity, the returned language
+ *                 code will be truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayLanguage(const char* locale,
             const char* displayLocale,
             UChar* language,
@@ -575,20 +580,26 @@
 /**
  * Gets the script name suitable for display for the specified locale.
  *
- * @param locale the locale to get the displayable script code with. NULL may be used to specify the default.
- * @param displayLocale Specifies the locale to be used to display the name.  In other words,
- *                 if the locale's language code is "en", passing Locale::getFrench() for
- *                 inLocale would result in "", while passing Locale::getGerman()
- *                 for inLocale would result in "". NULL may be used to specify the default.
- * @param script the displayable script for the localeID
- * @param scriptCapacity the size of the script buffer to store the  
- * displayable script code with
- * @param status error information if retrieving the displayable script code failed
- * @return the actual buffer size needed for the displayable script code.  If it's greater 
- * than scriptCapacity, the returned displayable script code will be truncated.  
+ * @param locale the locale to get the displayable script code with. NULL may be
+ *                 used to specify the default.
+ * @param displayLocale Specifies the locale to be used to display the name. In
+ *                 other words, if the locale's language code is "en", passing
+ *                 Locale::getFrench() for inLocale would result in "", while
+ *                 passing Locale::getGerman() for inLocale would result in "".
+ *                 NULL may be used to specify the default.
+ * @param script the displayable script for the localeID.
+ * @param scriptCapacity the size of the script buffer to store the displayable
+ *                 script code with.
+ * @param status error information if retrieving the displayable script code
+ *                 failed. U_USING_DEFAULT_WARNING indicates that no data was
+ *                 found from the locale resources and a case canonicalized
+ *                 script code is placed into script as fallback.
+ * @return the actual buffer size needed for the displayable script code. If
+ *                 it's greater than scriptCapacity, the returned displayable
+ *                 script code will be truncated.
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayScript(const char* locale,
             const char* displayLocale,
             UChar* script,
@@ -597,23 +608,30 @@
 
 /**
  * Gets the country name suitable for display for the specified locale.
- * Warning: this is for the region part of a valid locale ID; it cannot just be the region code (like "FR").
- * To get the display name for a region alone, or for other options, use ULocaleDisplayNames instead.
+ * Warning: this is for the region part of a valid locale ID; it cannot just be
+ * the region code (like "FR"). To get the display name for a region alone, or
+ * for other options, use ULocaleDisplayNames instead.
  *
- * @param locale the locale to get the displayable country code with. NULL may be used to specify the default.
- * @param displayLocale Specifies the locale to be used to display the name.  In other words,
- *                 if the locale's language code is "en", passing Locale::getFrench() for
- *                 inLocale would result in "Anglais", while passing Locale::getGerman()
- *                 for inLocale would result in "Englisch". NULL may be used to specify the default.
- * @param country the displayable country code for localeID
- * @param countryCapacity the size of the country buffer to store the  
- * displayable country code with
- * @param status error information if retrieving the displayable country code failed
- * @return the actual buffer size needed for the displayable country code.  If it's greater 
- * than countryCapacity, the returned displayable country code will be truncated.  
+ * @param locale the locale to get the displayable country code with. NULL may
+ *                 be used to specify the default.
+ * @param displayLocale Specifies the locale to be used to display the name. In
+ *                 other words, if the locale's language code is "en", passing
+ *                 Locale::getFrench() for inLocale would result in "Anglais",
+ *                 while passing Locale::getGerman() for inLocale would result
+ *                 in "Englisch". NULL may be used to specify the default.
+ * @param country the displayable country code for localeID.
+ * @param countryCapacity the size of the country buffer to store the
+ *                 displayable country code with.
+ * @param status error information if retrieving the displayable country code
+ *                 failed. U_USING_DEFAULT_WARNING indicates that no data was
+ *                 found from the locale resources and a case canonicalized
+ *                 country code is placed into country as fallback.
+ * @return the actual buffer size needed for the displayable country code. If
+ *                 it's greater than countryCapacity, the returned displayable
+ *                 country code will be truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayCountry(const char* locale,
                        const char* displayLocale,
                        UChar* country,
@@ -624,20 +642,26 @@
 /**
  * Gets the variant name suitable for display for the specified locale.
  *
- * @param locale the locale to get the displayable variant code with. NULL may be used to specify the default.
- * @param displayLocale Specifies the locale to be used to display the name.  In other words,
- *                 if the locale's language code is "en", passing Locale::getFrench() for
- *                 inLocale would result in "Anglais", while passing Locale::getGerman()
- *                 for inLocale would result in "Englisch". NULL may be used to specify the default.
- * @param variant the displayable variant code for localeID
- * @param variantCapacity the size of the variant buffer to store the 
- * displayable variant code with
- * @param status error information if retrieving the displayable variant code failed
- * @return the actual buffer size needed for the displayable variant code.  If it's greater 
- * than variantCapacity, the returned displayable variant code will be truncated.  
+ * @param locale the locale to get the displayable variant code with. NULL may
+ *                 be used to specify the default.
+ * @param displayLocale Specifies the locale to be used to display the name. In
+ *                 other words, if the locale's language code is "en", passing
+ *                 Locale::getFrench() for inLocale would result in "Anglais",
+ *                 while passing Locale::getGerman() for inLocale would result
+ *                 in "Englisch". NULL may be used to specify the default.
+ * @param variant the displayable variant code for localeID.
+ * @param variantCapacity the size of the variant buffer to store the
+ *                 displayable variant code with.
+ * @param status error information if retrieving the displayable variant code
+ *                 failed. U_USING_DEFAULT_WARNING indicates that no data was
+ *                 found from the locale resources and a case canonicalized
+ *                 variant code is placed into variant as fallback.
+ * @return the actual buffer size needed for the displayable variant code. If
+ *                 it's greater than variantCapacity, the returned displayable
+ *                 variant code will be truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayVariant(const char* locale,
                        const char* displayLocale,
                        UChar* variant,
@@ -645,9 +669,9 @@
                        UErrorCode* status);
 
 /**
- * Gets the keyword name suitable for display for the specified locale.
- * E.g: for the locale string de_DE\@collation=PHONEBOOK, this API gets the display 
- * string for the keyword collation. 
+ * Gets the keyword name suitable for display for the specified locale. E.g:
+ * for the locale string de_DE\@collation=PHONEBOOK, this API gets the display
+ * string for the keyword collation.
  * Usage:
  * <code>
  *    UErrorCode status = U_ZERO_ERROR;
@@ -676,15 +700,17 @@
  *                          for inLocale would result in "Englisch". NULL may be used to specify the default.
  * @param dest              the buffer to which the displayable keyword should be written.
  * @param destCapacity      The size of the buffer (number of UChars). If it is 0, then
- *                          dest may be NULL and the function will only return the length of the 
+ *                          dest may be NULL and the function will only return the length of the
  *                          result without writing any of the result string (pre-flighting).
- * @param status            error information if retrieving the displayable string failed. 
+ * @param status            error information if retrieving the displayable string failed.
  *                          Should not be NULL and should not indicate failure on entry.
- * @return the actual buffer size needed for the displayable variant code.  
+ *                          U_USING_DEFAULT_WARNING indicates that no data was found from the locale
+ *                          resources and the keyword is placed into dest as fallback.
+ * @return the actual buffer size needed for the displayable variant code.
  * @see #uloc_openKeywords
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayKeyword(const char* keyword,
                        const char* displayLocale,
                        UChar* dest,
@@ -692,7 +718,7 @@
                        UErrorCode* status);
 /**
  * Gets the value of the keyword suitable for display for the specified locale.
- * E.g: for the locale string de_DE\@collation=PHONEBOOK, this API gets the display 
+ * E.g: for the locale string de_DE\@collation=PHONEBOOK, this API gets the display
  * string for PHONEBOOK, in the display locale, when "collation" is specified as the keyword.
  *
  * @param locale            The locale to get the displayable variant code with. NULL may be used to specify the default.
@@ -703,14 +729,16 @@
  *                          for inLocale would result in "Englisch". NULL may be used to specify the default.
  * @param dest              the buffer to which the displayable keyword should be written.
  * @param destCapacity      The size of the buffer (number of UChars). If it is 0, then
- *                          dest may be NULL and the function will only return the length of the 
+ *                          dest may be NULL and the function will only return the length of the
  *                          result without writing any of the result string (pre-flighting).
- * @param status            error information if retrieving the displayable string failed. 
+ * @param status            error information if retrieving the displayable string failed.
  *                          Should not be NULL and must not indicate failure on entry.
- * @return the actual buffer size needed for the displayable variant code.  
+ *                          U_USING_DEFAULT_WARNING indicates that no data was found from the locale
+ *                          resources and the value of the keyword is placed into dest as fallback.
+ * @return the actual buffer size needed for the displayable variant code.
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayKeywordValue(   const char* locale,
                                const char* keyword,
                                const char* displayLocale,
@@ -733,7 +761,7 @@
  * than maxResultSize, the returned displayable name will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayName(const char* localeID,
             const char* inLocaleID,
             UChar* result,
@@ -757,7 +785,7 @@
  * @return a specified locale name of all available locales
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_getAvailable(int32_t n);
 
 /**
@@ -766,21 +794,19 @@
  * @return the size of the locale list
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 uloc_countAvailable(void);
-
-#ifndef U_HIDE_DRAFT_API
+U_CAPI int32_t U_EXPORT2 uloc_countAvailable(void);
 
 /**
  * Types for uloc_getAvailableByType and uloc_countAvailableByType.
  *
- * @draft ICU 65
+ * @stable ICU 65
  */
 typedef enum ULocAvailableType {
   /**
    * Locales that return data when passed to ICU APIs,
    * but not including legacy or alias locales.
    *
-   * @draft ICU 65
+   * @stable ICU 65
    */
   ULOC_AVAILABLE_DEFAULT,
 
@@ -798,7 +824,7 @@
    * ULOC_AVAILABLE_DEFAULT. To get both sets at the same time, use
    * ULOC_AVAILABLE_WITH_LEGACY_ALIASES.
    *
-   * @draft ICU 65
+   * @stable ICU 65
    */
   ULOC_AVAILABLE_ONLY_LEGACY_ALIASES,
 
@@ -806,7 +832,7 @@
    * The union of the locales in ULOC_AVAILABLE_DEFAULT and
    * ULOC_AVAILABLE_ONLY_LEGACY_ALIAS.
    *
-   * @draft ICU 65
+   * @stable ICU 65
    */
   ULOC_AVAILABLE_WITH_LEGACY_ALIASES,
 
@@ -827,13 +853,11 @@
  * @param type Type choice from ULocAvailableType.
  * @param status Set if an error occurred.
  * @return a UEnumeration owned by the caller, or nullptr on failure.
- * @draft ICU 65
+ * @stable ICU 65
  */
-U_DRAFT UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uloc_openAvailableByType(ULocAvailableType type, UErrorCode* status);
 
-#endif // U_HIDE_DRAFT_API
-
 /**
  *
  * Gets a list of all available 2-letter language codes defined in ISO 639,
@@ -845,7 +869,7 @@
  * @return a list of all available language codes
  * @stable ICU 2.0
  */
-U_STABLE const char* const* U_EXPORT2
+U_CAPI const char* const* U_EXPORT2
 uloc_getISOLanguages(void);
 
 /**
@@ -857,7 +881,7 @@
  * @return a list of all available country codes
  * @stable ICU 2.0
  */
-U_STABLE const char* const* U_EXPORT2
+U_CAPI const char* const* U_EXPORT2
 uloc_getISOCountries(void);
 
 /**
@@ -873,7 +897,7 @@
  * @return The length of the parent locale ID.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getParent(const char*    localeID,
                  char* parent,
                  int32_t parentCapacity,
@@ -904,7 +928,7 @@
  * than nameCapacity, the returned full name will be truncated.  
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getBaseName(const char*    localeID,
          char* name,
          int32_t nameCapacity,
@@ -919,7 +943,7 @@
  * @return enumeration of keywords or NULL if there are no keywords.
  * @stable ICU 2.8
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uloc_openKeywords(const char* localeID,
                         UErrorCode* status);
 
@@ -936,7 +960,7 @@
  * @return the length of keyword value
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getKeywordValue(const char* localeID,
                      const char* keywordName,
                      char* buffer, int32_t bufferCapacity,
@@ -973,7 +997,7 @@
  * @see uloc_getKeywordValue
  * @stable ICU 3.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_setKeywordValue(const char* keywordName,
                      const char* keywordValue,
                      char* buffer, int32_t bufferCapacity,
@@ -982,18 +1006,18 @@
 /**
  * Returns whether the locale's script is written right-to-left.
  * If there is no script subtag, then the likely script is used, see uloc_addLikelySubtags().
- * If no likely script is known, then FALSE is returned.
+ * If no likely script is known, then false is returned.
  *
  * A script is right-to-left according to the CLDR script metadata
  * which corresponds to whether the script's letters have Bidi_Class=R or AL.
  *
- * Returns TRUE for "ar" and "en-Hebr", FALSE for "zh" and "fa-Cyrl".
+ * Returns true for "ar" and "en-Hebr", false for "zh" and "fa-Cyrl".
  *
  * @param locale input locale ID
- * @return TRUE if the locale's script is written right-to-left
+ * @return true if the locale's script is written right-to-left
  * @stable ICU 54
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uloc_isRightToLeft(const char *locale);
 
 /**
@@ -1017,7 +1041,7 @@
  * @return an enum indicating the layout orientation for characters.
  * @stable ICU 4.0
  */
-U_STABLE ULayoutType U_EXPORT2
+U_CAPI ULayoutType U_EXPORT2
 uloc_getCharacterOrientation(const char* localeId,
                              UErrorCode *status);
 
@@ -1029,7 +1053,7 @@
  * @return an enum indicating the layout orientation for lines.
  * @stable ICU 4.0
  */
-U_STABLE ULayoutType U_EXPORT2
+U_CAPI ULayoutType U_EXPORT2
 uloc_getLineOrientation(const char* localeId,
                         UErrorCode *status);
 
@@ -1076,7 +1100,7 @@
  * @return length needed for the locale.
  * @stable ICU 3.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_acceptLanguageFromHTTP(char *result, int32_t resultAvailable,
                             UAcceptResult *outResult,
                             const char *httpAcceptLanguage,
@@ -1101,7 +1125,7 @@
  * @return length needed for the locale.
  * @stable ICU 3.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_acceptLanguage(char *result, int32_t resultAvailable, 
                     UAcceptResult *outResult, const char **acceptList,
                     int32_t acceptListCount,
@@ -1121,7 +1145,7 @@
  * @return actual the actual size of the locale ID, not including NUL-termination 
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getLocaleForLCID(uint32_t hostID, char *locale, int32_t localeCapacity,
                     UErrorCode *status);
 
@@ -1159,7 +1183,7 @@
  * On error, the return value is -1.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_addLikelySubtags(const char*    localeID,
          char* maximizedLocaleID,
          int32_t maximizedLocaleIDCapacity,
@@ -1199,7 +1223,7 @@
  * On error, the return value is -1.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_minimizeSubtags(const char*    localeID,
          char* minimizedLocaleID,
          int32_t minimizedLocaleIDCapacity,
@@ -1209,14 +1233,18 @@
  * Returns a locale ID for the specified BCP47 language tag string.
  * If the specified language tag contains any ill-formed subtags,
  * the first such subtag and all following subtags are ignored.
- * <p> 
- * This implements the 'Language-Tag' production of BCP47, and so
- * supports grandfathered (regular and irregular) as well as private
- * use language tags.  Private use tags are represented as 'x-whatever',
- * and grandfathered tags are converted to their canonical replacements
- * where they exist.  Note that a few grandfathered tags have no modern
- * replacement, these will be converted using the fallback described in
+ * <p>
+ * This implements the 'Language-Tag' production of BCP 47, and so
+ * supports legacy language tags (marked as “Type: grandfathered” in BCP 47)
+ * (regular and irregular) as well as private use language tags.
+ *
+ * Private use tags are represented as 'x-whatever',
+ * and legacy tags are converted to their canonical replacements where they exist.
+ *
+ * Note that a few legacy tags have no modern replacement;
+ * these will be converted using the fallback described in
  * the first paragraph, so some information might be lost.
+ *
  * @param langtag   the input BCP47 language tag.
  * @param localeID  the output buffer receiving a locale ID for the
  *                  specified BCP47 language tag.
@@ -1228,7 +1256,7 @@
  * @return          the length of the locale ID.
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_forLanguageTag(const char* langtag,
                     char* localeID,
                     int32_t localeIDCapacity,
@@ -1238,10 +1266,10 @@
 /**
  * Returns a well-formed language tag for this locale ID. 
  * <p> 
- * <b>Note</b>: When <code>strict</code> is FALSE, any locale
+ * <b>Note</b>: When <code>strict</code> is false, any locale
  * fields which do not satisfy the BCP47 syntax requirement will
  * be omitted from the result.  When <code>strict</code> is
- * TRUE, this function sets U_ILLEGAL_ARGUMENT_ERROR to the
+ * true, this function sets U_ILLEGAL_ARGUMENT_ERROR to the
  * <code>err</code> if any locale fields do not satisfy the
  * BCP47 syntax requirement.
  * @param localeID  the input locale ID
@@ -1256,7 +1284,7 @@
  * @return          The length of the BCP47 language tag.
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_toLanguageTag(const char* localeID,
                    char* langtag,
                    int32_t langtagCapacity,
@@ -1284,7 +1312,7 @@
  * @see uloc_toLegacyKey
  * @stable ICU 54
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_toUnicodeLocaleKey(const char* keyword);
 
 /**
@@ -1315,7 +1343,7 @@
  * @see uloc_toLegacyType
  * @stable ICU 54
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_toUnicodeLocaleType(const char* keyword, const char* value);
 
 /**
@@ -1330,7 +1358,7 @@
  * @see toUnicodeLocaleKey
  * @stable ICU 54
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_toLegacyKey(const char* keyword);
 
 /**
@@ -1359,7 +1387,7 @@
  * @see toUnicodeLocaleType
  * @stable ICU 54
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_toLegacyType(const char* keyword, const char* value);
 
 #endif /*_ULOC*/
diff --git a/icu4c/source/common/unicode/umachine.h b/icu4c/source/common/unicode/umachine.h
index 1d85855..09c887c 100644
--- a/icu4c/source/common/unicode/umachine.h
+++ b/icu4c/source/common/unicode/umachine.h
@@ -49,12 +49,13 @@
  * ANSI C headers:
  * stddef.h defines wchar_t
  */
+#include <stdbool.h>
 #include <stddef.h>
 
 /*==========================================================================*/
-/* For C wrappers, we use the symbol U_STABLE.                                */
+/* For C wrappers, we use the symbol U_CAPI.                                */
 /* This works properly if the includer is C or C++.                         */
-/* Functions are declared   U_STABLE return-type U_EXPORT2 function-name()... */
+/* Functions are declared   U_CAPI return-type U_EXPORT2 function-name()... */
 /*==========================================================================*/
 
 /**
@@ -107,15 +108,15 @@
 
 /** This is used to declare a function as a public ICU C API @stable ICU 2.0*/
 #define U_CAPI U_CFUNC U_EXPORT
-/** This is used to declare a function as a stable public ICU C API*/
+/** Obsolete/same as U_CAPI; was used to declare a function as a stable public ICU C API*/
 #define U_STABLE U_CAPI
-/** This is used to declare a function as a draft public ICU C API  */
+/** Obsolete/same as U_CAPI; was used to declare a function as a draft public ICU C API  */
 #define U_DRAFT  U_CAPI
 /** This is used to declare a function as a deprecated public ICU C API  */
 #define U_DEPRECATED U_CAPI U_ATTRIBUTE_DEPRECATED
-/** This is used to declare a function as an obsolete public ICU C API  */
+/** Obsolete/same as U_CAPI; was used to declare a function as an obsolete public ICU C API  */
 #define U_OBSOLETE U_CAPI
-/** This is used to declare a function as an internal ICU C API  */
+/** Obsolete/same as U_CAPI; was used to declare a function as an internal ICU C API  */
 #define U_INTERNAL U_CAPI
 
 /**
@@ -170,11 +171,11 @@
 
 /**
  * \def UPRV_BLOCK_MACRO_END
- * Defined as "while (FALSE)" by default.
+ * Defined as "while (false)" by default.
  * @internal
  */
 #ifndef UPRV_BLOCK_MACRO_END
-#define UPRV_BLOCK_MACRO_END while (FALSE)
+#define UPRV_BLOCK_MACRO_END while (false)
 #endif
 
 /*==========================================================================*/
@@ -257,18 +258,59 @@
 /* Boolean data type                                                        */
 /*==========================================================================*/
 
-/** The ICU boolean type @stable ICU 2.0 */
+/**
+ * The ICU boolean type, a signed-byte integer.
+ * ICU-specific for historical reasons: The C and C++ standards used to not define type bool.
+ * Also provides a fixed type definition, as opposed to
+ * type bool whose details (e.g., sizeof) may vary by compiler and between C and C++.
+ *
+ * @stable ICU 2.0
+ */
 typedef int8_t UBool;
 
+/**
+ * \def U_DEFINE_FALSE_AND_TRUE
+ * Normally turns off defining macros FALSE=0 & TRUE=1 in public ICU headers.
+ * These obsolete macros sometimes break compilation of other code that
+ * defines enum constants or similar with these names.
+ * C++ has long defined bool/false/true.
+ * C99 also added definitions for these, although as macros; see stdbool.h.
+ *
+ * You may transitionally define U_DEFINE_FALSE_AND_TRUE=1 if you need time to migrate code.
+ *
+ * @internal ICU 68
+ */
+#ifdef U_DEFINE_FALSE_AND_TRUE
+    // Use the predefined value.
+#elif defined(U_COMBINED_IMPLEMENTATION) || \
+        defined(U_COMMON_IMPLEMENTATION) || defined(U_I18N_IMPLEMENTATION) || \
+        defined(U_IO_IMPLEMENTATION) || defined(U_LAYOUTEX_IMPLEMENTATION) || \
+        defined(U_TOOLUTIL_IMPLEMENTATION)
+    // Inside ICU: Keep FALSE & TRUE available.
+#   define U_DEFINE_FALSE_AND_TRUE 1
+#else
+    // Outside ICU: Avoid collision with non-macro definitions of FALSE & TRUE.
+#   define U_DEFINE_FALSE_AND_TRUE 0
+#endif
+
+#if U_DEFINE_FALSE_AND_TRUE || defined(U_IN_DOXYGEN)
 #ifndef TRUE
-/** The TRUE value of a UBool @stable ICU 2.0 */
+/**
+ * The TRUE value of a UBool.
+ *
+ * @deprecated ICU 68 Use standard "true" instead.
+ */
 #   define TRUE  1
 #endif
 #ifndef FALSE
-/** The FALSE value of a UBool @stable ICU 2.0 */
+/**
+ * The FALSE value of a UBool.
+ *
+ * @deprecated ICU 68 Use standard "false" instead.
+ */
 #   define FALSE 0
 #endif
-
+#endif  // U_DEFINE_FALSE_AND_TRUE
 
 /*==========================================================================*/
 /* Unicode data types                                                       */
diff --git a/icu4c/source/common/unicode/unimatch.h b/icu4c/source/common/unicode/unimatch.h
index 5a192b1..302332f 100644
--- a/icu4c/source/common/unicode/unimatch.h
+++ b/icu4c/source/common/unicode/unimatch.h
@@ -115,11 +115,11 @@
      * considered for matching will be text.charAt(limit-1) in the
      * forward direction or text.charAt(limit+1) in the backward
      * direction.
-     * @param incremental if TRUE, then assume further characters may
+     * @param incremental if true, then assume further characters may
      * be inserted at limit and check for partial matching.  Otherwise
      * assume the text as given is complete.
      * @return a match degree value indicating a full match, a partial
-     * match, or a mismatch.  If incremental is FALSE then
+     * match, or a mismatch.  If incremental is false then
      * U_PARTIAL_MATCH should never be returned.
      * @stable ICU 2.4
      */
@@ -134,17 +134,17 @@
      * will produce another matcher that is equal to this one.
      * @param result the string to receive the pattern.  Previous
      * contents will be deleted.
-     * @param escapeUnprintable if TRUE then convert unprintable
+     * @param escapeUnprintable if true then convert unprintable
      * character to their hex escape representations, \\uxxxx or
      * \\Uxxxxxxxx.  Unprintable characters are those other than
      * U+000A, U+0020..U+007E.
      * @stable ICU 2.4
      */
     virtual UnicodeString& toPattern(UnicodeString& result,
-                                     UBool escapeUnprintable = FALSE) const = 0;
+                                     UBool escapeUnprintable = false) const = 0;
 
     /**
-     * Returns TRUE if this matcher will match a character c, where c
+     * Returns true if this matcher will match a character c, where c
      * & 0xFF == v, at offset, in the forward direction (with limit >
      * offset).  This is used by <tt>RuleBasedTransliterator</tt> for
      * indexing.
diff --git a/icu4c/source/common/unicode/uniset.h b/icu4c/source/common/unicode/uniset.h
index 9742311..50b6360 100644
--- a/icu4c/source/common/unicode/uniset.h
+++ b/icu4c/source/common/unicode/uniset.h
@@ -325,7 +325,7 @@
      * A bogus set has no value. It is different from an empty set.
      * It can be used to indicate that no set value is available.
      *
-     * @return TRUE if the set is bogus/invalid, FALSE otherwise
+     * @return true if the set is bogus/invalid, false otherwise
      * @see setToBogus()
      * @stable ICU 4.0
      */
@@ -333,7 +333,7 @@
 
     /**
      * Make this UnicodeSet object invalid.
-     * The string will test TRUE with isBogus().
+     * The string will test true with isBogus().
      *
      * A bogus set has no value. It is different from an empty set.
      * It can be used to indicate that no set value is available.
@@ -563,7 +563,7 @@
     /**
      * Determines whether the set has been frozen (made immutable) or not.
      * See the ICU4J Freezable interface for details.
-     * @return TRUE/FALSE for whether the set has been frozen
+     * @return true/false for whether the set has been frozen
      * @see freeze
      * @see cloneAsThawed
      * @stable ICU 3.8
@@ -700,14 +700,14 @@
      * A frozen set will not be modified.
      * @param result the string to receive the rules.  Previous
      * contents will be deleted.
-     * @param escapeUnprintable if TRUE then convert unprintable
+     * @param escapeUnprintable if true then convert unprintable
      * character to their hex escape representations, \\uxxxx or
      * \\Uxxxxxxxx.  Unprintable characters are those other than
      * U+000A, U+0020..U+007E.
      * @stable ICU 2.0
      */
     virtual UnicodeString& toPattern(UnicodeString& result,
-                             UBool escapeUnprintable = FALSE) const;
+                                     UBool escapeUnprintable = false) const;
 
     /**
      * Modifies this set to contain those code points which have the given value
@@ -1636,7 +1636,7 @@
     static const UnicodeSet* getInclusions(int32_t src, UErrorCode &status);
 
     /**
-     * A filter that returns TRUE if the given code point should be
+     * A filter that returns true if the given code point should be
      * included in the UnicodeSet being constructed.
      */
     typedef UBool (*Filter)(UChar32 codePoint, void* context);
diff --git a/icu4c/source/common/unicode/unistr.h b/icu4c/source/common/unicode/unistr.h
index da79053..456389f 100644
--- a/icu4c/source/common/unicode/unistr.h
+++ b/icu4c/source/common/unicode/unistr.h
@@ -45,7 +45,7 @@
 /**
  * \ingroup ustring_ustrlen
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strlen(const UChar *s);
 #endif
 
@@ -113,9 +113,9 @@
  * @stable ICU 2.0
  */
 #if !U_CHAR16_IS_TYPEDEF
-# define UNICODE_STRING(cs, _length) icu::UnicodeString(TRUE, u ## cs, _length)
+# define UNICODE_STRING(cs, _length) icu::UnicodeString(true, u ## cs, _length)
 #else
-# define UNICODE_STRING(cs, _length) icu::UnicodeString(TRUE, (const char16_t*)u ## cs, _length)
+# define UNICODE_STRING(cs, _length) icu::UnicodeString(true, (const char16_t*)u ## cs, _length)
 #endif
 
 /**
@@ -227,7 +227,7 @@
  * The UnicodeString class is not suitable for subclassing.
  *
  * For an overview of Unicode strings in C and C++ see the
- * [User Guide Strings chapter](http://userguide.icu-project.org/strings#TOC-Strings-in-C-C-).
+ * [User Guide Strings chapter](https://unicode-org.github.io/icu/userguide/strings#strings-in-cc).
  *
  * In ICU, a Unicode string consists of 16-bit Unicode *code units*.
  * A Unicode character may be stored with either one code unit
@@ -285,7 +285,7 @@
  * significant performance improvements.
  * Also, the internal buffer is accessible via special functions.
  * For details see the
- * [User Guide Strings chapter](http://userguide.icu-project.org/strings#TOC-Maximizing-Performance-with-the-UnicodeString-Storage-Model).
+ * [User Guide Strings chapter](https://unicode-org.github.io/icu/userguide/strings#maximizing-performance-with-the-unicodestring-storage-model).
  *
  * @see utf.h
  * @see CharacterIterator
@@ -320,8 +320,8 @@
   /**
    * Equality operator. Performs only bitwise comparison.
    * @param text The UnicodeString to compare to this one.
-   * @return TRUE if `text` contains the same characters as this one,
-   * FALSE otherwise.
+   * @return true if `text` contains the same characters as this one,
+   * false otherwise.
    * @stable ICU 2.0
    */
   inline UBool operator== (const UnicodeString& text) const;
@@ -329,8 +329,8 @@
   /**
    * Inequality operator. Performs only bitwise comparison.
    * @param text The UnicodeString to compare to this one.
-   * @return FALSE if `text` contains the same characters as this one,
-   * TRUE otherwise.
+   * @return false if `text` contains the same characters as this one,
+   * true otherwise.
    * @stable ICU 2.0
    */
   inline UBool operator!= (const UnicodeString& text) const;
@@ -338,8 +338,8 @@
   /**
    * Greater than operator. Performs only bitwise comparison.
    * @param text The UnicodeString to compare to this one.
-   * @return TRUE if the characters in this are bitwise
-   * greater than the characters in `text`, FALSE otherwise
+   * @return true if the characters in this are bitwise
+   * greater than the characters in `text`, false otherwise
    * @stable ICU 2.0
    */
   inline UBool operator> (const UnicodeString& text) const;
@@ -347,8 +347,8 @@
   /**
    * Less than operator. Performs only bitwise comparison.
    * @param text The UnicodeString to compare to this one.
-   * @return TRUE if the characters in this are bitwise
-   * less than the characters in `text`, FALSE otherwise
+   * @return true if the characters in this are bitwise
+   * less than the characters in `text`, false otherwise
    * @stable ICU 2.0
    */
   inline UBool operator< (const UnicodeString& text) const;
@@ -356,8 +356,8 @@
   /**
    * Greater than or equal operator. Performs only bitwise comparison.
    * @param text The UnicodeString to compare to this one.
-   * @return TRUE if the characters in this are bitwise
-   * greater than or equal to the characters in `text`, FALSE otherwise
+   * @return true if the characters in this are bitwise
+   * greater than or equal to the characters in `text`, false otherwise
    * @stable ICU 2.0
    */
   inline UBool operator>= (const UnicodeString& text) const;
@@ -365,8 +365,8 @@
   /**
    * Less than or equal operator. Performs only bitwise comparison.
    * @param text The UnicodeString to compare to this one.
-   * @return TRUE if the characters in this are bitwise
-   * less than or equal to the characters in `text`, FALSE otherwise
+   * @return true if the characters in this are bitwise
+   * less than or equal to the characters in `text`, false otherwise
    * @stable ICU 2.0
    */
   inline UBool operator<= (const UnicodeString& text) const;
@@ -855,8 +855,8 @@
   /**
    * Determine if this starts with the characters in `text`
    * @param text The text to match.
-   * @return TRUE if this starts with the characters in `text`,
-   * FALSE otherwise
+   * @return true if this starts with the characters in `text`,
+   * false otherwise
    * @stable ICU 2.0
    */
   inline UBool startsWith(const UnicodeString& text) const;
@@ -867,8 +867,8 @@
    * @param srcText The text to match.
    * @param srcStart the offset into `srcText` to start matching
    * @param srcLength the number of characters in `srcText` to match
-   * @return TRUE if this starts with the characters in `text`,
-   * FALSE otherwise
+   * @return true if this starts with the characters in `text`,
+   * false otherwise
    * @stable ICU 2.0
    */
   inline UBool startsWith(const UnicodeString& srcText,
@@ -879,8 +879,8 @@
    * Determine if this starts with the characters in `srcChars`
    * @param srcChars The characters to match.
    * @param srcLength the number of characters in `srcChars`
-   * @return TRUE if this starts with the characters in `srcChars`,
-   * FALSE otherwise
+   * @return true if this starts with the characters in `srcChars`,
+   * false otherwise
    * @stable ICU 2.0
    */
   inline UBool startsWith(ConstChar16Ptr srcChars,
@@ -892,7 +892,7 @@
    * @param srcChars The characters to match.
    * @param srcStart the offset into `srcText` to start matching
    * @param srcLength the number of characters in `srcChars` to match
-   * @return TRUE if this ends with the characters in `srcChars`, FALSE otherwise
+   * @return true if this ends with the characters in `srcChars`, false otherwise
    * @stable ICU 2.0
    */
   inline UBool startsWith(const char16_t *srcChars,
@@ -902,8 +902,8 @@
   /**
    * Determine if this ends with the characters in `text`
    * @param text The text to match.
-   * @return TRUE if this ends with the characters in `text`,
-   * FALSE otherwise
+   * @return true if this ends with the characters in `text`,
+   * false otherwise
    * @stable ICU 2.0
    */
   inline UBool endsWith(const UnicodeString& text) const;
@@ -914,8 +914,8 @@
    * @param srcText The text to match.
    * @param srcStart the offset into `srcText` to start matching
    * @param srcLength the number of characters in `srcText` to match
-   * @return TRUE if this ends with the characters in `text`,
-   * FALSE otherwise
+   * @return true if this ends with the characters in `text`,
+   * false otherwise
    * @stable ICU 2.0
    */
   inline UBool endsWith(const UnicodeString& srcText,
@@ -926,8 +926,8 @@
    * Determine if this ends with the characters in `srcChars`
    * @param srcChars The characters to match.
    * @param srcLength the number of characters in `srcChars`
-   * @return TRUE if this ends with the characters in `srcChars`,
-   * FALSE otherwise
+   * @return true if this ends with the characters in `srcChars`,
+   * false otherwise
    * @stable ICU 2.0
    */
   inline UBool endsWith(ConstChar16Ptr srcChars,
@@ -939,8 +939,8 @@
    * @param srcChars The characters to match.
    * @param srcStart the offset into `srcText` to start matching
    * @param srcLength the number of characters in `srcChars` to match
-   * @return TRUE if this ends with the characters in `srcChars`,
-   * FALSE otherwise
+   * @return true if this ends with the characters in `srcChars`,
+   * false otherwise
    * @stable ICU 2.0
    */
   inline UBool endsWith(const char16_t *srcChars,
@@ -1804,7 +1804,7 @@
 
   /**
    * Determine if this string is empty.
-   * @return TRUE if this string contains 0 characters, FALSE otherwise.
+   * @return true if this string contains 0 characters, false otherwise.
    * @stable ICU 2.0
    */
   inline UBool isEmpty(void) const;
@@ -1832,12 +1832,12 @@
   /**
    * Determine if this object contains a valid string.
    * A bogus string has no value. It is different from an empty string,
-   * although in both cases isEmpty() returns TRUE and length() returns 0.
+   * although in both cases isEmpty() returns true and length() returns 0.
    * setToBogus() and isBogus() can be used to indicate that no string value is available.
    * For a bogus string, getBuffer() and getTerminatedBuffer() return NULL, and
    * length() returns 0.
    *
-   * @return TRUE if the string is bogus/invalid, FALSE otherwise
+   * @return true if the string is bogus/invalid, false otherwise
    * @see setToBogus()
    * @stable ICU 2.0
    */
@@ -2067,7 +2067,7 @@
 
   /**
    * Make this UnicodeString object invalid.
-   * The string will test TRUE with isBogus().
+   * The string will test true with isBogus().
    *
    * A bogus string has no value. It is different from an empty string.
    * It can be used to indicate that no string value is available.
@@ -2459,7 +2459,7 @@
 
   /**
    * Replaceable API
-   * @return TRUE if it has MetaData
+   * @return true if it has MetaData
    * @stable ICU 2.4
    */
   virtual UBool hasMetaData() const;
@@ -2590,7 +2590,7 @@
    * @param targetLength the desired length of the string
    * @param padChar the character to use for padding. Defaults to
    * space (U+0020)
-   * @return TRUE if the text was padded, FALSE otherwise.
+   * @return true if the text was padded, false otherwise.
    * @stable ICU 2.0
    */
   UBool padLeading(int32_t targetLength,
@@ -2604,7 +2604,7 @@
    * @param targetLength the desired length of the string
    * @param padChar the character to use for padding. Defaults to
    * space (U+0020)
-   * @return TRUE if the text was padded, FALSE otherwise.
+   * @return true if the text was padded, false otherwise.
    * @stable ICU 2.0
    */
   UBool padTrailing(int32_t targetLength,
@@ -2613,7 +2613,7 @@
   /**
    * Truncate this UnicodeString to the `targetLength`.
    * @param targetLength the desired length of this UnicodeString.
-   * @return TRUE if the text was truncated, FALSE otherwise
+   * @return true if the text was truncated, false otherwise
    * @stable ICU 2.0
    */
   inline UBool truncate(int32_t targetLength);
@@ -3615,7 +3615,7 @@
   void unBogus();
 
   // implements assigment operator, copy constructor, and fastCopyFrom()
-  UnicodeString &copyFrom(const UnicodeString &src, UBool fastCopy=FALSE);
+  UnicodeString &copyFrom(const UnicodeString &src, UBool fastCopy=false);
 
   // Copies just the fields without memory management.
   void copyFieldsFrom(UnicodeString &src, UBool setSrcToBogus) U_NOEXCEPT;
@@ -3668,13 +3668,13 @@
    * the buffer is refCounted (shared), and refCount>1, or
    * the buffer is too small.
    *
-   * Return FALSE if memory could not be allocated.
+   * Return false if memory could not be allocated.
    */
   UBool cloneArrayIfNeeded(int32_t newCapacity = -1,
                             int32_t growCapacity = -1,
-                            UBool doCopyArray = TRUE,
+                            UBool doCopyArray = true,
                             int32_t **pBufferToDelete = 0,
-                            UBool forceClone = FALSE);
+                            UBool forceClone = false);
 
   /**
    * Common function for UnicodeString case mappings.
@@ -4732,12 +4732,12 @@
   if(isBogus() && targetLength == 0) {
     // truncate(0) of a bogus string makes the string empty and non-bogus
     unBogus();
-    return FALSE;
+    return false;
   } else if((uint32_t)targetLength < (uint32_t)length()) {
     setLength(targetLength);
-    return TRUE;
+    return true;
   } else {
-    return FALSE;
+    return false;
   }
 }
 
diff --git a/icu4c/source/common/unicode/unorm.h b/icu4c/source/common/unicode/unorm.h
index 09dd366..c3c5758 100644
--- a/icu4c/source/common/unicode/unorm.h
+++ b/icu4c/source/common/unicode/unorm.h
@@ -274,7 +274,7 @@
  * never a "maybe".
  * For NFD, NFKD, and FCD, both functions work exactly the same.
  * For NFC and NFKC where quickCheck may return "maybe", this function will
- * perform further tests to arrive at a TRUE/FALSE result.
+ * perform further tests to arrive at a true/false result.
  *
  * @param src        String that is to be tested if it is in a normalization format.
  * @param srcLength  Length of source to test, or -1 if NUL-terminated.
@@ -358,10 +358,10 @@
  * It is useful for operations like a normalizing transliterator, where one would
  * not want to replace a piece of text if it is not modified.
  *
- * If doNormalize==TRUE and pNeededToNormalize!=NULL then *pNeeded... is set TRUE
+ * If doNormalize==true and pNeededToNormalize!=NULL then *pNeeded... is set true
  * if the normalization was necessary.
  *
- * If doNormalize==FALSE then *pNeededToNormalize will be set to FALSE.
+ * If doNormalize==false then *pNeededToNormalize will be set to false.
  *
  * If the buffer overflows, then *pNeededToNormalize will be undefined;
  * essentially, whenever U_FAILURE is true (like in buffer overflows), this result
@@ -373,11 +373,11 @@
  * @param mode The normalization mode.
  * @param options The normalization options, ORed together (0 for no options).
  * @param doNormalize Indicates if the source text up to the next boundary
- *                    is to be normalized (TRUE) or just copied (FALSE).
+ *                    is to be normalized (true) or just copied (false).
  * @param pNeededToNormalize Output flag indicating if the normalization resulted in
  *                           different text from the input.
  *                           Not defined if an error occurs including buffer overflow.
- *                           Always FALSE if !doNormalize.
+ *                           Always false if !doNormalize.
  * @param pErrorCode ICU error code in/out parameter.
  *                   Must fulfill U_SUCCESS before the function call.
  * @return Length of output (number of UChars) when successful or buffer overflow.
@@ -406,11 +406,11 @@
  * @param mode The normalization mode.
  * @param options The normalization options, ORed together (0 for no options).
  * @param doNormalize Indicates if the source text up to the next boundary
- *                    is to be normalized (TRUE) or just copied (FALSE).
+ *                    is to be normalized (true) or just copied (false).
  * @param pNeededToNormalize Output flag indicating if the normalization resulted in
  *                           different text from the input.
  *                           Not defined if an error occurs including buffer overflow.
- *                           Always FALSE if !doNormalize.
+ *                           Always false if !doNormalize.
  * @param pErrorCode ICU error code in/out parameter.
  *                   Must fulfill U_SUCCESS before the function call.
  * @return Length of output (number of UChars) when successful or buffer overflow.
diff --git a/icu4c/source/common/unicode/unorm2.h b/icu4c/source/common/unicode/unorm2.h
index d18d039..24417b7 100644
--- a/icu4c/source/common/unicode/unorm2.h
+++ b/icu4c/source/common/unicode/unorm2.h
@@ -135,7 +135,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFCInstance(UErrorCode *pErrorCode);
 
 /**
@@ -149,7 +149,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFDInstance(UErrorCode *pErrorCode);
 
 /**
@@ -163,7 +163,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFKCInstance(UErrorCode *pErrorCode);
 
 /**
@@ -177,7 +177,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFKDInstance(UErrorCode *pErrorCode);
 
 /**
@@ -191,7 +191,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFKCCasefoldInstance(UErrorCode *pErrorCode);
 
 /**
@@ -215,7 +215,7 @@
  * @return the requested UNormalizer2, if successful
  * @stable ICU 4.4
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getInstance(const char *packageName,
                    const char *name,
                    UNormalization2Mode mode,
@@ -236,7 +236,7 @@
  * @return the requested UNormalizer2, if successful
  * @stable ICU 4.4
  */
-U_STABLE UNormalizer2 * U_EXPORT2
+U_CAPI UNormalizer2 * U_EXPORT2
 unorm2_openFiltered(const UNormalizer2 *norm2, const USet *filterSet, UErrorCode *pErrorCode);
 
 /**
@@ -245,7 +245,7 @@
  * @param norm2 UNormalizer2 instance to be closed
  * @stable ICU 4.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unorm2_close(UNormalizer2 *norm2);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -283,7 +283,7 @@
  * @return dest
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_normalize(const UNormalizer2 *norm2,
                  const UChar *src, int32_t length,
                  UChar *dest, int32_t capacity,
@@ -306,7 +306,7 @@
  * @return first
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_normalizeSecondAndAppend(const UNormalizer2 *norm2,
                                 UChar *first, int32_t firstLength, int32_t firstCapacity,
                                 const UChar *second, int32_t secondLength,
@@ -329,7 +329,7 @@
  * @return first
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_append(const UNormalizer2 *norm2,
               UChar *first, int32_t firstLength, int32_t firstCapacity,
               const UChar *second, int32_t secondLength,
@@ -354,7 +354,7 @@
  * @return the non-negative length of c's decomposition, if there is one; otherwise a negative value
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_getDecomposition(const UNormalizer2 *norm2,
                         UChar32 c, UChar *decomposition, int32_t capacity,
                         UErrorCode *pErrorCode);
@@ -388,7 +388,7 @@
  * @return the non-negative length of c's raw decomposition, if there is one; otherwise a negative value
  * @stable ICU 49
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_getRawDecomposition(const UNormalizer2 *norm2,
                            UChar32 c, UChar *decomposition, int32_t capacity,
                            UErrorCode *pErrorCode);
@@ -408,7 +408,7 @@
  * @return The non-negative composite code point if there is one; otherwise a negative value.
  * @stable ICU 49
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 unorm2_composePair(const UNormalizer2 *norm2, UChar32 a, UChar32 b);
 
 /**
@@ -420,7 +420,7 @@
  * @return c's combining class
  * @stable ICU 49
  */
-U_STABLE uint8_t U_EXPORT2
+U_CAPI uint8_t U_EXPORT2
 unorm2_getCombiningClass(const UNormalizer2 *norm2, UChar32 c);
 
 /**
@@ -436,10 +436,10 @@
  *                   pass the U_SUCCESS() test, or else the function returns
  *                   immediately. Check for U_FAILURE() on output or use with
  *                   function chaining. (See User Guide for details.)
- * @return TRUE if s is normalized
+ * @return true if s is normalized
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unorm2_isNormalized(const UNormalizer2 *norm2,
                     const UChar *s, int32_t length,
                     UErrorCode *pErrorCode);
@@ -461,7 +461,7 @@
  * @return UNormalizationCheckResult
  * @stable ICU 4.4
  */
-U_STABLE UNormalizationCheckResult U_EXPORT2
+U_CAPI UNormalizationCheckResult U_EXPORT2
 unorm2_quickCheck(const UNormalizer2 *norm2,
                   const UChar *s, int32_t length,
                   UErrorCode *pErrorCode);
@@ -490,7 +490,7 @@
  * @return "yes" span end index
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_spanQuickCheckYes(const UNormalizer2 *norm2,
                          const UChar *s, int32_t length,
                          UErrorCode *pErrorCode);
@@ -501,10 +501,10 @@
  * For details see the Normalizer2 base class documentation.
  * @param norm2 UNormalizer2 instance
  * @param c character to test
- * @return TRUE if c has a normalization boundary before it
+ * @return true if c has a normalization boundary before it
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unorm2_hasBoundaryBefore(const UNormalizer2 *norm2, UChar32 c);
 
 /**
@@ -513,10 +513,10 @@
  * For details see the Normalizer2 base class documentation.
  * @param norm2 UNormalizer2 instance
  * @param c character to test
- * @return TRUE if c has a normalization boundary after it
+ * @return true if c has a normalization boundary after it
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unorm2_hasBoundaryAfter(const UNormalizer2 *norm2, UChar32 c);
 
 /**
@@ -524,10 +524,10 @@
  * For details see the Normalizer2 base class documentation.
  * @param norm2 UNormalizer2 instance
  * @param c character to test
- * @return TRUE if c is normalization-inert
+ * @return true if c is normalization-inert
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unorm2_isInert(const UNormalizer2 *norm2, UChar32 c);
 
 /**
@@ -596,7 +596,7 @@
  *
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm_compare(const UChar *s1, int32_t length1,
               const UChar *s2, int32_t length2,
               uint32_t options,
diff --git a/icu4c/source/common/unicode/urename.h b/icu4c/source/common/unicode/urename.h
index 30f4b7a..fe59fdd 100644
--- a/icu4c/source/common/unicode/urename.h
+++ b/icu4c/source/common/unicode/urename.h
@@ -130,7 +130,6 @@
 #define izrule_getStaticClassID U_ICU_ENTRY_POINT_RENAME(izrule_getStaticClassID)
 #define izrule_isEquivalentTo U_ICU_ENTRY_POINT_RENAME(izrule_isEquivalentTo)
 #define izrule_open U_ICU_ENTRY_POINT_RENAME(izrule_open)
-#define locale_getKeywords U_ICU_ENTRY_POINT_RENAME(locale_getKeywords)
 #define locale_getKeywordsStart U_ICU_ENTRY_POINT_RENAME(locale_getKeywordsStart)
 #define locale_get_default U_ICU_ENTRY_POINT_RENAME(locale_get_default)
 #define locale_set_default U_ICU_ENTRY_POINT_RENAME(locale_set_default)
@@ -918,9 +917,11 @@
 #define udtitvfmt_format U_ICU_ENTRY_POINT_RENAME(udtitvfmt_format)
 #define udtitvfmt_formatCalendarToResult U_ICU_ENTRY_POINT_RENAME(udtitvfmt_formatCalendarToResult)
 #define udtitvfmt_formatToResult U_ICU_ENTRY_POINT_RENAME(udtitvfmt_formatToResult)
+#define udtitvfmt_getContext U_ICU_ENTRY_POINT_RENAME(udtitvfmt_getContext)
 #define udtitvfmt_open U_ICU_ENTRY_POINT_RENAME(udtitvfmt_open)
 #define udtitvfmt_openResult U_ICU_ENTRY_POINT_RENAME(udtitvfmt_openResult)
 #define udtitvfmt_resultAsValue U_ICU_ENTRY_POINT_RENAME(udtitvfmt_resultAsValue)
+#define udtitvfmt_setContext U_ICU_ENTRY_POINT_RENAME(udtitvfmt_setContext)
 #define uenum_close U_ICU_ENTRY_POINT_RENAME(uenum_close)
 #define uenum_count U_ICU_ENTRY_POINT_RENAME(uenum_count)
 #define uenum_next U_ICU_ENTRY_POINT_RENAME(uenum_next)
@@ -1079,7 +1080,6 @@
 #define uloc_getDisplayLanguage U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayLanguage)
 #define uloc_getDisplayName U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayName)
 #define uloc_getDisplayScript U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayScript)
-#define uloc_getDisplayScriptInContext U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayScriptInContext)
 #define uloc_getDisplayVariant U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayVariant)
 #define uloc_getISO3Country U_ICU_ENTRY_POINT_RENAME(uloc_getISO3Country)
 #define uloc_getISO3Language U_ICU_ENTRY_POINT_RENAME(uloc_getISO3Language)
@@ -1123,16 +1123,21 @@
 #define ulocimp_forLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocimp_forLanguageTag)
 #define ulocimp_getBaseName U_ICU_ENTRY_POINT_RENAME(ulocimp_getBaseName)
 #define ulocimp_getCountry U_ICU_ENTRY_POINT_RENAME(ulocimp_getCountry)
+#define ulocimp_getKeywordValue U_ICU_ENTRY_POINT_RENAME(ulocimp_getKeywordValue)
+#define ulocimp_getKeywords U_ICU_ENTRY_POINT_RENAME(ulocimp_getKeywords)
+#define ulocimp_getKnownCanonicalizedLocaleForTest U_ICU_ENTRY_POINT_RENAME(ulocimp_getKnownCanonicalizedLocaleForTest)
 #define ulocimp_getLanguage U_ICU_ENTRY_POINT_RENAME(ulocimp_getLanguage)
 #define ulocimp_getName U_ICU_ENTRY_POINT_RENAME(ulocimp_getName)
 #define ulocimp_getRegionForSupplementalData U_ICU_ENTRY_POINT_RENAME(ulocimp_getRegionForSupplementalData)
 #define ulocimp_getScript U_ICU_ENTRY_POINT_RENAME(ulocimp_getScript)
+#define ulocimp_isCanonicalizedLocaleForTest U_ICU_ENTRY_POINT_RENAME(ulocimp_isCanonicalizedLocaleForTest)
 #define ulocimp_minimizeSubtags U_ICU_ENTRY_POINT_RENAME(ulocimp_minimizeSubtags)
 #define ulocimp_toBcpKey U_ICU_ENTRY_POINT_RENAME(ulocimp_toBcpKey)
 #define ulocimp_toBcpType U_ICU_ENTRY_POINT_RENAME(ulocimp_toBcpType)
 #define ulocimp_toLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocimp_toLanguageTag)
 #define ulocimp_toLegacyKey U_ICU_ENTRY_POINT_RENAME(ulocimp_toLegacyKey)
 #define ulocimp_toLegacyType U_ICU_ENTRY_POINT_RENAME(ulocimp_toLegacyType)
+#define ultag_getTKeyStart U_ICU_ENTRY_POINT_RENAME(ultag_getTKeyStart)
 #define ultag_isExtensionSubtags U_ICU_ENTRY_POINT_RENAME(ultag_isExtensionSubtags)
 #define ultag_isLanguageSubtag U_ICU_ENTRY_POINT_RENAME(ultag_isLanguageSubtag)
 #define ultag_isPrivateuseValueSubtags U_ICU_ENTRY_POINT_RENAME(ultag_isPrivateuseValueSubtags)
@@ -1245,7 +1250,18 @@
 #define unumf_resultAsValue U_ICU_ENTRY_POINT_RENAME(unumf_resultAsValue)
 #define unumf_resultGetAllFieldPositions U_ICU_ENTRY_POINT_RENAME(unumf_resultGetAllFieldPositions)
 #define unumf_resultNextFieldPosition U_ICU_ENTRY_POINT_RENAME(unumf_resultNextFieldPosition)
+#define unumf_resultToDecimalNumber U_ICU_ENTRY_POINT_RENAME(unumf_resultToDecimalNumber)
 #define unumf_resultToString U_ICU_ENTRY_POINT_RENAME(unumf_resultToString)
+#define unumrf_close U_ICU_ENTRY_POINT_RENAME(unumrf_close)
+#define unumrf_closeResult U_ICU_ENTRY_POINT_RENAME(unumrf_closeResult)
+#define unumrf_formatDecimalRange U_ICU_ENTRY_POINT_RENAME(unumrf_formatDecimalRange)
+#define unumrf_formatDoubleRange U_ICU_ENTRY_POINT_RENAME(unumrf_formatDoubleRange)
+#define unumrf_openForSkeletonWithCollapseAndIdentityFallback U_ICU_ENTRY_POINT_RENAME(unumrf_openForSkeletonWithCollapseAndIdentityFallback)
+#define unumrf_openResult U_ICU_ENTRY_POINT_RENAME(unumrf_openResult)
+#define unumrf_resultAsValue U_ICU_ENTRY_POINT_RENAME(unumrf_resultAsValue)
+#define unumrf_resultGetFirstDecimalNumber U_ICU_ENTRY_POINT_RENAME(unumrf_resultGetFirstDecimalNumber)
+#define unumrf_resultGetIdentityResult U_ICU_ENTRY_POINT_RENAME(unumrf_resultGetIdentityResult)
+#define unumrf_resultGetSecondDecimalNumber U_ICU_ENTRY_POINT_RENAME(unumrf_resultGetSecondDecimalNumber)
 #define unumsys_close U_ICU_ENTRY_POINT_RENAME(unumsys_close)
 #define unumsys_getDescription U_ICU_ENTRY_POINT_RENAME(unumsys_getDescription)
 #define unumsys_getName U_ICU_ENTRY_POINT_RENAME(unumsys_getName)
@@ -1259,6 +1275,7 @@
 #define uplrules_open U_ICU_ENTRY_POINT_RENAME(uplrules_open)
 #define uplrules_openForType U_ICU_ENTRY_POINT_RENAME(uplrules_openForType)
 #define uplrules_select U_ICU_ENTRY_POINT_RENAME(uplrules_select)
+#define uplrules_selectForRange U_ICU_ENTRY_POINT_RENAME(uplrules_selectForRange)
 #define uplrules_selectFormatted U_ICU_ENTRY_POINT_RENAME(uplrules_selectFormatted)
 #define uplrules_selectWithFormat U_ICU_ENTRY_POINT_RENAME(uplrules_selectWithFormat)
 #define uplug_closeLibrary U_ICU_ENTRY_POINT_RENAME(uplug_closeLibrary)
diff --git a/icu4c/source/common/unicode/ures.h b/icu4c/source/common/unicode/ures.h
index c9dfc2d..fff8404 100644
--- a/icu4c/source/common/unicode/ures.h
+++ b/icu4c/source/common/unicode/ures.h
@@ -166,7 +166,7 @@
  * @see ures_close
  * @stable ICU 2.0
  */
-U_STABLE UResourceBundle*  U_EXPORT2
+U_CAPI UResourceBundle*  U_EXPORT2
 ures_open(const char*    packageName,
           const char*  locale,
           UErrorCode*     status);
@@ -189,7 +189,7 @@
  * @see ures_close
  * @stable ICU 2.0
  */
-U_STABLE UResourceBundle* U_EXPORT2
+U_CAPI UResourceBundle* U_EXPORT2
 ures_openDirect(const char* packageName,
                 const char* locale,
                 UErrorCode* status);
@@ -212,7 +212,7 @@
  * @see ures_open
  * @stable ICU 2.0
  */
-U_STABLE UResourceBundle* U_EXPORT2
+U_CAPI UResourceBundle* U_EXPORT2
 ures_openU(const UChar* packageName,
            const char* locale,
            UErrorCode* status);
@@ -248,7 +248,7 @@
  * @see ures_open
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ures_close(UResourceBundle* resourceBundle);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -294,7 +294,7 @@
  *                    as specified in the resource bundle or its parent.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ures_getVersion(const UResourceBundle* resB,
                 UVersionInfo versionInfo);
 
@@ -328,7 +328,7 @@
  * @return  A Locale name
  * @stable ICU 2.8
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 ures_getLocaleByType(const UResourceBundle* resourceBundle,
                      ULocDataLocaleType type,
                      UErrorCode* status);
@@ -351,7 +351,7 @@
  * @param status The error code.
  * @internal
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 ures_openFillIn(UResourceBundle *r,
                 const char* packageName,
                 const char* localeID,
@@ -375,7 +375,7 @@
  * @see ures_getUInt
  * @stable ICU 2.0
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ures_getString(const UResourceBundle* resourceBundle,
                int32_t* len,
                UErrorCode* status);
@@ -386,10 +386,10 @@
  * it may need to be copied, or transformed from UTF-16 using u_strToUTF8()
  * or equivalent.
  *
- * If forceCopy==TRUE, then the string is always written to the dest buffer
+ * If forceCopy==true, then the string is always written to the dest buffer
  * and dest is returned.
  *
- * If forceCopy==FALSE, then the string is returned as a pointer if possible,
+ * If forceCopy==false, then the string is returned as a pointer if possible,
  * without needing a dest buffer (it can be NULL). If the string needs to be
  * copied or transformed, then it may be placed into dest at an arbitrary offset.
  *
@@ -407,10 +407,10 @@
  *               terminating NUL, even in case of U_BUFFER_OVERFLOW_ERROR.
  *               Can be NULL, meaning capacity=0 and the string length is not
  *               returned to the caller.
- * @param forceCopy If TRUE, then the output string will always be written to
+ * @param forceCopy If true, then the output string will always be written to
  *                  dest, with U_BUFFER_OVERFLOW_ERROR and
  *                  U_STRING_NOT_TERMINATED_WARNING set if appropriate.
- *                  If FALSE, then the dest buffer may or may not contain a
+ *                  If false, then the dest buffer may or may not contain a
  *                  copy of the string. dest may or may not be modified.
  *                  If a copy needs to be written, then the UErrorCode parameter
  *                  indicates overflow etc. as usual.
@@ -427,7 +427,7 @@
  * @see u_strToUTF8
  * @stable ICU 3.6
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ures_getUTF8String(const UResourceBundle *resB,
                    char *dest, int32_t *length,
                    UBool forceCopy,
@@ -450,7 +450,7 @@
  * @see ures_getUInt
  * @stable ICU 2.0
  */
-U_STABLE const uint8_t* U_EXPORT2
+U_CAPI const uint8_t* U_EXPORT2
 ures_getBinary(const UResourceBundle* resourceBundle,
                int32_t* len,
                UErrorCode* status);
@@ -472,7 +472,7 @@
  * @see ures_getUInt
  * @stable ICU 2.0
  */
-U_STABLE const int32_t* U_EXPORT2
+U_CAPI const int32_t* U_EXPORT2
 ures_getIntVector(const UResourceBundle* resourceBundle,
                   int32_t* len,
                   UErrorCode* status);
@@ -493,7 +493,7 @@
  * @see ures_getString
  * @stable ICU 2.0
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 ures_getUInt(const UResourceBundle* resourceBundle,
              UErrorCode *status);
 
@@ -513,7 +513,7 @@
  * @see ures_getString
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ures_getInt(const UResourceBundle* resourceBundle,
             UErrorCode *status);
 
@@ -527,7 +527,7 @@
  * @return number of resources in a given resource.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ures_getSize(const UResourceBundle *resourceBundle);
 
 /**
@@ -538,7 +538,7 @@
  * @see UResType
  * @stable ICU 2.0
  */
-U_STABLE UResType U_EXPORT2
+U_CAPI UResType U_EXPORT2
 ures_getType(const UResourceBundle *resourceBundle);
 
 /**
@@ -549,7 +549,7 @@
  * @return a key associated to this resource, or NULL if it doesn't have a key
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ures_getKey(const UResourceBundle *resourceBundle);
 
 /* ITERATION API
@@ -562,17 +562,17 @@
  * @param resourceBundle a resource
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ures_resetIterator(UResourceBundle *resourceBundle);
 
 /**
  * Checks whether the given resource has another element to iterate over.
  *
  * @param resourceBundle a resource
- * @return TRUE if there are more elements, FALSE if there is no more elements
+ * @return true if there are more elements, false if there is no more elements
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ures_hasNext(const UResourceBundle *resourceBundle);
 
 /**
@@ -587,7 +587,7 @@
  * @return                  a pointer to a UResourceBundle struct. If fill in param was NULL, caller must close it
  * @stable ICU 2.0
  */
-U_STABLE UResourceBundle* U_EXPORT2
+U_CAPI UResourceBundle* U_EXPORT2
 ures_getNextResource(UResourceBundle *resourceBundle,
                      UResourceBundle *fillIn,
                      UErrorCode *status);
@@ -604,7 +604,7 @@
  * @return a pointer to a zero-terminated UChar array which lives in a memory mapped/DLL file.
  * @stable ICU 2.0
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ures_getNextString(UResourceBundle *resourceBundle,
                    int32_t* len,
                    const char ** key,
@@ -622,7 +622,7 @@
  * @return                  a pointer to a UResourceBundle struct. If fill in param was NULL, caller must close it
  * @stable ICU 2.0
  */
-U_STABLE UResourceBundle* U_EXPORT2
+U_CAPI UResourceBundle* U_EXPORT2
 ures_getByIndex(const UResourceBundle *resourceBundle,
                 int32_t indexR,
                 UResourceBundle *fillIn,
@@ -639,7 +639,7 @@
  * @return                  a pointer to a zero-terminated UChar array which lives in a memory mapped/DLL file.
  * @stable ICU 2.0
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ures_getStringByIndex(const UResourceBundle *resourceBundle,
                       int32_t indexS,
                       int32_t* len,
@@ -651,10 +651,10 @@
  * it may need to be copied, or transformed from UTF-16 using u_strToUTF8()
  * or equivalent.
  *
- * If forceCopy==TRUE, then the string is always written to the dest buffer
+ * If forceCopy==true, then the string is always written to the dest buffer
  * and dest is returned.
  *
- * If forceCopy==FALSE, then the string is returned as a pointer if possible,
+ * If forceCopy==false, then the string is returned as a pointer if possible,
  * without needing a dest buffer (it can be NULL). If the string needs to be
  * copied or transformed, then it may be placed into dest at an arbitrary offset.
  *
@@ -673,10 +673,10 @@
  *               terminating NUL, even in case of U_BUFFER_OVERFLOW_ERROR.
  *               Can be NULL, meaning capacity=0 and the string length is not
  *               returned to the caller.
- * @param forceCopy If TRUE, then the output string will always be written to
+ * @param forceCopy If true, then the output string will always be written to
  *                  dest, with U_BUFFER_OVERFLOW_ERROR and
  *                  U_STRING_NOT_TERMINATED_WARNING set if appropriate.
- *                  If FALSE, then the dest buffer may or may not contain a
+ *                  If false, then the dest buffer may or may not contain a
  *                  copy of the string. dest may or may not be modified.
  *                  If a copy needs to be written, then the UErrorCode parameter
  *                  indicates overflow etc. as usual.
@@ -693,7 +693,7 @@
  * @see u_strToUTF8
  * @stable ICU 3.6
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ures_getUTF8StringByIndex(const UResourceBundle *resB,
                           int32_t stringIndex,
                           char *dest, int32_t *pLength,
@@ -712,7 +712,7 @@
  * @return                  a pointer to a UResourceBundle struct. If fill in param was NULL, caller must close it
  * @stable ICU 2.0
  */
-U_STABLE UResourceBundle* U_EXPORT2
+U_CAPI UResourceBundle* U_EXPORT2
 ures_getByKey(const UResourceBundle *resourceBundle,
               const char* key,
               UResourceBundle *fillIn,
@@ -730,7 +730,7 @@
  * @return                  a pointer to a zero-terminated UChar array which lives in a memory mapped/DLL file.
  * @stable ICU 2.0
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ures_getStringByKey(const UResourceBundle *resB,
                     const char* key,
                     int32_t* len,
@@ -744,10 +744,10 @@
  * it may need to be copied, or transformed from UTF-16 using u_strToUTF8()
  * or equivalent.
  *
- * If forceCopy==TRUE, then the string is always written to the dest buffer
+ * If forceCopy==true, then the string is always written to the dest buffer
  * and dest is returned.
  *
- * If forceCopy==FALSE, then the string is returned as a pointer if possible,
+ * If forceCopy==false, then the string is returned as a pointer if possible,
  * without needing a dest buffer (it can be NULL). If the string needs to be
  * copied or transformed, then it may be placed into dest at an arbitrary offset.
  *
@@ -766,10 +766,10 @@
  *               terminating NUL, even in case of U_BUFFER_OVERFLOW_ERROR.
  *               Can be NULL, meaning capacity=0 and the string length is not
  *               returned to the caller.
- * @param forceCopy If TRUE, then the output string will always be written to
+ * @param forceCopy If true, then the output string will always be written to
  *                  dest, with U_BUFFER_OVERFLOW_ERROR and
  *                  U_STRING_NOT_TERMINATED_WARNING set if appropriate.
- *                  If FALSE, then the dest buffer may or may not contain a
+ *                  If false, then the dest buffer may or may not contain a
  *                  copy of the string. dest may or may not be modified.
  *                  If a copy needs to be written, then the UErrorCode parameter
  *                  indicates overflow etc. as usual.
@@ -786,7 +786,7 @@
  * @see u_strToUTF8
  * @stable ICU 3.6
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ures_getUTF8StringByKey(const UResourceBundle *resB,
                         const char *key,
                         char *dest, int32_t *pLength,
@@ -814,7 +814,7 @@
     int32_t len = 0;
     const UChar *r = ures_getString(resB, &len, status);
     if(U_SUCCESS(*status)) {
-        result.setTo(TRUE, r, len);
+        result.setTo(true, r, len);
     } else {
         result.setToBogus();
     }
@@ -839,7 +839,7 @@
     int32_t len = 0;
     const UChar* r = ures_getNextString(resB, &len, key, status);
     if(U_SUCCESS(*status)) {
-        result.setTo(TRUE, r, len);
+        result.setTo(true, r, len);
     } else {
         result.setToBogus();
     }
@@ -861,7 +861,7 @@
     int32_t len = 0;
     const UChar* r = ures_getStringByIndex(resB, indexS, &len, status);
     if(U_SUCCESS(*status)) {
-        result.setTo(TRUE, r, len);
+        result.setTo(true, r, len);
     } else {
         result.setToBogus();
     }
@@ -884,7 +884,7 @@
     int32_t len = 0;
     const UChar* r = ures_getStringByKey(resB, key, &len, status);
     if(U_SUCCESS(*status)) {
-        result.setTo(TRUE, r, len);
+        result.setTo(true, r, len);
     } else {
         result.setToBogus();
     }
@@ -903,7 +903,7 @@
  * @param status error code
  * @stable ICU 3.2
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ures_openAvailableLocales(const char *packageName, UErrorCode *status);
 
 
diff --git a/icu4c/source/common/unicode/uscript.h b/icu4c/source/common/unicode/uscript.h
index 53d57ab..8448afd 100644
--- a/icu4c/source/common/unicode/uscript.h
+++ b/icu4c/source/common/unicode/uscript.h
@@ -514,7 +514,7 @@
  * @return The number of script codes filled in the buffer passed in
  * @stable ICU 2.4
  */
-U_STABLE int32_t  U_EXPORT2
+U_CAPI int32_t  U_EXPORT2
 uscript_getCode(const char* nameOrAbbrOrLocale,UScriptCode* fillIn,int32_t capacity,UErrorCode *err);
 
 /**
@@ -527,7 +527,7 @@
  * or NULL if scriptCode is invalid
  * @stable ICU 2.4
  */
-U_STABLE const char*  U_EXPORT2
+U_CAPI const char*  U_EXPORT2
 uscript_getName(UScriptCode scriptCode);
 
 /**
@@ -539,7 +539,7 @@
  * @return short script name (4-letter code), or NULL if scriptCode is invalid
  * @stable ICU 2.4
  */
-U_STABLE const char*  U_EXPORT2
+U_CAPI const char*  U_EXPORT2
 uscript_getShortName(UScriptCode scriptCode);
 
 /**
@@ -550,7 +550,7 @@
  * @return The UScriptCode, or 0 if codepoint is invalid
  * @stable ICU 2.4
  */
-U_STABLE UScriptCode  U_EXPORT2
+U_CAPI UScriptCode  U_EXPORT2
 uscript_getScript(UChar32 codepoint, UErrorCode *err);
 
 /**
@@ -562,10 +562,10 @@
  * For more information, see UAX #24: http://www.unicode.org/reports/tr24/.
  * @param c code point
  * @param sc script code
- * @return TRUE if sc is in Script_Extensions(c)
+ * @return true if sc is in Script_Extensions(c)
  * @stable ICU 49
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uscript_hasScript(UChar32 c, UScriptCode sc);
 
 /**
@@ -597,7 +597,7 @@
  *         written to scripts unless U_BUFFER_OVERFLOW_ERROR indicates insufficient capacity
  * @stable ICU 49
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uscript_getScriptExtensions(UChar32 c,
                             UScriptCode *scripts, int32_t capacity,
                             UErrorCode *errorCode);
@@ -636,7 +636,7 @@
  * @return the string length, even if U_BUFFER_OVERFLOW_ERROR
  * @stable ICU 51
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uscript_getSampleString(UScriptCode script, UChar *dest, int32_t capacity, UErrorCode *pErrorCode);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -668,41 +668,41 @@
  * @see UScriptUsage
  * @stable ICU 51
  */
-U_STABLE UScriptUsage U_EXPORT2
+U_CAPI UScriptUsage U_EXPORT2
 uscript_getUsage(UScriptCode script);
 
 /**
- * Returns TRUE if the script is written right-to-left.
+ * Returns true if the script is written right-to-left.
  * For example, Arab and Hebr.
  *
  * @param script script code
- * @return TRUE if the script is right-to-left
+ * @return true if the script is right-to-left
  * @stable ICU 51
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uscript_isRightToLeft(UScriptCode script);
 
 /**
- * Returns TRUE if the script allows line breaks between letters (excluding hyphenation).
+ * Returns true if the script allows line breaks between letters (excluding hyphenation).
  * Such a script typically requires dictionary-based line breaking.
  * For example, Hani and Thai.
  *
  * @param script script code
- * @return TRUE if the script allows line breaks between letters
+ * @return true if the script allows line breaks between letters
  * @stable ICU 51
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uscript_breaksBetweenLetters(UScriptCode script);
 
 /**
- * Returns TRUE if in modern (or most recent) usage of the script case distinctions are customary.
+ * Returns true if in modern (or most recent) usage of the script case distinctions are customary.
  * For example, Latn and Cyrl.
  *
  * @param script script code
- * @return TRUE if the script is cased
+ * @return true if the script is cased
  * @stable ICU 51
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uscript_isCased(UScriptCode script);
 
 #endif
diff --git a/icu4c/source/common/unicode/uset.h b/icu4c/source/common/unicode/uset.h
index 92496fe..502ea8d 100644
--- a/icu4c/source/common/unicode/uset.h
+++ b/icu4c/source/common/unicode/uset.h
@@ -161,7 +161,7 @@
      * Continues a span() while there is no set element at the current position.
      * Increments by one code point at a time.
      * Stops before the first set element (character or string).
-     * (For code points only, this is like while contains(current)==FALSE).
+     * (For code points only, this is like while contains(current)==false).
      *
      * When span() returns, the substring between where it started and the position
      * it returned consists only of characters that are not in the set,
@@ -172,7 +172,7 @@
     USET_SPAN_NOT_CONTAINED = 0,
     /**
      * Spans the longest substring that is a concatenation of set elements (characters or strings).
-     * (For characters only, this is like while contains(current)==TRUE).
+     * (For characters only, this is like while contains(current)==true).
      *
      * When span() returns, the substring between where it started and the position
      * it returned consists only of set elements (characters or strings) that are in the set.
@@ -188,7 +188,7 @@
     /**
      * Continues a span() while there is a set element at the current position.
      * Increments by the longest matching element at each position.
-     * (For characters only, this is like while contains(current)==TRUE).
+     * (For characters only, this is like while contains(current)==true).
      *
      * When span() returns, the substring between where it started and the position
      * it returned consists only of set elements (characters or strings) that are in the set.
@@ -263,7 +263,7 @@
  * it when done.
  * @stable ICU 4.2
  */
-U_STABLE USet* U_EXPORT2
+U_CAPI USet* U_EXPORT2
 uset_openEmpty(void);
 
 /**
@@ -276,7 +276,7 @@
  * it when done.
  * @stable ICU 2.4
  */
-U_STABLE USet* U_EXPORT2
+U_CAPI USet* U_EXPORT2
 uset_open(UChar32 start, UChar32 end);
 
 /**
@@ -288,7 +288,7 @@
  * @param ec the error code
  * @stable ICU 2.4
  */
-U_STABLE USet* U_EXPORT2
+U_CAPI USet* U_EXPORT2
 uset_openPattern(const UChar* pattern, int32_t patternLength,
                  UErrorCode* ec);
 
@@ -303,7 +303,7 @@
  * @param ec the error code
  * @stable ICU 2.4
  */
-U_STABLE USet* U_EXPORT2
+U_CAPI USet* U_EXPORT2
 uset_openPatternOptions(const UChar* pattern, int32_t patternLength,
                  uint32_t options,
                  UErrorCode* ec);
@@ -314,7 +314,7 @@
  * @param set the object to dispose of
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_close(USet* set);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -345,19 +345,19 @@
  * @see uset_cloneAsThawed
  * @stable ICU 3.8
  */
-U_STABLE USet * U_EXPORT2
+U_CAPI USet * U_EXPORT2
 uset_clone(const USet *set);
 
 /**
  * Determines whether the set has been frozen (made immutable) or not.
  * See the ICU4J Freezable interface for details.
  * @param set the set
- * @return TRUE/FALSE for whether the set has been frozen
+ * @return true/false for whether the set has been frozen
  * @see uset_freeze
  * @see uset_cloneAsThawed
  * @stable ICU 3.8
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_isFrozen(const USet *set);
 
 /**
@@ -374,7 +374,7 @@
  * @see uset_cloneAsThawed
  * @stable ICU 3.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_freeze(USet *set);
 
 /**
@@ -387,7 +387,7 @@
  * @see uset_clone
  * @stable ICU 3.8
  */
-U_STABLE USet * U_EXPORT2
+U_CAPI USet * U_EXPORT2
 uset_cloneAsThawed(const USet *set);
 
 /**
@@ -399,7 +399,7 @@
  * @param end last character in the set, inclusive
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_set(USet* set,
          UChar32 start, UChar32 end);
 
@@ -424,7 +424,7 @@
  *
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uset_applyPattern(USet *set,
                   const UChar *pattern, int32_t patternLength,
                   uint32_t options,
@@ -452,7 +452,7 @@
  *
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_applyIntPropertyValue(USet* set,
                            UProperty prop, int32_t value, UErrorCode* ec);
 
@@ -491,7 +491,7 @@
  *
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_applyPropertyAlias(USet* set,
                         const UChar *prop, int32_t propLength,
                         const UChar *value, int32_t valueLength,
@@ -506,7 +506,7 @@
  * @param pos the given position
  * @stable ICU 3.2
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_resemblesPattern(const UChar *pattern, int32_t patternLength,
                       int32_t pos);
 
@@ -517,7 +517,7 @@
  * @param set the set
  * @param result the string to receive the rules, may be NULL
  * @param resultCapacity the capacity of result, may be 0 if result is NULL
- * @param escapeUnprintable if TRUE then convert unprintable
+ * @param escapeUnprintable if true then convert unprintable
  * character to their hex escape representations, \\uxxxx or
  * \\Uxxxxxxxx.  Unprintable characters are those other than
  * U+000A, U+0020..U+007E.
@@ -525,7 +525,7 @@
  * @return length of string, possibly larger than resultCapacity
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_toPattern(const USet* set,
                UChar* result, int32_t resultCapacity,
                UBool escapeUnprintable,
@@ -533,13 +533,13 @@
 
 /**
  * Adds the given character to the given USet.  After this call,
- * uset_contains(set, c) will return TRUE.
+ * uset_contains(set, c) will return true.
  * A frozen set will not be modified.
  * @param set the object to which to add the character
  * @param c the character to add
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_add(USet* set, UChar32 c);
 
 /**
@@ -554,31 +554,31 @@
  * @param additionalSet the source set whose elements are to be added to this set.
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_addAll(USet* set, const USet *additionalSet);
 
 /**
  * Adds the given range of characters to the given USet.  After this call,
- * uset_contains(set, start, end) will return TRUE.
+ * uset_contains(set, start, end) will return true.
  * A frozen set will not be modified.
  * @param set the object to which to add the character
  * @param start the first character of the range to add, inclusive
  * @param end the last character of the range to add, inclusive
  * @stable ICU 2.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_addRange(USet* set, UChar32 start, UChar32 end);
 
 /**
  * Adds the given string to the given USet.  After this call,
- * uset_containsString(set, str, strLen) will return TRUE.
+ * uset_containsString(set, str, strLen) will return true.
  * A frozen set will not be modified.
  * @param set the object to which to add the character
  * @param str the string to add
  * @param strLen the length of the string or -1 if null terminated.
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_addString(USet* set, const UChar* str, int32_t strLen);
 
 /**
@@ -590,42 +590,42 @@
  * @param strLen the length of the string or -1 if null terminated.
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_addAllCodePoints(USet* set, const UChar *str, int32_t strLen);
 
 /**
  * Removes the given character from the given USet.  After this call,
- * uset_contains(set, c) will return FALSE.
+ * uset_contains(set, c) will return false.
  * A frozen set will not be modified.
  * @param set the object from which to remove the character
  * @param c the character to remove
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_remove(USet* set, UChar32 c);
 
 /**
  * Removes the given range of characters from the given USet.  After this call,
- * uset_contains(set, start, end) will return FALSE.
+ * uset_contains(set, start, end) will return false.
  * A frozen set will not be modified.
  * @param set the object to which to add the character
  * @param start the first character of the range to remove, inclusive
  * @param end the last character of the range to remove, inclusive
  * @stable ICU 2.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_removeRange(USet* set, UChar32 start, UChar32 end);
 
 /**
  * Removes the given string to the given USet.  After this call,
- * uset_containsString(set, str, strLen) will return FALSE.
+ * uset_containsString(set, str, strLen) will return false.
  * A frozen set will not be modified.
  * @param set the object to which to add the character
  * @param str the string to remove
  * @param strLen the length of the string or -1 if null terminated.
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_removeString(USet* set, const UChar* str, int32_t strLen);
 
 /**
@@ -639,7 +639,7 @@
  * removed from this set
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_removeAll(USet* set, const USet* removeSet);
 
 /**
@@ -656,7 +656,7 @@
  * to this set.
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_retain(USet* set, UChar32 start, UChar32 end);
 
 /**
@@ -671,7 +671,7 @@
  * @param retain set that defines which elements this set will retain
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_retainAll(USet* set, const USet* retain);
 
 /**
@@ -682,7 +682,7 @@
  * @param set the object on which to perfrom the compact
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_compact(USet* set);
 
 /**
@@ -693,7 +693,7 @@
  * @param set the set
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_complement(USet* set);
 
 /**
@@ -707,7 +707,7 @@
  * from this set.
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_complementAll(USet* set, const USet* complement);
 
 /**
@@ -717,7 +717,7 @@
  * @param set the set
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_clear(USet* set);
 
 /**
@@ -746,7 +746,7 @@
  * are ignored.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_closeOver(USet* set, int32_t attributes);
 
 /**
@@ -755,51 +755,51 @@
  * @param set the set
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_removeAllStrings(USet* set);
 
 /**
- * Returns TRUE if the given USet contains no characters and no
+ * Returns true if the given USet contains no characters and no
  * strings.
  * @param set the set
  * @return true if set is empty
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_isEmpty(const USet* set);
 
 /**
- * Returns TRUE if the given USet contains the given character.
+ * Returns true if the given USet contains the given character.
  * This function works faster with a frozen set.
  * @param set the set
  * @param c The codepoint to check for within the set
  * @return true if set contains c
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_contains(const USet* set, UChar32 c);
 
 /**
- * Returns TRUE if the given USet contains all characters c
+ * Returns true if the given USet contains all characters c
  * where start <= c && c <= end.
  * @param set the set
  * @param start the first character of the range to test, inclusive
  * @param end the last character of the range to test, inclusive
- * @return TRUE if set contains the range
+ * @return true if set contains the range
  * @stable ICU 2.2
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_containsRange(const USet* set, UChar32 start, UChar32 end);
 
 /**
- * Returns TRUE if the given USet contains the given string.
+ * Returns true if the given USet contains the given string.
  * @param set the set
  * @param str the string
  * @param strLen the length of the string or -1 if null terminated.
  * @return true if set contains str
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_containsString(const USet* set, const UChar* str, int32_t strLen);
 
 /**
@@ -812,7 +812,7 @@
  * @return an index from 0..size()-1, or -1
  * @stable ICU 3.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_indexOf(const USet* set, UChar32 c);
 
 /**
@@ -825,7 +825,7 @@
  * @return the character at the given index, or (UChar32)-1.
  * @stable ICU 3.2
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 uset_charAt(const USet* set, int32_t charIndex);
 
 /**
@@ -836,7 +836,7 @@
  * contained in set
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_size(const USet* set);
 
 /**
@@ -847,7 +847,7 @@
  * and/or strings contained in set
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_getItemCount(const USet* set);
 
 /**
@@ -868,7 +868,7 @@
  * itemIndex is out of range
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_getItem(const USet* set, int32_t itemIndex,
              UChar32* start, UChar32* end,
              UChar* str, int32_t strCapacity,
@@ -882,7 +882,7 @@
  * @return true if the test condition is met
  * @stable ICU 3.2
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_containsAll(const USet* set1, const USet* set2);
 
 /**
@@ -895,7 +895,7 @@
  * @return true if the test condition is met
  * @stable ICU 3.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_containsAllCodePoints(const USet* set, const UChar *str, int32_t strLen);
 
 /**
@@ -906,7 +906,7 @@
  * @return true if the test condition is met
  * @stable ICU 3.2
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_containsNone(const USet* set1, const USet* set2);
 
 /**
@@ -917,7 +917,7 @@
  * @return true if the test condition is met
  * @stable ICU 3.2
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_containsSome(const USet* set1, const USet* set2);
 
 /**
@@ -939,7 +939,7 @@
  * @stable ICU 3.8
  * @see USetSpanCondition
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_span(const USet *set, const UChar *s, int32_t length, USetSpanCondition spanCondition);
 
 /**
@@ -960,7 +960,7 @@
  * @stable ICU 3.8
  * @see USetSpanCondition
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_spanBack(const USet *set, const UChar *s, int32_t length, USetSpanCondition spanCondition);
 
 /**
@@ -982,7 +982,7 @@
  * @stable ICU 3.8
  * @see USetSpanCondition
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_spanUTF8(const USet *set, const char *s, int32_t length, USetSpanCondition spanCondition);
 
 /**
@@ -1003,7 +1003,7 @@
  * @stable ICU 3.8
  * @see USetSpanCondition
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_spanBackUTF8(const USet *set, const char *s, int32_t length, USetSpanCondition spanCondition);
 
 /**
@@ -1014,7 +1014,7 @@
  * @return true if the test condition is met
  * @stable ICU 3.2
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_equals(const USet* set1, const USet* set2);
 
 /*********************************************************************
@@ -1070,7 +1070,7 @@
  * than U_BUFFER_OVERFLOW_ERROR.
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_serialize(const USet* set, uint16_t* dest, int32_t destCapacity, UErrorCode* pErrorCode);
 
 /**
@@ -1081,7 +1081,7 @@
  * @return true if the given array is valid, otherwise false
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_getSerializedSet(USerializedSet* fillSet, const uint16_t* src, int32_t srcLength);
 
 /**
@@ -1091,18 +1091,18 @@
  * @param c The codepoint to set
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_setSerializedToOne(USerializedSet* fillSet, UChar32 c);
 
 /**
- * Returns TRUE if the given USerializedSet contains the given
+ * Returns true if the given USerializedSet contains the given
  * character.
  * @param set the serialized set
  * @param c The codepoint to check for within the set
  * @return true if set contains c
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_serializedContains(const USerializedSet* set, UChar32 c);
 
 /**
@@ -1114,7 +1114,7 @@
  * contained in set
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_getSerializedRangeCount(const USerializedSet* set);
 
 /**
@@ -1130,7 +1130,7 @@
  * @return true if rangeIndex is valid, otherwise false
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_getSerializedRange(const USerializedSet* set, int32_t rangeIndex,
                         UChar32* pStart, UChar32* pEnd);
 
diff --git a/icu4c/source/common/unicode/usetiter.h b/icu4c/source/common/unicode/usetiter.h
index c6396fd..a817ef7 100644
--- a/icu4c/source/common/unicode/usetiter.h
+++ b/icu4c/source/common/unicode/usetiter.h
@@ -176,7 +176,7 @@
      * If there are no more elements in the set, return false.
      *
      * <p>
-     * If <tt>isString() == TRUE</tt>, the value is a
+     * If <tt>isString() == true</tt>, the value is a
      * string, otherwise the value is a
      * single code point.  Elements of either type can be retrieved
      * with the function <tt>getString()</tt>, while elements of
@@ -197,7 +197,7 @@
     /**
      * Returns the next element in the set, either a code point range
      * or a string.  If there are no more elements in the set, return
-     * false.  If <tt>isString() == TRUE</tt>, the value is a
+     * false.  If <tt>isString() == true</tt>, the value is a
      * string and can be accessed with <tt>getString()</tt>.  Otherwise the value is a
      * range of one or more code points from <tt>getCodepoint()</tt> to
      * <tt>getCodepointeEnd()</tt> inclusive.
@@ -205,7 +205,7 @@
      * <p>The order of iteration is all code points ranges in sorted
      * order, followed by all strings sorted order.  Ranges are
      * disjoint and non-contiguous.  The value returned from <tt>getString()</tt>
-     * is undefined unless <tt>isString() == TRUE</tt>.  Do not mix calls to
+     * is undefined unless <tt>isString() == true</tt>.  Do not mix calls to
      * <tt>next()</tt> and <tt>nextRange()</tt> without calling
      * <tt>reset()</tt> between them.  The results of doing so are
      * undefined.
diff --git a/icu4c/source/common/unicode/ushape.h b/icu4c/source/common/unicode/ushape.h
index 78b4d02..fed4869 100644
--- a/icu4c/source/common/unicode/ushape.h
+++ b/icu4c/source/common/unicode/ushape.h
@@ -98,7 +98,7 @@
  *         the return value indicates the necessary destination buffer size.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_shapeArabic(const UChar *source, int32_t sourceLength,
               UChar *dest, int32_t destSize,
               uint32_t options,
diff --git a/icu4c/source/common/unicode/usprep.h b/icu4c/source/common/unicode/usprep.h
index cc1eca1..f8a0f58 100644
--- a/icu4c/source/common/unicode/usprep.h
+++ b/icu4c/source/common/unicode/usprep.h
@@ -184,7 +184,7 @@
  * @see usprep_close()
  * @stable ICU 2.8
  */
-U_STABLE UStringPrepProfile* U_EXPORT2
+U_CAPI UStringPrepProfile* U_EXPORT2
 usprep_open(const char* path, 
             const char* fileName,
             UErrorCode* status);
@@ -200,7 +200,7 @@
  * @see usprep_close()
  * @stable ICU 4.2
  */
-U_STABLE UStringPrepProfile* U_EXPORT2
+U_CAPI UStringPrepProfile* U_EXPORT2
 usprep_openByType(UStringPrepProfileType type,
 				  UErrorCode* status);
 
@@ -209,7 +209,7 @@
  * @param profile The profile to close
  * @stable ICU 2.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 usprep_close(UStringPrepProfile* profile);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -260,7 +260,7 @@
  * @stable ICU 2.8
  */
 
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 usprep_prepare(   const UStringPrepProfile* prep,
                   const UChar* src, int32_t srcLength, 
                   UChar* dest, int32_t destCapacity,
diff --git a/icu4c/source/common/unicode/ustring.h b/icu4c/source/common/unicode/ustring.h
index 245b766..10ea45e 100644
--- a/icu4c/source/common/unicode/ustring.h
+++ b/icu4c/source/common/unicode/ustring.h
@@ -89,7 +89,7 @@
  * @return The number of UChars in <code>chars</code>, minus the terminator.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strlen(const UChar *s);
 /*@}*/
 
@@ -106,7 +106,7 @@
  * @return The number of code points in the specified code units.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_countChar32(const UChar *s, int32_t length);
 
 /**
@@ -127,7 +127,7 @@
  *         than 'number'. Same as (u_countChar32(s, length)>number).
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_strHasMoreChar32Than(const UChar *s, int32_t length, int32_t number);
 
 /**
@@ -140,7 +140,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strcat(UChar     *dst, 
     const UChar     *src);
 
@@ -158,7 +158,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strncat(UChar     *dst, 
      const UChar     *src, 
      int32_t     n);
@@ -183,7 +183,7 @@
  * @see u_strFindFirst
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strstr(const UChar *s, const UChar *substring);
 
 /**
@@ -207,7 +207,7 @@
  * @see u_strstr
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strFindFirst(const UChar *s, int32_t length, const UChar *substring, int32_t subLength);
 
 /**
@@ -227,7 +227,7 @@
  * @see u_strstr
  * @see u_strFindFirst
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strchr(const UChar *s, UChar c);
 
 /**
@@ -247,7 +247,7 @@
  * @see u_strstr
  * @see u_strFindFirst
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strchr32(const UChar *s, UChar32 c);
 
 /**
@@ -270,7 +270,7 @@
  * @see u_strFindFirst
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strrstr(const UChar *s, const UChar *substring);
 
 /**
@@ -294,7 +294,7 @@
  * @see u_strstr
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strFindLast(const UChar *s, int32_t length, const UChar *substring, int32_t subLength);
 
 /**
@@ -314,7 +314,7 @@
  * @see u_strrstr
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strrchr(const UChar *s, UChar c);
 
 /**
@@ -334,7 +334,7 @@
  * @see u_strrstr
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strrchr32(const UChar *s, UChar32 c);
 
 /**
@@ -349,7 +349,7 @@
  *         characters in <code>matchSet</code>, or NULL if no such character is found.
  * @stable ICU 2.0
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strpbrk(const UChar *string, const UChar *matchSet);
 
 /**
@@ -365,7 +365,7 @@
  * @see u_strspn
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strcspn(const UChar *string, const UChar *matchSet);
 
 /**
@@ -381,7 +381,7 @@
  * @see u_strcspn
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strspn(const UChar *string, const UChar *matchSet);
 
 /**
@@ -409,7 +409,7 @@
  *         when there are no more tokens.
  * @stable ICU 2.0
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strtok_r(UChar    *src, 
      const UChar    *delim,
            UChar   **saveState);
@@ -424,7 +424,7 @@
  * value if <code>s1</code> is bitwise greater than <code>s2</code>.
  * @stable ICU 2.0
  */
-U_STABLE int32_t  U_EXPORT2
+U_CAPI int32_t  U_EXPORT2
 u_strcmp(const UChar     *s1, 
          const UChar     *s2);
 
@@ -439,7 +439,7 @@
  * in code point order
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strcmpCodePointOrder(const UChar *s1, const UChar *s2);
 
 /**
@@ -462,14 +462,14 @@
  * @param s2 Second source string.
  * @param length2 Length of second source string, or -1 if NUL-terminated.
  *
- * @param codePointOrder Choose between code unit order (FALSE)
- *                       and code point order (TRUE).
+ * @param codePointOrder Choose between code unit order (false)
+ *                       and code point order (true).
  *
  * @return <0 or 0 or >0 as usual for string comparisons
  *
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strCompare(const UChar *s1, int32_t length1,
              const UChar *s2, int32_t length2,
              UBool codePointOrder);
@@ -485,8 +485,8 @@
  *
  * @param iter1 First source string iterator.
  * @param iter2 Second source string iterator.
- * @param codePointOrder Choose between code unit order (FALSE)
- *                       and code point order (TRUE).
+ * @param codePointOrder Choose between code unit order (false)
+ *                       and code point order (true).
  *
  * @return <0 or 0 or >0 as usual for string comparisons
  *
@@ -494,7 +494,7 @@
  *
  * @stable ICU 2.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strCompareIter(UCharIterator *iter1, UCharIterator *iter2, UBool codePointOrder);
 
 /**
@@ -537,7 +537,7 @@
  *
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strCaseCompare(const UChar *s1, int32_t length1,
                  const UChar *s2, int32_t length2,
                  uint32_t options,
@@ -555,7 +555,7 @@
  * value if <code>s1</code> is bitwise greater than <code>s2</code>.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strncmp(const UChar     *ucs1, 
      const UChar     *ucs2, 
      int32_t     n);
@@ -573,7 +573,7 @@
  * in code point order
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strncmpCodePointOrder(const UChar *s1, const UChar *s2, int32_t n);
 
 /**
@@ -595,7 +595,7 @@
  * @return A negative, zero, or positive integer indicating the comparison result.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strcasecmp(const UChar *s1, const UChar *s2, uint32_t options);
 
 /**
@@ -619,7 +619,7 @@
  * @return A negative, zero, or positive integer indicating the comparison result.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strncasecmp(const UChar *s1, const UChar *s2, int32_t n, uint32_t options);
 
 /**
@@ -643,7 +643,7 @@
  * @return A negative, zero, or positive integer indicating the comparison result.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_memcasecmp(const UChar *s1, const UChar *s2, int32_t length, uint32_t options);
 
 /**
@@ -654,7 +654,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strcpy(UChar     *dst, 
     const UChar     *src);
 
@@ -669,7 +669,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strncpy(UChar     *dst, 
      const UChar     *src, 
      int32_t     n);
@@ -686,7 +686,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2 u_uastrcpy(UChar *dst,
+U_CAPI UChar* U_EXPORT2 u_uastrcpy(UChar *dst,
                const char *src );
 
 /**
@@ -701,7 +701,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2 u_uastrncpy(UChar *dst,
+U_CAPI UChar* U_EXPORT2 u_uastrncpy(UChar *dst,
             const char *src,
             int32_t n);
 
@@ -715,7 +715,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE char* U_EXPORT2 u_austrcpy(char *dst,
+U_CAPI char* U_EXPORT2 u_austrcpy(char *dst,
             const UChar *src );
 
 /**
@@ -730,7 +730,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE char* U_EXPORT2 u_austrncpy(char *dst,
+U_CAPI char* U_EXPORT2 u_austrncpy(char *dst,
             const UChar *src,
             int32_t n );
 
@@ -744,7 +744,7 @@
  * @return A pointer to <code>dest</code>
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memcpy(UChar *dest, const UChar *src, int32_t count);
 
 /**
@@ -755,7 +755,7 @@
  * @return A pointer to <code>dest</code>
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memmove(UChar *dest, const UChar *src, int32_t count);
 
 /**
@@ -767,7 +767,7 @@
  * @return A pointer to <code>dest</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memset(UChar *dest, UChar c, int32_t count);
 
 /**
@@ -781,7 +781,7 @@
  *      When buf1 > buf2, a positive number is returned.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_memcmp(const UChar *buf1, const UChar *buf2, int32_t count);
 
 /**
@@ -797,7 +797,7 @@
  * in code point order
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_memcmpCodePointOrder(const UChar *s1, const UChar *s2, int32_t count);
 
 /**
@@ -817,7 +817,7 @@
  * @see u_memchr32
  * @see u_strFindFirst
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memchr(const UChar *s, UChar c, int32_t count);
 
 /**
@@ -837,7 +837,7 @@
  * @see u_memchr
  * @see u_strFindFirst
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memchr32(const UChar *s, UChar32 c, int32_t count);
 
 /**
@@ -857,7 +857,7 @@
  * @see u_memrchr32
  * @see u_strFindLast
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memrchr(const UChar *s, UChar c, int32_t count);
 
 /**
@@ -877,7 +877,7 @@
  * @see u_memrchr
  * @see u_strFindLast
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memrchr32(const UChar *s, UChar32 c, int32_t count);
 
 /**
@@ -903,13 +903,13 @@
  *
  *     U_STRING_DECL(ustringVar1, "Quick-Fox 2", 11);
  *     U_STRING_DECL(ustringVar2, "jumps 5%", 8);
- *     static UBool didInit=FALSE;
+ *     static UBool didInit=false;
  *
  *     int32_t function() {
  *         if(!didInit) {
  *             U_STRING_INIT(ustringVar1, "Quick-Fox 2", 11);
  *             U_STRING_INIT(ustringVar2, "jumps 5%", 8);
- *             didInit=TRUE;
+ *             didInit=true;
  *         }
  *         return u_strcmp(ustringVar1, ustringVar2);
  *     }
@@ -992,7 +992,7 @@
  * @see UnicodeString#unescapeAt()
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_unescape(const char *src,
            UChar *dest, int32_t destCapacity);
 
@@ -1040,7 +1040,7 @@
  * @see UnicodeString#unescapeAt()
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_unescapeAt(UNESCAPE_CHAR_AT charAt,
              int32_t *offset,
              int32_t length,
@@ -1066,7 +1066,7 @@
  *         only some of the result was written to the destination buffer.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strToUpper(UChar *dest, int32_t destCapacity,
              const UChar *src, int32_t srcLength,
              const char *locale,
@@ -1092,7 +1092,7 @@
  *         only some of the result was written to the destination buffer.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strToLower(UChar *dest, int32_t destCapacity,
              const UChar *src, int32_t srcLength,
              const char *locale,
@@ -1138,7 +1138,7 @@
  *         only some of the result was written to the destination buffer.
  * @stable ICU 2.1
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strToTitle(UChar *dest, int32_t destCapacity,
              const UChar *src, int32_t srcLength,
              UBreakIterator *titleIter,
@@ -1171,7 +1171,7 @@
  *         only some of the result was written to the destination buffer.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strFoldCase(UChar *dest, int32_t destCapacity,
               const UChar *src, int32_t srcLength,
               uint32_t options,
@@ -1200,7 +1200,7 @@
  * @return The pointer to destination buffer.
  * @stable ICU 2.0
  */
-U_STABLE wchar_t* U_EXPORT2
+U_CAPI wchar_t* U_EXPORT2
 u_strToWCS(wchar_t *dest, 
            int32_t destCapacity,
            int32_t *pDestLength,
@@ -1229,7 +1229,7 @@
  * @return The pointer to destination buffer.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strFromWCS(UChar   *dest,
              int32_t destCapacity, 
              int32_t *pDestLength,
@@ -1260,7 +1260,7 @@
  * @see u_strToUTF8WithSub
  * @see u_strFromUTF8
  */
-U_STABLE char* U_EXPORT2 
+U_CAPI char* U_EXPORT2 
 u_strToUTF8(char *dest,           
             int32_t destCapacity,
             int32_t *pDestLength,
@@ -1290,7 +1290,7 @@
  * @see u_strFromUTF8WithSub
  * @see u_strFromUTF8Lenient
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strFromUTF8(UChar *dest,             
               int32_t destCapacity,
               int32_t *pDestLength,
@@ -1333,7 +1333,7 @@
  * @see u_strFromUTF8WithSub
  * @stable ICU 3.6
  */
-U_STABLE char* U_EXPORT2
+U_CAPI char* U_EXPORT2
 u_strToUTF8WithSub(char *dest,
             int32_t destCapacity,
             int32_t *pDestLength,
@@ -1378,7 +1378,7 @@
  * @see u_strToUTF8WithSub
  * @stable ICU 3.6
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strFromUTF8WithSub(UChar *dest,
               int32_t destCapacity,
               int32_t *pDestLength,
@@ -1438,7 +1438,7 @@
  * @see u_strToUTF8WithSub
  * @stable ICU 3.6
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strFromUTF8Lenient(UChar *dest,
                      int32_t destCapacity,
                      int32_t *pDestLength,
@@ -1468,7 +1468,7 @@
  * @see u_strFromUTF32
  * @stable ICU 2.0
  */
-U_STABLE UChar32* U_EXPORT2 
+U_CAPI UChar32* U_EXPORT2 
 u_strToUTF32(UChar32 *dest, 
              int32_t  destCapacity,
              int32_t  *pDestLength,
@@ -1498,7 +1498,7 @@
  * @see u_strToUTF32
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2 
+U_CAPI UChar* U_EXPORT2 
 u_strFromUTF32(UChar   *dest,
                int32_t destCapacity, 
                int32_t *pDestLength,
@@ -1541,7 +1541,7 @@
  * @see u_strFromUTF32WithSub
  * @stable ICU 4.2
  */
-U_STABLE UChar32* U_EXPORT2
+U_CAPI UChar32* U_EXPORT2
 u_strToUTF32WithSub(UChar32 *dest,
              int32_t destCapacity,
              int32_t *pDestLength,
@@ -1585,7 +1585,7 @@
  * @see u_strToUTF32WithSub
  * @stable ICU 4.2
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strFromUTF32WithSub(UChar *dest,
                int32_t destCapacity,
                int32_t *pDestLength,
@@ -1626,7 +1626,7 @@
  * @see u_strToUTF8WithSub
  * @see u_strFromJavaModifiedUTF8WithSub
  */
-U_STABLE char* U_EXPORT2 
+U_CAPI char* U_EXPORT2 
 u_strToJavaModifiedUTF8(
         char *dest,
         int32_t destCapacity,
@@ -1676,7 +1676,7 @@
  * @see u_strToJavaModifiedUTF8
  * @stable ICU 4.4
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strFromJavaModifiedUTF8WithSub(
         UChar *dest,
         int32_t destCapacity,
diff --git a/icu4c/source/common/unicode/utext.h b/icu4c/source/common/unicode/utext.h
index 37d71a3..c6d1e53 100644
--- a/icu4c/source/common/unicode/utext.h
+++ b/icu4c/source/common/unicode/utext.h
@@ -180,7 +180,7 @@
   *
   * @stable ICU 3.4
   */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_close(UText *ut);
 
 /**
@@ -204,7 +204,7 @@
  *               will always be used and returned.
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openUTF8(UText *ut, const char *s, int64_t length, UErrorCode *status);
 
 
@@ -222,7 +222,7 @@
  *               will always be used and returned.
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openUChars(UText *ut, const UChar *s, int64_t length, UErrorCode *status);
 
 
@@ -239,7 +239,7 @@
  *                 will always be used and returned.
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openUnicodeString(UText *ut, icu::UnicodeString *s, UErrorCode *status);
 
 
@@ -255,7 +255,7 @@
  *               will always be used and returned.
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openConstUnicodeString(UText *ut, const icu::UnicodeString *s, UErrorCode *status);
 
 
@@ -271,7 +271,7 @@
  * @see Replaceable
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openReplaceable(UText *ut, icu::Replaceable *rep, UErrorCode *status);
 
 /**
@@ -286,7 +286,7 @@
  * @see Replaceable
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openCharacterIterator(UText *ut, icu::CharacterIterator *ci, UErrorCode *status);
 
 #endif
@@ -323,7 +323,7 @@
   *  shallow clones provide some protection against errors of this type by
   *  disabling text modification via the cloned UText.
   *
-  *  A shallow clone made with the readOnly parameter == FALSE will preserve the 
+  *  A shallow clone made with the readOnly parameter == false will preserve the 
   *  utext_isWritable() state of the source object.  Note, however, that
   *  write operations must be avoided while more than one UText exists that refer
   *  to the same underlying text.
@@ -339,8 +339,8 @@
   *                If non-NULL, must refer to an already existing UText, which will then
   *                be reset to become the clone.
   *  @param src    The UText to be cloned.
-  *  @param deep   TRUE to request a deep clone, FALSE for a shallow clone.
-  *  @param readOnly TRUE to request that the cloned UText have read only access to the 
+  *  @param deep   true to request a deep clone, false for a shallow clone.
+  *  @param readOnly true to request that the cloned UText have read only access to the 
   *                underlying text.  
 
   *  @param status Errors are returned here.  For deep clones, U_UNSUPPORTED_ERROR
@@ -349,7 +349,7 @@
   *  @return       The newly created clone, or NULL if the clone operation failed.
   *  @stable ICU 3.4
   */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_clone(UText *dest, const UText *src, UBool deep, UBool readOnly, UErrorCode *status);
 
 
@@ -357,14 +357,14 @@
   *  Compare two UText objects for equality.
   *  UTexts are equal if they are iterating over the same text, and
   *    have the same iteration position within the text.
-  *    If either or both of the parameters are NULL, the comparison is FALSE.
+  *    If either or both of the parameters are NULL, the comparison is false.
   *
   *  @param a   The first of the two UTexts to compare.
   *  @param b   The other UText to be compared.
-  *  @return    TRUE if the two UTexts are equal.
+  *  @return    true if the two UTexts are equal.
   *  @stable ICU 3.6
   */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 utext_equals(const UText *a, const UText *b);
 
 
@@ -385,11 +385,11 @@
   *
   * @stable ICU 3.4
   */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 utext_nativeLength(UText *ut);
 
 /**
- *  Return TRUE if calculating the length of the text could be expensive.
+ *  Return true if calculating the length of the text could be expensive.
  *  Finding the length of NUL terminated strings is considered to be expensive.
  *
  *  Note that the value of this function may change
@@ -398,10 +398,10 @@
  *  be expensive to report it.
  *
  * @param ut the text to be accessed.
- * @return TRUE if determining the length of the text could be time consuming.
+ * @return true if determining the length of the text could be time consuming.
  * @stable ICU 3.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 utext_isLengthExpensive(const UText *ut);
 
 /**
@@ -429,7 +429,7 @@
  * @return the code point at the specified index.
  * @stable ICU 3.4
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_char32At(UText *ut, int64_t nativeIndex);
 
 
@@ -443,7 +443,7 @@
  * @return the Unicode code point at the current iterator position.
  * @stable ICU 3.4
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_current32(UText *ut);
 
 
@@ -465,7 +465,7 @@
  * @see UTEXT_NEXT32
  * @stable ICU 3.4
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_next32(UText *ut);
 
 
@@ -486,7 +486,7 @@
  *  @see UTEXT_PREVIOUS32
  *  @stable ICU 3.4
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_previous32(UText *ut);
 
 
@@ -508,7 +508,7 @@
   *         or U_SENTINEL (-1) if it is out of bounds.
   * @stable ICU 3.4
   */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_next32From(UText *ut, int64_t nativeIndex);
 
 
@@ -528,7 +528,7 @@
   *
   * @stable ICU 3.4
   */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_previous32From(UText *ut, int64_t nativeIndex);
 
 /**
@@ -543,7 +543,7 @@
   * @return the current index position, in the native units of the text provider.
   * @stable ICU 3.4
   */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 utext_getNativeIndex(const UText *ut);
 
 /**
@@ -569,7 +569,7 @@
  * @param nativeIndex the native unit index of the new iteration position.
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utext_setNativeIndex(UText *ut, int64_t nativeIndex);
 
 /**
@@ -584,11 +584,11 @@
  *
  * @param ut the text to be accessed.
  * @param delta the signed number of code points to move the iteration position.
- * @return TRUE if the position could be moved the requested number of positions while
+ * @return true if the position could be moved the requested number of positions while
  *              staying within the range [0 - text length].
  * @stable ICU 3.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 utext_moveIndex32(UText *ut, int32_t delta);
 
 /**
@@ -613,7 +613,7 @@
  *         or zero if the current position is at the start of the text.
  * @stable ICU 3.6
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 utext_getPreviousNativeIndex(UText *ut); 
 
 
@@ -651,7 +651,7 @@
  *
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utext_extract(UText *ut,
              int64_t nativeStart, int64_t nativeLimit,
              UChar *dest, int32_t destCapacity,
@@ -768,16 +768,16 @@
 
 
 /**
- *  Return TRUE if the text can be written (modified) with utext_replace() or
+ *  Return true if the text can be written (modified) with utext_replace() or
  *  utext_copy().  For the text to be writable, the text provider must
  *  be of a type that supports writing and the UText must not be frozen.
  *
- *  Attempting to modify text when utext_isWriteable() is FALSE will fail -
+ *  Attempting to modify text when utext_isWriteable() is false will fail -
  *  the text will not be modified, and an error will be returned from the function
  *  that attempted the modification.
  *
  * @param  ut   the UText to be tested.
- * @return TRUE if the text is modifiable.
+ * @return true if the text is modifiable.
  *
  * @see    utext_freeze()
  * @see    utext_replace()
@@ -785,7 +785,7 @@
  * @stable ICU 3.4
  *
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 utext_isWritable(const UText *ut);
 
 
@@ -794,10 +794,10 @@
   * @see Replaceable::hasMetaData()
   *
   * @param ut The UText to be tested
-  * @return TRUE if the underlying text includes meta data.
+  * @return true if the underlying text includes meta data.
   * @stable ICU 3.4
   */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 utext_hasMetaData(const UText *ut);
 
 
@@ -808,7 +808,7 @@
  *  newly inserted replacement text.
  *
  * This function is only available on UText types that support writing,
- * that is, ones where utext_isWritable() returns TRUE.
+ * that is, ones where utext_isWritable() returns true.
  *
  * When using this function, there should be only a single UText opened onto the
  * underlying native text string.  Behavior after a replace operation
@@ -828,7 +828,7 @@
  *
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utext_replace(UText *ut,
              int64_t nativeStart, int64_t nativeLimit,
              const UChar *replacementText, int32_t replacementLength,
@@ -850,7 +850,7 @@
  * at the destination position.
  *
  * This function is only available on UText types that support writing,
- * that is, ones where utext_isWritable() returns TRUE.
+ * that is, ones where utext_isWritable() returns true.
  *
  * When using this function, there should be only a single UText opened onto the
  * underlying native text string.  Behavior after a copy operation
@@ -863,12 +863,12 @@
  *                     to be copied.
  * @param destIndex    The native destination index to which the source substring is
  *                     copied or moved.
- * @param move         If TRUE, then the substring is moved, not copied/duplicated.
+ * @param move         If true, then the substring is moved, not copied/duplicated.
  * @param status       receives any error status.  Possible errors include U_NO_WRITE_PERMISSION
  *                       
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utext_copy(UText *ut,
           int64_t nativeStart, int64_t nativeLimit,
           int64_t destIndex,
@@ -897,7 +897,7 @@
   *  @see   utext_isWritable()
   *  @stable ICU 3.6
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utext_freeze(UText *ut);
 
 
@@ -972,7 +972,7 @@
   *  @param dest   A UText struct to be filled in with the result of the clone operation,
   *                or NULL if the clone function should heap-allocate a new UText struct.
   *  @param src    The UText to be cloned.
-  *  @param deep   TRUE to request a deep clone, FALSE for a shallow clone.
+  *  @param deep   true to request a deep clone, false for a shallow clone.
   *  @param status Errors are returned here.  For deep clones, U_UNSUPPORTED_ERROR
   *                should be returned if the text provider is unable to clone the
   *                original text.
@@ -1008,9 +1008,9 @@
  *
  * @param ut          the UText being accessed.
  * @param nativeIndex Requested index of the text to be accessed.
- * @param forward     If TRUE, then the returned chunk must contain text
+ * @param forward     If true, then the returned chunk must contain text
  *                    starting from the index, so that start<=index<limit.
- *                    If FALSE, then the returned chunk must contain text
+ *                    If false, then the returned chunk must contain text
  *                    before the index, so that start<index<=limit.
  * @return            True if the requested index could be accessed.  The chunk
  *                    will contain the requested text.
@@ -1114,7 +1114,7 @@
  * @param nativeStart  The index of the start of the region to be copied or moved
  * @param nativeLimit  The index of the character following the region to be replaced.
  * @param nativeDest   The destination index to which the source substring is copied or moved.
- * @param move         If TRUE, then the substring is moved, not copied/duplicated.
+ * @param move         If true, then the substring is moved, not copied/duplicated.
  * @param status       receives any error status.  Possible errors include U_NO_WRITE_PERMISSION
  *
  * @stable ICU 3.4
@@ -1535,7 +1535,7 @@
  * @return pointer to the UText, allocated if necessary, with extra space set up if requested.
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_setup(UText *ut, int32_t extraSpace, UErrorCode *status);
 
 // do not use #ifndef U_HIDE_INTERNAL_API around the following!
diff --git a/icu4c/source/common/unicode/utf.h b/icu4c/source/common/unicode/utf.h
index ef51299..c9d5f57 100644
--- a/icu4c/source/common/unicode/utf.h
+++ b/icu4c/source/common/unicode/utf.h
@@ -103,7 +103,7 @@
  * code point values (0..U+10ffff). They are indicated with negative values instead.
  *
  * For more information see the ICU User Guide Strings chapter
- * (http://userguide.icu-project.org/strings).
+ * (https://unicode-org.github.io/icu/userguide/strings).
  *
  * <em>Usage:</em>
  * ICU coding guidelines for if() statements should be followed when using these macros.
@@ -124,7 +124,7 @@
 /**
  * Is this code point a Unicode noncharacter?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_UNICODE_NONCHAR(c) \
@@ -145,7 +145,7 @@
  * and that boundary is tested first for performance.
  *
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_UNICODE_CHAR(c) \
@@ -155,7 +155,7 @@
 /**
  * Is this code point a BMP code point (U+0000..U+ffff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.8
  */
 #define U_IS_BMP(c) ((uint32_t)(c)<=0xffff)
@@ -163,7 +163,7 @@
 /**
  * Is this code point a supplementary code point (U+10000..U+10ffff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.8
  */
 #define U_IS_SUPPLEMENTARY(c) ((uint32_t)((c)-0x10000)<=0xfffff)
@@ -171,7 +171,7 @@
 /**
  * Is this code point a lead surrogate (U+d800..U+dbff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_LEAD(c) (((c)&0xfffffc00)==0xd800)
@@ -179,7 +179,7 @@
 /**
  * Is this code point a trail surrogate (U+dc00..U+dfff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_TRAIL(c) (((c)&0xfffffc00)==0xdc00)
@@ -187,7 +187,7 @@
 /**
  * Is this code point a surrogate (U+d800..U+dfff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_SURROGATE(c) (((c)&0xfffff800)==0xd800)
@@ -196,7 +196,7 @@
  * Assuming c is a surrogate code point (U_IS_SURROGATE(c)),
  * is it a lead surrogate?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_SURROGATE_LEAD(c) (((c)&0x400)==0)
@@ -205,7 +205,7 @@
  * Assuming c is a surrogate code point (U_IS_SURROGATE(c)),
  * is it a trail surrogate?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 4.2
  */
 #define U_IS_SURROGATE_TRAIL(c) (((c)&0x400)!=0)
diff --git a/icu4c/source/common/unicode/utf16.h b/icu4c/source/common/unicode/utf16.h
index 9fd7d5c..3902c60 100644
--- a/icu4c/source/common/unicode/utf16.h
+++ b/icu4c/source/common/unicode/utf16.h
@@ -23,7 +23,7 @@
  * This file defines macros to deal with 16-bit Unicode (UTF-16) code units and strings.
  *
  * For more information see utf.h and the ICU User Guide Strings chapter
- * (http://userguide.icu-project.org/strings).
+ * (https://unicode-org.github.io/icu/userguide/strings).
  *
  * <em>Usage:</em>
  * ICU coding guidelines for if() statements should be followed when using these macros.
@@ -34,6 +34,7 @@
 #ifndef __UTF16_H__
 #define __UTF16_H__
 
+#include <stdbool.h>
 #include "unicode/umachine.h"
 #ifndef __UTF_H__
 #   include "unicode/utf.h"
@@ -44,7 +45,7 @@
 /**
  * Does this code unit alone encode a code point (BMP, not a surrogate)?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_SINGLE(c) !U_IS_SURROGATE(c)
@@ -52,7 +53,7 @@
 /**
  * Is this code unit a lead surrogate (U+d800..U+dbff)?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_LEAD(c) (((c)&0xfffffc00)==0xd800)
@@ -60,7 +61,7 @@
 /**
  * Is this code unit a trail surrogate (U+dc00..U+dfff)?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_TRAIL(c) (((c)&0xfffffc00)==0xdc00)
@@ -68,7 +69,7 @@
 /**
  * Is this code unit a surrogate (U+d800..U+dfff)?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_SURROGATE(c) U_IS_SURROGATE(c)
@@ -77,7 +78,7 @@
  * Assuming c is a surrogate code point (U16_IS_SURROGATE(c)),
  * is it a lead surrogate?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_SURROGATE_LEAD(c) (((c)&0x400)==0)
@@ -86,7 +87,7 @@
  * Assuming c is a surrogate code point (U16_IS_SURROGATE(c)),
  * is it a trail surrogate?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 4.2
  */
 #define U16_IS_SURROGATE_TRAIL(c) (((c)&0x400)!=0)
@@ -379,13 +380,13 @@
  * "Safe" macro, checks for a valid code point.
  * If a surrogate pair is written, checks for sufficient space in the string.
  * If the code point is not valid or a trail surrogate does not fit,
- * then isError is set to TRUE.
+ * then isError is set to true.
  *
  * @param s const UChar * string buffer
  * @param i string offset, must be i<capacity
  * @param capacity size of the string buffer
  * @param c code point to append
- * @param isError output UBool set to TRUE if an error occurs, otherwise not modified
+ * @param isError output UBool set to true if an error occurs, otherwise not modified
  * @see U16_APPEND_UNSAFE
  * @stable ICU 2.4
  */
@@ -396,7 +397,7 @@
         (s)[(i)++]=(uint16_t)(((c)>>10)+0xd7c0); \
         (s)[(i)++]=(uint16_t)(((c)&0x3ff)|0xdc00); \
     } else /* c>0x10ffff or not enough space */ { \
-        (isError)=TRUE; \
+        (isError)=true; \
     } \
 } UPRV_BLOCK_MACRO_END
 
diff --git a/icu4c/source/common/unicode/utf8.h b/icu4c/source/common/unicode/utf8.h
index 4987a00..5a07435 100644
--- a/icu4c/source/common/unicode/utf8.h
+++ b/icu4c/source/common/unicode/utf8.h
@@ -23,7 +23,7 @@
  * This file defines macros to deal with 8-bit Unicode (UTF-8) code units (bytes) and strings.
  *
  * For more information see utf.h and the ICU User Guide Strings chapter
- * (http://userguide.icu-project.org/strings).
+ * (https://unicode-org.github.io/icu/userguide/strings).
  *
  * <em>Usage:</em>
  * ICU coding guidelines for if() statements should be followed when using these macros.
@@ -34,6 +34,7 @@
 #ifndef __UTF8_H__
 #define __UTF8_H__
 
+#include <stdbool.h>
 #include "unicode/umachine.h"
 #ifndef __UTF_H__
 #   include "unicode/utf.h"
@@ -117,48 +118,48 @@
  * Function for handling "next code point" with error-checking.
  *
  * This is internal since it is not meant to be called directly by external clients;
- * however it is U_STABLE (not U_INTERNAL) since it is called by public macros in this
+ * however it is called by public macros in this
  * file and thus must remain stable, and should not be hidden when other internal
  * functions are hidden (otherwise public macros would fail to compile).
  * @internal
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utf8_nextCharSafeBody(const uint8_t *s, int32_t *pi, int32_t length, UChar32 c, UBool strict);
 
 /**
  * Function for handling "append code point" with error-checking.
  *
  * This is internal since it is not meant to be called directly by external clients;
- * however it is U_STABLE (not U_INTERNAL) since it is called by public macros in this
+ * however it is called by public macros in this
  * file and thus must remain stable, and should not be hidden when other internal
  * functions are hidden (otherwise public macros would fail to compile).
  * @internal
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utf8_appendCharSafeBody(uint8_t *s, int32_t i, int32_t length, UChar32 c, UBool *pIsError);
 
 /**
  * Function for handling "previous code point" with error-checking.
  *
  * This is internal since it is not meant to be called directly by external clients;
- * however it is U_STABLE (not U_INTERNAL) since it is called by public macros in this
+ * however it is called by public macros in this
  * file and thus must remain stable, and should not be hidden when other internal
  * functions are hidden (otherwise public macros would fail to compile).
  * @internal
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utf8_prevCharSafeBody(const uint8_t *s, int32_t start, int32_t *pi, UChar32 c, UBool strict);
 
 /**
  * Function for handling "skip backward one code point" with error-checking.
  *
  * This is internal since it is not meant to be called directly by external clients;
- * however it is U_STABLE (not U_INTERNAL) since it is called by public macros in this
+ * however it is called by public macros in this
  * file and thus must remain stable, and should not be hidden when other internal
  * functions are hidden (otherwise public macros would fail to compile).
  * @internal
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i);
 
 /* single-code point definitions -------------------------------------------- */
@@ -166,7 +167,7 @@
 /**
  * Does this code unit (byte) encode a code point by itself (US-ASCII 0..0x7f)?
  * @param c 8-bit code unit (byte)
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U8_IS_SINGLE(c) (((c)&0x80)==0)
@@ -174,7 +175,7 @@
 /**
  * Is this code unit (byte) a UTF-8 lead byte? (0xC2..0xF4)
  * @param c 8-bit code unit (byte)
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U8_IS_LEAD(c) ((uint8_t)((c)-0xc2)<=0x32)
@@ -183,7 +184,7 @@
 /**
  * Is this code unit (byte) a UTF-8 trail byte? (0x80..0xBF)
  * @param c 8-bit code unit (byte)
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U8_IS_TRAIL(c) ((int8_t)(c)<-0x40)
@@ -445,13 +446,13 @@
  * "Safe" macro, checks for a valid code point.
  * If a non-ASCII code point is written, checks for sufficient space in the string.
  * If the code point is not valid or trail bytes do not fit,
- * then isError is set to TRUE.
+ * then isError is set to true.
  *
  * @param s const uint8_t * string buffer
  * @param i int32_t string offset, must be i<capacity
  * @param capacity int32_t size of the string buffer
  * @param c UChar32 code point to append
- * @param isError output UBool set to TRUE if an error occurs, otherwise not modified
+ * @param isError output UBool set to true if an error occurs, otherwise not modified
  * @see U8_APPEND_UNSAFE
  * @stable ICU 2.4
  */
@@ -472,7 +473,7 @@
         (s)[(i)++]=(uint8_t)(((__uc>>6)&0x3f)|0x80); \
         (s)[(i)++]=(uint8_t)((__uc&0x3f)|0x80); \
     } else { \
-        (isError)=TRUE; \
+        (isError)=true; \
     } \
 } UPRV_BLOCK_MACRO_END
 
diff --git a/icu4c/source/common/unicode/utf_old.h b/icu4c/source/common/unicode/utf_old.h
index b2428e6..160f5ad 100644
--- a/icu4c/source/common/unicode/utf_old.h
+++ b/icu4c/source/common/unicode/utf_old.h
@@ -109,7 +109,7 @@
  * Where such a distinction is useful, there are two versions of the macros, "unsafe" and "safe"
  * ones with ..._UNSAFE and ..._SAFE suffixes. The unsafe macros are fast but may cause
  * program failures if the strings are not well-formed. The safe macros have an additional, boolean
- * parameter "strict". If strict is FALSE, then only illegal sequences are detected.
+ * parameter "strict". If strict is false, then only illegal sequences are detected.
  * Otherwise, irregular sequences and non-characters are detected as well (like single surrogates).
  * Safe macros return special error code points for illegal/irregular sequences:
  * Typically, U+ffff, or values that would result in a code unit sequence of the same length
@@ -181,7 +181,7 @@
 
 /**
  * The default choice for general Unicode string macros is to use the ..._SAFE macro implementations
- * with strict=FALSE.
+ * with strict=false.
  *
  * @deprecated ICU 2.4. Obsolete, see utf_old.h.
  */
diff --git a/icu4c/source/common/unicode/utrace.h b/icu4c/source/common/unicode/utrace.h
index 5b4a049..28c313c 100644
--- a/icu4c/source/common/unicode/utrace.h
+++ b/icu4c/source/common/unicode/utrace.h
@@ -112,11 +112,9 @@
     UTRACE_COLLATION_LIMIT,
 #endif  // U_HIDE_DEPRECATED_API
 
-#ifndef U_HIDE_DRAFT_API
-
     /**
      * The lowest resource/data location.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UTRACE_UDATA_START=0x3000,
 
@@ -133,7 +131,7 @@
      * - "get" (a path was loaded, but the value was not accessed)
      * - "getalias" (a path was loaded, and an alias was resolved)
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UTRACE_UDATA_RESOURCE=UTRACE_UDATA_START,
 
@@ -141,7 +139,7 @@
      * Indicates that a resource bundle was opened.
      *
      * Provides one C-style string to UTraceData: file name.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UTRACE_UDATA_BUNDLE,
 
@@ -150,7 +148,7 @@
      *
      * Provides one C-style string to UTraceData: file name.
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UTRACE_UDATA_DATA_FILE,
 
@@ -163,12 +161,10 @@
      *
      * Provides one C-style string to UTraceData: file name.
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UTRACE_UDATA_RES_FILE,
 
-#endif  // U_HIDE_DRAFT_API
-
 #ifndef U_HIDE_INTERNAL_API
     /**
      * One more than the highest normal resource/data trace location.
@@ -249,7 +245,7 @@
  * @param traceLevel A UTraceLevel value.
  * @stable ICU 2.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utrace_setLevel(int32_t traceLevel);
 
 /**
@@ -257,7 +253,7 @@
  * @return The UTraceLevel value being used by ICU.
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utrace_getLevel(void);
 
 /* Trace function pointers types  ----------------------------- */
@@ -331,7 +327,7 @@
   *
   *  @stable ICU 2.8
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utrace_setFunctions(const void *context,
                     UTraceEntry *e, UTraceExit *x, UTraceData *d);
 
@@ -345,7 +341,7 @@
   * @param d        The currently installed UTraceData function.
   * @stable ICU 2.8
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utrace_getFunctions(const void **context,
                     UTraceEntry **e, UTraceExit **x, UTraceData **d);
 
@@ -467,7 +463,7 @@
   *                 If buffer capacity is insufficient, the required capacity is returned. 
   *  @stable ICU 2.8
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utrace_vformat(char *outBuf, int32_t capacity,
               int32_t indent, const char *fmt,  va_list args);
 
@@ -488,7 +484,7 @@
   *                 If buffer capacity is insufficient, the required capacity is returned. 
   *  @stable ICU 2.8
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utrace_format(char *outBuf, int32_t capacity,
               int32_t indent, const char *fmt,  ...);
 
@@ -505,7 +501,7 @@
  * @see UTraceFunctionNumber
  * @stable ICU 2.8
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 utrace_functionName(int32_t fnNumber);
 
 U_CDECL_END
diff --git a/icu4c/source/common/unicode/utypes.h b/icu4c/source/common/unicode/utypes.h
index 8d8f547..7c4ea7a 100644
--- a/icu4c/source/common/unicode/utypes.h
+++ b/icu4c/source/common/unicode/utypes.h
@@ -479,13 +479,23 @@
     U_COLLATOR_VERSION_MISMATCH = 28,   /**< Collator version is not compatible with the base version */
     U_USELESS_COLLATOR_ERROR  = 29,     /**< Collator is options only and no base is specified */
     U_NO_WRITE_PERMISSION     = 30,     /**< Attempt to modify read-only or constant data. */
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * The input is impractically long for an operation.
+     * It is rejected because it may lead to problems such as excessive
+     * processing time, stack depth, or heap memory requirements.
+     *
+     * @draft ICU 68
+     */
+    U_INPUT_TOO_LONG_ERROR = 31,
+#endif  // U_HIDE_DRAFT_API
 
 #ifndef U_HIDE_DEPRECATED_API
     /**
      * One more than the highest standard error code.
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
-    U_STANDARD_ERROR_LIMIT,
+    U_STANDARD_ERROR_LIMIT = 32,
 #endif  // U_HIDE_DEPRECATED_API
 
     /*
@@ -715,7 +725,7 @@
  * in the UErrorCode enum above.
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 u_errorName(UErrorCode code);
 
 
diff --git a/icu4c/source/common/unicode/uvernum.h b/icu4c/source/common/unicode/uvernum.h
index c66776d..a46481a 100644
--- a/icu4c/source/common/unicode/uvernum.h
+++ b/icu4c/source/common/unicode/uvernum.h
@@ -60,13 +60,13 @@
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.4
  */
-#define U_ICU_VERSION_MAJOR_NUM 67
+#define U_ICU_VERSION_MAJOR_NUM 68
 
 /** The current ICU minor version as an integer.
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.6
  */
-#define U_ICU_VERSION_MINOR_NUM 1
+#define U_ICU_VERSION_MINOR_NUM 2
 
 /** The current ICU patchlevel version as an integer.
  *  This value will change in the subsequent releases of ICU
@@ -86,7 +86,7 @@
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.6
  */
-#define U_ICU_VERSION_SUFFIX _67
+#define U_ICU_VERSION_SUFFIX _68
 
 /**
  * \def U_DEF2_ICU_ENTRY_POINT_RENAME
@@ -139,7 +139,7 @@
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.4
  */
-#define U_ICU_VERSION "67.1"
+#define U_ICU_VERSION "68.2"
 
 /**
  * The current ICU library major version number as a string, for library name suffixes.
@@ -148,17 +148,17 @@
  * Until ICU 4.8, this was the combination of the single-digit major and minor ICU version numbers
  * into one string without dots ("48").
  * Since ICU 49, it is the double-digit major ICU version number.
- * See http://userguide.icu-project.org/design#TOC-Version-Numbers-in-ICU
+ * See https://unicode-org.github.io/icu/userguide/design#version-numbers-in-icu
  *
  * @stable ICU 2.6
  */
-#define U_ICU_VERSION_SHORT "67"
+#define U_ICU_VERSION_SHORT "68"
 
 #ifndef U_HIDE_INTERNAL_API
 /** Data version in ICU4C.
  * @internal ICU 4.4 Internal Use Only
  **/
-#define U_ICU_DATA_VERSION "67.1"
+#define U_ICU_DATA_VERSION "68.2"
 #endif  /* U_HIDE_INTERNAL_API */
 
 /*===========================================================================
diff --git a/icu4c/source/common/unicode/uversion.h b/icu4c/source/common/unicode/uversion.h
index 5700f62..113568d 100644
--- a/icu4c/source/common/unicode/uversion.h
+++ b/icu4c/source/common/unicode/uversion.h
@@ -141,7 +141,7 @@
  *                      values of up to 255 each.
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_versionFromString(UVersionInfo versionArray, const char *versionString);
 
 /**
@@ -155,7 +155,7 @@
  *                      fields with values of up to 255 each.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_versionFromUString(UVersionInfo versionArray, const UChar *versionString);
 
 
@@ -171,7 +171,7 @@
  *                      The buffer size must be at least U_MAX_VERSION_STRING_LENGTH.
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_versionToString(const UVersionInfo versionArray, char *versionString);
 
 /**
@@ -182,6 +182,6 @@
  * @param versionArray the version # information, the result will be filled in
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_getVersion(UVersionInfo versionArray);
 #endif
diff --git a/icu4c/source/common/unifiedcache.cpp b/icu4c/source/common/unifiedcache.cpp
index f2dd916..493ab79 100644
--- a/icu4c/source/common/unifiedcache.cpp
+++ b/icu4c/source/common/unifiedcache.cpp
@@ -311,7 +311,7 @@
     }
     keyToAdopt->fCreationStatus = creationStatus;
     if (value->softRefCount == 0) {
-        _registerMaster(keyToAdopt, value);
+        _registerPrimary(keyToAdopt, value);
     }
     void *oldValue = uhash_put(fHashtable, keyToAdopt, (void *) value, &status);
     U_ASSERT(oldValue == nullptr);
@@ -338,7 +338,7 @@
     } else {
         _put(element, value, status);
     }
-    // Run an eviction slice. This will run even if we added a master entry
+    // Run an eviction slice. This will run even if we added a primary entry
     // which doesn't increase the unused count, but that is still o.k
     _runEvictionSlice();
 }
@@ -403,9 +403,9 @@
     }
 }
 
-void UnifiedCache::_registerMaster(
+void UnifiedCache::_registerPrimary(
             const CacheKeyBase *theKey, const SharedObject *value) const {
-    theKey->fIsMaster = true;
+    theKey->fIsPrimary = true;
     value->cachePtr = this;
     ++fNumValuesTotal;
     ++fNumValuesInUse;
@@ -420,7 +420,7 @@
     const SharedObject *oldValue = (const SharedObject *) element->value.pointer;
     theKey->fCreationStatus = status;
     if (value->softRefCount == 0) {
-        _registerMaster(theKey, value);
+        _registerPrimary(theKey, value);
     }
     value->softRefCount++;
     UHashElement *ptr = const_cast<UHashElement *>(element);
@@ -474,9 +474,9 @@
         return FALSE;
     }
 
-    // We can evict entries that are either not a master or have just
+    // We can evict entries that are either not a primary or have just
     // one reference (The one reference being from the cache itself).
-    return (!theKey->fIsMaster || (theValue->softRefCount == 1 && theValue->noHardReferences()));
+    return (!theKey->fIsPrimary || (theValue->softRefCount == 1 && theValue->noHardReferences()));
 }
 
 void UnifiedCache::removeSoftRef(const SharedObject *value) const {
diff --git a/icu4c/source/common/unifiedcache.h b/icu4c/source/common/unifiedcache.h
index d6c9945..a31998d 100644
--- a/icu4c/source/common/unifiedcache.h
+++ b/icu4c/source/common/unifiedcache.h
@@ -34,13 +34,13 @@
  */
 class U_COMMON_API CacheKeyBase : public UObject {
  public:
-   CacheKeyBase() : fCreationStatus(U_ZERO_ERROR), fIsMaster(FALSE) {}
+   CacheKeyBase() : fCreationStatus(U_ZERO_ERROR), fIsPrimary(false) {}
 
    /**
     * Copy constructor. Needed to support cloning.
     */
    CacheKeyBase(const CacheKeyBase &other) 
-           : UObject(other), fCreationStatus(other.fCreationStatus), fIsMaster(FALSE) { }
+           : UObject(other), fCreationStatus(other.fCreationStatus), fIsPrimary(false) { }
    virtual ~CacheKeyBase();
 
    /**
@@ -88,7 +88,7 @@
    }
  private:
    mutable UErrorCode fCreationStatus;
-   mutable UBool fIsMaster;
+   mutable UBool fIsPrimary;
    friend class UnifiedCache;
 };
 
@@ -147,10 +147,10 @@
    virtual UBool operator == (const CacheKeyBase &other) const {
        // reflexive
        if (this == &other) {
-           return TRUE;
+           return true;
        }
        if (!CacheKey<T>::operator == (other)) {
-           return FALSE;
+           return false;
        }
        // We know this and other are of same class because operator== on
        // CacheKey returned true.
@@ -359,7 +359,7 @@
    
    /**
     * Flushes the contents of the cache. If cache values hold references to other
-    * cache values then _flush should be called in a loop until it returns FALSE.
+    * cache values then _flush should be called in a loop until it returns false.
     * 
     * On entry, gCacheMutex must be held.
     * On exit, those values with are evictable are flushed.
@@ -370,7 +370,7 @@
     *                     hard (external) references are not deleted, but are detached from
     *                     the cache, so that a subsequent removeRefs can delete them.
     *                     _flush is not thread safe when all is true.
-    *   @return TRUE if any value in cache was flushed or FALSE otherwise.
+    *   @return true if any value in cache was flushed or false otherwise.
     */
    UBool _flush(UBool all) const;
    
@@ -395,11 +395,11 @@
      * Attempts to fetch value and status for key from cache.
      * On entry, gCacheMutex must not be held value must be NULL and status must
      * be U_ZERO_ERROR.
-     * On exit, either returns FALSE (In this
-     * case caller should try to create the object) or returns TRUE with value
+     * On exit, either returns false (In this
+     * case caller should try to create the object) or returns true with value
      * pointing to the fetched value and status set to fetched status. When
-     * FALSE is returned status may be set to failure if an in progress hash
-     * entry could not be made but value will remain unchanged. When TRUE is
+     * false is returned status may be set to failure if an in progress hash
+     * entry could not be made but value will remain unchanged. When true is
      * returned, caller must call removeRef() on value.
      */
     UBool _poll(
@@ -463,17 +463,17 @@
    void _runEvictionSlice() const;
  
    /**
-    * Register a master cache entry. A master key is the first key to create
+    * Register a primary cache entry. A primary key is the first key to create
     * a given  SharedObject value. Subsequent keys whose create function
-    * produce referneces to an already existing SharedObject are not masters -
+    * produce referneces to an already existing SharedObject are not primary -
     * they can be evicted and subsequently recreated.
     * 
     * On entry, gCacheMutex must be held.
-    * On exit, items in use count incremented, entry is marked as a master
+    * On exit, items in use count incremented, entry is marked as a primary
     * entry, and value registered with cache so that subsequent calls to
     * addRef() and removeRef() on it correctly interact with the cache.
     */
-   void _registerMaster(const CacheKeyBase *theKey, const SharedObject *value) const;
+   void _registerPrimary(const CacheKeyBase *theKey, const SharedObject *value) const;
         
    /**
     * Store a value and creation error status in given hash entry.
diff --git a/icu4c/source/common/uniquecharstr.h b/icu4c/source/common/uniquecharstr.h
new file mode 100644
index 0000000..10cc924
--- /dev/null
+++ b/icu4c/source/common/uniquecharstr.h
@@ -0,0 +1,98 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+// uniquecharstr.h
+// created: 2020sep01 Frank Yung-Fong Tang
+
+#ifndef __UNIQUECHARSTR_H__
+#define __UNIQUECHARSTR_H__
+
+#include "charstr.h"
+#include "uassert.h"
+#include "uhash.h"
+
+U_NAMESPACE_BEGIN
+
+/**
+ * Stores NUL-terminated strings with duplicate elimination.
+ * Checks for unique UTF-16 string pointers and converts to invariant characters.
+ *
+ * Intended to be stack-allocated. Add strings, get a unique number for each,
+ * freeze the object, get a char * pointer for each string,
+ * call orphanCharStrings() to capture the string storage, and let this object go out of scope.
+ */
+class UniqueCharStrings {
+public:
+    UniqueCharStrings(UErrorCode &errorCode) : strings(nullptr) {
+        // Note: We hash on string contents but store stable char16_t * pointers.
+        // If the strings are stored in resource bundles which should be built with
+        // duplicate elimination, then we should be able to hash on just the pointer values.
+        uhash_init(&map, uhash_hashUChars, uhash_compareUChars, uhash_compareLong, &errorCode);
+        if (U_FAILURE(errorCode)) { return; }
+        strings = new CharString();
+        if (strings == nullptr) {
+            errorCode = U_MEMORY_ALLOCATION_ERROR;
+        }
+    }
+    ~UniqueCharStrings() {
+        uhash_close(&map);
+        delete strings;
+    }
+
+    /** Returns/orphans the CharString that contains all strings. */
+    CharString *orphanCharStrings() {
+        CharString *result = strings;
+        strings = nullptr;
+        return result;
+    }
+
+    /**
+     * Adds a string and returns a unique number for it.
+     * The string's buffer contents must not change, nor move around in memory,
+     * while this UniqueCharStrings is in use.
+     * The string contents must be NUL-terminated exactly at s.length().
+     *
+     * Best used with read-only-alias UnicodeString objects that point to
+     * stable storage, such as strings returned by resource bundle functions.
+     */
+    int32_t add(const UnicodeString &s, UErrorCode &errorCode) {
+        if (U_FAILURE(errorCode)) { return 0; }
+        if (isFrozen) {
+            errorCode = U_NO_WRITE_PERMISSION;
+            return 0;
+        }
+        // The string points into the resource bundle.
+        const char16_t *p = s.getBuffer();
+        int32_t oldIndex = uhash_geti(&map, p);
+        if (oldIndex != 0) {  // found duplicate
+            return oldIndex;
+        }
+        // Explicit NUL terminator for the previous string.
+        // The strings object is also terminated with one implicit NUL.
+        strings->append(0, errorCode);
+        int32_t newIndex = strings->length();
+        strings->appendInvariantChars(s, errorCode);
+        uhash_puti(&map, const_cast<char16_t *>(p), newIndex, &errorCode);
+        return newIndex;
+    }
+
+    void freeze() { isFrozen = true; }
+
+    /**
+     * Returns a string pointer for its unique number, if this object is frozen.
+     * Otherwise nullptr.
+     */
+    const char *get(int32_t i) const {
+        U_ASSERT(isFrozen);
+        return isFrozen && i > 0 ? strings->data() + i : nullptr;
+    }
+
+private:
+    UHashtable map;
+    CharString *strings;
+    bool isFrozen = false;
+};
+
+U_NAMESPACE_END
+
+#endif  // __UNIQUECHARSTR_H__
diff --git a/icu4c/source/common/unisetspan.h b/icu4c/source/common/unisetspan.h
index f1e78ff..9a1307a 100644
--- a/icu4c/source/common/unisetspan.h
+++ b/icu4c/source/common/unisetspan.h
@@ -65,8 +65,8 @@
 
     /*
      * Do the strings need to be checked in span() etc.?
-     * @return TRUE if strings need to be checked (call span() here),
-     *         FALSE if not (use a BMPSet for best performance).
+     * @return true if strings need to be checked (call span() here),
+     *         false if not (use a BMPSet for best performance).
      */
     inline UBool needsStringSpanUTF16();
     inline UBool needsStringSpanUTF8();
diff --git a/icu4c/source/common/unormimp.h b/icu4c/source/common/unormimp.h
index 88c7975..d2604ad 100644
--- a/icu4c/source/common/unormimp.h
+++ b/icu4c/source/common/unormimp.h
@@ -418,7 +418,7 @@
  * The same bit is used for NFC and NFKC; (c) differs for them.
  * As usual, we build the "not skippable" flags so that unassigned
  * code points get a 0 bit.
- * This bit is only valid after (a)..(e) test FALSE; test NFD_NO before (f) as well.
+ * This bit is only valid after (a)..(e) test false; test NFD_NO before (f) as well.
  * Test Hangul LV syllables entirely in code.
  *
  *
diff --git a/icu4c/source/common/uresbund.cpp b/icu4c/source/common/uresbund.cpp
index 97df4a8..2ece878 100644
--- a/icu4c/source/common/uresbund.cpp
+++ b/icu4c/source/common/uresbund.cpp
@@ -1792,7 +1792,7 @@
 
   return result;
 }
-U_INTERNAL const UChar* U_EXPORT2 
+U_CAPI const UChar* U_EXPORT2 
 ures_getStringByKeyWithFallback(const UResourceBundle *resB, 
                                 const char* inKey, 
                                 int32_t* len,
@@ -2210,7 +2210,7 @@
  *  INTERNAL: Get the name of the first real locale (not placeholder) 
  *  that has resource bundle data.
  */
-U_INTERNAL const char*  U_EXPORT2
+U_CAPI const char*  U_EXPORT2
 ures_getLocaleInternal(const UResourceBundle* resourceBundle, UErrorCode* status)
 {
     if (status==NULL || U_FAILURE(*status)) {
@@ -2357,7 +2357,7 @@
  * 
  * Same as ures_open(), but uses the fill-in parameter and does not allocate a new bundle.
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 ures_openFillIn(UResourceBundle *r, const char* path,
                 const char* localeID, UErrorCode* status) {
     if(U_SUCCESS(*status) && r == NULL) {
@@ -2370,7 +2370,7 @@
 /**
  * Same as ures_openDirect(), but uses the fill-in parameter and does not allocate a new bundle.
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 ures_openDirectFillIn(UResourceBundle *r, const char* path, const char* localeID, UErrorCode* status) {
     if(U_SUCCESS(*status) && r == NULL) {
         *status = U_ILLEGAL_ARGUMENT_ERROR;
@@ -2420,7 +2420,7 @@
  * @see ures_getVersion
  * @internal
  */
-U_INTERNAL const char* U_EXPORT2 
+U_CAPI const char* U_EXPORT2 
 ures_getVersionNumberInternal(const UResourceBundle *resourceBundle)
 {
     if (!resourceBundle) return NULL;
@@ -3016,7 +3016,7 @@
 }
 #if 0
 /* This code isn't needed, and given the documentation warnings the implementation is suspect */
-U_INTERNAL UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ures_equal(const UResourceBundle* res1, const UResourceBundle* res2){
     if(res1==NULL || res2==NULL){
         return res1==res2; /* pointer comparision */
@@ -3052,7 +3052,7 @@
     }
     return TRUE;
 }
-U_INTERNAL UResourceBundle* U_EXPORT2
+U_CAPI UResourceBundle* U_EXPORT2
 ures_clone(const UResourceBundle* res, UErrorCode* status){
     UResourceBundle* bundle = NULL;
     UResourceBundle* ret = NULL;
@@ -3068,7 +3068,7 @@
     }
     return ret;
 }
-U_INTERNAL const UResourceBundle* U_EXPORT2
+U_CAPI const UResourceBundle* U_EXPORT2
 ures_getParentBundle(const UResourceBundle* res){
     if(res==NULL){
         return NULL;
@@ -3077,7 +3077,7 @@
 }
 #endif
 
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 ures_getVersionByKey(const UResourceBundle* res, const char *key, UVersionInfo ver, UErrorCode *status) {
   const UChar *str;
   int32_t len;
diff --git a/icu4c/source/common/uresdata.cpp b/icu4c/source/common/uresdata.cpp
index b3c2e2e..ae731e4 100644
--- a/icu4c/source/common/uresdata.cpp
+++ b/icu4c/source/common/uresdata.cpp
@@ -963,7 +963,7 @@
       if(t2 == RES_BOGUS) { 
         /* if we fail to get the resource by key, maybe we got an index */
         indexR = uprv_strtol(pathP, &closeIndex, 10);
-        if(indexR >= 0 && *closeIndex == 0) {
+        if(indexR >= 0 && *closeIndex == 0 && (*pathP != '0' || closeIndex - pathP == 1)) {
           /* if we indeed have an index, try to get the item by index */
           t2 = res_getTableItemByIndex(pResData, t1, indexR, key);
         } // else t2 is already RES_BOGUS
diff --git a/icu4c/source/common/uresdata.h b/icu4c/source/common/uresdata.h
index d1b67ba..7c2152e 100644
--- a/icu4c/source/common/uresdata.h
+++ b/icu4c/source/common/uresdata.h
@@ -402,7 +402,7 @@
 /*
  * Read a resource bundle from memory.
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 res_read(ResourceData *pResData,
          const UDataInfo *pInfo, const void *inBytes, int32_t length,
          UErrorCode *errorCode);
@@ -422,7 +422,7 @@
 U_CFUNC void
 res_unload(ResourceData *pResData);
 
-U_INTERNAL UResType U_EXPORT2
+U_CAPI UResType U_EXPORT2
 res_getPublicType(Resource res);
 
 ///////////////////////////////////////////////////////////////////////////
@@ -434,31 +434,31 @@
  * and set its length in *pLength.
  * Returns NULL if not found.
  */
-U_INTERNAL const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 res_getStringNoTrace(const ResourceData *pResData, Resource res, int32_t *pLength);
 
-U_INTERNAL const uint8_t * U_EXPORT2
+U_CAPI const uint8_t * U_EXPORT2
 res_getBinaryNoTrace(const ResourceData *pResData, Resource res, int32_t *pLength);
 
-U_INTERNAL const int32_t * U_EXPORT2
+U_CAPI const int32_t * U_EXPORT2
 res_getIntVectorNoTrace(const ResourceData *pResData, Resource res, int32_t *pLength);
 
-U_INTERNAL const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 res_getAlias(const ResourceData *pResData, Resource res, int32_t *pLength);
 
-U_INTERNAL Resource U_EXPORT2
+U_CAPI Resource U_EXPORT2
 res_getResource(const ResourceData *pResData, const char *key);
 
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 res_countArrayItems(const ResourceData *pResData, Resource res);
 
-U_INTERNAL Resource U_EXPORT2
+U_CAPI Resource U_EXPORT2
 res_getArrayItem(const ResourceData *pResData, Resource array, int32_t indexS);
 
-U_INTERNAL Resource U_EXPORT2
+U_CAPI Resource U_EXPORT2
 res_getTableItemByIndex(const ResourceData *pResData, Resource table, int32_t indexS, const char ** key);
 
-U_INTERNAL Resource U_EXPORT2
+U_CAPI Resource U_EXPORT2
 res_getTableItemByKey(const ResourceData *pResData, Resource table, int32_t *indexS, const char* * key);
 
 /**
diff --git a/icu4c/source/common/uresimp.h b/icu4c/source/common/uresimp.h
index f453ddc..69d8256 100644
--- a/icu4c/source/common/uresimp.h
+++ b/icu4c/source/common/uresimp.h
@@ -157,7 +157,7 @@
 U_CFUNC const char* ures_getPath(const UResourceBundle* resB);
 /**
  * If anything was in the RB cache, dump it to the screen.
- * @return TRUE if there was anything into the cache
+ * @return true if there was anything into the cache
  */
 U_CAPI UBool U_EXPORT2 ures_dumpCacheContents(void);
 #endif
@@ -218,7 +218,7 @@
  * @param isAvailable If non-null, pointer to fillin parameter that indicates whether the 
  * requested locale was available. The locale is defined as 'available' if it physically 
  * exists within the specified tree.
- * @param omitDefault if TRUE, omit keyword and value if default. 'de_DE\@collation=standard' -> 'de_DE'
+ * @param omitDefault if true, omit keyword and value if default. 'de_DE\@collation=standard' -> 'de_DE'
  * @param status error code
  * @return  the actual buffer size needed for the full locale.  If it's greater 
  * than resultCapacity, the returned full name will be truncated and an error code will be returned.
diff --git a/icu4c/source/common/ustr_imp.h b/icu4c/source/common/ustr_imp.h
index 0717092..3c4b9cc 100644
--- a/icu4c/source/common/ustr_imp.h
+++ b/icu4c/source/common/ustr_imp.h
@@ -29,7 +29,7 @@
 /**
  * Compare two strings in code point order or code unit order.
  * Works in strcmp style (both lengths -1),
- * strncmp style (lengths equal and >=0, flag TRUE),
+ * strncmp style (lengths equal and >=0, flag true),
  * and memcmp/UnicodeString style (at least one length >=0).
  */
 U_CFUNC int32_t U_EXPORT2
@@ -37,13 +37,13 @@
                 const UChar *s2, int32_t length2,
                 UBool strncmpStyle, UBool codePointOrder);
 
-U_INTERNAL int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ustr_hashUCharsN(const UChar *str, int32_t length);
 
-U_INTERNAL int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ustr_hashCharsN(const char *str, int32_t length);
 
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ustr_hashICharsN(const char *str, int32_t length);
 
 /**
@@ -53,7 +53,7 @@
  * @return If UChar is a lowercase ASCII character, returns the uppercase version.
  *         Otherwise, returns the input character.
  */
-U_INTERNAL UChar U_EXPORT2
+U_CAPI UChar U_EXPORT2
 u_asciiToUpper(UChar c);
 
 // TODO: Add u_asciiToLower if/when there is a need for it.
@@ -70,28 +70,28 @@
  * @param pErrorCode ICU error code.
  * @return length
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_terminateUChars(UChar *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode);
 
 /**
  * NUL-terminate a char * string if possible.
  * Same as u_terminateUChars() but for a different string type.
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_terminateChars(char *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode);
 
 /**
  * NUL-terminate a UChar32 * string if possible.
  * Same as u_terminateUChars() but for a different string type.
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_terminateUChar32s(UChar32 *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode);
 
 /**
  * NUL-terminate a wchar_t * string if possible.
  * Same as u_terminateUChars() but for a different string type.
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_terminateWChars(wchar_t *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode);
 
 /**
@@ -133,7 +133,7 @@
      * @param t The i-th byte following the lead byte.
      * @param i The index (1..3) of byte t in the byte sequence. 0<i<length
      * @param length The length (2..4) of the byte sequence according to the lead byte.
-     * @return TRUE if t is a valid trail byte in this context.
+     * @return true if t is a valid trail byte in this context.
      */
     static inline UBool isValidTrail(int32_t prev, uint8_t t, int32_t i, int32_t length) {
         // The first trail byte after a 3- or 4-byte lead byte
diff --git a/icu4c/source/common/ustring.cpp b/icu4c/source/common/ustring.cpp
index de43d22..bba2d45 100644
--- a/icu4c/source/common/ustring.cpp
+++ b/icu4c/source/common/ustring.cpp
@@ -45,7 +45,7 @@
         /* the leading edge of the match is in the middle of a surrogate pair */
         return FALSE;
     }
-    if(U16_IS_LEAD(*(matchLimit-1)) && match!=limit && U16_IS_TRAIL(*matchLimit)) {
+    if(U16_IS_LEAD(*(matchLimit-1)) && matchLimit!=limit && U16_IS_TRAIL(*matchLimit)) {
         /* the trailing edge of the match is in the middle of a surrogate pair */
         return FALSE;
     }
@@ -1294,7 +1294,15 @@
             int32_t ahead = *offset + 1;
             c = charAt(*offset, context);
             if (c == 0x5C /*'\\'*/ && ahead < length) {
-                c = (UChar) u_unescapeAt(charAt, &ahead, length, context);
+                // Calling u_unescapeAt recursively may cause a stack overflow if
+                // we have repeated surrogate lead after that. Limit the
+                // length to 5 ('u' and 4 hex) after ahead.
+                int32_t tailLimit = ahead + 5;
+                if (tailLimit > length) {
+                    tailLimit = length;
+                }
+                c = (UChar) u_unescapeAt(charAt, &ahead, tailLimit,
+                                         context);
             }
             if (U16_IS_TRAIL(c)) {
                 *offset = ahead;
diff --git a/icu4c/source/common/util.h b/icu4c/source/common/util.h
index f3f71dc..9c3b76d 100644
--- a/icu4c/source/common/util.h
+++ b/icu4c/source/common/util.h
@@ -64,8 +64,8 @@
     /**
      * Escape unprintable characters using \uxxxx notation for U+0000 to
      * U+FFFF and \Uxxxxxxxx for U+10000 and above.  If the character is
-     * printable ASCII, then do nothing and return FALSE.  Otherwise,
-     * append the escaped notation and return TRUE.
+     * printable ASCII, then do nothing and return false.  Otherwise,
+     * append the escaped notation and return true.
      */
     static UBool escapeUnprintable(UnicodeString& result, UChar32 c);
 
@@ -95,7 +95,7 @@
      * after pos, or str.length(), if there is none.
      */
     static int32_t skipWhitespace(const UnicodeString& str, int32_t& pos,
-                                  UBool advance = FALSE);
+                                  UBool advance = false);
 
     /**
      * Skip over Pattern_White_Space in a Replaceable.
diff --git a/icu4c/source/common/utrie.h b/icu4c/source/common/utrie.h
index 532ba77..2fd2c46 100644
--- a/icu4c/source/common/utrie.h
+++ b/icu4c/source/common/utrie.h
@@ -460,13 +460,13 @@
  * of code points with the same value as retrieved from the trie and
  * transformed by the UTrieEnumValue function.
  *
- * The callback function can stop the enumeration by returning FALSE.
+ * The callback function can stop the enumeration by returning false.
  *
  * @param context an opaque pointer, as passed into utrie_enum()
  * @param start the first code point in a contiguous range with value
  * @param limit one past the last code point in a contiguous range with value
  * @param value the value that is set for all code points in [start..limit[
- * @return FALSE to stop the enumeration
+ * @return false to stop the enumeration
  */
 typedef UBool U_CALLCONV
 UTrieEnumRange(const void *context, UChar32 start, UChar32 limit, uint32_t value);
@@ -667,7 +667,7 @@
  * @param trie the build-time trie
  * @param c the code point
  * @param value the value
- * @return FALSE if a failure occurred (illegal argument or data array overrun)
+ * @return false if a failure occurred (illegal argument or data array overrun)
  */
 U_CAPI UBool U_EXPORT2
 utrie_set32(UNewTrie *trie, UChar32 c, uint32_t value);
@@ -677,7 +677,7 @@
  *
  * @param trie the build-time trie
  * @param c the code point
- * @param pInBlockZero if not NULL, then *pInBlockZero is set to TRUE
+ * @param pInBlockZero if not NULL, then *pInBlockZero is set to true
  *                     iff the value is retrieved from block 0;
  *                     block 0 is the all-initial-value initial block
  * @return the value
@@ -688,14 +688,14 @@
 /**
  * Set a value in a range of code points [start..limit[.
  * All code points c with start<=c<limit will get the value if
- * overwrite is TRUE or if the old value is 0.
+ * overwrite is true or if the old value is 0.
  *
  * @param trie the build-time trie
  * @param start the first code point to get the value
  * @param limit one past the last code point to get the value
  * @param value the value
  * @param overwrite flag for whether old non-initial values are to be overwritten
- * @return FALSE if a failure occurred (illegal argument or data array overrun)
+ * @return false if a failure occurred (illegal argument or data array overrun)
  */
 U_CAPI UBool U_EXPORT2
 utrie_setRange32(UNewTrie *trie, UChar32 start, UChar32 limit, uint32_t value, UBool overwrite);
diff --git a/icu4c/source/common/utrie2.h b/icu4c/source/common/utrie2.h
index 671f44e..d1e1e15 100644
--- a/icu4c/source/common/utrie2.h
+++ b/icu4c/source/common/utrie2.h
@@ -161,13 +161,13 @@
  * of code points with the same value as retrieved from the trie and
  * transformed by the UTrie2EnumValue function.
  *
- * The callback function can stop the enumeration by returning FALSE.
+ * The callback function can stop the enumeration by returning false.
  *
  * @param context an opaque pointer, as passed into utrie2_enum()
  * @param start the first code point in a contiguous range with value
  * @param end the last code point in a contiguous range with value (inclusive)
  * @param value the value that is set for all code points in [start..end]
- * @return FALSE to stop the enumeration
+ * @return false to stop the enumeration
  */
 typedef UBool U_CALLCONV
 UTrie2EnumRange(const void *context, UChar32 start, UChar32 end, uint32_t value);
@@ -256,7 +256,7 @@
 /**
  * Set a value in a range of code points [start..end].
  * All code points c with start<=c<=end will get the value if
- * overwrite is TRUE or if the old value is the initial value.
+ * overwrite is true or if the old value is the initial value.
  *
  * @param trie the unfrozen trie
  * @param start the first code point to get the value
@@ -298,7 +298,7 @@
  * Test if the trie is frozen. (See utrie2_freeze().)
  *
  * @param trie the trie
- * @return TRUE if the trie is frozen, that is, immutable, ready for serialization
+ * @return true if the trie is frozen, that is, immutable, ready for serialization
  *         and for use with fast macros
  */
 U_CAPI UBool U_EXPORT2
@@ -670,7 +670,7 @@
     /* private: used by builder and unserialization functions */
     void *memory;           /* serialized bytes; NULL if not frozen yet */
     int32_t length;         /* number of serialized bytes at memory; 0 if not frozen yet */
-    UBool isMemoryOwned;    /* TRUE if the trie owns the memory */
+    UBool isMemoryOwned;    /* true if the trie owns the memory */
     UBool padding1;
     int16_t padding2;
     UNewTrie2 *newTrie;     /* builder object; NULL when frozen */
@@ -796,7 +796,7 @@
  * Do not call directly.
  * @internal
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utrie2_internalU8NextIndex(const UTrie2 *trie, UChar32 c,
                            const uint8_t *src, const uint8_t *limit);
 
@@ -805,7 +805,7 @@
  * Do not call directly.
  * @internal
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utrie2_internalU8PrevIndex(const UTrie2 *trie, UChar32 c,
                            const uint8_t *start, const uint8_t *src);
 
diff --git a/icu4c/source/common/utrie_swap.cpp b/icu4c/source/common/utrie_swap.cpp
index 5abe7bd..6e8b138 100644
--- a/icu4c/source/common/utrie_swap.cpp
+++ b/icu4c/source/common/utrie_swap.cpp
@@ -256,20 +256,24 @@
         ds->swapArray32(ds, &inTrie->signature, 4, &outTrie->signature, pErrorCode);
         ds->swapArray16(ds, &inTrie->options, 12, &outTrie->options, pErrorCode);
 
-        /* swap the index and the data */
+        /* swap the index */
+        const uint16_t *inIndex=reinterpret_cast<const uint16_t *>(inTrie+1);
+        uint16_t *outIndex=reinterpret_cast<uint16_t *>(outTrie+1);
+        ds->swapArray16(ds, inIndex, trie.indexLength*2, outIndex, pErrorCode);
+
+        /* swap the data */
+        const uint16_t *inData=inIndex+trie.indexLength;
+        uint16_t *outData=outIndex+trie.indexLength;
         switch(valueWidth) {
         case UCPTRIE_VALUE_BITS_16:
-            ds->swapArray16(ds, inTrie+1, (trie.indexLength+dataLength)*2, outTrie+1, pErrorCode);
+            ds->swapArray16(ds, inData, dataLength*2, outData, pErrorCode);
             break;
         case UCPTRIE_VALUE_BITS_32:
-            ds->swapArray16(ds, inTrie+1, trie.indexLength*2, outTrie+1, pErrorCode);
-            ds->swapArray32(ds, (const uint16_t *)(inTrie+1)+trie.indexLength, dataLength*4,
-                                     (uint16_t *)(outTrie+1)+trie.indexLength, pErrorCode);
+            ds->swapArray32(ds, inData, dataLength*4, outData, pErrorCode);
             break;
         case UCPTRIE_VALUE_BITS_8:
-            ds->swapArray16(ds, inTrie+1, trie.indexLength*2, outTrie+1, pErrorCode);
             if(inTrie!=outTrie) {
-                uprv_memmove((outTrie+1)+trie.indexLength, (inTrie+1)+trie.indexLength, dataLength);
+                uprv_memmove(outData, inData, dataLength);
             }
             break;
         default:
diff --git a/icu4c/source/common/uts46.cpp b/icu4c/source/common/uts46.cpp
index b9e6cb0..f25b4e1 100644
--- a/icu4c/source/common/uts46.cpp
+++ b/icu4c/source/common/uts46.cpp
@@ -714,6 +714,16 @@
     UBool wasPunycode;
     if(labelLength>=4 && label[0]==0x78 && label[1]==0x6e && label[2]==0x2d && label[3]==0x2d) {
         // Label starts with "xn--", try to un-Punycode it.
+        // In IDNA2008, labels like "xn--" (decodes to an empty string) and
+        // "xn--ASCII-" (decodes to just "ASCII") fail the round-trip validation from
+        // comparing the ToUnicode input with the back-to-ToASCII output.
+        // They are alternate encodings of the respective ASCII labels.
+        // Ignore "xn---" here: It will fail Punycode.decode() which logically comes before
+        // the round-trip verification.
+        if(labelLength==4 || (labelLength>5 && label[labelLength-1]==u'-')) {
+            info.labelErrors|=UIDNA_ERROR_INVALID_ACE_LABEL;
+            return markBadACELabel(dest, labelStart, labelLength, toASCII, info, errorCode);
+        }
         wasPunycode=TRUE;
         UChar *unicodeBuffer=fromPunycode.getBuffer(-1);  // capacity==-1: most labels should fit
         if(unicodeBuffer==NULL) {
@@ -925,10 +935,10 @@
     UBool isASCII=TRUE;
     UBool onlyLDH=TRUE;
     const UChar *label=dest.getBuffer()+labelStart;
-    // Ok to cast away const because we own the UnicodeString.
-    UChar *s=(UChar *)label+4;  // After the initial "xn--".
     const UChar *limit=label+labelLength;
-    do {
+    // Start after the initial "xn--".
+    // Ok to cast away const because we own the UnicodeString.
+    for(UChar *s=const_cast<UChar *>(label+4); s<limit; ++s) {
         UChar c=*s;
         if(c<=0x7f) {
             if(c==0x2e) {
@@ -945,7 +955,7 @@
         } else {
             isASCII=onlyLDH=FALSE;
         }
-    } while(++s<limit);
+    }
     if(onlyLDH) {
         dest.insert(labelStart+labelLength, (UChar)0xfffd);
         if(dest.isBogus()) {
diff --git a/icu4c/source/common/utypes.cpp b/icu4c/source/common/utypes.cpp
index 7531e46..63e05b1 100644
--- a/icu4c/source/common/utypes.cpp
+++ b/icu4c/source/common/utypes.cpp
@@ -104,7 +104,8 @@
     "U_INVALID_STATE_ERROR",
     "U_COLLATOR_VERSION_MISMATCH",
     "U_USELESS_COLLATOR_ERROR",
-    "U_NO_WRITE_PERMISSION"
+    "U_NO_WRITE_PERMISSION",
+    "U_INPUT_TOO_LONG_ERROR"
 };
 static const char * const
 _uFmtErrorName[U_FMT_PARSE_ERROR_LIMIT - U_FMT_PARSE_ERROR_START] = {
diff --git a/icu4c/source/common/uvector.h b/icu4c/source/common/uvector.h
index 98318d1..a2bef92 100644
--- a/icu4c/source/common/uvector.h
+++ b/icu4c/source/common/uvector.h
@@ -64,7 +64,7 @@
  * uses a comparison function, or "comparer."  If the comparer is not
  * set, or is set to zero, then all such methods will act as if the
  * vector contains no element.  That is, indexOf() will always return
- * -1, contains() will always return FALSE, etc.
+ * -1, contains() will always return false, etc.
  *
  * <p><b>To do</b>
  *
diff --git a/icu4c/source/common/uvectr32.h b/icu4c/source/common/uvectr32.h
index ba47daa..0d81dfb 100644
--- a/icu4c/source/common/uvectr32.h
+++ b/icu4c/source/common/uvectr32.h
@@ -214,7 +214,7 @@
 
 inline UBool UVector32::ensureCapacity(int32_t minimumCapacity, UErrorCode &status) {
     if ((minimumCapacity >= 0) && (capacity >= minimumCapacity)) {
-        return TRUE;
+        return true;
     } else {
         return expandCapacity(minimumCapacity, status);
     }
@@ -233,7 +233,7 @@
 }
 
 inline int32_t *UVector32::reserveBlock(int32_t size, UErrorCode &status) {
-    if (ensureCapacity(count+size, status) == FALSE) {
+    if (ensureCapacity(count+size, status) == false) {
         return NULL;
     }
     int32_t  *rp = elements+count;
diff --git a/icu4c/source/common/uvectr64.h b/icu4c/source/common/uvectr64.h
index 1cc9a50..15c9b3f 100644
--- a/icu4c/source/common/uvectr64.h
+++ b/icu4c/source/common/uvectr64.h
@@ -203,7 +203,7 @@
 
 inline UBool UVector64::ensureCapacity(int32_t minimumCapacity, UErrorCode &status) {
     if ((minimumCapacity >= 0) && (capacity >= minimumCapacity)) {
-        return TRUE;
+        return true;
     } else {
         return expandCapacity(minimumCapacity, status);
     }
@@ -222,7 +222,7 @@
 }
 
 inline int64_t *UVector64::reserveBlock(int32_t size, UErrorCode &status) {
-    if (ensureCapacity(count+size, status) == FALSE) {
+    if (ensureCapacity(count+size, status) == false) {
         return NULL;
     }
     int64_t  *rp = elements+count;
diff --git a/icu4c/source/common/wintz.cpp b/icu4c/source/common/wintz.cpp
index 115512e..580ceda 100644
--- a/icu4c/source/common/wintz.cpp
+++ b/icu4c/source/common/wintz.cpp
@@ -16,11 +16,12 @@
 #if U_PLATFORM_USES_ONLY_WIN32_API
 
 #include "wintz.h"
+#include "charstr.h"
 #include "cmemory.h"
 #include "cstring.h"
 
 #include "unicode/ures.h"
-#include "unicode/ustring.h"
+#include "unicode/unistr.h"
 #include "uresimp.h"
 
 #ifndef WIN32_LEAN_AND_MEAN
@@ -35,89 +36,279 @@
 
 U_NAMESPACE_BEGIN
 
-// The max size of TimeZoneKeyName is 128, defined in DYNAMIC_TIME_ZONE_INFORMATION
-#define MAX_TIMEZONE_ID_LENGTH 128
+// Note these constants and the struct are only used when dealing with the fallback path for RDP sesssions.
+
+// This is the location of the time zones in the registry on Vista+ systems.
+// See: https://docs.microsoft.com/windows/win32/api/timezoneapi/ns-timezoneapi-dynamic_time_zone_information
+#define WINDOWS_TIMEZONES_REG_KEY_PATH L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones"
+
+// Max length for a registry key is 255. +1 for null.
+// See: https://docs.microsoft.com/windows/win32/sysinfo/registry-element-size-limits
+#define WINDOWS_MAX_REG_KEY_LENGTH 256
+
+#if U_PLATFORM_HAS_WINUWP_API == 0
+
+// This is the layout of the TZI binary value in the registry.
+// See: https://docs.microsoft.com/windows/win32/api/timezoneapi/ns-timezoneapi-time_zone_information
+typedef struct _REG_TZI_FORMAT {
+    LONG Bias;
+    LONG StandardBias;
+    LONG DaylightBias;
+    SYSTEMTIME StandardDate;
+    SYSTEMTIME DaylightDate;
+} REG_TZI_FORMAT;
+
+#endif // U_PLATFORM_HAS_WINUWP_API
 
 /**
-* Main Windows time zone detection function.
-* Returns the Windows time zone converted to an ICU time zone as a heap-allocated buffer, or nullptr upon failure.
-* Note: We use the Win32 API GetDynamicTimeZoneInformation to get the current time zone info.
-* This API returns a non-localized time zone name, which we can then map to an ICU time zone name.
+* This is main Windows time zone detection function.
+* 
+* It returns the Windows time zone converted to an ICU time zone as a heap-allocated buffer, or nullptr upon failure.
+*
+* We use the Win32 API GetDynamicTimeZoneInformation (which is available since Vista) to get the current time zone info,
+* as this API returns a non-localized time zone name which can be then mapped to an ICU time zone.
+* 
+* However, in some RDP/terminal services situations, this struct isn't always fully complete, and the TimeZoneKeyName
+* field of the struct might be NULL. This can happen with some 3rd party RDP clients, and also when using older versions
+* of the RDP protocol, which don't send the newer TimeZoneKeyNamei information and only send the StandardName and DaylightName.
+* 
+* Since these 3rd party clients and older RDP clients only send the pre-Vista time zone information to the server, this means that we 
+* need to fallback on using the pre-Vista methods to determine the time zone. This unfortunately requires examining the registry directly
+* in order to try and determine the current time zone.
+* 
+* Note that this can however still fail in some cases though if the client and server are using different languages, as the StandardName
+* that is sent by client is localized in the client's language. However, we must compare this to the names that are on the server, which
+* are localized in registry using the server's language. Despite that, this is the best we can do.
+* 
+* Note: This fallback method won't work for the UWP version though, as we can't use the registry APIs in UWP.
+* 
+* Once we have the current Windows time zone, then we can then map it to an ICU time zone ID (~ Olsen ID).
 */
-U_INTERNAL const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uprv_detectWindowsTimeZone()
 {
-    UErrorCode status = U_ZERO_ERROR;
-    char* icuid = nullptr;
-    char dynamicTZKeyName[MAX_TIMEZONE_ID_LENGTH];
-    char tmpid[MAX_TIMEZONE_ID_LENGTH];
-    int32_t len;
-    int id = GEOID_NOT_AVAILABLE;
-    int errorCode;
-    wchar_t ISOcodeW[3] = {}; /* 2 letter ISO code in UTF-16 */
-    char ISOcode[3] = {}; /* 2 letter ISO code in UTF-8 */
-
+    // We first try to obtain the time zone directly by using the TimeZoneKeyName field of the DYNAMIC_TIME_ZONE_INFORMATION struct.
     DYNAMIC_TIME_ZONE_INFORMATION dynamicTZI;
     uprv_memset(&dynamicTZI, 0, sizeof(dynamicTZI));
-    uprv_memset(dynamicTZKeyName, 0, sizeof(dynamicTZKeyName));
-    uprv_memset(tmpid, 0, sizeof(tmpid));
+    SYSTEMTIME systemTimeAllZero;
+    uprv_memset(&systemTimeAllZero, 0, sizeof(systemTimeAllZero));
 
-    /* Obtain TIME_ZONE_INFORMATION from the API and get the non-localized time zone name. */
-    if (TIME_ZONE_ID_INVALID == GetDynamicTimeZoneInformation(&dynamicTZI)) {
+    if (GetDynamicTimeZoneInformation(&dynamicTZI) == TIME_ZONE_ID_INVALID) {
         return nullptr;
     }
 
-    id = GetUserGeoID(GEOCLASS_NATION);
-    errorCode = GetGeoInfoW(id, GEO_ISO2, ISOcodeW, 3, 0);
+    // If the DST setting has been turned off in the Control Panel, then return "Etc/GMT<offset>".
+    //
+    // Note: This logic is based on how the Control Panel itself determines if DST is 'off' on Windows.
+    // The code is somewhat convoluted; in a sort of pseudo-code it looks like this:
+    // 
+    //   IF (GetDynamicTimeZoneInformation != TIME_ZONE_ID_INVALID) && (DynamicDaylightTimeDisabled != 0) &&
+    //      (StandardDate == DaylightDate) &&
+    //      (
+    //       (TimeZoneKeyName != Empty && StandardDate == 0) ||
+    //       (TimeZoneKeyName == Empty && StandardDate != 0)
+    //      )
+    //   THEN
+    //     DST setting is "Disabled".
+    //
+    if (dynamicTZI.DynamicDaylightTimeDisabled != 0 &&
+        uprv_memcmp(&dynamicTZI.StandardDate, &dynamicTZI.DaylightDate, sizeof(dynamicTZI.StandardDate)) == 0 &&
+        ((dynamicTZI.TimeZoneKeyName[0] != L'\0' && uprv_memcmp(&dynamicTZI.StandardDate, &systemTimeAllZero, sizeof(systemTimeAllZero)) == 0) ||
+         (dynamicTZI.TimeZoneKeyName[0] == L'\0' && uprv_memcmp(&dynamicTZI.StandardDate, &systemTimeAllZero, sizeof(systemTimeAllZero)) != 0)))
+    {
+        LONG utcOffsetMins = dynamicTZI.Bias;
+        if (utcOffsetMins == 0) {
+            return uprv_strdup("Etc/UTC");
+        }
 
-    // convert from wchar_t* (UTF-16 on Windows) to char* (UTF-8).
-    u_strToUTF8(ISOcode, UPRV_LENGTHOF(ISOcode), nullptr,
-        reinterpret_cast<const UChar*>(ISOcodeW), UPRV_LENGTHOF(ISOcodeW), &status);
-
-    LocalUResourceBundlePointer bundle(ures_openDirect(nullptr, "windowsZones", &status));
-    ures_getByKey(bundle.getAlias(), "mapTimezones", bundle.getAlias(), &status);
-
-    // convert from wchar_t* (UTF-16 on Windows) to char* (UTF-8).
-    u_strToUTF8(dynamicTZKeyName, UPRV_LENGTHOF(dynamicTZKeyName), nullptr,
-        reinterpret_cast<const UChar*>(dynamicTZI.TimeZoneKeyName), -1, &status);
-
-    if (U_FAILURE(status)) {
-        return nullptr;
-    }
-
-    if (dynamicTZI.TimeZoneKeyName[0] != 0) {
-        StackUResourceBundle winTZ;
-        ures_getByKey(bundle.getAlias(), dynamicTZKeyName, winTZ.getAlias(), &status);
-
-        if (U_SUCCESS(status)) {
-            const UChar* icuTZ = nullptr;
-            if (errorCode != 0) {
-                icuTZ = ures_getStringByKey(winTZ.getAlias(), ISOcode, &len, &status);
-            }
-            if (errorCode == 0 || icuTZ == nullptr) {
-                /* fallback to default "001" and reset status */
-                status = U_ZERO_ERROR;
-                icuTZ = ures_getStringByKey(winTZ.getAlias(), "001", &len, &status);
-            }
-
-            if (U_SUCCESS(status)) {
-                int index = 0;
-
-                while (!(*icuTZ == '\0' || *icuTZ == ' ')) {
-                    // time zone IDs only contain ASCII invariant characters.
-                    tmpid[index++] = (char)(*icuTZ++);
-                }
-                tmpid[index] = '\0';
+        // No way to support when DST is turned off and the offset in minutes is not a multiple of 60.
+        if (utcOffsetMins % 60 == 0) {
+            char gmtOffsetTz[11] = {}; // "Etc/GMT+dd" is 11-char long with a terminal null.
+            // Note '-' before 'utcOffsetMin'. The timezone ID's sign convention
+            // is that a timezone ahead of UTC is Etc/GMT-<offset> and a timezone
+            // behind UTC is Etc/GMT+<offset>.
+            int ret = snprintf(gmtOffsetTz, UPRV_LENGTHOF(gmtOffsetTz), "Etc/GMT%+ld", -utcOffsetMins / 60);
+            if (ret > 0 && ret < UPRV_LENGTHOF(gmtOffsetTz)) {
+                return uprv_strdup(gmtOffsetTz);
             }
         }
     }
 
-    // Copy the timezone ID to icuid to be returned.
-    if (tmpid[0] != 0) {
-        icuid = uprv_strdup(tmpid);
+    // If DST is NOT disabled, but the TimeZoneKeyName field of the struct is NULL, then we may be dealing with a
+    // RDP/terminal services session where the 'Time Zone Redirection' feature is enabled. However, either the RDP
+    // client sent the server incomplete info (some 3rd party RDP clients only send the StandardName and  DaylightName,
+    // but do not send the important TimeZoneKeyName), or if the RDP server has not appropriately populated the struct correctly.
+    //
+    // In this case we unfortunately have no choice but to fallback to using the pre-Vista method of determining the
+    // time zone, which requires examining the registry directly.
+    //
+    // Note that this can however still fail though if the client and server are using different languages, as the StandardName
+    // that is sent by client is *localized* in the client's language. However, we must compare this to the names that are
+    // on the server, which are *localized* in registry using the server's language.
+    //
+    // One other note is that this fallback method doesn't work for the UWP version, as we can't use the registry APIs.
+
+    // windowsTimeZoneName will point at timezoneSubKeyName if we had to fallback to using the registry, and we found a match.
+    WCHAR timezoneSubKeyName[WINDOWS_MAX_REG_KEY_LENGTH];
+    WCHAR *windowsTimeZoneName = dynamicTZI.TimeZoneKeyName;
+
+    if (dynamicTZI.TimeZoneKeyName[0] == 0) {
+
+// We can't use the registry APIs in the UWP version.
+#if U_PLATFORM_HAS_WINUWP_API == 1
+        (void)timezoneSubKeyName; // suppress unused variable warnings.
+        return nullptr;
+#else
+        // Open the path to the time zones in the Windows registry.
+        LONG ret;
+        HKEY hKeyAllTimeZones = nullptr;
+        ret = RegOpenKeyExW(HKEY_LOCAL_MACHINE, WINDOWS_TIMEZONES_REG_KEY_PATH, 0, KEY_READ,
+                            reinterpret_cast<PHKEY>(&hKeyAllTimeZones));
+        
+        if (ret != ERROR_SUCCESS) {
+            // If we can't open the key, then we can't do much, so fail.
+            return nullptr;
+        }
+
+        // Read the number of subkeys under the time zone registry path.
+        DWORD numTimeZoneSubKeys;
+        ret = RegQueryInfoKeyW(hKeyAllTimeZones, nullptr, nullptr, nullptr, &numTimeZoneSubKeys,
+                               nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr);
+        
+        if (ret != ERROR_SUCCESS) {
+            RegCloseKey(hKeyAllTimeZones);
+            return nullptr;
+        }
+
+        // Examine each of the subkeys to try and find a match for the localized standard name ("Std").
+        //
+        // Note: The name of the time zone subkey itself is not localized, but the "Std" name is localized. This means
+        // that we could fail to find a match if the RDP client and RDP server are using different languages, but unfortunately
+        // there isn't much we can do about it.
+        HKEY hKeyTimeZoneSubKey = nullptr;
+        ULONG registryValueType;
+        WCHAR registryStandardName[WINDOWS_MAX_REG_KEY_LENGTH];
+
+        for (DWORD i = 0; i < numTimeZoneSubKeys; i++) {
+            // Note: RegEnumKeyExW wants the size of the buffer in characters.
+            DWORD size = UPRV_LENGTHOF(timezoneSubKeyName);
+            ret = RegEnumKeyExW(hKeyAllTimeZones, i, timezoneSubKeyName, &size, nullptr, nullptr, nullptr, nullptr);
+
+            if (ret != ERROR_SUCCESS) {
+                RegCloseKey(hKeyAllTimeZones);
+                return nullptr;
+            }
+            
+            ret = RegOpenKeyExW(hKeyAllTimeZones, timezoneSubKeyName, 0, KEY_READ,
+                                reinterpret_cast<PHKEY>(&hKeyTimeZoneSubKey));
+            
+            if (ret != ERROR_SUCCESS) {
+                RegCloseKey(hKeyAllTimeZones);
+                return nullptr;
+            }
+
+            // Note: RegQueryValueExW wants the size of the buffer in bytes.
+            size = sizeof(registryStandardName);
+            ret = RegQueryValueExW(hKeyTimeZoneSubKey, L"Std", nullptr, &registryValueType,
+                                   reinterpret_cast<LPBYTE>(registryStandardName), &size);
+            
+            if (ret != ERROR_SUCCESS || registryValueType != REG_SZ) {
+                RegCloseKey(hKeyTimeZoneSubKey);
+                RegCloseKey(hKeyAllTimeZones);
+                return nullptr;
+            }
+
+            // Note: wcscmp does an ordinal (byte) comparison.
+            if (wcscmp(reinterpret_cast<WCHAR *>(registryStandardName), dynamicTZI.StandardName) == 0) {
+                // Since we are comparing the *localized* time zone name, it's possible that some languages might use
+                // the same string for more than one time zone. Thus we need to examine the TZI data in the registry to
+                // compare the GMT offset (the bias), and the DST transition dates, to ensure it's the same time zone
+                // as the currently reported one.
+                REG_TZI_FORMAT registryTziValue;
+                uprv_memset(&registryTziValue, 0, sizeof(registryTziValue));
+
+                // Note: RegQueryValueExW wants the size of the buffer in bytes.
+                DWORD timezoneTziValueSize = sizeof(registryTziValue);
+                ret = RegQueryValueExW(hKeyTimeZoneSubKey, L"TZI", nullptr, &registryValueType,
+                                     reinterpret_cast<LPBYTE>(&registryTziValue), &timezoneTziValueSize);
+
+                if (ret == ERROR_SUCCESS) {
+                    if ((dynamicTZI.Bias == registryTziValue.Bias) &&
+                        (memcmp((const void *)&dynamicTZI.StandardDate, (const void *)&registryTziValue.StandardDate, sizeof(SYSTEMTIME)) == 0) &&
+                        (memcmp((const void *)&dynamicTZI.DaylightDate, (const void *)&registryTziValue.DaylightDate, sizeof(SYSTEMTIME)) == 0))
+                    {
+                        // We found a matching time zone.
+                        windowsTimeZoneName = timezoneSubKeyName;
+                        break;
+                    }
+                }
+            }
+            RegCloseKey(hKeyTimeZoneSubKey);
+            hKeyTimeZoneSubKey = nullptr;
+        }
+
+        if (hKeyTimeZoneSubKey != nullptr) {
+            RegCloseKey(hKeyTimeZoneSubKey);
+        }
+        if (hKeyAllTimeZones != nullptr) {
+            RegCloseKey(hKeyAllTimeZones);
+        }
+#endif // U_PLATFORM_HAS_WINUWP_API
     }
 
-    return icuid;
+    CharString winTZ;
+    UErrorCode status = U_ZERO_ERROR;
+    winTZ.appendInvariantChars(UnicodeString(TRUE, windowsTimeZoneName, -1), status);
+
+    // Map Windows Timezone name (non-localized) to ICU timezone ID (~ Olson timezone id).
+    StackUResourceBundle winTZBundle;
+    ures_openDirectFillIn(winTZBundle.getAlias(), nullptr, "windowsZones", &status);
+    ures_getByKey(winTZBundle.getAlias(), "mapTimezones", winTZBundle.getAlias(), &status);
+    ures_getByKey(winTZBundle.getAlias(), winTZ.data(), winTZBundle.getAlias(), &status);
+
+    if (U_FAILURE(status)) {
+        return nullptr;
+    }
+    
+    // Note: Since the ISO 3166 country/region codes are all invariant ASCII chars, we can
+    // directly downcast from wchar_t to do the conversion.
+    // We could call the A version of the GetGeoInfo API, but that would be slightly slower than calling the W API,
+    // as the A version of the API will end up calling MultiByteToWideChar anyways internally.
+    wchar_t regionCodeW[3] = {};
+    char regionCode[3] = {}; // 2 letter ISO 3166 country/region code made entirely of invariant chars.
+    int geoId = GetUserGeoID(GEOCLASS_NATION);
+    int regionCodeLen = GetGeoInfoW(geoId, GEO_ISO2, regionCodeW, UPRV_LENGTHOF(regionCodeW), 0);
+
+    const UChar *icuTZ16 = nullptr;
+    int32_t tzListLen = 0;
+
+    if (regionCodeLen != 0) {
+        for (int i = 0; i < UPRV_LENGTHOF(regionCodeW); i++) {
+            regionCode[i] = static_cast<char>(regionCodeW[i]);
+        }
+        icuTZ16 = ures_getStringByKey(winTZBundle.getAlias(), regionCode, &tzListLen, &status);
+    }
+    if (regionCodeLen == 0 || U_FAILURE(status)) {
+        // fallback to default "001" (world)
+        status = U_ZERO_ERROR;
+        icuTZ16 = ures_getStringByKey(winTZBundle.getAlias(), "001", &tzListLen, &status);
+    }
+
+    // Note: We want the first entry in the string returned by ures_getStringByKey.
+    // However this string can be a space delimited list of timezones:
+    //  Ex: "America/New_York America/Detroit America/Indiana/Petersburg ..."
+    // We need to stop at the first space, so we pass tzLen (instead of tzListLen) to appendInvariantChars below.
+    int32_t tzLen = 0;
+    if (tzListLen > 0) {
+        while (!(icuTZ16[tzLen] == u'\0' || icuTZ16[tzLen] == u' ')) {
+            tzLen++;
+        }
+    }
+
+    // Note: cloneData returns nullptr if the status is a failure, so this
+    // will return nullptr if the above look-up fails.
+    CharString icuTZStr;
+    return icuTZStr.appendInvariantChars(icuTZ16, tzLen, status).cloneData(status);
 }
 
 U_NAMESPACE_END
diff --git a/icu4c/source/common/wintz.h b/icu4c/source/common/wintz.h
index cd8565e..ce9c1e9 100644
--- a/icu4c/source/common/wintz.h
+++ b/icu4c/source/common/wintz.h
@@ -28,7 +28,7 @@
 typedef struct _TIME_ZONE_INFORMATION TIME_ZONE_INFORMATION;
 U_CDECL_END
 
-U_INTERNAL const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uprv_detectWindowsTimeZone();
 
 #endif /* U_PLATFORM_USES_ONLY_WIN32_API  */
diff --git a/icu4c/source/config/icu-config-bottom b/icu4c/source/config/icu-config-bottom
index ddba5b3..b0e55af 100644
--- a/icu4c/source/config/icu-config-bottom
+++ b/icu4c/source/config/icu-config-bottom
@@ -98,7 +98,7 @@
     echo "Copyright (c) 2002-2013, International Business Machines Corporation and others. All Rights Reserved."
     echo
     echo "NOTE: Please consider using the pkg-config (.pc) files instead of icu-config."
-    echo " See: <http://userguide.icu-project.org/howtouseicu#TOC-pkg-config> "
+    echo " See: <https://unicode-org.github.io/icu/userguide/howtouseicu> "
 }
 
 ## Check the sanity of current variables
diff --git a/icu4c/source/configure b/icu4c/source/configure
index fbfa582..d5d57ce 100755
--- a/icu4c/source/configure
+++ b/icu4c/source/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for ICU 67.1.
+# Generated by GNU Autoconf 2.69 for ICU 68.2.
 #
 # Report bugs to <http://icu-project.org/bugs>.
 #
@@ -582,8 +582,8 @@
 # Identity of this package.
 PACKAGE_NAME='ICU'
 PACKAGE_TARNAME='International Components for Unicode'
-PACKAGE_VERSION='67.1'
-PACKAGE_STRING='ICU 67.1'
+PACKAGE_VERSION='68.2'
+PACKAGE_STRING='ICU 68.2'
 PACKAGE_BUGREPORT='http://icu-project.org/bugs'
 PACKAGE_URL='http://icu-project.org'
 
@@ -1364,7 +1364,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures ICU 67.1 to adapt to many kinds of systems.
+\`configure' configures ICU 68.2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1430,7 +1430,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of ICU 67.1:";;
+     short | recursive ) echo "Configuration of ICU 68.2:";;
    esac
   cat <<\_ACEOF
 
@@ -1477,7 +1477,7 @@
         library  shared library (.dll/.so/etc.)
         static   static library (.a/.lib/etc.)
         auto     build shared if possible (default)
-           See http://userguide.icu-project.org/icudata for more info.
+           See https://unicode-org.github.io/icu/userguide/icudata for more info.
   --with-library-suffix=suffix    tag a suffix to the library names default=
 
 Some influential environment variables:
@@ -1568,7 +1568,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-ICU configure 67.1
+ICU configure 68.2
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2314,7 +2314,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by ICU $as_me 67.1, which was
+It was created by ICU $as_me 68.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -7999,7 +7999,7 @@
 
 
 # output the Makefiles
-ac_config_files="$ac_config_files icudefs.mk Makefile data/pkgdataMakefile config/Makefile.inc config/icu.pc config/pkgdataMakefile data/Makefile stubdata/Makefile common/Makefile i18n/Makefile layoutex/Makefile io/Makefile extra/Makefile extra/uconv/Makefile extra/uconv/pkgdataMakefile extra/scrptrun/Makefile tools/Makefile tools/ctestfw/Makefile tools/toolutil/Makefile tools/makeconv/Makefile tools/genrb/Makefile tools/genccode/Makefile tools/gencmn/Makefile tools/gencnval/Makefile tools/gendict/Makefile tools/gentest/Makefile tools/gennorm2/Makefile tools/genbrk/Makefile tools/gensprep/Makefile tools/icuinfo/Makefile tools/icupkg/Makefile tools/icuswap/Makefile tools/pkgdata/Makefile tools/tzcode/Makefile tools/gencfu/Makefile tools/escapesrc/Makefile test/Makefile test/compat/Makefile test/testdata/Makefile test/testdata/pkgdataMakefile test/hdrtst/Makefile test/intltest/Makefile test/cintltst/Makefile test/iotest/Makefile test/letest/Makefile test/perf/Makefile test/perf/collationperf/Makefile test/perf/collperf/Makefile test/perf/collperf2/Makefile test/perf/dicttrieperf/Makefile test/perf/ubrkperf/Makefile test/perf/charperf/Makefile test/perf/convperf/Makefile test/perf/normperf/Makefile test/perf/DateFmtPerf/Makefile test/perf/howExpensiveIs/Makefile test/perf/strsrchperf/Makefile test/perf/unisetperf/Makefile test/perf/usetperf/Makefile test/perf/ustrperf/Makefile test/perf/utfperf/Makefile test/perf/utrie2perf/Makefile test/perf/leperf/Makefile test/fuzzer/Makefile samples/Makefile samples/date/Makefile samples/cal/Makefile samples/layout/Makefile"
+ac_config_files="$ac_config_files icudefs.mk Makefile data/pkgdataMakefile config/Makefile.inc config/icu.pc config/pkgdataMakefile data/Makefile stubdata/Makefile common/Makefile i18n/Makefile layoutex/Makefile io/Makefile extra/Makefile extra/uconv/Makefile extra/uconv/pkgdataMakefile extra/scrptrun/Makefile tools/Makefile tools/ctestfw/Makefile tools/toolutil/Makefile tools/makeconv/Makefile tools/genrb/Makefile tools/genccode/Makefile tools/gencmn/Makefile tools/gencnval/Makefile tools/gendict/Makefile tools/gentest/Makefile tools/gennorm2/Makefile tools/genbrk/Makefile tools/gensprep/Makefile tools/icuinfo/Makefile tools/icupkg/Makefile tools/icuswap/Makefile tools/pkgdata/Makefile tools/tzcode/Makefile tools/gencfu/Makefile tools/escapesrc/Makefile test/Makefile test/compat/Makefile test/testdata/Makefile test/testdata/pkgdataMakefile test/hdrtst/Makefile test/intltest/Makefile test/cintltst/Makefile test/iotest/Makefile test/letest/Makefile test/perf/Makefile test/perf/collationperf/Makefile test/perf/collperf/Makefile test/perf/collperf2/Makefile test/perf/dicttrieperf/Makefile test/perf/ubrkperf/Makefile test/perf/charperf/Makefile test/perf/convperf/Makefile test/perf/localecanperf/Makefile test/perf/normperf/Makefile test/perf/DateFmtPerf/Makefile test/perf/howExpensiveIs/Makefile test/perf/strsrchperf/Makefile test/perf/unisetperf/Makefile test/perf/usetperf/Makefile test/perf/ustrperf/Makefile test/perf/utfperf/Makefile test/perf/utrie2perf/Makefile test/perf/leperf/Makefile test/fuzzer/Makefile samples/Makefile samples/date/Makefile samples/cal/Makefile samples/layout/Makefile"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -8544,7 +8544,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by ICU $as_me 67.1, which was
+This file was extended by ICU $as_me 68.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -8598,7 +8598,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-ICU config.status 67.1
+ICU config.status 68.2
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -8762,6 +8762,7 @@
     "test/perf/ubrkperf/Makefile") CONFIG_FILES="$CONFIG_FILES test/perf/ubrkperf/Makefile" ;;
     "test/perf/charperf/Makefile") CONFIG_FILES="$CONFIG_FILES test/perf/charperf/Makefile" ;;
     "test/perf/convperf/Makefile") CONFIG_FILES="$CONFIG_FILES test/perf/convperf/Makefile" ;;
+    "test/perf/localecanperf/Makefile") CONFIG_FILES="$CONFIG_FILES test/perf/localecanperf/Makefile" ;;
     "test/perf/normperf/Makefile") CONFIG_FILES="$CONFIG_FILES test/perf/normperf/Makefile" ;;
     "test/perf/DateFmtPerf/Makefile") CONFIG_FILES="$CONFIG_FILES test/perf/DateFmtPerf/Makefile" ;;
     "test/perf/howExpensiveIs/Makefile") CONFIG_FILES="$CONFIG_FILES test/perf/howExpensiveIs/Makefile" ;;
diff --git a/icu4c/source/configure.ac b/icu4c/source/configure.ac
index 531dee1..1796ca0 100644
--- a/icu4c/source/configure.ac
+++ b/icu4c/source/configure.ac
@@ -1152,7 +1152,7 @@
         library  shared library (.dll/.so/etc.)
         static   static library (.a/.lib/etc.)
         auto     build shared if possible (default)
-           See http://userguide.icu-project.org/icudata for more info.],
+           See https://unicode-org.github.io/icu/userguide/icudata for more info.],
 	[case "${withval}" in
                 files|archive|library) datapackaging=$withval ;;
 		auto) datapackaging=$withval ;;
diff --git a/icu4c/source/data/BUILDRULES.py b/icu4c/source/data/BUILDRULES.py
index dfb8577..aaa9392 100644
--- a/icu4c/source/data/BUILDRULES.py
+++ b/icu4c/source/data/BUILDRULES.py
@@ -365,7 +365,7 @@
         RepeatedExecutionRequest(
             name = "misc_res",
             category = "misc",
-            dep_targets = [],
+            dep_targets = [DepTarget("cnvalias")], # ICU-21175
             input_files = input_files,
             output_files = output_files,
             tool = IcuTool("genrb"),
diff --git a/icu4c/source/data/Makefile.in b/icu4c/source/data/Makefile.in
index 8f52551..f020bc8 100644
--- a/icu4c/source/data/Makefile.in
+++ b/icu4c/source/data/Makefile.in
@@ -240,7 +240,7 @@
 ifeq ($(ENABLE_SO_VERSION_DATA),1)
 ifeq ($(PKGDATA_MODE),dll)
 SO_VERSION_DATA = $(OUTTMPDIR)/icudata.res
-$(SO_VERSION_DATA) : $(MISCSRCDIR)/icudata.rc
+$(SO_VERSION_DATA) : $(MISCSRCDIR)/icudata.rc | $(TMP_DIR)/dirs.timestamp
 ifeq ($(MSYS_RC_MODE),1)
 	rc.exe -i$(srcdir)/../common -i$(top_builddir)/common -fo$@ $(CPPFLAGS) $<
 else
diff --git a/icu4c/source/data/brkitr/LOCALE_DEPS.json b/icu4c/source/data/brkitr/LOCALE_DEPS.json
index 191040b..32123c8 100644
--- a/icu4c/source/data/brkitr/LOCALE_DEPS.json
+++ b/icu4c/source/data/brkitr/LOCALE_DEPS.json
@@ -1,6 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 
 {
-    "cldrVersion": "37"
+    "cldrVersion": "38.1"
 }
diff --git a/icu4c/source/data/brkitr/de.txt b/icu4c/source/data/brkitr/de.txt
index b2b5779..b69ff4b 100644
--- a/icu4c/source/data/brkitr/de.txt
+++ b/icu4c/source/data/brkitr/de.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de{
-    Version{"37"}
     exceptions{
         SentenceBreak:array{
             "Port.",
diff --git a/icu4c/source/data/brkitr/el.txt b/icu4c/source/data/brkitr/el.txt
index 0b73b0d..3fe9f80 100644
--- a/icu4c/source/data/brkitr/el.txt
+++ b/icu4c/source/data/brkitr/el.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 el{
-    Version{"37"}
     boundaries{
         sentence:process(dependency){"sent_el.brk"}
     }
diff --git a/icu4c/source/data/brkitr/en.txt b/icu4c/source/data/brkitr/en.txt
index abaf03a..5e19636 100644
--- a/icu4c/source/data/brkitr/en.txt
+++ b/icu4c/source/data/brkitr/en.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en{
-    Version{"37"}
     exceptions{
         SentenceBreak:array{
             "L.P.",
diff --git a/icu4c/source/data/brkitr/en_US.txt b/icu4c/source/data/brkitr/en_US.txt
index 0d911e6..3d196d7 100644
--- a/icu4c/source/data/brkitr/en_US.txt
+++ b/icu4c/source/data/brkitr/en_US.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_US{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/brkitr/en_US_POSIX.txt b/icu4c/source/data/brkitr/en_US_POSIX.txt
index 8fc8bd2..e6c43ef 100644
--- a/icu4c/source/data/brkitr/en_US_POSIX.txt
+++ b/icu4c/source/data/brkitr/en_US_POSIX.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_US_POSIX{
-    Version{"37"}
     boundaries{
         word:process(dependency){"word_POSIX.brk"}
     }
diff --git a/icu4c/source/data/brkitr/es.txt b/icu4c/source/data/brkitr/es.txt
index 876fb23..994a6ef 100644
--- a/icu4c/source/data/brkitr/es.txt
+++ b/icu4c/source/data/brkitr/es.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es{
-    Version{"37"}
     exceptions{
         SentenceBreak:array{
             "Rdos.",
diff --git a/icu4c/source/data/brkitr/fr.txt b/icu4c/source/data/brkitr/fr.txt
index 76ec2b2..f29164f 100644
--- a/icu4c/source/data/brkitr/fr.txt
+++ b/icu4c/source/data/brkitr/fr.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr{
-    Version{"37"}
     exceptions{
         SentenceBreak:array{
             "aux.",
diff --git a/icu4c/source/data/brkitr/it.txt b/icu4c/source/data/brkitr/it.txt
index 7324117..1428373 100644
--- a/icu4c/source/data/brkitr/it.txt
+++ b/icu4c/source/data/brkitr/it.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 it{
-    Version{"37"}
     exceptions{
         SentenceBreak:array{
             "N.B.",
diff --git a/icu4c/source/data/brkitr/ja.txt b/icu4c/source/data/brkitr/ja.txt
index 3eb1c9e..1c135aa 100644
--- a/icu4c/source/data/brkitr/ja.txt
+++ b/icu4c/source/data/brkitr/ja.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ja{
-    Version{"37"}
     boundaries{
         line:process(dependency){"line_normal.brk"}
         line_loose:process(dependency){"line_loose_cj.brk"}
diff --git a/icu4c/source/data/brkitr/pt.txt b/icu4c/source/data/brkitr/pt.txt
index a72c013..d6f4d07 100644
--- a/icu4c/source/data/brkitr/pt.txt
+++ b/icu4c/source/data/brkitr/pt.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt{
-    Version{"37"}
     exceptions{
         SentenceBreak:array{
             "psicol.",
diff --git a/icu4c/source/data/brkitr/root.txt b/icu4c/source/data/brkitr/root.txt
index 564541e..c5c8185 100644
--- a/icu4c/source/data/brkitr/root.txt
+++ b/icu4c/source/data/brkitr/root.txt
@@ -1,7 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 root{
-    Version{"37"}
+    Version{"38.1"}
     boundaries{
         grapheme:process(dependency){"char.brk"}
         line:process(dependency){"line.brk"}
diff --git a/icu4c/source/data/brkitr/ru.txt b/icu4c/source/data/brkitr/ru.txt
index d50382d..2a5a96e 100644
--- a/icu4c/source/data/brkitr/ru.txt
+++ b/icu4c/source/data/brkitr/ru.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru{
-    Version{"37"}
     exceptions{
         SentenceBreak:array{
             "\u0440\u0443\u0431.",
diff --git a/icu4c/source/data/brkitr/rules/README.md b/icu4c/source/data/brkitr/rules/README.md
index 6e9955e..31eaed6 100644
--- a/icu4c/source/data/brkitr/rules/README.md
+++ b/icu4c/source/data/brkitr/rules/README.md
@@ -1,6 +1,6 @@
 <!--
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 -->
 
 ## Break Iterator Rule Source Data
diff --git a/icu4c/source/data/brkitr/zh.txt b/icu4c/source/data/brkitr/zh.txt
index 15a66fc..18d3e55 100644
--- a/icu4c/source/data/brkitr/zh.txt
+++ b/icu4c/source/data/brkitr/zh.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh{
-    Version{"37"}
     boundaries{
         line:process(dependency){"line_cj.brk"}
         line_loose:process(dependency){"line_loose_cj.brk"}
diff --git a/icu4c/source/data/brkitr/zh_Hant.txt b/icu4c/source/data/brkitr/zh_Hant.txt
index f6decb1..8e40798 100644
--- a/icu4c/source/data/brkitr/zh_Hant.txt
+++ b/icu4c/source/data/brkitr/zh_Hant.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant{
-    Version{"37"}
     boundaries{
         line:process(dependency){"line_cj.brk"}
         line_loose:process(dependency){"line_loose_cj.brk"}
diff --git a/icu4c/source/data/build.xml b/icu4c/source/data/build.xml
index 9fd17d9..ab6b581 100644
--- a/icu4c/source/data/build.xml
+++ b/icu4c/source/data/build.xml
@@ -56,14 +56,6 @@
         <echo message="cldr.prod.dir (production data): ${cldr.prod.dir}"/>
     </target>
     <target name="setup" depends="init">
-        <taskdef name="cldr-build" classname="org.unicode.cldr.ant.CLDRBuild">
-            <classpath>
-                <pathelement path="${java.class.path}/"/>
-                <pathelement path="${env.CLDR_CLASSES}"/>
-                <pathelement location="${cldrtools.jar}"/>
-                <fileset dir="${cldrtools.dir}/libs" includes="*.jar"/>
-            </classpath>
-        </taskdef>
         <mkdir dir="${env.CLDR_TMP_DIR}"/> <!-- make sure parent dir exists -->
         <condition property="cldrprod.exists">
             <available file="${cldr.prod.dir}" type="dir"/>
@@ -84,393 +76,4 @@
                  could set '-s' / '-d' for explicit source/dest -->
         </java>
     </target>
-
-    <!-- target for generating ICU data -->
-    <target name="all" depends="locales, collation, rbnf, supplementalData, metadata, metaZones, windowsZones, likelySubtags, plurals, pluralRanges, numberingSystems, translit, brkitr, keyTypeData, genderList, dayPeriods" />
-    <!-- parallel target -->
-    <target name="pall" depends="init,setup,proddata">
-        <parallel threadsPerProcessor ="1">
-          <sequential>
-            <ant target='locales' />
-          </sequential>
-          <sequential>
-            <ant target='collation'>
-            </ant>
-          </sequential>
-          <sequential>
-            <ant target='rbnf'>
-            </ant>
-          </sequential>
-          <ant target='supplementalData'>
-          </ant>
-          <sequential>
-            <ant target='brkitr'>
-            </ant>
-          </sequential>
-          <sequential>
-            <ant target='translit'>
-            </ant>
-            <!--<ant target='trnsfiles'></ant> Not ANT-built - see
-            note below. -->
-          </sequential>
-          <sequential>
-          	<ant target='keyTypeData'/>
-          </sequential>
-          <sequential>
-          	<ant target='genderList'/>
-          </sequential>
-          <sequential>
-          	<ant target='dayPeriods'/>
-          </sequential>
-        </parallel>
-     </target>
-
-    <target name="locales" depends="init,setup,proddata" description="builds locale files in ICU text format">
-        <cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" srcFile=".*xml" destFile=".*txt">
-            <!-- launch the tool and generate the data after reading the config file -->
-            <run>
-                <args>
-                    <arg name="--sourcedir"       value="${cldr.prod.dir}/common/main" />
-                    <arg name="--destdir"         value="${env.ICU4C_DIR}/source/data/locales"/>
-                    <arg name="--specialsdir"     value="${env.ICU4C_DIR}/source/data/xml/main"/>
-                    <arg name="--supplementaldir" value="${cldr.prod.dir}/common/supplemental" />
-                    <arg name="--type" value="locales"/>
-                    <arg name="--depgraphfile" value="../../python/icutools/databuilder/locale_dependencies.py"/>
-                </args>
-		<remapper>
-		  <remap sourcePath="/Keys" targetDir="lang" />
-		  <remap sourcePath="/Languages" targetDir="lang" />
-		  <remap sourcePath="/Languages%long" targetDir="lang" />
-		  <remap sourcePath="/Languages%menu" targetDir="lang" />
-		  <remap sourcePath="/Languages%short" targetDir="lang" />
-		  <remap sourcePath="/Languages%secondary" targetDir="lang" />
-		  <remap sourcePath="/Languages%variant" targetDir="lang" />
-		  <remap sourcePath="/Scripts" targetDir="lang" />
-		  <remap sourcePath="/Scripts%secondary" targetDir="lang" />
-		  <remap sourcePath="/Scripts%short" targetDir="lang" />
-		  <remap sourcePath="/Scripts%stand-alone" targetDir="lang" />
-		  <remap sourcePath="/Scripts%variant" targetDir="lang" />
-		  <remap sourcePath="/Types" targetDir="lang" />
-		  <remap sourcePath="/Types%short" targetDir="lang" />
-		  <remap sourcePath="/Variants" targetDir="lang" />
-		  <remap sourcePath="/Variants%secondary" targetDir="lang" />
-		  <remap sourcePath="/characterLabelPattern" targetDir="lang" />
-		  <remap sourcePath="/codePatterns" targetDir="lang" />
-		  <remap sourcePath="/localeDisplayPattern" targetDir="lang" />
-		  <remap sourcePath="/Countries" targetDir="region" />
-		  <remap sourcePath="/Countries%variant" targetDir="region" />
-		  <remap sourcePath="/Countries%short" targetDir="region" />
-		  <remap sourcePath="/Currencies" targetDir="curr" />
-		  <remap sourcePath="/Currencies%formal" targetDir="curr" />
-		  <remap sourcePath="/Currencies%narrow" targetDir="curr" />
-		  <remap sourcePath="/Currencies%variant" targetDir="curr" />
-		  <remap sourcePath="/CurrencyPlurals" targetDir="curr" />
-		  <remap sourcePath="/CurrencyUnitPatterns" targetDir="curr" />
-		  <remap sourcePath="/currencySpacing" targetDir="curr" />
-		  <remap sourcePath="/zoneStrings" targetDir="zone" />
-		  <remap sourcePath="/durationUnits" targetDir="unit" />
-		  <remap sourcePath="/units" targetDir="unit" />
-		  <remap sourcePath="/unitsShort" targetDir="unit" />
-		  <remap sourcePath="/unitsNarrow" targetDir="unit" />
-		</remapper>
-                <!-- http://ant.apache.org/faq.html#xml-entity-include -->
-                &icu-config;
-        		&icu-locale-deprecates;
-            </run>
-        </cldr-build>
-    </target>
-    <target name="collation" depends="init,setup,proddata" description="builds collation files in ICU text format">
-        <cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" srcFile=".*xml" destFile=".*txt">
-            <run>
-                <args>
-                    <arg name="--sourcedir"       value="${cldr.prod.dir}/common/collation" />
-                    <arg name="--destdir"         value="${env.ICU4C_DIR}/source/data/coll"/>
-                    <arg name="--specialsdir"     value="${env.ICU4C_DIR}/source/data/xml/collation"/>
-                    <arg name="--type"            value="collation"/>
-                </args>
-                <!-- http://ant.apache.org/faq.html#xml-entity-include -->
-                &icu-config;
-                &icu-coll-deprecates;
-            </run>
-        </cldr-build>
-    </target>
-    <target name="rbnf" depends="init,setup,proddata" description="builds rbnf files in ICU text format">
-        <cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" srcFile=".*xml" destFile=".*txt">
-            <run>
-                <args>
-                    <arg name="--sourcedir"       value="${cldr.prod.dir}/common/rbnf" />
-                    <arg name="--destdir"         value="${env.ICU4C_DIR}/source/data/rbnf"/>
-                    <arg name="--specialsdir"     value="${env.ICU4C_DIR}/source/data/xml/rbnf"/>
-                    <arg name="--type" value="rbnf" />
-                </args>
-                <!-- http://ant.apache.org/faq.html#xml-entity-include -->
-                &icu-config;
-                &icu-rbnf-deprecates;
-            </run>
-        </cldr-build>
-    </target>
-    <target name="supplementalData" depends="init,setup,proddata" description="builds supplementalData.txt from supplementalData.xml">
-        <cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="supplementalData.txt" noArgs="true">
-            <!-- launch the tool and generate the data after reading the config file -->
-            <run>
-                <args>
-                    <arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
-                    <arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
-                    <arg name="-t" value="supplementalData"/>
-                </args>
-		<remapper>
-		  <remap sourcePath="/CurrencyMap" targetDir="curr" />
-		  <remap sourcePath="/CurrencyMeta" targetDir="curr" />
-		</remapper>
-            </run>
-        </cldr-build>
-    </target>
-    <target name="metadata" depends="init,setup,proddata" description="builds metadata.txt from supplementalMetadata.xml">
-        <cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="metadata.txt" noArgs="true">
-            <!-- launch the tool and generate the data after reading the config file -->
-            <run>
-                <args>
-                    <arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
-                    <arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
-                    <arg name="-t" value="metadata"/>
-                </args>
-            </run>
-        </cldr-build>
-    </target>
-    <target name="metaZones" depends="init,setup,proddata" description="builds metaZones.txt from metaZones.xml">
-        <cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="metaZones.txt" noArgs="true">
-            <!-- launch the tool and generate the data after reading the config file -->
-            <run>
-                <args>
-                    <arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
-                    <arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
-                    <arg name="-t" value="metaZones"/>
-                </args>
-            </run>
-        </cldr-build>
-    </target>
-    <target name="windowsZones" depends="init,setup,proddata" description="builds windowsZones.txt from windowsZones.xml">
-        <cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="windowsZones.txt" noArgs="true">
-            <!-- launch the tool and generate the data after reading the config file -->
-            <run>
-                <args>
-                    <arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
-                    <arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
-                    <arg name="-t" value="windowsZones"/>
-                </args>
-            </run>
-        </cldr-build>
-    </target>
-    <target name="likelySubtags" depends="init,setup,proddata" description="builds likelySubtags.txt from likelySubtags.xml">
-        <cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="likelySubtags.txt" noArgs="true">
-            <!-- launch the tool and generate the data after reading the config file -->
-            <run>
-                <args>
-                    <arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
-                    <arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
-                    <arg name="-t" value="likelySubtags"/>
-                </args>
-            </run>
-        </cldr-build>
-    </target>
-    <target name="plurals" depends="init,setup,proddata" description="builds plurals.txt from plurals.xml">
-        <cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="plurals.txt" noArgs="true">
-            <!-- launch the tool and generate the data after reading the config file -->
-            <run>
-                <args>
-                    <arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
-                    <arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
-                    <arg name="-t" value="plurals"/>
-                </args>
-            </run>
-        </cldr-build>
-    </target>
-    <target name="pluralRanges" depends="init,setup,proddata" description="builds pluralRanges.txt from pluralRanges.xml">
-        <cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="pluralRanges.txt" noArgs="true">
-            <!-- launch the tool and generate the data after reading the config file -->
-            <run>
-                <args>
-                    <arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
-                    <arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
-                    <arg name="-t" value="pluralRanges"/>
-                </args>
-            </run>
-        </cldr-build>
-    </target>
-    <target name="numberingSystems" depends="init,setup,proddata" description="builds numberingSystems.txt from numberingSystems.xml">
-        <cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="numberingSystems.txt" noArgs="true">
-            <!-- launch the tool and generate the data after reading the config file -->
-            <run>
-                <args>
-                    <arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
-                    <arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
-                    <arg name="-t" value="numberingSystems"/>
-                </args>
-            </run>
-        </cldr-build>
-    </target>
-    <target name="genderList" depends="init,setup,proddata" description="builds genderList.txt from genderList.xml">
-        <cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="genderList.txt" noArgs="true">
-            <!-- launch the tool and generate the data after reading the config file -->
-            <run>
-                <args>
-                    <arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
-                    <arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
-                    <arg name="-t" value="genderList"/>
-                </args>
-            </run>
-        </cldr-build>
-    </target>
-    <target name="dayPeriods" depends="init,setup,proddata" description="builds dayPeriods.txt from dayPeriods.xml">
-        <cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="dayPeriods.txt" noArgs="true">
-            <!-- launch the tool and generate the data after reading the config file -->
-            <run>
-                <args>
-                    <arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
-                    <arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
-                    <arg name="-t" value="dayPeriods"/>
-                </args>
-            </run>
-        </cldr-build>
-    </target>
-    <target name="brkitr" depends="init,setup,proddata" description="builds break iterator files in ICU text format">
-        <cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" srcFile=".*xml" destFile=".*txt">
-            <run>
-                <args>
-                    <arg name="--sourcedir"       value="${cldr.prod.dir}/common/segments"/>
-					<arg name="--specialsdir"       value="${env.ICU4C_DIR}/source/data/xml/brkitr"/>
-                    <arg name="--destdir"         value="${env.ICU4C_DIR}/source/data/brkitr"/>
-                    <arg name="--type" value="brkitr" />
-                </args>
-                <!-- The entity include is not required for this target -->
-                <!-- http://ant.apache.org/faq.html#xml-entity-include
-                &icu-config;
-                -->
-            </run>
-        </cldr-build>
-    </target>
-
-    <target name="keyTypeData" depends="init,setup,proddata" description="builds keyTypeData.txt and timezoneTypes.txt from bcp47/*.xml">
-        <cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" noArgs="true">
-            <run>
-                <args>
-                    <arg name="-s" value="${cldr.prod.dir}/common/bcp47" />
-                    <arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
-                    <arg name="-t" value="keyTypeData"/>
-                </args>
-            </run>
-        </cldr-build>
-    </target>
-
-    <target name="translit" depends="init,setup,proddata" description="builds collation files in ICU text format">
-        <cldr-build toolName="org.unicode.cldr.icu.ConvertTransforms" srcFile=".*xml" destFile=".*txt">
-            <run>
-                <args>
-                    <arg name="-m" value="((?!.*(Canadian|Ethiopic|ug-Latin).*).*)" />
-                    <arg name="--sourcedir" value="${cldr.prod.dir}/common/transforms" />
-                    <arg name="--destdir"   value="${env.ICU4C_DIR}/source/data/translit"/>
-                    <arg name="--commentSkip"/>
-                    <arg name="--approvedOnly"/>
-                </args>
-                <!-- http://ant.apache.org/faq.html#xml-entity-include -->
-
-            </run>
-        </cldr-build>
-    </target>
-    <!-- we don't generate en.txt or el.txt - so don't change trnsfiles.mk for now. -->
-<!--   
-     <target name="trnsfiles" depends="init, setup,proddata" description="builds trnsfiles.mk">
-        <cldr-build toolName="org.unicode.cldr.icu.ConvertTransforms" srcFile=".*xml" destFile="trnsfiles.mk" noArgs="true">
-            <run>
-                <args>   [ double hyphen not allowed in comments - transpose -" to fix below ]
-                    <arg name=-"-sourcedir" value="${cldr.prod.dir}/common/transforms" />
-                    <arg name=-"-destdir"   value="${env.ICU4C_DIR}/source/data/translit"/>
-                    <arg name=-"-commentSkip"/>
-                    <arg name=-"-writeIndex"/>
-                </args>
-            </run>
-        </cldr-build>
-    </target> -->
-    <target name="clean" depends="init, setup, cleanprod" description="deletes all txt files and mk files from coll and locales directories">
-        <delete>
-            <fileset id="locales" dir="${env.ICU4C_DIR}/source/data/locales">
-                <include name="*.txt" />
-            </fileset>
-            <fileset id="resfiles" dir="${env.ICU4C_DIR}/source/data/locales">
-                <include name="resfiles.mk" />
-            </fileset>
-            <fileset id="dependencies_py" dir="${env.ICU4C_DIR}/source/python/icutools/databuilder">
-                <include name="locale_dependencies.py" />
-            </fileset>
-            <fileset id="locales_split" dir="${env.ICU4C_DIR}/source/data">
-               <include name="curr/*.txt" /> 
-               <include name="curr/resfiles.mk" /> 
-               <include name="lang/*.txt" /> 
-               <include name="lang/resfiles.mk" /> 
-               <include name="region/*.txt" /> 
-               <include name="region/resfiles.mk" /> 
-               <include name="zone/*.txt" /> 
-               <include name="zone/resfiles.mk" /> 
-               <exclude name="zone/tzdbNames.txt" /> 
-               <include name="unit/*.txt" /> 
-               <include name="unit/resfiles.mk" /> 
-            </fileset>
-            <fileset id="collation" dir="${env.ICU4C_DIR}/source/data/coll">
-                <include name="*.txt" />
-            </fileset>
-            <fileset id="colfiles" dir="${env.ICU4C_DIR}/source/data/coll">
-                <include name="colfiles.mk" />
-            </fileset>
-            <fileset id="translit" dir="${env.ICU4C_DIR}/source/data/translit">
-                <include name="*_*.txt" />
-                <include name="root.txt" />
-            </fileset>
-            <fileset id="brkitr" dir="${env.ICU4C_DIR}/source/data/brkitr">
-                <include name="*.txt"/>
-            </fileset>
-            <fileset id="brkfiles" dir="${env.ICU4C_DIR}/source/data/brkitr">
-                <include name="brkfiles.mk" />
-            </fileset>
-            <fileset id="supplementalData" dir="${env.ICU4C_DIR}/source/data/misc">
-                <include name="supplementalData.txt" />
-            </fileset>
-            <fileset id="rbnf" dir="${env.ICU4C_DIR}/source/data/rbnf">
-                <include name="*.txt" />
-            </fileset>
-            <fileset id="rbnffiles" dir="${env.ICU4C_DIR}/source/data/rbnf">
-                <include name="rbnffiles.mk" />
-            </fileset>
-            <fileset id="metadata" dir="${env.ICU4C_DIR}/source/data/misc">
-                <include name="metadata.txt" />
-            </fileset>
-            <fileset id="metaZones" dir="${env.ICU4C_DIR}/source/data/misc">
-                <include name="metaZones.txt" />
-            </fileset>
-            <fileset id="windowsZones" dir="${env.ICU4C_DIR}/source/data/misc">
-                <include name="windowsZones.txt" />
-            </fileset>
-            <fileset id="likelySubtags" dir="${env.ICU4C_DIR}/source/data/misc">
-                <include name="likelySubtags.txt" />
-            </fileset>
-            <fileset id="plurals" dir="${env.ICU4C_DIR}/source/data/misc">
-                <include name="plurals.txt" />
-            </fileset>
-            <fileset id="pluralRanges" dir="${env.ICU4C_DIR}/source/data/misc">
-                <include name="pluralRanges.txt" />
-            </fileset>
-            <fileset id="numberingSystems" dir="${env.ICU4C_DIR}/source/data/misc">
-                <include name="numberingSystems.txt" />
-            </fileset>
-            <fileset id="keyTypeData" dir="${env.ICU4C_DIR}/source/data/misc">
-                <include name="keyTypeData.txt" />
-                <include name="timezoneTypes.txt" />
-            </fileset>
-            <fileset id="genderList" dir="${env.ICU4C_DIR}/source/data/misc">
-                <include name="genderList.txt" />
-            </fileset>
-            <fileset id="dayPeriods" dir="${env.ICU4C_DIR}/source/data/misc">
-                <include name="dayPeriods.txt" />
-            </fileset>
-        </delete>
-    </target>
 </project>
diff --git a/icu4c/source/data/cldr-icu-readme.txt b/icu4c/source/data/cldr-icu-readme.txt
index 1e8b149..93b9ef3 100644
--- a/icu4c/source/data/cldr-icu-readme.txt
+++ b/icu4c/source/data/cldr-icu-readme.txt
@@ -55,12 +55,9 @@
 #
 # b) CLDR-related variables
 #
-# CLDR_DIR:      For most of the process, this is the path to the to root of
-#                standard CLDR sources, below which are the common and
-#                tools directories. For running LdmlConverter, this needs to be
-#                temporarily reset to the parallel root for the production data,
-#                corresponding to $CLDR_TMP_DIR/production (see description of
-#                CLDR_TMP_DIR below).
+# CLDR_DIR:      This is the path to the to root of standard CLDR sources, below
+#                which are the common and tools directories.
+#
 # CLDR_CLASSES:  Path to the CLDR Tools classes directory. If not set, defaults
 #                to $CLDR_DIR/tools/java/classes
 #
@@ -97,34 +94,6 @@
 #
 #    $TOOLS_ROOT/cldr/cldr-to-icu/build-icu-data.xml
 #
-# The files used in previous versions are the following. These are not used in
-# the ICU-67-and-later process, but for now they should be kept up to date to
-# enable parallel use of the older build process for verification.
-#
-#    $ICU4C_DIR/source/data/icu-config.xml - Update <locales> to add or remove
-#                CLDR locales for inclusion in ICU. Update <paths> to prefer
-#                alt forms for certain paths, or to exclude certain paths; note
-#                that <paths> items can only have draft or alt attributes.
-#
-#                Note that if a language-only locale (e.g. "de") is included in
-#                <locales>, then all region sublocales for that language that
-#                are present in CLDR data (e.g. "de_AT", "de_BE", "de_CH", etc.)
-#                should also be included in <locales>, per PMC policy decision
-#                2012-05-02 (see http://bugs.icu-project.org/trac/ticket/9298).
-#
-#    $ICU4C_DIR/source/data/build.xml - If you are adding or removing break
-#                iterators, you need to update  <fileset id="brkitr" ...> under
-#                <target name="clean" ...> to clean the correct set of files.
-#
-#                If there are new CLDR resource bundle types, you may need to
-#                updated the <remapper> sections to put these in the correct
-#                data subfolder for ICU.
-#
-#    $ICU4C_DIR/source/data/xml/      - If you are adding a new locale, break
-#                iterator, collation tailoring, or rule-based number formatter,
-#                you may need to add a corresponding xml file in (respectively)
-#                the main/, brkitr/, collation/, or rbnf/ subdirectory here.
-#
 #----
 #
 # For an official CLDR data integration into ICU, there are some additional
@@ -153,7 +122,7 @@
 # 1a. Java and ant variables, adjust for your system
 
 export JAVA_HOME=`/usr/libexec/java_home`
-export ANT_OPTS="-Xmx4096m
+export ANT_OPTS="-Xmx4096m"
 
 # 1b. CLDR variables, adjust for your setup; with cygwin it might be e.g.
 # CLDR_DIR=`cygpath -wp /build/cldr`
@@ -166,39 +135,13 @@
 export ICU4J_ROOT=$HOME/icu-myfork/icu4j
 export TOOLS_ROOT=$HOME/icu-myfork/tools
 
+# 2. Build and install the CLDR jar
 
-# 2. Build the CLDR Java tools and jar
+cd $TOOLS_ROOT/cldr
+ant install-cldr-libs
 
-cd $CLDR_DIR/tools/java
-ant clean
-ant all
-ant jar
-
-# 2a. Copy the CLDR jars into $TOOLS_ROOT/cldr/cldr-to-icu/lib/ maven repository;
-# see $TOOLS_ROOT/cldr/cldr-to-icu/lib/README.txt
-
-cd $TOOLS_ROOT/cldr/cldr-to-icu/lib/
-mvn install:install-file \
-  -DgroupId=org.unicode.cldr \
-  -DartifactId=cldr-api \
-  -Dversion=0.1-SNAPSHOT \
-  -Dpackaging=jar \
-  -DgeneratePom=true \
-  -DlocalRepositoryPath=. \
-  -Dfile=$CLDR_DIR/tools/java/cldr.jar
-
-cd $TOOLS_ROOT/cldr/cldr-to-icu/lib/
-mvn install:install-file \
-  -DgroupId=com.ibm.icu \
-  -DartifactId=icu-utilities \
-  -Dversion=0.1-SNAPSHOT \
-  -Dpackaging=jar \
-  -DgeneratePom=true \
-  -DlocalRepositoryPath=. \
-  -Dfile=$CLDR_DIR/tools/java/libs/utilities.jar
-
-cd $TOOLS_ROOT/cldr/cldr-to-icu/
-mvn dependency:purge-local-repository -DsnapshotsOnly=true
+See the $TOOLS_ROOT/cldr/lib/README.txt file for more information on the CLDR
+jar and the install-cldr-jars.sh script.
 
 # 3. Configure ICU4C, build and test without new data first, to verify that
 # there are no pre-existing errors. Here <platform> is the runConfigureICU
@@ -232,18 +175,28 @@
 # output (so do not assume nothing is happening). Keep a log so you can investigate
 # anything that looks suspicious.
 #
-# This also requires temporarily redefining CLDR_DIR.
-#
 # Note that "ant clean" should not be run before this. The build-icu-data.xml process
 # will automatically run its own "clean" step to delete files it cannot determine to
 # be ones that it would generate, except for pasts listed in <retain> elements such as
 # coll/de__PHONEBOOK.txt, coll/de_.txt, etc.
 #
-# Before this step, make any necessary changes to
-# build-icu-data.xml$TOOLS_ROOT/cldr/cldr-to-icu/ to add new locales, etc.
+# Before running Ant to regenerate the data, make any necessary changes to the
+# build-icu-data.xml file, such as adding new locales etc.
 
-cd $TOOLS_ROOT/cldr/cldr-to-icu/
-CLDR_DIR=$CLDR_TMP_DIR/production ant -f build-icu-data.xml | tee /tmp/cldr-newData-builddataLog.txt
+cd $TOOLS_ROOT/cldr/cldr-to-icu
+ant -f build-icu-data.xml -DcldrDataDir="$CLDR_TMP_DIR/production" | tee /tmp/cldr-newData-builddataLog.txt
+
+# 4c. Update the CLDR testData files needed by ICU4C and ICU4J tests, ensuring
+# they're representative of the newest CLDR data.
+
+cd $TOOLS_ROOT/cldr
+ant copy-cldr-testdata
+
+# 4d. Copy from CLDR common/testData/localeIdentifiers/localeCanonicalization.txt
+# into icu4c/source/test/testdata/localeCanonicalization.txt
+# and icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode/localeCanonicalization.txt
+# and add the following line to the begginning of these two files
+# # File copied from cldr common/testData/localeIdentifiers/localeCanonicalization.txt
 
 # 5. Check which data files have modifications, which have been added or removed
 # (if there are no changes, you may not need to proceed further). Make sure the
@@ -285,9 +238,11 @@
 # may fail.
 # Repeat steps 4-7 until there are no errors.
 
-# 9. You can also run the make check tests in exhaustive mode (these will also
-# be run automatically on the master branch after the merge resulting from this
-# integration):
+# 9. You can also run the make check tests in exhaustive mode. As an alternative
+# you can run them as part of the pre-merge tests by adding the following as a
+# comment in the pull request: "/azp run CI-Exhaustive". You should do one or the
+# other; the exhaustive tests are *not* run automatically on each pull request,
+# and are only run occasionally on the default branch.
 
 cd $ICU4C_DIR/source
 export INTLTEST_OPTS="-e"
@@ -302,7 +257,6 @@
 # as a base for comparison):
 
 cd $ICU4J_ROOT
-ant all 2>&1 | tee /tmp/icu4j-oldData-antAll.txt
 ant check 2>&1 | tee /tmp/icu4j-oldData-antCheck.txt
 
 # 12. Transfer the data to ICU4J:
diff --git a/icu4c/source/data/coll/LOCALE_DEPS.json b/icu4c/source/data/coll/LOCALE_DEPS.json
index 7bc635b..0eae52d 100644
--- a/icu4c/source/data/coll/LOCALE_DEPS.json
+++ b/icu4c/source/data/coll/LOCALE_DEPS.json
@@ -1,8 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 
 {
-    "cldrVersion": "37",
+    "cldrVersion": "38.1",
     "aliases": {
         "ars": "ar_SA",
         "in": "id",
diff --git a/icu4c/source/data/coll/af.txt b/icu4c/source/data/coll/af.txt
index 585150c..1b079b6 100644
--- a/icu4c/source/data/coll/af.txt
+++ b/icu4c/source/data/coll/af.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 af{
-    Version{"37"}
     collations{
         standard{
             Sequence{"&N<<<ʼn"}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/am.txt b/icu4c/source/data/coll/am.txt
index c1bb20d..345df9e 100644
--- a/icu4c/source/data/coll/am.txt
+++ b/icu4c/source/data/coll/am.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 am{
-    Version{"37"}
     collations{
         standard{
             Sequence{"[reorder Ethi]"}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/ar.txt b/icu4c/source/data/coll/ar.txt
index bf74124..9332232 100644
--- a/icu4c/source/data/coll/ar.txt
+++ b/icu4c/source/data/coll/ar.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar{
-    Version{"37"}
     collations{
         compat{
             Sequence{
@@ -9,7 +9,7 @@
                 "&ت<<ة<<<ﺔ<<<ﺓ"
                 "&ي<<ى<<<ﯨ<<<ﯩ<<<ﻰ<<<ﻯ<<<ﲐ<<<ﱝ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -397,7 +397,7 @@
                 "‎&ۓ‎=ﮰ‎=ﮱ"
                 "‎&ۀ‎=ﮤ‎=ﮥ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/ar_SA.txt b/icu4c/source/data/coll/ar_SA.txt
index d65944b..a848e8b 100644
--- a/icu4c/source/data/coll/ar_SA.txt
+++ b/icu4c/source/data/coll/ar_SA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/coll/ars.txt b/icu4c/source/data/coll/ars.txt
index 1f49ca1..92183f5 100644
--- a/icu4c/source/data/coll/ars.txt
+++ b/icu4c/source/data/coll/ars.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ars{
     "%%ALIAS"{"ar_SA"}
 }
diff --git a/icu4c/source/data/coll/as.txt b/icu4c/source/data/coll/as.txt
index 7b63856..771fa0b 100644
--- a/icu4c/source/data/coll/as.txt
+++ b/icu4c/source/data/coll/as.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 as{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -11,7 +11,7 @@
                 "&[before 1]ত<ৎ=ত্\u200D"
                 "&হ<ক্ষ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/az.txt b/icu4c/source/data/coll/az.txt
index b662b8d..d423609 100644
--- a/icu4c/source/data/coll/az.txt
+++ b/icu4c/source/data/coll/az.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az{
-    Version{"37"}
     collations{
         search{
             Sequence{
@@ -9,7 +9,7 @@
                 "[import az-u-co-standard]"
                 "[reorder others]"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -26,7 +26,7 @@
                 "&H<x<<<X"
                 "&Z<w<<<W"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/be.txt b/icu4c/source/data/coll/be.txt
index 8b123ac..78939be 100644
--- a/icu4c/source/data/coll/be.txt
+++ b/icu4c/source/data/coll/be.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 be{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -9,7 +9,7 @@
                 "&Е<ё<<<Ё"
                 "&у<ў<<<Ў"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/bg.txt b/icu4c/source/data/coll/bg.txt
index 7f8b36d..e026974 100644
--- a/icu4c/source/data/coll/bg.txt
+++ b/icu4c/source/data/coll/bg.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bg{
-    Version{"37"}
     collations{
         standard{
             Sequence{"[reorder Cyrl]"}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/bn.txt b/icu4c/source/data/coll/bn.txt
index 2fe1eb0..2d0e217 100644
--- a/icu4c/source/data/coll/bn.txt
+++ b/icu4c/source/data/coll/bn.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bn{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -9,7 +9,7 @@
                 "[reorder Beng Deva Guru Gujr Orya Taml Telu Knda Mlym Sinh]"
                 "&ঔ<ং<ঃ<ঁ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         traditional{
             Sequence{
@@ -629,7 +629,7 @@
                 "&যৌ<<<য়ৌ"
                 "&য্<<<য়্"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/bo.txt b/icu4c/source/data/coll/bo.txt
index c1d22ea..4aa84f4 100644
--- a/icu4c/source/data/coll/bo.txt
+++ b/icu4c/source/data/coll/bo.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bo{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/br.txt b/icu4c/source/data/coll/br.txt
new file mode 100644
index 0000000..4459455
--- /dev/null
+++ b/icu4c/source/data/coll/br.txt
@@ -0,0 +1,11 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+br{
+    collations{
+        standard{
+            Sequence{"&C<ch<<<Ch<<<CH<c''h=c\u2019h<<<C''h=C\u2019h<<<C''H=C\u2019H"}
+            Version{"38.1"}
+        }
+    }
+}
diff --git a/icu4c/source/data/coll/bs.txt b/icu4c/source/data/coll/bs.txt
index 71a2d41..5635471 100644
--- a/icu4c/source/data/coll/bs.txt
+++ b/icu4c/source/data/coll/bs.txt
@@ -1,15 +1,15 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs{
-    Version{"37"}
     collations{
         search{
             Sequence{"[import hr-u-co-search]"}
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{"[import hr]"}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/bs_Cyrl.txt b/icu4c/source/data/coll/bs_Cyrl.txt
index 1516c86..c7d7852 100644
--- a/icu4c/source/data/coll/bs_Cyrl.txt
+++ b/icu4c/source/data/coll/bs_Cyrl.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_Cyrl{
-    Version{"37"}
     collations{
         standard{
             Sequence{"[import sr]"}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/ca.txt b/icu4c/source/data/coll/ca.txt
index a54ff65..a6bcc09 100644
--- a/icu4c/source/data/coll/ca.txt
+++ b/icu4c/source/data/coll/ca.txt
@@ -1,14 +1,14 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ca{
-    Version{"37"}
     collations{
         search{
             Sequence{
                 "[import und-u-co-search]"
                 "&L<ŀ=l·<<<Ŀ=L·"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/ceb.txt b/icu4c/source/data/coll/ceb.txt
index fe90e68..b1fe7c6 100644
--- a/icu4c/source/data/coll/ceb.txt
+++ b/icu4c/source/data/coll/ceb.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ceb{
-    Version{"37"}
     collations{
         standard{
             Sequence{"&N<ñ<<<Ñ<ng<<<Ng<<<NG"}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/chr.txt b/icu4c/source/data/coll/chr.txt
index 1d93dc7..26ef343 100644
--- a/icu4c/source/data/coll/chr.txt
+++ b/icu4c/source/data/coll/chr.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 chr{
-    Version{"37"}
     collations{
         standard{
             Sequence{"[reorder Cher]"}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/cs.txt b/icu4c/source/data/coll/cs.txt
index 0a5297f..99ab23d 100644
--- a/icu4c/source/data/coll/cs.txt
+++ b/icu4c/source/data/coll/cs.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cs{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -11,7 +11,7 @@
                 "&S<š<<<Š"
                 "&Z<ž<<<Ž"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/cy.txt b/icu4c/source/data/coll/cy.txt
index 318338a..92604ef 100644
--- a/icu4c/source/data/coll/cy.txt
+++ b/icu4c/source/data/coll/cy.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cy{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -14,7 +14,7 @@
                 "&R<rh<<<Rh<<<RH"
                 "&T<th<<<Th<<<TH"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/da.txt b/icu4c/source/data/coll/da.txt
index d09656f..6d54b96 100644
--- a/icu4c/source/data/coll/da.txt
+++ b/icu4c/source/data/coll/da.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 da{
-    Version{"37"}
     collations{
         search{
             Sequence{
@@ -9,7 +9,7 @@
                 "[import da-u-co-standard]"
                 "[caseFirst off]"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -21,7 +21,7 @@
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<å<<<Å<<<aa<<<Aa<<<AA"
                 "&oe<<œ<<<Œ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/de.txt b/icu4c/source/data/coll/de.txt
index 5ac9bc4..6ac7ada 100644
--- a/icu4c/source/data/coll/de.txt
+++ b/icu4c/source/data/coll/de.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de{
-    Version{"37"}
     collations{
         phonebook{
             Sequence{
@@ -9,14 +9,14 @@
                 "&OE<<ö<<<Ö"
                 "&UE<<ü<<<Ü"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         search{
             Sequence{
                 "[import und-u-co-search]"
                 "[import de-u-co-phonebk]"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/de_AT.txt b/icu4c/source/data/coll/de_AT.txt
index 2e1cd85..7d337df 100644
--- a/icu4c/source/data/coll/de_AT.txt
+++ b/icu4c/source/data/coll/de_AT.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de_AT{
-    Version{"37"}
     collations{
         phonebook{
             Sequence{
@@ -10,7 +10,7 @@
                 "&u<ü<<<Ü"
                 "&ss<ß<<<ẞ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/dsb.txt b/icu4c/source/data/coll/dsb.txt
index 7224568..c015408 100644
--- a/icu4c/source/data/coll/dsb.txt
+++ b/icu4c/source/data/coll/dsb.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dsb{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -14,7 +14,7 @@
                 "&S<š<<<Š<ś<<<Ś"
                 "&Z<ž<<<Ž<ź<<<Ź"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/dz.txt b/icu4c/source/data/coll/dz.txt
index fec5777..abd83d7 100644
--- a/icu4c/source/data/coll/dz.txt
+++ b/icu4c/source/data/coll/dz.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dz{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/ee.txt b/icu4c/source/data/coll/ee.txt
index 924cd89..16ece1c 100644
--- a/icu4c/source/data/coll/ee.txt
+++ b/icu4c/source/data/coll/ee.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ee{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -17,7 +17,7 @@
                 "&T<ts<<<Ts<<<TS"
                 "&V<ʋ<<<Ʋ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/el.txt b/icu4c/source/data/coll/el.txt
index 673b8a6..dc73e7a 100644
--- a/icu4c/source/data/coll/el.txt
+++ b/icu4c/source/data/coll/el.txt
@@ -1,14 +1,14 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 el{
-    Version{"37"}
     collations{
         standard{
             Sequence{
                 "[normalization on]"
                 "[reorder Grek]"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/en.txt b/icu4c/source/data/coll/en.txt
index cc4e969..ae315f9 100644
--- a/icu4c/source/data/coll/en.txt
+++ b/icu4c/source/data/coll/en.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/en_US.txt b/icu4c/source/data/coll/en_US.txt
index 0d911e6..3d196d7 100644
--- a/icu4c/source/data/coll/en_US.txt
+++ b/icu4c/source/data/coll/en_US.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_US{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/en_US_POSIX.txt b/icu4c/source/data/coll/en_US_POSIX.txt
index 36dfa2b..f15f35c 100644
--- a/icu4c/source/data/coll/en_US_POSIX.txt
+++ b/icu4c/source/data/coll/en_US_POSIX.txt
@@ -1,14 +1,14 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_US_POSIX{
-    Version{"37"}
     collations{
         standard{
             Sequence{
                 "&A<*'\u0020'-'/'<*0-'@'<*ABCDEFGHIJKLMNOPQRSTUVWXYZ<*'['-'`'<*abcdefghijklmnopqrstuvwxyz"
                 "<*'{'-'\u007F'"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/eo.txt b/icu4c/source/data/coll/eo.txt
index 7395fe0..a63f18d 100644
--- a/icu4c/source/data/coll/eo.txt
+++ b/icu4c/source/data/coll/eo.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 eo{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -12,7 +12,7 @@
                 "&S<ŝ<<<Ŝ"
                 "&U<ŭ<<<Ŭ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/es.txt b/icu4c/source/data/coll/es.txt
index 7d2d721..0a1c713 100644
--- a/icu4c/source/data/coll/es.txt
+++ b/icu4c/source/data/coll/es.txt
@@ -1,18 +1,18 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es{
-    Version{"37"}
     collations{
         search{
             Sequence{
                 "[import und-u-co-search]"
                 "&N<ñ<<<Ñ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{"&N<ñ<<<Ñ"}
-            Version{"37"}
+            Version{"38.1"}
         }
         traditional{
             Sequence{
@@ -20,7 +20,7 @@
                 "&C<ch<<<Ch<<<CH"
                 "&l<ll<<<Ll<<<LL"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/et.txt b/icu4c/source/data/coll/et.txt
index d135037..dc72cd3 100644
--- a/icu4c/source/data/coll/et.txt
+++ b/icu4c/source/data/coll/et.txt
@@ -1,14 +1,14 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 et{
-    Version{"37"}
     collations{
         standard{
             Sequence{
                 "&[before 1]T<š<<<Š<z<<<Z<ž<<<Ž"
                 "&[before 1]X<õ<<<Õ<ä<<<Ä<ö<<<Ö<ü<<<Ü"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/fa.txt b/icu4c/source/data/coll/fa.txt
index 13f613e..596e848 100644
--- a/icu4c/source/data/coll/fa.txt
+++ b/icu4c/source/data/coll/fa.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fa{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -16,7 +16,7 @@
                 "&ۏ<ه<<ە<<ہ<<ة<<ۃ<<ۀ<<ھ"
                 "&ی<<*ىےيېۑۍێ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/fa_AF.txt b/icu4c/source/data/coll/fa_AF.txt
index e48edbf..c95dffd 100644
--- a/icu4c/source/data/coll/fa_AF.txt
+++ b/icu4c/source/data/coll/fa_AF.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fa_AF{
-    Version{"37"}
     collations{
         standard{
             Sequence{"[import ps]"}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/ff.txt b/icu4c/source/data/coll/ff.txt
index b51bbce..91de862 100644
--- a/icu4c/source/data/coll/ff.txt
+++ b/icu4c/source/data/coll/ff.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/ff_Adlm.txt b/icu4c/source/data/coll/ff_Adlm.txt
index 562b137..d2e63cb 100644
--- a/icu4c/source/data/coll/ff_Adlm.txt
+++ b/icu4c/source/data/coll/ff_Adlm.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm{
     %%Parent{"root"}
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -143,7 +143,7 @@
                 "&𞤵<𞤵𞥅"
                 "&𞤵𞥅<<𞤵𞤵"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/fi.txt b/icu4c/source/data/coll/fi.txt
index 85f378f..fd711cc 100644
--- a/icu4c/source/data/coll/fi.txt
+++ b/icu4c/source/data/coll/fi.txt
@@ -1,14 +1,14 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fi{
-    Version{"37"}
     collations{
         search{
             Sequence{
                 "[import und-u-co-search]"
                 "[import fi-u-co-trad]"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -20,7 +20,7 @@
                 "&Z\u0335<<ʒ<<<Ʒ"
                 "&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<ö<<<Ö<<ø<<<Ø"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         traditional{
             Sequence{
@@ -31,7 +31,7 @@
                 "&Y<<ü<<<Ü<<ű<<<Ű"
                 "&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<ö<<<Ö<<ø<<<Ø<<ő<<<Ő<<õ<<<Õ<<œ<<<Œ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/fil.txt b/icu4c/source/data/coll/fil.txt
index 281050c..137d310 100644
--- a/icu4c/source/data/coll/fil.txt
+++ b/icu4c/source/data/coll/fil.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fil{
-    Version{"37"}
     collations{
         standard{
             Sequence{"&N<ñ<<<Ñ<ng<<<Ng<<<NG"}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/fo.txt b/icu4c/source/data/coll/fo.txt
index 8e837a3..b24f9c2 100644
--- a/icu4c/source/data/coll/fo.txt
+++ b/icu4c/source/data/coll/fo.txt
@@ -1,14 +1,14 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fo{
-    Version{"37"}
     collations{
         search{
             Sequence{
                 "[import und-u-co-search]"
                 "[import fo-u-co-standard]"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -18,7 +18,7 @@
                 "&Y<<ü<<<Ü<<ű<<<Ű"
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<<ę<<<Ę<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<<œ<<<Œ<å<<<Å<<<aa<<<Aa<<<AA"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/fr.txt b/icu4c/source/data/coll/fr.txt
index e701850..6e4ace1 100644
--- a/icu4c/source/data/coll/fr.txt
+++ b/icu4c/source/data/coll/fr.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/fr_CA.txt b/icu4c/source/data/coll/fr_CA.txt
index b7fd29a..9cc4683 100644
--- a/icu4c/source/data/coll/fr_CA.txt
+++ b/icu4c/source/data/coll/fr_CA.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_CA{
-    Version{"37"}
     collations{
         standard{
             Sequence{"[backwards 2]"}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/ga.txt b/icu4c/source/data/coll/ga.txt
index 04bd489..d1663c4 100644
--- a/icu4c/source/data/coll/ga.txt
+++ b/icu4c/source/data/coll/ga.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ga{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/gl.txt b/icu4c/source/data/coll/gl.txt
index 0883454..2f29508 100644
--- a/icu4c/source/data/coll/gl.txt
+++ b/icu4c/source/data/coll/gl.txt
@@ -1,15 +1,15 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gl{
-    Version{"37"}
     collations{
         search{
             Sequence{"[import es-u-co-search]"}
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{"[import es]"}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/gu.txt b/icu4c/source/data/coll/gu.txt
index 696bf5f..b3789ab 100644
--- a/icu4c/source/data/coll/gu.txt
+++ b/icu4c/source/data/coll/gu.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gu{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -9,7 +9,7 @@
                 "[reorder Gujr Deva Beng Guru Orya Taml Telu Knda Mlym Sinh]"
                 "&ૐ<ં<<ઁ<ઃ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/ha.txt b/icu4c/source/data/coll/ha.txt
index 4891fb8..888967f 100644
--- a/icu4c/source/data/coll/ha.txt
+++ b/icu4c/source/data/coll/ha.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ha{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -12,7 +12,7 @@
                 "&T<ts<<<Ts<<<TS"
                 "&Y<ƴ<<<ʼy<<<''y<<<Ƴ<<<ʼY<<<''Y"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/haw.txt b/icu4c/source/data/coll/haw.txt
index d2cfa87..0e65a4c 100644
--- a/icu4c/source/data/coll/haw.txt
+++ b/icu4c/source/data/coll/haw.txt
@@ -1,14 +1,14 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 haw{
-    Version{"37"}
     collations{
         standard{
             Sequence{
                 "&a<e<<<E<i<<<I<o<<<O<u<<<U"
                 "&w<ʻ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/he.txt b/icu4c/source/data/coll/he.txt
index bf6b974..1b15fe8 100644
--- a/icu4c/source/data/coll/he.txt
+++ b/icu4c/source/data/coll/he.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 he{
-    Version{"37"}
     collations{
         search{
             Sequence{
@@ -11,7 +11,7 @@
                 "‎&״"
                 "<<'\u0022'"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -20,7 +20,7 @@
                 "&[before 2]''<<׳"
                 "&[before 2]'\u0022'<<״"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/he_IL.txt b/icu4c/source/data/coll/he_IL.txt
index 7103953..21ee915 100644
--- a/icu4c/source/data/coll/he_IL.txt
+++ b/icu4c/source/data/coll/he_IL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/coll/hi.txt b/icu4c/source/data/coll/hi.txt
index ca0cf1e..7fd501b 100644
--- a/icu4c/source/data/coll/hi.txt
+++ b/icu4c/source/data/coll/hi.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hi{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -9,7 +9,7 @@
                 "[reorder Deva Beng Guru Gujr Orya Taml Telu Knda Mlym Sinh]"
                 "&ॐ<ं<<ँ<ः"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/hr.txt b/icu4c/source/data/coll/hr.txt
index 01b1fe1..a1e1019 100644
--- a/icu4c/source/data/coll/hr.txt
+++ b/icu4c/source/data/coll/hr.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hr{
-    Version{"37"}
     collations{
         search{
             Sequence{
@@ -9,7 +9,7 @@
                 "[import hr-u-co-standard]"
                 "[reorder others]"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -21,7 +21,7 @@
                 "&S<š<<<Š"
                 "&Z<ž<<<Ž"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/hsb.txt b/icu4c/source/data/coll/hsb.txt
index b73702a..6e2ff66 100644
--- a/icu4c/source/data/coll/hsb.txt
+++ b/icu4c/source/data/coll/hsb.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hsb{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -13,7 +13,7 @@
                 "&S<š<<<Š"
                 "&Z<ž<<<Ž<ź<<<Ź"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/hu.txt b/icu4c/source/data/coll/hu.txt
index d70ca36..9736834 100644
--- a/icu4c/source/data/coll/hu.txt
+++ b/icu4c/source/data/coll/hu.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hu{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -44,7 +44,7 @@
                 "&Zs<<<Zzs/zs"
                 "&ZS<<<ZZS/ZS"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/hy.txt b/icu4c/source/data/coll/hy.txt
index 5890e49..f64db15 100644
--- a/icu4c/source/data/coll/hy.txt
+++ b/icu4c/source/data/coll/hy.txt
@@ -1,14 +1,14 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hy{
-    Version{"37"}
     collations{
         standard{
             Sequence{
                 "[reorder Armn]"
                 "&ք<և<<<Եւ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/id.txt b/icu4c/source/data/coll/id.txt
index ff5d5c6..d33891d 100644
--- a/icu4c/source/data/coll/id.txt
+++ b/icu4c/source/data/coll/id.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 id{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/id_ID.txt b/icu4c/source/data/coll/id_ID.txt
index c91f911..727d3f7 100644
--- a/icu4c/source/data/coll/id_ID.txt
+++ b/icu4c/source/data/coll/id_ID.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 id_ID{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/ig.txt b/icu4c/source/data/coll/ig.txt
index 97d2e66..687d770 100644
--- a/icu4c/source/data/coll/ig.txt
+++ b/icu4c/source/data/coll/ig.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ig{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -15,7 +15,7 @@
                 "&S<sh<<<Sh<<<SH"
                 "&U<ụ<<<Ụ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/in.txt b/icu4c/source/data/coll/in.txt
index 0233523..e2df169 100644
--- a/icu4c/source/data/coll/in.txt
+++ b/icu4c/source/data/coll/in.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 in{
     "%%ALIAS"{"id"}
 }
diff --git a/icu4c/source/data/coll/in_ID.txt b/icu4c/source/data/coll/in_ID.txt
index acec72c..03f2387 100644
--- a/icu4c/source/data/coll/in_ID.txt
+++ b/icu4c/source/data/coll/in_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 in_ID{
     "%%ALIAS"{"id_ID"}
 }
diff --git a/icu4c/source/data/coll/is.txt b/icu4c/source/data/coll/is.txt
index 82c4f00..0313926 100644
--- a/icu4c/source/data/coll/is.txt
+++ b/icu4c/source/data/coll/is.txt
@@ -1,14 +1,14 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 is{
-    Version{"37"}
     collations{
         search{
             Sequence{
                 "[import und-u-co-search]"
                 "[import is-u-co-standard]"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -21,7 +21,7 @@
                 "&[before 1]z<ý<<<Ý"
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<ö<<<Ö<<ø<<<Ø<å<<<Å"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/it.txt b/icu4c/source/data/coll/it.txt
index 1bf1ce2..cfaffaa 100644
--- a/icu4c/source/data/coll/it.txt
+++ b/icu4c/source/data/coll/it.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 it{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/iw.txt b/icu4c/source/data/coll/iw.txt
index d59865d..4aa2f62 100644
--- a/icu4c/source/data/coll/iw.txt
+++ b/icu4c/source/data/coll/iw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 iw{
     "%%ALIAS"{"he"}
 }
diff --git a/icu4c/source/data/coll/iw_IL.txt b/icu4c/source/data/coll/iw_IL.txt
index cf1666a..984aefd 100644
--- a/icu4c/source/data/coll/iw_IL.txt
+++ b/icu4c/source/data/coll/iw_IL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 iw_IL{
     "%%ALIAS"{"he_IL"}
 }
diff --git a/icu4c/source/data/coll/ja.txt b/icu4c/source/data/coll/ja.txt
index 862dd08..3902bef 100644
--- a/icu4c/source/data/coll/ja.txt
+++ b/icu4c/source/data/coll/ja.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ja{
-    Version{"37"}
     collations{
         private-kana{
             Sequence{
@@ -412,7 +412,7 @@
                 "&「=「"
                 "&」=」"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -420,14 +420,14 @@
                 "[import ja-u-co-private-kana]"
                 "&[last regular]<*亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         unihan{
             Sequence{
                 "[import und-u-co-private-unihan]"
                 "[import ja-u-co-private-kana]"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/ka.txt b/icu4c/source/data/coll/ka.txt
index 259d35e..a81aa3d 100644
--- a/icu4c/source/data/coll/ka.txt
+++ b/icu4c/source/data/coll/ka.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ka{
-    Version{"37"}
     collations{
         standard{
             Sequence{"[reorder Geor]"}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/kk.txt b/icu4c/source/data/coll/kk.txt
index 1ffe304..733f1c6 100644
--- a/icu4c/source/data/coll/kk.txt
+++ b/icu4c/source/data/coll/kk.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kk{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -10,7 +10,7 @@
                 "&Ұ<ү<<<Ү"
                 "&[before 1]ь<і<<<І"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/kl.txt b/icu4c/source/data/coll/kl.txt
index c4a0824..73a3276 100644
--- a/icu4c/source/data/coll/kl.txt
+++ b/icu4c/source/data/coll/kl.txt
@@ -1,14 +1,14 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kl{
-    Version{"37"}
     collations{
         search{
             Sequence{
                 "[import und-u-co-search]"
                 "[import kl-u-co-standard]"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -19,7 +19,7 @@
                 "&Y<<ü<<<Ü<<ű<<<Ű"
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<<ę<<<Ę<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<<œ<<<Œ<å<<<Å"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/km.txt b/icu4c/source/data/coll/km.txt
index 0830c7d..42642e2 100644
--- a/icu4c/source/data/coll/km.txt
+++ b/icu4c/source/data/coll/km.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 km{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -66,7 +66,7 @@
                 "&ឱ<<<ឲ"
                 "&ៅ<ុំ<ំ<ាំ<ះ<ិះ<ុះ<េះ<ោះ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/kn.txt b/icu4c/source/data/coll/kn.txt
index 1a41481..57431e5 100644
--- a/icu4c/source/data/coll/kn.txt
+++ b/icu4c/source/data/coll/kn.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kn{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -9,7 +9,7 @@
                 "[reorder Knda Deva Beng Guru Gujr Orya Taml Telu Mlym Sinh]"
                 "&ಔ<ಂ<ಃ<ೱ<ೲ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         traditional{
             Sequence{
@@ -651,7 +651,7 @@
                 "&ಫೋ<<<ಫ಼ೋ"
                 "&ಫೌ<<<ಫ಼ೌ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/ko.txt b/icu4c/source/data/coll/ko.txt
index 7fc328d..d848d89 100644
--- a/icu4c/source/data/coll/ko.txt
+++ b/icu4c/source/data/coll/ko.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ko{
-    Version{"37"}
     collations{
         search{
             Sequence{
@@ -283,7 +283,7 @@
                 "&ᅩᅣᅵ"
                 "=ᆧ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         searchjl{
             Sequence{
@@ -378,7 +378,7 @@
                 "&\u1109\u1109=\u110A<<<\u3146"
                 "&\u110C\u110C=\u110D<<<\u3149"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -862,14 +862,14 @@
                 "&희<<*僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲咥唏嘻悕戲暿欷燹爔豨餼"
                 "&힐<<*詰犵纈襭頡黠"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         unihan{
             Sequence{
                 "[import und-u-co-private-unihan]"
                 "[reorder Hang Hani]"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/kok.txt b/icu4c/source/data/coll/kok.txt
index a24b138..aa06b05 100644
--- a/icu4c/source/data/coll/kok.txt
+++ b/icu4c/source/data/coll/kok.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kok{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -11,7 +11,7 @@
                 "&ह<ळ"
                 "<क्ष"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/ku.txt b/icu4c/source/data/coll/ku.txt
index baf8103..1015a84 100644
--- a/icu4c/source/data/coll/ku.txt
+++ b/icu4c/source/data/coll/ku.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ku{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -15,7 +15,7 @@
                 "&î<<í<<<Í"
                 "&û<<ú<<<Ú"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/ky.txt b/icu4c/source/data/coll/ky.txt
index 8e1d19c..39e3c2b 100644
--- a/icu4c/source/data/coll/ky.txt
+++ b/icu4c/source/data/coll/ky.txt
@@ -1,14 +1,14 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ky{
-    Version{"37"}
     collations{
         standard{
             Sequence{
                 "[reorder Cyrl]"
                 "&е<ё<<<Ё"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/lb.txt b/icu4c/source/data/coll/lb.txt
index a296a7d..b76025d 100644
--- a/icu4c/source/data/coll/lb.txt
+++ b/icu4c/source/data/coll/lb.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lb{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/lkt.txt b/icu4c/source/data/coll/lkt.txt
index 921000b..d5e296b 100644
--- a/icu4c/source/data/coll/lkt.txt
+++ b/icu4c/source/data/coll/lkt.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lkt{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -11,7 +11,7 @@
                 "&S<š<<<Š"
                 "&Z<ž<<<Ž"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/ln.txt b/icu4c/source/data/coll/ln.txt
index 1bf1cc1..fde1d4a 100644
--- a/icu4c/source/data/coll/ln.txt
+++ b/icu4c/source/data/coll/ln.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ln{
-    Version{"37"}
     collations{
         phonetic{
             Sequence{
@@ -16,14 +16,14 @@
                 "&S<sh<<<sH<<<Sh<<<SH"
                 "&T<ts<<<tS<<<Ts<<<TS"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
                 "&E<ɛ<<<Ɛ"
                 "&O<<ɔ<<<Ɔ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/lo.txt b/icu4c/source/data/coll/lo.txt
index 8f7132e..d4419b5 100644
--- a/icu4c/source/data/coll/lo.txt
+++ b/icu4c/source/data/coll/lo.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lo{
-    Version{"37"}
     collations{
         standard{
             Sequence{"[reorder Laoo]"}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/lt.txt b/icu4c/source/data/coll/lt.txt
index 567fdbb..1bb004a 100644
--- a/icu4c/source/data/coll/lt.txt
+++ b/icu4c/source/data/coll/lt.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lt{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -16,7 +16,7 @@
                 "&U<<ų<<<Ų<<ū<<<Ū"
                 "&Z<ž<<<Ž"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/lv.txt b/icu4c/source/data/coll/lv.txt
index 35ed29a..23a20a7 100644
--- a/icu4c/source/data/coll/lv.txt
+++ b/icu4c/source/data/coll/lv.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lv{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -15,7 +15,7 @@
                 "&[before 1]T<š<<<Š"
                 "&[before 1]Ʒ<ž<<<Ž"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/mk.txt b/icu4c/source/data/coll/mk.txt
index 11dbda7..8350c1f 100644
--- a/icu4c/source/data/coll/mk.txt
+++ b/icu4c/source/data/coll/mk.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mk{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -10,7 +10,7 @@
                 "&ԃ<ѓ<<<Ѓ"
                 "&ћ<ќ<<<Ќ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/ml.txt b/icu4c/source/data/coll/ml.txt
index e3a8459..15b9a57 100644
--- a/icu4c/source/data/coll/ml.txt
+++ b/icu4c/source/data/coll/ml.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ml{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -17,7 +17,7 @@
                 "&മ്<<ം"
                 "&ന്<<<ൻ്"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/mn.txt b/icu4c/source/data/coll/mn.txt
index 685bb22..36c9d9b 100644
--- a/icu4c/source/data/coll/mn.txt
+++ b/icu4c/source/data/coll/mn.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mn{
-    Version{"37"}
     collations{
         standard{
             Sequence{"[reorder Cyrl Mong]"}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/mo.txt b/icu4c/source/data/coll/mo.txt
index 01049c8..6ef8313 100644
--- a/icu4c/source/data/coll/mo.txt
+++ b/icu4c/source/data/coll/mo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mo{
     "%%ALIAS"{"ro"}
 }
diff --git a/icu4c/source/data/coll/mr.txt b/icu4c/source/data/coll/mr.txt
index 9439e25..c78877e 100644
--- a/icu4c/source/data/coll/mr.txt
+++ b/icu4c/source/data/coll/mr.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mr{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -12,7 +12,7 @@
                 "<क्ष"
                 "<ज्ञ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/ms.txt b/icu4c/source/data/coll/ms.txt
index 88ede6c..ae67b4e 100644
--- a/icu4c/source/data/coll/ms.txt
+++ b/icu4c/source/data/coll/ms.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ms{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/mt.txt b/icu4c/source/data/coll/mt.txt
index 6c15753..04f1543 100644
--- a/icu4c/source/data/coll/mt.txt
+++ b/icu4c/source/data/coll/mt.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mt{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -12,7 +12,7 @@
                 "&[before 1]i<ħ<<<Ħ"
                 "&[before 1]z<ż<<<Ż"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/my.txt b/icu4c/source/data/coll/my.txt
index bc298af..99ec9c1 100644
--- a/icu4c/source/data/coll/my.txt
+++ b/icu4c/source/data/coll/my.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 my{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -373,7 +373,7 @@
                 "&ထမင်း=ထ္မင်း"
                 "&လက်ဘက်=လ္ဘက်"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/nb.txt b/icu4c/source/data/coll/nb.txt
index f2f50b8..ee869c8 100644
--- a/icu4c/source/data/coll/nb.txt
+++ b/icu4c/source/data/coll/nb.txt
@@ -1,14 +1,14 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nb{
-    Version{"37"}
     collations{
         search{
             Sequence{
                 "[import und-u-co-search]"
                 "[import nb-u-co-standard]"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -18,7 +18,7 @@
                 "&Y<<ü<<<Ü<<ű<<<Ű"
                 "&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<<ę<<<Ę<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<<œ<<<Œ<å<<<Å<<aa<<<Aa<<<AA"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/nb_NO.txt b/icu4c/source/data/coll/nb_NO.txt
index fdac28b..15a33c3 100644
--- a/icu4c/source/data/coll/nb_NO.txt
+++ b/icu4c/source/data/coll/nb_NO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/coll/ne.txt b/icu4c/source/data/coll/ne.txt
index a3148fd..94b6b35 100644
--- a/icu4c/source/data/coll/ne.txt
+++ b/icu4c/source/data/coll/ne.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ne{
-    Version{"37"}
     collations{
         standard{
             Sequence{"[reorder Deva]"}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/nl.txt b/icu4c/source/data/coll/nl.txt
index 2e65681..b8f5e3c 100644
--- a/icu4c/source/data/coll/nl.txt
+++ b/icu4c/source/data/coll/nl.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/nn.txt b/icu4c/source/data/coll/nn.txt
index 35b8148..a2f12c6 100644
--- a/icu4c/source/data/coll/nn.txt
+++ b/icu4c/source/data/coll/nn.txt
@@ -1,15 +1,15 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nn{
-    Version{"37"}
     collations{
         search{
             Sequence{"[import nb-u-co-search]"}
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{"[import nb-u-co-standard]"}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/no.txt b/icu4c/source/data/coll/no.txt
index 097a923..474d0b2 100644
--- a/icu4c/source/data/coll/no.txt
+++ b/icu4c/source/data/coll/no.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no{
     "%%ALIAS"{"nb"}
 }
diff --git a/icu4c/source/data/coll/no_NO.txt b/icu4c/source/data/coll/no_NO.txt
index 188a8a4..5d7f859 100644
--- a/icu4c/source/data/coll/no_NO.txt
+++ b/icu4c/source/data/coll/no_NO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no_NO{
     "%%ALIAS"{"nb_NO"}
 }
diff --git a/icu4c/source/data/coll/om.txt b/icu4c/source/data/coll/om.txt
index 9229fc7..2e8642c 100644
--- a/icu4c/source/data/coll/om.txt
+++ b/icu4c/source/data/coll/om.txt
@@ -1,14 +1,14 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 om{
-    Version{"37"}
     collations{
         standard{
             Sequence{
                 "&Z<ch<<<Ch<<<CH<dh<<<Dh<<<DH<kh<<<Kh<<<KH<ny<<<Ny<<<NY<ph<<<Ph<<<PH<"
                 "sh<<<Sh"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/or.txt b/icu4c/source/data/coll/or.txt
index 5546390..a23569e 100644
--- a/icu4c/source/data/coll/or.txt
+++ b/icu4c/source/data/coll/or.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 or{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -11,7 +11,7 @@
                 "&ହ<କ୍ଷ"
                 "&ଯ<<ୟ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/pa.txt b/icu4c/source/data/coll/pa.txt
index afc9b9d..aff87f6 100644
--- a/icu4c/source/data/coll/pa.txt
+++ b/icu4c/source/data/coll/pa.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -10,7 +10,7 @@
                 "&ੱ<<ੰ<<ਂ<<ਁ<<਼"
                 "&ੜ<੍"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/pa_Guru.txt b/icu4c/source/data/coll/pa_Guru.txt
index a0ee569..f10658f 100644
--- a/icu4c/source/data/coll/pa_Guru.txt
+++ b/icu4c/source/data/coll/pa_Guru.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_Guru{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/pa_Guru_IN.txt b/icu4c/source/data/coll/pa_Guru_IN.txt
index adeae3f..f67b7c3 100644
--- a/icu4c/source/data/coll/pa_Guru_IN.txt
+++ b/icu4c/source/data/coll/pa_Guru_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/coll/pa_IN.txt b/icu4c/source/data/coll/pa_IN.txt
index b18bba6..0c963d7 100644
--- a/icu4c/source/data/coll/pa_IN.txt
+++ b/icu4c/source/data/coll/pa_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_IN{
     "%%ALIAS"{"pa_Guru_IN"}
 }
diff --git a/icu4c/source/data/coll/pl.txt b/icu4c/source/data/coll/pl.txt
index a49a370..30fe87f 100644
--- a/icu4c/source/data/coll/pl.txt
+++ b/icu4c/source/data/coll/pl.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pl{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -14,7 +14,7 @@
                 "&S<ś<<<Ś"
                 "&Z<ź<<<Ź<ż<<<Ż"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/ps.txt b/icu4c/source/data/coll/ps.txt
index b23669e..830cc9a 100644
--- a/icu4c/source/data/coll/ps.txt
+++ b/icu4c/source/data/coll/ps.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ps{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -24,7 +24,7 @@
                 "&ی<<*ىےيېۍ<<یٔ<<<ىٔ<<<ئ"
                 "&\u00A0<<\u200C<<\u200D"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/pt.txt b/icu4c/source/data/coll/pt.txt
index 9ac9358..1bb06bc 100644
--- a/icu4c/source/data/coll/pt.txt
+++ b/icu4c/source/data/coll/pt.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/ro.txt b/icu4c/source/data/coll/ro.txt
index a8e2b05..ebabc94 100644
--- a/icu4c/source/data/coll/ro.txt
+++ b/icu4c/source/data/coll/ro.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ro{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -10,7 +10,7 @@
                 "&S<ş=ș<<<Ş=Ș"
                 "&T<ţ=ț<<<Ţ=Ț"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/root.txt b/icu4c/source/data/coll/root.txt
index 27129b7..0b668a5 100644
--- a/icu4c/source/data/coll/root.txt
+++ b/icu4c/source/data/coll/root.txt
@@ -1,8 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 root{
     UCARules:process(uca_rules){"../unidata/UCARules.txt"}
-    Version{"37"}
+    Version{"38.1"}
     collations{
         default{"standard"}
         emoji{
@@ -13,9 +14,15 @@
                 "<*🥰😍🤩😘😗☺😚😙🥲"
                 "<*😋😛😜🤪😝🤑"
                 "<*🤗🤭🤫🤔"
-                "<*🤐🤨😐😑😶😏😒🙄😬🤥"
+                "<*🤐🤨😐😑😶"
+                "< 😶‍🌫"
+                "<*😏😒🙄😬"
+                "< 😮‍💨"
+                "<*🤥"
                 "<*😌😔😪🤤😴"
-                "<*😷🤒🤕🤢🤮🤧🥵🥶🥴😵🤯"
+                "<*😷🤒🤕🤢🤮🤧🥵🥶🥴😵"
+                "< 😵‍💫"
+                "<*🤯"
                 "<*🤠🥳🥸"
                 "<*😎🤓🧐"
                 "<*😕😟🙁☹😮😯😲😳🥺😦😧😨😰😥😢😭😱😖😣😞😓😩😫🥱"
@@ -23,7 +30,10 @@
                 "<*💩🤡👹👺👻👽👾🤖"
                 "<*😺😸😹😻😼😽🙀😿😾"
                 "<*🙈🙉🙊"
-                "<*💋💌💘💝💖💗💓💞💕💟❣💔❤🧡💛💚💙💜🤎🖤🤍💯💢💥💫💦💨🕳💣💬"
+                "<*💋💌💘💝💖💗💓💞💕💟❣💔"
+                "< ❤‍🔥 = ❤️‍🔥"
+                "< ❤‍🩹 = ❤️‍🩹"
+                "<*❤🧡💛💚💙💜🤎🖤🤍💯💢💥💫💦💨🕳💣💬"
                 "< 👁‍🗨 = 👁️‍🗨"
                 "<*🗨🗯💭💤"
                 "<*👋🤚🖐✋🖖"
@@ -33,7 +43,10 @@
                 "<*👏🙌👐🤲🤝🙏"
                 "<*✍💅🤳"
                 "<*💪🦾🦿🦵🦶👂🦻👃🧠🫀🫁🦷🦴👀👁👅👄"
-                "<*👶🧒👦👧🧑👱👨🧔👩"
+                "<*👶🧒👦👧🧑👱👨🧔"
+                "< 🧔‍♂ << 🧔🏻‍♂ << 🧔🏼‍♂ << 🧔🏽‍♂ << 🧔🏾‍♂ << 🧔🏿‍♂"
+                "< 🧔‍♀ << 🧔🏻‍♀ << 🧔🏼‍♀ << 🧔🏽‍♀ << 🧔🏾‍♀ << 🧔🏿‍♀"
+                "<*👩"
                 "< 👱‍♀ << 👱🏻‍♀ << 👱🏼‍♀ << 👱🏽‍♀ << 👱🏾‍♀ << 👱🏿‍♀"
                 "< 👱‍♂ << 👱🏻‍♂ << 👱🏼‍♂ << 👱🏽‍♂ << 👱🏾‍♂ << 👱🏿‍♂"
                 "<*🧓👴👵"
@@ -394,10 +407,10 @@
                 "< 🏴󠁧󠁢󠁳󠁣󠁴󠁿"
                 "< 🏴󠁧󠁢󠁷󠁬󠁳󠁿"
                 "& 🧑 << 👱"
-                "& 👨 << 🧔 <<👱‍♂ <<👱🏻‍♂ <<👱🏼‍♂ <<👱🏽‍♂ <<👱🏾‍♂ <<👱🏿‍♂"
-                "& 👩 << 👱‍♀ << 👱🏻‍♀ << 👱🏼‍♀ << 👱🏽‍♀ << 👱🏾‍♀ << 👱🏿‍♀"
+                "& 👨 << 🧔 <<🧔‍♂ <<🧔🏻‍♂ <<🧔🏼‍♂ <<🧔🏽‍♂ <<🧔🏾‍♂ <<🧔🏿‍♂ <<👱‍♂ <<👱🏻‍♂ <<👱🏼‍♂ <<👱🏽‍♂ <<👱🏾‍♂ <<👱🏿‍♂"
+                "& 👩 << 🧔‍♀ << 🧔🏻‍♀ << 🧔🏼‍♀ << 🧔🏽‍♀ << 🧔🏾‍♀ << 🧔🏿‍♀ << 👱‍♀ << 👱🏻‍♀ << 👱🏼‍♀ << 👱🏽‍♀ << 👱🏾‍♀ << 👱🏿‍♀"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         eor{
             Sequence{
@@ -937,7 +950,7 @@
                 "&ք"
                 "<և"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         private-unihan{
             Sequence{
@@ -1180,7 +1193,7 @@
                 "&龟=\uFDD0龟"
                 "&龠=\uFDD0龠"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         search{
             Sequence{
@@ -1299,11 +1312,11 @@
                 "&ᅳᅵ"
                 "=ᅴ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{""}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
     depends:process(dependency){"ucadata.icu"}
diff --git a/icu4c/source/data/coll/ru.txt b/icu4c/source/data/coll/ru.txt
index ef974af..fca4c1a 100644
--- a/icu4c/source/data/coll/ru.txt
+++ b/icu4c/source/data/coll/ru.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru{
-    Version{"37"}
     collations{
         standard{
             Sequence{"[reorder Cyrl]"}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/curr/nds.txt b/icu4c/source/data/coll/sa.txt
similarity index 63%
rename from icu4c/source/data/curr/nds.txt
rename to icu4c/source/data/coll/sa.txt
index ac58836..2d4f262 100644
--- a/icu4c/source/data/curr/nds.txt
+++ b/icu4c/source/data/coll/sa.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-nds{
-    Version{"37"}
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+sa{
 }
diff --git a/icu4c/source/data/coll/se.txt b/icu4c/source/data/coll/se.txt
index a3eb573..9cf64a4 100644
--- a/icu4c/source/data/coll/se.txt
+++ b/icu4c/source/data/coll/se.txt
@@ -1,14 +1,14 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 se{
-    Version{"37"}
     collations{
         search{
             Sequence{
                 "[import und-u-co-search]"
                 "[import se-u-co-standard]"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -53,7 +53,7 @@
                 "<<<Ô<<ǫ"
                 "<<<Ǫ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/sh.txt b/icu4c/source/data/coll/sh.txt
index 74b646a..83091b2 100644
--- a/icu4c/source/data/coll/sh.txt
+++ b/icu4c/source/data/coll/sh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh{
     "%%ALIAS"{"sr_Latn"}
 }
diff --git a/icu4c/source/data/coll/sh_BA.txt b/icu4c/source/data/coll/sh_BA.txt
index 93bdac6..7f73cd5 100644
--- a/icu4c/source/data/coll/sh_BA.txt
+++ b/icu4c/source/data/coll/sh_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_BA{
     "%%ALIAS"{"sr_Latn_BA"}
 }
diff --git a/icu4c/source/data/coll/sh_CS.txt b/icu4c/source/data/coll/sh_CS.txt
index 224568a..3b2f92b 100644
--- a/icu4c/source/data/coll/sh_CS.txt
+++ b/icu4c/source/data/coll/sh_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_CS{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/coll/sh_YU.txt b/icu4c/source/data/coll/sh_YU.txt
index 8a7d460..dc5a35b 100644
--- a/icu4c/source/data/coll/sh_YU.txt
+++ b/icu4c/source/data/coll/sh_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_YU{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/coll/si.txt b/icu4c/source/data/coll/si.txt
index 5ab7397..128d6a4 100644
--- a/icu4c/source/data/coll/si.txt
+++ b/icu4c/source/data/coll/si.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 si{
-    Version{"37"}
     collations{
         dictionary{
             Sequence{
@@ -10,7 +10,7 @@
                 "&ඖ<ං<ඃ"
                 "&ජ්ඤ<<ඥ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -19,7 +19,7 @@
                 "&ඖ<ං<ඃ"
                 "&ඥ<ඤ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/sk.txt b/icu4c/source/data/coll/sk.txt
index 06e9b65..c34ba6c 100644
--- a/icu4c/source/data/coll/sk.txt
+++ b/icu4c/source/data/coll/sk.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sk{
-    Version{"37"}
     collations{
         search{
             Sequence{
@@ -21,7 +21,7 @@
                 "&Y<ý<<<Ý"
                 "&Z<ž<<<Ž"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -33,7 +33,7 @@
                 "&S<š<<<Š"
                 "&Z<ž<<<Ž"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/sl.txt b/icu4c/source/data/coll/sl.txt
index 176d8a5..82b7fe9 100644
--- a/icu4c/source/data/coll/sl.txt
+++ b/icu4c/source/data/coll/sl.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sl{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -10,7 +10,7 @@
                 "&S<š<<<Š"
                 "&Z<ž<<<Ž"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/smn.txt b/icu4c/source/data/coll/smn.txt
index 48fb7f5..eca0b63 100644
--- a/icu4c/source/data/coll/smn.txt
+++ b/icu4c/source/data/coll/smn.txt
@@ -1,14 +1,14 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 smn{
-    Version{"37"}
     collations{
         search{
             Sequence{
                 "[import und-u-co-search]"
                 "[import smn-u-co-standard]"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -19,7 +19,7 @@
                 "&S<š<<<Š"
                 "&Z<ž<<<Ž<æ<<<Æ<ø<<<Ø<å<<<Å<ã<<<Ã<ä<<<Ä<á<<<Á<ö<<<Ö"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/sq.txt b/icu4c/source/data/coll/sq.txt
index 9361105..2e3a8b5 100644
--- a/icu4c/source/data/coll/sq.txt
+++ b/icu4c/source/data/coll/sq.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sq{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -17,7 +17,7 @@
                 "&[before 1]Y<xh<<<Xh<<<XH"
                 "&[before 1]Ʒ<zh<<<Zh<<<ZH"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/sr.txt b/icu4c/source/data/coll/sr.txt
index 5644a8b..7a09b8c 100644
--- a/icu4c/source/data/coll/sr.txt
+++ b/icu4c/source/data/coll/sr.txt
@@ -1,14 +1,14 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr{
-    Version{"37"}
     collations{
         standard{
             Sequence{
                 "[reorder Cyrl]"
                 "[suppressContractions [Ии]]"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/sr_BA.txt b/icu4c/source/data/coll/sr_BA.txt
index edad17f..04f2efd 100644
--- a/icu4c/source/data/coll/sr_BA.txt
+++ b/icu4c/source/data/coll/sr_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_BA{
     "%%ALIAS"{"sr_Cyrl_BA"}
 }
diff --git a/icu4c/source/data/coll/sr_Cyrl.txt b/icu4c/source/data/coll/sr_Cyrl.txt
index df3a287..772d8b3 100644
--- a/icu4c/source/data/coll/sr_Cyrl.txt
+++ b/icu4c/source/data/coll/sr_Cyrl.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/sr_Cyrl_BA.txt b/icu4c/source/data/coll/sr_Cyrl_BA.txt
index 51e1655..30330c4 100644
--- a/icu4c/source/data/coll/sr_Cyrl_BA.txt
+++ b/icu4c/source/data/coll/sr_Cyrl_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/coll/sr_Cyrl_ME.txt b/icu4c/source/data/coll/sr_Cyrl_ME.txt
index 30bcf98..03a4e63 100644
--- a/icu4c/source/data/coll/sr_Cyrl_ME.txt
+++ b/icu4c/source/data/coll/sr_Cyrl_ME.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_ME{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/sr_Cyrl_RS.txt b/icu4c/source/data/coll/sr_Cyrl_RS.txt
index 7ef8fab..c74b860 100644
--- a/icu4c/source/data/coll/sr_Cyrl_RS.txt
+++ b/icu4c/source/data/coll/sr_Cyrl_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/coll/sr_Latn.txt b/icu4c/source/data/coll/sr_Latn.txt
index f982f5f..2d45f67 100644
--- a/icu4c/source/data/coll/sr_Latn.txt
+++ b/icu4c/source/data/coll/sr_Latn.txt
@@ -1,15 +1,15 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn{
-    Version{"37"}
     collations{
         search{
             Sequence{"[import hr-u-co-search]"}
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{"[import hr]"}
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/sr_Latn_BA.txt b/icu4c/source/data/coll/sr_Latn_BA.txt
index f4b62ac..c49fa32 100644
--- a/icu4c/source/data/coll/sr_Latn_BA.txt
+++ b/icu4c/source/data/coll/sr_Latn_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/coll/sr_Latn_RS.txt b/icu4c/source/data/coll/sr_Latn_RS.txt
index 76d38f8..8d63da6 100644
--- a/icu4c/source/data/coll/sr_Latn_RS.txt
+++ b/icu4c/source/data/coll/sr_Latn_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/coll/sr_ME.txt b/icu4c/source/data/coll/sr_ME.txt
index 54cc1af..59aecf8 100644
--- a/icu4c/source/data/coll/sr_ME.txt
+++ b/icu4c/source/data/coll/sr_ME.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_ME{
     "%%ALIAS"{"sr_Cyrl_ME"}
 }
diff --git a/icu4c/source/data/coll/sr_RS.txt b/icu4c/source/data/coll/sr_RS.txt
index 674ff77..84db469 100644
--- a/icu4c/source/data/coll/sr_RS.txt
+++ b/icu4c/source/data/coll/sr_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_RS{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/coll/sv.txt b/icu4c/source/data/coll/sv.txt
index 744b31c..cd839fa 100644
--- a/icu4c/source/data/coll/sv.txt
+++ b/icu4c/source/data/coll/sv.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sv{
-    Version{"37"}
     collations{
         default{"reformed"}
         reformed{
@@ -12,14 +12,14 @@
                 "&Y<<ü<<<Ü<<ű<<<Ű"
                 "&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<<ę<<<Ę<ö<<<Ö<<ø<<<Ø<<ő<<<Ő<<œ<<<Œ<<ô<<<Ô"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         search{
             Sequence{
                 "[import und-u-co-search]"
                 "[import sv-u-co-standard]"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -30,7 +30,7 @@
                 "&Y<<ü<<<Ü<<ű<<<Ű"
                 "&[before 1]ǀ<å<<<Å<ä<<<Ä<<æ<<<Æ<<ę<<<Ę<ö<<<Ö<<ø<<<Ø<<ő<<<Ő<<œ<<<Œ<<ô<<<Ô"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/sw.txt b/icu4c/source/data/coll/sw.txt
index 2455080..0fdc104 100644
--- a/icu4c/source/data/coll/sw.txt
+++ b/icu4c/source/data/coll/sw.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/ta.txt b/icu4c/source/data/coll/ta.txt
index ccefb86..d694dbe 100644
--- a/icu4c/source/data/coll/ta.txt
+++ b/icu4c/source/data/coll/ta.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ta{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -34,7 +34,7 @@
                 "&[before 1]ஹ<ஹ்"
                 "&[before 1]க்ஷ<க்ஷ்"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/te.txt b/icu4c/source/data/coll/te.txt
index d2e7d5e..41c5fc4 100644
--- a/icu4c/source/data/coll/te.txt
+++ b/icu4c/source/data/coll/te.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 te{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -9,7 +9,7 @@
                 "[reorder Telu Deva Beng Guru Gujr Orya Taml Knda Mlym Sinh]"
                 "&ఔ<ఁ<ం<ః"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/th.txt b/icu4c/source/data/coll/th.txt
index 8f6d26f..3eb5eab 100644
--- a/icu4c/source/data/coll/th.txt
+++ b/icu4c/source/data/coll/th.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 th{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -17,7 +17,7 @@
                 "&ๅํ<<<ํๅ"
                 "&ไ<ฺ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/tk.txt b/icu4c/source/data/coll/tk.txt
index e3cf87d..b4b4de3 100644
--- a/icu4c/source/data/coll/tk.txt
+++ b/icu4c/source/data/coll/tk.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tk{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -14,7 +14,7 @@
                 "&U<ü<<<Ü"
                 "&Y<ý<<<Ý"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/to.txt b/icu4c/source/data/coll/to.txt
index 8388d32..6572160 100644
--- a/icu4c/source/data/coll/to.txt
+++ b/icu4c/source/data/coll/to.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 to{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -13,7 +13,7 @@
                 "&o<<ó<<<Ó<<ō<<<Ō"
                 "&u<<ú<<<Ú<<ū<<<Ū"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/tr.txt b/icu4c/source/data/coll/tr.txt
index caeff62..84f9e34 100644
--- a/icu4c/source/data/coll/tr.txt
+++ b/icu4c/source/data/coll/tr.txt
@@ -1,14 +1,14 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tr{
-    Version{"37"}
     collations{
         search{
             Sequence{
                 "[import und-u-co-search]"
                 "[import tr-u-co-standard]"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -20,7 +20,7 @@
                 "&S<ş<<<Ş"
                 "&U<ü<<<Ü"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/ug.txt b/icu4c/source/data/coll/ug.txt
index 3a55cb6..0007037 100644
--- a/icu4c/source/data/coll/ug.txt
+++ b/icu4c/source/data/coll/ug.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ug{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -10,7 +10,7 @@
                 "&ك<گ<ڭ<ل"
                 "&ھ<و<ۇ<ۆ<ۈ<ۋ<ې<ى<ي"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/uk.txt b/icu4c/source/data/coll/uk.txt
index e196c3f..edf8fa2 100644
--- a/icu4c/source/data/coll/uk.txt
+++ b/icu4c/source/data/coll/uk.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uk{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -9,7 +9,7 @@
                 "&Г<ґ<<<Ґ"
                 "&ꙇ<ї<<<\uA676<<<Ї"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/ur.txt b/icu4c/source/data/coll/ur.txt
index 74c338d..e6920ca 100644
--- a/icu4c/source/data/coll/ur.txt
+++ b/icu4c/source/data/coll/ur.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ur{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -12,7 +12,7 @@
                 "<<\u0651<<\u0658<<\u0653"
                 "&[last tertiary ignorable]<<<\u0610<<<\u0611<<<\u0613<<<\u0612<<<\u0614"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/uz.txt b/icu4c/source/data/coll/uz.txt
index 8b4f652..c5893ef 100644
--- a/icu4c/source/data/coll/uz.txt
+++ b/icu4c/source/data/coll/uz.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -10,7 +10,7 @@
                 "<sh<<<Sh<<<SH"
                 "<ch<<<Ch<<<CH"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/vi.txt b/icu4c/source/data/coll/vi.txt
index b0fd12b..9d9e0b5 100644
--- a/icu4c/source/data/coll/vi.txt
+++ b/icu4c/source/data/coll/vi.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vi{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -13,7 +13,7 @@
                 "&o<ô<<<Ô<ơ<<<Ơ"
                 "&u<ư<<<Ư"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         traditional{
             Sequence{
@@ -32,7 +32,7 @@
                 "&T<th<<<Th<<<TH<tr<<<Tr<<<TR"
                 "&u<ư<<<Ư"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/wae.txt b/icu4c/source/data/coll/wae.txt
index f6e8467..4d14720 100644
--- a/icu4c/source/data/coll/wae.txt
+++ b/icu4c/source/data/coll/wae.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 wae{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/wo.txt b/icu4c/source/data/coll/wo.txt
index 40d5b4c..e6eb29e 100644
--- a/icu4c/source/data/coll/wo.txt
+++ b/icu4c/source/data/coll/wo.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 wo{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -11,7 +11,7 @@
                 "&N<ñ<<<Ñ<ŋ<<<Ŋ"
                 "&O<ó<<<Ó"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/xh.txt b/icu4c/source/data/coll/xh.txt
index a659eb8..3a7aa5d 100644
--- a/icu4c/source/data/coll/xh.txt
+++ b/icu4c/source/data/coll/xh.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 xh{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/yi.txt b/icu4c/source/data/coll/yi.txt
index 95a0f4f..b3483c8 100644
--- a/icu4c/source/data/coll/yi.txt
+++ b/icu4c/source/data/coll/yi.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yi{
-    Version{"37"}
     collations{
         search{
             Sequence{
@@ -11,7 +11,7 @@
                 "‎&״"
                 "<<'\u0022'"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         standard{
             Sequence{
@@ -28,7 +28,7 @@
                 "&ש<שׂ"
                 "&[before 1]ת<תּ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/yo.txt b/icu4c/source/data/coll/yo.txt
index 2c4d35c..84f3855 100644
--- a/icu4c/source/data/coll/yo.txt
+++ b/icu4c/source/data/coll/yo.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yo{
-    Version{"37"}
     collations{
         standard{
             Sequence{
@@ -11,7 +11,7 @@
                 "&O<ọ<<<Ọ"
                 "&S<ṣ<<<Ṣ"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/yue.txt b/icu4c/source/data/coll/yue.txt
index 534d44e..0ae774a 100644
--- a/icu4c/source/data/coll/yue.txt
+++ b/icu4c/source/data/coll/yue.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue{
     "%%ALIAS"{"zh_Hant"}
 }
diff --git a/icu4c/source/data/coll/yue_CN.txt b/icu4c/source/data/coll/yue_CN.txt
index 810b683..8b765d7 100644
--- a/icu4c/source/data/coll/yue_CN.txt
+++ b/icu4c/source/data/coll/yue_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_CN{
     "%%ALIAS"{"zh_Hans"}
 }
diff --git a/icu4c/source/data/coll/yue_Hans.txt b/icu4c/source/data/coll/yue_Hans.txt
index c43b828..e2537bb 100644
--- a/icu4c/source/data/coll/yue_Hans.txt
+++ b/icu4c/source/data/coll/yue_Hans.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_Hans{
     "%%ALIAS"{"zh_Hans"}
 }
diff --git a/icu4c/source/data/coll/yue_Hans_CN.txt b/icu4c/source/data/coll/yue_Hans_CN.txt
index de70613..4b6a931 100644
--- a/icu4c/source/data/coll/yue_Hans_CN.txt
+++ b/icu4c/source/data/coll/yue_Hans_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_Hans_CN{
     "%%ALIAS"{"zh_Hans"}
 }
diff --git a/icu4c/source/data/coll/yue_Hant.txt b/icu4c/source/data/coll/yue_Hant.txt
index b80ecfd..2b90cdc 100644
--- a/icu4c/source/data/coll/yue_Hant.txt
+++ b/icu4c/source/data/coll/yue_Hant.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_Hant{
     "%%ALIAS"{"zh_Hant"}
 }
diff --git a/icu4c/source/data/coll/zh.txt b/icu4c/source/data/coll/zh.txt
index 39574d8..6463d12 100644
--- a/icu4c/source/data/coll/zh.txt
+++ b/icu4c/source/data/coll/zh.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh{
-    Version{"37"}
     collations{
         big5han{
             Sequence{
@@ -9,7 +9,7 @@
                 "[reorder Latn Hani Bopo]"
                 "&[last regular]<*兙兛兞兝兡兣嗧瓩糎一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲乂乜凵匚厂万丌乇亍囗屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛毻毼毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         default{"pinyin"}
         gb2312han{
@@ -18,7 +18,7 @@
                 "[reorder Latn Hani]"
                 "&[last regular]<*啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         pinyin{
             Sequence{
@@ -1887,7 +1887,7 @@
                 "&弞<沈阳/阳"
                 "&銺<藏文/文"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         private-pinyin{
             Sequence{
@@ -1901,7 +1901,7 @@
                 "&[before 2]u<<ū<<<Ū<<ú<<<Ú<<ǔ<<<Ǔ<<ù<<<Ù"
                 "&U<<ǖ<<<Ǖ<<ǘ<<<Ǘ<<ǚ<<<Ǚ<<ǜ<<<Ǜ<<ü<<<Ü"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         stroke{
             Sequence{
@@ -2604,7 +2604,7 @@
                 "&龟<<<⻳"
                 "&龠<<<⿕"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         unihan{
             Sequence{
@@ -2612,7 +2612,7 @@
                 "[import zh-u-co-private-pinyin]"
                 "[reorder Hani Bopo]"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
         zhuyin{
             Sequence{
@@ -4638,7 +4638,7 @@
                 "&龟<<<⻳"
                 "&龠<<<⿕"
             }
-            Version{"37"}
+            Version{"38.1"}
         }
     }
 }
diff --git a/icu4c/source/data/coll/zh_CN.txt b/icu4c/source/data/coll/zh_CN.txt
index c915161..0136d26 100644
--- a/icu4c/source/data/coll/zh_CN.txt
+++ b/icu4c/source/data/coll/zh_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_CN{
     "%%ALIAS"{"zh_Hans_CN"}
 }
diff --git a/icu4c/source/data/coll/zh_HK.txt b/icu4c/source/data/coll/zh_HK.txt
index fe72a0e..c34c98f 100644
--- a/icu4c/source/data/coll/zh_HK.txt
+++ b/icu4c/source/data/coll/zh_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_HK{
     "%%ALIAS"{"zh_Hant_HK"}
 }
diff --git a/icu4c/source/data/coll/zh_Hans.txt b/icu4c/source/data/coll/zh_Hans.txt
index 72c418e..58a5386 100644
--- a/icu4c/source/data/coll/zh_Hans.txt
+++ b/icu4c/source/data/coll/zh_Hans.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hans{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/coll/zh_Hans_CN.txt b/icu4c/source/data/coll/zh_Hans_CN.txt
index 70a6a77..333ba54 100644
--- a/icu4c/source/data/coll/zh_Hans_CN.txt
+++ b/icu4c/source/data/coll/zh_Hans_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/coll/zh_Hans_SG.txt b/icu4c/source/data/coll/zh_Hans_SG.txt
index 498813b..5e0fabf 100644
--- a/icu4c/source/data/coll/zh_Hans_SG.txt
+++ b/icu4c/source/data/coll/zh_Hans_SG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/coll/zh_Hant.txt b/icu4c/source/data/coll/zh_Hant.txt
index bcbd424..90f28ca 100644
--- a/icu4c/source/data/coll/zh_Hant.txt
+++ b/icu4c/source/data/coll/zh_Hant.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant{
-    Version{"37"}
     collations{
         default{"stroke"}
     }
diff --git a/icu4c/source/data/coll/zh_Hant_HK.txt b/icu4c/source/data/coll/zh_Hant_HK.txt
index 59f230f..57bbeef 100644
--- a/icu4c/source/data/coll/zh_Hant_HK.txt
+++ b/icu4c/source/data/coll/zh_Hant_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/coll/zh_Hant_MO.txt b/icu4c/source/data/coll/zh_Hant_MO.txt
index 379ea44..79dff76 100644
--- a/icu4c/source/data/coll/zh_Hant_MO.txt
+++ b/icu4c/source/data/coll/zh_Hant_MO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/coll/zh_Hant_TW.txt b/icu4c/source/data/coll/zh_Hant_TW.txt
index b62ad69..b079f20 100644
--- a/icu4c/source/data/coll/zh_Hant_TW.txt
+++ b/icu4c/source/data/coll/zh_Hant_TW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/coll/zh_MO.txt b/icu4c/source/data/coll/zh_MO.txt
index 6565bf7..c6b2148 100644
--- a/icu4c/source/data/coll/zh_MO.txt
+++ b/icu4c/source/data/coll/zh_MO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_MO{
     "%%ALIAS"{"zh_Hant_MO"}
 }
diff --git a/icu4c/source/data/coll/zh_SG.txt b/icu4c/source/data/coll/zh_SG.txt
index bf27773..14136c3 100644
--- a/icu4c/source/data/coll/zh_SG.txt
+++ b/icu4c/source/data/coll/zh_SG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_SG{
     "%%ALIAS"{"zh_Hans_SG"}
 }
diff --git a/icu4c/source/data/coll/zh_TW.txt b/icu4c/source/data/coll/zh_TW.txt
index 9372c50..c54ccbf 100644
--- a/icu4c/source/data/coll/zh_TW.txt
+++ b/icu4c/source/data/coll/zh_TW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_TW{
     "%%ALIAS"{"zh_Hant_TW"}
 }
diff --git a/icu4c/source/data/coll/zu.txt b/icu4c/source/data/coll/zu.txt
index 015bd71..fe9ac75 100644
--- a/icu4c/source/data/coll/zu.txt
+++ b/icu4c/source/data/coll/zu.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zu{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/LOCALE_DEPS.json b/icu4c/source/data/curr/LOCALE_DEPS.json
index 681e78c..2508537 100644
--- a/icu4c/source/data/curr/LOCALE_DEPS.json
+++ b/icu4c/source/data/curr/LOCALE_DEPS.json
@@ -1,8 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 
 {
-    "cldrVersion": "37",
+    "cldrVersion": "38.1",
     "aliases": {
         "ars": "ar_SA",
         "az_AZ": "az_Latn_AZ",
@@ -33,7 +34,7 @@
         "sh_YU": "sr_Latn_RS",
         "shi_MA": "shi_Tfng_MA",
         "sr_BA": "sr_Cyrl_BA",
-        "sr_CS": "sr_Cyrl_RS",
+        "sr_CS": "sr_RS",
         "sr_Cyrl_CS": "sr_Cyrl_RS",
         "sr_Cyrl_YU": "sr_Cyrl_RS",
         "sr_Latn_CS": "sr_Latn_RS",
@@ -41,7 +42,7 @@
         "sr_ME": "sr_Latn_ME",
         "sr_RS": "sr_Cyrl_RS",
         "sr_XK": "sr_Cyrl_XK",
-        "sr_YU": "sr_Cyrl_RS",
+        "sr_YU": "sr_RS",
         "su_ID": "su_Latn_ID",
         "tl": "fil",
         "tl_PH": "fil_PH",
diff --git a/icu4c/source/data/curr/af.txt b/icu4c/source/data/curr/af.txt
index 0d68d3c..bc70394 100644
--- a/icu4c/source/data/curr/af.txt
+++ b/icu4c/source/data/curr/af.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 af{
     Currencies{
         AED{
@@ -1438,5 +1439,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/af_NA.txt b/icu4c/source/data/curr/af_NA.txt
index 77de338..8789fb2 100644
--- a/icu4c/source/data/curr/af_NA.txt
+++ b/icu4c/source/data/curr/af_NA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 af_NA{
     Currencies{
         NAD{
@@ -7,5 +8,4 @@
             "Namibiese dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/agq.txt b/icu4c/source/data/curr/agq.txt
index 7041871..41a13d1 100644
--- a/icu4c/source/data/curr/agq.txt
+++ b/icu4c/source/data/curr/agq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 agq{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Dɔlà è Zìmbagbɛ̀",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ak.txt b/icu4c/source/data/curr/ak.txt
index 2970766..2c994b5 100644
--- a/icu4c/source/data/curr/ak.txt
+++ b/icu4c/source/data/curr/ak.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ak{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Zimbabwe Dɔla",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/am.txt b/icu4c/source/data/curr/am.txt
index 86ba172..21619e8 100644
--- a/icu4c/source/data/curr/am.txt
+++ b/icu4c/source/data/curr/am.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 am{
     Currencies{
         AED{
@@ -1433,5 +1434,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ar.txt b/icu4c/source/data/curr/ar.txt
index 8de4127..8f12c28 100644
--- a/icu4c/source/data/curr/ar.txt
+++ b/icu4c/source/data/curr/ar.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar{
     Currencies{
         ADP{
@@ -2453,5 +2454,4 @@
         two{"{0} {1}"}
         zero{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ar_AE.txt b/icu4c/source/data/curr/ar_AE.txt
index b71f1dc..b3bcee3 100644
--- a/icu4c/source/data/curr/ar_AE.txt
+++ b/icu4c/source/data/curr/ar_AE.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_AE{
     Currencies%narrow{
         BND{"$"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ar_DJ.txt b/icu4c/source/data/curr/ar_DJ.txt
index 6ce42ba..8be1e4b 100644
--- a/icu4c/source/data/curr/ar_DJ.txt
+++ b/icu4c/source/data/curr/ar_DJ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_DJ{
     Currencies{
         DJF{
@@ -7,5 +8,4 @@
             "فرنك جيبوتي",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ar_ER.txt b/icu4c/source/data/curr/ar_ER.txt
index 6558f1e..fcb24e0 100644
--- a/icu4c/source/data/curr/ar_ER.txt
+++ b/icu4c/source/data/curr/ar_ER.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_ER{
     Currencies{
         ERN{
@@ -7,5 +8,4 @@
             "ناكفا أريتري",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ar_KM.txt b/icu4c/source/data/curr/ar_KM.txt
index 66459eb..a0a3175 100644
--- a/icu4c/source/data/curr/ar_KM.txt
+++ b/icu4c/source/data/curr/ar_KM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_KM{
     Currencies{
         KMF{
@@ -7,5 +8,4 @@
             "فرنك جزر القمر",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ar_LB.txt b/icu4c/source/data/curr/ar_LB.txt
index 76833d9..c4ef6fc 100644
--- a/icu4c/source/data/curr/ar_LB.txt
+++ b/icu4c/source/data/curr/ar_LB.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_LB{
     Currencies{
         SDG{
@@ -7,5 +8,4 @@
             "جنيه سوداني",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ar_SA.txt b/icu4c/source/data/curr/ar_SA.txt
index d65944b..a848e8b 100644
--- a/icu4c/source/data/curr/ar_SA.txt
+++ b/icu4c/source/data/curr/ar_SA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/ar_SO.txt b/icu4c/source/data/curr/ar_SO.txt
index 269168a..4d7ff47 100644
--- a/icu4c/source/data/curr/ar_SO.txt
+++ b/icu4c/source/data/curr/ar_SO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_SO{
     Currencies{
         SOS{
@@ -7,5 +8,4 @@
             "شلن صومالي",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ar_SS.txt b/icu4c/source/data/curr/ar_SS.txt
index 516d535..4b1e16c 100644
--- a/icu4c/source/data/curr/ar_SS.txt
+++ b/icu4c/source/data/curr/ar_SS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_SS{
     Currencies{
         GBP{
@@ -11,5 +12,4 @@
             "جنيه جنوب السودان",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ars.txt b/icu4c/source/data/curr/ars.txt
index 1f49ca1..92183f5 100644
--- a/icu4c/source/data/curr/ars.txt
+++ b/icu4c/source/data/curr/ars.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ars{
     "%%ALIAS"{"ar_SA"}
 }
diff --git a/icu4c/source/data/curr/as.txt b/icu4c/source/data/curr/as.txt
index f0a5358..293ef81 100644
--- a/icu4c/source/data/curr/as.txt
+++ b/icu4c/source/data/curr/as.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 as{
     Currencies{
         AED{
@@ -1384,5 +1385,4 @@
             other{"জাম্বিয়ান কোৱাচা"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/asa.txt b/icu4c/source/data/curr/asa.txt
index 5710650..7746dbf 100644
--- a/icu4c/source/data/curr/asa.txt
+++ b/icu4c/source/data/curr/asa.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 asa{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "dola ya Dhimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ast.txt b/icu4c/source/data/curr/ast.txt
index cff1f68..9a9e98e 100644
--- a/icu4c/source/data/curr/ast.txt
+++ b/icu4c/source/data/curr/ast.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ast{
     Currencies{
         ADP{
@@ -2520,5 +2521,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/az.txt b/icu4c/source/data/curr/az.txt
index 2432e2e..002635f 100644
--- a/icu4c/source/data/curr/az.txt
+++ b/icu4c/source/data/curr/az.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az{
     Currencies{
         ADP{
@@ -2261,5 +2262,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/az_AZ.txt b/icu4c/source/data/curr/az_AZ.txt
index caf84c0..8932e86 100644
--- a/icu4c/source/data/curr/az_AZ.txt
+++ b/icu4c/source/data/curr/az_AZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_AZ{
     "%%ALIAS"{"az_Latn_AZ"}
 }
diff --git a/icu4c/source/data/curr/az_Cyrl.txt b/icu4c/source/data/curr/az_Cyrl.txt
index 338dbaa..bb56a2e 100644
--- a/icu4c/source/data/curr/az_Cyrl.txt
+++ b/icu4c/source/data/curr/az_Cyrl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_Cyrl{
     %%Parent{"root"}
     Currencies{
@@ -11,5 +12,4 @@
     Currencies%variant{
         AZN{"ман."}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/az_Latn.txt b/icu4c/source/data/curr/az_Latn.txt
index 6022c58..6464d2e 100644
--- a/icu4c/source/data/curr/az_Latn.txt
+++ b/icu4c/source/data/curr/az_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/az_Latn_AZ.txt b/icu4c/source/data/curr/az_Latn_AZ.txt
index 36c6e61..3963c91 100644
--- a/icu4c/source/data/curr/az_Latn_AZ.txt
+++ b/icu4c/source/data/curr/az_Latn_AZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/bas.txt b/icu4c/source/data/curr/bas.txt
index 466ae06..abf7e1a 100644
--- a/icu4c/source/data/curr/bas.txt
+++ b/icu4c/source/data/curr/bas.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bas{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Dɔ̀lâr sìmbàbwê",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/be.txt b/icu4c/source/data/curr/be.txt
index 05cf842..d53397c 100644
--- a/icu4c/source/data/curr/be.txt
+++ b/icu4c/source/data/curr/be.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 be{
     Currencies{
         AED{
@@ -1711,5 +1712,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/bem.txt b/icu4c/source/data/curr/bem.txt
index 1965dfa..62244f1 100644
--- a/icu4c/source/data/curr/bem.txt
+++ b/icu4c/source/data/curr/bem.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bem{
     Currencies{
         ZMW{
@@ -7,5 +8,4 @@
             "ZMW",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/bez.txt b/icu4c/source/data/curr/bez.txt
index 258ea72..11606a3 100644
--- a/icu4c/source/data/curr/bez.txt
+++ b/icu4c/source/data/curr/bez.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bez{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Lupila lwa Huzimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/bg.txt b/icu4c/source/data/curr/bg.txt
index 9bec70e..ed56528 100644
--- a/icu4c/source/data/curr/bg.txt
+++ b/icu4c/source/data/curr/bg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bg{
     Currencies{
         ADP{
@@ -228,7 +229,7 @@
         }
         CNH{
             "CNH",
-            "Китайски ренминби юан (offshore)",
+            "Китайски юан (офшорен)",
         }
         CNY{
             "CNY",
@@ -340,7 +341,7 @@
         }
         FKP{
             "FKP",
-            "Фолклендска лира",
+            "Фолкландска лира",
         }
         FRF{
             "FRF",
@@ -568,7 +569,7 @@
         }
         MDL{
             "MDL",
-            "Молдовско леу",
+            "Молдовска лея",
         }
         MGA{
             "MGA",
@@ -588,7 +589,7 @@
         }
         MMK{
             "MMK",
-            "Мианмарски кият",
+            "Мианмарски киат",
         }
         MNT{
             "MNT",
@@ -620,7 +621,7 @@
         }
         MWK{
             "MWK",
-            "Малавийска квача",
+            "Малавийска куача",
         }
         MXN{
             "MXN",
@@ -900,7 +901,7 @@
         }
         UAH{
             "UAH",
-            "Украинска хривня",
+            "Украинска гривня",
         }
         UAK{
             "UAK",
@@ -1088,9 +1089,12 @@
         }
     }
     Currencies%narrow{
+        AFN{"Af"}
+        AMD{"AMD"}
         AOA{"Kz"}
         ARS{"ARS"}
         AUD{"AUD"}
+        AZN{"AZN"}
         BAM{"KM"}
         BBD{"BBD"}
         BDT{"BDT"}
@@ -1118,6 +1122,7 @@
         FKP{"FKP"}
         GBP{"£"}
         GEL{"₾"}
+        GHS{"GHS"}
         GIP{"GIP"}
         GNF{"FG"}
         GTQ{"Q"}
@@ -1381,8 +1386,8 @@
             other{"чилийски песо"}
         }
         CNH{
-            one{"китайски ренминби юан (offshore)"}
-            other{"китайски ренминби юан (offshore)"}
+            one{"китайски юан (офшорен)"}
+            other{"китайски юана (офшорни)"}
         }
         CNY{
             one{"китайски юан"}
@@ -1477,8 +1482,8 @@
             other{"фиджийски долара"}
         }
         FKP{
-            one{"фолклендска лира"}
-            other{"фолклендски лири"}
+            one{"фолкландска лира"}
+            other{"фолкландски лири"}
         }
         FRF{
             one{"френски франк"}
@@ -1681,8 +1686,8 @@
             other{"марокански франка"}
         }
         MDL{
-            one{"молдовско леу"}
-            other{"молдовски леу"}
+            one{"молдовска лея"}
+            other{"молдовски леи"}
         }
         MGA{
             one{"малгашко ариари"}
@@ -1697,8 +1702,8 @@
             other{"македонски денара"}
         }
         MMK{
-            one{"мианмарски кият"}
-            other{"мианмарски кията"}
+            one{"мианмарски киат"}
+            other{"мианмарски киата"}
         }
         MNT{
             one{"монголски тугрик"}
@@ -1729,8 +1734,8 @@
             other{"малдивски руфии"}
         }
         MWK{
-            one{"малавийска квача"}
-            other{"малавийски квачи"}
+            one{"малавийска куача"}
+            other{"малавийски куачи"}
         }
         MXN{
             one{"мексиканско песо"}
@@ -1997,8 +2002,8 @@
             other{"танзанийски шилинга"}
         }
         UAH{
-            one{"украинска хривня"}
-            other{"украински хривни"}
+            one{"украинска гривня"}
+            other{"украински гривни"}
         }
         UAK{
             one{"украински карбованец"}
@@ -2129,5 +2134,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/bm.txt b/icu4c/source/data/curr/bm.txt
index 8a2de2d..dd373ae 100644
--- a/icu4c/source/data/curr/bm.txt
+++ b/icu4c/source/data/curr/bm.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bm{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "zimbabuwe Dolar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/bn.txt b/icu4c/source/data/curr/bn.txt
index b3565f9..c1ff313 100644
--- a/icu4c/source/data/curr/bn.txt
+++ b/icu4c/source/data/curr/bn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bn{
     Currencies{
         ADP{
@@ -1853,5 +1854,4 @@
             other{"জাম্বিয়ান কওয়াচা"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/bo.txt b/icu4c/source/data/curr/bo.txt
index 66c0318..e6fabb5 100644
--- a/icu4c/source/data/curr/bo.txt
+++ b/icu4c/source/data/curr/bo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bo{
     Currencies{
         CNY{
@@ -19,5 +20,4 @@
             "མ་རྟོགས་པའི་ནུས་མེད་དངུལ་ལོར",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/bo_IN.txt b/icu4c/source/data/curr/bo_IN.txt
index 178c7c4..23996f9 100644
--- a/icu4c/source/data/curr/bo_IN.txt
+++ b/icu4c/source/data/curr/bo_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bo_IN{
     Currencies{
         CNY{
@@ -7,5 +8,4 @@
             "ཡུ་ཨན་",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/br.txt b/icu4c/source/data/curr/br.txt
index 761735f..e88bc40 100644
--- a/icu4c/source/data/curr/br.txt
+++ b/icu4c/source/data/curr/br.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 br{
     Currencies{
         ADP{
@@ -258,6 +259,10 @@
             "CLP",
             "peso Chile",
         }
+        CNH{
+            "CNH",
+            "yuan Sina (diavaez)",
+        }
         CNX{
             "CNX",
             "dollar Bank poblel Sina",
@@ -1134,6 +1139,10 @@
             "XTS",
             "kod moneiz amprouiñ",
         }
+        XUA{
+            "XUA",
+            "unanenn jediñ BAD",
+        }
         XXX{
             "XXX",
             "moneiz dianav",
@@ -1656,6 +1665,13 @@
             other{"peso Chile"}
             two{"beso Chile"}
         }
+        CNH{
+            few{"yuan Sina (diavaez)"}
+            many{"a yuanoù Sina (diavaez)"}
+            one{"yuan Sina (diavaez)"}
+            other{"yuan Sina (diavaez)"}
+            two{"yuan Sina (diavaez)"}
+        }
         CNX{
             few{"dollar Bank poblel Sina"}
             many{"a zollaroù Bank poblel Sina"}
@@ -3063,6 +3079,13 @@
             other{"unanenn voneiz amprouiñ"}
             two{"unanenn voneiz amprouiñ"}
         }
+        XUA{
+            few{"unanenn jediñ BAD"}
+            many{"a unanennoù jediñ BAD"}
+            one{"unanenn jediñ BAD"}
+            other{"unanenn jediñ BAD"}
+            two{"unanenn jediñ BAD"}
+        }
         XXX{
             few{"(moneiz dianav)"}
             many{"(moneiz dianav)"}
@@ -3155,5 +3178,4 @@
         other{"{0} {1}"}
         two{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/brx.txt b/icu4c/source/data/curr/brx.txt
index 0f778df..4e7c4dc 100644
--- a/icu4c/source/data/curr/brx.txt
+++ b/icu4c/source/data/curr/brx.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 brx{
     Currencies{
         ADP{
@@ -1087,5 +1088,4 @@
             "ज़ीम्बाबवेई डॉलर",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/bs.txt b/icu4c/source/data/curr/bs.txt
index 191132b..cd0b25c 100644
--- a/icu4c/source/data/curr/bs.txt
+++ b/icu4c/source/data/curr/bs.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs{
     Currencies{
         ADP{
@@ -84,12 +85,16 @@
         }
         BAD{
             "BAD",
-            "Bosansko-Hercegovački dinar",
+            "Bosanskohercegovački dinar",
         }
         BAM{
             "KM",
             "Bosanskohercegovačka konvertibilna marka",
         }
+        BAN{
+            "BAN",
+            "Bosanskohercegovački novi dinar",
+        }
         BBD{
             "BBD",
             "Barbadoski dolar",
@@ -114,6 +119,10 @@
             "BGL",
             "Bugarski tvrdi lev",
         }
+        BGM{
+            "BGM",
+            "Bugarski socijalistički lev",
+        }
         BGN{
             "BGN",
             "Bugarski lev",
@@ -234,6 +243,10 @@
             "CHW",
             "WIR franak",
         }
+        CLE{
+            "CLE",
+            "Čileanski eskudo",
+        }
         CLF{
             "CLF",
             "Čileanski unidades de fomento",
@@ -246,6 +259,10 @@
             "CNH",
             "Kineski juan (izvanteritorijalni)",
         }
+        CNX{
+            "CNX",
+            "Dolar kineske narodne banke",
+        }
         CNY{
             "CNY",
             "Kineski juan",
@@ -254,6 +271,10 @@
             "COP",
             "Kolumbijski pezos",
         }
+        COU{
+            "COU",
+            "Kolumbijski Unidade real de valor",
+        }
         CRC{
             "CRC",
             "Kostarikanski kolon",
@@ -610,6 +631,14 @@
             "MAF",
             "Marokanski franak",
         }
+        MCF{
+            "MCF",
+            "Monegaskaški franak",
+        }
+        MDC{
+            "MDC",
+            "Moldavski kupon",
+        }
         MDL{
             "MDL",
             "Moldavski lej",
@@ -1122,6 +1151,10 @@
             "YUN",
             "Jugoslovenski konvertibilni dinar",
         }
+        YUR{
+            "YUR",
+            "Jugoslovenski reformirani dinar",
+        }
         ZAL{
             "ZAL",
             "Južnoafrički rand (finansijski)",
@@ -1324,6 +1357,16 @@
             one{"argentinski austral"}
             other{"argentinski australs"}
         }
+        ARL{
+            few{"argentinska pezosa leja"}
+            one{"argentinski pezos lej"}
+            other{"argentinskih pezosa leja"}
+        }
+        ARM{
+            few{"argentinska pezosa moned nacional"}
+            one{"argentinski pezos monedo nacional"}
+            other{"argentinskih pezosa monedo nacional"}
+        }
         ARP{
             few{"argentinska pezosa (1983–1985)"}
             one{"argentinski pezo (1983–1985)"}
@@ -1360,15 +1403,20 @@
             other{"azerbejdžanskih manata"}
         }
         BAD{
-            few{"Bosansko-Hercegovačka dinara"}
-            one{"bosansko-hercegovački dinar"}
-            other{"bosansko-hercegovačkih dinara"}
+            few{"Bosanskohercegovačka dinara"}
+            one{"bosanskohercegovački dinar"}
+            other{"bosanskohercegovačkih dinara"}
         }
         BAM{
             few{"bosanskohercegovačke konvertibilne marke"}
             one{"bosanskohercegovačka konvertibilna marka"}
             other{"bosanskohercegovačkih konvertibilnih maraka"}
         }
+        BAN{
+            few{"bosanskohercegovački novi dinari"}
+            one{"bosanskohercegovački novi dinar"}
+            other{"bosanskohercegovački novi dinar"}
+        }
         BBD{
             few{"barbadoska dolara"}
             one{"barbadoski dolar"}
@@ -1399,6 +1447,11 @@
             one{"bugarski tvrdi lev"}
             other{"bugarskih tvrdih leva"}
         }
+        BGM{
+            few{"bugarska socijalistička leva"}
+            one{"bugarski socijalistički lev"}
+            other{"bugarskih socijalističkih leva"}
+        }
         BGN{
             few{"bugarska leva"}
             one{"bugarski lev"}
@@ -1549,6 +1602,11 @@
             one{"WIR franak"}
             other{"WIR franak"}
         }
+        CLE{
+            few{"čileanska eskuda"}
+            one{"čileanski eskudo"}
+            other{"čileanskih eskuda"}
+        }
         CLF{
             few{"čileanska unidades de fomentos"}
             one{"čileanski unidades de fomentos"}
@@ -1564,6 +1622,11 @@
             one{"kineski juan (izvanteritorijalni)"}
             other{"kineskih juana (izvanteritorijalni)"}
         }
+        CNX{
+            few{"dolara kineske narodne banke"}
+            one{"dolar kineske narodne banke"}
+            other{"dolara kineske narodne banke"}
+        }
         CNY{
             few{"kineska juana"}
             one{"kineski juan"}
@@ -2019,6 +2082,16 @@
             one{"marokanski franak"}
             other{"marokanski franak"}
         }
+        MCF{
+            few{"monegaskaška franka"}
+            one{"monegaskaški franak"}
+            other{"monegaskaških franaka"}
+        }
+        MDC{
+            few{"moldovanska kupona"}
+            one{"moldovanski kupon"}
+            other{"moldovanskih kupona"}
+        }
         MDL{
             few{"moldavska leja"}
             one{"moldavski lej"}
@@ -2659,6 +2732,11 @@
             one{"jugoslovenski konvertibilni dinar"}
             other{"jugoslovenskih konvertibilnih dinara"}
         }
+        YUR{
+            few{"jugoslovenska reformirana dinara"}
+            one{"jugoslovenski reformirani dinar"}
+            other{"jugoslovenskih reformiranih dinara"}
+        }
         ZAL{
             few{"južnoafrička randa (financijska)"}
             one{"južnoafrički rand (financijski)"}
@@ -2710,5 +2788,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/bs_BA.txt b/icu4c/source/data/curr/bs_BA.txt
index e5e3a46..70619a1 100644
--- a/icu4c/source/data/curr/bs_BA.txt
+++ b/icu4c/source/data/curr/bs_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_BA{
     "%%ALIAS"{"bs_Latn_BA"}
 }
diff --git a/icu4c/source/data/curr/bs_Cyrl.txt b/icu4c/source/data/curr/bs_Cyrl.txt
index c820e1f..0d3ad69 100644
--- a/icu4c/source/data/curr/bs_Cyrl.txt
+++ b/icu4c/source/data/curr/bs_Cyrl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_Cyrl{
     %%Parent{"root"}
     Currencies{
@@ -2539,5 +2540,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/bs_Latn.txt b/icu4c/source/data/curr/bs_Latn.txt
index d1a6b5e..f256112 100644
--- a/icu4c/source/data/curr/bs_Latn.txt
+++ b/icu4c/source/data/curr/bs_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/bs_Latn_BA.txt b/icu4c/source/data/curr/bs_Latn_BA.txt
index 3ef1cc4..04342dc 100644
--- a/icu4c/source/data/curr/bs_Latn_BA.txt
+++ b/icu4c/source/data/curr/bs_Latn_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/ca.txt b/icu4c/source/data/curr/ca.txt
index 91480d8..1166a57 100644
--- a/icu4c/source/data/curr/ca.txt
+++ b/icu4c/source/data/curr/ca.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ca{
     Currencies{
         ADP{
@@ -2502,5 +2503,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ca_FR.txt b/icu4c/source/data/curr/ca_FR.txt
index 6c09d0f..71d69a5 100644
--- a/icu4c/source/data/curr/ca_FR.txt
+++ b/icu4c/source/data/curr/ca_FR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ca_FR{
     Currencies{
         FRF{
@@ -7,5 +8,4 @@
             "franc francès",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ccp.txt b/icu4c/source/data/curr/ccp.txt
index bf18fda..5772616 100644
--- a/icu4c/source/data/curr/ccp.txt
+++ b/icu4c/source/data/curr/ccp.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ccp{
     Currencies{
         ADP{
@@ -1804,5 +1805,4 @@
             other{"𑄎𑄟𑄴𑄝𑄨𑄠𑄚𑄴 𑄇𑄧𑄤𑄌"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ce.txt b/icu4c/source/data/curr/ce.txt
index fa4e12b..31bee86 100644
--- a/icu4c/source/data/curr/ce.txt
+++ b/icu4c/source/data/curr/ce.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ce{
     Currencies{
         AED{
@@ -1379,5 +1380,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ceb.txt b/icu4c/source/data/curr/ceb.txt
index 04c1977..51bc231 100644
--- a/icu4c/source/data/curr/ceb.txt
+++ b/icu4c/source/data/curr/ceb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ceb{
     Currencies{
         AED{
@@ -612,7 +613,7 @@
         }
         XXX{
             "¤",
-            "Wala Nahibaluan nga Currency",
+            "Wala Nailhi nga Kwarta",
         }
         YER{
             "YER",
@@ -1237,8 +1238,8 @@
             other{"Mga CFP franc"}
         }
         XXX{
-            one{"(wala nahibaluan nga yunit sa currency)"}
-            other{"(wala nahibaluan nga currency)"}
+            one{"(wala mailhi nga yunit sa kwarta)"}
+            other{"(wala mailhi nga kwarta)"}
         }
         YER{
             one{"Yemeni rial"}
@@ -1257,5 +1258,4 @@
         one{"{1} {0}"}
         other{"{1} {0}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/cgg.txt b/icu4c/source/data/curr/cgg.txt
index 2fb79d2..de1841d 100644
--- a/icu4c/source/data/curr/cgg.txt
+++ b/icu4c/source/data/curr/cgg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cgg{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Doora ya Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/chr.txt b/icu4c/source/data/curr/chr.txt
index 2d514b0..7c637d8 100644
--- a/icu4c/source/data/curr/chr.txt
+++ b/icu4c/source/data/curr/chr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 chr{
     Currencies{
         AED{
@@ -1388,5 +1389,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ckb.txt b/icu4c/source/data/curr/ckb.txt
index 0b3f209..1774f5d 100644
--- a/icu4c/source/data/curr/ckb.txt
+++ b/icu4c/source/data/curr/ckb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ckb{
     Currencies{
         IQD{
@@ -7,5 +8,4 @@
             "IQD",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/cs.txt b/icu4c/source/data/curr/cs.txt
index 4d6996e..0e128e9 100644
--- a/icu4c/source/data/curr/cs.txt
+++ b/icu4c/source/data/curr/cs.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cs{
     Currencies{
         ADP{
@@ -1212,9 +1213,12 @@
         }
     }
     Currencies%narrow{
+        AFN{"؋"}
+        AMD{"֏"}
         AOA{"Kz"}
         ARS{"$"}
         AUD{"$"}
+        AZN{"₼"}
         BAM{"KM"}
         BBD{"$"}
         BDT{"৳"}
@@ -1243,6 +1247,7 @@
         FKP{"£"}
         GBP{"£"}
         GEL{"₾"}
+        GHS{"GH₵"}
         GIP{"£"}
         GNF{"FG"}
         GTQ{"Q"}
@@ -3123,5 +3128,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/cy.txt b/icu4c/source/data/curr/cy.txt
index 9910d79..73ee0ea 100644
--- a/icu4c/source/data/curr/cy.txt
+++ b/icu4c/source/data/curr/cy.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cy{
     Currencies{
         AED{
@@ -640,7 +641,7 @@
         }
         MOP{
             "MOP",
-            "Pataca Macau",
+            "pataca Macau",
         }
         MRO{
             "MRO",
@@ -1627,7 +1628,7 @@
         CAD{
             few{"doler Canada"}
             many{"doler Canada"}
-            one{"ddoler Canada"}
+            one{"doler Canada"}
             other{"doler Canada"}
             two{"doler Canada"}
             zero{"doler Canada"}
@@ -1851,7 +1852,7 @@
         EGP{
             few{"punt yr Aifft"}
             many{"punt yr Aifft"}
-            one{"bunt yr Aifft"}
+            one{"punt yr Aifft"}
             other{"punt yr Aifft"}
             two{"bunt yr Aifft"}
             zero{"punt yr Aifft"}
@@ -2755,7 +2756,7 @@
         SDG{
             few{"punt Sudan"}
             many{"punt Sudan"}
-            one{"bunt Sudan"}
+            one{"punt Sudan"}
             other{"punt Sudan"}
             two{"bunt Sudan"}
             zero{"punt Sudan"}
@@ -2787,7 +2788,7 @@
         SHP{
             few{"punt St. Helena"}
             many{"punt St. Helena"}
-            one{"bunt St. Helena"}
+            one{"punt St. Helena"}
             other{"punt St. Helena"}
             two{"bunt St. Helena"}
             zero{"punt St. Helena"}
@@ -3273,5 +3274,4 @@
         two{"{0} {1}"}
         zero{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/da.txt b/icu4c/source/data/curr/da.txt
index 9285517..0fd8d9c 100644
--- a/icu4c/source/data/curr/da.txt
+++ b/icu4c/source/data/curr/da.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 da{
     Currencies{
         ADP{
@@ -892,7 +893,7 @@
         }
         TTD{
             "TTD",
-            "dollar fra Trinidad og Tobago",
+            "trinidadisk dollar",
         }
         TWD{
             "NT$",
@@ -1217,7 +1218,7 @@
             other{"armenske dram"}
         }
         ANG{
-            one{"Nederlandsk Antiller-gylden"}
+            one{"Nederlandske Antiller-gylden"}
             other{"Nederlandske Antiller-gylden"}
         }
         AOA{
@@ -1878,7 +1879,7 @@
         }
         OMR{
             one{"omansk rial"}
-            other{"omanske rial"}
+            other{"omanske rialer"}
         }
         PAB{
             one{"panamansk balboa"}
@@ -2081,8 +2082,8 @@
             other{"tyrkiske lira"}
         }
         TTD{
-            one{"dollar fra Trinidad og Tobago"}
-            other{"dollar fra Trinidad og Tobago"}
+            one{"trinidadisk dollar"}
+            other{"trinidadiske dollar"}
         }
         TWD{
             one{"ny taiwansk dollar"}
@@ -2249,5 +2250,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/dav.txt b/icu4c/source/data/curr/dav.txt
index c86ea1a..ccaf715 100644
--- a/icu4c/source/data/curr/dav.txt
+++ b/icu4c/source/data/curr/dav.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dav{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Dola ya Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/de.txt b/icu4c/source/data/curr/de.txt
index c30fc1f..1784af4 100644
--- a/icu4c/source/data/curr/de.txt
+++ b/icu4c/source/data/curr/de.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de{
     Currencies{
         ADP{
@@ -96,7 +97,7 @@
         }
         BAM{
             "BAM",
-            "Bosnien und Herzegowina Konvertierbare Mark",
+            "Konvertible Mark Bosnien und Herzegowina",
         }
         BAN{
             "BAN",
@@ -264,7 +265,7 @@
         }
         CNH{
             "CNH",
-            "Renminbi Yuan (Off–Shore)",
+            "Renminbi-Yuan (Offshore)",
         }
         CNX{
             "CNX",
@@ -796,7 +797,7 @@
         }
         PGK{
             "PGK",
-            "Papua-Neuguineischer Kina",
+            "Papua-neuguineischer Kina",
         }
         PHP{
             "PHP",
@@ -888,7 +889,7 @@
         }
         SHP{
             "SHP",
-            "St. Helena-Pfund",
+            "St.-Helena-Pfund",
         }
         SIT{
             "SIT",
@@ -984,7 +985,7 @@
         }
         TTD{
             "TTD",
-            "Trinidad und Tobago-Dollar",
+            "Trinidad-und-Tobago-Dollar",
         }
         TWD{
             "NT$",
@@ -1212,6 +1213,7 @@
         }
     }
     Currencies%narrow{
+        AFN{"؋"}
         AOA{"Kz"}
         ARS{"$"}
         AUD{"$"}
@@ -1243,6 +1245,7 @@
         FKP{"Fl£"}
         GBP{"£"}
         GEL{"₾"}
+        GHS{"₵"}
         GIP{"£"}
         GNF{"F.G."}
         GTQ{"Q"}
@@ -1407,8 +1410,8 @@
             other{"Bosnien und Herzegowina Dinar (1992–1994)"}
         }
         BAM{
-            one{"Bosnien und Herzegowina Konvertierbare Mark"}
-            other{"Bosnien und Herzegowina Konvertierbare Mark"}
+            one{"Konvertible Mark Bosnien und Herzegowina"}
+            other{"Konvertible Mark Bosnien und Herzegowina"}
         }
         BAN{
             one{"Bosnien und Herzegowina Neuer Dinar (1994–1997)"}
@@ -1575,8 +1578,8 @@
             other{"Chilenische Pesos"}
         }
         CNH{
-            one{"Renminbi Yuan (Off–Shore)"}
-            other{"Renminbi Yuan (Off–Shore)"}
+            one{"Renminbi-Yuan (Offshore)"}
+            other{"Renminbi-Yuan (Offshore)"}
         }
         CNX{
             one{"Dollar der Chinesischen Volksbank"}
@@ -2107,8 +2110,8 @@
             other{"Peruanische Sol (1863–1965)"}
         }
         PGK{
-            one{"Papua-Neuguineischer Kina"}
-            other{"Papua-Neuguineische Kina"}
+            one{"Papua-neuguineischer Kina"}
+            other{"Papua-neuguineischer Kina"}
         }
         PHP{
             one{"Philippinischer Peso"}
@@ -2199,8 +2202,8 @@
             other{"Singapur-Dollar"}
         }
         SHP{
-            one{"St. Helena-Pfund"}
-            other{"St. Helena-Pfund"}
+            one{"St.-Helena-Pfund"}
+            other{"St.-Helena-Pfund"}
         }
         SIT{
             one{"Slowenischer Tolar"}
@@ -2295,8 +2298,8 @@
             other{"Türkische Lira"}
         }
         TTD{
-            one{"Trinidad und Tobago-Dollar"}
-            other{"Trinidad und Tobago-Dollar"}
+            one{"Trinidad-und-Tobago-Dollar"}
+            other{"Trinidad-und-Tobago-Dollar"}
         }
         TWD{
             one{"Neuer Taiwan-Dollar"}
@@ -2527,5 +2530,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/de_CH.txt b/icu4c/source/data/curr/de_CH.txt
index b5c29a2..5e5f72a 100644
--- a/icu4c/source/data/curr/de_CH.txt
+++ b/icu4c/source/data/curr/de_CH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de_CH{
     Currencies{
         BYN{
@@ -36,5 +37,4 @@
             other{"São-toméischer Dobra (2018)"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/de_LI.txt b/icu4c/source/data/curr/de_LI.txt
index ae863f9..ed2105d 100644
--- a/icu4c/source/data/curr/de_LI.txt
+++ b/icu4c/source/data/curr/de_LI.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de_LI{
     Currencies{
         EUR{
@@ -7,5 +8,4 @@
             "Euro",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/de_LU.txt b/icu4c/source/data/curr/de_LU.txt
index cf0ba0f..1a0f53a 100644
--- a/icu4c/source/data/curr/de_LU.txt
+++ b/icu4c/source/data/curr/de_LU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de_LU{
     Currencies{
         LUF{
@@ -12,5 +13,4 @@
             }
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/dje.txt b/icu4c/source/data/curr/dje.txt
index 84a1559..fab8d1d 100644
--- a/icu4c/source/data/curr/dje.txt
+++ b/icu4c/source/data/curr/dje.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dje{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Zimbabwe Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/doi.txt b/icu4c/source/data/curr/doi.txt
new file mode 100644
index 0000000..f36d3c3
--- /dev/null
+++ b/icu4c/source/data/curr/doi.txt
@@ -0,0 +1,95 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+doi{
+    Currencies{
+        BRL{
+            "R$",
+            "ब्राजीली रियाल",
+        }
+        CNY{
+            "CN¥",
+            "चीनी युआन",
+        }
+        EUR{
+            "€",
+            "यूरो",
+        }
+        GBP{
+            "£",
+            "ब्रिटिश पाउंड",
+        }
+        INR{
+            "₹",
+            "भारती रपेऽ",
+        }
+        JPY{
+            "¥",
+            "जापानी येन",
+        }
+        RUB{
+            "RUB",
+            "रूसी रूबल",
+        }
+        USD{
+            "$",
+            "यूएस डालर",
+        }
+        XXX{
+            "¤",
+            "अनजांती करंसी",
+        }
+    }
+    Currencies%narrow{
+        BRL{"R$"}
+        CNY{"¥"}
+        EUR{"€"}
+        GBP{"£"}
+        INR{"₹"}
+        JPY{"¥"}
+        RUB{"₽"}
+        USD{"$"}
+    }
+    CurrencyPlurals{
+        BRL{
+            one{"ब्राजीली रियाल"}
+            other{"ब्राजीली रियाल"}
+        }
+        CNY{
+            one{"चीनी युआन"}
+            other{"चीनी युआन"}
+        }
+        EUR{
+            one{"यूरो"}
+            other{"यूरो"}
+        }
+        GBP{
+            one{"ब्रिटिश पाउंड"}
+            other{"ब्रिटिश पाउंड"}
+        }
+        INR{
+            one{"भारती रपेऽ"}
+            other{"भारती रपेऽ"}
+        }
+        JPY{
+            one{"जापानी येन"}
+            other{"जापानी येन"}
+        }
+        RUB{
+            one{"रूसी रूबल"}
+            other{"रूसी रूबल"}
+        }
+        USD{
+            one{"यूएस डालर"}
+            other{"यूएस डालर"}
+        }
+        XXX{
+            one{"(अनजांती करंसी)"}
+            other{"(अनजांती करंसी)"}
+        }
+    }
+    CurrencyUnitPatterns{
+        one{"{0} {1}"}
+        other{"{0} {1}"}
+    }
+}
diff --git a/icu4c/source/data/curr/dsb.txt b/icu4c/source/data/curr/dsb.txt
index 373f4a0..a0c8ed7 100644
--- a/icu4c/source/data/curr/dsb.txt
+++ b/icu4c/source/data/curr/dsb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dsb{
     Currencies{
         ADP{
@@ -1884,5 +1885,4 @@
         other{"{0} {1}"}
         two{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/dua.txt b/icu4c/source/data/curr/dua.txt
index ba39bd9..bf646aa 100644
--- a/icu4c/source/data/curr/dua.txt
+++ b/icu4c/source/data/curr/dua.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dua{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/dyo.txt b/icu4c/source/data/curr/dyo.txt
index e2f3c64..2932cf2 100644
--- a/icu4c/source/data/curr/dyo.txt
+++ b/icu4c/source/data/curr/dyo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dyo{
     Currencies{
         AOA{
@@ -123,5 +124,4 @@
             "seefa yati BCEAO",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/dz.txt b/icu4c/source/data/curr/dz.txt
index da1e4db..edcec0b 100644
--- a/icu4c/source/data/curr/dz.txt
+++ b/icu4c/source/data/curr/dz.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dz{
     Currencies{
         AED{
@@ -307,5 +308,4 @@
             "སཱའུཐ་ ཨཕ་རི་ཀ་གི་དངུལ་ རཱནད",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ebu.txt b/icu4c/source/data/curr/ebu.txt
index 1868b25..22859b1 100644
--- a/icu4c/source/data/curr/ebu.txt
+++ b/icu4c/source/data/curr/ebu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ebu{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Dola ya Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ee.txt b/icu4c/source/data/curr/ee.txt
index 8b5420d..9c36002 100644
--- a/icu4c/source/data/curr/ee.txt
+++ b/icu4c/source/data/curr/ee.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ee{
     Currencies{
         ADP{
@@ -2390,5 +2391,4 @@
         one{"{1} {0}"}
         other{"{1} {0}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/el.txt b/icu4c/source/data/curr/el.txt
index 662f480..1492980 100644
--- a/icu4c/source/data/curr/el.txt
+++ b/icu4c/source/data/curr/el.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 el{
     Currencies{
         ADP{
@@ -2266,5 +2267,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en.txt b/icu4c/source/data/curr/en.txt
index fc0c2f1..d30f42c 100644
--- a/icu4c/source/data/curr/en.txt
+++ b/icu4c/source/data/curr/en.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en{
     Currencies{
         ADP{
@@ -2433,5 +2434,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_001.txt b/icu4c/source/data/curr/en_001.txt
index f50d3e3..332928c 100644
--- a/icu4c/source/data/curr/en_001.txt
+++ b/icu4c/source/data/curr/en_001.txt
@@ -1,7 +1,12 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_001{
     Currencies{
+        BMD{
+            "BMD",
+            "Bermudian Dollar",
+        }
         BYB{
             "BYB",
             "Belarusian New Rouble (1994–1999)",
@@ -22,6 +27,10 @@
             "LVR",
             "Latvian Rouble",
         }
+        PHP{
+            "PHP",
+            "Philippine Peso",
+        }
         RUB{
             "RUB",
             "Russian Rouble",
@@ -44,6 +53,14 @@
         }
     }
     CurrencyPlurals{
+        AFN{
+            one{"Afghan afghani"}
+            other{"Afghan afghanis"}
+        }
+        BMD{
+            one{"Bermudian dollar"}
+            other{"Bermudian dollars"}
+        }
         BYB{
             one{"Belarusian new rouble (1994–1999)"}
             other{"Belarusian new roubles (1994–1999)"}
@@ -56,10 +73,26 @@
             one{"Belarusian rouble (2000–2016)"}
             other{"Belarusian roubles (2000–2016)"}
         }
+        ETB{
+            other{"Ethiopian birr"}
+        }
+        LSL{
+            other{"Lesotho maloti"}
+        }
         LVR{
             one{"Latvian rouble"}
             other{"Latvian roubles"}
         }
+        MGA{
+            other{"Malagasy ariary"}
+        }
+        MVR{
+            other{"Maldivian rufiyaa"}
+        }
+        PHP{
+            one{"Philippine peso"}
+            other{"Philippine pesos"}
+        }
         RUB{
             one{"Russian rouble"}
             other{"Russian roubles"}
@@ -76,6 +109,8 @@
             one{"Tajikistani rouble"}
             other{"Tajikistani roubles"}
         }
+        VUV{
+            other{"Vanuatu vatu"}
+        }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_150.txt b/icu4c/source/data/curr/en_150.txt
index 8c95661..db04c32 100644
--- a/icu4c/source/data/curr/en_150.txt
+++ b/icu4c/source/data/curr/en_150.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_150{
     %%Parent{"en_001"}
     Currencies{
@@ -13,5 +14,4 @@
             }
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_AE.txt b/icu4c/source/data/curr/en_AE.txt
index 53c95fc..8a6be9b 100644
--- a/icu4c/source/data/curr/en_AE.txt
+++ b/icu4c/source/data/curr/en_AE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AE{
     Currencies{
         AED{
@@ -7,5 +8,4 @@
             "United Arab Emirates Dirham",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_AG.txt b/icu4c/source/data/curr/en_AG.txt
index 7d9f7c0..c969a4c 100644
--- a/icu4c/source/data/curr/en_AG.txt
+++ b/icu4c/source/data/curr/en_AG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AG{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "East Caribbean Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_AI.txt b/icu4c/source/data/curr/en_AI.txt
index 229bd40..b8f3bb9 100644
--- a/icu4c/source/data/curr/en_AI.txt
+++ b/icu4c/source/data/curr/en_AI.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AI{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "East Caribbean Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_AT.txt b/icu4c/source/data/curr/en_AT.txt
index e4a6465..075c742 100644
--- a/icu4c/source/data/curr/en_AT.txt
+++ b/icu4c/source/data/curr/en_AT.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AT{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_AU.txt b/icu4c/source/data/curr/en_AU.txt
index c87984e..e612e66 100644
--- a/icu4c/source/data/curr/en_AU.txt
+++ b/icu4c/source/data/curr/en_AU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AU{
     %%Parent{"en_001"}
     Currencies{
@@ -369,7 +370,7 @@
         }
         PHP{
             "PHP",
-            "Philippine Piso",
+            "Philippine Peso",
         }
         PLN{
             "PLN",
@@ -553,7 +554,6 @@
         AUD{"$"}
         BDT{"Tk"}
         BND{"$"}
-        BOB{"$b"}
         BRL{"R$"}
         CLP{"$"}
         CNY{"¥"}
@@ -588,6 +588,10 @@
         VND{"₫"}
     }
     CurrencyPlurals{
+        AFN{
+            one{"Afghan Afghani"}
+            other{"Afghan Afghanis"}
+        }
         BAM{
             one{"Bosnia-Herzegovina convertible marka"}
             other{"Bosnia-Herzegovina convertible marka"}
@@ -608,6 +612,10 @@
             one{"CNH"}
             other{"CNH"}
         }
+        ETB{
+            one{"Ethiopian birr"}
+            other{"Ethiopian birrs"}
+        }
         EUR{
             one{"euro"}
             other{"euro"}
@@ -628,10 +636,18 @@
             one{"Laotian kip"}
             other{"Laotian kip"}
         }
+        LSL{
+            one{"Lesotho loti"}
+            other{"Lesotho lotis"}
+        }
         MKD{
             one{"Macedonian denar"}
             other{"Macedonian denar"}
         }
+        MVR{
+            one{"Maldivian rufiyaa"}
+            other{"Maldivian rufiyaas"}
+        }
         PGK{
             one{"Papua New Guinean kina"}
             other{"Papua New Guinean kinas"}
@@ -664,10 +680,13 @@
             one{"Vietnamese dong"}
             other{"Vietnamese dongs"}
         }
+        VUV{
+            one{"Vanuatu vatu"}
+            other{"Vanuatu vatus"}
+        }
         WST{
             one{"Samoan tala"}
             other{"Samoan talas"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_BB.txt b/icu4c/source/data/curr/en_BB.txt
index a45624e..b322ed8 100644
--- a/icu4c/source/data/curr/en_BB.txt
+++ b/icu4c/source/data/curr/en_BB.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BB{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Barbadian Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_BE.txt b/icu4c/source/data/curr/en_BE.txt
index ded6405..0e5fffa 100644
--- a/icu4c/source/data/curr/en_BE.txt
+++ b/icu4c/source/data/curr/en_BE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BE{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_BI.txt b/icu4c/source/data/curr/en_BI.txt
index 822f3c5..cb15f89 100644
--- a/icu4c/source/data/curr/en_BI.txt
+++ b/icu4c/source/data/curr/en_BI.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BI{
     Currencies{
         BIF{
@@ -7,5 +8,4 @@
             "Burundian Franc",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_BM.txt b/icu4c/source/data/curr/en_BM.txt
index cf9e04e..8decc37 100644
--- a/icu4c/source/data/curr/en_BM.txt
+++ b/icu4c/source/data/curr/en_BM.txt
@@ -1,12 +1,12 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BM{
     %%Parent{"en_001"}
     Currencies{
         BMD{
             "$",
-            "Bermudan Dollar",
+            "Bermudian Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_BS.txt b/icu4c/source/data/curr/en_BS.txt
index e425265..5504e2f 100644
--- a/icu4c/source/data/curr/en_BS.txt
+++ b/icu4c/source/data/curr/en_BS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BS{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Bahamian Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_BW.txt b/icu4c/source/data/curr/en_BW.txt
index bb3ed06..5c2879a 100644
--- a/icu4c/source/data/curr/en_BW.txt
+++ b/icu4c/source/data/curr/en_BW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BW{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Botswanan Pula",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_BZ.txt b/icu4c/source/data/curr/en_BZ.txt
index 0d1cdc8..8d7f4a0 100644
--- a/icu4c/source/data/curr/en_BZ.txt
+++ b/icu4c/source/data/curr/en_BZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BZ{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Belize Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_CA.txt b/icu4c/source/data/curr/en_CA.txt
index 686adcf..3405b35 100644
--- a/icu4c/source/data/curr/en_CA.txt
+++ b/icu4c/source/data/curr/en_CA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CA{
     %%Parent{"en_001"}
     Currencies{
@@ -12,11 +13,4 @@
             "Venezuelan Bolívar",
         }
     }
-    CurrencyPlurals{
-        ILS{
-            one{"Israeli new sheqel"}
-            other{"Israeli new sheqels"}
-        }
-    }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_CC.txt b/icu4c/source/data/curr/en_CC.txt
index 17ad4e3..e6ae7aa 100644
--- a/icu4c/source/data/curr/en_CC.txt
+++ b/icu4c/source/data/curr/en_CC.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CC{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Australian Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_CH.txt b/icu4c/source/data/curr/en_CH.txt
index 244edf2..2362921 100644
--- a/icu4c/source/data/curr/en_CH.txt
+++ b/icu4c/source/data/curr/en_CH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CH{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_CK.txt b/icu4c/source/data/curr/en_CK.txt
index 810ea3b..7e22560 100644
--- a/icu4c/source/data/curr/en_CK.txt
+++ b/icu4c/source/data/curr/en_CK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CK{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "New Zealand Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_CM.txt b/icu4c/source/data/curr/en_CM.txt
index bf63213..b7fdf6d 100644
--- a/icu4c/source/data/curr/en_CM.txt
+++ b/icu4c/source/data/curr/en_CM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_CX.txt b/icu4c/source/data/curr/en_CX.txt
index c25718c..6fec138 100644
--- a/icu4c/source/data/curr/en_CX.txt
+++ b/icu4c/source/data/curr/en_CX.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CX{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Australian Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_CY.txt b/icu4c/source/data/curr/en_CY.txt
index 21b11b7..d4e75c0 100644
--- a/icu4c/source/data/curr/en_CY.txt
+++ b/icu4c/source/data/curr/en_CY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CY{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_DE.txt b/icu4c/source/data/curr/en_DE.txt
index 2623614..0147e01 100644
--- a/icu4c/source/data/curr/en_DE.txt
+++ b/icu4c/source/data/curr/en_DE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DE{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_DG.txt b/icu4c/source/data/curr/en_DG.txt
index 95b8e88..10bd8d9 100644
--- a/icu4c/source/data/curr/en_DG.txt
+++ b/icu4c/source/data/curr/en_DG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_DK.txt b/icu4c/source/data/curr/en_DK.txt
index fdd576d..77fd9c1 100644
--- a/icu4c/source/data/curr/en_DK.txt
+++ b/icu4c/source/data/curr/en_DK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DK{
     %%Parent{"en_150"}
     Currencies{
@@ -8,5 +9,4 @@
             "Danish Krone",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_DM.txt b/icu4c/source/data/curr/en_DM.txt
index e82d0ea..e4dfa23 100644
--- a/icu4c/source/data/curr/en_DM.txt
+++ b/icu4c/source/data/curr/en_DM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DM{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "East Caribbean Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_ER.txt b/icu4c/source/data/curr/en_ER.txt
index 297b951..995a48a 100644
--- a/icu4c/source/data/curr/en_ER.txt
+++ b/icu4c/source/data/curr/en_ER.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ER{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Eritrean Nakfa",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_FI.txt b/icu4c/source/data/curr/en_FI.txt
index ae4b517..0b93a7e 100644
--- a/icu4c/source/data/curr/en_FI.txt
+++ b/icu4c/source/data/curr/en_FI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FI{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_FJ.txt b/icu4c/source/data/curr/en_FJ.txt
index edce35f..210fbba 100644
--- a/icu4c/source/data/curr/en_FJ.txt
+++ b/icu4c/source/data/curr/en_FJ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FJ{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Fijian Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_FK.txt b/icu4c/source/data/curr/en_FK.txt
index 5bb00c4..a14d2e4 100644
--- a/icu4c/source/data/curr/en_FK.txt
+++ b/icu4c/source/data/curr/en_FK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FK{
     %%Parent{"en_001"}
     Currencies{
@@ -12,5 +13,4 @@
             "British Pound",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_FM.txt b/icu4c/source/data/curr/en_FM.txt
index 352f324..ad38147 100644
--- a/icu4c/source/data/curr/en_FM.txt
+++ b/icu4c/source/data/curr/en_FM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_GB.txt b/icu4c/source/data/curr/en_GB.txt
index a03b26b..2691dc3 100644
--- a/icu4c/source/data/curr/en_GB.txt
+++ b/icu4c/source/data/curr/en_GB.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GB{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_GD.txt b/icu4c/source/data/curr/en_GD.txt
index aa183ed..1a3526f 100644
--- a/icu4c/source/data/curr/en_GD.txt
+++ b/icu4c/source/data/curr/en_GD.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GD{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "East Caribbean Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_GG.txt b/icu4c/source/data/curr/en_GG.txt
index c8c4596..288c523 100644
--- a/icu4c/source/data/curr/en_GG.txt
+++ b/icu4c/source/data/curr/en_GG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GG{
     %%Parent{"en_001"}
     Currencies{
@@ -14,5 +15,4 @@
             other{"UK pounds"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_GH.txt b/icu4c/source/data/curr/en_GH.txt
index b0950da..175df12 100644
--- a/icu4c/source/data/curr/en_GH.txt
+++ b/icu4c/source/data/curr/en_GH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GH{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Ghanaian Cedi",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_GI.txt b/icu4c/source/data/curr/en_GI.txt
index 1ca94b2..c41336e 100644
--- a/icu4c/source/data/curr/en_GI.txt
+++ b/icu4c/source/data/curr/en_GI.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GI{
     %%Parent{"en_001"}
     Currencies{
@@ -12,5 +13,4 @@
             "Gibraltar Pound",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_GM.txt b/icu4c/source/data/curr/en_GM.txt
index e218137..5f4b052 100644
--- a/icu4c/source/data/curr/en_GM.txt
+++ b/icu4c/source/data/curr/en_GM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GM{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Gambian Dalasi",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_GY.txt b/icu4c/source/data/curr/en_GY.txt
index e82a148..6d10e33 100644
--- a/icu4c/source/data/curr/en_GY.txt
+++ b/icu4c/source/data/curr/en_GY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GY{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Guyanaese Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_HK.txt b/icu4c/source/data/curr/en_HK.txt
index 3eec8fe..f074e0c 100644
--- a/icu4c/source/data/curr/en_HK.txt
+++ b/icu4c/source/data/curr/en_HK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_HK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_IE.txt b/icu4c/source/data/curr/en_IE.txt
index 96feab5..1426a90 100644
--- a/icu4c/source/data/curr/en_IE.txt
+++ b/icu4c/source/data/curr/en_IE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IE{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_IL.txt b/icu4c/source/data/curr/en_IL.txt
index 2d32919..39fe763 100644
--- a/icu4c/source/data/curr/en_IL.txt
+++ b/icu4c/source/data/curr/en_IL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IL{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_IM.txt b/icu4c/source/data/curr/en_IM.txt
index 90ae94b..7271f41 100644
--- a/icu4c/source/data/curr/en_IM.txt
+++ b/icu4c/source/data/curr/en_IM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IM{
     %%Parent{"en_001"}
     Currencies{
@@ -14,5 +15,4 @@
             other{"UK pounds"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_IN.txt b/icu4c/source/data/curr/en_IN.txt
index 4b1fc81..514beba 100644
--- a/icu4c/source/data/curr/en_IN.txt
+++ b/icu4c/source/data/curr/en_IN.txt
@@ -1,8 +1,13 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IN{
     %%Parent{"en_001"}
     Currencies{
+        USD{
+            "$",
+            "US Dollar",
+        }
         VEF{
             "VEF",
             "Venezuelan Bolívar",
@@ -22,5 +27,4 @@
             other{"VES"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_IO.txt b/icu4c/source/data/curr/en_IO.txt
index 5cd7210..5b70c5a 100644
--- a/icu4c/source/data/curr/en_IO.txt
+++ b/icu4c/source/data/curr/en_IO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IO{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_JE.txt b/icu4c/source/data/curr/en_JE.txt
index 1c2d239..6708b77 100644
--- a/icu4c/source/data/curr/en_JE.txt
+++ b/icu4c/source/data/curr/en_JE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_JE{
     %%Parent{"en_001"}
     Currencies{
@@ -14,5 +15,4 @@
             other{"UK pounds"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_JM.txt b/icu4c/source/data/curr/en_JM.txt
index 849eeef..9759530 100644
--- a/icu4c/source/data/curr/en_JM.txt
+++ b/icu4c/source/data/curr/en_JM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_JM{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Jamaican Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_KE.txt b/icu4c/source/data/curr/en_KE.txt
index 00875f3..632d80c 100644
--- a/icu4c/source/data/curr/en_KE.txt
+++ b/icu4c/source/data/curr/en_KE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KE{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Kenyan Shilling",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_KI.txt b/icu4c/source/data/curr/en_KI.txt
index bf01e32..865d1d6 100644
--- a/icu4c/source/data/curr/en_KI.txt
+++ b/icu4c/source/data/curr/en_KI.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KI{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Australian Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_KN.txt b/icu4c/source/data/curr/en_KN.txt
index 56b9890..83daada 100644
--- a/icu4c/source/data/curr/en_KN.txt
+++ b/icu4c/source/data/curr/en_KN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KN{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "East Caribbean Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_KY.txt b/icu4c/source/data/curr/en_KY.txt
index e3f5bf1..76a05f3 100644
--- a/icu4c/source/data/curr/en_KY.txt
+++ b/icu4c/source/data/curr/en_KY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KY{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Cayman Islands Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_LC.txt b/icu4c/source/data/curr/en_LC.txt
index 8329299..345e033 100644
--- a/icu4c/source/data/curr/en_LC.txt
+++ b/icu4c/source/data/curr/en_LC.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_LC{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "East Caribbean Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_LR.txt b/icu4c/source/data/curr/en_LR.txt
index 3c3c09c..06fc9b1 100644
--- a/icu4c/source/data/curr/en_LR.txt
+++ b/icu4c/source/data/curr/en_LR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_LR{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Liberian Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_LS.txt b/icu4c/source/data/curr/en_LS.txt
index a5658f8..91a2dcd 100644
--- a/icu4c/source/data/curr/en_LS.txt
+++ b/icu4c/source/data/curr/en_LS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_LS{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "South African Rand",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_MG.txt b/icu4c/source/data/curr/en_MG.txt
index f56e644..f84f6b3 100644
--- a/icu4c/source/data/curr/en_MG.txt
+++ b/icu4c/source/data/curr/en_MG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MG{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Malagasy Ariary",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_MO.txt b/icu4c/source/data/curr/en_MO.txt
index e80944c..bd12343 100644
--- a/icu4c/source/data/curr/en_MO.txt
+++ b/icu4c/source/data/curr/en_MO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MO{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Macanese Pataca",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_MS.txt b/icu4c/source/data/curr/en_MS.txt
index b7219e3..bd96b3d 100644
--- a/icu4c/source/data/curr/en_MS.txt
+++ b/icu4c/source/data/curr/en_MS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MS{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "East Caribbean Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_MT.txt b/icu4c/source/data/curr/en_MT.txt
index 8e2461b..04dd99c 100644
--- a/icu4c/source/data/curr/en_MT.txt
+++ b/icu4c/source/data/curr/en_MT.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MT{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "British Pound",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_MU.txt b/icu4c/source/data/curr/en_MU.txt
index 5b0c191..f707b3c 100644
--- a/icu4c/source/data/curr/en_MU.txt
+++ b/icu4c/source/data/curr/en_MU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MU{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Mauritian Rupee",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_MW.txt b/icu4c/source/data/curr/en_MW.txt
index 32615cf..8a7d28c 100644
--- a/icu4c/source/data/curr/en_MW.txt
+++ b/icu4c/source/data/curr/en_MW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MW{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Malawian Kwacha",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_MY.txt b/icu4c/source/data/curr/en_MY.txt
index 046fe5a..76274c7 100644
--- a/icu4c/source/data/curr/en_MY.txt
+++ b/icu4c/source/data/curr/en_MY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MY{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Malaysian Ringgit",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_NA.txt b/icu4c/source/data/curr/en_NA.txt
index 9d6ecaf..04eeeea 100644
--- a/icu4c/source/data/curr/en_NA.txt
+++ b/icu4c/source/data/curr/en_NA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NA{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Namibian Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_NF.txt b/icu4c/source/data/curr/en_NF.txt
index edade2c..972f47e 100644
--- a/icu4c/source/data/curr/en_NF.txt
+++ b/icu4c/source/data/curr/en_NF.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NF{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Australian Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_NG.txt b/icu4c/source/data/curr/en_NG.txt
index 2b2d9bd..9c7857e 100644
--- a/icu4c/source/data/curr/en_NG.txt
+++ b/icu4c/source/data/curr/en_NG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NG{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Nigerian Naira",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_NH.txt b/icu4c/source/data/curr/en_NH.txt
index 958b96b..5dc995b 100644
--- a/icu4c/source/data/curr/en_NH.txt
+++ b/icu4c/source/data/curr/en_NH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NH{
     "%%ALIAS"{"en_VU"}
 }
diff --git a/icu4c/source/data/curr/en_NL.txt b/icu4c/source/data/curr/en_NL.txt
index 5b5436b..0b352bd 100644
--- a/icu4c/source/data/curr/en_NL.txt
+++ b/icu4c/source/data/curr/en_NL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NL{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_NR.txt b/icu4c/source/data/curr/en_NR.txt
index c4aadc9..0ddfdcc 100644
--- a/icu4c/source/data/curr/en_NR.txt
+++ b/icu4c/source/data/curr/en_NR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NR{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Australian Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_NU.txt b/icu4c/source/data/curr/en_NU.txt
index dd3761d..a272521 100644
--- a/icu4c/source/data/curr/en_NU.txt
+++ b/icu4c/source/data/curr/en_NU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NU{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "New Zealand Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_NZ.txt b/icu4c/source/data/curr/en_NZ.txt
index 93e2a92..7301c79 100644
--- a/icu4c/source/data/curr/en_NZ.txt
+++ b/icu4c/source/data/curr/en_NZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NZ{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "New Zealand Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_PG.txt b/icu4c/source/data/curr/en_PG.txt
index fbdba2e..687bc34 100644
--- a/icu4c/source/data/curr/en_PG.txt
+++ b/icu4c/source/data/curr/en_PG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PG{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Papua New Guinean Kina",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_PH.txt b/icu4c/source/data/curr/en_PH.txt
index 667bce2..caac3d2 100644
--- a/icu4c/source/data/curr/en_PH.txt
+++ b/icu4c/source/data/curr/en_PH.txt
@@ -1,12 +1,12 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PH{
     %%Parent{"en_001"}
     Currencies{
         PHP{
             "₱",
-            "Philippine Piso",
+            "Philippine Peso",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_PK.txt b/icu4c/source/data/curr/en_PK.txt
index 381aff3..bd09de0 100644
--- a/icu4c/source/data/curr/en_PK.txt
+++ b/icu4c/source/data/curr/en_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PK{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Pakistani Rupee",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_PN.txt b/icu4c/source/data/curr/en_PN.txt
index cf6f728..73ded2f 100644
--- a/icu4c/source/data/curr/en_PN.txt
+++ b/icu4c/source/data/curr/en_PN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PN{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "New Zealand Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_PW.txt b/icu4c/source/data/curr/en_PW.txt
index ed60f26..89ef3e6 100644
--- a/icu4c/source/data/curr/en_PW.txt
+++ b/icu4c/source/data/curr/en_PW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_RH.txt b/icu4c/source/data/curr/en_RH.txt
index b60f708..24bad29 100644
--- a/icu4c/source/data/curr/en_RH.txt
+++ b/icu4c/source/data/curr/en_RH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_RH{
     "%%ALIAS"{"en_ZW"}
 }
diff --git a/icu4c/source/data/curr/en_RW.txt b/icu4c/source/data/curr/en_RW.txt
index edd444a..01d7d9c 100644
--- a/icu4c/source/data/curr/en_RW.txt
+++ b/icu4c/source/data/curr/en_RW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_RW{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Rwandan Franc",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_SB.txt b/icu4c/source/data/curr/en_SB.txt
index ae7f002..6ab4340 100644
--- a/icu4c/source/data/curr/en_SB.txt
+++ b/icu4c/source/data/curr/en_SB.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SB{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Solomon Islands Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_SC.txt b/icu4c/source/data/curr/en_SC.txt
index 0577d56..173e927 100644
--- a/icu4c/source/data/curr/en_SC.txt
+++ b/icu4c/source/data/curr/en_SC.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SC{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Seychellois Rupee",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_SD.txt b/icu4c/source/data/curr/en_SD.txt
index f2110fa..ef3c460 100644
--- a/icu4c/source/data/curr/en_SD.txt
+++ b/icu4c/source/data/curr/en_SD.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SD{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_SE.txt b/icu4c/source/data/curr/en_SE.txt
index 034e4c8..057d5c5 100644
--- a/icu4c/source/data/curr/en_SE.txt
+++ b/icu4c/source/data/curr/en_SE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SE{
     %%Parent{"en_150"}
     Currencies{
@@ -8,5 +9,4 @@
             "Swedish Krona",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_SG.txt b/icu4c/source/data/curr/en_SG.txt
index cba0e52..8d0536a 100644
--- a/icu4c/source/data/curr/en_SG.txt
+++ b/icu4c/source/data/curr/en_SG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SG{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Singapore Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_SH.txt b/icu4c/source/data/curr/en_SH.txt
index d2632ca..e81a461 100644
--- a/icu4c/source/data/curr/en_SH.txt
+++ b/icu4c/source/data/curr/en_SH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SH{
     %%Parent{"en_001"}
     Currencies{
@@ -12,5 +13,4 @@
             "St Helena Pound",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_SI.txt b/icu4c/source/data/curr/en_SI.txt
index a69030e..6fb107a 100644
--- a/icu4c/source/data/curr/en_SI.txt
+++ b/icu4c/source/data/curr/en_SI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SI{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_SL.txt b/icu4c/source/data/curr/en_SL.txt
index d612dc9..0724375 100644
--- a/icu4c/source/data/curr/en_SL.txt
+++ b/icu4c/source/data/curr/en_SL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SL{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Sierra Leonean Leone",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_SS.txt b/icu4c/source/data/curr/en_SS.txt
index f8e7812..57962f6 100644
--- a/icu4c/source/data/curr/en_SS.txt
+++ b/icu4c/source/data/curr/en_SS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SS{
     %%Parent{"en_001"}
     Currencies{
@@ -12,5 +13,4 @@
             "South Sudanese Pound",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_SX.txt b/icu4c/source/data/curr/en_SX.txt
index 351454f..791b004 100644
--- a/icu4c/source/data/curr/en_SX.txt
+++ b/icu4c/source/data/curr/en_SX.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SX{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Netherlands Antillean Guilder",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_SZ.txt b/icu4c/source/data/curr/en_SZ.txt
index f75b578..4ade672 100644
--- a/icu4c/source/data/curr/en_SZ.txt
+++ b/icu4c/source/data/curr/en_SZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SZ{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Swazi Lilangeni",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_TC.txt b/icu4c/source/data/curr/en_TC.txt
index 4129b99..181633b 100644
--- a/icu4c/source/data/curr/en_TC.txt
+++ b/icu4c/source/data/curr/en_TC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_TK.txt b/icu4c/source/data/curr/en_TK.txt
index 33e33cb..c16d4a2 100644
--- a/icu4c/source/data/curr/en_TK.txt
+++ b/icu4c/source/data/curr/en_TK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TK{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "New Zealand Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_TO.txt b/icu4c/source/data/curr/en_TO.txt
index d290b56..4f5e393 100644
--- a/icu4c/source/data/curr/en_TO.txt
+++ b/icu4c/source/data/curr/en_TO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TO{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Tongan Paʻanga",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_TT.txt b/icu4c/source/data/curr/en_TT.txt
index 03d09c2..4b56dba 100644
--- a/icu4c/source/data/curr/en_TT.txt
+++ b/icu4c/source/data/curr/en_TT.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TT{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Trinidad & Tobago Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_TV.txt b/icu4c/source/data/curr/en_TV.txt
index a020cd2..c93835f 100644
--- a/icu4c/source/data/curr/en_TV.txt
+++ b/icu4c/source/data/curr/en_TV.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TV{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Australian Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_TZ.txt b/icu4c/source/data/curr/en_TZ.txt
index 68907d5..3742720 100644
--- a/icu4c/source/data/curr/en_TZ.txt
+++ b/icu4c/source/data/curr/en_TZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TZ{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Tanzanian Shilling",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_UG.txt b/icu4c/source/data/curr/en_UG.txt
index 397b719..de295bc 100644
--- a/icu4c/source/data/curr/en_UG.txt
+++ b/icu4c/source/data/curr/en_UG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_UG{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Ugandan Shilling",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_VC.txt b/icu4c/source/data/curr/en_VC.txt
index 92c4ea1..8575203 100644
--- a/icu4c/source/data/curr/en_VC.txt
+++ b/icu4c/source/data/curr/en_VC.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VC{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "East Caribbean Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_VG.txt b/icu4c/source/data/curr/en_VG.txt
index 3e84e30..1a001d0 100644
--- a/icu4c/source/data/curr/en_VG.txt
+++ b/icu4c/source/data/curr/en_VG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_VU.txt b/icu4c/source/data/curr/en_VU.txt
index 22a261f..fc553b1 100644
--- a/icu4c/source/data/curr/en_VU.txt
+++ b/icu4c/source/data/curr/en_VU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VU{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Vanuatu Vatu",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_WS.txt b/icu4c/source/data/curr/en_WS.txt
index 3ab079c..49a6492 100644
--- a/icu4c/source/data/curr/en_WS.txt
+++ b/icu4c/source/data/curr/en_WS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_WS{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Samoan Tala",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_ZA.txt b/icu4c/source/data/curr/en_ZA.txt
index 9e05a84..881c4f2 100644
--- a/icu4c/source/data/curr/en_ZA.txt
+++ b/icu4c/source/data/curr/en_ZA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ZA{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "South African Rand",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_ZM.txt b/icu4c/source/data/curr/en_ZM.txt
index 353ee95..eb28c7c 100644
--- a/icu4c/source/data/curr/en_ZM.txt
+++ b/icu4c/source/data/curr/en_ZM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ZM{
     %%Parent{"en_001"}
     Currencies{
@@ -8,5 +9,4 @@
             "Zambian Kwacha",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/en_ZW.txt b/icu4c/source/data/curr/en_ZW.txt
index 05fb790..60eaea8 100644
--- a/icu4c/source/data/curr/en_ZW.txt
+++ b/icu4c/source/data/curr/en_ZW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ZW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/eo.txt b/icu4c/source/data/curr/eo.txt
index b190ca7..ffc275e 100644
--- a/icu4c/source/data/curr/eo.txt
+++ b/icu4c/source/data/curr/eo.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 eo{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es.txt b/icu4c/source/data/curr/es.txt
index 602cef7..b641dc6 100644
--- a/icu4c/source/data/curr/es.txt
+++ b/icu4c/source/data/curr/es.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es{
     Currencies{
         ADP{
@@ -28,7 +29,7 @@
         }
         ANG{
             "ANG",
-            "florín de las Antillas Neerlandesas",
+            "florín antillano",
         }
         AOA{
             "AOA",
@@ -124,7 +125,7 @@
         }
         BMD{
             "BMD",
-            "dólar de Bermudas",
+            "dólar bermudeño",
         }
         BND{
             "BND",
@@ -199,7 +200,7 @@
             "dólar beliceño",
         }
         CAD{
-            "CA$",
+            "CAD",
             "dólar canadiense",
         }
         CDF{
@@ -684,7 +685,7 @@
         }
         NIO{
             "NIO",
-            "córdoba nicaragüense",
+            "córdoba oro",
         }
         NLG{
             "NLG",
@@ -1245,8 +1246,8 @@
             other{"drams"}
         }
         ANG{
-            one{"florín de las Antillas Neerlandesas"}
-            other{"florines de las Antillas Neerlandesas"}
+            one{"florín antillano"}
+            other{"florines antillanos"}
         }
         AOA{
             one{"kuanza"}
@@ -1325,8 +1326,8 @@
             other{"francos burundeses"}
         }
         BMD{
-            one{"dólar de Bermudas"}
-            other{"dólares de Bermudas"}
+            one{"dólar bermudeño"}
+            other{"dólares bermudeños"}
         }
         BND{
             one{"dólar bruneano"}
@@ -1849,8 +1850,8 @@
             other{"córdobas nicaragüenses (1988–1991)"}
         }
         NIO{
-            one{"córdoba nicaragüense"}
-            other{"córdobas nicaragüenses"}
+            one{"córdoba oro"}
+            other{"córdobas oro"}
         }
         NLG{
             one{"florín neerlandés"}
@@ -2229,5 +2230,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_419.txt b/icu4c/source/data/curr/es_419.txt
index 693ac3d..cb3d318 100644
--- a/icu4c/source/data/curr/es_419.txt
+++ b/icu4c/source/data/curr/es_419.txt
@@ -1,10 +1,15 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_419{
     Currencies{
-        CAD{
-            "CAD",
-            "dólar canadiense",
+        ANG{
+            "ANG",
+            "florín de las Antillas Neerlandesas",
+        }
+        BMD{
+            "BMD",
+            "dólar de Bermudas",
         }
         EUR{
             "EUR",
@@ -14,6 +19,10 @@
             "MWK",
             "kwacha malauí",
         }
+        NIO{
+            "NIO",
+            "córdoba nicaragüense",
+        }
         THB{
             "THB",
             "baht tailandes",
@@ -39,14 +48,26 @@
         VEF{"BsF"}
     }
     CurrencyPlurals{
+        ANG{
+            one{"florín de las Antillas Neerlandesas"}
+            other{"florines de las Antillas Neerlandesas"}
+        }
         BGN{
             one{"lev búlgaro"}
             other{"leva búlgaros"}
         }
+        BMD{
+            one{"dólar de Bermudas"}
+            other{"dólares de Bermudas"}
+        }
         MWK{
             one{"kwacha malauí"}
             other{"kwachas malauís"}
         }
+        NIO{
+            one{"córdoba nicaragüense"}
+            other{"córdobas nicaragüenses"}
+        }
         THB{
             one{"baht tailandes"}
             other{"bahts tailandeses"}
@@ -60,5 +81,4 @@
             other{"(moneda desconocida)"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_AR.txt b/icu4c/source/data/curr/es_AR.txt
index 0149691..def663a 100644
--- a/icu4c/source/data/curr/es_AR.txt
+++ b/icu4c/source/data/curr/es_AR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_AR{
     %%Parent{"es_419"}
     Currencies{
@@ -15,5 +16,4 @@
     Currencies%variant{
         GEL{"GEL"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_BO.txt b/icu4c/source/data/curr/es_BO.txt
index 85fae1b..94c0fca 100644
--- a/icu4c/source/data/curr/es_BO.txt
+++ b/icu4c/source/data/curr/es_BO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_BO{
     %%Parent{"es_419"}
     Currencies{
@@ -8,5 +9,4 @@
             "boliviano",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_BR.txt b/icu4c/source/data/curr/es_BR.txt
index aa54752..d25f2e5 100644
--- a/icu4c/source/data/curr/es_BR.txt
+++ b/icu4c/source/data/curr/es_BR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_BR{
     %%Parent{"es_419"}
     Currencies{
@@ -8,5 +9,4 @@
             "real brasileño",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_BZ.txt b/icu4c/source/data/curr/es_BZ.txt
index c84900b..98caa05 100644
--- a/icu4c/source/data/curr/es_BZ.txt
+++ b/icu4c/source/data/curr/es_BZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_BZ{
     %%Parent{"es_419"}
     Currencies{
@@ -8,5 +9,4 @@
             "dólar beliceño",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_CL.txt b/icu4c/source/data/curr/es_CL.txt
index be0e24d..efac58e 100644
--- a/icu4c/source/data/curr/es_CL.txt
+++ b/icu4c/source/data/curr/es_CL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CL{
     %%Parent{"es_419"}
     Currencies{
@@ -12,5 +13,4 @@
             "dólar estadounidense",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_CO.txt b/icu4c/source/data/curr/es_CO.txt
index 6e29006..eb90262 100644
--- a/icu4c/source/data/curr/es_CO.txt
+++ b/icu4c/source/data/curr/es_CO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CO{
     %%Parent{"es_419"}
     Currencies{
@@ -12,5 +13,4 @@
             "dólar estadounidense",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_CR.txt b/icu4c/source/data/curr/es_CR.txt
index eee2e4f..58f7d42 100644
--- a/icu4c/source/data/curr/es_CR.txt
+++ b/icu4c/source/data/curr/es_CR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CR{
     %%Parent{"es_419"}
     Currencies{
@@ -8,5 +9,4 @@
             "colón costarricense",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_CU.txt b/icu4c/source/data/curr/es_CU.txt
index 4f9a413..59733f6 100644
--- a/icu4c/source/data/curr/es_CU.txt
+++ b/icu4c/source/data/curr/es_CU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CU{
     %%Parent{"es_419"}
     Currencies{
@@ -12,5 +13,4 @@
             "dólar estadounidense",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_DO.txt b/icu4c/source/data/curr/es_DO.txt
index 4cc0897..9ec82bd 100644
--- a/icu4c/source/data/curr/es_DO.txt
+++ b/icu4c/source/data/curr/es_DO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_DO{
     %%Parent{"es_419"}
     Currencies{
@@ -12,5 +13,4 @@
             "dólar estadounidense",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_EC.txt b/icu4c/source/data/curr/es_EC.txt
index ff764c2..d2b8ab6 100644
--- a/icu4c/source/data/curr/es_EC.txt
+++ b/icu4c/source/data/curr/es_EC.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_EC{
     %%Parent{"es_419"}
     Currencies{
@@ -8,5 +9,4 @@
             "dólar estadounidense",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_GQ.txt b/icu4c/source/data/curr/es_GQ.txt
index 97c43ec..6b2b298 100644
--- a/icu4c/source/data/curr/es_GQ.txt
+++ b/icu4c/source/data/curr/es_GQ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_GQ{
     Currencies{
         XAF{
@@ -7,5 +8,4 @@
             "franco CFA de África Central",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_GT.txt b/icu4c/source/data/curr/es_GT.txt
index f35948f..78ca991 100644
--- a/icu4c/source/data/curr/es_GT.txt
+++ b/icu4c/source/data/curr/es_GT.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_GT{
     %%Parent{"es_419"}
     Currencies{
@@ -18,5 +19,4 @@
         one{"{1} {0}"}
         other{"{1} {0}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_HN.txt b/icu4c/source/data/curr/es_HN.txt
index f6a7e85..e0e4620 100644
--- a/icu4c/source/data/curr/es_HN.txt
+++ b/icu4c/source/data/curr/es_HN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_HN{
     %%Parent{"es_419"}
     Currencies{
@@ -8,5 +9,4 @@
             "lempira hondureño",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_MX.txt b/icu4c/source/data/curr/es_MX.txt
index 9662c6f..773a3e0 100644
--- a/icu4c/source/data/curr/es_MX.txt
+++ b/icu4c/source/data/curr/es_MX.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_MX{
     %%Parent{"es_419"}
     Currencies{
@@ -75,7 +76,7 @@
         }
         BTN{
             one{"ngultrum butanés"}
-            other{"gultrums bultaneses"}
+            other{"ngultrums butaneses"}
         }
         KGS{
             one{"som kirguís"}
@@ -126,5 +127,4 @@
             other{"kwachas zambianos"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_NI.txt b/icu4c/source/data/curr/es_NI.txt
index 2ab77b4..818283c 100644
--- a/icu4c/source/data/curr/es_NI.txt
+++ b/icu4c/source/data/curr/es_NI.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_NI{
     %%Parent{"es_419"}
     Currencies{
@@ -8,5 +9,4 @@
             "córdoba nicaragüense",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_PA.txt b/icu4c/source/data/curr/es_PA.txt
index 64ca49f..4c6b4c7 100644
--- a/icu4c/source/data/curr/es_PA.txt
+++ b/icu4c/source/data/curr/es_PA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PA{
     %%Parent{"es_419"}
     Currencies{
@@ -8,5 +9,4 @@
             "balboa panameño",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_PE.txt b/icu4c/source/data/curr/es_PE.txt
index 2e2aab6..21d574f 100644
--- a/icu4c/source/data/curr/es_PE.txt
+++ b/icu4c/source/data/curr/es_PE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PE{
     %%Parent{"es_419"}
     Currencies{
@@ -8,5 +9,4 @@
             "sol peruano",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_PH.txt b/icu4c/source/data/curr/es_PH.txt
index d6e06fa..7f19b0f 100644
--- a/icu4c/source/data/curr/es_PH.txt
+++ b/icu4c/source/data/curr/es_PH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PH{
     Currencies{
         PHP{
@@ -7,5 +8,4 @@
             "peso filipino",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_PR.txt b/icu4c/source/data/curr/es_PR.txt
index 3009959..c32f20f 100644
--- a/icu4c/source/data/curr/es_PR.txt
+++ b/icu4c/source/data/curr/es_PR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PR{
     %%Parent{"es_419"}
     Currencies{
@@ -8,5 +9,4 @@
             "dólar estadounidense",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_PY.txt b/icu4c/source/data/curr/es_PY.txt
index e8b48228..57a4bb6 100644
--- a/icu4c/source/data/curr/es_PY.txt
+++ b/icu4c/source/data/curr/es_PY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PY{
     %%Parent{"es_419"}
     Currencies{
@@ -8,5 +9,4 @@
             "guaraní paraguayo",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_SV.txt b/icu4c/source/data/curr/es_SV.txt
index 5954d63..d22a677 100644
--- a/icu4c/source/data/curr/es_SV.txt
+++ b/icu4c/source/data/curr/es_SV.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_SV{
     %%Parent{"es_419"}
     Currencies{
@@ -8,5 +9,4 @@
             "dólar estadounidense",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_US.txt b/icu4c/source/data/curr/es_US.txt
index 2bdffbf..2973c25 100644
--- a/icu4c/source/data/curr/es_US.txt
+++ b/icu4c/source/data/curr/es_US.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_US{
     %%Parent{"es_419"}
     Currencies{
@@ -11,22 +12,18 @@
             "BTN",
             "ngultrum butanés",
         }
+        ETB{
+            "ETB",
+            "birr",
+        }
         JPY{
             "¥",
             "yen",
         }
-        KGS{
-            "KGS",
-            "som kirguís",
-        }
         LAK{
             "LAK",
             "kip laosiano",
         }
-        STN{
-            "STN",
-            "dobra santotomense",
-        }
         THB{
             "THB",
             "bat",
@@ -53,7 +50,6 @@
         }
     }
     Currencies%narrow{
-        BYN{"p."}
         FKP{"£"}
         RON{"lei"}
         SSP{"£"}
@@ -61,10 +57,6 @@
         VEF{"Bs"}
     }
     CurrencyPlurals{
-        AMD{
-            one{"dram armenio"}
-            other{"drams armenios"}
-        }
         BDT{
             one{"taka bangladesí"}
             other{"takas bangladesíes"}
@@ -73,18 +65,14 @@
             one{"ngultrum butanés"}
             other{"gultrums bultaneses"}
         }
-        KHR{
-            one{"riel camboyano"}
-            other{"rieles camboyanos"}
+        ETB{
+            one{"birr"}
+            other{"birres"}
         }
         LAK{
             one{"kip laosiano"}
             other{"kips laosianos"}
         }
-        STN{
-            one{"dobra santotomense"}
-            other{"dobra santotomense"}
-        }
         THB{
             one{"bat"}
             other{"bats"}
@@ -93,10 +81,6 @@
             one{"sum"}
             other{"sums"}
         }
-        VES{
-            one{"bolívar venezolano"}
-            other{"bolivares venezolanos"}
-        }
         VND{
             one{"dong vietnamita"}
             other{"dongs vietnamitas"}
@@ -110,5 +94,4 @@
             other{"kwachas zambianos"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_UY.txt b/icu4c/source/data/curr/es_UY.txt
index 1a4721c..de624b2 100644
--- a/icu4c/source/data/curr/es_UY.txt
+++ b/icu4c/source/data/curr/es_UY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_UY{
     %%Parent{"es_419"}
     Currencies{
@@ -16,5 +17,4 @@
             "unidad previsional uruguayo",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/es_VE.txt b/icu4c/source/data/curr/es_VE.txt
index 1d24469..b29bcc8 100644
--- a/icu4c/source/data/curr/es_VE.txt
+++ b/icu4c/source/data/curr/es_VE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_VE{
     %%Parent{"es_419"}
     Currencies{
@@ -21,5 +22,4 @@
             other{"bolívares soberanos"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/et.txt b/icu4c/source/data/curr/et.txt
index 5580127..9642eb0 100644
--- a/icu4c/source/data/curr/et.txt
+++ b/icu4c/source/data/curr/et.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 et{
     Currencies{
         ADP{
@@ -1105,8 +1106,11 @@
         }
     }
     Currencies%narrow{
+        AFN{"؋"}
+        AMD{"֏"}
         ARS{"$"}
         AUD{"$"}
+        AZN{"₼"}
         BBD{"$"}
         BDT{"৳"}
         BMD{"$"}
@@ -1125,6 +1129,7 @@
         EUR{"€"}
         FJD{"$"}
         GBP{"£"}
+        GHS{"GH₵"}
         GIP{"£"}
         GYD{"$"}
         HKD{"$"}
@@ -2181,5 +2186,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/eu.txt b/icu4c/source/data/curr/eu.txt
index 424df56..9d3ea1a 100644
--- a/icu4c/source/data/curr/eu.txt
+++ b/icu4c/source/data/curr/eu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 eu{
     Currencies{
         AED{
@@ -281,7 +282,7 @@
         }
         JMD{
             "JMD",
-            "Jamaikako dolarra",
+            "dolar jamaikarra",
         }
         JOD{
             "JOD",
@@ -401,7 +402,7 @@
         }
         MVR{
             "MVR",
-            "errupia maldivarra",
+            "rufiyaa maldivarra",
         }
         MWK{
             "MWK",
@@ -429,7 +430,7 @@
         }
         NIO{
             "NIO",
-            "córdoba nikaraguarra",
+            "cordoba nikaraguarra",
         }
         NOK{
             "NOK",
@@ -573,7 +574,7 @@
         }
         TOP{
             "TOP",
-            "Tongako Paʻanga",
+            "paʻanga tongatarra",
         }
         TRY{
             "TRY",
@@ -593,7 +594,7 @@
         }
         UAH{
             "UAH",
-            "Ukrainako hryvnia",
+            "hryvnia ukrainarra",
         }
         UGX{
             "UGX",
@@ -1152,8 +1153,8 @@
             other{"errupia mauriziar"}
         }
         MVR{
-            one{"errupia maldivar"}
-            other{"errupia maldivar"}
+            one{"rufiyaa maldivar"}
+            other{"rufiyaa maldivar"}
         }
         MWK{
             one{"kwacha malawiar"}
@@ -1180,8 +1181,8 @@
             other{"naira nigeriar"}
         }
         NIO{
-            one{"córdoba nikaraguar"}
-            other{"córdoba nikaraguar"}
+            one{"cordoba nikaraguar"}
+            other{"cordoba nikaraguar"}
         }
         NOK{
             one{"koroa norvegiar"}
@@ -1205,7 +1206,7 @@
         }
         PEN{
             one{"sol perutar"}
-            other{"Peruko sol"}
+            other{"sol perutar"}
         }
         PGK{
             one{"kina gineaberriar"}
@@ -1324,8 +1325,8 @@
             other{"dinar tunisiar"}
         }
         TOP{
-            one{"Tongako Paʻanga"}
-            other{"Tongako Paʻanga"}
+            one{"paʻanga tongatar"}
+            other{"paʻanga tongatar"}
         }
         TRY{
             one{"lira turkiar"}
@@ -1344,8 +1345,8 @@
             other{"txelin tanzaniar"}
         }
         UAH{
-            one{"Ukrainako hryvnia"}
-            other{"Ukrainako hryvnia"}
+            one{"hryvnia ukrainar"}
+            other{"hryvnia ukrainar"}
         }
         UGX{
             one{"txelin ugandar"}
@@ -1413,12 +1414,11 @@
         }
         ZMW{
             one{"kwacha zambiar"}
-            other{"Zambiako kwacha"}
+            other{"kwacha zambiar"}
         }
     }
     CurrencyUnitPatterns{
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ewo.txt b/icu4c/source/data/curr/ewo.txt
index 9d07225..5b237b5 100644
--- a/icu4c/source/data/curr/ewo.txt
+++ b/icu4c/source/data/curr/ewo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ewo{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Dolár yá Zimbabwé",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fa.txt b/icu4c/source/data/curr/fa.txt
index 4144914..40e655f 100644
--- a/icu4c/source/data/curr/fa.txt
+++ b/icu4c/source/data/curr/fa.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fa{
     Currencies{
         ADP{
@@ -1902,5 +1903,4 @@
             other{"کواچای زامبیا"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fa_AF.txt b/icu4c/source/data/curr/fa_AF.txt
index d2e535d..02f2599 100644
--- a/icu4c/source/data/curr/fa_AF.txt
+++ b/icu4c/source/data/curr/fa_AF.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fa_AF{
     Currencies{
         AUD{
@@ -63,5 +64,4 @@
             "دالر امریکا",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff.txt b/icu4c/source/data/curr/ff.txt
index dc2ff8d..37d16d9 100644
--- a/icu4c/source/data/curr/ff.txt
+++ b/icu4c/source/data/curr/ff.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Dolaar Simbaabuwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Adlm.txt b/icu4c/source/data/curr/ff_Adlm.txt
index e18280c..6c21d54 100644
--- a/icu4c/source/data/curr/ff_Adlm.txt
+++ b/icu4c/source/data/curr/ff_Adlm.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm{
     %%Parent{"root"}
     Currencies{
@@ -33,7 +34,7 @@
         }
         AUD{
             "A$",
-            "𞤁𞤢𞤤𞤢 𞤌𞤧𞤼𞤪𞤢𞤤𞤭𞤴𞤢𞤲𞤳𞤮",
+            "𞤁𞤢𞤤𞤢 𞤌𞤧𞤼𞤢𞤪𞤤𞤭𞤴𞤢𞤲𞤳𞤮",
         }
         AWG{
             "AWG",
@@ -125,7 +126,7 @@
         }
         CNY{
             "CN¥",
-            "𞤒𞤵𞤱𞤢𞤲 𞤕𞤢𞤴𞤲𞤭𞤲𞤳𞤮",
+            "𞤒𞤵𞤱𞤢𞥄𞤲 𞤕𞤢𞤴𞤲𞤭𞤲𞤳𞤮",
         }
         COP{
             "COP",
@@ -417,7 +418,7 @@
         }
         NZD{
             "NZ$",
-            "𞤁𞤢𞤤𞤢 𞤐𞤫𞤱-𞤔𞤭𞤤𞤢𞤲𞤣𞤭𞤲𞤳𞤮",
+            "𞤁𞤢𞤤𞤢 𞤐𞤫𞤱 𞤟𞤫𞤤𞤢𞤲𞤣",
         }
         OMR{
             "OMR",
@@ -477,7 +478,7 @@
         }
         SBD{
             "SBD",
-            "𞤁𞤢𞤤𞤢 𞤅𞤵𞤪𞤭𞥅𞤶𞤫 𞤅𞤵𞤤𞤫𞤴𞤥𞤢𞥄𞤲𞤭𞤲𞤳𞤮",
+            "𞤁𞤢𞤤𞤢 𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤅𞤵𞤤𞤢𞤴𞤥𞤢𞥄𞤲",
         }
         SCR{
             "SCR",
@@ -680,8 +681,8 @@
             other{"𞤆𞤫𞤧𞤮𞥅𞤶𞤭 𞤀𞤪𞤶𞤢𞤲𞤼𞤭𞤲𞤢"}
         }
         AUD{
-            one{"𞤣𞤢𞤤𞤢 𞤌𞤧𞤼𞤪𞤢𞤤𞤭𞤴𞤢𞤲𞤳𞤮"}
-            other{"𞤣𞤢𞤤𞤢𞥄𞤶𞤭 𞤌𞤧𞤼𞤪𞤢𞤤𞤭𞤴𞤢𞤲𞤳𞤮"}
+            one{"𞤁𞤢𞤤𞤢 𞤌𞤧𞤼𞤢𞤪𞤤𞤭𞤴𞤢𞤲𞤳𞤮"}
+            other{"𞤁𞤢𞤤𞤢𞥄𞤶𞤭 𞤌𞤧𞤼𞤢𞤪𞤤𞤭𞤴𞤢𞤲𞤳𞤮"}
         }
         AWG{
             one{"𞤊𞤵𞤤𞤮𞤪𞤭𞤲 𞤀𞤪𞤵𞤦𞤢𞤲𞤳𞤮"}
@@ -1066,8 +1067,8 @@
             other{"𞤪𞤵𞥅𞤨𞤭𞥅𞤶𞤭 𞤐𞤫𞤨𞤢𞤤𞤭𞤴𞤢𞤲𞤳𞤮"}
         }
         NZD{
-            one{"𞤣𞤢𞤤𞤢 𞤐𞤫𞤱-𞤔𞤭𞤤𞤢𞤲𞤣𞤭𞤲𞤳𞤮"}
-            other{"𞤣𞤢𞤤𞤢𞥄𞤶𞤭 𞤐𞤫𞤱-𞤔𞤭𞤤𞤢𞤲𞤣𞤭𞤲𞤳𞤮"}
+            one{"𞤣𞤢𞤤𞤢 𞤐𞤫𞤱 𞤟𞤫𞤤𞤢𞤲𞤣"}
+            other{"𞤣𞤢𞤤𞤢𞥄𞤶𞤭 𞤐𞤫𞤱 𞤟𞤫𞤤𞤢𞤲𞤣"}
         }
         OMR{
             one{"𞤪𞤭𞤴𞤢𞥄𞤤 𞤌𞤥𞤢𞤲𞤭𞤴𞤢𞤲𞤳𞤮"}
@@ -1126,7 +1127,8 @@
             other{"𞤪𞤭𞤴𞤢𞤤𞤶𞤭 𞤅𞤢𞤵𞥅𞤣𞤭𞤴𞤢𞤲𞤳𞤮"}
         }
         SBD{
-            other{"𞤣𞤢𞤤𞤢 𞤅𞤵𞤪𞤭𞥅𞤶𞤫 𞤅𞤵𞤤𞤫𞤴𞤥𞤢𞥄𞤲𞤭𞤲𞤳𞤮"}
+            one{"𞤣𞤢𞤤𞤢 𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤅𞤵𞤤𞤢𞤴𞤥𞤢𞥄𞤲"}
+            other{"𞤣𞤢𞤤𞤢𞥄𞤶𞤭 𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤅𞤵𞤤𞤢𞤴𞤥𞤢𞥄𞤲"}
         }
         SCR{
             one{"𞤪𞤵𞤨𞤭𞥅 𞤅𞤫𞤴𞤧𞤭𞤤𞤭𞤲𞤳𞤮"}
@@ -1285,5 +1287,4 @@
             other{"𞤳𞤢𞤱𞤢𞤧𞤢𞥄𞤶𞤭 𞤟𞤢𞤥𞤦𞤭𞤲𞤳𞤮"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Adlm_BF.txt b/icu4c/source/data/curr/ff_Adlm_BF.txt
index 1552f2d..35cbe7e 100644
--- a/icu4c/source/data/curr/ff_Adlm_BF.txt
+++ b/icu4c/source/data/curr/ff_Adlm_BF.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_BF{
     Currencies{
         GNF{
@@ -7,5 +8,4 @@
             "𞤊𞤢𞤪𞤢𞤲 𞤘𞤭𞤲𞤫𞤲𞤳𞤮",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Adlm_CM.txt b/icu4c/source/data/curr/ff_Adlm_CM.txt
index c0e1618..4140701 100644
--- a/icu4c/source/data/curr/ff_Adlm_CM.txt
+++ b/icu4c/source/data/curr/ff_Adlm_CM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_CM{
     Currencies{
         GNF{
@@ -7,5 +8,4 @@
             "𞤊𞤢𞤪𞤢𞤲 𞤘𞤭𞤲𞤫𞤲𞤳𞤮",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Adlm_GH.txt b/icu4c/source/data/curr/ff_Adlm_GH.txt
index d4eaf53..4a4c3b1 100644
--- a/icu4c/source/data/curr/ff_Adlm_GH.txt
+++ b/icu4c/source/data/curr/ff_Adlm_GH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_GH{
     Currencies{
         GHS{
@@ -11,5 +12,4 @@
             "𞤊𞤢𞤪𞤢𞤲 𞤘𞤭𞤲𞤫𞤲𞤳𞤮",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Adlm_GM.txt b/icu4c/source/data/curr/ff_Adlm_GM.txt
index c8c13e3..c2a768e 100644
--- a/icu4c/source/data/curr/ff_Adlm_GM.txt
+++ b/icu4c/source/data/curr/ff_Adlm_GM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_GM{
     Currencies{
         GMD{
@@ -11,5 +12,4 @@
             "𞤊𞤢𞤪𞤢𞤲 𞤘𞤭𞤲𞤫𞤲𞤳𞤮",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Adlm_GW.txt b/icu4c/source/data/curr/ff_Adlm_GW.txt
index e6e327a..201aee7 100644
--- a/icu4c/source/data/curr/ff_Adlm_GW.txt
+++ b/icu4c/source/data/curr/ff_Adlm_GW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_GW{
     Currencies{
         GNF{
@@ -7,5 +8,4 @@
             "𞤊𞤢𞤪𞤢𞤲 𞤘𞤭𞤲𞤫𞤲𞤳𞤮",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Adlm_LR.txt b/icu4c/source/data/curr/ff_Adlm_LR.txt
index 550fc6f..49f9323 100644
--- a/icu4c/source/data/curr/ff_Adlm_LR.txt
+++ b/icu4c/source/data/curr/ff_Adlm_LR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_LR{
     Currencies{
         GNF{
@@ -11,5 +12,4 @@
             "𞤁𞤢𞤤𞤢 𞤂𞤭𞤦𞤫𞤪𞤭𞤴𞤢𞤲𞤳𞤮",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Adlm_MR.txt b/icu4c/source/data/curr/ff_Adlm_MR.txt
index 0ede647..b674e31 100644
--- a/icu4c/source/data/curr/ff_Adlm_MR.txt
+++ b/icu4c/source/data/curr/ff_Adlm_MR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_MR{
     Currencies{
         GNF{
@@ -11,5 +12,4 @@
             "𞤓𞤺𞤭𞤴𞤢 𞤃𞤮𞤪𞤭𞤼𞤢𞤲𞤭𞤴𞤢𞤲𞤳𞤮",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Adlm_NE.txt b/icu4c/source/data/curr/ff_Adlm_NE.txt
index 9761b2f..b0cc2f9 100644
--- a/icu4c/source/data/curr/ff_Adlm_NE.txt
+++ b/icu4c/source/data/curr/ff_Adlm_NE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_NE{
     Currencies{
         GNF{
@@ -7,5 +8,4 @@
             "𞤊𞤢𞤪𞤢𞤲 𞤘𞤭𞤲𞤫𞤲𞤳𞤮",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Adlm_NG.txt b/icu4c/source/data/curr/ff_Adlm_NG.txt
index 598d2a3..e9f41b8 100644
--- a/icu4c/source/data/curr/ff_Adlm_NG.txt
+++ b/icu4c/source/data/curr/ff_Adlm_NG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_NG{
     Currencies{
         GNF{
@@ -11,5 +12,4 @@
             "𞤐𞤢𞤴𞤪𞤢 𞤐𞤢𞤶𞤭𞤪𞤢𞤴𞤢𞤲𞤳𞤮",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Adlm_SL.txt b/icu4c/source/data/curr/ff_Adlm_SL.txt
index e697689..7d450c6 100644
--- a/icu4c/source/data/curr/ff_Adlm_SL.txt
+++ b/icu4c/source/data/curr/ff_Adlm_SL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_SL{
     Currencies{
         GNF{
@@ -11,5 +12,4 @@
             "𞤂𞤫𞤴𞤮𞤲 𞤅𞤫𞤪𞤢𞤤𞤭𞤴𞤢𞤲𞤳𞤮",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Adlm_SN.txt b/icu4c/source/data/curr/ff_Adlm_SN.txt
index c29f162..6f2ec31 100644
--- a/icu4c/source/data/curr/ff_Adlm_SN.txt
+++ b/icu4c/source/data/curr/ff_Adlm_SN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_SN{
     Currencies{
         GNF{
@@ -7,5 +8,4 @@
             "𞤊𞤢𞤪𞤢𞤲 𞤘𞤭𞤲𞤫𞤲𞤳𞤮",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_CM.txt b/icu4c/source/data/curr/ff_CM.txt
index c381f6c..0bf68ef 100644
--- a/icu4c/source/data/curr/ff_CM.txt
+++ b/icu4c/source/data/curr/ff_CM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_CM{
     "%%ALIAS"{"ff_Latn_CM"}
 }
diff --git a/icu4c/source/data/curr/ff_GN.txt b/icu4c/source/data/curr/ff_GN.txt
index c3a0bf3..433db4d 100644
--- a/icu4c/source/data/curr/ff_GN.txt
+++ b/icu4c/source/data/curr/ff_GN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_GN{
     "%%ALIAS"{"ff_Latn_GN"}
 }
diff --git a/icu4c/source/data/curr/ff_Latn.txt b/icu4c/source/data/curr/ff_Latn.txt
index 3d8715b..d30cb62 100644
--- a/icu4c/source/data/curr/ff_Latn.txt
+++ b/icu4c/source/data/curr/ff_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Latn_CM.txt b/icu4c/source/data/curr/ff_Latn_CM.txt
index a141c2f..123bc57 100644
--- a/icu4c/source/data/curr/ff_Latn_CM.txt
+++ b/icu4c/source/data/curr/ff_Latn_CM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/ff_Latn_GH.txt b/icu4c/source/data/curr/ff_Latn_GH.txt
index e21e376..fda9648 100644
--- a/icu4c/source/data/curr/ff_Latn_GH.txt
+++ b/icu4c/source/data/curr/ff_Latn_GH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_GH{
     Currencies{
         GHS{
@@ -7,5 +8,4 @@
             "GHS",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Latn_GM.txt b/icu4c/source/data/curr/ff_Latn_GM.txt
index b336953..735efb7 100644
--- a/icu4c/source/data/curr/ff_Latn_GM.txt
+++ b/icu4c/source/data/curr/ff_Latn_GM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_GM{
     Currencies{
         GMD{
@@ -7,5 +8,4 @@
             "Dalasi Gammbi",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Latn_GN.txt b/icu4c/source/data/curr/ff_Latn_GN.txt
index 05dc85f..df9bd2e 100644
--- a/icu4c/source/data/curr/ff_Latn_GN.txt
+++ b/icu4c/source/data/curr/ff_Latn_GN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_GN{
     Currencies{
         GNF{
@@ -7,5 +8,4 @@
             "GNF",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Latn_LR.txt b/icu4c/source/data/curr/ff_Latn_LR.txt
index 980fea9..d3001ce 100644
--- a/icu4c/source/data/curr/ff_Latn_LR.txt
+++ b/icu4c/source/data/curr/ff_Latn_LR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_LR{
     Currencies{
         LRD{
@@ -7,5 +8,4 @@
             "Dolaar Liberiyaa",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Latn_MR.txt b/icu4c/source/data/curr/ff_Latn_MR.txt
index 4e02f19..835c419 100644
--- a/icu4c/source/data/curr/ff_Latn_MR.txt
+++ b/icu4c/source/data/curr/ff_Latn_MR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_MR{
     Currencies{
         MRU{
@@ -7,5 +8,4 @@
             "Ugiyya Muritani",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Latn_NG.txt b/icu4c/source/data/curr/ff_Latn_NG.txt
index 8a733e7..5cdf8c6 100644
--- a/icu4c/source/data/curr/ff_Latn_NG.txt
+++ b/icu4c/source/data/curr/ff_Latn_NG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_NG{
     Currencies{
         NGN{
@@ -7,5 +8,4 @@
             "Nayraa Nijeriyaa",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Latn_SL.txt b/icu4c/source/data/curr/ff_Latn_SL.txt
index c6e87c7..a8d7726 100644
--- a/icu4c/source/data/curr/ff_Latn_SL.txt
+++ b/icu4c/source/data/curr/ff_Latn_SL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_SL{
     Currencies{
         SLL{
@@ -7,5 +8,4 @@
             "Lewoon Seraa Liyon",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ff_Latn_SN.txt b/icu4c/source/data/curr/ff_Latn_SN.txt
index 6112f6f..33ed407 100644
--- a/icu4c/source/data/curr/ff_Latn_SN.txt
+++ b/icu4c/source/data/curr/ff_Latn_SN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/ff_MR.txt b/icu4c/source/data/curr/ff_MR.txt
index 17a8873..1da6e51 100644
--- a/icu4c/source/data/curr/ff_MR.txt
+++ b/icu4c/source/data/curr/ff_MR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_MR{
     "%%ALIAS"{"ff_Latn_MR"}
 }
diff --git a/icu4c/source/data/curr/ff_SN.txt b/icu4c/source/data/curr/ff_SN.txt
index c690854..ca2f4ec 100644
--- a/icu4c/source/data/curr/ff_SN.txt
+++ b/icu4c/source/data/curr/ff_SN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_SN{
     "%%ALIAS"{"ff_Latn_SN"}
 }
diff --git a/icu4c/source/data/curr/fi.txt b/icu4c/source/data/curr/fi.txt
index d3e29be..0fe19d4 100644
--- a/icu4c/source/data/curr/fi.txt
+++ b/icu4c/source/data/curr/fi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fi{
     Currencies{
         ADP{
@@ -2536,5 +2537,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fil.txt b/icu4c/source/data/curr/fil.txt
index 64586d0..2088c4b 100644
--- a/icu4c/source/data/curr/fil.txt
+++ b/icu4c/source/data/curr/fil.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fil{
     Currencies{
         AED{
@@ -556,7 +557,7 @@
         }
         STN{
             "STN",
-            "São Tomé & Príncipe Dobra (2018)",
+            "São Tomé & Príncipe Dobra",
         }
         SYP{
             "SYP",
@@ -1437,5 +1438,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fil_PH.txt b/icu4c/source/data/curr/fil_PH.txt
index 5b83d82..481c955 100644
--- a/icu4c/source/data/curr/fil_PH.txt
+++ b/icu4c/source/data/curr/fil_PH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/fo.txt b/icu4c/source/data/curr/fo.txt
index 0ffa31b..bce9688 100644
--- a/icu4c/source/data/curr/fo.txt
+++ b/icu4c/source/data/curr/fo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fo{
     Currencies{
         AED{
@@ -56,7 +57,7 @@
         }
         BGN{
             "BGN",
-            "Bulgaria lev",
+            "Bulgarskur Lev",
         }
         BHD{
             "BHD",
@@ -96,7 +97,7 @@
         }
         BYN{
             "BYN",
-            "Hvítarussland ruble",
+            "Hvítarussiskur Ruble",
         }
         BYR{
             "BYR",
@@ -108,7 +109,7 @@
         }
         CAD{
             "CA$",
-            "Kanada dollari",
+            "Kanadiskur dollari",
         }
         CDF{
             "CDF",
@@ -152,7 +153,7 @@
         }
         CZK{
             "CZK",
-            "Kekkia koruna",
+            "Kekkiskt Koruna",
         }
         DJF{
             "DJF",
@@ -244,7 +245,7 @@
         }
         HUF{
             "HUF",
-            "Ungarn forint",
+            "Ungarskur Forintur",
         }
         IDR{
             "IDR",
@@ -344,7 +345,7 @@
         }
         MDL{
             "MDL",
-            "Moldova leu",
+            "Moldovanskur Leu",
         }
         MGA{
             "MGA",
@@ -448,7 +449,7 @@
         }
         PLN{
             "PLN",
-            "Pólland zloty",
+            "Pólskur Zloty",
         }
         PYG{
             "PYG",
@@ -812,8 +813,8 @@
             other{"Bangladesj taka"}
         }
         BGN{
-            one{"Bulgaria lev"}
-            other{"Bulgaria lev"}
+            one{"bulgarskur lev"}
+            other{"bulgarskir leva"}
         }
         BHD{
             one{"Barein dinar"}
@@ -852,8 +853,8 @@
             other{"Botsvana pular"}
         }
         BYN{
-            one{"Hvítarussland ruble"}
-            other{"Hvítarussland ruble"}
+            one{"hvítarussiskur ruble"}
+            other{"hvítarussiskir ruble"}
         }
         BYR{
             one{"Hvítarussland ruble (2000–2016)"}
@@ -864,8 +865,8 @@
             other{"Belis dollarar"}
         }
         CAD{
-            one{"Kanada dollari"}
-            other{"Kanada dollarar"}
+            one{"kanadiskur dollari"}
+            other{"kanadiskir dollarar"}
         }
         CDF{
             one{"Kongo frankur"}
@@ -908,8 +909,8 @@
             other{"Grønhøvdaoyggjar escudo"}
         }
         CZK{
-            one{"Kekkia koruna"}
-            other{"Kekkia koruna"}
+            one{"kekkiskt koruna"}
+            other{"kekkiskar korunur"}
         }
         DJF{
             one{"Djibuti frankur"}
@@ -1000,8 +1001,8 @@
             other{"Haiti gourde"}
         }
         HUF{
-            one{"Ungarn forint"}
-            other{"Ungarn forint"}
+            one{"ungarskur forintur"}
+            other{"ungarskir forintar"}
         }
         IDR{
             one{"Indonesia rupiah"}
@@ -1100,8 +1101,8 @@
             other{"Marokko dirham"}
         }
         MDL{
-            one{"Moldova leu"}
-            other{"Moldova leu"}
+            one{"moldovanskur leu"}
+            other{"moldovanskir lei"}
         }
         MGA{
             one{"Madagaskar ariary"}
@@ -1204,8 +1205,8 @@
             other{"Pakistan rupis"}
         }
         PLN{
-            one{"Pólland zloty"}
-            other{"Pólland zloty"}
+            one{"pólskur zloty"}
+            other{"pólskir zloty"}
         }
         PYG{
             one{"Paraguai guarani"}
@@ -1420,5 +1421,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fo_DK.txt b/icu4c/source/data/curr/fo_DK.txt
index 01f0492..9735c20 100644
--- a/icu4c/source/data/curr/fo_DK.txt
+++ b/icu4c/source/data/curr/fo_DK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fo_DK{
     Currencies{
         DKK{
@@ -7,5 +8,4 @@
             "donsk króna",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fr.txt b/icu4c/source/data/curr/fr.txt
index 82ce853..db47e64 100644
--- a/icu4c/source/data/curr/fr.txt
+++ b/icu4c/source/data/curr/fr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr{
     Currencies{
         ADP{
@@ -916,7 +917,7 @@
         }
         TTD{
             "$TT",
-            "dollar trinidadien",
+            "dollar de Trinité-et-Tobago",
         }
         TWD{
             "TWD",
@@ -2353,5 +2354,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fr_BI.txt b/icu4c/source/data/curr/fr_BI.txt
index da2be8c..4ca39e9 100644
--- a/icu4c/source/data/curr/fr_BI.txt
+++ b/icu4c/source/data/curr/fr_BI.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_BI{
     Currencies{
         BIF{
@@ -7,5 +8,4 @@
             "franc burundais",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fr_CA.txt b/icu4c/source/data/curr/fr_CA.txt
index 1121edf..b5186ab 100644
--- a/icu4c/source/data/curr/fr_CA.txt
+++ b/icu4c/source/data/curr/fr_CA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_CA{
     Currencies{
         ARS{
@@ -27,7 +28,7 @@
             "dollar bélizéen",
         }
         CAD{
-            "$",
+            "$ CA",
             "dollar canadien",
         }
         CLP{
@@ -52,7 +53,7 @@
         }
         FKP{
             "FKP",
-            "livre des Îles Malouines",
+            "livre des îles Malouines",
         }
         GBP{
             "£",
@@ -206,10 +207,6 @@
             one{"escudo cap-verdien"}
             other{"escudos cap-verdiens"}
         }
-        FKP{
-            one{"livre des Îles Malouines"}
-            other{"livres des Îles Malouines"}
-        }
         GYD{
             one{"dollar guyanien"}
             other{"dollars guyaniens"}
@@ -267,5 +264,4 @@
             other{"rials yéménites"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fr_CD.txt b/icu4c/source/data/curr/fr_CD.txt
index 8911502..ff7fa2b 100644
--- a/icu4c/source/data/curr/fr_CD.txt
+++ b/icu4c/source/data/curr/fr_CD.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_CD{
     Currencies{
         CDF{
@@ -7,5 +8,4 @@
             "franc congolais",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fr_DJ.txt b/icu4c/source/data/curr/fr_DJ.txt
index bb3f3b9..54442e9 100644
--- a/icu4c/source/data/curr/fr_DJ.txt
+++ b/icu4c/source/data/curr/fr_DJ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_DJ{
     Currencies{
         DJF{
@@ -7,5 +8,4 @@
             "franc djiboutien",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fr_DZ.txt b/icu4c/source/data/curr/fr_DZ.txt
index 5308b2f..1364ac9 100644
--- a/icu4c/source/data/curr/fr_DZ.txt
+++ b/icu4c/source/data/curr/fr_DZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_DZ{
     Currencies{
         DZD{
@@ -7,5 +8,4 @@
             "dinar algérien",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fr_GN.txt b/icu4c/source/data/curr/fr_GN.txt
index 895eacd..b599295 100644
--- a/icu4c/source/data/curr/fr_GN.txt
+++ b/icu4c/source/data/curr/fr_GN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_GN{
     Currencies{
         GNF{
@@ -7,5 +8,4 @@
             "franc guinéen",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fr_HT.txt b/icu4c/source/data/curr/fr_HT.txt
index 54a72d7..6e74189 100644
--- a/icu4c/source/data/curr/fr_HT.txt
+++ b/icu4c/source/data/curr/fr_HT.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_HT{
     Currencies{
         HTG{
@@ -7,5 +8,4 @@
             "gourde haïtienne",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fr_KM.txt b/icu4c/source/data/curr/fr_KM.txt
index 31ce4a3..1d2c354 100644
--- a/icu4c/source/data/curr/fr_KM.txt
+++ b/icu4c/source/data/curr/fr_KM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_KM{
     Currencies{
         KMF{
@@ -7,5 +8,4 @@
             "franc comorien",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fr_LU.txt b/icu4c/source/data/curr/fr_LU.txt
index 495c07f..ade0c60 100644
--- a/icu4c/source/data/curr/fr_LU.txt
+++ b/icu4c/source/data/curr/fr_LU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_LU{
     Currencies{
         FRF{
@@ -11,5 +12,4 @@
             "franc luxembourgeois",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fr_MG.txt b/icu4c/source/data/curr/fr_MG.txt
index f5bb534..49d9826 100644
--- a/icu4c/source/data/curr/fr_MG.txt
+++ b/icu4c/source/data/curr/fr_MG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_MG{
     Currencies{
         MGA{
@@ -7,5 +8,4 @@
             "ariary malgache",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fr_MR.txt b/icu4c/source/data/curr/fr_MR.txt
index 4974309..b3871a7 100644
--- a/icu4c/source/data/curr/fr_MR.txt
+++ b/icu4c/source/data/curr/fr_MR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_MR{
     Currencies{
         MRU{
@@ -7,5 +8,4 @@
             "ouguiya mauritanien",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fr_MU.txt b/icu4c/source/data/curr/fr_MU.txt
index 100f9cc..5d329d3 100644
--- a/icu4c/source/data/curr/fr_MU.txt
+++ b/icu4c/source/data/curr/fr_MU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_MU{
     Currencies{
         MUR{
@@ -7,5 +8,4 @@
             "roupie mauricienne",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fr_RW.txt b/icu4c/source/data/curr/fr_RW.txt
index 7688372..46faf38 100644
--- a/icu4c/source/data/curr/fr_RW.txt
+++ b/icu4c/source/data/curr/fr_RW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_RW{
     Currencies{
         RWF{
@@ -7,5 +8,4 @@
             "franc rwandais",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fr_SC.txt b/icu4c/source/data/curr/fr_SC.txt
index 898c763..a8e4aac 100644
--- a/icu4c/source/data/curr/fr_SC.txt
+++ b/icu4c/source/data/curr/fr_SC.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_SC{
     Currencies{
         SCR{
@@ -7,5 +8,4 @@
             "roupie des Seychelles",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fr_SY.txt b/icu4c/source/data/curr/fr_SY.txt
index 913350a..75cae30 100644
--- a/icu4c/source/data/curr/fr_SY.txt
+++ b/icu4c/source/data/curr/fr_SY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_SY{
     Currencies{
         SYP{
@@ -7,5 +8,4 @@
             "livre syrienne",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fr_TN.txt b/icu4c/source/data/curr/fr_TN.txt
index 1a86b0b..d614ae4 100644
--- a/icu4c/source/data/curr/fr_TN.txt
+++ b/icu4c/source/data/curr/fr_TN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_TN{
     Currencies{
         TND{
@@ -7,5 +8,4 @@
             "dinar tunisien",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fr_VU.txt b/icu4c/source/data/curr/fr_VU.txt
index 2f968c0..2a5012a 100644
--- a/icu4c/source/data/curr/fr_VU.txt
+++ b/icu4c/source/data/curr/fr_VU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_VU{
     Currencies{
         VUV{
@@ -7,5 +8,4 @@
             "vatu vanuatuan",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fur.txt b/icu4c/source/data/curr/fur.txt
index 8796f53..0f11556 100644
--- a/icu4c/source/data/curr/fur.txt
+++ b/icu4c/source/data/curr/fur.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fur{
     Currencies{
         AMD{
@@ -377,5 +378,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/fy.txt b/icu4c/source/data/curr/fy.txt
index e2a99ee..50c7bc2 100644
--- a/icu4c/source/data/curr/fy.txt
+++ b/icu4c/source/data/curr/fy.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fy{
     Currencies{
         ADP{
@@ -2377,5 +2378,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ga.txt b/icu4c/source/data/curr/ga.txt
index 2bc4ba3..4ed4bee 100644
--- a/icu4c/source/data/curr/ga.txt
+++ b/icu4c/source/data/curr/ga.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ga{
     Currencies{
         ADP{
@@ -250,6 +251,10 @@
             "CLP",
             "Peso na Sile",
         }
+        CNH{
+            "CNH",
+            "Yuan na Síne (seachairgeadra)",
+        }
         CNY{
             "CN¥",
             "Yuan na Síne",
@@ -372,7 +377,7 @@
         }
         FRF{
             "FRF",
-            "FRF",
+            "Franc na Fraince",
         }
         GBP{
             "£",
@@ -580,7 +585,7 @@
         }
         LUC{
             "LUC",
-            "LUC",
+            "Franc Inmhalartach Lucsamburgach",
         }
         LUF{
             "LUF",
@@ -592,7 +597,7 @@
         }
         LVR{
             "LVR",
-            "LVR",
+            "Rúbal na Laitvia",
         }
         LYD{
             "LYD",
@@ -684,7 +689,7 @@
         }
         MXV{
             "MXV",
-            "MXV",
+            "Aonad Infheistíochta Meicsiceach",
         }
         MYR{
             "MYR",
@@ -1112,7 +1117,7 @@
         }
         YUN{
             "YUN",
-            "YUN",
+            "Dinar Inmhalartaithe Iúgslavach (1990–1992)",
         }
         YUR{
             "YUR",
@@ -1663,6 +1668,13 @@
             other{"peso na Sile"}
             two{"pheso na Sile"}
         }
+        CNH{
+            few{"Yuan na Síne (seachairgeadra)"}
+            many{"Yuan na Síne (seachairgeadra)"}
+            one{"Yuan na Síne (seachairgeadra)"}
+            other{"Yuan na Síne (seachairgeadra)"}
+            two{"Yuan na Síne (seachairgeadra)"}
+        }
         CNY{
             few{"yuan na Síne"}
             many{"yuan na Síne"}
@@ -2202,6 +2214,13 @@
             other{"Talonas Liotuánach"}
             two{"Talonas Liotuánach"}
         }
+        LUC{
+            few{"Franc Inmhalartach Lucsamburgach"}
+            many{"Franc Inmhalartach Lucsamburgach"}
+            one{"Franc Inmhalartach Lucsamburgach"}
+            other{"Franc Inmhalartach Lucsamburgach"}
+            two{"Franc Inmhalartach Lucsamburgach"}
+        }
         LUF{
             few{"Franc Lucsamburg"}
             many{"Franc Lucsamburg"}
@@ -3169,5 +3188,4 @@
         other{"{0} {1}"}
         two{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/gd.txt b/icu4c/source/data/curr/gd.txt
index 20593a6..d5dc875 100644
--- a/icu4c/source/data/curr/gd.txt
+++ b/icu4c/source/data/curr/gd.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gd{
     Currencies{
         ADP{
@@ -1036,7 +1037,7 @@
         }
         UYW{
             "UYW",
-            "aonad inneacs tuarastail ainmeach Uruguaidh",
+            "Aonad inneacs tuarastail ainmeach Uruguaidh",
         }
         UZS{
             "UZS",
@@ -3144,5 +3145,4 @@
         other{"{0} {1}"}
         two{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/gl.txt b/icu4c/source/data/curr/gl.txt
index 9646104..603c285 100644
--- a/icu4c/source/data/curr/gl.txt
+++ b/icu4c/source/data/curr/gl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gl{
     Currencies{
         ADP{
@@ -477,7 +478,7 @@
         }
         MDL{
             "MDL",
-            "Leu moldavo",
+            "leu moldavo",
         }
         MGA{
             "MGA",
@@ -705,7 +706,7 @@
         }
         SZL{
             "SZL",
-            "lilangeni de Eswatini",
+            "lilangeni de Swazilandia",
         }
         THB{
             "฿",
@@ -1570,7 +1571,7 @@
             other{"libras sirias"}
         }
         SZL{
-            one{"lilangeni de Suacilandia"}
+            one{"lilangeni de Swazilandia"}
             other{"lilangenis de Eswatini"}
         }
         THB{
@@ -1690,5 +1691,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/gsw.txt b/icu4c/source/data/curr/gsw.txt
index b3fb6f9..3b57984 100644
--- a/icu4c/source/data/curr/gsw.txt
+++ b/icu4c/source/data/curr/gsw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gsw{
     Currencies{
         ADP{
@@ -2161,5 +2162,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/gu.txt b/icu4c/source/data/curr/gu.txt
index d7c9773..dc9108b 100644
--- a/icu4c/source/data/curr/gu.txt
+++ b/icu4c/source/data/curr/gu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gu{
     Currencies{
         AED{
@@ -1412,5 +1413,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/guz.txt b/icu4c/source/data/curr/guz.txt
index 3879741..41aacfd 100644
--- a/icu4c/source/data/curr/guz.txt
+++ b/icu4c/source/data/curr/guz.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 guz{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Dola ya Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/gv.txt b/icu4c/source/data/curr/gv.txt
index 63c855d..87aeded 100644
--- a/icu4c/source/data/curr/gv.txt
+++ b/icu4c/source/data/curr/gv.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gv{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ha.txt b/icu4c/source/data/curr/ha.txt
index 14a0d65..d582ba8 100644
--- a/icu4c/source/data/curr/ha.txt
+++ b/icu4c/source/data/curr/ha.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ha{
     Currencies{
         AED{
@@ -8,15 +9,15 @@
         }
         AFN{
             "AFN",
-            "Afghani na kasar Afghanistan",
+            "Afghani na ƙasar Afghanistan",
         }
         ALL{
             "ALL",
-            "Kudin Albanian",
+            "Kuɗin Albania",
         }
         AMD{
             "AMD",
-            "Kudin Armenian",
+            "Kuɗin Armenia",
         }
         ANG{
             "ANG",
@@ -40,11 +41,11 @@
         }
         AZN{
             "AZN",
-            "Kudin Azerbaijani",
+            "Kuɗin Azerbaijani",
         }
         BAM{
             "BAM",
-            "Kudaden Bosnia da Harzegovina",
+            "Kuɗaɗen Bosnia da Herzegovina",
         }
         BBD{
             "BBD",
@@ -52,11 +53,11 @@
         }
         BDT{
             "BDT",
-            "Taka na kasar Bangladesh",
+            "Taka na ƙasar Bangladesh",
         }
         BGN{
             "BGN",
-            "Kudin Bulgeria",
+            "Kuɗin Bulgeria",
         }
         BHD{
             "BHD",
@@ -72,7 +73,7 @@
         }
         BND{
             "BND",
-            "Kudin Brunei",
+            "Dalar Brunei",
         }
         BOB{
             "BOB",
@@ -88,7 +89,7 @@
         }
         BTN{
             "BTN",
-            "Ngultrum na kasar Bhutan",
+            "Ngultrum na ƙasar Bhutan",
         }
         BWP{
             "BWP",
@@ -96,7 +97,7 @@
         }
         BYN{
             "BYN",
-            "Kudin Belarusian",
+            "Kuɗin Belarus",
         }
         BZD{
             "BZD",
@@ -120,11 +121,11 @@
         }
         CNH{
             "CNH",
-            "Yuan na ƙasar Sin (na wajen ƙasa)",
+            "Yuwan na ƙasar Sin (na wajen ƙasa)",
         }
         CNY{
             "CN¥",
-            "Yuwan kasar Sin",
+            "Yuwan na ƙasar Sin",
         }
         COP{
             "COP",
@@ -132,15 +133,15 @@
         }
         CRC{
             "CRC",
-            "Colón na kasar Costa Rica",
+            "Colón na ƙasar Costa Rica",
         }
         CUC{
             "CUC",
-            "Peso mai fuska biyu na ƙasar Cuba",
+            "Peso mai fuska biyu na ƙasar Kuba",
         }
         CUP{
             "CUP",
-            "Peso na ƙasar Cuba",
+            "Peso na ƙasar Kuba",
         }
         CVE{
             "CVE",
@@ -148,7 +149,7 @@
         }
         CZK{
             "CZK",
-            "Kudin Czech",
+            "Kuɗin Czech",
         }
         DJF{
             "DJF",
@@ -196,7 +197,7 @@
         }
         GEL{
             "GEL",
-            "Kudin Georgian",
+            "Kuɗin Georgia",
         }
         GHC{
             "GHC",
@@ -204,11 +205,11 @@
         }
         GHS{
             "GHS",
-            "Kudin Ghana",
+            "Sidi na Ghana",
         }
         GIP{
             "GIP",
-            "Kudin Gibraltar",
+            "Kuɗin Gibraltal",
         }
         GMD{
             "GMD",
@@ -216,7 +217,7 @@
         }
         GNF{
             "GNF",
-            "Kudin Guinean",
+            "Kuɗin Guinea",
         }
         GNS{
             "GNS",
@@ -240,7 +241,7 @@
         }
         HRK{
             "HRK",
-            "Kudin Croatian",
+            "Kuɗin Croatia",
         }
         HTG{
             "HTG",
@@ -248,7 +249,7 @@
         }
         HUF{
             "HUF",
-            "Kudin Hungarian",
+            "Kuɗin Hungary",
         }
         IDR{
             "IDR",
@@ -256,7 +257,7 @@
         }
         ILS{
             "₪",
-            "Sabbin Kudin Shekel",
+            "Sabbin Kuɗin Israʼila",
         }
         INR{
             "₹",
@@ -268,7 +269,7 @@
         }
         IRR{
             "IRR",
-            "Riyal na kasar Iran",
+            "Riyal na ƙasar Iran",
         }
         ISK{
             "ISK",
@@ -280,11 +281,11 @@
         }
         JOD{
             "JOD",
-            "Dinarin Jordanian",
+            "Dinarin Jordan",
         }
         JPY{
             "¥",
-            "Yen kasar Japan",
+            "Yen na ƙasar Japan",
         }
         KES{
             "KES",
@@ -304,11 +305,11 @@
         }
         KPW{
             "KPW",
-            "Won na ƙasar Koreya ta Arewa",
+            "won na ƙasar Koriya ta Arewa",
         }
         KRW{
             "₩",
-            "Won na Koreya ta Kudu",
+            "won na Koriya ta Kudu",
         }
         KWD{
             "KWD",
@@ -324,15 +325,15 @@
         }
         LAK{
             "LAK",
-            "Kudin Laotian",
+            "Kuɗin Laos",
         }
         LBP{
             "LBP",
-            "Kudin Lebanese",
+            "Kuɗin Lebanon",
         }
         LKR{
             "LKR",
-            "Rupee na kasar Sri Lanka",
+            "Rupee na ƙasar Sri Lanka",
         }
         LRD{
             "LRD",
@@ -352,7 +353,7 @@
         }
         MDL{
             "MDL",
-            "kudaden Moldova",
+            "kuɗaɗen Moldova",
         }
         MGA{
             "MGA",
@@ -360,11 +361,11 @@
         }
         MKD{
             "MKD",
-            "Dinarin Macedonian",
+            "Dinarin Macedonia",
         }
         MMK{
             "MMK",
-            "Kudin Myanmar",
+            "Kuɗin Myanmar",
         }
         MNT{
             "MNT",
@@ -388,7 +389,7 @@
         }
         MVR{
             "MVR",
-            "Rufiyaa na kasar Maldives",
+            "Rufiyaa na ɓasar Maldives",
         }
         MWK{
             "MWK",
@@ -396,11 +397,11 @@
         }
         MXN{
             "MX$",
-            "Peso na ƙasar Mexico",
+            "Peso na ƙasar Mekziko",
         }
         MYR{
             "MYR",
-            "Kudin Malaysian",
+            "Kuɗin Malaysia",
         }
         MZM{
             "MZM",
@@ -436,7 +437,7 @@
         }
         OMR{
             "OMR",
-            "Riyal din Omani",
+            "Riyal ɗin Oman",
         }
         PAB{
             "PAB",
@@ -452,15 +453,15 @@
         }
         PHP{
             "PHP",
-            "Kudin Philippine",
+            "Kuɗin Philippine",
         }
         PKR{
             "PKR",
-            "Rupee na kasar Pakistan",
+            "Rupee na ƙasar Pakistan",
         }
         PLN{
             "PLN",
-            "Kudaden Polish",
+            "Kuɗin Polan",
         }
         PYG{
             "PYG",
@@ -468,19 +469,19 @@
         }
         QAR{
             "QAR",
-            "Riyal din Qatari",
+            "Riyal ɗin Qatar",
         }
         RON{
             "RON",
-            "Kudin Romanian",
+            "Kuɗin Romania",
         }
         RSD{
             "RSD",
-            "Dinar Serbian",
+            "Dinarin Serbia",
         }
         RUB{
             "RUB",
-            "Ruble kasar Rasha",
+            "Ruble na ƙasar Rasha",
         }
         RWF{
             "RWF",
@@ -500,7 +501,7 @@
         }
         SDG{
             "SDG",
-            "Fam kin Sudan",
+            "Fam na Sudan",
         }
         SEK{
             "SEK",
@@ -508,7 +509,7 @@
         }
         SGD{
             "SGD",
-            "Dilar Singapore",
+            "Dalar Singapore",
         }
         SHP{
             "SHP",
@@ -540,7 +541,7 @@
         }
         SYP{
             "SYP",
-            "Kudin Syrian",
+            "Kuɗin Siriya",
         }
         SZL{
             "SZL",
@@ -564,11 +565,11 @@
         }
         TOP{
             "TOP",
-            "Paʼanga na ƙasar Tonga",
+            "Paʻanga na ƙasar Tonga",
         }
         TRY{
             "TRY",
-            "Kudin Turkish",
+            "Kuɗin Turkiyya",
         }
         TTD{
             "TTD",
@@ -592,7 +593,7 @@
         }
         USD{
             "$",
-            "Dalar Amirka",
+            "Dalar Amurka",
         }
         UYU{
             "UYU",
@@ -608,7 +609,7 @@
         }
         VND{
             "₫",
-            "Kudin Vietnamese",
+            "Kuɗin Vietnam",
         }
         VUV{
             "VUV",
@@ -624,7 +625,7 @@
         }
         XCD{
             "EC$",
-            "Dalar Gabashin Caribbean",
+            "Dalar Gabashin Karebiyan",
         }
         XOF{
             "CFA",
@@ -632,7 +633,7 @@
         }
         XPF{
             "CFPF",
-            "kudin CFP Franc",
+            "Kuɗin CFP franc",
         }
         XXX{
             "¤",
@@ -640,7 +641,7 @@
         }
         YER{
             "YER",
-            "Riyal din Yemeni",
+            "Riyal ɗin Yemen",
         }
         ZAR{
             "ZAR",
@@ -664,16 +665,16 @@
     }
     CurrencyPlurals{
         AFN{
-            one{"Afghani na kasar Afghanistan"}
-            other{"Afghani na kasar Afghanistan"}
+            one{"Afghani na ƙasar Afghanistan"}
+            other{"Afghani na ƙasar Afghanistan"}
         }
         ALL{
-            one{"Kudin Albanian"}
-            other{"Kudin Albanian"}
+            one{"Kuɗin Albania"}
+            other{"Kuɗin Albania"}
         }
         AMD{
-            one{"kudin Armenian"}
-            other{"Kudin Armenian"}
+            one{"kuɗin Armenia"}
+            other{"Kuɗin Armenia"}
         }
         ANG{
             one{"Antillean guilder na ƙasar Netherlands"}
@@ -683,60 +684,64 @@
             one{"peso na ƙasar Argentina"}
             other{"Peso na ƙasar Argentina"}
         }
+        AUD{
+            one{"Dalolin Ostareliya"}
+            other{"Dalolin Ostareliya"}
+        }
         AWG{
             one{"florin na yankin Aruba"}
             other{"Florin na yankin Aruba"}
         }
         AZN{
-            one{"kudin Azerbaijani"}
-            other{"Kudin Azerbaijani"}
+            one{"kuɗin Azerbaijani"}
+            other{"Kuɗin Azerbaijani"}
         }
         BAM{
-            one{"Kudaden Bosnia da Herzegovina"}
-            other{"Kudaden Bosnia da Harzegovina"}
+            one{"Kuɗaɗen Bosnia da Herzegovina"}
+            other{"Kuɗaɗen Bosnia da Herzegovina"}
         }
         BBD{
             one{"dalar Barbados"}
             other{"Dalar ƙasar Barbados"}
         }
         BDT{
-            one{"taka na kasar Bangladesh"}
-            other{"Taka na kasar Bangladesh"}
+            one{"taka na ƙasar Bangladesh"}
+            other{"Taka na ƙasar Bangladesh"}
         }
         BGN{
-            one{"Kudin Bulgeria"}
-            other{"Kudin Bulgeria"}
+            one{"Kuɗin Bulgeria"}
+            other{"Kuɗin Bulgeria"}
         }
         BMD{
-            one{"dalar Bermuda"}
+            one{"Dalar Bermuda"}
             other{"Dalar ƙasar Bermuda"}
         }
         BND{
-            one{"kudin Brunei"}
-            other{"Kudin Brunei"}
+            one{"Dalar Brunei"}
+            other{"Dalolin Brunei"}
         }
         BOB{
             one{"boliviano na ƙasar Bolivia"}
             other{"Boloviano na ƙasar Bolivia"}
         }
         BRL{
-            one{"Ril Kudin Birazil"}
-            other{"Ril Kudin Birazil"}
+            one{"Ril Kuɗin Birazil"}
+            other{"Ril Kuɗin Birazil"}
         }
         BSD{
             one{"dalar ƙasar Bahamas"}
             other{"Dalar ƙasar Bahamas"}
         }
         BTN{
-            one{"ngultrum na kasar Bhutan"}
-            other{"Ngultrum na kasar Bhutan"}
+            one{"ngultrum na ƙasar Bhutan"}
+            other{"Ngultrum na ƙasar Bhutan"}
         }
         BYN{
-            one{"Kudin Belarusian"}
-            other{"Kudin Belarusian"}
+            one{"Kuɗin Belarus"}
+            other{"Kuɗin Belarus"}
         }
         BZD{
-            one{"dalar ƙasar Belize"}
+            one{"Dalar ƙasar Belize"}
             other{"Dalar ƙasar Belize"}
         }
         CLP{
@@ -744,32 +749,32 @@
             other{"Peso na ƙasar Chile"}
         }
         CNH{
-            one{"yuan na ƙasar Sin (na wajen ƙasa)"}
-            other{"Yuan na ƙasar Sin (na wajen ƙasa)"}
+            one{"yuwan na ƙasar Sin (na wajen ƙasa)"}
+            other{"yuwan na ƙasar Sin (na wajen ƙasa)"}
         }
         CNY{
-            one{"Yuwan kasar Sin"}
-            other{"Yuwan kasar Sin"}
+            one{"Yuwan na ƙasar Sin"}
+            other{"Yuwan na ƙasar Sin"}
         }
         COP{
             one{"peso na ƙasar Columbia"}
             other{"Peso na ƙasar Columbia"}
         }
         CRC{
-            one{"colón na kasar Costa Rica"}
-            other{"Colón na kasar Costa Rica"}
+            one{"colón na ƙasar Costa Rica"}
+            other{"colón na ƙasar Costa Rica"}
         }
         CUC{
             one{"peso mai fuska biyu na Cuba"}
-            other{"Peso mai fuska biyu na ƙasar Cuba"}
+            other{"Peso mai fuska biyu na ƙasar Kuba"}
         }
         CUP{
             one{"peso na ƙasar Cuba"}
-            other{"Peso na ƙasar Cuba"}
+            other{"Peso na ƙasar Kuba"}
         }
         CZK{
-            one{"kudin Czech"}
-            other{"Kudin Czech"}
+            one{"kuɗin Czech"}
+            other{"Kuɗin Czech"}
         }
         DKK{
             one{"krone na ƙasar Denmark"}
@@ -779,9 +784,17 @@
             one{"peso na jamhuriyar Dominica"}
             other{"Peso na jamhuriyar Dominica"}
         }
+        DZD{
+            one{"Dinarin Aljeriya"}
+            other{"Dinarin Aljeriya"}
+        }
+        EGP{
+            one{"Fam na Masar"}
+            other{"Fam na Masar"}
+        }
         FJD{
             one{"dalar Fiji"}
-            other{"Dalar Fiji"}
+            other{"Dalolin Fiji"}
         }
         FKP{
             one{"fam na Tsibirai na Falkland"}
@@ -792,20 +805,20 @@
             other{"Fam na Ingila"}
         }
         GEL{
-            one{"kudin Georgian"}
-            other{"Kudin Georgian"}
+            one{"kuɗin Georgia"}
+            other{"Kuɗin Georgia"}
         }
         GHS{
-            one{"kudin Ghanainian"}
-            other{"Kudin Ghana"}
+            one{"Sidi na Ghana"}
+            other{"Sidi na Ghana"}
         }
         GIP{
-            one{"Kudin Gibraltal"}
-            other{"Kudin Gibraltar"}
+            one{"Kuɗin Gibraltal"}
+            other{"Kuɗin Gibraltal"}
         }
         GNF{
-            one{"Kudin Guinean"}
-            other{"Kudin Guinean"}
+            one{"Kuɗin Guinea"}
+            other{"Kuɗin Guinea"}
         }
         GTQ{
             one{"quetzal na ƙasar Guatemala"}
@@ -824,32 +837,32 @@
             other{"Lempira na ƙasar Honduras"}
         }
         HRK{
-            one{"Kudin Croatian"}
-            other{"Kudin Croatian"}
+            one{"Kuɗin Croatia"}
+            other{"Kuɗin Croatia"}
         }
         HTG{
             one{"gourde na ƙasar Haiti"}
             other{"Gourde na ƙasar Haiti"}
         }
         HUF{
-            one{"kudin Hungarian"}
-            other{"Kudin Hungarian"}
+            one{"kuɗin Hungary"}
+            other{"Kuɗin Hungary"}
         }
         IDR{
             one{"rupiah na ƙasar Indonesia"}
             other{"Rupiah na ƙasar Indonesia"}
         }
         ILS{
-            one{"sabbin kudi Israeli"}
-            other{"Sabbin Kudin Shekel"}
+            one{"Sabbin Kuɗin Israʼila"}
+            other{"Sabbin Kuɗin Israʼila"}
         }
         IQD{
             one{"dinarin Iraqi"}
             other{"Dinarin Iraqi"}
         }
         IRR{
-            one{"Riyal-riyal na kasar Iran"}
-            other{"Riyal-riyal na kasar Iran"}
+            one{"Riyal-riyal na ƙasar Iran"}
+            other{"Riyal-riyal na ƙasar Iran"}
         }
         ISK{
             one{"króna na ƙasar Iceland"}
@@ -860,12 +873,12 @@
             other{"Dalar Jamaica"}
         }
         JOD{
-            one{"dinarin Jordanian"}
-            other{"Dinarin Jordanian"}
+            one{"dinarin Jordan"}
+            other{"Dinarin Jordan"}
         }
         JPY{
-            one{"Yen kasar Japan"}
-            other{"Yen kasar Japan"}
+            one{"Yen na ƙasar Japan"}
+            other{"Yen na ƙasar Japan"}
         }
         KGS{
             one{"som na ƙasar Kyrgystani"}
@@ -876,12 +889,12 @@
             other{"Riel na ƙasar Cambodia"}
         }
         KPW{
-            one{"won na ƙasar Koreya ta Arewa"}
-            other{"Won na ƙasar Koreya ta Arewa"}
+            one{"won na ƙasar Koriya ta Arewa"}
+            other{"won na ƙasar Koriya ta Arewa"}
         }
         KRW{
-            one{"won na Koreya ta Kudu"}
-            other{"Won na Koreya ta Kudu"}
+            one{"won na Koriya ta Kudu"}
+            other{"won na Koriya ta Kudu"}
         }
         KWD{
             one{"dinarin Kuwaiti"}
@@ -896,28 +909,36 @@
             other{"Tenge na ƙasar Kazkhstan"}
         }
         LAK{
-            one{"kudin Laotian"}
-            other{"Kudin Laotian"}
+            one{"kuɗin Laos"}
+            other{"Kuɗin Laos"}
         }
         LBP{
-            one{"kudin Lebanese"}
-            other{"Kudin Lebanese"}
+            one{"kuɗin Lebanon"}
+            other{"Kuɗin Lebanon"}
         }
         LKR{
-            one{"rupee na kasar Sri Lanka"}
-            other{"Rupee na kasar Sri Lanka"}
+            one{"rupee na ƙasar Sri Lanka"}
+            other{"Rupee na ƙasar Sri Lanka"}
+        }
+        LYD{
+            one{"Dinarin Libiya"}
+            other{"Dinarin Libiya"}
+        }
+        MAD{
+            one{"Dirhamin Maroko"}
+            other{"Dirhamomin Maroko"}
         }
         MDL{
-            one{"Kudaden Moldovan"}
-            other{"kudaden Moldova"}
+            one{"Kuɗaɗen Moldova"}
+            other{"kuɗaɗen Moldova"}
         }
         MKD{
-            one{"Dinarin Macedonian"}
-            other{"Dinarin Macedonian"}
+            one{"Dinarin Macedonia"}
+            other{"Dinarin Macedonia"}
         }
         MMK{
-            one{"kudin Myanmar"}
-            other{"Kudin Myanmar"}
+            one{"kuɗin Myanmar"}
+            other{"Kuɗin Myanmar"}
         }
         MNT{
             one{"tugrik na Mongoliya"}
@@ -928,24 +949,24 @@
             other{"Pataca na ƙasar Macao"}
         }
         MVR{
-            one{"rufiyaa na kasar Maldives"}
-            other{"Rufiyaa na kasar Maldives"}
+            one{"Rufiyaa na ɓasar Maldives"}
+            other{"Rufiyaa na ɓasar Maldives"}
         }
         MXN{
-            one{"peso na ƙasar Mexico"}
-            other{"Peso na ƙasar Mexico"}
+            one{"peso na ƙasar Mekziko"}
+            other{"peso na ƙasar Mekziko"}
         }
         MYR{
-            one{"kudin Malaysian"}
-            other{"Kudin Malaysian"}
+            one{"kuɗin Malaysia"}
+            other{"Kuɗin Malaysia"}
         }
         MZN{
             one{"metical na ƙasar Mozambique"}
             other{"Metical na ƙasar Mozambique"}
         }
         NGN{
-            one{"Nairar Najeriya"}
-            other{"Nairorin Najeriya"}
+            one{"Nairar Nijeriya"}
+            other{"Nairar Nijeriya"}
         }
         NIO{
             one{"córdoba na ƙasar Nicaragua"}
@@ -961,11 +982,11 @@
         }
         NZD{
             one{"dalar New Zealand"}
-            other{"Dalar New Zealand"}
+            other{"Dalolin New Zealand"}
         }
         OMR{
-            one{"Riyal din Omani"}
-            other{"Riyal din Omani"}
+            one{"Riyal ɗin Oman"}
+            other{"Riyal ɗin Oman"}
         }
         PAB{
             one{"balboa na ƙasar Panama"}
@@ -980,40 +1001,48 @@
             other{"Kina na ƙasar Papua Sabon Guinea"}
         }
         PHP{
-            one{"kudin Philippine"}
-            other{"Kudin Philippine"}
+            one{"kuɗin Philippine"}
+            other{"Kuɗin Philippine"}
         }
         PKR{
-            one{"rupee na kasar Pakistan"}
-            other{"Rupee na kasar Pakistan"}
+            one{"rupee na ƙasar Pakistan"}
+            other{"Rupee na ƙasar Pakistan"}
         }
         PLN{
-            one{"kudin Polish"}
-            other{"Kudaden Polish"}
+            one{"kuɗin Polan"}
+            other{"kuɗaɗen Polan"}
         }
         PYG{
             one{"guarani na ƙasar Paraguay"}
             other{"Guarani na ƙasar Paraguay"}
         }
         QAR{
-            one{"riyal Qatari"}
-            other{"Riyal din Qatari"}
+            one{"Riyal ɗin Qatar"}
+            other{"Riyal ɗin Qatar"}
         }
         RON{
-            one{"kudin Romanian"}
-            other{"Kudin Romanian"}
+            one{"kuɗin Romania"}
+            other{"Kuɗin Romania"}
         }
         RSD{
-            one{"dinarin Serbian"}
-            other{"Dinar Serbian"}
+            one{"dinarin Serbia"}
+            other{"Dinarin Serbia"}
         }
         RUB{
-            one{"Ruble kasar Rasha"}
-            other{"Ruble kasar Rasha"}
+            one{"Ruble na ƙasar Rasha"}
+            other{"Ruble na ƙasar Rasha"}
+        }
+        SAR{
+            one{"Riyal ɗin Saudiyya"}
+            other{"Riyal"}
         }
         SBD{
             one{"dalar Tsibirai na Solomon"}
-            other{"Dalar Tsibirai na Solomon"}
+            other{"Dalolin Tsibirai na Solomon"}
+        }
+        SDG{
+            one{"Fam na Sudan"}
+            other{"Fam na Sudan"}
         }
         SEK{
             one{"krona na ƙasar Sweden"}
@@ -1021,7 +1050,15 @@
         }
         SGD{
             one{"dalar Singapore"}
-            other{"Dilar Singapore"}
+            other{"Dalolin Singapore"}
+        }
+        SHP{
+            one{"Fam na San Helena"}
+            other{"Fam na San Helena"}
+        }
+        SLL{
+            one{"Kuɗin Saliyo"}
+            other{"Kuɗin Saliyo"}
         }
         SRD{
             one{"dalar ƙasar Suriname"}
@@ -1032,8 +1069,8 @@
             other{"Fam na Kudancin Sudan"}
         }
         SYP{
-            one{"Kudin Syrian"}
-            other{"Kudin Syrian"}
+            one{"Kuɗin Siriya"}
+            other{"Kuɗin Siriya"}
         }
         THB{
             one{"baht na ƙasar Thailand"}
@@ -1047,13 +1084,17 @@
             one{"manat na ƙasar Turkmenistan"}
             other{"Manat na ƙasar Turkmenistan"}
         }
+        TND{
+            one{"Dinarin Tunusiya"}
+            other{"Dinarin Tunusiya"}
+        }
         TOP{
-            one{"paʼanga na ƙasar Tonga"}
-            other{"Paʼanga na ƙasar Tonga"}
+            one{"paʻanga na ƙasar Tonga"}
+            other{"Paʻanga na ƙasar Tonga"}
         }
         TRY{
             one{"kudin Turkish"}
-            other{"Kudin Turkish"}
+            other{"Kuɗin Turkiyya"}
         }
         TTD{
             one{"dalar ƙasar Trinidad da Tobago"}
@@ -1064,12 +1105,16 @@
             other{"Sabuwar Dalar Taiwan"}
         }
         UAH{
-            one{"kudin Ukrainian"}
-            other{"Kudin Ukrainian"}
+            one{"kuɗin Ukrain"}
+            other{"Kuɗin Ukrain"}
+        }
+        UGX{
+            one{"Sulen Yuganda"}
+            other{"Sulen Yuganda"}
         }
         USD{
             one{"Dalar Amirka"}
-            other{"Dalar Amirka"}
+            other{"Dalar Amurka"}
         }
         UYU{
             one{"peso na ƙasar Uruguay"}
@@ -1084,8 +1129,8 @@
             other{"Bolívar na ƙasar Venezuela"}
         }
         VND{
-            one{"kudin Vietnamese"}
-            other{"Kudin Vietnamese"}
+            one{"kuɗin Vietnam"}
+            other{"Kuɗin Vietnam"}
         }
         VUV{
             one{"vatu na ƙasar Vanuatu"}
@@ -1096,21 +1141,20 @@
             other{"Tala na ƙasar Samoa"}
         }
         XCD{
-            one{"dalar Gabashin Caribbeaan"}
-            other{"Dalar Gabashin Caribbean"}
+            one{"dalar Gabashin Karebiyan"}
+            other{"dalar Gabashin Karebiyan"}
         }
         XPF{
-            one{"kudin CFP franc"}
-            other{"kudin CFP Franc"}
+            one{"kuɗin CFP franc"}
+            other{"Kuɗin CFP franc"}
         }
         XXX{
-            one{"Kudin sashe da ba a sani ba"}
+            one{"(kuɗin sashe da ba a sani ba)"}
             other{"(Kudin da ba a sani ba)"}
         }
         YER{
-            one{"riyal din Yemeni"}
-            other{"Riyal din Yemeni"}
+            one{"riyal ɗin Yemen"}
+            other{"Riyal ɗin Yemen"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ha_GH.txt b/icu4c/source/data/curr/ha_GH.txt
index fcf3952..0108556 100644
--- a/icu4c/source/data/curr/ha_GH.txt
+++ b/icu4c/source/data/curr/ha_GH.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ha_GH{
     Currencies{
         GHS{
             "GH₵",
-            "Kudin Ghana",
+            "Sidi na Ghana",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/haw.txt b/icu4c/source/data/curr/haw.txt
index 36a1671..451f982 100644
--- a/icu4c/source/data/curr/haw.txt
+++ b/icu4c/source/data/curr/haw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 haw{
     Currencies{
         USD{
@@ -11,5 +12,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/he.txt b/icu4c/source/data/curr/he.txt
index f1b0f4b..c4c7211 100644
--- a/icu4c/source/data/curr/he.txt
+++ b/icu4c/source/data/curr/he.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 he{
     Currencies{
         ADP{
@@ -1998,5 +1999,4 @@
         other{"{0} {1}"}
         two{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/he_IL.txt b/icu4c/source/data/curr/he_IL.txt
index 7103953..21ee915 100644
--- a/icu4c/source/data/curr/he_IL.txt
+++ b/icu4c/source/data/curr/he_IL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/hi.txt b/icu4c/source/data/curr/hi.txt
index a26e0df..7703cac 100644
--- a/icu4c/source/data/curr/hi.txt
+++ b/icu4c/source/data/curr/hi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hi{
     Currencies{
         AED{
@@ -94,6 +95,10 @@
             "BTN",
             "भूटानी नंगलट्रम",
         }
+        BUK{
+            "BUK",
+            "बर्मी क्यात",
+        }
         BWP{
             "BWP",
             "बोत्सवानियाई पुला",
@@ -634,6 +639,10 @@
             "TOP",
             "टोंगन पांगा",
         }
+        TPE{
+            "TPE",
+            "तिमोरी एस्कूडो",
+        }
         TRL{
             "TRL",
             "पुरानी तुर्की लीरा",
@@ -698,6 +707,10 @@
             "₫",
             "वियतनामी डोंग",
         }
+        VNN{
+            "VNN",
+            "वियतनामी डोंग (1978–1985)",
+        }
         VUV{
             "VUV",
             "वनुआतू वातू",
@@ -714,6 +727,10 @@
             "EC$",
             "पूर्वी कैरिबियाई डॉलर",
         }
+        XEU{
+            "XEU",
+            "यूरोपीय मुद्रा इकाई",
+        }
         XOF{
             "CFA",
             "पश्चिमी अफ़्रीकी CFA फ़्रैंक",
@@ -1468,6 +1485,10 @@
             one{"पूर्वी कैरिबियाई डॉलर"}
             other{"पूर्वी कैरिबियाई डॉलर"}
         }
+        XEU{
+            one{"यूरोपीय मुद्रा इकाई"}
+            other{"यूरोपीय मुद्रा इकाई"}
+        }
         XOF{
             one{"पश्चिमी अफ़्रीकी CFA फ़्रैंक"}
             other{"पश्चिमी अफ़्रीकी CFA फ़्रैंक"}
@@ -1497,5 +1518,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/hr.txt b/icu4c/source/data/curr/hr.txt
index 015f228..a2dd6bd 100644
--- a/icu4c/source/data/curr/hr.txt
+++ b/icu4c/source/data/curr/hr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hr{
     Currencies{
         ADP{
@@ -1212,9 +1213,12 @@
         }
     }
     Currencies%narrow{
+        AFN{"؋"}
+        AMD{"֏"}
         AOA{"Kz"}
         ARS{"$"}
         AUD{"$"}
+        AZN{"₼"}
         BAM{"KM"}
         BBD{"$"}
         BDT{"৳"}
@@ -1243,6 +1247,7 @@
         FKP{"£"}
         GBP{"£"}
         GEL{"₾"}
+        GHS{"GH₵"}
         GIP{"£"}
         GNF{"FG"}
         GTQ{"Q"}
@@ -2735,9 +2740,9 @@
             other{"obračunskih jedinica ADB"}
         }
         XXX{
-            few{"nepoznata valuta"}
-            one{"nepoznata valuta"}
-            other{"nepoznata valuta"}
+            few{"(nepoznata valuta)"}
+            one{"(nepoznata valuta)"}
+            other{"(nepoznata valuta)"}
         }
         YDD{
             few{"jemenska dinara"}
@@ -2820,5 +2825,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/hr_BA.txt b/icu4c/source/data/curr/hr_BA.txt
index 2922619..ae4dc87 100644
--- a/icu4c/source/data/curr/hr_BA.txt
+++ b/icu4c/source/data/curr/hr_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hr_BA{
     Currencies{
         BAM{
@@ -7,5 +8,4 @@
             "konvertibilna marka",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/hsb.txt b/icu4c/source/data/curr/hsb.txt
index 9fb58c7..97d2687 100644
--- a/icu4c/source/data/curr/hsb.txt
+++ b/icu4c/source/data/curr/hsb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hsb{
     Currencies{
         ADP{
@@ -1884,5 +1885,4 @@
         other{"{0} {1}"}
         two{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/hu.txt b/icu4c/source/data/curr/hu.txt
index d315928..3cd5a50 100644
--- a/icu4c/source/data/curr/hu.txt
+++ b/icu4c/source/data/curr/hu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hu{
     Currencies{
         ADP{
@@ -280,7 +281,7 @@
         }
         CVE{
             "CVE",
-            "Cape Verde-i escudo",
+            "Zöld-foki escudo",
         }
         CYP{
             "CYP",
@@ -1517,8 +1518,8 @@
             other{"kubai peso"}
         }
         CVE{
-            one{"Cape Verde-i escudo"}
-            other{"Cape Verde-i escudo"}
+            one{"Zöld-foki escudo"}
+            other{"Zöld-foki escudo"}
         }
         CZK{
             one{"cseh korona"}
@@ -2193,5 +2194,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/hy.txt b/icu4c/source/data/curr/hy.txt
index 3ce40ae..1675f76 100644
--- a/icu4c/source/data/curr/hy.txt
+++ b/icu4c/source/data/curr/hy.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hy{
     Currencies{
         AED{
@@ -1413,5 +1414,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ia.txt b/icu4c/source/data/curr/ia.txt
index 6cac60e..172957f 100644
--- a/icu4c/source/data/curr/ia.txt
+++ b/icu4c/source/data/curr/ia.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ia{
     Currencies{
         ALL{
@@ -953,5 +954,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/id.txt b/icu4c/source/data/curr/id.txt
index f51cab7..ea7e668 100644
--- a/icu4c/source/data/curr/id.txt
+++ b/icu4c/source/data/curr/id.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 id{
     Currencies{
         ADP{
@@ -304,7 +305,7 @@
         }
         CZK{
             "CZK",
-            "Koruna Cheska",
+            "Koruna Ceko",
         }
         DDM{
             "DDM",
@@ -328,7 +329,7 @@
         }
         DZD{
             "DZD",
-            "Dinar Algeria",
+            "Dinar Aljazair",
         }
         ECS{
             "ECS",
@@ -532,7 +533,7 @@
         }
         KGS{
             "KGS",
-            "Som Kirgistan",
+            "Som Kirgizstan",
         }
         KHR{
             "KHR",
@@ -568,7 +569,7 @@
         }
         KZT{
             "KZT",
-            "Tenge Kazakstan",
+            "Tenge Kazakhstan",
         }
         LAK{
             "LAK",
@@ -800,7 +801,7 @@
         }
         PLN{
             "PLN",
-            "Polandia Zloty",
+            "Zloty Polandia",
         }
         PLZ{
             "PLZ",
@@ -952,7 +953,7 @@
         }
         TMT{
             "TMT",
-            "Manat Turkimenistan",
+            "Manat Turkmenistan",
         }
         TND{
             "TND",
@@ -1060,7 +1061,7 @@
         }
         XAF{
             "FCFA",
-            "Franc CFA BEAC",
+            "Franc CFA Afrika Tengah",
         }
         XAG{
             "XAG",
@@ -1108,7 +1109,7 @@
         }
         XOF{
             "CFA",
-            "Franc CFA BCEAO",
+            "Franc CFA Afrika Barat",
         }
         XPD{
             "XPD",
@@ -1466,7 +1467,7 @@
             other{"Escudo Tanjung Verde"}
         }
         CZK{
-            other{"Koruna Cheska"}
+            other{"Koruna Ceko"}
         }
         DJF{
             other{"Franc Jibuti"}
@@ -1478,7 +1479,7 @@
             other{"Peso Dominika"}
         }
         DZD{
-            other{"Dinar Algeria"}
+            other{"Dinar Aljazair"}
         }
         EGP{
             other{"Pound Mesir"}
@@ -1577,7 +1578,7 @@
             other{"Shilling Kenya"}
         }
         KGS{
-            other{"Som Kirgistan"}
+            other{"Som Kirgizstan"}
         }
         KHR{
             other{"Riel Kamboja"}
@@ -1604,7 +1605,7 @@
             other{"Dolar Kepulauan Cayman"}
         }
         KZT{
-            other{"Tenge Kazakstan"}
+            other{"Tenge Kazakhstan"}
         }
         LAK{
             other{"Kip Laos"}
@@ -1727,7 +1728,7 @@
             other{"Rupee Pakistan"}
         }
         PLN{
-            other{"Polandia Zloty"}
+            other{"Zloty Polandia"}
         }
         PLZ{
             other{"Zloty Polandia (1950–1995)"}
@@ -1817,7 +1818,7 @@
             other{"Manat Turkmenistan (1993–2009)"}
         }
         TMT{
-            other{"Manat Turkimenistan"}
+            other{"Manat Turkmenistan"}
         }
         TND{
             other{"Dinar Tunisia"}
@@ -1883,13 +1884,13 @@
             other{"Tala Samoa"}
         }
         XAF{
-            other{"Franc CFA BEAC"}
+            other{"Franc CFA Afrika Tengah"}
         }
         XCD{
             other{"Dolar Karibia Timur"}
         }
         XOF{
-            other{"Franc CFA BCEAO"}
+            other{"Franc CFA Afrika Barat"}
         }
         XPF{
             other{"Franc CFP"}
@@ -1934,5 +1935,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/id_ID.txt b/icu4c/source/data/curr/id_ID.txt
index 20daa23..63f19a2 100644
--- a/icu4c/source/data/curr/id_ID.txt
+++ b/icu4c/source/data/curr/id_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/ig.txt b/icu4c/source/data/curr/ig.txt
index be9c469..8c48f5a 100644
--- a/icu4c/source/data/curr/ig.txt
+++ b/icu4c/source/data/curr/ig.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ig{
     Currencies{
         AED{
@@ -788,5 +789,4 @@
             other{"Ego kwachas obodo Zambia"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ii.txt b/icu4c/source/data/curr/ii.txt
index 17e7341..a7e14a1 100644
--- a/icu4c/source/data/curr/ii.txt
+++ b/icu4c/source/data/curr/ii.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ii{
     Currencies{
         CNY{
@@ -14,5 +15,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/in.txt b/icu4c/source/data/curr/in.txt
index 0233523..e2df169 100644
--- a/icu4c/source/data/curr/in.txt
+++ b/icu4c/source/data/curr/in.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 in{
     "%%ALIAS"{"id"}
 }
diff --git a/icu4c/source/data/curr/in_ID.txt b/icu4c/source/data/curr/in_ID.txt
index acec72c..03f2387 100644
--- a/icu4c/source/data/curr/in_ID.txt
+++ b/icu4c/source/data/curr/in_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 in_ID{
     "%%ALIAS"{"id_ID"}
 }
diff --git a/icu4c/source/data/curr/is.txt b/icu4c/source/data/curr/is.txt
index 76d95ac..d89c063 100644
--- a/icu4c/source/data/curr/is.txt
+++ b/icu4c/source/data/curr/is.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 is{
     Currencies{
         ADP{
@@ -564,7 +565,7 @@
         }
         NIO{
             "NIO",
-            "níkaraögsk kordóva",
+            "níkarögsk kordóva",
         }
         NLG{
             "NLG",
@@ -1644,5 +1645,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/it.txt b/icu4c/source/data/curr/it.txt
index a333c7b..b41c318 100644
--- a/icu4c/source/data/curr/it.txt
+++ b/icu4c/source/data/curr/it.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 it{
     Currencies{
         ADP{
@@ -443,7 +444,7 @@
             "nuovo siclo israeliano",
         }
         INR{
-            "₹",
+            "INR",
             "rupia indiana",
         }
         IQD{
@@ -589,7 +590,11 @@
         }
         MKD{
             "MKD",
-            "denar macedone",
+            "dinaro macedone",
+        }
+        MKN{
+            "MKN",
+            "dinaro macedone (1992–1993)",
         }
         MLF{
             "MLF",
@@ -964,7 +969,7 @@
             "bolívar venezuelano",
         }
         VND{
-            "₫",
+            "VND",
             "dong vietnamita",
         }
         VUV{
@@ -1081,7 +1086,7 @@
         }
         ZMW{
             "ZMW",
-            "kwacha dello Zambia",
+            "kwacha zambiano",
         }
         ZRN{
             "ZRN",
@@ -1218,7 +1223,7 @@
         }
         ANG{
             one{"fiorino delle Antille olandesi"}
-            other{"fiorino delle Antille olandesi"}
+            other{"fiorini delle Antille olandesi"}
         }
         AOA{
             one{"kwanza angolano"}
@@ -1472,6 +1477,10 @@
             one{"corona islandese"}
             other{"corone islandesi"}
         }
+        ITL{
+            one{"lire italiane"}
+            other{"lire italiane"}
+        }
         JMD{
             one{"dollaro giamaicano"}
             other{"dollari giamaicani"}
@@ -1486,7 +1495,7 @@
         }
         KES{
             one{"scellino keniota"}
-            other{"scellini keniota"}
+            other{"scellini kenioti"}
         }
         KGS{
             one{"som kirghiso"}
@@ -1564,6 +1573,10 @@
             one{"dinaro macedone"}
             other{"dinari macedoni"}
         }
+        MKN{
+            one{"dinaro macedone (1992–1993)"}
+            other{"dinari macedoni (1992–1993)"}
+        }
         MMK{
             one{"kyat di Myanmar"}
             other{"kyat di Myanmar"}
@@ -1877,5 +1890,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/iw.txt b/icu4c/source/data/curr/iw.txt
index d59865d..4aa2f62 100644
--- a/icu4c/source/data/curr/iw.txt
+++ b/icu4c/source/data/curr/iw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 iw{
     "%%ALIAS"{"he"}
 }
diff --git a/icu4c/source/data/curr/iw_IL.txt b/icu4c/source/data/curr/iw_IL.txt
index cf1666a..984aefd 100644
--- a/icu4c/source/data/curr/iw_IL.txt
+++ b/icu4c/source/data/curr/iw_IL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 iw_IL{
     "%%ALIAS"{"he_IL"}
 }
diff --git a/icu4c/source/data/curr/ja.txt b/icu4c/source/data/curr/ja.txt
index f7853ae..23037a5 100644
--- a/icu4c/source/data/curr/ja.txt
+++ b/icu4c/source/data/curr/ja.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ja{
     Currencies{
         ADP{
@@ -80,7 +81,7 @@
         }
         AWG{
             "AWG",
-            "アルバ ギルダー",
+            "アルバ フロリン",
         }
         AZM{
             "AZM",
@@ -1371,7 +1372,7 @@
             other{"オーストラリア ドル"}
         }
         AWG{
-            other{"アルバ ギルダー"}
+            other{"アルバ フロリン"}
         }
         AZM{
             other{"アゼルバイジャン マナト (1993–2006)"}
@@ -2223,5 +2224,4 @@
     CurrencyUnitPatterns{
         other{"{0}{1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/jgo.txt b/icu4c/source/data/curr/jgo.txt
index 6c780b1..8c9d21e 100644
--- a/icu4c/source/data/curr/jgo.txt
+++ b/icu4c/source/data/curr/jgo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jgo{
     Currencies{
         CAD{
@@ -23,5 +24,4 @@
             "ntɛ-ŋkáp yi pɛ́ ká kɛ́ jínɛ",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/jmc.txt b/icu4c/source/data/curr/jmc.txt
index f01f797..6eb956c 100644
--- a/icu4c/source/data/curr/jmc.txt
+++ b/icu4c/source/data/curr/jmc.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jmc{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Dola ya Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/jv.txt b/icu4c/source/data/curr/jv.txt
index 833b794..1683c22 100644
--- a/icu4c/source/data/curr/jv.txt
+++ b/icu4c/source/data/curr/jv.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jv{
     Currencies{
         AED{
@@ -1114,5 +1115,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ka.txt b/icu4c/source/data/curr/ka.txt
index 6c86efc..2f33c3f 100644
--- a/icu4c/source/data/curr/ka.txt
+++ b/icu4c/source/data/curr/ka.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ka{
     Currencies{
         ADP{
@@ -616,7 +617,7 @@
         }
         NIO{
             "NIO",
-            "ნიკარაგუული კორდობა",
+            "ნიკარაგუას ოქროს კორდობა",
         }
         NLG{
             "NLG",
@@ -1748,5 +1749,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/kab.txt b/icu4c/source/data/curr/kab.txt
index 81a77fe..9c5c371 100644
--- a/icu4c/source/data/curr/kab.txt
+++ b/icu4c/source/data/curr/kab.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kab{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Adular Azimbabwi",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/kam.txt b/icu4c/source/data/curr/kam.txt
index 331760a..473b003 100644
--- a/icu4c/source/data/curr/kam.txt
+++ b/icu4c/source/data/curr/kam.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kam{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Ndola ya Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/kde.txt b/icu4c/source/data/curr/kde.txt
index 1ca0a3d..45bad5f 100644
--- a/icu4c/source/data/curr/kde.txt
+++ b/icu4c/source/data/curr/kde.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kde{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Dola ya Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/kea.txt b/icu4c/source/data/curr/kea.txt
index 4d3c8bf..6672ae0 100644
--- a/icu4c/source/data/curr/kea.txt
+++ b/icu4c/source/data/curr/kea.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kea{
     Currencies{
         AED{
@@ -125,7 +126,7 @@
         }
         EUR{
             "€",
-            "Euro",
+            "euro",
         }
         FKP{
             "FKP",
@@ -417,7 +418,7 @@
         }
         STD{
             "STD",
-            "Dobra di Sãu Tume i Prínsipi (1977–2017)",
+            "Dobra di San Tume i Prínsipi (1977–2017)",
         }
         STN{
             "STN",
@@ -461,7 +462,7 @@
         }
         TZS{
             "TZS",
-            "Xelin di Tanzania",
+            "Xelin di Tanzánia",
         }
         UGX{
             "UGX",
@@ -613,7 +614,7 @@
             other{"Bir etiópiku"}
         }
         EUR{
-            other{"Euro"}
+            other{"euro"}
         }
         GBP{
             other{"Libra britániku"}
@@ -709,10 +710,7 @@
             other{"Xelin somalianu"}
         }
         STD{
-            other{"Dobra di Sãu Tume i Prinsipi (1977–2017)"}
-        }
-        STN{
-            other{"Dobra di San Tume i Prinsipi"}
+            other{"Dobra di San Tume i Prínsipi (1977–2017)"}
         }
         SZL{
             other{"Lilanjeni"}
@@ -730,7 +728,7 @@
             other{"Dola Novu di Taiwan"}
         }
         TZS{
-            other{"Xelin di Tanzania"}
+            other{"Xelin di Tanzánia"}
         }
         UGX{
             other{"Xelin ugandensi"}
@@ -757,5 +755,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/khq.txt b/icu4c/source/data/curr/khq.txt
index 0ed2ac1..ea0efab 100644
--- a/icu4c/source/data/curr/khq.txt
+++ b/icu4c/source/data/curr/khq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 khq{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Zimbabwe Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ki.txt b/icu4c/source/data/curr/ki.txt
index 08247a3..396ea8c 100644
--- a/icu4c/source/data/curr/ki.txt
+++ b/icu4c/source/data/curr/ki.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ki{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Dola ya Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/kk.txt b/icu4c/source/data/curr/kk.txt
index 4a40333..a2b8158 100644
--- a/icu4c/source/data/curr/kk.txt
+++ b/icu4c/source/data/curr/kk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kk{
     Currencies{
         AED{
@@ -1403,5 +1404,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/kkj.txt b/icu4c/source/data/curr/kkj.txt
index 7e346b6..b657a99 100644
--- a/icu4c/source/data/curr/kkj.txt
+++ b/icu4c/source/data/curr/kkj.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kkj{
     Currencies{
         XAF{
@@ -7,5 +8,4 @@
             "Franc CFA",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/kl.txt b/icu4c/source/data/curr/kl.txt
index e4b31cb..1735a1f 100644
--- a/icu4c/source/data/curr/kl.txt
+++ b/icu4c/source/data/curr/kl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kl{
     Currencies{
         DKK{
@@ -17,5 +18,4 @@
             other{"euro"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/kln.txt b/icu4c/source/data/curr/kln.txt
index b544538..bccb192 100644
--- a/icu4c/source/data/curr/kln.txt
+++ b/icu4c/source/data/curr/kln.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kln{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Dolaitab ya Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/km.txt b/icu4c/source/data/curr/km.txt
index 90d7442..ae8b360 100644
--- a/icu4c/source/data/curr/km.txt
+++ b/icu4c/source/data/curr/km.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 km{
     Currencies{
         AED{
@@ -72,7 +73,7 @@
         }
         BND{
             "BND",
-            "ដុល្លារ​ប្រុយណេ",
+            "ដុល្លារព្រុយណេ",
         }
         BOB{
             "BOB",
@@ -124,11 +125,11 @@
         }
         CNH{
             "CNH",
-            "យ៉ន់ចិន (ក្រៅប្រទេស)",
+            "យ័នចិន (ក្រៅប្រទេស)",
         }
         CNY{
             "CN¥",
-            "យ៉ន់​ចិន",
+            "យ័នចិន",
         }
         COP{
             "COP",
@@ -416,7 +417,7 @@
         }
         NIO{
             "NIO",
-            "ខឌូបា​នីការ៉ាហ្គា",
+            "ខឌូបា​នីការ៉ាហ្កា",
         }
         NOK{
             "NOK",
@@ -761,9 +762,6 @@
         ALL{
             other{"លិក​អាល់បានី"}
         }
-        AMD{
-            other{"ដ្រាំ អាមេនី"}
-        }
         ANG{
             other{"ហ្គីឌិន​ហុល្លង់​អង់ទីលៀន"}
         }
@@ -804,7 +802,7 @@
             other{"ដុល្លារ​ប៊ឺមុយដា"}
         }
         BND{
-            other{"ដុល្លារ​ប្រុយណេ"}
+            other{"ដុល្លារព្រុយណេ"}
         }
         BOB{
             other{"បូលីវីណូ​បូលីវី"}
@@ -843,10 +841,10 @@
             other{"ប៉េសូឈីលី"}
         }
         CNH{
-            other{"យ៉ន់ចិន (ក្រៅប្រទេស)"}
+            other{"យ័នចិន (ក្រៅប្រទេស)"}
         }
         CNY{
-            other{"យ៉ន់​ចិន"}
+            other{"យ័នចិន"}
         }
         COP{
             other{"ប៉េសូកូឡុំប៊ី"}
@@ -1062,7 +1060,7 @@
             other{"ណៃរ៉ា​នីហ្សេរីយ៉ា"}
         }
         NIO{
-            other{"ខឌូបា​នីការ៉ាហ្គា"}
+            other{"ខឌូបា​នីការ៉ាហ្កា"}
         }
         NOK{
             other{"ក្រូណេ​ន័រវ៉េ"}
@@ -1242,5 +1240,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/kn.txt b/icu4c/source/data/curr/kn.txt
index a326c8e..29d34c4 100644
--- a/icu4c/source/data/curr/kn.txt
+++ b/icu4c/source/data/curr/kn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kn{
     Currencies{
         AED{
@@ -660,9 +661,12 @@
         }
     }
     Currencies%narrow{
+        AFN{"؋"}
+        AMD{"֏"}
         AOA{"Kz"}
         ARS{"$"}
         AUD{"$"}
+        AZN{"₼"}
         BAM{"KM"}
         BBD{"$"}
         BDT{"৳"}
@@ -690,6 +694,7 @@
         FKP{"£"}
         GBP{"£"}
         GEL{"₾"}
+        GHS{"GH₵"}
         GIP{"£"}
         GNF{"FG"}
         GTQ{"Q"}
@@ -1413,5 +1418,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ko.txt b/icu4c/source/data/curr/ko.txt
index c0a9ba1..5793d99 100644
--- a/icu4c/source/data/curr/ko.txt
+++ b/icu4c/source/data/curr/ko.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ko{
     Currencies{
         ADP{
@@ -388,7 +389,7 @@
         }
         GBP{
             "£",
-            "파운드",
+            "영국 파운드",
         }
         GEK{
             "GEK",
@@ -1330,7 +1331,7 @@
             other{"볼리비아노"}
         }
         BRL{
-            other{"브라질 헤알"}
+            other{"브라질 레알"}
         }
         BSD{
             other{"바하마 달러"}
@@ -1417,7 +1418,7 @@
             other{"포클랜드제도 파운드"}
         }
         GBP{
-            other{"영국령 파운드 스털링"}
+            other{"영국 파운드"}
         }
         GEL{
             other{"조지아 라리"}
@@ -1762,5 +1763,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/kok.txt b/icu4c/source/data/curr/kok.txt
index fe51ef8..183c151 100644
--- a/icu4c/source/data/curr/kok.txt
+++ b/icu4c/source/data/curr/kok.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kok{
     Currencies{
         AED{
@@ -1195,5 +1196,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ks.txt b/icu4c/source/data/curr/ks.txt
index cb51673..2aaaf34 100644
--- a/icu4c/source/data/curr/ks.txt
+++ b/icu4c/source/data/curr/ks.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks{
     Currencies{
         ADP{
@@ -1019,5 +1020,4 @@
             "زِمبابِیُک ڈالَر",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ks_Arab.txt b/icu4c/source/data/curr/ks_Arab.txt
index aafa093..f3d2206 100644
--- a/icu4c/source/data/curr/ks_Arab.txt
+++ b/icu4c/source/data/curr/ks_Arab.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks_Arab{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ks_Arab_IN.txt b/icu4c/source/data/curr/ks_Arab_IN.txt
index a13c0c9..2d29f4c 100644
--- a/icu4c/source/data/curr/ks_Arab_IN.txt
+++ b/icu4c/source/data/curr/ks_Arab_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/ks_IN.txt b/icu4c/source/data/curr/ks_IN.txt
index fd8b52d..bd1a225 100644
--- a/icu4c/source/data/curr/ks_IN.txt
+++ b/icu4c/source/data/curr/ks_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks_IN{
     "%%ALIAS"{"ks_Arab_IN"}
 }
diff --git a/icu4c/source/data/curr/ksb.txt b/icu4c/source/data/curr/ksb.txt
index 488a6ab..27297e4 100644
--- a/icu4c/source/data/curr/ksb.txt
+++ b/icu4c/source/data/curr/ksb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksb{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "dola ya Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ksf.txt b/icu4c/source/data/curr/ksf.txt
index 88f7b0e..dbffe99 100644
--- a/icu4c/source/data/curr/ksf.txt
+++ b/icu4c/source/data/curr/ksf.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksf{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "mɔni mǝ á zimbabwɛ́",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ksh.txt b/icu4c/source/data/curr/ksh.txt
index cb36983..bff0441 100644
--- a/icu4c/source/data/curr/ksh.txt
+++ b/icu4c/source/data/curr/ksh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksh{
     Currencies{
         AED{
@@ -912,5 +913,4 @@
         other{"{0} {1}"}
         zero{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ku.txt b/icu4c/source/data/curr/ku.txt
index 6eee85b..c4a0c9e 100644
--- a/icu4c/source/data/curr/ku.txt
+++ b/icu4c/source/data/curr/ku.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ku{
     Currencies{
         EUR{
@@ -21,5 +22,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/kw.txt b/icu4c/source/data/curr/kw.txt
index 5e7c801..c7bcb9f 100644
--- a/icu4c/source/data/curr/kw.txt
+++ b/icu4c/source/data/curr/kw.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kw{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ky.txt b/icu4c/source/data/curr/ky.txt
index 6beea54..2c6716c 100644
--- a/icu4c/source/data/curr/ky.txt
+++ b/icu4c/source/data/curr/ky.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ky{
     Currencies{
         AED{
@@ -124,7 +125,7 @@
         }
         CNH{
             "CNH",
-            "Кытай юаны (офшор)",
+            "Кытай юаны (оффшор)",
         }
         CNY{
             "CN¥",
@@ -300,11 +301,11 @@
         }
         KPW{
             "KPW",
-            "Түндүк Корея уону",
+            "Түндүк Корея вону",
         }
         KRW{
             "KRW",
-            "Түштүк Корея уону",
+            "Түштүк Корея вону",
         }
         KWD{
             "KWD",
@@ -794,7 +795,7 @@
         }
         BAM{
             one{"босния-герцоговина конвертациялануучу маркасы"}
-            other{"босния-герцоговина конвертациялануучу маркалары"}
+            other{"босния-герцоговина конвертациялануучу маркасы"}
         }
         BBD{
             one{"барбадос доллары"}
@@ -858,7 +859,7 @@
         }
         CAD{
             one{"канада доллары"}
-            other{"канада долларлары"}
+            other{"канада доллары"}
         }
         CDF{
             one{"Конго франкы"}
@@ -873,8 +874,8 @@
             other{"чили песосу"}
         }
         CNH{
-            one{"Кытай юаны (офшор)"}
-            other{"Кытай юаны (офшор)"}
+            one{"Кытай юаны (оффшор)"}
+            other{"Кытай юаны (оффшор)"}
         }
         CNY{
             one{"Кытай юаны"}
@@ -890,7 +891,7 @@
         }
         CUC{
             one{"кубанын конвертациялануучу песосу"}
-            other{"кубанын конвертациялануучу песолору"}
+            other{"кубанын конвертациялануучу песосу"}
         }
         CUP{
             one{"куба песосу"}
@@ -934,7 +935,7 @@
         }
         EUR{
             one{"евро"}
-            other{"евролор"}
+            other{"евро"}
         }
         FJD{
             one{"Фижи доллары"}
@@ -1050,11 +1051,11 @@
         }
         KPW{
             one{"Түндүк Корея уону"}
-            other{"Түндүк Корея уону"}
+            other{"Түндүк Корея вону"}
         }
         KRW{
-            one{"Түштүк Корея уону"}
-            other{"Түштүк Корея уону"}
+            one{"Түштүк Корея вону"}
+            other{"Түштүк Корея вону"}
         }
         KWD{
             one{"Кувейт динары"}
@@ -1238,7 +1239,7 @@
         }
         SBD{
             one{"Соломон аралдарынын доллары"}
-            other{"Соломон аралдарынын долларлары"}
+            other{"Соломон аралдарынын доллары"}
         }
         SCR{
             one{"Сейшел руписи"}
@@ -1405,5 +1406,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/lag.txt b/icu4c/source/data/curr/lag.txt
index e1d75c6..9df15f3 100644
--- a/icu4c/source/data/curr/lag.txt
+++ b/icu4c/source/data/curr/lag.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lag{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Dóola ya Simbáabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/lb.txt b/icu4c/source/data/curr/lb.txt
index 1874ec2..5c74b62 100644
--- a/icu4c/source/data/curr/lb.txt
+++ b/icu4c/source/data/curr/lb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lb{
     Currencies{
         ADP{
@@ -2249,5 +2250,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/lg.txt b/icu4c/source/data/curr/lg.txt
index e551481..e964c17 100644
--- a/icu4c/source/data/curr/lg.txt
+++ b/icu4c/source/data/curr/lg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lg{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Doola ey’eZimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/lkt.txt b/icu4c/source/data/curr/lkt.txt
index c5eb8df..a48c593 100644
--- a/icu4c/source/data/curr/lkt.txt
+++ b/icu4c/source/data/curr/lkt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lkt{
     Currencies{
         USD{
@@ -7,5 +8,4 @@
             "USD",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ln.txt b/icu4c/source/data/curr/ln.txt
index ab7aad1..4c4ebc0 100644
--- a/icu4c/source/data/curr/ln.txt
+++ b/icu4c/source/data/curr/ln.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ln{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Dolarɛ ya Zimbabwɛ",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ln_AO.txt b/icu4c/source/data/curr/ln_AO.txt
index c4c06ab..e93e44c 100644
--- a/icu4c/source/data/curr/ln_AO.txt
+++ b/icu4c/source/data/curr/ln_AO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ln_AO{
     Currencies{
         AOA{
@@ -7,5 +8,4 @@
             "Kwanza ya Angóla",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/lo.txt b/icu4c/source/data/curr/lo.txt
index f3a314a..91e6d1b 100644
--- a/icu4c/source/data/curr/lo.txt
+++ b/icu4c/source/data/curr/lo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lo{
     Currencies{
         ADP{
@@ -1772,5 +1773,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/lrc.txt b/icu4c/source/data/curr/lrc.txt
index f415bc6..afbdd11 100644
--- a/icu4c/source/data/curr/lrc.txt
+++ b/icu4c/source/data/curr/lrc.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lrc{
     Currencies{
         BRL{
@@ -79,5 +80,4 @@
             other{"پیل نادیار"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/lt.txt b/icu4c/source/data/curr/lt.txt
index 7e21d83..b57b15e 100644
--- a/icu4c/source/data/curr/lt.txt
+++ b/icu4c/source/data/curr/lt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lt{
     Currencies{
         ADP{
@@ -3126,5 +3127,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/lu.txt b/icu4c/source/data/curr/lu.txt
index 78d8e3a..e86364a 100644
--- a/icu4c/source/data/curr/lu.txt
+++ b/icu4c/source/data/curr/lu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lu{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Ndola wa Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/luo.txt b/icu4c/source/data/curr/luo.txt
index c0a8ebb..afb7077 100644
--- a/icu4c/source/data/curr/luo.txt
+++ b/icu4c/source/data/curr/luo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 luo{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Dola ya Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/luy.txt b/icu4c/source/data/curr/luy.txt
index 50e2f04..0f1b314 100644
--- a/icu4c/source/data/curr/luy.txt
+++ b/icu4c/source/data/curr/luy.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 luy{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Dola ya Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/lv.txt b/icu4c/source/data/curr/lv.txt
index fbee88d..c4a8674 100644
--- a/icu4c/source/data/curr/lv.txt
+++ b/icu4c/source/data/curr/lv.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lv{
     Currencies{
         AED{
@@ -870,6 +871,7 @@
         FKP{"£"}
         GBP{"£"}
         GEL{"₾"}
+        GHS{"GHS"}
         GIP{"£"}
         GNF{"FG"}
         GTQ{"Q"}
@@ -1821,5 +1823,4 @@
         other{"{0} {1}"}
         zero{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/mai.txt b/icu4c/source/data/curr/mai.txt
index 0588e05..6dba092 100644
--- a/icu4c/source/data/curr/mai.txt
+++ b/icu4c/source/data/curr/mai.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mai{
     Currencies{
         BRL{
@@ -72,5 +73,4 @@
             other{"(अज्ञात मुद्रा)"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/mas.txt b/icu4c/source/data/curr/mas.txt
index 64a1092..5292aeb 100644
--- a/icu4c/source/data/curr/mas.txt
+++ b/icu4c/source/data/curr/mas.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mas{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Iropiyianí e Simbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/mas_TZ.txt b/icu4c/source/data/curr/mas_TZ.txt
index dacd159..71b13e2 100644
--- a/icu4c/source/data/curr/mas_TZ.txt
+++ b/icu4c/source/data/curr/mas_TZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mas_TZ{
     Currencies{
         TZS{
@@ -7,5 +8,4 @@
             "Iropiyianí e Tanzania",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/mer.txt b/icu4c/source/data/curr/mer.txt
index 46b3091..39d3306 100644
--- a/icu4c/source/data/curr/mer.txt
+++ b/icu4c/source/data/curr/mer.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mer{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Dola ya Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/mfe.txt b/icu4c/source/data/curr/mfe.txt
index bd5c927..a95db6e 100644
--- a/icu4c/source/data/curr/mfe.txt
+++ b/icu4c/source/data/curr/mfe.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mfe{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "dolar zimbawe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/mg.txt b/icu4c/source/data/curr/mg.txt
index 86ecf15..dadb644 100644
--- a/icu4c/source/data/curr/mg.txt
+++ b/icu4c/source/data/curr/mg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mg{
     Currencies{
         AED{
@@ -239,5 +240,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/mgh.txt b/icu4c/source/data/curr/mgh.txt
index d2b923d..8fb3221 100644
--- a/icu4c/source/data/curr/mgh.txt
+++ b/icu4c/source/data/curr/mgh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mgh{
     Currencies{
         MZN{
@@ -7,5 +8,4 @@
             "MZN",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/mgo.txt b/icu4c/source/data/curr/mgo.txt
index bc1c46f..0160b44 100644
--- a/icu4c/source/data/curr/mgo.txt
+++ b/icu4c/source/data/curr/mgo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mgo{
     Currencies{
         XAF{
@@ -15,5 +16,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/mi.txt b/icu4c/source/data/curr/mi.txt
index 45dda55..828b709 100644
--- a/icu4c/source/data/curr/mi.txt
+++ b/icu4c/source/data/curr/mi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mi{
     Currencies{
         BRL{
@@ -78,5 +79,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/mk.txt b/icu4c/source/data/curr/mk.txt
index 793f9bd..010ab40 100644
--- a/icu4c/source/data/curr/mk.txt
+++ b/icu4c/source/data/curr/mk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mk{
     Currencies{
         ADP{
@@ -192,7 +193,7 @@
         }
         CUC{
             "CUC",
-            "Кубански пезос (конвертибилен)",
+            "Кубански конвертибилен пезос",
         }
         CUP{
             "CUP",
@@ -412,7 +413,7 @@
         }
         KYD{
             "KYD",
-            "Долар на кајмански острови",
+            "Кајмански долар",
         }
         KZT{
             "KZT",
@@ -520,7 +521,7 @@
         }
         MVR{
             "MVR",
-            "Малдивиска руфија",
+            "Малдивска руфија",
         }
         MWK{
             "MWK",
@@ -860,7 +861,7 @@
         }
         XCD{
             "EC$",
-            "Источно карипски долар",
+            "Источнокарипски долар",
         }
         XOF{
             "CFA",
@@ -1157,8 +1158,8 @@
             other{"Костарикански колони"}
         }
         CUC{
-            one{"Кубански пезос (конвертибилен)"}
-            other{"Кубански пезоси (конвертибилни)"}
+            one{"Кубански конвертибилен пезос"}
+            other{"Кубански конвертибилни пезоси"}
         }
         CUP{
             one{"Кубански пезос"}
@@ -1329,8 +1330,8 @@
             other{"Кувајтски динари"}
         }
         KYD{
-            one{"Долар на кајмански острови"}
-            other{"Долари на кајмански острови"}
+            one{"Кајмански долар"}
+            other{"Кајмански долари"}
         }
         KZT{
             one{"Казахстанска тенга"}
@@ -1657,8 +1658,8 @@
             other{"Централноафрикански франци"}
         }
         XCD{
-            one{"Источно карипски долар"}
-            other{"Источно карипски долари"}
+            one{"Источнокарипски долар"}
+            other{"Источнокарипски долари"}
         }
         XOF{
             one{"Западноафрикански франк"}
@@ -1689,5 +1690,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ml.txt b/icu4c/source/data/curr/ml.txt
index 99e4a1d..caeb9d2 100644
--- a/icu4c/source/data/curr/ml.txt
+++ b/icu4c/source/data/curr/ml.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ml{
     Currencies{
         ADP{
@@ -1116,9 +1117,11 @@
         }
     }
     Currencies%narrow{
+        AMD{"֏"}
         AOA{"Kz"}
         ARS{"$"}
         AUD{"$"}
+        AZN{"₼"}
         BAM{"KM"}
         BBD{"$"}
         BDT{"৳"}
@@ -1146,6 +1149,7 @@
         FKP{"£"}
         GBP{"£"}
         GEL{"₾"}
+        GHS{"GH₵"}
         GIP{"£"}
         GNF{"FG"}
         GTQ{"Q"}
@@ -2245,5 +2249,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/mn.txt b/icu4c/source/data/curr/mn.txt
index f9c5272..24affa0 100644
--- a/icu4c/source/data/curr/mn.txt
+++ b/icu4c/source/data/curr/mn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mn{
     Currencies{
         AED{
@@ -1413,5 +1414,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/mni.txt b/icu4c/source/data/curr/mni.txt
index aaadc6d..06a4ff3 100644
--- a/icu4c/source/data/curr/mni.txt
+++ b/icu4c/source/data/curr/mni.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni{
     Currencies{
         BRL{
@@ -71,5 +72,4 @@
             other{"মশকখংদবা করেন্সি"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/mni_Beng.txt b/icu4c/source/data/curr/mni_Beng.txt
index e861947..08de0f1 100644
--- a/icu4c/source/data/curr/mni_Beng.txt
+++ b/icu4c/source/data/curr/mni_Beng.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni_Beng{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/mni_Beng_IN.txt b/icu4c/source/data/curr/mni_Beng_IN.txt
index fee6989..c896779 100644
--- a/icu4c/source/data/curr/mni_Beng_IN.txt
+++ b/icu4c/source/data/curr/mni_Beng_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/mni_IN.txt b/icu4c/source/data/curr/mni_IN.txt
index 00d8c00..99173b1 100644
--- a/icu4c/source/data/curr/mni_IN.txt
+++ b/icu4c/source/data/curr/mni_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni_IN{
     "%%ALIAS"{"mni_Beng_IN"}
 }
diff --git a/icu4c/source/data/curr/mo.txt b/icu4c/source/data/curr/mo.txt
index 01049c8..6ef8313 100644
--- a/icu4c/source/data/curr/mo.txt
+++ b/icu4c/source/data/curr/mo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mo{
     "%%ALIAS"{"ro"}
 }
diff --git a/icu4c/source/data/curr/mr.txt b/icu4c/source/data/curr/mr.txt
index cf93c75..541e533 100644
--- a/icu4c/source/data/curr/mr.txt
+++ b/icu4c/source/data/curr/mr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mr{
     Currencies{
         AED{
@@ -136,7 +137,7 @@
         }
         CRC{
             "CRC",
-            "कोस्टा रिका कोलोन",
+            "कोस्टारिकन कोलोन",
         }
         CUC{
             "CUC",
@@ -893,8 +894,8 @@
             other{"कोलंबियन पेसोज"}
         }
         CRC{
-            one{"कोस्टा रिका कोलोन"}
-            other{"कोस्टा रिका कोलोन्स"}
+            one{"कोस्टारिकन कोलोन"}
+            other{"कोस्टारिकन कोलोन्स"}
         }
         CUC{
             one{"क्यूबन विनिमय पेसो"}
@@ -1409,5 +1410,4 @@
             other{"झांबियन क्वाचास"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ms.txt b/icu4c/source/data/curr/ms.txt
index 3fae021..6244b25 100644
--- a/icu4c/source/data/curr/ms.txt
+++ b/icu4c/source/data/curr/ms.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ms{
     Currencies{
         AED{
@@ -1301,5 +1302,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ms_BN.txt b/icu4c/source/data/curr/ms_BN.txt
index 39238fb..6fe90e2 100644
--- a/icu4c/source/data/curr/ms_BN.txt
+++ b/icu4c/source/data/curr/ms_BN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ms_BN{
     Currencies{
         BND{
@@ -7,5 +8,4 @@
             "Dolar Brunei",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ms_ID.txt b/icu4c/source/data/curr/ms_ID.txt
index a91f1ef..ed3a84f 100644
--- a/icu4c/source/data/curr/ms_ID.txt
+++ b/icu4c/source/data/curr/ms_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ms_ID{
     Currencies{
         IDR{
@@ -7,5 +8,4 @@
             "Rupiah Indonesia",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ms_SG.txt b/icu4c/source/data/curr/ms_SG.txt
index 76dd1bb..65729e9 100644
--- a/icu4c/source/data/curr/ms_SG.txt
+++ b/icu4c/source/data/curr/ms_SG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ms_SG{
     Currencies{
         SGD{
@@ -7,5 +8,4 @@
             "Dolar Singapura",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/mt.txt b/icu4c/source/data/curr/mt.txt
index 8235a32..d7a7882 100644
--- a/icu4c/source/data/curr/mt.txt
+++ b/icu4c/source/data/curr/mt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mt{
     Currencies{
         AED{
@@ -707,5 +708,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/mua.txt b/icu4c/source/data/curr/mua.txt
index d18fc7c..8683701 100644
--- a/icu4c/source/data/curr/mua.txt
+++ b/icu4c/source/data/curr/mua.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mua{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Solai Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/my.txt b/icu4c/source/data/curr/my.txt
index e70c096..1f22e00 100644
--- a/icu4c/source/data/curr/my.txt
+++ b/icu4c/source/data/curr/my.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 my{
     Currencies{
         AED{
@@ -52,7 +53,7 @@
         }
         BBD{
             "BBD",
-            "ဘာဘေးဒီယန်း ဒေါ်လာ",
+            "ဘာဘေးဒိုးစ် ဒေါ်လာ",
         }
         BDT{
             "BDT",
@@ -877,7 +878,7 @@
             other{"ဘော့စနီးယားနှင့် ဟာဇီဂိုဘီးနားမတ်က်"}
         }
         BBD{
-            other{"ဘာဘေးဒီယန်း ဒေါ်လာ"}
+            other{"ဘာဘေးဒိုးစ် ဒေါ်လာ"}
         }
         BDT{
             other{"ဘင်္ဂလားဒေ့ရှ် တာကာ"}
@@ -1330,5 +1331,4 @@
             other{"ဇင်ဘာဘွေ ခွါးချာ"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/mzn.txt b/icu4c/source/data/curr/mzn.txt
index 4d89a44..927d465 100644
--- a/icu4c/source/data/curr/mzn.txt
+++ b/icu4c/source/data/curr/mzn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mzn{
     Currencies{
         AED{
@@ -1141,5 +1142,4 @@
             other{"زامبیای ِکواچا"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/naq.txt b/icu4c/source/data/curr/naq.txt
index fee1030..ba8f51c 100644
--- a/icu4c/source/data/curr/naq.txt
+++ b/icu4c/source/data/curr/naq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 naq{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Zimbabwe Dollari",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/nb.txt b/icu4c/source/data/curr/nb.txt
index eebb5b9..01f5dc1 100644
--- a/icu4c/source/data/curr/nb.txt
+++ b/icu4c/source/data/curr/nb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nb{
     Currencies{
         ADP{
@@ -2514,5 +2515,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/nb_NO.txt b/icu4c/source/data/curr/nb_NO.txt
index fdac28b..15a33c3 100644
--- a/icu4c/source/data/curr/nb_NO.txt
+++ b/icu4c/source/data/curr/nb_NO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/nd.txt b/icu4c/source/data/curr/nd.txt
index 9306041..1a0093a 100644
--- a/icu4c/source/data/curr/nd.txt
+++ b/icu4c/source/data/curr/nd.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nd{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Dola yase Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ne.txt b/icu4c/source/data/curr/ne.txt
index d5d24eb..fbbefa4 100644
--- a/icu4c/source/data/curr/ne.txt
+++ b/icu4c/source/data/curr/ne.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ne{
     Currencies{
         AED{
@@ -1414,5 +1415,4 @@
             other{"जाम्बियाली क्वाचा"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/nl.txt b/icu4c/source/data/curr/nl.txt
index 65888f7..a564c71 100644
--- a/icu4c/source/data/curr/nl.txt
+++ b/icu4c/source/data/curr/nl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl{
     Currencies{
         ADP{
@@ -220,7 +221,7 @@
         }
         BYN{
             "BYN",
-            "Wit-Russische roebel",
+            "Belarussische roebel",
         }
         BYR{
             "BYR",
@@ -1537,8 +1538,8 @@
             other{"Wit-Russische nieuwe roebel (1994–1999)"}
         }
         BYN{
-            one{"Wit-Russische roebel"}
-            other{"Wit-Russische roebel"}
+            one{"Belarussische roebel"}
+            other{"Belarussische roebel"}
         }
         BYR{
             one{"Wit-Russische roebel (2000–2016)"}
@@ -2537,5 +2538,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/nl_AW.txt b/icu4c/source/data/curr/nl_AW.txt
index 0a0e07f..a2d256b 100644
--- a/icu4c/source/data/curr/nl_AW.txt
+++ b/icu4c/source/data/curr/nl_AW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl_AW{
     Currencies{
         AWG{
@@ -7,5 +8,4 @@
             "Arubaanse gulden",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/nl_BQ.txt b/icu4c/source/data/curr/nl_BQ.txt
index 95bc425..b3260f9 100644
--- a/icu4c/source/data/curr/nl_BQ.txt
+++ b/icu4c/source/data/curr/nl_BQ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl_BQ{
     Currencies{
         USD{
@@ -7,5 +8,4 @@
             "Amerikaanse dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/nl_CW.txt b/icu4c/source/data/curr/nl_CW.txt
index f14dcf9..7e21511 100644
--- a/icu4c/source/data/curr/nl_CW.txt
+++ b/icu4c/source/data/curr/nl_CW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl_CW{
     Currencies{
         ANG{
@@ -7,5 +8,4 @@
             "Nederlands-Antilliaanse gulden",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/nl_SR.txt b/icu4c/source/data/curr/nl_SR.txt
index 75acbd1..5c18111 100644
--- a/icu4c/source/data/curr/nl_SR.txt
+++ b/icu4c/source/data/curr/nl_SR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl_SR{
     Currencies{
         SRD{
@@ -7,5 +8,4 @@
             "Surinaamse dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/nl_SX.txt b/icu4c/source/data/curr/nl_SX.txt
index f4dde3e..3dd5026 100644
--- a/icu4c/source/data/curr/nl_SX.txt
+++ b/icu4c/source/data/curr/nl_SX.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl_SX{
     Currencies{
         ANG{
@@ -7,5 +8,4 @@
             "Nederlands-Antilliaanse gulden",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/nmg.txt b/icu4c/source/data/curr/nmg.txt
index b9dfa87..4e64805 100644
--- a/icu4c/source/data/curr/nmg.txt
+++ b/icu4c/source/data/curr/nmg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nmg{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Dɔ́llɔ Zimbabwǝ (1980–2008)",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/nn.txt b/icu4c/source/data/curr/nn.txt
index f492b78..1a586aa 100644
--- a/icu4c/source/data/curr/nn.txt
+++ b/icu4c/source/data/curr/nn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nn{
     Currencies{
         ADP{
@@ -188,7 +189,7 @@
         }
         BYN{
             "BYN",
-            "kviterussiske rublar",
+            "nye kviterussiske rublar",
         }
         BYR{
             "BYR",
@@ -226,6 +227,10 @@
             "CLP",
             "chilenske pesos",
         }
+        CNH{
+            "CNH",
+            "kinesiske yuan (offshore)",
+        }
         CNY{
             "CNY",
             "kinesiske yuan",
@@ -448,7 +453,7 @@
         }
         ILS{
             "ILS",
-            "israelske nye sheklar",
+            "nye israelske sheklar",
         }
         INR{
             "INR",
@@ -628,7 +633,7 @@
         }
         MUR{
             "MUR",
-            "mauritanske rupiar",
+            "mauritiske rupiar",
         }
         MVR{
             "MVR",
@@ -864,7 +869,7 @@
         }
         SZL{
             "SZL",
-            "swazilandske lilangeni",
+            "eswatinisk lilangeni",
         }
         THB{
             "THB",
@@ -1296,7 +1301,7 @@
             other{"bahamanske dollar"}
         }
         BTN{
-            one{"bhutanske ngultrum"}
+            one{"bhutansk ngultrum"}
             other{"bhutanske ngultrum"}
         }
         BWP{
@@ -1308,8 +1313,8 @@
             other{"kviterussiske nye rublar (BYB)"}
         }
         BYN{
-            one{"kviterussisk rubel"}
-            other{"kviterussiske rublar"}
+            one{"ny kviterussisk rubel"}
+            other{"nye kviterussiske rublar"}
         }
         BYR{
             one{"kviterussisk rubel (2000–2016)"}
@@ -1347,6 +1352,10 @@
             one{"chilensk peso"}
             other{"chilenske pesos"}
         }
+        CNH{
+            one{"kinesisk yuan (offshore)"}
+            other{"kinesiske yuan (offshore)"}
+        }
         CNY{
             one{"kinesisk yuan"}
             other{"kinesiske yuan"}
@@ -1564,8 +1573,8 @@
             other{"israelske pund"}
         }
         ILS{
-            one{"israelsk ny shekel"}
-            other{"israelske nye sheklar"}
+            one{"ny israelsk shekel"}
+            other{"nye israelske sheklar"}
         }
         INR{
             one{"indisk rupi"}
@@ -1724,7 +1733,7 @@
             other{"mongolske tugrik"}
         }
         MOP{
-            one{"macaoisk pataca"}
+            one{"makaoisk pataca"}
             other{"makaoiske pataca"}
         }
         MRO{
@@ -1744,8 +1753,8 @@
             other{"maltesiske pund"}
         }
         MUR{
-            one{"mauritansk rupi"}
-            other{"mauritanske rupiar"}
+            one{"mauritisk rupi"}
+            other{"mauritiske rupiar"}
         }
         MVR{
             one{"maldivisk rufiyaa"}
@@ -1781,7 +1790,7 @@
         }
         MZN{
             one{"mosambikisk metical"}
-            other{"mosambikisk metical"}
+            other{"mosambikiske metical"}
         }
         NAD{
             one{"namibisk dollar"}
@@ -1841,7 +1850,7 @@
         }
         PHP{
             one{"filippinsk peso"}
-            other{"filippinske peso"}
+            other{"filippinske pesos"}
         }
         PKR{
             one{"pakistansk rupi"}
@@ -1860,7 +1869,7 @@
             other{"portugisiske escudo"}
         }
         PYG{
-            one{"ṕaraguayansk guaraní"}
+            one{"paraguayansk guaraní"}
             other{"paraguayanske guaraní"}
         }
         QAR{
@@ -1980,8 +1989,8 @@
             other{"syriske pund"}
         }
         SZL{
-            one{"swazilandsk lilangeni"}
-            other{"swazilandske lilangeni"}
+            one{"eswatinisk lilangeni"}
+            other{"eswatiniske emalangeni"}
         }
         THB{
             one{"thailandsk baht"}
@@ -2212,5 +2221,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/nn_NO.txt b/icu4c/source/data/curr/nn_NO.txt
index 4e8a5f7..9eaa339 100644
--- a/icu4c/source/data/curr/nn_NO.txt
+++ b/icu4c/source/data/curr/nn_NO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/nnh.txt b/icu4c/source/data/curr/nnh.txt
index e7d1b68..2046286 100644
--- a/icu4c/source/data/curr/nnh.txt
+++ b/icu4c/source/data/curr/nnh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nnh{
     Currencies{
         XAF{
@@ -7,5 +8,4 @@
             "feláŋ CFA",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/no.txt b/icu4c/source/data/curr/no.txt
index 097a923..474d0b2 100644
--- a/icu4c/source/data/curr/no.txt
+++ b/icu4c/source/data/curr/no.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no{
     "%%ALIAS"{"nb"}
 }
diff --git a/icu4c/source/data/curr/no_NO.txt b/icu4c/source/data/curr/no_NO.txt
index 188a8a4..5d7f859 100644
--- a/icu4c/source/data/curr/no_NO.txt
+++ b/icu4c/source/data/curr/no_NO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no_NO{
     "%%ALIAS"{"nb_NO"}
 }
diff --git a/icu4c/source/data/curr/no_NO_NY.txt b/icu4c/source/data/curr/no_NO_NY.txt
index aa897fe..c900df7 100644
--- a/icu4c/source/data/curr/no_NO_NY.txt
+++ b/icu4c/source/data/curr/no_NO_NY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no_NO_NY{
     "%%ALIAS"{"nn_NO"}
 }
diff --git a/icu4c/source/data/curr/nus.txt b/icu4c/source/data/curr/nus.txt
index 1b5c5f7..cf20608 100644
--- a/icu4c/source/data/curr/nus.txt
+++ b/icu4c/source/data/curr/nus.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nus{
     Currencies{
         GBP{
@@ -11,5 +12,4 @@
             "SSP",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/nyn.txt b/icu4c/source/data/curr/nyn.txt
index 80007f8..f2ae6e0 100644
--- a/icu4c/source/data/curr/nyn.txt
+++ b/icu4c/source/data/curr/nyn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nyn{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Doora ya Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/om.txt b/icu4c/source/data/curr/om.txt
index a22a9c9..cb4f27b 100644
--- a/icu4c/source/data/curr/om.txt
+++ b/icu4c/source/data/curr/om.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 om{
     Currencies{
         BRL{
@@ -43,5 +44,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/om_KE.txt b/icu4c/source/data/curr/om_KE.txt
index 246c519..d6fc6c6 100644
--- a/icu4c/source/data/curr/om_KE.txt
+++ b/icu4c/source/data/curr/om_KE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 om_KE{
     Currencies{
         KES{
@@ -7,5 +8,4 @@
             "KES",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/or.txt b/icu4c/source/data/curr/or.txt
index f0dd6ee..0b54679 100644
--- a/icu4c/source/data/curr/or.txt
+++ b/icu4c/source/data/curr/or.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 or{
     Currencies{
         AED{
@@ -1380,5 +1381,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/os.txt b/icu4c/source/data/curr/os.txt
index b5eec02..1d13e05 100644
--- a/icu4c/source/data/curr/os.txt
+++ b/icu4c/source/data/curr/os.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 os{
     Currencies{
         BRL{
@@ -65,5 +66,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/os_RU.txt b/icu4c/source/data/curr/os_RU.txt
index 94a0c8f..757bf84 100644
--- a/icu4c/source/data/curr/os_RU.txt
+++ b/icu4c/source/data/curr/os_RU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 os_RU{
     Currencies{
         GEL{
@@ -11,5 +12,4 @@
             "Сом",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/pa.txt b/icu4c/source/data/curr/pa.txt
index 9931aa6..8599fe2 100644
--- a/icu4c/source/data/curr/pa.txt
+++ b/icu4c/source/data/curr/pa.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa{
     Currencies{
         AED{
@@ -1194,7 +1195,7 @@
             other{"ਈਰਾਨੀ ਰਿਆਲ"}
         }
         ISK{
-            one{"ਆਈਸਲੈਂਡਿਕ ਕਰੌਨ"}
+            one{"ਆਈਸਲੈਂਡੀ ਕਰੋਨਾ"}
             other{"ਆਈਸਲੈਂਡੀ ਕਰੋਨਾ"}
         }
         JMD{
@@ -1458,7 +1459,7 @@
             other{"ਸਾਉ ਟੋਮੀ ਐਂਡ ਪ੍ਰਿੰਸਪੀ ਡੋਬਰਾ (1977–2017)"}
         }
         STN{
-            one{"ਸਾਉ ਟੋਮੀ ਅਤੇ ਪ੍ਰਿੰਸਪੀ ਡੋਬਰਾ"}
+            one{"ਸਾਉ ਟੋਮੀ ਐਂਡ ਪ੍ਰਿੰਸਪੀ ਡੋਬਰਾ"}
             other{"ਸਾਉ ਟੋਮੀ ਐਂਡ ਪ੍ਰਿੰਸਪੀ ਡੋਬਰਾ"}
         }
         SUR{
@@ -1614,5 +1615,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/pa_Arab.txt b/icu4c/source/data/curr/pa_Arab.txt
index b666c8e..9e69945 100644
--- a/icu4c/source/data/curr/pa_Arab.txt
+++ b/icu4c/source/data/curr/pa_Arab.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_Arab{
     %%Parent{"root"}
     Currencies{
@@ -16,5 +17,4 @@
             "روپئیہ",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/pa_Arab_PK.txt b/icu4c/source/data/curr/pa_Arab_PK.txt
index e6b5861..3b1bc42 100644
--- a/icu4c/source/data/curr/pa_Arab_PK.txt
+++ b/icu4c/source/data/curr/pa_Arab_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/pa_Guru.txt b/icu4c/source/data/curr/pa_Guru.txt
index a0ee569..f10658f 100644
--- a/icu4c/source/data/curr/pa_Guru.txt
+++ b/icu4c/source/data/curr/pa_Guru.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_Guru{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/pa_Guru_IN.txt b/icu4c/source/data/curr/pa_Guru_IN.txt
index adeae3f..f67b7c3 100644
--- a/icu4c/source/data/curr/pa_Guru_IN.txt
+++ b/icu4c/source/data/curr/pa_Guru_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/pa_IN.txt b/icu4c/source/data/curr/pa_IN.txt
index b18bba6..0c963d7 100644
--- a/icu4c/source/data/curr/pa_IN.txt
+++ b/icu4c/source/data/curr/pa_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_IN{
     "%%ALIAS"{"pa_Guru_IN"}
 }
diff --git a/icu4c/source/data/curr/pa_PK.txt b/icu4c/source/data/curr/pa_PK.txt
index 1c66c7b..29612ad 100644
--- a/icu4c/source/data/curr/pa_PK.txt
+++ b/icu4c/source/data/curr/pa_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_PK{
     "%%ALIAS"{"pa_Arab_PK"}
 }
diff --git a/icu4c/source/data/curr/pcm.txt b/icu4c/source/data/curr/pcm.txt
index 03333f9..976bd22 100644
--- a/icu4c/source/data/curr/pcm.txt
+++ b/icu4c/source/data/curr/pcm.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pcm{
     Currencies{
         AED{
@@ -1355,5 +1356,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/pl.txt b/icu4c/source/data/curr/pl.txt
index fbf8a53..cbaec4c 100644
--- a/icu4c/source/data/curr/pl.txt
+++ b/icu4c/source/data/curr/pl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pl{
     Currencies{
         ADP{
@@ -88,7 +89,7 @@
         }
         BBD{
             "BBD",
-            "dolar Barbadosu",
+            "dolar barbadoski",
         }
         BDT{
             "BDT",
@@ -888,7 +889,7 @@
         }
         TTD{
             "TTD",
-            "dolar Trynidadu i Tobago",
+            "dolar trynidadzki",
         }
         TWD{
             "TWD",
@@ -1112,8 +1113,8 @@
         AMD{
             few{"dramy armeńskie"}
             many{"dramów armeńskich"}
-            one{"dram ormiański"}
-            other{"dramy ormiańskiej"}
+            one{"dram armeński"}
+            other{"drama armeńskiego"}
         }
         ANG{
             few{"guldeny antylskie"}
@@ -1182,10 +1183,10 @@
             other{"marki zamiennej Bośni i Hercegowiny"}
         }
         BBD{
-            few{"dolary Barbadosu"}
-            many{"dolarów Barbadosu"}
-            one{"dolar Barbadosu"}
-            other{"dolara Barbadosu"}
+            few{"dolary barbadoskie"}
+            many{"dolarów barbadoskich"}
+            one{"dolar barbadoski"}
+            other{"dolara barbadoskiego"}
         }
         BDT{
             few{"taka bengalskie"}
@@ -1758,10 +1759,10 @@
             other{"rupii malediwskiej"}
         }
         MWK{
-            few{"kwacha malawijskie"}
-            many{"kwacha malawijskich"}
+            few{"kwachy malawijskie"}
+            many{"kwach malawijskich"}
             one{"kwacha malawijska"}
-            other{"kwacha malawijskiej"}
+            other{"kwachy malawijskiej"}
         }
         MXN{
             few{"pesos meksykańskie"}
@@ -2088,10 +2089,10 @@
             other{"liry tureckiej"}
         }
         TTD{
-            few{"dolary Trynidadu i Tobago"}
-            many{"dolarów Trynidadu i Tobago"}
-            one{"dolar Trynidadu i Tobago"}
-            other{"dolara Trynidadu i Tobago"}
+            few{"dolary trynidadzkie"}
+            many{"dolarów trynidadzkich"}
+            one{"dolar trynidadzki"}
+            other{"dolara trynidadzkiego"}
         }
         TWD{
             few{"nowe dolary tajwańskie"}
@@ -2238,5 +2239,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ps.txt b/icu4c/source/data/curr/ps.txt
index 3002ca1..f7064c2 100644
--- a/icu4c/source/data/curr/ps.txt
+++ b/icu4c/source/data/curr/ps.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ps{
     Currencies{
         AED{
@@ -362,6 +363,10 @@
             "MNT",
             "منګوليايي توګريک",
         }
+        MOP{
+            "MOP",
+            "مکانيس پټاکا",
+        }
         MRU{
             "MRU",
             "موريشيسي ډالر",
@@ -506,6 +511,10 @@
             "SRD",
             "سورينيمي ډالر",
         }
+        SSP{
+            "SSP",
+            "جنوب سوډاني پونډ",
+        }
         STN{
             "STN",
             "ساو ټوم او پرينسپي ډوبرا",
@@ -530,6 +539,10 @@
             "TMT",
             "ترکمانستاني منت",
         }
+        TND{
+            "TND",
+            "تيونسې دينار",
+        }
         TOP{
             "TOP",
             "ټونګن پانګا",
@@ -986,6 +999,10 @@
             one{"منګوليايي توګريک"}
             other{"منګوليايي توګريکس"}
         }
+        MOP{
+            one{"مکانيس پټاکا"}
+            other{"مکانيز پټاکاز"}
+        }
         MRU{
             one{"موريشيسي ډالر"}
             other{"موريشيسي ډالرې"}
@@ -1154,6 +1171,10 @@
             one{"ترکمانستاني منت"}
             other{"ترکمانستاني منت"}
         }
+        TND{
+            one{"تيونسې دينار"}
+            other{"تونسي دينار"}
+        }
         TOP{
             one{"ټونګن پانګا"}
             other{"ټونګن پانګا"}
@@ -1243,5 +1264,4 @@
             other{"زيمبي کواچاز"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ps_PK.txt b/icu4c/source/data/curr/ps_PK.txt
index 95010c6..c5c12ec 100644
--- a/icu4c/source/data/curr/ps_PK.txt
+++ b/icu4c/source/data/curr/ps_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ps_PK{
     Currencies{
         PKR{
@@ -21,5 +22,4 @@
             other{"(نامعلومه مروجه پېسے)"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/pt.txt b/icu4c/source/data/curr/pt.txt
index e6a6d42..919de3f 100644
--- a/icu4c/source/data/curr/pt.txt
+++ b/icu4c/source/data/curr/pt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt{
     Currencies{
         ADP{
@@ -588,7 +589,7 @@
         }
         LKR{
             "LKR",
-            "Rupia do Sri Lanka",
+            "Rupia cingalesa",
         }
         LRD{
             "LRD",
@@ -672,7 +673,7 @@
         }
         MMK{
             "MMK",
-            "Quiat de Myanmar",
+            "Quiate mianmarense",
         }
         MNT{
             "MNT",
@@ -680,7 +681,7 @@
         }
         MOP{
             "MOP",
-            "Pataca de Macau",
+            "Pataca macaense",
         }
         MRO{
             "MRO",
@@ -1885,8 +1886,8 @@
             other{"Libras libanesas"}
         }
         LKR{
-            one{"Rupia do Sri Lanka"}
-            other{"Rupias do Sri Lanka"}
+            one{"Rupia cingalesa"}
+            other{"Rupias cingalesas"}
         }
         LRD{
             one{"Dólar liberiano"}
@@ -1969,16 +1970,16 @@
             other{"Francos de Mali"}
         }
         MMK{
-            one{"Quiat de Myanmar"}
-            other{"Quiat de Myanmar"}
+            one{"Quiate mianmarense"}
+            other{"Quiates mianmarenses"}
         }
         MNT{
             one{"Tugrik mongol"}
             other{"Tugriks mongóis"}
         }
         MOP{
-            one{"Pataca de Macau"}
-            other{"Patacas de Macau"}
+            one{"Pataca macaense"}
+            other{"Patacas macaenses"}
         }
         MRO{
             one{"Ouguiya mauritana (1973–2017)"}
@@ -2501,5 +2502,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/pt_AO.txt b/icu4c/source/data/curr/pt_AO.txt
index 4a5855e..77e504b 100644
--- a/icu4c/source/data/curr/pt_AO.txt
+++ b/icu4c/source/data/curr/pt_AO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_AO{
     %%Parent{"pt_PT"}
     Currencies{
@@ -8,5 +9,4 @@
             "kwanza angolano",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/pt_CH.txt b/icu4c/source/data/curr/pt_CH.txt
index 3a679be..67d661e 100644
--- a/icu4c/source/data/curr/pt_CH.txt
+++ b/icu4c/source/data/curr/pt_CH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_CH{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/pt_CV.txt b/icu4c/source/data/curr/pt_CV.txt
index 247e473..d03d08f 100644
--- a/icu4c/source/data/curr/pt_CV.txt
+++ b/icu4c/source/data/curr/pt_CV.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_CV{
     %%Parent{"pt_PT"}
     Currencies{
@@ -13,9 +14,13 @@
             }
         }
         PTE{
-            "​PTE",
+            "PTE",
             "escudo português",
+            {
+                "#,##0.00 ¤",
+                ",",
+                " ",
+            }
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/pt_GQ.txt b/icu4c/source/data/curr/pt_GQ.txt
index 7cbf771..9364da9 100644
--- a/icu4c/source/data/curr/pt_GQ.txt
+++ b/icu4c/source/data/curr/pt_GQ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_GQ{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/pt_GW.txt b/icu4c/source/data/curr/pt_GW.txt
index da37fbe..e28e46c 100644
--- a/icu4c/source/data/curr/pt_GW.txt
+++ b/icu4c/source/data/curr/pt_GW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_GW{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/pt_LU.txt b/icu4c/source/data/curr/pt_LU.txt
index 5b68c4f..670340c 100644
--- a/icu4c/source/data/curr/pt_LU.txt
+++ b/icu4c/source/data/curr/pt_LU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_LU{
     %%Parent{"pt_PT"}
     Currencies{
@@ -8,5 +9,4 @@
             "Franco luxemburguês",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/pt_MO.txt b/icu4c/source/data/curr/pt_MO.txt
index 57db8ee..5c11063 100644
--- a/icu4c/source/data/curr/pt_MO.txt
+++ b/icu4c/source/data/curr/pt_MO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_MO{
     %%Parent{"pt_PT"}
     Currencies{
@@ -8,5 +9,4 @@
             "pataca macaense",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/pt_MZ.txt b/icu4c/source/data/curr/pt_MZ.txt
index 14c7f59..e19e840 100644
--- a/icu4c/source/data/curr/pt_MZ.txt
+++ b/icu4c/source/data/curr/pt_MZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_MZ{
     %%Parent{"pt_PT"}
     Currencies{
@@ -8,5 +9,4 @@
             "metical moçambicano",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/pt_PT.txt b/icu4c/source/data/curr/pt_PT.txt
index efcdc99..2d6c249 100644
--- a/icu4c/source/data/curr/pt_PT.txt
+++ b/icu4c/source/data/curr/pt_PT.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_PT{
     Currencies{
         AED{
@@ -1353,5 +1354,4 @@
             other{"kwachas zambianos"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/pt_ST.txt b/icu4c/source/data/curr/pt_ST.txt
index d6bfc8c..c7d0bd8 100644
--- a/icu4c/source/data/curr/pt_ST.txt
+++ b/icu4c/source/data/curr/pt_ST.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_ST{
     %%Parent{"pt_PT"}
     Currencies{
@@ -8,5 +9,4 @@
             "dobra de São Tomé e Príncipe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/pt_TL.txt b/icu4c/source/data/curr/pt_TL.txt
index b3777b6..0dafd09 100644
--- a/icu4c/source/data/curr/pt_TL.txt
+++ b/icu4c/source/data/curr/pt_TL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_TL{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/qu.txt b/icu4c/source/data/curr/qu.txt
index 965364c..e5cb715 100644
--- a/icu4c/source/data/curr/qu.txt
+++ b/icu4c/source/data/curr/qu.txt
@@ -1,10 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 qu{
     Currencies{
         AED{
             "AED",
-            "AED",
+            "Dirham de Emiratos Árabes Unidos",
         }
         AFN{
             "AFN",
@@ -16,7 +17,7 @@
         }
         AMD{
             "AMD",
-            "AMD",
+            "Dram Armenio",
         }
         ANG{
             "ANG",
@@ -40,7 +41,7 @@
         }
         AZN{
             "AZN",
-            "AZN",
+            "Manat Azerbaiyano",
         }
         BAM{
             "BAM",
@@ -627,13 +628,22 @@
             "Kwacha Zambiano",
         }
     }
+    Currencies%narrow{
+        GHS{"GHC"}
+    }
     CurrencyPlurals{
+        AED{
+            other{"UAE dirhams"}
+        }
         AFN{
             other{"Afgani afgano"}
         }
         ALL{
             other{"Lek albanés"}
         }
+        AMD{
+            other{"drams Armenios"}
+        }
         ANG{
             other{"Florín antillano neerlandés"}
         }
@@ -649,6 +659,9 @@
         AWG{
             other{"Florín arubeño"}
         }
+        AZN{
+            other{"manats Azerbaiyanos"}
+        }
         BAM{
             other{"Marco bosnioherzegovino"}
         }
@@ -1088,5 +1101,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/qu_BO.txt b/icu4c/source/data/curr/qu_BO.txt
index 114d6d1..091e437 100644
--- a/icu4c/source/data/curr/qu_BO.txt
+++ b/icu4c/source/data/curr/qu_BO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 qu_BO{
     Currencies{
         BOB{
@@ -11,5 +12,4 @@
             "Sol Peruano",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/qu_EC.txt b/icu4c/source/data/curr/qu_EC.txt
index 1affecc..7cd25cd 100644
--- a/icu4c/source/data/curr/qu_EC.txt
+++ b/icu4c/source/data/curr/qu_EC.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 qu_EC{
     Currencies{
         PEN{
@@ -11,5 +12,4 @@
             "Dólar Americano",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/rm.txt b/icu4c/source/data/curr/rm.txt
index 8a092ee..4c1b704 100644
--- a/icu4c/source/data/curr/rm.txt
+++ b/icu4c/source/data/curr/rm.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rm{
     Currencies{
         ADP{
@@ -12,11 +13,11 @@
         }
         AFA{
             "AFA",
-            "afghani (1927–2002)",
+            "afgani afgan (1927–2002)",
         }
         AFN{
             "AFN",
-            "afghani",
+            "afgani afgan",
         }
         ALK{
             "ALK",
@@ -24,7 +25,7 @@
         }
         ALL{
             "ALL",
-            "lek",
+            "lek albanais",
         }
         AMD{
             "AMD",
@@ -32,7 +33,7 @@
         }
         ANG{
             "ANG",
-            "flurin da las Antillas Olandaisas",
+            "flurin da las Antillas Ollandaisas",
         }
         AOA{
             "AOA",
@@ -40,15 +41,15 @@
         }
         AOK{
             "AOK",
-            "kwanza angolan (1977–1990)",
+            "kwanza angolan (1977–1991)",
         }
         AON{
             "AON",
-            "nov kwanza angolan",
+            "nov kwanza angolan (1990–2000)",
         }
         AOR{
             "AOR",
-            "kwanza angolan reajustado",
+            "kwanza angolan reagiustà (1995–1999)",
         }
         ARA{
             "ARA",
@@ -84,23 +85,23 @@
         }
         AZM{
             "AZM",
-            "manat aserbaidschanic (1993–2006)",
+            "manat aserbaidschan (1993–2006)",
         }
         AZN{
             "AZN",
-            "manat aserbaidschanic",
+            "manat aserbaidschan",
         }
         BAD{
             "BAD",
-            "dinar da la Bosnia ed Erzegovina",
+            "dinar da la Bosnia-Erzegovina (1992–1994)",
         }
         BAM{
             "BAM",
-            "marc convertibel bosniac",
+            "marc convertibel da la Bosnia-Erzegovina",
         }
         BAN{
             "BAN",
-            "nov dinar da la Bosnia ed Erzegovina",
+            "nov dinar da la Bosnia-Erzegovina (1994–1997)",
         }
         BBD{
             "BBD",
@@ -124,7 +125,7 @@
         }
         BGL{
             "BGL",
-            "lev bulgar",
+            "lev bulgar dir",
         }
         BGM{
             "BGM",
@@ -132,11 +133,11 @@
         }
         BGN{
             "BGN",
-            "nov lev bulgar",
+            "lev bulgar",
         }
         BGO{
             "BGO",
-            "vegl lev bulgar",
+            "lev bulgar (1879–1952)",
         }
         BHD{
             "BHD",
@@ -156,7 +157,7 @@
         }
         BOB{
             "BOB",
-            "boliviano",
+            "boliviano bolivian",
         }
         BOL{
             "BOL",
@@ -208,7 +209,7 @@
         }
         BUK{
             "BUK",
-            "Kyat burmais",
+            "kyat burmais",
         }
         BWP{
             "BWP",
@@ -216,7 +217,7 @@
         }
         BYB{
             "BYB",
-            "nov rubel bieloruss (1994–1999)",
+            "rubel bieloruss (1994–1999)",
         }
         BYN{
             "BYN",
@@ -262,9 +263,13 @@
             "CLP",
             "peso chilen",
         }
+        CNH{
+            "CNH",
+            "yuan chinais (offshore)",
+        }
         CNY{
             "CN¥",
-            "yuan renminbi chinais",
+            "yuan chinais",
         }
         COP{
             "COP",
@@ -280,12 +285,16 @@
         }
         CSD{
             "CSD",
-            "vegl dinar serb",
+            "dinar serb (2002–2006)",
         }
         CSK{
             "CSK",
             "cruna tschecoslovaca",
         }
+        CUC{
+            "CUC",
+            "peso cuban convertibel",
+        }
         CUP{
             "CUP",
             "peso cuban",
@@ -384,7 +393,7 @@
         }
         GBP{
             "£",
-            "glivra sterlina",
+            "glivra britannica",
         }
         GEK{
             "GEK",
@@ -480,11 +489,11 @@
         }
         ILR{
             "ILR",
-            "vegl sheqel israelian",
+            "schekel israelian (1980–1985)",
         }
         ILS{
             "₪",
-            "sheqel",
+            "nov schekel israelian",
         }
         INR{
             "₹",
@@ -528,7 +537,7 @@
         }
         KGS{
             "KGS",
-            "som kirghis",
+            "som kirgis",
         }
         KHR{
             "KHR",
@@ -544,11 +553,11 @@
         }
         KRH{
             "KRH",
-            "hwan da la Corea dal Sid",
+            "hwan da la Corea dal Sid (1953–1962)",
         }
         KRO{
             "KRO",
-            "vegl won da la Corea dal Sid",
+            "won da la Corea dal Sid (1945–1953)",
         }
         KRW{
             "₩",
@@ -564,7 +573,7 @@
         }
         KZT{
             "KZT",
-            "tenge casac",
+            "tenge kasac",
         }
         LAK{
             "LAK",
@@ -628,7 +637,7 @@
         }
         MCF{
             "MCF",
-            "franc monegas",
+            "franc monegass",
         }
         MDC{
             "MDC",
@@ -648,11 +657,11 @@
         }
         MKD{
             "MKD",
-            "dinar da la Macedonia",
+            "dinar macedon",
         }
         MKN{
             "MKN",
-            "vegl dinar macedon",
+            "dinar macedon (1992–1993)",
         }
         MLF{
             "MLF",
@@ -660,7 +669,7 @@
         }
         MMK{
             "MMK",
-            "Kyat dal Myanmar",
+            "kyat dal Myanmar",
         }
         MNT{
             "MNT",
@@ -692,7 +701,7 @@
         }
         MVP{
             "MVP",
-            "rupia da las Maledivas",
+            "rupia da las Maledivas (1947–1981)",
         }
         MVR{
             "MVR",
@@ -716,19 +725,19 @@
         }
         MYR{
             "MYR",
-            "ringgit da la Malaisia",
+            "ringgit malaisic",
         }
         MZE{
             "MZE",
-            "escudo dal mozambican",
+            "escudo dal Mosambic",
         }
         MZM{
             "MZM",
-            "vegl metical mozambican",
+            "metical dal Mosambic (1980–2006)",
         }
         MZN{
             "MZN",
-            "metical dal mozambican",
+            "metical dal Mosambic",
         }
         NAD{
             "NAD",
@@ -744,7 +753,7 @@
         }
         NIO{
             "NIO",
-            "cordoba oro nicaraguan",
+            "córdoba nicaraguan",
         }
         NLG{
             "NLG",
@@ -812,7 +821,7 @@
         }
         QAR{
             "QAR",
-            "riyal da Katar",
+            "rial da Katar",
         }
         RHD{
             "RHD",
@@ -820,7 +829,7 @@
         }
         ROL{
             "ROL",
-            "vegl leu rumen",
+            "leu rumen (1952–2006)",
         }
         RON{
             "RON",
@@ -832,7 +841,7 @@
         }
         RUB{
             "RUB",
-            "rubel russ (nov)",
+            "rubel russ",
         }
         RUR{
             "RUR",
@@ -848,7 +857,7 @@
         }
         SBD{
             "SBD",
-            "dollar da las Salomonas",
+            "dollar da las Inslas da Salomon",
         }
         SCR{
             "SCR",
@@ -856,7 +865,7 @@
         }
         SDD{
             "SDD",
-            "dinar sudanais",
+            "dinar sudanais (1992–2007)",
         }
         SDG{
             "SDG",
@@ -864,7 +873,7 @@
         }
         SDP{
             "SDP",
-            "glivra sudanaisa (1956–2007)",
+            "glivra sudanaisa (1957–1998)",
         }
         SEK{
             "SEK",
@@ -902,6 +911,10 @@
             "SRG",
             "flurin surinam",
         }
+        SSP{
+            "SSP",
+            "glivra sidsudanaisa",
+        }
         STD{
             "STD",
             "dobra da São Tomé e Principe (1977–2017)",
@@ -932,14 +945,18 @@
         }
         TJR{
             "TJR",
-            "rubel dal Tadschikistan",
+            "rubel tadschic",
         }
         TJS{
             "TJS",
-            "somoni dal Tadschikistan",
+            "somoni tadschic",
         }
         TMM{
             "TMM",
+            "manat turkmen (1993–2009)",
+        }
+        TMT{
+            "TMT",
             "manat turkmen",
         }
         TND{
@@ -948,19 +965,19 @@
         }
         TOP{
             "TOP",
-            "pa’anga da Tonga",
+            "paʻanga da Tonga",
         }
         TPE{
             "TPE",
-            "escudo da Timor",
+            "escudo dal Timor",
         }
         TRL{
             "TRL",
-            "lira tirca",
+            "lira tirca (1922–2005)",
         }
         TRY{
             "TRY",
-            "nova lira tirca",
+            "lira tirca",
         }
         TTD{
             "TTD",
@@ -976,23 +993,23 @@
         }
         UAH{
             "UAH",
-            "hryvnia ucranais",
+            "hryvnia ucranaisa",
         }
         UAK{
             "UAK",
-            "karbovanetz ucranais",
+            "karbovanets ucranais",
         }
         UGS{
             "UGS",
-            "schilling ucranais",
+            "schilling ugandais (1966–1987)",
         }
         UGX{
             "UGX",
             "schilling ugandais",
         }
         USD{
-            "US$",
-            "dollar dals Stadis Unids da l’America",
+            "$",
+            "dollar da l’USA",
         }
         USN{
             "USN",
@@ -1016,7 +1033,7 @@
         }
         UZS{
             "UZS",
-            "sum usbec",
+            "som usbec",
         }
         VEB{
             "VEB",
@@ -1028,7 +1045,7 @@
         }
         VES{
             "VES",
-            "bolivar venezuelan",
+            "bolívar venezuelan",
         }
         VND{
             "₫",
@@ -1036,7 +1053,7 @@
         }
         VNN{
             "VNN",
-            "vegl dong vietnamais",
+            "dong vietnamais (1978–1985)",
         }
         VUV{
             "VUV",
@@ -1048,7 +1065,7 @@
         }
         XAF{
             "FCFA",
-            "franc CFA BEAC",
+            "franc CFA da l’Africa Centrala",
         }
         XAG{
             "XAG",
@@ -1088,7 +1105,7 @@
         }
         XOF{
             "CFA",
-            "franc CFA BCEAO",
+            "franc CFA da l’Africa dal Vest",
         }
         XPD{
             "XPD",
@@ -1116,27 +1133,27 @@
         }
         YDD{
             "YDD",
-            "dinar dal Jemen",
+            "dinar jemenit",
         }
         YER{
             "YER",
-            "rial dal Jemen",
+            "rial jemenit",
         }
         YUD{
             "YUD",
-            "dinar jugoslav (1966–1990)",
+            "dinar jugoslav dir (1966–1990)",
         }
         YUM{
             "YUM",
-            "nov dinar jugoslav",
+            "nov dinar jugoslav (1994–2002)",
         }
         YUN{
             "YUN",
-            "dinar jugoslav convertibel",
+            "dinar jugoslav convertibel (1990–1992)",
         }
         YUR{
             "YUR",
-            "dinar jugoslav refurmà",
+            "dinar jugoslav refurmà (1992–1993)",
         }
         ZAL{
             "ZAL",
@@ -1148,7 +1165,7 @@
         }
         ZMK{
             "ZMK",
-            "kwacha da la sambia (1968–2012)",
+            "kwacha da la Sambia (1968–2012)",
         }
         ZMW{
             "ZMW",
@@ -1156,7 +1173,7 @@
         }
         ZRN{
             "ZRN",
-            "nov zaire dal Zaire",
+            "nov zaire dal Zaire (1993–1998)",
         }
         ZRZ{
             "ZRZ",
@@ -1164,118 +1181,1011 @@
         }
         ZWD{
             "ZWD",
-            "dollar dal Simbabwe",
+            "dollar dal Simbabwe (1980–2008)",
+        }
+        ZWL{
+            "ZWL",
+            "dollar dal Simbabwe (2009)",
+        }
+        ZWR{
+            "ZWR",
+            "dollar dal Simbabwe (2008)",
         }
     }
+    Currencies%narrow{
+        AUD{"$"}
+        CAD{"$"}
+        EUR{"€"}
+        GBP{"£"}
+        JMD{"$"}
+        KYD{"$"}
+        MXN{"$"}
+        TRY{"₺"}
+        USD{"$"}
+    }
+    Currencies%variant{
+        TRY{"TL"}
+    }
     CurrencyPlurals{
+        ADP{
+            one{"peseta andorrana"}
+            other{"pesetas andorranas"}
+        }
+        AED{
+            one{"dirham dals Emirats Arabs Unids"}
+            other{"dirhams dals Emirats Arabs Unids"}
+        }
+        AFA{
+            one{"afgani afgan (1927–2002)"}
+            other{"afganis afgans (1927–2002)"}
+        }
+        AFN{
+            one{"afgani afgan"}
+            other{"afganis afgans"}
+        }
+        ALK{
+            one{"lek albanais (1947–1961)"}
+            other{"leks albanais (1947–1961)"}
+        }
+        ALL{
+            one{"lek albanais"}
+            other{"leks albanais"}
+        }
+        AMD{
+            one{"dram armen"}
+            other{"drams armens"}
+        }
+        ANG{
+            one{"flurin da las Antillas Ollandaisas"}
+            other{"flurins da las Antillas Ollandaisas"}
+        }
+        AOA{
+            one{"kwanza angolan"}
+            other{"kwanzas angolans"}
+        }
+        AOK{
+            one{"kwanza angolan (1977–1991)"}
+            other{"kwanzas angolans (1977–1991)"}
+        }
+        AON{
+            one{"nov kwanza angolan (1990–2000)"}
+            other{"novs kwanzas angolans (1990–2000)"}
+        }
+        AOR{
+            one{"kwanza angolan reagiustà (1995–1999)"}
+            other{"kwanzas angolans reagiustads (1995–1999)"}
+        }
+        ARS{
+            one{"pesos argentins"}
+            other{"pesos argentins"}
+        }
+        ATS{
+            one{"schilling austriac"}
+            other{"schillings austriacs"}
+        }
         AUD{
             one{"dollar australian"}
-            other{"dollar australian"}
+            other{"dollars australians"}
+        }
+        AWG{
+            one{"flurins da l’Aruba"}
+            other{"flurins da l’Aruba"}
+        }
+        AZM{
+            one{"manat aserbaidschan (1993–2006)"}
+            other{"manats aserbaidschans (1993–2006)"}
+        }
+        AZN{
+            one{"manat aserbaidschan"}
+            other{"manats aserbaidschans"}
+        }
+        BAD{
+            one{"dinar da la Bosnia-Erzegovina (1992–1994)"}
+            other{"dinars da la Bosnia-Erzegovina (1992–1994)"}
+        }
+        BAM{
+            one{"marc convertibel da la Bosnia-Erzegovina"}
+            other{"marcs convertibel da la Bosnia-Erzegovina"}
+        }
+        BAN{
+            one{"nov dinar da la Bosnia-Erzegovina (1994–1997)"}
+            other{"novs dinars da la Bosnia-Erzegovina (1994–1997)"}
+        }
+        BBD{
+            one{"dollars da Barbados"}
+            other{"dollars da Barbados"}
+        }
+        BDT{
+            one{"taka bangladais"}
+            other{"takas bangladais"}
+        }
+        BEC{
+            one{"franc beltg (convertibel)"}
+            other{"francs beltgs (convertibels)"}
+        }
+        BEF{
+            one{"franc beltg"}
+            other{"francs beltgs"}
+        }
+        BEL{
+            one{"franc beltg (finanzial)"}
+            other{"francs beltgs (finanzial)"}
+        }
+        BGL{
+            one{"lev bulgar dir"}
+            other{"levs bulgars dirs"}
+        }
+        BGM{
+            one{"lev bulgar socialistic"}
+            other{"levs bulgars socialistics"}
+        }
+        BGN{
+            one{"lev bulgar"}
+            other{"levs bulgars"}
+        }
+        BGO{
+            one{"lev bulgar (1879–1952)"}
+            other{"levs bulgars (1879–1952)"}
+        }
+        BHD{
+            one{"dinar dal Bahrain"}
+            other{"dinars dal Bahrain"}
+        }
+        BIF{
+            one{"franc dal Burundi"}
+            other{"francs dal Burundi"}
+        }
+        BMD{
+            one{"dollars da las Bermudas"}
+            other{"dollars da las Bermudas"}
+        }
+        BND{
+            one{"dollar dal Brunei"}
+            other{"dollars dal Brunei"}
+        }
+        BOB{
+            one{"boliviano bolivian"}
+            other{"bolivianos bolivians"}
+        }
+        BRL{
+            one{"reals brasilians"}
+            other{"reals brasilians"}
+        }
+        BSD{
+            one{"dollars da las Bahamas"}
+            other{"dollars da las Bahamas"}
+        }
+        BTN{
+            one{"ngultrum butanais"}
+            other{"ngultrums butanais"}
+        }
+        BUK{
+            one{"kyat burmais"}
+            other{"kyats burmais"}
+        }
+        BWP{
+            one{"pula da la Botswana"}
+            other{"pulas da la Botswana"}
+        }
+        BYB{
+            one{"rubel bieloruss (1994–1999)"}
+            other{"rubels bieloruss (1994–1999)"}
+        }
+        BYN{
+            one{"rubel bieloruss"}
+            other{"rubels bieloruss"}
+        }
+        BYR{
+            one{"rubel bieloruss (2000–2016)"}
+            other{"rubels bieloruss (2000–2016)"}
+        }
+        BZD{
+            one{"dollars dal Belize"}
+            other{"dollars dal Belize"}
         }
         CAD{
             one{"dollar canadais"}
-            other{"dollar canadais"}
+            other{"dollars canadais"}
+        }
+        CDF{
+            one{"franc congolais"}
+            other{"francs congolais"}
+        }
+        CHE{
+            one{"euro WIR"}
+            other{"euros WIR"}
         }
         CHF{
             one{"franc svizzer"}
-            other{"franc svizzer"}
+            other{"francs svizzers"}
+        }
+        CHW{
+            one{"franc WIR"}
+            other{"francs WIR"}
+        }
+        CLP{
+            one{"pesos chilens"}
+            other{"pesos chilens"}
+        }
+        CNH{
+            one{"yuan chinais (offshore)"}
+            other{"yuans chinais (offshore)"}
+        }
+        CNY{
+            one{"yuan chinais"}
+            other{"yuans chinais"}
+        }
+        COP{
+            one{"pesos columbians"}
+            other{"pesos columbians"}
+        }
+        CRC{
+            one{"colons da la Costa Rica"}
+            other{"colons da la Costa Rica"}
+        }
+        CSD{
+            one{"dinar serb (2002–2006)"}
+            other{"dinars serbs (2002–2006)"}
+        }
+        CSK{
+            one{"cruna tschecoslovaca"}
+            other{"crunas tschecoslovacas"}
+        }
+        CUC{
+            one{"peso cuban convertibel"}
+            other{"pesos cubans convertibels"}
+        }
+        CUP{
+            one{"pesos cubans"}
+            other{"pesos cubans"}
+        }
+        CVE{
+            one{"escudo dal Cap Verd"}
+            other{"escudos dal Cap Verd"}
+        }
+        CYP{
+            one{"glivra cipriota"}
+            other{"glivras cipriotas"}
+        }
+        CZK{
+            one{"cruna tcheca"}
+            other{"crunas tschecas"}
+        }
+        DDM{
+            one{"marc da la Germania da l’Ost"}
+            other{"marcs da la Germania da l’Ost"}
+        }
+        DEM{
+            one{"marc tudestg"}
+            other{"marcs tudestgs"}
+        }
+        DJF{
+            one{"franc dal Dschibuti"}
+            other{"francs dal Dschibuti"}
         }
         DKK{
             one{"cruna danaisa"}
-            other{"cruna danaisa"}
+            other{"crunas danaisas"}
+        }
+        DOP{
+            one{"pesos dominicans"}
+            other{"pesos dominicans"}
+        }
+        DZD{
+            one{"dinar algerian"}
+            other{"dinars algerians"}
         }
         EEK{
             one{"cruna estona"}
             other{"cruna estona"}
         }
+        EGP{
+            one{"glivra egipziana"}
+            other{"glivras egipzianas"}
+        }
+        ERN{
+            one{"nakfa eritreic"}
+            other{"nakfas eritreics"}
+        }
+        ESA{
+            one{"peseta spagnola (conto A)"}
+            other{"pesetas spagnolas (conto A)"}
+        }
+        ESB{
+            one{"peseta spagnola (conto convertibel)"}
+            other{"pesetas spagnolas (conto convertibel)"}
+        }
+        ESP{
+            one{"peseta spagnola"}
+            other{"pesetas spagnolas"}
+        }
+        ETB{
+            one{"birr etiopic"}
+            other{"birrs etiopics"}
+        }
         EUR{
             one{"euro"}
-            other{"euro"}
+            other{"euros"}
         }
         FIM{
             one{"marc finlandais"}
             other{"marc finlandais"}
         }
+        FJD{
+            one{"dollar dal Fidschi"}
+            other{"dollars dal Fidschi"}
+        }
+        FKP{
+            one{"glivras dal Falkland"}
+            other{"glivras dal Falkland"}
+        }
+        FRF{
+            one{"franc franzos"}
+            other{"francs franzos"}
+        }
         GBP{
-            one{"glivra sterlina"}
-            other{"glivra sterlina"}
+            one{"glivra britannica"}
+            other{"glivras britannicas"}
+        }
+        GEK{
+            one{"kupon larit georgian"}
+            other{"kupon larits georgians"}
+        }
+        GEL{
+            one{"lari georgian"}
+            other{"laris georgians"}
+        }
+        GHC{
+            one{"cedi ghanais (1979–2007)"}
+            other{"cedis ghanais (1979–2007)"}
+        }
+        GHS{
+            one{"cedi ghanais"}
+            other{"cedis ghanais"}
+        }
+        GIP{
+            one{"glivra da Gibraltar"}
+            other{"glivras da Gibraltar"}
+        }
+        GMD{
+            one{"dalasi gambic"}
+            other{"dalasis gambics"}
+        }
+        GNF{
+            one{"franc da la Guinea"}
+            other{"francs da la Guinea"}
+        }
+        GRD{
+            one{"drachma greca"}
+            other{"drachmas grecas"}
+        }
+        GTQ{
+            one{"quetzals da la Guatemala"}
+            other{"quetzals da la Guatemala"}
+        }
+        GWP{
+            one{"peso da la Guinea-Bissau"}
+            other{"pesos da la Guinea-Bissau"}
+        }
+        GYD{
+            one{"dollars da la Guyana"}
+            other{"dollars da la Guyana"}
+        }
+        HKD{
+            one{"dollar da Hongkong"}
+            other{"dollars da Hongkong"}
         }
         HNL{
             one{"lempira hondurian"}
-            other{"lempira hondurian"}
+            other{"lempiras hondurians"}
+        }
+        HRD{
+            one{"dinar croat"}
+            other{"dinars croats"}
+        }
+        HRK{
+            one{"kuna croata"}
+            other{"kunas croatas"}
+        }
+        HTG{
+            one{"gourdes haitians"}
+            other{"gourdes haitians"}
+        }
+        HUF{
+            one{"forint ungarais"}
+            other{"forints ungarais"}
+        }
+        IDR{
+            one{"rupia indonaisa"}
+            other{"rupias indonaisas"}
         }
         IEP{
             one{"glivra indonaisa"}
             other{"glivra indonaisa"}
         }
+        ILP{
+            one{"glivra israeliana"}
+            other{"glivras israelianas"}
+        }
+        ILR{
+            one{"schekel israelian (1980–1985)"}
+            other{"schekels israelians (1980–1985)"}
+        }
+        ILS{
+            one{"nov schekel israelian"}
+            other{"novs schekels israelians"}
+        }
+        INR{
+            one{"rupia indica"}
+            other{"rupias indicas"}
+        }
+        IQD{
+            one{"dinar iracais"}
+            other{"dinars iracais"}
+        }
+        IRR{
+            one{"rial iranais"}
+            other{"rials iranais"}
+        }
         ISJ{
             one{"veglia cruna islandaisa"}
             other{"veglia cruna islandaisa"}
         }
         ISK{
             one{"cruna islandaisa"}
-            other{"cruna islandaisa"}
+            other{"crunas islandaisas"}
+        }
+        ITL{
+            one{"lira taliana"}
+            other{"liras talianas"}
         }
         JMD{
             one{"dollar giamaican"}
-            other{"dollar giamaican"}
+            other{"dollars giamaicans"}
+        }
+        JOD{
+            one{"dinar jordanic"}
+            other{"dinars jordanics"}
+        }
+        JPY{
+            one{"yen giapunais"}
+            other{"yens giapunais"}
+        }
+        KES{
+            one{"schilling kenian"}
+            other{"schillings kenians"}
+        }
+        KGS{
+            one{"som kirgis"}
+            other{"soms kirgis"}
+        }
+        KHR{
+            one{"riel cambodschan"}
+            other{"riels cambodschans"}
+        }
+        KMF{
+            one{"franc comorian"}
+            other{"francs comorians"}
+        }
+        KPW{
+            one{"won da la Corea dal Nord"}
+            other{"wons da la Corea dal Nord"}
+        }
+        KRH{
+            one{"hwan da la Corea dal Sid (1953–1962)"}
+            other{"hwans da la Corea dal Sid (1953–1962)"}
+        }
+        KRO{
+            one{"won da la Corea dal Sid (1945–1953)"}
+            other{"wons da la Corea dal Sid (1945–1953)"}
+        }
+        KRW{
+            one{"won da la Corea dal Sid"}
+            other{"wons da la Corea dal Sid"}
+        }
+        KWD{
+            one{"dinar dal Kuwait"}
+            other{"dinars dal Kuwait"}
         }
         KYD{
             one{"dollar da las Inslas Cayman"}
-            other{"dollar da las Inslas Cayman"}
+            other{"dollars da las Inslas Cayman"}
+        }
+        KZT{
+            one{"tenge kasac"}
+            other{"tenges kasacs"}
+        }
+        LAK{
+            one{"kip laot"}
+            other{"kips laots"}
+        }
+        LBP{
+            one{"glivra libanaisa"}
+            other{"glivras libanaisas"}
+        }
+        LKR{
+            one{"rupia da la Sri Lanka"}
+            other{"rupias da la Sri Lanka"}
+        }
+        LRD{
+            one{"dollar liberian"}
+            other{"dollars liberians"}
+        }
+        LSL{
+            one{"loti dal Lesotho"}
+            other{"lotis dal Lesotho"}
+        }
+        LUF{
+            one{"franc luxemburgais"}
+            other{"francs luxemburgais"}
+        }
+        LUL{
+            one{"franc finanzial luxemburgais"}
+            other{"francs finanzials luxemburgais"}
+        }
+        LVR{
+            one{"rubel letton"}
+            other{"rubels lettons"}
+        }
+        LYD{
+            one{"dinar libic"}
+            other{"dinars libics"}
+        }
+        MAD{
+            one{"dirham marocan"}
+            other{"dirhams marocans"}
+        }
+        MAF{
+            one{"franc marocan"}
+            other{"francs marocans"}
+        }
+        MCF{
+            one{"franc monegass"}
+            other{"francs monegass"}
+        }
+        MDC{
+            one{"cupon moldav"}
+            other{"cupons moldavs"}
+        }
+        MDL{
+            one{"leu moldav"}
+            other{"leus moldavs"}
+        }
+        MGA{
+            one{"ariary madagasc"}
+            other{"ariarys madagascs"}
+        }
+        MGF{
+            one{"franc madagasc"}
+            other{"francs madagascs"}
+        }
+        MKD{
+            one{"dinar macedon"}
+            other{"dinars macedons"}
+        }
+        MKN{
+            one{"dinar macedon (1992–1993)"}
+            other{"dinars macedons (1992–1993)"}
+        }
+        MLF{
+            one{"franc dal Mali"}
+            other{"francs dal Mali"}
+        }
+        MMK{
+            one{"kyat dal Myanmar"}
+            other{"kyats dal Myanmar"}
+        }
+        MNT{
+            one{"tugrik mongolic"}
+            other{"tugriks mongolics"}
+        }
+        MOP{
+            one{"pataca dal Macao"}
+            other{"patacas dal Macao"}
+        }
+        MRO{
+            one{"ouguiya da la Mauretania (1973–2017)"}
+            other{"ouguiyas da la Mauretania (1973–2017)"}
+        }
+        MRU{
+            one{"ouguiya da la Mauretania"}
+            other{"ouguiyas da la Mauretania"}
+        }
+        MTL{
+            one{"lira maltaisa"}
+            other{"liras maltaisas"}
+        }
+        MTP{
+            one{"glivra maltaisa"}
+            other{"glivras maltaisas"}
+        }
+        MUR{
+            one{"rupia dal Mauritius"}
+            other{"rupias dal Mauritius"}
+        }
+        MVP{
+            one{"rupia da las Maledivas (1947–1981)"}
+            other{"rupias da las Maledivas (1947–1981)"}
+        }
+        MVR{
+            one{"rufiyaa da las Maledivas"}
+            other{"rufiyaas da las Maledivas"}
+        }
+        MWK{
+            one{"kwacha dal Malawi"}
+            other{"kwachas dal Malawi"}
         }
         MXN{
             one{"peso mexican"}
-            other{"peso mexican"}
+            other{"pesos mexicans"}
+        }
+        MYR{
+            one{"ringgit malaisic"}
+            other{"ringgits malaisics"}
+        }
+        MZE{
+            one{"escudo dal Mosambic"}
+            other{"escudos dal Mosambic"}
+        }
+        MZM{
+            one{"metical dal Mosambic (1980–2006)"}
+            other{"meticals dal Mosambic (1980–2006)"}
+        }
+        MZN{
+            one{"metical dal Mosambic"}
+            other{"meticals dal Mosambic"}
+        }
+        NAD{
+            one{"dollar namibian"}
+            other{"dollars namibians"}
+        }
+        NGN{
+            one{"naira nigeriana"}
+            other{"nairas nigerianas"}
+        }
+        NIO{
+            one{"córdoba nicaraguan"}
+            other{"córdobas nicaraguans"}
+        }
+        NLG{
+            one{"flurin ollandais"}
+            other{"flurins ollandais"}
         }
         NOK{
             one{"cruna norvegiaisa"}
-            other{"cruna norvegiaisa"}
+            other{"crunas norvegiaisas"}
+        }
+        NPR{
+            one{"rupia nepalaisa"}
+            other{"rupias nepalaisas"}
+        }
+        NZD{
+            one{"dollar da la Nova Zelanda"}
+            other{"dollars da la Nova Zelanda"}
+        }
+        OMR{
+            one{"rial da l’Oman"}
+            other{"rials da l’Oman"}
+        }
+        PAB{
+            one{"balboas dal Panama"}
+            other{"balboas dal Panama"}
+        }
+        PEN{
+            one{"soles peruans"}
+            other{"soles peruans"}
+        }
+        PGK{
+            one{"kina da la Papua Nova Guinea"}
+            other{"kinas da la Papua Nova Guinea"}
+        }
+        PHP{
+            one{"peso filippin"}
+            other{"pesos filippins"}
+        }
+        PKR{
+            one{"rupia pakistana"}
+            other{"rupias pakistanas"}
         }
         PLN{
             one{"zloty polac"}
-            other{"zloty polac"}
+            other{"zlotys polacs"}
         }
         PLZ{
             one{"zloty polac (1950–1995)"}
             other{"zloty polac (1950–1995)"}
         }
+        PTE{
+            one{"escudo portugais"}
+            other{"escudos portugais"}
+        }
+        PYG{
+            one{"guaranis paraguaians"}
+            other{"guaranis paraguaians"}
+        }
+        QAR{
+            one{"rial da Katar"}
+            other{"rials da Katar"}
+        }
+        ROL{
+            one{"leu rumen (1952–2006)"}
+            other{"leus rumens (1952–2006)"}
+        }
+        RON{
+            one{"leu rumen"}
+            other{"leus rumens"}
+        }
+        RSD{
+            one{"dinar serb"}
+            other{"dinars serbs"}
+        }
         RUB{
-            one{"rubel russ (nov)"}
-            other{"rubel russ (nov)"}
+            one{"rubel russ"}
+            other{"rubels russ"}
         }
         RUR{
             one{"rubel russ (vegl)"}
             other{"rubel russ (vegl)"}
         }
+        RWF{
+            one{"franc ruandais"}
+            other{"francs ruandais"}
+        }
         SAR{
             one{"riyal saudit"}
-            other{"riyal saudit"}
+            other{"riyals saudits"}
+        }
+        SBD{
+            one{"dollar da las Inslas da Salomon"}
+            other{"dollars da las Inslas da Salomon"}
+        }
+        SCR{
+            one{"rupia da las Seychellas"}
+            other{"rupias da las Seychellas"}
+        }
+        SDD{
+            one{"dinar sudanais (1992–2007)"}
+            other{"dinars sudanais (1992–2007)"}
+        }
+        SDG{
+            one{"glivra sudanaisa"}
+            other{"glivras sudanaisas"}
+        }
+        SDP{
+            one{"glivra sudanaisa (1957–1998)"}
+            other{"glivras sudanaisas (1957–1998)"}
         }
         SEK{
             one{"cruna svedaisa"}
-            other{"cruna svedaisa"}
+            other{"crunas svedaisas"}
+        }
+        SGD{
+            one{"dollar dal Singapur"}
+            other{"dollars dal Singapur"}
+        }
+        SHP{
+            one{"glivra da Sontg’Elena"}
+            other{"glivras da Sontg’Elena"}
+        }
+        SIT{
+            one{"tolar sloven"}
+            other{"tolars slovens"}
+        }
+        SKK{
+            one{"cruna slovaca"}
+            other{"crunas slovacas"}
+        }
+        SLL{
+            one{"leone da la Sierra Leone"}
+            other{"leones da la Sierra Leone"}
+        }
+        SOS{
+            one{"schilling somalian"}
+            other{"schillings somalians"}
+        }
+        SRD{
+            one{"dollars surinams"}
+            other{"dollars surinams"}
+        }
+        SSP{
+            one{"glivra sidsudanaisa"}
+            other{"glivras sidsudanaisas"}
+        }
+        STN{
+            one{"dobra da São Tomé e Príncipe"}
+            other{"dobras da São Tomé e Príncipe"}
+        }
+        SUR{
+            one{"rubel sovietic"}
+            other{"rubels sovietics"}
+        }
+        SYP{
+            one{"glivra siriana"}
+            other{"glivras sirianas"}
+        }
+        SZL{
+            one{"lilangeni dal Swaziland"}
+            other{"emalangenis dal Swaziland"}
+        }
+        THB{
+            one{"baht tailandais"}
+            other{"bahts tailandais"}
+        }
+        TJR{
+            one{"rubel tadschic"}
+            other{"rubels tadschics"}
+        }
+        TJS{
+            one{"somoni tadschic"}
+            other{"somonis tadschics"}
+        }
+        TMM{
+            one{"manat turkmen (1993–2009)"}
+            other{"manats turkmens (1993–2009)"}
+        }
+        TMT{
+            one{"manat turkmen"}
+            other{"manats turkmens"}
+        }
+        TND{
+            one{"dinar tunesian"}
+            other{"dinars tunesians"}
+        }
+        TOP{
+            one{"paʻanga da Tonga"}
+            other{"pa’angas da Tonga"}
+        }
+        TPE{
+            one{"escudo dal Timor"}
+            other{"escudos dal Timor"}
+        }
+        TRL{
+            one{"lira tirca (1922–2005)"}
+            other{"liras tircas (1922–2005)"}
         }
         TRY{
-            one{"nova lira tirca"}
-            other{"nova lira tirca"}
+            one{"lira tirca"}
+            other{"liras tircas"}
+        }
+        TTD{
+            one{"dollars da Trinidad e Tobago"}
+            other{"dollars da Trinidad e Tobago"}
+        }
+        TWD{
+            one{"nov dollar taiwanais"}
+            other{"novs dollars taiwanais"}
+        }
+        TZS{
+            one{"schilling tansanian"}
+            other{"schillings tansanians"}
+        }
+        UAH{
+            one{"hryvnia ucranaisa"}
+            other{"hryvnias ucranaisas"}
+        }
+        UAK{
+            one{"karbovanets ucranais"}
+            other{"karbovantsiv ucranais"}
+        }
+        UGS{
+            one{"schilling ugandais (1966–1987)"}
+            other{"schillings ugandais (1966–1987)"}
+        }
+        UGX{
+            one{"schilling ugandais"}
+            other{"schillings ugandais"}
         }
         USD{
-            one{"dollar dals Stadis Unids da l’America"}
-            other{"dollar dals Stadis Unids da l’America"}
+            one{"dollar da l’USA"}
+            other{"dollars da l’USA"}
+        }
+        UYU{
+            one{"peso da l’Uruguai"}
+            other{"pesos da l’Uruguai"}
+        }
+        UZS{
+            one{"som usbec"}
+            other{"soms usbecs"}
+        }
+        VES{
+            one{"bolívar venezuelan"}
+            other{"bolívars venezuelans"}
+        }
+        VND{
+            one{"dong vietnamais"}
+            other{"dongs vietnamais"}
+        }
+        VNN{
+            one{"dong vietnamais (1978–1985)"}
+            other{"dongs vietnamais (1978–1985)"}
+        }
+        VUV{
+            one{"vatu dal Vanuatu"}
+            other{"vatus dal Vanuatu"}
+        }
+        WST{
+            one{"tala da la Samoa"}
+            other{"talas da la Samoa"}
+        }
+        XAF{
+            one{"franc CFA da l’Africa Centrala"}
+            other{"francs CFA da l’Africa Centrala"}
         }
         XCD{
             one{"dollar da la Caribica Orientala"}
-            other{"dollar da la Caribica Orientala"}
+            other{"dollars da la Caribica Orientala"}
+        }
+        XOF{
+            one{"franc CFA da l’Africa dal Vest"}
+            other{"francs CFA da l’Africa dal Vest"}
+        }
+        XPF{
+            one{"franc CFP"}
+            other{"francs CFP"}
         }
         XXX{
-            one{"valuta nunenconuschenta"}
-            other{"valuta nunenconuschenta"}
+            one{"(unitad nunenconuschenta da la valuta)"}
+            other{"(valuta nunenconuschenta)"}
+        }
+        YDD{
+            one{"dinar jemenit"}
+            other{"dinars jemenits"}
+        }
+        YER{
+            one{"rial jemenit"}
+            other{"rials jemenits"}
+        }
+        YUD{
+            one{"dinar jugoslav dir (1966–1990)"}
+            other{"dinars jugoslavs dirs (1966–1990)"}
+        }
+        YUM{
+            one{"nov dinar jugoslav (1994–2002)"}
+            other{"novs dinars jugoslavs (1994–2002)"}
+        }
+        YUN{
+            one{"dinar jugoslav convertibel (1990–1992)"}
+            other{"dinars jugoslavs convertibels (1990–1992)"}
+        }
+        YUR{
+            one{"dinar jugoslav refurmà (1992–1993)"}
+            other{"dinars jugoslavs refurmads (1992–1993)"}
+        }
+        ZAL{
+            one{"rand sidafrican (finanzial)"}
+            other{"rands sidafricans (finanzial)"}
+        }
+        ZAR{
+            one{"rand sidafrican"}
+            other{"rands sidafricans"}
+        }
+        ZMK{
+            one{"kwacha da la Sambia (1968–2012)"}
+            other{"kwachas da la Sambia (1968–2012)"}
+        }
+        ZMW{
+            one{"kwacha da la Sambia"}
+            other{"kwachas da la Sambia"}
+        }
+        ZRN{
+            one{"nov zaire dal Zaire (1993–1998)"}
+            other{"novs zaires dal Zaire (1993–1998)"}
+        }
+        ZWD{
+            one{"dollar dal Simbabwe (1980–2008)"}
+            other{"dollars dal Simbabwe (1980–2008)"}
+        }
+        ZWL{
+            one{"dollar dal Simbabwe (2009)"}
+            other{"dollars dal Simbabwe (2009)"}
+        }
+        ZWR{
+            one{"dollar dal Simbabwe (2008)"}
+            other{"dollars dal Simbabwe (2008)"}
         }
     }
     CurrencyUnitPatterns{
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/rn.txt b/icu4c/source/data/curr/rn.txt
index 46454c0..1d0610a 100644
--- a/icu4c/source/data/curr/rn.txt
+++ b/icu4c/source/data/curr/rn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rn{
     Currencies{
         AED{
@@ -223,5 +224,4 @@
             "Idolari ryo muri Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ro.txt b/icu4c/source/data/curr/ro.txt
index 406e0d3..9b076f4 100644
--- a/icu4c/source/data/curr/ro.txt
+++ b/icu4c/source/data/curr/ro.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ro{
     Currencies{
         ADP{
@@ -16,7 +17,7 @@
         }
         ALL{
             "ALL",
-            "leka albaneză",
+            "lek",
         }
         AMD{
             "AMD",
@@ -24,7 +25,7 @@
         }
         ANG{
             "ANG",
-            "gulden din Antilele Olandeze",
+            "gulden neerlandez antilez",
         }
         AOA{
             "AOA",
@@ -64,7 +65,7 @@
         }
         BAM{
             "BAM",
-            "marcă convertibilă din Bosnia și Herțegovina",
+            "marcă convertibilă",
         }
         BBD{
             "BBD",
@@ -88,7 +89,7 @@
         }
         BGN{
             "BGN",
-            "leva bulgărească",
+            "leva",
         }
         BHD{
             "BHD",
@@ -108,7 +109,7 @@
         }
         BOB{
             "BOB",
-            "boliviano bolivian",
+            "boliviano",
         }
         BOP{
             "BOP",
@@ -124,7 +125,7 @@
         }
         BRL{
             "BRL",
-            "real brazilian",
+            "real",
         }
         BRR{
             "BRR",
@@ -188,7 +189,7 @@
         }
         CRC{
             "CRC",
-            "colon costarican",
+            "colón costarican",
         }
         CSD{
             "CSD",
@@ -348,7 +349,7 @@
         }
         HRK{
             "HRK",
-            "kuna croată",
+            "kuna",
         }
         HTG{
             "HTG",
@@ -356,7 +357,7 @@
         }
         HUF{
             "HUF",
-            "forint maghiar",
+            "forint",
         }
         IDR{
             "IDR",
@@ -512,7 +513,7 @@
         }
         MKD{
             "MKD",
-            "dinar macedonean",
+            "denar",
         }
         MLF{
             "MLF",
@@ -592,7 +593,7 @@
         }
         NIO{
             "NIO",
-            "cordoba nicaraguană",
+            "córdoba oro",
         }
         NLG{
             "NLG",
@@ -624,7 +625,7 @@
         }
         PEN{
             "PEN",
-            "sol peruvian",
+            "sol",
         }
         PES{
             "PES",
@@ -644,7 +645,7 @@
         }
         PLN{
             "PLN",
-            "zlot polonez",
+            "zlot",
         }
         PLZ{
             "PLZ",
@@ -652,7 +653,7 @@
         }
         PYG{
             "PYG",
-            "guarani paraguayan",
+            "guarani",
         }
         QAR{
             "QAR",
@@ -808,7 +809,7 @@
         }
         TTD{
             "TTD",
-            "dolar din Trinidad-Tobago",
+            "dolar din Trinidad și Tobago",
         }
         TWD{
             "TWD",
@@ -820,7 +821,7 @@
         }
         UAH{
             "UAH",
-            "hryvna ucraineană",
+            "grivnă",
         }
         UAK{
             "UAK",
@@ -868,7 +869,7 @@
         }
         VES{
             "VES",
-            "bolivar venezuelean",
+            "bolívar soberano",
         }
         VND{
             "VND",
@@ -912,7 +913,7 @@
         }
         XCD{
             "XCD",
-            "dolar din Caraibele de Est",
+            "dolar est-caraib",
         }
         XDR{
             "XDR",
@@ -1124,9 +1125,9 @@
             other{"afgani afgani"}
         }
         ALL{
-            few{"leka albaneze"}
-            one{"leka albaneză"}
-            other{"leka albaneze"}
+            few{"lek"}
+            one{"lek"}
+            other{"lek"}
         }
         AMD{
             few{"drami armenești"}
@@ -1134,9 +1135,9 @@
             other{"drami armenești"}
         }
         ANG{
-            few{"guldeni din Antilele Olandeze"}
-            one{"gulden din Antilele Olandeze"}
-            other{"guldeni din Antilele Olandeze"}
+            few{"guldeni neerlandezi antilezi"}
+            one{"gulden neerlandez antilez"}
+            other{"guldeni neerlandezi antilezi"}
         }
         AOA{
             few{"kwanze angoleze"}
@@ -1179,9 +1180,9 @@
             other{"dinari Bosnia-Herțegovina (1992–1994)"}
         }
         BAM{
-            few{"mărci convertibile din Bosnia și Herțegovina"}
-            one{"marcă convertibilă din Bosnia și Herțegovina"}
-            other{"mărci convertibile din Bosnia și Herțegovina"}
+            few{"mărci convertibile"}
+            one{"marcă convertibilă"}
+            other{"mărci convertibile"}
         }
         BBD{
             few{"dolari din Barbados"}
@@ -1209,9 +1210,9 @@
             other{"franci belgieni (financiari)"}
         }
         BGN{
-            few{"leva bulgărești"}
-            one{"leva bulgărească"}
-            other{"leva bulgărești"}
+            few{"leve"}
+            one{"leva"}
+            other{"leve"}
         }
         BHD{
             few{"dinari din Bahrain"}
@@ -1234,9 +1235,9 @@
             other{"dolari Brunei"}
         }
         BOB{
-            few{"boliviano bolivieni"}
-            one{"boliviano bolivian"}
-            other{"boliviano bolivieni"}
+            few{"boliviano"}
+            one{"boliviano"}
+            other{"boliviano"}
         }
         BOP{
             few{"pesos bolivieni"}
@@ -1244,9 +1245,9 @@
             other{"pesos bolivieni"}
         }
         BRL{
-            few{"reali brazilieni"}
-            one{"real brazilian"}
-            other{"reali brazilieni"}
+            few{"reali"}
+            one{"real"}
+            other{"reali"}
         }
         BSD{
             few{"dolari din Bahamas"}
@@ -1314,9 +1315,9 @@
             other{"pesos columbieni"}
         }
         CRC{
-            few{"coloni costaricani"}
-            one{"colon costarican"}
-            other{"coloni costaricani"}
+            few{"colóni costaricani"}
+            one{"colón costarican"}
+            other{"colóni costaricani"}
         }
         CSD{
             few{"dinari Serbia și Muntenegru (2002–2006)"}
@@ -1494,9 +1495,9 @@
             other{"dinari croați"}
         }
         HRK{
-            few{"kune croate"}
-            one{"kuna croată"}
-            other{"kune croate"}
+            few{"kuna"}
+            one{"kuna"}
+            other{"kuna"}
         }
         HTG{
             few{"gourde din Haiti"}
@@ -1504,9 +1505,9 @@
             other{"gourde din Haiti"}
         }
         HUF{
-            few{"forinți maghiari"}
-            one{"forint maghiar"}
-            other{"forinți maghiari"}
+            few{"forinți"}
+            one{"forint"}
+            other{"forinți"}
         }
         IDR{
             few{"rupii indoneziene"}
@@ -1694,9 +1695,9 @@
             other{"franci Madagascar"}
         }
         MKD{
-            few{"dinari macedoneni"}
-            one{"dinar macedonean"}
-            other{"dinari macedoneni"}
+            few{"denari"}
+            one{"denar"}
+            other{"denari"}
         }
         MLF{
             few{"franci Mali"}
@@ -1779,9 +1780,9 @@
             other{"naire nigeriene"}
         }
         NIO{
-            few{"cordobe nicaraguane"}
-            one{"cordoba nicaraguană"}
-            other{"cordobe nicaraguane"}
+            few{"córdobe oro"}
+            one{"córdoba oro"}
+            other{"córdobe oro"}
         }
         NLG{
             few{"guldeni olandezi"}
@@ -1814,9 +1815,9 @@
             other{"balboa panameze"}
         }
         PEN{
-            few{"soli peruvieni"}
-            one{"sol peruvian"}
-            other{"soli peruvieni"}
+            few{"soli"}
+            one{"sol"}
+            other{"soli"}
         }
         PES{
             few{"soli peruvieni (1863–1965)"}
@@ -1839,9 +1840,9 @@
             other{"rupii pakistaneze"}
         }
         PLN{
-            few{"zloți polonezi"}
-            one{"zlot polonez"}
-            other{"zloți polonezi"}
+            few{"zloți"}
+            one{"zlot"}
+            other{"zloți"}
         }
         PLZ{
             few{"zloți polonezi (1950–1995)"}
@@ -1849,9 +1850,9 @@
             other{"zloți polonezi (1950–1995)"}
         }
         PYG{
-            few{"guarani paraguayeni"}
-            one{"guarani paraguayan"}
-            other{"guarani paraguayeni"}
+            few{"guarani"}
+            one{"guarani"}
+            other{"guarani"}
         }
         QAR{
             few{"riali qatarieni"}
@@ -2044,9 +2045,9 @@
             other{"lire turcești"}
         }
         TTD{
-            few{"dolari din Trinidad-Tobago"}
-            one{"dolar din Trinidad-Tobago"}
-            other{"dolari din Trinidad-Tobago"}
+            few{"dolari din Trinidad și Tobago"}
+            one{"dolar din Trinidad și Tobago"}
+            other{"dolari din Trinidad și Tobago"}
         }
         TWD{
             few{"dolari noi din Taiwan"}
@@ -2059,9 +2060,9 @@
             other{"șilingi tanzanieni"}
         }
         UAH{
-            few{"hryvna ucrainiene"}
-            one{"hryvna ucrainiană"}
-            other{"hryvna ucrainiene"}
+            few{"grivne"}
+            one{"grivnă"}
+            other{"grivne"}
         }
         UAK{
             few{"carboave ucrainiene"}
@@ -2119,9 +2120,9 @@
             other{"bolivari venezueleni (2008–2018)"}
         }
         VES{
-            few{"bolivari venezueleni"}
-            one{"bolivar venezuelean"}
-            other{"bolivari venezueleni"}
+            few{"bolívari soberano"}
+            one{"bolívar soberano"}
+            other{"bolívari soberano"}
         }
         VND{
             few{"dongi vietnamezi"}
@@ -2144,9 +2145,9 @@
             other{"franci CFA central-africani"}
         }
         XCD{
-            few{"dolari din Caraibele de Est"}
-            one{"dolar din Caraibele de Est"}
-            other{"dolari din Caraibele de Est"}
+            few{"dolari est-caraibi"}
+            one{"dolar est-caraib"}
+            other{"dolari est-caraibi"}
         }
         XFO{
             few{"franci francezi de aur"}
@@ -2224,5 +2225,4 @@
         one{"{0} {1}"}
         other{"{0} de {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ro_MD.txt b/icu4c/source/data/curr/ro_MD.txt
index 9d96c16..47ffdad 100644
--- a/icu4c/source/data/curr/ro_MD.txt
+++ b/icu4c/source/data/curr/ro_MD.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ro_MD{
     Currencies{
         MDL{
@@ -7,5 +8,4 @@
             "leu moldovenesc",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/rof.txt b/icu4c/source/data/curr/rof.txt
index 5a0516b..6dce4d9 100644
--- a/icu4c/source/data/curr/rof.txt
+++ b/icu4c/source/data/curr/rof.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rof{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "heleri sa Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/root.txt b/icu4c/source/data/curr/root.txt
index a10f5be..f1069d3 100644
--- a/icu4c/source/data/curr/root.txt
+++ b/icu4c/source/data/curr/root.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 root{
     Currencies{
         AUD{
@@ -88,9 +89,12 @@
         }
     }
     Currencies%narrow{
+        AFN{"؋"}
+        AMD{"֏"}
         AOA{"Kz"}
         ARS{"$"}
         AUD{"$"}
+        AZN{"₼"}
         BAM{"KM"}
         BBD{"$"}
         BDT{"৳"}
@@ -119,6 +123,7 @@
         FKP{"£"}
         GBP{"£"}
         GEL{"₾"}
+        GHS{"GH₵"}
         GIP{"£"}
         GNF{"FG"}
         GTQ{"Q"}
@@ -193,15 +198,15 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
+    Version{"38.1"}
     currencySpacing{
         afterCurrency{
-            currencyMatch{"[:^S:]"}
+            currencyMatch{"[[:^S:]&[:^Z:]]"}
             insertBetween{" "}
             surroundingMatch{"[:digit:]"}
         }
         beforeCurrency{
-            currencyMatch{"[:^S:]"}
+            currencyMatch{"[[:^S:]&[:^Z:]]"}
             insertBetween{" "}
             surroundingMatch{"[:digit:]"}
         }
diff --git a/icu4c/source/data/curr/ru.txt b/icu4c/source/data/curr/ru.txt
index 48f59c1..88a698b 100644
--- a/icu4c/source/data/curr/ru.txt
+++ b/icu4c/source/data/curr/ru.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru{
     Currencies{
         ADP{
@@ -2235,5 +2236,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ru_BY.txt b/icu4c/source/data/curr/ru_BY.txt
index 7677463..21966dd 100644
--- a/icu4c/source/data/curr/ru_BY.txt
+++ b/icu4c/source/data/curr/ru_BY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru_BY{
     Currencies{
         BYN{
@@ -14,5 +15,4 @@
     Currencies%narrow{
         BYN{"Br"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ru_KG.txt b/icu4c/source/data/curr/ru_KG.txt
index a7124fd..5f6ae64 100644
--- a/icu4c/source/data/curr/ru_KG.txt
+++ b/icu4c/source/data/curr/ru_KG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru_KG{
     Currencies{
         KGS{
@@ -7,5 +8,4 @@
             "киргизский сом",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ru_KZ.txt b/icu4c/source/data/curr/ru_KZ.txt
index 9735178..5d64a8a 100644
--- a/icu4c/source/data/curr/ru_KZ.txt
+++ b/icu4c/source/data/curr/ru_KZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru_KZ{
     Currencies{
         KZT{
@@ -7,5 +8,4 @@
             "казахский тенге",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ru_MD.txt b/icu4c/source/data/curr/ru_MD.txt
index 717397b..5025f6c 100644
--- a/icu4c/source/data/curr/ru_MD.txt
+++ b/icu4c/source/data/curr/ru_MD.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru_MD{
     Currencies{
         MDL{
@@ -7,5 +8,4 @@
             "молдавский лей",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/rw.txt b/icu4c/source/data/curr/rw.txt
index 3782c6e..2ad3913 100644
--- a/icu4c/source/data/curr/rw.txt
+++ b/icu4c/source/data/curr/rw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rw{
     Currencies{
         RWF{
@@ -10,5 +11,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/rwk.txt b/icu4c/source/data/curr/rwk.txt
index 522f6b4..62f715d 100644
--- a/icu4c/source/data/curr/rwk.txt
+++ b/icu4c/source/data/curr/rwk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rwk{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Dola ya Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sa.txt b/icu4c/source/data/curr/sa.txt
new file mode 100644
index 0000000..6e9357f
--- /dev/null
+++ b/icu4c/source/data/curr/sa.txt
@@ -0,0 +1,80 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+sa{
+    Currencies{
+        BRL{
+            "R$",
+            "ब्राजीली रियाल",
+        }
+        CNY{
+            "CN¥",
+            "चीनी युआन",
+        }
+        EUR{
+            "€",
+            "फिरङ्गिन् मुद्रा",
+        }
+        GBP{
+            "£",
+            "आङ्ग्लदेशीयः पाउंड",
+        }
+        INR{
+            "₹",
+            "भारतीय रूप्यकम्",
+        }
+        JPY{
+            "JP¥",
+            "जापानी येन",
+        }
+        RUB{
+            "RUB",
+            "रष्यदेशीय रूबल",
+        }
+        USD{
+            "US$",
+            "यूएस डॉलर",
+        }
+        XXX{
+            "¤",
+            "अज्ञात मुद्रा",
+        }
+    }
+    Currencies%narrow{
+        BRL{"R$"}
+        CNY{"¥"}
+        GBP{"£"}
+        INR{"₹"}
+        JPY{"¥"}
+        USD{"$"}
+    }
+    CurrencyPlurals{
+        BRL{
+            other{"ब्राजीली रियाल"}
+        }
+        CNY{
+            other{"चीनी युआन"}
+        }
+        EUR{
+            other{"फिरङ्गिन् मुद्रा"}
+        }
+        GBP{
+            other{"आङ्ग्लदेशीयः पाउंड"}
+        }
+        INR{
+            other{"भारतीय रूप्यकम्"}
+        }
+        JPY{
+            other{"जापानी येन"}
+        }
+        RUB{
+            other{"रष्यदेशीय रूबल"}
+        }
+        USD{
+            other{"अमेरिकादेशः डॉलर"}
+        }
+        XXX{
+            other{"(अज्ञात मुद्रा)"}
+        }
+    }
+}
diff --git a/icu4c/source/data/curr/sah.txt b/icu4c/source/data/curr/sah.txt
index 4f32838..985af35 100644
--- a/icu4c/source/data/curr/sah.txt
+++ b/icu4c/source/data/curr/sah.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sah{
     Currencies{
         RUB{
@@ -25,5 +26,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/saq.txt b/icu4c/source/data/curr/saq.txt
index 1ccdaf9..8028679 100644
--- a/icu4c/source/data/curr/saq.txt
+++ b/icu4c/source/data/curr/saq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 saq{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Dola eel Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sat.txt b/icu4c/source/data/curr/sat.txt
index 2ce3a44..7662c4b 100644
--- a/icu4c/source/data/curr/sat.txt
+++ b/icu4c/source/data/curr/sat.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat{
     Currencies{
         BRL{
@@ -81,5 +82,4 @@
             two{"ᱵᱟᱝᱩᱨᱩᱢ ᱠᱟᱨᱮᱱᱥᱤ"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sat_IN.txt b/icu4c/source/data/curr/sat_IN.txt
index c4976b4..15af329 100644
--- a/icu4c/source/data/curr/sat_IN.txt
+++ b/icu4c/source/data/curr/sat_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat_IN{
     "%%ALIAS"{"sat_Olck_IN"}
 }
diff --git a/icu4c/source/data/curr/sat_Olck.txt b/icu4c/source/data/curr/sat_Olck.txt
index 0d7225f..f09b6a0 100644
--- a/icu4c/source/data/curr/sat_Olck.txt
+++ b/icu4c/source/data/curr/sat_Olck.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat_Olck{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sat_Olck_IN.txt b/icu4c/source/data/curr/sat_Olck_IN.txt
index 8bda43c..0a44bdb 100644
--- a/icu4c/source/data/curr/sat_Olck_IN.txt
+++ b/icu4c/source/data/curr/sat_Olck_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/sbp.txt b/icu4c/source/data/curr/sbp.txt
index 2e168c9..7811ea6 100644
--- a/icu4c/source/data/curr/sbp.txt
+++ b/icu4c/source/data/curr/sbp.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sbp{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Ihela ya Simbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sd.txt b/icu4c/source/data/curr/sd.txt
index 17515f3..2ab2e9f 100644
--- a/icu4c/source/data/curr/sd.txt
+++ b/icu4c/source/data/curr/sd.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd{
     Currencies{
         AED{
@@ -832,7 +833,7 @@
             other{"ڀوٽاني گلٽرم"}
         }
         BWP{
-            one{"بوستواني پولا"}
+            one{"بوٽسواني پولا"}
             other{"بوستواني پولا"}
         }
         BYN{
@@ -896,7 +897,7 @@
             other{"جبوتي فرينڪ"}
         }
         DKK{
-            one{"دانش ڪرون"}
+            one{"ڊينش ڪرون"}
             other{"دانش ڪرون"}
         }
         DOP{
@@ -985,7 +986,7 @@
         }
         IDR{
             one{"انڊونيشيائي رپيه"}
-            other{"انڊونيشيائي رپيه"}
+            other{"انڊونيشيائي رپيو"}
         }
         ILS{
             one{"اسرائيلي نيو شيڪل"}
@@ -1020,7 +1021,7 @@
             other{"جاپاني يين"}
         }
         KES{
-            one{"ڪينيائي سلنگ"}
+            one{"ڪينيائي شلنگ"}
             other{"ڪينيائي سلنگ"}
         }
         KGS{
@@ -1136,11 +1137,11 @@
             other{"موزمبيق ميٽيڪل"}
         }
         NAD{
-            one{"نميبائي ڊالر"}
+            one{"نميبيائي ڊالر"}
             other{"نميبائي ڊالر"}
         }
         NGN{
-            one{"نائجريائي نائرا"}
+            one{"نائجيريائي نائرا"}
             other{"نائجريائي نائرا"}
         }
         NIO{
@@ -1264,7 +1265,7 @@
             other{"سائو ٽوم ۽ پرنسپي دوبرا"}
         }
         SYP{
-            one{"سيريائي پائونڊ"}
+            one{"شامي پائونڊ"}
             other{"سيريائي پائونڊ"}
         }
         SZL{
@@ -1280,7 +1281,7 @@
             other{"تاجڪستاني سوموني"}
         }
         TMT{
-            one{"ترڪمانستان منت"}
+            one{"ترڪمانستاني منت"}
             other{"ترڪمانستان منت"}
         }
         TND{
@@ -1380,5 +1381,4 @@
             other{"زمبائي ڪواچا"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sd_Arab.txt b/icu4c/source/data/curr/sd_Arab.txt
index 52a97c8..c089e06 100644
--- a/icu4c/source/data/curr/sd_Arab.txt
+++ b/icu4c/source/data/curr/sd_Arab.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_Arab{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sd_Arab_PK.txt b/icu4c/source/data/curr/sd_Arab_PK.txt
index 4a9803a..2e57dba 100644
--- a/icu4c/source/data/curr/sd_Arab_PK.txt
+++ b/icu4c/source/data/curr/sd_Arab_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/sd_Deva.txt b/icu4c/source/data/curr/sd_Deva.txt
index cc94e13..2f6b082 100644
--- a/icu4c/source/data/curr/sd_Deva.txt
+++ b/icu4c/source/data/curr/sd_Deva.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_Deva{
     %%Parent{"root"}
     Currencies{
@@ -75,5 +76,4 @@
             other{"अणवाकुफु चालू सिक्को"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sd_PK.txt b/icu4c/source/data/curr/sd_PK.txt
index 7663600..b7def87 100644
--- a/icu4c/source/data/curr/sd_PK.txt
+++ b/icu4c/source/data/curr/sd_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_PK{
     "%%ALIAS"{"sd_Arab_PK"}
 }
diff --git a/icu4c/source/data/curr/se.txt b/icu4c/source/data/curr/se.txt
index bab47f3..6fe860f 100644
--- a/icu4c/source/data/curr/se.txt
+++ b/icu4c/source/data/curr/se.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 se{
     Currencies{
         DKK{
@@ -73,5 +74,4 @@
         other{"{0} {1}"}
         two{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/se_SE.txt b/icu4c/source/data/curr/se_SE.txt
index 327eccb..62e77c8 100644
--- a/icu4c/source/data/curr/se_SE.txt
+++ b/icu4c/source/data/curr/se_SE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 se_SE{
     Currencies{
         NOK{
@@ -11,5 +12,4 @@
             "ruoŧŧa kruvdno",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/seh.txt b/icu4c/source/data/curr/seh.txt
index 7889672..2357903 100644
--- a/icu4c/source/data/curr/seh.txt
+++ b/icu4c/source/data/curr/seh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 seh{
     Currencies{
         AED{
@@ -239,5 +240,4 @@
             "Dólar do Zimbábue",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ses.txt b/icu4c/source/data/curr/ses.txt
index 808248a..777fd83 100644
--- a/icu4c/source/data/curr/ses.txt
+++ b/icu4c/source/data/curr/ses.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ses{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Zimbabwe Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sg.txt b/icu4c/source/data/curr/sg.txt
index fe910e8..a9403f9 100644
--- a/icu4c/source/data/curr/sg.txt
+++ b/icu4c/source/data/curr/sg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sg{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "dolära tî Zimbäbwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sh.txt b/icu4c/source/data/curr/sh.txt
index 74b646a..83091b2 100644
--- a/icu4c/source/data/curr/sh.txt
+++ b/icu4c/source/data/curr/sh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh{
     "%%ALIAS"{"sr_Latn"}
 }
diff --git a/icu4c/source/data/curr/sh_BA.txt b/icu4c/source/data/curr/sh_BA.txt
index 93bdac6..7f73cd5 100644
--- a/icu4c/source/data/curr/sh_BA.txt
+++ b/icu4c/source/data/curr/sh_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_BA{
     "%%ALIAS"{"sr_Latn_BA"}
 }
diff --git a/icu4c/source/data/curr/sh_CS.txt b/icu4c/source/data/curr/sh_CS.txt
index 224568a..3b2f92b 100644
--- a/icu4c/source/data/curr/sh_CS.txt
+++ b/icu4c/source/data/curr/sh_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_CS{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/curr/sh_YU.txt b/icu4c/source/data/curr/sh_YU.txt
index 8a7d460..dc5a35b 100644
--- a/icu4c/source/data/curr/sh_YU.txt
+++ b/icu4c/source/data/curr/sh_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_YU{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/curr/shi.txt b/icu4c/source/data/curr/shi.txt
index 081cdc2..87a1e5d 100644
--- a/icu4c/source/data/curr/shi.txt
+++ b/icu4c/source/data/curr/shi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "ⴰⴷⵓⵍⴰⵔ ⵏ ⵣⵉⵎⴱⴰⴱⵡⵉ",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/shi_Latn.txt b/icu4c/source/data/curr/shi_Latn.txt
index 4cb5199..8b2b856 100644
--- a/icu4c/source/data/curr/shi_Latn.txt
+++ b/icu4c/source/data/curr/shi_Latn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_Latn{
     %%Parent{"root"}
     Currencies{
@@ -236,5 +237,4 @@
             "adular n zimbabwi",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/shi_MA.txt b/icu4c/source/data/curr/shi_MA.txt
index 00de1b1..c96251d 100644
--- a/icu4c/source/data/curr/shi_MA.txt
+++ b/icu4c/source/data/curr/shi_MA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_MA{
     "%%ALIAS"{"shi_Tfng_MA"}
 }
diff --git a/icu4c/source/data/curr/shi_Tfng.txt b/icu4c/source/data/curr/shi_Tfng.txt
index 397f53f..723cdf1 100644
--- a/icu4c/source/data/curr/shi_Tfng.txt
+++ b/icu4c/source/data/curr/shi_Tfng.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_Tfng{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/shi_Tfng_MA.txt b/icu4c/source/data/curr/shi_Tfng_MA.txt
index 978cd5c..3ec81a4 100644
--- a/icu4c/source/data/curr/shi_Tfng_MA.txt
+++ b/icu4c/source/data/curr/shi_Tfng_MA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/si.txt b/icu4c/source/data/curr/si.txt
index 2f6a4ae..1653de6 100644
--- a/icu4c/source/data/curr/si.txt
+++ b/icu4c/source/data/curr/si.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 si{
     Currencies{
         AED{
@@ -656,9 +657,12 @@
         }
     }
     Currencies%narrow{
+        AFN{"؋"}
+        AMD{"֏"}
         AOA{"Kz"}
         ARS{"$"}
         AUD{"$"}
+        AZN{"₼"}
         BAM{"KM"}
         BBD{"$"}
         BDT{"৳"}
@@ -686,6 +690,7 @@
         FKP{"£"}
         GBP{"£"}
         GEL{"₾"}
+        GHS{"GH₵"}
         GIP{"£"}
         GNF{"FG"}
         GTQ{"Q"}
@@ -1406,5 +1411,4 @@
         one{"{1}{0}"}
         other{"{1}{0}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sk.txt b/icu4c/source/data/curr/sk.txt
index 81bf1e6..cf062d8 100644
--- a/icu4c/source/data/curr/sk.txt
+++ b/icu4c/source/data/curr/sk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sk{
     Currencies{
         ADP{
@@ -3136,5 +3137,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sl.txt b/icu4c/source/data/curr/sl.txt
index b7b478f..5452ce6 100644
--- a/icu4c/source/data/curr/sl.txt
+++ b/icu4c/source/data/curr/sl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sl{
     Currencies{
         ADP{
@@ -204,7 +205,7 @@
         }
         CDF{
             "CDF",
-            "kongoški frank",
+            "kongovski frank",
         }
         CHE{
             "CHE",
@@ -1261,7 +1262,7 @@
             two{"avstralska dolarja"}
         }
         AWG{
-            few{"arubski florin"}
+            few{"arubski florini"}
             one{"arubski florin"}
             other{"arubskih florinov"}
             two{"arubska florina"}
@@ -1375,10 +1376,10 @@
             two{"kanadska dolarja"}
         }
         CDF{
-            few{"kongoški frank"}
-            one{"kongoški frank"}
-            other{"kongoških frankov"}
-            two{"kongoška franka"}
+            few{"kongovski franki"}
+            one{"kongovski frank"}
+            other{"kongovskih frankov"}
+            two{"kongovska franka"}
         }
         CHF{
             few{"švicarski franki"}
@@ -1585,10 +1586,10 @@
             two{"indonezijski rupiji"}
         }
         ILS{
-            few{"izraelski šekeli"}
+            few{"izraelski šekli"}
             one{"izraelski šekel"}
-            other{"izraelskih šekelov"}
-            two{"izraelska šekela"}
+            other{"izraelskih šeklov"}
+            two{"izraelska šekla"}
         }
         INR{
             few{"indijske rupije"}
@@ -1677,7 +1678,7 @@
         KYD{
             few{"kajmanski dolarji"}
             one{"kajmanski dolar"}
-            other{"kajmanski dolar"}
+            other{"kajmanskih dolarjev"}
             two{"kajmanska dolarja"}
         }
         KZT{
@@ -2143,10 +2144,10 @@
             two{"samoanski tali"}
         }
         XAF{
-            few{"franki CFA BEAC"}
+            few{"srednjeafriški franki CFA"}
             one{"srednjeafriški frank CFA"}
-            other{"srednjeafriški frank CFA"}
-            two{"franka CFA BEAC"}
+            other{"srednjeafriških frankov CFA"}
+            two{"srednjeafriška franka CFA"}
         }
         XCD{
             few{"vzhodnokaribski dolarji"}
@@ -2155,10 +2156,10 @@
             two{"vzhodnokaribska dolarja"}
         }
         XOF{
-            few{"franki CFA BCEAO"}
+            few{"zahodnoafriški franki CFA"}
             one{"zahodnoafriški frank CFA"}
-            other{"zahodnoafriški frank CFA"}
-            two{"franka CFA BCEAO"}
+            other{"zahodnoafriških frankov CFA"}
+            two{"zahodnoafriška franka CFA"}
         }
         XPF{
             few{"franki CFP"}
@@ -2197,5 +2198,4 @@
         other{"{0} {1}"}
         two{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/smn.txt b/icu4c/source/data/curr/smn.txt
index bf2d53c..0824f5c 100644
--- a/icu4c/source/data/curr/smn.txt
+++ b/icu4c/source/data/curr/smn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 smn{
     Currencies{
         DKK{
@@ -40,5 +41,4 @@
         other{"{0} {1}"}
         two{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sn.txt b/icu4c/source/data/curr/sn.txt
index c39cbcd..dc3e17e 100644
--- a/icu4c/source/data/curr/sn.txt
+++ b/icu4c/source/data/curr/sn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sn{
     Currencies{
         AED{
@@ -239,5 +240,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/so.txt b/icu4c/source/data/curr/so.txt
index 3fef66a..ee2f228 100644
--- a/icu4c/source/data/curr/so.txt
+++ b/icu4c/source/data/curr/so.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 so{
     Currencies{
         AED{
@@ -1355,5 +1356,4 @@
             other{"Kawajada Sambiya"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/so_DJ.txt b/icu4c/source/data/curr/so_DJ.txt
index 684fd84..c58475e 100644
--- a/icu4c/source/data/curr/so_DJ.txt
+++ b/icu4c/source/data/curr/so_DJ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 so_DJ{
     Currencies{
         DJF{
@@ -7,5 +8,4 @@
             "Faran Jabuuti",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/so_ET.txt b/icu4c/source/data/curr/so_ET.txt
index b237db5..a50431d 100644
--- a/icu4c/source/data/curr/so_ET.txt
+++ b/icu4c/source/data/curr/so_ET.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 so_ET{
     Currencies{
         ETB{
@@ -7,5 +8,4 @@
             "Birta Itoobbiya",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/so_KE.txt b/icu4c/source/data/curr/so_KE.txt
index 668ddfe..a4fcd82 100644
--- a/icu4c/source/data/curr/so_KE.txt
+++ b/icu4c/source/data/curr/so_KE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 so_KE{
     Currencies{
         KES{
@@ -7,5 +8,4 @@
             "Shilingka Kenya",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sq.txt b/icu4c/source/data/curr/sq.txt
index b0ee142..b995853 100644
--- a/icu4c/source/data/curr/sq.txt
+++ b/icu4c/source/data/curr/sq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sq{
     Currencies{
         AED{
@@ -652,9 +653,12 @@
         }
     }
     Currencies%narrow{
+        AFN{"AFN"}
+        AMD{"AMD"}
         AOA{"AOA"}
         ARS{"ARS"}
         AUD{"AUD"}
+        AZN{"AZN"}
         BAM{"BAM"}
         BBD{"BBD"}
         BDT{"BDT"}
@@ -1403,5 +1407,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sq_MK.txt b/icu4c/source/data/curr/sq_MK.txt
index fcf41ec..fa1922a 100644
--- a/icu4c/source/data/curr/sq_MK.txt
+++ b/icu4c/source/data/curr/sq_MK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sq_MK{
     Currencies{
         MKD{
@@ -7,5 +8,4 @@
             "Denari maqedonas",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sr.txt b/icu4c/source/data/curr/sr.txt
index 80e819e..65b78f2 100644
--- a/icu4c/source/data/curr/sr.txt
+++ b/icu4c/source/data/curr/sr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr{
     Currencies{
         ADP{
@@ -1539,7 +1540,7 @@
         CRC{
             few{"костариканска колона"}
             one{"костарикански колон"}
-            other{"костарикански колони"}
+            other{"костариканских колона"}
         }
         CSD{
             few{"стара српска динара"}
@@ -2657,5 +2658,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sr_BA.txt b/icu4c/source/data/curr/sr_BA.txt
index edad17f..04f2efd 100644
--- a/icu4c/source/data/curr/sr_BA.txt
+++ b/icu4c/source/data/curr/sr_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_BA{
     "%%ALIAS"{"sr_Cyrl_BA"}
 }
diff --git a/icu4c/source/data/curr/sr_CS.txt b/icu4c/source/data/curr/sr_CS.txt
index 5f8becf..6a32f49 100644
--- a/icu4c/source/data/curr/sr_CS.txt
+++ b/icu4c/source/data/curr/sr_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_CS{
-    "%%ALIAS"{"sr_Cyrl_RS"}
+    "%%ALIAS"{"sr_RS"}
 }
diff --git a/icu4c/source/data/curr/sr_Cyrl.txt b/icu4c/source/data/curr/sr_Cyrl.txt
index df3a287..772d8b3 100644
--- a/icu4c/source/data/curr/sr_Cyrl.txt
+++ b/icu4c/source/data/curr/sr_Cyrl.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sr_Cyrl_BA.txt b/icu4c/source/data/curr/sr_Cyrl_BA.txt
index 51e1655..646bf9a 100644
--- a/icu4c/source/data/curr/sr_Cyrl_BA.txt
+++ b/icu4c/source/data/curr/sr_Cyrl_BA.txt
@@ -1,8 +1,36 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-/**
- * generated alias target
- */
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_BA{
-    ___{""}
+    Currencies{
+        BAM{
+            "КМ",
+            "Босанскохерцеговачка конвертибилна марка",
+        }
+        BYN{
+            "BYN",
+            "Бјелоруска рубља",
+        }
+        KPW{
+            "KPW",
+            "Сјевернокорејски вон",
+        }
+    }
+    CurrencyPlurals{
+        BAM{
+            few{"босанскохерцеговачке конвертибилне маркe"}
+            one{"босанскохерцеговачка конвертибилна марка"}
+            other{"босанскохерцеговачких конвертибилних марака"}
+        }
+        BYN{
+            few{"бјелоруске рубље"}
+            one{"бјелоруска рубља"}
+            other{"бјелоруских рубљи"}
+        }
+        KPW{
+            few{"сјевернокорејска вона"}
+            one{"сјевернокорејски вон"}
+            other{"сјевернокорејских вона"}
+        }
+    }
 }
diff --git a/icu4c/source/data/curr/sr_Cyrl_CS.txt b/icu4c/source/data/curr/sr_Cyrl_CS.txt
index 9325e5a..2da82d2 100644
--- a/icu4c/source/data/curr/sr_Cyrl_CS.txt
+++ b/icu4c/source/data/curr/sr_Cyrl_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_CS{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/curr/sr_Cyrl_RS.txt b/icu4c/source/data/curr/sr_Cyrl_RS.txt
index 7ef8fab..c74b860 100644
--- a/icu4c/source/data/curr/sr_Cyrl_RS.txt
+++ b/icu4c/source/data/curr/sr_Cyrl_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/sr_Cyrl_XK.txt b/icu4c/source/data/curr/sr_Cyrl_XK.txt
index d7d4a86..c74bfee 100644
--- a/icu4c/source/data/curr/sr_Cyrl_XK.txt
+++ b/icu4c/source/data/curr/sr_Cyrl_XK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/sr_Cyrl_YU.txt b/icu4c/source/data/curr/sr_Cyrl_YU.txt
index 806d42c..5874f8c 100644
--- a/icu4c/source/data/curr/sr_Cyrl_YU.txt
+++ b/icu4c/source/data/curr/sr_Cyrl_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_YU{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/curr/sr_Latn.txt b/icu4c/source/data/curr/sr_Latn.txt
index 52fc75f..0367f98 100644
--- a/icu4c/source/data/curr/sr_Latn.txt
+++ b/icu4c/source/data/curr/sr_Latn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn{
     %%Parent{"root"}
     Currencies{
@@ -1540,7 +1541,7 @@
         CRC{
             few{"kostarikanska kolona"}
             one{"kostarikanski kolon"}
-            other{"kostarikanski koloni"}
+            other{"kostarikanskih kolona"}
         }
         CSD{
             few{"stara srpska dinara"}
@@ -2658,5 +2659,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sr_Latn_BA.txt b/icu4c/source/data/curr/sr_Latn_BA.txt
index f4b62ac..0223a45 100644
--- a/icu4c/source/data/curr/sr_Latn_BA.txt
+++ b/icu4c/source/data/curr/sr_Latn_BA.txt
@@ -1,8 +1,36 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-/**
- * generated alias target
- */
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_BA{
-    ___{""}
+    Currencies{
+        BAM{
+            "KM",
+            "Bosanskohercegovačka konvertibilna marka",
+        }
+        BYN{
+            "BYN",
+            "Bjeloruska rublja",
+        }
+        KPW{
+            "KPW",
+            "Sjevernokorejski von",
+        }
+    }
+    CurrencyPlurals{
+        BAM{
+            few{"bosanskohercegovačke konvertibilne marke"}
+            one{"bosanskohercegovačka konvertibilna marka"}
+            other{"bosanskohercegovačkih konvertibilnih maraka"}
+        }
+        BYN{
+            few{"bjeloruske rublje"}
+            one{"bjeloruska rublja"}
+            other{"bjeloruskih rublji"}
+        }
+        KPW{
+            few{"sjevernokorejska vona"}
+            one{"sjevernokorejski von"}
+            other{"sjevernokorejskih vona"}
+        }
+    }
 }
diff --git a/icu4c/source/data/curr/sr_Latn_CS.txt b/icu4c/source/data/curr/sr_Latn_CS.txt
index 0952735..7204cfd 100644
--- a/icu4c/source/data/curr/sr_Latn_CS.txt
+++ b/icu4c/source/data/curr/sr_Latn_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_CS{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/curr/sr_Latn_ME.txt b/icu4c/source/data/curr/sr_Latn_ME.txt
index 4cc6fe9..489fd5a 100644
--- a/icu4c/source/data/curr/sr_Latn_ME.txt
+++ b/icu4c/source/data/curr/sr_Latn_ME.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/sr_Latn_RS.txt b/icu4c/source/data/curr/sr_Latn_RS.txt
index 76d38f8..8d63da6 100644
--- a/icu4c/source/data/curr/sr_Latn_RS.txt
+++ b/icu4c/source/data/curr/sr_Latn_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/sr_Latn_YU.txt b/icu4c/source/data/curr/sr_Latn_YU.txt
index 2747ab2..415a4d8 100644
--- a/icu4c/source/data/curr/sr_Latn_YU.txt
+++ b/icu4c/source/data/curr/sr_Latn_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_YU{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/curr/sr_ME.txt b/icu4c/source/data/curr/sr_ME.txt
index 32dc910..aa51626 100644
--- a/icu4c/source/data/curr/sr_ME.txt
+++ b/icu4c/source/data/curr/sr_ME.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_ME{
     "%%ALIAS"{"sr_Latn_ME"}
 }
diff --git a/icu4c/source/data/curr/sr_RS.txt b/icu4c/source/data/curr/sr_RS.txt
index 674ff77..84db469 100644
--- a/icu4c/source/data/curr/sr_RS.txt
+++ b/icu4c/source/data/curr/sr_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_RS{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/curr/sr_XK.txt b/icu4c/source/data/curr/sr_XK.txt
index 9628a27..0d3aa53 100644
--- a/icu4c/source/data/curr/sr_XK.txt
+++ b/icu4c/source/data/curr/sr_XK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_XK{
     "%%ALIAS"{"sr_Cyrl_XK"}
 }
diff --git a/icu4c/source/data/curr/sr_YU.txt b/icu4c/source/data/curr/sr_YU.txt
index 26563d0..2d67778 100644
--- a/icu4c/source/data/curr/sr_YU.txt
+++ b/icu4c/source/data/curr/sr_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_YU{
-    "%%ALIAS"{"sr_Cyrl_RS"}
+    "%%ALIAS"{"sr_RS"}
 }
diff --git a/icu4c/source/data/curr/su.txt b/icu4c/source/data/curr/su.txt
index 00ece8a..c7c35c0 100644
--- a/icu4c/source/data/curr/su.txt
+++ b/icu4c/source/data/curr/su.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su{
     Currencies{
         BRL{
@@ -38,6 +39,10 @@
             "$",
             "Dolar A.S.",
         }
+        XXX{
+            "¤",
+            "Mata Uang Teu Dikenal",
+        }
     }
     Currencies%narrow{
         BRL{"R$"}
@@ -78,9 +83,11 @@
         USD{
             other{"dolar A.S."}
         }
+        XXX{
+            other{"(mata uang teu dikenal)"}
+        }
     }
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/su_ID.txt b/icu4c/source/data/curr/su_ID.txt
index 67dde38..8da0f56 100644
--- a/icu4c/source/data/curr/su_ID.txt
+++ b/icu4c/source/data/curr/su_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su_ID{
     "%%ALIAS"{"su_Latn_ID"}
 }
diff --git a/icu4c/source/data/curr/su_Latn.txt b/icu4c/source/data/curr/su_Latn.txt
index 008b423..87ca4fa 100644
--- a/icu4c/source/data/curr/su_Latn.txt
+++ b/icu4c/source/data/curr/su_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/su_Latn_ID.txt b/icu4c/source/data/curr/su_Latn_ID.txt
index 4629832..d6b42f3 100644
--- a/icu4c/source/data/curr/su_Latn_ID.txt
+++ b/icu4c/source/data/curr/su_Latn_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/supplementalData.txt b/icu4c/source/data/curr/supplementalData.txt
index 43695ce..b52ff56 100644
--- a/icu4c/source/data/curr/supplementalData.txt
+++ b/icu4c/source/data/curr/supplementalData.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 supplementalData:table(nofallback){
     CurrencyMap{
         AC{
diff --git a/icu4c/source/data/curr/sv.txt b/icu4c/source/data/curr/sv.txt
index 68200cf..331c050 100644
--- a/icu4c/source/data/curr/sv.txt
+++ b/icu4c/source/data/curr/sv.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sv{
     Currencies{
         ADP{
@@ -8,7 +9,7 @@
         }
         AED{
             "AED",
-            "Förenade Arabemiratens dirham",
+            "emiratisk dirham",
         }
         AFA{
             "AFA",
@@ -32,7 +33,7 @@
         }
         ANG{
             "ANG",
-            "Nederländska Antillernas gulden",
+            "Antillergulden",
         }
         AOA{
             "AOA",
@@ -104,7 +105,7 @@
         }
         BBD{
             "Bds$",
-            "Barbados-dollar",
+            "barbadisk dollar",
         }
         BDT{
             "BDT",
@@ -148,7 +149,7 @@
         }
         BMD{
             "BM$",
-            "Bermuda-dollar",
+            "bermudisk dollar",
         }
         BND{
             "BND",
@@ -524,7 +525,7 @@
         }
         JMD{
             "JM$",
-            "Jamaica-dollar",
+            "jamaicansk dollar",
         }
         JOD{
             "JOD",
@@ -572,7 +573,7 @@
         }
         KYD{
             "KYD",
-            "Cayman-dollar",
+            "caymansk dollar",
         }
         KZT{
             "KZT",
@@ -888,7 +889,7 @@
         }
         SHP{
             "SHP",
-            "S:t Helena-pund",
+            "sankthelenskt pund",
         }
         SIT{
             "SIT",
@@ -984,11 +985,11 @@
         }
         TTD{
             "TTD",
-            "Trinidad och Tobago-dollar",
+            "Trinidaddollar",
         }
         TWD{
             "TWD",
-            "Taiwandollar",
+            "taiwanesisk dollar",
         }
         TZS{
             "TZS",
@@ -1012,7 +1013,7 @@
         }
         USD{
             "US$",
-            "US-dollar",
+            "amerikansk dollar",
         }
         USN{
             "USN",
@@ -1321,8 +1322,8 @@
             other{"andorranska pesetas"}
         }
         AED{
-            one{"Förenade Arabemiratens dirham"}
-            other{"Förenade Arabemiratens dirham"}
+            one{"emiratisk dirham"}
+            other{"emiratisk dirham"}
         }
         AFA{
             one{"afghani (1927–2002)"}
@@ -1345,8 +1346,8 @@
             other{"armeniska dram"}
         }
         ANG{
-            one{"Nederländska Antillernas gulden"}
-            other{"Nederländska Antillernas gulden"}
+            one{"Antillergulden"}
+            other{"Antillergulden"}
         }
         AOA{
             one{"angolansk kwanza"}
@@ -1417,8 +1418,8 @@
             other{"bosnisk-hercegovinska dinarer (1994–1998)"}
         }
         BBD{
-            one{"Barbados-dollar"}
-            other{"Barbados-dollar"}
+            one{"barbadisk dollar"}
+            other{"barbadisk dollar"}
         }
         BDT{
             one{"bangladeshisk taka"}
@@ -1461,8 +1462,8 @@
             other{"burundiska franc"}
         }
         BMD{
-            one{"Bermuda-dollar"}
-            other{"Bermuda-dollar"}
+            one{"bermudisk dollar"}
+            other{"bermudisk dollar"}
         }
         BND{
             one{"bruneisk dollar"}
@@ -1838,7 +1839,7 @@
         }
         JMD{
             one{"Jamaica-dollar"}
-            other{"Jamaica-dollar"}
+            other{"jamaicansk dollar"}
         }
         JOD{
             one{"jordansk dinar"}
@@ -1885,8 +1886,8 @@
             other{"kuwaitiska dinarer"}
         }
         KYD{
-            one{"Cayman-dollar"}
-            other{"Cayman-dollar"}
+            one{"caymansk dollar"}
+            other{"caymansk dollar"}
         }
         KZT{
             one{"kazakisk tenge"}
@@ -2201,8 +2202,8 @@
             other{"singaporianska dollar"}
         }
         SHP{
-            one{"S:t Helena-pund"}
-            other{"S:t Helena-pund"}
+            one{"sankthelenskt pund"}
+            other{"sankthelenskt pund"}
         }
         SIT{
             one{"slovensk tolar"}
@@ -2297,12 +2298,12 @@
             other{"turkiska lira"}
         }
         TTD{
-            one{"Trinidad och Tobago-dollar"}
-            other{"Trinidad och Tobago-dollar"}
+            one{"Trinidaddollar"}
+            other{"Trinidaddollar"}
         }
         TWD{
-            one{"Taiwandollar"}
-            other{"Taiwandollar"}
+            one{"taiwanesisk dollar"}
+            other{"taiwanesisk dollar"}
         }
         TZS{
             one{"tanzanisk shilling"}
@@ -2325,8 +2326,8 @@
             other{"ugandiska shilling"}
         }
         USD{
-            one{"US-dollar"}
-            other{"US-dollar"}
+            one{"amerikansk dollar"}
+            other{"amerikansk dollar"}
         }
         USN{
             one{"US-dollar (nästa dag)"}
@@ -2533,5 +2534,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sw.txt b/icu4c/source/data/curr/sw.txt
index 0bc6631..b673a8d 100644
--- a/icu4c/source/data/curr/sw.txt
+++ b/icu4c/source/data/curr/sw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw{
     Currencies{
         AED{
@@ -28,7 +29,7 @@
         }
         ARS{
             "ARS",
-            "Peso ya Argentina",
+            "Peso ya Ajentina",
         }
         AUD{
             "A$",
@@ -60,7 +61,7 @@
         }
         BHD{
             "BHD",
-            "Dinar ya Bahrain",
+            "Dinari ya Bahareni",
         }
         BIF{
             "BIF",
@@ -132,19 +133,19 @@
         }
         COP{
             "COP",
-            "Peso ya Colombia",
+            "Peso ya Kolombia",
         }
         CRC{
             "CRC",
-            "Colon ya Costa Rica",
+            "Colon ya Kostarika",
         }
         CUC{
             "CUC",
-            "Peso ya Cuba Inayoweza Kubadilishwa",
+            "Peso ya Kuba Inayoweza Kubadilishwa",
         }
         CUP{
             "CUP",
-            "Peso ya Cuba",
+            "Peso ya Kuba",
         }
         CVE{
             "CVE",
@@ -152,11 +153,11 @@
         }
         CZK{
             "CZK",
-            "koruna ya Jamhuri ya Czech",
+            "Koruna ya Jamhuri ya Czech",
         }
         DJF{
             "DJF",
-            "Faranga ya Djibouti",
+            "Faranga ya Jibuti",
         }
         DKK{
             "DKK",
@@ -164,7 +165,7 @@
         }
         DOP{
             "DOP",
-            "Peso ya Dominica",
+            "Peso ya Dominika",
         }
         DZD{
             "DZD",
@@ -200,7 +201,7 @@
         }
         GEL{
             "GEL",
-            "Lari ya Georgia",
+            "Lari ya Jojia",
         }
         GHC{
             "GHC",
@@ -244,7 +245,7 @@
         }
         HRK{
             "HRK",
-            "Kuna ya Croatia",
+            "Kuna ya Korasia",
         }
         HTG{
             "HTG",
@@ -268,7 +269,7 @@
         }
         IQD{
             "IQD",
-            "Dinar ya Iraq",
+            "Dinari ya Iraki",
         }
         IRR{
             "IRR",
@@ -280,15 +281,15 @@
         }
         JMD{
             "JMD",
-            "Dola ya Jamaica",
+            "Dola ya Jamaika",
         }
         JOD{
             "JOD",
-            "Dinar ya Jordan",
+            "Dinari ya Jordan",
         }
         JPY{
             "JP¥",
-            "Yen ya Ujapani",
+            "Yen ya Japani",
         }
         KES{
             "Ksh",
@@ -300,11 +301,11 @@
         }
         KHR{
             "KHR",
-            "Riel ya Cambodia",
+            "Riel ya Kambodia",
         }
         KMF{
             "KMF",
-            "Faranga ya Comoros",
+            "Faranga ya Komoro",
         }
         KPW{
             "KPW",
@@ -316,7 +317,7 @@
         }
         KWD{
             "KWD",
-            "Dinar ya Kuwait",
+            "Dinari ya Kuwait",
         }
         KYD{
             "KYD",
@@ -360,7 +361,7 @@
         }
         MAD{
             "MAD",
-            "Dirham ya Morocco",
+            "Dirham ya Moroko",
         }
         MDL{
             "MDL",
@@ -368,11 +369,11 @@
         }
         MGA{
             "MGA",
-            "Ariari ya Madagascar",
+            "Ariari ya Madagaska",
         }
         MKD{
             "MKD",
-            "Denar ya Macedonia",
+            "Denar ya Masedonia",
         }
         MMK{
             "MMK",
@@ -392,11 +393,11 @@
         }
         MRU{
             "MRU",
-            "Ouguiya ya Mauritania",
+            "Ouguiya ya Moritania",
         }
         MUR{
             "MUR",
-            "Rupia ya Mauritius",
+            "Rupia ya Morisi",
         }
         MVR{
             "MVR",
@@ -408,7 +409,7 @@
         }
         MXN{
             "MX$",
-            "Peso ya Mexico",
+            "Peso ya Meksiko",
         }
         MYR{
             "MYR",
@@ -432,11 +433,11 @@
         }
         NIO{
             "NIO",
-            "Cordoba ya Nicaragua",
+            "Cordoba ya Nikaragwa",
         }
         NOK{
             "NOK",
-            "Krone ya Norway",
+            "Krone ya Norwe",
         }
         NPR{
             "NPR",
@@ -444,7 +445,7 @@
         }
         NZD{
             "NZ$",
-            "Dola ya New Zealand",
+            "Dola ya Nyuzilandi",
         }
         OMR{
             "OMR",
@@ -476,7 +477,7 @@
         }
         PYG{
             "PYG",
-            "Guarani ya Paraguay",
+            "Guarani ya Paragwai",
         }
         QAR{
             "QAR",
@@ -532,7 +533,7 @@
         }
         SLL{
             "SLL",
-            "Leone",
+            "Leone ya Siera Leoni",
         }
         SOS{
             "SOS",
@@ -560,7 +561,7 @@
         }
         SZL{
             "SZL",
-            "Lilangeni",
+            "Lilangeni ya Uswazi",
         }
         THB{
             "฿",
@@ -612,7 +613,7 @@
         }
         UYU{
             "UYU",
-            "Peso ya Uruguay",
+            "Peso ya Urugwai",
         }
         UZS{
             "UZS",
@@ -644,7 +645,7 @@
         }
         XCD{
             "EC$",
-            "Dola ya Caribbean Mashariki",
+            "Dola ya Karibi Mashariki",
         }
         XOF{
             "CFA",
@@ -805,8 +806,8 @@
             other{"kwanza za Angola"}
         }
         ARS{
-            one{"Peso ya Argentina"}
-            other{"Peso za Argentina"}
+            one{"peso ya Ajentina"}
+            other{"peso za Ajentina"}
         }
         AUD{
             one{"dola ya Australia"}
@@ -837,8 +838,8 @@
             other{"lev za Bulgaria"}
         }
         BHD{
-            one{"dinar ya Bahrain"}
-            other{"dinar za Bahrain"}
+            one{"dinari ya Bahareni"}
+            other{"dinari za Bahareni"}
         }
         BIF{
             one{"faranga ya Burundi"}
@@ -902,27 +903,27 @@
         }
         CNH{
             one{"yuan ya Uchina (huru)"}
-            other{"yuan ya Uchina (huru)"}
+            other{"yuan za Uchina (huru)"}
         }
         CNY{
             one{"yuan ya Uchina"}
             other{"yuan za Uchina"}
         }
         COP{
-            one{"Peso ya Colombia"}
-            other{"Peso za Colombia"}
+            one{"peso ya Kolombia"}
+            other{"peso za Kolombia"}
         }
         CRC{
-            one{"colon ya Costa Rica"}
-            other{"colon za Costa Rica"}
+            one{"colon ya Kostarika"}
+            other{"colon za Kostarika"}
         }
         CUC{
-            one{"Peso ya Cuba Inayoweza Kubadilishwa"}
-            other{"Peso za Cuba Zinazoweza Kubadilishwa"}
+            one{"peso ya Kuba inayoweza kubadilishwa"}
+            other{"peso za Kuba zinazoweza kubadilishwa"}
         }
         CUP{
-            one{"Peso ya Cuba"}
-            other{"Peso za Cuba"}
+            one{"peso ya Kuba"}
+            other{"peso za Kuba"}
         }
         CVE{
             one{"eskudo ya Cape Verde"}
@@ -933,16 +934,16 @@
             other{"koruna za Jamhuri ya Czech"}
         }
         DJF{
-            one{"faranga ya Djibouti"}
-            other{"faranga za Djibouti"}
+            one{"faranga ya Jibuti"}
+            other{"faranga za Jibuti"}
         }
         DKK{
             one{"krone ya Denmark"}
             other{"krone za Denmark"}
         }
         DOP{
-            one{"peso ya Dominica"}
-            other{"peso za Dominica"}
+            one{"peso ya Dominika"}
+            other{"peso za Dominika"}
         }
         DZD{
             one{"dinar ya Aljeria"}
@@ -977,8 +978,8 @@
             other{"pauni za Uingereza"}
         }
         GEL{
-            one{"lari ya Georgia"}
-            other{"lari za Georgia"}
+            one{"lari ya Jojia"}
+            other{"lari za Jojia"}
         }
         GHS{
             one{"cedi ya Ghana"}
@@ -1001,8 +1002,8 @@
             other{"quetzal za Guatemala"}
         }
         GYD{
-            one{"Dola ya Guyana"}
-            other{"Dola za Guyana"}
+            one{"dola ya Guyana"}
+            other{"dola za Guyana"}
         }
         HKD{
             one{"dola ya Hong Kong"}
@@ -1013,8 +1014,8 @@
             other{"lempira za Hondurasi"}
         }
         HRK{
-            one{"kuna ya Croatia"}
-            other{"kuna za Croatia"}
+            one{"kuna ya Korasia"}
+            other{"kuna za Korasia"}
         }
         HTG{
             one{"gourde ya Haiti"}
@@ -1037,8 +1038,8 @@
             other{"rupia za India"}
         }
         IQD{
-            one{"dinar ya Iraq"}
-            other{"dinar za Iraq"}
+            one{"dinari ya Iraki"}
+            other{"dinari za Iraki"}
         }
         IRR{
             one{"rial ya Iran"}
@@ -1049,16 +1050,16 @@
             other{"krona za Aisilandi"}
         }
         JMD{
-            one{"dola ya Jamaica"}
-            other{"dola za Jamaica"}
+            one{"dola ya Jamaika"}
+            other{"dola za Jamaika"}
         }
         JOD{
-            one{"dinar ya Jordan"}
-            other{"dinar za Jordan"}
+            one{"dinari ya Jordan"}
+            other{"dinari za Jordan"}
         }
         JPY{
-            one{"yen ya Ujapani"}
-            other{"yen za Ujapani"}
+            one{"yen ya Japani"}
+            other{"yen za Japani"}
         }
         KES{
             one{"shilingi ya Kenya"}
@@ -1069,12 +1070,12 @@
             other{"som za Kyrgystan"}
         }
         KHR{
-            one{"riel ya Cambodia"}
-            other{"riel za Cambodia"}
+            one{"riel ya Kambodia"}
+            other{"riel za Kambodia"}
         }
         KMF{
-            one{"faranga ya Comoros"}
-            other{"faranga za Comoros"}
+            one{"faranga ya Komoro"}
+            other{"faranga za Komoro"}
         }
         KPW{
             one{"won ya Korea Kaskazini"}
@@ -1085,12 +1086,12 @@
             other{"won za Korea Kusini"}
         }
         KWD{
-            one{"dinar ya Kuwait"}
-            other{"dinar za Kuwait"}
+            one{"dinari ya Kuwait"}
+            other{"dinari za Kuwait"}
         }
         KYD{
             one{"dola ya Visiwa vya Cayman"}
-            other{"Dola ya Visiwa vya Cayman"}
+            other{"dola za Visiwa vya Cayman"}
         }
         KZT{
             one{"tenge ya Kazakhstan"}
@@ -1125,20 +1126,20 @@
             other{"dinari za Libya"}
         }
         MAD{
-            one{"dirham ya Morocco"}
-            other{"dirham za Morocco"}
+            one{"dirham ya Moroko"}
+            other{"dirham za Moroko"}
         }
         MDL{
             one{"leu ya Moldova"}
             other{"leu za Moldova"}
         }
         MGA{
-            one{"ariari ya Madagascar"}
-            other{"ariari za Madagascar"}
+            one{"ariari ya Madagaska"}
+            other{"ariari za Madagaska"}
         }
         MKD{
-            one{"denar ya Macedonia"}
-            other{"denar za Macedonia"}
+            one{"denar ya Masedonia"}
+            other{"denar za Masedonia"}
         }
         MMK{
             one{"kyat ya Myanmar"}
@@ -1157,12 +1158,12 @@
             other{"ouguiya za Mauritania (1973–2017)"}
         }
         MRU{
-            one{"ouguiya ya Mauritania"}
-            other{"ouguiya za Mauritania"}
+            one{"ouguiya ya Moritania"}
+            other{"ouguiya za Moritania"}
         }
         MUR{
-            one{"rupia ya Mauritius"}
-            other{"rupia za Mauritius"}
+            one{"rupia ya Morisi"}
+            other{"rupia za Morisi"}
         }
         MVR{
             one{"rufiyaa ya Maldives"}
@@ -1173,8 +1174,8 @@
             other{"kwacha za Malawi"}
         }
         MXN{
-            one{"peso ya Mexico"}
-            other{"peso za Mexico"}
+            one{"peso ya Meksiko"}
+            other{"peso za Meksiko"}
         }
         MYR{
             one{"ringgit ya Malaysia"}
@@ -1185,8 +1186,8 @@
             other{"metikali ya Msumbiji (1980–2006)"}
         }
         MZN{
-            one{"Metikali ya Msumbiji"}
-            other{"Metikali za Msumbiji"}
+            one{"metikali ya Msumbiji"}
+            other{"metikali za Msumbiji"}
         }
         NAD{
             one{"dola ya Namibia"}
@@ -1197,20 +1198,20 @@
             other{"naira za Nigeria"}
         }
         NIO{
-            one{"cordoba ya Nicaragua"}
-            other{"cordoba za Nicaragua"}
+            one{"cordoba ya Nikaragwa"}
+            other{"cordoba za Nikaragwa"}
         }
         NOK{
-            one{"krone ya Norway"}
-            other{"krone za Norway"}
+            one{"krone ya Norwe"}
+            other{"krone za Norwe"}
         }
         NPR{
             one{"rupia ya Nepal"}
             other{"rupia za Nepal"}
         }
         NZD{
-            one{"dola ya New Zealand"}
-            other{"dola za New Zealand"}
+            one{"dola ya Nyuzilandi"}
+            other{"dola za Nyuzilandi"}
         }
         OMR{
             one{"rial ya Omani"}
@@ -1221,8 +1222,8 @@
             other{"balboa ya Panama"}
         }
         PEN{
-            one{"Sol ya Peru"}
-            other{"Sol za Peru"}
+            one{"sol ya Peru"}
+            other{"sol za Peru"}
         }
         PGK{
             one{"kina ya Papua New Guinea"}
@@ -1241,8 +1242,8 @@
             other{"zloty za Poland"}
         }
         PYG{
-            one{"Guarani ya Paraguay"}
-            other{"Guarani za Paraguay"}
+            one{"guarani ya Paragwai"}
+            other{"guarani za Paragwai"}
         }
         QAR{
             one{"rial ya Qatar"}
@@ -1297,16 +1298,16 @@
             other{"pauni za St. Helena"}
         }
         SLL{
-            one{"leone"}
-            other{"leone"}
+            one{"leone ya Siera Leoni"}
+            other{"leone za Siera Leoni"}
         }
         SOS{
             one{"shilingi ya Somalia"}
             other{"shilingi za Somalia"}
         }
         SRD{
-            one{"Dola ya Suriname"}
-            other{"Dola za Suriname"}
+            one{"dola ya Suriname"}
+            other{"dola za Suriname"}
         }
         SSP{
             one{"pauni ya Sudan Kusini"}
@@ -1325,8 +1326,8 @@
             other{"pauni za Syria"}
         }
         SZL{
-            one{"lilangeni"}
-            other{"lilangeni"}
+            one{"lilangeni ya Uswazi"}
+            other{"emalangeni za Uswazi"}
         }
         THB{
             one{"baht ya Tailandi"}
@@ -1377,8 +1378,8 @@
             other{"dola za Marekani"}
         }
         UYU{
-            one{"Peso ya Uruguay"}
-            other{"Peso za Uruguay"}
+            one{"peso ya Urugwai"}
+            other{"peso za Urugwai"}
         }
         UZS{
             one{"som ya Uzbekistan"}
@@ -1389,8 +1390,8 @@
             other{"Bolivar za Venezuela (2008–2018)"}
         }
         VES{
-            one{"Bolivar ya Venezuela"}
-            other{"Bolivar za Venezuela"}
+            one{"bolivar ya Venezuela"}
+            other{"bolivar za Venezuela"}
         }
         VND{
             one{"dong ya Vietnam"}
@@ -1409,8 +1410,8 @@
             other{"faranga za Afrika ya Kati CFA"}
         }
         XCD{
-            one{"Dola ya Caribbean Mashariki"}
-            other{"Dola za Caribbean Mashariki"}
+            one{"dola ya Karibi Mashariki"}
+            other{"dola za Karibi Mashariki"}
         }
         XOF{
             one{"faranga ya Afrika Magharibi CFA"}
@@ -1441,5 +1442,4 @@
         one{"{1} {0}"}
         other{"{1} {0}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sw_CD.txt b/icu4c/source/data/curr/sw_CD.txt
index 71a615e..e972415 100644
--- a/icu4c/source/data/curr/sw_CD.txt
+++ b/icu4c/source/data/curr/sw_CD.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw_CD{
     Currencies{
         CDF{
@@ -43,5 +44,4 @@
             "Faranga CFA BCEAO",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sw_KE.txt b/icu4c/source/data/curr/sw_KE.txt
index 1c2b6e0..43b5957 100644
--- a/icu4c/source/data/curr/sw_KE.txt
+++ b/icu4c/source/data/curr/sw_KE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw_KE{
     Currencies{
         AED{
@@ -14,10 +15,6 @@
             "ANG",
             "Gilda ya Antili ya Uholanzi",
         }
-        ARS{
-            "ARS",
-            "Peso ya Ajentina",
-        }
         AZN{
             "AZN",
             "Manati ya Azabajani",
@@ -34,10 +31,6 @@
             "BDT",
             "Taka ya Bangladeshi",
         }
-        BHD{
-            "BHD",
-            "Dinari ya Bahareni",
-        }
         BMD{
             "BMD",
             "Dola ya Bamuda",
@@ -70,22 +63,6 @@
             "CN¥",
             "Yuan ya China",
         }
-        COP{
-            "COP",
-            "Peso ya Kolombia",
-        }
-        CRC{
-            "CRC",
-            "Colon ya Kostarika",
-        }
-        CUC{
-            "CUC",
-            "Peso ya Kuba Inayoweza Kubadilishwa",
-        }
-        CUP{
-            "CUP",
-            "Peso ya Kuba",
-        }
         CVE{
             "CVE",
             "Eskudo ya Kepuvede",
@@ -94,18 +71,10 @@
             "CZK",
             "Koruna ya Cheki",
         }
-        DJF{
-            "DJF",
-            "Faranga ya Jibuti",
-        }
         DKK{
             "DKK",
             "Kroni ya Denmaki",
         }
-        DOP{
-            "DOP",
-            "Peso ya Dominika",
-        }
         DZD{
             "DZD",
             "Dinari ya Aljeria",
@@ -138,18 +107,10 @@
             "IDR",
             "Rupia ya Indonesia",
         }
-        IQD{
-            "IQD",
-            "Dinari ya Iraki",
-        }
         IRR{
             "IRR",
             "Riali ya Irani",
         }
-        JMD{
-            "JMD",
-            "Dola ya Jamaika",
-        }
         JOD{
             "JOD",
             "Dinari ya Yordani",
@@ -162,14 +123,6 @@
             "KHR",
             "Rieli ya Kambodia",
         }
-        KMF{
-            "KMF",
-            "Faranga ya Komoro",
-        }
-        KWD{
-            "KWD",
-            "Dinari ya Kuwait",
-        }
         KZT{
             "KZT",
             "Tenge ya Kazakistani",
@@ -182,10 +135,6 @@
             "MAD",
             "Diramu ya Moroko",
         }
-        MGA{
-            "MGA",
-            "Ariari ya Madagaska",
-        }
         MKD{
             "MKD",
             "Dinari ya Masedonia",
@@ -202,10 +151,6 @@
             "MVR",
             "Rufiyaa ya Maldivi",
         }
-        MXN{
-            "MX$",
-            "Peso ya Meksiko",
-        }
         MYR{
             "MYR",
             "Ringgiti ya Malesia",
@@ -214,10 +159,6 @@
             "NGN",
             "Naira ya Naijeria",
         }
-        NIO{
-            "NIO",
-            "Cordoba ya Nikaragwa",
-        }
         NOK{
             "NOK",
             "Kroni ya Norwe",
@@ -226,10 +167,6 @@
             "NPR",
             "Rupia ya Nepali",
         }
-        NZD{
-            "NZ$",
-            "Dola ya Nyuzilandi",
-        }
         OMR{
             "OMR",
             "Riali ya Omani",
@@ -242,10 +179,6 @@
             "PLN",
             "Zloti ya Polandi",
         }
-        PYG{
-            "PYG",
-            "Guarani ya Paragwai",
-        }
         QAR{
             "QAR",
             "Riali ya Katari",
@@ -278,10 +211,6 @@
             "SSP",
             "Pauni ya Sudani Kusini",
         }
-        SZL{
-            "SZL",
-            "Lilangeni ya Uswazi",
-        }
         THB{
             "฿",
             "Bahti ya Tailandi",
@@ -310,10 +239,6 @@
             "$",
             "Dola ya Marekani",
         }
-        UYU{
-            "UYU",
-            "Peso ya Urugwai",
-        }
         UZS{
             "UZS",
             "Som ya Uzbekistani",
@@ -330,10 +255,6 @@
             "FCFA",
             "Faranga ya CFA ya Afrika ya Kati",
         }
-        XCD{
-            "EC$",
-            "Dola ya Karibi Mashariki",
-        }
         XOF{
             "CFA",
             "Faranga ya CFA ya Afrika Magharibi",
@@ -360,10 +281,6 @@
             one{"gilda ya Antili ya Uholanzi"}
             other{"gilda za Antili ya Uholanzi"}
         }
-        ARS{
-            one{"peso ya Ajentina"}
-            other{"peso za Ajentina"}
-        }
         AWG{
             one{"florin ya Aruba"}
             other{"florin ya Aruba"}
@@ -384,10 +301,6 @@
             one{"taka ya Bangladeshi"}
             other{"taka za Bangladeshi"}
         }
-        BHD{
-            one{"dinari ya Bahareni"}
-            other{"dinari za Bahareni"}
-        }
         BMD{
             one{"dola ya Bamuda"}
             other{"dola za Bamuda"}
@@ -428,22 +341,6 @@
             one{"yuan ya China"}
             other{"yuan za China"}
         }
-        COP{
-            one{"peso ya Kolombia"}
-            other{"peso za Kolombia"}
-        }
-        CRC{
-            one{"colon ya Kostarika"}
-            other{"colon za Kostarika"}
-        }
-        CUC{
-            one{"peso ya Kuba inayoweza kubadilishwa"}
-            other{"peso za Kuba zinazoweza kubadilishwa"}
-        }
-        CUP{
-            one{"peso ya Kuba"}
-            other{"peso za Kuba"}
-        }
         CVE{
             one{"eskudo ya Kepuvede"}
             other{"eskudo za Kepuvede"}
@@ -452,18 +349,10 @@
             one{"koruna ya Cheki"}
             other{"koruna za Cheki"}
         }
-        DJF{
-            one{"faranga ya Jibuti"}
-            other{"faranga za Jibuti"}
-        }
         DKK{
             one{"kroni ya Denmaki"}
             other{"kroni za Denmaki"}
         }
-        DOP{
-            one{"peso ya Dominika"}
-            other{"peso za Dominika"}
-        }
         DZD{
             one{"dinari ya Aljeria"}
             other{"dinari za Aljeria"}
@@ -484,10 +373,6 @@
             one{"pauni ya Jibrata"}
             other{"pauni za Jibrata"}
         }
-        GYD{
-            one{"dola ya Guyana"}
-            other{"dola za Guyana"}
-        }
         HRK{
             one{"kuna ya Kroeshia"}
             other{"kuna za Kroeshia"}
@@ -504,18 +389,10 @@
             one{"rupia ya Indonesia"}
             other{"rupia za Indonesia"}
         }
-        IQD{
-            one{"dinari ya Iraki"}
-            other{"dinari za Iraki"}
-        }
         IRR{
             one{"riali ya Irani"}
             other{"riali za Irani"}
         }
-        JMD{
-            one{"dola ya Jamaika"}
-            other{"dola za Jamaika"}
-        }
         JOD{
             one{"dinari ya Yordani"}
             other{"dinari za Yordani"}
@@ -528,18 +405,6 @@
             one{"rieli ya Kambodia"}
             other{"rieli za Kambodia"}
         }
-        KMF{
-            one{"faranga ya Komoro"}
-            other{"faranga za Komoro"}
-        }
-        KWD{
-            one{"dinari ya Kuwait"}
-            other{"dinari za Kuwait"}
-        }
-        KYD{
-            one{"dola ya Visiwa vya Cayman"}
-            other{"dola za Visiwa vya Cayman"}
-        }
         KZT{
             one{"tenge ya Kazakistani"}
             other{"tenge za Kazakistani"}
@@ -572,10 +437,6 @@
             one{"rufiyaa ya Maldivi"}
             other{"rufiyaa za Maldivi"}
         }
-        MXN{
-            one{"peso ya Meksiko"}
-            other{"peso za Meksiko"}
-        }
         MYR{
             one{"ringgiti ya Malesia"}
             other{"ringgiti za Malesia"}
@@ -584,10 +445,6 @@
             one{"naira ya Naijeria"}
             other{"Naira za Naijeria"}
         }
-        NIO{
-            one{"cordoba ya Nikaragwa"}
-            other{"cordoba za Nikaragwa"}
-        }
         NOK{
             one{"kroni ya Norwe"}
             other{"kroni za Norwe"}
@@ -596,10 +453,6 @@
             one{"rupia ya Nepali"}
             other{"rupia za Nepali"}
         }
-        NZD{
-            one{"dola ya Nyuzilandi"}
-            other{"dola za Nyuzilandi"}
-        }
         OMR{
             one{"riali ya Omani"}
             other{"riali za Omani"}
@@ -608,10 +461,6 @@
             one{"balboa ya Panama"}
             other{"balboa za Panama"}
         }
-        PEN{
-            one{"sol ya Peru"}
-            other{"sol za Peru"}
-        }
         PKR{
             one{"rupia ya Pakistani"}
             other{"rupia za Pakistani"}
@@ -620,10 +469,6 @@
             one{"zloti ya Polandi"}
             other{"zloti za Polandi"}
         }
-        PYG{
-            one{"guarani ya Paragwai"}
-            other{"guarani za Paragwai"}
-        }
         QAR{
             one{"riali ya Katari"}
             other{"riali za Katari"}
@@ -652,10 +497,6 @@
             one{"leoni ya Siera Leoni"}
             other{"leoni za Siera Leoni"}
         }
-        SRD{
-            one{"dola ya Suriname"}
-            other{"dola za Suriname"}
-        }
         SSP{
             one{"pauni ya Sudani Kusini"}
             other{"pauni za Sudani Kusini"}
@@ -688,10 +529,6 @@
             one{"hryvnia ya Ukraini"}
             other{"hryvnia za Ukraini"}
         }
-        UYU{
-            one{"peso ya Urugwai"}
-            other{"peso za Urugwai"}
-        }
         UZS{
             one{"som ya Uzbekistani"}
             other{"som za Uzbekistani"}
@@ -708,10 +545,6 @@
             one{"faranga ya CFA ya Afrika ya Kati"}
             other{"faranga ya CFA ya Afrika ya Kati"}
         }
-        XCD{
-            one{"dola ya Karibi Mashariki"}
-            other{"dola za Karibi Mashariki"}
-        }
         XOF{
             one{"faranga ya CFA ya Afrika Magharibi"}
             other{"faranga za CFA ya Afrika Magharibi"}
@@ -721,5 +554,4 @@
             other{"riali za Yemeni"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/sw_UG.txt b/icu4c/source/data/curr/sw_UG.txt
index 79b96c0..5e0b6e4 100644
--- a/icu4c/source/data/curr/sw_UG.txt
+++ b/icu4c/source/data/curr/sw_UG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw_UG{
     Currencies{
         UGX{
@@ -7,5 +8,4 @@
             "Shilingi ya Uganda",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ta.txt b/icu4c/source/data/curr/ta.txt
index 43f5a61..9337574 100644
--- a/icu4c/source/data/curr/ta.txt
+++ b/icu4c/source/data/curr/ta.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ta{
     Currencies{
         AED{
@@ -1413,5 +1414,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ta_LK.txt b/icu4c/source/data/curr/ta_LK.txt
index 9f084bd..789248b 100644
--- a/icu4c/source/data/curr/ta_LK.txt
+++ b/icu4c/source/data/curr/ta_LK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ta_LK{
     Currencies{
         LKR{
@@ -7,5 +8,4 @@
             "இலங்கை ரூபாய்",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ta_MY.txt b/icu4c/source/data/curr/ta_MY.txt
index e8e85cb..10146a8 100644
--- a/icu4c/source/data/curr/ta_MY.txt
+++ b/icu4c/source/data/curr/ta_MY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ta_MY{
     Currencies{
         MYR{
@@ -11,5 +12,4 @@
             "சிங்கப்பூர் டாலர்",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ta_SG.txt b/icu4c/source/data/curr/ta_SG.txt
index 927f282..63c89f3 100644
--- a/icu4c/source/data/curr/ta_SG.txt
+++ b/icu4c/source/data/curr/ta_SG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ta_SG{
     Currencies{
         MYR{
@@ -15,5 +16,4 @@
             "அமெரிக்க டாலர்",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/te.txt b/icu4c/source/data/curr/te.txt
index 6aa116c..c54321c 100644
--- a/icu4c/source/data/curr/te.txt
+++ b/icu4c/source/data/curr/te.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 te{
     Currencies{
         AED{
@@ -766,7 +767,7 @@
         }
         AFN{
             one{"ఆఫ్ఘాన్ ఆఫ్ఘాని"}
-            other{"ఆఫ్ఘాన్ ఆఫ్ఘాని"}
+            other{"ఆఫ్ఘాన్ ఆఫ్ఘానీలు"}
         }
         ALL{
             one{"ఆల్బేనియన్ లేక్"}
@@ -1413,5 +1414,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/teo.txt b/icu4c/source/data/curr/teo.txt
index ce585e1..6f723b0 100644
--- a/icu4c/source/data/curr/teo.txt
+++ b/icu4c/source/data/curr/teo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 teo{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Edola lok’Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/teo_KE.txt b/icu4c/source/data/curr/teo_KE.txt
index 7d1cb5e..5a44d8e 100644
--- a/icu4c/source/data/curr/teo_KE.txt
+++ b/icu4c/source/data/curr/teo_KE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 teo_KE{
     Currencies{
         KES{
@@ -7,5 +8,4 @@
             "Ango’otol lok’ Kenya",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/tg.txt b/icu4c/source/data/curr/tg.txt
index 2890453..f6b11e8 100644
--- a/icu4c/source/data/curr/tg.txt
+++ b/icu4c/source/data/curr/tg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tg{
     Currencies{
         BRL{
@@ -88,5 +89,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/th.txt b/icu4c/source/data/curr/th.txt
index 3925b73..9cdc4f8 100644
--- a/icu4c/source/data/curr/th.txt
+++ b/icu4c/source/data/curr/th.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 th{
     Currencies{
         ADP{
@@ -1792,5 +1793,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ti.txt b/icu4c/source/data/curr/ti.txt
index 19c5178..3e57604 100644
--- a/icu4c/source/data/curr/ti.txt
+++ b/icu4c/source/data/curr/ti.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ti{
     Currencies{
         BRL{
@@ -43,5 +44,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ti_ER.txt b/icu4c/source/data/curr/ti_ER.txt
index 4aa1bb9..a05e6aa 100644
--- a/icu4c/source/data/curr/ti_ER.txt
+++ b/icu4c/source/data/curr/ti_ER.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ti_ER{
     Currencies{
         ERN{
@@ -7,5 +8,4 @@
             "ERN",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/tk.txt b/icu4c/source/data/curr/tk.txt
index d7693dc..220b63c 100644
--- a/icu4c/source/data/curr/tk.txt
+++ b/icu4c/source/data/curr/tk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tk{
     Currencies{
         AED{
@@ -1389,5 +1390,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/tl.txt b/icu4c/source/data/curr/tl.txt
index 4e521f9..8c39518 100644
--- a/icu4c/source/data/curr/tl.txt
+++ b/icu4c/source/data/curr/tl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tl{
     "%%ALIAS"{"fil"}
 }
diff --git a/icu4c/source/data/curr/tl_PH.txt b/icu4c/source/data/curr/tl_PH.txt
index 07c9f90..59af394 100644
--- a/icu4c/source/data/curr/tl_PH.txt
+++ b/icu4c/source/data/curr/tl_PH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tl_PH{
     "%%ALIAS"{"fil_PH"}
 }
diff --git a/icu4c/source/data/curr/to.txt b/icu4c/source/data/curr/to.txt
index 95ffc4e..5dd2d92 100644
--- a/icu4c/source/data/curr/to.txt
+++ b/icu4c/source/data/curr/to.txt
@@ -1,11 +1,16 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 to{
     Currencies{
         AUD{
             "AUD$",
             "Tola fakaʻaositelēlia",
         }
+        EUR{
+            "€",
+            "ʻEulo",
+        }
         FJD{
             "FJD",
             "Tola fakafisi",
@@ -57,6 +62,9 @@
         AUD{
             other{"Tola fakaʻaositelēlia"}
         }
+        EUR{
+            other{"ʻeulo"}
+        }
         FJD{
             other{"Tola fakafisi"}
         }
@@ -88,5 +96,4 @@
     CurrencyUnitPatterns{
         other{"{1} {0}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/tr.txt b/icu4c/source/data/curr/tr.txt
index 8a5906f..e78a20f 100644
--- a/icu4c/source/data/curr/tr.txt
+++ b/icu4c/source/data/curr/tr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tr{
     Currencies{
         ADP{
@@ -2400,5 +2401,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/tt.txt b/icu4c/source/data/curr/tt.txt
index e6cef1a..26a64e3 100644
--- a/icu4c/source/data/curr/tt.txt
+++ b/icu4c/source/data/curr/tt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tt{
     Currencies{
         BRL{
@@ -81,5 +82,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/twq.txt b/icu4c/source/data/curr/twq.txt
index adbe53e..94b1254 100644
--- a/icu4c/source/data/curr/twq.txt
+++ b/icu4c/source/data/curr/twq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 twq{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Zimbabwe Dollar",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/tzm.txt b/icu4c/source/data/curr/tzm.txt
index 89567bc..e72acdc 100644
--- a/icu4c/source/data/curr/tzm.txt
+++ b/icu4c/source/data/curr/tzm.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tzm{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Ḍular Uzimbabwi",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ug.txt b/icu4c/source/data/curr/ug.txt
index bbd06ef..3d0c29b 100644
--- a/icu4c/source/data/curr/ug.txt
+++ b/icu4c/source/data/curr/ug.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ug{
     Currencies{
         ADP{
@@ -2417,5 +2418,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/uk.txt b/icu4c/source/data/curr/uk.txt
index aff24e4..ae7cec0 100644
--- a/icu4c/source/data/curr/uk.txt
+++ b/icu4c/source/data/curr/uk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uk{
     Currencies{
         ADP{
@@ -896,7 +897,7 @@
         }
         TOP{
             "TOP",
-            "тонґанська паанга",
+            "тонганська паанга",
         }
         TPE{
             "TPE",
@@ -912,7 +913,7 @@
         }
         TTD{
             "TTD",
-            "долар Трінідаду і Тобаґо",
+            "долар Тринідаду і Тобаго",
         }
         TWD{
             "TWD",
@@ -1474,7 +1475,7 @@
         }
         CUP{
             few{"кубинські песо"}
-            many{"кубинськх песо"}
+            many{"кубинських песо"}
             one{"кубинський песо"}
             other{"кубинського песо"}
         }
@@ -2139,10 +2140,10 @@
             other{"туніського динара"}
         }
         TOP{
-            few{"тонґанські паанги"}
-            many{"тонґанських паанг"}
-            one{"тонґанська паанга"}
-            other{"тонґанської паанги"}
+            few{"тонганські паанги"}
+            many{"тонганських паанг"}
+            one{"тонганська паанга"}
+            other{"тонганської паанги"}
         }
         TRL{
             few{"турецькі ліри (1922–2005)"}
@@ -2159,8 +2160,8 @@
         TTD{
             few{"долари Тринідаду і Тобаго"}
             many{"доларів Тринідаду і Тобаго"}
-            one{"долар Трінідаду і Тобаґо"}
-            other{"долара Трінідаду і Тобаґо"}
+            one{"долар Тринідаду і Тобаго"}
+            other{"долара Тринідаду і Тобаго"}
         }
         TWD{
             few{"нові тайванські долари"}
@@ -2175,10 +2176,10 @@
             other{"танзанійського шилінга"}
         }
         UAH{
-            few{"гривні"}
-            many{"гривень"}
-            one{"гривня"}
-            other{"гривні"}
+            few{"українські гривні"}
+            many{"українських гривень"}
+            one{"українська гривня"}
+            other{"української гривні"}
         }
         UAK{
             few{"українські карбованці"}
@@ -2313,5 +2314,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ur.txt b/icu4c/source/data/curr/ur.txt
index 4375271..59fdf35 100644
--- a/icu4c/source/data/curr/ur.txt
+++ b/icu4c/source/data/curr/ur.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ur{
     Currencies{
         AED{
@@ -184,7 +185,7 @@
         }
         ERN{
             "ERN",
-            "اریٹیریا کا نافکا",
+            "اریٹیریائی ناکفا",
         }
         ETB{
             "ETB",
@@ -532,7 +533,7 @@
         }
         SLL{
             "SLL",
-            "سیئرا لیون لیون",
+            "سیئرا لیونین لیون",
         }
         SOS{
             "SOS",
@@ -953,8 +954,8 @@
             other{"مصری پاؤنڈ"}
         }
         ERN{
-            one{"اریٹیریا کا نافکا"}
-            other{"اریٹیریا کا نافکا"}
+            one{"اریٹیریائی ناکفا"}
+            other{"اریٹیریائی ناکفا"}
         }
         ETB{
             one{"ایتھوپیائی بِرّ"}
@@ -1289,8 +1290,8 @@
             other{"سینٹ ہیلینا پاؤنڈ"}
         }
         SLL{
-            one{"سیئرا لیون لیون"}
-            other{"سیئرا لیون لیون"}
+            one{"سیئرا لیونین لیون"}
+            other{"سیئرا لیونین لیون"}
         }
         SOS{
             one{"صومالی شلنگ"}
@@ -1414,7 +1415,7 @@
         }
         XXX{
             one{"(کرنسی کی نامعلوم یونٹ)"}
-            other{"نامعلوم کرنسی"}
+            other{"(نامعلوم کرنسی)"}
         }
         YER{
             one{"یمنی ریال"}
@@ -1433,5 +1434,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/ur_IN.txt b/icu4c/source/data/curr/ur_IN.txt
index 128a278..729bee9 100644
--- a/icu4c/source/data/curr/ur_IN.txt
+++ b/icu4c/source/data/curr/ur_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ur_IN{
     Currencies{
         CRC{
@@ -18,10 +19,6 @@
             "CVE",
             "کیپ ورڈی اسکیوڈو",
         }
-        ERN{
-            "ERN",
-            "اریٹیریائی ناکفا",
-        }
         GBP{
             "£",
             "برطانوی پاونڈ سٹرلنگ",
@@ -56,10 +53,6 @@
             one{"کیپ ورڈی اسکیوڈو"}
             other{"کیپ ورڈی اسکیوڈو"}
         }
-        ERN{
-            one{"اریٹیریائی ناکفا"}
-            other{"اریٹیریائی ناکفا"}
-        }
         GBP{
             one{"برطانوی پاونڈ سٹرلنگ"}
             other{"برطانوی پاونڈ سٹرلنگ"}
@@ -77,5 +70,4 @@
             other{"ساموآئی ٹالا"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/uz.txt b/icu4c/source/data/curr/uz.txt
index b39bfc1..cd9ad4f 100644
--- a/icu4c/source/data/curr/uz.txt
+++ b/icu4c/source/data/curr/uz.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz{
     Currencies{
         AED{
@@ -1405,5 +1406,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/uz_AF.txt b/icu4c/source/data/curr/uz_AF.txt
index 24ca294..0e8d20c 100644
--- a/icu4c/source/data/curr/uz_AF.txt
+++ b/icu4c/source/data/curr/uz_AF.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_AF{
     "%%ALIAS"{"uz_Arab_AF"}
 }
diff --git a/icu4c/source/data/curr/uz_Arab.txt b/icu4c/source/data/curr/uz_Arab.txt
index 4a8e05a..4b8fc15 100644
--- a/icu4c/source/data/curr/uz_Arab.txt
+++ b/icu4c/source/data/curr/uz_Arab.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Arab{
     %%Parent{"root"}
     Currencies{
@@ -8,5 +9,4 @@
             "افغانی",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/uz_Arab_AF.txt b/icu4c/source/data/curr/uz_Arab_AF.txt
index e45d708..e2978bb 100644
--- a/icu4c/source/data/curr/uz_Arab_AF.txt
+++ b/icu4c/source/data/curr/uz_Arab_AF.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/uz_Cyrl.txt b/icu4c/source/data/curr/uz_Cyrl.txt
index 9569274..5b2cf79 100644
--- a/icu4c/source/data/curr/uz_Cyrl.txt
+++ b/icu4c/source/data/curr/uz_Cyrl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Cyrl{
     %%Parent{"root"}
     Currencies{
@@ -422,5 +423,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/uz_Latn.txt b/icu4c/source/data/curr/uz_Latn.txt
index f6035b7..1ae52da 100644
--- a/icu4c/source/data/curr/uz_Latn.txt
+++ b/icu4c/source/data/curr/uz_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/uz_Latn_UZ.txt b/icu4c/source/data/curr/uz_Latn_UZ.txt
index 2d34eff..356e549 100644
--- a/icu4c/source/data/curr/uz_Latn_UZ.txt
+++ b/icu4c/source/data/curr/uz_Latn_UZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/uz_UZ.txt b/icu4c/source/data/curr/uz_UZ.txt
index ffac532..3a6a14d 100644
--- a/icu4c/source/data/curr/uz_UZ.txt
+++ b/icu4c/source/data/curr/uz_UZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_UZ{
     "%%ALIAS"{"uz_Latn_UZ"}
 }
diff --git a/icu4c/source/data/curr/vai.txt b/icu4c/source/data/curr/vai.txt
index 82048db..4aeb0f8 100644
--- a/icu4c/source/data/curr/vai.txt
+++ b/icu4c/source/data/curr/vai.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai{
     Currencies{
         AED{
@@ -228,5 +229,4 @@
             other{"ꔖꗼꔷ ꖩꔪ"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/vai_LR.txt b/icu4c/source/data/curr/vai_LR.txt
index 27d4238..f682350 100644
--- a/icu4c/source/data/curr/vai_LR.txt
+++ b/icu4c/source/data/curr/vai_LR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_LR{
     "%%ALIAS"{"vai_Vaii_LR"}
 }
diff --git a/icu4c/source/data/curr/vai_Latn.txt b/icu4c/source/data/curr/vai_Latn.txt
index 8338f48..de81d29 100644
--- a/icu4c/source/data/curr/vai_Latn.txt
+++ b/icu4c/source/data/curr/vai_Latn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_Latn{
     %%Parent{"root"}
     Currencies{
@@ -228,5 +229,4 @@
             "Zimbhabhuwe Dala",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/vai_Vaii.txt b/icu4c/source/data/curr/vai_Vaii.txt
index cffa591..6dc5e99 100644
--- a/icu4c/source/data/curr/vai_Vaii.txt
+++ b/icu4c/source/data/curr/vai_Vaii.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_Vaii{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/vai_Vaii_LR.txt b/icu4c/source/data/curr/vai_Vaii_LR.txt
index a17bc11..d2845ca 100644
--- a/icu4c/source/data/curr/vai_Vaii_LR.txt
+++ b/icu4c/source/data/curr/vai_Vaii_LR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/vi.txt b/icu4c/source/data/curr/vi.txt
index 24f6cd8..5e7223a 100644
--- a/icu4c/source/data/curr/vi.txt
+++ b/icu4c/source/data/curr/vi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vi{
     Currencies{
         ADP{
@@ -515,7 +516,7 @@
             "Dinar Jordan",
         }
         JPY{
-            "JP¥",
+            "¥",
             "Yên Nhật",
         }
         KES{
@@ -1703,5 +1704,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/vun.txt b/icu4c/source/data/curr/vun.txt
index 0e810ac..9699273 100644
--- a/icu4c/source/data/curr/vun.txt
+++ b/icu4c/source/data/curr/vun.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vun{
     Currencies{
         AED{
@@ -235,5 +236,4 @@
             "Dola ya Zimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/wae.txt b/icu4c/source/data/curr/wae.txt
index a471c3a..066e130 100644
--- a/icu4c/source/data/curr/wae.txt
+++ b/icu4c/source/data/curr/wae.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 wae{
     Currencies{
         BRL{
@@ -81,5 +82,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/wo.txt b/icu4c/source/data/curr/wo.txt
index e510d49..054f3d9 100644
--- a/icu4c/source/data/curr/wo.txt
+++ b/icu4c/source/data/curr/wo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 wo{
     Currencies{
         BRL{
@@ -88,5 +89,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/xh.txt b/icu4c/source/data/curr/xh.txt
index 9bc32c6..51bad02 100644
--- a/icu4c/source/data/curr/xh.txt
+++ b/icu4c/source/data/curr/xh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 xh{
     Currencies{
         ZAR{
@@ -20,5 +21,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/xog.txt b/icu4c/source/data/curr/xog.txt
index 8337829..bd7212b 100644
--- a/icu4c/source/data/curr/xog.txt
+++ b/icu4c/source/data/curr/xog.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 xog{
     Currencies{
         AED{
@@ -231,5 +232,4 @@
             "Doola ey’eZimbabwe",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/yav.txt b/icu4c/source/data/curr/yav.txt
index fd3d9e3..95f97db 100644
--- a/icu4c/source/data/curr/yav.txt
+++ b/icu4c/source/data/curr/yav.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yav{
     Currencies{
         AOA{
@@ -95,5 +96,4 @@
             "́faláŋɛ u kɔmɔ́ɔl",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/yi.txt b/icu4c/source/data/curr/yi.txt
index 5d1f57a..515ffbb 100644
--- a/icu4c/source/data/curr/yi.txt
+++ b/icu4c/source/data/curr/yi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yi{
     Currencies{
         BRL{
@@ -105,5 +106,4 @@
             other{"אומבאַוואוסטע וואַלוטע"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/yo.txt b/icu4c/source/data/curr/yo.txt
index 2b8af95..6717631 100644
--- a/icu4c/source/data/curr/yo.txt
+++ b/icu4c/source/data/curr/yo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yo{
     Currencies{
         AED{
@@ -24,7 +25,7 @@
         }
         AOA{
             "AOA",
-            "Wansa ti Orílẹ́ède Àngólà",
+            "kíwánsà Angola",
         }
         ARS{
             "ARS",
@@ -64,7 +65,7 @@
         }
         BIF{
             "BIF",
-            "Faransi ti Orílẹ́ède Bùùrúndì",
+            "Faransi Bùùrúndì",
         }
         BMD{
             "BMD",
@@ -92,7 +93,7 @@
         }
         BWP{
             "BWP",
-            "Pula ti Orílẹ́ède Bọ̀tìsúwánà",
+            "Pula Bọ̀tìsúwánà",
         }
         BYN{
             "BYN",
@@ -104,11 +105,11 @@
         }
         CAD{
             "CA$",
-            "Dọla ti Orílẹ́ède Kánádà",
+            "Dọ́là Kánádà",
         }
         CDF{
             "CDF",
-            "Faransi ti Orílẹ́ède Kóngò",
+            "Firanki Kongo",
         }
         CHF{
             "CHF",
@@ -144,7 +145,7 @@
         }
         CVE{
             "CVE",
-            "Kabofediano ti Orílẹ́ède Esuodo",
+            "Èsìkúdò Kapú Faadì",
         }
         CZK{
             "CZK",
@@ -152,7 +153,7 @@
         }
         DJF{
             "DJF",
-            "Faransi ti Orílẹ́ède Dibouti",
+            "Faransi Dibouti",
         }
         DKK{
             "DKK",
@@ -172,11 +173,11 @@
         }
         ERN{
             "ERN",
-            "Nakifa ti Orílẹ́ède Eriteriani",
+            "Nakifasì Eritira",
         }
         ETB{
             "ETB",
-            "Biri ti Orílẹ́ède Eutopia",
+            "Báà Etópíà",
         }
         EUR{
             "€",
@@ -204,7 +205,7 @@
         }
         GHS{
             "GHS",
-            "Sídì Ghanaian",
+            "sídì Gana",
         }
         GIP{
             "GIP",
@@ -212,11 +213,11 @@
         }
         GMD{
             "GMD",
-            "Dalasi ti Orílẹ́ède Gamibia",
+            "Dalasi Gamibia",
         }
         GNF{
             "GNF",
-            "Fírànkì Gíníànì",
+            "Fírànkì Gínì",
         }
         GNS{
             "GNS",
@@ -288,7 +289,7 @@
         }
         KES{
             "KES",
-            "ṣiili ti Orílẹ́ède Kenya",
+            "Ṣiili Kenya",
         }
         KGS{
             "KGS",
@@ -300,7 +301,7 @@
         }
         KMF{
             "KMF",
-            "Faransi ti Orílẹ́ède ṣomoriani",
+            "Faransi Komori",
         }
         KPW{
             "KPW",
@@ -336,7 +337,7 @@
         }
         LRD{
             "LRD",
-            "Dọla ti Orílẹ́ède Liberia",
+            "Dọla Liberia",
         }
         LSL{
             "LSL",
@@ -344,11 +345,11 @@
         }
         LYD{
             "LYD",
-            "Dina ti Orílẹ́ède Libiya",
+            "Dínà Líbíyà",
         }
         MAD{
             "MAD",
-            "Dirami ti Orílẹ́ède Moroko",
+            "Dírámì Morokò",
         }
         MDL{
             "MDL",
@@ -356,7 +357,7 @@
         }
         MGA{
             "MGA",
-            "Faransi ti Orílẹ́ède Malagasi",
+            "Faransi Malagasi",
         }
         MKD{
             "MKD",
@@ -384,7 +385,7 @@
         }
         MUR{
             "MUR",
-            "Rupi ti Orílẹ́ède Maritiusi",
+            "Rupi Maritusi",
         }
         MVR{
             "MVR",
@@ -392,7 +393,7 @@
         }
         MWK{
             "MWK",
-            "Kaṣa ti Orílẹ́ède Malawi",
+            "Kásà Màláwì",
         }
         MXN{
             "MX$",
@@ -412,11 +413,11 @@
         }
         NAD{
             "NAD",
-            "Dọla ti Orílẹ́ède Namibia",
+            "Dọla Namibíà",
         }
         NGN{
             "₦",
-            "Náìrà ti Orílẹ̀-èdè Nàìjíríà",
+            "Náírà Nàìjíríà",
         }
         NIO{
             "NIO",
@@ -484,7 +485,7 @@
         }
         RWF{
             "RWF",
-            "Faransi ti Orílẹ́ède Ruwanda",
+            "Faransi Ruwanda",
         }
         SAR{
             "SAR",
@@ -496,11 +497,11 @@
         }
         SCR{
             "SCR",
-            "Rupi ti Orílẹ́ède Sayiselesi",
+            "Rúpì Sayiselesi",
         }
         SDG{
             "SDG",
-            "Dina ti Orílẹ́ède Sudani",
+            "Pọ́n-ùn Sùdáànì",
         }
         SDP{
             "SDP",
@@ -516,15 +517,15 @@
         }
         SHP{
             "SHP",
-            "Pọọun ti Orílẹ́ède ̣Elena",
+            "Pọ́n-un Elena",
         }
         SLL{
             "SLL",
-            "Lioni",
+            "Líónì Sira Líonì",
         }
         SOS{
             "SOS",
-            "Sile ti Orílẹ́ède Somali",
+            "Ṣílè Somali",
         }
         SRD{
             "SRD",
@@ -532,7 +533,7 @@
         }
         SSP{
             "SSP",
-            "Pọ́n-ùn Gúúsù Sùdáànì",
+            "Pọ́n-un Gúúsù Sùdáànì",
         }
         STD{
             "STD",
@@ -540,7 +541,7 @@
         }
         STN{
             "STN",
-            "Dobira ti Orílẹ́ède Sao tome Ati Pirisipe",
+            "Dọbíra Sao tome àti Pirisipi",
         }
         SYP{
             "SYP",
@@ -548,7 +549,7 @@
         }
         SZL{
             "SZL",
-            "Lilangeni",
+            "Lilangeni Suwasi",
         }
         THB{
             "THB",
@@ -564,7 +565,7 @@
         }
         TND{
             "TND",
-            "Dina ti Orílẹ́ède Tunisia",
+            "Dínà Tuniṣíà",
         }
         TOP{
             "TOP",
@@ -584,7 +585,7 @@
         }
         TZS{
             "TZS",
-            "Sile ti Orílẹ́ède Tansania",
+            "Sile Tansania",
         }
         UAH{
             "UAH",
@@ -592,7 +593,7 @@
         }
         UGX{
             "UGX",
-            "Siile ti Orílẹ́ède Uganda",
+            "Ṣile Uganda",
         }
         USD{
             "$",
@@ -624,7 +625,7 @@
         }
         XAF{
             "FCFA",
-            "Faransi ti Orílẹ́ède BEKA",
+            "Firanki àárín Afíríkà",
         }
         XCD{
             "EC$",
@@ -632,7 +633,7 @@
         }
         XOF{
             "CFA",
-            "Faransi ti Orílẹ́ède BIKEAO",
+            "Faransì ìwọ̀-oorùn Afíríkà",
         }
         XPF{
             "CFPF",
@@ -648,7 +649,7 @@
         }
         ZAR{
             "ZAR",
-            "Randi ti Orílẹ́ède Ariwa Afirika",
+            "Rándì Gúúsù Afíríkà",
         }
         ZMK{
             "ZMK",
@@ -656,7 +657,7 @@
         }
         ZMW{
             "ZMW",
-            "Kawaṣa ti Orílẹ́ède Saabia",
+            "Kàwasà Sámbíà",
         }
         ZWD{
             "ZWD",
@@ -667,30 +668,290 @@
         KRW{"₩"}
     }
     CurrencyPlurals{
+        ALL{
+            other{"lẹ́kè Àlìbéníà"}
+        }
+        ANG{
+            other{"àwọn gílídà Netherlands Antillean"}
+        }
+        AOA{
+            other{"àwọn kíwánsà Angola"}
+        }
+        ARS{
+            other{"àwọn pẹ́sò Agẹntínà"}
+        }
+        AWG{
+            other{"àwọn fuloríìnì Àrúbà"}
+        }
+        BAM{
+            other{"àwọn àmi Yíyípadà Bosnia-Herzegovina"}
+        }
+        BBD{
+            other{"àwọn dọ́là Bábádọ̀ọ̀sì"}
+        }
+        BGN{
+            other{"Lẹ́fà Bọ̀lìgéríà"}
+        }
+        BIF{
+            other{"àwọn faransi Bùùrúndì"}
+        }
+        BMD{
+            other{"àwọ́n dọ́là Bẹ̀múdà"}
+        }
+        BOB{
+            other{"àwọn bọlifiánò Bọ̀lífíà"}
+        }
         BRL{
             other{"Awon owó ti Orílẹ̀-èdè Brazil"}
         }
+        BSD{
+            other{"àwọn dọ́là Bàhámà"}
+        }
+        BWP{
+            other{"àwọn pula Bọ̀tìsúwánà"}
+        }
+        BYN{
+            other{"àwọn rọ́bù Bẹ̀lárùùsì"}
+        }
+        BZD{
+            other{"àwọn Dọ́là Bẹ́lìsè"}
+        }
+        CAD{
+            other{"àwọn dọ́là Kánádà"}
+        }
+        CDF{
+            other{"àwọn firanki Kongo"}
+        }
+        CHF{
+            other{"Faransi Siwisi"}
+        }
+        CLP{
+            other{"àwọn pẹ́sò Ṣílè"}
+        }
+        COP{
+            other{"àwọn pẹ́sò Kòlóḿbíà"}
+        }
+        CRC{
+            other{"àwọ́n kólọ́ọ̀nì Kosita Ríkà"}
+        }
+        CUC{
+            other{"àwọn pẹ́sò yíyípadà Kúbà"}
+        }
+        CVE{
+            other{"àwọn èsìkúdò Kapú Faadì"}
+        }
+        CZK{
+            other{"àwọn koruna Ṣẹ́ẹ̀kì"}
+        }
+        DJF{
+            other{"àwọn faransi Dibouti"}
+        }
+        DKK{
+            other{"Kírònà Dáníìṣì"}
+        }
+        DOP{
+            other{"àwọn pẹ́sò Dòníníkà"}
+        }
+        DZD{
+            other{"àwọn dínà Àlùgèríánì"}
+        }
         EGP{
-            other{"pọ́nùn"}
+            other{"àwọn pọ́n-ún Ejipítì"}
+        }
+        ERN{
+            other{"àwọn nakifasì Eritira"}
+        }
+        ETB{
+            other{"àwọn báà Etópíà"}
         }
         EUR{
             other{"Awon owó Yúrò"}
         }
+        FKP{
+            other{
+                "àwọn Pọ́n-ùn Erékùsù Falkland [ Pɔ́n-ùn Erékùsù Falkland ] 1.23 Pọ́n"
+                "-ùn Erékùsù Falkland 0.00 pọ́n-ùn Erékùsù Falkland"
+            }
+        }
+        GHS{
+            other{"àwọn sídì Gana"}
+        }
+        GIP{
+            other{"àwọn pọ́n-ùn Gibraltar"}
+        }
+        GMD{
+            other{"àwọn dalasi Gamibia"}
+        }
+        GNF{
+            other{"àwọn fírànkì Gínì"}
+        }
+        GTQ{
+            other{"àwọn kúẹ́tísààlì Guatimílà"}
+        }
+        GYD{
+            other{"àwọn dọ́là Gùyánà"}
+        }
+        HNL{
+            other{"àwọn Lẹmipírà Ọ́ńdúrà"}
+        }
+        HRK{
+            other{"àwọn kúnà Croatian"}
+        }
+        HTG{
+            other{"àwọn gọ́dì Àítì"}
+        }
+        HUF{
+            other{"àwọn fọ́ríǹtì Họ̀ngérí"}
+        }
+        ISK{
+            other{"kòrónà aílandíìkì"}
+        }
+        JMD{
+            other{"àwọn dọ́là Jàmáíkà"}
+        }
+        KES{
+            other{"àwọ́n ṣiili Kenya"}
+        }
+        KMF{
+            other{"àwọn faransi Komori"}
+        }
+        KYD{
+            other{"àwọn dọ́là Erékùsù Cayman"}
+        }
+        LRD{
+            other{"àwọn dọla Liberia"}
+        }
+        LYD{
+            other{"àwọn dínà Líbíyà"}
+        }
+        MAD{
+            other{"àwọn dírámì Morokò"}
+        }
+        MDL{
+            other{"Léhì Moldovan"}
+        }
+        MGA{
+            other{"àwọn faransi Malagasi"}
+        }
+        MKD{
+            other{"dẹ́nàrì Masidóníà"}
+        }
+        MUR{
+            other{"àwọn rupi Maritusi"}
+        }
+        MWK{
+            other{"àwọn kásà Màláwì"}
+        }
+        MXN{
+            other{"àwọn pẹ́sò Mẹ́síkò"}
+        }
+        MZN{
+            other{"àwọn mẹ́tíkààlì Mòsáḿbíìkì"}
+        }
+        NAD{
+            other{"àwọn dọla Namibíà"}
+        }
         NGN{
             other{"Náírà Nàìjíríà"}
         }
+        NIO{
+            other{"àwọn kọ̀dóbà Naikarágúà"}
+        }
+        NOK{
+            other{"kìrónà Nọ́ọ́wè"}
+        }
+        PAB{
+            other{"àwọn bálíbóà Pànámà"}
+        }
+        PEN{
+            other{"àwọn sólì Pèrúù"}
+        }
+        PLN{
+            other{"àwọn sílọ̀tì Pọ́líṣì"}
+        }
+        PYG{
+            other{"àwọn gúáránì Párágúwè"}
+        }
+        RON{
+            other{"Léhì Ròméníà"}
+        }
+        RSD{
+            other{"àwọn dínárì Sàbíà"}
+        }
         RUB{
             other{"Owó ruble ti ilẹ̀ Rọ́ṣíà"}
         }
+        RWF{
+            other{"àwọn faransi Ruwanda"}
+        }
+        SCR{
+            other{"àwọ́n rúpì Sayiselesi"}
+        }
+        SDG{
+            other{"àwọn pọ́n-ùn Sùdáànì"}
+        }
+        SEK{
+            other{"Kòrónọ̀ Súwídìn"}
+        }
+        SHP{
+            other{"àwọn pọ́n-un Elena"}
+        }
+        SLL{
+            other{"àwọn líónì Sira Líonì"}
+        }
+        SOS{
+            other{"àwọ́n ṣílè Somali"}
+        }
+        SRD{
+            other{"àwọn Dọ́là Súrínámì"}
+        }
+        SSP{
+            other{"àwọn pọ́n-un Gúúsù Sùdáànì"}
+        }
+        SZL{
+            other{"emalangeni Suwasi"}
+        }
+        TND{
+            other{"àwọn dínà Tuniṣíà"}
+        }
+        TTD{
+            other{"àwọn dọ́là Trinidad àti Tobago"}
+        }
+        TZS{
+            other{"àwọn ṣile Tansania"}
+        }
+        UGX{
+            other{"àwọn ṣile Uganda"}
+        }
         USD{
             other{"Dọ́là ti Orílẹ̀-Èdè Amẹ́ríkà"}
         }
+        UYU{
+            other{"àwọn pẹ́sò Úrúgúwè"}
+        }
+        VES{
+            other{"àwọn bọ̀lífà Fẹnẹsuẹ́là"}
+        }
+        XAF{
+            other{"àwọn firanki àárín Afíríkà"}
+        }
+        XCD{
+            other{"àwọn dọ́là Ilà Oòrùn Karíbíà"}
+        }
+        XOF{
+            other{"àwọn faransì ìwọ̀-oorùn Afíríkà"}
+        }
         XXX{
             other{"owóníná àìmọ̀"}
         }
+        ZAR{
+            other{"rándì Gúúsù Afíríkà"}
+        }
+        ZMW{
+            other{"àwọn kàwasà Sámbíà"}
+        }
     }
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/yo_BJ.txt b/icu4c/source/data/curr/yo_BJ.txt
index 8a49d2a..4ea88c5 100644
--- a/icu4c/source/data/curr/yo_BJ.txt
+++ b/icu4c/source/data/curr/yo_BJ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yo_BJ{
     Currencies{
         AED{
@@ -14,10 +15,6 @@
             "AMD",
             "Dírààmù Àmɛ́níà",
         }
-        AOA{
-            "AOA",
-            "Wansa ti Orílɛ́ède Àngólà",
-        }
         ARS{
             "ARS",
             "Pɛ́sò Agɛntínà",
@@ -42,10 +39,6 @@
             "BHD",
             "Dina ti Orílɛ́ède Báránì",
         }
-        BIF{
-            "BIF",
-            "Faransi ti Orílɛ́ède Bùùrúndì",
-        }
         BMD{
             "BMD",
             "Dɔ́là Bɛ̀múdà",
@@ -72,7 +65,7 @@
         }
         BWP{
             "BWP",
-            "Pula ti Orílɛ́ède Bɔ̀tìsúwánà",
+            "Pula Bɔ̀tìsúwánà",
         }
         BYN{
             "BYN",
@@ -84,11 +77,7 @@
         }
         CAD{
             "CA$",
-            "Dɔla ti Orílɛ́ède Kánádà",
-        }
-        CDF{
-            "CDF",
-            "Faransi ti Orílɛ́ède Kóngò",
+            "Dɔ́là Kánádà",
         }
         CHF{
             "CHF",
@@ -118,18 +107,10 @@
             "CUP",
             "Pɛ́sò Kúbà",
         }
-        CVE{
-            "CVE",
-            "Kabofediano ti Orílɛ́ède Esuodo",
-        }
         CZK{
             "CZK",
             "Koruna Shɛ́ɛ̀kì",
         }
-        DJF{
-            "DJF",
-            "Faransi ti Orílɛ́ède Dibouti",
-        }
         DKK{
             "DKK",
             "Kírónì Dáníshì",
@@ -146,14 +127,6 @@
             "EGP",
             "pɔɔn ti Orílɛ́ède Egipiti",
         }
-        ERN{
-            "ERN",
-            "Nakifa ti Orílɛ́ède Eriteriani",
-        }
-        ETB{
-            "ETB",
-            "Biri ti Orílɛ́ède Eutopia",
-        }
         FJD{
             "FJD",
             "Dɔ́là Fíjì",
@@ -178,10 +151,6 @@
             "GIP",
             "Pɔ́n-ùn Gibraltar",
         }
-        GMD{
-            "GMD",
-            "Dalasi ti Orílɛ́ède Gamibia",
-        }
         GNS{
             "GNS",
             "Faransi ti Orílɛ́ède Gini",
@@ -232,16 +201,12 @@
         }
         KES{
             "KES",
-            "shiili ti Orílɛ́ède Kenya",
+            "Shiili Kenya",
         }
         KHR{
             "KHR",
             "Ráyò Kàm̀bɔ́díà",
         }
-        KMF{
-            "KMF",
-            "Faransi ti Orílɛ́ède shomoriani",
-        }
         KPW{
             "KPW",
             "Wɔ́ɔ̀nù Àríwá Kòríà",
@@ -264,24 +229,12 @@
         }
         LRD{
             "LRD",
-            "Dɔla ti Orílɛ́ède Liberia",
+            "Dɔla Liberia",
         }
         LSL{
             "LSL",
             "Loti ti Orílɛ́ède Lesoto",
         }
-        LYD{
-            "LYD",
-            "Dina ti Orílɛ́ède Libiya",
-        }
-        MAD{
-            "MAD",
-            "Dirami ti Orílɛ́ède Moroko",
-        }
-        MGA{
-            "MGA",
-            "Faransi ti Orílɛ́ède Malagasi",
-        }
         MKD{
             "MKD",
             "Dɛ́nà Masidóníà",
@@ -294,18 +247,10 @@
             "MRU",
             "Ouguiya ti Orílɛ́ède Maritania",
         }
-        MUR{
-            "MUR",
-            "Rupi ti Orílɛ́ède Maritiusi",
-        }
         MVR{
             "MVR",
             "Rúfìyá Mɔ̀lìdífà",
         }
-        MWK{
-            "MWK",
-            "Kasha ti Orílɛ́ède Malawi",
-        }
         MXN{
             "MX$",
             "Pɛ́sò Mɛ́síkò",
@@ -324,11 +269,7 @@
         }
         NAD{
             "NAD",
-            "Dɔla ti Orílɛ́ède Namibia",
-        }
-        NGN{
-            "₦",
-            "Náìrà ti Orílɛ̀-èdè Nàìjíríà",
+            "Dɔla Namibíà",
         }
         NIO{
             "NIO",
@@ -354,10 +295,6 @@
             "₽",
             "Owó ruble ti ilɛ̀ Rɔ́shíà",
         }
-        RWF{
-            "RWF",
-            "Faransi ti Orílɛ́ède Ruwanda",
-        }
         SAR{
             "SAR",
             "Riya ti Orílɛ́ède Saudi",
@@ -366,13 +303,9 @@
             "SBD",
             "Dɔ́là Erékùsù Sɔ́lómɔ́nì",
         }
-        SCR{
-            "SCR",
-            "Rupi ti Orílɛ́ède Sayiselesi",
-        }
         SDG{
             "SDG",
-            "Dina ti Orílɛ́ède Sudani",
+            "Pɔ́n-ùn Sùdáànì",
         }
         SDP{
             "SDP",
@@ -384,11 +317,11 @@
         }
         SHP{
             "SHP",
-            "Pɔɔun ti Orílɛ́ède ̣Elena",
+            "Pɔ́n-un Elena",
         }
         SOS{
             "SOS",
-            "Sile ti Orílɛ́ède Somali",
+            "Shílè Somali",
         }
         SRD{
             "SRD",
@@ -396,7 +329,7 @@
         }
         SSP{
             "SSP",
-            "Pɔ́n-ùn Gúúsù Sùdáànì",
+            "Pɔ́n-un Gúúsù Sùdáànì",
         }
         STD{
             "STD",
@@ -404,7 +337,7 @@
         }
         STN{
             "STN",
-            "Dobira ti Orílɛ́ède Sao tome Ati Pirisipe",
+            "Dɔbíra Sao tome àti Pirisipi",
         }
         SYP{
             "SYP",
@@ -416,7 +349,7 @@
         }
         TND{
             "TND",
-            "Dina ti Orílɛ́ède Tunisia",
+            "Dínà Tunishíà",
         }
         TRY{
             "TRY",
@@ -430,17 +363,13 @@
             "NT$",
             "Dɔ́là Tàìwánì Tuntun",
         }
-        TZS{
-            "TZS",
-            "Sile ti Orílɛ́ède Tansania",
-        }
         UAH{
             "UAH",
             "Ɔrifiníyà Yukiréníà",
         }
         UGX{
             "UGX",
-            "Siile ti Orílɛ́ède Uganda",
+            "Shile Uganda",
         }
         USD{
             "$",
@@ -458,17 +387,13 @@
             "VES",
             "Bɔ̀lífà Fɛnɛsuɛ́là",
         }
-        XAF{
-            "FCFA",
-            "Faransi ti Orílɛ́ède BEKA",
-        }
         XCD{
             "EC$",
             "Dɔ́là Ilà Oòrùn Karíbíà",
         }
         XOF{
             "CFA",
-            "Faransi ti Orílɛ́ède BIKEAO",
+            "Faransì ìwɔ̀-oorùn Afíríkà",
         }
         XXX{
             "¤",
@@ -478,39 +403,273 @@
             "YER",
             "Ráyò Yɛ́mɛ̀nì",
         }
-        ZAR{
-            "ZAR",
-            "Randi ti Orílɛ́ède Ariwa Afirika",
-        }
         ZMK{
             "ZMK",
             "Kawasha ti Orílɛ́ède Saabia (1968–2012)",
         }
-        ZMW{
-            "ZMW",
-            "Kawasha ti Orílɛ́ède Saabia",
-        }
         ZWD{
             "ZWD",
             "Dɔla ti Orílɛ́ède Siibabuwe",
         }
     }
     CurrencyPlurals{
+        ALL{
+            other{"lɛ́kè Àlìbéníà"}
+        }
+        ANG{
+            other{"àwɔn gílídà Netherlands Antillean"}
+        }
+        AOA{
+            other{"àwɔn kíwánsà Angola"}
+        }
+        ARS{
+            other{"àwɔn pɛ́sò Agɛntínà"}
+        }
+        AWG{
+            other{"àwɔn fuloríìnì Àrúbà"}
+        }
+        BAM{
+            other{"àwɔn àmi Yíyípadà Bosnia-Herzegovina"}
+        }
+        BBD{
+            other{"àwɔn dɔ́là Bábádɔ̀ɔ̀sì"}
+        }
+        BGN{
+            other{"Lɛ́fà Bɔ̀lìgéríà"}
+        }
+        BIF{
+            other{"àwɔn faransi Bùùrúndì"}
+        }
+        BMD{
+            other{"àwɔ́n dɔ́là Bɛ̀múdà"}
+        }
+        BOB{
+            other{"àwɔn bɔlifiánò Bɔ̀lífíà"}
+        }
         BRL{
             other{"Awon owó ti Orílɛ̀-èdè Brazil"}
         }
+        BSD{
+            other{"àwɔn dɔ́là Bàhámà"}
+        }
+        BWP{
+            other{"àwɔn pula Bɔ̀tìsúwánà"}
+        }
+        BYN{
+            other{"àwɔn rɔ́bù Bɛ̀lárùùsì"}
+        }
+        BZD{
+            other{"àwɔn Dɔ́là Bɛ́lìsè"}
+        }
+        CAD{
+            other{"àwɔn dɔ́là Kánádà"}
+        }
+        CDF{
+            other{"àwɔn firanki Kongo"}
+        }
+        CLP{
+            other{"àwɔn pɛ́sò Shílè"}
+        }
+        COP{
+            other{"àwɔn pɛ́sò Kòlóḿbíà"}
+        }
+        CRC{
+            other{"àwɔ́n kólɔ́ɔ̀nì Kosita Ríkà"}
+        }
+        CUC{
+            other{"àwɔn pɛ́sò yíyípadà Kúbà"}
+        }
+        CVE{
+            other{"àwɔn èsìkúdò Kapú Faadì"}
+        }
+        CZK{
+            other{"àwɔn koruna Shɛ́ɛ̀kì"}
+        }
+        DJF{
+            other{"àwɔn faransi Dibouti"}
+        }
+        DKK{
+            other{"Kírònà Dáníìshì"}
+        }
+        DOP{
+            other{"àwɔn pɛ́sò Dòníníkà"}
+        }
+        DZD{
+            other{"àwɔn dínà Àlùgèríánì"}
+        }
         EGP{
-            other{"pɔ́nùn"}
+            other{"àwɔn pɔ́n-ún Ejipítì"}
+        }
+        ERN{
+            other{"àwɔn nakifasì Eritira"}
+        }
+        ETB{
+            other{"àwɔn báà Etópíà"}
+        }
+        FKP{
+            other{
+                "àwɔn Pɔ́n-ùn Erékùsù Falkland [ Pɔ́n-ùn Erékùsù Falkland ] 1.23 Pɔ́n"
+                "-ùn Erékùsù Falkland 0.00 pɔ́n-ùn Erékùsù Falkland"
+            }
+        }
+        GHS{
+            other{"àwɔn sídì Gana"}
+        }
+        GIP{
+            other{"àwɔn pɔ́n-ùn Gibraltar"}
+        }
+        GMD{
+            other{"àwɔn dalasi Gamibia"}
+        }
+        GNF{
+            other{"àwɔn fírànkì Gínì"}
+        }
+        GTQ{
+            other{"àwɔn kúɛ́tísààlì Guatimílà"}
+        }
+        GYD{
+            other{"àwɔn dɔ́là Gùyánà"}
+        }
+        HNL{
+            other{"àwɔn Lɛmipírà Ɔ́ńdúrà"}
+        }
+        HRK{
+            other{"àwɔn kúnà Croatian"}
+        }
+        HTG{
+            other{"àwɔn gɔ́dì Àítì"}
+        }
+        HUF{
+            other{"àwɔn fɔ́ríǹtì Hɔ̀ngérí"}
+        }
+        JMD{
+            other{"àwɔn dɔ́là Jàmáíkà"}
+        }
+        KES{
+            other{"àwɔ́n shiili Kenya"}
+        }
+        KMF{
+            other{"àwɔn faransi Komori"}
+        }
+        KYD{
+            other{"àwɔn dɔ́là Erékùsù Cayman"}
+        }
+        LRD{
+            other{"àwɔn dɔla Liberia"}
+        }
+        LYD{
+            other{"àwɔn dínà Líbíyà"}
+        }
+        MAD{
+            other{"àwɔn dírámì Morokò"}
+        }
+        MGA{
+            other{"àwɔn faransi Malagasi"}
+        }
+        MKD{
+            other{"dɛ́nàrì Masidóníà"}
+        }
+        MUR{
+            other{"àwɔn rupi Maritusi"}
+        }
+        MWK{
+            other{"àwɔn kásà Màláwì"}
+        }
+        MXN{
+            other{"àwɔn pɛ́sò Mɛ́síkò"}
+        }
+        MZN{
+            other{"àwɔn mɛ́tíkààlì Mòsáḿbíìkì"}
+        }
+        NAD{
+            other{"àwɔn dɔla Namibíà"}
+        }
+        NIO{
+            other{"àwɔn kɔ̀dóbà Naikarágúà"}
+        }
+        NOK{
+            other{"kìrónà Nɔ́ɔ́wè"}
+        }
+        PAB{
+            other{"àwɔn bálíbóà Pànámà"}
+        }
+        PEN{
+            other{"àwɔn sólì Pèrúù"}
+        }
+        PLN{
+            other{"àwɔn sílɔ̀tì Pɔ́líshì"}
+        }
+        PYG{
+            other{"àwɔn gúáránì Párágúwè"}
+        }
+        RSD{
+            other{"àwɔn dínárì Sàbíà"}
         }
         RUB{
             other{"Owó ruble ti ilɛ̀ Rɔ́shíà"}
         }
+        RWF{
+            other{"àwɔn faransi Ruwanda"}
+        }
+        SCR{
+            other{"àwɔ́n rúpì Sayiselesi"}
+        }
+        SDG{
+            other{"àwɔn pɔ́n-ùn Sùdáànì"}
+        }
+        SEK{
+            other{"Kòrónɔ̀ Súwídìn"}
+        }
+        SHP{
+            other{"àwɔn pɔ́n-un Elena"}
+        }
+        SLL{
+            other{"àwɔn líónì Sira Líonì"}
+        }
+        SOS{
+            other{"àwɔ́n shílè Somali"}
+        }
+        SRD{
+            other{"àwɔn Dɔ́là Súrínámì"}
+        }
+        SSP{
+            other{"àwɔn pɔ́n-un Gúúsù Sùdáànì"}
+        }
+        TND{
+            other{"àwɔn dínà Tunishíà"}
+        }
+        TTD{
+            other{"àwɔn dɔ́là Trinidad àti Tobago"}
+        }
+        TZS{
+            other{"àwɔn shile Tansania"}
+        }
+        UGX{
+            other{"àwɔn shile Uganda"}
+        }
         USD{
             other{"Dɔ́là ti Orílɛ̀-Èdè Amɛ́ríkà"}
         }
+        UYU{
+            other{"àwɔn pɛ́sò Úrúgúwè"}
+        }
+        VES{
+            other{"àwɔn bɔ̀lífà Fɛnɛsuɛ́là"}
+        }
+        XAF{
+            other{"àwɔn firanki àárín Afíríkà"}
+        }
+        XCD{
+            other{"àwɔn dɔ́là Ilà Oòrùn Karíbíà"}
+        }
+        XOF{
+            other{"àwɔn faransì ìwɔ̀-oorùn Afíríkà"}
+        }
         XXX{
             other{"owóníná àìmɔ̀"}
         }
+        ZMW{
+            other{"àwɔn kàwasà Sámbíà"}
+        }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/yue.txt b/icu4c/source/data/curr/yue.txt
index 8ff710a..f21022d 100644
--- a/icu4c/source/data/curr/yue.txt
+++ b/icu4c/source/data/curr/yue.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue{
     Currencies{
         ADP{
@@ -2221,5 +2222,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/yue_CN.txt b/icu4c/source/data/curr/yue_CN.txt
index 26d4356..2a3cc8a 100644
--- a/icu4c/source/data/curr/yue_CN.txt
+++ b/icu4c/source/data/curr/yue_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_CN{
     "%%ALIAS"{"yue_Hans_CN"}
 }
diff --git a/icu4c/source/data/curr/yue_HK.txt b/icu4c/source/data/curr/yue_HK.txt
index 29a7459..7bce3c5 100644
--- a/icu4c/source/data/curr/yue_HK.txt
+++ b/icu4c/source/data/curr/yue_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_HK{
     "%%ALIAS"{"yue_Hant_HK"}
 }
diff --git a/icu4c/source/data/curr/yue_Hans.txt b/icu4c/source/data/curr/yue_Hans.txt
index 9f14e5e..f43c12d 100644
--- a/icu4c/source/data/curr/yue_Hans.txt
+++ b/icu4c/source/data/curr/yue_Hans.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_Hans{
     %%Parent{"root"}
     Currencies{
@@ -2222,5 +2223,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/yue_Hans_CN.txt b/icu4c/source/data/curr/yue_Hans_CN.txt
index 479d125..07edcb8 100644
--- a/icu4c/source/data/curr/yue_Hans_CN.txt
+++ b/icu4c/source/data/curr/yue_Hans_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/yue_Hant.txt b/icu4c/source/data/curr/yue_Hant.txt
index 8f39812..f1fb01c 100644
--- a/icu4c/source/data/curr/yue_Hant.txt
+++ b/icu4c/source/data/curr/yue_Hant.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_Hant{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/yue_Hant_HK.txt b/icu4c/source/data/curr/yue_Hant_HK.txt
index 9adeba7..e2bb01d 100644
--- a/icu4c/source/data/curr/yue_Hant_HK.txt
+++ b/icu4c/source/data/curr/yue_Hant_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/zgh.txt b/icu4c/source/data/curr/zgh.txt
index cf1856b..5ac26b9 100644
--- a/icu4c/source/data/curr/zgh.txt
+++ b/icu4c/source/data/curr/zgh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zgh{
     Currencies{
         AED{
@@ -242,5 +243,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/zh.txt b/icu4c/source/data/curr/zh.txt
index 723f7a2..ba90ae9 100644
--- a/icu4c/source/data/curr/zh.txt
+++ b/icu4c/source/data/curr/zh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh{
     Currencies{
         ADP{
@@ -2174,5 +2175,4 @@
     CurrencyUnitPatterns{
         other{"{0}{1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/zh_CN.txt b/icu4c/source/data/curr/zh_CN.txt
index c915161..0136d26 100644
--- a/icu4c/source/data/curr/zh_CN.txt
+++ b/icu4c/source/data/curr/zh_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_CN{
     "%%ALIAS"{"zh_Hans_CN"}
 }
diff --git a/icu4c/source/data/curr/zh_HK.txt b/icu4c/source/data/curr/zh_HK.txt
index fe72a0e..c34c98f 100644
--- a/icu4c/source/data/curr/zh_HK.txt
+++ b/icu4c/source/data/curr/zh_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_HK{
     "%%ALIAS"{"zh_Hant_HK"}
 }
diff --git a/icu4c/source/data/curr/zh_Hans.txt b/icu4c/source/data/curr/zh_Hans.txt
index 72c418e..58a5386 100644
--- a/icu4c/source/data/curr/zh_Hans.txt
+++ b/icu4c/source/data/curr/zh_Hans.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hans{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/zh_Hans_CN.txt b/icu4c/source/data/curr/zh_Hans_CN.txt
index 70a6a77..333ba54 100644
--- a/icu4c/source/data/curr/zh_Hans_CN.txt
+++ b/icu4c/source/data/curr/zh_Hans_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/zh_Hans_HK.txt b/icu4c/source/data/curr/zh_Hans_HK.txt
index 8d53652..5e7ba05 100644
--- a/icu4c/source/data/curr/zh_Hans_HK.txt
+++ b/icu4c/source/data/curr/zh_Hans_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hans_HK{
     Currencies{
         CNY{
@@ -26,5 +27,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/zh_Hans_MO.txt b/icu4c/source/data/curr/zh_Hans_MO.txt
index ea21099..1756813 100644
--- a/icu4c/source/data/curr/zh_Hans_MO.txt
+++ b/icu4c/source/data/curr/zh_Hans_MO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hans_MO{
     Currencies{
         CNY{
@@ -26,5 +27,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/zh_Hans_SG.txt b/icu4c/source/data/curr/zh_Hans_SG.txt
index ebf2517..262b1d0 100644
--- a/icu4c/source/data/curr/zh_Hans_SG.txt
+++ b/icu4c/source/data/curr/zh_Hans_SG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hans_SG{
     Currencies{
         CNY{
@@ -26,5 +27,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/zh_Hant.txt b/icu4c/source/data/curr/zh_Hant.txt
index d877ba7..c00a3e4 100644
--- a/icu4c/source/data/curr/zh_Hant.txt
+++ b/icu4c/source/data/curr/zh_Hant.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant{
     %%Parent{"root"}
     Currencies{
@@ -1216,6 +1217,7 @@
         TWD{"NT$"}
     }
     Currencies%narrow{
+        AMD{"֏"}
         AOA{"Kz"}
         ARS{"$"}
         AUD{"$"}
@@ -2224,5 +2226,4 @@
     CurrencyUnitPatterns{
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/zh_Hant_HK.txt b/icu4c/source/data/curr/zh_Hant_HK.txt
index 9466975..fdfd007 100644
--- a/icu4c/source/data/curr/zh_Hant_HK.txt
+++ b/icu4c/source/data/curr/zh_Hant_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant_HK{
     Currencies{
         AED{
@@ -468,5 +469,4 @@
             other{"贊比亞克瓦查"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/zh_Hant_MO.txt b/icu4c/source/data/curr/zh_Hant_MO.txt
index 95035fc..ccfb5e4 100644
--- a/icu4c/source/data/curr/zh_Hant_MO.txt
+++ b/icu4c/source/data/curr/zh_Hant_MO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant_MO{
     %%Parent{"zh_Hant_HK"}
     Currencies{
@@ -8,5 +9,4 @@
             "澳門元",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/zh_Hant_TW.txt b/icu4c/source/data/curr/zh_Hant_TW.txt
index b62ad69..b079f20 100644
--- a/icu4c/source/data/curr/zh_Hant_TW.txt
+++ b/icu4c/source/data/curr/zh_Hant_TW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/curr/zh_MO.txt b/icu4c/source/data/curr/zh_MO.txt
index 6565bf7..c6b2148 100644
--- a/icu4c/source/data/curr/zh_MO.txt
+++ b/icu4c/source/data/curr/zh_MO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_MO{
     "%%ALIAS"{"zh_Hant_MO"}
 }
diff --git a/icu4c/source/data/curr/zh_SG.txt b/icu4c/source/data/curr/zh_SG.txt
index bf27773..14136c3 100644
--- a/icu4c/source/data/curr/zh_SG.txt
+++ b/icu4c/source/data/curr/zh_SG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_SG{
     "%%ALIAS"{"zh_Hans_SG"}
 }
diff --git a/icu4c/source/data/curr/zh_TW.txt b/icu4c/source/data/curr/zh_TW.txt
index 9372c50..c54ccbf 100644
--- a/icu4c/source/data/curr/zh_TW.txt
+++ b/icu4c/source/data/curr/zh_TW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_TW{
     "%%ALIAS"{"zh_Hant_TW"}
 }
diff --git a/icu4c/source/data/curr/zu.txt b/icu4c/source/data/curr/zu.txt
index 33039e7..422bf52 100644
--- a/icu4c/source/data/curr/zu.txt
+++ b/icu4c/source/data/curr/zu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zu{
     Currencies{
         AED{
@@ -122,6 +123,10 @@
             "CLP",
             "i-Chilean Peso",
         }
+        CNH{
+            "CNH",
+            "i-CNH",
+        }
         CNY{
             "CN¥",
             "i-Chinese Yuan",
@@ -1400,5 +1405,4 @@
         one{"{0} {1}"}
         other{"{0} {1}"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/icu-coll-deprecates.xml b/icu4c/source/data/icu-coll-deprecates.xml
deleted file mode 100644
index 09efac2..0000000
--- a/icu4c/source/data/icu-coll-deprecates.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<!--
-/*
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*******************************************************************************
-* Copyright (C) 2015, International Business Machines Corporation and         *
-* others. All Rights Reserved.                                                *
-*******************************************************************************
-*/
--->
-<deprecates>
-	<alias from="ars" to="ar"/>
-	<alias from="de__PHONEBOOK" to="de"  rbpath="/collations/default" value="phonebook"/>
-	<alias from="es__TRADITIONAL" to="es" rbpath="/collations/default" value="traditional"/>
-	<alias from="in" to="id" />
-	<alias from="in_ID" to="id_ID" />
-	<alias from="iw" to="he" />
-	<alias from="iw_IL" to="he_IL" />
-	<alias from="mo" to="ro" />
-	<alias from="no" to="nb" />
-	<alias from="no_NO" to="nb_NO" />
-	<alias from="pa_IN" to="pa_Guru_IN" />
-	<alias from="sh" to="sr_Latn" />
-	<alias from="sh_BA" to="sr_Latn_BA" />
-	<alias from="sh_CS" to="sr_Latn_RS" />
-	<alias from="sh_YU" to="sr_Latn_RS" />
-	<alias from="sr_BA" to="sr_Cyrl_BA" />
-	<alias from="sr_ME" to="sr_Cyrl_ME" />
-	<alias from="sr_RS" to="sr_Cyrl_RS" />
-	<alias from="yue" to="zh_Hant" />
-	<alias from="yue_CN" to="zh_Hans" />
-	<alias from="yue_Hans" to="zh_Hans" />
-	<alias from="zh_CN" to="zh_Hans_CN" />
-	<alias from="zh_SG" to="zh_Hans_SG" />
-	<alias from="zh_HK" to="zh_Hant_HK" />
-	<alias from="zh_MO" to="zh_Hant_MO" />
-	<alias from="zh_TW" to="zh_Hant_TW" />
-	<emptyLocale locale="de_" />
-	<emptyLocale locale="es_" />
-	<emptyLocale locale="pa_Guru" />
-	<emptyLocale locale="sr_Cyrl" />
-	<emptyLocale locale="zh_Hans" />
-</deprecates>
diff --git a/icu4c/source/data/icu-config.xml b/icu4c/source/data/icu-config.xml
deleted file mode 100644
index c323dab..0000000
--- a/icu4c/source/data/icu-config.xml
+++ /dev/null
@@ -1,801 +0,0 @@
-<!--
-/*
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*******************************************************************************
-* Copyright (C) 2005-2016, International Business Machines Corporation and    *
-* others. All Rights Reserved.	                                         *
-*******************************************************************************
-*/
--->
-<config type="icu-config">
-	<!-- This is used by CLDRBuild.java and CLDRConverterTool.java in org/unicode/cldr/ant/ -->
-	<locales>
-		<include locales="af"/>
-		<include locales="af_NA"/>
-		<include locales="af_ZA"/>
-		<include locales="agq"/>
-		<include locales="agq_CM"/>
-		<include locales="ak"/>
-		<include locales="ak_GH"/>
-		<include locales="am"/>
-		<include locales="am_ET"/>
-		<include locales="ar"/>
-		<include locales="ar_001"/>
-		<include locales="ar_AE"/>
-		<include locales="ar_BH"/>
-		<include locales="ar_DJ"/>
-		<include locales="ar_DZ"/>
-		<include locales="ar_EG"/>
-		<include locales="ar_EH"/>
-		<include locales="ar_ER"/>
-		<include locales="ar_IL"/>
-		<include locales="ar_IQ"/>
-		<include locales="ar_JO"/>
-		<include locales="ar_KM"/>
-		<include locales="ar_KW"/>
-		<include locales="ar_LB"/>
-		<include locales="ar_LY"/>
-		<include locales="ar_MA"/>
-		<include locales="ar_MR"/>
-		<include locales="ar_OM"/>
-		<include locales="ar_PS"/>
-		<include locales="ar_QA"/>
-		<include locales="ar_SA"/>
-		<include locales="ar_SD"/>
-		<include locales="ar_SO"/>
-		<include locales="ar_SS"/>
-		<include locales="ar_SY"/>
-		<include locales="ar_TD"/>
-		<include locales="ar_TN"/>
-		<include locales="ar_XB"/>
-		<include locales="ar_YE"/>
-		<include locales="as"/>
-		<include locales="as_IN"/>
-		<include locales="asa"/>
-		<include locales="asa_TZ"/>
-		<include locales="ast"/>
-		<include locales="ast_ES"/>
-		<include locales="az"/>
-		<include locales="az_Cyrl"/>
-		<include locales="az_Cyrl_AZ"/>
-		<include locales="az_Latn"/>
-		<include locales="az_Latn_AZ"/>
-		<include locales="bas"/>
-		<include locales="bas_CM"/>
-		<include locales="be"/>
-		<include locales="be_BY"/>
-		<include locales="bem"/>
-		<include locales="bem_ZM"/>
-		<include locales="bez"/>
-		<include locales="bez_TZ"/>
-		<include locales="bg"/>
-		<include locales="bg_BG"/>
-		<include locales="bm"/>
-		<include locales="bm_ML"/>
-		<include locales="bn"/>
-		<include locales="bn_BD"/>
-		<include locales="bn_IN"/>
-		<include locales="bo"/>
-		<include locales="bo_CN"/>
-		<include locales="bo_IN"/>
-		<include locales="br"/>
-		<include locales="br_FR"/>
-		<include locales="brx"/>
-		<include locales="brx_IN"/>
-		<include locales="bs"/>
-		<include locales="bs_Cyrl"/>
-		<include locales="bs_Cyrl_BA"/>
-		<include locales="bs_Latn"/>
-		<include locales="bs_Latn_BA"/>
-		<include locales="ca"/>
-		<include locales="ca_AD"/>
-		<include locales="ca_ES"/>
-		<include locales="ca_ES_VALENCIA"/>
-		<include locales="ca_FR"/>
-		<include locales="ca_IT"/>
-		<include locales="ccp"/>
-		<include locales="ccp_BD"/>
-		<include locales="ccp_IN"/>
-		<include locales="ce"/>
-		<include locales="ce_RU"/>
-		<include locales="ceb"/>
-		<include locales="ceb_PH"/>
-		<include locales="cgg"/>
-		<include locales="cgg_UG"/>
-		<include locales="chr"/>
-		<include locales="chr_US"/>
-		<include locales="ckb"/>
-		<include locales="ckb_IQ"/>
-		<include locales="ckb_IR"/>
-		<include locales="cs"/>
-		<include locales="cs_CZ"/>
-		<include locales="cy"/>
-		<include locales="cy_GB"/>
-		<include locales="da"/>
-		<include locales="da_DK"/>
-		<include locales="da_GL"/>
-		<include locales="dav"/>
-		<include locales="dav_KE"/>
-		<include locales="de"/>
-		<include locales="de_AT"/>
-		<include locales="de_BE"/>
-		<include locales="de_CH"/>
-		<include locales="de_DE"/>
-		<include locales="de_IT"/>
-		<include locales="de_LI"/>
-		<include locales="de_LU"/>
-		<include locales="dje"/>
-		<include locales="dje_NE"/>
-		<include locales="dsb"/>
-		<include locales="dsb_DE"/>
-		<include locales="dua"/>
-		<include locales="dua_CM"/>
-		<include locales="dyo"/>
-		<include locales="dyo_SN"/>
-		<include locales="dz"/>
-		<include locales="dz_BT"/>
-		<include locales="ebu"/>
-		<include locales="ebu_KE"/>
-		<include locales="ee"/>
-		<include locales="ee_GH"/>
-		<include locales="ee_TG"/>
-		<include locales="el"/>
-		<include locales="el_CY"/>
-		<include locales="el_GR"/>
-		<include locales="en"/>
-		<include locales="en_001"/>
-		<include locales="en_150"/>
-		<include locales="en_AE"/>
-		<include locales="en_AG"/>
-		<include locales="en_AI"/>
-		<include locales="en_AS"/>
-		<include locales="en_AT"/>
-		<include locales="en_AU"/>
-		<include locales="en_BB"/>
-		<include locales="en_BE"/>
-		<include locales="en_BI"/>
-		<include locales="en_BM"/>
-		<include locales="en_BS"/>
-		<include locales="en_BW"/>
-		<include locales="en_BZ"/>
-		<include locales="en_CA"/>
-		<include locales="en_CC"/>
-		<include locales="en_CH"/>
-		<include locales="en_CK"/>
-		<include locales="en_CM"/>
-		<include locales="en_CX"/>
-		<include locales="en_CY"/>
-		<include locales="en_DE"/>
-		<include locales="en_DG"/>
-		<include locales="en_DK"/>
-		<include locales="en_DM"/>
-		<include locales="en_ER"/>
-		<include locales="en_FI"/>
-		<include locales="en_FJ"/>
-		<include locales="en_FK"/>
-		<include locales="en_FM"/>
-		<include locales="en_GB"/>
-		<include locales="en_GD"/>
-		<include locales="en_GG"/>
-		<include locales="en_GH"/>
-		<include locales="en_GI"/>
-		<include locales="en_GM"/>
-		<include locales="en_GU"/>
-		<include locales="en_GY"/>
-		<include locales="en_HK"/>
-		<include locales="en_IE"/>
-		<include locales="en_IL"/>
-		<include locales="en_IM"/>
-		<include locales="en_IN"/>
-		<include locales="en_IO"/>
-		<include locales="en_JE"/>
-		<include locales="en_JM"/>
-		<include locales="en_KE"/>
-		<include locales="en_KI"/>
-		<include locales="en_KN"/>
-		<include locales="en_KY"/>
-		<include locales="en_LC"/>
-		<include locales="en_LR"/>
-		<include locales="en_LS"/>
-		<include locales="en_MG"/>
-		<include locales="en_MH"/>
-		<include locales="en_MO"/>
-		<include locales="en_MP"/>
-		<include locales="en_MS"/>
-		<include locales="en_MT"/>
-		<include locales="en_MU"/>
-		<include locales="en_MW"/>
-		<include locales="en_MY"/>
-		<include locales="en_NA"/>
-		<include locales="en_NF"/>
-		<include locales="en_NG"/>
-		<include locales="en_NL"/>
-		<include locales="en_NR"/>
-		<include locales="en_NU"/>
-		<include locales="en_NZ"/>
-		<include locales="en_PG"/>
-		<include locales="en_PH"/>
-		<include locales="en_PK"/>
-		<include locales="en_PN"/>
-		<include locales="en_PR"/>
-		<include locales="en_PW"/>
-		<include locales="en_RW"/>
-		<include locales="en_SB"/>
-		<include locales="en_SC"/>
-		<include locales="en_SD"/>
-		<include locales="en_SE"/>
-		<include locales="en_SG"/>
-		<include locales="en_SH"/>
-		<include locales="en_SI"/>
-		<include locales="en_SL"/>
-		<include locales="en_SS"/>
-		<include locales="en_SX"/>
-		<include locales="en_SZ"/>
-		<include locales="en_TC"/>
-		<include locales="en_TK"/>
-		<include locales="en_TO"/>
-		<include locales="en_TT"/>
-		<include locales="en_TV"/>
-		<include locales="en_TZ"/>
-		<include locales="en_UG"/>
-		<include locales="en_UM"/>
-		<include locales="en_US"/>
-		<include locales="en_US_POSIX"/>
-		<include locales="en_VC"/>
-		<include locales="en_VG"/>
-		<include locales="en_VI"/>
-		<include locales="en_VU"/>
-		<include locales="en_WS"/>
-		<include locales="en_XA"/>
-		<include locales="en_ZA"/>
-		<include locales="en_ZM"/>
-		<include locales="en_ZW"/>
-		<include locales="eo"/>
-		<include locales="eo_001"/>
-		<include locales="es"/>
-		<include locales="es_003"/>
-		<include locales="es_419"/>
-		<include locales="es_AR"/>
-		<include locales="es_BO"/>
-		<include locales="es_BR"/>
-		<include locales="es_BZ"/>
-		<include locales="es_CL"/>
-		<include locales="es_CO"/>
-		<include locales="es_CR"/>
-		<include locales="es_CU"/>
-		<include locales="es_DO"/>
-		<include locales="es_EA"/>
-		<include locales="es_EC"/>
-		<include locales="es_ES"/>
-		<include locales="es_GQ"/>
-		<include locales="es_GT"/>
-		<include locales="es_HN"/>
-		<include locales="es_IC"/>
-		<include locales="es_MX"/>
-		<include locales="es_NI"/>
-		<include locales="es_PA"/>
-		<include locales="es_PE"/>
-		<include locales="es_PH"/>
-		<include locales="es_PR"/>
-		<include locales="es_PY"/>
-		<include locales="es_SV"/>
-		<include locales="es_US"/>
-		<include locales="es_UY"/>
-		<include locales="es_VE"/>
-		<include locales="et"/>
-		<include locales="et_EE"/>
-		<include locales="eu"/>
-		<include locales="eu_ES"/>
-		<include locales="ewo"/>
-		<include locales="ewo_CM"/>
-		<include locales="fa"/>
-		<include locales="fa_AF"/>
-		<include locales="fa_IR"/>
-		<include locales="ff"/>
-		<include locales="ff_Adlm"/>
-		<include locales="ff_Adlm_BF"/>
-		<include locales="ff_Adlm_CM"/>
-		<include locales="ff_Adlm_GH"/>
-		<include locales="ff_Adlm_GM"/>
-		<include locales="ff_Adlm_GN"/>
-		<include locales="ff_Adlm_GW"/>
-		<include locales="ff_Adlm_LR"/>
-		<include locales="ff_Adlm_MR"/>
-		<include locales="ff_Adlm_NE"/>
-		<include locales="ff_Adlm_NG"/>
-		<include locales="ff_Adlm_SL"/>
-		<include locales="ff_Adlm_SN"/>
-		<include locales="ff_Latn"/>
-		<include locales="ff_Latn_BF"/>
-		<include locales="ff_Latn_CM"/>
-		<include locales="ff_Latn_GH"/>
-		<include locales="ff_Latn_GM"/>
-		<include locales="ff_Latn_GN"/>
-		<include locales="ff_Latn_GW"/>
-		<include locales="ff_Latn_LR"/>
-		<include locales="ff_Latn_MR"/>
-		<include locales="ff_Latn_NE"/>
-		<include locales="ff_Latn_NG"/>
-		<include locales="ff_Latn_SL"/>
-		<include locales="ff_Latn_SN"/>
-		<include locales="fi"/>
-		<include locales="fi_FI"/>
-		<include locales="fil"/>
-		<include locales="fil_PH"/>
-		<include locales="fo"/>
-		<include locales="fo_DK"/>
-		<include locales="fo_FO"/>
-		<include locales="fr"/>
-		<include locales="fr_BE"/>
-		<include locales="fr_BF"/>
-		<include locales="fr_BI"/>
-		<include locales="fr_BJ"/>
-		<include locales="fr_BL"/>
-		<include locales="fr_CA"/>
-		<include locales="fr_CD"/>
-		<include locales="fr_CF"/>
-		<include locales="fr_CG"/>
-		<include locales="fr_CH"/>
-		<include locales="fr_CI"/>
-		<include locales="fr_CM"/>
-		<include locales="fr_DJ"/>
-		<include locales="fr_DZ"/>
-		<include locales="fr_FR"/>
-		<include locales="fr_GA"/>
-		<include locales="fr_GF"/>
-		<include locales="fr_GN"/>
-		<include locales="fr_GP"/>
-		<include locales="fr_GQ"/>
-		<include locales="fr_HT"/>
-		<include locales="fr_KM"/>
-		<include locales="fr_LU"/>
-		<include locales="fr_MA"/>
-		<include locales="fr_MC"/>
-		<include locales="fr_MF"/>
-		<include locales="fr_MG"/>
-		<include locales="fr_ML"/>
-		<include locales="fr_MQ"/>
-		<include locales="fr_MR"/>
-		<include locales="fr_MU"/>
-		<include locales="fr_NC"/>
-		<include locales="fr_NE"/>
-		<include locales="fr_PF"/>
-		<include locales="fr_PM"/>
-		<include locales="fr_RE"/>
-		<include locales="fr_RW"/>
-		<include locales="fr_SC"/>
-		<include locales="fr_SN"/>
-		<include locales="fr_SY"/>
-		<include locales="fr_TD"/>
-		<include locales="fr_TG"/>
-		<include locales="fr_TN"/>
-		<include locales="fr_VU"/>
-		<include locales="fr_WF"/>
-		<include locales="fr_YT"/>
-		<include locales="fur"/>
-		<include locales="fur_IT"/>
-		<include locales="fy"/>
-		<include locales="fy_NL"/>
-		<include locales="ga"/>
-		<include locales="ga_GB"/>
-		<include locales="ga_IE"/>
-		<include locales="gd"/>
-		<include locales="gd_GB"/>
-		<include locales="gl"/>
-		<include locales="gl_ES"/>
-		<include locales="gsw"/>
-		<include locales="gsw_CH"/>
-		<include locales="gsw_FR"/>
-		<include locales="gsw_LI"/>
-		<include locales="gu"/>
-		<include locales="gu_IN"/>
-		<include locales="guz"/>
-		<include locales="guz_KE"/>
-		<include locales="gv"/>
-		<include locales="gv_IM"/>
-		<include locales="ha"/>
-		<include locales="ha_GH"/>
-		<include locales="ha_NE"/>
-		<include locales="ha_NG"/>
-		<include locales="haw"/>
-		<include locales="haw_US"/>
-		<include locales="he"/>
-		<include locales="he_IL"/>
-		<include locales="hi"/>
-		<include locales="hi_IN"/>
-		<include locales="hr"/>
-		<include locales="hr_BA"/>
-		<include locales="hr_HR"/>
-		<include locales="hsb"/>
-		<include locales="hsb_DE"/>
-		<include locales="hu"/>
-		<include locales="hu_HU"/>
-		<include locales="hy"/>
-		<include locales="hy_AM"/>
-		<include locales="ia"/>
-		<include locales="ia_001"/>
-		<include locales="id"/>
-		<include locales="id_ID"/>
-		<include locales="ig"/>
-		<include locales="ig_NG"/>
-		<include locales="ii"/>
-		<include locales="ii_CN"/>
-		<include locales="is"/>
-		<include locales="is_IS"/>
-		<include locales="it"/>
-		<include locales="it_CH"/>
-		<include locales="it_IT"/>
-		<include locales="it_SM"/>
-		<include locales="it_VA"/>
-		<include locales="ja"/>
-		<include locales="ja_JP"/>
-		<include locales="jgo"/>
-		<include locales="jgo_CM"/>
-		<include locales="jmc"/>
-		<include locales="jmc_TZ"/>
-		<include locales="jv"/>
-		<include locales="jv_ID"/>
-		<include locales="ka"/>
-		<include locales="ka_GE"/>
-		<include locales="kab"/>
-		<include locales="kab_DZ"/>
-		<include locales="kam"/>
-		<include locales="kam_KE"/>
-		<include locales="kde"/>
-		<include locales="kde_TZ"/>
-		<include locales="kea"/>
-		<include locales="kea_CV"/>
-		<include locales="khq"/>
-		<include locales="khq_ML"/>
-		<include locales="ki"/>
-		<include locales="ki_KE"/>
-		<include locales="kk"/>
-		<include locales="kk_KZ"/>
-		<include locales="kkj"/>
-		<include locales="kkj_CM"/>
-		<include locales="kl"/>
-		<include locales="kl_GL"/>
-		<include locales="kln"/>
-		<include locales="kln_KE"/>
-		<include locales="km"/>
-		<include locales="km_KH"/>
-		<include locales="kn"/>
-		<include locales="kn_IN"/>
-		<include locales="ko"/>
-		<include locales="ko_KP"/>
-		<include locales="ko_KR"/>
-		<include locales="kok"/>
-		<include locales="kok_IN"/>
-		<include locales="ks"/>
-		<include locales="ks_Arab"/>
-		<include locales="ks_Arab_IN"/>
-		<include locales="ksb"/>
-		<include locales="ksb_TZ"/>
-		<include locales="ksf"/>
-		<include locales="ksf_CM"/>
-		<include locales="ksh"/>
-		<include locales="ksh_DE"/>
-		<include locales="ku"/>
-		<include locales="ku_TR"/>
-		<include locales="kw"/>
-		<include locales="kw_GB"/>
-		<include locales="ky"/>
-		<include locales="ky_KG"/>
-		<include locales="lag"/>
-		<include locales="lag_TZ"/>
-		<include locales="lb"/>
-		<include locales="lb_LU"/>
-		<include locales="lg"/>
-		<include locales="lg_UG"/>
-		<include locales="lkt"/>
-		<include locales="lkt_US"/>
-		<include locales="ln"/>
-		<include locales="ln_AO"/>
-		<include locales="ln_CD"/>
-		<include locales="ln_CF"/>
-		<include locales="ln_CG"/>
-		<include locales="lo"/>
-		<include locales="lo_LA"/>
-		<include locales="lrc"/>
-		<include locales="lrc_IQ"/>
-		<include locales="lrc_IR"/>
-		<include locales="lt"/>
-		<include locales="lt_LT"/>
-		<include locales="lu"/>
-		<include locales="lu_CD"/>
-		<include locales="luo"/>
-		<include locales="luo_KE"/>
-		<include locales="luy"/>
-		<include locales="luy_KE"/>
-		<include locales="lv"/>
-		<include locales="lv_LV"/>
-		<include locales="mai"/>
-		<include locales="mai_IN"/>
-		<include locales="mas"/>
-		<include locales="mas_KE"/>
-		<include locales="mas_TZ"/>
-		<include locales="mer"/>
-		<include locales="mer_KE"/>
-		<include locales="mfe"/>
-		<include locales="mfe_MU"/>
-		<include locales="mg"/>
-		<include locales="mg_MG"/>
-		<include locales="mgh"/>
-		<include locales="mgh_MZ"/>
-		<include locales="mgo"/>
-		<include locales="mgo_CM"/>
-		<include locales="mi"/>
-		<include locales="mi_NZ"/>
-		<include locales="mk"/>
-		<include locales="mk_MK"/>
-		<include locales="ml"/>
-		<include locales="ml_IN"/>
-		<include locales="mn"/>
-		<include locales="mn_MN"/>
-		<include locales="mni"/>
-		<include locales="mni_Beng"/>
-		<include locales="mni_Beng_IN"/>
-		<include locales="mr"/>
-		<include locales="mr_IN"/>
-		<include locales="ms"/>
-		<include locales="ms_BN"/>
-		<include locales="ms_MY"/>
-		<include locales="ms_SG"/>
-		<include locales="mt"/>
-		<include locales="mt_MT"/>
-		<include locales="mua"/>
-		<include locales="mua_CM"/>
-		<include locales="my"/>
-		<include locales="my_MM"/>
-		<include locales="mzn"/>
-		<include locales="mzn_IR"/>
-		<include locales="naq"/>
-		<include locales="naq_NA"/>
-		<include locales="nb"/>
-		<include locales="nb_NO"/>
-		<include locales="nb_SJ"/>
-		<include locales="nd"/>
-		<include locales="nd_ZW"/>
-		<include locales="nds"/>
-		<include locales="nds_DE"/>
-		<include locales="nds_NL"/>
-		<include locales="ne"/>
-		<include locales="ne_IN"/>
-		<include locales="ne_NP"/>
-		<include locales="nl"/>
-		<include locales="nl_AW"/>
-		<include locales="nl_BE"/>
-		<include locales="nl_BQ"/>
-		<include locales="nl_CW"/>
-		<include locales="nl_NL"/>
-		<include locales="nl_SR"/>
-		<include locales="nl_SX"/>
-		<include locales="nmg"/>
-		<include locales="nmg_CM"/>
-		<include locales="nn"/>
-		<include locales="nn_NO"/>
-		<include locales="nnh"/>
-		<include locales="nnh_CM"/>
-		<include locales="nus"/>
-		<include locales="nus_SS"/>
-		<include locales="nyn"/>
-		<include locales="nyn_UG"/>
-		<include locales="om"/>
-		<include locales="om_ET"/>
-		<include locales="om_KE"/>
-		<include locales="or"/>
-		<include locales="or_IN"/>
-		<include locales="os"/>
-		<include locales="os_GE"/>
-		<include locales="os_RU"/>
-		<include locales="pa"/>
-		<include locales="pa_Arab"/>
-		<include locales="pa_Arab_PK"/>
-		<include locales="pa_Guru"/>
-		<include locales="pa_Guru_IN"/>
-		<include locales="pcm"/>
-		<include locales="pcm_NG"/>
-		<include locales="pl"/>
-		<include locales="pl_PL"/>
-		<include locales="ps"/>
-		<include locales="ps_AF"/>
-		<include locales="ps_PK"/>
-		<include locales="pt"/>
-		<include locales="pt_AO"/>
-		<include locales="pt_BR"/>
-		<include locales="pt_CH"/>
-		<include locales="pt_CV"/>
-		<include locales="pt_GQ"/>
-		<include locales="pt_GW"/>
-		<include locales="pt_LU"/>
-		<include locales="pt_MO"/>
-		<include locales="pt_MZ"/>
-		<include locales="pt_PT"/>
-		<include locales="pt_ST"/>
-		<include locales="pt_TL"/>
-		<include locales="qu"/>
-		<include locales="qu_BO"/>
-		<include locales="qu_EC"/>
-		<include locales="qu_PE"/>
-		<include locales="rm"/>
-		<include locales="rm_CH"/>
-		<include locales="rn"/>
-		<include locales="rn_BI"/>
-		<include locales="ro"/>
-		<include locales="ro_MD"/>
-		<include locales="ro_RO"/>
-		<include locales="rof"/>
-		<include locales="rof_TZ"/>
-		<include locales="root"/>
-		<include locales="ru"/>
-		<include locales="ru_BY"/>
-		<include locales="ru_KG"/>
-		<include locales="ru_KZ"/>
-		<include locales="ru_MD"/>
-		<include locales="ru_RU"/>
-		<include locales="ru_UA"/>
-		<include locales="rw"/>
-		<include locales="rw_RW"/>
-		<include locales="rwk"/>
-		<include locales="rwk_TZ"/>
-		<include locales="sah"/>
-		<include locales="sah_RU"/>
-		<include locales="saq"/>
-		<include locales="saq_KE"/>
-		<include locales="sat"/>
-		<include locales="sat_Olck"/>
-		<include locales="sat_Olck_IN"/>
-		<include locales="sbp"/>
-		<include locales="sbp_TZ"/>
-		<include locales="sd"/>
-		<include locales="sd_Arab"/>
-		<include locales="sd_Arab_PK"/>
-		<include locales="sd_Deva"/>
-		<include locales="sd_Deva_IN"/>
-		<include locales="se"/>
-		<include locales="se_FI"/>
-		<include locales="se_NO"/>
-		<include locales="se_SE"/>
-		<include locales="seh"/>
-		<include locales="seh_MZ"/>
-		<include locales="ses"/>
-		<include locales="ses_ML"/>
-		<include locales="sg"/>
-		<include locales="sg_CF"/>
-		<include locales="shi"/>
-		<include locales="shi_Latn"/>
-		<include locales="shi_Latn_MA"/>
-		<include locales="shi_Tfng"/>
-		<include locales="shi_Tfng_MA"/>
-		<include locales="si"/>
-		<include locales="si_LK"/>
-		<include locales="sk"/>
-		<include locales="sk_SK"/>
-		<include locales="sl"/>
-		<include locales="sl_SI"/>
-		<include locales="smn"/>
-		<include locales="smn_FI"/>
-		<include locales="sn"/>
-		<include locales="sn_ZW"/>
-		<include locales="so"/>
-		<include locales="so_DJ"/>
-		<include locales="so_ET"/>
-		<include locales="so_KE"/>
-		<include locales="so_SO"/>
-		<include locales="sq"/>
-		<include locales="sq_AL"/>
-		<include locales="sq_MK"/>
-		<include locales="sq_XK"/>
-		<include locales="sr"/>
-		<include locales="sr_Cyrl"/>
-		<include locales="sr_Cyrl_BA"/>
-		<include locales="sr_Cyrl_ME"/>
-		<include locales="sr_Cyrl_RS"/>
-		<include locales="sr_Cyrl_XK"/>
-		<include locales="sr_Latn"/>
-		<include locales="sr_Latn_BA"/>
-		<include locales="sr_Latn_ME"/>
-		<include locales="sr_Latn_RS"/>
-		<include locales="sr_Latn_XK"/>
-		<include locales="su"/>
-		<include locales="su_Latn"/>
-		<include locales="su_Latn_ID"/>
-		<include locales="sv"/>
-		<include locales="sv_AX"/>
-		<include locales="sv_FI"/>
-		<include locales="sv_SE"/>
-		<include locales="sw"/>
-		<include locales="sw_CD"/>
-		<include locales="sw_KE"/>
-		<include locales="sw_TZ"/>
-		<include locales="sw_UG"/>
-		<include locales="ta"/>
-		<include locales="ta_IN"/>
-		<include locales="ta_LK"/>
-		<include locales="ta_MY"/>
-		<include locales="ta_SG"/>
-		<include locales="te"/>
-		<include locales="te_IN"/>
-		<include locales="teo"/>
-		<include locales="teo_KE"/>
-		<include locales="teo_UG"/>
-		<include locales="tg"/>
-		<include locales="tg_TJ"/>
-		<include locales="th"/>
-		<include locales="th_TH"/>
-		<include locales="ti"/>
-		<include locales="ti_ER"/>
-		<include locales="ti_ET"/>
-		<include locales="tk"/>
-		<include locales="tk_TM"/>
-		<include locales="to"/>
-		<include locales="to_TO"/>
-		<include locales="tr"/>
-		<include locales="tr_CY"/>
-		<include locales="tr_TR"/>
-		<include locales="tt"/>
-		<include locales="tt_RU"/>
-		<include locales="twq"/>
-		<include locales="twq_NE"/>
-		<include locales="tzm"/>
-		<include locales="tzm_MA"/>
-		<include locales="ug"/>
-		<include locales="ug_CN"/>
-		<include locales="uk"/>
-		<include locales="uk_UA"/>
-		<include locales="ur"/>
-		<include locales="ur_IN"/>
-		<include locales="ur_PK"/>
-		<include locales="uz"/>
-		<include locales="uz_Arab"/>
-		<include locales="uz_Arab_AF"/>
-		<include locales="uz_Cyrl"/>
-		<include locales="uz_Cyrl_UZ"/>
-		<include locales="uz_Latn"/>
-		<include locales="uz_Latn_UZ"/>
-		<include locales="vai"/>
-		<include locales="vai_Latn"/>
-		<include locales="vai_Latn_LR"/>
-		<include locales="vai_Vaii"/>
-		<include locales="vai_Vaii_LR"/>
-		<include locales="vi"/>
-		<include locales="vi_VN"/>
-		<include locales="vun"/>
-		<include locales="vun_TZ"/>
-		<include locales="wae"/>
-		<include locales="wae_CH"/>
-		<include locales="wo"/>
-		<include locales="wo_SN"/>
-		<include locales="xh"/>
-		<include locales="xh_ZA"/>
-		<include locales="xog"/>
-		<include locales="xog_UG"/>
-		<include locales="yav"/>
-		<include locales="yav_CM"/>
-		<include locales="yi"/>
-		<include locales="yi_001"/>
-		<include locales="yo"/>
-		<include locales="yo_BJ"/>
-		<include locales="yo_NG"/>
-		<include locales="yue"/>
-		<include locales="yue_Hans"/>
-		<include locales="yue_Hans_CN"/>
-		<include locales="yue_Hant"/>
-		<include locales="yue_Hant_HK"/>
-		<include locales="zgh"/>
-		<include locales="zgh_MA"/>
-		<include locales="zh"/>
-		<include locales="zh_Hans"/>
-		<include locales="zh_Hans_CN"/>
-		<include locales="zh_Hans_HK"/>
-		<include locales="zh_Hans_MO"/>
-		<include locales="zh_Hans_SG"/>
-		<include locales="zh_Hant"/>
-		<include locales="zh_Hant_HK"/>
-		<include locales="zh_Hant_MO"/>
-		<include locales="zh_Hant_TW"/>
-		<include locales="zu"/>
-		<include locales="zu_ZA"/>
-	</locales>
-</config>
diff --git a/icu4c/source/data/icu-locale-deprecates.xml b/icu4c/source/data/icu-locale-deprecates.xml
deleted file mode 100644
index b702dba..0000000
--- a/icu4c/source/data/icu-locale-deprecates.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<!--
-/*
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*******************************************************************************
-* Copyright (C) 2009-2015, International Business Machines Corporation and    *
-* others. All Rights Reserved.                                                *
-*******************************************************************************
-*/
--->
-<deprecates>
-    <alias from="ars" to="ar_SA"/>
-    <alias from="az_AZ" to="az_Latn_AZ"/>
-    <alias from="bs_BA" to="bs_Latn_BA" />
-    <alias from="en_NH" to="en_VU"/>
-    <alias from="en_RH" to="en_ZW"/>
-    <alias from="ff_CM" to="ff_Latn_CM"/>
-    <alias from="ff_GN" to="ff_Latn_GN"/>
-    <alias from="ff_MR" to="ff_Latn_MR"/>
-    <alias from="ff_SN" to="ff_Latn_SN"/>
-    <alias from="in" to="id"/>
-    <alias from="in_ID" to="id_ID"/>
-    <alias from="iw" to="he"/>
-    <alias from="iw_IL" to="he_IL"/>
-    <alias from="ja_JP_TRADITIONAL" to="ja_JP" rbpath="/calendar/default" value="japanese"/>
-    <alias from="ks_IN" to="ks_Arab_IN"/>
-    <alias from="mni_IN" to="mni_Beng_IN"/>
-    <alias from="mo" to="ro"/>
-    <alias from="no" to="nb"/>
-    <alias from="no_NO" to="nb_NO"/>
-    <alias from="no_NO_NY" to="nn_NO"/>
-    <alias from="pa_IN" to="pa_Guru_IN"/>
-    <alias from="pa_PK" to="pa_Arab_PK"/>
-    <alias from="sat_IN" to="sat_Olck_IN"/>
-    <alias from="sd_PK" to="sd_Arab_PK"/>
-    <alias from="sh" to="sr_Latn"/>
-    <alias from="sh_BA" to="sr_Latn_BA"/>
-    <alias from="sh_CS" to="sr_Latn_RS"/>
-    <alias from="sh_YU" to="sr_Latn_RS"/>
-    <alias from="shi_MA" to="shi_Tfng_MA"/>
-    <alias from="sr_BA" to="sr_Cyrl_BA"/>
-    <alias from="sr_CS" to="sr_Cyrl_RS"/>
-    <alias from="sr_ME" to="sr_Latn_ME"/>
-    <alias from="sr_RS" to="sr_Cyrl_RS"/>
-    <alias from="sr_XK" to="sr_Cyrl_XK"/>
-    <alias from="sr_YU" to="sr_Cyrl_RS"/>
-    <alias from="sr_Cyrl_YU" to="sr_Cyrl_RS"/>
-    <alias from="sr_Cyrl_CS" to="sr_Cyrl_RS"/>
-    <alias from="sr_Latn_YU" to="sr_Latn_RS"/>
-    <alias from="sr_Latn_CS" to="sr_Latn_RS"/>
-    <alias from="su_ID" to="su_Latn_ID"/>
-    <alias from="th_TH_TRADITIONAL" to="th_TH" rbpath="/calendar/default" value="buddhist"/>
-    <alias from="tl" to="fil"/>
-    <alias from="tl_PH" to="fil_PH"/>
-    <alias from="uz_AF" to="uz_Arab_AF"/>
-    <alias from="uz_UZ" to="uz_Latn_UZ"/>
-    <alias from="vai_LR" to="vai_Vaii_LR"/>
-    <alias from="yue_CN" to="yue_Hans_CN"/>
-    <alias from="yue_HK" to="yue_Hant_HK"/>
-    <alias from="zh_CN" to="zh_Hans_CN"/>
-    <alias from="zh_HK" to="zh_Hant_HK"/>
-    <alias from="zh_MO" to="zh_Hant_MO"/>
-    <alias from="zh_SG" to="zh_Hans_SG"/>
-    <alias from="zh_TW" to="zh_Hant_TW"/>
-</deprecates>
diff --git a/icu4c/source/data/icu-rbnf-deprecates.xml b/icu4c/source/data/icu-rbnf-deprecates.xml
deleted file mode 100644
index d933a2d..0000000
--- a/icu4c/source/data/icu-rbnf-deprecates.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<!--
-/*
-* Copyright (C) 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html
-*******************************************************************************
-* Copyright (C) 2015-2016, International Business Machines Corporation and    *
-* others. All Rights Reserved.                                                *
-*******************************************************************************
-*/
--->
-<!--
-TODO: Most of these aliases are CLDR parent locales. Is this separate list
-necessary and can we just use the main list in icu-locale-deprecates.xml?
--->
-<deprecates>
-   <alias from="ars" to="ar" />
-   <alias from="es_DO" to="es_419" />
-   <alias from="es_GT" to="es_419" />
-   <alias from="es_HN" to="es_419" />
-   <alias from="es_MX" to="es_419" />
-   <alias from="es_NI" to="es_419" />
-   <alias from="es_PA" to="es_419" />
-   <alias from="es_PR" to="es_419" />
-   <alias from="es_SV" to="es_419" />
-   <alias from="es_US" to="es_419" />
-   <alias from="in" to="id" />
-   <alias from="iw" to="he" />
-   <alias from="no" to="nb" />
-   <alias from="sh" to="sr_Latn" />
-   <alias from="zh_Hant_HK" to="yue" />
-   <alias from="zh_HK" to="yue" />
-   <alias from="zh_MO" to="yue" />
-   <alias from="zh_TW" to="zh_Hant" />
-</deprecates>
diff --git a/icu4c/source/data/in/ucase.icu b/icu4c/source/data/in/ucase.icu
index cf24650..011e605 100644
--- a/icu4c/source/data/in/ucase.icu
+++ b/icu4c/source/data/in/ucase.icu
Binary files differ
diff --git a/icu4c/source/data/lang/LOCALE_DEPS.json b/icu4c/source/data/lang/LOCALE_DEPS.json
index 681e78c..2508537 100644
--- a/icu4c/source/data/lang/LOCALE_DEPS.json
+++ b/icu4c/source/data/lang/LOCALE_DEPS.json
@@ -1,8 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 
 {
-    "cldrVersion": "37",
+    "cldrVersion": "38.1",
     "aliases": {
         "ars": "ar_SA",
         "az_AZ": "az_Latn_AZ",
@@ -33,7 +34,7 @@
         "sh_YU": "sr_Latn_RS",
         "shi_MA": "shi_Tfng_MA",
         "sr_BA": "sr_Cyrl_BA",
-        "sr_CS": "sr_Cyrl_RS",
+        "sr_CS": "sr_RS",
         "sr_Cyrl_CS": "sr_Cyrl_RS",
         "sr_Cyrl_YU": "sr_Cyrl_RS",
         "sr_Latn_CS": "sr_Latn_RS",
@@ -41,7 +42,7 @@
         "sr_ME": "sr_Latn_ME",
         "sr_RS": "sr_Cyrl_RS",
         "sr_XK": "sr_Cyrl_XK",
-        "sr_YU": "sr_Cyrl_RS",
+        "sr_YU": "sr_RS",
         "su_ID": "su_Latn_ID",
         "tl": "fil",
         "tl_PH": "fil_PH",
diff --git a/icu4c/source/data/lang/af.txt b/icu4c/source/data/lang/af.txt
index b50a961..f80e856 100644
--- a/icu4c/source/data/lang/af.txt
+++ b/icu4c/source/data/lang/af.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 af{
     Keys{
         calendar{"Kalender"}
@@ -171,7 +172,7 @@
         io{"Ido"}
         is{"Yslands"}
         it{"Italiaans"}
-        iu{"Inuïties"}
+        iu{"Inoektitoet"}
         ja{"Japannees"}
         jbo{"Lojban"}
         jgo{"Ngomba"}
@@ -436,6 +437,7 @@
         az{"Azeri"}
     }
     Languages%variant{
+        ckb{"Koerdies Sorani"}
         ps{"Pushto"}
     }
     Scripts{
@@ -629,7 +631,6 @@
             vaii{"Vai-syfers"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} – alle"}
         category-list{"{0}: {1}"}
@@ -644,6 +645,8 @@
             one{"{0} haal"}
             other{"{0} hale"}
         }
+        subscript{"onderskrif {0}"}
+        superscript{"boskrif {0}"}
     }
     codePatterns{
         language{"Taal: {0}"}
diff --git a/icu4c/source/data/lang/agq.txt b/icu4c/source/data/lang/agq.txt
index 9cb1a80..4f07816 100644
--- a/icu4c/source/data/lang/agq.txt
+++ b/icu4c/source/data/lang/agq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 agq{
     Languages{
         agq{"Aghem"}
@@ -48,5 +49,4 @@
         zh{"Chàenê"}
         zu{"Zulù"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ak.txt b/icu4c/source/data/lang/ak.txt
index 012bda2..a5f3d9c 100644
--- a/icu4c/source/data/lang/ak.txt
+++ b/icu4c/source/data/lang/ak.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ak{
     Languages{
         ak{"Akan"}
@@ -47,5 +48,4 @@
         zh{"Kyaena kasa"}
         zu{"Zulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/am.txt b/icu4c/source/data/lang/am.txt
index 4d7b135..d16a2e8 100644
--- a/icu4c/source/data/lang/am.txt
+++ b/icu4c/source/data/lang/am.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 am{
     Keys{
         calendar{"የቀን አቆጣጠር"}
@@ -698,7 +699,6 @@
             vaii{"የቫይ አሃዞች"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — ሁሉም"}
         category-list{"{0}: {1}"}
@@ -713,6 +713,8 @@
             one{"{0} ምች"}
             other{"{0} ምች"}
         }
+        subscript{"ግርጌ ምልክት {0}"}
+        superscript{"ራስጌ ምልክት {0}"}
     }
     codePatterns{
         language{"{0}"}
diff --git a/icu4c/source/data/lang/ar.txt b/icu4c/source/data/lang/ar.txt
index ad569a5..bb32aaf 100644
--- a/icu4c/source/data/lang/ar.txt
+++ b/icu4c/source/data/lang/ar.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar{
     Keys{
         calendar{"التقويم"}
@@ -795,9 +796,9 @@
             ungegn{"يو إن جي إي جي إن"}
         }
         ms{
-            metric{"نظام متري"}
-            uksystem{"نظام المملكة المتحدة"}
-            ussystem{"نظام الولايات المتحدة"}
+            metric{"النظام المتري"}
+            uksystem{"نظام القياس البريطاني"}
+            ussystem{"نظام القياس الأمريكي"}
         }
         numbers{
             arab{"الأرقام العربية الهندية"}
@@ -862,7 +863,6 @@
         VALENCIA{"بلنسية"}
         WADEGILE{"المندرين باللاتينية - ويد–جيلز"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} - الكل"}
         category-list{"{0}: {1}"}
@@ -881,6 +881,8 @@
             two{"ضغطتان ({0})"}
             zero{"{0} ضغطة"}
         }
+        subscript{"نظام الكتابة تحت السطر {0}"}
+        superscript{"نظام الكتابة فوق السطر {0}"}
     }
     codePatterns{
         language{"اللغة: {0}"}
diff --git a/icu4c/source/data/lang/ar_EG.txt b/icu4c/source/data/lang/ar_EG.txt
index f33f1ff..e4fbc9c 100644
--- a/icu4c/source/data/lang/ar_EG.txt
+++ b/icu4c/source/data/lang/ar_EG.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_EG{
     Languages{
         da{"الدنماركية"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ar_LY.txt b/icu4c/source/data/lang/ar_LY.txt
index 31a1d6a..45d878c 100644
--- a/icu4c/source/data/lang/ar_LY.txt
+++ b/icu4c/source/data/lang/ar_LY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_LY{
     Languages{
         arn{"المابودونجونية"}
@@ -12,5 +13,4 @@
         sw_CD{"السواحيلية الكونغولية"}
         ti{"التيغرينية"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ar_SA.txt b/icu4c/source/data/lang/ar_SA.txt
index 8540adb..3f43463 100644
--- a/icu4c/source/data/lang/ar_SA.txt
+++ b/icu4c/source/data/lang/ar_SA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_SA{
     Languages{
         ar_001{"العربية الرسمية الحديثة"}
@@ -35,5 +36,4 @@
         en_GB{"الإنجليزية المملكة المتحدة"}
         en_US{"الإنجليزية الولايات المتحدة"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ar_XB.txt b/icu4c/source/data/lang/ar_XB.txt
index fb79ece..94a7e63 100644
--- a/icu4c/source/data/lang/ar_XB.txt
+++ b/icu4c/source/data/lang/ar_XB.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_XB{
     Keys{
         calendar{"؜‮Calendar‬؜"}
@@ -15,6 +16,7 @@
         collation{"؜‮Sort‬؜ ؜‮Order‬؜"}
         currency{"؜‮Currency‬؜"}
         d0{"؜‮Transform‬؜ ؜‮Destination‬؜"}
+        dx{"؜‮Dictionary‬؜ ؜‮Break‬؜ ؜‮Exclusions‬؜"}
         em{"؜‮Emoji‬؜ ؜‮Presentation‬؜ ؜‮Style‬؜"}
         fw{"؜‮First‬؜ ؜‮day‬؜ ؜‮of‬؜ ؜‮week‬؜"}
         h0{"؜‮Mixed‬؜-؜‮in‬؜"}
@@ -1299,7 +1301,6 @@
         VALENCIA{"؜‮Valencian‬؜"}
         WADEGILE{"؜‮Wade‬؜-؜‮Giles‬؜ ؜‮Romanization‬؜"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — ؜‮all‬؜"}
         category-list{"{0}: {1}"}
diff --git a/icu4c/source/data/lang/ars.txt b/icu4c/source/data/lang/ars.txt
index 1f49ca1..92183f5 100644
--- a/icu4c/source/data/lang/ars.txt
+++ b/icu4c/source/data/lang/ars.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ars{
     "%%ALIAS"{"ar_SA"}
 }
diff --git a/icu4c/source/data/lang/as.txt b/icu4c/source/data/lang/as.txt
index 792b572..ca5c8c3 100644
--- a/icu4c/source/data/lang/as.txt
+++ b/icu4c/source/data/lang/as.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 as{
     Keys{
         calendar{"কেলেণ্ডাৰ"}
@@ -553,7 +554,6 @@
             tibt{"তিব্বতী অংক"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — সকলো"}
         category-list{"{0}: {1}"}
@@ -568,6 +568,8 @@
             one{"{0} ষ্ট্ৰ’ক"}
             other{"{0} ষ্ট্ৰ’ক"}
         }
+        subscript{"ছাবস্ক্ৰিপ্ট {0}"}
+        superscript{"ছুপাৰস্ক্ৰিপ্ট {0}"}
     }
     codePatterns{
         language{"ভাষা: {0}"}
diff --git a/icu4c/source/data/lang/asa.txt b/icu4c/source/data/lang/asa.txt
index 8e23456..4f41154 100644
--- a/icu4c/source/data/lang/asa.txt
+++ b/icu4c/source/data/lang/asa.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 asa{
     Languages{
         ak{"Kiakan"}
@@ -48,5 +49,4 @@
         zh{"Kichina"}
         zu{"Kidhulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ast.txt b/icu4c/source/data/lang/ast.txt
index 455d2d9..5b5b609 100644
--- a/icu4c/source/data/lang/ast.txt
+++ b/icu4c/source/data/lang/ast.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ast{
     Keys{
         calendar{"calendariu"}
@@ -1005,7 +1006,6 @@
         VALENCIA{"valencianu"}
         WADEGILE{"romanización de Wade-Giles"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — too"}
         category-list{"{0}: {1}"}
diff --git a/icu4c/source/data/lang/az.txt b/icu4c/source/data/lang/az.txt
index 8e270e3..aea521b 100644
--- a/icu4c/source/data/lang/az.txt
+++ b/icu4c/source/data/lang/az.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az{
     Keys{
         calendar{"Təqvim"}
@@ -532,12 +533,16 @@
         zh_Hant{"ənənəvi mandarin çincəsi"}
     }
     Languages%menu{
+        ckb{"Kürdcə, mərkəzi"}
         yue{"Çin, kanton"}
         zh{"Çin, mandarin"}
     }
     Languages%short{
         az{"azəri"}
     }
+    Languages%variant{
+        ckb{"Kürdcə, sorani"}
+    }
     Scripts{
         Arab{"ərəb"}
         Armi{"armi"}
@@ -752,7 +757,6 @@
             tibt{"Tibet Rəqəmləri"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — Bütün"}
         category-list{"{0}: {1}"}
@@ -767,6 +771,8 @@
             one{"{0} Vurğu"}
             other{"{0} Vurğu"}
         }
+        subscript{"indeks {0}"}
+        superscript{"üst indeks {0}"}
     }
     codePatterns{
         language{"Dil: {0}"}
diff --git a/icu4c/source/data/lang/az_AZ.txt b/icu4c/source/data/lang/az_AZ.txt
index caf84c0..8932e86 100644
--- a/icu4c/source/data/lang/az_AZ.txt
+++ b/icu4c/source/data/lang/az_AZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_AZ{
     "%%ALIAS"{"az_Latn_AZ"}
 }
diff --git a/icu4c/source/data/lang/az_Cyrl.txt b/icu4c/source/data/lang/az_Cyrl.txt
index b416731..d2ec82a 100644
--- a/icu4c/source/data/lang/az_Cyrl.txt
+++ b/icu4c/source/data/lang/az_Cyrl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_Cyrl{
     %%Parent{"root"}
     Languages{
@@ -398,7 +399,6 @@
     Scripts{
         Cyrl{"Кирил"}
     }
-    Version{"37"}
     codePatterns{
         language{"Дил: {0}"}
         script{"Скрипт: {0}"}
diff --git a/icu4c/source/data/lang/az_Latn.txt b/icu4c/source/data/lang/az_Latn.txt
index 6022c58..6464d2e 100644
--- a/icu4c/source/data/lang/az_Latn.txt
+++ b/icu4c/source/data/lang/az_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/az_Latn_AZ.txt b/icu4c/source/data/lang/az_Latn_AZ.txt
index 36c6e61..3963c91 100644
--- a/icu4c/source/data/lang/az_Latn_AZ.txt
+++ b/icu4c/source/data/lang/az_Latn_AZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/bas.txt b/icu4c/source/data/lang/bas.txt
index 0aa6402..89d1f24 100644
--- a/icu4c/source/data/lang/bas.txt
+++ b/icu4c/source/data/lang/bas.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bas{
     Languages{
         ak{"Hɔp u akan"}
@@ -48,5 +49,4 @@
         zh{"Hɔp u kinà"}
         zu{"Hɔp u zulù"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/be.txt b/icu4c/source/data/lang/be.txt
index 50ff12e..abef02a 100644
--- a/icu4c/source/data/lang/be.txt
+++ b/icu4c/source/data/lang/be.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 be{
     Keys{
         calendar{"каляндар"}
@@ -439,12 +440,16 @@
         zh_Hant{"паўночнакітайская (традыцыйныя іерогліфы)"}
     }
     Languages%menu{
+        ckb{"курдская, сарані"}
         yue{"кітайская, кантонскі дыялект"}
         zh{"кітайская, паўночныя дыялекты"}
     }
     Languages%short{
         en_GB{"вялікабрытанская англійская"}
     }
+    Languages%variant{
+        ckb{"сарані"}
+    }
     Scripts{
         Arab{"арабскае"}
         Armn{"армянскае"}
@@ -573,7 +578,6 @@
             tibt{"тыбецкія лічбы"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — Усё"}
         category-list{"{0}: {1}"}
@@ -590,6 +594,8 @@
             one{"{0} штрых"}
             other{"{0} штрыха"}
         }
+        subscript{"{0} - ніжні індэкс"}
+        superscript{"{0} - верхні індэкс"}
     }
     codePatterns{
         language{"Мова: {0}"}
diff --git a/icu4c/source/data/lang/bem.txt b/icu4c/source/data/lang/bem.txt
index 60a5a81..a5f8b6e 100644
--- a/icu4c/source/data/lang/bem.txt
+++ b/icu4c/source/data/lang/bem.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bem{
     Languages{
         ak{"Ichi Akan"}
@@ -48,5 +49,4 @@
         zh{"Ichi Chainisi"}
         zu{"Ichi Zulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/bez.txt b/icu4c/source/data/lang/bez.txt
index ee9d47c..dc62a85 100644
--- a/icu4c/source/data/lang/bez.txt
+++ b/icu4c/source/data/lang/bez.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bez{
     Languages{
         ak{"Hiakan"}
@@ -48,5 +49,4 @@
         zh{"Hichina"}
         zu{"Hizulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/bg.txt b/icu4c/source/data/lang/bg.txt
index c453f25..48a0dfa 100644
--- a/icu4c/source/data/lang/bg.txt
+++ b/icu4c/source/data/lang/bg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bg{
     Keys{
         calendar{"календар"}
@@ -135,8 +136,10 @@
         el{"гръцки"}
         elx{"еламитски"}
         en{"английски"}
-        en_GB{"английски (Обединено кралство)"}
-        en_US{"английски (САЩ)"}
+        en_AU{"австралийски английски"}
+        en_CA{"канадски английски"}
+        en_GB{"британски английски"}
+        en_US{"американски английски"}
         enm{"средновековен английски"}
         eo{"есперанто"}
         es{"испански"}
@@ -396,7 +399,7 @@
         rwk{"рва"}
         sa{"санскрит"}
         sad{"сандаве"}
-        sah{"сакха"}
+        sah{"саха"}
         sam{"самаритански арамейски"}
         saq{"самбуру"}
         sas{"сасак"}
@@ -485,7 +488,7 @@
         uga{"угаритски"}
         uk{"украински"}
         umb{"умбунду"}
-        und{"неопределен"}
+        und{"непознат език"}
         ur{"урду"}
         uz{"узбекски"}
         vai{"ваи"}
@@ -502,7 +505,7 @@
         wbp{"валпири"}
         wo{"волоф"}
         xal{"калмик"}
-        xh{"ксоса"}
+        xh{"кхоса"}
         xog{"сога"}
         yao{"яо"}
         yap{"япезе"}
@@ -529,6 +532,7 @@
         zh_Hant{"китайски, мандарин (традиционен)"}
     }
     Languages%menu{
+        yue{"китайски, кантонски"}
         zh{"китайски, мандарин"}
     }
     Languages%short{
@@ -537,6 +541,7 @@
         en_US{"английски (US)"}
     }
     Languages%variant{
+        ckb{"кюрдски (Сорани)"}
         ps{"пущунски"}
     }
     Scripts{
@@ -839,7 +844,6 @@
         VALENCIA{"Валенсиански"}
         WADEGILE{"Уейд-Джайлс романизация"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} – всички"}
         category-list{"{0}: {1}"}
@@ -854,6 +858,8 @@
             one{"{0} черта"}
             other{"{0} черти"}
         }
+        subscript{"долен индекс {0}"}
+        superscript{"горен индекс {0}"}
     }
     codePatterns{
         language{"Език: {0}"}
diff --git a/icu4c/source/data/lang/bm.txt b/icu4c/source/data/lang/bm.txt
index b3be720..1d7e143 100644
--- a/icu4c/source/data/lang/bm.txt
+++ b/icu4c/source/data/lang/bm.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bm{
     Languages{
         ak{"akankan"}
@@ -48,5 +49,4 @@
         zh{"siniwakan"}
         zu{"zulukan"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/bn.txt b/icu4c/source/data/lang/bn.txt
index 218e67d..7d92252 100644
--- a/icu4c/source/data/lang/bn.txt
+++ b/icu4c/source/data/lang/bn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bn{
     Keys{
         calendar{"ক্যালেন্ডার"}
@@ -352,7 +353,7 @@
         nl{"ওলন্দাজ"}
         nl_BE{"ফ্লেমিশ"}
         nmg{"কোয়াসিও"}
-        nn{"নরওয়েজীয়ান নিনর্স্ক"}
+        nn{"নরওয়েজিয়ান নিনর্স্ক"}
         nnh{"নিঙ্গেম্বুন"}
         no{"নরওয়েজীয়"}
         nog{"নোগাই"}
@@ -554,6 +555,7 @@
         en_US{"যুক্তরাষ্ট্রের ইংরেজি"}
     }
     Languages%variant{
+        ckb{"কুর্দিশ, সোরানি"}
         ps{"পুশতো"}
     }
     Scripts{
@@ -880,7 +882,6 @@
             wara{"ওয়ারেং সিটি সংখ্যা"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — সমস্ত"}
         category-list{"{0}: {1}"}
@@ -895,6 +896,8 @@
             one{"{0} স্ট্রোক"}
             other{"{0} স্ট্রোক"}
         }
+        subscript{"সাবস্ক্রিপ্ট {0}"}
+        superscript{"সুপারস্ক্রিপ্ট {0}"}
     }
     codePatterns{
         language{"ভাষা: {0}"}
diff --git a/icu4c/source/data/lang/bn_IN.txt b/icu4c/source/data/lang/bn_IN.txt
index 2eae9cf..b55418b 100644
--- a/icu4c/source/data/lang/bn_IN.txt
+++ b/icu4c/source/data/lang/bn_IN.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bn_IN{
     Languages{
         ksh{"কোলোনিয়ান"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/bo.txt b/icu4c/source/data/lang/bo.txt
index 6604c53..52e3c1c 100644
--- a/icu4c/source/data/lang/bo.txt
+++ b/icu4c/source/data/lang/bo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bo{
     Languages{
         bo{"བོད་སྐད་"}
@@ -21,5 +22,4 @@
         Tibt{"བོད་ཡིག་"}
         Zxxx{"སྙན་བརྒྱུད། ཡིག་རིགས་སུ་མ་བཀོད་པའི་ཟིན་ཐོ།"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/br.txt b/icu4c/source/data/lang/br.txt
index 248a28d..135d435 100644
--- a/icu4c/source/data/lang/br.txt
+++ b/icu4c/source/data/lang/br.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 br{
     Keys{
         calendar{"deiziadur"}
@@ -7,6 +8,7 @@
         collation{"doare rummañ"}
         currency{"moneiz"}
         hc{"kelcʼhiad eurioù"}
+        lb{"stil torr linenn"}
         ms{"reizhiad vuzuliañ"}
         numbers{"niveroù"}
     }
@@ -148,6 +150,7 @@
         eu{"euskareg"}
         ewo{"ewondo"}
         fa{"perseg"}
+        fa_AF{"dareg"}
         fan{"fang"}
         fat{"fanti"}
         ff{"fula"}
@@ -542,7 +545,7 @@
         yue{"kantoneg"}
         za{"zhuang"}
         zap{"zapoteg"}
-        zbl{"Bliss"}
+        zbl{"arouezioù Bliss"}
         zea{"zelandeg"}
         zen{"zenaga"}
         zgh{"tamacheg Maroko standart"}
@@ -559,6 +562,7 @@
         zh_Hant{"sinaeg mandarinek hengounel"}
     }
     Languages%menu{
+        ckb{"kurdeg kreiz"}
         yue{"sinaeg, kantoneg"}
         zh{"sinaeg, mandarineg"}
     }
@@ -683,6 +687,7 @@
             roc{"deiziadur Republik Sina"}
         }
         cf{
+            account{"furmad unanenn jediñ"}
             standard{"furmad moneiz standart"}
         }
         collation{
@@ -708,6 +713,11 @@
             h23{"reizhiad 24 eurvezh (0–23)"}
             h24{"reizhiad 24 eurvezh (1–24)"}
         }
+        lb{
+            loose{"stil torr linenn lezober"}
+            normal{"stil torr linenn boas"}
+            strict{"stil torr linenn strizh"}
+        }
         ms{
             metric{"reizhiad vetrek"}
             uksystem{"reizhiad vuzuliañ RU"}
@@ -800,6 +810,7 @@
         BISKE{"rannyezh San Giorgio/Bila"}
         BOHORIC{"lizherenneg Bohorič"}
         BOONT{"boontling"}
+        BORNHOLM{"rannyezh Bornholm"}
         CISAUP{"kizalpeg"}
         COLB1945{"emglev 1945 war reizhskrivadur portugaleg Brazil"}
         CORNU{"saozneg Kerne-Veur"}
@@ -878,14 +889,25 @@
         WADEGILE{"romanekadur Wade-Giles"}
         XSISTEMO{"esperanteg sistem X"}
     }
-    Version{"37"}
     characterLabelPattern{
+        all{"{0} — holl"}
+        category-list{"{0} : {1}"}
+        compatibility{"{0} — kenglotusted"}
         enclosed{"{0} — kelcʼhiet"}
         extended{"{0} — astennet"}
         historic{"{0} — istorel"}
         miscellaneous{"{0} — liesseurt"}
         other{"{0} — all"}
         scripts{"skriturioù — {0}"}
+        strokes{
+            few{"{0} linenn"}
+            many{"{0} a linennoù"}
+            one{"{0} linenn"}
+            other{"{0} linenn"}
+            two{"{0} linenn"}
+        }
+        subscript{"isskridad {0}"}
+        superscript{"usskridad {0}"}
     }
     codePatterns{
         language{"yezh : {0}"}
diff --git a/icu4c/source/data/lang/brx.txt b/icu4c/source/data/lang/brx.txt
index cc529d8..17a1ce9 100644
--- a/icu4c/source/data/lang/brx.txt
+++ b/icu4c/source/data/lang/brx.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 brx{
     Keys{
         calendar{"पंचाग"}
@@ -609,7 +610,6 @@
         SOLBA{"श्टोलविज़्ज़ा या सोलबीका डायलेक्ट"}
         TARASK{"तारास्कीएवीचा वर्तनी"}
     }
-    Version{"37"}
     codePatterns{
         script{"देवनागरी: {0}"}
         territory{"क्षेत्र:भारत {0}"}
diff --git a/icu4c/source/data/lang/bs.txt b/icu4c/source/data/lang/bs.txt
index f683c1f..51bcdae 100644
--- a/icu4c/source/data/lang/bs.txt
+++ b/icu4c/source/data/lang/bs.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs{
     Keys{
         calendar{"Kalendar"}
@@ -552,11 +553,14 @@
         ps{"pušto"}
     }
     Scripts{
+        Afak{"afaka pismo"}
         Arab{"arapsko pismo"}
         Armi{"imperijsko aramejsko pismo"}
         Armn{"armensko pismo"}
         Avst{"avestansko pismo"}
         Bali{"balijsko pismo"}
+        Bamu{"bamum pismo"}
+        Bass{"bassa vah pismo"}
         Batk{"batak pismo"}
         Beng{"bengalsko pismo"}
         Blis{"blisimbolično pismo"}
@@ -585,6 +589,7 @@
         Geor{"gruzijsko pismo"}
         Glag{"glagoljica"}
         Goth{"gotika"}
+        Gran{"grantha pismo"}
         Grek{"grčko pismo"}
         Gujr{"pismo gudžarati"}
         Guru{"pismo gurmuki"}
@@ -596,6 +601,7 @@
         Hant{"tradicionalno"}
         Hebr{"hebrejsko pismo"}
         Hira{"pismo hiragana"}
+        Hluw{"anatolijski hijeroglifi"}
         Hmng{"pahawh hmong pismo"}
         Hrkt{"katakana ili hiragana"}
         Hung{"Staromađarsko pismo"}
@@ -604,12 +610,15 @@
         Jamo{"pismo jamo"}
         Java{"javansko pismo"}
         Jpan{"japansko pismo"}
+        Jurc{"jurchen pismo"}
         Kali{"kajah li pismo"}
         Kana{"pismo katakana"}
         Khar{"karošti pismo"}
         Khmr{"kmersko pismo"}
+        Khoj{"khojki pismo"}
         Knda{"pismo kanada"}
         Kore{"korejsko pismo"}
+        Kpel{"kpelle pismo"}
         Kthi{"kaićansko pismo"}
         Lana{"lanna pismo"}
         Laoo{"laosko pismo"}
@@ -620,23 +629,33 @@
         Limb{"limbu pismo"}
         Lina{"linearno A pismo"}
         Linb{"linearno B pismo"}
+        Lisu{"fraser pismo"}
+        Loma{"loma pismo"}
         Lyci{"lisijsko pismo"}
         Lydi{"lidijsko pismo"}
         Mand{"mandeansko pismo"}
         Mani{"manihejsko pismo"}
         Maya{"majanski hijeroglifi"}
+        Mend{"mende pismo"}
+        Merc{"meroitski kurziv"}
         Mero{"meroitik pismo"}
         Mlym{"malajalamsko pismo"}
         Mong{"mongolsko pismo"}
         Moon{"mesečevo pismo"}
+        Mroo{"mro pismo"}
         Mtei{"meitei majek pismo"}
         Mymr{"mijanmarsko pismo"}
+        Narb{"staro sjevernoarapsko pismo"}
+        Nbat{"nabatejsko pismo"}
+        Nkgb{"naxi geba pismo"}
         Nkoo{"n’ko pismo"}
+        Nshu{"nushu pismo"}
         Ogam{"ogham pismo"}
         Olck{"ol čiki pismo"}
         Orkh{"orkhon pismo"}
         Orya{"pismo orija"}
         Osma{"osmanja pismo"}
+        Palm{"palmyrene pismo"}
         Perm{"staro permiksko pismo"}
         Phag{"phags-pa pismo"}
         Phli{"pisani pahlavi"}
@@ -650,19 +669,25 @@
         Runr{"runsko pismo"}
         Samr{"samaritansko pismo"}
         Sara{"sarati pismo"}
+        Sarb{"staro južnoarapsko pismo"}
         Saur{"sauraštra pismo"}
         Sgnw{"znakovno pismo"}
         Shaw{"šavian pismo"}
+        Shrd{"sharada pismo"}
+        Sind{"khudawadi pismo"}
         Sinh{"pismo sinhala"}
+        Sora{"sora sompeng pismo"}
         Sylo{"siloti nagri pismo"}
         Syrc{"sirijsko pismo"}
         Syre{"sirijsko estrangelo pismo"}
         Syrj{"zapadnosirijsko pismo"}
         Syrn{"pismo istočne Sirije"}
         Tagb{"tagbanva pismo"}
+        Takr{"takri pismo"}
         Tale{"tai le pismo"}
         Talu{"novo tai lue pismo"}
         Taml{"tamilsko pismo"}
+        Tang{"tangut pismo"}
         Tavt{"tai viet pismo"}
         Telu{"pismo telugu"}
         Teng{"tengvar pismo"}
@@ -671,9 +696,12 @@
         Thaa{"pismo tana"}
         Thai{"tajlandsko pismo"}
         Tibt{"tibetansko pismo"}
+        Tirh{"tirhuta pismo"}
         Ugar{"ugaritsko pismo"}
         Vaii{"vai pismo"}
         Visp{"vidljivi govor"}
+        Wara{"varang kshiti pismo"}
+        Wole{"woleai pismo"}
         Xpeo{"staropersijsko pismo"}
         Xsux{"sumersko-akadsko kuneiform pismo"}
         Yiii{"ji pismo"}
@@ -696,8 +724,10 @@
         calendar{
             buddhist{"budistički kalendar"}
             chinese{"kineski kalendar"}
+            coptic{"Koptski kalendar"}
             dangi{"dangi kalendar"}
             ethiopic{"etiopski kalendar"}
+            ethiopic-amete-alem{"Etiopski kalendar \u0022Amete Alem\u0022"}
             gregorian{"gregorijanski kalendar"}
             hebrew{"hebrejski kalendar"}
             indian{"Indijski nacionalni kalendar"}
@@ -712,6 +742,34 @@
             account{"računovodstveni format valute"}
             standard{"standardni format valute"}
         }
+        colAlternate{
+            non-ignorable{"Poredaj simbole"}
+            shifted{"Poredaj zanemarujući simbole"}
+        }
+        colBackwards{
+            no{"Poredaj naglaske normalno"}
+            yes{"Poredaj naglaske obrnuto"}
+        }
+        colCaseFirst{
+            lower{"Prvo poredaj mala slova"}
+            no{"Poredaj po normalnom poretku veličine slova"}
+            upper{"Poredaj prvo velika slova"}
+        }
+        colCaseLevel{
+            no{"Poredaj zanemarujući veličinu"}
+            yes{"Poredaj u skladu s veličinom slova"}
+        }
+        colNormalization{
+            no{"Poredaj bez normalizacije"}
+            yes{"Poredaj unikod normalizirano"}
+        }
+        colStrength{
+            identical{"Poredaj sve"}
+            primary{"Poredaj samo po osnovnim slovima"}
+            quaternary{"Poredaj po naglascima/veličini/širini/pismu kana"}
+            secondary{"Poredaj po naglasku"}
+            tertiary{"Poredaj po naglascima/veličini/širini"}
+        }
         collation{
             big5han{"Tradicionalno kinesko sortiranje"}
             ducet{"standardno Unicode sortiranje"}
@@ -719,6 +777,7 @@
             phonebook{"Sortiranje kao telefonski imenik"}
             pinyin{"Pinjin sortiranje"}
             search{"općenito pretraživanje"}
+            searchjl{"Pretraživanje po početnom suglasniku hangula"}
             standard{"standardno sortiranje"}
             stroke{"Sortiranje po broju crta"}
             traditional{"Tradicionalno sortiranje"}
@@ -726,6 +785,7 @@
         d0{
             fwidth{"Široki"}
             hwidth{"Uski"}
+            npinyin{"Numerički"}
         }
         hc{
             h11{"12-satni format (0-11)"}
@@ -783,26 +843,36 @@
             telu{"brojevi pisma telugu"}
             thai{"tajlandski brojevi"}
             tibt{"tibetanski brojevi"}
+            traditional{"Tradicionalni brojevi"}
         }
     }
     Variants{
         1606NICT{"Francuski iz kasnog srednjeg veka do 1606."}
         1694ACAD{"Rani moderni francuski"}
         1901{"Tradicionalna nemačka ortografija"}
+        1959ACAD{"Akademski"}
         1994{"Standardizovana rezijanska ortografija"}
         1996{"Nemačka ortografija 1996"}
+        ALUKU{"Aluku dijalekt"}
         AREVELA{"Istočni jermenski"}
         AREVMDA{"Zapadno-jermenski"}
         BAKU1926{"Ujedinjeni turski latinični alfabet"}
         BISKE{"San Đorđijo/Bila dijalekt"}
         BOONT{"Buntling"}
+        EMODENG{"Rani moderni engleski"}
         FONIPA{"IPA fonetika"}
         FONUPA{"UPA fonetika"}
+        KKCOR{"Uobičajena ortografija"}
+        KSCOR{"Standardna ortografija"}
         LIPAW{"Lipovac dijalekt rezijanski"}
+        METELKO{"Metelčica"}
         MONOTON{"Monotonik"}
         NEDIS{"Natison dijalekt"}
         NJIVA{"Gnjiva/Njiva dijalekt"}
+        NULIK{"Moderni volapuk"}
         OSOJS{"Oseako/Osojane dijalekt"}
+        PAMAKA{"Pamaka dijalekt"}
+        PINYIN{"Pinjinska romanizacija"}
         POLYTON{"Politonik"}
         POSIX{"Kompjuter"}
         REVISED{"Revidirana ortigrafija"}
@@ -812,24 +882,28 @@
         SCOUSE{"Skauz"}
         SOLBA{"Stolvica/Solbica dijalekt"}
         TARASK{"Taraskijevica ortografija"}
+        UCCOR{"Ujedinjena ortografija"}
+        UCRCOR{"Ujedinjena revidirana ortografija"}
         VALENCIA{"Valencijski"}
+        WADEGILE{"Vejd-Žajl romanizacija"}
     }
-    Version{"37"}
     characterLabelPattern{
-        all{"{0} — sve"}
+        all{"{0} – sve"}
         category-list{"{0}: {1}"}
-        compatibility{"{0} — kompatibilno"}
-        enclosed{"{0} — okruženo"}
-        extended{"{0} — produženo"}
-        historic{"{0} — staro"}
-        miscellaneous{"{0} — razno"}
-        other{"{0} — ostalo"}
-        scripts{"Pisma — {0}"}
+        compatibility{"{0} – kompatibilno"}
+        enclosed{"{0} – priloženo"}
+        extended{"{0} – produženo"}
+        historic{"{0} – staro"}
+        miscellaneous{"{0} – razno"}
+        other{"{0} – ostalo"}
+        scripts{"pisma – {0}"}
         strokes{
-            few{"{0} potezi"}
+            few{"{0} poteza"}
             one{"{0} potez"}
-            other{"{0} potezi"}
+            other{"{0} poteza"}
         }
+        subscript{"indeks {0}"}
+        superscript{"eksponent {0}"}
     }
     codePatterns{
         language{"Jezik: {0}"}
diff --git a/icu4c/source/data/lang/bs_BA.txt b/icu4c/source/data/lang/bs_BA.txt
index e5e3a46..70619a1 100644
--- a/icu4c/source/data/lang/bs_BA.txt
+++ b/icu4c/source/data/lang/bs_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_BA{
     "%%ALIAS"{"bs_Latn_BA"}
 }
diff --git a/icu4c/source/data/lang/bs_Cyrl.txt b/icu4c/source/data/lang/bs_Cyrl.txt
index cc6915e..7603cfc 100644
--- a/icu4c/source/data/lang/bs_Cyrl.txt
+++ b/icu4c/source/data/lang/bs_Cyrl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_Cyrl{
     %%Parent{"root"}
     Keys{
@@ -777,7 +778,6 @@
         TARASK{"Тараскијевичка ортографија"}
         VALENCIA{"Валенцијска"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — све"}
         strokes{
diff --git a/icu4c/source/data/lang/bs_Latn.txt b/icu4c/source/data/lang/bs_Latn.txt
index d1a6b5e..f256112 100644
--- a/icu4c/source/data/lang/bs_Latn.txt
+++ b/icu4c/source/data/lang/bs_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/bs_Latn_BA.txt b/icu4c/source/data/lang/bs_Latn_BA.txt
index 3ef1cc4..04342dc 100644
--- a/icu4c/source/data/lang/bs_Latn_BA.txt
+++ b/icu4c/source/data/lang/bs_Latn_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/ca.txt b/icu4c/source/data/lang/ca.txt
index b5c2934..8a4f313 100644
--- a/icu4c/source/data/lang/ca.txt
+++ b/icu4c/source/data/lang/ca.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ca{
     Keys{
         calendar{"calendari"}
@@ -279,7 +280,7 @@
         kj{"kuanyama"}
         kk{"kazakh"}
         kkj{"kako"}
-        kl{"grenlandès"}
+        kl{"groenlandès"}
         kln{"kalenjin"}
         km{"khmer"}
         kmb{"kimbundu"}
@@ -602,6 +603,7 @@
         zh_Hant{"xinès mandarí (tradicional)"}
     }
     Languages%menu{
+        ckb{"sorani"}
         yue{"xinès, cantonès"}
         zh{"xinès, mandarí"}
     }
@@ -671,7 +673,7 @@
         Hira{"hiragana"}
         Hluw{"jeroglífic anatoli"}
         Hmng{"pahawh hmong"}
-        Hrkt{"katakana o hiragana"}
+        Hrkt{"sil·labaris japonesos"}
         Hung{"hongarès antic"}
         Inds{"escriptura de la vall de l’Indus"}
         Ital{"cursiva antiga"}
@@ -1011,7 +1013,6 @@
         VALLADER{"baix engiadinès"}
         WADEGILE{"romanització Wade-Giles"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — tot"}
         category-list{"{0}: {1}"}
@@ -1026,6 +1027,8 @@
             one{"{0} traç"}
             other{"{0} traços"}
         }
+        subscript{"subíndex {0}"}
+        superscript{"superíndex {0}"}
     }
     codePatterns{
         language{"Idioma: {0}"}
diff --git a/icu4c/source/data/lang/ccp.txt b/icu4c/source/data/lang/ccp.txt
index a78c62c..4ce7dd9 100644
--- a/icu4c/source/data/lang/ccp.txt
+++ b/icu4c/source/data/lang/ccp.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ccp{
     Keys{
         calendar{"𑄇𑄳𑄠𑄣𑄬𑄚𑄴𑄓𑄢𑄴"}
@@ -833,7 +834,6 @@
             vaii{"𑄞𑄭 𑄚𑄘"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — 𑄗𑄪𑄟𑄴"}
         category-list{"{0}: {1}"}
diff --git a/icu4c/source/data/lang/ce.txt b/icu4c/source/data/lang/ce.txt
index 0b2bdf0..bf4cf5a 100644
--- a/icu4c/source/data/lang/ce.txt
+++ b/icu4c/source/data/lang/ce.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ce{
     Keys{
         calendar{"Календарь"}
@@ -459,7 +460,6 @@
             persian{"гӀажарийн"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"Мотт: {0}"}
         script{"Скрипт: {0}"}
diff --git a/icu4c/source/data/lang/ceb.txt b/icu4c/source/data/lang/ceb.txt
index 8cf7e62..eb216ef 100644
--- a/icu4c/source/data/lang/ceb.txt
+++ b/icu4c/source/data/lang/ceb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ceb{
     Languages{
         ar{"Arabic"}
@@ -8,7 +9,7 @@
         ceb{"Binisaya"}
         de{"Aleman"}
         de_AT{"Austriano nga Aleman"}
-        de_CH{"Swiss nga Taas nga Aleman"}
+        de_CH{"Taas nga Aleman sa Switzerland"}
         en{"Ingles"}
         en_AU{"Ingles sa Australia"}
         en_CA{"Ingles sa Canada"}
@@ -20,7 +21,7 @@
         es_MX{"Espanyol sa Mexico"}
         fr{"Pranses"}
         fr_CA{"Pranses sa Canada"}
-        fr_CH{"Swiss nga Pranses"}
+        fr_CH{"Pranses sa Switzerland"}
         hi{"Hindi"}
         id{"Indonesian"}
         it{"Italiano"}
@@ -78,7 +79,6 @@
             latn{"Mga Western Digit"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"Lengguwahe: {0}"}
         script{"Script: {0}"}
diff --git a/icu4c/source/data/lang/cgg.txt b/icu4c/source/data/lang/cgg.txt
index 980bfbd..7618520 100644
--- a/icu4c/source/data/lang/cgg.txt
+++ b/icu4c/source/data/lang/cgg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cgg{
     Languages{
         ak{"Orukani"}
@@ -48,5 +49,4 @@
         zh{"Oruchaina"}
         zu{"Oruzuru"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/chr.txt b/icu4c/source/data/lang/chr.txt
index 7298c38..ca584a3 100644
--- a/icu4c/source/data/lang/chr.txt
+++ b/icu4c/source/data/lang/chr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 chr{
     Keys{
         calendar{"ᏅᏙ ᏗᏎᏍᏗ"}
@@ -549,7 +550,6 @@
             tibt{"ᏘᏇᏔᏂ ᏗᏎᏍᏗ"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — ᏂᎦᏓ"}
         category-list{"{0}: {1}"}
@@ -563,6 +563,8 @@
             one{"{0} ᏗᎬᏂᎸᎯ"}
             other{"{0} ᏗᎬᏂᎸᎯ"}
         }
+        subscript{"ᎡᎳᏗ ᎤᏍᏗ ᎪᏪᎳ {0}"}
+        superscript{"ᎦᎸᎳᏗ ᎤᏍᏗ ᎪᏪᎳ {0}"}
     }
     codePatterns{
         language{"ᎦᏬᏂᎯᏍᏗ: {0}"}
diff --git a/icu4c/source/data/lang/ckb.txt b/icu4c/source/data/lang/ckb.txt
index e31d769..24b739e 100644
--- a/icu4c/source/data/lang/ckb.txt
+++ b/icu4c/source/data/lang/ckb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ckb{
     Languages{
         aa{"ئەفار"}
@@ -440,5 +441,4 @@
         Hans{"هانی ئاسانکراو"}
         Hant{"هانی دێرین"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/cs.txt b/icu4c/source/data/lang/cs.txt
index 0d3e46f..67407a4 100644
--- a/icu4c/source/data/lang/cs.txt
+++ b/icu4c/source/data/lang/cs.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cs{
     Keys{
         calendar{"Kalendář"}
@@ -637,7 +638,7 @@
         zh_Hant{"standardní čínština (tradiční)"}
     }
     Languages%menu{
-        yue{"jüe"}
+        yue{"čínština (kantonština)"}
         zh{"standardní čínština"}
     }
     Languages%short{
@@ -971,7 +972,6 @@
         SCOTLAND{"angličtina (Skotsko)"}
         WADEGILE{"Wade-Giles"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} – vše"}
         category-list{"{0}: {1}"}
@@ -988,6 +988,8 @@
             one{"{0} tah"}
             other{"{0} tahů"}
         }
+        subscript{"{0} v dolním indexu"}
+        superscript{"{0} v horním indexu"}
     }
     codePatterns{
         language{"Jazyk: {0}"}
diff --git a/icu4c/source/data/lang/cy.txt b/icu4c/source/data/lang/cy.txt
index 1955414..41552d5 100644
--- a/icu4c/source/data/lang/cy.txt
+++ b/icu4c/source/data/lang/cy.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cy{
     Keys{
         calendar{"Calendr"}
@@ -388,9 +389,9 @@
         prg{"Prwseg"}
         pro{"Hen Brofensaleg"}
         ps{"Pashto"}
-        pt{"Portiwgeeg"}
-        pt_BR{"Portiwgeeg Brasil"}
-        pt_PT{"Portiwgeeg Ewrop"}
+        pt{"Portiwgaleg"}
+        pt_BR{"Portiwgaleg Brasil"}
+        pt_PT{"Portiwgaleg Ewrop"}
         qu{"Quechua"}
         quc{"K’iche’"}
         raj{"Rajasthaneg"}
@@ -539,7 +540,7 @@
         zap{"Zapoteceg"}
         zbl{"Blisssymbols"}
         zea{"Zêlandeg"}
-        zgh{"Tamaseit Safonol"}
+        zgh{"Tamaseit Moroco Safonol"}
         zh{"Tsieinëeg"}
         zh_Hans{"Tsieinëeg Symledig"}
         zh_Hant{"Tsieinëeg Traddodiadol"}
@@ -611,14 +612,14 @@
     }
     Types{
         calendar{
-            buddhist{"Calendr y Bwdiaid"}
+            buddhist{"Calendr Bwdaidd"}
             chinese{"Calendr Tseina"}
             coptic{"Calendr y Coptiaid"}
             dangi{"Calendr Dangi"}
             ethiopic{"Calendr Ethiopia"}
             ethiopic-amete-alem{"Calendr Amete Alem Ethiopia"}
             gregorian{"Calendr Gregori"}
-            hebrew{"Calendr yr Hebraed"}
+            hebrew{"Calendr Hebreaidd"}
             indian{"Calendr Cenedlaethol India"}
             islamic{"Calendr Islam"}
             iso8601{"Calendr ISO-8601"}
@@ -724,7 +725,6 @@
         POSIX{"Cyfrifiadur"}
         SCOTLAND{"Saesneg Safonol yr Alban"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — y cwbl"}
         category-list{"{0}: {1}"}
@@ -743,6 +743,8 @@
             two{"{0} strôc"}
             zero{"{0} strôc"}
         }
+        subscript{"is-sgript {0}"}
+        superscript{"uwch-sgript {0}"}
     }
     codePatterns{
         language{"Iaith: {0}"}
diff --git a/icu4c/source/data/lang/da.txt b/icu4c/source/data/lang/da.txt
index 3681e78..b857577 100644
--- a/icu4c/source/data/lang/da.txt
+++ b/icu4c/source/data/lang/da.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 da{
     Keys{
         calendar{"kalender"}
@@ -177,7 +178,7 @@
         fro{"oldfransk"}
         frr{"nordfrisisk"}
         frs{"østfrisisk"}
-        fur{"friulian"}
+        fur{"friulisk"}
         fy{"vestfrisisk"}
         ga{"irsk"}
         gaa{"ga"}
@@ -355,7 +356,7 @@
         nan{"min-kinesisk"}
         nap{"napolitansk"}
         naq{"nama"}
-        nb{"norsk bokmål"}
+        nb{"bokmål"}
         nd{"nordndebele"}
         nds{"nedertysk"}
         ne{"nepalesisk"}
@@ -425,7 +426,7 @@
         rwk{"rwa"}
         sa{"sanskrit"}
         sad{"sandawe"}
-        sah{"yakut"}
+        sah{"jakutisk"}
         sam{"samaritansk aramæisk"}
         saq{"samburu"}
         sas{"sasak"}
@@ -534,7 +535,7 @@
         wo{"wolof"}
         wuu{"wu-kinesisk"}
         xal{"kalmyk"}
-        xh{"isiXhosa"}
+        xh{"xhosa"}
         xog{"soga"}
         yao{"yao"}
         yap{"yapese"}
@@ -564,9 +565,11 @@
     }
     Languages%short{
         az{"azeri"}
+        en_GB{"britisk engelsk"}
         en_US{"amerikansk engelsk"}
     }
     Languages%variant{
+        ckb{"centralkurdisk"}
         ps{"pushto"}
         ug{"uighurisk"}
     }
@@ -967,7 +970,6 @@
         VALLADER{"vallader"}
         WADEGILE{"Wade-Giles"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} – alle"}
         category-list{"{0}: {1}"}
@@ -982,6 +984,8 @@
             one{"{0} streg"}
             other{"{0} streger"}
         }
+        subscript{"sænket skrift {0}"}
+        superscript{"hævet skrift {0}"}
     }
     codePatterns{
         language{"Sprog: {0}"}
diff --git a/icu4c/source/data/lang/dav.txt b/icu4c/source/data/lang/dav.txt
index 8757987..f69d25f 100644
--- a/icu4c/source/data/lang/dav.txt
+++ b/icu4c/source/data/lang/dav.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dav{
     Languages{
         ak{"Kiakan"}
@@ -48,5 +49,4 @@
         zh{"Kichina"}
         zu{"Kizulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/de.txt b/icu4c/source/data/lang/de.txt
index 9e0bcf5..57d9fff 100644
--- a/icu4c/source/data/lang/de.txt
+++ b/icu4c/source/data/lang/de.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de{
     Keys{
         calendar{"Kalender"}
@@ -58,7 +59,7 @@
         as{"Assamesisch"}
         asa{"Asu"}
         ase{"Amerikanische Gebärdensprache"}
-        ast{"Asturianisch"}
+        ast{"Asturisch"}
         av{"Awarisch"}
         avk{"Kotava"}
         awa{"Awadhi"}
@@ -68,11 +69,11 @@
         bal{"Belutschisch"}
         ban{"Balinesisch"}
         bar{"Bairisch"}
-        bas{"Basaa"}
+        bas{"Bassa"}
         bax{"Bamun"}
         bbc{"Batak Toba"}
         bbj{"Ghomala"}
-        be{"Weißrussisch"}
+        be{"Belarussisch"}
         bej{"Bedauye"}
         bem{"Bemba"}
         bew{"Betawi"}
@@ -201,7 +202,7 @@
         gay{"Gayo"}
         gba{"Gbaya"}
         gbz{"Gabri"}
-        gd{"Schottisches Gälisch"}
+        gd{"Gälisch (Schottland)"}
         gez{"Geez"}
         gil{"Kiribatisch"}
         gl{"Galicisch"}
@@ -361,7 +362,7 @@
         men{"Mende"}
         mer{"Meru"}
         mfe{"Morisyen"}
-        mg{"Madagassisch"}
+        mg{"Malagasy"}
         mga{"Mittelirisch"}
         mgh{"Makhuwa-Meetto"}
         mgo{"Meta’"}
@@ -394,7 +395,7 @@
         nan{"Min Nan"}
         nap{"Neapolitanisch"}
         naq{"Nama"}
-        nb{"Norwegisch Bokmål"}
+        nb{"Norwegisch (Bokmål)"}
         nd{"Nord-Ndebele"}
         nds{"Niederdeutsch"}
         nds_NL{"Niedersächsisch"}
@@ -407,7 +408,7 @@
         nl{"Niederländisch"}
         nl_BE{"Flämisch"}
         nmg{"Kwasio"}
-        nn{"Norwegisch Nynorsk"}
+        nn{"Norwegisch (Nynorsk)"}
         nnh{"Ngiemboon"}
         no{"Norwegisch"}
         nog{"Nogai"}
@@ -639,6 +640,9 @@
         yue{"Chinesisch (Kantonesisch)"}
         zh{"Chinesisch (Mandarin)"}
     }
+    Languages%short{
+        en_GB{"Englisch (GB)"}
+    }
     Scripts{
         Afak{"Afaka"}
         Aghb{"Kaukasisch-Albanisch"}
@@ -1013,21 +1017,22 @@
         VALENCIA{"Valencianisch"}
         WADEGILE{"Wade-Giles"}
     }
-    Version{"37"}
     characterLabelPattern{
-        all{"{0} — Alle"}
+        all{"{0} — alle"}
         category-list{"{0}: {1}"}
         compatibility{"{0} — Kompatibilität"}
-        enclosed{"{0} — Verschachtelt"}
-        extended{"{0} — Erweitert"}
-        historic{"{0} — Historisch"}
-        miscellaneous{"{0} — Verschiedene"}
-        other{"{0} — Andere"}
+        enclosed{"{0} — verschachtelt"}
+        extended{"{0} — erweitert"}
+        historic{"{0} — historisch"}
+        miscellaneous{"{0} — verschiedene"}
+        other{"{0} — sonstige"}
         scripts{"Schriften — {0}"}
         strokes{
             one{"{0} Strich"}
             other{"{0} Striche"}
         }
+        subscript{"tiefgestellt {0}"}
+        superscript{"hochgestellt {0}"}
     }
     codePatterns{
         language{"Sprache: {0}"}
diff --git a/icu4c/source/data/lang/de_AT.txt b/icu4c/source/data/lang/de_AT.txt
index 6e2b27a..a158167 100644
--- a/icu4c/source/data/lang/de_AT.txt
+++ b/icu4c/source/data/lang/de_AT.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de_AT{
     Languages{
         ar_001{"modernes Hocharabisch"}
@@ -16,5 +17,4 @@
         sh{"Serbokroatisch"}
         szl{"Schlesisch"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/de_CH.txt b/icu4c/source/data/lang/de_CH.txt
index 66d00b9..63fa4af 100644
--- a/icu4c/source/data/lang/de_CH.txt
+++ b/icu4c/source/data/lang/de_CH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de_CH{
     Keys{
         colCaseFirst{"Sortierung nach Gross- bzw. Kleinbuchstaben"}
@@ -12,7 +13,6 @@
         ar_001{"Modernes Hocharabisch"}
         ars{"Nadschd-Arabisch"}
         bas{"Basaa-Sprache"}
-        be{"Weissrussisch"}
         bik{"Bikol-Sprache"}
         bin{"Bini-Sprache"}
         chb{"Chibcha-Sprache"}
@@ -27,6 +27,10 @@
         zh_Hans{"Chinesisch (vereinfacht)"}
         zh_Hant{"Chinesisch (traditionell)"}
     }
+    Languages%long{
+        zh_Hans{"Hochchinesisch (vereinfacht)"}
+        zh_Hant{"Hochchinesisch (traditionell)"}
+    }
     Types{
         colCaseFirst{
             upper{"Grossbuchstaben zuerst aufführen"}
@@ -40,5 +44,4 @@
             ussystem{"US Mass-System"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/de_LU.txt b/icu4c/source/data/lang/de_LU.txt
deleted file mode 100644
index e44d597..0000000
--- a/icu4c/source/data/lang/de_LU.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-de_LU{
-    Languages{
-        be{"Belarussisch"}
-    }
-    Version{"37"}
-}
diff --git a/icu4c/source/data/lang/dje.txt b/icu4c/source/data/lang/dje.txt
index c9fa3fd..ad78c19 100644
--- a/icu4c/source/data/lang/dje.txt
+++ b/icu4c/source/data/lang/dje.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dje{
     Languages{
         ak{"Akan senni"}
@@ -48,5 +49,4 @@
         zh{"Sinuwa senni"}
         zu{"Zulu senni"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/doi.txt b/icu4c/source/data/lang/doi.txt
new file mode 100644
index 0000000..cd5661c
--- /dev/null
+++ b/icu4c/source/data/lang/doi.txt
@@ -0,0 +1,81 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+doi{
+    Languages{
+        de{"जर्मन"}
+        de_AT{"आस्ट्रियाई जर्मन"}
+        de_CH{"स्विस हाई जर्मन"}
+        doi{"डोगरी"}
+        en{"अंगरेजी"}
+        en_AU{"आस्ट्रेलियाई अंगरेजी"}
+        en_CA{"कैनेडियन अंगरेजी"}
+        en_GB{"ब्रिटिश अंगरेजी"}
+        en_US{"अमरीकी अंगरेजी"}
+        es{"स्पैनिश"}
+        es_419{"लैटिन अमरीकी स्पैनिश"}
+        es_ES{"यूरोपी स्पैनिश"}
+        es_MX{"मैक्सिन स्पैनिश"}
+        fr{"फ्रेंच"}
+        fr_CA{"कैनेडियन फ्रेंच"}
+        fr_CH{"स्विस फ्रेंच"}
+        it{"इटालियन"}
+        ja{"जापानी"}
+        pt{"पुर्तगाली"}
+        pt_BR{"ब्राजीली पुर्तगाली"}
+        pt_PT{"यूरोपी पुर्तगाली"}
+        ru{"रूसी"}
+        und{"अनजांती भाशा"}
+        zh{"चीनी"}
+        zh_Hans{"सरलीकृत चीनी"}
+        zh_Hant{"रवायती चीनी"}
+    }
+    Languages%long{
+        zh_Hans{"सरलीकृत मंदारिन चीनी"}
+        zh_Hant{"रवायती मंदारिन चीनी"}
+    }
+    Languages%menu{
+        zh{"चीनी, मंदारिन"}
+    }
+    Languages%short{
+        en_GB{"यूके अंगरेजी"}
+        en_US{"यूएस अंगरेजी"}
+    }
+    Scripts{
+        Arab{"अरबी"}
+        Cyrl{"सिरिलिक"}
+        Deva{"देवनागरी"}
+        Hans{"सरलीकृत"}
+        Hant{"रवायती"}
+        Latn{"लैटिन"}
+        Zxxx{"अनलिखत"}
+        Zzzz{"अनजांती लिपि"}
+    }
+    Scripts%stand-alone{
+        Hans{"सरलीकृत हान"}
+        Hant{"रवायती हान"}
+    }
+    Types{
+        calendar{
+            gregorian{"ग्रेगोरी कैलेन्डर"}
+        }
+        collation{
+            standard{"मानक ताल तरतीब"}
+        }
+        numbers{
+            arab{"अरबी-इंडिक अंक"}
+            deva{"देवनागरी अंक"}
+            latn{"पच्छमी अंक"}
+        }
+    }
+    codePatterns{
+        language{"भाशा: {0}"}
+        script{"लिपि: {0}"}
+        territory{"खेत्तर: {0}"}
+    }
+    localeDisplayPattern{
+        keyTypePattern{"{0}: {1}"}
+        pattern{"{0} ({1})"}
+        separator{"{0}, {1}"}
+    }
+}
diff --git a/icu4c/source/data/lang/dsb.txt b/icu4c/source/data/lang/dsb.txt
index 1a4d430..cab89a3 100644
--- a/icu4c/source/data/lang/dsb.txt
+++ b/icu4c/source/data/lang/dsb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dsb{
     Keys{
         calendar{"kalender"}
@@ -378,7 +379,6 @@
             tibt{"tibetske cyfry"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"Rěc: {0}"}
         script{"Pismo: {0}"}
diff --git a/icu4c/source/data/lang/dua.txt b/icu4c/source/data/lang/dua.txt
index 6baeb93..fc60474 100644
--- a/icu4c/source/data/lang/dua.txt
+++ b/icu4c/source/data/lang/dua.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dua{
     Languages{
         dua{"duálá"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/dyo.txt b/icu4c/source/data/lang/dyo.txt
index 89191b2..b923b71 100644
--- a/icu4c/source/data/lang/dyo.txt
+++ b/icu4c/source/data/lang/dyo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dyo{
     Languages{
         ak{"akan"}
@@ -48,5 +49,4 @@
         zh{"sinua"}
         zu{"sulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/dz.txt b/icu4c/source/data/lang/dz.txt
index eb230e1..ef2053a 100644
--- a/icu4c/source/data/lang/dz.txt
+++ b/icu4c/source/data/lang/dz.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dz{
     Keys{
         calendar{"ཟླ་ཐོ"}
@@ -234,7 +235,6 @@
             tibt{"ང་བཅས་ཀྱི་ཨང་ཡིག"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"ཁ་སྐད་: {0}"}
         script{"ཡིག་གཟུགས་: {0}"}
diff --git a/icu4c/source/data/lang/ebu.txt b/icu4c/source/data/lang/ebu.txt
index 6acbc06..7431d43 100644
--- a/icu4c/source/data/lang/ebu.txt
+++ b/icu4c/source/data/lang/ebu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ebu{
     Languages{
         ak{"Kĩakan"}
@@ -48,5 +49,4 @@
         zh{"Kĩchina"}
         zu{"Kĩzulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ee.txt b/icu4c/source/data/lang/ee.txt
index 3074461..843ebdf 100644
--- a/icu4c/source/data/lang/ee.txt
+++ b/icu4c/source/data/lang/ee.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ee{
     Keys{
         calendar{"kalenda"}
@@ -299,7 +300,6 @@
             tibt{"tibet digitwo"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"gbegbɔgblɔ {0}"}
         script{"gbeŋɔŋlɔ {0}"}
diff --git a/icu4c/source/data/lang/el.txt b/icu4c/source/data/lang/el.txt
index 6738ce6..d59cb8b 100644
--- a/icu4c/source/data/lang/el.txt
+++ b/icu4c/source/data/lang/el.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 el{
     Keys{
         calendar{"Ημερολόγιο"}
@@ -329,7 +330,7 @@
         mi{"Μαορί"}
         mic{"Μικμάκ"}
         min{"Μινανγκαμπάου"}
-        mk{"Μακεδονικά"}
+        mk{"Σλαβομακεδονικά"}
         ml{"Μαλαγιαλαμικά"}
         mn{"Μογγολικά"}
         mnc{"Μαντσού"}
@@ -509,7 +510,7 @@
         tyv{"Τουβινικά"}
         tzm{"Ταμαζίτ Κεντρικού Μαρόκο"}
         udm{"Ουντμούρτ"}
-        ug{"Ουιγκουρικά"}
+        ug{"Ουιγουρικά"}
         uga{"Ουγκαριτικά"}
         uk{"Ουκρανικά"}
         umb{"Ουμπούντου"}
@@ -893,7 +894,6 @@
         VALENCIA{"Βαλενθιανά"}
         WADEGILE{"Εκλατινισμένα Γουάντ-Γκιλς"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — όλα"}
         category-list{"{0}: {1}"}
@@ -908,6 +908,8 @@
             one{"{0} γραμμή"}
             other{"{0} γραμμές"}
         }
+        subscript{"δείκτης {0}"}
+        superscript{"εκθέτης {0}"}
     }
     codePatterns{
         language{"Γλώσσα: {0}"}
diff --git a/icu4c/source/data/lang/en.txt b/icu4c/source/data/lang/en.txt
index faa1dff..eaf62d0 100644
--- a/icu4c/source/data/lang/en.txt
+++ b/icu4c/source/data/lang/en.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en{
     Keys{
         calendar{"Calendar"}
@@ -15,6 +16,7 @@
         collation{"Sort Order"}
         currency{"Currency"}
         d0{"Transform Destination"}
+        dx{"Dictionary Break Exclusions"}
         em{"Emoji Presentation Style"}
         fw{"First day of week"}
         h0{"Mixed-in"}
@@ -1275,7 +1277,6 @@
         VALENCIA{"Valencian"}
         WADEGILE{"Wade-Giles Romanization"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — all"}
         category-list{"{0}: {1}"}
diff --git a/icu4c/source/data/lang/en_001.txt b/icu4c/source/data/lang/en_001.txt
index 03b2424..592d261 100644
--- a/icu4c/source/data/lang/en_001.txt
+++ b/icu4c/source/data/lang/en_001.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_001{
     Keys{
         colCaseLevel{"Case-Sensitive Sorting"}
@@ -8,6 +9,7 @@
     Languages{
         mus{"Creek"}
         nds_NL{"West Low German"}
+        sah{"Yakut"}
     }
     Types{
         colNormalization{
@@ -21,7 +23,6 @@
             h24{"24-Hour System (1–24)"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} – all"}
         compatibility{"{0} – compatibility"}
diff --git a/icu4c/source/data/lang/en_150.txt b/icu4c/source/data/lang/en_150.txt
index 5a9d0dd..a616e24 100644
--- a/icu4c/source/data/lang/en_150.txt
+++ b/icu4c/source/data/lang/en_150.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_150{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_AG.txt b/icu4c/source/data/lang/en_AG.txt
index 15f4f3b..95a979e 100644
--- a/icu4c/source/data/lang/en_AG.txt
+++ b/icu4c/source/data/lang/en_AG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_AI.txt b/icu4c/source/data/lang/en_AI.txt
index ec4deb2..e1cf751 100644
--- a/icu4c/source/data/lang/en_AI.txt
+++ b/icu4c/source/data/lang/en_AI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AI{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_AT.txt b/icu4c/source/data/lang/en_AT.txt
index e4a6465..075c742 100644
--- a/icu4c/source/data/lang/en_AT.txt
+++ b/icu4c/source/data/lang/en_AT.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AT{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_AU.txt b/icu4c/source/data/lang/en_AU.txt
index 90e9dc7..2d13d53 100644
--- a/icu4c/source/data/lang/en_AU.txt
+++ b/icu4c/source/data/lang/en_AU.txt
@@ -1,9 +1,12 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AU{
     %%Parent{"en_001"}
     Keys{
         colCaseFirst{"Upper case / Lower case Ordering"}
+        x{"Private Use"}
+        x0{"Private Use Transform"}
     }
     Languages{
         ar_001{"Modern Standard Arabic"}
@@ -47,5 +50,4 @@
             ethiopic{"Ethiopian Calendar"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_BB.txt b/icu4c/source/data/lang/en_BB.txt
index 814000f..d62d192 100644
--- a/icu4c/source/data/lang/en_BB.txt
+++ b/icu4c/source/data/lang/en_BB.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BB{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_BE.txt b/icu4c/source/data/lang/en_BE.txt
index ded6405..0e5fffa 100644
--- a/icu4c/source/data/lang/en_BE.txt
+++ b/icu4c/source/data/lang/en_BE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BE{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_BM.txt b/icu4c/source/data/lang/en_BM.txt
index 1f9a62c..d45a1f9 100644
--- a/icu4c/source/data/lang/en_BM.txt
+++ b/icu4c/source/data/lang/en_BM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_BS.txt b/icu4c/source/data/lang/en_BS.txt
index 115d868..fa71936 100644
--- a/icu4c/source/data/lang/en_BS.txt
+++ b/icu4c/source/data/lang/en_BS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_BW.txt b/icu4c/source/data/lang/en_BW.txt
index 611516b..ab8bf09 100644
--- a/icu4c/source/data/lang/en_BW.txt
+++ b/icu4c/source/data/lang/en_BW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_BZ.txt b/icu4c/source/data/lang/en_BZ.txt
index 226183a..fbf6977 100644
--- a/icu4c/source/data/lang/en_BZ.txt
+++ b/icu4c/source/data/lang/en_BZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BZ{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_CA.txt b/icu4c/source/data/lang/en_CA.txt
index 0843739..92d57bf 100644
--- a/icu4c/source/data/lang/en_CA.txt
+++ b/icu4c/source/data/lang/en_CA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CA{
     %%Parent{"en_001"}
     Keys{
@@ -52,5 +53,4 @@
             upper{"To Upper Case"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_CC.txt b/icu4c/source/data/lang/en_CC.txt
index bce9886..906cf1e 100644
--- a/icu4c/source/data/lang/en_CC.txt
+++ b/icu4c/source/data/lang/en_CC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_CH.txt b/icu4c/source/data/lang/en_CH.txt
index 244edf2..2362921 100644
--- a/icu4c/source/data/lang/en_CH.txt
+++ b/icu4c/source/data/lang/en_CH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CH{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_CK.txt b/icu4c/source/data/lang/en_CK.txt
index ad52b0e..dc1c065 100644
--- a/icu4c/source/data/lang/en_CK.txt
+++ b/icu4c/source/data/lang/en_CK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_CM.txt b/icu4c/source/data/lang/en_CM.txt
index bf63213..b7fdf6d 100644
--- a/icu4c/source/data/lang/en_CM.txt
+++ b/icu4c/source/data/lang/en_CM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_CX.txt b/icu4c/source/data/lang/en_CX.txt
index 702f22b..58ff415 100644
--- a/icu4c/source/data/lang/en_CX.txt
+++ b/icu4c/source/data/lang/en_CX.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CX{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_CY.txt b/icu4c/source/data/lang/en_CY.txt
index 21b11b7..d4e75c0 100644
--- a/icu4c/source/data/lang/en_CY.txt
+++ b/icu4c/source/data/lang/en_CY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CY{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_DE.txt b/icu4c/source/data/lang/en_DE.txt
index 2623614..0147e01 100644
--- a/icu4c/source/data/lang/en_DE.txt
+++ b/icu4c/source/data/lang/en_DE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DE{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_DG.txt b/icu4c/source/data/lang/en_DG.txt
index 95b8e88..10bd8d9 100644
--- a/icu4c/source/data/lang/en_DG.txt
+++ b/icu4c/source/data/lang/en_DG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_DK.txt b/icu4c/source/data/lang/en_DK.txt
index d98349b..d694bb0 100644
--- a/icu4c/source/data/lang/en_DK.txt
+++ b/icu4c/source/data/lang/en_DK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DK{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_DM.txt b/icu4c/source/data/lang/en_DM.txt
index 5bfedb7..224df76 100644
--- a/icu4c/source/data/lang/en_DM.txt
+++ b/icu4c/source/data/lang/en_DM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_ER.txt b/icu4c/source/data/lang/en_ER.txt
index afd82fc..a39df78 100644
--- a/icu4c/source/data/lang/en_ER.txt
+++ b/icu4c/source/data/lang/en_ER.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ER{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_FI.txt b/icu4c/source/data/lang/en_FI.txt
index ae4b517..0b93a7e 100644
--- a/icu4c/source/data/lang/en_FI.txt
+++ b/icu4c/source/data/lang/en_FI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FI{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_FJ.txt b/icu4c/source/data/lang/en_FJ.txt
index 0c4ca01..65b19ac 100644
--- a/icu4c/source/data/lang/en_FJ.txt
+++ b/icu4c/source/data/lang/en_FJ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FJ{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_FK.txt b/icu4c/source/data/lang/en_FK.txt
index 9c92bfd..1fca516 100644
--- a/icu4c/source/data/lang/en_FK.txt
+++ b/icu4c/source/data/lang/en_FK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_FM.txt b/icu4c/source/data/lang/en_FM.txt
index 352f324..ad38147 100644
--- a/icu4c/source/data/lang/en_FM.txt
+++ b/icu4c/source/data/lang/en_FM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_GB.txt b/icu4c/source/data/lang/en_GB.txt
index 7ea8728..4f375f8 100644
--- a/icu4c/source/data/lang/en_GB.txt
+++ b/icu4c/source/data/lang/en_GB.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GB{
     %%Parent{"en_001"}
     Languages{
@@ -33,5 +34,4 @@
         en_GB{"UK English"}
         en_US{"US English"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_GD.txt b/icu4c/source/data/lang/en_GD.txt
index 98ca5e4..5aadd22 100644
--- a/icu4c/source/data/lang/en_GD.txt
+++ b/icu4c/source/data/lang/en_GD.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GD{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_GG.txt b/icu4c/source/data/lang/en_GG.txt
index 8bee533..6d63e55 100644
--- a/icu4c/source/data/lang/en_GG.txt
+++ b/icu4c/source/data/lang/en_GG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_GH.txt b/icu4c/source/data/lang/en_GH.txt
index de37150..8d0f240 100644
--- a/icu4c/source/data/lang/en_GH.txt
+++ b/icu4c/source/data/lang/en_GH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GH{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_GI.txt b/icu4c/source/data/lang/en_GI.txt
index 5afa54f..809590d 100644
--- a/icu4c/source/data/lang/en_GI.txt
+++ b/icu4c/source/data/lang/en_GI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GI{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_GM.txt b/icu4c/source/data/lang/en_GM.txt
index bbf424c..0f9710e 100644
--- a/icu4c/source/data/lang/en_GM.txt
+++ b/icu4c/source/data/lang/en_GM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_GY.txt b/icu4c/source/data/lang/en_GY.txt
index 905d5be..0e53543 100644
--- a/icu4c/source/data/lang/en_GY.txt
+++ b/icu4c/source/data/lang/en_GY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GY{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_HK.txt b/icu4c/source/data/lang/en_HK.txt
index 3eec8fe..f074e0c 100644
--- a/icu4c/source/data/lang/en_HK.txt
+++ b/icu4c/source/data/lang/en_HK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_HK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_IE.txt b/icu4c/source/data/lang/en_IE.txt
index 96feab5..1426a90 100644
--- a/icu4c/source/data/lang/en_IE.txt
+++ b/icu4c/source/data/lang/en_IE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IE{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_IL.txt b/icu4c/source/data/lang/en_IL.txt
index 2d32919..39fe763 100644
--- a/icu4c/source/data/lang/en_IL.txt
+++ b/icu4c/source/data/lang/en_IL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IL{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_IM.txt b/icu4c/source/data/lang/en_IM.txt
index 15a218b..d6e869d 100644
--- a/icu4c/source/data/lang/en_IM.txt
+++ b/icu4c/source/data/lang/en_IM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_IN.txt b/icu4c/source/data/lang/en_IN.txt
index 6f9be66..de21670 100644
--- a/icu4c/source/data/lang/en_IN.txt
+++ b/icu4c/source/data/lang/en_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IN{
     %%Parent{"en_001"}
     Languages{
@@ -16,5 +17,4 @@
             orya{"Oriya Digits"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_IO.txt b/icu4c/source/data/lang/en_IO.txt
index 5cd7210..5b70c5a 100644
--- a/icu4c/source/data/lang/en_IO.txt
+++ b/icu4c/source/data/lang/en_IO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IO{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_JE.txt b/icu4c/source/data/lang/en_JE.txt
index d8e0823..715ff18 100644
--- a/icu4c/source/data/lang/en_JE.txt
+++ b/icu4c/source/data/lang/en_JE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_JE{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_JM.txt b/icu4c/source/data/lang/en_JM.txt
index 695ae1a..08a5127 100644
--- a/icu4c/source/data/lang/en_JM.txt
+++ b/icu4c/source/data/lang/en_JM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_JM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_KE.txt b/icu4c/source/data/lang/en_KE.txt
index eecdd35..01411a3 100644
--- a/icu4c/source/data/lang/en_KE.txt
+++ b/icu4c/source/data/lang/en_KE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KE{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_KI.txt b/icu4c/source/data/lang/en_KI.txt
index 6c68a9f..8cd023d 100644
--- a/icu4c/source/data/lang/en_KI.txt
+++ b/icu4c/source/data/lang/en_KI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KI{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_KN.txt b/icu4c/source/data/lang/en_KN.txt
index 35ebc91..092c41e 100644
--- a/icu4c/source/data/lang/en_KN.txt
+++ b/icu4c/source/data/lang/en_KN.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KN{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_KY.txt b/icu4c/source/data/lang/en_KY.txt
index 71fa196..a0c571e 100644
--- a/icu4c/source/data/lang/en_KY.txt
+++ b/icu4c/source/data/lang/en_KY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KY{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_LC.txt b/icu4c/source/data/lang/en_LC.txt
index 5e248ad..ce24452 100644
--- a/icu4c/source/data/lang/en_LC.txt
+++ b/icu4c/source/data/lang/en_LC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_LC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_LR.txt b/icu4c/source/data/lang/en_LR.txt
index 0a77adc..979fa99 100644
--- a/icu4c/source/data/lang/en_LR.txt
+++ b/icu4c/source/data/lang/en_LR.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_LR{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_LS.txt b/icu4c/source/data/lang/en_LS.txt
index 14848c9..bd1380c 100644
--- a/icu4c/source/data/lang/en_LS.txt
+++ b/icu4c/source/data/lang/en_LS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_LS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_MG.txt b/icu4c/source/data/lang/en_MG.txt
index 2f24348..8799b5b 100644
--- a/icu4c/source/data/lang/en_MG.txt
+++ b/icu4c/source/data/lang/en_MG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_MO.txt b/icu4c/source/data/lang/en_MO.txt
index 2cd5c0a..769b2ea 100644
--- a/icu4c/source/data/lang/en_MO.txt
+++ b/icu4c/source/data/lang/en_MO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MO{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_MS.txt b/icu4c/source/data/lang/en_MS.txt
index fbedac5..e0028aa 100644
--- a/icu4c/source/data/lang/en_MS.txt
+++ b/icu4c/source/data/lang/en_MS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_MT.txt b/icu4c/source/data/lang/en_MT.txt
index a3af927..a217827 100644
--- a/icu4c/source/data/lang/en_MT.txt
+++ b/icu4c/source/data/lang/en_MT.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MT{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_MU.txt b/icu4c/source/data/lang/en_MU.txt
index 1e67240..1a4260b 100644
--- a/icu4c/source/data/lang/en_MU.txt
+++ b/icu4c/source/data/lang/en_MU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MU{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_MW.txt b/icu4c/source/data/lang/en_MW.txt
index 0624454..1920911 100644
--- a/icu4c/source/data/lang/en_MW.txt
+++ b/icu4c/source/data/lang/en_MW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_MY.txt b/icu4c/source/data/lang/en_MY.txt
index ffd93f8..891c100 100644
--- a/icu4c/source/data/lang/en_MY.txt
+++ b/icu4c/source/data/lang/en_MY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MY{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_NA.txt b/icu4c/source/data/lang/en_NA.txt
index 0b019a8..c1a4e58 100644
--- a/icu4c/source/data/lang/en_NA.txt
+++ b/icu4c/source/data/lang/en_NA.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NA{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_NF.txt b/icu4c/source/data/lang/en_NF.txt
index e264ade..514d0d9 100644
--- a/icu4c/source/data/lang/en_NF.txt
+++ b/icu4c/source/data/lang/en_NF.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NF{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_NG.txt b/icu4c/source/data/lang/en_NG.txt
index 70db1db..c047e03 100644
--- a/icu4c/source/data/lang/en_NG.txt
+++ b/icu4c/source/data/lang/en_NG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_NH.txt b/icu4c/source/data/lang/en_NH.txt
index 958b96b..5dc995b 100644
--- a/icu4c/source/data/lang/en_NH.txt
+++ b/icu4c/source/data/lang/en_NH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NH{
     "%%ALIAS"{"en_VU"}
 }
diff --git a/icu4c/source/data/lang/en_NL.txt b/icu4c/source/data/lang/en_NL.txt
index 5b5436b..0b352bd 100644
--- a/icu4c/source/data/lang/en_NL.txt
+++ b/icu4c/source/data/lang/en_NL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NL{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_NR.txt b/icu4c/source/data/lang/en_NR.txt
index 4377e15..89304ca 100644
--- a/icu4c/source/data/lang/en_NR.txt
+++ b/icu4c/source/data/lang/en_NR.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NR{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_NU.txt b/icu4c/source/data/lang/en_NU.txt
index 56d9b22..830320b 100644
--- a/icu4c/source/data/lang/en_NU.txt
+++ b/icu4c/source/data/lang/en_NU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NU{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_NZ.txt b/icu4c/source/data/lang/en_NZ.txt
index 9dc7f2c..e533cf9 100644
--- a/icu4c/source/data/lang/en_NZ.txt
+++ b/icu4c/source/data/lang/en_NZ.txt
@@ -1,9 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NZ{
     %%Parent{"en_001"}
     Languages{
         mi{"Māori"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_PG.txt b/icu4c/source/data/lang/en_PG.txt
index ffddbf4..217c90f 100644
--- a/icu4c/source/data/lang/en_PG.txt
+++ b/icu4c/source/data/lang/en_PG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_PH.txt b/icu4c/source/data/lang/en_PH.txt
index 9657884..1b59777 100644
--- a/icu4c/source/data/lang/en_PH.txt
+++ b/icu4c/source/data/lang/en_PH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PH{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_PK.txt b/icu4c/source/data/lang/en_PK.txt
index 874a3ee..9093157 100644
--- a/icu4c/source/data/lang/en_PK.txt
+++ b/icu4c/source/data/lang/en_PK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_PN.txt b/icu4c/source/data/lang/en_PN.txt
index 7f93228..975dcb4 100644
--- a/icu4c/source/data/lang/en_PN.txt
+++ b/icu4c/source/data/lang/en_PN.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PN{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_PW.txt b/icu4c/source/data/lang/en_PW.txt
index ed60f26..89ef3e6 100644
--- a/icu4c/source/data/lang/en_PW.txt
+++ b/icu4c/source/data/lang/en_PW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_RH.txt b/icu4c/source/data/lang/en_RH.txt
index b60f708..24bad29 100644
--- a/icu4c/source/data/lang/en_RH.txt
+++ b/icu4c/source/data/lang/en_RH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_RH{
     "%%ALIAS"{"en_ZW"}
 }
diff --git a/icu4c/source/data/lang/en_RW.txt b/icu4c/source/data/lang/en_RW.txt
index bc32932..ea92ac1 100644
--- a/icu4c/source/data/lang/en_RW.txt
+++ b/icu4c/source/data/lang/en_RW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_RW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_SB.txt b/icu4c/source/data/lang/en_SB.txt
index 7e736c2..9907157 100644
--- a/icu4c/source/data/lang/en_SB.txt
+++ b/icu4c/source/data/lang/en_SB.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SB{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_SC.txt b/icu4c/source/data/lang/en_SC.txt
index df04930..9d503c4 100644
--- a/icu4c/source/data/lang/en_SC.txt
+++ b/icu4c/source/data/lang/en_SC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_SD.txt b/icu4c/source/data/lang/en_SD.txt
index f2110fa..ef3c460 100644
--- a/icu4c/source/data/lang/en_SD.txt
+++ b/icu4c/source/data/lang/en_SD.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SD{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_SE.txt b/icu4c/source/data/lang/en_SE.txt
index c2a72c0..ec7d34e 100644
--- a/icu4c/source/data/lang/en_SE.txt
+++ b/icu4c/source/data/lang/en_SE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SE{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_SG.txt b/icu4c/source/data/lang/en_SG.txt
index ddf857d..1f25c86 100644
--- a/icu4c/source/data/lang/en_SG.txt
+++ b/icu4c/source/data/lang/en_SG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_SH.txt b/icu4c/source/data/lang/en_SH.txt
index 0e6c3dc..09e4765 100644
--- a/icu4c/source/data/lang/en_SH.txt
+++ b/icu4c/source/data/lang/en_SH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SH{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_SI.txt b/icu4c/source/data/lang/en_SI.txt
index a69030e..6fb107a 100644
--- a/icu4c/source/data/lang/en_SI.txt
+++ b/icu4c/source/data/lang/en_SI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SI{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_SL.txt b/icu4c/source/data/lang/en_SL.txt
index b956002..c79ccc5 100644
--- a/icu4c/source/data/lang/en_SL.txt
+++ b/icu4c/source/data/lang/en_SL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SL{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_SS.txt b/icu4c/source/data/lang/en_SS.txt
index 80fb800..390a313 100644
--- a/icu4c/source/data/lang/en_SS.txt
+++ b/icu4c/source/data/lang/en_SS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_SX.txt b/icu4c/source/data/lang/en_SX.txt
index 28da271..11fa700 100644
--- a/icu4c/source/data/lang/en_SX.txt
+++ b/icu4c/source/data/lang/en_SX.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SX{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_SZ.txt b/icu4c/source/data/lang/en_SZ.txt
index 431d63a..7e9c97d 100644
--- a/icu4c/source/data/lang/en_SZ.txt
+++ b/icu4c/source/data/lang/en_SZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SZ{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_TC.txt b/icu4c/source/data/lang/en_TC.txt
index 4129b99..181633b 100644
--- a/icu4c/source/data/lang/en_TC.txt
+++ b/icu4c/source/data/lang/en_TC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_TK.txt b/icu4c/source/data/lang/en_TK.txt
index 11010f3..e50d572 100644
--- a/icu4c/source/data/lang/en_TK.txt
+++ b/icu4c/source/data/lang/en_TK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_TO.txt b/icu4c/source/data/lang/en_TO.txt
index 6b63ad2..d21d084 100644
--- a/icu4c/source/data/lang/en_TO.txt
+++ b/icu4c/source/data/lang/en_TO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TO{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_TT.txt b/icu4c/source/data/lang/en_TT.txt
index d91ebb5..d375378 100644
--- a/icu4c/source/data/lang/en_TT.txt
+++ b/icu4c/source/data/lang/en_TT.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TT{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_TV.txt b/icu4c/source/data/lang/en_TV.txt
index 2d0ae8f..6247752 100644
--- a/icu4c/source/data/lang/en_TV.txt
+++ b/icu4c/source/data/lang/en_TV.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TV{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_TZ.txt b/icu4c/source/data/lang/en_TZ.txt
index 2ff0cbd..2aa8e46 100644
--- a/icu4c/source/data/lang/en_TZ.txt
+++ b/icu4c/source/data/lang/en_TZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TZ{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_UG.txt b/icu4c/source/data/lang/en_UG.txt
index 7ad0d87..26ed28e 100644
--- a/icu4c/source/data/lang/en_UG.txt
+++ b/icu4c/source/data/lang/en_UG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_UG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_VC.txt b/icu4c/source/data/lang/en_VC.txt
index 45b455d..a018754 100644
--- a/icu4c/source/data/lang/en_VC.txt
+++ b/icu4c/source/data/lang/en_VC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_VG.txt b/icu4c/source/data/lang/en_VG.txt
index 3e84e30..1a001d0 100644
--- a/icu4c/source/data/lang/en_VG.txt
+++ b/icu4c/source/data/lang/en_VG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_VU.txt b/icu4c/source/data/lang/en_VU.txt
index 6229365..91d6b81 100644
--- a/icu4c/source/data/lang/en_VU.txt
+++ b/icu4c/source/data/lang/en_VU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VU{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_WS.txt b/icu4c/source/data/lang/en_WS.txt
index 5d2f739..f197bb1 100644
--- a/icu4c/source/data/lang/en_WS.txt
+++ b/icu4c/source/data/lang/en_WS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_WS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_XA.txt b/icu4c/source/data/lang/en_XA.txt
index 064aaa6..3b517f2 100644
--- a/icu4c/source/data/lang/en_XA.txt
+++ b/icu4c/source/data/lang/en_XA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_XA{
     Keys{
         calendar{"[Çåļéñðåŕ one two]"}
@@ -15,6 +16,7 @@
         collation{"[Šöŕţ Öŕðéŕ one two]"}
         currency{"[Çûŕŕéñçý one two]"}
         d0{"[Ţŕåñšƒöŕɱ Ðéšţîñåţîöñ one two three]"}
+        dx{"[Ðîçţîöñåŕý Ɓŕéåķ Éẋçļûšîöñš one two three four]"}
         em{"[Éɱöĵî Þŕéšéñţåţîöñ Šţýļé one two three]"}
         fw{"[Ƒîŕšţ ðåý öƒ ŵééķ one two three]"}
         h0{"[Ṁîẋéð‐îñ one two]"}
@@ -1314,7 +1316,6 @@
         VALENCIA{"[Ṽåļéñçîåñ one two]"}
         WADEGILE{"[Ŵåðé‐Ĝîļéš Ŕöɱåñîžåţîöñ one two three]"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"[{0} — åļļ one two]"}
         category-list{"[{0}∶ {1} one two]"}
diff --git a/icu4c/source/data/lang/en_ZA.txt b/icu4c/source/data/lang/en_ZA.txt
index 942751e..13468e2 100644
--- a/icu4c/source/data/lang/en_ZA.txt
+++ b/icu4c/source/data/lang/en_ZA.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ZA{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_ZM.txt b/icu4c/source/data/lang/en_ZM.txt
index 32588ce..f61c471 100644
--- a/icu4c/source/data/lang/en_ZM.txt
+++ b/icu4c/source/data/lang/en_ZM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ZM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/en_ZW.txt b/icu4c/source/data/lang/en_ZW.txt
index 05fb790..60eaea8 100644
--- a/icu4c/source/data/lang/en_ZW.txt
+++ b/icu4c/source/data/lang/en_ZW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ZW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/eo.txt b/icu4c/source/data/lang/eo.txt
index 47b4c1d..3ca00e2 100644
--- a/icu4c/source/data/lang/eo.txt
+++ b/icu4c/source/data/lang/eo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 eo{
     Languages{
         aa{"afara"}
@@ -155,5 +156,4 @@
         zu{"zulua"}
         zxx{"nelingvaĵo"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es.txt b/icu4c/source/data/lang/es.txt
index 33eda14..7d4ee01 100644
--- a/icu4c/source/data/lang/es.txt
+++ b/icu4c/source/data/lang/es.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es{
     Keys{
         calendar{"calendario"}
@@ -569,6 +570,7 @@
         az{"azerí"}
     }
     Languages%variant{
+        ckb{"kurdo central"}
         ps{"pastú"}
         ug{"uygur"}
     }
@@ -861,7 +863,6 @@
         VALENCIA{"Valenciano"}
         WADEGILE{"Romanización Wade-Giles"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — Todo"}
         category-list{"{0}: {1}"}
@@ -876,6 +877,8 @@
             one{"{0} trazo"}
             other{"{0} trazos"}
         }
+        subscript{"Subíndice {0}"}
+        superscript{"Superíndice {0}"}
     }
     codePatterns{
         language{"Idioma: {0}"}
diff --git a/icu4c/source/data/lang/es_419.txt b/icu4c/source/data/lang/es_419.txt
index b6de50f..438bd2b 100644
--- a/icu4c/source/data/lang/es_419.txt
+++ b/icu4c/source/data/lang/es_419.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_419{
     Keys{
         colNormalization{"orden normalizado"}
@@ -105,7 +106,6 @@
             wara{"dígitos en Warang Citi"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         enclosed{"{0} — Adjunto"}
         extended{"{0} — Extendido"}
diff --git a/icu4c/source/data/lang/es_AR.txt b/icu4c/source/data/lang/es_AR.txt
index 478a099..cb3ebbe 100644
--- a/icu4c/source/data/lang/es_AR.txt
+++ b/icu4c/source/data/lang/es_AR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_AR{
     %%Parent{"es_419"}
     Languages{
@@ -18,5 +19,4 @@
         wo{"wolof"}
         zgh{"tamazight marroquí estándar"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_BO.txt b/icu4c/source/data/lang/es_BO.txt
index 49b1473..57c8d0d 100644
--- a/icu4c/source/data/lang/es_BO.txt
+++ b/icu4c/source/data/lang/es_BO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_BO{
     %%Parent{"es_419"}
     Languages{
@@ -18,5 +19,4 @@
         wo{"wolof"}
         zgh{"tamazight marroquí estándar"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_BR.txt b/icu4c/source/data/lang/es_BR.txt
index a8d655c..a18c09f 100644
--- a/icu4c/source/data/lang/es_BR.txt
+++ b/icu4c/source/data/lang/es_BR.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_BR{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_BZ.txt b/icu4c/source/data/lang/es_BZ.txt
index f703412..471108e 100644
--- a/icu4c/source/data/lang/es_BZ.txt
+++ b/icu4c/source/data/lang/es_BZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_BZ{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_CL.txt b/icu4c/source/data/lang/es_CL.txt
index 4dc8923..258d8da 100644
--- a/icu4c/source/data/lang/es_CL.txt
+++ b/icu4c/source/data/lang/es_CL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CL{
     %%Parent{"es_419"}
     Languages{
@@ -23,5 +24,4 @@
             phonebook{"orden de directorio telefónico"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_CO.txt b/icu4c/source/data/lang/es_CO.txt
index 0a0cf6b..de93af6 100644
--- a/icu4c/source/data/lang/es_CO.txt
+++ b/icu4c/source/data/lang/es_CO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CO{
     %%Parent{"es_419"}
     Languages{
@@ -18,5 +19,4 @@
         wo{"wolof"}
         zgh{"tamazight marroquí estándar"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_CR.txt b/icu4c/source/data/lang/es_CR.txt
index 98001a3..318f753 100644
--- a/icu4c/source/data/lang/es_CR.txt
+++ b/icu4c/source/data/lang/es_CR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CR{
     %%Parent{"es_419"}
     Languages{
@@ -18,5 +19,4 @@
         wo{"wolof"}
         zgh{"tamazight marroquí estándar"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_CU.txt b/icu4c/source/data/lang/es_CU.txt
index a316a0d..1a3a70a 100644
--- a/icu4c/source/data/lang/es_CU.txt
+++ b/icu4c/source/data/lang/es_CU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CU{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_DO.txt b/icu4c/source/data/lang/es_DO.txt
index ec76a66..d95a77f 100644
--- a/icu4c/source/data/lang/es_DO.txt
+++ b/icu4c/source/data/lang/es_DO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_DO{
     %%Parent{"es_419"}
     Languages{
@@ -18,5 +19,4 @@
         wo{"wolof"}
         zgh{"tamazight marroquí estándar"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_EC.txt b/icu4c/source/data/lang/es_EC.txt
index f87849b..a66da5f 100644
--- a/icu4c/source/data/lang/es_EC.txt
+++ b/icu4c/source/data/lang/es_EC.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_EC{
     %%Parent{"es_419"}
     Languages{
@@ -18,5 +19,4 @@
         wo{"wolof"}
         zgh{"tamazight marroquí estándar"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_GT.txt b/icu4c/source/data/lang/es_GT.txt
index 6557870..fddb07a 100644
--- a/icu4c/source/data/lang/es_GT.txt
+++ b/icu4c/source/data/lang/es_GT.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_GT{
     %%Parent{"es_419"}
     Languages{
@@ -18,5 +19,4 @@
         wo{"wolof"}
         zgh{"tamazight marroquí estándar"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_HN.txt b/icu4c/source/data/lang/es_HN.txt
index f72c085..d668a31 100644
--- a/icu4c/source/data/lang/es_HN.txt
+++ b/icu4c/source/data/lang/es_HN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_HN{
     %%Parent{"es_419"}
     Languages{
@@ -18,5 +19,4 @@
         wo{"wolof"}
         zgh{"tamazight marroquí estándar"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_MX.txt b/icu4c/source/data/lang/es_MX.txt
index 94be2b1..563fc4e 100644
--- a/icu4c/source/data/lang/es_MX.txt
+++ b/icu4c/source/data/lang/es_MX.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_MX{
     %%Parent{"es_419"}
     Languages{
@@ -11,7 +12,6 @@
         bho{"bhoshpuri"}
         bla{"siksika"}
         bua{"buriat"}
-        de_AT{"alemán austriaco"}
         dum{"neerlandés medieval"}
         enm{"inglés medieval"}
         eu{"euskera"}
@@ -52,6 +52,9 @@
         zh_Hans{"chino mandarín simplificado"}
         zh_Hant{"chino mandarín tradicional"}
     }
+    Languages%menu{
+        ckb{"kurdo del centro"}
+    }
     Languages%short{
         en_GB{"inglés (R. U.)"}
     }
@@ -69,14 +72,10 @@
         collation{
             ducet{"orden de clasificación de Unicode predeterminado"}
         }
-        lb{
-            normal{"salto de línea normal"}
-        }
         numbers{
             gujr{"dígitos en gujarati"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         historic{"{0} — Históricos"}
         miscellaneous{"{0} — Varios"}
diff --git a/icu4c/source/data/lang/es_NI.txt b/icu4c/source/data/lang/es_NI.txt
index ff83a7c..2faa61b 100644
--- a/icu4c/source/data/lang/es_NI.txt
+++ b/icu4c/source/data/lang/es_NI.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_NI{
     %%Parent{"es_419"}
     Languages{
@@ -18,5 +19,4 @@
         wo{"wolof"}
         zgh{"tamazight marroquí estándar"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_PA.txt b/icu4c/source/data/lang/es_PA.txt
index 1832d25..e7e3a22 100644
--- a/icu4c/source/data/lang/es_PA.txt
+++ b/icu4c/source/data/lang/es_PA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PA{
     %%Parent{"es_419"}
     Languages{
@@ -18,5 +19,4 @@
         wo{"wolof"}
         zgh{"tamazight marroquí estándar"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_PE.txt b/icu4c/source/data/lang/es_PE.txt
index 995cf84..68f8b83 100644
--- a/icu4c/source/data/lang/es_PE.txt
+++ b/icu4c/source/data/lang/es_PE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PE{
     %%Parent{"es_419"}
     Languages{
@@ -18,5 +19,4 @@
         wo{"wolof"}
         zgh{"tamazight marroquí estándar"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_PR.txt b/icu4c/source/data/lang/es_PR.txt
index 8416246..755366f 100644
--- a/icu4c/source/data/lang/es_PR.txt
+++ b/icu4c/source/data/lang/es_PR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PR{
     %%Parent{"es_419"}
     Languages{
@@ -11,5 +12,4 @@
         ss{"siswati"}
         wo{"wolof"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_PY.txt b/icu4c/source/data/lang/es_PY.txt
index 33fde07..5e8bf5b 100644
--- a/icu4c/source/data/lang/es_PY.txt
+++ b/icu4c/source/data/lang/es_PY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PY{
     %%Parent{"es_419"}
     Languages{
@@ -18,5 +19,4 @@
         wo{"wolof"}
         zgh{"tamazight marroquí estándar"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_SV.txt b/icu4c/source/data/lang/es_SV.txt
index 783b1ae..0d7d587 100644
--- a/icu4c/source/data/lang/es_SV.txt
+++ b/icu4c/source/data/lang/es_SV.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_SV{
     %%Parent{"es_419"}
     Languages{
@@ -11,5 +12,4 @@
         ss{"siswati"}
         wo{"wolof"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_US.txt b/icu4c/source/data/lang/es_US.txt
index 35cd7fe..d2e2584 100644
--- a/icu4c/source/data/lang/es_US.txt
+++ b/icu4c/source/data/lang/es_US.txt
@@ -1,12 +1,13 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_US{
     %%Parent{"es_419"}
     Languages{
         ace{"acehnés"}
         alt{"altái meridional"}
         arp{"arapaho"}
-        bas{"basa"}
+        ars{"árabe najdi"}
         bax{"bamun"}
         bho{"bhojpuri"}
         bla{"siksika"}
@@ -26,13 +27,13 @@
         kbd{"kabardiano"}
         krc{"karachay-balkar"}
         lo{"lao"}
+        lou{"creole de Luisiana"}
         lus{"lushai"}
         mga{"irlandés medieval"}
         nl_BE{"flamenco"}
         nr{"ndebele meridional"}
         nso{"sotho septentrional"}
         rm{"romanche"}
-        rn{"kiroundi"}
         shu{"árabe chadiano"}
         sma{"sami meridional"}
         ss{"siswati"}
@@ -42,35 +43,23 @@
         tet{"tetún"}
         tn{"setchwana"}
         tyv{"tuviniano"}
-        wo{"wolof"}
         xal{"kalmyk"}
         zh_Hans{"chino simplificado"}
         zh_Hant{"chino tradicional"}
     }
+    Languages%variant{
+        ug{"uigur variante"}
+    }
     Scripts{
-        Hanb{"hanb"}
-        Mlym{"malayálam"}
-        Telu{"telegu"}
+        Hrkt{"silabarios del japonés"}
+        Zzzz{"letra desconocida"}
     }
     Types{
-        calendar{
-            roc{"calendario minguo"}
-        }
-        collation{
-            ducet{"orden de clasificación de Unicode predeterminado"}
-        }
-        lb{
-            normal{"salto de línea normal"}
-        }
         numbers{
             gujr{"dígitos en gujarati"}
-            knda{"números en kannada"}
-            laoo{"números en lao"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
-        historic{"{0} — Históricos"}
         miscellaneous{"{0} — Varios"}
     }
 }
diff --git a/icu4c/source/data/lang/es_UY.txt b/icu4c/source/data/lang/es_UY.txt
index 41fc7c0..143b9b3 100644
--- a/icu4c/source/data/lang/es_UY.txt
+++ b/icu4c/source/data/lang/es_UY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_UY{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/es_VE.txt b/icu4c/source/data/lang/es_VE.txt
index dfeabe2..390938a 100644
--- a/icu4c/source/data/lang/es_VE.txt
+++ b/icu4c/source/data/lang/es_VE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_VE{
     %%Parent{"es_419"}
     Languages{
@@ -18,5 +19,4 @@
         wo{"wolof"}
         zgh{"tamazight marroquí estándar"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/et.txt b/icu4c/source/data/lang/et.txt
index c05ffc3..029cade 100644
--- a/icu4c/source/data/lang/et.txt
+++ b/icu4c/source/data/lang/et.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 et{
     Keys{
         calendar{"kalender"}
@@ -45,7 +46,7 @@
         ang{"vanainglise"}
         anp{"angika"}
         ar{"araabia"}
-        ar_001{"araabia (tänapäevane)"}
+        ar_001{"tänapäeva araabia kirjakeel"}
         arc{"aramea"}
         arn{"mapudunguni"}
         aro{"araona"}
@@ -413,7 +414,7 @@
         nnh{"ngiembooni"}
         no{"norra"}
         nog{"nogai"}
-        non{"vanapõhjala"}
+        non{"vanapõhja"}
         nov{"noviaal"}
         nqo{"nkoo"}
         nr{"lõunandebele"}
@@ -568,7 +569,7 @@
         trv{"taroko"}
         ts{"tsonga"}
         tsd{"tsakoonia"}
-        tsi{"tšimši"}
+        tsi{"tsimši"}
         tt{"tatari"}
         ttt{"lõunataadi"}
         tum{"tumbuka"}
@@ -636,19 +637,24 @@
         zh_Hant{"traditsiooniline mandariinihiina"}
     }
     Languages%menu{
-        yue{"kantoni hiina"}
-        zh{"mandariinihiina"}
+        ckb{"kurdi (keskkurdi)"}
+        yue{"hiina (kantoni)"}
+        zh{"hiina (mandariinihiina)"}
     }
     Languages%short{
         az{"aseri"}
         en_GB{"Briti inglise"}
         en_US{"USA inglise"}
     }
+    Languages%variant{
+        ckb{"keskkurdi"}
+    }
     Scripts{
         Afak{"afaka"}
         Aghb{"albaani"}
         Ahom{"ahomi"}
         Arab{"araabia"}
+        Aran{"nastaliik"}
         Armi{"vanaaramea"}
         Armn{"armeenia"}
         Avst{"avesta"}
@@ -668,12 +674,14 @@
         Cari{"kaaria"}
         Cham{"tšaami"}
         Cher{"tšerokii"}
+        Chrs{"horezmi"}
         Cirt{"Cirthi"}
         Copt{"kopti"}
         Cprt{"Küprose silpkiri"}
         Cyrl{"kirillitsa"}
         Cyrs{"kürilliline kirikuslaavi"}
         Deva{"devanaagari"}
+        Diak{"divehi"}
         Dsrt{"desereti"}
         Dupl{"Duployé kiirkiri"}
         Egyd{"egiptuse demootiline"}
@@ -684,6 +692,7 @@
         Geok{"hutsuri"}
         Geor{"gruusia"}
         Glag{"glagoolitsa"}
+        Gong{"Gūnjāla gondi"}
         Gonm{"Masarami gondi"}
         Goth{"gooti"}
         Gran{"grantha"}
@@ -714,6 +723,7 @@
         Khar{"kharoshthi"}
         Khmr{"khmeeri"}
         Khoj{"hodžki"}
+        Kits{"kitani väike kiri"}
         Knda{"kannada"}
         Kore{"korea segakiri"}
         Kpel{"kpelle"}
@@ -732,6 +742,7 @@
         Lyci{"lüükia"}
         Lydi{"lüüdia"}
         Mahj{"mahaadžani"}
+        Maka{"makassari"}
         Mand{"mandea"}
         Mani{"mani"}
         Maya{"maaja hieroglüüfkiri"}
@@ -768,6 +779,7 @@
         Plrd{"Pollardi miao"}
         Prti{"partia raidkiri"}
         Rjng{"redžangi"}
+        Rohg{"rohingja"}
         Roro{"rongorongo"}
         Runr{"ruunikiri"}
         Samr{"Samaaria"}
@@ -780,6 +792,8 @@
         Sidd{"siddhami"}
         Sind{"hudavadi"}
         Sinh{"singali"}
+        Sogd{"sogdi"}
+        Sogo{"vanasogdi"}
         Sora{"sora"}
         Soyo{"sojombo"}
         Sund{"sunda"}
@@ -943,11 +957,13 @@
             cham{"tšaami numbrid"}
             cyrl{"kirillitsa numbrid"}
             deva{"devanaagari numbrid"}
+            diak{"divehi numbrid"}
             ethi{"etioopia numbrid"}
             finance{"finantsnumbrid"}
             fullwide{"täislaiusega numbrid"}
             geor{"gruusia numbrid"}
-            gonm{"masaram gondi numbrid"}
+            gong{"Gūnjāla gondi numbrid"}
+            gonm{"Masarami gondi numbrid"}
             grek{"kreeka numbrid"}
             greklow{"väiketähelised kreeka numbrid"}
             gujr{"gudžarati numbrid"}
@@ -984,6 +1000,7 @@
             olck{"santali numbrid"}
             orya{"oria numbrid"}
             osma{"osmani numbrid"}
+            rohg{"rohingja numbrid"}
             roman{"Rooma numbrid"}
             romanlow{"väiketähelised Rooma numbrid"}
             saur{"sauraštra numbrid"}
@@ -1046,7 +1063,6 @@
         VALENCIA{"valentsia"}
         WADEGILE{"Wade’i-Gilesi latinisatsioon"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} – kõik"}
         category-list{"{0}: {1}"}
@@ -1061,6 +1077,8 @@
             one{"{0} kriips"}
             other{"{0} kriipsu"}
         }
+        subscript{"{0} alaindeksina"}
+        superscript{"{0} ülaindeksina"}
     }
     codePatterns{
         language{"Keel: {0}"}
diff --git a/icu4c/source/data/lang/eu.txt b/icu4c/source/data/lang/eu.txt
index 1c86568..c535e75 100644
--- a/icu4c/source/data/lang/eu.txt
+++ b/icu4c/source/data/lang/eu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 eu{
     Keys{
         calendar{"Egutegia"}
@@ -418,7 +419,7 @@
         yue{"kantonera"}
         zgh{"amazigera estandarra"}
         zh{"txinera"}
-        zh_Hans{"txinera soildua"}
+        zh_Hans{"txinera sinplifikatu"}
         zh_Hant{"txinera tradizionala"}
         zu{"zuluera"}
         zun{"zuñia"}
@@ -635,7 +636,6 @@
         SCOTLAND{"ESKOZIAR INGELESA"}
         VALENCIA{"VALENTZIERA"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — Guztiak"}
         category-list{"{0}: {1}"}
@@ -647,9 +647,11 @@
         other{"{0} — Bestelakoak"}
         scripts{"Scriptak — {0}"}
         strokes{
-            one{"{0} trazuak"}
-            other{"{0} trazuak"}
+            one{"{0} trazu"}
+            other{"{0} trazu"}
         }
+        subscript{"{0} azpi-indizea"}
+        superscript{"{0} goi-indizea"}
     }
     codePatterns{
         language{"{0}"}
diff --git a/icu4c/source/data/lang/ewo.txt b/icu4c/source/data/lang/ewo.txt
index 5696ff8..9740e87 100644
--- a/icu4c/source/data/lang/ewo.txt
+++ b/icu4c/source/data/lang/ewo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ewo{
     Languages{
         ak{"Ǹkɔ́bɔ akán"}
@@ -48,5 +49,4 @@
         zh{"Ǹkɔ́bɔ tsainís"}
         zu{"ǹkɔ́bɔ zulú"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/fa.txt b/icu4c/source/data/lang/fa.txt
index 50ed5e7..8d5730c 100644
--- a/icu4c/source/data/lang/fa.txt
+++ b/icu4c/source/data/lang/fa.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fa{
     Keys{
         calendar{"تقویم"}
@@ -103,7 +104,7 @@
         chm{"ماریایی"}
         cho{"چوکتویی"}
         chp{"چیپه‌ویه‌ای"}
-        chr{"چروکیایی"}
+        chr{"چروکی"}
         chy{"شایانی"}
         ckb{"کردی مرکزی"}
         co{"کورسی"}
@@ -176,7 +177,7 @@
         frr{"فریزی شمالی"}
         frs{"فریزی شرقی"}
         fur{"فریولیایی"}
-        fy{"فریزی غربی"}
+        fy{"فریسی غربی"}
         ga{"ایرلندی"}
         gaa{"گایی"}
         gag{"گاگائوزیایی"}
@@ -201,9 +202,9 @@
         guz{"گوسی"}
         gv{"مانی"}
         gwi{"گویچ این"}
-        ha{"هوسیایی"}
+        ha{"هوسایی"}
         hai{"هایدایی"}
-        haw{"هاوائیایی"}
+        haw{"هاوایی"}
         he{"عبری"}
         hi{"هندی"}
         hif{"هندی فیجیایی"}
@@ -218,7 +219,7 @@
         hup{"هوپا"}
         hy{"ارمنی"}
         hz{"هریرویی"}
-        ia{"میان‌زبان"}
+        ia{"اینترلینگوا"}
         iba{"ایبانی"}
         ibb{"ایبیبیو"}
         id{"اندونزیایی"}
@@ -277,12 +278,12 @@
         ks{"کشمیری"}
         ksb{"شامبالا"}
         ksf{"بافیایی"}
-        ksh{"ریپواری"}
+        ksh{"کولش"}
         ku{"کردی"}
         kum{"کومیکی"}
         kut{"کوتنی"}
         kv{"کومیایی"}
-        kw{"کرنوالی"}
+        kw{"کورنی"}
         ky{"قرقیزی"}
         la{"لاتین"}
         lad{"لادینو"}
@@ -321,19 +322,19 @@
         men{"منده‌ای"}
         mer{"مرویی"}
         mfe{"موریسین"}
-        mg{"مالاگاسیایی"}
+        mg{"مالاگاسی"}
         mga{"ایرلندی میانه"}
         mgh{"ماکوا متو"}
         mgo{"متایی"}
         mh{"مارشالی"}
-        mi{"مائوریایی"}
+        mi{"مائوری"}
         mic{"میکماکی"}
         min{"مینانگ‌کابویی"}
         mk{"مقدونی"}
         ml{"مالایالامی"}
         mn{"مغولی"}
         mnc{"مانچویی"}
-        mni{"میته‌ای"}
+        mni{"مانیپوری"}
         moh{"موهاکی"}
         mos{"ماسیایی"}
         mr{"مراتی"}
@@ -464,7 +465,7 @@
         srr{"سریری"}
         ss{"سوازیایی"}
         ssy{"ساهو"}
-        st{"سوتویی جنوبی"}
+        st{"سوتوی جنوبی"}
         su{"سوندایی"}
         suk{"سوکومایی"}
         sus{"سوسویی"}
@@ -569,6 +570,7 @@
     }
     Languages%variant{
         az{"آذربایجانی"}
+        ckb{"کردی سورانی"}
         ps{"پختو"}
     }
     Scripts{
@@ -615,7 +617,7 @@
         Hebr{"عبری"}
         Hira{"هیراگانا"}
         Hluw{"هیروگلیف آناتولی"}
-        Hrkt{"سیلابی‌های ژاپنی"}
+        Hrkt{"هجانگاری ژاپنی"}
         Hung{"مجاری باستان"}
         Inds{"ایندوس"}
         Ital{"ایتالی باستان"}
@@ -633,7 +635,7 @@
         Laoo{"لائوسی"}
         Latf{"لاتینی فراکتور"}
         Latg{"لاتینی گیلی"}
-        Latn{"لاتینی"}
+        Latn{"لاتین"}
         Limb{"لیمبایی"}
         Lina{"خطی الف"}
         Linb{"خطی ب"}
@@ -652,7 +654,7 @@
         Nbat{"نبطی"}
         Ogam{"اوگامی"}
         Orkh{"اورخونی"}
-        Orya{"اوریه‌ای"}
+        Orya{"اودیه"}
         Palm{"پالمیرایی"}
         Perm{"پرمی باستان"}
         Phli{"پهلوی کتیبه‌ای"}
@@ -679,7 +681,7 @@
         Teng{"تنگوار"}
         Tfng{"تیفیناغی"}
         Tglg{"تاگالوگی"}
-        Thaa{"تانه‌ای"}
+        Thaa{"تانا"}
         Thai{"تایلندی"}
         Tibt{"تبتی"}
         Ugar{"اوگاریتی"}
@@ -802,8 +804,8 @@
         }
         ms{
             metric{"دستگاه متریک"}
-            uksystem{"دستگاه اندازه‌گیری بریتانیایی"}
-            ussystem{"دستگاه اندازه‌گیری امریکایی"}
+            uksystem{"سیستم اندازه‌گیری انگلیسی"}
+            ussystem{"سیستم اندازه‌گیری امریکایی"}
         }
         numbers{
             arab{"ارقام عربی"}
@@ -844,7 +846,7 @@
             mymr{"ارقام میانماری"}
             mymrshan{"ارقام شان میانماری"}
             native{"ارقام بومی"}
-            orya{"ارقام اوریه‌ای"}
+            orya{"ارقام اودیه"}
             roman{"اعداد رومی"}
             romanlow{"اعداد رومی با حروف کوچک"}
             taml{"اعداد سنتی تامیلی"}
@@ -872,7 +874,6 @@
         SAAHO{"ساهویی"}
         SCOTLAND{"انگلیسی معیار اسکاتلند"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — همه"}
         category-list{"{0}: {1}"}
@@ -887,6 +888,8 @@
             one{"{0} ضربه"}
             other{"{0} ضربه"}
         }
+        subscript{"زیرنگاشت {0}"}
+        superscript{"بالانگاشت {0}"}
     }
     codePatterns{
         language{"زبان: {0}"}
diff --git a/icu4c/source/data/lang/fa_AF.txt b/icu4c/source/data/lang/fa_AF.txt
index 7b72211..a4c9784 100644
--- a/icu4c/source/data/lang/fa_AF.txt
+++ b/icu4c/source/data/lang/fa_AF.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fa_AF{
     Languages{
         ab{"افریکانس"}
@@ -19,7 +20,6 @@
         ja{"جاپانی"}
         ko{"کوریایی"}
         ksh{"کلنی"}
-        kw{"کورنی"}
         ky{"قرغزی"}
         lus{"میزویی"}
         mai{"مایتیلی"}
@@ -46,5 +46,4 @@
     Scripts{
         Mong{"مغلی"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ff.txt b/icu4c/source/data/lang/ff.txt
index 8de486f..c7983ad 100644
--- a/icu4c/source/data/lang/ff.txt
+++ b/icu4c/source/data/lang/ff.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff{
     Languages{
         ak{"Akaan"}
@@ -48,5 +49,4 @@
         zh{"Sinuwaare"}
         zu{"Suluŋkoore"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ff_Adlm.txt b/icu4c/source/data/lang/ff_Adlm.txt
index 4ca7bd5..618a60c 100644
--- a/icu4c/source/data/lang/ff_Adlm.txt
+++ b/icu4c/source/data/lang/ff_Adlm.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm{
     %%Parent{"root"}
     Keys{
@@ -13,13 +14,14 @@
         numbers{"𞤈𞤢𞤽𞤢𞤥𞤫"}
     }
     Languages{
-        aa{"𞤢𞤬𞤢𞥄𞤪𞤫"}
+        aa{"𞤀𞤬𞤢𞥄𞤪𞤫"}
         af{"𞤀𞤬𞤪𞤭𞤳𞤢𞤲𞤪𞤫"}
         ak{"𞤀𞤳𞤢𞤲𞤪𞤫"}
         am{"𞤀𞤥𞤸𞤢𞤪𞤭𞥅𞤪𞤫"}
         an{"𞤀𞤪𞤢𞤺𞤮𞤲𞤪𞤫"}
         anp{"𞤀𞤲𞤺𞤭𞤳𞤢𞥄𞤪𞤫"}
-        ar{"𞤀𞥄𞤪𞤫𞤦𞤫𞥅𞤪𞤫"}
+        ar{"𞤀𞥄𞤪𞤢𞤦𞤫𞥅𞤪𞤫"}
+        ar_001{"𞤀𞥄𞤪𞤢𞤦𞤫𞥅𞤪𞤫 𞤊𞤵𞤧𞤸𞤢 𞤒𞤫𞤲𞤯𞤵𞤳𞤢"}
         arp{"𞤀𞤪𞤢𞤨𞤢𞤸𞤮𞥅𞤪𞤫"}
         as{"𞤀𞤧𞤢𞤥𞤫𞥅𞤪𞤫"}
         asa{"𞤀𞤧𞤵𞥅𞤪𞤫"}
@@ -61,9 +63,9 @@
         da{"𞤁𞤢𞥄𞤲𞤭𞤧𞤳𞤮𞥅𞤪𞤫"}
         dak{"𞤁𞤢𞤳𞤮𞤼𞤢𞥄𞤪𞤫"}
         dar{"𞤁𞤢𞤪𞤺𞤭𞤲𞤢𞥄𞤪𞤫"}
-        de{"𞤘𞤫𞤪𞤥𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
-        de_AT{"𞤘𞤫𞤪𞤥𞤢𞤲𞤳𞤮𞥅𞤪𞤫 𞤐𞤢𞤥𞤧𞤭𞤱𞤭𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
-        de_CH{"𞤘𞤫𞤪𞤥𞤢𞤲𞤳𞤮𞥅𞤪𞤫 𞤅𞤵𞤱𞤭𞤧𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫 𞤚𞤮𞥅𞤱𞤵𞤲𞥋𞤣𞤫"}
+        de{"𞤔𞤫𞤪𞤥𞤢𞤲𞤭𞤲𞤳𞤮𞥅𞤪𞤫"}
+        de_AT{"𞤔𞤫𞤪𞤥𞤢𞤲𞤭𞤲𞤳𞤮𞥅𞤪𞤫 𞤌𞤼𞤭𞤪𞤧𞤢"}
+        de_CH{"𞤔𞤫𞤪𞤥𞤢𞤲𞤭𞤲𞤳𞤮𞥅𞤪𞤫 𞤅𞤵𞤱𞤭𞥅𞤧"}
         dje{"𞤔𞤢𞤪𞤥𞤢𞥄𞤪𞤫"}
         dua{"𞤁𞤵𞤱𞤢𞤤𞤢𞥄𞤪𞤫"}
         dv{"𞤁𞤭𞥅𞤬𞤫𞤸𞤭𞥅𞤪𞤫"}
@@ -71,10 +73,10 @@
         dz{"𞤄𞤵𞥅𞤼𞤢𞤲𞤪𞤫"}
         dzg{"𞤁𞤢𞤶𞤢𞤺𞤢𞥄𞤪𞤫"}
         en{"𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫"}
-        en_AU{"𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 𞤌𞤧𞤼𞤪𞤢𞤤𞤭𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
-        en_CA{"𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 𞤑𞤢𞤲𞤢𞤣𞤭𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
-        en_GB{"𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 𞤄𞤪𞤭𞤼𞤢𞤲𞤭𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
-        en_US{"𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 𞤀𞤥𞤭𞤪𞤭𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
+        en_AU{"𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 𞤌𞤧𞤼𞤢𞤪𞤤𞤭𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
+        en_CA{"𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 𞤑𞤢𞤲𞤢𞤣𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
+        en_GB{"𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 𞤄𞤭𞤪𞤼𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
+        en_US{"𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞤲𞤳𞤮𞤪𞤫"}
         es{"𞤅𞤭𞤨𞤢𞤲𞤭𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
         es_419{"𞤅𞤭𞤨𞤢𞤲𞤭𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫 𞤀𞤥𞤭𞤪𞤭𞤳 𞤂𞤢𞤼𞤭𞤲𞤭𞤴𞤢"}
         es_ES{"𞤅𞤭𞤨𞤢𞤲𞤭𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫 𞤀𞤪𞤮𞤦𞤢"}
@@ -82,20 +84,20 @@
         eu{"𞤄𞤢𞤧𞤳𞤢𞤪𞤢𞥄𞤪𞤫"}
         ff{"𞤆𞤵𞤤𞤢𞤪"}
         fr{"𞤊𞤢𞤪𞤢𞤲𞤧𞤭𞥅𞤪𞤫"}
-        fr_CA{"𞤊𞤢𞤪𞤢𞤲𞤧𞤭𞥅𞤪𞤫 𞤑𞤢𞤲𞤢𞤣𞤭𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
-        fr_CH{"𞤊𞤢𞤪𞤢𞤲𞤧𞤭𞥅𞤪𞤫 𞤅𞤵𞤱𞤭𞤧𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
+        fr_CA{"𞤊𞤢𞤪𞤢𞤲𞤧𞤭𞥅𞤪𞤫 𞤑𞤢𞤲𞤢𞤣𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
+        fr_CH{"𞤊𞤢𞤪𞤢𞤲𞤧𞤭𞥅𞤪𞤫 𞤅𞤵𞤱𞤭𞥅𞤧"}
         fy{"𞤊𞤭𞤪𞤭𞥅𞤧𞤭𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫 𞤖𞤭𞤪𞤲𞤢"}
         ga{"𞤋𞤪𞤤𞤢𞤲𞤣𞤫𞥅𞤪𞤫"}
-        hi{"𞤖𞤭𞤲𞤣𞤭𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
+        hi{"𞤖𞤭𞤲𞤣𞤭𞥅𞤪𞤫"}
         hr{"𞤑𞤮𞤪𞤮𞤱𞤢𞤧𞤭𞥅𞤪𞤫"}
         hy{"𞤀𞤪𞤥𞤫𞤲𞤭𞥅𞤪𞤫"}
         ia{"𞤉𞤲𞤼𞤫𞤪𞤤𞤭𞤺𞤢𞥄𞤪𞤫"}
-        id{"𞤉𞤲𞤣𞤮𞤲𞤮𞥅𞤧𞤭𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
+        id{"𞤋𞤲𞤣𞤮𞤲𞤭𞥅𞤧𞤭𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
         ilo{"𞤋𞤤𞤮𞤳𞤮𞥅𞤪𞤫"}
         inh{"𞤋𞤲𞤺𞤮𞤧𞤫𞥅𞤪𞤫"}
         it{"𞤋𞤼𞤢𞤤𞤭𞤲𞤳𞤮𞥅𞤪𞤫"}
         iu{"𞤋𞤲𞤵𞤳𞤼𞤫𞥅𞤪𞤫"}
-        ja{"𞤔𞤢𞤨𞤮𞤲𞤫𞥅𞤪𞤫"}
+        ja{"𞤐𞤭𞤨𞤮𞤲𞤪𞤫"}
         jgo{"𞤐𞤺𞤮𞤥𞤦𞤢𞥄𞤪𞤫"}
         jmc{"𞤃𞤢𞤳𞤢𞤥𞤫𞥅𞤪𞤫"}
         jv{"𞤔𞤢𞥄𞤱𞤢𞤫𞥅𞤪𞤫"}
@@ -138,7 +140,7 @@
         new{"𞤐𞤫𞤱𞤢𞤪𞤭𞥅𞤪𞤫"}
         ng{"𞤐𞤣𞤮𞤲𞤺𞤢𞥄𞤪𞤫"}
         nia{"𞤙𞤢𞤧𞤭𞤲𞤳𞤮𞥅𞤪𞤫"}
-        nl{"𞤁𞤮𞥅𞤷𞤪𞤫"}
+        nl{"𞤁𞤮𞥅𞤷𞤵𞤪𞤫"}
         nl_BE{"𞤊𞤭𞤤𞤢𞤥𞤢𞤲𞤪𞤫"}
         nnh{"𞤐𞤶𞤢𞤥𞤦𞤵𞥅𞤪𞤫"}
         nqo{"𞤐𞤳𞤮𞥅𞤪𞤫"}
@@ -147,7 +149,7 @@
         pt{"𞤆𞤮𞤪𞤼𞤮𞤳𞤫𞥅𞤧𞤭𞥅𞤪𞤫"}
         pt_BR{"𞤆𞤮𞤪𞤼𞤮𞤳𞤫𞥅𞤧𞤭𞥅𞤪𞤫 𞤄𞤪𞤫𞥁𞤭𞤤"}
         pt_PT{"𞤆𞤮𞤪𞤼𞤮𞤳𞤫𞥅𞤧𞤭𞥅𞤪𞤫 𞤆𞤮𞤪𞤼𞤭𞤺𞤢𞥄𞤤"}
-        ru{"𞤈𞤭𞥅𞤧𞤭𞤲𞤳𞤮𞥅𞤪𞤫"}
+        ru{"𞤈𞤮𞥅𞤧𞤭𞤴𞤢𞤲𞤪𞤫"}
         rup{"𞤀𞤪𞤮𞤥𞤢𞤲𞤭𞥅𞤪𞤫"}
         smn{"𞤋𞤲𞤢𞤪𞤭𞤧𞤳𞤢𞤤𞤭𞥅𞤪𞤫"}
         sq{"𞤀𞤤𞤦𞤢𞤲𞤭𞥅𞤪𞤫"}
@@ -174,11 +176,18 @@
         yi{"𞤒𞤭𞤣𞤭𞤧𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
         yo{"𞤒𞤮𞥅𞤪𞤵𞤦𞤢𞥄𞤪𞤫"}
         yue{"𞤑𞤢𞤲𞤼𞤮𞤲𞤫𞥅𞤪𞤫"}
-        zh{"𞤅𞤭𞥅𞤲𞤭𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
-        zh_Hans{"𞤅𞤭𞥅𞤲𞤭𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫 𞤐𞤫𞤱𞤭𞥅𞤲𞥋𞤣𞤫"}
-        zh_Hant{"𞤅𞤭𞥅𞤲𞤭𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫 𞤚𞤢𞤱𞤢𞥄𞤲𞥋𞤣𞤫"}
+        zh{"𞤕𞤢𞤴𞤲𞤢𞤲𞤳𞤮𞥅𞤪𞤫"}
+        zh_Hans{"𞤕𞤢𞤴𞤲𞤢𞤲𞤳𞤮𞥅𞤪𞤫 𞤖𞤮𞤴𞤬𞤭𞤲𞤢𞥄𞤲𞤣𞤫"}
+        zh_Hant{"𞤕𞤢𞤴𞤲𞤢𞤲𞤳𞤮𞥅𞤪𞤫 𞤒𞤫𞤷𞥆𞤵𞤲𞥋𞤣𞤫"}
         zu{"𞥁𞤵𞤤𞤵𞥅𞤪𞤫"}
     }
+    Languages%long{
+        zh_Hans{"𞤃𞤢𞤲𞤣𞤢𞤪𞤫𞤲𞤪𞤫 𞤖𞤮𞤴𞤬𞤭𞤲𞤢𞥄𞤲𞤣𞤫"}
+        zh_Hant{"𞤃𞤢𞤲𞤣𞤢𞤪𞤫𞤲𞤪𞤫 𞤀𞤪𞤣𞤭𞥅𞤲𞤣𞤫"}
+    }
+    Languages%menu{
+        zh{"𞤕𞤢𞤴𞤲𞤢𞤲𞤳𞤮𞥅𞤪𞤫 𞤃𞤢𞤲𞤣𞤢𞤪𞤫𞤲𞤪𞤫"}
+    }
     Languages%short{
         az{"𞤀𞤶𞤢𞤪𞤭𞥅𞤪𞤫"}
         en_GB{"𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 𞤁𞤘"}
@@ -186,6 +195,19 @@
     }
     Scripts{
         Adlm{"𞤀𞤁𞤂𞤢𞤃"}
+        Arab{"𞤀𞥄𞤪𞤢𞤦𞤵"}
+        Cyrl{"𞤅𞤭𞤪𞤤𞤭𞤳"}
+        Hans{"𞤖𞤮𞤴𞤲𞤢𞥄𞤲𞤣𞤫"}
+        Hant{"𞤚𞤢𞤱𞤢𞥄𞤲𞤣𞤫"}
+        Jpan{"𞤐𞤭𞤨𞤮𞤲𞤶𞤭"}
+        Kore{"𞤑𞤮𞥅𞤪𞤫𞤴𞤢𞤲𞤶𞤭"}
+        Latn{"𞤂𞤢𞤼𞤫𞤲"}
+        Zxxx{"𞤀𞤧𞤱𞤭𞤲𞤣𞤢𞥄𞤯𞤵𞤲"}
+        Zzzz{"𞤄𞤭𞤲𞤣𞤭 𞤀𞤧-𞤢𞤲𞤣𞤢𞥄𞤯𞤭"}
+    }
+    Scripts%stand-alone{
+        Hans{"𞤖𞤢𞥄𞤲𞤪𞤫 𞤖𞤮𞤴𞤲𞤢𞥄𞤲𞤣𞤫"}
+        Hant{"𞤖𞤢𞥄𞤲𞤪𞤫 𞤚𞤢𞤱𞤢𞥄𞤲𞤣𞤫"}
     }
     Types{
         calendar{
@@ -272,7 +294,6 @@
             tibt{"𞤂𞤭𞤥𞤫 𞤚𞤭𞤦𞤫𞤼𞤭𞤲𞤳𞤮"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"{0}"}
         script{"{0}"}
diff --git a/icu4c/source/data/lang/ff_CM.txt b/icu4c/source/data/lang/ff_CM.txt
index c381f6c..0bf68ef 100644
--- a/icu4c/source/data/lang/ff_CM.txt
+++ b/icu4c/source/data/lang/ff_CM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_CM{
     "%%ALIAS"{"ff_Latn_CM"}
 }
diff --git a/icu4c/source/data/lang/ff_GN.txt b/icu4c/source/data/lang/ff_GN.txt
index c3a0bf3..433db4d 100644
--- a/icu4c/source/data/lang/ff_GN.txt
+++ b/icu4c/source/data/lang/ff_GN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_GN{
     "%%ALIAS"{"ff_Latn_GN"}
 }
diff --git a/icu4c/source/data/lang/ff_Latn.txt b/icu4c/source/data/lang/ff_Latn.txt
index 3d8715b..d30cb62 100644
--- a/icu4c/source/data/lang/ff_Latn.txt
+++ b/icu4c/source/data/lang/ff_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ff_Latn_CM.txt b/icu4c/source/data/lang/ff_Latn_CM.txt
index a141c2f..123bc57 100644
--- a/icu4c/source/data/lang/ff_Latn_CM.txt
+++ b/icu4c/source/data/lang/ff_Latn_CM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/ff_Latn_GN.txt b/icu4c/source/data/lang/ff_Latn_GN.txt
index b37284e..54b7546 100644
--- a/icu4c/source/data/lang/ff_Latn_GN.txt
+++ b/icu4c/source/data/lang/ff_Latn_GN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/ff_Latn_MR.txt b/icu4c/source/data/lang/ff_Latn_MR.txt
index 9b83c95..dd6364b 100644
--- a/icu4c/source/data/lang/ff_Latn_MR.txt
+++ b/icu4c/source/data/lang/ff_Latn_MR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/ff_Latn_SN.txt b/icu4c/source/data/lang/ff_Latn_SN.txt
index 6112f6f..33ed407 100644
--- a/icu4c/source/data/lang/ff_Latn_SN.txt
+++ b/icu4c/source/data/lang/ff_Latn_SN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/ff_MR.txt b/icu4c/source/data/lang/ff_MR.txt
index 17a8873..1da6e51 100644
--- a/icu4c/source/data/lang/ff_MR.txt
+++ b/icu4c/source/data/lang/ff_MR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_MR{
     "%%ALIAS"{"ff_Latn_MR"}
 }
diff --git a/icu4c/source/data/lang/ff_SN.txt b/icu4c/source/data/lang/ff_SN.txt
index c690854..ca2f4ec 100644
--- a/icu4c/source/data/lang/ff_SN.txt
+++ b/icu4c/source/data/lang/ff_SN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_SN{
     "%%ALIAS"{"ff_Latn_SN"}
 }
diff --git a/icu4c/source/data/lang/fi.txt b/icu4c/source/data/lang/fi.txt
index bf239be..4237229 100644
--- a/icu4c/source/data/lang/fi.txt
+++ b/icu4c/source/data/lang/fi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fi{
     Keys{
         calendar{"kalenteri"}
@@ -123,7 +124,7 @@
         chp{"chipewyan"}
         chr{"cherokee"}
         chy{"cheyenne"}
-        ckb{"sorani"}
+        ckb{"soranî"}
         co{"korsika"}
         cop{"kopti"}
         cps{"capiznon"}
@@ -634,13 +635,15 @@
         zen{"zenaga"}
         zgh{"vakioitu tamazight"}
         zh{"kiina"}
-        zh_Hans{"yksinkertaistettu kiina"}
-        zh_Hant{"perinteinen kiina"}
         zu{"zulu"}
         zun{"zuni"}
         zxx{"ei kielellistä sisältöä"}
         zza{"zaza"}
     }
+    Languages%long{
+        zh_Hans{"mandariinikiina (yksinkertaistettu)"}
+        zh_Hant{"mandariinikiina (perinteinen)"}
+    }
     Languages%menu{
         ckb{"kurdi – soranî"}
         yue{"kiina (kantonin)"}
@@ -905,7 +908,7 @@
             yes{"isojen ja pienten kirjainten lajittelu erikseen"}
         }
         colNormalization{
-            no{"lajittelu ilman normalisoinrtia"}
+            no{"lajittelu ilman normalisointia"}
             yes{"lajittelu Unicode-normalisoituna"}
         }
         colNumeric{
@@ -1160,7 +1163,6 @@
     Variants%secondary{
         FONUPA{"suomalais-ugrilainen tarkekirjoitus"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} – kaikki"}
         category-list{"{0}: {1}"}
@@ -1175,6 +1177,8 @@
             one{"{0} piirtoviiva"}
             other{"{0} piirtoviivaa"}
         }
+        subscript{"alaindeksi {0}"}
+        superscript{"yläindeksi {0}"}
     }
     codePatterns{
         language{"kieli: {0}"}
diff --git a/icu4c/source/data/lang/fil.txt b/icu4c/source/data/lang/fil.txt
index 985892f..6dfa024 100644
--- a/icu4c/source/data/lang/fil.txt
+++ b/icu4c/source/data/lang/fil.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fil{
     Keys{
         calendar{"Kalendaryo"}
@@ -107,7 +108,7 @@
         eka{"Ekajuk"}
         el{"Greek"}
         en{"Ingles"}
-        en_AU{"Ingles ng Australya"}
+        en_AU{"Ingles ng Australia"}
         en_CA{"Ingles sa Canada"}
         en_GB{"Ingles na British"}
         en_US{"Ingles na American"}
@@ -674,7 +675,6 @@
         PINYIN{"Pinyin Romanization"}
         WADEGILE{"Wade-Giles Romanization"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — lahat"}
         category-list{"{0}: {1}"}
diff --git a/icu4c/source/data/lang/fil_PH.txt b/icu4c/source/data/lang/fil_PH.txt
index 5b83d82..481c955 100644
--- a/icu4c/source/data/lang/fil_PH.txt
+++ b/icu4c/source/data/lang/fil_PH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/fo.txt b/icu4c/source/data/lang/fo.txt
index 4a4b284..8b63fd3 100644
--- a/icu4c/source/data/lang/fo.txt
+++ b/icu4c/source/data/lang/fo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fo{
     Keys{
         calendar{"kalendari"}
@@ -102,6 +103,7 @@
         eu{"baskiskt"}
         ewo{"ewondo"}
         fa{"persiskt"}
+        fa_AF{"dari"}
         ff{"fulah"}
         fi{"finskt"}
         fil{"filipiniskt"}
@@ -416,12 +418,16 @@
         zh_Hant{"mandarin kinesiskt (vanligt)"}
     }
     Languages%menu{
+        ckb{"kurdiskt, mið"}
         yue{"kinesiskt, kantonesiskt"}
         zh{"kinesiskt, mandarin"}
     }
     Languages%short{
         az{"azeri"}
     }
+    Languages%variant{
+        ckb{"kurdiskt, sorani"}
+    }
     Scripts{
         Arab{"arabisk"}
         Armn{"armenskt"}
@@ -556,7 +562,6 @@
         POLYTON{"polytonísk"}
         WADEGILE{"Wade-Giles"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — Alt"}
         category-list{"{0}: {1}"}
@@ -571,6 +576,8 @@
             one{"{0} strok"}
             other{"{0} strok"}
         }
+        subscript{"lágskrift {0}"}
+        superscript{"háskrift {0}"}
     }
     codePatterns{
         language{"Mál: {0}"}
diff --git a/icu4c/source/data/lang/fr.txt b/icu4c/source/data/lang/fr.txt
index 2a32cd0..ee5bf90 100644
--- a/icu4c/source/data/lang/fr.txt
+++ b/icu4c/source/data/lang/fr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr{
     Keys{
         calendar{"calendrier"}
@@ -63,7 +64,7 @@
         avk{"kotava"}
         awa{"awadhi"}
         ay{"aymara"}
-        az{"azéri"}
+        az{"azerbaïdjanais"}
         ba{"bachkir"}
         bal{"baloutchi"}
         ban{"balinais"}
@@ -76,7 +77,7 @@
         bej{"bedja"}
         bem{"bemba"}
         bew{"betawi"}
-        bez{"béna"}
+        bez{"bena"}
         bfd{"bafut"}
         bfq{"badaga"}
         bg{"bulgare"}
@@ -157,7 +158,7 @@
         dyu{"dioula"}
         dz{"dzongkha"}
         dzg{"dazaga"}
-        ebu{"embou"}
+        ebu{"embu"}
         ee{"éwé"}
         efi{"éfik"}
         egl{"émilien"}
@@ -225,7 +226,7 @@
         grb{"grebo"}
         grc{"grec ancien"}
         gsw{"suisse allemand"}
-        gu{"goudjerati"}
+        gu{"goudjarati"}
         guc{"wayuu"}
         gur{"gurenne"}
         guz{"gusii"}
@@ -318,7 +319,7 @@
         ks{"cachemiri"}
         ksb{"shambala"}
         ksf{"bafia"}
-        ksh{"francique ripuaire"}
+        ksh{"kölsch"}
         ku{"kurde"}
         kum{"koumyk"}
         kut{"kutenai"}
@@ -650,6 +651,9 @@
         yue{"chinois cantonais"}
         zh{"chinois mandarin"}
     }
+    Languages%short{
+        az{"azéri"}
+    }
     Languages%variant{
         ps{"pashto"}
         ug{"ouïgour"}
@@ -984,7 +988,6 @@
         VALENCIA{"valencien"}
         WADEGILE{"Wade-Giles"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — tout"}
         category-list{"{0} : {1}"}
@@ -999,6 +1002,8 @@
             one{"{0} trait"}
             other{"{0} traits"}
         }
+        subscript{"indice {0}"}
+        superscript{"exposant {0}"}
     }
     codePatterns{
         language{"langue : {0}"}
diff --git a/icu4c/source/data/lang/fr_BE.txt b/icu4c/source/data/lang/fr_BE.txt
index 04f506f..7f711e2 100644
--- a/icu4c/source/data/lang/fr_BE.txt
+++ b/icu4c/source/data/lang/fr_BE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_BE{
     Languages{
         frp{"franco-provençal"}
@@ -7,5 +8,4 @@
         gu{"gujarati"}
         njo{"ao"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/fr_CA.txt b/icu4c/source/data/lang/fr_CA.txt
index 32bbc7d..a574a2f 100644
--- a/icu4c/source/data/lang/fr_CA.txt
+++ b/icu4c/source/data/lang/fr_CA.txt
@@ -1,14 +1,13 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_CA{
     Languages{
         ady{"adygué"}
         ang{"vieil anglais"}
         ar_001{"arabe standard moderne"}
-        asa{"assou"}
-        az{"azerbaïdjanais"}
+        asa{"asou"}
         bbj{"ghomala"}
-        bez{"bena"}
         bik{"bicol"}
         byn{"bilen"}
         byv{"medumba"}
@@ -20,6 +19,7 @@
         de_CH{"allemand suisse"}
         den{"slave"}
         dgr{"tlicho"}
+        ebu{"embou"}
         en_AU{"anglais australien"}
         en_CA{"anglais canadien"}
         en_GB{"anglais britannique"}
@@ -30,7 +30,6 @@
         fr_CH{"français suisse"}
         frc{"cajun"}
         frp{"franco-provençal"}
-        gbz{"dari"}
         goh{"vieux haut-allemand"}
         gu{"gujarati"}
         ii{"yi de Sichuan"}
@@ -39,7 +38,6 @@
         kl{"kalaallisut"}
         ks{"kashmiri"}
         ksb{"chambala"}
-        ksh{"kölsch"}
         liv{"live"}
         lu{"luba-katanga"}
         lzh{"chinois classique"}
@@ -99,7 +97,7 @@
         Hant{"idéogrammes han traditionnels"}
         Hrkt{"syllabaires japonais"}
         Olck{"ol chiki"}
-        Zsye{"zsye"}
+        Zsye{"émoji"}
     }
     Scripts%stand-alone{
         Hans{"caractères chinois simplifiés"}
@@ -129,7 +127,6 @@
             mong{"Chiffres mongols"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         category-list{"{0} : {1}"}
     }
diff --git a/icu4c/source/data/lang/fr_CH.txt b/icu4c/source/data/lang/fr_CH.txt
index 5ebe726..a164481 100644
--- a/icu4c/source/data/lang/fr_CH.txt
+++ b/icu4c/source/data/lang/fr_CH.txt
@@ -1,10 +1,10 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_CH{
     Languages{
         gu{"goudjrati"}
         pdc{"allemand de Pennsylvanie"}
         sdh{"kurde méridional"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/fur.txt b/icu4c/source/data/lang/fur.txt
index c32b934..a3c5807 100644
--- a/icu4c/source/data/lang/fur.txt
+++ b/icu4c/source/data/lang/fur.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fur{
     Keys{
         calendar{"calendari"}
@@ -299,7 +300,6 @@
         SOLBA{"dialet di Stolvize"}
         VALENCIA{"valenzian"}
     }
-    Version{"37"}
     codePatterns{
         language{"Lenghe: {0}"}
         script{"Scriture: {0}"}
diff --git a/icu4c/source/data/lang/fy.txt b/icu4c/source/data/lang/fy.txt
index 92238a7..4eb4066 100644
--- a/icu4c/source/data/lang/fy.txt
+++ b/icu4c/source/data/lang/fy.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fy{
     Keys{
         calendar{"Kalender"}
@@ -886,7 +887,6 @@
         VALLADER{"Vallader"}
         WADEGILE{"Wade-Giles-romanisering"}
     }
-    Version{"37"}
     codePatterns{
         language{"Taal: {0}"}
         script{"Skrift: {0}"}
diff --git a/icu4c/source/data/lang/ga.txt b/icu4c/source/data/lang/ga.txt
index 6b09108..d903584 100644
--- a/icu4c/source/data/lang/ga.txt
+++ b/icu4c/source/data/lang/ga.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ga{
     Keys{
         calendar{"Féilire"}
@@ -35,14 +36,17 @@
         ba{"Baiscíris"}
         ban{"Bailís"}
         bar{"Baváiris"}
+        bas{"Basáis"}
         be{"Bealarúisis"}
         bem{"Beimbis"}
+        bez{"Béinis"}
         bg{"Bulgáiris"}
         bi{"Bioslaimis"}
         bm{"Bambairis"}
         bn{"Beangáilis"}
         bo{"Tibéidis"}
         br{"Briotáinis"}
+        brx{"Bódóis"}
         bs{"Boisnis"}
         bua{"Buiriáitis"}
         bug{"Buiginis"}
@@ -50,6 +54,7 @@
         ccp{"Chakma"}
         ce{"Seisnis"}
         ceb{"Seabúáinis"}
+        cgg{"Cígis"}
         ch{"Seamóiris"}
         chm{"Mairis"}
         chr{"Seiricis"}
@@ -73,7 +78,9 @@
         dua{"Duailis"}
         dum{"Meán-Ollainnis"}
         dv{"Divéihis"}
+        dyo{"Ióla-Fainís"}
         dz{"Seoinicis"}
+        ebu{"Eambúis"}
         ee{"Éabhais"}
         egy{"Sean-Éigiptis"}
         el{"Gréigis"}
@@ -120,6 +127,7 @@
         gsw{"Gearmáinis Eilvéiseach"}
         gu{"Gúisearáitis"}
         guc{"Uaúis"}
+        guz{"Gúisis"}
         gv{"Manainnis"}
         ha{"Hásais"}
         hak{"Haicéis"}
@@ -144,6 +152,7 @@
         id{"Indinéisis"}
         ie{"Interlingue"}
         ig{"Íogbóis"}
+        ii{"Ís Shichuan"}
         ik{"Iniúipiaicis"}
         inh{"Iongúis"}
         io{"Ido"}
@@ -161,13 +170,13 @@
         kab{"Caibílis"}
         kam{"Cambais"}
         kde{"Makonde"}
-        kea{"Kabuverdianu"}
+        kea{"Criól Cabo Verde"}
         kg{"Congóis"}
-        khq{"Koyra Chiini"}
+        khq{"Songais Iartharach"}
         ki{"Ciocúis"}
         kj{"Cuainiáimis"}
         kk{"Casaicis"}
-        kkj{"Kako"}
+        kkj{"Cacóis"}
         kl{"Kalaallisut"}
         kln{"Kalenjin"}
         km{"Ciméiris"}
@@ -178,20 +187,23 @@
         krl{"Cairéilis"}
         kru{"Curúicis"}
         ks{"Caismíris"}
+        ksb{"Shambala"}
+        ksf{"Baifiais"}
+        ksh{"Coilsis"}
         ku{"Coirdis"}
         kv{"Coimis"}
         kw{"Coirnis"}
         ky{"Cirgisis"}
         la{"Laidin"}
         lad{"Laidínis"}
-        lag{"Langi"}
+        lag{"Láingis"}
         lah{"Puinseáibis Iartharach"}
         lb{"Lucsambuirgis"}
         lg{"Lugandais"}
         li{"Liombuirgis"}
         lij{"Liogúiris"}
         liv{"Liovóinis"}
-        lkt{"Lakota"}
+        lkt{"Lacótais"}
         lmo{"Lombairdis"}
         ln{"Liongáilis"}
         lo{"Laoisis"}
@@ -226,7 +238,7 @@
         mwl{"Mioraindéis"}
         mwr{"Marmhairis"}
         my{"Burmais"}
-        mzn{"Mazanderani"}
+        mzn{"Mázandaráinis"}
         na{"Nárúis"}
         nan{"Sínis Min Nan"}
         nap{"Napóilis"}
@@ -240,14 +252,14 @@
         niu{"Níobhais"}
         nl{"Ollainnis"}
         nl_BE{"Pléimeannais"}
-        nmg{"Kwasio"}
+        nmg{"Cuaiseois"}
         nn{"Nua-Ioruais"}
         nnh{"Ngiemboon"}
         no{"Ioruais"}
         non{"Sean-Lochlainnis"}
         nr{"Ndeibéilis an Deiscirt"}
         nso{"Sútúis an Tuaiscirt"}
-        nus{"Nuer"}
+        nus{"Nuairis"}
         nv{"Navachóis"}
         ny{"Siséivis"}
         nyn{"Niancóilis"}
@@ -257,6 +269,7 @@
         or{"Oirísis"}
         os{"Oiséitis"}
         pa{"Puinseáibis"}
+        pcm{"pidsean na Nigéire"}
         peo{"Sean-Pheirsis"}
         pi{"Páilis"}
         pl{"Polainnis"}
@@ -271,21 +284,26 @@
         rn{"Rúindis"}
         ro{"Rómáinis"}
         ro_MD{"Moldáivis"}
+        rof{"Rombo"}
         rom{"Romainis"}
         root{"Root"}
         ru{"Rúisis"}
         rup{"Arómáinis"}
         rw{"Ciniaruaindis"}
+        rwk{"Rwa"}
         sa{"Sanscrait"}
         sah{"Sachais"}
         sam{"Aramais Shamárach"}
+        saq{"Samburu"}
         sat{"Santáilis"}
+        sbp{"Sangu"}
         sc{"Sairdínis"}
         scn{"Sicilis"}
         sco{"Albainis"}
         sd{"Sindis"}
         se{"Sáimis Thuaidh"}
-        ses{"Koyraboro Senni"}
+        seh{"Sena"}
+        ses{"Songais Oirthearach"}
         sg{"Sangóis"}
         sga{"Sean-Ghaeilge"}
         sh{"Seirbea-Chróitis"}
@@ -350,13 +368,14 @@
         wo{"Volaifis"}
         xal{"Cailmícis"}
         xh{"Cóisis"}
+        xog{"Soga"}
         yav{"Yangben"}
         yi{"Giúdais"}
         yo{"Iarúibis"}
         yue{"Cantainis"}
         za{"Siuáingis"}
         zea{"Séalainnis"}
-        zgh{"Tamazight Caighdeánach Mharacó"}
+        zgh{"Tamaisis Chaighdeánach Mharacó"}
         zh{"Sínis"}
         zh_Hans{"Sínis Shimplithe"}
         zh_Hant{"Sínis Thraidisiúnta"}
@@ -364,14 +383,21 @@
         zun{"Zúinis"}
         zxx{"Gan ábhar teangeolaíoch"}
     }
+    Languages%long{
+        zh_Hans{"Mandairínis Shimplithe"}
+    }
     Languages%menu{
         yue{"Sínis, Cantainis"}
+        zh{"Mandairínis"}
     }
     Languages%short{
         az{"Asairis"}
         en_GB{"Béarla na R.A."}
         en_US{"Béarla S.A.M."}
     }
+    Languages%variant{
+        ckb{"Coirdis, Sóráinis"}
+    }
     Scripts{
         Adlm{"Adlam"}
         Aghb{"Albánach Cugasach"}
@@ -407,6 +433,7 @@
         Hanb{"Han agus Bopomofo"}
         Hang{"Hangalach"}
         Hani{"Han"}
+        Hano{"Hananúis"}
         Hans{"Simplithe"}
         Hant{"Traidisiúnta"}
         Hebr{"Eabhrach"}
@@ -441,8 +468,10 @@
         Mymr{"Maenmarach"}
         Narb{"Sean-Arabach Thuaidh"}
         Newa{"Newa"}
+        Nkoo{"N-cóis"}
         Ogam{"Ogham"}
         Orya{"Oiríseach"}
+        Osge{"Ósáis"}
         Perm{"Sean-Pheirmeach"}
         Phnx{"Féiníceach"}
         Plrd{"Pollard Foghrach"}
@@ -450,10 +479,13 @@
         Runr{"Rúnach"}
         Samr{"Samárach"}
         Sarb{"Sean-Arabach Theas"}
+        Sgnw{"Litritheoireacht Comharthaí"}
         Shaw{"Shawach"}
         Sinh{"Siolónach"}
         Sund{"Sundainéis"}
         Syrc{"Siriceach"}
+        Tale{"Deiheoingis"}
+        Talu{"Tai Lue Nua"}
         Taml{"Tamalach"}
         Telu{"Teileagúch"}
         Tfng{"Tifinagh"}
@@ -462,6 +494,7 @@
         Thai{"Téalannach"}
         Tibt{"Tibéadach"}
         Ugar{"Úgairíteach"}
+        Vaii{"Vadhais"}
         Xpeo{"Sean-Pheirseach"}
         Xsux{"Dingchruthach Suiméar-Acádach"}
         Yiii{"Ís"}
@@ -489,6 +522,10 @@
             hebrew{"Féilire na nEabhrach"}
             indian{"Féilire Náisiúnta na hIndia"}
             islamic{"Féilire Ioslamach"}
+            islamic-civil{"Féilire Ioslamach (táblach, seanré shibhialta)"}
+            islamic-rgsa{"Féilire Ioslamach (an Araib Shádach, dearcadh)"}
+            islamic-tbla{"Féilire Ioslamach (táblach, seanré réalteolaíoch)"}
+            islamic-umalqura{"Féilire Ioslamach (Umm al-Qura)"}
             iso8601{"Féilire ISO-8601"}
             japanese{"Féilire Seapánach"}
             persian{"Féilire Peirseach"}
@@ -500,16 +537,22 @@
         }
         collation{
             big5han{"Ord sórtála Síneach traidisiúnta - Big5"}
+            compat{"Ord Sórtála Roimhe Seo, ar son na comhoiriúnachta"}
             dictionary{"Ord Sórtála Foclóirí"}
             ducet{"Ord Sórtála Réamhshocraithe Unicode"}
             emoji{"Ord Sórtála Emoji"}
+            eor{"Rialacha Ordaithe Eorpacha"}
             gb2312han{"Ord sórtála Síneach simplithe - GB 2312"}
             phonebook{"Ord sórtála an eolaire teileafóin"}
             pinyin{"Ord sórtála pinyin"}
+            reformed{"Ord Sórtála Athfhoirmithe"}
             search{"Cuardach Ilfhóinteach"}
+            searchjl{"Cuardach de réir Consan Tosaigh Hangul"}
             standard{"Ord Sórtála Caighdeánach"}
             stroke{"Ord sórtála stríce"}
             traditional{"Ord sórtála traidisiúnta"}
+            unihan{"Ord Sórtála Stríce Radacaí"}
+            zhuyin{"Ord Sórtála Zhuyin"}
         }
         hc{
             h11{"Córas 12 Uair (0–11)"}
@@ -543,6 +586,7 @@
             ethi{"Uimhreacha Aetóipice"}
             fullwide{"Digití Lánleithid"}
             geor{"Uimhreacha Seoirseacha"}
+            gonm{"Digití Masaram Gondi"}
             grek{"Uimhreacha Gréagacha"}
             greklow{"Uimhreacha Cás Íochtair Gréagacha"}
             gujr{"Digití Gúisearátacha"}
@@ -553,41 +597,82 @@
             hant{"Uimhreacha sa tSínis Thraidisiúnta"}
             hantfin{"Uimhreacha Airgeadúla sa tSínis Thraidisiúnta"}
             hebr{"Uimhreacha Eabhracha"}
+            hmng{"Digití Pahawh Hmong"}
             java{"Digití Iávacha"}
             jpan{"Uimhreacha Seapánacha"}
             jpanfin{"Uimhreacha Airgeadúla Seapánacha"}
+            kali{"Digití Kayah Li"}
             khmr{"Digití Ciméaracha"}
             knda{"Digití Cannadacha"}
+            lana{"Digití Tai Tham Hora"}
+            lanatham{"Digití Tai Tham Tham"}
             laoo{"Digití Laosacha"}
             latn{"Digití Iartharacha"}
+            lepc{"Digití Lepcha"}
+            limb{"Digití Limbu"}
+            mathbold{"Digití Troma Matamaiticiúla"}
+            mathdbl{"Digití Stríce Dúbailte Matamaiticiúla"}
+            mathmono{"Digití Aonspáis Matamaiticiúla"}
+            mathsanb{"Digití Troma Sans-Serif Matamaiticiúla"}
+            mathsans{"Digití Sans-Serif Matamaiticiúla"}
             mlym{"Digití Mailéalamacha"}
+            modi{"Digití Modi"}
             mong{"Digití Mongólacha"}
+            mroo{"Digití Mro"}
+            mtei{"Digití Meetei Mayek"}
             mymr{"Digití Maenmaracha"}
+            mymrshan{"Digití Myanmar Shan"}
+            mymrtlng{"Digití Myanmar Tai Laing"}
+            nkoo{"Digití N’ko"}
+            olck{"Digití Ol Chiki"}
             orya{"Digití Oiríseacha"}
+            osma{"Digití Osmanya"}
             roman{"Uimhreacha Rómhánacha"}
             romanlow{"Uimhreacha Cás Íochtair Rómhánacha"}
+            saur{"Digití Saurashtra"}
+            shrd{"Digití Sharada"}
+            sind{"Digití Khudawadi"}
+            sinh{"Digití Sinhala Lith"}
+            sora{"Digití Sora Sompeng"}
+            sund{"Digití Sundainéise"}
+            takr{"Digití Takri"}
+            talu{"Digití Tai Lue Nua"}
             taml{"Uimhreacha Traidisiúnta Tamalacha"}
             tamldec{"Digití Tamalacha"}
             telu{"Digití Teileagúcha"}
             thai{"Digití Téalannacha"}
             tibt{"Digití Tibéadacha"}
+            tirh{"Digití Tirhuta"}
+            vaii{"Digití Vai"}
+            wara{"Digití Warang Citi"}
         }
     }
     Variants{
+        1606NICT{"Fraincis Dhéanach Mheánach go 1606"}
         1694ACAD{"Nua-Fhraincis Mhoch"}
         1901{"Litriú Traidisiúnta na Gearmáinise"}
         1959ACAD{"Acadúil"}
+        1994{"Ortagrafaíocht Resian Chaighdeánaithe"}
+        1996{"Ortagrafaíocht na Gearmáinise in 1996"}
+        ABL1943{"Foirmiú ortagrafaíochta in 1943"}
         ALALC97{"Rómhánú ALA-LC, eagrán 1997"}
+        ALUKU{"Canúint Aluku"}
+        AO1990{"Comhaontú Ortagrafaíochta Theanga na Portaingéilise, 1990"}
         AREVELA{"Airméinis an Oirthir"}
         AREVMDA{"Airméinis an Iarthair"}
+        BAKU1926{"Abítir Laidine Tuircice Aontaithe"}
+        BALANKA{"Canúint Balanka de Anii"}
+        BARLA{"Grúpa canúna Barlavento de Kabuverdianu"}
         BASICENG{"Bun-Bhéarla"}
         BAUDDHA{"Bauddha"}
         BISCAYAN{"BIOSCÁNACH"}
         BISKE{"Canúint San Giorgo/Bila"}
         BOHORIC{"Aibítir Bohorič"}
         BOONT{"Boontling"}
+        COLB1945{"Coinbhinsiún Ortagrafaíochta na Portaingéilise na Brasaíle, 1945"}
         CORNU{"Béarla an Choirn"}
         DAJNKO{"Aibítir Dajnko"}
+        EKAVSK{"Seirbis le fuaimniú Ekavian"}
         EMODENG{"Nua-Bhéarla Moch"}
         FONIPA{"Fogharscríobh IPA"}
         FONNAPA{"Fonnapa"}
@@ -596,6 +681,7 @@
         HEPBURN{"Rómhánú Hepburn"}
         HOGNORSK{"Hognorsk"}
         HSISTEMO{"Hsistemo"}
+        IJEKAVSK{"Seirbis le fuaimniú Ijekavach"}
         ITIHASA{"Itihasa"}
         JAUER{"Jauer"}
         JYUTPING{"Jyutping"}
@@ -603,16 +689,21 @@
         KOCIEWIE{"Kociewie"}
         KSCOR{"Litriú Caighdeánach"}
         LAUKIKA{"Laukika"}
+        LIPAW{"Canúint Lipovaz de Resian"}
         LUNA1918{"Luna1918"}
         METELKO{"Aibítir Metelko"}
         MONOTON{"Aontonach"}
+        NDYUKA{"Canúint Ndyuka"}
+        NEDIS{"Canúint Natisone"}
         NEWFOUND{"Talamh an Éisc"}
         NJIVA{"Canúint Gniva/Njiva"}
         NULIK{"Volapük Nua-Aimseartha"}
+        OSOJS{"Canúint Oseacco/Osojane"}
         OXENDICT{"Litriú OED"}
         PAHAWH2{"Pahawh2"}
         PAHAWH3{"Pahawh3"}
         PAHAWH4{"Pahawh4"}
+        PAMAKA{"Canúint Pamaka"}
         PETR1708{"Petr1708"}
         PINYIN{"Rómhánú Pinyin"}
         POLYTON{"Iltonach"}
@@ -626,10 +717,13 @@
         SCOTLAND{"Béarla Caighdeánach na hAlban"}
         SCOUSE{"Béarla Learphoill"}
         SIMPLE{"Simplí"}
+        SOLBA{"Canúint Stolvizza/Solbica"}
+        SOTAV{"Grúpa canúna Sotavento de Kabuverdianu"}
         SPANGLIS{"Spainglis"}
         SURMIRAN{"Surmiran"}
         SURSILV{"Sursilvan"}
         SUTSILV{"Sutsilv"}
+        TARASK{"Ortografaíocht Taraskievica"}
         UCCOR{"Litriú Comhaontaithe"}
         UCRCOR{"Litriú Comhaontaithe Athbhreithnithe"}
         ULSTER{"Cúige Uladh"}
@@ -640,7 +734,6 @@
         WADEGILE{"Rómhánú Wade-Giles"}
         XSISTEMO{"Xsistemo"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — Uile"}
         category-list{"{0}: {1}"}
@@ -658,6 +751,8 @@
             other{"{0} Stríoc"}
             two{"{0} Stríoc"}
         }
+        subscript{"foscript {0}"}
+        superscript{"forscript {0}"}
     }
     codePatterns{
         language{"Teanga: {0}"}
diff --git a/icu4c/source/data/lang/gd.txt b/icu4c/source/data/lang/gd.txt
index c061983..700fdec 100644
--- a/icu4c/source/data/lang/gd.txt
+++ b/icu4c/source/data/lang/gd.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gd{
     Keys{
         calendar{"Mìosachan"}
@@ -621,12 +622,16 @@
         en_GB{"Beurla na RA"}
         en_US{"Beurla nan SA"}
     }
+    Languages%variant{
+        ckb{"Cùrdais Sorani"}
+    }
     Scripts{
         Adlm{"Adlam"}
         Afak{"Afaka"}
         Aghb{"Albàinis Chabhcasach"}
         Ahom{"Ahom"}
         Arab{"Arabais"}
+        Aran{"Nastaliq"}
         Armi{"Aramais impireil"}
         Armn{"Airmeinis"}
         Avst{"Avestanais"}
@@ -647,12 +652,14 @@
         Cari{"Carian"}
         Cham{"Cham"}
         Cher{"Cherokee"}
+        Chrs{"Khwarazm"}
         Cirt{"Cirth"}
         Copt{"Coptais"}
         Cprt{"Cìoprasais"}
         Cyrl{"Cirilis"}
         Cyrs{"Cirilis Seann-Slàbhais na h-Eaglaise"}
         Deva{"Devanagari"}
+        Diak{"Dives Akuru"}
         Dogr{"Dogra"}
         Dsrt{"Deseret"}
         Dupl{"Gearr-sgrìobhadh Duployé"}
@@ -693,6 +700,7 @@
         Khar{"Kharoshthi"}
         Khmr{"Cmèar"}
         Khoj{"Khojki"}
+        Kits{"Litrichean beaga na Khitan"}
         Knda{"Kannada"}
         Kore{"Coirèanais"}
         Kpel{"Kpelle"}
@@ -795,6 +803,7 @@
         Wole{"Woleai"}
         Xpeo{"Seann-Pheirsis"}
         Xsux{"Gèinn-sgrìobhadh Sumer is Akkad"}
+        Yezi{"Yezidis"}
         Yiii{"Yi"}
         Zanb{"Zanabazar ceàrnagach"}
         Zinh{"Dìleab"}
@@ -891,6 +900,7 @@
             cham{"Àireamhan Cham"}
             cyrl{"Àireamhan na Cirilise"}
             deva{"Àireamhan Devanagari"}
+            diak{"Àireamhan Dives Akuru"}
             ethi{"Àireamhan Itiopach"}
             fullwide{"Àireamhan làn-leud"}
             geor{"Àireamhan na Cairtbheilise"}
@@ -971,9 +981,11 @@
         ALALC97{"Ròmanachadh ALA-LC 1997"}
         ALUKU{"Dual-chainnt Aluku"}
         AO1990{"Aonta litreachadh na Portagailise 1990"}
+        ARANES{"Aranais"}
         AREVELA{"Airmeinis an Ear"}
         AREVMDA{"Airmeinis an Iar"}
         ASANTE{"Asante"}
+        AUVERN{"Auvernhat"}
         BAKU1926{"Abidil Laideann aonaichte na Turcaise"}
         BALANKA{"Dual-chainnt Balanka de Anii"}
         BARLA{"Dual-chainntean Barlavento de Kabuverdianu"}
@@ -983,15 +995,23 @@
         BISKE{"Dual-chainnt San Giorgio/Bila"}
         BOHORIC{"Aibidil Bohorič"}
         BOONT{"Boontling"}
+        BORNHOLM{"Bornholmsk"}
+        CISAUP{"Ogsatanais cios-Ailpeach"}
         COLB1945{"Aonta litreachaidh eadar a’ Phortagail is Braisil 1945"}
         CORNU{"Beurla na Còirne"}
+        CREISS{"Ogsatanais Chroissant"}
         DAJNKO{"Aibidil Dajnko"}
         EKAVSK{"Sèirbhis le fuaimneachadh iarach"}
         EMODENG{"Nua-Bheurla thràth"}
         FONIPA{"Comharran fuaim-eòlais an IPA"}
+        FONKIRSH{"Còdachadh Kirshenbaum na h-Aibidil Fuaim-eòlaiche"}
         FONNAPA{"Aibidil Fhuaim-eòlach Aimeireaga a Tuath"}
         FONUPA{"Comharran fuaim-eòlais an UPA"}
         FONXSAMP{"Tar-sgrìobhadh X-SAMPA"}
+        GASCON{"Ogsatanais Ghascogne"}
+        GRCLASS{"Nòs-sgrìobhaidh clasaigeach na h-Ogsatanaise"}
+        GRITAL{"Nòs-sgrìobhaidh Eadailteach na h-Ogsatanaise"}
+        GRMISTR{"Nòs-sgrìobhaidh Mhistral na h-Ogsatanaise"}
         HEPBURN{"Ròmanachadh Hepburn"}
         HOGNORSK{"Høgnorsk"}
         HSISTEMO{"Roghainn-èiginn stannardach litreachadh na h-Esperanto le h"}
@@ -1007,6 +1027,8 @@
         KOCIEWIE{"Kociewie"}
         KSCOR{"Litreachadh stannardach"}
         LAUKIKA{"Laukika"}
+        LEMOSIN{"Ogsatanais Lemosin"}
+        LENGADOC{"Ogsatanais Lengadoc"}
         LIPAW{"Dual-chainnt Lipovaz Resia"}
         LUNA1918{"Litreachadh na Ruisise às dèidh 1917"}
         METELKO{"Aibidil Metelko"}
@@ -1014,6 +1036,7 @@
         NDYUKA{"Dual-chainnt Ndyuka"}
         NEDIS{"Dual-chainnt Natisone"}
         NEWFOUND{"Beurla Talamh an Èisg"}
+        NICARD{"Ogsatanais Nice"}
         NJIVA{"Dual-chainnt Gniva/Njiva"}
         NULIK{"Nua-Volapük"}
         OSOJS{"Dual-chainnt Oseacco/Osojane"}
@@ -1026,6 +1049,7 @@
         PINYIN{"Ròmanachadh Pinyin"}
         POLYTON{"Greugais phoiliotonach"}
         POSIX{"Coimpiutair"}
+        PROVENC{"Ogsatanais Phrovence"}
         PUTER{"Puter"}
         REVISED{"Litreachadh lèirmheasaichte"}
         RIGIK{"Volapük chlasaigeach"}
@@ -1049,10 +1073,10 @@
         VAIDIKA{"Vaidika"}
         VALENCIA{"Valencià"}
         VALLADER{"Vallader"}
+        VIVARAUP{"Ogsatanais Vivaro-Ailpeach"}
         WADEGILE{"Ròmanachadh Wade-Giles"}
         XSISTEMO{"Roghainn-èiginn stannardach litreachadh na h-Esperanto le x"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} – na h-uile"}
         category-list{"{0}: {1}"}
@@ -1069,6 +1093,8 @@
             other{"{0} stràc"}
             two{"{0} stràc"}
         }
+        subscript{"{0} (fo-sgrìobhte)"}
+        superscript{"{0} os-sgrìobhte"}
     }
     codePatterns{
         language{"Cànan: {0}"}
diff --git a/icu4c/source/data/lang/gl.txt b/icu4c/source/data/lang/gl.txt
index ec4101f..70b6a5c 100644
--- a/icu4c/source/data/lang/gl.txt
+++ b/icu4c/source/data/lang/gl.txt
@@ -1,16 +1,17 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gl{
     Keys{
         calendar{"calendario"}
         cf{"formato de moeda"}
-        colAlternate{"Ignorar clasificación de símbolos"}
-        colBackwards{"Clasificación de acentos invertida"}
-        colCaseFirst{"Orde de maiúsculas/minúsculas"}
-        colCaseLevel{"Clasificación que distingue entre maiúsculas e minúsculas"}
-        colNormalization{"Clasificación normalizada"}
-        colNumeric{"Clasificación numérica"}
-        colStrength{"Forza de clasificación"}
+        colAlternate{"ignorar ordenación de símbolos"}
+        colBackwards{"ordenación de acentos invertida"}
+        colCaseFirst{"orde de maiúsculas/minúsculas"}
+        colCaseLevel{"ordenación que distingue entre maiúsculas e minúsculas"}
+        colNormalization{"ordenación normalizada"}
+        colNumeric{"ordenación numérica"}
+        colStrength{"forza de ordenación"}
         collation{"criterio de ordenación"}
         currency{"moeda"}
         hc{"ciclo horario (12 ou 24)"}
@@ -441,6 +442,9 @@
     Languages%short{
         az{"azerí"}
     }
+    Languages%variant{
+        ckb{"sorani"}
+    }
     Scripts{
         Arab{"árabe"}
         Armn{"armenio"}
@@ -634,7 +638,6 @@
             vaii{"Díxitos Vai"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} (todo)"}
         category-list{"{0}: {1}"}
@@ -649,6 +652,8 @@
             one{"{0} trazo"}
             other{"{0} trazos"}
         }
+        subscript{"{0} subíndice"}
+        superscript{"{0} superíndice"}
     }
     codePatterns{
         language{"Idioma: {0}"}
diff --git a/icu4c/source/data/lang/gsw.txt b/icu4c/source/data/lang/gsw.txt
index 01e35d5..624e5f4 100644
--- a/icu4c/source/data/lang/gsw.txt
+++ b/icu4c/source/data/lang/gsw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gsw{
     Keys{
         calendar{"Kaländer"}
@@ -617,7 +618,6 @@
         SOLBA{"Solbica-Mundart"}
         TARASK{"Taraskievica-Rächtschriibig"}
     }
-    Version{"37"}
     codePatterns{
         language{"Schpraach: {0}"}
         script{"Schrift: {0}"}
diff --git a/icu4c/source/data/lang/gu.txt b/icu4c/source/data/lang/gu.txt
index a47263d..a1724b7 100644
--- a/icu4c/source/data/lang/gu.txt
+++ b/icu4c/source/data/lang/gu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gu{
     Keys{
         calendar{"કેલેન્ડર"}
@@ -800,8 +801,8 @@
             strict{"ચુસ્ત રેખા વિરામ પ્રકાર"}
         }
         m0{
-            bgn{"BGN"}
-            ungegn{"UNGEGN"}
+            bgn{"US BGN"}
+            ungegn{"UN GEGN"}
         }
         ms{
             metric{"દશાંશ પદ્ધતિ"}
@@ -855,7 +856,6 @@
         PINYIN{"પિનયિન રોમનાઇઝેશન"}
         WADEGILE{"વેડ-ગિલ્સ રોમનાઇઝેશન"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — તમામ"}
         category-list{"{0}: {1}"}
@@ -870,6 +870,8 @@
             one{"{0} સ્ટ્રોક્સ"}
             other{"{0} સ્ટ્રોક્સ"}
         }
+        subscript{"સબસ્ક્રિપ્ટ {0}"}
+        superscript{"સુપરસ્ક્રિપ્ટ {0}"}
     }
     codePatterns{
         language{"ભાષા: {0}"}
diff --git a/icu4c/source/data/lang/guz.txt b/icu4c/source/data/lang/guz.txt
index 2f62731..990c730 100644
--- a/icu4c/source/data/lang/guz.txt
+++ b/icu4c/source/data/lang/guz.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 guz{
     Languages{
         ak{"Kiakan"}
@@ -48,5 +49,4 @@
         zh{"Kichina"}
         zu{"Kizulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/gv.txt b/icu4c/source/data/lang/gv.txt
index 6aca43b..64c78db 100644
--- a/icu4c/source/data/lang/gv.txt
+++ b/icu4c/source/data/lang/gv.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gv{
     Languages{
         gv{"Gaelg"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ha.txt b/icu4c/source/data/lang/ha.txt
index 9e727ef..74c01c7 100644
--- a/icu4c/source/data/lang/ha.txt
+++ b/icu4c/source/data/lang/ha.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ha{
     Keys{
         calendar{"Kalanda"}
@@ -20,13 +21,13 @@
         ar_001{"Larabci Asali Na Zamani"}
         as{"Asamisanci"}
         asa{"Asu"}
-        ast{"Asturian"}
+        ast{"Asturia"}
         az{"Azerbaijanci"}
         bas{"Basaa"}
         be{"Belarusanci"}
         bem{"Bemba"}
         bez{"Bena"}
-        bg{"Bulgaranci"}
+        bg{"Bulgariyanci"}
         bm{"Bambara"}
         bn{"Bengali"}
         bo{"Tibetan"}
@@ -39,18 +40,18 @@
         ceb{"Cebuano"}
         cgg{"Chiga"}
         chr{"Cherokee"}
-        ckb{"Kurdish na Tsaka"}
+        ckb{"Kurdawa ta Tsakiya"}
         co{"Corsican"}
-        cs{"Harshen Cak"}
+        cs{"Cek"}
         cu{"Church Slavic"}
-        cy{"Kabilar Welsh"}
+        cy{"Welsh"}
         da{"Danish"}
         dav{"Taita"}
         de{"Jamusanci"}
         de_AT{"Jamusanci Ostiriya"}
         de_CH{"Jamusanci Suwizalan"}
         dje{"Zarma"}
-        dsb{"Lower Sorbian"}
+        dsb{"Sorbianci ta kasa"}
         dua{"Duala"}
         dyo{"Jola-Fonyi"}
         dz{"Dzongkha"}
@@ -62,7 +63,7 @@
         en_CA{"Turanci Kanada"}
         en_GB{"Turanci Biritaniya"}
         en_US{"Turanci Amirka"}
-        eo{"Dʼan/ʼYar Kabilar Andalus"}
+        eo{"Esperanto"}
         es{"Sifaniyanci"}
         es_419{"Sifaniyancin Latin Amirka"}
         es_ES{"Sifaniyanci Turai"}
@@ -70,7 +71,7 @@
         et{"Istoniyanci"}
         eu{"Basque"}
         ewo{"Ewondo"}
-        fa{"Parisanci"}
+        fa{"Farisa"}
         ff{"Fulah"}
         fi{"Yaren mutanen Finland"}
         fil{"Dan Filifin"}
@@ -79,8 +80,8 @@
         fr_CA{"Farasanci Kanada"}
         fr_CH{"Farasanci Suwizalan"}
         fur{"Friulian"}
-        fy{"Kʼabilan Firsi"}
-        ga{"Dan Ailan"}
+        fy{"Frisian ta Yamma"}
+        ga{"Dan Irish"}
         gd{"Kʼabilan Scots Gaelic"}
         gl{"Bagalike"}
         gsw{"Jamusanci Swiss"}
@@ -88,7 +89,7 @@
         guz{"Gusii"}
         gv{"Manx"}
         ha{"Hausa"}
-        haw{"Hawaiian"}
+        haw{"Hawaiianci"}
         he{"Ibrananci"}
         hi{"Harshen Hindi"}
         hmn{"Hmong"}
@@ -99,14 +100,14 @@
         hy{"Armeniyanci"}
         ia{"Yare Tsakanin Kasashe"}
         id{"Harshen Indunusiya"}
-        ig{"Inyamuranci"}
+        ig{"Igbo"}
         ii{"Sichuan Yi"}
         is{"Yaren mutanen Iceland"}
         it{"Italiyanci"}
         ja{"Japananci"}
         jgo{"Ngomba"}
         jmc{"Machame"}
-        jv{"Jabananci"}
+        jv{"Jafananci"}
         ka{"Jojiyanci"}
         kab{"Kabyle"}
         kam{"Kamba"}
@@ -121,7 +122,7 @@
         km{"Harshen Kimar"}
         kn{"Kannada"}
         ko{"Harshen Koreya"}
-        kok{"Konkani"}
+        kok{"Konkananci"}
         ks{"Kashmiri"}
         ksb{"Shambala"}
         ksf{"Bafia"}
@@ -135,24 +136,26 @@
         lg{"Ganda"}
         lkt{"Lakota"}
         ln{"Lingala"}
-        lo{"Laothian"}
-        lrc{"Northern Luri"}
+        lo{"Lao"}
+        lrc{"Arewacin Luri"}
         lt{"Lituweniyanci"}
         lu{"Luba-Katanga"}
         luo{"Luo"}
         luy{"Luyia"}
         lv{"Latbiyanci"}
+        mai{"Maithili"}
         mas{"Harshen Masai"}
         mer{"Meru"}
         mfe{"Morisyen"}
-        mg{"Malagasy"}
+        mg{"Malagasi"}
         mgh{"Makhuwa-Meetto"}
         mgo{"Metaʼ"}
         mi{"Maori"}
         mk{"Dan Masedoniya"}
-        ml{"Kabilar Maleyalam"}
-        mn{"Mongolian"}
-        mr{"Kʼabilan Marathi"}
+        ml{"Malayalamci"}
+        mn{"Mongoliyanci"}
+        mni{"Manipuri"}
+        mr{"Maratinci"}
         ms{"Harshen Malai"}
         mt{"Harshen Maltis"}
         mua{"Mundang"}
@@ -172,28 +175,31 @@
         ny{"Nyanja"}
         nyn{"Nyankole"}
         om{"Oromo"}
-        or{"Oriyanci"}
+        or{"Odiya"}
         os{"Ossetic"}
         pa{"Punjabi"}
+        pcm{"Pidgin na Najeriya"}
         pl{"Harshen Polan"}
         prg{"Ferusawa"}
         ps{"Pashtanci"}
-        pt{"Harshen Fotugis"}
-        pt_PT{"Fotugis kasashen Turai"}
+        pt{"Harshen Potugis"}
+        pt_BR{"Harshen Potugis na Birazil"}
+        pt_PT{"Potugis Ƙasashen Turai"}
         qu{"Quechua"}
         rm{"Romansh"}
         rn{"Rundi"}
         ro{"Romaniyanci"}
         rof{"Rombo"}
         ru{"Rashanci"}
-        rw{"Kiniyaruwanda"}
-        rwk{"yaren Rwa"}
+        rw{"Kinyarwanda"}
+        rwk{"Rwa"}
         sa{"Sanskrit"}
         sah{"Sakha"}
         saq{"Samburu"}
+        sat{"Santali"}
         sbp{"Sangu"}
         sd{"Sindiyanci"}
-        se{"Northern Sami"}
+        se{"Sami ta Arewa"}
         seh{"Sena"}
         ses{"Koyraboro Senni"}
         sg{"Sango"}
@@ -205,28 +211,28 @@
         smn{"Inari Sami"}
         sn{"Shona"}
         so{"Somalianci"}
-        sq{"Albanian"}
+        sq{"Albaniyanci"}
         sr{"Sabiyan"}
         st{"Sesotanci"}
-        su{"Sudananci"}
+        su{"Harshen Sundanese"}
         sv{"Harshen Suwedan"}
         sw{"Harshen Suwahili"}
         ta{"Tamil"}
-        te{"Dʼan/ʼYar Kabilar Telug"}
+        te{"Telugu"}
         teo{"Teso"}
         tg{"Tajik"}
         th{"Thai"}
-        ti{"Tigriyanci"}
+        ti{"Tigrinyanci"}
         tk{"Tukmenistanci"}
-        to{"Tongan"}
+        to{"Tonganci"}
         tr{"Harshen Turkiyya"}
         tt{"Tatar"}
-        twq{"Tasawaq"}
+        twq{"Tasawak"}
         tzm{"Tamazight na Atlas Tsaka"}
         ug{"Ugiranci"}
         uk{"Harshen Yukuren"}
         und{"Harshen da ba a sani ba"}
-        ur{"Urdawa"}
+        ur{"Urdanci"}
         uz{"Uzbek"}
         vai{"Vai"}
         vi{"Harshen Biyetinam"}
@@ -237,24 +243,24 @@
         xh{"Bazosa"}
         xog{"Soga"}
         yav{"Yangben"}
-        yi{"Yiddish"}
+        yi{"Yaren Yiddish"}
         yo{"Yarbanci"}
-        yue{"Cantonese"}
-        zgh{"Standard Moroccan Tamazight"}
+        yue{"Harshen Cantonese"}
+        zgh{"Daidaitaccen Moroccan Tamazight"}
         zh{"Harshen Sinanci"}
         zh_Hans{"Sauƙaƙaƙƙen Sinanci"}
         zh_Hant{"Sinanci na gargajiya"}
         zu{"Harshen Zulu"}
-        zxx{"Babu abun-ciki na yare"}
+        zxx{"Babu abun cikin yare"}
     }
     Languages%menu{
-        yue{"Sinanci"}
+        yue{"Sinanci, Cantonese"}
         zh{"Harshen, Sinanci"}
     }
     Languages%short{
         az{"Azeri"}
-        en_GB{"Turanci Ingila"}
-        en_US{"Amirka Turanci"}
+        en_GB{"Turancin Ingila"}
+        en_US{"Turancin Amurka"}
     }
     Scripts{
         Arab{"Larabci"}
@@ -269,7 +275,7 @@
         Grek{"Girka"}
         Gujr{"Gujarati"}
         Guru{"Gurmukhi"}
-        Hanb{"Han with Bopomofo"}
+        Hanb{"Han tare da Bopomofo"}
         Hang{"Yaren Hangul"}
         Hani{"Mutanen Han na ƙasar Sin"}
         Hans{"Sauƙaƙaƙƙen"}
@@ -281,8 +287,8 @@
         Kana{"Tsarin Rubutun Katakana"}
         Khmr{"Yaren Khmer"}
         Knda{"Yaren Kannada"}
-        Kore{"Koriya"}
-        Laoo{"Mutanen Laos"}
+        Kore{"Rubutun Koriya"}
+        Laoo{"Yan lao"}
         Latn{"Latin"}
         Mlym{"Yaren Malayalam"}
         Mong{"Na kasar Mongolia"}
@@ -292,6 +298,7 @@
         Taml{"Yaren Tamil"}
         Telu{"Yaren Telugu"}
         Thaa{"Yaren Thaana"}
+        Thai{"Thai"}
         Tibt{"Yaren Tibet"}
         Zmth{"Alamar Lissafi"}
         Zsye{"Alama ta hoto"}
@@ -306,16 +313,16 @@
     }
     Types{
         calendar{
-            buddhist{"Kalanda Buddist"}
-            chinese{"Kalanda Sin"}
-            dangi{"Kalanda Dangi"}
-            ethiopic{"Kalanda Etiofic"}
-            gregorian{"Gregorian Kalanda"}
-            hebrew{"Kalanda Ibrananci"}
+            buddhist{"Kalandar Buddist"}
+            chinese{"Kalandar Sin"}
+            dangi{"Kalandar Dangi"}
+            ethiopic{"Kalandar Etiofic"}
+            gregorian{"Kalandar Gregoria"}
+            hebrew{"Kalandar Ibrananci"}
             islamic{"Kalandar Musulunci"}
-            iso8601{"Kalanda ISO-8601"}
-            japanese{"Kalanda Jafan"}
-            persian{"Kalanda Farisa"}
+            iso8601{"Kalandar ISO-8601"}
+            japanese{"Kalandar Jafan"}
+            persian{"Kalandar Farisa"}
             roc{"Kalandar kasar Sin"}
         }
         cf{
@@ -325,7 +332,7 @@
         collation{
             ducet{"Tsarin Rabewa na Dan-maƙalu na Asali"}
             search{"Bincike na Dalilai-Gamagari"}
-            standard{"Daidai ta ce Kasà"}
+            standard{"Daidaitaccen Kasawa"}
         }
         hc{
             h11{"Tsarin Awowi 12(0–11)"}
@@ -344,7 +351,7 @@
             ussystem{"Tsarin Awo na Amurka"}
         }
         numbers{
-            arab{"Lambobi na larabawan a gabas"}
+            arab{"Lambobi na Larabawan a Gabas"}
             arabext{"Fitattun lambobin lissafi na Larabci"}
             armn{"Lambobin ƙirga na Armenia"}
             armnlow{"Kananan Haruffan Armenia"}
@@ -368,7 +375,7 @@
             khmr{"Lambobin Yaren Khmer"}
             knda{"Lambobin Yaren Kannada"}
             laoo{"Lambobin Yaren Lao"}
-            latn{"Lambobi na yammacin"}
+            latn{"Lambobi na Yammaci"}
             mlym{"Lambobin Yaren Malayalam"}
             mymr{"Lambobin Myanmar"}
             orya{"Lambobin Yaren Odia"}
@@ -381,10 +388,9 @@
             tibt{"Lambobin yaren Tibet"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"Harshe: {0}"}
         script{"Rubutu: {0}"}
-        territory{"Yanki/Sashe: {0}"}
+        territory{"Yanki: {0}"}
     }
 }
diff --git a/icu4c/source/data/lang/ha_NE.txt b/icu4c/source/data/lang/ha_NE.txt
index bb4456b..4f65910 100644
--- a/icu4c/source/data/lang/ha_NE.txt
+++ b/icu4c/source/data/lang/ha_NE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ha_NE{
     Languages{
         ar_001{"Larabci Asali Na Zamani"}
@@ -9,20 +10,18 @@
         en_CA{"Turanci Kanada"}
         en_GB{"Turanci Biritaniya"}
         en_US{"Turanci Amirka"}
-        eo{"Dʼan/Ƴar Kabilar Andalus"}
         es_419{"Sifaniyancin Latin Amirka"}
         es_ES{"Sifaniyanci Turai"}
         es_MX{"Sifaniyanci Mesiko"}
         fr_CA{"Farasanci Kanada"}
         fr_CH{"Farasanci Suwizalan"}
-        pt_PT{"Fotugis kasashen Turai"}
-        te{"Dʼan/Ƴar Kabilar Telug"}
+        pt_BR{"Harshen Potugis na Birazil"}
+        pt_PT{"Potugis Ƙasashen Turai"}
         zh_Hans{"Sauƙaƙaƙƙen Sinanci"}
         zh_Hant{"Sinanci na gargajiya"}
     }
     Languages%short{
-        en_GB{"Turanci Ingila"}
-        en_US{"Amirka Turanci"}
+        en_GB{"Turancin Ingila"}
+        en_US{"Turancin Amurka"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/haw.txt b/icu4c/source/data/lang/haw.txt
index 9a91688..33ca305 100644
--- a/icu4c/source/data/lang/haw.txt
+++ b/icu4c/source/data/lang/haw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 haw{
     Languages{
         ar{"ʻAlapia"}
@@ -40,5 +41,4 @@
         zh_Hans{"Pākē Hoʻomaʻalahi ʻia"}
         zh_Hant{"Pākē Kuʻuna"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/he.txt b/icu4c/source/data/lang/he.txt
index e73b124..fb4ab05 100644
--- a/icu4c/source/data/lang/he.txt
+++ b/icu4c/source/data/lang/he.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 he{
     Keys{
         calendar{"לוח שנה"}
@@ -189,7 +190,7 @@
         got{"גותית"}
         grb{"גרבו"}
         grc{"יוונית עתיקה"}
-        gsw{"גרמנית (בשוויץ)"}
+        gsw{"גרמנית שוויצרית"}
         gu{"גוג׳ארטי"}
         guz{"גוסי"}
         gv{"מאנית"}
@@ -793,7 +794,6 @@
         SCOTLAND{"אנגלית סקוטית סטנדרטית"}
         WADEGILE{"ווייד-גיילס, שיטה לתעתוק סינית לאותיות לטיניות"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} - הכל"}
         category-list{"{0}: {1}"}
@@ -810,6 +810,8 @@
             other{"{0} משיכות מכחול"}
             two{"{0} משיכות מכחול"}
         }
+        subscript{"כתב תחתי {0}"}
+        superscript{"כתב עילי {0}"}
     }
     codePatterns{
         language{"שפה:‏ {0}"}
diff --git a/icu4c/source/data/lang/he_IL.txt b/icu4c/source/data/lang/he_IL.txt
index 7103953..21ee915 100644
--- a/icu4c/source/data/lang/he_IL.txt
+++ b/icu4c/source/data/lang/he_IL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/hi.txt b/icu4c/source/data/lang/hi.txt
index 5a53543..9c8820a 100644
--- a/icu4c/source/data/lang/hi.txt
+++ b/icu4c/source/data/lang/hi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hi{
     Keys{
         calendar{"कैलेंडर"}
@@ -850,11 +851,12 @@
         AREVELA{"पूर्वी अर्मेनियाई"}
         MONOTON{"एकस्वरीय"}
         NJIVA{"जीवा बोली"}
+        PINYIN{"पिनयिन रोमनाइज़ेशन"}
         POLYTON{"बहुस्वरीय"}
         POSIX{"कम्प्यूटर"}
         REVISED{"संशोधित वर्तनी"}
+        WADEGILE{"वेड-जाइल्स रोमनाइज़ेशन"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — सभी"}
         category-list{"{0}: {1}"}
@@ -869,6 +871,8 @@
             one{"{0} स्ट्रोक"}
             other{"{0} स्ट्रोक"}
         }
+        subscript{"सबस्क्रिप्ट {0}"}
+        superscript{"सुपरस्क्रिप्ट {0}"}
     }
     codePatterns{
         language{"भाषा: {0}"}
diff --git a/icu4c/source/data/lang/hr.txt b/icu4c/source/data/lang/hr.txt
index 802e3f7..eeb0b0f 100644
--- a/icu4c/source/data/lang/hr.txt
+++ b/icu4c/source/data/lang/hr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hr{
     Keys{
         calendar{"kalendar"}
@@ -572,6 +573,7 @@
         az{"azerski"}
     }
     Languages%variant{
+        ckb{"kurdski, soranski"}
         ps{"puštu"}
     }
     Scripts{
@@ -825,10 +827,10 @@
             npinyin{"Numerički"}
         }
         hc{
-            h11{"12-satni format (0-11)"}
-            h12{"12-satni format (1-12)"}
-            h23{"24-satni format (0-23)"}
-            h24{"24-satni format (1-24)"}
+            h11{"12-satni format (0 – 11)"}
+            h12{"12-satni format (0 – 12)"}
+            h23{"24-satni format (0 – 23)"}
+            h24{"24-satni format (1 – 24)"}
         }
         lb{
             loose{"slobodni stil prijeloma retka"}
@@ -928,7 +930,6 @@
         VALENCIA{"valencijski"}
         WADEGILE{"Wade-Giles romanizacija"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} – sve"}
         category-list{"{0}: {1}"}
@@ -944,6 +945,8 @@
             one{"{0} potez"}
             other{"{0} poteza"}
         }
+        subscript{"indeks {0}"}
+        superscript{"eksponent {0}"}
     }
     codePatterns{
         language{"Jezik: {0}"}
diff --git a/icu4c/source/data/lang/hsb.txt b/icu4c/source/data/lang/hsb.txt
index 20e538b..84ca592 100644
--- a/icu4c/source/data/lang/hsb.txt
+++ b/icu4c/source/data/lang/hsb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hsb{
     Keys{
         calendar{"protyka"}
@@ -374,7 +375,6 @@
             tibt{"tibetske cyfry"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"rěč: {0}"}
         script{"pismo: {0}"}
diff --git a/icu4c/source/data/lang/hu.txt b/icu4c/source/data/lang/hu.txt
index f60495a..34409ea 100644
--- a/icu4c/source/data/lang/hu.txt
+++ b/icu4c/source/data/lang/hu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hu{
     Keys{
         calendar{"Naptár"}
@@ -42,7 +43,7 @@
         ang{"óangol"}
         anp{"angika"}
         ar{"arab"}
-        ar_001{"modern szabányos arab"}
+        ar_001{"modern szabványos arab"}
         arc{"arámi"}
         arn{"mapucse"}
         arp{"arapaho"}
@@ -563,13 +564,15 @@
     }
     Languages%menu{
         ars{"arab, nedzsdi"}
-        ckb{"kurd, szoráni"}
         yue{"kantoni kínai"}
         zh{"mandarin"}
     }
     Languages%short{
         az{"azeri"}
     }
+    Languages%variant{
+        ckb{"kurd, szoráni"}
+    }
     Scripts{
         Arab{"Arab"}
         Aran{"Nasztalik"}
@@ -916,7 +919,6 @@
         VALLADER{"Vallader"}
         WADEGILE{"Wade-Giles átírás"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} – összes"}
         category-list{"{0}: {1}"}
@@ -931,6 +933,8 @@
             one{"{0} vonás"}
             other{"{0} vonás"}
         }
+        subscript{"alsó index {0}"}
+        superscript{"felső index {0}"}
     }
     codePatterns{
         language{"Nyelv: {0}"}
diff --git a/icu4c/source/data/lang/hy.txt b/icu4c/source/data/lang/hy.txt
index 6149290..751167e 100644
--- a/icu4c/source/data/lang/hy.txt
+++ b/icu4c/source/data/lang/hy.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hy{
     Keys{
         calendar{"օրացույց"}
@@ -491,11 +492,15 @@
         zh_Hant{"չինարեն (ավանդական չինարեն)"}
     }
     Languages%menu{
+        ckb{"քրդերեն (սորանի)"}
         yue{"չինարեն, կանտոներեն"}
     }
     Languages%short{
         en_GB{"անգլերեն (Բրիտանիա)"}
     }
+    Languages%variant{
+        ckb{"սորանի"}
+    }
     Scripts{
         Arab{"արաբական"}
         Armn{"հայկական"}
@@ -623,7 +628,6 @@
         AREVELA{"արևելահայերեն"}
         AREVMDA{"արեւմտահայերէն"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — բոլորը"}
         category-list{"{0}․ {1}"}
@@ -638,6 +642,7 @@
             one{"{0} — Գծեր"}
             other{"{0} — Գծեր"}
         }
+        subscript{"ենթատողային {0}"}
     }
     codePatterns{
         language{"Լեզու՝ {0}"}
diff --git a/icu4c/source/data/lang/ia.txt b/icu4c/source/data/lang/ia.txt
index 5ab314a..4afe74d 100644
--- a/icu4c/source/data/lang/ia.txt
+++ b/icu4c/source/data/lang/ia.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ia{
     Keys{
         calendar{"calendario"}
@@ -532,7 +533,6 @@
             tibt{"cifras tibetan"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — toto"}
         category-list{"{0}: {1}"}
diff --git a/icu4c/source/data/lang/id.txt b/icu4c/source/data/lang/id.txt
index 9f99464..63489e0 100644
--- a/icu4c/source/data/lang/id.txt
+++ b/icu4c/source/data/lang/id.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 id{
     Keys{
         calendar{"Kalender"}
@@ -174,8 +175,6 @@
         fo{"Faroe"}
         fon{"Fon"}
         fr{"Prancis"}
-        fr_CA{"Perancis (Kanada)"}
-        fr_CH{"Perancis (Swiss)"}
         frc{"Prancis Cajun"}
         frm{"Prancis Abad Pertengahan"}
         fro{"Prancis Kuno"}
@@ -564,20 +563,21 @@
         zen{"Zenaga"}
         zgh{"Tamazight Maroko Standar"}
         zh{"Tionghoa"}
-        zh_Hans{"Tionghoa (Aksara Sederhana)"}
-        zh_Hant{"Tionghoa (Aksara Tradisional)"}
         zu{"Zulu"}
         zun{"Zuni"}
         zxx{"Tidak ada konten linguistik"}
         zza{"Zaza"}
     }
+    Languages%long{
+        zh_Hans{"Tionghoa Mandarin (Sederhana)"}
+        zh_Hant{"Tionghoa Mandarin (Tradisional)"}
+    }
     Languages%menu{
         yue{"Tionghoa, Kanton"}
         zh{"Tionghoa, Mandarin"}
     }
     Languages%short{
         az{"Azeri"}
-        en_GB{"Inggris (U.K.)"}
     }
     Languages%variant{
         ps{"Pushto"}
@@ -610,7 +610,7 @@
         Cprt{"Siprus"}
         Cyrl{"Sirilik"}
         Cyrs{"Gereja Slavonia Sirilik Lama"}
-        Deva{"Devanagari"}
+        Deva{"Dewanagari"}
         Dsrt{"Deseret"}
         Dupl{"Stenografi Duployan"}
         Egyd{"Demotik Mesir"}
@@ -745,7 +745,7 @@
         Zsym{"Simbol"}
         Zxxx{"Tidak Tertulis"}
         Zyyy{"Umum"}
-        Zzzz{"Skrip Tak Dikenal"}
+        Zzzz{"Skrip Tidak Dikenal"}
     }
     Scripts%stand-alone{
         Hans{"Han Sederhana"}
@@ -852,7 +852,7 @@
         ms{
             metric{"Sistem Metrik"}
             uksystem{"Sistem Pengukuran Imperial"}
-            ussystem{"Sistem Pengukuran A.S."}
+            ussystem{"Sistem Pengukuran AS"}
         }
         numbers{
             arab{"Angka Arab Timur"}
@@ -862,7 +862,7 @@
             bali{"Angka Bali"}
             beng{"Angka Bengali"}
             cham{"Angka Cham"}
-            deva{"Angka Devanagari"}
+            deva{"Angka Dewanagari"}
             ethi{"Angka Etiopia"}
             finance{"Angka Finansial"}
             fullwide{"Angka Lebar Penuh"}
@@ -954,20 +954,21 @@
         VALENCIA{"Valencia"}
         WADEGILE{"Wade-Giles Latin"}
     }
-    Version{"37"}
     characterLabelPattern{
-        all{"{0} — Semua"}
+        all{"{0} — semua"}
         category-list{"{0}: {1}"}
-        compatibility{"{0} — Kompatibilitas"}
-        enclosed{"{0} — Terlampir"}
+        compatibility{"{0} — kompatibilitas"}
+        enclosed{"{0} — terlampir"}
         extended{"{0} — diperluas"}
-        historic{"{0} — Historis"}
-        miscellaneous{"{0} — Lain-lain"}
-        other{"{0} — Lainnya"}
+        historic{"{0} — historis"}
+        miscellaneous{"{0} — lain-lain"}
+        other{"{0} — lainnya"}
         scripts{"skrip — {0}"}
         strokes{
-            other{"{0} Goresan"}
+            other{"{0} goresan"}
         }
+        subscript{"subskrip {0}"}
+        superscript{"superskrip {0}"}
     }
     codePatterns{
         language{"Bahasa: {0}"}
diff --git a/icu4c/source/data/lang/id_ID.txt b/icu4c/source/data/lang/id_ID.txt
index 20daa23..63f19a2 100644
--- a/icu4c/source/data/lang/id_ID.txt
+++ b/icu4c/source/data/lang/id_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/ig.txt b/icu4c/source/data/lang/ig.txt
index ebea4ec..12ddd25 100644
--- a/icu4c/source/data/lang/ig.txt
+++ b/icu4c/source/data/lang/ig.txt
@@ -1,81 +1,299 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ig{
+    Keys{
+        calendar{"Kalịnda"}
+        cf{"Ụsọrọ egọ"}
+        collation{"Ụsọrọ Nhazị"}
+        currency{"Egọ"}
+        hc{"Ọge ọkịrịkịrị"}
+        lb{"Akara akanka nkwụsị"}
+        ms{"Ụsọrọ Mmeshọ"}
+        numbers{"Nọmba"}
+    }
     Languages{
+        af{"Afrikaans"}
+        agq{"Aghem"}
         ak{"Akan"}
         am{"Amariikị"}
         ar{"Arabiikị"}
         ar_001{"Ụdị Arabiikị nke oge a"}
-        be{"Belaruusu"}
+        asa{"Asụ"}
+        az{"Azerbajanị"}
+        be{"Belarusianụ"}
+        bez{"Bena"}
         bg{"Bọlụgarịa"}
+        bm{"Bambara"}
         bn{"Bengali"}
+        bo{"Tibetan"}
+        br{"Breton"}
+        brx{"Bọdọ"}
+        bs{"Bosnia"}
+        ca{"Catalan"}
+        ccp{"Chakma"}
+        ce{"Chechen"}
+        ceb{"Cebụanọ"}
+        chr{"Cheroke"}
+        co{"Kọsịan"}
         cs{"Cheekị"}
-        de{"Asụsụ Jaman"}
+        cu{"Church slavic"}
+        cy{"Wesh"}
+        da{"Danịsh"}
+        dav{"Taịta"}
+        de{"Jamanị"}
         de_AT{"Jaman ndị Austria"}
         de_CH{"Jaman Izugbe ndị Switzerland"}
+        dje{"Zarma"}
+        dsb{"Lowa Sorbịan"}
+        dua{"Dụala"}
+        dyo{"Jọla-Fọnyị"}
+        dz{"Dọzngọka"}
+        ebu{"Ebụm"}
+        ee{"Ewe"}
         el{"Giriikị"}
-        en{"Asụsụ Bekee"}
+        en{"Bekee"}
         en_AU{"Bekee ndị Australia"}
         en_CA{"Bekee ndị Canada"}
+        en_GB{"Bekee ndị United Kingdom"}
         en_US{"Bekee ndị America"}
-        es{"Asụsụ Spanish"}
-        es_419{"Asụsụ Spanish ndị Latin America"}
-        es_ES{"Asụsụ Spanish ndị Europe"}
-        es_MX{"Asụsụ Spanish ndị Mexico"}
-        fa{"Peshan"}
-        fr{"Asụsụ Fụrench"}
+        eo{"Ndị Esperantọ"}
+        es{"Spanishi"}
+        es_419{"Spanishi ndị Latin America"}
+        es_ES{"Spanishi ndị Europe"}
+        es_MX{"Spanishi ndị Mexico"}
+        et{"Ndị Estọnịa"}
+        eu{"Baskwe"}
+        ewo{"Ewọndọ"}
+        fa{"Peshianụ"}
+        ff{"Fula"}
+        fi{"Fịnịsh"}
+        fil{"Fịlịpịnọ"}
+        fo{"Farọse"}
+        fr{"Fụrenchị"}
         fr_CA{"Fụrench ndị Canada"}
         fr_CH{"Fụrench ndị Switzerland"}
-        ha{"Awụsa"}
-        hi{"Hindi"}
-        hu{"Magịya"}
+        fur{"Frụlịan"}
+        fy{"Westan Frịsịan"}
+        ga{"Ịrịsh"}
+        gd{"Sụkọtịs Gelị"}
+        gl{"Galịcịan"}
+        gsw{"German Swiss"}
+        gu{"Gụaratị"}
+        guz{"Gụshị"}
+        gv{"Mansị"}
+        ha{"Hausa"}
+        haw{"Hawaịlịan"}
+        he{"Hebrew"}
+        hi{"Hindị"}
+        hmn{"Hmong"}
+        hr{"Kọrọtịan"}
+        hsb{"Ụpa Sọrbịa"}
+        ht{"Haịtịan ndị Cerọle"}
+        hu{"Hụngarian"}
+        ia{"Intalịgụa"}
         id{"Indonisia"}
-        ig{"Asụsụ Igbo"}
-        it{"Asụsụ Italian"}
-        ja{"Asụsụ Japanese"}
+        ig{"Igbo"}
+        ii{"Sịchụayị"}
+        is{"Icịlandịk"}
+        it{"Italịanu"}
+        ja{"Japaniisi"}
+        jgo{"Ngọmba"}
+        jmc{"Machame"}
         jv{"Java"}
-        km{"Keme, Etiti"}
-        ko{"Koria"}
+        ka{"Geọjịan"}
+        kab{"Kabyle"}
+        kam{"Kamba"}
+        kde{"Makọnde"}
+        kea{"Kabụverdịanụ"}
+        khq{"Kọyra Chịnị"}
+        ki{"Kịkụyụ"}
+        kk{"Kazak"}
+        kkj{"Kakọ"}
+        kl{"Kalaalịsụt"}
+        kln{"Kalenjịn"}
+        km{"Keme"}
+        kn{"Kanhada"}
+        ko{"Korịa"}
+        kok{"Kọnkanị"}
+        ks{"Kashmịrị"}
+        ksb{"Shabala"}
+        ksf{"Bafịa"}
+        ksh{"Colognịan"}
+        ku{"Ndị Kụrdịsh"}
+        kw{"Kọnịsh"}
+        ky{"Kyrayz"}
+        la{"Latịn"}
+        lag{"Langị"}
+        lb{"Lụxenbọụgịsh"}
+        lg{"Ganda"}
+        ln{"Lịngala"}
+        lo{"Laọ"}
+        lrc{"Nọrtụ Lụrị"}
+        lt{"Lituanian"}
+        lu{"Lịba-Katanga"}
+        luy{"Lụyịa"}
+        lv{"Latviani"}
+        mai{"Maịtịlị"}
+        mas{"Masaị"}
+        mer{"Merụ"}
+        mfe{"Mọrịsye"}
+        mg{"Malagasị"}
+        mgh{"Makụwa Metọ"}
+        mgo{"Meta"}
+        mi{"Maọrị"}
+        mk{"Masedọnịa"}
+        ml{"Malayalam"}
+        mn{"Mọngolịan"}
+        mni{"Manịpụrị"}
+        mr{"Maratị"}
         ms{"Maleyi"}
-        my{"Mịanma"}
+        mt{"Matịse"}
+        mua{"Mụdang"}
+        mul{"Ọtụtụ asụsụ"}
+        my{"Bụrmese"}
+        mzn{"Mazandaranị"}
+        naq{"Nama"}
+        nb{"Nọrweyịan Bọkmal"}
+        nd{"Nọrtụ Ndabede"}
+        nds{"Lowa German"}
         ne{"Nepali"}
-        nl{"Dọọch"}
+        nl{"Dọchị"}
+        nmg{"Kwasịọ"}
+        nn{"Nọrweyịan Nynersk"}
+        nnh{"Nglembọn"}
+        nus{"Nụer"}
+        ny{"Nyanja"}
+        nyn{"Nyakọle"}
+        om{"Ọromo"}
+        or{"Ọdịa"}
+        os{"Osetik"}
         pa{"Punjabi"}
+        pcm{"Pidgịn"}
         pl{"Poliishi"}
-        pt{"Asụsụ Portuguese"}
-        pt_BR{"Asụsụ Portuguese ndị Brazil"}
+        prg{"Prụssịan"}
+        ps{"Pashọ"}
+        pt{"Pọrtụgụese"}
+        pt_BR{"Pọrtụgụese ndị Brazil"}
         pt_PT{"Asụsụ Portuguese ndị Europe"}
-        ro{"Rumenia"}
-        ru{"Asụsụ Russian"}
-        rw{"Rụwanda"}
+        qu{"Qụechụa"}
+        rm{"Rọmansị"}
+        rn{"Rụndị"}
+        ro{"Romania"}
+        rof{"Rọmbọ"}
+        ru{"Rọshian"}
+        rw{"Kinyarwanda"}
+        rwk{"Rwa"}
+        sa{"Sansịkịt"}
+        sah{"Saka"}
+        saq{"Sambụrụ"}
+        sat{"Santalị"}
+        sbp{"Sangụ"}
+        sd{"Sịndh"}
+        se{"Nọrtan Samị"}
+        seh{"Sena"}
+        ses{"Kọyraboro Senị"}
+        sg{"Sangọ"}
+        shi{"Tachịkịt"}
+        si{"Sinhala"}
+        sk{"Slova"}
+        sl{"Slovịan"}
+        sm{"Samọa"}
+        smn{"Inarị Samị"}
+        sn{"Shọna"}
         so{"Somali"}
+        sr{"Sebịan"}
+        st{"Sọụth Soto"}
         sv{"Sụwidiishi"}
-        ta{"Tamụlụ"}
+        ta{"Tamil"}
+        te{"Telụgụ"}
+        teo{"Tesọ"}
+        tg{"Tajịk"}
         th{"Taị"}
+        ti{"Tịgrịnya"}
+        tk{"Turkịs"}
+        to{"Tọngan"}
         tr{"Tọkiishi"}
+        tt{"Tata"}
+        twq{"Tasawa"}
+        ug{"Ụyghụr"}
         uk{"Ukureenị"}
         und{"Asụsụ amaghị"}
-        ur{"Urudu"}
-        vi{"Viyetịnaamụ"}
+        ur{"Urdụ"}
+        uz{"Ụzbek"}
+        vai{"Val"}
+        vi{"Vietnamisi"}
+        vo{"Volapụ"}
+        vun{"Vụnjọ"}
+        wae{"Wasa"}
+        wo{"Wolọf"}
+        xh{"Xhọsa"}
+        xog{"Sọga"}
+        yav{"Yangben"}
+        yi{"Yịdịsh"}
         yo{"Yoruba"}
-        zh{"Mandarịịnị"}
+        yue{"Katọnịse"}
+        zh{"Chainisi"}
         zh_Hans{"Asụsụ Chinese dị mfe"}
         zh_Hant{"Asụsụ Chinese Izugbe"}
         zu{"Zulu"}
+        zxx{"Ndị ọzọ abụghị asụsụ"}
+    }
+    Languages%menu{
+        ckb{"Kurdish ọsote"}
+        yue{"Chinese,Cantonese"}
     }
     Languages%short{
+        az{"Azeri"}
         en_GB{"Bekee ndị UK"}
         en_US{"Bekee ndị US"}
     }
+    Languages%variant{
+        ckb{"Kurdish ọzọ"}
+    }
     Scripts{
         Arab{"Mkpụrụ Okwu Arabic"}
+        Armn{"Mkpụrụ ọkwụ Armenịan"}
+        Beng{"Mkpụrụ ọkwụ Bangla"}
+        Bopo{"Mkpụrụ ọkwụ Bopomofo"}
+        Brai{"Braịlle"}
         Cyrl{"Mkpụrụ Okwu Cyrillic"}
+        Deva{"Mkpụrụ ọkwụ Devangarị"}
+        Ethi{"Mkpụrụ ọkwụ Etọpịa"}
+        Geor{"Mkpụrụ ọkwụ Geọjịan"}
+        Grek{"Mkpụrụ ọkwụ grịk"}
+        Gujr{"Mkpụrụ ọkwụ Gụjaratị"}
+        Guru{"Mkpụrụ ọkwụ Gụrmụkị"}
+        Hanb{"Han na Bopomofo"}
+        Hang{"Mkpụrụ ọkwụ Hangụl"}
+        Hani{"Mkpụrụ ọkwụ Han"}
         Hans{"Nke dị mfe"}
         Hant{"Izugbe"}
+        Hebr{"Mkpụrụ ọkwụ Hebrew"}
+        Hira{"Mkpụrụ okwụ Hịragana"}
+        Hrkt{"mkpụrụ ọkwụ Japanịsị"}
+        Jamo{"Jamọ"}
         Jpan{"Japanese"}
+        Kana{"Katakana"}
+        Khmr{"Khmer"}
+        Knda{"Kannaada"}
         Kore{"Korea"}
+        Laoo{"Laọ"}
         Latn{"Latin"}
+        Mlym{"Malayala"}
+        Mong{"Mọngọlịan"}
+        Mymr{"Myanmar"}
+        Orya{"Ọdịa"}
+        Sinh{"Sinhala"}
+        Taml{"Tamịl"}
+        Telu{"Telụgụ"}
+        Thaa{"Taa"}
+        Tibt{"Tịbeta"}
+        Zmth{"Mkpụrụ ọkwụ Mgbakọ"}
+        Zsye{"Emojị"}
+        Zsym{"Akara"}
         Zxxx{"Edeghị ede"}
+        Zyyy{"kọmọn"}
         Zzzz{"Mkpụrụ okwu amaghị"}
     }
     Scripts%stand-alone{
@@ -84,17 +302,80 @@
     }
     Types{
         calendar{
+            buddhist{"Kalịnda Bụddịst"}
+            chinese{"Kalịnda Chinese"}
+            dangi{"Kalịnda Dang"}
+            ethiopic{"Kalịnda Etopịa"}
             gregorian{"Kalenda Gregory"}
+            hebrew{"Kalịnda Hebrew"}
+            islamic{"Kalịnda Islam"}
             iso8601{"Kalenda ISO-8601"}
+            japanese{"Kalịnda Japanese"}
+            persian{"Kalịnda Persian"}
+            roc{"Kalịnda repụblic nke China"}
+        }
+        cf{
+            account{"Ụsọrọ akantụ egọ"}
+            standard{"Ụsọrọ egọ nzụgbe"}
         }
         collation{
+            search{"Ọchụchụ nịle"}
             standard{"Usoro Nhazi"}
         }
+        hc{
+            h11{"Ụsọrọ Ọge ọkịrịkịri 12"}
+            h12{"Ụsọrọ Oge okịrịkịri 12"}
+            h23{"Ụsọrọ Oge okịrịkịrị 24"}
+            h24{"Ụsọrọ Ọge okịrịkịrị 24"}
+        }
+        lb{
+            loose{"Akara akanka nkwụsị esịghị ịke"}
+            normal{"Akara akanka nkwụsị kwesịrị"}
+            strict{"Akara akanka nkwụsị sịrị ịke"}
+        }
+        ms{
+            metric{"Ụsọrọ Metịrịk"}
+            uksystem{"Ụsọrọ Mmeshọ ịmperịa"}
+            ussystem{"Ụsọrọ Mmeshọ US"}
+        }
         numbers{
+            arab{"Ọnụ ọgụgụ Arab na Indị"}
+            arabext{"Ọnụ ọgụgụ Arab na Indị agbatịrị"}
+            armn{"Ọnụ ọgụgụ Armenịan"}
+            armnlow{"ọbere ọnụ ọgụgụ Armenịan"}
+            beng{"Ọnụ ọgụgụ Bang"}
+            deva{"Ọnụ ọgụgụ Devanagarị"}
+            ethi{"Ọnụ ọgụgụ Etọpịa"}
+            fullwide{"Ọnụ ọgụgụ ọbọsara"}
+            geor{"Ọnụ ọgụgụ Geọjịan"}
+            grek{"Ọnụ ọgụgụ Greek"}
+            greklow{"Ọbere ọnụ ọgụgụ Greek"}
+            gujr{"Ọnụ ọgụgụ Gụjaratị"}
+            guru{"Onụ ọgụgụ Gụmụkh"}
+            hanidec{"Ọnụ ọgụgụ ntụpọ Chịnese"}
+            hans{"Ọnụ ọgụgụ mfe Chịnese"}
+            hansfin{"Ọnụ ọgụgụ akantụ mfe nke Chinese"}
+            hant{"Ọnụ ọgụgụ ọdinala chinese"}
+            hantfin{"Ọnụ ọgụgụ akantụ ọdịnala Chinese"}
+            hebr{"Ọnụ ọgụgụ Hebrew"}
+            jpan{"Ọnụ ọgụgụ Japanese"}
+            jpanfin{"Ọnụ ọgụgụ akantụ Japanese"}
+            khmr{"Ọnụ ọgụgụ Khmer"}
+            knda{"Ọnụ ọgụgụ Kanada"}
+            laoo{"Ọnụ ọgụgụ Laọ"}
             latn{"Ọnụ Ọgụgụ Mpaghara Ọdịda Anyanwụ"}
+            mlym{"Ọnụ ọgụgụ Malayala"}
+            mymr{"Ọnụ ọgụgụ Myamar"}
+            orya{"Ọnụ ọgụgụ Ọdịa"}
+            roman{"Ọnụ ọgụgụ Roman"}
+            romanlow{"Ọbere Ọnụ ọgụgụ Roman"}
+            taml{"Ọnụ ọgụgụ ọdịnala Tamịl"}
+            tamldec{"Ọnụ ọgụgụ Tamị"}
+            telu{"Ọnụ ọgụgụ Telụgụ"}
+            thai{"Ọnụ ọgụgụ Taị"}
+            tibt{"Ọnụ ọgụgụ Tịbeta"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"Asụsụ: {0}"}
         script{"Mkpụrụ Okwu: {0}"}
diff --git a/icu4c/source/data/lang/ii.txt b/icu4c/source/data/lang/ii.txt
index fdabae7..ecf8c46 100644
--- a/icu4c/source/data/lang/ii.txt
+++ b/icu4c/source/data/lang/ii.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ii{
     Languages{
         de{"ꄓꇩꉙ"}
@@ -33,7 +34,6 @@
             islamic{"ꑳꌦꇂꑍꉖ"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"ꅇꉙ: {0}"}
         script{"ꇇꁱ: {0}"}
diff --git a/icu4c/source/data/lang/in.txt b/icu4c/source/data/lang/in.txt
index 0233523..e2df169 100644
--- a/icu4c/source/data/lang/in.txt
+++ b/icu4c/source/data/lang/in.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 in{
     "%%ALIAS"{"id"}
 }
diff --git a/icu4c/source/data/lang/in_ID.txt b/icu4c/source/data/lang/in_ID.txt
index acec72c..03f2387 100644
--- a/icu4c/source/data/lang/in_ID.txt
+++ b/icu4c/source/data/lang/in_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 in_ID{
     "%%ALIAS"{"id_ID"}
 }
diff --git a/icu4c/source/data/lang/is.txt b/icu4c/source/data/lang/is.txt
index 1887c34..6eb2dcc 100644
--- a/icu4c/source/data/lang/is.txt
+++ b/icu4c/source/data/lang/is.txt
@@ -1,8 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 is{
     Keys{
-        calendar{"Dagatal"}
+        calendar{"Tímatal"}
         cf{"Gjaldmiðilssnið"}
         colAlternate{"Röðun óháð táknum"}
         colBackwards{"Röðun með viðsnúnum áherslum"}
@@ -182,7 +183,7 @@
         gd{"skosk gelíska"}
         gez{"gís"}
         gil{"gilberska"}
-        gl{"galíanska"}
+        gl{"galisíska"}
         gmh{"miðháþýska"}
         gn{"gvaraní"}
         goh{"fornháþýska"}
@@ -212,7 +213,7 @@
         hup{"húpa"}
         hy{"armenska"}
         hz{"hereró"}
-        ia{"alþjóðatunga"}
+        ia{"interlingua"}
         iba{"íban"}
         ibb{"ibibio"}
         id{"indónesíska"}
@@ -336,7 +337,7 @@
         mus{"krík"}
         mwl{"mirandesíska"}
         mwr{"marvarí"}
-        my{"burmneska"}
+        my{"búrmneska"}
         myv{"ersja"}
         mzn{"masanderaní"}
         na{"nárúska"}
@@ -615,22 +616,22 @@
     }
     Types{
         calendar{
-            buddhist{"Búddískt dagatal"}
-            chinese{"Kínverskt dagatal"}
+            buddhist{"Búddískt tímatal"}
+            chinese{"Kínversk tímatal"}
             coptic{"Koptískt tímatal"}
-            dangi{"Dangi dagatal"}
-            ethiopic{"Eþíópískt dagatal"}
+            dangi{"Dangi tímatal"}
+            ethiopic{"Eþíópískt tímatal"}
             ethiopic-amete-alem{"Eþíópískt ‘amete alem’ tímatal"}
-            gregorian{"Gregorískt dagatal"}
-            hebrew{"Hebreskt dagatal"}
+            gregorian{"Gregorískt tímatal"}
+            hebrew{"Hebreskt tímatal"}
             indian{"indverskt dagatal"}
-            islamic{"Íslamskt dagatal"}
+            islamic{"Íslamskt tímatal"}
             islamic-civil{"Íslamskt borgaradagatal"}
             islamic-umalqura{"Íslamskt dagatal (Umm al-Qura)"}
-            iso8601{"ISO-8601 dagatal"}
-            japanese{"Japanskt dagatal"}
-            persian{"Persneskt dagatal"}
-            roc{"Minguo dagatal"}
+            iso8601{"ISO-8601 tímatal"}
+            japanese{"Japanskt tímatal"}
+            persian{"Persneskt tímatal"}
+            roc{"Minguo tímatal"}
         }
         cf{
             account{"Bókhaldsgjaldmiðill"}
@@ -755,7 +756,6 @@
             vaii{"Vai-tölustafir"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — allt"}
         category-list{"{0}: {1}"}
@@ -770,6 +770,8 @@
             one{"{0} slag"}
             other{"{0} slög"}
         }
+        subscript{"hnéletur {0}"}
+        superscript{"brjóstletur {0}"}
     }
     codePatterns{
         language{"tungumál: {0}"}
diff --git a/icu4c/source/data/lang/it.txt b/icu4c/source/data/lang/it.txt
index 488ab93..9b5163e 100644
--- a/icu4c/source/data/lang/it.txt
+++ b/icu4c/source/data/lang/it.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 it{
     Keys{
         calendar{"Calendario"}
@@ -132,7 +133,7 @@
         crs{"creolo delle Seychelles"}
         cs{"ceco"}
         csb{"kashubian"}
-        cu{"slavo della Chiesa"}
+        cu{"slavo ecclesiastico"}
         cv{"ciuvascio"}
         cy{"gallese"}
         da{"danese"}
@@ -244,7 +245,7 @@
         hr{"croato"}
         hsb{"alto sorabo"}
         hsn{"xiang"}
-        ht{"haitiano"}
+        ht{"creolo haitiano"}
         hu{"ungherese"}
         hup{"hupa"}
         hy{"armeno"}
@@ -482,7 +483,7 @@
         rwk{"rwa"}
         sa{"sanscrito"}
         sad{"sandawe"}
-        sah{"yakut"}
+        sah{"sacha"}
         sam{"aramaico samaritano"}
         saq{"samburu"}
         sas{"sasak"}
@@ -639,6 +640,8 @@
         zh_Hant{"cinese mandarino tradizionale"}
     }
     Languages%menu{
+        ckb{"curdo centrale"}
+        yue{"cinese (cantonese)"}
         zh{"cinese (mandarino)"}
     }
     Languages%short{
@@ -647,6 +650,7 @@
     }
     Scripts{
         Afak{"afaka"}
+        Aghb{"albanese caucasico"}
         Arab{"arabo"}
         Aran{"nastaliq"}
         Armi{"aramaico imperiale"}
@@ -688,7 +692,7 @@
         Grek{"greco"}
         Gujr{"gujarati"}
         Guru{"gurmukhi"}
-        Hanb{"hanb"}
+        Hanb{"han, bopomofo"}
         Hang{"hangul"}
         Hani{"han"}
         Hano{"hanunoo"}
@@ -1028,7 +1032,6 @@
         VALENCIA{"valenziano"}
         WADEGILE{"romanizzazione Wade-Giles"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — Tutto"}
         category-list{"{0}: {1}"}
@@ -1043,6 +1046,8 @@
             one{"{0} tratto"}
             other{"{0} tratti"}
         }
+        subscript{"pedice {0}"}
+        superscript{"apice {0}"}
     }
     codePatterns{
         language{"Lingua: {0}"}
diff --git a/icu4c/source/data/lang/iw.txt b/icu4c/source/data/lang/iw.txt
index d59865d..4aa2f62 100644
--- a/icu4c/source/data/lang/iw.txt
+++ b/icu4c/source/data/lang/iw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 iw{
     "%%ALIAS"{"he"}
 }
diff --git a/icu4c/source/data/lang/iw_IL.txt b/icu4c/source/data/lang/iw_IL.txt
index cf1666a..984aefd 100644
--- a/icu4c/source/data/lang/iw_IL.txt
+++ b/icu4c/source/data/lang/iw_IL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 iw_IL{
     "%%ALIAS"{"he_IL"}
 }
diff --git a/icu4c/source/data/lang/ja.txt b/icu4c/source/data/lang/ja.txt
index d4b0981..39f3df7 100644
--- a/icu4c/source/data/lang/ja.txt
+++ b/icu4c/source/data/lang/ja.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ja{
     Keys{
         calendar{"暦法"}
@@ -408,7 +409,7 @@
         niu{"ニウーエイ語"}
         njo{"アオ・ナガ語"}
         nl{"オランダ語"}
-        nl_BE{"フレミッシュ語"}
+        nl_BE{"フラマン語"}
         nmg{"クワシオ語"}
         nn{"ノルウェー語(ニーノシュク)"}
         nnh{"ンジエムブーン語"}
@@ -1058,7 +1059,6 @@
         VALLADER{"ヴァラダー"}
         WADEGILE{"ウェード式ローマ字表記法"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — すべて"}
         category-list{"{0}: {1}"}
@@ -1072,6 +1072,8 @@
         strokes{
             other{"{0} 画"}
         }
+        subscript{"下付き文字 {0}"}
+        superscript{"上付き文字 {0}"}
     }
     codePatterns{
         language{"言語: {0}"}
diff --git a/icu4c/source/data/lang/jgo.txt b/icu4c/source/data/lang/jgo.txt
index c371a2e..61b43a8 100644
--- a/icu4c/source/data/lang/jgo.txt
+++ b/icu4c/source/data/lang/jgo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jgo{
     Keys{
         currency{"Ŋkáp"}
@@ -28,5 +29,4 @@
             latn{"pɛnɔ́mba"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/jmc.txt b/icu4c/source/data/lang/jmc.txt
index 5014fa3..7b6081a 100644
--- a/icu4c/source/data/lang/jmc.txt
+++ b/icu4c/source/data/lang/jmc.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jmc{
     Languages{
         ak{"Kiakanyi"}
@@ -48,5 +49,4 @@
         zh{"Kyichina"}
         zu{"Kyizulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/jv.txt b/icu4c/source/data/lang/jv.txt
index ac12985..4a7f24c 100644
--- a/icu4c/source/data/lang/jv.txt
+++ b/icu4c/source/data/lang/jv.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jv{
     Keys{
         calendar{"Tanggalan"}
@@ -134,6 +135,7 @@
         luo{"Luo"}
         luy{"Luyia"}
         lv{"Latvia"}
+        mai{"Maithili"}
         mas{"Masai"}
         mer{"Meru"}
         mfe{"Morisyen"}
@@ -144,6 +146,7 @@
         mk{"Makedonia"}
         ml{"Malayalam"}
         mn{"Mongolia"}
+        mni{"Manipuri"}
         mr{"Marathi"}
         ms{"Melayu"}
         mt{"Malta"}
@@ -168,6 +171,7 @@
         or{"Odia"}
         os{"Ossetia"}
         pa{"Punjab"}
+        pcm{"Nigeria Pidgin"}
         pl{"Polandia"}
         prg{"Prusia"}
         ps{"Pashto"}
@@ -183,6 +187,7 @@
         sa{"Sanskerta"}
         sah{"Sakha"}
         saq{"Samburu"}
+        sat{"Santali"}
         sbp{"Sangu"}
         sd{"Sindhi"}
         se{"Sami Sisih Lor"}
@@ -234,6 +239,7 @@
         yue{"Kanton"}
         zgh{"Tamazight Moroko Standar"}
         zh{"Tyonghwa"}
+        zh_Hans{"Tyonghwa (Ringkes)"}
         zh_Hant{"Tyonghwa (Tradisional)"}
         zu{"Zulu"}
         zxx{"Konten tanpa linguistik"}
@@ -376,7 +382,6 @@
             tibt{"Digit Tibet"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — kabeh"}
         compatibility{"{0} — kompatibilitas"}
@@ -389,6 +394,8 @@
         strokes{
             other{"{0} tunyuk"}
         }
+        subscript{"tika ngisor {0}"}
+        superscript{"tika dhuwur {0}"}
     }
     codePatterns{
         language{"Basa: {0}"}
diff --git a/icu4c/source/data/lang/ka.txt b/icu4c/source/data/lang/ka.txt
index 4c1086b..27bcf30 100644
--- a/icu4c/source/data/lang/ka.txt
+++ b/icu4c/source/data/lang/ka.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ka{
     Keys{
         calendar{"კალენდარი"}
@@ -48,7 +49,7 @@
         ban{"ბალინური"}
         bas{"ბასა"}
         bax{"ბამუნი"}
-        be{"ბელორუსული"}
+        be{"ბელარუსული"}
         bej{"ბეჯა"}
         bem{"ბემბა"}
         bez{"ბენა"}
@@ -501,7 +502,7 @@
         zh{"ჩინური, მანდარინი"}
     }
     Languages%short{
-        en_GB{"გართ. სამ. ინგლისური"}
+        en_GB{"ინგლისური (გაერთ. სამეფო)"}
         en_US{"აშშ ინგლისური"}
     }
     Scripts{
@@ -743,7 +744,6 @@
             tibt{"ტიბეტური ციფრები"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — ყველა"}
         category-list{"{0}: {1}"}
@@ -758,6 +758,8 @@
             one{"{0} შტრიხი"}
             other{"{0} შტრიხი"}
         }
+        subscript{"ქვედა ინდექსი {0}"}
+        superscript{"ზედა ინდექსი {0}"}
     }
     codePatterns{
         language{"ენა: {0}"}
diff --git a/icu4c/source/data/lang/kab.txt b/icu4c/source/data/lang/kab.txt
index d227c58..1239f64 100644
--- a/icu4c/source/data/lang/kab.txt
+++ b/icu4c/source/data/lang/kab.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kab{
     Languages{
         ak{"Takanit"}
@@ -48,5 +49,4 @@
         zh{"Tacinwat, Tamundarint"}
         zu{"Tazulut"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/kam.txt b/icu4c/source/data/lang/kam.txt
index 368d809..03202bc 100644
--- a/icu4c/source/data/lang/kam.txt
+++ b/icu4c/source/data/lang/kam.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kam{
     Languages{
         ak{"Kiakan"}
@@ -48,5 +49,4 @@
         zh{"Kichina"}
         zu{"Kizulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/kde.txt b/icu4c/source/data/lang/kde.txt
index b2358b9..25c586f 100644
--- a/icu4c/source/data/lang/kde.txt
+++ b/icu4c/source/data/lang/kde.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kde{
     Languages{
         ak{"Chakan"}
@@ -48,5 +49,4 @@
         zh{"Chichina"}
         zu{"Chizulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/kea.txt b/icu4c/source/data/lang/kea.txt
index 65e8aa2..25403be 100644
--- a/icu4c/source/data/lang/kea.txt
+++ b/icu4c/source/data/lang/kea.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kea{
     Keys{
         calendar{"Kalendáriu"}
@@ -91,7 +92,7 @@
         gag{"gagauz"}
         gl{"galegu"}
         gn{"guarani"}
-        gsw{"alemon suísu"}
+        gsw{"alemon suisu"}
         gu{"gujarati"}
         guz{"gusii"}
         gv{"manks"}
@@ -209,7 +210,7 @@
         to{"tonganes"}
         tr{"turku"}
         tt{"tatar"}
-        tzm{"tamazait di Atlas Sentral"}
+        tzm{"tamaziti di Atlas Sentral"}
         ug{"uigur"}
         uk{"ukranianu"}
         und{"língua diskonxedu"}
@@ -290,11 +291,17 @@
         calendar{
             buddhist{"Kalendáriu budista"}
             chinese{"Kalendáriu xines"}
+            coptic{"Kalendáriu kopta"}
             dangi{"Kalendáriu dangi"}
             ethiopic{"Kalendáriu etiópiku"}
+            ethiopic-amete-alem{"Kalendáriu etíopi ameti alem"}
             gregorian{"Kalendáriu Gregorianu"}
             hebrew{"Kalendáriu ebraiku"}
+            indian{"Kalendáriu nasional indianu"}
             islamic{"Kalendáriu islámiku"}
+            islamic-civil{"Kalendáriu islámiku (sivil)"}
+            islamic-tbla{"Kalendáriu islámiku (astronómiku)"}
+            islamic-umalqura{"Kalendáriu islámiku (Umm al-Qura)"}
             iso8601{"Kalendáriu ISO-8601"}
             japanese{"Kalendáriu japones"}
             persian{"Kalendáriu persa"}
@@ -329,7 +336,6 @@
             latn{"Nunbru osidental"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"Lingua: {0}"}
         script{"Skrita: {0}"}
diff --git a/icu4c/source/data/lang/khq.txt b/icu4c/source/data/lang/khq.txt
index 3c15c0d..0efad22 100644
--- a/icu4c/source/data/lang/khq.txt
+++ b/icu4c/source/data/lang/khq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 khq{
     Languages{
         ak{"Akan senni"}
@@ -48,5 +49,4 @@
         zh{"Sinuwa senni, Mandareŋ"}
         zu{"Julu senni"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ki.txt b/icu4c/source/data/lang/ki.txt
index 536d4a6..c0307f1 100644
--- a/icu4c/source/data/lang/ki.txt
+++ b/icu4c/source/data/lang/ki.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ki{
     Languages{
         ak{"Kiakan"}
@@ -48,5 +49,4 @@
         zh{"Kĩcaina"}
         zu{"Kizulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/kk.txt b/icu4c/source/data/lang/kk.txt
index 8b633a1..afdff08 100644
--- a/icu4c/source/data/lang/kk.txt
+++ b/icu4c/source/data/lang/kk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kk{
     Keys{
         calendar{"Күнтізбе"}
@@ -550,7 +551,6 @@
             tibt{"Тибет сандары"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — барлығы"}
         category-list{"{0}: {1}"}
@@ -565,6 +565,8 @@
             one{"{0} сызық"}
             other{"{0} сызық"}
         }
+        subscript{"жол асты таңба {0}"}
+        superscript{"жол үсті таңба {0}"}
     }
     codePatterns{
         language{"Тіл: {0}"}
diff --git a/icu4c/source/data/lang/kkj.txt b/icu4c/source/data/lang/kkj.txt
index 9c1344a..b0c551f 100644
--- a/icu4c/source/data/lang/kkj.txt
+++ b/icu4c/source/data/lang/kkj.txt
@@ -1,10 +1,10 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kkj{
     Languages{
         en{"yaman"}
         fr{"numbu buy"}
         kkj{"kakɔ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/kl.txt b/icu4c/source/data/lang/kl.txt
index 73127a9..fe24250 100644
--- a/icu4c/source/data/lang/kl.txt
+++ b/icu4c/source/data/lang/kl.txt
@@ -1,10 +1,10 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kl{
     Languages{
         kl{"kalaallisut"}
     }
-    Version{"37"}
     localeDisplayPattern{
         keyTypePattern{"{0}: {1}"}
         pattern{"{0} ({1})"}
diff --git a/icu4c/source/data/lang/kln.txt b/icu4c/source/data/lang/kln.txt
index 001124d..622f20f 100644
--- a/icu4c/source/data/lang/kln.txt
+++ b/icu4c/source/data/lang/kln.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kln{
     Languages{
         ak{"kutitab Aka"}
@@ -48,5 +49,4 @@
         zh{"kutitab China"}
         zu{"kutitab Zulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/km.txt b/icu4c/source/data/lang/km.txt
index ce2cc27..7575836 100644
--- a/icu4c/source/data/lang/km.txt
+++ b/icu4c/source/data/lang/km.txt
@@ -1,11 +1,12 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 km{
     Keys{
         calendar{"ប្រតិទិន"}
-        cf{"ទម្រង់រូបិយប័ណ្ណ"}
+        cf{"ទម្រង់រូបិយបណ្ណ"}
         collation{"លំដាប់​តម្រៀប"}
-        currency{"រូបិយប័ណ្ណ"}
+        currency{"រូបិយបណ្ណ"}
         hc{"វដ្តម៉ោង (12 vs 24)"}
         lb{"របៀបចុះបន្ទាត់"}
         ms{"ប្រព័ន្ធវាស់វែង"}
@@ -44,7 +45,7 @@
         be{"បេឡារុស"}
         bem{"បេមបា"}
         bez{"បេណា"}
-        bg{"ប៊ុលហ្គារី"}
+        bg{"ប៊ុលហ្ការី"}
         bgn{"បាឡូជីខាងលិច"}
         bho{"បូចពូរី"}
         bi{"ប៊ីស្លាម៉ា"}
@@ -53,7 +54,7 @@
         bm{"បាម្បារា"}
         bn{"បង់ក្លាដែស"}
         bo{"ទីបេ"}
-        br{"ប្រីស្តុន"}
+        br{"ប្រ៊ីស្តុន"}
         brx{"បូដូ"}
         bs{"បូស្នី"}
         bug{"ប៊ុកហ្គី"}
@@ -62,7 +63,7 @@
         ccp{"ចាក់ម៉ា"}
         ce{"ឈីឆេន"}
         ceb{"ស៊ីប៊ូអាណូ"}
-        cgg{"ឈីហ្គា"}
+        cgg{"ឈីហ្កា"}
         ch{"ឈីម៉ូរ៉ូ"}
         chk{"ឈូគី"}
         chm{"ម៉ារី"}
@@ -73,7 +74,7 @@
         co{"កូស៊ីខាន"}
         crs{"សេសេលវ៉ាគ្រីអូល (បារាំង)"}
         cs{"ឆែក"}
-        cu{"ឈឺជស្លាវិក"}
+        cu{"ឈើជស្លាវិក"}
         cv{"ឈូវ៉ាស"}
         cy{"វេល"}
         da{"ដាណឺម៉ាក"}
@@ -81,7 +82,6 @@
         dar{"ដាចវ៉ា"}
         dav{"តៃតា"}
         de{"អាល្លឺម៉ង់"}
-        de_CH{"អាល្លឺម៉ង់ (ស្វ៊ីស)"}
         dgr{"ដូគ្រីប"}
         dje{"ហ្សាម៉ា"}
         dsb{"សូប៊ីក្រោម"}
@@ -106,12 +106,11 @@
         fa_AF{"ដារី"}
         ff{"ហ្វ៊ូឡា"}
         fi{"ហ្វាំងឡង់"}
-        fil{"ហ្វីលីពីន"}
+        fil{"ហ្វ៊ីលីពីន"}
         fj{"ហ៊្វីជី"}
         fo{"ហ្វារូស"}
         fon{"ហ្វ៊ុន"}
         fr{"បារាំង"}
-        fr_CH{"បារាំង (ស្វ៊ីស)"}
         fur{"ហ៊្វ្រូលាន"}
         fy{"ហ្វ្រីស៊ានខាងលិច"}
         ga{"អៀរឡង់"}
@@ -120,16 +119,16 @@
         gd{"ស្កុតហ្កែលិគ"}
         gez{"ជីស"}
         gil{"ហ្គីលបឺទ"}
-        gl{"ហ្គាលីស្យាន"}
+        gl{"ហ្កាលីស្យាន"}
         gn{"ហ្គូរ៉ានី"}
         gor{"ហ្គូរុនតាឡូ"}
         gsw{"អាល្លឺម៉ង (ស្វីស)"}
-        gu{"ហ្កុយ៉ារាទី"}
+        gu{"ហ្គុយ៉ារ៉ាទី"}
         guz{"ហ្គូស៊ី"}
         gv{"មេន"}
         gwi{"ហ្គីចឈីន"}
         ha{"ហូសា"}
-        haw{"ហាវៃ"}
+        haw{"ហាវ៉ៃ"}
         he{"ហេប្រឺ"}
         hi{"ហិណ្ឌី"}
         hil{"ហ៊ីលីហ្គេណុន"}
@@ -141,7 +140,7 @@
         hup{"ហ៊ូប៉ា"}
         hy{"អាមេនី"}
         hz{"ហឺរីរ៉ូ"}
-        ia{"អីនធើលីង"}
+        ia{"អ៊ីនធើលីង"}
         iba{"អ៊ីបាន"}
         ibb{"អាយប៊ីប៊ីអូ"}
         id{"ឥណ្ឌូណេស៊ី"}
@@ -201,7 +200,7 @@
         lag{"ឡានហ្គី"}
         lb{"លុចសំបួ"}
         lez{"ឡេសហ្គី"}
-        lg{"ហ្គាន់ដា"}
+        lg{"ហ្កាន់ដា"}
         li{"លីមប៊ូស"}
         lkt{"ឡាកូតា"}
         ln{"លីនកាឡា"}
@@ -288,6 +287,7 @@
         prg{"ព្រូស៊ាន"}
         ps{"បាស្តូ"}
         pt{"ព័រទុយហ្គាល់"}
+        pt_BR{"ព័រទុយហ្កាល់ (ប្រេស៊ីល)"}
         pt_PT{"ព័រទុយហ្គាល់ (អឺរ៉ុប)"}
         qu{"ហ្គិកឈួ"}
         quc{"គីចឈី"}
@@ -328,7 +328,7 @@
         sm{"សាម័រ"}
         sma{"សាមីខាងត្បូង"}
         smj{"លូលីសាមី"}
-        smn{"អ៊ីណារីសាម៉ី"}
+        smn{"អ៊ីណារីសាមី"}
         sms{"ស្កុលសាមី"}
         sn{"សូណា"}
         snk{"សូនីនគេ"}
@@ -417,6 +417,7 @@
     }
     Languages%short{
         az{"អាហ្សេរី"}
+        en_US{"អង់គ្លេស (ស.រ.អ.)"}
     }
     Scripts{
         Arab{"អារ៉ាប់"}
@@ -447,7 +448,7 @@
         Kore{"កូរ៉េ"}
         Laoo{"ឡាវ"}
         Latn{"ឡាតាំង"}
-        Mlym{"មលយាល័ម"}
+        Mlym{"ម៉ាឡាយ៉ាឡាម"}
         Mong{"ម៉ុងហ្គោលី"}
         Mymr{"ភូមា"}
         Orya{"អូឌៀ"}
@@ -483,8 +484,8 @@
             roc{"ប្រតិទិនមីងគ័រ"}
         }
         cf{
-            account{"ទម្រង់រូបិយប័ណ្ណគណនី"}
-            standard{"ទម្រង់រូបិយប័ណ្ណបទដ្ឋាន"}
+            account{"ទម្រង់រូបិយបណ្ណគណនី"}
+            standard{"ទម្រង់រូបិយបណ្ណបទដ្ឋាន"}
         }
         collation{
             ducet{"លំដាប់​តម្រៀប​យូនីកូដ​លំនាំដើម"}
@@ -545,7 +546,6 @@
             tibt{"លេខទីបេ"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — ទាំងអស់"}
         category-list{"{0}: {1}"}
@@ -559,6 +559,8 @@
         strokes{
             other{"{0} វាស"}
         }
+        subscript{"តួអក្សរតូចក្រោម {0}"}
+        superscript{"តួអក្សរតូចលើ {0}"}
     }
     codePatterns{
         language{"ភាសា៖ {0}"}
diff --git a/icu4c/source/data/lang/kn.txt b/icu4c/source/data/lang/kn.txt
index 3ca5c2a..c4c8026 100644
--- a/icu4c/source/data/lang/kn.txt
+++ b/icu4c/source/data/lang/kn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kn{
     Keys{
         calendar{"ಕ್ಯಾಲೆಂಡರ್"}
@@ -84,7 +85,7 @@
         car{"ಕಾರಿಬ್"}
         cch{"ಅಟ್ಸಮ್"}
         ccp{"ಚಕ್ಮಾ"}
-        ce{"ಚೆಚನ್"}
+        ce{"ಚಚೆನ್"}
         ceb{"ಸೆಬುವಾನೊ"}
         cgg{"ಚಿಗಾ"}
         ch{"ಕಮೊರೊ"}
@@ -543,11 +544,12 @@
         zza{"ಜಾಝಾ"}
     }
     Languages%long{
+        zh_Hans{"ಸರಳೀಕೃತ ಮ್ಯಾಂಡರಿನ್ ಚೈನೀಸ್"}
         zh_Hant{"ಸಾಂಪ್ರದಾಯಿಕ ಮ್ಯಾಂಡರಿನ್ ಚೈನೀಸ್"}
     }
     Languages%menu{
         yue{"ಚೈನೀಸ್, ಕ್ಯಾಂಟೊನೀಸ್"}
-        zh{"ಚೈನೀಸ್, ಮಂಡಾರಿನ್"}
+        zh{"ಚೈನೀಸ್, ಮ್ಯಾಂಡರಿನ್"}
     }
     Languages%short{
         az{"ಅಝೆರಿ"}
@@ -686,7 +688,7 @@
         Xsux{"ಸುಮೇರೋ-ಅಕ್ಕಾಡಿಯನ್ ಕ್ಯೂನಿಫಾರ್ಮ್"}
         Yiii{"ಯಿ"}
         Zinh{"ಇನ್‍ಹೆರಿಟೆಡ್"}
-        Zmth{"ಗಣೀತ ಸಂಕೇತಲಿಪಿ"}
+        Zmth{"ಗಣಿತ ಸಂಕೇತಲಿಪಿ"}
         Zsye{"ಎಮೋಜಿ"}
         Zsym{"ಸಂಕೇತಗಳು"}
         Zxxx{"ಅಲಿಖಿತ"}
@@ -842,7 +844,10 @@
             vaii{"ವಾಯ್ ಅಂಕೆಗಳು"}
         }
     }
-    Version{"37"}
+    Variants{
+        PINYIN{"ಪಿನ್‌ಯಿನ್ ರೋಮನೈಸೇಶನ್"}
+        WADEGILE{"ವೇಡ್-ಗೈಲ್ಸ್ ರೋಮನೈಸೇಶನ್"}
+    }
     characterLabelPattern{
         all{"{0} — ಎಲ್ಲ"}
         category-list{"{0}: {1}"}
@@ -857,6 +862,8 @@
             one{"{0} ಸ್ಟ್ರೋಕ್"}
             other{"{0} ಸ್ಟ್ರೋಕ್‌ಗಳು"}
         }
+        subscript{"ಅಡಿಬರಹ {0}"}
+        superscript{"ತಲೆಬರಹ {0}"}
     }
     codePatterns{
         language{"ಭಾಷೆ: {0}"}
diff --git a/icu4c/source/data/lang/ko.txt b/icu4c/source/data/lang/ko.txt
index c3f0d8d..8372351 100644
--- a/icu4c/source/data/lang/ko.txt
+++ b/icu4c/source/data/lang/ko.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ko{
     Keys{
         calendar{"달력"}
@@ -150,7 +151,6 @@
         el{"그리스어"}
         elx{"엘람어"}
         en{"영어"}
-        en_AU{"영어(호주)"}
         enm{"중세 영어"}
         eo{"에스페란토어"}
         es{"스페인어"}
@@ -454,7 +454,7 @@
         shi{"타셸히트어"}
         shn{"샨어"}
         shu{"차디언 아라비아어"}
-        si{"스리랑카어"}
+        si{"싱할라어"}
         sid{"시다모어"}
         sk{"슬로바키아어"}
         sl{"슬로베니아어"}
@@ -574,6 +574,9 @@
     Languages%short{
         az{"아제리어"}
     }
+    Languages%variant{
+        ckb{"쿠르드어(소라니)"}
+    }
     Scripts{
         Afak{"아파카 문자"}
         Aghb{"코카시안 알바니아 문자"}
@@ -643,7 +646,7 @@
         Khmr{"크메르 문자"}
         Khoj{"코즈키 문자"}
         Knda{"칸나다 문자"}
-        Kore{"한국어"}
+        Kore{"한국 문자"}
         Kpel{"크펠레 문자"}
         Kthi{"카이시 문자"}
         Lana{"란나 문자"}
@@ -934,7 +937,6 @@
         VAIDIKA{"바이디카"}
         VALLADER{"발라더"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — 전체"}
         category-list{"{0}: {1}"}
@@ -948,6 +950,8 @@
         strokes{
             other{"{0}획"}
         }
+        subscript{"아래 첨자 {0}"}
+        superscript{"위 첨자 {0}"}
     }
     codePatterns{
         language{"언어: {0}"}
diff --git a/icu4c/source/data/lang/kok.txt b/icu4c/source/data/lang/kok.txt
index 07403c4..e596317 100644
--- a/icu4c/source/data/lang/kok.txt
+++ b/icu4c/source/data/lang/kok.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kok{
     Keys{
         calendar{"दिनदर्शिका"}
@@ -257,7 +258,7 @@
         na{"नौरो"}
         nap{"नेपोलिटन"}
         naq{"नामा"}
-        nb{"नोर्वेजियन बोकमाल"}
+        nb{"नॉर्वेजियन बोकमाल"}
         nd{"उत्तर न्डेबेले"}
         nds{"निम्न जर्मन"}
         ne{"नेपाळी"}
@@ -268,7 +269,7 @@
         nl{"डच्"}
         nl_BE{"फ्लेमिश"}
         nmg{"ख्वासी"}
-        nn{"नोर्वोजियन नायनोर्स्क"}
+        nn{"नॉर्वेजियन नायनोर्स्क"}
         nnh{"न्गेबून"}
         no{"नोर्वेजियन"}
         nog{"नोगाय"}
@@ -417,6 +418,7 @@
         zh_Hant{"पारंपारीक मंडारीन चिनी"}
     }
     Languages%menu{
+        ckb{"खुर्दीश, मध्य"}
         yue{"चिनी, कॅण्टोनीस"}
         zh{"चिनी, मंडारीन"}
     }
@@ -425,6 +427,9 @@
         en_GB{"यूके इंग्लीश"}
         en_US{"यूएस इंग्लीश"}
     }
+    Languages%variant{
+        ckb{"खुर्दीश, सोरानी"}
+    }
     Scripts{
         Arab{"आरबी"}
         Armn{"आर्मेनियन"}
@@ -457,7 +462,7 @@
         Mlym{"मलयाळम"}
         Mong{"मोंगोलियन"}
         Mymr{"म्यानमार"}
-        Orya{"ओरिया"}
+        Orya{"ओडिया"}
         Sinh{"सिन्हाला"}
         Taml{"तमीळ"}
         Telu{"तेलगू"}
@@ -465,7 +470,7 @@
         Thai{"थाई"}
         Tibt{"तिबेटन"}
         Zmth{"गणिताची चिन्नां"}
-        Zsye{"Emoji"}
+        Zsye{"ईमोजी"}
         Zsym{"चिन्नां"}
         Zxxx{"अलिखीत"}
         Zyyy{"सामान्य"}
@@ -481,7 +486,7 @@
             chinese{"चीनी दिनदर्शिका"}
             dangi{"डांगी दिनदर्शिका"}
             ethiopic{"इथियोपिक दिनदर्शिका"}
-            gregorian{"ग्रेगोरियन कॅलेन्डर"}
+            gregorian{"ग्रेगोरियन कॅलॅण्डर"}
             hebrew{"हिब्रू दिनदर्शिका"}
             islamic{"ईस्लामीक दिनदर्शिका"}
             iso8601{"आयएसओ-8601 दिनदर्शिका"}
@@ -555,9 +560,9 @@
             tibt{"तिबेतियन अंक"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — सगळें"}
+        category-list{"{0}: {1}"}
         compatibility{"{0} — अनुरुपताय"}
         enclosed{"{0} — जोडलां"}
         extended{"{0} — विस्तारायलां"}
@@ -568,6 +573,8 @@
         strokes{
             other{"{0} आघात"}
         }
+        subscript{"सबस्क्रिप्ट {0}"}
+        superscript{"सुपरस्क्रिप्ट {0}"}
     }
     codePatterns{
         language{"भासः{0}"}
diff --git a/icu4c/source/data/lang/ks.txt b/icu4c/source/data/lang/ks.txt
index cb4c490..99518e6 100644
--- a/icu4c/source/data/lang/ks.txt
+++ b/icu4c/source/data/lang/ks.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks{
     Keys{
         calendar{"کیلنڑر"}
@@ -610,7 +611,6 @@
         SOLBA{"ثٹولوِزا/سولبِکا بوٗلۍ"}
         TARASK{"تاراسکیٖوِکا علمہ ہِجاِ"}
     }
-    Version{"37"}
     codePatterns{
         language{"زَبان: {0}"}
         script{"رَسم الخط: {0}"}
diff --git a/icu4c/source/data/lang/ks_Arab.txt b/icu4c/source/data/lang/ks_Arab.txt
index aafa093..f3d2206 100644
--- a/icu4c/source/data/lang/ks_Arab.txt
+++ b/icu4c/source/data/lang/ks_Arab.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks_Arab{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ks_Arab_IN.txt b/icu4c/source/data/lang/ks_Arab_IN.txt
index a13c0c9..2d29f4c 100644
--- a/icu4c/source/data/lang/ks_Arab_IN.txt
+++ b/icu4c/source/data/lang/ks_Arab_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/ks_IN.txt b/icu4c/source/data/lang/ks_IN.txt
index fd8b52d..bd1a225 100644
--- a/icu4c/source/data/lang/ks_IN.txt
+++ b/icu4c/source/data/lang/ks_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks_IN{
     "%%ALIAS"{"ks_Arab_IN"}
 }
diff --git a/icu4c/source/data/lang/ksb.txt b/icu4c/source/data/lang/ksb.txt
index e026dc9..01964b4 100644
--- a/icu4c/source/data/lang/ksb.txt
+++ b/icu4c/source/data/lang/ksb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksb{
     Languages{
         ak{"Kiakan"}
@@ -48,5 +49,4 @@
         zh{"Kichina"}
         zu{"Kizulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ksf.txt b/icu4c/source/data/lang/ksf.txt
index c244f65..e0566c4 100644
--- a/icu4c/source/data/lang/ksf.txt
+++ b/icu4c/source/data/lang/ksf.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksf{
     Languages{
         ak{"riakan"}
@@ -48,5 +49,4 @@
         zh{"ricinɔá"}
         zu{"rizúlu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ksh.txt b/icu4c/source/data/lang/ksh.txt
index bf78a00..9c1008f 100644
--- a/icu4c/source/data/lang/ksh.txt
+++ b/icu4c/source/data/lang/ksh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksh{
     Keys{
         calendar{"dä Kalländer"}
@@ -512,7 +513,6 @@
         VALENCIA{"valenzijaanesche Dijaläk"}
         WADEGILE{"lateijnesche Ömschreff noh Wade-Giles"}
     }
-    Version{"37"}
     codePatterns{
         language{"de Schprohch afjekööz met „{0}“"}
         script{"de Schreff afjekööz met „{0}“"}
diff --git a/icu4c/source/data/lang/ku.txt b/icu4c/source/data/lang/ku.txt
index d9deb18..5e20816 100644
--- a/icu4c/source/data/lang/ku.txt
+++ b/icu4c/source/data/lang/ku.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ku{
     Keys{
         calendar{"salname"}
@@ -268,7 +269,6 @@
             roman{"hejmarên romî"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"ziman: {0}"}
         script{"nivîs: {0}"}
diff --git a/icu4c/source/data/lang/kw.txt b/icu4c/source/data/lang/kw.txt
index 878a8b9..3c83e2f 100644
--- a/icu4c/source/data/lang/kw.txt
+++ b/icu4c/source/data/lang/kw.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kw{
     Languages{
         kw{"kernewek"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ky.txt b/icu4c/source/data/lang/ky.txt
index fbf28b1..9105cbc 100644
--- a/icu4c/source/data/lang/ky.txt
+++ b/icu4c/source/data/lang/ky.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ky{
     Keys{
         calendar{"Жылнаама"}
@@ -57,8 +58,8 @@
         bs{"боснийче"}
         bug{"бугийче"}
         byn{"блинче"}
-        ca{"каталонча"}
-        ccp{"Чакма"}
+        ca{"каталончо"}
+        ccp{"чакма"}
         ce{"чеченче"}
         ceb{"себуанча"}
         cgg{"чигача"}
@@ -290,7 +291,6 @@
         prg{"пруссча"}
         ps{"пуштуча"}
         pt{"португалча"}
-        pt_BR{"Бразилиялык Португал тили"}
         pt_PT{"португалча (Европа)"}
         qu{"кечуача"}
         quc{"кичече"}
@@ -410,8 +410,8 @@
         zza{"зазача"}
     }
     Languages%menu{
-        yue{"Кытайча, Кантондук"}
-        zh{"Кытайча,Мандарин"}
+        yue{"кытайча (кантончо)"}
+        zh{"кытайча (мандарин)"}
     }
     Languages%short{
         az{"азерче"}
@@ -489,6 +489,10 @@
             search{"Жалпы издөө"}
             standard{"Стандарттык иргөө тартиби"}
         }
+        d0{
+            fwidth{"Кең формат"}
+            hwidth{"Кыска формат"}
+        }
         hc{
             h11{"12 сааттык тутум (0–11)"}
             h12{"12 сааттык тутум (1–12)"}
@@ -509,14 +513,14 @@
             arab{"Араб-индус сандары"}
             arabext{"Кеңейтилген араб-индус сандары"}
             armn{"Армян сандары"}
-            armnlow{"Армян сандары (кичинекей арип менен)"}
+            armnlow{"Армян сандары (кичинекей тамга менен))"}
             beng{"Бенгали сандары"}
             deva{"Деванагари сандары"}
             ethi{"Эфиоп сандары"}
             fullwide{"Толук эндүү сандар"}
             geor{"Грузин сандары"}
             grek{"Грек сандары"}
-            greklow{"Грек сандары (кичинекей арип менен)"}
+            greklow{"Грек сандары (кичинекей тамга менен))"}
             gujr{"Гужарати сандары"}
             guru{"Гужарати сандары"}
             hanidec{"Кытай ондук сандары"}
@@ -535,7 +539,7 @@
             mymr{"Мйанмар сандары"}
             orya{"Ория сандары"}
             roman{"Роман сандары"}
-            romanlow{"Роман сандары (кичинекей арип менен)"}
+            romanlow{"Роман сандары (кичинекей тамга менен)"}
             taml{"Салттуу тамил сандары"}
             tamldec{"Тамил сандары"}
             telu{"Телугу сандары"}
@@ -543,7 +547,6 @@
             tibt{"Тибет сандары"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — баары"}
         category-list{"{0}: {1}"}
@@ -558,6 +561,8 @@
             one{"{0} штрих"}
             other{"{0} штрих"}
         }
+        subscript{"{0} саптын асты"}
+        superscript{"{0} саптын үстү"}
     }
     codePatterns{
         language{"Тили: {0}"}
diff --git a/icu4c/source/data/lang/lag.txt b/icu4c/source/data/lang/lag.txt
index 5ddd3db..650ff7e 100644
--- a/icu4c/source/data/lang/lag.txt
+++ b/icu4c/source/data/lang/lag.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lag{
     Languages{
         ak{"Kɨakáani"}
@@ -48,5 +49,4 @@
         zh{"Kɨchíina"}
         zu{"Kɨzúulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/lb.txt b/icu4c/source/data/lang/lb.txt
index e401861..7df9f4d 100644
--- a/icu4c/source/data/lang/lb.txt
+++ b/icu4c/source/data/lang/lb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lb{
     Keys{
         calendar{"Kalenner"}
@@ -872,7 +873,6 @@
         VALENCIA{"Valencianesch"}
         WADEGILE{"Wade-Giles"}
     }
-    Version{"37"}
     codePatterns{
         language{"Sprooch: {0}"}
         script{"Schrëft: {0}"}
diff --git a/icu4c/source/data/lang/lg.txt b/icu4c/source/data/lang/lg.txt
index dacf4b9..2b7028e 100644
--- a/icu4c/source/data/lang/lg.txt
+++ b/icu4c/source/data/lang/lg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lg{
     Languages{
         ak{"Lu-akaani"}
@@ -48,5 +49,4 @@
         zh{"Lucayina"}
         zu{"Luzzulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/lkt.txt b/icu4c/source/data/lang/lkt.txt
index c5ec803..d15730b 100644
--- a/icu4c/source/data/lang/lkt.txt
+++ b/icu4c/source/data/lang/lkt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lkt{
     Languages{
         ab{"Abkhaz Iyápi"}
@@ -152,5 +153,4 @@
         zu{"Zulu Iyápi"}
         zza{"Zaza Iyápi"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ln.txt b/icu4c/source/data/lang/ln.txt
index daed134..ed3e24d 100644
--- a/icu4c/source/data/lang/ln.txt
+++ b/icu4c/source/data/lang/ln.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ln{
     Languages{
         ak{"akan"}
@@ -48,5 +49,4 @@
         zh{"lisinwa"}
         zu{"zulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/lo.txt b/icu4c/source/data/lang/lo.txt
index 8dc7b18..50f8262 100644
--- a/icu4c/source/data/lang/lo.txt
+++ b/icu4c/source/data/lang/lo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lo{
     Keys{
         calendar{"ປະຕິທິນ"}
@@ -211,7 +212,7 @@
         id{"ອິນໂດເນຊຽນ"}
         ie{"ອິນເຕີລິງກຣີ"}
         ig{"ອິກໂບ"}
-        ii{"ເຊສວຍຢີ"}
+        ii{"ເສສວນ ອີ"}
         ik{"ອິນນູປຽກ"}
         ilo{"ໄອໂລໂກ"}
         inh{"ອິນກັຊ"}
@@ -887,7 +888,6 @@
         VALLADER{"ວັລລາເດີ"}
         WADEGILE{"ການຖອດອັກສອນແບບເວດ-ໄຈລ໌"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — ທັງໝົດ"}
         category-list{"{0}: {1}"}
@@ -901,6 +901,8 @@
         strokes{
             other{"{0} ຈັງຫວະ"}
         }
+        subscript{"ໂຕຫ້ອຍ {0}"}
+        superscript{"ໂຕຍົກກໍາລັງ {0}"}
     }
     codePatterns{
         language{"{0}"}
diff --git a/icu4c/source/data/lang/lrc.txt b/icu4c/source/data/lang/lrc.txt
index 3b4ff92..875a0de 100644
--- a/icu4c/source/data/lang/lrc.txt
+++ b/icu4c/source/data/lang/lrc.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lrc{
     Languages{
         ab{"آذأربایئجانی"}
@@ -296,7 +297,6 @@
             latn{"عأدأدیا لاتین"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"{0}"}
         script{"{0}"}
diff --git a/icu4c/source/data/lang/lt.txt b/icu4c/source/data/lang/lt.txt
index 2896fde..7ee85ee 100644
--- a/icu4c/source/data/lang/lt.txt
+++ b/icu4c/source/data/lang/lt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lt{
     Keys{
         calendar{"kalendorius"}
@@ -1029,7 +1030,6 @@
         VALENCIA{"Valenciečiai"}
         WADEGILE{"Wade-Giles Romanization"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} – visi"}
         category-list{"{0}: {1}"}
@@ -1046,6 +1046,8 @@
             one{"{0} brūkšnys"}
             other{"{0} brūkšnių"}
         }
+        subscript{"apatinis indeksas {0}"}
+        superscript{"viršutinis indeksas {0}"}
     }
     codePatterns{
         language{"Kalba: {0}"}
diff --git a/icu4c/source/data/lang/lu.txt b/icu4c/source/data/lang/lu.txt
index 6d99bc9..efc7f20 100644
--- a/icu4c/source/data/lang/lu.txt
+++ b/icu4c/source/data/lang/lu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lu{
     Languages{
         ak{"Liakan"}
@@ -46,5 +47,4 @@
         zh{"shinɛ"}
         zu{"Nzulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/luo.txt b/icu4c/source/data/lang/luo.txt
index 2a1cac2..d7d1cdc 100644
--- a/icu4c/source/data/lang/luo.txt
+++ b/icu4c/source/data/lang/luo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 luo{
     Languages{
         ak{"Kiakan"}
@@ -48,5 +49,4 @@
         zh{"Kichina"}
         zu{"Kizulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/luy.txt b/icu4c/source/data/lang/luy.txt
index 9b159aa..92632f2 100644
--- a/icu4c/source/data/lang/luy.txt
+++ b/icu4c/source/data/lang/luy.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 luy{
     Languages{
         ak{"Kiakan"}
@@ -48,5 +49,4 @@
         zh{"Kichina"}
         zu{"Kizulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/lv.txt b/icu4c/source/data/lang/lv.txt
index 75f96c7..b3602bd 100644
--- a/icu4c/source/data/lang/lv.txt
+++ b/icu4c/source/data/lang/lv.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lv{
     Keys{
         calendar{"Kalendārs"}
@@ -552,6 +553,9 @@
     Languages%short{
         en_GB{"angļu (Lielbritānija)"}
     }
+    Languages%variant{
+        ckb{"sorani kurdu"}
+    }
     Scripts{
         Arab{"arābu"}
         Armi{"aramiešu"}
@@ -806,13 +810,12 @@
         VALENCIA{"valensiešu"}
         WADEGILE{"Veida-Džailza romanizācija"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — visas"}
         category-list{"{0}: {1}"}
         compatibility{"{0} — saderība"}
         enclosed{"{0} — noslēgtās"}
-        extended{"{0} — paplašinātās"}
+        extended{"{0} — speciālās"}
         historic{"{0} — vēsturiskās"}
         miscellaneous{"{0} — dažādi"}
         other{"{0} — citas"}
@@ -822,6 +825,8 @@
             other{"{0} vilkumi"}
             zero{"{0} vilkumu"}
         }
+        subscript{"apakšraksts {0}"}
+        superscript{"augšraksts {0}"}
     }
     codePatterns{
         language{"Valoda: {0}"}
diff --git a/icu4c/source/data/lang/mai.txt b/icu4c/source/data/lang/mai.txt
index bcef418..04b2e7c 100644
--- a/icu4c/source/data/lang/mai.txt
+++ b/icu4c/source/data/lang/mai.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mai{
     Languages{
         de{"जर्मन"}
@@ -66,7 +67,6 @@
             latn{"पश्चिमी अंक"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"भाषा: {0}"}
         script{"लिपि: {0}"}
diff --git a/icu4c/source/data/lang/mas.txt b/icu4c/source/data/lang/mas.txt
index 1b76c5b..f2d47ba 100644
--- a/icu4c/source/data/lang/mas.txt
+++ b/icu4c/source/data/lang/mas.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mas{
     Languages{
         ak{"nkʉtʉ́k ɔ́ɔ̄ lAkan"}
@@ -48,5 +49,4 @@
         zh{"nkʉtʉ́k ɔ́ɔ̄ lchina"}
         zu{"nkʉtʉ́k ɔ́ɔ̄ lzulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/mer.txt b/icu4c/source/data/lang/mer.txt
index 1b26f65..00e78fa 100644
--- a/icu4c/source/data/lang/mer.txt
+++ b/icu4c/source/data/lang/mer.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mer{
     Languages{
         ak{"Kĩakani"}
@@ -48,5 +49,4 @@
         zh{"Kĩchina"}
         zu{"Kĩzulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/mfe.txt b/icu4c/source/data/lang/mfe.txt
index d5deded..cbb73c6 100644
--- a/icu4c/source/data/lang/mfe.txt
+++ b/icu4c/source/data/lang/mfe.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mfe{
     Languages{
         ak{"akan"}
@@ -48,5 +49,4 @@
         zh{"sinwa, mandarin"}
         zu{"zoulou"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/mg.txt b/icu4c/source/data/lang/mg.txt
index ee10f70..4541498 100644
--- a/icu4c/source/data/lang/mg.txt
+++ b/icu4c/source/data/lang/mg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mg{
     Languages{
         ak{"Akan"}
@@ -48,5 +49,4 @@
         zh{"Sinoa, Mandarin"}
         zu{"Zolò"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/mgh.txt b/icu4c/source/data/lang/mgh.txt
index 57b23d1..53e0ae0 100644
--- a/icu4c/source/data/lang/mgh.txt
+++ b/icu4c/source/data/lang/mgh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mgh{
     Languages{
         ak{"Ikan"}
@@ -47,5 +48,4 @@
         zh{"Ichina"}
         zu{"Izulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/mgo.txt b/icu4c/source/data/lang/mgo.txt
index f110d01..1d89b5c 100644
--- a/icu4c/source/data/lang/mgo.txt
+++ b/icu4c/source/data/lang/mgo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mgo{
     Languages{
         mgo{"metaʼ"}
@@ -18,7 +19,6 @@
             latn{"inu"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"{0}"}
         script{"{0}"}
diff --git a/icu4c/source/data/lang/mi.txt b/icu4c/source/data/lang/mi.txt
index 63f90d7..c955771 100644
--- a/icu4c/source/data/lang/mi.txt
+++ b/icu4c/source/data/lang/mi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mi{
     Languages{
         de{"Tiamana"}
@@ -19,7 +20,7 @@
         fr_CH{"Wīwī Huiterangi"}
         it{"Ītariana"}
         ja{"Hapanihi"}
-        mi{"Māori"}
+        mi{"te reo Māori"}
         pt{"Pōtikī"}
         pt_BR{"Pōtikī Parahi"}
         pt_PT{"Pōtikī Uropi"}
@@ -60,7 +61,6 @@
             latn{"Ngā Mati Pākehā"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"Reo: {0}"}
         script{"Momotuhi: {0}"}
diff --git a/icu4c/source/data/lang/mk.txt b/icu4c/source/data/lang/mk.txt
index ab6eb23..9b1e2b1 100644
--- a/icu4c/source/data/lang/mk.txt
+++ b/icu4c/source/data/lang/mk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mk{
     Keys{
         calendar{"Календар"}
@@ -35,7 +36,7 @@
         ang{"староанглиски"}
         anp{"ангика"}
         ar{"арапски"}
-        ar_001{"литературен арапски"}
+        ar_001{"современ стандардизиран арапски"}
         arc{"арамејски"}
         arn{"мапучки"}
         aro{"араона"}
@@ -110,7 +111,7 @@
         chn{"чинучки жаргон"}
         cho{"чоктавски"}
         chp{"чипевјански"}
-        chr{"черокиски"}
+        chr{"чероки"}
         chy{"чејенски"}
         ckb{"централнокурдски"}
         co{"корзикански"}
@@ -130,7 +131,7 @@
         dav{"таита"}
         de{"германски"}
         de_AT{"австриски германски"}
-        de_CH{"швајцарски високо-германски"}
+        de_CH{"швајцарски горногермански"}
         del{"делавер"}
         den{"слејви"}
         dgr{"догрипски"}
@@ -163,7 +164,7 @@
         eo{"есперанто"}
         es{"шпански"}
         es_419{"латиноамерикански шпански"}
-        es_ES{"шпански (во Европа)"}
+        es_ES{"шпански (Европа)"}
         es_MX{"мексикански шпански"}
         esu{"централнојупички"}
         et{"естонски"}
@@ -451,7 +452,7 @@
         ps{"паштунски"}
         pt{"португалски"}
         pt_BR{"бразилски португалски"}
-        pt_PT{"португалски (во Европа)"}
+        pt_PT{"португалски (Европа)"}
         qu{"кечуански"}
         quc{"киче"}
         qug{"кичвански"}
@@ -512,7 +513,7 @@
         sm{"самоански"}
         sma{"јужен сами"}
         smj{"луле сами"}
-        smn{"инари сами"}
+        smn{"инариски сами"}
         sms{"сколт сами"}
         sn{"шона"}
         snk{"сонинке"}
@@ -634,12 +635,15 @@
         zh_Hant{"традиционален мандарински"}
     }
     Languages%menu{
-        yue{"кинески, кантонски"}
-        zh{"кинески, мандарински"}
+        ckb{"курдски, централен"}
+        yue{"кантонски кинески"}
+        zh{"мандарински кинески"}
     }
     Languages%short{
         az{"азерски"}
-        en_GB{"англиски (во ОК)"}
+    }
+    Languages%variant{
+        ckb{"курдски, сорани"}
     }
     Scripts{
         Afak{"афака"}
@@ -917,7 +921,6 @@
         PINYIN{"Пинјин романизација"}
         WADEGILE{"Вејд-Џајлс романизација"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} - сите"}
         category-list{"{0}: {1}"}
@@ -932,6 +935,8 @@
             one{"{0} црта"}
             other{"{0} црти"}
         }
+        subscript{"долен индекс {0}"}
+        superscript{"горен индекс {0}"}
     }
     codePatterns{
         language{"Јазик: {0}"}
diff --git a/icu4c/source/data/lang/ml.txt b/icu4c/source/data/lang/ml.txt
index d75b468..3fa9065 100644
--- a/icu4c/source/data/lang/ml.txt
+++ b/icu4c/source/data/lang/ml.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ml{
     Keys{
         calendar{"കലണ്ടർ"}
@@ -159,6 +160,7 @@
         eu{"ബാസ്‌ക്"}
         ewo{"എവോൻഡോ"}
         fa{"പേർഷ്യൻ"}
+        fa_AF{"ഡാരി"}
         fan{"ഫങ്"}
         fat{"ഫാന്റി"}
         ff{"ഫുല"}
@@ -238,7 +240,7 @@
         jmc{"മചേം"}
         jpr{"ജൂഡിയോ-പേർഷ്യൻ"}
         jrb{"ജൂഡിയോ-അറബിക്"}
-        jv{"ജാവാനീസ്"}
+        jv{"ജാവനീസ്"}
         ka{"ജോർജിയൻ"}
         kaa{"കര-കാൽപ്പക്"}
         kab{"കബൈൽ"}
@@ -555,6 +557,9 @@
         zxx{"ഭാഷാപരമായ ഉള്ളടക്കമൊന്നുമില്ല"}
         zza{"സാസാ"}
     }
+    Languages%long{
+        zh_Hans{"ലളിതവൽകൃത മാൻഡറിൻ ചൈനീസ്"}
+    }
     Languages%menu{
         yue{"ചൈനീസ്, കാന്റണീസ്"}
         zh{"ചൈനീസ്, മാൻഡറിൻ"}
@@ -565,6 +570,7 @@
         en_US{"യു.എസ്. ഇംഗ്ലീഷ്"}
     }
     Languages%variant{
+        ckb{"സൊറാനി കുർദിഷ്"}
         ps{"പുഷ്തോ"}
         ug{"ഉയ്ഗൂർ"}
     }
@@ -904,7 +910,6 @@
         POSIX{"കമ്പ്യൂട്ടർ"}
         REVISED{"പരിഷ്ക്കരിച്ച ലിപി"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — എല്ലാം"}
         category-list{"{0}: {1}"}
@@ -919,6 +924,8 @@
             one{"{0} സ്‌ട്രോക്ക്"}
             other{"{0} സ്‌ട്രോക്കുകൾ"}
         }
+        subscript{"സബ്‌സ്ക്രിപ്റ്റ് {0}"}
+        superscript{"സൂപ്പർസ്ക്രിപ്റ്റ് {0}"}
     }
     codePatterns{
         language{"ഭാഷ: {0}"}
diff --git a/icu4c/source/data/lang/mn.txt b/icu4c/source/data/lang/mn.txt
index 6e83e0e..a5b9bd5 100644
--- a/icu4c/source/data/lang/mn.txt
+++ b/icu4c/source/data/lang/mn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mn{
     Keys{
         calendar{"цаглавар"}
@@ -416,6 +417,7 @@
         zh_Hant{"уламжлалт мандарин хятад"}
     }
     Languages%menu{
+        ckb{"Курд, Төв"}
         yue{"хятад, кантон"}
         zh{"хятад, мандарин"}
     }
@@ -424,6 +426,9 @@
         en_GB{"британи-англи"}
         en_US{"америк-англи"}
     }
+    Languages%variant{
+        ckb{"Курд, Сорани"}
+    }
     Scripts{
         Arab{"араб"}
         Armn{"армени"}
@@ -552,21 +557,22 @@
             tibt{"төвд тоо"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
-        all{"{0} - Бүгд"}
+        all{"{0} — бүгд"}
         category-list{"{0}: {1}"}
         compatibility{"{0} - нийцэл"}
-        enclosed{"{0} — Хавсарсан"}
-        extended{"{0} — Өргөтгөсөн"}
-        historic{"{0} — Түүхэн"}
-        miscellaneous{"{0} — Бусад"}
+        enclosed{"{0} — хавсаргасан"}
+        extended{"{0} — өргөтгөсөн"}
+        historic{"{0} — түүхэн"}
+        miscellaneous{"{0} — янз бүр"}
         other{"{0} — бусад"}
-        scripts{"Бичвэрүүд — {0}"}
+        scripts{"скрипт — {0}"}
         strokes{
             one{"{0} цохилт"}
             other{"{0} цохилт"}
         }
+        subscript{"дэд скрипт {0}"}
+        superscript{"супер скрипт {0}"}
     }
     codePatterns{
         language{"{0}"}
diff --git a/icu4c/source/data/lang/mni.txt b/icu4c/source/data/lang/mni.txt
index e618997..15d8577 100644
--- a/icu4c/source/data/lang/mni.txt
+++ b/icu4c/source/data/lang/mni.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni{
     Languages{
         de{"জর্মন"}
@@ -12,6 +13,8 @@
         en_US{"অমেরিকান ইংলিস"}
         es{"স্পেনিস"}
         es_419{"লেটিন অমেরিকান স্পেনিস"}
+        es_ES{"য়ুরোপিয়ান স্পেনিস"}
+        es_MX{"মেক্সিকান স্পেনিস"}
         fr{"ফ্রেঞ্চ"}
         fr_CA{"কানাদিয়ান ফ্রেঞ্চ"}
         fr_CH{"স্বিজ ফ্রেঞ্চ"}
@@ -42,7 +45,7 @@
         Arab{"আরবিক"}
         Beng{"বাংলা"}
         Cyrl{"সিরিলিক"}
-        Hans{"সিমপ্লিফাইদ"}
+        Hans{"লাইথোকহল্লবা"}
         Hant{"ত্রেদিস্নেল"}
         Latn{"লেটিন"}
         Mtei{"মেইটেই মায়েক"}
@@ -50,7 +53,7 @@
         Zzzz{"মশকখংদবা স্ক্রিপ্ট"}
     }
     Scripts%stand-alone{
-        Hans{"সিমপ্লিফাইদ চাইনিজ"}
+        Hans{"লাইথোকহল্লবা চাইনিজ"}
         Hant{"ত্রেদিস্নেল চাইনিজ"}
     }
     Types{
@@ -65,7 +68,6 @@
             latn{"ৱেস্তর্ন দিজিট"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"লোল: {0}"}
         script{"স্ক্রিপ্ট: {0}"}
diff --git a/icu4c/source/data/lang/mni_Beng.txt b/icu4c/source/data/lang/mni_Beng.txt
index e861947..08de0f1 100644
--- a/icu4c/source/data/lang/mni_Beng.txt
+++ b/icu4c/source/data/lang/mni_Beng.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni_Beng{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/mni_Beng_IN.txt b/icu4c/source/data/lang/mni_Beng_IN.txt
index fee6989..c896779 100644
--- a/icu4c/source/data/lang/mni_Beng_IN.txt
+++ b/icu4c/source/data/lang/mni_Beng_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/mni_IN.txt b/icu4c/source/data/lang/mni_IN.txt
index 00d8c00..99173b1 100644
--- a/icu4c/source/data/lang/mni_IN.txt
+++ b/icu4c/source/data/lang/mni_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni_IN{
     "%%ALIAS"{"mni_Beng_IN"}
 }
diff --git a/icu4c/source/data/lang/mo.txt b/icu4c/source/data/lang/mo.txt
index 01049c8..6ef8313 100644
--- a/icu4c/source/data/lang/mo.txt
+++ b/icu4c/source/data/lang/mo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mo{
     "%%ALIAS"{"ro"}
 }
diff --git a/icu4c/source/data/lang/mr.txt b/icu4c/source/data/lang/mr.txt
index 407a997..755df5b 100644
--- a/icu4c/source/data/lang/mr.txt
+++ b/icu4c/source/data/lang/mr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mr{
     Keys{
         calendar{"दिनदर्शिका"}
@@ -125,7 +126,7 @@
         dua{"दुआला"}
         dum{"मिडल डच"}
         dv{"दिवेही"}
-        dyo{"जोला-फोंयी"}
+        dyo{"जोला-फॉन्यी"}
         dyu{"ड्युला"}
         dz{"झोंगखा"}
         dzg{"दाझागा"}
@@ -151,6 +152,7 @@
         eu{"बास्क"}
         ewo{"इवोन्डो"}
         fa{"फारसी"}
+        fa_AF{"दारी"}
         fan{"फँग"}
         fat{"फन्टी"}
         ff{"फुलाह"}
@@ -175,7 +177,7 @@
         gan{"गॅन चिनी"}
         gay{"गायो"}
         gba{"बाया"}
-        gd{"स्कॉट्स गेलिक"}
+        gd{"स्कॉटिश गेलिक"}
         gez{"गीझ"}
         gil{"जिल्बरटीज"}
         gl{"गॅलिशियन"}
@@ -205,7 +207,7 @@
         hr{"क्रोएशियन"}
         hsb{"अप्पर सॉर्बियन"}
         hsn{"शियांग चिनी"}
-        ht{"हैतीयन"}
+        ht{"हैतीयन क्रेओल"}
         hu{"हंगेरियन"}
         hup{"हूपा"}
         hy{"आर्मेनियन"}
@@ -452,7 +454,7 @@
         srr{"सेरेर"}
         ss{"स्वाती"}
         ssy{"साहो"}
-        st{"सेसोथो"}
+        st{"दक्षिणी सोथो"}
         su{"सुंदानीज"}
         suk{"सुकुमा"}
         sus{"सुसु"}
@@ -495,7 +497,7 @@
         twq{"तासाव्हाक"}
         ty{"ताहितीयन"}
         tyv{"टुवीनियन"}
-        tzm{"मध्य ऍटलास तॅमॅझायट"}
+        tzm{"मध्य अ‍ॅटलास तॅमाझाइट"}
         udm{"उदमुर्त"}
         ug{"उइगुर"}
         uga{"युगॅरिटिक"}
@@ -546,6 +548,7 @@
         zh_Hant{"पारंपारिक मँडेरिन चीनी"}
     }
     Languages%menu{
+        ckb{"कुर्दिश, मध्य"}
         yue{"चीनी, कँटोनीज"}
         zh{"चीनी, मँडेरिन"}
     }
@@ -555,6 +558,7 @@
         en_US{"यू.एस. इंग्रजी"}
     }
     Languages%variant{
+        ckb{"कुर्दिश, सोरानी"}
         ps{"पुश्तो"}
     }
     Scripts{
@@ -594,7 +598,7 @@
         Grek{"ग्रीक"}
         Gujr{"गुजराती"}
         Guru{"गुरुमुखी"}
-        Hanb{"हान्ब"}
+        Hanb{"बोपोमोफोसह हान"}
         Hang{"हंगुल"}
         Hani{"हान"}
         Hano{"हनुनू"}
@@ -844,7 +848,6 @@
         PINYIN{"पिनयिन रोमनायझेशन"}
         WADEGILE{"वादे-गिलेस रोमनायझेशन"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — सर्व"}
         category-list{"{0}: {1}"}
@@ -859,6 +862,8 @@
             one{"{0} स्ट्रोक"}
             other{"{0} स्ट्रोक"}
         }
+        subscript{"सबस्क्रिप्ट {0}"}
+        superscript{"सुपरस्क्रिप्ट {0}"}
     }
     codePatterns{
         language{"भाषा: {0}"}
diff --git a/icu4c/source/data/lang/ms.txt b/icu4c/source/data/lang/ms.txt
index 6313fef..403b9d9 100644
--- a/icu4c/source/data/lang/ms.txt
+++ b/icu4c/source/data/lang/ms.txt
@@ -1,9 +1,10 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ms{
     Keys{
         calendar{"Kalendar"}
-        cf{"Format Mata wang"}
+        cf{"Format Mata Wang"}
         colAlternate{"Abaikan Pengisihan Simbol"}
         colBackwards{"Pengisihan Aksen Terbalik"}
         colCaseFirst{"Penyusunan Huruf Besar/Huruf Kecil"}
@@ -73,7 +74,7 @@
         bkm{"Kom"}
         bla{"Siksika"}
         bm{"Bambara"}
-        bn{"Benggala"}
+        bn{"Benggali"}
         bo{"Tibet"}
         bpy{"Bishnupriya"}
         br{"Breton"}
@@ -474,6 +475,7 @@
         zh_Hant{"Cina Mandarin Tradisional"}
     }
     Languages%menu{
+        ckb{"Kurdi, Tengah"}
         yue{"Cina, Kantonis"}
         zh{"Cina, Mandarin"}
     }
@@ -899,7 +901,6 @@
         VALENCIA{"Valencia"}
         WADEGILE{"Perumian Wade-Giles"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — Semua"}
         category-list{"{0}: {1}"}
@@ -913,6 +914,8 @@
         strokes{
             other{"{0} Lejang"}
         }
+        subscript{"subskrip {0}"}
+        superscript{"superskrip {0}"}
     }
     codePatterns{
         language{"Bahasa: {0}"}
diff --git a/icu4c/source/data/lang/mt.txt b/icu4c/source/data/lang/mt.txt
index 8fb6567..af075be 100644
--- a/icu4c/source/data/lang/mt.txt
+++ b/icu4c/source/data/lang/mt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mt{
     Keys{
         calendar{"Kalendarju"}
@@ -557,7 +558,6 @@
     Variants{
         REVISED{"Ortografija Irriveda"}
     }
-    Version{"37"}
     codePatterns{
         language{"Lingwa: {0}"}
         script{"Skript: {0}"}
diff --git a/icu4c/source/data/lang/mua.txt b/icu4c/source/data/lang/mua.txt
index 06133d8..d603986 100644
--- a/icu4c/source/data/lang/mua.txt
+++ b/icu4c/source/data/lang/mua.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mua{
     Languages{
         ak{"akaŋ"}
@@ -47,5 +48,4 @@
         zh{"zah Syiŋ"}
         zu{"Zulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/my.txt b/icu4c/source/data/lang/my.txt
index b53791c..92ba5df 100644
--- a/icu4c/source/data/lang/my.txt
+++ b/icu4c/source/data/lang/my.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 my{
     Keys{
         calendar{"ပြက္ခဒိန်"}
@@ -33,7 +34,7 @@
         arp{"အာရာပါဟို"}
         as{"အာသံ"}
         asa{"အာစု"}
-        ast{"အက်စတူရီယန်း"}
+        ast{"အက်စ်တိုးရီးယား"}
         av{"အာဗာရစ်ခ်"}
         awa{"အာဝါဒီ"}
         ay{"အိုင်မာရ"}
@@ -101,7 +102,7 @@
         eka{"အီကာဂျုခ်"}
         el{"ဂရိ"}
         en{"အင်္ဂလိပ်"}
-        en_AU{"ဩစတြေးလျှ အင်္ဂလိပ်"}
+        en_AU{"ဩစတြေးလျ အင်္ဂလိပ်"}
         en_CA{"ကနေဒါ အင်္ဂလိပ်"}
         en_GB{"ဗြိတိသျှ အင်္ဂလိပ်"}
         en_US{"အမေရိကန် အင်္ဂလိပ်"}
@@ -420,7 +421,7 @@
         ybb{"ရမ်ဘာ"}
         yi{"ဂျူး"}
         yo{"ယိုရူဘာ"}
-        yue{"ကွမ်တုံ"}
+        yue{"ကွမ်းတုံ"}
         zgh{"မိုရိုကို တမဇိုက်"}
         zh{"တရုတ်"}
         zu{"ဇူးလူး"}
@@ -592,7 +593,6 @@
         REVISED{"ပြန်လည်စီစစ်ထားသော ရေးထုံး"}
         SCOTLAND{"စကော့ စံ အင်္ဂလိပ်"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — အားလုံး"}
         category-list{"{0} − {1}"}
@@ -606,6 +606,8 @@
         strokes{
             other{"ရေးချက် {0} ခု"}
         }
+        subscript{"စာတန်းအောက်မှ အညွှန်းစာလုံးသေး {0}"}
+        superscript{"စာတန်းအပေါ်မှ အညွှန်းစာလုံးသေး {0}"}
     }
     codePatterns{
         language{"ဘာသာစကား - {0}"}
@@ -613,7 +615,7 @@
         territory{"နယ်ပယ်ဒေသ - {0}"}
     }
     localeDisplayPattern{
-        keyTypePattern{"{0}၊ {1}"}
+        keyTypePattern{"{0}- {1}"}
         pattern{"{0} ({1})"}
         separator{"{0}၊ {1}"}
     }
diff --git a/icu4c/source/data/lang/mzn.txt b/icu4c/source/data/lang/mzn.txt
index a29bb88..c38fb85 100644
--- a/icu4c/source/data/lang/mzn.txt
+++ b/icu4c/source/data/lang/mzn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mzn{
     Languages{
         ab{"آبخازی"}
@@ -264,7 +265,6 @@
     Scripts%stand-alone{
         Hant{"استاندارد ِسنتی هانت"}
     }
-    Version{"37"}
     codePatterns{
         language{"زوون: {0}"}
         script{"اسکریپت: {0}"}
diff --git a/icu4c/source/data/lang/naq.txt b/icu4c/source/data/lang/naq.txt
index e900412..0ebf1e4 100644
--- a/icu4c/source/data/lang/naq.txt
+++ b/icu4c/source/data/lang/naq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 naq{
     Languages{
         ak{"Akangowab"}
@@ -48,5 +49,4 @@
         zh{"Chineesǁî gowab, Mandarinni"}
         zu{"Zulub"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/nb.txt b/icu4c/source/data/lang/nb.txt
index eb8d89a..8073dd0 100644
--- a/icu4c/source/data/lang/nb.txt
+++ b/icu4c/source/data/lang/nb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nb{
     Keys{
         calendar{"kalender"}
@@ -634,6 +635,7 @@
     }
     Languages%menu{
         ars{"arabisk (najd)"}
+        ckb{"kurdisk (sentral)"}
         zh{"kinesisk, mandarin"}
     }
     Languages%short{
@@ -688,7 +690,7 @@
         Grek{"gresk"}
         Gujr{"gujarati"}
         Guru{"gurmukhi"}
-        Hanb{"hanb"}
+        Hanb{"han-kinesisk med bopomofo"}
         Hang{"hangul"}
         Hani{"han"}
         Hano{"hanunoo"}
@@ -945,10 +947,10 @@
             gujr{"gujarati-sifre"}
             guru{"gurmukhi-sifre"}
             hanidec{"kinesiske desimaltall"}
-            hans{"forenklede kinesiske tall"}
-            hansfin{"forenklede kinesiske finanstall"}
-            hant{"tradisjonelle kinesiske tall"}
-            hantfin{"tradisjonelle kinesiske finanstall"}
+            hans{"forenklet kinesisk-tall"}
+            hansfin{"forenklet kinesisk-finanstall"}
+            hant{"tradisjonell kinesisk-tall"}
+            hantfin{"tradisjonell kinesisk-finanstall"}
             hebr{"hebraiske tall"}
             java{"java-tall"}
             jpan{"japanske tall"}
@@ -1057,7 +1059,6 @@
         VALLADER{"vallader"}
         WADEGILE{"Wade-Giles-romanisering"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} – alt"}
         category-list{"{0}: {1}"}
@@ -1072,6 +1073,8 @@
             one{"{0} strek"}
             other{"{0} streker"}
         }
+        subscript{"senket {0}"}
+        superscript{"hevet {0}"}
     }
     codePatterns{
         language{"Språk: {0}"}
diff --git a/icu4c/source/data/lang/nb_NO.txt b/icu4c/source/data/lang/nb_NO.txt
index fdac28b..15a33c3 100644
--- a/icu4c/source/data/lang/nb_NO.txt
+++ b/icu4c/source/data/lang/nb_NO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/nd.txt b/icu4c/source/data/lang/nd.txt
index c50427b..f218ffa 100644
--- a/icu4c/source/data/lang/nd.txt
+++ b/icu4c/source/data/lang/nd.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nd{
     Languages{
         ak{"isi-Akhani"}
@@ -48,5 +49,4 @@
         zh{"isi-China"}
         zu{"isi-Zulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/nds.txt b/icu4c/source/data/lang/nds.txt
deleted file mode 100644
index ac58836..0000000
--- a/icu4c/source/data/lang/nds.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-nds{
-    Version{"37"}
-}
diff --git a/icu4c/source/data/lang/ne.txt b/icu4c/source/data/lang/ne.txt
index c602c66..eb3b51a 100644
--- a/icu4c/source/data/lang/ne.txt
+++ b/icu4c/source/data/lang/ne.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ne{
     Keys{
         calendar{"पात्रो"}
@@ -419,7 +420,7 @@
         oj{"ओजिब्वा"}
         om{"ओरोमो"}
         or{"उडिया"}
-        os{"अोस्सेटिक"}
+        os{"ओस्सेटिक"}
         osa{"ओसागे"}
         ota{"अटोमन तुर्की"}
         pa{"पंजाबी"}
@@ -715,6 +716,9 @@
         Zyyy{"साझा"}
         Zzzz{"अज्ञात लिपि"}
     }
+    Scripts%stand-alone{
+        Hans{"सरलीकृत चिनियाँ"}
+    }
     Types{
         calendar{
             buddhist{"बुद्धिष्ट पात्रो"}
@@ -726,7 +730,7 @@
             indian{"भारतीय राष्ट्रिय पात्रो"}
             islamic{"इस्लामी पात्रो"}
             islamic-civil{"इस्लामी नागरिक पात्रो"}
-            iso8601{"ISO-8601 Calendar"}
+            iso8601{"ISO-8601 पात्रो"}
             japanese{"जापानी पात्रो"}
             persian{"फारसी पात्रो"}
             roc{"चिनियाँ गणतन्त्रको पात्रो"}
@@ -804,7 +808,6 @@
         AREVELA{"पूर्वी आर्मेनियाली"}
         POSIX{"कम्प्युटर"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0}-सबै"}
         category-list{"{0}: {1}"}
@@ -819,6 +822,8 @@
             one{"{0}स्ट्रोक"}
             other{"{0}स्ट्रोक"}
         }
+        subscript{"{0} को तल रेखा कोर्नुहोस्"}
+        superscript{"{0} को तल धर्का कोर्नुहोस्"}
     }
     codePatterns{
         language{"भाषा: {0}"}
diff --git a/icu4c/source/data/lang/nl.txt b/icu4c/source/data/lang/nl.txt
index 374b57b..cc9abeb 100644
--- a/icu4c/source/data/lang/nl.txt
+++ b/icu4c/source/data/lang/nl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl{
     Keys{
         calendar{"kalender"}
@@ -71,7 +72,7 @@
         bax{"Bamoun"}
         bbc{"Batak Toba"}
         bbj{"Ghomala’"}
-        be{"Wit-Russisch"}
+        be{"Belarussisch"}
         bej{"Beja"}
         bem{"Bemba"}
         bew{"Betawi"}
@@ -378,7 +379,7 @@
         ms{"Maleis"}
         mt{"Maltees"}
         mua{"Mundang"}
-        mul{"Meerdere talen"}
+        mul{"meerdere talen"}
         mus{"Creek"}
         mwl{"Mirandees"}
         mwr{"Marwari"}
@@ -635,6 +636,7 @@
         az{"Azeri"}
     }
     Languages%variant{
+        ckb{"Koerdisch, Soranî"}
         ps{"Pashto"}
     }
     Scripts{
@@ -656,7 +658,7 @@
         Blis{"Blissymbolen"}
         Bopo{"Bopomofo"}
         Brah{"Brahmi"}
-        Brai{"Braille"}
+        Brai{"braille"}
         Bugi{"Buginees"}
         Buhd{"Buhid"}
         Cakm{"Chakma"}
@@ -827,9 +829,9 @@
         Yiii{"Yi"}
         Zanb{"vierkant Zanabazar"}
         Zinh{"Overgeërfd"}
-        Zmth{"Wiskundige notatie"}
+        Zmth{"wiskundige notatie"}
         Zsye{"emoji"}
-        Zsym{"Symbolen"}
+        Zsym{"symbolen"}
         Zxxx{"ongeschreven"}
         Zyyy{"algemeen"}
         Zzzz{"onbekend schriftsysteem"}
@@ -1133,7 +1135,6 @@
         WADEGILE{"Wade-Giles-romanisering"}
         XSISTEMO{"X-sistemo"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — alle"}
         category-list{"{0}: {1}"}
diff --git a/icu4c/source/data/lang/nmg.txt b/icu4c/source/data/lang/nmg.txt
index ce2f822..faa605f 100644
--- a/icu4c/source/data/lang/nmg.txt
+++ b/icu4c/source/data/lang/nmg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nmg{
     Languages{
         ak{"Kiɛl akan"}
@@ -47,5 +48,4 @@
         zh{"Kiɛl bó chinois"}
         zu{"Zulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/nn.txt b/icu4c/source/data/lang/nn.txt
index 5900606..c6582b3 100644
--- a/icu4c/source/data/lang/nn.txt
+++ b/icu4c/source/data/lang/nn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nn{
     Keys{
         calendar{"kalender"}
@@ -74,6 +75,7 @@
         cad{"caddo"}
         car{"carib"}
         cch{"atsam"}
+        ccp{"chakma"}
         ce{"tsjetsjensk"}
         ceb{"cebuano"}
         cgg{"kiga"}
@@ -125,7 +127,6 @@
         el{"gresk"}
         elx{"elamite"}
         en{"engelsk"}
-        en_GB{"britisk engelsk"}
         enm{"mellomengelsk"}
         eo{"esperanto"}
         es{"spansk"}
@@ -133,6 +134,7 @@
         eu{"baskisk"}
         ewo{"ewondo"}
         fa{"persisk"}
+        fa_AF{"dari"}
         fan{"fang"}
         fat{"fanti"}
         ff{"fulfulde"}
@@ -155,7 +157,7 @@
         gd{"skotsk-gælisk"}
         gez{"geez"}
         gil{"gilbertese"}
-        gl{"galicisk"}
+        gl{"galisisk"}
         gmh{"mellomhøgtysk"}
         gn{"guarani"}
         goh{"gammalhøgtysk"}
@@ -286,7 +288,7 @@
         mfe{"morisyen"}
         mg{"madagassisk"}
         mga{"mellomirsk"}
-        mgh{"Makhuwa-Meetto"}
+        mgh{"makhuwa-meetto"}
         mgo{"meta’"}
         mh{"marshallesisk"}
         mi{"maori"}
@@ -313,7 +315,7 @@
         na{"nauru"}
         nap{"napolitansk"}
         naq{"nama"}
-        nb{"bokmål"}
+        nb{"norsk bokmål"}
         nd{"nord-ndebele"}
         nds{"lågtysk"}
         nds_NL{"lågsaksisk"}
@@ -325,7 +327,7 @@
         nl{"nederlandsk"}
         nl_BE{"flamsk"}
         nmg{"kwasio"}
-        nn{"nynorsk"}
+        nn{"norsk nynorsk"}
         nnh{"ngiemboon"}
         no{"norsk"}
         nog{"nogai"}
@@ -396,7 +398,7 @@
         se{"nordsamisk"}
         seh{"sena"}
         sel{"selkupisk"}
-        ses{"Koyraboro Senni"}
+        ses{"koyraboro senni"}
         sg{"sango"}
         sga{"gammalirsk"}
         sh{"serbokroatisk"}
@@ -507,6 +509,17 @@
         zxx{"utan språkleg innhald"}
         zza{"zaza"}
     }
+    Languages%long{
+        zh_Hans{"forenkla mandarinkinesisk"}
+        zh_Hant{"tradisjonell mandarinkinesisk"}
+    }
+    Languages%menu{
+        ckb{"kurdisk (sentral)"}
+        zh{"kinesisk, mandarin"}
+    }
+    Languages%variant{
+        ckb{"kurdisk (sorani)"}
+    }
     Scripts{
         Arab{"arabisk"}
         Armi{"armisk"}
@@ -544,7 +557,7 @@
         Grek{"gresk"}
         Gujr{"gujarati"}
         Guru{"gurmukhi"}
-        Hanb{"han med bopomofo"}
+        Hanb{"hanb"}
         Hang{"hangul"}
         Hani{"han"}
         Hano{"hanunoo"}
@@ -661,7 +674,7 @@
             iso8601{"ISO 8601-kalender"}
             japanese{"japansk kalender"}
             persian{"persisk kalender"}
-            roc{"kalender for Republikken Kina"}
+            roc{"minguo-kalender"}
         }
         cf{
             account{"valutaformat for rekneskapsføring"}
@@ -761,7 +774,6 @@
         TARASK{"taraskievica-ortografi"}
         VALENCIA{"valensisk dialekt"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} – alt"}
         category-list{"{0}: {1}"}
@@ -776,6 +788,8 @@
             one{"{0} strek"}
             other{"{0} strekar"}
         }
+        subscript{"senka {0}"}
+        superscript{"heva {0}"}
     }
     codePatterns{
         language{"Språk: {0}"}
diff --git a/icu4c/source/data/lang/nn_NO.txt b/icu4c/source/data/lang/nn_NO.txt
index 4e8a5f7..9eaa339 100644
--- a/icu4c/source/data/lang/nn_NO.txt
+++ b/icu4c/source/data/lang/nn_NO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/nnh.txt b/icu4c/source/data/lang/nnh.txt
index b569b1b..0d2e00e 100644
--- a/icu4c/source/data/lang/nnh.txt
+++ b/icu4c/source/data/lang/nnh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nnh{
     Keys{
         calendar{"fʉ̀ʼ njÿó"}
@@ -24,5 +25,4 @@
         yav{"Shwóŋò pʉa shÿó Mbafìa"}
         ybb{"Shwóŋò Tsaŋ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/no.txt b/icu4c/source/data/lang/no.txt
index 097a923..474d0b2 100644
--- a/icu4c/source/data/lang/no.txt
+++ b/icu4c/source/data/lang/no.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no{
     "%%ALIAS"{"nb"}
 }
diff --git a/icu4c/source/data/lang/no_NO.txt b/icu4c/source/data/lang/no_NO.txt
index 188a8a4..5d7f859 100644
--- a/icu4c/source/data/lang/no_NO.txt
+++ b/icu4c/source/data/lang/no_NO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no_NO{
     "%%ALIAS"{"nb_NO"}
 }
diff --git a/icu4c/source/data/lang/no_NO_NY.txt b/icu4c/source/data/lang/no_NO_NY.txt
index aa897fe..c900df7 100644
--- a/icu4c/source/data/lang/no_NO_NY.txt
+++ b/icu4c/source/data/lang/no_NO_NY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no_NO_NY{
     "%%ALIAS"{"nn_NO"}
 }
diff --git a/icu4c/source/data/lang/nus.txt b/icu4c/source/data/lang/nus.txt
index 38c0d7a..505cbe0 100644
--- a/icu4c/source/data/lang/nus.txt
+++ b/icu4c/source/data/lang/nus.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nus{
     Languages{
         ak{"Thok aka̱ni"}
@@ -48,5 +49,4 @@
         zh{"Thok cayna"}
         zu{"Thok dhuluni"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/nyn.txt b/icu4c/source/data/lang/nyn.txt
index 824e45b..e87b23d 100644
--- a/icu4c/source/data/lang/nyn.txt
+++ b/icu4c/source/data/lang/nyn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nyn{
     Languages{
         ak{"Orukani"}
@@ -48,5 +49,4 @@
         zh{"Oruchaina"}
         zu{"Oruzuru"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/om.txt b/icu4c/source/data/lang/om.txt
index 242d0fc..b45a5f1 100644
--- a/icu4c/source/data/lang/om.txt
+++ b/icu4c/source/data/lang/om.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 om{
     Languages{
         af{"Afrikoota"}
@@ -92,5 +93,4 @@
     Scripts{
         Latn{"Latin"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/or.txt b/icu4c/source/data/lang/or.txt
index 0dfdf00..b4d71c7 100644
--- a/icu4c/source/data/lang/or.txt
+++ b/icu4c/source/data/lang/or.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 or{
     Keys{
         calendar{"କ୍ୟାଲେଣ୍ଡର୍"}
@@ -759,7 +760,6 @@
         VAIDIKA{"ବୈଦିକ"}
         VALENCIA{"ଭେଲେନସିଆନ୍"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — ସମସ୍ତ"}
         category-list{"{0}: {1}"}
diff --git a/icu4c/source/data/lang/os.txt b/icu4c/source/data/lang/os.txt
index e37f739..fa62cbd 100644
--- a/icu4c/source/data/lang/os.txt
+++ b/icu4c/source/data/lang/os.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 os{
     Keys{
         calendar{"Къӕлиндар"}
@@ -96,7 +97,6 @@
             latn{"Нырыккон цифрӕтӕ"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"Ӕвзаг: {0}"}
         script{"Скрипт: {0}"}
diff --git a/icu4c/source/data/lang/pa.txt b/icu4c/source/data/lang/pa.txt
index b6bafff..e448f3a 100644
--- a/icu4c/source/data/lang/pa.txt
+++ b/icu4c/source/data/lang/pa.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa{
     Keys{
         calendar{"ਕੈਲੰਡਰ"}
@@ -203,7 +204,7 @@
         ks{"ਕਸ਼ਮੀਰੀ"}
         ksb{"ਸ਼ੰਬਾਲਾ"}
         ksf{"ਬਫ਼ੀਆ"}
-        ksh{"ਕਲੋਗਨੀਅਨ"}
+        ksh{"ਕਲੋਨੀਅਨ"}
         ku{"ਕੁਰਦਿਸ਼"}
         kum{"ਕੁਮੀਕ"}
         kv{"ਕੋਮੀ"}
@@ -416,9 +417,7 @@
         yo{"ਯੋਰੂਬਾ"}
         yue{"ਕੈਂਟੋਨੀਜ਼"}
         zgh{"ਮਿਆਰੀ ਮੋਰੋਕੇਨ ਟਾਮਾਜ਼ਿਕ"}
-        zh{"ਚੀਨੀ (ਮੈਂਡਰਿਨ)"}
-        zh_Hans{"ਚੀਨੀ (ਸਰਲ)"}
-        zh_Hant{"ਚੀਨੀ (ਰਵਾਇਤੀ)"}
+        zh{"ਚੀਨੀ"}
         zu{"ਜ਼ੁਲੂ"}
         zun{"ਜ਼ੂਨੀ"}
         zxx{"ਬੋਲੀ ਸੰਬੰਧੀ ਕੋਈ ਸਮੱਗਰੀ ਨਹੀਂ"}
@@ -429,12 +428,16 @@
         zh_Hant{"ਚੀਨੀ ਮੈਂਡਰਿਨ (ਰਵਾਇਤੀ)"}
     }
     Languages%menu{
+        ckb{"ਕੁਰਦਿਸ਼, ਕੇਂਦਰੀ"}
         yue{"ਚੀਨੀ, ਕੈਂਟੋਨੀਜ਼"}
         zh{"ਚੀਨੀ, ਮੈਂਡਰਿਨ"}
     }
     Languages%short{
         az{"ਅਜ਼ੇਰੀ"}
     }
+    Languages%variant{
+        ckb{"ਕੁਰਦਿਸ਼, ਸੋਰਾਨੀ"}
+    }
     Scripts{
         Arab{"ਅਰਬੀ"}
         Aran{"ਨਸਤਾਲੀਕ"}
@@ -442,7 +445,7 @@
         Beng{"ਬੰਗਾਲੀ"}
         Bopo{"ਬੋਪੋਮੋਫੋ"}
         Brai{"ਬਰੇਲ"}
-        Cyrl{"ਸਿਰੀਲਿਕ"}
+        Cyrl{"ਸਿਰਿਲਿਕ"}
         Deva{"ਦੇਵਨਾਗਰੀ"}
         Ethi{"ਇਥੀਓਪਿਕ"}
         Geor{"ਜਾਰਜੀਆਈ"}
@@ -575,7 +578,6 @@
             tibt{"ਤਿੱਬਤੀ ਅੰਕ"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — ਸਭ"}
         category-list{"{0}: {1}"}
@@ -590,6 +592,8 @@
             one{"{0} ਸਟਰੋਕ"}
             other{"{0} ਸਟਰੋਕ"}
         }
+        subscript{"ਹੇਠ-ਲਿਖਿਆ {0}"}
+        superscript{"ਉੱਪਰ-ਲਿਖਿਆ {0}"}
     }
     codePatterns{
         language{"ਬੋਲੀ: {0}"}
diff --git a/icu4c/source/data/lang/pa_Arab.txt b/icu4c/source/data/lang/pa_Arab.txt
index 3362b2d..540d245 100644
--- a/icu4c/source/data/lang/pa_Arab.txt
+++ b/icu4c/source/data/lang/pa_Arab.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_Arab{
     %%Parent{"root"}
     Languages{
@@ -10,5 +11,4 @@
         Aran{"نستعلیق"}
         Guru{"گُرمُکھی"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/pa_Arab_PK.txt b/icu4c/source/data/lang/pa_Arab_PK.txt
index e6b5861..3b1bc42 100644
--- a/icu4c/source/data/lang/pa_Arab_PK.txt
+++ b/icu4c/source/data/lang/pa_Arab_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/pa_Guru.txt b/icu4c/source/data/lang/pa_Guru.txt
index a0ee569..f10658f 100644
--- a/icu4c/source/data/lang/pa_Guru.txt
+++ b/icu4c/source/data/lang/pa_Guru.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_Guru{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/pa_Guru_IN.txt b/icu4c/source/data/lang/pa_Guru_IN.txt
index adeae3f..f67b7c3 100644
--- a/icu4c/source/data/lang/pa_Guru_IN.txt
+++ b/icu4c/source/data/lang/pa_Guru_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/pa_IN.txt b/icu4c/source/data/lang/pa_IN.txt
index b18bba6..0c963d7 100644
--- a/icu4c/source/data/lang/pa_IN.txt
+++ b/icu4c/source/data/lang/pa_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_IN{
     "%%ALIAS"{"pa_Guru_IN"}
 }
diff --git a/icu4c/source/data/lang/pa_PK.txt b/icu4c/source/data/lang/pa_PK.txt
index 1c66c7b..29612ad 100644
--- a/icu4c/source/data/lang/pa_PK.txt
+++ b/icu4c/source/data/lang/pa_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_PK{
     "%%ALIAS"{"pa_Arab_PK"}
 }
diff --git a/icu4c/source/data/lang/pcm.txt b/icu4c/source/data/lang/pcm.txt
index 47d7dfd..95a081c 100644
--- a/icu4c/source/data/lang/pcm.txt
+++ b/icu4c/source/data/lang/pcm.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pcm{
     Keys{
         calendar{"Kalẹ́nda"}
@@ -143,6 +144,7 @@
         luo{"Luó Lángwej"}
         luy{"Luyia Lángwej"}
         lv{"Látvián Lángwej"}
+        mai{"Maítíli"}
         mas{"Masaí Lángwej"}
         mer{"Mẹ́rú Lángwej"}
         mfe{"Morísiẹ́n Lángwej"}
@@ -153,6 +155,7 @@
         mk{"Masẹdóniá Lángwej"}
         ml{"Maléyálám Lángwej"}
         mn{"Mọngóliá Lángwej"}
+        mni{"Manípuri"}
         mr{"Marátí Lángwej"}
         ms{"Malé Lángwej"}
         mt{"Mọ́ltá Lángwej"}
@@ -195,6 +198,7 @@
         sa{"Sánskrit"}
         sah{"Sakhá"}
         saq{"Sambúru"}
+        sat{"Sántáli"}
         sbp{"Sangu"}
         sd{"Síndí"}
         se{"Nọ́tán Sámí Lángwej"}
@@ -256,6 +260,7 @@
         zh_Hant{"Tradíshọ́nál Mandarín Chainíz Lángwej"}
     }
     Languages%menu{
+        ckb{"Sẹ́ntrál Kọ́dísh Lángwej"}
         yue{"Chainiz Kántọniz"}
         zh{"Chainiz, Mandarin"}
     }
@@ -263,6 +268,9 @@
         en_GB{"UK Ínglish"}
         en_US{"US Ínglish"}
     }
+    Languages%variant{
+        ckb{"Sorání Kọ́dísh Lángwej"}
+    }
     Scripts{
         Arab{"Arábík"}
         Armn{"Armẹ́nia"}
@@ -390,7 +398,6 @@
             tibt{"Tíbẹt Nọ́mba-dẹm"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — ọl"}
         category-list{"{0}: {1}"}
@@ -405,6 +412,8 @@
             one{"{0}Strok"}
             other{"{0}Strok"}
         }
+        subscript{"sọ́bskript {0}"}
+        superscript{"Súpáskript {0}"}
     }
     codePatterns{
         language{"Lángwej: {0}"}
diff --git a/icu4c/source/data/lang/pl.txt b/icu4c/source/data/lang/pl.txt
index 7ca8ef7..6b836c1 100644
--- a/icu4c/source/data/lang/pl.txt
+++ b/icu4c/source/data/lang/pl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pl{
     Keys{
         calendar{"kalendarz"}
@@ -8,18 +9,18 @@
         colBackwards{"Odwrotne sortowanie ze znakami akcentowanymi"}
         colCaseFirst{"Kolejność wielkie/małe litery"}
         colCaseLevel{"Sortowanie uwzględniające wielkość liter"}
-        colNormalization{"Sortowanie znormalizowane"}
-        colNumeric{"Sortowanie numeryczne"}
-        colStrength{"Siła sortowania"}
+        colNormalization{"sortowanie znormalizowane"}
+        colNumeric{"sortowanie numeryczne"}
+        colStrength{"siła sortowania"}
         collation{"kolejność sortowania"}
         currency{"waluta"}
         hc{"cykl (12- lub 24-godzinny)"}
         lb{"styl podziału wiersza"}
         ms{"system miar"}
         numbers{"cyfry"}
-        timezone{"Strefa czasowa"}
-        va{"Wariant regionalny"}
-        x{"Do prywatnego użytku"}
+        timezone{"strefa czasowa"}
+        va{"wariant regionalny"}
+        x{"do użytku prywatnego"}
     }
     Languages{
         aa{"afar"}
@@ -111,7 +112,7 @@
         cch{"atsam"}
         ccp{"czakma"}
         ce{"czeczeński"}
-        ceb{"cebuano"}
+        ceb{"cebuański"}
         cgg{"chiga"}
         ch{"czamorro"}
         chb{"czibcza"}
@@ -140,8 +141,8 @@
         dar{"dargwijski"}
         dav{"taita"}
         de{"niemiecki"}
-        de_AT{"austriacki niemiecki"}
-        de_CH{"szwajcarski wysokoniemiecki"}
+        de_AT{"niemiecki austriacki"}
+        de_CH{"wysokoniemiecki szwajcarski"}
         del{"delaware"}
         den{"slave"}
         dgr{"dogrib"}
@@ -166,10 +167,10 @@
         el{"grecki"}
         elx{"elamicki"}
         en{"angielski"}
-        en_AU{"australijski angielski"}
-        en_CA{"kanadyjski angielski"}
-        en_GB{"brytyjski angielski"}
-        en_US{"amerykański angielski"}
+        en_AU{"angielski australijski"}
+        en_CA{"angielski kanadyjski"}
+        en_GB{"angielski brytyjski"}
+        en_US{"angielski amerykański"}
         enm{"średnioangielski"}
         eo{"esperanto"}
         es{"hiszpański"}
@@ -187,14 +188,14 @@
         fat{"fanti"}
         ff{"fulani"}
         fi{"fiński"}
-        fil{"filipino"}
+        fil{"filipiński"}
         fit{"meänkieli"}
         fj{"fidżijski"}
         fo{"farerski"}
         fon{"fon"}
         fr{"francuski"}
-        fr_CA{"kanadyjski francuski"}
-        fr_CH{"szwajcarski francuski"}
+        fr_CA{"francuski kanadyjski"}
+        fr_CH{"francuski szwajcarski"}
         frc{"cajuński"}
         frm{"średniofrancuski"}
         fro{"starofrancuski"}
@@ -647,7 +648,8 @@
     }
     Languages%menu{
         ckb{"kurdyjski sorani"}
-        zh{"chiński, mandaryński"}
+        yue{"chiński kantoński"}
+        zh{"chiński mandaryński"}
     }
     Languages%short{
         az{"azerski"}
@@ -976,7 +978,6 @@
         VALENCIA{"walencki"}
         WADEGILE{"latynizacja Wade’a i Gilesa"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — wszystko"}
         category-list{"{0}: {1}"}
@@ -993,6 +994,8 @@
             one{"{0} kreska"}
             other{"{0} kreski"}
         }
+        subscript{"indeks dolny {0}"}
+        superscript{"indeks górny {0}"}
     }
     codePatterns{
         language{"Język: {0}"}
diff --git a/icu4c/source/data/lang/ps.txt b/icu4c/source/data/lang/ps.txt
index 67bae6b..d8040ef 100644
--- a/icu4c/source/data/lang/ps.txt
+++ b/icu4c/source/data/lang/ps.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ps{
     Keys{
         calendar{"جنتري"}
@@ -81,7 +82,7 @@
         dav{"ټایټا"}
         de{"الماني"}
         de_AT{"اتريشي آلماني"}
-        de_CH{"سوئس لوی جرمن"}
+        de_CH{"سویس های جرمن"}
         dgr{"داگرب"}
         dje{"زرما"}
         dsb{"کښته سربيايي"}
@@ -141,7 +142,7 @@
         hr{"کروايشيايي"}
         hsb{"پورته سربيايي"}
         ht{"هيټي کريول"}
-        hu{"هنگري"}
+        hu{"هنګري"}
         hup{"ھوپا"}
         hy{"آرمينيايي"}
         hz{"هیرورو"}
@@ -254,7 +255,7 @@
         na{"نایرو"}
         nap{"نيپالين"}
         naq{"ناما"}
-        nb{"ناروې بوکمال"}
+        nb{"ناروېئي (بوکمال)"}
         nd{"شمالي نديبل"}
         nds{"کښته آلماني"}
         ne{"نېپالي"}
@@ -267,6 +268,7 @@
         nmg{"کواسیو"}
         nn{"ناروېئي (نائنورسک)"}
         nnh{"نایجیمون"}
+        no{"ناروېئي"}
         nog{"نوګی"}
         nqo{"نکو"}
         nr{"سويلي نديبيل"}
@@ -414,7 +416,7 @@
     }
     Languages%short{
         az{"اذري"}
-        en_GB{"انګليسي (GB)"}
+        en_GB{"یو کي انګلیسي"}
         en_US{"د متحده آيالاتو انګليسي"}
     }
     Scripts{
@@ -490,7 +492,7 @@
         collation{
             ducet{"ډيفالټ يونيکوډ ترتيب"}
             search{"د عمومي موخي لټون"}
-            standard{"معياري د لټې ترتيب"}
+            standard{"د معیاري لټي ترتیب"}
         }
         hc{
             h11{"د ۱۲ ساعتو نظام (۰ـ۱۱)"}
@@ -505,6 +507,7 @@
         }
         ms{
             metric{"ميټرک نظام"}
+            uksystem{"امپيريل د ناپ نظام"}
             ussystem{"د متحده آيالاتو د ناپ نظام"}
         }
         numbers{
@@ -545,7 +548,6 @@
             tibt{"تبتي اعداد"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} - ټول"}
         compatibility{"{0} - مطابقت"}
@@ -559,6 +561,8 @@
             one{"{0} استروک"}
             other{"{0} استروکس"}
         }
+        subscript{"فرعی سکرپټ {0}"}
+        superscript{"فرعی سکرپټ {0}"}
     }
     codePatterns{
         language{"ژبه: {0}"}
diff --git a/icu4c/source/data/lang/ps_PK.txt b/icu4c/source/data/lang/ps_PK.txt
index 3409a98..eda65fd 100644
--- a/icu4c/source/data/lang/ps_PK.txt
+++ b/icu4c/source/data/lang/ps_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ps_PK{
     Languages{
         ar_001{"نوے معياري عربي"}
@@ -16,5 +17,4 @@
             arabext{"غځېدلے عربي ۔ اينډيک عدد"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/pt.txt b/icu4c/source/data/lang/pt.txt
index 9eb2210..fd1e22b 100644
--- a/icu4c/source/data/lang/pt.txt
+++ b/icu4c/source/data/lang/pt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt{
     Keys{
         calendar{"Calendário"}
@@ -139,7 +140,7 @@
         dz{"dzonga"}
         dzg{"dazaga"}
         ebu{"embu"}
-        ee{"eve"}
+        ee{"ewe"}
         efi{"efique"}
         egy{"egípcio arcaico"}
         eka{"ekajuk"}
@@ -445,7 +446,7 @@
         sm{"samoano"}
         sma{"sami meridional"}
         smj{"sami de Lule"}
-        smn{"sami de Inari"}
+        smn{"lapão de Inari"}
         sms{"sami de Skolt"}
         sn{"xona"}
         snk{"soninquê"}
@@ -500,7 +501,7 @@
         twq{"tasawaq"}
         ty{"taitiano"}
         tyv{"tuviniano"}
-        tzm{"tamazirte do Atlas Central"}
+        tzm{"tamazight do Atlas Central"}
         udm{"udmurte"}
         ug{"uigur"}
         uga{"ugarítico"}
@@ -817,7 +818,7 @@
             grek{"Algarismos gregos"}
             greklow{"Algarismos gregos minúsculos"}
             gujr{"Algarismos guzerate"}
-            guru{"Algarismos gurmukhi"}
+            guru{"Algarismos gurmuqui"}
             hanidec{"Algarismos decimais chineses"}
             hans{"Algarismos chineses simplificados"}
             hansfin{"Algarismos financeiros chineses simplificados"}
@@ -832,7 +833,7 @@
             latn{"Algarismos ocidentais"}
             mlym{"Algarismos malaialos"}
             mong{"Algarismos mongóis"}
-            mymr{"Algarismos de Myanmar"}
+            mymr{"Algarismos mianmarenses"}
             native{"Dígitos nativos"}
             orya{"Algarismos oriá"}
             roman{"Algarismos romanos"}
@@ -889,7 +890,6 @@
         VALENCIA{"valenciano"}
         WADEGILE{"romanização Wade-Giles"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — todos"}
         category-list{"{0}: {1}"}
@@ -904,6 +904,8 @@
             one{"{0} traço"}
             other{"{0} traços"}
         }
+        subscript{"{0} subscrito"}
+        superscript{"{0} sobrescrito"}
     }
     codePatterns{
         language{"Idioma: {0}"}
diff --git a/icu4c/source/data/lang/pt_AO.txt b/icu4c/source/data/lang/pt_AO.txt
index 95cf1c6..c6fcc6b 100644
--- a/icu4c/source/data/lang/pt_AO.txt
+++ b/icu4c/source/data/lang/pt_AO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_AO{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/pt_CH.txt b/icu4c/source/data/lang/pt_CH.txt
index 3a679be..67d661e 100644
--- a/icu4c/source/data/lang/pt_CH.txt
+++ b/icu4c/source/data/lang/pt_CH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_CH{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/pt_CV.txt b/icu4c/source/data/lang/pt_CV.txt
index 6d4dd3a..ebaaea8 100644
--- a/icu4c/source/data/lang/pt_CV.txt
+++ b/icu4c/source/data/lang/pt_CV.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_CV{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/pt_GQ.txt b/icu4c/source/data/lang/pt_GQ.txt
index 7cbf771..9364da9 100644
--- a/icu4c/source/data/lang/pt_GQ.txt
+++ b/icu4c/source/data/lang/pt_GQ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_GQ{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/pt_GW.txt b/icu4c/source/data/lang/pt_GW.txt
index da37fbe..e28e46c 100644
--- a/icu4c/source/data/lang/pt_GW.txt
+++ b/icu4c/source/data/lang/pt_GW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_GW{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/pt_LU.txt b/icu4c/source/data/lang/pt_LU.txt
index ebead8d..c402ea2 100644
--- a/icu4c/source/data/lang/pt_LU.txt
+++ b/icu4c/source/data/lang/pt_LU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_LU{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/pt_MO.txt b/icu4c/source/data/lang/pt_MO.txt
index cf54f62..293d10b 100644
--- a/icu4c/source/data/lang/pt_MO.txt
+++ b/icu4c/source/data/lang/pt_MO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_MO{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/pt_MZ.txt b/icu4c/source/data/lang/pt_MZ.txt
index b99439c..a8cc01a 100644
--- a/icu4c/source/data/lang/pt_MZ.txt
+++ b/icu4c/source/data/lang/pt_MZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_MZ{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/pt_PT.txt b/icu4c/source/data/lang/pt_PT.txt
index 85a4e21..49813b8 100644
--- a/icu4c/source/data/lang/pt_PT.txt
+++ b/icu4c/source/data/lang/pt_PT.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_PT{
     Keys{
         cf{"Formato monetário"}
@@ -31,14 +32,12 @@
         chn{"jargão chinook"}
         chr{"cherokee"}
         chy{"cheyenne"}
-        ckb{"sorani curdo"}
         co{"córsico"}
         crs{"francês crioulo seselwa"}
         cs{"checo"}
         cv{"chuvash"}
         de_AT{"alemão austríaco"}
         de_CH{"alto alemão suíço"}
-        ee{"ewe"}
         efi{"efik"}
         egy{"egípcio clássico"}
         en_AU{"inglês australiano"}
@@ -71,6 +70,7 @@
         lou{"crioulo de Louisiana"}
         lrc{"luri do norte"}
         mak{"makassarês"}
+        mfe{"crioulo mauriciano"}
         mk{"macedónio"}
         moh{"mohawk"}
         mr{"marata"}
@@ -83,7 +83,6 @@
         nn{"norueguês nynorsk"}
         non{"nórdico antigo"}
         oc{"occitano"}
-        or{"oriya"}
         os{"ossético"}
         pag{"língua pangasinesa"}
         pam{"pampango"}
@@ -102,13 +101,14 @@
         sma{"sami do sul"}
         smn{"inari sami"}
         sn{"shona"}
+        st{"sesoto"}
         te{"telugu"}
         tem{"temne"}
         tg{"tajique"}
         tk{"turcomano"}
         to{"tonga"}
         tt{"tatar"}
-        tzm{"tamazight do Atlas Central"}
+        tzm{"tamazigue do Atlas Central"}
         uz{"usbeque"}
         wo{"uólofe"}
         xh{"xosa"}
@@ -132,6 +132,9 @@
         az{"azeri"}
         en_GB{"inglês (RU)"}
     }
+    Languages%variant{
+        ckb{"sorani (curdo)"}
+    }
     Scripts{
         Aran{"nasta’liq"}
         Armn{"arménio"}
@@ -271,7 +274,6 @@
         MONOTON{"monotónico"}
         POLYTON{"politónico"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} – tudo"}
         compatibility{"{0} – compatibilidade"}
diff --git a/icu4c/source/data/lang/pt_ST.txt b/icu4c/source/data/lang/pt_ST.txt
index e432167..ba0c09e 100644
--- a/icu4c/source/data/lang/pt_ST.txt
+++ b/icu4c/source/data/lang/pt_ST.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_ST{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/pt_TL.txt b/icu4c/source/data/lang/pt_TL.txt
index b3777b6..0dafd09 100644
--- a/icu4c/source/data/lang/pt_TL.txt
+++ b/icu4c/source/data/lang/pt_TL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_TL{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/qu.txt b/icu4c/source/data/lang/qu.txt
index cdad01a..cb8afb3 100644
--- a/icu4c/source/data/lang/qu.txt
+++ b/icu4c/source/data/lang/qu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 qu{
     Keys{
         calendar{"Intiwatana"}
@@ -66,6 +67,7 @@
         eu{"Euskera Simi"}
         ewo{"Ewondo Simi"}
         fa{"Persa Simi"}
+        fa_AF{"Dari Simi"}
         ff{"Fulah Simi"}
         fi{"Fines Simi"}
         fil{"Filipino Simi"}
@@ -136,6 +138,7 @@
         luo{"Luo Simi"}
         luy{"Luyia Simi"}
         lv{"Leton Simi"}
+        mai{"Maithili Simi"}
         mas{"Masai Simi"}
         mer{"Meru Simi"}
         mfe{"Mauriciano Simi"}
@@ -146,6 +149,7 @@
         mk{"Macedonio Simi"}
         ml{"Malayalam Simi"}
         mn{"Mongol Simi"}
+        mni{"Manipuri Simi"}
         moh{"Mohawk Simi"}
         mr{"Marathi Simi"}
         ms{"Malayo Simi"}
@@ -175,6 +179,7 @@
         os{"Osetio Simi"}
         pa{"Punyabi Simi"}
         pap{"Papiamento Simi"}
+        pcm{"Pidgin Nigeriano Simi"}
         pl{"Polaco Simi"}
         prg{"Prusiano Simi"}
         ps{"Pashto Simi"}
@@ -191,6 +196,7 @@
         sa{"Sanscrito Simi"}
         sah{"Sakha Simi"}
         saq{"Samburu Simi"}
+        sat{"Santali Simi"}
         sbp{"Sangu Simi"}
         sd{"Sindhi Simi"}
         se{"Chincha Sami Simi"}
@@ -251,13 +257,14 @@
         zh_Hans{"Chino Simplificado Simi"}
         zh_Hant{"Chino Tradicional Simi"}
         zu{"Isizulu Simi"}
-        zxx{"Sin contenido linguístico"}
+        zxx{"Manaraq simi yachana"}
     }
     Languages%long{
         zh_Hans{"Chino Mandarín Simplificado Simi"}
         zh_Hant{"Chino Mandarín Tradicional Simi"}
     }
     Languages%menu{
+        ckb{"Kurdo Simi, Chawpi"}
         yue{"Chino Cantonés Simi"}
         zh{"Chino Mandarín Simi"}
     }
@@ -266,6 +273,59 @@
         en_GB{"Ingles Simi (GB)"}
         en_US{"Ingles Simi (US)"}
     }
+    Languages%variant{
+        ckb{"Kurdo Simi, Sorani"}
+    }
+    Scripts{
+        Arab{"Arabe Simi"}
+        Armn{"Armenio Simi"}
+        Beng{"Bangla Simi"}
+        Bopo{"Bopomofo Simi"}
+        Brai{"Braile"}
+        Cyrl{"Cirilico"}
+        Deva{"Devanagari"}
+        Ethi{"Etiope"}
+        Geor{"Georgiano"}
+        Grek{"Griego Simi"}
+        Gujr{"Gujarati Simi"}
+        Guru{"Gurmukhi Simi"}
+        Hanb{"Han with Bopomofo"}
+        Hang{"Hangul"}
+        Hani{"Han"}
+        Hans{"Simplificado"}
+        Hant{"Tradicional"}
+        Hebr{"Hebreo Simi"}
+        Hira{"Hiragana"}
+        Hrkt{"Japones silabico sananpakuna"}
+        Jamo{"Jamo"}
+        Jpan{"Japones Simi"}
+        Kana{"Katakana"}
+        Khmr{"Khmer"}
+        Knda{"Kannada Simi"}
+        Kore{"Coreano Simi"}
+        Laoo{"Lao Simi"}
+        Latn{"Latin Simi"}
+        Mlym{"Malayalam Simi"}
+        Mong{"Mongol Simi"}
+        Mymr{"Myanmar"}
+        Orya{"Odia Simi"}
+        Sinh{"Cingales Simi"}
+        Taml{"Tamil Simi"}
+        Telu{"Tegulu Simi"}
+        Thaa{"Thaana Simi"}
+        Thai{"Tailandes Simi"}
+        Tibt{"Tibetano Simi"}
+        Zmth{"Matimatica Willay"}
+        Zsye{"Emoji"}
+        Zsym{"Unanchakuna"}
+        Zxxx{"Mana qillqasqa"}
+        Zyyy{"Common Simi"}
+        Zzzz{"Mana yachasqa Qillqa"}
+    }
+    Scripts%stand-alone{
+        Hans{"Simplificado Han"}
+        Hant{"Tradicional Han"}
+    }
     Types{
         calendar{
             buddhist{"Budista Intiwatana"}
@@ -343,5 +403,4 @@
             tibt{"Tibetano Sananpakuna"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/rm.txt b/icu4c/source/data/lang/rm.txt
index c77fd9e..801d598 100644
--- a/icu4c/source/data/lang/rm.txt
+++ b/icu4c/source/data/lang/rm.txt
@@ -1,10 +1,15 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rm{
     Keys{
         calendar{"chalender"}
+        cf{"format da valuta"}
         collation{"zavrada"}
-        currency{"munaida"}
+        currency{"valuta"}
+        hc{"ciclus da las uras"}
+        lb{"stil da sigl da lingia"}
+        ms{"sistem da mesira"}
     }
     Languages{
         aa{"afar"}
@@ -16,6 +21,7 @@
         ae{"avestic"}
         af{"afrikaans"}
         afh{"afrihili"}
+        agq{"aghem"}
         ain{"ainu"}
         ak{"akan"}
         akk{"accadic"}
@@ -26,11 +32,13 @@
         ang{"englais vegl"}
         anp{"angika"}
         ar{"arab"}
+        ar_001{"arab modern standardisà"}
         arc{"arameic"}
         arn{"araucanic"}
         arp{"arapaho"}
         arw{"arawak"}
         as{"assami"}
+        asa{"asu"}
         ast{"asturian"}
         av{"avaric"}
         awa{"awadhi"}
@@ -43,6 +51,7 @@
         be{"bieloruss"}
         bej{"bedscha"}
         bem{"bemba"}
+        bez{"bena"}
         bg{"bulgar"}
         bho{"bhojpuri"}
         bi{"bislama"}
@@ -54,6 +63,7 @@
         bo{"tibetan"}
         br{"breton"}
         bra{"braj"}
+        brx{"bodo"}
         bs{"bosniac"}
         bua{"buriat"}
         bug{"bugi"}
@@ -62,8 +72,10 @@
         cad{"caddo"}
         car{"caribic"}
         cch{"atsam"}
+        ccp{"chakma"}
         ce{"tschetschen"}
         ceb{"cebuano"}
+        cgg{"chiga"}
         ch{"chamorro"}
         chb{"chibcha"}
         chg{"tschagataic"}
@@ -74,6 +86,7 @@
         chp{"chipewyan"}
         chr{"cherokee"}
         chy{"cheyenne"}
+        ckb{"curd central"}
         co{"cors"}
         cop{"coptic"}
         cr{"cree"}
@@ -86,19 +99,24 @@
         da{"danais"}
         dak{"dakota"}
         dar{"dargwa"}
+        dav{"taita"}
         de{"tudestg"}
         de_AT{"tudestg austriac"}
+        de_CH{"tudestg da scrittira svizzer"}
         del{"delaware"}
         den{"slavey"}
         dgr{"dogrib"}
         din{"dinka"}
+        dje{"zarma"}
         doi{"dogri"}
         dsb{"bass sorb"}
         dua{"duala"}
         dum{"ollandais mesaun"}
         dv{"maledivic"}
+        dyo{"jola-fonyi"}
         dyu{"diula"}
         dz{"dzongkha"}
+        ebu{"embu"}
         ee{"ewe"}
         efi{"efik"}
         egy{"egipzian vegl"}
@@ -114,18 +132,20 @@
         eo{"esperanto"}
         es{"spagnol"}
         es_419{"spagnol latinamerican"}
-        es_ES{"spagnol iberic"}
+        es_ES{"spagnol europeic"}
+        es_MX{"spagnol mexican"}
         et{"eston"}
         eu{"basc"}
         ewo{"ewondo"}
         fa{"persian"}
+        fa_AF{"dari"}
         fan{"fang"}
         fat{"fanti"}
         ff{"fulah"}
         fi{"finlandais"}
         fil{"filippino"}
         fj{"fidschian"}
-        fo{"ferrais"}
+        fo{"feroais"}
         fon{"fon"}
         fr{"franzos"}
         fr_CA{"franzos canadais"}
@@ -154,6 +174,7 @@
         grc{"grec vegl"}
         gsw{"tudestg svizzer"}
         gu{"gujarati"}
+        guz{"gusii"}
         gv{"manx"}
         gwi{"gwichʼin"}
         ha{"haussa"}
@@ -167,7 +188,7 @@
         ho{"hiri motu"}
         hr{"croat"}
         hsb{"aut sorb"}
-        ht{"haitian"}
+        ht{"creol haitian"}
         hu{"ungarais"}
         hup{"hupa"}
         hy{"armen"}
@@ -187,6 +208,8 @@
         iu{"inuktitut"}
         ja{"giapunais"}
         jbo{"lojban"}
+        jgo{"ngomba"}
+        jmc{"machame"}
         jpr{"giudaic-persian"}
         jrb{"giudaic-arab"}
         jv{"javanais"}
@@ -199,14 +222,19 @@
         kaw{"kawi"}
         kbd{"kabardic"}
         kcg{"tyap"}
+        kde{"makonde"}
+        kea{"cabverdian"}
         kfo{"koro"}
         kg{"kongo"}
         kha{"khasi"}
         kho{"khotanais"}
+        khq{"koyra chiini"}
         ki{"kikuyu"}
         kj{"kuanyama"}
         kk{"casac"}
+        kkj{"kako"}
         kl{"grönlandais"}
+        kln{"kalenjin"}
         km{"cambodschan"}
         kmb{"kimbundu"}
         kn{"kannada"}
@@ -219,6 +247,9 @@
         krl{"carelian"}
         kru{"kurukh"}
         ks{"kashmiri"}
+        ksb{"shambala"}
+        ksf{"bafia"}
+        ksh{"colognais"}
         ku{"curd"}
         kum{"kumuk"}
         kut{"kutenai"}
@@ -227,16 +258,19 @@
         ky{"kirghis"}
         la{"latin"}
         lad{"ladino"}
+        lag{"langi"}
         lah{"lahnda"}
         lam{"lamba"}
         lb{"luxemburgais"}
         lez{"lezghian"}
         lg{"ganda"}
         li{"limburgais"}
+        lkt{"lakota"}
         ln{"lingala"}
         lo{"laot"}
         lol{"lomongo"}
         loz{"lozi"}
+        lrc{"luri dal nord"}
         lt{"lituan"}
         lu{"luba-katanga"}
         lua{"luba-lulua"}
@@ -244,6 +278,7 @@
         lun{"lunda"}
         luo{"luo"}
         lus{"lushai"}
+        luy{"luyia"}
         lv{"letton"}
         mad{"madurais"}
         mag{"magahi"}
@@ -254,8 +289,12 @@
         mdf{"moksha"}
         mdr{"mandar"}
         men{"mende"}
+        mer{"meru"}
+        mfe{"morisyen"}
         mg{"malagassi"}
         mga{"irlandais mesaun"}
+        mgh{"makhuwa-meetto"}
+        mgo{"meta’"}
         mh{"marschallais"}
         mi{"maori"}
         mic{"micmac"}
@@ -270,14 +309,17 @@
         mr{"marathi"}
         ms{"malaic"}
         mt{"maltais"}
+        mua{"mundang"}
         mul{"pluriling"}
         mus{"creek"}
         mwl{"mirandais"}
         mwr{"marwari"}
         my{"birman"}
         myv{"erzya"}
+        mzn{"mazanderani"}
         na{"nauru"}
         nap{"neapolitan"}
+        naq{"nama"}
         nb{"norvegais bokmål"}
         nd{"ndebele dal nord"}
         nds{"bass tudestg"}
@@ -288,13 +330,16 @@
         niu{"niue"}
         nl{"ollandais"}
         nl_BE{"flam"}
+        nmg{"kwasio"}
         nn{"norvegiais nynorsk"}
+        nnh{"ngienboon"}
         no{"norvegiais"}
         nog{"nogai"}
         non{"nordic vegl"}
         nqo{"n’ko"}
         nr{"ndebele dal sid"}
         nso{"sotho dal nord"}
+        nus{"nuer"}
         nv{"navajo"}
         nwc{"newari classic"}
         ny{"nyanja"}
@@ -315,16 +360,18 @@
         pam{"pampanga"}
         pap{"papiamento"}
         pau{"palau"}
+        pcm{"pidgin nigerian"}
         peo{"persian vegl"}
         phn{"fenizian"}
         pi{"pali"}
         pl{"polac"}
         pon{"ponapean"}
+        prg{"prussian"}
         pro{"provenzal vegl"}
         ps{"paschto"}
         pt{"portugais"}
         pt_BR{"portugais brasilian"}
-        pt_PT{"portugais iberian"}
+        pt_PT{"portugais europeic"}
         qu{"quechua"}
         raj{"rajasthani"}
         rap{"rapanui"}
@@ -333,25 +380,32 @@
         rn{"rundi"}
         ro{"rumen"}
         ro_MD{"moldav"}
+        rof{"rombo"}
         rom{"romani"}
         ru{"russ"}
         rup{"aromunic"}
         rw{"kinyarwanda"}
+        rwk{"rwa"}
         sa{"sanscrit"}
         sad{"sandawe"}
         sah{"jakut"}
         sam{"arameic samaritan"}
+        saq{"samburu"}
         sas{"sasak"}
         sat{"santali"}
+        sbp{"sangu"}
         sc{"sard"}
         scn{"sicilian"}
         sco{"scot"}
         sd{"sindhi"}
         se{"sami dal nord"}
+        seh{"sena"}
         sel{"selkup"}
+        ses{"koyraboro senni"}
         sg{"sango"}
         sga{"irlandais vegl"}
         sh{"serbo-croat"}
+        shi{"tachelit"}
         shn{"shan"}
         si{"singalais"}
         sid{"sidamo"}
@@ -383,6 +437,7 @@
         ta{"tamil"}
         te{"telugu"}
         tem{"temne"}
+        teo{"teso"}
         ter{"tereno"}
         tet{"tetum"}
         tg{"tadjik"}
@@ -407,14 +462,16 @@
         tum{"tumbuka"}
         tvl{"tuvalu"}
         tw{"twi"}
+        twq{"tasawaq"}
         ty{"tahitian"}
         tyv{"tuvinian"}
+        tzm{"tamazight"}
         udm{"udmurt"}
         ug{"uiguric"}
         uga{"ugaritic"}
         uk{"ucranais"}
         umb{"mbundu"}
-        und{"linguas betg determinadas"}
+        und{"lingua nunenconuschenta"}
         ur{"urdu"}
         uz{"usbec"}
         vai{"vai"}
@@ -422,21 +479,27 @@
         vi{"vietnamais"}
         vo{"volapuk"}
         vot{"votic"}
+        vun{"vunjo"}
         wa{"vallon"}
+        wae{"gualser"}
         wal{"walamo"}
         war{"waray"}
         was{"washo"}
         wo{"wolof"}
         xal{"kalmuk"}
         xh{"xhosa"}
+        xog{"soga"}
         yao{"yao"}
         yap{"yapais"}
+        yav{"yangben"}
         yi{"jiddic"}
         yo{"yoruba"}
+        yue{"cantonais"}
         za{"zhuang"}
         zap{"zapotec"}
         zbl{"simbols da Bliss"}
         zen{"zenaga"}
+        zgh{"marocan tamazight standardisà"}
         zh{"chinais"}
         zh_Hans{"chinais simplifitgà"}
         zh_Hant{"chinais tradiziunal"}
@@ -445,7 +508,25 @@
         zxx{"nagins cuntegns linguistics"}
         zza{"zaza"}
     }
+    Languages%long{
+        zh_Hans{"chinais mandarin simplifitgà"}
+        zh_Hant{"chinais mandarin tradiziunal"}
+    }
+    Languages%menu{
+        ckb{"curd, central"}
+        yue{"chinais, cantonais"}
+        zh{"chinais, mandarin"}
+    }
+    Languages%short{
+        en_GB{"englais GB"}
+        en_US{"englais USA"}
+    }
+    Languages%variant{
+        ckb{"curd, sorani"}
+    }
     Scripts{
+        Aghb{"albanais dal Caucasus"}
+        Ahom{"ahom"}
         Arab{"arab"}
         Armi{"arameic imperial"}
         Armn{"armen"}
@@ -482,18 +563,20 @@
         Grek{"grec"}
         Gujr{"gujarati"}
         Guru{"gurmukhi"}
+        Hanb{"han cun bopomofo"}
         Hang{"hangul"}
         Hani{"han"}
         Hano{"hanunoo"}
-        Hans{"scrittira chinaisa simplifitgada"}
-        Hant{"scrittira chinaisa tradiziunala"}
+        Hans{"simplifitgà"}
+        Hant{"tradiziunal"}
         Hebr{"ebraic"}
         Hira{"hiragana"}
         Hmng{"pahawn hmong"}
-        Hrkt{"katanaka u hiragana"}
+        Hrkt{"scrittira da silbas giapunaisa"}
         Hung{"ungarais vegl"}
         Inds{"indus"}
         Ital{"italic vegl"}
+        Jamo{"jamo"}
         Java{"javanais"}
         Jpan{"giapunais"}
         Kali{"kayah li"}
@@ -523,6 +606,7 @@
         Moon{"moon"}
         Mtei{"meetei mayek"}
         Mymr{"burmais"}
+        Narb{"arab vegl dal nord"}
         Nkoo{"n’ko"}
         Ogam{"ogham"}
         Olck{"ol chiki"}
@@ -542,9 +626,11 @@
         Runr{"runic"}
         Samr{"samaritan"}
         Sara{"sarati"}
+        Sarb{"arab vegl dal sid"}
         Saur{"saurashtra"}
         Sgnw{"lingua da segns"}
         Shaw{"shavian"}
+        Shrd{"sharada"}
         Sinh{"singalais"}
         Sund{"sundanais"}
         Sylo{"syloti nagri"}
@@ -572,31 +658,67 @@
         Yiii{"yi"}
         Zinh{"ertà"}
         Zmth{"notaziun matematica"}
+        Zsye{"emojis"}
         Zsym{"simbols"}
-        Zxxx{"linguas na scrittas"}
+        Zxxx{"betg scrit"}
         Zyyy{"betg determinà"}
-        Zzzz{"scrittira nunenconuschenta u nunvalaivla"}
+        Zzzz{"scrittira nunenconuschenta"}
+    }
+    Scripts%stand-alone{
+        Hans{"han simplifitgà"}
+        Hant{"han tradiziunal"}
     }
     Types{
         calendar{
             buddhist{"chalender budistic"}
             chinese{"chalender chinais"}
+            dangi{"chalender dangi"}
+            ethiopic{"chalender etiopic"}
             gregorian{"chalender gregorian"}
             hebrew{"chalender ebraic"}
             indian{"chalender naziunal indic"}
             islamic{"chalender islamic"}
             islamic-civil{"chalender islamic civil"}
+            iso8601{"chalender tenor ISO 8601"}
             japanese{"chalender giapunais"}
-            roc{"chalendar da la republica chinaisa"}
+            persian{"chalender persian"}
+            roc{"chalender da la Republica Chinaisa"}
+        }
+        cf{
+            account{"format da valuta per la contabilitad"}
+            standard{"format da valuta da standard"}
         }
         collation{
             big5han{"chinaisa tradiziunala - Big5"}
+            ducet{"zavrada unicode standard"}
             gb2312han{"chinaisa simplifitgada - GB2312"}
             phonebook{"cudesch da telefon"}
             pinyin{"Pinyin"}
+            search{"tschertga generala"}
+            standard{"zavrada da standard"}
             stroke{"urden dals stritgs"}
             traditional{"reglas tradiziunalas"}
         }
+        hc{
+            h11{"sistem da 12 uras (0–11)"}
+            h12{"sistem da 12 uras (1–12)"}
+            h23{"sistem da 24 uras (0–23)"}
+            h24{"sistem da 24 uras (1–24)"}
+        }
+        lb{
+            loose{"stil da sigl da lingia liber"}
+            normal{"stil da sigl da lingia normal"}
+            strict{"stil da sigl da lingia strict"}
+        }
+        ms{
+            metric{"sistem metric"}
+            uksystem{"sistem da mesira imperial"}
+            ussystem{"sistem da mesira US"}
+        }
+        numbers{
+            arab{"cifras indic-arabas"}
+            latn{"cifras occidentalas"}
+        }
     }
     Variants{
         1606NICT{"franzos mesaun tardiv (fin 1606)"}
@@ -627,7 +749,6 @@
         TARASK{"ortografia taraskievica"}
         VALENCIA{"valencian"}
     }
-    Version{"37"}
     codePatterns{
         language{"Lingua: {0}"}
         script{"Scrittira: {0}"}
diff --git a/icu4c/source/data/lang/rn.txt b/icu4c/source/data/lang/rn.txt
index a704a57..85b6660 100644
--- a/icu4c/source/data/lang/rn.txt
+++ b/icu4c/source/data/lang/rn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rn{
     Languages{
         ak{"Igikani"}
@@ -48,5 +49,4 @@
         zh{"Igishinwa"}
         zu{"Ikizulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ro.txt b/icu4c/source/data/lang/ro.txt
index e1631bb..80e36d3 100644
--- a/icu4c/source/data/lang/ro.txt
+++ b/icu4c/source/data/lang/ro.txt
@@ -1,9 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ro{
     Keys{
+        calendar{"tip calendar"}
         cf{"Format monedă"}
-        colAlternate{"sortare cu ignorarea simbolurilo"}
+        colAlternate{"sortare cu ignorarea simbolurilor"}
         colBackwards{"sortare inversă după accent"}
         colCaseFirst{"sortare după majuscule/minuscule"}
         colCaseLevel{"sortare care ține seama de majuscule/minuscule"}
@@ -159,7 +161,7 @@
         fi{"finlandeză"}
         fil{"filipineză"}
         fj{"fijiană"}
-        fo{"faroeză"}
+        fo{"feroeză"}
         fon{"fon"}
         fr{"franceză"}
         frc{"franceză cajun"}
@@ -407,6 +409,7 @@
         ro{"română"}
         rof{"rombo"}
         rom{"romani"}
+        root{"rădăcină"}
         ru{"rusă"}
         rup{"aromână"}
         rw{"kinyarwanda"}
@@ -498,7 +501,7 @@
         twq{"tasawaq"}
         ty{"tahitiană"}
         tyv{"tuvană"}
-        tzm{"tamazight din Altasul Central"}
+        tzm{"tamazight din Atlasul Central"}
         udm{"udmurt"}
         ug{"uigură"}
         uga{"ugaritică"}
@@ -789,11 +792,40 @@
         }
     }
     Variants{
+        1606NICT{"franceză medievală târzie până la 1606"}
+        1694ACAD{"franceză modernă veche"}
+        1901{"ortografie germană tradițională"}
+        1959ACAD{"belarusă academică"}
+        1994{"ortografie resiană standardizată"}
+        1996{"ortografie germană de la 1996"}
+        AREVELA{"armeană orientală"}
+        AREVMDA{"armeană occidentală"}
+        BAKU1926{"alfabet latin altaic unificat"}
+        BISKE{"dialect San Giorgio/Bila"}
+        BOONT{"boontling"}
+        FONIPA{"alfabet fonetic internațional"}
+        FONUPA{"alfabet fonetic uralic"}
+        KKCOR{"ortografie comuna cornish"}
+        LIPAW{"dialect lipovaz din resiană"}
+        MONOTON{"monotonică"}
+        NEDIS{"dialect Natisone"}
+        NJIVA{"dialect Gniva/Njiva"}
+        OSOJS{"dialect Oseacco/Osojane"}
         PINYIN{"pinyin"}
+        POLYTON{"politonică"}
+        POSIX{"informatică"}
+        REVISED{"ortografie revizuită"}
+        ROZAJ{"dialect resian"}
+        SAAHO{"dialect saho"}
         SCOTLAND{"engleză standard scoțiană"}
+        SCOUSE{"dialect scouse"}
+        SOLBA{"dialect Stolvizza/Solbica"}
+        TARASK{"ortografie taraskievica"}
+        UCCOR{"ortografie unificată cornish"}
+        UCRCOR{"ortografie revizuită unificată cornish"}
+        VALENCIA{"valenciană"}
         WADEGILE{"Wade-Giles"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} – toate"}
         category-list{"{0}: {1}"}
@@ -809,6 +841,8 @@
             one{"{0} trasare"}
             other{"{0} de trasări"}
         }
+        subscript{"indice {0}"}
+        superscript{"exponent {0}"}
     }
     codePatterns{
         language{"Limbă: {0}"}
diff --git a/icu4c/source/data/lang/ro_MD.txt b/icu4c/source/data/lang/ro_MD.txt
index 4545ad5..515bc89 100644
--- a/icu4c/source/data/lang/ro_MD.txt
+++ b/icu4c/source/data/lang/ro_MD.txt
@@ -1,9 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ro_MD{
     Languages{
         sw_CD{"swahili (R. D. Congo)"}
         wal{"wolaytta"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/rof.txt b/icu4c/source/data/lang/rof.txt
index 5c65540..623f909 100644
--- a/icu4c/source/data/lang/rof.txt
+++ b/icu4c/source/data/lang/rof.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rof{
     Languages{
         ak{"Kiakani"}
@@ -48,5 +49,4 @@
         zh{"Kichina"}
         zu{"Kizulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/root.txt b/icu4c/source/data/lang/root.txt
index 63466ad..fa374c3 100644
--- a/icu4c/source/data/lang/root.txt
+++ b/icu4c/source/data/lang/root.txt
@@ -1,7 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 root{
-    Version{"37"}
+    Version{"38.1"}
     characterLabelPattern{
         all{"{0} — all"}
         category-list{"{0}: {1}"}
@@ -15,6 +16,8 @@
         strokes{
             other{"{0} strokes"}
         }
+        subscript{"subscript {0}"}
+        superscript{"superscript {0}"}
     }
     codePatterns{
         language{"{0}"}
diff --git a/icu4c/source/data/lang/ru.txt b/icu4c/source/data/lang/ru.txt
index 7aebf44..3a582f5 100644
--- a/icu4c/source/data/lang/ru.txt
+++ b/icu4c/source/data/lang/ru.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru{
     Keys{
         calendar{"календарь"}
@@ -564,7 +565,7 @@
     }
     Languages%menu{
         ars{"арабская (недждийский)"}
-        ckb{"курдская (сорани)"}
+        ckb{"курдский (сорани)"}
         yue{"юэ"}
         zh{"севернокитайский"}
     }
@@ -915,6 +916,7 @@
         AREVMDA{"Западно-армянский"}
         BAKU1926{"Унифицированный тюрско-латинский алфавит"}
         FONIPA{"Международный фонетический алфавит"}
+        KKCOR{"Общая орфография"}
         MONOTON{"Монотонный"}
         PINYIN{"Пиньинь"}
         POLYTON{"Многотональный"}
@@ -926,7 +928,6 @@
         VALENCIA{"Валенсийский"}
         WADEGILE{"Система Уэйда – Джайлза"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — все"}
         category-list{"{0}: {1}"}
@@ -943,6 +944,8 @@
             one{"{0} черта"}
             other{"{0} черты"}
         }
+        subscript{"подстрочные {0}"}
+        superscript{"надстрочные {0}"}
     }
     codePatterns{
         language{"Язык: {0}"}
diff --git a/icu4c/source/data/lang/rw.txt b/icu4c/source/data/lang/rw.txt
index 5802e94..d0eeffb 100644
--- a/icu4c/source/data/lang/rw.txt
+++ b/icu4c/source/data/lang/rw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rw{
     Languages{
         af{"Ikinyafurikaneri"}
@@ -108,5 +109,4 @@
         yi{"Inyeyidishi"}
         zu{"Inyezulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/rwk.txt b/icu4c/source/data/lang/rwk.txt
index 99718f9..922ae45 100644
--- a/icu4c/source/data/lang/rwk.txt
+++ b/icu4c/source/data/lang/rwk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rwk{
     Languages{
         ak{"Kiakanyi"}
@@ -48,5 +49,4 @@
         zh{"Kyichina"}
         zu{"Kyizulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/sa.txt b/icu4c/source/data/lang/sa.txt
new file mode 100644
index 0000000..e8ca105
--- /dev/null
+++ b/icu4c/source/data/lang/sa.txt
@@ -0,0 +1,77 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+sa{
+    Languages{
+        ace{"अचिनीस्"}
+        ach{"अचोलि"}
+        anp{"अङ्गिक"}
+        de{"जर्मनभाषा:"}
+        de_AT{"ऑस्ट्रियाई जर्मनभाषा:"}
+        de_CH{"स्विस उच्च जर्मनभाषा:"}
+        en{"आङ्ग्लभाषा"}
+        en_AU{"ऑस्ट्रेलियादेशः आङ्ग्लभाषा"}
+        en_CA{"कनाडादेशः आङ्ग्लभाषा"}
+        en_GB{"आङ्ग्लदेशीय आङ्ग्लभाषा:"}
+        en_US{"अमेरिकादेशीय आङ्ग्लभाषा:"}
+        es{"स्पेनीय भाषा:"}
+        es_419{"लैटिन अमेरिकादेशीय स्पेनीय भाषा:"}
+        es_ES{"फिरङ्गिन् स्पेनीय भाषा:"}
+        es_MX{"मैक्सिकन स्पेनीय भाषा:"}
+        fr{"फ़्रांसदेशीय भाषा:"}
+        fr_CA{"कनाडादेशः फ़्रांसदेशीय भाषा:"}
+        fr_CH{"स्विस फ़्रांसदेशीय भाषा:"}
+        it{"इटलीदेशीय भाषा:"}
+        ja{"सूर्यमूलीय भाषा:"}
+        pt{"पुर्तगालदेशीय भाषा:"}
+        pt_BR{"ब्राज़ीली पुर्तगालदेशीय भाषा:"}
+        pt_PT{"फिरङ्गिन् पुर्तगालदेशीय भाषा:"}
+        ru{"रष्यदेशीय भाषा:"}
+        sa{"संस्कृत भाषा"}
+        und{"अज्ञात भाषा:"}
+        zh{"चीनी"}
+        zh_Hans{"सरलीकृत चीनी"}
+        zh_Hant{"परम्परागत चीनी"}
+    }
+    Languages%long{
+        zh_Hans{"सरलीकृत मैंडेरिन चीनी"}
+        zh_Hant{"परम्परागत मैंडेरिन चीनी"}
+    }
+    Languages%menu{
+        zh{"चीनी, मैंडेरिन"}
+    }
+    Languages%short{
+        en_GB{"यूके आङ्ग्लभाषा:"}
+        en_US{"यूएस आङ्ग्लभाषा:"}
+    }
+    Scripts{
+        Arab{"अरबी"}
+        Cyrl{"सिरिलिक:"}
+        Hans{"सरलीकृत"}
+        Hant{"परम्परागत"}
+        Latn{"लैटिन:"}
+        Zxxx{"अलिखित:"}
+        Zzzz{"अज्ञात लिपि:"}
+    }
+    Scripts%stand-alone{
+        Hans{"सरलीकृत हान"}
+        Hant{"परम्परागत हान"}
+    }
+    Types{
+        calendar{
+            gregorian{"ग्रेगोरियन पञ्चाङ्ग"}
+        }
+        collation{
+            standard{"मानक न्यूनतम क्रम"}
+            traditional{"परम्परागत न्यूनतम क्रम"}
+        }
+        numbers{
+            latn{"पाश्चात्य अङ्कः"}
+        }
+    }
+    codePatterns{
+        language{"भाषा: {0}"}
+        script{"लिपि: {0}"}
+        territory{"क्षेत्र: {0}"}
+    }
+}
diff --git a/icu4c/source/data/lang/sah.txt b/icu4c/source/data/lang/sah.txt
index 01916f0..5dd1b83 100644
--- a/icu4c/source/data/lang/sah.txt
+++ b/icu4c/source/data/lang/sah.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sah{
     Keys{
         calendar{"Халандаар"}
@@ -91,7 +92,6 @@
             h24{"24 чаастаах тиһик (0–24)"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         strokes{
             other{"{0} Strokes"}
diff --git a/icu4c/source/data/lang/saq.txt b/icu4c/source/data/lang/saq.txt
index ffff070..b058f02 100644
--- a/icu4c/source/data/lang/saq.txt
+++ b/icu4c/source/data/lang/saq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 saq{
     Languages{
         ak{"Kiakan"}
@@ -48,5 +49,4 @@
         zh{"Kichina"}
         zu{"Kizulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/sat.txt b/icu4c/source/data/lang/sat.txt
index 32ee8b9..8cde4ac 100644
--- a/icu4c/source/data/lang/sat.txt
+++ b/icu4c/source/data/lang/sat.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat{
     Languages{
         de{"ᱡᱟᱨᱢᱟᱱ"}
@@ -66,7 +67,6 @@
             latn{"ᱣᱮᱥᱴᱟᱨᱱ ᱮᱞ"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"ᱯᱟᱹᱨᱥᱤ: {0}"}
         script{"ᱪᱤᱠᱤ/ᱦᱟᱨᱚᱯᱺ {0}"}
diff --git a/icu4c/source/data/lang/sat_IN.txt b/icu4c/source/data/lang/sat_IN.txt
index c4976b4..15af329 100644
--- a/icu4c/source/data/lang/sat_IN.txt
+++ b/icu4c/source/data/lang/sat_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat_IN{
     "%%ALIAS"{"sat_Olck_IN"}
 }
diff --git a/icu4c/source/data/lang/sat_Olck.txt b/icu4c/source/data/lang/sat_Olck.txt
index 0d7225f..f09b6a0 100644
--- a/icu4c/source/data/lang/sat_Olck.txt
+++ b/icu4c/source/data/lang/sat_Olck.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat_Olck{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/sat_Olck_IN.txt b/icu4c/source/data/lang/sat_Olck_IN.txt
index 8bda43c..0a44bdb 100644
--- a/icu4c/source/data/lang/sat_Olck_IN.txt
+++ b/icu4c/source/data/lang/sat_Olck_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/sbp.txt b/icu4c/source/data/lang/sbp.txt
index 0ab2a07..b0fe10c 100644
--- a/icu4c/source/data/lang/sbp.txt
+++ b/icu4c/source/data/lang/sbp.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sbp{
     Languages{
         ak{"Ishiyakani"}
@@ -48,5 +49,4 @@
         zh{"Ishishina"}
         zu{"Ishisulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/sd.txt b/icu4c/source/data/lang/sd.txt
index fa91adc..e0724ed 100644
--- a/icu4c/source/data/lang/sd.txt
+++ b/icu4c/source/data/lang/sd.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd{
     Keys{
         calendar{"ڪئلينڊر"}
@@ -37,8 +38,8 @@
         awa{"اواڌي"}
         ay{"ایمارا"}
         az{"آزربائيجاني"}
-        ba{"بشڪر"}
-        ban{"بالي"}
+        ba{"ڪينيڊا"}
+        ban{"بالينيس"}
         bas{"باسا"}
         be{"بيلاروسي"}
         bem{"بيمبا"}
@@ -100,12 +101,12 @@
         en_GB{"برطانوي انگريزي"}
         en_US{"آمريڪي انگريزي"}
         eo{"ايسپرانٽو"}
-        es{"اسپيني"}
+        es{"هسپانوي"}
         es_419{"لاطيني آمريڪي اسپينش"}
         es_ES{"يورپي اسپيني"}
         es_MX{"ميڪسيڪين اسپيني"}
         et{"ايستونائي"}
-        eu{"باسڪي"}
+        eu{"باسق"}
         ewo{"اوانڊو"}
         fa{"فارسي"}
         fa_AF{"دري"}
@@ -115,7 +116,7 @@
         fj{"فجي"}
         fo{"فيروايس"}
         fon{"فون"}
-        fr{"فرانسي"}
+        fr{"فرانسيسي"}
         fr_CA{"ڪينيڊيائي فرانسيسي"}
         fr_CH{"سوئس فرانسيسي"}
         fur{"فرائي لئين"}
@@ -163,7 +164,7 @@
         jgo{"نغومبا"}
         jmc{"ميڪم"}
         jv{"جاونيز"}
-        ka{"جارجين"}
+        ka{"جارجيائي"}
         kab{"ڪبائل"}
         kac{"ڪچن"}
         kaj{"پوڪيپسي"}
@@ -326,7 +327,7 @@
         si{"سنهالا"}
         sk{"سلواڪي"}
         sl{"سلوويني"}
-        sm{"ساموآن"}
+        sm{"سموئا"}
         sma{"ڏکڻ سامي"}
         smj{"لولي سامي"}
         smn{"اناري سامي"}
@@ -342,7 +343,7 @@
         st{"ڏکڻ سوٿي"}
         su{"سوڊاني"}
         suk{"سڪوما"}
-        sv{"سويڊني"}
+        sv{"سويڊش"}
         sw{"سواحيلي"}
         sw_CD{"ڪونگو سواحيلي"}
         swb{"ڪمورين"}
@@ -352,19 +353,19 @@
         tem{"تمني"}
         teo{"تيسو"}
         tet{"تيتم"}
-        tg{"تاجڪي"}
+        tg{"تاجڪ"}
         th{"ٿائي"}
         ti{"تگرينيائي"}
         tig{"تگري"}
-        tk{"ترڪماني"}
+        tk{"ترڪمين"}
         tlh{"ڪلون"}
         tn{"تسوانا"}
         to{"تونگن"}
         tpi{"تاڪ پسن"}
-        tr{"ترڪ"}
+        tr{"ترڪش"}
         trv{"تاروڪو"}
         ts{"سونگا"}
-        tt{"تاتري"}
+        tt{"تاتار"}
         tum{"تمبوڪا"}
         tvl{"توالو"}
         twq{"تساوڪي"}
@@ -387,7 +388,7 @@
         wae{"والسر"}
         wal{"وولايٽا"}
         war{"واري"}
-        wo{"وولف"}
+        wo{"وولوف"}
         xal{"ڪيلمڪ"}
         xh{"زھوسا"}
         xog{"سوگا"}
@@ -449,7 +450,7 @@
         Kore{"ڪوريائي"}
         Laoo{"لائو"}
         Latn{"لاطيني"}
-        Mlym{"مليالم"}
+        Mlym{"ملايالم"}
         Mong{"منگولي"}
         Mult{"ملتاني"}
         Mymr{"ميانمر"}
@@ -550,7 +551,9 @@
             tibt{"تبتي عدد"}
         }
     }
-    Version{"37"}
+    Variants{
+        POSIX{"ڪمپيوٽر"}
+    }
     characterLabelPattern{
         all{"{0} — سڀئي"}
         category-list{"{0}: {1}"}
@@ -565,6 +568,8 @@
             one{"{0} اسٽروڪ"}
             other{"{0} اسٽروڪَ"}
         }
+        subscript{"سب اسڪرپٽ {0}"}
+        superscript{"سپر اسڪرپٽ {0}"}
     }
     codePatterns{
         language{"زبان: {0}"}
diff --git a/icu4c/source/data/lang/sd_Arab.txt b/icu4c/source/data/lang/sd_Arab.txt
index 52a97c8..c089e06 100644
--- a/icu4c/source/data/lang/sd_Arab.txt
+++ b/icu4c/source/data/lang/sd_Arab.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_Arab{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/sd_Arab_PK.txt b/icu4c/source/data/lang/sd_Arab_PK.txt
index 4a9803a..2e57dba 100644
--- a/icu4c/source/data/lang/sd_Arab_PK.txt
+++ b/icu4c/source/data/lang/sd_Arab_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/sd_Deva.txt b/icu4c/source/data/lang/sd_Deva.txt
index fe3c350..b14ebee 100644
--- a/icu4c/source/data/lang/sd_Deva.txt
+++ b/icu4c/source/data/lang/sd_Deva.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_Deva{
     %%Parent{"root"}
     Languages{
@@ -74,7 +75,6 @@
             latn{"मग़रबी डिजिट"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"भाषा: {0}"}
         script{"लिपि: {0}"}
diff --git a/icu4c/source/data/lang/sd_PK.txt b/icu4c/source/data/lang/sd_PK.txt
index 7663600..b7def87 100644
--- a/icu4c/source/data/lang/sd_PK.txt
+++ b/icu4c/source/data/lang/sd_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_PK{
     "%%ALIAS"{"sd_Arab_PK"}
 }
diff --git a/icu4c/source/data/lang/se.txt b/icu4c/source/data/lang/se.txt
index 4dc3544..0bdb3c5 100644
--- a/icu4c/source/data/lang/se.txt
+++ b/icu4c/source/data/lang/se.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 se{
     Keys{
         calendar{"kaleandar"}
@@ -154,7 +155,6 @@
         PINYIN{"pinyin"}
         WADEGILE{"Wade-Giles"}
     }
-    Version{"37"}
     codePatterns{
         language{"giella: {0}"}
         script{"chállin: {0}"}
diff --git a/icu4c/source/data/lang/se_FI.txt b/icu4c/source/data/lang/se_FI.txt
index 3b6a899..3cc8fd5 100644
--- a/icu4c/source/data/lang/se_FI.txt
+++ b/icu4c/source/data/lang/se_FI.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 se_FI{
     Languages{
         ace{"ačehgiella"}
@@ -56,7 +57,6 @@
             gregorian{"gregorialaš kalendar"}
         }
     }
-    Version{"37"}
     codePatterns{
         script{"čállin: {0}"}
     }
diff --git a/icu4c/source/data/lang/seh.txt b/icu4c/source/data/lang/seh.txt
index cd0d1ae..ea0baa7 100644
--- a/icu4c/source/data/lang/seh.txt
+++ b/icu4c/source/data/lang/seh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 seh{
     Languages{
         ak{"akan"}
@@ -48,5 +49,4 @@
         zh{"chinês"}
         zu{"zulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ses.txt b/icu4c/source/data/lang/ses.txt
index 025c447..c35619a 100644
--- a/icu4c/source/data/lang/ses.txt
+++ b/icu4c/source/data/lang/ses.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ses{
     Languages{
         ak{"Akan senni"}
@@ -48,5 +49,4 @@
         zh{"Sinuwa senni, Mandareŋ"}
         zu{"Zulu senni"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/sg.txt b/icu4c/source/data/lang/sg.txt
index 2468611..1f76ddb 100644
--- a/icu4c/source/data/lang/sg.txt
+++ b/icu4c/source/data/lang/sg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sg{
     Languages{
         ak{"Akâan"}
@@ -48,5 +49,4 @@
         zh{"Shinuäa"}
         zu{"Zûlu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/sh.txt b/icu4c/source/data/lang/sh.txt
index 74b646a..83091b2 100644
--- a/icu4c/source/data/lang/sh.txt
+++ b/icu4c/source/data/lang/sh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh{
     "%%ALIAS"{"sr_Latn"}
 }
diff --git a/icu4c/source/data/lang/sh_BA.txt b/icu4c/source/data/lang/sh_BA.txt
index 93bdac6..7f73cd5 100644
--- a/icu4c/source/data/lang/sh_BA.txt
+++ b/icu4c/source/data/lang/sh_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_BA{
     "%%ALIAS"{"sr_Latn_BA"}
 }
diff --git a/icu4c/source/data/lang/sh_CS.txt b/icu4c/source/data/lang/sh_CS.txt
index 224568a..3b2f92b 100644
--- a/icu4c/source/data/lang/sh_CS.txt
+++ b/icu4c/source/data/lang/sh_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_CS{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/lang/sh_YU.txt b/icu4c/source/data/lang/sh_YU.txt
index 8a7d460..dc5a35b 100644
--- a/icu4c/source/data/lang/sh_YU.txt
+++ b/icu4c/source/data/lang/sh_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_YU{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/lang/shi.txt b/icu4c/source/data/lang/shi.txt
index 75fb26f..727be6e 100644
--- a/icu4c/source/data/lang/shi.txt
+++ b/icu4c/source/data/lang/shi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi{
     Languages{
         ak{"ⵜⴰⴽⴰⵏⵜ"}
@@ -48,5 +49,4 @@
         zh{"ⵜⴰⵛⵉⵏⵡⵉⵜ"}
         zu{"ⵜⴰⵣⵓⵍⵓⵜ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/shi_Latn.txt b/icu4c/source/data/lang/shi_Latn.txt
index a6501d3..eab861d 100644
--- a/icu4c/source/data/lang/shi_Latn.txt
+++ b/icu4c/source/data/lang/shi_Latn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_Latn{
     %%Parent{"root"}
     Languages{
@@ -49,5 +50,4 @@
         zh{"Tacinwit"}
         zu{"Tazulut"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/shi_MA.txt b/icu4c/source/data/lang/shi_MA.txt
index 00de1b1..c96251d 100644
--- a/icu4c/source/data/lang/shi_MA.txt
+++ b/icu4c/source/data/lang/shi_MA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_MA{
     "%%ALIAS"{"shi_Tfng_MA"}
 }
diff --git a/icu4c/source/data/lang/shi_Tfng.txt b/icu4c/source/data/lang/shi_Tfng.txt
index 397f53f..723cdf1 100644
--- a/icu4c/source/data/lang/shi_Tfng.txt
+++ b/icu4c/source/data/lang/shi_Tfng.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_Tfng{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/shi_Tfng_MA.txt b/icu4c/source/data/lang/shi_Tfng_MA.txt
index 978cd5c..3ec81a4 100644
--- a/icu4c/source/data/lang/shi_Tfng_MA.txt
+++ b/icu4c/source/data/lang/shi_Tfng_MA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/si.txt b/icu4c/source/data/lang/si.txt
index 9daaa9e..9587b4e 100644
--- a/icu4c/source/data/lang/si.txt
+++ b/icu4c/source/data/lang/si.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 si{
     Keys{
         calendar{"දින දර්ශනය"}
@@ -18,7 +19,7 @@
         ada{"අඩන්ග්මෙ"}
         ady{"අඩිඝෙ"}
         aeb{"ටියුනිසියනු අරාබි"}
-        af{"අෆ්රිකාන්ස්"}
+        af{"අෆ්‍රිකාන්ස්"}
         agq{"ඇගම්"}
         ain{"අයිනු"}
         ak{"අකාන්"}
@@ -422,6 +423,7 @@
         zh_Hant{"සාම්ප්‍රදායික මැන්ඩරීන් චීන"}
     }
     Languages%menu{
+        ckb{"කුර්දිෂ්, මධ්‍යම"}
         yue{"චීන, කැන්ටොනීස්"}
         zh{"චීන, මැන්ඩරීන්"}
     }
@@ -430,6 +432,9 @@
         en_GB{"එ.රා ඉංග්‍රීසි"}
         en_US{"එ.ජ ඉංග්‍රීසි"}
     }
+    Languages%variant{
+        ckb{"කුර්දිෂ්, සොරානි"}
+    }
     Scripts{
         Arab{"අරාබි"}
         Armn{"ආර්මේනියානු"}
@@ -558,7 +563,6 @@
             tibt{"ටිබෙට ඉලක්කම්"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — සියල්ල"}
         category-list{"{0}: {1}"}
@@ -573,6 +577,8 @@
             one{"{0} පහර"}
             other{"{0} පහර"}
         }
+        subscript{"යටකුර {0}"}
+        superscript{"උඩකුර {0}"}
     }
     codePatterns{
         language{"{0} භාෂාව: සිංහල"}
diff --git a/icu4c/source/data/lang/sk.txt b/icu4c/source/data/lang/sk.txt
index 711f0d6..9d2719d 100644
--- a/icu4c/source/data/lang/sk.txt
+++ b/icu4c/source/data/lang/sk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sk{
     Keys{
         calendar{"kalendár"}
@@ -507,7 +508,7 @@
         twq{"tasawaq"}
         ty{"tahitčina"}
         tyv{"tuviančina"}
-        tzm{"tuaregčina (stredomarocká)"}
+        tzm{"tamazight (stredomarocký)"}
         udm{"udmurtčina"}
         ug{"ujgurčina"}
         uga{"ugaritčina"}
@@ -774,7 +775,6 @@
     Variants{
         SCOTLAND{"škótska štandardná angličtina"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} – všetko"}
         category-list{"{0}: {1}"}
@@ -791,6 +791,8 @@
             one{"{0} ťah"}
             other{"{0} ťahov"}
         }
+        subscript{"{0} – dolný index"}
+        superscript{"{0} – horný index"}
     }
     codePatterns{
         language{"Jazyk: {0}"}
diff --git a/icu4c/source/data/lang/sl.txt b/icu4c/source/data/lang/sl.txt
index 9f3cc49..4314ccf 100644
--- a/icu4c/source/data/lang/sl.txt
+++ b/icu4c/source/data/lang/sl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sl{
     Keys{
         calendar{"koledar"}
@@ -138,11 +139,12 @@
         en{"angleščina"}
         en_AU{"avstralska angleščina"}
         en_CA{"kanadska angleščina"}
-        en_GB{"angleščina (VB)"}
-        en_US{"angleščina (ZDA)"}
+        en_GB{"britanska angleščina"}
+        en_US{"ameriška angleščina"}
         enm{"srednja angleščina"}
         eo{"esperanto"}
         es{"španščina"}
+        es_419{"latinskoameriška španščina"}
         es_ES{"evropska španščina"}
         es_MX{"mehiška španščina"}
         et{"estonščina"}
@@ -194,7 +196,7 @@
         hai{"haidščina"}
         haw{"havajščina"}
         he{"hebrejščina"}
-        hi{"hindujščina"}
+        hi{"hindijščina"}
         hil{"hiligajnonščina"}
         hit{"hetitščina"}
         hmn{"hmonščina"}
@@ -307,7 +309,7 @@
         men{"mende"}
         mer{"meru"}
         mfe{"morisjenščina"}
-        mg{"malagaščina"}
+        mg{"malgaščina"}
         mga{"srednja irščina"}
         mgh{"makuva-meto"}
         mgo{"meta"}
@@ -500,7 +502,7 @@
         vai{"vajščina"}
         ve{"venda"}
         vi{"vietnamščina"}
-        vo{"volapuk"}
+        vo{"volapik"}
         vot{"votjaščina"}
         vun{"vunjo"}
         wa{"valonščina"}
@@ -573,12 +575,12 @@
         Grek{"grški"}
         Gujr{"gudžaratski"}
         Guru{"gurmuki"}
-        Hanb{"Han + Bopomofo"}
+        Hanb{"han + bopomofo"}
         Hang{"hangul"}
         Hani{"kanji"}
         Hano{"hanunski"}
-        Hans{"poenostavljena pisava han"}
-        Hant{"tradicionalna pisava han"}
+        Hans{"poenostavljena pisava"}
+        Hant{"tradicionalna pisava"}
         Hebr{"hebrejski"}
         Hira{"hiragana"}
         Hmng{"pahavhmonska zlogovna pisava"}
@@ -586,7 +588,7 @@
         Hung{"staroogrski"}
         Inds{"induški"}
         Ital{"staroitalski"}
-        Jamo{"Jamo"}
+        Jamo{"jamo"}
         Java{"javanski"}
         Jpan{"japonski"}
         Kali{"karenski"}
@@ -663,6 +665,10 @@
         Zyyy{"splošno"}
         Zzzz{"neznan ali neveljaven zapis"}
     }
+    Scripts%stand-alone{
+        Hans{"poenostavljena pisava han"}
+        Hant{"tradicionalna pisava han"}
+    }
     Scripts%variant{
         Arab{"perzijskoarabski"}
     }
@@ -878,7 +884,6 @@
         VALENCIA{"valencijski pravopis"}
         WADEGILE{"romanizacija Wade-Giles"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} – vse"}
         category-list{"{0}: {1}"}
@@ -890,11 +895,13 @@
         other{"{0} – drugo"}
         scripts{"pisave – {0}"}
         strokes{
-            few{"{0} potez"}
+            few{"{0} poteze"}
             one{"{0} poteza"}
             other{"{0} potez"}
             two{"{0} potezi"}
         }
+        subscript{"podpisano {0}"}
+        superscript{"nadpisano {0}"}
     }
     codePatterns{
         language{"Jezik: {0}"}
diff --git a/icu4c/source/data/lang/smn.txt b/icu4c/source/data/lang/smn.txt
index 7f17a56..4da0d92 100644
--- a/icu4c/source/data/lang/smn.txt
+++ b/icu4c/source/data/lang/smn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 smn{
     Languages{
         aa{"afar"}
@@ -397,7 +398,6 @@
         zxx{"ij kielâlâš siskáldâs"}
         zza{"zazakielâ"}
     }
-    Version{"37"}
     codePatterns{
         language{"kielâ: {0}"}
         script{"čäällimvuáhádâh: {0}"}
diff --git a/icu4c/source/data/lang/sn.txt b/icu4c/source/data/lang/sn.txt
index f2b9c98..fa29604 100644
--- a/icu4c/source/data/lang/sn.txt
+++ b/icu4c/source/data/lang/sn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sn{
     Languages{
         ak{"chiAkani"}
@@ -48,5 +49,4 @@
         zh{"chiChinese"}
         zu{"chiZulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/so.txt b/icu4c/source/data/lang/so.txt
index ddaecdc..5759afc 100644
--- a/icu4c/source/data/lang/so.txt
+++ b/icu4c/source/data/lang/so.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 so{
     Keys{
         calendar{"Habeentiris"}
@@ -72,7 +73,7 @@
         fa_AF{"Faarsi"}
         ff{"Fuulah"}
         fi{"Finishka"}
-        fil{"Tagalog"}
+        fil{"Filibiino"}
         fo{"Farowsi"}
         fr{"Faransiis"}
         fr_CA{"Faransiiska Kanada"}
@@ -154,6 +155,7 @@
         mk{"Masadooniyaan"}
         ml{"Malayalam"}
         mn{"Mangooli"}
+        mni{"Maniburi"}
         mr{"Maarati"}
         ms{"Malaay"}
         mt{"Maltiis"}
@@ -178,6 +180,7 @@
         or{"Oodhiya"}
         os{"Oseetic"}
         pa{"Bunjaabi"}
+        pcm{"Bidjinka Nayjeeriya"}
         pl{"Boolish"}
         prg{"Brashiyaanki Hore"}
         ps{"Bashtuu"}
@@ -196,6 +199,7 @@
         sa{"Sanskrit"}
         sah{"Saaqa"}
         saq{"Sambuuru"}
+        sat{"Santali"}
         sbp{"Sangu"}
         sd{"Siindhi"}
         se{"Koonfurta Saami"}
@@ -443,7 +447,7 @@
             ethiopic-amete-alem{"Taariikhda Itoobiya ee Amete Alem"}
             gregorian{"Habeetiriska Geregoriyaan"}
             hebrew{"Habeentiriska yuhuudda"}
-            indian{"Taariikhda Qaranka Hindiya"}
+            indian{"Habeentiris Qarameedka Hindiya"}
             islamic{"Habeentiriska islaamka"}
             islamic-civil{"Taariikhda Islaamiga (tabular, civil epoch)"}
             islamic-rgsa{"Habeentiriska Islaamka (Sacuudiga, aragtida)"}
@@ -624,7 +628,6 @@
         UCRCOR{"orthographyga mideeysan ee hadana ladul maray"}
         VALENCIA{"Faleensiyaawi"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} dhamaan"}
         compatibility{"{0} — waafaqsanaanta"}
@@ -638,6 +641,8 @@
             one{"{0} garaaca"}
             other{"{0} graacis"}
         }
+        subscript{"kordhig{0}"}
+        superscript{"kordhig {0}"}
     }
     codePatterns{
         language{"Luuqad : {0}"}
diff --git a/icu4c/source/data/lang/sq.txt b/icu4c/source/data/lang/sq.txt
index 2e07ac6..383b66f 100644
--- a/icu4c/source/data/lang/sq.txt
+++ b/icu4c/source/data/lang/sq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sq{
     Keys{
         calendar{"Kalendari"}
@@ -496,7 +497,7 @@
             iso8601{"kalendar ISO-8601"}
             japanese{"kalendar japonez"}
             persian{"kalendar persian"}
-            roc{"kalendar minguo (i Republikës së Kinës)"}
+            roc{"kalendar minguo"}
         }
         cf{
             account{"format valutor llogaritës"}
@@ -567,7 +568,6 @@
             tibt{"shifra tibetiane"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — Të gjitha"}
         category-list{"{0}: {1}"}
@@ -582,6 +582,8 @@
             one{"{0} vijëzim drejtshkrimor"}
             other{"{0} vijëzime drejtshkrimore"}
         }
+        subscript{"nënshënim {0}"}
+        superscript{"mbishënim {0}"}
     }
     codePatterns{
         language{"Gjuha: {0}"}
diff --git a/icu4c/source/data/lang/sr.txt b/icu4c/source/data/lang/sr.txt
index 7a6e735..e2e9532 100644
--- a/icu4c/source/data/lang/sr.txt
+++ b/icu4c/source/data/lang/sr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr{
     Keys{
         calendar{"календар"}
@@ -113,6 +114,7 @@
         dar{"даргински"}
         dav{"таита"}
         de{"немачки"}
+        de_AT{"аустријски немачки"}
         de_CH{"швајцарски високи немачки"}
         del{"делаверски"}
         den{"слејви"}
@@ -530,6 +532,10 @@
         zxx{"без лингвистичког садржаја"}
         zza{"заза"}
     }
+    Languages%long{
+        zh_Hans{"поједностављени мандарински кинески"}
+        zh_Hant{"традиционални мандарински кинески"}
+    }
     Languages%menu{
         yue{"кантонски кинески"}
         zh{"мандарински кинески"}
@@ -852,7 +858,6 @@
         TARASK{"Тараскијевичка ортографија"}
         VALENCIA{"Валенцијска"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — све"}
         category-list{"{0}: {1}"}
@@ -868,6 +873,8 @@
             one{"{0} потез"}
             other{"{0} потеза"}
         }
+        subscript{"написано испод {0}"}
+        superscript{"написано изнад {0}"}
     }
     codePatterns{
         language{"Језик: {0}"}
diff --git a/icu4c/source/data/lang/sr_BA.txt b/icu4c/source/data/lang/sr_BA.txt
index edad17f..04f2efd 100644
--- a/icu4c/source/data/lang/sr_BA.txt
+++ b/icu4c/source/data/lang/sr_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_BA{
     "%%ALIAS"{"sr_Cyrl_BA"}
 }
diff --git a/icu4c/source/data/lang/sr_CS.txt b/icu4c/source/data/lang/sr_CS.txt
index 5f8becf..6a32f49 100644
--- a/icu4c/source/data/lang/sr_CS.txt
+++ b/icu4c/source/data/lang/sr_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_CS{
-    "%%ALIAS"{"sr_Cyrl_RS"}
+    "%%ALIAS"{"sr_RS"}
 }
diff --git a/icu4c/source/data/lang/sr_Cyrl.txt b/icu4c/source/data/lang/sr_Cyrl.txt
index df3a287..772d8b3 100644
--- a/icu4c/source/data/lang/sr_Cyrl.txt
+++ b/icu4c/source/data/lang/sr_Cyrl.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/sr_Cyrl_BA.txt b/icu4c/source/data/lang/sr_Cyrl_BA.txt
index 9b37c8c..31f76ee 100644
--- a/icu4c/source/data/lang/sr_Cyrl_BA.txt
+++ b/icu4c/source/data/lang/sr_Cyrl_BA.txt
@@ -1,16 +1,31 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_BA{
+    Keys{
+        collation{"редослијед сортирања"}
+        ms{"систем мјерних јединица"}
+    }
     Languages{
+        ar_001{"савремени стандардни арапски"}
         arn{"мапудунгун"}
         be{"бјелоруски"}
         bm{"бамананкан"}
         bn{"бангла"}
-        gsw{"швајцарски немачки"}
+        de{"њемачки"}
+        en_GB{"енглески (Велика Британија)"}
+        es_ES{"шпански (Европа)"}
+        fa_AF{"дари"}
+        gsw{"њемачки (Швајцарска)"}
         ht{"хаићански креолски"}
         lo{"лаошки"}
+        lrc{"сјеверни лури"}
         moh{"мохок"}
+        nd{"сјеверни ндебеле"}
+        nds{"нискоњемачки"}
         nqo{"н’ко"}
+        pt_PT{"португалски (Португал)"}
+        se{"сјеверни сами"}
         shi{"јужни шилха"}
         si{"синхалски"}
         sw_CD{"кисвахили"}
@@ -21,5 +36,14 @@
         zh_Hant{"традиционални кинески"}
         zu{"исизулу"}
     }
-    Version{"37"}
+    Types{
+        collation{
+            ducet{"подразумијевани Unicode редослијед сортирања"}
+            search{"претрага опште намјене"}
+            standard{"стандардни редослијед сортирања"}
+        }
+        numbers{
+            mymr{"мјанмарске цифре"}
+        }
+    }
 }
diff --git a/icu4c/source/data/lang/sr_Cyrl_CS.txt b/icu4c/source/data/lang/sr_Cyrl_CS.txt
index 9325e5a..2da82d2 100644
--- a/icu4c/source/data/lang/sr_Cyrl_CS.txt
+++ b/icu4c/source/data/lang/sr_Cyrl_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_CS{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/lang/sr_Cyrl_ME.txt b/icu4c/source/data/lang/sr_Cyrl_ME.txt
index 5fcfd9a..bd509f8 100644
--- a/icu4c/source/data/lang/sr_Cyrl_ME.txt
+++ b/icu4c/source/data/lang/sr_Cyrl_ME.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_ME{
     Languages{
         arn{"мапудунгун"}
@@ -17,5 +18,4 @@
         zgh{"стандардни марокански тамашек"}
         zu{"исизулу"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/sr_Cyrl_RS.txt b/icu4c/source/data/lang/sr_Cyrl_RS.txt
index 7ef8fab..c74b860 100644
--- a/icu4c/source/data/lang/sr_Cyrl_RS.txt
+++ b/icu4c/source/data/lang/sr_Cyrl_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/sr_Cyrl_XK.txt b/icu4c/source/data/lang/sr_Cyrl_XK.txt
index 49c8600..a9c3bb5 100644
--- a/icu4c/source/data/lang/sr_Cyrl_XK.txt
+++ b/icu4c/source/data/lang/sr_Cyrl_XK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_XK{
     Languages{
         bm{"бамананкан"}
@@ -17,5 +18,4 @@
         zgh{"стандардни марокански тамашек"}
         zu{"исизулу"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/sr_Cyrl_YU.txt b/icu4c/source/data/lang/sr_Cyrl_YU.txt
index 806d42c..5874f8c 100644
--- a/icu4c/source/data/lang/sr_Cyrl_YU.txt
+++ b/icu4c/source/data/lang/sr_Cyrl_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_YU{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/lang/sr_Latn.txt b/icu4c/source/data/lang/sr_Latn.txt
index 21c8b3c..b6c811c 100644
--- a/icu4c/source/data/lang/sr_Latn.txt
+++ b/icu4c/source/data/lang/sr_Latn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn{
     %%Parent{"root"}
     Keys{
@@ -114,6 +115,7 @@
         dar{"darginski"}
         dav{"taita"}
         de{"nemački"}
+        de_AT{"austrijski nemački"}
         de_CH{"švajcarski visoki nemački"}
         del{"delaverski"}
         den{"slejvi"}
@@ -531,6 +533,10 @@
         zxx{"bez lingvističkog sadržaja"}
         zza{"zaza"}
     }
+    Languages%long{
+        zh_Hans{"pojednostavljeni mandarinski kineski"}
+        zh_Hant{"tradicionalni mandarinski kineski"}
+    }
     Languages%menu{
         yue{"kantonski kineski"}
         zh{"mandarinski kineski"}
@@ -853,7 +859,6 @@
         TARASK{"Taraskijevička ortografija"}
         VALENCIA{"Valencijska"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — sve"}
         category-list{"{0}: {1}"}
@@ -869,6 +874,8 @@
             one{"{0} potez"}
             other{"{0} poteza"}
         }
+        subscript{"napisano ispod {0}"}
+        superscript{"napisano iznad {0}"}
     }
     codePatterns{
         language{"Jezik: {0}"}
diff --git a/icu4c/source/data/lang/sr_Latn_BA.txt b/icu4c/source/data/lang/sr_Latn_BA.txt
index 4540f09..f28f61d 100644
--- a/icu4c/source/data/lang/sr_Latn_BA.txt
+++ b/icu4c/source/data/lang/sr_Latn_BA.txt
@@ -1,16 +1,31 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_BA{
+    Keys{
+        collation{"redoslijed sortiranja"}
+        ms{"sistem mjernih jedinica"}
+    }
     Languages{
+        ar_001{"savremeni standardni arapski"}
         arn{"mapudungun"}
         be{"bjeloruski"}
         bm{"bamanankan"}
         bn{"bangla"}
-        gsw{"švajcarski nemački"}
+        de{"njemački"}
+        en_GB{"engleski (Velika Britanija)"}
+        es_ES{"španski (Evropa)"}
+        fa_AF{"dari"}
+        gsw{"njemački (Švajcarska)"}
         ht{"haićanski kreolski"}
         lo{"laoški"}
+        lrc{"sjeverni luri"}
         moh{"mohok"}
+        nd{"sjeverni ndebele"}
+        nds{"niskonjemački"}
         nqo{"n’ko"}
+        pt_PT{"portugalski (Portugal)"}
+        se{"sjeverni sami"}
         shi{"južni šilha"}
         si{"sinhalski"}
         sw_CD{"kisvahili"}
@@ -21,5 +36,14 @@
         zh_Hant{"tradicionalni kineski"}
         zu{"isizulu"}
     }
-    Version{"37"}
+    Types{
+        collation{
+            ducet{"podrazumijevani Unicode redoslijed sortiranja"}
+            search{"pretraga opšte namjene"}
+            standard{"standardni redoslijed sortiranja"}
+        }
+        numbers{
+            mymr{"mjanmarske cifre"}
+        }
+    }
 }
diff --git a/icu4c/source/data/lang/sr_Latn_CS.txt b/icu4c/source/data/lang/sr_Latn_CS.txt
index 0952735..7204cfd 100644
--- a/icu4c/source/data/lang/sr_Latn_CS.txt
+++ b/icu4c/source/data/lang/sr_Latn_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_CS{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/lang/sr_Latn_ME.txt b/icu4c/source/data/lang/sr_Latn_ME.txt
index b461ec9..bddd9fe 100644
--- a/icu4c/source/data/lang/sr_Latn_ME.txt
+++ b/icu4c/source/data/lang/sr_Latn_ME.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_ME{
     Languages{
         arn{"mapudungun"}
@@ -17,5 +18,4 @@
         zgh{"standardni marokanski tamašek"}
         zu{"isizulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/sr_Latn_RS.txt b/icu4c/source/data/lang/sr_Latn_RS.txt
index 76d38f8..8d63da6 100644
--- a/icu4c/source/data/lang/sr_Latn_RS.txt
+++ b/icu4c/source/data/lang/sr_Latn_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/sr_Latn_XK.txt b/icu4c/source/data/lang/sr_Latn_XK.txt
index 55eaab6..9d674cd 100644
--- a/icu4c/source/data/lang/sr_Latn_XK.txt
+++ b/icu4c/source/data/lang/sr_Latn_XK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_XK{
     Languages{
         bm{"bamanankan"}
@@ -17,5 +18,4 @@
         zgh{"standardni marokanski tamašek"}
         zu{"isizulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/sr_Latn_YU.txt b/icu4c/source/data/lang/sr_Latn_YU.txt
index 2747ab2..415a4d8 100644
--- a/icu4c/source/data/lang/sr_Latn_YU.txt
+++ b/icu4c/source/data/lang/sr_Latn_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_YU{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/lang/sr_ME.txt b/icu4c/source/data/lang/sr_ME.txt
index 32dc910..aa51626 100644
--- a/icu4c/source/data/lang/sr_ME.txt
+++ b/icu4c/source/data/lang/sr_ME.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_ME{
     "%%ALIAS"{"sr_Latn_ME"}
 }
diff --git a/icu4c/source/data/lang/sr_RS.txt b/icu4c/source/data/lang/sr_RS.txt
index 674ff77..84db469 100644
--- a/icu4c/source/data/lang/sr_RS.txt
+++ b/icu4c/source/data/lang/sr_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_RS{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/lang/sr_XK.txt b/icu4c/source/data/lang/sr_XK.txt
index 9628a27..0d3aa53 100644
--- a/icu4c/source/data/lang/sr_XK.txt
+++ b/icu4c/source/data/lang/sr_XK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_XK{
     "%%ALIAS"{"sr_Cyrl_XK"}
 }
diff --git a/icu4c/source/data/lang/sr_YU.txt b/icu4c/source/data/lang/sr_YU.txt
index 26563d0..2d67778 100644
--- a/icu4c/source/data/lang/sr_YU.txt
+++ b/icu4c/source/data/lang/sr_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_YU{
-    "%%ALIAS"{"sr_Cyrl_RS"}
+    "%%ALIAS"{"sr_RS"}
 }
diff --git a/icu4c/source/data/lang/su.txt b/icu4c/source/data/lang/su.txt
index 3cd56a3..63be473 100644
--- a/icu4c/source/data/lang/su.txt
+++ b/icu4c/source/data/lang/su.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su{
     Languages{
         de{"Jérman"}
@@ -8,7 +9,6 @@
         en{"Inggris"}
         en_AU{"Inggris Australia"}
         en_CA{"Inggris Kanada"}
-        en_GB{"Inggris Inggris"}
         en_US{"Inggris Amerika"}
         es{"Spanyol"}
         es_419{"Spanyol Amérika Latin"}
@@ -24,7 +24,7 @@
         pt_PT{"Portugis Éropa"}
         ru{"Rusia"}
         su{"Basa Sunda"}
-        und{"Teu Dipikaterang"}
+        und{"Basa teu dikenal"}
         zh{"Tiongkok"}
         zh_Hans{"Tiongkok Sederhana"}
         zh_Hant{"Tiongkok Tradisional"}
@@ -41,13 +41,12 @@
         en_US{"Inggris AS"}
     }
     Scripts{
-        Arab{"Basa Arab"}
         Cyrl{"Sirilik"}
         Hans{"Sederhana"}
         Hant{"Tradisional"}
         Latn{"Latin"}
         Zxxx{"Non-tulisan"}
-        Zzzz{"Skrip Teu Dipikaterang"}
+        Zzzz{"Tulisan Teu Dikenal"}
     }
     Scripts%stand-alone{
         Hans{"Han Sederhana"}
@@ -55,7 +54,7 @@
     }
     Types{
         calendar{
-            gregorian{"Kalender Grégorian"}
+            gregorian{"Kalénder Grégorian"}
         }
         collation{
             standard{"Aturan Runtuyan Standar"}
@@ -64,7 +63,6 @@
             latn{"Digit Barat"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"Basa: {0}"}
         script{"Skrip: {0}"}
diff --git a/icu4c/source/data/lang/su_ID.txt b/icu4c/source/data/lang/su_ID.txt
index 67dde38..8da0f56 100644
--- a/icu4c/source/data/lang/su_ID.txt
+++ b/icu4c/source/data/lang/su_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su_ID{
     "%%ALIAS"{"su_Latn_ID"}
 }
diff --git a/icu4c/source/data/lang/su_Latn.txt b/icu4c/source/data/lang/su_Latn.txt
index 008b423..87ca4fa 100644
--- a/icu4c/source/data/lang/su_Latn.txt
+++ b/icu4c/source/data/lang/su_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/su_Latn_ID.txt b/icu4c/source/data/lang/su_Latn_ID.txt
index 4629832..d6b42f3 100644
--- a/icu4c/source/data/lang/su_Latn_ID.txt
+++ b/icu4c/source/data/lang/su_Latn_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/sv.txt b/icu4c/source/data/lang/sv.txt
index f0800b1..0399eaf 100644
--- a/icu4c/source/data/lang/sv.txt
+++ b/icu4c/source/data/lang/sv.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sv{
     Keys{
         calendar{"kalender"}
@@ -447,7 +448,7 @@
         pap{"papiamento"}
         pau{"palau"}
         pcd{"pikardiska"}
-        pcm{"Nigeria-pidgin"}
+        pcm{"nigeriansk pidgin"}
         pdc{"Pennsylvaniatyska"}
         pdt{"mennonitisk lågtyska"}
         peo{"fornpersiska"}
@@ -507,7 +508,7 @@
         seh{"sena"}
         sei{"seri"}
         sel{"selkup"}
-        ses{"Gao-songhai"}
+        ses{"songhai"}
         sg{"sango"}
         sga{"forniriska"}
         sgs{"samogitiska"}
@@ -652,6 +653,8 @@
     }
     Languages%short{
         az{"azeriska"}
+        en_GB{"brittisk engelska"}
+        en_US{"amerikansk engelska"}
     }
     Languages%variant{
         ps{"pashto"}
@@ -684,12 +687,14 @@
         Cari{"kariska"}
         Cham{"cham"}
         Cher{"cherokee"}
+        Chrs{"khwarezmiska"}
         Cirt{"cirt"}
         Copt{"koptiska"}
         Cprt{"cypriotiska"}
         Cyrl{"kyrilliska"}
         Cyrs{"fornkyrkoslavisk kyrilliska"}
         Deva{"devanagari"}
+        Diak{"dives akuru"}
         Dogr{"dogriska"}
         Dsrt{"deseret"}
         Dupl{"Duployéstenografiska"}
@@ -713,8 +718,8 @@
         Hang{"hangul"}
         Hani{"han"}
         Hano{"hanunó’o"}
-        Hans{"förenklade"}
-        Hant{"traditionella"}
+        Hans{"förenklad"}
+        Hant{"traditionell"}
         Hatr{"hatran"}
         Hebr{"hebreiska"}
         Hira{"hiragana"}
@@ -734,6 +739,7 @@
         Khar{"kharoshti"}
         Khmr{"khmeriska"}
         Khoj{"khojkiska"}
+        Kits{"khitanska"}
         Knda{"kanaresiska"}
         Kore{"koreanska"}
         Kpel{"kpellé"}
@@ -840,6 +846,7 @@
         Wole{"woleai"}
         Xpeo{"fornpersiska"}
         Xsux{"sumero-akkadisk kilskrift"}
+        Yezi{"yazidiska"}
         Yiii{"yi"}
         Zanb{"zanabazar kvadratisk skrift"}
         Zinh{"ärvda"}
@@ -952,7 +959,7 @@
             ungegn{"enligt FN:s geografiska namnkommitté"}
         }
         ms{
-            metric{"SI-enheter"}
+            metric{"metersystem"}
             uksystem{"brittiskt måttsystem"}
             ussystem{"USA:s måttsystem"}
         }
@@ -969,6 +976,7 @@
             cham{"chamiska siffror"}
             cyrl{"kyrilliska taltecken"}
             deva{"devanagariska siffror"}
+            diak{"dives akuru-siffror"}
             ethi{"etiopiska taltecken"}
             finance{"finansiella siffror"}
             fullwide{"fullbreddssiffror"}
@@ -1066,6 +1074,7 @@
         BISKE{"Bila-dialekt"}
         BOHORIC{"Bohorič-alfabetet"}
         BOONT{"boontling"}
+        BORNHOLM{"Bornholm"}
         CISAUP{"cisalpinska (occitanska)"}
         COLB1945{"stavning enligt 1945 års konvention mellan Portugal och Brasilien"}
         CORNU{"kornisk engelska"}
@@ -1144,7 +1153,6 @@
         WADEGILE{"Wade-Giles"}
         XSISTEMO{"x-system"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} – alla"}
         category-list{"{0}: {1}"}
@@ -1159,6 +1167,8 @@
             one{"{0} streck"}
             other{"{0} streck"}
         }
+        subscript{"nedsänkt {0}"}
+        superscript{"upphöjt {0}"}
     }
     codePatterns{
         language{"språk: {0}"}
diff --git a/icu4c/source/data/lang/sv_FI.txt b/icu4c/source/data/lang/sv_FI.txt
index 8f9784f..1e9375f 100644
--- a/icu4c/source/data/lang/sv_FI.txt
+++ b/icu4c/source/data/lang/sv_FI.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sv_FI{
     Keys{
         timezone{"tidszon"}
@@ -7,5 +8,4 @@
     Scripts%variant{
         Arab{"persisk-arabiska"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/sw.txt b/icu4c/source/data/lang/sw.txt
index 5073a13..df3b914 100644
--- a/icu4c/source/data/lang/sw.txt
+++ b/icu4c/source/data/lang/sw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw{
     Keys{
         calendar{"Kalenda"}
@@ -7,9 +8,9 @@
         colAlternate{"Puuza Upangaji Alama"}
         colBackwards{"Upangaji Uliogeuzwa wa Kiinitoni"}
         colCaseFirst{"Upangaji wa Herufi kubwa/Herufi ndogo"}
-        colCaseLevel{"Upangaji Unaoathiriwa na Herufi"}
+        colCaseLevel{"Upangaji Kulingana na Ukubwa wa Herufi"}
         colNormalization{"Upangaji wa Kawaida"}
-        colNumeric{"Upangaji wa Namba"}
+        colNumeric{"Upangaji kwa Nambari"}
         colStrength{"Nguvu ya Upangaji"}
         collation{"Mpangilio"}
         currency{"Sarafu"}
@@ -129,6 +130,7 @@
         eu{"Kibaski"}
         ewo{"Kiewondo"}
         fa{"Kiajemi"}
+        fa_AF{"Kiajemi (Afganistani)"}
         ff{"Kifulani"}
         fi{"Kifini"}
         fil{"Kifilipino"}
@@ -165,7 +167,7 @@
         hil{"Kihiligaynon"}
         hit{"Kihiti"}
         hmn{"Kihmong"}
-        hr{"Kikroeshia"}
+        hr{"Kikorasia"}
         hsb{"Kisobia cha Ukanda wa Juu"}
         ht{"Kihaiti"}
         hu{"Kihungaria"}
@@ -203,7 +205,7 @@
         kfo{"Kikoro"}
         kg{"Kikongo"}
         kha{"Kikhasi"}
-        khq{"Koyra Chiini"}
+        khq{"Kikoyra Chiini"}
         ki{"Kikikuyu"}
         kj{"Kikwanyama"}
         kk{"Kikazakh"}
@@ -280,7 +282,7 @@
         ms{"Kimalei"}
         mt{"Kimalta"}
         mua{"Kimundang"}
-        mul{"Lugha Nyingi"}
+        mul{"Lugha nyingi"}
         mus{"Kikriki"}
         mwl{"Kimirandi"}
         my{"Kiburma"}
@@ -330,6 +332,7 @@
         prg{"Kiprussia"}
         ps{"Kipashto"}
         pt{"Kireno"}
+        pt_BR{"Kireno (Brazili)"}
         pt_PT{"Kireno (Ulaya)"}
         qu{"Kikechua"}
         quc{"Kʼicheʼ"}
@@ -360,7 +363,7 @@
         sdh{"Kikurdi cha Kusini"}
         se{"Kisami cha Kaskazini"}
         seh{"Kisena"}
-        ses{"Koyraboro Senni"}
+        ses{"Kikoyraboro Senni"}
         sg{"Kisango"}
         sh{"Kiserbia-kroeshia"}
         shi{"Kitachelhit"}
@@ -411,7 +414,7 @@
         tum{"Kitumbuka"}
         tvl{"Kituvalu"}
         tw{"Twi"}
-        twq{"Kitasawaq"}
+        twq{"Kitasawak"}
         ty{"Kitahiti"}
         tyv{"Kituva"}
         tzm{"Kitamazighati cha Atlasi ya Kati"}
@@ -419,7 +422,7 @@
         ug{"Kiuyghur"}
         uk{"Kiukraini"}
         umb{"Umbundu"}
-        und{"Lugha Isiyojulikana"}
+        und{"Lugha isiyojulikana"}
         ur{"Kiurdu"}
         uz{"Kiuzbeki"}
         vai{"Kivai"}
@@ -452,6 +455,7 @@
         zza{"Kizaza"}
     }
     Languages%long{
+        zh_Hans{"Kichina (Kilichorahisishwa)"}
         zh_Hant{"Kichina (cha jadi)"}
     }
     Languages%menu{
@@ -470,7 +474,7 @@
         Armn{"Kiarmenia"}
         Beng{"Kibengali"}
         Bopo{"Kibopomofo"}
-        Brai{"Braille"}
+        Brai{"Nukta nundu"}
         Cyrl{"Kisiriliki"}
         Deva{"Kidevanagari"}
         Ethi{"Kiethiopia"}
@@ -534,7 +538,7 @@
             iso8601{"Kalenda ya ISO-8601"}
             japanese{"Kalenda ya Kijapani"}
             persian{"Kalenda ya Kiajemi"}
-            roc{"Kalenda ya Minguo"}
+            roc{"Kalenda ya Jamhuri ya Uchina"}
         }
         cf{
             account{"Mpangilio wa Kihasibu wa Sarafu"}
@@ -610,8 +614,8 @@
         }
         ms{
             metric{"Mfumo wa Metriki"}
-            uksystem{"Mfumo wa UK"}
-            ussystem{"Mfumo wa US"}
+            uksystem{"Mfumo wa Vipimo wa Uingereza"}
+            ussystem{"Mfumo wa Vipimo wa Marekani"}
         }
         numbers{
             arab{"Nambari za Kiarabu/Kihindi"}
@@ -636,10 +640,10 @@
             hebr{"Nambari za Kiebrania"}
             jpan{"Nambari za Kijapani"}
             jpanfin{"Nambari za Kifedha za Kijapani"}
-            khmr{"Nambari za Kikhmer"}
+            khmr{"Nambari za Kikambodia"}
             knda{"Nambari za Kikannada"}
             laoo{"Nambari za Kilao"}
-            latn{"Nambari za Magharibi"}
+            latn{"Nambari za Nchi za Magharibi"}
             mlym{"Nambari za Malayalam"}
             mong{"Nambari za Kimongolia"}
             mymr{"Nambari za Myanmar"}
@@ -656,7 +660,6 @@
             vaii{"Dijiti za Vai"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — zote"}
         category-list{"{0}: {1}"}
@@ -671,6 +674,8 @@
             one{"mshazari {0}"}
             other{"mishazari {0}"}
         }
+        subscript{"herufichini {0}"}
+        superscript{"herufijuu {0}"}
     }
     codePatterns{
         language{"Lugha: {0}"}
diff --git a/icu4c/source/data/lang/sw_CD.txt b/icu4c/source/data/lang/sw_CD.txt
index 02722e7..49cfb59 100644
--- a/icu4c/source/data/lang/sw_CD.txt
+++ b/icu4c/source/data/lang/sw_CD.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw_CD{
     Languages{
         ak{"Kiakan"}
@@ -11,7 +12,6 @@
         hup{"Kihupa"}
         jbo{"Kilojban"}
         kac{"Kikachin"}
-        khq{"Kikoyra Chiini"}
         kkj{"Kikako"}
         koi{"Kikomipermyak"}
         kru{"Kikurukh"}
@@ -35,5 +35,4 @@
         udm{"Kiudumurti"}
         yi{"Kiyidi"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/sw_KE.txt b/icu4c/source/data/lang/sw_KE.txt
index 2de8600..3b83f6c 100644
--- a/icu4c/source/data/lang/sw_KE.txt
+++ b/icu4c/source/data/lang/sw_KE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw_KE{
     Keys{
         hc{"Kipindi cha saa (12 dhidi ya 24)"}
@@ -45,7 +46,6 @@
         swb{"Kikomoro"}
         syr{"Kisiria"}
         tw{"Kitwi"}
-        twq{"Kitasawak"}
         udm{"Kiudumurti"}
         ug{"Kiuiguri"}
         zgh{"Kitamazighati Sanifu cha Moroko"}
@@ -82,5 +82,4 @@
             tamldec{"Nambari za Kitamili"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ta.txt b/icu4c/source/data/lang/ta.txt
index c891dc0..916c71e 100644
--- a/icu4c/source/data/lang/ta.txt
+++ b/icu4c/source/data/lang/ta.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ta{
     Keys{
         calendar{"நாள்காட்டி"}
@@ -849,7 +850,6 @@
         PINYIN{"பின்யின் ரோமானைசெஷன்"}
         WADEGILE{"வேட்-கைல்ஸ் ரோமனைஷேசன்"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — அனைத்தும்"}
         category-list{"{0}: {1}"}
@@ -864,6 +864,8 @@
             one{"{0} கோடு"}
             other{"{0} கோடுகள்"}
         }
+        subscript{"துணைஸ்கிரிப்ட் {0}"}
+        superscript{"சூப்பர்ஸ்கிரிப்ட் {0}"}
     }
     codePatterns{
         language{"மொழி: {0}"}
diff --git a/icu4c/source/data/lang/te.txt b/icu4c/source/data/lang/te.txt
index 30fbbe3..4130b98 100644
--- a/icu4c/source/data/lang/te.txt
+++ b/icu4c/source/data/lang/te.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 te{
     Keys{
         calendar{"క్యాలెండర్"}
@@ -89,7 +90,7 @@
         ccp{"చక్మా"}
         ce{"చెచెన్"}
         ceb{"సెబువానో"}
-        cgg{"ఛిగా"}
+        cgg{"చిగా"}
         ch{"చమర్రో"}
         chb{"చిబ్చా"}
         chg{"చాగటై"}
@@ -139,7 +140,7 @@
         eka{"ఏకాజక్"}
         el{"గ్రీక్"}
         elx{"ఎలామైట్"}
-        en{"ఆంగ్లం"}
+        en{"ఇంగ్లీష్"}
         en_AU{"ఆస్ట్రేలియన్ ఇంగ్లీష్"}
         en_CA{"కెనడియన్ ఇంగ్లీష్"}
         en_GB{"బ్రిటిష్ ఇంగ్లీష్"}
@@ -854,7 +855,6 @@
         REVISED{"సవరించబడిన వర్ణక్రమం"}
         WADEGILE{"వేడ్-గైల్స్ రోమనైజేషన్"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — అన్ని"}
         category-list{"{0}: {1}"}
@@ -869,6 +869,8 @@
             one{"{0} స్ట్రోక్"}
             other{"{0} స్ట్రోకులు"}
         }
+        subscript{"సబ్‌స్క్రిప్ట్ {0}"}
+        superscript{"సూపర్‌స్క్రిప్ట్ {0}"}
     }
     codePatterns{
         language{"భాష: {0}"}
diff --git a/icu4c/source/data/lang/teo.txt b/icu4c/source/data/lang/teo.txt
index b3dfa48..ba66e35 100644
--- a/icu4c/source/data/lang/teo.txt
+++ b/icu4c/source/data/lang/teo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 teo{
     Languages{
         ak{"Kiakan"}
@@ -48,5 +49,4 @@
         zh{"Kichina"}
         zu{"Kizulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/tg.txt b/icu4c/source/data/lang/tg.txt
index 0439b66..d3277f0 100644
--- a/icu4c/source/data/lang/tg.txt
+++ b/icu4c/source/data/lang/tg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tg{
     Languages{
         af{"африкаанс"}
@@ -151,7 +152,7 @@
         to{"тонганӣ"}
         tr{"туркӣ"}
         tt{"тоторӣ"}
-        tzm{"тамазайти атласи марказӣ"}
+        tzm{"тамазайти Атласи Марказӣ"}
         ug{"ӯйғурӣ"}
         uk{"украинӣ"}
         und{"забони номаълум"}
@@ -201,7 +202,6 @@
             latn{"Рақамҳои ғарбӣ"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"{0}"}
         script{"{0}"}
diff --git a/icu4c/source/data/lang/th.txt b/icu4c/source/data/lang/th.txt
index ff0ab02..2ce1275 100644
--- a/icu4c/source/data/lang/th.txt
+++ b/icu4c/source/data/lang/th.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 th{
     Keys{
         calendar{"ปฏิทิน"}
@@ -169,7 +170,7 @@
         en_AU{"อังกฤษ - ออสเตรเลีย"}
         en_CA{"อังกฤษ - แคนาดา"}
         en_GB{"อังกฤษ - สหราชอาณาจักร"}
-        en_US{"อังกฤษ - อเมริกัน"}
+        en_US{"อังกฤษ - สหรัฐอเมริกา"}
         enm{"อังกฤษกลาง"}
         eo{"เอสเปรันโต"}
         es{"สเปน"}
@@ -634,13 +635,17 @@
         zen{"เซนากา"}
         zgh{"ทามาไซต์โมร็อกโกมาตรฐาน"}
         zh{"จีน"}
-        zh_Hans{"จีนประยุกต์"}
-        zh_Hant{"จีนดั้งเดิม"}
+        zh_Hans{"จีนตัวย่อ"}
+        zh_Hant{"จีนตัวเต็ม"}
         zu{"ซูลู"}
         zun{"ซูนิ"}
         zxx{"ไม่มีข้อมูลภาษา"}
         zza{"ซาซา"}
     }
+    Languages%long{
+        zh_Hans{"จีนกลาง (ตัวย่อ)"}
+        zh_Hant{"จีนกลาง (ตัวเต็ม)"}
+    }
     Languages%menu{
         yue{"จีน (กวางตุ้ง)"}
         zh{"จีนกลาง"}
@@ -648,7 +653,7 @@
     Languages%short{
         az{"อะเซอรี"}
         en_GB{"อังกฤษ - อังกฤษ"}
-        en_US{"อังกฤษ - อเมริกัน"}
+        en_US{"อังกฤษ - สหรัฐฯ"}
     }
     Languages%variant{
         ckb{"เคิร์ดโซรานี"}
@@ -1062,7 +1067,6 @@
         VALLADER{"วัลลาเดอร์"}
         WADEGILE{"การถอดอักษรแบบเวด-ไจลส์"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — ทั้งหมด"}
         category-list{"{0}: {1}"}
@@ -1072,10 +1076,12 @@
         historic{"{0} — โบราณ"}
         miscellaneous{"{0} — อื่นๆ"}
         other{"{0} — อื่นๆ"}
-        scripts{"สคริปต์ — {0}"}
+        scripts{"ตัวอักษร — {0}"}
         strokes{
             other{"{0} ขีด"}
         }
+        subscript{"ตัวห้อย {0}"}
+        superscript{"ตัวยก {0}"}
     }
     codePatterns{
         language{"ภาษา: {0}"}
diff --git a/icu4c/source/data/lang/ti.txt b/icu4c/source/data/lang/ti.txt
index 7aaf10b..e15d3b2 100644
--- a/icu4c/source/data/lang/ti.txt
+++ b/icu4c/source/data/lang/ti.txt
@@ -1,110 +1,111 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ti{
     Languages{
-        af{"አፍሪቃንሰኛ"}
-        am{"አምሐረኛ"}
-        ar{"ዓረበኛ"}
-        az{"አዜርባይጃንኛ"}
-        be{"ቤላራሻኛ"}
+        af{"ኣፍሪከንስ"}
+        am{"ኣምሓርኛ"}
+        ar{"ዓረብ"}
+        az{"ኣዘርባጃን"}
+        be{"ቤላሩስ"}
         bg{"ቡልጋሪኛ"}
-        bn{"በንጋሊኛ"}
+        bn{"ባንጋላ"}
         br{"ብሬቶን"}
         bs{"ቦስኒያን"}
         ca{"ካታላን"}
-        cs{"ቼክኛ"}
+        cs{"ቼክ"}
         cy{"ወልሽ"}
-        da{"ዴኒሽ"}
+        da{"ዳኒሽ"}
         de{"ጀርመን"}
-        el{"ግሪከኛ"}
-        en{"እንግሊዝኛ"}
+        el{"ግሪክ"}
+        en{"እንግሊዝ"}
         eo{"ኤስፐራንቶ"}
         es{"ስፓኒሽ"}
+        es_419{"ስፓኒሽ (የላቲን አሜሪካ)"}
         et{"ኤስቶኒአን"}
-        eu{"ባስክኛ"}
-        fa{"ፐርሲያኛ"}
+        eu{"ባስክ"}
+        fa{"ፋርስ"}
         fi{"ፊኒሽ"}
-        fil{"ታጋሎገኛ"}
-        fo{"ፋሮኛ"}
-        fr{"ፈረንሳይኛ"}
-        fy{"ፍሪሰኛ"}
+        fil{"ፊሊፕን"}
+        fo{"ፋሮስ"}
+        fr{"ፈረንሳይን"}
+        fy{"ምዕራባዊ ፍሪሰኛ"}
         ga{"አይሪሽ"}
-        gd{"እስኮትስ ጌልክኛ"}
-        gl{"ጋለቪኛ"}
+        gd{"ስኮቲሽ ጋአሊክ"}
+        gl{"ጋሊሻን"}
         gn{"ጓራኒ"}
-        gu{"ጉጃራቲኛ"}
-        he{"ዕብራስጥ"}
-        hi{"ሕንደኛ"}
-        hr{"ክሮሽያንኛ"}
-        hu{"ሀንጋሪኛ"}
+        gu{"ጉጃራቲ"}
+        he{"እብራይስጥ"}
+        hi{"ህንዲ"}
+        hr{"ሮኤሽያን"}
+        hu{"ሃንጋሪ"}
         ia{"ኢንቴር ቋንቋ"}
-        id{"እንዶኑሲኛ"}
-        is{"አይስላንደኛ"}
-        it{"ጣሊያንኛ"}
-        ja{"ጃፓንኛ"}
-        jv{"ጃቫንኛ"}
-        ka{"ጊዮርጊያኛ"}
+        id{"ኢንዶኔዥያን"}
+        is{"ኣይስላንዲክ"}
+        it{"ጥልያን"}
+        ja{"ጃፓን"}
+        jv{"ጃቫን"}
+        ka{"ጆርጅየን"}
         kn{"ካማደኛ"}
         ko{"ኮሪያኛ"}
         ku{"ኩርድሽ"}
         ky{"ኪሩጋዚ"}
         la{"ላቲንኛ"}
-        lt{"ሊቱአኒየን"}
+        lt{"ሊቱወኒየን"}
         lv{"ላቲቪያን"}
-        mk{"ማክዶኒኛ"}
-        ml{"ማላያላምኛ"}
+        mk{"መቆዶኒኛ"}
+        ml{"ማላይያላም"}
         mr{"ማራቲኛ"}
-        ms{"ማላይኛ"}
-        mt{"ማልቲስኛ"}
-        ne{"ኔፖሊኛ"}
+        ms{"ማላይ"}
+        mt{"ማልተዘ"}
+        ne{"ኔፓሊ"}
         nl{"ደች"}
-        nn{"ኖርዌይኛ (ናይ ኝኖርስክ)"}
-        no{"ኖርዌጂያን"}
+        nn{"ርዌጂያን (ናይ ኝኖርስክ)"}
+        no{"ርዌጂያን"}
         oc{"ኦኪታንኛ"}
-        or{"ኦሪያ"}
-        pa{"ፑንጃቢኛ"}
+        or{"ኦዲያ"}
+        pa{"ፑንጃቢ"}
         pl{"ፖሊሽ"}
         ps{"ፓሽቶ"}
-        pt{"ፖርቱጋሊኛ"}
-        pt_BR{"ፖርቱጋልኛ (ናይ ብራዚል)"}
-        pt_PT{"ፖርቱጋልኛ (ናይ ፖርቱጋል)"}
+        pt{"ፖርቹጋል"}
+        pt_BR{"ፖርቹጋል (ናይ ብራዚል)"}
+        pt_PT{"ፖርቹጋል (ናይ ፖርቱጋል)"}
         ro{"ሮማኒያን"}
-        ru{"ራሽኛ"}
+        ru{"ሩስያ"}
         sh{"ሰርቦ- ክሮዊታን"}
-        si{"ስንሃልኛ"}
-        sk{"ስሎቨክኛ"}
-        sl{"ስቁቪኛ"}
-        sq{"አልቤኒኛ"}
-        sr{"ሰርቢኛ"}
+        si{"ሲንሃላ"}
+        sk{"ስሎቫክ"}
+        sl{"ስሎቪኒያ"}
+        sq{"ኣልበንየን"}
+        sr{"ሰርብያኛ"}
         st{"ሰሴቶ"}
-        su{"ሱዳንኛ"}
+        su{"ሱዳን"}
         sv{"ስዊድንኛ"}
-        sw{"ሰዋሂሊኛ"}
+        sw{"ስዋሂሊ"}
         ta{"ታሚልኛ"}
         te{"ተሉጉኛ"}
         th{"ታይኛ"}
-        ti{"ትግርኛ"}
-        tk{"ናይ ቱርኪ ሰብዓይ (ቱርካዊ)"}
+        ti{"ትግር"}
+        tk{"ቱርክሜን"}
         tlh{"ክሊንግኦንኛ"}
-        tr{"ቱርከኛ"}
+        tr{"ቱርክ"}
         tw{"ትዊ"}
-        uk{"ዩክረኒኛ"}
-        ur{"ኡርዱኛ"}
-        uz{"ኡዝበክኛ"}
-        vi{"ቪትናምኛ"}
-        xh{"ዞሳኛ"}
+        uk{"ዩክሬን"}
+        ur{"ኡርዱ"}
+        uz{"ኡዝቤክ"}
+        vi{"ቬትናም"}
+        xh{"ኢሲቆሳ"}
         yi{"ዪዲሽ"}
         zu{"ዙሉኛ"}
     }
     Languages%short{
-        en_GB{"እንግሊዝኛ (GB)"}
-        en_US{"እንግሊዝኛ (US)"}
+        en_GB{"እንግሊዝ (GB)"}
+        en_US{"እንግሊዝ (US)"}
     }
     Scripts{
         Ethi{"ፊደል"}
         Latn{"ላቲን"}
     }
-    Version{"37"}
     codePatterns{
         language{"{0}"}
         script{"{0}"}
diff --git a/icu4c/source/data/lang/tk.txt b/icu4c/source/data/lang/tk.txt
index e8713fc..68c2000 100644
--- a/icu4c/source/data/lang/tk.txt
+++ b/icu4c/source/data/lang/tk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tk{
     Keys{
         calendar{"Senenama"}
@@ -53,7 +54,7 @@
         bo{"tibet dili"}
         br{"breton dili"}
         brx{"bodo dili"}
-        bs{"boşnak dili"}
+        bs{"bosniýa dili"}
         bug{"bugiý dili"}
         byn{"blin dili"}
         ca{"katalan dili"}
@@ -167,7 +168,7 @@
         kea{"kabuwerdianu dili"}
         kfo{"koro dili"}
         kha{"khasi dili"}
-        khq{"koýra-Çini dili"}
+        khq{"koýra-çini dili"}
         ki{"kikuýu dili"}
         kj{"kwanýama dili"}
         kk{"gazak dili"}
@@ -278,7 +279,7 @@
         pam{"kapampangan dili"}
         pap{"papýamento dili"}
         pau{"palau dili"}
-        pcm{"nigeriý-pijin dili"}
+        pcm{"nigeriýa-pijin dili"}
         pl{"polýak dili"}
         prg{"prussiýa dili"}
         ps{"peştun dili"}
@@ -535,7 +536,6 @@
             tibt{"Tibet sanlary"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — ähli"}
         category-list{"{0}: {1}"}
@@ -550,6 +550,8 @@
             one{"{0} ştrih"}
             other{"{0} ştrih"}
         }
+        subscript{"aşaky indeks {0}"}
+        superscript{"ýokarky indeks {0}"}
     }
     codePatterns{
         language{"Dil: {0}"}
diff --git a/icu4c/source/data/lang/tl.txt b/icu4c/source/data/lang/tl.txt
index 4e521f9..8c39518 100644
--- a/icu4c/source/data/lang/tl.txt
+++ b/icu4c/source/data/lang/tl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tl{
     "%%ALIAS"{"fil"}
 }
diff --git a/icu4c/source/data/lang/tl_PH.txt b/icu4c/source/data/lang/tl_PH.txt
index 07c9f90..59af394 100644
--- a/icu4c/source/data/lang/tl_PH.txt
+++ b/icu4c/source/data/lang/tl_PH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tl_PH{
     "%%ALIAS"{"fil_PH"}
 }
diff --git a/icu4c/source/data/lang/to.txt b/icu4c/source/data/lang/to.txt
index 7a1967f..6877957 100644
--- a/icu4c/source/data/lang/to.txt
+++ b/icu4c/source/data/lang/to.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 to{
     Keys{
         calendar{"tohi māhina"}
@@ -162,9 +163,9 @@
         enm{"lea fakapālangi-lotoloto"}
         eo{"lea fakaʻesipulanito"}
         es{"lea fakasipēnisi"}
-        es_419{"lea fakasipēnisi lātini-ʻamelika"}
-        es_ES{"lea fakasipēnisi-‘iulope"}
-        es_MX{"lea fakasipēnisi-mekisikou"}
+        es_419{"lea fakasipeini-lātini-ʻamelika"}
+        es_ES{"lea fakasipeini-ʻeulope"}
+        es_MX{"lea fakasipeini-mekisikou"}
         esu{"lea fakaiūpiki-loloto"}
         et{"lea fakaʻesitōnia"}
         eu{"lea fakapāsiki"}
@@ -891,7 +892,6 @@
             tibt{"fika fakatipeti"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — kotoa"}
         category-list{"{0}: {1}"}
@@ -905,6 +905,8 @@
         strokes{
             other{"kohi ʻe {0}"}
         }
+        subscript{"tohi ʻi lalo {0}"}
+        superscript{"tohi ʻi ʻolunga {0}"}
     }
     codePatterns{
         language{"Lea: {0}"}
diff --git a/icu4c/source/data/lang/tr.txt b/icu4c/source/data/lang/tr.txt
index 7b83094..b97d0aa 100644
--- a/icu4c/source/data/lang/tr.txt
+++ b/icu4c/source/data/lang/tr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tr{
     Keys{
         calendar{"Takvim"}
@@ -437,7 +438,7 @@
         oc{"Oksitan dili"}
         oj{"Ojibva dili"}
         om{"Oromo dili"}
-        or{"Oriya Dili"}
+        or{"Oriya dili"}
         os{"Osetçe"}
         osa{"Osage"}
         ota{"Osmanlı Türkçesi"}
@@ -648,7 +649,7 @@
     }
     Languages%menu{
         ars{"Arapça, Necd"}
-        ckb{"Kürtçe, Sorani"}
+        ckb{"Kürtçe, Orta"}
         yue{"Çince, Kantonca"}
         zh{"Çince, Mandarin"}
     }
@@ -657,6 +658,9 @@
         en_GB{"Birleşik Krallık İngilizcesi"}
         en_US{"ABD İngilizcesi"}
     }
+    Languages%variant{
+        ckb{"Kürtçe, Sorani"}
+    }
     Scripts{
         Afak{"Afaka"}
         Aghb{"Kafkas Albanyası"}
@@ -1051,7 +1055,6 @@
         VALENCIA{"Valensiyaca"}
         WADEGILE{"Wade-Giles (Latin Alfabesinde Yazımı)"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — tümü"}
         category-list{"{0}: {1}"}
@@ -1066,6 +1069,8 @@
             one{"{0} çizgi"}
             other{"{0} çizgi"}
         }
+        subscript{"alt simge {0}"}
+        superscript{"üst simge {0}"}
     }
     codePatterns{
         language{"Dil: {0}"}
diff --git a/icu4c/source/data/lang/tt.txt b/icu4c/source/data/lang/tt.txt
index 0fbbbde..22f6a14 100644
--- a/icu4c/source/data/lang/tt.txt
+++ b/icu4c/source/data/lang/tt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tt{
     Languages{
         af{"африкаанс"}
@@ -154,7 +155,7 @@
         wo{"волоф"}
         yi{"идиш"}
         yo{"йоруба"}
-        zh{"кытай (тәрҗемә киңәше: аерым алганда, мандарин кытайчасы)"}
+        zh{"кытай"}
         zh_Hans{"гадиләштерелгән кытай"}
         zh_Hant{"традицион кытай"}
     }
@@ -189,7 +190,6 @@
             latn{"көнбатыш цифрлары"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"Тел: {0}"}
         script{"Язу: {0}"}
diff --git a/icu4c/source/data/lang/twq.txt b/icu4c/source/data/lang/twq.txt
index fdf028c..edf71f1 100644
--- a/icu4c/source/data/lang/twq.txt
+++ b/icu4c/source/data/lang/twq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 twq{
     Languages{
         ak{"Akan senni"}
@@ -48,5 +49,4 @@
         zh{"Sinuwa senni, Mandareŋ"}
         zu{"Zulu senni"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/tzm.txt b/icu4c/source/data/lang/tzm.txt
index a02cfff..ec891b0 100644
--- a/icu4c/source/data/lang/tzm.txt
+++ b/icu4c/source/data/lang/tzm.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tzm{
     Languages{
         ak{"Takanit"}
@@ -48,5 +49,4 @@
         zh{"Tacinwit,Mandarin"}
         zu{"tazulut"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/ug.txt b/icu4c/source/data/lang/ug.txt
index 8fe4f13..671e0af 100644
--- a/icu4c/source/data/lang/ug.txt
+++ b/icu4c/source/data/lang/ug.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ug{
     Keys{
         calendar{"يىلنامە"}
@@ -826,7 +827,6 @@
         VALENCIA{"ۋالېنسىيە"}
         WADEGILE{"ۋېي ئائىلىسى پىنيىن لاتىنلاشتۇرۇش"}
     }
-    Version{"37"}
     codePatterns{
         language{"تىل: {0}"}
         script{"يېزىق: {0}"}
diff --git a/icu4c/source/data/lang/uk.txt b/icu4c/source/data/lang/uk.txt
index a0017f1..55d6c91 100644
--- a/icu4c/source/data/lang/uk.txt
+++ b/icu4c/source/data/lang/uk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uk{
     Keys{
         calendar{"календар"}
@@ -54,7 +55,7 @@
         as{"асамська"}
         asa{"асу"}
         ase{"американська мова рухів"}
-        ast{"астурська"}
+        ast{"астурійська"}
         av{"аварська"}
         awa{"авадхі"}
         ay{"аймара"}
@@ -85,7 +86,7 @@
         bkm{"ком"}
         bla{"сіксіка"}
         bm{"бамбара"}
-        bn{"банґла"}
+        bn{"бенгальська"}
         bo{"тибетська"}
         bqi{"бахтіарі"}
         br{"бретонська"}
@@ -134,7 +135,7 @@
         dav{"таіта"}
         de{"німецька"}
         de_AT{"австрійська німецька"}
-        de_CH{"верхньонімецька (Швейцарія)"}
+        de_CH{"швейцарська верхньонімецька"}
         del{"делаварська"}
         den{"слейв"}
         dgr{"догрибська"}
@@ -160,12 +161,12 @@
         en_AU{"австралійська англійська"}
         en_CA{"канадська англійська"}
         en_GB{"британська англійська"}
-        en_US{"англійська (США)"}
+        en_US{"американська англійська"}
         enm{"середньоанглійська"}
         eo{"есперанто"}
         es{"іспанська"}
         es_419{"латиноамериканська іспанська"}
-        es_ES{"іспанська (Європа)"}
+        es_ES{"європейська іспанська"}
         es_MX{"мексиканська іспанська"}
         et{"естонська"}
         eu{"баскська"}
@@ -197,7 +198,7 @@
         gan{"ґань"}
         gay{"гайо"}
         gba{"гбайя"}
-        gd{"гаельська"}
+        gd{"шотландська гельська"}
         gez{"гєез"}
         gil{"гільбертська"}
         gl{"галісійська"}
@@ -209,7 +210,7 @@
         got{"готська"}
         grb{"гребо"}
         grc{"давньогрецька"}
-        gsw{"німецька (Швейцарія)"}
+        gsw{"швейцарська німецька"}
         gu{"гуджараті"}
         guz{"гусії"}
         gv{"менкська"}
@@ -227,7 +228,7 @@
         hr{"хорватська"}
         hsb{"верхньолужицька"}
         hsn{"сянська китайська"}
-        ht{"гаїтянська"}
+        ht{"гаїтянська креольська"}
         hu{"угорська"}
         hup{"хупа"}
         hy{"вірменська"}
@@ -238,7 +239,7 @@
         id{"індонезійська"}
         ie{"інтерлінгве"}
         ig{"ігбо"}
-        ii{"сичуань"}
+        ii{"сичуаньська ї"}
         ik{"інупіак"}
         ilo{"ілоканська"}
         inh{"інгуська"}
@@ -291,12 +292,12 @@
         ks{"кашмірська"}
         ksb{"шамбала"}
         ksf{"бафіа"}
-        ksh{"колоніан"}
+        ksh{"кельнська"}
         ku{"курдська"}
         kum{"кумицька"}
         kut{"кутенаї"}
         kv{"комі"}
-        kw{"корнійська"}
+        kw{"корнська"}
         ky{"киргизька"}
         la{"латинська"}
         lad{"ладіно"}
@@ -322,7 +323,7 @@
         luo{"луо"}
         lus{"мізо"}
         luy{"луйя"}
-        lv{"латвійська"}
+        lv{"латиська"}
         mad{"мадурська"}
         maf{"мафа"}
         mag{"магадхі"}
@@ -415,12 +416,12 @@
         pi{"палі"}
         pl{"польська"}
         pon{"понапе"}
-        prg{"пруська"}
+        prg{"прусська"}
         pro{"давньопровансальська"}
         ps{"пушту"}
-        pt{"портуґальська"}
-        pt_BR{"португальська (Бразилія)"}
-        pt_PT{"європейська портуґальська"}
+        pt{"португальська"}
+        pt_BR{"бразильська португальська"}
+        pt_PT{"європейська португальська"}
         qu{"кечуа"}
         quc{"кіче"}
         raj{"раджастхані"}
@@ -439,7 +440,7 @@
         rwk{"рва"}
         sa{"санскрит"}
         sad{"сандаве"}
-        sah{"якутська"}
+        sah{"саха"}
         sam{"самаритянська арамейська"}
         saq{"самбуру"}
         sas{"сасакська"}
@@ -449,7 +450,7 @@
         sc{"сардинська"}
         scn{"сицилійська"}
         sco{"шотландська"}
-        sd{"сіндхі"}
+        sd{"синдхі"}
         sdh{"південнокурдська"}
         se{"північносаамська"}
         see{"сенека"}
@@ -481,7 +482,7 @@
         srr{"серер"}
         ss{"сісваті"}
         ssy{"сахо"}
-        st{"сото південна"}
+        st{"південна сото"}
         su{"сунданська"}
         suk{"сукума"}
         sus{"сусу"}
@@ -510,7 +511,7 @@
         tli{"тлінгіт"}
         tmh{"тамашек"}
         tn{"тсвана"}
-        to{"тонґанська"}
+        to{"тонганська"}
         tog{"ньяса тонга"}
         tpi{"ток-пісін"}
         tr{"турецька"}
@@ -536,11 +537,11 @@
         vai{"ваї"}
         ve{"венда"}
         vi{"вʼєтнамська"}
-        vo{"волапʼюк"}
+        vo{"волапюк"}
         vot{"водська"}
         vun{"вуньо"}
         wa{"валлонська"}
-        wae{"валзерська"}
+        wae{"вальзерська"}
         wal{"волайтта"}
         war{"варай"}
         was{"вашо"}
@@ -584,6 +585,9 @@
         az{"азері"}
         en_GB{"англійська (Брит.)"}
     }
+    Languages%variant{
+        ckb{"сорані"}
+    }
     Scripts{
         Adlm{"адлам"}
         Afak{"афака"}
@@ -915,7 +919,6 @@
         VALENCIA{"Валенсійська"}
         WADEGILE{"Романізація Вейда-Джайлза"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — усі"}
         category-list{"{0}: {1}"}
@@ -932,6 +935,8 @@
             one{"{0} риска"}
             other{"{0} риски"}
         }
+        subscript{"нижній індекс {0}"}
+        superscript{"верхній індекс {0}"}
     }
     codePatterns{
         language{"Мова: {0}"}
diff --git a/icu4c/source/data/lang/ur.txt b/icu4c/source/data/lang/ur.txt
index 00a17e9..eeb9243 100644
--- a/icu4c/source/data/lang/ur.txt
+++ b/icu4c/source/data/lang/ur.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ur{
     Keys{
         calendar{"کیلنڈر"}
@@ -134,7 +135,7 @@
         frc{"کاجن فرانسیسی"}
         fur{"فریولیائی"}
         fy{"مغربی فریسیئن"}
-        ga{"آئیرِش"}
+        ga{"آئرش"}
         gaa{"گا"}
         gag{"غاغاوز"}
         gan{"gan"}
@@ -563,7 +564,7 @@
             phonetic{"صوتی چھٹائی کی ترتیب"}
             pinyin{"پن ین کی چھٹنی کی ترتیب"}
             reformed{"دوبارہ تشکیل شدہ چھٹنی کی ترتیب"}
-            search{"عام-مقصد کی تلاش"}
+            search{"عمومی تلاش"}
             searchjl{"Hangul Initial Consonant کے لحاظ سے تلاش کریں"}
             standard{"معیاری چھانٹی کی ترتیب"}
             stroke{"سٹروک کی چھٹنی کی ترتیب"}
@@ -638,7 +639,6 @@
             vaii{"وائی ہندسے"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — تمام"}
         category-list{"{0}: {1}"}
@@ -653,6 +653,8 @@
             one{"{0} اسٹروک"}
             other{"{0} اسٹروک"}
         }
+        subscript{"سب اسکرپٹ {0}"}
+        superscript{"سپر اسکرپٹ {0}"}
     }
     codePatterns{
         language{"زبان:{0}"}
diff --git a/icu4c/source/data/lang/ur_IN.txt b/icu4c/source/data/lang/ur_IN.txt
index a582dda..d40b0a7 100644
--- a/icu4c/source/data/lang/ur_IN.txt
+++ b/icu4c/source/data/lang/ur_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ur_IN{
     Languages{
         ar_001{"جدید معیاری عربی"}
@@ -23,5 +24,4 @@
             tibt{"تبتی ہندسے"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/uz.txt b/icu4c/source/data/lang/uz.txt
index 3c879ff..21df76a 100644
--- a/icu4c/source/data/lang/uz.txt
+++ b/icu4c/source/data/lang/uz.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz{
     Keys{
         calendar{"taqvim"}
@@ -548,7 +549,6 @@
             tibt{"tibet raqamlari"}
         }
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — hammasi"}
         category-list{"{0}: {1}"}
@@ -563,6 +563,8 @@
             one{"{0} ta chiziq"}
             other{"{0} ta chiziq"}
         }
+        subscript{"{0} pastki yozuv"}
+        superscript{"{0} ustki yozuv"}
     }
     codePatterns{
         language{"Til: {0}"}
diff --git a/icu4c/source/data/lang/uz_AF.txt b/icu4c/source/data/lang/uz_AF.txt
index 24ca294..0e8d20c 100644
--- a/icu4c/source/data/lang/uz_AF.txt
+++ b/icu4c/source/data/lang/uz_AF.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_AF{
     "%%ALIAS"{"uz_Arab_AF"}
 }
diff --git a/icu4c/source/data/lang/uz_Arab.txt b/icu4c/source/data/lang/uz_Arab.txt
index 7f9b7fb..33772f4 100644
--- a/icu4c/source/data/lang/uz_Arab.txt
+++ b/icu4c/source/data/lang/uz_Arab.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Arab{
     %%Parent{"root"}
     Languages{
@@ -10,5 +11,4 @@
     Scripts{
         Arab{"عربی"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/uz_Arab_AF.txt b/icu4c/source/data/lang/uz_Arab_AF.txt
index e45d708..e2978bb 100644
--- a/icu4c/source/data/lang/uz_Arab_AF.txt
+++ b/icu4c/source/data/lang/uz_Arab_AF.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/uz_Cyrl.txt b/icu4c/source/data/lang/uz_Cyrl.txt
index 43a5d98..1dc113b 100644
--- a/icu4c/source/data/lang/uz_Cyrl.txt
+++ b/icu4c/source/data/lang/uz_Cyrl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Cyrl{
     %%Parent{"root"}
     Keys{
@@ -402,7 +403,6 @@
             tibt{"Тибет рақамлари"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"Тил: {0}"}
         script{"{0}"}
diff --git a/icu4c/source/data/lang/uz_Latn.txt b/icu4c/source/data/lang/uz_Latn.txt
index f6035b7..1ae52da 100644
--- a/icu4c/source/data/lang/uz_Latn.txt
+++ b/icu4c/source/data/lang/uz_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/uz_Latn_UZ.txt b/icu4c/source/data/lang/uz_Latn_UZ.txt
index 2d34eff..356e549 100644
--- a/icu4c/source/data/lang/uz_Latn_UZ.txt
+++ b/icu4c/source/data/lang/uz_Latn_UZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/uz_UZ.txt b/icu4c/source/data/lang/uz_UZ.txt
index ffac532..3a6a14d 100644
--- a/icu4c/source/data/lang/uz_UZ.txt
+++ b/icu4c/source/data/lang/uz_UZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_UZ{
     "%%ALIAS"{"uz_Latn_UZ"}
 }
diff --git a/icu4c/source/data/lang/vai.txt b/icu4c/source/data/lang/vai.txt
index 3df3fd5..8109f46 100644
--- a/icu4c/source/data/lang/vai.txt
+++ b/icu4c/source/data/lang/vai.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai{
     Languages{
         ak{"ꕉꕪꘋ"}
@@ -48,5 +49,4 @@
         zh{"ꕦꕇꔧ"}
         zu{"ꖮꖨ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/vai_LR.txt b/icu4c/source/data/lang/vai_LR.txt
index 27d4238..f682350 100644
--- a/icu4c/source/data/lang/vai_LR.txt
+++ b/icu4c/source/data/lang/vai_LR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_LR{
     "%%ALIAS"{"vai_Vaii_LR"}
 }
diff --git a/icu4c/source/data/lang/vai_Latn.txt b/icu4c/source/data/lang/vai_Latn.txt
index f6dc0bd..6e68361 100644
--- a/icu4c/source/data/lang/vai_Latn.txt
+++ b/icu4c/source/data/lang/vai_Latn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_Latn{
     %%Parent{"root"}
     Languages{
@@ -49,5 +50,4 @@
         zh{"Chaniĩ"}
         zu{"Zúlu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/vai_Vaii.txt b/icu4c/source/data/lang/vai_Vaii.txt
index cffa591..6dc5e99 100644
--- a/icu4c/source/data/lang/vai_Vaii.txt
+++ b/icu4c/source/data/lang/vai_Vaii.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_Vaii{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/vai_Vaii_LR.txt b/icu4c/source/data/lang/vai_Vaii_LR.txt
index a17bc11..d2845ca 100644
--- a/icu4c/source/data/lang/vai_Vaii_LR.txt
+++ b/icu4c/source/data/lang/vai_Vaii_LR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/vi.txt b/icu4c/source/data/lang/vi.txt
index 88e6bfd..0948fa8 100644
--- a/icu4c/source/data/lang/vi.txt
+++ b/icu4c/source/data/lang/vi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vi{
     Keys{
         calendar{"Lịch"}
@@ -228,7 +229,7 @@
         hif{"Tiếng Fiji Hindi"}
         hil{"Tiếng Hiligaynon"}
         hit{"Tiếng Hittite"}
-        hmn{"Tiếng Hmông"}
+        hmn{"Tiếng H’Mông"}
         ho{"Tiếng Hiri Motu"}
         hr{"Tiếng Croatia"}
         hsb{"Tiếng Thượng Sorbia"}
@@ -999,7 +1000,6 @@
         VALENCIA{"Tiếng Valencia"}
         WADEGILE{"La Mã hóa Wade-Giles"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — tất cả"}
         category-list{"{0}: {1}"}
@@ -1013,6 +1013,8 @@
         strokes{
             other{"{0} nét"}
         }
+        subscript{"chỉ số dưới {0}"}
+        superscript{"chỉ số trên {0}"}
     }
     codePatterns{
         language{"Ngôn ngữ: {0}"}
diff --git a/icu4c/source/data/lang/vun.txt b/icu4c/source/data/lang/vun.txt
index f9c05f1..23848e2 100644
--- a/icu4c/source/data/lang/vun.txt
+++ b/icu4c/source/data/lang/vun.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vun{
     Languages{
         ak{"Kiakanyi"}
@@ -48,5 +49,4 @@
         zh{"Kyichina"}
         zu{"Kyizulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/wae.txt b/icu4c/source/data/lang/wae.txt
index 0539e3d..03bfad8 100644
--- a/icu4c/source/data/lang/wae.txt
+++ b/icu4c/source/data/lang/wae.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 wae{
     Languages{
         ab{"Abčasiš"}
@@ -193,7 +194,6 @@
             latn{"Arabiši Zálä"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"Sprač: {0}"}
         script{"Alfabét: {0}"}
diff --git a/icu4c/source/data/lang/wo.txt b/icu4c/source/data/lang/wo.txt
index 4201163..90a6f27 100644
--- a/icu4c/source/data/lang/wo.txt
+++ b/icu4c/source/data/lang/wo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 wo{
     Languages{
         af{"Afrikaans"}
@@ -26,14 +27,22 @@
         cy{"Wels"}
         da{"Danuwa"}
         de{"Almaa"}
+        de_AT{"Almaa bu Ótiriis"}
+        de_CH{"Almaa bu Kawe bu Swis"}
         dsb{"Sorab-Suuf"}
         dv{"Diweyi"}
         dz{"Dsongkaa"}
         el{"Gereg"}
         en{"Àngale"}
+        en_AU{"Àngale bu Óstraali"}
+        en_CA{"Àngale bu Kanadaa"}
+        en_GB{"Àngale bu Grànd Brëtaañ"}
+        en_US{"Àngale bu Amerik"}
         eo{"Esperantoo"}
         es{"Español"}
-        es_419{"Español (Amerik Latin)"}
+        es_419{"Español bu Amerik Latin"}
+        es_ES{"Español bu Tugël"}
+        es_MX{"Español bu Meksik"}
         et{"Estoñiye"}
         eu{"Bask"}
         fa{"Pers"}
@@ -42,6 +51,8 @@
         fil{"Filipiye"}
         fo{"Feroos"}
         fr{"Farañse"}
+        fr_CA{"Frañse bu Kanadaa"}
+        fr_CH{"Frañse bu Swis"}
         ga{"Irlànde"}
         gd{"Galuwaa bu Ekos"}
         gl{"Galisiye"}
@@ -106,6 +117,8 @@
         pl{"Polone"}
         ps{"Pasto"}
         pt{"Purtugees"}
+        pt_BR{"Purtugees bu Bresil"}
+        pt_PT{"Portugees bu Tugël"}
         qu{"Kesuwa"}
         quc{"Kishe"}
         rm{"Romaas"}
@@ -153,6 +166,10 @@
         zh_Hans{"Sinuwaa buñ woyofal"}
         zh_Hant{"Sinuwaa bu cosaan"}
     }
+    Languages%long{
+        zh_Hans{"Sinuwaa buñ woyofal"}
+        zh_Hant{"Sinuwaa bu cosaan"}
+    }
     Languages%short{
         en_GB{"Àngale (RI)"}
         en_US{"Àngale (ES)"}
@@ -181,7 +198,6 @@
             latn{"Siifari Tugal"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"{0}"}
         script{"{0}"}
diff --git a/icu4c/source/data/lang/xh.txt b/icu4c/source/data/lang/xh.txt
index 623c18e..806fd1f 100644
--- a/icu4c/source/data/lang/xh.txt
+++ b/icu4c/source/data/lang/xh.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 xh{
     Languages{
         xh{"isiXhosa"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/xog.txt b/icu4c/source/data/lang/xog.txt
index 1c98c50..927cd20 100644
--- a/icu4c/source/data/lang/xog.txt
+++ b/icu4c/source/data/lang/xog.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 xog{
     Languages{
         ak{"Oluakaani"}
@@ -48,5 +49,4 @@
         zh{"Olucayina"}
         zu{"Oluzzulu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/yav.txt b/icu4c/source/data/lang/yav.txt
index 5190f01..45d0fcd 100644
--- a/icu4c/source/data/lang/yav.txt
+++ b/icu4c/source/data/lang/yav.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yav{
     Languages{
         ak{"akánɛ"}
@@ -48,5 +49,4 @@
         zh{"sinúɛ"}
         zu{"nusulú"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/yi.txt b/icu4c/source/data/lang/yi.txt
index 85d1aae..e7445ab 100644
--- a/icu4c/source/data/lang/yi.txt
+++ b/icu4c/source/data/lang/yi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yi{
     Keys{
         numbers{"נומערן"}
@@ -170,7 +171,6 @@
             gregorian{"גרעגארישער קאַלענדאַר"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"שפראַך: {0}"}
         script{"שריפֿט: {0}"}
diff --git a/icu4c/source/data/lang/yo.txt b/icu4c/source/data/lang/yo.txt
index 688db7b..17f9bc5 100644
--- a/icu4c/source/data/lang/yo.txt
+++ b/icu4c/source/data/lang/yo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yo{
     Keys{
         calendar{"Kàlẹ́ńdà"}
@@ -13,35 +14,35 @@
     }
     Languages{
         af{"Èdè Afrikani"}
-        agq{"Ágẹ̀ẹ̀mù"}
+        agq{"Èdè Ágẹ̀ẹ̀mù"}
         ak{"Èdè Akani"}
         am{"Èdè Amariki"}
         ar{"Èdè Árábìkì"}
-        as{"Ti Assam"}
-        asa{"Asu"}
-        ast{"Asturian"}
+        as{"Èdè Ti Assam"}
+        asa{"Èdè Asu"}
+        ast{"Èdè Asturian"}
         az{"Èdè Azerbaijani"}
-        bas{"Basaa"}
+        bas{"Èdè Basaa"}
         be{"Èdè Belarusi"}
-        bem{"Béḿbà"}
-        bez{"Bẹ́nà"}
+        bem{"Èdè Béḿbà"}
+        bez{"Èdè Bẹ́nà"}
         bg{"Èdè Bugaria"}
-        bm{"Báḿbàrà"}
+        bm{"Èdè Báḿbàrà"}
         bn{"Èdè Bengali"}
         bo{"Tibetán"}
         br{"Èdè Bretoni"}
-        brx{"Bódò"}
+        brx{"Èdè Bódò"}
         bs{"Èdè Bosnia"}
         ca{"Èdè Catala"}
-        ccp{"Chakma"}
-        ce{"Chechen"}
-        ceb{"Cebuano"}
-        cgg{"Chiga"}
-        chr{"Shẹ́rókiì"}
+        ccp{"Èdè Chakma"}
+        ce{"Èdè Chechen"}
+        ceb{"Èdè Cebuano"}
+        cgg{"Èdè Chiga"}
+        chr{"Èdè Shẹ́rókiì"}
         ckb{"Ààrin Gbùngbùn Kurdish"}
-        co{"Corsican"}
-        cs{"Èdè seeki"}
-        cu{"Síláfííkì Ilé Ìjọ́sìn"}
+        co{"Èdè Corsican"}
+        cs{"Èdè Seeki"}
+        cu{"Èdè Síláfííkì Ilé Ìjọ́sìn"}
         cy{"Èdè Welshi"}
         da{"Èdè Ilẹ̀ Denmark"}
         dav{"Táítà"}
@@ -49,12 +50,12 @@
         de_AT{"Èdè Jámánì (Ọ́síríà )"}
         de_CH{"Èdè Ilẹ̀ Jámánì (Orílẹ́ède swítsàlandì)"}
         dje{"Ṣárúmà"}
-        dsb{"Ṣobíànù Ìpìlẹ̀"}
-        dua{"Duala"}
+        dsb{"Ṣóbíánù Apá Ìṣàlẹ̀"}
+        dua{"Èdè Duala"}
         dyo{"Jola-Fonyi"}
-        dz{"Dzongkha"}
-        ebu{"Ẹmbù"}
-        ee{"Ewè"}
+        dz{"Èdè Dzongkha"}
+        ebu{"Èdè Ẹmbù"}
+        ee{"Èdè Ewè"}
         el{"Èdè Giriki"}
         en{"Èdè Gẹ̀ẹ́sì"}
         en_AU{"Èdè Gẹ̀ẹ́sì (órílẹ̀-èdè Ọsirélíà)"}
@@ -70,7 +71,7 @@
         es_MX{"Èdè Sípáníìṣì (orílẹ̀-èdè Mẹ́síkò)"}
         et{"Èdè Estonia"}
         eu{"Èdè Baski"}
-        ewo{"Èwóǹdò"}
+        ewo{"Èdè Èwóǹdò"}
         fa{"Èdè Pasia"}
         ff{"Èdè Fúlàní"}
         fi{"Èdè Finisi"}
@@ -127,10 +128,10 @@
         kok{"Kónkánì"}
         ks{"Kaṣímirì"}
         ksb{"Ṣáńbálà"}
-        ksf{"Báfíà"}
-        ksh{"Colognian"}
+        ksf{"Èdè Báfíà"}
+        ksh{"Èdè Colognian"}
         ku{"Kọdiṣì"}
-        kw{"Kọ́nììṣì"}
+        kw{"Èdè Kọ́nììṣì"}
         ky{"Kírígíìsì"}
         la{"Èdè Latini"}
         lag{"Láńgì"}
@@ -214,7 +215,7 @@
         sq{"Èdè Albania"}
         sr{"Èdè Serbia"}
         st{"Èdè Sesoto"}
-        su{"Èdè Sudani"}
+        su{"Èdè Sudanísì"}
         sv{"Èdè Suwidiisi"}
         sw{"Èdè Swahili"}
         ta{"Èdè Tamili"}
@@ -245,15 +246,20 @@
         yav{"Yangbẹn"}
         yi{"Èdè Yiddishi"}
         yo{"Èdè Yorùbá"}
-        yue{"Cantonese"}
+        yue{"Èdè Cantonese"}
         zgh{"Àfẹnùkò Támásáìtì ti Mòrókò"}
-        zh{"Èdè Mandarin tí wọ́n ń sọ lórílẹ̀-èdè Ṣáínà"}
-        zh_Hant{"Èdè Ìbílẹ̀ Ṣáínà"}
+        zh{"Edè Ṣáínà"}
+        zh_Hans{"Ẹdè Ṣáínà Onírọ̀rùn"}
+        zh_Hant{"Èdè Ṣáínà Ìbílẹ̀"}
         zu{"Èdè Ṣulu"}
         zxx{"Kò sí àkóònú elédè"}
     }
+    Languages%long{
+        zh_Hans{"Èdè Mandárínì Ṣáínà Onírọ̀rùn"}
+        zh_Hant{"Èdè Mandárínì Ṣáínà Ìbílẹ̀"}
+    }
     Languages%menu{
-        zh{"Ṣáídà, Mandrínì"}
+        zh{"Edè Ṣáínà, Mandárínì"}
     }
     Languages%short{
         en_GB{"Èdè Gẹ̀ẹ́sì (GB)"}
@@ -308,17 +314,17 @@
     }
     Types{
         calendar{
-            buddhist{"Kàlẹ̀ńdà Buddhist"}
-            chinese{"Kàlẹ̀ńdà ti Ṣáìnà"}
-            dangi{"Kàlẹ̀ńdà dangi"}
-            ethiopic{"Kàlẹ̀ńdà Ẹtíópíìkì"}
+            buddhist{"Kàlẹ́ńdà Buddhist"}
+            chinese{"Kàlẹ́ńdà ti Ṣáìnà"}
+            dangi{"Kàlẹ́ńdà dangi"}
+            ethiopic{"Kàlẹ́ńdà Ẹtíópíìkì"}
             gregorian{"Kàlẹ́ńdà Gregory"}
-            hebrew{"Kàlẹ̀ńdà Hébérù"}
-            islamic{"Kàlẹ̀ńdà Lárúbáwá"}
+            hebrew{"Kàlẹ́ńdà Hébérù"}
+            islamic{"Kàlẹ́ńdà Lárúbáwá"}
             iso8601{"Kàlẹ́ńdà ISO-8601"}
-            japanese{"Kàlẹ̀ńdà ti Jàpánù"}
-            persian{"Kàlẹ̀ńdà Pásíànù"}
-            roc{"Kàlẹ̀ńdà Minguo"}
+            japanese{"Kàlẹ́ńdà ti Jàpánù"}
+            persian{"Kàlẹ́ńdà Pásíànù"}
+            roc{"Kàlẹ́ńdà Minguo"}
         }
         cf{
             account{"Ìgúnrégé Ìṣirò Owó Kọ́rẹ́ńsì"}
@@ -383,7 +389,6 @@
             tibt{"Àwọn díjíìtì Tibetán"}
         }
     }
-    Version{"37"}
     codePatterns{
         language{"Èdè: {0}"}
         script{"Ìṣọwọ́kọ̀wé: {0}"}
diff --git a/icu4c/source/data/lang/yo_BJ.txt b/icu4c/source/data/lang/yo_BJ.txt
index cd07bc7..e8a0c0a 100644
--- a/icu4c/source/data/lang/yo_BJ.txt
+++ b/icu4c/source/data/lang/yo_BJ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yo_BJ{
     Keys{
         calendar{"Kàlɛ́ńdà"}
@@ -10,16 +11,16 @@
         numbers{"Àwɔn nɔ́ńbà"}
     }
     Languages{
-        agq{"Ágɛ̀ɛ̀mù"}
-        bez{"Bɛ́nà"}
-        chr{"Shɛ́rókiì"}
-        cu{"Síláfííkì Ilé Ìjɔ́sìn"}
+        agq{"Èdè Ágɛ̀ɛ̀mù"}
+        bez{"Èdè Bɛ́nà"}
+        chr{"Èdè Shɛ́rókiì"}
+        cu{"Èdè Síláfííkì Ilé Ìjɔ́sìn"}
         da{"Èdè Ilɛ̀ Denmark"}
         de_AT{"Èdè Jámánì (Ɔ́síríà )"}
         de_CH{"Èdè Ilɛ̀ Jámánì (Orílɛ́ède swítsàlandì)"}
         dje{"Shárúmà"}
-        dsb{"Shobíànù Ìpìlɛ̀"}
-        ebu{"Ɛmbù"}
+        dsb{"Shóbíánù Apá Ìshàlɛ̀"}
+        ebu{"Èdè Ɛmbù"}
         en{"Èdè Gɛ̀ɛ́sì"}
         en_AU{"Èdè Gɛ̀ɛ́sì (órílɛ̀-èdè Ɔsirélíà)"}
         en_CA{"Èdè Gɛ̀ɛ́sì (Orílɛ̀-èdè Kánádà)"}
@@ -42,7 +43,7 @@
         ks{"Kashímirì"}
         ksb{"Sháńbálà"}
         ku{"Kɔdishì"}
-        kw{"Kɔ́nììshì"}
+        kw{"Èdè Kɔ́nììshì"}
         lb{"Lùshɛ́mbɔ́ɔ̀gì"}
         mul{"Ɔlɔ́pɔ̀ èdè"}
         nb{"Nɔ́ɔ́wè Bokímàl"}
@@ -74,12 +75,17 @@
         xog{"Shógà"}
         yav{"Yangbɛn"}
         zgh{"Àfɛnùkò Támásáìtì ti Mòrókò"}
-        zh{"Èdè Mandarin tí wɔ́n ń sɔ lórílɛ̀-èdè Sháínà"}
-        zh_Hant{"Èdè Ìbílɛ̀ Sháínà"}
+        zh{"Edè Sháínà"}
+        zh_Hans{"Ɛdè Sháínà Onírɔ̀rùn"}
+        zh_Hant{"Èdè Sháínà Ìbílɛ̀"}
         zu{"Èdè Shulu"}
     }
+    Languages%long{
+        zh_Hans{"Èdè Mandárínì Sháínà Onírɔ̀rùn"}
+        zh_Hant{"Èdè Mandárínì Sháínà Ìbílɛ̀"}
+    }
     Languages%menu{
-        zh{"Sháídà, Mandrínì"}
+        zh{"Edè Sháínà, Mandárínì"}
     }
     Languages%short{
         en_GB{"Èdè Gɛ̀ɛ́sì (GB)"}
@@ -109,17 +115,17 @@
     }
     Types{
         calendar{
-            buddhist{"Kàlɛ̀ńdà Buddhist"}
-            chinese{"Kàlɛ̀ńdà ti Sháìnà"}
-            dangi{"Kàlɛ̀ńdà dangi"}
-            ethiopic{"Kàlɛ̀ńdà Ɛtíópíìkì"}
+            buddhist{"Kàlɛ́ńdà Buddhist"}
+            chinese{"Kàlɛ́ńdà ti Sháìnà"}
+            dangi{"Kàlɛ́ńdà dangi"}
+            ethiopic{"Kàlɛ́ńdà Ɛtíópíìkì"}
             gregorian{"Kàlɛ́ńdà Gregory"}
-            hebrew{"Kàlɛ̀ńdà Hébérù"}
-            islamic{"Kàlɛ̀ńdà Lárúbáwá"}
+            hebrew{"Kàlɛ́ńdà Hébérù"}
+            islamic{"Kàlɛ́ńdà Lárúbáwá"}
             iso8601{"Kàlɛ́ńdà ISO-8601"}
-            japanese{"Kàlɛ̀ńdà ti Jàpánù"}
-            persian{"Kàlɛ̀ńdà Pásíànù"}
-            roc{"Kàlɛ̀ńdà Minguo"}
+            japanese{"Kàlɛ́ńdà ti Jàpánù"}
+            persian{"Kàlɛ́ńdà Pásíànù"}
+            roc{"Kàlɛ́ńdà Minguo"}
         }
         cf{
             account{"Ìgúnrégé Ìshirò Owó Kɔ́rɛ́ńsì"}
@@ -172,7 +178,6 @@
             tibt{"Àwɔn díjíìtì Tibetán"}
         }
     }
-    Version{"37"}
     codePatterns{
         script{"Ìshɔwɔ́kɔ̀wé: {0}"}
     }
diff --git a/icu4c/source/data/lang/yue.txt b/icu4c/source/data/lang/yue.txt
index 85f7ece..aa52f8c 100644
--- a/icu4c/source/data/lang/yue.txt
+++ b/icu4c/source/data/lang/yue.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue{
     Keys{
         calendar{"曆法"}
@@ -1031,7 +1032,6 @@
         VALLADER{"瑞士瓦勒德方言"}
         WADEGILE{"威妥瑪式拼音"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — 全部"}
         category-list{"{0}: {1}"}
@@ -1045,6 +1045,8 @@
         strokes{
             other{"{0}斜線"}
         }
+        subscript{"下標 {0}"}
+        superscript{"上標 {0}"}
     }
     codePatterns{
         language{"語言:{0}"}
diff --git a/icu4c/source/data/lang/yue_CN.txt b/icu4c/source/data/lang/yue_CN.txt
index 26d4356..2a3cc8a 100644
--- a/icu4c/source/data/lang/yue_CN.txt
+++ b/icu4c/source/data/lang/yue_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_CN{
     "%%ALIAS"{"yue_Hans_CN"}
 }
diff --git a/icu4c/source/data/lang/yue_HK.txt b/icu4c/source/data/lang/yue_HK.txt
index 29a7459..7bce3c5 100644
--- a/icu4c/source/data/lang/yue_HK.txt
+++ b/icu4c/source/data/lang/yue_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_HK{
     "%%ALIAS"{"yue_Hant_HK"}
 }
diff --git a/icu4c/source/data/lang/yue_Hans.txt b/icu4c/source/data/lang/yue_Hans.txt
index 5025f74..5b81d9c 100644
--- a/icu4c/source/data/lang/yue_Hans.txt
+++ b/icu4c/source/data/lang/yue_Hans.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_Hans{
     %%Parent{"root"}
     Keys{
@@ -1032,7 +1033,6 @@
         VALLADER{"瑞士瓦勒德方言"}
         WADEGILE{"威妥玛式拼音"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — 全部"}
         category-list{"{0}: {1}"}
@@ -1046,6 +1046,8 @@
         strokes{
             other{"{0}斜线"}
         }
+        subscript{"下标 {0}"}
+        superscript{"上标 {0}"}
     }
     codePatterns{
         language{"语言:{0}"}
diff --git a/icu4c/source/data/lang/yue_Hans_CN.txt b/icu4c/source/data/lang/yue_Hans_CN.txt
index 479d125..07edcb8 100644
--- a/icu4c/source/data/lang/yue_Hans_CN.txt
+++ b/icu4c/source/data/lang/yue_Hans_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/yue_Hant.txt b/icu4c/source/data/lang/yue_Hant.txt
index 8f39812..f1fb01c 100644
--- a/icu4c/source/data/lang/yue_Hant.txt
+++ b/icu4c/source/data/lang/yue_Hant.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_Hant{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/yue_Hant_HK.txt b/icu4c/source/data/lang/yue_Hant_HK.txt
index 9adeba7..e2bb01d 100644
--- a/icu4c/source/data/lang/yue_Hant_HK.txt
+++ b/icu4c/source/data/lang/yue_Hant_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/zgh.txt b/icu4c/source/data/lang/zgh.txt
index d375da7..f7e69dc 100644
--- a/icu4c/source/data/lang/zgh.txt
+++ b/icu4c/source/data/lang/zgh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zgh{
     Keys{
         calendar{"ⴰⵙⵎⵍⵓⵙⵙⴰⵏ"}
@@ -61,5 +62,4 @@
             islamic{"ⴰⵙⵎⵍⵓⵙⵙⴰⵏ ⵏ ⵍⵉⵙⵍⴰⵎ"}
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/zh.txt b/icu4c/source/data/lang/zh.txt
index 223df4c..ed153e3 100644
--- a/icu4c/source/data/lang/zh.txt
+++ b/icu4c/source/data/lang/zh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh{
     Keys{
         calendar{"日历"}
@@ -132,7 +133,7 @@
         dje{"哲尔马语"}
         doi{"多格拉语"}
         dsb{"下索布语"}
-        dua{"都阿拉语"}
+        dua{"杜阿拉语"}
         dum{"中古荷兰语"}
         dv{"迪维希语"}
         dyo{"朱拉语"}
@@ -159,7 +160,7 @@
         es_MX{"墨西哥西班牙语"}
         et{"爱沙尼亚语"}
         eu{"巴斯克语"}
-        ewo{"旺杜语"}
+        ewo{"埃翁多语"}
         fa{"波斯语"}
         fa_AF{"达里语"}
         fan{"芳格语"}
@@ -565,7 +566,6 @@
     }
     Languages%menu{
         ars{"阿拉伯语(纳吉迪)"}
-        ckb{"库尔德语(索拉尼)"}
         yue{"广东话"}
         zh{"普通话"}
     }
@@ -1070,7 +1070,6 @@
         WADEGILE{"WG 威氏拼音法"}
         XSISTEMO{"西西斯特莫方言"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — 全部"}
         category-list{"{0}: {1}"}
@@ -1084,6 +1083,8 @@
         strokes{
             other{"{0}笔"}
         }
+        subscript{"下标{0}"}
+        superscript{"上标{0}"}
     }
     codePatterns{
         language{"语言:{0}"}
diff --git a/icu4c/source/data/lang/zh_CN.txt b/icu4c/source/data/lang/zh_CN.txt
index c915161..0136d26 100644
--- a/icu4c/source/data/lang/zh_CN.txt
+++ b/icu4c/source/data/lang/zh_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_CN{
     "%%ALIAS"{"zh_Hans_CN"}
 }
diff --git a/icu4c/source/data/lang/zh_HK.txt b/icu4c/source/data/lang/zh_HK.txt
index fe72a0e..c34c98f 100644
--- a/icu4c/source/data/lang/zh_HK.txt
+++ b/icu4c/source/data/lang/zh_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_HK{
     "%%ALIAS"{"zh_Hant_HK"}
 }
diff --git a/icu4c/source/data/lang/zh_Hans.txt b/icu4c/source/data/lang/zh_Hans.txt
index 72c418e..58a5386 100644
--- a/icu4c/source/data/lang/zh_Hans.txt
+++ b/icu4c/source/data/lang/zh_Hans.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hans{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/zh_Hans_CN.txt b/icu4c/source/data/lang/zh_Hans_CN.txt
index 70a6a77..333ba54 100644
--- a/icu4c/source/data/lang/zh_Hans_CN.txt
+++ b/icu4c/source/data/lang/zh_Hans_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/zh_Hans_SG.txt b/icu4c/source/data/lang/zh_Hans_SG.txt
index 498813b..5e0fabf 100644
--- a/icu4c/source/data/lang/zh_Hans_SG.txt
+++ b/icu4c/source/data/lang/zh_Hans_SG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/zh_Hant.txt b/icu4c/source/data/lang/zh_Hant.txt
index 9967d08..4cc4381 100644
--- a/icu4c/source/data/lang/zh_Hant.txt
+++ b/icu4c/source/data/lang/zh_Hant.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant{
     %%Parent{"root"}
     Keys{
@@ -631,6 +632,8 @@
     }
     Languages%menu{
         ars{"阿拉伯文(納吉迪)"}
+    }
+    Languages%variant{
         ckb{"庫德文(索拉尼)"}
     }
     Scripts{
@@ -748,7 +751,7 @@
         Ogam{"歐甘文"}
         Olck{"桑塔利文"}
         Orkh{"鄂爾渾文"}
-        Orya{"歐利亞文"}
+        Orya{"歐迪亞文"}
         Osge{"歐塞奇文"}
         Osma{"歐斯曼亞文"}
         Palm{"帕米瑞拉文字"}
@@ -841,7 +844,7 @@
             iso8601{"ISO 8601 國際曆法"}
             japanese{"日本曆"}
             persian{"波斯曆"}
-            roc{"民國曆"}
+            roc{"國曆"}
         }
         cf{
             account{"會計貨幣格式"}
@@ -981,7 +984,7 @@
             native{"原始數字"}
             nkoo{"曼德數字"}
             olck{"桑塔利文數字"}
-            orya{"歐利亞數字"}
+            orya{"歐迪亞數字"}
             osma{"奧斯曼亞數字"}
             roman{"羅馬數字"}
             romanlow{"小寫羅馬數字"}
@@ -1078,7 +1081,6 @@
         VALLADER{"瑞士瓦勒德方言"}
         WADEGILE{"威妥瑪式拼音"}
     }
-    Version{"37"}
     characterLabelPattern{
         all{"{0} — 全部"}
         category-list{"{0}: {1}"}
@@ -1092,6 +1094,8 @@
         strokes{
             other{"{0} 畫"}
         }
+        subscript{"下標 {0}"}
+        superscript{"上標 {0}"}
     }
     codePatterns{
         language{"語言:{0}"}
diff --git a/icu4c/source/data/lang/zh_Hant_HK.txt b/icu4c/source/data/lang/zh_Hant_HK.txt
index 7e17da2..042bcf1 100644
--- a/icu4c/source/data/lang/zh_Hant_HK.txt
+++ b/icu4c/source/data/lang/zh_Hant_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant_HK{
     Keys{
         ms{"度量衡系統"}
@@ -127,7 +128,6 @@
         REVISED{"已修訂拼字法"}
         SCOTLAND{"蘇格蘭標準英語"}
     }
-    Version{"37"}
     characterLabelPattern{
         enclosed{"{0} — 包含"}
         historic{"{0} — 舊式"}
diff --git a/icu4c/source/data/lang/zh_Hant_MO.txt b/icu4c/source/data/lang/zh_Hant_MO.txt
index 670cffc..1f5fac8 100644
--- a/icu4c/source/data/lang/zh_Hant_MO.txt
+++ b/icu4c/source/data/lang/zh_Hant_MO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant_MO{
     %%Parent{"zh_Hant_HK"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/lang/zh_Hant_TW.txt b/icu4c/source/data/lang/zh_Hant_TW.txt
index b62ad69..b079f20 100644
--- a/icu4c/source/data/lang/zh_Hant_TW.txt
+++ b/icu4c/source/data/lang/zh_Hant_TW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/lang/zh_MO.txt b/icu4c/source/data/lang/zh_MO.txt
index 6565bf7..c6b2148 100644
--- a/icu4c/source/data/lang/zh_MO.txt
+++ b/icu4c/source/data/lang/zh_MO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_MO{
     "%%ALIAS"{"zh_Hant_MO"}
 }
diff --git a/icu4c/source/data/lang/zh_SG.txt b/icu4c/source/data/lang/zh_SG.txt
index bf27773..14136c3 100644
--- a/icu4c/source/data/lang/zh_SG.txt
+++ b/icu4c/source/data/lang/zh_SG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_SG{
     "%%ALIAS"{"zh_Hans_SG"}
 }
diff --git a/icu4c/source/data/lang/zh_TW.txt b/icu4c/source/data/lang/zh_TW.txt
index 9372c50..c54ccbf 100644
--- a/icu4c/source/data/lang/zh_TW.txt
+++ b/icu4c/source/data/lang/zh_TW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_TW{
     "%%ALIAS"{"zh_Hant_TW"}
 }
diff --git a/icu4c/source/data/lang/zu.txt b/icu4c/source/data/lang/zu.txt
index faadd1e..ab36041 100644
--- a/icu4c/source/data/lang/zu.txt
+++ b/icu4c/source/data/lang/zu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zu{
     Keys{
         calendar{"Ikhalenda"}
@@ -95,6 +96,7 @@
         de_CH{"Isi-Swiss High German"}
         dgr{"isi-Dogrib"}
         dje{"isi-Zarma"}
+        doi{"isi-Dogri"}
         dsb{"isi-Lower Sorbian"}
         dua{"isi-Duala"}
         dv{"isi-Divehi"}
@@ -115,7 +117,7 @@
         es{"isi-Spanish"}
         es_419{"isi-Latin American Spanish"}
         es_ES{"isi-European Spanish"}
-        es_MX{"Isi-Mexican Spanish"}
+        es_MX{"isi-Mexican Spanish"}
         et{"isi-Estonia"}
         eu{"isi-Basque"}
         ewo{"isi-Ewondo"}
@@ -130,6 +132,7 @@
         fr{"isi-French"}
         fr_CA{"isi-Canadian French"}
         fr_CH{"isi-Swiss French"}
+        frc{"isi-Cajun French"}
         fur{"isi-Friulian"}
         fy{"isi-Western Frisian"}
         ga{"isi-Irish"}
@@ -229,6 +232,7 @@
         lkt{"isi-Lakota"}
         ln{"isi-Lingala"}
         lo{"isi-Lao"}
+        lou{"isi-Louisiana Creole"}
         loz{"isi-Lozi"}
         lrc{"isi-Northern Luri"}
         lt{"isi-Lithuanian"}
@@ -426,12 +430,15 @@
         zgh{"isi-Moroccan Tamazight esivamile"}
         zh{"isi-Chinese"}
         zh_Hans{"isi-Chinese (esenziwe-lula)"}
-        zh_Hant{"isi-Chinese (Okosiko)"}
+        zh_Hant{"isi-Chinese (Sasendulo)"}
         zu{"isiZulu"}
         zun{"isi-Zuni"}
         zxx{"akukho okuqukethwe kolimi"}
         zza{"isi-Zaza"}
     }
+    Languages%long{
+        zh_Hant{"isi-Chinese (sasendulo)"}
+    }
     Languages%menu{
         yue{"isi-Chinese, Cantonese"}
         zh{"isi-Chinese, Mandarin"}
@@ -445,44 +452,169 @@
         ps{"isi-Pushto"}
     }
     Scripts{
+        Adlm{"isi-Adlam"}
+        Aghb{"isi-Caucasian Albanian"}
+        Ahom{"isi-Ahom"}
         Arab{"isi-Arabic"}
+        Aran{"i-Nastaliq"}
+        Armi{"isi-Imperial Aramaic"}
         Armn{"isi-Armenian"}
+        Avst{"isi-Avestan"}
+        Bali{"isi-Balinese"}
+        Bamu{"isi-Bamum"}
+        Bass{"isi-Bassa Vah"}
+        Batk{"isi-Batak"}
         Beng{"isi-Bangla"}
+        Bhks{"isi-Bhaiksuki"}
         Bopo{"isi-Bopomofo"}
+        Brah{"isi-Brahmi"}
         Brai{"i-Braille"}
+        Bugi{"isi-Buginese"}
+        Buhd{"isi-Buhid"}
+        Cakm{"isi-Chakma"}
+        Cans{"i-Unified Canadian Aboriginal Syllabics"}
+        Cari{"isi-Carian"}
+        Cham{"isi-Cham"}
+        Cher{"isi-Cherokee"}
+        Chrs{"isi-Chorasmian"}
+        Copt{"isi-Coptic"}
+        Cprt{"isi-Cypriot"}
         Cyrl{"isi-Cyrillic"}
         Deva{"isi-Devanagari"}
+        Diak{"isi-Dives Akuru"}
+        Dogr{"isi-Dogra"}
+        Dsrt{"isi-Deseret"}
+        Dupl{"isi-Duployan shorthand"}
+        Egyp{"i-Egyptian hieroglyphs"}
+        Elba{"isi-Elbasan"}
+        Elym{"isi-Elymaic"}
         Ethi{"isi-Ethiopic"}
         Geor{"isi-Georgian"}
+        Glag{"isi-Glagolitic"}
+        Gong{"isi-Gunjala Gondi"}
+        Gonm{"isi-Masaram Gondi"}
+        Goth{"isi-Gothic"}
+        Gran{"isi-Grantha"}
         Grek{"isi-Greek"}
         Gujr{"isi-Gujarati"}
         Guru{"isi-Gurmukhi"}
         Hanb{"isi-Hanb"}
         Hang{"isi-Hangul"}
         Hani{"isi-Han"}
+        Hano{"isi-Hanunoo"}
         Hans{"enziwe lula"}
         Hant{"okosiko"}
+        Hatr{"isi-Hatran"}
         Hebr{"isi-Hebrew"}
         Hira{"isi-Hiragana"}
+        Hluw{"isi-Anatolian Hieroglyphs"}
+        Hmng{"isi-Pahawh Hmong"}
+        Hmnp{"i-Nyiakeng Puachue Hmong"}
         Hrkt{"i-Japanese syllabaries"}
+        Hung{"isi-Old Hungarian"}
+        Ital{"i-Old Italic"}
         Jamo{"isi-Jamo"}
+        Java{"isi-Javanese"}
         Jpan{"isi-Japanese"}
+        Kali{"isi-Kayah Li"}
         Kana{"isi-Katakana"}
+        Khar{"isi-Kharoshthi"}
         Khmr{"isi-Khmer"}
+        Khoj{"isi-Khojki"}
+        Kits{"i-Khitan small script"}
         Knda{"isi-Kannada"}
         Kore{"isi-Korean"}
+        Kthi{"isi-Kaithi"}
+        Lana{"isi-Lanna"}
         Laoo{"isi-Lao"}
         Latn{"isi-Latin"}
+        Lepc{"isi-Lepcha"}
+        Limb{"isi-Limbu"}
+        Lina{"i-Linear A"}
+        Linb{"i-Linear B"}
+        Lisu{"isi-Fraser"}
+        Lyci{"i-Lycian"}
+        Lydi{"i-Lydian"}
+        Mahj{"i-Mahajani"}
+        Maka{"i-Makasar"}
+        Mand{"isi-Mandaean"}
+        Mani{"i-Manichaean"}
+        Marc{"i-Marchen"}
+        Medf{"i-Medefaidrin"}
+        Mend{"i-Mende"}
+        Merc{"i-Meroitic Cursive"}
+        Mero{"i-Meroitic"}
         Mlym{"isi-Malayalam"}
+        Modi{"i-Modi"}
         Mong{"isi-Mongolian"}
+        Mroo{"i-Mro"}
+        Mtei{"isi-Meitei Mayek"}
+        Mult{"i-Multani"}
         Mymr{"isi-Myanmar"}
+        Nand{"i-Nandinagari"}
+        Narb{"i-Old North Arabian"}
+        Nbat{"i-Nabataean"}
+        Nkoo{"isi-N’Ko"}
+        Nshu{"i-Nüshu"}
+        Ogam{"i-Ogham"}
+        Olck{"isi-Ol Chiki"}
+        Orkh{"i-Orkhon"}
         Orya{"isi-Odia"}
+        Osge{"isi-Osage"}
+        Osma{"i-Osmanya"}
+        Palm{"i-Palmyrene"}
+        Pauc{"i-Pau Cin Hau"}
+        Perm{"i-Old Permic"}
+        Phag{"i-Phags-pa"}
+        Phli{"i-Inscriptional Pahlavi"}
+        Phlp{"i-Psalter Pahlavi"}
+        Phnx{"i-Phoenician"}
+        Plrd{"isi-Pollard Phonetic"}
+        Prti{"i-Inscriptional Parthian"}
+        Qaag{"i-Zawgyi"}
+        Rjng{"i-Rejang"}
+        Rohg{"isi-Hanifi Rohingya"}
+        Runr{"i-Runic"}
+        Samr{"i-Samaritan"}
+        Sarb{"i-Old South Arabian"}
+        Saur{"isi-Saurashtra"}
+        Sgnw{"i-SignWriting"}
+        Shaw{"i-Shavian"}
+        Shrd{"i-Sharada"}
+        Sidd{"i-Siddham"}
+        Sind{"i-Khudawadi"}
         Sinh{"isi-Sinhala"}
+        Sogd{"i-Sogdian"}
+        Sogo{"i-Old Sogdian"}
+        Sora{"i-Sora Sompeng"}
+        Soyo{"i-Soyombo"}
+        Sund{"isi-Sundanese"}
+        Sylo{"isi-Syloti Nagri"}
+        Syrc{"isi-Syriac"}
+        Tagb{"i-Tagbanwa"}
+        Takr{"i-Takri"}
+        Tale{"isi-Tai Le"}
+        Talu{"isi-New Tai Lue"}
         Taml{"isi-Tamil"}
+        Tang{"i-Tangut"}
+        Tavt{"isi-Tai Viet"}
         Telu{"isi-Telugu"}
+        Tfng{"isi-Tifinagh"}
+        Tglg{"i-Tagalog"}
         Thaa{"isi-Thaana"}
         Thai{"isi-Thai"}
         Tibt{"i-Tibetan"}
+        Tirh{"i-Tirhuta"}
+        Ugar{"i-Ugaritic"}
+        Vaii{"isi-Vai"}
+        Wara{"i-Varang Kshiti"}
+        Wcho{"isi-Wancho"}
+        Xpeo{"i-Old Persian"}
+        Xsux{"i-Sumero-Akkadian Cuneiform"}
+        Yezi{"i-Yezidi"}
+        Yiii{"isi-Yi"}
+        Zanb{"i-Zanabazar Square"}
+        Zinh{"Okuthethwe"}
         Zmth{"i-Mathematical Notation"}
         Zsye{"i-Emoji"}
         Zsym{"amasimbuli"}
@@ -510,6 +642,9 @@
             indian{"i-Indian National Calender"}
             islamic{"Ikhalenda lesi-Islamic"}
             islamic-civil{"i-Islamic-Civil Calendar"}
+            islamic-rgsa{"Ikhalenda yesi-Islamic (Saudi Arabia, sighting)"}
+            islamic-tbla{"Ikhalenda yesi-Islamic (tabular, astronomical epoch)"}
+            islamic-umalqura{"Ikhalenda yesi-Islamic (Umm al-Qura)"}
             iso8601{"Ikhalenda le-ISO-8601"}
             japanese{"Ikhalenda lesi-Japanese"}
             persian{"Ikhalenda lesi-Persian"}
@@ -553,8 +688,11 @@
         }
         collation{
             big5han{"Ukuhlunga kwe-Traditional Chinese - Big5"}
-            dictionary{"Ukuhlunga kwesichazimazwi"}
+            compat{"Ukuhlunga Kwangaphambilini, ngokusebenzisana"}
+            dictionary{"Uhlelo Lokuhlunga Lesichazamazwi"}
             ducet{"Ukuhlunga okuzenzakalelayo kwe-Unicode"}
+            emoji{"Uhlelo Lokuhlunga le-Emoji"}
+            eor{"Imithetho Yokuhlunga ye-European"}
             gb2312han{"Ukuhlunga kwe-Simplified Chinese - GB2312"}
             phonebook{"Ukuhlunga kwebhuku lefoni"}
             phonetic{"Hlela Ngokwefonetiki"}
@@ -566,6 +704,7 @@
             stroke{"Ukuhlunga kwe-Stroke"}
             traditional{"Ukuhlunga ngokisiko"}
             unihan{"Ukuhlunga kwe-Radical-Stroke"}
+            zhuyin{"Ukuhlunga kwe-Zhuyin"}
         }
         d0{
             fwidth{"i-Fullwidth"}
@@ -593,16 +732,25 @@
             ussystem{"isistimu yokulinganisa yase-US"}
         }
         numbers{
+            ahom{"Izinombolo ze-Ahom"}
             arab{"amadijithi esi-Arabic-Indic"}
             arabext{"amadijithi esi-Arabic-Indic eluliwe"}
             armn{"izinombolo zesi-Armenian"}
             armnlow{"izinombolo ezincane zesi-Armenian"}
+            bali{"Izinombolo ze-Balinese"}
             beng{"izinombolo zesi-Bengali"}
+            brah{"Izinombolo ze-Brahmi"}
+            cakm{"Izinombolo ze-Chakma"}
+            cham{"Izinombolo ze-Cham"}
+            cyrl{"Izinombolo ze-Cyrillic"}
             deva{"izinombolo zesi-Devanagari"}
+            diak{"Izinombolo ze-Dives Akuru"}
             ethi{"izinombolo zesi-Ethiopic"}
             finance{"Izinombolo Zezomnotho"}
             fullwide{"ububanzi obugcwele bamadijithi"}
             geor{"izinombolo zesi-Georgian"}
+            gong{"Izinombolo ze-Gunjala Gondi"}
+            gonm{"Izinombolo ze-Masaram Gondi"}
             grek{"izinombolo zesi-Greek"}
             greklow{"izinombolo ezincane zesi-Greek"}
             gujr{"amadijithi esi-Gujarati"}
@@ -613,29 +761,166 @@
             hant{"izinombolo zosiko zesi-Chinese"}
             hantfin{"izinombolo zosiko zezezimali zesi-Chinese"}
             hebr{"izinombolo zesi-Hebrew"}
+            hmng{"Izinombolo ze-Pahawh Hmong"}
+            hmnp{"Izinombolo ze-Nyiakeng Puachue Hmong"}
+            java{"Izinombolo ze-Javanese"}
             jpan{"izinombolo zesi-Japanese"}
             jpanfin{"izinombolo zezezimali zesi-Japanese"}
+            kali{"Izinombolo ze-Kayah Li"}
             khmr{"amadijithi esi-Khmer"}
             knda{"amadijithi esi-Kannada"}
+            lana{"Izinombolo ze-Tai Tham Hora"}
+            lanatham{"Izinombolo ze-Tai Tham Tham"}
             laoo{"amadijithi esi-Lao"}
             latn{"amadijithi ase-Western"}
+            lepc{"Izinombolo ze-Lepcha"}
+            limb{"Izinombolo ze-Limbu"}
+            mathbold{"Izinombolo ze-Mathematical Bold"}
+            mathdbl{"Izinombolo ze-Mathematical Double-Struck"}
+            mathmono{"Izinombolo ze-Mathematical Monospace"}
+            mathsanb{"Izinombolo ze-Mathematical Sans-Serif Bold"}
+            mathsans{"Izinombolo ze-Mathematical Sans-Serif"}
             mlym{"amadijithi esi-Malayalam"}
+            modi{"Izinombolo ze-Modi"}
             mong{"i-Mongolian Digits"}
+            mroo{"Izinombolo ze-Mro"}
+            mtei{"Izinombolo ze-Meetei Mayek"}
             mymr{"amadijithi esi-Maynmar"}
+            mymrshan{"Izinombolo ze-Myanmar Shan"}
+            mymrtlng{"Izinombolo ze-Myanmar Tai Laing"}
             native{"Izinkinobho Zasendaweni"}
+            nkoo{"Izinombolo ze-N’Ko"}
+            olck{"Izinombolo ze-Ol Chiki"}
             orya{"Amadijithi ase-Odia"}
+            osma{"Izinombolo ze-Osmanya"}
+            rohg{"Izinombolo ze-Hanifi Rohingya"}
             roman{"izinombolo zesi-Roman"}
             romanlow{"izinombolo zesi-Tamil"}
+            saur{"Izinombolo ze-Saurashtra"}
+            shrd{"Izinombolo ze-Sharada"}
+            sind{"Izinombolo ze-Khudawadi"}
+            sinh{"Izinombolo ze-Sinhala Lith"}
+            sora{"Izinombolo ze-Sora Sompeng"}
+            sund{"Izinombolo ze-Sundanese"}
+            takr{"Izinombolo ze-Takri"}
+            talu{"Izinombolo ze-New Tai Lue"}
             taml{"izinombolo zesi-Tamil"}
             tamldec{"amadijithi esi-Tamil"}
             telu{"amadijithi esi-Telegu"}
             thai{"amadijithi esi-Thai"}
             tibt{"amadijithi esi-Tibetan"}
+            tirh{"Izinombolo ze-Tirhuta"}
             traditional{"Izinombolo Ezijwayelekile"}
             vaii{"Izinhlazu Zezinombolo ze-Vai"}
+            wara{"Izinombolo ze-Warang Citi"}
+            wcho{"Izinombolo ze-Wancho"}
         }
     }
-    Version{"37"}
+    Variants{
+        1606NICT{"Isi-French esimaphakathi kuya ku-1606"}
+        1694ACAD{"isi-French Samanje"}
+        1901{"Ubhalomagama lwase-German losiko"}
+        1959ACAD{"Okwemfundo"}
+        1994{"Ubhalomagama lwase-Russia olusezingeni"}
+        1996{"Ubhalomagama lwase-German lwango-1996"}
+        ABL1943{"Ukwakhiwa kobhalomagama kwango-1943"}
+        AKUAPEM{"i-AKUAPEM"}
+        ALALC97{"i-ALA-LC Romanization, i-edishini yango-1997"}
+        ALUKU{"Ulwimi lwesi-Aluku"}
+        AO1990{"Isivumelwano Sobhalomagama Lolwimi lesi-Portuguese sango-1990"}
+        ARANES{"i-ARANES"}
+        ASANTE{"i-ASANTE"}
+        AUVERN{"i-AUVERN"}
+        BAKU1926{"Uhlamvu lwesi-Turkic Latin oluhlanganisiwe"}
+        BALANKA{"Ulwimi lwe-Balank lwe-Anii"}
+        BARLA{"Iqembu lolwomi lwesi-Barlavento lwe-Kabuverdianu"}
+        BASICENG{"i-BASICENG"}
+        BAUDDHA{"i-BAUDDHA"}
+        BISCAYAN{"i-BISCAYAN"}
+        BISKE{"Ulwimi lwe-San Giorgio/Bila"}
+        BOHORIC{"Uhlambu lwe-Bohorič"}
+        BOONT{"i-Boontling"}
+        BORNHOLM{"i-BORNHOLM"}
+        CISAUP{"i-CISAUP"}
+        COLB1945{"Ubhalomagama lwe-Portuguese-Brazilian lwango-1945"}
+        CORNU{"i-CORNU"}
+        CREISS{"i-CREISS"}
+        DAJNKO{"Uhlamvu lwe-Dajnko"}
+        EKAVSK{"isi-Serbian esinokuphimisa kwe-Ekavian"}
+        EMODENG{"i-English Yesimanje"}
+        FONIPA{"Ifonotiki ye-IPA"}
+        FONKIRSH{"i-FONKIRSH"}
+        FONNAPA{"i-FONNAPA"}
+        FONUPA{"Ifonotiki ye-UPA"}
+        FONXSAMP{"i-FONXSAMP"}
+        GASCON{"i-GASCON"}
+        GRCLASS{"i-GRCLASS"}
+        GRITAL{"i-GRITAL"}
+        GRMISTR{"i-GRMISTR"}
+        HEPBURN{"i-Hepburn romanization"}
+        HOGNORSK{"i-HOGNORSK"}
+        HSISTEMO{"i-HSISTEMO"}
+        IJEKAVSK{"Isi-Serbian esinokuphimisa kwe-Ijekavian"}
+        ITIHASA{"i-ITIHASA"}
+        IVANCHOV{"i-IVANCHOV"}
+        JAUER{"i-JAUER"}
+        JYUTPING{"i-JYUTPING"}
+        KKCOR{"Ubhalomagama oluvamile"}
+        KOCIEWIE{"i-KOCIEWIE"}
+        KSCOR{"Ubhalomagama olusezingeni"}
+        LAUKIKA{"i-LAUKIKA"}
+        LEMOSIN{"i-LEMOSIN"}
+        LENGADOC{"i-LENGADOC"}
+        LIPAW{"Ulwimi lwesi-Lipovaz lase-Resian"}
+        LUNA1918{"i-LUNA1918"}
+        METELKO{"Uhlambu lwe-Metelko"}
+        MONOTON{"i-Monotonic"}
+        NDYUKA{"Ulwimi lwesi-Ndyuka"}
+        NEDIS{"Ulwimi lwesi-Natisone"}
+        NEWFOUND{"i-NEWFOUND"}
+        NICARD{"i-NICARD"}
+        NJIVA{"Ulwimi lwesi-Gniva/Njiva"}
+        NULIK{"i-Volapük yesimanje"}
+        OSOJS{"Ulwimi lwesi-Oseacco/Osojane"}
+        OXENDICT{
+            "Ukupela Kwesichazamazwi se-Oxford EnglishOxford English Dictionary spell"
+            "ing"
+        }
+        PAHAWH2{"i-PAHAWH2"}
+        PAHAWH3{"i-PAHAWH3"}
+        PAHAWH4{"i-PAHAWH4"}
+        PAMAKA{"ulwimi lwesi-Pamaka"}
+        PETR1708{"i-PETR1708"}
+        PINYIN{"i-Pinyin Romanization"}
+        POLYTON{"i-Polytonic"}
+        POSIX{"Ikhompyutha"}
+        PROVENC{"i-PROVENC"}
+        PUTER{"i-PUTER"}
+        REVISED{"Ubhalomagama Olubuyekeziwe"}
+        RIGIK{"I-Volapük Yakudala"}
+        ROZAJ{"i-Resian"}
+        RUMGR{"i-RUMGR"}
+        SAAHO{"i-Saho"}
+        SCOTLAND{"i-English Esezingeni ye-Scotish"}
+        SCOUSE{"i-Scouse"}
+        SIMPLE{"OKULULA"}
+        SOLBA{"Ulwimi lwesi-Stolvizza/Solbica"}
+        SOTAV{"Iqembu lolwimi lwesi-Sotavento lwe-Kabuverdianu"}
+        SPANGLIS{"i-SPANGLIS"}
+        SURMIRAN{"i-SURMIRAN"}
+        SURSILV{"i-SURSILV"}
+        SUTSILV{"i-SUTSILV"}
+        TARASK{"Ubhalomagama lwesi-Taraskievica"}
+        UCCOR{"Ubhalomagama Oluhlanganisiwe"}
+        ULSTER{"i-ULSTER"}
+        UNIFON{"Uhlamvu lwefonotiki lwe-Unifon"}
+        VAIDIKA{"i-VAIDIKA"}
+        VALENCIA{"i-Valencian"}
+        VALLADER{"i-VALLADER"}
+        VIVARAUP{"i-VIVARAUP"}
+        WADEGILE{"i-Wade-Giles Romanization"}
+        XSISTEMO{"i-XSISTEMO"}
+    }
     characterLabelPattern{
         all{"{0} — All"}
         category-list{"{0}: {1}"}
diff --git a/icu4c/source/data/locales/LOCALE_DEPS.json b/icu4c/source/data/locales/LOCALE_DEPS.json
index 681e78c..2508537 100644
--- a/icu4c/source/data/locales/LOCALE_DEPS.json
+++ b/icu4c/source/data/locales/LOCALE_DEPS.json
@@ -1,8 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 
 {
-    "cldrVersion": "37",
+    "cldrVersion": "38.1",
     "aliases": {
         "ars": "ar_SA",
         "az_AZ": "az_Latn_AZ",
@@ -33,7 +34,7 @@
         "sh_YU": "sr_Latn_RS",
         "shi_MA": "shi_Tfng_MA",
         "sr_BA": "sr_Cyrl_BA",
-        "sr_CS": "sr_Cyrl_RS",
+        "sr_CS": "sr_RS",
         "sr_Cyrl_CS": "sr_Cyrl_RS",
         "sr_Cyrl_YU": "sr_Cyrl_RS",
         "sr_Latn_CS": "sr_Latn_RS",
@@ -41,7 +42,7 @@
         "sr_ME": "sr_Latn_ME",
         "sr_RS": "sr_Cyrl_RS",
         "sr_XK": "sr_Cyrl_XK",
-        "sr_YU": "sr_Cyrl_RS",
+        "sr_YU": "sr_RS",
         "su_ID": "su_Latn_ID",
         "tl": "fil",
         "tl_PH": "fil_PH",
diff --git a/icu4c/source/data/locales/af.txt b/icu4c/source/data/locales/af.txt
index 01dc569..26b64db 100644
--- a/icu4c/source/data/locales/af.txt
+++ b/icu4c/source/data/locales/af.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 af{
     AuxExemplarCharacters{"[à å ä ã æ ç í ì ó ò ú ù ü ý]"}
     Ellipsis{
@@ -215,7 +216,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/af_NA.txt b/icu4c/source/data/locales/af_NA.txt
index 84fd2ba..c94650b 100644
--- a/icu4c/source/data/locales/af_NA.txt
+++ b/icu4c/source/data/locales/af_NA.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 af_NA{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/af_ZA.txt b/icu4c/source/data/locales/af_ZA.txt
index 2c56518..4e6de4d 100644
--- a/icu4c/source/data/locales/af_ZA.txt
+++ b/icu4c/source/data/locales/af_ZA.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 af_ZA{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/agq.txt b/icu4c/source/data/locales/agq.txt
index 7639af7..b84e018 100644
--- a/icu4c/source/data/locales/agq.txt
+++ b/icu4c/source/data/locales/agq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 agq{
     AuxExemplarCharacters{"[q r x]"}
     ExemplarCharacters{
@@ -23,7 +24,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/agq_CM.txt b/icu4c/source/data/locales/agq_CM.txt
index bce92cb..cd2777e 100644
--- a/icu4c/source/data/locales/agq_CM.txt
+++ b/icu4c/source/data/locales/agq_CM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 agq_CM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ak.txt b/icu4c/source/data/locales/ak.txt
index 7f11f6a..e81431e 100644
--- a/icu4c/source/data/locales/ak.txt
+++ b/icu4c/source/data/locales/ak.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ak{
     AuxExemplarCharacters{"[c j q v z]"}
     ExemplarCharacters{"[a b d e ɛ f g h i k l m n o ɔ p r s t u w y]"}
@@ -25,7 +26,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ak_GH.txt b/icu4c/source/data/locales/ak_GH.txt
index 6256b7f..ca46f3f 100644
--- a/icu4c/source/data/locales/ak_GH.txt
+++ b/icu4c/source/data/locales/ak_GH.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ak_GH{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/am.txt b/icu4c/source/data/locales/am.txt
index 23823f3..617db53 100644
--- a/icu4c/source/data/locales/am.txt
+++ b/icu4c/source/data/locales/am.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 am{
     Ellipsis{
         final{"{0}…"}
@@ -108,16 +109,16 @@
                         other{"¤000 ሺ"}
                     }
                     1000000{
-                        one{"¤0 ሜትር"}
-                        other{"¤0 ሜትር"}
+                        one{"¤0 ሚ"}
+                        other{"¤0 ሚ"}
                     }
                     10000000{
-                        one{"¤00 ሜትር"}
-                        other{"¤00 ሜትር"}
+                        one{"¤00 ሚ"}
+                        other{"¤00 ሚ"}
                     }
                     100000000{
-                        one{"¤000 ሜትር"}
-                        other{"¤000 ሜትር"}
+                        one{"¤000 ሚ"}
+                        other{"¤000 ሚ"}
                     }
                     1000000000{
                         one{"¤0 ቢ"}
@@ -158,16 +159,16 @@
                         other{"000 ሺ"}
                     }
                     1000000{
-                        one{"0 ሜትር"}
-                        other{"0 ሜትር"}
+                        one{"0 ሚ"}
+                        other{"0 ሚ"}
                     }
                     10000000{
-                        one{"00 ሜትር"}
-                        other{"00 ሜትር"}
+                        one{"00 ሚ"}
+                        other{"00 ሚ"}
                     }
                     100000000{
-                        one{"000ሜ"}
-                        other{"000ሜ"}
+                        one{"000 ሚ"}
+                        other{"000 ሚ"}
                     }
                     1000000000{
                         one{"0 ቢ"}
@@ -222,7 +223,6 @@
         minimumGroupingDigits{"1"}
         traditional{"ethi"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -876,6 +876,10 @@
                 MMM{"LLL"}
                 MMMEd{"E፣ MMM d"}
                 MMMMEd{"E፣ MMMM d"}
+                MMMMW{
+                    one{"ሳምንት W የ MMMM"}
+                    other{"ሳምንት W የ MMMM"}
+                }
                 MMMMd{"MMMM d"}
                 MMMd{"MMM d"}
                 Md{"M/d"}
@@ -2258,10 +2262,13 @@
     listPattern{
         or{
             2{"{0} ወይም {1}"}
-            end{"{0} ወይም {1}"}
+            end{"{0}፣ ወይም {1}"}
             middle{"{0}፣ {1}"}
             start{"{0}፣ {1}"}
         }
+        or-narrow{
+            end{"{0}፣ ወይም {1}"}
+        }
         standard{
             2{"{0} እና {1}"}
             end{"{0}, እና {1}"}
diff --git a/icu4c/source/data/locales/am_ET.txt b/icu4c/source/data/locales/am_ET.txt
index 856f6b3..e9ea747 100644
--- a/icu4c/source/data/locales/am_ET.txt
+++ b/icu4c/source/data/locales/am_ET.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 am_ET{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ar.txt b/icu4c/source/data/locales/ar.txt
index f0db400..39413c5 100644
--- a/icu4c/source/data/locales/ar.txt
+++ b/icu4c/source/data/locales/ar.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar{
     AuxExemplarCharacters{"[ـ\u200C\u200D\u200E\u200F پ چ ژ ڜ ڢ ڤ ڥ ٯ ڧ ڨ ک گ ی]"}
     Ellipsis{
@@ -160,100 +161,100 @@
             patternsShort{
                 currencyFormat{
                     1000{
-                        few{"¤ 0 ألف"}
-                        many{"¤ 0 ألف"}
-                        one{"¤ 0 ألف"}
-                        other{"¤ 0 ألف"}
-                        two{"¤ 0 ألف"}
-                        zero{"¤ 0 ألف"}
+                        few{"0 ألف ¤"}
+                        many{"0 ألف ¤"}
+                        one{"0 ألف ¤"}
+                        other{"0 ألف ¤"}
+                        two{"0 ألف ¤"}
+                        zero{"0 ألف ¤"}
                     }
                     10000{
-                        few{"¤ 00 ألف"}
-                        many{"¤ 00 ألف"}
-                        one{"¤ 00 ألف"}
-                        other{"¤ 00 ألف"}
-                        two{"¤ 00 ألف"}
-                        zero{"¤ 00 ألف"}
+                        few{"00 ألف ¤"}
+                        many{"00 ألف ¤"}
+                        one{"00 ألف ¤"}
+                        other{"00 ألف ¤"}
+                        two{"00 ألف ¤"}
+                        zero{"00 ألف ¤"}
                     }
                     100000{
-                        few{"¤ 000 ألف"}
-                        many{"¤ 000 ألف"}
-                        one{"¤ 000 ألف"}
-                        other{"¤ 000 ألف"}
-                        two{"¤ 000 ألف"}
-                        zero{"¤ 000 ألف"}
+                        few{"000 ألف ¤"}
+                        many{"000 ألف ¤"}
+                        one{"000 ألف ¤"}
+                        other{"000 ألف ¤"}
+                        two{"000 ألف ¤"}
+                        zero{"000 ألف ¤"}
                     }
                     1000000{
-                        few{"¤ 0 مليون"}
-                        many{"¤ 0 مليون"}
-                        one{"¤ 0 مليون"}
-                        other{"¤ 0 مليون"}
-                        two{"¤ 0 مليون"}
-                        zero{"¤ 0 مليون"}
+                        few{"0 مليون ¤"}
+                        many{"0 مليون ¤"}
+                        one{"0 مليون ¤"}
+                        other{"0 مليون ¤"}
+                        two{"0 مليون ¤"}
+                        zero{"0 مليون ¤"}
                     }
                     10000000{
-                        few{"¤ 00 مليون"}
-                        many{"¤ 00 مليون"}
-                        one{"¤ 00 مليون"}
-                        other{"¤ 00 مليون"}
-                        two{"¤ 00 مليون"}
-                        zero{"¤ 00 مليون"}
+                        few{"00 مليون ¤"}
+                        many{"00 مليون ¤"}
+                        one{"00 مليون ¤"}
+                        other{"00 مليون ¤"}
+                        two{"00 مليون ¤"}
+                        zero{"00 مليون ¤"}
                     }
                     100000000{
-                        few{"¤ 000 مليون"}
-                        many{"¤ 000 مليون"}
-                        one{"¤ 000 مليون"}
-                        other{"¤ 000 مليون"}
-                        two{"¤ 000 مليون"}
-                        zero{"¤ 000 مليون"}
+                        few{"000 مليون ¤"}
+                        many{"000 مليون ¤"}
+                        one{"000 مليون ¤"}
+                        other{"000 مليون ¤"}
+                        two{"000 مليون ¤"}
+                        zero{"000 مليون ¤"}
                     }
                     1000000000{
-                        few{"¤ 0 مليار"}
-                        many{"¤ 0 مليار"}
-                        one{"¤ 0 مليار"}
-                        other{"¤ 0 مليار"}
-                        two{"¤ 0 مليار"}
-                        zero{"¤ 0 مليار"}
+                        few{"0 مليار ¤"}
+                        many{"0 مليار ¤"}
+                        one{"0 مليار ¤"}
+                        other{"0 مليار ¤"}
+                        two{"0 مليار ¤"}
+                        zero{"0 مليار ¤"}
                     }
                     10000000000{
-                        few{"¤ 00 مليار"}
-                        many{"¤ 00 مليار"}
-                        one{"¤ 00 مليار"}
-                        other{"¤ 00 مليار"}
-                        two{"¤ 00 مليار"}
-                        zero{"¤ 00 مليار"}
+                        few{"00 مليار ¤"}
+                        many{"00 مليار ¤"}
+                        one{"00 مليار ¤"}
+                        other{"00 مليار ¤"}
+                        two{"00 مليار ¤"}
+                        zero{"00 مليار ¤"}
                     }
                     100000000000{
-                        few{"¤ 000 مليار"}
-                        many{"¤ 000 مليار"}
-                        one{"¤ 000 مليار"}
-                        other{"¤ 000 مليار"}
-                        two{"¤ 000 مليار"}
-                        zero{"¤ 000 مليار"}
+                        few{"000 مليار ¤"}
+                        many{"000 مليار ¤"}
+                        one{"000 مليار ¤"}
+                        other{"000 مليار ¤"}
+                        two{"000 مليار ¤"}
+                        zero{"000 مليار ¤"}
                     }
                     1000000000000{
-                        few{"¤ 0 ترليون"}
-                        many{"¤ 0 ترليون"}
-                        one{"¤ 0 ترليون"}
-                        other{"¤ 0 ترليون"}
-                        two{"¤ 0 ترليون"}
-                        zero{"¤ 0 ترليون"}
+                        few{"0 ترليون ¤"}
+                        many{"0 ترليون ¤"}
+                        one{"0 ترليون ¤"}
+                        other{"0 ترليون ¤"}
+                        two{"0 ترليون ¤"}
+                        zero{"0 ترليون ¤"}
                     }
                     10000000000000{
-                        few{"¤ 00 ترليون"}
-                        many{"¤ 00 ترليون"}
-                        one{"¤ 00 ترليون"}
-                        other{"¤ 00 ترليون"}
-                        two{"¤ 00 ترليون"}
-                        zero{"¤ 00 ترليون"}
+                        few{"00 ترليون ¤"}
+                        many{"00 ترليون ¤"}
+                        one{"00 ترليون ¤"}
+                        other{"00 ترليون ¤"}
+                        two{"00 ترليون ¤"}
+                        zero{"00 ترليون ¤"}
                     }
                     100000000000000{
-                        few{"¤ 000 ترليون"}
-                        many{"¤ 000 ترليون"}
-                        one{"¤ 000 ترليون"}
-                        other{"¤ 000 ترليون"}
-                        two{"¤ 000 ترليون"}
-                        zero{"¤ 000 ترليون"}
+                        few{"000 ترليون ¤"}
+                        many{"000 ترليون ¤"}
+                        one{"000 ترليون ¤"}
+                        other{"000 ترليون ¤"}
+                        two{"000 ترليون ¤"}
+                        zero{"000 ترليون ¤"}
                     }
                 }
                 decimalFormat{
@@ -385,7 +386,6 @@
         minimumGroupingDigits{"1"}
         native{"arab"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -529,11 +529,11 @@
                 "d MMMM y G",
                 "dd‏/MM‏/y G",
                 "d‏/M‏/y GGGGG",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
+                "{1} في {0}",
+                "{1} في {0}",
+                "{1} في {0}",
+                "{1} في {0}",
+                "{1} في {0}",
             }
             availableFormats{
                 Bh{"h B"}
@@ -555,7 +555,7 @@
                 Hm{"HH:mm"}
                 Hms{"HH:mm:ss"}
                 M{"L"}
-                MEd{"E، d/M"}
+                MEd{"E، d/‏M"}
                 MMM{"LLL"}
                 MMMEd{"E، d MMM"}
                 MMMMd{"d MMMM"}
@@ -579,6 +579,44 @@
                 yyyyQQQQ{"QQQQ y G"}
             }
             intervalFormats{
+                Gy{
+                    G{"y G – y G"}
+                    y{"y–y G"}
+                }
+                GyM{
+                    G{"MM-y GGGG – MM-y GGGG"}
+                    M{"MM-y – MM-y GGGG"}
+                    y{"MM-y – MM-y GGGG"}
+                }
+                GyMEd{
+                    G{"E, dd-MM-y GGGG – E, dd-MM-y GGGG"}
+                    M{"E, dd-MM-y – E, dd-MM-y GGGG"}
+                    d{"E, dd-MM-y – E, dd-MM-y GGGG"}
+                    y{"E, dd-MM-y – E,dd-MM-y GGGG"}
+                }
+                GyMMM{
+                    G{"MMM y G – MMM y G"}
+                    M{"MMM – MMM y G"}
+                    y{"MMM y – MMM y G"}
+                }
+                GyMMMEd{
+                    G{"E, d MMM y G – E, d MMM y G"}
+                    M{"E, d MMM – E, d MMM y G"}
+                    d{"E, d MMM – E, d MMM y G"}
+                    y{"E, d MMM y – E, d MMM y G"}
+                }
+                GyMMMd{
+                    G{"d MMM y G – d MMM y G"}
+                    M{"d MMM – d MMM y G"}
+                    d{"d–d MMM y G"}
+                    y{"d MMM y – d MMM y G"}
+                }
+                GyMd{
+                    G{"dd-MM-y GGGG – dd-MM-y GGGG"}
+                    M{"dd-MM-y – dd-MM-y GGGG"}
+                    d{"dd-MM-y – dd-MM-y GGGG"}
+                    y{"dd-MM-y – dd-MM-y GGGG"}
+                }
                 H{
                     H{"HH–HH"}
                 }
@@ -612,11 +650,11 @@
                 }
                 MMMd{
                     M{"d MMM – d MMM"}
-                    d{"MMM d–d"}
+                    d{"d–d MMM"}
                 }
                 Md{
-                    M{"M/d – M/d"}
-                    d{"M/d – M/d"}
+                    M{"d-M – d-M"}
+                    d{"d-M – d-M"}
                 }
                 d{
                     d{"d–d"}
@@ -699,11 +737,11 @@
                 "d MMMM y",
                 "dd‏/MM‏/y",
                 "d‏/M‏/y",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
+                "{1}, {0}",
+                "{1} في {0}",
+                "{1} في {0}",
+                "{1}, {0}",
+                "{1}, {0}",
             }
             appendItems{
                 Timezone{"{0} {1}"}
@@ -730,7 +768,7 @@
                 Hmsv{"HH:mm:ss v"}
                 Hmv{"HH:mm v"}
                 M{"L"}
-                MEd{"E، d/M"}
+                MEd{"E، d/‏M"}
                 MMM{"LLL"}
                 MMMEd{"E، d MMM"}
                 MMMMEd{"E، d MMMM"}
@@ -859,7 +897,7 @@
                         evening1{"مساءً"}
                         morning1{"فجرًا"}
                         morning2{"ص"}
-                        night1{"منتصف الليل"}
+                        night1{"في المساء"}
                         night2{"ليلاً"}
                     }
                     narrow{
@@ -875,9 +913,9 @@
                         afternoon1{"ظهرًا"}
                         afternoon2{"بعد الظهر"}
                         evening1{"مساءً"}
-                        morning1{"فجرًا"}
+                        morning1{"في الصباح"}
                         morning2{"صباحًا"}
-                        night1{"منتصف الليل"}
+                        night1{"في المساء"}
                         night2{"ليلاً"}
                     }
                 }
@@ -936,6 +974,44 @@
                 }
             }
             intervalFormats{
+                Gy{
+                    G{"y G – y G"}
+                    y{"y – y G"}
+                }
+                GyM{
+                    G{"MM-y GGGG – MM-y GGGG"}
+                    M{"MM-y – MM-y GGGG"}
+                    y{"MM-y – MM-y GGGG"}
+                }
+                GyMEd{
+                    G{"E, dd-MM-y GGGG – E, dd-MM-y GGGG"}
+                    M{"E, dd-MM-y – E, dd-MM-y GGGG"}
+                    d{"E, dd-MM-y – E, dd-MM-y GGGG"}
+                    y{"E, dd-MM-y – E, dd-MM-y GGGG"}
+                }
+                GyMMM{
+                    G{"MMM y G – MMM y G"}
+                    M{"MMM – MMM y G"}
+                    y{"MMM y – MMM y G"}
+                }
+                GyMMMEd{
+                    G{"E, d MMM y G – E, d MMM y G"}
+                    M{"E, d MMM – E, d MMM y G"}
+                    d{"E, d MMM – E, d MMM y G"}
+                    y{"E, d MMM y – E, d MMM y G"}
+                }
+                GyMMMd{
+                    G{"d MMM y G – d MMM y G"}
+                    M{"d MMM – d MMM y G"}
+                    d{"d–d MMM y G"}
+                    y{"d MMM y – d MMM y G"}
+                }
+                GyMd{
+                    G{"dd-MM-y GGGG – dd-MM-y GGGG"}
+                    M{"dd-MM-y – dd-MM-y GGGG"}
+                    d{"d-MM-y – d-MM-y GGGG"}
+                    y{"dd-MM-y – dd-MM-y GGGG"}
+                }
                 H{
                     H{"HH–HH"}
                 }
@@ -973,7 +1049,7 @@
                 }
                 Md{
                     M{"M/d – M/d"}
-                    d{"M/d – M/d"}
+                    d{"d-M – d-M"}
                 }
                 d{
                     d{"d–d"}
@@ -1176,11 +1252,11 @@
                 "d MMMM y G",
                 "dd‏/MM‏/y G",
                 "d‏/M‏/y GGGGG",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
+                "{1} في {0}",
+                "{1} في {0}",
+                "{1} في {0}",
+                "{1} في {0}",
+                "{1} في {0}",
             }
             eras{
                 abbreviated{
@@ -1268,11 +1344,11 @@
                 "d MMMM y G",
                 "d MMM y G",
                 "d‏/M‏/y GGGGG",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
+                "{1} في {0}",
+                "{1} في {0}",
+                "{1} في {0}",
+                "{1} في {0}",
+                "{1} في {0}",
             }
             availableFormats{
                 Bh{"h B"}
@@ -1294,7 +1370,7 @@
                 Hm{"HH:mm"}
                 Hms{"HH:mm:ss"}
                 M{"L"}
-                MEd{"E، d/M"}
+                MEd{"E، d/‏M"}
                 MMM{"LLL"}
                 MMMEd{"E، d MMM"}
                 MMMMd{"d MMMM"}
@@ -2992,7 +3068,7 @@
         }
     }
     measurementSystemNames{
-        UK{"المملكة المتحدة"}
+        UK{"النظام البريطاني"}
         US{"النظام الأمريكي"}
         metric{"النظام المتري"}
     }
@@ -3019,7 +3095,7 @@
         number{
             lenient{
                 "[\\-‒⁻₋−➖﹣-]",
-                "[,،٫、︐︑﹐﹑,、]",
+                "[,،٫⹁、︐︑﹐﹑,、]",
                 "[+⁺₊➕﬩﹢+]",
             }
         }
diff --git a/icu4c/source/data/locales/ar_001.txt b/icu4c/source/data/locales/ar_001.txt
index 17417fe..5a1bf2a 100644
--- a/icu4c/source/data/locales/ar_001.txt
+++ b/icu4c/source/data/locales/ar_001.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_001{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ar_AE.txt b/icu4c/source/data/locales/ar_AE.txt
index 8ce37ea..d7c6736 100644
--- a/icu4c/source/data/locales/ar_AE.txt
+++ b/icu4c/source/data/locales/ar_AE.txt
@@ -1,10 +1,10 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_AE{
     NumberElements{
         default{"arab"}
     }
-    Version{"37"}
     calendar{
         gregorian{
             eras{
diff --git a/icu4c/source/data/locales/ar_BH.txt b/icu4c/source/data/locales/ar_BH.txt
index ecf88a6..d99a10b 100644
--- a/icu4c/source/data/locales/ar_BH.txt
+++ b/icu4c/source/data/locales/ar_BH.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_BH{
     NumberElements{
         default{"arab"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ar_DJ.txt b/icu4c/source/data/locales/ar_DJ.txt
index c0678e3..cb18edc 100644
--- a/icu4c/source/data/locales/ar_DJ.txt
+++ b/icu4c/source/data/locales/ar_DJ.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_DJ{
     NumberElements{
         default{"arab"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ar_DZ.txt b/icu4c/source/data/locales/ar_DZ.txt
index d93bf90..d758bd3 100644
--- a/icu4c/source/data/locales/ar_DZ.txt
+++ b/icu4c/source/data/locales/ar_DZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_DZ{
     ExemplarCharactersNumbers{"[\u200E \\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     NumberElements{
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             monthNames{
diff --git a/icu4c/source/data/locales/ar_EG.txt b/icu4c/source/data/locales/ar_EG.txt
index e78fd2e..d411376 100644
--- a/icu4c/source/data/locales/ar_EG.txt
+++ b/icu4c/source/data/locales/ar_EG.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_EG{
     NumberElements{
         default{"arab"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ar_EH.txt b/icu4c/source/data/locales/ar_EH.txt
index a2281d0..e0fb5a1 100644
--- a/icu4c/source/data/locales/ar_EH.txt
+++ b/icu4c/source/data/locales/ar_EH.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_EH{
     NumberElements{
         default{"latn"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ar_ER.txt b/icu4c/source/data/locales/ar_ER.txt
index 7c831ee..95a4426 100644
--- a/icu4c/source/data/locales/ar_ER.txt
+++ b/icu4c/source/data/locales/ar_ER.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_ER{
     NumberElements{
         default{"arab"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ar_IL.txt b/icu4c/source/data/locales/ar_IL.txt
index a56baf0..aa07218 100644
--- a/icu4c/source/data/locales/ar_IL.txt
+++ b/icu4c/source/data/locales/ar_IL.txt
@@ -1,10 +1,10 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_IL{
     NumberElements{
         default{"arab"}
     }
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
@@ -16,11 +16,11 @@
                 "d MMMM y",
                 "dd‏/MM‏/y",
                 "d‏/M‏/y",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
+                "{1}, {0}",
+                "{1} في {0}",
+                "{1} في {0}",
+                "{1}, {0}",
+                "{1}, {0}",
             }
         }
     }
diff --git a/icu4c/source/data/locales/ar_IQ.txt b/icu4c/source/data/locales/ar_IQ.txt
index 2c843b0..75c6e6d 100644
--- a/icu4c/source/data/locales/ar_IQ.txt
+++ b/icu4c/source/data/locales/ar_IQ.txt
@@ -1,10 +1,10 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_IQ{
     NumberElements{
         default{"arab"}
     }
-    Version{"37"}
     calendar{
         gregorian{
             monthNames{
diff --git a/icu4c/source/data/locales/ar_JO.txt b/icu4c/source/data/locales/ar_JO.txt
index e3a82f5..405d8b3 100644
--- a/icu4c/source/data/locales/ar_JO.txt
+++ b/icu4c/source/data/locales/ar_JO.txt
@@ -1,10 +1,10 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_JO{
     NumberElements{
         default{"arab"}
     }
-    Version{"37"}
     calendar{
         gregorian{
             monthNames{
diff --git a/icu4c/source/data/locales/ar_KM.txt b/icu4c/source/data/locales/ar_KM.txt
index 81e3f25..c9fb51e 100644
--- a/icu4c/source/data/locales/ar_KM.txt
+++ b/icu4c/source/data/locales/ar_KM.txt
@@ -1,10 +1,10 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_KM{
     NumberElements{
         default{"arab"}
     }
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
@@ -16,11 +16,11 @@
                 "d MMMM y",
                 "dd‏/MM‏/y",
                 "d‏/M‏/y",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
+                "{1}, {0}",
+                "{1} في {0}",
+                "{1} في {0}",
+                "{1}, {0}",
+                "{1}, {0}",
             }
         }
     }
diff --git a/icu4c/source/data/locales/ar_KW.txt b/icu4c/source/data/locales/ar_KW.txt
index 0fc9092..b83b5a0 100644
--- a/icu4c/source/data/locales/ar_KW.txt
+++ b/icu4c/source/data/locales/ar_KW.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_KW{
     NumberElements{
         default{"arab"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ar_LB.txt b/icu4c/source/data/locales/ar_LB.txt
index a5cce33..4a0e6df 100644
--- a/icu4c/source/data/locales/ar_LB.txt
+++ b/icu4c/source/data/locales/ar_LB.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_LB{
     ExemplarCharactersNumbers{"[\u200E \\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     NumberElements{
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             monthNames{
diff --git a/icu4c/source/data/locales/ar_LY.txt b/icu4c/source/data/locales/ar_LY.txt
index 93893e1..a3d15c2 100644
--- a/icu4c/source/data/locales/ar_LY.txt
+++ b/icu4c/source/data/locales/ar_LY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_LY{
     ExemplarCharactersNumbers{"[\u200E \\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     NumberElements{
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             dayPeriod{
@@ -22,7 +22,7 @@
                         evening1{"مساءً"}
                         morning1{"فجرًا"}
                         morning2{"ص"}
-                        night1{"منتصف الليل"}
+                        night1{"في المساء"}
                         night2{"ل"}
                     }
                 }
diff --git a/icu4c/source/data/locales/ar_MA.txt b/icu4c/source/data/locales/ar_MA.txt
index c0b3e07..de23d2d 100644
--- a/icu4c/source/data/locales/ar_MA.txt
+++ b/icu4c/source/data/locales/ar_MA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_MA{
     AuxExemplarCharacters{"[\u200C\u200D\u200E\u200F پ چ ژ ڜ ڢ ڤ ڥ ٯ ڧ ڨ ک ڭ گ ݣ ی]"}
     ExemplarCharactersNumbers{"[\u200E \\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
@@ -12,7 +13,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
@@ -24,11 +24,11 @@
                 "d MMMM y",
                 "dd‏/MM‏/y",
                 "d‏/M‏/y",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
+                "{1}, {0}",
+                "{1} في {0}",
+                "{1} في {0}",
+                "{1}, {0}",
+                "{1}, {0}",
             }
             monthNames{
                 format{
diff --git a/icu4c/source/data/locales/ar_MR.txt b/icu4c/source/data/locales/ar_MR.txt
index adf1436..0df5513 100644
--- a/icu4c/source/data/locales/ar_MR.txt
+++ b/icu4c/source/data/locales/ar_MR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_MR{
     ExemplarCharactersNumbers{"[\u200E \\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     NumberElements{
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             monthNames{
diff --git a/icu4c/source/data/locales/ar_OM.txt b/icu4c/source/data/locales/ar_OM.txt
index cff6871..e0b0ccf 100644
--- a/icu4c/source/data/locales/ar_OM.txt
+++ b/icu4c/source/data/locales/ar_OM.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_OM{
     NumberElements{
         default{"arab"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ar_PS.txt b/icu4c/source/data/locales/ar_PS.txt
index 9212f40..9d9d37a 100644
--- a/icu4c/source/data/locales/ar_PS.txt
+++ b/icu4c/source/data/locales/ar_PS.txt
@@ -1,10 +1,10 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_PS{
     NumberElements{
         default{"arab"}
     }
-    Version{"37"}
     calendar{
         gregorian{
             monthNames{
diff --git a/icu4c/source/data/locales/ar_QA.txt b/icu4c/source/data/locales/ar_QA.txt
index c35aa7b..6af35ae 100644
--- a/icu4c/source/data/locales/ar_QA.txt
+++ b/icu4c/source/data/locales/ar_QA.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_QA{
     NumberElements{
         default{"arab"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ar_SA.txt b/icu4c/source/data/locales/ar_SA.txt
index f3af2516..8641c15 100644
--- a/icu4c/source/data/locales/ar_SA.txt
+++ b/icu4c/source/data/locales/ar_SA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_SA{
     ExemplarCharactersNumbers{"[\u200E \\- ‑ , . ٪ ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     NumberElements{
@@ -10,7 +11,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             dayPeriod{
@@ -21,7 +21,7 @@
                         evening1{"مساءً"}
                         morning1{"فجرًا"}
                         morning2{"ص"}
-                        night1{"منتصف الليل"}
+                        night1{"في المساء"}
                         night2{"ل"}
                     }
                 }
diff --git a/icu4c/source/data/locales/ar_SD.txt b/icu4c/source/data/locales/ar_SD.txt
index e5af261..c3a48b3 100644
--- a/icu4c/source/data/locales/ar_SD.txt
+++ b/icu4c/source/data/locales/ar_SD.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_SD{
     NumberElements{
         default{"arab"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ar_SO.txt b/icu4c/source/data/locales/ar_SO.txt
index 1037e63..b190461 100644
--- a/icu4c/source/data/locales/ar_SO.txt
+++ b/icu4c/source/data/locales/ar_SO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_SO{
     ExemplarCharactersNumbers{"[\u200E \\- ‑ , . ٪ ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     NumberElements{
@@ -10,5 +11,4 @@
             }
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ar_SS.txt b/icu4c/source/data/locales/ar_SS.txt
index e9bfe1e..2ca1519 100644
--- a/icu4c/source/data/locales/ar_SS.txt
+++ b/icu4c/source/data/locales/ar_SS.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_SS{
     NumberElements{
         default{"arab"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ar_SY.txt b/icu4c/source/data/locales/ar_SY.txt
index 1bc8f85..9233d92 100644
--- a/icu4c/source/data/locales/ar_SY.txt
+++ b/icu4c/source/data/locales/ar_SY.txt
@@ -1,10 +1,10 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_SY{
     NumberElements{
         default{"arab"}
     }
-    Version{"37"}
     calendar{
         gregorian{
             monthNames{
diff --git a/icu4c/source/data/locales/ar_TD.txt b/icu4c/source/data/locales/ar_TD.txt
index 922ecea..d2583fe 100644
--- a/icu4c/source/data/locales/ar_TD.txt
+++ b/icu4c/source/data/locales/ar_TD.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_TD{
     NumberElements{
         default{"arab"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ar_TN.txt b/icu4c/source/data/locales/ar_TN.txt
index d64e49a..9bec1cd 100644
--- a/icu4c/source/data/locales/ar_TN.txt
+++ b/icu4c/source/data/locales/ar_TN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_TN{
     ExemplarCharactersNumbers{"[\u200E \\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     NumberElements{
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             monthNames{
diff --git a/icu4c/source/data/locales/ar_XB.txt b/icu4c/source/data/locales/ar_XB.txt
index a44daf5..a812dff 100644
--- a/icu4c/source/data/locales/ar_XB.txt
+++ b/icu4c/source/data/locales/ar_XB.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_XB{
-    AuxExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}
+    AuxExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z \u061C \u202E \u202C]"}
     NumberElements{
         default{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -471,7 +471,7 @@
                 "h:mm:ss a zzzz",
                 "h:mm:ss a z",
                 "h:mm:ss a",
-                "h:mm a",
+                "[H:mm]",
                 "EEEE, MMMM d, y",
                 "MMMM d, y",
                 "MMM d, y",
diff --git a/icu4c/source/data/locales/ar_YE.txt b/icu4c/source/data/locales/ar_YE.txt
index 28e660f..8331eb6 100644
--- a/icu4c/source/data/locales/ar_YE.txt
+++ b/icu4c/source/data/locales/ar_YE.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_YE{
     NumberElements{
         default{"arab"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ars.txt b/icu4c/source/data/locales/ars.txt
index 1f49ca1..92183f5 100644
--- a/icu4c/source/data/locales/ars.txt
+++ b/icu4c/source/data/locales/ars.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ars{
     "%%ALIAS"{"ar_SA"}
 }
diff --git a/icu4c/source/data/locales/as.txt b/icu4c/source/data/locales/as.txt
index d78914e..5853c3d 100644
--- a/icu4c/source/data/locales/as.txt
+++ b/icu4c/source/data/locales/as.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 as{
     AuxExemplarCharacters{"[\u200C\u200D ৲ ৎ র]"}
     Ellipsis{
@@ -239,7 +240,6 @@
         }
         native{"beng"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/as_IN.txt b/icu4c/source/data/locales/as_IN.txt
index c41b072..e75bd8a 100644
--- a/icu4c/source/data/locales/as_IN.txt
+++ b/icu4c/source/data/locales/as_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 as_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/asa.txt b/icu4c/source/data/locales/asa.txt
index 44e7f2e..2caeeb5 100644
--- a/icu4c/source/data/locales/asa.txt
+++ b/icu4c/source/data/locales/asa.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 asa{
     AuxExemplarCharacters{"[q x]"}
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p r s t u v w y z]"}
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/asa_TZ.txt b/icu4c/source/data/locales/asa_TZ.txt
index e5363ae..a0b2148 100644
--- a/icu4c/source/data/locales/asa_TZ.txt
+++ b/icu4c/source/data/locales/asa_TZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 asa_TZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ast.txt b/icu4c/source/data/locales/ast.txt
index b8b43a8..995c66b 100644
--- a/icu4c/source/data/locales/ast.txt
+++ b/icu4c/source/data/locales/ast.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ast{
     AuxExemplarCharacters{"[ª à ă â å ä ã ā æ ç è ĕ ê ë ē ì ĭ î ï ī j k º ò ŏ ô ö ø ō œ ù ŭ û ū w ÿ]"}
     Ellipsis{
@@ -236,7 +237,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ast_ES.txt b/icu4c/source/data/locales/ast_ES.txt
index d2d5219..c1cf4f1 100644
--- a/icu4c/source/data/locales/ast_ES.txt
+++ b/icu4c/source/data/locales/ast_ES.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ast_ES{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/az.txt b/icu4c/source/data/locales/az.txt
index 8e8fe0a..478d0d3 100644
--- a/icu4c/source/data/locales/az.txt
+++ b/icu4c/source/data/locales/az.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az{
     AuxExemplarCharacters{"[w]"}
     Ellipsis{
@@ -189,6 +190,7 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{","}
                 exponential{"E"}
                 group{"."}
@@ -218,7 +220,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -867,16 +868,16 @@
                     }
                     wide{
                         "yanvar",
-                        "Fevral",
+                        "fevral",
                         "mart",
-                        "Aprel",
-                        "May",
-                        "İyun",
-                        "İyul",
-                        "Avqust",
-                        "Sentyabr",
-                        "Oktyabr",
-                        "Noyabr",
+                        "aprel",
+                        "may",
+                        "iyun",
+                        "iyul",
+                        "avqust",
+                        "sentyabr",
+                        "oktyabr",
+                        "noyabr",
                         "dekabr",
                     }
                 }
diff --git a/icu4c/source/data/locales/az_AZ.txt b/icu4c/source/data/locales/az_AZ.txt
index caf84c0..8932e86 100644
--- a/icu4c/source/data/locales/az_AZ.txt
+++ b/icu4c/source/data/locales/az_AZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_AZ{
     "%%ALIAS"{"az_Latn_AZ"}
 }
diff --git a/icu4c/source/data/locales/az_Cyrl.txt b/icu4c/source/data/locales/az_Cyrl.txt
index 5a7b2a0..acf2c56 100644
--- a/icu4c/source/data/locales/az_Cyrl.txt
+++ b/icu4c/source/data/locales/az_Cyrl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_Cyrl{
     %%Parent{"root"}
     AuxExemplarCharacters{"[ц щ ъ ь э ю я]"}
@@ -27,7 +28,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/az_Cyrl_AZ.txt b/icu4c/source/data/locales/az_Cyrl_AZ.txt
index 2e74f2a..749a2cc 100644
--- a/icu4c/source/data/locales/az_Cyrl_AZ.txt
+++ b/icu4c/source/data/locales/az_Cyrl_AZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_Cyrl_AZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/az_Latn.txt b/icu4c/source/data/locales/az_Latn.txt
index 6022c58..6464d2e 100644
--- a/icu4c/source/data/locales/az_Latn.txt
+++ b/icu4c/source/data/locales/az_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/az_Latn_AZ.txt b/icu4c/source/data/locales/az_Latn_AZ.txt
index 0abea63..6c53b50 100644
--- a/icu4c/source/data/locales/az_Latn_AZ.txt
+++ b/icu4c/source/data/locales/az_Latn_AZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_Latn_AZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/bas.txt b/icu4c/source/data/locales/bas.txt
index c17c824..03153ac 100644
--- a/icu4c/source/data/locales/bas.txt
+++ b/icu4c/source/data/locales/bas.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bas{
     AuxExemplarCharacters{"[q x]"}
     ExemplarCharacters{
@@ -24,7 +25,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/bas_CM.txt b/icu4c/source/data/locales/bas_CM.txt
index 634bcdc..c45fd9a 100644
--- a/icu4c/source/data/locales/bas_CM.txt
+++ b/icu4c/source/data/locales/bas_CM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bas_CM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/be.txt b/icu4c/source/data/locales/be.txt
index 0c5ccb7..2d30eb8 100644
--- a/icu4c/source/data/locales/be.txt
+++ b/icu4c/source/data/locales/be.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 be{
     AuxExemplarCharacters{
         "[{а\u0301} {е\u0301} {ё\u0301} {і\u0301} {о\u0301} {у\u0301} {ы\u0301} {э"
@@ -14,7 +15,7 @@
         word-medial{"{0} … {1}"}
     }
     ExemplarCharacters{"[а б в г д {дж} {дз} е ё ж з і й к л м н о п р с т у ў ф х ц ч ш ы ь э ю я]"}
-    ExemplarCharactersIndex{"[А Б В Г Д Е Ж З І Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Ы Э Ю Я]"}
+    ExemplarCharactersIndex{"[А Б В Г Д Е Ё Ж З І Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Ы Ь Э Ю Я]"}
     ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . « » ( ) \\[ \\] \\{ \\}]"}
     MoreInformation{"?"}
@@ -261,6 +262,7 @@
                 }
             }
             symbols{
+                approximatelySign{"≈"}
                 decimal{","}
                 exponential{"E"}
                 group{" "}
@@ -289,7 +291,6 @@
         minimumGroupingDigits{"2"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/be_BY.txt b/icu4c/source/data/locales/be_BY.txt
index fa47e07..970036c 100644
--- a/icu4c/source/data/locales/be_BY.txt
+++ b/icu4c/source/data/locales/be_BY.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 be_BY{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/bem.txt b/icu4c/source/data/locales/bem.txt
index c0d5ec6..5d7dbcb 100644
--- a/icu4c/source/data/locales/bem.txt
+++ b/icu4c/source/data/locales/bem.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bem{
     AuxExemplarCharacters{"[d h q r v x z]"}
     ExemplarCharacters{"[a b c e f g i j k l m n o p s {sh} t u w y]"}
@@ -12,7 +13,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/bem_ZM.txt b/icu4c/source/data/locales/bem_ZM.txt
index 9f100ab..48fcb09 100644
--- a/icu4c/source/data/locales/bem_ZM.txt
+++ b/icu4c/source/data/locales/bem_ZM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bem_ZM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/bez.txt b/icu4c/source/data/locales/bez.txt
index d33348a..2eac732 100644
--- a/icu4c/source/data/locales/bez.txt
+++ b/icu4c/source/data/locales/bez.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bez{
     AuxExemplarCharacters{"[x]"}
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w y z]"}
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/bez_TZ.txt b/icu4c/source/data/locales/bez_TZ.txt
index a5385b8..e19fa2b 100644
--- a/icu4c/source/data/locales/bez_TZ.txt
+++ b/icu4c/source/data/locales/bez_TZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bez_TZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/bg.txt b/icu4c/source/data/locales/bg.txt
index 48c80f8..b062e14 100644
--- a/icu4c/source/data/locales/bg.txt
+++ b/icu4c/source/data/locales/bg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bg{
     AuxExemplarCharacters{"[{а\u0300} ѐ ё ѝ {о\u0300} {у\u0300} {ъ\u0300} ы ѣ э {ю\u0300} {я\u0300} ѫ]"}
     Ellipsis{
@@ -13,7 +14,7 @@
     ExemplarCharacters{"[а б в г д е ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ь ю я]"}
     ExemplarCharactersIndex{"[А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ю Я]"}
     ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
-    ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ ( ) \\[ \\] § * / ″ №]"}
+    ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ ( ) \\[ \\] § @ * / ″ №]"}
     MoreInformation{"?"}
     NumberElements{
         default{"latn"}
@@ -212,14 +213,13 @@
         minimumGroupingDigits{"2"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
-                "H:mm:ss zzzz",
-                "H:mm:ss z",
-                "H:mm:ss",
-                "H:mm",
+                "H:mm:ss 'ч'. zzzz",
+                "H:mm:ss 'ч'. z",
+                "H:mm:ss 'ч'.",
+                "H:mm 'ч'.",
                 "EEEE, d MMMM y 'г'. G",
                 "d MMMM y 'г'. G",
                 "d.MM.y 'г'. G",
@@ -249,9 +249,9 @@
                 GyMMMMEd{"E, d MMMM y 'г'. G"}
                 GyMMMMd{"d MMMM y 'г'. G"}
                 GyMMMd{"d.MM.y 'г'. G"}
-                H{"HH"}
-                Hm{"HH:mm"}
-                Hms{"HH:mm:ss"}
+                H{"HH 'ч'."}
+                Hm{"HH:mm 'ч'."}
+                Hms{"HH:mm:ss 'ч'."}
                 M{"M"}
                 MEd{"E, d.MM"}
                 MMM{"MM"}
@@ -262,7 +262,7 @@
                 MMMd{"d.MM"}
                 Md{"d.MM"}
                 d{"d"}
-                h{"h a"}
+                h{"h 'ч'. a"}
                 hm{"h:mm 'ч'. a"}
                 hms{"h:mm:ss 'ч'. a"}
                 ms{"mm:ss"}
@@ -457,10 +457,10 @@
                 "pm",
             }
             DateTimePatterns{
-                "H:mm:ss zzzz",
-                "H:mm:ss z",
-                "H:mm:ss",
-                "H:mm",
+                "H:mm:ss 'ч'. zzzz",
+                "H:mm:ss 'ч'. z",
+                "H:mm:ss 'ч'.",
+                "H:mm 'ч'.",
                 "EEEE, d MMMM y 'г'.",
                 "d MMMM y 'г'.",
                 "d.MM.y 'г'.",
@@ -475,17 +475,17 @@
                 Timezone{"{0} {1}"}
             }
             availableFormats{
-                Bh{"h B"}
-                Bhm{"h:mm B"}
-                Bhms{"h:mm:ss B"}
+                Bh{"h 'ч'. B"}
+                Bhm{"h:mm 'ч'. B"}
+                Bhms{"h:mm:ss 'ч'. B"}
                 E{"ccc"}
-                EBhm{"E, h:mm B"}
-                EBhms{"E, h:mm:ss B"}
-                EHm{"E, HH:mm"}
-                EHms{"E, H:mm:ss"}
+                EBhm{"E, h:mm 'ч'. B"}
+                EBhms{"E, h:mm:ss 'ч'. B"}
+                EHm{"E, HH:mm 'ч'."}
+                EHms{"E, HH:mm:ss 'ч'."}
                 Ed{"E, d"}
-                Ehm{"E, h:mm a"}
-                Ehms{"E, h:mm:ss a"}
+                Ehm{"E, h:mm 'ч'. a"}
+                Ehms{"E, h:mm:ss 'ч'. a"}
                 Gy{"y 'г'. G"}
                 GyMMM{"MM.y 'г'. G"}
                 GyMMMEd{"E, d.MM.y 'г'. G"}
@@ -493,11 +493,11 @@
                 GyMMMMEd{"E, d MMMM y 'г'. G"}
                 GyMMMMd{"d MMMM y 'г'. G"}
                 GyMMMd{"d.MM.y 'г'. G"}
-                H{"H"}
-                Hm{"H:mm"}
-                Hms{"H:mm:ss"}
-                Hmsv{"HH:mm:ss v"}
-                Hmv{"HH:mm v"}
+                H{"HH 'ч'."}
+                Hm{"HH:mm 'ч'."}
+                Hms{"HH:mm:ss 'ч'."}
+                Hmsv{"HH:mm:ss 'ч'. v"}
+                Hmv{"HH:mm 'ч'. v"}
                 M{"L"}
                 MEd{"E, d.MM"}
                 MMM{"MM"}
@@ -513,11 +513,11 @@
                 MMMd{"d.MM"}
                 Md{"d.MM"}
                 d{"d"}
-                h{"h a"}
-                hm{"h:mm a"}
-                hms{"h:mm:ss a"}
-                hmsv{"h:mm:ss a v"}
-                hmv{"h:mm a v"}
+                h{"h 'ч'. a"}
+                hm{"h:mm 'ч'. a"}
+                hms{"h:mm:ss 'ч'. a"}
+                hmsv{"h:mm:ss 'ч'. a v"}
+                hmv{"h:mm 'ч'. a v"}
                 ms{"m:ss"}
                 y{"y 'г'."}
                 yM{"MM.y 'г'."}
@@ -739,18 +739,18 @@
                     y{"dd.MM.y – dd.MM.y GGGGG"}
                 }
                 H{
-                    H{"H – H"}
+                    H{"H – H 'ч'."}
                 }
                 Hm{
-                    H{"H:mm – H:mm"}
-                    m{"H:mm – H:mm"}
+                    H{"H:mm 'ч'. – H:mm 'ч'."}
+                    m{"H:mm 'ч'. – H:mm 'ч'."}
                 }
                 Hmv{
-                    H{"H:mm – H:mm v"}
-                    m{"H:mm – H:mm v"}
+                    H{"H:mm 'ч'. – H:mm 'ч'. v"}
+                    m{"H:mm 'ч'. – H:mm 'ч'. v"}
                 }
                 Hv{
-                    H{"H – H v"}
+                    H{"H – H 'ч'. v"}
                 }
                 M{
                     M{"M – M"}
@@ -790,22 +790,22 @@
                 }
                 fallback{"{0} – {1}"}
                 h{
-                    a{"h a – h a"}
-                    h{"h – h a"}
+                    a{"h 'ч'. a – h 'ч'. a"}
+                    h{"h 'ч'. – h 'ч'. a"}
                 }
                 hm{
-                    a{"h:mm a – h:mm a"}
-                    h{"h:mm – h:mm a"}
-                    m{"h:mm – h:mm a"}
+                    a{"h:mm 'ч'. a – h:mm 'ч'. a"}
+                    h{"h:mm 'ч'. – h:mm 'ч'. a"}
+                    m{"h:mm 'ч'. – h:mm 'ч'. a"}
                 }
                 hmv{
-                    a{"h:mm a – h:mm a v"}
-                    h{"h:mm a – h:mm a v"}
-                    m{"h:mm a – h:mm a v"}
+                    a{"h:mm 'ч'. a – h:mm 'ч'. a v"}
+                    h{"h:mm 'ч'. a – h:mm 'ч'. a v"}
+                    m{"h:mm 'ч'. a – h:mm 'ч'. a v"}
                 }
                 hv{
-                    a{"h a – h a v"}
-                    h{"h – h a v"}
+                    a{"h 'ч'. a – h 'ч'. a v"}
+                    h{"h 'ч'. – h 'ч'. a v"}
                 }
                 y{
                     y{"y – y 'г'."}
@@ -1745,12 +1745,12 @@
             }
             relativeTime{
                 future{
-                    one{"сл. {0} вт."}
-                    other{"сл. {0} вт."}
+                    one{"сл. {0} вт"}
+                    other{"сл. {0} вт"}
                 }
                 past{
-                    one{"пр. {0} вт."}
-                    other{"пр. {0} вт."}
+                    one{"пр. {0} вт"}
+                    other{"пр. {0} вт"}
                 }
             }
         }
diff --git a/icu4c/source/data/locales/bg_BG.txt b/icu4c/source/data/locales/bg_BG.txt
index 5f0fc67..21007c1 100644
--- a/icu4c/source/data/locales/bg_BG.txt
+++ b/icu4c/source/data/locales/bg_BG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bg_BG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/bm.txt b/icu4c/source/data/locales/bm.txt
index fa9663c..305f9e2 100644
--- a/icu4c/source/data/locales/bm.txt
+++ b/icu4c/source/data/locales/bm.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bm{
     AuxExemplarCharacters{"[q v x]"}
     ExemplarCharacters{"[a b c d e ɛ f g h i j k l m n ɲ ŋ o ɔ p r s t u w y z]"}
@@ -12,7 +13,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/bm_ML.txt b/icu4c/source/data/locales/bm_ML.txt
index 1e98a97..38962a6 100644
--- a/icu4c/source/data/locales/bm_ML.txt
+++ b/icu4c/source/data/locales/bm_ML.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bm_ML{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/bn.txt b/icu4c/source/data/locales/bn.txt
index 752ac95..fe325af 100644
--- a/icu4c/source/data/locales/bn.txt
+++ b/icu4c/source/data/locales/bn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bn{
     AuxExemplarCharacters{"[\u200C\u200D ৲ ৳ ৴ ৵ ৶ ৷ ৸ ৹ ৰ ৱ]"}
     Ellipsis{
@@ -199,8 +200,8 @@
                         other{"00শত কো"}
                     }
                     100000000000{
-                        one{"00000 কো"}
-                        other{"00000 কো"}
+                        one{"000কো"}
+                        other{"000কো"}
                     }
                     1000000000000{
                         one{"0 লা'.'কো'.'"}
@@ -247,7 +248,6 @@
         minimumGroupingDigits{"1"}
         native{"beng"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -2102,7 +2102,7 @@
                     other{"{0} সোমবারেতে"}
                 }
                 past{
-                    one{"{0} সোমবারেতে"}
+                    one{"{0} সোমবার আগে"}
                     other{"{0} সোমবার আগে"}
                 }
             }
diff --git a/icu4c/source/data/locales/bn_BD.txt b/icu4c/source/data/locales/bn_BD.txt
index ca48e9f..51ef832 100644
--- a/icu4c/source/data/locales/bn_BD.txt
+++ b/icu4c/source/data/locales/bn_BD.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bn_BD{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/bn_IN.txt b/icu4c/source/data/locales/bn_IN.txt
index 0a55ed7..480b917 100644
--- a/icu4c/source/data/locales/bn_IN.txt
+++ b/icu4c/source/data/locales/bn_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bn_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/bo.txt b/icu4c/source/data/locales/bo.txt
index 2323108..46d4f53 100644
--- a/icu4c/source/data/locales/bo.txt
+++ b/icu4c/source/data/locales/bo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bo{
     AuxExemplarCharacters{"[ༀ]"}
     ExemplarCharacters{
@@ -33,7 +34,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/bo_CN.txt b/icu4c/source/data/locales/bo_CN.txt
index da58762..5dbddad 100644
--- a/icu4c/source/data/locales/bo_CN.txt
+++ b/icu4c/source/data/locales/bo_CN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bo_CN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/bo_IN.txt b/icu4c/source/data/locales/bo_IN.txt
index f4c90ba..98d2ef6 100644
--- a/icu4c/source/data/locales/bo_IN.txt
+++ b/icu4c/source/data/locales/bo_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bo_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/br.txt b/icu4c/source/data/locales/br.txt
index 0d982e9..f278fe7 100644
--- a/icu4c/source/data/locales/br.txt
+++ b/icu4c/source/data/locales/br.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 br{
     AuxExemplarCharacters{"[á à ă â å ä ã ā æ c ç é è ĕ ë ē í ì ĭ î ï ī ó ò ŏ ô ö ø ō œ q ú ŭ û ü ū ÿ]"}
     Ellipsis{
@@ -10,7 +11,7 @@
         word-initial{"… {0}"}
         word-medial{"{0} … {1}"}
     }
-    ExemplarCharacters{"[a b {ch} {cʼh} d e ê f g h i j k l m n ñ o p r s t u ù v w x y z]"}
+    ExemplarCharacters{"[a b {cʼh} {ch} d e ê f g h i j k l m n ñ o p r s t u ù v w x y z]"}
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P R S T U V W X Y Z]"}
     ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . ( ) \\[ \\] \\{ \\}]"}
@@ -23,6 +24,7 @@
                 percentFormat{"#,##0 %"}
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{"٫"}
                 exponential{"اس"}
                 group{"٬"}
@@ -419,6 +421,7 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{","}
                 exponential{"E"}
                 group{" "}
@@ -558,7 +561,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -1418,18 +1420,18 @@
             monthNames{
                 format{
                     abbreviated{
-                        "kentañ miz",
-                        "eil miz",
-                        "trede miz",
-                        "pevare miz",
-                        "pempvet miz",
-                        "cʼhwecʼhvet miz",
-                        "seizhvet miz",
-                        "eizhvet miz",
-                        "navet miz",
-                        "dekvet miz",
-                        "unnekvet miz",
-                        "daouzekvet miz",
+                        "miz 1",
+                        "miz 2",
+                        "miz 3",
+                        "miz 4",
+                        "miz 5",
+                        "miz 6",
+                        "miz 7",
+                        "miz 8",
+                        "miz 9",
+                        "miz 10",
+                        "miz 11",
+                        "miz 12",
                     }
                     narrow{
                         "1",
@@ -1462,18 +1464,18 @@
                 }
                 stand-alone{
                     abbreviated{
-                        "kentañ miz",
-                        "eil miz",
-                        "trede miz",
-                        "pevare miz",
-                        "pempvet miz",
-                        "cʼhwecʼhvet miz",
-                        "seizhvet miz",
-                        "eizhvet miz",
-                        "navet miz",
-                        "dekvet miz",
-                        "unnekvet miz",
-                        "daouzekvet miz",
+                        "miz 1",
+                        "miz 2",
+                        "miz 3",
+                        "miz 4",
+                        "miz 5",
+                        "miz 6",
+                        "miz 7",
+                        "miz 8",
+                        "miz 9",
+                        "miz 10",
+                        "miz 11",
+                        "miz 12",
                     }
                     narrow{
                         "1",
@@ -5106,37 +5108,63 @@
         animals_nature{"loened pe natur"}
         arrows{"biroù"}
         body{"korf"}
+        box_drawing{"rizennoù"}
         braille{"skritur Braille"}
         building{"savadur"}
         bullets_stars{"krug pe steredenn"}
+        consonantal_jamo{"kensonennoù jamo"}
         currency_symbols{"arouez moneiz"}
+        dash_connector{"barrennig pe kennasker"}
         digits{"sifr"}
+        dingbats{"arouez Dingbat"}
         divination_symbols{"arouez divinouriezh"}
+        east_asian_scripts{"skriturioù Azia ar Reter"}
         european_scripts{"skritur europat"}
         female{"benel"}
         flag{"banniel"}
         flags{"bannieloù"}
         food_drink{"boued hag evaj"}
         format{"furmad"}
+        format_whitespace{"furmad hag esaouennoù"}
+        han_characters{"arouezennoù han"}
         han_radicals{"gwrizienn han"}
+        hanja{"arouezenn hanja"}
+        hanzi_simplified{"arouezennoù han (eeunaet)"}
+        hanzi_traditional{"arouezennoù han (hengounel)"}
+        heart{"kalon"}
         historic_scripts{"skritur istorel"}
+        male{"gourel"}
+        math_symbols{"arouez matematikel"}
+        middle_eastern_scripts{"skriturioù Reter-Kreiz"}
+        miscellaneous{"liesseurt"}
         modern_scripts{"skritur modern"}
         modifier{"kemmañ"}
         nature{"natur"}
         numbers{"niveroù"}
         objects{"tra"}
+        other{"all"}
         person{"den"}
         phonetic_alphabet{"lizherenneg soniadel"}
         pictographs{"piktogramm"}
         place{"lecʼh"}
         plant{"plant"}
         punctuation{"poentadur"}
+        sign_standard_symbols{"sin pe arouez"}
+        small_form_variant{"adstummoù bihan"}
         smiley{"fromlun"}
+        smileys_people{"fromlun pe den"}
+        south_asian_scripts{"skriturioù Azia ar Su"}
+        southeast_asian_scripts{"skriturioù Azia ar Gevred"}
         sport{"sport"}
         symbols{"arouez"}
+        technical_symbols{"arouez teknikel"}
         travel{"beaj"}
-        travel_places{"beaj ha lecʼhioù"}
+        travel_places{"beaj pe lecʼh"}
+        variant_forms{"adstumm"}
+        vocalic_jamo{"bogalennoù jamo"}
         weather{"amzer"}
+        western_asian_scripts{"skriturioù Azia ar Cʼhonôg"}
+        whitespace{"esaouenn"}
     }
     delimiters{
         alternateQuotationEnd{"”"}
@@ -5349,6 +5377,9 @@
         }
         minute{
             dn{"munut"}
+            relative{
+                "0"{"ar munut-mañ"}
+            }
             relativeTime{
                 future{
                     few{"a-benn {0} munut"}
diff --git a/icu4c/source/data/locales/br_FR.txt b/icu4c/source/data/locales/br_FR.txt
index 92068fd..1bebd36 100644
--- a/icu4c/source/data/locales/br_FR.txt
+++ b/icu4c/source/data/locales/br_FR.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 br_FR{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/brx.txt b/icu4c/source/data/locales/brx.txt
index 1febec3..a9e7123 100644
--- a/icu4c/source/data/locales/brx.txt
+++ b/icu4c/source/data/locales/brx.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 brx{
     AuxExemplarCharacters{"[\u200C\u200D]"}
     ExemplarCharacters{
@@ -36,7 +37,6 @@
         }
         native{"deva"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/brx_IN.txt b/icu4c/source/data/locales/brx_IN.txt
index b370b21..01d08fe 100644
--- a/icu4c/source/data/locales/brx_IN.txt
+++ b/icu4c/source/data/locales/brx_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 brx_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/bs.txt b/icu4c/source/data/locales/bs.txt
index 11c1d2d..f1794c1 100644
--- a/icu4c/source/data/locales/bs.txt
+++ b/icu4c/source/data/locales/bs.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs{
     AuxExemplarCharacters{"[q w x y]"}
     Ellipsis{
@@ -222,6 +223,7 @@
                 }
             }
             symbols{
+                approximatelySign{"≈"}
                 decimal{","}
                 exponential{"E"}
                 group{"."}
@@ -240,16 +242,22 @@
                 other{"Skrenite na {0}. križanju desno."}
             }
             plural{
-                few{"{0} sata"}
-                one{"{0} sat"}
-                other{"{0} sati"}
+                few{"{0} dana"}
+                one{"{0} dan"}
+                other{"{0} drugih"}
             }
         }
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
+        buddhist{
+            eras{
+                abbreviated{
+                    "BE",
+                }
+            }
+        }
         generic{
             DateTimePatterns{
                 "HH:mm:ss zzzz",
@@ -358,6 +366,14 @@
                     d{"GGGGG y-MM-dd – y-MM-dd"}
                     y{"GGGGG y-MM-dd – y-MM-dd"}
                 }
+                Hm{
+                    H{"HH:mm–HH:mm"}
+                    m{"HH:mm–HH:mm"}
+                }
+                Hmv{
+                    H{"HH:mm–HH:mm v"}
+                    m{"HH:mm–HH:mm v"}
+                }
                 M{
                     M{"M. – M."}
                 }
@@ -384,6 +400,22 @@
                     d{"d. – d."}
                 }
                 fallback{"{0} – {1}"}
+                h{
+                    a{"h a – h a"}
+                }
+                hm{
+                    a{"h:mm a – h:mm a"}
+                    h{"h:mm–h:mm a"}
+                    m{"h:mm–h:mm a"}
+                }
+                hmv{
+                    a{"h:mm a – h:mm a v"}
+                    h{"h:mm–h:mm a v"}
+                    m{"h:mm–h:mm a v"}
+                }
+                hv{
+                    a{"h a – h a v"}
+                }
                 y{
                     y{"y. – y. G"}
                 }
@@ -655,7 +687,7 @@
                     "n. e.",
                 }
                 abbreviated%variant{
-                    "p.n.e.",
+                    "p. n. e.",
                     "n.e.",
                 }
                 narrow{
@@ -946,6 +978,13 @@
                 }
             }
         }
+        hebrew{
+            eras{
+                abbreviated{
+                    "AM",
+                }
+            }
+        }
         islamic{
             DateTimePatterns{
                 "HH:mm:ss zzzz",
@@ -991,95 +1030,142 @@
                     "AH",
                 }
             }
+            monthNames{
+                format{
+                    abbreviated{
+                        "muh.",
+                        "saf.",
+                        "Rab. I",
+                        "rab. ii",
+                        "džum. i",
+                        "džum. ii",
+                        "redž.",
+                        "ša.",
+                        "ram.",
+                        "še.",
+                        "zul-k.",
+                        "zul-h.",
+                    }
+                    wide{
+                        "muharem",
+                        "safer",
+                        "rabiʻ i",
+                        "rabiʻ ii",
+                        "džumade i",
+                        "džumade ii",
+                        "redžeb",
+                        "Shaʻban",
+                        "ramazan",
+                        "ševal",
+                        "zul-kade",
+                        "zul-hidže",
+                    }
+                }
+            }
+        }
+        roc{
+            availableFormats{
+                M{"L."}
+                MMM{"LLL"}
+                MMMEd{"E, d. MMM"}
+                MMMd{"d. MMM"}
+                d{"d."}
+            }
+            eras{
+                abbreviated{
+                    "prije R.O.C.",
+                    "R.O.C.",
+                }
+            }
         }
     }
     characterLabel{
-        activities{"Aktivnosti"}
-        african_scripts{"Afrička pisma"}
-        american_scripts{"Američka pisma"}
-        animal{"Životinja"}
-        animals_nature{"Životinje ili priroda"}
-        arrows{"Strjelice"}
-        body{"Tijelo"}
+        activities{"aktivnost"}
+        african_scripts{"afričko pismo"}
+        american_scripts{"američko pismo"}
+        animal{"životinja"}
+        animals_nature{"životinja ili priroda"}
+        arrows{"strelica"}
+        body{"tijelo"}
         box_drawing{"Linije"}
         braille{"Brajevo pismo"}
-        building{"Zgrada"}
-        bullets_stars{"Znakovi/zvjezdice za isticanje"}
+        building{"zgrada"}
+        bullets_stars{"znak za nabrajanje ili zvjezdica"}
         consonantal_jamo{"Konsonantski jamo"}
-        currency_symbols{"Simboli valuta"}
-        dash_connector{"Crtica/poveznik"}
-        digits{"Cifre"}
-        dingbats{"Dingbati"}
-        divination_symbols{"Simboli za predviđanje"}
-        downwards_arrows{"Strjelice nadolje"}
-        downwards_upwards_arrows{"Strjelice nadolje nagore"}
-        east_asian_scripts{"Istočnoazijska pisma"}
+        currency_symbols{"simbol valute"}
+        dash_connector{"crtica ili poveznica"}
+        digits{"cifra"}
+        dingbats{"dingbati"}
+        divination_symbols{"simbol za predviđanje"}
+        downwards_arrows{"strelica nadolje"}
+        downwards_upwards_arrows{"strelica nadolje-nagore"}
+        east_asian_scripts{"istočnoazijsko pismo"}
         emoji{"Emoji sličice"}
-        european_scripts{"Evropska pisma"}
+        european_scripts{"evropsko pismo"}
         female{"Žensko"}
-        flag{"Zastava"}
-        flags{"Zastave"}
+        flag{"zastava"}
+        flags{"zastave"}
         food_drink{"Hrana i piće"}
-        format{"Format"}
-        format_whitespace{"Format i prazan prostor"}
-        full_width_form_variant{"Varijante oblika pune širine"}
-        geometric_shapes{"Geometrijski oblici"}
-        half_width_form_variant{"Varijante oblika polovične širine"}
-        han_characters{"Han znakovi"}
-        han_radicals{"Han ključevi"}
-        hanja{"Hanja"}
+        format{"format"}
+        format_whitespace{"format i bjelina"}
+        full_width_form_variant{"varijanta pune širine"}
+        geometric_shapes{"geometrijski oblik"}
+        half_width_form_variant{"varijanta polovične širine"}
+        han_characters{"Han znak"}
+        han_radicals{"Han ključ"}
+        hanja{"hanja"}
         hanzi_simplified{"Hanzi (pojednostavljeni)"}
         hanzi_traditional{"Hanzi (tradicionalni)"}
-        heart{"Srce"}
-        historic_scripts{"Stara pisma"}
-        ideographic_desc_characters{"Znakovi za ideografski opis"}
+        heart{"srce"}
+        historic_scripts{"historijsko pismo"}
+        ideographic_desc_characters{"ideografski opisni znak"}
         japanese_kana{"Japanski kana"}
         kanbun{"Kanbun"}
         kanji{"Kanji"}
         keycap{"Kapica za tipku"}
-        leftwards_arrows{"Strjelice ulijevo"}
-        leftwards_rightwards_arrows{"Strjelice ulijevo udesno"}
-        letterlike_symbols{"Simboli nalik slovima"}
-        limited_use{"Ograničena upotreba"}
+        leftwards_arrows{"strelica ulijevo"}
+        leftwards_rightwards_arrows{"strelica ulijevo udesno"}
+        letterlike_symbols{"simbol nalik slovu"}
+        limited_use{"ograničena upotreba"}
         male{"Muško"}
-        math_symbols{"Matematički simboli"}
-        middle_eastern_scripts{"Bliskoistočna pisma"}
-        miscellaneous{"Razno"}
-        modern_scripts{"Moderna pisma"}
-        modifier{"Modifikator"}
-        musical_symbols{"Muzički simboli"}
-        nature{"Priroda"}
-        nonspacing{"Nerazdvajajući znakovi"}
-        numbers{"Brojevi"}
-        objects{"Objekti"}
-        other{"Ostalo"}
-        paired{"Upareno"}
-        person{"Osoba"}
-        phonetic_alphabet{"Fonetska abeceda"}
-        pictographs{"Piktogrami"}
-        place{"Mjesto"}
-        plant{"Biljka"}
-        punctuation{"Interpunkcija"}
-        rightwards_arrows{"Strjelice udesno"}
-        sign_standard_symbols{"Znakovni/standardni simboli"}
-        small_form_variant{"Varijante malih oblika"}
-        smiley{"Smajli"}
-        smileys_people{"Nasmiješena lica i ljudi"}
-        south_asian_scripts{"Južnoazijska pisma"}
-        southeast_asian_scripts{"Jugoistočnoazijska pisma"}
-        spacing{"Razmak"}
-        sport{"Sport"}
-        symbols{"Simboli"}
-        technical_symbols{"Tehnički simboli"}
-        tone_marks{"Tonske oznake"}
-        travel{"Putovanja"}
-        travel_places{"Putovanja i mjesta"}
-        upwards_arrows{"Strjelica nagore"}
-        variant_forms{"Varijante oblika"}
-        vocalic_jamo{"Vokalni jamo"}
-        weather{"Vrijeme"}
-        western_asian_scripts{"Zapadnoazijska pisma"}
-        whitespace{"Prazan prostor"}
+        math_symbols{"matematički simbol"}
+        middle_eastern_scripts{"bliskoistočno pismo"}
+        miscellaneous{"razno"}
+        modern_scripts{"moderno pismo"}
+        modifier{"modifikator"}
+        musical_symbols{"muzički simbol"}
+        nature{"priroda"}
+        nonspacing{"nerazdvajajući znak"}
+        numbers{"brojevi"}
+        objects{"objekt"}
+        other{"ostalo"}
+        paired{"upareno"}
+        person{"osoba"}
+        phonetic_alphabet{"fonetska abeceda"}
+        pictographs{"piktogram"}
+        place{"mjesto"}
+        plant{"biljka"}
+        punctuation{"interpunkcija"}
+        rightwards_arrows{"strelica udesno"}
+        sign_standard_symbols{"znak ili simbol"}
+        small_form_variant{"varijante male veličine"}
+        smiley{"smajli"}
+        smileys_people{"smajli ili osoba"}
+        south_asian_scripts{"južnoazijsko pismo"}
+        southeast_asian_scripts{"jugoistočno azijsko pismo"}
+        spacing{"razmak"}
+        sport{"sport"}
+        symbols{"simbol"}
+        technical_symbols{"tehnički simbol"}
+        tone_marks{"tonska oznaka"}
+        travel{"putovanje"}
+        travel_places{"putovanje ili mjesto"}
+        upwards_arrows{"strelice nagore"}
+        variant_forms{"varijanta"}
+        vocalic_jamo{"vokalni jamo"}
+        weather{"vrijeme"}
+        western_asian_scripts{"zapadnoazijsko pismo"}
+        whitespace{"bjelina"}
     }
     delimiters{
         alternateQuotationEnd{"’"}
diff --git a/icu4c/source/data/locales/bs_BA.txt b/icu4c/source/data/locales/bs_BA.txt
index e5e3a46..70619a1 100644
--- a/icu4c/source/data/locales/bs_BA.txt
+++ b/icu4c/source/data/locales/bs_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_BA{
     "%%ALIAS"{"bs_Latn_BA"}
 }
diff --git a/icu4c/source/data/locales/bs_Cyrl.txt b/icu4c/source/data/locales/bs_Cyrl.txt
index ce75235..1f67db2 100644
--- a/icu4c/source/data/locales/bs_Cyrl.txt
+++ b/icu4c/source/data/locales/bs_Cyrl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_Cyrl{
     %%Parent{"root"}
     AuxExemplarCharacters{"[]"}
@@ -233,7 +234,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
diff --git a/icu4c/source/data/locales/bs_Cyrl_BA.txt b/icu4c/source/data/locales/bs_Cyrl_BA.txt
index bfd5afb..8482cc0 100644
--- a/icu4c/source/data/locales/bs_Cyrl_BA.txt
+++ b/icu4c/source/data/locales/bs_Cyrl_BA.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_Cyrl_BA{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/bs_Latn.txt b/icu4c/source/data/locales/bs_Latn.txt
index d1a6b5e..f256112 100644
--- a/icu4c/source/data/locales/bs_Latn.txt
+++ b/icu4c/source/data/locales/bs_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/bs_Latn_BA.txt b/icu4c/source/data/locales/bs_Latn_BA.txt
index 64237e3..c9ab936 100644
--- a/icu4c/source/data/locales/bs_Latn_BA.txt
+++ b/icu4c/source/data/locales/bs_Latn_BA.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_Latn_BA{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ca.txt b/icu4c/source/data/locales/ca.txt
index 182e1b3..a2a1ff3 100644
--- a/icu4c/source/data/locales/ca.txt
+++ b/icu4c/source/data/locales/ca.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ca{
     AuxExemplarCharacters{"[á ă â å ä ã ā æ ĕ ê ë ē ì ĭ î ī ŀ ñ º ŏ ô ö ø ō œ ù ŭ û ū ÿ]"}
     Ellipsis{
@@ -218,11 +219,10 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
-                "H:mm:ss zzzz",
+                "H:mm:ss (zzzz)",
                 "H:mm:ss z",
                 "H:mm:ss",
                 "H:mm",
@@ -257,7 +257,7 @@
         }
         chinese{
             DateTimePatterns{
-                "H:mm:ss zzzz",
+                "H:mm:ss (zzzz)",
                 "H:mm:ss z",
                 "H:mm:ss",
                 "H:mm",
@@ -336,7 +336,7 @@
         }
         generic{
             DateTimePatterns{
-                "H:mm:ss zzzz",
+                "H:mm:ss (zzzz)",
                 "H:mm:ss z",
                 "H:mm:ss",
                 "H:mm",
@@ -558,7 +558,7 @@
                 "p. m.",
             }
             DateTimePatterns{
-                "H:mm:ss zzzz",
+                "H:mm:ss (zzzz)",
                 "H:mm:ss z",
                 "H:mm:ss",
                 "H:mm",
@@ -567,8 +567,8 @@
                 "d MMM y",
                 "d/M/yy",
                 "{1}, {0}",
-                "{1} 'a' 'les' {0}",
-                "{1} 'a' 'les' {0}",
+                "{1}, 'a' 'les' {0}",
+                "{1}, 'a' 'les' {0}",
                 "{1}, {0}",
                 "{1} {0}",
             }
@@ -598,7 +598,9 @@
                 Hm{"H:mm"}
                 Hms{"H:mm:ss"}
                 Hmsv{"H:mm:ss v"}
+                Hmsvvvv{"H:mm:ss (vvvv)"}
                 Hmv{"H:mm v"}
+                Hmvvvv{"H:mm (vvvv)"}
                 M{"L"}
                 MEd{"E d/M"}
                 MMM{"LLL"}
@@ -616,7 +618,9 @@
                 hm{"h:mm a"}
                 hms{"h:mm:ss a"}
                 hmsv{"h:mm:ss a v"}
+                hmsvvvv{"h:mm:ss a (vvvv)"}
                 hmv{"h:mm a v"}
+                hmvvvv{"h:mm a (vvvv)"}
                 ms{"mm:ss"}
                 y{"y"}
                 yM{"M/y"}
@@ -1083,7 +1087,7 @@
         }
         roc{
             DateTimePatterns{
-                "H:mm:ss zzzz",
+                "H:mm:ss (zzzz)",
                 "H:mm:ss z",
                 "H:mm:ss",
                 "H:mm",
diff --git a/icu4c/source/data/locales/ca_AD.txt b/icu4c/source/data/locales/ca_AD.txt
index 72f9102..46a9071 100644
--- a/icu4c/source/data/locales/ca_AD.txt
+++ b/icu4c/source/data/locales/ca_AD.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ca_AD{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ca_ES.txt b/icu4c/source/data/locales/ca_ES.txt
index 7bcefbb..2ab7b8d 100644
--- a/icu4c/source/data/locales/ca_ES.txt
+++ b/icu4c/source/data/locales/ca_ES.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ca_ES{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ca_FR.txt b/icu4c/source/data/locales/ca_FR.txt
index c7e5ee5..3473d7c 100644
--- a/icu4c/source/data/locales/ca_FR.txt
+++ b/icu4c/source/data/locales/ca_FR.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ca_FR{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ca_IT.txt b/icu4c/source/data/locales/ca_IT.txt
index 28c8f67..adefabf 100644
--- a/icu4c/source/data/locales/ca_IT.txt
+++ b/icu4c/source/data/locales/ca_IT.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ca_IT{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ccp.txt b/icu4c/source/data/locales/ccp.txt
index d3c41e8..643e28f 100644
--- a/icu4c/source/data/locales/ccp.txt
+++ b/icu4c/source/data/locales/ccp.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ccp{
     AuxExemplarCharacters{"[]"}
     ExemplarCharacters{
@@ -83,7 +84,6 @@
         minimumGroupingDigits{"1"}
         native{"cakm"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ccp_BD.txt b/icu4c/source/data/locales/ccp_BD.txt
index 5a6fbb3..154ef66 100644
--- a/icu4c/source/data/locales/ccp_BD.txt
+++ b/icu4c/source/data/locales/ccp_BD.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ccp_BD{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ccp_IN.txt b/icu4c/source/data/locales/ccp_IN.txt
index c859157..358dbec 100644
--- a/icu4c/source/data/locales/ccp_IN.txt
+++ b/icu4c/source/data/locales/ccp_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ccp_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ce.txt b/icu4c/source/data/locales/ce.txt
index f7315cb..5248791 100644
--- a/icu4c/source/data/locales/ce.txt
+++ b/icu4c/source/data/locales/ce.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ce{
     ExemplarCharacters{
         "[а {аь} б в г {гӏ} д е ё ж з и {ий} й к {кк} {ккх} {кх} {кь} {кӏ} л м н о {о"
@@ -193,7 +194,6 @@
         }
         minimumGroupingDigits{"1"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -1018,7 +1018,7 @@
         }
         week-short{
             dn{"кӀир."}
-            relativePeriod{"кӀирнахь"}
+            relativePeriod{"кӀирнахь {0}"}
             relativeTime{
                 future{
                     one{"{0} кӀир. даьлча"}
diff --git a/icu4c/source/data/locales/ce_RU.txt b/icu4c/source/data/locales/ce_RU.txt
index 4e20db3..379485d 100644
--- a/icu4c/source/data/locales/ce_RU.txt
+++ b/icu4c/source/data/locales/ce_RU.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ce_RU{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ceb.txt b/icu4c/source/data/locales/ceb.txt
index 9a3c2c0..7539f8d 100644
--- a/icu4c/source/data/locales/ceb.txt
+++ b/icu4c/source/data/locales/ceb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ceb{
     AuxExemplarCharacters{"[c f j ñ q v x z]"}
     ExemplarCharacters{"[a b d e g h i k l m n o p r s t u w y]"}
@@ -14,7 +15,6 @@
                 accountingFormat{"¤#,##0.00;(¤#,##0.00)"}
                 currencyFormat{"¤#,##0.00"}
                 decimalFormat{"#,##0.###"}
-                percentFormat{"#,#0%"}
                 scientificFormat{"#E0"}
             }
             symbols{
@@ -35,7 +35,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -214,7 +213,7 @@
                 Ed{"d E"}
                 Ehm{"E h:mm a"}
                 Ehms{"E h:mm:ss a"}
-                Gy{"G y"}
+                Gy{"y G"}
                 GyMMM{"MMM y G"}
                 GyMMMEd{"E, MMM d, y G"}
                 GyMMMd{"MMM d, y G"}
@@ -319,7 +318,7 @@
             eras{
                 abbreviated{
                     "BC",
-                    "KP",
+                    "AD",
                 }
                 abbreviated%variant{
                     "BCE",
@@ -330,8 +329,8 @@
                     "Anno Domini",
                 }
                 wide%variant{
-                    "Sa Wala Pa ang Common Era",
-                    "Common Era",
+                    "Wala Pa ang Komong Panahon",
+                    "Komong Panahon",
                 }
             }
             intervalFormats{
@@ -465,14 +464,14 @@
             monthNames{
                 format{
                     abbreviated{
-                        "En",
+                        "Ene",
                         "Peb",
                         "Mar",
-                        "Apr",
+                        "Abr",
                         "May",
                         "Hun",
                         "Hul",
-                        "Ag",
+                        "Ago",
                         "Set",
                         "Okt",
                         "Nob",
@@ -619,7 +618,7 @@
             dn{"AM/PM"}
         }
         era{
-            dn{"era"}
+            dn{"panahon"}
         }
         hour{
             dn{"oras"}
diff --git a/icu4c/source/data/locales/ceb_PH.txt b/icu4c/source/data/locales/ceb_PH.txt
index 74765e5..84581ff 100644
--- a/icu4c/source/data/locales/ceb_PH.txt
+++ b/icu4c/source/data/locales/ceb_PH.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ceb_PH{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/cgg.txt b/icu4c/source/data/locales/cgg.txt
index cbf8fd5..78cc661 100644
--- a/icu4c/source/data/locales/cgg.txt
+++ b/icu4c/source/data/locales/cgg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cgg{
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"}
@@ -10,7 +11,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/cgg_UG.txt b/icu4c/source/data/locales/cgg_UG.txt
index 33b04e7..dcec257 100644
--- a/icu4c/source/data/locales/cgg_UG.txt
+++ b/icu4c/source/data/locales/cgg_UG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cgg_UG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/chr.txt b/icu4c/source/data/locales/chr.txt
index efd096e..02199f1 100644
--- a/icu4c/source/data/locales/chr.txt
+++ b/icu4c/source/data/locales/chr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 chr{
     AuxExemplarCharacters{"[]"}
     Ellipsis{
@@ -219,7 +220,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/chr_US.txt b/icu4c/source/data/locales/chr_US.txt
index 4fc78e0..ce48ecb 100644
--- a/icu4c/source/data/locales/chr_US.txt
+++ b/icu4c/source/data/locales/chr_US.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 chr_US{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ckb.txt b/icu4c/source/data/locales/ckb.txt
index d25a136..8e79118 100644
--- a/icu4c/source/data/locales/ckb.txt
+++ b/icu4c/source/data/locales/ckb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ckb{
     AuxExemplarCharacters{
         "[\u200E\u200F \u064B \u064C \u064D \u064E \u064F \u0650 \u0651 \u0652 ء آ أ "
@@ -57,7 +58,6 @@
         minimumGroupingDigits{"1"}
         native{"arab"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ckb_IQ.txt b/icu4c/source/data/locales/ckb_IQ.txt
index acf6ae5..949243b 100644
--- a/icu4c/source/data/locales/ckb_IQ.txt
+++ b/icu4c/source/data/locales/ckb_IQ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ckb_IQ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ckb_IR.txt b/icu4c/source/data/locales/ckb_IR.txt
index 67656ef..beed512 100644
--- a/icu4c/source/data/locales/ckb_IR.txt
+++ b/icu4c/source/data/locales/ckb_IR.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ckb_IR{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/cs.txt b/icu4c/source/data/locales/cs.txt
index 69ec9ca..936e2d0 100644
--- a/icu4c/source/data/locales/cs.txt
+++ b/icu4c/source/data/locales/cs.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cs{
     AuxExemplarCharacters{"[à ă â å ä ã ā æ ç è ĕ ê ë ē ì ĭ î ï ī ľ ł ñ ò ŏ ô ö ø ō œ ŕ ù ŭ û ü ū ÿ]"}
     Ellipsis{
@@ -381,6 +382,7 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{","}
                 exponential{"E"}
                 group{" "}
@@ -519,7 +521,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -6465,6 +6466,18 @@
             middle{"{0}, {1}"}
             start{"{0}, {1}"}
         }
+        or-narrow{
+            2{"{0} nebo {1}"}
+            end{"{0} nebo {1}"}
+            middle{"{0}, {1}"}
+            start{"{0}, {1}"}
+        }
+        or-short{
+            2{"{0} nebo {1}"}
+            end{"{0} nebo {1}"}
+            middle{"{0}, {1}"}
+            start{"{0}, {1}"}
+        }
         standard{
             2{"{0} a {1}"}
             end{"{0} a {1}"}
@@ -6505,36 +6518,4 @@
         US{"USA"}
         metric{"metrický"}
     }
-    parse{
-        date{
-            lenient{
-                "[\\--/]",
-                "[\\:∶]",
-            }
-        }
-        general{
-            lenient{
-                "[.․。︒﹒.。]",
-                "['ʼ՚᾽᾿’']",
-                "[%٪﹪%]",
-                "[؉‰]",
-                "[\$﹩$$]",
-                "[£₤]",
-                "[¥¥]",
-                "[₩₩]",
-                "[₨₹{Rp}{Rs}]",
-            }
-        }
-        number{
-            lenient{
-                "[\\-‒⁻₋−➖﹣-]",
-                "[,،٫、︐︑﹐﹑,、]",
-                "[+⁺₊➕﬩﹢+]",
-            }
-            stricter{
-                "[,٫︐﹐,]",
-                "[.․﹒.。]",
-            }
-        }
-    }
 }
diff --git a/icu4c/source/data/locales/cs_CZ.txt b/icu4c/source/data/locales/cs_CZ.txt
index 03fd33b..63eb4ff 100644
--- a/icu4c/source/data/locales/cs_CZ.txt
+++ b/icu4c/source/data/locales/cs_CZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cs_CZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/cy.txt b/icu4c/source/data/locales/cy.txt
index e4753af..0415a23 100644
--- a/icu4c/source/data/locales/cy.txt
+++ b/icu4c/source/data/locales/cy.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cy{
     AuxExemplarCharacters{"[ă å ã ā æ ç ĕ ē ĭ ī k ñ ŏ ø ō œ q ŭ ū v x z]"}
     Ellipsis{
@@ -395,7 +396,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -1174,7 +1174,6 @@
             }
         }
         day-short{
-            dn{"diwrnod"}
             relative{
                 "-1"{"ddoe"}
                 "-2"{"echdoe"}
@@ -1257,22 +1256,22 @@
             relative{
                 "-1"{"Gwener diwethaf"}
                 "0"{"Gwener yma"}
-                "1"{"Gwener nesaf"}
+                "1"{"Gwen. nesaf"}
             }
             relativeTime{
                 future{
                     few{"ymhen {0} dydd Gwener"}
                     many{"ymhen {0} dydd Gwener"}
-                    one{"ymhen {0} dydd Gwener"}
-                    other{"ymhen {0} dydd Gwener"}
+                    one{"ymhen {0} G"}
+                    other{"ymhen {0} G"}
                     two{"ymhen {0} dydd Gwener"}
                     zero{"ymhen {0} dydd Gwener"}
                 }
                 past{
                     few{"{0} dydd Gwener yn ôl"}
                     many{"{0} dydd Gwener yn ôl"}
-                    one{"{0} dydd Gwener yn ôl"}
-                    other{"{0} dydd Gwener yn ôl"}
+                    one{"{0} G yn ôl"}
+                    other{"{0} G yn ôl"}
                     two{"{0} dydd Gwener yn ôl"}
                     zero{"{0} dydd Gwener yn ôl"}
                 }
@@ -1281,23 +1280,23 @@
         fri-short{
             relative{
                 "-1"{"Gwener diwethaf"}
-                "0"{"Gwener yma"}
-                "1"{"Gwener nesaf"}
+                "0"{"Gwen. yma"}
+                "1"{"Gwen. nesaf"}
             }
             relativeTime{
                 future{
                     few{"ymhen {0} dydd Gwener"}
                     many{"ymhen {0} dydd Gwener"}
-                    one{"ymhen {0} dydd Gwener"}
-                    other{"ymhen {0} dydd Gwener"}
+                    one{"ymhen {0} Gwen."}
+                    other{"ymhen {0} Gwen"}
                     two{"ymhen {0} dydd Gwener"}
                     zero{"ymhen {0} dydd Gwener"}
                 }
                 past{
                     few{"{0} dydd Gwener yn ôl"}
                     many{"{0} dydd Gwener yn ôl"}
-                    one{"{0} dydd Gwener yn ôl"}
-                    other{"{0} dydd Gwener yn ôl"}
+                    one{"{0} Gwen. yn ôl"}
+                    other{"{0} Gwen. yn ôl"}
                     two{"{0} dydd Gwener yn ôl"}
                     zero{"{0} dydd Gwener yn ôl"}
                 }
@@ -1397,20 +1396,20 @@
             dn{"mun."}
             relativeTime{
                 future{
-                    few{"ymhen {0} mun."}
-                    many{"ymhen {0} mun."}
+                    few{"ymhen {0} munud"}
+                    many{"ymhen {0} munud"}
                     one{"ymhen {0} mun."}
                     other{"ymhen {0} mun."}
                     two{"ymhen {0} mun."}
-                    zero{"ymhen {0} mun."}
+                    zero{"ymhen {0} munud"}
                 }
                 past{
                     few{"{0} mun. yn ôl"}
-                    many{"{0} mun. yn ôl"}
+                    many{"{0} munud yn ôl"}
                     one{"{0} mun. yn ôl"}
                     other{"{0} mun. yn ôl"}
                     two{"{0} mun. yn ôl"}
-                    zero{"{0} mun. yn ôl"}
+                    zero{"{0} munud yn ôl"}
                 }
             }
         }
@@ -1421,16 +1420,16 @@
                     few{"ymhen {0} munud"}
                     many{"ymhen {0} munud"}
                     one{"ymhen {0} mun."}
-                    other{"ymhen {0} munud"}
+                    other{"ymhen {0} mun."}
                     two{"ymhen {0} fun."}
                     zero{"ymhen {0} munud"}
                 }
                 past{
                     few{"{0} munud yn ôl"}
                     many{"{0} munud yn ôl"}
-                    one{"{0} munud yn ôl"}
-                    other{"{0} munud yn ôl"}
-                    two{"{0} fun. yn ôl"}
+                    one{"{0} mun. yn ôl"}
+                    other{"{0} mun. yn ôl"}
+                    two{"{0} funud yn ôl"}
                     zero{"{0} munud yn ôl"}
                 }
             }
@@ -1470,16 +1469,16 @@
                 future{
                     few{"ymhen {0} Dydd Llun"}
                     many{"ymhen {0} Dydd Llun"}
-                    one{"ymhen {0} Dydd Llun"}
-                    other{"ymhen {0} Dydd Llun"}
+                    one{"ymhen {0} Ll"}
+                    other{"ymhen {0} Ll"}
                     two{"ymhen {0} Dydd Llun"}
                     zero{"ymhen {0} Dydd Llun"}
                 }
                 past{
                     few{"{0} dydd Llun yn ôl"}
                     many{"{0} dydd Llun yn ôl"}
-                    one{"{0} dydd Llun yn ôl"}
-                    other{"{0} dydd Llun yn ôl"}
+                    one{"{0} Ll yn ôl"}
+                    other{"{0} Ll yn ôl"}
                     two{"{0} dydd Llun yn ôl"}
                     zero{"{0} dydd Llun yn ôl"}
                 }
@@ -1495,16 +1494,16 @@
                 future{
                     few{"ymhen {0} Dydd Llun"}
                     many{"ymhen {0} Dydd Llun"}
-                    one{"ymhen {0} Dydd Llun"}
-                    other{"ymhen {0} Dydd Llun"}
+                    one{"ymhen {0} Llun"}
+                    other{"ymhen {0} Llun"}
                     two{"ymhen {0} Dydd Llun"}
                     zero{"ymhen {0} Dydd Llun"}
                 }
                 past{
                     few{"{0} dydd Llun yn ôl"}
                     many{"{0} dydd Llun yn ôl"}
-                    one{"{0} dydd Llun yn ôl"}
-                    other{"{0} dydd Llun yn ôl"}
+                    one{"{0} Llun yn ôl"}
+                    other{"{0} Llun yn ôl"}
                     two{"{0} dydd Llun yn ôl"}
                     zero{"{0} dydd Llun yn ôl"}
                 }
@@ -1610,37 +1609,37 @@
                 future{
                     few{"ymhen {0} chwarter"}
                     many{"ymhen {0} chwarter"}
-                    one{"ymhen {0} chwarter"}
-                    other{"ymhen {0} chwarter"}
+                    one{"ymhen {0} chw."}
+                    other{"ymhen {0} chw."}
                     two{"ymhen {0} chwarter"}
                     zero{"ymhen {0} chwarter"}
                 }
                 past{
                     few{"{0} chwarter yn ôl"}
                     many{"{0} chwarter yn ôl"}
-                    one{"{0} chwarter yn ôl"}
-                    other{"{0} o chwarteri yn ôl"}
+                    one{"{0} chw. yn ôl"}
+                    other{"{0} chw. yn ôl"}
                     two{"{0} chwarter yn ôl"}
                     zero{"{0} o chwarteri yn ôl"}
                 }
             }
         }
         quarter-short{
-            dn{"chwarter"}
+            dn{"chw."}
             relativeTime{
                 future{
                     few{"ymhen {0} chwarter"}
                     many{"ymhen {0} chwarter"}
-                    one{"ymhen {0} chwarter"}
-                    other{"ymhen {0} chwarter"}
+                    one{"ymhen {0} chw."}
+                    other{"ymhen {0} chw."}
                     two{"ymhen {0} chwarter"}
                     zero{"ymhen {0} chwarter"}
                 }
                 past{
                     few{"{0} chwarter yn ôl"}
                     many{"{0} chwarter yn ôl"}
-                    one{"{0} chwarter yn ôl"}
-                    other{"{0} o chwarteri yn ôl"}
+                    one{"{0} chw. yn ôl"}
+                    other{"{0} chw. yn ôl"}
                     two{"{0} chwarter yn ôl"}
                     zero{"{0} o chwarteri yn ôl"}
                 }
@@ -1672,25 +1671,20 @@
             }
         }
         sat-narrow{
-            relative{
-                "-1"{"Sadwrn diwethaf"}
-                "0"{"Sadwrn yma"}
-                "1"{"Sadwrn nesaf"}
-            }
             relativeTime{
                 future{
                     few{"ymhen {0} dydd Sadwrn"}
                     many{"ymhen {0} dydd Sadwrn"}
-                    one{"ymhen {0} dydd Sadwrn"}
-                    other{"ymhen {0} dydd Sadwrn"}
+                    one{"ymhen {0} Sad."}
+                    other{"ymhen {0} Sad."}
                     two{"ymhen {0} dydd Sadwrn"}
                     zero{"ymhen {0} dydd Sadwrn"}
                 }
                 past{
                     few{"{0} dydd Sadwrn yn ôl"}
                     many{"{0} dydd Sadwrn yn ôl"}
-                    one{"{0} dydd Sadwrn yn ôl"}
-                    other{"{0} dydd Sadwrn yn ôl"}
+                    one{"{0} Sad. yn ôl"}
+                    other{"{0} Sad. yn ôl"}
                     two{"{0} dydd Sadwrn yn ôl"}
                     zero{"{0} dydd Sadwrn yn ôl"}
                 }
@@ -1698,24 +1692,24 @@
         }
         sat-short{
             relative{
-                "-1"{"Sadwrn diwethaf"}
-                "0"{"Sadwrn yma"}
-                "1"{"Sadwrn nesaf"}
+                "-1"{"Sad. diwethaf"}
+                "0"{"Sad. yma"}
+                "1"{"Sad. nesaf"}
             }
             relativeTime{
                 future{
                     few{"ymhen {0} dydd Sadwrn"}
                     many{"ymhen {0} dydd Sadwrn"}
-                    one{"ymhen {0} dydd Sadwrn"}
-                    other{"ymhen {0} dydd Sadwrn"}
+                    one{"ymhen {0} Sad."}
+                    other{"ymhen {0} Sad."}
                     two{"ymhen {0} dydd Sadwrn"}
                     zero{"ymhen {0} dydd Sadwrn"}
                 }
                 past{
                     few{"{0} dydd Sadwrn yn ôl"}
                     many{"{0} dydd Sadwrn yn ôl"}
-                    one{"{0} dydd Sadwrn yn ôl"}
-                    other{"{0} dydd Sadwrn yn ôl"}
+                    one{"{0} Sad. yn ôl"}
+                    other{"{0} Sad. yn ôl"}
                     two{"{0} dydd Sadwrn yn ôl"}
                     zero{"{0} dydd Sadwrn yn ôl"}
                 }
@@ -1772,16 +1766,16 @@
                 future{
                     few{"ymhen {0} eiliad"}
                     many{"ymhen {0} eiliad"}
-                    one{"ymhen {0} eiliad"}
-                    other{"ymhen {0} eiliad"}
+                    one{"ymhen {0} eil."}
+                    other{"ymhen {0} eil."}
                     two{"ymhen {0} eiliad"}
                     zero{"ymhen {0} eiliad"}
                 }
                 past{
                     few{"{0} eiliad yn ôl"}
                     many{"{0} eiliad yn ôl"}
-                    one{"{0} eiliad yn ôl"}
-                    other{"{0} eiliad yn ôl"}
+                    one{"{0} eil. yn ôl"}
+                    other{"{0} eil. yn ôl"}
                     two{"{0} eiliad yn ôl"}
                     zero{"{0} eiliad yn ôl"}
                 }
@@ -1822,16 +1816,16 @@
                 future{
                     few{"ymhen {0} Dydd Sul"}
                     many{"ymhen {0} Dydd Sul"}
-                    one{"ymhen {0} Dydd Sul"}
-                    other{"ymhen {0} Dydd Sul"}
+                    one{"ymhen {0} Sul"}
+                    other{"ymhen {0} Sul"}
                     two{"ymhen {0} Dydd Sul"}
                     zero{"ymhen {0} Dydd Sul"}
                 }
                 past{
                     few{"{0} Dydd Sul yn ôl"}
                     many{"{0} Dydd Sul yn ôl"}
-                    one{"{0} Dydd Sul yn ôl"}
-                    other{"{0} Dydd Sul yn ôl"}
+                    one{"{0} Sul yn ôl"}
+                    other{"{0} Sul yn ôl"}
                     two{"{0} Dydd Sul yn ôl"}
                     zero{"{0} Dydd Sul yn ôl"}
                 }
@@ -1847,16 +1841,16 @@
                 future{
                     few{"ymhen {0} Dydd Sul"}
                     many{"ymhen {0} Dydd Sul"}
-                    one{"ymhen {0} Dydd Sul"}
-                    other{"ymhen {0} Dydd Sul"}
+                    one{"ymhen {0} Sul"}
+                    other{"ymhen {0} Sul"}
                     two{"ymhen {0} Dydd Sul"}
                     zero{"ymhen {0} Dydd Sul"}
                 }
                 past{
                     few{"{0} Dydd Sul yn ôl"}
                     many{"{0} Dydd Sul yn ôl"}
-                    one{"{0} Dydd Sul yn ôl"}
-                    other{"{0} Dydd Sul yn ôl"}
+                    one{"{0} Sul yn ôl"}
+                    other{"{0} Sul yn ôl"}
                     two{"{0} Dydd Sul yn ôl"}
                     zero{"{0} Dydd Sul yn ôl"}
                 }
@@ -1888,25 +1882,20 @@
             }
         }
         thu-narrow{
-            relative{
-                "-1"{"Iau diwethaf"}
-                "0"{"Iau yma"}
-                "1"{"Iau nesaf"}
-            }
             relativeTime{
                 future{
                     few{"ymhen {0} dydd Iau"}
                     many{"ymhen {0} dydd Iau"}
-                    one{"ymhen {0} dydd Iau"}
-                    other{"ymhen {0} dydd Iau"}
+                    one{"ymhen {0} Iau"}
+                    other{"ymhen {0} Iau"}
                     two{"ymhen {0} dydd Iau"}
                     zero{"ymhen {0} dydd Iau"}
                 }
                 past{
                     few{"{0} dydd Iau yn ôl"}
                     many{"{0} dydd Iau yn ôl"}
-                    one{"{0} dydd Iau yn ôl"}
-                    other{"{0} dydd Iau yn ôl"}
+                    one{"{0} Iau yn ôl"}
+                    other{"{0} Iau yn ôl"}
                     two{"{0} dydd Iau yn ôl"}
                     zero{"{0} dydd Iau yn ôl"}
                 }
@@ -1922,16 +1911,16 @@
                 future{
                     few{"ymhen {0} dydd Iau"}
                     many{"ymhen {0} dydd Iau"}
-                    one{"ymhen {0} dydd Iau"}
-                    other{"ymhen {0} dydd Iau"}
+                    one{"ymhen {0} Iau"}
+                    other{"ymhen {0} Iau"}
                     two{"ymhen {0} dydd Iau"}
                     zero{"ymhen {0} dydd Iau"}
                 }
                 past{
                     few{"{0} dydd Iau yn ôl"}
                     many{"{0} dydd Iau yn ôl"}
-                    one{"{0} dydd Iau yn ôl"}
-                    other{"{0} dydd Iau yn ôl"}
+                    one{"{0} Iau yn ôl"}
+                    other{"{0} Iau yn ôl"}
                     two{"{0} dydd Iau yn ôl"}
                     zero{"{0} dydd Iau yn ôl"}
                 }
@@ -1964,24 +1953,24 @@
         }
         tue-narrow{
             relative{
-                "-1"{"Mawrth diwethaf"}
-                "0"{"Mawrth yma"}
-                "1"{"Mawrth nesaf"}
+                "-1"{"Maw. diwethaf"}
+                "0"{"Maw. yma"}
+                "1"{"Maw. nesaf"}
             }
             relativeTime{
                 future{
                     few{"ymhen {0} dydd Mawrth"}
                     many{"ymhen {0} dydd Mawrth"}
-                    one{"ymhen {0} dydd Mawrth"}
-                    other{"ymhen {0} dydd Mawrth"}
+                    one{"ymhen {0} Maw."}
+                    other{"ymhen {0} Maw."}
                     two{"ymhen {0} dydd Mawrth"}
                     zero{"ymhen {0} dydd Mawrth"}
                 }
                 past{
                     few{"{0} dydd Mawrth yn ôl"}
                     many{"{0} dydd Mawrth yn ôl"}
-                    one{"{0} dydd Mawrth yn ôl"}
-                    other{"{0} dydd Mawrth yn ôl"}
+                    one{"{0} Maw. yn ôl"}
+                    other{"{0} Maw. yn ôl"}
                     two{"{0} dydd Mawrth yn ôl"}
                     zero{"{0} dydd Mawrth yn ôl"}
                 }
@@ -1989,24 +1978,24 @@
         }
         tue-short{
             relative{
-                "-1"{"Mawrth diwethaf"}
-                "0"{"Mawrth yma"}
-                "1"{"Mawrth nesaf"}
+                "-1"{"Maw. diwethaf"}
+                "0"{"Maw. yma"}
+                "1"{"Maw. nesaf"}
             }
             relativeTime{
                 future{
                     few{"ymhen {0} dydd Mawrth"}
                     many{"ymhen {0} dydd Mawrth"}
-                    one{"ymhen {0} dydd Mawrth"}
-                    other{"ymhen {0} dydd Mawrth"}
+                    one{"ymhen {0} Maw."}
+                    other{"ymhen {0} Maw."}
                     two{"ymhen {0} dydd Mawrth"}
                     zero{"ymhen {0} dydd Mawrth"}
                 }
                 past{
                     few{"{0} dydd Mawrth yn ôl"}
                     many{"{0} dydd Mawrth yn ôl"}
-                    one{"{0} dydd Mawrth yn ôl"}
-                    other{"{0} dydd Mawrth yn ôl"}
+                    one{"{0} Maw. yn ôl"}
+                    other{"{0} Maw. yn ôl"}
                     two{"{0} dydd Mawrth yn ôl"}
                     zero{"{0} dydd Mawrth yn ôl"}
                 }
@@ -2039,24 +2028,24 @@
         }
         wed-narrow{
             relative{
-                "-1"{"Mercher diwethaf"}
-                "0"{"Mercher yma"}
-                "1"{"Mercher nesaf"}
+                "-1"{"Me. diwethaf"}
+                "0"{"Me. yma"}
+                "1"{"Me. nesaf"}
             }
             relativeTime{
                 future{
                     few{"ymhen {0} dydd Mercher"}
                     many{"ymhen {0} dydd Mercher"}
-                    one{"ymhen {0} dydd Mercher"}
-                    other{"ymhen {0} dydd Mercher"}
+                    one{"ymhen {0} Me."}
+                    other{"ymhen {0} Me."}
                     two{"ymhen {0} dydd Mercher"}
                     zero{"ymhen {0} dydd Mercher"}
                 }
                 past{
                     few{"{0} dydd Mercher yn ôl"}
                     many{"{0} dydd Mercher yn ôl"}
-                    one{"{0} dydd Mercher yn ôl"}
-                    other{"{0} dydd Mercher yn ôl"}
+                    one{"{0} Me. yn ôl"}
+                    other{"{0} Me. yn ôl"}
                     two{"{0} dydd Mercher yn ôl"}
                     zero{"{0} dydd Mercher yn ôl"}
                 }
@@ -2064,24 +2053,24 @@
         }
         wed-short{
             relative{
-                "-1"{"Mercher diwethaf"}
-                "0"{"Mercher yma"}
-                "1"{"Mercher nesaf"}
+                "-1"{"Mer. diwethaf"}
+                "0"{"Mer. yma"}
+                "1"{"Mer. nesaf"}
             }
             relativeTime{
                 future{
                     few{"ymhen {0} dydd Mercher"}
                     many{"ymhen {0} dydd Mercher"}
-                    one{"ymhen {0} dydd Mercher"}
-                    other{"ymhen {0} dydd Mercher"}
+                    one{"ymhen {0} Mer."}
+                    other{"ymhen {0} Mer."}
                     two{"ymhen {0} dydd Mercher"}
                     zero{"ymhen {0} dydd Mercher"}
                 }
                 past{
                     few{"{0} dydd Mercher yn ôl"}
                     many{"{0} dydd Mercher yn ôl"}
-                    one{"{0} dydd Mercher yn ôl"}
-                    other{"{0} dydd Mercher yn ôl"}
+                    one{"{0} Mer. yn ôl"}
+                    other{"{0} Mer. yn ôl"}
                     two{"{0} dydd Mercher yn ôl"}
                     zero{"{0} dydd Mercher yn ôl"}
                 }
@@ -2116,21 +2105,26 @@
         }
         week-narrow{
             dn{"wythnos"}
+            relative{
+                "-1"{"ws. ddiwethaf"}
+                "0"{"yr ws. hon"}
+                "1"{"ws. nesaf"}
+            }
             relativePeriod{"wythnos {0}"}
             relativeTime{
                 future{
                     few{"ymhen {0} wythnos"}
                     many{"ymhen {0} wythnos"}
-                    one{"ymhen {0} wythnos"}
-                    other{"ymhen {0} wythnos"}
+                    one{"ymhen {0} ws."}
+                    other{"ymhen {0} ws."}
                     two{"ymhen {0} wythnos"}
                     zero{"ymhen {0} wythnos"}
                 }
                 past{
                     few{"{0} wythnos yn ôl"}
                     many{"{0} wythnos yn ôl"}
-                    one{"{0} wythnos yn ôl"}
-                    other{"{0} wythnos yn ôl"}
+                    one{"{0} ws. yn ôl"}
+                    other{"{0} ws. yn ôl"}
                     two{"pythefnos yn ôl"}
                     zero{"{0} wythnos yn ôl"}
                 }
@@ -2138,21 +2132,26 @@
         }
         week-short{
             dn{"wythnos"}
+            relative{
+                "-1"{"ws. ddiwethaf"}
+                "0"{"yr ws. hon"}
+                "1"{"ws. nesaf"}
+            }
             relativePeriod{"wythnos {0}"}
             relativeTime{
                 future{
                     few{"ymhen {0} wythnos"}
                     many{"ymhen {0} wythnos"}
-                    one{"ymhen wythnos"}
-                    other{"ymhen {0} wythnos"}
+                    one{"ymhen ws."}
+                    other{"ymhen {0} ws."}
                     two{"ymhen pythefnos"}
                     zero{"ymhen {0} wythnos"}
                 }
                 past{
                     few{"{0} wythnos yn ôl"}
                     many{"{0} wythnos yn ôl"}
-                    one{"{0} wythnos yn ôl"}
-                    other{"{0} wythnos yn ôl"}
+                    one{"{0} ws. yn ôl"}
+                    other{"{0} ws yn ôl."}
                     two{"pythefnos yn ôl"}
                     zero{"{0} wythnos yn ôl"}
                 }
@@ -2213,11 +2212,16 @@
         }
         year-narrow{
             dn{"bl."}
+            relative{
+                "-1"{"llynedd"}
+                "0"{"eleni"}
+                "1"{"bl. nesaf"}
+            }
             relativeTime{
                 future{
                     few{"ymhen {0} blynedd"}
                     many{"ymhen {0} blynedd"}
-                    one{"ymhen blwyddyn"}
+                    one{"ymhen bl."}
                     other{"ymhen {0} mlynedd"}
                     two{"ymhen {0} flynedd"}
                     zero{"ymhen {0} mlynedd"}
@@ -2226,7 +2230,7 @@
                     few{"{0} blynedd yn ôl"}
                     many{"{0} blynedd yn ôl"}
                     one{"blwyddyn yn ôl"}
-                    other{"{0} o flynyddoedd yn ôl"}
+                    other{"{0} bl. yn ôl"}
                     two{"{0} flynedd yn ôl"}
                     zero{"{0} o flynyddoedd yn ôl"}
                 }
@@ -2246,8 +2250,8 @@
                 past{
                     few{"{0} blynedd yn ôl"}
                     many{"{0} blynedd yn ôl"}
-                    one{"blwyddyn yn ôl"}
-                    other{"{0} o flynyddoedd yn ôl"}
+                    one{"{0} bl. yn ôl"}
+                    other{"{0} bl. yn ôl"}
                     two{"{0} flynedd yn ôl"}
                     zero{"{0} o flynyddoedd yn ôl"}
                 }
diff --git a/icu4c/source/data/locales/cy_GB.txt b/icu4c/source/data/locales/cy_GB.txt
index 4907fd7..0aeaae5 100644
--- a/icu4c/source/data/locales/cy_GB.txt
+++ b/icu4c/source/data/locales/cy_GB.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cy_GB{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/da.txt b/icu4c/source/data/locales/da.txt
index 26b2d1f..6c4ab0d 100644
--- a/icu4c/source/data/locales/da.txt
+++ b/icu4c/source/data/locales/da.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 da{
     AuxExemplarCharacters{"[á à â ç é è ê ë í î ï ñ ó ô œ ú ù û ÿ ü ä ǿ ö]"}
     Ellipsis{
@@ -212,7 +213,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -363,21 +363,23 @@
                 }
                 Bhm{
                     B{"h.mm B–h.mm B"}
+                    h{"h.mm–h.mm B"}
+                    m{"h.mm–h.mm B"}
                 }
                 Gy{
                     G{"y G–y G"}
                     y{"y–y G"}
                 }
                 GyM{
-                    G{"M/y GGGGG–M/y GGGGG"}
-                    M{"M/y–M/y GGGGG"}
-                    y{"M/y–M/y GGGGG"}
+                    G{"MM.y GGGGG–MM.y GGGGG"}
+                    M{"MM.y–MM.y GGGGG"}
+                    y{"MM.y–MM.y GGGGG"}
                 }
                 GyMEd{
-                    G{"E 'den' d/M/y GGGGG–E 'den' d/M/y GGGGG"}
-                    M{"E 'den' d/M/y–E 'den' d/M/y GGGGG"}
-                    d{"E 'den' d/M/y–E 'den' d/M/y GGGGG"}
-                    y{"E 'den' d/M/y–E 'den' d/M/y GGGGG"}
+                    G{"E 'den' dd.MM.y GGGGG–E 'den' dd.MM.y GGGGG"}
+                    M{"E 'den' dd.MM.y–E 'den' dd.MM.y GGGGG"}
+                    d{"E 'den' dd.MM.y–E 'den' dd.MM.y GGGGG"}
+                    y{"E 'den' dd.MM.y–E 'den' dd.MM.y GGGGG"}
                 }
                 GyMMM{
                     G{"MMM y G–MMM y G"}
@@ -397,10 +399,10 @@
                     y{"d. MMM y–d. MMM y G"}
                 }
                 GyMd{
-                    G{"d/M/y GGGGG–d/M/y GGGGG"}
-                    M{"d/M/y–d/M/y GGGGG"}
-                    d{"d/M/y–d/M/y GGGGG"}
-                    y{"d/M/y–d/M/y GGGGG"}
+                    G{"dd.MM.y GGGGG–dd.MM.y GGGGG"}
+                    M{"dd.MM.y–dd.MM.y GGGGG"}
+                    d{"dd.MM.y–dd.MM.y GGGGG"}
+                    y{"dd.MM.y–dd.MM.y GGGGG"}
                 }
                 H{
                     H{"HH–HH"}
@@ -420,8 +422,8 @@
                     M{"M–M"}
                 }
                 MEd{
-                    M{"E dd/MM–E dd/MM"}
-                    d{"E dd/MM–E dd/MM"}
+                    M{"E dd.MM–E dd.MM"}
+                    d{"E dd.MM–E dd.MM"}
                 }
                 MMM{
                     M{"MMM–MMM"}
@@ -435,8 +437,8 @@
                     d{"d.–d. MMM"}
                 }
                 Md{
-                    M{"dd/MM–dd/MM"}
-                    d{"dd/MM–dd/MM"}
+                    M{"dd.MM–dd.MM"}
+                    d{"dd.MM–dd.MM"}
                 }
                 d{
                     d{"d.–d."}
@@ -464,13 +466,13 @@
                     y{"y–y G"}
                 }
                 yM{
-                    M{"MM/y–MM/y G"}
-                    y{"MM/y–MM/y G"}
+                    M{"MM.y–MM.y G"}
+                    y{"MM.y–MM.y G"}
                 }
                 yMEd{
-                    M{"E dd/MM/y–E dd/MM/y G"}
-                    d{"E dd/MM/y–E dd/MM/y G"}
-                    y{"E dd/MM/y–E dd/MM/y G"}
+                    M{"E dd.MM.y–E dd.MM.y G"}
+                    d{"E dd.MM.y–E dd.MM.y G"}
+                    y{"E dd.MM.y–E dd.MM.y G"}
                 }
                 yMMM{
                     M{"MMM–MMM y G"}
@@ -491,9 +493,9 @@
                     y{"d. MMM y–d. MMM y G"}
                 }
                 yMd{
-                    M{"dd/MM/y–dd/MM/y G"}
-                    d{"dd/MM/y–dd/MM/y G"}
-                    y{"dd/MM/y–dd/MM/y G"}
+                    M{"dd.MM.y–dd.MM.y G"}
+                    d{"dd.MM.y–dd.MM.y G"}
+                    y{"dd.MM.y–dd.MM.y G"}
                 }
             }
         }
@@ -792,12 +794,12 @@
                 GyMMMEd{
                     G{"E d. MMM y G–E d. MMM y G"}
                     M{"E d. MMM–E d. MMM y G"}
-                    d{"E d. MMM y–E d. MMM G"}
+                    d{"E d. MMM–E d. MMM y G"}
                     y{"E d. MMM y–E d. MMM y G"}
                 }
                 GyMMMd{
                     G{"d. MMM y G–d. MMM y G"}
-                    M{"d. MMM y–d. MMM G"}
+                    M{"d. MMM–d. MMM y G"}
                     d{"d.–d. MMM y G"}
                     y{"d. MMM y–d. MMM y G"}
                 }
@@ -1334,8 +1336,8 @@
                     other{"om {0} dage"}
                 }
                 past{
-                    one{"for {0} dag siden"}
-                    other{"for {0} dage siden"}
+                    one{"{0} dag siden"}
+                    other{"{0} dage siden"}
                 }
             }
         }
@@ -1354,8 +1356,8 @@
                     other{"om {0} dage"}
                 }
                 past{
-                    one{"for {0} dag siden"}
-                    other{"for {0} dage siden"}
+                    one{"{0} dag siden"}
+                    other{"{0} dage siden"}
                 }
             }
         }
@@ -1390,7 +1392,7 @@
             relative{
                 "-1"{"sidste fredag"}
                 "0"{"på fredag"}
-                "1"{"næste fredag"}
+                "1"{"på fredag"}
             }
             relativeTime{
                 future{
@@ -1407,16 +1409,16 @@
             relative{
                 "-1"{"sidste fr."}
                 "0"{"på fr."}
-                "1"{"næste fr."}
+                "1"{"på fr."}
             }
             relativeTime{
                 future{
-                    one{"om {0} fredag"}
-                    other{"om {0} fredage"}
+                    one{"om {0} fr."}
+                    other{"om {0} fr."}
                 }
                 past{
-                    one{"for {0} fredag siden"}
-                    other{"for {0} fredage siden"}
+                    one{"{0} fr. siden"}
+                    other{"{0} fr. siden"}
                 }
             }
         }
@@ -1424,23 +1426,23 @@
             relative{
                 "-1"{"sidste fre."}
                 "0"{"på fre."}
-                "1"{"næste fre."}
+                "1"{"på fre."}
             }
             relativeTime{
                 future{
-                    one{"om {0} fredag"}
-                    other{"om {0} fredage"}
+                    one{"om {0} fre."}
+                    other{"om {0} fre."}
                 }
                 past{
-                    one{"for {0} fredag siden"}
-                    other{"for {0} fredage siden"}
+                    one{"{0} fre. siden"}
+                    other{"{0} fre. siden"}
                 }
             }
         }
         hour{
             dn{"time"}
             relative{
-                "0"{"i den kommende time"}
+                "0"{"denne time"}
             }
             relativeTime{
                 future{
@@ -1461,8 +1463,8 @@
                     other{"om {0} timer"}
                 }
                 past{
-                    one{"for {0} time siden"}
-                    other{"for {0} timer siden"}
+                    one{"{0} time siden"}
+                    other{"{0} timer siden"}
                 }
             }
         }
@@ -1474,15 +1476,15 @@
                     other{"om {0} timer"}
                 }
                 past{
-                    one{"for {0} time siden"}
-                    other{"for {0} timer siden"}
+                    one{"{0} time siden"}
+                    other{"{0} timer siden"}
                 }
             }
         }
         minute{
             dn{"minut"}
             relative{
-                "0"{"i det kommende minut"}
+                "0"{"dette minut"}
             }
             relativeTime{
                 future{
@@ -1503,8 +1505,8 @@
                     other{"om {0} min."}
                 }
                 past{
-                    one{"for {0} min. siden"}
-                    other{"for {0} min. siden"}
+                    one{"{0} min. siden"}
+                    other{"{0} min. siden"}
                 }
             }
         }
@@ -1516,8 +1518,8 @@
                     other{"om {0} min."}
                 }
                 past{
-                    one{"for {0} min. siden"}
-                    other{"for {0} min. siden"}
+                    one{"{0} min. siden"}
+                    other{"{0} min. siden"}
                 }
             }
         }
@@ -1525,7 +1527,7 @@
             relative{
                 "-1"{"sidste mandag"}
                 "0"{"på mandag"}
-                "1"{"næste mandag"}
+                "1"{"på mandag"}
             }
             relativeTime{
                 future{
@@ -1542,16 +1544,16 @@
             relative{
                 "-1"{"sidste ma."}
                 "0"{"på ma."}
-                "1"{"næste ma."}
+                "1"{"på ma."}
             }
             relativeTime{
                 future{
-                    one{"om {0} mandag"}
-                    other{"om {0} mandage"}
+                    one{"om {0} ma."}
+                    other{"om {0} ma."}
                 }
                 past{
-                    one{"for {0} mandag siden"}
-                    other{"for {0} mandage siden"}
+                    one{"{0} ma. siden"}
+                    other{"{0} ma. siden"}
                 }
             }
         }
@@ -1559,16 +1561,16 @@
             relative{
                 "-1"{"sidste man."}
                 "0"{"på man."}
-                "1"{"næste man."}
+                "1"{"på man."}
             }
             relativeTime{
                 future{
-                    one{"om {0} mandag"}
-                    other{"om {0} mandage"}
+                    one{"om {0} man."}
+                    other{"om {0} man."}
                 }
                 past{
-                    one{"for {0} mandag siden"}
-                    other{"for {0} mandage siden"}
+                    one{"{0} man. siden"}
+                    other{"{0} man. siden"}
                 }
             }
         }
@@ -1603,8 +1605,8 @@
                     other{"om {0} mdr."}
                 }
                 past{
-                    one{"for {0} md. siden"}
-                    other{"for {0} mdr. siden"}
+                    one{"{0} md. siden"}
+                    other{"{0} mdr. siden"}
                 }
             }
         }
@@ -1621,8 +1623,8 @@
                     other{"om {0} mdr."}
                 }
                 past{
-                    one{"for {0} md. siden"}
-                    other{"for {0} mdr. siden"}
+                    one{"{0} md. siden"}
+                    other{"{0} mdr. siden"}
                 }
             }
         }
@@ -1657,8 +1659,8 @@
                     other{"om {0} kvt."}
                 }
                 past{
-                    one{"for {0} kvt. siden"}
-                    other{"for {0} kvt. siden"}
+                    one{"{0} kvt. siden"}
+                    other{"{0} kvt. siden"}
                 }
             }
         }
@@ -1675,8 +1677,8 @@
                     other{"om {0} kvt."}
                 }
                 past{
-                    one{"for {0} kvt. siden"}
-                    other{"for {0} kvt. siden"}
+                    one{"{0} kvt. siden"}
+                    other{"{0} kvt. siden"}
                 }
             }
         }
@@ -1684,7 +1686,7 @@
             relative{
                 "-1"{"sidste lørdag"}
                 "0"{"på lørdag"}
-                "1"{"næste lørdag"}
+                "1"{"på lørdag"}
             }
             relativeTime{
                 future{
@@ -1701,16 +1703,16 @@
             relative{
                 "-1"{"sidste lø."}
                 "0"{"på lø."}
-                "1"{"næste lø."}
+                "1"{"på lø."}
             }
             relativeTime{
                 future{
-                    one{"om {0} lørdag"}
-                    other{"om {0} lørdage"}
+                    one{"om {0} lø."}
+                    other{"om {0} lø."}
                 }
                 past{
-                    one{"for {0} lørdag siden"}
-                    other{"for {0} lørdage siden"}
+                    one{"{0} lø. siden"}
+                    other{"{0} lø. siden"}
                 }
             }
         }
@@ -1718,16 +1720,16 @@
             relative{
                 "-1"{"sidste lør."}
                 "0"{"på lør."}
-                "1"{"næste lør."}
+                "1"{"på lør."}
             }
             relativeTime{
                 future{
-                    one{"om {0} lørdag"}
-                    other{"om {0} lørdage"}
+                    one{"om {0} lør."}
+                    other{"om {0} lør."}
                 }
                 past{
-                    one{"for {0} lørdag siden"}
-                    other{"for {0} lørdage siden"}
+                    one{"{0} lør. siden"}
+                    other{"{0} lør. siden"}
                 }
             }
         }
@@ -1755,8 +1757,8 @@
                     other{"om {0} sek."}
                 }
                 past{
-                    one{"for {0} sek. siden"}
-                    other{"for {0} sek. siden"}
+                    one{"{0} sek. siden"}
+                    other{"{0} sek. siden"}
                 }
             }
         }
@@ -1768,8 +1770,8 @@
                     other{"om {0} sek."}
                 }
                 past{
-                    one{"for {0} sek. siden"}
-                    other{"for {0} sek. siden"}
+                    one{"{0} sek. siden"}
+                    other{"{0} sek. siden"}
                 }
             }
         }
@@ -1777,7 +1779,7 @@
             relative{
                 "-1"{"sidste søndag"}
                 "0"{"på søndag"}
-                "1"{"næste søndag"}
+                "1"{"på søndag"}
             }
             relativeTime{
                 future{
@@ -1794,16 +1796,16 @@
             relative{
                 "-1"{"sidste sø."}
                 "0"{"på sø."}
-                "1"{"næste sø."}
+                "1"{"på sø."}
             }
             relativeTime{
                 future{
-                    one{"om {0} søndag"}
-                    other{"om {0} søndage"}
+                    one{"om {0} sø."}
+                    other{"om {0} sø."}
                 }
                 past{
-                    one{"for {0} søndag siden"}
-                    other{"for {0} søndage siden"}
+                    one{"{0} sø. siden"}
+                    other{"{0} sø. siden"}
                 }
             }
         }
@@ -1811,16 +1813,16 @@
             relative{
                 "-1"{"sidste søn."}
                 "0"{"på søn."}
-                "1"{"næste søn."}
+                "1"{"på søn."}
             }
             relativeTime{
                 future{
-                    one{"om {0} søndag"}
-                    other{"om {0} søndage"}
+                    one{"om {0} søn."}
+                    other{"om {0} søn."}
                 }
                 past{
-                    one{"for {0} søndag siden"}
-                    other{"for {0} søndage siden"}
+                    one{"{0} søn. siden"}
+                    other{"{0} søn. siden"}
                 }
             }
         }
@@ -1828,7 +1830,7 @@
             relative{
                 "-1"{"sidste torsdag"}
                 "0"{"på torsdag"}
-                "1"{"næste torsdag"}
+                "1"{"på torsdag"}
             }
             relativeTime{
                 future{
@@ -1845,16 +1847,16 @@
             relative{
                 "-1"{"sidste to."}
                 "0"{"på to."}
-                "1"{"næste to."}
+                "1"{"på to."}
             }
             relativeTime{
                 future{
-                    one{"om {0} torsdag"}
-                    other{"om {0} torsdage"}
+                    one{"om {0} to."}
+                    other{"om {0} to."}
                 }
                 past{
-                    one{"for {0} torsdag siden"}
-                    other{"for {0} torsdage siden"}
+                    one{"{0} to. siden"}
+                    other{"{0} to. siden"}
                 }
             }
         }
@@ -1862,16 +1864,16 @@
             relative{
                 "-1"{"sidste tor."}
                 "0"{"på tor."}
-                "1"{"næste tor."}
+                "1"{"på tor."}
             }
             relativeTime{
                 future{
-                    one{"om {0} torsdag"}
-                    other{"om {0} torsdage"}
+                    one{"om {0} tor."}
+                    other{"om {0} tor."}
                 }
                 past{
-                    one{"for {0} torsdag siden"}
-                    other{"for {0} torsdage siden"}
+                    one{"{0} tor. siden"}
+                    other{"{0} tor. siden"}
                 }
             }
         }
@@ -1879,7 +1881,7 @@
             relative{
                 "-1"{"sidste tirsdag"}
                 "0"{"på tirsdag"}
-                "1"{"næste tirsdag"}
+                "1"{"på tirsdag"}
             }
             relativeTime{
                 future{
@@ -1896,16 +1898,16 @@
             relative{
                 "-1"{"sidste ti."}
                 "0"{"på ti."}
-                "1"{"næste ti."}
+                "1"{"på ti."}
             }
             relativeTime{
                 future{
-                    one{"om {0} tirsdag"}
-                    other{"om {0} tirsdage"}
+                    one{"om {0} ti."}
+                    other{"om {0} ti."}
                 }
                 past{
-                    one{"for {0} tirsdag siden"}
-                    other{"for {0} tirsdage siden"}
+                    one{"{0} ti. siden"}
+                    other{"{0} ti. siden"}
                 }
             }
         }
@@ -1913,16 +1915,16 @@
             relative{
                 "-1"{"sidste tir."}
                 "0"{"på tir."}
-                "1"{"næste tir."}
+                "1"{"på tir."}
             }
             relativeTime{
                 future{
-                    one{"om {0} tirsdag"}
-                    other{"om {0} tirsdage"}
+                    one{"om {0} tir."}
+                    other{"om {0} tir."}
                 }
                 past{
-                    one{"for {0} tirsdag siden"}
-                    other{"for {0} tirsdage siden"}
+                    one{"{0} tir. siden"}
+                    other{"{0} tir. siden"}
                 }
             }
         }
@@ -1930,7 +1932,7 @@
             relative{
                 "-1"{"sidste onsdag"}
                 "0"{"på onsdag"}
-                "1"{"næste onsdag"}
+                "1"{"på onsdag"}
             }
             relativeTime{
                 future{
@@ -1947,16 +1949,16 @@
             relative{
                 "-1"{"sidste on."}
                 "0"{"på on."}
-                "1"{"næste on."}
+                "1"{"på on."}
             }
             relativeTime{
                 future{
-                    one{"om {0} onsdag"}
-                    other{"om {0} onsdage"}
+                    one{"om {0} on."}
+                    other{"om {0} on."}
                 }
                 past{
-                    one{"for {0} onsdag siden"}
-                    other{"for {0} onsdage siden"}
+                    one{"{0} on. siden"}
+                    other{"{0} on. siden"}
                 }
             }
         }
@@ -1964,16 +1966,16 @@
             relative{
                 "-1"{"sidste ons."}
                 "0"{"på ons."}
-                "1"{"næste ons."}
+                "1"{"på ons."}
             }
             relativeTime{
                 future{
-                    one{"om {0} onsdag"}
-                    other{"om {0} onsdage"}
+                    one{"om {0} ons."}
+                    other{"om {0} ons."}
                 }
                 past{
-                    one{"for {0} onsdag siden"}
-                    other{"for {0} onsdage siden"}
+                    one{"{0} ons. siden"}
+                    other{"{0} ons. siden"}
                 }
             }
         }
@@ -2010,8 +2012,8 @@
                     other{"om {0} uger"}
                 }
                 past{
-                    one{"for {0} uge siden"}
-                    other{"for {0} uger siden"}
+                    one{"{0} uge siden"}
+                    other{"{0} uger siden"}
                 }
             }
         }
@@ -2029,8 +2031,8 @@
                     other{"om {0} uger"}
                 }
                 past{
-                    one{"for {0} uge siden"}
-                    other{"for {0} uger siden"}
+                    one{"{0} uge siden"}
+                    other{"{0} uger siden"}
                 }
             }
         }
@@ -2092,8 +2094,8 @@
                     other{"om {0} år"}
                 }
                 past{
-                    one{"for {0} år siden"}
-                    other{"for {0} år siden"}
+                    one{"{0} år siden"}
+                    other{"{0} år siden"}
                 }
             }
         }
@@ -2110,8 +2112,8 @@
                     other{"om {0} år"}
                 }
                 past{
-                    one{"for {0} år siden"}
-                    other{"for {0} år siden"}
+                    one{"{0} år siden"}
+                    other{"{0} år siden"}
                 }
             }
         }
diff --git a/icu4c/source/data/locales/da_DK.txt b/icu4c/source/data/locales/da_DK.txt
index 198eb2b..5ff73b0 100644
--- a/icu4c/source/data/locales/da_DK.txt
+++ b/icu4c/source/data/locales/da_DK.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 da_DK{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/da_GL.txt b/icu4c/source/data/locales/da_GL.txt
index faca33c..f700ffc 100644
--- a/icu4c/source/data/locales/da_GL.txt
+++ b/icu4c/source/data/locales/da_GL.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 da_GL{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/dav.txt b/icu4c/source/data/locales/dav.txt
index 2ace657..ed48574 100644
--- a/icu4c/source/data/locales/dav.txt
+++ b/icu4c/source/data/locales/dav.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dav{
     AuxExemplarCharacters{"[q x]"}
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p r s t u v w y z]"}
@@ -12,7 +13,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/dav_KE.txt b/icu4c/source/data/locales/dav_KE.txt
index 27cdca9..c51dc6c 100644
--- a/icu4c/source/data/locales/dav_KE.txt
+++ b/icu4c/source/data/locales/dav_KE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dav_KE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/de.txt b/icu4c/source/data/locales/de.txt
index ad9f143..c3186c9 100644
--- a/icu4c/source/data/locales/de.txt
+++ b/icu4c/source/data/locales/de.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de{
     AuxExemplarCharacters{
         "[á à ă â å ã ā æ ç é è ĕ ê ë ē ğ í ì ĭ î ï İ ī ı ñ ó ò ŏ ô ø ō œ ş ú ù ŭ û ū"
@@ -192,6 +193,7 @@
                 }
             }
             symbols{
+                approximatelySign{"≈"}
                 decimal{","}
                 exponential{"E"}
                 group{"."}
@@ -218,7 +220,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -1755,7 +1756,7 @@
         consonantal_jamo{"Jamo-Konsonanten"}
         currency_symbols{"Währungssymbole"}
         dash_connector{"Gedankenstrich/Bindestrich"}
-        digits{"Stellen"}
+        digits{"Ziffern"}
         dingbats{"Zierrat"}
         divination_symbols{"Wahrsagezeichen"}
         downwards_arrows{"Abwärtspfeile"}
@@ -1800,7 +1801,7 @@
         numbers{"Ziffern"}
         objects{"Objekte"}
         other{"Andere"}
-        paired{"Gepaart"}
+        paired{"Paarig"}
         person{"Person"}
         phonetic_alphabet{"Phonetisches Alphabet"}
         pictographs{"Piktogramme"}
diff --git a/icu4c/source/data/locales/de_AT.txt b/icu4c/source/data/locales/de_AT.txt
index 16e7cfb..17c4769 100644
--- a/icu4c/source/data/locales/de_AT.txt
+++ b/icu4c/source/data/locales/de_AT.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de_AT{
     ExemplarCharactersIndex{"[A Ä B C D E F G H I J K L M N O Ö P Q R S T U Ü V W X Y Z]"}
     ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
@@ -14,7 +15,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             dayPeriod{
diff --git a/icu4c/source/data/locales/de_BE.txt b/icu4c/source/data/locales/de_BE.txt
index 28146c0..70e2c10 100644
--- a/icu4c/source/data/locales/de_BE.txt
+++ b/icu4c/source/data/locales/de_BE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de_BE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/de_CH.txt b/icu4c/source/data/locales/de_CH.txt
index 3f88f1c..f9acb76 100644
--- a/icu4c/source/data/locales/de_CH.txt
+++ b/icu4c/source/data/locales/de_CH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de_CH{
     ExemplarCharacters{"[a ä b c d e f g h i j k l m n o ö p q r s t u ü v w x y z]"}
     ExemplarCharactersNumbers{"[\\- ‑ . ’ % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
@@ -15,7 +16,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             dayNames{
diff --git a/icu4c/source/data/locales/de_DE.txt b/icu4c/source/data/locales/de_DE.txt
index 4581f04..f1ba8c9 100644
--- a/icu4c/source/data/locales/de_DE.txt
+++ b/icu4c/source/data/locales/de_DE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de_DE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/de_IT.txt b/icu4c/source/data/locales/de_IT.txt
index 92d0fb0..50a3816 100644
--- a/icu4c/source/data/locales/de_IT.txt
+++ b/icu4c/source/data/locales/de_IT.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de_IT{
-    Version{"37"}
     calendar{
         gregorian{
             monthNames{
diff --git a/icu4c/source/data/locales/de_LI.txt b/icu4c/source/data/locales/de_LI.txt
index d153405..dff0678 100644
--- a/icu4c/source/data/locales/de_LI.txt
+++ b/icu4c/source/data/locales/de_LI.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de_LI{
     ExemplarCharactersNumbers{"[\\- ‑ . ’ % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     NumberElements{
@@ -14,7 +15,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             dayPeriod{
diff --git a/icu4c/source/data/locales/de_LU.txt b/icu4c/source/data/locales/de_LU.txt
index 1128dfb..12bf52d 100644
--- a/icu4c/source/data/locales/de_LU.txt
+++ b/icu4c/source/data/locales/de_LU.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de_LU{
-    Version{"37"}
     calendar{
         gregorian{
             AmPmMarkersNarrow{
diff --git a/icu4c/source/data/locales/dje.txt b/icu4c/source/data/locales/dje.txt
index 7932f24..c8ecaaf 100644
--- a/icu4c/source/data/locales/dje.txt
+++ b/icu4c/source/data/locales/dje.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dje{
     AuxExemplarCharacters{"[v]"}
     ExemplarCharacters{"[a ã b c d e ẽ f g h i j k l m n ɲ ŋ o õ p q r s š t u w x y z ž]"}
@@ -18,7 +19,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/dje_NE.txt b/icu4c/source/data/locales/dje_NE.txt
index e450537..c4d484f 100644
--- a/icu4c/source/data/locales/dje_NE.txt
+++ b/icu4c/source/data/locales/dje_NE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dje_NE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/doi.txt b/icu4c/source/data/locales/doi.txt
new file mode 100644
index 0000000..f23b448
--- /dev/null
+++ b/icu4c/source/data/locales/doi.txt
@@ -0,0 +1,647 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+doi{
+    AuxExemplarCharacters{"[\u200C\u200D ऍ ऑ \u0945]"}
+    ExemplarCharacters{
+        "[\u0951\u0952 \u093C \u0901 \u0902 ः ॐ अ आ इ ई उ ऊ ऋ ॠ ऌ ॡ ए ऐ ओ औ क {क"
+        "\u094Dष} ख ग घ ङ च छ ज झ ञ ट ठ ड {ड\u093C} ढ {ढ\u093C} ण त थ द ध न प फ ब भ म"
+        " य र ल ळ व श ष स ह ऽ ा ि ी \u0941 \u0942 \u0943 \u0944 \u0962 \u0963 \u0947 "
+        "\u0948 ो ौ \u094D]"
+    }
+    ExemplarCharactersIndex{
+        "[अ आ इ ई उ ऊ ऋ ॠ ऌ ॡ ए ऐ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ"
+        " म य र ल ळ व श ष स ह]"
+    }
+    ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
+    ExemplarCharactersPunctuation{"[_ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) § @ * / \\& # † ‡ ′ ″]"}
+    NumberElements{
+        default{"latn"}
+        latn{
+            patterns{
+                currencyFormat{"¤#,##0.00"}
+                decimalFormat{"#,##0.###"}
+                percentFormat{"#,##0%"}
+                scientificFormat{"#E0"}
+            }
+            symbols{
+                decimal{"."}
+                group{","}
+                minusSign{"-"}
+                percentSign{"%"}
+                plusSign{"+"}
+            }
+        }
+        native{"deva"}
+    }
+    calendar{
+        generic{
+            DateTimePatterns{
+                "h:mm:ss a zzzz",
+                "h:mm:ss a z",
+                "h:mm:ss a",
+                "h:mm a",
+                "EEEE, MMMM d, y G",
+                "MMMM d, y G",
+                "MMM d, y G",
+                "M/d/y GGGGG",
+                "{1}, {0}",
+                "{1} गी {0}",
+                "{1} गी {0}",
+                "{1}, {0}",
+                "{1}, {0}",
+            }
+            intervalFormats{
+                fallback{"{0} – {1}"}
+            }
+        }
+        gregorian{
+            AmPmMarkers{
+                "सवेर",
+                "बाद दपैहर",
+            }
+            AmPmMarkersAbbr{
+                "सवेर",
+                "स’ञ",
+            }
+            AmPmMarkersNarrow{
+                "सवेर",
+                "स’ञ",
+            }
+            DateTimePatterns{
+                "h:mm:ss a zzzz",
+                "h:mm:ss a z",
+                "h:mm:ss a",
+                "h:mm a",
+                "EEEE, d, MMMM y",
+                "d, MMMM y",
+                "d, MMM y",
+                "d/M/yy",
+                "{1}, {0}",
+                "{1} गी {0}",
+                "{1} गी {0}",
+                "{1}, {0}",
+                "{1}, {0}",
+            }
+            appendItems{
+                Timezone{"{0} {1}"}
+            }
+            availableFormats{
+                Bh{"h B"}
+                Bhm{"h:mm B"}
+                Bhms{"h:mm:ss B"}
+                E{"ccc"}
+                EBhm{"E h:mm B"}
+                EBhms{"E h:mm:ss B"}
+                EHm{"E HH:mm"}
+                EHms{"E HH:mm:ss"}
+                Ed{"E d"}
+                Ehm{"E h:mm a"}
+                Ehms{"E h:mm:ss a"}
+                Gy{"G y"}
+                GyMMM{"G y MMM"}
+                GyMMMEd{"E, d, MMM G y"}
+                GyMMMd{"d, MMM G y"}
+                H{"HH"}
+                Hm{"HH:mm"}
+                Hms{"HH:mm:ss"}
+                Hmsv{"HH:mm:ss v"}
+                Hmv{"HH:mm v"}
+                M{"L"}
+                MEd{"E, d/M"}
+                MMM{"LLL"}
+                MMMEd{"E, d MMM"}
+                MMMMW{
+                    one{"MMMM दा हफ्ता W"}
+                    other{"MMMM दा हफ्ता W"}
+                }
+                MMMMd{"d MMMM"}
+                MMMd{"d MMM"}
+                Md{"d/M"}
+                d{"d"}
+                h{"h a"}
+                hm{"h:mm a"}
+                hms{"h:mm:ss a"}
+                hmsv{"h:mm:ss a v"}
+                hmv{"h:mm a v"}
+                ms{"mm:ss"}
+                y{"y"}
+                yM{"M/y"}
+                yMEd{"E, d/M/y"}
+                yMMM{"MMM y"}
+                yMMMEd{"E, d, MMM y"}
+                yMMMM{"MMMM y"}
+                yMMMd{"d, MMM y"}
+                yMd{"d/M/y"}
+                yQQQ{"QQQ y"}
+                yQQQQ{"QQQQ y"}
+                yw{
+                    one{"Y दा हफ्ता w"}
+                    other{"Y दा हफ्ता w"}
+                }
+            }
+            dayNames{
+                format{
+                    abbreviated{
+                        "ऐत",
+                        "सोम",
+                        "मंगल",
+                        "बुध",
+                        "बीर",
+                        "शुक्र",
+                        "शनि",
+                    }
+                    narrow{
+                        "ऐ.",
+                        "सो.",
+                        "म.",
+                        "बु.",
+                        "बी.",
+                        "शु.",
+                        "श.",
+                    }
+                    short{
+                        "ऐत",
+                        "सोम",
+                        "मंगल",
+                        "बुध",
+                        "बीर",
+                        "शुक्र",
+                        "शनि",
+                    }
+                    wide{
+                        "ऐतबार",
+                        "सोमबार",
+                        "मंगलबार",
+                        "बुधबार",
+                        "बीरबार",
+                        "शुक्रबार",
+                        "शनीबार",
+                    }
+                }
+                stand-alone{
+                    abbreviated{
+                        "ऐत",
+                        "सोम",
+                        "मंगल",
+                        "बुध",
+                        "बीर",
+                        "शुक्र",
+                        "शनि",
+                    }
+                    narrow{
+                        "ऐ",
+                        "सो",
+                        "म.",
+                        "बु.",
+                        "बी.",
+                        "शु.",
+                        "श.",
+                    }
+                    short{
+                        "ऐत",
+                        "सोम",
+                        "मंगल",
+                        "बुध",
+                        "बीर",
+                        "शुक्र",
+                        "शनि",
+                    }
+                    wide{
+                        "ऐतबार",
+                        "सोमबार",
+                        "मंगलबार",
+                        "बुधबार",
+                        "बीरबार",
+                        "शुक्रबार",
+                        "शनिबार",
+                    }
+                }
+            }
+            dayPeriod{
+                stand-alone{
+                    abbreviated{
+                        am{"सवेर"}
+                        pm{"स’ञ"}
+                    }
+                    narrow{
+                        am{"सवेर"}
+                        pm{"स’ञ"}
+                    }
+                    wide{
+                        am{"सवेर"}
+                        pm{"स’ञ"}
+                    }
+                }
+            }
+            eras{
+                abbreviated{
+                    "ई.पू.",
+                    "ईसवी",
+                }
+                abbreviated%variant{
+                    "ई.पू.",
+                    "सन्",
+                }
+                wide{
+                    "ई.पू.",
+                    "ई. सन्",
+                }
+            }
+            intervalFormats{
+                Bh{
+                    B{"h B – h B"}
+                    h{"h – h B"}
+                }
+                Bhm{
+                    B{"h:mm B – h:mm B"}
+                    h{"h:mm – h:mm B"}
+                    m{"h:mm – h:mm B"}
+                }
+                Gy{
+                    G{"y G – y G"}
+                    y{"y – y G"}
+                }
+                GyM{
+                    G{"M/y GGGGG – M/y GGGGG"}
+                    M{"M/y – M/y GGGGG"}
+                    y{"M/y – M/y GGGGG"}
+                }
+                GyMEd{
+                    G{"E, M/d/y GGGGG – E, M/d/y GGGGG"}
+                    M{"E, M/d/y – E, M/d/y GGGGG"}
+                    d{"E, M/d/y – E, M/d/y GGGGG"}
+                    y{"E, M/d/y – E, M/d/y GGGGG"}
+                }
+                GyMMM{
+                    G{"MMM y G – MMM y G"}
+                    M{"MMM – MMM y G"}
+                    y{"MMM y – MMM y G"}
+                }
+                GyMMMEd{
+                    G{"E, MMM d, y G – E, MMM d, y G"}
+                    M{"E, MMM d – E, MMM d, y G"}
+                    d{"E, MMM d – E, MMM d, y G"}
+                    y{"E, MMM d, y – E, MMM d, y G"}
+                }
+                GyMMMd{
+                    G{"MMM d, y G – MMM d, y G"}
+                    M{"MMM d – MMM d, y G"}
+                    d{"MMM d – d, y G"}
+                    y{"MMM d, y – MMM d, y G"}
+                }
+                GyMd{
+                    G{"M/d/y GGGGG – M/d/y GGGGG"}
+                    M{"M/d/y – M/d/y GGGGG"}
+                    d{"M/d/y – M/d/y GGGGG"}
+                    y{"M/d/y – M/d/y GGGGG"}
+                }
+                H{
+                    H{"HH – HH"}
+                }
+                Hm{
+                    H{"HH:mm – HH:mm"}
+                    m{"HH:mm – HH:mm"}
+                }
+                Hmv{
+                    H{"HH:mm – HH:mm v"}
+                    m{"HH:mm – HH:mm v"}
+                }
+                Hv{
+                    H{"HH – HH v"}
+                }
+                M{
+                    M{"M – M"}
+                }
+                MEd{
+                    M{"E, M/d – E, M/d"}
+                    d{"E, M/d – E, M/d"}
+                }
+                MMM{
+                    M{"MMM – MMM"}
+                }
+                MMMEd{
+                    M{"E, MMM d – E, MMM d"}
+                    d{"E, MMM d – E, MMM d"}
+                }
+                MMMd{
+                    M{"MMM d – MMM d"}
+                    d{"MMM d – d"}
+                }
+                Md{
+                    M{"M/d – M/d"}
+                    d{"M/d – M/d"}
+                }
+                d{
+                    d{"d – d"}
+                }
+                fallback{"{0} – {1}"}
+                h{
+                    a{"h a – h a"}
+                    h{"h – h a"}
+                }
+                hm{
+                    a{"h:mm a – h:mm a"}
+                    h{"h:mm – h:mm a"}
+                    m{"h:mm – h:mm a"}
+                }
+                hmv{
+                    a{"h:mm a – h:mm a v"}
+                    h{"h:mm – h:mm a v"}
+                    m{"h:mm – h:mm a v"}
+                }
+                hv{
+                    a{"h a – h a v"}
+                    h{"h – h a v"}
+                }
+                y{
+                    y{"y – y"}
+                }
+                yM{
+                    M{"M/y – M/y"}
+                    y{"M/y – M/y"}
+                }
+                yMEd{
+                    M{"E, M/d/y – E, M/d/y"}
+                    d{"E, M/d/y – E, M/d/y"}
+                    y{"E, M/d/y – E, M/d/y"}
+                }
+                yMMM{
+                    M{"MMM – MMM y"}
+                    y{"MMM y – MMM y"}
+                }
+                yMMMEd{
+                    M{"E, MMM d – E, MMM d, y"}
+                    d{"E, MMM d – E, MMM d, y"}
+                    y{"E, MMM d, y – E, MMM d, y"}
+                }
+                yMMMM{
+                    M{"MMMM – MMMM y"}
+                    y{"MMMM y – MMMM y"}
+                }
+                yMMMd{
+                    M{"MMM d – MMM d, y"}
+                    d{"MMM d – d, y"}
+                    y{"MMM d, y – MMM d, y"}
+                }
+                yMd{
+                    M{"M/d/y – M/d/y"}
+                    d{"M/d/y – M/d/y"}
+                    y{"M/d/y – M/d/y"}
+                }
+            }
+            monthNames{
+                format{
+                    abbreviated{
+                        "जन.",
+                        "फर.",
+                        "मार्च",
+                        "अप्रैल",
+                        "मेई",
+                        "जून",
+                        "जुलाई",
+                        "अग.",
+                        "सित.",
+                        "अक्तू.",
+                        "नव.",
+                        "दिस.",
+                    }
+                    narrow{
+                        "ज",
+                        "फ",
+                        "मा",
+                        "अ",
+                        "मे",
+                        "जू",
+                        "जु",
+                        "अ",
+                        "सि",
+                        "अ",
+                        "न",
+                        "दि",
+                    }
+                    wide{
+                        "जनवरी",
+                        "फरवरी",
+                        "मार्च",
+                        "अप्रैल",
+                        "मेई",
+                        "जून",
+                        "जुलाई",
+                        "अगस्त",
+                        "सितंबर",
+                        "अत्तूबर",
+                        "नवंबर",
+                        "दिसंबर",
+                    }
+                }
+                stand-alone{
+                    abbreviated{
+                        "जन.",
+                        "फर.",
+                        "मार्च",
+                        "अप्रैल",
+                        "मेई",
+                        "जून",
+                        "जुलाई",
+                        "अग.",
+                        "सित.",
+                        "अक्तू.",
+                        "नव.",
+                        "दिस.",
+                    }
+                    narrow{
+                        "ज",
+                        "फ",
+                        "मा",
+                        "अ",
+                        "मे",
+                        "जू",
+                        "जु",
+                        "अ",
+                        "सि",
+                        "अ",
+                        "न",
+                        "दि",
+                    }
+                    wide{
+                        "जनवरी",
+                        "फरवरी",
+                        "मार्च",
+                        "अप्रैल",
+                        "मेई",
+                        "जून",
+                        "जुलाई",
+                        "अगस्त",
+                        "सितंबर",
+                        "अक्तूबर",
+                        "नवंबर",
+                        "दिसंबर",
+                    }
+                }
+            }
+            quarters{
+                format{
+                    abbreviated{
+                        "त्र.1",
+                        "त्र.2",
+                        "त्र.3",
+                        "त्र.4",
+                    }
+                    narrow{
+                        "1",
+                        "2",
+                        "3",
+                        "4",
+                    }
+                    wide{
+                        "पैहली त्रमाही",
+                        "दूई त्रमाही",
+                        "त्री त्रमाही",
+                        "चौथी त्रमाही",
+                    }
+                }
+                stand-alone{
+                    abbreviated{
+                        "त्र.1",
+                        "त्र.2",
+                        "त्र.3",
+                        "त्र.4",
+                    }
+                    narrow{
+                        "1",
+                        "2",
+                        "3",
+                        "4",
+                    }
+                    wide{
+                        "पैहली त्रमाही",
+                        "दूई त्रमाही",
+                        "त्री त्रमाही",
+                        "चौथी त्रमाही",
+                    }
+                }
+            }
+        }
+    }
+    delimiters{
+        alternateQuotationEnd{"’"}
+        alternateQuotationStart{"‘"}
+        quotationEnd{"”"}
+        quotationStart{"“"}
+    }
+    fields{
+        day{
+            dn{"दिन"}
+            relative{
+                "-1"{"जंदा कल"}
+                "0"{"अज्ज"}
+                "1"{"औंदा कल"}
+            }
+        }
+        day-narrow{
+            dn{"दिन"}
+            relative{
+                "-1"{"जंदा कल"}
+                "0"{"अज्ज"}
+                "1"{"औंदा कल"}
+            }
+        }
+        day-short{
+            dn{"दिन"}
+            relative{
+                "-1"{"जंदा कल"}
+                "0"{"अज्ज"}
+                "1"{"औंदा कल"}
+            }
+        }
+        dayperiod{
+            dn{"सवेर/बा.दपै."}
+        }
+        era{
+            dn{"जुग"}
+        }
+        hour{
+            dn{"घैंटा"}
+        }
+        hour-narrow{
+            dn{"घैं."}
+        }
+        hour-short{
+            dn{"घैं."}
+        }
+        minute{
+            dn{"मिंट्‌ट"}
+        }
+        minute-narrow{
+            dn{"मिं."}
+        }
+        minute-short{
+            dn{"मिं."}
+        }
+        month{
+            dn{"म्हीना"}
+        }
+        month-narrow{
+            dn{"म्ही."}
+        }
+        month-short{
+            dn{"म्ही."}
+        }
+        quarter{
+            dn{"त्रमाही"}
+        }
+        quarter-narrow{
+            dn{"त्रमा."}
+        }
+        quarter-short{
+            dn{"त्रमा."}
+        }
+        second{
+            dn{"सकैंट"}
+        }
+        second-narrow{
+            dn{"सकैं."}
+        }
+        second-short{
+            dn{"सकैं."}
+        }
+        week{
+            dn{"हफ्ता"}
+        }
+        week-narrow{
+            dn{"ह."}
+        }
+        week-short{
+            dn{"ह."}
+        }
+        weekday{
+            dn{"हफ्ते दा दिन"}
+        }
+        year{
+            dn{"ब’रा"}
+        }
+        year-narrow{
+            dn{"ब."}
+        }
+        year-short{
+            dn{"ब."}
+        }
+        zone{
+            dn{"समां खेत्तर"}
+        }
+    }
+    listPattern{
+        standard{
+            2{"{0} ते {1}"}
+            end{"{0}, ते {1}"}
+            middle{"{0}, {1}"}
+            start{"{0}, {1}"}
+        }
+    }
+    measurementSystemNames{
+        UK{"यूके"}
+        US{"यूएस"}
+        metric{"मीट्रिक"}
+    }
+}
diff --git a/icu4c/source/data/curr/nds.txt b/icu4c/source/data/locales/doi_IN.txt
similarity index 62%
copy from icu4c/source/data/curr/nds.txt
copy to icu4c/source/data/locales/doi_IN.txt
index ac58836..0ca58e2 100644
--- a/icu4c/source/data/curr/nds.txt
+++ b/icu4c/source/data/locales/doi_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-nds{
-    Version{"37"}
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+doi_IN{
 }
diff --git a/icu4c/source/data/locales/dsb.txt b/icu4c/source/data/locales/dsb.txt
index 3cede96..631eb9a 100644
--- a/icu4c/source/data/locales/dsb.txt
+++ b/icu4c/source/data/locales/dsb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dsb{
     AuxExemplarCharacters{
         "[á à ă â å ä ã ą ā æ ç ď đ é è ĕ ê ë ė ę ē ğ í ì ĭ î ï İ ī ı ĺ ľ ň ñ ò ŏ ô ö"
@@ -196,7 +197,6 @@
         }
         minimumGroupingDigits{"1"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -351,6 +351,7 @@
                 MEd{"E, d.M."}
                 MMM{"LLL"}
                 MMMEd{"E, d. MMM"}
+                MMMMd{"d MMMM"}
                 MMMd{"d. MMM"}
                 Md{"d.M."}
                 d{"d"}
@@ -363,6 +364,7 @@
                 yMEd{"E, d.M.y"}
                 yMMM{"MMM y"}
                 yMMMEd{"E, d. MMM y"}
+                yMMMM{"LLLL y"}
                 yMMMd{"d. MMM y"}
                 yMd{"d.M.y"}
                 yQQQ{"QQQ y"}
diff --git a/icu4c/source/data/locales/dsb_DE.txt b/icu4c/source/data/locales/dsb_DE.txt
index 5954457..f692ce2 100644
--- a/icu4c/source/data/locales/dsb_DE.txt
+++ b/icu4c/source/data/locales/dsb_DE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dsb_DE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/dua.txt b/icu4c/source/data/locales/dua.txt
index 2086dd2..bb2bbcb 100644
--- a/icu4c/source/data/locales/dua.txt
+++ b/icu4c/source/data/locales/dua.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dua{
     AuxExemplarCharacters{"[h q v x z]"}
     ExemplarCharacters{
@@ -21,7 +22,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/dua_CM.txt b/icu4c/source/data/locales/dua_CM.txt
index bc38a21..d9549ef 100644
--- a/icu4c/source/data/locales/dua_CM.txt
+++ b/icu4c/source/data/locales/dua_CM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dua_CM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/dyo.txt b/icu4c/source/data/locales/dyo.txt
index 3cc6010..9dd95f9 100644
--- a/icu4c/source/data/locales/dyo.txt
+++ b/icu4c/source/data/locales/dyo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dyo{
     AuxExemplarCharacters{"[z]"}
     ExemplarCharacters{"[a á b c d e é f g h i í j k l m n ñ ŋ o ó p q r s t u ú v w x y]"}
@@ -18,7 +19,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/dyo_SN.txt b/icu4c/source/data/locales/dyo_SN.txt
index 71e2096..8328af7 100644
--- a/icu4c/source/data/locales/dyo_SN.txt
+++ b/icu4c/source/data/locales/dyo_SN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dyo_SN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/dz.txt b/icu4c/source/data/locales/dz.txt
index ac56ed4..197ebf0 100644
--- a/icu4c/source/data/locales/dz.txt
+++ b/icu4c/source/data/locales/dz.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dz{
     AuxExemplarCharacters{
         "[\u0F84 ཊ ཋ ཌ ཎ \u0F7E ཥ \u0F80 \u0F7B \u0F7D \u0F9A \u0F9B \u0F9C \u0F9E "
@@ -106,7 +107,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/dz_BT.txt b/icu4c/source/data/locales/dz_BT.txt
index c87b406..b66ceab 100644
--- a/icu4c/source/data/locales/dz_BT.txt
+++ b/icu4c/source/data/locales/dz_BT.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dz_BT{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ebu.txt b/icu4c/source/data/locales/ebu.txt
index bf3b50e..ba6c72f 100644
--- a/icu4c/source/data/locales/ebu.txt
+++ b/icu4c/source/data/locales/ebu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ebu{
     ExemplarCharacters{"[a b c d e f g h i ĩ j k l m n o p q r s t u ũ v w x y z]"}
     ExemplarCharactersIndex{"[A B C D E F G H I Ĩ J K L M N O P Q R S T U Ũ V W X Y Z]"}
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ebu_KE.txt b/icu4c/source/data/locales/ebu_KE.txt
index a7e1994..db3d222 100644
--- a/icu4c/source/data/locales/ebu_KE.txt
+++ b/icu4c/source/data/locales/ebu_KE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ebu_KE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ee.txt b/icu4c/source/data/locales/ee.txt
index 3ae6fb7..fe56fbd 100644
--- a/icu4c/source/data/locales/ee.txt
+++ b/icu4c/source/data/locales/ee.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ee{
     AuxExemplarCharacters{"[ă â å ä ā æ c ç ĕ ê ë ĭ î ï j ñ ŏ ô ö ø œ q ŭ û ü ÿ]"}
     ExemplarCharacters{
@@ -200,7 +201,6 @@
         }
         minimumGroupingDigits{"3"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ee_GH.txt b/icu4c/source/data/locales/ee_GH.txt
index c153dd6..7ad3935 100644
--- a/icu4c/source/data/locales/ee_GH.txt
+++ b/icu4c/source/data/locales/ee_GH.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ee_GH{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ee_TG.txt b/icu4c/source/data/locales/ee_TG.txt
index 2e66ae3..5e03a3c 100644
--- a/icu4c/source/data/locales/ee_TG.txt
+++ b/icu4c/source/data/locales/ee_TG.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ee_TG{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/el.txt b/icu4c/source/data/locales/el.txt
index 54a6167..4e8dad1 100644
--- a/icu4c/source/data/locales/el.txt
+++ b/icu4c/source/data/locales/el.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 el{
     AuxExemplarCharacters{
         "[ἀ ἄ ἂ ἆ ἁ ἅ ἃ ἇ ὰ ᾶ ἐ ἔ ἒ ἑ ἕ ἓ ὲ ἠ ἤ ἢ ἦ ἡ ἥ ἣ ἧ ὴ ῆ ἰ ἴ ἲ ἶ ἱ ἵ ἳ ἷ ὶ ῖ ῒ"
@@ -216,7 +217,6 @@
         native{"latn"}
         traditional{"grek"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/el_CY.txt b/icu4c/source/data/locales/el_CY.txt
index 555b8c5..055f23c 100644
--- a/icu4c/source/data/locales/el_CY.txt
+++ b/icu4c/source/data/locales/el_CY.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 el_CY{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/el_GR.txt b/icu4c/source/data/locales/el_GR.txt
index a87677f..27e3cab 100644
--- a/icu4c/source/data/locales/el_GR.txt
+++ b/icu4c/source/data/locales/el_GR.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 el_GR{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en.txt b/icu4c/source/data/locales/en.txt
index f4572a4..5ccfa72 100644
--- a/icu4c/source/data/locales/en.txt
+++ b/icu4c/source/data/locales/en.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en{
     AuxExemplarCharacters{
         "[á à ă â å ä ã ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ú ù ŭ û ü ū ÿ"
@@ -205,7 +206,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
diff --git a/icu4c/source/data/locales/en_001.txt b/icu4c/source/data/locales/en_001.txt
index 990738f..28f3b13 100644
--- a/icu4c/source/data/locales/en_001.txt
+++ b/icu4c/source/data/locales/en_001.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_001{
-    Version{"37"}
     calendar{
         chinese{
             DateTimePatterns{
@@ -98,7 +98,6 @@
                 "{1}, {0}",
             }
             availableFormats{
-                Bhms{"h:mm.ss B"}
                 EBhm{"E, h:mm B"}
                 EBhms{"E, h:mm:ss B"}
                 EHm{"E, HH:mm"}
diff --git a/icu4c/source/data/locales/en_150.txt b/icu4c/source/data/locales/en_150.txt
index b2e49e4..ae87483 100644
--- a/icu4c/source/data/locales/en_150.txt
+++ b/icu4c/source/data/locales/en_150.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_150{
     %%Parent{"en_001"}
     NumberElements{
@@ -10,7 +11,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_AE.txt b/icu4c/source/data/locales/en_AE.txt
index 70ed249..5fae06d 100644
--- a/icu4c/source/data/locales/en_AE.txt
+++ b/icu4c/source/data/locales/en_AE.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AE{
-    Version{"37"}
     calendar{
         chinese{
             DateTimePatterns{
@@ -98,7 +98,6 @@
                 "{1}, {0}",
             }
             availableFormats{
-                Bhms{"h:mm.ss B"}
                 EBhm{"E, h:mm B"}
                 EBhms{"E, h:mm:ss B"}
                 EHm{"E, HH:mm"}
diff --git a/icu4c/source/data/locales/en_AG.txt b/icu4c/source/data/locales/en_AG.txt
index 15f4f3b..95a979e 100644
--- a/icu4c/source/data/locales/en_AG.txt
+++ b/icu4c/source/data/locales/en_AG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_AI.txt b/icu4c/source/data/locales/en_AI.txt
index 40e8977..7bf3f7f 100644
--- a/icu4c/source/data/locales/en_AI.txt
+++ b/icu4c/source/data/locales/en_AI.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AI{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_AS.txt b/icu4c/source/data/locales/en_AS.txt
index 3600aa7..a744f6e 100644
--- a/icu4c/source/data/locales/en_AS.txt
+++ b/icu4c/source/data/locales/en_AS.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AS{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_AT.txt b/icu4c/source/data/locales/en_AT.txt
index 48f6116..0f1db9f 100644
--- a/icu4c/source/data/locales/en_AT.txt
+++ b/icu4c/source/data/locales/en_AT.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AT{
     %%Parent{"en_150"}
     NumberElements{
@@ -16,5 +17,4 @@
             }
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_AU.txt b/icu4c/source/data/locales/en_AU.txt
index 87f5276..ec6eb75 100644
--- a/icu4c/source/data/locales/en_AU.txt
+++ b/icu4c/source/data/locales/en_AU.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AU{
     %%Parent{"en_001"}
-    ExemplarCharactersNumbers{"[↑]"}
     NumberElements{
         latn{
             miscPatterns{
@@ -13,7 +13,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         chinese{
             monthNames{
@@ -271,6 +270,20 @@
             }
             monthNames{
                 format{
+                    abbreviated{
+                        "Jan",
+                        "Feb",
+                        "Mar",
+                        "Apr",
+                        "May",
+                        "June",
+                        "July",
+                        "Aug",
+                        "Sept",
+                        "Oct",
+                        "Nov",
+                        "Dec",
+                    }
                     narrow{
                         "J",
                         "F",
diff --git a/icu4c/source/data/locales/en_BB.txt b/icu4c/source/data/locales/en_BB.txt
index 814000f..d62d192 100644
--- a/icu4c/source/data/locales/en_BB.txt
+++ b/icu4c/source/data/locales/en_BB.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BB{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_BE.txt b/icu4c/source/data/locales/en_BE.txt
index a09e9f0..3d0104f 100644
--- a/icu4c/source/data/locales/en_BE.txt
+++ b/icu4c/source/data/locales/en_BE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BE{
     %%Parent{"en_150"}
     NumberElements{
@@ -10,7 +11,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_BI.txt b/icu4c/source/data/locales/en_BI.txt
index 1c33a6b..e4f823f 100644
--- a/icu4c/source/data/locales/en_BI.txt
+++ b/icu4c/source/data/locales/en_BI.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BI{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_BM.txt b/icu4c/source/data/locales/en_BM.txt
index 1f9a62c..d45a1f9 100644
--- a/icu4c/source/data/locales/en_BM.txt
+++ b/icu4c/source/data/locales/en_BM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_BS.txt b/icu4c/source/data/locales/en_BS.txt
index 115d868..fa71936 100644
--- a/icu4c/source/data/locales/en_BS.txt
+++ b/icu4c/source/data/locales/en_BS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_BW.txt b/icu4c/source/data/locales/en_BW.txt
index b3b8e08..5f3a00a 100644
--- a/icu4c/source/data/locales/en_BW.txt
+++ b/icu4c/source/data/locales/en_BW.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BW{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_BZ.txt b/icu4c/source/data/locales/en_BZ.txt
index 991e9d0..87bddc6 100644
--- a/icu4c/source/data/locales/en_BZ.txt
+++ b/icu4c/source/data/locales/en_BZ.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BZ{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_CA.txt b/icu4c/source/data/locales/en_CA.txt
index 669b014..06afc44 100644
--- a/icu4c/source/data/locales/en_CA.txt
+++ b/icu4c/source/data/locales/en_CA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CA{
     %%Parent{"en_001"}
     NumberElements{
@@ -9,7 +10,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         chinese{
             DateTimePatterns{
@@ -440,6 +440,18 @@
                 }
             }
         }
+        mon-narrow{
+            relativeTime{
+                future{
+                    one{"in {0} M"}
+                    other{"in {0} Mo’s"}
+                }
+                past{
+                    one{"{0} M ago"}
+                    other{"{0} Mo’s ago"}
+                }
+            }
+        }
         mon-short{
             relativeTime{
                 future{
@@ -710,13 +722,4 @@
             }
         }
     }
-    listPattern{
-        standard-narrow{
-            2{"{0} and {1}"}
-            end{"{0}, and {1}"}
-        }
-        standard-short{
-            end{"{0}, and {1}"}
-        }
-    }
 }
diff --git a/icu4c/source/data/locales/en_CC.txt b/icu4c/source/data/locales/en_CC.txt
index 7c53982..24d672a 100644
--- a/icu4c/source/data/locales/en_CC.txt
+++ b/icu4c/source/data/locales/en_CC.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CC{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_CH.txt b/icu4c/source/data/locales/en_CH.txt
index 2f72067..cbc74e6 100644
--- a/icu4c/source/data/locales/en_CH.txt
+++ b/icu4c/source/data/locales/en_CH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CH{
     %%Parent{"en_150"}
     NumberElements{
@@ -14,5 +15,4 @@
             }
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_CK.txt b/icu4c/source/data/locales/en_CK.txt
index d268aa3..08077ab 100644
--- a/icu4c/source/data/locales/en_CK.txt
+++ b/icu4c/source/data/locales/en_CK.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CK{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_CM.txt b/icu4c/source/data/locales/en_CM.txt
index 07a99a9..099fcdc 100644
--- a/icu4c/source/data/locales/en_CM.txt
+++ b/icu4c/source/data/locales/en_CM.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CM{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_CX.txt b/icu4c/source/data/locales/en_CX.txt
index 275cdb0..8749bf1 100644
--- a/icu4c/source/data/locales/en_CX.txt
+++ b/icu4c/source/data/locales/en_CX.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CX{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_CY.txt b/icu4c/source/data/locales/en_CY.txt
index 21b11b7..d4e75c0 100644
--- a/icu4c/source/data/locales/en_CY.txt
+++ b/icu4c/source/data/locales/en_CY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CY{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_DE.txt b/icu4c/source/data/locales/en_DE.txt
index 0b4b663..070cf16 100644
--- a/icu4c/source/data/locales/en_DE.txt
+++ b/icu4c/source/data/locales/en_DE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DE{
     %%Parent{"en_150"}
     NumberElements{
@@ -14,5 +15,4 @@
             }
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_DG.txt b/icu4c/source/data/locales/en_DG.txt
index 513a5bf..32747b4 100644
--- a/icu4c/source/data/locales/en_DG.txt
+++ b/icu4c/source/data/locales/en_DG.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DG{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_DK.txt b/icu4c/source/data/locales/en_DK.txt
index a62de9c..2734d64 100644
--- a/icu4c/source/data/locales/en_DK.txt
+++ b/icu4c/source/data/locales/en_DK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DK{
     %%Parent{"en_150"}
     NumberElements{
@@ -15,7 +16,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             availableFormats{
diff --git a/icu4c/source/data/locales/en_DM.txt b/icu4c/source/data/locales/en_DM.txt
index 5bfedb7..224df76 100644
--- a/icu4c/source/data/locales/en_DM.txt
+++ b/icu4c/source/data/locales/en_DM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_ER.txt b/icu4c/source/data/locales/en_ER.txt
index afd82fc..a39df78 100644
--- a/icu4c/source/data/locales/en_ER.txt
+++ b/icu4c/source/data/locales/en_ER.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ER{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_FI.txt b/icu4c/source/data/locales/en_FI.txt
index c44a916..40955b5 100644
--- a/icu4c/source/data/locales/en_FI.txt
+++ b/icu4c/source/data/locales/en_FI.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FI{
     %%Parent{"en_150"}
     ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
@@ -15,7 +16,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             availableFormats{
diff --git a/icu4c/source/data/locales/en_FJ.txt b/icu4c/source/data/locales/en_FJ.txt
index 0c4ca01..65b19ac 100644
--- a/icu4c/source/data/locales/en_FJ.txt
+++ b/icu4c/source/data/locales/en_FJ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FJ{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_FK.txt b/icu4c/source/data/locales/en_FK.txt
index 25415ea..c27a1f2 100644
--- a/icu4c/source/data/locales/en_FK.txt
+++ b/icu4c/source/data/locales/en_FK.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FK{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_FM.txt b/icu4c/source/data/locales/en_FM.txt
index 352f324..ad38147 100644
--- a/icu4c/source/data/locales/en_FM.txt
+++ b/icu4c/source/data/locales/en_FM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_GB.txt b/icu4c/source/data/locales/en_GB.txt
index b3a321a..91b0610 100644
--- a/icu4c/source/data/locales/en_GB.txt
+++ b/icu4c/source/data/locales/en_GB.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GB{
     %%Parent{"en_001"}
     NumberElements{
@@ -10,7 +11,6 @@
         }
         minimumGroupingDigits{"1"}
     }
-    Version{"37"}
     calendar{
         generic{
             availableFormats{
@@ -110,6 +110,20 @@
             }
             monthNames{
                 format{
+                    abbreviated{
+                        "Jan",
+                        "Feb",
+                        "Mar",
+                        "Apr",
+                        "May",
+                        "Jun",
+                        "Jul",
+                        "Aug",
+                        "Sept",
+                        "Oct",
+                        "Nov",
+                        "Dec",
+                    }
                     narrow{
                         "J",
                         "F",
@@ -135,7 +149,7 @@
                         "Jun",
                         "Jul",
                         "Aug",
-                        "Sep",
+                        "Sept",
                         "Oct",
                         "Nov",
                         "Dec",
diff --git a/icu4c/source/data/locales/en_GD.txt b/icu4c/source/data/locales/en_GD.txt
index 98ca5e4..5aadd22 100644
--- a/icu4c/source/data/locales/en_GD.txt
+++ b/icu4c/source/data/locales/en_GD.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GD{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_GG.txt b/icu4c/source/data/locales/en_GG.txt
index 2fe3408..08ab5d9 100644
--- a/icu4c/source/data/locales/en_GG.txt
+++ b/icu4c/source/data/locales/en_GG.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GG{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_GH.txt b/icu4c/source/data/locales/en_GH.txt
index de37150..8d0f240 100644
--- a/icu4c/source/data/locales/en_GH.txt
+++ b/icu4c/source/data/locales/en_GH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GH{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_GI.txt b/icu4c/source/data/locales/en_GI.txt
index 54c7839..5888269 100644
--- a/icu4c/source/data/locales/en_GI.txt
+++ b/icu4c/source/data/locales/en_GI.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GI{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_GM.txt b/icu4c/source/data/locales/en_GM.txt
index bbf424c..0f9710e 100644
--- a/icu4c/source/data/locales/en_GM.txt
+++ b/icu4c/source/data/locales/en_GM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_GU.txt b/icu4c/source/data/locales/en_GU.txt
index cbdb866..17c45f6 100644
--- a/icu4c/source/data/locales/en_GU.txt
+++ b/icu4c/source/data/locales/en_GU.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GU{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_GY.txt b/icu4c/source/data/locales/en_GY.txt
index 905d5be..0e53543 100644
--- a/icu4c/source/data/locales/en_GY.txt
+++ b/icu4c/source/data/locales/en_GY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GY{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_HK.txt b/icu4c/source/data/locales/en_HK.txt
index e5a9761..9dd2f81 100644
--- a/icu4c/source/data/locales/en_HK.txt
+++ b/icu4c/source/data/locales/en_HK.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_HK{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_IE.txt b/icu4c/source/data/locales/en_IE.txt
index c8239cc..f1c7054 100644
--- a/icu4c/source/data/locales/en_IE.txt
+++ b/icu4c/source/data/locales/en_IE.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IE{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_IL.txt b/icu4c/source/data/locales/en_IL.txt
index 8abcfef..a6beec8 100644
--- a/icu4c/source/data/locales/en_IL.txt
+++ b/icu4c/source/data/locales/en_IL.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IL{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         generic{
             availableFormats{
diff --git a/icu4c/source/data/locales/en_IM.txt b/icu4c/source/data/locales/en_IM.txt
index 2c4dfaa..b6bcfdd 100644
--- a/icu4c/source/data/locales/en_IM.txt
+++ b/icu4c/source/data/locales/en_IM.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IM{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_IN.txt b/icu4c/source/data/locales/en_IN.txt
index 95c1278..e63979b 100644
--- a/icu4c/source/data/locales/en_IN.txt
+++ b/icu4c/source/data/locales/en_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IN{
     %%Parent{"en_001"}
     NumberElements{
@@ -66,7 +67,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_IO.txt b/icu4c/source/data/locales/en_IO.txt
index ac8170c..d765e02 100644
--- a/icu4c/source/data/locales/en_IO.txt
+++ b/icu4c/source/data/locales/en_IO.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IO{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_JE.txt b/icu4c/source/data/locales/en_JE.txt
index f04e15a..e41a363 100644
--- a/icu4c/source/data/locales/en_JE.txt
+++ b/icu4c/source/data/locales/en_JE.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_JE{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_JM.txt b/icu4c/source/data/locales/en_JM.txt
index 695ae1a..08a5127 100644
--- a/icu4c/source/data/locales/en_JM.txt
+++ b/icu4c/source/data/locales/en_JM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_JM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_KE.txt b/icu4c/source/data/locales/en_KE.txt
index 2ebad3e..1fcb728 100644
--- a/icu4c/source/data/locales/en_KE.txt
+++ b/icu4c/source/data/locales/en_KE.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KE{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_KI.txt b/icu4c/source/data/locales/en_KI.txt
index 6c68a9f..8cd023d 100644
--- a/icu4c/source/data/locales/en_KI.txt
+++ b/icu4c/source/data/locales/en_KI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KI{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_KN.txt b/icu4c/source/data/locales/en_KN.txt
index 35ebc91..092c41e 100644
--- a/icu4c/source/data/locales/en_KN.txt
+++ b/icu4c/source/data/locales/en_KN.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KN{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_KY.txt b/icu4c/source/data/locales/en_KY.txt
index 71fa196..a0c571e 100644
--- a/icu4c/source/data/locales/en_KY.txt
+++ b/icu4c/source/data/locales/en_KY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KY{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_LC.txt b/icu4c/source/data/locales/en_LC.txt
index 5e248ad..ce24452 100644
--- a/icu4c/source/data/locales/en_LC.txt
+++ b/icu4c/source/data/locales/en_LC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_LC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_LR.txt b/icu4c/source/data/locales/en_LR.txt
index 0a77adc..979fa99 100644
--- a/icu4c/source/data/locales/en_LR.txt
+++ b/icu4c/source/data/locales/en_LR.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_LR{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_LS.txt b/icu4c/source/data/locales/en_LS.txt
index 14848c9..bd1380c 100644
--- a/icu4c/source/data/locales/en_LS.txt
+++ b/icu4c/source/data/locales/en_LS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_LS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_MG.txt b/icu4c/source/data/locales/en_MG.txt
index d8a8eff..5769746 100644
--- a/icu4c/source/data/locales/en_MG.txt
+++ b/icu4c/source/data/locales/en_MG.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MG{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_MH.txt b/icu4c/source/data/locales/en_MH.txt
index 35a53e3..c35d505 100644
--- a/icu4c/source/data/locales/en_MH.txt
+++ b/icu4c/source/data/locales/en_MH.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MH{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_MO.txt b/icu4c/source/data/locales/en_MO.txt
index 2cd5c0a..769b2ea 100644
--- a/icu4c/source/data/locales/en_MO.txt
+++ b/icu4c/source/data/locales/en_MO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MO{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_MP.txt b/icu4c/source/data/locales/en_MP.txt
index d3ae815..0f6b5c4 100644
--- a/icu4c/source/data/locales/en_MP.txt
+++ b/icu4c/source/data/locales/en_MP.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MP{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_MS.txt b/icu4c/source/data/locales/en_MS.txt
index 619cbc2..79e874a 100644
--- a/icu4c/source/data/locales/en_MS.txt
+++ b/icu4c/source/data/locales/en_MS.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MS{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_MT.txt b/icu4c/source/data/locales/en_MT.txt
index 46a9632..fdc6f53 100644
--- a/icu4c/source/data/locales/en_MT.txt
+++ b/icu4c/source/data/locales/en_MT.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MT{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_MU.txt b/icu4c/source/data/locales/en_MU.txt
index 1945c92..6d17027 100644
--- a/icu4c/source/data/locales/en_MU.txt
+++ b/icu4c/source/data/locales/en_MU.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MU{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_MW.txt b/icu4c/source/data/locales/en_MW.txt
index 0624454..1920911 100644
--- a/icu4c/source/data/locales/en_MW.txt
+++ b/icu4c/source/data/locales/en_MW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_MY.txt b/icu4c/source/data/locales/en_MY.txt
index ffd93f8..891c100 100644
--- a/icu4c/source/data/locales/en_MY.txt
+++ b/icu4c/source/data/locales/en_MY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MY{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_NA.txt b/icu4c/source/data/locales/en_NA.txt
index 0b019a8..c1a4e58 100644
--- a/icu4c/source/data/locales/en_NA.txt
+++ b/icu4c/source/data/locales/en_NA.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NA{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_NF.txt b/icu4c/source/data/locales/en_NF.txt
index e2426fe..acd5a55 100644
--- a/icu4c/source/data/locales/en_NF.txt
+++ b/icu4c/source/data/locales/en_NF.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NF{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_NG.txt b/icu4c/source/data/locales/en_NG.txt
index eafed4e..06b8863 100644
--- a/icu4c/source/data/locales/en_NG.txt
+++ b/icu4c/source/data/locales/en_NG.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NG{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_NH.txt b/icu4c/source/data/locales/en_NH.txt
index 958b96b..5dc995b 100644
--- a/icu4c/source/data/locales/en_NH.txt
+++ b/icu4c/source/data/locales/en_NH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NH{
     "%%ALIAS"{"en_VU"}
 }
diff --git a/icu4c/source/data/locales/en_NL.txt b/icu4c/source/data/locales/en_NL.txt
index 81e609d..06bb980 100644
--- a/icu4c/source/data/locales/en_NL.txt
+++ b/icu4c/source/data/locales/en_NL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NL{
     %%Parent{"en_150"}
     NumberElements{
@@ -14,5 +15,4 @@
             }
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_NR.txt b/icu4c/source/data/locales/en_NR.txt
index 66fac69..2f2c2e1 100644
--- a/icu4c/source/data/locales/en_NR.txt
+++ b/icu4c/source/data/locales/en_NR.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NR{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_NU.txt b/icu4c/source/data/locales/en_NU.txt
index ccbeedc..17f3371 100644
--- a/icu4c/source/data/locales/en_NU.txt
+++ b/icu4c/source/data/locales/en_NU.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NU{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_NZ.txt b/icu4c/source/data/locales/en_NZ.txt
index 165be8e..07e76e2 100644
--- a/icu4c/source/data/locales/en_NZ.txt
+++ b/icu4c/source/data/locales/en_NZ.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NZ{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_PG.txt b/icu4c/source/data/locales/en_PG.txt
index ffddbf4..217c90f 100644
--- a/icu4c/source/data/locales/en_PG.txt
+++ b/icu4c/source/data/locales/en_PG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_PH.txt b/icu4c/source/data/locales/en_PH.txt
index 9657884..1b59777 100644
--- a/icu4c/source/data/locales/en_PH.txt
+++ b/icu4c/source/data/locales/en_PH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PH{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_PK.txt b/icu4c/source/data/locales/en_PK.txt
index 5b75270..3c0c226 100644
--- a/icu4c/source/data/locales/en_PK.txt
+++ b/icu4c/source/data/locales/en_PK.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PK{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_PN.txt b/icu4c/source/data/locales/en_PN.txt
index edc09ab..bc2dca3 100644
--- a/icu4c/source/data/locales/en_PN.txt
+++ b/icu4c/source/data/locales/en_PN.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PN{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_PR.txt b/icu4c/source/data/locales/en_PR.txt
index 52899cb..f08e6de 100644
--- a/icu4c/source/data/locales/en_PR.txt
+++ b/icu4c/source/data/locales/en_PR.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PR{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_PW.txt b/icu4c/source/data/locales/en_PW.txt
index ed60f26..89ef3e6 100644
--- a/icu4c/source/data/locales/en_PW.txt
+++ b/icu4c/source/data/locales/en_PW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_RH.txt b/icu4c/source/data/locales/en_RH.txt
index b60f708..24bad29 100644
--- a/icu4c/source/data/locales/en_RH.txt
+++ b/icu4c/source/data/locales/en_RH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_RH{
     "%%ALIAS"{"en_ZW"}
 }
diff --git a/icu4c/source/data/locales/en_RW.txt b/icu4c/source/data/locales/en_RW.txt
index 11d4991..a7a3a92 100644
--- a/icu4c/source/data/locales/en_RW.txt
+++ b/icu4c/source/data/locales/en_RW.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_RW{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_SB.txt b/icu4c/source/data/locales/en_SB.txt
index 7e736c2..9907157 100644
--- a/icu4c/source/data/locales/en_SB.txt
+++ b/icu4c/source/data/locales/en_SB.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SB{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_SC.txt b/icu4c/source/data/locales/en_SC.txt
index 1e81cb4..e6e08b2 100644
--- a/icu4c/source/data/locales/en_SC.txt
+++ b/icu4c/source/data/locales/en_SC.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SC{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_SD.txt b/icu4c/source/data/locales/en_SD.txt
index f2110fa..ef3c460 100644
--- a/icu4c/source/data/locales/en_SD.txt
+++ b/icu4c/source/data/locales/en_SD.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SD{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_SE.txt b/icu4c/source/data/locales/en_SE.txt
index de6914a..9f286a5 100644
--- a/icu4c/source/data/locales/en_SE.txt
+++ b/icu4c/source/data/locales/en_SE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SE{
     %%Parent{"en_150"}
     ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
@@ -15,7 +16,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_SG.txt b/icu4c/source/data/locales/en_SG.txt
index faa9d2c..0600b6b 100644
--- a/icu4c/source/data/locales/en_SG.txt
+++ b/icu4c/source/data/locales/en_SG.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SG{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_SH.txt b/icu4c/source/data/locales/en_SH.txt
index d11f128..4473873 100644
--- a/icu4c/source/data/locales/en_SH.txt
+++ b/icu4c/source/data/locales/en_SH.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SH{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_SI.txt b/icu4c/source/data/locales/en_SI.txt
index 7ba5f11..266885d 100644
--- a/icu4c/source/data/locales/en_SI.txt
+++ b/icu4c/source/data/locales/en_SI.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SI{
     %%Parent{"en_150"}
     NumberElements{
@@ -14,5 +15,4 @@
             }
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_SL.txt b/icu4c/source/data/locales/en_SL.txt
index b956002..c79ccc5 100644
--- a/icu4c/source/data/locales/en_SL.txt
+++ b/icu4c/source/data/locales/en_SL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SL{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_SS.txt b/icu4c/source/data/locales/en_SS.txt
index 80fb800..390a313 100644
--- a/icu4c/source/data/locales/en_SS.txt
+++ b/icu4c/source/data/locales/en_SS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_SX.txt b/icu4c/source/data/locales/en_SX.txt
index 4c9565e..77170f8 100644
--- a/icu4c/source/data/locales/en_SX.txt
+++ b/icu4c/source/data/locales/en_SX.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SX{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_SZ.txt b/icu4c/source/data/locales/en_SZ.txt
index 431d63a..7e9c97d 100644
--- a/icu4c/source/data/locales/en_SZ.txt
+++ b/icu4c/source/data/locales/en_SZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SZ{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_TC.txt b/icu4c/source/data/locales/en_TC.txt
index 4129b99..181633b 100644
--- a/icu4c/source/data/locales/en_TC.txt
+++ b/icu4c/source/data/locales/en_TC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_TK.txt b/icu4c/source/data/locales/en_TK.txt
index 8de60cd..b5b55f6 100644
--- a/icu4c/source/data/locales/en_TK.txt
+++ b/icu4c/source/data/locales/en_TK.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TK{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_TO.txt b/icu4c/source/data/locales/en_TO.txt
index 6b63ad2..d21d084 100644
--- a/icu4c/source/data/locales/en_TO.txt
+++ b/icu4c/source/data/locales/en_TO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TO{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_TT.txt b/icu4c/source/data/locales/en_TT.txt
index d91ebb5..d375378 100644
--- a/icu4c/source/data/locales/en_TT.txt
+++ b/icu4c/source/data/locales/en_TT.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TT{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_TV.txt b/icu4c/source/data/locales/en_TV.txt
index e2c1c5a..7cbabca 100644
--- a/icu4c/source/data/locales/en_TV.txt
+++ b/icu4c/source/data/locales/en_TV.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TV{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_TZ.txt b/icu4c/source/data/locales/en_TZ.txt
index 12d2151..9f5dee3 100644
--- a/icu4c/source/data/locales/en_TZ.txt
+++ b/icu4c/source/data/locales/en_TZ.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TZ{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_UG.txt b/icu4c/source/data/locales/en_UG.txt
index f169ad6..063fe72 100644
--- a/icu4c/source/data/locales/en_UG.txt
+++ b/icu4c/source/data/locales/en_UG.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_UG{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_UM.txt b/icu4c/source/data/locales/en_UM.txt
index b994e12..d43fb11 100644
--- a/icu4c/source/data/locales/en_UM.txt
+++ b/icu4c/source/data/locales/en_UM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_UM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_US.txt b/icu4c/source/data/locales/en_US.txt
index 0d911e6..3d196d7 100644
--- a/icu4c/source/data/locales/en_US.txt
+++ b/icu4c/source/data/locales/en_US.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_US{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_US_POSIX.txt b/icu4c/source/data/locales/en_US_POSIX.txt
index 5e16489..4dbe27e 100644
--- a/icu4c/source/data/locales/en_US_POSIX.txt
+++ b/icu4c/source/data/locales/en_US_POSIX.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_US_POSIX{
     ExemplarCharactersNumbers{"[\\- ‑ , . / % + 0 1 2 3 4 5 6 7 8 9]"}
     NumberElements{
@@ -16,5 +17,4 @@
             }
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_VC.txt b/icu4c/source/data/locales/en_VC.txt
index 45b455d..a018754 100644
--- a/icu4c/source/data/locales/en_VC.txt
+++ b/icu4c/source/data/locales/en_VC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_VG.txt b/icu4c/source/data/locales/en_VG.txt
index 3e84e30..1a001d0 100644
--- a/icu4c/source/data/locales/en_VG.txt
+++ b/icu4c/source/data/locales/en_VG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_VI.txt b/icu4c/source/data/locales/en_VI.txt
index 0c41c0d..8d1e769 100644
--- a/icu4c/source/data/locales/en_VI.txt
+++ b/icu4c/source/data/locales/en_VI.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VI{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_VU.txt b/icu4c/source/data/locales/en_VU.txt
index 6229365..91d6b81 100644
--- a/icu4c/source/data/locales/en_VU.txt
+++ b/icu4c/source/data/locales/en_VU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VU{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_WS.txt b/icu4c/source/data/locales/en_WS.txt
index 5d2f739..f197bb1 100644
--- a/icu4c/source/data/locales/en_WS.txt
+++ b/icu4c/source/data/locales/en_WS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_WS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_XA.txt b/icu4c/source/data/locales/en_XA.txt
index 5c8a428..833a83d 100644
--- a/icu4c/source/data/locales/en_XA.txt
+++ b/icu4c/source/data/locales/en_XA.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_XA{
     AuxExemplarCharacters{
         "[a å b ƀ c ç d ð e é f ƒ g ĝ h ĥ i î j ĵ k ķ l ļ m ɱ n ñ o ö p þ q ǫ r ŕ s š"
         " t ţ u û v ṽ w ŵ x ẋ y ý z ž]"
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -471,7 +471,7 @@
                 "[h:mm:ss a zzzz 'one' 'two']",
                 "[h:mm:ss a z 'one' 'two']",
                 "[h:mm:ss a 'one' 'two']",
-                "[h:mm a 'one']",
+                "[H:mm]",
                 "[EEEE, MMMM d, y 'one' 'two' 'three']",
                 "[MMMM d, y 'one' 'two']",
                 "[MMM d, y 'one' 'two']",
diff --git a/icu4c/source/data/locales/en_ZA.txt b/icu4c/source/data/locales/en_ZA.txt
index 4fc74b6..37335d8 100644
--- a/icu4c/source/data/locales/en_ZA.txt
+++ b/icu4c/source/data/locales/en_ZA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ZA{
     %%Parent{"en_001"}
     AuxExemplarCharacters{
@@ -15,7 +16,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/en_ZM.txt b/icu4c/source/data/locales/en_ZM.txt
index 32588ce..f61c471 100644
--- a/icu4c/source/data/locales/en_ZM.txt
+++ b/icu4c/source/data/locales/en_ZM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ZM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/en_ZW.txt b/icu4c/source/data/locales/en_ZW.txt
index f3960de..a296474 100644
--- a/icu4c/source/data/locales/en_ZW.txt
+++ b/icu4c/source/data/locales/en_ZW.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ZW{
     %%Parent{"en_001"}
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/eo.txt b/icu4c/source/data/locales/eo.txt
index 85663ad..532a5d0 100644
--- a/icu4c/source/data/locales/eo.txt
+++ b/icu4c/source/data/locales/eo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 eo{
     AuxExemplarCharacters{"[q w x y]"}
     ExemplarCharacters{"[a b c ĉ d e f g ĝ h ĥ i j ĵ k l m n o p r s ŝ t u ŭ v z]"}
@@ -14,7 +15,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/eo_001.txt b/icu4c/source/data/locales/eo_001.txt
index c0a4de1..26ad20d 100644
--- a/icu4c/source/data/locales/eo_001.txt
+++ b/icu4c/source/data/locales/eo_001.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 eo_001{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/es.txt b/icu4c/source/data/locales/es.txt
index 593a1e1..3688a8c 100644
--- a/icu4c/source/data/locales/es.txt
+++ b/icu4c/source/data/locales/es.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es{
     AuxExemplarCharacters{"[ª à ă â å ä ã ā æ ç è ĕ ê ë ē ì ĭ î ï ī º ò ŏ ô ö ø ō œ ù ŭ û ū ý ÿ]"}
     Ellipsis{
@@ -215,7 +216,6 @@
         minimumGroupingDigits{"2"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -798,13 +798,13 @@
             dayNames{
                 format{
                     abbreviated{
-                        "dom.",
-                        "lun.",
-                        "mar.",
-                        "mié.",
-                        "jue.",
-                        "vie.",
-                        "sáb.",
+                        "dom",
+                        "lun",
+                        "mar",
+                        "mié",
+                        "jue",
+                        "vie",
+                        "sáb",
                     }
                     narrow{
                         "D",
@@ -836,13 +836,13 @@
                 }
                 stand-alone{
                     abbreviated{
-                        "dom.",
-                        "lun.",
-                        "mar.",
-                        "mié.",
-                        "jue.",
-                        "vie.",
-                        "sáb.",
+                        "dom",
+                        "lun",
+                        "mar",
+                        "mié",
+                        "jue",
+                        "vie",
+                        "sáb",
                     }
                     narrow{
                         "D",
@@ -1099,18 +1099,18 @@
             monthNames{
                 format{
                     abbreviated{
-                        "ene.",
-                        "feb.",
-                        "mar.",
-                        "abr.",
-                        "may.",
-                        "jun.",
-                        "jul.",
-                        "ago.",
-                        "sept.",
-                        "oct.",
-                        "nov.",
-                        "dic.",
+                        "ene",
+                        "feb",
+                        "mar",
+                        "abr",
+                        "may",
+                        "jun",
+                        "jul",
+                        "ago",
+                        "sept",
+                        "oct",
+                        "nov",
+                        "dic",
                     }
                     narrow{
                         "E",
@@ -1143,18 +1143,18 @@
                 }
                 stand-alone{
                     abbreviated{
-                        "ene.",
-                        "feb.",
-                        "mar.",
-                        "abr.",
-                        "may.",
-                        "jun.",
-                        "jul.",
-                        "ago.",
-                        "sept.",
-                        "oct.",
-                        "nov.",
-                        "dic.",
+                        "ene",
+                        "feb",
+                        "mar",
+                        "abr",
+                        "may",
+                        "jun",
+                        "jul",
+                        "ago",
+                        "sept",
+                        "oct",
+                        "nov",
+                        "dic",
                     }
                     narrow{
                         "E",
diff --git a/icu4c/source/data/locales/es_419.txt b/icu4c/source/data/locales/es_419.txt
index d76be69..e156d12 100644
--- a/icu4c/source/data/locales/es_419.txt
+++ b/icu4c/source/data/locales/es_419.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_419{
     NumberElements{
         latn{
@@ -90,12 +91,12 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 group{","}
             }
         }
     }
-    Version{"37"}
     calendar{
         coptic{
             monthNames{
@@ -243,14 +244,6 @@
             }
         }
         gregorian{
-            AmPmMarkers{
-                "a.m.",
-                "p.m.",
-            }
-            AmPmMarkersAbbr{
-                "a.m.",
-                "p.m.",
-            }
             DateTimePatterns{
                 "HH:mm:ss zzzz",
                 "HH:mm:ss z",
@@ -261,8 +254,8 @@
                 "d MMM y",
                 "d/M/yy",
                 "{1} {0}",
-                "{1} 'a' 'las' {0}",
-                "{1} 'a' 'las' {0}",
+                "{1}, {0}",
+                "{1}, {0}",
                 "{1} {0}",
                 "{1} {0}",
             }
@@ -275,9 +268,9 @@
                 Hms{"HH:mm:ss"}
                 MMMdd{"dd-MMM"}
                 yMEd{"E d/M/y"}
-                yMMM{"MMMM 'de' y"}
+                yMMM{"MMM 'de' y"}
                 yMMMEd{"E, d 'de' MMM 'de' y"}
-                yMMMd{"d 'de' MMMM 'de' y"}
+                yMMMd{"d 'de' MMM 'de' y"}
                 yQQQ{"QQQ 'de' y"}
             }
             dayNames{
@@ -293,6 +286,15 @@
                     }
                 }
                 stand-alone{
+                    abbreviated{
+                        "dom.",
+                        "lun.",
+                        "mar.",
+                        "mié.",
+                        "jue.",
+                        "vie.",
+                        "sáb.",
+                    }
                     narrow{
                         "D",
                         "L",
@@ -304,18 +306,6 @@
                     }
                 }
             }
-            dayPeriod{
-                stand-alone{
-                    abbreviated{
-                        am{"a.m."}
-                        pm{"p.m."}
-                    }
-                    wide{
-                        am{"a.m."}
-                        pm{"p.m."}
-                    }
-                }
-            }
             intervalFormats{
                 GyM{
                     G{"MM/y GGGGG – MM/y GGGGG"}
@@ -745,9 +735,6 @@
         dayOfYear-short{
             dn{"día del año"}
         }
-        dayperiod{
-            dn{"a.m./p.m."}
-        }
         dayperiod-narrow{
             dn{"a.m./p.m."}
         }
diff --git a/icu4c/source/data/locales/es_AR.txt b/icu4c/source/data/locales/es_AR.txt
index 37161f4..700cac3 100644
--- a/icu4c/source/data/locales/es_AR.txt
+++ b/icu4c/source/data/locales/es_AR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_AR{
     %%Parent{"es_419"}
     NumberElements{
@@ -14,7 +15,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             availableFormats{
@@ -23,14 +23,6 @@
             }
         }
         gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
             availableFormats{
                 GyMMMEd{"E, d 'de' MMM 'de' y G"}
                 GyMMMd{"d MMM y G"}
@@ -43,7 +35,6 @@
                 yMEd{"E, d/M/y"}
                 yMMM{"MMM y"}
                 yMMMEd{"E, d MMM y"}
-                yMMMd{"d 'de' MMM 'de' y"}
             }
             dayNames{
                 format{
@@ -76,17 +67,9 @@
                     }
                 }
                 stand-alone{
-                    abbreviated{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
                     narrow{
                         noon{"m."}
                     }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
                 }
             }
             intervalFormats{
@@ -210,9 +193,6 @@
                 }
             }
         }
-        dayperiod{
-            dn{"a. m./p. m."}
-        }
         second-narrow{
             dn{"seg."}
             relativeTime{
diff --git a/icu4c/source/data/locales/es_BO.txt b/icu4c/source/data/locales/es_BO.txt
index ae585b3..bfb5709 100644
--- a/icu4c/source/data/locales/es_BO.txt
+++ b/icu4c/source/data/locales/es_BO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_BO{
     %%Parent{"es_419"}
     NumberElements{
@@ -10,17 +11,8 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
             DateTimePatterns{
                 "HH:mm:ss zzzz",
                 "HH:mm:ss z",
@@ -31,28 +23,11 @@
                 "d MMM 'de' y",
                 "d/M/yy",
                 "{1} {0}",
-                "{1} 'a' 'las' {0}",
-                "{1} 'a' 'las' {0}",
+                "{1}, {0}",
+                "{1}, {0}",
                 "{1} {0}",
                 "{1} {0}",
             }
-            dayPeriod{
-                stand-alone{
-                    abbreviated{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                }
-            }
-        }
-    }
-    fields{
-        dayperiod{
-            dn{"a. m./p. m."}
         }
     }
 }
diff --git a/icu4c/source/data/locales/es_BR.txt b/icu4c/source/data/locales/es_BR.txt
index a8d655c..a18c09f 100644
--- a/icu4c/source/data/locales/es_BR.txt
+++ b/icu4c/source/data/locales/es_BR.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_BR{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/es_BZ.txt b/icu4c/source/data/locales/es_BZ.txt
index f703412..471108e 100644
--- a/icu4c/source/data/locales/es_BZ.txt
+++ b/icu4c/source/data/locales/es_BZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_BZ{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/es_CL.txt b/icu4c/source/data/locales/es_CL.txt
index 187cf30..97ba59e 100644
--- a/icu4c/source/data/locales/es_CL.txt
+++ b/icu4c/source/data/locales/es_CL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CL{
     %%Parent{"es_419"}
     NumberElements{
@@ -13,7 +14,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -84,14 +84,6 @@
             }
         }
         gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
             DateTimePatterns{
                 "HH:mm:ss zzzz",
                 "HH:mm:ss z",
@@ -102,8 +94,8 @@
                 "dd-MM-y",
                 "dd-MM-yy",
                 "{1} {0}",
-                "{1} 'a' 'las' {0}",
-                "{1} 'a' 'las' {0}",
+                "{1}, {0}",
+                "{1}, {0}",
                 "{1} {0}",
                 "{1} {0}",
             }
@@ -128,18 +120,6 @@
                     }
                 }
             }
-            dayPeriod{
-                stand-alone{
-                    abbreviated{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                }
-            }
             intervalFormats{
                 MEd{
                     M{"E dd-MM – E dd-MM"}
@@ -217,9 +197,4 @@
             }
         }
     }
-    fields{
-        dayperiod{
-            dn{"a. m./p. m."}
-        }
-    }
 }
diff --git a/icu4c/source/data/locales/es_CO.txt b/icu4c/source/data/locales/es_CO.txt
index f6f3581..f574cf5 100644
--- a/icu4c/source/data/locales/es_CO.txt
+++ b/icu4c/source/data/locales/es_CO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CO{
     %%Parent{"es_419"}
     NumberElements{
@@ -13,7 +14,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -99,14 +99,6 @@
             }
         }
         gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
             DateTimePatterns{
                 "h:mm:ss a zzzz",
                 "h:mm:ss a z",
@@ -117,8 +109,8 @@
                 "d/MM/y",
                 "d/MM/yy",
                 "{1}, {0}",
-                "{1} 'a' 'las' {0}",
-                "{1} 'a' 'las' {0}",
+                "{1}, {0}",
+                "{1}, {0}",
                 "{1}, {0}",
                 "{1}, {0}",
             }
@@ -132,8 +124,6 @@
                 MMMd{"d 'de' MMM"}
                 MMMdd{"d 'de' MMM"}
                 yMEd{"EEE, d/M/y"}
-                yMMM{"MMM 'de' y"}
-                yMMMd{"d 'de' MMM 'de' y"}
             }
             dayNames{
                 format{
@@ -170,17 +160,11 @@
                 }
                 stand-alone{
                     abbreviated{
-                        am{"a. m."}
                         noon{"m."}
-                        pm{"p. m."}
                     }
                     narrow{
                         noon{"m."}
                     }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
                 }
             }
             intervalFormats{
@@ -298,9 +282,4 @@
             }
         }
     }
-    fields{
-        dayperiod{
-            dn{"a. m./p. m."}
-        }
-    }
 }
diff --git a/icu4c/source/data/locales/es_CR.txt b/icu4c/source/data/locales/es_CR.txt
index c6f22f6..c4897be 100644
--- a/icu4c/source/data/locales/es_CR.txt
+++ b/icu4c/source/data/locales/es_CR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CR{
     %%Parent{"es_419"}
     ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
@@ -11,34 +12,4 @@
             }
         }
     }
-    Version{"37"}
-    calendar{
-        gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
-            dayPeriod{
-                stand-alone{
-                    abbreviated{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                }
-            }
-        }
-    }
-    fields{
-        dayperiod{
-            dn{"a. m./p. m."}
-        }
-    }
 }
diff --git a/icu4c/source/data/locales/es_CU.txt b/icu4c/source/data/locales/es_CU.txt
index a316a0d..1a3a70a 100644
--- a/icu4c/source/data/locales/es_CU.txt
+++ b/icu4c/source/data/locales/es_CU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CU{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/es_DO.txt b/icu4c/source/data/locales/es_DO.txt
index 8acc430..156b764 100644
--- a/icu4c/source/data/locales/es_DO.txt
+++ b/icu4c/source/data/locales/es_DO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_DO{
     %%Parent{"es_419"}
     NumberElements{
@@ -9,7 +10,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -29,14 +29,6 @@
             }
         }
         gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
             DateTimePatterns{
                 "h:mm:ss a zzzz",
                 "h:mm:ss a z",
@@ -47,8 +39,8 @@
                 "d MMM y",
                 "d/M/yy",
                 "{1} {0}",
-                "{1} 'a' 'las' {0}",
-                "{1} 'a' 'las' {0}",
+                "{1}, {0}",
+                "{1}, {0}",
                 "{1} {0}",
                 "{1} {0}",
             }
@@ -79,17 +71,9 @@
                     }
                 }
                 stand-alone{
-                    abbreviated{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
                     narrow{
                         noon{"m."}
                     }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
                 }
             }
             eras{
@@ -122,9 +106,6 @@
         day{
             dn{"Día"}
         }
-        dayperiod{
-            dn{"a. m./p. m."}
-        }
         era{
             dn{"Era"}
         }
diff --git a/icu4c/source/data/locales/es_EA.txt b/icu4c/source/data/locales/es_EA.txt
index 53e207c..34f2778 100644
--- a/icu4c/source/data/locales/es_EA.txt
+++ b/icu4c/source/data/locales/es_EA.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_EA{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/es_EC.txt b/icu4c/source/data/locales/es_EC.txt
index 8f428ba..1525a3c 100644
--- a/icu4c/source/data/locales/es_EC.txt
+++ b/icu4c/source/data/locales/es_EC.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_EC{
     %%Parent{"es_419"}
     NumberElements{
@@ -13,34 +14,4 @@
             }
         }
     }
-    Version{"37"}
-    calendar{
-        gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
-            dayPeriod{
-                stand-alone{
-                    abbreviated{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                }
-            }
-        }
-    }
-    fields{
-        dayperiod{
-            dn{"a. m./p. m."}
-        }
-    }
 }
diff --git a/icu4c/source/data/locales/es_ES.txt b/icu4c/source/data/locales/es_ES.txt
index cabce7e..2236eb5 100644
--- a/icu4c/source/data/locales/es_ES.txt
+++ b/icu4c/source/data/locales/es_ES.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_ES{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/es_GQ.txt b/icu4c/source/data/locales/es_GQ.txt
index 65ebf74..92901b5 100644
--- a/icu4c/source/data/locales/es_GQ.txt
+++ b/icu4c/source/data/locales/es_GQ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_GQ{
     NumberElements{
         latn{
@@ -8,5 +9,4 @@
             }
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/es_GT.txt b/icu4c/source/data/locales/es_GT.txt
index 8bb4b54..8fca3c4 100644
--- a/icu4c/source/data/locales/es_GT.txt
+++ b/icu4c/source/data/locales/es_GT.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_GT{
     %%Parent{"es_419"}
     NumberElements{
@@ -46,7 +47,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -112,14 +112,6 @@
             }
         }
         gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
             DateTimePatterns{
                 "HH:mm:ss zzzz",
                 "HH:mm:ss z",
@@ -130,23 +122,11 @@
                 "d/MM/y",
                 "d/MM/yy",
                 "{1} {0}",
-                "{1} 'a' 'las' {0}",
-                "{1} 'a' 'las' {0}",
+                "{1}, {0}",
+                "{1}, {0}",
                 "{1} {0}",
                 "{1} {0}",
             }
-            dayPeriod{
-                stand-alone{
-                    abbreviated{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                }
-            }
             intervalFormats{
                 MEd{
                     M{"E d/MM – E d/MM"}
@@ -199,9 +179,4 @@
             }
         }
     }
-    fields{
-        dayperiod{
-            dn{"a. m./p. m."}
-        }
-    }
 }
diff --git a/icu4c/source/data/locales/es_HN.txt b/icu4c/source/data/locales/es_HN.txt
index 80a5a0d..102f179 100644
--- a/icu4c/source/data/locales/es_HN.txt
+++ b/icu4c/source/data/locales/es_HN.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_HN{
     %%Parent{"es_419"}
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -22,14 +22,6 @@
             }
         }
         gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
             DateTimePatterns{
                 "HH:mm:ss zzzz",
                 "HH:mm:ss z",
@@ -40,23 +32,11 @@
                 "d MMM y",
                 "d/M/yy",
                 "{1} {0}",
-                "{1} 'a' 'las' {0}",
-                "{1} 'a' 'las' {0}",
+                "{1}, {0}",
+                "{1}, {0}",
                 "{1} {0}",
                 "{1} {0}",
             }
-            dayPeriod{
-                stand-alone{
-                    abbreviated{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                }
-            }
         }
     }
 }
diff --git a/icu4c/source/data/locales/es_IC.txt b/icu4c/source/data/locales/es_IC.txt
index 2a17a7b..09df937 100644
--- a/icu4c/source/data/locales/es_IC.txt
+++ b/icu4c/source/data/locales/es_IC.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_IC{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/es_MX.txt b/icu4c/source/data/locales/es_MX.txt
index 98c9c50..858df4b 100644
--- a/icu4c/source/data/locales/es_MX.txt
+++ b/icu4c/source/data/locales/es_MX.txt
@@ -1,7 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_MX{
     %%Parent{"es_419"}
+    AuxExemplarCharacters{"[à ă â å ä ã ā æ ç è ĕ ê ë ē ì ĭ î ï ī ò ŏ ô ö ø ō œ ù ŭ û ū ÿ]"}
     MoreInformation{"[...]"}
     NumberElements{
         latn{
@@ -89,14 +91,13 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
-                "H:mm:ss zzzz",
-                "H:mm:ss z",
-                "H:mm:ss",
-                "H:mm",
+                "HH:mm:ss zzzz",
+                "HH:mm:ss z",
+                "HH:mm:ss",
+                "HH:mm",
                 "EEEE, d 'de' MMMM 'de' y G",
                 "d 'de' MMMM 'de' y G",
                 "d MMM, y G",
@@ -108,11 +109,7 @@
                 "{1} {0}",
             }
             availableFormats{
-                GyMMM{"MMM y G"}
-                GyMMMEd{"E, d MMM y G"}
-                GyMMMd{"d MMM y G"}
                 MMMEd{"E d MMM"}
-                MMMd{"d MMM"}
                 h{"hh a"}
                 hm{"hh:mm a"}
                 hms{"hh:mm:ss a"}
@@ -145,26 +142,18 @@
             }
         }
         gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
             DateTimePatterns{
-                "H:mm:ss zzzz",
-                "H:mm:ss z",
-                "H:mm:ss",
-                "H:mm",
+                "HH:mm:ss zzzz",
+                "HH:mm:ss z",
+                "HH:mm:ss",
+                "HH:mm",
                 "EEEE, d 'de' MMMM 'de' y",
                 "d 'de' MMMM 'de' y",
                 "d MMM y",
                 "dd/MM/yy",
                 "{1} {0}",
-                "{1} 'a' 'las' {0}",
-                "{1} 'a' 'las' {0}",
+                "{1}, {0}",
+                "{1}, {0}",
                 "{1} {0}",
                 "{1} {0}",
             }
@@ -174,8 +163,6 @@
                 Ehm{"E h:mm a"}
                 Ehms{"E h:mm:ss a"}
                 GyMMMd{"d MMM y G"}
-                Hm{"H:mm"}
-                Hms{"H:mm:ss"}
                 Hmsv{"HH:mm:ss v"}
                 Hmsvvvv{"HH:mm:ss (vvvv)"}
                 Hmv{"HH:mm v"}
@@ -184,7 +171,7 @@
                 MMdd{"dd/MM"}
                 yMEd{"E, d/M/y"}
                 yMM{"MM/y"}
-                yMMMEd{"EEE, d 'de' MMMM 'de' y"}
+                yMMMEd{"EEE, d 'de' MMM 'de' y"}
                 yQQQ{"QQQ y"}
             }
             dayNames{
@@ -210,16 +197,6 @@
                         noon{"del mediodía"}
                     }
                 }
-                stand-alone{
-                    abbreviated{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                }
             }
             intervalFormats{
                 GyMMM{
@@ -350,7 +327,6 @@
         phonetic_alphabet{"Alfabeto fonético"}
         sign_standard_symbols{"Símbolos de señales/estándar"}
         smiley{"cara sonriente"}
-        south_asian_scripts{"Sistemas de escritura de Asia Meridional"}
         southeast_asian_scripts{"Sistemas de escritura de Asia Sudoriental"}
         symbols{"Símbolos"}
         tone_marks{"Marcas tonales"}
@@ -364,7 +340,7 @@
         day-narrow{
             relativeTime{
                 future{
-                    one{"+{0} día"}
+                    one{"dentro de {0} día"}
                     other{"en {0} días"}
                 }
             }
@@ -383,9 +359,6 @@
         dayOfYear-short{
             dn{"día del a"}
         }
-        dayperiod{
-            dn{"a. m./p. m."}
-        }
         dayperiod-narrow{
             dn{"a. m./p. m."}
         }
@@ -428,22 +401,6 @@
                 }
             }
         }
-        minute-narrow{
-            relativeTime{
-                future{
-                    one{"en {0} min"}
-                    other{"en {0} min"}
-                }
-            }
-        }
-        minute-short{
-            relativeTime{
-                future{
-                    one{"en {0} min"}
-                    other{"en {0} min"}
-                }
-            }
-        }
         mon{
             relative{
                 "-1"{"el lunes pasado"}
@@ -464,18 +421,6 @@
                 }
             }
         }
-        month-narrow{
-            relativeTime{
-                future{
-                    one{"+{0} m"}
-                    other{"+{0} m"}
-                }
-                past{
-                    one{"-{0} m"}
-                    other{"-{0} m"}
-                }
-            }
-        }
         month-short{
             relativeTime{
                 future{
@@ -498,10 +443,6 @@
                     one{"en {0} trim."}
                     other{"en {0} trim."}
                 }
-                past{
-                    one{"-{0} T"}
-                    other{"-{0} T"}
-                }
             }
         }
         quarter-short{
@@ -527,14 +468,6 @@
                 }
             }
         }
-        second-narrow{
-            relativeTime{
-                future{
-                    one{"+{0} s"}
-                    other{"+{0} s"}
-                }
-            }
-        }
         second-short{
             relativeTime{
                 future{
@@ -624,10 +557,6 @@
                     one{"en {0} a"}
                     other{"en {0} a"}
                 }
-                past{
-                    one{"-{0} a"}
-                    other{"-{0} a"}
-                }
             }
         }
         year-short{
diff --git a/icu4c/source/data/locales/es_NI.txt b/icu4c/source/data/locales/es_NI.txt
index 429e24a..a58e4ec 100644
--- a/icu4c/source/data/locales/es_NI.txt
+++ b/icu4c/source/data/locales/es_NI.txt
@@ -1,30 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_NI{
     %%Parent{"es_419"}
-    Version{"37"}
-    calendar{
-        gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
-            dayPeriod{
-                stand-alone{
-                    abbreviated{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                }
-            }
-        }
-    }
 }
diff --git a/icu4c/source/data/locales/es_PA.txt b/icu4c/source/data/locales/es_PA.txt
index 6bac722..8a19ea8 100644
--- a/icu4c/source/data/locales/es_PA.txt
+++ b/icu4c/source/data/locales/es_PA.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PA{
     %%Parent{"es_419"}
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -56,14 +56,6 @@
             }
         }
         gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
             DateTimePatterns{
                 "h:mm:ss a zzzz",
                 "h:mm:ss a z",
@@ -74,8 +66,8 @@
                 "MM/dd/y",
                 "MM/dd/yy",
                 "{1} {0}",
-                "{1} 'a' 'las' {0}",
-                "{1} 'a' 'las' {0}",
+                "{1}, {0}",
+                "{1}, {0}",
                 "{1} {0}",
                 "{1} {0}",
             }
@@ -105,16 +97,6 @@
                         noon{"mediodía"}
                     }
                 }
-                stand-alone{
-                    abbreviated{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                }
             }
             intervalFormats{
                 MMMEd{
diff --git a/icu4c/source/data/locales/es_PE.txt b/icu4c/source/data/locales/es_PE.txt
index 1f363b9..b8452b7 100644
--- a/icu4c/source/data/locales/es_PE.txt
+++ b/icu4c/source/data/locales/es_PE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PE{
     %%Parent{"es_419"}
     NumberElements{
@@ -61,7 +62,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -81,14 +81,6 @@
             }
         }
         gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
             DateTimePatterns{
                 "HH:mm:ss zzzz",
                 "HH:mm:ss z",
@@ -99,23 +91,11 @@
                 "d MMM y",
                 "d/MM/yy",
                 "{1} {0}",
-                "{1} 'a' 'las' {0}",
-                "{1} 'a' 'las' {0}",
+                "{1}, {0}",
+                "{1}, {0}",
                 "{1} {0}",
                 "{1} {0}",
             }
-            dayPeriod{
-                stand-alone{
-                    abbreviated{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                }
-            }
             monthNames{
                 format{
                     abbreviated{
diff --git a/icu4c/source/data/locales/es_PH.txt b/icu4c/source/data/locales/es_PH.txt
index 5ce4f00..b34220f 100644
--- a/icu4c/source/data/locales/es_PH.txt
+++ b/icu4c/source/data/locales/es_PH.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PH{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/es_PR.txt b/icu4c/source/data/locales/es_PR.txt
index 08e25dc..f74be27 100644
--- a/icu4c/source/data/locales/es_PR.txt
+++ b/icu4c/source/data/locales/es_PR.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PR{
     %%Parent{"es_419"}
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -29,14 +29,6 @@
             }
         }
         gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
             DateTimePatterns{
                 "h:mm:ss a zzzz",
                 "h:mm:ss a z",
@@ -47,8 +39,8 @@
                 "MM/dd/y",
                 "MM/dd/yy",
                 "{1} {0}",
-                "{1} 'a' 'las' {0}",
-                "{1} 'a' 'las' {0}",
+                "{1}, {0}",
+                "{1}, {0}",
                 "{1} {0}",
                 "{1} {0}",
             }
@@ -59,18 +51,6 @@
                 yMEd{"E MM/dd/y"}
                 yMd{"MM/dd/y"}
             }
-            dayPeriod{
-                stand-alone{
-                    abbreviated{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                }
-            }
         }
     }
 }
diff --git a/icu4c/source/data/locales/es_PY.txt b/icu4c/source/data/locales/es_PY.txt
index 1ad0210..f537082 100644
--- a/icu4c/source/data/locales/es_PY.txt
+++ b/icu4c/source/data/locales/es_PY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PY{
     %%Parent{"es_419"}
     NumberElements{
@@ -13,17 +14,8 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
             dayNames{
                 format{
                     short{
@@ -50,17 +42,9 @@
             }
             dayPeriod{
                 stand-alone{
-                    abbreviated{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
                     narrow{
                         noon{"m."}
                     }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
                 }
             }
             intervalFormats{
diff --git a/icu4c/source/data/locales/es_SV.txt b/icu4c/source/data/locales/es_SV.txt
index a9c55cf..79e0c65 100644
--- a/icu4c/source/data/locales/es_SV.txt
+++ b/icu4c/source/data/locales/es_SV.txt
@@ -1,40 +1,13 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_SV{
     %%Parent{"es_419"}
-    Version{"37"}
-    calendar{
-        gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
-            dayPeriod{
-                stand-alone{
-                    abbreviated{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                }
-            }
-        }
-    }
     fields{
         day{
             relative{
                 "-2"{"antier"}
             }
         }
-        dayperiod{
-            dn{"a. m./p. m."}
-        }
     }
 }
diff --git a/icu4c/source/data/locales/es_US.txt b/icu4c/source/data/locales/es_US.txt
index f562d9c..39fbf71 100644
--- a/icu4c/source/data/locales/es_US.txt
+++ b/icu4c/source/data/locales/es_US.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_US{
     %%Parent{"es_419"}
     MoreInformation{"[...]"}
@@ -35,34 +36,6 @@
             }
             patternsShort{
                 currencyFormat{
-                    1000{
-                        one{"0 K ¤"}
-                        other{"0 K ¤"}
-                    }
-                    10000{
-                        one{"00 K ¤"}
-                        other{"00 K ¤"}
-                    }
-                    100000{
-                        one{"000 K ¤"}
-                        other{"000 K ¤"}
-                    }
-                    1000000{
-                        one{"0 M ¤"}
-                        other{"0 M ¤"}
-                    }
-                    10000000{
-                        one{"00 M ¤"}
-                        other{"00 M ¤"}
-                    }
-                    100000000{
-                        one{"000 M ¤"}
-                        other{"000 M ¤"}
-                    }
-                    1000000000{
-                        one{"0000 M ¤"}
-                        other{"0000 M ¤"}
-                    }
                     10000000000{
                         one{"¤00 B"}
                         other{"¤00 B"}
@@ -125,70 +98,29 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
-            DateTimePatterns{
-                "h:mm:ss a zzzz",
-                "h:mm:ss a z",
-                "h:mm:ss a",
-                "h:mm a",
-                "EEEE, d 'de' MMMM 'de' y G",
-                "d 'de' MMMM 'de' y G",
-                "d MMM, y G",
-                "dd/MM/yy GGGGG",
-                "{1} {0}",
-                "{1}, {0}",
-                "{1}, {0}",
-                "{1} {0}",
-                "{1} {0}",
-            }
             availableFormats{
-                GyMMM{"MMM y G"}
-                GyMMMEd{"E, d MMM y G"}
-                GyMMMd{"d MMM y G"}
-                MMMEd{"E d MMM"}
-                MMMd{"d MMM"}
-                h{"hh a"}
-                hm{"hh:mm a"}
-                hms{"hh:mm:ss a"}
                 yyyyMEd{"E, d/M/y GGGGG"}
-                yyyyMMM{"MMM y G"}
-                yyyyMMMEd{"EEE, d MMM y G"}
-                yyyyMMMd{"d MMM y G"}
-                yyyyQQQ{"QQQ y G"}
             }
             intervalFormats{
+                GyMEd{
+                    G{"E, dd/MM/y GGGGG – E, dd/MM/y GGGGG"}
+                    M{"E, dd/MM/y – E, dd/MM/y GGGGG"}
+                    d{"E, dd/MM/y – E, dd/MM/y GGGGG"}
+                    y{"E, dd/MM/y – E, dd/MM/y GGGGG"}
+                }
                 Md{
                     M{"d/M – d/M"}
                     d{"d/M – d/M"}
                 }
                 fallback{"{0} – {1}"}
-                yM{
-                    M{"M/y – M/y G"}
-                    y{"M/y – M/y G"}
-                }
-                yMEd{
-                    M{"E, d/M/y–E, d/M/y G"}
-                    d{"E, d/M/y–E, d/M/y G"}
-                    y{"E, d/M/y–E, d/M/y G"}
-                }
-                yMd{
-                    M{"d/M/y – d/M/y G"}
-                    d{"d/M/y – d/M/y G"}
-                    y{"d/M/y – d/M/y G"}
+                yMMMd{
+                    M{"d 'de' MMM – d 'de' MMM 'de' y G"}
                 }
             }
         }
         gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
             DateTimePatterns{
                 "h:mm:ss a zzzz",
                 "h:mm:ss a z",
@@ -199,8 +131,8 @@
                 "d MMM y",
                 "d/M/y",
                 "{1} {0}",
-                "{1} 'a' 'las' {0}",
-                "{1} 'a' 'las' {0}",
+                "{1}, {0}",
+                "{1}, {0}",
                 "{1} {0}",
                 "{1} {0}",
             }
@@ -218,7 +150,7 @@
                 MMdd{"dd/MM"}
                 yMEd{"E, d/M/y"}
                 yMM{"MM/y"}
-                yMMMEd{"EEE, d 'de' MMMM 'de' y"}
+                yMMMEd{"EEE, d 'de' MMM 'de' y"}
                 yQQQ{"QQQ y"}
             }
             dayNames{
@@ -234,27 +166,6 @@
                     }
                 }
             }
-            dayPeriod{
-                format{
-                    narrow{
-                        evening1{"de la tarde"}
-                        morning1{"de la madrugada"}
-                        morning2{"mañana"}
-                        night1{"de la noche"}
-                        noon{"del mediodía"}
-                    }
-                }
-                stand-alone{
-                    abbreviated{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                }
-            }
             intervalFormats{
                 H{
                     H{"HH–HH"}
@@ -274,10 +185,6 @@
                     M{"E, d/M – E, d/M"}
                     d{"E, d/M – E, d/M"}
                 }
-                MMMEd{
-                    M{"E d 'de' MMM – E d 'de' MMM"}
-                    d{"E d 'de' MMM – E d 'de' MMM"}
-                }
                 MMMd{
                     d{"d–d 'de' MMM"}
                 }
@@ -313,71 +220,38 @@
             }
             quarters{
                 format{
-                    abbreviated{
-                        "1er. trim.",
-                        "2º. trim.",
-                        "3er. trim.",
-                        "4º trim.",
-                    }
-                    narrow{
-                        "1T",
-                        "2T",
-                        "3T",
-                        "4T",
-                    }
                     wide{
                         "1.er trimestre",
-                        "2º. trimestre",
+                        "2.º trimestre",
                         "3.er trimestre",
-                        "4o. trimestre",
+                        "4.º trimestre",
                     }
                 }
                 stand-alone{
-                    abbreviated{
-                        "1er. trim.",
-                        "2º. trim.",
-                        "3er. trim.",
-                        "4º trim.",
-                    }
-                    narrow{
-                        "1T",
-                        "2T",
-                        "3T",
-                        "4T",
-                    }
                     wide{
                         "1.er trimestre",
                         "2º. trimestre",
                         "3.er trimestre",
-                        "4º trimestre",
+                        "4.º trimestre",
                     }
                 }
             }
         }
     }
     characterLabel{
-        arrows{"Flechas"}
+        activities{"actividades"}
+        african_scripts{"símbolos de escritura de África"}
+        american_scripts{"símbolos de escritura de América"}
+        arrows{"flechas"}
         female{"mujer"}
-        format_whitespace{"Formato y espacio duro"}
+        format{"formato"}
         keycap{"tecla"}
-        letterlike_symbols{"Símbolos con letras"}
-        limited_use{"Uso limitado"}
         male{"hombre"}
+        miscellaneous{"varios"}
         modern_scripts{"Sistemas de escritura modernos"}
-        nonspacing{"Sin espaciado"}
         other{"Otros"}
-        phonetic_alphabet{"Alfabeto fonético"}
-        sign_standard_symbols{"Símbolos de señales/estándar"}
         smiley{"cara sonriente"}
-        south_asian_scripts{"Sistemas de escritura de Asia Meridional"}
-        southeast_asian_scripts{"Sistemas de escritura de Asia Sudoriental"}
-        symbols{"Símbolos"}
-        tone_marks{"Marcas tonales"}
-        travel_places{"Viajes y destinos"}
-        variant_forms{"Variantes"}
-        weather{"tiempo"}
         western_asian_scripts{"Sistemas de escritura de Asia Occidental"}
-        whitespace{"Espacio duro"}
     }
     delimiters{
         alternateQuotationEnd{"”"}
@@ -392,22 +266,12 @@
         dayOfYear-short{
             dn{"día del a"}
         }
-        dayperiod{
-            dn{"a. m./p. m."}
-        }
         dayperiod-narrow{
             dn{"a. m./p. m."}
         }
         dayperiod-short{
             dn{"a. m./p. m."}
         }
-        fri{
-            relative{
-                "-1"{"el viernes pasado"}
-                "0"{"este viernes"}
-                "1"{"el viernes próximo"}
-            }
-        }
         fri-narrow{
             relativeTime{
                 past{
@@ -416,20 +280,6 @@
                 }
             }
         }
-        fri-short{
-            relative{
-                "-1"{"el vier. pasado"}
-                "0"{"este vier."}
-                "1"{"el próximo vier."}
-            }
-        }
-        mon{
-            relative{
-                "-1"{"el lunes pasado"}
-                "0"{"este lunes"}
-                "1"{"el lunes próximo"}
-            }
-        }
         month{
             relative{
                 "-1"{"el mes pasado"}
@@ -437,21 +287,6 @@
                 "1"{"el mes próximo"}
             }
         }
-        quarter{
-            relativeTime{
-                future{
-                    one{"dentro de {0} trimetre"}
-                    other{"dentro de {0} trimetres"}
-                }
-            }
-        }
-        sat{
-            relative{
-                "-1"{"el sábado pasado"}
-                "0"{"este sábado"}
-                "1"{"el sábado próximo"}
-            }
-        }
         sat-narrow{
             relativeTime{
                 past{
@@ -461,11 +296,6 @@
             }
         }
         sun{
-            relative{
-                "-1"{"el domingo pasado"}
-                "0"{"este domingo"}
-                "1"{"el domingo próximo"}
-            }
             relativeTime{
                 future{
                     one{"dentro de {0} domingo"}
@@ -473,19 +303,7 @@
                 }
             }
         }
-        thu{
-            relative{
-                "-1"{"el jueves pasado"}
-                "0"{"este jueves"}
-                "1"{"el jueves próximo"}
-            }
-        }
         tue{
-            relative{
-                "-1"{"el martes pasado"}
-                "0"{"este martes"}
-                "1"{"el martes próximo"}
-            }
             relativeTime{
                 future{
                     one{"dentro de {0} martes"}
@@ -493,18 +311,11 @@
                 }
             }
         }
-        wed{
-            relative{
-                "-1"{"el miércoles pasado"}
-                "0"{"este miércoles"}
-                "1"{"el miércoles próximo"}
-            }
-        }
         wed-short{
             relative{
                 "-1"{"el mie. pasado"}
-                "0"{"este miér."}
-                "1"{"el próximo miér."}
+                "0"{"este mié."}
+                "1"{"el próximo mié."}
             }
         }
         week{
@@ -514,6 +325,20 @@
                 "1"{"la semana próxima"}
             }
         }
+        week-narrow{
+            relative{
+                "-1"{"sem. pasada"}
+                "0"{"esta sem."}
+                "1"{"próxima sem."}
+            }
+        }
+        week-short{
+            relative{
+                "-1"{"sem. pasada"}
+                "0"{"esta sem."}
+                "1"{"próxima sem."}
+            }
+        }
         weekOfMonth-narrow{
             dn{"sem. de m"}
         }
@@ -524,10 +349,10 @@
             dn{"día de la semana del mes"}
         }
         weekdayOfMonth-narrow{
-            dn{"día de sem. de mes"}
+            dn{"día sem. de m"}
         }
         weekdayOfMonth-short{
-            dn{"día de sem. de mes"}
+            dn{"día sem. de m"}
         }
         year{
             relative{
@@ -537,6 +362,11 @@
             }
         }
     }
+    listPattern{
+        unit-short{
+            end{"{0} y {1}"}
+        }
+    }
     measurementSystemNames{
         UK{"imperial"}
     }
diff --git a/icu4c/source/data/locales/es_UY.txt b/icu4c/source/data/locales/es_UY.txt
index 921cf52..6d43040 100644
--- a/icu4c/source/data/locales/es_UY.txt
+++ b/icu4c/source/data/locales/es_UY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_UY{
     %%Parent{"es_419"}
     NumberElements{
@@ -14,29 +15,8 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
-            dayPeriod{
-                stand-alone{
-                    abbreviated{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
-                }
-            }
             monthNames{
                 format{
                     abbreviated{
diff --git a/icu4c/source/data/locales/es_VE.txt b/icu4c/source/data/locales/es_VE.txt
index bb792c8..a2199a1 100644
--- a/icu4c/source/data/locales/es_VE.txt
+++ b/icu4c/source/data/locales/es_VE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_VE{
     %%Parent{"es_419"}
     NumberElements{
@@ -13,17 +14,8 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
-            AmPmMarkers{
-                "a. m.",
-                "p. m.",
-            }
-            AmPmMarkersAbbr{
-                "a. m.",
-                "p. m.",
-            }
             DateTimePatterns{
                 "h:mm:ss a zzzz",
                 "h:mm:ss a z",
@@ -34,8 +26,8 @@
                 "d MMM y",
                 "d/M/yy",
                 "{1} {0}",
-                "{1} 'a' 'las' {0}",
-                "{1} 'a' 'las' {0}",
+                "{1}, {0}",
+                "{1}, {0}",
                 "{1} {0}",
                 "{1} {0}",
             }
@@ -68,17 +60,9 @@
             }
             dayPeriod{
                 stand-alone{
-                    abbreviated{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
                     narrow{
                         noon{"m."}
                     }
-                    wide{
-                        am{"a. m."}
-                        pm{"p. m."}
-                    }
                 }
             }
             monthNames{
diff --git a/icu4c/source/data/locales/et.txt b/icu4c/source/data/locales/et.txt
index cbbc28c..adc8b88 100644
--- a/icu4c/source/data/locales/et.txt
+++ b/icu4c/source/data/locales/et.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 et{
     AuxExemplarCharacters{"[á à â å ã ā æ ç é è ê ë ē í ì î ï ī ñ ó ò ŏ ô ø ō œ ú ù û ū]"}
     Ellipsis{
@@ -186,6 +187,7 @@
                 }
             }
             symbols{
+                approximatelySign{"≈"}
                 decimal{","}
                 exponential{"×10^"}
                 group{" "}
@@ -211,7 +213,6 @@
         minimumGroupingDigits{"2"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -314,7 +315,7 @@
                 GyMMMd{"d. MMM y G"}
                 H{"HH"}
                 Hm{"HH:mm"}
-                Hms{"H:mm.ss"}
+                Hms{"H:mm:ss"}
                 M{"M"}
                 MEd{"E, d.M"}
                 MMM{"MMMM"}
@@ -326,9 +327,9 @@
                 d{"d"}
                 h{"h a"}
                 hm{"h:mm a"}
-                hms{"h:mm.ss a"}
-                mmss{"mm.ss"}
-                ms{"mm.ss"}
+                hms{"h:mm:ss a"}
+                mmss{"mm:ss"}
+                ms{"mm:ss"}
                 y{"y G"}
                 yyyy{"y G"}
                 yyyyM{"M.y G"}
@@ -1929,7 +1930,7 @@
         number{
             lenient{
                 "[\\-‒⁻₋−➖﹣-]",
-                "[,،٫、︐︑﹐﹑,、]",
+                "[,،٫⹁、︐︑﹐﹑,、]",
                 "[+⁺₊➕﬩﹢+]",
             }
         }
diff --git a/icu4c/source/data/locales/et_EE.txt b/icu4c/source/data/locales/et_EE.txt
index 5736fc8..778212b 100644
--- a/icu4c/source/data/locales/et_EE.txt
+++ b/icu4c/source/data/locales/et_EE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 et_EE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/eu.txt b/icu4c/source/data/locales/eu.txt
index f43a467..dc9c8e9 100644
--- a/icu4c/source/data/locales/eu.txt
+++ b/icu4c/source/data/locales/eu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 eu{
     AuxExemplarCharacters{"[á à ă â å ä ã ā æ é è ĕ ê ë ē í ì ĭ î ï ī ó ò ŏ ô ö ø ō œ ú ù ŭ û ü ū ÿ]"}
     Ellipsis{
@@ -19,6 +20,19 @@
     }
     MoreInformation{"?"}
     NumberElements{
+        arab{
+            symbols{
+                minusSign{"-"}
+                percentSign{"٪؜"}
+                plusSign{"+"}
+            }
+        }
+        arabext{
+            symbols{
+                minusSign{"‎-‎"}
+                plusSign{"‎+‎"}
+            }
+        }
         latn{
             miscPatterns{
                 approximately{"~{0}"}
@@ -36,16 +50,16 @@
             patternsLong{
                 decimalFormat{
                     1000{
-                        one{"0000"}
-                        other{"0000"}
+                        one{"0"}
+                        other{"0"}
                     }
                     10000{
-                        one{"00000"}
-                        other{"00000"}
+                        one{"0"}
+                        other{"0"}
                     }
                     100000{
-                        one{"000000"}
-                        other{"000000"}
+                        one{"0"}
+                        other{"0"}
                     }
                     1000000{
                         one{"0 milioi"}
@@ -88,16 +102,16 @@
             patternsShort{
                 currencyFormat{
                     1000{
-                        one{"0000 ¤"}
-                        other{"0000 ¤"}
+                        one{"0"}
+                        other{"0"}
                     }
                     10000{
-                        one{"00000 ¤"}
-                        other{"00000 ¤"}
+                        one{"0"}
+                        other{"0"}
                     }
                     100000{
-                        one{"000000 ¤"}
-                        other{"000000 ¤"}
+                        one{"0"}
+                        other{"0"}
                     }
                     1000000{
                         one{"0 M ¤"}
@@ -138,16 +152,16 @@
                 }
                 decimalFormat{
                     1000{
-                        one{"0000"}
-                        other{"0000"}
+                        one{"0"}
+                        other{"0"}
                     }
                     10000{
-                        one{"00000"}
-                        other{"00000"}
+                        one{"0"}
+                        other{"0"}
                     }
                     100000{
-                        one{"000000"}
-                        other{"000000"}
+                        one{"0"}
+                        other{"0"}
                     }
                     1000000{
                         one{"0 M"}
@@ -205,12 +219,11 @@
                 other{"{0}. bira eskuinetara"}
             }
             plural{
-                one{"Nire {0} lagunarekin nago"}
-                other{"Nire {0} lagunekin nago"}
+                one{"{0} lagun etorri da"}
+                other{"{0} lagun etorri dira"}
             }
         }
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -924,15 +937,15 @@
     }
     characterLabel{
         activities{"Jarduerak"}
-        african_scripts{"Script afrikarrak"}
-        american_scripts{"Script amerikarrak"}
-        animal{"animalia"}
+        african_scripts{"Idazkera afrikarrak"}
+        american_scripts{"Idazkera amerikarrak"}
+        animal{"Animalia"}
         animals_nature{"Animaliak eta natura"}
         arrows{"Geziak"}
-        body{"gorputza"}
+        body{"Gorputza"}
         box_drawing{"Koadro-marrazketa"}
-        braille{"Braille"}
-        building{"eraikina"}
+        braille{"Braillea"}
+        building{"Eraikinak"}
         bullets_stars{"Buletak/Izarrak"}
         consonantal_jamo{"Jamo kontsonantea"}
         currency_symbols{"Moneten ikurrak"}
@@ -942,11 +955,11 @@
         divination_symbols{"Astrologia-ikurrak"}
         downwards_arrows{"Behera-geziak"}
         downwards_upwards_arrows{"Behera-/Gora-geziak"}
-        east_asian_scripts{"Asiako ekialdeko scriptak"}
+        east_asian_scripts{"Asiako ekialdeko idazkerak"}
         emoji{"Emotikonoa"}
-        european_scripts{"Script europearrak"}
-        female{"emakumea"}
-        flag{"bandera"}
+        european_scripts{"Idazkera europarrak"}
+        female{"Emakumea"}
+        flag{"Bandera"}
         flags{"Banderak"}
         food_drink{"Jan-edariak"}
         format{"Formatua"}
@@ -959,55 +972,55 @@
         hanja{"Hanja"}
         hanzi_simplified{"Hanzi (sinplifikatua)"}
         hanzi_traditional{"Hanzi (tradizionala)"}
-        heart{"bihotza"}
-        historic_scripts{"Script historikoak"}
+        heart{"Bihotza"}
+        historic_scripts{"Idazkera historikoak"}
         ideographic_desc_characters{"Karaktere ideografiko deskribatzaileak"}
         japanese_kana{"Japonierako kana"}
         kanbun{"Kanbuna"}
         kanji{"Kanjia"}
-        keycap{"tekla"}
+        keycap{"Tekla"}
         leftwards_arrows{"Ezker-geziak"}
         leftwards_rightwards_arrows{"Ezker-/Eskuin-geziak"}
         letterlike_symbols{"Hizkien antzeko ikurrak"}
         limited_use{"Erabilera mugatua"}
         male{"gizona"}
         math_symbols{"Matematikako ikurrak"}
-        middle_eastern_scripts{"Ekialde Ertaineko scriptak"}
+        middle_eastern_scripts{"Ekialde Ertaineko idazkerak"}
         miscellaneous{"Askotarikoak"}
-        modern_scripts{"Script modernoak"}
+        modern_scripts{"Idazkera modernoak"}
         modifier{"Aldatzailea"}
         musical_symbols{"Musika-ikurrak"}
-        nature{"natura"}
-        nonspacing{"Tarterik gabeko"}
+        nature{"Natura"}
+        nonspacing{"Tarterik gabekoak"}
         numbers{"Zenbakiak"}
         objects{"Objektuak"}
         other{"Bestelakoak"}
         paired{"Parekatuta"}
-        person{"pertsona"}
+        person{"Pertsona"}
         phonetic_alphabet{"Alfabeto fonetikoa"}
         pictographs{"Piktogramak"}
-        place{"tokia"}
-        plant{"landarea"}
+        place{"Tokia"}
+        plant{"Landarea"}
         punctuation{"Puntuazioa"}
         rightwards_arrows{"Eskuin-geziak"}
         sign_standard_symbols{"Zeinuak / Ikur estandarrak"}
         small_form_variant{"Forma-aldaera txikiak"}
         smiley{"emotikonoa"}
         smileys_people{"Emotikonoak eta jendea"}
-        south_asian_scripts{"Asiako hegoaldeko scriptak"}
+        south_asian_scripts{"Asiako hegoaldeko idazkerak"}
         southeast_asian_scripts{"Asiako hego-ekialdeko scriptak"}
         spacing{"Tartea"}
-        sport{"kirola"}
+        sport{"Kirola"}
         symbols{"Ikurrak"}
         technical_symbols{"Ikur teknikoak"}
         tone_marks{"Tonu-markak"}
-        travel{"bidaiak"}
+        travel{"Bidaiak"}
         travel_places{"Bidaiak eta tokiak"}
         upwards_arrows{"Gora-geziak"}
         variant_forms{"Aldaeren formak"}
         vocalic_jamo{"Jamo bokala"}
-        weather{"eguraldia"}
-        western_asian_scripts{"Asiako mendebaldeko scriptak"}
+        weather{"Eguraldia"}
+        western_asian_scripts{"Asiako mendebaldeko idazkerak"}
         whitespace{"Zuriunea"}
     }
     delimiters{
diff --git a/icu4c/source/data/locales/eu_ES.txt b/icu4c/source/data/locales/eu_ES.txt
index a5a195d..cf7597d 100644
--- a/icu4c/source/data/locales/eu_ES.txt
+++ b/icu4c/source/data/locales/eu_ES.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 eu_ES{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ewo.txt b/icu4c/source/data/locales/ewo.txt
index 6791147..b5fc883 100644
--- a/icu4c/source/data/locales/ewo.txt
+++ b/icu4c/source/data/locales/ewo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ewo{
     AuxExemplarCharacters{"[c j q x]"}
     ExemplarCharacters{
@@ -23,7 +24,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ewo_CM.txt b/icu4c/source/data/locales/ewo_CM.txt
index 42a9f47..81b8a77 100644
--- a/icu4c/source/data/locales/ewo_CM.txt
+++ b/icu4c/source/data/locales/ewo_CM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ewo_CM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fa.txt b/icu4c/source/data/locales/fa.txt
index 16af87b..dabdf31 100644
--- a/icu4c/source/data/locales/fa.txt
+++ b/icu4c/source/data/locales/fa.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fa{
     AuxExemplarCharacters{
         "[ـ\u200C\u200D\u200E\u200F \u064E \u0650 \u064F \u0652 \u0656 \u0670 إ ك ى ي"
@@ -61,6 +62,7 @@
             patterns{
                 accountingFormat{"‎¤ #,##0.00;‎(¤ #,##0.00)"}
                 currencyFormat{"‎¤ #,##0.00"}
+                decimalFormat{"#,##0.###"}
                 percentFormat{"#,##0%"}
                 scientificFormat{"#E0"}
             }
@@ -202,7 +204,7 @@
                     }
                     100000000000{
                         one{"000 ب"}
-                        other{"000 میلیارد"}
+                        other{"000B"}
                     }
                     1000000000000{
                         one{"0 ت"}
@@ -243,7 +245,6 @@
         minimumGroupingDigits{"1"}
         native{"arabext"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -2702,13 +2703,13 @@
             dn{"روز سال"}
         }
         dayperiod{
-            dn{"قبل/بعدازظهر"}
+            dn{"ق.ظ/ب.ظ"}
         }
         dayperiod-narrow{
-            dn{"قبل/بعدازظهر"}
+            dn{"ق.ظ/ب.ظ"}
         }
         dayperiod-short{
-            dn{"قبل/بعدازظهر"}
+            dn{"ق.ظ/ب.ظ"}
         }
         era{
             dn{"دوره"}
@@ -3526,7 +3527,7 @@
         }
         unit-short{
             2{"{0}،‏ {1}"}
-            end{"{0}،‏ {1}"}
+            end{"{0}، و {1}"}
             middle{"{0}،‏ {1}"}
             start{"{0}،‏ {1}"}
         }
diff --git a/icu4c/source/data/locales/fa_AF.txt b/icu4c/source/data/locales/fa_AF.txt
index 9dce99c..94a2897 100644
--- a/icu4c/source/data/locales/fa_AF.txt
+++ b/icu4c/source/data/locales/fa_AF.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fa_AF{
     AuxExemplarCharacters{
         "[\u200E\u200F \u064E \u0650 \u064F \u0652 \u0656 \u0670 \u200C \u200D إ ټ ځ "
@@ -18,7 +19,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             appendItems{
diff --git a/icu4c/source/data/locales/fa_IR.txt b/icu4c/source/data/locales/fa_IR.txt
index 825bab1..e572a6f 100644
--- a/icu4c/source/data/locales/fa_IR.txt
+++ b/icu4c/source/data/locales/fa_IR.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fa_IR{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ff.txt b/icu4c/source/data/locales/ff.txt
index 82f4670..48e02ce 100644
--- a/icu4c/source/data/locales/ff.txt
+++ b/icu4c/source/data/locales/ff.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff{
     AuxExemplarCharacters{"[q v x z]"}
     ExemplarCharacters{"[a b ɓ c d ɗ e f g h i j k l m n ñ ŋ o p r s t u w y ƴ]"}
@@ -16,7 +17,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ff_Adlm.txt b/icu4c/source/data/locales/ff_Adlm.txt
index c8a8249..e4a590b 100644
--- a/icu4c/source/data/locales/ff_Adlm.txt
+++ b/icu4c/source/data/locales/ff_Adlm.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm{
     %%Parent{"root"}
     AuxExemplarCharacters{"[𞤾 𞤿 𞥀 𞥁 𞥂 𞥃]"}
@@ -54,7 +55,12 @@
                 }
             }
             symbols{
+                decimal{"."}
+                group{"⹁"}
+                minusSign{"-"}
                 nan{"𞤏𞤮𞤈"}
+                percentSign{"%"}
+                plusSign{"+"}
             }
         }
         minimalPairs{
@@ -69,7 +75,6 @@
         minimumGroupingDigits{"1"}
         native{"adlm"}
     }
-    Version{"37"}
     calendar{
         gregorian{
             AmPmMarkers{
@@ -142,9 +147,9 @@
                         "𞤈𞤫𞤬𞤦𞤭𞤪𞥆𞤫",
                         "𞤀𞥄𞤩𞤵𞤲𞥋𞤣𞤫",
                         "𞤃𞤢𞤱𞤦𞤢𞥄𞤪𞤫",
-                        "𞤐𞥋𞤔𞤫𞤧𞤤𞤢𞥄𞤪𞤫",
-                        "𞤐𞤢𞥄𞤧𞤢𞥄𞤲𞥋𞤣𞤫",
-                        "𞤃𞤢𞤱𞤲𞥋𞤣𞤫",
+                        "𞤐𞤶𞤫𞤧𞤤𞤢𞥄𞤪𞤫",
+                        "𞤐𞤢𞥄𞤧𞤢𞥄𞤲𞤣𞤫",
+                        "𞤃𞤢𞤱𞤲𞤣𞤫",
                         "𞤖𞤮𞤪𞤦𞤭𞤪𞥆𞤫",
                     }
                 }
@@ -180,9 +185,9 @@
                         "𞤈𞤫𞤬𞤦𞤭𞤪𞥆𞤫",
                         "𞤀𞥄𞤩𞤵𞤲𞥋𞤣𞤫",
                         "𞤃𞤢𞤱𞤦𞤢𞥄𞤪𞤫",
-                        "𞤐𞥋𞤔𞤫𞤧𞤤𞤢𞥄𞤪𞤫",
-                        "𞤐𞤢𞥄𞤧𞤢𞥄𞤲𞥋𞤣𞤫",
-                        "𞤃𞤢𞤱𞤲𞥋𞤣𞤫",
+                        "𞤐𞤶𞤫𞤧𞤤𞤢𞥄𞤪𞤫",
+                        "𞤐𞤢𞥄𞤧𞤢𞥄𞤲𞤣𞤫",
+                        "𞤃𞤢𞤱𞤲𞤣𞤫",
                         "𞤖𞤮𞤪𞤦𞤭𞤪𞥆𞤫",
                     }
                 }
@@ -209,16 +214,16 @@
                     "𞤇𞤀𞤋",
                 }
                 abbreviated%variant{
-                    "𞤀𞤘𞤖",
-                    "𞤀𞤖",
+                    "𞤀𞤘𞤑",
+                    "𞤘𞤑",
                 }
                 wide{
                     "𞤀𞤣𞤮 𞤀𞤲𞥆𞤢𞤦𞤭 𞤋𞥅𞤧𞤢𞥄",
                     "𞤇𞤢𞥄𞤱𞤮 𞤀𞤲𞥆𞤢𞤦𞤭 𞤋𞥅𞤧𞤢𞥄",
                 }
                 wide%variant{
-                    "𞤀𞤣𞤮 𞤘𞤭𞤪𞤢𞤤 𞤖𞤢𞤲𞤣𞤫",
-                    "𞤘𞤭𞤪𞤢𞤤 𞤖𞤢𞤲𞤣𞤫",
+                    "𞤀𞤣𞤮 𞤘𞤭𞤪𞤢𞤤 𞤑𞤢𞤬𞤢𞥄𞤲𞤺𞤢𞤤",
+                    "𞤘𞤭𞤪𞤢𞤤 𞤑𞤢𞤬𞤢𞥄𞤲𞤺𞤢𞤤",
                 }
             }
             monthNames{
@@ -226,7 +231,7 @@
                     abbreviated{
                         "𞤅𞤭𞥅𞤤𞤮",
                         "𞤕𞤮𞤤𞤼𞤮",
-                        "𞤐𞥋𞤄𞤮𞥅𞤴𞤮",
+                        "𞤐𞤦𞤮𞥅𞤴𞤮",
                         "𞤅𞤫𞥅𞤼𞤮",
                         "𞤁𞤵𞥅𞤶𞤮",
                         "𞤑𞤮𞤪𞤧𞤮",
@@ -235,7 +240,7 @@
                         "𞤅𞤭𞤤𞤼𞤮",
                         "𞤒𞤢𞤪𞤳𞤮",
                         "𞤔𞤮𞤤𞤮",
-                        "𞤐𞥋𞤄𞤮𞤱𞤼𞤮",
+                        "𞤐𞤦𞤮𞤱𞤼𞤮",
                     }
                     narrow{
                         "𞤅",
@@ -254,7 +259,7 @@
                     wide{
                         "𞤅𞤭𞥅𞤤𞤮",
                         "𞤕𞤮𞤤𞤼𞤮",
-                        "𞤐𞥋𞤄𞤮𞥅𞤴𞤮",
+                        "𞤐𞤦𞤮𞥅𞤴𞤮",
                         "𞤅𞤫𞥅𞤼𞤮",
                         "𞤁𞤵𞥅𞤶𞤮",
                         "𞤑𞤮𞤪𞤧𞤮",
@@ -263,7 +268,7 @@
                         "𞤅𞤭𞤤𞤼𞤮",
                         "𞤒𞤢𞤪𞤳𞤮",
                         "𞤔𞤮𞤤𞤮",
-                        "𞤐𞥋𞤄𞤮𞤱𞤼𞤮",
+                        "𞤐𞤦𞤮𞤱𞤼𞤮",
                     }
                 }
                 stand-alone{
@@ -298,7 +303,7 @@
                     wide{
                         "𞤅𞤭𞥅𞤤𞤮",
                         "𞤕𞤮𞤤𞤼𞤮",
-                        "𞤐𞥋𞤄𞤮𞥅𞤴𞤮",
+                        "𞤐𞤦𞤮𞥅𞤴𞤮",
                         "𞤅𞤫𞥅𞤼𞤮",
                         "𞤁𞤵𞥅𞤶𞤮",
                         "𞤑𞤮𞤪𞤧𞤮",
@@ -307,14 +312,14 @@
                         "𞤅𞤭𞤤𞤼𞤮",
                         "𞤒𞤢𞤪𞤳𞤮",
                         "𞤔𞤮𞤤𞤮",
-                        "𞤐𞥋𞤄𞤮𞤱𞤼𞤮",
+                        "𞤐𞤦𞤮𞤱𞤼𞤮",
                     }
                 }
             }
             quarters{
                 format{
                     abbreviated{
-                        "𞤒𞥑",
+                        "𞤐𞥑",
                         "𞤐𞥒",
                         "𞤐𞥓",
                         "𞤐𞥔",
@@ -326,7 +331,7 @@
                         "𞥔",
                     }
                     wide{
-                        "𞤒𞥑",
+                        "𞤐𞥑",
                         "𞤐𞥒",
                         "𞤐𞥓",
                         "𞤐𞥔",
@@ -634,7 +639,7 @@
             }
         }
         minute{
-            dn{"𞤸𞤮𞤶𞤮𞤥𞤪𞤫"}
+            dn{"𞤸𞤮𞤶𞤮𞤥𞤢𞥄𞤪𞤫"}
             relative{
                 "0"{"𞤲𞥋𞤣𞤫𞥅 𞤯𞤮𞤮 𞤸𞤮𞤶𞤮𞤥𞤪𞤫"}
             }
@@ -876,7 +881,7 @@
             }
         }
         second{
-            dn{"𞤸𞤭𞤲𞤰𞤫𞤪𞤫"}
+            dn{"𞤳𞤭𞤲𞤰𞤫𞤪𞤫"}
             relative{
                 "0"{"𞤶𞤮𞥅𞤲𞤭"}
             }
@@ -892,7 +897,7 @@
             }
         }
         second-narrow{
-            dn{"𞤸𞤭𞤲."}
+            dn{"𞤳𞤭𞤲."}
             relativeTime{
                 future{
                     one{"𞤲𞥋𞤣𞤫𞤪 {0} 𞤳𞤭𞤲."}
@@ -905,7 +910,7 @@
             }
         }
         second-short{
-            dn{"𞤸𞤭𞤲."}
+            dn{"𞤳𞤭𞤲."}
             relativeTime{
                 future{
                     one{"𞤲𞥋𞤣𞤫𞤪 {0} 𞤳𞤭𞤲."}
@@ -1330,9 +1335,9 @@
         }
     }
     measurementSystemNames{
-        UK{"𞤁𞤫𞤲𞤼𞤢𞤤 𞤐𞤁𞤫𞤱𞤲𞤺𞤵𞥅𞤶𞤭 𞤁𞤘"}
-        US{"𞤁𞤫𞤲𞤼𞤢𞤤 𞤂𞤢𞤪𞤫 𞤀𞤥𞤫𞤪𞤭𞤳 𞤁𞤂𞤀"}
-        metric{"𞤃𞤫𞤼𞤭𞤪𞤭𞤲𞤳𞤮"}
+        UK{"𞤑𞤵𞥅𞤰𞤫 𞤁𞤘"}
+        US{"𞤑𞤵𞥅𞤰𞤫 𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄 𞤁𞤂𞤀"}
+        metric{"𞤑𞤵𞥅𞤰𞤫 𞤃𞤫𞤼𞤭𞤪𞤳𞤵"}
     }
     parse{
         date{
diff --git a/icu4c/source/data/locales/ff_Adlm_BF.txt b/icu4c/source/data/locales/ff_Adlm_BF.txt
index 8cb790b..1fb8a42 100644
--- a/icu4c/source/data/locales/ff_Adlm_BF.txt
+++ b/icu4c/source/data/locales/ff_Adlm_BF.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_BF{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ff_Adlm_CM.txt b/icu4c/source/data/locales/ff_Adlm_CM.txt
index 690e1c7..aa078fd 100644
--- a/icu4c/source/data/locales/ff_Adlm_CM.txt
+++ b/icu4c/source/data/locales/ff_Adlm_CM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_CM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ff_Adlm_GH.txt b/icu4c/source/data/locales/ff_Adlm_GH.txt
index 18b53e6..4d354cc 100644
--- a/icu4c/source/data/locales/ff_Adlm_GH.txt
+++ b/icu4c/source/data/locales/ff_Adlm_GH.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_GH{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ff_Adlm_GM.txt b/icu4c/source/data/locales/ff_Adlm_GM.txt
index a3f8982..bf14a19 100644
--- a/icu4c/source/data/locales/ff_Adlm_GM.txt
+++ b/icu4c/source/data/locales/ff_Adlm_GM.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_GM{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ff_Adlm_GN.txt b/icu4c/source/data/locales/ff_Adlm_GN.txt
index 7c3f67b..47cbdd9 100644
--- a/icu4c/source/data/locales/ff_Adlm_GN.txt
+++ b/icu4c/source/data/locales/ff_Adlm_GN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_GN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ff_Adlm_GW.txt b/icu4c/source/data/locales/ff_Adlm_GW.txt
index 453b08b..ed5e92a 100644
--- a/icu4c/source/data/locales/ff_Adlm_GW.txt
+++ b/icu4c/source/data/locales/ff_Adlm_GW.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_GW{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ff_Adlm_LR.txt b/icu4c/source/data/locales/ff_Adlm_LR.txt
index 8d3c377..3ba2d41 100644
--- a/icu4c/source/data/locales/ff_Adlm_LR.txt
+++ b/icu4c/source/data/locales/ff_Adlm_LR.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_LR{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ff_Adlm_MR.txt b/icu4c/source/data/locales/ff_Adlm_MR.txt
index 44e6719..d8d86fb 100644
--- a/icu4c/source/data/locales/ff_Adlm_MR.txt
+++ b/icu4c/source/data/locales/ff_Adlm_MR.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_MR{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ff_Adlm_NE.txt b/icu4c/source/data/locales/ff_Adlm_NE.txt
index 681d27d..b6d3424 100644
--- a/icu4c/source/data/locales/ff_Adlm_NE.txt
+++ b/icu4c/source/data/locales/ff_Adlm_NE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_NE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ff_Adlm_NG.txt b/icu4c/source/data/locales/ff_Adlm_NG.txt
index 34283aa..2513877 100644
--- a/icu4c/source/data/locales/ff_Adlm_NG.txt
+++ b/icu4c/source/data/locales/ff_Adlm_NG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_NG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ff_Adlm_SL.txt b/icu4c/source/data/locales/ff_Adlm_SL.txt
index 8491422..584abf5 100644
--- a/icu4c/source/data/locales/ff_Adlm_SL.txt
+++ b/icu4c/source/data/locales/ff_Adlm_SL.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_SL{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ff_Adlm_SN.txt b/icu4c/source/data/locales/ff_Adlm_SN.txt
index 246f465..c071f39 100644
--- a/icu4c/source/data/locales/ff_Adlm_SN.txt
+++ b/icu4c/source/data/locales/ff_Adlm_SN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm_SN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ff_CM.txt b/icu4c/source/data/locales/ff_CM.txt
index c381f6c..0bf68ef 100644
--- a/icu4c/source/data/locales/ff_CM.txt
+++ b/icu4c/source/data/locales/ff_CM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_CM{
     "%%ALIAS"{"ff_Latn_CM"}
 }
diff --git a/icu4c/source/data/locales/ff_GN.txt b/icu4c/source/data/locales/ff_GN.txt
index c3a0bf3..433db4d 100644
--- a/icu4c/source/data/locales/ff_GN.txt
+++ b/icu4c/source/data/locales/ff_GN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_GN{
     "%%ALIAS"{"ff_Latn_GN"}
 }
diff --git a/icu4c/source/data/locales/ff_Latn.txt b/icu4c/source/data/locales/ff_Latn.txt
index 3d8715b..d30cb62 100644
--- a/icu4c/source/data/locales/ff_Latn.txt
+++ b/icu4c/source/data/locales/ff_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ff_Latn_BF.txt b/icu4c/source/data/locales/ff_Latn_BF.txt
index f20f10c..d542683 100644
--- a/icu4c/source/data/locales/ff_Latn_BF.txt
+++ b/icu4c/source/data/locales/ff_Latn_BF.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_BF{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ff_Latn_CM.txt b/icu4c/source/data/locales/ff_Latn_CM.txt
index 930200d..1fd08a4 100644
--- a/icu4c/source/data/locales/ff_Latn_CM.txt
+++ b/icu4c/source/data/locales/ff_Latn_CM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_CM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ff_Latn_GH.txt b/icu4c/source/data/locales/ff_Latn_GH.txt
index f6d25c5..71ef517 100644
--- a/icu4c/source/data/locales/ff_Latn_GH.txt
+++ b/icu4c/source/data/locales/ff_Latn_GH.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_GH{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ff_Latn_GM.txt b/icu4c/source/data/locales/ff_Latn_GM.txt
index 503bc29..7442f51 100644
--- a/icu4c/source/data/locales/ff_Latn_GM.txt
+++ b/icu4c/source/data/locales/ff_Latn_GM.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_GM{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ff_Latn_GN.txt b/icu4c/source/data/locales/ff_Latn_GN.txt
index 7ae7a94..ac936be 100644
--- a/icu4c/source/data/locales/ff_Latn_GN.txt
+++ b/icu4c/source/data/locales/ff_Latn_GN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_GN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ff_Latn_GW.txt b/icu4c/source/data/locales/ff_Latn_GW.txt
index 6a7e0a8..755a132 100644
--- a/icu4c/source/data/locales/ff_Latn_GW.txt
+++ b/icu4c/source/data/locales/ff_Latn_GW.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_GW{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ff_Latn_LR.txt b/icu4c/source/data/locales/ff_Latn_LR.txt
index 2d3cc91..2a8a3a4 100644
--- a/icu4c/source/data/locales/ff_Latn_LR.txt
+++ b/icu4c/source/data/locales/ff_Latn_LR.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_LR{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ff_Latn_MR.txt b/icu4c/source/data/locales/ff_Latn_MR.txt
index f8b0b0d..f35b101 100644
--- a/icu4c/source/data/locales/ff_Latn_MR.txt
+++ b/icu4c/source/data/locales/ff_Latn_MR.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_MR{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ff_Latn_NE.txt b/icu4c/source/data/locales/ff_Latn_NE.txt
index 5bd23f3..204f7e7 100644
--- a/icu4c/source/data/locales/ff_Latn_NE.txt
+++ b/icu4c/source/data/locales/ff_Latn_NE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_NE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ff_Latn_NG.txt b/icu4c/source/data/locales/ff_Latn_NG.txt
index ff19638..34ae55f 100644
--- a/icu4c/source/data/locales/ff_Latn_NG.txt
+++ b/icu4c/source/data/locales/ff_Latn_NG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_NG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ff_Latn_SL.txt b/icu4c/source/data/locales/ff_Latn_SL.txt
index dc04196..7b2dc8b 100644
--- a/icu4c/source/data/locales/ff_Latn_SL.txt
+++ b/icu4c/source/data/locales/ff_Latn_SL.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_SL{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ff_Latn_SN.txt b/icu4c/source/data/locales/ff_Latn_SN.txt
index 9de5124..a21be07 100644
--- a/icu4c/source/data/locales/ff_Latn_SN.txt
+++ b/icu4c/source/data/locales/ff_Latn_SN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn_SN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ff_MR.txt b/icu4c/source/data/locales/ff_MR.txt
index 17a8873..1da6e51 100644
--- a/icu4c/source/data/locales/ff_MR.txt
+++ b/icu4c/source/data/locales/ff_MR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_MR{
     "%%ALIAS"{"ff_Latn_MR"}
 }
diff --git a/icu4c/source/data/locales/ff_SN.txt b/icu4c/source/data/locales/ff_SN.txt
index c690854..ca2f4ec 100644
--- a/icu4c/source/data/locales/ff_SN.txt
+++ b/icu4c/source/data/locales/ff_SN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_SN{
     "%%ALIAS"{"ff_Latn_SN"}
 }
diff --git a/icu4c/source/data/locales/fi.txt b/icu4c/source/data/locales/fi.txt
index 141669d..24f6234 100644
--- a/icu4c/source/data/locales/fi.txt
+++ b/icu4c/source/data/locales/fi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fi{
     AuxExemplarCharacters{
         "[á à ă â ã ą ā ć č ċ ç ď ð đ é è ê ě ë ė ę ē ğ ǧ ģ ǥ ȟ ħ í î ï İ į ī ı ǩ ķ ĺ"
@@ -190,6 +191,7 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{","}
                 exponential{"E"}
                 group{" "}
@@ -216,7 +218,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/fi_FI.txt b/icu4c/source/data/locales/fi_FI.txt
index 41aaae1..1e59d8d 100644
--- a/icu4c/source/data/locales/fi_FI.txt
+++ b/icu4c/source/data/locales/fi_FI.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fi_FI{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fil.txt b/icu4c/source/data/locales/fil.txt
index 0db4abe..43218a5 100644
--- a/icu4c/source/data/locales/fil.txt
+++ b/icu4c/source/data/locales/fil.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fil{
     AuxExemplarCharacters{"[á à â é è ê í ì î ó ò ô ú ù û]"}
     Ellipsis{
@@ -199,10 +200,6 @@
             }
         }
         minimalPairs{
-            ordinal{
-                one{"Lumiko sa unang kanan."}
-                other{"Lumiko sa ika-{0} kanan."}
-            }
             plural{
                 one{"{0} mansanas"}
                 other{"{0} na mansanas"}
@@ -211,7 +208,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -929,6 +925,13 @@
                 yyyyQQQQ{"QQQQ y G"}
             }
             intervalFormats{
+                Bh{
+                    h{"h – h B"}
+                }
+                Bhm{
+                    h{"h:mm – h:mm B"}
+                    m{"h:mm – h:mm B"}
+                }
                 Gy{
                     G{"y G – y G"}
                     y{"y – y G"}
@@ -1312,6 +1315,13 @@
                 }
             }
             intervalFormats{
+                Bh{
+                    h{"h – h B"}
+                }
+                Bhm{
+                    h{"h:mm – h:mm B"}
+                    m{"h:mm – h:mm B"}
+                }
                 Gy{
                     G{"y G – y G"}
                     y{"y – y G"}
@@ -3135,7 +3145,7 @@
             }
         }
         quarter{
-            dn{"Quarter"}
+            dn{"quarter"}
             relative{
                 "-1"{"nakaraang quarter"}
                 "0"{"ngayong quarter"}
diff --git a/icu4c/source/data/locales/fil_PH.txt b/icu4c/source/data/locales/fil_PH.txt
index 05ef612..8e629d8 100644
--- a/icu4c/source/data/locales/fil_PH.txt
+++ b/icu4c/source/data/locales/fil_PH.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fil_PH{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fo.txt b/icu4c/source/data/locales/fo.txt
index 9192584..1518c45 100644
--- a/icu4c/source/data/locales/fo.txt
+++ b/icu4c/source/data/locales/fo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fo{
     AuxExemplarCharacters{"[c q w x z]"}
     Ellipsis{
@@ -21,6 +22,7 @@
             miscPatterns{
                 approximately{"~{0}"}
                 atLeast{"{0}+"}
+                atMost{"≤{0}"}
                 range{"{0}–{1}"}
             }
             patterns{
@@ -211,7 +213,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/fo_DK.txt b/icu4c/source/data/locales/fo_DK.txt
index 698401c..5bdec2c 100644
--- a/icu4c/source/data/locales/fo_DK.txt
+++ b/icu4c/source/data/locales/fo_DK.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fo_DK{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fo_FO.txt b/icu4c/source/data/locales/fo_FO.txt
index e267550..4a398ee 100644
--- a/icu4c/source/data/locales/fo_FO.txt
+++ b/icu4c/source/data/locales/fo_FO.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fo_FO{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr.txt b/icu4c/source/data/locales/fr.txt
index ea5f402..9607cb5 100644
--- a/icu4c/source/data/locales/fr.txt
+++ b/icu4c/source/data/locales/fr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr{
     AuxExemplarCharacters{"[á å ä ã ā ć ē í ì ī ij ñ ó ò ö õ ø ř š ſ ß ú ǔ]"}
     Ellipsis{
@@ -42,6 +43,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{"mille"}
                         one{"0 millier"}
                         other{"0 mille"}
                     }
@@ -194,6 +196,7 @@
                 }
             }
             symbols{
+                approximatelySign{"≃"}
                 decimal{","}
                 exponential{"E"}
                 group{" "}
@@ -214,6 +217,7 @@
                 other{"Prenez la {0}e à droite."}
             }
             plural{
+                many{"{0} de jours"}
                 one{"{0} jour"}
                 other{"{0} jours"}
             }
@@ -221,7 +225,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -893,10 +896,10 @@
                 "d MMMM y",
                 "d MMM y",
                 "dd/MM/y",
+                "{1}, {0}",
                 "{1} 'à' {0}",
                 "{1} 'à' {0}",
-                "{1} 'à' {0}",
-                "{1} 'à' {0}",
+                "{1}, {0}",
                 "{1} {0}",
             }
             appendItems{
diff --git a/icu4c/source/data/locales/fr_BE.txt b/icu4c/source/data/locales/fr_BE.txt
index d2f0d6b..a98493f 100644
--- a/icu4c/source/data/locales/fr_BE.txt
+++ b/icu4c/source/data/locales/fr_BE.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_BE{
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -30,10 +30,10 @@
                 "d MMMM y",
                 "d MMM y",
                 "d/MM/yy",
+                "{1}, {0}",
                 "{1} 'à' {0}",
                 "{1} 'à' {0}",
-                "{1} 'à' {0}",
-                "{1} 'à' {0}",
+                "{1}, {0}",
                 "{1} {0}",
             }
         }
diff --git a/icu4c/source/data/locales/fr_BF.txt b/icu4c/source/data/locales/fr_BF.txt
index ed281ee..317d476 100644
--- a/icu4c/source/data/locales/fr_BF.txt
+++ b/icu4c/source/data/locales/fr_BF.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_BF{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_BI.txt b/icu4c/source/data/locales/fr_BI.txt
index fdafea9..28eca27 100644
--- a/icu4c/source/data/locales/fr_BI.txt
+++ b/icu4c/source/data/locales/fr_BI.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_BI{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_BJ.txt b/icu4c/source/data/locales/fr_BJ.txt
index e3f6bf0..ce0e8a9 100644
--- a/icu4c/source/data/locales/fr_BJ.txt
+++ b/icu4c/source/data/locales/fr_BJ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_BJ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_BL.txt b/icu4c/source/data/locales/fr_BL.txt
index 8759a04..9e1bb01 100644
--- a/icu4c/source/data/locales/fr_BL.txt
+++ b/icu4c/source/data/locales/fr_BL.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_BL{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_CA.txt b/icu4c/source/data/locales/fr_CA.txt
index d00612c..6808692 100644
--- a/icu4c/source/data/locales/fr_CA.txt
+++ b/icu4c/source/data/locales/fr_CA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_CA{
     AuxExemplarCharacters{"[á å ä ã ā ē í ì ī ñ ó ò ö ø ú ǔ]"}
     NumberElements{
@@ -7,6 +8,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{"0 mille"}
                         one{"0 mille"}
                         other{"0 mille"}
                     }
@@ -99,11 +101,11 @@
                 }
             }
             symbols{
+                approximatelySign{"≈"}
                 group{" "}
             }
         }
     }
-    Version{"37"}
     calendar{
         coptic{
             monthNames{
@@ -348,10 +350,10 @@
                 "d MMMM y",
                 "d MMM y",
                 "y-MM-dd",
-                "{1} {0}",
+                "{1}, {0}",
                 "{1} 'à' {0}",
                 "{1} 'à' {0}",
-                "{1} {0}",
+                "{1}, {0}",
                 "{1} {0}",
             }
             availableFormats{
diff --git a/icu4c/source/data/locales/fr_CD.txt b/icu4c/source/data/locales/fr_CD.txt
index 46b7528..f00521d 100644
--- a/icu4c/source/data/locales/fr_CD.txt
+++ b/icu4c/source/data/locales/fr_CD.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_CD{
     NumberElements{
         latn{
@@ -8,7 +9,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             dayPeriod{
diff --git a/icu4c/source/data/locales/fr_CF.txt b/icu4c/source/data/locales/fr_CF.txt
index e6fbfd1..43e65d9 100644
--- a/icu4c/source/data/locales/fr_CF.txt
+++ b/icu4c/source/data/locales/fr_CF.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_CF{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_CG.txt b/icu4c/source/data/locales/fr_CG.txt
index 301f59e..a6a82ed 100644
--- a/icu4c/source/data/locales/fr_CG.txt
+++ b/icu4c/source/data/locales/fr_CG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_CG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_CH.txt b/icu4c/source/data/locales/fr_CH.txt
index a849e9e..90f8d3a 100644
--- a/icu4c/source/data/locales/fr_CH.txt
+++ b/icu4c/source/data/locales/fr_CH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_CH{
     NumberElements{
         latn{
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -95,10 +95,10 @@
                 "d MMMM y",
                 "d MMM y",
                 "dd.MM.yy",
+                "{1}, {0}",
                 "{1} 'à' {0}",
                 "{1} 'à' {0}",
-                "{1} 'à' {0}",
-                "{1} 'à' {0}",
+                "{1}, {0}",
                 "{1} {0}",
             }
             availableFormats{
diff --git a/icu4c/source/data/locales/fr_CI.txt b/icu4c/source/data/locales/fr_CI.txt
index 0dd1f9c..a51e421 100644
--- a/icu4c/source/data/locales/fr_CI.txt
+++ b/icu4c/source/data/locales/fr_CI.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_CI{
     NumberElements{
         latn{
@@ -8,5 +9,4 @@
             }
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_CM.txt b/icu4c/source/data/locales/fr_CM.txt
index 32c8e87..960bcbf 100644
--- a/icu4c/source/data/locales/fr_CM.txt
+++ b/icu4c/source/data/locales/fr_CM.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_CM{
-    Version{"37"}
     calendar{
         gregorian{
             AmPmMarkers{
diff --git a/icu4c/source/data/locales/fr_DJ.txt b/icu4c/source/data/locales/fr_DJ.txt
index a0559ea..045c3c1 100644
--- a/icu4c/source/data/locales/fr_DJ.txt
+++ b/icu4c/source/data/locales/fr_DJ.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_DJ{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
@@ -13,10 +13,10 @@
                 "d MMMM y",
                 "d MMM y",
                 "dd/MM/y",
+                "{1}, {0}",
                 "{1} 'à' {0}",
                 "{1} 'à' {0}",
-                "{1} 'à' {0}",
-                "{1} 'à' {0}",
+                "{1}, {0}",
                 "{1} {0}",
             }
         }
diff --git a/icu4c/source/data/locales/fr_DZ.txt b/icu4c/source/data/locales/fr_DZ.txt
index 6322d4f..191262b 100644
--- a/icu4c/source/data/locales/fr_DZ.txt
+++ b/icu4c/source/data/locales/fr_DZ.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_DZ{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
@@ -13,10 +13,10 @@
                 "d MMMM y",
                 "d MMM y",
                 "dd/MM/y",
+                "{1}, {0}",
                 "{1} 'à' {0}",
                 "{1} 'à' {0}",
-                "{1} 'à' {0}",
-                "{1} 'à' {0}",
+                "{1}, {0}",
                 "{1} {0}",
             }
         }
diff --git a/icu4c/source/data/locales/fr_FR.txt b/icu4c/source/data/locales/fr_FR.txt
index ab1c69f..4cb7595 100644
--- a/icu4c/source/data/locales/fr_FR.txt
+++ b/icu4c/source/data/locales/fr_FR.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_FR{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_GA.txt b/icu4c/source/data/locales/fr_GA.txt
index 6f7e2f6..a9f8747 100644
--- a/icu4c/source/data/locales/fr_GA.txt
+++ b/icu4c/source/data/locales/fr_GA.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_GA{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_GF.txt b/icu4c/source/data/locales/fr_GF.txt
index 03236b4..b55566c 100644
--- a/icu4c/source/data/locales/fr_GF.txt
+++ b/icu4c/source/data/locales/fr_GF.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_GF{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_GN.txt b/icu4c/source/data/locales/fr_GN.txt
index 45e0b5c..d832ae3 100644
--- a/icu4c/source/data/locales/fr_GN.txt
+++ b/icu4c/source/data/locales/fr_GN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_GN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_GP.txt b/icu4c/source/data/locales/fr_GP.txt
index 6c05615..d732611 100644
--- a/icu4c/source/data/locales/fr_GP.txt
+++ b/icu4c/source/data/locales/fr_GP.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_GP{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_GQ.txt b/icu4c/source/data/locales/fr_GQ.txt
index 2ca337e..412bfae 100644
--- a/icu4c/source/data/locales/fr_GQ.txt
+++ b/icu4c/source/data/locales/fr_GQ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_GQ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_HT.txt b/icu4c/source/data/locales/fr_HT.txt
index fc1b1bf..0cf8cb6 100644
--- a/icu4c/source/data/locales/fr_HT.txt
+++ b/icu4c/source/data/locales/fr_HT.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_HT{
-    Version{"37"}
     calendar{
         gregorian{
             dayPeriod{
diff --git a/icu4c/source/data/locales/fr_KM.txt b/icu4c/source/data/locales/fr_KM.txt
index 04a1063..a416e19 100644
--- a/icu4c/source/data/locales/fr_KM.txt
+++ b/icu4c/source/data/locales/fr_KM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_KM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_LU.txt b/icu4c/source/data/locales/fr_LU.txt
index 5aa49f3..513176b 100644
--- a/icu4c/source/data/locales/fr_LU.txt
+++ b/icu4c/source/data/locales/fr_LU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_LU{
     ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     NumberElements{
@@ -9,5 +10,4 @@
             }
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_MA.txt b/icu4c/source/data/locales/fr_MA.txt
index 7a42880..79726c5 100644
--- a/icu4c/source/data/locales/fr_MA.txt
+++ b/icu4c/source/data/locales/fr_MA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_MA{
     ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     NumberElements{
@@ -9,7 +10,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             AmPmMarkers{
diff --git a/icu4c/source/data/locales/fr_MC.txt b/icu4c/source/data/locales/fr_MC.txt
index ab996b3..2df96d5 100644
--- a/icu4c/source/data/locales/fr_MC.txt
+++ b/icu4c/source/data/locales/fr_MC.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_MC{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_MF.txt b/icu4c/source/data/locales/fr_MF.txt
index f924aec..fcd7183 100644
--- a/icu4c/source/data/locales/fr_MF.txt
+++ b/icu4c/source/data/locales/fr_MF.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_MF{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_MG.txt b/icu4c/source/data/locales/fr_MG.txt
index ee49460..80ace68 100644
--- a/icu4c/source/data/locales/fr_MG.txt
+++ b/icu4c/source/data/locales/fr_MG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_MG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_ML.txt b/icu4c/source/data/locales/fr_ML.txt
index c586014..841867e 100644
--- a/icu4c/source/data/locales/fr_ML.txt
+++ b/icu4c/source/data/locales/fr_ML.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_ML{
     NumberElements{
         latn{
@@ -8,7 +9,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/fr_MQ.txt b/icu4c/source/data/locales/fr_MQ.txt
index b5bae13..f2fd46b 100644
--- a/icu4c/source/data/locales/fr_MQ.txt
+++ b/icu4c/source/data/locales/fr_MQ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_MQ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_MR.txt b/icu4c/source/data/locales/fr_MR.txt
index fe140b2..b513e6e 100644
--- a/icu4c/source/data/locales/fr_MR.txt
+++ b/icu4c/source/data/locales/fr_MR.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_MR{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
@@ -13,10 +13,10 @@
                 "d MMMM y",
                 "d MMM y",
                 "dd/MM/y",
+                "{1}, {0}",
                 "{1} 'à' {0}",
                 "{1} 'à' {0}",
-                "{1} 'à' {0}",
-                "{1} 'à' {0}",
+                "{1}, {0}",
                 "{1} {0}",
             }
         }
diff --git a/icu4c/source/data/locales/fr_MU.txt b/icu4c/source/data/locales/fr_MU.txt
index 732051d..66054e7 100644
--- a/icu4c/source/data/locales/fr_MU.txt
+++ b/icu4c/source/data/locales/fr_MU.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_MU{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_NC.txt b/icu4c/source/data/locales/fr_NC.txt
index 489cabf..0abc741 100644
--- a/icu4c/source/data/locales/fr_NC.txt
+++ b/icu4c/source/data/locales/fr_NC.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_NC{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_NE.txt b/icu4c/source/data/locales/fr_NE.txt
index 78d0201..bfa5788 100644
--- a/icu4c/source/data/locales/fr_NE.txt
+++ b/icu4c/source/data/locales/fr_NE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_NE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_PF.txt b/icu4c/source/data/locales/fr_PF.txt
index 8082386..1b4ea6b 100644
--- a/icu4c/source/data/locales/fr_PF.txt
+++ b/icu4c/source/data/locales/fr_PF.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_PF{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_PM.txt b/icu4c/source/data/locales/fr_PM.txt
index 040ce05..6520f69 100644
--- a/icu4c/source/data/locales/fr_PM.txt
+++ b/icu4c/source/data/locales/fr_PM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_PM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_RE.txt b/icu4c/source/data/locales/fr_RE.txt
index ed78b29..bee6915 100644
--- a/icu4c/source/data/locales/fr_RE.txt
+++ b/icu4c/source/data/locales/fr_RE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_RE{
     NumberElements{
         latn{
@@ -8,7 +9,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             dayPeriod{
diff --git a/icu4c/source/data/locales/fr_RW.txt b/icu4c/source/data/locales/fr_RW.txt
index 5c10997..a7cd3b7 100644
--- a/icu4c/source/data/locales/fr_RW.txt
+++ b/icu4c/source/data/locales/fr_RW.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_RW{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_SC.txt b/icu4c/source/data/locales/fr_SC.txt
index 4cd6fd7..0f41092 100644
--- a/icu4c/source/data/locales/fr_SC.txt
+++ b/icu4c/source/data/locales/fr_SC.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_SC{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_SN.txt b/icu4c/source/data/locales/fr_SN.txt
index 68c5c13..625cc90 100644
--- a/icu4c/source/data/locales/fr_SN.txt
+++ b/icu4c/source/data/locales/fr_SN.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_SN{
-    Version{"37"}
     calendar{
         gregorian{
             dayPeriod{
diff --git a/icu4c/source/data/locales/fr_SY.txt b/icu4c/source/data/locales/fr_SY.txt
index 822ecfc..32cb08f 100644
--- a/icu4c/source/data/locales/fr_SY.txt
+++ b/icu4c/source/data/locales/fr_SY.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_SY{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
@@ -13,10 +13,10 @@
                 "d MMMM y",
                 "d MMM y",
                 "dd/MM/y",
+                "{1}, {0}",
                 "{1} 'à' {0}",
                 "{1} 'à' {0}",
-                "{1} 'à' {0}",
-                "{1} 'à' {0}",
+                "{1}, {0}",
                 "{1} {0}",
             }
         }
diff --git a/icu4c/source/data/locales/fr_TD.txt b/icu4c/source/data/locales/fr_TD.txt
index b402e14..c387ba4 100644
--- a/icu4c/source/data/locales/fr_TD.txt
+++ b/icu4c/source/data/locales/fr_TD.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_TD{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
@@ -13,10 +13,10 @@
                 "d MMMM y",
                 "d MMM y",
                 "dd/MM/y",
+                "{1}, {0}",
                 "{1} 'à' {0}",
                 "{1} 'à' {0}",
-                "{1} 'à' {0}",
-                "{1} 'à' {0}",
+                "{1}, {0}",
                 "{1} {0}",
             }
         }
diff --git a/icu4c/source/data/locales/fr_TG.txt b/icu4c/source/data/locales/fr_TG.txt
index 6ee8207..a97371a 100644
--- a/icu4c/source/data/locales/fr_TG.txt
+++ b/icu4c/source/data/locales/fr_TG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_TG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_TN.txt b/icu4c/source/data/locales/fr_TN.txt
index e0a695e..a69c62a 100644
--- a/icu4c/source/data/locales/fr_TN.txt
+++ b/icu4c/source/data/locales/fr_TN.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_TN{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
@@ -13,10 +13,10 @@
                 "d MMMM y",
                 "d MMM y",
                 "dd/MM/y",
+                "{1}, {0}",
                 "{1} 'à' {0}",
                 "{1} 'à' {0}",
-                "{1} 'à' {0}",
-                "{1} 'à' {0}",
+                "{1}, {0}",
                 "{1} {0}",
             }
         }
diff --git a/icu4c/source/data/locales/fr_VU.txt b/icu4c/source/data/locales/fr_VU.txt
index 206bf01..dca9c90 100644
--- a/icu4c/source/data/locales/fr_VU.txt
+++ b/icu4c/source/data/locales/fr_VU.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_VU{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
@@ -13,10 +13,10 @@
                 "d MMMM y",
                 "d MMM y",
                 "dd/MM/y",
+                "{1}, {0}",
                 "{1} 'à' {0}",
                 "{1} 'à' {0}",
-                "{1} 'à' {0}",
-                "{1} 'à' {0}",
+                "{1}, {0}",
                 "{1} {0}",
             }
         }
diff --git a/icu4c/source/data/locales/fr_WF.txt b/icu4c/source/data/locales/fr_WF.txt
index 1fc2c21..cb800fb 100644
--- a/icu4c/source/data/locales/fr_WF.txt
+++ b/icu4c/source/data/locales/fr_WF.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_WF{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fr_YT.txt b/icu4c/source/data/locales/fr_YT.txt
index 0bd9b80..ca36472 100644
--- a/icu4c/source/data/locales/fr_YT.txt
+++ b/icu4c/source/data/locales/fr_YT.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_YT{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fur.txt b/icu4c/source/data/locales/fur.txt
index 17701af..d2a2409 100644
--- a/icu4c/source/data/locales/fur.txt
+++ b/icu4c/source/data/locales/fur.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fur{
     AuxExemplarCharacters{"[å č é ë ğ ï ñ ó š ü]"}
     ExemplarCharacters{"[a à â b c ç d e è ê f g h i ì î j k l m n o ò ô p q r s t u ù û v w x y z]"}
@@ -27,7 +28,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/fur_IT.txt b/icu4c/source/data/locales/fur_IT.txt
index c35b497..b237a84 100644
--- a/icu4c/source/data/locales/fur_IT.txt
+++ b/icu4c/source/data/locales/fur_IT.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fur_IT{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/fy.txt b/icu4c/source/data/locales/fy.txt
index f573c08..5cbe736 100644
--- a/icu4c/source/data/locales/fy.txt
+++ b/icu4c/source/data/locales/fy.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fy{
     AuxExemplarCharacters{"[æ ò ù]"}
     Ellipsis{
@@ -155,7 +156,6 @@
         }
         minimumGroupingDigits{"1"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/fy_NL.txt b/icu4c/source/data/locales/fy_NL.txt
index a13415b..856974e 100644
--- a/icu4c/source/data/locales/fy_NL.txt
+++ b/icu4c/source/data/locales/fy_NL.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fy_NL{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ga.txt b/icu4c/source/data/locales/ga.txt
index caef40e..15bed10 100644
--- a/icu4c/source/data/locales/ga.txt
+++ b/icu4c/source/data/locales/ga.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ga{
     AuxExemplarCharacters{"[å ḃ ċ ḋ ḟ ġ j k ṁ ṗ q ṡ ṫ v w x y z]"}
     ExemplarCharacters{"[a á b c d e é f g h i í l m n o ó p r s t u ú]"}
@@ -287,10 +288,11 @@
                 }
             }
             symbols{
+                approximatelySign{"≈"}
                 exponential{"E"}
                 group{","}
                 infinity{"∞"}
-                nan{"NaN"}
+                nan{"Nuimh"}
                 perMille{"‰"}
                 percentSign{"%"}
                 superscriptingExponent{"×"}
@@ -303,17 +305,16 @@
                 other{"Glac an {0}ú casadh ar dheis."}
             }
             plural{
-                few{"{0} chi, {0} cath"}
-                many{"{0} chi, {0} chath"}
-                one{"{0} ci, {0} gath"}
-                other{"{0} ci, {0} cath"}
-                two{"{0} gi, {0} gath"}
+                few{"{0} cinn, {0} huaire, {0} chat, {0} éan, {0} bhróg"}
+                many{"{0} gcinn, {0} n-uaire, {0} gcat, {0} n-éan, {0} mbróg"}
+                one{"{0} cheann, {0} uair, {0} chat, {0} éan, {0} bhróg"}
+                other{"{0} ceann, {0} uair, {0} cat, {0} éan, {0} bróg"}
+                two{"{0} cheann, {0} uair, {0} chat, {0} éan, {0} bhróig"}
             }
         }
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -534,6 +535,18 @@
                     h{"h:mm – h:mm B"}
                     m{"h:mm – h:mm B"}
                 }
+                Gy{
+                    G{"y G – y G"}
+                    y{"y – y G"}
+                }
+                GyM{
+                    G{"MM/y GGGGG – MM/y GGGGG"}
+                }
+                GyMMM{
+                    G{"MMM y G – MMM y G"}
+                    M{"MMM – MMM y G"}
+                    y{"MMM y – MMM y G"}
+                }
                 H{
                     H{"HH – HH"}
                 }
@@ -709,11 +722,11 @@
                 yQQQ{"QQQ y"}
                 yQQQQ{"QQQQ y"}
                 yw{
-                    few{"'seachtain' 'a' w 'i' Y"}
-                    many{"'seachtain' 'a' w 'i' Y"}
-                    one{"'seachtain' 'a' w 'i' Y"}
-                    other{"'seachtain' 'a' w 'i' Y"}
-                    two{"'seachtain' 'a' w 'i' Y"}
+                    few{"'seachtain' 'a' w 'in' Y"}
+                    many{"'seachtain' 'a' w 'in' Y"}
+                    one{"'seachtain' 'a' w 'in' Y"}
+                    other{"'seachtain' 'a' w 'in' Y"}
+                    two{"'seachtain' 'a' w 'in' Y"}
                 }
             }
             dayNames{
@@ -1099,9 +1112,9 @@
         food_drink{"Bia agus Deoch"}
         format{"Formáid"}
         format_whitespace{"Formáid agus Spás Bán"}
-        full_width_form_variant{"athraitheach leithid iomláin"}
+        full_width_form_variant{"leagan lánleithid"}
         geometric_shapes{"Cruthanna Geoiméadracha"}
-        half_width_form_variant{"athraitheach leathleithid"}
+        half_width_form_variant{"leagan leathleithid"}
         han_characters{"Carachtair Han"}
         han_radicals{"Fréamhacha Han"}
         hanja{"Hanaí"}
@@ -1139,7 +1152,7 @@
         punctuation{"Poncaíocht"}
         rightwards_arrows{"Saighead Dheas"}
         sign_standard_symbols{"Comharthaí/Siombailí Coitianta"}
-        small_form_variant{"athraithigh bheaga"}
+        small_form_variant{"leaganacha beaga"}
         smiley{"straoiseog"}
         smileys_people{"Straoiseoga nó Daoine"}
         south_asian_scripts{"Scripteanna na hÁise Theas"}
@@ -1151,7 +1164,7 @@
         tone_marks{"Comharthaí Toin"}
         travel{"taisteal"}
         travel_places{"Taisteal nó Áiteanna"}
-        upwards_arrows{"Saighead suas"}
+        upwards_arrows{"saigheada suas"}
         variant_forms{"Foirmeacha Malartacha"}
         vocalic_jamo{"Seamó Guthach"}
         weather{"aimsir"}
@@ -1340,14 +1353,14 @@
             }
             relativeTime{
                 future{
-                    few{"i gceann {0} huaire an chloig"}
+                    few{"i gceann {0} uair an chloig"}
                     many{"i gceann {0} n-uaire an chloig"}
                     one{"i gceann {0} uair an chloig"}
                     other{"i gceann {0} uair an chloig"}
                     two{"i gceann {0} uair an chloig"}
                 }
                 past{
-                    few{"{0} huaire an chloig ó shin"}
+                    few{"{0} uair an chloig ó shin"}
                     many{"{0} n-uaire an chloig ó shin"}
                     one{"{0} uair an chloig ó shin"}
                     other{"{0} uair an chloig ó shin"}
@@ -2195,7 +2208,7 @@
             dn{"Bliain"}
             relative{
                 "-1"{"anuraidh"}
-                "0"{"an bhliain seo"}
+                "0"{"i mbliana"}
                 "1"{"an bhliain seo chugainn"}
             }
             relativeTime{
@@ -2219,7 +2232,7 @@
             dn{"bl."}
             relative{
                 "-1"{"anuraidh"}
-                "0"{"an bhl. seo"}
+                "0"{"i mbl."}
                 "1"{"an bhl. seo chugainn"}
             }
             relativeTime{
@@ -2243,7 +2256,7 @@
             dn{"bl."}
             relative{
                 "-1"{"anuraidh"}
-                "0"{"an bhl. seo"}
+                "0"{"i mbl."}
                 "1"{"an bhl. seo chugainn"}
             }
             relativeTime{
@@ -2280,9 +2293,15 @@
             middle{"{0}, {1}"}
             start{"{0}, {1}"}
         }
+        or-narrow{
+            end{"{0} nó {1}"}
+        }
+        or-short{
+            end{"{0} nó {1}"}
+        }
         standard{
             2{"{0} agus {1}"}
-            end{"{0}, agus {1}"}
+            end{"{0} agus {1}"}
             middle{"{0}, {1}"}
             start{"{0}, {1}"}
         }
@@ -2294,13 +2313,13 @@
         }
         standard-short{
             2{"{0} agus {1}"}
-            end{"{0}, agus {1}"}
+            end{"{0} agus {1}"}
             middle{"{0}, {1}"}
             start{"{0}, {1}"}
         }
         unit{
             2{"{0} agus {1}"}
-            end{"{0}, agus {1}"}
+            end{"{0} agus {1}"}
             middle{"{0}, {1}"}
             start{"{0}, {1}"}
         }
diff --git a/icu4c/source/data/locales/ga_GB.txt b/icu4c/source/data/locales/ga_GB.txt
index a69b26b..5b6dcaa 100644
--- a/icu4c/source/data/locales/ga_GB.txt
+++ b/icu4c/source/data/locales/ga_GB.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ga_GB{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ga_IE.txt b/icu4c/source/data/locales/ga_IE.txt
index 0e5c282..ca70f28 100644
--- a/icu4c/source/data/locales/ga_IE.txt
+++ b/icu4c/source/data/locales/ga_IE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ga_IE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/gd.txt b/icu4c/source/data/locales/gd.txt
index 1d993b4..2567396 100644
--- a/icu4c/source/data/locales/gd.txt
+++ b/icu4c/source/data/locales/gd.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gd{
     AuxExemplarCharacters{
         "[á ă â å ä ã ā æ ċ ç ḋ é ĕ ê ë ē ḟ ġ í ĭ î ï ī ı j k ł ṁ ñ ó ŏ ô ö ø ō œ ṗ q"
@@ -22,8 +23,26 @@
     }
     MoreInformation{"?"}
     NumberElements{
+        adlm{
+            symbols{
+                approximatelySign{"~"}
+                decimal{"."}
+                exponential{"E"}
+                group{","}
+                infinity{"∞"}
+                list{";"}
+                minusSign{"-"}
+                nan{"NaN"}
+                perMille{"‰"}
+                percentSign{"%"}
+                plusSign{"+"}
+                superscriptingExponent{"×"}
+                timeSeparator{":"}
+            }
+        }
         arab{
             symbols{
+                approximatelySign{"~"}
                 decimal{"٫"}
                 exponential{"اس"}
                 group{"٬"}
@@ -40,6 +59,7 @@
         }
         arabext{
             symbols{
+                approximatelySign{"~"}
                 decimal{"٫"}
                 exponential{"×۱۰^"}
                 group{"٬"}
@@ -56,6 +76,7 @@
         }
         bali{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -72,6 +93,7 @@
         }
         beng{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -88,6 +110,7 @@
         }
         brah{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -104,6 +127,7 @@
         }
         cakm{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -120,6 +144,7 @@
         }
         cham{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -137,6 +162,7 @@
         default{"latn"}
         deva{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -316,6 +342,7 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -332,6 +359,7 @@
         }
         gong{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -348,6 +376,7 @@
         }
         gonm{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -364,6 +393,7 @@
         }
         gujr{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -380,6 +410,7 @@
         }
         guru{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -396,6 +427,7 @@
         }
         hanidec{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -412,6 +444,7 @@
         }
         java{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -428,6 +461,7 @@
         }
         kali{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -444,6 +478,7 @@
         }
         khmr{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -460,6 +495,7 @@
         }
         knda{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -476,6 +512,7 @@
         }
         lana{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -492,6 +529,7 @@
         }
         lanatham{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -508,6 +546,7 @@
         }
         laoo{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -779,6 +818,7 @@
         }
         lepc{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -795,6 +835,7 @@
         }
         limb{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -820,6 +861,7 @@
         minimumGroupingDigits{"1"}
         mlym{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -836,6 +878,7 @@
         }
         mong{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -852,6 +895,7 @@
         }
         mtei{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -868,6 +912,7 @@
         }
         mymr{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -884,6 +929,7 @@
         }
         mymrshan{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -901,6 +947,7 @@
         native{"latn"}
         nkoo{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -917,6 +964,7 @@
         }
         olck{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -933,6 +981,7 @@
         }
         orya{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -949,6 +998,7 @@
         }
         osma{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -965,6 +1015,7 @@
         }
         rohg{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -981,6 +1032,7 @@
         }
         saur{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -997,6 +1049,7 @@
         }
         shrd{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -1013,6 +1066,7 @@
         }
         sora{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -1029,6 +1083,7 @@
         }
         sund{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -1045,6 +1100,7 @@
         }
         takr{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -1061,6 +1117,7 @@
         }
         talu{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -1077,6 +1134,7 @@
         }
         tamldec{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -1093,6 +1151,7 @@
         }
         telu{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -1109,6 +1168,7 @@
         }
         thai{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -1125,6 +1185,7 @@
         }
         tibt{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -1141,6 +1202,7 @@
         }
         vaii{
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -1156,7 +1218,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -3077,10 +3138,10 @@
                     two{"an ceann {0} DhihAoine"}
                 }
                 past{
-                    few{"o chionn {0} DihAoine"}
-                    one{"o chionn {0} DihAoine"}
-                    other{"o chionn {0} DihAoine"}
-                    two{"o chionn {0} DhihAoine"}
+                    few{"{0} DihAoine air ais"}
+                    one{"{0} DihAoine air ais"}
+                    other{"{0} DihAoine air ais"}
+                    two{"{0} DhihAoine air ais"}
                 }
             }
         }
@@ -3119,10 +3180,10 @@
                     two{"an ceann {0} Dhih."}
                 }
                 past{
-                    few{"o chionn {0} Dih."}
-                    one{"o chionn {0} Dih."}
-                    other{"o chionn {0} Dih."}
-                    two{"o chionn {0} Dhih."}
+                    few{"{0} Dih. air ais"}
+                    one{"{0} Dih. air ais"}
+                    other{"{0} Dih. air ais"}
+                    two{"{0} Dhih. air ais"}
                 }
             }
         }
@@ -3260,10 +3321,10 @@
                     two{"an ceann {0} DhiLuain"}
                 }
                 past{
-                    few{"o chionn {0} DiLuain"}
-                    one{"o chionn {0} DiLuain"}
-                    other{"o chionn {0} DiLuain"}
-                    two{"o chionn {0} DhiLuain"}
+                    few{"{0} DiLuain air ais"}
+                    one{"{0} DiLuain air ais"}
+                    other{"{0} DiLuain air ais"}
+                    two{"{0} DhiLuain air ais"}
                 }
             }
         }
@@ -3302,10 +3363,10 @@
                     two{"an ceann {0} DhiL."}
                 }
                 past{
-                    few{"o chionn {0} DiL."}
-                    one{"o chionn {0} DiL."}
-                    other{"o chionn {0} DiL."}
-                    two{"o chionn {0} DhiL."}
+                    few{"{0} DiL. air ais"}
+                    one{"{0} DiL. air ais"}
+                    other{"{0} DiL. air ais"}
+                    two{"{0} DhiL. air ais"}
                 }
             }
         }
@@ -3390,10 +3451,10 @@
                     two{"an ceann {0} chairteil"}
                 }
                 past{
-                    few{"o chionn {0} cairtealan"}
-                    one{"o chionn {0} chairteil"}
-                    other{"o chionn {0} cairteil"}
-                    two{"o chionn {0} chairteil"}
+                    few{"{0} cairtealan air ais"}
+                    one{"{0} chairteal air ais"}
+                    other{"{0} cairteal air ais"}
+                    two{"{0} chairteal air ais"}
                 }
             }
         }
@@ -3455,10 +3516,10 @@
                     two{"an ceann {0} DhiSathairne"}
                 }
                 past{
-                    few{"o chionn {0} DiSathairne"}
-                    one{"o chionn {0} DiSathairne"}
-                    other{"o chionn {0} DiSathairne"}
-                    two{"o chionn {0} DhiSathairne"}
+                    few{"{0} DiSathairne air ais"}
+                    one{"{0} DiSathairne air ais"}
+                    other{"{0} DiSathairne air ais"}
+                    two{"{0} DhiSathairne air ais"}
                 }
             }
         }
@@ -3497,10 +3558,10 @@
                     two{"an ceann {0} DhiS."}
                 }
                 past{
-                    few{"o chionn {0} DiS."}
-                    one{"o chionn {0} DiS."}
-                    other{"o chionn {0} DiS."}
-                    two{"o chionn {0} DhiS."}
+                    few{"{0} DiS. air ais"}
+                    one{"{0} DiS. air ais"}
+                    other{"{0} DiS. air ais"}
+                    two{"{0} DhiS. air ais"}
                 }
             }
         }
@@ -3578,10 +3639,10 @@
                     two{"an ceann {0} DhiDòmhnaich"}
                 }
                 past{
-                    few{"o chionn {0} DiDòmhnaich"}
-                    one{"o chionn {0} DiDòmhnaich"}
-                    other{"o chionn {0} DiDòmhnaich"}
-                    two{"o chionn {0} DhiDòmhnaich"}
+                    few{"{0} DiDòmhnaich air ais"}
+                    one{"{0} DiDòmhnaich air ais"}
+                    other{"{0} DiDòmhnaich air ais"}
+                    two{"{0} DhiDòmhnaich air ais"}
                 }
             }
         }
@@ -3620,10 +3681,10 @@
                     two{"an ceann {0} DhiD."}
                 }
                 past{
-                    few{"o chionn {0} DiDòmhnaich"}
-                    one{"o chionn {0} DiD."}
-                    other{"o chionn {0} DiDòmhnaich"}
-                    two{"o chionn {0} DhiD."}
+                    few{"{0} DiD. air ais"}
+                    one{"{0} DiD. air ais"}
+                    other{"{0} DiD. air ais"}
+                    two{"{0} DhiD. air ais"}
                 }
             }
         }
@@ -3641,10 +3702,10 @@
                     two{"an ceann {0} DhiarDaoin"}
                 }
                 past{
-                    few{"o chionn {0} DiarDaoin"}
-                    one{"o chionn {0} DiarDaoin"}
-                    other{"o chionn {0} DiarDaoin"}
-                    two{"o chionn {0} DhiarDaoin"}
+                    few{"{0} DiarDaoin air ais"}
+                    one{"{0} DiarDaoin air ais"}
+                    other{"{0} DiarDaoin air ais"}
+                    two{"{0} DhiarDaoin air ais"}
                 }
             }
         }
@@ -3683,10 +3744,10 @@
                     two{"an ceann {0} Dhia."}
                 }
                 past{
-                    few{"o chionn {0} Dia."}
-                    one{"o chionn {0} Dia."}
-                    other{"o chionn {0} Dia."}
-                    two{"o chionn {0} Dhia."}
+                    few{"{0} Dia. air ais"}
+                    one{"{0} Dia. air ais"}
+                    other{"{0} Dia. air ais"}
+                    two{"{0} Dhia. air ais"}
                 }
             }
         }
@@ -3704,10 +3765,10 @@
                     two{"an ceann {0} DhiMàirt"}
                 }
                 past{
-                    few{"o chionn {0} DiMàirt"}
-                    one{"o chionn {0} DiMàirt"}
-                    other{"o chionn {0} DiMàirt"}
-                    two{"o chionn {0} DhiMàirt"}
+                    few{"{0} DiMàirt air ais"}
+                    one{"{0} DiMàirt air ais"}
+                    other{"{0} DiMàirt air ais"}
+                    two{"{0} DhiMàirt air ais"}
                 }
             }
         }
@@ -3746,10 +3807,10 @@
                     two{"an ceann {0} DhiM."}
                 }
                 past{
-                    few{"o chionn {0} DiM."}
-                    one{"o chionn {0} DiM."}
-                    other{"o chionn {0} DiM."}
-                    two{"o chionn {0} DhiM."}
+                    few{"{0} DiM. air ais"}
+                    one{"{0} DiM. air ais"}
+                    other{"{0} DiM. air ais"}
+                    two{"{0} DhiM. air ais"}
                 }
             }
         }
@@ -3767,10 +3828,10 @@
                     two{"an ceann {0} DhiCiadain"}
                 }
                 past{
-                    few{"o chionn {0} DiCiadain"}
-                    one{"o chionn {0} DiCiadain"}
-                    other{"o chionn {0} DiCiadain"}
-                    two{"o chionn {0} DhiCiadain"}
+                    few{"{0} DiCiadain air ais"}
+                    one{"{0} DiCiadain air ais"}
+                    other{"{0} DiCiadain air ais"}
+                    two{"{0} DhiCiadain air ais"}
                 }
             }
         }
@@ -3809,10 +3870,10 @@
                     two{"an ceann {0} DhiC."}
                 }
                 past{
-                    few{"o chionn {0} DiC."}
-                    one{"o chionn {0} DiC."}
-                    other{"o chionn {0} DiC."}
-                    two{"o chionn {0} DhiC."}
+                    few{"{0} DiC. air ais"}
+                    one{"{0} DiC. air ais"}
+                    other{"{0} DiC. air ais"}
+                    two{"{0} DhiC. air ais"}
                 }
             }
         }
diff --git a/icu4c/source/data/locales/gd_GB.txt b/icu4c/source/data/locales/gd_GB.txt
index 856216f..ad5f2d8 100644
--- a/icu4c/source/data/locales/gd_GB.txt
+++ b/icu4c/source/data/locales/gd_GB.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gd_GB{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/gl.txt b/icu4c/source/data/locales/gl.txt
index 82b6cea..3c0f728 100644
--- a/icu4c/source/data/locales/gl.txt
+++ b/icu4c/source/data/locales/gl.txt
@@ -1,7 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gl{
-    AuxExemplarCharacters{"[ª à â å ä ã ç è ê ë ì î ï º ò ô ö õ ù û]"}
+    AuxExemplarCharacters{"[ª à ă â å ä ã ā æ ɑ ç è ĕ ê ë ē ì ĭ î ī º ò ŏ ô ö õ ø ō œ ù ŭ û ū]"}
     Ellipsis{
         final{"{0}…"}
         initial{"…{0}"}
@@ -10,12 +11,12 @@
         word-initial{"…{0}"}
         word-medial{"{0}… {1}"}
     }
-    ExemplarCharacters{"[a á b c d e é f g h i í j k l m n ñ o ó p q r s t u ú ü v w x y z]"}
+    ExemplarCharacters{"[a á b c d e é f g h i í ï j k l m n ñ o ó p q r s t u ú ü v w x y z]"}
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z]"}
     ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     ExemplarCharactersPunctuation{
-        "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ "
-        "′ ″]"
+        "[\\- ‐ ‑ – — , ; \\: ! ¡ ? ¿ . … ' ‘ ’ \u0022 “ ” « » ( ) \\[ \\] § @ * / "
+        "\\\\ \\& # † ‡ ′ ″]"
     }
     MoreInformation{"?"}
     NumberElements{
@@ -61,16 +62,16 @@
                         other{"000 millóns"}
                     }
                     1000000000{
-                        one{"0"}
-                        other{"0"}
+                        one{"0000 millóns"}
+                        other{"0000 millóns"}
                     }
                     10000000000{
-                        one{"0"}
-                        other{"0"}
+                        one{"00000 millóns"}
+                        other{"00000 millóns"}
                     }
                     100000000000{
-                        one{"0"}
-                        other{"0"}
+                        one{"000000 millóns"}
+                        other{"000000 millóns"}
                     }
                     1000000000000{
                         one{"0 billón"}
@@ -89,16 +90,16 @@
             patternsShort{
                 currencyFormat{
                     1000{
-                        one{"0 ¤"}
-                        other{"0 ¤"}
+                        one{"0"}
+                        other{"0"}
                     }
                     10000{
-                        one{"0 ¤"}
-                        other{"0 ¤"}
+                        one{"0"}
+                        other{"0"}
                     }
                     100000{
-                        one{"0 ¤"}
-                        other{"0 ¤"}
+                        one{"0"}
+                        other{"0"}
                     }
                     1000000{
                         one{"0 M¤"}
@@ -113,16 +114,16 @@
                         other{"000 M¤"}
                     }
                     1000000000{
-                        one{"0 ¤"}
-                        other{"0 ¤"}
+                        one{"0000 M¤"}
+                        other{"0000 M¤"}
                     }
                     10000000000{
-                        one{"0 ¤"}
-                        other{"0 ¤"}
+                        one{"00000 M¤"}
+                        other{"00000 M¤"}
                     }
                     100000000000{
-                        one{"0 ¤"}
-                        other{"0 ¤"}
+                        one{"00000 M¤"}
+                        other{"00000 M¤"}
                     }
                     1000000000000{
                         one{"0 B¤"}
@@ -163,16 +164,16 @@
                         other{"000 M"}
                     }
                     1000000000{
-                        one{"0"}
-                        other{"0"}
+                        one{"0000 M"}
+                        other{"0000 M"}
                     }
                     10000000000{
-                        one{"0"}
-                        other{"0"}
+                        one{"00000 M"}
+                        other{"00000 M"}
                     }
                     100000000000{
-                        one{"0"}
-                        other{"0"}
+                        one{"000000 M"}
+                        other{"000000 M"}
                     }
                     1000000000000{
                         one{"0 B"}
@@ -189,6 +190,7 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{","}
                 exponential{"E"}
                 group{"."}
@@ -215,7 +217,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/gl_ES.txt b/icu4c/source/data/locales/gl_ES.txt
index 1e2f992..d1afa19 100644
--- a/icu4c/source/data/locales/gl_ES.txt
+++ b/icu4c/source/data/locales/gl_ES.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gl_ES{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/gsw.txt b/icu4c/source/data/locales/gsw.txt
index 1cf1665..ae57c17 100644
--- a/icu4c/source/data/locales/gsw.txt
+++ b/icu4c/source/data/locales/gsw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gsw{
     AuxExemplarCharacters{"[á à ă â å ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ø ō œ ú ù ŭ û ū ÿ]"}
     ExemplarCharacters{"[a ä b c d e f g h i j k l m n o ö p q r s t u ü v w x y z]"}
@@ -180,7 +181,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/gsw_CH.txt b/icu4c/source/data/locales/gsw_CH.txt
index 6af0cc6..356235e 100644
--- a/icu4c/source/data/locales/gsw_CH.txt
+++ b/icu4c/source/data/locales/gsw_CH.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gsw_CH{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/gsw_FR.txt b/icu4c/source/data/locales/gsw_FR.txt
index f7e0a78..32fc185 100644
--- a/icu4c/source/data/locales/gsw_FR.txt
+++ b/icu4c/source/data/locales/gsw_FR.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gsw_FR{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/gsw_LI.txt b/icu4c/source/data/locales/gsw_LI.txt
index 6fa128d..eb879eb 100644
--- a/icu4c/source/data/locales/gsw_LI.txt
+++ b/icu4c/source/data/locales/gsw_LI.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gsw_LI{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/gu.txt b/icu4c/source/data/locales/gu.txt
index 8ecd4cc..fca7533 100644
--- a/icu4c/source/data/locales/gu.txt
+++ b/icu4c/source/data/locales/gu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gu{
     AuxExemplarCharacters{"[\u200C\u200D ૰]"}
     Ellipsis{
@@ -252,7 +253,6 @@
         minimumGroupingDigits{"1"}
         native{"gujr"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -2585,12 +2585,6 @@
         metric{"મેટ્રિક"}
     }
     parse{
-        date{
-            lenient{
-                "[\\--/]",
-                "[\\:∶]",
-            }
-        }
         general{
             lenient{
                 "[.․。︒﹒.。]",
@@ -2598,22 +2592,11 @@
                 "[%٪﹪%]",
                 "[؉‰]",
                 "[\$﹩$$]",
-                "[£₤]",
+                "[£₤£]",
                 "[¥¥]",
                 "[₩₩]",
                 "[₨₹{Rp}{Rs}]",
             }
         }
-        number{
-            lenient{
-                "[\\-‒⁻₋−➖﹣-]",
-                "[,،٫、︐︑﹐﹑,、]",
-                "[+⁺₊➕﬩﹢+]",
-            }
-            stricter{
-                "[,٫︐﹐,]",
-                "[.․﹒.。]",
-            }
-        }
     }
 }
diff --git a/icu4c/source/data/locales/gu_IN.txt b/icu4c/source/data/locales/gu_IN.txt
index 7ad1398..4ed2147 100644
--- a/icu4c/source/data/locales/gu_IN.txt
+++ b/icu4c/source/data/locales/gu_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gu_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/guz.txt b/icu4c/source/data/locales/guz.txt
index 902c56b..cf01758 100644
--- a/icu4c/source/data/locales/guz.txt
+++ b/icu4c/source/data/locales/guz.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 guz{
     AuxExemplarCharacters{"[q x]"}
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p r s t u v w y z]"}
@@ -12,7 +13,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/guz_KE.txt b/icu4c/source/data/locales/guz_KE.txt
index 0637fcc..73ed986 100644
--- a/icu4c/source/data/locales/guz_KE.txt
+++ b/icu4c/source/data/locales/guz_KE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 guz_KE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/gv.txt b/icu4c/source/data/locales/gv.txt
index df96dcc..4aafea4 100644
--- a/icu4c/source/data/locales/gv.txt
+++ b/icu4c/source/data/locales/gv.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gv{
     ExemplarCharacters{"[a b c ç d e f g h i j k l m n o p q r s t u v w x y z]"}
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"}
@@ -23,7 +24,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             AmPmMarkers{
diff --git a/icu4c/source/data/locales/gv_IM.txt b/icu4c/source/data/locales/gv_IM.txt
index b02085f..baee652 100644
--- a/icu4c/source/data/locales/gv_IM.txt
+++ b/icu4c/source/data/locales/gv_IM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gv_IM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ha.txt b/icu4c/source/data/locales/ha.txt
index 2ee1208..08b52e3 100644
--- a/icu4c/source/data/locales/ha.txt
+++ b/icu4c/source/data/locales/ha.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ha{
     AuxExemplarCharacters{"[á à â é è ê í ì î ó ò ô p q {r\u0303} ú ù û v x]"}
     ExemplarCharacters{"[a b ɓ c d ɗ e f g h i j k ƙ l m n o r s {sh} t {ts} u w y ƴ z ʼ]"}
@@ -7,6 +8,9 @@
     ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\} ′ ″]"}
     NumberElements{
         latn{
+            miscPatterns{
+                atLeast{"{0}+"}
+            }
             patternsLong{
                 decimalFormat{
                     1000{
@@ -162,8 +166,13 @@
                 }
             }
         }
+        minimalPairs{
+            plural{
+                one{"rana {0}"}
+                other{"ranaku {0}"}
+            }
+        }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -175,11 +184,11 @@
                 "d MMMM, y G",
                 "d MMM, y G",
                 "d/M/yy GGGGG",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
+                "{0}, {1}",
+                "{0} 'da' {1}",
+                "{0} 'da' {1}",
+                "{0}, {1}",
+                "{0}, {1}",
             }
             availableFormats{
                 MEd{"E, M/d"}
@@ -202,8 +211,8 @@
                 "Yamma",
             }
             AmPmMarkersAbbr{
-                "AM",
-                "PM",
+                "SF",
+                "YM",
             }
             DateTimePatterns{
                 "HH:mm:ss zzzz",
@@ -214,11 +223,11 @@
                 "d MMMM, y",
                 "d MMM, y",
                 "d/M/yy",
+                "{1}, {0}",
                 "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
+                "{1} 'da' {0}",
+                "{1}, {0}",
+                "{1}, {0}",
             }
             availableFormats{
                 Ed{"E, d"}
@@ -229,6 +238,10 @@
                 MMM{"LLL"}
                 MMMEd{"E, MMM d"}
                 MMMMEd{"E, MMMM d"}
+                MMMMW{
+                    one{"'satin' W 'cikin' MMMM"}
+                    other{"'satin' W 'cikin' MMMM"}
+                }
                 MMMMd{"MMMM d"}
                 MMMd{"MMM d"}
                 Md{"M/d"}
@@ -246,6 +259,10 @@
                 yMd{"y-MM-dd"}
                 yQQQ{"QQQ y"}
                 yQQQQ{"QQQQ y"}
+                yw{
+                    one{"'sati' w 'cikin' Y"}
+                    other{"'sati' w 'cikin' Y"}
+                }
             }
             dayNames{
                 format{
@@ -328,16 +345,16 @@
             dayPeriod{
                 stand-alone{
                     abbreviated{
-                        am{"AM"}
-                        pm{"PM"}
+                        am{"SF"}
+                        pm{"YM"}
                     }
                     narrow{
-                        am{"AM"}
-                        pm{"PM"}
+                        am{"SF"}
+                        pm{"YM"}
                     }
                     wide{
-                        am{"AM"}
-                        pm{"PM"}
+                        am{"SF"}
+                        pm{"YM"}
                     }
                 }
             }
@@ -356,7 +373,7 @@
                 }
                 wide%variant{
                     "K.H.Y",
-                    "sananne Zamani",
+                    "Sanannen Zamani",
                 }
             }
             intervalFormats{
@@ -537,12 +554,48 @@
     }
     fields{
         day{
-            dn{"Kwana"}
+            dn{"kwana"}
             relative{
                 "-1"{"jiya"}
                 "0"{"yau"}
                 "1"{"gobe"}
             }
+            relativeTime{
+                future{
+                    one{"a cikin rana {0}"}
+                    other{"a cikin kwanaki {0}"}
+                }
+                past{
+                    one{"rana da ya gabata {0}"}
+                    other{"kwanaki da suka gabata {0}"}
+                }
+            }
+        }
+        day-narrow{
+            dn{"kwana"}
+            relativeTime{
+                future{
+                    one{"a cikin rana {0}"}
+                    other{"a cikin kwanaki {0}"}
+                }
+                past{
+                    one{"rana da ya gabata {0}"}
+                    other{"kwanaki da suka gabata {0}"}
+                }
+            }
+        }
+        day-short{
+            dn{"kwana"}
+            relativeTime{
+                future{
+                    one{"a cikin rana {0}"}
+                    other{"a cikin kwanaki {0}"}
+                }
+                past{
+                    one{"rana da ya gabata {0}"}
+                    other{"kwanaki da suka gabata {0}"}
+                }
+            }
         }
         dayOfYear{
             dn{"Kwanan Shekara"}
@@ -554,10 +607,10 @@
             dn{"Kwanan Shekara"}
         }
         dayperiod{
-            dn{"Lokuttan rana"}
+            dn{"SF/YM"}
         }
         era{
-            dn{"Zamani"}
+            dn{"zamani"}
         }
         fri{
             relative{
@@ -611,7 +664,7 @@
             }
         }
         hour{
-            dn{"Awa"}
+            dn{"awa"}
             relative{
                 "0"{"wannan awa"}
             }
@@ -627,6 +680,7 @@
             }
         }
         hour-narrow{
+            dn{"awa"}
             relativeTime{
                 future{
                     one{"cikin {0} awa"}
@@ -639,6 +693,7 @@
             }
         }
         hour-short{
+            dn{"awa"}
             relativeTime{
                 future{
                     one{"cikin {0} awa"}
@@ -651,7 +706,7 @@
             }
         }
         minute{
-            dn{"Minti"}
+            dn{"minti"}
             relative{
                 "0"{"wannan mintin"}
             }
@@ -667,6 +722,7 @@
             }
         }
         minute-narrow{
+            dn{"minti"}
             relativeTime{
                 future{
                     one{"cikin {0} minti"}
@@ -679,6 +735,7 @@
             }
         }
         minute-short{
+            dn{"minti"}
             relativeTime{
                 future{
                     one{"cikin {0} minti"}
@@ -742,34 +799,102 @@
             }
         }
         month{
-            dn{"Wata"}
+            dn{"wata"}
             relative{
-                "-1"{"watan daya gabata"}
+                "-1"{"watan da ya gabata"}
                 "0"{"wannan watan"}
                 "1"{"wata na gaba"}
             }
+            relativeTime{
+                future{
+                    one{"a cikin watan {0}"}
+                    other{"a cikin watanni {0}"}
+                }
+                past{
+                    one{"watan da ya gabata"}
+                    other{"watanni da suka gabata {0}}"}
+                }
+            }
         }
         month-narrow{
+            dn{"wata"}
             relative{
                 "-1"{"watan da ya gabata"}
                 "0"{"wannan watan"}
                 "1"{"wata na gaba"}
             }
+            relativeTime{
+                future{
+                    one{"a cikin watan {0}"}
+                    other{"a cikin watan {0}"}
+                }
+                past{
+                    one{"watan da ya gabata {0}"}
+                    other{"watan da ya gabata {0}"}
+                }
+            }
         }
         month-short{
+            dn{"wata"}
             relative{
                 "-1"{"watan da ya gabata"}
                 "0"{"wannan watan"}
                 "1"{"wata na gaba"}
             }
+            relativeTime{
+                future{
+                    one{"a cikin watan {0}"}
+                    other{"a cikin watan {0}"}
+                }
+                past{
+                    one{"watan da ya gabata"}
+                    other{"watan da ya gabata {0}"}
+                }
+            }
         }
         quarter{
-            dn{"Kwata"}
+            dn{"kwata"}
             relative{
                 "-1"{"kwatan karshe"}
                 "0"{"wannan kwatan"}
                 "1"{"kwata na gaba"}
             }
+            relativeTime{
+                future{
+                    one{"a cikin kwata {0}"}
+                    other{"a cikin kwatas {0}"}
+                }
+                past{
+                    one{"kwata da suka gabata {0}"}
+                    other{"kwatas da suka gabata {0}"}
+                }
+            }
+        }
+        quarter-narrow{
+            dn{"kwata"}
+            relativeTime{
+                future{
+                    one{"a cikin kwata {0}"}
+                    other{"a cikin kwatas {0}"}
+                }
+                past{
+                    one{"kwata da suka gabata {0}"}
+                    other{"kwatas da suka gabata {0}"}
+                }
+            }
+        }
+        quarter-short{
+            dn{"kwata"}
+            relativeTime{
+                future{
+                    one{"a cikin kwata {0}"}
+                    other{"a cikin kwatas {0}"}
+                }
+                past{
+                    one{"kwata da suka gabata {0}"}
+                    other{"kwatas da suka gabata {0}"}
+                }
+            }
         }
         sat{
             relative{
@@ -823,7 +948,7 @@
             }
         }
         second{
-            dn{"Daƙiƙa"}
+            dn{"daƙiƙa"}
             relative{
                 "0"{"yanzu"}
             }
@@ -1067,27 +1192,61 @@
             }
         }
         week{
-            dn{"Mako"}
-            relative{
-                "-1"{"satin da ya gabata"}
-                "0"{"wannan satin"}
-                "1"{"sati na gaba"}
-            }
-        }
-        week-narrow{
+            dn{"mako"}
             relative{
                 "-1"{"satin da ya gabata"}
                 "0"{"wannan satin"}
                 "1"{"sati na gaba"}
             }
             relativePeriod{"sati na {0}"}
+            relativeTime{
+                future{
+                    one{"a cikin mako {0}"}
+                    other{"a cikin makonni {0}"}
+                }
+                past{
+                    one{"mako da ya gabata {0}"}
+                    other{"makonni da suka gabata {0}"}
+                }
+            }
         }
-        week-short{
+        week-narrow{
+            dn{"mako"}
             relative{
                 "-1"{"satin da ya gabata"}
                 "0"{"wannan satin"}
                 "1"{"sati na gaba"}
             }
+            relativePeriod{"sati na {0}"}
+            relativeTime{
+                future{
+                    one{"a cikin mako {0}"}
+                    other{"a cikin mako {0}"}
+                }
+                past{
+                    one{"mako da suka gabata {0}"}
+                    other{"mako da ya gabata {0}"}
+                }
+            }
+        }
+        week-short{
+            dn{"mako"}
+            relative{
+                "-1"{"satin da ya gabata"}
+                "0"{"wannan satin"}
+                "1"{"sati na gaba"}
+            }
+            relativePeriod{"sati na {0}"}
+            relativeTime{
+                future{
+                    one{"a cikin mako {0}"}
+                    other{"a cikin mako {0}"}
+                }
+                past{
+                    one{"mako da ya gabata {0}"}
+                    other{"mako da ya gabata {0}"}
+                }
+            }
         }
         weekOfMonth{
             dn{"Makon Wata"}
@@ -1099,7 +1258,7 @@
             dn{"Makon Wata"}
         }
         weekday{
-            dn{"Rana mako"}
+            dn{"ranar mako"}
         }
         weekdayOfMonth{
             dn{"Ranar Aikin Wata"}
@@ -1111,26 +1270,50 @@
             dn{"Ranar Aikin Wata"}
         }
         year{
-            dn{"Shekara"}
+            dn{"shekara"}
             relative{
                 "-1"{"bara"}
                 "0"{"bana"}
                 "1"{"badi"}
             }
+            relativeTime{
+                future{
+                    one{"a shekarar {0}"}
+                    other{"a shekaru {0}"}
+                }
+                past{
+                    one{"shekara da suka gabata {0}"}
+                    other{"shekara da suka gabata {0}"}
+                }
+            }
         }
         year-narrow{
+            dn{"shekara"}
             relative{
                 "-1"{"bara"}
                 "0"{"bana"}
                 "1"{"badi"}
             }
+            relativeTime{
+                past{
+                    one{"shekara da suka gabata {0}"}
+                    other{"shekara da suka gabata {0}"}
+                }
+            }
         }
         year-short{
+            dn{"shekara"}
             relative{
                 "-1"{"bara"}
                 "0"{"bana"}
                 "1"{"badi"}
             }
+            relativeTime{
+                past{
+                    one{"shekara da suka gabata {0}"}
+                    other{"shekara da suka gabata {0}"}
+                }
+            }
         }
         zone{
             dn{"Lokacin yanki"}
@@ -1151,7 +1334,7 @@
         }
         standard{
             2{"{0} da {1}"}
-            end{"{0} da {1}"}
+            end{"{0}, da {1}"}
         }
         unit{
             2{"{0}, {1}"}
diff --git a/icu4c/source/data/locales/ha_GH.txt b/icu4c/source/data/locales/ha_GH.txt
index 8aab6ad..5d53923 100644
--- a/icu4c/source/data/locales/ha_GH.txt
+++ b/icu4c/source/data/locales/ha_GH.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ha_GH{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
@@ -13,11 +13,11 @@
                 "d MMMM, y",
                 "d MMM, y",
                 "d/M/yy",
+                "{1}, {0}",
                 "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
+                "{1} 'da' {0}",
+                "{1}, {0}",
+                "{1}, {0}",
             }
         }
     }
diff --git a/icu4c/source/data/locales/ha_NE.txt b/icu4c/source/data/locales/ha_NE.txt
index ab3ebc2..3010a5c 100644
--- a/icu4c/source/data/locales/ha_NE.txt
+++ b/icu4c/source/data/locales/ha_NE.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ha_NE{
     AuxExemplarCharacters{"[á à â é è ê í ì î ó ò ô p q {r\u0303} ú ù û v x {ʼy}]"}
     ExemplarCharactersIndex{"[A B Ɓ C D Ɗ E F G H I J K Ƙ L M N O P Q R S T U V W X Y Ƴ Z]"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ha_NG.txt b/icu4c/source/data/locales/ha_NG.txt
index 5a15dee..13b863e 100644
--- a/icu4c/source/data/locales/ha_NG.txt
+++ b/icu4c/source/data/locales/ha_NG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ha_NG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/haw.txt b/icu4c/source/data/locales/haw.txt
index bfac6e1..25fcc39 100644
--- a/icu4c/source/data/locales/haw.txt
+++ b/icu4c/source/data/locales/haw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 haw{
     AuxExemplarCharacters{"[b c d f g j q r s t v x y z]"}
     ExemplarCharacters{"[a ā e ē i ī o ō u ū h k l m n p w ʻ]"}
@@ -32,7 +33,6 @@
         }
         minimumGroupingDigits{"1"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/haw_US.txt b/icu4c/source/data/locales/haw_US.txt
index d6450d8..f1cc6a4 100644
--- a/icu4c/source/data/locales/haw_US.txt
+++ b/icu4c/source/data/locales/haw_US.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 haw_US{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/he.txt b/icu4c/source/data/locales/he.txt
index e726fa0..0752712 100644
--- a/icu4c/source/data/locales/he.txt
+++ b/icu4c/source/data/locales/he.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 he{
     AuxExemplarCharacters{
         "[\u05BD\u05C4\u200E\u200F \u05B0 \u05B1 \u05B2 \u05B3 \u05B4 \u05B5 \u05B6 "
@@ -124,150 +125,150 @@
             patternsShort{
                 currencyFormat{
                     1000{
-                        many{"¤0K"}
-                        one{"¤ 0K"}
-                        other{"¤ 0K"}
-                        two{"¤ 0K"}
+                        many{"¤0K‏"}
+                        one{"¤0K‏"}
+                        other{"¤0K‏"}
+                        two{"¤0K‏"}
                     }
                     10000{
-                        many{"¤00K"}
-                        one{"¤00K"}
-                        other{"¤ 00K"}
-                        two{"¤00K"}
+                        many{"¤00K‏"}
+                        one{"¤00K‏"}
+                        other{"¤00K‏"}
+                        two{"¤00K‏"}
                     }
                     100000{
-                        many{"¤000K"}
-                        one{"¤000K"}
-                        other{"¤000K"}
-                        two{"¤000K"}
+                        many{"¤000K‏"}
+                        one{"¤000K‏"}
+                        other{"¤000K‏"}
+                        two{"¤000K‏"}
                     }
                     1000000{
-                        many{"¤0M"}
-                        one{"¤0M"}
-                        other{"¤0M"}
-                        two{"¤0M"}
+                        many{"¤0M‏"}
+                        one{"¤0M‏"}
+                        other{"¤0M‏"}
+                        two{"¤0M‏"}
                     }
                     10000000{
-                        many{"¤00M"}
-                        one{"¤00M"}
-                        other{"¤00M"}
-                        two{"¤00M"}
+                        many{"¤00M‏"}
+                        one{"¤00M‏"}
+                        other{"¤00M‏"}
+                        two{"¤00M‏"}
                     }
                     100000000{
-                        many{"¤000M"}
-                        one{"¤000M"}
-                        other{"¤000M"}
-                        two{"¤000M"}
+                        many{"¤000M‏"}
+                        one{"¤000M‏"}
+                        other{"¤000M‏"}
+                        two{"¤000M‏"}
                     }
                     1000000000{
-                        many{"¤0B"}
-                        one{"¤0B"}
-                        other{"¤0B"}
-                        two{"¤0B"}
+                        many{"¤0B‏"}
+                        one{"¤0B‏"}
+                        other{"¤0B‏"}
+                        two{"¤0B‏"}
                     }
                     10000000000{
-                        many{"¤00B"}
-                        one{"¤00B"}
-                        other{"¤00B"}
-                        two{"¤00B"}
+                        many{"¤00B‏"}
+                        one{"¤00B‏"}
+                        other{"¤00B‏"}
+                        two{"¤00B‏"}
                     }
                     100000000000{
-                        many{"¤000B"}
-                        one{"¤000B"}
-                        other{"¤000B"}
-                        two{"¤000B"}
+                        many{"¤000B‏"}
+                        one{"¤000B‏"}
+                        other{"¤000B‏"}
+                        two{"¤000B‏"}
                     }
                     1000000000000{
-                        many{"¤0T"}
-                        one{"¤0T"}
-                        other{"¤0T"}
-                        two{"¤0T"}
+                        many{"¤0T‏"}
+                        one{"¤0T‏"}
+                        other{"¤0T‏"}
+                        two{"¤0T‏"}
                     }
                     10000000000000{
-                        many{"¤00T"}
-                        one{"¤00T"}
-                        other{"¤00T"}
-                        two{"¤00T"}
+                        many{"¤00T‏"}
+                        one{"¤00T‏"}
+                        other{"¤00T‏"}
+                        two{"¤00T‏"}
                     }
                     100000000000000{
-                        many{"¤000T"}
-                        one{"¤000T"}
-                        other{"¤000T"}
-                        two{"¤000T"}
+                        many{"¤000T‏"}
+                        one{"¤000T‏"}
+                        other{"¤000T‏"}
+                        two{"¤000T‏"}
                     }
                 }
                 decimalFormat{
                     1000{
-                        many{"0K"}
-                        one{"0K"}
-                        other{"0K"}
-                        two{"0K"}
+                        many{"0K‏"}
+                        one{"0K‏"}
+                        other{"0K‏"}
+                        two{"0K‏"}
                     }
                     10000{
-                        many{"00K"}
-                        one{"00K"}
-                        other{"00K"}
-                        two{"00K"}
+                        many{"00K‏"}
+                        one{"00K‏"}
+                        other{"00K‏"}
+                        two{"00K‏"}
                     }
                     100000{
-                        many{"000K"}
-                        one{"000K"}
-                        other{"000K"}
-                        two{"000K"}
+                        many{"000K‏"}
+                        one{"000K‏"}
+                        other{"000K‏"}
+                        two{"000K‏"}
                     }
                     1000000{
-                        many{"0M"}
-                        one{"0M"}
-                        other{"0M"}
-                        two{"0M"}
+                        many{"0M‏"}
+                        one{"0M‏"}
+                        other{"0M‏"}
+                        two{"0M‏"}
                     }
                     10000000{
-                        many{"00M"}
-                        one{"00M"}
-                        other{"00M"}
-                        two{"00M"}
+                        many{"00M‏"}
+                        one{"00M‏"}
+                        other{"00M‏"}
+                        two{"00M‏"}
                     }
                     100000000{
-                        many{"000M"}
-                        one{"000M"}
-                        other{"000M"}
-                        two{"000M"}
+                        many{"000M‏"}
+                        one{"000M‏"}
+                        other{"000M‏"}
+                        two{"000M‏"}
                     }
                     1000000000{
-                        many{"0B"}
-                        one{"0B"}
-                        other{"0B"}
-                        two{"0B"}
+                        many{"0B‏"}
+                        one{"0B‏"}
+                        other{"0B‏"}
+                        two{"0B‏"}
                     }
                     10000000000{
-                        many{"00B"}
-                        one{"00B"}
-                        other{"00B"}
-                        two{"00B"}
+                        many{"00B‏"}
+                        one{"00B‏"}
+                        other{"00B‏"}
+                        two{"00B‏"}
                     }
                     100000000000{
-                        many{"000B"}
-                        one{"000B"}
-                        other{"000B"}
-                        two{"000B"}
+                        many{"000B‏"}
+                        one{"000B‏"}
+                        other{"000B‏"}
+                        two{"000B‏"}
                     }
                     1000000000000{
-                        many{"0T"}
-                        one{"0T"}
-                        other{"0T"}
-                        two{"0T"}
+                        many{"0T‏"}
+                        one{"0T‏"}
+                        other{"0T‏"}
+                        two{"0T‏"}
                     }
                     10000000000000{
-                        many{"00T"}
-                        one{"00T"}
-                        other{"00T"}
-                        two{"00T"}
+                        many{"00T‏"}
+                        one{"00T‏"}
+                        other{"00T‏"}
+                        two{"00T‏"}
                     }
                     100000000000000{
-                        many{"000T"}
-                        one{"000T"}
-                        other{"000T"}
-                        two{"000T"}
+                        many{"000T‏"}
+                        one{"000T‏"}
+                        other{"000T‏"}
+                        two{"000T‏"}
                     }
                 }
             }
@@ -301,7 +302,6 @@
         native{"latn"}
         traditional{"hebr"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -2971,7 +2971,7 @@
                 "0"{"השבוע"}
                 "1"{"השבוע הבא"}
             }
-            relativePeriod{"השבוע של"}
+            relativePeriod{"השבוע של {0}"}
             relativeTime{
                 future{
                     many{"בעוד {0} שבועות"}
diff --git a/icu4c/source/data/locales/he_IL.txt b/icu4c/source/data/locales/he_IL.txt
index b6d20c2..4c68fda 100644
--- a/icu4c/source/data/locales/he_IL.txt
+++ b/icu4c/source/data/locales/he_IL.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 he_IL{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/hi.txt b/icu4c/source/data/locales/hi.txt
index cecbb72..c406ed8 100644
--- a/icu4c/source/data/locales/hi.txt
+++ b/icu4c/source/data/locales/hi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hi{
     AuxExemplarCharacters{"[\u200C\u200D]"}
     Ellipsis{
@@ -224,9 +225,9 @@
         }
         minimalPairs{
             ordinal{
-                few{"तीसरा दाहिना मोड़ लें."}
+                few{"{0} दाहिना मोड़ लें."}
                 many{"{0}ठा दाहिना मोड़ लें."}
-                one{"पहला दाहिना मोड़ लें."}
+                one{"{0}ला दाहिना मोड़ लें."}
                 other{"{0}वां दाहिना मोड़ लें."}
                 two{"{0}रा दाहिना मोड़ लें."}
             }
@@ -238,8 +239,74 @@
         minimumGroupingDigits{"1"}
         native{"deva"}
     }
-    Version{"37"}
     calendar{
+        buddhist{
+            availableFormats{
+                Gy{"y G"}
+                GyMMM{"MMM y G"}
+                GyMMMEd{"E, d MMM y G"}
+                GyMMMd{"d MMM y G"}
+                MMMMd{"d MMMM"}
+                y{"y G"}
+                yyyy{"y G"}
+                yyyyM{"M/y GGGGG"}
+                yyyyMEd{"E, d/M/y GGGGG"}
+                yyyyMMMEd{"E, d MMM y G"}
+                yyyyMMMM{"MMMM y G"}
+                yyyyMd{"d/M`/y GGGGG"}
+            }
+            eras{
+                abbreviated{
+                    "बौद्ध संवत",
+                }
+                narrow{
+                    "बौद्ध संवत",
+                }
+                wide{
+                    "बौद्ध संवत",
+                }
+            }
+            intervalFormats{
+                Gy{
+                    G{"G y – G y"}
+                    y{"y – y G"}
+                }
+                GyM{
+                    G{"M/y GGGGG – M/y GGGGG"}
+                    M{"M/y – M/y GGGGG"}
+                    y{"M/y – M/y GGGGG"}
+                }
+                GyMEd{
+                    G{"E, d/M/y GGGGG – E, d/M/y GGGGG"}
+                    M{"E, d/M/y – E, d/M/y GGGGG"}
+                    d{"E, d/M/y – E, d/M/y GGGGG"}
+                    y{"E, d/M/y – E, d/M/y GGGGG"}
+                }
+                GyMMM{
+                    G{"MMM y G – MMM y G"}
+                    M{"MMM – MMM y G"}
+                    y{"MMM y – MMM y G"}
+                }
+                GyMMMEd{
+                    G{"E, d MMM y G – E, d MMM y G"}
+                    M{"E, d MMM – E, d MMM y G"}
+                    d{"E, d MMM – E, d MMM y G"}
+                    y{"E, d MMM y – E, d MMM y G"}
+                }
+                GyMMMd{
+                    G{"d MMM y G – d MMM y G"}
+                    M{"d MMM – d MMM y G"}
+                    d{"d – d MMM y G"}
+                    y{"d MMM y – d MMM y G"}
+                }
+                GyMd{
+                    G{"d/M/y GGGGG – d/M/y GGGGG"}
+                    M{"d/M/y – d/M/y GGGGG"}
+                    d{"d/M/y – d/M/y GGGGG"}
+                    y{"d/M/y – d/M/y GGGGG"}
+                }
+            }
+        }
         ethiopic{
             monthNames{
                 format{
@@ -904,11 +971,50 @@
             }
         }
         indian{
+            DateTimePatterns{
+                "h:mm:ss a zzzz",
+                "h:mm:ss a z",
+                "h:mm:ss a",
+                "h:mm a",
+                "EEEE, d MMMM y G",
+                "d MMMM y G",
+                "d MMM y G",
+                "d/M/y GGGGG",
+                "{1}, {0}",
+                "{1} को {0}",
+                "{1} को {0}",
+                "{1}, {0}",
+                "{1}, {0}",
+            }
+            availableFormats{
+                Gy{"y G"}
+                GyMMM{"MMM y G"}
+                GyMMMEd{"E, d MMM y G"}
+                GyMMMd{"d MMM y G"}
+                MMMMd{"d MMMM"}
+                y{"y G"}
+                yyyy{"y G"}
+                yyyyM{"M/y GGGGG"}
+                yyyyMEd{"E, d/M/y GGGGG"}
+                yyyyMMM{"MMM y G"}
+                yyyyMMMd{"d MMM y G"}
+                yyyyMd{"d/M/y GGGGG"}
+            }
             eras{
                 abbreviated{
                     "शक",
                 }
             }
+            intervalFormats{
+                GyM{
+                    G{"GGGGG M/y – GGGGG M/y"}
+                    M{"GGGGG M/y – M/"}
+                    y{"GGGGG M/y – M/y"}
+                }
+                GyMd{
+                    d{"GGGGG d/M/y – d/M/y"}
+                }
+            }
             monthNames{
                 format{
                     abbreviated{
diff --git a/icu4c/source/data/locales/hi_IN.txt b/icu4c/source/data/locales/hi_IN.txt
index baedd09..1844d37 100644
--- a/icu4c/source/data/locales/hi_IN.txt
+++ b/icu4c/source/data/locales/hi_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hi_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/hr.txt b/icu4c/source/data/locales/hr.txt
index d9b31e9..d45dd5a 100644
--- a/icu4c/source/data/locales/hr.txt
+++ b/icu4c/source/data/locales/hr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hr{
     AuxExemplarCharacters{"[q w x y]"}
     Ellipsis{
@@ -101,9 +102,9 @@
             patternsShort{
                 currencyFormat{
                     1000{
-                        few{"0000¤"}
-                        one{"0000¤"}
-                        other{"0000¤"}
+                        few{"0"}
+                        one{"0"}
+                        other{"0"}
                     }
                     10000{
                         few{"00 tis'.' ¤"}
@@ -225,12 +226,13 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{","}
                 exponential{"E"}
                 group{"."}
                 infinity{"∞"}
                 list{";"}
-                minusSign{"-"}
+                minusSign{"−"}
                 nan{"NaN"}
                 perMille{"‰"}
                 percentSign{"%"}
@@ -252,7 +254,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
diff --git a/icu4c/source/data/locales/hr_BA.txt b/icu4c/source/data/locales/hr_BA.txt
index c08a1c1..3ef953c 100644
--- a/icu4c/source/data/locales/hr_BA.txt
+++ b/icu4c/source/data/locales/hr_BA.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hr_BA{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/hr_HR.txt b/icu4c/source/data/locales/hr_HR.txt
index bb568b9..b0f41a6 100644
--- a/icu4c/source/data/locales/hr_HR.txt
+++ b/icu4c/source/data/locales/hr_HR.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hr_HR{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/hsb.txt b/icu4c/source/data/locales/hsb.txt
index f78d7eb..43b57dc 100644
--- a/icu4c/source/data/locales/hsb.txt
+++ b/icu4c/source/data/locales/hsb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hsb{
     AuxExemplarCharacters{
         "[á à ă â å ä ã ą ā æ ç ď đ é è ĕ ê ë ė ę ē ğ í ì ĭ î ï İ ī ı ĺ ľ ň ñ ò ŏ ô ö"
@@ -196,7 +197,6 @@
         }
         minimumGroupingDigits{"1"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -351,6 +351,7 @@
                 MEd{"E, d.M."}
                 MMM{"LLL"}
                 MMMEd{"E, d. MMM"}
+                MMMMd{"d MMMM"}
                 MMMd{"d. MMM"}
                 Md{"d.M."}
                 d{"d"}
@@ -363,6 +364,7 @@
                 yMEd{"E, d.M.y"}
                 yMMM{"MMM y"}
                 yMMMEd{"E, d. MMM y"}
+                yMMMM{"LLLL y"}
                 yMMMd{"d. MMM y"}
                 yMd{"d.M.y"}
                 yQQQ{"QQQ y"}
diff --git a/icu4c/source/data/locales/hsb_DE.txt b/icu4c/source/data/locales/hsb_DE.txt
index 3aaa1fc..7c34734 100644
--- a/icu4c/source/data/locales/hsb_DE.txt
+++ b/icu4c/source/data/locales/hsb_DE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hsb_DE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/hu.txt b/icu4c/source/data/locales/hu.txt
index abffbe9..0918a1f 100644
--- a/icu4c/source/data/locales/hu.txt
+++ b/icu4c/source/data/locales/hu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hu{
     AuxExemplarCharacters{"[à ă â å ä ã ā æ ç è ĕ ê ë ē ì ĭ î ï ī ñ ò ŏ ô ø ō œ q ù ŭ û ū w x y ÿ]"}
     Ellipsis{
@@ -223,7 +224,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
diff --git a/icu4c/source/data/locales/hu_HU.txt b/icu4c/source/data/locales/hu_HU.txt
index 938db8c..40156de 100644
--- a/icu4c/source/data/locales/hu_HU.txt
+++ b/icu4c/source/data/locales/hu_HU.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hu_HU{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/hy.txt b/icu4c/source/data/locales/hy.txt
index 34c4adc..d138274 100644
--- a/icu4c/source/data/locales/hy.txt
+++ b/icu4c/source/data/locales/hy.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hy{
     AuxExemplarCharacters{"[և]"}
     Ellipsis{
@@ -220,7 +221,6 @@
         native{"latn"}
         traditional{"armn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/hy_AM.txt b/icu4c/source/data/locales/hy_AM.txt
index cdb89f9..4c13490 100644
--- a/icu4c/source/data/locales/hy_AM.txt
+++ b/icu4c/source/data/locales/hy_AM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hy_AM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ia.txt b/icu4c/source/data/locales/ia.txt
index 788cfa9..6fd26cf 100644
--- a/icu4c/source/data/locales/ia.txt
+++ b/icu4c/source/data/locales/ia.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ia{
     Ellipsis{
         final{"{0}…"}
@@ -193,7 +194,6 @@
         }
         minimumGroupingDigits{"2"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ia_001.txt b/icu4c/source/data/locales/ia_001.txt
index 94a07be..5417446 100644
--- a/icu4c/source/data/locales/ia_001.txt
+++ b/icu4c/source/data/locales/ia_001.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ia_001{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/id.txt b/icu4c/source/data/locales/id.txt
index 1530afe..40e1c47 100644
--- a/icu4c/source/data/locales/id.txt
+++ b/icu4c/source/data/locales/id.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 id{
     AuxExemplarCharacters{"[å]"}
     Ellipsis{
@@ -13,7 +14,10 @@
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"}
     ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
-    ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ “ ” ( ) \\[ \\] /]"}
+    ExemplarCharactersPunctuation{
+        "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ "
+        "′ ″]"
+    }
     MoreInformation{"?"}
     NumberElements{
         default{"latn"}
@@ -150,6 +154,7 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{","}
                 exponential{"E"}
                 group{"."}
@@ -175,7 +180,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -1712,9 +1716,9 @@
         }
     }
     characterLabel{
-        activities{"Aktivitas"}
-        african_scripts{"Skrip Afrika"}
-        american_scripts{"Skrip Amerika"}
+        activities{"aktivitas"}
+        african_scripts{"skrip Afrika"}
+        american_scripts{"skrip Amerika"}
         animal{"hewan"}
         animals_nature{"satwa atau alam"}
         arrows{"panah"}
@@ -1731,9 +1735,9 @@
         divination_symbols{"simbol ramalan"}
         downwards_arrows{"panah bawah"}
         downwards_upwards_arrows{"panah atas bawah"}
-        east_asian_scripts{"Skrip Asia Timur"}
+        east_asian_scripts{"skrip Asia Timur"}
         emoji{"emoji"}
-        european_scripts{"Skrip Eropa"}
+        european_scripts{"skrip Eropa"}
         female{"perempuan"}
         flag{"bendera"}
         flags{"bendera"}
@@ -1743,15 +1747,15 @@
         full_width_form_variant{"varian lebar penuh"}
         geometric_shapes{"bentuk geometris"}
         half_width_form_variant{"varian setengah lebar"}
-        han_characters{"Aksara Han"}
-        han_radicals{"Han Radikal"}
+        han_characters{"aksara Han"}
+        han_radicals{"Han radikal"}
         hanja{"Hanja"}
-        hanzi_simplified{"Hanzi (Aksara Sederhana)"}
-        hanzi_traditional{"Hanzi (Aksara Tradisional)"}
+        hanzi_simplified{"Hanzi (sederhana)"}
+        hanzi_traditional{"Hanzi (tradisional)"}
         heart{"hati"}
         historic_scripts{"skrip historis"}
         ideographic_desc_characters{"karakter desk. ideografis"}
-        japanese_kana{"Huruf Kana Jepang"}
+        japanese_kana{"huruf Kana Jepang"}
         kanbun{"kanbun"}
         kanji{"kanji"}
         keycap{"keycap"}
@@ -1761,7 +1765,7 @@
         limited_use{"penggunaan terbatas"}
         male{"pria"}
         math_symbols{"simbol matematika"}
-        middle_eastern_scripts{"Skrip Timur Tengah"}
+        middle_eastern_scripts{"skrip Timur Tengah"}
         miscellaneous{"lain-lain"}
         modern_scripts{"skrip modern"}
         modifier{"pengubah"}
@@ -1783,8 +1787,8 @@
         small_form_variant{"varian kecil"}
         smiley{"wajah tersenyum"}
         smileys_people{"smiley atau orang"}
-        south_asian_scripts{"Skrip Asia Selatan"}
-        southeast_asian_scripts{"Skrip Asia Tenggara"}
+        south_asian_scripts{"skrip Asia Selatan"}
+        southeast_asian_scripts{"skrip Asia Tenggara"}
         spacing{"spasi"}
         sport{"olahraga"}
         symbols{"simbol"}
@@ -1796,7 +1800,7 @@
         variant_forms{"varian"}
         vocalic_jamo{"jamo vokal"}
         weather{"cuaca"}
-        western_asian_scripts{"Skrip Asia Bagian Barat"}
+        western_asian_scripts{"skrip Asia Bagian Barat"}
         whitespace{"spasi kosong"}
     }
     contextTransforms{
diff --git a/icu4c/source/data/locales/id_ID.txt b/icu4c/source/data/locales/id_ID.txt
index c91f911..727d3f7 100644
--- a/icu4c/source/data/locales/id_ID.txt
+++ b/icu4c/source/data/locales/id_ID.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 id_ID{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ig.txt b/icu4c/source/data/locales/ig.txt
index ba83a35..4b1bc5b 100644
--- a/icu4c/source/data/locales/ig.txt
+++ b/icu4c/source/data/locales/ig.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ig{
     AuxExemplarCharacters{
         "[á à ā c é è ē í ì ī {ị\u0301} {ị\u0300} ḿ {m\u0300} ń ǹ ó ò ō {ọ\u0301} {ọ"
@@ -76,6 +77,46 @@
                 accountingFormat{"¤#,##0.00;(¤#,##0.00)"}
                 currencyFormat{"¤#,##0.00"}
             }
+            patternsShort{
+                currencyFormat{
+                    1000{
+                        other{"¤0K"}
+                    }
+                    10000{
+                        other{"¤00K"}
+                    }
+                    100000{
+                        other{"¤000K"}
+                    }
+                    1000000{
+                        other{"¤0M"}
+                    }
+                    10000000{
+                        other{"¤00M"}
+                    }
+                    100000000{
+                        other{"¤000M"}
+                    }
+                    1000000000{
+                        other{"¤0G"}
+                    }
+                    10000000000{
+                        other{"¤00G"}
+                    }
+                    100000000000{
+                        other{"¤000G"}
+                    }
+                    1000000000000{
+                        other{"¤0T"}
+                    }
+                    10000000000000{
+                        other{"¤00T"}
+                    }
+                    100000000000000{
+                        other{"¤000T"}
+                    }
+                }
+            }
             symbols{
                 decimal{"."}
                 exponential{"E"}
@@ -101,7 +142,6 @@
         }
         minimumGroupingDigits{"1"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -203,7 +243,7 @@
             dayNames{
                 format{
                     abbreviated{
-                        "Ụka",
+                        "Sọn",
                         "Mọn",
                         "Tiu",
                         "Wen",
@@ -232,7 +272,7 @@
                 }
                 stand-alone{
                     abbreviated{
-                        "Ụka",
+                        "Sọn",
                         "Mọn",
                         "Tiu",
                         "Wen",
@@ -530,6 +570,46 @@
             }
         }
     }
+    characterLabel{
+        animal{"anụmanụ"}
+        animals_nature{"anụmanụ ma ọbụ ụwa"}
+        arrows{"arọ"}
+        body{"ahụ"}
+        box_drawing{"ịgbe osese"}
+        building{"ulọ"}
+        currency_symbols{"akara ego"}
+        divination_symbols{"akara ịgba afa"}
+        downwards_arrows{"arọ ala"}
+        downwards_upwards_arrows{"arọ elụ ala"}
+        female{"nwanyị"}
+        food_drink{"nrị & ịhe ọnụnụ"}
+        heart{"obi"}
+        leftwards_arrows{"arọ aka ekpe"}
+        leftwards_rightwards_arrows{"arọ aka nrị aka ekpe"}
+        male{"nwoke"}
+        math_symbols{"akara matị"}
+        musical_symbols{"akara ụrị"}
+        nature{"ụwa"}
+        nonspacing{"enweghịọhere"}
+        numbers{"ọnụọgụgụ"}
+        objects{"ịhe"}
+        other{"ọzọ"}
+        person{"mmadụ"}
+        place{"ebe"}
+        plant{"ahịha"}
+        punctuation{"akara edemede"}
+        rightwards_arrows{"arọ aka nrị"}
+        sign_standard_symbols{"ịrịba ama maọbụ akara"}
+        spacing{"ọhere"}
+        sport{"egwụregwụ"}
+        symbols{"akara"}
+        technical_symbols{"akara teknịkal"}
+        tone_marks{"ụda akara"}
+        travel{"njem"}
+        travel_places{"njem maọbụ ebe"}
+        upwards_arrows{"arọ elụ"}
+        weather{"ụdịdịụbọchị"}
+    }
     fields{
         day{
             dn{"Ụbọchị"}
@@ -553,17 +633,77 @@
                 "1"{"Echi"}
             }
         }
+        dayOfYear{
+            dn{"ụbọchị na afọ"}
+        }
+        dayOfYear-short{
+            dn{"Ụbọchị na afọ"}
+        }
         dayperiod{
             dn{"N’ụtụtụ/N’abalị"}
         }
+        dayperiod-narrow{
+            dn{"N’ụtụtụ/N’abalị"}
+        }
+        dayperiod-short{
+            dn{"N’ụtụtụ/N’abalị"}
+        }
         era{
             dn{"Agba"}
         }
+        fri{
+            relative{
+                "-1"{"Ụbọchị faraịde gara aga"}
+                "0"{"ụbọchị Faraịde a"}
+                "1"{"ụbọchị Faraịde na abịa"}
+            }
+        }
+        fri-narrow{
+            relative{
+                "-1"{"ụbọchị Faraịde gara aga"}
+                "0"{"ụbọchị Faraịde a"}
+                "1"{"ụọchị Faraịde na abịa"}
+            }
+        }
+        fri-short{
+            relative{
+                "-1"{"ụbọchị Faraịde gara aga"}
+                "0"{"ụbọchị Faraịde a"}
+                "1"{"ụbọchị na abịa"}
+            }
+        }
         hour{
             dn{"Elekere"}
+            relative{
+                "0"{"elekere a"}
+            }
         }
         minute{
             dn{"Nkeji"}
+            relative{
+                "0"{"nkejị a"}
+            }
+        }
+        mon{
+            relative{
+                "-1"{"ụbọchị Mọnde gara aga"}
+                "0"{"ụbọchị Mọnde a"}
+                "1"{"ụbọchị Monde a"}
+            }
+        }
+        mon-narrow{
+            relative{
+                "-1"{"ụbọchị Monde gara aga"}
+                "0"{"ụbọchị Monde a"}
+                "1"{"ụbọchị Monde na abịa"}
+            }
+        }
+        mon-short{
+            relative{
+                "-1"{"Mon gara aga"}
+                "0"{"ụbọchị Mọnde a"}
+                "1"{"ụbọchị Mọnde na abịa"}
+            }
         }
         month{
             dn{"Ọnwa"}
@@ -589,6 +729,11 @@
         }
         quarter{
             dn{"Ọnwa atọ n’afọ"}
+            relative{
+                "-1"{"Nkejị keanọ gara aga"}
+                "0"{"nkejị keanọ a"}
+                "1"{"nkejị keanọ na abịa"}
+            }
         }
         quarter-narrow{
             dn{"Ọnwa atọ n’afọ"}
@@ -596,8 +741,32 @@
         quarter-short{
             dn{"Ọnwa atọ n’afọ"}
         }
+        sat{
+            relative{
+                "-1"{"ụbọchị Satụde gara aga"}
+                "0"{"ụbọchị Satụde a"}
+                "1"{"ụbọchị Satụde na abịa"}
+            }
+        }
+        sat-narrow{
+            relative{
+                "-1"{"ụbọchị Satụde gara aga"}
+                "0"{"ụbọchị Satụde a"}
+                "1"{"ụbọchị Satụde na abịa"}
+            }
+        }
+        sat-short{
+            relative{
+                "-1"{"Ụbọchị Satụde gara aga"}
+                "0"{"ụbọchị Satụde a"}
+                "1"{"ụbọchị Satụde na abịa"}
+            }
+        }
         second{
             dn{"Tịm kọm"}
+            relative{
+                "0"{"ụgbụa"}
+            }
         }
         second-narrow{
             dn{"Tịm kọm"}
@@ -605,6 +774,90 @@
         second-short{
             dn{"Tịm kọm"}
         }
+        sun{
+            relative{
+                "-1"{"Ụbọchị ụka gara aga"}
+                "0"{"ụbọchị ụka a"}
+                "1"{"ụbọchị ụka na abịa"}
+            }
+        }
+        sun-narrow{
+            relative{
+                "-1"{"ụbọchị ụka gara aga"}
+                "0"{"ụbọchị ụka a"}
+                "1"{"ụbọchị ụka na abịa"}
+            }
+        }
+        sun-short{
+            relative{
+                "-1"{"ụbọchị ụka gara aga"}
+                "0"{"ubochị ụka a"}
+                "1"{"ụbọchị ụka na abịa"}
+            }
+        }
+        thu{
+            relative{
+                "-1"{"ụbọchị Tọsdee gara aga"}
+                "0"{"ụbọchị Tọsdee a"}
+                "1"{"ụbọchị Tọsdee na abịa"}
+            }
+        }
+        thu-narrow{
+            relative{
+                "-1"{"ụbọchị Tọsdee gara aga"}
+                "0"{"ụbọchị Tọsdee a"}
+                "1"{"ụbọchị Tọsdee na abịa"}
+            }
+        }
+        thu-short{
+            relative{
+                "-1"{"Ụbọchị Tọsdee gara aga"}
+                "0"{"ụbọchị Tọsdee a"}
+                "1"{"ụbọchị Tọsdee na abịa"}
+            }
+        }
+        tue{
+            relative{
+                "-1"{"ụbọchị Tuesde gara aga"}
+                "0"{"ụbọchị Tuesde a"}
+                "1"{"ụbọchị Tuesde na abịa"}
+            }
+        }
+        tue-narrow{
+            relative{
+                "-1"{"ụbọchị Tuesde gara aga"}
+                "0"{"ụbọchị Tuesde a"}
+                "1"{"ụbọchị Tuesde na abịa"}
+            }
+        }
+        tue-short{
+            relative{
+                "-1"{"ụbọchị Tụesde gara aga"}
+                "0"{"ụbọchị Tuesde a"}
+                "1"{"ụbọchị Tuesde na abịa"}
+            }
+        }
+        wed{
+            relative{
+                "-1"{"ụbọchị wednesde gara aga"}
+                "0"{"ụbọchị Wednesde a"}
+                "1"{"ụbọchị Wednesde na abịa"}
+            }
+        }
+        wed-narrow{
+            relative{
+                "-1"{"ụbọchị Wednesde gara ag"}
+                "0"{"ụbọchị Wednesde a"}
+                "1"{"ụbọchị Wednesde a"}
+            }
+        }
+        wed-short{
+            relative{
+                "-1"{"ụbọchị Wednesde gara ag"}
+                "0"{"ụbọchị Wednesde a"}
+                "1"{"ụbọchị Wednesde na abịa"}
+            }
+        }
         week{
             dn{"Izu"}
             relative{
@@ -630,9 +883,33 @@
             }
             relativePeriod{"Izu nke{0}"}
         }
+        weekOfMonth{
+            dn{"ịzụ ọnwa"}
+        }
+        weekOfMonth-narrow{
+            dn{"ịzụ ọnwa"}
+        }
+        weekOfMonth-short{
+            dn{"ịzụ ọnwa"}
+        }
         weekday{
             dn{"Ụbọchị izu"}
         }
+        weekday-narrow{
+            dn{"Ụbọchị ịzụ"}
+        }
+        weekday-short{
+            dn{"Ụbọchị ịzụ"}
+        }
+        weekdayOfMonth{
+            dn{"Ụbọchị ịzụ na ọnwa"}
+        }
+        weekdayOfMonth-narrow{
+            dn{"Ụbọchị ịzụ na ọnwa"}
+        }
+        weekdayOfMonth-short{
+            dn{"Ụbọchị ịzụ na ọnwa"}
+        }
         year{
             dn{"Afọ"}
             relative{
diff --git a/icu4c/source/data/locales/ig_NG.txt b/icu4c/source/data/locales/ig_NG.txt
index bb274f1..aeda270 100644
--- a/icu4c/source/data/locales/ig_NG.txt
+++ b/icu4c/source/data/locales/ig_NG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ig_NG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ii.txt b/icu4c/source/data/locales/ii.txt
index 101e30f..b0c62bd 100644
--- a/icu4c/source/data/locales/ii.txt
+++ b/icu4c/source/data/locales/ii.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ii{
     ExemplarCharacters{"[ꀀ-ꒌ]"}
     ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
@@ -20,7 +21,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             AmPmMarkers{
diff --git a/icu4c/source/data/locales/ii_CN.txt b/icu4c/source/data/locales/ii_CN.txt
index fc1ffb0..3344042 100644
--- a/icu4c/source/data/locales/ii_CN.txt
+++ b/icu4c/source/data/locales/ii_CN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ii_CN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/in.txt b/icu4c/source/data/locales/in.txt
index 0233523..e2df169 100644
--- a/icu4c/source/data/locales/in.txt
+++ b/icu4c/source/data/locales/in.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 in{
     "%%ALIAS"{"id"}
 }
diff --git a/icu4c/source/data/locales/in_ID.txt b/icu4c/source/data/locales/in_ID.txt
index acec72c..03f2387 100644
--- a/icu4c/source/data/locales/in_ID.txt
+++ b/icu4c/source/data/locales/in_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 in_ID{
     "%%ALIAS"{"id_ID"}
 }
diff --git a/icu4c/source/data/locales/is.txt b/icu4c/source/data/locales/is.txt
index 3e7880c..fd2e349 100644
--- a/icu4c/source/data/locales/is.txt
+++ b/icu4c/source/data/locales/is.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 is{
     AuxExemplarCharacters{"[c q w z]"}
     Ellipsis{
@@ -221,7 +222,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -3911,7 +3911,7 @@
         number{
             lenient{
                 "[\\-‒⁻₋−➖﹣-]",
-                "[,،٫、︐︑﹐﹑,、]",
+                "[,،٫⹁、︐︑﹐﹑,、]",
                 "[+⁺₊➕﬩﹢+]",
             }
         }
diff --git a/icu4c/source/data/locales/is_IS.txt b/icu4c/source/data/locales/is_IS.txt
index 33cfadf..1363a56 100644
--- a/icu4c/source/data/locales/is_IS.txt
+++ b/icu4c/source/data/locales/is_IS.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 is_IS{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/it.txt b/icu4c/source/data/locales/it.txt
index d3ffa35..d8f7677 100644
--- a/icu4c/source/data/locales/it.txt
+++ b/icu4c/source/data/locales/it.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 it{
     AuxExemplarCharacters{"[ª á â å ä ã æ ç ê ë í î ï ñ º ô ö õ ø œ ß ú û ü ÿ]"}
     Ellipsis{
@@ -34,7 +35,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
-                        one{"0 mille"}
+                        one{"mille"}
                         other{"0 mila"}
                     }
                     10000{
@@ -212,7 +213,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -688,12 +688,12 @@
             intervalFormats{
                 Bh{
                     B{"h B – h B"}
-                    h{"h–h B"}
+                    h{"h – h B"}
                 }
                 Bhm{
                     B{"h:mm B – h:mm B"}
-                    h{"h:mm–h:mm B"}
-                    m{"h:mm–h:mm B"}
+                    h{"h:mm – h:mm B"}
+                    m{"h:mm – h:mm B"}
                 }
                 Gy{
                     G{"y G – y G"}
@@ -718,7 +718,7 @@
                 GyMMMEd{
                     G{"E d MMM y G – E d MMM y G"}
                     M{"E d MMM – E d MMM y G"}
-                    d{"E d MMM – d E MMM y G"}
+                    d{"E d MMM – E d MMM y G"}
                     y{"E d MMM y – E d MMM y G"}
                 }
                 GyMMMd{
@@ -1138,7 +1138,7 @@
             }
         }
         day-narrow{
-            dn{"g"}
+            dn{"g."}
             relative{
                 "-1"{"ieri"}
                 "-2"{"l’altro ieri"}
@@ -1158,7 +1158,7 @@
             }
         }
         day-short{
-            dn{"g"}
+            dn{"g."}
             relative{
                 "-1"{"ieri"}
                 "-2"{"l’altro ieri"}
@@ -1285,7 +1285,7 @@
             }
         }
         hour-short{
-            dn{"h."}
+            dn{"h"}
             relativeTime{
                 future{
                     one{"tra {0} h"}
@@ -1582,11 +1582,11 @@
             dn{"s"}
             relativeTime{
                 future{
-                    one{"tra {0} s"}
+                    one{"tra {0} sec."}
                     other{"tra {0} sec."}
                 }
                 past{
-                    one{"{0} s fa"}
+                    one{"{0} sec. fa"}
                     other{"{0} sec. fa"}
                 }
             }
@@ -1817,11 +1817,11 @@
         week-narrow{
             dn{"sett."}
             relative{
-                "-1"{"settimana scorsa"}
-                "0"{"questa settimana"}
-                "1"{"settimana prossima"}
+                "-1"{"sett. scorsa"}
+                "0"{"questa sett."}
+                "1"{"sett. prossima"}
             }
-            relativePeriod{"la settimana del {0}"}
+            relativePeriod{"la sett. del {0}"}
             relativeTime{
                 future{
                     one{"tra {0} sett."}
@@ -1836,11 +1836,11 @@
         week-short{
             dn{"sett."}
             relative{
-                "-1"{"settimana scorsa"}
-                "0"{"questa settimana"}
-                "1"{"settimana prossima"}
+                "-1"{"sett. scorsa"}
+                "0"{"questa sett."}
+                "1"{"sett. prossima"}
             }
-            relativePeriod{"la settimana del {0}"}
+            relativePeriod{"la sett. del {0}"}
             relativeTime{
                 future{
                     one{"tra {0} sett."}
diff --git a/icu4c/source/data/locales/it_CH.txt b/icu4c/source/data/locales/it_CH.txt
index e40ed11..ecba64c 100644
--- a/icu4c/source/data/locales/it_CH.txt
+++ b/icu4c/source/data/locales/it_CH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 it_CH{
     ExemplarCharactersNumbers{"[\\- ‑ . ’ % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     NumberElements{
@@ -13,7 +14,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/it_IT.txt b/icu4c/source/data/locales/it_IT.txt
index faa85f2..f5c2b88 100644
--- a/icu4c/source/data/locales/it_IT.txt
+++ b/icu4c/source/data/locales/it_IT.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 it_IT{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/it_SM.txt b/icu4c/source/data/locales/it_SM.txt
index 0db8e99..5b9bca7 100644
--- a/icu4c/source/data/locales/it_SM.txt
+++ b/icu4c/source/data/locales/it_SM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 it_SM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/it_VA.txt b/icu4c/source/data/locales/it_VA.txt
index ab0f08b..d18d09b 100644
--- a/icu4c/source/data/locales/it_VA.txt
+++ b/icu4c/source/data/locales/it_VA.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 it_VA{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/iw.txt b/icu4c/source/data/locales/iw.txt
index d59865d..4aa2f62 100644
--- a/icu4c/source/data/locales/iw.txt
+++ b/icu4c/source/data/locales/iw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 iw{
     "%%ALIAS"{"he"}
 }
diff --git a/icu4c/source/data/locales/iw_IL.txt b/icu4c/source/data/locales/iw_IL.txt
index cf1666a..984aefd 100644
--- a/icu4c/source/data/locales/iw_IL.txt
+++ b/icu4c/source/data/locales/iw_IL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 iw_IL{
     "%%ALIAS"{"he_IL"}
 }
diff --git a/icu4c/source/data/locales/ja.txt b/icu4c/source/data/locales/ja.txt
index 9785cef..dcb9c97 100644
--- a/icu4c/source/data/locales/ja.txt
+++ b/icu4c/source/data/locales/ja.txt
@@ -1,7 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ja{
-    AuxExemplarCharacters{"[丑 亥 亨 兌 兎 卯 嘉 壬 寅 巳 庚 弘 戊 戌 拼 昌 楔 猪 癸 祚 禄 禎 辰 酉 錄 閏 雉 鳳 鼠]"}
+    AuxExemplarCharacters{
+        "[丑 亥 亨 兌 兎 凧 剃 卯 嘉 嘔 嘘 壬 壺 嬉 寅 巳 庚 庵 弘 彗 悶 愕 戊 戌 拼 揃 斧 昌 杖 桶 梵 楔 湘 焚 燭 爬 牌 牝"
+        " 牡 狐 狗 狼 猪 獅 癸 瞑 碇 祚 禄 禎 秤 竿 絆 繍 罫 膏 芒 蟄 蟹 蠍 蠣 贛 蹄 辰 酉 鋲 錄 錨 閏 閩 雀 雉 鳳 鼠 龍]"
+    }
     Ellipsis{
         final{"{0}…"}
         initial{"…{0}"}
@@ -14,56 +18,61 @@
         "[々 ゝヽ ゞヾ ー ぁァ あア ぃィ いイ ぅゥ うウ ヴ ぇェ えエ ぉォ おオ ヵ かカ がガ きキ ぎギ くク ぐグ ヶ けケ げゲ こコ ごゴ"
         " さサ ざザ しシ じジ すス ずズ せセ ぜゼ そソ ぞゾ たタ だダ ちチ ぢヂ っッ つツ づヅ てテ でデ とト どド なナ にニ ぬヌ ねネ "
         "のノ はハ ばバ ぱパ ひヒ びビ ぴピ ふフ ぶブ ぷプ へヘ べベ ぺペ ほホ ぼボ ぽポ まマ みミ むム めメ もモ ゃャ やヤ ゅュ ゆユ ょ"
-        "ョ よヨ らラ りリ るル れレ ろロ ゎヮ わワ ゐヰ ゑヱ をヲ んン 一 丁 七 万-下 不 与 且 世 丘 丙 両 並 中 丸 丹 主 久 乏 "
-        "乗 乙 九 乱 乳 乾 亀 了 予 争 事 二 互 五 井 亜 亡 交 享-亭 人 仁 今 介 仏 仕 他 付 仙 代-以 仮 仰 仲 件 任 企 伏-"
-        "休 会 伝 伯 伴 伸 伺 似 但 位-佐 体 何 余 作 佳 併 使 例 侍 供 依 価 侮 侯 侵 便 係 促 俊 俗 保 信 修 俳 俵 俸 俺 "
-        "倉 個 倍 倒 候 借 倣 値 倫 倹 偉 偏 停 健 側-偶 偽 傍 傑 傘 備 催 債 傷 傾 働 像 僕 僚 僧 儀 億 儒 償 優 元-兆 先 "
-        "光 克 免 児 党 入 全 八-六 共 兵 具 典 兼 内 円 冊 再 冒 冗 写 冠 冬 冷 准 凍 凝 凡 処 凶 凸-出 刀 刃 分-刈 刊 刑 "
-        "列 初 判 別 利 到 制-券 刺 刻 則 削 前 剖 剛 剣-剥 副 剰 割 創 劇 力 功 加 劣 助 努 励 労 効 劾 勅 勇 勉 動 勘 務 "
-        "勝 募 勢 勤 勧 勲 包 化 北 匠 匹-医 匿 十 千 升 午 半 卑-協 南 単 博 占 印 危 即-卵 卸 厄 厘 厚 原 厳 去 参 又 及-"
-        "収 叔 取 受 叙 口-句 叫 召 可-右 号 司 各 合 吉 同-向 君 吟 否 含 吸 吹 呈-告 周 味 呼 命 和 咲 哀 品 員 哲 唆 唇 "
-        "唐 唯 唱 商 問 啓 善 喚 喜 喝 喪 喫 営 嗣 嘆 嘱 器 噴 嚇 囚 四 回 因 団 困 囲 図 固 国 圏 園 土 圧 在 地 坂 均 坊 "
-        "坑 坪 垂 型 垣 埋 城 域 執 培 基 埼 堀 堂 堅 堕 堤 堪 報 場 塀 塁 塊 塑 塔 塗 塚 塩 填 塾 境 墓 増 墜 墨 墳 墾 壁 "
-        "壇 壊 壌 士 壮 声-売 変 夏 夕 外 多 夜 夢 大 天-夫 央 失 奇-奉 奏 契 奔 奥 奨 奪 奮 女 奴 好 如-妄 妊 妙 妥 妨 妹 "
-        "妻 姉 始 姓 委 姫 姻 姿 威 娘 娠 娯 婆 婚 婦 婿 媒 嫁 嫌 嫡 嬢 子 孔 字 存 孝 季 孤 学 孫 宅 宇-安 完 宗-定 宜 宝 "
-        "実 客-室 宮 宰 害-家 容 宿 寂 寄 密 富 寒 寛 寝 察 寡 寧 審 寮 寸 寺 対 寿 封 専 射 将 尉-尋 導 小 少 尚 就 尺 尼-"
-        "局 居 屈 届 屋 展 属 層 履 屯 山 岐 岡 岩 岬 岳 岸 峠 峡 峰 島 崇 崎 崩 川 州 巡 巣 工-巨 差 己 巻 市 布 帆 希 帝 "
-        "帥 師 席 帯 帰 帳 常 帽 幅 幕 幣 干-年 幸 幹 幻-幾 庁 広 床 序 底 店 府 度 座 庫 庭 庶-庸 廃 廉 廊 延 廷 建 弁 弊 "
-        "式 弐 弓-引 弟 弦 弧 弱 張 強 弾 当 形 彩 彫 彰 影 役 彼 往 征 径 待 律 後 徐 徒 従 得 御 復 循 微 徳 徴 徹 心 必 "
-        "忌 忍 志-忙 応 忠 快 念 怒 怖 思 怠 急 性 怪 恋 恐 恒 恥 恨 恩 恭 息 恵 悔 悟 悠 患 悦 悩 悪 悲 悼 情 惑 惜 惨 惰 "
-        "想 愁 愉 意 愚 愛 感 慈 態 慌 慎 慕 慢 慣 慨 慮 慰 慶 憂 憎 憤 憩 憲 憶 憾 懇 懐 懲 懸 成-戒 戦 戯 戸 戻 房 所 扇 "
-        "扉 手 才 打 払 扱 扶 批 承 技 抄 把 抑 投 抗 折 抜 択 披 抱 抵 抹 押 抽 担 拍 拐 拒 拓 拘 拙 招 拝 拠 拡 括 拷 拾 "
-        "持 指 挑 挙 挟 振 挿 捕 捜 捨 据 掃 授 掌 排 掘 掛 採 探 接 控 推 措 掲 描 提 揚 換 握 揮 援 揺 損 搬 搭 携 搾 摂 "
-        "摘 摩 撃 撤 撮 撲 擁 操 擦 擬 支 改 攻 放 政 故 敏 救 敗 教 敢 散 敬 数 整 敵 敷 文 斉 斎 斗 料 斜 斤 斥 断 新 方 "
-        "施 旅 旋 族 旗 既 日 旧-早 旬 昆 昇 明 易 昔 星 映 春 昨 昭 是 昼 時 晩 普 景 晴 晶 暁 暇 暑 暖 暗 暦 暫 暮 暴 曇 "
-        "曜 曲 更 書 曹 替 最 月 有 服 朕 朗 望 朝 期 木 未-札 朱 朴 机 朽 杉 材 村 束 条 来 杯 東 松 板 析 林 枚 果 枝 枠 "
-        "枢 枯 架 柄 某 染 柔 柱 柳 査 栄 栓 校 株 核 根 格 栽 桃 案 桑 桜 桟 梅 械 棄 棋 棒 棚 棟 森 棺 植 検 業 極 楼 楽 "
-        "概 構 様 槽 標 模 権 横 樹 橋 機 欄 欠 次 欧 欲 欺 款 歌 歓 止 正 武 歩 歯 歳 歴 死 殉-残 殖 殴 段 殺 殻 殿 母 毎 "
-        "毒 比 毛 氏 民 気 水 氷 永 汁 求 汎 汗 汚 江 池 決 汽 沈 沖 没 沢 河 沸 油 治 沼 沿 況 泉 泊 泌 法 泡-泣 泥 注 泰 "
-        "泳 洋 洗 洞 津 洪 活 派 流 浄 浅 浜 浦 浪 浮 浴 海 浸 消 涙 涯 液 涼 淑 淡 深 混 添 清 渇-渉 渋 渓 減 渡 渦 温 測 "
-        "港 湖 湯 湾-満 源 準 溝 溶 滅 滋 滑 滝 滞 滴 漁 漂 漆 漏 演 漠 漢 漫 漬 漸 潔 潜 潟 潤 潮 澄 激 濁 濃 濫 濯 瀬 火 "
-        "灯 灰 災 炉 炊 炎 炭 点 為 烈 無 焦 然 焼 煙 照 煩 煮 熟 熱 燃 燥 爆 爵 父 片 版 牙 牛 牧 物 牲 特 犠 犬 犯 状 狂 "
-        "狩 独 狭 猛 猟 猫 献 猶 猿 獄 獣 獲 玄 率 玉 王 珍 珠 班 現 球 理 琴 環 璽 瓶 甘 甚 生 産 用 田-申 男 町 画 界 畑 "
-        "畔 留 畜 畝 略 番 異 畳 疎 疑 疫 疲 疾 病 症 痘 痛 痢 痴 療 癒 癖 発 登 白 百 的 皆 皇 皮 皿 盆 益 盗 盛 盟 監 盤 "
-        "目 盲 直 相 盾 省 看 県 真 眠 眺 眼 着 睡 督 瞬 矛 矢 知 短 矯 石 砂 研 砕 砲 破 硝 硫 硬 碁 碑 確 磁 磨 礁 礎 示 "
-        "礼 社 祈 祉 祖 祝 神 祥 票 祭 禁 禅 禍 福 秀 私 秋 科 秒 秘 租 秩 称 移 程 税 稚 種 稲 稼 稿 穀 穂 積 穏 穫 穴 究 "
-        "空 突 窃 窒 窓 窮 窯 立 竜 章 童 端 競 竹 笑 笛 符 第 筆 等 筋 筒 答 策 箇 算 管 箱 節 範 築 篤 簡 簿 籍 米 粉 粋 "
-        "粒 粗 粘 粛 粧 精 糖 糧 糸 系 糾 紀 約 紅 紋 納 純 紙-紛 素-索 紫 累 細 紳 紹 紺 終 組 経 結 絞 絡 給 統 絵 絶 絹 "
-        "継 続 維 綱 網 綿 緊 総 緑 緒 線 締 編 緩 緯 練 縁 縄 縛 縦 縫 縮 績 繁 繊 織 繕 繭 繰 缶 罪 置 罰 署 罷 羅 羊 美 "
-        "群 義 羽 翁 翌 習 翻 翼 老 考 者 耐 耕 耗 耳 聖 聞 聴 職 肉 肌 肖 肝 肢 肥 肩 肪 肯 育 肺 胃 胆 背 胎 胞 胴 胸 能 "
-        "脂 脅 脈 脚 脱 脳 腐 腕 腰 腸 腹 膚 膜 膨 臓 臣 臨 自 臭 至 致 興 舌 舎 舗 舞 舟 航 般 舶 船 艇 艦 良 色 芋 芝 花 "
-        "芳 芸 芽 苗 若 苦 英 茂 茎 茶 草 荒 荘 荷 菊 菌 菓 菜 華 落 葉 著 葬 蒸 蓄 蔵 薄 薦 薪-薬 藤 藩 藻 虎 虐 虚 虜 虞 "
-        "虫 蚊 蚕 蛇 蛍 蛮 融 血 衆 行 術 街 衛 衝 衡 衣 表 衰 衷 袋 被 裁 裂 装 裏 裕 補 裸 製 複 褐 褒 襟 襲 西 要 覆 覇 "
-        "見 規 視 覚 覧 親 観 角 解 触 言 訂 計 討 訓 託 記 訟 訪 設 許 訳 訴 診 証 詐 詔 評 詞 詠 試 詩 詰-詳 誇 誉 誌 認 "
-        "誓 誕 誘 語 誠 誤 説 読 誰 課 調 談 請 論 諭 諮 諸 諾 謀 謁 謄 謙 講 謝 謡 謹 識 譜 警 議 譲 護 谷 豆 豊 豚 象 豪 "
-        "貝 貞 負-貢 貧-販 貫 責 貯 貴 買 貸 費 貿 賀 賃 賄 資 賊 賓 賛 賜 賞 賠 賢 賦 質 購 贈 赤 赦 走 赴 起 超 越 趣 足 "
-        "距 跡 路 跳 践 踊 踏 躍 身 車 軌 軍 軒 軟 転 軸 軽 較 載 輝 輩 輪 輸 轄 辛 辞 辱 農 辺 込 迅 迎 近 返 迫 迭 述 迷 "
-        "追 退 送 逃 逆 透 逐 逓 途 通 逝 速 造 連 逮 週 進 逸 遂 遅 遇 遊 運 遍 過 道-違 遠 遣 適 遭 遮 遵 遷 選 遺 避 還 "
-        "邦 邪 邸 郊 郎 郡 部 郭 郵 郷 都 酌 配 酒 酔 酢 酪 酬 酵 酷 酸 醜 醸 釈 里-量 金 針 釣 鈍 鈴 鉄 鉛 鉢 鉱 銀 銃 銅 "
-        "銘 銭 鋭 鋳 鋼 錠 錬 錯 録 鍛 鎖 鎮 鏡 鐘 鑑 長 門 閉 開 閑 間 関 閣 閥 閲 闘 阪 防 阻 附 降 限 陛 院-陥 陪 陰 陳 "
-        "陵 陶 陸 険 陽 隅 隆 隊 階 随 隔 際 障 隠 隣 隷 隻 雄-雇 雌 雑 離 難 雨 雪 雰 雲 零 雷 電 需 震 霊 霜 霧 露 青 静 "
-        "非 面 革 靴 韓 音 韻 響 頂 頃 項 順 預-頒 領 頬 頭 頻 頼 題 額 顔 顕 願 類 顧 風 飛 食 飢 飯 飲 飼-飾 養 餓 館 首 "
-        "香 馬 駄-駆 駐 騎 騒 験 騰 驚 骨 髄 高 髪 鬼 魂 魅 魔 魚 鮮 鯨 鳥 鳴 鶏 鹿 麗 麦 麻 黄 黒 黙 鼓 鼻 齢]"
+        "ョ よヨ らラ りリ るル れレ ろロ ゎヮ わワ ゐヰ ゑヱ をヲ んン 一 丁 七 万-下 不 与 且 世 丘 丙 両 並 中 串 丸 丹 主 丼 "
+        "久 乏 乗 乙 九 乞 乱 乳 乾 亀 了 予 争 事 二 互 五 井 亜 亡 交 享-亭 人 仁 今 介 仏 仕 他 付 仙 代-以 仮 仰 仲 件 "
+        "任 企 伎-休 会 伝 伯 伴 伸 伺 似 但 位-佐 体 何 余 作 佳 併 使 例 侍 供 依 価 侮 侯 侵 侶 便 係 促 俊 俗 保 信 修 "
+        "俳 俵 俸 俺 倉 個 倍 倒 候 借 倣 値 倫 倹 偉 偏 停 健 側-偶 偽 傍 傑 傘 備 催 傲 債 傷 傾 僅 働 像 僕 僚 僧 儀 億 "
+        "儒 償 優 元-兆 先 光 克 免 児 党 入 全 八-六 共 兵 具 典 兼 内 円 冊 再 冒 冗 写 冠 冥 冬 冶 冷 凄 准 凍 凝 凡 処 "
+        "凶 凸-出 刀 刃 分-刈 刊 刑 列 初 判 別 利 到 制-刻 則 削 前 剖 剛 剣-剥 副 剰 割 創 劇 力 功 加 劣 助 努 励 労 効 "
+        "劾 勃 勅 勇 勉 動 勘 務 勝 募 勢 勤 勧 勲 勾 匂 包 化 北 匠 匹-医 匿 十 千 升 午 半 卑-協 南 単 博 占 印 危 即-卵 "
+        "卸 厄 厘 厚 原 厳 去 参 又 及-収 叔 取 受 叙 口-句 叫 召 可-右 号 司 各 合 吉 同-向 君 吟 否 含 吸 吹 呂 呈-告 周 "
+        "呪 味 呼 命 和 咲 咽 哀 品 員 哲 哺 唄 唆 唇 唐 唯 唱 唾 商 問 啓 善 喉 喚 喜 喝 喩-喫 営 嗅 嗣 嘆 嘱 嘲 器 噴 嚇 "
+        "囚 四 回 因 団 困 囲 図 固 国 圏 園 土 圧 在 地 坂 均 坊 坑 坪 垂 型 垣 埋 城 域 執 培 基 埼 堀 堂 堅 堆 堕 堤 堪 "
+        "報 場 塀 塁 塊 塑 塔 塗 塚 塞 塩 填 塾 境 墓 増 墜 墨 墳 墾 壁 壇 壊 壌 士 壮 声-売 変 夏 夕 外 多 夜 夢 大 天-夫 "
+        "央 失 奇-奉 奏 契 奔 奥 奨 奪 奮 女 奴 好 如-妄 妊 妖 妙 妥 妨 妬 妹 妻 姉 始 姓 委 姫 姻 姿 威 娘 娠 娯 婆 婚 婦 "
+        "婿 媒 媛 嫁 嫉 嫌 嫡 嬢 子 孔 字 存 孝 季 孤 学 孫 宅 宇-安 完 宗-宝 実 客-室 宮 宰 害-家 容 宿 寂 寄 密 富 寒 寛 "
+        "寝 察 寡 寧 審 寮 寸 寺 対 寿 封 専 射 将 尉-尋 導 小 少 尚 就 尺-局 居 屈 届 屋 展 属 層 履 屯 山 岐 岡 岩 岬 岳 "
+        "岸 峠 峡 峰 島 崇 崎 崖 崩 嵐 川 州 巡 巣 工-巨 差 己 巻 巾 市 布 帆 希 帝 帥 師 席 帯 帰 帳 常 帽 幅 幕 幣 干-年 "
+        "幸 幹 幻-幾 庁 広 床 序 底 店 府 度 座 庫 庭 庶-庸 廃 廉 廊 延 廷 建 弁 弄 弊 式 弐 弓-引 弟 弥-弧 弱 張 強 弾 当 "
+        "彙 形 彩 彫 彰 影 役 彼 往 征 径 待 律 後 徐 徒 従 得 御 復 循 微 徳 徴 徹 心 必 忌 忍 志-忙 応 忠 快 念 怒 怖 思 "
+        "怠 急 性 怨 怪 恋 恐 恒 恣 恥 恨 恩 恭 息 恵 悔 悟 悠 患 悦 悩 悪 悲 悼 情 惑 惜 惧 惨 惰 想 愁 愉 意 愚 愛 感 慄 "
+        "慈 態 慌 慎 慕 慢 慣 慨 慮 慰 慶 憂 憎 憤 憧 憩 憬 憲 憶 憾 懇 懐 懲 懸 成-戒 戚 戦 戯 戴 戸 戻 房 所 扇 扉 手 才 "
+        "打 払 扱 扶 批 承 技 抄 把 抑 投 抗 折 抜 択 披 抱 抵 抹 押 抽 担 拉 拍 拐 拒 拓 拘 拙 招 拝 拠 拡 括 拭 拳 拶 拷 "
+        "拾 持 指 挑 挙 挟 挨 挫 振 挿 捉 捕 捗 捜 捨 据 捻 掃 授 掌 排 掘 掛 採 探 接 控 推 措 掲 描 提 揚 換 握 揮 援 揺 "
+        "損 搬 搭 携 搾 摂 摘 摩 摯 撃 撤 撮 撲 擁 操 擦 擬 支 改 攻 放 政 故 敏 救 敗 教 敢 散 敬 数 整 敵 敷 文 斉 斎 斑 "
+        "斗 料 斜 斤 斥 斬 断 新 方 施 旅 旋 族 旗 既 日-早 旬 旺 昆 昇 明 易 昔 星 映 春 昧 昨 昭 是 昼 時 晩 普 景 晴 晶 "
+        "暁 暇 暑 暖 暗 暦 暫 暮 暴 曇 曖 曜 曲 更 書 曹 曽 替 最 月 有 服 朕 朗 望 朝 期 木 未-札 朱 朴 机 朽 杉 材 村 束 "
+        "条 来 杯 東 松 板 析 枕 林 枚 果 枝 枠 枢 枯 架 柄 某 染 柔 柱 柳 柵 査 柿 栃 栄 栓 校 株 核 根 格 栽 桁 桃 案 桑 "
+        "桜 桟 梅 梗 梨 械 棄 棋 棒 棚 棟 森 棺 椅 植 椎 検 業 極 楷 楼 楽 概 構 様 槽 標 模 権 横 樹 橋 機 欄 欠 次 欧 欲 "
+        "欺 款 歌 歓 止 正 武 歩 歯 歳 歴 死 殉-残 殖 殴 段 殺 殻 殿 毀 母 毎 毒 比 毛 氏 民 気 水 氷 永 氾 汁 求 汎 汗 汚 "
+        "江 池 汰 決 汽 沃 沈 沖 沙 没 沢 河 沸 油 治 沼 沿 況 泉 泊 泌 法 泡-泣 泥 注 泰 泳 洋 洗 洞 津 洪 活 派 流 浄 浅 "
+        "浜 浦 浪 浮 浴 海 浸 消 涙 涯 液 涼 淑 淡 淫 深 混 添 清 渇-渉 渋 渓 減 渡 渦 温 測 港 湖 湧 湯 湾-満 源 準 溝 溶 "
+        "溺 滅 滋 滑 滝 滞 滴 漁 漂 漆 漏 演 漠 漢 漫 漬 漸 潔 潜 潟 潤 潮 潰 澄 激 濁 濃 濫 濯 瀬 火 灯 灰 災 炉 炊 炎 炭 "
+        "点 為 烈 無 焦 然 焼 煎 煙 照 煩 煮 熊 熟 熱 燃 燥 爆 爪 爵 父 爽 片 版 牙 牛 牧 物 牲 特 犠 犬 犯 状 狂 狙 狩 独 "
+        "狭 猛 猟 猫 献 猶 猿 獄 獣 獲 玄 率 玉 王 玩 珍 珠 班 現 球 理 琴 瑠 璃 璧 環 璽 瓦 瓶 甘 甚 生 産 用 田-申 男 町 "
+        "画 界 畏 畑 畔 留 畜 畝 略 番 異 畳 畿 疎 疑 疫 疲 疾 病 症 痕 痘 痛 痢 痩 痴 瘍 療 癒 癖 発 登 白 百 的 皆 皇 皮 "
+        "皿 盆 益 盗 盛 盟 監 盤 目 盲 直 相 盾 省 眉 看 県 真 眠 眺 眼 着 睡 督 睦 瞬 瞭 瞳 矛 矢 知 短 矯 石 砂 研 砕 砲 "
+        "破 硝 硫 硬 碁 碑 確 磁 磨 礁 礎 示 礼 社 祈 祉 祖 祝 神 祥 票 祭 禁 禅 禍 福 秀 私 秋 科 秒 秘 租 秩 称 移 程 税 "
+        "稚 種 稲 稼 稽 稿 穀 穂 積 穏 穫 穴 究 空 突 窃 窒 窓 窟 窮 窯 立 竜 章 童 端 競 竹 笑 笛 符 第 筆 等 筋 筒 答 策 "
+        "箇 箋 算 管 箱 箸 節 範 築 篤 簡 簿 籍 籠 米 粉 粋 粒 粗 粘 粛 粧 精 糖 糧 糸 系 糾 紀 約 紅 紋 納 純 紙-紛 素-索 "
+        "紫 累 細 紳 紹 紺 終 組 経 結 絞 絡 給 統 絵 絶 絹 継 続 維 綱 網 綻 綿 緊 総 緑 緒 線 締 編 緩 緯 練 緻 縁 縄 縛 "
+        "縦 縫 縮 績 繁 繊 織 繕 繭 繰 缶 罪 置 罰 署 罵 罷 羅 羊 美 羞 群 羨 義 羽 翁 翌 習 翻 翼 老 考 者 耐 耕 耗 耳 聖 "
+        "聞 聴 職 肉 肌 肖 肘 肝 股 肢 肥 肩 肪 肯 育 肺 胃 胆 背 胎 胞 胴 胸 能 脂 脅 脇 脈 脊 脚 脱 脳 腎 腐 腕 腫 腰 腸-"
+        "腺 膚 膜 膝 膨 膳 臆 臓 臣 臨 自 臭 至 致 臼 興 舌 舎 舗 舞 舟 航 般 舶 舷 船 艇 艦 良 色 艶 芋 芝 芯 花 芳 芸 芽 "
+        "苗 苛 若 苦 英 茂 茎 茨 茶 草 荒 荘 荷 菊 菌 菓 菜 華 萎 落 葉 著 葛 葬 蒸 蓄 蓋 蔑 蔵 蔽 薄 薦 薪-薬 藍 藤 藩 藻 "
+        "虎 虐 虚 虜 虞 虫 虹 蚊 蚕 蛇 蛍 蛮 蜂 蜜 融 血 衆 行 術 街 衛 衝 衡 衣 表 衰 衷 袋 袖 被 裁 裂 装 裏 裕 補 裸 製 "
+        "裾 複 褐 褒 襟 襲 西 要 覆 覇 見 規 視 覚 覧 親 観 角 解 触 言 訂 訃 計 討 訓 託 記 訟 訪 設 許 訳 訴 診 証 詐 詔 "
+        "評 詞 詠 詣 試 詩 詮 詰-詳 誇 誉 誌 認 誓 誕 誘 語 誠 誤 説 読 誰 課 調 談 請 論 諦 諧 諭 諮 諸 諾 謀 謁 謄 謎 謙 "
+        "講 謝 謡 謹 識 譜 警 議 譲 護 谷 豆 豊 豚 象 豪 貌 貝 貞 負-貢 貧-責 貯 貴 買 貸 費 貼 貿 賀 賂-賄 資 賊 賓 賛 賜 "
+        "賞 賠 賢 賦 質 賭 購 贈 赤 赦 走 赴 起 超 越 趣 足 距 跡 路 跳 践 踊 踏 踪 蹴 躍 身 車 軌 軍 軒 軟 転 軸 軽 較 載 "
+        "輝 輩 輪 輸 轄 辛 辞 辣 辱 農 辺 込 迅 迎 近 返 迫 迭 述 迷 追 退 送 逃 逆 透 逐 逓 途 通 逝 速 造 連 逮 週 進 逸 "
+        "遂 遅 遇 遊 運 遍 過 道-違 遜 遠 遡 遣 適 遭 遮 遵 遷 選 遺 避 還 那 邦 邪 邸 郊 郎 郡 部 郭 郵 郷 都 酌-酎 酒 酔 "
+        "酢 酪 酬 酵 酷 酸 醒 醜 醸 采 釈 里-量 金 釜 針 釣 鈍 鈴 鉄 鉛 鉢 鉱 銀 銃 銅 銘 銭 鋭 鋳 鋼 錠 錦 錬 錮 錯 録 鍋 "
+        "鍛 鍵 鎌 鎖 鎮 鏡 鐘 鑑 長 門 閉 開 閑 間 関 閣 閥 閲 闇 闘 阜 阪 防 阻 附 降 限 陛 院-陥 陪 陰 陳 陵 陶 陸 険 陽 "
+        "隅 隆 隊 階 随 隔 隙 際 障 隠 隣 隷 隻 雄-雇 雌 雑 離 難 雨 雪 雰 雲 零 雷 電 需 震 霊 霜 霧 露 青 静 非 面 革 靴 "
+        "韓 音 韻 響 頂 頃 項 順 須 預-頓 領 頬 頭 頻 頼 題-顎 顔 顕 願 類 顧 風 飛 食 飢 飯 飲 飼-飾 餅 養 餌 餓 館 首 香 "
+        "馬 駄-駆 駐 駒 騎 騒 験 騰 驚 骨 骸 髄 高 髪 鬱 鬼 魂 魅 魔 魚 鮮 鯨 鳥 鳴 鶏 鶴 鹿 麓 麗 麦 麺 麻 黄 黒 黙 鼓 鼻 "
+        "齢]"
     }
     ExemplarCharactersIndex{"[あ か さ た な は ま や ら わ]"}
     ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
@@ -209,6 +218,7 @@
                 }
             }
             symbols{
+                approximatelySign{"約 "}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -235,7 +245,6 @@
         native{"latn"}
         traditional{"jpan"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ja_JP.txt b/icu4c/source/data/locales/ja_JP.txt
index b06492b..9b745b4 100644
--- a/icu4c/source/data/locales/ja_JP.txt
+++ b/icu4c/source/data/locales/ja_JP.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ja_JP{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ja_JP_TRADITIONAL.txt b/icu4c/source/data/locales/ja_JP_TRADITIONAL.txt
index df91f49..e531762 100644
--- a/icu4c/source/data/locales/ja_JP_TRADITIONAL.txt
+++ b/icu4c/source/data/locales/ja_JP_TRADITIONAL.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ja_JP_TRADITIONAL{
-    Version{"37"}
     calendar{
         default{"japanese"}
     }
diff --git a/icu4c/source/data/locales/jgo.txt b/icu4c/source/data/locales/jgo.txt
index ae9d937..b1bf6ed 100644
--- a/icu4c/source/data/locales/jgo.txt
+++ b/icu4c/source/data/locales/jgo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jgo{
     AuxExemplarCharacters{"[e o q r x]"}
     ExemplarCharacters{
@@ -39,7 +40,6 @@
         }
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/jgo_CM.txt b/icu4c/source/data/locales/jgo_CM.txt
index 03a86a4..fa0f35e 100644
--- a/icu4c/source/data/locales/jgo_CM.txt
+++ b/icu4c/source/data/locales/jgo_CM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jgo_CM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/jmc.txt b/icu4c/source/data/locales/jmc.txt
index b9acb38..1dd3548 100644
--- a/icu4c/source/data/locales/jmc.txt
+++ b/icu4c/source/data/locales/jmc.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jmc{
     AuxExemplarCharacters{"[q x]"}
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p r s t u v w y z]"}
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/jmc_TZ.txt b/icu4c/source/data/locales/jmc_TZ.txt
index 6f1bcaf..822647e 100644
--- a/icu4c/source/data/locales/jmc_TZ.txt
+++ b/icu4c/source/data/locales/jmc_TZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jmc_TZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/jv.txt b/icu4c/source/data/locales/jv.txt
index 116c107..0346af5 100644
--- a/icu4c/source/data/locales/jv.txt
+++ b/icu4c/source/data/locales/jv.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jv{
     AuxExemplarCharacters{"[f q v x z]"}
     Ellipsis{
@@ -156,7 +157,6 @@
         }
         native{"java"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -352,10 +352,9 @@
                 Ed{"E, d"}
                 Ehm{"E h:mm a"}
                 Ehms{"E h:mm:ss a"}
-                Gy{"y G"}
-                GyMMM{"MMM y G"}
-                GyMMMEd{"E, d MMM y G"}
-                GyMMMd{"d MMM y G"}
+                GyMMM{"MMM G y"}
+                GyMMMEd{"E, d MMM G y"}
+                GyMMMd{"d MMM G y"}
                 H{"HH"}
                 Hm{"HH:mm"}
                 Hms{"HH:mm:ss"}
@@ -505,44 +504,6 @@
                 }
             }
             intervalFormats{
-                Gy{
-                    G{"y G– y G"}
-                    y{"y–y G"}
-                }
-                GyM{
-                    G{"M/y GGGGG – M/y GGGGG"}
-                    M{"M/y – M/y GGGGG"}
-                    y{"M/y – M/y GGGGG"}
-                }
-                GyMEd{
-                    G{"E, d/M/y GGGGG – E, d/M/y GGGGG"}
-                    M{"E, d/M/y – E, d/M/y GGGGG"}
-                    d{"E, d/M/y – E, d/M/y GGGGG"}
-                    y{"E, d/M/y – E, d/M/y GGGGG"}
-                }
-                GyMMM{
-                    G{"MMM y G – MMM y G"}
-                    M{"MMM – MMM y G"}
-                    y{"MMM y – MMM y G"}
-                }
-                GyMMMEd{
-                    G{"E, d MMM, y G – E, d MMM, y G"}
-                    M{"E, d MMM – E, d MMM, y G"}
-                    d{"E, d MMM – E, d MMM, y G"}
-                    y{"E, d MMM y – E, d MMM y G"}
-                }
-                GyMMMd{
-                    G{"d MMM, y G – d MMM, y G"}
-                    M{"d MMM – d MMM, y G"}
-                    d{"d – d MMM, y G"}
-                    y{"d MMM, y – d MMM, y G"}
-                }
-                GyMd{
-                    G{"d/M/y GGGGG – d/M/y GGGGG"}
-                    M{"d/M/y – d/M/y GGGGG"}
-                    d{"d/M/y – d/M/y GGGGG"}
-                    y{"d/M/y – d/M/y GGGGG"}
-                }
                 H{
                     H{"HH – HH"}
                 }
@@ -1469,7 +1430,7 @@
         number{
             lenient{
                 "[\\-‒⁻₋−➖﹣-]",
-                "[,،٫、︐︑﹐﹑,、]",
+                "[,،٫⹁、︐︑﹐﹑,、]",
                 "[+⁺₊➕﬩﹢+]",
             }
         }
diff --git a/icu4c/source/data/locales/jv_ID.txt b/icu4c/source/data/locales/jv_ID.txt
index 4f653eb..a01da83 100644
--- a/icu4c/source/data/locales/jv_ID.txt
+++ b/icu4c/source/data/locales/jv_ID.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jv_ID{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ka.txt b/icu4c/source/data/locales/ka.txt
index 24493c9..b350334 100644
--- a/icu4c/source/data/locales/ka.txt
+++ b/icu4c/source/data/locales/ka.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ka{
     AuxExemplarCharacters{
         "[ⴀ ⴁ ⴂ ⴃ ⴄ ⴅ ⴆ ჱ ⴡ ⴇ ⴈ ⴉ ⴊ ⴋ ⴌ ჲ ⴢ ⴍ ⴎ ⴏ ⴐ ⴑ ⴒ ჳ ⴣ ⴓ ⴔ ⴕ ⴖ ⴗ ⴘ ⴙ ⴚ ⴛ ⴜ ⴝ ⴞ ჴ"
@@ -192,6 +193,7 @@
                 }
             }
             symbols{
+                approximatelySign{"≈"}
                 decimal{","}
                 exponential{"E"}
                 group{" "}
@@ -221,7 +223,6 @@
         native{"latn"}
         traditional{"geor"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ka_GE.txt b/icu4c/source/data/locales/ka_GE.txt
index 42abc84..4438389 100644
--- a/icu4c/source/data/locales/ka_GE.txt
+++ b/icu4c/source/data/locales/ka_GE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ka_GE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/kab.txt b/icu4c/source/data/locales/kab.txt
index 184992a..857fa52 100644
--- a/icu4c/source/data/locales/kab.txt
+++ b/icu4c/source/data/locales/kab.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kab{
     AuxExemplarCharacters{"[o v]"}
     ExemplarCharacters{"[a b c č d ḍ e ɛ f g ǧ ɣ h ḥ i j k l m n p q r ṛ s ṣ t ṭ u w x y z ẓ]"}
@@ -16,7 +17,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/kab_DZ.txt b/icu4c/source/data/locales/kab_DZ.txt
index 47544a8..9867841 100644
--- a/icu4c/source/data/locales/kab_DZ.txt
+++ b/icu4c/source/data/locales/kab_DZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kab_DZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/kam.txt b/icu4c/source/data/locales/kam.txt
index 43335a1..8c6b8b1 100644
--- a/icu4c/source/data/locales/kam.txt
+++ b/icu4c/source/data/locales/kam.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kam{
     ExemplarCharacters{"[a b c d e f g h i ĩ j k l m n o p q r s t u ũ v w y z]"}
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"}
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/kam_KE.txt b/icu4c/source/data/locales/kam_KE.txt
index e2fe382..5e6f5b8 100644
--- a/icu4c/source/data/locales/kam_KE.txt
+++ b/icu4c/source/data/locales/kam_KE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kam_KE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/kde.txt b/icu4c/source/data/locales/kde.txt
index 36639a4..0167ea4 100644
--- a/icu4c/source/data/locales/kde.txt
+++ b/icu4c/source/data/locales/kde.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kde{
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"}
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/kde_TZ.txt b/icu4c/source/data/locales/kde_TZ.txt
index b8be8fd..c7e76bb 100644
--- a/icu4c/source/data/locales/kde_TZ.txt
+++ b/icu4c/source/data/locales/kde_TZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kde_TZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/kea.txt b/icu4c/source/data/locales/kea.txt
index f47279c..6917c4c 100644
--- a/icu4c/source/data/locales/kea.txt
+++ b/icu4c/source/data/locales/kea.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kea{
     AuxExemplarCharacters{
         "[ª á à ă â å ä ã ā æ c ç é è ĕ ê ë ẽ ē í ì ĭ î ï ĩ ī {n\u0308} º ó ò ŏ ô ö õ"
@@ -141,7 +142,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -459,7 +459,7 @@
                         "kuarta-fera",
                         "kinta-fera",
                         "sesta-fera",
-                        "sabadu",
+                        "sábadu",
                     }
                 }
                 stand-alone{
diff --git a/icu4c/source/data/locales/kea_CV.txt b/icu4c/source/data/locales/kea_CV.txt
index be084c8..e2dac15 100644
--- a/icu4c/source/data/locales/kea_CV.txt
+++ b/icu4c/source/data/locales/kea_CV.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kea_CV{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/khq.txt b/icu4c/source/data/locales/khq.txt
index a1521e7..46bda01 100644
--- a/icu4c/source/data/locales/khq.txt
+++ b/icu4c/source/data/locales/khq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 khq{
     AuxExemplarCharacters{"[v]"}
     ExemplarCharacters{"[a ã b c d e ẽ f g h i j k l m n ɲ ŋ o õ p q r s š t u w x y z ž]"}
@@ -15,7 +16,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/khq_ML.txt b/icu4c/source/data/locales/khq_ML.txt
index d48e656..be5af37 100644
--- a/icu4c/source/data/locales/khq_ML.txt
+++ b/icu4c/source/data/locales/khq_ML.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 khq_ML{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ki.txt b/icu4c/source/data/locales/ki.txt
index fad3166..0a6b303 100644
--- a/icu4c/source/data/locales/ki.txt
+++ b/icu4c/source/data/locales/ki.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ki{
     AuxExemplarCharacters{"[f l p q s v x z]"}
     ExemplarCharacters{"[a b c d e g h i ĩ j k m n o r t u ũ w y]"}
@@ -12,7 +13,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ki_KE.txt b/icu4c/source/data/locales/ki_KE.txt
index 30a01d3..cceba40 100644
--- a/icu4c/source/data/locales/ki_KE.txt
+++ b/icu4c/source/data/locales/ki_KE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ki_KE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/kk.txt b/icu4c/source/data/locales/kk.txt
index 87c1523..292baf2 100644
--- a/icu4c/source/data/locales/kk.txt
+++ b/icu4c/source/data/locales/kk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kk{
     AuxExemplarCharacters{"[]"}
     Ellipsis{
@@ -221,7 +222,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/kk_KZ.txt b/icu4c/source/data/locales/kk_KZ.txt
index 7f12092..2fe2275 100644
--- a/icu4c/source/data/locales/kk_KZ.txt
+++ b/icu4c/source/data/locales/kk_KZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kk_KZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/kkj.txt b/icu4c/source/data/locales/kkj.txt
index 79cb646..60da6e7 100644
--- a/icu4c/source/data/locales/kkj.txt
+++ b/icu4c/source/data/locales/kkj.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kkj{
     AuxExemplarCharacters{"[q x z]"}
     ExemplarCharacters{
@@ -24,7 +25,6 @@
         }
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/kkj_CM.txt b/icu4c/source/data/locales/kkj_CM.txt
index fce1470..ccd925e 100644
--- a/icu4c/source/data/locales/kkj_CM.txt
+++ b/icu4c/source/data/locales/kkj_CM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kkj_CM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/kl.txt b/icu4c/source/data/locales/kl.txt
index 7f9bada..fd776f3 100644
--- a/icu4c/source/data/locales/kl.txt
+++ b/icu4c/source/data/locales/kl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kl{
     AuxExemplarCharacters{"[á â ã é ê ẽ í î ĩ ô õ ĸ ú û ũ]"}
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z æ ø å]"}
@@ -23,7 +24,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/kl_GL.txt b/icu4c/source/data/locales/kl_GL.txt
index 77653d7..20ea94c 100644
--- a/icu4c/source/data/locales/kl_GL.txt
+++ b/icu4c/source/data/locales/kl_GL.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kl_GL{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/kln.txt b/icu4c/source/data/locales/kln.txt
index 3d487c7..715fd96 100644
--- a/icu4c/source/data/locales/kln.txt
+++ b/icu4c/source/data/locales/kln.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kln{
     AuxExemplarCharacters{"[f q v x z]"}
     ExemplarCharacters{"[a b c d e g h i j k l m n o p r s t u w y]"}
@@ -12,7 +13,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/kln_KE.txt b/icu4c/source/data/locales/kln_KE.txt
index 831151d..9cf5363 100644
--- a/icu4c/source/data/locales/kln_KE.txt
+++ b/icu4c/source/data/locales/kln_KE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kln_KE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/km.txt b/icu4c/source/data/locales/km.txt
index ff6b909..6cb0048 100644
--- a/icu4c/source/data/locales/km.txt
+++ b/icu4c/source/data/locales/km.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 km{
     AuxExemplarCharacters{"[\u17B4\u17B5\u200B \u17CC \u17CE \u17CF \u17D1 ឝ ឞ]"}
     Ellipsis{
@@ -15,6 +16,10 @@
         "ន ប ផ ព ភ ម យ រ ឫ ឬ ល ឭ ឮ វ ស ហ ឡ អ {អា} ឥ ឦ ឧ {ឧក} ឩ ឪ ឯ ឰ ឱ ឲ ឳ ា \u17B7 "
         "\u17B8 \u17B9 \u17BA \u17BB \u17BC \u17BD ើ ឿ ៀ េ ែ ៃ ោ ៅ \u17C6 ះ \u17D2]"
     }
+    ExemplarCharactersIndex{
+        "[ក ខ គ ឃ ង ច ឆ ជ ឈ ញ ដ ឋ ឌ ឍ ណ ត ថ ទ ធ ន ប ផ ព ភ ម យ រ ឫ ឬ ល ឭ ឮ វ ស ហ ឡ អ ឥ"
+        " ឦ ឧ ឩ ឪ ឯ ឰ ឱ ឳ]"
+    }
     ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     ExemplarCharactersPunctuation{"[\\- ‑ , ៖ ! ? . ។ ៕ ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\} ៙ ៚]"}
     MoreInformation{"?"}
@@ -178,7 +183,6 @@
         minimumGroupingDigits{"1"}
         native{"khmr"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/km_KH.txt b/icu4c/source/data/locales/km_KH.txt
index b493f4a..811ca49 100644
--- a/icu4c/source/data/locales/km_KH.txt
+++ b/icu4c/source/data/locales/km_KH.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 km_KH{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/kn.txt b/icu4c/source/data/locales/kn.txt
index e4a758e..b6f008e 100644
--- a/icu4c/source/data/locales/kn.txt
+++ b/icu4c/source/data/locales/kn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kn{
     AuxExemplarCharacters{"[\u200C\u200D ೞ]"}
     Ellipsis{
@@ -240,7 +241,6 @@
         minimumGroupingDigits{"1"}
         native{"knda"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
diff --git a/icu4c/source/data/locales/kn_IN.txt b/icu4c/source/data/locales/kn_IN.txt
index 2facaaa..6e603ab 100644
--- a/icu4c/source/data/locales/kn_IN.txt
+++ b/icu4c/source/data/locales/kn_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kn_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ko.txt b/icu4c/source/data/locales/ko.txt
index 6bbb88b..b7d03a2 100644
--- a/icu4c/source/data/locales/ko.txt
+++ b/icu4c/source/data/locales/ko.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ko{
     AuxExemplarCharacters{
         "[ᄀ-ᄒ ᅡ-ᅵ ᆨ-ᇂ 丘 串 乃 久 乖 九 乞 乫 乾 亂 亘 交 京 仇 今 介 件 价 企 伋 伎 伽 佳 佶 侃 來 侊 供 係 俓 俱 個"
@@ -207,7 +208,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             availableFormats{
@@ -301,6 +301,52 @@
                 yyyyQQQQ{"r년(U년) QQQQ"}
             }
             cyclicNameSets{
+                dayParts{
+                    format{
+                        abbreviated{
+                            "자",
+                            "축",
+                            "인",
+                            "묘",
+                            "진",
+                            "사",
+                            "오",
+                            "미",
+                            "신",
+                            "유",
+                            "술",
+                            "해",
+                        }
+                        narrow{
+                            "자",
+                            "축",
+                            "인",
+                            "묘",
+                            "진",
+                            "사",
+                            "오",
+                            "미",
+                            "신",
+                            "유",
+                            "술",
+                            "해",
+                        }
+                        wide{
+                            "자",
+                            "축",
+                            "인",
+                            "묘",
+                            "진",
+                            "사",
+                            "오",
+                            "미",
+                            "신",
+                            "유",
+                            "술",
+                            "해",
+                        }
+                    }
+                }
                 solarTerms{
                     format{
                         abbreviated{
@@ -397,6 +443,24 @@
                         }
                     }
                 }
+                zodiacs{
+                    format{
+                        abbreviated{
+                            "쥐",
+                            "소",
+                            "호랑이",
+                            "토끼",
+                            "용",
+                            "뱀",
+                            "말",
+                            "양",
+                            "원숭이",
+                            "닭",
+                            "개",
+                            "돼지",
+                        }
+                    }
+                }
             }
             monthNames{
                 format{
@@ -916,10 +980,10 @@
                 Ehm{"E a h:mm"}
                 Ehms{"E a h:mm:ss"}
                 Gy{"G y년"}
-                GyMMM{"G y년 MMM월"}
-                GyMMMEEEEd{"G y년 MMM월 d일 EEEE"}
-                GyMMMEd{"G y년 MMM월 d일 (E)"}
-                GyMMMd{"G y년 MMM월 d일"}
+                GyMMM{"G y년 M월"}
+                GyMMMEEEEd{"G y년 M월 d일 EEEE"}
+                GyMMMEd{"G y년 M월 d일 (E)"}
+                GyMMMd{"G y년 M월 d일"}
                 H{"H시"}
                 HHmmss{"HH:mm:ss"}
                 Hm{"HH:mm"}
@@ -928,10 +992,10 @@
                 MEEEEd{"M. d. EEEE"}
                 MEd{"M. d. (E)"}
                 MMM{"LLL"}
-                MMMEEEEd{"MMM월 d일 EEEE"}
-                MMMEd{"MMM월 d일 (E)"}
-                MMMMd{"MMMM월 d일"}
-                MMMd{"MMM월 d일"}
+                MMMEEEEd{"M월 d일 EEEE"}
+                MMMEd{"M월 d일 (E)"}
+                MMMMd{"M월 d일"}
+                MMMd{"M월 d일"}
                 Md{"M. d."}
                 d{"d일"}
                 h{"a h시"}
@@ -943,11 +1007,11 @@
                 yyyyM{"G y. M."}
                 yyyyMEEEEd{"G y. M. d. EEEE"}
                 yyyyMEd{"G y. M. d. (E)"}
-                yyyyMMM{"G y년 MMM월"}
-                yyyyMMMEEEEd{"G y년 MMM월 d일 EEEE"}
-                yyyyMMMEd{"G y년 MMM월 d일 (E)"}
-                yyyyMMMM{"G y년 MMMM월"}
-                yyyyMMMd{"G y년 MMM월 d일"}
+                yyyyMMM{"G y년 M월"}
+                yyyyMMMEEEEd{"G y년 M월 d일 EEEE"}
+                yyyyMMMEd{"G y년 M월 d일 (E)"}
+                yyyyMMMM{"G y년 M월"}
+                yyyyMMMd{"G y년 M월 d일"}
                 yyyyMd{"G y. M. d."}
                 yyyyQQQ{"G y년 QQQ"}
                 yyyyQQQQ{"G y년 QQQQ"}
@@ -978,21 +1042,21 @@
                     y{"GGGGG y년 M월 d일 E요일 ~ y년 M월 d일 E요일"}
                 }
                 GyMMM{
-                    G{"G y년 MMM ~ G y년 MMM"}
-                    M{"G y년 MMM ~ y년 MMM"}
-                    y{"G y년 MMM ~ y년 MMM"}
+                    G{"G y년 M월 ~ G y년 M월"}
+                    M{"G y년 M월 ~ y년 M월"}
+                    y{"G y년 M월 ~ y년 M월"}
                 }
                 GyMMMEd{
-                    G{"G y년 MMM d일 E요일 ~ G y년 MMM d일 E요일"}
-                    M{"G y년 MMM d일 E요일 ~ MMM d일 E요일"}
-                    d{"G y년 MMM d일 e요일 – MMM d일 e요일"}
-                    y{"G y년 MMM d일 E요일 ~ y년 MMM d일 E요일"}
+                    G{"G y년 M월 d일 E요일 ~ G y년 M월 d일 E요일"}
+                    M{"G y년 M월 d일 E요일 ~ M월 d일 E요일"}
+                    d{"G y년 M월 d일 e요일 – M월 d일 e요일"}
+                    y{"G y년 M월 d일 E요일 ~ y년 M월 d일 E요일"}
                 }
                 GyMMMd{
-                    G{"G y년 MMM d일 ~ y년 MMM d일"}
-                    M{"G y년 MMM d일 ~ MMM d일"}
-                    d{"G y년 MMM d일 ~ d일"}
-                    y{"G y년 MMM d일 ~ MMM y년 d일"}
+                    G{"G y년 M월 d일 ~ y년 M월 d일"}
+                    M{"G y년 M월 d일 ~ M월 d일"}
+                    d{"G y년 M월 d일 ~ d일"}
+                    y{"G y년 M월 d일 ~ y년 M월 d일"}
                 }
                 GyMd{
                     G{"GGGGG y년 M월 d일 ~ GGGGG y년 M월 d일"}
@@ -1022,7 +1086,7 @@
                     d{"M. d (E) ~ M. d (E)"}
                 }
                 MMM{
-                    M{"MMM ~ MMM"}
+                    M{"M월 ~ M월"}
                 }
                 MMMEEEEd{
                     M{"M월 d일 EEEE ~ M월 d일 EEEE"}
diff --git a/icu4c/source/data/locales/ko_KP.txt b/icu4c/source/data/locales/ko_KP.txt
index 3accb54..fff263b 100644
--- a/icu4c/source/data/locales/ko_KP.txt
+++ b/icu4c/source/data/locales/ko_KP.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ko_KP{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ko_KR.txt b/icu4c/source/data/locales/ko_KR.txt
index f146ba5..c8d2aea 100644
--- a/icu4c/source/data/locales/ko_KR.txt
+++ b/icu4c/source/data/locales/ko_KR.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ko_KR{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/kok.txt b/icu4c/source/data/locales/kok.txt
index ca2c7c7..c979bcb 100644
--- a/icu4c/source/data/locales/kok.txt
+++ b/icu4c/source/data/locales/kok.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kok{
     AuxExemplarCharacters{"[\u200C\u200D]"}
     ExemplarCharacters{
@@ -190,7 +191,6 @@
         minimumGroupingDigits{"1"}
         native{"deva"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -200,7 +200,7 @@
                 "h:mm a",
                 "EEEE d MMMM y G",
                 "d MMMM y G",
-                "dd-MM-y G",
+                "d-M-y G",
                 "d-M-y GGGGG",
                 "{1} {0}",
                 "{1} {0}",
@@ -228,12 +228,12 @@
                 Hm{"HH:mm"}
                 Hms{"HH:mm:ss"}
                 M{"L"}
-                MEd{"E, dd-MM"}
+                MEd{"E, d-M"}
                 MMM{"LLL"}
                 MMMEd{"E d, MMM"}
                 MMMMd{"d MMMM"}
                 MMMd{"d MMM"}
-                Md{"dd-MM"}
+                Md{"d-M"}
                 d{"d"}
                 h{"h a"}
                 hm{"h:mm a"}
@@ -241,13 +241,13 @@
                 ms{"mm:ss"}
                 y{"y G"}
                 yyyy{"y G"}
-                yyyyM{"MM-y GGGG"}
+                yyyyM{"M-y GGGG"}
                 yyyyMEd{"E, d/M/y GGGGG"}
                 yyyyMMM{"MMM y G"}
                 yyyyMMMEd{"E, d MMM y G"}
                 yyyyMMMM{"MMMM y G"}
                 yyyyMMMd{"d MMM y G"}
-                yyyyMd{"d/M/y GGGGG"}
+                yyyyMd{"d-M-y GGGGG"}
                 yyyyQQQ{"QQQ y G"}
                 yyyyQQQQ{"QQQQ y G"}
             }
@@ -266,14 +266,14 @@
                     y{"y–y G"}
                 }
                 GyM{
-                    G{"MM-yGGGG – MM-y GGGG"}
-                    M{"MM-y GGGGG – MM y"}
-                    y{"MM-y GGGGG – MM-y"}
+                    G{"M-y GGGG – M-y GGGG"}
+                    M{"M-y GGGGG – M y"}
+                    y{"M-y GGGGG – M-y"}
                 }
                 GyMEd{
-                    G{"E, dd-MM-y GGGGG – E, dd-MM-y GGGGG"}
-                    M{"E,dd-MM-y GGGGG – E, dd-MM-y"}
-                    d{"E, dd-MM-Y GGGGG – E-dd-MM-y"}
+                    G{"E, d-M-y GGGGG – E, d-M-y GGGGG"}
+                    M{"E, d-M-y GGGGG – E, d-M-y"}
+                    d{"E, d-M-Y GGGGG – E-d-M-y"}
                     y{"E,dd-MM-y GGGGG – E,dd-MM-y"}
                 }
                 GyMMM{
@@ -294,17 +294,17 @@
                     y{"d MMM y G – d MMM y"}
                 }
                 GyMd{
-                    G{"dd-MM-y GGGGG – dd-MM-Y GGGGG"}
-                    M{"dd-MM-y GGGGG – dd-MM-y"}
-                    d{"dd-MM-y GGGGG – dd-MM-y"}
+                    G{"d-M-y GGGGG – d-M-Y GGGGG"}
+                    M{"d-M-y GGGGG – d-M-y"}
+                    d{"d-M-y GGGGG – d-M-y"}
                     y{"d-M-y – d-M-y GGGGG"}
                 }
                 M{
-                    M{"MM–MM"}
+                    M{"M–M"}
                 }
                 MEd{
-                    M{"E, dd-MM, E dd-MM"}
-                    d{"E, d/M – E, d/M"}
+                    M{"E, d-M, E d-M"}
+                    d{"E, d-M – E, d-M"}
                 }
                 MMM{
                     M{"MMM–MMM"}
@@ -318,8 +318,8 @@
                     d{"d–d MMM"}
                 }
                 Md{
-                    M{"d/M – d/M"}
-                    d{"d/M–d/M"}
+                    M{"d-M – d-M"}
+                    d{"d-M – d-M"}
                 }
                 d{
                     d{"d–d"}
@@ -329,7 +329,7 @@
                     y{"y–y G"}
                 }
                 yM{
-                    M{"M/y – M/y GGGGG"}
+                    M{"M-y – M-y GGGGG"}
                     y{"M/y – M/y GGGGG"}
                 }
                 yMEd{
@@ -356,8 +356,8 @@
                     y{"d, MMM y – d, MMM y G"}
                 }
                 yMd{
-                    M{"d/M/y – d/M/y GGGGG"}
-                    d{"d/M/y – d/M/y GGGGG"}
+                    M{"d-M-y – d-M-y GGGGG"}
+                    d{"d-M-y – d-M-y GGGGG"}
                     y{"d/M/y – d/M/y GGGGG"}
                 }
             }
@@ -382,7 +382,7 @@
                 "h:mm a",
                 "EEEE d MMMM y",
                 "d MMMM y",
-                "dd-MM-y",
+                "d-MMM-y",
                 "d-M-yy",
                 "{1} {0}",
                 "{1} {0}",
@@ -415,15 +415,15 @@
                 Hmsv{"HH:mm:ss v"}
                 Hmv{"HH:mm v"}
                 M{"L"}
-                MEd{"MM-dd, E"}
+                MEd{"d-M, E"}
                 MMM{"LLL"}
-                MMMEd{"MMM d, E"}
+                MMMEd{"E, d MMM"}
                 MMMMW{
                     other{"'week' W 'of' MMMM"}
                 }
-                MMMMd{"MMMM d"}
+                MMMMd{"d MMMM"}
                 MMMd{"MMM d"}
-                Md{"MM-dd"}
+                Md{"d-M"}
                 d{"d"}
                 h{"h a"}
                 hm{"h:mm a"}
@@ -432,13 +432,13 @@
                 hmv{"h:mm a v"}
                 ms{"mm:ss"}
                 y{"y"}
-                yM{"y-MM"}
+                yM{"M-y"}
                 yMEd{"d-M-y, E"}
                 yMMM{"y MMM"}
                 yMMMEd{"y MMM d, E"}
                 yMMMM{"MMMM, y"}
                 yMMMd{"y MMM d"}
-                yMd{"y-MM-dd"}
+                yMd{"d-M-y"}
                 yQQQ{"y QQQ"}
                 yQQQQ{"y QQQQ"}
                 yw{
@@ -572,15 +572,15 @@
                     y{"G y–y"}
                 }
                 GyM{
-                    G{"GGGGG y-MM – GGGGG y-MM"}
-                    M{"GGGGG y-MM – y-MM"}
-                    y{"GGGGG y-MM – y-MM"}
+                    G{"GGGGG M-y – GGGGG M-y"}
+                    M{"GGGGG M-y – M-y"}
+                    y{"GGGGG M-y – M-y"}
                 }
                 GyMEd{
-                    G{"GGGGG y-MM-dd, E – GGGGG y-MM-dd, E"}
-                    M{"GGGGG y-MM-dd, E – y-MM-dd, E"}
-                    d{"GGGGG y-MM-dd, E – y-MM-dd, E"}
-                    y{"GGGGG y-MM-dd, E – y-MM-dd, E"}
+                    G{"GGGGG d-M-y, E – GGGGG d-M-y, E"}
+                    M{"GGGGG d-M-y, E – d-M-y, E"}
+                    d{"GGGGG d-M-y, E – d-M-y, E"}
+                    y{"GGGGG d-M-y, E – d-M-y, E"}
                 }
                 GyMMM{
                     G{"G y MMM – G y MMM"}
@@ -600,10 +600,10 @@
                     y{"G y MMM d – y MMM d"}
                 }
                 GyMd{
-                    G{"GGGGG y-MM-dd – GGGGG y-MM-dd"}
-                    M{"GGGGG y-MM-dd – y-MM-dd"}
-                    d{"GGGGG y-MM-dd – y-MM-dd"}
-                    y{"GGGGG y-MM-dd – y-MM-dd"}
+                    G{"GGGGG d-M-y – GGGGG d-M-y"}
+                    M{"GGGGG d-M-y – d-M-y"}
+                    d{"GGGGG d-M-y – d-M-y"}
+                    y{"GGGGG d-M-y – d-M-y"}
                 }
                 H{
                     H{"HH–HH"}
@@ -620,11 +620,11 @@
                     H{"HH–HH v"}
                 }
                 M{
-                    M{"MM–MM"}
+                    M{"M–M"}
                 }
                 MEd{
-                    M{"MM-dd, E – MM-dd, E"}
-                    d{"MM-dd, E – MM-dd, E"}
+                    M{"d-M, E – d-M, E"}
+                    d{"d-M, E – d-M, E"}
                 }
                 MMM{
                     M{"MMM – MMM"}
@@ -638,8 +638,8 @@
                     d{"MMM d–d"}
                 }
                 Md{
-                    M{"dd-MM –dd-MM"}
-                    d{"dd-MM –dd-MM"}
+                    M{"d-M –d-M"}
+                    d{"d-M –d-M"}
                 }
                 d{
                     d{"d–d"}
@@ -667,13 +667,13 @@
                     y{"y–y"}
                 }
                 yM{
-                    M{"MM-y – MM-y"}
-                    y{"MM-y – MM-y"}
+                    M{"M-y – M-y"}
+                    y{"M-y – M-y"}
                 }
                 yMEd{
-                    M{"dd-MM-y, E – dd-MM-y, E"}
-                    d{"dd-MM-y, E – dd-MM-y, E"}
-                    y{"dd-MM-y, E – dd-MM-y, E"}
+                    M{"d-M-y, E – d-M-y, E"}
+                    d{"d-M-y, E – d-M-y, E"}
+                    y{"d-M-y, E – d-M-y, E"}
                 }
                 yMMM{
                     M{"MMM–MMM y"}
@@ -694,9 +694,9 @@
                     y{"d MMM y – d MMM y"}
                 }
                 yMd{
-                    M{"dd-MM-y – dd-MM-y"}
-                    d{"dd-MM-y – dd-MM-y"}
-                    y{"dd-MM-y – dd-MM-y"}
+                    M{"d-M-y – d-M-y"}
+                    d{"d-M-y – d-M-y"}
+                    y{"d-M-y – d-M-y"}
                 }
             }
             monthNames{
@@ -705,7 +705,7 @@
                         "जानेवारी",
                         "फेब्रुवारी",
                         "मार्च",
-                        "एप्रिल",
+                        "एप्रील",
                         "मे",
                         "जून",
                         "जुलय",
@@ -733,7 +733,7 @@
                         "जानेवारी",
                         "फेब्रुवारी",
                         "मार्च",
-                        "एप्रिल",
+                        "एप्रील",
                         "मे",
                         "जून",
                         "जुलय",
@@ -777,7 +777,7 @@
                         "जानेवारी",
                         "फेब्रुवारी",
                         "मार्च",
-                        "एप्रिल",
+                        "एप्रील",
                         "मे",
                         "जून",
                         "जुलय",
@@ -1602,10 +1602,14 @@
         or-narrow{
             2{"{0} वा {1}"}
             end{"{0}, वा {1}"}
+            middle{"{0}, {1}"}
+            start{"{0}, {1}"}
         }
         or-short{
             2{"{0} वा {1}"}
             end{"{0}, वा {1}"}
+            middle{"{0}, {1}"}
+            start{"{0}, {1}"}
         }
         standard{
             2{"{0}, {1}"}
@@ -1615,15 +1619,34 @@
         }
         standard-narrow{
             2{"{0}, {1}"}
+            end{"{0}, {1}"}
+            middle{"{0}, {1}"}
+            start{"{0}, {1}"}
         }
         standard-short{
             2{"{0} & {1}"}
+            end{"{0}, & {1}"}
+            middle{"{0}, {1}"}
+            start{"{0}, {1}"}
+        }
+        unit{
+            2{"{0}, {1}"}
+            end{"{0}, {1}"}
+            middle{"{0}, {1}"}
+            start{"{0}, {1}"}
         }
         unit-narrow{
+            2{"{0} {1}"}
             end{"{0} {1}"}
             middle{"{0} {1}"}
             start{"{0} {1}"}
         }
+        unit-short{
+            2{"{0}, {1}"}
+            end{"{0}, {1}"}
+            middle{"{0}, {1}"}
+            start{"{0}, {1}"}
+        }
     }
     measurementSystemNames{
         UK{"युके"}
diff --git a/icu4c/source/data/locales/kok_IN.txt b/icu4c/source/data/locales/kok_IN.txt
index 215e6b1..5f18863 100644
--- a/icu4c/source/data/locales/kok_IN.txt
+++ b/icu4c/source/data/locales/kok_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kok_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ks.txt b/icu4c/source/data/locales/ks.txt
index d8cad3e..293d674 100644
--- a/icu4c/source/data/locales/ks.txt
+++ b/icu4c/source/data/locales/ks.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks{
     AuxExemplarCharacters{"[\u200E\u200F \u064E \u064F \u0650 \u0654 \u0655 \u065F \u0656 \u0657]"}
     ExemplarCharacters{
@@ -36,7 +37,6 @@
         }
         native{"arabext"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ks_Arab.txt b/icu4c/source/data/locales/ks_Arab.txt
index aafa093..f3d2206 100644
--- a/icu4c/source/data/locales/ks_Arab.txt
+++ b/icu4c/source/data/locales/ks_Arab.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks_Arab{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ks_Arab_IN.txt b/icu4c/source/data/locales/ks_Arab_IN.txt
index b70e849..6e9470e 100644
--- a/icu4c/source/data/locales/ks_Arab_IN.txt
+++ b/icu4c/source/data/locales/ks_Arab_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks_Arab_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ks_IN.txt b/icu4c/source/data/locales/ks_IN.txt
index fd8b52d..bd1a225 100644
--- a/icu4c/source/data/locales/ks_IN.txt
+++ b/icu4c/source/data/locales/ks_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks_IN{
     "%%ALIAS"{"ks_Arab_IN"}
 }
diff --git a/icu4c/source/data/locales/ksb.txt b/icu4c/source/data/locales/ksb.txt
index 03810d2..9106a6a 100644
--- a/icu4c/source/data/locales/ksb.txt
+++ b/icu4c/source/data/locales/ksb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksb{
     AuxExemplarCharacters{"[q r x]"}
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p s t u v w y z]"}
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ksb_TZ.txt b/icu4c/source/data/locales/ksb_TZ.txt
index 89ccd50..4868041 100644
--- a/icu4c/source/data/locales/ksb_TZ.txt
+++ b/icu4c/source/data/locales/ksb_TZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksb_TZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ksf.txt b/icu4c/source/data/locales/ksf.txt
index 24ab9db..5210ccc 100644
--- a/icu4c/source/data/locales/ksf.txt
+++ b/icu4c/source/data/locales/ksf.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksf{
     AuxExemplarCharacters{"[q x]"}
     ExemplarCharacters{
@@ -20,7 +21,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ksf_CM.txt b/icu4c/source/data/locales/ksf_CM.txt
index dede4a0..b424f3c 100644
--- a/icu4c/source/data/locales/ksf_CM.txt
+++ b/icu4c/source/data/locales/ksf_CM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksf_CM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ksh.txt b/icu4c/source/data/locales/ksh.txt
index acdc8c6..287689d 100644
--- a/icu4c/source/data/locales/ksh.txt
+++ b/icu4c/source/data/locales/ksh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksh{
     AuxExemplarCharacters{"[á à ă â ã ā ç é è ĕ ê ē ğ í ì ĭ î ï ī ij ı ł ñ ó ò ŏ ô ø ō ú ù ŭ û ū ÿ]"}
     ExemplarCharacters{"[a å ä æ b c d e ë ė f g h i j k l m n o ö œ p q r s ß t u ů ü v w x y z]"}
@@ -161,7 +162,6 @@
         }
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ksh_DE.txt b/icu4c/source/data/locales/ksh_DE.txt
index 09f8ae4..6240c6b 100644
--- a/icu4c/source/data/locales/ksh_DE.txt
+++ b/icu4c/source/data/locales/ksh_DE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksh_DE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ku.txt b/icu4c/source/data/locales/ku.txt
index 1927899..bc0ac32 100644
--- a/icu4c/source/data/locales/ku.txt
+++ b/icu4c/source/data/locales/ku.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ku{
     AuxExemplarCharacters{"[á à ă â å ä ã ā æ è ĕ ë ē é ì ĭ ï ī í ñ ó ò ŏ ô ø ō œ ß ù ŭ ū ú ÿ]"}
     Ellipsis{
@@ -50,7 +51,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -604,7 +604,7 @@
         number{
             lenient{
                 "[\\-‒⁻₋−➖﹣-]",
-                "[,،٫、︐︑﹐﹑,、]",
+                "[,،٫⹁、︐︑﹐﹑,、]",
                 "[+⁺₊➕﬩﹢+]",
             }
         }
diff --git a/icu4c/source/data/locales/ku_TR.txt b/icu4c/source/data/locales/ku_TR.txt
index 9c1dad6..cd79183 100644
--- a/icu4c/source/data/locales/ku_TR.txt
+++ b/icu4c/source/data/locales/ku_TR.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ku_TR{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/kw.txt b/icu4c/source/data/locales/kw.txt
index 1a77d60..4a3f436 100644
--- a/icu4c/source/data/locales/kw.txt
+++ b/icu4c/source/data/locales/kw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kw{
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}
     NumberElements{
@@ -9,7 +10,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             AmPmMarkers{
diff --git a/icu4c/source/data/locales/kw_GB.txt b/icu4c/source/data/locales/kw_GB.txt
index 9498880..9e0becb 100644
--- a/icu4c/source/data/locales/kw_GB.txt
+++ b/icu4c/source/data/locales/kw_GB.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kw_GB{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ky.txt b/icu4c/source/data/locales/ky.txt
index 02bfdb1..d82c9b0 100644
--- a/icu4c/source/data/locales/ky.txt
+++ b/icu4c/source/data/locales/ky.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ky{
     AuxExemplarCharacters{"[в ф ц щ ь]"}
     Ellipsis{
@@ -214,7 +215,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -841,7 +841,7 @@
         }
     }
     characterLabel{
-        activities{"аракеттер"}
+        activities{"аракет"}
         african_scripts{"африка жазуулары"}
         american_scripts{"америка жазуулары"}
         animal{"жаныбар"}
@@ -851,10 +851,10 @@
         box_drawing{"кутуча чийүү"}
         braille{"Брайль"}
         building{"имарат"}
-        bullets_stars{"маркерлер/жылдызчалар"}
+        bullets_stars{"маркер же жылдызча"}
         consonantal_jamo{"үнсүз жамо"}
         currency_symbols{"валюта белгилери"}
-        dash_connector{"тире/байламта"}
+        dash_connector{"тире же байламта"}
         digits{"сандар"}
         dingbats{"полиграфиялык белгилер"}
         divination_symbols{"төлгө белгиси"}
@@ -869,9 +869,9 @@
         food_drink{"тамак-аш жана суусундуктар"}
         format{"формат"}
         format_whitespace{"формат жана боштук"}
-        full_width_form_variant{"Толук жазы формасынын варианттары"}
+        full_width_form_variant{"толук жазы формасынын варианттары"}
         geometric_shapes{"геометриялык фигуралар"}
-        half_width_form_variant{"Жарым жазы формасынын варианттары"}
+        half_width_form_variant{"жарым жазы формасынын варианттары"}
         han_characters{"Хань белгилери"}
         han_radicals{"Хань уңгулары"}
         hanja{"Ханья"}
@@ -1764,10 +1764,16 @@
     listPattern{
         or{
             2{"{0} же {1}"}
-            end{"{0}, же {1}"}
+            end{"{0} же {1}"}
             middle{"{0}, {1}"}
             start{"{0}, {1}"}
         }
+        or-narrow{
+            end{"{0} же {1}"}
+        }
+        or-short{
+            end{"{0} же {1}"}
+        }
         standard{
             2{"{0} жана {1}"}
             end{"{0} жана {1}"}
diff --git a/icu4c/source/data/locales/ky_KG.txt b/icu4c/source/data/locales/ky_KG.txt
index 2dd91eb..523eec0 100644
--- a/icu4c/source/data/locales/ky_KG.txt
+++ b/icu4c/source/data/locales/ky_KG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ky_KG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/lag.txt b/icu4c/source/data/locales/lag.txt
index 903125d..9b1a2f8 100644
--- a/icu4c/source/data/locales/lag.txt
+++ b/icu4c/source/data/locales/lag.txt
@@ -1,9 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lag{
     ExemplarCharacters{"[a á b c d e é f g h i í ɨ j k l m n o ó p q r s t u ú ʉ v w x y z]"}
     ExemplarCharactersIndex{"[A B C D E F G H I Ɨ J K L M N O P Q R S T U Ʉ V W X Y Z]"}
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/lag_TZ.txt b/icu4c/source/data/locales/lag_TZ.txt
index 8f46d66..2fe5079 100644
--- a/icu4c/source/data/locales/lag_TZ.txt
+++ b/icu4c/source/data/locales/lag_TZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lag_TZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/lb.txt b/icu4c/source/data/locales/lb.txt
index c91831d..8d38b23 100644
--- a/icu4c/source/data/locales/lb.txt
+++ b/icu4c/source/data/locales/lb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lb{
     AuxExemplarCharacters{
         "[á à ă â å ã ā æ ç è ĕ ê ē ğ í ì ĭ î ï İ ī ı ñ ó ò ŏ ô ö ø ō œ ş ß ú ù ŭ û ü"
@@ -156,7 +157,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
diff --git a/icu4c/source/data/locales/lb_LU.txt b/icu4c/source/data/locales/lb_LU.txt
index f9a89f3..7706eed 100644
--- a/icu4c/source/data/locales/lb_LU.txt
+++ b/icu4c/source/data/locales/lb_LU.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lb_LU{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/lg.txt b/icu4c/source/data/locales/lg.txt
index 381f65a..8afc697 100644
--- a/icu4c/source/data/locales/lg.txt
+++ b/icu4c/source/data/locales/lg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lg{
     AuxExemplarCharacters{"[h q x]"}
     ExemplarCharacters{"[a b c d e f g i j k l m n {ny} ŋ o p r s t u v w y z]"}
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/lg_UG.txt b/icu4c/source/data/locales/lg_UG.txt
index d91e446..63f26f4 100644
--- a/icu4c/source/data/locales/lg_UG.txt
+++ b/icu4c/source/data/locales/lg_UG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lg_UG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/lkt.txt b/icu4c/source/data/locales/lkt.txt
index d2d0edc..21263da 100644
--- a/icu4c/source/data/locales/lkt.txt
+++ b/icu4c/source/data/locales/lkt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lkt{
     AuxExemplarCharacters{"[c d f {ȟʼ} j q r {sʼ} {šʼ} v x]"}
     ExemplarCharacters{
@@ -9,7 +10,6 @@
     ExemplarCharactersIndex{"[A B Č E G Ǧ H Ȟ I K L M N Ŋ O P S Š T U W Y Z Ž]"}
     ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . \u0022 “ ” ( ) \\[ \\] @ * / \\& #]"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/lkt_US.txt b/icu4c/source/data/locales/lkt_US.txt
index d4aea4a..5a26d85 100644
--- a/icu4c/source/data/locales/lkt_US.txt
+++ b/icu4c/source/data/locales/lkt_US.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lkt_US{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ln.txt b/icu4c/source/data/locales/ln.txt
index 4dd12bf..001f592 100644
--- a/icu4c/source/data/locales/ln.txt
+++ b/icu4c/source/data/locales/ln.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ln{
     AuxExemplarCharacters{"[j q x]"}
     ExemplarCharacters{
@@ -24,7 +25,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ln_AO.txt b/icu4c/source/data/locales/ln_AO.txt
index 1a0486f..329725e 100644
--- a/icu4c/source/data/locales/ln_AO.txt
+++ b/icu4c/source/data/locales/ln_AO.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ln_AO{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ln_CD.txt b/icu4c/source/data/locales/ln_CD.txt
index f433b57..e4a4b8b 100644
--- a/icu4c/source/data/locales/ln_CD.txt
+++ b/icu4c/source/data/locales/ln_CD.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ln_CD{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ln_CF.txt b/icu4c/source/data/locales/ln_CF.txt
index aac62c4..437ec2c 100644
--- a/icu4c/source/data/locales/ln_CF.txt
+++ b/icu4c/source/data/locales/ln_CF.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ln_CF{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ln_CG.txt b/icu4c/source/data/locales/ln_CG.txt
index b8b8344..9d07a2b 100644
--- a/icu4c/source/data/locales/ln_CG.txt
+++ b/icu4c/source/data/locales/ln_CG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ln_CG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/lo.txt b/icu4c/source/data/locales/lo.txt
index f412218..c4d57c7 100644
--- a/icu4c/source/data/locales/lo.txt
+++ b/icu4c/source/data/locales/lo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lo{
     AuxExemplarCharacters{"[\u200B ໐ ໑ ໒ ໓ ໔ ໕ ໖ ໗ ໘ ໙]"}
     Ellipsis{
@@ -249,12 +250,11 @@
                 nan{"ບໍ່​ແມ່ນ​ໂຕ​ເລກ"}
                 perMille{"‰"}
                 percentSign{"%"}
-                superscriptingExponent{"×"}
             }
         }
         minimalPairs{
             ordinal{
-                one{"ລ້ຽວຂວາທຳອິດ."}
+                one{"ລ້ຽວຂວາໂຕທີ {0}."}
                 other{"ລ້ຽວຂວາທີ {0}."}
             }
             plural{
@@ -263,8 +263,14 @@
         }
         native{"laoo"}
     }
-    Version{"37"}
     calendar{
+        buddhist{
+            eras{
+                abbreviated{
+                    "ພ.ສ.",
+                }
+            }
+        }
         chinese{
             DateTimePatterns{
                 "H ໂມງ m ນາທີ ss ວິນາທີ zzzz",
@@ -2088,7 +2094,7 @@
         sport{"ກິລາ"}
         symbols{"ສັນຍາລັກ"}
         technical_symbols{"ສັນຍາລັກທາງເຕັກນິກ"}
-        tone_marks{"ັວັນນະຍຸດ"}
+        tone_marks{"ວັນນະຍຸດ"}
         travel{"ທ່ອງທ່ຽວ"}
         travel_places{"ທ່ອງທ່ຽວ ແລະ ສະຖານທີ່ຕ່າງໆ"}
         upwards_arrows{"ລູກສອນຊີ້ຂຶ້ນເທິງ"}
@@ -2780,9 +2786,12 @@
             end{"{0}, {1}"}
             start{"{0}, {1}"}
         }
+        standard-narrow{
+            end{"{0}, {1}"}
+        }
         standard-short{
             2{"{0} ແລະ {1}"}
-            end{"{0}, {1}"}
+            end{"{0} ແລະ {1}"}
             middle{"{0}, {1}"}
             start{"{0}, {1}"}
         }
diff --git a/icu4c/source/data/locales/lo_LA.txt b/icu4c/source/data/locales/lo_LA.txt
index 3ae3c66..a9c753d 100644
--- a/icu4c/source/data/locales/lo_LA.txt
+++ b/icu4c/source/data/locales/lo_LA.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lo_LA{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/lrc.txt b/icu4c/source/data/locales/lrc.txt
index ce98b12..eeb19a6 100644
--- a/icu4c/source/data/locales/lrc.txt
+++ b/icu4c/source/data/locales/lrc.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lrc{
     AuxExemplarCharacters{
         "[\u200B\u200C\u200D\u200E\u200F \u064B \u064C \u064D \u064E \u064F \u0650 "
@@ -36,7 +37,6 @@
         }
         native{"arabext"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/lrc_IQ.txt b/icu4c/source/data/locales/lrc_IQ.txt
index 3538906..92c341d 100644
--- a/icu4c/source/data/locales/lrc_IQ.txt
+++ b/icu4c/source/data/locales/lrc_IQ.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lrc_IQ{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/lrc_IR.txt b/icu4c/source/data/locales/lrc_IR.txt
index b10e358..24136e0 100644
--- a/icu4c/source/data/locales/lrc_IR.txt
+++ b/icu4c/source/data/locales/lrc_IR.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lrc_IR{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/lt.txt b/icu4c/source/data/locales/lt.txt
index 66cda50..39c4986 100644
--- a/icu4c/source/data/locales/lt.txt
+++ b/icu4c/source/data/locales/lt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lt{
     AuxExemplarCharacters{
         "[á à ã {ą\u0301} {ą\u0303} {ch} {dz} {dž} é è ẽ {ę\u0301} {ę\u0303} {ė"
@@ -264,6 +265,7 @@
                 }
             }
             symbols{
+                approximatelySign{"∼"}
                 decimal{","}
                 exponential{"×10^"}
                 group{" "}
@@ -292,7 +294,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
diff --git a/icu4c/source/data/locales/lt_LT.txt b/icu4c/source/data/locales/lt_LT.txt
index 52c3f08..133c8e5 100644
--- a/icu4c/source/data/locales/lt_LT.txt
+++ b/icu4c/source/data/locales/lt_LT.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lt_LT{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/lu.txt b/icu4c/source/data/locales/lu.txt
index a0df6a0..c4fb7a8 100644
--- a/icu4c/source/data/locales/lu.txt
+++ b/icu4c/source/data/locales/lu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lu{
     AuxExemplarCharacters{"[g r x]"}
     ExemplarCharacters{
@@ -20,7 +21,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/lu_CD.txt b/icu4c/source/data/locales/lu_CD.txt
index 3973482..3be2b06 100644
--- a/icu4c/source/data/locales/lu_CD.txt
+++ b/icu4c/source/data/locales/lu_CD.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lu_CD{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/luo.txt b/icu4c/source/data/locales/luo.txt
index 3f6d317..1bb8845 100644
--- a/icu4c/source/data/locales/luo.txt
+++ b/icu4c/source/data/locales/luo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 luo{
     AuxExemplarCharacters{"[q x z]"}
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p r s t u v w y]"}
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/luo_KE.txt b/icu4c/source/data/locales/luo_KE.txt
index eb69e30..5656fa7 100644
--- a/icu4c/source/data/locales/luo_KE.txt
+++ b/icu4c/source/data/locales/luo_KE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 luo_KE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/luy.txt b/icu4c/source/data/locales/luy.txt
index d10739b..415e393 100644
--- a/icu4c/source/data/locales/luy.txt
+++ b/icu4c/source/data/locales/luy.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 luy{
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"}
@@ -10,7 +11,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/luy_KE.txt b/icu4c/source/data/locales/luy_KE.txt
index 90cd0b3..fa40efe 100644
--- a/icu4c/source/data/locales/luy_KE.txt
+++ b/icu4c/source/data/locales/luy_KE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 luy_KE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/lv.txt b/icu4c/source/data/locales/lv.txt
index f8cd0e9..05ca80f 100644
--- a/icu4c/source/data/locales/lv.txt
+++ b/icu4c/source/data/locales/lv.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lv{
     AuxExemplarCharacters{"[y ō q ŗ w x]"}
     Ellipsis{
@@ -251,7 +252,6 @@
         minimumGroupingDigits{"2"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -767,7 +767,7 @@
                 }
                 stand-alone{
                     abbreviated{
-                        afternoon1{"pēcpusdiena"}
+                        afternoon1{"pēcpusd."}
                         am{"priekšp."}
                         evening1{"vakars"}
                         midnight{"pusnakts"}
@@ -1351,7 +1351,7 @@
         currency_symbols{"valūtu simboli"}
         dash_connector{"svītras un savienotāji"}
         digits{"cipari"}
-        dingbats{"drukas ornamenti"}
+        dingbats{"dekorzīme"}
         divination_symbols{"okultie simboli"}
         downwards_arrows{"lejupvērstās bultiņas"}
         downwards_upwards_arrows{"lejupvērstās un augšupvērstās bultiņas"}
@@ -1647,7 +1647,7 @@
             }
         }
         minute-short{
-            dn{"min."}
+            dn{"min"}
             relativeTime{
                 future{
                     one{"pēc {0} min."}
diff --git a/icu4c/source/data/locales/lv_LV.txt b/icu4c/source/data/locales/lv_LV.txt
index aeafcf2..9a76f9a 100644
--- a/icu4c/source/data/locales/lv_LV.txt
+++ b/icu4c/source/data/locales/lv_LV.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lv_LV{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/mai.txt b/icu4c/source/data/locales/mai.txt
index d02242e..5843b89 100644
--- a/icu4c/source/data/locales/mai.txt
+++ b/icu4c/source/data/locales/mai.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mai{
     AuxExemplarCharacters{"[अ {अ\u0902} {अः} आ इ ई उ ऊ ऋ ऌ ॡ ए ऐ ओ औ]"}
     ExemplarCharacters{
@@ -24,7 +25,6 @@
         }
         native{"deva"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/mai_IN.txt b/icu4c/source/data/locales/mai_IN.txt
index c366fd0..bd25db3 100644
--- a/icu4c/source/data/locales/mai_IN.txt
+++ b/icu4c/source/data/locales/mai_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mai_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/mas.txt b/icu4c/source/data/locales/mas.txt
index b831f46..51b369d 100644
--- a/icu4c/source/data/locales/mas.txt
+++ b/icu4c/source/data/locales/mas.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mas{
     AuxExemplarCharacters{"[f q v x z]"}
     ExemplarCharacters{
@@ -15,7 +16,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/mas_KE.txt b/icu4c/source/data/locales/mas_KE.txt
index 7c5d252..b1fbc0f 100644
--- a/icu4c/source/data/locales/mas_KE.txt
+++ b/icu4c/source/data/locales/mas_KE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mas_KE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/mas_TZ.txt b/icu4c/source/data/locales/mas_TZ.txt
index fab4ecf..52459c1 100644
--- a/icu4c/source/data/locales/mas_TZ.txt
+++ b/icu4c/source/data/locales/mas_TZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mas_TZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/mer.txt b/icu4c/source/data/locales/mer.txt
index e9b4592..6b47f30 100644
--- a/icu4c/source/data/locales/mer.txt
+++ b/icu4c/source/data/locales/mer.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mer{
     ExemplarCharacters{"[a b c d e f g h i ĩ j k l m n o p q r s t u ũ v w x y z]"}
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"}
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/mer_KE.txt b/icu4c/source/data/locales/mer_KE.txt
index 7eb6919..58f75f7 100644
--- a/icu4c/source/data/locales/mer_KE.txt
+++ b/icu4c/source/data/locales/mer_KE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mer_KE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/mfe.txt b/icu4c/source/data/locales/mfe.txt
index 508d7c5..67c863b 100644
--- a/icu4c/source/data/locales/mfe.txt
+++ b/icu4c/source/data/locales/mfe.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mfe{
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p r s t u v w x y z]"}
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P R S T U V W X Y Z]"}
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/mfe_MU.txt b/icu4c/source/data/locales/mfe_MU.txt
index ef85ca7..347ef60 100644
--- a/icu4c/source/data/locales/mfe_MU.txt
+++ b/icu4c/source/data/locales/mfe_MU.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mfe_MU{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/mg.txt b/icu4c/source/data/locales/mg.txt
index bf7dee5..3367be1 100644
--- a/icu4c/source/data/locales/mg.txt
+++ b/icu4c/source/data/locales/mg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mg{
     AuxExemplarCharacters{"[c q u w x]"}
     ExemplarCharacters{"[a à â b d e é è ê ë f g h i ì î ï j k l m n ñ o ô p r s t v y z]"}
@@ -33,7 +34,6 @@
         }
         minimumGroupingDigits{"1"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/mg_MG.txt b/icu4c/source/data/locales/mg_MG.txt
index 2d0c286..7ce09fc 100644
--- a/icu4c/source/data/locales/mg_MG.txt
+++ b/icu4c/source/data/locales/mg_MG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mg_MG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/mgh.txt b/icu4c/source/data/locales/mgh.txt
index 808d4f2..b7ef4d1 100644
--- a/icu4c/source/data/locales/mgh.txt
+++ b/icu4c/source/data/locales/mgh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mgh{
     AuxExemplarCharacters{"[q x]"}
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p r s t u v w y z]"}
@@ -13,7 +14,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/mgh_MZ.txt b/icu4c/source/data/locales/mgh_MZ.txt
index 69ec065..f0cdaea 100644
--- a/icu4c/source/data/locales/mgh_MZ.txt
+++ b/icu4c/source/data/locales/mgh_MZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mgh_MZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/mgo.txt b/icu4c/source/data/locales/mgo.txt
index 05d9d09..7391d0b 100644
--- a/icu4c/source/data/locales/mgo.txt
+++ b/icu4c/source/data/locales/mgo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mgo{
     AuxExemplarCharacters{"[c h l q v x]"}
     Ellipsis{
@@ -39,7 +40,6 @@
         }
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/mgo_CM.txt b/icu4c/source/data/locales/mgo_CM.txt
index dc3a120..48ccfc8 100644
--- a/icu4c/source/data/locales/mgo_CM.txt
+++ b/icu4c/source/data/locales/mgo_CM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mgo_CM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/mi.txt b/icu4c/source/data/locales/mi.txt
index 4d2d4d9..e272a43 100644
--- a/icu4c/source/data/locales/mi.txt
+++ b/icu4c/source/data/locales/mi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mi{
     AuxExemplarCharacters{"[b c d f g j l q s v x y z]"}
     ExemplarCharacters{"[a ā e ē h i ī k m n {ng} o ō p r t u ū w {wh}]"}
@@ -149,7 +150,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -266,6 +266,8 @@
                 E{"ccc"}
                 EBhm{"E h:mm B"}
                 EBhms{"E h:mm:ss B"}
+                EHm{"E HH:mm"}
+                EHms{"E HH:mm:ss"}
                 Ed{"E, d"}
                 Ehm{"E h:mm a"}
                 Ehms{"E h:mm:ss a"}
@@ -273,6 +275,11 @@
                 GyMMM{"MMM y G"}
                 GyMMMEd{"E, d MMM y G"}
                 GyMMMd{"d MMM y G"}
+                H{"HH"}
+                Hm{"HH:mm"}
+                Hms{"HH:mm:ss"}
+                Hmsv{"HH:mm:ss v"}
+                Hmv{"HH:mm v"}
                 M{"L"}
                 MEd{"E, dd-MM"}
                 MMM{"LLL"}
@@ -289,6 +296,7 @@
                 hms{"h:mm:ss a"}
                 hmsv{"h:mm:ss a v"}
                 hmv{"h:mm a v"}
+                ms{"mm:ss"}
                 y{"y"}
                 yM{"MM-y"}
                 yMEd{"E, dd-MM-y"}
diff --git a/icu4c/source/data/locales/mi_NZ.txt b/icu4c/source/data/locales/mi_NZ.txt
index dd6be29..efbb148 100644
--- a/icu4c/source/data/locales/mi_NZ.txt
+++ b/icu4c/source/data/locales/mi_NZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mi_NZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/mk.txt b/icu4c/source/data/locales/mk.txt
index e600263..c1866cd 100644
--- a/icu4c/source/data/locales/mk.txt
+++ b/icu4c/source/data/locales/mk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mk{
     AuxExemplarCharacters{"[ѐ ѝ]"}
     Ellipsis{
@@ -186,6 +187,7 @@
                 }
             }
             symbols{
+                approximatelySign{"≈"}
                 decimal{","}
                 exponential{"E"}
                 group{"."}
@@ -214,7 +216,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -728,11 +729,11 @@
                 "d MMMM y",
                 "d.M.y",
                 "d.M.yy",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
+                "{1}, 'во' {0}",
+                "{1}, 'во' {0}",
+                "{1}, 'во' {0}",
+                "{1}, 'во' {0}",
+                "{1}, 'во' {0}",
             }
             appendItems{
                 Timezone{"{0} {1}"}
@@ -789,8 +790,8 @@
                 yQQQ{"QQQ y 'г'."}
                 yQQQQ{"QQQQ y 'г'."}
                 yw{
-                    one{"w 'седмица' 'од' Y"}
-                    other{"w 'седмица' 'од' Y"}
+                    one{"w. 'седмица' 'од' Y"}
+                    other{"w. 'седмица' 'од' Y"}
                 }
             }
             dayNames{
@@ -874,11 +875,11 @@
             dayPeriod{
                 format{
                     abbreviated{
-                        afternoon1{"попл."}
+                        afternoon1{"попладне"}
                         evening1{"навечер"}
                         midnight{"полноќ"}
                         morning1{"наутро"}
-                        morning2{"претпл."}
+                        morning2{"претпладне"}
                         night1{"ноќе"}
                         noon{"напладне"}
                     }
@@ -939,15 +940,11 @@
             }
             eras{
                 abbreviated{
-                    "пр.н.е.",
-                    "н.е.",
-                }
-                abbreviated%variant{
                     "п.н.е.",
                     "н.е.",
                 }
                 narrow{
-                    "пр.н.е.",
+                    "п.н.е.",
                     "н.е.",
                 }
                 wide{
diff --git a/icu4c/source/data/locales/mk_MK.txt b/icu4c/source/data/locales/mk_MK.txt
index fe579b3..f1ac166 100644
--- a/icu4c/source/data/locales/mk_MK.txt
+++ b/icu4c/source/data/locales/mk_MK.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mk_MK{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ml.txt b/icu4c/source/data/locales/ml.txt
index 413f122..dd5e36d 100644
--- a/icu4c/source/data/locales/ml.txt
+++ b/icu4c/source/data/locales/ml.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ml{
     AuxExemplarCharacters{"[]"}
     Ellipsis{
@@ -20,7 +21,10 @@
         " യ ര ല വ ശ ഷ സ ഹ ള ഴ റ]"
     }
     ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0൦ 1൧ 2൨ 3൩ 4൪ 5൫ 6൬ 7൭ 8൮ 9൯]"}
-    ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\}]"}
+    ExemplarCharactersPunctuation{
+        "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ "
+        "′ ″]"
+    }
     MoreInformation{"?"}
     NumberElements{
         default{"latn"}
@@ -241,7 +245,6 @@
         }
         native{"mlym"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -2432,13 +2435,13 @@
             dn{"ആഴ്‌ച. ദിവസം"}
         }
         weekdayOfMonth{
-            dn{"മാസത്തിലെ പ്രവർത്തിദിനം"}
+            dn{"മാസത്തിലെ പ്രവൃത്തി ദിവസം"}
         }
         weekdayOfMonth-narrow{
-            dn{"മാസ. പ്രവർത്തിദിനം"}
+            dn{"മാസ. പ്രവൃത്തി ദിവസം"}
         }
         weekdayOfMonth-short{
-            dn{"മാസ. പ്രവർത്തിദിനം"}
+            dn{"മാസ. പ്രവൃത്തി ദിവസം"}
         }
         year{
             dn{"വർഷം"}
@@ -2498,10 +2501,10 @@
             dn{"സമയ മേഖല"}
         }
         zone-narrow{
-            dn{"സമയ മേഖല"}
+            dn{"മേഖല"}
         }
         zone-short{
-            dn{"സമയ മേഖല"}
+            dn{"മേഖല"}
         }
     }
     listPattern{
@@ -2517,6 +2520,9 @@
             middle{"{0}, {1}"}
             start{"{0}, {1}"}
         }
+        standard-narrow{
+            2{"{0}, {1} എന്നിവ"}
+        }
         standard-short{
             2{"{0} കൂടാതെ {1}"}
             end{"{0}, {1} എന്നിവ"}
@@ -2536,7 +2542,7 @@
             start{"{0} {1}"}
         }
         unit-short{
-            2{"{0} കൂടാതെ {1}"}
+            2{"{0}, {1}"}
             end{"{0}, {1}"}
             middle{"{0}, {1}"}
             start{"{0}, {1}"}
diff --git a/icu4c/source/data/locales/ml_IN.txt b/icu4c/source/data/locales/ml_IN.txt
index a9001cc..873b4f5 100644
--- a/icu4c/source/data/locales/ml_IN.txt
+++ b/icu4c/source/data/locales/ml_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ml_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/mn.txt b/icu4c/source/data/locales/mn.txt
index 2ed00c2..76dbbb9 100644
--- a/icu4c/source/data/locales/mn.txt
+++ b/icu4c/source/data/locales/mn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mn{
     AuxExemplarCharacters{"[ә җ ӊ һ]"}
     Ellipsis{
@@ -215,7 +216,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -850,92 +850,92 @@
         }
     }
     characterLabel{
-        activities{"Үйл ажиллагаанууд"}
-        african_scripts{"Африк бичвэр"}
-        american_scripts{"Америк бичвэр"}
-        animal{"амьтан"}
-        animals_nature{"Ан амьтан ба байгаль"}
-        arrows{"Сум"}
+        activities{"үйл ажиллагаа"}
+        african_scripts{"Африкан скрипт"}
+        american_scripts{"Американ скрипт"}
+        animal{"ан амьтан"}
+        animals_nature{"ан амьтан ба байгаль"}
+        arrows{"сум"}
         body{"бие"}
-        box_drawing{"Хайрцаг зурах"}
-        braille{"Брайль"}
+        box_drawing{"хайрцаг зурах"}
+        braille{"брайль"}
         building{"барилга"}
-        bullets_stars{"Сум/од"}
-        consonantal_jamo{"Жамо гийгүүлэгчийн дараалал"}
-        currency_symbols{"Мөнгөн тэмдэгтийн дүрс"}
-        dash_connector{"Зураас/холбоос"}
+        bullets_stars{"сум ба од"}
+        consonantal_jamo{"жамо гийгүүлэгчийн дараалал"}
+        currency_symbols{"валютын тэмдэг"}
+        dash_connector{"зураас ба холбоос"}
         digits{"орон"}
-        dingbats{"Дүрс тэмдгүүд"}
-        divination_symbols{"Мэргийн тэмдгүүд"}
-        downwards_arrows{"Доош заасан сум"}
-        downwards_upwards_arrows{"Доош, дээш заасан сум"}
+        dingbats{"чимэг тэмдэг"}
+        divination_symbols{"мэргийн тэмдэг"}
+        downwards_arrows{"доош заасан сум"}
+        downwards_upwards_arrows{"доош, дээш заасан сум"}
         east_asian_scripts{"Зүүн Азийн бичвэр"}
-        emoji{"Эможи"}
-        european_scripts{"Европ бичвэр"}
+        emoji{"эможи"}
+        european_scripts{"Европийн скрипт"}
         female{"эмэгтэй"}
         flag{"туг"}
-        flags{"Туг"}
-        food_drink{"Хоол, унд"}
-        format{"Формат"}
-        format_whitespace{"Формат, хоосон зай"}
-        full_width_form_variant{"Бүтэн өргөн загварын хувилбар"}
-        geometric_shapes{"Геометрийн дүрсүүд"}
-        half_width_form_variant{"Өргөөшөө загварын хувилбарууд"}
-        han_characters{"Хан ханзнууд"}
+        flags{"туг"}
+        food_drink{"хоол, унд"}
+        format{"формат"}
+        format_whitespace{"формат, хоосон зай"}
+        full_width_form_variant{"бүтэн өргөн хувилбар"}
+        geometric_shapes{"геометрийн дүрс"}
+        half_width_form_variant{"хагас өргөн хувилбар"}
+        han_characters{"Хан ханз"}
         han_radicals{"Хятад язгуур"}
-        hanja{"Ханз"}
+        hanja{"ханз"}
         hanzi_simplified{"Ханз (Хялбаршуулсан)"}
         hanzi_traditional{"Ханз (Уламжлалт)"}
         heart{"зүрх"}
-        historic_scripts{"Түүхэн бичвэр"}
-        ideographic_desc_characters{"Идеографик буурах тэмдэгтүүд"}
+        historic_scripts{"түүхэн скрипт"}
+        ideographic_desc_characters{"идеографик буурах тэмдэгт"}
         japanese_kana{"Япон кана"}
-        kanbun{"Канбун"}
-        kanji{"Канжи"}
+        kanbun{"канбун"}
+        kanji{"канжи"}
         keycap{"түлхүүрийн гэр"}
-        leftwards_arrows{"Зүүн харсан сум"}
-        leftwards_rightwards_arrows{"Зүүн, баруун харсан сум"}
-        letterlike_symbols{"Үсгэн тэмдэгтүүд"}
-        limited_use{"Хязгаарлагдмал хэрэглээ"}
+        leftwards_arrows{"зүүн харсан сум"}
+        leftwards_rightwards_arrows{"зүүн, баруун харсан сум"}
+        letterlike_symbols{"үсгэн тэмдэгт"}
+        limited_use{"хязгаарлагдмал хэрэглээ"}
         male{"эрэгтэй"}
-        math_symbols{"Математикийн тэмдэгтүүд"}
+        math_symbols{"математикийн тэмдэгт"}
         middle_eastern_scripts{"Ойрх дорнодын бичвэр"}
-        miscellaneous{"Бусад"}
-        modern_scripts{"Орчин цагийн бичвэр"}
-        modifier{"Өөрчлөгч"}
-        musical_symbols{"Хөгжмийн тэмдэгтүүд"}
+        miscellaneous{"янз бүрийн"}
+        modern_scripts{"орчин цагийн скрипт"}
+        modifier{"өөрчлөгч"}
+        musical_symbols{"хөгжмийн тэмдэг"}
         nature{"байгаль"}
-        nonspacing{"Зайгүй"}
-        numbers{"Тоонууд"}
-        objects{"Дүрснүүд"}
-        other{"Бусад"}
-        paired{"Хослосон"}
+        nonspacing{"зайгүй"}
+        numbers{"тоо"}
+        objects{"объект"}
+        other{"бусад"}
+        paired{"хослосон"}
         person{"хүн"}
-        phonetic_alphabet{"Дуудлагын үсэг"}
-        pictographs{"Пиктограм"}
+        phonetic_alphabet{"дуудлагын үсэг"}
+        pictographs{"пиктограм"}
         place{"газар"}
         plant{"ургамал"}
-        punctuation{"Цэг, таслал"}
-        rightwards_arrows{"Баруун заасан сум"}
-        sign_standard_symbols{"Тэмдэг/стандарт тэмдэгт"}
-        small_form_variant{"Жижиг загварын хувилбарууд"}
+        punctuation{"цэг, таслал"}
+        rightwards_arrows{"баруун заасан сум"}
+        sign_standard_symbols{"дүрс ба тэмдэг"}
+        small_form_variant{"жижиг загварын хувилбар"}
         smiley{"инээмсэглэл"}
-        smileys_people{"Инээмсэглэлүүд ба хүмүүс"}
-        south_asian_scripts{"Өмнөд Азийн бичвэр"}
-        southeast_asian_scripts{"Зүүн өмнөд азийн бичвэр"}
-        spacing{"Зай авалт"}
+        smileys_people{"инээмсэглэл ба хүн"}
+        south_asian_scripts{"Өмнөд Азийн скрипт"}
+        southeast_asian_scripts{"Зүүн өмнөд азийн скрипт"}
+        spacing{"зай авалт"}
         sport{"спорт"}
-        symbols{"Тэмдэгүүд"}
-        technical_symbols{"Техникийн тэмдэгүүд"}
-        tone_marks{"Дууны өнгөний тэмдэглэгээ"}
+        symbols{"тэмдэг"}
+        technical_symbols{"техникийн тэмдэг"}
+        tone_marks{"дууны өнгөний тэмдэглэгээ"}
         travel{"аялал"}
-        travel_places{"Аялал, газар нутгууд"}
-        upwards_arrows{"Дээш заасан сум"}
-        variant_forms{"Хувилбарын хэлбэрүүд"}
-        vocalic_jamo{"Эгшгийн Жамо"}
+        travel_places{"аялал ба газар нутаг"}
+        upwards_arrows{"дээш заасан сум"}
+        variant_forms{"хувилбар"}
+        vocalic_jamo{"эгшгийн жамо"}
         weather{"цаг агаар"}
-        western_asian_scripts{"Баруун азийн бичвэр"}
-        whitespace{"Хоосон зай"}
+        western_asian_scripts{"Баруун азийн скрипт"}
+        whitespace{"хоосон зай"}
     }
     delimiters{
         alternateQuotationEnd{"’"}
diff --git a/icu4c/source/data/locales/mn_MN.txt b/icu4c/source/data/locales/mn_MN.txt
index 79cf0e3..72901f7 100644
--- a/icu4c/source/data/locales/mn_MN.txt
+++ b/icu4c/source/data/locales/mn_MN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mn_MN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/mni.txt b/icu4c/source/data/locales/mni.txt
index 9e589a5..b40d344 100644
--- a/icu4c/source/data/locales/mni.txt
+++ b/icu4c/source/data/locales/mni.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni{
     AuxExemplarCharacters{"[\u200C\u200D]"}
     ExemplarCharacters{
@@ -24,7 +25,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -100,7 +100,7 @@
                         "থাংজ",
                     }
                     narrow{
-                        "নো",
+                        "নোং",
                         "নিং",
                         "লৈ",
                         "য়ুম",
@@ -240,10 +240,10 @@
                         "মে",
                         "জুন",
                         "জুলাই",
-                        "আগস্ট",
+                        "ওগষ্ট",
                         "সেপ্টেম্বর",
                         "ওক্টোবর",
-                        "নভেম্বর",
+                        "নবেম্বর",
                         "ডিসেম্বর",
                     }
                 }
diff --git a/icu4c/source/data/locales/mni_Beng.txt b/icu4c/source/data/locales/mni_Beng.txt
index e861947..08de0f1 100644
--- a/icu4c/source/data/locales/mni_Beng.txt
+++ b/icu4c/source/data/locales/mni_Beng.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni_Beng{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/mni_Beng_IN.txt b/icu4c/source/data/locales/mni_Beng_IN.txt
index 311961f..6d16670 100644
--- a/icu4c/source/data/locales/mni_Beng_IN.txt
+++ b/icu4c/source/data/locales/mni_Beng_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni_Beng_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/mni_IN.txt b/icu4c/source/data/locales/mni_IN.txt
index 00d8c00..99173b1 100644
--- a/icu4c/source/data/locales/mni_IN.txt
+++ b/icu4c/source/data/locales/mni_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni_IN{
     "%%ALIAS"{"mni_Beng_IN"}
 }
diff --git a/icu4c/source/data/locales/mo.txt b/icu4c/source/data/locales/mo.txt
index 01049c8..6ef8313 100644
--- a/icu4c/source/data/locales/mo.txt
+++ b/icu4c/source/data/locales/mo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mo{
     "%%ALIAS"{"ro"}
 }
diff --git a/icu4c/source/data/locales/mr.txt b/icu4c/source/data/locales/mr.txt
index 86a8429..7e1d99f 100644
--- a/icu4c/source/data/locales/mr.txt
+++ b/icu4c/source/data/locales/mr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mr{
     AuxExemplarCharacters{"[\u200C\u200D]"}
     Ellipsis{
@@ -243,7 +244,6 @@
         minimumGroupingDigits{"1"}
         native{"deva"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -641,16 +641,12 @@
         }
         gregorian{
             AmPmMarkers{
-                "म.पू.",
-                "म.उ.",
-            }
-            AmPmMarkersAbbr{
-                "म.पू.",
-                "म.उ.",
+                "AM",
+                "PM",
             }
             AmPmMarkersNarrow{
-                "स",
-                "सं",
+                "a",
+                "p",
             }
             DateTimePatterns{
                 "h:mm:ss a zzzz",
@@ -840,7 +836,7 @@
                 stand-alone{
                     abbreviated{
                         afternoon1{"दुपार"}
-                        am{"म.पू."}
+                        am{"AM"}
                         evening1{"संध्याकाळ"}
                         evening2{"सायंकाळ"}
                         midnight{"मध्यरात्र"}
@@ -848,11 +844,11 @@
                         morning2{"सकाळ"}
                         night1{"रात्र"}
                         noon{"मध्यान्ह"}
-                        pm{"म.उ."}
+                        pm{"PM"}
                     }
                     narrow{
                         afternoon1{"दु"}
-                        am{"म.पू."}
+                        am{"AM"}
                         evening1{"सं"}
                         evening2{"सा"}
                         midnight{"म.रा."}
@@ -860,11 +856,11 @@
                         morning2{"स"}
                         night1{"रात्र"}
                         noon{"म"}
-                        pm{"म.उ."}
+                        pm{"PM"}
                     }
                     wide{
                         afternoon1{"दुपार"}
-                        am{"म.पू."}
+                        am{"AM"}
                         evening1{"संध्याकाळ"}
                         evening2{"सायंकाळ"}
                         midnight{"मध्यरात्र"}
@@ -872,7 +868,7 @@
                         morning2{"सकाळ"}
                         night1{"रात्र"}
                         noon{"मध्यान्ह"}
-                        pm{"म.उ."}
+                        pm{"PM"}
                     }
                 }
             }
@@ -1712,13 +1708,13 @@
             dn{"वर्षातील दिवस"}
         }
         dayperiod{
-            dn{"[म.पू./म.उ.]"}
+            dn{"AM/PM"}
         }
         dayperiod-narrow{
-            dn{"[म.पू./म.उ.]"}
+            dn{"AM/PM"}
         }
         dayperiod-short{
-            dn{"[म.पू./म.उ.]"}
+            dn{"AM/PM"}
         }
         era{
             dn{"युग"}
@@ -2475,6 +2471,9 @@
             middle{"{0}, {1}"}
             start{"{0}, {1}"}
         }
+        or-short{
+            end{"{0} किंवा {1}"}
+        }
         standard{
             2{"{0} आणि {1}"}
             end{"{0} आणि {1}"}
diff --git a/icu4c/source/data/locales/mr_IN.txt b/icu4c/source/data/locales/mr_IN.txt
index c0a5c7c..a32588c 100644
--- a/icu4c/source/data/locales/mr_IN.txt
+++ b/icu4c/source/data/locales/mr_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mr_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ms.txt b/icu4c/source/data/locales/ms.txt
index 85d74ba..d4060ea 100644
--- a/icu4c/source/data/locales/ms.txt
+++ b/icu4c/source/data/locales/ms.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ms{
-    AuxExemplarCharacters{"[]"}
     Ellipsis{
         final{"{0}…"}
         initial{"…{0}"}
@@ -10,10 +10,7 @@
         word-initial{"… {0}"}
         word-medial{"{0} … {1}"}
     }
-    ExemplarCharacters{
-        "[a {ai} {au} b c d {dz} e f g h i j k {kh} l m n {ng} {ngg} {ny} o p q r s {"
-        "sy} t {ts} u {ua} v w x y z]"
-    }
+    ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"}
     ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     ExemplarCharactersPunctuation{
@@ -22,6 +19,11 @@
     }
     MoreInformation{"?"}
     NumberElements{
+        arabext{
+            symbols{
+                decimal{"."}
+            }
+        }
         default{"latn"}
         latn{
             miscPatterns{
@@ -172,7 +174,7 @@
         }
         minimalPairs{
             ordinal{
-                one{"Ambil belokan kanan yang pertama."}
+                one{"Ambil belokan kanan {0}."}
                 other{"Ambil belokan kanan yang ke-{0}."}
             }
             plural{
@@ -182,7 +184,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -968,7 +969,7 @@
                 }
                 GyM{
                     G{"M/y GGGGG – M/y GGGGG"}
-                    M{"M/y –M/y GGGGG"}
+                    M{"M/y – M/y GGGGG"}
                     y{"M/y – M/y GGGGG"}
                 }
                 GyMEd{
diff --git a/icu4c/source/data/locales/ms_BN.txt b/icu4c/source/data/locales/ms_BN.txt
index 8859c4d..1962acb 100644
--- a/icu4c/source/data/locales/ms_BN.txt
+++ b/icu4c/source/data/locales/ms_BN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ms_BN{
     NumberElements{
         latn{
@@ -12,7 +13,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ms_ID.txt b/icu4c/source/data/locales/ms_ID.txt
index 6a60a2b..6b5bf81 100644
--- a/icu4c/source/data/locales/ms_ID.txt
+++ b/icu4c/source/data/locales/ms_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ms_ID{
     NumberElements{
         latn{
@@ -13,7 +14,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ms_MY.txt b/icu4c/source/data/locales/ms_MY.txt
index ecddb8b..d158d07 100644
--- a/icu4c/source/data/locales/ms_MY.txt
+++ b/icu4c/source/data/locales/ms_MY.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ms_MY{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ms_SG.txt b/icu4c/source/data/locales/ms_SG.txt
index 05c019e..45f17b0 100644
--- a/icu4c/source/data/locales/ms_SG.txt
+++ b/icu4c/source/data/locales/ms_SG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ms_SG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/mt.txt b/icu4c/source/data/locales/mt.txt
index 1ae796b..f53c109 100644
--- a/icu4c/source/data/locales/mt.txt
+++ b/icu4c/source/data/locales/mt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mt{
     AuxExemplarCharacters{"[c y]"}
     Ellipsis{
@@ -48,7 +49,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/mt_MT.txt b/icu4c/source/data/locales/mt_MT.txt
index 0291b27..071ec8c 100644
--- a/icu4c/source/data/locales/mt_MT.txt
+++ b/icu4c/source/data/locales/mt_MT.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mt_MT{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/mua.txt b/icu4c/source/data/locales/mua.txt
index 7b3e646..6919b5c 100644
--- a/icu4c/source/data/locales/mua.txt
+++ b/icu4c/source/data/locales/mua.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mua{
     AuxExemplarCharacters{"[q x]"}
     ExemplarCharacters{"[a ã b ɓ c d ɗ e ë ǝ f g h i ĩ j k l m n ŋ o õ p r s t u v ṽ w y z]"}
@@ -19,7 +20,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/mua_CM.txt b/icu4c/source/data/locales/mua_CM.txt
index cb6f692..53d84c8 100644
--- a/icu4c/source/data/locales/mua_CM.txt
+++ b/icu4c/source/data/locales/mua_CM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mua_CM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/my.txt b/icu4c/source/data/locales/my.txt
index 2cb62d1..9ccb6ac 100644
--- a/icu4c/source/data/locales/my.txt
+++ b/icu4c/source/data/locales/my.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 my{
     AuxExemplarCharacters{
         "[၀႐ ၁႑ ၂႒ ၃႓ ၄႔ ၅႕ ၆႖ ၇႗ ၈႘ ၉႙ ၵ ၚ ၽ ၾ ၐ ၑ ၥ ဨ ဢ ၒ ၓ ၔ ၕ \u1033 ၖ ၗ \u1058 "
@@ -176,7 +177,7 @@
                 other{"{0} အုပ်မြောက်"}
             }
             plural{
-                other{"{0}ရက်"}
+                other{"{0} ရက်"}
             }
         }
         minimumGroupingDigits{"1"}
@@ -203,7 +204,6 @@
         }
         native{"mymr"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -1677,29 +1677,37 @@
         or{
             2{"{0} သို့မဟုတ် {1}"}
             end{"{0} သို့မဟုတ် {1}"}
-            middle{"{0} {1}"}
-            start{"{0} {1}"}
+            middle{"{0}၊ {1}"}
+            start{"{0}၊ {1}"}
+        }
+        or-narrow{
+            middle{"{0}၊ {1}"}
         }
         or-short{
+            middle{"{0}၊ {1}"}
             start{"{0} ၊ {1}"}
         }
         standard{
             2{"{0}နှင့် {1}"}
             end{"{0}နှင့် {1}"}
-            middle{"{0} {1}"}
-            start{"{0} {1}"}
+            middle{"{0}၊ {1}"}
+            start{"{0}၊ {1}"}
+        }
+        standard-narrow{
+            middle{"{0}၊ {1}"}
+            start{"{0}၊ {1}"}
         }
         standard-short{
             2{"{0}နှင့် {1}"}
             end{"{0}နှင့် {1}"}
-            middle{"{0} {1}"}
-            start{"{0} {1}"}
+            middle{"{0}၊ {1}"}
+            start{"{0}၊ {1}"}
         }
         unit{
             2{"{0}နှင့်{1}"}
             end{"{0}နှင့် {1}"}
-            middle{"{0} {1}"}
-            start{"{0} {1}"}
+            middle{"{0}၊ {1}"}
+            start{"{0}၊ {1}"}
         }
         unit-narrow{
             2{"{0}နှင့် {1}"}
@@ -1710,8 +1718,8 @@
         unit-short{
             2{"{0}နှင့် {1}"}
             end{"{0}နှင့် {1}"}
-            middle{"{0} {1}"}
-            start{"{0} {1}"}
+            middle{"{0}၊ {1}"}
+            start{"{0}၊ {1}"}
         }
     }
     measurementSystemNames{
diff --git a/icu4c/source/data/locales/my_MM.txt b/icu4c/source/data/locales/my_MM.txt
index 1cc45e6..b53071c 100644
--- a/icu4c/source/data/locales/my_MM.txt
+++ b/icu4c/source/data/locales/my_MM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 my_MM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/mzn.txt b/icu4c/source/data/locales/mzn.txt
index e5782fb..606e1d7 100644
--- a/icu4c/source/data/locales/mzn.txt
+++ b/icu4c/source/data/locales/mzn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mzn{
     AuxExemplarCharacters{"[\u200C\u200D\u200E\u200F \u064E \u064F \u0650 \u0652 \u0656 \u0670 إ ك ى ي]"}
     Ellipsis{
@@ -26,7 +27,6 @@
         default{"arabext"}
         native{"arabext"}
     }
-    Version{"37"}
     calendar{
         gregorian{
             eras{
diff --git a/icu4c/source/data/locales/mzn_IR.txt b/icu4c/source/data/locales/mzn_IR.txt
index 93d8e07..3303c3e 100644
--- a/icu4c/source/data/locales/mzn_IR.txt
+++ b/icu4c/source/data/locales/mzn_IR.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mzn_IR{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/naq.txt b/icu4c/source/data/locales/naq.txt
index 155f37d..b3f219e 100644
--- a/icu4c/source/data/locales/naq.txt
+++ b/icu4c/source/data/locales/naq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 naq{
     AuxExemplarCharacters{"[j l v]"}
     ExemplarCharacters{"[a â b c d e f g h i î k m n o ô p q r s t u û w x y z ǀ ǁ ǂ ǃ]"}
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/naq_NA.txt b/icu4c/source/data/locales/naq_NA.txt
index 2be7f98..599ea64 100644
--- a/icu4c/source/data/locales/naq_NA.txt
+++ b/icu4c/source/data/locales/naq_NA.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 naq_NA{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/nb.txt b/icu4c/source/data/locales/nb.txt
index dc45752..5344769 100644
--- a/icu4c/source/data/locales/nb.txt
+++ b/icu4c/source/data/locales/nb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nb{
     AuxExemplarCharacters{"[á ǎ ã č ç đ è ê í ń ñ ŋ š ŧ ú ü ž ä ö]"}
     Ellipsis{
@@ -546,11 +547,11 @@
                         other{"0 millioner"}
                     }
                     10000000{
-                        one{"00 million"}
+                        one{"00 millioner"}
                         other{"00 millioner"}
                     }
                     100000000{
-                        one{"000 million"}
+                        one{"000 millioner"}
                         other{"000 millioner"}
                     }
                     1000000000{
@@ -558,11 +559,11 @@
                         other{"0 milliarder"}
                     }
                     10000000000{
-                        one{"00 milliard"}
+                        one{"00 milliarder"}
                         other{"00 milliarder"}
                     }
                     100000000000{
-                        one{"000 milliard"}
+                        one{"000 milliarder"}
                         other{"000 milliarder"}
                     }
                     1000000000000{
@@ -682,6 +683,7 @@
                 }
             }
             symbols{
+                approximatelySign{"ca."}
                 decimal{","}
                 exponential{"E"}
                 group{" "}
@@ -1280,7 +1282,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -3908,8 +3909,8 @@
                 "d. MMM y G",
                 "d.M.y G",
                 "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
+                "{1} 'kl'. {0}",
+                "{1} 'kl'. {0}",
                 "{1} {0}",
                 "{1} {0}",
             }
@@ -4121,7 +4122,7 @@
                 "d. MMM y",
                 "dd.MM.y",
                 "{1}, {0}",
-                "{1} {0}",
+                "{1} 'kl'. {0}",
                 "{1} 'kl'. {0}",
                 "{1}, {0}",
                 "{1}, {0}",
@@ -4136,8 +4137,8 @@
                 E{"ccc"}
                 EBhm{"E h:mm B"}
                 EBhms{"E h:mm:ss B"}
-                EHm{"E HH:mm"}
-                EHms{"E HH:mm:ss"}
+                EHm{"E 'kl'. HH:mm"}
+                EHms{"E 'kl'. HH:mm:ss"}
                 Ed{"E d."}
                 Ehm{"E h:mm a"}
                 Ehms{"E h:mm:ss a"}
@@ -4171,7 +4172,7 @@
                 ms{"mm:ss"}
                 y{"y"}
                 yM{"M.y"}
-                yMEd{"E d.MM.y"}
+                yMEd{"E d.M.y"}
                 yMM{"MM.y"}
                 yMMM{"MMM y"}
                 yMMMEd{"E d. MMM y"}
@@ -4282,12 +4283,12 @@
                         night1{"nt."}
                     }
                     wide{
-                        afternoon1{"ettermiddagen"}
-                        evening1{"kvelden"}
+                        afternoon1{"på ettermiddagen"}
+                        evening1{"på kvelden"}
                         midnight{"midnatt"}
-                        morning1{"morgenen"}
-                        morning2{"formiddagen"}
-                        night1{"natten"}
+                        morning1{"på morgenen"}
+                        morning2{"på formiddagen"}
+                        night1{"på natten"}
                     }
                 }
                 stand-alone{
@@ -4435,21 +4436,21 @@
                 }
                 fallback{"{0}–{1}"}
                 h{
-                    a{"h a – h a"}
+                    a{"h a–h a"}
                     h{"h–h a"}
                 }
                 hm{
-                    a{"h:mm a – h:mm a"}
+                    a{"h:mm a–h:mm a"}
                     h{"h:mm–h:mm a"}
                     m{"h:mm–h:mm a"}
                 }
                 hmv{
-                    a{"h:mm a – h:mm a v"}
+                    a{"h:mm a–h:mm a v"}
                     h{"h:mm–h:mm a v"}
                     m{"h:mm–h:mm a v"}
                 }
                 hv{
-                    a{"h a – h a v"}
+                    a{"h a–h a v"}
                     h{"h–h a v"}
                 }
                 y{
@@ -6541,8 +6542,8 @@
         full_width_form_variant{"fullbreddeformvarianter"}
         geometric_shapes{"geometriske figurer"}
         half_width_form_variant{"halvbreddeformvarianter"}
-        han_characters{"Han-tegn"}
-        han_radicals{"Han-radikaler"}
+        han_characters{"han-tegn"}
+        han_radicals{"han-radikaler"}
         hanja{"hanja"}
         hanzi_simplified{"hanzi (forenklet)"}
         hanzi_traditional{"hanzi (tradisjonell)"}
diff --git a/icu4c/source/data/locales/nb_NO.txt b/icu4c/source/data/locales/nb_NO.txt
index 6f1d6ea..61b454b 100644
--- a/icu4c/source/data/locales/nb_NO.txt
+++ b/icu4c/source/data/locales/nb_NO.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nb_NO{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/nb_SJ.txt b/icu4c/source/data/locales/nb_SJ.txt
index 6096e53..78d04a5 100644
--- a/icu4c/source/data/locales/nb_SJ.txt
+++ b/icu4c/source/data/locales/nb_SJ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nb_SJ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/nd.txt b/icu4c/source/data/locales/nd.txt
index d43167a..b47b51c 100644
--- a/icu4c/source/data/locales/nd.txt
+++ b/icu4c/source/data/locales/nd.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nd{
     AuxExemplarCharacters{"[r]"}
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q s t u v w x y z]"}
@@ -12,7 +13,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/nd_ZW.txt b/icu4c/source/data/locales/nd_ZW.txt
index 0958844..f856148 100644
--- a/icu4c/source/data/locales/nd_ZW.txt
+++ b/icu4c/source/data/locales/nd_ZW.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nd_ZW{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/nds.txt b/icu4c/source/data/locales/nds.txt
deleted file mode 100644
index 927983f..0000000
--- a/icu4c/source/data/locales/nds.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-nds{
-    ExemplarCharacters{"[a å ä b c d e f g h i j k l m n o ö p q r s t u ü v w x y z]"}
-    ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
-    ExemplarCharactersPunctuation{
-        "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ‚ \u0022 “ „ « » ( ) \\[ \\] \\{ \\} § @ * "
-        "/ \\& #]"
-    }
-    Version{"37"}
-}
diff --git a/icu4c/source/data/locales/nds_DE.txt b/icu4c/source/data/locales/nds_DE.txt
deleted file mode 100644
index 514b86a..0000000
--- a/icu4c/source/data/locales/nds_DE.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-nds_DE{
-    Version{"37"}
-}
diff --git a/icu4c/source/data/locales/nds_NL.txt b/icu4c/source/data/locales/nds_NL.txt
deleted file mode 100644
index acb3105..0000000
--- a/icu4c/source/data/locales/nds_NL.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-nds_NL{
-    AuxExemplarCharacters{"[á à â ä é è ê ë í ì î ï ó ò ô ö ú ù û ü]"}
-    ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}
-    ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"}
-    ExemplarCharactersPunctuation{
-        "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ "
-        "′ ″]"
-    }
-    Version{"37"}
-}
diff --git a/icu4c/source/data/locales/ne.txt b/icu4c/source/data/locales/ne.txt
index 1c9a74a..fa5a609 100644
--- a/icu4c/source/data/locales/ne.txt
+++ b/icu4c/source/data/locales/ne.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ne{
     AuxExemplarCharacters{"[\u200C\u200D]"}
     Ellipsis{
@@ -214,6 +215,7 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -241,7 +243,6 @@
         minimumGroupingDigits{"1"}
         native{"deva"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -1797,4 +1798,36 @@
         US{"संयु्क्त राज्य"}
         metric{"मेट्रिक"}
     }
+    parse{
+        date{
+            lenient{
+                "[\\--/]",
+                "[\\:∶︓﹕:]",
+            }
+        }
+        general{
+            lenient{
+                "[.․。︒﹒.。]",
+                "['ʼ՚᾽᾿’']",
+                "[%٪﹪%]",
+                "[؉‰]",
+                "[\$﹩$]",
+                "[£₤£]",
+                "[¥¥]",
+                "[₩₩]",
+                "[₨₹{Rp}{Rs}]",
+            }
+        }
+        number{
+            lenient{
+                "[\\-‐‒–⁻₋−➖﹣-]",
+                "[,،٫、︐︑﹐﹑,、]",
+                "[+⁺₊➕﬩﹢+]",
+            }
+            stricter{
+                "[,٫︐﹐,]",
+                "[.․﹒.。]",
+            }
+        }
+    }
 }
diff --git a/icu4c/source/data/locales/ne_IN.txt b/icu4c/source/data/locales/ne_IN.txt
index ed70916..3a75723 100644
--- a/icu4c/source/data/locales/ne_IN.txt
+++ b/icu4c/source/data/locales/ne_IN.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ne_IN{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ne_NP.txt b/icu4c/source/data/locales/ne_NP.txt
index bd5cce9..c1e8a23 100644
--- a/icu4c/source/data/locales/ne_NP.txt
+++ b/icu4c/source/data/locales/ne_NP.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ne_NP{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/nl.txt b/icu4c/source/data/locales/nl.txt
index b4ec3eb..baf8535 100644
--- a/icu4c/source/data/locales/nl.txt
+++ b/icu4c/source/data/locales/nl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl{
     AuxExemplarCharacters{"[à â å ã æ ç è ê î ñ ô ø œ ù û ÿ]"}
     ExemplarCharacters{
@@ -1485,7 +1486,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -7012,8 +7012,6 @@
         }
     }
     delimiters{
-        alternateQuotationEnd{"”"}
-        alternateQuotationStart{"“"}
         quotationEnd{"’"}
         quotationStart{"‘"}
     }
@@ -7919,7 +7917,7 @@
                 "[%٪﹪%]",
                 "[؉‰]",
                 "[\$﹩$$]",
-                "[£₤]",
+                "[£₤£]",
                 "[¥¥]",
                 "[₩₩]",
                 "[₨₹{Rp}{Rs}]",
@@ -7928,7 +7926,7 @@
         number{
             lenient{
                 "[\\-‒⁻₋−➖﹣-]",
-                "[,،٫、︐︑﹐﹑,、]",
+                "[,،٫⹁、︐︑﹐﹑,、]",
                 "[+⁺₊➕﬩﹢+]",
             }
         }
diff --git a/icu4c/source/data/locales/nl_AW.txt b/icu4c/source/data/locales/nl_AW.txt
index cfff59e..65b23d0 100644
--- a/icu4c/source/data/locales/nl_AW.txt
+++ b/icu4c/source/data/locales/nl_AW.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl_AW{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/nl_BE.txt b/icu4c/source/data/locales/nl_BE.txt
index 6b26819..6af5585 100644
--- a/icu4c/source/data/locales/nl_BE.txt
+++ b/icu4c/source/data/locales/nl_BE.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl_BE{
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/nl_BQ.txt b/icu4c/source/data/locales/nl_BQ.txt
index b3ca0e5..6e6ade1 100644
--- a/icu4c/source/data/locales/nl_BQ.txt
+++ b/icu4c/source/data/locales/nl_BQ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl_BQ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/nl_CW.txt b/icu4c/source/data/locales/nl_CW.txt
index 6aea8e2..597b6b4 100644
--- a/icu4c/source/data/locales/nl_CW.txt
+++ b/icu4c/source/data/locales/nl_CW.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl_CW{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/nl_NL.txt b/icu4c/source/data/locales/nl_NL.txt
index 886c75a..6105f87 100644
--- a/icu4c/source/data/locales/nl_NL.txt
+++ b/icu4c/source/data/locales/nl_NL.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl_NL{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/nl_SR.txt b/icu4c/source/data/locales/nl_SR.txt
index 018d7c4..8d73af8 100644
--- a/icu4c/source/data/locales/nl_SR.txt
+++ b/icu4c/source/data/locales/nl_SR.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl_SR{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/nl_SX.txt b/icu4c/source/data/locales/nl_SX.txt
index 84e82dc..381c5f9 100644
--- a/icu4c/source/data/locales/nl_SX.txt
+++ b/icu4c/source/data/locales/nl_SX.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl_SX{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/nmg.txt b/icu4c/source/data/locales/nmg.txt
index c518889..e3ca81c 100644
--- a/icu4c/source/data/locales/nmg.txt
+++ b/icu4c/source/data/locales/nmg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nmg{
     AuxExemplarCharacters{"[q x z]"}
     ExemplarCharacters{
@@ -22,7 +23,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/nmg_CM.txt b/icu4c/source/data/locales/nmg_CM.txt
index 5c9b334..c793495 100644
--- a/icu4c/source/data/locales/nmg_CM.txt
+++ b/icu4c/source/data/locales/nmg_CM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nmg_CM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/nn.txt b/icu4c/source/data/locales/nn.txt
index 5270fc5..5c37184 100644
--- a/icu4c/source/data/locales/nn.txt
+++ b/icu4c/source/data/locales/nn.txt
@@ -1,14 +1,28 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nn{
     AuxExemplarCharacters{"[á ǎ č ç đ è ê ń ñ ŋ š ŧ ü ž ä ö]"}
+    Ellipsis{
+        final{"{0}…"}
+        initial{"…{0}"}
+        medial{"{0}…{1}"}
+        word-final{"{0} …"}
+        word-initial{"… {0}"}
+        word-medial{"{0} … {1}"}
+    }
     ExemplarCharacters{"[a à b c d e é f g h i j k l m n o ó ò ô p q r s t u v w x y z æ ø å]"}
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Æ Ø Å]"}
     ExemplarCharactersNumbers{"[  , % ‰ + − 0 1 2 3 4 5 6 7 8 9]"}
+    ExemplarCharactersPunctuation{
+        "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ "
+        "′ ″]"
+    }
     NumberElements{
         default{"latn"}
         latn{
             miscPatterns{
+                approximately{"ca. {0}"}
                 atLeast{"≥{0}"}
                 range{"{0}‒{1}"}
             }
@@ -72,6 +86,7 @@
                 }
             }
             symbols{
+                approximatelySign{"≈"}
                 decimal{","}
                 exponential{"E"}
                 group{" "}
@@ -98,7 +113,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -153,6 +167,44 @@
                 yyyyQQQQ{"QQQQ y G"}
             }
             intervalFormats{
+                Gy{
+                    G{"y G–y G"}
+                    y{"y–y G"}
+                }
+                GyM{
+                    G{"MM.y GGGGG–MM.y GGGGG"}
+                    M{"MM.y–MM.y GGGGG"}
+                    y{"MM.y–MM.y GGGGG"}
+                }
+                GyMEd{
+                    G{"E dd.MM.y GGGGG–E dd.MM.y GGGGG"}
+                    M{"E dd.MM.y–E dd.MM.y GGGGG"}
+                    d{"E dd.MM.y–E dd.MM.y GGGGG"}
+                    y{"E dd.MM.y–E dd.MM.y GGGGG"}
+                }
+                GyMMM{
+                    G{"MMM y G–MMM y G"}
+                    M{"MMM–MMM y G"}
+                    y{"MMM y–MMM y G"}
+                }
+                GyMMMEd{
+                    G{"E d. MMM y G–E d. MMM y G"}
+                    M{"E d. MMM–E d. MMM y G"}
+                    d{"E d. MMM–E d. MMM y G"}
+                    y{"E d. MMM y–E d. MMM y G"}
+                }
+                GyMMMd{
+                    G{"d. MMM y G–d. MMM y G"}
+                    M{"d. MMM–d. MMM y G"}
+                    d{"d.–d. MMM y G"}
+                    y{"d. MMM y–d. MMM y G"}
+                }
+                GyMd{
+                    G{"dd.MM.y GGGGG–dd.MM.y GGGGG"}
+                    M{"dd.MM.y–dd.MM.y GGGGG"}
+                    d{"dd.MM.y–dd.MM.y GGGGG"}
+                    y{"dd.MM.y–dd.MM.y GGGGG"}
+                }
                 H{
                     H{"HH–HH"}
                 }
@@ -452,6 +504,44 @@
                 }
             }
             intervalFormats{
+                Gy{
+                    G{"y G–y G"}
+                    y{"y–y G"}
+                }
+                GyM{
+                    G{"MM.y GGGGG–MM.y GGGGG"}
+                    M{"MM.y–MM.y GGGGG"}
+                    y{"MM.y–MM.y GGGGG"}
+                }
+                GyMEd{
+                    G{"E dd.MM.y GGGGG–E dd.MM.y GGGGG"}
+                    M{"E dd.MM.y–E dd.MM.y GGGGG"}
+                    d{"E dd.MM.y–E dd.MM.y GGGGG"}
+                    y{"E dd.MM.y–E dd.MM.y GGGGG"}
+                }
+                GyMMM{
+                    G{"MMM y G–MMM y G"}
+                    M{"MMM–MMM y G"}
+                    y{"MMM y–MMM y G"}
+                }
+                GyMMMEd{
+                    G{"E d. MMM y G–E d. MMM y G"}
+                    M{"E d. MMM–E d. MMM y G"}
+                    d{"E d. MMM–E d. MMM y G"}
+                    y{"E d. MMM y–E d. MMM y G"}
+                }
+                GyMMMd{
+                    G{"d. MMM y G–d. MMM y G"}
+                    M{"d. MMM–d. MMM y G"}
+                    d{"d.–d. MMM y G"}
+                    y{"d. MMM y–d. MMM y G"}
+                }
+                GyMd{
+                    G{"dd.MM.y GGGGG–dd.MM.y GGGGG"}
+                    M{"dd.MM.y–dd.MM.y GGGGG"}
+                    d{"dd.MM.y–dd.MM.y GGGGG"}
+                    y{"dd.MM.y–dd.MM.y GGGGG"}
+                }
                 H{
                     H{"HH–HH"}
                 }
@@ -681,7 +771,7 @@
         }
     }
     characterLabel{
-        activities{"aktivitet"}
+        activities{"aktivitetar"}
         african_scripts{"afrikanske skriftsystem"}
         american_scripts{"amerikanske skriftsystem"}
         animal{"dyr"}
@@ -690,13 +780,13 @@
         body{"kropp"}
         box_drawing{"ruteteikning"}
         braille{"punktskrift"}
-        building{"bygnad"}
-        bullets_stars{"punktteikn/stjerne"}
+        building{"bygning"}
+        bullets_stars{"punktteikn/stjerner"}
         consonantal_jamo{"konsonantal jamo"}
         currency_symbols{"valutasymbol"}
         dash_connector{"tankestrek/bindeteikn"}
-        digits{"sifre"}
-        dingbats{"dingbat"}
+        digits{"siffer"}
+        dingbats{"dingbats"}
         divination_symbols{"spådomssymbol"}
         downwards_arrows{"piler som peiker nedover"}
         downwards_upwards_arrows{"piler som peiker nedover og oppover"}
@@ -746,12 +836,12 @@
         pictographs{"piktogram"}
         place{"stad"}
         plant{"plante"}
-        punctuation{"skilleteikn"}
+        punctuation{"skiljeteikn"}
         rightwards_arrows{"piler som peiker til høgre"}
         sign_standard_symbols{"teikn eller symbol"}
         small_form_variant{"små variantar"}
         smiley{"smilefjes"}
-        smileys_people{"smilefjes eller person"}
+        smileys_people{"smilefjes og personar"}
         south_asian_scripts{"sørasiatiske skriftsystem"}
         southeast_asian_scripts{"søraustasiatiske skriftsystem"}
         spacing{"med breidd"}
@@ -760,7 +850,7 @@
         technical_symbols{"tekniske symbol"}
         tone_marks{"tonemerke"}
         travel{"reise"}
-        travel_places{"reise eller stadar"}
+        travel_places{"reise og stadar"}
         upwards_arrows{"pil som peiker oppover"}
         variant_forms{"variantar"}
         vocalic_jamo{"vokalisk jamo"}
@@ -831,13 +921,13 @@
             dn{"dag i året"}
         }
         dayperiod{
-            dn{"f.m./e.m."}
+            dn{"a.m./p.m."}
         }
         dayperiod-narrow{
-            dn{"f.m./e.m."}
+            dn{"am/pm"}
         }
         dayperiod-short{
-            dn{"f.m./e.m."}
+            dn{"am/pm"}
         }
         era{
             dn{"tidsalder"}
@@ -1066,7 +1156,7 @@
             }
         }
         month-short{
-            dn{"mnd."}
+            dn{"md."}
             relativeTime{
                 future{
                     one{"om {0} md."}
@@ -1454,7 +1544,6 @@
         }
         week-short{
             dn{"veke"}
-            relativePeriod{"veka med {0}"}
             relativeTime{
                 future{
                     one{"om {0} v."}
@@ -1473,7 +1562,7 @@
             dn{"veke i md."}
         }
         weekOfMonth-short{
-            dn{"veke i mnd."}
+            dn{"veke i md."}
         }
         weekday{
             dn{"vekedag"}
@@ -1491,7 +1580,7 @@
             dn{"veked. i md."}
         }
         weekdayOfMonth-short{
-            dn{"veked. i mnd."}
+            dn{"veked. i md."}
         }
         year{
             dn{"år"}
@@ -1548,9 +1637,35 @@
         }
     }
     listPattern{
+        or{
+            2{"{0} eller {1}"}
+            end{"{0} eller {1}"}
+            middle{"{0}, {1}"}
+            start{"{0}, {1}"}
+        }
         standard{
             2{"{0} og {1}"}
             end{"{0} og {1}"}
+            middle{"{0}, {1}"}
+            start{"{0}, {1}"}
+        }
+        unit{
+            2{"{0}, {1}"}
+            end{"{0}, {1}"}
+            middle{"{0}, {1}"}
+            start{"{0}, {1}"}
+        }
+        unit-narrow{
+            2{"{0} {1}"}
+            end{"{0} {1}"}
+            middle{"{0} {1}"}
+            start{"{0} {1}"}
+        }
+        unit-short{
+            2{"{0}, {1}"}
+            end{"{0}, {1}"}
+            middle{"{0}, {1}"}
+            start{"{0}, {1}"}
         }
     }
     measurementSystemNames{
diff --git a/icu4c/source/data/locales/nn_NO.txt b/icu4c/source/data/locales/nn_NO.txt
index fa4747a..7dc9ac4 100644
--- a/icu4c/source/data/locales/nn_NO.txt
+++ b/icu4c/source/data/locales/nn_NO.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nn_NO{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/nnh.txt b/icu4c/source/data/locales/nnh.txt
index 19b7756..fada419 100644
--- a/icu4c/source/data/locales/nnh.txt
+++ b/icu4c/source/data/locales/nnh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nnh{
     AuxExemplarCharacters{"[q r x]"}
     ExemplarCharacters{
@@ -28,7 +29,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/nnh_CM.txt b/icu4c/source/data/locales/nnh_CM.txt
index e008c8f..d6af22d 100644
--- a/icu4c/source/data/locales/nnh_CM.txt
+++ b/icu4c/source/data/locales/nnh_CM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nnh_CM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/no.txt b/icu4c/source/data/locales/no.txt
index 097a923..474d0b2 100644
--- a/icu4c/source/data/locales/no.txt
+++ b/icu4c/source/data/locales/no.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no{
     "%%ALIAS"{"nb"}
 }
diff --git a/icu4c/source/data/locales/no_NO.txt b/icu4c/source/data/locales/no_NO.txt
index 188a8a4..5d7f859 100644
--- a/icu4c/source/data/locales/no_NO.txt
+++ b/icu4c/source/data/locales/no_NO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no_NO{
     "%%ALIAS"{"nb_NO"}
 }
diff --git a/icu4c/source/data/locales/no_NO_NY.txt b/icu4c/source/data/locales/no_NO_NY.txt
index aa897fe..c900df7 100644
--- a/icu4c/source/data/locales/no_NO_NY.txt
+++ b/icu4c/source/data/locales/no_NO_NY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no_NO_NY{
     "%%ALIAS"{"nn_NO"}
 }
diff --git a/icu4c/source/data/locales/nus.txt b/icu4c/source/data/locales/nus.txt
index 0edcc3b..d95bdd6 100644
--- a/icu4c/source/data/locales/nus.txt
+++ b/icu4c/source/data/locales/nus.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nus{
     ExemplarCharacters{
         "[a ä {a\u0331} b c d e ë {e\u0331} ɛ {ɛ\u0308} {ɛ\u0331} {ɛ\u0331\u0308} f g"
@@ -22,7 +23,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/nus_SS.txt b/icu4c/source/data/locales/nus_SS.txt
index 00d9bfa..c573ba0 100644
--- a/icu4c/source/data/locales/nus_SS.txt
+++ b/icu4c/source/data/locales/nus_SS.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nus_SS{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/nyn.txt b/icu4c/source/data/locales/nyn.txt
index 909607a..fb4a4c2 100644
--- a/icu4c/source/data/locales/nyn.txt
+++ b/icu4c/source/data/locales/nyn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nyn{
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"}
@@ -10,7 +11,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/nyn_UG.txt b/icu4c/source/data/locales/nyn_UG.txt
index 97ff192..a4a96e4 100644
--- a/icu4c/source/data/locales/nyn_UG.txt
+++ b/icu4c/source/data/locales/nyn_UG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nyn_UG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/om.txt b/icu4c/source/data/locales/om.txt
index 7e44070..4918115 100644
--- a/icu4c/source/data/locales/om.txt
+++ b/icu4c/source/data/locales/om.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 om{
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"}
@@ -35,7 +36,6 @@
         native{"latn"}
         traditional{"ethi"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/om_ET.txt b/icu4c/source/data/locales/om_ET.txt
index b4b3663..5ce7652 100644
--- a/icu4c/source/data/locales/om_ET.txt
+++ b/icu4c/source/data/locales/om_ET.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 om_ET{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/om_KE.txt b/icu4c/source/data/locales/om_KE.txt
index eaf2dc6..5ac3cce 100644
--- a/icu4c/source/data/locales/om_KE.txt
+++ b/icu4c/source/data/locales/om_KE.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 om_KE{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/or.txt b/icu4c/source/data/locales/or.txt
index 404e3a7..f316df9 100644
--- a/icu4c/source/data/locales/or.txt
+++ b/icu4c/source/data/locales/or.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 or{
     AuxExemplarCharacters{"[\u200C\u200D]"}
     Ellipsis{
@@ -240,7 +241,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/or_IN.txt b/icu4c/source/data/locales/or_IN.txt
index d13cadf..a7561f3 100644
--- a/icu4c/source/data/locales/or_IN.txt
+++ b/icu4c/source/data/locales/or_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 or_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/os.txt b/icu4c/source/data/locales/os.txt
index 9021d38..e3e24ac 100644
--- a/icu4c/source/data/locales/os.txt
+++ b/icu4c/source/data/locales/os.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 os{
     AuxExemplarCharacters{"[]"}
     Ellipsis{
@@ -44,7 +45,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/os_GE.txt b/icu4c/source/data/locales/os_GE.txt
index 2cca8df..2458086 100644
--- a/icu4c/source/data/locales/os_GE.txt
+++ b/icu4c/source/data/locales/os_GE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 os_GE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/os_RU.txt b/icu4c/source/data/locales/os_RU.txt
index d33b3f3..3559d9d 100644
--- a/icu4c/source/data/locales/os_RU.txt
+++ b/icu4c/source/data/locales/os_RU.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 os_RU{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/pa.txt b/icu4c/source/data/locales/pa.txt
index 34c2ed5..72bc816 100644
--- a/icu4c/source/data/locales/pa.txt
+++ b/icu4c/source/data/locales/pa.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa{
     AuxExemplarCharacters{"[\u200C\u200D ਃ \u0A02 \u0A01 {ਲ\u0A3C}]"}
     Ellipsis{
@@ -257,7 +258,6 @@
         minimumGroupingDigits{"1"}
         native{"guru"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -908,7 +908,7 @@
                     "ਸੰਨ",
                 }
                 abbreviated%variant{
-                    "ਈ. ਪੂ. ਸੰ.",
+                    "ਈ. ਪੂ.",
                     "ਈ. ਸੰ.",
                 }
                 narrow{
@@ -916,7 +916,7 @@
                     "ਸੰਨ",
                 }
                 narrow%variant{
-                    "ਈ.ਪੂ.ਸੰ.",
+                    "ਈ. ਪੂ.",
                     "ਈ.ਸੰ.",
                 }
                 wide{
@@ -2536,7 +2536,7 @@
     listPattern{
         or{
             2{"{0} ਜਾਂ {1}"}
-            end{"{0}, or {1}"}
+            end{"{0} ਜਾਂ {1}"}
             middle{"{0}, {1}"}
             start{"{0}, {1}"}
         }
diff --git a/icu4c/source/data/locales/pa_Arab.txt b/icu4c/source/data/locales/pa_Arab.txt
index ad42089..611479e 100644
--- a/icu4c/source/data/locales/pa_Arab.txt
+++ b/icu4c/source/data/locales/pa_Arab.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_Arab{
     %%Parent{"root"}
     AuxExemplarCharacters{"[\u200E\u200F أ ٻ ة ٺ ټ ٽ]"}
@@ -23,7 +24,6 @@
         }
         native{"arabext"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/pa_Arab_PK.txt b/icu4c/source/data/locales/pa_Arab_PK.txt
index 6d882e0..4396742 100644
--- a/icu4c/source/data/locales/pa_Arab_PK.txt
+++ b/icu4c/source/data/locales/pa_Arab_PK.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_Arab_PK{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/pa_Guru.txt b/icu4c/source/data/locales/pa_Guru.txt
index a0ee569..f10658f 100644
--- a/icu4c/source/data/locales/pa_Guru.txt
+++ b/icu4c/source/data/locales/pa_Guru.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_Guru{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/pa_Guru_IN.txt b/icu4c/source/data/locales/pa_Guru_IN.txt
index a46aea4..223b28f 100644
--- a/icu4c/source/data/locales/pa_Guru_IN.txt
+++ b/icu4c/source/data/locales/pa_Guru_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_Guru_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/pa_IN.txt b/icu4c/source/data/locales/pa_IN.txt
index b18bba6..0c963d7 100644
--- a/icu4c/source/data/locales/pa_IN.txt
+++ b/icu4c/source/data/locales/pa_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_IN{
     "%%ALIAS"{"pa_Guru_IN"}
 }
diff --git a/icu4c/source/data/locales/pa_PK.txt b/icu4c/source/data/locales/pa_PK.txt
index 1c66c7b..29612ad 100644
--- a/icu4c/source/data/locales/pa_PK.txt
+++ b/icu4c/source/data/locales/pa_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_PK{
     "%%ALIAS"{"pa_Arab_PK"}
 }
diff --git a/icu4c/source/data/locales/pcm.txt b/icu4c/source/data/locales/pcm.txt
index dabcaa0..3ab3361 100644
--- a/icu4c/source/data/locales/pcm.txt
+++ b/icu4c/source/data/locales/pcm.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pcm{
     AuxExemplarCharacters{"[à c è {ẹ\u0300} ì ò {ọ\u0300} q ù x]"}
     Ellipsis{
@@ -214,7 +215,6 @@
         }
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -429,10 +429,10 @@
                 Ed{"d E"}
                 Ehm{"E h:mm a"}
                 Ehms{"E h:mm:ss a"}
-                Gy{"y G"}
-                GyMMM{"MMM y G"}
-                GyMMMEd{"E, d MMM y G"}
-                GyMMMd{"d MMM y G"}
+                Gy{"G y"}
+                GyMMM{"G y MMM"}
+                GyMMMEd{"G y MMM d, E"}
+                GyMMMd{"G y MMM d"}
                 H{"HH"}
                 Hm{"HH:mm"}
                 Hms{"HH:mm:ss"}
@@ -468,7 +468,7 @@
                 yQQQQ{"QQQQ y"}
                 yw{
                     one{"'Wik' w 'fọ' Y"}
-                    other{"'week' w 'of' Y"}
+                    other{"'Wiik' w 'fọ' Y"}
                 }
             }
             dayNames{
@@ -594,42 +594,42 @@
                     m{"h:mm–h:mm B"}
                 }
                 Gy{
-                    G{"y G – y G"}
-                    y{"y–y G"}
+                    G{"Gy – Gy"}
+                    y{"G y–y"}
                 }
                 GyM{
-                    G{"MM-y GGGGG – MM-y GGGGG"}
-                    M{"MM-y – MM-y GGGGG"}
-                    y{"MM-y – MM-y GGGGG"}
+                    G{"GGGGG y-MM – GGGGG y-MM"}
+                    M{"GGGGG y-MM – y-MM"}
+                    y{"GGGGG y-MM – y-MM"}
                 }
                 GyMEd{
-                    G{"E, dd-MM-y GGGGG – E, dd-MM-y GGGGG"}
-                    M{"E, dd-MM-y – E, dd-MM-y GGGGG"}
-                    d{"E, dd-MM-y – E, dd-MM-y GGGGG"}
-                    y{"E, dd-MM-y – E, dd-MM-y GGGGG"}
+                    G{"GGGGG y-MM-dd, E – y-MM-dd, E"}
+                    M{"GGGGG y-MM-dd, E – y-MM-dd, E"}
+                    d{"GGGGG y-MM-dd, E – y-MM-dd, E"}
+                    y{"GGGGG y-MM-dd, E – y-MM-dd, E"}
                 }
                 GyMMM{
-                    G{"MMM y G – MMM y G"}
-                    M{"MMM–MMM y G"}
-                    y{"MMM y – MMM y G"}
+                    G{"G y MMM – G y MMM"}
+                    M{"G y MMM–MMM"}
+                    y{"G y MMM – y MMM"}
                 }
                 GyMMMEd{
-                    G{"E, d MMM y G – E, d MMM y G"}
-                    M{"E, d MMM – E, d MMM y G"}
-                    d{"E, d MMM – E, d MMM y G"}
-                    y{"E, d MMM y – E, d MMM y G"}
+                    G{"G y MMM d, E – G y MMM"}
+                    M{"G y MMM d, E – MMM d, E"}
+                    d{"G y MMM d, E – MMM d, E"}
+                    y{"G y MMM d, E – y MMM d, E"}
                 }
                 GyMMMd{
-                    G{"d MMM y G – d MMM y G"}
-                    M{"d MMM – d MMM y G"}
-                    d{"d–d MMM y G"}
-                    y{"d MMM y – d MMM y G"}
+                    G{"G y MMM d – G y MMM d"}
+                    M{"G y MMM d – MMM d"}
+                    d{"G y MMM d–d"}
+                    y{"G y MMM d – y MMM d"}
                 }
                 GyMd{
-                    G{"dd-MM-y GGGGG – dd-MM-y GGGGG"}
-                    M{"dd-MM-y – dd-MM-y GGGGG"}
-                    d{"dd-MM-y – dd-MM-y GGGGG"}
-                    y{"dd-MM-y – dd-MM-y GGGGG"}
+                    G{"GGGGG y-MM-dd – GGGGG y-MM-dd"}
+                    M{"GGGGG y-MM-dd – y-MM-dd"}
+                    d{"GGGGG y-MM-dd – y-MM-dd"}
+                    y{"GGGGG y-MM-dd – y-MM-dd"}
                 }
                 H{
                     H{"HH–HH"}
diff --git a/icu4c/source/data/locales/pcm_NG.txt b/icu4c/source/data/locales/pcm_NG.txt
index 3274685..7c50288 100644
--- a/icu4c/source/data/locales/pcm_NG.txt
+++ b/icu4c/source/data/locales/pcm_NG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pcm_NG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/pl.txt b/icu4c/source/data/locales/pl.txt
index bdbe889..2cf8677 100644
--- a/icu4c/source/data/locales/pl.txt
+++ b/icu4c/source/data/locales/pl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pl{
     AuxExemplarCharacters{"[à â å ä æ ç é è ê ë î ï ô ö œ q ß ù û ü v x ÿ]"}
     Ellipsis{
@@ -7,7 +8,7 @@
         word-initial{"…{0}"}
     }
     ExemplarCharacters{"[a ą b c ć d e ę f g h i j k l ł m n ń o ó p r s ś t u w y z ź ż]"}
-    ExemplarCharactersIndex{"[A Ą B C Ć D E Ę F G H I J K L Ł M N Ń O Ó P Q R S Ś T U V W X Y Z Ź Ż]"}
+    ExemplarCharactersIndex{"[A B C Ć D E F G H I J K L Ł M N O Ó P Q R S Ś T U V W X Y Z Ź Ż]"}
     ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     ExemplarCharactersPunctuation{
         "[\\- ‐ ‑ – — , ; \\: ! ? . … ' \u0022 ” „ « » ( ) \\[ \\] \\{ \\} § @ * / "
@@ -282,7 +283,6 @@
         }
         minimumGroupingDigits{"2"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -947,7 +947,6 @@
                 d{
                     d{"d–d"}
                 }
-                fallback{"{0}–{1}"}
                 h{
                     a{"h a–h a"}
                     h{"h–h a"}
@@ -2670,7 +2669,7 @@
         number{
             lenient{
                 "[\\-‒⁻₋−➖﹣-]",
-                "[,،٫、︐︑﹐﹑,、]",
+                "[,،٫⹁、︐︑﹐﹑,、]",
                 "[+⁺₊➕﬩﹢+]",
             }
         }
diff --git a/icu4c/source/data/locales/pl_PL.txt b/icu4c/source/data/locales/pl_PL.txt
index 7bdd4c8..7f08b34 100644
--- a/icu4c/source/data/locales/pl_PL.txt
+++ b/icu4c/source/data/locales/pl_PL.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pl_PL{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ps.txt b/icu4c/source/data/locales/ps.txt
index c12ec1b..0d836cb 100644
--- a/icu4c/source/data/locales/ps.txt
+++ b/icu4c/source/data/locales/ps.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ps{
     AuxExemplarCharacters{"[\u200C \u200D \u200E\u200F ے]"}
     Ellipsis{
@@ -226,7 +227,6 @@
         minimumGroupingDigits{"1"}
         native{"arabext"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -2063,6 +2063,10 @@
         characters{"right-to-left"}
     }
     listPattern{
+        or{
+            2{"{0} or {1}"}
+            end{"{0}, یا {1}"}
+        }
         standard{
             2{"{0} او {1}"}
             end{"{0}، او {1}"}
@@ -2095,7 +2099,7 @@
         }
     }
     measurementSystemNames{
-        UK{"بريتاني"}
+        UK{"برتانوې"}
         US{"متحده ايالات"}
         metric{"مېټرک"}
     }
@@ -2122,7 +2126,7 @@
         number{
             lenient{
                 "[\\-‒⁻₋−➖﹣-]",
-                "[,،٫、︐︑﹐﹑,、]",
+                "[,،٫⹁、︐︑﹐﹑,、]",
                 "[+⁺₊➕﬩﹢+]",
             }
         }
diff --git a/icu4c/source/data/locales/ps_AF.txt b/icu4c/source/data/locales/ps_AF.txt
index 3b8c848..6019028 100644
--- a/icu4c/source/data/locales/ps_AF.txt
+++ b/icu4c/source/data/locales/ps_AF.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ps_AF{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ps_PK.txt b/icu4c/source/data/locales/ps_PK.txt
index a9e1398..5b9afb5 100644
--- a/icu4c/source/data/locales/ps_PK.txt
+++ b/icu4c/source/data/locales/ps_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ps_PK{
     AuxExemplarCharacters{"[\u200C \u200D \u200E\u200F]"}
     ExemplarCharacters{
@@ -7,7 +8,6 @@
         " ء ب پ ت ټ ث ج ځ چ څ ح خ د ډ ذ ر ړ ز ژ ږ س ش ښ ص ض ط ظ ع غ ف ق ک ګ گ ل م ن ڼ"
         " ه ة و ؤ ی ے ي ې ۍ ئ]"
     }
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/pt.txt b/icu4c/source/data/locales/pt.txt
index bda9e0d..37b1745 100644
--- a/icu4c/source/data/locales/pt.txt
+++ b/icu4c/source/data/locales/pt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt{
     AuxExemplarCharacters{"[ª ă å ä ā æ è ĕ ë ē ì ĭ î ï ī ñ º ŏ ö ø ō œ ù ŭ û ü ū ÿ]"}
     Ellipsis{
@@ -211,7 +212,6 @@
         }
         minimumGroupingDigits{"1"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -724,42 +724,42 @@
                     m{"h:mm – h:mm B"}
                 }
                 Gy{
-                    G{"G y – G y"}
-                    y{"G y – y"}
+                    G{"y G – y G"}
+                    y{"y – y G"}
                 }
                 GyM{
-                    G{"GGGGG MM/y – GGGGG MM/y"}
-                    M{"GGGGG MM/y – MM/y"}
-                    y{"GGGGG MM/y – MM/y"}
+                    G{"M/y GGGGG – M/y GGGGG"}
+                    M{"M/y – M/y GGGGG"}
+                    y{"M/y – M/y GGGGG"}
                 }
                 GyMEd{
-                    G{"GGGGG E dd/MM/y – GGGGG E dd/MM/y"}
-                    M{"GGGGG E dd/MM/y – E dd/MM/y"}
-                    d{"GGGGG E dd/MM/y – dd/MM/y"}
-                    y{"GGGGG E dd/MM/y – E dd/MM/y"}
+                    G{"E, M/d/y GGGGG – E, M/d/y GGGGG"}
+                    M{"E, M/d/y – E, M/d/y GGGGG"}
+                    d{"E, M/d/y – E, M/d/y GGGGG"}
+                    y{"E, M/d/y – E, M/d/y GGGGG"}
                 }
                 GyMMM{
-                    G{"G MMM y – G MMM y"}
-                    M{"G MMM y – MMM"}
-                    y{"G MMM y – MMM y"}
+                    G{"MMM y G – MMM y G"}
+                    M{"MMM – MMM y G"}
+                    y{"MMM y – MMM y G"}
                 }
                 GyMMMEd{
-                    G{"G E, d 'de' MMM y – G E, d 'de' MMM y"}
-                    M{"G E, d 'de' MMM y – E, d 'de' MMM"}
-                    d{"G E, d 'de' MMM y – E, d 'de' MMM"}
-                    y{"G E, d 'de' MMM y – E, d 'de' MMM y"}
+                    G{"E, MMM d, y G – E, MMM d, y G"}
+                    M{"E, MMM d – E, MMM d, y G"}
+                    d{"E, MMM d – E, MMM d, y G"}
+                    y{"E, MMM d, y – E, MMM d, y G"}
                 }
                 GyMMMd{
-                    G{"G d 'de' MMM y – G d 'de' MMM y"}
-                    M{"G d 'de' MMM y – d 'de' MMM"}
-                    d{"G d – d 'de' MMM y"}
-                    y{"G d 'de' MMM y – d 'de' MMM y"}
+                    G{"MMM d, y G – MMM d, y G"}
+                    M{"MMM d – MMM d, y G"}
+                    d{"MMM d – d, y G"}
+                    y{"MMM d, y – MMM d, y G"}
                 }
                 GyMd{
-                    G{"GGGGG dd/MM/y – GGGGG dd/MM/y"}
-                    M{"GGGGG dd/MM/y – dd/MM/y"}
-                    d{"GGGGG dd/MM/y – dd/MM/y"}
-                    y{"GGGGG dd/MM/y – dd/MM/y"}
+                    G{"M/d/y GGGGG – M/d/y GGGGG"}
+                    M{"M/d/y – M/d/y GGGGG"}
+                    d{"M/d/y – M/d/y GGGGG"}
+                    y{"M/d/y – M/d/y GGGGG"}
                 }
                 H{
                     H{"HH'h' - HH'h'"}
@@ -2001,7 +2001,7 @@
         number{
             lenient{
                 "[\\-‒⁻₋−➖﹣-]",
-                "[,،٫、︐︑﹐﹑,、]",
+                "[,،٫⹁、︐︑﹐﹑,、]",
                 "[+⁺₊➕﬩﹢+]",
             }
         }
diff --git a/icu4c/source/data/locales/pt_AO.txt b/icu4c/source/data/locales/pt_AO.txt
index c86c866..bf49734 100644
--- a/icu4c/source/data/locales/pt_AO.txt
+++ b/icu4c/source/data/locales/pt_AO.txt
@@ -1,9 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_AO{
     %%Parent{"pt_PT"}
     NumberElements{
         minimumGroupingDigits{"1"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/pt_BR.txt b/icu4c/source/data/locales/pt_BR.txt
index 6889670..cca79d2 100644
--- a/icu4c/source/data/locales/pt_BR.txt
+++ b/icu4c/source/data/locales/pt_BR.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_BR{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/pt_CH.txt b/icu4c/source/data/locales/pt_CH.txt
index 3a679be..67d661e 100644
--- a/icu4c/source/data/locales/pt_CH.txt
+++ b/icu4c/source/data/locales/pt_CH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_CH{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/pt_CV.txt b/icu4c/source/data/locales/pt_CV.txt
index 6d4dd3a..ebaaea8 100644
--- a/icu4c/source/data/locales/pt_CV.txt
+++ b/icu4c/source/data/locales/pt_CV.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_CV{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/pt_GQ.txt b/icu4c/source/data/locales/pt_GQ.txt
index 7cbf771..9364da9 100644
--- a/icu4c/source/data/locales/pt_GQ.txt
+++ b/icu4c/source/data/locales/pt_GQ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_GQ{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/pt_GW.txt b/icu4c/source/data/locales/pt_GW.txt
index da37fbe..e28e46c 100644
--- a/icu4c/source/data/locales/pt_GW.txt
+++ b/icu4c/source/data/locales/pt_GW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_GW{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/pt_LU.txt b/icu4c/source/data/locales/pt_LU.txt
index ebead8d..c402ea2 100644
--- a/icu4c/source/data/locales/pt_LU.txt
+++ b/icu4c/source/data/locales/pt_LU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_LU{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/pt_MO.txt b/icu4c/source/data/locales/pt_MO.txt
index 4a57d5d..1bc0960 100644
--- a/icu4c/source/data/locales/pt_MO.txt
+++ b/icu4c/source/data/locales/pt_MO.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_MO{
     %%Parent{"pt_PT"}
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/pt_MZ.txt b/icu4c/source/data/locales/pt_MZ.txt
index b99439c..a8cc01a 100644
--- a/icu4c/source/data/locales/pt_MZ.txt
+++ b/icu4c/source/data/locales/pt_MZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_MZ{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/pt_PT.txt b/icu4c/source/data/locales/pt_PT.txt
index 32406e9..0b7a510 100644
--- a/icu4c/source/data/locales/pt_PT.txt
+++ b/icu4c/source/data/locales/pt_PT.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_PT{
     Ellipsis{
         final{"{0}…"}
@@ -160,6 +161,7 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 group{" "}
             }
         }
@@ -171,7 +173,6 @@
         minimumGroupingDigits{"2"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -274,6 +275,44 @@
                 yyyyQQQQ{"QQQQ 'de' y G"}
             }
             intervalFormats{
+                Gy{
+                    G{"y G – y G"}
+                    y{"y – y G"}
+                }
+                GyM{
+                    G{"MM/y GGGGG – MM/y GGGGG"}
+                    M{"MM/y – MM/y GGGGG"}
+                    y{"MM/y – MM/y GGGGG"}
+                }
+                GyMEd{
+                    G{"E, d/MM/y GGGGG – E, d/MM/y GGGGG"}
+                    M{"E, d/MM/y – E, d/MM/y GGGGG"}
+                    d{"E, d/MM/y – E, d/MM/y GGGGG"}
+                    y{"E, d/MM/y – E, d/MM/y GGGGG"}
+                }
+                GyMMM{
+                    G{"MMM y G – MMM y G"}
+                    M{"MMM – MMM y G"}
+                    y{"MMM y – MMM y G"}
+                }
+                GyMMMEd{
+                    G{"E, d 'de' MMMM, y G – E, d 'de' MMMM, y G"}
+                    M{"E, d 'de' MMMM – E, d 'de' MMMM, y G"}
+                    d{"E, d 'de' MMMM – E, d 'de' MMMM, y G"}
+                    y{"E, d 'de' MMMM, y – E, d 'de' MMMM, y G"}
+                }
+                GyMMMd{
+                    G{"d 'de' MMMM, y G – d 'de' MMMM, y G"}
+                    M{"d 'de' MMMM – d 'de' MMMM, y G"}
+                    d{"d – d 'de' MMMM, y G"}
+                    y{"d 'de' MMMM, y – d 'de' MMMM, y G"}
+                }
+                GyMd{
+                    G{"d/MM/y GGGGG – d/MM/y GGGGG"}
+                    M{"d/MM/y – d/MM/y GGGGG"}
+                    d{"d/MM/y – d/MM/y GGGGG"}
+                    y{"d/MM/y – d/MM/y GGGGG"}
+                }
                 M{
                     M{"MM–MM"}
                 }
@@ -379,6 +418,15 @@
                         "S",
                         "S",
                     }
+                    short{
+                        "dom.",
+                        "seg.",
+                        "ter.",
+                        "qua.",
+                        "qui.",
+                        "sex.",
+                        "sáb.",
+                    }
                 }
                 stand-alone{
                     abbreviated{
@@ -434,26 +482,12 @@
                 }
             }
             intervalFormats{
-                Gy{
-                    G{"y G – y G"}
-                    y{"y – y G"}
-                }
-                GyM{
-                    G{"M/y GGGGG – M/y GGGGG"}
-                    M{"M/y – M/y GGGGG"}
-                    y{"M/y – M/y GGGGG"}
-                }
                 GyMEd{
                     G{"E, d/M/y GGGGG – E, d/M/y GGGGG"}
                     M{"E, d/M/y – E, d/M/y GGGGG"}
                     d{"E, d/M/y – E, d/M/y GGGGG"}
                     y{"E, d/M/y – E, d/M/y GGGGG"}
                 }
-                GyMMM{
-                    G{"MMM y G – MMM y G"}
-                    M{"MMM – MMM y G"}
-                    y{"MMM y – MMM y G"}
-                }
                 GyMMMEd{
                     G{"E, d MMM y G – E, d MMM y G"}
                     M{"E, d MMM – E, d MMM y G"}
@@ -673,8 +707,8 @@
                     other{"+{0} dias"}
                 }
                 past{
-                    one{"há {0} dias"}
-                    other{"há {0} dias"}
+                    one{"-{0} dia"}
+                    other{"-{0} dias"}
                 }
             }
         }
@@ -1127,12 +1161,6 @@
                 }
             }
         }
-        weekday-narrow{
-            dn{"dia da semana"}
-        }
-        weekday-short{
-            dn{"dia da semana"}
-        }
         year{
             relativeTime{
                 future{
diff --git a/icu4c/source/data/locales/pt_ST.txt b/icu4c/source/data/locales/pt_ST.txt
index e432167..ba0c09e 100644
--- a/icu4c/source/data/locales/pt_ST.txt
+++ b/icu4c/source/data/locales/pt_ST.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_ST{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/pt_TL.txt b/icu4c/source/data/locales/pt_TL.txt
index b3777b6..0dafd09 100644
--- a/icu4c/source/data/locales/pt_TL.txt
+++ b/icu4c/source/data/locales/pt_TL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_TL{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/qu.txt b/icu4c/source/data/locales/qu.txt
index b64461f..ea79a6c 100644
--- a/icu4c/source/data/locales/qu.txt
+++ b/icu4c/source/data/locales/qu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 qu{
     AuxExemplarCharacters{
         "[á à ă â å ä ã ā æ b c ç d e é è ĕ ê ë ē f g í ì ĭ î ï ī j o ó ò ŏ ô ö ø ō œ"
@@ -8,6 +9,10 @@
     ExemplarCharacters{"[a {ch} {chʼ} h i k {kʼ} l {ll} m n ñ p {pʼ} q {qʼ} s t {tʼ} u w y]"}
     ExemplarCharactersIndex{"[A {Ch} H I K L {Ll} M N Ñ P Q S T U W Y]"}
     ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
+    ExemplarCharactersPunctuation{
+        "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ "
+        "′ ″]"
+    }
     NumberElements{
         latn{
             miscPatterns{
@@ -156,7 +161,6 @@
         }
         minimumGroupingDigits{"1"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/qu_BO.txt b/icu4c/source/data/locales/qu_BO.txt
index e7395e9..2103fc5 100644
--- a/icu4c/source/data/locales/qu_BO.txt
+++ b/icu4c/source/data/locales/qu_BO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 qu_BO{
     NumberElements{
         latn{
@@ -9,5 +10,4 @@
             }
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/qu_EC.txt b/icu4c/source/data/locales/qu_EC.txt
index bb24038..2be18e0 100644
--- a/icu4c/source/data/locales/qu_EC.txt
+++ b/icu4c/source/data/locales/qu_EC.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 qu_EC{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/qu_PE.txt b/icu4c/source/data/locales/qu_PE.txt
index 8319e2d..49ec3db 100644
--- a/icu4c/source/data/locales/qu_PE.txt
+++ b/icu4c/source/data/locales/qu_PE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 qu_PE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/rm.txt b/icu4c/source/data/locales/rm.txt
index 396266e..33e07da 100644
--- a/icu4c/source/data/locales/rm.txt
+++ b/icu4c/source/data/locales/rm.txt
@@ -1,11 +1,13 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rm{
     AuxExemplarCharacters{"[á ă â å ä ā æ ç ĕ ê ë ē í ĭ î ï ī ñ ó ŏ ô ö ø ō œ ú ŭ û ü ū ÿ]"}
     ExemplarCharacters{"[a à b c d e é è f g h i ì j k l m n o ò p q r s t u ù v w x y z]"}
     ExemplarCharactersIndex{"[A À B C D E É È F G H I Ì J K L M N O Ò P Q R S T U Ù V W X Y Z]"}
     ExemplarCharactersNumbers{"[. ’ % ‰ + − 0 1 2 3 4 5 6 7 8 9]"}
     NumberElements{
+        default{"latn"}
         latn{
             miscPatterns{
                 atLeast{"≥{0}"}
@@ -33,9 +35,15 @@
                 timeSeparator{":"}
             }
         }
+        minimalPairs{
+            plural{
+                one{"{0} di"}
+                other{"{0} dis"}
+            }
+        }
         minimumGroupingDigits{"1"}
+        native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -47,11 +55,11 @@
                 "d MMMM y G",
                 "dd-MM-y G",
                 "dd-MM-y GGGGG",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
+                "{1}, {0}",
+                "{1} 'a' 'las' {0}",
+                "{1} 'a' 'las' {0}",
+                "{1}, {0}",
+                "{1}, {0}",
             }
             availableFormats{
                 E{"ccc"}
@@ -656,7 +664,7 @@
     }
     fields{
         day{
-            dn{"Tag"}
+            dn{"di"}
             relative{
                 "-1"{"ier"}
                 "-2"{"stersas"}
@@ -665,6 +673,12 @@
                 "2"{"puschmaun"}
             }
         }
+        day-narrow{
+            dn{"d"}
+        }
+        day-short{
+            dn{"di"}
+        }
         dayperiod{
             dn{"mesadad dal di"}
         }
@@ -680,9 +694,20 @@
         month{
             dn{"mais"}
         }
+        quarter{
+            dn{"quartal"}
+        }
         second{
             dn{"secunda"}
         }
+        sun-short{
+            relativeTime{
+                future{
+                    one{"+{0} dumengia"}
+                    other{"en {0} du"}
+                }
+            }
+        }
         week{
             dn{"emna"}
         }
@@ -691,11 +716,42 @@
         }
         year{
             dn{"onn"}
+            relative{
+                "-1"{"l’onn passà"}
+                "0"{"quest onn"}
+                "1"{"l’onn proxim"}
+            }
         }
         zone{
             dn{"zona d’urari"}
         }
     }
+    listPattern{
+        or{
+            2{"{0} u {1}"}
+            end{"{0} u {1}"}
+        }
+        or-narrow{
+            2{"{0} u {1}"}
+            end{"{0} u {1}"}
+        }
+        or-short{
+            2{"{0} u {1}"}
+            end{"{0} u {1}"}
+        }
+        standard{
+            2{"{0} e {1}"}
+            end{"{0} e {1}"}
+            middle{"{0}, {1}"}
+            start{"{0}, {1}"}
+        }
+        unit-narrow{
+            2{"{0} {1}"}
+            end{"{0} {1}"}
+            middle{"{0} {1}"}
+            start{"{0} {1}"}
+        }
+    }
     measurementSystemNames{
         UK{"englais"}
         US{"american"}
diff --git a/icu4c/source/data/locales/rm_CH.txt b/icu4c/source/data/locales/rm_CH.txt
index 3d1c34f..218ecd1 100644
--- a/icu4c/source/data/locales/rm_CH.txt
+++ b/icu4c/source/data/locales/rm_CH.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rm_CH{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/rn.txt b/icu4c/source/data/locales/rn.txt
index 1615181..4f0fd66 100644
--- a/icu4c/source/data/locales/rn.txt
+++ b/icu4c/source/data/locales/rn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rn{
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"}
@@ -17,7 +18,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/rn_BI.txt b/icu4c/source/data/locales/rn_BI.txt
index 5687a56..d506812 100644
--- a/icu4c/source/data/locales/rn_BI.txt
+++ b/icu4c/source/data/locales/rn_BI.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rn_BI{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ro.txt b/icu4c/source/data/locales/ro.txt
index 9b90bb4..147b9c8 100644
--- a/icu4c/source/data/locales/ro.txt
+++ b/icu4c/source/data/locales/ro.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ro{
     AuxExemplarCharacters{"[á à å ä ç é è ê ë ñ ö q ş ţ ü]"}
     Ellipsis{
@@ -250,7 +251,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ro_MD.txt b/icu4c/source/data/locales/ro_MD.txt
index 3fb9543..2ce2ad0 100644
--- a/icu4c/source/data/locales/ro_MD.txt
+++ b/icu4c/source/data/locales/ro_MD.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ro_MD{
-    Version{"37"}
     calendar{
         gregorian{
             dayNames{
diff --git a/icu4c/source/data/locales/ro_RO.txt b/icu4c/source/data/locales/ro_RO.txt
index 9fb3ea1..c682ce7 100644
--- a/icu4c/source/data/locales/ro_RO.txt
+++ b/icu4c/source/data/locales/ro_RO.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ro_RO{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/rof.txt b/icu4c/source/data/locales/rof.txt
index 544ccc2..9cdbb9f 100644
--- a/icu4c/source/data/locales/rof.txt
+++ b/icu4c/source/data/locales/rof.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rof{
     AuxExemplarCharacters{"[q x]"}
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p r s t u v w y z]"}
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/rof_TZ.txt b/icu4c/source/data/locales/rof_TZ.txt
index 15b900a..c855e2c 100644
--- a/icu4c/source/data/locales/rof_TZ.txt
+++ b/icu4c/source/data/locales/rof_TZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rof_TZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/root.txt b/icu4c/source/data/locales/root.txt
index c4eeba1..d495186 100644
--- a/icu4c/source/data/locales/root.txt
+++ b/icu4c/source/data/locales/root.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 root{
     AuxExemplarCharacters{"[]"}
     Ellipsis{
@@ -22,6 +23,7 @@
                 percentFormat{"#,##0%"}
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{"٫"}
                 exponential{"اس"}
                 group{"٬"}
@@ -38,6 +40,7 @@
         }
         arabext{
             symbols{
+                approximatelySign{"~"}
                 decimal{"٫"}
                 exponential{"×۱۰^"}
                 group{"٬"}
@@ -146,6 +149,7 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -171,7 +175,7 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
+    Version{"38.1"}
     calendar{
         buddhist{
             AmPmMarkers:alias{"/LOCALE/calendar/gregorian/AmPmMarkers"}
@@ -2618,11 +2622,11 @@
         number{
             lenient{
                 "[\\-‐‒–⁻₋−➖﹣-]",
-                "[,،٫、︐︑﹐﹑,、]",
+                "[,،٫⹁、︐︑﹐﹑,、]",
                 "[+⁺₊➕﬩﹢+]",
             }
             stricter{
-                "[,٫︐﹐,]",
+                "[,٫⹁︐﹐,]",
                 "[.․﹒.。]",
             }
         }
diff --git a/icu4c/source/data/locales/ru.txt b/icu4c/source/data/locales/ru.txt
index 6bac8fa..98764e2 100644
--- a/icu4c/source/data/locales/ru.txt
+++ b/icu4c/source/data/locales/ru.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru{
     AuxExemplarCharacters{
         "[{а\u0301} {е\u0301} {и\u0301} {о\u0301} {у\u0301} {ы\u0301} {э\u0301} {ю"
@@ -264,6 +265,7 @@
                 }
             }
             symbols{
+                approximatelySign{"≈"}
                 decimal{","}
                 exponential{"E"}
                 group{" "}
@@ -292,7 +294,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
diff --git a/icu4c/source/data/locales/ru_BY.txt b/icu4c/source/data/locales/ru_BY.txt
index 3dfcd5d..8d9efe1 100644
--- a/icu4c/source/data/locales/ru_BY.txt
+++ b/icu4c/source/data/locales/ru_BY.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru_BY{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ru_KG.txt b/icu4c/source/data/locales/ru_KG.txt
index 295d6fc..4269c5f 100644
--- a/icu4c/source/data/locales/ru_KG.txt
+++ b/icu4c/source/data/locales/ru_KG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru_KG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ru_KZ.txt b/icu4c/source/data/locales/ru_KZ.txt
index 51f2d6d..6a9e154 100644
--- a/icu4c/source/data/locales/ru_KZ.txt
+++ b/icu4c/source/data/locales/ru_KZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru_KZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ru_MD.txt b/icu4c/source/data/locales/ru_MD.txt
index e672707..a18e477 100644
--- a/icu4c/source/data/locales/ru_MD.txt
+++ b/icu4c/source/data/locales/ru_MD.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru_MD{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ru_RU.txt b/icu4c/source/data/locales/ru_RU.txt
index 6e28eab..a7730a1 100644
--- a/icu4c/source/data/locales/ru_RU.txt
+++ b/icu4c/source/data/locales/ru_RU.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru_RU{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ru_UA.txt b/icu4c/source/data/locales/ru_UA.txt
index eb82f23..03848d8 100644
--- a/icu4c/source/data/locales/ru_UA.txt
+++ b/icu4c/source/data/locales/ru_UA.txt
@@ -1,10 +1,10 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru_UA{
     NumberElements{
         minimumGroupingDigits{"2"}
     }
-    Version{"37"}
     calendar{
         gregorian{
             availableFormats{
diff --git a/icu4c/source/data/locales/rw.txt b/icu4c/source/data/locales/rw.txt
index cf0e1e0..6b3e295 100644
--- a/icu4c/source/data/locales/rw.txt
+++ b/icu4c/source/data/locales/rw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rw{
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"}
@@ -32,7 +33,6 @@
         }
         minimumGroupingDigits{"1"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/rw_RW.txt b/icu4c/source/data/locales/rw_RW.txt
index 392cc27..8cf09d4 100644
--- a/icu4c/source/data/locales/rw_RW.txt
+++ b/icu4c/source/data/locales/rw_RW.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rw_RW{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/rwk.txt b/icu4c/source/data/locales/rwk.txt
index 4718a69..44af622 100644
--- a/icu4c/source/data/locales/rwk.txt
+++ b/icu4c/source/data/locales/rwk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rwk{
     AuxExemplarCharacters{"[q x]"}
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p r s t u v w y z]"}
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/rwk_TZ.txt b/icu4c/source/data/locales/rwk_TZ.txt
index 3fb659e..c0fb27e 100644
--- a/icu4c/source/data/locales/rwk_TZ.txt
+++ b/icu4c/source/data/locales/rwk_TZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rwk_TZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sa.txt b/icu4c/source/data/locales/sa.txt
new file mode 100644
index 0000000..3e7d152
--- /dev/null
+++ b/icu4c/source/data/locales/sa.txt
@@ -0,0 +1,595 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+sa{
+    AuxExemplarCharacters{"[\u200C\u200D ऍ ऑ \u0945 ॉ]"}
+    ExemplarCharacters{
+        "[\u0951\u0952 \u093C \u0901 \u0902 ः ॐ अ आ इ ई उ ऊ ऋ ॠ ऌ ॡ ए ऐ ओ औ क ख ग घ ङ"
+        " च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल ळ व श ष स ह ऽ ा ि ी \u0941 "
+        "\u0942 \u0943 \u0944 \u0962 \u0963 \u0947 \u0948 ो ौ \u094D]"
+    }
+    ExemplarCharactersIndex{
+        "[अ आ इ ई उ ऊ ऋ ॠ ऌ ॡ ए ऐ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ"
+        " म य र ल ळ व श ष स ह]"
+    }
+    ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0० 1१ 2२ 3३ 4४ 5५ 6६ 7७ 8८ 9९]"}
+    ExemplarCharactersPunctuation{
+        "[_ \\- ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\} § @ * / "
+        "\\\\ \\& # ′ ″ ` + | ~]"
+    }
+    NumberElements{
+        default{"deva"}
+        latn{
+            miscPatterns{
+                atLeast{"≥{0}"}
+                range{"{0}–{1}"}
+            }
+            patterns{
+                accountingFormat{"¤ #,##0.00"}
+                currencyFormat{"¤#,##,##0.00"}
+                decimalFormat{"#,##,##0.###"}
+                percentFormat{"#,##,##0%"}
+                scientificFormat{"[#E0]"}
+            }
+            symbols{
+                decimal{"."}
+                exponential{"E"}
+                group{","}
+                infinity{"∞"}
+                minusSign{"-"}
+                nan{"NaN"}
+                perMille{"‰"}
+                percentSign{"%"}
+                plusSign{"+"}
+                superscriptingExponent{"×"}
+            }
+        }
+        minimumGroupingDigits{"1"}
+        native{"deva"}
+    }
+    calendar{
+        generic{
+            DateTimePatterns{
+                "h:mm:ss a zzzz",
+                "h:mm:ss a z",
+                "h:mm:ss a",
+                "h:mm a",
+                "G EEEE, d MMMM y",
+                "G d MMMM y",
+                "G d MMM y",
+                "G d/M/y",
+                "{1}, {0}",
+                "{1} तेन {0}",
+                "{1} तेन {0}",
+                "{1}, {0}",
+                "{1}, {0}",
+            }
+        }
+        gregorian{
+            AmPmMarkers{
+                "पूर्वाह्न",
+                "अपराह्न",
+            }
+            AmPmMarkersAbbr{
+                "AM",
+                "PM",
+            }
+            AmPmMarkersNarrow{
+                "AM",
+                "PM",
+            }
+            DateTimePatterns{
+                "h:mm:ss a zzzz",
+                "h:mm:ss a z",
+                "h:mm:ss a",
+                "h:mm a",
+                "EEEE, d MMMM y",
+                "d MMMM y",
+                "d MMM y",
+                "d/M/yy",
+                "{1}, {0}",
+                "{1} तदा {0}",
+                "{1} तदा {0}",
+                "{1}, {0}",
+                "{1}, {0}",
+            }
+            appendItems{
+                Timezone{"{0} {1}"}
+            }
+            availableFormats{
+                Bh{"B h"}
+                Bhm{"B h:mm"}
+                Bhms{"B h:mm:ss"}
+                E{"ccc"}
+                EBhm{"E B h:mm"}
+                EBhms{"E B h:mm:ss"}
+                EHm{"E HH:mm"}
+                EHms{"E HH:mm:ss"}
+                Ed{"E d"}
+                Ehm{"E h:mm a"}
+                Ehms{"E h:mm:ss a"}
+                Gy{"y G"}
+                GyMMM{"MMM G y"}
+                GyMMMEd{"E, d MMM y G"}
+                GyMMMd{"d MMM y G"}
+                H{"HH"}
+                Hm{"HH:mm"}
+                Hms{"HH:mm:ss"}
+                Hmsv{"HH:mm:ss v"}
+                Hmv{"HH:mm v"}
+                M{"L"}
+                MEd{"E, d/M"}
+                MMM{"LLL"}
+                MMMEd{"E, d MMM"}
+                MMMMW{
+                    other{"'week' W 'of' MMM"}
+                }
+                MMMMd{"d MMMM"}
+                MMMd{"d MMM"}
+                Md{"d/M"}
+                d{"d"}
+                h{"h a"}
+                hm{"h:mm a"}
+                hms{"h:mm:ss a"}
+                hmsv{"h:mm:ss a v"}
+                hmv{"h:mm a v"}
+                ms{"mm:ss"}
+                y{"y"}
+                yM{"M/y"}
+                yMEd{"E, d/M/y"}
+                yMMM{"MMM y"}
+                yMMMEd{"E, d MMM y"}
+                yMMMM{"MMMM y"}
+                yMMMd{"d MMM y"}
+                yMd{"d/M/y"}
+                yQQQ{"QQQ y"}
+                yQQQQ{"QQQQ y"}
+                yw{
+                    other{"'week' w 'of' Y"}
+                }
+            }
+            dayNames{
+                format{
+                    abbreviated{
+                        "रवि",
+                        "सोम",
+                        "मंगल",
+                        "बुध",
+                        "गुरु",
+                        "शुक्र",
+                        "शनि",
+                    }
+                    narrow{
+                        "र",
+                        "सो",
+                        "मं",
+                        "बु",
+                        "गु",
+                        "शु",
+                        "श",
+                    }
+                    short{
+                        "Sun",
+                        "Mon",
+                        "Tue",
+                        "Wed",
+                        "Thu",
+                        "Fri",
+                        "Sat",
+                    }
+                    wide{
+                        "रविवासरः",
+                        "सोमवासरः",
+                        "मंगलवासरः",
+                        "बुधवासरः",
+                        "गुरुवासर:",
+                        "शुक्रवासरः",
+                        "शनिवासरः",
+                    }
+                }
+                stand-alone{
+                    abbreviated{
+                        "रवि",
+                        "सोम",
+                        "मंगल",
+                        "बुध",
+                        "गुरु",
+                        "शुक्र",
+                        "शनि",
+                    }
+                    narrow{
+                        "र",
+                        "सो",
+                        "मं",
+                        "बु",
+                        "गु",
+                        "शु",
+                        "श",
+                    }
+                    short{
+                        "Sun",
+                        "Mon",
+                        "Tue",
+                        "Wed",
+                        "Thu",
+                        "Fri",
+                        "Sat",
+                    }
+                    wide{
+                        "रविवासरः",
+                        "सोमवासरः",
+                        "मंगलवासरः",
+                        "बुधवासरः",
+                        "गुरुवासर:",
+                        "शुक्रवासरः",
+                        "शनिवासरः",
+                    }
+                }
+            }
+            dayPeriod{
+                stand-alone{
+                    abbreviated{
+                        am{"AM"}
+                        pm{"PM"}
+                    }
+                    narrow{
+                        am{"AM"}
+                        pm{"PM"}
+                    }
+                    wide{
+                        am{"AM"}
+                        pm{"PM"}
+                    }
+                }
+            }
+            eras{
+                abbreviated{
+                    "BCE",
+                    "CE",
+                }
+                abbreviated%variant{
+                    "ईसवी पूर्व",
+                    "संवत्",
+                }
+                wide{
+                    "BCE",
+                    "CE",
+                }
+            }
+            intervalFormats{
+                H{
+                    H{"HH–HH"}
+                }
+                Hm{
+                    H{"HH:mm–HH:mm"}
+                    m{"HH:mm–HH:mm"}
+                }
+                Hmv{
+                    H{"HH:mm–HH:mm v"}
+                    m{"HH:mm–HH:mm v"}
+                }
+                Hv{
+                    H{"HH–HH v"}
+                }
+                M{
+                    M{"MM–MM"}
+                }
+                MEd{
+                    M{"MM-dd, E – MM-dd, E"}
+                    d{"MM-dd, E – MM-dd, E"}
+                }
+                MMM{
+                    M{"LLL–LLL"}
+                }
+                MMMEd{
+                    M{"MMM d, E – MMM d, E"}
+                    d{"MMM d, E – MMM d, E"}
+                }
+                MMMd{
+                    M{"MMM d – MMM d"}
+                    d{"MMM d–d"}
+                }
+                Md{
+                    M{"MM-dd – MM-dd"}
+                    d{"MM-dd – MM-dd"}
+                }
+                d{
+                    d{"d–d"}
+                }
+                fallback{"{0} – {1}"}
+                h{
+                    a{"h a – h a"}
+                    h{"h–h a"}
+                }
+                hm{
+                    a{"h:mm a – h:mm a"}
+                    h{"h:mm–h:mm a"}
+                    m{"h:mm–h:mm a"}
+                }
+                hmv{
+                    a{"h:mm a – h:mm a v"}
+                    h{"h:mm–h:mm a v"}
+                    m{"h:mm–h:mm a v"}
+                }
+                hv{
+                    a{"h a – h a v"}
+                    h{"h–h a v"}
+                }
+                y{
+                    y{"y–y"}
+                }
+                yM{
+                    M{"y-MM – y-MM"}
+                    y{"y-MM – y-MM"}
+                }
+                yMEd{
+                    M{"y-MM-dd, E – y-MM-dd, E"}
+                    d{"y-MM-dd, E – y-MM-dd, E"}
+                    y{"y-MM-dd, E – y-MM-dd, E"}
+                }
+                yMMM{
+                    M{"y MMM–MMM"}
+                    y{"y MMM – y MMM"}
+                }
+                yMMMEd{
+                    M{"y MMM d, E – MMM d, E"}
+                    d{"y MMM d, E – MMM d, E"}
+                    y{"y MMM d, E – y MMM d, E"}
+                }
+                yMMMM{
+                    M{"y MMMM–MMMM"}
+                    y{"y MMMM – y MMMM"}
+                }
+                yMMMd{
+                    M{"y MMM d – MMM d"}
+                    d{"y MMM d–d"}
+                    y{"y MMM d – y MMM d"}
+                }
+                yMd{
+                    M{"y-MM-dd – y-MM-dd"}
+                    d{"y-MM-dd – y-MM-dd"}
+                    y{"y-MM-dd – y-MM-dd"}
+                }
+            }
+            monthNames{
+                format{
+                    abbreviated{
+                        "जनवरी:",
+                        "फरवरी:",
+                        "मार्च:",
+                        "अप्रैल:",
+                        "मई",
+                        "जून:",
+                        "जुलाई:",
+                        "अगस्त:",
+                        "सितंबर:",
+                        "अक्तूबर:",
+                        "नवंबर:",
+                        "दिसंबर:",
+                    }
+                    narrow{
+                        "ज",
+                        "फ",
+                        "मा",
+                        "अ",
+                        "म",
+                        "जू",
+                        "जु",
+                        "अ",
+                        "सि",
+                        "अ",
+                        "न",
+                        "दि",
+                    }
+                    wide{
+                        "जनवरीमासः",
+                        "फरवरीमासः",
+                        "मार्चमासः",
+                        "अप्रैलमासः",
+                        "मईमासः",
+                        "जूनमासः",
+                        "जुलाईमासः",
+                        "अगस्तमासः",
+                        "सितंबरमासः",
+                        "अक्तूबरमासः",
+                        "नवंबरमासः",
+                        "दिसंबरमासः",
+                    }
+                }
+                stand-alone{
+                    abbreviated{
+                        "जनवरी:",
+                        "फरवरी:",
+                        "मार्च:",
+                        "अप्रैल:",
+                        "मई",
+                        "जून:",
+                        "जुलाई:",
+                        "अगस्त:",
+                        "सितंबर:",
+                        "अक्तूबर:",
+                        "नवंबर:",
+                        "दिसंबर:",
+                    }
+                    narrow{
+                        "1",
+                        "2",
+                        "3",
+                        "4",
+                        "5",
+                        "6",
+                        "7",
+                        "8",
+                        "9",
+                        "10",
+                        "11",
+                        "12",
+                    }
+                    wide{
+                        "जनवरीमासः",
+                        "फरवरीमासः",
+                        "मार्चमासः",
+                        "अप्रैलमासः",
+                        "मईमासः",
+                        "जूनमासः",
+                        "जुलाईमासः",
+                        "अगस्तमासः",
+                        "सितंबरमासः",
+                        "अक्तूबरमासः",
+                        "नवंबरमासः",
+                        "दिसंबरमासः",
+                    }
+                }
+            }
+            quarters{
+                format{
+                    abbreviated{
+                        "त्रैमासिक1",
+                        "त्रैमासिक2",
+                        "त्रैमासिक3",
+                        "त्रैमासिक4",
+                    }
+                    narrow{
+                        "1",
+                        "2",
+                        "3",
+                        "4",
+                    }
+                    wide{
+                        "प्रथम त्रैमासिक",
+                        "द्वितीय त्रैमासिक",
+                        "तृतीय त्रैमासिक",
+                        "चतुर्थ त्रैमासिक",
+                    }
+                }
+                stand-alone{
+                    abbreviated{
+                        "त्रैमासिक1",
+                        "त्रैमासिक2",
+                        "त्रैमासिक3",
+                        "त्रैमासिक4",
+                    }
+                    narrow{
+                        "1",
+                        "2",
+                        "3",
+                        "4",
+                    }
+                    wide{
+                        "प्रथम त्रैमासिक",
+                        "द्वितीय त्रैमासिक",
+                        "तृतीय त्रैमासिक",
+                        "चतुर्थ त्रैमासिक",
+                    }
+                }
+            }
+        }
+    }
+    fields{
+        day{
+            dn{"वासर:"}
+            relative{
+                "-1"{"गतदिनम्"}
+                "0"{"अद्य"}
+                "1"{"श्वः"}
+            }
+        }
+        day-narrow{
+            dn{"दिवा"}
+        }
+        day-short{
+            dn{"अहन्"}
+            relative{
+                "-1"{"ह्यः"}
+                "0"{"अद्य"}
+                "1"{"श्वः"}
+            }
+        }
+        dayperiod{
+            dn{"पूर्वाह्न/अपराह्न"}
+        }
+        era{
+            dn{"युग"}
+        }
+        hour{
+            dn{"होरा"}
+        }
+        hour-narrow{
+            dn{"होरा"}
+        }
+        hour-short{
+            dn{"होरा"}
+        }
+        minute{
+            dn{"निमेष"}
+        }
+        minute-narrow{
+            dn{"निमेष"}
+        }
+        minute-short{
+            dn{"निमेष"}
+        }
+        month{
+            dn{"मास:"}
+        }
+        month-narrow{
+            dn{"मास"}
+        }
+        month-short{
+            dn{"मास"}
+        }
+        quarter{
+            dn{"त्रेमासिक"}
+        }
+        quarter-narrow{
+            dn{"त्रेमासिक"}
+        }
+        quarter-short{
+            dn{"त्रेमासिक"}
+        }
+        second{
+            dn{"क्षण"}
+        }
+        second-narrow{
+            dn{"पल"}
+        }
+        second-short{
+            dn{"पल"}
+        }
+        week{
+            dn{"सप्ताह:"}
+        }
+        week-narrow{
+            dn{"सप्ताह"}
+        }
+        week-short{
+            dn{"सप्ताह"}
+        }
+        weekday{
+            dn{"सप्ताहस्य दिनं"}
+        }
+        year{
+            dn{"वर्ष:"}
+        }
+        year-narrow{
+            dn{"वर्ष"}
+        }
+        year-short{
+            dn{"वर्ष:"}
+        }
+        zone{
+            dn{"समय मण्डल"}
+        }
+    }
+    listPattern{
+        standard{
+            2{"{0} तथा {1}"}
+            end{"{0}, तथा {1}"}
+        }
+    }
+    measurementSystemNames{
+        UK{"यूके"}
+        US{"यूएस"}
+        metric{"छन्दोमान"}
+    }
+}
diff --git a/icu4c/source/data/curr/nds.txt b/icu4c/source/data/locales/sa_IN.txt
similarity index 62%
copy from icu4c/source/data/curr/nds.txt
copy to icu4c/source/data/locales/sa_IN.txt
index ac58836..c803b9b 100644
--- a/icu4c/source/data/curr/nds.txt
+++ b/icu4c/source/data/locales/sa_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-nds{
-    Version{"37"}
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+sa_IN{
 }
diff --git a/icu4c/source/data/locales/sah.txt b/icu4c/source/data/locales/sah.txt
index 4a0bc43..9a188c1 100644
--- a/icu4c/source/data/locales/sah.txt
+++ b/icu4c/source/data/locales/sah.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sah{
     AuxExemplarCharacters{"[в е ё ж з ф ц ш щ ъ ь ю я]"}
     Ellipsis{
@@ -164,7 +165,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/sah_RU.txt b/icu4c/source/data/locales/sah_RU.txt
index c8c526c..b542442 100644
--- a/icu4c/source/data/locales/sah_RU.txt
+++ b/icu4c/source/data/locales/sah_RU.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sah_RU{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/saq.txt b/icu4c/source/data/locales/saq.txt
index 174120d..0d064df 100644
--- a/icu4c/source/data/locales/saq.txt
+++ b/icu4c/source/data/locales/saq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 saq{
     AuxExemplarCharacters{"[f q x z]"}
     ExemplarCharacters{"[a b c d e g h i j k l m n o p r s t u v w y]"}
@@ -12,7 +13,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/saq_KE.txt b/icu4c/source/data/locales/saq_KE.txt
index 082e56b..a020ba4 100644
--- a/icu4c/source/data/locales/saq_KE.txt
+++ b/icu4c/source/data/locales/saq_KE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 saq_KE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sat.txt b/icu4c/source/data/locales/sat.txt
index 402929a..a2df7f2 100644
--- a/icu4c/source/data/locales/sat.txt
+++ b/icu4c/source/data/locales/sat.txt
@@ -1,12 +1,21 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat{
     ExemplarCharacters{"[ᱚ ᱛ ᱜ ᱝ ᱞ ᱟ ᱠ ᱡ ᱢ ᱣ ᱤ ᱥ ᱦ ᱧ ᱨ ᱩ ᱪ ᱫ ᱬ ᱭ ᱮ ᱯ ᱰ ᱱ ᱲ ᱳ ᱴ ᱵ ᱶ ᱷ ᱸ ᱹ ᱺ ᱻ ᱼ ᱽ]"}
     ExemplarCharactersNumbers{"[\\- ‑ , . % + 0᱐ 1᱑ 2᱒ 3᱓ 4᱔ 5᱕ 6᱖ 7᱗ 8᱘ 9᱙]"}
     NumberElements{
         default{"olck"}
+        latn{
+            symbols{
+                decimal{"."}
+                group{","}
+                minusSign{"-"}
+                percentSign{"%"}
+                plusSign{"+"}
+            }
+        }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -27,8 +36,8 @@
         }
         gregorian{
             AmPmMarkers{
-                "ᱥᱤᱧ/ᱥᱮᱛᱟᱜ",
-                "ᱟᱹᱭᱩᱵ/ᱧᱤᱫᱟ",
+                "ᱥᱮᱛᱟᱜ",
+                "ᱧᱤᱫᱟᱹ",
             }
             DateTimePatterns{
                 "h:mm:ss a zzzz",
@@ -96,6 +105,12 @@
                     }
                 }
             }
+            eras{
+                abbreviated{
+                    "ᱥᱮᱨᱢᱟ ᱞᱟᱦᱟ",
+                    "ᱤᱥᱣᱤ",
+                }
+            }
             monthNames{
                 format{
                     abbreviated{
@@ -286,6 +301,6 @@
     measurementSystemNames{
         UK{"ᱭᱩᱠᱮ"}
         US{"ᱭᱩᱮᱥ"}
-        metric{"ᱢᱤᱴᱨᱤᱠ"}
+        metric{"ᱢᱮᱴᱨᱤᱠ"}
     }
 }
diff --git a/icu4c/source/data/locales/sat_IN.txt b/icu4c/source/data/locales/sat_IN.txt
index c4976b4..15af329 100644
--- a/icu4c/source/data/locales/sat_IN.txt
+++ b/icu4c/source/data/locales/sat_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat_IN{
     "%%ALIAS"{"sat_Olck_IN"}
 }
diff --git a/icu4c/source/data/locales/sat_Olck.txt b/icu4c/source/data/locales/sat_Olck.txt
index 0d7225f..f09b6a0 100644
--- a/icu4c/source/data/locales/sat_Olck.txt
+++ b/icu4c/source/data/locales/sat_Olck.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat_Olck{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sat_Olck_IN.txt b/icu4c/source/data/locales/sat_Olck_IN.txt
index 2511c15..9edc79f 100644
--- a/icu4c/source/data/locales/sat_Olck_IN.txt
+++ b/icu4c/source/data/locales/sat_Olck_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat_Olck_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sbp.txt b/icu4c/source/data/locales/sbp.txt
index 7772d30..105b4ea 100644
--- a/icu4c/source/data/locales/sbp.txt
+++ b/icu4c/source/data/locales/sbp.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sbp{
     AuxExemplarCharacters{"[q r x z]"}
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p s t u v w y]"}
@@ -18,7 +19,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/sbp_TZ.txt b/icu4c/source/data/locales/sbp_TZ.txt
index 2309687..8f82a1e 100644
--- a/icu4c/source/data/locales/sbp_TZ.txt
+++ b/icu4c/source/data/locales/sbp_TZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sbp_TZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sd.txt b/icu4c/source/data/locales/sd.txt
index d34aa14..be223a0 100644
--- a/icu4c/source/data/locales/sd.txt
+++ b/icu4c/source/data/locales/sd.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd{
     AuxExemplarCharacters{"[\u064E \u064F \u0650 ئ]"}
     Ellipsis{
@@ -91,102 +92,102 @@
             patternsShort{
                 currencyFormat{
                     1000{
-                        one{"¤ 0K"}
-                        other{"¤ 0K"}
+                        one{"¤0هزار"}
+                        other{"¤0هزار"}
                     }
                     10000{
-                        one{"¤ 00K"}
-                        other{"¤ 00K"}
+                        one{"¤00هزار"}
+                        other{"¤00هزار"}
                     }
                     100000{
-                        one{"¤ 000K"}
-                        other{"¤ 000K"}
+                        one{"¤000لک"}
+                        other{"¤000لک"}
                     }
                     1000000{
-                        one{"¤ 0M"}
-                        other{"¤ 0M"}
+                        one{"¤00لک"}
+                        other{"¤00لک"}
                     }
                     10000000{
-                        one{"¤ 00M"}
-                        other{"¤ 00M"}
+                        one{"¤0ڪروڙ"}
+                        other{"¤0ڪروڙ"}
                     }
                     100000000{
-                        one{"¤ 000M"}
-                        other{"¤ 000M"}
+                        one{"¤00ڪروڙ"}
+                        other{"¤00ڪروڙ"}
                     }
                     1000000000{
-                        one{"¤ 0G"}
-                        other{"¤ 0G"}
+                        one{"¤0ارب"}
+                        other{"¤0ارب"}
                     }
                     10000000000{
-                        one{"¤ 00G"}
-                        other{"¤ 00G"}
+                        one{"¤00ارب"}
+                        other{"¤00ارب"}
                     }
                     100000000000{
-                        one{"¤ 000G"}
-                        other{"¤ 000G"}
+                        one{"¤0کرب"}
+                        other{"¤0کرب"}
                     }
                     1000000000000{
-                        one{"¤ 0T"}
-                        other{"¤ 0T"}
+                        one{"¤0ٽرلين"}
+                        other{"¤0ٽرلين"}
                     }
                     10000000000000{
-                        one{"¤ 00T"}
-                        other{"¤ 00T"}
+                        one{"¤00ٽرلين"}
+                        other{"¤00ٽرلين"}
                     }
                     100000000000000{
-                        one{"¤ 000T"}
-                        other{"¤ 000T"}
+                        one{"¤000ٽرلين"}
+                        other{"¤000ٽرلين"}
                     }
                 }
                 decimalFormat{
                     1000{
-                        one{"0K"}
-                        other{"0K"}
+                        one{"0 هزار"}
+                        other{"0 هزار"}
                     }
                     10000{
-                        one{"00K"}
-                        other{"00K"}
+                        one{"00 هزار"}
+                        other{"00 هزار"}
                     }
                     100000{
-                        one{"000K"}
-                        other{"000K"}
+                        one{"000 هزار"}
+                        other{"000 هزار"}
                     }
                     1000000{
-                        one{"0M"}
-                        other{"0M"}
+                        one{"0 ملين"}
+                        other{"0 ملين"}
                     }
                     10000000{
-                        one{"00M"}
-                        other{"00M"}
+                        one{"00 ملين"}
+                        other{"00 ملين"}
                     }
                     100000000{
-                        one{"000M"}
-                        other{"000M"}
+                        one{"000 ملين"}
+                        other{"000 ملين"}
                     }
                     1000000000{
-                        one{"0B"}
-                        other{"0B"}
+                        one{"0 بلين"}
+                        other{"0 بلين"}
                     }
                     10000000000{
-                        one{"00B"}
-                        other{"00B"}
+                        one{"00 بلين"}
+                        other{"00 بلين"}
                     }
                     100000000000{
-                        one{"000B"}
-                        other{"000B"}
+                        one{"000 بلين"}
+                        other{"000 بلين"}
                     }
                     1000000000000{
-                        one{"0T"}
-                        other{"0T"}
+                        one{"0 ٽرلين"}
+                        other{"0 ٽرلين"}
                     }
                     10000000000000{
-                        one{"00T"}
-                        other{"00T"}
+                        one{"00 ٽرلين"}
+                        other{"00 ٽرلين"}
                     }
                     100000000000000{
-                        one{"000T"}
-                        other{"000T"}
+                        one{"000 ٽرلين"}
+                        other{"000 ٽرلين"}
                     }
                 }
             }
@@ -205,7 +206,7 @@
         }
         minimalPairs{
             ordinal{
-                other{"کاٻي تي {0} نمبر گهر."}
+                other{"{0} ساڄو پاسو وٺو"}
             }
             plural{
                 one{"{0} ڪتاب"}
@@ -215,7 +216,6 @@
         minimumGroupingDigits{"1"}
         native{"arab"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -538,7 +538,7 @@
                     "CE",
                 }
                 wide{
-                    "مسيح کان اڳ",
+                    "قبل مسيح",
                     "عيسوي کان پهرين",
                 }
                 wide%variant{
@@ -821,6 +821,56 @@
                 }
             }
         }
+        islamic{
+            monthNames{
+                format{
+                    abbreviated{
+                        "محرم",
+                        "صفر",
+                        "ربيع الاول",
+                        "ربیع الاخر",
+                        "جمادی الاول",
+                        "جمادي الاخر",
+                        "رجب",
+                        "شعبان",
+                        "رمضان",
+                        "شوال",
+                        "ذوالقعد",
+                        "ذوالحجہ",
+                    }
+                    wide{
+                        "محرم",
+                        "صفر",
+                        "ربيع الاول",
+                        "ربیع الاخر",
+                        "جمادی الاول",
+                        "جمادي الاخر",
+                        "رجب",
+                        "شعبان",
+                        "رمضان",
+                        "شوال",
+                        "ذوالقعد",
+                        "ذوالحجہ",
+                    }
+                }
+                stand-alone{
+                    wide{
+                        "محرم",
+                        "صفر",
+                        "ربيع الاول",
+                        "ربیع الاخر",
+                        "جمادی الاول",
+                        "جمادي الاخر",
+                        "رجب",
+                        "شعبان",
+                        "رمضان",
+                        "شوال",
+                        "ذوالقعد",
+                        "ذوالحجہ",
+                    }
+                }
+            }
+        }
     }
     characterLabel{
         activities{"سرگرمي"}
@@ -884,7 +934,7 @@
         other{"ٻيا"}
         paired{"جوڙو"}
         person{"شخص"}
-        phonetic_alphabet{"صوتياتي رسم الخط"}
+        phonetic_alphabet{"صوتي رسم الخط"}
         pictographs{"تصويري نشاني"}
         place{"جڳھَ"}
         plant{"ٻوٽو"}
@@ -907,7 +957,7 @@
         variant_forms{"ويريئنٽ"}
         vocalic_jamo{"ووڪلڪ جامو"}
         weather{"موسم"}
-        western_asian_scripts{"مغربي ايشيائي رسم الخط"}
+        western_asian_scripts{"اولهه ايشيائي رسم الخط"}
         whitespace{"خالي جڳھَ"}
     }
     delimiters{
@@ -1670,6 +1720,11 @@
         }
         year-short{
             dn{"سال"}
+            relative{
+                "-1"{"پوئين سال"}
+                "0"{"هن سال"}
+                "1"{"اڳين سال"}
+            }
             relativeTime{
                 future{
                     one{"{0} سالن ۾"}
@@ -1757,7 +1812,7 @@
         number{
             lenient{
                 "[\\-‒⁻₋−➖﹣-]",
-                "[,،٫、︐︑﹐﹑,、]",
+                "[,،٫⹁、︐︑﹐﹑,、]",
                 "[+⁺₊➕﬩﹢+]",
             }
             stricter{
diff --git a/icu4c/source/data/locales/sd_Arab.txt b/icu4c/source/data/locales/sd_Arab.txt
index 52a97c8..c089e06 100644
--- a/icu4c/source/data/locales/sd_Arab.txt
+++ b/icu4c/source/data/locales/sd_Arab.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_Arab{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sd_Arab_PK.txt b/icu4c/source/data/locales/sd_Arab_PK.txt
index 6ab03f9..d8a7d7b 100644
--- a/icu4c/source/data/locales/sd_Arab_PK.txt
+++ b/icu4c/source/data/locales/sd_Arab_PK.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_Arab_PK{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sd_Deva.txt b/icu4c/source/data/locales/sd_Deva.txt
index 2886c07..19213e8 100644
--- a/icu4c/source/data/locales/sd_Deva.txt
+++ b/icu4c/source/data/locales/sd_Deva.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_Deva{
     %%Parent{"root"}
     AuxExemplarCharacters{"[\u200C\u200D]"}
@@ -17,7 +18,6 @@
         default{"latn"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -285,9 +285,21 @@
         dayperiod{
             dn{"ॾींहु/रातु"}
         }
+        era{
+            dn{"दौर"}
+        }
         hour{
             dn{"कलाक"}
         }
+        minute{
+            dn{"मिंटु"}
+        }
+        minute-narrow{
+            dn{"मिंटु"}
+        }
+        minute-short{
+            dn{"मिंटु"}
+        }
         month{
             dn{"महीनो"}
         }
@@ -303,6 +315,9 @@
         weekday{
             dn{"हफ्ते जो ॾींहु"}
         }
+        year{
+            dn{"साल"}
+        }
         year-short{
             dn{"साल"}
         }
diff --git a/icu4c/source/data/locales/sd_Deva_IN.txt b/icu4c/source/data/locales/sd_Deva_IN.txt
index 2c1aff2..18923a7 100644
--- a/icu4c/source/data/locales/sd_Deva_IN.txt
+++ b/icu4c/source/data/locales/sd_Deva_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_Deva_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sd_PK.txt b/icu4c/source/data/locales/sd_PK.txt
index 7663600..b7def87 100644
--- a/icu4c/source/data/locales/sd_PK.txt
+++ b/icu4c/source/data/locales/sd_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_PK{
     "%%ALIAS"{"sd_Arab_PK"}
 }
diff --git a/icu4c/source/data/locales/se.txt b/icu4c/source/data/locales/se.txt
index 614cc89..0b13558 100644
--- a/icu4c/source/data/locales/se.txt
+++ b/icu4c/source/data/locales/se.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 se{
     AuxExemplarCharacters{"[à ç é è í ń ñ ó ò q ú w x y ü ø æ å ä ã ö]"}
     ExemplarCharacters{"[a á b c č d đ e f g h i j k l m n ŋ o p r s š t ŧ u v z ž]"}
@@ -166,7 +167,6 @@
         }
         minimumGroupingDigits{"1"}
     }
-    Version{"37"}
     calendar{
         gregorian{
             AmPmMarkers{
diff --git a/icu4c/source/data/locales/se_FI.txt b/icu4c/source/data/locales/se_FI.txt
index cc639f7..03d988a 100644
--- a/icu4c/source/data/locales/se_FI.txt
+++ b/icu4c/source/data/locales/se_FI.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 se_FI{
     NumberElements{
         latn{
@@ -62,7 +63,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/se_NO.txt b/icu4c/source/data/locales/se_NO.txt
index a824ddc..c79475a 100644
--- a/icu4c/source/data/locales/se_NO.txt
+++ b/icu4c/source/data/locales/se_NO.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 se_NO{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/se_SE.txt b/icu4c/source/data/locales/se_SE.txt
index 27fe710..dddd188 100644
--- a/icu4c/source/data/locales/se_SE.txt
+++ b/icu4c/source/data/locales/se_SE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 se_SE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/seh.txt b/icu4c/source/data/locales/seh.txt
index 86258a2..b429ff7 100644
--- a/icu4c/source/data/locales/seh.txt
+++ b/icu4c/source/data/locales/seh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 seh{
     ExemplarCharacters{
         "[a á à â ã b c ç d e é ê f g h i í j k l m n o ó ò ô õ p q r s t u ú v w x y"
@@ -18,7 +19,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/seh_MZ.txt b/icu4c/source/data/locales/seh_MZ.txt
index 3fb239a..9037721 100644
--- a/icu4c/source/data/locales/seh_MZ.txt
+++ b/icu4c/source/data/locales/seh_MZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 seh_MZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ses.txt b/icu4c/source/data/locales/ses.txt
index 0bf9812..3cc3c67 100644
--- a/icu4c/source/data/locales/ses.txt
+++ b/icu4c/source/data/locales/ses.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ses{
     AuxExemplarCharacters{"[v]"}
     ExemplarCharacters{"[a ã b c d e ẽ f g h i j k l m n ɲ ŋ o õ p q r s š t u w x y z ž]"}
@@ -15,7 +16,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ses_ML.txt b/icu4c/source/data/locales/ses_ML.txt
index 3ec2514..f82cbb9 100644
--- a/icu4c/source/data/locales/ses_ML.txt
+++ b/icu4c/source/data/locales/ses_ML.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ses_ML{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sg.txt b/icu4c/source/data/locales/sg.txt
index 79219e8..5adfef3 100644
--- a/icu4c/source/data/locales/sg.txt
+++ b/icu4c/source/data/locales/sg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sg{
     AuxExemplarCharacters{"[c q x]"}
     ExemplarCharacters{"[a â ä b d e ê ë f g h i î ï j k l m n o ô ö p r s t u ù û ü v w y z]"}
@@ -16,7 +17,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/sg_CF.txt b/icu4c/source/data/locales/sg_CF.txt
index 15cfa4a..3ab23c6 100644
--- a/icu4c/source/data/locales/sg_CF.txt
+++ b/icu4c/source/data/locales/sg_CF.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sg_CF{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sh.txt b/icu4c/source/data/locales/sh.txt
index 74b646a..83091b2 100644
--- a/icu4c/source/data/locales/sh.txt
+++ b/icu4c/source/data/locales/sh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh{
     "%%ALIAS"{"sr_Latn"}
 }
diff --git a/icu4c/source/data/locales/sh_BA.txt b/icu4c/source/data/locales/sh_BA.txt
index 93bdac6..7f73cd5 100644
--- a/icu4c/source/data/locales/sh_BA.txt
+++ b/icu4c/source/data/locales/sh_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_BA{
     "%%ALIAS"{"sr_Latn_BA"}
 }
diff --git a/icu4c/source/data/locales/sh_CS.txt b/icu4c/source/data/locales/sh_CS.txt
index 224568a..3b2f92b 100644
--- a/icu4c/source/data/locales/sh_CS.txt
+++ b/icu4c/source/data/locales/sh_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_CS{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/locales/sh_YU.txt b/icu4c/source/data/locales/sh_YU.txt
index 8a7d460..dc5a35b 100644
--- a/icu4c/source/data/locales/sh_YU.txt
+++ b/icu4c/source/data/locales/sh_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_YU{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/locales/shi.txt b/icu4c/source/data/locales/shi.txt
index a58e233..9e4a1a0 100644
--- a/icu4c/source/data/locales/shi.txt
+++ b/icu4c/source/data/locales/shi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi{
     ExemplarCharacters{"[ⴰ ⴱ ⴳ {ⴳⵯ} ⴷ ⴹ ⴻ ⴼ ⴽ {ⴽⵯ} ⵀ ⵃ ⵄ ⵅ ⵇ ⵉ ⵊ ⵍ ⵎ ⵏ ⵓ ⵔ ⵕ ⵖ ⵙ ⵚ ⵛ ⵜ ⵟ ⵡ ⵢ ⵣ ⵥ]"}
     ExemplarCharactersIndex{"[ⴰ ⴱ ⴳ ⴷ ⴹ ⴻ ⴼ ⴽ ⵀ ⵃ ⵄ ⵅ ⵇ ⵉ ⵊ ⵍ ⵎ ⵏ ⵓ ⵔ ⵕ ⵖ ⵙ ⵚ ⵛ ⵜ ⵟ ⵡ ⵢ ⵣ ⵥ]"}
@@ -15,7 +16,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/shi_Latn.txt b/icu4c/source/data/locales/shi_Latn.txt
index 9b99157..aace032 100644
--- a/icu4c/source/data/locales/shi_Latn.txt
+++ b/icu4c/source/data/locales/shi_Latn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_Latn{
     %%Parent{"root"}
     AuxExemplarCharacters{"[o p v]"}
@@ -17,7 +18,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/shi_Latn_MA.txt b/icu4c/source/data/locales/shi_Latn_MA.txt
index 7aa89f1..9e77f98 100644
--- a/icu4c/source/data/locales/shi_Latn_MA.txt
+++ b/icu4c/source/data/locales/shi_Latn_MA.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_Latn_MA{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/shi_MA.txt b/icu4c/source/data/locales/shi_MA.txt
index 00de1b1..c96251d 100644
--- a/icu4c/source/data/locales/shi_MA.txt
+++ b/icu4c/source/data/locales/shi_MA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_MA{
     "%%ALIAS"{"shi_Tfng_MA"}
 }
diff --git a/icu4c/source/data/locales/shi_Tfng.txt b/icu4c/source/data/locales/shi_Tfng.txt
index 397f53f..723cdf1 100644
--- a/icu4c/source/data/locales/shi_Tfng.txt
+++ b/icu4c/source/data/locales/shi_Tfng.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_Tfng{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/shi_Tfng_MA.txt b/icu4c/source/data/locales/shi_Tfng_MA.txt
index af92249..42efcb4 100644
--- a/icu4c/source/data/locales/shi_Tfng_MA.txt
+++ b/icu4c/source/data/locales/shi_Tfng_MA.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_Tfng_MA{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/si.txt b/icu4c/source/data/locales/si.txt
index ceeaeb5..d076955 100644
--- a/icu4c/source/data/locales/si.txt
+++ b/icu4c/source/data/locales/si.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 si{
     AuxExemplarCharacters{"[\u200B\u200C\u200D ඎ ඏ ඐ ඦ ෳ]"}
     Ellipsis{
@@ -196,6 +197,7 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -221,7 +223,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -1908,7 +1909,7 @@
         date{
             lenient{
                 "[\\--/]",
-                "[\\:∶]",
+                "[\\:∶︓﹕:]",
             }
         }
         general{
@@ -1917,8 +1918,8 @@
                 "['ʼ՚᾽᾿’']",
                 "[%٪﹪%]",
                 "[؉‰]",
-                "[\$﹩$$]",
-                "[£₤]",
+                "[\$﹩$]",
+                "[£₤£]",
                 "[¥¥]",
                 "[₩₩]",
                 "[₨₹{Rp}{Rs}]",
@@ -1926,7 +1927,7 @@
         }
         number{
             lenient{
-                "[\\-‒⁻₋−➖﹣-]",
+                "[\\-‐‒–⁻₋−➖﹣-]",
                 "[,،٫、︐︑﹐﹑,、]",
                 "[+⁺₊➕﬩﹢+]",
             }
diff --git a/icu4c/source/data/locales/si_LK.txt b/icu4c/source/data/locales/si_LK.txt
index 1a71212..0a9f865 100644
--- a/icu4c/source/data/locales/si_LK.txt
+++ b/icu4c/source/data/locales/si_LK.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 si_LK{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sk.txt b/icu4c/source/data/locales/sk.txt
index b90807d..4bf9b95 100644
--- a/icu4c/source/data/locales/sk.txt
+++ b/icu4c/source/data/locales/sk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sk{
     AuxExemplarCharacters{"[à ă â å ā æ ç è ĕ ê ë ē ì ĭ î ï ī ñ ò ŏ ö ő ø ō œ ř ù ŭ û ü ű ū ÿ]"}
     Ellipsis{
@@ -261,6 +262,7 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{","}
                 exponential{"e"}
                 group{" "}
@@ -289,7 +291,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
diff --git a/icu4c/source/data/locales/sk_SK.txt b/icu4c/source/data/locales/sk_SK.txt
index 6696d96..dcb27c6 100644
--- a/icu4c/source/data/locales/sk_SK.txt
+++ b/icu4c/source/data/locales/sk_SK.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sk_SK{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sl.txt b/icu4c/source/data/locales/sl.txt
index 6e353e0..747ab7c 100644
--- a/icu4c/source/data/locales/sl.txt
+++ b/icu4c/source/data/locales/sl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sl{
     AuxExemplarCharacters{
         "[á à ă â å ä ā æ ç ć đ é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ q ú ù ŭ û ü"
@@ -279,16 +280,15 @@
                 other{"V {0}. križišču zavijte desno."}
             }
             plural{
-                few{"{0} ure"}
-                one{"{0} ura"}
-                other{"{0} ur"}
-                two{"{0} uri"}
+                few{"{0} dnevi"}
+                one{"{0} dan"}
+                other{"{0} dni"}
+                two{"{0} dneva"}
             }
         }
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
diff --git a/icu4c/source/data/locales/sl_SI.txt b/icu4c/source/data/locales/sl_SI.txt
index f22588f..051d2b4 100644
--- a/icu4c/source/data/locales/sl_SI.txt
+++ b/icu4c/source/data/locales/sl_SI.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sl_SI{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/smn.txt b/icu4c/source/data/locales/smn.txt
index 6e0c0d5..453ca07 100644
--- a/icu4c/source/data/locales/smn.txt
+++ b/icu4c/source/data/locales/smn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 smn{
     AuxExemplarCharacters{"[à ç é è í ñ ń ó ò q ú ü w x æ ø å ã ö]"}
     ExemplarCharacters{"[a â b c č d đ e f g h i j k l m n ŋ o p r s š t u v y z ž ä á]"}
@@ -98,7 +99,6 @@
         }
         minimumGroupingDigits{"1"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/smn_FI.txt b/icu4c/source/data/locales/smn_FI.txt
index 6b3f55a..1bbc7d5 100644
--- a/icu4c/source/data/locales/smn_FI.txt
+++ b/icu4c/source/data/locales/smn_FI.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 smn_FI{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sn.txt b/icu4c/source/data/locales/sn.txt
index 8e482ae..db24837 100644
--- a/icu4c/source/data/locales/sn.txt
+++ b/icu4c/source/data/locales/sn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sn{
     AuxExemplarCharacters{"[q x]"}
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p r s t u v w y z]"}
@@ -33,7 +34,6 @@
         }
         minimumGroupingDigits{"1"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/sn_ZW.txt b/icu4c/source/data/locales/sn_ZW.txt
index 3699aee..c620aef 100644
--- a/icu4c/source/data/locales/sn_ZW.txt
+++ b/icu4c/source/data/locales/sn_ZW.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sn_ZW{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/so.txt b/icu4c/source/data/locales/so.txt
index 769a06b..c5b1842 100644
--- a/icu4c/source/data/locales/so.txt
+++ b/icu4c/source/data/locales/so.txt
@@ -1,7 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 so{
-    ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}
+    AuxExemplarCharacters{"[a e i o p u v z]"}
+    ExemplarCharacters{"[b c d f g h j k l m n q r s t w x y]"}
     ExemplarCharactersIndex{"[B C D F G H J K L M N Q R S T W X Y]"}
     ExemplarCharactersPunctuation{
         "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ "
@@ -108,7 +110,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
-                        one{"0 Kun"}
+                        one{"Kun"}
                         other{"0 Kun"}
                     }
                     10000{
@@ -224,6 +226,7 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 nan{"MaL"}
             }
         }
@@ -337,7 +340,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         chinese{
             cyclicNameSets{
@@ -1941,7 +1943,7 @@
         number{
             lenient{
                 "[\\-‒⁻₋−➖﹣-]",
-                "[,،٫、︐︑﹐﹑,、]",
+                "[,،٫⹁、︐︑﹐﹑,、]",
                 "[+⁺₊➕﬩﹢+]",
             }
         }
diff --git a/icu4c/source/data/locales/so_DJ.txt b/icu4c/source/data/locales/so_DJ.txt
index 51c43da..9e36364 100644
--- a/icu4c/source/data/locales/so_DJ.txt
+++ b/icu4c/source/data/locales/so_DJ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 so_DJ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/so_ET.txt b/icu4c/source/data/locales/so_ET.txt
index 21cc499..b15faa7 100644
--- a/icu4c/source/data/locales/so_ET.txt
+++ b/icu4c/source/data/locales/so_ET.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 so_ET{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/so_KE.txt b/icu4c/source/data/locales/so_KE.txt
index 5e0aa66..44acf92 100644
--- a/icu4c/source/data/locales/so_KE.txt
+++ b/icu4c/source/data/locales/so_KE.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 so_KE{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/so_SO.txt b/icu4c/source/data/locales/so_SO.txt
index 3301c49..877126e 100644
--- a/icu4c/source/data/locales/so_SO.txt
+++ b/icu4c/source/data/locales/so_SO.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 so_SO{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sq.txt b/icu4c/source/data/locales/sq.txt
index 710f26b..a017987 100644
--- a/icu4c/source/data/locales/sq.txt
+++ b/icu4c/source/data/locales/sq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sq{
     AuxExemplarCharacters{"[w]"}
     Ellipsis{
@@ -195,6 +196,7 @@
                 }
             }
             symbols{
+                approximatelySign{"≈"}
                 decimal{","}
                 exponential{"E"}
                 group{" "}
@@ -222,7 +224,6 @@
         minimumGroupingDigits{"2"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/sq_AL.txt b/icu4c/source/data/locales/sq_AL.txt
index 85916ef..576b87c 100644
--- a/icu4c/source/data/locales/sq_AL.txt
+++ b/icu4c/source/data/locales/sq_AL.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sq_AL{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sq_MK.txt b/icu4c/source/data/locales/sq_MK.txt
index 508a72a..6bd607c 100644
--- a/icu4c/source/data/locales/sq_MK.txt
+++ b/icu4c/source/data/locales/sq_MK.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sq_MK{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/sq_XK.txt b/icu4c/source/data/locales/sq_XK.txt
index 2beb60a..8a28809 100644
--- a/icu4c/source/data/locales/sq_XK.txt
+++ b/icu4c/source/data/locales/sq_XK.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sq_XK{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/sr.txt b/icu4c/source/data/locales/sr.txt
index e58c6ed..5a3a891 100644
--- a/icu4c/source/data/locales/sr.txt
+++ b/icu4c/source/data/locales/sr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr{
     AuxExemplarCharacters{"[{а\u0302} {е\u0302} ё й {и\u0302} {о\u0302} {у\u0302} щ ъ ы ь э ю я]"}
     Ellipsis{
@@ -249,7 +250,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -703,6 +703,10 @@
                     "пре нове ере",
                     "нове ере",
                 }
+                wide%variant{
+                    "пре наше ере",
+                    "наше ере",
+                }
             }
             intervalFormats{
                 H{
@@ -2368,7 +2372,7 @@
         number{
             lenient{
                 "[\\-‒⁻₋−➖﹣-]",
-                "[,،٫、︐︑﹐﹑,、]",
+                "[,،٫⹁、︐︑﹐﹑,、]",
                 "[+⁺₊➕﬩﹢+]",
             }
         }
diff --git a/icu4c/source/data/locales/sr_BA.txt b/icu4c/source/data/locales/sr_BA.txt
index edad17f..04f2efd 100644
--- a/icu4c/source/data/locales/sr_BA.txt
+++ b/icu4c/source/data/locales/sr_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_BA{
     "%%ALIAS"{"sr_Cyrl_BA"}
 }
diff --git a/icu4c/source/data/locales/sr_CS.txt b/icu4c/source/data/locales/sr_CS.txt
index 5f8becf..6a32f49 100644
--- a/icu4c/source/data/locales/sr_CS.txt
+++ b/icu4c/source/data/locales/sr_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_CS{
-    "%%ALIAS"{"sr_Cyrl_RS"}
+    "%%ALIAS"{"sr_RS"}
 }
diff --git a/icu4c/source/data/locales/sr_Cyrl.txt b/icu4c/source/data/locales/sr_Cyrl.txt
index df3a287..772d8b3 100644
--- a/icu4c/source/data/locales/sr_Cyrl.txt
+++ b/icu4c/source/data/locales/sr_Cyrl.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sr_Cyrl_BA.txt b/icu4c/source/data/locales/sr_Cyrl_BA.txt
index eaed565..d78f160 100644
--- a/icu4c/source/data/locales/sr_Cyrl_BA.txt
+++ b/icu4c/source/data/locales/sr_Cyrl_BA.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_BA{
-    Version{"37"}
     calendar{
         generic{
             intervalFormats{
@@ -23,32 +23,11 @@
                 "прије подне",
                 "по подне",
             }
-            availableFormats{
-                MMMMW{
-                    few{"W. 'сједмица' 'у' MMMM"}
-                    one{"W. 'сједмица' 'у' MMMM"}
-                    other{"W. 'сједмица' 'у' MMMM"}
-                }
-                yw{
-                    few{"w. 'сједмица' 'у' Y."}
-                    one{"w. 'сједмица' 'у' Y."}
-                    other{"w. 'сједмица' 'у' Y."}
-                }
-            }
             dayNames{
                 format{
-                    abbreviated{
-                        "нед",
-                        "пон",
-                        "ут",
-                        "ср",
-                        "чет",
-                        "пет",
-                        "суб",
-                    }
                     wide{
                         "недјеља",
-                        "понедељак",
+                        "понедјељак",
                         "уторак",
                         "сриједа",
                         "четвртак",
@@ -60,15 +39,15 @@
                     abbreviated{
                         "нед",
                         "пон",
-                        "ут",
-                        "ср",
+                        "уто",
+                        "сри",
                         "чет",
                         "пет",
                         "суб",
                     }
                     wide{
                         "недјеља",
-                        "понедељак",
+                        "понедјељак",
                         "уторак",
                         "сриједа",
                         "четвртак",
@@ -117,7 +96,7 @@
                     "нове ере",
                 }
                 wide%variant{
-                    "п. н. е.",
+                    "пре наше ере",
                     "нове ере",
                 }
             }
@@ -147,12 +126,674 @@
             }
         }
     }
+    characterLabel{
+        body{"тијело"}
+        bullets_stars{"Знакови за набрајање/звјездице"}
+        downwards_arrows{"Стрелице надоље"}
+        downwards_upwards_arrows{"Стрелице надоље и нагоре"}
+        leftwards_arrows{"Стрелице налијево"}
+        leftwards_rightwards_arrows{"Стрелице налијево и надесно"}
+        place{"мјесто"}
+        travel_places{"Путовања и мјеста"}
+        weather{"вријеме"}
+    }
     fields{
+        day{
+            relativeTime{
+                past{
+                    few{"прије {0} дана"}
+                    one{"прије {0} дана"}
+                    other{"прије {0} дана"}
+                }
+            }
+        }
+        day-narrow{
+            relativeTime{
+                past{
+                    few{"прије {0} д."}
+                    one{"прије {0} д."}
+                    other{"прије {0} д."}
+                }
+            }
+        }
+        day-short{
+            relativeTime{
+                past{
+                    few{"прије {0} д."}
+                    one{"прије {0} д."}
+                    other{"прије {0} д."}
+                }
+            }
+        }
+        dayperiod{
+            dn{"прије подне/по подне"}
+        }
+        dayperiod-narrow{
+            dn{"прије подне/по подне"}
+        }
+        dayperiod-short{
+            dn{"прије подне/по подне"}
+        }
+        fri{
+            relative{
+                "-1"{"прошлог петка"}
+                "0"{"у петак"}
+                "1"{"сљедећег петка"}
+            }
+            relativeTime{
+                past{
+                    few{"прије {0} петка"}
+                    one{"прије {0} петка"}
+                    other{"прије {0} петака"}
+                }
+            }
+        }
+        fri-narrow{
+            relative{
+                "-1"{"прошлог пет"}
+                "0"{"у пет"}
+                "1"{"сљедећег пет"}
+            }
+            relativeTime{
+                past{
+                    few{"прије {0} петка"}
+                    one{"прије {0} петка"}
+                    other{"прије {0} петака"}
+                }
+            }
+        }
+        fri-short{
+            relative{
+                "-1"{"прошлог пет"}
+                "0"{"у пет"}
+                "1"{"сљедећег пет"}
+            }
+            relativeTime{
+                past{
+                    few{"прије {0} петка"}
+                    one{"прије {0} петка"}
+                    other{"прије {0} петака"}
+                }
+            }
+        }
+        hour{
+            relativeTime{
+                past{
+                    few{"прије {0} сата"}
+                    one{"прије {0} сата"}
+                    other{"прије {0} сати"}
+                }
+            }
+        }
+        hour-narrow{
+            relativeTime{
+                past{
+                    few{"прије {0} ч."}
+                    one{"прије {0} ч."}
+                    other{"прије {0} ч."}
+                }
+            }
+        }
+        hour-short{
+            relativeTime{
+                past{
+                    few{"прије {0} ч."}
+                    one{"прије {0} ч."}
+                    other{"прије {0} ч."}
+                }
+            }
+        }
+        minute{
+            relativeTime{
+                past{
+                    few{"прије {0} минута"}
+                    one{"прије {0} минута"}
+                    other{"прије {0} минута"}
+                }
+            }
+        }
+        minute-narrow{
+            relativeTime{
+                past{
+                    few{"прије {0} мин."}
+                    one{"прије {0} мин."}
+                    other{"прије {0} мин."}
+                }
+            }
+        }
+        minute-short{
+            relativeTime{
+                past{
+                    few{"прије {0} мин."}
+                    one{"прије {0} мин."}
+                    other{"прије {0} мин."}
+                }
+            }
+        }
+        mon{
+            relative{
+                "-1"{"прошлог понедјељка"}
+                "0"{"у понедјељак"}
+                "1"{"сљедећег понедјељка"}
+            }
+            relativeTime{
+                future{
+                    few{"за {0} понедјељка"}
+                    one{"за {0} понедјељак"}
+                    other{"за {0} понедјељака"}
+                }
+                past{
+                    few{"прије {0} понедјељка"}
+                    one{"прије {0} понедјељка"}
+                    other{"прије {0} понедјељака"}
+                }
+            }
+        }
+        mon-narrow{
+            relative{
+                "-1"{"прошлог пон"}
+                "0"{"у пон"}
+                "1"{"сљедећег пон"}
+            }
+            relativeTime{
+                future{
+                    few{"за {0} понедјељкa"}
+                    one{"за {0} понедјељак"}
+                    other{"за {0} понедјељака"}
+                }
+                past{
+                    few{"прије {0} понедјељка"}
+                    one{"прије {0} понедјељка"}
+                    other{"прије {0} понедјељака"}
+                }
+            }
+        }
+        mon-short{
+            relative{
+                "-1"{"прошлог пон"}
+                "0"{"у пон"}
+                "1"{"сљедећег пон"}
+            }
+            relativeTime{
+                future{
+                    few{"за {0} понедјељка"}
+                    one{"за {0} понедјељак"}
+                    other{"за {0} понедјељака"}
+                }
+                past{
+                    few{"прије {0} понедјељка"}
+                    one{"прије {0} понедјељка"}
+                    other{"прије {0} понедјељака"}
+                }
+            }
+        }
+        month{
+            dn{"мјесец"}
+            relative{
+                "-1"{"прошлог мјесеца"}
+                "0"{"овог мјесеца"}
+                "1"{"сљедећег мјесеца"}
+            }
+            relativeTime{
+                future{
+                    few{"за {0} мјесеца"}
+                    one{"за {0} мјесец"}
+                    other{"за {0} мјесеци"}
+                }
+                past{
+                    few{"прије {0} мјесеца"}
+                    one{"прије {0} мјесеца"}
+                    other{"прије {0} мјесеци"}
+                }
+            }
+        }
+        month-narrow{
+            relative{
+                "-1"{"прошлог м."}
+                "0"{"овог м."}
+                "1"{"сљедећег м."}
+            }
+            relativeTime{
+                past{
+                    few{"прије {0} м."}
+                    one{"прије {0} м."}
+                    other{"прије {0} м."}
+                }
+            }
+        }
+        month-short{
+            dn{"мјес."}
+            relative{
+                "-1"{"прошлог мјес."}
+                "0"{"овог мјес."}
+                "1"{"сљедећег мјес."}
+            }
+            relativeTime{
+                future{
+                    few{"за {0} мјес."}
+                    one{"за {0} мјес."}
+                    other{"за {0} мјес."}
+                }
+                past{
+                    few{"прије {0} мјес."}
+                    one{"прије {0} мјес."}
+                    other{"прије {0} мјес."}
+                }
+            }
+        }
+        quarter{
+            relative{
+                "-1"{"прошлог квартала"}
+                "0"{"овог квартала"}
+                "1"{"сљедећег квартала"}
+            }
+            relativeTime{
+                past{
+                    few{"прије {0} квартала"}
+                    one{"прије {0} квартала"}
+                    other{"прије {0} квартала"}
+                }
+            }
+        }
+        quarter-narrow{
+            relativeTime{
+                past{
+                    few{"прије {0} кв."}
+                    one{"прије {0} кв."}
+                    other{"прије {0} кв."}
+                }
+            }
+        }
+        quarter-short{
+            relativeTime{
+                past{
+                    few{"прије {0} кв."}
+                    one{"прије {0} кв."}
+                    other{"прије {0} кв."}
+                }
+            }
+        }
+        sat{
+            relative{
+                "-1"{"прошле суботе"}
+                "0"{"у суботу"}
+                "1"{"сљедеће суботе"}
+            }
+            relativeTime{
+                past{
+                    few{"прије {0} суботе"}
+                    one{"прије {0} суботе"}
+                    other{"прије {0} субота"}
+                }
+            }
+        }
+        sat-narrow{
+            relative{
+                "-1"{"прошле суб"}
+                "0"{"у суб"}
+                "1"{"сљедеће суб"}
+            }
+            relativeTime{
+                past{
+                    few{"прије {0} суботе"}
+                    one{"прије {0} суботе"}
+                    other{"прије {0} субота"}
+                }
+            }
+        }
+        sat-short{
+            relative{
+                "-1"{"прошле суб"}
+                "0"{"у суб"}
+                "1"{"сљедеће суб"}
+            }
+            relativeTime{
+                past{
+                    few{"прије {0} суботе"}
+                    one{"прије {0} суботе"}
+                    other{"прије {0} субота"}
+                }
+            }
+        }
+        second{
+            relativeTime{
+                past{
+                    few{"прије {0} секунде"}
+                    one{"прије {0} секунде"}
+                    other{"прије {0} секунди"}
+                }
+            }
+        }
+        second-narrow{
+            relativeTime{
+                past{
+                    few{"прије {0} с."}
+                    one{"прије {0} с."}
+                    other{"прије {0} с."}
+                }
+            }
+        }
+        second-short{
+            relativeTime{
+                past{
+                    few{"прије {0} сек."}
+                    one{"прије {0} сек."}
+                    other{"прије {0} сек."}
+                }
+            }
+        }
+        sun{
+            relative{
+                "-1"{"прошле недјеље"}
+                "0"{"у недјељу"}
+                "1"{"сљедеће недјеље"}
+            }
+            relativeTime{
+                future{
+                    few{"за {0} недјеље"}
+                    one{"за {0} недјељу"}
+                    other{"за {0} недјеља"}
+                }
+                past{
+                    few{"прије {0} недјеље"}
+                    one{"прије {0} недјеље"}
+                    other{"прије {0} недјеља"}
+                }
+            }
+        }
+        sun-narrow{
+            relative{
+                "-1"{"пр. нед."}
+                "0"{"у нед"}
+                "1"{"сљ. нед."}
+            }
+            relativeTime{
+                future{
+                    few{"за {0} недјеље"}
+                    one{"за {0} недјељу"}
+                    other{"за {0} недјеља"}
+                }
+                past{
+                    few{"прије {0} недјеље"}
+                    one{"прије {0} недјеље"}
+                    other{"прије {0} недјеља"}
+                }
+            }
+        }
+        sun-short{
+            relative{
+                "-1"{"пр. нед."}
+                "0"{"у нед"}
+                "1"{"сљ. нед."}
+            }
+            relativeTime{
+                future{
+                    few{"за {0} недјеље"}
+                    one{"за {0} недјељу"}
+                    other{"за {0} недјеља"}
+                }
+                past{
+                    few{"прије {0} недјеље"}
+                    one{"прије {0} недјеље"}
+                    other{"прије {0} недјеља"}
+                }
+            }
+        }
+        thu{
+            relative{
+                "-1"{"прошлог четвртка"}
+                "0"{"у четвртак"}
+                "1"{"сљедећег четвртка"}
+            }
+            relativeTime{
+                past{
+                    few{"прије {0} четвртка"}
+                    one{"прије {0} четвртка"}
+                    other{"прије {0} четвртака"}
+                }
+            }
+        }
+        thu-narrow{
+            relative{
+                "-1"{"прошлог чет"}
+                "0"{"у чет"}
+                "1"{"сљедећег чет"}
+            }
+            relativeTime{
+                past{
+                    few{"прије {0} четвртка"}
+                    one{"прије {0} четвртка"}
+                    other{"прије {0} четвртака"}
+                }
+            }
+        }
+        thu-short{
+            relative{
+                "-1"{"прошлог чет"}
+                "0"{"у чет"}
+                "1"{"сљедећег чет"}
+            }
+            relativeTime{
+                past{
+                    few{"прије {0} четвртка"}
+                    one{"прије {0} четвртка"}
+                    other{"прије {0} четвртака"}
+                }
+            }
+        }
+        tue{
+            relative{
+                "-1"{"прошлог уторка"}
+                "0"{"у уторак"}
+                "1"{"сљедећег уторка"}
+            }
+            relativeTime{
+                past{
+                    few{"прије {0} уторка"}
+                    one{"прије {0} уторка"}
+                    other{"прије {0} уторака"}
+                }
+            }
+        }
+        tue-narrow{
+            relative{
+                "-1"{"прошлог уто"}
+                "0"{"у уто"}
+                "1"{"сљедећег уто"}
+            }
+            relativeTime{
+                past{
+                    few{"прије {0} уторка"}
+                    one{"прије {0} уторка"}
+                    other{"прије {0} уторака"}
+                }
+            }
+        }
+        tue-short{
+            relative{
+                "-1"{"прошлог уто"}
+                "0"{"у уто"}
+                "1"{"сљедећег уто"}
+            }
+            relativeTime{
+                past{
+                    few{"прије {0} уторка"}
+                    one{"прије {0} уторка"}
+                    other{"прије {0} уторака"}
+                }
+            }
+        }
+        wed{
+            relative{
+                "-1"{"прошле сриједе"}
+                "0"{"у сриједу"}
+                "1"{"сљедеће сриједе"}
+            }
+            relativeTime{
+                future{
+                    few{"за {0} сриједе"}
+                    one{"за {0} сриједу"}
+                    other{"за {0} сриједа"}
+                }
+                past{
+                    few{"прије {0} сриједе"}
+                    one{"прије {0} сриједе"}
+                    other{"прије {0} сриједа"}
+                }
+            }
+        }
+        wed-narrow{
+            relative{
+                "-1"{"прошле сри"}
+                "0"{"у сри"}
+                "1"{"сљедеће сри"}
+            }
+            relativeTime{
+                future{
+                    few{"за {0} сриједе"}
+                    one{"за {0} сриједу"}
+                    other{"за {0} сриједа"}
+                }
+                past{
+                    few{"прије {0} сриједе"}
+                    one{"прије {0} сриједе"}
+                    other{"прије {0} сриједа"}
+                }
+            }
+        }
+        wed-short{
+            relative{
+                "-1"{"прошле сри"}
+                "0"{"у сри"}
+                "1"{"сљедеће сри"}
+            }
+            relativeTime{
+                future{
+                    few{"за {0} сриједе"}
+                    one{"за {0} сриједу"}
+                    other{"за {0} сриједа"}
+                }
+                past{
+                    few{"прије {0} сриједе"}
+                    one{"прије {0} сриједе"}
+                    other{"прије {0} сриједа"}
+                }
+            }
+        }
         week{
+            dn{"недјеља"}
             relative{
                 "-1"{"претходне недеље"}
+                "0"{"ове недјеље"}
                 "1"{"наредне недеље"}
             }
+            relativePeriod{"недјеља која почиње {0}."}
+            relativeTime{
+                future{
+                    few{"за {0} недјеље"}
+                    one{"за {0} недјељу"}
+                    other{"за {0} недјеља"}
+                }
+                past{
+                    few{"прије {0} недјеље"}
+                    one{"прије {0} недјеље"}
+                    other{"прије {0} недјеља"}
+                }
+            }
+        }
+        week-narrow{
+            relative{
+                "-1"{"прошле н."}
+                "0"{"ове н."}
+                "1"{"сљедеће н."}
+            }
+            relativePeriod{"недјеља која почиње {0}."}
+            relativeTime{
+                past{
+                    few{"прије {0} н."}
+                    one{"прије {0} н."}
+                    other{"прије {0} н."}
+                }
+            }
+        }
+        week-short{
+            relativePeriod{"недјеља која почиње {0}."}
+            relativeTime{
+                past{
+                    few{"прије {0} нед."}
+                    one{"прије {0} нед."}
+                    other{"прије {0} нед."}
+                }
+            }
+        }
+        weekOfMonth{
+            dn{"недјеља у мјесецу"}
+        }
+        weekOfMonth-narrow{
+            dn{"нед. у мјес."}
+        }
+        weekOfMonth-short{
+            dn{"нед. у мјес."}
+        }
+        weekday{
+            dn{"дан у недјељи"}
+        }
+        weekday-narrow{
+            dn{"дан у недјељи"}
+        }
+        weekday-short{
+            dn{"дан у недјељи"}
+        }
+        weekdayOfMonth{
+            dn{"дан у мјесецу"}
+        }
+        weekdayOfMonth-narrow{
+            dn{"дан у мјесецу"}
+        }
+        weekdayOfMonth-short{
+            dn{"дан у мјесецу"}
+        }
+        year{
+            relative{
+                "-1"{"прошле године"}
+                "0"{"ове године"}
+                "1"{"сљедеће године"}
+            }
+            relativeTime{
+                past{
+                    few{"прије {0} године"}
+                    one{"прије {0} године"}
+                    other{"прије {0} година"}
+                }
+            }
+        }
+        year-narrow{
+            relative{
+                "-1"{"прошле г."}
+                "0"{"ове г."}
+                "1"{"сљедеће г."}
+            }
+            relativeTime{
+                past{
+                    few{"прије {0} г."}
+                    one{"прије {0} г."}
+                    other{"прије {0} г."}
+                }
+            }
+        }
+        year-short{
+            relative{
+                "-1"{"прошле год."}
+                "0"{"ове год."}
+                "1"{"сљедеће год."}
+            }
+            relativeTime{
+                past{
+                    few{"прије {0} год."}
+                    one{"прије {0} год."}
+                    other{"прије {0} год."}
+                }
+            }
         }
     }
 }
diff --git a/icu4c/source/data/locales/sr_Cyrl_CS.txt b/icu4c/source/data/locales/sr_Cyrl_CS.txt
index 9325e5a..2da82d2 100644
--- a/icu4c/source/data/locales/sr_Cyrl_CS.txt
+++ b/icu4c/source/data/locales/sr_Cyrl_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_CS{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/locales/sr_Cyrl_ME.txt b/icu4c/source/data/locales/sr_Cyrl_ME.txt
index 4796082..b81fecb 100644
--- a/icu4c/source/data/locales/sr_Cyrl_ME.txt
+++ b/icu4c/source/data/locales/sr_Cyrl_ME.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_ME{
-    Version{"37"}
     calendar{
         generic{
             intervalFormats{
diff --git a/icu4c/source/data/locales/sr_Cyrl_RS.txt b/icu4c/source/data/locales/sr_Cyrl_RS.txt
index 26ee9f3..2daf131 100644
--- a/icu4c/source/data/locales/sr_Cyrl_RS.txt
+++ b/icu4c/source/data/locales/sr_Cyrl_RS.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_RS{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sr_Cyrl_XK.txt b/icu4c/source/data/locales/sr_Cyrl_XK.txt
index 4ac1f46..2b4112e 100644
--- a/icu4c/source/data/locales/sr_Cyrl_XK.txt
+++ b/icu4c/source/data/locales/sr_Cyrl_XK.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_XK{
-    Version{"37"}
     calendar{
         generic{
             intervalFormats{
diff --git a/icu4c/source/data/locales/sr_Cyrl_YU.txt b/icu4c/source/data/locales/sr_Cyrl_YU.txt
index 806d42c..5874f8c 100644
--- a/icu4c/source/data/locales/sr_Cyrl_YU.txt
+++ b/icu4c/source/data/locales/sr_Cyrl_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_YU{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/locales/sr_Latn.txt b/icu4c/source/data/locales/sr_Latn.txt
index 4de721d..83196b9 100644
--- a/icu4c/source/data/locales/sr_Latn.txt
+++ b/icu4c/source/data/locales/sr_Latn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn{
     %%Parent{"root"}
     AuxExemplarCharacters{"[å q w x y]"}
@@ -250,7 +251,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -704,6 +704,10 @@
                     "pre nove ere",
                     "nove ere",
                 }
+                wide%variant{
+                    "pre naše ere",
+                    "naše ere",
+                }
             }
             intervalFormats{
                 H{
@@ -2367,7 +2371,7 @@
         number{
             lenient{
                 "[\\-‒⁻₋−➖﹣-]",
-                "[,،٫、︐︑﹐﹑,、]",
+                "[,،٫⹁、︐︑﹐﹑,、]",
                 "[+⁺₊➕﬩﹢+]",
             }
         }
diff --git a/icu4c/source/data/locales/sr_Latn_BA.txt b/icu4c/source/data/locales/sr_Latn_BA.txt
index aa20a85..331f1ca 100644
--- a/icu4c/source/data/locales/sr_Latn_BA.txt
+++ b/icu4c/source/data/locales/sr_Latn_BA.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_BA{
-    Version{"37"}
     calendar{
         generic{
             intervalFormats{
@@ -23,32 +23,11 @@
                 "prije podne",
                 "po podne",
             }
-            availableFormats{
-                MMMMW{
-                    few{"W. 'sjedmica' 'u' MMMM"}
-                    one{"W. 'sjedmica' 'u' MMMM"}
-                    other{"W. 'sjedmica' 'u' MMMM"}
-                }
-                yw{
-                    few{"w. 'sjedmica' 'u' Y."}
-                    one{"w. 'sjedmica' 'u' Y."}
-                    other{"w. 'sjedmica' 'u' Y."}
-                }
-            }
             dayNames{
                 format{
-                    abbreviated{
-                        "ned",
-                        "pon",
-                        "ut",
-                        "sr",
-                        "čet",
-                        "pet",
-                        "sub",
-                    }
                     wide{
                         "nedjelja",
-                        "ponedeljak",
+                        "ponedjeljak",
                         "utorak",
                         "srijeda",
                         "četvrtak",
@@ -60,15 +39,15 @@
                     abbreviated{
                         "ned",
                         "pon",
-                        "ut",
-                        "sr",
+                        "uto",
+                        "sri",
                         "čet",
                         "pet",
                         "sub",
                     }
                     wide{
                         "nedjelja",
-                        "ponedeljak",
+                        "ponedjeljak",
                         "utorak",
                         "srijeda",
                         "četvrtak",
@@ -116,7 +95,7 @@
                     "nove ere",
                 }
                 wide%variant{
-                    "p. n. e.",
+                    "pre naše ere",
                     "nove ere",
                 }
             }
@@ -146,12 +125,630 @@
             }
         }
     }
+    characterLabel{
+        body{"tijelo"}
+        bullets_stars{"Znakovi za nabrajanje/zvjezdice"}
+        downwards_arrows{"Strelice nadolje"}
+        downwards_upwards_arrows{"Strelice nadolje i nagore"}
+        leftwards_arrows{"Strelice nalijevo"}
+        leftwards_rightwards_arrows{"Strelice nalijevo i nadesno"}
+        place{"mjesto"}
+        travel_places{"Putovanja i mjesta"}
+        weather{"vrijeme"}
+    }
     fields{
+        day{
+            relativeTime{
+                past{
+                    few{"prije {0} dana"}
+                    one{"prije {0} dana"}
+                    other{"prije {0} dana"}
+                }
+            }
+        }
+        day-narrow{
+            relativeTime{
+                past{
+                    few{"prije {0} d."}
+                    one{"prije {0} d."}
+                    other{"prije {0} d."}
+                }
+            }
+        }
+        day-short{
+            relativeTime{
+                past{
+                    few{"prije {0} d."}
+                    one{"prije {0} d."}
+                    other{"prije {0} d."}
+                }
+            }
+        }
+        dayperiod{
+            dn{"prije podne/po podne"}
+        }
+        dayperiod-narrow{
+            dn{"prije podne/po podne"}
+        }
+        dayperiod-short{
+            dn{"prije podne/po podne"}
+        }
+        fri{
+            relative{
+                "1"{"sljedećeg petka"}
+            }
+            relativeTime{
+                past{
+                    few{"prije {0} petka"}
+                    one{"prije {0} petka"}
+                    other{"prije {0} petaka"}
+                }
+            }
+        }
+        fri-narrow{
+            relative{
+                "1"{"sljedećeg pet"}
+            }
+            relativeTime{
+                past{
+                    few{"prije {0} petka"}
+                    one{"prije {0} petka"}
+                    other{"prije {0} petaka"}
+                }
+            }
+        }
+        fri-short{
+            relative{
+                "1"{"sljedećeg pet"}
+            }
+            relativeTime{
+                past{
+                    few{"prije {0} petka"}
+                    one{"prije {0} petka"}
+                    other{"prije {0} petaka"}
+                }
+            }
+        }
+        hour{
+            relativeTime{
+                past{
+                    few{"prije {0} sata"}
+                    one{"prije {0} sata"}
+                    other{"prije {0} sati"}
+                }
+            }
+        }
+        hour-narrow{
+            relativeTime{
+                past{
+                    few{"prije {0} č."}
+                    one{"prije {0} č."}
+                    other{"prije {0} č."}
+                }
+            }
+        }
+        hour-short{
+            relativeTime{
+                past{
+                    few{"prije {0} č."}
+                    one{"prije {0} č."}
+                    other{"prije {0} č."}
+                }
+            }
+        }
+        minute{
+            relativeTime{
+                past{
+                    few{"prije {0} minuta"}
+                    one{"prije {0} minuta"}
+                    other{"prije {0} minuta"}
+                }
+            }
+        }
+        minute-narrow{
+            relativeTime{
+                past{
+                    few{"prije {0} min."}
+                    one{"prije {0} min."}
+                    other{"prije {0} min."}
+                }
+            }
+        }
+        minute-short{
+            relativeTime{
+                past{
+                    few{"prije {0} min."}
+                    one{"prije {0} min."}
+                    other{"prije {0} min."}
+                }
+            }
+        }
+        mon{
+            relative{
+                "-1"{"prošlog ponedjeljka"}
+                "0"{"u ponedjeljak"}
+                "1"{"sljedećeg ponedjeljka"}
+            }
+            relativeTime{
+                future{
+                    few{"za {0} ponedjeljka"}
+                    one{"za {0} ponedjeljak"}
+                    other{"za {0} ponedjeljaka"}
+                }
+                past{
+                    few{"prije {0} ponedjeljka"}
+                    one{"prije {0} ponedjeljka"}
+                    other{"prije {0} ponedjeljaka"}
+                }
+            }
+        }
+        mon-narrow{
+            relative{
+                "1"{"sljedećeg pon"}
+            }
+            relativeTime{
+                future{
+                    few{"za {0} ponedjeljka"}
+                    one{"za {0} ponedjeljak"}
+                    other{"za {0} ponedjeljaka"}
+                }
+                past{
+                    few{"prije {0} ponedjeljka"}
+                    one{"prije {0} ponedjeljka"}
+                    other{"prije {0} ponedjeljaka"}
+                }
+            }
+        }
+        mon-short{
+            relative{
+                "1"{"sljedećeg pon"}
+            }
+            relativeTime{
+                future{
+                    few{"za {0} ponedjeljka"}
+                    one{"za {0} ponedjeljak"}
+                    other{"za {0} ponedjeljaka"}
+                }
+                past{
+                    few{"prije {0} ponedjeljka"}
+                    one{"prije {0} ponedjeljka"}
+                    other{"prije {0} ponedjeljaka"}
+                }
+            }
+        }
+        month{
+            dn{"mjesec"}
+            relative{
+                "-1"{"prošlog mjeseca"}
+                "0"{"ovog mjeseca"}
+                "1"{"sljedećeg mjeseca"}
+            }
+            relativeTime{
+                future{
+                    few{"za {0} mjeseca"}
+                    one{"za {0} mjesec"}
+                    other{"za {0} mjeseci"}
+                }
+                past{
+                    few{"prije {0} mjeseca"}
+                    one{"prije {0} mjeseca"}
+                    other{"prije {0} mjeseci"}
+                }
+            }
+        }
+        month-narrow{
+            relative{
+                "1"{"sljedećeg m."}
+            }
+            relativeTime{
+                past{
+                    few{"prije {0} m."}
+                    one{"prije {0} m."}
+                    other{"prije {0} m."}
+                }
+            }
+        }
+        month-short{
+            dn{"mjes."}
+            relative{
+                "-1"{"prošlog mjes."}
+                "0"{"ovog mjes."}
+                "1"{"sljedećeg mjes."}
+            }
+            relativeTime{
+                future{
+                    few{"za {0} mjes."}
+                    one{"za {0} mjes."}
+                    other{"za {0} mjes."}
+                }
+                past{
+                    few{"prije {0} mjes."}
+                    one{"prije {0} mjes."}
+                    other{"prije {0} mjes."}
+                }
+            }
+        }
+        quarter{
+            relative{
+                "1"{"sljedećeg kvartala"}
+            }
+            relativeTime{
+                past{
+                    few{"prije {0} kvartala"}
+                    one{"prije {0} kvartala"}
+                    other{"prije {0} kvartala"}
+                }
+            }
+        }
+        quarter-narrow{
+            relativeTime{
+                past{
+                    few{"prije {0} kv."}
+                    one{"prije {0} kv."}
+                    other{"prije {0} kv."}
+                }
+            }
+        }
+        quarter-short{
+            relativeTime{
+                past{
+                    few{"prije {0} kv."}
+                    one{"prije {0} kv."}
+                    other{"prije {0} kv."}
+                }
+            }
+        }
+        sat{
+            relative{
+                "1"{"sljedeće subote"}
+            }
+            relativeTime{
+                past{
+                    few{"prije {0} subote"}
+                    one{"prije {0} subote"}
+                    other{"prije {0} subota"}
+                }
+            }
+        }
+        sat-narrow{
+            relative{
+                "1"{"sljedeće sub"}
+            }
+            relativeTime{
+                past{
+                    few{"prije {0} subote"}
+                    one{"prije {0} subote"}
+                    other{"prije {0} subota"}
+                }
+            }
+        }
+        sat-short{
+            relative{
+                "1"{"sljedeće sub"}
+            }
+            relativeTime{
+                past{
+                    few{"prije {0} subote"}
+                    one{"prije {0} subote"}
+                    other{"prije {0} subota"}
+                }
+            }
+        }
+        second{
+            relativeTime{
+                past{
+                    few{"prije {0} sekunde"}
+                    one{"prije {0} sekunde"}
+                    other{"prije {0} sekundi"}
+                }
+            }
+        }
+        second-narrow{
+            relativeTime{
+                past{
+                    few{"prije {0} s."}
+                    one{"prije {0} s."}
+                    other{"prije {0} s."}
+                }
+            }
+        }
+        second-short{
+            relativeTime{
+                past{
+                    few{"prije {0} sek."}
+                    one{"prije {0} sek."}
+                    other{"prije {0} sek."}
+                }
+            }
+        }
+        sun{
+            relative{
+                "-1"{"prošle nedjelje"}
+                "0"{"u nedjelju"}
+                "1"{"sljedeće nedjelje"}
+            }
+            relativeTime{
+                future{
+                    few{"za {0} nedjelje"}
+                    one{"za {0} nedjelju"}
+                    other{"za {0} nedjelja"}
+                }
+                past{
+                    few{"prije {0} nedjelje"}
+                    one{"prije {0} nedjelje"}
+                    other{"prije {0} nedjelja"}
+                }
+            }
+        }
+        sun-narrow{
+            relative{
+                "1"{"slj. ned."}
+            }
+            relativeTime{
+                future{
+                    few{"za {0} nedjelje"}
+                    one{"za {0} nedjelju"}
+                    other{"za {0} nedjelja"}
+                }
+                past{
+                    few{"prije {0} nedjelje"}
+                    one{"prije {0} nedjelje"}
+                    other{"prije {0} nedjelja"}
+                }
+            }
+        }
+        sun-short{
+            relative{
+                "1"{"slj. ned."}
+            }
+            relativeTime{
+                future{
+                    few{"za {0} nedjelje"}
+                    one{"za {0} nedjelju"}
+                    other{"za {0} nedjelja"}
+                }
+                past{
+                    few{"prije {0} nedjelje"}
+                    one{"prije {0} nedjelje"}
+                    other{"prije {0} nedjelja"}
+                }
+            }
+        }
+        thu{
+            relative{
+                "1"{"sljedećeg četvrtka"}
+            }
+            relativeTime{
+                past{
+                    few{"prije {0} četvrtka"}
+                    one{"prije {0} četvrtka"}
+                    other{"prije {0} četvrtaka"}
+                }
+            }
+        }
+        thu-narrow{
+            relative{
+                "1"{"sljedećeg čet"}
+            }
+            relativeTime{
+                past{
+                    few{"prije {0} četvrtka"}
+                    one{"prije {0} četvrtka"}
+                    other{"prije {0} četvrtaka"}
+                }
+            }
+        }
+        thu-short{
+            relative{
+                "1"{"sljedećeg čet"}
+            }
+            relativeTime{
+                past{
+                    few{"prije {0} četvrtka"}
+                    one{"prije {0} četvrtka"}
+                    other{"prije {0} četvrtaka"}
+                }
+            }
+        }
+        tue{
+            relative{
+                "1"{"sljedećeg utorka"}
+            }
+            relativeTime{
+                past{
+                    few{"prije {0} utorka"}
+                    one{"prije {0} utorka"}
+                    other{"prije {0} utoraka"}
+                }
+            }
+        }
+        tue-narrow{
+            relative{
+                "1"{"sljedećeg uto"}
+            }
+            relativeTime{
+                past{
+                    few{"prije {0} utorka"}
+                    one{"prije {0} utorka"}
+                    other{"prije {0} utoraka"}
+                }
+            }
+        }
+        tue-short{
+            relative{
+                "1"{"sljedećeg uto"}
+            }
+            relativeTime{
+                past{
+                    few{"prije {0} utorka"}
+                    one{"prije {0} utorka"}
+                    other{"prije {0} utoraka"}
+                }
+            }
+        }
+        wed{
+            relative{
+                "-1"{"prošle srijede"}
+                "0"{"u srijedu"}
+                "1"{"sljedeće srijede"}
+            }
+            relativeTime{
+                future{
+                    few{"za {0} srijede"}
+                    one{"za {0} srijedu"}
+                    other{"za {0} srijeda"}
+                }
+                past{
+                    few{"prije {0} srijede"}
+                    one{"prije {0} srijede"}
+                    other{"prije {0} srijeda"}
+                }
+            }
+        }
+        wed-narrow{
+            relative{
+                "-1"{"prošle sri"}
+                "0"{"u sri"}
+                "1"{"sljedeće sri"}
+            }
+            relativeTime{
+                future{
+                    few{"za {0} srijede"}
+                    one{"za {0} srijedu"}
+                    other{"za {0} srijeda"}
+                }
+                past{
+                    few{"prije {0} srijede"}
+                    one{"prije {0} srijede"}
+                    other{"prije {0} srijeda"}
+                }
+            }
+        }
+        wed-short{
+            relative{
+                "-1"{"prošle sri"}
+                "0"{"u sri"}
+                "1"{"sljedeće sri"}
+            }
+            relativeTime{
+                future{
+                    few{"za {0} srijede"}
+                    one{"za {0} srijedu"}
+                    other{"za {0} srijeda"}
+                }
+                past{
+                    few{"prije {0} srijede"}
+                    one{"prije {0} srijede"}
+                    other{"prije {0} srijeda"}
+                }
+            }
+        }
         week{
+            dn{"nedjelja"}
             relative{
                 "-1"{"prethodne nedelje"}
+                "0"{"ove nedjelje"}
                 "1"{"naredne nedelje"}
             }
+            relativePeriod{"nedjelja koja počinje {0}."}
+            relativeTime{
+                future{
+                    few{"za {0} nedjelje"}
+                    one{"za {0} nedjelju"}
+                    other{"za {0} nedjelja"}
+                }
+                past{
+                    few{"prije {0} nedjelje"}
+                    one{"prije {0} nedjelje"}
+                    other{"prije {0} nedjelja"}
+                }
+            }
+        }
+        week-narrow{
+            relative{
+                "1"{"sljedeće n."}
+            }
+            relativePeriod{"nedjelja koja počinje {0}."}
+            relativeTime{
+                past{
+                    few{"prije {0} n."}
+                    one{"prije {0} n."}
+                    other{"prije {0} n."}
+                }
+            }
+        }
+        week-short{
+            relativePeriod{"nedjelja koja počinje {0}."}
+            relativeTime{
+                past{
+                    few{"prije {0} ned."}
+                    one{"prije {0} ned."}
+                    other{"prije {0} ned."}
+                }
+            }
+        }
+        weekOfMonth{
+            dn{"nedjelja u mjesecu"}
+        }
+        weekOfMonth-narrow{
+            dn{"ned. u mjes."}
+        }
+        weekOfMonth-short{
+            dn{"ned. u mjes."}
+        }
+        weekday{
+            dn{"dan u nedjelji"}
+        }
+        weekday-narrow{
+            dn{"dan u nedjelji"}
+        }
+        weekday-short{
+            dn{"dan u nedjelji"}
+        }
+        weekdayOfMonth{
+            dn{"dan u mjesecu"}
+        }
+        weekdayOfMonth-narrow{
+            dn{"dan u mjesecu"}
+        }
+        weekdayOfMonth-short{
+            dn{"dan u mjesecu"}
+        }
+        year{
+            relative{
+                "1"{"sljedeće godine"}
+            }
+            relativeTime{
+                past{
+                    few{"prije {0} godine"}
+                    one{"prije {0} godine"}
+                    other{"prije {0} godina"}
+                }
+            }
+        }
+        year-narrow{
+            relative{
+                "1"{"sljedeće g."}
+            }
+            relativeTime{
+                past{
+                    few{"prije {0} g."}
+                    one{"prije {0} g."}
+                    other{"prije {0} g."}
+                }
+            }
+        }
+        year-short{
+            relative{
+                "1"{"sljedeće god."}
+            }
+            relativeTime{
+                past{
+                    few{"prije {0} god."}
+                    one{"prije {0} god."}
+                    other{"prije {0} god."}
+                }
+            }
         }
     }
 }
diff --git a/icu4c/source/data/locales/sr_Latn_CS.txt b/icu4c/source/data/locales/sr_Latn_CS.txt
index 0952735..7204cfd 100644
--- a/icu4c/source/data/locales/sr_Latn_CS.txt
+++ b/icu4c/source/data/locales/sr_Latn_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_CS{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/locales/sr_Latn_ME.txt b/icu4c/source/data/locales/sr_Latn_ME.txt
index b0f0017..36853cc 100644
--- a/icu4c/source/data/locales/sr_Latn_ME.txt
+++ b/icu4c/source/data/locales/sr_Latn_ME.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_ME{
-    Version{"37"}
     calendar{
         generic{
             intervalFormats{
diff --git a/icu4c/source/data/locales/sr_Latn_RS.txt b/icu4c/source/data/locales/sr_Latn_RS.txt
index 71eab15..822d192 100644
--- a/icu4c/source/data/locales/sr_Latn_RS.txt
+++ b/icu4c/source/data/locales/sr_Latn_RS.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_RS{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sr_Latn_XK.txt b/icu4c/source/data/locales/sr_Latn_XK.txt
index 86cabe9..7006bba 100644
--- a/icu4c/source/data/locales/sr_Latn_XK.txt
+++ b/icu4c/source/data/locales/sr_Latn_XK.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_XK{
-    Version{"37"}
     calendar{
         generic{
             intervalFormats{
diff --git a/icu4c/source/data/locales/sr_Latn_YU.txt b/icu4c/source/data/locales/sr_Latn_YU.txt
index 2747ab2..415a4d8 100644
--- a/icu4c/source/data/locales/sr_Latn_YU.txt
+++ b/icu4c/source/data/locales/sr_Latn_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_YU{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/locales/sr_ME.txt b/icu4c/source/data/locales/sr_ME.txt
index 32dc910..aa51626 100644
--- a/icu4c/source/data/locales/sr_ME.txt
+++ b/icu4c/source/data/locales/sr_ME.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_ME{
     "%%ALIAS"{"sr_Latn_ME"}
 }
diff --git a/icu4c/source/data/locales/sr_RS.txt b/icu4c/source/data/locales/sr_RS.txt
index 674ff77..84db469 100644
--- a/icu4c/source/data/locales/sr_RS.txt
+++ b/icu4c/source/data/locales/sr_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_RS{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/locales/sr_XK.txt b/icu4c/source/data/locales/sr_XK.txt
index 9628a27..0d3aa53 100644
--- a/icu4c/source/data/locales/sr_XK.txt
+++ b/icu4c/source/data/locales/sr_XK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_XK{
     "%%ALIAS"{"sr_Cyrl_XK"}
 }
diff --git a/icu4c/source/data/locales/sr_YU.txt b/icu4c/source/data/locales/sr_YU.txt
index 26563d0..2d67778 100644
--- a/icu4c/source/data/locales/sr_YU.txt
+++ b/icu4c/source/data/locales/sr_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_YU{
-    "%%ALIAS"{"sr_Cyrl_RS"}
+    "%%ALIAS"{"sr_RS"}
 }
diff --git a/icu4c/source/data/locales/su.txt b/icu4c/source/data/locales/su.txt
index dd12573..12395da 100644
--- a/icu4c/source/data/locales/su.txt
+++ b/icu4c/source/data/locales/su.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su{
     AuxExemplarCharacters{"[á à ă â å ä ã ā æ ç è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ú ù ŭ û ü ū ÿ]"}
     ExemplarCharacters{"[a b c d e é f g h i j k l m n o p q r s t u v w x y z]"}
@@ -12,6 +13,7 @@
     NumberElements{
         latn{
             patterns{
+                currencyFormat{"¤#,##0.00"}
                 decimalFormat{"#,##0.###"}
             }
             symbols{
@@ -22,7 +24,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -35,8 +36,8 @@
                 "d MMM y G",
                 "d/M/y GGGGG",
                 "{1}, {0}",
-                "{1} 'pukul' {0}",
-                "{1} 'pukul' {0}",
+                "{1} 'jam' {0}",
+                "{1} 'jam' {0}",
                 "{1}, {0}",
                 "{1}, {0}",
             }
@@ -55,8 +56,8 @@
                 "d MMM y",
                 "d/M/yy",
                 "{1}, {0}",
-                "{1} 'pukul' {0}",
-                "{1} 'pukul' {0}",
+                "{1} 'jam' {0}",
+                "{1} 'jam' {0}",
                 "{1}, {0}",
                 "{1}, {0}",
             }
@@ -107,7 +108,7 @@
                         "Sen",
                         "Sal",
                         "Reb",
-                        "Kam",
+                        "Kem",
                         "Jum",
                         "Sap",
                     }
@@ -125,7 +126,7 @@
                         "Senén",
                         "Salasa",
                         "Rebo",
-                        "Kamis",
+                        "Kemis",
                         "Jumaah",
                         "Saptu",
                     }
@@ -136,7 +137,7 @@
                         "Sen",
                         "Sal",
                         "Reb",
-                        "Kam",
+                        "Kem",
                         "Jum",
                         "Sap",
                     }
@@ -154,7 +155,7 @@
                         "Senén",
                         "Salasa",
                         "Rebo",
-                        "Kamis",
+                        "Kemis",
                         "Jumaah",
                         "Saptu",
                     }
@@ -356,6 +357,13 @@
         second-short{
             dn{"dtk."}
         }
+        sun{
+            relative{
+                "-1"{"Minggu kamari"}
+                "0"{"Minggu ieu"}
+                "1"{"Minggu payun"}
+            }
+        }
         week{
             dn{"minggu"}
         }
diff --git a/icu4c/source/data/locales/su_ID.txt b/icu4c/source/data/locales/su_ID.txt
index 67dde38..8da0f56 100644
--- a/icu4c/source/data/locales/su_ID.txt
+++ b/icu4c/source/data/locales/su_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su_ID{
     "%%ALIAS"{"su_Latn_ID"}
 }
diff --git a/icu4c/source/data/locales/su_Latn.txt b/icu4c/source/data/locales/su_Latn.txt
index 008b423..87ca4fa 100644
--- a/icu4c/source/data/locales/su_Latn.txt
+++ b/icu4c/source/data/locales/su_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/su_Latn_ID.txt b/icu4c/source/data/locales/su_Latn_ID.txt
index f4fd488..569e704 100644
--- a/icu4c/source/data/locales/su_Latn_ID.txt
+++ b/icu4c/source/data/locales/su_Latn_ID.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su_Latn_ID{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sv.txt b/icu4c/source/data/locales/sv.txt
index 61543c0..f1a2420 100644
--- a/icu4c/source/data/locales/sv.txt
+++ b/icu4c/source/data/locales/sv.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sv{
     AuxExemplarCharacters{"[á â ã ā ç è ë í î ï ī ñ ó ú ÿ ü æ ø]"}
     Ellipsis{
@@ -251,10 +252,26 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
+            DateTimePatterns{
+                "HH:mm:ss zzzz",
+                "HH:mm:ss z",
+                "HH:mm:ss",
+                "HH:mm",
+                "EEEE d MMMM y G",
+                "d MMMM y G",
+                "d MMM y G",
+                "y-MM-dd G",
+                "{1} {0}",
+                "{1} {0}",
+                "{1} {0}",
+                "{1} {0}",
+                "{1} {0}",
+            }
             availableFormats{
+                MMdd{"d/M"}
+                yyyyMM{"y-MM G"}
                 yyyyMMMM{"MMMM y G"}
             }
             eras{
@@ -269,14 +286,138 @@
                 }
             }
             intervalFormats{
+                GyM{
+                    G{"y-MM GGGGG – y-MM GGGGG"}
+                    M{"y-MM – y-MM GGGGG"}
+                    y{"y-MM – y-MM GGGGG"}
+                }
+                GyMEd{
+                    G{"E y-MM-dd GGGG – E y-MM-dd GGGG"}
+                    M{"E d/M y – E d/M y GGGGG"}
+                    d{"E y-MM-dd – E y-MM-dd GGGGG"}
+                    y{"E y-MM-dd – E y-MM-dd GGGGG"}
+                }
+                GyMd{
+                    G{"y-MM-dd GGGGG – y-MM-dd GGGGG"}
+                    M{"y-MM-dd – y-MM-dd GGGGG"}
+                    d{"y-MM-dd – y-MM-dd GGGGG"}
+                    y{"y-MM-dd – y-MM-dd GGGGG"}
+                }
                 hmv{
                     h{"h:mm–h:mm a v"}
                 }
+                yM{
+                    M{"y-MM – MM GGGGG"}
+                    y{"y-MM – y-MM GGGGG"}
+                }
+                yMEd{
+                    M{"E y-MM-dd – E y-MM-dd GGGGG"}
+                    d{"E y-MM-dd – E y-MM-dd GGGGG"}
+                    y{"E y-MM-dd – E y-MM-dd GGGGG"}
+                }
+                yMMMEd{
+                    M{"E d MMM–E d MMM y G"}
+                    d{"E d MMM–E d MMM y G"}
+                    y{"E d MMM y–E d MMM y G"}
+                }
+                yMd{
+                    M{"y-MM-dd – MM-dd GGGGG"}
+                    d{"y-MM-d – d GGGGG"}
+                    y{"y-MM-dd – y-MM-dd GGGGG"}
+                }
             }
         }
         chinese{
+            DateTimePatterns{
+                "HH:mm:ss zzzz",
+                "HH:mm:ss z",
+                "HH:mm:ss",
+                "HH:mm",
+                "EEEE d MMMM r(U)",
+                "d MMMM r(U)",
+                "d MMM r",
+                "r-MM-dd",
+                "{1} {0}",
+                "{1} {0}",
+                "{1} {0}",
+                "{1} {0}",
+                "{1} {0}",
+            }
+            availableFormats{
+                Ed{"E d"}
+                Gy{"r(U)"}
+                GyMMM{"MMM r(U)"}
+                GyMMMEd{"E d MMM r(U)"}
+                GyMMMd{"d MMM r"}
+                MEd{"E d/M"}
+                MMMEd{"E d MMM"}
+                MMMMd{"d MMMM"}
+                MMMd{"d MMM"}
+                Md{"d/M"}
+                UM{"M/U"}
+                UMMM{"MMM U"}
+                UMMMd{"d MMM U"}
+                UMd{"d/M U"}
+                yyyyMEd{"E r-MM-dd"}
+                yyyyMMM{"MMM r(U)"}
+                yyyyMMMEd{"E d MMM r(U)"}
+                yyyyMMMM{"MMMM r(U)"}
+                yyyyMMMd{"d MMM r"}
+                yyyyQQQ{"QQQ r(U)"}
+                yyyyQQQQ{"QQQQ r(U)"}
+            }
+            intervalFormats{
+                MEd{
+                    M{"E MM-dd – E MM-dd"}
+                    d{"E MM-dd – E MM-dd"}
+                }
+                MMMEd{
+                    M{"E d MMM – E d MMM"}
+                    d{"E d MMM – E d MMM"}
+                }
+                MMMd{
+                    M{"d MMM – d MMM"}
+                    d{"d–d MMM"}
+                }
+                yMEd{
+                    M{"E y-MM-dd – E y-MM-dd"}
+                    d{"E y-MM-dd – E y-MM-dd"}
+                    y{"E y-MM-dd – E y-MM-dd"}
+                }
+                yMMM{
+                    M{"MMM – MMM U"}
+                    y{"MMM U – MMM U"}
+                }
+                yMMMEd{
+                    M{"E d MMM – E d MMM U"}
+                    d{"E d MMM – E d MMM U"}
+                    y{"E d MMM U – E d MMM U"}
+                }
+                yMMMM{
+                    M{"MMMM–MMMM U"}
+                }
+                yMMMd{
+                    M{"d MMM – d MMM U"}
+                    d{"d–d MMM U"}
+                    y{"d MMM U – d MMM U"}
+                }
+            }
             monthNames{
                 format{
+                    abbreviated{
+                        "1:a mån",
+                        "2:a mån",
+                        "3:e mån",
+                        "4:e mån",
+                        "5:e mån",
+                        "6:e mån",
+                        "7:e mån",
+                        "8:e mån",
+                        "9:e mån",
+                        "10:e mån",
+                        "11:e mån",
+                        "12:e mån",
+                    }
                     wide{
                         "första månaden",
                         "andra månaden",
@@ -292,6 +433,22 @@
                         "tolfte månaden",
                     }
                 }
+                stand-alone{
+                    abbreviated{
+                        "1:a mån",
+                        "2:a mån",
+                        "3:e mån",
+                        "4:e mån",
+                        "5:e mån",
+                        "6:e mån",
+                        "7:e mån",
+                        "8:e mån",
+                        "9:e mån",
+                        "10:e mån",
+                        "11:e mån",
+                        "12:e mån",
+                    }
+                }
             }
         }
         coptic{
@@ -502,7 +659,7 @@
         }
         generic{
             DateTimePatterns{
-                "'kl'. HH:mm:ss zzzz",
+                "HH:mm:ss zzzz",
                 "HH:mm:ss z",
                 "HH:mm:ss",
                 "HH:mm",
@@ -572,18 +729,24 @@
                     m{"h:mm – h:mm B"}
                 }
                 Gy{
+                    G{"y G–y G"}
                     y{"y – y G"}
                 }
+                GyM{
+                    G{"M/y GGGGG–M/y GGGGG"}
+                    M{"M/y–M/y GGGGG"}
+                    y{"M/y–M/y GGGGG"}
+                }
                 GyMEd{
-                    G{"y-MM-dd, E GGGG – y-MM-dd, E GGGG"}
-                    M{"E, M/d/y – E, M/d/y GGGGG"}
-                    d{"y-MM-dd, E – y-MM-dd, E GGGGG"}
-                    y{"E, M/d/y – E, M/d/y GGGGG"}
+                    G{"E y-MM-dd GGGG – E y-MM-dd GGGG"}
+                    M{"E d/M y – E d/M y GGGGG"}
+                    d{"E y-MM-dd – E y-MM-dd GGGGG"}
+                    y{"E d/M y – E d/M y GGGGG"}
                 }
                 GyMMM{
                     G{"MMM y G – MMM y G"}
                     M{"MMM – MMM y G"}
-                    y{"MMM y G – MMM y"}
+                    y{"MMM y – MMM y G"}
                 }
                 GyMMMEd{
                     G{"E d MMM y G – E d MMM y G"}
@@ -597,6 +760,12 @@
                     d{"d–d MMM y G"}
                     y{"d MMM y G – d MMM d y"}
                 }
+                GyMd{
+                    G{"y-MM-dd GGGGG – y-MM-dd GGGGG"}
+                    M{"d/M/y–d/M/y GGGGG"}
+                    d{"d/M/y–d/M/y GGGGG"}
+                    y{"y-MM-dd – y-MM-dd GGGGG"}
+                }
                 H{
                     H{"HH–HH"}
                 }
@@ -659,22 +828,22 @@
                     y{"y–y G"}
                 }
                 yM{
-                    M{"G y-MM – MM"}
-                    y{"G y-MM – y-MM"}
+                    M{"y-MM – y-MM GGGGG"}
+                    y{"y-MM – y-MM GGGGG"}
                 }
                 yMEd{
-                    M{"E y-MM-dd – E y-MM-dd G"}
-                    d{"E y-MM-dd – E y-MM-dd"}
-                    y{"E y-MM-dd – E y-MM-dd G"}
+                    M{"E y-MM-dd – E y-MM-dd GGGGG"}
+                    d{"E y-MM-dd – E y-MM-dd GGGGG"}
+                    y{"E y-MM-dd – E y-MM-dd GGGGG"}
                 }
                 yMMM{
                     M{"MMM–MMM y G"}
                     y{"MMM y – MMM y G"}
                 }
                 yMMMEd{
-                    M{"E dd MMM–E dd MMM y G"}
-                    d{"E dd MMM–E dd MMM y G"}
-                    y{"E dd MMM y–E dd MMM y G"}
+                    M{"E d MMM–E d MMM y G"}
+                    d{"E d MMM – E d MMM y G"}
+                    y{"E d MMM y–E d MMM y G"}
                 }
                 yMMMM{
                     M{"MMMM–MMMM y G"}
@@ -686,9 +855,9 @@
                     y{"d MMM y–d MMM y G"}
                 }
                 yMd{
-                    M{"G y-MM-dd – MM-dd"}
-                    d{"G y-MM-dd – dd"}
-                    y{"G y-MM-dd – y-MM-dd"}
+                    M{"d/M y – d/M y GGGGG"}
+                    d{"d/M y – d/M y GGGGG"}
+                    y{"d/M y – d/M y GGGGG"}
                 }
             }
         }
@@ -706,7 +875,7 @@
                 "em",
             }
             DateTimePatterns{
-                "'kl'. HH:mm:ss zzzz",
+                "HH:mm:ss zzzz",
                 "HH:mm:ss z",
                 "HH:mm:ss",
                 "HH:mm",
@@ -947,9 +1116,10 @@
             }
             intervalFormats{
                 Bh{
-                    h{"h – h B"}
+                    B{"h B–h B"}
                 }
                 Bhm{
+                    B{"h:mm B–h:mm B"}
                     h{"h:mm – h:mm B"}
                     m{"h:mm – h:mm B"}
                 }
@@ -957,6 +1127,17 @@
                     G{"y G – y G"}
                     y{"y–y G"}
                 }
+                GyM{
+                    G{"M/y GGGGG–M/y GGGGG"}
+                    M{"M/y–M/y GGGGG"}
+                    y{"M/y–M/y GGGGG"}
+                }
+                GyMEd{
+                    G{"E, d/M/y GGGGG–E, d/M/y GGGGG"}
+                    M{"E, d/M/y–E, d/M/y GGGGG"}
+                    d{"E, d/M/y–E, d/M/y GGGGG"}
+                    y{"E, d/M/y–E, d/M/y GGGGG"}
+                }
                 GyMMM{
                     G{"MMM y G – MMM y G"}
                     M{"MMM – MMM y G"}
@@ -964,9 +1145,9 @@
                 }
                 GyMMMEd{
                     G{"d MMM y G, E – d MMM y G, E"}
-                    M{"d MMM y G, E – d MMM, E"}
-                    d{"d MMM y G, E – d MMM, E"}
-                    y{"d MMM y G, E – d MMM y, E"}
+                    M{"E d MMM y G – E d MMM"}
+                    d{"E d MMM y G – E d MMM"}
+                    y{"E d MMM y G – E d MMM y"}
                 }
                 GyMMMd{
                     G{"d MMM y G – d MMM y G"}
@@ -974,6 +1155,12 @@
                     d{"d–d MMM y G"}
                     y{"d MMM y G – d MMM y"}
                 }
+                GyMd{
+                    G{"d/M/y GGGGG–d/M/y GGGGG"}
+                    M{"d/M/y–d/M/y GGGGG"}
+                    d{"d/M/y–d/M/y GGGGG"}
+                    y{"d/M/y–d/M/y GGGGG"}
+                }
                 H{
                     H{"HH–HH"}
                 }
@@ -1417,7 +1604,7 @@
         }
         japanese{
             DateTimePatterns{
-                "'kl'. HH:mm:ss zzzz",
+                "HH:mm:ss zzzz",
                 "HH:mm:ss z",
                 "HH:mm:ss",
                 "HH:mm",
@@ -2726,6 +2913,10 @@
             middle{"{0}, {1}"}
             start{"{0}, {1}"}
         }
+        standard-narrow{
+            2{"{0}, {1}"}
+            end{"{0}, {1}"}
+        }
         standard-short{
             2{"{0} och {1}"}
             end{"{0} och {1}"}
diff --git a/icu4c/source/data/locales/sv_AX.txt b/icu4c/source/data/locales/sv_AX.txt
index 001d06b..02741c9 100644
--- a/icu4c/source/data/locales/sv_AX.txt
+++ b/icu4c/source/data/locales/sv_AX.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sv_AX{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sv_FI.txt b/icu4c/source/data/locales/sv_FI.txt
index 0beb479..05a6cc7 100644
--- a/icu4c/source/data/locales/sv_FI.txt
+++ b/icu4c/source/data/locales/sv_FI.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sv_FI{
     NumberElements{
         latn{
@@ -8,7 +9,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             availableFormats{
diff --git a/icu4c/source/data/locales/sv_SE.txt b/icu4c/source/data/locales/sv_SE.txt
index f7b2944..97b9453 100644
--- a/icu4c/source/data/locales/sv_SE.txt
+++ b/icu4c/source/data/locales/sv_SE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sv_SE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sw.txt b/icu4c/source/data/locales/sw.txt
index 892ce73..4640f18 100644
--- a/icu4c/source/data/locales/sw.txt
+++ b/icu4c/source/data/locales/sw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw{
     AuxExemplarCharacters{"[c q x]"}
     Ellipsis{
@@ -11,7 +12,7 @@
         word-medial{"{0} … {1}"}
     }
     ExemplarCharacters{"[a b {ch} d e f g h i j k l m n o p r s t u v w y z]"}
-    ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P R S T U V W Y Z]"}
+    ExemplarCharactersIndex{"[A B {CH} D E F G H I J K L M N O P R S T U V W Y Z]"}
     ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . ' \u0022 ( ) \\[ \\] \\{ \\}]"}
     MoreInformation{"?"}
@@ -186,6 +187,7 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -212,7 +214,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -932,7 +933,7 @@
         arrows{"mishale"}
         body{"mwili"}
         box_drawing{"mchoro wa kisanduku"}
-        braille{"nukta vinundu"}
+        braille{"nukta nundu"}
         building{"jengo"}
         bullets_stars{"nukta au nyota"}
         consonantal_jamo{"alama za konsonanti"}
@@ -940,7 +941,7 @@
         dash_connector{"kistari au dashi"}
         digits{"tarakimu"}
         dingbats{"dingibati"}
-        divination_symbols{"alama za kugawa"}
+        divination_symbols{"alama za ubashiri"}
         downwards_arrows{"mishale inayoelekea chini"}
         downwards_upwards_arrows{"mishale ya kuwili"}
         east_asian_scripts{"hati za mashariki ya Asia"}
@@ -973,7 +974,7 @@
         limited_use{"matumizi finyu"}
         male{"mwanamume"}
         math_symbols{"alama za hesabu"}
-        middle_eastern_scripts{"hati za mashariki ya kati"}
+        middle_eastern_scripts{"hati za Mashariki ya Kati"}
         miscellaneous{"anuwai"}
         modern_scripts{"hati za kisasa"}
         modifier{"kibadilisha hati"}
@@ -985,7 +986,7 @@
         other{"nyingine"}
         paired{"imeoanishwa"}
         person{"mtu"}
-        phonetic_alphabet{"abjadi za fonetiki"}
+        phonetic_alphabet{"alfabeti za fonetiki"}
         pictographs{"picha"}
         place{"mahali"}
         plant{"mmea"}
@@ -993,10 +994,10 @@
         rightwards_arrows{"mishale inayoelekea kulia"}
         sign_standard_symbols{"ishara au alama"}
         small_form_variant{"aina za fomu ndogo"}
-        smiley{"tabasamu"}
-        smileys_people{"tabasamu au mtu"}
-        south_asian_scripts{"hati za kusini mwa Asia"}
-        southeast_asian_scripts{"hati za kusini mashariki mwa Asia"}
+        smiley{"kicheshi"}
+        smileys_people{"kicheshi au mtu"}
+        south_asian_scripts{"hati za Kusini mwa Asia"}
+        southeast_asian_scripts{"hati za Kusini Mashariki mwa Asia"}
         spacing{"kuacha nafasi"}
         sport{"michezo"}
         symbols{"alama"}
@@ -1008,7 +1009,7 @@
         variant_forms{"maumbo mbalimbali"}
         vocalic_jamo{"vibambo vya jamo vya sauti"}
         weather{"hali ya hewa"}
-        western_asian_scripts{"hati za magharibi mwa Asia"}
+        western_asian_scripts{"hati za Magharibi mwa Asia"}
         whitespace{"sehemu wazi"}
     }
     delimiters{
@@ -1865,7 +1866,7 @@
         date{
             lenient{
                 "[\\--/]",
-                "[\\:∶]",
+                "[\\:∶︓﹕:]",
             }
         }
         general{
diff --git a/icu4c/source/data/locales/sw_CD.txt b/icu4c/source/data/locales/sw_CD.txt
index 8511f14..95e08c6 100644
--- a/icu4c/source/data/locales/sw_CD.txt
+++ b/icu4c/source/data/locales/sw_CD.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw_CD{
     AuxExemplarCharacters{"[q x]"}
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p r s t u v w y z]"}
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             availableFormats{
diff --git a/icu4c/source/data/locales/sw_KE.txt b/icu4c/source/data/locales/sw_KE.txt
index f4275bd..a9ef6b1 100644
--- a/icu4c/source/data/locales/sw_KE.txt
+++ b/icu4c/source/data/locales/sw_KE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw_KE{
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}
     NumberElements{
@@ -148,7 +149,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -168,9 +168,6 @@
             }
         }
     }
-    characterLabel{
-        middle_eastern_scripts{"hati za Mashariki ya Kati"}
-    }
     measurementSystemNames{
         metric{"Kipimo"}
     }
diff --git a/icu4c/source/data/locales/sw_TZ.txt b/icu4c/source/data/locales/sw_TZ.txt
index 1a4b89a..07fe6e8 100644
--- a/icu4c/source/data/locales/sw_TZ.txt
+++ b/icu4c/source/data/locales/sw_TZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw_TZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/sw_UG.txt b/icu4c/source/data/locales/sw_UG.txt
index b17b504..3014c75 100644
--- a/icu4c/source/data/locales/sw_UG.txt
+++ b/icu4c/source/data/locales/sw_UG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw_UG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ta.txt b/icu4c/source/data/locales/ta.txt
index e9ba009..3174526 100644
--- a/icu4c/source/data/locales/ta.txt
+++ b/icu4c/source/data/locales/ta.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ta{
     AuxExemplarCharacters{"[\u200C\u200D]"}
     Ellipsis{
@@ -14,10 +15,7 @@
         "[அ ஆ இ ஈ உ ஊ எ ஏ ஐ ஒ ஓ ஔ ஃ க ங ச ஞ ட ண த ந ப ம ய ர ல வ ழ ள ற ன ஜ ஷ ஸ ஹ ா ி "
         "\u0BC0 ு ூ ெ ே ை ொ ோ ௌ \u0BCD]"
     }
-    ExemplarCharactersIndex{
-        "[அ ஆ இ ஈ உ ஊ எ ஏ ஐ ஒ ஓ ஔ க ங ச ஞ ட ண த ந ப ம ய ர ல வ ழ ள ற ன ஜ ஶ ஷ ஸ ஹ {க"
-        "\u0BCDஷ}]"
-    }
+    ExemplarCharactersIndex{"[அ ஆ இ ஈ உ ஊ எ ஏ ஐ ஒ ஓ ஔ க ங ச ஞ ட ண த ந ப ம ய ர ல வ ழ ள ற ன]"}
     ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0௦ 1௧ 2௨ 3௩ 4௪ 5௫ 6௬ 7௭ 8௮ 9௯]"}
     ExemplarCharactersPunctuation{
         "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ "
@@ -242,7 +240,6 @@
         }
         traditional{"taml"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
diff --git a/icu4c/source/data/locales/ta_IN.txt b/icu4c/source/data/locales/ta_IN.txt
index cf4cb6f..d4fe332 100644
--- a/icu4c/source/data/locales/ta_IN.txt
+++ b/icu4c/source/data/locales/ta_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ta_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ta_LK.txt b/icu4c/source/data/locales/ta_LK.txt
index b7c78a3..dcfe132 100644
--- a/icu4c/source/data/locales/ta_LK.txt
+++ b/icu4c/source/data/locales/ta_LK.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ta_LK{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ta_MY.txt b/icu4c/source/data/locales/ta_MY.txt
index 444d1af..3101cdf 100644
--- a/icu4c/source/data/locales/ta_MY.txt
+++ b/icu4c/source/data/locales/ta_MY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ta_MY{
     NumberElements{
         latn{
@@ -10,5 +11,4 @@
             }
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ta_SG.txt b/icu4c/source/data/locales/ta_SG.txt
index affa131..87e37e7 100644
--- a/icu4c/source/data/locales/ta_SG.txt
+++ b/icu4c/source/data/locales/ta_SG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ta_SG{
     NumberElements{
         latn{
@@ -10,5 +11,4 @@
             }
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/te.txt b/icu4c/source/data/locales/te.txt
index 4124b5b..40dcdda 100644
--- a/icu4c/source/data/locales/te.txt
+++ b/icu4c/source/data/locales/te.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 te{
     AuxExemplarCharacters{"[\u200C\u200D ౦ ౧ ౨ ౩ ౪ ౫ ౬ ౭ ౮ ౯]"}
     Ellipsis{
@@ -240,7 +241,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
diff --git a/icu4c/source/data/locales/te_IN.txt b/icu4c/source/data/locales/te_IN.txt
index d1ed23d..c394e93 100644
--- a/icu4c/source/data/locales/te_IN.txt
+++ b/icu4c/source/data/locales/te_IN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 te_IN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/teo.txt b/icu4c/source/data/locales/teo.txt
index 13b146d..2c62a8d 100644
--- a/icu4c/source/data/locales/teo.txt
+++ b/icu4c/source/data/locales/teo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 teo{
     AuxExemplarCharacters{"[f q z]"}
     ExemplarCharacters{"[a b c d e g h i j k l m n o p r s t u v w x y]"}
@@ -12,7 +13,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/teo_KE.txt b/icu4c/source/data/locales/teo_KE.txt
index 2b93c69..4a30389 100644
--- a/icu4c/source/data/locales/teo_KE.txt
+++ b/icu4c/source/data/locales/teo_KE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 teo_KE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/teo_UG.txt b/icu4c/source/data/locales/teo_UG.txt
index 64753ee..4b42e4d 100644
--- a/icu4c/source/data/locales/teo_UG.txt
+++ b/icu4c/source/data/locales/teo_UG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 teo_UG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/tg.txt b/icu4c/source/data/locales/tg.txt
index 80f0c30..1938dc4 100644
--- a/icu4c/source/data/locales/tg.txt
+++ b/icu4c/source/data/locales/tg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tg{
     AuxExemplarCharacters{"[ц щ ы ь]"}
     ExemplarCharacters{"[а б в г ғ д е ё ж з и ӣ й к қ л м н о п р с т у ӯ ф х ҳ ч ҷ ш ъ э ю я]"}
@@ -157,7 +158,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -176,12 +176,24 @@
                 "{1} {0}",
             }
             availableFormats{
+                Bh{"h B"}
+                Bhm{"h:mm B"}
+                Bhms{"h:mm:ss B"}
                 E{"ccc"}
+                EBhm{"E h:mm B"}
+                EBhms{"E h:mm:ss B"}
+                EHm{"E HH:mm"}
+                EHms{"E HH:mm:ss"}
                 Ed{"d, E"}
+                Ehm{"E h:mm a"}
+                Ehms{"E h:mm:ss a"}
                 Gy{"y G"}
                 GyMMM{"MMM y G"}
                 GyMMMEd{"E, d MMM y G"}
                 GyMMMd{"d MMM y G"}
+                H{"HH"}
+                Hm{"HH:mm"}
+                Hms{"HH:mm:ss"}
                 M{"L"}
                 MEd{"E, dd-MM"}
                 MMM{"LLL"}
@@ -190,6 +202,10 @@
                 MMMd{"d MMM"}
                 Md{"dd-MM"}
                 d{"d"}
+                h{"h a"}
+                hm{"h:mm a"}
+                hms{"h:mm:ss a"}
+                ms{"mm:ss"}
                 y{"y G"}
                 yyyy{"y G"}
                 yyyyM{"MM-y GGGGG"}
@@ -203,11 +219,114 @@
                 yyyyQQQQ{"QQQQ y G"}
             }
             intervalFormats{
+                Bh{
+                    B{"h B – h B"}
+                    h{"h – h B"}
+                }
+                Bhm{
+                    B{"h:mm B – h:mm B"}
+                    h{"h:mm – h:mm B"}
+                    m{"h:mm – h:mm B"}
+                }
+                Gy{
+                    G{"y G – y G"}
+                    y{"y – y G"}
+                }
+                GyM{
+                    G{"M/y GGGGG – M/y GGGGG"}
+                    M{"M/y – M/y GGGGG"}
+                    y{"M/y – M/y GGGGG"}
+                }
+                GyMEd{
+                    G{"E, M/d/y GGGGG – E, M/d/y GGGGG"}
+                    M{"E, M/d/y – E, M/d/y GGGGG"}
+                    d{"E, M/d/y – E, M/d/y GGGGG"}
+                    y{"E, M/d/y – E, M/d/y GGGGG"}
+                }
+                GyMMM{
+                    G{"MMM y G – MMM y G"}
+                    M{"MMM – MMM y G"}
+                    y{"MMM y – MMM y G"}
+                }
+                GyMMMEd{
+                    G{"E, MMM d, y G – E, MMM d, y G"}
+                    M{"E, MMM d – E, MMM d, y G"}
+                    d{"E, MMM d – E, MMM d, y G"}
+                    y{"E, MMM d, y – E, MMM d, y G"}
+                }
+                GyMMMd{
+                    G{"MMM d, y G – MMM d, y G"}
+                    M{"MMM d – MMM d, y G"}
+                    d{"MMM d – d, y G"}
+                    y{"MMM d, y – MMM d, y G"}
+                }
+                GyMd{
+                    G{"M/d/y GGGGG – M/d/y GGGGG"}
+                    M{"M/d/y – M/d/y GGGGG"}
+                    d{"M/d/y – M/d/y GGGGG"}
+                    y{"M/d/y – M/d/y GGGGG"}
+                }
+                M{
+                    M{"M – M"}
+                }
+                MEd{
+                    M{"E, M/d – E, M/d"}
+                    d{"E, M/d – E, M/d"}
+                }
+                MMM{
+                    M{"MMM – MMM"}
+                }
+                MMMEd{
+                    M{"E, MMM d – E, MMM d"}
+                    d{"E, MMM d – E, MMM d"}
+                }
+                MMMd{
+                    M{"MMM d – MMM d"}
+                    d{"MMM d – d"}
+                }
+                Md{
+                    M{"M/d – M/d"}
+                    d{"M/d – M/d"}
+                }
+                d{
+                    d{"d – d"}
+                }
                 fallback{"{0} – {1}"}
+                y{
+                    y{"y – y G"}
+                }
+                yM{
+                    M{"M/y – M/y GGGGG"}
+                    y{"M/y – M/y GGGGG"}
+                }
+                yMEd{
+                    M{"E, M/d/y – E, M/d/y GGGGG"}
+                    d{"E, M/d/y – E, M/d/y GGGGG"}
+                    y{"E, M/d/y – E, M/d/y GGGGG"}
+                }
+                yMMM{
+                    M{"MMM – MMM y G"}
+                    y{"MMM y – MMM y G"}
+                }
+                yMMMEd{
+                    M{"E, MMM d – E, MMM d, y G"}
+                    d{"E, MMM d – E, MMM d, y G"}
+                    y{"E, MMM d, y – E, MMM d, y G"}
+                }
                 yMMMM{
                     M{"MMMM – MMMM'и' y G"}
                     y{"MMMM'и' y – MMMM'и' y G"}
                 }
+                yMMMd{
+                    M{"MMM d – MMM d, y G"}
+                    d{"MMM d – d, y G"}
+                    y{"MMM d, y – MMM d, y G"}
+                }
+                yMd{
+                    M{"M/d/y – M/d/y GGGGG"}
+                    d{"M/d/y – M/d/y GGGGG"}
+                    y{"M/d/y – M/d/y GGGGG"}
+                }
             }
         }
         gregorian{
@@ -369,24 +488,158 @@
                     "ПаМ",
                 }
                 abbreviated%variant{
-                    "BCE",
-                    "CE",
+                    "ТоМ",
+                    "М",
                 }
                 wide{
                     "Пеш аз милод",
-                    "ПаМ",
+                    "Пас аз милод",
                 }
                 wide%variant{
-                    "BCE",
-                    "CE",
+                    "То милод",
+                    "Милод",
                 }
             }
             intervalFormats{
+                Bh{
+                    B{"h B – h B"}
+                    h{"h – h B"}
+                }
+                Bhm{
+                    B{"h:mm B – h:mm B"}
+                    h{"h:mm – h:mm B"}
+                    m{"h:mm – h:mm B"}
+                }
+                Gy{
+                    G{"y G – y G"}
+                    y{"y – y G"}
+                }
+                GyM{
+                    G{"M/y GGGGG – M/y GGGGG"}
+                    M{"M/y – M/y GGGGG"}
+                    y{"M/y – M/y GGGGG"}
+                }
+                GyMEd{
+                    G{"E, M/d/y GGGGG – E, M/d/y GGGGG"}
+                    M{"E, M/d/y – E, M/d/y GGGGG"}
+                    d{"E, M/d/y – E, M/d/y GGGGG"}
+                    y{"E, M/d/y – E, M/d/y GGGGG"}
+                }
+                GyMMM{
+                    G{"MMM y G – MMM y G"}
+                    M{"MMM – MMM y G"}
+                    y{"MMM y – MMM y G"}
+                }
+                GyMMMEd{
+                    G{"E, MMM d, y G – E, MMM d, y G"}
+                    M{"E, MMM d – E, MMM d, y G"}
+                    d{"E, MMM d – E, MMM d, y G"}
+                    y{"E, MMM d, y – E, MMM d, y G"}
+                }
+                GyMMMd{
+                    G{"MMM d, y G – MMM d, y G"}
+                    M{"MMM d – MMM d, y G"}
+                    d{"MMM d – d, y G"}
+                    y{"MMM d, y – MMM d, y G"}
+                }
+                GyMd{
+                    G{"M/d/y GGGGG – M/d/y GGGGG"}
+                    M{"M/d/y – M/d/y GGGGG"}
+                    d{"M/d/y – M/d/y GGGGG"}
+                    y{"M/d/y – M/d/y GGGGG"}
+                }
+                H{
+                    H{"HH – HH"}
+                }
+                Hm{
+                    H{"HH:mm – HH:mm"}
+                    m{"HH:mm – HH:mm"}
+                }
+                Hmv{
+                    H{"HH:mm – HH:mm v"}
+                    m{"HH:mm – HH:mm v"}
+                }
+                Hv{
+                    H{"HH – HH v"}
+                }
+                M{
+                    M{"M – M"}
+                }
+                MEd{
+                    M{"E, M/d – E, M/d"}
+                    d{"E, M/d – E, M/d"}
+                }
+                MMM{
+                    M{"MMM – MMM"}
+                }
+                MMMEd{
+                    M{"E, MMM d – E, MMM d"}
+                    d{"E, MMM d – E, MMM d"}
+                }
+                MMMd{
+                    M{"MMM d – MMM d"}
+                    d{"MMM d – d"}
+                }
+                Md{
+                    M{"M/d – M/d"}
+                    d{"M/d – M/d"}
+                }
+                d{
+                    d{"d – d"}
+                }
                 fallback{"{0} – {1}"}
+                h{
+                    a{"h a – h a"}
+                    h{"h – h a"}
+                }
+                hm{
+                    a{"h:mm a – h:mm a"}
+                    h{"h:mm – h:mm a"}
+                    m{"h:mm – h:mm a"}
+                }
+                hmv{
+                    a{"h:mm a – h:mm a v"}
+                    h{"h:mm – h:mm a v"}
+                    m{"h:mm – h:mm a v"}
+                }
+                hv{
+                    a{"h a – h a v"}
+                    h{"h – h a v"}
+                }
+                y{
+                    y{"y – y"}
+                }
+                yM{
+                    M{"M/y – M/y"}
+                    y{"M/y – M/y"}
+                }
+                yMEd{
+                    M{"E, M/d/y – E, M/d/y"}
+                    d{"E, M/d/y – E, M/d/y"}
+                    y{"E, M/d/y – E, M/d/y"}
+                }
+                yMMM{
+                    M{"MMM – MMM y"}
+                    y{"MMM y – MMM y"}
+                }
+                yMMMEd{
+                    M{"E, MMM d – E, MMM d, y"}
+                    d{"E, MMM d – E, MMM d, y"}
+                    y{"E, MMM d, y – E, MMM d, y"}
+                }
                 yMMMM{
-                    M{"MMMM – MMMM'и' y"}
                     y{"MMMM'и' y – MMMM'и' y"}
                 }
+                yMMMd{
+                    M{"MMM d – MMM d, y"}
+                    d{"MMM d – d, y"}
+                    y{"MMM d, y – MMM d, y"}
+                }
+                yMd{
+                    M{"M/d/y – M/d/y"}
+                    d{"M/d/y – M/d/y"}
+                    y{"M/d/y – M/d/y"}
+                }
             }
             monthNames{
                 format{
@@ -530,7 +783,7 @@
                 "EEEE, d MMMM'и' y G",
                 "d MMMM'и' y G",
                 "d MMM y G",
-                "dd/MM/yy GGGGG",
+                "M/d/y GGGGG",
                 "{1} {0}",
                 "{1} {0}",
                 "{1} {0}",
@@ -538,8 +791,31 @@
                 "{1} {0}",
             }
             availableFormats{
-                MMMMd{"d MMMM"}
-                yyyyMMMM{"MMMM'и' y G"}
+                E{"ccc"}
+                Ed{"d E"}
+                Gy{"y G"}
+                GyMMM{"MMM y G"}
+                GyMMMEd{"E, MMM d, y G"}
+                GyMMMd{"MMM d, y G"}
+                M{"L"}
+                MEd{"E, M/d"}
+                MMM{"LLL"}
+                MMMEd{"E, MMM d"}
+                MMMMd{"MMMM d"}
+                MMMd{"MMM d"}
+                Md{"M/d"}
+                d{"d"}
+                y{"y G"}
+                yyyy{"y G"}
+                yyyyM{"M/y GGGGG"}
+                yyyyMEd{"E, M/d/y GGGGG"}
+                yyyyMMM{"MMM y G"}
+                yyyyMMMEd{"E, MMM d, y G"}
+                yyyyMMMM{"MMMM y G"}
+                yyyyMMMd{"MMM d, y G"}
+                yyyyMd{"M/d/y GGGGG"}
+                yyyyQQQ{"QQQ y G"}
+                yyyyQQQQ{"QQQQ y G"}
             }
             eras{
                 abbreviated{
@@ -669,12 +945,44 @@
                 "0"{"имрӯз"}
                 "1"{"фардо"}
             }
+            relativeTime{
+                future{
+                    other{"пас аз {0} рӯз"}
+                }
+                past{
+                    other{"{0} рӯз пеш"}
+                }
+            }
         }
         day-narrow{
             dn{"рӯз"}
+            relativeTime{
+                future{
+                    other{"пас аз {0} рӯз"}
+                }
+                past{
+                    other{"{0} рӯз пеш"}
+                }
+            }
         }
         day-short{
-            dn{"рӯз"}
+            relativeTime{
+                future{
+                    other{"пас аз {0} рӯз"}
+                }
+                past{
+                    other{"{0} рӯз пеш"}
+                }
+            }
+        }
+        dayOfYear{
+            dn{"рӯзи сол"}
+        }
+        dayOfYear-narrow{
+            dn{"рӯзи с."}
+        }
+        dayOfYear-short{
+            dn{"рӯзи с."}
         }
         dayperiod{
             dn{"AM/PM"}
@@ -682,71 +990,634 @@
         era{
             dn{"мабдаи таърих"}
         }
+        era-narrow{
+            dn{"мабдаи таърих"}
+        }
+        fri{
+            relative{
+                "-1"{"ҷумъаи гузашта"}
+                "0"{"ҷумъаи ҷорӣ"}
+                "1"{"ҷумъаи оянда"}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} ҷумъа"}
+                }
+                past{
+                    other{"{0} ҷумъа пеш"}
+                }
+            }
+        }
+        fri-narrow{
+            relative{
+                "-1"{"ҷмъ г."}
+                "0"{"ҷмъ ҷ."}
+                "1"{"ҷмъ о."}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} ҷмъ"}
+                }
+                past{
+                    other{"{0} ҷмъ пеш"}
+                }
+            }
+        }
+        fri-short{
+            relative{
+                "-1"{"ҷумъаи г."}
+                "0"{"ҷумъаи ҷ."}
+                "1"{"ҷумъаи о."}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} ҷмъ"}
+                }
+                past{
+                    other{"{0} ҷмъ пеш"}
+                }
+            }
+        }
         hour{
             dn{"соат"}
+            relative{
+                "0"{"соати ҷорӣ"}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} соат"}
+                }
+                past{
+                    other{"{0} соат пеш"}
+                }
+            }
         }
         hour-narrow{
             dn{"ст."}
+            relativeTime{
+                future{
+                    other{"пас аз {0} ст."}
+                }
+                past{
+                    other{"{0} ст. пеш"}
+                }
+            }
         }
         hour-short{
             dn{"ст."}
+            relativeTime{
+                future{
+                    other{"пас аз {0} ст."}
+                }
+                past{
+                    other{"{0} ст. пеш"}
+                }
+            }
         }
         minute{
             dn{"дақиқа"}
+            relative{
+                "0"{"дақиқаи ҷорӣ"}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} дақиқа"}
+                }
+                past{
+                    other{"{0} дақиқа пеш"}
+                }
+            }
         }
         minute-narrow{
             dn{"дақ."}
+            relativeTime{
+                future{
+                    other{"пас аз {0} дақ."}
+                }
+                past{
+                    other{"{0} дақ. пеш"}
+                }
+            }
         }
         minute-short{
             dn{"дақ."}
+            relativeTime{
+                future{
+                    other{"пас аз {0} дақ."}
+                }
+                past{
+                    other{"{0} дақ. пеш"}
+                }
+            }
+        }
+        mon{
+            relative{
+                "-1"{"душанбеи гузашта"}
+                "0"{"душанбеи ҷорӣ"}
+                "1"{"душанбеи оянда"}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} душанбе"}
+                }
+                past{
+                    other{"{0} душанбе пеш"}
+                }
+            }
+        }
+        mon-narrow{
+            relative{
+                "-1"{"дшб г."}
+                "0"{"дшб ҷ."}
+                "1"{"дшб о."}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} дшб"}
+                }
+                past{
+                    other{"{0} дшб пеш"}
+                }
+            }
+        }
+        mon-short{
+            relative{
+                "-1"{"душанбеи г."}
+                "0"{"душанбеи ҷ."}
+                "1"{"душанбеи о."}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} дшб"}
+                }
+                past{
+                    other{"{0} дшб пеш"}
+                }
+            }
         }
         month{
             dn{"моҳ"}
+            relative{
+                "-1"{"моҳи гузашта"}
+                "0"{"моҳи ҷорӣ"}
+                "1"{"моҳи оянда"}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} моҳ"}
+                }
+                past{
+                    other{"{0} моҳ пеш"}
+                }
+            }
         }
         month-narrow{
             dn{"м."}
+            relative{
+                "-1"{"моҳи г."}
+                "0"{"моҳи ҷ."}
+                "1"{"моҳи о."}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} м."}
+                }
+                past{
+                    other{"{0} м. пеш"}
+                }
+            }
         }
         month-short{
             dn{"м."}
+            relative{
+                "-1"{"моҳи г."}
+                "0"{"моҳи ҷ."}
+                "1"{"моҳи о."}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} м."}
+                }
+                past{
+                    other{"{0} м. пеш"}
+                }
+            }
         }
         quarter{
             dn{"чоряк"}
+            relative{
+                "-1"{"чоряки гузашта"}
+                "0"{"чоряки ҷорӣ"}
+                "1"{"чоряки оянда"}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} чоряк"}
+                }
+                past{
+                    other{"{0} чоряк пеш"}
+                }
+            }
         }
         quarter-narrow{
             dn{"чр."}
         }
         quarter-short{
             dn{"чр."}
+            relativeTime{
+                future{
+                    other{"пас аз {0} чр."}
+                }
+                past{
+                    other{"{0} чр. пеш"}
+                }
+            }
+        }
+        sat{
+            relative{
+                "-1"{"шанбеи гузашта"}
+                "0"{"шанбеи ҷорӣ"}
+                "1"{"шанбеи оянда"}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} шанбе"}
+                }
+                past{
+                    other{"{0} шанбе пеш"}
+                }
+            }
+        }
+        sat-narrow{
+            relative{
+                "-1"{"шнб г."}
+                "0"{"шнб ҷ."}
+                "1"{"шнб о."}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} шнб"}
+                }
+                past{
+                    other{"{0} шнб пеш"}
+                }
+            }
+        }
+        sat-short{
+            relative{
+                "-1"{"шанбеи г."}
+                "0"{"шанбеи ҷ."}
+                "1"{"шанбеи о."}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} шнб"}
+                }
+                past{
+                    other{"{0} шнб пеш"}
+                }
+            }
         }
         second{
             dn{"сония"}
+            relative{
+                "0"{"ҳозир"}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} сония"}
+                }
+                past{
+                    other{"{0} сония пеш"}
+                }
+            }
         }
         second-narrow{
             dn{"сон."}
+            relativeTime{
+                future{
+                    other{"пас аз {0} сон."}
+                }
+                past{
+                    other{"{0} сон. пеш"}
+                }
+            }
         }
         second-short{
             dn{"сон."}
+            relativeTime{
+                future{
+                    other{"пас аз {0} сон."}
+                }
+                past{
+                    other{"{0} сон. пеш"}
+                }
+            }
+        }
+        sun{
+            relative{
+                "-1"{"якшанбеи гузашта"}
+                "0"{"якшанбеи ҷорӣ"}
+                "1"{"якшанбеи оянда"}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} якшанбе"}
+                }
+                past{
+                    other{"{0} якшанбе пеш"}
+                }
+            }
+        }
+        sun-narrow{
+            relative{
+                "-1"{"яшб г."}
+                "0"{"яшб ҷ."}
+                "1"{"яшб о."}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} яшб"}
+                }
+                past{
+                    other{"{0} ябш пеш"}
+                }
+            }
+        }
+        sun-short{
+            relative{
+                "-1"{"якшанбеи г."}
+                "0"{"якшанбеи ҷ."}
+                "1"{"якшанбеи о."}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} яшб"}
+                }
+                past{
+                    other{"{0} яшб. пеш"}
+                }
+            }
+        }
+        thu{
+            relative{
+                "-1"{"панҷшанбеи гузашта"}
+                "0"{"панҷшанбеи ҷорӣ"}
+                "1"{"панҷшанбеи оянда"}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} панҷшанбе"}
+                }
+                past{
+                    other{"{0} панҷшанбе пеш"}
+                }
+            }
+        }
+        thu-narrow{
+            relative{
+                "-1"{"пшб г."}
+                "0"{"пшб ҷ."}
+                "1"{"пшб о."}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} пшб"}
+                }
+                past{
+                    other{"{0} пшб пеш"}
+                }
+            }
+        }
+        thu-short{
+            relative{
+                "-1"{"панҷшанбеи г."}
+                "0"{"панҷшанбеи ҷ."}
+                "1"{"панҷшанбеи о."}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} пшб"}
+                }
+                past{
+                    other{"{0} пшб пеш"}
+                }
+            }
+        }
+        tue{
+            relative{
+                "-1"{"сешанбеи гузашта"}
+                "0"{"сешанбеи ҷорӣ"}
+                "1"{"сешанбеи оянда"}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} сешанбе"}
+                }
+                past{
+                    other{"{0} сешанбе пеш"}
+                }
+            }
+        }
+        tue-narrow{
+            relative{
+                "-1"{"сшб г."}
+                "0"{"сшб ҷ."}
+                "1"{"сшб о."}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} сшб"}
+                }
+                past{
+                    other{"{0} сшб пеш"}
+                }
+            }
+        }
+        tue-short{
+            relative{
+                "-1"{"сешанбеи г."}
+                "0"{"сешанбеи ҷ."}
+                "1"{"сешанбеи о."}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} сшб"}
+                }
+                past{
+                    other{"{0} сшб пеш"}
+                }
+            }
+        }
+        wed{
+            relative{
+                "-1"{"чоршанбеи гузашта"}
+                "0"{"чоршанбеи ҷорӣ"}
+                "1"{"чоршанбеи оянда"}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} чоршанбе"}
+                }
+                past{
+                    other{"{0} чоршанбе пеш"}
+                }
+            }
+        }
+        wed-narrow{
+            relative{
+                "-1"{"чшб г."}
+                "0"{"чшб ҷ."}
+                "1"{"чшб о."}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} чшб"}
+                }
+                past{
+                    other{"{0} чшб пеш"}
+                }
+            }
+        }
+        wed-short{
+            relative{
+                "-1"{"чоршанбеи г."}
+                "0"{"чоршанбеи ҷ."}
+                "1"{"чоршанбеи о."}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} чшб"}
+                }
+                past{
+                    other{"{0} чшб пеш"}
+                }
+            }
         }
         week{
             dn{"ҳафта"}
+            relative{
+                "-1"{"ҳафтаи гузашта"}
+                "0"{"ҳафтаи ҷорӣ"}
+                "1"{"ҳафтаи оянда"}
+            }
+            relativePeriod{"ҳафтаи {0}"}
+            relativeTime{
+                future{
+                    other{"пас аз {0} ҳафта"}
+                }
+                past{
+                    other{"{0} ҳафта пеш"}
+                }
+            }
         }
         week-narrow{
-            dn{"ҳ."}
+            relative{
+                "-1"{"ҳафтаи г."}
+                "0"{"ҳафтаи ҷ."}
+                "1"{"ҳафтаи о."}
+            }
+            relativePeriod{"ҳ. {0}"}
+            relativeTime{
+                future{
+                    other{"пас аз {0} ҳ."}
+                }
+                past{
+                    other{"{0} ҳ. пеш"}
+                }
+            }
         }
         week-short{
             dn{"ҳ."}
+            relative{
+                "-1"{"ҳафтаи г."}
+                "0"{"ҳафтаи ҷ."}
+                "1"{"ҳафтаи о."}
+            }
+            relativePeriod{"ҳ. {0}"}
+            relativeTime{
+                future{
+                    other{"пас аз {0} ҳ."}
+                }
+                past{
+                    other{"{0} ҳ. пеш"}
+                }
+            }
+        }
+        weekOfMonth{
+            dn{"ҳафтаи моҳ"}
+        }
+        weekOfMonth-narrow{
+            dn{"ҳ. м."}
+        }
+        weekOfMonth-short{
+            dn{"ҳ. м."}
         }
         weekday{
             dn{"рӯзи ҳафта"}
         }
+        weekday-narrow{
+            dn{"рӯзи ҳ."}
+        }
+        weekday-short{
+            dn{"рӯзи ҳ."}
+        }
+        weekdayOfMonth{
+            dn{"рӯзи ҳафтаи моҳ"}
+        }
+        weekdayOfMonth-narrow{
+            dn{"рӯзи ҳ. м."}
+        }
+        weekdayOfMonth-short{
+            dn{"рӯзи ҳ. м."}
+        }
         year{
             dn{"сол"}
+            relative{
+                "-1"{"соли гузашта"}
+                "0"{"соли ҷорӣ"}
+                "1"{"соли оянда"}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} сол"}
+                }
+                past{
+                    other{"{0} сол пеш"}
+                }
+            }
         }
         year-narrow{
             dn{"с."}
+            relative{
+                "-1"{"соли г."}
+                "0"{"соли ҷ."}
+                "1"{"соли о."}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} с."}
+                }
+                past{
+                    other{"{0} с. пеш"}
+                }
+            }
         }
         year-short{
             dn{"с."}
+            relative{
+                "-1"{"соли г."}
+                "0"{"соли ҷ."}
+                "1"{"соли о."}
+            }
+            relativeTime{
+                future{
+                    other{"пас аз {0} с."}
+                }
+                past{
+                    other{"{0} с. пеш"}
+                }
+            }
         }
         zone{
             dn{"минтақаи вақт"}
diff --git a/icu4c/source/data/locales/tg_TJ.txt b/icu4c/source/data/locales/tg_TJ.txt
index 0be757a..2803a74 100644
--- a/icu4c/source/data/locales/tg_TJ.txt
+++ b/icu4c/source/data/locales/tg_TJ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tg_TJ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/th.txt b/icu4c/source/data/locales/th.txt
index f52cce3..e96fd2c 100644
--- a/icu4c/source/data/locales/th.txt
+++ b/icu4c/source/data/locales/th.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 th{
     AuxExemplarCharacters{"[\u200B]"}
     Ellipsis{
@@ -183,7 +184,6 @@
         minimumGroupingDigits{"1"}
         native{"thai"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -1487,14 +1487,14 @@
                 }
                 GyM{
                     G{"MM/GGGGG y – MM/GGGGG y"}
-                    M{"M/y – M/y G"}
-                    y{"M/y – M/y G"}
+                    M{"MM/GGGGG y – MM/GGGGG y"}
+                    y{"MM/GGGGG y – MM/GGGGG y"}
                 }
                 GyMEd{
                     G{"E d/MM/GGGGG y – E d/MM/GGGGG y"}
-                    M{"E d/M/y – E d/M/y G"}
-                    d{"E d/M/y – E d/M/y G"}
-                    y{"E d/M/y – E d/M/y G"}
+                    M{"E d/MM/GGGGG y – E d/MM/GGGGG y"}
+                    d{"E d/MM/GGGGG y – E d/MM/GGGGG y"}
+                    y{"E d/MM/GGGGG y – E d/MM/GGGGG y"}
                 }
                 GyMMM{
                     G{"MMM G y – MMM G y"}
@@ -1515,9 +1515,9 @@
                 }
                 GyMd{
                     G{"d/MM/GGGGG y – d/MM/GGGGG y"}
-                    M{"d/M/y – d/M/y G"}
-                    d{"d/M/y – d/M/y G"}
-                    y{"d/M/y – d/M/y G"}
+                    M{"d/MM/GGGGG y – d/MM/GGGGG y"}
+                    d{"d/MM/GGGGG y – d/MM/GGGGG y"}
+                    y{"d/MM/GGGGG y – d/MM/GGGGG y"}
                 }
                 H{
                     H{"HH–HH"}
@@ -2572,8 +2572,8 @@
     }
     characterLabel{
         activities{"กิจกรรม"}
-        african_scripts{"สคริปต์แอฟริกัน"}
-        american_scripts{"สคริปต์อเมริกัน"}
+        african_scripts{"ตัวอักษรแอฟริกัน"}
+        american_scripts{"ตัวอักษรอเมริกัน"}
         animal{"สัตว์"}
         animals_nature{"สัตว์หรือธรรมชาติ"}
         arrows{"ลูกศร"}
@@ -2590,9 +2590,9 @@
         divination_symbols{"สัญลักษณ์การทำนาย"}
         downwards_arrows{"ลูกศรลง"}
         downwards_upwards_arrows{"ลูกศรชี้ขึ้นและลง"}
-        east_asian_scripts{"สคริปต์เอเชียตะวันออก"}
-        emoji{"อิโมจิ"}
-        european_scripts{"สคริปต์ยุโรป"}
+        east_asian_scripts{"ตัวอักษรเอเชียตะวันออก"}
+        emoji{"อีโมจิ"}
+        european_scripts{"ตัวอักษรยุโรป"}
         female{"ผู้หญิง"}
         flag{"ธง"}
         flags{"ธง"}
@@ -2608,7 +2608,7 @@
         hanzi_simplified{"อักษรจีน (ตัวย่อ)"}
         hanzi_traditional{"อักษรจีน (ตัวเต็ม)"}
         heart{"หัวใจ"}
-        historic_scripts{"สคริปต์โบราณ"}
+        historic_scripts{"ตัวอักษรโบราณ"}
         ideographic_desc_characters{"อักขระเป็นภาพที่แสดงความหมาย"}
         japanese_kana{"คะนะญี่ปุ่น"}
         kanbun{"อักษรจีน"}
@@ -2620,9 +2620,9 @@
         limited_use{"ใช้งานแบบจำกัด"}
         male{"ผู้ชาย"}
         math_symbols{"สัญลักษณ์ทางคณิตศาสตร์"}
-        middle_eastern_scripts{"สคริปต์ตะวันออกกลาง"}
+        middle_eastern_scripts{"ตัวอักษรตะวันออกกลาง"}
         miscellaneous{"อื่นๆ"}
-        modern_scripts{"สคริปต์ปัจจุบัน"}
+        modern_scripts{"ตัวอักษรสมัยใหม่"}
         modifier{"ตัวขยาย"}
         musical_symbols{"สัญลักษณ์ทางดนตรี"}
         nature{"ธรรมชาติ"}
@@ -2633,7 +2633,7 @@
         paired{"จับคู่"}
         person{"คน"}
         phonetic_alphabet{"ตัวอักษรสัทศาสตร์"}
-        pictographs{"ภาพสัญลักษณ์"}
+        pictographs{"อักษรภาพ"}
         place{"สถานที่"}
         plant{"พืช"}
         punctuation{"เครื่องหมายวรรคตอน"}
@@ -2642,8 +2642,8 @@
         small_form_variant{"รูปแบบขนาดเล็ก"}
         smiley{"หน้ายิ้ม"}
         smileys_people{"หน้ายิ้มหรือรูปคน"}
-        south_asian_scripts{"สคริปต์เอเชียใต้"}
-        southeast_asian_scripts{"สคริปต์เอเชียตะวันออกเฉียงใต้"}
+        south_asian_scripts{"ตัวอักษรเอเชียใต้"}
+        southeast_asian_scripts{"ตัวอักษรเอเชียตะวันออกเฉียงใต้"}
         spacing{"การเว้นวรรค"}
         sport{"กีฬา"}
         symbols{"สัญลักษณ์"}
@@ -2655,7 +2655,7 @@
         variant_forms{"รูปแบบที่เปลี่ยนแปลง"}
         vocalic_jamo{"สระภาษาเกาหลี"}
         weather{"สภาพอากาศ"}
-        western_asian_scripts{"สคริปต์เอเชียตะวันตก"}
+        western_asian_scripts{"ตัวอักษรเอเชียตะวันตก"}
         whitespace{"ช่องว่าง"}
     }
     delimiters{
@@ -3271,7 +3271,7 @@
                 "0"{"สัปดาห์นี้"}
                 "1"{"สัปดาห์หน้า"}
             }
-            relativePeriod{"สัปดาห์ที่เริ่มต้นวันที่"}
+            relativePeriod{"สัปดาห์ที่เริ่มต้นวันที่ {0}"}
             relativeTime{
                 future{
                     other{"ในอีก {0} สัปดาห์"}
@@ -3288,7 +3288,7 @@
                 "0"{"สัปดาห์นี้"}
                 "1"{"สัปดาห์หน้า"}
             }
-            relativePeriod{"สัปดาห์ที่เริ่มต้นวันที่"}
+            relativePeriod{"สัปดาห์ที่เริ่มต้นวันที่ {0}"}
             relativeTime{
                 future{
                     other{"ใน {0} สัปดาห์"}
@@ -3305,7 +3305,7 @@
                 "0"{"สัปดาห์นี้"}
                 "1"{"สัปดาห์หน้า"}
             }
-            relativePeriod{"สัปดาห์ที่เริ่มต้นวันที่"}
+            relativePeriod{"สัปดาห์ที่เริ่มต้นวันที่ {0}"}
             relativeTime{
                 future{
                     other{"ใน {0} สัปดาห์"}
diff --git a/icu4c/source/data/locales/th_TH.txt b/icu4c/source/data/locales/th_TH.txt
index 4711809..b2b6445 100644
--- a/icu4c/source/data/locales/th_TH.txt
+++ b/icu4c/source/data/locales/th_TH.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 th_TH{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/th_TH_TRADITIONAL.txt b/icu4c/source/data/locales/th_TH_TRADITIONAL.txt
index 7196d03..3afabac 100644
--- a/icu4c/source/data/locales/th_TH_TRADITIONAL.txt
+++ b/icu4c/source/data/locales/th_TH_TRADITIONAL.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 th_TH_TRADITIONAL{
-    Version{"37"}
     calendar{
         default{"buddhist"}
     }
diff --git a/icu4c/source/data/locales/ti.txt b/icu4c/source/data/locales/ti.txt
index e96d0bc..612f082 100644
--- a/icu4c/source/data/locales/ti.txt
+++ b/icu4c/source/data/locales/ti.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ti{
     AuxExemplarCharacters{
         "[᎐ ᎑ ᎒ ᎓ ᎔ ᎕ ᎖ ᎗ ᎘ ᎙ ሇ ⶀ ᎀ ᎁ ᎂ ᎃ ⶁ ⶂ ⶃ ⶄ ቇ ᎄ ᎅ ᎆ ᎇ ⶅ ⶆ ⶇ ኇ ⶈ ⶉ ⶊ ኯ ዏ ⶋ ዯ ⶌ ዸ"
@@ -20,7 +21,9 @@
         default{"latn"}
         latn{
             miscPatterns{
-                atLeast{"≥{0}"}
+                approximately{"~{0}"}
+                atLeast{"⩾{0}"}
+                atMost{"≤{0}"}
                 range{"{0}–{1}"}
             }
             patterns{
@@ -185,6 +188,7 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -202,7 +206,6 @@
         native{"latn"}
         traditional{"ethi"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -230,12 +233,12 @@
         }
         gregorian{
             AmPmMarkers{
-                "ንጉሆ ሰዓተ",
-                "ድሕር ሰዓት",
+                "ቅድመ ፍርቂ-መዓልቲ",
+                "ደሕረ ፍርቀ-መዓልቲ",
             }
             AmPmMarkersAbbr{
-                "ንጉሆ ሰዓተ",
-                "ድሕር ሰዓት",
+                "ቅ ፍር-መዓ",
+                "ደሕ ፍር-መዓ",
             }
             AmPmMarkersNarrow{
                 "ንጉሆ ሰዓተ",
@@ -271,7 +274,7 @@
                 Ed{"d, E"}
                 Ehm{"E h:mm a"}
                 Ehms{"E h:mm:ss a"}
-                Gy{"G y"}
+                Gy{"y G"}
                 GyMMM{"G y MMM"}
                 GyMMMEd{"G y MMM d, E"}
                 GyMMMd{"G y MMM d"}
@@ -397,16 +400,16 @@
             dayPeriod{
                 stand-alone{
                     abbreviated{
-                        am{"ንጉሆ ሰዓተ"}
-                        pm{"ድሕር ሰዓት"}
+                        am{"ቅ ፍር-መዓ"}
+                        pm{"ደሕ ፍር-መዓ"}
                     }
                     narrow{
                         am{"ንጉሆ ሰዓተ"}
                         pm{"ድሕር ሰዓት"}
                     }
                     wide{
-                        am{"ንጉሆ ሰዓተ"}
-                        pm{"ድሕር ሰዓት"}
+                        am{"ቅድመ ፍርቂ-መዓልቲ"}
+                        pm{"ደሕረ ፍርቀ-መዓልቲ"}
                     }
                 }
             }
@@ -420,7 +423,7 @@
                     "ድ.ል.ክ",
                 }
                 wide{
-                    "ዓ/ዓ",
+                    "ቅድመ ክርስቶስ",
                     "ዓመተ ምህረት",
                 }
                 wide%variant{
@@ -429,6 +432,15 @@
                 }
             }
             intervalFormats{
+                Bh{
+                    B{"h B – h B"}
+                    h{"h – h B"}
+                }
+                Bhm{
+                    B{"h:mm B – h:mm B"}
+                    h{"h:mm – h:mm B"}
+                    m{"h:mm – h:mm B"}
+                }
                 H{
                     H{"HH–HH"}
                 }
@@ -504,13 +516,13 @@
                     y{"y MMM – y MMM"}
                 }
                 yMMMEd{
-                    M{"y MMM d, E – MMM d, E"}
+                    M{"E, MMM d – E, MMM d, y"}
                     d{"y MMM d, E – MMM d, E"}
-                    y{"y MMM d, E – y MMM d, E"}
+                    y{"E, MMM d, y – E, MMM d, y"}
                 }
                 yMMMM{
-                    M{"y MMMM–MMMM"}
-                    y{"y MMMM – y MMMM"}
+                    M{"MMMM – MMMM y"}
+                    y{"MMMM y – MMMM y"}
                 }
                 yMMMd{
                     M{"y MMM d – MMM d"}
@@ -615,12 +627,6 @@
             }
             quarters{
                 format{
-                    abbreviated{
-                        "ር1",
-                        "ር2",
-                        "ር3",
-                        "ር4",
-                    }
                     narrow{
                         "1",
                         "2",
@@ -712,13 +718,13 @@
             dn{"መዓልቲ ናይ ዓ."}
         }
         dayperiod{
-            dn{"ክፍለ መዓልቲ"}
+            dn{"ቅድመ ፍርቂ-መዓልቲ/ድሕሪ ፍርቂ-መዓልቲ"}
         }
         dayperiod-narrow{
-            dn{"ክፍለ መዓልቲ"}
+            dn{"ቅድመ ፍርቂ-መዓልቲ/ድሕሪ ፍርቂ-መዓልቲ"}
         }
         dayperiod-short{
-            dn{"ክፍለ መዓልቲ"}
+            dn{"ቅድመ ፍርቂ-መዓልቲ/ድሕሪ ፍርቂ-መዓልቲ"}
         }
         era{
             dn{"ዘመን"}
@@ -935,6 +941,11 @@
         }
         month-narrow{
             dn{"ወርሒ"}
+            relative{
+                "-1"{"ዝሓለፈ ወርሒ"}
+                "0"{"ህሉው ወርሒ"}
+                "1"{"ዝመጽእ ወርሒ"}
+            }
             relativeTime{
                 future{
                     one{"ኣብ {0} ወርሒ"}
@@ -948,6 +959,11 @@
         }
         month-short{
             dn{"ወርሒ"}
+            relative{
+                "-1"{"ዝሓለፈ ወርሒ"}
+                "0"{"ህሉው ወርሒ"}
+                "1"{"ዝመጽእ ወርሒ"}
+            }
             relativeTime{
                 future{
                     one{"ኣብ {0} ወርሒ"}
@@ -1301,7 +1317,6 @@
             }
         }
         week{
-            dn{"ሰሙን"}
             relative{
                 "-1"{"ዝሓለፈ ሰሙን"}
                 "0"{"ህሉው ሰሙን"}
@@ -1348,10 +1363,7 @@
             }
         }
         weekOfMonth{
-            dn{"ሰን ናይ ወርሒ"}
-        }
-        weekOfMonth-narrow{
-            dn{"ሰሙ. ናይ ወር."}
+            dn{"ሰሙን ናይ ወርሒ"}
         }
         weekOfMonth-short{
             dn{"ሰሙ. ናይ ወር."}
diff --git a/icu4c/source/data/locales/ti_ER.txt b/icu4c/source/data/locales/ti_ER.txt
index 316a1ea..bdec93e 100644
--- a/icu4c/source/data/locales/ti_ER.txt
+++ b/icu4c/source/data/locales/ti_ER.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ti_ER{
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/ti_ET.txt b/icu4c/source/data/locales/ti_ET.txt
index 9e3608a..a965c12 100644
--- a/icu4c/source/data/locales/ti_ET.txt
+++ b/icu4c/source/data/locales/ti_ET.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ti_ET{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/tk.txt b/icu4c/source/data/locales/tk.txt
index 67a627f..e440fb1 100644
--- a/icu4c/source/data/locales/tk.txt
+++ b/icu4c/source/data/locales/tk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tk{
     AuxExemplarCharacters{"[c q v x]"}
     Ellipsis{
@@ -186,6 +187,7 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{","}
                 exponential{"E"}
                 group{" "}
@@ -211,7 +213,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -1714,7 +1715,6 @@
             start{"{0}, {1}"}
         }
         standard-short{
-            2{"{0} we {1}"}
             end{"{0} we {1}"}
             middle{"{0}, {1}"}
             start{"{0}, {1}"}
diff --git a/icu4c/source/data/locales/tk_TM.txt b/icu4c/source/data/locales/tk_TM.txt
index 29ca5b3..e96a2c1 100644
--- a/icu4c/source/data/locales/tk_TM.txt
+++ b/icu4c/source/data/locales/tk_TM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tk_TM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/tl.txt b/icu4c/source/data/locales/tl.txt
index 4e521f9..8c39518 100644
--- a/icu4c/source/data/locales/tl.txt
+++ b/icu4c/source/data/locales/tl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tl{
     "%%ALIAS"{"fil"}
 }
diff --git a/icu4c/source/data/locales/tl_PH.txt b/icu4c/source/data/locales/tl_PH.txt
index 07c9f90..59af394 100644
--- a/icu4c/source/data/locales/tl_PH.txt
+++ b/icu4c/source/data/locales/tl_PH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tl_PH{
     "%%ALIAS"{"fil_PH"}
 }
diff --git a/icu4c/source/data/locales/to.txt b/icu4c/source/data/locales/to.txt
index 71bd875..22bb9d5 100644
--- a/icu4c/source/data/locales/to.txt
+++ b/icu4c/source/data/locales/to.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 to{
     AuxExemplarCharacters{
         "[à ă â å ä æ b c ç d è ĕ ê ë g ì ĭ î ï j ñ ò ŏ ô ö ø œ q r ù ŭ û ü w x y ÿ z"
@@ -180,7 +181,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/to_TO.txt b/icu4c/source/data/locales/to_TO.txt
index 9aa5f22..003fb8c 100644
--- a/icu4c/source/data/locales/to_TO.txt
+++ b/icu4c/source/data/locales/to_TO.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 to_TO{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/tr.txt b/icu4c/source/data/locales/tr.txt
index 17bcecc..a38a4d0 100644
--- a/icu4c/source/data/locales/tr.txt
+++ b/icu4c/source/data/locales/tr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tr{
     AuxExemplarCharacters{
         "[á à ă â å ä ã ā æ é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ø ō œ q ß ú ù ŭ û ū w x"
@@ -218,7 +219,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
diff --git a/icu4c/source/data/locales/tr_CY.txt b/icu4c/source/data/locales/tr_CY.txt
index 284edbd..1106559 100644
--- a/icu4c/source/data/locales/tr_CY.txt
+++ b/icu4c/source/data/locales/tr_CY.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tr_CY{
-    Version{"37"}
     calendar{
         gregorian{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/tr_TR.txt b/icu4c/source/data/locales/tr_TR.txt
index d790551..df91387 100644
--- a/icu4c/source/data/locales/tr_TR.txt
+++ b/icu4c/source/data/locales/tr_TR.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tr_TR{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/tt.txt b/icu4c/source/data/locales/tt.txt
index 73cd640..df1111d 100644
--- a/icu4c/source/data/locales/tt.txt
+++ b/icu4c/source/data/locales/tt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tt{
     AuxExemplarCharacters{"[ғ қ]"}
     ExemplarCharacters{
@@ -41,7 +42,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -51,16 +51,130 @@
                 "H:mm",
                 "d MMMM, y 'ел' (G), EEEE",
                 "d MMMM, y 'ел' (G)",
-                "dd.MM.y G",
-                "dd.MM.y GGGGG",
+                "dd.MM.y (G)",
+                "dd.MM.y (GGGGG)",
                 "{1}, {0}",
                 "{1}, {0}",
                 "{1}, {0}",
                 "{1}, {0}",
                 "{1}, {0}",
             }
+            availableFormats{
+                Gy{"G y 'ел'"}
+                GyMMM{"G y 'ел', MMM"}
+                GyMMMEd{"G y 'ел', d MMM, E"}
+                GyMMMd{"G y 'ел', d MMM"}
+                MEd{"dd.MM, E"}
+                MMMEd{"d MMM, E"}
+                MMMMd{"d MMMM"}
+                MMMd{"d MMM"}
+                Md{"dd.MM"}
+                y{"G y 'ел'"}
+                yyyy{"G y 'ел'"}
+                yyyyM{"GGGGG y 'ел', MM"}
+                yyyyMEd{"GGGGG dd.MM.y, E"}
+                yyyyMMM{"G y 'ел', MMM"}
+                yyyyMMMEd{"G y 'ел', d MMM, E"}
+                yyyyMMMM{"G y 'ел', MMMM"}
+                yyyyMMMd{"G y 'ел', d MMM"}
+                yyyyMd{"GGGGG dd.MM.y"}
+                yyyyQQQ{"G y 'ел', QQQ"}
+                yyyyQQQQ{"G y 'ел', QQQQ"}
+            }
             intervalFormats{
+                Gy{
+                    G{"G y 'ел' – G y 'ел'"}
+                    y{"G y–y 'ел'"}
+                }
+                GyM{
+                    G{"GGGGG y 'ел', MM – GGGGG y 'ел', MM"}
+                    M{"GGGGG y 'ел', MM – y 'ел', MM"}
+                    y{"GGGGG y 'ел', MM – y 'ел', MM"}
+                }
+                GyMEd{
+                    G{"GGGGG dd.MM.y, E – GGGGG dd.MM.y, E"}
+                    M{"GGGGG dd.MM.y, E – dd.MM.y, E"}
+                    d{"GGGGG dd.MM.y, E – dd.MM.y, E"}
+                    y{"GGGGG dd.MM.y, E – dd.MM.y, E"}
+                }
+                GyMMM{
+                    G{"G y 'ел', MMM – G y 'ел', MMM"}
+                    M{"G y 'ел', MMM–MMM"}
+                    y{"G y 'ел', MMM – y 'ел', MMM"}
+                }
+                GyMMMEd{
+                    G{"G y 'ел', d MMM, E – G y 'ел', d MMM, E"}
+                    M{"G y 'ел', d MMM, E – d MMM, E"}
+                    d{"G y 'ел', d MMM, E – d MMM, E"}
+                    y{"G y 'ел', d MMM, E – y 'ел', d MMM, E"}
+                }
+                GyMMMd{
+                    G{"G y 'ел', d MMM – G y 'ел', d MMM"}
+                    M{"G y 'ел', d MMM – d MMM"}
+                    d{"G y 'ел', d–d MMM"}
+                    y{"G y 'ел', d MMM – y 'ел' d MMM"}
+                }
+                GyMd{
+                    G{"GGGGG dd.MM.y – GGGGG dd.MM.y"}
+                    M{"GGGGG dd.MM.y – dd.MM.y"}
+                    d{"GGGGG dd.MM.y – dd.MM.y"}
+                    y{"GGGGG dd.MM.y – dd.MM.y"}
+                }
+                MEd{
+                    M{"dd.MM, E – dd.MM, E"}
+                    d{"dd.MM, E – dd.MM, E"}
+                }
+                MMM{
+                    M{"MMM – MMM"}
+                }
+                MMMEd{
+                    M{"d MMM, E – d MMM, E"}
+                    d{"d MMM, E – d MMM, E"}
+                }
+                MMMd{
+                    M{"d MMM – d MMM"}
+                    d{"d–d MMM"}
+                }
+                Md{
+                    M{"dd.MM – dd.MM"}
+                    d{"dd.MM – dd.MM"}
+                }
                 fallback{"{0} – {1}"}
+                y{
+                    y{"G y–y 'ел'"}
+                }
+                yM{
+                    M{"GGGGG y 'ел', MM – y 'ел', MM"}
+                    y{"GGGGG y 'ел', MM – y 'ел', MM"}
+                }
+                yMEd{
+                    M{"GGGGG dd.MM.y, E – dd.MM.y, E"}
+                    d{"GGGGG dd.MM.y, E – dd.MM.y, E"}
+                    y{"GGGGG dd.MM.y, E – dd.MM.y, E"}
+                }
+                yMMM{
+                    M{"G y 'ел', MMM–MMM"}
+                    y{"G y 'ел', MMM – y 'ел', MMM"}
+                }
+                yMMMEd{
+                    M{"G y 'ел', d MMM, E – d MMM, E"}
+                    d{"G y 'ел' d MMM, E – d MMM, E"}
+                    y{"G y 'ел', d MMM, E – y 'ел', d MMM, E"}
+                }
+                yMMMM{
+                    M{"G y 'ел', MMMM–MMMM"}
+                    y{"G y 'ел', MMMM – y 'ел', MMMM"}
+                }
+                yMMMd{
+                    M{"G y 'ел', d MMM – d MMM"}
+                    d{"G y 'ел', d–d MMM"}
+                    y{"G y 'ел', d MMM – y 'ел', d MMM"}
+                }
+                yMd{
+                    M{"GGGGG dd.MM.y – dd.MM.y"}
+                    d{"GGGGG dd.MM.y – dd.MM.y"}
+                    y{"GGGGG dd.MM.y – dd.MM.y"}
+                }
             }
         }
         gregorian{
@@ -98,20 +212,19 @@
                 E{"ccc"}
                 EHm{"E, HH:mm"}
                 EHms{"E, HH:mm:ss"}
-                Ed{"E, d"}
                 Gy{"G y 'ел'"}
                 GyMMM{"G y 'ел', MMM"}
-                GyMMMEd{"E, G d MMM y 'ел'"}
-                GyMMMd{"G d MMM y 'ел'"}
+                GyMMMEd{"G y 'ел', d MMM, E"}
+                GyMMMd{"G y 'ел', d MMM"}
                 H{"HH"}
                 Hm{"HH:mm"}
                 Hms{"HH:mm:ss"}
                 Hmsv{"HH:mm:ss v"}
                 Hmv{"HH:mm v"}
                 M{"L"}
-                MEd{"E, dd.MM"}
+                MEd{"dd.MM, E"}
                 MMM{"LLL"}
-                MMMEd{"E, d MMM"}
+                MMMEd{"d MMM, E"}
                 MMMMW{
                     other{"MMMM 'аеның' W 'атнасы'"}
                 }
@@ -127,14 +240,14 @@
                 ms{"mm:ss"}
                 y{"y"}
                 yM{"MM.y"}
-                yMEd{"E, dd.MM.y"}
-                yMMM{"MMM, y 'ел'"}
-                yMMMEd{"E, d MMM, y 'ел'"}
-                yMMMM{"MMMM, y 'ел'"}
-                yMMMd{"d MMM, y 'ел'"}
+                yMEd{"dd.MM.y, E"}
+                yMMM{"y 'ел', MMM"}
+                yMMMEd{"y 'ел', d MMM, E"}
+                yMMMM{"y 'ел', MMMM"}
+                yMMMd{"y 'ел', d MMM"}
                 yMd{"dd.MM.y"}
-                yQQQ{"QQQ, y 'ел'"}
-                yQQQQ{"QQQQ, y 'ел'"}
+                yQQQ{"y 'ел', QQQ"}
+                yQQQQ{"y 'ел', QQQQ"}
                 yw{
                     other{"Y 'елның' w 'атнасы'"}
                 }
@@ -244,10 +357,52 @@
                 }
                 wide{
                     "безнең эрага кадәр",
+                    "милади",
+                }
+                wide%variant{
+                    "безнең эрага кадәр",
                     "безнең эра",
                 }
             }
             intervalFormats{
+                Gy{
+                    G{"G y 'ел' – G y 'ел'"}
+                    y{"G y–y 'ел'"}
+                }
+                GyM{
+                    G{"GGGGG MM.y – GGGGG MM.y"}
+                    M{"GGGGG MM.y – MM.y"}
+                    y{"GGGGG MM.y – MM.y"}
+                }
+                GyMEd{
+                    G{"GGGGG dd.MM.y, E – GGGGG dd.MM.y, E"}
+                    M{"GGGGG dd.MM.y, E – dd.MM.y, E"}
+                    d{"GGGGG dd.MM.y, E – dd.MM.y, E"}
+                    y{"GGGGG dd.MM.y, E – dd.MM.y, E"}
+                }
+                GyMMM{
+                    G{"G y 'ел', MMM – G y 'ел', MMM"}
+                    M{"G y 'ел', MMM–MMM"}
+                    y{"G y 'ел', MMM – y 'ел', MMM"}
+                }
+                GyMMMEd{
+                    G{"G y 'ел', d MMM, E – G y 'ел', d MMM, E"}
+                    M{"G y 'ел', d MMM, E – d MMM, E"}
+                    d{"G y 'ел', d MMM, E – d MMM, E"}
+                    y{"G y 'ел', d MMM, E – y 'ел', d MMM, E"}
+                }
+                GyMMMd{
+                    G{"G y 'ел', d MMM – G y 'ел', d MMM"}
+                    M{"G y 'ел', d MMM – d MMM"}
+                    d{"G y 'ел', d–d MMM"}
+                    y{"G y 'ел', d MMM – y 'ел', d MMM"}
+                }
+                GyMd{
+                    G{"GGGGG dd.MM.y – GGGGG dd.MM.y"}
+                    M{"GGGGG dd.MM.y – dd.MM.y"}
+                    d{"GGGGG dd.MM.y – dd.MM.y"}
+                    y{"GGGGG dd.MM.y – dd.MM.y"}
+                }
                 H{
                     H{"HH–HH"}
                 }
@@ -266,15 +421,15 @@
                     M{"MM–MM"}
                 }
                 MEd{
-                    M{"E, dd.MM – E, dd.MM"}
-                    d{"E, dd.MM – E, dd.MM"}
+                    M{"dd.MM, E – dd.MM, E"}
+                    d{"dd.MM, E – dd.MM, E"}
                 }
                 MMM{
                     M{"LLL–LLL"}
                 }
                 MMMEd{
-                    M{"E, d MMM – E, d MMM"}
-                    d{"E, d MMM – E, d MMM"}
+                    M{"d MMM, E – d MMM, E"}
+                    d{"d MMM, E – d MMM, E"}
                 }
                 MMMd{
                     M{"d MMM – d MMM"}
@@ -314,27 +469,27 @@
                     y{"MM.y – MM.y"}
                 }
                 yMEd{
-                    M{"E, dd.MM.y – E, dd.MM.y"}
-                    d{"E, dd.MM.y – E, dd.MM.y"}
-                    y{"E, dd.MM.y – E, dd.MM.y"}
+                    M{"dd.MM.y, E – dd.MM.y, E"}
+                    d{"dd.MM.y, E – dd.MM.y, E"}
+                    y{"dd.MM.y, E – dd.MM.y, E"}
                 }
                 yMMM{
-                    M{"MMM – MMM, y 'ел'"}
-                    y{"MMM, y 'ел' - MMM, y 'ел'"}
+                    M{"y 'ел', MMM – MMM"}
+                    y{"y 'ел', MMM – y 'ел', MMM"}
                 }
                 yMMMEd{
-                    M{"E, d MMM – E, d MMM, y 'ел'"}
-                    d{"E, d MMM – E, d MMM, y 'ел'"}
-                    y{"E, d MMM, y 'ел' – E, d MMM, y 'ел'"}
+                    M{"y 'ел', d MMM, E – d MMM, E"}
+                    d{"y 'ел', d MMM, E – d MMM, E"}
+                    y{"y 'ел', d MMM, E – y 'ел', d MMM, E"}
                 }
                 yMMMM{
-                    M{"MMMM – MMMM, y 'ел'"}
-                    y{"MMMM, y 'ел' – MMMM, y 'ел'"}
+                    M{"y 'ел', MMMM – MMMM"}
+                    y{"y 'ел', MMMM – y 'ел', MMMM"}
                 }
                 yMMMd{
-                    M{"d MMM – d MMM, y 'ел'"}
-                    d{"d–d MMM, y 'ел'"}
-                    y{"d MMM, y 'ел' – d MMM, y 'ел'"}
+                    M{"y 'ел', d MMM – d MMM"}
+                    d{"y 'ел', d–d MMM"}
+                    y{"y 'ел', d MMM – y 'ел', d MMM"}
                 }
                 yMd{
                     M{"dd.MM.y – dd.MM.y"}
@@ -490,12 +645,45 @@
                 "0"{"бүген"}
                 "1"{"иртәгә"}
             }
+            relativeTime{
+                future{
+                    other{"{0} көннән"}
+                }
+                past{
+                    other{"{0} көн элек"}
+                }
+            }
         }
         day-narrow{
             dn{"көн"}
+            relativeTime{
+                future{
+                    other{"{0} көннән"}
+                }
+                past{
+                    other{"{0} көн элек"}
+                }
+            }
         }
         day-short{
             dn{"көн"}
+            relativeTime{
+                future{
+                    other{"{0} көннән"}
+                }
+                past{
+                    other{"{0} көн элек"}
+                }
+            }
+        }
+        dayOfYear{
+            dn{"елның көне"}
+        }
+        dayOfYear-narrow{
+            dn{"елның көне"}
+        }
+        dayOfYear-short{
+            dn{"елның көне"}
         }
         dayperiod{
             dn{"AM/PM"}
@@ -503,71 +691,631 @@
         era{
             dn{"эра"}
         }
+        fri{
+            relative{
+                "-1"{"узган җомга"}
+                "0"{"бу җомга"}
+                "1"{"киләсе җомга"}
+            }
+            relativeTime{
+                future{
+                    other{"{0} җомга узгач"}
+                }
+                past{
+                    other{"{0} җомга элек"}
+                }
+            }
+        }
+        fri-narrow{
+            relative{
+                "-1"{"узган җом."}
+                "0"{"бу җом."}
+                "1"{"киләсе җом."}
+            }
+            relativeTime{
+                future{
+                    other{"{0} җом. узгач"}
+                }
+                past{
+                    other{"{0} җом. элек"}
+                }
+            }
+        }
+        fri-short{
+            relative{
+                "-1"{"узган җом."}
+                "0"{"бу җом."}
+                "1"{"киләсе җом."}
+            }
+            relativeTime{
+                future{
+                    other{"{0} җом. узгач"}
+                }
+                past{
+                    other{"{0} җом. элек"}
+                }
+            }
+        }
         hour{
             dn{"сәгать"}
+            relative{
+                "0"{"бу сәгатьтә"}
+            }
+            relativeTime{
+                future{
+                    other{"{0} сәгатьтән"}
+                }
+                past{
+                    other{"{0} сәгать элек"}
+                }
+            }
         }
         hour-narrow{
             dn{"сәг."}
+            relativeTime{
+                future{
+                    other{"{0} сәг."}
+                }
+                past{
+                    other{"{0} сәг. элек"}
+                }
+            }
         }
         hour-short{
             dn{"сәг."}
+            relativeTime{
+                future{
+                    other{"{0} сәг."}
+                }
+                past{
+                    other{"{0} сәг. элек"}
+                }
+            }
         }
         minute{
             dn{"минут"}
+            relative{
+                "0"{"бу минутта"}
+            }
+            relativeTime{
+                future{
+                    other{"{0} минуттан"}
+                }
+                past{
+                    other{"{0} минут элек"}
+                }
+            }
         }
         minute-narrow{
             dn{"мин."}
+            relativeTime{
+                future{
+                    other{"{0} мин."}
+                }
+                past{
+                    other{"{0} мин. элек"}
+                }
+            }
         }
         minute-short{
             dn{"мин."}
+            relativeTime{
+                future{
+                    other{"{0} мин."}
+                }
+                past{
+                    other{"{0} мин. элек"}
+                }
+            }
+        }
+        mon{
+            relative{
+                "-1"{"узган дүшәмбе"}
+                "0"{"бу дүшәмбе"}
+                "1"{"киләсе дүшәмбе"}
+            }
+            relativeTime{
+                future{
+                    other{"{0} дүшәмбе узгач"}
+                }
+                past{
+                    other{"{0} дүшәмбе элек"}
+                }
+            }
+        }
+        mon-narrow{
+            relative{
+                "-1"{"узган дүш."}
+                "0"{"бу дүш."}
+                "1"{"киләсе дүш."}
+            }
+            relativeTime{
+                future{
+                    other{"{0} дүш. узгач"}
+                }
+                past{
+                    other{"{0} дүш. элек"}
+                }
+            }
+        }
+        mon-short{
+            relative{
+                "-1"{"узган дүш."}
+                "0"{"бу дүш."}
+                "1"{"киләсе дүш."}
+            }
+            relativeTime{
+                future{
+                    other{"{0} дүш. узгач"}
+                }
+                past{
+                    other{"{0} дүш. элек"}
+                }
+            }
         }
         month{
             dn{"ай"}
+            relative{
+                "-1"{"узган айда"}
+                "0"{"бу айда"}
+                "1"{"киләсе айда"}
+            }
+            relativeTime{
+                future{
+                    other{"{0} айдан"}
+                }
+                past{
+                    other{"{0} ай элек"}
+                }
+            }
         }
         month-narrow{
             dn{"ай"}
+            relative{
+                "-1"{"узган айда"}
+                "0"{"бу айда"}
+                "1"{"киләсе айда"}
+            }
+            relativeTime{
+                future{
+                    other{"{0} айдан"}
+                }
+                past{
+                    other{"{0} ай элек"}
+                }
+            }
         }
         month-short{
             dn{"ай"}
+            relative{
+                "-1"{"узган айда"}
+                "0"{"бу айда"}
+                "1"{"киләсе айда"}
+            }
+            relativeTime{
+                future{
+                    other{"{0} айдан"}
+                }
+                past{
+                    other{"{0} ай элек"}
+                }
+            }
         }
         quarter{
             dn{"квартал"}
+            relative{
+                "-1"{"узган кварталда"}
+                "0"{"бу кварталда"}
+                "1"{"киләсе кварталда"}
+            }
+            relativeTime{
+                future{
+                    other{"{0} кварталдан"}
+                }
+                past{
+                    other{"{0} квартал элек"}
+                }
+            }
         }
         quarter-narrow{
             dn{"кв."}
+            relativeTime{
+                future{
+                    other{"{0} кв."}
+                }
+                past{
+                    other{"{0} кв. элек"}
+                }
+            }
         }
         quarter-short{
             dn{"кв."}
+            relativeTime{
+                future{
+                    other{"{0} кв."}
+                }
+                past{
+                    other{"{0} кв. элек"}
+                }
+            }
+        }
+        sat{
+            relative{
+                "-1"{"узган шимбә"}
+                "0"{"бу шимбә"}
+                "1"{"киләсе шимбә"}
+            }
+            relativeTime{
+                future{
+                    other{"{0} шимбә узгач"}
+                }
+                past{
+                    other{"{0} шимбә элек"}
+                }
+            }
+        }
+        sat-narrow{
+            relative{
+                "-1"{"узган шим."}
+                "0"{"бу шим."}
+                "1"{"киләсе шим."}
+            }
+            relativeTime{
+                past{
+                    other{"{0} шим. элек"}
+                }
+            }
+        }
+        sat-short{
+            relative{
+                "-1"{"узган шим."}
+                "0"{"бу шим."}
+                "1"{"киләсе шим."}
+            }
+            relativeTime{
+                future{
+                    other{"{0} шим. узгач"}
+                }
+                past{
+                    other{"{0} шим. элек"}
+                }
+            }
         }
         second{
             dn{"секунд"}
+            relative{
+                "0"{"хәзер"}
+            }
+            relativeTime{
+                future{
+                    other{"{0} секундтан"}
+                }
+                past{
+                    other{"{0} секунд элек"}
+                }
+            }
         }
         second-narrow{
             dn{"с."}
+            relativeTime{
+                future{
+                    other{"{0} с."}
+                }
+                past{
+                    other{"{0} с. элек"}
+                }
+            }
         }
         second-short{
             dn{"с."}
+            relativeTime{
+                future{
+                    other{"{0} с."}
+                }
+                past{
+                    other{"{0} с. элек"}
+                }
+            }
+        }
+        sun{
+            relative{
+                "-1"{"узган якшәмбе"}
+                "0"{"бу якшәмбе"}
+                "1"{"киләсе якшәмбе"}
+            }
+            relativeTime{
+                future{
+                    other{"{0} якшәмбе узгач"}
+                }
+                past{
+                    other{"{0} якшәмбе элек"}
+                }
+            }
+        }
+        sun-narrow{
+            relative{
+                "-1"{"узган якш."}
+                "0"{"бу якш."}
+                "1"{"киләсе якш."}
+            }
+            relativeTime{
+                future{
+                    other{"{0} якш. узгач"}
+                }
+                past{
+                    other{"{0} якш. элек"}
+                }
+            }
+        }
+        sun-short{
+            relative{
+                "-1"{"узган якш."}
+                "0"{"бу якш."}
+                "1"{"киләсе якш."}
+            }
+            relativeTime{
+                future{
+                    other{"{0} якш. узгач"}
+                }
+                past{
+                    other{"{0} якш. элек"}
+                }
+            }
+        }
+        thu{
+            relative{
+                "-1"{"узган пәнҗешәмбе"}
+                "0"{"бу пәнҗешәмбе"}
+                "1"{"киләсе пәнҗешәмбе"}
+            }
+            relativeTime{
+                future{
+                    other{"{0} пәнҗешәмбе узгач"}
+                }
+                past{
+                    other{"{0} пәнҗешәмбе элек"}
+                }
+            }
+        }
+        thu-narrow{
+            relative{
+                "-1"{"узган пәнҗ."}
+                "0"{"бу пәнҗ."}
+                "1"{"киләсе пәнҗ."}
+            }
+            relativeTime{
+                future{
+                    other{"{0} пәнҗ. узгач"}
+                }
+                past{
+                    other{"{0} пәнҗ. элек"}
+                }
+            }
+        }
+        thu-short{
+            relative{
+                "-1"{"узган пәнҗ."}
+                "0"{"бу пәнҗ."}
+                "1"{"киләсе пәнҗ."}
+            }
+            relativeTime{
+                future{
+                    other{"{0} пәнҗ. узгач"}
+                }
+                past{
+                    other{"{0} пәнҗ. элек"}
+                }
+            }
+        }
+        tue{
+            relative{
+                "-1"{"узган сишәмбе"}
+                "0"{"бу сишәмбе"}
+                "1"{"киләсе сишәмбе"}
+            }
+            relativeTime{
+                future{
+                    other{"{0} сишәмбе узгач"}
+                }
+                past{
+                    other{"{0} сишәмбе элек"}
+                }
+            }
+        }
+        tue-narrow{
+            relative{
+                "-1"{"узган сиш."}
+                "0"{"бу сиш."}
+                "1"{"киләсе сиш."}
+            }
+            relativeTime{
+                future{
+                    other{"{0} сиш. узгач"}
+                }
+                past{
+                    other{"{0} сиш. элек"}
+                }
+            }
+        }
+        tue-short{
+            relative{
+                "-1"{"узган сиш."}
+                "0"{"бу сиш."}
+                "1"{"киләсе сиш."}
+            }
+            relativeTime{
+                future{
+                    other{"{0} сиш. узгач"}
+                }
+                past{
+                    other{"{0} сиш. элек"}
+                }
+            }
+        }
+        wed{
+            relative{
+                "-1"{"узган чәршәмбе"}
+                "0"{"бу чәршәмбе"}
+                "1"{"киләсе чәршәмбе"}
+            }
+            relativeTime{
+                future{
+                    other{"{0} чәршәмбе узгач"}
+                }
+                past{
+                    other{"{0} чәршәмбе элек"}
+                }
+            }
+        }
+        wed-narrow{
+            relative{
+                "-1"{"узган чәр."}
+                "0"{"бу чәр."}
+                "1"{"киләсе чәр."}
+            }
+            relativeTime{
+                future{
+                    other{"{0} чәр. узгач"}
+                }
+                past{
+                    other{"{0} чәр. элек"}
+                }
+            }
+        }
+        wed-short{
+            relative{
+                "-1"{"узган чәр."}
+                "0"{"бу чәр."}
+                "1"{"киләсе чәр."}
+            }
+            relativeTime{
+                future{
+                    other{"{0} чәр. узгач"}
+                }
+                past{
+                    other{"{0} чәр. элек"}
+                }
+            }
         }
         week{
             dn{"атна"}
+            relative{
+                "-1"{"узган атнада"}
+                "0"{"бу атнада"}
+                "1"{"киләсе атнада"}
+            }
+            relativePeriod{"{0} атнасы"}
+            relativeTime{
+                future{
+                    other{"{0} атнадан"}
+                }
+                past{
+                    other{"{0} атна элек"}
+                }
+            }
         }
         week-narrow{
             dn{"атна"}
+            relative{
+                "-1"{"узган атнада"}
+                "0"{"бу атнада"}
+                "1"{"киләсе атнада"}
+            }
+            relativePeriod{"{0} атнасы"}
+            relativeTime{
+                future{
+                    other{"{0} атнадан"}
+                }
+                past{
+                    other{"{0} атна элек"}
+                }
+            }
         }
         week-short{
             dn{"атна"}
+            relative{
+                "-1"{"узган атнада"}
+                "0"{"бу атнада"}
+                "1"{"киләсе атнада"}
+            }
+            relativePeriod{"{0} атнасы"}
+            relativeTime{
+                future{
+                    other{"{0} атнадан"}
+                }
+                past{
+                    other{"{0} атна элек"}
+                }
+            }
+        }
+        weekOfMonth{
+            dn{"ай атнасы"}
+        }
+        weekOfMonth-narrow{
+            dn{"ай атнасы"}
+        }
+        weekOfMonth-short{
+            dn{"ай атнасы"}
         }
         weekday{
             dn{"атна көне"}
         }
+        weekdayOfMonth{
+            dn{"айның эш көне"}
+        }
+        weekdayOfMonth-narrow{
+            dn{"айның эш көне"}
+        }
+        weekdayOfMonth-short{
+            dn{"айның эш көне"}
+        }
         year{
             dn{"ел"}
+            relative{
+                "-1"{"узган ел"}
+                "0"{"быел"}
+                "1"{"киләсе елда"}
+            }
+            relativeTime{
+                future{
+                    other{"{0} елдан"}
+                }
+                past{
+                    other{"{0} ел элек"}
+                }
+            }
         }
         year-narrow{
             dn{"ел"}
+            relative{
+                "-1"{"узган ел"}
+                "0"{"быел"}
+                "1"{"киләсе елда"}
+            }
+            relativeTime{
+                future{
+                    other{"{0} елдан"}
+                }
+                past{
+                    other{"{0} ел элек"}
+                }
+            }
         }
         year-short{
             dn{"ел"}
+            relative{
+                "-1"{"узган ел"}
+                "0"{"быел"}
+                "1"{"киләсе елда"}
+            }
+            relativeTime{
+                future{
+                    other{"{0} елдан"}
+                }
+                past{
+                    other{"{0} ел элек"}
+                }
+            }
         }
         zone{
             dn{"вакыт өлкәсе"}
diff --git a/icu4c/source/data/locales/tt_RU.txt b/icu4c/source/data/locales/tt_RU.txt
index 65ab8d9..68f63c8 100644
--- a/icu4c/source/data/locales/tt_RU.txt
+++ b/icu4c/source/data/locales/tt_RU.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tt_RU{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/twq.txt b/icu4c/source/data/locales/twq.txt
index d47f6f6..ceabf91 100644
--- a/icu4c/source/data/locales/twq.txt
+++ b/icu4c/source/data/locales/twq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 twq{
     AuxExemplarCharacters{"[v]"}
     ExemplarCharacters{"[a ã b c d e ẽ f g h i j k l m n ɲ ŋ o õ p q r s š t u w x y z ž]"}
@@ -17,7 +18,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/twq_NE.txt b/icu4c/source/data/locales/twq_NE.txt
index b9348f5..df7da3d 100644
--- a/icu4c/source/data/locales/twq_NE.txt
+++ b/icu4c/source/data/locales/twq_NE.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 twq_NE{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/tzm.txt b/icu4c/source/data/locales/tzm.txt
index 0482907..017249e 100644
--- a/icu4c/source/data/locales/tzm.txt
+++ b/icu4c/source/data/locales/tzm.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tzm{
     AuxExemplarCharacters{"[o p v]"}
     ExemplarCharacters{"[a b c d ḍ e ɛ f g {gʷ} ɣ h ḥ i j k {kʷ} l m n q r ṛ s ṣ t ṭ u w x y z]"}
@@ -16,7 +17,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/tzm_MA.txt b/icu4c/source/data/locales/tzm_MA.txt
index 5be124b..2bfa561 100644
--- a/icu4c/source/data/locales/tzm_MA.txt
+++ b/icu4c/source/data/locales/tzm_MA.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tzm_MA{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ug.txt b/icu4c/source/data/locales/ug.txt
index 34efd08..24bea80 100644
--- a/icu4c/source/data/locales/ug.txt
+++ b/icu4c/source/data/locales/ug.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ug{
     AuxExemplarCharacters{"[\u200E\u200F ئ]"}
     ExemplarCharacters{
@@ -149,7 +150,6 @@
         }
         native{"arabext"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
diff --git a/icu4c/source/data/locales/ug_CN.txt b/icu4c/source/data/locales/ug_CN.txt
index 72e939d..6a0606d 100644
--- a/icu4c/source/data/locales/ug_CN.txt
+++ b/icu4c/source/data/locales/ug_CN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ug_CN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/uk.txt b/icu4c/source/data/locales/uk.txt
index b2e1864..20ae3bb 100644
--- a/icu4c/source/data/locales/uk.txt
+++ b/icu4c/source/data/locales/uk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uk{
     AuxExemplarCharacters{
         "[{а\u0301} {е\u0301} ё {є\u0301} {и\u0301} {і\u0301} {ї\u0301} {о\u0301} {у"
@@ -293,7 +294,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -925,7 +925,6 @@
                         afternoon1{"день"}
                         am{"дп"}
                         evening1{"вечір"}
-                        midnight{"опівніч"}
                         morning1{"ранок"}
                         night1{"ніч"}
                         noon{"полудень"}
@@ -1814,8 +1813,8 @@
         han_characters{"китайський ієрогліф"}
         han_radicals{"ієрогліфічний ключ"}
         hanja{"ханча"}
-        hanzi_simplified{"ханьцзи (спрощена)"}
-        hanzi_traditional{"ханьцзи (традиційна)"}
+        hanzi_simplified{"ханьцзи (спрощене письмо)"}
+        hanzi_traditional{"ханьцзи (традиційне письмо)"}
         heart{"серце"}
         historic_scripts{"історичне письмо"}
         ideographic_desc_characters{"ідеографічний описовий знак"}
@@ -2032,16 +2031,16 @@
             }
             relativeTime{
                 future{
-                    few{"через {0} пʼятниці"}
-                    many{"через {0} пʼятниць"}
-                    one{"через {0} пʼятницю"}
-                    other{"через {0} пʼятниці"}
+                    few{"через {0} пт"}
+                    many{"через {0} пт"}
+                    one{"через {0} пт"}
+                    other{"через {0} пт"}
                 }
                 past{
-                    few{"{0} пʼятниці тому"}
-                    many{"{0} пʼятниць тому"}
-                    one{"{0} пʼятницю тому"}
-                    other{"{0} пʼятниці тому"}
+                    few{"{0} пт тому"}
+                    many{"{0} пт тому"}
+                    one{"{0} пт тому"}
+                    other{"{0} пт тому"}
                 }
             }
         }
diff --git a/icu4c/source/data/locales/uk_UA.txt b/icu4c/source/data/locales/uk_UA.txt
index fdd3c8f..ebf2c13 100644
--- a/icu4c/source/data/locales/uk_UA.txt
+++ b/icu4c/source/data/locales/uk_UA.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uk_UA{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/ur.txt b/icu4c/source/data/locales/ur.txt
index c883b27..ff17fd1 100644
--- a/icu4c/source/data/locales/ur.txt
+++ b/icu4c/source/data/locales/ur.txt
@@ -1,9 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ur{
     AuxExemplarCharacters{
         "[؀؁؂؃\u200C\u200D\u200E\u200F \u064B \u064C \u064D \u064E \u064F \u0650 "
-        "\u0651 \u0652 \u0654 \u0656 \u0657 \u0658 \u0670 ۃ ٻ ٺ ټ ٽ ي]"
+        "\u0651 \u0652 \u0654 \u0656 \u0657 \u0658 \u0670 أ آ ں ؤ ۂ ۃ ئ ٻ ة ٺ ټ ٽ ه ي"
+        "]"
     }
     Ellipsis{
         final{"{0}…"}
@@ -14,8 +16,8 @@
         word-medial{"{0} … {1}"}
     }
     ExemplarCharacters{
-        "[ا أ آ ب پ ت ٹ ث ج چ ح خ د ڈ ذ ر ڑ ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ں و ؤ ہ"
-        " ۂ ھ ء ی ئ ے ة ه]"
+        "[ا ب پ ت ٹ ث ج چ ح خ د ڈ ذ ر ڑ ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ہ ھ ء ی ے"
+        "]"
     }
     ExemplarCharactersIndex{
         "[ا ب پ ت ٹ ث ج چ ح خ د ڈ ذ ر ڑ ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ہ ھ ء ی ے"
@@ -33,6 +35,7 @@
                 scientificFormat{"#E0"}
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{"٫"}
                 exponential{"×۱۰^"}
                 group{"٬"}
@@ -216,6 +219,7 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -242,7 +246,6 @@
         minimumGroupingDigits{"1"}
         native{"arabext"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             eras{
@@ -1315,9 +1318,9 @@
                         "محرم",
                         "صفر",
                         "ربیع الاوّل",
-                        "ربیع الثّانی",
+                        "ربیع الثانی",
                         "جمادی الاوّل",
-                        "جمادی الثّانی",
+                        "جمادی الثانی",
                         "رجب",
                         "شعبان",
                         "رمضان",
@@ -2439,7 +2442,7 @@
                 "[%٪﹪%]",
                 "[؉‰]",
                 "[\$﹩$$]",
-                "[£₤]",
+                "[£₤£]",
                 "[¥¥]",
                 "[₩₩]",
                 "[₨₹{Rp}{Rs}]",
diff --git a/icu4c/source/data/locales/ur_IN.txt b/icu4c/source/data/locales/ur_IN.txt
index 77456b8..57a9347 100644
--- a/icu4c/source/data/locales/ur_IN.txt
+++ b/icu4c/source/data/locales/ur_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ur_IN{
     NumberElements{
         arabext{
@@ -14,7 +15,6 @@
             }
         }
     }
-    Version{"37"}
     fields{
         day-narrow{
             relativeTime{
diff --git a/icu4c/source/data/locales/ur_PK.txt b/icu4c/source/data/locales/ur_PK.txt
index b51709d..241ddc8 100644
--- a/icu4c/source/data/locales/ur_PK.txt
+++ b/icu4c/source/data/locales/ur_PK.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ur_PK{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/uz.txt b/icu4c/source/data/locales/uz.txt
index 82835db..2070133 100644
--- a/icu4c/source/data/locales/uz.txt
+++ b/icu4c/source/data/locales/uz.txt
@@ -1,7 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz{
-    AuxExemplarCharacters{"[c w]"}
+    AuxExemplarCharacters{
+        "[á à ă â å ä ã ā æ c ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ú ù ŭ û ü ū"
+        " w ÿ]"
+    }
     Ellipsis{
         final{"{0}…"}
         initial{"…{0}"}
@@ -14,8 +18,8 @@
     ExemplarCharactersIndex{"[A B D E F G H I J K L M N O P Q R S T U V X Y Z {Oʻ} {Gʻ} {Sh} {Ch}]"}
     ExemplarCharactersNumbers{"[  \\- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
     ExemplarCharactersPunctuation{
-        "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” „ « » ( ) \\[ \\] \\{ \\} § @ "
-        "* / \\& # ′ ″]"
+        "[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) \\[ \\] § @ * / \\& # † ‡ "
+        "′ ″]"
     }
     MoreInformation{"?"}
     NumberElements{
@@ -225,7 +229,7 @@
         }
         minimalPairs{
             ordinal{
-                other{"{0}chi chorraxada oʼngga buriling."}
+                other{"{0}-chorrahadan o‘ngga buriling"}
             }
             plural{
                 one{"Savatingizda {0}X bor. Uni sotib olasizmi?"}
@@ -235,7 +239,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/uz_AF.txt b/icu4c/source/data/locales/uz_AF.txt
index 24ca294..0e8d20c 100644
--- a/icu4c/source/data/locales/uz_AF.txt
+++ b/icu4c/source/data/locales/uz_AF.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_AF{
     "%%ALIAS"{"uz_Arab_AF"}
 }
diff --git a/icu4c/source/data/locales/uz_Arab.txt b/icu4c/source/data/locales/uz_Arab.txt
index 4c24f56..3edb5bd 100644
--- a/icu4c/source/data/locales/uz_Arab.txt
+++ b/icu4c/source/data/locales/uz_Arab.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Arab{
     %%Parent{"root"}
     AuxExemplarCharacters{"[\u200C\u200D\u200E\u200F ټ ځ څ ډ ړ ږ ښ ګ ڼ ي ۍ ې]"}
@@ -29,7 +30,6 @@
         }
         native{"arabext"}
     }
-    Version{"37"}
     calendar{
         gregorian{
             dayNames{
diff --git a/icu4c/source/data/locales/uz_Arab_AF.txt b/icu4c/source/data/locales/uz_Arab_AF.txt
index d20ea99..676d74c 100644
--- a/icu4c/source/data/locales/uz_Arab_AF.txt
+++ b/icu4c/source/data/locales/uz_Arab_AF.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Arab_AF{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/uz_Cyrl.txt b/icu4c/source/data/locales/uz_Cyrl.txt
index ebe6b91..7766b85 100644
--- a/icu4c/source/data/locales/uz_Cyrl.txt
+++ b/icu4c/source/data/locales/uz_Cyrl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Cyrl{
     %%Parent{"root"}
     AuxExemplarCharacters{"[ц щ ы ь]"}
@@ -165,7 +166,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/uz_Cyrl_UZ.txt b/icu4c/source/data/locales/uz_Cyrl_UZ.txt
index 16cb3cb..abfe4b8 100644
--- a/icu4c/source/data/locales/uz_Cyrl_UZ.txt
+++ b/icu4c/source/data/locales/uz_Cyrl_UZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Cyrl_UZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/uz_Latn.txt b/icu4c/source/data/locales/uz_Latn.txt
index f6035b7..1ae52da 100644
--- a/icu4c/source/data/locales/uz_Latn.txt
+++ b/icu4c/source/data/locales/uz_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/uz_Latn_UZ.txt b/icu4c/source/data/locales/uz_Latn_UZ.txt
index efbadf5..b9b72de 100644
--- a/icu4c/source/data/locales/uz_Latn_UZ.txt
+++ b/icu4c/source/data/locales/uz_Latn_UZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Latn_UZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/uz_UZ.txt b/icu4c/source/data/locales/uz_UZ.txt
index ffac532..3a6a14d 100644
--- a/icu4c/source/data/locales/uz_UZ.txt
+++ b/icu4c/source/data/locales/uz_UZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_UZ{
     "%%ALIAS"{"uz_Latn_UZ"}
 }
diff --git a/icu4c/source/data/locales/vai.txt b/icu4c/source/data/locales/vai.txt
index 2151f3d..bd93a94 100644
--- a/icu4c/source/data/locales/vai.txt
+++ b/icu4c/source/data/locales/vai.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai{
     AuxExemplarCharacters{"[ꘓ ꘔ ꘕ ꘖ ꘗ ꘘ ꘙ ꘚ ꘛ ꘜ ꘝ ꘞ ꘟ]"}
     ExemplarCharacters{
@@ -28,7 +29,6 @@
         }
         native{"vaii"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/vai_LR.txt b/icu4c/source/data/locales/vai_LR.txt
index 27d4238..f682350 100644
--- a/icu4c/source/data/locales/vai_LR.txt
+++ b/icu4c/source/data/locales/vai_LR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_LR{
     "%%ALIAS"{"vai_Vaii_LR"}
 }
diff --git a/icu4c/source/data/locales/vai_Latn.txt b/icu4c/source/data/locales/vai_Latn.txt
index 8b6f32e..e5a2388 100644
--- a/icu4c/source/data/locales/vai_Latn.txt
+++ b/icu4c/source/data/locales/vai_Latn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_Latn{
     %%Parent{"root"}
     ExemplarCharacters{
@@ -23,7 +24,6 @@
         }
         native{"vaii"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/vai_Latn_LR.txt b/icu4c/source/data/locales/vai_Latn_LR.txt
index bd114e1..7f16d02 100644
--- a/icu4c/source/data/locales/vai_Latn_LR.txt
+++ b/icu4c/source/data/locales/vai_Latn_LR.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_Latn_LR{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/vai_Vaii.txt b/icu4c/source/data/locales/vai_Vaii.txt
index cffa591..6dc5e99 100644
--- a/icu4c/source/data/locales/vai_Vaii.txt
+++ b/icu4c/source/data/locales/vai_Vaii.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_Vaii{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/vai_Vaii_LR.txt b/icu4c/source/data/locales/vai_Vaii_LR.txt
index 5d8613b..7d47d5f 100644
--- a/icu4c/source/data/locales/vai_Vaii_LR.txt
+++ b/icu4c/source/data/locales/vai_Vaii_LR.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_Vaii_LR{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/vi.txt b/icu4c/source/data/locales/vi.txt
index d39f47a..df55d86 100644
--- a/icu4c/source/data/locales/vi.txt
+++ b/icu4c/source/data/locales/vi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vi{
     ExemplarCharacters{
         "[a à ả ã á ạ ă ằ ẳ ẵ ắ ặ â ầ ẩ ẫ ấ ậ b c d đ e è ẻ ẽ é ẹ ê ề ể ễ ế ệ f g h i"
@@ -146,6 +147,7 @@
                 }
             }
             symbols{
+                approximatelySign{"~"}
                 decimal{","}
                 exponential{"E"}
                 group{"."}
@@ -159,19 +161,8 @@
                 superscriptingExponent{"×"}
             }
         }
-        minimalPairs{
-            ordinal{
-                one{"Rẽ vào lối rẽ thứ nhất bên phải."}
-                other{"Rẽ vào lối rẽ thứ {0} bên phải."}
-            }
-            plural{
-                one{"Rẽ vào lối rẽ thứ nhất bên phải."}
-                other{"Rẽ vào lối rẽ thứ {0} bên phải."}
-            }
-        }
         minimumGroupingDigits{"1"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -1094,7 +1085,7 @@
             eras{
                 abbreviated{
                     "Trước CN",
-                    "sau CN",
+                    "Sau CN",
                 }
                 abbreviated%variant{
                     "trước CN",
@@ -1105,12 +1096,12 @@
                     "sau CN",
                 }
                 wide{
-                    "Trước CN",
-                    "sau CN",
+                    "Trước Thiên Chúa",
+                    "Sau Công Nguyên",
                 }
                 wide%variant{
-                    "trước CN",
-                    "CN",
+                    "Trước Công Nguyên",
+                    "Công Nguyên",
                 }
             }
             intervalFormats{
@@ -1761,7 +1752,10 @@
         day-short{
             dn{"Ngày"}
             relative{
+                "-1"{"hôm qua"}
                 "-2"{"Hôm kia"}
+                "0"{"hôm nay"}
+                "1"{"ngày mai"}
                 "2"{"Ngày kia"}
             }
             relativeTime{
@@ -2482,6 +2476,10 @@
             middle{"{0} {1}"}
             start{"{0} {1}"}
         }
+        unit-short{
+            2{"{0}, {1}"}
+            end{"{0}, {1}"}
+        }
     }
     measurementSystemNames{
         UK{"Hệ Anh"}
@@ -2511,7 +2509,7 @@
         number{
             lenient{
                 "[\\-‒⁻₋−➖﹣-]",
-                "[,،٫、︐︑﹐﹑,、]",
+                "[,،٫⹁、︐︑﹐﹑,、]",
                 "[+⁺₊➕﬩﹢+]",
             }
         }
diff --git a/icu4c/source/data/locales/vi_VN.txt b/icu4c/source/data/locales/vi_VN.txt
index c4865e1..5c8c152 100644
--- a/icu4c/source/data/locales/vi_VN.txt
+++ b/icu4c/source/data/locales/vi_VN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vi_VN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/vun.txt b/icu4c/source/data/locales/vun.txt
index 5cbecc8..288748e 100644
--- a/icu4c/source/data/locales/vun.txt
+++ b/icu4c/source/data/locales/vun.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vun{
     AuxExemplarCharacters{"[q x]"}
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p r s t u v w y z]"}
@@ -11,7 +12,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/vun_TZ.txt b/icu4c/source/data/locales/vun_TZ.txt
index 54a2611..243af68 100644
--- a/icu4c/source/data/locales/vun_TZ.txt
+++ b/icu4c/source/data/locales/vun_TZ.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vun_TZ{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/wae.txt b/icu4c/source/data/locales/wae.txt
index 3a38fa3..98f967a 100644
--- a/icu4c/source/data/locales/wae.txt
+++ b/icu4c/source/data/locales/wae.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 wae{
     AuxExemplarCharacters{"[à ă â å ā æ ç è ĕ ê ë ē ì ĭ î ï ī ñ ò ŏ ô ø ō œ ß ù ŭ û ū ÿ]"}
     ExemplarCharacters{
@@ -16,7 +17,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/wae_CH.txt b/icu4c/source/data/locales/wae_CH.txt
index 48a7112..942969f 100644
--- a/icu4c/source/data/locales/wae_CH.txt
+++ b/icu4c/source/data/locales/wae_CH.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 wae_CH{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/wo.txt b/icu4c/source/data/locales/wo.txt
index 26eabf1..4fd8793 100644
--- a/icu4c/source/data/locales/wo.txt
+++ b/icu4c/source/data/locales/wo.txt
@@ -1,9 +1,12 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 wo{
     AuxExemplarCharacters{"[ã h v z]"}
     ExemplarCharacters{"[a à b c d e é ë f g i j k l m n ñ ŋ o ó p q r s t u w x y]"}
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N Ŋ O P Q R S T U V W X Y Z]"}
+    ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9]"}
+    ExemplarCharactersPunctuation{"[\\- ‑ , ; \\: ! ? . ( ) \\[ \\] \\{ \\}]"}
     NumberElements{
         default{"latn"}
         latn{
@@ -34,7 +37,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -414,12 +416,45 @@
                 "0"{"tay"}
                 "1"{"suba"}
             }
+            relativeTime{
+                future{
+                    other{"fileek {0} fan"}
+                }
+                past{
+                    other{"{0} fan ci ginaaw"}
+                }
+            }
         }
         day-narrow{
             dn{"fan"}
+            relativeTime{
+                future{
+                    other{"fileek {0} fan"}
+                }
+                past{
+                    other{"{0} fan ci ginaaw"}
+                }
+            }
         }
         day-short{
             dn{"fan"}
+            relativeTime{
+                future{
+                    other{"fileek {0} fan"}
+                }
+                past{
+                    other{"{0} fan ci ginaaw"}
+                }
+            }
+        }
+        dayOfYear{
+            dn{"bisu at mi"}
+        }
+        dayOfYear-narrow{
+            dn{"bisu at"}
+        }
+        dayOfYear-short{
+            dn{"bisu at"}
         }
         dayperiod{
             dn{"Sub/Ngo"}
@@ -427,75 +462,644 @@
         era{
             dn{"jamono"}
         }
+        fri{
+            relative{
+                "-1"{"àjjuma ji weesu"}
+                "0"{"tay ci àjjuma ji"}
+                "1"{"àjjuma jiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} àjjuma"}
+                }
+                past{
+                    other{"{0} àjjuma ci ginaaw"}
+                }
+            }
+        }
+        fri-narrow{
+            relative{
+                "-1"{"àj. ji weesu"}
+                "0"{"tay ci àj. ji"}
+                "1"{"àj. jiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} àj."}
+                }
+                past{
+                    other{"{0} àj. ci ginaaw"}
+                }
+            }
+        }
+        fri-short{
+            relative{
+                "-1"{"àjj. ji weesu"}
+                "0"{"tay ci àjj. ji"}
+                "1"{"àjj. jiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} àjj."}
+                }
+                past{
+                    other{"{0} àjj. ci ginaaw"}
+                }
+            }
+        }
         hour{
-            dn{"waxtu"}
+            dn{"waxt"}
+            relative{
+                "0"{"ci waxtu wii"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} waxtu"}
+                }
+                past{
+                    other{"{0} waxtu ci ginaaw"}
+                }
+            }
         }
         hour-narrow{
             dn{"wxt."}
+            relativeTime{
+                future{
+                    other{"fileek {0} wax."}
+                }
+                past{
+                    other{"{0} wax. ci ginaaw"}
+                }
+            }
         }
         hour-short{
             dn{"wxt."}
+            relativeTime{
+                future{
+                    other{"fileek {0} wax."}
+                }
+                past{
+                    other{"{0} wax. ci ginaaw"}
+                }
+            }
         }
         minute{
             dn{"simili"}
+            relative{
+                "0"{"ci simili bii"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} simili"}
+                }
+                past{
+                    other{"{0} simili ci ginaaw"}
+                }
+            }
         }
         minute-narrow{
             dn{"sim."}
+            relativeTime{
+                future{
+                    other{"fileek {0} sim."}
+                }
+                past{
+                    other{"{0} sim. ci ginaaw"}
+                }
+            }
         }
         minute-short{
             dn{"sim."}
+            relativeTime{
+                future{
+                    other{"fileek {0} sim."}
+                }
+                past{
+                    other{"{0} sim. ci ginaaw"}
+                }
+            }
+        }
+        mon{
+            relative{
+                "-1"{"altine ji weesu"}
+                "0"{"tay ci altine ji"}
+                "1"{"altine jiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} altine"}
+                }
+                past{
+                    other{"{0} altine ci ginaaw"}
+                }
+            }
+        }
+        mon-narrow{
+            relative{
+                "-1"{"alt. ji weesu"}
+                "0"{"tay ci alt. ji"}
+                "1"{"alt. jiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} alt."}
+                }
+                past{
+                    other{"{0} alt. ci ginaaw"}
+                }
+            }
+        }
+        mon-short{
+            relative{
+                "-1"{"alti. ji weesu"}
+                "0"{"tay ci alti. ji"}
+                "1"{"alti. jiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} alti."}
+                }
+                past{
+                    other{"{0} alti. ci ginaaw"}
+                }
+            }
         }
         month{
             dn{"weer"}
+            relative{
+                "-1"{"weer wi weesu"}
+                "0"{"weer wii"}
+                "1"{"weer wiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} weer"}
+                }
+                past{
+                    other{"{0} weer ci ginaaw"}
+                }
+            }
         }
         month-narrow{
             dn{"we."}
+            relative{
+                "-1"{"we. wi wees"}
+                "0"{"we. wii"}
+                "1"{"we. wiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} we."}
+                }
+                past{
+                    other{"{0} we. ci ginaaw"}
+                }
+            }
         }
         month-short{
             dn{"we."}
+            relative{
+                "-1"{"we. wi wees"}
+                "0"{"we. wii"}
+                "1"{"we. wiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} we."}
+                }
+                past{
+                    other{"{0} we. ci ginaaw"}
+                }
+            }
         }
         quarter{
             dn{"ñeenti-weer"}
+            relative{
+                "-1"{"trimestre bi weesu"}
+                "0"{"trimestre bii"}
+                "1"{"trimestre biy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} trimestre"}
+                }
+                past{
+                    other{"{0} trimestre ci ginaaw"}
+                }
+            }
         }
         quarter-narrow{
             dn{"ñw."}
+            relativeTime{
+                future{
+                    other{"fileek {0} trim."}
+                }
+                past{
+                    other{"{0} trim. ci ginaaw"}
+                }
+            }
         }
         quarter-short{
             dn{"ñw."}
+            relativeTime{
+                future{
+                    other{"fileek {0} trim."}
+                }
+                past{
+                    other{"{0} trim. ci ginaaw"}
+                }
+            }
+        }
+        sat{
+            relative{
+                "-1"{"gàwwu ji weesu"}
+                "0"{"tay ci gàwwu ji"}
+                "1"{"gàwwu jiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} gàwwu"}
+                }
+                past{
+                    other{"{0} gàwwu ci ginaaw"}
+                }
+            }
+        }
+        sat-narrow{
+            relative{
+                "-1"{"gà. ji weesu"}
+                "0"{"tay ci gà. ji"}
+                "1"{"gà. jiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} gà."}
+                }
+                past{
+                    other{"{0} gà. ci ginaaw"}
+                }
+            }
+        }
+        sat-short{
+            relative{
+                "-1"{"gàw. ji weesu"}
+                "0"{"tay ci gàw. ji"}
+                "1"{"gàw. jiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} gàw."}
+                }
+                past{
+                    other{"{0} gàw. ci ginaaw"}
+                }
+            }
         }
         second{
             dn{"saa"}
+            relative{
+                "0"{"leegi"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} saa"}
+                }
+                past{
+                    other{"{0} saa ci ginaaw"}
+                }
+            }
         }
         second-narrow{
             dn{"saa."}
+            relativeTime{
+                future{
+                    other{"fileek {0} saa"}
+                }
+                past{
+                    other{"{0} saa ci ginaaw"}
+                }
+            }
         }
         second-short{
             dn{"saa."}
+            relativeTime{
+                future{
+                    other{"fileek {0} saa"}
+                }
+                past{
+                    other{"{0} saa ci ginaaw"}
+                }
+            }
+        }
+        sun{
+            relative{
+                "-1"{"dibéer bi weesu"}
+                "0"{"tay ci dibéer bi"}
+                "1"{"dibéer biy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} dibéer"}
+                }
+                past{
+                    other{"{0} dibéer ci ginaaw"}
+                }
+            }
+        }
+        sun-narrow{
+            relative{
+                "-1"{"dib. bi weesu"}
+                "0"{"tay ci dib. bi"}
+                "1"{"dib. biy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} dib."}
+                }
+                past{
+                    other{"{0} dib. ci ginaaw"}
+                }
+            }
+        }
+        sun-short{
+            relative{
+                "-1"{"dib. bi weesu"}
+                "0"{"tay ci dib. bi"}
+                "1"{"dib. biy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} dib."}
+                }
+                past{
+                    other{"{0} dib. ci ginaaw"}
+                }
+            }
+        }
+        thu{
+            relative{
+                "-1"{"alxamis ji weesu"}
+                "0"{"tay ci alxamis ji"}
+                "1"{"alxamis jiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} alxamis"}
+                }
+                past{
+                    other{"{0} alxamis ci ginaaw"}
+                }
+            }
+        }
+        thu-narrow{
+            relative{
+                "-1"{"alx. ji weesu"}
+                "0"{"tay ci alx. ji"}
+                "1"{"alx. jiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} alx."}
+                }
+                past{
+                    other{"{0} alx. ci ginaaw"}
+                }
+            }
+        }
+        thu-short{
+            relative{
+                "-1"{"alxa. ji weesu"}
+                "0"{"tay ci alxa. ji"}
+                "1"{"alxa. jiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} alxa."}
+                }
+                past{
+                    other{"{0} alxa. ci ginaaw"}
+                }
+            }
+        }
+        tue{
+            relative{
+                "-1"{"talaata ji weesu"}
+                "0"{"tay ci talaata ji"}
+                "1"{"talaata jiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} talaata"}
+                }
+                past{
+                    other{"{0} talaata ci ginaaw"}
+                }
+            }
+        }
+        tue-narrow{
+            relative{
+                "-1"{"ta. ji weesu"}
+                "0"{"tay ci ta. ji"}
+                "1"{"ta. jiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} ta."}
+                }
+                past{
+                    other{"{0} ta. ci ginaaw"}
+                }
+            }
+        }
+        tue-short{
+            relative{
+                "-1"{"tal. ji weesu"}
+                "0"{"tay ci tal. ji"}
+                "1"{"tal. jiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} tal."}
+                }
+                past{
+                    other{"{0} tal. ci ginaaw"}
+                }
+            }
+        }
+        wed{
+            relative{
+                "-1"{"àllarba ji weesu"}
+                "0"{"tay ci àllarba ji"}
+                "1"{"àllarba jiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} àllarba"}
+                }
+                past{
+                    other{"{0} àllarba ci ginaaw"}
+                }
+            }
+        }
+        wed-narrow{
+            relative{
+                "-1"{"àla. ji weesu"}
+                "0"{"tay ci àla. ji"}
+                "1"{"àla. jiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} àla."}
+                }
+                past{
+                    other{"{0} àla. ci ginaaw"}
+                }
+            }
+        }
+        wed-short{
+            relative{
+                "-1"{"àlla. ji weesu"}
+                "0"{"tay ci àlla. ji"}
+                "1"{"àlla. jiy ñëw"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} àlla."}
+                }
+                past{
+                    other{"{0} àlla. ci ginaaw"}
+                }
+            }
         }
         week{
             dn{"ayu-bis"}
+            relative{
+                "-1"{"ayu-bis bi weesu"}
+                "0"{"ayu-bis bii"}
+                "1"{"ayu-bis biy ñëw"}
+            }
+            relativePeriod{"ayu-bisu {0}"}
+            relativeTime{
+                future{
+                    other{"fileek {0} ayi-bis"}
+                }
+                past{
+                    other{"{0} ayi-bis ci ginaaw"}
+                }
+            }
         }
         week-narrow{
             dn{"ayu-b."}
+            relative{
+                "-1"{"ayu-b bi wees"}
+                "0"{"ayu-b bii"}
+                "1"{"ayu-b. ñëw"}
+            }
+            relativePeriod{"ayu-b. {0}"}
+            relativeTime{
+                future{
+                    other{"fileek {0} ayi-b."}
+                }
+                past{
+                    other{"{0} ayi-b. ci ginaaw"}
+                }
+            }
         }
         week-short{
             dn{"ayu-b."}
+            relative{
+                "-1"{"ayu-b bi wees"}
+                "0"{"ayu-b bii"}
+                "1"{"ayu-b. ñëw"}
+            }
+            relativePeriod{"ayu-b. {0}"}
+            relativeTime{
+                future{
+                    other{"fileek {0} ayi-b."}
+                }
+                past{
+                    other{"{0} ayi-b. ci ginaaw"}
+                }
+            }
+        }
+        weekOfMonth{
+            dn{"ayu-bisu weer"}
+        }
+        weekOfMonth-narrow{
+            dn{"ayu-b. we."}
+        }
+        weekOfMonth-short{
+            dn{"ayu-b. we."}
         }
         weekday{
             dn{"bisu ayu-bis"}
         }
+        weekdayOfMonth{
+            dn{"bisu ayu-bisu weer wi"}
+        }
+        weekdayOfMonth-narrow{
+            dn{"bisu ayu-b. weer"}
+        }
+        weekdayOfMonth-short{
+            dn{"bisu ayu-b. weer"}
+        }
         year{
             dn{"at"}
+            relative{
+                "-1"{"daaw"}
+                "0"{"ren"}
+                "1"{"dewen"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} at"}
+                }
+                past{
+                    other{"{0} at ci ginaaw"}
+                }
+            }
         }
         year-narrow{
             dn{"at."}
+            relative{
+                "-1"{"daaw"}
+                "0"{"ren"}
+                "1"{"dewen"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} at"}
+                }
+                past{
+                    other{"{0} at ci ginaaw"}
+                }
+            }
         }
         year-short{
             dn{"at."}
+            relative{
+                "-1"{"daaw"}
+                "0"{"ren"}
+                "1"{"dewen"}
+            }
+            relativeTime{
+                future{
+                    other{"fileek {0} at"}
+                }
+                past{
+                    other{"{0} at ci ginaaw"}
+                }
+            }
         }
         zone{
             dn{"goxu waxtu"}
         }
+        zone-narrow{
+            dn{"gox"}
+        }
+        zone-short{
+            dn{"goxu"}
+        }
     }
     listPattern{
         standard{
diff --git a/icu4c/source/data/locales/wo_SN.txt b/icu4c/source/data/locales/wo_SN.txt
index e5265ff..e51b978 100644
--- a/icu4c/source/data/locales/wo_SN.txt
+++ b/icu4c/source/data/locales/wo_SN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 wo_SN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/xh.txt b/icu4c/source/data/locales/xh.txt
index 443fb1f..20ea24f 100644
--- a/icu4c/source/data/locales/xh.txt
+++ b/icu4c/source/data/locales/xh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 xh{
     AuxExemplarCharacters{"[]"}
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}
@@ -20,7 +21,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             AmPmMarkers{
diff --git a/icu4c/source/data/locales/xh_ZA.txt b/icu4c/source/data/locales/xh_ZA.txt
index 14b2845..7c1c426 100644
--- a/icu4c/source/data/locales/xh_ZA.txt
+++ b/icu4c/source/data/locales/xh_ZA.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 xh_ZA{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/xog.txt b/icu4c/source/data/locales/xog.txt
index 40389a0..68a7811 100644
--- a/icu4c/source/data/locales/xog.txt
+++ b/icu4c/source/data/locales/xog.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 xog{
     ExemplarCharacters{"[a b c d e f g h i j k l m n o p q r s t u v w x y z]"}
     ExemplarCharactersIndex{"[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]"}
@@ -10,7 +11,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/xog_UG.txt b/icu4c/source/data/locales/xog_UG.txt
index eda268a..5c6d39c 100644
--- a/icu4c/source/data/locales/xog_UG.txt
+++ b/icu4c/source/data/locales/xog_UG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 xog_UG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/yav.txt b/icu4c/source/data/locales/yav.txt
index 883abc8..c3b2162 100644
--- a/icu4c/source/data/locales/yav.txt
+++ b/icu4c/source/data/locales/yav.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yav{
     AuxExemplarCharacters{"[g j q r x z]"}
     ExemplarCharacters{
@@ -22,7 +23,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/yav_CM.txt b/icu4c/source/data/locales/yav_CM.txt
index 5c08086..e7174b5 100644
--- a/icu4c/source/data/locales/yav_CM.txt
+++ b/icu4c/source/data/locales/yav_CM.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yav_CM{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/yi.txt b/icu4c/source/data/locales/yi.txt
index 02c0249..117bf24 100644
--- a/icu4c/source/data/locales/yi.txt
+++ b/icu4c/source/data/locales/yi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yi{
     AuxExemplarCharacters{"[\u200E\u200F]"}
     ExemplarCharacters{
@@ -29,7 +30,6 @@
         native{"latn"}
         traditional{"hebr"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/yi_001.txt b/icu4c/source/data/locales/yi_001.txt
index 9317d46..3cb8688 100644
--- a/icu4c/source/data/locales/yi_001.txt
+++ b/icu4c/source/data/locales/yi_001.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yi_001{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/yo.txt b/icu4c/source/data/locales/yo.txt
index 1698638..b5e1d9f 100644
--- a/icu4c/source/data/locales/yo.txt
+++ b/icu4c/source/data/locales/yo.txt
@@ -1,10 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yo{
     AuxExemplarCharacters{"[c q v x z]"}
     ExemplarCharacters{
-        "[a á à b d e é è ẹ {ẹ\u0301} {ẹ\u0300} f g {gb} h i í ì j k l m n o ó ò ọ {ọ"
-        "\u0301} {ọ\u0300} p r s ṣ t u ú ù w y]"
+        "[a á à b d e é è ẹ {ẹ\u0301} {ẹ\u0300} f g {gb} h i í ì j k l m n ń o ó ò ọ "
+        "{ọ\u0301} {ọ\u0300} p r s ṣ t u ú ù w y]"
     }
     ExemplarCharactersIndex{"[A B D E F G H I J K L M N O P R S T U W Y]"}
     ExemplarCharactersPunctuation{"[\\- ‐ ‑ – — , ; \\: ! ? . … ' ‘ ’ \u0022 “ ” ( ) @ * / \\& # † ‡ ′ ″]"}
@@ -62,6 +63,7 @@
                 }
             }
             symbols{
+                approximatelySign{"dáàṣì"}
                 decimal{"."}
                 exponential{"E"}
                 group{","}
@@ -84,7 +86,6 @@
         }
         minimumGroupingDigits{"1"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -222,15 +223,6 @@
                         "Ẹ",
                         "À",
                     }
-                    short{
-                        "Àìkú",
-                        "Ajé",
-                        "Ìsẹ́gun",
-                        "Ọjọ́rú",
-                        "Ọjọ́bọ",
-                        "Ẹtì",
-                        "Àbámẹ́ta",
-                    }
                     wide{
                         "Ọjọ́ Àìkú",
                         "Ọjọ́ Ajé",
@@ -251,15 +243,6 @@
                         "Ẹ",
                         "À",
                     }
-                    short{
-                        "Àìkú",
-                        "Ajé",
-                        "Ìsẹ́gun",
-                        "Ọjọ́rú",
-                        "Ọjọ́bọ",
-                        "Ẹtì",
-                        "Àbámẹ́ta",
-                    }
                     wide{
                         "Àìkú",
                         "Ajé",
@@ -301,7 +284,7 @@
                     "Lehin Kristi",
                 }
                 wide%variant{
-                    "BCE",
+                    "Sáájú ìgbà mímọ̀",
                     "CE",
                 }
             }
@@ -539,11 +522,26 @@
                 "2"{"òtúùnla"}
             }
         }
+        dayOfYear{
+            dn{"Ọjọ́ inú ọdún"}
+        }
+        dayOfYear-narrow{
+            dn{"Ọjọ́ inú ọd."}
+        }
+        dayOfYear-short{
+            dn{"Ọjọ́ inú ọd."}
+        }
         dayperiod{
             dn{"Àárọ̀/ọ̀sán"}
         }
         era{
-            dn{"Ìgbà"}
+            dn{"sáà"}
+        }
+        era-narrow{
+            dn{"Sáà"}
+        }
+        era-short{
+            dn{"sáà"}
         }
         hour{
             dn{"Wákàtí"}
@@ -598,13 +596,32 @@
                 "0"{"ọ̀sẹ̀ yìí"}
                 "1"{"ọ́sẹ̀ tó ń bọ̀"}
             }
+            relativePeriod{"ọ̀sẹ̀ ti {0}"}
         }
         week-short{
-            relativePeriod{"ọ̀ṣẹ̀ {0}"}
+            relativePeriod{"ọ̀sẹ̀ ti {0}"}
+        }
+        weekOfMonth{
+            dn{"Ọṣẹ̀ inú Oṣù"}
         }
         weekday{
             dn{"Ọjọ́ tó wà láàárín ọ̀sẹ̀"}
         }
+        weekday-narrow{
+            dn{"ọjọ́ inú ọṣẹ̀."}
+        }
+        weekday-short{
+            dn{"ọjọ́ inú ọṣẹ̀."}
+        }
+        weekdayOfMonth{
+            dn{"ọjọ́ ọṣẹ̀ inú oṣù"}
+        }
+        weekdayOfMonth-narrow{
+            dn{"ọjọ́ ọṣẹ̀ inú oṣù"}
+        }
+        weekdayOfMonth-short{
+            dn{"ọjọ́ ọṣẹ̀ inú oṣù"}
+        }
         year{
             dn{"Ọdún"}
             relative{
@@ -613,6 +630,13 @@
                 "1"{"Àmọ́dún"}
             }
         }
+        year-short{
+            relative{
+                "-1"{"Ọdún tó kọjá"}
+                "0"{"Ọdún yìí"}
+                "1"{"Ọdún tó ńbọ̀"}
+            }
+        }
         zone{
             dn{"Agbègbè àkókò"}
         }
diff --git a/icu4c/source/data/locales/yo_BJ.txt b/icu4c/source/data/locales/yo_BJ.txt
index fb4ecbf..a202350 100644
--- a/icu4c/source/data/locales/yo_BJ.txt
+++ b/icu4c/source/data/locales/yo_BJ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yo_BJ{
     ExemplarCharacters{
         "[a á à b d e é è ɛ {ɛ\u0301} {ɛ\u0300} f g {gb} h i í ì j k l m n o ó ò ɔ {ɔ"
@@ -47,6 +48,9 @@
                     }
                 }
             }
+            symbols{
+                approximatelySign{"dáàshì"}
+            }
         }
         minimalPairs{
             ordinal{
@@ -57,7 +61,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         gregorian{
             AmPmMarkers{
@@ -92,15 +95,6 @@
                         "Ɛ",
                         "À",
                     }
-                    short{
-                        "Àìkú",
-                        "Ajé",
-                        "Ìsɛ́gun",
-                        "Ɔjɔ́rú",
-                        "Ɔjɔ́bɔ",
-                        "Ɛtì",
-                        "Àbámɛ́ta",
-                    }
                     wide{
                         "Ɔjɔ́ Àìkú",
                         "Ɔjɔ́ Ajé",
@@ -121,15 +115,6 @@
                         "Ɛ",
                         "À",
                     }
-                    short{
-                        "Àìkú",
-                        "Ajé",
-                        "Ìsɛ́gun",
-                        "Ɔjɔ́rú",
-                        "Ɔjɔ́bɔ",
-                        "Ɛtì",
-                        "Àbámɛ́ta",
-                    }
                     wide{
                         "Àìkú",
                         "Ajé",
@@ -157,6 +142,12 @@
                     }
                 }
             }
+            eras{
+                wide%variant{
+                    "Sáájú ìgbà mímɔ̀",
+                    "CE",
+                }
+            }
             monthNames{
                 format{
                     abbreviated{
@@ -289,6 +280,15 @@
                 "1"{"Ɔ̀la"}
             }
         }
+        dayOfYear{
+            dn{"Ɔjɔ́ inú ɔdún"}
+        }
+        dayOfYear-narrow{
+            dn{"Ɔjɔ́ inú ɔd."}
+        }
+        dayOfYear-short{
+            dn{"Ɔjɔ́ inú ɔd."}
+        }
         dayperiod{
             dn{"Àárɔ̀/ɔ̀sán"}
         }
@@ -341,13 +341,32 @@
                 "0"{"ɔ̀sɛ̀ yìí"}
                 "1"{"ɔ́sɛ̀ tó ń bɔ̀"}
             }
+            relativePeriod{"ɔ̀sɛ̀ ti {0}"}
         }
         week-short{
-            relativePeriod{"ɔ̀shɛ̀ {0}"}
+            relativePeriod{"ɔ̀sɛ̀ ti {0}"}
+        }
+        weekOfMonth{
+            dn{"Ɔshɛ̀ inú Oshù"}
         }
         weekday{
             dn{"Ɔjɔ́ tó wà láàárín ɔ̀sɛ̀"}
         }
+        weekday-narrow{
+            dn{"ɔjɔ́ inú ɔshɛ̀."}
+        }
+        weekday-short{
+            dn{"ɔjɔ́ inú ɔshɛ̀."}
+        }
+        weekdayOfMonth{
+            dn{"ɔjɔ́ ɔshɛ̀ inú oshù"}
+        }
+        weekdayOfMonth-narrow{
+            dn{"ɔjɔ́ ɔshɛ̀ inú oshù"}
+        }
+        weekdayOfMonth-short{
+            dn{"ɔjɔ́ ɔshɛ̀ inú oshù"}
+        }
         year{
             dn{"Ɔdún"}
             relative{
@@ -356,6 +375,13 @@
                 "1"{"Àmɔ́dún"}
             }
         }
+        year-short{
+            relative{
+                "-1"{"Ɔdún tó kɔjá"}
+                "0"{"Ɔdún yìí"}
+                "1"{"Ɔdún tó ńbɔ̀"}
+            }
+        }
     }
     measurementSystemNames{
         UK{"Ilɛ̀ Gɛ̀ɛ́sì"}
diff --git a/icu4c/source/data/locales/yo_NG.txt b/icu4c/source/data/locales/yo_NG.txt
index 59beef1..48eaf8b 100644
--- a/icu4c/source/data/locales/yo_NG.txt
+++ b/icu4c/source/data/locales/yo_NG.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yo_NG{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/yue.txt b/icu4c/source/data/locales/yue.txt
index 4a941b8..1f6cbcf 100644
--- a/icu4c/source/data/locales/yue.txt
+++ b/icu4c/source/data/locales/yue.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue{
     AuxExemplarCharacters{
         "[乍 仂 伏 佐 侶 僳 兆 兌 兹 凸 别 券 勳 卑 卞 占 叶 嘅 堤 墎 壤 奥 孜 峇 嶼 巽 栗 楔 涅 渾 澎 灘 燦 狄 琳 瑚 甫 碑"
@@ -16,60 +17,67 @@
     ExemplarCharacters{
         "[一 丁 七 丈-不 丑 且 世 丘 丙 丟 並 中 串 丸 丹 主 乃 久 么 之 乎 乏 乖 乘 乙 九 也 乾 亂 了 予 事 二 于 云 互 五"
         " 井 些 亞 亡 交-亦 亨 享 京 亮 人 什 仁 仇 今 介 仍 仔 他 付 仙 代-以 仰 仲 件 任 份 企 伊 伍 伐 休 伙 伯 估 伴 伸"
-        " 似 伽 但 佈 佉 位-住 佔 何 余 佛 作 你 佩 佳 使 來 例 供 依 侯 侵 便 係-俄 俊 俗 保 俠 信 修 俱 俾 個 倍 們 倒 候"
-        " 倚 借 倫 值 假 偉 偏 做 停 健 側-偷 傑 備 傢 傣 傲 傳 傷 傻 傾 僅 像 僑 僧 價 儀 億 儒 儘 優 允 元-充 兇-光 克 免"
-        " 兒 兔 入 內-兩 八-兮 共 兵-典 兼 冊 再 冒 冠 冬 冰 冷 准 凌 凝 凡 凰 凱 出 函 刀 分 切 刊 列 初 判 別 利 刪 到 制"
-        " 刷 刺 刻 則 剌 前 剛 剩 剪 副 割 創 劃 劇 劉 劍 力 功 加 助-劫 勁 勇 勉 勒 動 務 勝 勞 勢 勤 勵 勸 勿 包 匈 化 北"
-        " 匹 區 十 千 升 午 半 卒-協 南 博 卜 卡 卯-危 即 卷 卻 厄 厘 厚 原 厭 厲 去 參 又 及 友 反 叔 取 受 口-另 只-叭 可"
-        " 台 史 右 司 吃 各 合-吊 同-后 吐-吒 君 吝-吠 否 吧 含 吳 吵 吸 吹 吾 呀 呂 呆 告 呢 周 味 呵 呼 命 和 咖 咦 咧 咪"
-        " 咬 咱 哀 品 哇-哉 哎 員 哥 哦 哩 哪 哭 哲 唉 唐 唔 唬 售 唯 唱 唷 唸 商 啊 問 啟 啡 啥 啦 啪 喀 喂 善 喇 喊 喔 喜"
-        " 喝 喬 單 喵 嗎 嗚 嗨 嗯 嘆 嘉 嘗 嘛 嘴 嘻 嘿 器 噴 嚇 嚴 囉 四 回 因 困 固 圈 國 圍 園 圓 圖 團 圜 土 在 圭 地 圾"
-        " 址 均 坎 坐 坡 坤 坦 坪 垂 垃 型 埃 城 埔 域 執 培 基 堂 堅 堆 堡 堪 報 場 塊 塔 塗 塞 填 塵 境 增 墨 墮 壁 壇 壓"
-        " 壘 壞 壢 士 壬 壯 壽 夏 夕 外 多 夜 夠 夢 夥 大 天-夫 央 失 夷 夸 夾 奇-奉 奎 奏 契 奔 套 奧 奪 奮 女 奴 奶 她 好"
-        " 如 妙 妝 妥 妨 妮 妳 妹 妻 姆 姊 始 姐 姑 姓 委 姿 威 娃 娘 娛 婁 婆 婚 婦 媒 媽 嫌 嫩 子 孔 字 存 孝 孟 季 孤 孩"
-        " 孫 學 它 宅 宇-安 宋 完 宏 宗-宜 客-室 宮 害 家 容 宿 寂 寄-密 富 寒 寞 察 寢 實-審 寫 寬 寮 寵 寶 封 射 將 專 尊"
-        " 尋 對-小 少 尖 尚 尤 就 尺 尼 尾 局 屁 居 屆 屋 屏 展 屠 層 屬 山 岡 岩 岸 峰 島 峽 崇 崙 崴 嵐 嶺 川 州 巡 工-巨"
-        " 巫 差 己-巴 巷 市 布 希 帕 帖 帛 帝 帥 師 席 帳 帶 常 帽 幅 幕 幣 幫 干-年 幸 幹 幻-幾 庇 床 序 底 店 庚 府 度 座"
-        " 庫 庭 康 庸 廉 廖 廠 廢 廣 廳 延 廷 建 弄 式 引 弗 弘 弟 弦 弱 張 強 彈 彊 彌 彎 彝 彞 形 彥 彩 彬 彭 彰 影 役 彼"
-        " 往 征 待 很 律 後 徐-徒 得 從 復 微 徵 德 徹 心 必 忌 忍 志-忙 忠 快 念 忽 怎 怒 怕 怖 思 怡 急 性 怨 怪 恆 恐 恢"
-        " 恥 恨 恩 恭 息 恰 悅 悉 悔 悟 悠 您 悲 悶 情 惑 惜 惠 惡 惱 想 惹 愁 愈 愉 意 愚 愛 感 慈 態 慕 慘 慢 慣 慧 慮 慰"
-        " 慶 慾 憂 憐 憑 憲 憶 憾 懂 應 懶 懷 懼 戀 戈 戊 戌 成-戒 或 截 戰 戲 戴 戶 房-扁 扇 手 才 扎 打 托 扣 扥 扭 扯 批"
-        " 找-技 抄 把 抓 投 抗 折 披 抬 抱 抵 抹 抽 拆 拉 拋 拍 拏 拒 拔 拖 招 拜 括 拳 拼 拾 拿 持 指 按 挑 挖 挪 振 挺 捐"
-        " 捕 捨 捲 捷 掃 授 掉 掌 排 掛 採 探 接 控 推 措 描 提 插 揚 換 握 揮 援 損 搖 搜 搞 搬 搭 搶 摘 摩 摸 撐 撒 撞 撣"
-        " 撥 播 撾 撿 擁 擇 擊 擋 操 擎 擔 據 擠 擦 擬 擴 擺 擾 攝 支 收 改 攻 放 政 故 效 敍 敏 救 敗-教 敝 敢 散 敦 敬 整"
-        " 敵 數 文 斐 斗 料 斯 新 斷 方 於 施 旁 旅 旋 族 旗 既 日 旦 早 旭 旺 昂 昆 昇 昌 明 昏 易 星 映 春 昨 昭 是 時 晉"
-        " 晒 晚 晨 普 景 晴 晶 智 暑 暖 暗 暫 暴 曆 曉 曰 曲 更 書 曼 曾-最 會 月 有 朋 服 朗 望 朝 期 木 未-札 朱 朵 杉 李"
-        " 材 村 杜 束 杯-東 松 板 析 林 果 枝 架 柏 某 染 柔 查 柬 柯 柳 柴 校 核 根 格 桃 案 桌 桑 梁 梅 條 梨 梯 械 梵 棄"
-        " 棉 棋 棒 棚 森 椅 植 椰 楊 楓 楚 業 極 概 榜 榮 構 槍 樂 樓 標 樞 模 樣 樹 橋 機 橫 檀 檔 檢 欄 權 次 欣 欲 欺 欽"
-        " 款 歉 歌 歐 歡-武 歲 歷 歸 死 殊 殘 段 殺 殼 毀 毅 母 每 毒 比 毛 毫 氏 民 氣 水 永 求 汗 汝 江-污 汪 汶 決 汽 沃"
-        " 沈 沉 沒 沖 沙 河 油 治 沿 況 泉 泊 法 泡 波 泥 注 泰 泳 洋 洗 洛 洞 洩 洪 洲 活 洽 派 流 浦 浩 浪 浮 海 涇-涉 涯"
-        " 液 涵 涼 淑 淚 淡 淨 深 混 淺 清 減 渡 測 港 游 湖 湯 源 準 溝 溪 溫 滄 滅 滋 滑 滴 滾 滿 漂 漏 演 漠 漢 漫 漲 漸"
-        " 潔 潘 潛 潮 澤 澳 激 濃 濟 濤 濫 濱 瀏 灌 灣 火 灰 災 炎 炮 炸 為 烈 烏 烤 無 焦 然 煙 煞 照 煩 熊 熟 熱 燃 燈 燒"
-        " 營 爆 爐 爛 爪 爬 爭 爵 父 爸 爺 爽 爾 牆-版 牌 牙 牛 牠 牧 物 牲 特 牽 犧 犯 狀 狂 狐 狗 狠 狼 猛 猜 猴 猶 獄 獅"
-        " 獎 獨 獲 獸 獻 玄 率 玉 王 玩 玫 玲 玻 珊 珍 珠 珥 班 現 球 理 琉 琪 琴 瑙 瑜 瑞 瑟 瑤 瑪 瑰 環 瓜 瓦 瓶 甘 甚 甜"
-        " 生 產 用 田-申 男 甸 界 留 畢 略 番 畫 異 當 疆 疏 疑 疼 病 痕 痛 痴 瘋 療 癡 癸 登-百 的 皆 皇 皮 盃 益 盛 盜 盟"
-        " 盡 監 盤 盧 目 盲 直 相 盼 盾 省 眉 看 真 眠 眼 眾 睛 睡 督 瞧 瞭 矛 矣 知 短 石 砂 砍 研 砲 破 硬 碎 碗 碟 碧 碩"
-        " 碰 確 碼 磁 磨 磯 礎 礙 示 社 祕 祖 祚 祛 祝 神 祥 票 祿 禁 禍-福 禪 禮 秀 私 秋 科 秒 秘 租 秤 秦 移 稅 程 稍 種"
-        " 稱 稿 穆 穌 積 穩 究 穹 空 穿 突 窗 窩 窮 窶 立 站 竟 章 童 端 競 竹 笑 笛 符 笨 第 筆 等 筋 答 策 简 算 管 箭 箱"
-        " 節 範 篇 築 簡 簫 簽 簿 籃 籌 籍 籤 米 粉 粗 粵 精 糊 糕 糟 系 糾 紀 約 紅 納 紐 純 紙-紛 素 索 紫 累 細 紹 終 組"
-        " 結 絕 絡 給 統 絲 經 綜 綠 維 綱 網 緊 緒 線 緣 編 緩 緬 緯 練 縛 縣 縮 縱 總 績 繁 繆 織 繞 繪 繳 繼 續 缸 缺 罕"
-        " 罪 置 罰 署 罵 罷 羅 羊 美 羞 群 義 羽 翁 習 翔 翰 翹 翻 翼 耀 老 考 者 而 耍 耐 耗 耳 耶 聊 聖 聚 聞 聯 聰 聲 職"
-        " 聽 肉 肚 股 肥 肩 肯 育 背 胎 胖 胞 胡 胸 能 脆 脫 腓 腔 腦 腰 腳 腿 膽 臉 臘 臣 臥 臨 自 臭 至 致 臺 與-舊 舌 舍"
-        " 舒 舞 舟 航 般 船 艦 良 色 艾 芝 芬 花 芳 若 苦 英 茅 茫 茲 茶 草 荒 荷 荼 莉 莊 莎 莫 菜 菩 華 菲 萄 萊 萬 落 葉"
-        " 著 葛 葡 蒂 蒙 蒲 蒼 蓋 蓮 蔕 蔡 蔣 蕭 薄 薦 薩 薪 藉 藍 藏 藝 藤 藥 蘆 蘇 蘭 虎 處 虛 號 虧 蛇 蛋 蛙 蜂 蜜 蝶 融"
-        " 螢 蟲 蟹 蠍 蠻 血 行 術 街 衛 衝 衡 衣 表 袋 被 裁 裂 裕 補 裝 裡 製 複 褲 西 要 覆 見 規 視 親 覺 覽 觀 角 解 觸"
-        " 言 訂 計 訊 討 訓 託 記 訥 訪 設 許 訴 註 証 評 詞 詢 試 詩 話-詳 誇 誌 認 誓 誕 語 誠 誤 說 誰 課 誼 調 談 請 諒"
-        " 論 諸 諺 諾 謀 謂 講 謝 證 識 譜 警 譯 議 護 譽 讀 變 讓 讚 谷 豆 豈 豐 象 豪 豬 貌 貓 貝 貞 負-貢 貨 貪-責 貴 買"
-        " 費 貼 賀 資 賈 賓 賜 賞 賢-賤 賦 質 賭 賴 賺 購 賽 贈 贊 贏 赤 赫 走 起 超 越 趕 趙 趣 趨 足 跌 跎 跑 距 跟 跡 路"
-        " 跳 踏 踢 蹟 蹤 躍 身 躲 車 軌 軍 軒 軟 較 載 輔 輕 輛 輝 輩 輪 輯 輸 轉 轟 辛 辦 辨 辭 辯-農 迅 迎 近 返 迦 迪 迫"
-        " 述 迴 迷 追 退 送 逃 逆 透 逐 途 這-逛 逝 速 造 逢 連 週 進 逸 逼 遇 遊 運 遍 過 道-違 遙 遜 遠 適 遭 遮 遲 遷 選"
-        " 遺 避-邁 還 邊 邏 那 邦 邪 邱 郎 部 郭 郵 都 鄂 鄉 鄭 鄰 酉 配 酒 酷 酸 醉 醒 醜 醫 采 釋-量 金 針 釣 鈴 鉢 銀 銅"
-        " 銖 銘 銳 銷 鋒 鋼 錄 錢 錦 錫 錯 鍋 鍵 鍾 鎊 鎖 鎮 鏡 鐘 鐵 鑑 長 門 閃 閉 開 閏 閒 間 閣 閱 闆 闊 闍 闐 關 闡 防"
-        " 阻 阿 陀 附 降 限 院-除 陪 陰 陳 陵-陸 陽 隆 隊 階 隔 際 障 隨 險 隱 隻 雄-集 雉 雖 雙 雜 雞 離 難 雨 雪 雲 零 雷"
-        " 電 需 震 霍 霧 露 霸 霹 靂 靈 青 靖 靜 非 靠 面 革 靼 鞋 韃 韋 韓 音 韻 響 頁 頂 項 順 須 預 頑 頓 頗 領 頞 頭 頻"
-        " 顆 題 額 顏 願 類 顧 顯 風 飄 飛 食 飯 飲 飽 飾 餅 養 餐 餘 館 首 香 馬 駐 駕 駛 騎 騙 騷 驅 驗 驚 骨 體 高 髮 鬆"
-        " 鬥 鬧 鬱 鬼 魁 魂 魅 魔 魚 魯 鮮 鳥 鳳 鳴 鴻 鵝 鷹 鹿 麗 麥 麵 麻 麼 黃 黎 黑 默 點 黨 鼓 鼠 鼻 齊 齋 齒 齡 龍 龜"
-        "]"
+        " 似 伽 但 佈 佉 位-住 佔 何 余 佛 作 你 佩 佳 使 來 例 供 依 侯 侵 便 係-俄 俊 俏 俗 保 俠 信 修 俱 俾 倉 個 倍 們"
+        " 倒 候 倚 借 倫 值 假 偉 偏 做 停 健 側-偷 偽 傅 傑 傘 備 傢 傣 傲 傳 傷 傻 傾 僅 像 僑 僧 價 儀 億 儒 儘 優 允 元"
+        "-充 兇-光 克 免 兒 兔 入 內-兩 八-兮 共 兵-典 兼 冊 再 冒 冠 冬 冰 冷 准 凋-凍 凝 凡 凰 凱 出 函 刀 分 切 刊 列 初"
+        " 判 別 刨-刪 刮 到 制 刷 刺 刻 剃 則 剌 前 剛 剩 剪 副 割 創 劃 劇 劉 劍 力 功 加 助-劫 勁 勇 勉 勒 動 務 勝 勞 勢"
+        " 勤 勵 勸 勾 勿 包 匈 化 北 匯 匹 區 十 千 升 午 半 卒-協 南 博 卜 卡 卯-危 即 卷 卹 卻 厄 厘 厚 原 厭 厲 去 參 又"
+        " 及 友 反 叔 取 受 口-另 只-叭 可 台 史 右 司 吃 各 合-吊 同-后 吐-吒 君 吝-吠 否 吧 含 吳 吵 吸 吹 吾 呀 呂 呆 告"
+        " 呢 周 味 呵 呼 命 和 咖 咦 咧 咪 咬 咱 哀 品 哇-哉 哎 員 哥 哦 哩 哪 哭 哲 唇 唉 唐 唔 唬 售 唯 唱 唵 唷 唸 商 啊"
+        " 問 啟 啡 啤-啦 啪 喀 喂 善 喇 喊 喔 喜 喝 喪 喬 單 喲 喵 嗎 嗚 嗨 嗯 嘆 嘉 嘗 嘛 嘴 嘻 嘿 噁 噓 器 噴 嚇 嚏 嚴 囉"
+        " 四 回 因 困 固 圈 國 圍 園 圓 圖 團 圜 土 在 圭 地 圾 址 均 坎 坐 坑 坡 坤 坦 坪 垂 垃 型 埃 城 埔 域 執 培 基 堂"
+        " 堅 堆 堡 堪 報 場 塊 塔 塗 塞 填 塵 境 墅 墓 增 墟 墨 墮 墳 壁 壇 壓 壘 壞 壢 壩 士 壬 壯 壺 壽 夏 夕 外 多 夜 夠"
+        " 夢 夥 大 天-夫 央 失 夷 夸 夾 奇-奉 奎 奏 契 奔 套 奧 奪 奮 女 奴 奶 她 好 如 妙 妝 妥 妨 妮 妳 妹 妻 姆 姊 始 姐"
+        " 姑 姓 委 姿 威 娃 娘 娛 婁 婆 婚 婦 媒 媽 嫌 嫩 子 孔 孕 字 存 孝 孟 季 孤 孩 孫 孵 學 它 宅 宇-安 宋 完 宏 宗-宜"
+        " 客-室 宮 害 家 容 宿 寂 寄-密 富 寒 寞 察 寢 實-審 寫 寬 寮 寵 寶 寺 封 射 將 專 尊 尋 對-小 少 尖 尚 尤 就 尺 尼"
+        " 尾-屁 居 屆 屋 屍 屏 屑 展 屠 層 屬 山 岡 岩 岸 峰 島 峽 崇 崙 崴 嵐 嶺 川 州 巡 工-巨 巫 差 己-巴 巷 市 布 希 帕"
+        " 帖 帚 帛 帝 帥 師 席 帳 帶 常 帽 幅 幕 幟 幣 幫 干-年 幸 幹 幻-幾 庇 床 序 底 店 庚 府 度 座 庫 庭 康 庸 廈 廉 廖"
+        " 廟 廠 廢 廣 廳 延 廷 建 弄 式 引 弗 弘 弟 弦 弱 張 強 彈 彊 彌 彎 彝 彞 形 彥 彩 彬 彭 彰 影 役 彼 往 征 待 很 律"
+        " 後 徐-徒 得 從 復 微 徵 德 徹 心 必 忌 忍 志-忙 忠 忡 快 念 忽 怎 怒 怕 怖 思 怡 急 性 怨 怪 恆 恐 恢 恥 恨 恩 恭"
+        " 息 恰 悅 悉 悔 悟 悠 您 悲 悶 情 惑 惜 惠 惡 惱 想 惹 愁 愈 愉 意 愚 愛 感 慈 態 慕 慘 慢 慣 慧 慮 慰 慶 慾 憂 憊"
+        " 憐 憑 憲 憶 憾 懂 應 懨 懶 懷 懼 戀 戈 戊 戌 成-戒 或 截 戰 戲 戴 戶 房-扁 扇 手 才 扎 打 托 扣 扥 扭-扯 批 找-技"
+        " 抄 把 抓 投 抗 折 披 抬 抱 抵 抹 抽 拆 拉 拋 拍 拏 拒 拔 拖 招 拜 括 拳 拼 拾 拿 持 指 按 挑 挖 挪 振 挺 捏 捐 捕"
+        " 捧 捨 捲 捷 掃 授 掉 掌 排 掛 掠-探 接 控 推 措 掰 描 提 插 揚 換 握 揮 援 揹 損 搏 搖 搜 搞 搬 搭 搶 摀 摘 摩 摸"
+        " 撐 撒 撕 撞 撣 撥 播 撲 撾 撿 擁 擇 擊 擋 操 擎 擔 據 擠 擦 擬 擴 擺 擾 攀 攝 攤 支 收 改 攻 放 政 故 效 敍 敏 救"
+        " 敗-教 敝 敞 敢 散 敦 敬 整 敵 數 文 斐 斑 斗 料 斜 斧 斯 新 斷 方 於 施 旁 旅 旋 族 旗 既 日 旦 早 旭 旺 昂 昆 昇"
+        " 昌 明 昏 易 星 映 春 昨 昭 是 時 晉 晒 晚 晨 普 景 晴 晶 智 暑 暖 暗 暫 暮 暴 曆 曇 曉 曬 曰 曲-更 書 曼 曾-最 會"
+        " 月 有 朋 服 朔 朗 望 朝 期 木 未-札 朱 朵 杉 李 材 村 杖 杜 束 杯-東 松 板 析 林 果 枝 枯 架 柏 某 染 柔 查 柬 柯"
+        " 柳 柴 栓 校 核 根 格 栽 桃 案 桌 桑 梁 梅 條 梨 梯 械 梵 棄 棉 棋 棍 棒 棕 棚 森 棺 椅 植 椒 椰 楊 楓 楚 業 極 概"
+        " 榜 榮 構-槍 樂 樓 標 樞 模 樣 樹 橄 橇 橋 橘 橙 機 橫 檀 檔 檢 檬 檸 櫚 櫻 欄 權 欖 欠 次 欣 欲 欺 欽 款 歉 歌 歐"
+        " 歡-武 歲 歷 歸 死 殊 残 殘 殭 段 殺 殼 毀 毅 母 每 毒 比 毛 毫 氏 民 氣 水 永 汁 求 汗 汝 江-污 汪 汶 決 汽 沃 沈"
+        " 沉 沒 沖 沙 沫 沮 河 油 治 沿 況 泉 泊 法 泡-泣 泥 注 泰 泳 洋 洗 洛 洞 洩 洪 洲 活 洽 派 流 浣 浦 浩 浪 浮 浴 海"
+        " 涇-涉 涎 涮 涯 液 涵 涼 淇 淋 淑 淚 淡 淨 深 混 淺 清 減 渡 測 港 游 湖 湘 湯 源 準 溜 溝 溪 溫 滄 滅 滋 滑 滴 滾"
+        " 滿 漂 漏 演 漠 漢 漫 漲 漸 漿 潔 潘 潛 潮 澡 澤 澳 激 濃 濕 濟 濤 濫 濱 瀏 灌 灣 火 灰 災 炎 炮 炸 為 烈 烏 烘 烤"
+        " 烹 焊 焙 無 焦 焰 然 煙 煞 照 煩 煮 熊 熟 熱 燃 燈 燒 燙 營 爆 爍 爐 爛 爪 爬 爭 爵 父 爸 爺 爽 爾 牆-版 牌 牙 牛"
+        " 牠 牧 物 牲 特 牽 犀 犧 犬 犯 狀 狂 狐 狗 狠 狡 狸 狼 猛 猜 猩 猴 猶 猾 猿 獄 獅 獎 獨 獲 獸 獺 獻 獾 玄 率 玉 王"
+        " 玩 玫 玲 玻 珊 珍 珠 珥 班 現 球 理 琉 琪 琴 瑙 瑜 瑞 瑟 瑤 瑪 瑰 環 瓜 瓢 瓦 瓶 甕 甘 甚 甜 生 產 用 田-申 男 甸"
+        " 界 留 畢 略 番 畫 異 當 疆 疏 疑 疲 疼 疾 病 痕 痛 痴 瘋 瘦 瘧 療 癡 癸 登-百 皂 的 皆 皇 皮 皿 盃 盆 盈 益 盔 盛"
+        " 盜 盟 盡 監-盥 盧 目 盲 直 相 盼 盾 省 眉 看 真 眠 眼 眾 睏 睛 睡 督 瞇 瞌 瞧 瞪 瞭 矛 矣 知 短 石 砂 砍 研 砲 破"
+        " 硬 碎 碗 碟 碧 碩 碰 確 碼 磁 磚 磨 磯 礎 礙 礫 示 社 祈 祕 祖 祚 祛 祝 神 祥 票 祿 禁 禍-福 禪 禮 禱 禿-私 秋 科"
+        " 秒 秘 租 秤 秦 移 稅 程 稍 種 稱 稻 稿 穀 穆 穌 積 穩 究 穹 空 穿 突 窄 窗 窩 窮 窶 立 站 竟 章 童 端 競 竹 竿 笑"
+        " 笛 符 笨 第 筆 等 筋 答 策 筷 简 箏 箔 算 管 箭 箱 節 範 篇 築 篷 簡 簫 簽 簿 籃 籌 籍 籠 籤 米 粉 粗 粵 精 糊 糕"
+        " 糖 糟 糥 系 糾 紀 約 紅 紉 納 紐 純 紙-紛 素 索 紫 紮-細 紳 紹 終 組 結 絕 絡 給 統 絲 經 綜 綠 維 綱 網 綽 綿 緊"
+        " 緒 線 緣 編 緩 緬 緯 練 縛 縣 縫 縮 縱 總 績 繁 繃 繆 織 繞 繡 繩 繪 繳 繼 續 纖 缸 缺 罈 罐 罕 罩 罪 置 罰 署 罵"
+        " 罷 羅 羊 美 羞 群 義 羽 翁 習 翔 翰 翹 翻 翼 耀 老 考 者 而 耍 耐 耗 耳 耶 聊 聖 聚 聞 聯 聰 聲 職 聽 聾 肉 肌 肚"
+        " 股 肥 肩 肯 育 肺 背 胎 胖 胞 胡 胸 能 脆 脈 脖 脫 腐 腓 腔 腦 腰 腳 腹 腿 膚 膠 膽 臂 臉 臘 臟 臣 臥 臨 自 臭 至"
+        " 致 臺 與-舊 舌 舍 舒 舞 舟 航 般 船 艦 良 色 艾 芙 芝 芬 芭 花 芳 芽 苣 若 苦 英 茄 茅 茫 茲 茵 茶 茸 草 荒 荷 荼"
+        " 莉 莊 莎 莓 莖 莫 菇 菌 菜 菩 華 菲 萄 萊 萎 萬 萵 落 葉 著 葛 葡 葵 蒂 蒙 蒜 蒲 蒸 蒼 蓄 蓉 蓋 蓮 蔔 蔕 蔡 蔣 蔥"
+        " 蔬 蕉 蕭 蕾 薄 薑 薦 薩 薪 薯 藉 藍 藏 藝 藤 藥 蘆 蘇 蘋 蘑 蘭 蘿 虎 處 虛 號 虧 蚊 蚓 蚯 蛇 蛋 蛙 蜂 蜜 蜥 蜴 蝙"
+        " 蝟 蝠 蝦 蝶 螂 螃 融 螞 螢 螺 蟀 蟄 蟋 蟑 蟲 蟳 蟹 蟻 蠅 蠍 蠕 蠣 蠻 血 行 術 街 衛 衝 衡 衣 表 衫 袋 袍 被 裁 裂"
+        " 裏 裕 補 裝 裡 裱 裹 製 複 褐 褲 襪 襯 西 要 覆 見 規 視 親 覺 覽 觀 角 解 觸 言 訂 計 訊 討 訓 託 記 訝 訥 訪 設"
+        " 許 訴 診-証 評 詞 詢 試 詩 話-詳 誇 誌 認 誓 誕 語 誠 誤 說 誰 課 誼 調 談 請 諒 論 諸 諺 諾 謀 謂 謎 講 謝 證 識"
+        " 譜 警 譯 議 護 譽 讀 變 讓 讚 谷 豆 豈 豎 豐 豔 象 豪 豬 豹 貌 貓 貝 貞 負-貢 貨 貪-責 貴 買 費 貼 賀 資 賈 賓 賜"
+        " 賞 賢-賤 賦 質 賭 賴 賺 購 賽 贈 贊 贏 贛 赤 赫 走 起 超 越 趕 趙 趣 趨 足 跆 跌 跎 跑 距 跟 跡 跪 路 跳 踏 踢 踩"
+        " 蹟 蹤 躍 身 躲 車 軌 軍 軒 軟 軸 較 載 輔 輕 輛 輝 輩 輪 輯 輸 轉 轎 轟 辛 辜 辣 辦 辨 辭 辯-農 迅 迎 近 返 迦 迪"
+        " 迫 述 迴 迷 追 退 送 逃 逆 透 逐 途 這-逛 逝 速 造 逢 連 週 進 逸 逼 遇 遊 運 遍 過 道-違 遙 遜 遠 適 遭 遮 遲 遷"
+        " 選 遺 避-邁 還 邊 邏 那 邦 邪 邱 郎 部 郭 郵 都 鄂 鄉 鄙 鄭 鄰 酉 配 酒 酪 酷 酸 醉 醒 醜 醫 醬 采 釋-量 金 針 釣"
+        " 鈴 鉅 鉢 鉤 銀 銅 銖 銘 銳 銷 鋁 鋒 鋼 錄 錢 錦 錨 錫 錯 錶 鍊 鍋 鍵 鍾 鎊 鎖 鎮 鏈 鏡 鏢 鐘 鐡 鐵 鑑 鑿 長 門 閃"
+        " 閉 開 閏 閒 間 閣 閩 閱 闆 闊 闍 闐 關 闡 阱 防 阻 阿 陀 附 降 限 院-除 陪 陰 陳 陵-陸 陽 隆 隊 階 隔 際 障 隨 險"
+        " 隱 隻 雄-集 雉 雌 雖 雙 雜 雞 離 難 雨 雪 雲 零 雷 電 需 震 霍 霜 霧 露 霸 霹 靂 靈 青 靖 静 靜 非 靠 面 革 靴 靼"
+        " 鞋 鞭 韃 韋 韓 音 韻 響 頁 頂 項 順 須 頌 預 頑 頓 頗 領 頞 頭 頸 頻 顆 題 額 顏 願 顛 類 顧 顯 風 颱 飄 飆 飛 食"
+        " 飪 飯 飲 飽 飾 餃 餅 養 餌 餐 餘 餚 館 餾 首 香 馬 駐 駕 駛 駝 駱 騎 騙 騷 驅 驕 驗 驚 骨 體 高 髮 鬆 鬍 鬥 鬧 鬱"
+        " 鬼 魁 魂 魅 魔 魚 魯 魷 鮑 鮮 鯊 鯨 鱷 鳥 鳩 鳳 鳴 鴨 鴻 鵝 鵡 鶴 鷹 鸚 鹽 鹿 麗 麥 麵 麻 麼 黃 黎 黑 默 黛 點 黨"
+        " 鼓 鼠 鼬 鼻 齊 齋 齒 齡 龍 龐 龜]"
     }
     ExemplarCharactersIndex{"[一 丁 丈 不 且 丞 並 串 乘 乾 亂 亭 傀 僎 僵 儐 償 儳 儷 儻 叢 嚴 囌 囑 廳]"}
     ExemplarCharactersNumbers{"[\\- ‑ , . % ‰ + 0 1 2 3 4 5 6 7 8 9 〇 一 七 三 九 二 五 八 六 四]"}
@@ -262,7 +270,6 @@
         native{"hanidec"}
         traditional{"hant"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/yue_CN.txt b/icu4c/source/data/locales/yue_CN.txt
index 26d4356..2a3cc8a 100644
--- a/icu4c/source/data/locales/yue_CN.txt
+++ b/icu4c/source/data/locales/yue_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_CN{
     "%%ALIAS"{"yue_Hans_CN"}
 }
diff --git a/icu4c/source/data/locales/yue_HK.txt b/icu4c/source/data/locales/yue_HK.txt
index 29a7459..7bce3c5 100644
--- a/icu4c/source/data/locales/yue_HK.txt
+++ b/icu4c/source/data/locales/yue_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_HK{
     "%%ALIAS"{"yue_Hant_HK"}
 }
diff --git a/icu4c/source/data/locales/yue_Hans.txt b/icu4c/source/data/locales/yue_Hans.txt
index b519b0a..b98ec1e 100644
--- a/icu4c/source/data/locales/yue_Hans.txt
+++ b/icu4c/source/data/locales/yue_Hans.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_Hans{
     %%Parent{"root"}
     AuxExemplarCharacters{
@@ -260,7 +261,6 @@
         native{"hanidec"}
         traditional{"hans"}
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/yue_Hans_CN.txt b/icu4c/source/data/locales/yue_Hans_CN.txt
index 05356bc..6b6a215 100644
--- a/icu4c/source/data/locales/yue_Hans_CN.txt
+++ b/icu4c/source/data/locales/yue_Hans_CN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_Hans_CN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/yue_Hant.txt b/icu4c/source/data/locales/yue_Hant.txt
index 8f39812..f1fb01c 100644
--- a/icu4c/source/data/locales/yue_Hant.txt
+++ b/icu4c/source/data/locales/yue_Hant.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_Hant{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/yue_Hant_HK.txt b/icu4c/source/data/locales/yue_Hant_HK.txt
index b49f94b..bd5e48e 100644
--- a/icu4c/source/data/locales/yue_Hant_HK.txt
+++ b/icu4c/source/data/locales/yue_Hant_HK.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_Hant_HK{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/zgh.txt b/icu4c/source/data/locales/zgh.txt
index ec0e3f8..5490791 100644
--- a/icu4c/source/data/locales/zgh.txt
+++ b/icu4c/source/data/locales/zgh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zgh{
     ExemplarCharacters{"[ⴰ ⴱ ⴳ {ⴳⵯ} ⴷ ⴹ ⴻ ⴼ ⴽ {ⴽⵯ} ⵀ ⵃ ⵄ ⵅ ⵇ ⵉ ⵊ ⵍ ⵎ ⵏ ⵓ ⵔ ⵕ ⵖ ⵙ ⵚ ⵛ ⵜ ⵟ ⵡ ⵢ ⵣ ⵥ]"}
     ExemplarCharactersIndex{"[ⴰ ⴱ ⴳ ⴷ ⴹ ⴻ ⴼ ⴽ ⵀ ⵃ ⵄ ⵅ ⵇ ⵉ ⵊ ⵍ ⵎ ⵏ ⵓ ⵔ ⵕ ⵖ ⵙ ⵚ ⵛ ⵜ ⵟ ⵡ ⵢ ⵣ ⵥ]"}
@@ -32,7 +33,6 @@
         }
         minimumGroupingDigits{"1"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
diff --git a/icu4c/source/data/locales/zgh_MA.txt b/icu4c/source/data/locales/zgh_MA.txt
index f8dc2cf..ba84989 100644
--- a/icu4c/source/data/locales/zgh_MA.txt
+++ b/icu4c/source/data/locales/zgh_MA.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zgh_MA{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/zh.txt b/icu4c/source/data/locales/zh.txt
index 0cc5d8b..d81eecc 100644
--- a/icu4c/source/data/locales/zh.txt
+++ b/icu4c/source/data/locales/zh.txt
@@ -1,12 +1,21 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh{
     AuxExemplarCharacters{
-        "[乒 乓 仂 仓 伞 侣 傈 傣 僳 冥 凉 刨 匕 卑 卞 厘 厦 厨 吕 呣 唇 啤 啮 喱 嗅 噘 噢 坝 堤 墟 奎 妆 婴 媚 宅 寺 尬 尴"
-        " 屑 屿 巽 巾 弓 彗 惊 戟 扔 扰 扳 抛 挂 捂 摇 撅 撤 杆 杖 柜 柱 栗 栽 桶 棍 棕 棺 楔 楠 榈 槟 橙 洒 浆 涌 淇 滕 滚"
-        " 滩 灾 烛 烟 焰 煎 犬 猫 瑚 瓢 甫 皱 盆 盔 盲 眨 眯 瞌 矿 碑 祈 祭 祷 禄 稻 竿 笼 筒 篷 粟 粮 纠 纬 缆 缎 耸 脚 舔"
-        " 舵 艇 艮 芽 苜 苞 菇 菱 葫 葵 蒸 蓿 蔽 薯 蘑 蚂 蛛 蜗 蜘 蜡 蝎 蝴 螃 裹 谍 谬 豚 账 跤 踪 躬 轴 辐 迹 郁 鄙 酢 钉"
-        " 钥 钮 钯 铂 铅 铛 锄 锑 锚 锤 镑 闺 阱 隧 雕 霾 靴 靶 鞠 颠 馏 驼 骆 髦 魁 鲤 鲸 鳄 鸽]"
+        "[乒 乓 乳 仂 仓 伞 伪 侣 傈 傣 僳 僵 冥 冻 净 凉 凸 刨 刮 剃 剽 劈 勺 匕 匠 匮 卑 卜 卞 卦 厕 厘 厦 厨 叮 吕 吴 呕"
+        " 呣 咒 哨 哺 唇 啤 啮 喱 嗅 嘘 嘟 噘 噜 噢 嚏 坏 坝 垫 堤 堵 墅 墓 墙 墟 壳 壶 奎 奸 妆 姜 娥 婴 媚 孪 宅 宠 宫 寺"
+        " 尬 尴 尸 屈 屎 屑 屡 履 屿 岩 巽 巾 帆 帚 帜 帧 庇 庵 弓 彗 御 徽 怜 恒 恤 恳 悬 悯 惊 惫 愤 戟 扔 扰 扳 抖 抛 拄"
+        " 拇 拐 挂 挎 捂 捏 掘 掠 揭 搏 携 摇 撅 撕 撤 攀 敞 斑 斧 昙 晕 朔 杆 杖 杠 枯 柄 柑 柜 柠 柩 柱 柿 栓 栗 栽 桔 桶"
+        " 梨 棍 棕 棺 椒 楔 楠 榄 榈 槌 槟 槿 横 橄 橇 橘 橙 橡 檬 汁 沐 沫 泪 泵 洁 洒 浆 浣 涂 涌 涎 涕 涩 淇 渗 湘 滕 滚"
+        " 滩 澡 灾 炽 烘 烙 烛 烟 烹 焊 焙 焰 煎 熏 燥 犀 犄 犬 犸 狡 狸 猎 猕 猩 猫 猬 猾 猿 獭 獾 瑚 瓢 瓮 甫 畜 疟 皂 皱"
+        " 皿 盆 盐 盔 盗 盥 盲 眨 眩 眯 睿 瞌 瞒 瞪 矿 砖 砸 碑 祈 祭 祷 禄 禽 秃 稻 稽 窃 窄 窥 竖 竿 笆 笺 笼 筐 筒 筝 筷"
+        " 箸 篓 篱 篷 粑 粟 粥 粮 粽 絮 纠 纫 纬 纱 纹 绒 绣 绳 绷 缄 缆 缎 缝 罩 羹 翱 耸 聋 肌 肢 肺 脏 脚 腋 腕 腮 膀 膏"
+        " 舔 舵 艇 艮 艳 芙 芽 苜 苞 苣 苹 茄 莓 莴 菇 菌 菠 菱 萎 萝 葩 葫 葬 葱 葵 蒜 蒲 蒸 蓄 蓿 蔬 蔽 蕉 蕾 薯 蘑 蚂 蚊"
+        " 蚓 蚝 蚯 蛆 蛎 蛐 蛛 蛰 蛾 蜗 蜘 蜡 蜥 蜴 蝇 蝎 蝙 蝠 蝴 螂 螃 螺 蟀 蟋 蟑 蠕 衫 衬 袜 裙 裹 褂 讶 讽 诊 诱 谍 谎"
+        " 谚 谬 豚 豹 账 贷 赣 趾 跆 跛 跤 跨 跪 踪 蹄 蹈 蹦 蹬 躬 躺 轴 轿 辐 辣 迹 郁 鄙 酢 酥 酪 酱 醺 钉 钞 钥 钩 钮 钯"
+        " 钳 铂 铅 铛 铰 锄 锑 锚 锤 锯 镐 镑 镖 闺 闽 阱 隧 雀 雌 雕 霜 霾 靴 靶 鞠 颈 颜 颠 颤 飓 饪 饵 饺 馍 馏 驰 驼 骂"
+        " 骄 骆 骰 骷 骼 髅 髦 鬈 魁 鱿 鲤 鲨 鲸 鳄 鸢 鸵 鸽 鹉 鹦 黏 黛 鼬 龇]"
     }
     Ellipsis{
         final{"{0}…"}
@@ -705,7 +714,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -808,13 +816,13 @@
                     m{"ah:mm至h:mm"}
                 }
                 hmv{
-                    a{"vah:mm至ah:mm"}
-                    h{"vah:mm至h:mm"}
-                    m{"vah:mm至h:mm"}
+                    a{"v ah:mm至ah:mm"}
+                    h{"v ah:mm至h:mm"}
+                    m{"v ah:mm至h:mm"}
                 }
                 hv{
-                    a{"vah时至ah时"}
-                    h{"vah时至h时"}
+                    a{"v ah时至ah时"}
+                    h{"v ah时至h时"}
                 }
                 y{
                     y{"Gy–y年"}
@@ -1074,11 +1082,11 @@
                     m{"HH:mm至HH:mm"}
                 }
                 Hmv{
-                    H{"HH:mm至HH:mm v"}
-                    m{"HH:mm至HH:mm v"}
+                    H{"v HH:mm至HH:mm"}
+                    m{"v HH:mm至HH:mm"}
                 }
                 Hv{
-                    H{"HH–HH v"}
+                    H{"v HH–HH"}
                 }
                 M{
                     M{"L至L"}
@@ -1116,13 +1124,13 @@
                     m{"ah:mm至h:mm"}
                 }
                 hmv{
-                    a{"vah:mm至ah:mm"}
-                    h{"vah:mm至h:mm"}
-                    m{"vah:mm至h:mm"}
+                    a{"v ah:mm至ah:mm"}
+                    h{"v ah:mm至h:mm"}
+                    m{"v ah:mm至h:mm"}
                 }
                 hv{
-                    a{"vah至ah时"}
-                    h{"vah至h时"}
+                    a{"v ah至ah时"}
+                    h{"v ah至h时"}
                 }
                 y{
                     y{"rU至rU"}
@@ -1838,6 +1846,44 @@
                     h{"Bh:mm至h:mm"}
                     m{"Bh:mm至h:mm"}
                 }
+                Gy{
+                    G{"Gy年 – Gy年"}
+                    y{"Gy年–y年"}
+                }
+                GyM{
+                    G{"GGGGGy-MM – GGGGGy-MM"}
+                    M{"GGGGGy-MM – y-MM"}
+                    y{"GGGGGy-MM – y-MM"}
+                }
+                GyMEd{
+                    G{"GGGGGy-MM-ddE – GGGGGy-MM-ddE"}
+                    M{"GGGGGy-MM-ddE – y-MM-ddE"}
+                    d{"GGGGGy-MM-ddE – y-MM-ddE"}
+                    y{"GGGGGy-MM-ddE – y-MM-ddE"}
+                }
+                GyMMM{
+                    G{"Gy年MMM – Gy年MMM"}
+                    M{"Gy年MMM–MMM"}
+                    y{"Gy年MMM – y年MMM"}
+                }
+                GyMMMEd{
+                    G{"Gy年MMMd日E – Gy年MMMd日E"}
+                    M{"Gy年MMMd日E – MMMd日E"}
+                    d{"Gy年MMMd日E – MMMd日E"}
+                    y{"Gy年MMMd日E – y年MMMd日E"}
+                }
+                GyMMMd{
+                    G{"Gy年MMMd日 – Gy年MMMd日"}
+                    M{"Gy年MMMd日 – MMMd日"}
+                    d{"Gy年MMMd日–d日"}
+                    y{"Gy年MMMd日 – y年MMMd日"}
+                }
+                GyMd{
+                    G{"GGGGGy-MM-dd – GGGGGy-MM-dd"}
+                    M{"GGGGGy-MM-dd – y-MM-dd"}
+                    d{"GGGGGy-MM-dd – y-MM-dd"}
+                    y{"GGGGGy-MM-dd – y-MM-dd"}
+                }
                 Hmv{
                     H{"v HH:mm – HH:mm"}
                     m{"v HH:mm – HH:mm"}
@@ -1878,13 +1924,13 @@
                     m{"ah:mm至h:mm"}
                 }
                 hmv{
-                    a{"vah:mm至ah:mm"}
-                    h{"vah:mm至h:mm"}
-                    m{"vah:mm至h:mm"}
+                    a{"v ah:mm至ah:mm"}
+                    h{"v ah:mm至h:mm"}
+                    m{"v ah:mm至h:mm"}
                 }
                 hv{
-                    a{"vah时至ah时"}
-                    h{"vah时至h时"}
+                    a{"v ah时至ah时"}
+                    h{"v ah时至h时"}
                 }
                 y{
                     y{"Gy–y年"}
@@ -1945,10 +1991,10 @@
                 "y年M月d日",
                 "y年M月d日",
                 "y/M/d",
+                "{1}{0}",
+                "{1}{0}",
                 "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
+                "{1}{0}",
                 "{1} {0}",
             }
             appendItems{
@@ -2176,6 +2222,44 @@
                     h{"Bh:mm至h:mm"}
                     m{"Bh:mm至h:mm"}
                 }
+                Gy{
+                    G{"Gy年 – Gy年"}
+                    y{"Gy年–y年"}
+                }
+                GyM{
+                    G{"GGGGGy-MM – GGGGGy-MM"}
+                    M{"GGGGGy-MM – y-MM"}
+                    y{"GGGGGy-MM – y-MM"}
+                }
+                GyMEd{
+                    G{"GGGGGy-MM-ddE – GGGGGy-MM-ddE"}
+                    M{"GGGGGy-MM-ddE – y-MM-ddE"}
+                    d{"GGGGGy-MM-ddE – y-MM-ddE"}
+                    y{"GGGGGy-MM-ddE – y-MM-ddE"}
+                }
+                GyMMM{
+                    G{"Gy年MMM – Gy年MMM"}
+                    M{"Gy年MMM–MMM"}
+                    y{"Gy年MMM – y年MMM"}
+                }
+                GyMMMEd{
+                    G{"Gy年MMMd日E – Gy年MMMd日E"}
+                    M{"Gy年MMMd日E – MMMd日E"}
+                    d{"Gy年MMMd日E – MMMd日E"}
+                    y{"Gy年MMMd日E – y年MMMd日E"}
+                }
+                GyMMMd{
+                    G{"Gy年MMMd日 – Gy年MMMd日"}
+                    M{"Gy年MMMd日 – MMMd日"}
+                    d{"Gy年MMMd–d日"}
+                    y{"Gy年MMMd日 – y年MMMd日"}
+                }
+                GyMd{
+                    G{"GGGGGy-MM-dd – GGGGGy-MM-dd"}
+                    M{"GGGGGy-MM-dd – y-MM-dd"}
+                    d{"GGGGGy-MM-dd – y-MM-dd"}
+                    y{"GGGGGy-MM-dd – y-MM-dd"}
+                }
                 H{
                     H{"HH–HH"}
                 }
@@ -2226,13 +2310,13 @@
                     m{"ah:mm至h:mm"}
                 }
                 hmv{
-                    a{"vah:mm至ah:mm"}
-                    h{"vah:mm至h:mm"}
-                    m{"vah:mm至h:mm"}
+                    a{"v ah:mm至ah:mm"}
+                    h{"v ah:mm至h:mm"}
+                    m{"v ah:mm至h:mm"}
                 }
                 hv{
-                    a{"vah时至ah时"}
-                    h{"vah时至h时"}
+                    a{"v ah时至ah时"}
+                    h{"v ah时至h时"}
                 }
                 y{
                     y{"y–y年"}
@@ -2504,13 +2588,13 @@
                     m{"ah:mm至h:mm"}
                 }
                 hmv{
-                    a{"vah:mm至ah:mm"}
-                    h{"vah:mm至h:mm"}
-                    m{"vah:mm至h:mm"}
+                    a{"v ah:mm至ah:mm"}
+                    h{"v ah:mm至h:mm"}
+                    m{"v ah:mm至h:mm"}
                 }
                 hv{
-                    a{"vah时至ah时"}
-                    h{"vah时至h时"}
+                    a{"v ah时至ah时"}
+                    h{"v ah时至h时"}
                 }
                 y{
                     y{"Gy–y年"}
@@ -2736,13 +2820,13 @@
                     m{"ah:mm至h:mm"}
                 }
                 hmv{
-                    a{"vah:mm至ah:mm"}
-                    h{"vah:mm至h:mm"}
-                    m{"vah:mm至h:mm"}
+                    a{"v ah:mm至ah:mm"}
+                    h{"v ah:mm至h:mm"}
+                    m{"v ah:mm至h:mm"}
                 }
                 hv{
-                    a{"vah时至ah时"}
-                    h{"vah时至h时"}
+                    a{"v ah时至ah时"}
+                    h{"v ah时至h时"}
                 }
                 y{
                     y{"Gy–y年"}
@@ -2974,7 +3058,7 @@
                 "Gy年M月d日EEEE",
                 "Gy年M月d日",
                 "Gy年M月d日",
-                "Gyy-MM-dd",
+                "Gy-MM-dd",
                 "{1} {0}",
                 "{1} {0}",
                 "{1} {0}",
@@ -3846,7 +3930,7 @@
                 "Gy年M月d日EEEE",
                 "Gy年M月d日",
                 "Gy年M月d日",
-                "Gyy/M/d",
+                "Gy/M/d",
                 "{1} {0}",
                 "{1} {0}",
                 "{1} {0}",
@@ -3943,13 +4027,13 @@
                     m{"ah:mm至h:mm"}
                 }
                 hmv{
-                    a{"vah:mm至ah:mm"}
-                    h{"vah:mm至h:mm"}
-                    m{"vah:mm至h:mm"}
+                    a{"v ah:mm至ah:mm"}
+                    h{"v ah:mm至h:mm"}
+                    m{"v ah:mm至h:mm"}
                 }
                 hv{
-                    a{"vah时至ah时"}
-                    h{"vah时至h时"}
+                    a{"v ah时至ah时"}
+                    h{"v ah时至h时"}
                 }
                 y{
                     y{"Gy–y年"}
@@ -4031,7 +4115,7 @@
         ideographic_desc_characters{"表意文字描述符"}
         japanese_kana{"日语假名"}
         kanbun{"汉文训读"}
-        kanji{"日文汉字"}
+        kanji{"日语汉字"}
         keycap{"按键"}
         leftwards_arrows{"向左箭头"}
         leftwards_rightwards_arrows{"左右箭头"}
diff --git a/icu4c/source/data/locales/zh_CN.txt b/icu4c/source/data/locales/zh_CN.txt
index c915161..0136d26 100644
--- a/icu4c/source/data/locales/zh_CN.txt
+++ b/icu4c/source/data/locales/zh_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_CN{
     "%%ALIAS"{"zh_Hans_CN"}
 }
diff --git a/icu4c/source/data/locales/zh_HK.txt b/icu4c/source/data/locales/zh_HK.txt
index fe72a0e..c34c98f 100644
--- a/icu4c/source/data/locales/zh_HK.txt
+++ b/icu4c/source/data/locales/zh_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_HK{
     "%%ALIAS"{"zh_Hant_HK"}
 }
diff --git a/icu4c/source/data/locales/zh_Hans.txt b/icu4c/source/data/locales/zh_Hans.txt
index 72c418e..58a5386 100644
--- a/icu4c/source/data/locales/zh_Hans.txt
+++ b/icu4c/source/data/locales/zh_Hans.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hans{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/zh_Hans_CN.txt b/icu4c/source/data/locales/zh_Hans_CN.txt
index b5b3a4e..0cbe0f0 100644
--- a/icu4c/source/data/locales/zh_Hans_CN.txt
+++ b/icu4c/source/data/locales/zh_Hans_CN.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hans_CN{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/zh_Hans_HK.txt b/icu4c/source/data/locales/zh_Hans_HK.txt
index 6b1a299..c5fb37e 100644
--- a/icu4c/source/data/locales/zh_Hans_HK.txt
+++ b/icu4c/source/data/locales/zh_Hans_HK.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hans_HK{
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -116,10 +116,10 @@
                 "y年M月d日",
                 "y年M月d日",
                 "d/M/yy",
+                "{1}{0}",
+                "{1}{0}",
                 "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
+                "{1}{0}",
                 "{1} {0}",
             }
             availableFormats{
diff --git a/icu4c/source/data/locales/zh_Hans_MO.txt b/icu4c/source/data/locales/zh_Hans_MO.txt
index 0bdf7a9..8f5185a 100644
--- a/icu4c/source/data/locales/zh_Hans_MO.txt
+++ b/icu4c/source/data/locales/zh_Hans_MO.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hans_MO{
-    Version{"37"}
     calendar{
         chinese{
             DateTimePatterns{
@@ -101,10 +101,10 @@
                 "y年M月d日",
                 "y年M月d日",
                 "d/M/yy",
+                "{1}{0}",
+                "{1}{0}",
                 "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
+                "{1}{0}",
                 "{1} {0}",
             }
             availableFormats{
diff --git a/icu4c/source/data/locales/zh_Hans_SG.txt b/icu4c/source/data/locales/zh_Hans_SG.txt
index d6e4fef..c681f1d 100644
--- a/icu4c/source/data/locales/zh_Hans_SG.txt
+++ b/icu4c/source/data/locales/zh_Hans_SG.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hans_SG{
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -115,10 +115,10 @@
                 "y年M月d日",
                 "y年M月d日",
                 "dd/MM/yy",
+                "{1}{0}",
+                "{1}{0}",
                 "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
-                "{1} {0}",
+                "{1}{0}",
                 "{1} {0}",
             }
             availableFormats{
diff --git a/icu4c/source/data/locales/zh_Hant.txt b/icu4c/source/data/locales/zh_Hant.txt
index cce66a2..0d12259 100644
--- a/icu4c/source/data/locales/zh_Hant.txt
+++ b/icu4c/source/data/locales/zh_Hant.txt
@@ -1,12 +1,20 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant{
     %%Parent{"root"}
     AuxExemplarCharacters{
-        "[乍 乳 仂 伏 佐 侶 僳 兆 兌 兹 划 别 券 勳 匕 匙 匣 卑 卞 占 叉 叶 吻 哺 嘟 噘 堤 墎 壤 奥 妖 嬰 孜 峇 嶼 巽 巾 帆"
-        " 廁 廚 弋 弓 懸 戟 扳 捂 摔 暈 栗 框 桶 桿 楔 櫃 涅 渾 澎 煎 燕 燦 燭 牡 狄 琳 瑚 甫 疊 皺 盒 眨 眩 碑 礁 筒 簍 糰"
-        " 紋 紗 纏 纜 羯 聳 肖 艇 芒 苗 茨 菱 蓬 虹 蚩 蛛 蜀 蜘 蝴 蝸 蠟 裘 裙 謬 豚 跨 躬 遞 酋 釘 鈔 鈕 鉛 鎚 鎬 鐺 鑰 鑽"
-        " 隴 霄 鞠 餵 骰 骷 髏 鯉 鳶]"
+        "[乍 乳 仂 伏 佐 侶 俏 倉 偽 傅 傘 僳 兆 兌 兹 凋 凍 凸 划 刨 别 刮 券 剃 勳 勾 匕 匙 匣 匯 卑 卞 占 卹 叉 叶 吻 哺"
+        " 唇 唵 啤 喪 喲 嘟 噁 噓 噘 嚏 坑 堤 墅 墎 墓 墟 墳 壤 壩 壺 奥 妖 嬰 孕 孜 孵 寺 尿 屍 屑 峇 嶼 巽 巾 帆 帚 幟 廁"
+        " 廈 廚 廟 弋 弓 忡 憊 懨 懸 戟 扮 扳 捂 捏 捧 掠 掰 揹 搏 摀 摔 撕 撲 攀 攤 敞 斑 斜 斧 暈 暮 曇 曬 曳 朔 杖 枯 栓"
+        " 栗 栽 框 桶 桿 棍 棕 棺 椒 楔 槌 橄 橇 橘 橙 檬 檸 櫃 櫚 櫻 欖 欠 残 殭 汁 沫 沮 泣 浣 浴 涅 涎 涮 淇 淋 渾 湘 溜"
+        " 漿 澎 澡 濕 灘 烘 烹 焊 焙 焰 煎 煮 燕 燙 燦 燭 爍 牡 犀 犬 狄 狡 狸 猩 猾 猿 獺 獾 琳 瑚 瓢 甕 甫 疊 疲 疾 瘦 瘧"
+        " 皂 皺 皿 盆 盈 盒 盔 盥 眨 眩 睏 瞇 瞌 瞪 碑 磚 礁 礫 祈 禱 禿 稻 穀 窄 竿 筒 筷 箏 箔 篷 簍 籠 糖 糰 紉 紋 紗 紮"
+        " 紳 綽 綿 縫 繃 繡 繩 纏 纖 纜 罈 罐 罩 羯 聳 聾 肌 肖 肺 脈 脖 腐 腹 膚 膠 臂 臟 艇 芒 芙 芭 芽 苗 苣 茄 茨 茵 茸"
+        " 莓 莖 菇 菌 菱 萎 萵 葵 蒜 蒸 蓄 蓉 蓬 蔔 蔥 蔬 蕉 蕾 薑 薯 蘋 蘑 蘿 虹 蚊 蚓 蚩 蚯 蛛 蜀 蜘 蜥 蜴 蝙 蝟 蝠 蝦 蝴"
+        " 蝸 螂 螃 螞 螺 蟀 蟄 蟋 蟑 蟳 蟻 蠅 蠕 蠟 蠣 衫 袍 裏 裘 裙 裱 裹 褐 襪 襯 訝 診 謎 謬 豎 豔 豚 豹 贛 跆 跨 跪 踩"
+        " 躬 軸 轎 辜 辣 遞 鄙 酋 酪 醬 釘 鈔 鈕 鉅 鉛 鉤 鋁 錨 錶 鍊 鎚 鎬 鏈 鏢 鐺 鑰 鑽 鑿 閩 阱 隴 雀 雌 霄 霜 静 靴 鞠"
+        " 鞭 頌 頸 顛 颱 飆 飪 餃 餌 餚 餵 餾 駝 駱 驕 骰 骷 髏 鬍 魷 鮑 鯉 鯊 鯨 鱷 鳩 鳶 鴨 鵡 鶴 鸚 鹽 黛 鼬 龐]"
     }
     Ellipsis{
         final{"{0}…"}
@@ -1376,7 +1384,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -4494,6 +4501,53 @@
                 }
             }
             intervalFormats{
+                Bh{
+                    B{"Bh時 – Bh時"}
+                    h{"Bh–h時"}
+                }
+                Bhm{
+                    B{"Bh:mm – Bh:mm"}
+                    h{"Bh:mm–h:mm"}
+                    m{"Bh:mm–h:mm"}
+                }
+                Gy{
+                    G{"Gy – Gy"}
+                    y{"Gy–y"}
+                }
+                GyM{
+                    G{"GGGGGy-MM – GGGGGy-MM"}
+                    M{"GGGGGy-MM – y-MM"}
+                    y{"GGGGGy-MM – y-MM"}
+                }
+                GyMEd{
+                    G{"GGGGGy-MM-dd, E – GGGGGy-MM-dd, E"}
+                    M{"GGGGGy-MM-dd, E – y-MM-dd, E"}
+                    d{"GGGGGy-MM-dd, E – y-MM-dd, E"}
+                    y{"GGGGGy-MM-dd, E – y-MM-dd, E"}
+                }
+                GyMMM{
+                    G{"Gy年MMM – Gy年MMM"}
+                    M{"Gy年MMM–MMM"}
+                    y{"Gy年MMM – y年MMM"}
+                }
+                GyMMMEd{
+                    G{"Gy年MMMd日, E – Gy年MMMd日, E"}
+                    M{"Gy年MMMd日, E – MMMd日, E"}
+                    d{"Gy年MMMd日, E – MMMd日, E"}
+                    y{"Gy年MMMd日, E – y年MMMd日, E"}
+                }
+                GyMMMd{
+                    G{"Gy年MMMd日 – Gy年MMMd日"}
+                    M{"Gy年MMMd日 – MMMd日"}
+                    d{"Gy年MMMd–d日"}
+                    y{"Gy年MMMd日 – y年MMMd日"}
+                }
+                GyMd{
+                    G{"GGGGGy-MM-dd – GGGGGy-MM-dd"}
+                    M{"GGGGGy-MM-dd – y-MM-dd"}
+                    d{"GGGGGy-MM-dd – y-MM-dd"}
+                    y{"GGGGGy-MM-dd – y-MM-dd"}
+                }
                 H{
                     H{"HH – HH"}
                 }
diff --git a/icu4c/source/data/locales/zh_Hant_HK.txt b/icu4c/source/data/locales/zh_Hant_HK.txt
index 39e1dcb..f450361 100644
--- a/icu4c/source/data/locales/zh_Hant_HK.txt
+++ b/icu4c/source/data/locales/zh_Hant_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant_HK{
     Ellipsis{
         final{"{0}⋯"}
@@ -91,7 +92,6 @@
             }
         }
     }
-    Version{"37"}
     calendar{
         buddhist{
             availableFormats{
diff --git a/icu4c/source/data/locales/zh_Hant_MO.txt b/icu4c/source/data/locales/zh_Hant_MO.txt
index 670cffc..1f5fac8 100644
--- a/icu4c/source/data/locales/zh_Hant_MO.txt
+++ b/icu4c/source/data/locales/zh_Hant_MO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant_MO{
     %%Parent{"zh_Hant_HK"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/zh_Hant_TW.txt b/icu4c/source/data/locales/zh_Hant_TW.txt
index 9eba0ed..c2d8b10 100644
--- a/icu4c/source/data/locales/zh_Hant_TW.txt
+++ b/icu4c/source/data/locales/zh_Hant_TW.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant_TW{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/locales/zh_MO.txt b/icu4c/source/data/locales/zh_MO.txt
index 6565bf7..c6b2148 100644
--- a/icu4c/source/data/locales/zh_MO.txt
+++ b/icu4c/source/data/locales/zh_MO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_MO{
     "%%ALIAS"{"zh_Hant_MO"}
 }
diff --git a/icu4c/source/data/locales/zh_SG.txt b/icu4c/source/data/locales/zh_SG.txt
index bf27773..14136c3 100644
--- a/icu4c/source/data/locales/zh_SG.txt
+++ b/icu4c/source/data/locales/zh_SG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_SG{
     "%%ALIAS"{"zh_Hans_SG"}
 }
diff --git a/icu4c/source/data/locales/zh_TW.txt b/icu4c/source/data/locales/zh_TW.txt
index 9372c50..c54ccbf 100644
--- a/icu4c/source/data/locales/zh_TW.txt
+++ b/icu4c/source/data/locales/zh_TW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_TW{
     "%%ALIAS"{"zh_Hant_TW"}
 }
diff --git a/icu4c/source/data/locales/zu.txt b/icu4c/source/data/locales/zu.txt
index d9c8729..e5d9265 100644
--- a/icu4c/source/data/locales/zu.txt
+++ b/icu4c/source/data/locales/zu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zu{
     AuxExemplarCharacters{
         "[á à ă â å ä ã ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ú ù ŭ û ü ū ÿ"
@@ -220,7 +221,6 @@
         minimumGroupingDigits{"1"}
         native{"latn"}
     }
-    Version{"37"}
     calendar{
         generic{
             DateTimePatterns{
@@ -1787,8 +1787,8 @@
                 "['ʼ՚᾽᾿’']",
                 "[%٪﹪%]",
                 "[؉‰]",
-                "[\$﹩$$]",
-                "[£₤]",
+                "[\$﹩$]",
+                "[£₤£]",
                 "[¥¥]",
                 "[₩₩]",
                 "[₨₹{Rp}{Rs}]",
diff --git a/icu4c/source/data/locales/zu_ZA.txt b/icu4c/source/data/locales/zu_ZA.txt
index 4f5767c..fbc46e5 100644
--- a/icu4c/source/data/locales/zu_ZA.txt
+++ b/icu4c/source/data/locales/zu_ZA.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zu_ZA{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/makedata.mak b/icu4c/source/data/makedata.mak
index eeeaf85..daa66ef 100644
--- a/icu4c/source/data/makedata.mak
+++ b/icu4c/source/data/makedata.mak
@@ -12,11 +12,11 @@
 
 ##############################################################################
 # Keep the following in sync with the version - see common/unicode/uvernum.h
-U_ICUDATA_NAME=icudt67
+U_ICUDATA_NAME=icudt68
 ##############################################################################
 !IF "$(UWP)" == "UWP"
 # Optionally change the name of the data file for the UWP version.
-U_ICUDATA_NAME=icudt67
+U_ICUDATA_NAME=icudt68
 !ENDIF
 U_ICUDATA_ENDIAN_SUFFIX=l
 UNICODE_VERSION=13.0
@@ -161,15 +161,22 @@
 #
 #  TOOLS CFG PATH
 #      Generally the tools want to run on the same architecture as is being built.
-#      Thus ARM and ARM64 need to use another build of the other tools, so make sure to get an usable cfg path.
+#      Thus ARM and ARM64 need to use another build of the other tools, so make sure to get an usable CFG path.
 #      Since tools, particularly pkggen, have architecture built-in, we made x64 on
-#      Windows be machine-independent and use those tools.
+#      Windows be machine-independent and use those tools for both ARM and ARM64.
+#      Note: If we're building ARM/ARM64 Debug, then we'll use the x64 Debug tools.
+#      If we're building ARM/ARM64 Release, then we'll use the x64 Release tools.
 #
 !IF "$(ARM_CROSS_BUILD)" == ""
 CFGTOOLS=$(CFG)
 !ELSE
+!IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM64\Release"
 CFGTOOLS=x64\Release
 !ENDIF
+!IF "$(CFG)" == "ARM\Debug" || "$(CFG)" == "ARM64\Debug"
+CFGTOOLS=x64\Debug
+!ENDIF
+!ENDIF
 !MESSAGE ICU tools CFG subpath is $(CFGTOOLS)
 
 
@@ -248,6 +255,13 @@
 
 !ENDIF
 
+# Verbose output when building the data for Debug builds.
+!IF "$(DEBUG)" == "true"
+ICU_DATA_BUILD_VERBOSE=--verbose
+!ELSE
+ICU_DATA_BUILD_VERBOSE=
+!ENDIF
+
 # Three main targets: tools, core data, and test data.
 # Keep track of whether they are built via timestamp files.
 
@@ -277,6 +291,7 @@
 		--out_dir "$(ICUBLD_PKG)" \
 		--tmp_dir "$(ICUTMP)" \
 		--filter_file "$(ICU_DATA_FILTER_FILE)" \
+		$(ICU_DATA_BUILD_VERBOSE) \
 		$(ICU_DATA_BUILDTOOL_OPTS)
 	@echo "timestamp" > $(COREDATA_TS)
 
@@ -378,7 +393,7 @@
 #
 # testdata - nmake will invoke pkgdata, which will create testdata.dat
 #
-"$(TESTDATAOUT)\testdata.dat": "$(TESTDATA)\*" $(TOOLS_TS) $(COREDATA_TS)
+"$(TESTDATAOUT)\testdata.dat": "$(TESTDATA)\*" $(TOOLS_TS)
 	@cd "$(TESTDATA)"
 	@echo building testdata...
 	nmake /nologo /f "$(TESTDATA)\testdata.mak" TESTDATA=. ICUTOOLS="$(ICUTOOLS)" ICUPBIN="$(ICUPBIN)" ICUP="$(ICUP)" CFG=$(CFGTOOLS) TESTDATAOUT="$(TESTDATAOUT)" TESTDATABLD="$(TESTDATABLD)" ICUSRCDATA="$(ICUSRCDATA)" DLL_OUTPUT="$(DLL_OUTPUT)"
diff --git a/icu4c/source/data/makedata.vcxproj b/icu4c/source/data/makedata.vcxproj
index 71ccafb..4309f43 100644
--- a/icu4c/source/data/makedata.vcxproj
+++ b/icu4c/source/data/makedata.vcxproj
@@ -12,21 +12,18 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
     <OutDir>.\data\tmp\$(Platform)\</OutDir>
     <IntDir>.\data\build\</IntDir>
     <MakeCFG>$(Platform)\$(Configuration)</MakeCFG>
+    <DebugBuild Condition="'$(Configuration)'=='Debug'">true</DebugBuild>
     <!-- The ICU projects use "Win32" to mean "x86", so we need to special case it. -->
     <OutDir Condition="'$(Platform)'=='Win32'">.\data\tmp\x86\</OutDir>
     <MakeCFG Condition="'$(Platform)'=='Win32'">x86\$(Configuration)</MakeCFG>
     <!-- NMake -->
-    <NMakeBuildCommandLine>NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=$(MakeCFG)</NMakeBuildCommandLine>
+    <NMakeBuildCommandLine>NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=$(MakeCFG) DEBUG=$(DebugBuild)</NMakeBuildCommandLine>
     <NMakeReBuildCommandLine>NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=$(MakeCFG) clean all</NMakeReBuildCommandLine>
     <NMakeCleanCommandLine>NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=$(MakeCFG) clean</NMakeCleanCommandLine>
     <NMakeOutput/>
diff --git a/icu4c/source/data/makedata_uwp.vcxproj b/icu4c/source/data/makedata_uwp.vcxproj
index f89bac0..7b4ae4d 100644
--- a/icu4c/source/data/makedata_uwp.vcxproj
+++ b/icu4c/source/data/makedata_uwp.vcxproj
@@ -47,10 +47,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/data/mappings/gb18030.ucm b/icu4c/source/data/mappings/gb18030.ucm
index 8f5eff6..62b57a9 100644
--- a/icu4c/source/data/mappings/gb18030.ucm
+++ b/icu4c/source/data/mappings/gb18030.ucm
@@ -16,7 +16,7 @@
 # Note that the entire block for the supplementary Unicode planes is
 # marked unassigned because they are handled algorithmically.
 # Similarly, some of the BMP mappings are marked as unassigned for the same reason.
-# See http://userguide.icu-project.org/conversion/data#TOC-State-table-syntax-in-.ucm-files
+# See https://unicode-org.github.io/icu/userguide/conversion/data#state-table-syntax-in-ucm-files
 
 # States 0..2:
 # Mostly assigned sequences, with branches in the lead bytes
diff --git a/icu4c/source/data/misc/dayPeriods.txt b/icu4c/source/data/misc/dayPeriods.txt
index 1f88c23..3d24f00 100644
--- a/icu4c/source/data/misc/dayPeriods.txt
+++ b/icu4c/source/data/misc/dayPeriods.txt
@@ -1,167 +1,170 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dayPeriods:table(nofallback){
     locales{
         af{"set3"}
-        am{"set68"}
-        ar{"set66"}
-        az{"set62"}
-        bg{"set21"}
-        bn{"set34"}
-        bs{"set25"}
+        am{"set69"}
+        ar{"set67"}
+        az{"set63"}
+        bg{"set22"}
+        bn{"set35"}
+        bs{"set26"}
         ca{"set15"}
-        ccp{"set34"}
-        chr{"set76"}
-        cs{"set27"}
-        cy{"set78"}
+        ccp{"set35"}
+        chr{"set77"}
+        cs{"set28"}
+        cy{"set79"}
         da{"set7"}
         de{"set6"}
-        ee{"set77"}
-        el{"set40"}
+        ee{"set78"}
+        el{"set41"}
         en{"set2"}
         es{"set13"}
         es_CO{"set14"}
-        et{"set49"}
-        eu{"set74"}
-        fa{"set43"}
-        fi{"set48"}
-        fil{"set60"}
-        fr{"set18"}
+        et{"set50"}
+        eu{"set75"}
+        fa{"set44"}
+        fi{"set49"}
+        fil{"set61"}
+        fr{"set19"}
         gl{"set12"}
         gsw{"set5"}
-        gu{"set35"}
-        he{"set67"}
-        hi{"set33"}
-        hr{"set24"}
-        hu{"set50"}
-        hy{"set42"}
-        id{"set58"}
+        gu{"set36"}
+        he{"set68"}
+        hi{"set34"}
+        hr{"set25"}
+        hu{"set51"}
+        hy{"set43"}
+        id{"set59"}
         is{"set10"}
         it{"set16"}
-        ja{"set53"}
-        ka{"set73"}
-        kk{"set63"}
-        km{"set70"}
-        kn{"set47"}
-        ko{"set54"}
-        ky{"set64"}
-        lo{"set57"}
-        lt{"set30"}
-        lv{"set31"}
-        mk{"set22"}
-        ml{"set46"}
-        mn{"set75"}
-        mr{"set36"}
-        ms{"set59"}
-        my{"set55"}
+        ja{"set54"}
+        ka{"set74"}
+        kk{"set64"}
+        km{"set71"}
+        kn{"set48"}
+        ko{"set55"}
+        ky{"set65"}
+        lij{"set17"}
+        lo{"set58"}
+        lt{"set31"}
+        lv{"set32"}
+        mk{"set23"}
+        ml{"set47"}
+        mn{"set76"}
+        mr{"set37"}
+        ms{"set60"}
+        my{"set56"}
         nb{"set8"}
-        ne{"set37"}
+        ne{"set38"}
         nl{"set4"}
-        pa{"set38"}
-        pl{"set29"}
+        pa{"set39"}
+        pl{"set30"}
         pt{"set11"}
-        ro{"set17"}
+        ro{"set18"}
         root{"set1"}
-        ru{"set19"}
-        si{"set39"}
-        sk{"set28"}
-        sl{"set26"}
-        sq{"set41"}
-        sr{"set23"}
+        ru{"set20"}
+        si{"set40"}
+        sk{"set29"}
+        sl{"set27"}
+        sq{"set42"}
+        sr{"set24"}
         sv{"set9"}
-        sw{"set71"}
-        ta{"set44"}
-        te{"set45"}
-        th{"set56"}
-        tr{"set61"}
-        uk{"set20"}
-        ur{"set32"}
-        uz{"set65"}
-        vi{"set69"}
-        yue{"set52"}
-        zh{"set51"}
-        zu{"set72"}
+        sw{"set72"}
+        ta{"set45"}
+        te{"set46"}
+        th{"set57"}
+        tr{"set62"}
+        uk{"set21"}
+        ur{"set33"}
+        uz{"set66"}
+        vi{"set70"}
+        yue{"set53"}
+        zh{"set52"}
+        zu{"set73"}
     }
     locales_selection{
-        af{"set81"}
-        am{"set150"}
-        ar{"set141"}
-        az{"set132"}
-        bg{"set104"}
-        bn{"set117"}
-        bs{"set98"}
-        ca{"set93"}
-        ccp{"set117"}
-        chr{"set154"}
-        cs{"set101"}
-        cy{"set156"}
-        da{"set85"}
-        de{"set84"}
-        ee{"set155"}
-        el{"set110"}
-        en{"set80"}
-        es{"set91"}
-        es_CO{"set92"}
-        et{"set136"}
-        eu{"set151"}
-        fa{"set111"}
-        fi{"set137"}
-        fil{"set145"}
-        fr{"set96"}
-        gl{"set90"}
-        gsw{"set83"}
-        gu{"set118"}
-        he{"set142"}
-        hi{"set116"}
-        hr{"set97"}
-        hu{"set138"}
-        hy{"set112"}
-        id{"set143"}
-        is{"set88"}
-        it{"set94"}
-        ja{"set129"}
-        ka{"set113"}
-        kk{"set133"}
-        km{"set147"}
-        kn{"set126"}
-        ko{"set130"}
-        ky{"set134"}
-        lo{"set140"}
-        lt{"set108"}
-        lv{"set109"}
-        mk{"set105"}
-        ml{"set125"}
-        mn{"set152"}
-        mr{"set119"}
-        ms{"set144"}
-        my{"set153"}
-        nb{"set86"}
-        ne{"set120"}
-        nl{"set82"}
-        pa{"set121"}
-        pl{"set103"}
-        pt{"set89"}
-        ro{"set95"}
-        root{"set79"}
-        ru{"set106"}
-        si{"set122"}
-        sk{"set102"}
-        sl{"set100"}
-        sq{"set114"}
-        sr{"set99"}
-        sv{"set87"}
-        sw{"set148"}
-        ta{"set123"}
-        te{"set124"}
-        th{"set139"}
-        tr{"set131"}
-        uk{"set107"}
-        ur{"set115"}
-        uz{"set135"}
-        vi{"set146"}
-        yue{"set128"}
-        zh{"set127"}
-        zu{"set149"}
+        af{"set82"}
+        am{"set152"}
+        ar{"set143"}
+        az{"set134"}
+        bg{"set106"}
+        bn{"set119"}
+        bs{"set100"}
+        ca{"set94"}
+        ccp{"set119"}
+        chr{"set156"}
+        cs{"set103"}
+        cy{"set158"}
+        da{"set86"}
+        de{"set85"}
+        ee{"set157"}
+        el{"set112"}
+        en{"set81"}
+        es{"set92"}
+        es_CO{"set93"}
+        et{"set138"}
+        eu{"set153"}
+        fa{"set113"}
+        fi{"set139"}
+        fil{"set147"}
+        fr{"set98"}
+        gl{"set91"}
+        gsw{"set84"}
+        gu{"set120"}
+        he{"set144"}
+        hi{"set118"}
+        hr{"set99"}
+        hu{"set140"}
+        hy{"set114"}
+        id{"set145"}
+        is{"set89"}
+        it{"set95"}
+        ja{"set131"}
+        ka{"set115"}
+        kk{"set135"}
+        km{"set149"}
+        kn{"set128"}
+        ko{"set132"}
+        ky{"set136"}
+        lij{"set96"}
+        lo{"set142"}
+        lt{"set110"}
+        lv{"set111"}
+        mk{"set107"}
+        ml{"set127"}
+        mn{"set154"}
+        mr{"set121"}
+        ms{"set146"}
+        my{"set155"}
+        nb{"set87"}
+        ne{"set122"}
+        nl{"set83"}
+        pa{"set123"}
+        pl{"set105"}
+        pt{"set90"}
+        ro{"set97"}
+        root{"set80"}
+        ru{"set108"}
+        si{"set124"}
+        sk{"set104"}
+        sl{"set102"}
+        sq{"set116"}
+        sr{"set101"}
+        sv{"set88"}
+        sw{"set150"}
+        ta{"set125"}
+        te{"set126"}
+        th{"set141"}
+        tr{"set133"}
+        uk{"set109"}
+        ur{"set117"}
+        uz{"set137"}
+        vi{"set148"}
+        yue{"set130"}
+        zh{"set129"}
+        zu{"set151"}
     }
     rules{
         set1{
@@ -204,6 +207,42 @@
                 from{"12:00"}
             }
             evening1{
+                before{"21:00"}
+                from{"18:00"}
+            }
+            morning1{
+                before{"12:00"}
+                from{"04:00"}
+            }
+            night1{
+                before{"04:00"}
+                from{"21:00"}
+            }
+        }
+        set101{
+            afternoon1{
+                before{"18:00"}
+                from{"12:00"}
+            }
+            evening1{
+                before{"21:00"}
+                from{"18:00"}
+            }
+            morning1{
+                before{"12:00"}
+                from{"06:00"}
+            }
+            night1{
+                before{"06:00"}
+                from{"21:00"}
+            }
+        }
+        set102{
+            afternoon1{
+                before{"18:00"}
+                from{"12:00"}
+            }
+            evening1{
                 before{"22:00"}
                 from{"18:00"}
             }
@@ -220,56 +259,56 @@
                 from{"22:00"}
             }
         }
-        set101{
-            afternoon1{
-                before{"18:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"22:00"}
-                from{"18:00"}
-            }
-            morning1{
-                before{"09:00"}
-                from{"04:00"}
-            }
-            morning2{
-                before{"12:00"}
-                from{"09:00"}
-            }
-            night1{
-                before{"04:00"}
-                from{"22:00"}
-            }
-        }
-        set102{
-            afternoon1{
-                before{"18:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"22:00"}
-                from{"18:00"}
-            }
-            morning1{
-                before{"09:00"}
-                from{"04:00"}
-            }
-            morning2{
-                before{"12:00"}
-                from{"09:00"}
-            }
-            night1{
-                before{"04:00"}
-                from{"22:00"}
-            }
-        }
         set103{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
             }
             evening1{
+                before{"22:00"}
+                from{"18:00"}
+            }
+            morning1{
+                before{"09:00"}
+                from{"04:00"}
+            }
+            morning2{
+                before{"12:00"}
+                from{"09:00"}
+            }
+            night1{
+                before{"04:00"}
+                from{"22:00"}
+            }
+        }
+        set104{
+            afternoon1{
+                before{"18:00"}
+                from{"12:00"}
+            }
+            evening1{
+                before{"22:00"}
+                from{"18:00"}
+            }
+            morning1{
+                before{"09:00"}
+                from{"04:00"}
+            }
+            morning2{
+                before{"12:00"}
+                from{"09:00"}
+            }
+            night1{
+                before{"04:00"}
+                from{"22:00"}
+            }
+        }
+        set105{
+            afternoon1{
+                before{"18:00"}
+                from{"12:00"}
+            }
+            evening1{
                 before{"21:00"}
                 from{"18:00"}
             }
@@ -286,7 +325,7 @@
                 from{"21:00"}
             }
         }
-        set104{
+        set106{
             afternoon1{
                 before{"18:00"}
                 from{"14:00"}
@@ -308,7 +347,7 @@
                 from{"22:00"}
             }
         }
-        set105{
+        set107{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -330,42 +369,6 @@
                 from{"00:00"}
             }
         }
-        set106{
-            afternoon1{
-                before{"18:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"24:00"}
-                from{"18:00"}
-            }
-            morning1{
-                before{"12:00"}
-                from{"04:00"}
-            }
-            night1{
-                before{"04:00"}
-                from{"00:00"}
-            }
-        }
-        set107{
-            afternoon1{
-                before{"18:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"24:00"}
-                from{"18:00"}
-            }
-            morning1{
-                before{"12:00"}
-                from{"04:00"}
-            }
-            night1{
-                before{"04:00"}
-                from{"00:00"}
-            }
-        }
         set108{
             afternoon1{
                 before{"18:00"}
@@ -377,10 +380,10 @@
             }
             morning1{
                 before{"12:00"}
-                from{"06:00"}
+                from{"04:00"}
             }
             night1{
-                before{"06:00"}
+                before{"04:00"}
                 from{"00:00"}
             }
         }
@@ -390,16 +393,16 @@
                 from{"12:00"}
             }
             evening1{
-                before{"23:00"}
+                before{"24:00"}
                 from{"18:00"}
             }
             morning1{
                 before{"12:00"}
-                from{"06:00"}
+                from{"04:00"}
             }
             night1{
-                before{"06:00"}
-                from{"23:00"}
+                before{"04:00"}
+                from{"00:00"}
             }
         }
         set11{
@@ -428,6 +431,42 @@
         }
         set110{
             afternoon1{
+                before{"18:00"}
+                from{"12:00"}
+            }
+            evening1{
+                before{"24:00"}
+                from{"18:00"}
+            }
+            morning1{
+                before{"12:00"}
+                from{"06:00"}
+            }
+            night1{
+                before{"06:00"}
+                from{"00:00"}
+            }
+        }
+        set111{
+            afternoon1{
+                before{"18:00"}
+                from{"12:00"}
+            }
+            evening1{
+                before{"23:00"}
+                from{"18:00"}
+            }
+            morning1{
+                before{"12:00"}
+                from{"06:00"}
+            }
+            night1{
+                before{"06:00"}
+                from{"23:00"}
+            }
+        }
+        set112{
+            afternoon1{
                 before{"17:00"}
                 from{"12:00"}
             }
@@ -444,7 +483,7 @@
                 from{"20:00"}
             }
         }
-        set111{
+        set113{
             afternoon1{
                 before{"13:00"}
                 from{"12:00"}
@@ -470,7 +509,7 @@
                 from{"00:00"}
             }
         }
-        set112{
+        set114{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -488,7 +527,7 @@
                 from{"00:00"}
             }
         }
-        set113{
+        set115{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -506,7 +545,7 @@
                 from{"21:00"}
             }
         }
-        set114{
+        set116{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -528,46 +567,6 @@
                 from{"00:00"}
             }
         }
-        set115{
-            afternoon1{
-                before{"16:00"}
-                from{"12:00"}
-            }
-            afternoon2{
-                before{"18:00"}
-                from{"16:00"}
-            }
-            evening1{
-                before{"20:00"}
-                from{"18:00"}
-            }
-            morning1{
-                before{"12:00"}
-                from{"04:00"}
-            }
-            night1{
-                before{"04:00"}
-                from{"20:00"}
-            }
-        }
-        set116{
-            afternoon1{
-                before{"16:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"20:00"}
-                from{"16:00"}
-            }
-            morning1{
-                before{"12:00"}
-                from{"04:00"}
-            }
-            night1{
-                before{"04:00"}
-                from{"20:00"}
-            }
-        }
         set117{
             afternoon1{
                 before{"16:00"}
@@ -582,12 +581,8 @@
                 from{"18:00"}
             }
             morning1{
-                before{"06:00"}
-                from{"04:00"}
-            }
-            morning2{
                 before{"12:00"}
-                from{"06:00"}
+                from{"04:00"}
             }
             night1{
                 before{"04:00"}
@@ -617,12 +612,12 @@
                 before{"16:00"}
                 from{"12:00"}
             }
-            evening1{
+            afternoon2{
                 before{"18:00"}
                 from{"16:00"}
             }
-            evening2{
-                before{"21:00"}
+            evening1{
+                before{"20:00"}
                 from{"18:00"}
             }
             morning1{
@@ -635,7 +630,7 @@
             }
             night1{
                 before{"04:00"}
-                from{"21:00"}
+                from{"20:00"}
             }
         }
         set12{
@@ -668,6 +663,50 @@
                 before{"16:00"}
                 from{"12:00"}
             }
+            evening1{
+                before{"20:00"}
+                from{"16:00"}
+            }
+            morning1{
+                before{"12:00"}
+                from{"04:00"}
+            }
+            night1{
+                before{"04:00"}
+                from{"20:00"}
+            }
+        }
+        set121{
+            afternoon1{
+                before{"16:00"}
+                from{"12:00"}
+            }
+            evening1{
+                before{"18:00"}
+                from{"16:00"}
+            }
+            evening2{
+                before{"21:00"}
+                from{"18:00"}
+            }
+            morning1{
+                before{"06:00"}
+                from{"04:00"}
+            }
+            morning2{
+                before{"12:00"}
+                from{"06:00"}
+            }
+            night1{
+                before{"04:00"}
+                from{"21:00"}
+            }
+        }
+        set122{
+            afternoon1{
+                before{"16:00"}
+                from{"12:00"}
+            }
             afternoon2{
                 before{"19:00"}
                 from{"16:00"}
@@ -685,7 +724,7 @@
                 from{"22:00"}
             }
         }
-        set121{
+        set123{
             afternoon1{
                 before{"16:00"}
                 from{"12:00"}
@@ -703,7 +742,7 @@
                 from{"21:00"}
             }
         }
-        set122{
+        set124{
             afternoon1{
                 before{"14:00"}
                 from{"12:00"}
@@ -729,7 +768,7 @@
                 from{"00:00"}
             }
         }
-        set123{
+        set125{
             afternoon1{
                 before{"14:00"}
                 from{"12:00"}
@@ -759,7 +798,7 @@
                 from{"21:00"}
             }
         }
-        set124{
+        set126{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -777,7 +816,7 @@
                 from{"21:00"}
             }
         }
-        set125{
+        set127{
             afternoon1{
                 before{"14:00"}
                 from{"12:00"}
@@ -807,7 +846,7 @@
                 from{"19:00"}
             }
         }
-        set126{
+        set128{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -825,78 +864,30 @@
                 from{"21:00"}
             }
         }
-        set127{
-            afternoon1{
-                before{"13:00"}
-                from{"12:00"}
-            }
-            afternoon2{
-                before{"19:00"}
-                from{"13:00"}
-            }
-            evening1{
-                before{"24:00"}
-                from{"19:00"}
-            }
-            morning1{
-                before{"08:00"}
-                from{"05:00"}
-            }
-            morning2{
-                before{"12:00"}
-                from{"08:00"}
-            }
-            night1{
-                before{"05:00"}
-                from{"00:00"}
-            }
-        }
-        set128{
-            afternoon1{
-                before{"13:00"}
-                from{"12:00"}
-            }
-            afternoon2{
-                before{"19:00"}
-                from{"13:00"}
-            }
-            evening1{
-                before{"24:00"}
-                from{"19:00"}
-            }
-            morning1{
-                before{"08:00"}
-                from{"05:00"}
-            }
-            morning2{
-                before{"12:00"}
-                from{"08:00"}
-            }
-            night1{
-                before{"05:00"}
-                from{"00:00"}
-            }
-        }
         set129{
             afternoon1{
-                before{"16:00"}
+                before{"13:00"}
                 from{"12:00"}
             }
-            evening1{
+            afternoon2{
                 before{"19:00"}
-                from{"16:00"}
+                from{"13:00"}
             }
-            morning1{
-                before{"12:00"}
-                from{"04:00"}
-            }
-            night1{
-                before{"23:00"}
+            evening1{
+                before{"24:00"}
                 from{"19:00"}
             }
-            night2{
-                before{"04:00"}
-                from{"23:00"}
+            morning1{
+                before{"08:00"}
+                from{"05:00"}
+            }
+            morning2{
+                before{"12:00"}
+                from{"08:00"}
+            }
+            night1{
+                before{"05:00"}
+                from{"00:00"}
             }
         }
         set13{
@@ -922,6 +913,54 @@
         }
         set130{
             afternoon1{
+                before{"13:00"}
+                from{"12:00"}
+            }
+            afternoon2{
+                before{"19:00"}
+                from{"13:00"}
+            }
+            evening1{
+                before{"24:00"}
+                from{"19:00"}
+            }
+            morning1{
+                before{"08:00"}
+                from{"05:00"}
+            }
+            morning2{
+                before{"12:00"}
+                from{"08:00"}
+            }
+            night1{
+                before{"05:00"}
+                from{"00:00"}
+            }
+        }
+        set131{
+            afternoon1{
+                before{"16:00"}
+                from{"12:00"}
+            }
+            evening1{
+                before{"19:00"}
+                from{"16:00"}
+            }
+            morning1{
+                before{"12:00"}
+                from{"04:00"}
+            }
+            night1{
+                before{"23:00"}
+                from{"19:00"}
+            }
+            night2{
+                before{"04:00"}
+                from{"23:00"}
+            }
+        }
+        set132{
+            afternoon1{
                 before{"18:00"}
                 from{"12:00"}
             }
@@ -942,7 +981,7 @@
                 from{"21:00"}
             }
         }
-        set131{
+        set133{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -968,7 +1007,7 @@
                 from{"21:00"}
             }
         }
-        set132{
+        set134{
             afternoon1{
                 before{"17:00"}
                 from{"12:00"}
@@ -994,45 +1033,45 @@
                 from{"00:00"}
             }
         }
-        set133{
-            afternoon1{
-                before{"18:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"21:00"}
-                from{"18:00"}
-            }
-            morning1{
-                before{"12:00"}
-                from{"06:00"}
-            }
-            night1{
-                before{"06:00"}
-                from{"21:00"}
-            }
-        }
-        set134{
-            afternoon1{
-                before{"18:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"21:00"}
-                from{"18:00"}
-            }
-            morning1{
-                before{"12:00"}
-                from{"06:00"}
-            }
-            night1{
-                before{"06:00"}
-                from{"21:00"}
-            }
-        }
         set135{
             afternoon1{
                 before{"18:00"}
+                from{"12:00"}
+            }
+            evening1{
+                before{"21:00"}
+                from{"18:00"}
+            }
+            morning1{
+                before{"12:00"}
+                from{"06:00"}
+            }
+            night1{
+                before{"06:00"}
+                from{"21:00"}
+            }
+        }
+        set136{
+            afternoon1{
+                before{"18:00"}
+                from{"12:00"}
+            }
+            evening1{
+                before{"21:00"}
+                from{"18:00"}
+            }
+            morning1{
+                before{"12:00"}
+                from{"06:00"}
+            }
+            night1{
+                before{"06:00"}
+                from{"21:00"}
+            }
+        }
+        set137{
+            afternoon1{
+                before{"18:00"}
                 from{"11:00"}
             }
             evening1{
@@ -1048,7 +1087,7 @@
                 from{"22:00"}
             }
         }
-        set136{
+        set138{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -1066,7 +1105,7 @@
                 from{"23:00"}
             }
         }
-        set137{
+        set139{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -1088,7 +1127,24 @@
                 from{"23:00"}
             }
         }
-        set138{
+        set14{
+            evening1{
+                before{"20:00"}
+                from{"12:00"}
+            }
+            morning2{
+                before{"12:00"}
+                from{"00:00"}
+            }
+            night1{
+                before{"24:00"}
+                from{"20:00"}
+            }
+            noon{
+                at{"12:00"}
+            }
+        }
+        set140{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -1114,7 +1170,7 @@
                 from{"04:00"}
             }
         }
-        set139{
+        set141{
             afternoon1{
                 before{"13:00"}
                 from{"12:00"}
@@ -1140,24 +1196,7 @@
                 from{"21:00"}
             }
         }
-        set14{
-            evening1{
-                before{"20:00"}
-                from{"12:00"}
-            }
-            morning2{
-                before{"12:00"}
-                from{"00:00"}
-            }
-            night1{
-                before{"24:00"}
-                from{"20:00"}
-            }
-            noon{
-                at{"12:00"}
-            }
-        }
-        set140{
+        set142{
             afternoon1{
                 before{"16:00"}
                 from{"12:00"}
@@ -1175,7 +1214,7 @@
                 from{"20:00"}
             }
         }
-        set141{
+        set143{
             afternoon1{
                 before{"13:00"}
                 from{"12:00"}
@@ -1205,7 +1244,7 @@
                 from{"01:00"}
             }
         }
-        set142{
+        set144{
             afternoon1{
                 before{"16:00"}
                 from{"12:00"}
@@ -1231,7 +1270,7 @@
                 from{"03:00"}
             }
         }
-        set143{
+        set145{
             afternoon1{
                 before{"15:00"}
                 from{"10:00"}
@@ -1249,7 +1288,7 @@
                 from{"18:00"}
             }
         }
-        set144{
+        set146{
             afternoon1{
                 before{"14:00"}
                 from{"12:00"}
@@ -1271,7 +1310,7 @@
                 from{"19:00"}
             }
         }
-        set145{
+        set147{
             afternoon1{
                 before{"16:00"}
                 from{"12:00"}
@@ -1293,84 +1332,40 @@
                 from{"18:00"}
             }
         }
-        set146{
-            afternoon1{
-                before{"18:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"21:00"}
-                from{"18:00"}
-            }
-            morning1{
-                before{"12:00"}
-                from{"04:00"}
-            }
-            night1{
-                before{"04:00"}
-                from{"21:00"}
-            }
-        }
-        set147{
-            afternoon1{
-                before{"18:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"21:00"}
-                from{"18:00"}
-            }
-            morning1{
-                before{"12:00"}
-                from{"00:00"}
-            }
-            night1{
-                before{"24:00"}
-                from{"21:00"}
-            }
-        }
         set148{
             afternoon1{
-                before{"16:00"}
+                before{"18:00"}
                 from{"12:00"}
             }
             evening1{
-                before{"19:00"}
-                from{"16:00"}
+                before{"21:00"}
+                from{"18:00"}
             }
             morning1{
-                before{"07:00"}
-                from{"04:00"}
-            }
-            morning2{
                 before{"12:00"}
-                from{"07:00"}
+                from{"04:00"}
             }
             night1{
                 before{"04:00"}
-                from{"19:00"}
+                from{"21:00"}
             }
         }
         set149{
             afternoon1{
-                before{"13:00"}
-                from{"10:00"}
+                before{"18:00"}
+                from{"12:00"}
             }
             evening1{
-                before{"19:00"}
-                from{"13:00"}
+                before{"21:00"}
+                from{"18:00"}
             }
             morning1{
-                before{"06:00"}
+                before{"12:00"}
                 from{"00:00"}
             }
-            morning2{
-                before{"10:00"}
-                from{"06:00"}
-            }
             night1{
                 before{"24:00"}
-                from{"19:00"}
+                from{"21:00"}
             }
         }
         set15{
@@ -1404,6 +1399,50 @@
         }
         set150{
             afternoon1{
+                before{"16:00"}
+                from{"12:00"}
+            }
+            evening1{
+                before{"19:00"}
+                from{"16:00"}
+            }
+            morning1{
+                before{"07:00"}
+                from{"04:00"}
+            }
+            morning2{
+                before{"12:00"}
+                from{"07:00"}
+            }
+            night1{
+                before{"04:00"}
+                from{"19:00"}
+            }
+        }
+        set151{
+            afternoon1{
+                before{"13:00"}
+                from{"10:00"}
+            }
+            evening1{
+                before{"19:00"}
+                from{"13:00"}
+            }
+            morning1{
+                before{"06:00"}
+                from{"00:00"}
+            }
+            morning2{
+                before{"10:00"}
+                from{"06:00"}
+            }
+            night1{
+                before{"24:00"}
+                from{"19:00"}
+            }
+        }
+        set152{
+            afternoon1{
                 before{"18:00"}
                 from{"12:00"}
             }
@@ -1420,7 +1459,7 @@
                 from{"00:00"}
             }
         }
-        set151{
+        set153{
             afternoon1{
                 before{"14:00"}
                 from{"12:00"}
@@ -1446,7 +1485,7 @@
                 from{"21:00"}
             }
         }
-        set152{
+        set154{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -1464,7 +1503,7 @@
                 from{"21:00"}
             }
         }
-        set153{
+        set155{
             afternoon1{
                 before{"16:00"}
                 from{"12:00"}
@@ -1482,7 +1521,7 @@
                 from{"19:00"}
             }
         }
-        set154{
+        set156{
             afternoon1{
                 before{"24:00"}
                 from{"12:00"}
@@ -1492,7 +1531,7 @@
                 from{"00:00"}
             }
         }
-        set155{
+        set157{
             afternoon1{
                 before{"14:00"}
                 from{"12:00"}
@@ -1518,7 +1557,7 @@
                 from{"21:00"}
             }
         }
-        set156{
+        set158{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -1570,10 +1609,10 @@
             }
             morning1{
                 before{"12:00"}
-                from{"05:00"}
+                from{"06:00"}
             }
             night1{
-                before{"05:00"}
+                before{"06:00"}
                 from{"22:00"}
             }
             noon{
@@ -1586,7 +1625,7 @@
                 from{"12:00"}
             }
             evening1{
-                before{"24:00"}
+                before{"22:00"}
                 from{"18:00"}
             }
             midnight{
@@ -1594,11 +1633,11 @@
             }
             morning1{
                 before{"12:00"}
-                from{"04:00"}
+                from{"05:00"}
             }
             night1{
-                before{"04:00"}
-                from{"00:00"}
+                before{"05:00"}
+                from{"22:00"}
             }
             noon{
                 at{"12:00"}
@@ -1679,6 +1718,30 @@
         set21{
             afternoon1{
                 before{"18:00"}
+                from{"12:00"}
+            }
+            evening1{
+                before{"24:00"}
+                from{"18:00"}
+            }
+            midnight{
+                at{"00:00"}
+            }
+            morning1{
+                before{"12:00"}
+                from{"04:00"}
+            }
+            night1{
+                before{"04:00"}
+                from{"00:00"}
+            }
+            noon{
+                at{"12:00"}
+            }
+        }
+        set22{
+            afternoon1{
+                before{"18:00"}
                 from{"14:00"}
             }
             evening1{
@@ -1701,7 +1764,7 @@
                 from{"22:00"}
             }
         }
-        set22{
+        set23{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -1729,7 +1792,7 @@
                 at{"12:00"}
             }
         }
-        set23{
+        set24{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -1753,30 +1816,6 @@
                 at{"12:00"}
             }
         }
-        set24{
-            afternoon1{
-                before{"18:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"21:00"}
-                from{"18:00"}
-            }
-            midnight{
-                at{"00:00"}
-            }
-            morning1{
-                before{"12:00"}
-                from{"04:00"}
-            }
-            night1{
-                before{"04:00"}
-                from{"21:00"}
-            }
-            noon{
-                at{"12:00"}
-            }
-        }
         set25{
             afternoon1{
                 before{"18:00"}
@@ -1807,23 +1846,19 @@
                 from{"12:00"}
             }
             evening1{
-                before{"22:00"}
+                before{"21:00"}
                 from{"18:00"}
             }
             midnight{
                 at{"00:00"}
             }
             morning1{
-                before{"10:00"}
-                from{"06:00"}
-            }
-            morning2{
                 before{"12:00"}
-                from{"10:00"}
+                from{"04:00"}
             }
             night1{
-                before{"06:00"}
-                from{"22:00"}
+                before{"04:00"}
+                from{"21:00"}
             }
             noon{
                 at{"12:00"}
@@ -1842,15 +1877,15 @@
                 at{"00:00"}
             }
             morning1{
-                before{"09:00"}
-                from{"04:00"}
+                before{"10:00"}
+                from{"06:00"}
             }
             morning2{
                 before{"12:00"}
-                from{"09:00"}
+                from{"10:00"}
             }
             night1{
-                before{"04:00"}
+                before{"06:00"}
                 from{"22:00"}
             }
             noon{
@@ -1891,23 +1926,23 @@
                 from{"12:00"}
             }
             evening1{
-                before{"21:00"}
+                before{"22:00"}
                 from{"18:00"}
             }
             midnight{
                 at{"00:00"}
             }
             morning1{
-                before{"10:00"}
-                from{"06:00"}
+                before{"09:00"}
+                from{"04:00"}
             }
             morning2{
                 before{"12:00"}
-                from{"10:00"}
+                from{"09:00"}
             }
             night1{
-                before{"06:00"}
-                from{"21:00"}
+                before{"04:00"}
+                from{"22:00"}
             }
             noon{
                 at{"12:00"}
@@ -1940,6 +1975,34 @@
                 from{"12:00"}
             }
             evening1{
+                before{"21:00"}
+                from{"18:00"}
+            }
+            midnight{
+                at{"00:00"}
+            }
+            morning1{
+                before{"10:00"}
+                from{"06:00"}
+            }
+            morning2{
+                before{"12:00"}
+                from{"10:00"}
+            }
+            night1{
+                before{"06:00"}
+                from{"21:00"}
+            }
+            noon{
+                at{"12:00"}
+            }
+        }
+        set31{
+            afternoon1{
+                before{"18:00"}
+                from{"12:00"}
+            }
+            evening1{
                 before{"24:00"}
                 from{"18:00"}
             }
@@ -1958,7 +2021,7 @@
                 at{"12:00"}
             }
         }
-        set31{
+        set32{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -1982,7 +2045,7 @@
                 at{"12:00"}
             }
         }
-        set32{
+        set33{
             afternoon1{
                 before{"16:00"}
                 from{"12:00"}
@@ -2007,7 +2070,7 @@
                 from{"20:00"}
             }
         }
-        set33{
+        set34{
             afternoon1{
                 before{"16:00"}
                 from{"12:00"}
@@ -2028,7 +2091,7 @@
                 from{"20:00"}
             }
         }
-        set34{
+        set35{
             afternoon1{
                 before{"16:00"}
                 from{"12:00"}
@@ -2054,7 +2117,7 @@
                 from{"20:00"}
             }
         }
-        set35{
+        set36{
             afternoon1{
                 before{"16:00"}
                 from{"12:00"}
@@ -2075,7 +2138,7 @@
                 from{"20:00"}
             }
         }
-        set36{
+        set37{
             afternoon1{
                 before{"16:00"}
                 from{"12:00"}
@@ -2107,7 +2170,7 @@
                 at{"12:00"}
             }
         }
-        set37{
+        set38{
             afternoon1{
                 before{"16:00"}
                 from{"12:00"}
@@ -2135,7 +2198,7 @@
                 at{"12:00"}
             }
         }
-        set38{
+        set39{
             afternoon1{
                 before{"16:00"}
                 from{"12:00"}
@@ -2156,7 +2219,28 @@
                 from{"21:00"}
             }
         }
-        set39{
+        set4{
+            afternoon1{
+                before{"18:00"}
+                from{"12:00"}
+            }
+            evening1{
+                before{"24:00"}
+                from{"18:00"}
+            }
+            midnight{
+                at{"00:00"}
+            }
+            morning1{
+                before{"12:00"}
+                from{"06:00"}
+            }
+            night1{
+                before{"06:00"}
+                from{"00:00"}
+            }
+        }
+        set40{
             afternoon1{
                 before{"14:00"}
                 from{"12:00"}
@@ -2188,28 +2272,7 @@
                 at{"12:00"}
             }
         }
-        set4{
-            afternoon1{
-                before{"18:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"24:00"}
-                from{"18:00"}
-            }
-            midnight{
-                at{"00:00"}
-            }
-            morning1{
-                before{"12:00"}
-                from{"06:00"}
-            }
-            night1{
-                before{"06:00"}
-                from{"00:00"}
-            }
-        }
-        set40{
+        set41{
             afternoon1{
                 before{"17:00"}
                 from{"12:00"}
@@ -2227,7 +2290,7 @@
                 from{"20:00"}
             }
         }
-        set41{
+        set42{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -2255,7 +2318,7 @@
                 at{"12:00"}
             }
         }
-        set42{
+        set43{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -2279,7 +2342,7 @@
                 at{"12:00"}
             }
         }
-        set43{
+        set44{
             afternoon1{
                 before{"13:00"}
                 from{"12:00"}
@@ -2305,7 +2368,7 @@
                 from{"00:00"}
             }
         }
-        set44{
+        set45{
             afternoon1{
                 before{"14:00"}
                 from{"12:00"}
@@ -2341,7 +2404,7 @@
                 at{"12:00"}
             }
         }
-        set45{
+        set46{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -2362,7 +2425,7 @@
                 from{"21:00"}
             }
         }
-        set46{
+        set47{
             afternoon1{
                 before{"14:00"}
                 from{"12:00"}
@@ -2398,7 +2461,7 @@
                 at{"12:00"}
             }
         }
-        set47{
+        set48{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -2419,7 +2482,7 @@
                 from{"21:00"}
             }
         }
-        set48{
+        set49{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -2447,30 +2510,6 @@
                 at{"12:00"}
             }
         }
-        set49{
-            afternoon1{
-                before{"18:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"23:00"}
-                from{"18:00"}
-            }
-            midnight{
-                at{"00:00"}
-            }
-            morning1{
-                before{"12:00"}
-                from{"05:00"}
-            }
-            night1{
-                before{"05:00"}
-                from{"23:00"}
-            }
-            noon{
-                at{"12:00"}
-            }
-        }
         set5{
             afternoon1{
                 before{"14:00"}
@@ -2502,6 +2541,30 @@
                 from{"12:00"}
             }
             evening1{
+                before{"23:00"}
+                from{"18:00"}
+            }
+            midnight{
+                at{"00:00"}
+            }
+            morning1{
+                before{"12:00"}
+                from{"05:00"}
+            }
+            night1{
+                before{"05:00"}
+                from{"23:00"}
+            }
+            noon{
+                at{"12:00"}
+            }
+        }
+        set51{
+            afternoon1{
+                before{"18:00"}
+                from{"12:00"}
+            }
+            evening1{
                 before{"21:00"}
                 from{"18:00"}
             }
@@ -2528,35 +2591,6 @@
                 at{"12:00"}
             }
         }
-        set51{
-            afternoon1{
-                before{"13:00"}
-                from{"12:00"}
-            }
-            afternoon2{
-                before{"19:00"}
-                from{"13:00"}
-            }
-            evening1{
-                before{"24:00"}
-                from{"19:00"}
-            }
-            midnight{
-                at{"00:00"}
-            }
-            morning1{
-                before{"08:00"}
-                from{"05:00"}
-            }
-            morning2{
-                before{"12:00"}
-                from{"08:00"}
-            }
-            night1{
-                before{"05:00"}
-                from{"00:00"}
-            }
-        }
         set52{
             afternoon1{
                 before{"13:00"}
@@ -2588,6 +2622,35 @@
         }
         set53{
             afternoon1{
+                before{"13:00"}
+                from{"12:00"}
+            }
+            afternoon2{
+                before{"19:00"}
+                from{"13:00"}
+            }
+            evening1{
+                before{"24:00"}
+                from{"19:00"}
+            }
+            midnight{
+                at{"00:00"}
+            }
+            morning1{
+                before{"08:00"}
+                from{"05:00"}
+            }
+            morning2{
+                before{"12:00"}
+                from{"08:00"}
+            }
+            night1{
+                before{"05:00"}
+                from{"00:00"}
+            }
+        }
+        set54{
+            afternoon1{
                 before{"16:00"}
                 from{"12:00"}
             }
@@ -2614,7 +2677,7 @@
                 at{"12:00"}
             }
         }
-        set54{
+        set55{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -2642,7 +2705,7 @@
                 at{"12:00"}
             }
         }
-        set55{
+        set56{
             afternoon1{
                 before{"16:00"}
                 from{"12:00"}
@@ -2666,7 +2729,7 @@
                 at{"12:00"}
             }
         }
-        set56{
+        set57{
             afternoon1{
                 before{"13:00"}
                 from{"12:00"}
@@ -2698,7 +2761,7 @@
                 at{"12:00"}
             }
         }
-        set57{
+        set58{
             afternoon1{
                 before{"16:00"}
                 from{"12:00"}
@@ -2722,7 +2785,7 @@
                 at{"12:00"}
             }
         }
-        set58{
+        set59{
             afternoon1{
                 before{"15:00"}
                 from{"10:00"}
@@ -2746,28 +2809,6 @@
                 at{"12:00"}
             }
         }
-        set59{
-            afternoon1{
-                before{"14:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"19:00"}
-                from{"14:00"}
-            }
-            morning1{
-                before{"01:00"}
-                from{"00:00"}
-            }
-            morning2{
-                before{"12:00"}
-                from{"01:00"}
-            }
-            night1{
-                before{"24:00"}
-                from{"19:00"}
-            }
-        }
         set6{
             afternoon1{
                 before{"13:00"}
@@ -2799,6 +2840,28 @@
         }
         set60{
             afternoon1{
+                before{"14:00"}
+                from{"12:00"}
+            }
+            evening1{
+                before{"19:00"}
+                from{"14:00"}
+            }
+            morning1{
+                before{"01:00"}
+                from{"00:00"}
+            }
+            morning2{
+                before{"12:00"}
+                from{"01:00"}
+            }
+            night1{
+                before{"24:00"}
+                from{"19:00"}
+            }
+        }
+        set61{
+            afternoon1{
                 before{"16:00"}
                 from{"12:00"}
             }
@@ -2825,7 +2888,7 @@
                 at{"12:00"}
             }
         }
-        set61{
+        set62{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -2857,7 +2920,7 @@
                 at{"12:00"}
             }
         }
-        set62{
+        set63{
             afternoon1{
                 before{"17:00"}
                 from{"12:00"}
@@ -2889,30 +2952,6 @@
                 at{"12:00"}
             }
         }
-        set63{
-            afternoon1{
-                before{"18:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"21:00"}
-                from{"18:00"}
-            }
-            midnight{
-                at{"00:00"}
-            }
-            morning1{
-                before{"12:00"}
-                from{"06:00"}
-            }
-            night1{
-                before{"06:00"}
-                from{"21:00"}
-            }
-            noon{
-                at{"12:00"}
-            }
-        }
         set64{
             afternoon1{
                 before{"18:00"}
@@ -2940,6 +2979,30 @@
         set65{
             afternoon1{
                 before{"18:00"}
+                from{"12:00"}
+            }
+            evening1{
+                before{"21:00"}
+                from{"18:00"}
+            }
+            midnight{
+                at{"00:00"}
+            }
+            morning1{
+                before{"12:00"}
+                from{"06:00"}
+            }
+            night1{
+                before{"06:00"}
+                from{"21:00"}
+            }
+            noon{
+                at{"12:00"}
+            }
+        }
+        set66{
+            afternoon1{
+                before{"18:00"}
                 from{"11:00"}
             }
             evening1{
@@ -2961,7 +3024,7 @@
                 at{"12:00"}
             }
         }
-        set66{
+        set67{
             afternoon1{
                 before{"13:00"}
                 from{"12:00"}
@@ -2991,7 +3054,7 @@
                 from{"01:00"}
             }
         }
-        set67{
+        set68{
             afternoon1{
                 before{"16:00"}
                 from{"12:00"}
@@ -3020,7 +3083,7 @@
                 from{"03:00"}
             }
         }
-        set68{
+        set69{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -3044,30 +3107,6 @@
                 at{"12:00"}
             }
         }
-        set69{
-            afternoon1{
-                before{"18:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"21:00"}
-                from{"18:00"}
-            }
-            midnight{
-                at{"00:00"}
-            }
-            morning1{
-                before{"12:00"}
-                from{"04:00"}
-            }
-            night1{
-                before{"04:00"}
-                from{"21:00"}
-            }
-            noon{
-                at{"12:00"}
-            }
-        }
         set7{
             afternoon1{
                 before{"18:00"}
@@ -3107,6 +3146,30 @@
             }
             morning1{
                 before{"12:00"}
+                from{"04:00"}
+            }
+            night1{
+                before{"04:00"}
+                from{"21:00"}
+            }
+            noon{
+                at{"12:00"}
+            }
+        }
+        set71{
+            afternoon1{
+                before{"18:00"}
+                from{"12:00"}
+            }
+            evening1{
+                before{"21:00"}
+                from{"18:00"}
+            }
+            midnight{
+                at{"00:00"}
+            }
+            morning1{
+                before{"12:00"}
                 from{"00:00"}
             }
             night1{
@@ -3117,7 +3180,7 @@
                 at{"12:00"}
             }
         }
-        set71{
+        set72{
             afternoon1{
                 before{"16:00"}
                 from{"12:00"}
@@ -3145,7 +3208,7 @@
                 at{"12:00"}
             }
         }
-        set72{
+        set73{
             afternoon1{
                 before{"13:00"}
                 from{"10:00"}
@@ -3167,7 +3230,7 @@
                 from{"19:00"}
             }
         }
-        set73{
+        set74{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -3191,7 +3254,7 @@
                 at{"12:00"}
             }
         }
-        set74{
+        set75{
             afternoon1{
                 before{"14:00"}
                 from{"12:00"}
@@ -3220,7 +3283,7 @@
                 from{"21:00"}
             }
         }
-        set75{
+        set76{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -3244,7 +3307,7 @@
                 at{"12:00"}
             }
         }
-        set76{
+        set77{
             afternoon1{
                 before{"24:00"}
                 from{"12:00"}
@@ -3257,7 +3320,7 @@
                 at{"12:00"}
             }
         }
-        set77{
+        set78{
             afternoon1{
                 before{"14:00"}
                 from{"12:00"}
@@ -3283,7 +3346,7 @@
                 from{"21:00"}
             }
         }
-        set78{
+        set79{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -3303,16 +3366,6 @@
                 at{"12:00"}
             }
         }
-        set79{
-            am{
-                before{"12:00"}
-                from{"00:00"}
-            }
-            pm{
-                before{"24:00"}
-                from{"12:00"}
-            }
-        }
         set8{
             afternoon1{
                 before{"18:00"}
@@ -3339,6 +3392,16 @@
             }
         }
         set80{
+            am{
+                before{"12:00"}
+                from{"00:00"}
+            }
+            pm{
+                before{"24:00"}
+                from{"12:00"}
+            }
+        }
+        set81{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -3356,7 +3419,7 @@
                 from{"21:00"}
             }
         }
-        set81{
+        set82{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -3374,7 +3437,7 @@
                 from{"00:00"}
             }
         }
-        set82{
+        set83{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -3392,7 +3455,7 @@
                 from{"00:00"}
             }
         }
-        set83{
+        set84{
             afternoon1{
                 before{"14:00"}
                 from{"12:00"}
@@ -3417,7 +3480,7 @@
                 from{"00:00"}
             }
         }
-        set84{
+        set85{
             afternoon1{
                 before{"13:00"}
                 from{"12:00"}
@@ -3443,28 +3506,6 @@
                 from{"00:00"}
             }
         }
-        set85{
-            afternoon1{
-                before{"18:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"24:00"}
-                from{"18:00"}
-            }
-            morning1{
-                before{"10:00"}
-                from{"05:00"}
-            }
-            morning2{
-                before{"12:00"}
-                from{"10:00"}
-            }
-            night1{
-                before{"05:00"}
-                from{"00:00"}
-            }
-        }
         set86{
             afternoon1{
                 before{"18:00"}
@@ -3476,6 +3517,28 @@
             }
             morning1{
                 before{"10:00"}
+                from{"05:00"}
+            }
+            morning2{
+                before{"12:00"}
+                from{"10:00"}
+            }
+            night1{
+                before{"05:00"}
+                from{"00:00"}
+            }
+        }
+        set87{
+            afternoon1{
+                before{"18:00"}
+                from{"12:00"}
+            }
+            evening1{
+                before{"24:00"}
+                from{"18:00"}
+            }
+            morning1{
+                before{"10:00"}
                 from{"06:00"}
             }
             morning2{
@@ -3487,7 +3550,7 @@
                 from{"00:00"}
             }
         }
-        set87{
+        set88{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -3509,7 +3572,7 @@
                 from{"00:00"}
             }
         }
-        set88{
+        set89{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -3527,24 +3590,6 @@
                 from{"00:00"}
             }
         }
-        set89{
-            afternoon1{
-                before{"19:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"24:00"}
-                from{"19:00"}
-            }
-            morning1{
-                before{"12:00"}
-                from{"06:00"}
-            }
-            night1{
-                before{"06:00"}
-                from{"00:00"}
-            }
-        }
         set9{
             afternoon1{
                 before{"18:00"}
@@ -3572,6 +3617,24 @@
         }
         set90{
             afternoon1{
+                before{"19:00"}
+                from{"12:00"}
+            }
+            evening1{
+                before{"24:00"}
+                from{"19:00"}
+            }
+            morning1{
+                before{"12:00"}
+                from{"06:00"}
+            }
+            night1{
+                before{"06:00"}
+                from{"00:00"}
+            }
+        }
+        set91{
+            afternoon1{
                 before{"13:00"}
                 from{"12:00"}
             }
@@ -3592,7 +3655,7 @@
                 from{"21:00"}
             }
         }
-        set91{
+        set92{
             evening1{
                 before{"20:00"}
                 from{"12:00"}
@@ -3610,7 +3673,7 @@
                 from{"20:00"}
             }
         }
-        set92{
+        set93{
             evening1{
                 before{"20:00"}
                 from{"12:00"}
@@ -3624,7 +3687,7 @@
                 from{"20:00"}
             }
         }
-        set93{
+        set94{
             afternoon1{
                 before{"13:00"}
                 from{"12:00"}
@@ -3650,7 +3713,7 @@
                 from{"21:00"}
             }
         }
-        set94{
+        set95{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -3668,7 +3731,25 @@
                 from{"00:00"}
             }
         }
-        set95{
+        set96{
+            afternoon1{
+                before{"18:00"}
+                from{"12:00"}
+            }
+            evening1{
+                before{"22:00"}
+                from{"18:00"}
+            }
+            morning1{
+                before{"12:00"}
+                from{"06:00"}
+            }
+            night1{
+                before{"06:00"}
+                from{"22:00"}
+            }
+        }
+        set97{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -3686,7 +3767,7 @@
                 from{"22:00"}
             }
         }
-        set96{
+        set98{
             afternoon1{
                 before{"18:00"}
                 from{"12:00"}
@@ -3704,42 +3785,6 @@
                 from{"00:00"}
             }
         }
-        set97{
-            afternoon1{
-                before{"18:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"21:00"}
-                from{"18:00"}
-            }
-            morning1{
-                before{"12:00"}
-                from{"04:00"}
-            }
-            night1{
-                before{"04:00"}
-                from{"21:00"}
-            }
-        }
-        set98{
-            afternoon1{
-                before{"18:00"}
-                from{"12:00"}
-            }
-            evening1{
-                before{"21:00"}
-                from{"18:00"}
-            }
-            morning1{
-                before{"12:00"}
-                from{"04:00"}
-            }
-            night1{
-                before{"04:00"}
-                from{"21:00"}
-            }
-        }
         set99{
             afternoon1{
                 before{"18:00"}
@@ -3751,10 +3796,10 @@
             }
             morning1{
                 before{"12:00"}
-                from{"06:00"}
+                from{"04:00"}
             }
             night1{
-                before{"06:00"}
+                before{"04:00"}
                 from{"21:00"}
             }
         }
diff --git a/icu4c/source/data/misc/genderList.txt b/icu4c/source/data/misc/genderList.txt
index e88421b..bd6d238 100644
--- a/icu4c/source/data/misc/genderList.txt
+++ b/icu4c/source/data/misc/genderList.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 genderList:table(nofallback){
     genderList{
         af{"neutral"}
@@ -30,6 +31,7 @@
         ja{"neutral"}
         kn{"neutral"}
         ko{"neutral"}
+        lij{"maleTaints"}
         lt{"maleTaints"}
         lv{"maleTaints"}
         ml{"neutral"}
diff --git a/icu4c/source/data/misc/icuver.txt b/icu4c/source/data/misc/icuver.txt
index b113370..f5a5bac 100644
--- a/icu4c/source/data/misc/icuver.txt
+++ b/icu4c/source/data/misc/icuver.txt
@@ -1,13 +1,14 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 // ***************************************************************************
 // *
 // * Copyright (C) 2010-2016 International Business Machines
 // * Corporation and others.  All Rights Reserved.
 // *
 // ***************************************************************************
-
-icuver:table(nofallback){ 
-    DataVersion { "67.1.0.0" }
-    ICUVersion  { "67.1.0.0" }
+icuver:table(nofallback){
+    CLDRVersion{"38.1"}
+    DataVersion{"68.2.0.0"}
+    ICUVersion{"68.2.0.0"}
 }
diff --git a/icu4c/source/data/misc/keyTypeData.txt b/icu4c/source/data/misc/keyTypeData.txt
index 33733ae..8caeacf 100644
--- a/icu4c/source/data/misc/keyTypeData.txt
+++ b/icu4c/source/data/misc/keyTypeData.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 keyTypeData:table(nofallback){
     bcpTypeAlias{
         ca{
@@ -14,6 +15,7 @@
         }
         valueType{
             ca{"incremental"}
+            dx{"multiple"}
             h0{"single"}
             kr{"multiple"}
             vt{"multiple"}
@@ -35,6 +37,7 @@
         colstrength{"ks"}
         currency{"cu"}
         d0{""}
+        dx{""}
         em{""}
         fw{""}
         h0{""}
@@ -492,6 +495,9 @@
             upper{""}
             zawgyi{""}
         }
+        dx{
+            SCRIPT_CODE{""}
+        }
         em{
             default{""}
             emoji{""}
diff --git a/icu4c/source/data/misc/langInfo.txt b/icu4c/source/data/misc/langInfo.txt
index 29d3715..cdd16b3 100644
--- a/icu4c/source/data/misc/langInfo.txt
+++ b/icu4c/source/data/misc/langInfo.txt
@@ -1,11 +1,13 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 // Generated by ICU4J LocaleDistanceBuilder.
 langInfo:table(nofallback){
     likely{
-        languageAliases{  // 169
+        languageAliases{  // 225
             "aam","aas",
             "adp","dz",
+            "agp","apf",
+            "ais","ami",
             "aju","jrb",
             "alb","sq",
             "als","sq",
@@ -17,11 +19,16 @@
             "ayx","nun",
             "azj","az",
             "baq","eu",
+            "baz","nvo",
             "bcc","bal",
             "bcl","bik",
             "bgm","bcg",
             "bh","bho",
+            "bhk","fbl",
             "bjd","drl",
+            "bjq","bzc",
+            "bkb","ebk",
+            "btb","beb",
             "bur","my",
             "bxk","luy",
             "bxr","bua",
@@ -36,14 +43,23 @@
             "cqu","quh",
             "cwd","cr",
             "cze","cs",
+            "daf","dnj",
+            "dap","njz",
             "dgo","doi",
             "dhd","mwr",
             "dik","din",
             "diq","zza",
             "dit","dif",
+            "djl","dze",
+            "dkl","aqd",
             "drh","mn",
+            "drr","kzk",
+            "dud","uth",
+            "duj","dwu",
             "dut","nl",
+            "dwl","dbt",
             "ekk","et",
+            "elp","amq",
             "emk","man",
             "esk","ik",
             "fat","ak",
@@ -51,11 +67,16 @@
             "fuc","ff",
             "gav","dev",
             "gaz","om",
+            "gbc","wny",
             "gbo","grb",
             "geo","ka",
             "ger","de",
             "gfx","vaj",
             "ggn","gvr",
+            "ggo","esg",
+            "ggr","gtu",
+            "gio","aou",
+            "gli","kzk",
             "gno","gon",
             "gre","el",
             "gti","nyc",
@@ -69,13 +90,18 @@
             "ibi","opa",
             "ice","is",
             "ike","iu",
+            "ill","ilm",
             "ilw","gal",
             "in","id",
             "iw","he",
+            "izi","eza",
+            "jar","jgk",
             "jeg","oyb",
             "ji","yi",
             "jw","jv",
+            "kdv","zkd",
             "kgc","tdf",
+            "kgd","ncq",
             "kgh","kml",
             "khk","mn",
             "kmr","ku",
@@ -83,15 +109,19 @@
             "kng","kg",
             "knn","kok",
             "koj","kwv",
+            "kpp","jkm",
             "kpv","kv",
             "krm","bmf",
             "ktr","dtp",
             "kvs","gdj",
             "kwq","yam",
             "kxe","tvd",
+            "kxl","kru",
+            "kzh","dgl",
             "kzj","dtp",
             "kzt","dtp",
             "lbk","bnc",
+            "leg","enl",
             "lii","raq",
             "llo","ngt",
             "lmm","rmx",
@@ -100,21 +130,31 @@
             "mao","mi",
             "may","ms",
             "meg","cir",
+            "mgx","jbk",
             "mhr","chm",
             "mnk","man",
+            "mnt","wnn",
             "mo","ro",
+            "mof","xnt",
             "mst","mry",
             "mup","raj",
+            "mwd","dmw",
             "mwj","vaj",
             "myd","aog",
             "myt","mry",
             "nad","xny",
+            "nbf","nru",
+            "nbx","ekc",
             "ncp","kdz",
+            "nln","azd",
+            "nlr","nrk",
             "nns","nbr",
             "nnx","ngv",
             "no","nb",
+            "noo","dtd",
             "npi","ne",
             "nts","pij",
+            "nxu","bpp",
             "ojg","oj",
             "ory","or",
             "oun","vaj",
@@ -131,20 +171,28 @@
             "pry","prt",
             "puz","pub",
             "quz","qu",
+            "rmr","emx",
             "rmy","rom",
             "rum","ro",
+            "sap","aqt",
             "sca","hle",
             "scc","sr",
             "scr","hr",
+            "sgl","isk",
             "skk","oyb",
             "slo","sk",
             "spy","kln",
             "src","sc",
+            "sul","sgd",
+            "sum","ulw",
             "swh","sw",
             "tdu","dtp",
+            "tgg","bjp",
             "thc","tpo",
+            "thw","ola",
             "thx","oyb",
             "tib","bo",
+            "tid","itd",
             "tie","ras",
             "tkk","twm",
             "tl","fil",
@@ -155,22 +203,30 @@
             "ttq","tmh",
             "tw","ak",
             "umu","del",
+            "unp","wro",
             "uok","ema",
             "uzn","uz",
             "wel","cy",
+            "wgw","wgb",
+            "wit","nol",
+            "wiw","nwo",
             "xba","cax",
             "xia","acn",
             "xkh","waw",
             "xpe","kpe",
+            "xrq","dmw",
             "xsj","suj",
             "xsl","den",
             "ybd","rki",
             "ydd","yi",
+            "yen","ynq",
+            "yiy","yrm",
             "yma","lrr",
             "ymt","mtm",
             "yos","zom",
             "yuu","yug",
             "zai","zap",
+            "zir","scv",
             "zsm","ms",
             "zyb","za",
         }  // languageAliases
@@ -214,627 +270,626 @@
             "YU","RS",
             "ZR","CD",
         }  // regionAliases
-        trie:bin{  // BytesTrie: 9874 bytes
-001a6dcc1774c4ef77c26977a2b978a4
-5479a4c47a0f6d7f7a5b7a30e1ad9de8
-2ef5af4010e1a53a022a3c42cc2e4811
-616e01e2a3fef4a3f90b4d24540e54ca
-d5552a5610cea3fc10d3a3fb4dcade50
-2a5310d2a3f702c1a3f6c6a3f4c8a3f5
-47d4eb473248d81e434910c4a3f101c2
-a3fac6a3ef6d326e36733a7910e2ad9d
-10e9af3e10e5af3f10ed22022aa91043
-b6094910c4a9126817683269366b3a6c
-10edaf3d10f8adba10e1af3c10f4ad98
-61326436653a6710e8adc910e7af3910
-eaaf3a10e1af3b00126d46741b743475
-387742e1adedefaf0410edaf0901f5af
-0af6af0b10e1af0c6d3c6e406f50725a
-7301e7ad89ebaf0810efaf0002e3af01
-e9af02f5af0301e2af05f3af0610f3af
-0767266736683a693e6a4e6c10f3adff
-10e9adf810e7adf902e2adfaf5adfbf6
-adfc01e1adfde9adfe61386254636465
-01eca521f2adf704e5adeeeaadefecad
-f0eeadf1f2adf202f0adf3f1adf4f2ad
-f510e9adf60c6e3d7221722e7332774e
-e8af1010e2af1604e1adc1e9af17eca5
-30edaf18f2af1910e5af1a6e346f3e70
-01e5a790f2adbe01e1adb8f2af1301e7
-af14eeaf15651d653a6c3e6d02e6af12
-eeadaef2adb110f3af0f02e1af11e3ad
-aae4adab613462386301efad78f2ad77
-10f6af0d10e9af0e0d6d497330733075
-34e9a735efaf2d10f3af3204e1af33e5
-32eaaf36f4af37f7af38012a2e481261
-6ef3af35012aaf344310ceaf356d3a6f
-3e7202e2af2fe5af30ecaf3110ecaf2c
-10eeaf2e6520653e67426b4c6c02e5af
-29e7af2aecaf2b10f2af2501f2af26f7
-af2710efaf28612e62606410e4a73507
-f40cf4af1ef6af1ff9af20faaf21eda7
-baefaf1bf0af1cf3af1d02e1af22e2af
-23f9af2474a25275a4d0760a6f1fe509
-e5ade0e9ad64efade86f3472387501ee
-adebf4adec10f4ade910efadea613c65
-4c69566c606d01e6ade6f7ade702e7ad
-dee9adceeeaddf01e3ade1f0ade201e3
-ade3f6ade410f3ade500267576e91ff2
-0ef2abcaf3abcef4abd4f767f9abe4e9
-abafebabb6ecabbaeeabc0efabc27a24
-7a36e1ab8ee5aba0e72ee8abab10edab
-e7012a2e41127261e2aba7012aaba650
-10cbaba7753e7654776478ce017901e1
-abe5f6abe603e8abdbecabdcedabddf1
-abde02e4a7bdecabdff5abe001e8abe1
-f1abe26b7d7049705e716e7272738274
-06f10cf1abbef2abd8f3abd9f4abdae4
-abd5e5abd6eaabd702e9abc6edabc7fa
-abc810efabc902f5abcbf6abccf7abcd
-04e4abcfe6abd0e7abd1eaabd2f7abd3
-6b426c526d626e6c6f02e6abc3e7abc4
-f1abc502ecabb7f2abb8f4abb902e6ab
-bbf8abbcf9abbd01e8abbef9abbf10e8
-abc16546655e6674677868886906eb0c
-ebabb2edabb3efabb4f6abb5e2a3b1e6
-abb0e7abb103e4aba1edaba2efaba3f4
-aba410e9aba502e3aba8efaba9f5abaa
-02ecabacf1abadf2abae6144625a6386
-6403e4ab9ce7ab9de8ab9ef5ab9f03ea
-ab8fecab90eeab91f1ab9206e70ce7ab
-96efab97f7ab98faab99e3ab93e4ab94
-e6ab9501e9ab9af9ab9b0f735fe72ce7
-42ebabeef2ad4cfa012a8641127261e2
-addc012a2e43127972ecabeb022aabea
-4b2a4d10ceabec10daabeb7360746476
-687a10ee012a2e41127261e2addc022a
-abf9412a4310ceaddd10c6addc10e1ad
-d810f2add901e8addaecaddb6d326d3e
-6e426f707202e9add5f4add6f7add710
-e2abf001f226f8add3012a2e44126576
-e1add2012aadd14e10d0add210ebadd4
-62326436673a6c10e9abef10f5abe810
-edabe910e1abed70c39870a4fc71a6da
-72a6e7730029797dec39f229f509f5ab
-7df6ab83f7ab84f22cf3ab76f4ab7a22
-032aab2f4da4c2522a5410d2ab3301cf
-ab32d5ab30ecab58edab5deeab64efab
-6af16de50fe5ab3fe7ab44e8ab49e9ab
-4eebab5479687a72e1ab23e3ab2ee403
-2aab3944324b3a5312696ee4ab3c1265
-76e1ab3a12686feaab3b01ecab8cf2a5
-0d10ecab8d6cb7725975317534775078
-01eeab8af7ab8b04e1ab7ee5ab7febab
-80f2ab81f3ab8205e809e8ab84f0ab88
-f6ab89e2ab85e3ab86e7ab8772347350
-7401ebab7bf1ab7c04e2ab73e3ab2eee
-ab74f2ab75f8a5f302e4ab77e7ab78f9
-ab796c4a6d666e8c6fa2437003e4ab70
-ecab71f3ab72f9a77604e4ab59e9ab5a
-ecab5befab54f9ab5c05f009f0ab61f1
-ab62f3ab63e1ab5eeaab5feeab6004e3
-ab65ebab66f0ab67f8ab68f9ab6904e7
-ab6bebab6cf1ab6df5ab6ef9ab6f673e
-67426858696e6a846b02e3ab55f2ab56
-f3ab5703e1ab45f3ab46f7ab47faab48
-03e9ab4aebab4beeab4cf5ab4d03e4ab
-4fe7ab50ecab51edab5210f2ab53614a
-6276638664a26b6503e6ab40e8ab41e9
-ab42f3ab4306f30cf3ab27f4ab28f6ab
-29faab2ae6ab24e8ab25f1ab2602e1ab
-2be5ab2cf0ab2d06ee0ceeab36efab37
-f2a701f3ab38e32cebab34ecab352205
-5211522e53325410d2ab3310cfab3210
-d5ab302aab2f312a4d10c5ab311137b2
-ab3001e3ab3de8ab3e00166e63752bec
-09eca9eef3a9dff4a9fb754c7750e101
-2a2e41127261e2a9d7012aa9d65010cb
-a9d710f5a9fd10e1a9fe7217722e733e
-7410f0a9fc02e1a9f7e4a9f8e7a9f910
-f3a9fa6e346f4a7001e1a9f5efa9f603
-e2a7cee7a9f1eea9f2f4a9f310eea9f4
-66306b176b2e6c386d10f3a9f001e1a9
-ecefa9ed01e1a9eff4a9316634683869
-01eca9eaf0a9eb10eca9e701eca9e8ee
-a9e9614e627e638864926504e4a9e4ef
-a9e5f2a571f3a571f8a9e604e7a9d8ec
-32eda9dbf0a9dcf5a9dd012aa9d95012
-686cf0a9da01e9a9def5a9df01e4a9e0
-eda9e101e3a9e2f4a9e3017526f5a9ff
-02e3ab00e7ab01faa9ff00146f457917
-ef09efa94ef5ab1cf7ab1f792cedab0f
-eeab1410f5ab226f3c724c7450755477
-01ebab20efab2102e2ab17e6ab18efab
-1910efab1a10edab1b02e5ab1de7ab1e
-eda94e6934693c6a566b5a6d5e6e01e1
-ab15e7ab1601e1ab0ae622012aab0b4e
-10ccab0c10f3ab0d10f4ab0e03e6ab10
-efab11f4ab12f5ab1361366346654a67
-5a6810e7ab0902e9ab02eaa963efab03
-10e6ab0402eaab05ecab06f3ab0710ee
-ab086da2576ea6446f0b741ded09eda5
-a2f2a9cef3a9d1742a7a34e3a9c601e1
-a9d3eba9d410eda9d57017702e723273
-10e1a9d210eda9cd02efa9cff5a9d0f9
-a9ce673a6b3e6e02e7a9caeea9cbf3a9
-cc10e3a9c701f2a9c8f6a9c90022749f
-e926ef0fefa94ef2a959f3a492f4a95d
-f9a3cee9a90deba907eca943ee012aba
-da4d126f6ee7a541783d7834793e7a64
-e7a931e8a93701e3a96ceda96d05f709
-f7a971f8a972faa973eba96eeda96ff6
-a97005f009f0a977f7a978faa979eba9
-74eda975eea9767444755a76707703eb
-a969f2a538f6a96af7a96b03e3a95ee6
-a95fe9a960f2a96103e1a962f0a963f2
-a964f3a96502e1a966eea967f9a96869
-856e446e426f5e707a71907202e4a95a
-eaa95befa95c04e1a94ae6a94be9a94c
-ebb628f7a94d04e1a94fe5a950e8a951
-f3a952f8a95303f0a954f3a955f4a956
-f8a95710eca958693e6b686c7e6d02ef
-a947f5a948f8a94903e6a93aeea93bf3
-26f7a93e012aa93c4d126564e6a93d03
-e9a93feca940f0a941f7a94202e5a944
-f0a945f3a9466549653e666a67866802
-e9a938eca939f2a50006ee0ceea928f2
-a929f4a92af5a92be4a925e5a926eba9
-2704e1a92ce5a92deea92eefa92ff1a9
-3004e8a932eca933efa934f0a935f9a9
-36615e62a25663a2636406e80ce8a921
-eaa922f2a923f8a924e1a91ee5a91fe6
-a9200bee23f718f7a90ff926faa91322
-022aa910432a4910c4a91210c3a911ee
-b439efa90df3a90ee709e7a90ae9a90b
-eba90ce3a907e4a908e6a90904e8a914
-efa915f1a916f5a917f7a91804e9a919
-f0a91af1a91bf2a91cf5a91d0021745f
-e41dee0feea9a4efa9aaf2a9b1f6a9be
-f9a9c2e4a989e5a98ce7a991eca54d79
-1579307a3ae1a97ae2a98201eda9c3ee
-a9c410e9a9c574387542775e7801f1a9
-c0f2a9c101eda9b7f2a9b804e9a9b9f0
-a9baf3a9bbf6a9bcf8a9bd10e2a9bf6a
-5d6f326f4870647168726c7303eba9b3
-eea9b4efa9b5f3a9b604e4a9abe5a9ac
-eea9adf0a9aef5a9af10e9a98c10efa9
-b010e2a9b26a4a6b4e6d586e04e6a9a5
-e8a9a6eba9a7eda9a8f0a9a910efa99f
-01e7a9a0efa9a101e7a9a2faa9a36637
-665a675e686e6906ee0ceea99bf5a99c
-f9a99dfaa99ee6a998e9a999eaa99a10
-f2a99002e1a992e2a993eca99402e2a9
-95e5a996f7a997613e636a64906502e2
-a98df7a98ef8a98f06ee0ceea97ef0a9
-7ff1a980f3a981e3a97be6a97ceba97d
-05e809e8a986efa987f5a988e1a983e5
-a984e6a98501e3a98af3a98b66c76169
-c49d69a4166aa4c46ba60e6c001b744a
-e717ef0cefa7f5f4a7fdf5a7fff6a903
-e7a7dfe9a7e1eea7f2771577307a34e1
-a7cae2a7d110eca90401e8a905faa906
-742e75327610f3a90310e7a7fe03e1a9
-00efa901f9a3d5faa9026a4a6d316d32
-6e426f4c7210e3a7fc02eea7efefa7f0
-f0a7f101f3a7f3f5a7f405f209f2a7f9
-f3a7fafaa7fbeaa7f6eba7f7eca7f86a
-346b386c01e5a7edeea7ee10f0a7ea01
-e9a7ebf4a7ec6448646c6570679c6906
-e70ce7a7e6e8a7e7eaa7e8f3a7e9e1a7
-e2e4a7e3e6012aa7e44c12696de2a7e5
-10e2a7d706f00cf0a7dbf1a7dcf5a7dd
-faa7dee4a7d8e5a7d9eda7da10e7a7e0
-6134625a6301eda7d5f0a7d605e809e8
-a7ceeaa7cff3a7d0e2a7cbe4a7cce7a7
-cd02e5a7d2f5a7d3f7a7d400197739eb
-17f30cf3a70ff4a727f5a71bf7a728eb
-a569eea722efa724e409e4a711e7a716
-e9a719772a7a34e1a70801eda729f3a7
-2a01e8a72be9a72c6a366d176d326e36
-6f3a7210e9a72610efa72110e8a72310
-f5a7256a2e6b326c10efa72010eaa71a
-04e5a71beba71cf4a71df7a71ef8a71f
-641a643466446701e2a717e5a71802e4
-a712e9a713f5a71410e5a715613a6244
-6302e1a70ee5a70fe8a71001eea709f2
-a70a02e1a70be2a70cf9a70d0b721ae9
-09e9a735f6a73bf7a73c722a752ee1a7
-2d10e1a73910f4a73a67176734693e6d
-01e3a737eca73801eba733efa73410e2
-a736612e62386510eea73201e2a72eed
-a72f01efa730f5a731002875c0f1eb7e
-f249f628f6a794f7a7b7f9022a32414c
-4c126174eea7c4022aa7c2432a5410d2
-a7c410cea7c3127261e2a7c3f2a787f3
-3ef5022aa46941a4755912657ae9a782
-012aa7a044126576e1a7a1eb38eca775
-eda77aeea786efa78b012a2e41127261
-e2a770042aa76e41324336493a4d10ce
-a77210c6a76f10cea77010d2a7717a18
-7a38e1a5b1e7a759e9a765eaa76902ea
-a7c7f2a7c8f4a7c9753c766e777e788e
-7901e5a7c5f8a7c607ed0ceda7b0eea7
-b1f0a7b2f3a7b3e2a7ace4a7ade5a7ae
-eaa7af02e7a7b4f2a7b5f8a7b602eaa7
-b8efa7b9f1a7ba06ed0ceda7bef0a7bf
-f7a7c0faa7c1e1a7bbe3a7bce5a7bd6b
-c0db7063704a7170728673a2457403e2
-a7a8eda7a9efa7aaf2a7ab05f209f2a7
-93f6a794f8a795e5a790e6a791efa792
-03e2a796e6a797f3a798f9a79905ec09
-eca79df3a79ef5a79fe3a79ae9a79bea
-a79c05e809e8a7a5eaa7a6f2a7a7e2a7
-a2e4a7a3e6a7a46b506c5a6d706ea25d
-6f04e9a78ceba789eca78df3a78efaa7
-8f01e3a773eaa77403eea776f1a777f4
-a778f8a77906f22cf232f3a783f5a784
-f7a785022a32414c5912657ae9a78202
-2aa77e492a4c10c2a78010d2a77f1272
-61e2a781e2a77be8a77cefa77d04e3a7
-87e6a788e7a759eea789f0a78a665266
-486758686869a06a03e4a76ae7a76bf3
-a76cf9a76d02efa756f2a757f9a75802
-e5a75ae6a75bf0a75c08f10ff1a760f3
-a761f4a762f7a763faa764e1a75de2a7
-5eebac8deea75f02eaa766f5a767f7a7
-6861446276639c64a2486502e1a753ee
-a754faa75507e90ce9a741eaa742eda7
-43efa744e1a73de2a73ee3a73fe4a740
-05f109f1a748f8a749f9a74ae4a745ed
-a746f0a74703e7a74beba74ceca74df4
-a74e03e5a74fe8a750eca751f4a75266
-a2bf67a4746800137543f20ff2a701f4
-a704f5a705f9a342faa7077534e138e5
-a5eae95cefa5fd10e9a70622032aa5e0
-372e43345310c4a5e11133b6a5e110cd
-a5e2012aa5ec4c126174eea5ed6c386c
-3c6d466e506f6c7301e2a702eea70301
-e1a5f4f5a5f501e4a5f6f4a5f704e4a5
-f8e5a5f9eaa5faeea5fbefa5fc02e3a5
-feeaa5fff4a700615862746478687c69
-05e809e8a5f1eca5f2eda5f3e1a5eee6
-a5efe7a5f004e7a5e3eba5e4eda5e5f7
-a5e6faa5e710e2a5e810f9a5e910f9a5
-eb00117553e90fe9a57beaa57fefa582
-f2a588f9a59775427694e1a571e6012a
-a5774112646ceda57809e80fe8a591f1
-a592f2a593f6a594f9a595e2a58de332
-e4a58ee5a58fe6a590012aa577411264
-6ceda57810f2a5966d2f6d4e6f527062
-71667204e3a589e5a588f0a58af2a58b
-f3a58c10f0a58102e4a583eea584f2a5
-8510e5a58610f3a5876132665669606c
-10f2a58005e908e9a575eea576f467e1
-a572e2a573e7a57401e9a579eda57a02
-e1a57ceca57df4a57e001a6e9f791dec
-0ceca5bdeea5c1f5a5d1f6a5d9792ce1
-a598e4a5aa01e1a5a3e9a5df733a733e
-754276747702e3a5dce9a5ddf4a5de10
-f7a5d007f20cf2a5d5f7a5d6f8a5d7fa
-a5d8e2a5d2e3a5d3e4a5d4e7a5c102e6
-a5daf2a5b4f3a5db6e5a6f6a7204e2a5
-a6e332e5a55cf4a5cef7a5cf012aa5cc
-4c12696ee2a5cd02e4a5c2e7a5c3efa5
-c407ee0ceea5c4f2a5c9f3a5caf4a5cb
-e4a5c5e6a5c6e9a5c7eda5c867396a23
-6a386b486c526d01eda5bff6a5c002eb
-a5b8eea5b9f5a5ba01eea5bbf0a5bc10
-eba5be673468386901eca5b6eda5b710
-eea5b410f3a5b56428642e653e6610eb
-a5b302e5a5abeea5acf2a5ad05ef09ef
-a5b1f2a52efaa5b2e2a5aeeaa5afeca5
-b0612e626c6310f2a5a909ed0feda59e
-eea59ff7a5a0f9a5a1faa5a2e1a599e6
-a59ae7a59be8a59ceaa59d05ef09efa5
-a6f9a5a7faa5a8e1a5a3e6a5a4eda5a5
-63c2f263a29d64a4fc650011772dee19
-ee38efa565f3a567f4a55af5a366012a
-a56153126861f7a56277307834e5a555
-eca55c10efa56f10f4a5706d466d486e
-7a728473887403f2a56bf4a56cf5a56d
-f8a56e02e1a55de9a55eeb012a2e4e12
-6b6fefa560012aa55f4710cea56001ee
-a563f1a56410e9a56602e7a568eba569
-f5a56a623e664267466b02e1a559eba5
-5af9a55b10f5a55410e9a55601eca557
-f9a558001b725ce821f316f3a51af52c
-f6a520f9a521012aa51e47126c61e7a5
-1fe8a3ebefa510f2a513771277307a34
-e1a3e1e5a3e710e4a51310e5a51a722e
-73547410e4a51d05ec09eca517eda518
-f3a519e8a514eaa515eba51601e2a51b
-f7a51c69526c306c326d3c6f6c7010f3
-a51201e1a50ce4a50d02e5a50ee7a50f
-ee022aa26342a2b44811616e01e2a3fe
-f4a3f910f0a51169406a446b03e2a508
-eca509efa50af9a50b10e3a50402e1a5
-05eda506f6a507659565a28666a28767
-a2886805ef09efa501f0a502f2a503e9
-2ceba3ffeda500022a3c42a25f481161
-6e01e2a3fef4a3f90b4d335417542e55
-385610c4a3fc01c8a3f8d7a3f901cba3
-fad3a3fb4d2e50385310d2a3f701cfa3
-f2d9a3f302c6a3f4c8a3f5daa3f6470e
-473048b4674910c4a3f110c6a3ef2aa3
-ec412a4210cea3ee10d5a3ed126f70ef
-a3fd10e2a3e810e1a3e910e7a3ea6134
-623e6301e8a3e5f0a3e601e4a3e2eea3
-e310eaa3e40016726f791ce508e5a52e
-f6a54efa45792a7a34e1a52201efa551
-f5a55210e7a553751d752e764a7710f7
-a55004e1a549e3a54ae4a54be7a54cf4
-a54d10e1a54f724073747403eda545f0
-a546f3a547f9a54802e82ce9a542f3a5
-43012a2e4d126f6ee7a541012aa54043
-10cea54110e2a54467446a1a6a406e44
-6f03e2a53de9a535f0a53ef7a53f10e5
-a53b10eaa53c673468606901e1a539f1
-a53a06ec0ceca534efa535f2a536faa5
-37e1a531e8a532e9a53310e4a538613c
-6268637264766501e4a52feea53006e8
-0ce8a526eba527f2a528f6a529e4a523
-e6a524e7a52501e4a52af1a52b10e3a5
-2c10eea52d2aa4f761be9d62002373a5
-e51ded0feda3a8eea3adefa3b1f2a3ba
-f3a3bfe5a37ce7a389e8a38de9a39377
-417732783c794c7a72e1a36201e4a3d2
-f2a3d302e8a3d4eba3d5f2a3c705f309
-f3a3d9f6a3daf8a3dbe5a3d6eea3d7f2
-a3d804e1a3dce5a3dde6a3dee8a3dff7
-a3e07332744875587610e2a3d103eaa3
-c0f1a3c1f3a3c2f4a3c302efa3c4f4a3
-c5f6a3c609ed0feda3ccefa3cdf2a3ce
-f3a3cff5a3d0e1a3c7e3a3c8e4a3c9e7
-a3caeba3cb6a7d6e3b6e486f58706871
-6c7203e1a3bbe8a3bcf8a3bdfaa3be02
-e7a3aeeda3aff0a3b002eaa3b2eda3b3
-eea3b410f9a3b503e3a3b6e9a3b7f0a3
-b8f6a3b96a466b786ca4ab6d03e8a3a9
-eba3aaf1a3abf5a3ac07ef0cefa39ef2
-a39ff4a3a0faa3a1e8a39ae9a39beaa3
-9ceea39d04e3a3a2eda3a3f1a3a4f5a3
-a5f6a3a6656a6562669467a24468a24b
-6906ed0ceda396eea397efa398f1a399
-e2a394e7a395eba37507f40cf4a381f7
-a382f8a383faa384e6a37de8a37eeaa3
-7feda38003e4a385f1a386f4a387f9a3
-8802e3a38aeea38bf8a38c05ec09eca3
-91efa38df9a392e2a38ee7a38fe9a390
-6132626463906410e4a37b07f20cf2a3
-67f3a368f6a369f8a36aeca363eea364
-f0a365f1a36606e40ce4a36eeaa36ff0
-a370f2a371e1a36be2a36ce3a36d09ed
-0feda376eea377efa378f1a379f5a37a
-e3a363e6a372e8a373e9a374eca37500
-184dc26554c0ca57365736584e59645a
-12616ee2add001612c631168efa9a911
-72e1adcf01702a731175f8691165efa9
-e501652c691169e9a719117ae9a78254
-3455a28756126169e9adce056746674a
-68506901622a7210e8adcd10f4012aa3
-b14210d445116ce7adca106101e158e9
-042aabab43324b364c3a5410c8abab10
-cea7d610c8adcb10c1adcc012aa54e4d
-10d6a54e6130657c66116ee7adc9056d
-116d2e6e327610f4a3a710ecab8e10e7
-abe367346b386c01e5ab9cf5a75e10e2
-adc710f2adc8116cf5aba0126761f2ab
-ed50c0c350a27252a2a8530669436942
-6f6a759079016c2a7210e3a50d10efad
-c601643e6e01e4ab3ce8012aab4e4c10
-cbab4e10e4adc302672e72387910efa5
-0f01e4ab6befadc410e1ab73116ee4ad
-c5613e675e6801612a7210e4adc210f7
-a562026d2e72327510f2ab2a10f2ab61
-10e2adc1116ef7a34b046138654a6850
-6c76721174e9adbe016c2a7510e3a51d
-10eda11172edadbc02612e6c326e10f8
-a9e910e7adbd01e9a9d9f0a9da1172e4
-a5f6026a306f3675116ef2a9ad116ee7
-adbf1168e7adc04d7c4ea2a44f036742
-6c48724e7301672a6d10e1adbb10e5a9
-d21161edab451163ebab28016b2a7910
-e1a9ce10e8a9d407722e725a74607566
-79116df2032aa3ce492e4d325410c8ad
-b610cea76210cda3ce116fefa95c1165
-e9adb4116cf4adb5614265746c9a6f01
-642a6e10e7a54110e9adb30368326b36
-6e3a7210e3adaf10eaadac10e1adad01
-e4a973e9adae0264346e387201e3adb1
-efadb210e6a93d10e4adb01179eda943
-046138624c65506b56731168f5adba01
-6e2a7210e2adb810e4adb71161f49f11
-77e1adb9116fefa56047c4154ac3294a
-a6ba4ba6d34c03614665a69669a69879
-01632a6410e9adab10e9adaa026ea673
-6fa6747410ee001a4bc139545b571457
-ac6958ac6d59305a01c1abf5d7ab6410
-d4ad68544055825603c1ad63c5ad65ce
-ad64d5a3930bce14d609d6abdfd7abcc
-daab84ceada8cfabc2d2abcacbc5cdcb
-abb7ccad5fcdabb604c1ada9c7ad61d3
-a561d9ad62daabf94e824e8a50a24a52
-a26d530cce17d40cd4ad59d5a79dd6ad
-5ad9ada7cead57cfab6ad2ad58ca09ca
-ad55cbab54cdad56c3ad54c5ab83c9ab
-5806c70cc7abf1c9ad47cca54dcfa9aa
-c1ad44c3ad45c5ad460acc14d409d4ad
-50d7a9ddd9a5c1cca9eecdad4dd2ad4e
-c1ad49c5ad4ac6ad4bc7abc6c8a57d03
-c5ad53cfa94ed5a79dd7ab1f4b9e4ca2
-434d0010cd1dd40fd4a95dd5a92dd8ab
-f3d9a910daad43cda73fcfada5d1ad41
-d2ada6c60cc6ad40c7a931cbada4cca3
-a8c1ada3c3ad3ec4ad3fc5ab3101c5ad
-33cdada204c9ad39d3ad3ad4a7fdd5ad
-3bd6a90343bd465f464c475c48a24849
-04c3ad30c4a711d2ada1d3a70fd4a727
-02c9a57bcfa582d2a5880cce17d30cd3
-ad2bd4ad2cd5abf8d7ad2dcead28d0ad
-29d1ad2ac608c6ad27c867cca775c1ad
-26c2abfbc5ada004cdad2ecead2fd2a7
-01d4a704d5a705435244a2424505d309
-d3a567d4ad9adaad25c1ad21c3ad22c5
-a55a0fcf1ad60cd6ad1cd7abfdd9ad9e
-daa51acfad19d0ad1ad2ad1bd5abf6c9
-c68bc9ad16ccad17cdad18cead9d05cb
-09cba522cfad1fdaad9fc5a52ec7ad52
-caad1e345e34ae864178420bce14d209
-d2a9fbd5a73fd6ad12cead0fcfad10d1
-ad11c909c9ab14caad0dccad0ec1a3bf
-c5ad0ac6ad0b0cd217d50cd5abf2d7ad
-08d8ad09daa35ed2ad05d3ad06d4ad07
-cd09cdad9ccfad03d1ad04c4ad00c6ad
-9bcc6d2aa561312c321133b0ad9a1137
-b2a79d10e1a9ab10ef012aa7f54c10c1
-a7f51170e3a7db026d2e6e327310f5a7
-e910e2a7e501e1a7cbe2a5cd01613a70
-1161ee012aa72d4a10d0a72d016d2a76
-10e1ad9610efad95056e1e6e306f3674
-1168e9ad991164e1a7861172e5012aa7
-8b4b01d0ad35d2a78b61306844691174
-f3ad98016c2a6e10e1ad9710e9a55b02
-612e6d326f10eaab3b10f2a9f710f201
-2aa77a4b10c8a77a473448a25c491274
-61eca56c0465466c5a6f60727a75016a
-2a7210f5a9d610f2a5d1116ff2012aa5
-b14710c5a5b11161e7a51f016e2a7410
-e8a5cb01e7ad89eda5680161506510eb
-032aa55c432e47325410d2a38c10d9ad
-1d10d2a55c10eead8a056c186c306d36
-75116ee7ad941175f7a5f5106e01e7a5
-faf0a96b6130659c691172e1ad93016e
-2a7410f2a93c05ef24efad8df34cf403
-2aa3f9482e4d325410d7a3f910cba3f0
-10cfa3f2012aa3ec4310cea3ece2a3fe
-e7ad8be9ad8c1162f2054917493a533e
-5502c1ad91cbad8fd3ad9210cca5ea10
-c5ad902aa5ea432a4710c2ad8f10c1ad
-8e43c106437044a2bf450267406c4674
-1168e9012a754501d2ad24d4751179f0
-a55801622a7910edad8810e1ad870461
-a26868a2776fa28670a288791172ec0a
-4d335414542e55385810cbad8001caab
-a6d2ad7f10c1abee4d2e523e5310cbad
-7e02c4ad7ccba907cea54002cfad7dd3
-ab2fd5ab1c2aab1c4138423c474c4b01
-c7a7c2daad3710ccad7902c1ad7ac7a3
-89d9a37c01c52dd2ad7b026b2e6e3272
-10e9ad7710eda3e610f3a51302612e65
-327210f3ad7810eda50610f2a5031170
-f4a5111172f4a5cc03653469866f8c75
-1170ecad861176e106491749324d364e
-3a5010cba3c610cea5ec10d5ad8310d0
-a98c2aa5ec422a4610caad8210d4ad81
-1161ebad841167f2ad852aa25441aa31
-42056f1f6f3e72447501672a6810e4ad
-7610e9ad751170efa3fd106101e8a9ec
-e9ad746130655c68116bf3ad73036c32
-6d36733a7410ebad7210e9ad7110f5a3
-6a10f3a3c1116ee7012aa3ad4210c4a3
-ad00214ac1c052c0cc5638563c575858
-6259665a01d2abf4d7ab6404c1ad63c4
-ad64c5ad65cead64d5a39301c6ad66d3
-ab5d10cbad6703c4abffc5abffd4ad68
-d5ab2f5246536c54a2575503c1abeec7
-ad61d9ad62daabf905d309d3ab2fd5ab
-1cd7ab1fc5ad53c8ab64cfa94e0ecd1a
-d40cd4ad59d5ab1cd6ad5ad9ad5bcdad
-56cead57cfab6ad2ad58c50cc5ab83c9
-ab58caad55cbab54c1abfac3ad54c4ab
-fe0ecd1ad20cd2abcad6abdfd7a3f9da
-ab84cdabb6cead60cfabc2d0ad5fc80c
-c8ababcaaba6cbabb7ccad5fc4ad5cc6
-ad5dc7ad5e4e644e404fa89650785102
-c1ad51cfad52d5abfb09cc0fcca54dcf
-a9aad0a98cd1ad04d4abfac1ad44c3ad
-45c5ad46c8a393c9ad470dcd17d40cd4
-ad50d7a9ddd9a5c1daad49cdad4dd2ad
-4ed3ad4fc70cc7abc6c8a57dcbad4ccc
-a9eec1ad49c5ad4ac6ad4b4aa2484ba2
-4c4ca2644d0012ce20d50fd5a92dd6a5
-4ed8abf3d9a910daad43cea540cfa3f2
-d1ad41d2ad42d4a95dc60fc6ad40c7a9
-31cba907cca3a8cda3cec1ad3dc3ad3e
-c4ad3fc5ab3101cfad32d0a72d07d00c
-d0ad35d2a78bd7ad36daad37c5ad33c7
-a7c2c8a77acdad3408d30fd3ad3ad4a7
-fdd5ad3bd6a903d9ad3cc1a7f5c2ad38
-c9ad39cbab4e41c1604598456a46a241
-47a24e48a2754907d10cd1ad31d2a571
-d3a70fd4a727c3ad30c4a711cca5eace
-a5ec09d20ed2ad24d3a567d475d5abfb
-daad25c1ad21c3ad22c5a55ac79bc8ad
-2304c9a57bcfa582d1ad04d2a588d8a5
-880bd014d309d3ad2bd4ad2cd7ad2dd0
-ad29d1ad2ad2a55cc808c867cca775ce
-ad28c1ad26c5a5b1c6ad2706d20cd2a7
-01d4a704d5a705d6ad0bcba3f0cdad2e
-cead2f415e42a24c43a2834406cb0ccb
-a522cfad1fd9ad0ddaad20c4a52ec5a5
-2ecaad1e0dd117d40cd4ad07d7ad08d8
-ad09daa35ed1ad04d2ad05d3ad06cc0b
-cc6dcda342ceabfdcfad03c4ad00c5ad
-01c6ad020010cc1cd20ed2a9fbd445d5
-a3ced6ad12d9a37cccad0ecead0fcfad
-10d1ad11c70cc7a389c8ad0cc9ab14ca
-ad0dc1a3bfc4a3adc5ad0ac6ad0b0010
-cf1dd50fd5abf6d6ad1cd7abfdd9ad1d
-daa51acfad19d0ad1ad2ad1bd3ab2fc9
-0cc9ad16ccad17cdad18cea3ecc4abf4
-c6ad13c7ad14c8ad1534223442354837
-4e3801382a3910b0ab2f10b6abff1131
-b9abfc1133b2abfd1133b6abfe2aa561
-305031a26b3202302e33383810b0a52e
-01b0a51ab2abf110b075053323333435
-4a3601b1ab5db2a5ec03b0a3ecb4a5ec
-b5a711b9a72702b3abf2b4abf7b7abf8
-3034314a3201b1a561b9abf603b2abf1
-b3a561b5a9fbb9abf206b50bb59bb7ab
-f4b8abf5b9a561b1abf1b3abf3b4ab84
-02342e353e3710b2ab1c02b2a3ecb3ab
-f9b5abfa03b0ab1cb1ab1cb4abfbb5a5
-2e046436673c68427246761173f44b11
-6ceda5781168e2ad69116fed6301613c
-6d01e99dee012aa3424110cda34210e2
-00134c625131513c53405450556a5901
-c5abffd4ab8510c1ad5102c1abfac4ab
-fed9ad5b04c791c8a92ccaad6fcead60
-d2ad7010cbad6a4c3c4d464e624f6650
-01cbad4cd3ad4f01c2ad38d9ad3c04c1
-ad3dcdab09cea772d2ad42d5ad6d10c7
-ad6e10cdad48452e4542474a494e4a64
-4b02c8a505cdad34d7ad3601c79bc8ad
-2310c2ad6a03c4ad6bcead6cd1ad31d2
-a57110cfad322a9b4132423c43464410
-daad2001c5ad01c6ad0201c8ad0cd5ab
-0901c3a911ceabea00217588e62bf221
-f29bf3a349f6a353f9a35cfa012a2e41
-127261e2a360022aa35e498a5210d5a3
-61e651eb67ed75ee7f7a2d7a2ce125e2
-2de54b10ea012a2e41127261e2a36003
-2aa35e312e49345310d5a3611137b2a3
-6101d1a35fd2a3607538763c77527901
-e2a35df2a35c10f9a35203eca354eea3
-55f4a356f5a35703e1a358e2a359efa3
-5af8a35b6b966f696f44704e726873a2
-507402e1a34fe7a350eaa35102ea89ed
-8bfa8d05f206f295f397fa99e38fe491
-e59309ef0fefa344f1a345f3a346f9a3
-47faa348e29be332e8a341eda342eea3
-43022a9d4e2c5012616ceda1126261f4
-9f04e1a34ae5a34be7a34cefa34df4a3
-4e6b3c6c3e6d586e03e381eb83ee85f9
-8710eb6905ee06ee71f36df473e16be2
-6de96f03ed77ee79ef7bf07d65256530
-673668506a10e76501e24df94f05ed06
-ed59ef5bf15de353e455e75702e15fec
-61ef636148625263646405f006f045f9
-47fa49e13fe541ea4302e927eb29f52b
-04e92ff131f233f435f93702e439e53b
-e83d
+        trie:bin{  // BytesTrie: 9868 bytes
+001a6dcc1274c4f077c26777a2b778a4
+5279a4c27a0f6d7d7a5c7a30e1ad9ce8
+2ef5af3f10e1a539022a3c42cc214811
+616e01e2a3fdf4a3f80b4d25540e54ca
+ce552a5610cea3fb10d3a3fa4dd81e59
+502a5310d2a3f602c1a3f5c6a3f3c8a3
+f447d4dd473248d81e3b4910c4a3f101
+c2a3f9c6a3ef6d326e36733a7910e2ad
+9c10e9af3d10e5af3e10ed22012aa90f
+4310c3a9106817683269366b3a6c10ed
+af3c10f8adb910e1af3b10f4ad976132
+6436653a6710e8adc810e7af3810eaaf
+3910e1af3a00126d46741b7434753877
+42e1adecefaf0310edaf0801f5af09f6
+af0a10e1af0b6d3c6e406f50725a7301
+e7ad88ebaf0710efadff02e3af00e9af
+01f5af0201e2af04f3af0510f3af0667
+266736683a693e6a4e6c10f3adfe10e9
+adf710e7adf802e2adf9f5adfaf6adfb
+01e1adfce9adfd6138625463646501ec
+a520f2adf604e5adedeaadeeecadefee
+adf0f2adf102f0adf2f1adf3f2adf410
+e9adf50c6e3d7221722e7332774ee8af
+0f10e2af1504e1adc0e9af16eca52fed
+af17f2af1810e5af196e346f3e7001e5
+a78ef2adbd01e1adb7f2af1201e7af13
+eeaf14651d653a6c3e6d02e6af11eead
+adf2adb010f3af0e02e1af10e3ada9e4
+adaa613462386301efad77f2ad7610f6
+af0c10e9af0d0d6d49733073307534e9
+a733efaf2c10f3af3104e1af32e532ea
+af35f4af36f7af37012a2e4812616ef3
+af34012aaf334310ceaf346d3a6f3e72
+02e2af2ee5af2fecaf3010ecaf2b10ee
+af2d6520653e67426b4c6c02e5af28e7
+af29ecaf2a10f2af2401f2af25f7af26
+10efaf27612e62606410e4a73307f40c
+f4af1df6af1ef9af1ffaaf20eda7b7ef
+af1af0af1bf3af1c02e1af21e2af22f9
+af2374a25275a4d0760a6f1fe509e5ad
+dfe9ad63efade76f3472387501eeadea
+f4adeb10f4ade810efade9613c654c69
+566c606d01e6ade5f7ade602e7addde9
+adcdeeadde01e3ade0f0ade101e3ade2
+f6ade310f3ade400267576e91ff20ef2
+abc8f3abccf4abd2f767f9abe2e9abad
+ebabb4ecabb8eeabbeefabc07a247a36
+e1ab8ce5ab9ee72ee8aba910edabe501
+2a2e41127261e2aba5012aaba45010cb
+aba5753e7654776478ccf67901e1abe3
+f6abe403e8abd9ecabdaedabdbf1abdc
+02e4a7baecabddf5abde01e8abdff1ab
+e06b7d7049705e716e727273827406f1
+0cf1abbcf2abd6f3abd7f4abd8e4abd3
+e5abd4eaabd502e9abc4edabc5faabc6
+10efabc702f5abc9f6abcaf7abcb04e4
+abcde6abcee7abcfeaabd0f7abd16b42
+6c526d626e6c6f02e6abc1e7abc2f1ab
+c302ecabb5f2abb6f4abb702e6abb9f8
+abbaf9abbb01e8abbcf9abbd10e8abbf
+6546655e6674677868886906eb0cebab
+b0edabb1efabb2f6abb3e2a3b1e6abae
+e7abaf03e4ab9fedaba0efaba1f4aba2
+10e9aba302e3aba6efaba7f5aba802ec
+abaaf1ababf2abac6144625a63866403
+e4ab9ae7ab9be8ab9cf5ab9d03eaab8d
+ecab8eeeab8ff1ab9006e70ce7ab94ef
+ab95f7ab96faab97e3ab91e4ab92e6ab
+9301e9ab98f9ab990f7362e72ce742eb
+abecf2ad4bfa012a8641127261e2addb
+012a2e43127972ecabe9022aabe84b2a
+4d10ceabea10daabe973607464766e7a
+10ee012a2e41127261e2addb022aabf7
+412a4310ceaddc10c6addb10e1add701
+e8a549f2add801e8add9ecadda6d326d
+3e6e426f707202e9add4f4add5f7add6
+10e2abee01f226f8add2012a2e441265
+76e1add1012aadd04e10d0add110ebad
+d362326436673a6c10e9abed10f5abe6
+10edabe710e1abeb70c39870a4fc71a6
+da72a6e7730029797dec39f229f509f5
+ab7bf6ab81f7ab82f22cf3ab74f4ab78
+22032aab2d4da4c2522a5410d2ab3101
+cfab30d5ab2eecab56edab5beeab62ef
+ab68f16de50fe5ab3de7ab42e8ab47e9
+ab4cebab5279687a72e1ab21e3ab2ce4
+032aab3744324b3a5312696ee4ab3a12
+6576e1ab3812686feaab3901ecab8af2
+a50c10ecab8b6cb77259753175347750
+7801eeab88f7ab8904e1ab7ce5ab7deb
+ab7ef2ab7ff3ab8005e809e8ab82f0ab
+86f6ab87e2ab83e3ab84e7ab85723473
+507401ebab79f1ab7a04e2ab71e3ab2c
+eeab72f2ab73f8a5f102e4ab75e7ab76
+f9ab776c4a6d666e8c6fa2437003e4ab
+6eecab6ff3ab70f9a77404e4ab57e9ab
+58ecab59efab52f9ab5a05f009f0ab5f
+f1ab60f3ab61e1ab5ceaab5deeab5e04
+e3ab63ebab64f0ab65f8ab66f9ab6704
+e7ab69ebab6af1ab6bf5ab6cf9ab6d67
+3e67426858696e6a846b02e3ab53f2ab
+54f3ab5503e1ab43f3ab44f7ab45faab
+4603e9ab48ebab49eeab4af5ab4b03e4
+ab4de7ab4eecab4fedab5010f2ab5161
+4a6276638664a26b6503e6ab3ee8ab3f
+e9ab40f3ab4106f30cf3ab25f4ab26f6
+ab27faab28e6ab22e8ab23f1ab2402e1
+ab29e5ab2af0ab2b06ee0ceeab34efab
+35f2a5fff3ab36e32cebab32ecab3322
+055211522e53325410d2ab3110cfab30
+10d5ab2e2aab2d312a4d10c5ab2f1137
+b2ab2e01e3ab3be8ab3c00166e63752b
+ec09eca9ecf3a9ddf4a9f9754c7750e1
+012a2e41127261e2a9d5012aa9d45010
+cba9d510f5a9fb10e1a9fc7217722e73
+3e7410f0a9fa02e1a9f5e4a9f6e7a9f7
+10f3a9f86e346f4a7001e1a9f3efa9f4
+03e2a7cde7a9efeea9f0f4a9f110eea9
+f266306b176b2e6c386d10f3a9ee01e1
+a9eaefa9eb01e1a9edf4a92f66346838
+6901eca9e8f0a9e910eca9e501eca9e6
+eea9e7614e627e638864926504e4a9e2
+efa9e3f2a570f3a570f8a9e404e7a9d6
+ec32eda9d9f0a9daf5a9db012aa9d750
+12686cf0a9d801e9a9dcf5a9dd01e4a9
+deeda9df01e3a9e0f4a9e1017526f5a9
+fd02e3a9fee7a9fffaa9fd00146f4579
+17ef09efa94cf5ab1af7ab1d792cedab
+0deeab1210f5ab206f3c724c74507554
+7701ebab1eefab1f02e2ab15e6ab16ef
+ab1710efab1810edab1902e5ab1be7ab
+1ceda94c6934693c6a566b5a6d5e6e01
+e1ab13e7ab1401e1ab08e622012aab09
+4e10ccab0a10f3ab0b10f4ab0c03e6ab
+0eefab0ff4ab10f5ab1161366346654a
+675a6810e7ab0702e9ab00eaa961efab
+0110e6ab0202eaab03ecab04f3ab0510
+eeab066da2576ea63e6f0b741ded09ed
+a5a1f2a9ccf3a9cf742a7a34e3a9c401
+e1a9d1eba9d210eda9d37017702e7232
+7310e1a9d010eda9cb02efa9cdf5a9ce
+f9a9cc673a6b3e6e02e7a9c8eea9c9f3
+a9ca10e3a9c501f2a9c6f6a9c7002274
+9fe926ef0fefa94cf2a957f3a492f4a9
+5bf9a3cee9a90ceba906eca941ee012a
+bacc4d126f6ee7a53f783d7834793e7a
+64e7a92fe8a93501e3a96aeda96b05f7
+09f7a96ff8a970faa971eba96ceda96d
+f6a96e05f009f0a975f7a976faa977eb
+a972eda973eea9747444755a76707703
+eba967f2a537f6a968f7a96903e3a95c
+e6a95de9a95ef2a95f03e1a960f0a961
+f2a962f3a96302e1a964eea965f9a966
+69856e446e426f5e707a71907202e4a9
+58eaa959efa95a04e1a948e6a949e9a9
+4aebb620f7a94b04e1a94de5a94ee8a9
+4ff3a950f8a95103f0a952f3a953f4a9
+54f8a95510eca956693e6b686c7e6d02
+efa945f5a946f8a94703e6a938eea939
+f326f7a93c012aa93a4d126564e6a93b
+03e9a93deca93ef0a93ff7a94002e5a9
+42f0a943f3a9446549653e666a678668
+02e9a936eca937f2a3ff06ee0ceea926
+f2a927f4a928f5a929e4a923e5a924eb
+a92504e1a92ae5a92beea92cefa92df1
+a92e04e8a930eca931efa932f0a933f9
+a934615e62a25063a25d6406e80ce8a9
+1feaa920f2a921f8a922e1a91ce5a91d
+e6a91e0bee1df712f7a90ef926faa911
+22012aa90f4310c3a910eeb437efa90c
+f3a90de709e7a909e9a90aeba90be3a9
+06e4a907e6a90804e8a912efa913f1a9
+14f5a915f7a91604e9a917f0a918f1a9
+19f2a91af5a91b0021745fe41dee0fee
+a9a2efa9a8f2a9aff6a9bcf9a9c0e4a9
+87e5a98ae7a98feca54b791579307a3a
+e1a978e2a98001eda9c1eea9c210e9a9
+c374387542775e7801f1a9bef2a9bf01
+eda9b5f2a9b604e9a9b7f0a9b8f3a9b9
+f6a9baf8a9bb10e2a9bd6a5d6f326f48
+70647168726c7303eba9b1eea9b2efa9
+b3f3a9b404e4a9a9e5a9aaeea9abf0a9
+acf5a9ad10e9a98a10efa9ae10e2a9b0
+6a4a6b4e6d586e04e6a9a3e8a9a4eba9
+a5eda9a6f0a9a710efa99d01e7a99eef
+a99f01e7a9a0faa9a16637665a675e68
+6e6906ee0ceea999f5a99af9a99bfaa9
+9ce6a996e9a997eaa99810f2a98e02e1
+a990e2a991eca99202e2a993e5a994f7
+a995613e636a64906502e2a98bf7a98c
+f8a98d06ee0ceea97cf0a97df1a97ef3
+a97fe3a979e6a97aeba97b05e809e8a9
+84efa985f5a986e1a981e5a982e6a983
+01e3a988f3a98966c75969c49c69a416
+6aa4c46ba6116c001b744ae717ef0cef
+a7f4f4a7fcf5a7fef6a902e7a7dee9a7
+e0eea7f1771577307a34e1a7c9e2a7d0
+10eca90301e8a904faa905742e753276
+10f3a90210e7a7fd03e1a7ffefa900f9
+a3d5faa9016a4a6d316d326e426f4c72
+10e3a7fb02eea7eeefa7eff0a7f001f3
+a7f2f5a7f305f209f2a7f8f3a7f9faa7
+faeaa7f5eba7f6eca7f76a346b386c01
+e5a7eceea7ed10f0a7e901e9a7eaf4a7
+eb6448646c6570679c6906e70ce7a7e5
+e8a7e6eaa7e7f3a7e8e1a7e1e4a7e2e6
+012aa7e34c12696de2a7e410e2a7d606
+f00cf0a7daf1a7dbf5a7dcfaa7dde4a7
+d7e5a7d8eda7d910e7a7df6134625a63
+01eda7d4f0a7d505e809e8a7cdeaa7ce
+f3a7cfe2a7cae4a7cbe7a7cc02e5a7d1
+f5a7d2f7a7d300197739eb17f30cf3a7
+0df4a725f5a719f7a726eba567eea720
+efa722e409e4a70fe7a714e9a717772a
+7a34e1a70601eda727f3a72801e8a729
+e9a72a6a366d176d326e366f3a7210e9
+a72410efa71f10e8a72110f5a7236a2e
+6b326c10efa71e10eaa71804e5a719eb
+a71af4a71bf7a71cf8a71d641a643466
+446701e2a715e5a71602e4a710e9a711
+f5a71210e5a713613a62446302e1a70c
+e5a70de8a70e01eea707f2a70802e1a7
+09e2a70af9a70b0b721ae909e9a733f6
+a739f7a73a722a752ee1a72b10e1a737
+10f4a73867176734693e6d01e3a735ec
+a73601eba72eefa73210e2a734612e62
+3e6510eea73102e2a72ceda72df2a72e
+01efa72ff5a730002875c0edeb74f23f
+f628f6a792f7a7b4f9022a32414c4c12
+6174eea7c2022aa7c0432a5410d2a7c2
+10cea7c1127261e2a7c1f2a785f3a79e
+f5022aa46441a4705912657ae9a780eb
+38eca773eda778eea784efa789012a2e
+41127261e2a76e042aa76c4132433649
+3a4d10cea77010c6a76d10cea76e10d2
+a76f7a1b7a38e1a5b0e7a757e9a763ea
+a76703e8a7c5eaa7c6f2a7c7f4a7c875
+3c766e777e788e7901e5a7c3f8a7c407
+ed0ceda7adeea7aef0a7aff3a7b0e2a7
+a9e4a7aae5a7abeaa7ac02e7a7b1f2a7
+b2f8a7b302eaa7b5efa7b6f1a7b707ed
+0ceda7bcf0a7bdf7a7befaa7bfe1a7b8
+e3a7b9e5a7baeca7bb6bc0db7063704a
+7170728673a2457403e2a7a5eda7a6ef
+a7a7f2a7a805f209f2a791f6a792f8a7
+93e5a78ee6a78fefa79003e2a794e6a7
+95f3a796f9a79705ec09eca79bf3a79c
+f5a79de3a798e9a799eaa79a05e809e8
+a7a2eaa7a3f2a7a4e2a79fe4a7a0e6a7
+a16b506c5a6d706ea25d6f04e9a78aeb
+a787eca78bf3a78cfaa78d01e3a771ea
+a77203eea774f1a775f4a776f8a77706
+f22cf232f3a781f5a782f7a783022a32
+414c5912657ae9a780022aa77c492a4c
+10c2a77e10d2a77d127261e2a77fe2a7
+79e8a77aefa77b04e3a785e6a786e7a7
+57eea787f0a788665266486758686869
+a06a03e4a768e7a769f3a76af9a76b02
+efa754f2a755f9a75602e5a758e6a759
+f0a75a08f10ff1a75ef3a75ff4a760f7
+a761faa762e1a75be2a75cebac86eea7
+5d02eaa764f5a765f7a7666144627663
+9c64a2486502e1a751eea752faa75307
+e90ce9a73feaa740eda741efa742e1a7
+3be2a73ce3a73de4a73e05f109f1a746
+f8a747f9a748e4a743eda744f0a74503
+e7a749eba74aeca74bf4a74c03e5a74d
+e8a74eeca74ff4a75066a2b567a46a68
+00137539f20ff2a5fff4a702f5a703f9
+a342faa7057536e13ae5a5e9e9a5ebef
+a5fb10e9a70422032aa5df372e433453
+10c4a5e01133b6a5e010cda5e16c386c
+3c6d466e506f6c7301e2a700eea70101
+e1a5f2f5a5f301e4a5f4f4a5f504e4a5
+f6e5a5f7eaa5f8eea5f9efa5fa02e3a5
+fceaa5fdf4a5fe615862746478687c69
+05e809e8a5efeca5f0eda5f1e1a5ece6
+a5ede7a5ee04e7a5e2eba5e3eda5e4f7
+a5e5faa5e610e2a5e710f9a5e810f9a5
+ea00117553e90fe9a57aeaa57eefa581
+f2a587f9a59675427694e1a570e6012a
+a5764112646ceda57709e80fe8a590f1
+a591f2a592f6a593f9a594e2a58ce332
+e4a58de5a58ee6a58f012aa576411264
+6ceda57710f2a5956d2f6d4e6f527062
+71667204e3a588e5a587f0a589f2a58a
+f3a58b10f0a58002e4a582eea583f2a5
+8410e5a58510f3a5866132665669606c
+10f2a57f05e908e9a574eea575f467e1
+a571e2a572e7a57301e9a578eda57902
+e1a57beca57cf4a57d001a6e9f791dec
+0ceca5bceea5c0f5a5d0f6a5d8792ce1
+a597e4a5a901e1a5a2e9a5de733a733e
+754276747702e3a5dbe9a5dcf4a5dd10
+f7a5cf07f20cf2a5d4f7a5d5f8a5d6fa
+a5d7e2a5d1e3a5d2e4a5d3e7a5c002e6
+a5d9f2a5b3f3a5da6e5a6f6a7204e2a5
+a5e332e5a55af4a5cdf7a5ce012aa5cb
+4c12696ee2a5cc02e4a5c1e7a5c2efa5
+c307ee0ceea5c3f2a5c8f3a5c9f4a5ca
+e4a5c4e6a5c5e9a5c6eda5c7673c6a23
+6a386b486c526d01eda5bef6a5bf02eb
+a5b7eea5b8f5a5b901eea5baf0a5bb10
+eba5bd6734683e6901eca5b5eda5b601
+eea5b3efa56610f3a5b46428642e653e
+6610eba5b202e5a5aaeea5abf2a5ac05
+ef09efa5b0f2a52dfaa5b1e2a5adeaa5
+aeeca5af612e626c6310f2a5a809ed0f
+eda59deea59ef7a59ff9a5a0faa5a1e1
+a598e6a599e7a59ae8a59beaa59c05ef
+09efa5a5f9a5a6faa5a7e1a5a2e6a5a3
+eda5a463c2f263a2a364a4fc65001277
+33ee19ee38efa563f3a565f4a558f5a3
+66012aa55f53126861f7a56077347838
+7a3ce5a553eca55a10efa56d10f4a56e
+10e1a56f6d466d486e7a728473887403
+f2a569f4a56af5a56bf8a56c02e1a55b
+e9a55ceb012a2e4e126b6fefa55e012a
+a55d4710cea55e01eea561f1a56210e9
+a56402e7a566eba567f5a568623e6642
+67466b02e1a557eba558f9a55910f5a5
+5210e9a55401eca555f9a556001b725c
+e821f316f3a519f52cf6a51ff9a52001
+2aa51d47126c61e7a51ee8a3ebefa50f
+f2a512771277307a34e1a3e1e5a3e710
+e4a51210e5a519722e73547410e4a51c
+05ec09eca516eda517f3a518e8a513ea
+a514eba51501e2a51af7a51b69526c30
+6c326d3c6f6c7010f3a51101e1a50be4
+a50c02e5a50de7a50eee022aa26342a2
+ae4811616e01e2a3fdf4a3f810f0a510
+69406a446b03e2a507eca508efa509f9
+a50a10e3a50302e1a504eda505f6a506
+658f65a28066a28167a2826805ef09ef
+a500f0a501f2a502e92ceba3feeda3ff
+022a3c42a2594811616e01e2a3fdf4a3
+f80b4d2d5417542e55385610c4a3fb01
+c8a3f7d7a3f801cba3f9d3a3fa4db489
+502a5310d2a3f602c6a3f3c8a3f4daa3
+f5470e473048b46d4910c4a3f110c6a3
+ef2aa3ec412a4210cea3ee10d5a3ed12
+6f70efa3fc10e2a3e810e1a3e910e7a3
+ea6134623e6301e8a3e5f0a3e601e4a3
+e2eea3e310eaa3e40016726f791ce508
+e5a52df6a54cfa45792a7a34e1a52101
+efa54ff5a55010e7a551751d752e764a
+7710f7a54e04e1a547e3a548e4a549e7
+a54af4a54b10e1a54d724073747403ed
+a543f0a544f3a545f9a54602e82ce9a5
+40f3a541012a2e4d126f6ee7a53f012a
+a53e4310cea53f10e2a54267446a1a6a
+406e446f03e2a53be9a534f0a53cf7a5
+3d10e5a53a10eaa523673468606901e1
+a538f1a53906ec0ceca533efa534f2a5
+35faa536e1a530e8a531e9a53210e4a5
+37613c6268637264766501e4a52eeea5
+2f06e80ce8a525eba526f2a527f6a528
+e4a522e6a523e7a52401e4a529f1a52a
+10e3a52b10eea52c2aa4f761bea46200
+2373a5e51ded0feda3a8eea3adefa3b1
+f2a3baf3a3bfe5a37ce7a389e8a38de9
+a39377417732783c794c7a72e1a36201
+e4a3d2f2a3d302e8a3d4eba3d5f2a3c7
+05f309f3a3d9f6a3daf8a3dbe5a3d6ee
+a3d7f2a3d804e1a3dce5a3dde6a3dee8
+a3dff7a3e07332744875587610e2a3d1
+03eaa3c0f1a3c1f3a3c2f4a3c302efa3
+c4f4a3c5f6a3c609ed0feda3ccefa3cd
+f2a3cef3a3cff5a3d0e1a3c7e3a3c8e4
+a3c9e7a3caeba3cb6a7d6e3b6e486f58
+7068716c7203e1a3bbe8a3bcf8a3bdfa
+a3be02e7a3aeeda3aff0a3b002eaa3b2
+eda3b3eea3b410f9a3b503e3a3b6e9a3
+b7f0a3b8f6a3b96a466b786ca4ab6d03
+e8a3a9eba3aaf1a3abf5a3ac07ef0cef
+a39ef2a39ff4a3a0faa3a1e8a39ae9a3
+9beaa39ceea39d04e3a3a2eda3a3f1a3
+a4f5a3a5f6a3a6656a6562669467a244
+68a24b6906ed0ceda396eea397efa398
+f1a399e2a394e7a395eba37507f40cf4
+a381f7a382f8a383faa384e6a37de8a3
+7eeaa37feda38003e4a385f1a386f4a3
+87f9a38802e3a38aeea38bf8a38c05ec
+09eca391efa38df9a392e2a38ee7a38f
+e9a3906132626463906410e4a37b07f2
+0cf2a367f3a368f6a369f8a36aeca363
+eea364f0a365f1a36606e40ce4a36eea
+a36ff0a370f2a371e1a36be2a36ce3a3
+6d09ed0feda376eea377efa378f1a379
+f5a37ae3a363e6a372e8a373e9a374ec
+a37500184dc26554c0ca57365736584e
+59645a12616ee2adcf01612c631168ef
+a9a71172e1adce01702a731175f86911
+65efa9e301652c691169e9a717117ae9
+a780543455a28756126169e9adcd0567
+46674a68506901622a7210e8adcc10f4
+012aa3b14210d445116ce7adc9106101
+e158e9042aaba943324b364c3a5410c8
+aba910cea7d510c8adca10c1adcb012a
+a54c4d10d6a54c6130657c66116ee7ad
+c8056d116d2e6e327610f4a3a710ecab
+8c10e7abe167346b386c01e5ab9af5a7
+5c10e2adc610f2adc7116cf5ab9e1267
+61f2abeb50c0c350a27252a2a8530669
+4369426f6a759079016c2a7210e3a50c
+10efadc501643e6e01e4ab3ae8012aab
+4c4c10cbab4c10e4adc202672e723879
+10efa50e01e4ab69efadc310e1ab7111
+6ee4adc4613e675e6801612a7210e4ad
+c110f7a560026d2e72327510f2ab2810
+f2ab5f10e2adc0116ef7a34b04613865
+4a68506c76721174e9adbd016c2a7510
+e3a51c10eda11172edadbb02612e6c32
+6e10f8a9e710e7adbc01e9a9d7f0a9d8
+1172e4a5f4026a306f3675116ef2a9ab
+116ee7adbe1168e7adbf4d7c4ea2a44f
+0367426c48724e7301672a6d10e1adba
+10e5a9d01161edab431163ebab26016b
+2a7910e1a9cc10e8a9d207722e725a74
+60756679116df2032aa3ce492e4d3254
+10c8adb510cea76010cda3ce116fefa9
+5a1165e9adb3116cf4adb4614265746c
+9a6f01642a6e10e7a53f10e9adb20368
+326b366e3a7210e3adae10eaadab10e1
+adac01e4a971e9adad0264346e387201
+e3adb0efadb110e6a93b10e4adaf1179
+eda941046138624c65506b56731168f5
+adb9016e2a7210e2adb710e4adb61161
+f49f1177e1adb8116fefa55e47c41b4a
+c32f4aa6c04ba6d94c03614665a69c69
+a69e7901632a6410e9adaa10e9ada902
+6ea6796fa67a7410ee001a4bc139545b
+571457ac7058ac7459305a01c1abf3d7
+ab6210d4ad67544055825603c1ad62c5
+ad64cead63d5a3930bce14d609d6abdd
+d7abcadaab82ceada7cfabc0d2abc8cb
+c5d4cbabb5ccad5ecdabb404c1ada8c7
+ad60d3a55fd9ad61daabf74e824e8a50
+a24a52a26d530cce17d40cd4ad58d5a7
+9bd6ad59d9ada6cead56cfab68d2ad57
+ca09caad54cbab52cdad55c3ad53c5ab
+81c9ab5606c70cc7abefc9ad46cca54b
+cfa9a8c1ad43c3ad44c5ad450acc14d4
+09d4ad4fd7a9dbd9a5c0cca9eccdad4c
+d2ad4dc1ad48c5ad49c6ad4ac7abc4c8
+a57c03c5ad52cfa94cd5a79bd7ab1d4b
+9e4ca2434d0010cd1dd40fd4a95bd5a9
+2bd8abf1d9a90fdaad42cda73dcfada4
+d1ad40d2ada5c60cc6ad3fc7a92fcbad
+a3cca3a8c1ada2c3ad3dc4ad3ec5ab2f
+01c5ad32cdada104c9ad38d3ad39d4a7
+fcd5ad3ad6a90243c0c2466446564766
+48a24d4905d209d2ada0d3a70dd4a725
+c3ad2fc4a70fc5ad2302c9a57acfa581
+d2a5870cce17d30cd3ad2ad4ad2bd5ab
+f6d7ad2ccead27d0ad28d1ad29c608c6
+ad26c867cca773c1ad25c2abf9c5ad9f
+04cdad2dcead2ed2a5ffd4a702d5a703
+435244a2424505d309d3a565d4ad99da
+ad24c1ad1fc3ad20c5a5580fcf1ad60c
+d6ad1ad7abfbd9ad9ddaa519cfad17d0
+ad18d2ad19d5abf4c9c68cc9ad14ccad
+15cdad16cead9c05cb09cba521cfad1d
+daad9ec5a52dc7ad51caad1c345e34ae
+874178420bce14d209d2a9f9d5a73dd6
+ad10cead0dcfad0ed1ad0fc909c9ab12
+caad0bccad0cc1a3bfc5ad08c6ad090c
+d217d50cd5abf0d7ad06d8ad07daa35e
+d2ad03d3ad04d4ad05cd09cdad9bcfad
+01d1ad02c4abfec6ad9acc6d2aa55f31
+2c321133b0ad991137b2a79b10e1a9a9
+10ef012aa7f44c10c1a7f41170e3a7da
+026d2e6e327310f5a7e810e2a7e401e1
+a7cae2a5cc01613a701161ee012aa72b
+4a10d0a72b016d2a7610e1ad9510efad
+94056e1e6e306f36741168e9ad981164
+e1a7841172e5012aa7894b01d0ad34d2
+a78961306844691174f3ad97016c2a6e
+10e1ad9610e9a55902612e6d326f10ea
+ab3910f2a9f510f2012aa7784b10c8a7
+78473448a25c49127461eca56a046546
+6c5a6f60727a75016a2a7210f5a9d410
+f2a5d0116ff2012aa5b04710c5a5b011
+61e7a51e016e2a7410e8a5ca01e7ad88
+eda5660161506510eb032aa55a432e47
+325410d2a38c10d9ad1b10d2a55a10ee
+ad89056c186c306d3675116ee7ad9311
+75f7a5f3106e01e7a5f8f0a969613065
+9c691172e1ad92016e2a7410f2a93a05
+ef24efad8cf34cf4032aa3f8482e4d32
+5410d7a3f810cba3f010cfa3f2012aa3
+ec4310cea3ece2a3fde7ad8ae9ad8b11
+62f2054917493a533e5502c1ad90cbad
+8ed3ad9110cca5e910c5ad8f2aa5e943
+2a4710c2ad8e10c1ad8d43c107437044
+a2c0450267406c46741168e9012a7545
+01d2ad22d4751179f0a55601622a7910
+edad8710e1ad860461a26968a2786fa2
+8770a289791172ec0a4d335414542e55
+385810cbad7f01caaba4d2ad7e10c1ab
+ec4d2e523e5310cbad7d02c4ad7bcba9
+06cea53e02cfad7cd3ab2dd5ab1a2aab
+1a4138423c474c4b01c7a7c0daad3610
+ccad7802c1ad79c7a389d9a37c01c5a9
+cfd2ad7a026b2e6e327210e9ad7610ed
+a3e610f3a51202612e65327210f3ad77
+10eda50510f2a5021170f4a5101172f4
+a5cb03653469866f8c751170ecad8511
+76e106491749324d364e3a5010cba3c6
+10cea5eb10d5ad8210d0a98a2aa5eb42
+2a4610caad8110d4ad801161ebad8311
+67f2ad842aa25441aa3142056f1f6f3e
+72447501672a6810e4ad7510e9ad7411
+70efa3fc106101e8a9eae9ad73613065
+5c68116bf3ad72036c326d36733a7410
+ebad7110e9ad7010f5a36a10f3a3c111
+6ee7012aa3ad4210c4a3ad00214ac1c0
+52c0cc5638563c5758586259665a01d2
+abf2d7ab6204c1ad62c4ad63c5ad64ce
+ad63d5a39301c6ad65d3ab5b10cbad66
+03c4abfdc5abfdd4ad67d5ab2d524653
+6c54a2575503c1abecc7ad60d9ad61da
+abf705d309d3ab2dd5ab1ad7ab1dc5ad
+52c8ab62cfa94c0ecd1ad40cd4ad58d5
+ab1ad6ad59d9ad5acdad55cead56cfab
+68d2ad57c50cc5ab81c9ab56caad54cb
+ab52c1abf8c3ad53c4abfc0ecd1ad20c
+d2abc8d6abddd7a3f8daab82cdabb4ce
+ad5fcfabc0d0ad5ec80cc8aba9caaba4
+cbabb5ccad5ec4ad5bc6ad5cc7ad5d4e
+644e404fa89650785102c1ad50cfad51
+d5ad2309cc0fcca54bcfa9a8d0a98ad1
+ad02d4abf8c1ad43c3ad44c5ad45c8a3
+93c9ad460dcd17d40cd4ad4fd7a9dbd9
+a5c0daad48cdad4cd2ad4dd3ad4ec70c
+c7abc4c8a57ccbad4bcca9ecc1ad48c5
+ad49c6ad4a4aa2484ba24c4ca2644d00
+12ce20d50fd5a92bd6a54cd8abf1d9a9
+0fdaad42cea53ecfa3f2d1ad40d2ad41
+d4a95bc60fc6ad3fc7a92fcba906cca3
+a8cda3cec1ad3cc3ad3dc4ad3ec5ab2f
+01cfad31d0a72b07d00cd0ad34d2a789
+d7ad35daad36c5ad32c7a7c0c8a778cd
+ad3308d30fd3ad39d4a7fcd5ad3ad6a9
+02d9ad3bc1a7f4c2ad37c9ad38cbab4c
+41c1604598456a46a24147a24e48a275
+4907d10cd1ad30d2a570d3a70dd4a725
+c3ad2fc4a70fcca5e9cea5eb09d20ed2
+ad22d3a565d475d5ad23daad24c1ad1f
+c3ad20c5a558c79bc8ad2104c9a57acf
+a581d1ad02d2a587d8a5870bd014d309
+d3ad2ad4ad2bd7ad2cd0ad28d1ad29d2
+a55ac808c867cca773cead27c1ad25c5
+a5b0c6ad2606d20cd2a5ffd4a702d5a7
+03d6ad09cba3f0cdad2dcead2e415e42
+a24c43a2834406cb0ccba521cfad1dd9
+ad0bdaad1ec4a52dc5a52dcaad1c0dd1
+17d40cd4ad05d7ad06d8ad07daa35ed1
+ad02d2ad03d3ad04cc0bcc6dcda342ce
+abfbcfad01c4abfec5abffc6ad000010
+cc1cd20ed2a9f9d445d5a3ced6ad10d9
+a37cccad0ccead0dcfad0ed1ad0fc70c
+c7a389c8ad0ac9ab12caad0bc1a3bfc4
+a3adc5ad08c6ad090010cf1dd50fd5ab
+f4d6ad1ad7abfbd9ad1bdaa519cfad17
+d0ad18d2ad19d3ab2dc90cc9ad14ccad
+15cdad16cea3ecc4abf2c6ad11c7ad12
+c8ad13342234423548374e3801382a39
+10b0ab2d10b6abfd1131b9abfa1133b2
+abfb1133b6abfc2aa55f305031a26b32
+02302e33383810b0a52d01b0a519b2ab
+ef10b0750533233334354a3601b1ab5b
+b2a5eb03b0a3ecb4a5ebb5a70fb9a725
+02b3abf0b4abf5b7abf63034314a3201
+b1a55fb9abf403b2abefb3a55fb5a9f9
+b9abf006b50bb59bb7abf2b8abf3b9a5
+5fb1abefb3abf1b4ab8202342e353e37
+10b2ab1a02b2a3ecb3abf7b5abf803b0
+ab1ab1ab1ab4abf9b5a52d046436673c
+68427246761173f44b116ceda5771168
+e2ad68116fed6301613c6d01e99dee01
+2aa3424110cda34210e200134c625131
+513c53405450556a5901c5abfdd4ab83
+10c1ad5002c1abf8c4abfcd9ad5a04c7
+91c8a92acaad6ecead5fd2ad6f10cbad
+694c3c4d464e624f665001cbad4bd3ad
+4e01c2ad37d9ad3b04c1ad3ccdab07ce
+a770d2ad41d5ad6c10c7ad6d10cdad47
+452e4542474a494e4a644b02c8a504cd
+ad33d7ad3501c79bc8ad2110c2ad6903
+c4ad6acead6bd1ad30d2a57010cfad31
+2a9b4132423c43464410daad1e01c5ab
+ffc6ad0001c8ad0ad5ab0701c3a910ce
+abe800217588e62bf221f29bf3a349f6
+a353f9a35cfa012a2e41127261e2a360
+022aa35e498a5210d5a361e651eb67ed
+75ee7f7a2d7a2ce125e22de54b10ea01
+2a2e41127261e2a360032aa35e312e49
+345310d5a3611137b2a36101d1a35fd2
+a3607538763c77527901e2a35df2a35c
+10f9a35203eca354eea355f4a356f5a3
+5703e1a358e2a359efa35af8a35b6b96
+6f696f44704e726873a2507402e1a34f
+e7a350eaa35102ea89ed8bfa8d05f206
+f295f397fa99e38fe491e59309ef0fef
+a344f1a345f3a346f9a347faa348e29b
+e332e8a341eda342eea343022a9d4e2c
+5012616ceda1126261f49f04e1a34ae5
+a34be7a34cefa34df4a34e6b3c6c3e6d
+586e03e381eb83ee85f98710eb6905ee
+06ee71f36df473e16be26de96f03ed77
+ee79ef7bf07d65256530673668506a10
+e76501e24df94f05ed06ed59ef5bf15d
+e353e455e75702e15fec61ef63614862
+5263646405f006f045f947fa49e13fe5
+41ea4302e927eb29f52b04e92ff131f2
+33f435f93702e439e53be83d
         }  // trie
-        lsrs{  // 1601
+        lsrs{  // 1600
             "","","",
             "skip","script","",
             "aa","Latn","ET",
@@ -1078,7 +1133,6 @@
             "zh","Hant","HK",
             "zh","Hant","ID",
             "zh","Hant","MO",
-            "zh","Hant","MY",
             "zh","Hant","PF",
             "zh","Hant","PH",
             "zh","Hant","PA",
@@ -1127,7 +1181,7 @@
             "cy","Latn","GB",
             "da","Latn","DK",
             "dad","Latn","ZZ",
-            "daf","Latn","ZZ",
+            "dnj","Latn","CI",
             "dag","Latn","ZZ",
             "dah","Latn","ZZ",
             "dak","Latn","US",
@@ -1144,14 +1198,13 @@
             "dgh","Latn","ZZ",
             "dgi","Latn","ZZ",
             "dgl","Arab","ZZ",
-            "doi","Arab","IN",
+            "doi","Deva","IN",
             "dgr","Latn","CA",
             "dgz","Latn","ZZ",
             "mwr","Deva","IN",
             "dia","Latn","ZZ",
             "zza","Latn","TR",
             "dje","Latn","NE",
-            "dnj","Latn","CI",
             "dob","Latn","ZZ",
             "dop","Latn","ZZ",
             "dow","Latn","ZZ",
@@ -1166,7 +1219,7 @@
             "dty","Deva","NP",
             "dua","Latn","CM",
             "duc","Latn","ZZ",
-            "dud","Latn","ZZ",
+            "uth","Latn","ZZ",
             "dug","Latn","ZZ",
             "nl","Latn","NL",
             "dv","Thaa","MV",
@@ -1204,6 +1257,7 @@
             "etx","Latn","ZZ",
             "ewo","Latn","CM",
             "ext","Latn","ES",
+            "eza","Latn","ZZ",
             "fa","Arab","IR",
             "faa","Latn","ZZ",
             "fab","Latn","ZZ",
@@ -1328,7 +1382,6 @@
             "he","Hebr","IL",
             "hhy","Latn","ZZ",
             "hi","Deva","IN",
-            "hi","Latn","IN",
             "hia","Latn","ZZ",
             "hif","Latn","FJ",
             "hig","Latn","ZZ",
@@ -1395,10 +1448,10 @@
             "ja","Jpan","JP",
             "jab","Latn","ZZ",
             "jam","Latn","JM",
+            "jgk","Latn","ZZ",
             "jbo","Latn","001",
             "jbu","Latn","ZZ",
             "jen","Latn","ZZ",
-            "jgk","Latn","ZZ",
             "jgo","Latn","CM",
             "yi","Hebr","001",
             "jib","Latn","ZZ",
@@ -1508,7 +1561,6 @@
             "krs","Latn","ZZ",
             "kru","Deva","IN",
             "ks","Arab","IN",
-            "ks","Deva","IN",
             "ksb","Latn","TZ",
             "ksd","Latn","ZZ",
             "ksf","Latn","CM",
@@ -1537,6 +1589,7 @@
             "kxa","Latn","ZZ",
             "kxc","Ethi","ZZ",
             "tvd","Latn","ZZ",
+            "kxl","Deva","IN",
             "kxm","Thai","TH",
             "kxp","Arab","PK",
             "kxw","Latn","ZZ",
@@ -1546,6 +1599,7 @@
             "ky","Latn","TR",
             "kye","Latn","ZZ",
             "kyx","Latn","ZZ",
+            "kzh","Arab","ZZ",
             "kzj","Latn","MY",
             "kzr","Latn","ZZ",
             "kzt","Latn","MY",
@@ -1621,7 +1675,6 @@
             "maw","Latn","ZZ",
             "ms","Latn","MY",
             "ms","Arab","CC",
-            "ms","Latn","ID",
             "maz","Latn","MX",
             "mbh","Latn","ZZ",
             "mbo","Latn","ZZ",
@@ -2064,7 +2117,7 @@
             "tr","Latn","TR",
             "tru","Latn","TR",
             "trv","Latn","TW",
-            "trw","Arab","ZZ",
+            "trw","Arab","PK",
             "ts","Latn","ZA",
             "tsd","Grek","GR",
             "tsf","Deva","NP",
@@ -2152,6 +2205,7 @@
             "es","Latn","EC",
             "ar","Arab","EH",
             "ti","Ethi","ER",
+            "en","Latn","IE",
             "de","Latn","EZ",
             "fr","Latn","GA",
             "fr","Latn","GF",
diff --git a/icu4c/source/data/misc/likelySubtags.txt b/icu4c/source/data/misc/likelySubtags.txt
index 2721cbf..90cb78e 100644
--- a/icu4c/source/data/misc/likelySubtags.txt
+++ b/icu4c/source/data/misc/likelySubtags.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 likelySubtags:table(nofallback){
     aa{"aa_Latn_ET"}
     aai{"aai_Latn_ZZ"}
@@ -267,7 +268,7 @@
     cy{"cy_Latn_GB"}
     da{"da_Latn_DK"}
     dad{"dad_Latn_ZZ"}
-    daf{"daf_Latn_ZZ"}
+    daf{"daf_Latn_CI"}
     dag{"dag_Latn_ZZ"}
     dah{"dah_Latn_ZZ"}
     dak{"dak_Latn_US"}
@@ -290,7 +291,7 @@
     dje{"dje_Latn_NE"}
     dnj{"dnj_Latn_CI"}
     dob{"dob_Latn_ZZ"}
-    doi{"doi_Arab_IN"}
+    doi{"doi_Deva_IN"}
     dop{"dop_Latn_ZZ"}
     dow{"dow_Latn_ZZ"}
     drh{"drh_Mong_CN"}
@@ -339,6 +340,7 @@
     eu{"eu_Latn_ES"}
     ewo{"ewo_Latn_CM"}
     ext{"ext_Latn_ES"}
+    eza{"eza_Latn_ZZ"}
     fa{"fa_Arab_IR"}
     faa{"faa_Latn_ZZ"}
     fab{"fab_Latn_ZZ"}
@@ -462,7 +464,6 @@
     he{"he_Hebr_IL"}
     hhy{"hhy_Latn_ZZ"}
     hi{"hi_Deva_IN"}
-    hi_Latn{"hi_Latn_IN"}
     hia{"hia_Latn_ZZ"}
     hif{"hif_Latn_FJ"}
     hig{"hig_Latn_ZZ"}
@@ -530,6 +531,7 @@
     ja{"ja_Jpan_JP"}
     jab{"jab_Latn_ZZ"}
     jam{"jam_Latn_JM"}
+    jar{"jar_Latn_ZZ"}
     jbo{"jbo_Latn_001"}
     jbu{"jbu_Latn_ZZ"}
     jen{"jen_Latn_ZZ"}
@@ -638,7 +640,6 @@
     krs{"krs_Latn_ZZ"}
     kru{"kru_Deva_IN"}
     ks{"ks_Arab_IN"}
-    ks_Deva{"ks_Deva_IN"}
     ksb{"ksb_Latn_TZ"}
     ksd{"ksd_Latn_ZZ"}
     ksf{"ksf_Latn_CM"}
@@ -673,6 +674,7 @@
     kxa{"kxa_Latn_ZZ"}
     kxc{"kxc_Ethi_ZZ"}
     kxe{"kxe_Latn_ZZ"}
+    kxl{"kxl_Deva_IN"}
     kxm{"kxm_Thai_TH"}
     kxp{"kxp_Arab_PK"}
     kxw{"kxw_Latn_ZZ"}
@@ -684,6 +686,7 @@
     ky_TR{"ky_Latn_TR"}
     kye{"kye_Latn_ZZ"}
     kyx{"kyx_Latn_ZZ"}
+    kzh{"kzh_Arab_ZZ"}
     kzj{"kzj_Latn_MY"}
     kzr{"kzr_Latn_ZZ"}
     kzt{"kzt_Latn_MY"}
@@ -840,7 +843,6 @@
     mro{"mro_Mroo_BD"}
     ms{"ms_Latn_MY"}
     ms_CC{"ms_Arab_CC"}
-    ms_ID{"ms_Latn_ID"}
     mt{"mt_Latn_MT"}
     mtc{"mtc_Latn_ZZ"}
     mtf{"mtf_Latn_ZZ"}
@@ -1219,7 +1221,7 @@
     tr{"tr_Latn_TR"}
     tru{"tru_Latn_TR"}
     trv{"trv_Latn_TW"}
-    trw{"trw_Arab_ZZ"}
+    trw{"trw_Arab_PK"}
     ts{"ts_Latn_ZA"}
     tsd{"tsd_Grek_GR"}
     tsf{"tsf_Deva_NP"}
@@ -1378,7 +1380,7 @@
     und_Cyrl{"ru_Cyrl_RU"}
     und_Cyrl_AL{"mk_Cyrl_AL"}
     und_Cyrl_BA{"sr_Cyrl_BA"}
-    und_Cyrl_GE{"ab_Cyrl_GE"}
+    und_Cyrl_GE{"os_Cyrl_GE"}
     und_Cyrl_GR{"mk_Cyrl_GR"}
     und_Cyrl_MD{"uk_Cyrl_MD"}
     und_Cyrl_RO{"bg_Cyrl_RO"}
@@ -1406,7 +1408,7 @@
     und_ER{"ti_Ethi_ER"}
     und_ES{"es_Latn_ES"}
     und_ET{"am_Ethi_ET"}
-    und_EU{"en_Latn_GB"}
+    und_EU{"en_Latn_IE"}
     und_EZ{"de_Latn_EZ"}
     und_Egyp{"egy_Egyp_EG"}
     und_Elba{"sq_Elba_AL"}
@@ -1712,6 +1714,7 @@
     urt{"urt_Latn_ZZ"}
     urw{"urw_Latn_ZZ"}
     usa{"usa_Latn_ZZ"}
+    uth{"uth_Latn_ZZ"}
     utr{"utr_Latn_ZZ"}
     uvh{"uvh_Latn_ZZ"}
     uvl{"uvl_Latn_ZZ"}
@@ -1841,7 +1844,6 @@
     zh_Hant{"zh_Hant_TW"}
     zh_ID{"zh_Hant_ID"}
     zh_MO{"zh_Hant_MO"}
-    zh_MY{"zh_Hant_MY"}
     zh_PA{"zh_Hant_PA"}
     zh_PF{"zh_Hant_PF"}
     zh_PH{"zh_Hant_PH"}
diff --git a/icu4c/source/data/misc/metaZones.txt b/icu4c/source/data/misc/metaZones.txt
index 3142dc1..9e5ea1d 100644
--- a/icu4c/source/data/misc/metaZones.txt
+++ b/icu4c/source/data/misc/metaZones.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 metaZones:table(nofallback){
     mapTimezones{
         Acre{
diff --git a/icu4c/source/data/misc/metadata.txt b/icu4c/source/data/misc/metadata.txt
index 4f1c3d7..b14427a 100644
--- a/icu4c/source/data/misc/metadata.txt
+++ b/icu4c/source/data/misc/metadata.txt
@@ -1,9 +1,10 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 metadata:table(nofallback){
     alias{
         language{
-            aa_SAAHO{
+            aa_saaho{
                 reason{"deprecated"}
                 replacement{"ssy"}
             }
@@ -27,6 +28,14 @@
                 reason{"overlong"}
                 replacement{"af"}
             }
+            agp{
+                reason{"deprecated"}
+                replacement{"apf"}
+            }
+            ais{
+                reason{"deprecated"}
+                replacement{"ami"}
+            }
             aju{
                 reason{"macrolanguage"}
                 replacement{"jrb"}
@@ -99,10 +108,6 @@
                 reason{"deprecated"}
                 replacement{"nun"}
             }
-            az_AZ{
-                reason{"legacy"}
-                replacement{"az_Latn_AZ"}
-            }
             aze{
                 reason{"overlong"}
                 replacement{"az"}
@@ -123,6 +128,10 @@
                 reason{"bibliographic"}
                 replacement{"eu"}
             }
+            baz{
+                reason{"deprecated"}
+                replacement{"nvo"}
+            }
             bcc{
                 reason{"macrolanguage"}
                 replacement{"bal"}
@@ -147,6 +156,10 @@
                 reason{"macrolanguage"}
                 replacement{"bho"}
             }
+            bhk{
+                reason{"deprecated"}
+                replacement{"fbl"}
+            }
             bih{
                 reason{"overlong"}
                 replacement{"bho"}
@@ -159,6 +172,14 @@
                 reason{"deprecated"}
                 replacement{"drl"}
             }
+            bjq{
+                reason{"deprecated"}
+                replacement{"bzc"}
+            }
+            bkb{
+                reason{"deprecated"}
+                replacement{"ebk"}
+            }
             bod{
                 reason{"overlong"}
                 replacement{"bo"}
@@ -171,9 +192,9 @@
                 reason{"overlong"}
                 replacement{"br"}
             }
-            bs_BA{
-                reason{"legacy"}
-                replacement{"bs_Latn_BA"}
+            btb{
+                reason{"deprecated"}
+                replacement{"beb"}
             }
             bul{
                 reason{"overlong"}
@@ -199,9 +220,9 @@
                 reason{"deprecated"}
                 replacement{"rki"}
             }
-            cel-gaulish{
+            cel_gaulish{
                 reason{"legacy"}
-                replacement{"xtg-x-cel-gaulish"}
+                replacement{"xtg"}
             }
             ces{
                 reason{"overlong"}
@@ -283,10 +304,18 @@
                 reason{"bibliographic"}
                 replacement{"cs"}
             }
+            daf{
+                reason{"deprecated"}
+                replacement{"dnj"}
+            }
             dan{
                 reason{"overlong"}
                 replacement{"da"}
             }
+            dap{
+                reason{"deprecated"}
+                replacement{"njz"}
+            }
             deu{
                 reason{"overlong"}
                 replacement{"de"}
@@ -315,18 +344,42 @@
                 reason{"overlong"}
                 replacement{"dv"}
             }
+            djl{
+                reason{"deprecated"}
+                replacement{"dze"}
+            }
+            dkl{
+                reason{"deprecated"}
+                replacement{"aqd"}
+            }
             drh{
                 reason{"deprecated"}
                 replacement{"mn"}
             }
+            drr{
+                reason{"deprecated"}
+                replacement{"kzk"}
+            }
             drw{
                 reason{"deprecated"}
-                replacement{"fa_af"}
+                replacement{"fa_AF"}
+            }
+            dud{
+                reason{"deprecated"}
+                replacement{"uth"}
+            }
+            duj{
+                reason{"deprecated"}
+                replacement{"dwu"}
             }
             dut{
                 reason{"bibliographic"}
                 replacement{"nl"}
             }
+            dwl{
+                reason{"deprecated"}
+                replacement{"dbt"}
+            }
             dzo{
                 reason{"overlong"}
                 replacement{"dz"}
@@ -339,10 +392,18 @@
                 reason{"overlong"}
                 replacement{"el"}
             }
+            elp{
+                reason{"deprecated"}
+                replacement{"amq"}
+            }
             emk{
                 reason{"macrolanguage"}
                 replacement{"man"}
             }
+            en_GB_oed{
+                reason{"deprecated"}
+                replacement{"en_GB_oxendict"}
+            }
             eng{
                 reason{"overlong"}
                 replacement{"en"}
@@ -415,6 +476,10 @@
                 reason{"macrolanguage"}
                 replacement{"om"}
             }
+            gbc{
+                reason{"deprecated"}
+                replacement{"wny"}
+            }
             gbo{
                 reason{"macrolanguage"}
                 replacement{"grb"}
@@ -435,6 +500,18 @@
                 reason{"deprecated"}
                 replacement{"gvr"}
             }
+            ggo{
+                reason{"deprecated"}
+                replacement{"esg"}
+            }
+            ggr{
+                reason{"deprecated"}
+                replacement{"gtu"}
+            }
+            gio{
+                reason{"deprecated"}
+                replacement{"aou"}
+            }
             gla{
                 reason{"overlong"}
                 replacement{"gd"}
@@ -447,6 +524,10 @@
                 reason{"overlong"}
                 replacement{"gl"}
             }
+            gli{
+                reason{"deprecated"}
+                replacement{"kzk"}
+            }
             glv{
                 reason{"overlong"}
                 replacement{"gv"}
@@ -483,18 +564,6 @@
                 reason{"macrolanguage"}
                 replacement{"gba"}
             }
-            ha_Latn_GH{
-                reason{"legacy"}
-                replacement{"ha_GH"}
-            }
-            ha_Latn_NE{
-                reason{"legacy"}
-                replacement{"ha_NE"}
-            }
-            ha_Latn_NG{
-                reason{"legacy"}
-                replacement{"ha_NG"}
-            }
             hat{
                 reason{"overlong"}
                 replacement{"ht"}
@@ -547,22 +616,14 @@
                 reason{"overlong"}
                 replacement{"hu"}
             }
+            hy_arevmda{
+                reason{"deprecated"}
+                replacement{"hyw"}
+            }
             hye{
                 reason{"overlong"}
                 replacement{"hy"}
             }
-            i-default{
-                reason{"legacy"}
-                replacement{"en-x-i-default"}
-            }
-            i-enochian{
-                reason{"legacy"}
-                replacement{"und-x-i-enochian"}
-            }
-            i-mingo{
-                reason{"legacy"}
-                replacement{"see-x-i-mingo"}
-            }
             i_ami{
                 reason{"deprecated"}
                 replacement{"ami"}
@@ -571,6 +632,14 @@
                 reason{"deprecated"}
                 replacement{"bnn"}
             }
+            i_default{
+                reason{"legacy"}
+                replacement{"en_x_i_default"}
+            }
+            i_enochian{
+                reason{"legacy"}
+                replacement{"und_x_i_enochian"}
+            }
             i_hak{
                 reason{"deprecated"}
                 replacement{"hak"}
@@ -583,6 +652,10 @@
                 reason{"deprecated"}
                 replacement{"lb"}
             }
+            i_mingo{
+                reason{"legacy"}
+                replacement{"see_x_i_mingo"}
+            }
             i_navajo{
                 reason{"deprecated"}
                 replacement{"nv"}
@@ -635,6 +708,10 @@
                 reason{"overlong"}
                 replacement{"ie"}
             }
+            ill{
+                reason{"deprecated"}
+                replacement{"ilm"}
+            }
             ilw{
                 reason{"deprecated"}
                 replacement{"gal"}
@@ -667,6 +744,14 @@
                 reason{"deprecated"}
                 replacement{"he"}
             }
+            izi{
+                reason{"deprecated"}
+                replacement{"eza"}
+            }
+            jar{
+                reason{"deprecated"}
+                replacement{"jgk"}
+            }
             jav{
                 reason{"overlong"}
                 replacement{"jv"}
@@ -711,10 +796,18 @@
                 reason{"overlong"}
                 replacement{"kk"}
             }
+            kdv{
+                reason{"deprecated"}
+                replacement{"zkd"}
+            }
             kgc{
                 reason{"deprecated"}
                 replacement{"tdf"}
             }
+            kgd{
+                reason{"deprecated"}
+                replacement{"ncq"}
+            }
             kgh{
                 reason{"deprecated"}
                 replacement{"kml"}
@@ -739,10 +832,6 @@
                 reason{"overlong"}
                 replacement{"ky"}
             }
-            kk_Cyrl_KZ{
-                reason{"legacy"}
-                replacement{"kk_KZ"}
-            }
             kmr{
                 reason{"macrolanguage"}
                 replacement{"ku"}
@@ -775,6 +864,10 @@
                 reason{"overlong"}
                 replacement{"ko"}
             }
+            kpp{
+                reason{"deprecated"}
+                replacement{"jkm"}
+            }
             kpv{
                 reason{"macrolanguage"}
                 replacement{"kv"}
@@ -783,10 +876,6 @@
                 reason{"deprecated"}
                 replacement{"bmf"}
             }
-            ks_Arab_IN{
-                reason{"legacy"}
-                replacement{"ks_IN"}
-            }
             ktr{
                 reason{"deprecated"}
                 replacement{"dtp"}
@@ -811,9 +900,13 @@
                 reason{"deprecated"}
                 replacement{"tvd"}
             }
-            ky_Cyrl_KG{
-                reason{"legacy"}
-                replacement{"ky_KG"}
+            kxl{
+                reason{"deprecated"}
+                replacement{"kru"}
+            }
+            kzh{
+                reason{"deprecated"}
+                replacement{"dgl"}
             }
             kzj{
                 reason{"deprecated"}
@@ -839,6 +932,10 @@
                 reason{"macrolanguage"}
                 replacement{"bnc"}
             }
+            leg{
+                reason{"deprecated"}
+                replacement{"enl"}
+            }
             lii{
                 reason{"deprecated"}
                 replacement{"raq"}
@@ -907,6 +1004,10 @@
                 reason{"deprecated"}
                 replacement{"cir"}
             }
+            mgx{
+                reason{"deprecated"}
+                replacement{"jbk"}
+            }
             mhr{
                 reason{"macrolanguage"}
                 replacement{"chm"}
@@ -923,18 +1024,22 @@
                 reason{"overlong"}
                 replacement{"mt"}
             }
-            mn_Cyrl_MN{
-                reason{"legacy"}
-                replacement{"mn_MN"}
-            }
             mnk{
                 reason{"macrolanguage"}
                 replacement{"man"}
             }
+            mnt{
+                reason{"deprecated"}
+                replacement{"wnn"}
+            }
             mo{
                 reason{"deprecated"}
                 replacement{"ro"}
             }
+            mof{
+                reason{"deprecated"}
+                replacement{"xnt"}
+            }
             mol{
                 reason{"overlong"}
                 replacement{"ro"}
@@ -947,18 +1052,6 @@
                 reason{"overlong"}
                 replacement{"mi"}
             }
-            ms_Latn_BN{
-                reason{"legacy"}
-                replacement{"ms_BN"}
-            }
-            ms_Latn_MY{
-                reason{"legacy"}
-                replacement{"ms_MY"}
-            }
-            ms_Latn_SG{
-                reason{"legacy"}
-                replacement{"ms_SG"}
-            }
             msa{
                 reason{"overlong"}
                 replacement{"ms"}
@@ -971,6 +1064,10 @@
                 reason{"macrolanguage"}
                 replacement{"raj"}
             }
+            mwd{
+                reason{"deprecated"}
+                replacement{"dmw"}
+            }
             mwj{
                 reason{"deprecated"}
                 replacement{"vaj"}
@@ -999,10 +1096,18 @@
                 reason{"overlong"}
                 replacement{"nv"}
             }
+            nbf{
+                reason{"deprecated"}
+                replacement{"nru"}
+            }
             nbl{
                 reason{"overlong"}
                 replacement{"nr"}
             }
+            nbx{
+                reason{"deprecated"}
+                replacement{"ekc"}
+            }
             ncp{
                 reason{"deprecated"}
                 replacement{"kdz"}
@@ -1023,6 +1128,14 @@
                 reason{"overlong"}
                 replacement{"nl"}
             }
+            nln{
+                reason{"deprecated"}
+                replacement{"azd"}
+            }
+            nlr{
+                reason{"deprecated"}
+                replacement{"nrk"}
+            }
             nno{
                 reason{"overlong"}
                 replacement{"nn"}
@@ -1039,15 +1152,11 @@
                 reason{"legacy"}
                 replacement{"nb"}
             }
-            no_BOKMAL{
+            no_bok{
                 reason{"deprecated"}
                 replacement{"nb"}
             }
-            no_NYNORSK{
-                reason{"deprecated"}
-                replacement{"nn"}
-            }
-            no_bok{
+            no_bokmal{
                 reason{"deprecated"}
                 replacement{"nb"}
             }
@@ -1055,10 +1164,18 @@
                 reason{"deprecated"}
                 replacement{"nn"}
             }
+            no_nynorsk{
+                reason{"deprecated"}
+                replacement{"nn"}
+            }
             nob{
                 reason{"overlong"}
                 replacement{"nb"}
             }
+            noo{
+                reason{"deprecated"}
+                replacement{"dtd"}
+            }
             nor{
                 reason{"overlong"}
                 replacement{"nb"}
@@ -1071,6 +1188,10 @@
                 reason{"deprecated"}
                 replacement{"pij"}
             }
+            nxu{
+                reason{"deprecated"}
+                replacement{"bpp"}
+            }
             nya{
                 reason{"overlong"}
                 replacement{"ny"}
@@ -1107,14 +1228,6 @@
                 reason{"deprecated"}
                 replacement{"vaj"}
             }
-            pa_IN{
-                reason{"legacy"}
-                replacement{"pa_Guru_IN"}
-            }
-            pa_PK{
-                reason{"legacy"}
-                replacement{"pa_Arab_PK"}
-            }
             pan{
                 reason{"overlong"}
                 replacement{"pa"}
@@ -1195,6 +1308,10 @@
                 reason{"macrolanguage"}
                 replacement{"qu"}
             }
+            rmr{
+                reason{"deprecated"}
+                replacement{"emx"}
+            }
             rmy{
                 reason{"macrolanguage"}
                 replacement{"rom"}
@@ -1227,6 +1344,10 @@
                 reason{"overlong"}
                 replacement{"sa"}
             }
+            sap{
+                reason{"deprecated"}
+                replacement{"aqt"}
+            }
             sca{
                 reason{"deprecated"}
                 replacement{"hle"}
@@ -1239,6 +1360,10 @@
                 reason{"deprecated"}
                 replacement{"hr"}
             }
+            sgl{
+                reason{"deprecated"}
+                replacement{"isk"}
+            }
             sgn_BE_FR{
                 reason{"deprecated"}
                 replacement{"sfb"}
@@ -1247,18 +1372,90 @@
                 reason{"deprecated"}
                 replacement{"vgt"}
             }
+            sgn_BR{
+                reason{"deprecated"}
+                replacement{"bzs"}
+            }
             sgn_CH_DE{
                 reason{"deprecated"}
                 replacement{"sgg"}
             }
+            sgn_CO{
+                reason{"deprecated"}
+                replacement{"csn"}
+            }
+            sgn_DE{
+                reason{"deprecated"}
+                replacement{"gsg"}
+            }
+            sgn_DK{
+                reason{"deprecated"}
+                replacement{"dsl"}
+            }
+            sgn_ES{
+                reason{"deprecated"}
+                replacement{"ssp"}
+            }
+            sgn_FR{
+                reason{"deprecated"}
+                replacement{"fsl"}
+            }
+            sgn_GB{
+                reason{"deprecated"}
+                replacement{"bfi"}
+            }
+            sgn_GR{
+                reason{"deprecated"}
+                replacement{"gss"}
+            }
+            sgn_IE{
+                reason{"deprecated"}
+                replacement{"isg"}
+            }
+            sgn_IT{
+                reason{"deprecated"}
+                replacement{"ise"}
+            }
+            sgn_JP{
+                reason{"deprecated"}
+                replacement{"jsl"}
+            }
+            sgn_MX{
+                reason{"deprecated"}
+                replacement{"mfs"}
+            }
+            sgn_NI{
+                reason{"deprecated"}
+                replacement{"ncs"}
+            }
+            sgn_NL{
+                reason{"deprecated"}
+                replacement{"dse"}
+            }
+            sgn_NO{
+                reason{"deprecated"}
+                replacement{"nsi"}
+            }
+            sgn_PT{
+                reason{"deprecated"}
+                replacement{"psr"}
+            }
+            sgn_SE{
+                reason{"deprecated"}
+                replacement{"swl"}
+            }
+            sgn_US{
+                reason{"deprecated"}
+                replacement{"ase"}
+            }
+            sgn_ZA{
+                reason{"deprecated"}
+                replacement{"sfs"}
+            }
             sh{
                 reason{"legacy"}
                 replacement{"sr_Latn"}
             }
-            shi_MA{
-                reason{"legacy"}
-                replacement{"shi_Tfng_MA"}
-            }
             sin{
                 reason{"overlong"}
                 replacement{"si"}
@@ -1315,22 +1512,6 @@
                 reason{"overlong"}
                 replacement{"sq"}
             }
-            sr_BA{
-                reason{"legacy"}
-                replacement{"sr_Cyrl_BA"}
-            }
-            sr_ME{
-                reason{"legacy"}
-                replacement{"sr_Latn_ME"}
-            }
-            sr_RS{
-                reason{"legacy"}
-                replacement{"sr_Cyrl_RS"}
-            }
-            sr_XK{
-                reason{"legacy"}
-                replacement{"sr_Cyrl_XK"}
-            }
             src{
                 reason{"macrolanguage"}
                 replacement{"sc"}
@@ -1347,6 +1528,14 @@
                 reason{"overlong"}
                 replacement{"ss"}
             }
+            sul{
+                reason{"deprecated"}
+                replacement{"sgd"}
+            }
+            sum{
+                reason{"deprecated"}
+                replacement{"ulw"}
+            }
             sun{
                 reason{"overlong"}
                 replacement{"su"}
@@ -1387,6 +1576,10 @@
                 reason{"overlong"}
                 replacement{"te"}
             }
+            tgg{
+                reason{"deprecated"}
+                replacement{"bjp"}
+            }
             tgk{
                 reason{"overlong"}
                 replacement{"tg"}
@@ -1403,6 +1596,10 @@
                 reason{"deprecated"}
                 replacement{"tpo"}
             }
+            thw{
+                reason{"deprecated"}
+                replacement{"ola"}
+            }
             thx{
                 reason{"deprecated"}
                 replacement{"oyb"}
@@ -1411,6 +1608,10 @@
                 reason{"bibliographic"}
                 replacement{"bo"}
             }
+            tid{
+                reason{"deprecated"}
+                replacement{"itd"}
+            }
             tie{
                 reason{"deprecated"}
                 replacement{"ras"}
@@ -1441,7 +1642,7 @@
             }
             tnf{
                 reason{"deprecated"}
-                replacement{"fa_af"}
+                replacement{"fa_AF"}
             }
             ton{
                 reason{"overlong"}
@@ -1479,14 +1680,6 @@
                 reason{"overlong"}
                 replacement{"ak"}
             }
-            tzm_Latn_MA{
-                reason{"legacy"}
-                replacement{"tzm_MA"}
-            }
-            ug_Arab_CN{
-                reason{"legacy"}
-                replacement{"ug_CN"}
-            }
             uig{
                 reason{"overlong"}
                 replacement{"ug"}
@@ -1499,6 +1692,50 @@
                 reason{"macrolanguage"}
                 replacement{"del"}
             }
+            und_aaland{
+                reason{"deprecated"}
+                replacement{"und_AX"}
+            }
+            und_arevela{
+                reason{"deprecated"}
+                replacement{"und"}
+            }
+            und_arevmda{
+                reason{"deprecated"}
+                replacement{"und"}
+            }
+            und_bokmal{
+                reason{"deprecated"}
+                replacement{"und"}
+            }
+            und_hakka{
+                reason{"deprecated"}
+                replacement{"und"}
+            }
+            und_hepburn_heploc{
+                reason{"deprecated"}
+                replacement{"und_alalc97"}
+            }
+            und_lojban{
+                reason{"deprecated"}
+                replacement{"und"}
+            }
+            und_nynorsk{
+                reason{"deprecated"}
+                replacement{"und"}
+            }
+            und_saaho{
+                reason{"deprecated"}
+                replacement{"und"}
+            }
+            und_xiang{
+                reason{"deprecated"}
+                replacement{"und"}
+            }
+            unp{
+                reason{"deprecated"}
+                replacement{"wro"}
+            }
             uok{
                 reason{"deprecated"}
                 replacement{"ema"}
@@ -1507,14 +1744,6 @@
                 reason{"overlong"}
                 replacement{"ur"}
             }
-            uz_AF{
-                reason{"legacy"}
-                replacement{"uz_Arab_AF"}
-            }
-            uz_UZ{
-                reason{"legacy"}
-                replacement{"uz_Latn_UZ"}
-            }
             uzb{
                 reason{"overlong"}
                 replacement{"uz"}
@@ -1523,10 +1752,6 @@
                 reason{"macrolanguage"}
                 replacement{"uz"}
             }
-            vai_LR{
-                reason{"legacy"}
-                replacement{"vai_Vaii_LR"}
-            }
             ven{
                 reason{"overlong"}
                 replacement{"ve"}
@@ -1543,6 +1768,18 @@
                 reason{"bibliographic"}
                 replacement{"cy"}
             }
+            wgw{
+                reason{"deprecated"}
+                replacement{"wgb"}
+            }
+            wit{
+                reason{"deprecated"}
+                replacement{"nol"}
+            }
+            wiw{
+                reason{"deprecated"}
+                replacement{"nwo"}
+            }
             wln{
                 reason{"overlong"}
                 replacement{"wa"}
@@ -1571,6 +1808,10 @@
                 reason{"macrolanguage"}
                 replacement{"kpe"}
             }
+            xrq{
+                reason{"deprecated"}
+                replacement{"dmw"}
+            }
             xsj{
                 reason{"deprecated"}
                 replacement{"suj"}
@@ -1587,10 +1828,18 @@
                 reason{"macrolanguage"}
                 replacement{"yi"}
             }
+            yen{
+                reason{"deprecated"}
+                replacement{"ynq"}
+            }
             yid{
                 reason{"overlong"}
                 replacement{"yi"}
             }
+            yiy{
+                reason{"deprecated"}
+                replacement{"yrm"}
+            }
             yma{
                 reason{"deprecated"}
                 replacement{"lrr"}
@@ -1607,14 +1856,6 @@
                 reason{"deprecated"}
                 replacement{"zom"}
             }
-            yue_CN{
-                reason{"legacy"}
-                replacement{"yue_Hans_CN"}
-            }
-            yue_HK{
-                reason{"legacy"}
-                replacement{"yue_Hant_HK"}
-            }
             yuu{
                 reason{"deprecated"}
                 replacement{"yug"}
@@ -1623,29 +1864,21 @@
                 reason{"macrolanguage"}
                 replacement{"zap"}
             }
-            zh-min{
-                reason{"legacy"}
-                replacement{"nan-x-zh-min"}
+            zh_cmn{
+                reason{"deprecated"}
+                replacement{"zh"}
             }
-            zh_CN{
-                reason{"legacy"}
-                replacement{"zh_Hans_CN"}
+            zh_cmn_Hans{
+                reason{"deprecated"}
+                replacement{"zh_Hans"}
             }
-            zh_HK{
-                reason{"legacy"}
-                replacement{"zh_Hant_HK"}
+            zh_cmn_Hant{
+                reason{"deprecated"}
+                replacement{"zh_Hant"}
             }
-            zh_MO{
-                reason{"legacy"}
-                replacement{"zh_Hant_MO"}
-            }
-            zh_SG{
-                reason{"legacy"}
-                replacement{"zh_Hans_SG"}
-            }
-            zh_TW{
-                reason{"legacy"}
-                replacement{"zh_Hant_TW"}
+            zh_gan{
+                reason{"deprecated"}
+                replacement{"gan"}
             }
             zh_guoyu{
                 reason{"deprecated"}
@@ -1655,14 +1888,26 @@
                 reason{"deprecated"}
                 replacement{"hak"}
             }
+            zh_min{
+                reason{"legacy"}
+                replacement{"nan_x_zh_min"}
+            }
             zh_min_nan{
                 reason{"deprecated"}
                 replacement{"nan"}
             }
+            zh_wuu{
+                reason{"deprecated"}
+                replacement{"wuu"}
+            }
             zh_xiang{
                 reason{"deprecated"}
                 replacement{"hsn"}
             }
+            zh_yue{
+                reason{"deprecated"}
+                replacement{"yue"}
+            }
             zha{
                 reason{"overlong"}
                 replacement{"za"}
@@ -1671,6 +1916,10 @@
                 reason{"overlong"}
                 replacement{"zh"}
             }
+            zir{
+                reason{"deprecated"}
+                replacement{"scv"}
+            }
             zsm{
                 reason{"macrolanguage"}
                 replacement{"ms"}
@@ -4831,30 +5080,14 @@
             }
         }
         variant{
-            AALAND{
-                reason{"deprecated"}
-                replacement{"AX"}
-            }
-            HEPLOC{
-                reason{"deprecated"}
-                replacement{"ALALC97"}
-            }
-            POLYTONI{
-                reason{"deprecated"}
-                replacement{"POLYTON"}
-            }
-            arevela{
-                reason{"deprecated"}
-                replacement{"hy"}
-            }
-            arevmda{
-                reason{"deprecated"}
-                replacement{"hyw"}
-            }
             heploc{
                 reason{"deprecated"}
                 replacement{"alalc97"}
             }
+            polytoni{
+                reason{"deprecated"}
+                replacement{"polyton"}
+            }
         }
     }
     defaultContent{
@@ -4911,6 +5144,7 @@
         "dav_KE",
         "de_DE",
         "dje_NE",
+        "doi_IN",
         "dsb_DE",
         "dua_CM",
         "dv_MV",
@@ -4979,6 +5213,7 @@
         "kde_TZ",
         "kea_CV",
         "ken_CM",
+        "kgp_BR",
         "khq_ML",
         "ki_KE",
         "kk_KZ",
@@ -4999,9 +5234,11 @@
         "ku_TR",
         "kw_GB",
         "ky_KG",
+        "la_VA",
         "lag_TZ",
         "lb_LU",
         "lg_UG",
+        "lij_IT",
         "lkt_US",
         "ln_CD",
         "lo_LA",
@@ -5049,6 +5286,7 @@
         "nr_ZA",
         "nso_ZA",
         "nus_SS",
+        "nv_US",
         "ny_MW",
         "nyn_UG",
         "oc_FR",
@@ -5128,6 +5366,7 @@
         "to_TO",
         "tr_TR",
         "trv_TW",
+        "trw_PK",
         "ts_ZA",
         "tt_RU",
         "twq_NE",
diff --git a/icu4c/source/data/misc/miscfiles.mk b/icu4c/source/data/misc/miscfiles.mk
deleted file mode 100644
index 0c18119..0000000
--- a/icu4c/source/data/misc/miscfiles.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-# *   Copyright (C) 2003-2015, International Business Machines
-# *   Corporation and others.  All Rights Reserved.
-# A list of txt's to build
-# Note: 
-#
-#   If you are thinking of modifying this file, READ THIS. 
-#
-# Instead of changing this file [unless you want to check it back in],
-# you should consider creating a 'misclocal.mk' file in this same directory.
-# Then, you can have your local changes remain even if you upgrade or re-
-# configure ICU.
-#
-# Example 'misclocal.mk' files:
-#
-#  * To add an additional file to the list: 
-#    _____________________________________________________
-#    |  MISC_SOURCE_LOCAL =   myFile.txt ...
-#
-#  * To REPLACE the default list and only build a subset of files:
-#    _____________________________________________________
-#    |  MISC_SOURCE = zoneinfo.txt
-#
-#
-
-MISC_SOURCE = \
-zoneinfo64.txt supplementalData.txt likelySubtags.txt plurals.txt \
-numberingSystems.txt icuver.txt icustd.txt metadata.txt metaZones.txt \
-windowsZones.txt keyTypeData.txt timezoneTypes.txt currencyNumericCodes.txt \
-genderList.txt dayPeriods.txt pluralRanges.txt
diff --git a/icu4c/source/data/misc/numberingSystems.txt b/icu4c/source/data/misc/numberingSystems.txt
index 7de1bdf..76302bc 100644
--- a/icu4c/source/data/misc/numberingSystems.txt
+++ b/icu4c/source/data/misc/numberingSystems.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 numberingSystems:table(nofallback){
     numberingSystems{
         adlm{
diff --git a/icu4c/source/data/misc/pluralRanges.txt b/icu4c/source/data/misc/pluralRanges.txt
index 5e757f1..9c18ba2 100644
--- a/icu4c/source/data/misc/pluralRanges.txt
+++ b/icu4c/source/data/misc/pluralRanges.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pluralRanges:table(nofallback){
     locales{
         af{"set04"}
@@ -48,6 +49,7 @@
         kn{"set01"}
         ko{"set00"}
         ky{"set03"}
+        lij{"set03"}
         lo{"set00"}
         lt{"set15"}
         lv{"set09"}
diff --git a/icu4c/source/data/misc/plurals.txt b/icu4c/source/data/misc/plurals.txt
index cf215c5..cf03e27 100644
--- a/icu4c/source/data/misc/plurals.txt
+++ b/icu4c/source/data/misc/plurals.txt
@@ -1,18 +1,19 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 plurals:table(nofallback){
     locales{
         af{"set8"}
         ak{"set6"}
         am{"set1"}
         an{"set8"}
-        ar{"set34"}
-        ars{"set34"}
+        ar{"set35"}
+        ars{"set35"}
         as{"set1"}
         asa{"set8"}
         ast{"set4"}
         az{"set8"}
-        be{"set26"}
+        be{"set27"}
         bem{"set8"}
         bez{"set8"}
         bg{"set8"}
@@ -20,7 +21,7 @@
         bm{"set0"}
         bn{"set1"}
         bo{"set0"}
-        br{"set30"}
+        br{"set31"}
         brx{"set8"}
         bs{"set19"}
         ca{"set4"}
@@ -29,11 +30,12 @@
         cgg{"set8"}
         chr{"set8"}
         ckb{"set8"}
-        cs{"set24"}
-        cy{"set35"}
+        cs{"set25"}
+        cy{"set36"}
         da{"set9"}
         de{"set4"}
-        dsb{"set22"}
+        doi{"set1"}
+        dsb{"set23"}
         dv{"set8"}
         dz{"set0"}
         ee{"set8"}
@@ -48,22 +50,22 @@
         fi{"set4"}
         fil{"set12"}
         fo{"set8"}
-        fr{"set2"}
+        fr{"set20"}
         fur{"set8"}
         fy{"set4"}
-        ga{"set31"}
-        gd{"set20"}
+        ga{"set32"}
+        gd{"set21"}
         gl{"set4"}
         gsw{"set8"}
         gu{"set1"}
         guw{"set6"}
-        gv{"set32"}
+        gv{"set33"}
         ha{"set8"}
         haw{"set8"}
-        he{"set23"}
+        he{"set24"}
         hi{"set1"}
         hr{"set19"}
-        hsb{"set22"}
+        hsb{"set23"}
         hu{"set8"}
         hy{"set2"}
         ia{"set4"}
@@ -75,7 +77,7 @@
         is{"set10"}
         it{"set4"}
         iu{"set16"}
-        iw{"set23"}
+        iw{"set24"}
         ja{"set0"}
         jbo{"set0"}
         jgo{"set8"}
@@ -99,15 +101,16 @@
         ksb{"set8"}
         ksh{"set15"}
         ku{"set8"}
-        kw{"set33"}
+        kw{"set34"}
         ky{"set8"}
         lag{"set14"}
         lb{"set8"}
         lg{"set8"}
+        lij{"set4"}
         lkt{"set0"}
         ln{"set6"}
         lo{"set0"}
-        lt{"set27"}
+        lt{"set28"}
         lv{"set13"}
         mas{"set8"}
         mg{"set6"}
@@ -118,7 +121,7 @@
         mo{"set18"}
         mr{"set8"}
         ms{"set0"}
-        mt{"set28"}
+        mt{"set29"}
         my{"set0"}
         nah{"set8"}
         naq{"set16"}
@@ -141,7 +144,7 @@
         pa{"set6"}
         pap{"set8"}
         pcm{"set1"}
-        pl{"set25"}
+        pl{"set26"}
         prg{"set13"}
         ps{"set8"}
         pt{"set3"}
@@ -150,7 +153,7 @@
         ro{"set18"}
         rof{"set8"}
         root{"set0"}
-        ru{"set29"}
+        ru{"set30"}
         rwk{"set8"}
         sah{"set0"}
         saq{"set8"}
@@ -166,8 +169,8 @@
         sh{"set19"}
         shi{"set17"}
         si{"set5"}
-        sk{"set24"}
-        sl{"set21"}
+        sk{"set25"}
+        sl{"set22"}
         sma{"set16"}
         smi{"set16"}
         smj{"set16"}
@@ -198,7 +201,7 @@
         ts{"set8"}
         tzm{"set7"}
         ug{"set8"}
-        uk{"set29"}
+        uk{"set30"}
         ur{"set4"}
         uz{"set8"}
         ve{"set8"}
@@ -217,104 +220,105 @@
         zu{"set1"}
     }
     locales_ordinals{
-        af{"set36"}
-        am{"set36"}
-        an{"set36"}
-        ar{"set36"}
-        as{"set56"}
-        az{"set54"}
-        be{"set41"}
-        bg{"set36"}
-        bn{"set56"}
-        bs{"set36"}
-        ca{"set52"}
-        ce{"set36"}
-        cs{"set36"}
-        cy{"set58"}
-        da{"set36"}
-        de{"set36"}
-        dsb{"set36"}
-        el{"set36"}
-        en{"set49"}
-        es{"set36"}
-        et{"set36"}
-        eu{"set36"}
-        fa{"set36"}
-        fi{"set36"}
-        fil{"set38"}
-        fr{"set38"}
-        fy{"set36"}
-        ga{"set38"}
-        gd{"set51"}
-        gl{"set36"}
-        gsw{"set36"}
-        gu{"set55"}
-        he{"set36"}
-        hi{"set55"}
-        hr{"set36"}
-        hsb{"set36"}
-        hu{"set39"}
-        hy{"set38"}
-        ia{"set36"}
-        id{"set36"}
-        in{"set36"}
-        is{"set36"}
-        it{"set45"}
-        iw{"set36"}
-        ja{"set36"}
-        ka{"set46"}
-        kk{"set44"}
-        km{"set36"}
-        kn{"set36"}
-        ko{"set36"}
-        kw{"set48"}
-        ky{"set36"}
-        lo{"set38"}
-        lt{"set36"}
-        lv{"set36"}
-        mk{"set53"}
-        ml{"set36"}
-        mn{"set36"}
-        mo{"set38"}
-        mr{"set50"}
-        ms{"set38"}
-        my{"set36"}
-        nb{"set36"}
-        ne{"set40"}
-        nl{"set36"}
-        or{"set57"}
-        pa{"set36"}
-        pl{"set36"}
-        prg{"set36"}
-        ps{"set36"}
-        pt{"set36"}
-        ro{"set38"}
-        root{"set36"}
-        ru{"set36"}
-        sc{"set45"}
-        scn{"set45"}
-        sd{"set36"}
-        sh{"set36"}
-        si{"set36"}
-        sk{"set36"}
-        sl{"set36"}
-        sq{"set47"}
-        sr{"set36"}
-        sv{"set37"}
-        sw{"set36"}
-        ta{"set36"}
-        te{"set36"}
-        th{"set36"}
-        tk{"set43"}
-        tl{"set38"}
-        tr{"set36"}
-        uk{"set42"}
-        ur{"set36"}
-        uz{"set36"}
-        vi{"set38"}
-        yue{"set36"}
-        zh{"set36"}
-        zu{"set36"}
+        af{"set37"}
+        am{"set37"}
+        an{"set37"}
+        ar{"set37"}
+        as{"set58"}
+        az{"set56"}
+        be{"set42"}
+        bg{"set37"}
+        bn{"set58"}
+        bs{"set37"}
+        ca{"set54"}
+        ce{"set37"}
+        cs{"set37"}
+        cy{"set60"}
+        da{"set37"}
+        de{"set37"}
+        dsb{"set37"}
+        el{"set37"}
+        en{"set51"}
+        es{"set37"}
+        et{"set37"}
+        eu{"set37"}
+        fa{"set37"}
+        fi{"set37"}
+        fil{"set39"}
+        fr{"set39"}
+        fy{"set37"}
+        ga{"set39"}
+        gd{"set53"}
+        gl{"set37"}
+        gsw{"set37"}
+        gu{"set57"}
+        he{"set37"}
+        hi{"set57"}
+        hr{"set37"}
+        hsb{"set37"}
+        hu{"set40"}
+        hy{"set39"}
+        ia{"set37"}
+        id{"set37"}
+        in{"set37"}
+        is{"set37"}
+        it{"set46"}
+        iw{"set37"}
+        ja{"set37"}
+        ka{"set48"}
+        kk{"set45"}
+        km{"set37"}
+        kn{"set37"}
+        ko{"set37"}
+        kw{"set50"}
+        ky{"set37"}
+        lij{"set47"}
+        lo{"set39"}
+        lt{"set37"}
+        lv{"set37"}
+        mk{"set55"}
+        ml{"set37"}
+        mn{"set37"}
+        mo{"set39"}
+        mr{"set52"}
+        ms{"set39"}
+        my{"set37"}
+        nb{"set37"}
+        ne{"set41"}
+        nl{"set37"}
+        or{"set59"}
+        pa{"set37"}
+        pl{"set37"}
+        prg{"set37"}
+        ps{"set37"}
+        pt{"set37"}
+        ro{"set39"}
+        root{"set37"}
+        ru{"set37"}
+        sc{"set46"}
+        scn{"set46"}
+        sd{"set37"}
+        sh{"set37"}
+        si{"set37"}
+        sk{"set37"}
+        sl{"set37"}
+        sq{"set49"}
+        sr{"set37"}
+        sv{"set38"}
+        sw{"set37"}
+        ta{"set37"}
+        te{"set37"}
+        th{"set37"}
+        tk{"set44"}
+        tl{"set39"}
+        tr{"set37"}
+        uk{"set43"}
+        ur{"set37"}
+        uz{"set37"}
+        vi{"set39"}
+        yue{"set37"}
+        zh{"set37"}
+        zu{"set37"}
     }
     rules{
         set0{
@@ -454,6 +458,19 @@
             }
         }
         set20{
+            many{
+                "e = 0 and i != 0 and i % 1000000 = 0 and v = 0 or e != 0..5 @integer"
+                " 1000000, 1e6, 2e6, 3e6, 4e6, 5e6, 6e6, … @decimal 1.0000001e6, 1.1e"
+                "6, 2.0000001e6, 2.1e6, 3.0000001e6, 3.1e6, …"
+            }
+            one{"i = 0,1 @integer 0, 1 @decimal 0.0~1.5"}
+            other{
+                " @integer 2~17, 100, 1000, 10000, 100000, 1e3, 2e3, 3e3, 4e3, 5e3, 6"
+                "e3, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000"
+                "000.0, 1.0001e3, 1.1e3, 2.0001e3, 2.1e3, 3.0001e3, 3.1e3, …"
+            }
+        }
+        set21{
             few{
                 "n = 3..10,13..19 @integer 3~10, 13~19 @decimal 3.0, 4.0, 5.0, 6.0, 7"
                 ".0, 8.0, 9.0, 10.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 3.00"
@@ -471,7 +488,7 @@
                 "00, 2.0000"
             }
         }
-        set21{
+        set22{
             few{
                 "v = 0 and i % 100 = 3..4 or v != 0 @integer 3, 4, 103, 104, 203, 204"
                 ", 303, 304, 403, 404, 503, 504, 603, 604, 703, 704, 1003, … @decimal"
@@ -487,7 +504,7 @@
                 " 1002, …"
             }
         }
-        set22{
+        set23{
             few{
                 "v = 0 and i % 100 = 3..4 or f % 100 = 3..4 @integer 3, 4, 103, 104, "
                 "203, 204, 303, 304, 403, 404, 503, 504, 603, 604, 703, 704, 1003, … "
@@ -510,7 +527,7 @@
                 "7.2, 10.2, 100.2, 1000.2, …"
             }
         }
-        set23{
+        set24{
             many{
                 "v = 0 and n != 0..10 and n % 10 = 0 @integer 20, 30, 40, 50, 60, 70,"
                 " 80, 90, 100, 1000, 10000, 100000, 1000000, …"
@@ -522,7 +539,7 @@
             }
             two{"i = 2 and v = 0 @integer 2"}
         }
-        set24{
+        set25{
             few{"i = 2..4 and v = 0 @integer 2~4"}
             many{
                 "v != 0   @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1"
@@ -531,7 +548,7 @@
             one{"i = 1 and v = 0 @integer 1"}
             other{" @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …"}
         }
-        set25{
+        set26{
             few{
                 "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 3"
                 "2~34, 42~44, 52~54, 62, 102, 1002, …"
@@ -547,7 +564,7 @@
                 ".0, …"
             }
         }
-        set26{
+        set27{
             few{
                 "n % 10 = 2..4 and n % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~4"
                 "4, 52~54, 62, 102, 1002, … @decimal 2.0, 3.0, 4.0, 22.0, 23.0, 24.0,"
@@ -565,7 +582,7 @@
             }
             other{"   @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …"}
         }
-        set27{
+        set28{
             few{
                 "n % 10 = 2..9 and n % 100 != 11..19 @integer 2~9, 22~29, 102, 1002, "
                 "… @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 22.0, 102.0, 1002"
@@ -583,7 +600,7 @@
                 "1000.0, 10000.0, 100000.0, 1000000.0, …"
             }
         }
-        set28{
+        set29{
             few{
                 "n = 0 or n % 100 = 2..10 @integer 0, 2~10, 102~107, 1002, … @decimal"
                 " 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 102.0, 1002.0, …"
@@ -598,7 +615,14 @@
                 ".9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"
             }
         }
-        set29{
+        set3{
+            one{"i = 0..1 @integer 0, 1 @decimal 0.0~1.5"}
+            other{
+                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3."
+                "5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"
+            }
+        }
+        set30{
             few{
                 "v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 3"
                 "2~34, 42~44, 52~54, 62, 102, 1002, …"
@@ -616,14 +640,7 @@
                 ".0, …"
             }
         }
-        set3{
-            one{"i = 0..1 @integer 0, 1 @decimal 0.0~1.5"}
-            other{
-                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3."
-                "5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"
-            }
-        }
-        set30{
+        set31{
             few{
                 "n % 10 = 3..4,9 and n % 100 != 10..19,70..79,90..99 @integer 3, 4, 9"
                 ", 23, 24, 29, 33, 34, 39, 43, 44, 49, 103, 1003, … @decimal 3.0, 4.0"
@@ -631,7 +648,7 @@
             }
             many{
                 "n != 0 and n % 1000000 = 0 @integer 1000000, … @decimal 1000000.0, 1"
-                "000000.00, 1000000.000, …"
+                "000000.00, 1000000.000, 1000000.0000, …"
             }
             one{
                 "n % 10 = 1 and n % 100 != 11,71,91 @integer 1, 21, 31, 41, 51, 61, 8"
@@ -648,7 +665,7 @@
                 "2.0, 1002.0, …"
             }
         }
-        set31{
+        set32{
             few{
                 "n = 3..6 @integer 3~6 @decimal 3.0, 4.0, 5.0, 6.0, 3.00, 4.00, 5.00,"
                 " 6.00, 3.000, 4.000, 5.000, 6.000, 3.0000, 4.0000, 5.0000, 6.0000"
@@ -665,7 +682,7 @@
             }
             two{"n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000"}
         }
-        set32{
+        set33{
             few{
                 "v = 0 and i % 100 = 0,20,40,60,80 @integer 0, 20, 40, 60, 80, 100, 1"
                 "20, 140, 1000, 10000, 100000, 1000000, …"
@@ -684,7 +701,7 @@
                 "02, …"
             }
         }
-        set33{
+        set34{
             few{
                 "n % 100 = 3,23,43,63,83 @integer 3, 23, 43, 63, 83, 103, 123, 143, 1"
                 "003, … @decimal 3.0, 23.0, 43.0, 63.0, 83.0, 103.0, 123.0, 143.0, 10"
@@ -709,7 +726,7 @@
             }
             zero{"n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000"}
         }
-        set34{
+        set35{
             few{
                 "n % 100 = 3..10 @integer 3~10, 103~110, 1003, … @decimal 3.0, 4.0, 5"
                 ".0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, …"
@@ -727,7 +744,7 @@
             two{"n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000"}
             zero{"n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000"}
         }
-        set35{
+        set36{
             few{"n = 3 @integer 3 @decimal 3.0, 3.00, 3.000, 3.0000"}
             many{"n = 6 @integer 6 @decimal 6.0, 6.00, 6.000, 6.0000"}
             one{"n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000"}
@@ -739,24 +756,20 @@
             two{"n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000"}
             zero{"n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000"}
         }
-        set36{
+        set37{
             other{" @integer 0~15, 100, 1000, 10000, 100000, 1000000, …"}
         }
-        set37{
+        set38{
             one{
                 "n % 10 = 1,2 and n % 100 != 11,12 @integer 1, 2, 21, 22, 31, 32, 41,"
                 " 42, 51, 52, 61, 62, 71, 72, 81, 82, 101, 1001, …"
             }
             other{" @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, …"}
         }
-        set38{
+        set39{
             one{"n = 1 @integer 1"}
             other{" @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, …"}
         }
-        set39{
-            one{"n = 1,5 @integer 1, 5"}
-            other{" @integer 0, 2~4, 6~17, 100, 1000, 10000, 100000, 1000000, …"}
-        }
         set4{
             one{"i = 1 and v = 0 @integer 1"}
             other{
@@ -765,24 +778,28 @@
             }
         }
         set40{
+            one{"n = 1,5 @integer 1, 5"}
+            other{" @integer 0, 2~4, 6~17, 100, 1000, 10000, 100000, 1000000, …"}
+        }
+        set41{
             one{"n = 1..4 @integer 1~4"}
             other{" @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …"}
         }
-        set41{
+        set42{
             few{
                 "n % 10 = 2,3 and n % 100 != 12,13 @integer 2, 3, 22, 23, 32, 33, 42,"
                 " 43, 52, 53, 62, 63, 72, 73, 82, 83, 102, 1002, …"
             }
             other{" @integer 0, 1, 4~17, 100, 1000, 10000, 100000, 1000000, …"}
         }
-        set42{
+        set43{
             few{
                 "n % 10 = 3 and n % 100 != 13 @integer 3, 23, 33, 43, 53, 63, 73, 83,"
                 " 103, 1003, …"
             }
             other{" @integer 0~2, 4~16, 100, 1000, 10000, 100000, 1000000, …"}
         }
-        set43{
+        set44{
             few{
                 "n % 10 = 6,9 or n = 10 @integer 6, 9, 10, 16, 19, 26, 29, 36, 39, 10"
                 "6, 1006, …"
@@ -792,7 +809,7 @@
                 "00000, …"
             }
         }
-        set44{
+        set45{
             many{
                 "n % 10 = 6 or n % 10 = 9 or n % 10 = 0 and n != 0 @integer 6, 9, 10,"
                 " 16, 19, 20, 26, 29, 30, 36, 39, 40, 100, 1000, 10000, 100000, 10000"
@@ -800,16 +817,20 @@
             }
             other{" @integer 0~5, 7, 8, 11~15, 17, 18, 21, 101, 1001, …"}
         }
-        set45{
+        set46{
             many{"n = 11,8,80,800 @integer 8, 11, 80, 800"}
             other{" @integer 0~7, 9, 10, 12~17, 100, 1000, 10000, 100000, 1000000, …"}
         }
-        set46{
+        set47{
+            many{"n = 11,8,80..89,800..899 @integer 8, 11, 80~89, 800~803"}
+            other{" @integer 0~7, 9, 10, 12~17, 100, 1000, 10000, 100000, 1000000, …"}
+        }
+        set48{
             many{"i = 0 or i % 100 = 2..20,40,60,80 @integer 0, 2~16, 102, 1002, …"}
             one{"i = 1 @integer 1"}
             other{" @integer 21~36, 100, 1000, 10000, 100000, 1000000, …"}
         }
-        set47{
+        set49{
             many{
                 "n % 10 = 4 and n % 100 != 14 @integer 4, 24, 34, 44, 54, 64, 74, 84,"
                 " 104, 1004, …"
@@ -817,7 +838,17 @@
             one{"n = 1 @integer 1"}
             other{" @integer 0, 2, 3, 5~17, 100, 1000, 10000, 100000, 1000000, …"}
         }
-        set48{
+        set5{
+            one{
+                "n = 0,1 or i = 0 and f = 1 @integer 0, 1 @decimal 0.0, 0.1, 1.0, 0.0"
+                "0, 0.01, 1.00, 0.000, 0.001, 1.000, 0.0000, 0.0001, 1.0000"
+            }
+            other{
+                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.2~0."
+                "9, 1.1~1.8, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"
+            }
+        }
+        set50{
             many{
                 "n = 5 or n % 100 = 5 @integer 5, 105, 205, 305, 405, 505, 605, 705, "
                 "1005, …"
@@ -828,7 +859,7 @@
             }
             other{" @integer 0, 6~20, 100, 1000, 10000, 100000, 1000000, …"}
         }
-        set49{
+        set51{
             few{
                 "n % 10 = 3 and n % 100 != 13 @integer 3, 23, 33, 43, 53, 63, 73, 83,"
                 " 103, 1003, …"
@@ -843,35 +874,25 @@
                 " 102, 1002, …"
             }
         }
-        set5{
-            one{
-                "n = 0,1 or i = 0 and f = 1 @integer 0, 1 @decimal 0.0, 0.1, 1.0, 0.0"
-                "0, 0.01, 1.00, 0.000, 0.001, 1.000, 0.0000, 0.0001, 1.0000"
-            }
-            other{
-                " @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.2~0."
-                "9, 1.1~1.8, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"
-            }
-        }
-        set50{
+        set52{
             few{"n = 4 @integer 4"}
             one{"n = 1 @integer 1"}
             other{" @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …"}
             two{"n = 2,3 @integer 2, 3"}
         }
-        set51{
+        set53{
             few{"n = 3,13 @integer 3, 13"}
             one{"n = 1,11 @integer 1, 11"}
             other{" @integer 0, 4~10, 14~21, 100, 1000, 10000, 100000, 1000000, …"}
             two{"n = 2,12 @integer 2, 12"}
         }
-        set52{
+        set54{
             few{"n = 4 @integer 4"}
             one{"n = 1,3 @integer 1, 3"}
             other{" @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …"}
             two{"n = 2 @integer 2"}
         }
-        set53{
+        set55{
             many{
                 "i % 10 = 7,8 and i % 100 != 17,18 @integer 7, 8, 27, 28, 37, 38, 47,"
                 " 48, 57, 58, 67, 68, 77, 78, 87, 88, 107, 1007, …"
@@ -886,7 +907,7 @@
                 " 102, 1002, …"
             }
         }
-        set54{
+        set56{
             few{
                 "i % 10 = 3,4 or i % 1000 = 100,200,300,400,500,600,700,800,900 @inte"
                 "ger 3, 4, 13, 14, 23, 24, 33, 34, 43, 44, 53, 54, 63, 64, 73, 74, 10"
@@ -905,35 +926,27 @@
                 "00000, 1000000, …"
             }
         }
-        set55{
+        set57{
             few{"n = 4 @integer 4"}
             many{"n = 6 @integer 6"}
             one{"n = 1 @integer 1"}
             other{" @integer 0, 5, 7~20, 100, 1000, 10000, 100000, 1000000, …"}
             two{"n = 2,3 @integer 2, 3"}
         }
-        set56{
+        set58{
             few{"n = 4 @integer 4"}
             many{"n = 6 @integer 6"}
             one{"n = 1,5,7,8,9,10 @integer 1, 5, 7~10"}
             other{" @integer 0, 11~25, 100, 1000, 10000, 100000, 1000000, …"}
             two{"n = 2,3 @integer 2, 3"}
         }
-        set57{
+        set59{
             few{"n = 4 @integer 4"}
             many{"n = 6 @integer 6"}
             one{"n = 1,5,7..9 @integer 1, 5, 7~9"}
             other{" @integer 0, 10~24, 100, 1000, 10000, 100000, 1000000, …"}
             two{"n = 2,3 @integer 2, 3"}
         }
-        set58{
-            few{"n = 3,4 @integer 3, 4"}
-            many{"n = 5,6 @integer 5, 6"}
-            one{"n = 1 @integer 1"}
-            other{" @integer 10~25, 100, 1000, 10000, 100000, 1000000, …"}
-            two{"n = 2 @integer 2"}
-            zero{"n = 0,7,8,9 @integer 0, 7~9"}
-        }
         set6{
             one{
                 "n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, "
@@ -944,6 +957,14 @@
                 "9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …"
             }
         }
+        set60{
+            few{"n = 3,4 @integer 3, 4"}
+            many{"n = 5,6 @integer 5, 6"}
+            one{"n = 1 @integer 1"}
+            other{" @integer 10~25, 100, 1000, 10000, 100000, 1000000, …"}
+            two{"n = 2 @integer 2"}
+            zero{"n = 0,7,8,9 @integer 0, 7~9"}
+        }
         set7{
             one{
                 "n = 0..1 or n = 11..99 @integer 0, 1, 11~24 @decimal 0.0, 1.0, 11.0,"
diff --git a/icu4c/source/data/misc/supplementalData.txt b/icu4c/source/data/misc/supplementalData.txt
index 680f645..534c8b9 100644
--- a/icu4c/source/data/misc/supplementalData.txt
+++ b/icu4c/source/data/misc/supplementalData.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 supplementalData:table(nofallback){
     calendarData{
         buddhist{
@@ -2104,7 +2105,7 @@
             "islamic-tbla",
         }
     }
-    cldrVersion{"37"}
+    cldrVersion{"38.1"}
     codeMappings{
         {
             "AA",
@@ -4661,13 +4662,15 @@
                 "ais",
                 "aju",
                 "als",
+                "aoh",
                 "arb",
                 "asd",
                 "aue",
                 "ayr",
-                "ayx",
+                "ayx~y",
                 "azj",
                 "baz",
+                "bbz",
                 "bcc",
                 "bcl",
                 "bgm",
@@ -4677,6 +4680,7 @@
                 "bjq",
                 "bkb",
                 "bmy",
+                "bpb",
                 "btb",
                 "btl",
                 "bxk",
@@ -4685,7 +4689,9 @@
                 "byy",
                 "cbe",
                 "cbh",
+                "cca",
                 "ccq",
+                "cdg",
                 "cjr",
                 "cka",
                 "cld",
@@ -4699,6 +4705,7 @@
                 "daf",
                 "dap",
                 "dgo",
+                "dgu",
                 "dha",
                 "dhd",
                 "dik",
@@ -4707,11 +4714,13 @@
                 "djl",
                 "dkl",
                 "drh",
+                "drr",
                 "drw",
                 "dud",
                 "duj",
                 "dwl",
                 "dzd",
+                "ekc",
                 "ekk",
                 "elp",
                 "emk",
@@ -4727,6 +4736,7 @@
                 "ggn~o",
                 "ggr",
                 "gio",
+                "gli",
                 "gno",
                 "gti",
                 "gug",
@@ -4754,6 +4764,7 @@
                 "kgc~d",
                 "kgh",
                 "khk",
+                "kjf",
                 "kmr",
                 "knc",
                 "kng",
@@ -4767,6 +4778,8 @@
                 "kvs",
                 "kwq",
                 "kxe",
+                "kxl",
+                "kxu",
                 "kzh",
                 "kzj",
                 "kzt",
@@ -4776,6 +4789,7 @@
                 "lii",
                 "llo",
                 "lmm",
+                "lmz",
                 "lsg",
                 "lvs",
                 "meg",
@@ -4809,6 +4823,7 @@
                 "noo",
                 "npi",
                 "nts",
+                "nxu",
                 "ojg",
                 "ome",
                 "ory",
@@ -4818,6 +4833,7 @@
                 "pcr",
                 "pes",
                 "pgy",
+                "plp",
                 "plt",
                 "pmc",
                 "pmu",
@@ -4838,6 +4854,7 @@
                 "rsi",
                 "sap",
                 "sca",
+                "sdm",
                 "sgl",
                 "sgo",
                 "sh",
@@ -4849,10 +4866,11 @@
                 "svr",
                 "swc",
                 "swh",
+                "tbb",
                 "tdu",
                 "tgg",
                 "thc",
-                "thx",
+                "thw~x",
                 "tid~e",
                 "tkk",
                 "tl",
@@ -4876,8 +4894,10 @@
                 "xip",
                 "xkh",
                 "xpe",
+                "xrq",
                 "xsj",
                 "xsl",
+                "xtz",
                 "ybd",
                 "ydd",
                 "yds",
@@ -4890,6 +4910,7 @@
                 "yri",
                 "yuu",
                 "zai",
+                "zir",
                 "zsm",
                 "zyb",
             }
@@ -4975,7 +4996,8 @@
                 "ami~z",
                 "an",
                 "ana~z",
-                "aoa~n",
+                "aoa~g",
+                "aoi~n",
                 "aor~u",
                 "aox",
                 "aoz",
@@ -5023,7 +5045,7 @@
                 "ayk~l",
                 "ayn~q",
                 "ays~u",
-                "ayy~z",
+                "ayz",
                 "az",
                 "aza~d",
                 "azg",
@@ -5035,7 +5057,7 @@
                 "bal",
                 "ban~p",
                 "bar~y",
-                "bba~z",
+                "bba~y",
                 "bca~b",
                 "bcd~k",
                 "bcm~w",
@@ -5075,7 +5097,7 @@
                 "boa~b",
                 "boe~r",
                 "bot~z",
-                "bpa~b",
+                "bpa",
                 "bpd",
                 "bpg~z",
                 "bqa~d",
@@ -5114,14 +5136,14 @@
                 "cbn~o",
                 "cbq~w",
                 "cby",
-                "cca",
                 "ccc~e",
                 "ccg~h",
                 "ccj",
                 "ccl~p",
                 "ccr~s",
                 "cda",
-                "cdc~j",
+                "cdc~f",
+                "cdh~j",
                 "cdm~o",
                 "cdr~s",
                 "cdy~z",
@@ -5164,8 +5186,7 @@
                 "cjy",
                 "ckb",
                 "ckh",
-                "ckl",
-                "ckn~o",
+                "ckl~o",
                 "ckq~v",
                 "ckx~z",
                 "cla",
@@ -5187,7 +5208,7 @@
                 "cna~c",
                 "cng~i",
                 "cnk~l",
-                "cno",
+                "cno~p",
                 "cns~u",
                 "cnw~x",
                 "co",
@@ -5208,8 +5229,7 @@
                 "crf~t",
                 "crv~z",
                 "cs",
-                "csa~o",
-                "csq~w",
+                "csa~w",
                 "csy~z",
                 "cta",
                 "ctc~e",
@@ -5267,7 +5287,7 @@
                 "dgg~i",
                 "dgk~l",
                 "dgn",
-                "dgr~u",
+                "dgr~t",
                 "dgw~x",
                 "dgz",
                 "dhg",
@@ -5294,8 +5314,7 @@
                 "dlg",
                 "dlk",
                 "dlm~n",
-                "dma~e",
-                "dmg",
+                "dma~g",
                 "dmk~o",
                 "dmr~s",
                 "dmu~y",
@@ -5319,7 +5338,8 @@
                 "dri",
                 "drl",
                 "drn~o",
-                "drq~u",
+                "drq",
+                "drs~u",
                 "dry",
                 "dsb",
                 "dse",
@@ -5341,6 +5361,7 @@
                 "dv",
                 "dva",
                 "dwa",
+                "dwk",
                 "dwr~s",
                 "dwu",
                 "dww",
@@ -5359,6 +5380,7 @@
                 "dzl",
                 "dzn",
                 "eaa",
+                "ebc",
                 "ebg",
                 "ebk",
                 "ebo",
@@ -5381,7 +5403,6 @@
                 "eiv",
                 "eja",
                 "eka",
-                "ekc",
                 "eke",
                 "ekg",
                 "eki",
@@ -5465,7 +5486,7 @@
                 "fgr",
                 "fi",
                 "fia",
-                "fie",
+                "fie~f",
                 "fil",
                 "fip",
                 "fir",
@@ -5529,7 +5550,7 @@
                 "gdq~u",
                 "gdx",
                 "gea~d",
-                "geg~m",
+                "gef~m",
                 "geq",
                 "ges",
                 "gev~z",
@@ -5564,7 +5585,8 @@
                 "gku",
                 "gl",
                 "glc~d",
-                "glh~l",
+                "glh",
+                "glj~l",
                 "glo",
                 "glr",
                 "glu",
@@ -5574,7 +5596,7 @@
                 "gmd~e",
                 "gmg~h",
                 "gml~n",
-                "gmq",
+                "gmq~r",
                 "gmu~z",
                 "gn",
                 "gna~e",
@@ -5675,7 +5697,7 @@
                 "hmp~z",
                 "hna",
                 "hnd~e",
-                "hnh~j",
+                "hng~j",
                 "hnn~o",
                 "hns",
                 "hnu",
@@ -5955,7 +5977,8 @@
                 "kio~q",
                 "kis~z",
                 "kj",
-                "kja~v",
+                "kja~e",
+                "kjg~v",
                 "kjx~z",
                 "kk",
                 "kka~z",
@@ -6000,7 +6023,9 @@
                 "kwr~z",
                 "kxa~d",
                 "kxf",
-                "kxh~z",
+                "kxh~k",
+                "kxm~t",
+                "kxv~z",
                 "ky",
                 "kya~z",
                 "kza~g",
@@ -6065,7 +6090,7 @@
                 "llx",
                 "lma~l",
                 "lmn~r",
-                "lmu~z",
+                "lmu~y",
                 "ln",
                 "lna~b",
                 "lnd",
@@ -6296,8 +6321,7 @@
                 "nrt~u",
                 "nrx",
                 "nrz",
-                "nsa",
-                "nsc~i",
+                "nsa~i",
                 "nsk~z",
                 "ntd~e",
                 "ntg",
@@ -6326,7 +6350,6 @@
                 "nxi",
                 "nxk~o",
                 "nxq~r",
-                "nxu",
                 "nxx",
                 "ny",
                 "nyb~y",
@@ -6494,7 +6517,8 @@
                 "pl",
                 "pla~h",
                 "plj~l",
-                "pln~s",
+                "pln~o",
+                "plq~s",
                 "plu~w",
                 "ply~z",
                 "pma~b",
@@ -6686,8 +6710,8 @@
                 "sd",
                 "sda~c",
                 "sde~h",
-                "sdj~p",
-                "sdr~v",
+                "sdj~l",
+                "sdn~v",
                 "sdx",
                 "sdz",
                 "se",
@@ -6806,7 +6830,8 @@
                 "tai~l",
                 "tan~s",
                 "tau~z",
-                "tba~z",
+                "tba",
+                "tbc~z",
                 "tca~i",
                 "tck~q",
                 "tcs~u",
@@ -6831,7 +6856,7 @@
                 "thd~f",
                 "thh~i",
                 "thk~n",
-                "thp~w",
+                "thp~v",
                 "thy~z",
                 "ti",
                 "tia",
@@ -6947,12 +6972,11 @@
                 "uji",
                 "uk",
                 "uka",
-                "ukg~h",
+                "ukg~i",
                 "ukk~l",
                 "ukp~q",
                 "uks",
-                "uku",
-                "ukw",
+                "uku~w",
                 "uky",
                 "ula~c",
                 "ule~f",
@@ -7098,8 +7122,7 @@
                 "wla",
                 "wlc",
                 "wle",
-                "wlg",
-                "wli",
+                "wlg~i",
                 "wlk~m",
                 "wlo",
                 "wlr~s",
@@ -7230,7 +7253,7 @@
                 "xnd",
                 "xng~i",
                 "xnk",
-                "xnn~o",
+                "xnm~o",
                 "xnr~u",
                 "xny~z",
                 "xoc~d",
@@ -7240,12 +7263,8 @@
                 "xom~p",
                 "xor",
                 "xow",
-                "xpa",
-                "xpc",
-                "xpg",
-                "xpi~k",
-                "xpm~u",
-                "xpy",
+                "xpa~d",
+                "xpf~z",
                 "xqa",
                 "xqt",
                 "xra~b",
@@ -7253,7 +7272,7 @@
                 "xrg",
                 "xri",
                 "xrm~n",
-                "xrq~r",
+                "xrr",
                 "xrt~u",
                 "xrw",
                 "xsa~e",
@@ -7264,7 +7283,7 @@
                 "xta~e",
                 "xtg~j",
                 "xtl~w",
-                "xty~z",
+                "xty",
                 "xua~b",
                 "xud",
                 "xug",
@@ -7418,6 +7437,7 @@
                 "zaa~h",
                 "zaj~m",
                 "zao~z",
+                "zba",
                 "zbc",
                 "zbe",
                 "zbl",
@@ -7441,7 +7461,6 @@
                 "zhw~x",
                 "zia~b",
                 "zik~n",
-                "zir",
                 "ziw",
                 "ziz",
                 "zka~b",
@@ -11372,9 +11391,11 @@
                 "length-earth-radius",
                 "length-solar-radius",
                 "light-candela",
+                "light-lumen",
                 "light-lux",
                 "light-solar-luminosity",
                 "mass-carat",
+                "mass-grain",
                 "mass-gram",
                 "mass-kilogram",
                 "mass-metric-ton",
@@ -11428,6 +11449,13 @@
                 "volume-cup",
                 "volume-cup-metric",
                 "volume-deciliter",
+                "volume-dessert-spoon",
+                "volume-dessert-spoon-imperial",
+                "volume-drop",
+                "volume-dram",
+                "volume-jigger",
+                "volume-pinch",
+                "volume-quart-imperial",
                 "volume-fluid-ounce",
                 "volume-fluid-ounce-imperial",
                 "volume-gallon",
@@ -11519,6 +11547,7 @@
                 "oxendict",
                 "pahawh2~4",
                 "pamaka",
+                "peano",
                 "petr1708",
                 "pinyin",
                 "polyton",
@@ -11537,6 +11566,8 @@
                 "sursilv",
                 "sutsilv",
                 "tarask",
+                "tongyong",
+                "tunumiit",
                 "uccor",
                 "ucrcor",
                 "ulster",
@@ -11800,6 +11831,9 @@
             primary{
                 scripts{"Arab"}
             }
+            secondary{
+                territories{"SA"}
+            }
         }
         arw{
             secondary{
@@ -11907,7 +11941,6 @@
             secondary{
                 scripts{"Latn"}
                 territories{
-                    "AF",
                     "IR",
                     "PK",
                 }
@@ -12071,11 +12104,6 @@
                 territories{"IN"}
             }
         }
-        bhk{
-            secondary{
-                territories{"PH"}
-            }
-        }
         bho{
             primary{
                 scripts{"Deva"}
@@ -12628,6 +12656,7 @@
                     "BR",
                     "CZ",
                     "DK",
+                    "FI",
                     "FR",
                     "GB",
                     "HU",
@@ -12686,10 +12715,13 @@
         }
         doi{
             primary{
-                scripts{"Arab"}
+                scripts{"Deva"}
             }
             secondary{
-                scripts{"Takr"}
+                scripts{
+                    "Arab",
+                    "Takr",
+                }
                 territories{"IN"}
             }
         }
@@ -13073,6 +13105,11 @@
                 territories{"GQ"}
             }
         }
+        fbl{
+            secondary{
+                territories{"PH"}
+            }
+        }
         ff{
             primary{
                 scripts{"Latn"}
@@ -13505,6 +13542,9 @@
             primary{
                 scripts{"Latn"}
             }
+            secondary{
+                territories{"GH"}
+            }
         }
         guz{
             primary{
@@ -13591,6 +13631,7 @@
                 }
                 territories{
                     "FJ",
+                    "IN",
                     "ZA",
                 }
             }
@@ -14559,6 +14600,9 @@
             primary{
                 scripts{"Latn"}
             }
+            secondary{
+                territories{"ZM"}
+            }
         }
         lrc{
             primary{
@@ -15146,6 +15190,9 @@
             primary{
                 scripts{"Deva"}
             }
+            secondary{
+                territories{"NP"}
+            }
         }
         ng{
             primary{
@@ -15720,6 +15767,9 @@
             primary{
                 scripts{"Latn"}
             }
+            secondary{
+                territories{"MZ"}
+            }
         }
         ro{
             primary{
@@ -16560,6 +16610,9 @@
                     "Latn",
                 }
             }
+            secondary{
+                territories{"AZ"}
+            }
         }
         tmh{
             primary{
@@ -16626,6 +16679,11 @@
                 scripts{"Latn"}
             }
         }
+        trw{
+            primary{
+                scripts{"Arab"}
+            }
+        }
         ts{
             primary{
                 scripts{"Latn"}
@@ -17265,940 +17323,6 @@
             }
         }
     }
-    languageMatching{
-        written{
-            {
-                "nb",
-                "no",
-                "99",
-                "0",
-            }
-            {
-                "hr",
-                "bs",
-                "96",
-                "0",
-            }
-            {
-                "sh",
-                "bs",
-                "96",
-                "0",
-            }
-            {
-                "sh",
-                "hr",
-                "96",
-                "0",
-            }
-            {
-                "sh",
-                "sr",
-                "96",
-                "0",
-            }
-            {
-                "ssy",
-                "aa",
-                "96",
-                "0",
-            }
-            {
-                "gsw",
-                "de",
-                "96",
-                "1",
-            }
-            {
-                "lb",
-                "de",
-                "96",
-                "1",
-            }
-            {
-                "da",
-                "no",
-                "92",
-                "0",
-            }
-            {
-                "da",
-                "nb",
-                "92",
-                "0",
-            }
-            {
-                "ab",
-                "ru",
-                "90",
-                "1",
-            }
-            {
-                "ach",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "af",
-                "nl",
-                "90",
-                "1",
-            }
-            {
-                "ak",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "am_*_*",
-                "en_*_GB",
-                "90",
-                "1",
-            }
-            {
-                "ay",
-                "es",
-                "90",
-                "1",
-            }
-            {
-                "az",
-                "ru",
-                "90",
-                "1",
-            }
-            {
-                "az_Latn",
-                "ru_Cyrl",
-                "90",
-                "1",
-            }
-            {
-                "be",
-                "ru",
-                "90",
-                "1",
-            }
-            {
-                "bem",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "bho",
-                "hi",
-                "90",
-                "1",
-            }
-            {
-                "bn",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "bn_Beng",
-                "en_Latn",
-                "90",
-                "1",
-            }
-            {
-                "br",
-                "fr",
-                "90",
-                "1",
-            }
-            {
-                "ceb",
-                "fil",
-                "90",
-                "1",
-            }
-            {
-                "chr",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "ckb",
-                "ar",
-                "90",
-                "1",
-            }
-            {
-                "co",
-                "fr",
-                "90",
-                "1",
-            }
-            {
-                "crs",
-                "fr",
-                "90",
-                "1",
-            }
-            {
-                "cy",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "ee",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "eo",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "et",
-                "fi",
-                "90",
-                "1",
-            }
-            {
-                "eu",
-                "es",
-                "90",
-                "1",
-            }
-            {
-                "fo",
-                "da",
-                "90",
-                "1",
-            }
-            {
-                "fy",
-                "nl",
-                "90",
-                "1",
-            }
-            {
-                "ga",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "gaa",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "gd",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "gl",
-                "es",
-                "90",
-                "1",
-            }
-            {
-                "gn",
-                "es",
-                "90",
-                "1",
-            }
-            {
-                "gu",
-                "hi",
-                "90",
-                "1",
-            }
-            {
-                "ha",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "haw",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "ht",
-                "fr",
-                "90",
-                "1",
-            }
-            {
-                "hy",
-                "ru",
-                "90",
-                "1",
-            }
-            {
-                "hy_Armn",
-                "ru_Cyrl",
-                "90",
-                "1",
-            }
-            {
-                "ia",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "ig",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "is",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "jv",
-                "id",
-                "90",
-                "1",
-            }
-            {
-                "ka_Geor",
-                "en_Latn",
-                "90",
-                "1",
-            }
-            {
-                "ka",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "kg",
-                "fr",
-                "90",
-                "1",
-            }
-            {
-                "kk",
-                "ru",
-                "90",
-                "1",
-            }
-            {
-                "km",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "km_Khmr",
-                "en_Latn",
-                "90",
-                "1",
-            }
-            {
-                "kn",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "kn_Knda",
-                "en_Latn",
-                "90",
-                "1",
-            }
-            {
-                "kri",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "ku",
-                "tr",
-                "90",
-                "1",
-            }
-            {
-                "ky",
-                "ru",
-                "90",
-                "1",
-            }
-            {
-                "la",
-                "it",
-                "90",
-                "1",
-            }
-            {
-                "lg",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "ln",
-                "fr",
-                "90",
-                "1",
-            }
-            {
-                "lo",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "lo_Laoo",
-                "en_Latn",
-                "90",
-                "1",
-            }
-            {
-                "loz",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "lua",
-                "fr",
-                "90",
-                "1",
-            }
-            {
-                "mfe",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "mg",
-                "fr",
-                "90",
-                "1",
-            }
-            {
-                "mi",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "mk",
-                "bg",
-                "90",
-                "1",
-            }
-            {
-                "ml",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "ml_Mlym",
-                "en_Latn",
-                "90",
-                "1",
-            }
-            {
-                "mn",
-                "ru",
-                "90",
-                "1",
-            }
-            {
-                "mr",
-                "hi",
-                "90",
-                "1",
-            }
-            {
-                "ms",
-                "id",
-                "90",
-                "1",
-            }
-            {
-                "mt",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "my",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "my_Mymr",
-                "en_Latn",
-                "90",
-                "1",
-            }
-            {
-                "ne",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "ne_Deva",
-                "en_Latn",
-                "90",
-                "1",
-            }
-            {
-                "nn",
-                "no",
-                "90",
-                "0",
-            }
-            {
-                "nn",
-                "nb",
-                "90",
-                "1",
-            }
-            {
-                "nso",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "ny",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "nyn",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "oc",
-                "fr",
-                "90",
-                "1",
-            }
-            {
-                "om",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "or",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "or_Orya",
-                "en_Latn",
-                "90",
-                "1",
-            }
-            {
-                "pa",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "pa_Guru",
-                "en_Latn",
-                "90",
-                "1",
-            }
-            {
-                "pcm",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "ps",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "ps_Arab",
-                "en_Latn",
-                "90",
-                "1",
-            }
-            {
-                "qu",
-                "es",
-                "90",
-                "1",
-            }
-            {
-                "rm",
-                "de",
-                "90",
-                "1",
-            }
-            {
-                "rn",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "rw",
-                "fr",
-                "90",
-                "1",
-            }
-            {
-                "sa",
-                "hi",
-                "90",
-                "1",
-            }
-            {
-                "sd",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "sd_Arab",
-                "en_Latn",
-                "90",
-                "1",
-            }
-            {
-                "si",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "si_Sinh",
-                "en_Latn",
-                "90",
-                "1",
-            }
-            {
-                "sn",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "so",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "sq",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "st",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "su",
-                "id",
-                "90",
-                "1",
-            }
-            {
-                "sw",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "ta",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "ta_Taml",
-                "en_Latn",
-                "90",
-                "1",
-            }
-            {
-                "te",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "te_Telu",
-                "en_Latn",
-                "90",
-                "1",
-            }
-            {
-                "tg",
-                "ru",
-                "90",
-                "1",
-            }
-            {
-                "ti",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "ti_Ethi",
-                "en_Latn",
-                "90",
-                "1",
-            }
-            {
-                "tk",
-                "ru",
-                "90",
-                "1",
-            }
-            {
-                "tk_Latn",
-                "ru_Cyrl",
-                "90",
-                "1",
-            }
-            {
-                "tlh",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "tn",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "to",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "tt",
-                "ru",
-                "90",
-                "1",
-            }
-            {
-                "tum",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "ug",
-                "zh",
-                "90",
-                "1",
-            }
-            {
-                "ur",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "ur_Arab",
-                "en_Latn",
-                "90",
-                "1",
-            }
-            {
-                "uz",
-                "ru",
-                "90",
-                "1",
-            }
-            {
-                "uz_Latn",
-                "ru_Cyrl",
-                "90",
-                "1",
-            }
-            {
-                "wo",
-                "fr",
-                "90",
-                "1",
-            }
-            {
-                "xh",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "yi",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "yi_Hebr",
-                "en_Latn",
-                "90",
-                "1",
-            }
-            {
-                "yo",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "zu",
-                "en",
-                "90",
-                "1",
-            }
-            {
-                "sr_Latn",
-                "sr_Cyrl",
-                "95",
-                "0",
-            }
-            {
-                "zh_Hans",
-                "zh_Hant",
-                "85",
-                "1",
-            }
-            {
-                "zh_Hant",
-                "zh_Hans",
-                "81",
-                "1",
-            }
-            {
-                "zh_Hant_HK",
-                "zh_Hant_MO",
-                "97",
-                "0",
-            }
-            {
-                "pt_*_BR",
-                "pt_*_US",
-                "96",
-                "0",
-            }
-            {
-                "pt_*_US",
-                "pt_*_*",
-                "92",
-                "0",
-            }
-            {
-                "pt_*_BR",
-                "pt_*_*",
-                "92",
-                "0",
-            }
-            {
-                "pt_*_*",
-                "pt_*_*",
-                "96",
-                "0",
-            }
-            {
-                "en_*_US",
-                "en_*_*",
-                "94",
-                "0",
-            }
-            {
-                "en_*_GB",
-                "en_*_*",
-                "96",
-                "0",
-            }
-            {
-                "en_*_001",
-                "en_*_*",
-                "96",
-                "0",
-            }
-            {
-                "en_*_*",
-                "en_*_*",
-                "95",
-                "0",
-            }
-            {
-                "es_*_ES",
-                "es_*_*",
-                "92",
-                "0",
-            }
-            {
-                "es_*_419",
-                "es_*_*",
-                "96",
-                "0",
-            }
-            {
-                "es_*_*",
-                "es_*_*",
-                "95",
-                "0",
-            }
-            {
-                "*",
-                "*",
-                "20",
-                "0",
-            }
-            {
-                "*_*",
-                "*_*",
-                "60",
-                "0",
-            }
-            {
-                "*_*_*",
-                "*_*_*",
-                "96",
-                "0",
-            }
-        }
-    }
     languageMatchingInfo{
         written{
             matchVariable{
@@ -18220,8 +17344,8 @@
     languageMatchingNew{
         written{
             {
-                "no",
                 "nb",
+                "no",
                 "1",
                 "0",
             }
@@ -20478,7 +19602,7 @@
             }
         }
         MM{
-            MeasurementSystem:int{1}
+            MeasurementSystem:int{2}
             MeasurementSystemCategory{
                 temperature:int{0}
             }
@@ -27081,7 +26205,7 @@
                 populationShareF:int{49990000}
             }
             territoryF:intvector{
-                57422300,
+                57418100,
                 49990000,
                 52940000,
             }
@@ -27095,12 +26219,12 @@
                 populationShareF:int{49430000}
             }
             fr{
-                populationShareF:int{48670000}
+                populationShareF:int{48750000}
             }
             territoryF:intvector{
                 59332700,
                 50100000,
-                54857080,
+                54770000,
             }
         }
         AE{
@@ -27126,14 +26250,10 @@
             territoryF:intvector{
                 61696000,
                 49900000,
-                56970132,
+                56999208,
             }
         }
         AF{
-            bal{
-                officialStatus{"official_regional"}
-                populationShareF:int{47670000}
-            }
             bgn{
                 populationShareF:int{47630000}
                 writingShareF:int{48500000}
@@ -27146,7 +26266,7 @@
                 populationShareF:int{48590000}
             }
             kk_Arab{
-                populationShareF:int{45570000}
+                populationShareF:int{45550000}
             }
             prd{
                 populationShareF:int{48120000}
@@ -27158,14 +26278,14 @@
             territoryF:intvector{
                 60694500,
                 49281000,
-                57349408,
+                57366438,
             }
             tk{
                 officialStatus{"official_regional"}
                 populationShareF:int{48170000}
             }
             ug{
-                populationShareF:int{45860000}
+                populationShareF:int{45820000}
             }
             uz_Arab{
                 officialStatus{"official_regional"}
@@ -27178,12 +26298,12 @@
                 populationShareF:int{49860000}
             }
             pt{
-                populationShareF:int{48170000}
+                populationShareF:int{48160000}
             }
             territoryF:intvector{
                 59239800,
                 49990000,
-                54958820,
+                54981790,
             }
         }
         AI{
@@ -27194,7 +26314,7 @@
             territoryF:intvector{
                 58175400,
                 49950000,
-                54174220,
+                54180900,
             }
         }
         AL{
@@ -27211,7 +26331,7 @@
             territoryF:intvector{
                 60360100,
                 49968000,
-                56305722,
+                56307458,
             }
         }
         AM{
@@ -27228,7 +26348,7 @@
             territoryF:intvector{
                 60283400,
                 49996000,
-                56303822,
+                56302132,
             }
         }
         AO{
@@ -27246,7 +26366,7 @@
             territoryF:intvector{
                 61193600,
                 49704000,
-                57303559,
+                57325223,
             }
             umb{
                 populationShareF:int{49290000}
@@ -27254,7 +26374,7 @@
         }
         AQ{
             territoryF:intvector{
-                57177600,
+                57175800,
                 49990000,
                 52300000,
             }
@@ -27279,7 +26399,7 @@
             territoryF:intvector{
                 61922100,
                 49979000,
-                57446942,
+                57454791,
             }
         }
         AS{
@@ -27294,7 +26414,7 @@
             territoryF:intvector{
                 58658000,
                 49970000,
-                54508260,
+                54494370,
             }
         }
         AT{
@@ -27329,7 +26449,7 @@
             territoryF:intvector{
                 61441000,
                 49980000,
-                56879337,
+                56885945,
             }
         }
         AU{
@@ -27343,10 +26463,10 @@
             territoryF:intvector{
                 62124800,
                 49990000,
-                57234701,
+                57254665,
             }
             wbp{
-                populationShareF:int{46110000}
+                populationShareF:int{45980000}
             }
             zh_Hant{
                 populationShareF:int{48210000}
@@ -27354,7 +26474,7 @@
         }
         AW{
             en{
-                populationShareF:int{48260000}
+                populationShareF:int{48250000}
             }
             nl{
                 officialStatus{"official"}
@@ -27367,7 +26487,7 @@
             territoryF:intvector{
                 59415800,
                 49968000,
-                55116576,
+                55119428,
             }
         }
         AX{
@@ -27396,7 +26516,7 @@
             territoryF:intvector{
                 61172200,
                 49998000,
-                57100465,
+                57102058,
             }
             tkr{
                 populationShareF:int{47160000}
@@ -27437,7 +26557,7 @@
             territoryF:intvector{
                 60448300,
                 49980000,
-                56384989,
+                56383559,
             }
         }
         BB{
@@ -27448,7 +26568,7 @@
             territoryF:intvector{
                 59521800,
                 49997000,
-                55293131,
+                55294560,
             }
         }
         BD{
@@ -27485,7 +26605,7 @@
             territoryF:intvector{
                 61690300,
                 49577000,
-                58159453,
+                58162651,
             }
         }
         BE{
@@ -27507,7 +26627,7 @@
             territoryF:intvector{
                 61529200,
                 49990000,
-                57115708,
+                57117207,
             }
             vls{
                 populationShareF:int{49100000}
@@ -27537,7 +26657,7 @@
             territoryF:intvector{
                 60358500,
                 49287000,
-                57197427,
+                57208354,
             }
         }
         BG{
@@ -27557,7 +26677,7 @@
             territoryF:intvector{
                 61153500,
                 49984000,
-                56705750,
+                56696690,
             }
             tr{
                 populationShareF:int{49110000}
@@ -27574,7 +26694,7 @@
             territoryF:intvector{
                 60711700,
                 49946000,
-                56144266,
+                56150500,
             }
         }
         BI{
@@ -27596,7 +26716,7 @@
             territoryF:intvector{
                 59800700,
                 49672000,
-                57118445,
+                57118658,
             }
         }
         BJ{
@@ -27610,7 +26730,7 @@
             territoryF:intvector{
                 60253900,
                 49424000,
-                57113405,
+                57128646,
             }
             yo{
                 populationShareF:int{48670000}
@@ -27624,7 +26744,7 @@
             territoryF:intvector{
                 58255000,
                 49990000,
-                53716000,
+                53712200,
             }
         }
         BM{
@@ -27635,12 +26755,12 @@
             territoryF:intvector{
                 59612700,
                 49980000,
-                54711760,
+                54717500,
             }
         }
         BN{
             en{
-                populationShareF:int{48180000}
+                populationShareF:int{48170000}
             }
             ms{
                 officialStatus{"official"}
@@ -27653,7 +26773,7 @@
             territoryF:intvector{
                 60338700,
                 49954000,
-                55450565,
+                55464478,
             }
             zh_Hant{
                 populationShareF:int{49110000}
@@ -27661,7 +26781,7 @@
         }
         BO{
             aro{
-                populationShareF:int{45100000}
+                populationShareF:int{44900000}
             }
             ay{
                 officialStatus{"official"}
@@ -27681,7 +26801,7 @@
             territoryF:intvector{
                 60837200,
                 49912000,
-                57113063,
+                57116399,
             }
         }
         BQ{
@@ -27693,7 +26813,7 @@
                 populationShareF:int{49810000}
             }
             territoryF:intvector{
-                58416400,
+                58413400,
                 49960000,
                 54200000,
             }
@@ -27718,7 +26838,7 @@
                 populationShareF:int{47210000}
             }
             kgp{
-                populationShareF:int{46100000}
+                populationShareF:int{46240000}
             }
             ko{
                 populationShareF:int{46210000}
@@ -27730,10 +26850,10 @@
             territoryF:intvector{
                 62324800,
                 49904000,
-                58208847,
+                58211716,
             }
             xav{
-                populationShareF:int{45480000}
+                populationShareF:int{45470000}
             }
             yrl{
                 populationShareF:int{45520000}
@@ -27747,7 +26867,7 @@
             territoryF:intvector{
                 60120600,
                 49956000,
-                55332634,
+                55337721,
             }
         }
         BT{
@@ -27767,7 +26887,7 @@
             territoryF:intvector{
                 59720500,
                 49528000,
-                55766397,
+                55782318,
             }
             tsj{
                 populationShareF:int{49150000}
@@ -27775,7 +26895,7 @@
         }
         BV{
             territoryF:intvector{
-                54449300,
+                54444800,
                 49990000,
                 50100000,
             }
@@ -27785,7 +26905,7 @@
         }
         BW{
             af{
-                populationShareF:int{47270000}
+                populationShareF:int{47260000}
             }
             en{
                 officialStatus{"official"}
@@ -27794,7 +26914,7 @@
             territoryF:intvector{
                 60390100,
                 49851000,
-                56224910,
+                56231723,
             }
             tn{
                 officialStatus{"official"}
@@ -27813,7 +26933,7 @@
             territoryF:intvector{
                 61179400,
                 49996000,
-                56952754,
+                56947792,
             }
         }
         BZ{
@@ -27827,42 +26947,42 @@
             territoryF:intvector{
                 59321800,
                 49769000,
-                55385854,
+                55399598,
             }
         }
         CA{
             atj{
-                populationShareF:int{46160000}
+                populationShareF:int{46150000}
             }
             chp{
-                populationShareF:int{45210000}
+                populationShareF:int{45200000}
             }
             cr{
                 populationShareF:int{47110000}
             }
             crj{
-                populationShareF:int{46200000}
+                populationShareF:int{46190000}
             }
             crk{
                 populationShareF:int{47110000}
             }
             crl{
-                populationShareF:int{46150000}
+                populationShareF:int{46140000}
             }
             crm{
-                populationShareF:int{46130000}
+                populationShareF:int{46120000}
             }
             csw{
-                populationShareF:int{46140000}
+                populationShareF:int{46130000}
             }
             de{
                 populationShareF:int{48190000}
             }
             den{
-                populationShareF:int{45640000}
+                populationShareF:int{45610000}
             }
             dgr{
-                populationShareF:int{45740000}
+                populationShareF:int{45700000}
             }
             en{
                 officialStatus{"official"}
@@ -27873,7 +26993,7 @@
                 populationShareF:int{49220000}
             }
             gwi{
-                populationShareF:int{45160000}
+                populationShareF:int{45150000}
             }
             ikt{
                 literacyShareF:int{49300000}
@@ -27897,21 +27017,21 @@
                 populationShareF:int{46330000}
             }
             moh{
-                populationShareF:int{45980000}
+                populationShareF:int{45930000}
             }
             nsk{
-                populationShareF:int{45330000}
+                populationShareF:int{45310000}
             }
             pdt{
                 populationShareF:int{47240000}
             }
             scs{
-                populationShareF:int{45350000}
+                populationShareF:int{45330000}
             }
             territoryF:intvector{
                 62177400,
                 49990000,
-                57358817,
+                57376941,
             }
             yi{
                 populationShareF:int{46450000}
@@ -27926,7 +27046,7 @@
                 populationShareF:int{49830000}
             }
             territoryF:intvector{
-                57316900,
+                57292100,
                 49990000,
                 52596000,
             }
@@ -27964,7 +27084,7 @@
             territoryF:intvector{
                 60686000,
                 49668000,
-                57852810,
+                58101780,
             }
         }
         CF{
@@ -27982,7 +27102,7 @@
             territoryF:intvector{
                 59339000,
                 49566000,
-                56574506,
+                56599086,
             }
         }
         CG{
@@ -27996,7 +27116,7 @@
             territoryF:intvector{
                 60293900,
                 49838000,
-                56506202,
+                56529307,
             }
         }
         CH{
@@ -28037,7 +27157,7 @@
             territoryF:intvector{
                 61523100,
                 49990000,
-                56829281,
+                56840399,
             }
             wae{
                 populationShareF:int{47120000}
@@ -28070,18 +27190,18 @@
             territoryF:intvector{
                 60971600,
                 49569000,
-                57262606,
+                57274811,
             }
         }
         CK{
             en{
                 officialStatus{"official"}
-                populationShareF:int{49980000}
+                populationShareF:int{50100000}
             }
             territoryF:intvector{
                 58299900,
                 49950000,
-                53903800,
+                53857400,
             }
         }
         CL{
@@ -28098,7 +27218,7 @@
             territoryF:intvector{
                 61452100,
                 49986000,
-                57179253,
+                57181868,
             }
         }
         CM{
@@ -28186,7 +27306,7 @@
             }
             nmg{
                 literacyShareF:int{49100000}
-                populationShareF:int{46350000}
+                populationShareF:int{46320000}
             }
             nnh{
                 literacyShareF:int{48800000}
@@ -28195,10 +27315,10 @@
             territoryF:intvector{
                 60895400,
                 49713000,
-                57256410,
+                57277450,
             }
             yav{
-                populationShareF:int{45900000}
+                populationShareF:int{45830000}
             }
             ybb{
                 literacyShareF:int{48200000}
@@ -28265,9 +27385,9 @@
                 populationShareF:int{46190000}
             }
             territoryF:intvector{
-                63232100,
+                63253600,
                 49951000,
-                59138469,
+                59139402,
             }
             ug{
                 officialStatus{"official_regional"}
@@ -28305,12 +27425,12 @@
             territoryF:intvector{
                 61711600,
                 49936000,
-                57481690,
+                57490848,
             }
         }
         CP{
             territoryF:intvector{
-                54424000,
+                54420900,
                 49990000,
                 50100000,
             }
@@ -28326,7 +27446,7 @@
             territoryF:intvector{
                 60839400,
                 49963000,
-                56498714,
+                56509799,
             }
         }
         CU{
@@ -28337,7 +27457,7 @@
             territoryF:intvector{
                 61137000,
                 49998000,
-                57111164,
+                57110591,
             }
         }
         CV{
@@ -28351,7 +27471,7 @@
             territoryF:intvector{
                 59377700,
                 49849000,
-                55568373,
+                55583255,
             }
         }
         CW{
@@ -28369,7 +27489,7 @@
             territoryF:intvector{
                 59312800,
                 49960000,
-                55150241,
+                55151345,
             }
         }
         CX{
@@ -28378,14 +27498,14 @@
                 populationShareF:int{49630000}
             }
             territoryF:intvector{
-                58117200,
+                58108100,
                 49990000,
                 53220500,
             }
         }
         CY{
             ar{
-                populationShareF:int{47110000}
+                populationShareF:int{47100000}
             }
             el{
                 officialStatus{"official"}
@@ -28403,7 +27523,7 @@
             territoryF:intvector{
                 60317800,
                 49987000,
-                56123709,
+                56126668,
             }
             tr{
                 officialStatus{"official"}
@@ -28430,7 +27550,7 @@
             territoryF:intvector{
                 61375900,
                 49990000,
-                57106863,
+                57107025,
             }
         }
         DE{
@@ -28513,7 +27633,7 @@
             territoryF:intvector{
                 62419900,
                 49990000,
-                57804577,
+                57801597,
             }
             tr{
                 populationShareF:int{48250000}
@@ -28528,7 +27648,7 @@
                 populationShareF:int{49990000}
             }
             territoryF:intvector{
-                57224600,
+                57222400,
                 49990000,
                 52500000,
             }
@@ -28551,7 +27671,7 @@
             territoryF:intvector{
                 59364000,
                 49679000,
-                55884017,
+                55921804,
             }
         }
         DK{
@@ -28582,7 +27702,7 @@
             territoryF:intvector{
                 61287800,
                 49990000,
-                56580950,
+                56586941,
             }
         }
         DM{
@@ -28593,12 +27713,12 @@
             territoryF:intvector{
                 58783000,
                 49940000,
-                54740270,
+                54742430,
             }
         }
         DO{
             en{
-                populationShareF:int{46780000}
+                populationShareF:int{46760000}
             }
             es{
                 officialStatus{"official"}
@@ -28607,7 +27727,7 @@
             territoryF:intvector{
                 61173000,
                 49901000,
-                57102988,
+                57104997,
             }
         }
         DZ{
@@ -28632,7 +27752,7 @@
             territoryF:intvector{
                 61630000,
                 49726000,
-                57416575,
+                57429729,
             }
         }
         EA{
@@ -28641,7 +27761,7 @@
                 populationShareF:int{49980000}
             }
             territoryF:intvector{
-                59540600,
+                59533200,
                 49977000,
                 55150000,
             }
@@ -28661,7 +27781,7 @@
             territoryF:intvector{
                 61193000,
                 49916000,
-                57164985,
+                57169049,
             }
         }
         EE{
@@ -28681,7 +27801,7 @@
             territoryF:intvector{
                 60416500,
                 49998000,
-                56124429,
+                56122862,
             }
             vro{
                 populationShareF:int{48570000}
@@ -28704,7 +27824,7 @@
             territoryF:intvector{
                 62120400,
                 49739000,
-                57994133,
+                58104124,
             }
         }
         EH{
@@ -28715,7 +27835,7 @@
             territoryF:intvector{
                 58906500,
                 49500000,
-                55619551,
+                55652271,
             }
         }
         ER{
@@ -28740,7 +27860,7 @@
             territoryF:intvector{
                 59940200,
                 49689000,
-                56597065,
+                56608120,
             }
             ti{
                 officialStatus{"de_facto_official"}
@@ -28783,7 +27903,7 @@
             territoryF:intvector{
                 62177800,
                 49977000,
-                57493311,
+                57500158,
             }
         }
         ET{
@@ -28809,7 +27929,7 @@
             territoryF:intvector{
                 61200600,
                 49390000,
-                58108386,
+                58108113,
             }
             ti{
                 populationShareF:int{48600000}
@@ -28854,7 +27974,7 @@
             territoryF:intvector{
                 61244900,
                 50100000,
-                56553736,
+                56557167,
             }
         }
         FJ{
@@ -28879,7 +27999,7 @@
             territoryF:intvector{
                 59862900,
                 49937000,
-                55926276,
+                55935974,
             }
         }
         FK{
@@ -28902,7 +28022,7 @@
                 populationShareF:int{49570000}
             }
             kos{
-                populationShareF:int{48770000}
+                populationShareF:int{48780000}
             }
             pon{
                 populationShareF:int{49230000}
@@ -28910,7 +28030,7 @@
             territoryF:intvector{
                 58348000,
                 49890000,
-                55103643,
+                55102436,
             }
             uli{
                 populationShareF:int{48290000}
@@ -28927,7 +28047,7 @@
             territoryF:intvector{
                 59200100,
                 49990000,
-                54510180,
+                54516280,
             }
         }
         FR{
@@ -28987,7 +28107,7 @@
             territoryF:intvector{
                 62285600,
                 49990000,
-                57673644,
+                57678482,
             }
         }
         GA{
@@ -29001,7 +28121,7 @@
             territoryF:intvector{
                 60366600,
                 49890000,
-                56211904,
+                56223091,
             }
         }
         GB{
@@ -29041,7 +28161,7 @@
                 populationShareF:int{47190000}
             }
             kw{
-                populationShareF:int{45310000}
+                populationShareF:int{45300000}
             }
             ml{
                 populationShareF:int{46350000}
@@ -29059,7 +28179,7 @@
             territoryF:intvector{
                 62292500,
                 49990000,
-                57651052,
+                57657611,
             }
             yi{
                 populationShareF:int{46490000}
@@ -29076,7 +28196,7 @@
             territoryF:intvector{
                 59163400,
                 49960000,
-                55112207,
+                55113094,
             }
         }
         GE{
@@ -29096,7 +28216,7 @@
             }
             os{
                 officialStatus{"official_regional"}
-                populationShareF:int{48220000}
+                populationShareF:int{48409000}
             }
             ru{
                 populationShareF:int{48900000}
@@ -29104,7 +28224,7 @@
             territoryF:intvector{
                 60398500,
                 49997000,
-                56492609,
+                56399700,
             }
             xmf{
                 populationShareF:int{49110000}
@@ -29135,7 +28255,7 @@
             territoryF:intvector{
                 59346500,
                 50100000,
-                54666970,
+                54670520,
             }
         }
         GH{
@@ -29182,7 +28302,7 @@
             territoryF:intvector{
                 61134000,
                 49715000,
-                57281025,
+                57293402,
             }
         }
         GI{
@@ -29196,7 +28316,7 @@
             territoryF:intvector{
                 59204400,
                 49800000,
-                54294610,
+                54295810,
             }
         }
         GL{
@@ -29210,7 +28330,7 @@
             territoryF:intvector{
                 59241300,
                 50100000,
-                54576910,
+                54576160,
             }
         }
         GM{
@@ -29230,7 +28350,7 @@
             territoryF:intvector{
                 59555600,
                 49511000,
-                56209273,
+                56217400,
             }
         }
         GN{
@@ -29259,7 +28379,7 @@
             territoryF:intvector{
                 60279700,
                 49410000,
-                57118554,
+                57125274,
             }
         }
         GP{
@@ -29295,7 +28415,7 @@
             territoryF:intvector{
                 60315200,
                 49942000,
-                55797457,
+                55836178,
             }
         }
         GR{
@@ -29322,12 +28442,12 @@
                 populationShareF:int{48370000}
             }
             sq{
-                populationShareF:int{46930000}
+                populationShareF:int{46940000}
             }
             territoryF:intvector{
                 61299300,
                 49973000,
-                57107615,
+                57106071,
             }
             tr{
                 populationShareF:int{48120000}
@@ -29338,7 +28458,7 @@
         }
         GS{
             territoryF:intvector{
-                55898500,
+                55889600,
                 49990000,
                 51200000,
             }
@@ -29359,7 +28479,7 @@
             territoryF:intvector{
                 61138100,
                 49759000,
-                57165813,
+                57171533,
             }
         }
         GU{
@@ -29374,7 +28494,7 @@
             territoryF:intvector{
                 59579300,
                 49990000,
-                55167772,
+                55168485,
             }
         }
         GW{
@@ -29394,7 +28514,7 @@
             territoryF:intvector{
                 59317100,
                 49553000,
-                56183325,
+                56192710,
             }
         }
         GY{
@@ -29405,7 +28525,7 @@
             territoryF:intvector{
                 59630100,
                 49918000,
-                55740685,
+                55750204,
             }
         }
         HK{
@@ -29414,9 +28534,9 @@
                 populationShareF:int{49510000}
             }
             territoryF:intvector{
-                61455900,
+                61480500,
                 49935000,
-                56721334,
+                56724991,
             }
             yue{
                 populationShareF:int{49900000}
@@ -29431,7 +28551,7 @@
         }
         HM{
             territoryF:intvector{
-                54531700,
+                54490100,
                 49990000,
                 50100000,
             }
@@ -29451,7 +28571,7 @@
             territoryF:intvector{
                 60463000,
                 49851000,
-                56918277,
+                56923534,
             }
         }
         HR{
@@ -29469,7 +28589,7 @@
             territoryF:intvector{
                 61102100,
                 49989000,
-                56427048,
+                56422775,
             }
         }
         HT{
@@ -29485,7 +28605,7 @@
             territoryF:intvector{
                 60199700,
                 49487000,
-                57107884,
+                57110678,
             }
         }
         HU{
@@ -29517,7 +28637,7 @@
             territoryF:intvector{
                 61289600,
                 49990000,
-                56982570,
+                56977183,
             }
         }
         IC{
@@ -29526,7 +28646,7 @@
                 populationShareF:int{49980000}
             }
             territoryF:intvector{
-                60756400,
+                60746000,
                 49977000,
                 56209859,
             }
@@ -29629,7 +28749,7 @@
             territoryF:intvector{
                 62325000,
                 49928000,
-                58262787,
+                58267026,
             }
             zh_Hant{
                 populationShareF:int{47920000}
@@ -29650,7 +28770,7 @@
             territoryF:intvector{
                 61353300,
                 49990000,
-                56506805,
+                56517657,
             }
         }
         IL{
@@ -29675,7 +28795,7 @@
                 populationShareF:int{48130000}
             }
             ml{
-                populationShareF:int{46950000}
+                populationShareF:int{46920000}
             }
             pl{
                 populationShareF:int{48150000}
@@ -29689,7 +28809,7 @@
             territoryF:intvector{
                 61317100,
                 49971000,
-                56842490,
+                56867548,
             }
             ti{
                 populationShareF:int{47120000}
@@ -29710,7 +28830,7 @@
             territoryF:intvector{
                 59679200,
                 49990000,
-                54894070,
+                54904990,
             }
         }
         IN{
@@ -29778,7 +28898,7 @@
                 populationShareF:int{47200000}
             }
             dv{
-                populationShareF:int{44400000}
+                populationShareF:int{44300000}
             }
             dz{
                 populationShareF:int{44200000}
@@ -29807,6 +28927,9 @@
                 officialStatus{"official"}
                 populationShareF:int{49410000}
             }
+            hi_Latn{
+                populationShareF:int{47100000}
+            }
             hne{
                 populationShareF:int{48110000}
             }
@@ -29955,7 +29078,7 @@
             territoryF:intvector{
                 62947400,
                 49628000,
-                59129683,
+                59132609,
             }
             unr{
                 populationShareF:int{46940000}
@@ -29988,7 +29111,7 @@
                 populationShareF:int{50100000}
             }
             territoryF:intvector{
-                58157200,
+                58155700,
                 49990000,
                 53350000,
             }
@@ -30021,7 +29144,7 @@
             territoryF:intvector{
                 61649300,
                 49785000,
-                57401942,
+                57388727,
             }
         }
         IR{
@@ -30049,7 +29172,7 @@
                 populationShareF:int{49750000}
             }
             gbz{
-                populationShareF:int{45960000}
+                populationShareF:int{45940000}
             }
             glk{
                 populationShareF:int{48460000}
@@ -30061,7 +29184,7 @@
                 populationShareF:int{46710000}
             }
             kk_Arab{
-                populationShareF:int{45360000}
+                populationShareF:int{45350000}
             }
             lki{
                 populationShareF:int{47760000}
@@ -30092,7 +29215,7 @@
             territoryF:intvector{
                 62164000,
                 49850000,
-                57830247,
+                57849233,
             }
             tk{
                 populationShareF:int{48280000}
@@ -30100,7 +29223,7 @@
         }
         IS{
             da{
-                populationShareF:int{47650000}
+                populationShareF:int{47640000}
             }
             is{
                 officialStatus{"official"}
@@ -30109,7 +29232,7 @@
             territoryF:intvector{
                 60181800,
                 49990000,
-                55343518,
+                55350734,
             }
         }
         IT{
@@ -30175,7 +29298,7 @@
             territoryF:intvector{
                 62231700,
                 49990000,
-                57622467,
+                57624027,
             }
             vec{
                 populationShareF:int{48130000}
@@ -30189,7 +29312,7 @@
             territoryF:intvector{
                 59556900,
                 49990000,
-                54996020,
+                55101073,
             }
         }
         JM{
@@ -30203,7 +29326,7 @@
             territoryF:intvector{
                 60260600,
                 49870000,
-                56281209,
+                56280857,
             }
         }
         JO{
@@ -30217,7 +29340,7 @@
             territoryF:intvector{
                 60890000,
                 49959000,
-                57104584,
+                57108206,
             }
         }
         JP{
@@ -30235,7 +29358,7 @@
             territoryF:intvector{
                 62544300,
                 49990000,
-                58126168,
+                58125507,
             }
         }
         KE{
@@ -30255,7 +29378,7 @@
                 populationShareF:int{49190000}
             }
             gu{
-                populationShareF:int{46100000}
+                populationShareF:int{45930000}
             }
             guz{
                 populationShareF:int{48490000}
@@ -30286,7 +29409,7 @@
                 populationShareF:int{47470000}
             }
             pa{
-                populationShareF:int{46210000}
+                populationShareF:int{46190000}
             }
             pko{
                 literacyShareF:int{48100000}
@@ -30309,7 +29432,7 @@
             territoryF:intvector{
                 61163700,
                 49874000,
-                57483975,
+                57535279,
             }
         }
         KG{
@@ -30324,7 +29447,7 @@
             territoryF:intvector{
                 60231500,
                 49992000,
-                56584930,
+                56596490,
             }
         }
         KH{
@@ -30341,7 +29464,7 @@
             territoryF:intvector{
                 60642100,
                 49739000,
-                57164495,
+                57169270,
             }
         }
         KI{
@@ -30356,7 +29479,7 @@
             territoryF:intvector{
                 58227000,
                 49900000,
-                55109367,
+                55111796,
             }
         }
         KM{
@@ -30371,7 +29494,7 @@
             territoryF:intvector{
                 59131900,
                 49755000,
-                55821164,
+                55846281,
             }
             wni{
                 officialStatus{"official"}
@@ -30390,7 +29513,7 @@
             territoryF:intvector{
                 59155000,
                 49978000,
-                54530940,
+                54538210,
             }
         }
         KP{
@@ -30401,7 +29524,7 @@
             territoryF:intvector{
                 60400000,
                 50100000,
-                57253811,
+                57256435,
             }
         }
         KR{
@@ -30412,7 +29535,7 @@
             territoryF:intvector{
                 62203500,
                 49979000,
-                57514181,
+                57518351,
             }
         }
         KW{
@@ -30423,7 +29546,7 @@
             territoryF:intvector{
                 61289700,
                 49939000,
-                56291647,
+                56299371,
             }
         }
         KY{
@@ -30434,7 +29557,7 @@
             territoryF:intvector{
                 59250700,
                 49989000,
-                54596130,
+                54619440,
             }
         }
         KZ{
@@ -30455,7 +29578,7 @@
             territoryF:intvector{
                 61478600,
                 49997000,
-                57187445,
+                57190919,
             }
             ug_Cyrl{
                 populationShareF:int{48200000}
@@ -30475,7 +29598,7 @@
             territoryF:intvector{
                 60493400,
                 49727000,
-                56723417,
+                56744740,
             }
         }
         LB{
@@ -30498,7 +29621,7 @@
             territoryF:intvector{
                 60882500,
                 49896000,
-                56610008,
+                56546961,
             }
         }
         LC{
@@ -30509,7 +29632,7 @@
             territoryF:intvector{
                 59254200,
                 49901000,
-                55165510,
+                55166487,
             }
         }
         LI{
@@ -30525,10 +29648,10 @@
             territoryF:intvector{
                 59497800,
                 50100000,
-                54385470,
+                54391370,
             }
             wae{
-                populationShareF:int{48340000}
+                populationShareF:int{48330000}
             }
         }
         LK{
@@ -30546,7 +29669,7 @@
             territoryF:intvector{
                 61275800,
                 49912000,
-                57225766,
+                57228892,
             }
         }
         LR{
@@ -30569,7 +29692,7 @@
             territoryF:intvector{
                 59611200,
                 49608000,
-                56480977,
+                56507330,
             }
             vai{
                 populationShareF:int{48260000}
@@ -30593,7 +29716,7 @@
             territoryF:intvector{
                 59665600,
                 49896000,
-                56196246,
+                56196933,
             }
             xh{
                 populationShareF:int{47990000}
@@ -30622,7 +29745,7 @@
             territoryF:intvector{
                 60914700,
                 49997000,
-                56279328,
+                56273146,
             }
         }
         LU{
@@ -30648,7 +29771,7 @@
             territoryF:intvector{
                 60621100,
                 50100000,
-                55605764,
+                55628381,
             }
         }
         LV{
@@ -30668,7 +29791,7 @@
             territoryF:intvector{
                 60540200,
                 49998000,
-                56192356,
+                56188123,
             }
         }
         LY{
@@ -30679,7 +29802,7 @@
             territoryF:intvector{
                 60619700,
                 49895000,
-                56675451,
+                56689054,
             }
         }
         MA{
@@ -30717,7 +29840,7 @@
             territoryF:intvector{
                 61298600,
                 49671000,
-                57343141,
+                57355617,
             }
             tzm{
                 literacyShareF:int{49250000}
@@ -30736,7 +29859,7 @@
             territoryF:intvector{
                 59767200,
                 49990000,
-                54307270,
+                54390000,
             }
         }
         MD{
@@ -30756,7 +29879,7 @@
             territoryF:intvector{
                 60237200,
                 49990000,
-                56343772,
+                56336450,
             }
             uk{
                 populationShareF:int{49140000}
@@ -30776,7 +29899,7 @@
             territoryF:intvector{
                 60110800,
                 49985000,
-                55614249,
+                55609859,
             }
         }
         MF{
@@ -30787,7 +29910,7 @@
             territoryF:intvector{
                 58561500,
                 49990000,
-                54322840,
+                54325560,
             }
         }
         MG{
@@ -30806,7 +29929,7 @@
             territoryF:intvector{
                 60398500,
                 49645000,
-                57256836,
+                57269557,
             }
         }
         MH{
@@ -30821,7 +29944,7 @@
             territoryF:intvector{
                 58196000,
                 49937000,
-                54756840,
+                54779170,
             }
         }
         MK{
@@ -30834,9 +29957,9 @@
                 populationShareF:int{49250000}
             }
             territoryF:intvector{
-                60305900,
-                49970000,
-                56208296,
+                60310300,
+                49974000,
+                56212597,
             }
             tr{
                 populationShareF:int{48350000}
@@ -30886,7 +30009,7 @@
             territoryF:intvector{
                 60412200,
                 49334000,
-                57184299,
+                57195534,
             }
             tmh{
                 populationShareF:int{48210000}
@@ -30897,7 +30020,7 @@
                 populationShareF:int{48170000}
             }
             kht{
-                populationShareF:int{45760000}
+                populationShareF:int{45750000}
             }
             mnw{
                 populationShareF:int{48150000}
@@ -30912,7 +30035,7 @@
             territoryF:intvector{
                 61329800,
                 49927000,
-                57556225,
+                57565901,
             }
         }
         MN{
@@ -30927,9 +30050,9 @@
                 populationShareF:int{47130000}
             }
             territoryF:intvector{
-                60397300,
+                60435400,
                 49974000,
-                56310343,
+                56316803,
             }
             ug_Cyrl{
                 populationShareF:int{46320000}
@@ -30947,9 +30070,9 @@
                 populationShareF:int{48500000}
             }
             territoryF:intvector{
-                60718200,
+                60773300,
                 49956000,
-                55606340,
+                55614458,
             }
             zh{
                 populationShareF:int{48500000}
@@ -30970,7 +30093,7 @@
             territoryF:intvector{
                 59124200,
                 49970000,
-                54519940,
+                54514330,
             }
         }
         MQ{
@@ -31001,21 +30124,21 @@
             territoryF:intvector{
                 60172800,
                 49586000,
-                56384043,
+                56400548,
             }
             wo{
-                populationShareF:int{47260000}
+                populationShareF:int{47250000}
             }
         }
         MS{
             en{
                 officialStatus{"official"}
-                populationShareF:int{49660000}
+                populationShareF:int{49650000}
             }
             territoryF:intvector{
                 58167400,
                 49970000,
-                53531500,
+                53537300,
             }
         }
         MT{
@@ -31036,7 +30159,7 @@
             territoryF:intvector{
                 60192600,
                 49924000,
-                55449043,
+                55457267,
             }
         }
         MU{
@@ -31060,7 +30183,7 @@
             territoryF:intvector{
                 60282700,
                 49888000,
-                56136428,
+                56137937,
             }
             ur{
                 populationShareF:int{48520000}
@@ -31074,7 +30197,7 @@
             territoryF:intvector{
                 59690100,
                 49984000,
-                55392473,
+                55391904,
             }
         }
         MW{
@@ -31089,7 +30212,7 @@
             territoryF:intvector{
                 60224200,
                 49748000,
-                57198426,
+                57211966,
             }
             tog{
                 populationShareF:int{47980000}
@@ -31127,7 +30250,7 @@
             territoryF:intvector{
                 62246300,
                 49935000,
-                58125959,
+                58128650,
             }
             yua{
                 populationShareF:int{47670000}
@@ -31135,7 +30258,7 @@
         }
         MY{
             bjn{
-                populationShareF:int{46160000}
+                populationShareF:int{46150000}
             }
             bug{
                 populationShareF:int{46790000}
@@ -31165,9 +30288,9 @@
             territoryF:intvector{
                 61933300,
                 49931000,
-                57318097,
+                57326521,
             }
-            zh_Hant{
+            zh{
                 populationShareF:int{49170000}
             }
             zmi{
@@ -31198,12 +30321,12 @@
                 populationShareF:int{48460000}
             }
             sw{
-                populationShareF:int{46340000}
+                populationShareF:int{46310000}
             }
             territoryF:intvector{
                 60370900,
                 49561000,
-                57272338,
+                57300982,
             }
             ts{
                 populationShareF:int{48790000}
@@ -31215,7 +30338,7 @@
                 populationShareF:int{48240000}
             }
             zu{
-                populationShareF:int{45660000}
+                populationShareF:int{45600000}
             }
         }
         NA{
@@ -31244,7 +30367,7 @@
             territoryF:intvector{
                 60266000,
                 49888000,
-                56253322,
+                56263007,
             }
             tn{
                 populationShareF:int{47560000}
@@ -31258,7 +30381,7 @@
             territoryF:intvector{
                 60111100,
                 49962000,
-                55282754,
+                55290009,
             }
         }
         NE{
@@ -31287,13 +30410,13 @@
             territoryF:intvector{
                 60218600,
                 49287000,
-                57198662,
+                57227724,
             }
             tmh{
                 populationShareF:int{48600000}
             }
             twq{
-                populationShareF:int{46400000}
+                populationShareF:int{46350000}
             }
         }
         NF{
@@ -31302,7 +30425,7 @@
                 populationShareF:int{49960000}
             }
             territoryF:intvector{
-                57929500,
+                57856600,
                 49990000,
                 53174800,
             }
@@ -31361,7 +30484,7 @@
             territoryF:intvector{
                 62112100,
                 49613000,
-                58203453,
+                58214028,
             }
             tiv{
                 literacyShareF:int{49250000}
@@ -31380,7 +30503,7 @@
             territoryF:intvector{
                 60364000,
                 49780000,
-                56608521,
+                56620344,
             }
         }
         NL{
@@ -31423,7 +30546,7 @@
             territoryF:intvector{
                 61924400,
                 49990000,
-                57171512,
+                57172804,
             }
             tr{
                 populationShareF:int{48120000}
@@ -31448,7 +30571,7 @@
             territoryF:intvector{
                 61381200,
                 50100000,
-                56537219,
+                56546744,
             }
         }
         NP{
@@ -31486,7 +30609,7 @@
                 populationShareF:int{48320000}
             }
             lep{
-                populationShareF:int{45950000}
+                populationShareF:int{45930000}
             }
             lif{
                 populationShareF:int{48110000}
@@ -31523,7 +30646,7 @@
             territoryF:intvector{
                 60791900,
                 49574000,
-                57297176,
+                57303279,
             }
             thl{
                 populationShareF:int{48200000}
@@ -31547,31 +30670,31 @@
         NR{
             en{
                 officialStatus{"official"}
-                populationShareF:int{49970000}
+                populationShareF:int{49850000}
             }
             na{
                 officialStatus{"official"}
-                populationShareF:int{49710000}
+                populationShareF:int{49630000}
             }
             territoryF:intvector{
                 58160000,
                 49990000,
-                53969200,
+                54110000,
             }
         }
         NU{
             en{
                 officialStatus{"official"}
-                populationShareF:int{49700000}
+                populationShareF:int{49560000}
             }
             niu{
                 officialStatus{"official"}
-                populationShareF:int{49700000}
+                populationShareF:int{49560000}
             }
             territoryF:intvector{
                 57100100,
                 49950000,
-                53161800,
+                53200000,
             }
         }
         NZ{
@@ -31586,7 +30709,7 @@
             territoryF:intvector{
                 61189000,
                 49990000,
-                56454563,
+                56492548,
             }
         }
         OM{
@@ -31603,7 +30726,7 @@
             territoryF:intvector{
                 61190100,
                 49869000,
-                56349412,
+                56466484,
             }
         }
         PA{
@@ -31617,10 +30740,10 @@
             territoryF:intvector{
                 61104100,
                 49941000,
-                56380064,
+                56389408,
             }
             zh_Hant{
-                populationShareF:int{47160000}
+                populationShareF:int{47150000}
             }
         }
         PE{
@@ -31638,7 +30761,7 @@
             territoryF:intvector{
                 61430300,
                 49896000,
-                57313312,
+                57319150,
             }
         }
         PF{
@@ -31649,7 +30772,7 @@
             territoryF:intvector{
                 59549000,
                 49980000,
-                55290373,
+                55295121,
             }
             ty{
                 officialStatus{"official"}
@@ -31672,7 +30795,7 @@
             territoryF:intvector{
                 60301900,
                 49624000,
-                56702733,
+                56725946,
             }
             tpi{
                 literacyShareF:int{49450000}
@@ -31681,14 +30804,11 @@
             }
         }
         PH{
-            bhk{
-                populationShareF:int{48230000}
-            }
             bik{
                 populationShareF:int{48300000}
             }
             bku{
-                populationShareF:int{45760000}
+                populationShareF:int{45730000}
             }
             bto{
                 populationShareF:int{47280000}
@@ -31708,6 +30828,9 @@
             es{
                 populationShareF:int{49310000}
             }
+            fbl{
+                populationShareF:int{48230000}
+            }
             fil{
                 officialStatus{"official"}
                 populationShareF:int{49600000}
@@ -31741,12 +30864,12 @@
             }
             tbw{
                 literacyShareF:int{49360000}
-                populationShareF:int{45940000}
+                populationShareF:int{45920000}
             }
             territoryF:intvector{
                 61877200,
                 49954000,
-                58105893,
+                58109181,
             }
             tsg{
                 officialStatus{"official_regional"}
@@ -31830,11 +30953,14 @@
             territoryF:intvector{
                 62106100,
                 49549000,
-                58207863,
+                58233501,
             }
             tg_Arab{
                 populationShareF:int{47330000}
             }
+            trw{
+                populationShareF:int{46530000}
+            }
             ur{
                 officialStatus{"official"}
                 populationShareF:int{49950000}
@@ -31875,7 +31001,7 @@
             territoryF:intvector{
                 62112600,
                 49997000,
-                57384207,
+                57382823,
             }
             uk{
                 populationShareF:int{47390000}
@@ -31883,27 +31009,27 @@
         }
         PM{
             en{
-                populationShareF:int{48340000}
+                populationShareF:int{48350000}
             }
             fr{
                 officialStatus{"official"}
-                populationShareF:int{49930000}
+                populationShareF:int{49960000}
             }
             territoryF:intvector{
                 58261300,
                 49990000,
-                53547100,
+                53534700,
             }
         }
         PN{
             en{
                 officialStatus{"official"}
-                populationShareF:int{49850000}
+                populationShareF:int{49920000}
             }
             territoryF:intvector{
-                56242600,
+                56222400,
                 49990000,
-                51540000,
+                51500000,
             }
         }
         PR{
@@ -31918,7 +31044,7 @@
             territoryF:intvector{
                 61130000,
                 49903000,
-                56329463,
+                56318907,
             }
         }
         PS{
@@ -31929,7 +31055,7 @@
             territoryF:intvector{
                 60212200,
                 49953000,
-                56463521,
+                56481826,
             }
         }
         PT{
@@ -31952,7 +31078,7 @@
             territoryF:intvector{
                 61314100,
                 49954000,
-                57103555,
+                57103027,
             }
         }
         PW{
@@ -31967,7 +31093,7 @@
             territoryF:intvector{
                 58264000,
                 49920000,
-                54215160,
+                54216850,
             }
         }
         PY{
@@ -31985,7 +31111,7 @@
             territoryF:intvector{
                 60889100,
                 49939000,
-                56702576,
+                56719169,
             }
         }
         QA{
@@ -31997,12 +31123,12 @@
                 populationShareF:int{49110000}
             }
             ml{
-                populationShareF:int{47280000}
+                populationShareF:int{47270000}
             }
             territoryF:intvector{
                 61339500,
                 49963000,
-                56236357,
+                56244417,
             }
         }
         RE{
@@ -32024,7 +31150,7 @@
         }
         RO{
             bg{
-                populationShareF:int{46310000}
+                populationShareF:int{46320000}
             }
             de{
                 populationShareF:int{47210000}
@@ -32057,7 +31183,7 @@
             territoryF:intvector{
                 61483400,
                 49977000,
-                57214571,
+                57213029,
             }
             tr{
                 populationShareF:int{47130000}
@@ -32095,7 +31221,7 @@
             territoryF:intvector{
                 61105700,
                 49980000,
-                56707811,
+                56701217,
             }
             uk{
                 officialStatus{"official_regional"}
@@ -32217,7 +31343,7 @@
             territoryF:intvector{
                 62401600,
                 49997000,
-                58142123,
+                58141722,
             }
             tt{
                 officialStatus{"official_regional"}
@@ -32245,7 +31371,7 @@
             }
             fr{
                 officialStatus{"official"}
-                populationShareF:int{46190000}
+                populationShareF:int{46180000}
             }
             rw{
                 officialStatus{"official"}
@@ -32254,7 +31380,7 @@
             territoryF:intvector{
                 60246800,
                 49711000,
-                57121874,
+                57127124,
             }
         }
         SA{
@@ -32269,7 +31395,7 @@
             territoryF:intvector{
                 62177500,
                 49872000,
-                57330911,
+                57341735,
             }
         }
         SB{
@@ -32278,12 +31404,12 @@
                 populationShareF:int{50100000}
             }
             rug{
-                populationShareF:int{48150000}
+                populationShareF:int{48140000}
             }
             territoryF:intvector{
                 59133000,
                 49841000,
-                55660121,
+                55685097,
             }
         }
         SC{
@@ -32301,7 +31427,7 @@
             territoryF:intvector{
                 59275000,
                 49918000,
-                54946330,
+                54959810,
             }
         }
         SD{
@@ -32331,7 +31457,7 @@
             territoryF:intvector{
                 61177400,
                 49719000,
-                57431208,
+                57455616,
             }
             zag{
                 populationShareF:int{47510000}
@@ -32352,14 +31478,14 @@
                 populationShareF:int{0}
             }
             rmu{
-                populationShareF:int{46950000}
+                populationShareF:int{46930000}
             }
             se{
                 populationShareF:int{47330000}
             }
             sma{
                 literacyShareF:int{49750000}
-                populationShareF:int{45300000}
+                populationShareF:int{45290000}
             }
             smj{
                 populationShareF:int{46150000}
@@ -32371,10 +31497,10 @@
             territoryF:intvector{
                 61518000,
                 49990000,
-                57100410,
+                57102025,
             }
             yi{
-                populationShareF:int{46300000}
+                populationShareF:int{46290000}
             }
         }
         SG{
@@ -32383,14 +31509,14 @@
                 populationShareF:int{49930000}
             }
             ml{
-                populationShareF:int{47170000}
+                populationShareF:int{47160000}
             }
             ms{
                 officialStatus{"official"}
                 populationShareF:int{49140000}
             }
             pa{
-                populationShareF:int{47160000}
+                populationShareF:int{47150000}
             }
             ta{
                 officialStatus{"official"}
@@ -32399,7 +31525,7 @@
             territoryF:intvector{
                 61528100,
                 49959000,
-                56599599,
+                56620966,
             }
             zh{
                 officialStatus{"official"}
@@ -32414,7 +31540,7 @@
             territoryF:intvector{
                 57311000,
                 49970000,
-                53784100,
+                53786200,
             }
         }
         SI{
@@ -32440,21 +31566,21 @@
             territoryF:intvector{
                 60712300,
                 49997000,
-                56210213,
+                56210268,
             }
         }
         SJ{
             nb{
                 officialStatus{"official"}
-                populationShareF:int{49580000}
+                populationShareF:int{49510000}
             }
             ru{
-                populationShareF:int{49460000}
+                populationShareF:int{49410000}
             }
             territoryF:intvector{
-                58183300,
+                58204000,
                 50100000,
-                53258300,
+                53292600,
             }
         }
         SK{
@@ -32480,7 +31606,7 @@
             territoryF:intvector{
                 61179700,
                 49996000,
-                56544504,
+                56544060,
             }
             uk{
                 populationShareF:int{48190000}
@@ -32510,12 +31636,12 @@
             territoryF:intvector{
                 60115500,
                 49433000,
-                56631221,
+                56662493,
             }
         }
         SM{
             eo{
-                populationShareF:int{47890000}
+                populationShareF:int{47880000}
             }
             it{
                 officialStatus{"official"}
@@ -32524,7 +31650,7 @@
             territoryF:intvector{
                 59206400,
                 49960000,
-                54337790,
+                54342320,
             }
         }
         SN{
@@ -32563,7 +31689,7 @@
             mey{
                 literacyShareF:int{49100000}
                 officialStatus{"official_regional"}
-                populationShareF:int{46480000}
+                populationShareF:int{46460000}
             }
             mfv{
                 literacyShareF:int{49100000}
@@ -32586,12 +31712,12 @@
             territoryF:intvector{
                 60548000,
                 49497000,
-                57150209,
+                57157364,
             }
             tnr{
                 literacyShareF:int{49100000}
                 officialStatus{"official_regional"}
-                populationShareF:int{46230000}
+                populationShareF:int{46210000}
             }
             wo{
                 officialStatus{"de_facto_official"}
@@ -32617,7 +31743,7 @@
             territoryF:intvector{
                 60204400,
                 49378000,
-                57112590,
+                57117571,
             }
         }
         SR{
@@ -32632,10 +31758,10 @@
             territoryF:intvector{
                 59868800,
                 49947000,
-                55597927,
+                55609569,
             }
             zh_Hant{
-                populationShareF:int{48120000}
+                populationShareF:int{48110000}
             }
         }
         SS{
@@ -32652,7 +31778,7 @@
             territoryF:intvector{
                 60200100,
                 49270000,
-                57102046,
+                57105612,
             }
         }
         ST{
@@ -32663,7 +31789,7 @@
             territoryF:intvector{
                 58686000,
                 49695000,
-                55204454,
+                55211122,
             }
         }
         SV{
@@ -32674,7 +31800,7 @@
             territoryF:intvector{
                 60511700,
                 49845000,
-                56618727,
+                56648110,
             }
         }
         SX{
@@ -32687,15 +31813,15 @@
             }
             nl{
                 officialStatus{"official"}
-                populationShareF:int{48370000}
+                populationShareF:int{48360000}
             }
             territoryF:intvector{
                 58365800,
                 49990000,
-                54426770,
+                54438470,
             }
             vic{
-                populationShareF:int{48730000}
+                populationShareF:int{48710000}
             }
         }
         SY{
@@ -32720,7 +31846,7 @@
             territoryF:intvector{
                 60502800,
                 49841000,
-                57194543,
+                57193984,
             }
         }
         SZ{
@@ -32735,7 +31861,7 @@
             territoryF:intvector{
                 60116000,
                 49878000,
-                56108720,
+                56110448,
             }
             ts{
                 populationShareF:int{48170000}
@@ -32749,7 +31875,7 @@
                 populationShareF:int{49990000}
             }
             territoryF:intvector{
-                57123500,
+                57122300,
                 49990000,
                 52275000,
             }
@@ -32762,7 +31888,7 @@
             territoryF:intvector{
                 58632000,
                 49980000,
-                54537010,
+                54559260,
             }
         }
         TD{
@@ -32777,7 +31903,7 @@
             territoryF:intvector{
                 60286200,
                 49354000,
-                57158331,
+                57168774,
             }
         }
         TF{
@@ -32786,7 +31912,7 @@
                 populationShareF:int{50100000}
             }
             territoryF:intvector{
-                56593500,
+                56589300,
                 49990000,
                 52140000,
             }
@@ -32806,7 +31932,7 @@
             territoryF:intvector{
                 60129700,
                 49604000,
-                56817645,
+                56860844,
             }
         }
         TH{
@@ -32847,7 +31973,7 @@
             territoryF:intvector{
                 62123600,
                 49935000,
-                57686159,
+                57689774,
             }
             th{
                 literacyShareF:int{49930000}
@@ -32864,7 +31990,7 @@
         }
         TJ{
             ar{
-                populationShareF:int{46120000}
+                populationShareF:int{46110000}
             }
             fa{
                 populationShareF:int{47780000}
@@ -32875,7 +32001,7 @@
             territoryF:intvector{
                 60284300,
                 49997000,
-                56860488,
+                56887367,
             }
             tg{
                 officialStatus{"official"}
@@ -32885,16 +32011,16 @@
         TK{
             en{
                 officialStatus{"official"}
-                populationShareF:int{50100000}
+                populationShareF:int{49780000}
             }
             territoryF:intvector{
                 56150000,
                 49940000,
-                53128500,
+                53164700,
             }
             tkl{
                 officialStatus{"official"}
-                populationShareF:int{50100000}
+                populationShareF:int{49780000}
                 writingShareF:int{48500000}
             }
         }
@@ -32907,7 +32033,7 @@
             territoryF:intvector{
                 59742600,
                 49583000,
-                56132193,
+                56138372,
             }
             tet{
                 officialStatus{"official"}
@@ -32924,7 +32050,7 @@
             territoryF:intvector{
                 61103700,
                 49996000,
-                56541101,
+                56552863,
             }
             tk{
                 officialStatus{"official"}
@@ -32949,7 +32075,7 @@
             territoryF:intvector{
                 61137700,
                 49791000,
-                57115162,
+                57117212,
             }
         }
         TO{
@@ -32960,7 +32086,7 @@
             territoryF:intvector{
                 58591000,
                 49990000,
-                55106398,
+                55106095,
             }
             to{
                 officialStatus{"official"}
@@ -33029,7 +32155,7 @@
             territoryF:intvector{
                 62218600,
                 49941000,
-                57812572,
+                57820175,
             }
             tr{
                 officialStatus{"official"}
@@ -33056,29 +32182,29 @@
             territoryF:intvector{
                 60428500,
                 49988000,
-                56121553,
+                56120879,
             }
         }
         TV{
             en{
                 officialStatus{"official"}
-                populationShareF:int{48960000}
+                populationShareF:int{48940000}
             }
             territoryF:intvector{
                 57420000,
                 49950000,
-                54111470,
+                54113420,
             }
             tvl{
                 officialStatus{"official"}
-                populationShareF:int{49890000}
+                populationShareF:int{49870000}
             }
         }
         TW{
             territoryF:intvector{
                 62118900,
                 49961000,
-                57235460,
+                57236030,
             }
             trv{
                 populationShareF:int{46200000}
@@ -33141,7 +32267,7 @@
             territoryF:intvector{
                 61162500,
                 49678000,
-                57554513,
+                57585528,
             }
             vun{
                 populationShareF:int{47740000}
@@ -33179,7 +32305,7 @@
             territoryF:intvector{
                 61369600,
                 49997000,
-                57439523,
+                57439229,
             }
             tr{
                 populationShareF:int{47420000}
@@ -33204,7 +32330,7 @@
                 populationShareF:int{48390000}
             }
             hi{
-                populationShareF:int{45540000}
+                populationShareF:int{45510000}
             }
             laj{
                 populationShareF:int{48380000}
@@ -33231,7 +32357,7 @@
             territoryF:intvector{
                 60891900,
                 49732000,
-                57408537,
+                57432530,
             }
             ttj{
                 populationShareF:int{48190000}
@@ -33246,7 +32372,7 @@
                 populationShareF:int{50100000}
             }
             territoryF:intvector{
-                57187100,
+                57185200,
                 49990000,
                 52316000,
             }
@@ -33326,7 +32452,7 @@
             territoryF:intvector{
                 63194900,
                 49990000,
-                58329256,
+                58332639,
             }
             vi{
                 populationShareF:int{47340000}
@@ -33346,7 +32472,7 @@
             territoryF:intvector{
                 60781600,
                 49981000,
-                56336930,
+                56338761,
             }
         }
         UZ{
@@ -33359,7 +32485,7 @@
             territoryF:intvector{
                 61223000,
                 49994000,
-                57300237,
+                57305654,
             }
             tr{
                 populationShareF:int{47760000}
@@ -33382,7 +32508,7 @@
                 populationShareF:int{49820000}
             }
             territoryF:intvector{
-                57372200,
+                57371300,
                 50100000,
                 53100000,
             }
@@ -33395,7 +32521,7 @@
             territoryF:intvector{
                 59126500,
                 49960000,
-                55101844,
+                55101390,
             }
         }
         VE{
@@ -33406,7 +32532,7 @@
             territoryF:intvector{
                 61381600,
                 49955000,
-                57316892,
+                57286446,
             }
         }
         VG{
@@ -33417,7 +32543,7 @@
             territoryF:intvector{
                 58500000,
                 49978000,
-                54358020,
+                54373810,
             }
         }
         VI{
@@ -33428,7 +32554,7 @@
             territoryF:intvector{
                 59387200,
                 49990000,
-                55106977,
+                55106235,
             }
         }
         VN{
@@ -33439,7 +32565,7 @@
             territoryF:intvector{
                 61648700,
                 49934000,
-                57970403,
+                57987213,
             }
             vi{
                 officialStatus{"official"}
@@ -33465,7 +32591,7 @@
             territoryF:intvector{
                 58772000,
                 49832000,
-                55288037,
+                55298333,
             }
         }
         WF{
@@ -33474,12 +32600,12 @@
                 populationShareF:int{49480000}
             }
             fud{
-                populationShareF:int{49310000}
+                populationShareF:int{49300000}
             }
             territoryF:intvector{
                 57600000,
                 49500000,
-                54157630,
+                54158540,
             }
             wls{
                 populationShareF:int{49600000}
@@ -33488,7 +32614,7 @@
         WS{
             en{
                 officialStatus{"official"}
-                populationShareF:int{48220000}
+                populationShareF:int{48210000}
             }
             sm{
                 officialStatus{"official"}
@@ -33497,7 +32623,7 @@
             territoryF:intvector{
                 59113700,
                 49988000,
-                55201316,
+                55203774,
             }
         }
         XK{
@@ -33519,7 +32645,7 @@
             territoryF:intvector{
                 60196000,
                 49919000,
-                56190759,
+                56193277,
             }
         }
         YE{
@@ -33533,7 +32659,7 @@
             territoryF:intvector{
                 60736300,
                 49653000,
-                57286672,
+                57298844,
             }
         }
         YT{
@@ -33598,7 +32724,7 @@
             territoryF:intvector{
                 61767200,
                 49930000,
-                57553802,
+                57564636,
             }
             tn{
                 literacyShareF:int{49500000}
@@ -33643,7 +32769,7 @@
             territoryF:intvector{
                 60689300,
                 49614000,
-                57164451,
+                57174266,
             }
         }
         ZW{
@@ -33674,7 +32800,7 @@
             territoryF:intvector{
                 60342700,
                 49836000,
-                57140304,
+                57145463,
             }
             tn{
                 populationShareF:int{47220000}
@@ -35765,525 +34891,6 @@
             preferred{"H"}
         }
     }
-    unitPreferenceData{
-        001{
-            area-default{
-                "square-kilometer",
-                "hectare",
-                "square-meter",
-                "square-centimeter",
-            }
-            area-geograph{"square-kilometer"}
-            area-land{"hectare"}
-            concentration-default{"item-per-cubic-meter"}
-            consumption-default{"liter-per-100-kilometer"}
-            consumption-inverse-default{"kilometer-per-centiliter"}
-            consumption-inverse-vehicle-fuel{"kilometer-per-centiliter"}
-            consumption-vehicle-fuel{"liter-per-100-kilometer"}
-            duration-default{
-                "day",
-                "hour",
-                "minute",
-                "second",
-                "millisecond",
-                "microsecond",
-                "nanosecond",
-            }
-            duration-media{
-                "minute-and-second",
-                "second",
-            }
-            energy-default{"kilowatt-hour"}
-            energy-food{"kilocalorie"}
-            length-default{
-                "kilometer",
-                "meter",
-                "centimeter",
-            }
-            length-person{"centimeter"}
-            length-person-height{"centimeter"}
-            length-rainfall{"millimeter"}
-            length-road{"meter"}
-            length-snowfall{"centimeter"}
-            length-vehicle{"meter"}
-            length-visiblty{"meter"}
-            mass-default{
-                "metric-ton",
-                "kilogram",
-                "gram",
-                "milligram",
-                "microgram",
-            }
-            mass-density-blood-glucose{"milligram-per-deciliter"}
-            mass-density-default{"kilogram-per-cubic-meter"}
-            mass-person{
-                "kilogram",
-                "gram",
-            }
-            power-default{
-                "gigawatt",
-                "megawatt",
-                "kilowatt",
-                "watt",
-                "milliwatt",
-            }
-            power-engine{"kilowatt"}
-            pressure-baromtrc{"hectopascal"}
-            pressure-default{
-                "megapascal",
-                "pascal",
-            }
-            speed-default{"kilometer-per-hour"}
-            speed-wind{"kilometer-per-hour"}
-            temperature-default{"celsius"}
-            temperature-weather{"celsius"}
-            volume-default{
-                "cubic-meter",
-                "cubic-centimeter",
-            }
-            volume-fluid{
-                "liter",
-                "milliliter",
-            }
-            volume-oil{"barrel"}
-            volume-vehicle{"liter"}
-            year-duration-default{
-                "year",
-                "month",
-            }
-            year-duration-person-age{
-                "year-person-and-month-person",
-                "month-person",
-            }
-        }
-        AG{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        AI{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        AO{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        AT{
-            length-person-height{"meter-and-centimeter"}
-        }
-        AU{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        BA{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        BE{
-            length-person-height{"meter-and-centimeter"}
-        }
-        BG{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        BH{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        BM{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        BN{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        BR{
-            consumption-vehicle-fuel{"liter-per-kilometer"}
-            length-person-height{"meter-and-centimeter"}
-            length-rainfall{"centimeter"}
-            pressure-baromtrc{"millibar"}
-        }
-        BS{
-            temperature-weather{"fahrenheit"}
-        }
-        BW{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        BY{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        BZ{
-            temperature-weather{"fahrenheit"}
-        }
-        CA{
-            concentration-blood-glucose{"millimole-per-liter"}
-            consumption-inverse-vehicle-fuel{"mile-per-gallon-imperial"}
-            length-person{"inch"}
-            length-person-height{"inch"}
-        }
-        CH{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        CM{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        CN{
-            concentration-blood-glucose{"millimole-per-liter"}
-            length-person-height{"meter-and-centimeter"}
-        }
-        CZ{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        DE{
-            length-person-height{"meter-and-centimeter"}
-            length-visiblty{"meter"}
-        }
-        DK{
-            concentration-blood-glucose{"millimole-per-liter"}
-            length-person-height{"meter-and-centimeter"}
-        }
-        DM{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        DZ{
-            length-person-height{"meter-and-centimeter"}
-            mass-person{"kilogram-and-gram"}
-        }
-        EE{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        EG{
-            length-person-height{"meter-and-centimeter"}
-            mass-person{"kilogram-and-gram"}
-            pressure-baromtrc{"millibar"}
-        }
-        ES{
-            length-person-height{"meter-and-centimeter"}
-            mass-person{"kilogram-and-gram"}
-        }
-        FI{
-            concentration-blood-glucose{"millimole-per-liter"}
-            speed-wind{"meter-per-second"}
-        }
-        FJ{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        FR{
-            length-person-height{"meter-and-centimeter"}
-        }
-        GB{
-            area-default{
-                "square-mile",
-                "acre",
-                "square-foot",
-                "square-inch",
-            }
-            area-geograph{"square-mile"}
-            area-land{"acre"}
-            concentration-blood-glucose{"millimole-per-liter"}
-            consumption-inverse-vehicle-fuel{"mile-per-gallon-imperial"}
-            length-default{
-                "mile",
-                "foot",
-                "inch",
-            }
-            length-person{"inch"}
-            length-person-height{"inch"}
-            length-road{"yard"}
-            length-vehicle{"foot-and-inch"}
-            length-visiblty{
-                "mile",
-                "foot",
-            }
-            mass-default{
-                "ton",
-                "pound",
-                "ounce",
-            }
-            mass-person{
-                "stone-and-pound",
-                "pound-and-ounce",
-            }
-            power-engine{"horsepower"}
-            pressure-baromtrc{"millibar"}
-            pressure-default{"pound-force-per-square-inch"}
-            speed-default{"mile-per-hour"}
-            volume-default{
-                "cubic-foot",
-                "cubic-inch",
-            }
-            volume-fluid{
-                "gallon-imperial",
-                "fluid-ounce-imperial",
-            }
-        }
-        GD{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        HK{
-            concentration-blood-glucose{"millimole-per-liter"}
-            length-person-height{"meter-and-centimeter"}
-            mass-person{"pound-and-ounce"}
-        }
-        HR{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        HU{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        ID{
-            length-person-height{"meter-and-centimeter"}
-        }
-        IE{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        IL{
-            length-person-height{"meter-and-centimeter"}
-            pressure-baromtrc{"millibar"}
-        }
-        IM{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        IN{
-            length-person{"inch"}
-            length-person-height{"inch"}
-            pressure-baromtrc{"inch-ofhg"}
-        }
-        IS{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        IT{
-            consumption-vehicle-fuel{"liter-per-kilometer"}
-            length-person-height{"meter-and-centimeter"}
-        }
-        JO{
-            length-person-height{"meter-and-centimeter"}
-            mass-person{"kilogram-and-gram"}
-        }
-        JP{
-            consumption-vehicle-fuel{"liter-per-kilometer"}
-        }
-        KE{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        KN{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        KR{
-            consumption-vehicle-fuel{"liter-per-kilometer"}
-            speed-wind{"meter-per-second"}
-        }
-        KW{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        KY{
-            temperature-weather{"fahrenheit"}
-        }
-        KZ{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        LC{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        LI{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        LT{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        LU{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        LV{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        ME{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        MG{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        MK{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        MO{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        MS{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        MT{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        MU{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        MX{
-            consumption-vehicle-fuel{"liter-per-kilometer"}
-            length-person-height{"meter-and-centimeter"}
-            length-vehicle{"meter-and-centimeter"}
-            pressure-baromtrc{"millimeter-ofhg"}
-        }
-        MY{
-            concentration-blood-glucose{"millimole-per-liter"}
-            consumption-vehicle-fuel{"liter-per-kilometer"}
-            length-person-height{"meter-and-centimeter"}
-        }
-        MZ{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        NA{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        NL{
-            concentration-blood-glucose{"millimole-per-liter"}
-            consumption-vehicle-fuel{"liter-per-kilometer"}
-            length-person-height{"meter-and-centimeter"}
-            length-visiblty{"meter"}
-        }
-        NO{
-            concentration-blood-glucose{"millimole-per-liter"}
-            length-person-height{"meter-and-centimeter"}
-            speed-wind{"meter-per-second"}
-        }
-        NZ{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        OM{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        PG{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        PL{
-            length-person-height{"meter-and-centimeter"}
-            speed-wind{"meter-per-second"}
-        }
-        PR{
-            temperature-weather{"fahrenheit"}
-        }
-        PT{
-            length-person-height{"meter-and-centimeter"}
-        }
-        PW{
-            temperature-weather{"fahrenheit"}
-        }
-        RS{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        RU{
-            concentration-blood-glucose{"millimole-per-liter"}
-            length-person-height{"meter-and-centimeter"}
-            pressure-baromtrc{"millimeter-ofhg"}
-            speed-wind{"meter-per-second"}
-        }
-        SA{
-            length-person-height{"meter-and-centimeter"}
-            mass-person{"kilogram-and-gram"}
-        }
-        SE{
-            concentration-blood-glucose{"millimole-per-liter"}
-            length-person-height{"meter-and-centimeter"}
-            length-road{
-                "mile-scandinavian",
-                "kilometer",
-            }
-            speed-wind{"meter-per-second"}
-        }
-        SG{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        SI{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        SK{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        TC{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        TH{
-            consumption-vehicle-fuel{"liter-per-kilometer"}
-            pressure-baromtrc{"millibar"}
-        }
-        TO{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        TR{
-            consumption-vehicle-fuel{"liter-per-kilometer"}
-            length-person-height{"meter-and-centimeter"}
-        }
-        UA{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        UG{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        US{
-            area-default{
-                "square-mile",
-                "acre",
-                "square-foot",
-                "square-inch",
-            }
-            area-geograph{"square-mile"}
-            area-land{"acre"}
-            consumption-inverse-vehicle-fuel{"mile-per-gallon"}
-            energy-food{"foodcalorie"}
-            length-default{
-                "mile",
-                "foot",
-                "inch",
-            }
-            length-person{"inch"}
-            length-person-height{"inch"}
-            length-rainfall{"inch"}
-            length-snowfall{"inch"}
-            length-vehicle{"foot-and-inch"}
-            length-visiblty{
-                "mile",
-                "foot",
-            }
-            mass-default{
-                "ton",
-                "pound",
-                "ounce",
-            }
-            mass-person{
-                "pound",
-                "pound-and-ounce",
-            }
-            power-engine{"horsepower"}
-            pressure-baromtrc{"inch-ofhg"}
-            pressure-default{"pound-force-per-square-inch"}
-            speed-default{"mile-per-hour"}
-            speed-wind{"mile-per-hour"}
-            temperature-default{"fahrenheit"}
-            temperature-weather{"fahrenheit"}
-            volume-default{
-                "cubic-foot",
-                "cubic-inch",
-            }
-            volume-fluid{
-                "gallon",
-                "quart",
-                "pint",
-                "cup",
-                "fluid-ounce",
-                "tablespoon",
-                "teaspoon",
-            }
-            volume-vehicle{"gallon"}
-        }
-        VC{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        VG{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        VN{
-            concentration-blood-glucose{"millimole-per-liter"}
-            length-person-height{"meter-and-centimeter"}
-        }
-        VU{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-        ZA{
-            concentration-blood-glucose{"millimole-per-liter"}
-        }
-    }
     weekData{
         001:intvector{
             2,
diff --git a/icu4c/source/data/misc/timezoneTypes.txt b/icu4c/source/data/misc/timezoneTypes.txt
index 5ec2788..8a08adf 100644
--- a/icu4c/source/data/misc/timezoneTypes.txt
+++ b/icu4c/source/data/misc/timezoneTypes.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 timezoneTypes:table(nofallback){
     bcpTypeAlias{
         tz{
diff --git a/icu4c/source/data/misc/units.txt b/icu4c/source/data/misc/units.txt
new file mode 100644
index 0000000..a245f7c
--- /dev/null
+++ b/icu4c/source/data/misc/units.txt
@@ -0,0 +1,1947 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+units:table(nofallback){
+    cldrVersion{"38.1"}
+    convertUnits{
+        100-kilometer{
+            factor{"100000"}
+            target{"meter"}
+        }
+        acre{
+            factor{"ft2_to_m2 * 43560"}
+            target{"square-meter"}
+        }
+        ampere{
+            factor{"1"}
+            target{"ampere"}
+        }
+        arc-minute{
+            factor{"1/360*60"}
+            target{"revolution"}
+        }
+        arc-second{
+            factor{"1/360*60*60"}
+            target{"revolution"}
+        }
+        astronomical-unit{
+            factor{"149597900000"}
+            target{"meter"}
+        }
+        atmosphere{
+            factor{"101325"}
+            target{"kilogram-per-meter-square-second"}
+        }
+        bar{
+            factor{"100000"}
+            target{"kilogram-per-meter-square-second"}
+        }
+        barrel{
+            factor{"42*gal_to_m3"}
+            target{"cubic-meter"}
+        }
+        bit{
+            factor{"1"}
+            target{"bit"}
+        }
+        british-thermal-unit{
+            factor{"4.184*2267.96185/9"}
+            target{"kilogram-square-meter-per-square-second"}
+        }
+        bushel{
+            factor{"2150.42*in3_to_m3"}
+            target{"cubic-meter"}
+        }
+        byte{
+            factor{"8"}
+            target{"bit"}
+        }
+        calorie{
+            factor{"4.184"}
+            target{"kilogram-square-meter-per-square-second"}
+        }
+        candela{
+            factor{"1"}
+            target{"candela"}
+        }
+        carat{
+            factor{"0.0002"}
+            target{"kilogram"}
+        }
+        celsius{
+            factor{"1"}
+            offset{"273.15"}
+            target{"kelvin"}
+        }
+        century{
+            factor{"100"}
+            target{"year"}
+        }
+        cup{
+            factor{"gal_to_m3/16"}
+            target{"cubic-meter"}
+        }
+        cup-metric{
+            factor{"0.00025"}
+            target{"cubic-meter"}
+        }
+        dalton{
+            factor{"1.49241808560E-10"}
+            target{"kilogram-square-meter-per-square-second"}
+        }
+        day{
+            factor{"86400"}
+            target{"second"}
+        }
+        day-person{
+            factor{"86400"}
+            target{"second"}
+        }
+        decade{
+            factor{"10"}
+            target{"year"}
+        }
+        degree{
+            factor{"1/360"}
+            target{"revolution"}
+        }
+        dessert-spoon{
+            factor{"gal_to_m3/16*128"}
+            target{"cubic-meter"}
+        }
+        dessert-spoon-imperial{
+            factor{"gal_imp_to_m3/16*128"}
+            target{"cubic-meter"}
+        }
+        dot{
+            factor{"1"}
+            target{"pixel"}
+        }
+        dram{
+            factor{"gal_to_m3/128*8"}
+            target{"cubic-meter"}
+        }
+        drop{
+            factor{"gal_to_m3/128*576"}
+            target{"cubic-meter"}
+        }
+        dunam{
+            factor{"1000"}
+            target{"square-meter"}
+        }
+        earth-mass{
+            factor{"5.9722E+24"}
+            target{"kilogram"}
+        }
+        earth-radius{
+            factor{"6.3781E6"}
+            target{"meter"}
+        }
+        electronvolt{
+            factor{"1.602177E-19"}
+            target{"kilogram-square-meter-per-square-second"}
+        }
+        em{
+            factor{"1"}
+            target{"em"}
+        }
+        fahrenheit{
+            factor{"5/9"}
+            offset{"2298.35/9"}
+            target{"kelvin"}
+        }
+        fathom{
+            factor{"ft_to_m * 6"}
+            target{"meter"}
+        }
+        fluid-ounce{
+            factor{"gal_to_m3/128"}
+            target{"cubic-meter"}
+        }
+        fluid-ounce-imperial{
+            factor{"gal_imp_to_m3/160"}
+            target{"cubic-meter"}
+        }
+        foodcalorie{
+            factor{"4184"}
+            target{"kilogram-square-meter-per-square-second"}
+        }
+        foot{
+            factor{"ft_to_m"}
+            target{"meter"}
+        }
+        furlong{
+            factor{"ft_to_m*660"}
+            target{"meter"}
+        }
+        g-force{
+            factor{"gravity"}
+            target{"meter-per-square-second"}
+        }
+        gallon{
+            factor{"gal_to_m3"}
+            target{"cubic-meter"}
+        }
+        gallon-imperial{
+            factor{"gal_imp_to_m3"}
+            target{"cubic-meter"}
+        }
+        grain{
+            factor{"lb_to_kg/7000"}
+            target{"kilogram"}
+        }
+        gram{
+            factor{"0.001"}
+            target{"kilogram"}
+        }
+        hectare{
+            factor{"10000"}
+            target{"square-meter"}
+        }
+        hertz{
+            factor{"1"}
+            target{"revolution-per-second"}
+        }
+        horsepower{
+            factor{"ft_to_m * lb_to_kg * gravity * 550"}
+            target{"kilogram-square-meter-per-cubic-second"}
+        }
+        hour{
+            factor{"3600"}
+            target{"second"}
+        }
+        inch{
+            factor{"ft_to_m/12"}
+            target{"meter"}
+        }
+        item{
+            factor{"1"}
+            target{"item"}
+        }
+        jigger{
+            factor{"gal_to_m3*3/128*2"}
+            target{"cubic-meter"}
+        }
+        joule{
+            factor{"1"}
+            target{"kilogram-square-meter-per-square-second"}
+        }
+        karat{
+            factor{"1/24"}
+            target{"portion"}
+        }
+        kelvin{
+            factor{"1"}
+            target{"kelvin"}
+        }
+        kilogram{
+            factor{"1"}
+            target{"kilogram"}
+        }
+        knot{
+            factor{"1852/3600"}
+            target{"meter-per-second"}
+        }
+        light-year{
+            factor{"9460730000000000"}
+            target{"meter"}
+        }
+        liter{
+            factor{"0.001"}
+            target{"cubic-meter"}
+        }
+        lumen{
+            factor{"1"}
+            target{"candela-square-meter-per-square-meter"}
+        }
+        lux{
+            factor{"1"}
+            target{"candela-per-square-meter"}
+        }
+        meter{
+            factor{"1"}
+            target{"meter"}
+        }
+        metric-ton{
+            factor{"1000"}
+            target{"kilogram"}
+        }
+        mile{
+            factor{"ft_to_m*5280"}
+            target{"meter"}
+        }
+        mile-scandinavian{
+            factor{"10000"}
+            target{"meter"}
+        }
+        minute{
+            factor{"60"}
+            target{"second"}
+        }
+        mole{
+            factor{"6.02214076E+23"}
+            target{"item"}
+        }
+        month{
+            factor{"1/12"}
+            target{"year"}
+        }
+        month-person{
+            factor{"1/12"}
+            target{"year"}
+        }
+        nautical-mile{
+            factor{"1852"}
+            target{"meter"}
+        }
+        newton{
+            factor{"1"}
+            target{"kilogram-meter-per-square-second"}
+        }
+        ofhg{
+            factor{"13595.1*gravity"}
+            target{"kilogram-per-square-meter-square-second"}
+        }
+        ohm{
+            factor{"1"}
+            target{"kilogram-square-meter-per-cubic-second-square-ampere"}
+        }
+        ounce{
+            factor{"lb_to_kg/16"}
+            target{"kilogram"}
+        }
+        ounce-troy{
+            factor{"0.03110348"}
+            target{"kilogram"}
+        }
+        parsec{
+            factor{"30856780000000000"}
+            target{"meter"}
+        }
+        pascal{
+            factor{"1"}
+            target{"kilogram-per-meter-square-second"}
+        }
+        percent{
+            factor{"1/100"}
+            target{"portion"}
+        }
+        permille{
+            factor{"1/1000"}
+            target{"portion"}
+        }
+        permillion{
+            factor{"1/1000000"}
+            target{"portion"}
+        }
+        permyriad{
+            factor{"1/10000"}
+            target{"portion"}
+        }
+        pinch{
+            factor{"gal_to_m3/128*128"}
+            target{"cubic-meter"}
+        }
+        pint{
+            factor{"gal_to_m3/8"}
+            target{"cubic-meter"}
+        }
+        pint-metric{
+            factor{"0.0005"}
+            target{"cubic-meter"}
+        }
+        pixel{
+            factor{"1"}
+            target{"pixel"}
+        }
+        point{
+            factor{"ft_to_m/864"}
+            target{"meter"}
+        }
+        portion{
+            factor{"1"}
+            target{"portion"}
+        }
+        pound{
+            factor{"lb_to_kg"}
+            target{"kilogram"}
+        }
+        pound-force{
+            factor{"lb_to_kg * gravity"}
+            target{"kilogram-meter-per-square-second"}
+        }
+        quart{
+            factor{"gal_to_m3/4"}
+            target{"cubic-meter"}
+        }
+        quart-imperial{
+            factor{"gal_imp_to_m3/4"}
+            target{"cubic-meter"}
+        }
+        radian{
+            factor{"1/2*PI"}
+            target{"revolution"}
+        }
+        revolution{
+            factor{"1"}
+            target{"revolution"}
+        }
+        second{
+            factor{"1"}
+            target{"second"}
+        }
+        solar-luminosity{
+            factor{"3.828E+26"}
+            target{"kilogram-square-meter-per-cubic-second"}
+        }
+        solar-mass{
+            factor{"1.98847E+30"}
+            target{"kilogram"}
+        }
+        solar-radius{
+            factor{"695700000"}
+            target{"meter"}
+        }
+        stone{
+            factor{"lb_to_kg*14"}
+            target{"kilogram"}
+        }
+        tablespoon{
+            factor{"gal_to_m3/256"}
+            target{"cubic-meter"}
+        }
+        teaspoon{
+            factor{"gal_to_m3/16*48"}
+            target{"cubic-meter"}
+        }
+        therm-us{
+            factor{"105480400"}
+            target{"kilogram-square-meter-per-square-second"}
+        }
+        ton{
+            factor{"lb_to_kg*2000"}
+            target{"kilogram"}
+        }
+        volt{
+            factor{"1"}
+            target{"kilogram-square-meter-per-cubic-second-ampere"}
+        }
+        watt{
+            factor{"1"}
+            target{"kilogram-square-meter-per-cubic-second"}
+        }
+        week{
+            factor{"604800"}
+            target{"second"}
+        }
+        week-person{
+            factor{"604800"}
+            target{"second"}
+        }
+        yard{
+            factor{"ft_to_m*3"}
+            target{"meter"}
+        }
+        year{
+            factor{"1"}
+            target{"year"}
+        }
+        year-person{
+            factor{"1"}
+            target{"year"}
+        }
+    }
+    unitConstants{
+        G{"6.67408E-11"}
+        PI{"411557987 / 131002976"}
+        ft2_to_m2{"ft_to_m*ft_to_m"}
+        ft3_to_m3{"ft_to_m*ft_to_m*ft_to_m"}
+        ft_to_m{"0.3048"}
+        gal_imp_to_m3{"0.00454609"}
+        gal_to_m3{"231*in3_to_m3"}
+        gravity{"9.80665"}
+        in3_to_m3{"ft3_to_m3/12*12*12"}
+        lb_to_kg{"0.45359237"}
+    }
+    unitPreferenceData{
+        "area"{
+            "default"{
+                001{
+                    {
+                        unit{"square-kilometer"}
+                    }
+                    {
+                        unit{"hectare"}
+                    }
+                    {
+                        unit{"square-meter"}
+                    }
+                    {
+                        unit{"square-centimeter"}
+                    }
+                }
+                GB{
+                    {
+                        unit{"square-mile"}
+                    }
+                    {
+                        unit{"acre"}
+                    }
+                    {
+                        unit{"square-foot"}
+                    }
+                    {
+                        unit{"square-inch"}
+                    }
+                }
+                US{
+                    {
+                        unit{"square-mile"}
+                    }
+                    {
+                        unit{"acre"}
+                    }
+                    {
+                        unit{"square-foot"}
+                    }
+                    {
+                        unit{"square-inch"}
+                    }
+                }
+            }
+            "geograph"{
+                001{
+                    {
+                        unit{"square-kilometer"}
+                    }
+                }
+                GB{
+                    {
+                        unit{"square-mile"}
+                    }
+                }
+                US{
+                    {
+                        unit{"square-mile"}
+                    }
+                }
+            }
+            "land"{
+                001{
+                    {
+                        unit{"hectare"}
+                    }
+                }
+                GB{
+                    {
+                        unit{"acre"}
+                    }
+                }
+                US{
+                    {
+                        unit{"acre"}
+                    }
+                }
+            }
+        }
+        "concentration"{
+            "blood-glucose"{
+                AG{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                AI{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                AO{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                AU{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                BA{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                BG{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                BH{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                BM{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                BN{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                BW{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                BY{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                CA{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                CH{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                CM{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                CN{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                CZ{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                DK{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                DM{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                EE{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                FI{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                FJ{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                GB{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                GD{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                HK{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                HR{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                HU{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                IE{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                IM{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                IS{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                KE{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                KN{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                KW{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                KZ{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                LC{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                LI{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                LT{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                LU{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                LV{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                ME{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                MG{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                MK{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                MO{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                MS{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                MT{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                MU{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                MY{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                MZ{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                NA{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                NL{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                NO{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                NZ{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                OM{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                PG{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                RS{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                RU{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                SE{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                SG{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                SI{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                SK{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                TC{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                TO{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                UA{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                UG{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                VC{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                VG{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                VN{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                VU{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+                ZA{
+                    {
+                        unit{"millimole-per-liter"}
+                    }
+                }
+            }
+            "default"{
+                001{
+                    {
+                        unit{"item-per-cubic-meter"}
+                    }
+                }
+            }
+        }
+        "consumption"{
+            "default"{
+                001{
+                    {
+                        unit{"liter-per-100-kilometer"}
+                    }
+                }
+            }
+            "vehicle-fuel"{
+                001{
+                    {
+                        unit{"liter-per-100-kilometer"}
+                    }
+                }
+                BR{
+                    {
+                        unit{"liter-per-kilometer"}
+                    }
+                }
+                IT{
+                    {
+                        unit{"liter-per-kilometer"}
+                    }
+                }
+                JP{
+                    {
+                        unit{"liter-per-kilometer"}
+                    }
+                }
+                KR{
+                    {
+                        unit{"liter-per-kilometer"}
+                    }
+                }
+                MX{
+                    {
+                        unit{"liter-per-kilometer"}
+                    }
+                }
+                MY{
+                    {
+                        unit{"liter-per-kilometer"}
+                    }
+                }
+                NL{
+                    {
+                        unit{"liter-per-kilometer"}
+                    }
+                }
+                TH{
+                    {
+                        unit{"liter-per-kilometer"}
+                    }
+                }
+                TR{
+                    {
+                        unit{"liter-per-kilometer"}
+                    }
+                }
+            }
+        }
+        "consumption-inverse"{
+            "default"{
+                001{
+                    {
+                        unit{"kilometer-per-centiliter"}
+                    }
+                }
+            }
+            "vehicle-fuel"{
+                001{
+                    {
+                        unit{"kilometer-per-centiliter"}
+                    }
+                }
+                CA{
+                    {
+                        unit{"mile-per-gallon-imperial"}
+                    }
+                }
+                GB{
+                    {
+                        unit{"mile-per-gallon-imperial"}
+                    }
+                }
+                US{
+                    {
+                        unit{"mile-per-gallon"}
+                    }
+                }
+            }
+        }
+        "duration"{
+            "default"{
+                001{
+                    {
+                        unit{"day"}
+                    }
+                    {
+                        unit{"hour"}
+                    }
+                    {
+                        unit{"minute"}
+                    }
+                    {
+                        unit{"second"}
+                    }
+                    {
+                        unit{"millisecond"}
+                    }
+                    {
+                        unit{"microsecond"}
+                    }
+                    {
+                        unit{"nanosecond"}
+                    }
+                }
+            }
+            "media"{
+                001{
+                    {
+                        unit{"minute-and-second"}
+                    }
+                    {
+                        unit{"second"}
+                    }
+                }
+            }
+        }
+        "energy"{
+            "default"{
+                001{
+                    {
+                        unit{"kilowatt-hour"}
+                    }
+                }
+            }
+            "food"{
+                001{
+                    {
+                        unit{"kilocalorie"}
+                    }
+                }
+                US{
+                    {
+                        unit{"foodcalorie"}
+                    }
+                }
+            }
+        }
+        "length"{
+            "default"{
+                001{
+                    {
+                        unit{"kilometer"}
+                    }
+                    {
+                        unit{"meter"}
+                    }
+                    {
+                        unit{"centimeter"}
+                    }
+                }
+                GB{
+                    {
+                        unit{"mile"}
+                    }
+                    {
+                        unit{"foot"}
+                    }
+                    {
+                        unit{"inch"}
+                    }
+                }
+                US{
+                    {
+                        unit{"mile"}
+                    }
+                    {
+                        unit{"foot"}
+                    }
+                    {
+                        unit{"inch"}
+                    }
+                }
+            }
+            "focal-length"{
+                001{
+                    {
+                        unit{"millimeter"}
+                    }
+                }
+            }
+            "person"{
+                001{
+                    {
+                        unit{"centimeter"}
+                    }
+                }
+                CA{
+                    {
+                        unit{"inch"}
+                    }
+                }
+                GB{
+                    {
+                        unit{"inch"}
+                    }
+                }
+                IN{
+                    {
+                        unit{"inch"}
+                    }
+                }
+                US{
+                    {
+                        unit{"inch"}
+                    }
+                }
+            }
+            "person-height"{
+                001{
+                    {
+                        unit{"centimeter"}
+                    }
+                }
+                AT{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                BE{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                BR{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                CA{
+                    {
+                        geq{"3.0"}
+                        unit{"foot-and-inch"}
+                    }
+                    {
+                        unit{"inch"}
+                    }
+                }
+                CN{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                DE{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                DK{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                DZ{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                EG{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                ES{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                FR{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                GB{
+                    {
+                        geq{"3.0"}
+                        unit{"foot-and-inch"}
+                    }
+                    {
+                        unit{"inch"}
+                    }
+                }
+                HK{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                ID{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                IL{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                IN{
+                    {
+                        geq{"3.0"}
+                        unit{"foot-and-inch"}
+                    }
+                    {
+                        unit{"inch"}
+                    }
+                }
+                IT{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                JO{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                MX{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                MY{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                NL{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                NO{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                PL{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                PT{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                RU{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                SA{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                SE{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                TR{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                US{
+                    {
+                        geq{"3.0"}
+                        unit{"foot-and-inch"}
+                    }
+                    {
+                        unit{"inch"}
+                    }
+                }
+                VN{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+            }
+            "rainfall"{
+                001{
+                    {
+                        unit{"millimeter"}
+                    }
+                }
+                BR{
+                    {
+                        unit{"centimeter"}
+                    }
+                }
+                US{
+                    {
+                        unit{"inch"}
+                    }
+                }
+            }
+            "road"{
+                001{
+                    {
+                        geq{"0.9"}
+                        unit{"kilometer"}
+                    }
+                    {
+                        geq{"300.0"}
+                        skeleton{"precision-increment/50"}
+                        unit{"meter"}
+                    }
+                    {
+                        skeleton{"precision-increment/10"}
+                        unit{"meter"}
+                    }
+                    {
+                        unit{"meter"}
+                    }
+                }
+                GB{
+                    {
+                        geq{"0.5"}
+                        unit{"mile"}
+                    }
+                    {
+                        geq{"100.0"}
+                        skeleton{"precision-increment/50"}
+                        unit{"yard"}
+                    }
+                    {
+                        unit{"yard"}
+                    }
+                }
+                SE{
+                    {
+                        unit{"mile-scandinavian"}
+                    }
+                    {
+                        unit{"kilometer"}
+                    }
+                    {
+                        geq{"300.0"}
+                        skeleton{"precision-increment/50"}
+                        unit{"meter"}
+                    }
+                    {
+                        skeleton{"precision-increment/10"}
+                        unit{"meter"}
+                    }
+                }
+                US{
+                    {
+                        geq{"0.5"}
+                        unit{"mile"}
+                    }
+                    {
+                        geq{"100.0"}
+                        skeleton{"precision-increment/50"}
+                        unit{"foot"}
+                    }
+                    {
+                        skeleton{"precision-increment/10"}
+                        unit{"foot"}
+                    }
+                }
+            }
+            "snowfall"{
+                001{
+                    {
+                        unit{"centimeter"}
+                    }
+                }
+                US{
+                    {
+                        unit{"inch"}
+                    }
+                }
+            }
+            "vehicle"{
+                001{
+                    {
+                        unit{"meter"}
+                    }
+                }
+                GB{
+                    {
+                        unit{"foot-and-inch"}
+                    }
+                }
+                MX{
+                    {
+                        unit{"meter-and-centimeter"}
+                    }
+                }
+                US{
+                    {
+                        unit{"foot-and-inch"}
+                    }
+                }
+            }
+            "visiblty"{
+                001{
+                    {
+                        geq{"0.1"}
+                        unit{"kilometer"}
+                    }
+                    {
+                        unit{"meter"}
+                    }
+                }
+                DE{
+                    {
+                        unit{"meter"}
+                    }
+                }
+                GB{
+                    {
+                        unit{"mile"}
+                    }
+                    {
+                        unit{"foot"}
+                    }
+                }
+                NL{
+                    {
+                        unit{"meter"}
+                    }
+                }
+                US{
+                    {
+                        unit{"mile"}
+                    }
+                    {
+                        unit{"foot"}
+                    }
+                }
+            }
+        }
+        "mass"{
+            "default"{
+                001{
+                    {
+                        unit{"metric-ton"}
+                    }
+                    {
+                        unit{"kilogram"}
+                    }
+                    {
+                        unit{"gram"}
+                    }
+                    {
+                        unit{"milligram"}
+                    }
+                    {
+                        unit{"microgram"}
+                    }
+                }
+                GB{
+                    {
+                        unit{"ton"}
+                    }
+                    {
+                        unit{"pound"}
+                    }
+                    {
+                        unit{"ounce"}
+                    }
+                }
+                US{
+                    {
+                        unit{"ton"}
+                    }
+                    {
+                        unit{"pound"}
+                    }
+                    {
+                        unit{"ounce"}
+                    }
+                }
+            }
+            "person"{
+                001{
+                    {
+                        unit{"kilogram"}
+                    }
+                    {
+                        unit{"gram"}
+                    }
+                }
+                DZ{
+                    {
+                        unit{"kilogram-and-gram"}
+                    }
+                }
+                EG{
+                    {
+                        unit{"kilogram-and-gram"}
+                    }
+                }
+                ES{
+                    {
+                        unit{"kilogram-and-gram"}
+                    }
+                }
+                GB{
+                    {
+                        unit{"stone-and-pound"}
+                    }
+                    {
+                        unit{"pound-and-ounce"}
+                    }
+                }
+                HK{
+                    {
+                        unit{"pound-and-ounce"}
+                    }
+                }
+                JO{
+                    {
+                        unit{"kilogram-and-gram"}
+                    }
+                }
+                SA{
+                    {
+                        unit{"kilogram-and-gram"}
+                    }
+                }
+                US{
+                    {
+                        unit{"pound"}
+                    }
+                    {
+                        unit{"pound-and-ounce"}
+                    }
+                }
+            }
+        }
+        "mass-density"{
+            "blood-glucose"{
+                001{
+                    {
+                        unit{"milligram-per-deciliter"}
+                    }
+                }
+            }
+            "default"{
+                001{
+                    {
+                        unit{"kilogram-per-cubic-meter"}
+                    }
+                }
+            }
+        }
+        "power"{
+            "default"{
+                001{
+                    {
+                        unit{"gigawatt"}
+                    }
+                    {
+                        unit{"megawatt"}
+                    }
+                    {
+                        unit{"kilowatt"}
+                    }
+                    {
+                        unit{"watt"}
+                    }
+                    {
+                        unit{"milliwatt"}
+                    }
+                }
+            }
+            "engine"{
+                001{
+                    {
+                        unit{"kilowatt"}
+                    }
+                }
+                GB{
+                    {
+                        unit{"horsepower"}
+                    }
+                }
+                US{
+                    {
+                        unit{"horsepower"}
+                    }
+                }
+            }
+        }
+        "pressure"{
+            "baromtrc"{
+                001{
+                    {
+                        unit{"hectopascal"}
+                    }
+                }
+                BR{
+                    {
+                        unit{"millibar"}
+                    }
+                }
+                EG{
+                    {
+                        unit{"millibar"}
+                    }
+                }
+                GB{
+                    {
+                        unit{"millibar"}
+                    }
+                }
+                IL{
+                    {
+                        unit{"millibar"}
+                    }
+                }
+                IN{
+                    {
+                        unit{"inch-ofhg"}
+                    }
+                }
+                MX{
+                    {
+                        unit{"millimeter-ofhg"}
+                    }
+                }
+                RU{
+                    {
+                        unit{"millimeter-ofhg"}
+                    }
+                }
+                TH{
+                    {
+                        unit{"millibar"}
+                    }
+                }
+                US{
+                    {
+                        unit{"inch-ofhg"}
+                    }
+                }
+            }
+            "default"{
+                001{
+                    {
+                        unit{"megapascal"}
+                    }
+                    {
+                        unit{"pascal"}
+                    }
+                }
+                GB{
+                    {
+                        unit{"pound-force-per-square-inch"}
+                    }
+                }
+                US{
+                    {
+                        unit{"pound-force-per-square-inch"}
+                    }
+                }
+            }
+        }
+        "speed"{
+            "default"{
+                001{
+                    {
+                        unit{"kilometer-per-hour"}
+                    }
+                }
+                GB{
+                    {
+                        unit{"mile-per-hour"}
+                    }
+                }
+                US{
+                    {
+                        unit{"mile-per-hour"}
+                    }
+                }
+            }
+            "wind"{
+                001{
+                    {
+                        unit{"kilometer-per-hour"}
+                    }
+                }
+                FI{
+                    {
+                        unit{"meter-per-second"}
+                    }
+                }
+                KR{
+                    {
+                        unit{"meter-per-second"}
+                    }
+                }
+                NO{
+                    {
+                        unit{"meter-per-second"}
+                    }
+                }
+                PL{
+                    {
+                        unit{"meter-per-second"}
+                    }
+                }
+                RU{
+                    {
+                        unit{"meter-per-second"}
+                    }
+                }
+                SE{
+                    {
+                        unit{"meter-per-second"}
+                    }
+                }
+                US{
+                    {
+                        unit{"mile-per-hour"}
+                    }
+                }
+            }
+        }
+        "temperature"{
+            "default"{
+                001{
+                    {
+                        unit{"celsius"}
+                    }
+                }
+                US{
+                    {
+                        unit{"fahrenheit"}
+                    }
+                }
+            }
+            "weather"{
+                001{
+                    {
+                        unit{"celsius"}
+                    }
+                }
+                BS{
+                    {
+                        unit{"fahrenheit"}
+                    }
+                }
+                BZ{
+                    {
+                        unit{"fahrenheit"}
+                    }
+                }
+                KY{
+                    {
+                        unit{"fahrenheit"}
+                    }
+                }
+                PR{
+                    {
+                        unit{"fahrenheit"}
+                    }
+                }
+                PW{
+                    {
+                        unit{"fahrenheit"}
+                    }
+                }
+                US{
+                    {
+                        unit{"fahrenheit"}
+                    }
+                }
+            }
+        }
+        "volume"{
+            "default"{
+                001{
+                    {
+                        unit{"cubic-meter"}
+                    }
+                    {
+                        unit{"cubic-centimeter"}
+                    }
+                }
+                GB{
+                    {
+                        unit{"cubic-foot"}
+                    }
+                    {
+                        unit{"cubic-inch"}
+                    }
+                }
+                US{
+                    {
+                        unit{"cubic-foot"}
+                    }
+                    {
+                        unit{"cubic-inch"}
+                    }
+                }
+            }
+            "fluid"{
+                001{
+                    {
+                        unit{"liter"}
+                    }
+                    {
+                        unit{"milliliter"}
+                    }
+                }
+                GB{
+                    {
+                        unit{"gallon-imperial"}
+                    }
+                    {
+                        unit{"fluid-ounce-imperial"}
+                    }
+                }
+                US{
+                    {
+                        unit{"gallon"}
+                    }
+                    {
+                        unit{"quart"}
+                    }
+                    {
+                        unit{"pint"}
+                    }
+                    {
+                        unit{"cup"}
+                    }
+                    {
+                        unit{"fluid-ounce"}
+                    }
+                    {
+                        unit{"tablespoon"}
+                    }
+                    {
+                        unit{"teaspoon"}
+                    }
+                }
+            }
+            "oil"{
+                001{
+                    {
+                        unit{"barrel"}
+                    }
+                }
+            }
+            "vehicle"{
+                001{
+                    {
+                        unit{"liter"}
+                    }
+                }
+                US{
+                    {
+                        unit{"gallon"}
+                    }
+                }
+            }
+        }
+        "year-duration"{
+            "default"{
+                001{
+                    {
+                        unit{"year"}
+                    }
+                    {
+                        unit{"month"}
+                    }
+                }
+            }
+            "person-age"{
+                001{
+                    {
+                        geq{"2.5"}
+                        unit{"year-person"}
+                    }
+                    {
+                        unit{"year-person-and-month-person"}
+                    }
+                    {
+                        unit{"month-person"}
+                    }
+                }
+            }
+        }
+    }
+    unitQuantities{
+        ampere{"electric-current"}
+        ampere-per-meter{"magnetic-field-strength"}
+        ampere-per-square-meter{"current-density"}
+        bit{"digital"}
+        candela{"luminous-intensity"}
+        candela-per-square-meter{"illuminance"}
+        candela-square-meter-per-square-meter{"luminous-flux"}
+        cubic-meter{"volume"}
+        cubic-meter-per-kilogram{"specific-volume"}
+        cubic-meter-per-meter{"consumption"}
+        cubic-second-square-ampere-per-kilogram-square-meter{"electric-conductance"}
+        em{"typewidth"}
+        item{"substance-amount"}
+        item-per-cubic-meter{"concentration"}
+        kelvin{"temperature"}
+        kilogram{"mass"}
+        kilogram-meter-per-meter-square-second{"torque"}
+        kilogram-meter-per-square-second{"force"}
+        kilogram-per-cubic-meter{"mass-density"}
+        kilogram-per-kilogram{"mass-fraction"}
+        kilogram-per-meter-square-second{"pressure"}
+        kilogram-per-square-meter-square-second{"pressure-per-length"}
+        kilogram-per-square-second-ampere{"magnetic-induction"}
+        kilogram-square-meter-per-cubic-second{"power"}
+        kilogram-square-meter-per-cubic-second-ampere{"voltage"}
+        kilogram-square-meter-per-cubic-second-square-ampere{"electric-resistance"}
+        kilogram-square-meter-per-square-second{"energy"}
+        kilogram-square-meter-per-square-second-ampere{"magnetic-flux"}
+        kilogram-square-meter-per-square-second-square-ampere{"electric-inductance"}
+        meter{"length"}
+        meter-per-second{"speed"}
+        meter-per-square-second{"acceleration"}
+        pixel{"graphics"}
+        pixel-per-meter{"resolution"}
+        portion{"portion"}
+        pow4-second-square-ampere-per-kilogram-square-meter{"electric-capacitance"}
+        revolution{"angle"}
+        revolution-per-meter{"wave-number"}
+        revolution-per-second{"frequency"}
+        second{"duration"}
+        second-ampere{"electric-charge"}
+        square-meter{"area"}
+        square-meter-per-square-second{"dose"}
+        square-revolution{"solid-angle"}
+        year{"year-duration"}
+    }
+}
diff --git a/icu4c/source/data/misc/windowsZones.txt b/icu4c/source/data/misc/windowsZones.txt
index 96af598..4fe43fd 100644
--- a/icu4c/source/data/misc/windowsZones.txt
+++ b/icu4c/source/data/misc/windowsZones.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 windowsZones:table(nofallback){
     mapTimezones{
         "AUS Central Standard Time"{
diff --git a/icu4c/source/data/misc/zoneinfo64.txt b/icu4c/source/data/misc/zoneinfo64.txt
index 402c535..ac9bb09 100644
--- a/icu4c/source/data/misc/zoneinfo64.txt
+++ b/icu4c/source/data/misc/zoneinfo64.txt
@@ -1,12 +1,12 @@
 //---------------------------------------------------------
 // Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 //---------------------------------------------------------
 // Build tool:  tz2icu
-// Build date:  Tue Jan 12 16:41:20 2021
+// Build date:  Thu Jan 21 17:59:57 2021
 // tz database: ftp://ftp.iana.org/tz/
 // tz version:  2020f
-// ICU version: 67.1
+// ICU version: 68.2
 //---------------------------------------------------------
 // >> !!! >>   THIS IS A MACHINE-GENERATED FILE   << !!! <<
 // >> !!! >>>            DO NOT EDIT             <<< !!! <<
diff --git a/icu4c/source/data/rbnf/LOCALE_DEPS.json b/icu4c/source/data/rbnf/LOCALE_DEPS.json
index 55eca8a..fff38f7 100644
--- a/icu4c/source/data/rbnf/LOCALE_DEPS.json
+++ b/icu4c/source/data/rbnf/LOCALE_DEPS.json
@@ -1,8 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 
 {
-    "cldrVersion": "37",
+    "cldrVersion": "38.1",
     "aliases": {
         "ars": "ar_SA",
         "in": "id",
diff --git a/icu4c/source/data/rbnf/af.txt b/icu4c/source/data/rbnf/af.txt
index 3ddd28b..41b0e58 100644
--- a/icu4c/source/data/rbnf/af.txt
+++ b/icu4c/source/data/rbnf/af.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 af{
     RBNFRules{
         OrdinalRules{
@@ -89,5 +90,4 @@
             "1000000000000000000: =#,##0=.;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/ak.txt b/icu4c/source/data/rbnf/ak.txt
index bbd2e25..9e540ab 100644
--- a/icu4c/source/data/rbnf/ak.txt
+++ b/icu4c/source/data/rbnf/ak.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ak{
     RBNFRules{
         SpelloutRules{
@@ -57,5 +58,4 @@
             "2: a-\u025B-t\u0254-so-=%spellout-cardinal=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/am.txt b/icu4c/source/data/rbnf/am.txt
index d853cf4..d686081 100644
--- a/icu4c/source/data/rbnf/am.txt
+++ b/icu4c/source/data/rbnf/am.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 am{
     RBNFRules{
         OrdinalRules{
@@ -47,5 +48,4 @@
             "0: =%spellout-numbering=\u129B;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/ar.txt b/icu4c/source/data/rbnf/ar.txt
index e86e8ea..add3979 100644
--- a/icu4c/source/data/rbnf/ar.txt
+++ b/icu4c/source/data/rbnf/ar.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar{
     RBNFRules{
         OrdinalRules{
@@ -281,5 +282,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/ar_SA.txt b/icu4c/source/data/rbnf/ar_SA.txt
index d65944b..a848e8b 100644
--- a/icu4c/source/data/rbnf/ar_SA.txt
+++ b/icu4c/source/data/rbnf/ar_SA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/rbnf/ars.txt b/icu4c/source/data/rbnf/ars.txt
index 1f49ca1..92183f5 100644
--- a/icu4c/source/data/rbnf/ars.txt
+++ b/icu4c/source/data/rbnf/ars.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ars{
     "%%ALIAS"{"ar_SA"}
 }
diff --git a/icu4c/source/data/rbnf/az.txt b/icu4c/source/data/rbnf/az.txt
index f4dec6a..6828a8f 100644
--- a/icu4c/source/data/rbnf/az.txt
+++ b/icu4c/source/data/rbnf/az.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az{
     RBNFRules{
         OrdinalRules{
@@ -90,5 +91,4 @@
             "1000000000000000000: =#,##0='inci;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/be.txt b/icu4c/source/data/rbnf/be.txt
index 0475508..ab48fb9 100644
--- a/icu4c/source/data/rbnf/be.txt
+++ b/icu4c/source/data/rbnf/be.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 be{
     RBNFRules{
         SpelloutRules{
@@ -394,5 +395,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/bg.txt b/icu4c/source/data/rbnf/bg.txt
index f3a129d..7a73e62 100644
--- a/icu4c/source/data/rbnf/bg.txt
+++ b/icu4c/source/data/rbnf/bg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bg{
     RBNFRules{
         SpelloutRules{
@@ -98,5 +99,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/bs.txt b/icu4c/source/data/rbnf/bs.txt
index 115a6ff..6cad7df 100644
--- a/icu4c/source/data/rbnf/bs.txt
+++ b/icu4c/source/data/rbnf/bs.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs{
     RBNFRules{
         SpelloutRules{
@@ -116,5 +117,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/ca.txt b/icu4c/source/data/rbnf/ca.txt
index fbe9c3f..1feabb4 100644
--- a/icu4c/source/data/rbnf/ca.txt
+++ b/icu4c/source/data/rbnf/ca.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ca{
     RBNFRules{
         OrdinalRules{
@@ -255,5 +256,4 @@
             "1000000000000000000: =#,##0=ena;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/ccp.txt b/icu4c/source/data/rbnf/ccp.txt
index 644a4d8..4a1c4df 100644
--- a/icu4c/source/data/rbnf/ccp.txt
+++ b/icu4c/source/data/rbnf/ccp.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ccp{
     RBNFRules{
         SpelloutRules{
@@ -51,5 +52,4 @@
             "0: =%spellout-numbering= \U0001111B\U00011133\U00011106\U00011118\U00011133\U00011120\U0001112C;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/chr.txt b/icu4c/source/data/rbnf/chr.txt
index 52ca1e4..15e9ac9 100644
--- a/icu4c/source/data/rbnf/chr.txt
+++ b/icu4c/source/data/rbnf/chr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 chr{
     RBNFRules{
         SpelloutRules{
@@ -53,5 +54,4 @@
             "1: ' =%spellout-numbering=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/cs.txt b/icu4c/source/data/rbnf/cs.txt
index b04fa08..6206cda 100644
--- a/icu4c/source/data/rbnf/cs.txt
+++ b/icu4c/source/data/rbnf/cs.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cs{
     RBNFRules{
         SpelloutRules{
@@ -125,5 +126,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/cy.txt b/icu4c/source/data/rbnf/cy.txt
index 8eb1809..afbd9d5 100644
--- a/icu4c/source/data/rbnf/cy.txt
+++ b/icu4c/source/data/rbnf/cy.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cy{
     RBNFRules{
         SpelloutRules{
@@ -104,5 +105,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/da.txt b/icu4c/source/data/rbnf/da.txt
index 439a8b0..31ed3aa 100644
--- a/icu4c/source/data/rbnf/da.txt
+++ b/icu4c/source/data/rbnf/da.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 da{
     RBNFRules{
         SpelloutRules{
@@ -168,5 +169,4 @@
             "1: er =%spellout-ordinal-neuter=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/de.txt b/icu4c/source/data/rbnf/de.txt
index 8b404bf..ea73a39 100644
--- a/icu4c/source/data/rbnf/de.txt
+++ b/icu4c/source/data/rbnf/de.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de{
     RBNFRules{
         SpelloutRules{
@@ -182,5 +183,4 @@
             "0: =%spellout-ordinal=s;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/de_CH.txt b/icu4c/source/data/rbnf/de_CH.txt
index 919ada3..187418a 100644
--- a/icu4c/source/data/rbnf/de_CH.txt
+++ b/icu4c/source/data/rbnf/de_CH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de_CH{
     RBNFRules{
         SpelloutRules{
@@ -180,5 +181,4 @@
             "0: =%spellout-ordinal=s;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/ee.txt b/icu4c/source/data/rbnf/ee.txt
index 2999d3e..a5a662c 100644
--- a/icu4c/source/data/rbnf/ee.txt
+++ b/icu4c/source/data/rbnf/ee.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ee{
     RBNFRules{
         OrdinalRules{
@@ -83,5 +84,4 @@
             "2: =%spellout-cardinal=lia;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/el.txt b/icu4c/source/data/rbnf/el.txt
index a3014e8..244aeab 100644
--- a/icu4c/source/data/rbnf/el.txt
+++ b/icu4c/source/data/rbnf/el.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 el{
     RBNFRules{
         SpelloutRules{
@@ -294,5 +295,4 @@
             "1000000000000000000: =#,##0=.;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/en.txt b/icu4c/source/data/rbnf/en.txt
index 1d6536a..77f54e2 100644
--- a/icu4c/source/data/rbnf/en.txt
+++ b/icu4c/source/data/rbnf/en.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en{
     RBNFRules{
         DurationRules{
@@ -206,5 +207,4 @@
             "1000000000000000000: =#,##0=.;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/en_001.txt b/icu4c/source/data/rbnf/en_001.txt
index 25d5c2b..5588265 100644
--- a/icu4c/source/data/rbnf/en_001.txt
+++ b/icu4c/source/data/rbnf/en_001.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_001{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/en_IN.txt b/icu4c/source/data/rbnf/en_IN.txt
index 19f431f..77955aa 100644
--- a/icu4c/source/data/rbnf/en_IN.txt
+++ b/icu4c/source/data/rbnf/en_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IN{
     %%Parent{"en_001"}
     RBNFRules{
@@ -179,5 +180,4 @@
             "1000000000000000000: =#,##0=.;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/eo.txt b/icu4c/source/data/rbnf/eo.txt
index a22adf9..b93e391 100644
--- a/icu4c/source/data/rbnf/eo.txt
+++ b/icu4c/source/data/rbnf/eo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 eo{
     RBNFRules{
         SpelloutRules{
@@ -40,5 +41,4 @@
             "0: =%spellout-cardinal=a;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/es.txt b/icu4c/source/data/rbnf/es.txt
index 7de7c05..b1a7244 100644
--- a/icu4c/source/data/rbnf/es.txt
+++ b/icu4c/source/data/rbnf/es.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es{
     RBNFRules{
         OrdinalRules{
@@ -288,5 +289,4 @@
             "1000000000000000000: =#,##0=\u00AA;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/es_419.txt b/icu4c/source/data/rbnf/es_419.txt
index 023b371..3c84d7a 100644
--- a/icu4c/source/data/rbnf/es_419.txt
+++ b/icu4c/source/data/rbnf/es_419.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_419{
     RBNFRules{
         OrdinalRules{
@@ -24,5 +25,4 @@
             "0: =%digits-ordinal-masculine=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/es_DO.txt b/icu4c/source/data/rbnf/es_DO.txt
index f1713d4..b5f7810 100644
--- a/icu4c/source/data/rbnf/es_DO.txt
+++ b/icu4c/source/data/rbnf/es_DO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_DO{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/es_GT.txt b/icu4c/source/data/rbnf/es_GT.txt
index 3b1fece..76889af 100644
--- a/icu4c/source/data/rbnf/es_GT.txt
+++ b/icu4c/source/data/rbnf/es_GT.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_GT{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/es_HN.txt b/icu4c/source/data/rbnf/es_HN.txt
index cd727c1..4446521 100644
--- a/icu4c/source/data/rbnf/es_HN.txt
+++ b/icu4c/source/data/rbnf/es_HN.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_HN{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/es_MX.txt b/icu4c/source/data/rbnf/es_MX.txt
index 27b775c..0d5004f 100644
--- a/icu4c/source/data/rbnf/es_MX.txt
+++ b/icu4c/source/data/rbnf/es_MX.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_MX{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/es_NI.txt b/icu4c/source/data/rbnf/es_NI.txt
index e711c11..a58e4ec 100644
--- a/icu4c/source/data/rbnf/es_NI.txt
+++ b/icu4c/source/data/rbnf/es_NI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_NI{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/es_PA.txt b/icu4c/source/data/rbnf/es_PA.txt
index aa48114..248e100 100644
--- a/icu4c/source/data/rbnf/es_PA.txt
+++ b/icu4c/source/data/rbnf/es_PA.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PA{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/es_PR.txt b/icu4c/source/data/rbnf/es_PR.txt
index d5753df..b7a1b11 100644
--- a/icu4c/source/data/rbnf/es_PR.txt
+++ b/icu4c/source/data/rbnf/es_PR.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PR{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/es_SV.txt b/icu4c/source/data/rbnf/es_SV.txt
index 426c56d..b4ed595 100644
--- a/icu4c/source/data/rbnf/es_SV.txt
+++ b/icu4c/source/data/rbnf/es_SV.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_SV{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/es_US.txt b/icu4c/source/data/rbnf/es_US.txt
index 4f97570..bcb9f38 100644
--- a/icu4c/source/data/rbnf/es_US.txt
+++ b/icu4c/source/data/rbnf/es_US.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_US{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/et.txt b/icu4c/source/data/rbnf/et.txt
index 1d54535..99a916b 100644
--- a/icu4c/source/data/rbnf/et.txt
+++ b/icu4c/source/data/rbnf/et.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 et{
     RBNFRules{
         SpelloutRules{
@@ -40,5 +41,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/fa.txt b/icu4c/source/data/rbnf/fa.txt
index 5d8044a..8b9fa93 100644
--- a/icu4c/source/data/rbnf/fa.txt
+++ b/icu4c/source/data/rbnf/fa.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fa{
     RBNFRules{
         SpelloutRules{
@@ -55,5 +56,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/fa_AF.txt b/icu4c/source/data/rbnf/fa_AF.txt
index 42bf047..df50187 100644
--- a/icu4c/source/data/rbnf/fa_AF.txt
+++ b/icu4c/source/data/rbnf/fa_AF.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fa_AF{
     RBNFRules{
         SpelloutRules{
@@ -51,5 +52,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/ff.txt b/icu4c/source/data/rbnf/ff.txt
index 71d82c3..5b19f5f 100644
--- a/icu4c/source/data/rbnf/ff.txt
+++ b/icu4c/source/data/rbnf/ff.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff{
     RBNFRules{
         SpelloutRules{
@@ -85,5 +86,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/fi.txt b/icu4c/source/data/rbnf/fi.txt
index b637738..eb627a9 100644
--- a/icu4c/source/data/rbnf/fi.txt
+++ b/icu4c/source/data/rbnf/fi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fi{
     RBNFRules{
         SpelloutRules{
@@ -1271,5 +1272,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/fil.txt b/icu4c/source/data/rbnf/fil.txt
index 1de52b5..ca28ae7 100644
--- a/icu4c/source/data/rbnf/fil.txt
+++ b/icu4c/source/data/rbnf/fil.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fil{
     RBNFRules{
         OrdinalRules{
@@ -56,5 +57,4 @@
             "0: ika =%spellout-cardinal=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/fo.txt b/icu4c/source/data/rbnf/fo.txt
index 37f571b..813b1af 100644
--- a/icu4c/source/data/rbnf/fo.txt
+++ b/icu4c/source/data/rbnf/fo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fo{
     RBNFRules{
         SpelloutRules{
@@ -113,5 +114,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/fr.txt b/icu4c/source/data/rbnf/fr.txt
index c13a192..21f9bf9 100644
--- a/icu4c/source/data/rbnf/fr.txt
+++ b/icu4c/source/data/rbnf/fr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr{
     RBNFRules{
         OrdinalRules{
@@ -201,5 +202,4 @@
             "2: =%%spellout-ordinal=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/fr_BE.txt b/icu4c/source/data/rbnf/fr_BE.txt
index 151da30..ac5de38 100644
--- a/icu4c/source/data/rbnf/fr_BE.txt
+++ b/icu4c/source/data/rbnf/fr_BE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_BE{
     RBNFRules{
         SpelloutRules{
@@ -180,5 +181,4 @@
             "2: =%%spellout-ordinal=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/fr_CH.txt b/icu4c/source/data/rbnf/fr_CH.txt
index d9a111d..b145891 100644
--- a/icu4c/source/data/rbnf/fr_CH.txt
+++ b/icu4c/source/data/rbnf/fr_CH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_CH{
     RBNFRules{
         SpelloutRules{
@@ -181,5 +182,4 @@
             "2: =%%spellout-ordinal=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/ga.txt b/icu4c/source/data/rbnf/ga.txt
index 5946075..4db32cc 100644
--- a/icu4c/source/data/rbnf/ga.txt
+++ b/icu4c/source/data/rbnf/ga.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ga{
     RBNFRules{
         DurationRules{
@@ -242,5 +243,4 @@
             "20: =%%is= =%%quadrillions=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/he.txt b/icu4c/source/data/rbnf/he.txt
index 9b63b65..27ac132 100644
--- a/icu4c/source/data/rbnf/he.txt
+++ b/icu4c/source/data/rbnf/he.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 he{
     RBNFRules{
         SpelloutRules{
@@ -312,5 +313,4 @@
             "11: =%spellout-numbering=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/hi.txt b/icu4c/source/data/rbnf/hi.txt
index d34381c..0f8d736 100644
--- a/icu4c/source/data/rbnf/hi.txt
+++ b/icu4c/source/data/rbnf/hi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hi{
     RBNFRules{
         OrdinalRules{
@@ -176,5 +177,4 @@
             "7: =%spellout-cardinal=\u0935\u0940;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/hr.txt b/icu4c/source/data/rbnf/hr.txt
index 7f241c9..0e5d0e4 100644
--- a/icu4c/source/data/rbnf/hr.txt
+++ b/icu4c/source/data/rbnf/hr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hr{
     RBNFRules{
         SpelloutRules{
@@ -202,5 +203,4 @@
             "0: =%%spellout-ordinal-base=a;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/hu.txt b/icu4c/source/data/rbnf/hu.txt
index 3c53697..7774427 100644
--- a/icu4c/source/data/rbnf/hu.txt
+++ b/icu4c/source/data/rbnf/hu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hu{
     RBNFRules{
         SpelloutRules{
@@ -122,5 +123,4 @@
             "1000000000: =#,##0=.;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/hy.txt b/icu4c/source/data/rbnf/hy.txt
index b763e43..80abcdf 100644
--- a/icu4c/source/data/rbnf/hy.txt
+++ b/icu4c/source/data/rbnf/hy.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hy{
     RBNFRules{
         SpelloutRules{
@@ -39,5 +40,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/id.txt b/icu4c/source/data/rbnf/id.txt
index 2cc0aba..82e1d9f 100644
--- a/icu4c/source/data/rbnf/id.txt
+++ b/icu4c/source/data/rbnf/id.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 id{
     RBNFRules{
         OrdinalRules{
@@ -45,5 +46,4 @@
             "0: ke=%spellout-cardinal=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/in.txt b/icu4c/source/data/rbnf/in.txt
index 0233523..e2df169 100644
--- a/icu4c/source/data/rbnf/in.txt
+++ b/icu4c/source/data/rbnf/in.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 in{
     "%%ALIAS"{"id"}
 }
diff --git a/icu4c/source/data/rbnf/is.txt b/icu4c/source/data/rbnf/is.txt
index 4e3e3eb..1e476ec 100644
--- a/icu4c/source/data/rbnf/is.txt
+++ b/icu4c/source/data/rbnf/is.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 is{
     RBNFRules{
         SpelloutRules{
@@ -113,5 +114,4 @@
             "1000000000000000000: =#,##0.#=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/it.txt b/icu4c/source/data/rbnf/it.txt
index 812321b..2dd2243 100644
--- a/icu4c/source/data/rbnf/it.txt
+++ b/icu4c/source/data/rbnf/it.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 it{
     RBNFRules{
         OrdinalRules{
@@ -388,5 +389,4 @@
             "10: o\u00AD=%spellout-ordinal-feminine=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/iw.txt b/icu4c/source/data/rbnf/iw.txt
index d59865d..4aa2f62 100644
--- a/icu4c/source/data/rbnf/iw.txt
+++ b/icu4c/source/data/rbnf/iw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 iw{
     "%%ALIAS"{"he"}
 }
diff --git a/icu4c/source/data/rbnf/ja.txt b/icu4c/source/data/rbnf/ja.txt
index 6a14ed6..b0e8b94 100644
--- a/icu4c/source/data/rbnf/ja.txt
+++ b/icu4c/source/data/rbnf/ja.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ja{
     RBNFRules{
         OrdinalRules{
@@ -78,5 +79,4 @@
             "0: \u7B2C=%spellout-numbering=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/ka.txt b/icu4c/source/data/rbnf/ka.txt
index 2383d69..b5ef502 100644
--- a/icu4c/source/data/rbnf/ka.txt
+++ b/icu4c/source/data/rbnf/ka.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ka{
     RBNFRules{
         SpelloutRules{
@@ -63,5 +64,4 @@
             "1: ' =%spellout-cardinal=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/kl.txt b/icu4c/source/data/rbnf/kl.txt
index d5d355f..9ffde55 100644
--- a/icu4c/source/data/rbnf/kl.txt
+++ b/icu4c/source/data/rbnf/kl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kl{
     RBNFRules{
         SpelloutRules{
@@ -70,5 +71,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/km.txt b/icu4c/source/data/rbnf/km.txt
index 020826a..f613382 100644
--- a/icu4c/source/data/rbnf/km.txt
+++ b/icu4c/source/data/rbnf/km.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 km{
     RBNFRules{
         OrdinalRules{
@@ -47,5 +48,4 @@
             "0: \u1791\u17B8=%spellout-cardinal=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/ko.txt b/icu4c/source/data/rbnf/ko.txt
index 934e832..991022d 100644
--- a/icu4c/source/data/rbnf/ko.txt
+++ b/icu4c/source/data/rbnf/ko.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ko{
     RBNFRules{
         OrdinalRules{
@@ -246,5 +247,4 @@
             "3: =%%spellout-ordinal-native-smaller=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/ky.txt b/icu4c/source/data/rbnf/ky.txt
index f824363..fef5bda 100644
--- a/icu4c/source/data/rbnf/ky.txt
+++ b/icu4c/source/data/rbnf/ky.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ky{
     RBNFRules{
         OrdinalRules{
@@ -165,5 +166,4 @@
             "1000000000000: 0* <#,##0<<;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/lb.txt b/icu4c/source/data/rbnf/lb.txt
index 6574602..8c52930 100644
--- a/icu4c/source/data/rbnf/lb.txt
+++ b/icu4c/source/data/rbnf/lb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lb{
     RBNFRules{
         SpelloutRules{
@@ -201,5 +202,4 @@
             "1: ' =%spellout-ordinal-neuter=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/lo.txt b/icu4c/source/data/rbnf/lo.txt
index bb9c818..1331916 100644
--- a/icu4c/source/data/rbnf/lo.txt
+++ b/icu4c/source/data/rbnf/lo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lo{
     RBNFRules{
         OrdinalRules{
@@ -43,5 +44,4 @@
             "0: \u0E17\u0E35\u0E48\u200B=%spellout-cardinal=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/lrc.txt b/icu4c/source/data/rbnf/lrc.txt
index 5d6c7bd..17a23d9 100644
--- a/icu4c/source/data/rbnf/lrc.txt
+++ b/icu4c/source/data/rbnf/lrc.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lrc{
     RBNFRules{
         SpelloutRules{
@@ -55,5 +56,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/lt.txt b/icu4c/source/data/rbnf/lt.txt
index 675a653..36c8880 100644
--- a/icu4c/source/data/rbnf/lt.txt
+++ b/icu4c/source/data/rbnf/lt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lt{
     RBNFRules{
         SpelloutRules{
@@ -106,5 +107,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/lv.txt b/icu4c/source/data/rbnf/lv.txt
index 0510489..3c4f40c 100644
--- a/icu4c/source/data/rbnf/lv.txt
+++ b/icu4c/source/data/rbnf/lv.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lv{
     RBNFRules{
         SpelloutRules{
@@ -81,5 +82,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/mk.txt b/icu4c/source/data/rbnf/mk.txt
index a402cfe..a892bb2 100644
--- a/icu4c/source/data/rbnf/mk.txt
+++ b/icu4c/source/data/rbnf/mk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mk{
     RBNFRules{
         SpelloutRules{
@@ -94,5 +95,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/ms.txt b/icu4c/source/data/rbnf/ms.txt
index cab9d7d..e31ffce 100644
--- a/icu4c/source/data/rbnf/ms.txt
+++ b/icu4c/source/data/rbnf/ms.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ms{
     RBNFRules{
         OrdinalRules{
@@ -50,5 +51,4 @@
             "2: ke=%spellout-cardinal=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/mt.txt b/icu4c/source/data/rbnf/mt.txt
index dbdfd0f..e62e619 100644
--- a/icu4c/source/data/rbnf/mt.txt
+++ b/icu4c/source/data/rbnf/mt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mt{
     RBNFRules{
         DurationRules{
@@ -265,5 +266,4 @@
             "10: g\u0127axart;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/my.txt b/icu4c/source/data/rbnf/my.txt
index b82be18..63df891 100644
--- a/icu4c/source/data/rbnf/my.txt
+++ b/icu4c/source/data/rbnf/my.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 my{
     RBNFRules{
         SpelloutRules{
@@ -51,5 +52,4 @@
             "11: =%spellout-cardinal=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/nb.txt b/icu4c/source/data/rbnf/nb.txt
index 3a9c562..068f774 100644
--- a/icu4c/source/data/rbnf/nb.txt
+++ b/icu4c/source/data/rbnf/nb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nb{
     RBNFRules{
         SpelloutRules{
@@ -308,5 +309,4 @@
             "1: er =%spellout-ordinal-plural=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/nl.txt b/icu4c/source/data/rbnf/nl.txt
index 3985730..1487b14 100644
--- a/icu4c/source/data/rbnf/nl.txt
+++ b/icu4c/source/data/rbnf/nl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl{
     RBNFRules{
         OrdinalRules{
@@ -106,5 +107,4 @@
             "1000000000000000000: =#,##0=.;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/nn.txt b/icu4c/source/data/rbnf/nn.txt
index 00453ea..acb8040 100644
--- a/icu4c/source/data/rbnf/nn.txt
+++ b/icu4c/source/data/rbnf/nn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nn{
     RBNFRules{
         SpelloutRules{
@@ -67,5 +68,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/no.txt b/icu4c/source/data/rbnf/no.txt
index 097a923..474d0b2 100644
--- a/icu4c/source/data/rbnf/no.txt
+++ b/icu4c/source/data/rbnf/no.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no{
     "%%ALIAS"{"nb"}
 }
diff --git a/icu4c/source/data/rbnf/pl.txt b/icu4c/source/data/rbnf/pl.txt
index ca8a8ab..a0428ec 100644
--- a/icu4c/source/data/rbnf/pl.txt
+++ b/icu4c/source/data/rbnf/pl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pl{
     RBNFRules{
         SpelloutRules{
@@ -394,5 +395,4 @@
             "10: << >>;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/pt.txt b/icu4c/source/data/rbnf/pt.txt
index ab18470..7376138 100644
--- a/icu4c/source/data/rbnf/pt.txt
+++ b/icu4c/source/data/rbnf/pt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt{
     RBNFRules{
         OrdinalRules{
@@ -194,5 +195,4 @@
             "1000000000000000000: =#,##0=\u00AA;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/pt_PT.txt b/icu4c/source/data/rbnf/pt_PT.txt
index d9bc42f..ebc631b 100644
--- a/icu4c/source/data/rbnf/pt_PT.txt
+++ b/icu4c/source/data/rbnf/pt_PT.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_PT{
     RBNFRules{
         SpelloutRules{
@@ -184,5 +185,4 @@
             "1000000000000000000: =#,##0=\u00AA;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/qu.txt b/icu4c/source/data/rbnf/qu.txt
index aae34af..a384cb2 100644
--- a/icu4c/source/data/rbnf/qu.txt
+++ b/icu4c/source/data/rbnf/qu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 qu{
     RBNFRules{
         SpelloutRules{
@@ -42,5 +43,4 @@
             "0: =%spellout-cardinal=-\u00F1iqin;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/ro.txt b/icu4c/source/data/rbnf/ro.txt
index df350b9..07eef94 100644
--- a/icu4c/source/data/rbnf/ro.txt
+++ b/icu4c/source/data/rbnf/ro.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ro{
     RBNFRules{
         OrdinalRules{
@@ -87,5 +88,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/root.txt b/icu4c/source/data/rbnf/root.txt
index 0a81cae..186dc4c 100644
--- a/icu4c/source/data/rbnf/root.txt
+++ b/icu4c/source/data/rbnf/root.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 root{
     RBNFRules{
         DurationRules{
@@ -655,5 +656,5 @@
             "0: =#,##0.#=.;",
         }
     }
-    Version{"37"}
+    Version{"38.1"}
 }
diff --git a/icu4c/source/data/rbnf/ru.txt b/icu4c/source/data/rbnf/ru.txt
index bddf25c..9a349c8 100644
--- a/icu4c/source/data/rbnf/ru.txt
+++ b/icu4c/source/data/rbnf/ru.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru{
     RBNFRules{
         SpelloutRules{
@@ -1383,5 +1384,4 @@
             "21001: =0=.;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/se.txt b/icu4c/source/data/rbnf/se.txt
index caddfef..80848e6 100644
--- a/icu4c/source/data/rbnf/se.txt
+++ b/icu4c/source/data/rbnf/se.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 se{
     RBNFRules{
         SpelloutRules{
@@ -36,5 +37,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/sh.txt b/icu4c/source/data/rbnf/sh.txt
index 74b646a..83091b2 100644
--- a/icu4c/source/data/rbnf/sh.txt
+++ b/icu4c/source/data/rbnf/sh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh{
     "%%ALIAS"{"sr_Latn"}
 }
diff --git a/icu4c/source/data/rbnf/sk.txt b/icu4c/source/data/rbnf/sk.txt
index 038cbe3..5e19caf 100644
--- a/icu4c/source/data/rbnf/sk.txt
+++ b/icu4c/source/data/rbnf/sk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sk{
     RBNFRules{
         SpelloutRules{
@@ -80,5 +81,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/sl.txt b/icu4c/source/data/rbnf/sl.txt
index 8628ced..8549d8a 100644
--- a/icu4c/source/data/rbnf/sl.txt
+++ b/icu4c/source/data/rbnf/sl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sl{
     RBNFRules{
         SpelloutRules{
@@ -128,5 +129,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/sq.txt b/icu4c/source/data/rbnf/sq.txt
index 7067827..6284d93 100644
--- a/icu4c/source/data/rbnf/sq.txt
+++ b/icu4c/source/data/rbnf/sq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sq{
     RBNFRules{
         SpelloutRules{
@@ -63,5 +64,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/sr.txt b/icu4c/source/data/rbnf/sr.txt
index 81d7106..1e6e132 100644
--- a/icu4c/source/data/rbnf/sr.txt
+++ b/icu4c/source/data/rbnf/sr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr{
     RBNFRules{
         SpelloutRules{
@@ -147,5 +148,4 @@
             "400: <%spellout-cardinal-feminine<\u0441\u0442\u043E>%%ordti>;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/sr_Latn.txt b/icu4c/source/data/rbnf/sr_Latn.txt
index 6770e4b..ea1cab9 100644
--- a/icu4c/source/data/rbnf/sr_Latn.txt
+++ b/icu4c/source/data/rbnf/sr_Latn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn{
     %%Parent{"root"}
     RBNFRules{
@@ -146,5 +147,4 @@
             "400: <%spellout-cardinal-feminine<sto>%%ordti>;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/su.txt b/icu4c/source/data/rbnf/su.txt
index ac19c47..cf0feaf 100644
--- a/icu4c/source/data/rbnf/su.txt
+++ b/icu4c/source/data/rbnf/su.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su{
     RBNFRules{
         SpelloutRules{
@@ -39,5 +40,4 @@
             "0: ka=%spellout-cardinal=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/sv.txt b/icu4c/source/data/rbnf/sv.txt
index e5133eb..9f84d3a 100644
--- a/icu4c/source/data/rbnf/sv.txt
+++ b/icu4c/source/data/rbnf/sv.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sv{
     RBNFRules{
         OrdinalRules{
@@ -221,5 +222,4 @@
             "0: =%spellout-ordinal-neuter=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/sw.txt b/icu4c/source/data/rbnf/sw.txt
index d295378..eeb164e 100644
--- a/icu4c/source/data/rbnf/sw.txt
+++ b/icu4c/source/data/rbnf/sw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw{
     RBNFRules{
         SpelloutRules{
@@ -48,5 +49,4 @@
             "3: wa =%spellout-cardinal=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/ta.txt b/icu4c/source/data/rbnf/ta.txt
index 06dce55..501ff0c 100644
--- a/icu4c/source/data/rbnf/ta.txt
+++ b/icu4c/source/data/rbnf/ta.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ta{
     RBNFRules{
         OrdinalRules{
@@ -84,5 +85,4 @@
             "21: =#,##,##0=\u0BBE\u0BB5\u0BA4\u0BC1;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/th.txt b/icu4c/source/data/rbnf/th.txt
index de3e555..6e44129 100644
--- a/icu4c/source/data/rbnf/th.txt
+++ b/icu4c/source/data/rbnf/th.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 th{
     RBNFRules{
         OrdinalRules{
@@ -43,5 +44,4 @@
             "0: \u0E17\u0E35\u0E48\u200B=%spellout-cardinal=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/tr.txt b/icu4c/source/data/rbnf/tr.txt
index e9c99d4..20dadba 100644
--- a/icu4c/source/data/rbnf/tr.txt
+++ b/icu4c/source/data/rbnf/tr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tr{
     RBNFRules{
         SpelloutRules{
@@ -87,5 +88,4 @@
             "1000000000000000000: =#,##0='inci;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/uk.txt b/icu4c/source/data/rbnf/uk.txt
index db394b5..f9b916b 100644
--- a/icu4c/source/data/rbnf/uk.txt
+++ b/icu4c/source/data/rbnf/uk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uk{
     RBNFRules{
         SpelloutRules{
@@ -118,5 +119,4 @@
             "1000000000000000000: =#,##0=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/vi.txt b/icu4c/source/data/rbnf/vi.txt
index f6d663a..44fee14 100644
--- a/icu4c/source/data/rbnf/vi.txt
+++ b/icu4c/source/data/rbnf/vi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vi{
     RBNFRules{
         OrdinalRules{
@@ -59,5 +60,4 @@
             "5: th\u1EE9 =%spellout-cardinal=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/yue.txt b/icu4c/source/data/rbnf/yue.txt
index b2b1b5e..37a2cac 100644
--- a/icu4c/source/data/rbnf/yue.txt
+++ b/icu4c/source/data/rbnf/yue.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue{
     RBNFRules{
         OrdinalRules{
@@ -158,5 +159,4 @@
             "0: \u7B2C=%spellout-numbering=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/yue_Hans.txt b/icu4c/source/data/rbnf/yue_Hans.txt
index 681e422..5705924 100644
--- a/icu4c/source/data/rbnf/yue_Hans.txt
+++ b/icu4c/source/data/rbnf/yue_Hans.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_Hans{
     %%Parent{"root"}
     RBNFRules{
@@ -159,5 +160,4 @@
             "0: \u7B2C=%spellout-numbering=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/zh.txt b/icu4c/source/data/rbnf/zh.txt
index d8994ef..a92136d 100644
--- a/icu4c/source/data/rbnf/zh.txt
+++ b/icu4c/source/data/rbnf/zh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh{
     RBNFRules{
         OrdinalRules{
@@ -240,5 +241,4 @@
             "0: \u7B2C=%spellout-numbering=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/zh_HK.txt b/icu4c/source/data/rbnf/zh_HK.txt
index fe72a0e..c34c98f 100644
--- a/icu4c/source/data/rbnf/zh_HK.txt
+++ b/icu4c/source/data/rbnf/zh_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_HK{
     "%%ALIAS"{"zh_Hant_HK"}
 }
diff --git a/icu4c/source/data/rbnf/zh_Hant.txt b/icu4c/source/data/rbnf/zh_Hant.txt
index a89b088..a749003 100644
--- a/icu4c/source/data/rbnf/zh_Hant.txt
+++ b/icu4c/source/data/rbnf/zh_Hant.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant{
     %%Parent{"root"}
     RBNFRules{
@@ -214,5 +215,4 @@
             "0: \u7B2C=%spellout-numbering=;",
         }
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/rbnf/zh_Hant_HK.txt b/icu4c/source/data/rbnf/zh_Hant_HK.txt
index 9af3285..978e040 100644
--- a/icu4c/source/data/rbnf/zh_Hant_HK.txt
+++ b/icu4c/source/data/rbnf/zh_Hant_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant_HK{
     "%%ALIAS"{"yue"}
 }
diff --git a/icu4c/source/data/rbnf/zh_Hant_MO.txt b/icu4c/source/data/rbnf/zh_Hant_MO.txt
index 379ea44..79dff76 100644
--- a/icu4c/source/data/rbnf/zh_Hant_MO.txt
+++ b/icu4c/source/data/rbnf/zh_Hant_MO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/rbnf/zh_Hant_TW.txt b/icu4c/source/data/rbnf/zh_Hant_TW.txt
index b62ad69..b079f20 100644
--- a/icu4c/source/data/rbnf/zh_Hant_TW.txt
+++ b/icu4c/source/data/rbnf/zh_Hant_TW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/rbnf/zh_MO.txt b/icu4c/source/data/rbnf/zh_MO.txt
index 6565bf7..c6b2148 100644
--- a/icu4c/source/data/rbnf/zh_MO.txt
+++ b/icu4c/source/data/rbnf/zh_MO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_MO{
     "%%ALIAS"{"zh_Hant_MO"}
 }
diff --git a/icu4c/source/data/rbnf/zh_TW.txt b/icu4c/source/data/rbnf/zh_TW.txt
index 9372c50..c54ccbf 100644
--- a/icu4c/source/data/rbnf/zh_TW.txt
+++ b/icu4c/source/data/rbnf/zh_TW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_TW{
     "%%ALIAS"{"zh_Hant_TW"}
 }
diff --git a/icu4c/source/data/region/LOCALE_DEPS.json b/icu4c/source/data/region/LOCALE_DEPS.json
index 681e78c..2508537 100644
--- a/icu4c/source/data/region/LOCALE_DEPS.json
+++ b/icu4c/source/data/region/LOCALE_DEPS.json
@@ -1,8 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 
 {
-    "cldrVersion": "37",
+    "cldrVersion": "38.1",
     "aliases": {
         "ars": "ar_SA",
         "az_AZ": "az_Latn_AZ",
@@ -33,7 +34,7 @@
         "sh_YU": "sr_Latn_RS",
         "shi_MA": "shi_Tfng_MA",
         "sr_BA": "sr_Cyrl_BA",
-        "sr_CS": "sr_Cyrl_RS",
+        "sr_CS": "sr_RS",
         "sr_Cyrl_CS": "sr_Cyrl_RS",
         "sr_Cyrl_YU": "sr_Cyrl_RS",
         "sr_Latn_CS": "sr_Latn_RS",
@@ -41,7 +42,7 @@
         "sr_ME": "sr_Latn_ME",
         "sr_RS": "sr_Cyrl_RS",
         "sr_XK": "sr_Cyrl_XK",
-        "sr_YU": "sr_Cyrl_RS",
+        "sr_YU": "sr_RS",
         "su_ID": "su_Latn_ID",
         "tl": "fil",
         "tl_PH": "fil_PH",
diff --git a/icu4c/source/data/region/af.txt b/icu4c/source/data/region/af.txt
index 2d9e6b9..c11a677 100644
--- a/icu4c/source/data/region/af.txt
+++ b/icu4c/source/data/region/af.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 af{
     Countries{
         001{"Wêreld"}
@@ -81,7 +82,7 @@
         CK{"Cookeilande"}
         CL{"Chili"}
         CM{"Kameroen"}
-        CN{"Sjina"}
+        CN{"China"}
         CO{"Colombië"}
         CP{"Clippertoneiland"}
         CR{"Costa Rica"}
@@ -241,7 +242,7 @@
         SG{"Singapoer"}
         SH{"Sint Helena"}
         SI{"Slowenië"}
-        SJ{"Svalbard en Jan Mayen"}
+        SJ{"Spitsbergen en Jan Mayen"}
         SK{"Slowakye"}
         SL{"Sierra Leone"}
         SM{"San Marino"}
@@ -305,8 +306,6 @@
     Countries%variant{
         CD{"Kongo (DRK)"}
         CG{"Kongo (Republiek die)"}
-        CI{"Cote d’Ivoire"}
         CZ{"Tsjeggiese Republiek"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/agq.txt b/icu4c/source/data/region/agq.txt
index 50a2e66..c520719 100644
--- a/icu4c/source/data/region/agq.txt
+++ b/icu4c/source/data/region/agq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 agq{
     Countries{
         AD{"Àndolà"}
@@ -226,5 +227,4 @@
         ZM{"Zambìa"}
         ZW{"Zìmbagbɛ̀"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ak.txt b/icu4c/source/data/region/ak.txt
index 1c050f0..5b76e0f 100644
--- a/icu4c/source/data/region/ak.txt
+++ b/icu4c/source/data/region/ak.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ak{
     Countries{
         AD{"Andora"}
@@ -226,5 +227,4 @@
         ZM{"Zambia"}
         ZW{"Zembabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/am.txt b/icu4c/source/data/region/am.txt
index 53f15e3..2c16b38 100644
--- a/icu4c/source/data/region/am.txt
+++ b/icu4c/source/data/region/am.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 am{
     Countries{
         001{"ዓለም"}
@@ -187,7 +188,7 @@
         ML{"ማሊ"}
         MM{"ማይናማር(በርማ)"}
         MN{"ሞንጎሊያ"}
-        MO{"ማካኡ"}
+        MO{"ማካኦ"}
         MP{"የሰሜናዊ ማሪያና ደሴቶች"}
         MQ{"ማርቲኒክ"}
         MR{"ሞሪቴኒያ"}
@@ -220,7 +221,7 @@
         PK{"ፓኪስታን"}
         PL{"ፖላንድ"}
         PM{"ቅዱስ ፒዬር እና ሚኩኤሎን"}
-        PN{"ፒትካኢርን አይስላንድ"}
+        PN{"ፒትካኢርን ደሴቶች"}
         PR{"ፖርታ ሪኮ"}
         PS{"ፍልስጥኤም"}
         PT{"ፖርቱጋል"}
@@ -304,11 +305,10 @@
     }
     Countries%variant{
         CD{"ኮንጎ (የዲሞክራቲክ ሪፐብሊክ ኮንጎ)"}
-        CG{"ኮንጎ (ሪፐብሊክ)"}
+        CG{"ኮንጎ (ሪፑብሊክ)"}
         CI{"አይቮሪኮስት"}
         CZ{"ቼክ ሪፑብሊክ"}
         SZ{"ስዋዚላንድ"}
         TL{"ምስራቅ ቲሞር"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ar.txt b/icu4c/source/data/region/ar.txt
index 5ea9c5b..0e91a03 100644
--- a/icu4c/source/data/region/ar.txt
+++ b/icu4c/source/data/region/ar.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar{
     Countries{
         001{"العالم"}
@@ -305,5 +306,4 @@
         SZ{"سوازيلاند"}
         TL{"تيمور الشرقية"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ar_AE.txt b/icu4c/source/data/region/ar_AE.txt
index aedab77..b811eb8 100644
--- a/icu4c/source/data/region/ar_AE.txt
+++ b/icu4c/source/data/region/ar_AE.txt
@@ -1,9 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_AE{
     Countries%variant{
         CI{"ساحل العاج"}
         TL{"التيمور الشرقية"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ar_LY.txt b/icu4c/source/data/region/ar_LY.txt
index 3edfae6..71bccd4 100644
--- a/icu4c/source/data/region/ar_LY.txt
+++ b/icu4c/source/data/region/ar_LY.txt
@@ -1,10 +1,10 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_LY{
     Countries{
         EA{"سبتة ومليلية"}
         MS{"مونتيسيرات"}
         UY{"أوروغواي"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ar_SA.txt b/icu4c/source/data/region/ar_SA.txt
index c3054ca..5ea7a6e 100644
--- a/icu4c/source/data/region/ar_SA.txt
+++ b/icu4c/source/data/region/ar_SA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_SA{
     Countries{
         AC{"جزيرة أسينشين"}
@@ -11,5 +12,4 @@
     Countries%variant{
         CZ{"التشيك"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ar_XB.txt b/icu4c/source/data/region/ar_XB.txt
index 91b189b..b9c6f04 100644
--- a/icu4c/source/data/region/ar_XB.txt
+++ b/icu4c/source/data/region/ar_XB.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_XB{
     Countries{
         001{"؜‮World‬؜"}
@@ -313,5 +314,4 @@
         SZ{"؜‮Swaziland‬؜"}
         TL{"؜‮East‬؜ ؜‮Timor‬؜"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ars.txt b/icu4c/source/data/region/ars.txt
index 1f49ca1..92183f5 100644
--- a/icu4c/source/data/region/ars.txt
+++ b/icu4c/source/data/region/ars.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ars{
     "%%ALIAS"{"ar_SA"}
 }
diff --git a/icu4c/source/data/region/as.txt b/icu4c/source/data/region/as.txt
index d82c31a..2a982ee 100644
--- a/icu4c/source/data/region/as.txt
+++ b/icu4c/source/data/region/as.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 as{
     Countries{
         001{"বিশ্ব"}
@@ -309,5 +310,4 @@
         SZ{"স্বাজিলেণ্ড"}
         TL{"পূৱ টিমোৰ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/asa.txt b/icu4c/source/data/region/asa.txt
index 0db3709..02d1081 100644
--- a/icu4c/source/data/region/asa.txt
+++ b/icu4c/source/data/region/asa.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 asa{
     Countries{
         AD{"Andora"}
@@ -224,5 +225,4 @@
         ZM{"Dhambia"}
         ZW{"Dhimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ast.txt b/icu4c/source/data/region/ast.txt
index fa438a8..d4b0d71 100644
--- a/icu4c/source/data/region/ast.txt
+++ b/icu4c/source/data/region/ast.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ast{
     Countries{
         001{"Mundu"}
@@ -304,5 +305,4 @@
         CZ{"República Checa"}
         TL{"Timor Este"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/az.txt b/icu4c/source/data/region/az.txt
index 0f093d9..7102cda 100644
--- a/icu4c/source/data/region/az.txt
+++ b/icu4c/source/data/region/az.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az{
     Countries{
         001{"Dünya"}
@@ -309,5 +310,4 @@
         CZ{"Çex Respublikası"}
         SZ{"Svazilend"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/az_AZ.txt b/icu4c/source/data/region/az_AZ.txt
index caf84c0..8932e86 100644
--- a/icu4c/source/data/region/az_AZ.txt
+++ b/icu4c/source/data/region/az_AZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_AZ{
     "%%ALIAS"{"az_Latn_AZ"}
 }
diff --git a/icu4c/source/data/region/az_Cyrl.txt b/icu4c/source/data/region/az_Cyrl.txt
index ff89b69..3c4e8e0 100644
--- a/icu4c/source/data/region/az_Cyrl.txt
+++ b/icu4c/source/data/region/az_Cyrl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_Cyrl{
     %%Parent{"root"}
     Countries{
@@ -298,5 +299,4 @@
         CG{"Конго (Республика)"}
         CZ{"Чех Республикасы"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/az_Latn.txt b/icu4c/source/data/region/az_Latn.txt
index 6022c58..6464d2e 100644
--- a/icu4c/source/data/region/az_Latn.txt
+++ b/icu4c/source/data/region/az_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/az_Latn_AZ.txt b/icu4c/source/data/region/az_Latn_AZ.txt
index 36c6e61..3963c91 100644
--- a/icu4c/source/data/region/az_Latn_AZ.txt
+++ b/icu4c/source/data/region/az_Latn_AZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/bas.txt b/icu4c/source/data/region/bas.txt
index d97361b..89b21f0 100644
--- a/icu4c/source/data/region/bas.txt
+++ b/icu4c/source/data/region/bas.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bas{
     Countries{
         AD{"Àŋdɔ̂r"}
@@ -223,5 +224,4 @@
         ZM{"Zàmbià"}
         ZW{"Zìmbàbwê"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/be.txt b/icu4c/source/data/region/be.txt
index 40140d2..8a556da 100644
--- a/icu4c/source/data/region/be.txt
+++ b/icu4c/source/data/region/be.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 be{
     Countries{
         001{"Свет"}
@@ -288,7 +289,7 @@
         WF{"Уоліс і Футуна"}
         WS{"Самоа"}
         XA{"Псеўдаакцэнты"}
-        XB{"Псеўда-Bidi"}
+        XB{"псеўдадвухнапрамкавы"}
         XK{"Косава"}
         YE{"Емен"}
         YT{"Маёта"}
@@ -308,5 +309,4 @@
         SZ{"Свазіленд"}
         TL{"Усходні Тымор"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/bem.txt b/icu4c/source/data/region/bem.txt
index e1d1a18..fa9a0d7 100644
--- a/icu4c/source/data/region/bem.txt
+++ b/icu4c/source/data/region/bem.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bem{
     Countries{
         ZM{"Zambia"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/bez.txt b/icu4c/source/data/region/bez.txt
index 3823245..7b70497 100644
--- a/icu4c/source/data/region/bez.txt
+++ b/icu4c/source/data/region/bez.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bez{
     Countries{
         AD{"Huandola"}
@@ -226,5 +227,4 @@
         ZM{"Huzambia"}
         ZW{"Huzimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/bg.txt b/icu4c/source/data/region/bg.txt
index 8f8d7f6..0251356 100644
--- a/icu4c/source/data/region/bg.txt
+++ b/icu4c/source/data/region/bg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bg{
     Countries{
         001{"свят"}
@@ -262,7 +263,7 @@
         TH{"Тайланд"}
         TJ{"Таджикистан"}
         TK{"Токелау"}
-        TL{"Източен Тимор"}
+        TL{"Тимор Лесте"}
         TM{"Туркменистан"}
         TN{"Тунис"}
         TO{"Тонга"}
@@ -305,6 +306,6 @@
         CG{"Конго (Република)"}
         CZ{"Чешка република"}
         SZ{"Свазиленд"}
+        TL{"Източен Тимор"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/bm.txt b/icu4c/source/data/region/bm.txt
index a89f56b..6d0c10d 100644
--- a/icu4c/source/data/region/bm.txt
+++ b/icu4c/source/data/region/bm.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bm{
     Countries{
         AD{"Andɔr"}
@@ -226,5 +227,4 @@
         ZM{"Zanbi"}
         ZW{"Zimbabuwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/bn.txt b/icu4c/source/data/region/bn.txt
index 9e3858e..a63b0a8 100644
--- a/icu4c/source/data/region/bn.txt
+++ b/icu4c/source/data/region/bn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bn{
     Countries{
         001{"পৃথিবী"}
@@ -310,5 +311,4 @@
         SZ{"সোয়াজিল্যান্ড"}
         TL{"পূর্ব তিমুর"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/bn_IN.txt b/icu4c/source/data/region/bn_IN.txt
index 2d05e0c..ccc3e1f 100644
--- a/icu4c/source/data/region/bn_IN.txt
+++ b/icu4c/source/data/region/bn_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bn_IN{
     Countries{
         UM{"মার্কিন যুক্তরাষ্ট্রের পার্শ্ববর্তী দ্বীপপুঞ্জ"}
@@ -7,5 +8,4 @@
     Countries%variant{
         CD{"কঙ্গো (DRC)"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/bo.txt b/icu4c/source/data/region/bo.txt
index a628404..b3f091c 100644
--- a/icu4c/source/data/region/bo.txt
+++ b/icu4c/source/data/region/bo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bo{
     Countries{
         001{"འཛམ་གླིང་།"}
@@ -15,5 +16,4 @@
         US{"ཨ་མེ་རི་ཀ།"}
         ZZ{"མིའི་ཤེས་རྟོགས་མ་བྱུང་བའི་ཁོར་ཡུག"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/bo_IN.txt b/icu4c/source/data/region/bo_IN.txt
index 7d4c09c..390d8d4 100644
--- a/icu4c/source/data/region/bo_IN.txt
+++ b/icu4c/source/data/region/bo_IN.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bo_IN{
     Countries{
         009{"ཨོཤི་ཡཱན་ན།"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/br.txt b/icu4c/source/data/region/br.txt
index 0767edd..9e6d6eb 100644
--- a/icu4c/source/data/region/br.txt
+++ b/icu4c/source/data/region/br.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 br{
     Countries{
         001{"Bed"}
@@ -309,5 +310,4 @@
         SZ{"Swaziland"}
         TL{"Timor ar Reter"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/brx.txt b/icu4c/source/data/region/brx.txt
index c5efd8b..61e7cdf 100644
--- a/icu4c/source/data/region/brx.txt
+++ b/icu4c/source/data/region/brx.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 brx{
     Countries{
         001{"दुनिया"}
@@ -280,5 +281,4 @@
         ZW{"ज़ीम्बाब्वे"}
         ZZ{"अज्ञात या अवैध प्रदेश"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/bs.txt b/icu4c/source/data/region/bs.txt
index 75b6113..46a4b17 100644
--- a/icu4c/source/data/region/bs.txt
+++ b/icu4c/source/data/region/bs.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs{
     Countries{
         001{"Svijet"}
@@ -83,10 +84,10 @@
         CM{"Kamerun"}
         CN{"Kina"}
         CO{"Kolumbija"}
-        CP{"Ostrvo Kliperton"}
+        CP{"Ostrvo Clipperton"}
         CR{"Kostarika"}
         CU{"Kuba"}
-        CV{"Kape Verde"}
+        CV{"Zelenortska Ostrva"}
         CW{"Kurasao"}
         CX{"Božićno ostrvo"}
         CY{"Kipar"}
@@ -119,7 +120,7 @@
         GD{"Grenada"}
         GE{"Gruzija"}
         GF{"Francuska Gvajana"}
-        GG{"Gernzi"}
+        GG{"Guernsey"}
         GH{"Gana"}
         GI{"Gibraltar"}
         GL{"Grenland"}
@@ -134,7 +135,7 @@
         GW{"Gvineja-Bisao"}
         GY{"Gvajana"}
         HK{"Hong Kong"}
-        HM{"Herd i arhipelag MekDonald"}
+        HM{"Ostrvo Heard i arhipelag McDonald"}
         HN{"Honduras"}
         HR{"Hrvatska"}
         HT{"Haiti"}
@@ -305,9 +306,7 @@
     Countries%variant{
         CD{"DR Kongo"}
         CG{"Republika Kongo"}
-        CI{"Obala Bjelokosti"}
         CZ{"Češka Republika"}
         SZ{"Svazilend"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/bs_BA.txt b/icu4c/source/data/region/bs_BA.txt
index e5e3a46..70619a1 100644
--- a/icu4c/source/data/region/bs_BA.txt
+++ b/icu4c/source/data/region/bs_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_BA{
     "%%ALIAS"{"bs_Latn_BA"}
 }
diff --git a/icu4c/source/data/region/bs_Cyrl.txt b/icu4c/source/data/region/bs_Cyrl.txt
index 9d8bce2..d62be2c 100644
--- a/icu4c/source/data/region/bs_Cyrl.txt
+++ b/icu4c/source/data/region/bs_Cyrl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_Cyrl{
     %%Parent{"root"}
     Countries{
@@ -309,5 +310,4 @@
         CZ{"Чешка Република"}
         TL{"Тимор-Лесте (Источни Тимор)"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/bs_Latn.txt b/icu4c/source/data/region/bs_Latn.txt
index d1a6b5e..f256112 100644
--- a/icu4c/source/data/region/bs_Latn.txt
+++ b/icu4c/source/data/region/bs_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/bs_Latn_BA.txt b/icu4c/source/data/region/bs_Latn_BA.txt
index 3ef1cc4..04342dc 100644
--- a/icu4c/source/data/region/bs_Latn_BA.txt
+++ b/icu4c/source/data/region/bs_Latn_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/ca.txt b/icu4c/source/data/region/ca.txt
index 6a95253..9c47745 100644
--- a/icu4c/source/data/region/ca.txt
+++ b/icu4c/source/data/region/ca.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ca{
     Countries{
         001{"Món"}
@@ -125,7 +126,7 @@
         GL{"Groenlàndia"}
         GM{"Gàmbia"}
         GN{"Guinea"}
-        GP{"Guadeloupe"}
+        GP{"Guadalupe"}
         GQ{"Guinea Equatorial"}
         GR{"Grècia"}
         GS{"Illes Geòrgia del Sud i Sandwich del Sud"}
@@ -309,5 +310,4 @@
         CZ{"República Txeca"}
         SZ{"Swazilàndia"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ccp.txt b/icu4c/source/data/region/ccp.txt
index 2194cf1..58778f2 100644
--- a/icu4c/source/data/region/ccp.txt
+++ b/icu4c/source/data/region/ccp.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ccp{
     Countries{
         001{"𑄛𑄨𑄖𑄴𑄗𑄨𑄟𑄨"}
@@ -316,5 +317,4 @@
         CZ{"𑄌𑄬𑄇𑄴 𑄛𑄳𑄢𑄎𑄖𑄧𑄚𑄴𑄖𑄳𑄢𑄧"}
         TL{"𑄛𑄪𑄉𑄮 𑄖𑄨𑄟𑄪𑄢𑄴"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ce.txt b/icu4c/source/data/region/ce.txt
index 4317e32..435b8d0 100644
--- a/icu4c/source/data/region/ce.txt
+++ b/icu4c/source/data/region/ce.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ce{
     Countries{
         001{"Дерригдуьненан"}
@@ -302,5 +303,4 @@
         CI{"Кот-д’Ивуар"}
         TL{"Тимор-Лесте"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ceb.txt b/icu4c/source/data/region/ceb.txt
index 911c49b..a9d2e89 100644
--- a/icu4c/source/data/region/ceb.txt
+++ b/icu4c/source/data/region/ceb.txt
@@ -1,10 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ceb{
     Countries{
         001{"Kalibutan"}
         002{"Africa"}
-        003{"North America"}
+        003{"Amihanang Amerika"}
         005{"South America"}
         009{"Oceania"}
         011{"Western Africa"}
@@ -104,7 +105,7 @@
         EG{"Egypt"}
         EH{"Western Sahara"}
         ER{"Eritrea"}
-        ES{"Spain"}
+        ES{"Espanya"}
         ET{"Ethiopia"}
         EU{"European Union"}
         EZ{"Eurozone"}
@@ -274,7 +275,7 @@
         UA{"Ukraine"}
         UG{"Uganda"}
         UM{"U.S. Outlying Islands"}
-        UN{"United Nations"}
+        UN{"Hiniusang Kanasoran"}
         US{"Estados Unidos"}
         UY{"Uruguay"}
         UZ{"Uzbekistan"}
@@ -303,11 +304,10 @@
     }
     Countries%variant{
         CD{"Congo (DRC)"}
-        CG{"Congo (Republic)"}
+        CG{"Congo (Republika)"}
         CI{"Ivory Coast"}
         CZ{"Czech Republic"}
         SZ{"Swaziland"}
         TL{"East Timor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/cgg.txt b/icu4c/source/data/region/cgg.txt
index b88c2bd..225bc76 100644
--- a/icu4c/source/data/region/cgg.txt
+++ b/icu4c/source/data/region/cgg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cgg{
     Countries{
         AD{"Andora"}
@@ -224,5 +225,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/chr.txt b/icu4c/source/data/region/chr.txt
index 1367c8a..bf0279e 100644
--- a/icu4c/source/data/region/chr.txt
+++ b/icu4c/source/data/region/chr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 chr{
     Countries{
         001{"ᎡᎶᎯ"}
@@ -309,5 +310,4 @@
         SZ{"ᎠᏂᏍᏩᏏᎢ"}
         TL{"ᏗᎧᎸᎬᎢ ᏘᎼᎵ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ckb.txt b/icu4c/source/data/region/ckb.txt
index fd1f7b7..3a6bce1 100644
--- a/icu4c/source/data/region/ckb.txt
+++ b/icu4c/source/data/region/ckb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ckb{
     Countries{
         001{"جیهان"}
@@ -299,5 +300,4 @@
         CD{"کۆماری دیموکراتیی کۆنگۆ"}
         CG{"کۆماری کۆنگۆ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/cs.txt b/icu4c/source/data/region/cs.txt
index 3cc6f96..fefa6da 100644
--- a/icu4c/source/data/region/cs.txt
+++ b/icu4c/source/data/region/cs.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cs{
     Countries{
         001{"svět"}
@@ -253,7 +254,7 @@
         SV{"Salvador"}
         SX{"Svatý Martin (Nizozemsko)"}
         SY{"Sýrie"}
-        SZ{"Svazijsko"}
+        SZ{"Eswatini"}
         TA{"Tristan da Cunha"}
         TC{"Turks a Caicos"}
         TD{"Čad"}
@@ -307,8 +308,7 @@
         CG{"Kongo (republika)"}
         CI{"Côte d’Ivoire"}
         CZ{"Česká republika"}
-        SZ{"Eswatini"}
+        SZ{"Svazijsko"}
         TL{"Timor-Leste"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/cy.txt b/icu4c/source/data/region/cy.txt
index c97a1d4..1c8e5bd 100644
--- a/icu4c/source/data/region/cy.txt
+++ b/icu4c/source/data/region/cy.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cy{
     Countries{
         001{"Y Byd"}
@@ -49,7 +50,7 @@
         AU{"Awstralia"}
         AW{"Aruba"}
         AX{"Ynysoedd Åland"}
-        AZ{"Azerbaijan"}
+        AZ{"Aserbaijan"}
         BA{"Bosnia a Herzegovina"}
         BB{"Barbados"}
         BD{"Bangladesh"}
@@ -124,9 +125,9 @@
         GI{"Gibraltar"}
         GL{"Yr Ynys Las"}
         GM{"Gambia"}
-        GN{"Guinée"}
+        GN{"Gini"}
         GP{"Guadeloupe"}
-        GQ{"Guinea Gyhydeddol"}
+        GQ{"Gini Gyhydeddol"}
         GR{"Gwlad Groeg"}
         GS{"De Georgia ac Ynysoedd Sandwich y De"}
         GT{"Guatemala"}
@@ -160,11 +161,11 @@
         KI{"Kiribati"}
         KM{"Comoros"}
         KN{"Saint Kitts a Nevis"}
-        KP{"Gogledd Korea"}
-        KR{"De Korea"}
+        KP{"Gogledd Corea"}
+        KR{"De Corea"}
         KW{"Kuwait"}
         KY{"Ynysoedd Cayman"}
-        KZ{"Kazakstan"}
+        KZ{"Kazakhstan"}
         LA{"Laos"}
         LB{"Libanus"}
         LC{"Saint Lucia"}
@@ -172,7 +173,7 @@
         LK{"Sri Lanka"}
         LR{"Liberia"}
         LS{"Lesotho"}
-        LT{"Lithuania"}
+        LT{"Lithwania"}
         LU{"Lwcsembwrg"}
         LV{"Latfia"}
         LY{"Libya"}
@@ -256,15 +257,15 @@
         SZ{"Eswatini"}
         TA{"Tristan da Cunha"}
         TC{"Ynysoedd Turks a Caicos"}
-        TD{"Tchad"}
+        TD{"Tsiad"}
         TF{"Tiroedd Deheuol ac Antarctig Ffrainc"}
         TG{"Togo"}
         TH{"Gwlad Thai"}
-        TJ{"Tajikistan"}
+        TJ{"Tajicistan"}
         TK{"Tokelau"}
         TL{"Timor-Leste"}
-        TM{"Turkmenistan"}
-        TN{"Tunisia"}
+        TM{"Tyrcmenistan"}
+        TN{"Tiwnisia"}
         TO{"Tonga"}
         TR{"Twrci"}
         TT{"Trinidad a Tobago"}
@@ -310,5 +311,4 @@
         SZ{"Gwlad Swazi"}
         TL{"Dwyrain Timor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/da.txt b/icu4c/source/data/region/da.txt
index e4afa53..3e8f2ae 100644
--- a/icu4c/source/data/region/da.txt
+++ b/icu4c/source/data/region/da.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 da{
     Countries{
         001{"Verden"}
@@ -298,7 +299,6 @@
         ZZ{"Ukendt område"}
     }
     Countries%short{
-        GB{"UK"}
         UN{"FN"}
     }
     Countries%variant{
@@ -308,5 +308,4 @@
         SZ{"Swaziland"}
         TL{"Østtimor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/dav.txt b/icu4c/source/data/region/dav.txt
index 26bc48e..e7885d2 100644
--- a/icu4c/source/data/region/dav.txt
+++ b/icu4c/source/data/region/dav.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dav{
     Countries{
         AD{"Andora"}
@@ -226,5 +227,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/de.txt b/icu4c/source/data/region/de.txt
index e9015c2..0b6695d 100644
--- a/icu4c/source/data/region/de.txt
+++ b/icu4c/source/data/region/de.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de{
     Countries{
         001{"Welt"}
@@ -63,7 +64,7 @@
         BM{"Bermuda"}
         BN{"Brunei Darussalam"}
         BO{"Bolivien"}
-        BQ{"Bonaire, Sint Eustatius und Saba"}
+        BQ{"Karibische Niederlande"}
         BR{"Brasilien"}
         BS{"Bahamas"}
         BT{"Bhutan"}
@@ -298,7 +299,7 @@
         ZZ{"Unbekannte Region"}
     }
     Countries%short{
-        GB{"GB"}
+        GB{"UK"}
         UN{"UN"}
         US{"USA"}
     }
@@ -310,5 +311,4 @@
         SZ{"Swasiland"}
         TL{"Osttimor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/de_AT.txt b/icu4c/source/data/region/de_AT.txt
index 0646341..df3f63a 100644
--- a/icu4c/source/data/region/de_AT.txt
+++ b/icu4c/source/data/region/de_AT.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de_AT{
     Countries{
         SJ{"Svalbard und Jan Mayen"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/de_CH.txt b/icu4c/source/data/region/de_CH.txt
index 184a4f2..80ace03 100644
--- a/icu4c/source/data/region/de_CH.txt
+++ b/icu4c/source/data/region/de_CH.txt
@@ -1,10 +1,10 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de_CH{
     Countries{
         BN{"Brunei"}
         BW{"Botswana"}
-        BY{"Weissrussland"}
         CV{"Kapverden"}
         GB{"Grossbritannien"}
         QO{"Äusseres Ozeanien"}
@@ -12,5 +12,4 @@
         TL{"Osttimor"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/dje.txt b/icu4c/source/data/region/dje.txt
index ef10ab7..78e1fd3 100644
--- a/icu4c/source/data/region/dje.txt
+++ b/icu4c/source/data/region/dje.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dje{
     Countries{
         AD{"Andoora"}
@@ -225,5 +226,4 @@
         ZM{"Zambi"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/doi.txt b/icu4c/source/data/region/doi.txt
new file mode 100644
index 0000000..881c772
--- /dev/null
+++ b/icu4c/source/data/region/doi.txt
@@ -0,0 +1,18 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+doi{
+    Countries{
+        BR{"ब्राजील"}
+        CN{"चीन"}
+        DE{"जर्मनी"}
+        FR{"फ्रांस"}
+        GB{"यूनाइटेड किंगडम"}
+        IN{"भारत"}
+        IT{"इटली"}
+        JP{"जापान"}
+        RU{"रूस"}
+        US{"यूएस"}
+        ZZ{"अनजांता खेत्तर"}
+    }
+}
diff --git a/icu4c/source/data/region/dsb.txt b/icu4c/source/data/region/dsb.txt
index dab5ef5..77e8269 100644
--- a/icu4c/source/data/region/dsb.txt
+++ b/icu4c/source/data/region/dsb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dsb{
     Countries{
         001{"swět"}
@@ -301,5 +302,4 @@
         CI{"Słonowokósćowy pśibrjog"}
         TL{"Pódzajtšny Timor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/dua.txt b/icu4c/source/data/region/dua.txt
index 0c1a475..42e1424 100644
--- a/icu4c/source/data/region/dua.txt
+++ b/icu4c/source/data/region/dua.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dua{
     Countries{
         CM{"Cameroun"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/dyo.txt b/icu4c/source/data/region/dyo.txt
index c5d9530..b8c3c7b 100644
--- a/icu4c/source/data/region/dyo.txt
+++ b/icu4c/source/data/region/dyo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dyo{
     Countries{
         AD{"Andorra"}
@@ -111,5 +112,4 @@
         TG{"Togo"}
         TH{"Tailand"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/dz.txt b/icu4c/source/data/region/dz.txt
index 8ffeff2..a7e819f 100644
--- a/icu4c/source/data/region/dz.txt
+++ b/icu4c/source/data/region/dz.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dz{
     Countries{
         001{"འཛམ་གླིང༌"}
@@ -296,5 +297,4 @@
         CI{"ཨི་ཝོ་རི་ཀོསཊ"}
         TL{"ཤར་ཕྱོགས་ཏི་་མོར"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ebu.txt b/icu4c/source/data/region/ebu.txt
index b3e49f2..6620cf3 100644
--- a/icu4c/source/data/region/ebu.txt
+++ b/icu4c/source/data/region/ebu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ebu{
     Countries{
         AD{"Andora"}
@@ -226,5 +227,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ee.txt b/icu4c/source/data/region/ee.txt
index 8226320..f64ef38 100644
--- a/icu4c/source/data/region/ee.txt
+++ b/icu4c/source/data/region/ee.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ee{
     Countries{
         001{"xexeme"}
@@ -291,5 +292,4 @@
         CI{"Ivory Kost nutome"}
         TL{"Ɣedzeƒe Timɔ nutome"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/el.txt b/icu4c/source/data/region/el.txt
index 48f3114..8b7d7b1 100644
--- a/icu4c/source/data/region/el.txt
+++ b/icu4c/source/data/region/el.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 el{
     Countries{
         001{"Κόσμος"}
@@ -253,7 +254,7 @@
         SV{"Ελ Σαλβαδόρ"}
         SX{"Άγιος Μαρτίνος (Ολλανδικό τμήμα)"}
         SY{"Συρία"}
-        SZ{"Σουαζιλάνδη"}
+        SZ{"Εσουατίνι"}
         TA{"Τριστάν ντα Κούνια"}
         TC{"Νήσοι Τερκς και Κάικος"}
         TD{"Τσαντ"}
@@ -306,7 +307,7 @@
         CD{"Κονγκό (ΛΔΚ)"}
         CG{"Κονγκό (Δημοκρατία)"}
         CZ{"Τσεχική Δημοκρατία"}
+        SZ{"Σουαζιλάνδη"}
         TL{"Ανατολικό Τιμόρ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en.txt b/icu4c/source/data/region/en.txt
index e91166f..8b02f37 100644
--- a/icu4c/source/data/region/en.txt
+++ b/icu4c/source/data/region/en.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en{
     Countries{
         001{"World"}
@@ -313,5 +314,4 @@
         SZ{"Swaziland"}
         TL{"East Timor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_001.txt b/icu4c/source/data/region/en_001.txt
index 37e5e71..d3b9559 100644
--- a/icu4c/source/data/region/en_001.txt
+++ b/icu4c/source/data/region/en_001.txt
@@ -1,16 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_001{
     Countries{
-        BL{"St Barthélemy"}
-        KN{"St Kitts & Nevis"}
-        LC{"St Lucia"}
-        MF{"St Martin"}
-        PM{"St Pierre & Miquelon"}
-        SH{"St Helena"}
         UM{"US Outlying Islands"}
-        VC{"St Vincent & Grenadines"}
         VI{"US Virgin Islands"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_150.txt b/icu4c/source/data/region/en_150.txt
index 5a9d0dd..a616e24 100644
--- a/icu4c/source/data/region/en_150.txt
+++ b/icu4c/source/data/region/en_150.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_150{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_AG.txt b/icu4c/source/data/region/en_AG.txt
index 15f4f3b..95a979e 100644
--- a/icu4c/source/data/region/en_AG.txt
+++ b/icu4c/source/data/region/en_AG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_AI.txt b/icu4c/source/data/region/en_AI.txt
index ec4deb2..e1cf751 100644
--- a/icu4c/source/data/region/en_AI.txt
+++ b/icu4c/source/data/region/en_AI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AI{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_AT.txt b/icu4c/source/data/region/en_AT.txt
index e4a6465..075c742 100644
--- a/icu4c/source/data/region/en_AT.txt
+++ b/icu4c/source/data/region/en_AT.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AT{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_AU.txt b/icu4c/source/data/region/en_AU.txt
index 9cd8be6..ba324c3 100644
--- a/icu4c/source/data/region/en_AU.txt
+++ b/icu4c/source/data/region/en_AU.txt
@@ -1,13 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AU{
     %%Parent{"en_001"}
-    Countries{
-        BL{"St. Barthélemy"}
-        KN{"St. Kitts & Nevis"}
-        LC{"St. Lucia"}
-        MF{"St. Martin"}
-        VC{"St. Vincent & Grenadines"}
-    }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_BB.txt b/icu4c/source/data/region/en_BB.txt
index 814000f..d62d192 100644
--- a/icu4c/source/data/region/en_BB.txt
+++ b/icu4c/source/data/region/en_BB.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BB{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_BE.txt b/icu4c/source/data/region/en_BE.txt
index ded6405..0e5fffa 100644
--- a/icu4c/source/data/region/en_BE.txt
+++ b/icu4c/source/data/region/en_BE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BE{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_BM.txt b/icu4c/source/data/region/en_BM.txt
index 1f9a62c..d45a1f9 100644
--- a/icu4c/source/data/region/en_BM.txt
+++ b/icu4c/source/data/region/en_BM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_BS.txt b/icu4c/source/data/region/en_BS.txt
index 115d868..fa71936 100644
--- a/icu4c/source/data/region/en_BS.txt
+++ b/icu4c/source/data/region/en_BS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_BW.txt b/icu4c/source/data/region/en_BW.txt
index 611516b..ab8bf09 100644
--- a/icu4c/source/data/region/en_BW.txt
+++ b/icu4c/source/data/region/en_BW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_BZ.txt b/icu4c/source/data/region/en_BZ.txt
index 226183a..fbf6977 100644
--- a/icu4c/source/data/region/en_BZ.txt
+++ b/icu4c/source/data/region/en_BZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BZ{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_CA.txt b/icu4c/source/data/region/en_CA.txt
index ee4fcd4..0d35e55 100644
--- a/icu4c/source/data/region/en_CA.txt
+++ b/icu4c/source/data/region/en_CA.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CA{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_CC.txt b/icu4c/source/data/region/en_CC.txt
index bce9886..906cf1e 100644
--- a/icu4c/source/data/region/en_CC.txt
+++ b/icu4c/source/data/region/en_CC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_CH.txt b/icu4c/source/data/region/en_CH.txt
index 244edf2..2362921 100644
--- a/icu4c/source/data/region/en_CH.txt
+++ b/icu4c/source/data/region/en_CH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CH{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_CK.txt b/icu4c/source/data/region/en_CK.txt
index ad52b0e..dc1c065 100644
--- a/icu4c/source/data/region/en_CK.txt
+++ b/icu4c/source/data/region/en_CK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_CM.txt b/icu4c/source/data/region/en_CM.txt
index bf63213..b7fdf6d 100644
--- a/icu4c/source/data/region/en_CM.txt
+++ b/icu4c/source/data/region/en_CM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_CX.txt b/icu4c/source/data/region/en_CX.txt
index 702f22b..58ff415 100644
--- a/icu4c/source/data/region/en_CX.txt
+++ b/icu4c/source/data/region/en_CX.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CX{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_CY.txt b/icu4c/source/data/region/en_CY.txt
index 21b11b7..d4e75c0 100644
--- a/icu4c/source/data/region/en_CY.txt
+++ b/icu4c/source/data/region/en_CY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CY{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_DE.txt b/icu4c/source/data/region/en_DE.txt
index 2623614..0147e01 100644
--- a/icu4c/source/data/region/en_DE.txt
+++ b/icu4c/source/data/region/en_DE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DE{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_DG.txt b/icu4c/source/data/region/en_DG.txt
index 95b8e88..10bd8d9 100644
--- a/icu4c/source/data/region/en_DG.txt
+++ b/icu4c/source/data/region/en_DG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_DK.txt b/icu4c/source/data/region/en_DK.txt
index d98349b..d694bb0 100644
--- a/icu4c/source/data/region/en_DK.txt
+++ b/icu4c/source/data/region/en_DK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DK{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_DM.txt b/icu4c/source/data/region/en_DM.txt
index 5bfedb7..224df76 100644
--- a/icu4c/source/data/region/en_DM.txt
+++ b/icu4c/source/data/region/en_DM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_ER.txt b/icu4c/source/data/region/en_ER.txt
index afd82fc..a39df78 100644
--- a/icu4c/source/data/region/en_ER.txt
+++ b/icu4c/source/data/region/en_ER.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ER{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_FI.txt b/icu4c/source/data/region/en_FI.txt
index ae4b517..0b93a7e 100644
--- a/icu4c/source/data/region/en_FI.txt
+++ b/icu4c/source/data/region/en_FI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FI{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_FJ.txt b/icu4c/source/data/region/en_FJ.txt
index 0c4ca01..65b19ac 100644
--- a/icu4c/source/data/region/en_FJ.txt
+++ b/icu4c/source/data/region/en_FJ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FJ{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_FK.txt b/icu4c/source/data/region/en_FK.txt
index 9c92bfd..1fca516 100644
--- a/icu4c/source/data/region/en_FK.txt
+++ b/icu4c/source/data/region/en_FK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_FM.txt b/icu4c/source/data/region/en_FM.txt
index 352f324..ad38147 100644
--- a/icu4c/source/data/region/en_FM.txt
+++ b/icu4c/source/data/region/en_FM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_GB.txt b/icu4c/source/data/region/en_GB.txt
index a03b26b..2450432 100644
--- a/icu4c/source/data/region/en_GB.txt
+++ b/icu4c/source/data/region/en_GB.txt
@@ -1,6 +1,15 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GB{
     %%Parent{"en_001"}
-    Version{"37"}
+    Countries{
+        BL{"St Barthélemy"}
+        KN{"St Kitts & Nevis"}
+        LC{"St Lucia"}
+        MF{"St Martin"}
+        PM{"St Pierre & Miquelon"}
+        SH{"St Helena"}
+        VC{"St Vincent & the Grenadines"}
+    }
 }
diff --git a/icu4c/source/data/region/en_GD.txt b/icu4c/source/data/region/en_GD.txt
index 98ca5e4..5aadd22 100644
--- a/icu4c/source/data/region/en_GD.txt
+++ b/icu4c/source/data/region/en_GD.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GD{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_GG.txt b/icu4c/source/data/region/en_GG.txt
index 8bee533..6d63e55 100644
--- a/icu4c/source/data/region/en_GG.txt
+++ b/icu4c/source/data/region/en_GG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_GH.txt b/icu4c/source/data/region/en_GH.txt
index de37150..8d0f240 100644
--- a/icu4c/source/data/region/en_GH.txt
+++ b/icu4c/source/data/region/en_GH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GH{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_GI.txt b/icu4c/source/data/region/en_GI.txt
index 5afa54f..809590d 100644
--- a/icu4c/source/data/region/en_GI.txt
+++ b/icu4c/source/data/region/en_GI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GI{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_GM.txt b/icu4c/source/data/region/en_GM.txt
index bbf424c..0f9710e 100644
--- a/icu4c/source/data/region/en_GM.txt
+++ b/icu4c/source/data/region/en_GM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_GY.txt b/icu4c/source/data/region/en_GY.txt
index 905d5be..0e53543 100644
--- a/icu4c/source/data/region/en_GY.txt
+++ b/icu4c/source/data/region/en_GY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GY{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_HK.txt b/icu4c/source/data/region/en_HK.txt
index 3eec8fe..f074e0c 100644
--- a/icu4c/source/data/region/en_HK.txt
+++ b/icu4c/source/data/region/en_HK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_HK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_IE.txt b/icu4c/source/data/region/en_IE.txt
index 96feab5..1426a90 100644
--- a/icu4c/source/data/region/en_IE.txt
+++ b/icu4c/source/data/region/en_IE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IE{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_IL.txt b/icu4c/source/data/region/en_IL.txt
index 2d32919..39fe763 100644
--- a/icu4c/source/data/region/en_IL.txt
+++ b/icu4c/source/data/region/en_IL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IL{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_IM.txt b/icu4c/source/data/region/en_IM.txt
index 15a218b..d6e869d 100644
--- a/icu4c/source/data/region/en_IM.txt
+++ b/icu4c/source/data/region/en_IM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_IN.txt b/icu4c/source/data/region/en_IN.txt
index 7cc832d..a4ffb58 100644
--- a/icu4c/source/data/region/en_IN.txt
+++ b/icu4c/source/data/region/en_IN.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IN{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_IO.txt b/icu4c/source/data/region/en_IO.txt
index 5cd7210..5b70c5a 100644
--- a/icu4c/source/data/region/en_IO.txt
+++ b/icu4c/source/data/region/en_IO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IO{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_JE.txt b/icu4c/source/data/region/en_JE.txt
index d8e0823..715ff18 100644
--- a/icu4c/source/data/region/en_JE.txt
+++ b/icu4c/source/data/region/en_JE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_JE{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_JM.txt b/icu4c/source/data/region/en_JM.txt
index 695ae1a..08a5127 100644
--- a/icu4c/source/data/region/en_JM.txt
+++ b/icu4c/source/data/region/en_JM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_JM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_KE.txt b/icu4c/source/data/region/en_KE.txt
index eecdd35..01411a3 100644
--- a/icu4c/source/data/region/en_KE.txt
+++ b/icu4c/source/data/region/en_KE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KE{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_KI.txt b/icu4c/source/data/region/en_KI.txt
index 6c68a9f..8cd023d 100644
--- a/icu4c/source/data/region/en_KI.txt
+++ b/icu4c/source/data/region/en_KI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KI{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_KN.txt b/icu4c/source/data/region/en_KN.txt
index 35ebc91..092c41e 100644
--- a/icu4c/source/data/region/en_KN.txt
+++ b/icu4c/source/data/region/en_KN.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KN{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_KY.txt b/icu4c/source/data/region/en_KY.txt
index 71fa196..a0c571e 100644
--- a/icu4c/source/data/region/en_KY.txt
+++ b/icu4c/source/data/region/en_KY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KY{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_LC.txt b/icu4c/source/data/region/en_LC.txt
index 5e248ad..ce24452 100644
--- a/icu4c/source/data/region/en_LC.txt
+++ b/icu4c/source/data/region/en_LC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_LC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_LR.txt b/icu4c/source/data/region/en_LR.txt
index 0a77adc..979fa99 100644
--- a/icu4c/source/data/region/en_LR.txt
+++ b/icu4c/source/data/region/en_LR.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_LR{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_LS.txt b/icu4c/source/data/region/en_LS.txt
index 14848c9..bd1380c 100644
--- a/icu4c/source/data/region/en_LS.txt
+++ b/icu4c/source/data/region/en_LS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_LS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_MG.txt b/icu4c/source/data/region/en_MG.txt
index 2f24348..8799b5b 100644
--- a/icu4c/source/data/region/en_MG.txt
+++ b/icu4c/source/data/region/en_MG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_MO.txt b/icu4c/source/data/region/en_MO.txt
index 2cd5c0a..769b2ea 100644
--- a/icu4c/source/data/region/en_MO.txt
+++ b/icu4c/source/data/region/en_MO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MO{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_MS.txt b/icu4c/source/data/region/en_MS.txt
index fbedac5..e0028aa 100644
--- a/icu4c/source/data/region/en_MS.txt
+++ b/icu4c/source/data/region/en_MS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_MT.txt b/icu4c/source/data/region/en_MT.txt
index a3af927..a217827 100644
--- a/icu4c/source/data/region/en_MT.txt
+++ b/icu4c/source/data/region/en_MT.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MT{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_MU.txt b/icu4c/source/data/region/en_MU.txt
index 1e67240..1a4260b 100644
--- a/icu4c/source/data/region/en_MU.txt
+++ b/icu4c/source/data/region/en_MU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MU{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_MW.txt b/icu4c/source/data/region/en_MW.txt
index 0624454..1920911 100644
--- a/icu4c/source/data/region/en_MW.txt
+++ b/icu4c/source/data/region/en_MW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_MY.txt b/icu4c/source/data/region/en_MY.txt
index ffd93f8..891c100 100644
--- a/icu4c/source/data/region/en_MY.txt
+++ b/icu4c/source/data/region/en_MY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MY{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_NA.txt b/icu4c/source/data/region/en_NA.txt
index 0b019a8..c1a4e58 100644
--- a/icu4c/source/data/region/en_NA.txt
+++ b/icu4c/source/data/region/en_NA.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NA{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_NF.txt b/icu4c/source/data/region/en_NF.txt
index e264ade..514d0d9 100644
--- a/icu4c/source/data/region/en_NF.txt
+++ b/icu4c/source/data/region/en_NF.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NF{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_NG.txt b/icu4c/source/data/region/en_NG.txt
index 70db1db..c047e03 100644
--- a/icu4c/source/data/region/en_NG.txt
+++ b/icu4c/source/data/region/en_NG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_NH.txt b/icu4c/source/data/region/en_NH.txt
index 958b96b..5dc995b 100644
--- a/icu4c/source/data/region/en_NH.txt
+++ b/icu4c/source/data/region/en_NH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NH{
     "%%ALIAS"{"en_VU"}
 }
diff --git a/icu4c/source/data/region/en_NL.txt b/icu4c/source/data/region/en_NL.txt
index 5b5436b..0b352bd 100644
--- a/icu4c/source/data/region/en_NL.txt
+++ b/icu4c/source/data/region/en_NL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NL{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_NR.txt b/icu4c/source/data/region/en_NR.txt
index 4377e15..89304ca 100644
--- a/icu4c/source/data/region/en_NR.txt
+++ b/icu4c/source/data/region/en_NR.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NR{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_NU.txt b/icu4c/source/data/region/en_NU.txt
index 56d9b22..830320b 100644
--- a/icu4c/source/data/region/en_NU.txt
+++ b/icu4c/source/data/region/en_NU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NU{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_NZ.txt b/icu4c/source/data/region/en_NZ.txt
index ca3650e..63e43a3 100644
--- a/icu4c/source/data/region/en_NZ.txt
+++ b/icu4c/source/data/region/en_NZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NZ{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_PG.txt b/icu4c/source/data/region/en_PG.txt
index ffddbf4..217c90f 100644
--- a/icu4c/source/data/region/en_PG.txt
+++ b/icu4c/source/data/region/en_PG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_PH.txt b/icu4c/source/data/region/en_PH.txt
index 9657884..1b59777 100644
--- a/icu4c/source/data/region/en_PH.txt
+++ b/icu4c/source/data/region/en_PH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PH{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_PK.txt b/icu4c/source/data/region/en_PK.txt
index 874a3ee..9093157 100644
--- a/icu4c/source/data/region/en_PK.txt
+++ b/icu4c/source/data/region/en_PK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_PN.txt b/icu4c/source/data/region/en_PN.txt
index 7f93228..975dcb4 100644
--- a/icu4c/source/data/region/en_PN.txt
+++ b/icu4c/source/data/region/en_PN.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PN{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_PW.txt b/icu4c/source/data/region/en_PW.txt
index ed60f26..89ef3e6 100644
--- a/icu4c/source/data/region/en_PW.txt
+++ b/icu4c/source/data/region/en_PW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_RH.txt b/icu4c/source/data/region/en_RH.txt
index b60f708..24bad29 100644
--- a/icu4c/source/data/region/en_RH.txt
+++ b/icu4c/source/data/region/en_RH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_RH{
     "%%ALIAS"{"en_ZW"}
 }
diff --git a/icu4c/source/data/region/en_RW.txt b/icu4c/source/data/region/en_RW.txt
index bc32932..ea92ac1 100644
--- a/icu4c/source/data/region/en_RW.txt
+++ b/icu4c/source/data/region/en_RW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_RW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_SB.txt b/icu4c/source/data/region/en_SB.txt
index 7e736c2..9907157 100644
--- a/icu4c/source/data/region/en_SB.txt
+++ b/icu4c/source/data/region/en_SB.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SB{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_SC.txt b/icu4c/source/data/region/en_SC.txt
index df04930..9d503c4 100644
--- a/icu4c/source/data/region/en_SC.txt
+++ b/icu4c/source/data/region/en_SC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_SD.txt b/icu4c/source/data/region/en_SD.txt
index f2110fa..ef3c460 100644
--- a/icu4c/source/data/region/en_SD.txt
+++ b/icu4c/source/data/region/en_SD.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SD{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_SE.txt b/icu4c/source/data/region/en_SE.txt
index c2a72c0..ec7d34e 100644
--- a/icu4c/source/data/region/en_SE.txt
+++ b/icu4c/source/data/region/en_SE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SE{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_SG.txt b/icu4c/source/data/region/en_SG.txt
index ddf857d..1f25c86 100644
--- a/icu4c/source/data/region/en_SG.txt
+++ b/icu4c/source/data/region/en_SG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_SH.txt b/icu4c/source/data/region/en_SH.txt
index 0e6c3dc..09e4765 100644
--- a/icu4c/source/data/region/en_SH.txt
+++ b/icu4c/source/data/region/en_SH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SH{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_SI.txt b/icu4c/source/data/region/en_SI.txt
index a69030e..6fb107a 100644
--- a/icu4c/source/data/region/en_SI.txt
+++ b/icu4c/source/data/region/en_SI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SI{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_SL.txt b/icu4c/source/data/region/en_SL.txt
index b956002..c79ccc5 100644
--- a/icu4c/source/data/region/en_SL.txt
+++ b/icu4c/source/data/region/en_SL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SL{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_SS.txt b/icu4c/source/data/region/en_SS.txt
index 80fb800..390a313 100644
--- a/icu4c/source/data/region/en_SS.txt
+++ b/icu4c/source/data/region/en_SS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_SX.txt b/icu4c/source/data/region/en_SX.txt
index 28da271..11fa700 100644
--- a/icu4c/source/data/region/en_SX.txt
+++ b/icu4c/source/data/region/en_SX.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SX{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_SZ.txt b/icu4c/source/data/region/en_SZ.txt
index 431d63a..7e9c97d 100644
--- a/icu4c/source/data/region/en_SZ.txt
+++ b/icu4c/source/data/region/en_SZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SZ{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_TC.txt b/icu4c/source/data/region/en_TC.txt
index 4129b99..181633b 100644
--- a/icu4c/source/data/region/en_TC.txt
+++ b/icu4c/source/data/region/en_TC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_TK.txt b/icu4c/source/data/region/en_TK.txt
index 11010f3..e50d572 100644
--- a/icu4c/source/data/region/en_TK.txt
+++ b/icu4c/source/data/region/en_TK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_TO.txt b/icu4c/source/data/region/en_TO.txt
index 6b63ad2..d21d084 100644
--- a/icu4c/source/data/region/en_TO.txt
+++ b/icu4c/source/data/region/en_TO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TO{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_TT.txt b/icu4c/source/data/region/en_TT.txt
index d91ebb5..d375378 100644
--- a/icu4c/source/data/region/en_TT.txt
+++ b/icu4c/source/data/region/en_TT.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TT{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_TV.txt b/icu4c/source/data/region/en_TV.txt
index 2d0ae8f..6247752 100644
--- a/icu4c/source/data/region/en_TV.txt
+++ b/icu4c/source/data/region/en_TV.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TV{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_TZ.txt b/icu4c/source/data/region/en_TZ.txt
index 2ff0cbd..2aa8e46 100644
--- a/icu4c/source/data/region/en_TZ.txt
+++ b/icu4c/source/data/region/en_TZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TZ{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_UG.txt b/icu4c/source/data/region/en_UG.txt
index 7ad0d87..26ed28e 100644
--- a/icu4c/source/data/region/en_UG.txt
+++ b/icu4c/source/data/region/en_UG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_UG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_VC.txt b/icu4c/source/data/region/en_VC.txt
index 45b455d..a018754 100644
--- a/icu4c/source/data/region/en_VC.txt
+++ b/icu4c/source/data/region/en_VC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_VG.txt b/icu4c/source/data/region/en_VG.txt
index 3e84e30..1a001d0 100644
--- a/icu4c/source/data/region/en_VG.txt
+++ b/icu4c/source/data/region/en_VG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_VU.txt b/icu4c/source/data/region/en_VU.txt
index 6229365..91d6b81 100644
--- a/icu4c/source/data/region/en_VU.txt
+++ b/icu4c/source/data/region/en_VU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VU{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_WS.txt b/icu4c/source/data/region/en_WS.txt
index 5d2f739..f197bb1 100644
--- a/icu4c/source/data/region/en_WS.txt
+++ b/icu4c/source/data/region/en_WS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_WS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_XA.txt b/icu4c/source/data/region/en_XA.txt
index b0531ed..efc3853 100644
--- a/icu4c/source/data/region/en_XA.txt
+++ b/icu4c/source/data/region/en_XA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_XA{
     Countries{
         001{"[Ŵöŕļð one]"}
@@ -313,5 +314,4 @@
         SZ{"[Šŵåžîļåñð one two]"}
         TL{"[Éåšţ Ţîɱöŕ one two]"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_ZA.txt b/icu4c/source/data/region/en_ZA.txt
index 942751e..13468e2 100644
--- a/icu4c/source/data/region/en_ZA.txt
+++ b/icu4c/source/data/region/en_ZA.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ZA{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_ZM.txt b/icu4c/source/data/region/en_ZM.txt
index 32588ce..f61c471 100644
--- a/icu4c/source/data/region/en_ZM.txt
+++ b/icu4c/source/data/region/en_ZM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ZM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/en_ZW.txt b/icu4c/source/data/region/en_ZW.txt
index 05fb790..60eaea8 100644
--- a/icu4c/source/data/region/en_ZW.txt
+++ b/icu4c/source/data/region/en_ZW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ZW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/eo.txt b/icu4c/source/data/region/eo.txt
index 8857905..959c002 100644
--- a/icu4c/source/data/region/eo.txt
+++ b/icu4c/source/data/region/eo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 eo{
     Countries{
         001{"Mondo"}
@@ -226,5 +227,4 @@
         ZM{"Zambio"}
         ZW{"Zimbabvo"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es.txt b/icu4c/source/data/region/es.txt
index e64ec5e..c75345d 100644
--- a/icu4c/source/data/region/es.txt
+++ b/icu4c/source/data/region/es.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es{
     Countries{
         001{"Mundo"}
@@ -48,7 +49,7 @@
         AT{"Austria"}
         AU{"Australia"}
         AW{"Aruba"}
-        AX{"Islas Åland"}
+        AX{"Islas Aland"}
         AZ{"Azerbaiyán"}
         BA{"Bosnia y Herzegovina"}
         BB{"Barbados"}
@@ -107,7 +108,7 @@
         ES{"España"}
         ET{"Etiopía"}
         EU{"Unión Europea"}
-        EZ{"zona euro"}
+        EZ{"zona del euro"}
         FI{"Finlandia"}
         FJ{"Fiyi"}
         FK{"Islas Malvinas (Islas Falkland)"}
@@ -119,7 +120,7 @@
         GD{"Granada"}
         GE{"Georgia"}
         GF{"Guayana Francesa"}
-        GG{"Guernsey"}
+        GG{"Guernesey"}
         GH{"Ghana"}
         GI{"Gibraltar"}
         GL{"Groenlandia"}
@@ -309,5 +310,4 @@
         SZ{"Suazilandia"}
         TL{"Timor Oriental"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_419.txt b/icu4c/source/data/region/es_419.txt
index fb4ec73..dafbaac 100644
--- a/icu4c/source/data/region/es_419.txt
+++ b/icu4c/source/data/region/es_419.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_419{
     Countries{
         011{"África del Oeste"}
@@ -15,11 +16,11 @@
         154{"Europa del Norte"}
         155{"Europa del Oeste"}
         AC{"Isla Ascensión"}
+        AX{"Islas Åland"}
         BA{"Bosnia-Herzegovina"}
         CG{"República del Congo"}
         CI{"Costa de Marfil"}
         EZ{"Eurozona"}
-        GG{"Guernesey"}
         IC{"Islas Canarias"}
         QO{"Islas Ultramarinas"}
         TA{"Tristán da Cunha"}
@@ -31,5 +32,4 @@
     Countries%variant{
         CD{"Congo (República Democrática del Congo)"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_AR.txt b/icu4c/source/data/region/es_AR.txt
index 45edf25..bb6f1eb 100644
--- a/icu4c/source/data/region/es_AR.txt
+++ b/icu4c/source/data/region/es_AR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_AR{
     %%Parent{"es_419"}
     Countries{
@@ -10,5 +11,4 @@
     Countries%short{
         GB{"RU"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_BO.txt b/icu4c/source/data/region/es_BO.txt
index 01579cf..a735d3d 100644
--- a/icu4c/source/data/region/es_BO.txt
+++ b/icu4c/source/data/region/es_BO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_BO{
     %%Parent{"es_419"}
     Countries{
@@ -10,5 +11,4 @@
     Countries%short{
         GB{"RU"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_BR.txt b/icu4c/source/data/region/es_BR.txt
index a8d655c..a18c09f 100644
--- a/icu4c/source/data/region/es_BR.txt
+++ b/icu4c/source/data/region/es_BR.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_BR{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_BZ.txt b/icu4c/source/data/region/es_BZ.txt
index f703412..471108e 100644
--- a/icu4c/source/data/region/es_BZ.txt
+++ b/icu4c/source/data/region/es_BZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_BZ{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_CL.txt b/icu4c/source/data/region/es_CL.txt
index cc7b1ab..1d7a86d 100644
--- a/icu4c/source/data/region/es_CL.txt
+++ b/icu4c/source/data/region/es_CL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CL{
     %%Parent{"es_419"}
     Countries{
@@ -11,5 +12,4 @@
     Countries%short{
         GB{"RU"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_CO.txt b/icu4c/source/data/region/es_CO.txt
index bffa2eb..f1f4387 100644
--- a/icu4c/source/data/region/es_CO.txt
+++ b/icu4c/source/data/region/es_CO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CO{
     %%Parent{"es_419"}
     Countries{
@@ -10,5 +11,4 @@
     Countries%short{
         GB{"RU"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_CR.txt b/icu4c/source/data/region/es_CR.txt
index 7e4ffc1..8d7d079 100644
--- a/icu4c/source/data/region/es_CR.txt
+++ b/icu4c/source/data/region/es_CR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CR{
     %%Parent{"es_419"}
     Countries{
@@ -10,5 +11,4 @@
     Countries%short{
         GB{"RU"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_CU.txt b/icu4c/source/data/region/es_CU.txt
index a316a0d..1a3a70a 100644
--- a/icu4c/source/data/region/es_CU.txt
+++ b/icu4c/source/data/region/es_CU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CU{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_DO.txt b/icu4c/source/data/region/es_DO.txt
index 7530abb..a4ca636 100644
--- a/icu4c/source/data/region/es_DO.txt
+++ b/icu4c/source/data/region/es_DO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_DO{
     %%Parent{"es_419"}
     Countries{
@@ -10,5 +11,4 @@
     Countries%short{
         GB{"RU"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_EC.txt b/icu4c/source/data/region/es_EC.txt
index da94a6d..fca4a0f 100644
--- a/icu4c/source/data/region/es_EC.txt
+++ b/icu4c/source/data/region/es_EC.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_EC{
     %%Parent{"es_419"}
     Countries{
@@ -10,5 +11,4 @@
     Countries%short{
         GB{"RU"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_GT.txt b/icu4c/source/data/region/es_GT.txt
index 14552b4..d377434 100644
--- a/icu4c/source/data/region/es_GT.txt
+++ b/icu4c/source/data/region/es_GT.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_GT{
     %%Parent{"es_419"}
     Countries{
@@ -10,5 +11,4 @@
     Countries%short{
         GB{"RU"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_HN.txt b/icu4c/source/data/region/es_HN.txt
index 9ce0116..465d14a 100644
--- a/icu4c/source/data/region/es_HN.txt
+++ b/icu4c/source/data/region/es_HN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_HN{
     %%Parent{"es_419"}
     Countries{
@@ -10,5 +11,4 @@
     Countries%short{
         GB{"RU"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_MX.txt b/icu4c/source/data/region/es_MX.txt
index e127f41..ae70f8c 100644
--- a/icu4c/source/data/region/es_MX.txt
+++ b/icu4c/source/data/region/es_MX.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_MX{
     %%Parent{"es_419"}
     Countries{
@@ -29,5 +30,4 @@
     Countries%short{
         GB{"RU"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_NI.txt b/icu4c/source/data/region/es_NI.txt
index 2a2255a..0bfdc58 100644
--- a/icu4c/source/data/region/es_NI.txt
+++ b/icu4c/source/data/region/es_NI.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_NI{
     %%Parent{"es_419"}
     Countries{
@@ -10,5 +11,4 @@
     Countries%short{
         GB{"RU"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_PA.txt b/icu4c/source/data/region/es_PA.txt
index c254364..ea377ed 100644
--- a/icu4c/source/data/region/es_PA.txt
+++ b/icu4c/source/data/region/es_PA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PA{
     %%Parent{"es_419"}
     Countries{
@@ -10,5 +11,4 @@
     Countries%short{
         GB{"RU"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_PE.txt b/icu4c/source/data/region/es_PE.txt
index f98004f..f51a4cf 100644
--- a/icu4c/source/data/region/es_PE.txt
+++ b/icu4c/source/data/region/es_PE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PE{
     %%Parent{"es_419"}
     Countries{
@@ -10,5 +11,4 @@
     Countries%short{
         GB{"RU"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_PR.txt b/icu4c/source/data/region/es_PR.txt
index 05427e0..00f18b1 100644
--- a/icu4c/source/data/region/es_PR.txt
+++ b/icu4c/source/data/region/es_PR.txt
@@ -1,9 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PR{
     %%Parent{"es_419"}
     Countries{
         UM{"Islas menores alejadas de EE. UU."}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_PY.txt b/icu4c/source/data/region/es_PY.txt
index 011d7da..2e51d12 100644
--- a/icu4c/source/data/region/es_PY.txt
+++ b/icu4c/source/data/region/es_PY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PY{
     %%Parent{"es_419"}
     Countries{
@@ -10,5 +11,4 @@
     Countries%short{
         GB{"RU"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_SV.txt b/icu4c/source/data/region/es_SV.txt
index fc7116e..ad142d4 100644
--- a/icu4c/source/data/region/es_SV.txt
+++ b/icu4c/source/data/region/es_SV.txt
@@ -1,9 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_SV{
     %%Parent{"es_419"}
     Countries{
         UM{"Islas menores alejadas de EE. UU."}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_US.txt b/icu4c/source/data/region/es_US.txt
index 6f36612..10a247a 100644
--- a/icu4c/source/data/region/es_US.txt
+++ b/icu4c/source/data/region/es_US.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_US{
     %%Parent{"es_419"}
     Countries{
@@ -18,7 +19,6 @@
         AC{"Isla de la Ascensión"}
         BA{"Bosnia y Herzegovina"}
         CI{"Côte d’Ivoire"}
-        EZ{"zona euro"}
         GG{"Guernsey"}
         QO{"Territorios alejados de Oceanía"}
         TA{"Tristán de Acuña"}
@@ -27,5 +27,4 @@
     Countries%short{
         GB{"RU"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_UY.txt b/icu4c/source/data/region/es_UY.txt
index 41fc7c0..143b9b3 100644
--- a/icu4c/source/data/region/es_UY.txt
+++ b/icu4c/source/data/region/es_UY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_UY{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/es_VE.txt b/icu4c/source/data/region/es_VE.txt
index b09daf4..c4578eb 100644
--- a/icu4c/source/data/region/es_VE.txt
+++ b/icu4c/source/data/region/es_VE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_VE{
     %%Parent{"es_419"}
     Countries{
@@ -10,5 +11,4 @@
     Countries%short{
         GB{"RU"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/et.txt b/icu4c/source/data/region/et.txt
index 4a9ab7d..d7fc559 100644
--- a/icu4c/source/data/region/et.txt
+++ b/icu4c/source/data/region/et.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 et{
     Countries{
         001{"maailm"}
@@ -110,12 +111,12 @@
         EZ{"euroala"}
         FI{"Soome"}
         FJ{"Fidži"}
-        FK{"Malviini saared"}
+        FK{"Falklandi saared (Malviini saared)"}
         FM{"Mikroneesia"}
         FO{"Fääri saared"}
         FR{"Prantsusmaa"}
         GA{"Gabon"}
-        GB{"Suurbritannia"}
+        GB{"Ühendkuningriik"}
         GD{"Grenada"}
         GE{"Gruusia"}
         GF{"Prantsuse Guajaana"}
@@ -306,9 +307,8 @@
         CD{"Kongo-Kinshasa"}
         CG{"Kongo-Brazzaville"}
         CI{"Elevandiluurannik"}
-        CZ{"Tšehhia"}
+        CZ{"Tšehhi Vabariik"}
         SZ{"eSwatini"}
         TL{"Timor-Leste"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/eu.txt b/icu4c/source/data/region/eu.txt
index 829d25b..27f907a 100644
--- a/icu4c/source/data/region/eu.txt
+++ b/icu4c/source/data/region/eu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 eu{
     Countries{
         001{"Mundua"}
@@ -288,7 +289,7 @@
         WF{"Wallis eta Futuna"}
         WS{"Samoa"}
         XA{"Sasiazentuak"}
-        XB{"pseudobidia"}
+        XB{"Pseudobidia"}
         XK{"Kosovo"}
         YE{"Yemen"}
         YT{"Mayotte"}
@@ -307,5 +308,4 @@
         CI{"C¨ôte d’Ivore"}
         CZ{"Txekiar Errepublika"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ewo.txt b/icu4c/source/data/region/ewo.txt
index 4a77b27..3f9b3cc 100644
--- a/icu4c/source/data/region/ewo.txt
+++ b/icu4c/source/data/region/ewo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ewo{
     Countries{
         AD{"Andór"}
@@ -226,5 +227,4 @@
         ZM{"Zambí"}
         ZW{"Zimbabwé"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/fa.txt b/icu4c/source/data/region/fa.txt
index 3c2c5cc..9c8532d 100644
--- a/icu4c/source/data/region/fa.txt
+++ b/icu4c/source/data/region/fa.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fa{
     Countries{
         001{"جهان"}
@@ -304,9 +305,9 @@
     Countries%variant{
         CD{"کنگو (جمهوری دموکراتیک)"}
         CG{"کنگو (جمهوری)"}
+        CI{"ساحل‌عاج"}
         CZ{"جمهوری چک"}
         SZ{"سوازیلند"}
         TL{"تیمور شرقی"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/fa_AF.txt b/icu4c/source/data/region/fa_AF.txt
index 5df77f1..0759cc0 100644
--- a/icu4c/source/data/region/fa_AF.txt
+++ b/icu4c/source/data/region/fa_AF.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fa_AF{
     Countries{
         AD{"اندورا"}
@@ -92,5 +93,4 @@
         XK{"کوسوا"}
         ZW{"زیمبابوی"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ff.txt b/icu4c/source/data/region/ff.txt
index 53c5fe8..284df52 100644
--- a/icu4c/source/data/region/ff.txt
+++ b/icu4c/source/data/region/ff.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff{
     Countries{
         AD{"Anndoora"}
@@ -226,5 +227,4 @@
         ZM{"Sammbi"}
         ZW{"Simbaabuwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ff_Adlm.txt b/icu4c/source/data/region/ff_Adlm.txt
index 0865e99..86ad500 100644
--- a/icu4c/source/data/region/ff_Adlm.txt
+++ b/icu4c/source/data/region/ff_Adlm.txt
@@ -1,95 +1,314 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm{
     %%Parent{"root"}
     Countries{
         001{"𞤀𞤣𞤵𞤲𞤢"}
-        002{"𞤀𞤬𞤪𞤭𞤳"}
+        002{"𞤀𞤬𞤪𞤭𞤳𞤢𞥄"}
+        003{"𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫 𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄"}
+        005{"𞤙𞤢𞤥𞤲𞤢𞥄𞤲𞤺𞤫 𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄"}
         009{"𞤌𞤧𞤭𞤴𞤢𞤲𞤭𞥅"}
-        019{"𞤀𞤥𞤫𞤪𞤭𞤳"}
+        011{"𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 𞤀𞤬𞤪𞤭𞤳𞤢𞥄"}
+        013{"𞤚𞤵𞤥𞤦𞤮 𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄"}
+        014{"𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 𞤀𞤬𞤪𞤭𞤳𞤢𞥄"}
+        015{"𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 𞤀𞤬𞤪𞤭𞤳𞤢𞥄"}
+        017{"𞤚𞤵𞤥𞤦𞤮 𞤀𞤬𞤪𞤭𞤳𞤢𞥄"}
+        018{"𞤙𞤢𞥄𞤥𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 𞤀𞤬𞤪𞤭𞤳𞤢𞥄"}
+        019{"𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄"}
+        021{"𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄"}
+        029{"𞤑𞤢𞤪𞤦𞤭𞤴𞤢𞥄"}
+        030{"𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 𞤀𞥄𞤧𞤭𞤴𞤢"}
+        034{"𞤙𞤢𞤥𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 𞤀𞥄𞤧𞤭𞤴𞤢"}
+        035{"𞤙𞤢𞤥𞤬𞤭𞤯𞤲𞤢𞥄𞤲𞤺𞤫 𞤀𞥄𞤧𞤭𞤴𞤢"}
+        039{"𞤙𞤢𞤥𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 𞤓𞤪𞤨𞤢"}
+        053{"𞤀𞤧𞤼𞤢𞤪𞤤𞤢𞥄𞤧𞤭𞤴𞤢𞥄"}
+        054{"𞤃𞤭𞤤𞤢𞤲𞤭𞥅𞤧𞤴𞤢"}
+        057{"𞤖𞤭𞤤𞥆𞤮 𞤃𞤭𞤳𞤪𞤮𞤲𞤭𞥅𞤧𞤸𞤮"}
+        061{"𞤆𞤮𞤤𞤭𞤲𞤭𞥅𞤧𞤴𞤢"}
         142{"𞤀𞥄𞤧𞤭𞤴𞤢"}
-        150{"𞤓𞤪𞤮𞤨𞥆𞤢"}
+        143{"𞤚𞤵𞤥𞤦𞤮𞥅𞤪𞤭 𞤀𞥄𞤧𞤭𞤴𞤢"}
+        145{"𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 𞤀𞥄𞤧𞤭𞤴𞤢"}
+        150{"𞤓𞤪𞤨𞤢"}
+        151{"𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 𞤓𞤪𞤨𞤢"}
+        154{"𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 𞤓𞤪𞤨𞤢"}
+        155{"𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 𞤓𞤪𞤨𞤢"}
+        202{"𞤀𞤬𞤪𞤭𞤳𞤢𞥄 𞤂𞤫𞤧-𞤅𞤢𞥄𞤸𞤢𞤪𞤢"}
+        419{"𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄 𞤂𞤢𞤼𞤭𞤲𞤳𞤮"}
+        AC{"𞤅𞤵𞤪𞤭𞥅𞤪𞤫 𞤀𞤧𞤢𞤲𞤧𞤮𞥅𞤲"}
+        AD{"𞤀𞤲𞤣𞤮𞤪𞤢𞥄"}
+        AE{"𞤁𞤫𞤲𞤼𞤢𞤤 𞤋𞤥𞤪𞤢𞥄𞤼𞤭 𞤀𞥄𞤪𞤢𞤦𞤵"}
+        AF{"𞤀𞤬𞤺𞤢𞤲𞤭𞤧𞤼𞤢𞥄𞤲"}
+        AG{"𞤀𞤲𞤼𞤭𞤺𞤵𞤱𞤢 & 𞤄𞤢𞤪𞤦𞤵𞥅𞤣𞤢"}
+        AI{"𞤀𞤲𞤺𞤭𞤤𞤢𞥄"}
+        AL{"𞤀𞤤𞤦𞤢𞤲𞤭𞤴𞤢𞥄"}
+        AM{"𞤀𞤪𞤥𞤫𞤲𞤭𞤴𞤢𞥄"}
         AO{"𞤀𞤲𞤺𞤮𞤤𞤢𞥄"}
+        AQ{"𞤀𞤲𞤼𞤢𞤪𞤼𞤭𞤳𞤢𞥄"}
+        AR{"𞤀𞤪𞤶𞤢𞤲𞤼𞤭𞤲𞤢𞥄"}
+        AS{"𞤅𞤢𞤥𞤵𞤱𞤢 𞤀𞤥𞤫𞤪𞤭𞤳𞤭𞤴𞤢𞤲𞤳𞤮"}
+        AT{"𞤌𞤼𞤭𞤪𞤧𞤢"}
+        AU{"𞤌𞤧𞤼𞤢𞤪𞤤𞤭𞤴𞤢𞥄"}
+        AW{"𞤀𞤪𞤵𞤦𞤢𞥄"}
+        AX{"𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤀𞤤𞤢𞤲𞤣"}
+        AZ{"𞤀𞥁𞤫𞤪𞤦𞤢𞤭𞤶𞤢𞥄𞤲"}
+        BA{"𞤄𞤮𞤧𞤲𞤭𞤴𞤢 & 𞤖𞤫𞤪𞤧𞤫𞤳𞤮𞤾𞤭𞤲𞤢𞥄"}
+        BB{"𞤄𞤢𞤪𞤦𞤫𞥅𞤣𞤮𞥅𞤧"}
+        BD{"𞤄𞤢𞤲𞤺𞤭𞤤𞤢𞤣𞤫𞥅𞤧"}
+        BE{"𞤄𞤫𞤤𞤶𞤭𞤳𞤢𞥄"}
         BF{"𞤄𞤵𞤪𞤳𞤭𞤲𞤢 𞤊𞤢𞤧𞤮𞥅"}
+        BG{"𞤄𞤵𞥅𞤤𞤺𞤢𞤪𞤭𞤴𞤢𞥄"}
+        BH{"𞤄𞤢𞤸𞤢𞤪𞤢𞤴𞤲"}
         BI{"𞤄𞤵𞤪𞤵𞤲𞤣𞤭"}
         BJ{"𞤄𞤫𞤲𞤫𞤲"}
+        BL{"𞤅𞤼. 𞤄𞤢𞤪𞤼𞤫𞤤𞤭𞤥𞤭"}
+        BM{"𞤄𞤭𞤪𞤥𞤵𞤣𞤢"}
+        BN{"𞤄𞤵𞤪𞤲𞤢𞥄𞤴"}
+        BO{"𞤄𞤮𞤤𞤭𞥅𞤾𞤭𞤴𞤢𞥄"}
+        BQ{"𞤑𞤢𞤪𞤦𞤭𞤴𞤢𞥄 𞤖𞤮𞤤𞤢𞤲𞤣𞤭𞤴𞤢𞥄"}
+        BR{"𞤄𞤪𞤢𞥄𞥁𞤭𞤤"}
+        BS{"𞤄𞤢𞤸𞤢𞤥𞤢𞥄𞤧"}
+        BT{"𞤄𞤵𞥅𞤼𞤢𞥄𞤲"}
+        BV{"𞤅𞤵𞤪𞤭𞥅𞤪𞤫 𞤄𞤵𞥅𞤾𞤫𞥅"}
         BW{"‮𞤄𞤮𞤼𞤧𞤵𞤱𞤢𞥄𞤲𞤢"}
+        BY{"𞤄𞤫𞤤𞤢𞤪𞤵𞥅𞤧"}
+        BZ{"𞤄𞤫𞤤𞤭𞥅𞥁"}
         CA{"𞤑𞤢𞤲𞤢𞤣𞤢𞥄"}
+        CC{"𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤑𞤮𞤳𞤮𞥅𞤧 (𞤑𞤭𞥅𞤤𞤭𞤲𞤺)"}
         CD{"𞤑𞤮𞤲𞤺𞤮 - 𞤑𞤭𞤲𞤧𞤢𞤧𞤢"}
-        CF{"𞤀𞤬𞤪𞤭𞤳𞤭 𞤚𞤵𞤥𞤦𞤮𞥅𞤪𞤭"}
+        CF{"𞤐𞤣𞤫𞤲𞤣𞤭 𞤚𞤵𞤥𞤦𞤮𞥅𞤪𞤭 𞤀𞤬𞤪𞤭𞤳𞤢𞥄"}
         CG{"𞤑𞤮𞤲𞤺𞤮 - 𞤄𞤪𞤢𞥁𞤢𞤾𞤭𞤤"}
+        CH{"𞤅𞤵𞤱𞤭𞤪𞤧𞤢𞥄"}
         CI{"𞤑𞤮𞤼𞤣𞤭𞤾𞤢𞥄𞤪"}
+        CK{"𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤑𞤵𞥅𞤳"}
+        CL{"𞤕𞤭𞤤𞤫𞥊𞥅"}
         CM{"𞤑𞤢𞤥𞤢𞤪𞤵𞥅𞤲"}
+        CN{"𞤅𞤭𞥅𞤲"}
+        CO{"𞤑𞤮𞤤𞤮𞤥𞤦𞤭𞤴𞤢𞥄"}
+        CP{"𞤅𞤵𞤪𞤭𞥅𞤪𞤫 𞤑𞤭𞤤𞤭𞤨𞤫𞤪𞤼𞤮𞤲"}
+        CR{"𞤑𞤮𞤧𞤼𞤢 𞤈𞤭𞤳𞤢𞥄"}
+        CU{"𞤑𞤵𞥅𞤦𞤢𞥄"}
         CV{"𞤑𞤢𞥄𞤦𞤮 𞤜𞤫𞤪𞤣𞤫"}
+        CW{"𞤑𞤵𞥅𞤪𞤢𞤧𞤢𞤱𞤮"}
+        CX{"𞤅𞤵𞤪𞤭𞥅𞤪𞤫 𞤑𞤭𞤪𞤧𞤭𞤥𞤢𞥄𞤧"}
+        CY{"𞤑𞤵𞤦𞤪𞤵𞥅𞤧"}
+        CZ{"𞤕𞤫𞥅𞤳𞤭𞤴𞤢𞥄"}
+        DE{"𞤔𞤫𞤪𞤥𞤢𞤲𞤭𞥅"}
+        DG{"𞤔𞤮𞤺𞤮 𞤘𞤢𞥄𞤪𞤧𞤭𞤴𞤢"}
         DJ{"𞤔𞤭𞤦𞤵𞥅𞤼𞤭"}
+        DK{"𞤁𞤢𞤲𞤵𞤥𞤢𞤪𞤳"}
+        DM{"𞤁𞤮𞤥𞤭𞤲𞤭𞤳𞤢𞥄"}
+        DO{"𞤐𞤣𞤫𞤲𞤣𞤭 𞤁𞤮𞤥𞤭𞤲𞤭𞤳𞤢𞥄"}
         DZ{"𞤀𞤤𞤶𞤢𞤪𞤭𞥅"}
         EA{"𞤅𞤭𞤼𞥆𞤢 & 𞤃𞤫𞤤𞤭𞤤𞤢"}
+        EC{"𞤉𞤳𞤵𞤱𞤢𞤣𞤮𞥅𞤪"}
+        EE{"𞤉𞤧𞤼𞤮𞤲𞤭𞤴𞤢𞥄"}
         EG{"𞤃𞤭𞤧𞤭𞤪𞤢"}
         EH{"𞤅𞤢𞥄𞤸𞤢𞤪𞤢 𞤖𞤭𞥅𞤲𞤢𞥄𞤪𞤭"}
         ER{"𞤉𞤪𞤭𞥅𞤼𞤫𞤪𞤫"}
-        ES{"𞤋𞤧𞤨𞤢𞤲𞤭𞤴𞤢"}
+        ES{"𞤉𞤧𞤨𞤢𞤻𞤢𞥄"}
         ET{"𞤀𞤦𞤢𞤧𞤭𞤲𞤭𞥅"}
-        EU{"𞤑𞤢𞤱𞤼𞤢𞤤 𞤓𞤪𞤮𞤨𞥆𞤢"}
+        EU{"𞤑𞤢𞤱𞤼𞤢𞤤 𞤓𞤪𞤨𞤢"}
         EZ{"𞤊𞤭𞤪𞤤𞤢 𞤓𞤪𞤮𞥅"}
+        FI{"𞤊𞤭𞤲𞤤𞤢𞤲𞤣"}
+        FJ{"𞤊𞤭𞤶𞤭𞥅"}
+        FK{"𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤃𞤢𞤤𞤾𞤭𞤲𞤢𞥄𞤧"}
+        FM{"𞤃𞤭𞤳𞤪𞤮𞤲𞤫𞥅𞤧𞤭𞤴𞤢"}
+        FO{"𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤊𞤢𞤪𞤵𞥅𞤧"}
         FR{"𞤊𞤢𞤪𞤢𞤲𞤧𞤭"}
         GA{"𞤘𞤢𞤦𞤮𞤲"}
-        GG{"𞤘𞤢𞤴𞤪𞤢𞤲𞤧𞤭𞥅"}
+        GB{"𞤁𞤫𞤲𞤼𞤢𞤤 𞤐𞤺𞤫𞤯𞤵𞥅𞤪𞤭"}
+        GD{"𞤘𞤢𞤪𞤲𞤢𞤣𞤢𞥄"}
+        GE{"𞤔𞤮𞤪𞤶𞤭𞤴𞤢𞥄"}
+        GF{"𞤘𞤵𞤴𞤢𞥄𞤲 𞤊𞤪𞤢𞤲𞤧𞤭𞤲𞤳𞤮"}
+        GG{"𞤘𞤢𞤪𞤲𞤫𞤧𞤭𞥅"}
         GH{"𞤘𞤢𞤲𞤢"}
         GI{"𞤔𞤭𞤦𞤪𞤢𞤤𞤼𞤢𞥄"}
+        GL{"𞤘𞤭𞤪𞤤𞤢𞤲𞤣𞤭"}
         GM{"𞤘𞤢𞤥𞤦𞤭𞤴𞤢"}
         GN{"𞤘𞤭𞤲𞤫"}
+        GP{"𞤘𞤵𞤱𞤢𞤣𞤢𞤤𞤵𞤨𞤫𞥅"}
         GQ{"𞤘𞤭𞤲𞤫 𞤕𞤢𞤳𞤢𞤲𞤼𞤫𞥅𞤪𞤭"}
+        GR{"𞤀𞤤𞤴𞤵𞤲𞤢𞥄𞤲"}
+        GS{
+            "𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫 𞤔𞤮𞤪𞤶𞤭𞤴𞤢 & 𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫 "
+            "𞤅𞤢𞤲𞤣𞤵𞤱𞤭𞥅𞤷"
+        }
+        GT{"𞤘𞤵𞤱𞤢𞤼𞤫𞤥𞤢𞤤𞤢𞥄"}
+        GU{"𞤘𞤵𞤱𞤢𞥄𞤥"}
         GW{"𞤘𞤭𞤲𞤫-𞤄𞤭𞤧𞤢𞤱𞤮𞥅"}
+        GY{"𞤘𞤢𞤴𞤢𞤲𞤢𞥄"}
+        HK{"𞤖𞤮𞤲𞤺 𞤑𞤮𞤲𞤺"}
+        HM{"𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤖𞤭𞤪𞤣𞤭 & 𞤃𞤢𞤳𞤣𞤮𞤲𞤢𞤤"}
+        HN{"𞤖𞤮𞤲𞤣𞤭𞤪𞤢𞥄𞤧"}
+        HR{"𞤑𞤵𞤪𞤱𞤢𞥄𞤧𞤭𞤴𞤢"}
+        HT{"𞤖𞤢𞤴𞤼𞤭𞥅"}
+        HU{"𞤖𞤢𞤲𞤺𞤢𞤪𞤭𞤴𞤢𞥄"}
         IC{"𞤅𞤵𞤪𞤭𞥅𞤪𞤫-𞤑𞤢𞤲𞤢𞤪𞤭𞥅"}
+        ID{"𞤋𞤲𞤣𞤮𞤲𞤭𞥅𞤧𞤴𞤢"}
+        IE{"𞤋𞤪𞤤𞤢𞤲𞤣"}
+        IL{"𞤋𞤧𞤪𞤢𞥄𞤴𞤭𞥅𞤤"}
+        IM{"𞤅𞤵𞤪𞤭𞥅𞤪𞤫 𞤃𞤫𞥅𞤲"}
+        IN{"𞤋𞤲𞤣𞤭𞤴𞤢"}
         IO{"𞤚𞤵𞤥𞤦𞤫𞤪𞤫 𞤄𞤪𞤭𞤼𞤢𞤲𞤭𞤲𞤳𞤮𞥅𞤪𞤫 𞤀𞤬𞤪𞤭𞤳𞤭"}
+        IQ{"𞤋𞤪𞤢𞥄𞤳"}
+        IR{"𞤋𞤪𞤢𞥄𞤲"}
+        IS{"𞤀𞤴𞤧𞤵𞤤𞤢𞤲𞤣"}
+        IT{"𞤋𞤼𞤢𞤤𞤭𞥅"}
+        JE{"𞤔𞤫𞤪𞤧𞤭𞥅"}
+        JM{"𞤔𞤢𞤥𞤢𞤴𞤳𞤢𞥄"}
+        JO{"𞤔𞤮𞤪𞤣𞤢𞥄𞤲"}
+        JP{"𞤐𞤭𞤨𞥆𞤮𞤲"}
         KE{"𞤑𞤫𞤲𞤭𞤴𞤢𞥄"}
+        KG{"𞤑𞤭𞤪𞤶𞤭𞤧𞤼𞤢𞥄𞤲"}
+        KH{"𞤑𞤢𞤥𞤦𞤮𞥅𞤣𞤭𞤴𞤢"}
+        KI{"𞤑𞤭𞤪𞤦𞤢𞤼𞤭𞥅"}
         KM{"𞤑𞤮𞤥𞤮𞥅𞤪𞤮"}
+        KN{"𞤅𞤼. 𞤑𞤪𞤭𞤧𞤼𞤮𞤦𞤢𞤤 & 𞤐𞤫𞥅𞤾𞤭𞤧"}
+        KP{"𞤑𞤮𞥅𞤪𞤫𞤴𞤢𞥄 𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫"}
+        KR{"𞤑𞤮𞥅𞤪𞤫𞤴𞤢𞥄 𞤙𞤢𞤥𞤲𞤢𞥄𞤲𞤺𞤫"}
+        KW{"𞤑𞤵𞤱𞤢𞤴𞤼𞤵"}
+        KY{"𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤑𞤢𞤴𞤥𞤢𞥄𞤲"}
+        KZ{"𞤑𞤢𞥁𞤢𞤧𞤼𞤢𞥄𞤲"}
+        LA{"𞤂𞤢𞤱𞤮𞥅𞤧"}
+        LB{"𞤂𞤭𞤦𞤢𞤲𞤮𞥅𞤲"}
+        LC{"𞤅𞤼. 𞤂𞤵𞥅𞤧𞤭𞤴𞤢"}
+        LI{"𞤂𞤭𞤧𞤼𞤫𞤲𞤧𞤭𞤼𞤫𞥅𞤲"}
+        LK{"𞤅𞤭𞤪 𞤂𞤢𞤲𞤳𞤢𞥄"}
         LR{"𞤂𞤢𞤦𞤭𞤪𞤭𞤴𞤢𞥄"}
         LS{"𞤂𞤫𞤧𞤮𞤼𞤮𞥅"}
+        LT{"𞤂𞤭𞤼𞤵𞤾𞤢"}
+        LU{"𞤂𞤵𞤳𞤧𞤢𞤲𞤦𞤵𞥅𞤺"}
+        LV{"𞤂𞤢𞤼𞤾𞤭𞤴𞤢"}
         LY{"𞤂𞤭𞤦𞤭𞤴𞤢𞥄"}
         MA{"𞤃𞤢𞤪𞤮𞥅𞤳"}
         MC{"𞤃𞤮𞤲𞤢𞤳𞤮𞥅"}
+        MD{"𞤃𞤮𞤤𞤣𞤮𞤾𞤢𞥄"}
+        ME{"𞤃𞤮𞤲𞤼𞤫𞤲𞤫𞥅𞤺𞤮𞤪𞤮"}
+        MF{"𞤅𞤼. 𞤃𞤢𞤪𞤼𞤫𞤲"}
         MG{"𞤃𞤢𞤣𞤢𞤺𞤢𞤧𞤳𞤢𞥄𞤪"}
+        MH{"𞤅𞤵𞤪𞤭𞥅𞤪𞤫 𞤃𞤢𞤪𞥃𞤢𞤤"}
+        MK{"𞤃𞤢𞤳𞤫𞤣𞤮𞤲𞤭𞤴𞤢𞥄 𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫"}
         ML{"𞤃𞤢𞥄𞤤𞤭"}
+        MM{"𞤃𞤭𞤴𞤢𞤥𞤢𞥄𞤪 (𞤄𞤵𞥅𞤪𞤥𞤢)"}
+        MN{"𞤃𞤮𞤲𞤺𞤮𞤤𞤭𞤴𞤢"}
+        MO{"𞤃𞤢𞤳𞤢𞤱𞤮𞥅"}
+        MP{"𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤃𞤢𞤪𞤭𞤴𞤢𞥄𞤲𞤢 𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭"}
+        MQ{"𞤃𞤢𞤪𞤼𞤭𞤲𞤭𞤳𞤢𞥄"}
         MR{"𞤃𞤮𞤪𞤼𞤢𞤲𞤭𞥅"}
+        MS{"𞤃𞤮𞤲𞤧𞤭𞤪𞤢𞥄𞤼"}
+        MT{"𞤃𞤢𞤤𞤼𞤢"}
         MU{"𞤃𞤮𞤪𞤭𞥅𞤧𞤭"}
+        MV{"𞤃𞤢𞤤𞤣𞤭𞥅𞤬"}
         MW{"𞤃𞤢𞤤𞤢𞤱𞤭𞥅"}
+        MX{"𞤃𞤫𞤳𞤧𞤭𞤳𞤮𞥅"}
+        MY{"𞤃𞤢𞤤𞤫𞥅𞤧𞤭𞤴𞤢"}
         MZ{"𞤃𞤮𞤧𞤢𞤥𞤦𞤭𞥅𞤳"}
         NA{"𞤐𞤢𞤥𞤭𞥅𞤦𞤭𞤴𞤢𞥄"}
+        NC{"𞤑𞤢𞤤𞤭𞤣𞤮𞤲𞤭𞤴𞤢𞥄 𞤖𞤫𞤧𞤮"}
         NE{"𞤐𞤭𞥅𞤶𞤫𞤪"}
+        NF{"𞤅𞤵𞤪𞤭𞥅𞤪𞤫 𞤐𞤮𞤪𞤬𞤮𞤤𞤳𞤵"}
         NG{"𞤐𞤢𞤶𞤫𞤪𞤭𞤴𞤢𞥄"}
+        NI{"𞤐𞤭𞤳𞤢𞤪𞤢𞤺𞤵𞤱𞤢𞥄"}
+        NL{"𞤖𞤮𞤤𞤢𞤲𞤣𞤭𞤴𞤢𞥄"}
+        NO{"𞤐𞤮𞤪𞤺𞤫𞤴𞤢𞥄"}
+        NP{"𞤐𞤭𞤨𞤢𞥄𞤤"}
+        NR{"𞤐𞤢𞤱𞤪𞤵"}
+        NU{"𞤐𞤵𞥅𞤱𞤭"}
+        NZ{"𞤐𞤫𞤱 𞤟𞤫𞤤𞤢𞤲𞤣"}
+        OM{"𞤌𞥅𞤥𞤢𞥄𞤲"}
+        PA{"𞤆𞤢𞤲𞤢𞤥𞤢"}
+        PE{"𞤆𞤫𞤪𞤵𞥅"}
+        PF{"𞤆𞤮𞤤𞤭𞤲𞤫𞥅𞤧𞤭𞤴𞤢 𞤊𞤪𞤢𞤲𞤧𞤭𞤲𞤳𞤮"}
+        PG{"𞤆𞤢𞤨𞤵𞤱𞤢 𞤘𞤭𞤲𞤫 𞤖𞤫𞤧𞤮"}
+        PH{"𞤊𞤭𞤤𞤭𞤨𞤭𞥅𞤲"}
+        PK{"𞤆𞤢𞤳𞤭𞤧𞤼𞤢𞥄𞤲"}
         PL{"𞤆𞤮𞤤𞤢𞤲𞤣"}
+        PM{"𞤅𞤼. 𞤆𞤭𞤴𞤫𞥅𞤪 & 𞤃𞤭𞤳𞤫𞤤𞤮𞤲"}
+        PN{"𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤆𞤭𞤼𞤳𞤭𞥅𞤪𞤲𞤵"}
+        PR{"𞤆𞤮𞤪𞤼𞤮 𞤈𞤭𞤳𞤮𞥅"}
+        PS{"𞤂𞤫𞤧𞤣𞤭𞥅𞤶𞤭 𞤊𞤢𞤤𞤫𞤧𞤼𞤭𞥅𞤲"}
+        PT{"𞤆𞤮𞥅𞤪𞤼𞤵𞤺𞤢𞥄𞤤"}
+        PW{"𞤆𞤢𞤤𞤢𞤱"}
+        PY{"𞤆𞤢𞥄𞤪𞤢𞤺𞤵𞤱𞤢𞥄𞤴"}
+        QA{"𞤊𞤢𞤤𞤫𞤧𞤼𞤭𞥅𞤲"}
+        QO{"𞤚𞤢𞤼𞥆𞤫𞥅𞤪𞤭 𞤌𞤧𞤴𞤢𞤲𞤭𞤴𞤢"}
         RE{"𞤈𞤫𞥅𞤲𞤭𞤴𞤮𞤲"}
+        RO{"𞤈𞤵𞤥𞤢𞥄𞤲𞤭𞤴𞤢"}
+        RS{"𞤅𞤫𞤪𞤦𞤭𞤴𞤢𞥄"}
+        RU{"𞤈𞤮𞥅𞤧𞤭𞤴𞤢"}
         RW{"𞤈𞤵𞤱𞤢𞤲𞤣𞤢𞥄"}
+        SA{"𞤅𞤢𞤵𞥅𞤣 𞤀𞥄𞤪𞤢𞤦𞤭𞤴𞤢𞥄"}
+        SB{"𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤅𞤵𞤤𞤢𞤴𞤥𞤢𞥄𞤲"}
         SC{"𞤅𞤫𞤴𞤭𞤧𞤫𞤤"}
         SD{"𞤅𞤵𞤣𞤢𞥄𞤲"}
+        SE{"𞤅𞤵𞤱𞤫𞤣𞤭𞤴𞤢𞥄"}
+        SG{"𞤅𞤭𞤲𞤺𞤢𞤨𞤵𞥅𞤪"}
         SH{"𞤅𞤫𞤲-𞤖𞤫𞤤𞤫𞤲𞤢𞥄"}
+        SI{"𞤅𞤵𞤤𞤮𞤾𞤫𞤲𞤭𞤴𞤢𞥄"}
+        SJ{"𞤅𞤢𞤾𞤢𞤤𞤦𞤢𞤪𞤣 & 𞤔𞤢𞤲 𞤃𞤢𞤴𞤫𞤲"}
+        SK{"𞤅𞤵𞤤𞤮𞤾𞤢𞥄𞤳𞤭𞤴𞤢"}
         SL{"𞤅𞤢𞤪𞤢𞤤𞤮𞤲"}
+        SM{"𞤅𞤢𞤲 𞤃𞤢𞤪𞤭𞤲𞤮𞥅"}
         SN{"𞤅𞤫𞤲𞤫𞤺𞤢𞥄𞤤"}
         SO{"𞤅𞤵𞥅𞤥𞤢𞥄𞤤𞤭"}
+        SR{"𞤅𞤵𞤪𞤭𞤲𞤢𞥄𞤥"}
         SS{"𞤅𞤵𞤣𞤢𞥄𞤲 𞤂𞤫𞤧𞤤𞤫𞤴𞤪𞤭"}
         ST{"𞤅𞤢𞤱𞤵 𞤚𞤵𞤥𞤫𞥅 & 𞤆𞤫𞤪𞤫𞤲𞤧𞤭𞤨𞤫"}
+        SV{"𞤉𞤤 𞤅𞤢𞤤𞤾𞤢𞤣𞤮𞥅𞤪"}
+        SX{"𞤅𞤫𞤲𞤼𞤵 𞤃𞤢𞥄𞤪𞤼𞤫𞤲"}
+        SY{"𞤅𞤵𞥅𞤪𞤭𞤴𞤢𞥄"}
         SZ{"𞤉𞤧𞤱𞤢𞤼𞤭𞤲𞤭"}
+        TA{"𞤚𞤵𞤪𞤧𞤵𞤼𞤢𞤲 𞤁𞤢𞤳𞤵𞤲𞤸𞤢"}
+        TC{"𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤚𞤵𞤪𞤳𞤵𞤧 & 𞤑𞤢𞤴𞤳𞤮𞥅𞤧"}
         TD{"𞤕𞤢𞥄𞤣"}
         TF{"𞤚𞤵𞤥𞤦𞤫 𞤂𞤫𞤧𞤤𞤫𞤴𞤶𞤫 𞤊𞤪𞤢𞤲𞤧𞤭"}
         TG{"𞤚𞤮𞤺𞤮"}
+        TH{"𞤚𞤢𞥄𞤴𞤤𞤢𞤲𞤣"}
+        TJ{"𞤚𞤢𞤶𞤭𞤳𞤭𞤧𞤼𞤢𞥄𞤲"}
+        TK{"𞤚𞤮𞥅𞤳𞤮𞤤𞤢𞥄𞤱𞤵"}
+        TL{"𞤚𞤭𞤥𞤮𞥅𞤪 𞤂𞤫𞤧𞤼𞤫"}
+        TM{"𞤚𞤵𞤪𞤳𞤵𞤥𞤫𞤲𞤭𞤧𞤼𞤢𞥄𞤲"}
         TN{"𞤚𞤵𞤲𞤭𞥅𞤧𞤢"}
+        TO{"𞤚𞤮𞤲𞤺𞤢"}
+        TR{"𞤚𞤵𞤪𞤳𞤭𞤴𞤢𞥄"}
+        TT{"𞤚𞤭𞤪𞤲𞤭𞤣𞤢𞥄𞤣 & 𞤚𞤮𞤦𞤢𞤺𞤮𞥅"}
+        TV{"𞤚𞤵𞥅𞤾𞤢𞤤𞤵"}
+        TW{"𞤚𞤢𞤴𞤱𞤢𞥄𞤲"}
         TZ{"𞤚𞤢𞤲𞤧𞤢𞤲𞤭𞥅"}
+        UA{"𞤓𞤳𞤪𞤫𞥅𞤲𞤭𞤴𞤢"}
         UG{"𞤓𞤺𞤢𞤲𞤣𞤢𞥄"}
-        UN{"𞤑𞤢𞤱𞤼𞤢𞤤 𞤘𞤫𞤲𞤣𞤭𞥅𞤶𞤭 𞤀𞤣𞤵𞤲𞤢"}
+        UM{"𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤁𞤢𞥄𞤴𞤭𞥅𞤯𞤫 𞤁𞤂𞤀"}
+        UN{"𞤑𞤢𞤱𞤼𞤢𞤤 𞤘𞤫𞤲𞤯𞤭"}
+        US{"𞤁𞤫𞤲𞤼𞤢𞤤 𞤂𞤢𞤪𞤫"}
+        UY{"𞤓𞤪𞤵𞤺𞤵𞤱𞤢𞥄𞤴"}
+        UZ{"𞤓𞥁𞤦𞤫𞤳𞤭𞤧𞤼𞤢𞥄𞤲"}
+        VA{"𞤜𞤢𞤼𞤭𞤳𞤢𞥄𞤲"}
+        VC{"𞤅𞤼. 𞤜𞤭𞤲𞤧𞤢𞤲 & 𞤘𞤭𞤪𞤲𞤢𞤣𞤭𞥅𞤲"}
+        VE{"𞤜𞤫𞥊𞤲𞤭𞥅𞥁𞤵𞤱𞤫𞤤𞤢𞥄"}
+        VG{"𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤜𞤭𞤪𞤺𞤭𞥅𞤲 𞤄𞤪𞤭𞤼𞤢𞤲𞤭𞤴𞤢𞤲𞤳𞤮𞥅𞤶𞤫"}
+        VI{"𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤜𞤭𞤪𞤺𞤭𞥅𞤲 𞤁𞤂𞤀"}
+        VN{"𞤜𞤭𞤴𞤫𞤼𞤲𞤢𞥄𞤥"}
+        VU{"𞤜𞤢𞤲𞤵𞤱𞤢𞥄𞤼𞤵"}
+        WF{"𞤏𞤢𞤤𞥆𞤭𞥅𞤧 & 𞤊𞤵𞤼𞤵𞤲𞤢"}
+        WS{"𞤅𞤢𞤥𞤵𞤱𞤢"}
+        XK{"𞤑𞤮𞥅𞤧𞤮𞤾𞤮𞥅"}
+        YE{"𞤒𞤢𞤥𞤢𞤲"}
         YT{"𞤃𞤢𞤴𞤮𞥅𞤼𞤵"}
         ZA{"𞤀𞤬𞤪𞤭𞤳𞤢 𞤂𞤫𞤧𞤤𞤫𞤴𞤪𞤭"}
         ZM{"𞤟𞤢𞤥𞤦𞤭𞤴𞤢"}
         ZW{"𞤟𞤭𞤥𞤦𞤢𞥄𞤥𞤵𞤴𞤢"}
-        ZZ{"𞤂𞤢𞤪𞤢𞤤 𞤀𞤧-𞤢𞤲𞤣𞤢𞥄𞤲𞤺𞤢𞤤"}
+        ZZ{"𞤖𞤭𞤤𞥆𞤮 𞤀𞤧-𞤢𞤲𞤣𞤢𞥄𞤲𞤺𞤮"}
     }
     Countries%short{
+        GB{"𞤑𞤘"}
         US{"𞤁𞤂𞤀"}
     }
     Countries%variant{
         CD{"𞤐𞤣𞤫𞤲𞤣𞤭 𞤁𞤫𞤥𞤮𞤳𞤪𞤢𞥄𞤳𞤵 𞤑𞤮𞤲𞤺𞤮"}
         CG{"𞤐𞤣𞤫𞤲𞤣𞤭 𞤑𞤮𞤲𞤺𞤮"}
+        CZ{"𞤐𞤣𞤫𞤲𞤣𞤭 𞤕𞤫𞤧𞤳𞤢𞥄"}
         SZ{"𞤅𞤵𞤱𞤢𞥄𞤧𞤭𞤤𞤫𞤴𞤣𞤭"}
+        TL{"𞤚𞤭𞤥𞤮𞥅𞤪 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞤺𞤫"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ff_CM.txt b/icu4c/source/data/region/ff_CM.txt
index c381f6c..0bf68ef 100644
--- a/icu4c/source/data/region/ff_CM.txt
+++ b/icu4c/source/data/region/ff_CM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_CM{
     "%%ALIAS"{"ff_Latn_CM"}
 }
diff --git a/icu4c/source/data/region/ff_GN.txt b/icu4c/source/data/region/ff_GN.txt
index c3a0bf3..433db4d 100644
--- a/icu4c/source/data/region/ff_GN.txt
+++ b/icu4c/source/data/region/ff_GN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_GN{
     "%%ALIAS"{"ff_Latn_GN"}
 }
diff --git a/icu4c/source/data/region/ff_Latn.txt b/icu4c/source/data/region/ff_Latn.txt
index 3d8715b..d30cb62 100644
--- a/icu4c/source/data/region/ff_Latn.txt
+++ b/icu4c/source/data/region/ff_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ff_Latn_CM.txt b/icu4c/source/data/region/ff_Latn_CM.txt
index a141c2f..123bc57 100644
--- a/icu4c/source/data/region/ff_Latn_CM.txt
+++ b/icu4c/source/data/region/ff_Latn_CM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/ff_Latn_GN.txt b/icu4c/source/data/region/ff_Latn_GN.txt
index b37284e..54b7546 100644
--- a/icu4c/source/data/region/ff_Latn_GN.txt
+++ b/icu4c/source/data/region/ff_Latn_GN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/ff_Latn_MR.txt b/icu4c/source/data/region/ff_Latn_MR.txt
index 9b83c95..dd6364b 100644
--- a/icu4c/source/data/region/ff_Latn_MR.txt
+++ b/icu4c/source/data/region/ff_Latn_MR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/ff_Latn_SN.txt b/icu4c/source/data/region/ff_Latn_SN.txt
index 6112f6f..33ed407 100644
--- a/icu4c/source/data/region/ff_Latn_SN.txt
+++ b/icu4c/source/data/region/ff_Latn_SN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/ff_MR.txt b/icu4c/source/data/region/ff_MR.txt
index 17a8873..1da6e51 100644
--- a/icu4c/source/data/region/ff_MR.txt
+++ b/icu4c/source/data/region/ff_MR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_MR{
     "%%ALIAS"{"ff_Latn_MR"}
 }
diff --git a/icu4c/source/data/region/ff_SN.txt b/icu4c/source/data/region/ff_SN.txt
index c690854..ca2f4ec 100644
--- a/icu4c/source/data/region/ff_SN.txt
+++ b/icu4c/source/data/region/ff_SN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_SN{
     "%%ALIAS"{"ff_Latn_SN"}
 }
diff --git a/icu4c/source/data/region/fi.txt b/icu4c/source/data/region/fi.txt
index 98e6258..88ef9d9 100644
--- a/icu4c/source/data/region/fi.txt
+++ b/icu4c/source/data/region/fi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fi{
     Countries{
         001{"maailma"}
@@ -22,7 +23,7 @@
         039{"Etelä-Eurooppa"}
         053{"Australaasia"}
         054{"Melanesia"}
-        057{"Mikronesia"}
+        057{"Mikronesian alue"}
         061{"Polynesia"}
         142{"Aasia"}
         143{"Keski-Aasia"}
@@ -111,7 +112,7 @@
         FI{"Suomi"}
         FJ{"Fidži"}
         FK{"Falklandinsaaret (Malvinassaaret)"}
-        FM{"Mikronesian liittovaltio"}
+        FM{"Mikronesia"}
         FO{"Färsaaret"}
         FR{"Ranska"}
         GA{"Gabon"}
@@ -128,7 +129,7 @@
         GP{"Guadeloupe"}
         GQ{"Päiväntasaajan Guinea"}
         GR{"Kreikka"}
-        GS{"Etelä-Georgia ja Eteläiset Sandwichsaaret"}
+        GS{"Etelä-Georgia ja Eteläiset Sandwichinsaaret"}
         GT{"Guatemala"}
         GU{"Guam"}
         GW{"Guinea-Bissau"}
@@ -227,7 +228,7 @@
         PW{"Palau"}
         PY{"Paraguay"}
         QA{"Qatar"}
-        QO{"ulkomeri"}
+        QO{"Oseanian erillissaaret"}
         RE{"Réunion"}
         RO{"Romania"}
         RS{"Serbia"}
@@ -241,7 +242,7 @@
         SG{"Singapore"}
         SH{"Saint Helena"}
         SI{"Slovenia"}
-        SJ{"Huippuvuoret ja Jan Mayen"}
+        SJ{"Svalbard ja Jan Mayen"}
         SK{"Slovakia"}
         SL{"Sierra Leone"}
         SM{"San Marino"}
@@ -253,11 +254,11 @@
         SV{"El Salvador"}
         SX{"Sint Maarten"}
         SY{"Syyria"}
-        SZ{"Swazimaa"}
+        SZ{"Eswatini"}
         TA{"Tristan da Cunha"}
         TC{"Turks- ja Caicossaaret"}
         TD{"Tšad"}
-        TF{"Ranskan eteläiset alueet"}
+        TF{"Ranskan eteläiset ja antarktiset alueet"}
         TG{"Togo"}
         TH{"Thaimaa"}
         TJ{"Tadžikistan"}
@@ -307,8 +308,7 @@
         CG{"Kongo-Brazzaville"}
         CI{"Côte d’Ivoire"}
         CZ{"Tšekin tasavalta"}
-        SZ{"Eswatini"}
+        SZ{"Swazimaa"}
         TL{"Timor-Leste"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/fil.txt b/icu4c/source/data/region/fil.txt
index 02fde77..5ab6eb4 100644
--- a/icu4c/source/data/region/fil.txt
+++ b/icu4c/source/data/region/fil.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fil{
     Countries{
         001{"Mundo"}
@@ -309,5 +310,4 @@
         CZ{"Czech Republic"}
         TL{"East Timor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/fil_PH.txt b/icu4c/source/data/region/fil_PH.txt
index 5b83d82..481c955 100644
--- a/icu4c/source/data/region/fil_PH.txt
+++ b/icu4c/source/data/region/fil_PH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/fo.txt b/icu4c/source/data/region/fo.txt
index 0f40cfc..d079eb1 100644
--- a/icu4c/source/data/region/fo.txt
+++ b/icu4c/source/data/region/fo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fo{
     Countries{
         001{"heimur"}
@@ -183,6 +184,7 @@
         MF{"St-Martin"}
         MG{"Madagaskar"}
         MH{"Marshalloyggjar"}
+        MK{"Norður Makedónia"}
         ML{"Mali"}
         MM{"Myanmar (Burma)"}
         MN{"Mongolia"}
@@ -303,5 +305,4 @@
     Countries%variant{
         SZ{"Svasiland"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/fr.txt b/icu4c/source/data/region/fr.txt
index b000d4e..96451de 100644
--- a/icu4c/source/data/region/fr.txt
+++ b/icu4c/source/data/region/fr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr{
     Countries{
         001{"Monde"}
@@ -61,7 +62,7 @@
         BJ{"Bénin"}
         BL{"Saint-Barthélemy"}
         BM{"Bermudes"}
-        BN{"Brunéi Darussalam"}
+        BN{"Brunei"}
         BO{"Bolivie"}
         BQ{"Pays-Bas caribéens"}
         BR{"Brésil"}
@@ -110,8 +111,8 @@
         EZ{"zone euro"}
         FI{"Finlande"}
         FJ{"Fidji"}
-        FK{"Îles Falkland"}
-        FM{"États fédérés de Micronésie"}
+        FK{"Îles Malouines (Îles Falkland)"}
+        FM{"Micronésie"}
         FO{"Îles Féroé"}
         FR{"France"}
         GA{"Gabon"}
@@ -128,13 +129,13 @@
         GP{"Guadeloupe"}
         GQ{"Guinée équatoriale"}
         GR{"Grèce"}
-        GS{"Géorgie du Sud et îles Sandwich du Sud"}
+        GS{"Géorgie du Sud-et-les Îles Sandwich du Sud"}
         GT{"Guatemala"}
         GU{"Guam"}
         GW{"Guinée-Bissau"}
         GY{"Guyana"}
         HK{"Hong Kong"}
-        HM{"Îles Heard et McDonald"}
+        HM{"Îles Heard-et-MacDonald"}
         HN{"Honduras"}
         HR{"Croatie"}
         HT{"Haïti"}
@@ -155,7 +156,7 @@
         JO{"Jordanie"}
         JP{"Japon"}
         KE{"Kenya"}
-        KG{"Kirghizistan"}
+        KG{"Kirghizstan"}
         KH{"Cambodge"}
         KI{"Kiribati"}
         KM{"Comores"}
@@ -170,7 +171,7 @@
         LC{"Sainte-Lucie"}
         LI{"Liechtenstein"}
         LK{"Sri Lanka"}
-        LR{"Libéria"}
+        LR{"Liberia"}
         LS{"Lesotho"}
         LT{"Lituanie"}
         LU{"Luxembourg"}
@@ -203,7 +204,7 @@
         NC{"Nouvelle-Calédonie"}
         NE{"Niger"}
         NF{"Île Norfolk"}
-        NG{"Nigéria"}
+        NG{"Nigeria"}
         NI{"Nicaragua"}
         NL{"Pays-Bas"}
         NO{"Norvège"}
@@ -279,11 +280,11 @@
         UY{"Uruguay"}
         UZ{"Ouzbékistan"}
         VA{"État de la Cité du Vatican"}
-        VC{"Saint-Vincent-et-les-Grenadines"}
+        VC{"Saint-Vincent-et-les Grenadines"}
         VE{"Venezuela"}
         VG{"Îles Vierges britanniques"}
         VI{"Îles Vierges des États-Unis"}
-        VN{"Vietnam"}
+        VN{"Viêt Nam"}
         VU{"Vanuatu"}
         WF{"Wallis-et-Futuna"}
         WS{"Samoa"}
@@ -310,5 +311,4 @@
         SZ{"Swaziland"}
         TL{"Timor-Oriental"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/fr_BE.txt b/icu4c/source/data/region/fr_BE.txt
index b9d2f9c..7b8cd5e 100644
--- a/icu4c/source/data/region/fr_BE.txt
+++ b/icu4c/source/data/region/fr_BE.txt
@@ -1,9 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_BE{
     Countries{
-        BN{"Brunei"}
         GS{"Îles Géorgie du Sud et Sandwich du Sud"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/fr_CA.txt b/icu4c/source/data/region/fr_CA.txt
index 1eb0827..7796d2b 100644
--- a/icu4c/source/data/region/fr_CA.txt
+++ b/icu4c/source/data/region/fr_CA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_CA{
     Countries{
         030{"Asie orientale"}
@@ -10,23 +11,24 @@
         155{"Europe occidentale"}
         AC{"île de l’Ascension"}
         AX{"îles d’Åland"}
-        BN{"Brunei"}
         BV{"île Bouvet"}
         BY{"Bélarus"}
         CC{"îles Cocos (Keeling)"}
         CK{"îles Cook"}
         CX{"île Christmas"}
         FK{"îles Falkland (Malouines)"}
-        FM{"Micronésie"}
         FO{"îles Féroé"}
         HM{"îles Heard et McDonald"}
         IC{"îles Canaries"}
         IM{"île de Man"}
         IO{"territoire britannique de l’océan Indien"}
+        KG{"Kirghizistan"}
+        LR{"Libéria"}
         MF{"Saint-Martin (France)"}
         MM{"Myanmar"}
         MP{"Mariannes du Nord"}
         NF{"île Norfolk"}
+        NG{"Nigéria"}
         PN{"îles Pitcairn"}
         QO{"Océanie lointaine"}
         RE{"la Réunion"}
@@ -34,13 +36,12 @@
         TL{"Timor-Leste"}
         UM{"îles mineures éloignées des États-Unis"}
         VA{"Cité du Vatican"}
-        VC{"Saint-Vincent-et-les Grenadines"}
         VG{"îles Vierges britanniques"}
         VI{"îles Vierges américaines"}
+        VN{"Vietnam"}
     }
     Countries%variant{
         CI{"République de Côte d’Ivoire"}
         TL{"Timor oriental"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/fur.txt b/icu4c/source/data/region/fur.txt
index 8091f73..5fa1ffd 100644
--- a/icu4c/source/data/region/fur.txt
+++ b/icu4c/source/data/region/fur.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fur{
     Countries{
         001{"Mont"}
@@ -289,5 +290,4 @@
         CD{"Congo (RDC)"}
         CG{"Congo (Republiche)"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/fy.txt b/icu4c/source/data/region/fy.txt
index abfe1ac..5e532d7 100644
--- a/icu4c/source/data/region/fy.txt
+++ b/icu4c/source/data/region/fy.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fy{
     Countries{
         001{"Wrâld"}
@@ -299,5 +300,4 @@
         CD{"Congo (DRC)"}
         CG{"Congo (Republyk)"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ga.txt b/icu4c/source/data/region/ga.txt
index 781269c..3928891 100644
--- a/icu4c/source/data/region/ga.txt
+++ b/icu4c/source/data/region/ga.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ga{
     Countries{
         001{"an Domhan"}
@@ -309,5 +310,4 @@
         CZ{"Poblacht na Seice"}
         SZ{"an tSuasalainn"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/gd.txt b/icu4c/source/data/region/gd.txt
index 7bfd2ba..83b151a 100644
--- a/icu4c/source/data/region/gd.txt
+++ b/icu4c/source/data/region/gd.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gd{
     Countries{
         001{"An Saoghal"}
@@ -241,7 +242,7 @@
         SG{"Singeapòr"}
         SH{"Eilean Naomh Eilidh"}
         SI{"An t-Slòbhain"}
-        SJ{"Svalbard agus Jan Mayen"}
+        SJ{"Svalbard is Jan Mayen"}
         SK{"An t-Slòbhac"}
         SL{"Siarra Leòmhann"}
         SM{"San Marino"}
@@ -309,5 +310,4 @@
         SZ{"Dùthaich nan Suasaidh"}
         TL{"Tìomor an Ear"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/gl.txt b/icu4c/source/data/region/gl.txt
index 821faa7..baff214 100644
--- a/icu4c/source/data/region/gl.txt
+++ b/icu4c/source/data/region/gl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gl{
     Countries{
         001{"Mundo"}
@@ -307,7 +308,6 @@
         CG{"Congo (RC)"}
         CI{"Costa do Marfil"}
         CZ{"República Checa"}
-        SZ{"Suacilandia"}
+        SZ{"Swazilandia"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/gsw.txt b/icu4c/source/data/region/gsw.txt
index 10e22cb..e86e324 100644
--- a/icu4c/source/data/region/gsw.txt
+++ b/icu4c/source/data/region/gsw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gsw{
     Countries{
         001{"Wält"}
@@ -280,5 +281,4 @@
         ZW{"Simbabwe"}
         ZZ{"Unbekannti oder ungültigi Regioon"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/gu.txt b/icu4c/source/data/region/gu.txt
index 2fb58ca..6468c41 100644
--- a/icu4c/source/data/region/gu.txt
+++ b/icu4c/source/data/region/gu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gu{
     Countries{
         001{"વિશ્વ"}
@@ -310,5 +311,4 @@
         SZ{"સ્વાઝીલેન્ડ"}
         TL{"પૂર્વ તિમોર"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/guz.txt b/icu4c/source/data/region/guz.txt
index b450720..2e0aab2 100644
--- a/icu4c/source/data/region/guz.txt
+++ b/icu4c/source/data/region/guz.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 guz{
     Countries{
         AD{"Andora"}
@@ -226,5 +227,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/gv.txt b/icu4c/source/data/region/gv.txt
index 293a038..e24989d 100644
--- a/icu4c/source/data/region/gv.txt
+++ b/icu4c/source/data/region/gv.txt
@@ -1,9 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gv{
     Countries{
         GB{"Rywvaneth Unys"}
         IM{"Ellan Vannin"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ha.txt b/icu4c/source/data/region/ha.txt
index 38295e4..8e96281 100644
--- a/icu4c/source/data/region/ha.txt
+++ b/icu4c/source/data/region/ha.txt
@@ -1,28 +1,29 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ha{
     Countries{
         001{"Duniya"}
         002{"Afirka"}
-        003{"North America"}
-        005{"South America"}
-        009{"Oceania"}
+        003{"Amurka ta Arewa"}
+        005{"Amurka ta Kudu"}
+        009{"Osheniya"}
         011{"Afirka ta Yamma"}
-        013{"Central America"}
+        013{"Amurka ta Tsakiya"}
         014{"Afirka ta Gabas"}
-        015{"Arewacin Africa"}
+        015{"Arewacin Afirka"}
         017{"Afirka ta Tsakiya"}
         018{"Kudancin Afirka"}
-        019{"nahiyoyin Amurka"}
+        019{"Nahiyoyin Amurka"}
         021{"Arewacin Amurka"}
-        029{"Caribbean"}
+        029{"Karebiyan"}
         030{"Gabashin Asiya"}
-        034{"kudancin Asiya"}
+        034{"Kudancin Asiya"}
         035{"Kudu Maso Gabashin Asiya"}
         039{"Kudancin Turai"}
         053{"Tsibarai na Austraila da New Zealand da maƙota"}
         054{"Tsibirai na New Guinea da Fiji da maƙota"}
-        057{"Yankin Micronesia"}
+        057{"Yankin Micronesiya"}
         061{"tsibiri"}
         142{"Asiya"}
         143{"Asiya ta Tsakiya"}
@@ -31,13 +32,13 @@
         151{"Gabashin Turai"}
         154{"Arewacin Turai"}
         155{"Yammacin Turai"}
-        202{"Sub-Saharan Africa"}
-        419{"Latin America"}
+        202{"Afirka ta Kudancin Sahara"}
+        419{"Latin Amurka"}
         AC{"Tsibirin Ascension"}
         AD{"Andora"}
         AE{"Haɗaɗɗiyar Daular Larabawa"}
         AF{"Afaganistan"}
-        AG{"Antigwa da Barbuba"}
+        AG{"Antigua da Barbuda"}
         AI{"Angila"}
         AL{"Albaniya"}
         AM{"Armeniya"}
@@ -50,7 +51,7 @@
         AW{"Aruba"}
         AX{"Tsibirai na Åland"}
         AZ{"Azarbaijan"}
-        BA{"Bosniya Harzagobina"}
+        BA{"Bosniya da Harzagobina"}
         BB{"Barbadas"}
         BD{"Bangiladas"}
         BE{"Belgiyom"}
@@ -59,7 +60,7 @@
         BH{"Baharan"}
         BI{"Burundi"}
         BJ{"Binin"}
-        BL{"St. Barthélemy"}
+        BL{"San Barthélemy"}
         BM{"Barmuda"}
         BN{"Burune"}
         BO{"Bolibiya"}
@@ -87,7 +88,7 @@
         CR{"Kwasta Rika"}
         CU{"Kyuba"}
         CV{"Tsibiran Kap Barde"}
-        CW{"Kasar Curaçao"}
+        CW{"Ƙasar Curaçao"}
         CX{"Tsibirin Kirsmati"}
         CY{"Sifurus"}
         CZ{"Jamhuriyar Cak"}
@@ -98,7 +99,7 @@
         DM{"Dominika"}
         DO{"Jamhuriyar Dominika"}
         DZ{"Aljeriya"}
-        EA{"Ceuta & Melilla"}
+        EA{"Ceuta da Melilla"}
         EC{"Ekwador"}
         EE{"Estoniya"}
         EG{"Misira"}
@@ -133,16 +134,16 @@
         GU{"Gwam"}
         GW{"Gini Bisau"}
         GY{"Guyana"}
-        HK{"Hong Kong Babban Birnin Kasar Chana"}
+        HK{"Babban Yankin Mulkin Hong Kong na Ƙasar Sin"}
         HM{"Tsibirin Heard da McDonald"}
         HN{"Honduras"}
         HR{"Kurowaishiya"}
         HT{"Haiti"}
         HU{"Hungari"}
-        IC{"Canary Islands"}
+        IC{"Tsibiran Canary"}
         ID{"Indunusiya"}
         IE{"Ayalan"}
-        IL{"Iziraʼila"}
+        IL{"Israʼila"}
         IM{"Isle na Mutum"}
         IN{"Indiya"}
         IO{"Yankin Birtaniya Na Tekun Indiya"}
@@ -153,7 +154,7 @@
         JE{"Kasar Jersey"}
         JM{"Jamaika"}
         JO{"Jordan"}
-        JP{"Jàpân"}
+        JP{"Japan"}
         KE{"Kenya"}
         KG{"Kirgizistan"}
         KH{"Kambodiya"}
@@ -174,20 +175,20 @@
         LS{"Lesoto"}
         LT{"Lituweniya"}
         LU{"Lukusambur"}
-        LV{"latibiya"}
+        LV{"Litibiya"}
         LY{"Libiya"}
         MA{"Maroko"}
         MC{"Monako"}
         MD{"Maldoba"}
         ME{"Mantanegara"}
-        MF{"St. Martin"}
+        MF{"San Martin"}
         MG{"Madagaskar"}
         MH{"Tsibiran Marshal"}
         MK{"Macedonia ta Arewa"}
         ML{"Mali"}
         MM{"Burma, Miyamar"}
         MN{"Mangoliya"}
-        MO{"Babban Birnin Mulki na Chana"}
+        MO{"Babban Yankin Mulkin Macao na Ƙasar Sin"}
         MP{"Tsibiran Mariyana Na Arewa"}
         MQ{"Martinik"}
         MR{"Moritaniya"}
@@ -219,7 +220,7 @@
         PH{"Filipin"}
         PK{"Pakistan"}
         PL{"Polan"}
-        PM{"San Piyar Da Mikelan"}
+        PM{"San Piyar da Mikelan"}
         PN{"Pitakarin"}
         PR{"Porto Riko"}
         PS{"Palasɗinu"}
@@ -248,10 +249,10 @@
         SN{"Sanigal"}
         SO{"Somaliya"}
         SR{"Suriname"}
-        SS{"Sudan ta kudu"}
+        SS{"Sudan ta Kudu"}
         ST{"Sawo Tome Da Paransip"}
         SV{"El Salbador"}
-        SX{"Sint Maarten"}
+        SX{"San Maarten"}
         SY{"Sham, Siriya"}
         SZ{"Eswatini"}
         TA{"Tritan da Kunha"}
@@ -274,7 +275,7 @@
         UA{"Yukaran"}
         UG{"Yuganda"}
         UM{"Rukunin Tsibirin U.S"}
-        UN{"Majalisar Dinkin Duniya"}
+        UN{"Majalisar Ɗinkin Duniya"}
         US{"Amurka"}
         UY{"Yurigwai"}
         UZ{"Uzubekistan"}
@@ -300,6 +301,6 @@
     Countries%variant{
         CD{"Kongo (DRC)"}
         CG{"Jamhuriyar Kongo"}
+        SZ{"Suwazilan"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/haw.txt b/icu4c/source/data/region/haw.txt
index db97cc0..c6557ac 100644
--- a/icu4c/source/data/region/haw.txt
+++ b/icu4c/source/data/region/haw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 haw{
     Countries{
         AU{"Nūhōlani"}
@@ -23,5 +24,4 @@
         RU{"Lūkia"}
         US{"ʻAmelika Hui Pū ʻIa"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/he.txt b/icu4c/source/data/region/he.txt
index a49cc8d..bc84d5d 100644
--- a/icu4c/source/data/region/he.txt
+++ b/icu4c/source/data/region/he.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 he{
     Countries{
         001{"העולם"}
@@ -308,5 +309,4 @@
         SZ{"סווזילנד"}
         TL{"מזרח טימור"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/he_IL.txt b/icu4c/source/data/region/he_IL.txt
index 7103953..21ee915 100644
--- a/icu4c/source/data/region/he_IL.txt
+++ b/icu4c/source/data/region/he_IL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/hi.txt b/icu4c/source/data/region/hi.txt
index 1bdd671..eef451f 100644
--- a/icu4c/source/data/region/hi.txt
+++ b/icu4c/source/data/region/hi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hi{
     Countries{
         001{"विश्व"}
@@ -308,5 +309,4 @@
         CZ{"चेक गणराज्य"}
         TL{"पूर्वी तिमोर"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/hr.txt b/icu4c/source/data/region/hr.txt
index 35f28d3..1009a81 100644
--- a/icu4c/source/data/region/hr.txt
+++ b/icu4c/source/data/region/hr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hr{
     Countries{
         001{"Svijet"}
@@ -310,5 +311,4 @@
         SZ{"Svazi"}
         TL{"Istočni Timor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/hsb.txt b/icu4c/source/data/region/hsb.txt
index fde2c0d..5708c71 100644
--- a/icu4c/source/data/region/hsb.txt
+++ b/icu4c/source/data/region/hsb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hsb{
     Countries{
         001{"swět"}
@@ -271,6 +272,7 @@
         UA{"Ukraina"}
         UG{"Uganda"}
         UM{"Ameriska Oceaniska"}
+        UN{"Zjednoćene narody"}
         US{"Zjednoćene staty Ameriki"}
         UY{"Uruguay"}
         UZ{"Uzbekistan"}
@@ -301,5 +303,4 @@
         CI{"Słonowinowy pobrjóh"}
         TL{"Wuchodny Timor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/hu.txt b/icu4c/source/data/region/hu.txt
index 2d9de8e..0de0073 100644
--- a/icu4c/source/data/region/hu.txt
+++ b/icu4c/source/data/region/hu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hu{
     Countries{
         001{"Világ"}
@@ -73,9 +74,9 @@
         BZ{"Belize"}
         CA{"Kanada"}
         CC{"Kókusz (Keeling)-szigetek"}
-        CD{"Kongó - Kinshasa"}
+        CD{"Kongó – Kinshasa"}
         CF{"Közép-afrikai Köztársaság"}
-        CG{"Kongó - Brazzaville"}
+        CG{"Kongó – Brazzaville"}
         CH{"Svájc"}
         CI{"Elefántcsontpart"}
         CK{"Cook-szigetek"}
@@ -309,5 +310,4 @@
         SZ{"Eswatini"}
         TL{"Timor-Leste"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/hy.txt b/icu4c/source/data/region/hy.txt
index 1e093f1..70475fb 100644
--- a/icu4c/source/data/region/hy.txt
+++ b/icu4c/source/data/region/hy.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hy{
     Countries{
         001{"Աշխարհ"}
@@ -310,5 +311,4 @@
         SZ{"Սվազիլենդ"}
         TL{"Արևելյան Թիմոր"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ia.txt b/icu4c/source/data/region/ia.txt
index e75aed8..3b602a5 100644
--- a/icu4c/source/data/region/ia.txt
+++ b/icu4c/source/data/region/ia.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ia{
     Countries{
         001{"Mundo"}
@@ -40,6 +41,7 @@
         AL{"Albania"}
         AM{"Armenia"}
         AO{"Angola"}
+        AQ{"Antarctica"}
         AR{"Argentina"}
         AS{"Samoa american"}
         AT{"Austria"}
@@ -204,6 +206,7 @@
         SY{"Syria"}
         SZ{"Swazilandia"}
         TC{"Insulas Turcos e Caicos"}
+        TD{"Tchad"}
         TF{"Territorios meridional francese"}
         TG{"Togo"}
         TH{"Thailandia"}
@@ -243,5 +246,4 @@
     Countries%variant{
         CZ{"Republica Chec"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/id.txt b/icu4c/source/data/region/id.txt
index 0872362..93269d3 100644
--- a/icu4c/source/data/region/id.txt
+++ b/icu4c/source/data/region/id.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 id{
     Countries{
         001{"Dunia"}
@@ -122,7 +123,7 @@
         GG{"Guernsey"}
         GH{"Ghana"}
         GI{"Gibraltar"}
-        GL{"Grinlandia"}
+        GL{"Greenland"}
         GM{"Gambia"}
         GN{"Guinea"}
         GP{"Guadeloupe"}
@@ -155,7 +156,7 @@
         JO{"Yordania"}
         JP{"Jepang"}
         KE{"Kenya"}
-        KG{"Kirgistan"}
+        KG{"Kirgizstan"}
         KH{"Kamboja"}
         KI{"Kiribati"}
         KM{"Komoro"}
@@ -164,7 +165,7 @@
         KR{"Korea Selatan"}
         KW{"Kuwait"}
         KY{"Kepulauan Cayman"}
-        KZ{"Kazakstan"}
+        KZ{"Kazakhstan"}
         LA{"Laos"}
         LB{"Lebanon"}
         LC{"Saint Lucia"}
@@ -175,7 +176,7 @@
         LT{"Lituania"}
         LU{"Luksemburg"}
         LV{"Latvia"}
-        LY{"Libia"}
+        LY{"Libya"}
         MA{"Maroko"}
         MC{"Monako"}
         MD{"Moldova"}
@@ -256,14 +257,14 @@
         SZ{"eSwatini"}
         TA{"Tristan da Cunha"}
         TC{"Kepulauan Turks dan Caicos"}
-        TD{"Cad"}
-        TF{"Wilayah Selatan Perancis"}
+        TD{"Chad"}
+        TF{"Wilayah Selatan Prancis"}
         TG{"Togo"}
         TH{"Thailand"}
         TJ{"Tajikistan"}
         TK{"Tokelau"}
         TL{"Timor Leste"}
-        TM{"Turkimenistan"}
+        TM{"Turkmenistan"}
         TN{"Tunisia"}
         TO{"Tonga"}
         TR{"Turki"}
@@ -273,7 +274,7 @@
         TZ{"Tanzania"}
         UA{"Ukraina"}
         UG{"Uganda"}
-        UM{"Kepulauan Terluar A.S."}
+        UM{"Kepulauan Terluar AS"}
         UN{"Perserikatan Bangsa-Bangsa"}
         US{"Amerika Serikat"}
         UY{"Uruguay"}
@@ -300,14 +301,12 @@
     Countries%short{
         GB{"UK"}
         UN{"PBB"}
-        US{"A.S."}
+        US{"AS"}
     }
     Countries%variant{
         CD{"Kongo (RDK)"}
         CG{"Kongo (Republik)"}
         CZ{"Republik Ceko"}
-        SZ{"Swaziland"}
         TL{"Timor Timur"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/id_ID.txt b/icu4c/source/data/region/id_ID.txt
index 20daa23..63f19a2 100644
--- a/icu4c/source/data/region/id_ID.txt
+++ b/icu4c/source/data/region/id_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/ig.txt b/icu4c/source/data/region/ig.txt
index 1e1c51f..f535d20 100644
--- a/icu4c/source/data/region/ig.txt
+++ b/icu4c/source/data/region/ig.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ig{
     Countries{
         001{"Uwa"}
@@ -35,12 +36,12 @@
         419{"Latin America"}
         AC{"Ascension Island"}
         AD{"Andorra"}
-        AE{"Obodo United Arab Emirates"}
-        AF{"Mba Afghanistan"}
-        AG{"Antigua & Barbuda"}
+        AE{"United Arab Emirates"}
+        AF{"Afghanistan"}
+        AG{"Antigua na Barbuda"}
         AI{"Anguilla"}
         AL{"Albania"}
-        AM{"Obodo Armenia"}
+        AM{"Armenia"}
         AO{"Angola"}
         AQ{"Antarctica"}
         AR{"Argentina"}
@@ -49,24 +50,24 @@
         AU{"Australia"}
         AW{"Aruba"}
         AX{"Agwaetiti Aland"}
-        AZ{"Obodo Azerbaijan"}
+        AZ{"Azerbaijan"}
         BA{"Bosnia & Herzegovina"}
         BB{"Barbados"}
-        BD{"Obodo Bangladesh"}
+        BD{"Bangladesh"}
         BE{"Belgium"}
         BF{"Burkina Faso"}
         BG{"Bulgaria"}
-        BH{"Obodo Bahrain"}
+        BH{"Bahrain"}
         BI{"Burundi"}
         BJ{"Binin"}
-        BL{"St. Barthélemy"}
+        BL{"Barthélemy Dị nsọ"}
         BM{"Bemuda"}
         BN{"Brunei"}
         BO{"Bolivia"}
         BQ{"Caribbean Netherlands"}
-        BR{"Mba Brazil"}
+        BR{"Brazil"}
         BS{"Bahamas"}
-        BT{"Obodo Bhutan"}
+        BT{"Bhutan"}
         BV{"Agwaetiti Bouvet"}
         BW{"Botswana"}
         BY{"Belarus"}
@@ -81,7 +82,7 @@
         CK{"Agwaetiti Cook"}
         CL{"Chile"}
         CM{"Cameroon"}
-        CN{"Mba China"}
+        CN{"China"}
         CO{"Colombia"}
         CP{"Agwaetiti Clipperton"}
         CR{"Kosta Rika"}
@@ -89,9 +90,9 @@
         CV{"Cape Verde"}
         CW{"Kurakao"}
         CX{"Agwaetiti Christmas"}
-        CY{"Obodo Cyprus"}
+        CY{"Cyprus"}
         CZ{"Czechia"}
-        DE{"Mba Germany"}
+        DE{"Jamanị"}
         DG{"Diego Garcia"}
         DJ{"Djibouti"}
         DK{"Denmark"}
@@ -113,11 +114,11 @@
         FK{"Agwaetiti Falkland"}
         FM{"Micronesia"}
         FO{"Agwaetiti Faroe"}
-        FR{"Mba France"}
+        FR{"France"}
         GA{"Gabon"}
-        GB{"Mba United Kingdom"}
+        GB{"United Kingdom"}
         GD{"Grenada"}
-        GE{"Obodo Georgia"}
+        GE{"Georgia"}
         GF{"Frenchi Guiana"}
         GG{"Guernsey"}
         GH{"Ghana"}
@@ -133,7 +134,7 @@
         GU{"Guam"}
         GW{"Guinea-Bissau"}
         GY{"Guyana"}
-        HK{"Honk Kong mba nwere ndozi pụrụ iche n’obodo China"}
+        HK{"Hong Kong SAR China"}
         HM{"Agwaetiti Heard na Agwaetiti McDonald"}
         HN{"Honduras"}
         HR{"Croatia"}
@@ -142,52 +143,52 @@
         IC{"Agwaetiti Kanarị"}
         ID{"Indonesia"}
         IE{"Ireland"}
-        IL{"Obodo Israel"}
+        IL{"Israel"}
         IM{"Isle of Man"}
-        IN{"Mba India"}
+        IN{"India"}
         IO{"British Indian Ocean Territory"}
-        IQ{"Obodo Iraq"}
-        IR{"Obodo Iran"}
+        IQ{"Iraq"}
+        IR{"Iran"}
         IS{"Iceland"}
-        IT{"Mba Italy"}
+        IT{"Italy"}
         JE{"Jersey"}
         JM{"Jamaika"}
-        JO{"Obodo Jordan"}
-        JP{"Mba Japan"}
+        JO{"Jordan"}
+        JP{"Japan"}
         KE{"Kenya"}
-        KG{"Obodo Kyrgyzstan"}
+        KG{"Kyrgyzstan"}
         KH{"Cambodia"}
         KI{"Kiribati"}
         KM{"Comorosu"}
-        KN{"St. Kitts & Nevis"}
-        KP{"Mba Ugwu Korea"}
-        KR{"Mba South Korea"}
-        KW{"Obodo Kuwait"}
+        KN{"Kitts na Nevis Dị nsọ"}
+        KP{"Ugwu Korea"}
+        KR{"South Korea"}
+        KW{"Kuwait"}
         KY{"Agwaetiti Cayman"}
-        KZ{"Obodo Kazakhstan"}
+        KZ{"Kazakhstan"}
         LA{"Laos"}
-        LB{"Obodo Lebanon"}
-        LC{"St. Lucia"}
+        LB{"Lebanon"}
+        LC{"Lucia Dị nsọ"}
         LI{"Liechtenstein"}
-        LK{"Obodo Sri Lanka"}
+        LK{"Sri Lanka"}
         LR{"Liberia"}
         LS{"Lesotho"}
         LT{"Lithuania"}
         LU{"Luxembourg"}
         LV{"Latvia"}
-        LY{"Libyia"}
+        LY{"Libia"}
         MA{"Morocco"}
         MC{"Monaco"}
         MD{"Moldova"}
         ME{"Montenegro"}
-        MF{"St. Martin"}
+        MF{"Martin Dị nsọ"}
         MG{"Madagaskar"}
         MH{"Agwaetiti Marshall"}
         MK{"North Macedonia"}
         ML{"Mali"}
         MM{"Myanmar (Burma)"}
-        MN{"Obodo Mongolia"}
-        MO{"Obodo Macao nwere ndozi pụrụ iche na mba China"}
+        MN{"Mongolia"}
+        MO{"Macao"}
         MP{"Agwaetiti Northern Mariana"}
         MQ{"Martinique"}
         MR{"Mauritania"}
@@ -207,33 +208,33 @@
         NI{"Nicaragua"}
         NL{"Netherlands"}
         NO{"Norway"}
-        NP{"Obodo Nepal"}
+        NP{"Nepal"}
         NR{"Nauru"}
         NU{"Niue"}
         NZ{"New Zealand"}
-        OM{"Obodo Oman"}
+        OM{"Oman"}
         PA{"Panama"}
         PE{"Peru"}
         PF{"Frenchi Polynesia"}
         PG{"Papua New Guinea"}
         PH{"Philippines"}
-        PK{"Obodo Pakistan"}
+        PK{"Pakistan"}
         PL{"Poland"}
-        PM{"St. Pierre & Miquelon"}
+        PM{"Pierre na Miquelon Dị nsọ"}
         PN{"Agwaetiti Pitcairn"}
         PR{"Puerto Rico"}
-        PS{"Obodo dị iche iche dị n’okpuru mba Palestine"}
+        PS{"Palestinian Territories"}
         PT{"Portugal"}
         PW{"Palau"}
         PY{"Paraguay"}
-        QA{"Obodo Qatar"}
+        QA{"Qatar"}
         QO{"Outlying Oceania"}
         RE{"Réunion"}
         RO{"Romania"}
         RS{"Serbia"}
-        RU{"Mba Russia"}
+        RU{"Rụssịa"}
         RW{"Rwanda"}
-        SA{"Obodo Saudi Arabia"}
+        SA{"Saudi Arabia"}
         SB{"Agwaetiti Solomon"}
         SC{"Seychelles"}
         SD{"Sudan"}
@@ -252,7 +253,7 @@
         ST{"São Tomé & Príncipe"}
         SV{"El Salvador"}
         SX{"Sint Maarten"}
-        SY{"Obodo Syria"}
+        SY{"Syria"}
         SZ{"Eswatini"}
         TA{"Tristan da Cunha"}
         TC{"Agwaetiti Turks na Caicos"}
@@ -260,26 +261,26 @@
         TF{"Ụmụ ngalaba Frenchi Southern"}
         TG{"Togo"}
         TH{"Thailand"}
-        TJ{"Obodo Tajikistan"}
+        TJ{"Tajikistan"}
         TK{"Tokelau"}
         TL{"Timor-Leste"}
-        TM{"Obodo Turkmenistan"}
+        TM{"Turkmenistan"}
         TN{"Tunisia"}
         TO{"Tonga"}
-        TR{"Obodo Turkey"}
-        TT{"Trinidad & Tobago"}
+        TR{"Turkey"}
+        TT{"Trinidad na Tobago"}
         TV{"Tuvalu"}
-        TW{"Obodo Taiwan"}
+        TW{"Taiwan"}
         TZ{"Tanzania"}
         UA{"Ukraine"}
         UG{"Uganda"}
         UM{"Obere Agwaetiti Dị Na Mpụga U.S"}
         UN{"Mba Ụwa Jikọrọ Ọnụ"}
-        US{"Mba United States"}
+        US{"United States"}
         UY{"Uruguay"}
-        UZ{"Obodo Uzbekistan"}
+        UZ{"Uzbekistan"}
         VA{"Vatican City"}
-        VC{"St. Vincent & Grenadines"}
+        VC{"Vincent na Grenadines Dị nsọ"}
         VE{"Venezuela"}
         VG{"Agwaetiti British Virgin"}
         VI{"Agwaetiti Virgin nke US"}
@@ -290,7 +291,7 @@
         XA{"Pseudo-Accents"}
         XB{"Pseudo-Bidi"}
         XK{"Kosovo"}
-        YE{"Obodo Yemen"}
+        YE{"Yemen"}
         YT{"Mayotte"}
         ZA{"South Africa"}
         ZM{"Zambia"}
@@ -308,5 +309,4 @@
         SZ{"Swaziland"}
         TL{"East Timor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ii.txt b/icu4c/source/data/region/ii.txt
index ad05ab8..5e16504 100644
--- a/icu4c/source/data/region/ii.txt
+++ b/icu4c/source/data/region/ii.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ii{
     Countries{
         BR{"ꀠꑭ"}
@@ -14,5 +15,4 @@
         US{"ꂰꇩ"}
         ZZ{"ꃅꄷꅉꀋꐚꌠ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/in.txt b/icu4c/source/data/region/in.txt
index 0233523..e2df169 100644
--- a/icu4c/source/data/region/in.txt
+++ b/icu4c/source/data/region/in.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 in{
     "%%ALIAS"{"id"}
 }
diff --git a/icu4c/source/data/region/in_ID.txt b/icu4c/source/data/region/in_ID.txt
index acec72c..03f2387 100644
--- a/icu4c/source/data/region/in_ID.txt
+++ b/icu4c/source/data/region/in_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 in_ID{
     "%%ALIAS"{"id_ID"}
 }
diff --git a/icu4c/source/data/region/is.txt b/icu4c/source/data/region/is.txt
index 1f30324..d55c8dd 100644
--- a/icu4c/source/data/region/is.txt
+++ b/icu4c/source/data/region/is.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 is{
     Countries{
         001{"Heimurinn"}
@@ -251,7 +252,7 @@
         SS{"Suður-Súdan"}
         ST{"Saó Tóme og Prinsípe"}
         SV{"El Salvador"}
-        SX{"Sankti Martin"}
+        SX{"Sint Maarten"}
         SY{"Sýrland"}
         SZ{"Svasíland"}
         TA{"Tristan da Cunha"}
@@ -260,7 +261,7 @@
         TF{"Frönsku suðlægu landsvæðin"}
         TG{"Tógó"}
         TH{"Taíland"}
-        TJ{"Tadsjikistan"}
+        TJ{"Tadsíkistan"}
         TK{"Tókelá"}
         TL{"Tímor-Leste"}
         TM{"Túrkmenistan"}
@@ -306,5 +307,4 @@
         CG{"Kongó (Lýðveldið)"}
         TL{"Austur-Tímor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/it.txt b/icu4c/source/data/region/it.txt
index 2b8802d..6005015 100644
--- a/icu4c/source/data/region/it.txt
+++ b/icu4c/source/data/region/it.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 it{
     Countries{
         001{"Mondo"}
@@ -106,7 +107,7 @@
         ER{"Eritrea"}
         ES{"Spagna"}
         ET{"Etiopia"}
-        EU{"Unione Europea"}
+        EU{"Unione europea"}
         EZ{"Eurozona"}
         FI{"Finlandia"}
         FJ{"Figi"}
@@ -308,6 +309,6 @@
         CI{"Côte d’Ivoire"}
         CZ{"Repubblica Ceca"}
         SZ{"Regno di eSwatini"}
+        TL{"Timor Leste"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/iw.txt b/icu4c/source/data/region/iw.txt
index d59865d..4aa2f62 100644
--- a/icu4c/source/data/region/iw.txt
+++ b/icu4c/source/data/region/iw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 iw{
     "%%ALIAS"{"he"}
 }
diff --git a/icu4c/source/data/region/iw_IL.txt b/icu4c/source/data/region/iw_IL.txt
index cf1666a..984aefd 100644
--- a/icu4c/source/data/region/iw_IL.txt
+++ b/icu4c/source/data/region/iw_IL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 iw_IL{
     "%%ALIAS"{"he_IL"}
 }
diff --git a/icu4c/source/data/region/ja.txt b/icu4c/source/data/region/ja.txt
index 737d041..81e2790 100644
--- a/icu4c/source/data/region/ja.txt
+++ b/icu4c/source/data/region/ja.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ja{
     Countries{
         001{"世界"}
@@ -310,5 +311,4 @@
         SZ{"スワジランド"}
         TL{"東チモール"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/jgo.txt b/icu4c/source/data/region/jgo.txt
index 3ff517a..0c1ef4e 100644
--- a/icu4c/source/data/region/jgo.txt
+++ b/icu4c/source/data/region/jgo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jgo{
     Countries{
         001{"Mbí"}
@@ -85,5 +86,4 @@
         ZW{"Zimbámbwɛ"}
         ZZ{"ŋgɔŋ yi pɛ́ ká kɛ́ jʉɔ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/jmc.txt b/icu4c/source/data/region/jmc.txt
index 398e6b3..4c9428e 100644
--- a/icu4c/source/data/region/jmc.txt
+++ b/icu4c/source/data/region/jmc.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jmc{
     Countries{
         AD{"Andora"}
@@ -226,5 +227,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/jv.txt b/icu4c/source/data/region/jv.txt
index 4bcba6a..336c10c 100644
--- a/icu4c/source/data/region/jv.txt
+++ b/icu4c/source/data/region/jv.txt
@@ -1,14 +1,17 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jv{
     Countries{
         001{"Donya"}
         002{"Afrika"}
+        003{"Amérika Lor"}
         005{"Amérika Kidul"}
         009{"Oséania"}
         011{"Afrika Kulon"}
         013{"Amérika Tengah"}
         014{"Afrika Wétan"}
+        015{"Afrika Lor"}
         017{"Afrika Sisih Tengah"}
         018{"Afrika Sisih Kidul"}
         019{"Amérika"}
@@ -27,6 +30,7 @@
         145{"Asia Kulon"}
         150{"Éropah"}
         151{"Éropah Wétan"}
+        154{"Éropah Lor"}
         155{"Éropah Kulon"}
         202{"Afrika Kidule Sahara"}
         419{"Amérika Latin"}
@@ -141,6 +145,7 @@
         IE{"Républik Irlan"}
         IL{"Israèl"}
         IM{"Pulo Man"}
+        IN{"Indhia"}
         IO{"Wilayah Inggris nang Segoro Hindia"}
         IQ{"Irak"}
         IR{"Iran"}
@@ -156,6 +161,7 @@
         KI{"Kiribati"}
         KM{"Komoro"}
         KN{"Saint Kits lan Nèvis"}
+        KP{"Korea Lor"}
         KR{"Koréa Kidul"}
         KW{"Kuwait"}
         KY{"Kapuloan Kéman"}
@@ -178,6 +184,7 @@
         MF{"Santa Martin"}
         MG{"Madagaskar"}
         MH{"Kapuloan Marshall"}
+        MK{"Républik Makédonia Lor"}
         ML{"Mali"}
         MM{"Myanmar (Burma)"}
         MN{"Mongolia"}
@@ -204,6 +211,7 @@
         NP{"Népal"}
         NR{"Nauru"}
         NU{"Niue"}
+        NZ{"Selandia Anyar"}
         OM{"Oman"}
         PA{"Panama"}
         PE{"Peru"}
@@ -301,5 +309,4 @@
         SZ{"(Swasiland)"}
         TL{"Timor Wétan"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ka.txt b/icu4c/source/data/region/ka.txt
index c4cc194..fd93908 100644
--- a/icu4c/source/data/region/ka.txt
+++ b/icu4c/source/data/region/ka.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ka{
     Countries{
         001{"მსოფლიო"}
@@ -309,5 +310,4 @@
         SZ{"სვაზილანდი"}
         TL{"აღმოსავლეთ ტიმორი"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/kab.txt b/icu4c/source/data/region/kab.txt
index 9c9b34f..7e86f8d 100644
--- a/icu4c/source/data/region/kab.txt
+++ b/icu4c/source/data/region/kab.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kab{
     Countries{
         AD{"Undura"}
@@ -226,5 +227,4 @@
         ZM{"Zambya"}
         ZW{"Zimbabwi"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/kam.txt b/icu4c/source/data/region/kam.txt
index d9f837b..8d1ae39 100644
--- a/icu4c/source/data/region/kam.txt
+++ b/icu4c/source/data/region/kam.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kam{
     Countries{
         AD{"Andora"}
@@ -226,5 +227,4 @@
         ZM{"Nzambia"}
         ZW{"Nzimbambwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/kde.txt b/icu4c/source/data/region/kde.txt
index 3f78fe6..faab83f 100644
--- a/icu4c/source/data/region/kde.txt
+++ b/icu4c/source/data/region/kde.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kde{
     Countries{
         AD{"Andola"}
@@ -226,5 +227,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/kea.txt b/icu4c/source/data/region/kea.txt
index 3300dfa..f952097 100644
--- a/icu4c/source/data/region/kea.txt
+++ b/icu4c/source/data/region/kea.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kea{
     Countries{
         001{"Mundu"}
@@ -82,7 +83,7 @@
         CL{"Xili"}
         CM{"Kamarons"}
         CN{"Xina"}
-        CO{"Kolômbia"}
+        CO{"Kolómbia"}
         CP{"Ilha Kliperton"}
         CR{"Kosta Rika"}
         CU{"Kuba"}
@@ -309,5 +310,4 @@
         SZ{"Suazilándia"}
         TL{"Timor-Leste"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/khq.txt b/icu4c/source/data/region/khq.txt
index 1e6d8fb..0e5b7bc 100644
--- a/icu4c/source/data/region/khq.txt
+++ b/icu4c/source/data/region/khq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 khq{
     Countries{
         AD{"Andoora"}
@@ -226,5 +227,4 @@
         ZM{"Zambi"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ki.txt b/icu4c/source/data/region/ki.txt
index 5d3c307..c8b80f9 100644
--- a/icu4c/source/data/region/ki.txt
+++ b/icu4c/source/data/region/ki.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ki{
     Countries{
         AD{"Andora"}
@@ -226,5 +227,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/kk.txt b/icu4c/source/data/region/kk.txt
index a9d9a89..5ca65ab 100644
--- a/icu4c/source/data/region/kk.txt
+++ b/icu4c/source/data/region/kk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kk{
     Countries{
         001{"Әлем"}
@@ -259,7 +260,7 @@
         TD{"Чад"}
         TF{"Францияның оңтүстік аймақтары"}
         TG{"Того"}
-        TH{"Тайланд"}
+        TH{"Таиланд"}
         TJ{"Тәжікстан"}
         TK{"Токелау"}
         TL{"Тимор-Лесте"}
@@ -307,5 +308,4 @@
         CZ{"Чех Республикасы"}
         TL{"Шығыс Тимор"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/kkj.txt b/icu4c/source/data/region/kkj.txt
index 3443f9b..c9ceec5 100644
--- a/icu4c/source/data/region/kkj.txt
+++ b/icu4c/source/data/region/kkj.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kkj{
     Countries{
         CM{"Kamɛrun"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/kl.txt b/icu4c/source/data/region/kl.txt
index f353e32..7891690 100644
--- a/icu4c/source/data/region/kl.txt
+++ b/icu4c/source/data/region/kl.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kl{
     Countries{
         GL{"Kalaallit Nunaat"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/kln.txt b/icu4c/source/data/region/kln.txt
index a4e395f..d4e64b0 100644
--- a/icu4c/source/data/region/kln.txt
+++ b/icu4c/source/data/region/kln.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kln{
     Countries{
         AD{"Emetab Andorra"}
@@ -226,5 +227,4 @@
         ZM{"Emetab Zambia"}
         ZW{"Emetab Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/km.txt b/icu4c/source/data/region/km.txt
index b2774ed..b6aa0ab 100644
--- a/icu4c/source/data/region/km.txt
+++ b/icu4c/source/data/region/km.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 km{
     Countries{
         001{"ពិភពលោក"}
@@ -36,7 +37,7 @@
         AC{"កោះ​អាសេនសិន"}
         AD{"អង់ដូរ៉ា"}
         AE{"អេមីរ៉ាត​អារ៉ាប់​រួម"}
-        AF{"អាហ្វហ្គានីស្ថាន"}
+        AF{"អាហ្វហ្កានីស្ថាន"}
         AG{"អង់ទីហ្គា និង បាប៊ុយដា"}
         AI{"អង់ហ្គីឡា"}
         AL{"អាល់បានី"}
@@ -50,12 +51,12 @@
         AW{"អារូបា"}
         AX{"កោះ​អាឡង់"}
         AZ{"អាស៊ែបៃហ្សង់"}
-        BA{"បូស្នី និងហឺហ្សីហ្គូវីណា"}
+        BA{"បូស្ន៊ី និងហឺហ្ស៊ីហ្គូវីណា"}
         BB{"បាបាដុស"}
         BD{"បង់ក្លាដែស"}
         BE{"បែលហ្ស៊ិក"}
         BF{"បួគីណាហ្វាសូ"}
-        BG{"ប៊ុលហ្គារី"}
+        BG{"ប៊ុលហ្ការី"}
         BH{"បារ៉ែន"}
         BI{"ប៊ូរុនឌី"}
         BJ{"បេណាំង"}
@@ -76,7 +77,7 @@
         CD{"កុងហ្គោ- គីនស្ហាសា"}
         CF{"សាធារណរដ្ឋអាហ្វ្រិកកណ្ដាល"}
         CG{"កុងហ្គោ - ប្រាហ្សាវីល"}
-        CH{"ស្វីស"}
+        CH{"ស្វ៊ីស"}
         CI{"កូតឌីវ័រ"}
         CK{"កោះ​ខូក"}
         CL{"ស៊ីលី"}
@@ -90,7 +91,7 @@
         CW{"កូរ៉ាកៅ"}
         CX{"កោះ​គ្រីស្មាស"}
         CY{"ស៊ីប"}
-        CZ{"ឆែគា"}
+        CZ{"ឆែក"}
         DE{"អាល្លឺម៉ង់"}
         DG{"ឌៀហ្គោហ្គាស៊ី"}
         DJ{"ជីប៊ូទី"}
@@ -133,8 +134,8 @@
         GU{"ហ្គាំ"}
         GW{"ហ្គីណេប៊ីស្សូ"}
         GY{"ហ្គីយ៉ាន"}
-        HK{"ហុងកុង តំបន់រដ្ឋបាលពិសេសចិន"}
-        HM{"កោះ​ហឺដ និង​ម៉ាក់ដូណាល់"}
+        HK{"ហុងកុង"}
+        HM{"កោះ​ហឺដនិង​ម៉ាក់ដូណាល់"}
         HN{"ហុងឌូរ៉ាស"}
         HR{"ក្រូអាស៊ី"}
         HT{"ហៃទី"}
@@ -150,7 +151,7 @@
         IR{"អ៊ីរ៉ង់"}
         IS{"អ៊ីស្លង់"}
         IT{"អ៊ីតាលី"}
-        JE{"ជឺស៊ី"}
+        JE{"ជើស៊ី"}
         JM{"ហ្សាម៉ាអ៊ីក"}
         JO{"ហ៊្សកដានី"}
         JP{"ជប៉ុន"}
@@ -216,14 +217,14 @@
         PE{"ប៉េរូ"}
         PF{"ប៉ូលី​ណេស៊ី​បារាំង"}
         PG{"ប៉ាពូអាស៊ី​នូវែលហ្គីណេ"}
-        PH{"ហ្វីលីពីន"}
+        PH{"ហ្វ៊ីលីពីន"}
         PK{"ប៉ាគីស្ថាន"}
         PL{"ប៉ូឡូញ"}
         PM{"សង់ព្យែរ និង​មីគីឡុង"}
         PN{"កោះ​ភីតកាន"}
         PR{"ព័រតូរីកូ"}
-        PS{"ប៉ាលេស្ទីន"}
-        PT{"ព័រទុយហ្គាល់"}
+        PS{"ប៉ាឡេស្ទីន"}
+        PT{"ព័រទុយហ្កាល់"}
         PW{"ផៅឡូ"}
         PY{"ប៉ារ៉ាហ្គាយ"}
         QA{"កាតា"}
@@ -306,8 +307,7 @@
         CD{"កុងហ្គោ (សាធារណរដ្ឋ​ប្រជាធិបតេយ្យ)"}
         CG{"កុងហ្គោ (សធារណរដ្ឋ)"}
         CI{"អាយវ៉ូរី ខូសថ៍"}
-        CZ{"សាធារណរដ្ឋឆេក"}
+        CZ{"សាធារណរដ្ឋឆែក"}
         TL{"ទីម័រ​ខាង​កើត"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/kn.txt b/icu4c/source/data/region/kn.txt
index 2c7ab85..91e9bc3 100644
--- a/icu4c/source/data/region/kn.txt
+++ b/icu4c/source/data/region/kn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kn{
     Countries{
         001{"ಪ್ರಪಂಚ"}
@@ -77,7 +78,7 @@
         CF{"ಮಧ್ಯ ಆಫ್ರಿಕಾ ಗಣರಾಜ್ಯ"}
         CG{"ಕಾಂಗೋ - ಬ್ರಾಜಾವಿಲ್ಲೇ"}
         CH{"ಸ್ವಿಟ್ಜರ್ಲ್ಯಾಂಡ್"}
-        CI{"ಕೋತ್‌ ದಿವಾರ್‍"}
+        CI{"ಕೋತ್ ದ್‘ಇವಾರ್"}
         CK{"ಕುಕ್ ದ್ವೀಪಗಳು"}
         CL{"ಚಿಲಿ"}
         CM{"ಕ್ಯಾಮರೂನ್"}
@@ -310,5 +311,4 @@
         SZ{"ಸ್ವಾಜಿಲ್ಯಾಂಡ್‌"}
         TL{"ಪೂರ್ವ ಟಿಮೋರ್"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ko.txt b/icu4c/source/data/region/ko.txt
index 9a152dc..e0c0e38 100644
--- a/icu4c/source/data/region/ko.txt
+++ b/icu4c/source/data/region/ko.txt
@@ -1,11 +1,12 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ko{
     Countries{
         001{"세계"}
         002{"아프리카"}
         003{"북아메리카"}
-        005{"남아메리카(남미)"}
+        005{"남아메리카"}
         009{"오세아니아"}
         011{"서부 아프리카"}
         013{"중앙 아메리카"}
@@ -83,7 +84,7 @@
         CM{"카메룬"}
         CN{"중국"}
         CO{"콜롬비아"}
-        CP{"클립퍼튼 섬"}
+        CP{"클리퍼턴섬"}
         CR{"코스타리카"}
         CU{"쿠바"}
         CV{"카보베르데"}
@@ -143,7 +144,7 @@
         ID{"인도네시아"}
         IE{"아일랜드"}
         IL{"이스라엘"}
-        IM{"맨 섬"}
+        IM{"맨섬"}
         IN{"인도"}
         IO{"영국령 인도양 식민지"}
         IQ{"이라크"}
@@ -220,7 +221,7 @@
         PK{"파키스탄"}
         PL{"폴란드"}
         PM{"생피에르 미클롱"}
-        PN{"핏케언 섬"}
+        PN{"핏케언 제도"}
         PR{"푸에르토리코"}
         PS{"팔레스타인"}
         PT{"포르투갈"}
@@ -228,7 +229,7 @@
         PY{"파라과이"}
         QA{"카타르"}
         QO{"오세아니아 외곽"}
-        RE{"리유니온"}
+        RE{"레위니옹"}
         RO{"루마니아"}
         RS{"세르비아"}
         RU{"러시아"}
@@ -274,7 +275,7 @@
         UA{"우크라이나"}
         UG{"우간다"}
         UM{"미국령 해외 제도"}
-        UN{"유엔"}
+        UN{"국제연합"}
         US{"미국"}
         UY{"우루과이"}
         UZ{"우즈베키스탄"}
@@ -297,6 +298,9 @@
         ZW{"짐바브웨"}
         ZZ{"알려지지 않은 지역"}
     }
+    Countries%short{
+        UN{"유엔"}
+    }
     Countries%variant{
         CD{"콩고민주공화국"}
         CG{"콩고 공화국"}
@@ -305,5 +309,4 @@
         SZ{"스와질란드"}
         TL{"티모르레스테"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ko_KP.txt b/icu4c/source/data/region/ko_KP.txt
index 7186d05..c32b723 100644
--- a/icu4c/source/data/region/ko_KP.txt
+++ b/icu4c/source/data/region/ko_KP.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ko_KP{
     Countries{
         KP{"조선민주주의인민공화국"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/kok.txt b/icu4c/source/data/region/kok.txt
index 3c755f0..263c0c9 100644
--- a/icu4c/source/data/region/kok.txt
+++ b/icu4c/source/data/region/kok.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kok{
     Countries{
         001{"जग"}
@@ -75,7 +76,7 @@
         CC{"कोकोस (कीलिंग) आयलँड"}
         CD{"कोंगो - किंशासा"}
         CF{"मध्य अफ्रीकी लोकसत्तकराज्य"}
-        CG{"काँगो - ब्राझाविला"}
+        CG{"कोंगो - ब्राझाविला"}
         CH{"स्विट्ज़रलैंड"}
         CI{"कोत द’ईवोआर"}
         CK{"कुक आयलँड्स"}
@@ -302,12 +303,11 @@
         US{"युएस"}
     }
     Countries%variant{
-        CD{"काँगो (डीआरसी)"}
+        CD{"कोंगो (डीआरसी)"}
         CG{"कोंगो (प्रजासत्ताक)"}
         CI{"आयवोरी कोस्ट"}
         CZ{"चेक लोकसत्ताक"}
         SZ{"स्वाझिलँड"}
         TL{"ईस्ट तिमूर"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ks.txt b/icu4c/source/data/region/ks.txt
index fb476a7..3f9727c 100644
--- a/icu4c/source/data/region/ks.txt
+++ b/icu4c/source/data/region/ks.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks{
     Countries{
         001{"دُنیا"}
@@ -277,5 +278,4 @@
         ZW{"زِمبابے"}
         ZZ{"نامعلوٗم تہٕ نالَگہار عَلاقہٕ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ks_Arab.txt b/icu4c/source/data/region/ks_Arab.txt
index aafa093..f3d2206 100644
--- a/icu4c/source/data/region/ks_Arab.txt
+++ b/icu4c/source/data/region/ks_Arab.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks_Arab{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ks_Arab_IN.txt b/icu4c/source/data/region/ks_Arab_IN.txt
index a13c0c9..2d29f4c 100644
--- a/icu4c/source/data/region/ks_Arab_IN.txt
+++ b/icu4c/source/data/region/ks_Arab_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/ks_IN.txt b/icu4c/source/data/region/ks_IN.txt
index fd8b52d..bd1a225 100644
--- a/icu4c/source/data/region/ks_IN.txt
+++ b/icu4c/source/data/region/ks_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks_IN{
     "%%ALIAS"{"ks_Arab_IN"}
 }
diff --git a/icu4c/source/data/region/ksb.txt b/icu4c/source/data/region/ksb.txt
index af2c99e..2265158 100644
--- a/icu4c/source/data/region/ksb.txt
+++ b/icu4c/source/data/region/ksb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksb{
     Countries{
         AD{"Andola"}
@@ -225,5 +226,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ksf.txt b/icu4c/source/data/region/ksf.txt
index eb58d40..6b3a1a3 100644
--- a/icu4c/source/data/region/ksf.txt
+++ b/icu4c/source/data/region/ksf.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksf{
     Countries{
         AD{"andɔrǝ"}
@@ -226,5 +227,4 @@
         ZM{"zambí"}
         ZW{"zimbabwɛ́"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ksh.txt b/icu4c/source/data/region/ksh.txt
index a67779f..7244d7e 100644
--- a/icu4c/source/data/region/ksh.txt
+++ b/icu4c/source/data/region/ksh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksh{
     Countries{
         001{"de Ääd"}
@@ -299,5 +300,4 @@
         CG{"de Republik Konggo"}
         CI{"de Älfebeijnköß"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ku.txt b/icu4c/source/data/region/ku.txt
index 8c7ba36..f017938 100644
--- a/icu4c/source/data/region/ku.txt
+++ b/icu4c/source/data/region/ku.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ku{
     Countries{
         001{"Cîhan"}
@@ -260,5 +261,4 @@
         CZ{"Komara Çekî"}
         TL{"Tîmora Rojhilat"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/kw.txt b/icu4c/source/data/region/kw.txt
index 3b27d2b..033a201 100644
--- a/icu4c/source/data/region/kw.txt
+++ b/icu4c/source/data/region/kw.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kw{
     Countries{
         GB{"Rywvaneth Unys"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ky.txt b/icu4c/source/data/region/ky.txt
index 522214a..2eff7fe 100644
--- a/icu4c/source/data/region/ky.txt
+++ b/icu4c/source/data/region/ky.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ky{
     Countries{
         001{"Дүйнө"}
@@ -187,7 +188,7 @@
         ML{"Мали"}
         MM{"Мьянма (Бирма)"}
         MN{"Монголия"}
-        MO{"Макау"}
+        MO{"Макао"}
         MP{"Түндүк Мариана аралдары"}
         MQ{"Мартиника"}
         MR{"Мавритания"}
@@ -308,5 +309,4 @@
         CZ{"Чех Республикасы"}
         TL{"Чыгыш Тимор"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/lag.txt b/icu4c/source/data/region/lag.txt
index 7a7a6c6..46126be 100644
--- a/icu4c/source/data/region/lag.txt
+++ b/icu4c/source/data/region/lag.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lag{
     Countries{
         AD{"Andóra"}
@@ -226,5 +227,4 @@
         ZM{"Sámbia"}
         ZW{"Simbáabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/lb.txt b/icu4c/source/data/region/lb.txt
index c62dc5d..2eac3c5 100644
--- a/icu4c/source/data/region/lb.txt
+++ b/icu4c/source/data/region/lb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lb{
     Countries{
         001{"Welt"}
@@ -301,5 +302,4 @@
         CG{"Kongo (Republik)"}
         CI{"Elfebeeküst"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/lg.txt b/icu4c/source/data/region/lg.txt
index 7c3ca27..52d6ec3 100644
--- a/icu4c/source/data/region/lg.txt
+++ b/icu4c/source/data/region/lg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lg{
     Countries{
         AD{"Andora"}
@@ -226,5 +227,4 @@
         ZM{"Zambya"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/lkt.txt b/icu4c/source/data/region/lkt.txt
index d31bdd6..24ef72b 100644
--- a/icu4c/source/data/region/lkt.txt
+++ b/icu4c/source/data/region/lkt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lkt{
     Countries{
         001{"Makȟásitomni"}
@@ -15,5 +16,4 @@
         MX{"Spayóla Makȟóčhe"}
         US{"Mílahaŋska Tȟamákȟočhe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ln.txt b/icu4c/source/data/region/ln.txt
index a77714c..eeab8b3 100644
--- a/icu4c/source/data/region/ln.txt
+++ b/icu4c/source/data/region/ln.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ln{
     Countries{
         AD{"Andorɛ"}
@@ -236,5 +237,4 @@
     Countries%variant{
         CZ{"Repibiki Tsekɛ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/lo.txt b/icu4c/source/data/region/lo.txt
index f0b8d23..ffddf06 100644
--- a/icu4c/source/data/region/lo.txt
+++ b/icu4c/source/data/region/lo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lo{
     Countries{
         001{"ໂລກ"}
@@ -222,7 +223,7 @@
         PM{"ເຊນ ປີແອ ມິເກວລອນ"}
         PN{"ໝູ່ເກາະພິດແຄນ"}
         PR{"ເພືອໂຕ ຣິໂກ"}
-        PS{"ປາເລສຕາຍ"}
+        PS{"ປາເລດສະຕິນ"}
         PT{"ພອລທູໂກ"}
         PW{"ປາລາວ"}
         PY{"ພາຣາກວຍ"}
@@ -310,5 +311,4 @@
         SZ{"ສະ​ວາ​ຊິ​ແລນ"}
         TL{"ທິມໍ ຕາເວັນອອກ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/lrc.txt b/icu4c/source/data/region/lrc.txt
index 29fd96d..c127034 100644
--- a/icu4c/source/data/region/lrc.txt
+++ b/icu4c/source/data/region/lrc.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lrc{
     Countries{
         001{"دونیا"}
@@ -26,5 +27,4 @@
         US{"ڤولاتیا یأکاگئرتە"}
         ZZ{"راساگە نادیار"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/lt.txt b/icu4c/source/data/region/lt.txt
index 607745d..3f3d775 100644
--- a/icu4c/source/data/region/lt.txt
+++ b/icu4c/source/data/region/lt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lt{
     Countries{
         001{"pasaulis"}
@@ -254,7 +255,7 @@
         SX{"Sint Martenas"}
         SY{"Sirija"}
         SZ{"Svazilandas"}
-        TA{"Tristanas da Kunja"}
+        TA{"Tristano da Kunjos"}
         TC{"Terkso ir Kaikoso Salos"}
         TD{"Čadas"}
         TF{"Prancūzijos Pietų sritys"}
@@ -308,5 +309,4 @@
         CI{"Dramblio Kaulo Kranto Respublika"}
         CZ{"Čekijos Respublika"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/lu.txt b/icu4c/source/data/region/lu.txt
index 020c134..b034552 100644
--- a/icu4c/source/data/region/lu.txt
+++ b/icu4c/source/data/region/lu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lu{
     Countries{
         AD{"Andore"}
@@ -226,5 +227,4 @@
         ZM{"Zambi"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/luo.txt b/icu4c/source/data/region/luo.txt
index dc62207..a7ea7c9 100644
--- a/icu4c/source/data/region/luo.txt
+++ b/icu4c/source/data/region/luo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 luo{
     Countries{
         AD{"Andorra"}
@@ -226,5 +227,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/luy.txt b/icu4c/source/data/region/luy.txt
index 5e755a3..3449d3a 100644
--- a/icu4c/source/data/region/luy.txt
+++ b/icu4c/source/data/region/luy.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 luy{
     Countries{
         AD{"Andora"}
@@ -226,5 +227,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/lv.txt b/icu4c/source/data/region/lv.txt
index fc9e9ce..92d61a9 100644
--- a/icu4c/source/data/region/lv.txt
+++ b/icu4c/source/data/region/lv.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lv{
     Countries{
         001{"pasaule"}
@@ -143,7 +144,7 @@
         ID{"Indonēzija"}
         IE{"Īrija"}
         IL{"Izraēla"}
-        IM{"Mena"}
+        IM{"Menas sala"}
         IN{"Indija"}
         IO{"Indijas okeāna Britu teritorija"}
         IQ{"Irāka"}
@@ -254,7 +255,7 @@
         SX{"Sintmārtena"}
         SY{"Sīrija"}
         SZ{"Svatini"}
-        TA{"Tristana da Kuņas salas"}
+        TA{"Tristana da Kuņjas salu teritorijas"}
         TC{"Tērksas un Kaikosas salas"}
         TD{"Čada"}
         TF{"Francijas Dienvidjūru teritorija"}
@@ -308,5 +309,4 @@
         CZ{"Čehijas Republika"}
         SZ{"Svazilenda"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/mai.txt b/icu4c/source/data/region/mai.txt
index 35c03ab..14d461d 100644
--- a/icu4c/source/data/region/mai.txt
+++ b/icu4c/source/data/region/mai.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mai{
     Countries{
         BR{"ब्राज़ील"}
@@ -14,5 +15,4 @@
         US{"संयुक्त राज्य"}
         ZZ{"अज्ञात क्षेत्र"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/mas.txt b/icu4c/source/data/region/mas.txt
index 45b7eda..2d9a971 100644
--- a/icu4c/source/data/region/mas.txt
+++ b/icu4c/source/data/region/mas.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mas{
     Countries{
         AD{"Andora"}
@@ -226,5 +227,4 @@
         ZM{"Sambia"}
         ZW{"Simbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/mer.txt b/icu4c/source/data/region/mer.txt
index 7e7611e..264decc 100644
--- a/icu4c/source/data/region/mer.txt
+++ b/icu4c/source/data/region/mer.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mer{
     Countries{
         AD{"Andora"}
@@ -226,5 +227,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/mfe.txt b/icu4c/source/data/region/mfe.txt
index bd9993c..341fa50 100644
--- a/icu4c/source/data/region/mfe.txt
+++ b/icu4c/source/data/region/mfe.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mfe{
     Countries{
         AD{"Andor"}
@@ -226,5 +227,4 @@
         ZM{"Zambi"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/mg.txt b/icu4c/source/data/region/mg.txt
index efb4921..b7e44d9 100644
--- a/icu4c/source/data/region/mg.txt
+++ b/icu4c/source/data/region/mg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mg{
     Countries{
         AD{"Andorra"}
@@ -226,5 +227,4 @@
         ZM{"Zambia"}
         ZW{"Zimbaboe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/mgh.txt b/icu4c/source/data/region/mgh.txt
index 8602dd3..0741d0d 100644
--- a/icu4c/source/data/region/mgh.txt
+++ b/icu4c/source/data/region/mgh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mgh{
     Countries{
         AD{"Uandora"}
@@ -139,5 +140,4 @@
         ZM{"Uzambia"}
         ZW{"Uzimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/mgo.txt b/icu4c/source/data/region/mgo.txt
index e8b7ca5..3f22f95 100644
--- a/icu4c/source/data/region/mgo.txt
+++ b/icu4c/source/data/region/mgo.txt
@@ -1,9 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mgo{
     Countries{
         CM{"Kamalun"}
         ZZ{"aba aben tisɔ̀"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/mi.txt b/icu4c/source/data/region/mi.txt
index d5669c8..429c70e 100644
--- a/icu4c/source/data/region/mi.txt
+++ b/icu4c/source/data/region/mi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mi{
     Countries{
         BR{"Parahi"}
@@ -16,5 +17,4 @@
         US{"Hononga o Amerika"}
         ZZ{"Rohe Tē Mōhiotia"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/mk.txt b/icu4c/source/data/region/mk.txt
index c8bfe65..6552a64 100644
--- a/icu4c/source/data/region/mk.txt
+++ b/icu4c/source/data/region/mk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mk{
     Countries{
         001{"Свет"}
@@ -133,7 +134,7 @@
         GU{"Гуам"}
         GW{"Гвинеја-Бисау"}
         GY{"Гвајана"}
-        HK{"Хонг Конг"}
+        HK{"Хонгконг"}
         HM{"Остров Херд и Острови Мекдоналд"}
         HN{"Хондурас"}
         HR{"Хрватска"}
@@ -241,7 +242,7 @@
         SG{"Сингапур"}
         SH{"Света Елена"}
         SI{"Словенија"}
-        SJ{"Свалбард и Жан Мејен"}
+        SJ{"Свалбард и Јан Мајен"}
         SK{"Словачка"}
         SL{"Сиера Леоне"}
         SM{"Сан Марино"}
@@ -262,7 +263,7 @@
         TH{"Тајланд"}
         TJ{"Таџикистан"}
         TK{"Токелау"}
-        TL{"Источен Тимор (Тимор Лесте)"}
+        TL{"Тимор Лесте"}
         TM{"Туркменистан"}
         TN{"Тунис"}
         TO{"Тонга"}
@@ -306,8 +307,7 @@
         CD{"Конго (Демократска Република Конго)"}
         CG{"Конго (Република)"}
         CI{"Брег на Слоновата Коска"}
-        CZ{"Република Чешка"}
+        CZ{"Чешка Република"}
         TL{"Источен Тимор"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ml.txt b/icu4c/source/data/region/ml.txt
index acdad67..2ff43cb 100644
--- a/icu4c/source/data/region/ml.txt
+++ b/icu4c/source/data/region/ml.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ml{
     Countries{
         001{"ലോകം"}
@@ -253,7 +254,7 @@
         SV{"എൽ സാൽവദോർ"}
         SX{"സിന്റ് മാർട്ടെൻ"}
         SY{"സിറിയ"}
-        SZ{"സ്വാസിലാന്റ്"}
+        SZ{"സ്വാസിലൻഡ്"}
         TA{"ട്രിസ്റ്റൻ ഡ കൂന"}
         TC{"ടർക്ക്‌സും കെയ്‌ക്കോ ദ്വീപുകളും"}
         TD{"ഛാഡ്"}
@@ -298,7 +299,6 @@
         ZZ{"അജ്ഞാത പ്രദേശം"}
     }
     Countries%short{
-        GB{"യു.കെ."}
         UN{"യുഎൻ"}
         US{"യു.എസ്"}
     }
@@ -310,5 +310,4 @@
         SZ{"സ്വിറ്റ്സർലൻഡ്"}
         TL{"കിഴക്കൻ തിമോർ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/mn.txt b/icu4c/source/data/region/mn.txt
index 7ce057b..f1a28d8 100644
--- a/icu4c/source/data/region/mn.txt
+++ b/icu4c/source/data/region/mn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mn{
     Countries{
         001{"Дэлхий"}
@@ -310,5 +311,4 @@
         SZ{"Свазиланд"}
         TL{"Зүүн Тимор"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/mni.txt b/icu4c/source/data/region/mni.txt
index 9e8f5e7..1925851 100644
--- a/icu4c/source/data/region/mni.txt
+++ b/icu4c/source/data/region/mni.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni{
     Countries{
         BR{"ব্রাজিল"}
@@ -14,5 +15,4 @@
         US{"য়ুনাইটেদ ষ্টেটস"}
         ZZ{"মশকখংদবা লমদম"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/mni_Beng.txt b/icu4c/source/data/region/mni_Beng.txt
index e861947..08de0f1 100644
--- a/icu4c/source/data/region/mni_Beng.txt
+++ b/icu4c/source/data/region/mni_Beng.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni_Beng{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/mni_Beng_IN.txt b/icu4c/source/data/region/mni_Beng_IN.txt
index fee6989..c896779 100644
--- a/icu4c/source/data/region/mni_Beng_IN.txt
+++ b/icu4c/source/data/region/mni_Beng_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/mni_IN.txt b/icu4c/source/data/region/mni_IN.txt
index 00d8c00..99173b1 100644
--- a/icu4c/source/data/region/mni_IN.txt
+++ b/icu4c/source/data/region/mni_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni_IN{
     "%%ALIAS"{"mni_Beng_IN"}
 }
diff --git a/icu4c/source/data/region/mo.txt b/icu4c/source/data/region/mo.txt
index 01049c8..6ef8313 100644
--- a/icu4c/source/data/region/mo.txt
+++ b/icu4c/source/data/region/mo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mo{
     "%%ALIAS"{"ro"}
 }
diff --git a/icu4c/source/data/region/mr.txt b/icu4c/source/data/region/mr.txt
index 2586adf..8cffdbf 100644
--- a/icu4c/source/data/region/mr.txt
+++ b/icu4c/source/data/region/mr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mr{
     Countries{
         001{"विश्व"}
@@ -77,7 +78,7 @@
         CF{"केंद्रीय अफ्रिकी प्रजासत्ताक"}
         CG{"काँगो - ब्राझाविले"}
         CH{"स्वित्झर्लंड"}
-        CI{"आयव्हरी कोस्ट"}
+        CI{"Côte d’Ivoire"}
         CK{"कुक बेटे"}
         CL{"चिली"}
         CM{"कॅमेरून"}
@@ -145,7 +146,7 @@
         IL{"इस्त्राइल"}
         IM{"आयल ऑफ मॅन"}
         IN{"भारत"}
-        IO{"ब्रिटिश हिंदी महासागर क्षेत्र"}
+        IO{"ब्रिटिश हिंद महासागर प्रदेश"}
         IQ{"इराक"}
         IR{"इराण"}
         IS{"आइसलँड"}
@@ -174,7 +175,7 @@
         LS{"लेसोथो"}
         LT{"लिथुआनिया"}
         LU{"लक्झेंबर्ग"}
-        LV{"लात्विया"}
+        LV{"लाटव्हिया"}
         LY{"लिबिया"}
         MA{"मोरोक्को"}
         MC{"मोनॅको"}
@@ -309,5 +310,4 @@
         SZ{"स्वाझिलँड"}
         TL{"पूर्व तिमोर"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ms.txt b/icu4c/source/data/region/ms.txt
index 047fdd0..8c27477 100644
--- a/icu4c/source/data/region/ms.txt
+++ b/icu4c/source/data/region/ms.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ms{
     Countries{
         001{"Dunia"}
@@ -309,5 +310,4 @@
         CZ{"Republik Czech"}
         TL{"Timor Timur"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/mt.txt b/icu4c/source/data/region/mt.txt
index 792f3ce..897a84b 100644
--- a/icu4c/source/data/region/mt.txt
+++ b/icu4c/source/data/region/mt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mt{
     Countries{
         001{"Dinja"}
@@ -299,5 +300,4 @@
         CZ{"Ir-Repubblika Ċeka"}
         TL{"Timor tal-Lvant"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/mua.txt b/icu4c/source/data/region/mua.txt
index 4521a61..611037a 100644
--- a/icu4c/source/data/region/mua.txt
+++ b/icu4c/source/data/region/mua.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mua{
     Countries{
         AD{"andorra"}
@@ -226,5 +227,4 @@
         ZM{"Zambiya"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/my.txt b/icu4c/source/data/region/my.txt
index 1efce99..ac01198 100644
--- a/icu4c/source/data/region/my.txt
+++ b/icu4c/source/data/region/my.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 my{
     Countries{
         001{"ကမ္ဘာ"}
@@ -172,7 +173,7 @@
         LK{"သီရိလင်္ကာ"}
         LR{"လိုက်ဘေးရီးယား"}
         LS{"လီဆိုသို"}
-        LT{"လစ်သူယေးနီးယား"}
+        LT{"လစ်သူဝေးနီးယား"}
         LU{"လူဇင်ဘတ်"}
         LV{"လတ်ဗီးယား"}
         LY{"လစ်ဗျား"}
@@ -307,5 +308,4 @@
         CI{"အိုင်ဗရီကို့စ်"}
         CZ{"ချက် ပြည်ထောင်စု"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/mzn.txt b/icu4c/source/data/region/mzn.txt
index cec3734..8afcd48 100644
--- a/icu4c/source/data/region/mzn.txt
+++ b/icu4c/source/data/region/mzn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mzn{
     Countries{
         001{"جهون"}
@@ -300,5 +301,4 @@
         CI{"عاج ساحل"}
         TL{"شرقی تیمور"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/naq.txt b/icu4c/source/data/region/naq.txt
index 5947e31..21c005d 100644
--- a/icu4c/source/data/region/naq.txt
+++ b/icu4c/source/data/region/naq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 naq{
     Countries{
         AD{"Andorrab"}
@@ -226,5 +227,4 @@
         ZM{"Zambiab"}
         ZW{"Zimbabweb"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/nb.txt b/icu4c/source/data/region/nb.txt
index f05bfc6..7cc1292 100644
--- a/icu4c/source/data/region/nb.txt
+++ b/icu4c/source/data/region/nb.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nb{
     Countries{
         001{"verden"}
@@ -73,7 +74,7 @@
         BZ{"Belize"}
         CA{"Canada"}
         CC{"Kokosøyene"}
-        CD{"Kongo-Kinshasa"}
+        CD{"Kongo"}
         CF{"Den sentralafrikanske republikk"}
         CG{"Kongo-Brazzaville"}
         CH{"Sveits"}
@@ -288,7 +289,7 @@
         WF{"Wallis og Futuna"}
         WS{"Samoa"}
         XA{"pseudospråk – aksenter"}
-        XB{"pseudospråk – RTL"}
+        XB{"pseudospråk – tekst begge veier"}
         XK{"Kosovo"}
         YE{"Jemen"}
         YT{"Mayotte"}
@@ -304,5 +305,4 @@
         SZ{"Swaziland"}
         TL{"Timor-Leste"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/nb_NO.txt b/icu4c/source/data/region/nb_NO.txt
index fdac28b..15a33c3 100644
--- a/icu4c/source/data/region/nb_NO.txt
+++ b/icu4c/source/data/region/nb_NO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/nd.txt b/icu4c/source/data/region/nd.txt
index 34a770b..029608a 100644
--- a/icu4c/source/data/region/nd.txt
+++ b/icu4c/source/data/region/nd.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nd{
     Countries{
         AD{"Andora"}
@@ -226,5 +227,4 @@
         ZM{"Zambiya"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/nds.txt b/icu4c/source/data/region/nds.txt
deleted file mode 100644
index ac58836..0000000
--- a/icu4c/source/data/region/nds.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-nds{
-    Version{"37"}
-}
diff --git a/icu4c/source/data/region/ne.txt b/icu4c/source/data/region/ne.txt
index ce8583a..1700cc7 100644
--- a/icu4c/source/data/region/ne.txt
+++ b/icu4c/source/data/region/ne.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ne{
     Countries{
         001{"विश्व"}
@@ -46,7 +47,7 @@
         AR{"अर्जेन्टिना"}
         AS{"अमेरिकी समोआ"}
         AT{"अष्ट्रिया"}
-        AU{"अष्ट्रेलिया"}
+        AU{"अस्ट्रेलिया"}
         AW{"अरुबा"}
         AX{"अलान्ड टापुहरु"}
         AZ{"अजरबैजान"}
@@ -222,7 +223,7 @@
         PM{"सेन्ट पिर्रे र मिक्केलोन"}
         PN{"पिटकाइर्न टापुहरु"}
         PR{"पुएर्टो रिको"}
-        PS{"प्यालेसटाइन"}
+        PS{"प्‍यालेस्टाइन"}
         PT{"पोर्चुगल"}
         PW{"पलाउ"}
         PY{"प्याराग्वे"}
@@ -309,5 +310,4 @@
         CZ{"चेक गणतन्त्र"}
         TL{"पृर्वी टीमोर"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/nl.txt b/icu4c/source/data/region/nl.txt
index 1d6c371..4dfb57f 100644
--- a/icu4c/source/data/region/nl.txt
+++ b/icu4c/source/data/region/nl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl{
     Countries{
         001{"wereld"}
@@ -253,7 +254,7 @@
         SV{"El Salvador"}
         SX{"Sint-Maarten"}
         SY{"Syrië"}
-        SZ{"eSwatini"}
+        SZ{"Eswatini"}
         TA{"Tristan da Cunha"}
         TC{"Turks- en Caicoseilanden"}
         TD{"Tsjaad"}
@@ -305,10 +306,8 @@
     Countries%variant{
         CD{"Congo (DRC)"}
         CG{"Congo (Republiek)"}
-        CI{"Republiek Ivoorkust"}
         CZ{"Tsjechische Republiek"}
         SZ{"Swaziland"}
         TL{"Democratische Republiek Oost-Timor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/nmg.txt b/icu4c/source/data/region/nmg.txt
index 4805ff9..1007670 100644
--- a/icu4c/source/data/region/nmg.txt
+++ b/icu4c/source/data/region/nmg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nmg{
     Countries{
         AD{"Andɔ́ra"}
@@ -226,5 +227,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwǝ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/nn.txt b/icu4c/source/data/region/nn.txt
index 3e741d9..8d758fb 100644
--- a/icu4c/source/data/region/nn.txt
+++ b/icu4c/source/data/region/nn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nn{
     Countries{
         001{"verda"}
@@ -14,7 +15,7 @@
         017{"Sentral-Afrika"}
         018{"Sørlege Afrika"}
         019{"Amerika"}
-        021{"nordlege Amerika"}
+        021{"Nordlege Amerika"}
         029{"Karibia"}
         030{"Aust-Asia"}
         034{"Sør-Asia"}
@@ -31,6 +32,7 @@
         151{"Aust-Europa"}
         154{"Nord-Europa"}
         155{"Vest-Europa"}
+        202{"Afrika sør for Sahara"}
         419{"Latin-Amerika"}
         AC{"Ascension"}
         AD{"Andorra"}
@@ -105,6 +107,7 @@
         ER{"Eritrea"}
         ES{"Spania"}
         ET{"Etiopia"}
+        EU{"Den europeiske unionen"}
         EZ{"eurosona"}
         FI{"Finland"}
         FJ{"Fiji"}
@@ -126,7 +129,7 @@
         GP{"Guadeloupe"}
         GQ{"Ekvatorial-Guinea"}
         GR{"Hellas"}
-        GS{"Sør-Georgia og Sør-Sandwichøyene"}
+        GS{"Sør-Georgia og Sør-Sandwichøyane"}
         GT{"Guatemala"}
         GU{"Guam"}
         GW{"Guinea-Bissau"}
@@ -143,7 +146,7 @@
         IL{"Israel"}
         IM{"Man"}
         IN{"India"}
-        IO{"Det britiske territoriet I Indiahavet"}
+        IO{"Det britiske territoriet i Indiahavet"}
         IQ{"Irak"}
         IR{"Iran"}
         IS{"Island"}
@@ -178,7 +181,7 @@
         MC{"Monaco"}
         MD{"Moldova"}
         ME{"Montenegro"}
-        MF{"Saint Martin"}
+        MF{"Saint-Martin"}
         MG{"Madagaskar"}
         MH{"Marshalløyane"}
         MK{"Nord-Makedonia"}
@@ -251,7 +254,7 @@
         SV{"El Salvador"}
         SX{"Sint Maarten"}
         SY{"Syria"}
-        SZ{"Swaziland"}
+        SZ{"Eswatini"}
         TA{"Tristan da Cunha"}
         TC{"Turks- og Caicosøyane"}
         TD{"Tsjad"}
@@ -260,7 +263,7 @@
         TH{"Thailand"}
         TJ{"Tadsjikistan"}
         TK{"Tokelau"}
-        TL{"Timor-Leste (Aust-Timor)"}
+        TL{"Aust-Timor"}
         TM{"Turkmenistan"}
         TN{"Tunisia"}
         TO{"Tonga"}
@@ -285,6 +288,8 @@
         VU{"Vanuatu"}
         WF{"Wallis og Futuna"}
         WS{"Samoa"}
+        XA{"pseudospråk – aksentar"}
+        XB{"pseudospråk – RTL"}
         XK{"Kosovo"}
         YE{"Jemen"}
         YT{"Mayotte"}
@@ -296,7 +301,6 @@
     Countries%variant{
         CD{"Den demokratiske republikken Kongo"}
         CG{"Republikken Kongo"}
-        TL{"Aust-Timor"}
+        SZ{"Swaziland"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/nn_NO.txt b/icu4c/source/data/region/nn_NO.txt
index 4e8a5f7..9eaa339 100644
--- a/icu4c/source/data/region/nn_NO.txt
+++ b/icu4c/source/data/region/nn_NO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/nnh.txt b/icu4c/source/data/region/nnh.txt
index 3e96cce..4b31689 100644
--- a/icu4c/source/data/region/nnh.txt
+++ b/icu4c/source/data/region/nnh.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nnh{
     Countries{
         CM{"Kàmalûm"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/no.txt b/icu4c/source/data/region/no.txt
index 097a923..474d0b2 100644
--- a/icu4c/source/data/region/no.txt
+++ b/icu4c/source/data/region/no.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no{
     "%%ALIAS"{"nb"}
 }
diff --git a/icu4c/source/data/region/no_NO.txt b/icu4c/source/data/region/no_NO.txt
index 188a8a4..5d7f859 100644
--- a/icu4c/source/data/region/no_NO.txt
+++ b/icu4c/source/data/region/no_NO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no_NO{
     "%%ALIAS"{"nb_NO"}
 }
diff --git a/icu4c/source/data/region/no_NO_NY.txt b/icu4c/source/data/region/no_NO_NY.txt
index aa897fe..c900df7 100644
--- a/icu4c/source/data/region/no_NO_NY.txt
+++ b/icu4c/source/data/region/no_NO_NY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no_NO_NY{
     "%%ALIAS"{"nn_NO"}
 }
diff --git a/icu4c/source/data/region/nus.txt b/icu4c/source/data/region/nus.txt
index bc58fc7..e8d4c54 100644
--- a/icu4c/source/data/region/nus.txt
+++ b/icu4c/source/data/region/nus.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nus{
     Countries{
         AD{"Andora"}
@@ -54,5 +55,4 @@
         TD{"Ca̱d"}
         VG{"Burutic dhuɔ̱ɔ̱l be̱rgin"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/nyn.txt b/icu4c/source/data/region/nyn.txt
index 18a7305..175d0db 100644
--- a/icu4c/source/data/region/nyn.txt
+++ b/icu4c/source/data/region/nyn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nyn{
     Countries{
         AD{"Andora"}
@@ -226,5 +227,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/om.txt b/icu4c/source/data/region/om.txt
index d845407..cc5dbb4 100644
--- a/icu4c/source/data/region/om.txt
+++ b/icu4c/source/data/region/om.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 om{
     Countries{
         BR{"Brazil"}
@@ -15,5 +16,4 @@
         RU{"Russia"}
         US{"United States"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/or.txt b/icu4c/source/data/region/or.txt
index 33c0525..920fe3f 100644
--- a/icu4c/source/data/region/or.txt
+++ b/icu4c/source/data/region/or.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 or{
     Countries{
         001{"ବିଶ୍ୱ"}
@@ -308,5 +309,4 @@
         SZ{"ସ୍ୱାଜିଲ୍ୟାଣ୍ଡ"}
         TL{"ପୂର୍ବ ତିମୋର୍‌"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/os.txt b/icu4c/source/data/region/os.txt
index 29326d0..6396ffa 100644
--- a/icu4c/source/data/region/os.txt
+++ b/icu4c/source/data/region/os.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 os{
     Countries{
         001{"Дуне"}
@@ -21,5 +22,4 @@
         US{"АИШ"}
         ZZ{"Нӕзонгӕ бӕстӕ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/pa.txt b/icu4c/source/data/region/pa.txt
index 8260016..8c2c742 100644
--- a/icu4c/source/data/region/pa.txt
+++ b/icu4c/source/data/region/pa.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa{
     Countries{
         001{"ਸੰਸਾਰ"}
@@ -310,5 +311,4 @@
         SZ{"ਸਵਾਜ਼ੀਲੈਂਡ"}
         TL{"ਪੂਰਬ ਤਿਮੋਰ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/pa_Arab.txt b/icu4c/source/data/region/pa_Arab.txt
index 23d94c4..bf09db5 100644
--- a/icu4c/source/data/region/pa_Arab.txt
+++ b/icu4c/source/data/region/pa_Arab.txt
@@ -1,9 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_Arab{
     %%Parent{"root"}
     Countries{
         PK{"پاکستان"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/pa_Arab_PK.txt b/icu4c/source/data/region/pa_Arab_PK.txt
index e6b5861..3b1bc42 100644
--- a/icu4c/source/data/region/pa_Arab_PK.txt
+++ b/icu4c/source/data/region/pa_Arab_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/pa_Guru.txt b/icu4c/source/data/region/pa_Guru.txt
index a0ee569..f10658f 100644
--- a/icu4c/source/data/region/pa_Guru.txt
+++ b/icu4c/source/data/region/pa_Guru.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_Guru{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/pa_Guru_IN.txt b/icu4c/source/data/region/pa_Guru_IN.txt
index adeae3f..f67b7c3 100644
--- a/icu4c/source/data/region/pa_Guru_IN.txt
+++ b/icu4c/source/data/region/pa_Guru_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/pa_IN.txt b/icu4c/source/data/region/pa_IN.txt
index b18bba6..0c963d7 100644
--- a/icu4c/source/data/region/pa_IN.txt
+++ b/icu4c/source/data/region/pa_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_IN{
     "%%ALIAS"{"pa_Guru_IN"}
 }
diff --git a/icu4c/source/data/region/pa_PK.txt b/icu4c/source/data/region/pa_PK.txt
index 1c66c7b..29612ad 100644
--- a/icu4c/source/data/region/pa_PK.txt
+++ b/icu4c/source/data/region/pa_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_PK{
     "%%ALIAS"{"pa_Arab_PK"}
 }
diff --git a/icu4c/source/data/region/pcm.txt b/icu4c/source/data/region/pcm.txt
index aa811e0..f18e338 100644
--- a/icu4c/source/data/region/pcm.txt
+++ b/icu4c/source/data/region/pcm.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pcm{
     Countries{
         001{"Wọld"}
@@ -308,5 +309,4 @@
         CZ{"Chẹ́k Ripọ́blik"}
         SZ{"Swáziland"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/pl.txt b/icu4c/source/data/region/pl.txt
index 4a05e98..ff01a1c 100644
--- a/icu4c/source/data/region/pl.txt
+++ b/icu4c/source/data/region/pl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pl{
     Countries{
         001{"świat"}
@@ -310,5 +311,4 @@
         SZ{"Suazi"}
         TL{"Timor-Leste"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ps.txt b/icu4c/source/data/region/ps.txt
index 11087c5..6b39f45 100644
--- a/icu4c/source/data/region/ps.txt
+++ b/icu4c/source/data/region/ps.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ps{
     Countries{
         001{"نړۍ"}
@@ -44,7 +45,7 @@
         AO{"انګولا"}
         AQ{"انتارکتیکا"}
         AR{"ارجنټاين"}
-        AS{"امریکایی سمو"}
+        AS{"امریکایی ساماوا"}
         AT{"اتریش"}
         AU{"آسټرالیا"}
         AW{"آروبا"}
@@ -125,8 +126,8 @@
         GL{"ګرینلینډ"}
         GM{"ګامبیا"}
         GN{"ګینه"}
-        GP{"ګالډیپ"}
-        GQ{"استوایی ګینه"}
+        GP{"ګوادلوپ"}
+        GQ{"استوایی ګیني"}
         GR{"یونان"}
         GS{"سويلي جارجيا او سويلي سېنډوچ ټاپوګان"}
         GT{"ګواتیمالا"}
@@ -145,7 +146,7 @@
         IL{"اسراييل"}
         IM{"د آئل آف مین"}
         IN{"هند"}
-        IO{"د بريتانوي هند سمندري سيمه"}
+        IO{"د برتانوي هند سمندري سيمه"}
         IQ{"عراق"}
         IR{"ايران"}
         IS{"آیسلینډ"}
@@ -201,7 +202,7 @@
         MZ{"موزمبيق"}
         NA{"نیمبیا"}
         NC{"نوی کالیډونیا"}
-        NE{"نیجر"}
+        NE{"نايجير"}
         NF{"نارفولک ټاپوګان"}
         NG{"نایجیریا"}
         NI{"نکاراګوا"}
@@ -286,9 +287,9 @@
         VN{"وېتنام"}
         VU{"واناتو"}
         WF{"والیس او فوتونا"}
-        WS{"ساموا"}
+        WS{"ساماوا"}
         XA{"جعلي خج"}
-        XB{"جعلي بيدي"}
+        XB{"سیډو بیډی"}
         XK{"کوسوو"}
         YE{"یمن"}
         YT{"مايوټ"}
@@ -308,5 +309,4 @@
         SZ{"سوازيلېنډ"}
         TL{"ختيځ تيمور"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ps_PK.txt b/icu4c/source/data/region/ps_PK.txt
index 94ce69d..58a4de0 100644
--- a/icu4c/source/data/region/ps_PK.txt
+++ b/icu4c/source/data/region/ps_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ps_PK{
     Countries{
         019{"امريکے"}
@@ -7,5 +8,4 @@
         TC{"د ترکیے او کیکاسو ټاپو"}
         TF{"د فرانسے جنوبي سیمے"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/pt.txt b/icu4c/source/data/region/pt.txt
index 2776dfc..beef76e 100644
--- a/icu4c/source/data/region/pt.txt
+++ b/icu4c/source/data/region/pt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt{
     Countries{
         001{"Mundo"}
@@ -56,7 +57,7 @@
         BE{"Bélgica"}
         BF{"Burquina Faso"}
         BG{"Bulgária"}
-        BH{"Bahrein"}
+        BH{"Barein"}
         BI{"Burundi"}
         BJ{"Benin"}
         BL{"São Bartolomeu"}
@@ -112,7 +113,7 @@
         FJ{"Fiji"}
         FK{"Ilhas Malvinas (Ilhas Falkland)"}
         FM{"Micronésia"}
-        FO{"Ilhas Faroe"}
+        FO{"Ilhas Faroé"}
         FR{"França"}
         GA{"Gabão"}
         GB{"Reino Unido"}
@@ -178,7 +179,7 @@
         LY{"Líbia"}
         MA{"Marrocos"}
         MC{"Mônaco"}
-        MD{"Moldova"}
+        MD{"Moldávia"}
         ME{"Montenegro"}
         MF{"São Martinho"}
         MG{"Madagascar"}
@@ -309,5 +310,4 @@
         SZ{"Suazilândia"}
         TL{"República Democrática de Timor-Leste"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/pt_AO.txt b/icu4c/source/data/region/pt_AO.txt
index 95cf1c6..c6fcc6b 100644
--- a/icu4c/source/data/region/pt_AO.txt
+++ b/icu4c/source/data/region/pt_AO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_AO{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/pt_CH.txt b/icu4c/source/data/region/pt_CH.txt
index 3a679be..67d661e 100644
--- a/icu4c/source/data/region/pt_CH.txt
+++ b/icu4c/source/data/region/pt_CH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_CH{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/pt_CV.txt b/icu4c/source/data/region/pt_CV.txt
index 6d4dd3a..ebaaea8 100644
--- a/icu4c/source/data/region/pt_CV.txt
+++ b/icu4c/source/data/region/pt_CV.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_CV{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/pt_GQ.txt b/icu4c/source/data/region/pt_GQ.txt
index 7cbf771..9364da9 100644
--- a/icu4c/source/data/region/pt_GQ.txt
+++ b/icu4c/source/data/region/pt_GQ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_GQ{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/pt_GW.txt b/icu4c/source/data/region/pt_GW.txt
index da37fbe..e28e46c 100644
--- a/icu4c/source/data/region/pt_GW.txt
+++ b/icu4c/source/data/region/pt_GW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_GW{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/pt_LU.txt b/icu4c/source/data/region/pt_LU.txt
index ebead8d..c402ea2 100644
--- a/icu4c/source/data/region/pt_LU.txt
+++ b/icu4c/source/data/region/pt_LU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_LU{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/pt_MO.txt b/icu4c/source/data/region/pt_MO.txt
index cf54f62..293d10b 100644
--- a/icu4c/source/data/region/pt_MO.txt
+++ b/icu4c/source/data/region/pt_MO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_MO{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/pt_MZ.txt b/icu4c/source/data/region/pt_MZ.txt
index b99439c..a8cc01a 100644
--- a/icu4c/source/data/region/pt_MZ.txt
+++ b/icu4c/source/data/region/pt_MZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_MZ{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/pt_PT.txt b/icu4c/source/data/region/pt_PT.txt
index 8e3473b..76725e0 100644
--- a/icu4c/source/data/region/pt_PT.txt
+++ b/icu4c/source/data/region/pt_PT.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_PT{
     Countries{
         009{"Oceânia"}
@@ -30,7 +31,6 @@
         EH{"Sara Ocidental"}
         EZ{"Zona Euro"}
         FK{"Ilhas Falkland (Malvinas)"}
-        FO{"Ilhas Faroé"}
         GG{"Guernesey"}
         GL{"Gronelândia"}
         GU{"Guame"}
@@ -44,7 +44,6 @@
         LK{"Sri Lanca"}
         LV{"Letónia"}
         MC{"Mónaco"}
-        MD{"Moldávia"}
         MG{"Madagáscar"}
         MK{"Macedónia do Norte"}
         MS{"Monserrate"}
@@ -83,5 +82,4 @@
         CI{"Costa do Marfim"}
         CZ{"República Checa"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/pt_ST.txt b/icu4c/source/data/region/pt_ST.txt
index e432167..ba0c09e 100644
--- a/icu4c/source/data/region/pt_ST.txt
+++ b/icu4c/source/data/region/pt_ST.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_ST{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/pt_TL.txt b/icu4c/source/data/region/pt_TL.txt
index b3777b6..0dafd09 100644
--- a/icu4c/source/data/region/pt_TL.txt
+++ b/icu4c/source/data/region/pt_TL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_TL{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/qu.txt b/icu4c/source/data/region/qu.txt
index 3b48021..4e8f6a8 100644
--- a/icu4c/source/data/region/qu.txt
+++ b/icu4c/source/data/region/qu.txt
@@ -1,7 +1,39 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 qu{
     Countries{
+        001{"Pacha"}
+        002{"Africa"}
+        003{"Norte America"}
+        005{"Sud America"}
+        009{"Oceania"}
+        011{"Africa Occidental"}
+        013{"America Central"}
+        014{"Africa Oriental"}
+        015{"Africa del Norte"}
+        017{"Africa Media"}
+        018{"Sud Africa"}
+        019{"America"}
+        021{"America del Norte"}
+        029{"Caribe"}
+        030{"Asia Oriental"}
+        034{"Asia del Sur"}
+        035{"Sureste de Asia"}
+        039{"Europa del Sur"}
+        053{"Australasia"}
+        054{"Melanesia"}
+        057{"Región Micronesia"}
+        061{"Polinesia"}
+        142{"Asia"}
+        143{"Asia Central"}
+        145{"Asia Occidental"}
+        150{"Europa"}
+        151{"Europa Oriental"}
+        154{"Europa del Norte"}
+        155{"Europa Occidental"}
+        202{"Africa Sub-Sahariana"}
+        419{"AmericaLatina"}
         AC{"Islas Ascensión"}
         AD{"Andorra"}
         AE{"Emiratos Árabes Unidos"}
@@ -75,6 +107,8 @@
         ER{"Eritrea"}
         ES{"España"}
         ET{"Etiopía"}
+        EU{"Union Europea"}
+        EZ{"Eurozona"}
         FI{"Finlandia"}
         FJ{"Fiyi"}
         FK{"Islas Malvinas"}
@@ -100,7 +134,7 @@
         GU{"Guam"}
         GW{"Guinea-Bisáu"}
         GY{"Guyana"}
-        HK{"Hong Kong (RAE)"}
+        HK{"Hong Kong"}
         HM{"Islas Heard y McDonald"}
         HN{"Honduras"}
         HR{"Croacia"}
@@ -154,7 +188,7 @@
         ML{"Malí"}
         MM{"Myanmar"}
         MN{"Mongolia"}
-        MO{"Macao RAE"}
+        MO{"Macao"}
         MP{"Islas Marianas del Norte"}
         MQ{"Martinica"}
         MR{"Mauritania"}
@@ -189,11 +223,12 @@
         PM{"San Pedro y Miquelón"}
         PN{"Islas Pitcairn"}
         PR{"Puerto Rico"}
-        PS{"Palestina Kamachikuq"}
+        PS{"Palestina"}
         PT{"Portugal"}
         PW{"Palaos"}
         PY{"Paraguay"}
         QA{"Qatar"}
+        QO{"Oceanía Periférica"}
         RE{"Reunión"}
         RO{"Rumania"}
         RS{"Serbia"}
@@ -240,6 +275,7 @@
         UA{"Ucrania"}
         UG{"Uganda"}
         UM{"Islas menores alejadas de los EE.UU."}
+        UN{"Naciones Unidas"}
         US{"Estados Unidos"}
         UY{"Uruguay"}
         UZ{"Uzbekistán"}
@@ -252,15 +288,17 @@
         VU{"Vanuatu"}
         WF{"Wallis y Futuna"}
         WS{"Samoa"}
+        XA{"Seudo-Acentos"}
+        XB{"Seudo-Bidi"}
         XK{"Kosovo"}
         YE{"Yemen"}
         YT{"Mayotte"}
         ZA{"Sudáfrica"}
         ZM{"Zambia"}
         ZW{"Zimbabue"}
+        ZZ{"Mana yachasqa Suyu"}
     }
     Countries%variant{
         CZ{"República Checa"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/rm.txt b/icu4c/source/data/region/rm.txt
index d80dd7e..717b675 100644
--- a/icu4c/source/data/region/rm.txt
+++ b/icu4c/source/data/region/rm.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rm{
     Countries{
         001{"mund"}
@@ -13,7 +14,8 @@
         015{"Africa dal Nord"}
         017{"Africa Centrala"}
         018{"Africa Meridiunala"}
-        019{"America dal Nord, America Centrala ed America dal Sid"}
+        019{"americas"}
+        021{"Amercia dal Nord"}
         029{"Caribica"}
         030{"Asia da l’Ost"}
         034{"Asia dal Sid"}
@@ -30,7 +32,9 @@
         151{"Europa Orientala"}
         154{"Europa dal Nord"}
         155{"Europa dal Vest"}
+        202{"Africa Subsaharica"}
         419{"America Latina"}
+        AC{"Insla d’Ascensiun"}
         AD{"Andorra"}
         AE{"Emirats Arabs Unids"}
         AF{"Afghanistan"}
@@ -60,6 +64,7 @@
         BM{"Bermudas"}
         BN{"Brunei"}
         BO{"Bolivia"}
+        BQ{"Antillas Ollandaisas"}
         BR{"Brasilia"}
         BS{"Bahamas"}
         BT{"Bhutan"}
@@ -69,7 +74,7 @@
         BZ{"Belize"}
         CA{"Canada"}
         CC{"Inslas Cocos"}
-        CD{"Republica Democratica dal Congo"}
+        CD{"Congo - Kinshasa"}
         CF{"Republica Centralafricana"}
         CG{"Congo"}
         CH{"Svizra"}
@@ -79,18 +84,22 @@
         CM{"Camerun"}
         CN{"China"}
         CO{"Columbia"}
+        CP{"Insla da Clipperton"}
         CR{"Costa Rica"}
         CU{"Cuba"}
         CV{"Cap Verd"}
-        CX{"Insla da Christmas"}
+        CW{"Curaçao"}
+        CX{"Insla da Nadal"}
         CY{"Cipra"}
-        CZ{"Republica Tscheca"}
+        CZ{"Tschechia"}
         DE{"Germania"}
+        DG{"Diego Garcia"}
         DJ{"Dschibuti"}
         DK{"Danemarc"}
         DM{"Dominica"}
         DO{"Republica Dominicana"}
         DZ{"Algeria"}
+        EA{"Ceuta e Melilla"}
         EC{"Ecuador"}
         EE{"Estonia"}
         EG{"Egipta"}
@@ -98,10 +107,11 @@
         ER{"Eritrea"}
         ES{"Spagna"}
         ET{"Etiopia"}
-        EU{"Uniun europeica"}
+        EU{"Uniun Europeica"}
+        EZ{"zona da l’euro"}
         FI{"Finlanda"}
         FJ{"Fidschi"}
-        FK{"Inslas dal Falkland"}
+        FK{"Inslas Falkland"}
         FM{"Micronesia"}
         FO{"Inslas Feroe"}
         FR{"Frantscha"}
@@ -124,12 +134,13 @@
         GU{"Guam"}
         GW{"Guinea-Bissau"}
         GY{"Guyana"}
-        HK{"Regiun d’administraziun speziala da Hongkong, China"}
+        HK{"Hong Kong"}
         HM{"Inslas da Heard e da McDonald"}
         HN{"Honduras"}
         HR{"Croazia"}
         HT{"Haiti"}
         HU{"Ungaria"}
+        IC{"Inslas Canarias"}
         ID{"Indonesia"}
         IE{"Irlanda"}
         IL{"Israel"}
@@ -145,7 +156,7 @@
         JO{"Jordania"}
         JP{"Giapun"}
         KE{"Kenia"}
-        KG{"Kirghisistan"}
+        KG{"Kirgisistan"}
         KH{"Cambodscha"}
         KI{"Kiribati"}
         KM{"Comoras"}
@@ -173,10 +184,11 @@
         MF{"Saint Martin"}
         MG{"Madagascar"}
         MH{"Inslas da Marshall"}
+        MK{"Macedonia dal Nord"}
         ML{"Mali"}
-        MM{"Myanmar"}
+        MM{"Myanmar (Burma)"}
         MN{"Mongolia"}
-        MO{"Regiun d’administraziun speziala Macao, China"}
+        MO{"Macao"}
         MP{"Inslas Mariannas dal Nord"}
         MQ{"Martinique"}
         MR{"Mauretania"}
@@ -211,7 +223,7 @@
         PM{"Saint Pierre e Miquelon"}
         PN{"Pitcairn"}
         PR{"Puerto Rico"}
-        PS{"Territori Palestinais"}
+        PS{"Palestina"}
         PT{"Portugal"}
         PW{"Palau"}
         PY{"Paraguai"}
@@ -223,7 +235,7 @@
         RU{"Russia"}
         RW{"Ruanda"}
         SA{"Arabia Saudita"}
-        SB{"Salomonas"}
+        SB{"Inslas Salomonas"}
         SC{"Seychellas"}
         SD{"Sudan"}
         SE{"Svezia"}
@@ -237,10 +249,13 @@
         SN{"Senegal"}
         SO{"Somalia"}
         SR{"Surinam"}
-        ST{"São Tomé e Principe"}
+        SS{"Sudan dal Sid"}
+        ST{"São Tomé & Príncipe"}
         SV{"El Salvador"}
+        SX{"Sint Maarten"}
         SY{"Siria"}
-        SZ{"Swaziland"}
+        SZ{"Eswatini"}
+        TA{"Tristan da Cunha"}
         TC{"Inslas Turks e Caicos"}
         TD{"Tschad"}
         TF{"Territoris Franzos Meridiunals"}
@@ -259,7 +274,8 @@
         TZ{"Tansania"}
         UA{"Ucraina"}
         UG{"Uganda"}
-        UM{"Inslas pitschnas perifericas dals Stadis Unids da l’America"}
+        UM{"Inslas Pitschnas Perifericas dals Stadis Unids da l’America"}
+        UN{"Naziuns Unidas"}
         US{"Stadis Unids da l’America"}
         UY{"Uruguay"}
         UZ{"Usbekistan"}
@@ -270,14 +286,26 @@
         VI{"Inslas Virginas Americanas"}
         VN{"Vietnam"}
         VU{"Vanuatu"}
-        WF{"Wallis e Futuna"}
+        WF{"Wallis & Futuna"}
         WS{"Samoa"}
+        XA{"accents pseudo"}
+        XB{"pseudo-bidirecziunal"}
+        XK{"Cosovo"}
         YE{"Jemen"}
         YT{"Mayotte"}
         ZA{"Africa dal Sid"}
         ZM{"Sambia"}
         ZW{"Simbabwe"}
-        ZZ{"Regiun betg encouschenta u nunvalaivla"}
+        ZZ{"regiun nunenconuschenta"}
     }
-    Version{"37"}
+    Countries%short{
+        GB{"GB"}
+        US{"US"}
+    }
+    Countries%variant{
+        CD{"Congo (DRC)"}
+        CG{"Congo (republica)"}
+        CZ{"Republica Tscheca"}
+        SZ{"Swaziland"}
+    }
 }
diff --git a/icu4c/source/data/region/rn.txt b/icu4c/source/data/region/rn.txt
index 439953f..e34a3a6 100644
--- a/icu4c/source/data/region/rn.txt
+++ b/icu4c/source/data/region/rn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rn{
     Countries{
         AD{"Andora"}
@@ -226,5 +227,4 @@
         ZM{"Zambiya"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ro.txt b/icu4c/source/data/region/ro.txt
index eba5273..d057919 100644
--- a/icu4c/source/data/region/ro.txt
+++ b/icu4c/source/data/region/ro.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ro{
     Countries{
         001{"Lume"}
@@ -253,7 +254,7 @@
         SV{"El Salvador"}
         SX{"Sint-Maarten"}
         SY{"Siria"}
-        SZ{"eSwatini"}
+        SZ{"Eswatini"}
         TA{"Tristan da Cunha"}
         TC{"Insulele Turks și Caicos"}
         TD{"Ciad"}
@@ -309,5 +310,4 @@
         SZ{"Swaziland"}
         TL{"Timorul de Est"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ro_MD.txt b/icu4c/source/data/region/ro_MD.txt
index a854c4c..71f88b1 100644
--- a/icu4c/source/data/region/ro_MD.txt
+++ b/icu4c/source/data/region/ro_MD.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ro_MD{
     Countries{
         MM{"Myanmar"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/rof.txt b/icu4c/source/data/region/rof.txt
index 104997d..95c4526 100644
--- a/icu4c/source/data/region/rof.txt
+++ b/icu4c/source/data/region/rof.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rof{
     Countries{
         AD{"Andoro"}
@@ -226,5 +227,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/root.txt b/icu4c/source/data/region/root.txt
index 1beeea6..429dfb4 100644
--- a/icu4c/source/data/region/root.txt
+++ b/icu4c/source/data/region/root.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 root{
-    Version{"37"}
+    Version{"38.1"}
 }
diff --git a/icu4c/source/data/region/ru.txt b/icu4c/source/data/region/ru.txt
index 9fea1b9..1fb2271 100644
--- a/icu4c/source/data/region/ru.txt
+++ b/icu4c/source/data/region/ru.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru{
     Countries{
         001{"весь мир"}
@@ -309,5 +310,4 @@
         SZ{"Свазиленд"}
         TL{"Тимор-Лесте"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ru_UA.txt b/icu4c/source/data/region/ru_UA.txt
index 68a781d..721642b 100644
--- a/icu4c/source/data/region/ru_UA.txt
+++ b/icu4c/source/data/region/ru_UA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru_UA{
     Countries{
         AC{"О-в Вознесения"}
@@ -13,5 +14,4 @@
         TL{"Тимор-Лесте"}
         UM{"Малые Тихоокеанские Отдаленные Острова США"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/rw.txt b/icu4c/source/data/region/rw.txt
index 3759594..ef39e74 100644
--- a/icu4c/source/data/region/rw.txt
+++ b/icu4c/source/data/region/rw.txt
@@ -1,10 +1,10 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rw{
     Countries{
         MK{"Masedoniya y’Amajyaruguru"}
         RW{"U Rwanda"}
         TO{"Tonga"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/rwk.txt b/icu4c/source/data/region/rwk.txt
index d2b789d..8ec4b20 100644
--- a/icu4c/source/data/region/rwk.txt
+++ b/icu4c/source/data/region/rwk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rwk{
     Countries{
         AD{"Andora"}
@@ -226,5 +227,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sa.txt b/icu4c/source/data/region/sa.txt
new file mode 100644
index 0000000..9c629b7
--- /dev/null
+++ b/icu4c/source/data/region/sa.txt
@@ -0,0 +1,18 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+sa{
+    Countries{
+        BR{"ब्राजील"}
+        CN{"चीन:"}
+        DE{"जर्मनीदेश:"}
+        FR{"फ़्रांस:"}
+        GB{"संयुक्त राष्ट्र:"}
+        IN{"भारतः"}
+        IT{"इटली:"}
+        JP{"जापन:"}
+        RU{"रष्यदेश:"}
+        US{"संयुक्त राज्य:"}
+        ZZ{"अज्ञात क्षेत्र:"}
+    }
+}
diff --git a/icu4c/source/data/region/sah.txt b/icu4c/source/data/region/sah.txt
index bf000c2..93ef223 100644
--- a/icu4c/source/data/region/sah.txt
+++ b/icu4c/source/data/region/sah.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sah{
     Countries{
         001{"Аан дойду"}
@@ -31,5 +32,4 @@
     Countries%short{
         US{"АХШ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/saq.txt b/icu4c/source/data/region/saq.txt
index 59c8d34..779e6ef 100644
--- a/icu4c/source/data/region/saq.txt
+++ b/icu4c/source/data/region/saq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 saq{
     Countries{
         AD{"Andora"}
@@ -226,5 +227,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sat.txt b/icu4c/source/data/region/sat.txt
index 3e131ee..20fb539 100644
--- a/icu4c/source/data/region/sat.txt
+++ b/icu4c/source/data/region/sat.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat{
     Countries{
         BR{"ᱵᱨᱟᱡᱤᱞ"}
@@ -14,5 +15,4 @@
         US{"ᱭᱩᱱᱟᱭᱴᱮᱰ ᱮᱥᱴᱮᱴ"}
         ZZ{"ᱵᱟᱝᱩᱨᱩᱢ ᱴᱚᱴᱷᱟ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sat_IN.txt b/icu4c/source/data/region/sat_IN.txt
index c4976b4..15af329 100644
--- a/icu4c/source/data/region/sat_IN.txt
+++ b/icu4c/source/data/region/sat_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat_IN{
     "%%ALIAS"{"sat_Olck_IN"}
 }
diff --git a/icu4c/source/data/region/sat_Olck.txt b/icu4c/source/data/region/sat_Olck.txt
index 0d7225f..f09b6a0 100644
--- a/icu4c/source/data/region/sat_Olck.txt
+++ b/icu4c/source/data/region/sat_Olck.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat_Olck{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sat_Olck_IN.txt b/icu4c/source/data/region/sat_Olck_IN.txt
index 8bda43c..0a44bdb 100644
--- a/icu4c/source/data/region/sat_Olck_IN.txt
+++ b/icu4c/source/data/region/sat_Olck_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/sbp.txt b/icu4c/source/data/region/sbp.txt
index 90e2ae2..a425f0f 100644
--- a/icu4c/source/data/region/sbp.txt
+++ b/icu4c/source/data/region/sbp.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sbp{
     Countries{
         AD{"Andola"}
@@ -226,5 +227,4 @@
         ZM{"Sambiya"}
         ZW{"Simbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sd.txt b/icu4c/source/data/region/sd.txt
index 50f8b94..9413b53 100644
--- a/icu4c/source/data/region/sd.txt
+++ b/icu4c/source/data/region/sd.txt
@@ -1,16 +1,17 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd{
     Countries{
         001{"دنيا"}
         002{"آفريڪا"}
         003{"اتر آمريڪا"}
         005{"ڏکڻ آمريڪا"}
-        009{"سامونڊي"}
+        009{"اوشنيا"}
         011{"اولهه آفريقا"}
         013{"وچ آمريڪا"}
         014{"اوڀر آفريڪا"}
-        015{"اترين آفريڪا"}
+        015{"اتر آفريڪا"}
         017{"وچ آفريڪا"}
         018{"ڏاکڻي آمريڪا"}
         019{"آمريڪا"}
@@ -37,7 +38,7 @@
         AD{"اندورا"}
         AE{"متحده عرب امارات"}
         AF{"افغانستان"}
-        AG{"انٽيگئا و بربودا"}
+        AG{"انٽيگا ۽ باربوڊا"}
         AI{"انگويلا"}
         AL{"البانيا"}
         AM{"ارمینیا"}
@@ -45,12 +46,12 @@
         AQ{"انٽارڪٽيڪا"}
         AR{"ارجنٽينا"}
         AS{"آمريڪي ساموا"}
-        AT{"آشٽريا"}
+        AT{"آسٽريا"}
         AU{"آسٽريليا"}
         AW{"عروبا"}
         AX{"الند ٻيٽ"}
         AZ{"آذربائيجان"}
-        BA{"بوسنیا اور هرزیگوینا"}
+        BA{"بوسنيا ۽ ھرزيگوينا"}
         BB{"باربڊوس"}
         BD{"بنگلاديش"}
         BE{"بيلجيم"}
@@ -65,26 +66,26 @@
         BO{"بوليويا"}
         BQ{"ڪيريبين نيدرلينڊ"}
         BR{"برازيل"}
-        BS{"بهاماس"}
+        BS{"باهاماس"}
         BT{"ڀوٽان"}
         BV{"بووٽ ٻيٽ"}
         BW{"بوٽسوانا"}
         BY{"بیلارس"}
         BZ{"بيليز"}
-        CA{"ڪئناڊا"}
+        CA{"ڪينيڊا"}
         CC{"ڪوڪوس ٻيٽ"}
         CD{"ڪانگو -ڪنشاسا"}
         CF{"وچ آفريقي جمهوريه"}
         CG{"ڪانگو - برازاویل"}
         CH{"سوئزرلينڊ"}
-        CI{"آئيوري ڪنارو"}
+        CI{"ڪوٽ ڊي وار"}
         CK{"ڪوڪ ٻيٽ"}
         CL{"چلي"}
         CM{"ڪيمرون"}
         CN{"چين"}
         CO{"ڪولمبيا"}
         CP{"ڪلپرٽن ٻيٽ"}
-        CR{"ڪوسٽا رڪا"}
+        CR{"ڪوسٽا ريڪا"}
         CU{"ڪيوبا"}
         CV{"ڪيپ وردي"}
         CW{"ڪيوراسائو"}
@@ -110,12 +111,12 @@
         EZ{"يورو زون"}
         FI{"فن لينڊ"}
         FJ{"فجي"}
-        FK{"فلڪ لينڊ ٻيٽ"}
+        FK{"فاڪ لينڊ ٻيٽ (اسلس مالويناس)"}
         FM{"مائڪرونيشيا"}
         FO{"فارو ٻيٽ"}
         FR{"فرانس"}
         GA{"گبون"}
-        GB{"برطانيه"}
+        GB{"برطانيہ"}
         GD{"گرينڊا"}
         GE{"جارجيا"}
         GF{"فرانسيسي گيانا"}
@@ -138,13 +139,13 @@
         HN{"هنڊورس"}
         HR{"ڪروئيشيا"}
         HT{"هيٽي"}
-        HU{"چيڪ جهموريه"}
+        HU{"هنگري"}
         IC{"ڪينري ٻيٽ"}
         ID{"انڊونيشيا"}
         IE{"آئرلينڊ"}
         IL{"اسرائيل"}
         IM{"انسانن جو ٻيٽ"}
-        IN{"انڊيا"}
+        IN{"ڀارت"}
         IO{"برطانوي هندي سمنڊ خطو"}
         IQ{"عراق"}
         IR{"ايران"}
@@ -173,22 +174,22 @@
         LR{"لائبیریا"}
         LS{"ليسوٿو"}
         LT{"لٿونيا"}
-        LU{"لیگزمبرگ"}
+        LU{"لگزمبرگ"}
         LV{"لاتويا"}
         LY{"لبيا"}
-        MA{"موروڪو"}
+        MA{"مراڪش"}
         MC{"موناڪو"}
         MD{"مالدووا"}
         ME{"مونٽي نيگرو"}
         MF{"سينٽ مارٽن"}
-        MG{"مداگيسڪر"}
-        MH{"مارشل ڀيٽ"}
-        MK{"شمالي مقدونيا"}
+        MG{"مدگاسڪر"}
+        MH{"مارشل ٻيٽ"}
+        MK{"اتر مقدونيا"}
         ML{"مالي"}
         MM{"ميانمار (برما)"}
         MN{"منگوليا"}
         MO{"مڪائو"}
-        MP{"اتر مرينا ٻيٽ"}
+        MP{"اتريان ماريانا ٻيٽ"}
         MQ{"مارتينڪ"}
         MR{"موريتانيا"}
         MS{"مونٽسراٽ"}
@@ -238,7 +239,7 @@
         SC{"شي شلز"}
         SD{"سوڊان"}
         SE{"سوئيڊن"}
-        SG{"سينگاپور"}
+        SG{"سنگاپور"}
         SH{"سينٽ ھيلينا"}
         SI{"سلوینیا"}
         SJ{"سوالبارڊ ۽ جان ماین"}
@@ -258,7 +259,7 @@
         TC{"ترڪ ۽ ڪيڪوس ٻيٽ"}
         TD{"چاڊ"}
         TF{"فرانسيسي ڏاکڻي علائقا"}
-        TG{"توگو"}
+        TG{"ٽوگو"}
         TH{"ٿائيليند"}
         TJ{"تاجڪستان"}
         TK{"ٽوڪلائو"}
@@ -273,20 +274,20 @@
         TZ{"تنزانيا"}
         UA{"يوڪرين"}
         UG{"يوگنڊا"}
-        UM{"آمريڪي ٻاهريون ٻيٽ"}
-        UN{"اقوام متحده"}
+        UM{"آمريڪي خارجي ٻيٽ"}
+        UN{"گڏيل قومون"}
         US{"آمريڪا جون گڏيل رياستون"}
         UY{"يوروگوءِ"}
         UZ{"ازبڪستان"}
         VA{"ويٽڪين سٽي"}
         VC{"سینٽ ونسنت ۽ گریناڊینز"}
-        VE{"وينزيلا"}
+        VE{"وينزويلا"}
         VG{"برطانوي ورجن ٻيٽ"}
         VI{"آمريڪي ورجن ٻيٽ"}
         VN{"ويتنام"}
         VU{"وينيٽيو"}
         WF{"والس ۽ فتونا"}
-        WS{"سموئا"}
+        WS{"ساموا"}
         XA{"سوڊو-لهجا"}
         XB{"سوڊو-بي ڊي"}
         XK{"ڪوسووو"}
@@ -298,15 +299,15 @@
         ZZ{"اڻڄاتل خطو"}
     }
     Countries%short{
+        GB{"برطانيه"}
         US{"يوايس"}
     }
     Countries%variant{
         CD{"ڪانگو"}
         CG{"ڪانگو (جمهوري)"}
         CI{"آئيوري ڪوسٽ"}
-        CZ{"چيڪ جهموريو"}
+        CZ{"چيڪ جهموريہ"}
         SZ{"سوازيلينڊ"}
         TL{"اوڀر تيمور"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sd_Arab.txt b/icu4c/source/data/region/sd_Arab.txt
index 52a97c8..c089e06 100644
--- a/icu4c/source/data/region/sd_Arab.txt
+++ b/icu4c/source/data/region/sd_Arab.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_Arab{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sd_Arab_PK.txt b/icu4c/source/data/region/sd_Arab_PK.txt
index 4a9803a..2e57dba 100644
--- a/icu4c/source/data/region/sd_Arab_PK.txt
+++ b/icu4c/source/data/region/sd_Arab_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/sd_Deva.txt b/icu4c/source/data/region/sd_Deva.txt
index b010b61..ef08e59 100644
--- a/icu4c/source/data/region/sd_Deva.txt
+++ b/icu4c/source/data/region/sd_Deva.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_Deva{
     %%Parent{"root"}
     Countries{
@@ -15,5 +16,4 @@
         US{"अमेरिका"}
         ZZ{"अणवाकुफु इलाको"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sd_PK.txt b/icu4c/source/data/region/sd_PK.txt
index 7663600..b7def87 100644
--- a/icu4c/source/data/region/sd_PK.txt
+++ b/icu4c/source/data/region/sd_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_PK{
     "%%ALIAS"{"sd_Arab_PK"}
 }
diff --git a/icu4c/source/data/region/se.txt b/icu4c/source/data/region/se.txt
index b52d093..5f05a01 100644
--- a/icu4c/source/data/region/se.txt
+++ b/icu4c/source/data/region/se.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 se{
     Countries{
         001{"máilbmi"}
@@ -289,5 +290,4 @@
     Countries%short{
         US{"USA"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/se_FI.txt b/icu4c/source/data/region/se_FI.txt
index 74948cb..26ec137 100644
--- a/icu4c/source/data/region/se_FI.txt
+++ b/icu4c/source/data/region/se_FI.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 se_FI{
     Countries{
         001{"Máilbmi"}
@@ -26,5 +27,4 @@
     Countries%variant{
         CI{"Côte d’Ivoire"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/seh.txt b/icu4c/source/data/region/seh.txt
index 4378f82..17e781a 100644
--- a/icu4c/source/data/region/seh.txt
+++ b/icu4c/source/data/region/seh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 seh{
     Countries{
         AD{"Andorra"}
@@ -225,5 +226,4 @@
         ZM{"Zâmbia"}
         ZW{"Zimbábue"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ses.txt b/icu4c/source/data/region/ses.txt
index 16898e3..49c1e1b 100644
--- a/icu4c/source/data/region/ses.txt
+++ b/icu4c/source/data/region/ses.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ses{
     Countries{
         AD{"Andoora"}
@@ -226,5 +227,4 @@
         ZM{"Zambi"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sg.txt b/icu4c/source/data/region/sg.txt
index b421b68..6c4a811 100644
--- a/icu4c/source/data/region/sg.txt
+++ b/icu4c/source/data/region/sg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sg{
     Countries{
         AD{"Andôro"}
@@ -226,5 +227,4 @@
         ZM{"Zambïi"}
         ZW{"Zimbäbwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sh.txt b/icu4c/source/data/region/sh.txt
index 74b646a..83091b2 100644
--- a/icu4c/source/data/region/sh.txt
+++ b/icu4c/source/data/region/sh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh{
     "%%ALIAS"{"sr_Latn"}
 }
diff --git a/icu4c/source/data/region/sh_BA.txt b/icu4c/source/data/region/sh_BA.txt
index 93bdac6..7f73cd5 100644
--- a/icu4c/source/data/region/sh_BA.txt
+++ b/icu4c/source/data/region/sh_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_BA{
     "%%ALIAS"{"sr_Latn_BA"}
 }
diff --git a/icu4c/source/data/region/sh_CS.txt b/icu4c/source/data/region/sh_CS.txt
index 224568a..3b2f92b 100644
--- a/icu4c/source/data/region/sh_CS.txt
+++ b/icu4c/source/data/region/sh_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_CS{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/region/sh_YU.txt b/icu4c/source/data/region/sh_YU.txt
index 8a7d460..dc5a35b 100644
--- a/icu4c/source/data/region/sh_YU.txt
+++ b/icu4c/source/data/region/sh_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_YU{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/region/shi.txt b/icu4c/source/data/region/shi.txt
index 66530bd..0d9ccfd 100644
--- a/icu4c/source/data/region/shi.txt
+++ b/icu4c/source/data/region/shi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi{
     Countries{
         AD{"ⴰⵏⴷⵓⵔⴰ"}
@@ -226,5 +227,4 @@
         ZM{"ⵣⴰⵎⴱⵢⴰ"}
         ZW{"ⵣⵉⵎⴱⴰⴱⵡⵉ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/shi_Latn.txt b/icu4c/source/data/region/shi_Latn.txt
index 32b45f9..24a13e7 100644
--- a/icu4c/source/data/region/shi_Latn.txt
+++ b/icu4c/source/data/region/shi_Latn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_Latn{
     %%Parent{"root"}
     Countries{
@@ -227,5 +228,4 @@
         ZM{"zambya"}
         ZW{"zimbabwi"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/shi_MA.txt b/icu4c/source/data/region/shi_MA.txt
index 00de1b1..c96251d 100644
--- a/icu4c/source/data/region/shi_MA.txt
+++ b/icu4c/source/data/region/shi_MA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_MA{
     "%%ALIAS"{"shi_Tfng_MA"}
 }
diff --git a/icu4c/source/data/region/shi_Tfng.txt b/icu4c/source/data/region/shi_Tfng.txt
index 397f53f..723cdf1 100644
--- a/icu4c/source/data/region/shi_Tfng.txt
+++ b/icu4c/source/data/region/shi_Tfng.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_Tfng{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/shi_Tfng_MA.txt b/icu4c/source/data/region/shi_Tfng_MA.txt
index 978cd5c..3ec81a4 100644
--- a/icu4c/source/data/region/shi_Tfng_MA.txt
+++ b/icu4c/source/data/region/shi_Tfng_MA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/si.txt b/icu4c/source/data/region/si.txt
index 04fad2d..0db7696 100644
--- a/icu4c/source/data/region/si.txt
+++ b/icu4c/source/data/region/si.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 si{
     Countries{
         001{"ලෝකය"}
@@ -308,5 +309,4 @@
         SZ{"ස්වාසිලන්තය"}
         TL{"නැගෙනහිර ටිමෝරය"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sk.txt b/icu4c/source/data/region/sk.txt
index 0a03275..92af12b 100644
--- a/icu4c/source/data/region/sk.txt
+++ b/icu4c/source/data/region/sk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sk{
     Countries{
         001{"svet"}
@@ -308,5 +309,4 @@
         CZ{"Česká republika"}
         SZ{"Svazijsko"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sl.txt b/icu4c/source/data/region/sl.txt
index db3bae4..5d32bd3 100644
--- a/icu4c/source/data/region/sl.txt
+++ b/icu4c/source/data/region/sl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sl{
     Countries{
         001{"svet"}
@@ -74,7 +75,7 @@
         CA{"Kanada"}
         CC{"Kokosovi otoki"}
         CD{"Demokratična republika Kongo"}
-        CF{"Centralnoafriška republika"}
+        CF{"Srednjeafriška republika"}
         CG{"Kongo - Brazzaville"}
         CH{"Švica"}
         CI{"Slonokoščena obala"}
@@ -187,7 +188,7 @@
         ML{"Mali"}
         MM{"Mjanmar (Burma)"}
         MN{"Mongolija"}
-        MO{"Posebno administrativno območje LR Kitajske Macao"}
+        MO{"Macao"}
         MP{"Severni Marianski otoki"}
         MQ{"Martinik"}
         MR{"Mavretanija"}
@@ -310,5 +311,4 @@
         SZ{"Svazi"}
         TL{"Vzhodni Timor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/smn.txt b/icu4c/source/data/region/smn.txt
index 8a477d7..f609c55 100644
--- a/icu4c/source/data/region/smn.txt
+++ b/icu4c/source/data/region/smn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 smn{
     Countries{
         AC{"Ascension-suálui"}
@@ -261,5 +262,4 @@
         CD{"Kongo demokraattisâš täsiväldi"}
         CG{"Kongo täsiväldi"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sn.txt b/icu4c/source/data/region/sn.txt
index beb216e..a2fc877 100644
--- a/icu4c/source/data/region/sn.txt
+++ b/icu4c/source/data/region/sn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sn{
     Countries{
         AD{"Andora"}
@@ -225,5 +226,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/so.txt b/icu4c/source/data/region/so.txt
index 58a0de7..93d5d93 100644
--- a/icu4c/source/data/region/so.txt
+++ b/icu4c/source/data/region/so.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 so{
     Countries{
         001{"Dunida"}
@@ -35,7 +36,7 @@
         419{"Laatiin Ameerika"}
         AC{"Jasiiradda Asensiyoon"}
         AD{"Andora"}
-        AE{"Imaaraadka Carabta ee Midoobay"}
+        AE{"Midawga Imaaraatka Carabta"}
         AF{"Afgaanistaan"}
         AG{"Antigua & Barbuuda"}
         AI{"Anguula"}
@@ -52,7 +53,7 @@
         AZ{"Asarbajan"}
         BA{"Boosniya & Harsegofina"}
         BB{"Baarbadoos"}
-        BD{"Bangladesh"}
+        BD{"Bangaladhesh"}
         BE{"Biljam"}
         BF{"Burkiina Faaso"}
         BG{"Bulgaariya"}
@@ -61,7 +62,7 @@
         BJ{"Biniin"}
         BL{"St. Baathelemiy"}
         BM{"Barmuuda"}
-        BN{"Buruneeya"}
+        BN{"Buruneey"}
         BO{"Boliifiya"}
         BQ{"Karibiyaan Nadarlands"}
         BR{"Baraasiil"}
@@ -185,7 +186,7 @@
         MH{"Jasiiradda Maarshal"}
         MK{"Masedooniya Waqooyi"}
         ML{"Maali"}
-        MM{"Miyanmar"}
+        MM{"Mayanmar"}
         MN{"Mongooliya"}
         MO{"Makaaw"}
         MP{"Jasiiradda Waqooyiga Mariaana"}
@@ -194,10 +195,10 @@
         MS{"Montserrat"}
         MT{"Maalta"}
         MU{"Mawrishiyaas"}
-        MV{"Maaldiqeen"}
+        MV{"Maaldiifis"}
         MW{"Malaawi"}
         MX{"Meksiko"}
-        MY{"Malaysia"}
+        MY{"Malaysiya"}
         MZ{"Musambiik"}
         NA{"Namiibiya"}
         NC{"Jasiiradda Niyuu Kaledooniya"}
@@ -215,7 +216,7 @@
         PA{"Baanama"}
         PE{"Beeru"}
         PF{"Booliyneesiya Faransiiska"}
-        PG{"Babua Niyuu Gini"}
+        PG{"Babwa Niyuu Gini"}
         PH{"Filibiin"}
         PK{"Bakistaan"}
         PL{"Booland"}
@@ -239,7 +240,7 @@
         SD{"Suudaan"}
         SE{"Iswidhan"}
         SG{"Singaboor"}
-        SH{"Saint Helena"}
+        SH{"Saynt Helena"}
         SI{"Islofeeniya"}
         SJ{"Jasiiradda Sfaldbaad & Jaan Mayen"}
         SK{"Islofaakiya"}
@@ -277,7 +278,7 @@
         UN{"Qaramada Midoobay"}
         US{"Maraykanka"}
         UY{"Uruguwaay"}
-        UZ{"Uusbakistaan"}
+        UZ{"Usbakistan"}
         VA{"Faatikaan"}
         VC{"St. Finsent & Girenadiins"}
         VE{"Fenisuweela"}
@@ -306,7 +307,6 @@
         CI{"Aayforikoost"}
         CZ{"Jamhuuriyadda Jek"}
         SZ{"Iswaasilaan"}
-        TL{"Timoor Bari"}
+        TL{"Bariga Timor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sq.txt b/icu4c/source/data/region/sq.txt
index 5239131..b8fe396 100644
--- a/icu4c/source/data/region/sq.txt
+++ b/icu4c/source/data/region/sq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sq{
     Countries{
         001{"Bota"}
@@ -309,5 +310,4 @@
         SZ{"Suazilend"}
         TL{"Timori Lindor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sr.txt b/icu4c/source/data/region/sr.txt
index 2d97a2c..6644897 100644
--- a/icu4c/source/data/region/sr.txt
+++ b/icu4c/source/data/region/sr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr{
     Countries{
         001{"свет"}
@@ -309,5 +310,4 @@
         CZ{"Чешка Република"}
         TL{"Источни Тимор"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sr_BA.txt b/icu4c/source/data/region/sr_BA.txt
index edad17f..04f2efd 100644
--- a/icu4c/source/data/region/sr_BA.txt
+++ b/icu4c/source/data/region/sr_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_BA{
     "%%ALIAS"{"sr_Cyrl_BA"}
 }
diff --git a/icu4c/source/data/region/sr_CS.txt b/icu4c/source/data/region/sr_CS.txt
index 5f8becf..6a32f49 100644
--- a/icu4c/source/data/region/sr_CS.txt
+++ b/icu4c/source/data/region/sr_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_CS{
-    "%%ALIAS"{"sr_Cyrl_RS"}
+    "%%ALIAS"{"sr_RS"}
 }
diff --git a/icu4c/source/data/region/sr_Cyrl.txt b/icu4c/source/data/region/sr_Cyrl.txt
index df3a287..772d8b3 100644
--- a/icu4c/source/data/region/sr_Cyrl.txt
+++ b/icu4c/source/data/region/sr_Cyrl.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sr_Cyrl_BA.txt b/icu4c/source/data/region/sr_Cyrl_BA.txt
index 930f063..fd5bfe2 100644
--- a/icu4c/source/data/region/sr_Cyrl_BA.txt
+++ b/icu4c/source/data/region/sr_Cyrl_BA.txt
@@ -1,20 +1,39 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_BA{
     Countries{
+        001{"свијет"}
+        003{"Сјеверноамерички континент"}
+        015{"Сјеверна Африка"}
+        019{"Сјеверна и Јужна Америка"}
+        021{"Сјеверна Америка"}
+        154{"Сјеверна Европа"}
+        AC{"острво Асенсион"}
         BY{"Бјелорусија"}
+        CC{"Кокосова (Килинг) острва"}
         CG{"Конго"}
+        CP{"острво Клипертон"}
         CV{"Кабо Верде"}
         CZ{"Чешка Република"}
         DE{"Њемачка"}
+        GS{"Јужна Џорџија и Јужна Сендвичка острва"}
+        GU{"Гвам"}
+        HK{"Хонгконг"}
+        HM{"острво Херд и острва Макдоналд"}
         KN{"Свети Китс и Невис"}
+        KP{"Сјеверна Кореја"}
+        MK{"Сјеверна Македонија"}
         MO{"Макао"}
+        MP{"Сјеверна Маријанска острва"}
+        NF{"острво Норфок"}
+        NU{"Нијуе"}
         PM{"Свети Пјер и Микелон"}
+        PS{"Палестина"}
         RE{"Реунион"}
-        UM{"Мања удаљена острва САД"}
+        UM{"Спољна острва САД"}
         VC{"Свети Винсент и Гренадини"}
         VG{"Британска Дјевичанска Острва"}
         VI{"Америчка Дјевичанска Острва"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sr_Cyrl_CS.txt b/icu4c/source/data/region/sr_Cyrl_CS.txt
index 9325e5a..2da82d2 100644
--- a/icu4c/source/data/region/sr_Cyrl_CS.txt
+++ b/icu4c/source/data/region/sr_Cyrl_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_CS{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/region/sr_Cyrl_ME.txt b/icu4c/source/data/region/sr_Cyrl_ME.txt
index b3f48f0..14c153d 100644
--- a/icu4c/source/data/region/sr_Cyrl_ME.txt
+++ b/icu4c/source/data/region/sr_Cyrl_ME.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_ME{
     Countries{
         BY{"Бјелорусија"}
@@ -14,5 +15,4 @@
         VG{"Британска Дјевичанска Острва"}
         VI{"Америчка Дјевичанска Острва"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sr_Cyrl_RS.txt b/icu4c/source/data/region/sr_Cyrl_RS.txt
index 7ef8fab..c74b860 100644
--- a/icu4c/source/data/region/sr_Cyrl_RS.txt
+++ b/icu4c/source/data/region/sr_Cyrl_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/sr_Cyrl_XK.txt b/icu4c/source/data/region/sr_Cyrl_XK.txt
index ca97015..7dae3f8 100644
--- a/icu4c/source/data/region/sr_Cyrl_XK.txt
+++ b/icu4c/source/data/region/sr_Cyrl_XK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_XK{
     Countries{
         CG{"Конго"}
@@ -13,5 +14,4 @@
         UM{"Мања удаљена острва САД"}
         VC{"Свети Винсент и Гренадини"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sr_Cyrl_YU.txt b/icu4c/source/data/region/sr_Cyrl_YU.txt
index 806d42c..5874f8c 100644
--- a/icu4c/source/data/region/sr_Cyrl_YU.txt
+++ b/icu4c/source/data/region/sr_Cyrl_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_YU{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/region/sr_Latn.txt b/icu4c/source/data/region/sr_Latn.txt
index da3dc36..20da58c 100644
--- a/icu4c/source/data/region/sr_Latn.txt
+++ b/icu4c/source/data/region/sr_Latn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn{
     %%Parent{"root"}
     Countries{
@@ -310,5 +311,4 @@
         CZ{"Češka Republika"}
         TL{"Istočni Timor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sr_Latn_BA.txt b/icu4c/source/data/region/sr_Latn_BA.txt
index 05da659..46160a4 100644
--- a/icu4c/source/data/region/sr_Latn_BA.txt
+++ b/icu4c/source/data/region/sr_Latn_BA.txt
@@ -1,20 +1,39 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_BA{
     Countries{
+        001{"svijet"}
+        003{"Sjevernoamerički kontinent"}
+        015{"Sjeverna Afrika"}
+        019{"Sjeverna i Južna Amerika"}
+        021{"Sjeverna Amerika"}
+        154{"Sjeverna Evropa"}
+        AC{"ostrvo Asension"}
         BY{"Bjelorusija"}
+        CC{"Kokosova (Kiling) ostrva"}
         CG{"Kongo"}
+        CP{"ostrvo Kliperton"}
         CV{"Kabo Verde"}
         CZ{"Češka Republika"}
         DE{"Njemačka"}
+        GS{"Južna Džordžija i Južna Sendvička ostrva"}
+        GU{"Gvam"}
+        HK{"Hongkong"}
+        HM{"ostrvo Herd i ostrva Makdonald"}
         KN{"Sveti Kits i Nevis"}
+        KP{"Sjeverna Koreja"}
+        MK{"Sjeverna Makedonija"}
         MO{"Makao"}
+        MP{"Sjeverna Marijanska ostrva"}
+        NF{"ostrvo Norfok"}
+        NU{"Nijue"}
         PM{"Sveti Pjer i Mikelon"}
+        PS{"Palestina"}
         RE{"Reunion"}
-        UM{"Manja udaljena ostrva SAD"}
+        UM{"Spoljna ostrva SAD"}
         VC{"Sveti Vinsent i Grenadini"}
         VG{"Britanska Djevičanska Ostrva"}
         VI{"Američka Djevičanska Ostrva"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sr_Latn_CS.txt b/icu4c/source/data/region/sr_Latn_CS.txt
index 0952735..7204cfd 100644
--- a/icu4c/source/data/region/sr_Latn_CS.txt
+++ b/icu4c/source/data/region/sr_Latn_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_CS{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/region/sr_Latn_ME.txt b/icu4c/source/data/region/sr_Latn_ME.txt
index 09c9c14..a3db082 100644
--- a/icu4c/source/data/region/sr_Latn_ME.txt
+++ b/icu4c/source/data/region/sr_Latn_ME.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_ME{
     Countries{
         BY{"Bjelorusija"}
@@ -14,5 +15,4 @@
         VG{"Britanska Djevičanska Ostrva"}
         VI{"Američka Djevičanska Ostrva"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sr_Latn_RS.txt b/icu4c/source/data/region/sr_Latn_RS.txt
index 76d38f8..8d63da6 100644
--- a/icu4c/source/data/region/sr_Latn_RS.txt
+++ b/icu4c/source/data/region/sr_Latn_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/sr_Latn_XK.txt b/icu4c/source/data/region/sr_Latn_XK.txt
index 9a6de5b..7949237 100644
--- a/icu4c/source/data/region/sr_Latn_XK.txt
+++ b/icu4c/source/data/region/sr_Latn_XK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_XK{
     Countries{
         CG{"Kongo"}
@@ -13,5 +14,4 @@
         UM{"Manja udaljena ostrva SAD"}
         VC{"Sveti Vinsent i Grenadini"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sr_Latn_YU.txt b/icu4c/source/data/region/sr_Latn_YU.txt
index 2747ab2..415a4d8 100644
--- a/icu4c/source/data/region/sr_Latn_YU.txt
+++ b/icu4c/source/data/region/sr_Latn_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_YU{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/region/sr_ME.txt b/icu4c/source/data/region/sr_ME.txt
index 32dc910..aa51626 100644
--- a/icu4c/source/data/region/sr_ME.txt
+++ b/icu4c/source/data/region/sr_ME.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_ME{
     "%%ALIAS"{"sr_Latn_ME"}
 }
diff --git a/icu4c/source/data/region/sr_RS.txt b/icu4c/source/data/region/sr_RS.txt
index 674ff77..84db469 100644
--- a/icu4c/source/data/region/sr_RS.txt
+++ b/icu4c/source/data/region/sr_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_RS{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/region/sr_XK.txt b/icu4c/source/data/region/sr_XK.txt
index 9628a27..0d3aa53 100644
--- a/icu4c/source/data/region/sr_XK.txt
+++ b/icu4c/source/data/region/sr_XK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_XK{
     "%%ALIAS"{"sr_Cyrl_XK"}
 }
diff --git a/icu4c/source/data/region/sr_YU.txt b/icu4c/source/data/region/sr_YU.txt
index 26563d0..2d67778 100644
--- a/icu4c/source/data/region/sr_YU.txt
+++ b/icu4c/source/data/region/sr_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_YU{
-    "%%ALIAS"{"sr_Cyrl_RS"}
+    "%%ALIAS"{"sr_RS"}
 }
diff --git a/icu4c/source/data/region/su.txt b/icu4c/source/data/region/su.txt
index bc474a4..a45bfec 100644
--- a/icu4c/source/data/region/su.txt
+++ b/icu4c/source/data/region/su.txt
@@ -1,18 +1,18 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su{
     Countries{
         BR{"Brasil"}
         CN{"Tiongkok"}
         DE{"Jérman"}
         FR{"Prancis"}
-        GB{"Inggris Raya"}
+        GB{"Britania Raya"}
         IN{"India"}
         IT{"Italia"}
         JP{"Jepang"}
         RU{"Rusia"}
         US{"Amérika Sarikat"}
-        ZZ{"Wilayah Teu Dipikaterang"}
+        ZZ{"Wilayah Teu Dikenal"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/su_ID.txt b/icu4c/source/data/region/su_ID.txt
index 67dde38..8da0f56 100644
--- a/icu4c/source/data/region/su_ID.txt
+++ b/icu4c/source/data/region/su_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su_ID{
     "%%ALIAS"{"su_Latn_ID"}
 }
diff --git a/icu4c/source/data/region/su_Latn.txt b/icu4c/source/data/region/su_Latn.txt
index 008b423..87ca4fa 100644
--- a/icu4c/source/data/region/su_Latn.txt
+++ b/icu4c/source/data/region/su_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/su_Latn_ID.txt b/icu4c/source/data/region/su_Latn_ID.txt
index 4629832..d6b42f3 100644
--- a/icu4c/source/data/region/su_Latn_ID.txt
+++ b/icu4c/source/data/region/su_Latn_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/sv.txt b/icu4c/source/data/region/sv.txt
index 49cedf1..9a12d21 100644
--- a/icu4c/source/data/region/sv.txt
+++ b/icu4c/source/data/region/sv.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sv{
     Countries{
         001{"världen"}
@@ -14,7 +15,7 @@
         017{"Centralafrika"}
         018{"södra Afrika"}
         019{"Nord- och Sydamerika"}
-        021{"norra Amerika"}
+        021{"Norra Amerika"}
         029{"Karibien"}
         030{"Östasien"}
         034{"Sydasien"}
@@ -107,7 +108,7 @@
         ES{"Spanien"}
         ET{"Etiopien"}
         EU{"Europeiska unionen"}
-        EZ{"eurozonen"}
+        EZ{"euroområdet"}
         FI{"Finland"}
         FJ{"Fiji"}
         FK{"Falklandsöarna"}
@@ -261,7 +262,7 @@
         TG{"Togo"}
         TH{"Thailand"}
         TJ{"Tadzjikistan"}
-        TK{"Tokelau"}
+        TK{"Tokelauöarna"}
         TL{"Östtimor"}
         TM{"Turkmenistan"}
         TN{"Tunisien"}
@@ -306,5 +307,4 @@
         SZ{"Eswatini"}
         TL{"Timor-Leste"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sw.txt b/icu4c/source/data/region/sw.txt
index 79175cb..ba18434 100644
--- a/icu4c/source/data/region/sw.txt
+++ b/icu4c/source/data/region/sw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw{
     Countries{
         001{"Dunia"}
@@ -31,7 +32,7 @@
         151{"Ulaya ya Mashariki"}
         154{"Ulaya ya Kaskazini"}
         155{"Ulaya ya Magharibi"}
-        202{"Afrika Kusini mwa Jangwa la Sahara"}
+        202{"Afrika ya Kusini mwa Jangwa la Sahara"}
         419{"Amerika ya Kilatini"}
         AC{"Kisiwa cha Ascension"}
         AD{"Andorra"}
@@ -85,16 +86,16 @@
         CO{"Kolombia"}
         CP{"Kisiwa cha Clipperton"}
         CR{"Kostarika"}
-        CU{"Cuba"}
+        CU{"Kuba"}
         CV{"Cape Verde"}
         CW{"Curacao"}
         CX{"Kisiwa cha Krismasi"}
-        CY{"Cyprus"}
+        CY{"Saiprasi"}
         CZ{"Chechia"}
         DE{"Ujerumani"}
         DG{"Diego Garcia"}
         DJ{"Jibuti"}
-        DK{"Denmark"}
+        DK{"Denmaki"}
         DM{"Dominika"}
         DO{"Jamhuri ya Dominika"}
         DZ{"Aljeria"}
@@ -111,7 +112,7 @@
         FI{"Ufini"}
         FJ{"Fiji"}
         FK{"Visiwa vya Falkland (Islas Malvinas)"}
-        FM{"Micronesia"}
+        FM{"Mikronesia"}
         FO{"Visiwa vya Faroe"}
         FR{"Ufaransa"}
         GA{"Gabon"}
@@ -194,7 +195,7 @@
         MS{"Montserrat"}
         MT{"Malta"}
         MU{"Morisi"}
-        MV{"Maldives"}
+        MV{"Maldivi"}
         MW{"Malawi"}
         MX{"Meksiko"}
         MY{"Malesia"}
@@ -249,11 +250,11 @@
         SO{"Somalia"}
         SR{"Suriname"}
         SS{"Sudan Kusini"}
-        ST{"São Tomé na Príncipe"}
+        ST{"Sao Tome na Principe"}
         SV{"El Salvador"}
         SX{"Sint Maarten"}
         SY{"Syria"}
-        SZ{"Uswazi"}
+        SZ{"Eswatini"}
         TA{"Tristan da Cunha"}
         TC{"Visiwa vya Turks na Caicos"}
         TD{"Chad"}
@@ -283,7 +284,7 @@
         VE{"Venezuela"}
         VG{"Visiwa vya Virgin, Uingereza"}
         VI{"Visiwa vya Virgin, Marekani"}
-        VN{"Vietnam"}
+        VN{"Vietnamu"}
         VU{"Vanuatu"}
         WF{"Wallis na Futuna"}
         WS{"Samoa"}
@@ -305,7 +306,7 @@
         CG{"Jamhuri ya Kongo"}
         CI{"Ivory Coast"}
         CZ{"Jamhuri ya Cheki"}
+        SZ{"Uswazi"}
         TL{"Timor ya Mashariki"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sw_CD.txt b/icu4c/source/data/region/sw_CD.txt
index 41308e5..4ac82fd 100644
--- a/icu4c/source/data/region/sw_CD.txt
+++ b/icu4c/source/data/region/sw_CD.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw_CD{
     Countries{
         030{"Asia Mashariki"}
@@ -8,8 +9,6 @@
         BJ{"Benini"}
         CI{"Kodivaa"}
         CX{"Kisiwa cha Christmas"}
-        CY{"Saiprasi"}
-        DK{"Denmaki"}
         HR{"Kroeshia"}
         JO{"Yordani"}
         LB{"Lebanoni"}
@@ -18,7 +17,6 @@
         LV{"Lativia"}
         MA{"Moroko"}
         MM{"Myama"}
-        MV{"Maldivi"}
         NE{"Nijeri"}
         NG{"Nijeria"}
         NO{"Norwe"}
@@ -30,7 +28,5 @@
         ST{"Sao Tome na Prinsipe"}
         TD{"Chadi"}
         TL{"Timori ya Mashariki"}
-        VN{"Vietnamu"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/sw_KE.txt b/icu4c/source/data/region/sw_KE.txt
index 7d3ced4..d05fa7f 100644
--- a/icu4c/source/data/region/sw_KE.txt
+++ b/icu4c/source/data/region/sw_KE.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw_KE{
     Countries{
         202{"Kusini mwa Jangwa la Sahara"}
@@ -12,13 +13,9 @@
         BY{"Belarusi"}
         CC{"Visiwa vya Kokos (Keeling)"}
         CD{"Kongo - Kinshasa"}
-        CI{"Ivorikosti"}
         CV{"Kepuvede"}
-        CY{"Saiprasi"}
-        DK{"Denmaki"}
         EA{"Keuta na Melilla"}
         EC{"Ekwado"}
-        FM{"Mikronesia"}
         GA{"Gaboni"}
         GL{"Grinilandi"}
         GP{"Gwadelupe"}
@@ -40,7 +37,6 @@
         MM{"Myama (Burma)"}
         MQ{"Martiniki"}
         MS{"Montserati"}
-        MV{"Maldivi"}
         NC{"Nyukaledonia"}
         NE{"Nijeri"}
         NO{"Norwe"}
@@ -66,10 +62,8 @@
         VA{"Mji wa Vatikani"}
         VG{"Visiwa vya Virgin vya Uingereza"}
         VI{"Visiwa vya Virgin vya Marekani"}
-        VN{"Vietnamu"}
         XA{"Kiinitoni cha kigeni"}
         XB{"Pseudo-Bidi"}
         YT{"Mayote"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ta.txt b/icu4c/source/data/region/ta.txt
index c389289..ee9f581 100644
--- a/icu4c/source/data/region/ta.txt
+++ b/icu4c/source/data/region/ta.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ta{
     Countries{
         001{"உலகம்"}
@@ -309,5 +310,4 @@
         CZ{"செக் குடியரசு"}
         TL{"கிழக்கு தைமூர்"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/te.txt b/icu4c/source/data/region/te.txt
index 0de6d9c..ab64560 100644
--- a/icu4c/source/data/region/te.txt
+++ b/icu4c/source/data/region/te.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 te{
     Countries{
         001{"ప్రపంచం"}
@@ -310,5 +311,4 @@
         SZ{"స్వాజిల్యాండ్"}
         TL{"తూర్పు టిమోర్"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/teo.txt b/icu4c/source/data/region/teo.txt
index 1b1b18b..a15f8a5 100644
--- a/icu4c/source/data/region/teo.txt
+++ b/icu4c/source/data/region/teo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 teo{
     Countries{
         AD{"Andora"}
@@ -226,5 +227,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/tg.txt b/icu4c/source/data/region/tg.txt
index 3239b15..51462d7 100644
--- a/icu4c/source/data/region/tg.txt
+++ b/icu4c/source/data/region/tg.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tg{
     Countries{
         AC{"Асунсон"}
@@ -257,5 +258,4 @@
         CD{"Конго (ҶДК)"}
         CG{"Конго"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/th.txt b/icu4c/source/data/region/th.txt
index 28dd5ef..27d2aac 100644
--- a/icu4c/source/data/region/th.txt
+++ b/icu4c/source/data/region/th.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 th{
     Countries{
         001{"โลก"}
@@ -185,7 +186,7 @@
         MH{"หมู่เกาะมาร์แชลล์"}
         MK{"มาซิโดเนียเหนือ"}
         ML{"มาลี"}
-        MM{"เมียนมาร์ (พม่า)"}
+        MM{"เมียนมา (พม่า)"}
         MN{"มองโกเลีย"}
         MO{"มาเก๊า"}
         MP{"หมู่เกาะนอร์เทิร์นมาเรียนา"}
@@ -308,5 +309,4 @@
         SZ{"สวาซิแลนด์"}
         TL{"ติมอร์ตะวันออก"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ti.txt b/icu4c/source/data/region/ti.txt
index a4e9a04..bef5e64 100644
--- a/icu4c/source/data/region/ti.txt
+++ b/icu4c/source/data/region/ti.txt
@@ -1,55 +1,79 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ti{
     Countries{
+        001{"ዓለም"}
+        002{"አፍሪካ"}
+        005{"ደቡባዊ አሜሪካ"}
+        009{"ኦሽኒያ"}
+        011{"ምዕራባዊ አፍሪካ"}
+        014{"ምስራቃዊ አፍሪካ"}
+        015{"ሰሜናዊ አፍሪካ"}
+        017{"መካከለኛ አፍሪካ"}
+        018{"ደቡባዊ አፍሪካ"}
+        019{"አሜሪካዎች"}
+        021{"ሰሜናዊ አሜሪካ"}
+        029{"ካሪቢያን"}
+        034{"ምሥራቃዊ እስያ"}
+        039{"ደቡባዊ አውሮፓ"}
+        053{"አውስትራሊያ እና ኒው ዚላንድ"}
+        054{"ሜላኔሲያ"}
+        061{"ፖሊኔዢያ"}
+        142{"እስያ"}
+        145{"ምዕራባዊ እስያ"}
+        150{"አውሮፓ"}
+        151{"ምስራቃዊ አውሮፓ"}
+        154{"ሰሜናዊ አውሮፓ"}
+        155{"ምዕራባዊ አውሮፓ"}
         AC{"አሴንሽን ደሴት"}
-        AD{"አንዶራ"}
+        AD{"ኣንዶራ"}
         AE{"ሕቡራት ኢማራት ዓረብ"}
-        AF{"አፍጋኒስታን"}
-        AG{"ኣንቲጓን ባሩዳን"}
-        AI{"አንጉኢላ"}
-        AL{"አልባኒያ"}
-        AM{"አርሜኒያ"}
-        AO{"አንጐላ"}
-        AQ{"አንታርክቲካ"}
-        AR{"አርጀንቲና"}
-        AS{"ናይ ኣሜሪካ ሳሞኣ"}
+        AF{"ኣፍጋኒስታን"}
+        AG{"ኣንቲጓን ባርቡዳን"}
+        AI{"ኣንጊላ"}
+        AL{"ኣልቤኒያ"}
+        AM{"ኣርሜኒያ"}
+        AO{"ኣንጎላ"}
+        AQ{"ኣንታርክቲካ"}
+        AR{"ኣርጀንቲና"}
+        AS{"ኣሜሪካ ሳሞኣ"}
         AT{"ኦስትሪያ"}
-        AU{"አውስትሬሊያ"}
-        AW{"አሩባ"}
+        AU{"ኣውስትራሊያ"}
+        AW{"ኣሩባ"}
         AX{"ደሴታት ኣላንድ"}
-        AZ{"አዘርባጃን"}
+        AZ{"ኣዘርበጃን"}
         BA{"ቦዝንያን ሄርዘጎቪናን"}
-        BB{"ባርቤዶስ"}
+        BB{"ባርባዶስ"}
         BD{"ባንግላዲሽ"}
-        BE{"ቤልጄም"}
+        BE{"ቤልጀም"}
         BF{"ቡርኪና ፋሶ"}
-        BG{"ቡልጌሪያ"}
-        BH{"ባህሬን"}
-        BI{"ብሩንዲ"}
+        BG{"ቡልጋሪያ"}
+        BH{"ባሕሬን"}
+        BI{"ቡሩንዲ"}
         BJ{"ቤኒን"}
         BL{"ቅዱስ ባርተለሚይ"}
         BM{"ቤርሙዳ"}
-        BN{"ብሩኒ"}
+        BN{"ብሩነይ"}
         BO{"ቦሊቪያ"}
         BQ{"ካሪቢያን ኔዘርላንድስ"}
         BR{"ብራዚል"}
         BS{"ባሃማስ"}
-        BT{"ቡህታን"}
-        BV{"ደሴታት ቦውቬት"}
+        BT{"ቡታን"}
+        BV{"ደሴት ቡቬት"}
         BW{"ቦትስዋና"}
         BY{"ቤላሩስ"}
-        BZ{"ቤሊዘ"}
+        BZ{"ቤሊዝ"}
         CA{"ካናዳ"}
         CC{"ኮኮስ ኬሊንግ ደሴቶች"}
         CD{"ኮንጎ"}
-        CF{"ማእከላይ ኣፍሪቃ ሪፓብሊክ"}
+        CF{"ማእከላዊ አፍሪቃ ሪፖብሊክ"}
         CG{"ኮንጎ ሪፓብሊክ"}
         CH{"ስዊዘርላንድ"}
         CI{"ኮት ዲቯር"}
         CK{"ደሴታት ኩክ"}
         CL{"ቺሊ"}
-        CM{"ካሜሩን"}
+        CM{"ካሜሮን"}
         CN{"ቻይና"}
         CO{"ኮሎምቢያ"}
         CP{"ክሊፐርቶን ደሴት"}
@@ -57,7 +81,7 @@
         CU{"ኩባ"}
         CV{"ኬፕ ቬርዴ"}
         CW{"ኩራካዎ"}
-        CX{"ደሴታት ክሪስትማስ"}
+        CX{"ደሴት ክሪስማስ"}
         CY{"ሳይፕረስ"}
         CZ{"ቼክ ሪፓብሊክ"}
         DE{"ጀርመን"}
@@ -66,7 +90,7 @@
         DK{"ዴንማርክ"}
         DM{"ዶሚኒካ"}
         DO{"ዶመኒካ ሪፓብሊክ"}
-        DZ{"አልጄሪያ"}
+        DZ{"ኣልጀሪያ"}
         EA{"ሲውታን ሜሊላን"}
         EC{"ኢኳዶር"}
         EE{"ኤስቶኒያ"}
@@ -112,10 +136,10 @@
         IL{"እስራኤል"}
         IM{"አይል ኦፍ ማን"}
         IN{"ህንዲ"}
-        IO{"ናይ ብሪጣንያ ህንዳዊ ውቅያኖስ ግዝኣት"}
+        IO{"ናይ ብሪጣኒያ ህንዲ ውቅያኖስ ግዝኣት"}
         IQ{"ኢራቅ"}
         IR{"ኢራን"}
-        IS{"አይስላንድ"}
+        IS{"ኣየርላንድ"}
         IT{"ጣሊያን"}
         JE{"ጀርሲ"}
         JM{"ጃማይካ"}
@@ -130,7 +154,7 @@
         KP{"ሰሜን ኮሪያ"}
         KR{"ደቡብ ኮሪያ"}
         KW{"ክዌት"}
-        KY{"ካይማን ደሴቶች"}
+        KY{"ደሴታት ኬይማን"}
         KZ{"ካዛኪስታን"}
         LA{"ላኦስ"}
         LB{"ሊባኖስ"}
@@ -154,7 +178,7 @@
         ML{"ማሊ"}
         MM{"ማያንማር"}
         MN{"ሞንጎሊያ"}
-        MO{"ማካው"}
+        MO{"ማካዎ"}
         MP{"ደሴታት ሰሜናዊ ማሪያና"}
         MQ{"ማርቲኒክ"}
         MR{"ሞሪቴኒያ"}
@@ -194,6 +218,7 @@
         PW{"ፓላው"}
         PY{"ፓራጓይ"}
         QA{"ቀጠር"}
+        QO{"ወጣ ያለ ኦሽኒያ"}
         RE{"ሪዩኒየን"}
         RO{"ሮሜኒያ"}
         RS{"ሰርቢያ"}
@@ -207,7 +232,7 @@
         SG{"ሲንጋፖር"}
         SH{"ሴንት ሄለና"}
         SI{"ስሎቬኒያ"}
-        SJ{"ስቫልባርድን ዣን ማየን ደሴታት"}
+        SJ{"ስቫልባርድን ጃን ማየንን"}
         SK{"ስሎቫኪያ"}
         SL{"ሴራሊዮን"}
         SM{"ሳን ማሪኖ"}
@@ -219,7 +244,7 @@
         SV{"ኤል ሳልቫዶር"}
         SX{"ሲንት ማርቲን"}
         SY{"ሲሪያ"}
-        SZ{"ሱዋዚላንድ"}
+        SZ{"ኢስዋቲኒ"}
         TA{"ትሪስን ዳ ኩንሃ"}
         TC{"ደሴታት ቱርክን ካይኮስን"}
         TD{"ጫድ"}
@@ -246,7 +271,7 @@
         VA{"ቫቲካን"}
         VC{"ቅዱስ ቪንሴንትን ግሬናዲንስን"}
         VE{"ቬንዙዌላ"}
-        VG{"ቨርጂን ደሴታት እንግሊዝ"}
+        VG{"ደሴታት ቨርጂን ብሪጣኒያ"}
         VI{"ቨርጂን ደሴታት ኣሜሪካ"}
         VN{"ቬትናም"}
         VU{"ቫኑአቱ"}
@@ -265,6 +290,6 @@
     }
     Countries%variant{
         CI{"አይቮሪ ኮስት"}
+        SZ{"ስዋዚላንድ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/tk.txt b/icu4c/source/data/region/tk.txt
index de98544..f3d8811 100644
--- a/icu4c/source/data/region/tk.txt
+++ b/icu4c/source/data/region/tk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tk{
     Countries{
         001{"Dünýä"}
@@ -179,13 +180,13 @@
         MA{"Marokko"}
         MC{"Monako"}
         MD{"Moldowa"}
-        ME{"Montenegro"}
+        ME{"Çernogoriýa"}
         MF{"Sen-Marten"}
         MG{"Madagaskar"}
         MH{"Marşall adalary"}
         MK{"Demirgazyk Makedoniýa"}
         ML{"Mali"}
-        MM{"Mýanma (Burma)"}
+        MM{"Mýanma (Birma)"}
         MN{"Mongoliýa"}
         MO{"Makao"}
         MP{"Demirgazyk Mariana adalary"}
@@ -308,5 +309,4 @@
         SZ{"Swazilend"}
         TL{"Gündogar Timor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/tl.txt b/icu4c/source/data/region/tl.txt
index 4e521f9..8c39518 100644
--- a/icu4c/source/data/region/tl.txt
+++ b/icu4c/source/data/region/tl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tl{
     "%%ALIAS"{"fil"}
 }
diff --git a/icu4c/source/data/region/tl_PH.txt b/icu4c/source/data/region/tl_PH.txt
index 07c9f90..59af394 100644
--- a/icu4c/source/data/region/tl_PH.txt
+++ b/icu4c/source/data/region/tl_PH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tl_PH{
     "%%ALIAS"{"fil_PH"}
 }
diff --git a/icu4c/source/data/region/to.txt b/icu4c/source/data/region/to.txt
index f96178d..2edb7fa 100644
--- a/icu4c/source/data/region/to.txt
+++ b/icu4c/source/data/region/to.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 to{
     Countries{
         001{"Māmani"}
@@ -306,5 +307,4 @@
         CZ{"Lepupelika Seki"}
         SZ{"Suasilani"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/tr.txt b/icu4c/source/data/region/tr.txt
index 6aa4ebf..c72ad84 100644
--- a/icu4c/source/data/region/tr.txt
+++ b/icu4c/source/data/region/tr.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tr{
     Countries{
         001{"Dünya"}
@@ -310,5 +311,4 @@
         SZ{"Svaziland"}
         TL{"Doğu Timor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/tt.txt b/icu4c/source/data/region/tt.txt
index dbff97b..65fd4f3 100644
--- a/icu4c/source/data/region/tt.txt
+++ b/icu4c/source/data/region/tt.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tt{
     Countries{
         AD{"Андорра"}
@@ -248,5 +249,4 @@
     Countries%variant{
         CD{"Конго (КДР)"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/twq.txt b/icu4c/source/data/region/twq.txt
index 754f2e6..ddfd967 100644
--- a/icu4c/source/data/region/twq.txt
+++ b/icu4c/source/data/region/twq.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 twq{
     Countries{
         AD{"Andoora"}
@@ -226,5 +227,4 @@
         ZM{"Zambi"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/tzm.txt b/icu4c/source/data/region/tzm.txt
index 081b004..b850a19 100644
--- a/icu4c/source/data/region/tzm.txt
+++ b/icu4c/source/data/region/tzm.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tzm{
     Countries{
         AD{"Anḍurra"}
@@ -226,5 +227,4 @@
         ZM{"Zambya"}
         ZW{"Zimbabwi"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ug.txt b/icu4c/source/data/region/ug.txt
index 81a167c..03cf5c0 100644
--- a/icu4c/source/data/region/ug.txt
+++ b/icu4c/source/data/region/ug.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ug{
     Countries{
         001{"دۇنيا"}
@@ -301,5 +302,4 @@
         CG{"كونگو (جۇمھۇرىيىتى)"}
         CI{"پىل چىشى قىرغىقى"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/uk.txt b/icu4c/source/data/region/uk.txt
index 13f1faa..fc656cb 100644
--- a/icu4c/source/data/region/uk.txt
+++ b/icu4c/source/data/region/uk.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uk{
     Countries{
         001{"Світ"}
@@ -13,7 +14,7 @@
         015{"Північна Африка"}
         017{"Центральна Африка"}
         018{"Південноафриканський регіон"}
-        019{"Америка"}
+        019{"Американський регіон"}
         021{"Північноамериканський регіон"}
         029{"Карибський басейн"}
         030{"Східна Азія"}
@@ -37,8 +38,8 @@
         AD{"Андорра"}
         AE{"Обʼєднані Арабські Емірати"}
         AF{"Афганістан"}
-        AG{"Антиґуа і Барбуда"}
-        AI{"Анґілья"}
+        AG{"Антигуа і Барбуда"}
+        AI{"Ангілья"}
         AL{"Албанія"}
         AM{"Вірменія"}
         AO{"Ангола"}
@@ -50,21 +51,21 @@
         AW{"Аруба"}
         AX{"Аландські Острови"}
         AZ{"Азербайджан"}
-        BA{"Боснія і Герцеґовина"}
+        BA{"Боснія і Герцеговина"}
         BB{"Барбадос"}
         BD{"Бангладеш"}
-        BE{"Бельґія"}
+        BE{"Бельгія"}
         BF{"Буркіна-Фасо"}
         BG{"Болгарія"}
         BH{"Бахрейн"}
         BI{"Бурунді"}
         BJ{"Бенін"}
-        BL{"Сен-Бартельмі"}
+        BL{"Сен-Бартелемі"}
         BM{"Бермудські Острови"}
         BN{"Бруней"}
         BO{"Болівія"}
-        BQ{"Нідерландські Карибські острови"}
-        BR{"Бразілія"}
+        BQ{"Карибські Нідерланди"}
+        BR{"Бразилія"}
         BS{"Багамські Острови"}
         BT{"Бутан"}
         BV{"Острів Буве"}
@@ -72,19 +73,19 @@
         BY{"Білорусь"}
         BZ{"Беліз"}
         CA{"Канада"}
-        CC{"Кокосові (Кілінґ) Острови"}
+        CC{"Кокосові (Кілінг) Острови"}
         CD{"Конго – Кіншаса"}
         CF{"Центральноафриканська Республіка"}
         CG{"Конго – Браззавіль"}
         CH{"Швейцарія"}
         CI{"Кот-дʼІвуар"}
         CK{"Острови Кука"}
-        CL{"Чілі"}
+        CL{"Чилі"}
         CM{"Камерун"}
         CN{"Китай"}
         CO{"Колумбія"}
         CP{"Острів Кліппертон"}
-        CR{"Коста-Ріка"}
+        CR{"Коста-Рика"}
         CU{"Куба"}
         CV{"Кабо-Верде"}
         CW{"Кюрасао"}
@@ -116,23 +117,23 @@
         FR{"Франція"}
         GA{"Габон"}
         GB{"Велика Британія"}
-        GD{"Ґренада"}
+        GD{"Гренада"}
         GE{"Грузія"}
-        GF{"Французька Ґвіана"}
-        GG{"Ґернсі"}
+        GF{"Французька Гвіана"}
+        GG{"Гернсі"}
         GH{"Гана"}
-        GI{"Ґібралтар"}
-        GL{"Ґренландія"}
+        GI{"Гібралтар"}
+        GL{"Гренландія"}
         GM{"Гамбія"}
         GN{"Гвінея"}
-        GP{"Ґваделупа"}
+        GP{"Гваделупа"}
         GQ{"Екваторіальна Гвінея"}
         GR{"Греція"}
         GS{"Південна Джорджія та Південні Сандвічеві Острови"}
-        GT{"Ґватемала"}
-        GU{"Ґуам"}
+        GT{"Гватемала"}
+        GU{"Гуам"}
         GW{"Гвінея-Бісау"}
-        GY{"Ґайана"}
+        GY{"Гаяна"}
         HK{"Гонконг"}
         HM{"Острови Герд і Макдоналд"}
         HN{"Гондурас"}
@@ -157,7 +158,7 @@
         KE{"Кенія"}
         KG{"Киргизстан"}
         KH{"Камбоджа"}
-        KI{"Кірібаті"}
+        KI{"Кірибаті"}
         KM{"Комори"}
         KN{"Сент-Кітс і Невіс"}
         KP{"Північна Корея"}
@@ -173,7 +174,7 @@
         LR{"Ліберія"}
         LS{"Лесото"}
         LT{"Литва"}
-        LU{"Люксембурґ"}
+        LU{"Люксембург"}
         LV{"Латвія"}
         LY{"Лівія"}
         MA{"Марокко"}
@@ -189,11 +190,11 @@
         MN{"Монголія"}
         MO{"Макао"}
         MP{"Північні Маріанські Острови"}
-        MQ{"Мартініка"}
+        MQ{"Мартиніка"}
         MR{"Мавританія"}
         MS{"Монтсеррат"}
         MT{"Мальта"}
-        MU{"Маврікій"}
+        MU{"Маврикій"}
         MV{"Мальдіви"}
         MW{"Малаві"}
         MX{"Мексика"}
@@ -204,9 +205,9 @@
         NE{"Нігер"}
         NF{"Острів Норфолк"}
         NG{"Нігерія"}
-        NI{"Нікараґуа"}
+        NI{"Нікарагуа"}
         NL{"Нідерланди"}
-        NO{"Норвеґія"}
+        NO{"Норвегія"}
         NP{"Непал"}
         NR{"Науру"}
         NU{"Ніуе"}
@@ -215,17 +216,17 @@
         PA{"Панама"}
         PE{"Перу"}
         PF{"Французька Полінезія"}
-        PG{"Папуа-Нова Ґвінея"}
+        PG{"Папуа-Нова Гвінея"}
         PH{"Філіппіни"}
         PK{"Пакистан"}
         PL{"Польща"}
         PM{"Сен-Пʼєр і Мікелон"}
         PN{"Острови Піткерн"}
-        PR{"Пуерто-Ріко"}
+        PR{"Пуерто-Рико"}
         PS{"Палестина"}
-        PT{"Портуґалія"}
+        PT{"Португалія"}
         PW{"Палау"}
-        PY{"Параґвай"}
+        PY{"Парагвай"}
         QA{"Катар"}
         QO{"Віддалена Океанія"}
         RE{"Реюньйон"}
@@ -244,12 +245,12 @@
         SJ{"Шпіцберген та Ян-Маєн"}
         SK{"Словаччина"}
         SL{"Сьєрра-Леоне"}
-        SM{"Сан-Маріно"}
+        SM{"Сан-Марино"}
         SN{"Сенегал"}
         SO{"Сомалі"}
-        SR{"Сурінам"}
+        SR{"Суринам"}
         SS{"Південний Судан"}
-        ST{"Сан-Томе і Прінсіпі"}
+        ST{"Сан-Томе і Принсіпі"}
         SV{"Сальвадор"}
         SX{"Сінт-Мартен"}
         SY{"Сирія"}
@@ -265,9 +266,9 @@
         TL{"Тімор-Лешті"}
         TM{"Туркменістан"}
         TN{"Туніс"}
-        TO{"Тонґа"}
+        TO{"Тонга"}
         TR{"Туреччина"}
-        TT{"Трінідад і Тобаґо"}
+        TT{"Тринідад і Тобаго"}
         TV{"Тувалу"}
         TW{"Тайвань"}
         TZ{"Танзанія"}
@@ -276,13 +277,13 @@
         UM{"Віддалені острови США"}
         UN{"Організація Об’єднаних Націй"}
         US{"Сполучені Штати"}
-        UY{"Уруґвай"}
+        UY{"Уругвай"}
         UZ{"Узбекистан"}
         VA{"Ватикан"}
-        VC{"Сент-Вінсент і Ґренадіни"}
+        VC{"Сент-Вінсент і Гренадіни"}
         VE{"Венесуела"}
         VG{"Британські Віргінські острови"}
-        VI{"Віргінські острови, США"}
+        VI{"Віргінські Острови (США)"}
         VN{"Вʼєтнам"}
         VU{"Вануату"}
         WF{"Уолліс і Футуна"}
@@ -310,5 +311,4 @@
         SZ{"Свазіленд"}
         TL{"Східний Тимор"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ur.txt b/icu4c/source/data/region/ur.txt
index fa73883..6a57f9e 100644
--- a/icu4c/source/data/region/ur.txt
+++ b/icu4c/source/data/region/ur.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ur{
     Countries{
         001{"دنیا"}
@@ -12,7 +13,7 @@
         014{"مشرقی افریقہ"}
         015{"شمالی افریقہ"}
         017{"وسطی افریقہ"}
-        018{"جنوبی افریقہ کے علاقہ"}
+        018{"جنوبی افریقہ کا علاقہ"}
         019{"امیریکاز"}
         021{"شمالی امریکہ کا علاقہ"}
         029{"کریبیائی"}
@@ -288,7 +289,7 @@
         WF{"ویلیز اور فیوٹیونا"}
         WS{"ساموآ"}
         XA{"بناوٹی لہجے"}
-        XB{"مصنوعی بیڑی"}
+        XB{"بناوٹی دو سمتی"}
         XK{"کوسووو"}
         YE{"یمن"}
         YT{"مایوٹ"}
@@ -309,5 +310,4 @@
         SZ{"سوازی لینڈ"}
         TL{"مشرقی تیمور"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/ur_IN.txt b/icu4c/source/data/region/ur_IN.txt
index 2759f8a..00b60cb 100644
--- a/icu4c/source/data/region/ur_IN.txt
+++ b/icu4c/source/data/region/ur_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ur_IN{
     Countries{
         AC{"جزیرہ اسینشن"}
@@ -26,5 +27,4 @@
         VG{"برطانوی جزائر ورجن"}
         VI{"امریکی جزائر ورجن"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/uz.txt b/icu4c/source/data/region/uz.txt
index 8ad3f6b..9871af0 100644
--- a/icu4c/source/data/region/uz.txt
+++ b/icu4c/source/data/region/uz.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz{
     Countries{
         001{"Dunyo"}
@@ -309,5 +310,4 @@
         CZ{"Chexiya Respublikasi"}
         TL{"Sharqiy Timor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/uz_AF.txt b/icu4c/source/data/region/uz_AF.txt
index 24ca294..0e8d20c 100644
--- a/icu4c/source/data/region/uz_AF.txt
+++ b/icu4c/source/data/region/uz_AF.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_AF{
     "%%ALIAS"{"uz_Arab_AF"}
 }
diff --git a/icu4c/source/data/region/uz_Arab.txt b/icu4c/source/data/region/uz_Arab.txt
index 3c1c9c5..4e54552 100644
--- a/icu4c/source/data/region/uz_Arab.txt
+++ b/icu4c/source/data/region/uz_Arab.txt
@@ -1,9 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Arab{
     %%Parent{"root"}
     Countries{
         AF{"افغانستان"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/uz_Arab_AF.txt b/icu4c/source/data/region/uz_Arab_AF.txt
index e45d708..e2978bb 100644
--- a/icu4c/source/data/region/uz_Arab_AF.txt
+++ b/icu4c/source/data/region/uz_Arab_AF.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/uz_Cyrl.txt b/icu4c/source/data/region/uz_Cyrl.txt
index ff2f961..be511a2 100644
--- a/icu4c/source/data/region/uz_Cyrl.txt
+++ b/icu4c/source/data/region/uz_Cyrl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Cyrl{
     %%Parent{"root"}
     Countries{
@@ -303,5 +304,4 @@
         CZ{"Чехия Республикаси"}
         TL{"Шарқий Тимор"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/uz_Latn.txt b/icu4c/source/data/region/uz_Latn.txt
index f6035b7..1ae52da 100644
--- a/icu4c/source/data/region/uz_Latn.txt
+++ b/icu4c/source/data/region/uz_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/uz_Latn_UZ.txt b/icu4c/source/data/region/uz_Latn_UZ.txt
index 2d34eff..356e549 100644
--- a/icu4c/source/data/region/uz_Latn_UZ.txt
+++ b/icu4c/source/data/region/uz_Latn_UZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/uz_UZ.txt b/icu4c/source/data/region/uz_UZ.txt
index ffac532..3a6a14d 100644
--- a/icu4c/source/data/region/uz_UZ.txt
+++ b/icu4c/source/data/region/uz_UZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_UZ{
     "%%ALIAS"{"uz_Latn_UZ"}
 }
diff --git a/icu4c/source/data/region/vai.txt b/icu4c/source/data/region/vai.txt
index 9c2d1b3..44f6898 100644
--- a/icu4c/source/data/region/vai.txt
+++ b/icu4c/source/data/region/vai.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai{
     Countries{
         AC{"ꗻꗡ ꕒꕡꕌ ꗏ ꔳꘋꗣ"}
@@ -256,5 +257,4 @@
         ZM{"ꕤꔭꕩ"}
         ZW{"ꔽꕓꖜꔃ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/vai_LR.txt b/icu4c/source/data/region/vai_LR.txt
index 27d4238..f682350 100644
--- a/icu4c/source/data/region/vai_LR.txt
+++ b/icu4c/source/data/region/vai_LR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_LR{
     "%%ALIAS"{"vai_Vaii_LR"}
 }
diff --git a/icu4c/source/data/region/vai_Latn.txt b/icu4c/source/data/region/vai_Latn.txt
index a649e8e..6478de5 100644
--- a/icu4c/source/data/region/vai_Latn.txt
+++ b/icu4c/source/data/region/vai_Latn.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_Latn{
     %%Parent{"root"}
     Countries{
@@ -226,5 +227,4 @@
         ZM{"Zambiya"}
         ZW{"Zimbabhuwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/vai_Vaii.txt b/icu4c/source/data/region/vai_Vaii.txt
index cffa591..6dc5e99 100644
--- a/icu4c/source/data/region/vai_Vaii.txt
+++ b/icu4c/source/data/region/vai_Vaii.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_Vaii{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/vai_Vaii_LR.txt b/icu4c/source/data/region/vai_Vaii_LR.txt
index a17bc11..d2845ca 100644
--- a/icu4c/source/data/region/vai_Vaii_LR.txt
+++ b/icu4c/source/data/region/vai_Vaii_LR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/vi.txt b/icu4c/source/data/region/vi.txt
index 89b33ea..380053b 100644
--- a/icu4c/source/data/region/vi.txt
+++ b/icu4c/source/data/region/vi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vi{
     Countries{
         001{"Thế giới"}
@@ -253,7 +254,7 @@
         SV{"El Salvador"}
         SX{"Sint Maarten"}
         SY{"Syria"}
-        SZ{"Swaziland"}
+        SZ{"Eswatini"}
         TA{"Tristan da Cunha"}
         TC{"Quần đảo Turks và Caicos"}
         TD{"Chad"}
@@ -282,7 +283,7 @@
         VC{"St. Vincent và Grenadines"}
         VE{"Venezuela"}
         VG{"Quần đảo Virgin thuộc Anh"}
-        VI{"Quần đảo Virgin thuộc Mỹ"}
+        VI{"Quần đảo Virgin thuộc Hoa Kỳ"}
         VN{"Việt Nam"}
         VU{"Vanuatu"}
         WF{"Wallis và Futuna"}
@@ -302,8 +303,7 @@
         CG{"Cộng hòa Congo"}
         CI{"Bờ Biển Ngà"}
         CZ{"Cộng hòa Séc"}
-        SZ{"Eswatini"}
+        SZ{"Swaziland"}
         TL{"Đông Timor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/vun.txt b/icu4c/source/data/region/vun.txt
index 5a0a8e5..eef3c2f 100644
--- a/icu4c/source/data/region/vun.txt
+++ b/icu4c/source/data/region/vun.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vun{
     Countries{
         AD{"Andora"}
@@ -226,5 +227,4 @@
         ZM{"Zambia"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/wae.txt b/icu4c/source/data/region/wae.txt
index a139bd7..864e9f8 100644
--- a/icu4c/source/data/region/wae.txt
+++ b/icu4c/source/data/region/wae.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 wae{
     Countries{
         001{"Wäld"}
@@ -292,5 +293,4 @@
         CI{"Côte d’Ivoire"}
         TL{"Wešttimor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/wo.txt b/icu4c/source/data/region/wo.txt
index 0a4efce..308e845 100644
--- a/icu4c/source/data/region/wo.txt
+++ b/icu4c/source/data/region/wo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 wo{
     Countries{
         AD{"Andoor"}
@@ -250,5 +251,4 @@
         CD{"Kongo (R K D)"}
         CG{"Réewum Kongo"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/xh.txt b/icu4c/source/data/region/xh.txt
index 08f6eaf..4fc3d4f 100644
--- a/icu4c/source/data/region/xh.txt
+++ b/icu4c/source/data/region/xh.txt
@@ -1,9 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 xh{
     Countries{
         MK{"uMntla Macedonia"}
         ZA{"eMzantsi Afrika"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/xog.txt b/icu4c/source/data/region/xog.txt
index f3cf0b8..e86da40 100644
--- a/icu4c/source/data/region/xog.txt
+++ b/icu4c/source/data/region/xog.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 xog{
     Countries{
         AD{"Andora"}
@@ -225,5 +226,4 @@
         ZM{"Zambya"}
         ZW{"Zimbabwe"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/yav.txt b/icu4c/source/data/region/yav.txt
index 7dd6dae..a46d353 100644
--- a/icu4c/source/data/region/yav.txt
+++ b/icu4c/source/data/region/yav.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yav{
     Countries{
         AD{"Aŋtúla"}
@@ -225,5 +226,4 @@
         ZM{"saambíi"}
         ZW{"simbapuwé"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/yi.txt b/icu4c/source/data/region/yi.txt
index 7f7dbfa..635ad3a 100644
--- a/icu4c/source/data/region/yi.txt
+++ b/icu4c/source/data/region/yi.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yi{
     Countries{
         001{"וועלט"}
@@ -230,5 +231,4 @@
     Countries%variant{
         TL{"מזרח טימאר"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/yo.txt b/icu4c/source/data/region/yo.txt
index a1b0a48..ce9c7c3 100644
--- a/icu4c/source/data/region/yo.txt
+++ b/icu4c/source/data/region/yo.txt
@@ -1,16 +1,17 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yo{
     Countries{
         001{"Agbáyé"}
         002{"Áfíríkà"}
         003{"Àríwá Amẹ́ríkà"}
         005{"Gúúṣù Amẹ́ríkà"}
-        009{"Oceania"}
+        009{"Òsọ́ọ́níà"}
         011{"Ìwọ̀ oorùn Afíríkà"}
         013{"Ààrin Gbùgbùn Àmẹ́ríkà"}
         014{"Ìlà Oorùn Áfíríkà"}
-        015{"Northern Africa"}
+        015{"Àríwá Afíríkà"}
         017{"Ààrín gbùngbùn Afíríkà"}
         018{"Apágúúsù Áfíríkà"}
         019{"Amẹ́ríkà"}
@@ -24,282 +25,283 @@
         054{"Mẹlanéṣíà"}
         057{"Agbègbè Maikironéṣíà"}
         061{"Polineṣíà"}
-        142{"Asia"}
+        142{"Áṣíà"}
         143{"Ààrin Gbùngbùn Éṣíà"}
         145{"Ìwọ̀ Òòrùn Eṣíà"}
-        150{"Europe"}
+        150{"Yúróòpù"}
         151{"Ìlà Òrùn Yúrópù"}
-        154{"Northern Europe"}
+        154{"Àríwá Yúróòpù"}
         155{"Ìwọ̀ Òòrùn Yúrópù"}
-        202{"Sàhárà Áfíríkà"}
+        202{"Apá Sàhárà Áfíríkà"}
         419{"Látín Amẹ́ríkà"}
         AC{"Erékùsù Ascension"}
-        AD{"Orílẹ́ède Ààndórà"}
-        AE{"Orílẹ́ède Ẹmirate ti Awọn Arabu"}
-        AF{"Orílẹ́ède Àfùgànístánì"}
-        AG{"Orílẹ́ède Ààntígúà àti Báríbúdà"}
-        AI{"Orílẹ́ède Ààngúlílà"}
-        AL{"Orílẹ́ède Àlùbàníánì"}
-        AM{"Orílẹ́ède Améníà"}
-        AO{"Orílẹ́ède Ààngólà"}
+        AD{"Ààndórà"}
+        AE{"Ẹmirate ti Awọn Arabu"}
+        AF{"Àfùgànístánì"}
+        AG{"Ààntígúà àti Báríbúdà"}
+        AI{"Ààngúlílà"}
+        AL{"Àlùbàníánì"}
+        AM{"Améníà"}
+        AO{"Ààngólà"}
         AQ{"Antakítíkà"}
-        AR{"Orílẹ́ède Agentínà"}
+        AR{"Agentínà"}
         AS{"Sámóánì ti Orílẹ́ède Àméríkà"}
-        AT{"Orílẹ́ède Asítíríà"}
-        AU{"Orílẹ́ède Ástràlìá"}
-        AW{"Orílẹ́ède Árúbà"}
+        AT{"Asítíríà"}
+        AU{"Ástràlìá"}
+        AW{"Árúbà"}
         AX{"Àwọn Erékùsù ti Åland"}
-        AZ{"Orílẹ́ède Asẹ́bájánì"}
-        BA{"Orílẹ́ède Bọ̀síníà àti Ẹtisẹgófínà"}
-        BB{"Orílẹ́ède Bábádósì"}
-        BD{"Orílẹ́ède Bángáládésì"}
-        BE{"Orílẹ́ède Bégíọ́mù"}
-        BF{"Orílẹ́ède Bùùkíná Fasò"}
-        BG{"Orílẹ́ède Bùùgáríà"}
-        BH{"Orílẹ́ède Báránì"}
-        BI{"Orílẹ́ède Bùùrúndì"}
-        BJ{"Orílẹ́ède Bẹ̀nẹ̀"}
+        AZ{"Asẹ́bájánì"}
+        BA{"Bọ̀síníà àti Ẹtisẹgófínà"}
+        BB{"Bábádósì"}
+        BD{"Bángáládésì"}
+        BE{"Bégíọ́mù"}
+        BF{"Bùùkíná Fasò"}
+        BG{"Bùùgáríà"}
+        BH{"Báránì"}
+        BI{"Bùùrúndì"}
+        BJ{"Bẹ̀nẹ̀"}
         BL{"St. Barthélemy"}
-        BM{"Orílẹ́ède Bémúdà"}
-        BN{"Orílẹ́ède Búrúnẹ́lì"}
-        BO{"Orílẹ́ède Bọ̀lífíyà"}
+        BM{"Bémúdà"}
+        BN{"Búrúnẹ́lì"}
+        BO{"Bọ̀lífíyà"}
         BQ{"Caribbean Netherlands"}
-        BR{"Orilẹ̀-èdè Bàràsílì"}
-        BS{"Orílẹ́ède Bàhámásì"}
-        BT{"Orílẹ́ède Bútánì"}
+        BR{"Bàràsílì"}
+        BS{"Bàhámásì"}
+        BT{"Bútánì"}
         BV{"Erékùsù Bouvet"}
-        BW{"Orílẹ́ède Bọ̀tìsúwánà"}
-        BY{"Orílẹ́ède Bélárúsì"}
-        BZ{"Orílẹ́ède Bèlísẹ̀"}
-        CA{"Orílẹ́ède Kánádà"}
+        BW{"Bọ̀tìsúwánà"}
+        BY{"Bélárúsì"}
+        BZ{"Bèlísẹ̀"}
+        CA{"Kánádà"}
         CC{"Erékùsù Cocos (Keeling)"}
-        CD{"Orilẹ́ède Kóngò"}
-        CF{"Orílẹ́ède Àrin gùngun Áfíríkà"}
-        CG{"Orílẹ́ède Kóngò"}
-        CH{"Orílẹ́ède switiṣilandi"}
-        CI{"Orílẹ́ède Kóútè forà"}
-        CK{"Orílẹ́ède Etíokun Kùúkù"}
-        CL{"Orílẹ́ède ṣílè"}
-        CM{"Orílẹ́ède Kamerúúnì"}
-        CN{"Orilẹ̀-èdè Ṣáínà"}
-        CO{"Orílẹ́ède Kòlómíbìa"}
+        CD{"Kóńgò – Kinshasa"}
+        CF{"Àrin gùngun Áfíríkà"}
+        CG{"Kóńgò – Brazaville"}
+        CH{"switiṣilandi"}
+        CI{"Kóútè forà"}
+        CK{"Etíokun Kùúkù"}
+        CL{"Ṣílè"}
+        CM{"Kamerúúnì"}
+        CN{"Ṣáínà"}
+        CO{"Kòlómíbìa"}
         CP{"Erékùsù Clipperston"}
-        CR{"Orílẹ́ède Kuusita Ríkà"}
-        CU{"Orílẹ́ède Kúbà"}
-        CV{"Orílẹ́ède Etíokun Kápé féndè"}
+        CR{"Kuusita Ríkà"}
+        CU{"Kúbà"}
+        CV{"Etíokun Kápé féndè"}
         CW{"Curaçao"}
         CX{"Erékùsù Christmas"}
-        CY{"Orílẹ́ède Kúrúsì"}
-        CZ{"Orílẹ́ède ṣẹ́ẹ́kì"}
-        DE{"Orílẹèdè Jámánì"}
+        CY{"Kúrúsì"}
+        CZ{"Ṣẹ́ẹ́kì"}
+        DE{"Jámánì"}
         DG{"Diego Gaṣia"}
-        DJ{"Orílẹ́ède Díbọ́ótì"}
-        DK{"Orílẹ́ède Dẹ́mákì"}
-        DM{"Orílẹ́ède Dòmíníkà"}
-        DO{"Orilẹ́ède Dòmíníkánì"}
-        DZ{"Orílẹ́ède Àlùgèríánì"}
+        DJ{"Díbọ́ótì"}
+        DK{"Dẹ́mákì"}
+        DM{"Dòmíníkà"}
+        DO{"Dòmíníkánì"}
+        DZ{"Àlùgèríánì"}
         EA{"Seuta àti Melilla"}
-        EC{"Orílẹ́ède Ekuádò"}
-        EE{"Orílẹ́ède Esitonia"}
-        EG{"Orílẹ́ède Égípítì"}
+        EC{"Ekuádò"}
+        EE{"Esitonia"}
+        EG{"Égípítì"}
         EH{"Ìwọ̀òòrùn Sàhárà"}
-        ER{"Orílẹ́ède Eritira"}
-        ES{"Orílẹ́ède Sipani"}
-        ET{"Orílẹ́ède Etopia"}
-        EU{"Ìṣọ̀kan Yúròpù"}
-        EZ{"Agbègbè Euro"}
-        FI{"Orílẹ́ède Filandi"}
-        FJ{"Orílẹ́ède Fiji"}
-        FK{"Orílẹ́ède Etikun Fakalandi"}
-        FM{"Orílẹ́ède Makoronesia"}
+        ER{"Eritira"}
+        ES{"Sipani"}
+        ET{"Etopia"}
+        EU{"Àpapọ̀ Yúróòpù"}
+        EZ{"Agbègbè Yúrò"}
+        FI{"Filandi"}
+        FJ{"Fiji"}
+        FK{"Etikun Fakalandi"}
+        FM{"Makoronesia"}
         FO{"Àwọn Erékùsù ti Faroe"}
-        FR{"Orílẹ́ède Faranse"}
-        GA{"Orílẹ́ède Gabon"}
-        GB{"Orílẹ́èdè Gẹ̀ẹ́sì"}
-        GD{"Orílẹ́ède Genada"}
-        GE{"Orílẹ́ède Gọgia"}
-        GF{"Orílẹ́ède Firenṣi Guana"}
+        FR{"Faranse"}
+        GA{"Gabon"}
+        GB{"Gẹ̀ẹ́sì"}
+        GD{"Genada"}
+        GE{"Gọgia"}
+        GF{"Firenṣi Guana"}
         GG{"Guernsey"}
-        GH{"Orílẹ́ède Gana"}
-        GI{"Orílẹ́ède Gibaratara"}
-        GL{"Orílẹ́ède Gerelandi"}
-        GM{"Orílẹ́ède Gambia"}
-        GN{"Orílẹ́ède Gene"}
-        GP{"Orílẹ́ède Gadelope"}
-        GQ{"Orílẹ́ède Ekutoria Gini"}
-        GR{"Orílẹ́ède Geriisi"}
+        GH{"Gana"}
+        GI{"Gibaratara"}
+        GL{"Gerelandi"}
+        GM{"Gambia"}
+        GN{"Gene"}
+        GP{"Gadelope"}
+        GQ{"Ekutoria Gini"}
+        GR{"Geriisi"}
         GS{"Gúúsù Georgia àti Gúúsù Àwọn Erékùsù Sandwich"}
-        GT{"Orílẹ́ède Guatemala"}
-        GU{"Orílẹ́ède Guamu"}
-        GW{"Orílẹ́ède Gene-Busau"}
-        GY{"Orílẹ́ède Guyana"}
-        HK{"Hong Kong SAR ti Ṣáìnà"}
+        GT{"Guatemala"}
+        GU{"Guamu"}
+        GW{"Gene-Busau"}
+        GY{"Guyana"}
+        HK{"Hong Kong"}
         HM{"Erékùsù Heard àti Erékùsù McDonald"}
-        HN{"Orílẹ́ède Hondurasi"}
-        HR{"Orílẹ́ède Kòróátíà"}
-        HT{"Orílẹ́ède Haati"}
-        HU{"Orílẹ́ède Hungari"}
+        HN{"Hondurasi"}
+        HR{"Kòróátíà"}
+        HT{"Haati"}
+        HU{"Hungari"}
         IC{"Ẹrékùsù Kánárì"}
-        ID{"Orílẹ́ède Indonesia"}
-        IE{"Orílẹ́ède Ailandi"}
-        IL{"Orílẹ́ède Iserẹli"}
+        ID{"Indonesia"}
+        IE{"Ailandi"}
+        IL{"Iserẹli"}
         IM{"Isle of Man"}
-        IN{"Orílẹ́ède India"}
-        IO{"Orílẹ́ède Etíkun Índíánì ti Ìlú Bírítísì"}
-        IQ{"Orílẹ́ède Iraki"}
-        IR{"Orílẹ́ède Irani"}
-        IS{"Orílẹ́ède Aṣilandi"}
-        IT{"Orílẹ́ède Itáli"}
+        IN{"India"}
+        IO{"Etíkun Índíánì ti Ìlú Bírítísì"}
+        IQ{"Iraki"}
+        IR{"Irani"}
+        IS{"Aṣilandi"}
+        IT{"Itáli"}
         JE{"Jersey"}
-        JM{"Orílẹ́ède Jamaika"}
-        JO{"Orílẹ́ède Jọdani"}
-        JP{"Orílẹ́ède Japani"}
-        KE{"Orílẹ́ède Kenya"}
-        KG{"Orílẹ́ède Kuriṣisitani"}
-        KH{"Orílẹ́ède Kàmùbódíà"}
-        KI{"Orílẹ́ède Kiribati"}
-        KM{"Orílẹ́ède Kòmòrósì"}
-        KN{"Orílẹ́ède Kiiti ati Neefi"}
-        KP{"Orílẹ́ède Guusu Kọria"}
-        KR{"Orílẹ́ède Ariwa Kọria"}
-        KW{"Orílẹ́ède Kuweti"}
-        KY{"Orílẹ́ède Etíokun Kámánì"}
-        KZ{"Orílẹ́ède Kaṣaṣatani"}
-        LA{"Orílẹ́ède Laosi"}
-        LB{"Orílẹ́ède Lebanoni"}
-        LC{"Orílẹ́ède Luṣia"}
-        LI{"Orílẹ́ède Lẹṣitẹnisiteni"}
-        LK{"Orílẹ́ède Siri Lanka"}
-        LR{"Orílẹ́ède Laberia"}
-        LS{"Orílẹ́ède Lesoto"}
-        LT{"Orílẹ́ède Lituania"}
-        LU{"Orílẹ́ède Lusemogi"}
-        LV{"Orílẹ́ède Latifia"}
-        LY{"Orílẹ́ède Libiya"}
-        MA{"Orílẹ́ède Moroko"}
-        MC{"Orílẹ́ède Monako"}
-        MD{"Orílẹ́ède Modofia"}
+        JM{"Jamaika"}
+        JO{"Jọdani"}
+        JP{"Japani"}
+        KE{"Kenya"}
+        KG{"Kuriṣisitani"}
+        KH{"Kàmùbódíà"}
+        KI{"Kiribati"}
+        KM{"Kòmòrósì"}
+        KN{"Kiiti ati Neefi"}
+        KP{"Guusu Kọria"}
+        KR{"Ariwa Kọria"}
+        KW{"Kuweti"}
+        KY{"Etíokun Kámánì"}
+        KZ{"Kaṣaṣatani"}
+        LA{"Laosi"}
+        LB{"Lebanoni"}
+        LC{"Luṣia"}
+        LI{"Lẹṣitẹnisiteni"}
+        LK{"Siri Lanka"}
+        LR{"Laberia"}
+        LS{"Lesoto"}
+        LT{"Lituania"}
+        LU{"Lusemogi"}
+        LV{"Latifia"}
+        LY{"Libiya"}
+        MA{"Moroko"}
+        MC{"Monako"}
+        MD{"Modofia"}
         ME{"Montenegro"}
         MF{"St. Martin"}
-        MG{"Orílẹ́ède Madasika"}
-        MH{"Orílẹ́ède Etikun Máṣali"}
+        MG{"Madasika"}
+        MH{"Etikun Máṣali"}
         MK{"Àríwá Macedonia"}
-        ML{"Orílẹ́ède Mali"}
-        MM{"Orílẹ́ède Manamari"}
-        MN{"Orílẹ́ède Mogolia"}
+        ML{"Mali"}
+        MM{"Manamari"}
+        MN{"Mogolia"}
         MO{"Màkáò"}
-        MP{"Orílẹ́ède Etikun Guusu Mariana"}
-        MQ{"Orílẹ́ède Matinikuwi"}
-        MR{"Orílẹ́ède Maritania"}
-        MS{"Orílẹ́ède Motserati"}
-        MT{"Orílẹ́ède Malata"}
-        MU{"Orílẹ́ède Maritiusi"}
-        MV{"Orílẹ́ède Maladifi"}
-        MW{"Orílẹ́ède Malawi"}
-        MX{"Orílẹ́ède Mesiko"}
-        MY{"Orílẹ́ède Malasia"}
-        MZ{"Orílẹ́ède Moṣamibiku"}
-        NA{"Orílẹ́ède Namibia"}
-        NC{"Orílẹ́ède Kaledonia Titun"}
-        NE{"Orílẹ́ède Nàìjá"}
-        NF{"Orílẹ́ède Etikun Nọ́úfókì"}
-        NG{"Orilẹ̀-èdè Nàìjíríà"}
-        NI{"Orílẹ́ède NIkaragua"}
-        NL{"Orílẹ́ède Nedalandi"}
-        NO{"Orílẹ́ède Nọọwii"}
-        NP{"Orílẹ́ède Nepa"}
-        NR{"Orílẹ́ède Nauru"}
-        NU{"Orílẹ́ède Niue"}
-        NZ{"Orílẹ́ède ṣilandi Titun"}
-        OM{"Orílẹ́ède Ọọma"}
-        PA{"Orílẹ́ède Panama"}
-        PE{"Orílẹ́ède Peru"}
-        PF{"Orílẹ́ède Firenṣi Polinesia"}
-        PG{"Orílẹ́ède Paapu ti Giini"}
-        PH{"Orílẹ́ède filipini"}
-        PK{"Orílẹ́ède Pakisitan"}
-        PL{"Orílẹ́ède Polandi"}
-        PM{"Orílẹ́ède Pẹẹri ati mikuloni"}
-        PN{"Orílẹ́ède Pikarini"}
-        PR{"Orílẹ́ède Pọto Riko"}
-        PS{"Palẹsitín"}
-        PT{"Orílẹ́ède Pọ́túgà"}
-        PW{"Orílẹ́ède Paalu"}
-        PY{"Orílẹ́ède Paraguye"}
-        QA{"Orílẹ́ède Kota"}
-        QO{"Agbègbè Oceania"}
-        RE{"Orílẹ́ède Riuniyan"}
-        RO{"Orílẹ́ède Romaniya"}
+        MP{"Etikun Guusu Mariana"}
+        MQ{"Matinikuwi"}
+        MR{"Maritania"}
+        MS{"Motserati"}
+        MT{"Malata"}
+        MU{"Maritiusi"}
+        MV{"Maladifi"}
+        MW{"Malawi"}
+        MX{"Mesiko"}
+        MY{"Malasia"}
+        MZ{"Moṣamibiku"}
+        NA{"Namibia"}
+        NC{"Kaledonia Titun"}
+        NE{"Nàìjá"}
+        NF{"Etikun Nọ́úfókì"}
+        NG{"Nàìjíríà"}
+        NI{"Nikaragua"}
+        NL{"Nedalandi"}
+        NO{"Nọọwii"}
+        NP{"Nepa"}
+        NR{"Nauru"}
+        NU{"Niue"}
+        NZ{"Ṣilandi Titun"}
+        OM{"Ọọma"}
+        PA{"Panama"}
+        PE{"Peru"}
+        PF{"Firenṣi Polinesia"}
+        PG{"Paapu ti Giini"}
+        PH{"Filipini"}
+        PK{"Pakisitan"}
+        PL{"Polandi"}
+        PM{"Pẹẹri ati mikuloni"}
+        PN{"Pikarini"}
+        PR{"Pọto Riko"}
+        PS{"Palẹsítínì"}
+        PT{"Pọ́túgà"}
+        PW{"Paalu"}
+        PY{"Paraguye"}
+        QA{"Kota"}
+        QO{"Agbègbè Òṣọ́ọ́níà"}
+        RE{"Riuniyan"}
+        RO{"Romaniya"}
         RS{"Serbia"}
-        RU{"Orílẹ́ède Rọṣia"}
-        RW{"Orílẹ́ède Ruwanda"}
-        SA{"Orílẹ́ède Saudi Arabia"}
-        SB{"Orílẹ́ède Etikun Solomoni"}
-        SC{"Orílẹ́ède seṣẹlẹsi"}
-        SD{"Orílẹ́ède Sudani"}
-        SE{"Orílẹ́ède Swidini"}
-        SG{"Orílẹ́ède Singapo"}
-        SH{"Orílẹ́ède Hẹlena"}
-        SI{"Orílẹ́ède Silofania"}
+        RU{"Rọṣia"}
+        RW{"Ruwanda"}
+        SA{"Saudi Arabia"}
+        SB{"Etikun Solomoni"}
+        SC{"Ṣeṣẹlẹsi"}
+        SD{"Sudani"}
+        SE{"Swidini"}
+        SG{"Singapo"}
+        SH{"Hẹlena"}
+        SI{"Silofania"}
         SJ{"Svalbard & Jan Mayen"}
-        SK{"Orílẹ́ède Silofakia"}
-        SL{"Orílẹ́ède Siria looni"}
-        SM{"Orílẹ́ède Sani Marino"}
-        SN{"Orílẹ́ède Sẹnẹga"}
-        SO{"Orílẹ́ède Somalia"}
-        SR{"Orílẹ́ède Surinami"}
+        SK{"Silofakia"}
+        SL{"Siria looni"}
+        SM{"Sani Marino"}
+        SN{"Sẹnẹga"}
+        SO{"Somalia"}
+        SR{"Surinami"}
         SS{"Gúúsù Sudan"}
-        ST{"Orílẹ́ède Sao tomi ati piriiṣipi"}
-        SV{"Orílẹ́ède Ẹẹsáfádò"}
+        ST{"Sao tomi ati piriiṣipi"}
+        SV{"Ẹẹsáfádò"}
         SX{"Sint Maarten"}
-        SY{"Orílẹ́ède Siria"}
-        SZ{"Orílẹ́ède Saṣiland"}
+        SY{"Siria"}
+        SZ{"Saṣiland"}
         TA{"Tristan da Kunha"}
-        TC{"Orílẹ́ède Tọọki ati Etikun Kakọsi"}
-        TD{"Orílẹ́ède ṣààdì"}
+        TC{"Tọọki ati Etikun Kakọsi"}
+        TD{"Ṣààdì"}
         TF{"Agbègbè Gúúsù Faranṣé"}
-        TG{"Orílẹ́ède Togo"}
-        TH{"Orílẹ́ède Tailandi"}
-        TJ{"Orílẹ́ède Takisitani"}
-        TK{"Orílẹ́ède Tokelau"}
-        TL{"Orílẹ́ède ÌlàOòrùn Tímọ̀"}
-        TM{"Orílẹ́ède Tọọkimenisita"}
-        TN{"Orílẹ́ède Tuniṣia"}
-        TO{"Orílẹ́ède Tonga"}
-        TR{"Orílẹ́ède Tọọki"}
-        TT{"Orílẹ́ède Tirinida ati Tobaga"}
-        TV{"Orílẹ́ède Tufalu"}
-        TW{"Orílẹ́ède Taiwani"}
-        TZ{"Orílẹ́ède Tàǹsáníà"}
-        UA{"Orílẹ́ède Ukarini"}
-        UG{"Orílẹ́ède Uganda"}
+        TG{"Togo"}
+        TH{"Tailandi"}
+        TJ{"Takisitani"}
+        TK{"Tokelau"}
+        TL{"ÌlàOòrùn Tímọ̀"}
+        TM{"Tọọkimenisita"}
+        TN{"Tuniṣia"}
+        TO{"Tonga"}
+        TR{"Tọọki"}
+        TT{"Tirinida ati Tobaga"}
+        TV{"Tufalu"}
+        TW{"Taiwani"}
+        TZ{"Tàǹsáníà"}
+        UA{"Ukarini"}
+        UG{"Uganda"}
         UM{"Àwọn Erékùsù Kékèké Agbègbè US"}
         UN{"Ìṣọ̀kan àgbáyé"}
-        US{"Orílẹ̀-èdè Amẹrikà"}
-        UY{"Orílẹ́ède Nruguayi"}
-        UZ{"Orílẹ́ède Nṣibẹkisitani"}
+        US{"Amẹrikà"}
+        UY{"Nruguayi"}
+        UZ{"Nṣibẹkisitani"}
         VA{"Ìlú Vatican"}
-        VC{"Orílẹ́ède Fisẹnnti ati Genadina"}
-        VE{"Orílẹ́ède Fẹnẹṣuẹla"}
-        VG{"Orílẹ́ède Etíkun Fágínì ti ìlú Bírítísì"}
-        VI{"Orílẹ́ède Etikun Fagini ti Amẹrika"}
-        VN{"Orílẹ́ède Fẹtinami"}
-        VU{"Orílẹ́ède Faniatu"}
-        WF{"Orílẹ́ède Wali ati futuna"}
-        WS{"Orílẹ́ède Samọ"}
-        XA{"Pseudo-Accents"}
-        XB{"Pseudo-Bidi"}
+        VC{"Fisẹnnti ati Genadina"}
+        VE{"Fẹnẹṣuẹla"}
+        VG{"Etíkun Fágínì ti ìlú Bírítísì"}
+        VI{"Etikun Fagini ti Amẹrika"}
+        VN{"Fẹtinami"}
+        VU{"Faniatu"}
+        WF{"Wali ati futuna"}
+        WS{"Samọ"}
+        XA{"ìsọ̀rọ̀sí irọ́"}
+        XB{"ibi irọ́"}
         XK{"Kòsófò"}
-        YE{"Orílẹ́ède yemeni"}
-        YT{"Orílẹ́ède Mayote"}
+        YE{"Yemeni"}
+        YT{"Mayote"}
         ZA{"Gúúṣù Áfíríkà"}
-        ZM{"Orílẹ́ède ṣamibia"}
-        ZW{"Orílẹ́ède ṣimibabe"}
+        ZM{"Ṣamibia"}
+        ZW{"Ṣimibabe"}
         ZZ{"Àgbègbè àìmọ̀"}
     }
     Countries%variant{
+        CD{"Kóńgò (Tiwantiwa)"}
+        CG{"Kóńgò (Olómìnira)"}
         SZ{"Síwásìlandì"}
         TL{"Ìlà Òòrùn Tímọ̀"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/yo_BJ.txt b/icu4c/source/data/region/yo_BJ.txt
index 1e6f469..9dffb03 100644
--- a/icu4c/source/data/region/yo_BJ.txt
+++ b/icu4c/source/data/region/yo_BJ.txt
@@ -1,9 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yo_BJ{
     Countries{
         003{"Àríwá Amɛ́ríkà"}
         005{"Gúúshù Amɛ́ríkà"}
+        009{"Òsɔ́ɔ́níà"}
         011{"Ìwɔ̀ oorùn Afíríkà"}
         013{"Ààrin Gbùgbùn Àmɛ́ríkà"}
         019{"Amɛ́ríkà"}
@@ -16,248 +18,92 @@
         054{"Mɛlanéshíà"}
         057{"Agbègbè Maikironéshíà"}
         061{"Polineshíà"}
+        142{"Áshíà"}
         143{"Ààrin Gbùngbùn Éshíà"}
         145{"Ìwɔ̀ Òòrùn Eshíà"}
         155{"Ìwɔ̀ Òòrùn Yúrópù"}
         419{"Látín Amɛ́ríkà"}
-        AD{"Orílɛ́ède Ààndórà"}
-        AE{"Orílɛ́ède Ɛmirate ti Awɔn Arabu"}
-        AF{"Orílɛ́ède Àfùgànístánì"}
-        AG{"Orílɛ́ède Ààntígúà àti Báríbúdà"}
-        AI{"Orílɛ́ède Ààngúlílà"}
-        AL{"Orílɛ́ède Àlùbàníánì"}
-        AM{"Orílɛ́ède Améníà"}
-        AO{"Orílɛ́ède Ààngólà"}
-        AR{"Orílɛ́ède Agentínà"}
+        AE{"Ɛmirate ti Awɔn Arabu"}
         AS{"Sámóánì ti Orílɛ́ède Àméríkà"}
-        AT{"Orílɛ́ède Asítíríà"}
-        AU{"Orílɛ́ède Ástràlìá"}
-        AW{"Orílɛ́ède Árúbà"}
         AX{"Àwɔn Erékùsù ti Åland"}
-        AZ{"Orílɛ́ède Asɛ́bájánì"}
-        BA{"Orílɛ́ède Bɔ̀síníà àti Ɛtisɛgófínà"}
-        BB{"Orílɛ́ède Bábádósì"}
-        BD{"Orílɛ́ède Bángáládésì"}
-        BE{"Orílɛ́ède Bégíɔ́mù"}
-        BF{"Orílɛ́ède Bùùkíná Fasò"}
-        BG{"Orílɛ́ède Bùùgáríà"}
-        BH{"Orílɛ́ède Báránì"}
-        BI{"Orílɛ́ède Bùùrúndì"}
-        BJ{"Orílɛ́ède Bɛ̀nɛ̀"}
-        BM{"Orílɛ́ède Bémúdà"}
-        BN{"Orílɛ́ède Búrúnɛ́lì"}
-        BO{"Orílɛ́ède Bɔ̀lífíyà"}
-        BR{"Orilɛ̀-èdè Bàràsílì"}
-        BS{"Orílɛ́ède Bàhámásì"}
-        BT{"Orílɛ́ède Bútánì"}
-        BW{"Orílɛ́ède Bɔ̀tìsúwánà"}
-        BY{"Orílɛ́ède Bélárúsì"}
-        BZ{"Orílɛ́ède Bèlísɛ̀"}
-        CA{"Orílɛ́ède Kánádà"}
-        CD{"Orilɛ́ède Kóngò"}
-        CF{"Orílɛ́ède Àrin gùngun Áfíríkà"}
-        CG{"Orílɛ́ède Kóngò"}
-        CH{"Orílɛ́ède switishilandi"}
-        CI{"Orílɛ́ède Kóútè forà"}
-        CK{"Orílɛ́ède Etíokun Kùúkù"}
-        CL{"Orílɛ́ède shílè"}
-        CM{"Orílɛ́ède Kamerúúnì"}
-        CN{"Orilɛ̀-èdè Sháínà"}
-        CO{"Orílɛ́ède Kòlómíbìa"}
-        CR{"Orílɛ́ède Kuusita Ríkà"}
-        CU{"Orílɛ́ède Kúbà"}
-        CV{"Orílɛ́ède Etíokun Kápé féndè"}
-        CY{"Orílɛ́ède Kúrúsì"}
-        CZ{"Orílɛ́ède shɛ́ɛ́kì"}
-        DE{"Orílɛèdè Jámánì"}
+        AZ{"Asɛ́bájánì"}
+        BA{"Bɔ̀síníà àti Ɛtisɛgófínà"}
+        BE{"Bégíɔ́mù"}
+        BJ{"Bɛ̀nɛ̀"}
+        BN{"Búrúnɛ́lì"}
+        BO{"Bɔ̀lífíyà"}
+        BW{"Bɔ̀tìsúwánà"}
+        BZ{"Bèlísɛ̀"}
+        CH{"switishilandi"}
+        CL{"Shílè"}
+        CN{"Sháínà"}
+        CZ{"Shɛ́ɛ́kì"}
         DG{"Diego Gashia"}
-        DJ{"Orílɛ́ède Díbɔ́ótì"}
-        DK{"Orílɛ́ède Dɛ́mákì"}
-        DM{"Orílɛ́ède Dòmíníkà"}
-        DO{"Orilɛ́ède Dòmíníkánì"}
-        DZ{"Orílɛ́ède Àlùgèríánì"}
-        EC{"Orílɛ́ède Ekuádò"}
-        EE{"Orílɛ́ède Esitonia"}
-        EG{"Orílɛ́ède Égípítì"}
+        DJ{"Díbɔ́ótì"}
+        DK{"Dɛ́mákì"}
         EH{"Ìwɔ̀òòrùn Sàhárà"}
-        ER{"Orílɛ́ède Eritira"}
-        ES{"Orílɛ́ède Sipani"}
-        ET{"Orílɛ́ède Etopia"}
-        EU{"Ìshɔ̀kan Yúròpù"}
-        FI{"Orílɛ́ède Filandi"}
-        FJ{"Orílɛ́ède Fiji"}
-        FK{"Orílɛ́ède Etikun Fakalandi"}
-        FM{"Orílɛ́ède Makoronesia"}
+        EU{"Àpapɔ̀ Yúróòpù"}
         FO{"Àwɔn Erékùsù ti Faroe"}
-        FR{"Orílɛ́ède Faranse"}
-        GA{"Orílɛ́ède Gabon"}
-        GB{"Orílɛ́èdè Gɛ̀ɛ́sì"}
-        GD{"Orílɛ́ède Genada"}
-        GE{"Orílɛ́ède Gɔgia"}
-        GF{"Orílɛ́ède Firenshi Guana"}
-        GH{"Orílɛ́ède Gana"}
-        GI{"Orílɛ́ède Gibaratara"}
-        GL{"Orílɛ́ède Gerelandi"}
-        GM{"Orílɛ́ède Gambia"}
-        GN{"Orílɛ́ède Gene"}
-        GP{"Orílɛ́ède Gadelope"}
-        GQ{"Orílɛ́ède Ekutoria Gini"}
-        GR{"Orílɛ́ède Geriisi"}
+        GB{"Gɛ̀ɛ́sì"}
+        GE{"Gɔgia"}
+        GF{"Firenshi Guana"}
         GS{"Gúúsù Georgia àti Gúúsù Àwɔn Erékùsù Sandwich"}
-        GT{"Orílɛ́ède Guatemala"}
-        GU{"Orílɛ́ède Guamu"}
-        GW{"Orílɛ́ède Gene-Busau"}
-        GY{"Orílɛ́ède Guyana"}
-        HK{"Hong Kong SAR ti Sháìnà"}
-        HN{"Orílɛ́ède Hondurasi"}
-        HR{"Orílɛ́ède Kòróátíà"}
-        HT{"Orílɛ́ède Haati"}
-        HU{"Orílɛ́ède Hungari"}
+        HK{"Hong Kong"}
         IC{"Ɛrékùsù Kánárì"}
-        ID{"Orílɛ́ède Indonesia"}
-        IE{"Orílɛ́ède Ailandi"}
-        IL{"Orílɛ́ède Iserɛli"}
-        IN{"Orílɛ́ède India"}
-        IO{"Orílɛ́ède Etíkun Índíánì ti Ìlú Bírítísì"}
-        IQ{"Orílɛ́ède Iraki"}
-        IR{"Orílɛ́ède Irani"}
-        IS{"Orílɛ́ède Ashilandi"}
-        IT{"Orílɛ́ède Itáli"}
-        JM{"Orílɛ́ède Jamaika"}
-        JO{"Orílɛ́ède Jɔdani"}
-        JP{"Orílɛ́ède Japani"}
-        KE{"Orílɛ́ède Kenya"}
-        KG{"Orílɛ́ède Kurishisitani"}
-        KH{"Orílɛ́ède Kàmùbódíà"}
-        KI{"Orílɛ́ède Kiribati"}
-        KM{"Orílɛ́ède Kòmòrósì"}
-        KN{"Orílɛ́ède Kiiti ati Neefi"}
-        KP{"Orílɛ́ède Guusu Kɔria"}
-        KR{"Orílɛ́ède Ariwa Kɔria"}
-        KW{"Orílɛ́ède Kuweti"}
-        KY{"Orílɛ́ède Etíokun Kámánì"}
-        KZ{"Orílɛ́ède Kashashatani"}
-        LA{"Orílɛ́ède Laosi"}
-        LB{"Orílɛ́ède Lebanoni"}
-        LC{"Orílɛ́ède Lushia"}
-        LI{"Orílɛ́ède Lɛshitɛnisiteni"}
-        LK{"Orílɛ́ède Siri Lanka"}
-        LR{"Orílɛ́ède Laberia"}
-        LS{"Orílɛ́ède Lesoto"}
-        LT{"Orílɛ́ède Lituania"}
-        LU{"Orílɛ́ède Lusemogi"}
-        LV{"Orílɛ́ède Latifia"}
-        LY{"Orílɛ́ède Libiya"}
-        MA{"Orílɛ́ède Moroko"}
-        MC{"Orílɛ́ède Monako"}
-        MD{"Orílɛ́ède Modofia"}
-        MG{"Orílɛ́ède Madasika"}
-        MH{"Orílɛ́ède Etikun Máshali"}
-        ML{"Orílɛ́ède Mali"}
-        MM{"Orílɛ́ède Manamari"}
-        MN{"Orílɛ́ède Mogolia"}
+        IL{"Iserɛli"}
+        IS{"Ashilandi"}
+        JO{"Jɔdani"}
+        KG{"Kurishisitani"}
+        KP{"Guusu Kɔria"}
+        KR{"Ariwa Kɔria"}
+        KZ{"Kashashatani"}
+        LC{"Lushia"}
+        LI{"Lɛshitɛnisiteni"}
+        MH{"Etikun Máshali"}
         MO{"Màkáò"}
-        MP{"Orílɛ́ède Etikun Guusu Mariana"}
-        MQ{"Orílɛ́ède Matinikuwi"}
-        MR{"Orílɛ́ède Maritania"}
-        MS{"Orílɛ́ède Motserati"}
-        MT{"Orílɛ́ède Malata"}
-        MU{"Orílɛ́ède Maritiusi"}
-        MV{"Orílɛ́ède Maladifi"}
-        MW{"Orílɛ́ède Malawi"}
-        MX{"Orílɛ́ède Mesiko"}
-        MY{"Orílɛ́ède Malasia"}
-        MZ{"Orílɛ́ède Moshamibiku"}
-        NA{"Orílɛ́ède Namibia"}
-        NC{"Orílɛ́ède Kaledonia Titun"}
-        NE{"Orílɛ́ède Nàìjá"}
-        NF{"Orílɛ́ède Etikun Nɔ́úfókì"}
-        NG{"Orilɛ̀-èdè Nàìjíríà"}
-        NI{"Orílɛ́ède NIkaragua"}
-        NL{"Orílɛ́ède Nedalandi"}
-        NO{"Orílɛ́ède Nɔɔwii"}
-        NP{"Orílɛ́ède Nepa"}
-        NR{"Orílɛ́ède Nauru"}
-        NU{"Orílɛ́ède Niue"}
-        NZ{"Orílɛ́ède shilandi Titun"}
-        OM{"Orílɛ́ède Ɔɔma"}
-        PA{"Orílɛ́ède Panama"}
-        PE{"Orílɛ́ède Peru"}
-        PF{"Orílɛ́ède Firenshi Polinesia"}
-        PG{"Orílɛ́ède Paapu ti Giini"}
-        PH{"Orílɛ́ède filipini"}
-        PK{"Orílɛ́ède Pakisitan"}
-        PL{"Orílɛ́ède Polandi"}
-        PM{"Orílɛ́ède Pɛɛri ati mikuloni"}
-        PN{"Orílɛ́ède Pikarini"}
-        PR{"Orílɛ́ède Pɔto Riko"}
-        PS{"Palɛsitín"}
-        PT{"Orílɛ́ède Pɔ́túgà"}
-        PW{"Orílɛ́ède Paalu"}
-        PY{"Orílɛ́ède Paraguye"}
-        QA{"Orílɛ́ède Kota"}
-        RE{"Orílɛ́ède Riuniyan"}
-        RO{"Orílɛ́ède Romaniya"}
-        RU{"Orílɛ́ède Rɔshia"}
-        RW{"Orílɛ́ède Ruwanda"}
-        SA{"Orílɛ́ède Saudi Arabia"}
-        SB{"Orílɛ́ède Etikun Solomoni"}
-        SC{"Orílɛ́ède seshɛlɛsi"}
-        SD{"Orílɛ́ède Sudani"}
-        SE{"Orílɛ́ède Swidini"}
-        SG{"Orílɛ́ède Singapo"}
-        SH{"Orílɛ́ède Hɛlena"}
-        SI{"Orílɛ́ède Silofania"}
-        SK{"Orílɛ́ède Silofakia"}
-        SL{"Orílɛ́ède Siria looni"}
-        SM{"Orílɛ́ède Sani Marino"}
-        SN{"Orílɛ́ède Sɛnɛga"}
-        SO{"Orílɛ́ède Somalia"}
-        SR{"Orílɛ́ède Surinami"}
-        ST{"Orílɛ́ède Sao tomi ati piriishipi"}
-        SV{"Orílɛ́ède Ɛɛsáfádò"}
-        SY{"Orílɛ́ède Siria"}
-        SZ{"Orílɛ́ède Sashiland"}
-        TC{"Orílɛ́ède Tɔɔki ati Etikun Kakɔsi"}
-        TD{"Orílɛ́ède shààdì"}
+        MZ{"Moshamibiku"}
+        NF{"Etikun Nɔ́úfókì"}
+        NO{"Nɔɔwii"}
+        NZ{"Shilandi Titun"}
+        OM{"Ɔɔma"}
+        PF{"Firenshi Polinesia"}
+        PM{"Pɛɛri ati mikuloni"}
+        PR{"Pɔto Riko"}
+        PS{"Palɛsítínì"}
+        PT{"Pɔ́túgà"}
+        QO{"Agbègbè Òshɔ́ɔ́níà"}
+        RU{"Rɔshia"}
+        SC{"Sheshɛlɛsi"}
+        SH{"Hɛlena"}
+        SN{"Sɛnɛga"}
+        ST{"Sao tomi ati piriishipi"}
+        SV{"Ɛɛsáfádò"}
+        SZ{"Sashiland"}
+        TC{"Tɔɔki ati Etikun Kakɔsi"}
+        TD{"Shààdì"}
         TF{"Agbègbè Gúúsù Faranshé"}
-        TG{"Orílɛ́ède Togo"}
-        TH{"Orílɛ́ède Tailandi"}
-        TJ{"Orílɛ́ède Takisitani"}
-        TK{"Orílɛ́ède Tokelau"}
-        TL{"Orílɛ́ède ÌlàOòrùn Tímɔ̀"}
-        TM{"Orílɛ́ède Tɔɔkimenisita"}
-        TN{"Orílɛ́ède Tunishia"}
-        TO{"Orílɛ́ède Tonga"}
-        TR{"Orílɛ́ède Tɔɔki"}
-        TT{"Orílɛ́ède Tirinida ati Tobaga"}
-        TV{"Orílɛ́ède Tufalu"}
-        TW{"Orílɛ́ède Taiwani"}
-        TZ{"Orílɛ́ède Tàǹsáníà"}
-        UA{"Orílɛ́ède Ukarini"}
-        UG{"Orílɛ́ède Uganda"}
+        TL{"ÌlàOòrùn Tímɔ̀"}
+        TM{"Tɔɔkimenisita"}
+        TN{"Tunishia"}
+        TR{"Tɔɔki"}
         UM{"Àwɔn Erékùsù Kékèké Agbègbè US"}
         UN{"Ìshɔ̀kan àgbáyé"}
-        US{"Orílɛ̀-èdè Amɛrikà"}
-        UY{"Orílɛ́ède Nruguayi"}
-        UZ{"Orílɛ́ède Nshibɛkisitani"}
-        VC{"Orílɛ́ède Fisɛnnti ati Genadina"}
-        VE{"Orílɛ́ède Fɛnɛshuɛla"}
-        VG{"Orílɛ́ède Etíkun Fágínì ti ìlú Bírítísì"}
-        VI{"Orílɛ́ède Etikun Fagini ti Amɛrika"}
-        VN{"Orílɛ́ède Fɛtinami"}
-        VU{"Orílɛ́ède Faniatu"}
-        WF{"Orílɛ́ède Wali ati futuna"}
-        WS{"Orílɛ́ède Samɔ"}
-        YE{"Orílɛ́ède yemeni"}
-        YT{"Orílɛ́ède Mayote"}
+        US{"Amɛrikà"}
+        UZ{"Nshibɛkisitani"}
+        VC{"Fisɛnnti ati Genadina"}
+        VE{"Fɛnɛshuɛla"}
+        VI{"Etikun Fagini ti Amɛrika"}
+        VN{"Fɛtinami"}
+        WS{"Samɔ"}
+        XA{"ìsɔ̀rɔ̀sí irɔ́"}
+        XB{"ibi irɔ́"}
         ZA{"Gúúshù Áfíríkà"}
-        ZM{"Orílɛ́ède shamibia"}
-        ZW{"Orílɛ́ède shimibabe"}
+        ZM{"Shamibia"}
+        ZW{"Shimibabe"}
         ZZ{"Àgbègbè àìmɔ̀"}
     }
     Countries%variant{
+        CZ{"Shɛ́ɛ́kì"}
         TL{"Ìlà Òòrùn Tímɔ̀"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/yue.txt b/icu4c/source/data/region/yue.txt
index 1aeeb50..0b1a2ef 100644
--- a/icu4c/source/data/region/yue.txt
+++ b/icu4c/source/data/region/yue.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue{
     Countries{
         001{"世界"}
@@ -303,5 +304,4 @@
         CZ{"捷克共和國"}
         SZ{"斯威士蘭"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/yue_CN.txt b/icu4c/source/data/region/yue_CN.txt
index 26d4356..2a3cc8a 100644
--- a/icu4c/source/data/region/yue_CN.txt
+++ b/icu4c/source/data/region/yue_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_CN{
     "%%ALIAS"{"yue_Hans_CN"}
 }
diff --git a/icu4c/source/data/region/yue_HK.txt b/icu4c/source/data/region/yue_HK.txt
index 29a7459..7bce3c5 100644
--- a/icu4c/source/data/region/yue_HK.txt
+++ b/icu4c/source/data/region/yue_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_HK{
     "%%ALIAS"{"yue_Hant_HK"}
 }
diff --git a/icu4c/source/data/region/yue_Hans.txt b/icu4c/source/data/region/yue_Hans.txt
index 8f3bb5b..26e53c6 100644
--- a/icu4c/source/data/region/yue_Hans.txt
+++ b/icu4c/source/data/region/yue_Hans.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_Hans{
     %%Parent{"root"}
     Countries{
@@ -304,5 +305,4 @@
         CZ{"捷克共和国"}
         SZ{"斯威士兰"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/yue_Hans_CN.txt b/icu4c/source/data/region/yue_Hans_CN.txt
index 479d125..07edcb8 100644
--- a/icu4c/source/data/region/yue_Hans_CN.txt
+++ b/icu4c/source/data/region/yue_Hans_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/yue_Hant.txt b/icu4c/source/data/region/yue_Hant.txt
index 8f39812..f1fb01c 100644
--- a/icu4c/source/data/region/yue_Hant.txt
+++ b/icu4c/source/data/region/yue_Hant.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_Hant{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/yue_Hant_HK.txt b/icu4c/source/data/region/yue_Hant_HK.txt
index 9adeba7..e2bb01d 100644
--- a/icu4c/source/data/region/yue_Hant_HK.txt
+++ b/icu4c/source/data/region/yue_Hant_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/zgh.txt b/icu4c/source/data/region/zgh.txt
index 4034e78..9fc14a7 100644
--- a/icu4c/source/data/region/zgh.txt
+++ b/icu4c/source/data/region/zgh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zgh{
     Countries{
         AD{"ⴰⵏⴷⵓⵔⴰ"}
@@ -229,5 +230,4 @@
         ZM{"ⵣⴰⵎⴱⵢⴰ"}
         ZW{"ⵣⵉⵎⴱⴰⴱⵡⵉ"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/zh.txt b/icu4c/source/data/region/zh.txt
index 5a55158..2a11360 100644
--- a/icu4c/source/data/region/zh.txt
+++ b/icu4c/source/data/region/zh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh{
     Countries{
         001{"世界"}
@@ -303,5 +304,4 @@
         CI{"象牙海岸"}
         CZ{"捷克共和国"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/zh_CN.txt b/icu4c/source/data/region/zh_CN.txt
index c915161..0136d26 100644
--- a/icu4c/source/data/region/zh_CN.txt
+++ b/icu4c/source/data/region/zh_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_CN{
     "%%ALIAS"{"zh_Hans_CN"}
 }
diff --git a/icu4c/source/data/region/zh_HK.txt b/icu4c/source/data/region/zh_HK.txt
index fe72a0e..c34c98f 100644
--- a/icu4c/source/data/region/zh_HK.txt
+++ b/icu4c/source/data/region/zh_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_HK{
     "%%ALIAS"{"zh_Hant_HK"}
 }
diff --git a/icu4c/source/data/region/zh_Hans.txt b/icu4c/source/data/region/zh_Hans.txt
index 72c418e..58a5386 100644
--- a/icu4c/source/data/region/zh_Hans.txt
+++ b/icu4c/source/data/region/zh_Hans.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hans{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/zh_Hans_CN.txt b/icu4c/source/data/region/zh_Hans_CN.txt
index 70a6a77..333ba54 100644
--- a/icu4c/source/data/region/zh_Hans_CN.txt
+++ b/icu4c/source/data/region/zh_Hans_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/zh_Hans_SG.txt b/icu4c/source/data/region/zh_Hans_SG.txt
index 498813b..5e0fabf 100644
--- a/icu4c/source/data/region/zh_Hans_SG.txt
+++ b/icu4c/source/data/region/zh_Hans_SG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/zh_Hant.txt b/icu4c/source/data/region/zh_Hant.txt
index c9b6ffe..64fe8bf 100644
--- a/icu4c/source/data/region/zh_Hant.txt
+++ b/icu4c/source/data/region/zh_Hant.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant{
     %%Parent{"root"}
     Countries{
@@ -304,5 +305,4 @@
         CZ{"捷克共和國"}
         SZ{"史瓦濟蘭"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/zh_Hant_HK.txt b/icu4c/source/data/region/zh_Hant_HK.txt
index c142bad..a238735 100644
--- a/icu4c/source/data/region/zh_Hant_HK.txt
+++ b/icu4c/source/data/region/zh_Hant_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant_HK{
     Countries{
         013{"中美洲"}
@@ -50,6 +51,7 @@
         LC{"聖盧西亞"}
         LI{"列支敦士登"}
         LR{"利比里亞"}
+        LS{"萊索托"}
         ME{"黑山"}
         ML{"馬里"}
         MR{"毛里塔尼亞"}
@@ -81,7 +83,6 @@
         TC{"特克斯和凱科斯群島"}
         TD{"乍得"}
         TF{"法屬南部領地"}
-        TG{"多哥共和國"}
         TO{"湯加"}
         TT{"千里達和多巴哥"}
         TV{"圖瓦盧"}
@@ -95,5 +96,4 @@
         ZM{"贊比亞"}
         ZW{"津巴布韋"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/zh_Hant_MO.txt b/icu4c/source/data/region/zh_Hant_MO.txt
index 670cffc..1f5fac8 100644
--- a/icu4c/source/data/region/zh_Hant_MO.txt
+++ b/icu4c/source/data/region/zh_Hant_MO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant_MO{
     %%Parent{"zh_Hant_HK"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/region/zh_Hant_TW.txt b/icu4c/source/data/region/zh_Hant_TW.txt
index b62ad69..b079f20 100644
--- a/icu4c/source/data/region/zh_Hant_TW.txt
+++ b/icu4c/source/data/region/zh_Hant_TW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/region/zh_MO.txt b/icu4c/source/data/region/zh_MO.txt
index 6565bf7..c6b2148 100644
--- a/icu4c/source/data/region/zh_MO.txt
+++ b/icu4c/source/data/region/zh_MO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_MO{
     "%%ALIAS"{"zh_Hant_MO"}
 }
diff --git a/icu4c/source/data/region/zh_SG.txt b/icu4c/source/data/region/zh_SG.txt
index bf27773..14136c3 100644
--- a/icu4c/source/data/region/zh_SG.txt
+++ b/icu4c/source/data/region/zh_SG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_SG{
     "%%ALIAS"{"zh_Hans_SG"}
 }
diff --git a/icu4c/source/data/region/zh_TW.txt b/icu4c/source/data/region/zh_TW.txt
index 9372c50..c54ccbf 100644
--- a/icu4c/source/data/region/zh_TW.txt
+++ b/icu4c/source/data/region/zh_TW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_TW{
     "%%ALIAS"{"zh_Hant_TW"}
 }
diff --git a/icu4c/source/data/region/zu.txt b/icu4c/source/data/region/zu.txt
index 4775088..6c3596a 100644
--- a/icu4c/source/data/region/zu.txt
+++ b/icu4c/source/data/region/zu.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zu{
     Countries{
         001{"umhlaba"}
@@ -107,6 +108,7 @@
         ES{"i-Spain"}
         ET{"i-Ethiopia"}
         EU{"i-European Union"}
+        EZ{"I-Eurozone"}
         FI{"i-Finland"}
         FJ{"i-Fiji"}
         FK{"i-Falkland Islands (Islas Malvinas)"}
@@ -308,5 +310,4 @@
         CZ{"i-Czech Republic"}
         TL{"i-East Timor"}
     }
-    Version{"37"}
 }
diff --git a/icu4c/source/data/translit/Any_Accents.txt b/icu4c/source/data/translit/Any_Accents.txt
index 7ba23d4..a0f7b5b 100644
--- a/icu4c/source/data/translit/Any_Accents.txt
+++ b/icu4c/source/data/translit/Any_Accents.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Any_Accents.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Any_Publishing.txt b/icu4c/source/data/translit/Any_Publishing.txt
index 2cc2e52..50e8681 100644
--- a/icu4c/source/data/translit/Any_Publishing.txt
+++ b/icu4c/source/data/translit/Any_Publishing.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Any_Publishing.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Arab_Latn.txt b/icu4c/source/data/translit/Arab_Latn.txt
index ead4fcb..4fa228e 100644
--- a/icu4c/source/data/translit/Arab_Latn.txt
+++ b/icu4c/source/data/translit/Arab_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Arab_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Beng_Arab.txt b/icu4c/source/data/translit/Beng_Arab.txt
index 8a11010..f07b0eb 100644
--- a/icu4c/source/data/translit/Beng_Arab.txt
+++ b/icu4c/source/data/translit/Beng_Arab.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Beng_Arab.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Beng_Deva.txt b/icu4c/source/data/translit/Beng_Deva.txt
index 7cb0e71..ee40944 100644
--- a/icu4c/source/data/translit/Beng_Deva.txt
+++ b/icu4c/source/data/translit/Beng_Deva.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Beng_Deva.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Beng_Gujr.txt b/icu4c/source/data/translit/Beng_Gujr.txt
index 7599dcc..f6df822 100644
--- a/icu4c/source/data/translit/Beng_Gujr.txt
+++ b/icu4c/source/data/translit/Beng_Gujr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Beng_Gujr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Beng_Guru.txt b/icu4c/source/data/translit/Beng_Guru.txt
index 9922709..8ff938d 100644
--- a/icu4c/source/data/translit/Beng_Guru.txt
+++ b/icu4c/source/data/translit/Beng_Guru.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Beng_Guru.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Beng_Knda.txt b/icu4c/source/data/translit/Beng_Knda.txt
index dedc9e7..98ac853 100644
--- a/icu4c/source/data/translit/Beng_Knda.txt
+++ b/icu4c/source/data/translit/Beng_Knda.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Beng_Knda.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Beng_Latn.txt b/icu4c/source/data/translit/Beng_Latn.txt
index e5be388..d5cc47b 100644
--- a/icu4c/source/data/translit/Beng_Latn.txt
+++ b/icu4c/source/data/translit/Beng_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Beng_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Beng_Mlym.txt b/icu4c/source/data/translit/Beng_Mlym.txt
index 2609934..d312823 100644
--- a/icu4c/source/data/translit/Beng_Mlym.txt
+++ b/icu4c/source/data/translit/Beng_Mlym.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Beng_Mlym.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Beng_Orya.txt b/icu4c/source/data/translit/Beng_Orya.txt
index b2ad0cb..ddbac9e 100644
--- a/icu4c/source/data/translit/Beng_Orya.txt
+++ b/icu4c/source/data/translit/Beng_Orya.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Beng_Orya.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Beng_Taml.txt b/icu4c/source/data/translit/Beng_Taml.txt
index 17bc84d..ed45f71 100644
--- a/icu4c/source/data/translit/Beng_Taml.txt
+++ b/icu4c/source/data/translit/Beng_Taml.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Beng_Taml.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Beng_Telu.txt b/icu4c/source/data/translit/Beng_Telu.txt
index 8bc99bf..f9975b1 100644
--- a/icu4c/source/data/translit/Beng_Telu.txt
+++ b/icu4c/source/data/translit/Beng_Telu.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Beng_Telu.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Beng_ur.txt b/icu4c/source/data/translit/Beng_ur.txt
index 8f9a2a4..993c47a 100644
--- a/icu4c/source/data/translit/Beng_ur.txt
+++ b/icu4c/source/data/translit/Beng_ur.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Beng_ur.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Bengali_InterIndic.txt b/icu4c/source/data/translit/Bengali_InterIndic.txt
index 3391a2e..eb16f4d 100644
--- a/icu4c/source/data/translit/Bengali_InterIndic.txt
+++ b/icu4c/source/data/translit/Bengali_InterIndic.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Bengali_InterIndic.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Cyrl_Latn.txt b/icu4c/source/data/translit/Cyrl_Latn.txt
index 12ab8f4..d595f99 100644
--- a/icu4c/source/data/translit/Cyrl_Latn.txt
+++ b/icu4c/source/data/translit/Cyrl_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Cyrl_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Deva_Arab.txt b/icu4c/source/data/translit/Deva_Arab.txt
index 7ccc838..2402eec 100644
--- a/icu4c/source/data/translit/Deva_Arab.txt
+++ b/icu4c/source/data/translit/Deva_Arab.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Deva_Arab.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Deva_Beng.txt b/icu4c/source/data/translit/Deva_Beng.txt
index ae85405..083b43d 100644
--- a/icu4c/source/data/translit/Deva_Beng.txt
+++ b/icu4c/source/data/translit/Deva_Beng.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Deva_Beng.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Deva_Gujr.txt b/icu4c/source/data/translit/Deva_Gujr.txt
index 1240f01..bd60dd0 100644
--- a/icu4c/source/data/translit/Deva_Gujr.txt
+++ b/icu4c/source/data/translit/Deva_Gujr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Deva_Gujr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Deva_Guru.txt b/icu4c/source/data/translit/Deva_Guru.txt
index d485778..845c055 100644
--- a/icu4c/source/data/translit/Deva_Guru.txt
+++ b/icu4c/source/data/translit/Deva_Guru.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Deva_Guru.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Deva_Knda.txt b/icu4c/source/data/translit/Deva_Knda.txt
index 4569d26..468c422 100644
--- a/icu4c/source/data/translit/Deva_Knda.txt
+++ b/icu4c/source/data/translit/Deva_Knda.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Deva_Knda.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Deva_Latn.txt b/icu4c/source/data/translit/Deva_Latn.txt
index 919050f..aa9d654 100644
--- a/icu4c/source/data/translit/Deva_Latn.txt
+++ b/icu4c/source/data/translit/Deva_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Deva_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Deva_Mlym.txt b/icu4c/source/data/translit/Deva_Mlym.txt
index 2fe980b..8180b12 100644
--- a/icu4c/source/data/translit/Deva_Mlym.txt
+++ b/icu4c/source/data/translit/Deva_Mlym.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Deva_Mlym.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Deva_Orya.txt b/icu4c/source/data/translit/Deva_Orya.txt
index 144f479..7f1832e 100644
--- a/icu4c/source/data/translit/Deva_Orya.txt
+++ b/icu4c/source/data/translit/Deva_Orya.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Deva_Orya.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Deva_Taml.txt b/icu4c/source/data/translit/Deva_Taml.txt
index a453b7b..50851a3 100644
--- a/icu4c/source/data/translit/Deva_Taml.txt
+++ b/icu4c/source/data/translit/Deva_Taml.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Deva_Taml.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Deva_Telu.txt b/icu4c/source/data/translit/Deva_Telu.txt
index 60c218b..3bc718e 100644
--- a/icu4c/source/data/translit/Deva_Telu.txt
+++ b/icu4c/source/data/translit/Deva_Telu.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Deva_Telu.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Deva_ur.txt b/icu4c/source/data/translit/Deva_ur.txt
index b6b5ec1..4e0cb92 100644
--- a/icu4c/source/data/translit/Deva_ur.txt
+++ b/icu4c/source/data/translit/Deva_ur.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Deva_ur.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Devanagari_InterIndic.txt b/icu4c/source/data/translit/Devanagari_InterIndic.txt
index 3ffb3b9..e4db191 100644
--- a/icu4c/source/data/translit/Devanagari_InterIndic.txt
+++ b/icu4c/source/data/translit/Devanagari_InterIndic.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Devanagari_InterIndic.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Fullwidth_Halfwidth.txt b/icu4c/source/data/translit/Fullwidth_Halfwidth.txt
index 66ed739..82435fa 100644
--- a/icu4c/source/data/translit/Fullwidth_Halfwidth.txt
+++ b/icu4c/source/data/translit/Fullwidth_Halfwidth.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Fullwidth_Halfwidth.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Geor_Latn.txt b/icu4c/source/data/translit/Geor_Latn.txt
index 547da33..c5066c7 100644
--- a/icu4c/source/data/translit/Geor_Latn.txt
+++ b/icu4c/source/data/translit/Geor_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Geor_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Grek_Latn.txt b/icu4c/source/data/translit/Grek_Latn.txt
index a682aff..81a1069 100644
--- a/icu4c/source/data/translit/Grek_Latn.txt
+++ b/icu4c/source/data/translit/Grek_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Grek_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Grek_Latn_UNGEGN.txt b/icu4c/source/data/translit/Grek_Latn_UNGEGN.txt
index fa29c42..573a21b 100644
--- a/icu4c/source/data/translit/Grek_Latn_UNGEGN.txt
+++ b/icu4c/source/data/translit/Grek_Latn_UNGEGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Grek_Latn_UNGEGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Gujarati_InterIndic.txt b/icu4c/source/data/translit/Gujarati_InterIndic.txt
index 00e56b1..0a99f1e 100644
--- a/icu4c/source/data/translit/Gujarati_InterIndic.txt
+++ b/icu4c/source/data/translit/Gujarati_InterIndic.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Gujarati_InterIndic.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Gujr_Arab.txt b/icu4c/source/data/translit/Gujr_Arab.txt
index 023e044..d7dcd7c 100644
--- a/icu4c/source/data/translit/Gujr_Arab.txt
+++ b/icu4c/source/data/translit/Gujr_Arab.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Gujr_Arab.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Gujr_Beng.txt b/icu4c/source/data/translit/Gujr_Beng.txt
index 7365057..e985770 100644
--- a/icu4c/source/data/translit/Gujr_Beng.txt
+++ b/icu4c/source/data/translit/Gujr_Beng.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Gujr_Beng.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Gujr_Deva.txt b/icu4c/source/data/translit/Gujr_Deva.txt
index 4ca7734..69343dd 100644
--- a/icu4c/source/data/translit/Gujr_Deva.txt
+++ b/icu4c/source/data/translit/Gujr_Deva.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Gujr_Deva.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Gujr_Guru.txt b/icu4c/source/data/translit/Gujr_Guru.txt
index cc04410..edaf752 100644
--- a/icu4c/source/data/translit/Gujr_Guru.txt
+++ b/icu4c/source/data/translit/Gujr_Guru.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Gujr_Guru.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Gujr_Knda.txt b/icu4c/source/data/translit/Gujr_Knda.txt
index 23561da..ab9c711 100644
--- a/icu4c/source/data/translit/Gujr_Knda.txt
+++ b/icu4c/source/data/translit/Gujr_Knda.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Gujr_Knda.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Gujr_Latn.txt b/icu4c/source/data/translit/Gujr_Latn.txt
index 9140fba..22f820b 100644
--- a/icu4c/source/data/translit/Gujr_Latn.txt
+++ b/icu4c/source/data/translit/Gujr_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Gujr_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Gujr_Mlym.txt b/icu4c/source/data/translit/Gujr_Mlym.txt
index 16b20bb..a884cba 100644
--- a/icu4c/source/data/translit/Gujr_Mlym.txt
+++ b/icu4c/source/data/translit/Gujr_Mlym.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Gujr_Mlym.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Gujr_Orya.txt b/icu4c/source/data/translit/Gujr_Orya.txt
index 6916746..8f03a06 100644
--- a/icu4c/source/data/translit/Gujr_Orya.txt
+++ b/icu4c/source/data/translit/Gujr_Orya.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Gujr_Orya.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Gujr_Taml.txt b/icu4c/source/data/translit/Gujr_Taml.txt
index d527950..b1fb7cd 100644
--- a/icu4c/source/data/translit/Gujr_Taml.txt
+++ b/icu4c/source/data/translit/Gujr_Taml.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Gujr_Taml.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Gujr_Telu.txt b/icu4c/source/data/translit/Gujr_Telu.txt
index 9bf821b..532cba2 100644
--- a/icu4c/source/data/translit/Gujr_Telu.txt
+++ b/icu4c/source/data/translit/Gujr_Telu.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Gujr_Telu.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Gujr_ur.txt b/icu4c/source/data/translit/Gujr_ur.txt
index b30877d..66f9d5f 100644
--- a/icu4c/source/data/translit/Gujr_ur.txt
+++ b/icu4c/source/data/translit/Gujr_ur.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Gujr_ur.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Gurmukhi_InterIndic.txt b/icu4c/source/data/translit/Gurmukhi_InterIndic.txt
index 7e22add..75e1f17 100644
--- a/icu4c/source/data/translit/Gurmukhi_InterIndic.txt
+++ b/icu4c/source/data/translit/Gurmukhi_InterIndic.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Gurmukhi_InterIndic.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Guru_Arab.txt b/icu4c/source/data/translit/Guru_Arab.txt
index d06cfed..847bdf6 100644
--- a/icu4c/source/data/translit/Guru_Arab.txt
+++ b/icu4c/source/data/translit/Guru_Arab.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Guru_Arab.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Guru_Beng.txt b/icu4c/source/data/translit/Guru_Beng.txt
index b9498c0..6f1e4f9 100644
--- a/icu4c/source/data/translit/Guru_Beng.txt
+++ b/icu4c/source/data/translit/Guru_Beng.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Guru_Beng.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Guru_Deva.txt b/icu4c/source/data/translit/Guru_Deva.txt
index bb80ebd..a66a468 100644
--- a/icu4c/source/data/translit/Guru_Deva.txt
+++ b/icu4c/source/data/translit/Guru_Deva.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Guru_Deva.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Guru_Gujr.txt b/icu4c/source/data/translit/Guru_Gujr.txt
index fa71121..757bfc9 100644
--- a/icu4c/source/data/translit/Guru_Gujr.txt
+++ b/icu4c/source/data/translit/Guru_Gujr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Guru_Gujr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Guru_Knda.txt b/icu4c/source/data/translit/Guru_Knda.txt
index bd3ad19..5396f0e 100644
--- a/icu4c/source/data/translit/Guru_Knda.txt
+++ b/icu4c/source/data/translit/Guru_Knda.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Guru_Knda.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Guru_Latn.txt b/icu4c/source/data/translit/Guru_Latn.txt
index 61dac24..516b503 100644
--- a/icu4c/source/data/translit/Guru_Latn.txt
+++ b/icu4c/source/data/translit/Guru_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Guru_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Guru_Mlym.txt b/icu4c/source/data/translit/Guru_Mlym.txt
index 7218c34..52bd3d4 100644
--- a/icu4c/source/data/translit/Guru_Mlym.txt
+++ b/icu4c/source/data/translit/Guru_Mlym.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Guru_Mlym.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Guru_Orya.txt b/icu4c/source/data/translit/Guru_Orya.txt
index 767500a..d379eba 100644
--- a/icu4c/source/data/translit/Guru_Orya.txt
+++ b/icu4c/source/data/translit/Guru_Orya.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Guru_Orya.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Guru_Taml.txt b/icu4c/source/data/translit/Guru_Taml.txt
index e52eac6..15fc7cb 100644
--- a/icu4c/source/data/translit/Guru_Taml.txt
+++ b/icu4c/source/data/translit/Guru_Taml.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Guru_Taml.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Guru_Telu.txt b/icu4c/source/data/translit/Guru_Telu.txt
index 0e26ef8..9cbdcb6 100644
--- a/icu4c/source/data/translit/Guru_Telu.txt
+++ b/icu4c/source/data/translit/Guru_Telu.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Guru_Telu.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Guru_ur.txt b/icu4c/source/data/translit/Guru_ur.txt
index bfa7766..cf06724 100644
--- a/icu4c/source/data/translit/Guru_ur.txt
+++ b/icu4c/source/data/translit/Guru_ur.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Guru_ur.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Han_Latin_Names.txt b/icu4c/source/data/translit/Han_Latin_Names.txt
index 406a9ef..ca9c31e 100644
--- a/icu4c/source/data/translit/Han_Latin_Names.txt
+++ b/icu4c/source/data/translit/Han_Latin_Names.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Han_Latin_Names.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Han_Spacedhan.txt b/icu4c/source/data/translit/Han_Spacedhan.txt
index 9428d4d..da8e7b9 100644
--- a/icu4c/source/data/translit/Han_Spacedhan.txt
+++ b/icu4c/source/data/translit/Han_Spacedhan.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Han_Spacedhan.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Hang_Latn.txt b/icu4c/source/data/translit/Hang_Latn.txt
index a7aacf6..889797a 100644
--- a/icu4c/source/data/translit/Hang_Latn.txt
+++ b/icu4c/source/data/translit/Hang_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Hang_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Hani_Latn.txt b/icu4c/source/data/translit/Hani_Latn.txt
index 997d18f..365de7b 100644
--- a/icu4c/source/data/translit/Hani_Latn.txt
+++ b/icu4c/source/data/translit/Hani_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Hani_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Hans_Hant.txt b/icu4c/source/data/translit/Hans_Hant.txt
index aefdd2d..30c62f8 100644
--- a/icu4c/source/data/translit/Hans_Hant.txt
+++ b/icu4c/source/data/translit/Hans_Hant.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Hans_Hant.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Hebr_Latn.txt b/icu4c/source/data/translit/Hebr_Latn.txt
index 63791d7..3605938 100644
--- a/icu4c/source/data/translit/Hebr_Latn.txt
+++ b/icu4c/source/data/translit/Hebr_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Hebr_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Hira_Kana.txt b/icu4c/source/data/translit/Hira_Kana.txt
index a1eb33b..d433204 100644
--- a/icu4c/source/data/translit/Hira_Kana.txt
+++ b/icu4c/source/data/translit/Hira_Kana.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Hira_Kana.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Hira_Latn.txt b/icu4c/source/data/translit/Hira_Latn.txt
index 2e9674d..45a74b8 100644
--- a/icu4c/source/data/translit/Hira_Latn.txt
+++ b/icu4c/source/data/translit/Hira_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Hira_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/InterIndic_Arabic.txt b/icu4c/source/data/translit/InterIndic_Arabic.txt
index 8e4f1a1..8f31e05 100644
--- a/icu4c/source/data/translit/InterIndic_Arabic.txt
+++ b/icu4c/source/data/translit/InterIndic_Arabic.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: InterIndic_Arabic.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/InterIndic_Bengali.txt b/icu4c/source/data/translit/InterIndic_Bengali.txt
index 5dc39aa..a9f9ce2 100644
--- a/icu4c/source/data/translit/InterIndic_Bengali.txt
+++ b/icu4c/source/data/translit/InterIndic_Bengali.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: InterIndic_Bengali.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/InterIndic_Devanagari.txt b/icu4c/source/data/translit/InterIndic_Devanagari.txt
index 29265fd..7ffd9d4 100644
--- a/icu4c/source/data/translit/InterIndic_Devanagari.txt
+++ b/icu4c/source/data/translit/InterIndic_Devanagari.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: InterIndic_Devanagari.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/InterIndic_Gujarati.txt b/icu4c/source/data/translit/InterIndic_Gujarati.txt
index 25178fa..d8664f7 100644
--- a/icu4c/source/data/translit/InterIndic_Gujarati.txt
+++ b/icu4c/source/data/translit/InterIndic_Gujarati.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: InterIndic_Gujarati.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/InterIndic_Gurmukhi.txt b/icu4c/source/data/translit/InterIndic_Gurmukhi.txt
index c04b54c..c0c2433 100644
--- a/icu4c/source/data/translit/InterIndic_Gurmukhi.txt
+++ b/icu4c/source/data/translit/InterIndic_Gurmukhi.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: InterIndic_Gurmukhi.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/InterIndic_Kannada.txt b/icu4c/source/data/translit/InterIndic_Kannada.txt
index fa3aa04..5c233dd 100644
--- a/icu4c/source/data/translit/InterIndic_Kannada.txt
+++ b/icu4c/source/data/translit/InterIndic_Kannada.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: InterIndic_Kannada.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/InterIndic_Latin.txt b/icu4c/source/data/translit/InterIndic_Latin.txt
index 13cd64a..9f5d2cf 100644
--- a/icu4c/source/data/translit/InterIndic_Latin.txt
+++ b/icu4c/source/data/translit/InterIndic_Latin.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: InterIndic_Latin.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/InterIndic_Malayalam.txt b/icu4c/source/data/translit/InterIndic_Malayalam.txt
index e99b295..5a56737 100644
--- a/icu4c/source/data/translit/InterIndic_Malayalam.txt
+++ b/icu4c/source/data/translit/InterIndic_Malayalam.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: InterIndic_Malayalam.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/InterIndic_Oriya.txt b/icu4c/source/data/translit/InterIndic_Oriya.txt
index 4f1d908..c2fbc58 100644
--- a/icu4c/source/data/translit/InterIndic_Oriya.txt
+++ b/icu4c/source/data/translit/InterIndic_Oriya.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: InterIndic_Oriya.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/InterIndic_Tamil.txt b/icu4c/source/data/translit/InterIndic_Tamil.txt
index 5386a9f..3447db1 100644
--- a/icu4c/source/data/translit/InterIndic_Tamil.txt
+++ b/icu4c/source/data/translit/InterIndic_Tamil.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: InterIndic_Tamil.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/InterIndic_Telugu.txt b/icu4c/source/data/translit/InterIndic_Telugu.txt
index bc8d8dd..e1545dd 100644
--- a/icu4c/source/data/translit/InterIndic_Telugu.txt
+++ b/icu4c/source/data/translit/InterIndic_Telugu.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: InterIndic_Telugu.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/InterIndic_ur.txt b/icu4c/source/data/translit/InterIndic_ur.txt
index bbfaf02..84df114 100644
--- a/icu4c/source/data/translit/InterIndic_ur.txt
+++ b/icu4c/source/data/translit/InterIndic_ur.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: InterIndic_ur.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Jamo_Latn.txt b/icu4c/source/data/translit/Jamo_Latn.txt
index 696e96a..22fc464 100644
--- a/icu4c/source/data/translit/Jamo_Latn.txt
+++ b/icu4c/source/data/translit/Jamo_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Jamo_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Kannada_InterIndic.txt b/icu4c/source/data/translit/Kannada_InterIndic.txt
index 818f0b7..a955f8e 100644
--- a/icu4c/source/data/translit/Kannada_InterIndic.txt
+++ b/icu4c/source/data/translit/Kannada_InterIndic.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Kannada_InterIndic.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Knda_Arab.txt b/icu4c/source/data/translit/Knda_Arab.txt
index ab7c1aa..1dd3f77 100644
--- a/icu4c/source/data/translit/Knda_Arab.txt
+++ b/icu4c/source/data/translit/Knda_Arab.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Knda_Arab.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Knda_Beng.txt b/icu4c/source/data/translit/Knda_Beng.txt
index 7a0c8bf..394461e 100644
--- a/icu4c/source/data/translit/Knda_Beng.txt
+++ b/icu4c/source/data/translit/Knda_Beng.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Knda_Beng.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Knda_Deva.txt b/icu4c/source/data/translit/Knda_Deva.txt
index eda9d5f..9fe9dc1 100644
--- a/icu4c/source/data/translit/Knda_Deva.txt
+++ b/icu4c/source/data/translit/Knda_Deva.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Knda_Deva.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Knda_Gujr.txt b/icu4c/source/data/translit/Knda_Gujr.txt
index e9a69b3..acad214 100644
--- a/icu4c/source/data/translit/Knda_Gujr.txt
+++ b/icu4c/source/data/translit/Knda_Gujr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Knda_Gujr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Knda_Guru.txt b/icu4c/source/data/translit/Knda_Guru.txt
index bd743bb..35cdf25 100644
--- a/icu4c/source/data/translit/Knda_Guru.txt
+++ b/icu4c/source/data/translit/Knda_Guru.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Knda_Guru.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Knda_Latn.txt b/icu4c/source/data/translit/Knda_Latn.txt
index d4e9564..5d32670 100644
--- a/icu4c/source/data/translit/Knda_Latn.txt
+++ b/icu4c/source/data/translit/Knda_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Knda_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Knda_Mlym.txt b/icu4c/source/data/translit/Knda_Mlym.txt
index ec71e3a..6f76ed2 100644
--- a/icu4c/source/data/translit/Knda_Mlym.txt
+++ b/icu4c/source/data/translit/Knda_Mlym.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Knda_Mlym.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Knda_Orya.txt b/icu4c/source/data/translit/Knda_Orya.txt
index b727a17..f4fae98 100644
--- a/icu4c/source/data/translit/Knda_Orya.txt
+++ b/icu4c/source/data/translit/Knda_Orya.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Knda_Orya.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Knda_Taml.txt b/icu4c/source/data/translit/Knda_Taml.txt
index 302ef98..cede0b4 100644
--- a/icu4c/source/data/translit/Knda_Taml.txt
+++ b/icu4c/source/data/translit/Knda_Taml.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Knda_Taml.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Knda_Telu.txt b/icu4c/source/data/translit/Knda_Telu.txt
index dc17a04..9da54d5 100644
--- a/icu4c/source/data/translit/Knda_Telu.txt
+++ b/icu4c/source/data/translit/Knda_Telu.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Knda_Telu.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Knda_ur.txt b/icu4c/source/data/translit/Knda_ur.txt
index f2b9a2a..5fbc5d3 100644
--- a/icu4c/source/data/translit/Knda_ur.txt
+++ b/icu4c/source/data/translit/Knda_ur.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Knda_ur.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latin_ASCII.txt b/icu4c/source/data/translit/Latin_ASCII.txt
index 686e441..7807c35 100644
--- a/icu4c/source/data/translit/Latin_ASCII.txt
+++ b/icu4c/source/data/translit/Latin_ASCII.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latin_ASCII.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latin_ConjoiningJamo.txt b/icu4c/source/data/translit/Latin_ConjoiningJamo.txt
index c88944e..8e7937a 100644
--- a/icu4c/source/data/translit/Latin_ConjoiningJamo.txt
+++ b/icu4c/source/data/translit/Latin_ConjoiningJamo.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latin_ConjoiningJamo.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latin_InterIndic.txt b/icu4c/source/data/translit/Latin_InterIndic.txt
index 7a4f1fe..ff09b5d 100644
--- a/icu4c/source/data/translit/Latin_InterIndic.txt
+++ b/icu4c/source/data/translit/Latin_InterIndic.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latin_InterIndic.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latin_NumericPinyin.txt b/icu4c/source/data/translit/Latin_NumericPinyin.txt
index 316e075..9f832fc 100644
--- a/icu4c/source/data/translit/Latin_NumericPinyin.txt
+++ b/icu4c/source/data/translit/Latin_NumericPinyin.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latin_NumericPinyin.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latn_Armn.txt b/icu4c/source/data/translit/Latn_Armn.txt
index 9feace2..053c463 100644
--- a/icu4c/source/data/translit/Latn_Armn.txt
+++ b/icu4c/source/data/translit/Latn_Armn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latn_Armn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latn_Beng.txt b/icu4c/source/data/translit/Latn_Beng.txt
index 5a3edc9..505fec7 100644
--- a/icu4c/source/data/translit/Latn_Beng.txt
+++ b/icu4c/source/data/translit/Latn_Beng.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latn_Beng.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latn_Bopo.txt b/icu4c/source/data/translit/Latn_Bopo.txt
index b00e0d3..259269e 100644
--- a/icu4c/source/data/translit/Latn_Bopo.txt
+++ b/icu4c/source/data/translit/Latn_Bopo.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latn_Bopo.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latn_Cans.txt b/icu4c/source/data/translit/Latn_Cans.txt
index 9520455..f4d45dd 100644
--- a/icu4c/source/data/translit/Latn_Cans.txt
+++ b/icu4c/source/data/translit/Latn_Cans.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latn_Cans.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latn_Deva.txt b/icu4c/source/data/translit/Latn_Deva.txt
index 913d066..7adce8d 100644
--- a/icu4c/source/data/translit/Latn_Deva.txt
+++ b/icu4c/source/data/translit/Latn_Deva.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latn_Deva.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latn_Ethi.txt b/icu4c/source/data/translit/Latn_Ethi.txt
index 6a54a65..8cf5f2d 100644
--- a/icu4c/source/data/translit/Latn_Ethi.txt
+++ b/icu4c/source/data/translit/Latn_Ethi.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latn_Ethi.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latn_Gujr.txt b/icu4c/source/data/translit/Latn_Gujr.txt
index c8d9553..c232112 100644
--- a/icu4c/source/data/translit/Latn_Gujr.txt
+++ b/icu4c/source/data/translit/Latn_Gujr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latn_Gujr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latn_Guru.txt b/icu4c/source/data/translit/Latn_Guru.txt
index 65458b7..a36829d 100644
--- a/icu4c/source/data/translit/Latn_Guru.txt
+++ b/icu4c/source/data/translit/Latn_Guru.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latn_Guru.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latn_Hang.txt b/icu4c/source/data/translit/Latn_Hang.txt
index 7b063a4..ef53d53 100644
--- a/icu4c/source/data/translit/Latn_Hang.txt
+++ b/icu4c/source/data/translit/Latn_Hang.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latn_Hang.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latn_Jamo.txt b/icu4c/source/data/translit/Latn_Jamo.txt
index 1c1ae74..feefb30 100644
--- a/icu4c/source/data/translit/Latn_Jamo.txt
+++ b/icu4c/source/data/translit/Latn_Jamo.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latn_Jamo.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latn_Kana.txt b/icu4c/source/data/translit/Latn_Kana.txt
index ea4b7dd..73224f8 100644
--- a/icu4c/source/data/translit/Latn_Kana.txt
+++ b/icu4c/source/data/translit/Latn_Kana.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latn_Kana.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latn_Knda.txt b/icu4c/source/data/translit/Latn_Knda.txt
index e16d43d..ae2a033 100644
--- a/icu4c/source/data/translit/Latn_Knda.txt
+++ b/icu4c/source/data/translit/Latn_Knda.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latn_Knda.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latn_Mlym.txt b/icu4c/source/data/translit/Latn_Mlym.txt
index 642fd52..792a5ce 100644
--- a/icu4c/source/data/translit/Latn_Mlym.txt
+++ b/icu4c/source/data/translit/Latn_Mlym.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latn_Mlym.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latn_Orya.txt b/icu4c/source/data/translit/Latn_Orya.txt
index 51aa637..5320037 100644
--- a/icu4c/source/data/translit/Latn_Orya.txt
+++ b/icu4c/source/data/translit/Latn_Orya.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latn_Orya.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latn_Taml.txt b/icu4c/source/data/translit/Latn_Taml.txt
index 42e59f6..7e0d6dd 100644
--- a/icu4c/source/data/translit/Latn_Taml.txt
+++ b/icu4c/source/data/translit/Latn_Taml.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latn_Taml.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latn_Telu.txt b/icu4c/source/data/translit/Latn_Telu.txt
index 50b8873..0631d2c 100644
--- a/icu4c/source/data/translit/Latn_Telu.txt
+++ b/icu4c/source/data/translit/Latn_Telu.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latn_Telu.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latn_Thaa.txt b/icu4c/source/data/translit/Latn_Thaa.txt
index 15a4377..8548d1e 100644
--- a/icu4c/source/data/translit/Latn_Thaa.txt
+++ b/icu4c/source/data/translit/Latn_Thaa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latn_Thaa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Latn_Thai.txt b/icu4c/source/data/translit/Latn_Thai.txt
index f8cb5fc..daaed60 100644
--- a/icu4c/source/data/translit/Latn_Thai.txt
+++ b/icu4c/source/data/translit/Latn_Thai.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Latn_Thai.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Malayalam_InterIndic.txt b/icu4c/source/data/translit/Malayalam_InterIndic.txt
index cd28259..6554966 100644
--- a/icu4c/source/data/translit/Malayalam_InterIndic.txt
+++ b/icu4c/source/data/translit/Malayalam_InterIndic.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Malayalam_InterIndic.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Mlym_Arab.txt b/icu4c/source/data/translit/Mlym_Arab.txt
index 59dffbf..e7644d8 100644
--- a/icu4c/source/data/translit/Mlym_Arab.txt
+++ b/icu4c/source/data/translit/Mlym_Arab.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Mlym_Arab.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Mlym_Beng.txt b/icu4c/source/data/translit/Mlym_Beng.txt
index 14409f8..8be5e26 100644
--- a/icu4c/source/data/translit/Mlym_Beng.txt
+++ b/icu4c/source/data/translit/Mlym_Beng.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Mlym_Beng.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Mlym_Deva.txt b/icu4c/source/data/translit/Mlym_Deva.txt
index 7a2f938..58d7329 100644
--- a/icu4c/source/data/translit/Mlym_Deva.txt
+++ b/icu4c/source/data/translit/Mlym_Deva.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Mlym_Deva.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Mlym_Gujr.txt b/icu4c/source/data/translit/Mlym_Gujr.txt
index 95dd8cb..2a14e0e 100644
--- a/icu4c/source/data/translit/Mlym_Gujr.txt
+++ b/icu4c/source/data/translit/Mlym_Gujr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Mlym_Gujr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Mlym_Guru.txt b/icu4c/source/data/translit/Mlym_Guru.txt
index 87fcdfe..35ec6b7 100644
--- a/icu4c/source/data/translit/Mlym_Guru.txt
+++ b/icu4c/source/data/translit/Mlym_Guru.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Mlym_Guru.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Mlym_Knda.txt b/icu4c/source/data/translit/Mlym_Knda.txt
index 5ebafc2..e1d4ce1 100644
--- a/icu4c/source/data/translit/Mlym_Knda.txt
+++ b/icu4c/source/data/translit/Mlym_Knda.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Mlym_Knda.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Mlym_Latn.txt b/icu4c/source/data/translit/Mlym_Latn.txt
index da902f1..de65e42 100644
--- a/icu4c/source/data/translit/Mlym_Latn.txt
+++ b/icu4c/source/data/translit/Mlym_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Mlym_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Mlym_Orya.txt b/icu4c/source/data/translit/Mlym_Orya.txt
index c9ee9b4..89b2f79 100644
--- a/icu4c/source/data/translit/Mlym_Orya.txt
+++ b/icu4c/source/data/translit/Mlym_Orya.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Mlym_Orya.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Mlym_Taml.txt b/icu4c/source/data/translit/Mlym_Taml.txt
index 1a796a7..b3d29c7 100644
--- a/icu4c/source/data/translit/Mlym_Taml.txt
+++ b/icu4c/source/data/translit/Mlym_Taml.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Mlym_Taml.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Mlym_Telu.txt b/icu4c/source/data/translit/Mlym_Telu.txt
index af4d013..2824e2a 100644
--- a/icu4c/source/data/translit/Mlym_Telu.txt
+++ b/icu4c/source/data/translit/Mlym_Telu.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Mlym_Telu.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Mlym_ur.txt b/icu4c/source/data/translit/Mlym_ur.txt
index aca234a..e8c79c4 100644
--- a/icu4c/source/data/translit/Mlym_ur.txt
+++ b/icu4c/source/data/translit/Mlym_ur.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Mlym_ur.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Oriya_InterIndic.txt b/icu4c/source/data/translit/Oriya_InterIndic.txt
index 47b5065..59bc980 100644
--- a/icu4c/source/data/translit/Oriya_InterIndic.txt
+++ b/icu4c/source/data/translit/Oriya_InterIndic.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Oriya_InterIndic.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Orya_Arab.txt b/icu4c/source/data/translit/Orya_Arab.txt
index 7ab87e1..2fe3eb7 100644
--- a/icu4c/source/data/translit/Orya_Arab.txt
+++ b/icu4c/source/data/translit/Orya_Arab.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Orya_Arab.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Orya_Beng.txt b/icu4c/source/data/translit/Orya_Beng.txt
index c1a25e7..d64e228 100644
--- a/icu4c/source/data/translit/Orya_Beng.txt
+++ b/icu4c/source/data/translit/Orya_Beng.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Orya_Beng.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Orya_Deva.txt b/icu4c/source/data/translit/Orya_Deva.txt
index 1f553fe..a4c5c75 100644
--- a/icu4c/source/data/translit/Orya_Deva.txt
+++ b/icu4c/source/data/translit/Orya_Deva.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Orya_Deva.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Orya_Gujr.txt b/icu4c/source/data/translit/Orya_Gujr.txt
index 8bcdea8..474cdac 100644
--- a/icu4c/source/data/translit/Orya_Gujr.txt
+++ b/icu4c/source/data/translit/Orya_Gujr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Orya_Gujr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Orya_Guru.txt b/icu4c/source/data/translit/Orya_Guru.txt
index c20ca59..4338aec 100644
--- a/icu4c/source/data/translit/Orya_Guru.txt
+++ b/icu4c/source/data/translit/Orya_Guru.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Orya_Guru.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Orya_Knda.txt b/icu4c/source/data/translit/Orya_Knda.txt
index 9145380..61da784 100644
--- a/icu4c/source/data/translit/Orya_Knda.txt
+++ b/icu4c/source/data/translit/Orya_Knda.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Orya_Knda.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Orya_Latn.txt b/icu4c/source/data/translit/Orya_Latn.txt
index 53f533f..345de68 100644
--- a/icu4c/source/data/translit/Orya_Latn.txt
+++ b/icu4c/source/data/translit/Orya_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Orya_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Orya_Mlym.txt b/icu4c/source/data/translit/Orya_Mlym.txt
index 50ea6df..212dca9 100644
--- a/icu4c/source/data/translit/Orya_Mlym.txt
+++ b/icu4c/source/data/translit/Orya_Mlym.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Orya_Mlym.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Orya_Taml.txt b/icu4c/source/data/translit/Orya_Taml.txt
index bb6e238..6de5471 100644
--- a/icu4c/source/data/translit/Orya_Taml.txt
+++ b/icu4c/source/data/translit/Orya_Taml.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Orya_Taml.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Orya_Telu.txt b/icu4c/source/data/translit/Orya_Telu.txt
index 632994f..7b3efb9 100644
--- a/icu4c/source/data/translit/Orya_Telu.txt
+++ b/icu4c/source/data/translit/Orya_Telu.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Orya_Telu.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Orya_ur.txt b/icu4c/source/data/translit/Orya_ur.txt
index 9034966..6c8b7a0 100644
--- a/icu4c/source/data/translit/Orya_ur.txt
+++ b/icu4c/source/data/translit/Orya_ur.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Orya_ur.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Pinyin_NumericPinyin.txt b/icu4c/source/data/translit/Pinyin_NumericPinyin.txt
index 0653b9a..1ab98c1 100644
--- a/icu4c/source/data/translit/Pinyin_NumericPinyin.txt
+++ b/icu4c/source/data/translit/Pinyin_NumericPinyin.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Pinyin_NumericPinyin.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Syrc_Latn.txt b/icu4c/source/data/translit/Syrc_Latn.txt
index 94605e0..10f73e2 100644
--- a/icu4c/source/data/translit/Syrc_Latn.txt
+++ b/icu4c/source/data/translit/Syrc_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Syrc_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Tamil_InterIndic.txt b/icu4c/source/data/translit/Tamil_InterIndic.txt
index 4af41e1..aef7de6 100644
--- a/icu4c/source/data/translit/Tamil_InterIndic.txt
+++ b/icu4c/source/data/translit/Tamil_InterIndic.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Tamil_InterIndic.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Taml_Arab.txt b/icu4c/source/data/translit/Taml_Arab.txt
index 189a4f7..fd6cb11 100644
--- a/icu4c/source/data/translit/Taml_Arab.txt
+++ b/icu4c/source/data/translit/Taml_Arab.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Taml_Arab.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Taml_Beng.txt b/icu4c/source/data/translit/Taml_Beng.txt
index 6459d7a..2db2588 100644
--- a/icu4c/source/data/translit/Taml_Beng.txt
+++ b/icu4c/source/data/translit/Taml_Beng.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Taml_Beng.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Taml_Deva.txt b/icu4c/source/data/translit/Taml_Deva.txt
index e6616ea..0a483c1 100644
--- a/icu4c/source/data/translit/Taml_Deva.txt
+++ b/icu4c/source/data/translit/Taml_Deva.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Taml_Deva.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Taml_Gujr.txt b/icu4c/source/data/translit/Taml_Gujr.txt
index f00dbf0..feeef99 100644
--- a/icu4c/source/data/translit/Taml_Gujr.txt
+++ b/icu4c/source/data/translit/Taml_Gujr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Taml_Gujr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Taml_Guru.txt b/icu4c/source/data/translit/Taml_Guru.txt
index 762d857..060e085 100644
--- a/icu4c/source/data/translit/Taml_Guru.txt
+++ b/icu4c/source/data/translit/Taml_Guru.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Taml_Guru.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Taml_Knda.txt b/icu4c/source/data/translit/Taml_Knda.txt
index 59ee0eb..c8dd77c 100644
--- a/icu4c/source/data/translit/Taml_Knda.txt
+++ b/icu4c/source/data/translit/Taml_Knda.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Taml_Knda.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Taml_Latn.txt b/icu4c/source/data/translit/Taml_Latn.txt
index eb3d2eb..f6572b8 100644
--- a/icu4c/source/data/translit/Taml_Latn.txt
+++ b/icu4c/source/data/translit/Taml_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Taml_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Taml_Mlym.txt b/icu4c/source/data/translit/Taml_Mlym.txt
index d3680c4..b29bc7d 100644
--- a/icu4c/source/data/translit/Taml_Mlym.txt
+++ b/icu4c/source/data/translit/Taml_Mlym.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Taml_Mlym.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Taml_Orya.txt b/icu4c/source/data/translit/Taml_Orya.txt
index 6db28c5..a010d09 100644
--- a/icu4c/source/data/translit/Taml_Orya.txt
+++ b/icu4c/source/data/translit/Taml_Orya.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Taml_Orya.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Taml_Telu.txt b/icu4c/source/data/translit/Taml_Telu.txt
index 185a8b9..9f7d6ab 100644
--- a/icu4c/source/data/translit/Taml_Telu.txt
+++ b/icu4c/source/data/translit/Taml_Telu.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Taml_Telu.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Taml_ur.txt b/icu4c/source/data/translit/Taml_ur.txt
index 26b2f47..f8f428f 100644
--- a/icu4c/source/data/translit/Taml_ur.txt
+++ b/icu4c/source/data/translit/Taml_ur.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Taml_ur.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Telu_Arab.txt b/icu4c/source/data/translit/Telu_Arab.txt
index c44e7b5..8a9aa4d 100644
--- a/icu4c/source/data/translit/Telu_Arab.txt
+++ b/icu4c/source/data/translit/Telu_Arab.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Telu_Arab.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Telu_Beng.txt b/icu4c/source/data/translit/Telu_Beng.txt
index a8c9d33..feddb1a 100644
--- a/icu4c/source/data/translit/Telu_Beng.txt
+++ b/icu4c/source/data/translit/Telu_Beng.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Telu_Beng.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Telu_Deva.txt b/icu4c/source/data/translit/Telu_Deva.txt
index 4a43a53..dddb269 100644
--- a/icu4c/source/data/translit/Telu_Deva.txt
+++ b/icu4c/source/data/translit/Telu_Deva.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Telu_Deva.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Telu_Gujr.txt b/icu4c/source/data/translit/Telu_Gujr.txt
index 0748484..f87d0d0 100644
--- a/icu4c/source/data/translit/Telu_Gujr.txt
+++ b/icu4c/source/data/translit/Telu_Gujr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Telu_Gujr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Telu_Guru.txt b/icu4c/source/data/translit/Telu_Guru.txt
index 02fec5d..99db851 100644
--- a/icu4c/source/data/translit/Telu_Guru.txt
+++ b/icu4c/source/data/translit/Telu_Guru.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Telu_Guru.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Telu_Knda.txt b/icu4c/source/data/translit/Telu_Knda.txt
index cf75420..63f257b 100644
--- a/icu4c/source/data/translit/Telu_Knda.txt
+++ b/icu4c/source/data/translit/Telu_Knda.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Telu_Knda.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Telu_Latn.txt b/icu4c/source/data/translit/Telu_Latn.txt
index 8c274de..681d227 100644
--- a/icu4c/source/data/translit/Telu_Latn.txt
+++ b/icu4c/source/data/translit/Telu_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Telu_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Telu_Mlym.txt b/icu4c/source/data/translit/Telu_Mlym.txt
index cfef84e..667d73b 100644
--- a/icu4c/source/data/translit/Telu_Mlym.txt
+++ b/icu4c/source/data/translit/Telu_Mlym.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Telu_Mlym.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Telu_Orya.txt b/icu4c/source/data/translit/Telu_Orya.txt
index 66be8e8..a1fbcbc 100644
--- a/icu4c/source/data/translit/Telu_Orya.txt
+++ b/icu4c/source/data/translit/Telu_Orya.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Telu_Orya.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Telu_Taml.txt b/icu4c/source/data/translit/Telu_Taml.txt
index 3acc562..1a29ac2 100644
--- a/icu4c/source/data/translit/Telu_Taml.txt
+++ b/icu4c/source/data/translit/Telu_Taml.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Telu_Taml.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Telu_ur.txt b/icu4c/source/data/translit/Telu_ur.txt
index 042ee21..a00760e 100644
--- a/icu4c/source/data/translit/Telu_ur.txt
+++ b/icu4c/source/data/translit/Telu_ur.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Telu_ur.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Telugu_InterIndic.txt b/icu4c/source/data/translit/Telugu_InterIndic.txt
index f22d563..c470576 100644
--- a/icu4c/source/data/translit/Telugu_InterIndic.txt
+++ b/icu4c/source/data/translit/Telugu_InterIndic.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Telugu_InterIndic.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ThaiLogical_Latin.txt b/icu4c/source/data/translit/ThaiLogical_Latin.txt
index c063e79..36dbe44 100644
--- a/icu4c/source/data/translit/ThaiLogical_Latin.txt
+++ b/icu4c/source/data/translit/ThaiLogical_Latin.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ThaiLogical_Latin.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Thai_Latn.txt b/icu4c/source/data/translit/Thai_Latn.txt
index d8a5bf0..e3cd839 100644
--- a/icu4c/source/data/translit/Thai_Latn.txt
+++ b/icu4c/source/data/translit/Thai_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Thai_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Thai_ThaiLogical.txt b/icu4c/source/data/translit/Thai_ThaiLogical.txt
index e7045cd..c7a4b5f 100644
--- a/icu4c/source/data/translit/Thai_ThaiLogical.txt
+++ b/icu4c/source/data/translit/Thai_ThaiLogical.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Thai_ThaiLogical.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Thai_ThaiSemi.txt b/icu4c/source/data/translit/Thai_ThaiSemi.txt
index 999d022..c469faa 100644
--- a/icu4c/source/data/translit/Thai_ThaiSemi.txt
+++ b/icu4c/source/data/translit/Thai_ThaiSemi.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Thai_ThaiSemi.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/Zawgyi_my.txt b/icu4c/source/data/translit/Zawgyi_my.txt
index 6bd51ab..e9b6024 100644
--- a/icu4c/source/data/translit/Zawgyi_my.txt
+++ b/icu4c/source/data/translit/Zawgyi_my.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: Zawgyi_my.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/am_am_FONIPA.txt b/icu4c/source/data/translit/am_am_FONIPA.txt
index a3390db..011b8d7 100644
--- a/icu4c/source/data/translit/am_am_FONIPA.txt
+++ b/icu4c/source/data/translit/am_am_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: am_am_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/am_am_Latn_BGN.txt b/icu4c/source/data/translit/am_am_Latn_BGN.txt
index 76e0579..1561c63 100644
--- a/icu4c/source/data/translit/am_am_Latn_BGN.txt
+++ b/icu4c/source/data/translit/am_am_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: am_am_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/am_ar.txt b/icu4c/source/data/translit/am_ar.txt
index c5e5587..60daf9d 100644
--- a/icu4c/source/data/translit/am_ar.txt
+++ b/icu4c/source/data/translit/am_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: am_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/am_chr.txt b/icu4c/source/data/translit/am_chr.txt
index f3be887..97e0a8f 100644
--- a/icu4c/source/data/translit/am_chr.txt
+++ b/icu4c/source/data/translit/am_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: am_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/am_fa.txt b/icu4c/source/data/translit/am_fa.txt
index e5a27c7..8252788 100644
--- a/icu4c/source/data/translit/am_fa.txt
+++ b/icu4c/source/data/translit/am_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: am_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ar_ar_Latn_BGN.txt b/icu4c/source/data/translit/ar_ar_Latn_BGN.txt
index ecd9363..198e511 100644
--- a/icu4c/source/data/translit/ar_ar_Latn_BGN.txt
+++ b/icu4c/source/data/translit/ar_ar_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ar_ar_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/az_Cyrl_az_BGN.txt b/icu4c/source/data/translit/az_Cyrl_az_BGN.txt
index d8e6d3c..bce445e 100644
--- a/icu4c/source/data/translit/az_Cyrl_az_BGN.txt
+++ b/icu4c/source/data/translit/az_Cyrl_az_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: az_Cyrl_az_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/az_Lower.txt b/icu4c/source/data/translit/az_Lower.txt
index ac32a0b..c33f6d4 100644
--- a/icu4c/source/data/translit/az_Lower.txt
+++ b/icu4c/source/data/translit/az_Lower.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: az_Lower.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/az_Title.txt b/icu4c/source/data/translit/az_Title.txt
index f22224c..8dfa398 100644
--- a/icu4c/source/data/translit/az_Title.txt
+++ b/icu4c/source/data/translit/az_Title.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: az_Title.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/az_Upper.txt b/icu4c/source/data/translit/az_Upper.txt
index 38855c1..29e6f85 100644
--- a/icu4c/source/data/translit/az_Upper.txt
+++ b/icu4c/source/data/translit/az_Upper.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: az_Upper.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/be_be_Latn_BGN.txt b/icu4c/source/data/translit/be_be_Latn_BGN.txt
index 83cc37c..f4d2034 100644
--- a/icu4c/source/data/translit/be_be_Latn_BGN.txt
+++ b/icu4c/source/data/translit/be_be_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: be_be_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/bg_bg_Latn_BGN.txt b/icu4c/source/data/translit/bg_bg_Latn_BGN.txt
index d8351ce..17afc48 100644
--- a/icu4c/source/data/translit/bg_bg_Latn_BGN.txt
+++ b/icu4c/source/data/translit/bg_bg_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: bg_bg_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/blt_blt_FONIPA.txt b/icu4c/source/data/translit/blt_blt_FONIPA.txt
index 0298865..dbe1c71 100644
--- a/icu4c/source/data/translit/blt_blt_FONIPA.txt
+++ b/icu4c/source/data/translit/blt_blt_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: blt_blt_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ch_am.txt b/icu4c/source/data/translit/ch_am.txt
index 4f6405b..5f41da8 100644
--- a/icu4c/source/data/translit/ch_am.txt
+++ b/icu4c/source/data/translit/ch_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ch_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ch_ar.txt b/icu4c/source/data/translit/ch_ar.txt
index e8861dc..1701c98 100644
--- a/icu4c/source/data/translit/ch_ar.txt
+++ b/icu4c/source/data/translit/ch_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ch_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ch_ch_FONIPA.txt b/icu4c/source/data/translit/ch_ch_FONIPA.txt
index 5455424..e569640 100644
--- a/icu4c/source/data/translit/ch_ch_FONIPA.txt
+++ b/icu4c/source/data/translit/ch_ch_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ch_ch_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ch_chr.txt b/icu4c/source/data/translit/ch_chr.txt
index 82d5762..6d37578 100644
--- a/icu4c/source/data/translit/ch_chr.txt
+++ b/icu4c/source/data/translit/ch_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ch_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ch_fa.txt b/icu4c/source/data/translit/ch_fa.txt
index 250428f..f3f3c6e 100644
--- a/icu4c/source/data/translit/ch_fa.txt
+++ b/icu4c/source/data/translit/ch_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ch_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/chr_chr_FONIPA.txt b/icu4c/source/data/translit/chr_chr_FONIPA.txt
index c2d5a75..539be15 100644
--- a/icu4c/source/data/translit/chr_chr_FONIPA.txt
+++ b/icu4c/source/data/translit/chr_chr_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: chr_chr_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/cs_FONIPA_ja.txt b/icu4c/source/data/translit/cs_FONIPA_ja.txt
index f4ee08e..c9ab8a2 100644
--- a/icu4c/source/data/translit/cs_FONIPA_ja.txt
+++ b/icu4c/source/data/translit/cs_FONIPA_ja.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: cs_FONIPA_ja.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/cs_FONIPA_ko.txt b/icu4c/source/data/translit/cs_FONIPA_ko.txt
index bad8f84..8303b5c 100644
--- a/icu4c/source/data/translit/cs_FONIPA_ko.txt
+++ b/icu4c/source/data/translit/cs_FONIPA_ko.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: cs_FONIPA_ko.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/cs_am.txt b/icu4c/source/data/translit/cs_am.txt
index d3f8cd0..e577dda 100644
--- a/icu4c/source/data/translit/cs_am.txt
+++ b/icu4c/source/data/translit/cs_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: cs_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/cs_ar.txt b/icu4c/source/data/translit/cs_ar.txt
index e8a1150..b4f9044 100644
--- a/icu4c/source/data/translit/cs_ar.txt
+++ b/icu4c/source/data/translit/cs_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: cs_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/cs_chr.txt b/icu4c/source/data/translit/cs_chr.txt
index 60b7704..8a34c5b 100644
--- a/icu4c/source/data/translit/cs_chr.txt
+++ b/icu4c/source/data/translit/cs_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: cs_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/cs_cs_FONIPA.txt b/icu4c/source/data/translit/cs_cs_FONIPA.txt
index 01236ef..40ae800 100644
--- a/icu4c/source/data/translit/cs_cs_FONIPA.txt
+++ b/icu4c/source/data/translit/cs_cs_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: cs_cs_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/cs_fa.txt b/icu4c/source/data/translit/cs_fa.txt
index 4cd6c90..79dffb3 100644
--- a/icu4c/source/data/translit/cs_fa.txt
+++ b/icu4c/source/data/translit/cs_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: cs_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/cs_ja.txt b/icu4c/source/data/translit/cs_ja.txt
index 51ab828..352e886 100644
--- a/icu4c/source/data/translit/cs_ja.txt
+++ b/icu4c/source/data/translit/cs_ja.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: cs_ja.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/cs_ko.txt b/icu4c/source/data/translit/cs_ko.txt
index 04b4e28..4eec68c 100644
--- a/icu4c/source/data/translit/cs_ko.txt
+++ b/icu4c/source/data/translit/cs_ko.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: cs_ko.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/cy_cy_FONIPA.txt b/icu4c/source/data/translit/cy_cy_FONIPA.txt
index 7df84ba..60bf957 100644
--- a/icu4c/source/data/translit/cy_cy_FONIPA.txt
+++ b/icu4c/source/data/translit/cy_cy_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: cy_cy_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/de_ASCII.txt b/icu4c/source/data/translit/de_ASCII.txt
index 614240b..6371021 100644
--- a/icu4c/source/data/translit/de_ASCII.txt
+++ b/icu4c/source/data/translit/de_ASCII.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: de_ASCII.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/dsb_dsb_FONIPA.txt b/icu4c/source/data/translit/dsb_dsb_FONIPA.txt
index da70c77..6ed5319 100644
--- a/icu4c/source/data/translit/dsb_dsb_FONIPA.txt
+++ b/icu4c/source/data/translit/dsb_dsb_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: dsb_dsb_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/dv_dv_Latn_BGN.txt b/icu4c/source/data/translit/dv_dv_Latn_BGN.txt
index 45f0d12..4eec469 100644
--- a/icu4c/source/data/translit/dv_dv_Latn_BGN.txt
+++ b/icu4c/source/data/translit/dv_dv_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: dv_dv_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/el_Lower.txt b/icu4c/source/data/translit/el_Lower.txt
index 06eaf40..54c6d11 100644
--- a/icu4c/source/data/translit/el_Lower.txt
+++ b/icu4c/source/data/translit/el_Lower.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: el_Lower.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/el_Title.txt b/icu4c/source/data/translit/el_Title.txt
index 95b4fe9..f7fdd3a 100644
--- a/icu4c/source/data/translit/el_Title.txt
+++ b/icu4c/source/data/translit/el_Title.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: el_Title.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/el_Upper.txt b/icu4c/source/data/translit/el_Upper.txt
index 3c3ff80..e0565a1 100644
--- a/icu4c/source/data/translit/el_Upper.txt
+++ b/icu4c/source/data/translit/el_Upper.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: el_Upper.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/el_el_Latn_BGN.txt b/icu4c/source/data/translit/el_el_Latn_BGN.txt
index 6d7fbaf..75dff62 100644
--- a/icu4c/source/data/translit/el_el_Latn_BGN.txt
+++ b/icu4c/source/data/translit/el_el_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: el_el_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/eo_am.txt b/icu4c/source/data/translit/eo_am.txt
index 826374f..00fca9e 100644
--- a/icu4c/source/data/translit/eo_am.txt
+++ b/icu4c/source/data/translit/eo_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: eo_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/eo_ar.txt b/icu4c/source/data/translit/eo_ar.txt
index 6d19d83..b926e70 100644
--- a/icu4c/source/data/translit/eo_ar.txt
+++ b/icu4c/source/data/translit/eo_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: eo_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/eo_chr.txt b/icu4c/source/data/translit/eo_chr.txt
index 787b3a1..2b9eed3 100644
--- a/icu4c/source/data/translit/eo_chr.txt
+++ b/icu4c/source/data/translit/eo_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: eo_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/eo_eo_FONIPA.txt b/icu4c/source/data/translit/eo_eo_FONIPA.txt
index 7e64b42..c7b40e0 100644
--- a/icu4c/source/data/translit/eo_eo_FONIPA.txt
+++ b/icu4c/source/data/translit/eo_eo_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: eo_eo_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/eo_fa.txt b/icu4c/source/data/translit/eo_fa.txt
index 422d043..dcec49a 100644
--- a/icu4c/source/data/translit/eo_fa.txt
+++ b/icu4c/source/data/translit/eo_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: eo_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/es_419_am.txt b/icu4c/source/data/translit/es_419_am.txt
index 211092d..3d8bfef 100644
--- a/icu4c/source/data/translit/es_419_am.txt
+++ b/icu4c/source/data/translit/es_419_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: es_419_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/es_419_ar.txt b/icu4c/source/data/translit/es_419_ar.txt
index 7bfdca3..7e7142e 100644
--- a/icu4c/source/data/translit/es_419_ar.txt
+++ b/icu4c/source/data/translit/es_419_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: es_419_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/es_419_chr.txt b/icu4c/source/data/translit/es_419_chr.txt
index b3487a5..094331f 100644
--- a/icu4c/source/data/translit/es_419_chr.txt
+++ b/icu4c/source/data/translit/es_419_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: es_419_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/es_419_fa.txt b/icu4c/source/data/translit/es_419_fa.txt
index 1e1015e..ef539f9 100644
--- a/icu4c/source/data/translit/es_419_fa.txt
+++ b/icu4c/source/data/translit/es_419_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: es_419_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/es_419_ja.txt b/icu4c/source/data/translit/es_419_ja.txt
index 13cb779..12e590a 100644
--- a/icu4c/source/data/translit/es_419_ja.txt
+++ b/icu4c/source/data/translit/es_419_ja.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: es_419_ja.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/es_419_zh.txt b/icu4c/source/data/translit/es_419_zh.txt
index d56702b..4ca283d 100644
--- a/icu4c/source/data/translit/es_419_zh.txt
+++ b/icu4c/source/data/translit/es_419_zh.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: es_419_zh.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/es_FONIPA_am.txt b/icu4c/source/data/translit/es_FONIPA_am.txt
index 63fb22b..b111a65 100644
--- a/icu4c/source/data/translit/es_FONIPA_am.txt
+++ b/icu4c/source/data/translit/es_FONIPA_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: es_FONIPA_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/es_FONIPA_es_419_FONIPA.txt b/icu4c/source/data/translit/es_FONIPA_es_419_FONIPA.txt
index 12b46fe..da34320 100644
--- a/icu4c/source/data/translit/es_FONIPA_es_419_FONIPA.txt
+++ b/icu4c/source/data/translit/es_FONIPA_es_419_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: es_FONIPA_es_419_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/es_FONIPA_ja.txt b/icu4c/source/data/translit/es_FONIPA_ja.txt
index 22277b3..761fea3 100644
--- a/icu4c/source/data/translit/es_FONIPA_ja.txt
+++ b/icu4c/source/data/translit/es_FONIPA_ja.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: es_FONIPA_ja.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/es_FONIPA_zh.txt b/icu4c/source/data/translit/es_FONIPA_zh.txt
index e7798c9..dfc33be 100644
--- a/icu4c/source/data/translit/es_FONIPA_zh.txt
+++ b/icu4c/source/data/translit/es_FONIPA_zh.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: es_FONIPA_zh.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/es_am.txt b/icu4c/source/data/translit/es_am.txt
index 431602d..a9dc357 100644
--- a/icu4c/source/data/translit/es_am.txt
+++ b/icu4c/source/data/translit/es_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: es_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/es_ar.txt b/icu4c/source/data/translit/es_ar.txt
index 87a9e86..478b23c 100644
--- a/icu4c/source/data/translit/es_ar.txt
+++ b/icu4c/source/data/translit/es_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: es_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/es_chr.txt b/icu4c/source/data/translit/es_chr.txt
index 96b0b74..c48c26c 100644
--- a/icu4c/source/data/translit/es_chr.txt
+++ b/icu4c/source/data/translit/es_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: es_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/es_es_FONIPA.txt b/icu4c/source/data/translit/es_es_FONIPA.txt
index 89196cf..a78c59f 100644
--- a/icu4c/source/data/translit/es_es_FONIPA.txt
+++ b/icu4c/source/data/translit/es_es_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: es_es_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/es_fa.txt b/icu4c/source/data/translit/es_fa.txt
index dedb23a..9df0448 100644
--- a/icu4c/source/data/translit/es_fa.txt
+++ b/icu4c/source/data/translit/es_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: es_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/es_ja.txt b/icu4c/source/data/translit/es_ja.txt
index d50a613..9125a70 100644
--- a/icu4c/source/data/translit/es_ja.txt
+++ b/icu4c/source/data/translit/es_ja.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: es_ja.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/es_zh.txt b/icu4c/source/data/translit/es_zh.txt
index 17f4b5a..815a56b 100644
--- a/icu4c/source/data/translit/es_zh.txt
+++ b/icu4c/source/data/translit/es_zh.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: es_zh.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/fa_fa_FONIPA.txt b/icu4c/source/data/translit/fa_fa_FONIPA.txt
index d0f8097..e8dd702 100644
--- a/icu4c/source/data/translit/fa_fa_FONIPA.txt
+++ b/icu4c/source/data/translit/fa_fa_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: fa_fa_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/fa_fa_Latn_BGN.txt b/icu4c/source/data/translit/fa_fa_Latn_BGN.txt
index 0fd2d11..6b47cd1 100644
--- a/icu4c/source/data/translit/fa_fa_Latn_BGN.txt
+++ b/icu4c/source/data/translit/fa_fa_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: fa_fa_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ha_ha_NE.txt b/icu4c/source/data/translit/ha_ha_NE.txt
index 92aa80d..e8305da 100644
--- a/icu4c/source/data/translit/ha_ha_NE.txt
+++ b/icu4c/source/data/translit/ha_ha_NE.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ha_ha_NE.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/he_he_Latn_BGN.txt b/icu4c/source/data/translit/he_he_Latn_BGN.txt
index fc971db..fd79947 100644
--- a/icu4c/source/data/translit/he_he_Latn_BGN.txt
+++ b/icu4c/source/data/translit/he_he_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: he_he_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/hy_AREVMDA_am.txt b/icu4c/source/data/translit/hy_AREVMDA_am.txt
index e3440af..71a518d 100644
--- a/icu4c/source/data/translit/hy_AREVMDA_am.txt
+++ b/icu4c/source/data/translit/hy_AREVMDA_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: hy_AREVMDA_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/hy_AREVMDA_ar.txt b/icu4c/source/data/translit/hy_AREVMDA_ar.txt
index 9e7421f..bb351ac 100644
--- a/icu4c/source/data/translit/hy_AREVMDA_ar.txt
+++ b/icu4c/source/data/translit/hy_AREVMDA_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: hy_AREVMDA_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/hy_AREVMDA_chr.txt b/icu4c/source/data/translit/hy_AREVMDA_chr.txt
index 8c10c15..65e0272 100644
--- a/icu4c/source/data/translit/hy_AREVMDA_chr.txt
+++ b/icu4c/source/data/translit/hy_AREVMDA_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: hy_AREVMDA_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/hy_AREVMDA_fa.txt b/icu4c/source/data/translit/hy_AREVMDA_fa.txt
index eb67e53..68f217a 100644
--- a/icu4c/source/data/translit/hy_AREVMDA_fa.txt
+++ b/icu4c/source/data/translit/hy_AREVMDA_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: hy_AREVMDA_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/hy_AREVMDA_hy_AREVMDA_FONIPA.txt b/icu4c/source/data/translit/hy_AREVMDA_hy_AREVMDA_FONIPA.txt
index 2b3018a..061ec87 100644
--- a/icu4c/source/data/translit/hy_AREVMDA_hy_AREVMDA_FONIPA.txt
+++ b/icu4c/source/data/translit/hy_AREVMDA_hy_AREVMDA_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: hy_AREVMDA_hy_AREVMDA_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/hy_am.txt b/icu4c/source/data/translit/hy_am.txt
index 024a909..9f8eb20 100644
--- a/icu4c/source/data/translit/hy_am.txt
+++ b/icu4c/source/data/translit/hy_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: hy_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/hy_ar.txt b/icu4c/source/data/translit/hy_ar.txt
index dceab60..36d27b8 100644
--- a/icu4c/source/data/translit/hy_ar.txt
+++ b/icu4c/source/data/translit/hy_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: hy_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/hy_chr.txt b/icu4c/source/data/translit/hy_chr.txt
index 969efe9..0ac6916 100644
--- a/icu4c/source/data/translit/hy_chr.txt
+++ b/icu4c/source/data/translit/hy_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: hy_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/hy_fa.txt b/icu4c/source/data/translit/hy_fa.txt
index 141ec3c..fa8fab9 100644
--- a/icu4c/source/data/translit/hy_fa.txt
+++ b/icu4c/source/data/translit/hy_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: hy_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/hy_hy_FONIPA.txt b/icu4c/source/data/translit/hy_hy_FONIPA.txt
index be93da2..6983400 100644
--- a/icu4c/source/data/translit/hy_hy_FONIPA.txt
+++ b/icu4c/source/data/translit/hy_hy_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: hy_hy_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/hy_hy_Latn_BGN.txt b/icu4c/source/data/translit/hy_hy_Latn_BGN.txt
index 3538737..47abcab 100644
--- a/icu4c/source/data/translit/hy_hy_Latn_BGN.txt
+++ b/icu4c/source/data/translit/hy_hy_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: hy_hy_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ia_am.txt b/icu4c/source/data/translit/ia_am.txt
index c77d89a..fbe2b23 100644
--- a/icu4c/source/data/translit/ia_am.txt
+++ b/icu4c/source/data/translit/ia_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ia_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ia_ar.txt b/icu4c/source/data/translit/ia_ar.txt
index c000863..8c4b17b 100644
--- a/icu4c/source/data/translit/ia_ar.txt
+++ b/icu4c/source/data/translit/ia_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ia_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ia_chr.txt b/icu4c/source/data/translit/ia_chr.txt
index a3bbda7..6a9f94d 100644
--- a/icu4c/source/data/translit/ia_chr.txt
+++ b/icu4c/source/data/translit/ia_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ia_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ia_fa.txt b/icu4c/source/data/translit/ia_fa.txt
index 68d5ca7..2a38475 100644
--- a/icu4c/source/data/translit/ia_fa.txt
+++ b/icu4c/source/data/translit/ia_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ia_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ia_ia_FONIPA.txt b/icu4c/source/data/translit/ia_ia_FONIPA.txt
index 48210de..5331e5b 100644
--- a/icu4c/source/data/translit/ia_ia_FONIPA.txt
+++ b/icu4c/source/data/translit/ia_ia_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ia_ia_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/it_am.txt b/icu4c/source/data/translit/it_am.txt
index 9238bb5..cc5723d 100644
--- a/icu4c/source/data/translit/it_am.txt
+++ b/icu4c/source/data/translit/it_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: it_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/it_ja.txt b/icu4c/source/data/translit/it_ja.txt
index 78e3a9b..08ecffc 100644
--- a/icu4c/source/data/translit/it_ja.txt
+++ b/icu4c/source/data/translit/it_ja.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: it_ja.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ja_Hrkt_ja_Latn_BGN.txt b/icu4c/source/data/translit/ja_Hrkt_ja_Latn_BGN.txt
index cb1e87b..b79becc 100644
--- a/icu4c/source/data/translit/ja_Hrkt_ja_Latn_BGN.txt
+++ b/icu4c/source/data/translit/ja_Hrkt_ja_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ja_Hrkt_ja_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ja_Latn_ko.txt b/icu4c/source/data/translit/ja_Latn_ko.txt
index 9c0024f..a123d81 100644
--- a/icu4c/source/data/translit/ja_Latn_ko.txt
+++ b/icu4c/source/data/translit/ja_Latn_ko.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ja_Latn_ko.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ja_Latn_ru.txt b/icu4c/source/data/translit/ja_Latn_ru.txt
index fc2bf52..9d7ec6a 100644
--- a/icu4c/source/data/translit/ja_Latn_ru.txt
+++ b/icu4c/source/data/translit/ja_Latn_ru.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ja_Latn_ru.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ka_ka_Latn_BGN.txt b/icu4c/source/data/translit/ka_ka_Latn_BGN.txt
index 39d352f..6d27cc9 100644
--- a/icu4c/source/data/translit/ka_ka_Latn_BGN.txt
+++ b/icu4c/source/data/translit/ka_ka_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ka_ka_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ka_ka_Latn_BGN_1981.txt b/icu4c/source/data/translit/ka_ka_Latn_BGN_1981.txt
index 9b805bc..f38a66f 100644
--- a/icu4c/source/data/translit/ka_ka_Latn_BGN_1981.txt
+++ b/icu4c/source/data/translit/ka_ka_Latn_BGN_1981.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ka_ka_Latn_BGN_1981.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/kk_am.txt b/icu4c/source/data/translit/kk_am.txt
index 95090da..a7db89f 100644
--- a/icu4c/source/data/translit/kk_am.txt
+++ b/icu4c/source/data/translit/kk_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: kk_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/kk_ar.txt b/icu4c/source/data/translit/kk_ar.txt
index 5cd9b5b..b6e1913 100644
--- a/icu4c/source/data/translit/kk_ar.txt
+++ b/icu4c/source/data/translit/kk_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: kk_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/kk_chr.txt b/icu4c/source/data/translit/kk_chr.txt
index 6503297..068df55 100644
--- a/icu4c/source/data/translit/kk_chr.txt
+++ b/icu4c/source/data/translit/kk_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: kk_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/kk_fa.txt b/icu4c/source/data/translit/kk_fa.txt
index e86fa40..cc8fb45 100644
--- a/icu4c/source/data/translit/kk_fa.txt
+++ b/icu4c/source/data/translit/kk_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: kk_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/kk_kk_FONIPA.txt b/icu4c/source/data/translit/kk_kk_FONIPA.txt
index d5b43db..3a95d4d 100644
--- a/icu4c/source/data/translit/kk_kk_FONIPA.txt
+++ b/icu4c/source/data/translit/kk_kk_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: kk_kk_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/kk_kk_Latn_BGN.txt b/icu4c/source/data/translit/kk_kk_Latn_BGN.txt
index d9ef30e..d69697f 100644
--- a/icu4c/source/data/translit/kk_kk_Latn_BGN.txt
+++ b/icu4c/source/data/translit/kk_kk_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: kk_kk_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ko_ko_Latn_BGN.txt b/icu4c/source/data/translit/ko_ko_Latn_BGN.txt
index ff54254..5749fe0 100644
--- a/icu4c/source/data/translit/ko_ko_Latn_BGN.txt
+++ b/icu4c/source/data/translit/ko_ko_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ko_ko_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ky_am.txt b/icu4c/source/data/translit/ky_am.txt
index d342ddd..e7c3654 100644
--- a/icu4c/source/data/translit/ky_am.txt
+++ b/icu4c/source/data/translit/ky_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ky_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ky_ar.txt b/icu4c/source/data/translit/ky_ar.txt
index d877705..8b48855 100644
--- a/icu4c/source/data/translit/ky_ar.txt
+++ b/icu4c/source/data/translit/ky_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ky_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ky_chr.txt b/icu4c/source/data/translit/ky_chr.txt
index 9193c34..4406894 100644
--- a/icu4c/source/data/translit/ky_chr.txt
+++ b/icu4c/source/data/translit/ky_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ky_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ky_fa.txt b/icu4c/source/data/translit/ky_fa.txt
index 218d9c0..595fefa 100644
--- a/icu4c/source/data/translit/ky_fa.txt
+++ b/icu4c/source/data/translit/ky_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ky_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ky_ky_FONIPA.txt b/icu4c/source/data/translit/ky_ky_FONIPA.txt
index 6aeb879..fec9769 100644
--- a/icu4c/source/data/translit/ky_ky_FONIPA.txt
+++ b/icu4c/source/data/translit/ky_ky_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ky_ky_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ky_ky_Latn_BGN.txt b/icu4c/source/data/translit/ky_ky_Latn_BGN.txt
index 0f14c66..0c7cf13 100644
--- a/icu4c/source/data/translit/ky_ky_Latn_BGN.txt
+++ b/icu4c/source/data/translit/ky_ky_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ky_ky_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/la_la_FONIPA.txt b/icu4c/source/data/translit/la_la_FONIPA.txt
index e2d94e0..c789c5a 100644
--- a/icu4c/source/data/translit/la_la_FONIPA.txt
+++ b/icu4c/source/data/translit/la_la_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: la_la_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/lt_Lower.txt b/icu4c/source/data/translit/lt_Lower.txt
index a90cff9..f9c68ec 100644
--- a/icu4c/source/data/translit/lt_Lower.txt
+++ b/icu4c/source/data/translit/lt_Lower.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: lt_Lower.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/lt_Title.txt b/icu4c/source/data/translit/lt_Title.txt
index 018ba4d..31c6419 100644
--- a/icu4c/source/data/translit/lt_Title.txt
+++ b/icu4c/source/data/translit/lt_Title.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: lt_Title.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/lt_Upper.txt b/icu4c/source/data/translit/lt_Upper.txt
index 644b422..06a7086 100644
--- a/icu4c/source/data/translit/lt_Upper.txt
+++ b/icu4c/source/data/translit/lt_Upper.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: lt_Upper.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/mk_mk_Latn_BGN.txt b/icu4c/source/data/translit/mk_mk_Latn_BGN.txt
index 4dbd999..f7f4ba3 100644
--- a/icu4c/source/data/translit/mk_mk_Latn_BGN.txt
+++ b/icu4c/source/data/translit/mk_mk_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: mk_mk_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/mn_mn_Latn_BGN.txt b/icu4c/source/data/translit/mn_mn_Latn_BGN.txt
index dbed925..57e9b10 100644
--- a/icu4c/source/data/translit/mn_mn_Latn_BGN.txt
+++ b/icu4c/source/data/translit/mn_mn_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: mn_mn_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/mn_mn_Latn_MNS.txt b/icu4c/source/data/translit/mn_mn_Latn_MNS.txt
index 88fe861..1a3a7e1 100644
--- a/icu4c/source/data/translit/mn_mn_Latn_MNS.txt
+++ b/icu4c/source/data/translit/mn_mn_Latn_MNS.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: mn_mn_Latn_MNS.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/my_Zawgyi.txt b/icu4c/source/data/translit/my_Zawgyi.txt
index cd4d90f..068379f 100644
--- a/icu4c/source/data/translit/my_Zawgyi.txt
+++ b/icu4c/source/data/translit/my_Zawgyi.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: my_Zawgyi.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/my_am.txt b/icu4c/source/data/translit/my_am.txt
index 1901f12..93b4f79 100644
--- a/icu4c/source/data/translit/my_am.txt
+++ b/icu4c/source/data/translit/my_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: my_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/my_ar.txt b/icu4c/source/data/translit/my_ar.txt
index 3a1e29e..1d3dde3 100644
--- a/icu4c/source/data/translit/my_ar.txt
+++ b/icu4c/source/data/translit/my_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: my_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/my_chr.txt b/icu4c/source/data/translit/my_chr.txt
index c697d14..3e5b38a 100644
--- a/icu4c/source/data/translit/my_chr.txt
+++ b/icu4c/source/data/translit/my_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: my_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/my_fa.txt b/icu4c/source/data/translit/my_fa.txt
index 466e1b3..9e9e0c5 100644
--- a/icu4c/source/data/translit/my_fa.txt
+++ b/icu4c/source/data/translit/my_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: my_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/my_my_FONIPA.txt b/icu4c/source/data/translit/my_my_FONIPA.txt
index 7713d6e..4436e7c 100644
--- a/icu4c/source/data/translit/my_my_FONIPA.txt
+++ b/icu4c/source/data/translit/my_my_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: my_my_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/my_my_Latn.txt b/icu4c/source/data/translit/my_my_Latn.txt
index 0bc0523..ff0bd44 100644
--- a/icu4c/source/data/translit/my_my_Latn.txt
+++ b/icu4c/source/data/translit/my_my_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: my_my_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/nl_Title.txt b/icu4c/source/data/translit/nl_Title.txt
index 1243aee..7fce7b6 100644
--- a/icu4c/source/data/translit/nl_Title.txt
+++ b/icu4c/source/data/translit/nl_Title.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: nl_Title.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/nv_nv_FONIPA.txt b/icu4c/source/data/translit/nv_nv_FONIPA.txt
index 0d882bc..49ca015 100644
--- a/icu4c/source/data/translit/nv_nv_FONIPA.txt
+++ b/icu4c/source/data/translit/nv_nv_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: nv_nv_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/pl_FONIPA_ja.txt b/icu4c/source/data/translit/pl_FONIPA_ja.txt
index 7012290..a1d94e7 100644
--- a/icu4c/source/data/translit/pl_FONIPA_ja.txt
+++ b/icu4c/source/data/translit/pl_FONIPA_ja.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: pl_FONIPA_ja.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/pl_am.txt b/icu4c/source/data/translit/pl_am.txt
index 7c2e972..7175032 100644
--- a/icu4c/source/data/translit/pl_am.txt
+++ b/icu4c/source/data/translit/pl_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: pl_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/pl_ar.txt b/icu4c/source/data/translit/pl_ar.txt
index 623f1c0..fa224b8 100644
--- a/icu4c/source/data/translit/pl_ar.txt
+++ b/icu4c/source/data/translit/pl_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: pl_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/pl_chr.txt b/icu4c/source/data/translit/pl_chr.txt
index e738a19..956dd77 100644
--- a/icu4c/source/data/translit/pl_chr.txt
+++ b/icu4c/source/data/translit/pl_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: pl_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/pl_fa.txt b/icu4c/source/data/translit/pl_fa.txt
index bac9dd6..f2a3505 100644
--- a/icu4c/source/data/translit/pl_fa.txt
+++ b/icu4c/source/data/translit/pl_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: pl_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/pl_ja.txt b/icu4c/source/data/translit/pl_ja.txt
index 9b5f9b3..a71a5a3 100644
--- a/icu4c/source/data/translit/pl_ja.txt
+++ b/icu4c/source/data/translit/pl_ja.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: pl_ja.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/pl_pl_FONIPA.txt b/icu4c/source/data/translit/pl_pl_FONIPA.txt
index 6ee4cfb..248d87f 100644
--- a/icu4c/source/data/translit/pl_pl_FONIPA.txt
+++ b/icu4c/source/data/translit/pl_pl_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: pl_pl_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ps_ps_Latn_BGN.txt b/icu4c/source/data/translit/ps_ps_Latn_BGN.txt
index 90f48df..595c8f9 100644
--- a/icu4c/source/data/translit/ps_ps_Latn_BGN.txt
+++ b/icu4c/source/data/translit/ps_ps_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ps_ps_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/rm_SURSILV_am.txt b/icu4c/source/data/translit/rm_SURSILV_am.txt
index b731945..1898b89 100644
--- a/icu4c/source/data/translit/rm_SURSILV_am.txt
+++ b/icu4c/source/data/translit/rm_SURSILV_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: rm_SURSILV_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/rm_SURSILV_ar.txt b/icu4c/source/data/translit/rm_SURSILV_ar.txt
index e6da612..86389aa 100644
--- a/icu4c/source/data/translit/rm_SURSILV_ar.txt
+++ b/icu4c/source/data/translit/rm_SURSILV_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: rm_SURSILV_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/rm_SURSILV_chr.txt b/icu4c/source/data/translit/rm_SURSILV_chr.txt
index da47518..167d833 100644
--- a/icu4c/source/data/translit/rm_SURSILV_chr.txt
+++ b/icu4c/source/data/translit/rm_SURSILV_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: rm_SURSILV_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/rm_SURSILV_fa.txt b/icu4c/source/data/translit/rm_SURSILV_fa.txt
index 7b5e8c6..b71ca91 100644
--- a/icu4c/source/data/translit/rm_SURSILV_fa.txt
+++ b/icu4c/source/data/translit/rm_SURSILV_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: rm_SURSILV_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/rm_SURSILV_rm_FONIPA_SURSILV.txt b/icu4c/source/data/translit/rm_SURSILV_rm_FONIPA_SURSILV.txt
index ec69a0d..8bdfca9 100644
--- a/icu4c/source/data/translit/rm_SURSILV_rm_FONIPA_SURSILV.txt
+++ b/icu4c/source/data/translit/rm_SURSILV_rm_FONIPA_SURSILV.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: rm_SURSILV_rm_FONIPA_SURSILV.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ro_FONIPA_ja.txt b/icu4c/source/data/translit/ro_FONIPA_ja.txt
index 8e2f97e..9251086 100644
--- a/icu4c/source/data/translit/ro_FONIPA_ja.txt
+++ b/icu4c/source/data/translit/ro_FONIPA_ja.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ro_FONIPA_ja.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ro_am.txt b/icu4c/source/data/translit/ro_am.txt
index 9be22b8..5bc9c52 100644
--- a/icu4c/source/data/translit/ro_am.txt
+++ b/icu4c/source/data/translit/ro_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ro_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ro_ar.txt b/icu4c/source/data/translit/ro_ar.txt
index 6d850ca..a413aa3 100644
--- a/icu4c/source/data/translit/ro_ar.txt
+++ b/icu4c/source/data/translit/ro_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ro_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ro_chr.txt b/icu4c/source/data/translit/ro_chr.txt
index b3ea3c1..496a71a 100644
--- a/icu4c/source/data/translit/ro_chr.txt
+++ b/icu4c/source/data/translit/ro_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ro_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ro_fa.txt b/icu4c/source/data/translit/ro_fa.txt
index 809ef00..e19285e 100644
--- a/icu4c/source/data/translit/ro_fa.txt
+++ b/icu4c/source/data/translit/ro_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ro_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ro_ja.txt b/icu4c/source/data/translit/ro_ja.txt
index 999718b..2483ff1 100644
--- a/icu4c/source/data/translit/ro_ja.txt
+++ b/icu4c/source/data/translit/ro_ja.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ro_ja.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ro_ro_FONIPA.txt b/icu4c/source/data/translit/ro_ro_FONIPA.txt
index f965896..68aaacf 100644
--- a/icu4c/source/data/translit/ro_ro_FONIPA.txt
+++ b/icu4c/source/data/translit/ro_ro_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ro_ro_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/root.txt b/icu4c/source/data/translit/root.txt
index c774df9..94f6e42 100644
--- a/icu4c/source/data/translit/root.txt
+++ b/icu4c/source/data/translit/root.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * File: root.txt
  */
diff --git a/icu4c/source/data/translit/ru_Latn_ru_BGN.txt b/icu4c/source/data/translit/ru_Latn_ru_BGN.txt
index 19196b0..1075947 100644
--- a/icu4c/source/data/translit/ru_Latn_ru_BGN.txt
+++ b/icu4c/source/data/translit/ru_Latn_ru_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ru_Latn_ru_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ru_ja.txt b/icu4c/source/data/translit/ru_ja.txt
index f284876..129986a 100644
--- a/icu4c/source/data/translit/ru_ja.txt
+++ b/icu4c/source/data/translit/ru_ja.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ru_ja.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ru_ru_Latn_BGN.txt b/icu4c/source/data/translit/ru_ru_Latn_BGN.txt
index be3a4e8..e8a62ad 100644
--- a/icu4c/source/data/translit/ru_ru_Latn_BGN.txt
+++ b/icu4c/source/data/translit/ru_ru_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ru_ru_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ru_zh.txt b/icu4c/source/data/translit/ru_zh.txt
index 694fd17..7653ebd 100644
--- a/icu4c/source/data/translit/ru_zh.txt
+++ b/icu4c/source/data/translit/ru_zh.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ru_zh.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/sat_Olck_sat_FONIPA.txt b/icu4c/source/data/translit/sat_Olck_sat_FONIPA.txt
index 4a6105d..b131617 100644
--- a/icu4c/source/data/translit/sat_Olck_sat_FONIPA.txt
+++ b/icu4c/source/data/translit/sat_Olck_sat_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: sat_Olck_sat_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/sat_am.txt b/icu4c/source/data/translit/sat_am.txt
index c52cb39..5a41b79 100644
--- a/icu4c/source/data/translit/sat_am.txt
+++ b/icu4c/source/data/translit/sat_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: sat_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/sat_ar.txt b/icu4c/source/data/translit/sat_ar.txt
index 9df1b03..7bc9853 100644
--- a/icu4c/source/data/translit/sat_ar.txt
+++ b/icu4c/source/data/translit/sat_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: sat_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/sat_chr.txt b/icu4c/source/data/translit/sat_chr.txt
index b6b63b0..7be27e9 100644
--- a/icu4c/source/data/translit/sat_chr.txt
+++ b/icu4c/source/data/translit/sat_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: sat_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/sat_fa.txt b/icu4c/source/data/translit/sat_fa.txt
index 08cda47..133e55b 100644
--- a/icu4c/source/data/translit/sat_fa.txt
+++ b/icu4c/source/data/translit/sat_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: sat_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/si_am.txt b/icu4c/source/data/translit/si_am.txt
index 702ab9c..6a5597c 100644
--- a/icu4c/source/data/translit/si_am.txt
+++ b/icu4c/source/data/translit/si_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: si_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/si_ar.txt b/icu4c/source/data/translit/si_ar.txt
index 11ad884..7d7e817 100644
--- a/icu4c/source/data/translit/si_ar.txt
+++ b/icu4c/source/data/translit/si_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: si_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/si_chr.txt b/icu4c/source/data/translit/si_chr.txt
index 1cd4beb..30fe3d1 100644
--- a/icu4c/source/data/translit/si_chr.txt
+++ b/icu4c/source/data/translit/si_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: si_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/si_fa.txt b/icu4c/source/data/translit/si_fa.txt
index 7b89a36..22a3115 100644
--- a/icu4c/source/data/translit/si_fa.txt
+++ b/icu4c/source/data/translit/si_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: si_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/si_si_FONIPA.txt b/icu4c/source/data/translit/si_si_FONIPA.txt
index b1c6c8a..581de75 100644
--- a/icu4c/source/data/translit/si_si_FONIPA.txt
+++ b/icu4c/source/data/translit/si_si_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: si_si_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/si_si_Latn.txt b/icu4c/source/data/translit/si_si_Latn.txt
index f17dbe1..1bad5c0 100644
--- a/icu4c/source/data/translit/si_si_Latn.txt
+++ b/icu4c/source/data/translit/si_si_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: si_si_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/sk_FONIPA_ja.txt b/icu4c/source/data/translit/sk_FONIPA_ja.txt
index 40dcf9d..07bd28a 100644
--- a/icu4c/source/data/translit/sk_FONIPA_ja.txt
+++ b/icu4c/source/data/translit/sk_FONIPA_ja.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: sk_FONIPA_ja.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/sk_am.txt b/icu4c/source/data/translit/sk_am.txt
index 0ecf8a7..a09aca7 100644
--- a/icu4c/source/data/translit/sk_am.txt
+++ b/icu4c/source/data/translit/sk_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: sk_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/sk_ar.txt b/icu4c/source/data/translit/sk_ar.txt
index 4d815cd..a90f87f 100644
--- a/icu4c/source/data/translit/sk_ar.txt
+++ b/icu4c/source/data/translit/sk_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: sk_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/sk_chr.txt b/icu4c/source/data/translit/sk_chr.txt
index dc91cf1..b0be3bc 100644
--- a/icu4c/source/data/translit/sk_chr.txt
+++ b/icu4c/source/data/translit/sk_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: sk_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/sk_fa.txt b/icu4c/source/data/translit/sk_fa.txt
index fe6d8aa..db8a825 100644
--- a/icu4c/source/data/translit/sk_fa.txt
+++ b/icu4c/source/data/translit/sk_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: sk_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/sk_ja.txt b/icu4c/source/data/translit/sk_ja.txt
index 3e93702..ba5d96a 100644
--- a/icu4c/source/data/translit/sk_ja.txt
+++ b/icu4c/source/data/translit/sk_ja.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: sk_ja.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/sk_sk_FONIPA.txt b/icu4c/source/data/translit/sk_sk_FONIPA.txt
index 807b659..bfffbd0 100644
--- a/icu4c/source/data/translit/sk_sk_FONIPA.txt
+++ b/icu4c/source/data/translit/sk_sk_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: sk_sk_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/sr_sr_Latn_BGN.txt b/icu4c/source/data/translit/sr_sr_Latn_BGN.txt
index 6389f85..a979ff9 100644
--- a/icu4c/source/data/translit/sr_sr_Latn_BGN.txt
+++ b/icu4c/source/data/translit/sr_sr_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: sr_sr_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/ta_ta_FONIPA.txt b/icu4c/source/data/translit/ta_ta_FONIPA.txt
index 1334fb1..812c5c2 100644
--- a/icu4c/source/data/translit/ta_ta_FONIPA.txt
+++ b/icu4c/source/data/translit/ta_ta_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ta_ta_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/tk_Cyrl_tk_BGN.txt b/icu4c/source/data/translit/tk_Cyrl_tk_BGN.txt
index da77854..e042a53 100644
--- a/icu4c/source/data/translit/tk_Cyrl_tk_BGN.txt
+++ b/icu4c/source/data/translit/tk_Cyrl_tk_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: tk_Cyrl_tk_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/tlh_am.txt b/icu4c/source/data/translit/tlh_am.txt
index 6d0c893..4e18e58 100644
--- a/icu4c/source/data/translit/tlh_am.txt
+++ b/icu4c/source/data/translit/tlh_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: tlh_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/tlh_ar.txt b/icu4c/source/data/translit/tlh_ar.txt
index 358aee9..3b88f63 100644
--- a/icu4c/source/data/translit/tlh_ar.txt
+++ b/icu4c/source/data/translit/tlh_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: tlh_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/tlh_chr.txt b/icu4c/source/data/translit/tlh_chr.txt
index 1b77102..e0d8bdd 100644
--- a/icu4c/source/data/translit/tlh_chr.txt
+++ b/icu4c/source/data/translit/tlh_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: tlh_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/tlh_fa.txt b/icu4c/source/data/translit/tlh_fa.txt
index 67c9aef..7774409 100644
--- a/icu4c/source/data/translit/tlh_fa.txt
+++ b/icu4c/source/data/translit/tlh_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: tlh_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/tlh_tlh_FONIPA.txt b/icu4c/source/data/translit/tlh_tlh_FONIPA.txt
index 8b63b66..7d34755 100644
--- a/icu4c/source/data/translit/tlh_tlh_FONIPA.txt
+++ b/icu4c/source/data/translit/tlh_tlh_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: tlh_tlh_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/tr_Lower.txt b/icu4c/source/data/translit/tr_Lower.txt
index 8fbf106..4af866d 100644
--- a/icu4c/source/data/translit/tr_Lower.txt
+++ b/icu4c/source/data/translit/tr_Lower.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: tr_Lower.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/tr_Title.txt b/icu4c/source/data/translit/tr_Title.txt
index 745c5b8..bff96a6 100644
--- a/icu4c/source/data/translit/tr_Title.txt
+++ b/icu4c/source/data/translit/tr_Title.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: tr_Title.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/tr_Upper.txt b/icu4c/source/data/translit/tr_Upper.txt
index 24c629a..9155bb5 100644
--- a/icu4c/source/data/translit/tr_Upper.txt
+++ b/icu4c/source/data/translit/tr_Upper.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: tr_Upper.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/trnsfiles.mk b/icu4c/source/data/translit/trnsfiles.mk
deleted file mode 100644
index 3c2630b..0000000
--- a/icu4c/source/data/translit/trnsfiles.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-# *   Copyright (C) 1997-2006, International Business Machines
-# *   Corporation and others.  All Rights Reserved.
-# A list of txt's to build
-# Note: 
-#
-#   If you are thinking of modifying this file, READ THIS. 
-#
-# Instead of changing this file [unless you want to check it back in],
-# you should consider creating a 'trnslocal.mk' file in this same directory.
-# Then, you can have your local changes remain even if you upgrade or re
-# configure the ICU.
-#
-# Example 'trnslocal.mk' files:
-#
-#  * To add an additional transliterators to the list: 
-#    _____________________________________________________
-#    |  TRANSLIT_SOURCE_LOCAL =   myTranslitRules.txt ...
-#
-#  * To REPLACE the default list and only build with a few
-#     transliterators:
-#    _____________________________________________________
-#    |  TRANLIST_SOURCE = el.txt th.txt
-#
-#
-
-TRANSLIT_SOURCE=root.txt en.txt el.txt
diff --git a/icu4c/source/data/translit/ug_ug_FONIPA.txt b/icu4c/source/data/translit/ug_ug_FONIPA.txt
index 8ba1ab2..b6716ee 100644
--- a/icu4c/source/data/translit/ug_ug_FONIPA.txt
+++ b/icu4c/source/data/translit/ug_ug_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: ug_ug_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/uk_uk_Latn_BGN.txt b/icu4c/source/data/translit/uk_uk_Latn_BGN.txt
index c2da794..fdba3ca 100644
--- a/icu4c/source/data/translit/uk_uk_Latn_BGN.txt
+++ b/icu4c/source/data/translit/uk_uk_Latn_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: uk_uk_Latn_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/und_FONIPA_ar.txt b/icu4c/source/data/translit/und_FONIPA_ar.txt
index 1e79833..ba60ef4 100644
--- a/icu4c/source/data/translit/und_FONIPA_ar.txt
+++ b/icu4c/source/data/translit/und_FONIPA_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: und_FONIPA_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/und_FONIPA_chr.txt b/icu4c/source/data/translit/und_FONIPA_chr.txt
index 5448e05..38484e3 100644
--- a/icu4c/source/data/translit/und_FONIPA_chr.txt
+++ b/icu4c/source/data/translit/und_FONIPA_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: und_FONIPA_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/und_FONIPA_fa.txt b/icu4c/source/data/translit/und_FONIPA_fa.txt
index 5a1a322..12060f2 100644
--- a/icu4c/source/data/translit/und_FONIPA_fa.txt
+++ b/icu4c/source/data/translit/und_FONIPA_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: und_FONIPA_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/und_FONIPA_und_FONXSAMP.txt b/icu4c/source/data/translit/und_FONIPA_und_FONXSAMP.txt
index b863146..c8c5cca 100644
--- a/icu4c/source/data/translit/und_FONIPA_und_FONXSAMP.txt
+++ b/icu4c/source/data/translit/und_FONIPA_und_FONXSAMP.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: und_FONIPA_und_FONXSAMP.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/uz_Cyrl_uz_BGN.txt b/icu4c/source/data/translit/uz_Cyrl_uz_BGN.txt
index 84898e6..f30265c 100644
--- a/icu4c/source/data/translit/uz_Cyrl_uz_BGN.txt
+++ b/icu4c/source/data/translit/uz_Cyrl_uz_BGN.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: uz_Cyrl_uz_BGN.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/uz_Cyrl_uz_Latn.txt b/icu4c/source/data/translit/uz_Cyrl_uz_Latn.txt
index ae94ddd..fb570ff 100644
--- a/icu4c/source/data/translit/uz_Cyrl_uz_Latn.txt
+++ b/icu4c/source/data/translit/uz_Cyrl_uz_Latn.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: uz_Cyrl_uz_Latn.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/vec_vec_FONIPA.txt b/icu4c/source/data/translit/vec_vec_FONIPA.txt
index 8920ee4..b91e42c 100644
--- a/icu4c/source/data/translit/vec_vec_FONIPA.txt
+++ b/icu4c/source/data/translit/vec_vec_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: vec_vec_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/xh_am.txt b/icu4c/source/data/translit/xh_am.txt
index 639732c..94f34b5 100644
--- a/icu4c/source/data/translit/xh_am.txt
+++ b/icu4c/source/data/translit/xh_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: xh_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/xh_ar.txt b/icu4c/source/data/translit/xh_ar.txt
index 586b1ba..44078b8 100644
--- a/icu4c/source/data/translit/xh_ar.txt
+++ b/icu4c/source/data/translit/xh_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: xh_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/xh_chr.txt b/icu4c/source/data/translit/xh_chr.txt
index 6d05af4..d951252 100644
--- a/icu4c/source/data/translit/xh_chr.txt
+++ b/icu4c/source/data/translit/xh_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: xh_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/xh_fa.txt b/icu4c/source/data/translit/xh_fa.txt
index ae2e491..f1b2828 100644
--- a/icu4c/source/data/translit/xh_fa.txt
+++ b/icu4c/source/data/translit/xh_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: xh_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/xh_xh_FONIPA.txt b/icu4c/source/data/translit/xh_xh_FONIPA.txt
index f9b3ebc..1d5f9a1 100644
--- a/icu4c/source/data/translit/xh_xh_FONIPA.txt
+++ b/icu4c/source/data/translit/xh_xh_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: xh_xh_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/yo_yo_BJ.txt b/icu4c/source/data/translit/yo_yo_BJ.txt
index 0eea75a..f611116 100644
--- a/icu4c/source/data/translit/yo_yo_BJ.txt
+++ b/icu4c/source/data/translit/yo_yo_BJ.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: yo_yo_BJ.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/zh_Latn_PINYIN_ru.txt b/icu4c/source/data/translit/zh_Latn_PINYIN_ru.txt
index ef543da..ca84af6 100644
--- a/icu4c/source/data/translit/zh_Latn_PINYIN_ru.txt
+++ b/icu4c/source/data/translit/zh_Latn_PINYIN_ru.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: zh_Latn_PINYIN_ru.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/zu_am.txt b/icu4c/source/data/translit/zu_am.txt
index 4a46f63..2ff8fc2 100644
--- a/icu4c/source/data/translit/zu_am.txt
+++ b/icu4c/source/data/translit/zu_am.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: zu_am.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/zu_ar.txt b/icu4c/source/data/translit/zu_ar.txt
index 08799a8..a74430d 100644
--- a/icu4c/source/data/translit/zu_ar.txt
+++ b/icu4c/source/data/translit/zu_ar.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: zu_ar.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/zu_chr.txt b/icu4c/source/data/translit/zu_chr.txt
index e1d4f33..6686e57 100644
--- a/icu4c/source/data/translit/zu_chr.txt
+++ b/icu4c/source/data/translit/zu_chr.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: zu_chr.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/zu_fa.txt b/icu4c/source/data/translit/zu_fa.txt
index 69e7cb7..9efb57c 100644
--- a/icu4c/source/data/translit/zu_fa.txt
+++ b/icu4c/source/data/translit/zu_fa.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: zu_fa.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/translit/zu_zu_FONIPA.txt b/icu4c/source/data/translit/zu_zu_FONIPA.txt
index 530d9a0..ea8abf4 100644
--- a/icu4c/source/data/translit/zu_zu_FONIPA.txt
+++ b/icu4c/source/data/translit/zu_zu_FONIPA.txt
@@ -1,5 +1,6 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
+# Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 #
 # File: zu_zu_FONIPA.txt
 # Generated from CLDR
diff --git a/icu4c/source/data/unit/LOCALE_DEPS.json b/icu4c/source/data/unit/LOCALE_DEPS.json
index 681e78c..2508537 100644
--- a/icu4c/source/data/unit/LOCALE_DEPS.json
+++ b/icu4c/source/data/unit/LOCALE_DEPS.json
@@ -1,8 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 
 {
-    "cldrVersion": "37",
+    "cldrVersion": "38.1",
     "aliases": {
         "ars": "ar_SA",
         "az_AZ": "az_Latn_AZ",
@@ -33,7 +34,7 @@
         "sh_YU": "sr_Latn_RS",
         "shi_MA": "shi_Tfng_MA",
         "sr_BA": "sr_Cyrl_BA",
-        "sr_CS": "sr_Cyrl_RS",
+        "sr_CS": "sr_RS",
         "sr_Cyrl_CS": "sr_Cyrl_RS",
         "sr_Cyrl_YU": "sr_Cyrl_RS",
         "sr_Latn_CS": "sr_Latn_RS",
@@ -41,7 +42,7 @@
         "sr_ME": "sr_Latn_ME",
         "sr_RS": "sr_Cyrl_RS",
         "sr_XK": "sr_Cyrl_XK",
-        "sr_YU": "sr_Cyrl_RS",
+        "sr_YU": "sr_RS",
         "su_ID": "su_Latn_ID",
         "tl": "fil",
         "tl_PH": "fil_PH",
diff --git a/icu4c/source/data/unit/af.txt b/icu4c/source/data/unit/af.txt
index dfeb458..34d07df 100644
--- a/icu4c/source/data/unit/af.txt
+++ b/icu4c/source/data/unit/af.txt
@@ -1,10 +1,10 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 af{
-    Version{"37"}
     durationUnits{
-        hm{"h:mm"}
-        hms{"h:mm:ss"}
+        hm{"hh:mm"}
+        hms{"hh:mm:ss"}
         ms{"mm:ss"}
     }
     units{
@@ -284,7 +284,7 @@
                 dnam{"sekondes"}
                 one{"{0} sekonde"}
                 other{"{0} sekondes"}
-                per{"{0}/s"}
+                per{"{0} per sekonde"}
             }
             week{
                 dnam{"weke"}
@@ -403,6 +403,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"stippel"}
+                one{"{0}stippel"}
+                other{"{0}stippel"}
+            }
             dot-per-centimeter{
                 dnam{"stippels per sentimeter"}
                 one{"{0} stippel per sentimeter"}
@@ -416,11 +421,26 @@
             em{
                 dnam{"tipografiese em"}
             }
+            megapixel{
+                dnam{"megapieksels"}
+                one{"{0} megapieksel"}
+                other{"{0} megapieksels"}
+            }
             pixel{
                 dnam{"pieksels"}
                 one{"{0} pieksel"}
                 other{"{0} pieksels"}
             }
+            pixel-per-centimeter{
+                dnam{"pieksels per sentimeter"}
+                one{"{0} pieksel per sentimeter"}
+                other{"{0} pieksels per sentimeter"}
+            }
+            pixel-per-inch{
+                dnam{"pieksels per duim"}
+                one{"{0} pieksel per duim"}
+                other{"{0} pieksels per duim"}
+            }
         }
         length{
             astronomical-unit{
@@ -439,12 +459,26 @@
                 one{"{0} desimeter"}
                 other{"{0} desimeter"}
             }
+            earth-radius{
+                dnam{"aardstraal"}
+                one{"{0} aardstraal"}
+                other{"{0} aardstraal"}
+            }
+            fathom{
+                one{"{0} vaam"}
+                other{"{0} vaam"}
+            }
             foot{
                 dnam{"voet"}
                 one{"{0} voet"}
                 other{"{0} voet"}
                 per{"{0} per voet"}
             }
+            furlong{
+                dnam{"furlongs"}
+                one{"{0} furlong"}
+                other{"{0} furlongs"}
+            }
             inch{
                 dnam{"duim"}
                 one{"{0} duim"}
@@ -525,6 +559,16 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                one{"{0} kandela"}
+                other{"{0} kandela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                one{"{0} lumen"}
+                other{"{0} lumen"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
@@ -552,6 +596,11 @@
                 one{"{0} aardemassa"}
                 other{"{0} aardemassas"}
             }
+            grain{
+                dnam{"korrelgewig"}
+                one{"{0} korrelgewig"}
+                other{"{0} korrelgewig"}
+            }
             gram{
                 dnam{"gram"}
                 one{"{0} gram"}
@@ -601,6 +650,11 @@
                 one{"{0} sonmassa"}
                 other{"{0} sonmassas"}
             }
+            stone{
+                dnam{"stone"}
+                one{"{0} stone"}
+                other{"{0} stone"}
+            }
             ton{
                 dnam{"VSA-ton"}
                 one{"{0} VSA-ton"}
@@ -716,8 +770,8 @@
             }
             generic{
                 dnam{"°"}
-                one{"{0}°"}
-                other{"{0}°"}
+                one{"{0} graad"}
+                other{"{0} graad"}
             }
             kelvin{
                 dnam{"kelvin"}
@@ -733,7 +787,7 @@
             }
             pound-force-foot{
                 dnam{"pondvoet"}
-                one{"{0} pondvoet"}
+                one{"{0} pondvoetkrag"}
                 other{"{0} pondvoet"}
             }
         }
@@ -748,6 +802,10 @@
                 one{"{0} vat"}
                 other{"{0} vate"}
             }
+            bushel{
+                one{"{0} skepel"}
+                other{"{0} skepel"}
+            }
             centiliter{
                 dnam{"sentiliter"}
                 one{"{0} sentiliter"}
@@ -805,6 +863,26 @@
                 one{"{0} desiliter"}
                 other{"{0} desiliter"}
             }
+            dessert-spoon{
+                dnam{"dessertlepel"}
+                one{"{0} dstlpl."}
+                other{"{0} dessertlepel"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Engelse dessertlepel"}
+                one{"{0} Engelse dessertlepel"}
+                other{"{0} Engelse dessertlepel"}
+            }
+            dram{
+                dnam{"dragme"}
+                one{"{0} dragme"}
+                other{"{0} dragme"}
+            }
+            drop{
+                dnam{"druppel"}
+                one{"{0} druppel"}
+                other{"{0} druppels"}
+            }
             fluid-ounce{
                 dnam{"vloeistofons"}
                 one{"{0} vloeistofons"}
@@ -832,6 +910,11 @@
                 one{"{0} hektoliter"}
                 other{"{0} hektoliter"}
             }
+            jigger{
+                dnam{"sopie"}
+                one{"{0} sopie"}
+                other{"{0} sopies"}
+            }
             liter{
                 dnam{"liter"}
                 one{"{0} liter"}
@@ -848,6 +931,11 @@
                 one{"{0} milliliter"}
                 other{"{0} milliliter"}
             }
+            pinch{
+                dnam{"knypie"}
+                one{"{0} knypie"}
+                other{"{0} knypie"}
+            }
             pint{
                 dnam{"pinte"}
                 one{"{0} pint"}
@@ -863,6 +951,11 @@
                 one{"{0} VSA-kwartgelling"}
                 other{"{0} VSA-kwartgellings"}
             }
+            quart-imperial{
+                dnam{"kwartgelling"}
+                one{"{0} Engelse kwartgelling"}
+                other{"{0} Engelse kwartgelling"}
+            }
             tablespoon{
                 dnam{"eetlepels"}
                 one{"{0} eetlepel"}
@@ -1382,7 +1475,7 @@
                 other{"{0} μs."}
             }
             millisecond{
-                dnam{"millisekondes"}
+                dnam{"millisek."}
                 one{"{0} ms."}
                 other{"{0} ms"}
             }
@@ -1526,6 +1619,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"stip."}
+                one{"{0} stip."}
+                other{"{0} stip."}
+            }
             dot-per-centimeter{
                 dnam{"stip./cm"}
                 one{"{0} stip./cm"}
@@ -1579,12 +1677,22 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            fathom{
+                dnam{"vaam"}
+                one{"{0} vaam"}
+                other{"{0} vaam"}
+            }
             foot{
                 dnam{"voet"}
                 one{"{0} vt."}
                 other{"{0} vt."}
                 per{"{0}/vt."}
             }
+            furlong{
+                dnam{"furlongs"}
+                one{"{0} fur."}
+                other{"{0} fur."}
+            }
             inch{
                 dnam{"duim"}
                 one{"{0} duim"}
@@ -1692,6 +1800,11 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"korrelgewig"}
+                one{"{0} korrelgewig"}
+                other{"{0} korrelgewig"}
+            }
             gram{
                 dnam{"gram"}
                 one{"{0} g"}
@@ -1741,6 +1854,9 @@
                 one{"{0} M☉"}
                 other{"{0} M☉"}
             }
+            stone{
+                dnam{"stone"}
+            }
             ton{
                 dnam{"VSA-ton"}
                 one{"{0} VSA-t."}
@@ -1897,6 +2013,10 @@
                 one{"{0} bbl"}
                 other{"{0} bbl"}
             }
+            bushel{
+                one{"{0} skepel"}
+                other{"{0} skepel"}
+            }
             centiliter{
                 dnam{"cℓ"}
                 one{"{0} cℓ"}
@@ -1954,6 +2074,26 @@
                 one{"{0} dℓ"}
                 other{"{0} dℓ"}
             }
+            dessert-spoon{
+                dnam{"dstlpl."}
+                one{"{0} dstlpl."}
+                other{"{0} dstlpl."}
+            }
+            dessert-spoon-imperial{
+                dnam{"dstlpl. Eng."}
+                one{"{0} dstlpl. Eng."}
+                other{"{0} dstlpl. Eng."}
+            }
+            dram{
+                dnam{"dragme vloeistof"}
+                one{"{0} dr. vl."}
+                other{"{0} dr. vl."}
+            }
+            drop{
+                dnam{"druppel"}
+                one{"{0} druppel"}
+                other{"{0} druppels"}
+            }
             fluid-ounce{
                 dnam{"vl.oz."}
                 one{"{0} vl.oz."}
@@ -1981,6 +2121,11 @@
                 one{"{0} hℓ"}
                 other{"{0} hℓ"}
             }
+            jigger{
+                dnam{"sopie"}
+                one{"{0} sopie"}
+                other{"{0} sopies"}
+            }
             liter{
                 dnam{"liter"}
                 one{"{0} ℓ"}
@@ -1997,6 +2142,11 @@
                 one{"{0} mℓ"}
                 other{"{0} mℓ"}
             }
+            pinch{
+                dnam{"knypie"}
+                one{"{0} knypie"}
+                other{"{0} knypie"}
+            }
             pint{
                 dnam{"pinte"}
                 one{"{0} pt."}
@@ -2012,6 +2162,11 @@
                 one{"{0} VSA-kw.gell."}
                 other{"{0} VSA-kw.gell."}
             }
+            quart-imperial{
+                dnam{"kwart Eng."}
+                one{"{0} kwart Eng."}
+                other{"{0} kwart Eng."}
+            }
             tablespoon{
                 dnam{"e."}
                 one{"{0} e."}
diff --git a/icu4c/source/data/unit/agq.txt b/icu4c/source/data/unit/agq.txt
index b54dffa..a75f252 100644
--- a/icu4c/source/data/unit/agq.txt
+++ b/icu4c/source/data/unit/agq.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 agq{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/ak.txt b/icu4c/source/data/unit/ak.txt
index 5057e2a..9e5c5d1 100644
--- a/icu4c/source/data/unit/ak.txt
+++ b/icu4c/source/data/unit/ak.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ak{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/am.txt b/icu4c/source/data/unit/am.txt
index 9f091f7..6d7ff92 100644
--- a/icu4c/source/data/unit/am.txt
+++ b/icu4c/source/data/unit/am.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 am{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -383,6 +383,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ነቁጥ"}
+                one{"{0} ነቁጥ"}
+                other{"{0} ነቁጥ"}
+            }
             dot-per-centimeter{
                 dnam{"ነበሴሜ"}
                 one{"{0} ነበሴሜ"}
@@ -393,6 +398,9 @@
                 one{"{0} ነበኢ"}
                 other{"{0} ነበኢ"}
             }
+            em{
+                dnam{"ታይፖግራፊክ em"}
+            }
             megapixel{
                 dnam{"ሜጋ ፒክስል"}
                 one{"{0} ሜጋ ፒክስል"}
@@ -431,12 +439,22 @@
                 one{"{0} ዴሲ ሜትር"}
                 other{"{0} ዴሲ ሜትር"}
             }
+            fathom{
+                dnam{"ተዳክሞዎች"}
+                one{"{0} ተዳክሞ"}
+                other{"{0} ተዳክሞዎች"}
+            }
             foot{
                 dnam{"ጫማ"}
                 one{"{0} ጫማ"}
                 other{"{0} ጫማ"}
                 per{"{0}/ጫማ"}
             }
+            furlong{
+                dnam{"ፈሎን"}
+                one{"{0} ፈሎን"}
+                other{"{0} ፈሎን"}
+            }
             inch{
                 dnam{"ኢንች"}
                 one{"{0} ኢንች"}
@@ -505,6 +523,11 @@
                 one{"{0} ነጥብ"}
                 other{"{0} ነጥብ"}
             }
+            solar-radius{
+                dnam{"ሶላር ራዲ"}
+                one{"{0} ሶላር ዳዲየስ"}
+                other{"{0} ሶላር ራዲ"}
+            }
             yard{
                 dnam{"ያርድ"}
                 one{"{0} ያርድ"}
@@ -512,6 +535,16 @@
             }
         }
         light{
+            candela{
+                dnam{"ካንዴላ"}
+                one{"{0} ካንዴላ"}
+                other{"{0} ካንዴላ"}
+            }
+            lumen{
+                dnam{"ቱቦ ቀዳዳ"}
+                one{"{0} ቱቦ ቀዳዳ"}
+                other{"{0} ቱቦ ቀዳዳ"}
+            }
             lux{
                 dnam{"lx"}
                 one{"{0} lx"}
@@ -524,6 +557,21 @@
                 one{"{0} CD"}
                 other{"{0} CD"}
             }
+            dalton{
+                dnam{"ዳተንስ"}
+                one{"{0} ዳተንስ"}
+                other{"{0} ዳተንስ"}
+            }
+            earth-mass{
+                dnam{"ኤርዝማስስ"}
+                one{"{0} ኤርዝማስስ"}
+                other{"{0} ኤርዝማስስ"}
+            }
+            grain{
+                dnam{"ጥራ ጥሬ"}
+                one{"{0} ጥራ ጥሬ"}
+                other{"{0} ጥራ ጥሬ"}
+            }
             gram{
                 dnam{"ግራም"}
                 one{"{0} ግራም"}
@@ -568,6 +616,16 @@
                 other{"{0} ፓውንድ"}
                 per{"{0}/ፓውንድ"}
             }
+            solar-mass{
+                dnam{"ሶላር ማስስ"}
+                one{"{0} ሶላር ማስስ"}
+                other{"{0} ሶላር ማስስ"}
+            }
+            stone{
+                dnam{"ድንጋይ"}
+                one{"{0} ድንጋይ"}
+                other{"{0} ድንጋይ"}
+            }
             ton{
                 dnam{"ቶን"}
                 one{"{0} ቶን"}
@@ -720,6 +778,11 @@
                 one{"{0} በርሜል"}
                 other{"{0} በርሜሎች"}
             }
+            bushel{
+                dnam{"ዳውላ"}
+                one{"{0} ዳውላ"}
+                other{"{0} ዳውላ"}
+            }
             centiliter{
                 dnam{"ሴንቲ ሊትር"}
                 one{"{0} ሴንቲ ሊትር"}
@@ -777,11 +840,36 @@
                 one{"{0} ዴሲ ሊትር"}
                 other{"{0} ዴሲ ሊትር"}
             }
+            dessert-spoon{
+                dnam{"የመምድረ በዳ ማንኪያ"}
+                one{"{0} የመምድረ በዳ ማንኪያ"}
+                other{"{0} የመምድረ በዳ ማንኪያ"}
+            }
+            dessert-spoon-imperial{
+                dnam{"የምድረ በዳ ማንኪያ"}
+                one{"{0} የምድረ በዳ ማንኪያ"}
+                other{"{0} የምድረ በዳ ማንኪያ"}
+            }
+            dram{
+                dnam{"የክብደት መለኪያ"}
+                one{"{0} የክብደት መለኪያ"}
+                other{"{0} የክብደት መለኪያ"}
+            }
+            drop{
+                dnam{"ጠብታ"}
+                one{"{0} ጠብታ"}
+                other{"{0} ጠብታ"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
                 other{"{0} fl oz"}
             }
+            fluid-ounce-imperial{
+                dnam{"Imp. fluid ኦንስስ"}
+                one{"{0} Imp. fluid ኦንስስ"}
+                other{"{0} Imp. fluid ኦንስስ"}
+            }
             gallon{
                 dnam{"gal"}
                 one{"{0} gal"}
@@ -799,6 +887,11 @@
                 one{"{0} hL"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"ሙጃሌ"}
+                one{"{0} ሙጃሌ"}
+                other{"{0} ሙጃሌ"}
+            }
             liter{
                 dnam{"ሊትር"}
                 one{"{0} ሊትር"}
@@ -815,6 +908,11 @@
                 one{"{0} ሚሊ ሊትር"}
                 other{"{0} ሚሊ ሊትር"}
             }
+            pinch{
+                dnam{"ቁንጥ"}
+                one{"{0} ቁንጥ"}
+                other{"{0} ቁንጥ"}
+            }
             pint{
                 dnam{"pt"}
                 one{"{0} pt"}
@@ -830,6 +928,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"የፈሳሽ መለኪያ"}
+                one{"{0} የፈሳሽ መለኪያ"}
+                other{"{0} የፈሳሽ መለኪያ"}
+            }
             tablespoon{
                 dnam{"tbsp"}
                 one{"{0} tbsp"}
@@ -1472,6 +1575,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ነቁጥ"}
+                one{"{0} ነቁጥ"}
+                other{"{0} ነቁጥ"}
+            }
             dot-per-centimeter{
                 dnam{"ነበሴሜ"}
                 one{"{0} ነበሴሜ"}
@@ -1520,12 +1628,22 @@
                 one{"{0} ዴሜ"}
                 other{"{0} ዴሜ"}
             }
+            fathom{
+                dnam{"ተዳክሞዎች"}
+                one{"{0} ተዳክሞ"}
+                other{"{0} ተዳክሞ"}
+            }
             foot{
                 dnam{"ጫማ"}
                 one{"{0} ጫማ"}
                 other{"{0} ጫማ"}
                 per{"{0}/ጫማ"}
             }
+            furlong{
+                dnam{"ፈሎን"}
+                one{"{0} ፈሎን"}
+                other{"{0} ፈሎን"}
+            }
             inch{
                 dnam{"ኢንች"}
                 one{"{0} ኢንች"}
@@ -1594,6 +1712,9 @@
                 one{"{0} ነጥብ"}
                 other{"{0} ነጥብ"}
             }
+            solar-radius{
+                dnam{"ሶላር ራዲ"}
+            }
             yard{
                 dnam{"ያርድ"}
                 one{"{0} ያርድ"}
@@ -1601,6 +1722,16 @@
             }
         }
         light{
+            candela{
+                dnam{"ካንዴላ"}
+                one{"{0} ካንዴላ"}
+                other{"{0} ካንዴላ"}
+            }
+            lumen{
+                dnam{"ቱቦ ቀዳዳ"}
+                one{"{0} ቱቦ ቀዳዳ"}
+                other{"{0} ቱቦ ቀዳዳ"}
+            }
             lux{
                 dnam{"lx"}
                 one{"{0} lx"}
@@ -1613,6 +1744,17 @@
                 one{"{0} CD"}
                 other{"{0} CD"}
             }
+            dalton{
+                dnam{"ዳተንስ"}
+            }
+            earth-mass{
+                dnam{"ኤርዝማስስ"}
+            }
+            grain{
+                dnam{"ጥራ ጥሬ"}
+                one{"{0} ጥራ ጥሬ"}
+                other{"{0} ጥራ ጥሬ"}
+            }
             gram{
                 dnam{"ግራም"}
                 one{"{0} ግ"}
@@ -1657,6 +1799,14 @@
                 other{"{0} ፓውንድ"}
                 per{"{0}/ፓውንድ"}
             }
+            solar-mass{
+                dnam{"ሶላር ማስስ"}
+            }
+            stone{
+                dnam{"ድንጋይ"}
+                one{"{0} ድንጋይ"}
+                other{"{0} ድንጋይ"}
+            }
             ton{
                 dnam{"ቶን"}
                 one{"{0} ቶን"}
@@ -1809,6 +1959,11 @@
                 one{"{0} በርሜል"}
                 other{"{0} በርሜል"}
             }
+            bushel{
+                dnam{"ዳውላ"}
+                one{"{0} ዳውላ"}
+                other{"{0} ዳውላ"}
+            }
             centiliter{
                 dnam{"ሴሊ"}
                 one{"{0} ሴሊ"}
@@ -1866,6 +2021,26 @@
                 one{"{0} ዴሊ"}
                 other{"{0} ዴሊ"}
             }
+            dessert-spoon{
+                dnam{"የመምድረ በዳ ማንኪያ"}
+                one{"{0} የመምድረ በዳ ማንኪያ"}
+                other{"{0} የመምድረ በዳ ማንኪያ"}
+            }
+            dessert-spoon-imperial{
+                dnam{"የምድረ በዳ ማንኪያ"}
+                one{"{0} የምድረ በዳ ማንኪያ"}
+                other{"{0} የምድረ በዳ ማንኪያ"}
+            }
+            dram{
+                dnam{"የክብደት መለኪያ"}
+                one{"{0} የክብደት መለኪያ"}
+                other{"{0} የክብደት መለኪያ"}
+            }
+            drop{
+                dnam{"ጠብታ"}
+                one{"{0} ጠብታ"}
+                other{"{0} ጠብታ"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -1888,6 +2063,11 @@
                 one{"{0} hL"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"ሙጃሌ"}
+                one{"{0} ሙጃሌ"}
+                other{"{0} ሙጃሌ"}
+            }
             liter{
                 dnam{"ሊትር"}
                 one{"{0} ሊ"}
@@ -1904,6 +2084,11 @@
                 one{"{0} ሚሊ ሊትር"}
                 other{"{0} ሚሊ ሊትር"}
             }
+            pinch{
+                dnam{"ቁንጥ"}
+                one{"{0} ቁንጥ"}
+                other{"{0} ቁንጥ"}
+            }
             pint{
                 dnam{"pt"}
                 one{"{0} pt"}
@@ -1919,6 +2104,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"የፈሳሽ መለኪያ"}
+                one{"{0} የፈሳሽ መለኪያ"}
+                other{"{0} የፈሳሽ መለኪያ"}
+            }
             tablespoon{
                 dnam{"tbsp"}
                 one{"{0} tbsp"}
diff --git a/icu4c/source/data/unit/ar.txt b/icu4c/source/data/unit/ar.txt
index c33132b..8f4a8f8 100644
--- a/icu4c/source/data/unit/ar.txt
+++ b/icu4c/source/data/unit/ar.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -683,6 +683,15 @@
             }
         }
         graphics{
+            dot{
+                dnam{"بكسل"}
+                few{"{0} بكسل"}
+                many{"{0} بكسل"}
+                one{"{0} بكسل"}
+                other{"{0} بكسل"}
+                two{"{0} بكسل"}
+                zero{"{0} بكسل"}
+            }
             dot-per-centimeter{
                 dnam{"نقطة لكل سنتيمتر"}
                 few{"{0} نقاط لكل سنتيمتر"}
@@ -776,6 +785,24 @@
                 two{"{0} ديسيمتر"}
                 zero{"{0} ديسيمتر"}
             }
+            earth-radius{
+                dnam{"نصف قطر أرضي"}
+                few{"{0} نصف قطر أرضي"}
+                many{"{0} نصف قطر أرضي"}
+                one{"{0} نصف قطر أرضي"}
+                other{"{0} نصف قطر أرضي"}
+                two{"{0} نصف قطر أرضي"}
+                zero{"{0} نصف قطر أرضي"}
+            }
+            fathom{
+                dnam{"قامة"}
+                few{"{0} قامة"}
+                many{"{0} قامة"}
+                one{"{0} قامة"}
+                other{"{0} قامة"}
+                two{"{0} قامة"}
+                zero{"{0} قامة"}
+            }
             foot{
                 dnam{"قدم"}
                 few{"{0} قدم"}
@@ -786,6 +813,15 @@
                 two{"{0} قدم"}
                 zero{"{0} قدم"}
             }
+            furlong{
+                dnam{"فرلنغ"}
+                few{"{0} فرلنغ"}
+                many{"{0} فرلنغ"}
+                one{"{0} فرلنغ"}
+                other{"{0} فرلنغ"}
+                two{"{0} فرلنغ"}
+                zero{"{0} فرلنغ"}
+            }
             inch{
                 dnam{"بوصة"}
                 few{"{0} بوصة"}
@@ -926,6 +962,24 @@
             }
         }
         light{
+            candela{
+                dnam{"شمعة"}
+                few{"{0} شمعة"}
+                many{"{0} شمعة"}
+                one{"{0} شمعة"}
+                other{"{0} شمعة"}
+                two{"{0} شمعة"}
+                zero{"{0} شمعة"}
+            }
+            lumen{
+                dnam{"لومن"}
+                few{"{0} لومن"}
+                many{"{0} لومن"}
+                one{"{0} لومن"}
+                other{"{0} لومن"}
+                two{"{0} لومن"}
+                zero{"{0} لومن"}
+            }
             lux{
                 dnam{"لكس"}
                 few{"{0} لكس"}
@@ -973,6 +1027,15 @@
                 two{"{0} كتلة أرضية"}
                 zero{"{0} كتلة أرضية"}
             }
+            grain{
+                dnam{"قمحة"}
+                few{"{0} قمحة"}
+                many{"{0} قمحة"}
+                one{"{0} قمحة"}
+                other{"{0} قمحة"}
+                two{"{0} قمحة"}
+                zero{"{0} قمحة"}
+            }
             gram{
                 dnam{"غرام"}
                 few{"{0} غرامات"}
@@ -1041,7 +1104,7 @@
             }
             pound{
                 dnam{"رطل"}
-                few{"{0} أرطل"}
+                few{"{0} رطل"}
                 many{"{0} رطلًا"}
                 one{"{0} رطل"}
                 other{"{0} رطل"}
@@ -1058,6 +1121,15 @@
                 two{"{0} كتلة شمسية"}
                 zero{"{0} كتلة شمسية"}
             }
+            stone{
+                dnam{"ستون"}
+                few{"{0} ستون"}
+                many{"{0} ستون"}
+                one{"{0} ستون"}
+                other{"{0} ستون"}
+                two{"{0} ستون"}
+                zero{"{0} ستون"}
+            }
             ton{
                 dnam{"طن"}
                 few{"{0} أطنان"}
@@ -1331,6 +1403,15 @@
                 two{"برميلان"}
                 zero{"{0} برميل"}
             }
+            bushel{
+                dnam{"بوشل"}
+                few{"{0} بوشل"}
+                many{"{0} بوشل"}
+                one{"{0} بوشل"}
+                other{"{0} بوشل"}
+                two{"{0} بوشل"}
+                zero{"{0} بوشل"}
+            }
             centiliter{
                 dnam{"سنتيلتر"}
                 few{"{0} سنتيلتر"}
@@ -1432,6 +1513,42 @@
                 two{"{0} ديسيلتر"}
                 zero{"{0} ديسيلتر"}
             }
+            dessert-spoon{
+                dnam{"ملعقة حلو"}
+                few{"{0} ملعقة حلو"}
+                many{"{0} ملعقة حلو"}
+                one{"{0} ملعقة حلو"}
+                other{"{0} ملعقة حلو"}
+                two{"{0} ملعقة حلو"}
+                zero{"{0} ملعقة حلو"}
+            }
+            dessert-spoon-imperial{
+                dnam{"ملعقة حلو إمبراطوري"}
+                few{"{0} ملعقة حلو إمبراطوري"}
+                many{"{0} ملعقة حلو إمبراطوري"}
+                one{"{0} ملعقة حلو إمبراطوري"}
+                other{"{0} ملعقة حلو إمبراطوري"}
+                two{"{0} ملعقة حلو إمبراطوري"}
+                zero{"{0} ملعقة حلو إمبراطوري"}
+            }
+            dram{
+                dnam{"درهم سائل"}
+                few{"{0} درهم سائل"}
+                many{"{0} درهم سائل"}
+                one{"{0} درهم"}
+                other{"{0} درهم"}
+                two{"{0} درهم سائل"}
+                zero{"{0} درهم سائل"}
+            }
+            drop{
+                dnam{"قطرة"}
+                few{"{0} قطرات"}
+                many{"{0} قطرة"}
+                one{"{0} قطرة"}
+                other{"{0} قطرة"}
+                two{"قطرتان"}
+                zero{"{0} قطرة"}
+            }
             fluid-ounce{
                 dnam{"أونصة سائلة"}
                 few{"{0} أونصة سائلة"}
@@ -1479,6 +1596,15 @@
                 two{"{0} هكتولتر"}
                 zero{"{0} هكتولتر"}
             }
+            jigger{
+                dnam{"قدح"}
+                few{"{0} أقداح"}
+                many{"{0} قدح"}
+                one{"{0} قدح"}
+                other{"{0} قدح"}
+                two{"{0} قدح"}
+                zero{"{0} قدح"}
+            }
             liter{
                 dnam{"لتر"}
                 few{"{0} لتر"}
@@ -1507,6 +1633,15 @@
                 two{"{0} مليلتر"}
                 zero{"{0} مليلتر"}
             }
+            pinch{
+                dnam{"رشّة"}
+                few{"{0} رشّات"}
+                many{"{0} رشّة"}
+                one{"{0} رشّة"}
+                other{"{0} رشّة"}
+                two{"{0} رشّة"}
+                zero{"{0} رشّة"}
+            }
             pint{
                 dnam{"باينت"}
                 few{"{0} باينت"}
@@ -1534,6 +1669,15 @@
                 two{"{0} ربع غالون"}
                 zero{"{0} ربع غالون"}
             }
+            quart-imperial{
+                dnam{"ربع غالون إمبراطوري"}
+                few{"{0} ربع غالون إمبراطوري"}
+                many{"{0} ربع غالون إمبراطوري"}
+                one{"{0} ربع غالون إمبراطوري"}
+                other{"{0} ربع غالون إمبراطوري"}
+                two{"{0} ربع غالون إمبراطوري"}
+                zero{"{0} ربع غالون إمبراطوري"}
+            }
             tablespoon{
                 dnam{"ملعقة كبيرة"}
                 few{"{0} ملعقة كبيرة"}
@@ -1712,8 +1856,8 @@
             }
             month{
                 dnam{"شهر"}
-                few{"{0} شهر"}
-                many{"{0} شهر"}
+                few{"{0} أشهر"}
+                many{"{0} شهرًا"}
                 one{"شهر"}
                 other{"{0} شهر"}
                 per{"{0}/ش"}
@@ -2674,13 +2818,22 @@
             }
         }
         graphics{
+            dot{
+                dnam{"بكسل"}
+                few{"{0} بكسل"}
+                many{"{0} بكسل"}
+                one{"{0} بكسل"}
+                other{"{0} بكسل"}
+                two{"{0} بكسل"}
+                zero{"{0} بكسل"}
+            }
             dot-per-centimeter{
-                dnam{"نقطة لكل سنتيمتر"}
+                dnam{"نقطة/سم"}
                 few{"{0} نقاط/سم"}
                 many{"{0} نقطة/سم"}
                 one{"{0} نقطة/سم"}
                 other{"{0} نقطة/سم"}
-                two{"نقطتان/سم"}
+                two{"{0} نقطة/سم"}
                 zero{"{0} نقطة/سم"}
             }
             dot-per-inch{
@@ -2689,7 +2842,7 @@
                 many{"{0} نقطة/بوصة"}
                 one{"{0} نقطة/بوصة"}
                 other{"{0} نقطة/بوصة"}
-                two{"نقطتان/بوصة"}
+                two{"{0} نقطة/بوصة"}
                 zero{"{0} نقطة/بوصة"}
             }
             em{
@@ -2767,6 +2920,24 @@
                 two{"{0} دسم"}
                 zero{"{0} دسم"}
             }
+            earth-radius{
+                dnam{"نق أرضي"}
+                few{"{0} نق أرضي"}
+                many{"{0} نق أرضي"}
+                one{"{0} نق أرضي"}
+                other{"{0} نق أرضي"}
+                two{"{0} نق أرضي"}
+                zero{"{0} نق أرضي"}
+            }
+            fathom{
+                dnam{"قامة"}
+                few{"{0} قامة"}
+                many{"{0} قامة"}
+                one{"{0} قامة"}
+                other{"{0} قامة"}
+                two{"{0} قامة"}
+                zero{"{0} قامة"}
+            }
             foot{
                 dnam{"قدم"}
                 few{"{0} قدم"}
@@ -2777,6 +2948,15 @@
                 two{"{0} قدم"}
                 zero{"{0} قدم"}
             }
+            furlong{
+                dnam{"فرلنغ"}
+                few{"{0} فرلنغ"}
+                many{"{0} فرلنغ"}
+                one{"{0} فرلنغ"}
+                other{"{0} فرلنغ"}
+                two{"{0} فرلنغ"}
+                zero{"{0} فرلنغ"}
+            }
             inch{
                 dnam{"بوصة"}
                 few{"{0} بوصة"}
@@ -2917,6 +3097,24 @@
             }
         }
         light{
+            candela{
+                dnam{"شمعة"}
+                few{"{0} شمعة"}
+                many{"{0} شمعة"}
+                one{"{0} شمعة"}
+                other{"{0} شمعة"}
+                two{"{0} شمعة"}
+                zero{"{0} شمعة"}
+            }
+            lumen{
+                dnam{"لومن"}
+                few{"{0} لومن"}
+                many{"{0} لومن"}
+                one{"{0} لومن"}
+                other{"{0} لومن"}
+                two{"{0} لومن"}
+                zero{"{0} لومن"}
+            }
             lux{
                 dnam{"لكس"}
                 few{"{0} لكس"}
@@ -2964,6 +3162,15 @@
                 two{"{0} كتلة أرضية"}
                 zero{"{0} كتلة أرضية"}
             }
+            grain{
+                dnam{"قمحة"}
+                few{"{0} قمحة"}
+                many{"{0} قمحة"}
+                one{"{0} قمحة"}
+                other{"{0} قمحة"}
+                two{"{0} قمحة"}
+                zero{"{0} قمحة"}
+            }
             gram{
                 dnam{"غرام"}
                 few{"{0} غرام"}
@@ -3049,6 +3256,15 @@
                 two{"{0} كتلة شمسية"}
                 zero{"{0} كتلة شمسية"}
             }
+            stone{
+                dnam{"ستون"}
+                few{"{0} ستون"}
+                many{"{0} ستون"}
+                one{"{0} ستون"}
+                other{"{0} ستون"}
+                two{"{0} ستون"}
+                zero{"{0} ستون"}
+            }
             ton{
                 dnam{"طن"}
                 few{"{0} طن"}
@@ -3322,6 +3538,15 @@
                 two{"برميلان"}
                 zero{"{0} برميل"}
             }
+            bushel{
+                dnam{"بوشل"}
+                few{"{0} بوشل"}
+                many{"{0} بوشل"}
+                one{"{0} بوشل"}
+                other{"{0} بوشل"}
+                two{"{0} بوشل"}
+                zero{"{0} بوشل"}
+            }
             centiliter{
                 dnam{"سنتيلتر"}
                 few{"{0} سنتيلتر"}
@@ -3423,6 +3648,42 @@
                 two{"{0} ديسيلتر"}
                 zero{"{0} ديسيلتر"}
             }
+            dessert-spoon{
+                dnam{"ملعقة ح."}
+                few{"{0} ملعقة ح."}
+                many{"{0} ملعقة ح."}
+                one{"{0} ملعقة ح."}
+                other{"{0} ملعقة ح."}
+                two{"{0} ملعقة ح."}
+                zero{"{0} ملعقة ح."}
+            }
+            dessert-spoon-imperial{
+                dnam{"ملعقة حلو إمبراطوري"}
+                few{"{0} ملعقة ح. إمبراطوري"}
+                many{"{0} ملعقة ح. إمبراطوري"}
+                one{"{0} ملعقة ح. إمبراطوري"}
+                other{"{0} ملعقة ح. إمبراطوري"}
+                two{"{0} ملعقة ح. إمبراطوري"}
+                zero{"{0} ملعقة ح. إمبراطوري"}
+            }
+            dram{
+                dnam{"درهم سائل"}
+                few{"{0} درهم سائل"}
+                many{"{0} درهم سائل"}
+                one{"{0} درهم سائل"}
+                other{"{0} درهم سائل"}
+                two{"{0} درهم سائل"}
+                zero{"{0} درهم سائل"}
+            }
+            drop{
+                dnam{"قطرة"}
+                few{"{0} قطرة"}
+                many{"{0} قطرة"}
+                one{"{0} قطرة"}
+                other{"{0} قطرة"}
+                two{"{0} قطرة"}
+                zero{"{0} قطرة"}
+            }
             fluid-ounce{
                 dnam{"أونصة سائلة"}
                 few{"{0} أونصات سائلة"}
@@ -3464,6 +3725,15 @@
                 two{"{0} هكتولتر"}
                 zero{"{0} هكتولتر"}
             }
+            jigger{
+                dnam{"قدح"}
+                few{"{0} أقداح"}
+                many{"{0} قدح"}
+                one{"{0} قدح"}
+                other{"{0} قدح"}
+                two{"{0} قدح"}
+                zero{"{0} قدح"}
+            }
             liter{
                 dnam{"لتر"}
                 few{"{0} لتر"}
@@ -3492,6 +3762,15 @@
                 two{"{0} ملتر"}
                 zero{"{0} ملتر"}
             }
+            pinch{
+                dnam{"رشّة"}
+                few{"{0} رشّة"}
+                many{"{0} رشّة"}
+                one{"{0} رشّة"}
+                other{"{0} رشّة"}
+                two{"{0} رشّة"}
+                zero{"{0} رشّة"}
+            }
             pint{
                 dnam{"باينت"}
                 few{"{0} باينت"}
@@ -3519,6 +3798,15 @@
                 two{"{0} ربع غالون"}
                 zero{"{0} ربع غالون"}
             }
+            quart-imperial{
+                dnam{"ربع غالون إمبراطوري"}
+                few{"{0} ربع غالون إمبراطوري"}
+                many{"{0} ربع غالون إمبراطوري"}
+                one{"{0} ربع غالون إمبراطوري"}
+                other{"{0} ربع غالون إمبراطوري"}
+                two{"{0} ربع غالون إمبراطوري"}
+                zero{"{0} ربع غالون إمبراطوري"}
+            }
             tablespoon{
                 dnam{"ملعقة كبيرة"}
                 few{"{0} ملعقة ك."}
diff --git a/icu4c/source/data/unit/ar_SA.txt b/icu4c/source/data/unit/ar_SA.txt
index d07e1a8..8c72354 100644
--- a/icu4c/source/data/unit/ar_SA.txt
+++ b/icu4c/source/data/unit/ar_SA.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_SA{
-    Version{"37"}
     units{
         acceleration{
             meter-per-square-second{
diff --git a/icu4c/source/data/unit/ar_XB.txt b/icu4c/source/data/unit/ar_XB.txt
new file mode 100644
index 0000000..ee71539
--- /dev/null
+++ b/icu4c/source/data/unit/ar_XB.txt
@@ -0,0 +1,1928 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+ar_XB{
+    units{
+        acceleration{
+            g-force{
+                dnam{"؜‮g‬؜-؜‮force‬؜"}
+                one{"{0} ؜‮g‬؜-؜‮force‬؜"}
+                other{"{0} ؜‮g‬؜-؜‮force‬؜"}
+            }
+            meter-per-square-second{
+                dnam{"؜‮meters‬؜ ؜‮per‬؜ ؜‮second‬؜ ؜‮squared‬؜"}
+                one{"{0} ؜‮meter‬؜ ؜‮per‬؜ ؜‮second‬؜ ؜‮squared‬؜"}
+                other{"{0} ؜‮meters‬؜ ؜‮per‬؜ ؜‮second‬؜ ؜‮squared‬؜"}
+            }
+        }
+        angle{
+            arc-minute{
+                dnam{"؜‮arcminutes‬؜"}
+                one{"{0} ؜‮arcminute‬؜"}
+                other{"{0} ؜‮arcminutes‬؜"}
+            }
+            arc-second{
+                dnam{"؜‮arcseconds‬؜"}
+                one{"{0} ؜‮arcsecond‬؜"}
+                other{"{0} ؜‮arcseconds‬؜"}
+            }
+            degree{
+                dnam{"؜‮degrees‬؜"}
+                one{"{0} ؜‮degree‬؜"}
+                other{"{0} ؜‮degrees‬؜"}
+            }
+            radian{
+                dnam{"؜‮radians‬؜"}
+                one{"{0} ؜‮radian‬؜"}
+                other{"{0} ؜‮radians‬؜"}
+            }
+            revolution{
+                dnam{"؜‮revolution‬؜"}
+                one{"{0} ؜‮revolution‬؜"}
+                other{"{0} ؜‮revolutions‬؜"}
+            }
+        }
+        area{
+            acre{
+                dnam{"؜‮acres‬؜"}
+                one{"{0} ؜‮acre‬؜"}
+                other{"{0} ؜‮acres‬؜"}
+            }
+            dunam{
+                dnam{"؜‮dunams‬؜"}
+                one{"{0} ؜‮dunam‬؜"}
+                other{"{0} ؜‮dunams‬؜"}
+            }
+            hectare{
+                dnam{"؜‮hectares‬؜"}
+                one{"{0} ؜‮hectare‬؜"}
+                other{"{0} ؜‮hectares‬؜"}
+            }
+            square-centimeter{
+                dnam{"؜‮square‬؜ ؜‮centimeters‬؜"}
+                one{"{0} ؜‮square‬؜ ؜‮centimeter‬؜"}
+                other{"{0} ؜‮square‬؜ ؜‮centimeters‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮square‬؜ ؜‮centimeter‬؜"}
+            }
+            square-foot{
+                dnam{"؜‮square‬؜ ؜‮feet‬؜"}
+                one{"{0} ؜‮square‬؜ ؜‮foot‬؜"}
+                other{"{0} ؜‮square‬؜ ؜‮feet‬؜"}
+            }
+            square-inch{
+                dnam{"؜‮square‬؜ ؜‮inches‬؜"}
+                one{"{0} ؜‮square‬؜ ؜‮inch‬؜"}
+                other{"{0} ؜‮square‬؜ ؜‮inches‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮square‬؜ ؜‮inch‬؜"}
+            }
+            square-kilometer{
+                dnam{"؜‮square‬؜ ؜‮kilometers‬؜"}
+                one{"{0} ؜‮square‬؜ ؜‮kilometer‬؜"}
+                other{"{0} ؜‮square‬؜ ؜‮kilometers‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮square‬؜ ؜‮kilometer‬؜"}
+            }
+            square-meter{
+                dnam{"؜‮square‬؜ ؜‮meters‬؜"}
+                one{"{0} ؜‮square‬؜ ؜‮meter‬؜"}
+                other{"{0} ؜‮square‬؜ ؜‮meters‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮square‬؜ ؜‮meter‬؜"}
+            }
+            square-mile{
+                dnam{"؜‮square‬؜ ؜‮miles‬؜"}
+                one{"{0} ؜‮square‬؜ ؜‮mile‬؜"}
+                other{"{0} ؜‮square‬؜ ؜‮miles‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮square‬؜ ؜‮mile‬؜"}
+            }
+            square-yard{
+                dnam{"؜‮square‬؜ ؜‮yards‬؜"}
+                one{"{0} ؜‮square‬؜ ؜‮yard‬؜"}
+                other{"{0} ؜‮square‬؜ ؜‮yards‬؜"}
+            }
+        }
+        compound{
+            per{"{0} ؜‮per‬؜ {1}"}
+            times{"{0}-{1}"}
+        }
+        concentr{
+            karat{
+                dnam{"؜‮karats‬؜"}
+                one{"{0} ؜‮karat‬؜"}
+                other{"{0} ؜‮karats‬؜"}
+            }
+            milligram-per-deciliter{
+                dnam{"؜‮milligrams‬؜ ؜‮per‬؜ ؜‮deciliter‬؜"}
+                one{"{0} ؜‮milligram‬؜ ؜‮per‬؜ ؜‮deciliter‬؜"}
+                other{"{0} ؜‮milligrams‬؜ ؜‮per‬؜ ؜‮deciliter‬؜"}
+            }
+            millimole-per-liter{
+                dnam{"؜‮millimoles‬؜ ؜‮per‬؜ ؜‮liter‬؜"}
+                one{"{0} ؜‮millimole‬؜ ؜‮per‬؜ ؜‮liter‬؜"}
+                other{"{0} ؜‮millimoles‬؜ ؜‮per‬؜ ؜‮liter‬؜"}
+            }
+            mole{
+                dnam{"؜‮moles‬؜"}
+                one{"{0} ؜‮mole‬؜"}
+                other{"{0} ؜‮moles‬؜"}
+            }
+            percent{
+                dnam{"؜‮percent‬؜"}
+                one{"{0} ؜‮percent‬؜"}
+                other{"{0} ؜‮percent‬؜"}
+            }
+            permille{
+                dnam{"؜‮permille‬؜"}
+                one{"{0} ؜‮permille‬؜"}
+                other{"{0} ؜‮permille‬؜"}
+            }
+            permillion{
+                dnam{"؜‮parts‬؜ ؜‮per‬؜ ؜‮million‬؜"}
+                one{"{0} ؜‮part‬؜ ؜‮per‬؜ ؜‮million‬؜"}
+                other{"{0} ؜‮parts‬؜ ؜‮per‬؜ ؜‮million‬؜"}
+            }
+            permyriad{
+                dnam{"؜‮permyriad‬؜"}
+                one{"{0} ؜‮permyriad‬؜"}
+                other{"{0} ؜‮permyriad‬؜"}
+            }
+        }
+        consumption{
+            liter-per-100-kilometer{
+                dnam{"؜‮liters‬؜ ؜‮per‬؜ 100 ؜‮kilometers‬؜"}
+                one{"{0} ؜‮liter‬؜ ؜‮per‬؜ 100 ؜‮kilometers‬؜"}
+                other{"{0} ؜‮liters‬؜ ؜‮per‬؜ 100 ؜‮kilometers‬؜"}
+            }
+            liter-per-kilometer{
+                dnam{"؜‮liters‬؜ ؜‮per‬؜ ؜‮kilometer‬؜"}
+                one{"{0} ؜‮liter‬؜ ؜‮per‬؜ ؜‮kilometer‬؜"}
+                other{"{0} ؜‮liters‬؜ ؜‮per‬؜ ؜‮kilometer‬؜"}
+            }
+            mile-per-gallon{
+                dnam{"؜‮miles‬؜ ؜‮per‬؜ ؜‮gallon‬؜"}
+                one{"{0} ؜‮mile‬؜ ؜‮per‬؜ ؜‮gallon‬؜"}
+                other{"{0} ؜‮miles‬؜ ؜‮per‬؜ ؜‮gallon‬؜"}
+            }
+            mile-per-gallon-imperial{
+                dnam{"؜‮miles‬؜ ؜‮per‬؜ ؜‮Imp‬؜. ؜‮gallon‬؜"}
+                one{"{0} ؜‮mile‬؜ ؜‮per‬؜ ؜‮Imp‬؜. ؜‮gallon‬؜"}
+                other{"{0} ؜‮miles‬؜ ؜‮per‬؜ ؜‮Imp‬؜. ؜‮gallon‬؜"}
+            }
+        }
+        coordinate{
+            dnam{"؜‮cardinal‬؜ ؜‮direction‬؜"}
+            east{"{0} ؜‮east‬؜"}
+            north{"{0} ؜‮north‬؜"}
+            south{"{0} ؜‮south‬؜"}
+            west{"{0} ؜‮west‬؜"}
+        }
+        digital{
+            bit{
+                dnam{"؜‮bits‬؜"}
+                one{"{0} ؜‮bit‬؜"}
+                other{"{0} ؜‮bits‬؜"}
+            }
+            byte{
+                dnam{"؜‮bytes‬؜"}
+                one{"{0} ؜‮byte‬؜"}
+                other{"{0} ؜‮bytes‬؜"}
+            }
+            gigabit{
+                dnam{"؜‮gigabits‬؜"}
+                one{"{0} ؜‮gigabit‬؜"}
+                other{"{0} ؜‮gigabits‬؜"}
+            }
+            gigabyte{
+                dnam{"؜‮gigabytes‬؜"}
+                one{"{0} ؜‮gigabyte‬؜"}
+                other{"{0} ؜‮gigabytes‬؜"}
+            }
+            kilobit{
+                dnam{"؜‮kilobits‬؜"}
+                one{"{0} ؜‮kilobit‬؜"}
+                other{"{0} ؜‮kilobits‬؜"}
+            }
+            kilobyte{
+                dnam{"؜‮kilobytes‬؜"}
+                one{"{0} ؜‮kilobyte‬؜"}
+                other{"{0} ؜‮kilobytes‬؜"}
+            }
+            megabit{
+                dnam{"؜‮megabits‬؜"}
+                one{"{0} ؜‮megabit‬؜"}
+                other{"{0} ؜‮megabits‬؜"}
+            }
+            megabyte{
+                dnam{"؜‮megabytes‬؜"}
+                one{"{0} ؜‮megabyte‬؜"}
+                other{"{0} ؜‮megabytes‬؜"}
+            }
+            petabyte{
+                dnam{"؜‮petabytes‬؜"}
+                one{"{0} ؜‮petabyte‬؜"}
+                other{"{0} ؜‮petabytes‬؜"}
+            }
+            terabit{
+                dnam{"؜‮terabits‬؜"}
+                one{"{0} ؜‮terabit‬؜"}
+                other{"{0} ؜‮terabits‬؜"}
+            }
+            terabyte{
+                dnam{"؜‮terabytes‬؜"}
+                one{"{0} ؜‮terabyte‬؜"}
+                other{"{0} ؜‮terabytes‬؜"}
+            }
+        }
+        duration{
+            century{
+                dnam{"؜‮centuries‬؜"}
+                one{"{0} ؜‮century‬؜"}
+                other{"{0} ؜‮centuries‬؜"}
+            }
+            day{
+                dnam{"؜‮days‬؜"}
+                one{"{0} ؜‮day‬؜"}
+                other{"{0} ؜‮days‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮day‬؜"}
+            }
+            decade{
+                dnam{"؜‮decades‬؜"}
+                one{"{0} ؜‮decade‬؜"}
+                other{"{0} ؜‮decades‬؜"}
+            }
+            hour{
+                dnam{"؜‮hours‬؜"}
+                one{"{0} ؜‮hour‬؜"}
+                other{"{0} ؜‮hours‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮hour‬؜"}
+            }
+            microsecond{
+                dnam{"؜‮microseconds‬؜"}
+                one{"{0} ؜‮microsecond‬؜"}
+                other{"{0} ؜‮microseconds‬؜"}
+            }
+            millisecond{
+                dnam{"؜‮milliseconds‬؜"}
+                one{"{0} ؜‮millisecond‬؜"}
+                other{"{0} ؜‮milliseconds‬؜"}
+            }
+            minute{
+                dnam{"؜‮minutes‬؜"}
+                one{"{0} ؜‮minute‬؜"}
+                other{"{0} ؜‮minutes‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮minute‬؜"}
+            }
+            month{
+                dnam{"؜‮months‬؜"}
+                one{"{0} ؜‮month‬؜"}
+                other{"{0} ؜‮months‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮month‬؜"}
+            }
+            nanosecond{
+                dnam{"؜‮nanoseconds‬؜"}
+                one{"{0} ؜‮nanosecond‬؜"}
+                other{"{0} ؜‮nanoseconds‬؜"}
+            }
+            second{
+                dnam{"؜‮seconds‬؜"}
+                one{"{0} ؜‮second‬؜"}
+                other{"{0} ؜‮seconds‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮second‬؜"}
+            }
+            week{
+                dnam{"؜‮weeks‬؜"}
+                one{"{0} ؜‮week‬؜"}
+                other{"{0} ؜‮weeks‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮week‬؜"}
+            }
+            year{
+                dnam{"؜‮years‬؜"}
+                one{"{0} ؜‮year‬؜"}
+                other{"{0} ؜‮years‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮year‬؜"}
+            }
+        }
+        electric{
+            ampere{
+                dnam{"؜‮amperes‬؜"}
+                one{"{0} ؜‮ampere‬؜"}
+                other{"{0} ؜‮amperes‬؜"}
+            }
+            milliampere{
+                dnam{"؜‮milliamperes‬؜"}
+                one{"{0} ؜‮milliampere‬؜"}
+                other{"{0} ؜‮milliamperes‬؜"}
+            }
+            ohm{
+                dnam{"؜‮ohms‬؜"}
+                one{"{0} ؜‮ohm‬؜"}
+                other{"{0} ؜‮ohms‬؜"}
+            }
+            volt{
+                dnam{"؜‮volts‬؜"}
+                one{"{0} ؜‮volt‬؜"}
+                other{"{0} ؜‮volts‬؜"}
+            }
+        }
+        energy{
+            british-thermal-unit{
+                dnam{"؜‮British‬؜ ؜‮thermal‬؜ ؜‮units‬؜"}
+                one{"{0} ؜‮British‬؜ ؜‮thermal‬؜ ؜‮unit‬؜"}
+                other{"{0} ؜‮British‬؜ ؜‮thermal‬؜ ؜‮units‬؜"}
+            }
+            calorie{
+                dnam{"؜‮calories‬؜"}
+                one{"{0} ؜‮calorie‬؜"}
+                other{"{0} ؜‮calories‬؜"}
+            }
+            electronvolt{
+                dnam{"؜‮electronvolts‬؜"}
+                one{"{0} ؜‮electronvolt‬؜"}
+                other{"{0} ؜‮electronvolts‬؜"}
+            }
+            foodcalorie{
+                dnam{"؜‮Calories‬؜"}
+                one{"{0} ؜‮Calorie‬؜"}
+                other{"{0} ؜‮Calories‬؜"}
+            }
+            joule{
+                dnam{"؜‮joules‬؜"}
+                one{"{0} ؜‮joule‬؜"}
+                other{"{0} ؜‮joules‬؜"}
+            }
+            kilocalorie{
+                dnam{"؜‮kilocalories‬؜"}
+                one{"{0} ؜‮kilocalorie‬؜"}
+                other{"{0} ؜‮kilocalories‬؜"}
+            }
+            kilojoule{
+                dnam{"؜‮kilojoules‬؜"}
+                one{"{0} ؜‮kilojoule‬؜"}
+                other{"{0} ؜‮kilojoules‬؜"}
+            }
+            kilowatt-hour{
+                dnam{"؜‮kilowatt‬؜-؜‮hours‬؜"}
+                one{"{0} ؜‮kilowatt‬؜ ؜‮hour‬؜"}
+                other{"{0} ؜‮kilowatt‬؜-؜‮hours‬؜"}
+            }
+            therm-us{
+                dnam{"؜‮US‬؜ ؜‮therms‬؜"}
+                one{"{0} ؜‮US‬؜ ؜‮therm‬؜"}
+                other{"{0} ؜‮US‬؜ ؜‮therms‬؜"}
+            }
+        }
+        force{
+            newton{
+                dnam{"؜‮newtons‬؜"}
+                one{"{0} ؜‮newton‬؜"}
+                other{"{0} ؜‮newtons‬؜"}
+            }
+            pound-force{
+                dnam{"؜‮pounds‬؜ ؜‮of‬؜ ؜‮force‬؜"}
+                one{"{0} ؜‮pound‬؜ ؜‮of‬؜ ؜‮force‬؜"}
+                other{"{0} ؜‮pounds‬؜ ؜‮of‬؜ ؜‮force‬؜"}
+            }
+        }
+        frequency{
+            gigahertz{
+                dnam{"؜‮gigahertz‬؜"}
+                one{"{0} ؜‮gigahertz‬؜"}
+                other{"{0} ؜‮gigahertz‬؜"}
+            }
+            hertz{
+                dnam{"؜‮hertz‬؜"}
+                one{"{0} ؜‮hertz‬؜"}
+                other{"{0} ؜‮hertz‬؜"}
+            }
+            kilohertz{
+                dnam{"؜‮kilohertz‬؜"}
+                one{"{0} ؜‮kilohertz‬؜"}
+                other{"{0} ؜‮kilohertz‬؜"}
+            }
+            megahertz{
+                dnam{"؜‮megahertz‬؜"}
+                one{"{0} ؜‮megahertz‬؜"}
+                other{"{0} ؜‮megahertz‬؜"}
+            }
+        }
+        graphics{
+            dot{
+                dnam{"؜‮dot‬؜"}
+                one{"{0} ؜‮dot‬؜"}
+                other{"{0} ؜‮dot‬؜"}
+            }
+            dot-per-centimeter{
+                dnam{"؜‮dots‬؜ ؜‮per‬؜ ؜‮centimeter‬؜"}
+                one{"{0} ؜‮dot‬؜ ؜‮per‬؜ ؜‮centimeter‬؜"}
+                other{"{0} ؜‮dots‬؜ ؜‮per‬؜ ؜‮centimeter‬؜"}
+            }
+            dot-per-inch{
+                dnam{"؜‮dots‬؜ ؜‮per‬؜ ؜‮inch‬؜"}
+                one{"{0} ؜‮dot‬؜ ؜‮per‬؜ ؜‮inch‬؜"}
+                other{"{0} ؜‮dots‬؜ ؜‮per‬؜ ؜‮inch‬؜"}
+            }
+            em{
+                dnam{"؜‮typographic‬؜ ؜‮em‬؜"}
+                one{"{0} ؜‮em‬؜"}
+                other{"{0} ؜‮ems‬؜"}
+            }
+            megapixel{
+                dnam{"؜‮megapixels‬؜"}
+                one{"{0} ؜‮megapixel‬؜"}
+                other{"{0} ؜‮megapixels‬؜"}
+            }
+            pixel{
+                dnam{"؜‮pixels‬؜"}
+                one{"{0} ؜‮pixel‬؜"}
+                other{"{0} ؜‮pixels‬؜"}
+            }
+            pixel-per-centimeter{
+                dnam{"؜‮pixels‬؜ ؜‮per‬؜ ؜‮centimeter‬؜"}
+                one{"{0} ؜‮pixel‬؜ ؜‮per‬؜ ؜‮centimeter‬؜"}
+                other{"{0} ؜‮pixels‬؜ ؜‮per‬؜ ؜‮centimeter‬؜"}
+            }
+            pixel-per-inch{
+                dnam{"؜‮pixels‬؜ ؜‮per‬؜ ؜‮inch‬؜"}
+                one{"{0} ؜‮pixel‬؜ ؜‮per‬؜ ؜‮inch‬؜"}
+                other{"{0} ؜‮pixels‬؜ ؜‮per‬؜ ؜‮inch‬؜"}
+            }
+        }
+        length{
+            astronomical-unit{
+                dnam{"؜‮astronomical‬؜ ؜‮units‬؜"}
+                one{"{0} ؜‮astronomical‬؜ ؜‮unit‬؜"}
+                other{"{0} ؜‮astronomical‬؜ ؜‮units‬؜"}
+            }
+            centimeter{
+                dnam{"؜‮centimeters‬؜"}
+                one{"{0} ؜‮centimeter‬؜"}
+                other{"{0} ؜‮centimeters‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮centimeter‬؜"}
+            }
+            decimeter{
+                dnam{"؜‮decimeters‬؜"}
+                one{"{0} ؜‮decimeter‬؜"}
+                other{"{0} ؜‮decimeters‬؜"}
+            }
+            earth-radius{
+                dnam{"؜‮earth‬؜ ؜‮radius‬؜"}
+                one{"{0} ؜‮earth‬؜ ؜‮radius‬؜"}
+                other{"{0} ؜‮earth‬؜ ؜‮radius‬؜"}
+            }
+            fathom{
+                dnam{"؜‮fathoms‬؜"}
+                one{"{0} ؜‮fathom‬؜"}
+                other{"{0} ؜‮fathoms‬؜"}
+            }
+            foot{
+                dnam{"؜‮feet‬؜"}
+                one{"{0} ؜‮foot‬؜"}
+                other{"{0} ؜‮feet‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮foot‬؜"}
+            }
+            furlong{
+                dnam{"؜‮furlongs‬؜"}
+                one{"{0} ؜‮furlong‬؜"}
+                other{"{0} ؜‮furlongs‬؜"}
+            }
+            inch{
+                dnam{"؜‮inches‬؜"}
+                one{"{0} ؜‮inch‬؜"}
+                other{"{0} ؜‮inches‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮inch‬؜"}
+            }
+            kilometer{
+                dnam{"؜‮kilometers‬؜"}
+                one{"{0} ؜‮kilometer‬؜"}
+                other{"{0} ؜‮kilometers‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮kilometer‬؜"}
+            }
+            light-year{
+                dnam{"؜‮light‬؜ ؜‮years‬؜"}
+                one{"{0} ؜‮light‬؜ ؜‮year‬؜"}
+                other{"{0} ؜‮light‬؜ ؜‮years‬؜"}
+            }
+            meter{
+                dnam{"؜‮meters‬؜"}
+                one{"{0} ؜‮meter‬؜"}
+                other{"{0} ؜‮meters‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮meter‬؜"}
+            }
+            micrometer{
+                dnam{"؜‮micrometers‬؜"}
+                one{"{0} ؜‮micrometer‬؜"}
+                other{"{0} ؜‮micrometers‬؜"}
+            }
+            mile{
+                dnam{"؜‮miles‬؜"}
+                one{"{0} ؜‮mile‬؜"}
+                other{"{0} ؜‮miles‬؜"}
+            }
+            mile-scandinavian{
+                dnam{"؜‮mile‬؜-؜‮scandinavian‬؜"}
+                one{"{0} ؜‮mile‬؜-؜‮scandinavian‬؜"}
+                other{"{0} ؜‮miles‬؜-؜‮scandinavian‬؜"}
+            }
+            millimeter{
+                dnam{"؜‮millimeters‬؜"}
+                one{"{0} ؜‮millimeter‬؜"}
+                other{"{0} ؜‮millimeters‬؜"}
+            }
+            nanometer{
+                dnam{"؜‮nanometers‬؜"}
+                one{"{0} ؜‮nanometer‬؜"}
+                other{"{0} ؜‮nanometers‬؜"}
+            }
+            nautical-mile{
+                dnam{"؜‮nautical‬؜ ؜‮miles‬؜"}
+                one{"{0} ؜‮nautical‬؜ ؜‮mile‬؜"}
+                other{"{0} ؜‮nautical‬؜ ؜‮miles‬؜"}
+            }
+            parsec{
+                dnam{"؜‮parsecs‬؜"}
+                one{"{0} ؜‮parsec‬؜"}
+                other{"{0} ؜‮parsecs‬؜"}
+            }
+            picometer{
+                dnam{"؜‮picometers‬؜"}
+                one{"{0} ؜‮picometer‬؜"}
+                other{"{0} ؜‮picometers‬؜"}
+            }
+            point{
+                dnam{"؜‮points‬؜"}
+                one{"{0} ؜‮point‬؜"}
+                other{"{0} ؜‮points‬؜"}
+            }
+            solar-radius{
+                dnam{"؜‮solar‬؜ ؜‮radii‬؜"}
+                one{"{0} ؜‮solar‬؜ ؜‮radius‬؜"}
+                other{"{0} ؜‮solar‬؜ ؜‮radii‬؜"}
+            }
+            yard{
+                dnam{"؜‮yards‬؜"}
+                one{"{0} ؜‮yard‬؜"}
+                other{"{0} ؜‮yards‬؜"}
+            }
+        }
+        light{
+            candela{
+                dnam{"؜‮candela‬؜"}
+                one{"{0} ؜‮candela‬؜"}
+                other{"{0} ؜‮candela‬؜"}
+            }
+            lumen{
+                dnam{"؜‮lumen‬؜"}
+                one{"{0} ؜‮lumen‬؜"}
+                other{"{0} ؜‮lumen‬؜"}
+            }
+            lux{
+                dnam{"؜‮lux‬؜"}
+                one{"{0} ؜‮lux‬؜"}
+                other{"{0} ؜‮lux‬؜"}
+            }
+            solar-luminosity{
+                dnam{"؜‮solar‬؜ ؜‮luminosities‬؜"}
+                one{"{0} ؜‮solar‬؜ ؜‮luminosity‬؜"}
+                other{"{0} ؜‮solar‬؜ ؜‮luminosities‬؜"}
+            }
+        }
+        mass{
+            carat{
+                dnam{"؜‮carats‬؜"}
+                one{"{0} ؜‮carat‬؜"}
+                other{"{0} ؜‮carats‬؜"}
+            }
+            dalton{
+                dnam{"؜‮daltons‬؜"}
+                one{"{0} ؜‮dalton‬؜"}
+                other{"{0} ؜‮daltons‬؜"}
+            }
+            earth-mass{
+                dnam{"؜‮Earth‬؜ ؜‮masses‬؜"}
+                one{"{0} ؜‮Earth‬؜ ؜‮mass‬؜"}
+                other{"{0} ؜‮Earth‬؜ ؜‮masses‬؜"}
+            }
+            grain{
+                dnam{"؜‮grain‬؜"}
+                one{"{0} ؜‮grain‬؜"}
+                other{"{0} ؜‮grain‬؜"}
+            }
+            gram{
+                dnam{"؜‮grams‬؜"}
+                one{"{0} ؜‮gram‬؜"}
+                other{"{0} ؜‮grams‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮gram‬؜"}
+            }
+            kilogram{
+                dnam{"؜‮kilograms‬؜"}
+                one{"{0} ؜‮kilogram‬؜"}
+                other{"{0} ؜‮kilograms‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮kilogram‬؜"}
+            }
+            metric-ton{
+                dnam{"؜‮metric‬؜ ؜‮tons‬؜"}
+                one{"{0} ؜‮metric‬؜ ؜‮ton‬؜"}
+                other{"{0} ؜‮metric‬؜ ؜‮tons‬؜"}
+            }
+            microgram{
+                dnam{"؜‮micrograms‬؜"}
+                one{"{0} ؜‮microgram‬؜"}
+                other{"{0} ؜‮micrograms‬؜"}
+            }
+            milligram{
+                dnam{"؜‮milligrams‬؜"}
+                one{"{0} ؜‮milligram‬؜"}
+                other{"{0} ؜‮milligrams‬؜"}
+            }
+            ounce{
+                dnam{"؜‮ounces‬؜"}
+                one{"{0} ؜‮ounce‬؜"}
+                other{"{0} ؜‮ounces‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮ounce‬؜"}
+            }
+            ounce-troy{
+                dnam{"؜‮troy‬؜ ؜‮ounces‬؜"}
+                one{"{0} ؜‮troy‬؜ ؜‮ounce‬؜"}
+                other{"{0} ؜‮troy‬؜ ؜‮ounces‬؜"}
+            }
+            pound{
+                dnam{"؜‮pounds‬؜"}
+                one{"{0} ؜‮pound‬؜"}
+                other{"{0} ؜‮pounds‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮pound‬؜"}
+            }
+            solar-mass{
+                dnam{"؜‮solar‬؜ ؜‮masses‬؜"}
+                one{"{0} ؜‮solar‬؜ ؜‮mass‬؜"}
+                other{"{0} ؜‮solar‬؜ ؜‮masses‬؜"}
+            }
+            stone{
+                dnam{"؜‮stones‬؜"}
+                one{"{0} ؜‮stone‬؜"}
+                other{"{0} ؜‮stones‬؜"}
+            }
+            ton{
+                dnam{"؜‮tons‬؜"}
+                one{"{0} ؜‮ton‬؜"}
+                other{"{0} ؜‮tons‬؜"}
+            }
+        }
+        power{
+            gigawatt{
+                dnam{"؜‮gigawatts‬؜"}
+                one{"{0} ؜‮gigawatt‬؜"}
+                other{"{0} ؜‮gigawatts‬؜"}
+            }
+            horsepower{
+                dnam{"؜‮horsepower‬؜"}
+                one{"{0} ؜‮horsepower‬؜"}
+                other{"{0} ؜‮horsepower‬؜"}
+            }
+            kilowatt{
+                dnam{"؜‮kilowatts‬؜"}
+                one{"{0} ؜‮kilowatt‬؜"}
+                other{"{0} ؜‮kilowatts‬؜"}
+            }
+            megawatt{
+                dnam{"؜‮megawatts‬؜"}
+                one{"{0} ؜‮megawatt‬؜"}
+                other{"{0} ؜‮megawatts‬؜"}
+            }
+            milliwatt{
+                dnam{"؜‮milliwatts‬؜"}
+                one{"{0} ؜‮milliwatt‬؜"}
+                other{"{0} ؜‮milliwatts‬؜"}
+            }
+            watt{
+                dnam{"؜‮watts‬؜"}
+                one{"{0} ؜‮watt‬؜"}
+                other{"{0} ؜‮watts‬؜"}
+            }
+        }
+        pressure{
+            atmosphere{
+                dnam{"؜‮atmospheres‬؜"}
+                one{"{0} ؜‮atmosphere‬؜"}
+                other{"{0} ؜‮atmospheres‬؜"}
+            }
+            bar{
+                dnam{"؜‮bars‬؜"}
+                one{"{0} ؜‮bar‬؜"}
+                other{"{0} ؜‮bars‬؜"}
+            }
+            hectopascal{
+                dnam{"؜‮hectopascals‬؜"}
+                one{"{0} ؜‮hectopascal‬؜"}
+                other{"{0} ؜‮hectopascals‬؜"}
+            }
+            inch-ofhg{
+                dnam{"؜‮inches‬؜ ؜‮of‬؜ ؜‮mercury‬؜"}
+                one{"{0} ؜‮inch‬؜ ؜‮of‬؜ ؜‮mercury‬؜"}
+                other{"{0} ؜‮inches‬؜ ؜‮of‬؜ ؜‮mercury‬؜"}
+            }
+            kilopascal{
+                dnam{"؜‮kilopascals‬؜"}
+                one{"{0} ؜‮kilopascal‬؜"}
+                other{"{0} ؜‮kilopascals‬؜"}
+            }
+            megapascal{
+                dnam{"؜‮megapascals‬؜"}
+                one{"{0} ؜‮megapascal‬؜"}
+                other{"{0} ؜‮megapascals‬؜"}
+            }
+            millibar{
+                dnam{"؜‮millibars‬؜"}
+                one{"{0} ؜‮millibar‬؜"}
+                other{"{0} ؜‮millibars‬؜"}
+            }
+            millimeter-ofhg{
+                dnam{"؜‮millimeters‬؜ ؜‮of‬؜ ؜‮mercury‬؜"}
+                one{"{0} ؜‮millimeter‬؜ ؜‮of‬؜ ؜‮mercury‬؜"}
+                other{"{0} ؜‮millimeters‬؜ ؜‮of‬؜ ؜‮mercury‬؜"}
+            }
+            pascal{
+                dnam{"؜‮pascals‬؜"}
+                one{"{0} ؜‮pascal‬؜"}
+                other{"{0} ؜‮pascals‬؜"}
+            }
+            pound-force-per-square-inch{
+                dnam{"؜‮pounds‬؜-؜‮force‬؜ ؜‮per‬؜ ؜‮square‬؜ ؜‮inch‬؜"}
+                one{"{0} ؜‮pound‬؜-؜‮force‬؜ ؜‮per‬؜ ؜‮square‬؜ ؜‮inch‬؜"}
+                other{"{0} ؜‮pounds‬؜-؜‮force‬؜ ؜‮per‬؜ ؜‮square‬؜ ؜‮inch‬؜"}
+            }
+        }
+        speed{
+            kilometer-per-hour{
+                dnam{"؜‮kilometers‬؜ ؜‮per‬؜ ؜‮hour‬؜"}
+                one{"{0} ؜‮kilometer‬؜ ؜‮per‬؜ ؜‮hour‬؜"}
+                other{"{0} ؜‮kilometers‬؜ ؜‮per‬؜ ؜‮hour‬؜"}
+            }
+            knot{
+                dnam{"؜‮knots‬؜"}
+                one{"{0} ؜‮knot‬؜"}
+                other{"{0} ؜‮knots‬؜"}
+            }
+            meter-per-second{
+                dnam{"؜‮meters‬؜ ؜‮per‬؜ ؜‮second‬؜"}
+                one{"{0} ؜‮meter‬؜ ؜‮per‬؜ ؜‮second‬؜"}
+                other{"{0} ؜‮meters‬؜ ؜‮per‬؜ ؜‮second‬؜"}
+            }
+            mile-per-hour{
+                dnam{"؜‮miles‬؜ ؜‮per‬؜ ؜‮hour‬؜"}
+                one{"{0} ؜‮mile‬؜ ؜‮per‬؜ ؜‮hour‬؜"}
+                other{"{0} ؜‮miles‬؜ ؜‮per‬؜ ؜‮hour‬؜"}
+            }
+        }
+        temperature{
+            celsius{
+                dnam{"؜‮degrees‬؜ ؜‮Celsius‬؜"}
+                one{"{0} ؜‮degree‬؜ ؜‮Celsius‬؜"}
+                other{"{0} ؜‮degrees‬؜ ؜‮Celsius‬؜"}
+            }
+            fahrenheit{
+                dnam{"؜‮degrees‬؜ ؜‮Fahrenheit‬؜"}
+                one{"{0} ؜‮degree‬؜ ؜‮Fahrenheit‬؜"}
+                other{"{0} ؜‮degrees‬؜ ؜‮Fahrenheit‬؜"}
+            }
+            generic{
+                dnam{"°"}
+            }
+            kelvin{
+                dnam{"؜‮kelvins‬؜"}
+                one{"{0} ؜‮kelvin‬؜"}
+                other{"{0} ؜‮kelvins‬؜"}
+            }
+        }
+        torque{
+            newton-meter{
+                dnam{"؜‮newton‬؜-؜‮meters‬؜"}
+                one{"{0} ؜‮newton‬؜-؜‮meter‬؜"}
+                other{"{0} ؜‮newton‬؜-؜‮meters‬؜"}
+            }
+            pound-force-foot{
+                dnam{"؜‮pound‬؜-؜‮feet‬؜"}
+                one{"{0} ؜‮pound‬؜-؜‮force‬؜-؜‮foot‬؜"}
+                other{"{0} ؜‮pound‬؜-؜‮force‬؜-؜‮feet‬؜"}
+            }
+        }
+        volume{
+            acre-foot{
+                dnam{"؜‮acre‬؜-؜‮feet‬؜"}
+                one{"{0} ؜‮acre‬؜-؜‮foot‬؜"}
+                other{"{0} ؜‮acre‬؜-؜‮feet‬؜"}
+            }
+            barrel{
+                dnam{"؜‮barrels‬؜"}
+                one{"{0} ؜‮barrel‬؜"}
+                other{"{0} ؜‮barrels‬؜"}
+            }
+            bushel{
+                dnam{"؜‮bushels‬؜"}
+                one{"{0} ؜‮bushel‬؜"}
+                other{"{0} ؜‮bushels‬؜"}
+            }
+            centiliter{
+                dnam{"؜‮centiliters‬؜"}
+                one{"{0} ؜‮centiliter‬؜"}
+                other{"{0} ؜‮centiliters‬؜"}
+            }
+            cubic-centimeter{
+                dnam{"؜‮cubic‬؜ ؜‮centimeters‬؜"}
+                one{"{0} ؜‮cubic‬؜ ؜‮centimeter‬؜"}
+                other{"{0} ؜‮cubic‬؜ ؜‮centimeters‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮cubic‬؜ ؜‮centimeter‬؜"}
+            }
+            cubic-foot{
+                dnam{"؜‮cubic‬؜ ؜‮feet‬؜"}
+                one{"{0} ؜‮cubic‬؜ ؜‮foot‬؜"}
+                other{"{0} ؜‮cubic‬؜ ؜‮feet‬؜"}
+            }
+            cubic-inch{
+                dnam{"؜‮cubic‬؜ ؜‮inches‬؜"}
+                one{"{0} ؜‮cubic‬؜ ؜‮inch‬؜"}
+                other{"{0} ؜‮cubic‬؜ ؜‮inches‬؜"}
+            }
+            cubic-kilometer{
+                dnam{"؜‮cubic‬؜ ؜‮kilometers‬؜"}
+                one{"{0} ؜‮cubic‬؜ ؜‮kilometer‬؜"}
+                other{"{0} ؜‮cubic‬؜ ؜‮kilometers‬؜"}
+            }
+            cubic-meter{
+                dnam{"؜‮cubic‬؜ ؜‮meters‬؜"}
+                one{"{0} ؜‮cubic‬؜ ؜‮meter‬؜"}
+                other{"{0} ؜‮cubic‬؜ ؜‮meters‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮cubic‬؜ ؜‮meter‬؜"}
+            }
+            cubic-mile{
+                dnam{"؜‮cubic‬؜ ؜‮miles‬؜"}
+                one{"{0} ؜‮cubic‬؜ ؜‮mile‬؜"}
+                other{"{0} ؜‮cubic‬؜ ؜‮miles‬؜"}
+            }
+            cubic-yard{
+                dnam{"؜‮cubic‬؜ ؜‮yards‬؜"}
+                one{"{0} ؜‮cubic‬؜ ؜‮yard‬؜"}
+                other{"{0} ؜‮cubic‬؜ ؜‮yards‬؜"}
+            }
+            cup{
+                dnam{"؜‮cups‬؜"}
+                one{"{0} ؜‮cup‬؜"}
+                other{"{0} ؜‮cups‬؜"}
+            }
+            cup-metric{
+                dnam{"؜‮metric‬؜ ؜‮cups‬؜"}
+                one{"{0} ؜‮metric‬؜ ؜‮cup‬؜"}
+                other{"{0} ؜‮metric‬؜ ؜‮cups‬؜"}
+            }
+            deciliter{
+                dnam{"؜‮deciliters‬؜"}
+                one{"{0} ؜‮deciliter‬؜"}
+                other{"{0} ؜‮deciliters‬؜"}
+            }
+            dessert-spoon{
+                dnam{"؜‮dessert‬؜ ؜‮spoon‬؜"}
+                one{"{0} ؜‮dessert‬؜ ؜‮spoon‬؜"}
+                other{"{0} ؜‮dessert‬؜ ؜‮spoon‬؜"}
+            }
+            dessert-spoon-imperial{
+                dnam{"؜‮Imp‬؜. ؜‮dessert‬؜ ؜‮spoon‬؜"}
+                one{"{0} ؜‮Imp‬؜. ؜‮dessert‬؜ ؜‮spoon‬؜"}
+                other{"{0} ؜‮Imp‬؜. ؜‮dessert‬؜ ؜‮spoon‬؜"}
+            }
+            dram{
+                dnam{"؜‮dram‬؜"}
+                one{"{0} ؜‮dram‬؜"}
+                other{"{0} ؜‮dram‬؜"}
+            }
+            drop{
+                dnam{"؜‮drop‬؜"}
+                one{"{0} ؜‮drop‬؜"}
+                other{"{0} ؜‮drop‬؜"}
+            }
+            fluid-ounce{
+                dnam{"؜‮fluid‬؜ ؜‮ounces‬؜"}
+                one{"{0} ؜‮fluid‬؜ ؜‮ounce‬؜"}
+                other{"{0} ؜‮fluid‬؜ ؜‮ounces‬؜"}
+            }
+            fluid-ounce-imperial{
+                dnam{"؜‮Imp‬؜. ؜‮fluid‬؜ ؜‮ounces‬؜"}
+                one{"{0} ؜‮Imp‬؜. ؜‮fluid‬؜ ؜‮ounce‬؜"}
+                other{"{0} ؜‮Imp‬؜. ؜‮fluid‬؜ ؜‮ounces‬؜"}
+            }
+            gallon{
+                dnam{"؜‮gallons‬؜"}
+                one{"{0} ؜‮gallon‬؜"}
+                other{"{0} ؜‮gallons‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮gallon‬؜"}
+            }
+            gallon-imperial{
+                dnam{"؜‮Imp‬؜. ؜‮gallons‬؜"}
+                one{"{0} ؜‮Imp‬؜. ؜‮gallon‬؜"}
+                other{"{0} ؜‮Imp‬؜. ؜‮gallons‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮Imp‬؜. ؜‮gallon‬؜"}
+            }
+            hectoliter{
+                dnam{"؜‮hectoliters‬؜"}
+                one{"{0} ؜‮hectoliter‬؜"}
+                other{"{0} ؜‮hectoliters‬؜"}
+            }
+            jigger{
+                dnam{"؜‮jigger‬؜"}
+                one{"{0} ؜‮jigger‬؜"}
+                other{"{0} ؜‮jigger‬؜"}
+            }
+            liter{
+                dnam{"؜‮liters‬؜"}
+                one{"{0} ؜‮liter‬؜"}
+                other{"{0} ؜‮liters‬؜"}
+                per{"{0} ؜‮per‬؜ ؜‮liter‬؜"}
+            }
+            megaliter{
+                dnam{"؜‮megaliters‬؜"}
+                one{"{0} ؜‮megaliter‬؜"}
+                other{"{0} ؜‮megaliters‬؜"}
+            }
+            milliliter{
+                dnam{"؜‮milliliters‬؜"}
+                one{"{0} ؜‮milliliter‬؜"}
+                other{"{0} ؜‮milliliters‬؜"}
+            }
+            pinch{
+                dnam{"؜‮pinch‬؜"}
+                one{"{0} ؜‮pinch‬؜"}
+                other{"{0} ؜‮pinch‬؜"}
+            }
+            pint{
+                dnam{"؜‮pints‬؜"}
+                one{"{0} ؜‮pint‬؜"}
+                other{"{0} ؜‮pints‬؜"}
+            }
+            pint-metric{
+                dnam{"؜‮metric‬؜ ؜‮pints‬؜"}
+                one{"{0} ؜‮metric‬؜ ؜‮pint‬؜"}
+                other{"{0} ؜‮metric‬؜ ؜‮pints‬؜"}
+            }
+            quart{
+                dnam{"؜‮quarts‬؜"}
+                one{"{0} ؜‮quart‬؜"}
+                other{"{0} ؜‮quarts‬؜"}
+            }
+            quart-imperial{
+                dnam{"؜‮Imp‬؜. ؜‮quart‬؜"}
+                one{"{0} ؜‮Imp‬؜. ؜‮quart‬؜"}
+                other{"{0} ؜‮Imp‬؜. ؜‮quart‬؜"}
+            }
+            tablespoon{
+                dnam{"؜‮tablespoons‬؜"}
+                one{"{0} ؜‮tablespoon‬؜"}
+                other{"{0} ؜‮tablespoons‬؜"}
+            }
+            teaspoon{
+                dnam{"؜‮teaspoons‬؜"}
+                one{"{0} ؜‮teaspoon‬؜"}
+                other{"{0} ؜‮teaspoons‬؜"}
+            }
+        }
+    }
+    unitsShort{
+        acceleration{
+            g-force{
+                dnam{"؜‮g‬؜-؜‮force‬؜"}
+                one{"{0} ؜‮G‬؜"}
+                other{"{0} ؜‮G‬؜"}
+            }
+            meter-per-square-second{
+                dnam{"؜‮meters‬؜/؜‮sec‬؜²"}
+                one{"{0} ؜‮m‬؜/؜‮s‬؜²"}
+                other{"{0} ؜‮m‬؜/؜‮s‬؜²"}
+            }
+        }
+        angle{
+            arc-minute{
+                dnam{"؜‮arcmins‬؜"}
+                one{"{0} ؜‮arcmin‬؜"}
+                other{"{0} ؜‮arcmins‬؜"}
+            }
+            arc-second{
+                dnam{"؜‮arcsecs‬؜"}
+                one{"{0} ؜‮arcsec‬؜"}
+                other{"{0} ؜‮arcsecs‬؜"}
+            }
+            degree{
+                dnam{"؜‮degrees‬؜"}
+                one{"{0} ؜‮deg‬؜"}
+                other{"{0} ؜‮deg‬؜"}
+            }
+            radian{
+                dnam{"؜‮radians‬؜"}
+                one{"{0} ؜‮rad‬؜"}
+                other{"{0} ؜‮rad‬؜"}
+            }
+            revolution{
+                dnam{"؜‮rev‬؜"}
+                one{"{0} ؜‮rev‬؜"}
+                other{"{0} ؜‮rev‬؜"}
+            }
+        }
+        area{
+            acre{
+                dnam{"؜‮acres‬؜"}
+                one{"{0} ؜‮ac‬؜"}
+                other{"{0} ؜‮ac‬؜"}
+            }
+            dunam{
+                dnam{"؜‮dunams‬؜"}
+                one{"{0} ؜‮dunam‬؜"}
+                other{"{0} ؜‮dunam‬؜"}
+            }
+            hectare{
+                dnam{"؜‮hectares‬؜"}
+                one{"{0} ؜‮ha‬؜"}
+                other{"{0} ؜‮ha‬؜"}
+            }
+            square-centimeter{
+                dnam{"؜‮cm‬؜²"}
+                one{"{0} ؜‮cm‬؜²"}
+                other{"{0} ؜‮cm‬؜²"}
+                per{"{0}/؜‮cm‬؜²"}
+            }
+            square-foot{
+                dnam{"؜‮sq‬؜ ؜‮feet‬؜"}
+                one{"{0} ؜‮sq‬؜ ؜‮ft‬؜"}
+                other{"{0} ؜‮sq‬؜ ؜‮ft‬؜"}
+            }
+            square-inch{
+                dnam{"؜‮inches‬؜²"}
+                one{"{0} ؜‮in‬؜²"}
+                other{"{0} ؜‮in‬؜²"}
+                per{"{0}/؜‮in‬؜²"}
+            }
+            square-kilometer{
+                dnam{"؜‮km‬؜²"}
+                one{"{0} ؜‮km‬؜²"}
+                other{"{0} ؜‮km‬؜²"}
+                per{"{0}/؜‮km‬؜²"}
+            }
+            square-meter{
+                dnam{"؜‮meters‬؜²"}
+                one{"{0} ؜‮m‬؜²"}
+                other{"{0} ؜‮m‬؜²"}
+                per{"{0}/؜‮m‬؜²"}
+            }
+            square-mile{
+                dnam{"؜‮sq‬؜ ؜‮miles‬؜"}
+                one{"{0} ؜‮sq‬؜ ؜‮mi‬؜"}
+                other{"{0} ؜‮sq‬؜ ؜‮mi‬؜"}
+                per{"{0}/؜‮mi‬؜²"}
+            }
+            square-yard{
+                dnam{"؜‮yards‬؜²"}
+                one{"{0} ؜‮yd‬؜²"}
+                other{"{0} ؜‮yd‬؜²"}
+            }
+        }
+        compound{
+            per{"{0}/{1}"}
+        }
+        concentr{
+            karat{
+                dnam{"؜‮karats‬؜"}
+                one{"{0} ؜‮kt‬؜"}
+                other{"{0} ؜‮kt‬؜"}
+            }
+            milligram-per-deciliter{
+                dnam{"؜‮mg‬؜/؜‮dL‬؜"}
+                one{"{0} ؜‮mg‬؜/؜‮dL‬؜"}
+                other{"{0} ؜‮mg‬؜/؜‮dL‬؜"}
+            }
+            millimole-per-liter{
+                dnam{"؜‮millimol‬؜/؜‮liter‬؜"}
+                one{"{0} ؜‮mmol‬؜/؜‮L‬؜"}
+                other{"{0} ؜‮mmol‬؜/؜‮L‬؜"}
+            }
+            mole{
+                dnam{"؜‮mole‬؜"}
+                one{"{0} ؜‮mol‬؜"}
+                other{"{0} ؜‮mol‬؜"}
+            }
+            percent{
+                dnam{"؜‮percent‬؜"}
+                one{"{0}%"}
+                other{"{0}%"}
+            }
+            permille{
+                dnam{"؜‮permille‬؜"}
+                one{"{0}‰"}
+                other{"{0}‰"}
+            }
+            permillion{
+                dnam{"؜‮parts‬؜/؜‮million‬؜"}
+                one{"{0} ؜‮ppm‬؜"}
+                other{"{0} ؜‮ppm‬؜"}
+            }
+            permyriad{
+                dnam{"؜‮permyriad‬؜"}
+                one{"{0}‱"}
+                other{"{0}‱"}
+            }
+        }
+        consumption{
+            liter-per-100-kilometer{
+                dnam{"؜‮L‬؜/100 ؜‮km‬؜"}
+                one{"{0} ؜‮L‬؜/100 ؜‮km‬؜"}
+                other{"{0} ؜‮L‬؜/100 ؜‮km‬؜"}
+            }
+            liter-per-kilometer{
+                dnam{"؜‮liters‬؜/؜‮km‬؜"}
+                one{"{0} ؜‮L‬؜/؜‮km‬؜"}
+                other{"{0} ؜‮L‬؜/؜‮km‬؜"}
+            }
+            mile-per-gallon{
+                dnam{"؜‮miles‬؜/؜‮gal‬؜"}
+                one{"{0} ؜‮mpg‬؜"}
+                other{"{0} ؜‮mpg‬؜"}
+            }
+            mile-per-gallon-imperial{
+                dnam{"؜‮miles‬؜/؜‮gal‬؜ ؜‮Imp‬؜."}
+                one{"{0} ؜‮mpg‬؜ ؜‮Imp‬؜."}
+                other{"{0} ؜‮mpg‬؜ ؜‮Imp‬؜."}
+            }
+        }
+        coordinate{
+            dnam{"؜‮direction‬؜"}
+            east{"{0} ؜‮E‬؜"}
+            north{"{0} ؜‮N‬؜"}
+            south{"{0} ؜‮S‬؜"}
+            west{"{0} ؜‮W‬؜"}
+        }
+        digital{
+            bit{
+                dnam{"؜‮bit‬؜"}
+                one{"{0} ؜‮bit‬؜"}
+                other{"{0} ؜‮bit‬؜"}
+            }
+            byte{
+                dnam{"؜‮byte‬؜"}
+                one{"{0} ؜‮byte‬؜"}
+                other{"{0} ؜‮byte‬؜"}
+            }
+            gigabit{
+                dnam{"؜‮Gbit‬؜"}
+                one{"{0} ؜‮Gb‬؜"}
+                other{"{0} ؜‮Gb‬؜"}
+            }
+            gigabyte{
+                dnam{"؜‮GByte‬؜"}
+                one{"{0} ؜‮GB‬؜"}
+                other{"{0} ؜‮GB‬؜"}
+            }
+            kilobit{
+                dnam{"؜‮kbit‬؜"}
+                one{"{0} ؜‮kb‬؜"}
+                other{"{0} ؜‮kb‬؜"}
+            }
+            kilobyte{
+                dnam{"؜‮kByte‬؜"}
+                one{"{0} ؜‮kB‬؜"}
+                other{"{0} ؜‮kB‬؜"}
+            }
+            megabit{
+                dnam{"؜‮Mbit‬؜"}
+                one{"{0} ؜‮Mb‬؜"}
+                other{"{0} ؜‮Mb‬؜"}
+            }
+            megabyte{
+                dnam{"؜‮MByte‬؜"}
+                one{"{0} ؜‮MB‬؜"}
+                other{"{0} ؜‮MB‬؜"}
+            }
+            petabyte{
+                dnam{"؜‮PByte‬؜"}
+                one{"{0} ؜‮PB‬؜"}
+                other{"{0} ؜‮PB‬؜"}
+            }
+            terabit{
+                dnam{"؜‮Tbit‬؜"}
+                one{"{0} ؜‮Tb‬؜"}
+                other{"{0} ؜‮Tb‬؜"}
+            }
+            terabyte{
+                dnam{"؜‮TByte‬؜"}
+                one{"{0} ؜‮TB‬؜"}
+                other{"{0} ؜‮TB‬؜"}
+            }
+        }
+        duration{
+            century{
+                dnam{"؜‮c‬؜"}
+                one{"{0} ؜‮c‬؜"}
+                other{"{0} ؜‮c‬؜"}
+            }
+            day{
+                dnam{"؜‮days‬؜"}
+                one{"{0} ؜‮day‬؜"}
+                other{"{0} ؜‮days‬؜"}
+                per{"{0}/؜‮d‬؜"}
+            }
+            decade{
+                dnam{"؜‮dec‬؜"}
+                one{"{0} ؜‮dec‬؜"}
+                other{"{0} ؜‮dec‬؜"}
+            }
+            hour{
+                dnam{"؜‮hours‬؜"}
+                one{"{0} ؜‮hr‬؜"}
+                other{"{0} ؜‮hr‬؜"}
+                per{"{0}/؜‮h‬؜"}
+            }
+            microsecond{
+                dnam{"؜‮µsecs‬؜"}
+                one{"{0} ؜‮µs‬؜"}
+                other{"{0} ؜‮µs‬؜"}
+            }
+            millisecond{
+                dnam{"؜‮millisecs‬؜"}
+                one{"{0} ؜‮ms‬؜"}
+                other{"{0} ؜‮ms‬؜"}
+            }
+            minute{
+                dnam{"؜‮mins‬؜"}
+                one{"{0} ؜‮min‬؜"}
+                other{"{0} ؜‮min‬؜"}
+                per{"{0}/؜‮min‬؜"}
+            }
+            month{
+                dnam{"؜‮months‬؜"}
+                one{"{0} ؜‮mth‬؜"}
+                other{"{0} ؜‮mths‬؜"}
+                per{"{0}/؜‮m‬؜"}
+            }
+            nanosecond{
+                dnam{"؜‮nanosecs‬؜"}
+                one{"{0} ؜‮ns‬؜"}
+                other{"{0} ؜‮ns‬؜"}
+            }
+            second{
+                dnam{"؜‮secs‬؜"}
+                one{"{0} ؜‮sec‬؜"}
+                other{"{0} ؜‮sec‬؜"}
+                per{"{0}/؜‮s‬؜"}
+            }
+            week{
+                dnam{"؜‮weeks‬؜"}
+                one{"{0} ؜‮wk‬؜"}
+                other{"{0} ؜‮wks‬؜"}
+                per{"{0}/؜‮w‬؜"}
+            }
+            year{
+                dnam{"؜‮years‬؜"}
+                one{"{0} ؜‮yr‬؜"}
+                other{"{0} ؜‮yrs‬؜"}
+                per{"{0}/؜‮y‬؜"}
+            }
+        }
+        electric{
+            ampere{
+                dnam{"؜‮amps‬؜"}
+                one{"{0} ؜‮A‬؜"}
+                other{"{0} ؜‮A‬؜"}
+            }
+            milliampere{
+                dnam{"؜‮milliamps‬؜"}
+                one{"{0} ؜‮mA‬؜"}
+                other{"{0} ؜‮mA‬؜"}
+            }
+            ohm{
+                dnam{"؜‮ohms‬؜"}
+                one{"{0} ؜‮Ω‬؜"}
+                other{"{0} ؜‮Ω‬؜"}
+            }
+            volt{
+                dnam{"؜‮volts‬؜"}
+                one{"{0} ؜‮V‬؜"}
+                other{"{0} ؜‮V‬؜"}
+            }
+        }
+        energy{
+            british-thermal-unit{
+                dnam{"؜‮BTU‬؜"}
+                one{"{0} ؜‮Btu‬؜"}
+                other{"{0} ؜‮Btu‬؜"}
+            }
+            calorie{
+                dnam{"؜‮cal‬؜"}
+                one{"{0} ؜‮cal‬؜"}
+                other{"{0} ؜‮cal‬؜"}
+            }
+            electronvolt{
+                dnam{"؜‮electronvolt‬؜"}
+                one{"{0} ؜‮eV‬؜"}
+                other{"{0} ؜‮eV‬؜"}
+            }
+            foodcalorie{
+                dnam{"؜‮Cal‬؜"}
+                one{"{0} ؜‮Cal‬؜"}
+                other{"{0} ؜‮Cal‬؜"}
+            }
+            joule{
+                dnam{"؜‮joules‬؜"}
+                one{"{0} ؜‮J‬؜"}
+                other{"{0} ؜‮J‬؜"}
+            }
+            kilocalorie{
+                dnam{"؜‮kcal‬؜"}
+                one{"{0} ؜‮kcal‬؜"}
+                other{"{0} ؜‮kcal‬؜"}
+            }
+            kilojoule{
+                dnam{"؜‮kilojoule‬؜"}
+                one{"{0} ؜‮kJ‬؜"}
+                other{"{0} ؜‮kJ‬؜"}
+            }
+            kilowatt-hour{
+                dnam{"؜‮kW‬؜-؜‮hour‬؜"}
+                one{"{0} ؜‮kWh‬؜"}
+                other{"{0} ؜‮kWh‬؜"}
+            }
+            therm-us{
+                dnam{"؜‮US‬؜ ؜‮therm‬؜"}
+                one{"{0} ؜‮US‬؜ ؜‮therm‬؜"}
+                other{"{0} ؜‮US‬؜ ؜‮therms‬؜"}
+            }
+        }
+        force{
+            newton{
+                dnam{"؜‮newton‬؜"}
+                one{"{0} ؜‮N‬؜"}
+                other{"{0} ؜‮N‬؜"}
+            }
+            pound-force{
+                dnam{"؜‮pound‬؜-؜‮force‬؜"}
+                one{"{0} ؜‮lbf‬؜"}
+                other{"{0} ؜‮lbf‬؜"}
+            }
+        }
+        frequency{
+            gigahertz{
+                dnam{"؜‮GHz‬؜"}
+                one{"{0} ؜‮GHz‬؜"}
+                other{"{0} ؜‮GHz‬؜"}
+            }
+            hertz{
+                dnam{"؜‮Hz‬؜"}
+                one{"{0} ؜‮Hz‬؜"}
+                other{"{0} ؜‮Hz‬؜"}
+            }
+            kilohertz{
+                dnam{"؜‮kHz‬؜"}
+                one{"{0} ؜‮kHz‬؜"}
+                other{"{0} ؜‮kHz‬؜"}
+            }
+            megahertz{
+                dnam{"؜‮MHz‬؜"}
+                one{"{0} ؜‮MHz‬؜"}
+                other{"{0} ؜‮MHz‬؜"}
+            }
+        }
+        graphics{
+            dot{
+                other{"{0} ؜‮dot‬؜"}
+            }
+            dot-per-centimeter{
+                dnam{"؜‮dpcm‬؜"}
+                one{"{0} ؜‮dpcm‬؜"}
+                other{"{0} ؜‮dpcm‬؜"}
+            }
+            dot-per-inch{
+                dnam{"؜‮dpi‬؜"}
+                one{"{0} ؜‮dpi‬؜"}
+                other{"{0} ؜‮dpi‬؜"}
+            }
+            em{
+                dnam{"؜‮em‬؜"}
+                one{"{0} ؜‮em‬؜"}
+                other{"{0} ؜‮em‬؜"}
+            }
+            megapixel{
+                dnam{"؜‮megapixels‬؜"}
+                one{"{0} ؜‮MP‬؜"}
+                other{"{0} ؜‮MP‬؜"}
+            }
+            pixel{
+                dnam{"؜‮pixels‬؜"}
+                one{"{0} ؜‮px‬؜"}
+                other{"{0} ؜‮px‬؜"}
+            }
+            pixel-per-centimeter{
+                dnam{"؜‮ppcm‬؜"}
+                one{"{0} ؜‮ppcm‬؜"}
+                other{"{0} ؜‮ppcm‬؜"}
+            }
+            pixel-per-inch{
+                dnam{"؜‮ppi‬؜"}
+                one{"{0} ؜‮ppi‬؜"}
+                other{"{0} ؜‮ppi‬؜"}
+            }
+        }
+        length{
+            astronomical-unit{
+                dnam{"؜‮au‬؜"}
+                one{"{0} ؜‮au‬؜"}
+                other{"{0} ؜‮au‬؜"}
+            }
+            centimeter{
+                dnam{"؜‮cm‬؜"}
+                one{"{0} ؜‮cm‬؜"}
+                other{"{0} ؜‮cm‬؜"}
+                per{"{0}/؜‮cm‬؜"}
+            }
+            decimeter{
+                dnam{"؜‮dm‬؜"}
+                one{"{0} ؜‮dm‬؜"}
+                other{"{0} ؜‮dm‬؜"}
+            }
+            fathom{
+                dnam{"؜‮fathoms‬؜"}
+                one{"{0} ؜‮fth‬؜"}
+                other{"{0} ؜‮fth‬؜"}
+            }
+            foot{
+                dnam{"؜‮feet‬؜"}
+                one{"{0} ؜‮ft‬؜"}
+                other{"{0} ؜‮ft‬؜"}
+                per{"{0}/؜‮ft‬؜"}
+            }
+            furlong{
+                dnam{"؜‮furlongs‬؜"}
+                one{"{0} ؜‮fur‬؜"}
+                other{"{0} ؜‮fur‬؜"}
+            }
+            inch{
+                dnam{"؜‮inches‬؜"}
+                one{"{0} ؜‮in‬؜"}
+                other{"{0} ؜‮in‬؜"}
+                per{"{0}/؜‮in‬؜"}
+            }
+            kilometer{
+                dnam{"؜‮km‬؜"}
+                one{"{0} ؜‮km‬؜"}
+                other{"{0} ؜‮km‬؜"}
+                per{"{0}/؜‮km‬؜"}
+            }
+            light-year{
+                dnam{"؜‮light‬؜ ؜‮yrs‬؜"}
+                one{"{0} ؜‮ly‬؜"}
+                other{"{0} ؜‮ly‬؜"}
+            }
+            meter{
+                dnam{"؜‮m‬؜"}
+                one{"{0} ؜‮m‬؜"}
+                other{"{0} ؜‮m‬؜"}
+                per{"{0}/؜‮m‬؜"}
+            }
+            micrometer{
+                dnam{"؜‮µmeters‬؜"}
+                one{"{0} ؜‮µm‬؜"}
+                other{"{0} ؜‮µm‬؜"}
+            }
+            mile{
+                dnam{"؜‮miles‬؜"}
+                one{"{0} ؜‮mi‬؜"}
+                other{"{0} ؜‮mi‬؜"}
+            }
+            mile-scandinavian{
+                dnam{"؜‮smi‬؜"}
+                one{"{0} ؜‮smi‬؜"}
+                other{"{0} ؜‮smi‬؜"}
+            }
+            millimeter{
+                dnam{"؜‮mm‬؜"}
+                one{"{0} ؜‮mm‬؜"}
+                other{"{0} ؜‮mm‬؜"}
+            }
+            nanometer{
+                dnam{"؜‮nm‬؜"}
+                one{"{0} ؜‮nm‬؜"}
+                other{"{0} ؜‮nm‬؜"}
+            }
+            nautical-mile{
+                dnam{"؜‮nmi‬؜"}
+                one{"{0} ؜‮nmi‬؜"}
+                other{"{0} ؜‮nmi‬؜"}
+            }
+            parsec{
+                dnam{"؜‮parsecs‬؜"}
+                one{"{0} ؜‮pc‬؜"}
+                other{"{0} ؜‮pc‬؜"}
+            }
+            picometer{
+                dnam{"؜‮pm‬؜"}
+                one{"{0} ؜‮pm‬؜"}
+                other{"{0} ؜‮pm‬؜"}
+            }
+            point{
+                dnam{"؜‮points‬؜"}
+                one{"{0} ؜‮pt‬؜"}
+                other{"{0} ؜‮pt‬؜"}
+            }
+            solar-radius{
+                dnam{"؜‮solar‬؜ ؜‮radii‬؜"}
+                one{"{0} ؜‮R‬؜☉"}
+                other{"{0} ؜‮R‬؜☉"}
+            }
+            yard{
+                dnam{"؜‮yards‬؜"}
+                one{"{0} ؜‮yd‬؜"}
+                other{"{0} ؜‮yd‬؜"}
+            }
+        }
+        light{
+            lux{
+                dnam{"؜‮lux‬؜"}
+                one{"{0} ؜‮lx‬؜"}
+                other{"{0} ؜‮lx‬؜"}
+            }
+            solar-luminosity{
+                dnam{"؜‮solar‬؜ ؜‮luminosities‬؜"}
+                one{"{0} ؜‮L‬؜☉"}
+                other{"{0} ؜‮L‬؜☉"}
+            }
+        }
+        mass{
+            carat{
+                dnam{"؜‮carats‬؜"}
+                one{"{0} ؜‮CD‬؜"}
+                other{"{0} ؜‮CD‬؜"}
+            }
+            dalton{
+                dnam{"؜‮daltons‬؜"}
+                one{"{0} ؜‮Da‬؜"}
+                other{"{0} ؜‮Da‬؜"}
+            }
+            earth-mass{
+                dnam{"؜‮Earth‬؜ ؜‮masses‬؜"}
+                one{"{0} ؜‮M‬؜⊕"}
+                other{"{0} ؜‮M‬؜⊕"}
+            }
+            grain{
+                other{"{0} ؜‮grain‬؜"}
+            }
+            gram{
+                dnam{"؜‮grams‬؜"}
+                one{"{0} ؜‮g‬؜"}
+                other{"{0} ؜‮g‬؜"}
+                per{"{0}/؜‮g‬؜"}
+            }
+            kilogram{
+                dnam{"؜‮kg‬؜"}
+                one{"{0} ؜‮kg‬؜"}
+                other{"{0} ؜‮kg‬؜"}
+                per{"{0}/؜‮kg‬؜"}
+            }
+            metric-ton{
+                dnam{"؜‮t‬؜"}
+                one{"{0} ؜‮t‬؜"}
+                other{"{0} ؜‮t‬؜"}
+            }
+            microgram{
+                dnam{"؜‮µg‬؜"}
+                one{"{0} ؜‮µg‬؜"}
+                other{"{0} ؜‮µg‬؜"}
+            }
+            milligram{
+                dnam{"؜‮mg‬؜"}
+                one{"{0} ؜‮mg‬؜"}
+                other{"{0} ؜‮mg‬؜"}
+            }
+            ounce{
+                dnam{"؜‮oz‬؜"}
+                one{"{0} ؜‮oz‬؜"}
+                other{"{0} ؜‮oz‬؜"}
+                per{"{0}/؜‮oz‬؜"}
+            }
+            ounce-troy{
+                dnam{"؜‮oz‬؜ ؜‮troy‬؜"}
+                one{"{0} ؜‮oz‬؜ ؜‮t‬؜"}
+                other{"{0} ؜‮oz‬؜ ؜‮t‬؜"}
+            }
+            pound{
+                dnam{"؜‮pounds‬؜"}
+                one{"{0} ؜‮lb‬؜"}
+                other{"{0} ؜‮lb‬؜"}
+                per{"{0}/؜‮lb‬؜"}
+            }
+            solar-mass{
+                dnam{"؜‮solar‬؜ ؜‮masses‬؜"}
+                one{"{0} ؜‮M‬؜☉"}
+                other{"{0} ؜‮M‬؜☉"}
+            }
+            stone{
+                dnam{"؜‮stones‬؜"}
+                one{"{0} ؜‮st‬؜"}
+                other{"{0} ؜‮st‬؜"}
+            }
+            ton{
+                dnam{"؜‮tons‬؜"}
+                one{"{0} ؜‮tn‬؜"}
+                other{"{0} ؜‮tn‬؜"}
+            }
+        }
+        power{
+            gigawatt{
+                dnam{"؜‮GW‬؜"}
+                one{"{0} ؜‮GW‬؜"}
+                other{"{0} ؜‮GW‬؜"}
+            }
+            horsepower{
+                dnam{"؜‮hp‬؜"}
+                one{"{0} ؜‮hp‬؜"}
+                other{"{0} ؜‮hp‬؜"}
+            }
+            kilowatt{
+                dnam{"؜‮kW‬؜"}
+                one{"{0} ؜‮kW‬؜"}
+                other{"{0} ؜‮kW‬؜"}
+            }
+            megawatt{
+                dnam{"؜‮MW‬؜"}
+                one{"{0} ؜‮MW‬؜"}
+                other{"{0} ؜‮MW‬؜"}
+            }
+            milliwatt{
+                dnam{"؜‮mW‬؜"}
+                one{"{0} ؜‮mW‬؜"}
+                other{"{0} ؜‮mW‬؜"}
+            }
+            watt{
+                dnam{"؜‮watts‬؜"}
+                one{"{0} ؜‮W‬؜"}
+                other{"{0} ؜‮W‬؜"}
+            }
+        }
+        pressure{
+            atmosphere{
+                dnam{"؜‮atm‬؜"}
+                one{"{0} ؜‮atm‬؜"}
+                other{"{0} ؜‮atm‬؜"}
+            }
+            bar{
+                dnam{"؜‮bar‬؜"}
+                one{"{0} ؜‮bar‬؜"}
+                other{"{0} ؜‮bar‬؜"}
+            }
+            hectopascal{
+                dnam{"؜‮hPa‬؜"}
+                one{"{0} ؜‮hPa‬؜"}
+                other{"{0} ؜‮hPa‬؜"}
+            }
+            inch-ofhg{
+                dnam{"؜‮inHg‬؜"}
+                one{"{0} ؜‮inHg‬؜"}
+                other{"{0} ؜‮inHg‬؜"}
+            }
+            kilopascal{
+                dnam{"؜‮kPa‬؜"}
+                one{"{0} ؜‮kPa‬؜"}
+                other{"{0} ؜‮kPa‬؜"}
+            }
+            megapascal{
+                dnam{"؜‮MPa‬؜"}
+                one{"{0} ؜‮MPa‬؜"}
+                other{"{0} ؜‮MPa‬؜"}
+            }
+            millibar{
+                dnam{"؜‮mbar‬؜"}
+                one{"{0} ؜‮mbar‬؜"}
+                other{"{0} ؜‮mbar‬؜"}
+            }
+            millimeter-ofhg{
+                dnam{"؜‮mmHg‬؜"}
+                one{"{0} ؜‮mmHg‬؜"}
+                other{"{0} ؜‮mmHg‬؜"}
+            }
+            pascal{
+                dnam{"؜‮Pa‬؜"}
+                one{"{0} ؜‮Pa‬؜"}
+                other{"{0} ؜‮Pa‬؜"}
+            }
+            pound-force-per-square-inch{
+                dnam{"؜‮psi‬؜"}
+                one{"{0} ؜‮psi‬؜"}
+                other{"{0} ؜‮psi‬؜"}
+            }
+        }
+        speed{
+            kilometer-per-hour{
+                dnam{"؜‮km‬؜/؜‮hour‬؜"}
+                one{"{0} ؜‮km‬؜/؜‮h‬؜"}
+                other{"{0} ؜‮km‬؜/؜‮h‬؜"}
+            }
+            knot{
+                dnam{"؜‮kn‬؜"}
+                one{"{0} ؜‮kn‬؜"}
+                other{"{0} ؜‮kn‬؜"}
+            }
+            meter-per-second{
+                dnam{"؜‮meters‬؜/؜‮sec‬؜"}
+                one{"{0} ؜‮m‬؜/؜‮s‬؜"}
+                other{"{0} ؜‮m‬؜/؜‮s‬؜"}
+            }
+            mile-per-hour{
+                dnam{"؜‮miles‬؜/؜‮hour‬؜"}
+                one{"{0} ؜‮mph‬؜"}
+                other{"{0} ؜‮mph‬؜"}
+            }
+        }
+        temperature{
+            celsius{
+                dnam{"؜‮deg‬؜. ؜‮C‬؜"}
+                one{"{0}°؜‮C‬؜"}
+                other{"{0}°؜‮C‬؜"}
+            }
+            fahrenheit{
+                dnam{"؜‮deg‬؜. ؜‮F‬؜"}
+                one{"{0}°؜‮F‬؜"}
+                other{"{0}°؜‮F‬؜"}
+            }
+            kelvin{
+                dnam{"؜‮K‬؜"}
+                one{"{0} ؜‮K‬؜"}
+                other{"{0} ؜‮K‬؜"}
+            }
+        }
+        torque{
+            newton-meter{
+                dnam{"؜‮N‬؜⋅؜‮m‬؜"}
+                one{"{0} ؜‮N‬؜⋅؜‮m‬؜"}
+                other{"{0} ؜‮N‬؜⋅؜‮m‬؜"}
+            }
+            pound-force-foot{
+                dnam{"؜‮lbf‬؜⋅؜‮ft‬؜"}
+                one{"{0} ؜‮lbf‬؜⋅؜‮ft‬؜"}
+                other{"{0} ؜‮lbf‬؜⋅؜‮ft‬؜"}
+            }
+        }
+        volume{
+            acre-foot{
+                dnam{"؜‮acre‬؜ ؜‮ft‬؜"}
+                one{"{0} ؜‮ac‬؜ ؜‮ft‬؜"}
+                other{"{0} ؜‮ac‬؜ ؜‮ft‬؜"}
+            }
+            barrel{
+                dnam{"؜‮barrel‬؜"}
+                one{"{0} ؜‮bbl‬؜"}
+                other{"{0} ؜‮bbl‬؜"}
+            }
+            bushel{
+                dnam{"؜‮bushels‬؜"}
+                one{"{0} ؜‮bu‬؜"}
+                other{"{0} ؜‮bu‬؜"}
+            }
+            centiliter{
+                dnam{"؜‮cL‬؜"}
+                one{"{0} ؜‮cL‬؜"}
+                other{"{0} ؜‮cL‬؜"}
+            }
+            cubic-centimeter{
+                dnam{"؜‮cm‬؜³"}
+                one{"{0} ؜‮cm‬؜³"}
+                other{"{0} ؜‮cm‬؜³"}
+            }
+            cubic-foot{
+                dnam{"؜‮feet‬؜³"}
+                one{"{0} ؜‮ft‬؜³"}
+                other{"{0} ؜‮ft‬؜³"}
+            }
+            cubic-inch{
+                dnam{"؜‮inches‬؜³"}
+                one{"{0} ؜‮in‬؜³"}
+                other{"{0} ؜‮in‬؜³"}
+            }
+            cubic-kilometer{
+                dnam{"؜‮km‬؜³"}
+                one{"{0} ؜‮km‬؜³"}
+                other{"{0} ؜‮km‬؜³"}
+            }
+            cubic-meter{
+                dnam{"؜‮m‬؜³"}
+                one{"{0} ؜‮m‬؜³"}
+                other{"{0} ؜‮m‬؜³"}
+            }
+            cubic-mile{
+                dnam{"؜‮mi‬؜³"}
+                one{"{0} ؜‮mi‬؜³"}
+                other{"{0} ؜‮mi‬؜³"}
+            }
+            cubic-yard{
+                dnam{"؜‮yards‬؜³"}
+                one{"{0} ؜‮yd‬؜³"}
+                other{"{0} ؜‮yd‬؜³"}
+            }
+            cup{
+                dnam{"؜‮cups‬؜"}
+                one{"{0} ؜‮c‬؜"}
+                other{"{0} ؜‮c‬؜"}
+            }
+            cup-metric{
+                dnam{"؜‮mcup‬؜"}
+                one{"{0} ؜‮mc‬؜"}
+                other{"{0} ؜‮mc‬؜"}
+            }
+            deciliter{
+                dnam{"؜‮dL‬؜"}
+                one{"{0} ؜‮dL‬؜"}
+                other{"{0} ؜‮dL‬؜"}
+            }
+            dessert-spoon{
+                dnam{"؜‮dstspn‬؜"}
+                other{"{0} ؜‮dstspn‬؜"}
+            }
+            dessert-spoon-imperial{
+                dnam{"؜‮dstspn‬؜ ؜‮Imp‬؜"}
+                other{"{0} ؜‮dstspn‬؜ ؜‮Imp‬؜"}
+            }
+            dram{
+                dnam{"؜‮dram‬؜ ؜‮fluid‬؜"}
+                other{"{0} ؜‮dram‬؜ ؜‮fl‬؜"}
+            }
+            drop{
+                other{"{0} ؜‮drop‬؜"}
+            }
+            fluid-ounce{
+                dnam{"؜‮fl‬؜ ؜‮oz‬؜"}
+                one{"{0} ؜‮fl‬؜ ؜‮oz‬؜"}
+                other{"{0} ؜‮fl‬؜ ؜‮oz‬؜"}
+            }
+            fluid-ounce-imperial{
+                dnam{"؜‮Imp‬؜. ؜‮fl‬؜ ؜‮oz‬؜"}
+                one{"{0} ؜‮fl‬؜ ؜‮oz‬؜ ؜‮Imp‬؜."}
+                other{"{0} ؜‮fl‬؜ ؜‮oz‬؜ ؜‮Imp‬؜."}
+            }
+            gallon{
+                dnam{"؜‮gal‬؜"}
+                one{"{0} ؜‮gal‬؜"}
+                other{"{0} ؜‮gal‬؜"}
+                per{"{0}/؜‮gal‬؜ ؜‮US‬؜"}
+            }
+            gallon-imperial{
+                dnam{"؜‮Imp‬؜. ؜‮gal‬؜"}
+                one{"{0} ؜‮gal‬؜ ؜‮Imp‬؜."}
+                other{"{0} ؜‮gal‬؜ ؜‮Imp‬؜."}
+                per{"{0}/؜‮gal‬؜ ؜‮Imp‬؜."}
+            }
+            hectoliter{
+                dnam{"؜‮hL‬؜"}
+                one{"{0} ؜‮hL‬؜"}
+                other{"{0} ؜‮hL‬؜"}
+            }
+            jigger{
+                other{"{0} ؜‮jigger‬؜"}
+            }
+            liter{
+                dnam{"؜‮liters‬؜"}
+                one{"{0} ؜‮L‬؜"}
+                other{"{0} ؜‮L‬؜"}
+                per{"{0}/؜‮L‬؜"}
+            }
+            megaliter{
+                dnam{"؜‮ML‬؜"}
+                one{"{0} ؜‮ML‬؜"}
+                other{"{0} ؜‮ML‬؜"}
+            }
+            milliliter{
+                dnam{"؜‮mL‬؜"}
+                one{"{0} ؜‮mL‬؜"}
+                other{"{0} ؜‮mL‬؜"}
+            }
+            pinch{
+                other{"{0} ؜‮pinch‬؜"}
+            }
+            pint{
+                dnam{"؜‮pints‬؜"}
+                one{"{0} ؜‮pt‬؜"}
+                other{"{0} ؜‮pt‬؜"}
+            }
+            pint-metric{
+                dnam{"؜‮mpt‬؜"}
+                one{"{0} ؜‮mpt‬؜"}
+                other{"{0} ؜‮mpt‬؜"}
+            }
+            quart{
+                dnam{"؜‮qts‬؜"}
+                one{"{0} ؜‮qt‬؜"}
+                other{"{0} ؜‮qt‬؜"}
+            }
+            quart-imperial{
+                dnam{"؜‮qt‬؜ ؜‮Imp‬؜"}
+                other{"{0} ؜‮qt‬؜ ؜‮Imp‬؜."}
+            }
+            tablespoon{
+                dnam{"؜‮tbsp‬؜"}
+                one{"{0} ؜‮tbsp‬؜"}
+                other{"{0} ؜‮tbsp‬؜"}
+            }
+            teaspoon{
+                dnam{"؜‮tsp‬؜"}
+                one{"{0} ؜‮tsp‬؜"}
+                other{"{0} ؜‮tsp‬؜"}
+            }
+        }
+    }
+}
diff --git a/icu4c/source/data/unit/ars.txt b/icu4c/source/data/unit/ars.txt
index 1f49ca1..92183f5 100644
--- a/icu4c/source/data/unit/ars.txt
+++ b/icu4c/source/data/unit/ars.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ars{
     "%%ALIAS"{"ar_SA"}
 }
diff --git a/icu4c/source/data/unit/as.txt b/icu4c/source/data/unit/as.txt
index 62e4842..a76b157 100644
--- a/icu4c/source/data/unit/as.txt
+++ b/icu4c/source/data/unit/as.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 as{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -424,12 +424,27 @@
                 one{"{0} ডেচিমিটাৰ"}
                 other{"{0} ডেচিমিটাৰ"}
             }
+            earth-radius{
+                dnam{"পৃথিৱীৰ ব্যাসাৰ্ধ"}
+                one{"{0} পৃথিৱীৰ ব্যাসাৰ্ধ"}
+                other{"{0} পৃথিৱীৰ ব্যাসাৰ্ধ"}
+            }
+            fathom{
+                dnam{"ফাথম"}
+                one{"{0} ফাথম"}
+                other{"{0} ফাথম"}
+            }
             foot{
                 dnam{"ফুট"}
                 one{"{0} ফুট"}
                 other{"{0} ফুট"}
                 per{"{0} প্ৰতি ফুট"}
             }
+            furlong{
+                dnam{"ফাৰ্লং"}
+                one{"{0} ফাৰ্লং"}
+                other{"{0} ফাৰ্লং"}
+            }
             inch{
                 dnam{"ইঞ্চি"}
                 one{"{0} ইঞ্চি"}
@@ -510,6 +525,16 @@
             }
         }
         light{
+            candela{
+                dnam{"কেণ্ডেলা"}
+                one{"{0} কেণ্ডেলা"}
+                other{"{0} কেণ্ডেলা"}
+            }
+            lumen{
+                dnam{"লুমেন"}
+                one{"{0} লুমেন"}
+                other{"{0} লুমেন"}
+            }
             lux{
                 dnam{"লাক্স"}
                 one{"{0} লাক্স"}
@@ -537,6 +562,11 @@
                 one{"{0} আৰ্থ মাছ"}
                 other{"{0} আৰ্থ মাছ"}
             }
+            grain{
+                dnam{"গ্ৰেইন"}
+                one{"{0} গ্ৰেইন"}
+                other{"{0} গ্ৰেইন"}
+            }
             gram{
                 dnam{"গ্ৰাম"}
                 one{"{0} গ্ৰাম"}
@@ -586,6 +616,11 @@
                 one{"{0} সৌৰ ভৰ"}
                 other{"{0} সৌৰ ভৰ"}
             }
+            stone{
+                dnam{"ষ্ট’ন"}
+                one{"{0} ষ্ট'ন"}
+                other{"{0} ষ্ট'ন"}
+            }
             ton{
                 dnam{"টন"}
                 one{"{0} টন"}
@@ -661,9 +696,9 @@
                 other{"{0} মিলিমিটাৰ মাৰ্কিউৰী"}
             }
             pound-force-per-square-inch{
-                dnam{"প্ৰতি বৰ্গ ইঞ্চি পাউণ্ড"}
-                one{"{0} প্ৰতি বৰ্গ ইঞ্চি পাউণ্ড"}
-                other{"{0} প্ৰতি বৰ্গ ইঞ্চি পাউণ্ড"}
+                dnam{"প্ৰতি বৰ্গ ইঞ্চিত পাউণ্ড"}
+                one{"{0} প্ৰতি বৰ্গ ইঞ্চিত পাউণ্ড"}
+                other{"{0} প্ৰতি বৰ্গ ইঞ্চিত পাউণ্ড"}
             }
         }
         speed{
@@ -733,6 +768,11 @@
                 one{"{0} বেৰেল"}
                 other{"{0} বেৰেল"}
             }
+            bushel{
+                dnam{"বুশ্বেল"}
+                one{"{0} বুশ্লেল"}
+                other{"{0} বুশ্বেল"}
+            }
             centiliter{
                 dnam{"ছেণ্টিলিটাৰ"}
                 one{"{0} ছেণ্টিলিটাৰ"}
@@ -790,6 +830,26 @@
                 one{"{0} ডেচিলিটাৰ"}
                 other{"{0} ডেচিলিটাৰ"}
             }
+            dessert-spoon{
+                dnam{"ডেজাৰ্ট চামুচ"}
+                one{"{0} ডেজাৰ্ট চামুচ"}
+                other{"{0} ডেজাৰ্ট চামুচ"}
+            }
+            dessert-spoon-imperial{
+                dnam{"ইম্পেৰিয়েল ডেজাৰ্ট চামুচ"}
+                one{"{0} ইম্পেৰিয়েল ডেজাৰ্ট চামুচ"}
+                other{"{0} ইম্পেৰিয়েল ডেজাৰ্ট চামুচ"}
+            }
+            dram{
+                dnam{"ড্ৰাম"}
+                one{"{0} ড্ৰাম"}
+                other{"{0} ড্ৰাম"}
+            }
+            drop{
+                dnam{"ড্ৰপ"}
+                one{"{0} ড্ৰপ"}
+                other{"{0} ড্ৰপ"}
+            }
             fluid-ounce{
                 dnam{"ফ্লুইড আউন্স"}
                 one{"{0} ফ্লুইড আউন্স"}
@@ -817,6 +877,11 @@
                 one{"{0} হেক্টোলিটাৰ"}
                 other{"{0} হেক্টোলিটাৰ"}
             }
+            jigger{
+                dnam{"জিগাৰ"}
+                one{"{0} জিগাৰ"}
+                other{"{0} জিগাৰ"}
+            }
             liter{
                 dnam{"লিটাৰ"}
                 one{"{0} লিটাৰ"}
@@ -833,6 +898,11 @@
                 one{"{0} মিলিলিটাৰ"}
                 other{"{0} মিলিলিটাৰ"}
             }
+            pinch{
+                dnam{"পিঞ্চ"}
+                one{"{0} পিঞ্চ"}
+                other{"{0} পিঞ্চ"}
+            }
             pint{
                 dnam{"পিণ্ট"}
                 one{"{0} পিণ্ট"}
@@ -848,6 +918,11 @@
                 one{"{0} কোৱাৰ্ট"}
                 other{"{0} কোৱাৰ্ট"}
             }
+            quart-imperial{
+                dnam{"ইম্পেৰিয়েল কুৱাৰ্ট"}
+                one{"{0} ইম্পেৰিয়েল কুৱাৰ্ট"}
+                other{"{0} ইম্পেৰিয়েল কুৱাৰ্ট"}
+            }
             tablespoon{
                 dnam{"টেব’লস্পুন"}
                 one{"{0} টেব’লস্পুন"}
@@ -1400,12 +1475,22 @@
                 one{"{0} ডেঃ মিঃ"}
                 other{"{0} ডেঃ মিঃ"}
             }
+            fathom{
+                dnam{"ফাথম"}
+                one{"{0} ফাথম"}
+                other{"{0} ফাথম"}
+            }
             foot{
                 dnam{"ফুট"}
                 one{"{0} ফুঃ"}
                 other{"{0} ফুঃ"}
                 per{"{0}/ফুঃ"}
             }
+            furlong{
+                dnam{"ফাৰ্লং"}
+                one{"{0} ফাৰ্লং"}
+                other{"{0} ফাৰ্লং"}
+            }
             inch{
                 dnam{"ইঞ্চি"}
                 one{"{0} ইঃ"}
@@ -1513,6 +1598,11 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"গ্ৰেইন"}
+                one{"{0} গ্ৰেইন"}
+                other{"{0} গ্ৰেইন"}
+            }
             gram{
                 dnam{"গ্ৰাম"}
                 one{"{0} গ্ৰাঃ"}
@@ -1562,6 +1652,11 @@
                 one{"{0} M☉"}
                 other{"{0} M☉"}
             }
+            stone{
+                dnam{"ষ্ট’ন"}
+                one{"{0} ষ্ট'ন"}
+                other{"{0} ষ্ট'ন"}
+            }
             ton{
                 dnam{"টন"}
                 one{"{0} টন"}
@@ -1709,6 +1804,9 @@
                 one{"{0} bbl"}
                 other{"{0} bbl"}
             }
+            bushel{
+                dnam{"বুশ্বেল"}
+            }
             centiliter{
                 dnam{"ছেঃ লিঃ"}
                 one{"{0} ছেঃ লিঃ"}
@@ -1766,6 +1864,16 @@
                 one{"{0} ডেঃ লিঃ"}
                 other{"{0} ডেঃ লিঃ"}
             }
+            dram{
+                dnam{"ড্ৰাম তৰল পদাৰ্থ"}
+                one{"{0} ড্ৰাম তৰল পদাৰ্থ"}
+                other{"{0} ড্ৰাম তৰল পদাৰ্থ"}
+            }
+            drop{
+                dnam{"ড্ৰপ"}
+                one{"{0} ড্ৰপ"}
+                other{"{0} ড্ৰপ"}
+            }
             fluid-ounce{
                 dnam{"ফ্লুঃ আঃ"}
                 one{"{0} ফ্লুঃ আঃ"}
@@ -1793,6 +1901,11 @@
                 one{"{0} হেঃ লিঃ"}
                 other{"{0} হেঃ লিঃ"}
             }
+            jigger{
+                dnam{"জিগাৰ"}
+                one{"{0} জিগাৰ"}
+                other{"{0} জিগাৰ"}
+            }
             liter{
                 dnam{"লিটাৰ"}
                 one{"{0} লিঃ"}
@@ -1809,6 +1922,11 @@
                 one{"{0} মিঃ লিঃ"}
                 other{"{0} মিঃ লিঃ"}
             }
+            pinch{
+                dnam{"পিঞ্চ"}
+                one{"{0} পিঞ্চ"}
+                other{"{0} পিঞ্চ"}
+            }
             pint{
                 dnam{"পিণ্ট"}
                 one{"{0} পিণ্ট"}
diff --git a/icu4c/source/data/unit/asa.txt b/icu4c/source/data/unit/asa.txt
index 6a30986..5389fa3 100644
--- a/icu4c/source/data/unit/asa.txt
+++ b/icu4c/source/data/unit/asa.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 asa{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/ast.txt b/icu4c/source/data/unit/ast.txt
index c8d880d..4621f85 100644
--- a/icu4c/source/data/unit/ast.txt
+++ b/icu4c/source/data/unit/ast.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ast{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/az.txt b/icu4c/source/data/unit/az.txt
index ed3b5d2..46c1867 100644
--- a/icu4c/source/data/unit/az.txt
+++ b/icu4c/source/data/unit/az.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -15,9 +15,9 @@
                 other{"{0} g qüvvəsi"}
             }
             meter-per-square-second{
-                dnam{"metr saniyə kvadratı"}
-                one{"{0} metr saniyə kvadratı"}
-                other{"{0} metr saniyə kvadratı"}
+                dnam{"metr kvadrat saniyə"}
+                one{"{0} metr kvadrat saniyə"}
+                other{"{0} metr kvadrat saniyə"}
             }
         }
         angle{
@@ -135,8 +135,8 @@
             }
             permillion{
                 dnam{"milyonda hissəcik"}
-                one{"milyonda {0} hissəcik"}
-                other{"milyonda {0} hissəcik"}
+                one{"{0} milyonda hissəcik"}
+                other{"{0} milyonda hissəcik"}
             }
             permyriad{
                 dnam{"permiriada"}
@@ -403,6 +403,9 @@
             }
         }
         graphics{
+            dot{
+                dnam{"dot nöqtə"}
+            }
             dot-per-centimeter{
                 dnam{"nöqtə / santimetr"}
                 one{"{0} nöqtə / santimetr"}
@@ -454,12 +457,27 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            earth-radius{
+                dnam{"yer radiusu"}
+                one{"{0} yer radiusu"}
+                other{"{0} yer radiusu"}
+            }
+            fathom{
+                dnam{"fatom"}
+                one{"{0} fatom"}
+                other{"{0} fatom"}
+            }
             foot{
                 dnam{"fut"}
                 one{"{0} fut"}
                 other{"{0} fut"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"farlonq"}
+                one{"{0} farlonq"}
+                other{"{0} farlonq"}
+            }
             inch{
                 dnam{"düym"}
                 one{"{0} düym"}
@@ -540,6 +558,16 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                one{"{0} kandela"}
+                other{"{0} kandela"}
+            }
+            lumen{
+                dnam{"lümen"}
+                one{"{0} lümen"}
+                other{"{0} lümen"}
+            }
             lux{
                 dnam{"lüks"}
                 one{"{0} lüks"}
@@ -567,6 +595,11 @@
                 one{"{0} yer kütləsi"}
                 other{"{0} yer kütləsi"}
             }
+            grain{
+                dnam{"qranul"}
+                one{"{0} qranul"}
+                other{"{0} qranul"}
+            }
             gram{
                 dnam{"qram"}
                 one{"{0} qram"}
@@ -771,6 +804,11 @@
             barrel{
                 dnam{"barrel"}
             }
+            bushel{
+                dnam{"buşel"}
+                one{"{0} buşel"}
+                other{"{0} buşel"}
+            }
             centiliter{
                 dnam{"santilitr"}
                 one{"{0} santilitr"}
@@ -828,6 +866,26 @@
                 one{"{0} desilitr"}
                 other{"{0} desilitr"}
             }
+            dessert-spoon{
+                dnam{"dessert qaşığı"}
+                one{"{0} dessert qaşığı"}
+                other{"{0} dessert qaşığı"}
+            }
+            dessert-spoon-imperial{
+                dnam{"İmp. dessert qaşığı"}
+                one{"{0} İmp. dessert qaşığı"}
+                other{"{0} İmp. dessert qaşığı"}
+            }
+            dram{
+                dnam{"dram"}
+                one{"{0} dram"}
+                other{"{0} dram"}
+            }
+            drop{
+                dnam{"damcı"}
+                one{"{0} damcı"}
+                other{"{0} damcı"}
+            }
             fluid-ounce{
                 dnam{"maye unsiyası"}
                 one{"{0} maye unsiyası"}
@@ -871,6 +929,11 @@
                 one{"{0} millilitr"}
                 other{"{0} millilitr"}
             }
+            pinch{
+                dnam{"çimdik"}
+                one{"{0} çimdik"}
+                other{"{0} çimdik"}
+            }
             pint{
                 dnam{"pint"}
                 one{"{0} pint"}
@@ -886,6 +949,11 @@
                 one{"{0} kvart"}
                 other{"{0} kvart"}
             }
+            quart-imperial{
+                dnam{"İmp. kvarta"}
+                one{"{0} İmp. kvarta"}
+                other{"{0} İmp. kvarta"}
+            }
             tablespoon{
                 dnam{"xörək qaşığı"}
                 one{"{0} xörək qaşığı"}
@@ -1158,7 +1226,7 @@
                 other{"{0} G"}
             }
             meter-per-square-second{
-                dnam{"m/s²"}
+                dnam{"metr/s²"}
                 one{"{0} m/s²"}
                 other{"{0} m/s²"}
             }
@@ -1592,12 +1660,27 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            earth-radius{
+                dnam{"yer radiusu"}
+                one{"{0} R⊕"}
+                other{"{0} R⊕"}
+            }
+            fathom{
+                dnam{"fatom"}
+                one{"{0} fth"}
+                other{"{0} fth"}
+            }
             foot{
                 dnam{"fut"}
                 one{"{0} ft"}
                 other{"{0} ft"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"farlonq"}
+                one{"{0} farlonq"}
+                other{"{0} farlonq"}
+            }
             inch{
                 dnam{"düym"}
                 one{"{0} in"}
@@ -1676,6 +1759,16 @@
             }
         }
         light{
+            candela{
+                dnam{"kd"}
+                one{"{0} kd"}
+                other{"{0} kd"}
+            }
+            lumen{
+                dnam{"lm"}
+                one{"{0} lm"}
+                other{"{0} lm"}
+            }
             lux{
                 dnam{"lx"}
                 one{"{0} lx"}
@@ -1697,6 +1790,11 @@
             earth-mass{
                 dnam{"yer kütləsi"}
             }
+            grain{
+                dnam{"qranul"}
+                one{"{0} qranul"}
+                other{"{0} qranul"}
+            }
             gram{
                 dnam{"qram"}
                 one{"{0} q"}
@@ -1800,8 +1898,8 @@
             }
             inch-ofhg{
                 dnam{"civə düymü"}
-                one{"{0} inHg"}
-                other{"{0} inHg"}
+                one{"{0} civə düymü"}
+                other{"{0} civə düymü"}
             }
             millibar{
                 dnam{"millibar"}
@@ -1874,6 +1972,11 @@
                 one{"{0} ac ft"}
                 other{"{0} ac ft"}
             }
+            bushel{
+                dnam{"buşel"}
+                one{"{0} buşel"}
+                other{"{0} buşel"}
+            }
             centiliter{
                 dnam{"sL"}
                 one{"{0} sL"}
@@ -1931,6 +2034,21 @@
                 one{"{0} dL"}
                 other{"{0} dL"}
             }
+            dessert-spoon{
+                dnam{"des.qaş."}
+                one{"{0} des.qaş."}
+                other{"{0} des.qaş."}
+            }
+            dessert-spoon-imperial{
+                dnam{"des.qaş. İmp."}
+                one{"{0} des.qaş. İmp"}
+                other{"{0} des.qaş. İmp."}
+            }
+            drop{
+                dnam{"damcı"}
+                one{"{0} damcı"}
+                other{"{0} damcı"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -1974,6 +2092,11 @@
                 one{"{0} mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"çimdik"}
+                one{"{0} çimdik"}
+                other{"{0} çimdik"}
+            }
             pint{
                 dnam{"pt"}
                 one{"{0} pt"}
@@ -1989,6 +2112,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"kvarta İmp."}
+                one{"{0} kvarta İmp."}
+                other{"{0} kvarta İmp."}
+            }
             tablespoon{
                 dnam{"xrqş"}
                 one{"{0} xrqş"}
diff --git a/icu4c/source/data/unit/az_AZ.txt b/icu4c/source/data/unit/az_AZ.txt
index caf84c0..8932e86 100644
--- a/icu4c/source/data/unit/az_AZ.txt
+++ b/icu4c/source/data/unit/az_AZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_AZ{
     "%%ALIAS"{"az_Latn_AZ"}
 }
diff --git a/icu4c/source/data/unit/az_Cyrl.txt b/icu4c/source/data/unit/az_Cyrl.txt
index bd374ae..f09e5a6 100644
--- a/icu4c/source/data/unit/az_Cyrl.txt
+++ b/icu4c/source/data/unit/az_Cyrl.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_Cyrl{
     %%Parent{"root"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/az_Latn.txt b/icu4c/source/data/unit/az_Latn.txt
index 6022c58..6464d2e 100644
--- a/icu4c/source/data/unit/az_Latn.txt
+++ b/icu4c/source/data/unit/az_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/az_Latn_AZ.txt b/icu4c/source/data/unit/az_Latn_AZ.txt
index 36c6e61..3963c91 100644
--- a/icu4c/source/data/unit/az_Latn_AZ.txt
+++ b/icu4c/source/data/unit/az_Latn_AZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/bas.txt b/icu4c/source/data/unit/bas.txt
index c1c65dd..a18120a 100644
--- a/icu4c/source/data/unit/bas.txt
+++ b/icu4c/source/data/unit/bas.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bas{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/be.txt b/icu4c/source/data/unit/be.txt
index d9d5673..9591ab5 100644
--- a/icu4c/source/data/unit/be.txt
+++ b/icu4c/source/data/unit/be.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 be{
-    Version{"37"}
     durationUnits{
         hm{"hh:mm"}
         hms{"hh:mm:ss"}
@@ -185,7 +185,7 @@
                 other{"{0} праміле"}
             }
             permillion{
-                dnam{"частак на мільён"}
+                dnam{"часткі на мільён"}
                 few{"{0} часткі на мільён"}
                 many{"{0} частак на мільён"}
                 one{"{0} частка на мільён"}
@@ -550,6 +550,13 @@
             }
         }
         graphics{
+            dot{
+                dnam{"кропкі"}
+                few{"{0} кропкі"}
+                many{"{0} кропак"}
+                one{"{0} кропка"}
+                other{"{0} кропкі"}
+            }
             dot-per-centimeter{
                 dnam{"кропкі на сантыметр"}
                 few{"{0} кропкі на сантыметр"}
@@ -623,6 +630,20 @@
                 one{"{0} дэцыметр"}
                 other{"{0} дэцыметра"}
             }
+            earth-radius{
+                dnam{"радыус Зямлі"}
+                few{"{0} R⊕"}
+                many{"{0} R⊕"}
+                one{"{0} радыус Зямлі"}
+                other{"{0} радыуса Зямлі"}
+            }
+            fathom{
+                dnam{"фатамы"}
+                few{"{0} фатамы"}
+                many{"{0} фатамаў"}
+                one{"{0} фатам"}
+                other{"{0} фатама"}
+            }
             foot{
                 dnam{"футы"}
                 few{"{0} футы"}
@@ -631,6 +652,13 @@
                 other{"{0} фута"}
                 per{"{0} на фут"}
             }
+            furlong{
+                dnam{"фурлонгі"}
+                few{"{0} фурлонгі"}
+                many{"{0} фурлонгаў"}
+                one{"{0} фурлонг"}
+                other{"{0} фурлонга"}
+            }
             inch{
                 dnam{"цалі"}
                 few{"{0} цалі"}
@@ -741,6 +769,20 @@
             }
         }
         light{
+            candela{
+                dnam{"кандэла"}
+                few{"{0} кандэлы"}
+                many{"{0} кандэл"}
+                one{"{0} кандэла"}
+                other{"{0} кандэлы"}
+            }
+            lumen{
+                dnam{"люмен"}
+                few{"{0} люмены"}
+                many{"{0} люменаў"}
+                one{"{0} люмен"}
+                other{"{0} люмена"}
+            }
             lux{
                 dnam{"люкс"}
                 few{"{0} люксы"}
@@ -778,6 +820,13 @@
                 one{"{0} маса Зямлі"}
                 other{"{0} масы Зямлі"}
             }
+            grain{
+                dnam{"граны"}
+                few{"{0} граны"}
+                many{"{0} гранаў"}
+                one{"{0} гран"}
+                other{"{0} грана"}
+            }
             gram{
                 dnam{"грамы"}
                 few{"{0} г"}
@@ -845,6 +894,13 @@
                 one{"{0} маса Сонца"}
                 other{"{0} масы Сонца"}
             }
+            stone{
+                dnam{"стоны"}
+                few{"{0} стоны"}
+                many{"{0} стонаў"}
+                one{"{0} стоўн"}
+                other{"{0} стона"}
+            }
             ton{
                 dnam{"амерыканскія тоны"}
                 few{"{0} амерыканскія тоны"}
@@ -1060,6 +1116,13 @@
                 one{"{0} барэль"}
                 other{"{0} барэля"}
             }
+            bushel{
+                dnam{"бушалі"}
+                few{"{0} бушалі"}
+                many{"{0} бушаляў"}
+                one{"{0} бушаль"}
+                other{"{0} бушаля"}
+            }
             centiliter{
                 dnam{"сантылітр"}
                 few{"{0} сантылітры"}
@@ -1139,6 +1202,34 @@
                 one{"{0} дэцылітр"}
                 other{"{0} дэцылітра"}
             }
+            dessert-spoon{
+                dnam{"дэсертная лыжка"}
+                few{"{0} дэсертныя лыжкі"}
+                many{"{0} дэсертных лыжак"}
+                one{"{0} дэсертная лыжка"}
+                other{"{0} дэсертнай лыжкі"}
+            }
+            dessert-spoon-imperial{
+                dnam{"брытанская дэсертная лыжка"}
+                few{"{0} брыт. дэс. л."}
+                many{"{0} брыт. дэс. л."}
+                one{"{0} брытанская дэсертная лыжка"}
+                other{"{0} брытанскай дэсертнай лыжкі"}
+            }
+            dram{
+                dnam{"драхма"}
+                few{"{0} вад. драхмы"}
+                many{"{0} вад. драхмаў"}
+                one{"{0} драхма"}
+                other{"{0} вад. драхмы"}
+            }
+            drop{
+                dnam{"кропля"}
+                few{"{0} кроплі"}
+                many{"{0} кропляў"}
+                one{"{0} кропля"}
+                other{"{0} кроплі"}
+            }
             fluid-ounce{
                 dnam{"вадкія унцыі"}
                 few{"{0} вадкія унцыі"}
@@ -1176,6 +1267,13 @@
                 one{"{0} гекталітр"}
                 other{"{0} гекталітра"}
             }
+            jigger{
+                dnam{"джыгер"}
+                few{"{0} джыгеры"}
+                many{"{0} джыгераў"}
+                one{"{0} джыгер"}
+                other{"{0} джыгера"}
+            }
             liter{
                 dnam{"літры"}
                 few{"{0} літры"}
@@ -1198,6 +1296,13 @@
                 one{"{0} мілілітр"}
                 other{"{0} мілілітра"}
             }
+            pinch{
+                dnam{"дробка"}
+                few{"{0} дробкі"}
+                many{"{0} дробак"}
+                one{"{0} дробка"}
+                other{"{0} дробкі"}
+            }
             pint{
                 dnam{"пінты"}
                 few{"{0} пінты"}
@@ -1219,6 +1324,13 @@
                 one{"{0} кварта"}
                 other{"{0} кварты"}
             }
+            quart-imperial{
+                dnam{"брыт. кварта"}
+                few{"{0} брыт. кварты"}
+                many{"{0} брыт. кварт"}
+                one{"{0} брыт. кварта"}
+                other{"{0} брыт. кварты"}
+            }
             tablespoon{
                 dnam{"сталовыя лыжкі"}
                 few{"{0} сталовыя лыжкі"}
@@ -1624,14 +1736,14 @@
         }
         digital{
             bit{
-                dnam{"біты"}
+                dnam{"біт"}
                 few{"{0} біты"}
                 many{"{0} біт"}
                 one{"{0} біт"}
                 other{"{0} біта"}
             }
             byte{
-                dnam{"байты"}
+                dnam{"байт"}
                 few{"{0} байты"}
                 many{"{0} байт"}
                 one{"{0} байт"}
@@ -1680,7 +1792,7 @@
                 other{"{0} МБ"}
             }
             petabyte{
-                dnam{"ПБайт"}
+                dnam{"ПБ"}
                 few{"{0} ПБ"}
                 many{"{0} ПБ"}
                 one{"{0} ПБ"}
@@ -1936,6 +2048,13 @@
             }
         }
         graphics{
+            dot{
+                dnam{"кр"}
+                few{"{0} кр"}
+                many{"{0} кр"}
+                one{"{0} кр"}
+                other{"{0} кр"}
+            }
             dot-per-centimeter{
                 dnam{"кр/см"}
                 few{"{0} кр/см"}
@@ -2009,6 +2128,13 @@
                 one{"{0} дм"}
                 other{"{0} дм"}
             }
+            fathom{
+                dnam{"фатамы"}
+                few{"{0} фат."}
+                many{"{0} фат."}
+                one{"{0} фат."}
+                other{"{0} фат."}
+            }
             foot{
                 dnam{"футы"}
                 few{"{0} футы"}
@@ -2017,6 +2143,13 @@
                 other{"{0} фута"}
                 per{"{0}/фут"}
             }
+            furlong{
+                dnam{"фурлонгі"}
+                few{"{0} фур."}
+                many{"{0} фур."}
+                one{"{0} фур."}
+                other{"{0} фур."}
+            }
             inch{
                 dnam{"цалі"}
                 few{"{0} цалі"}
@@ -2127,6 +2260,20 @@
             }
         }
         light{
+            candela{
+                dnam{"кд"}
+                few{"{0} кд"}
+                many{"{0} кд"}
+                one{"{0} кд"}
+                other{"{0} кд"}
+            }
+            lumen{
+                dnam{"лм"}
+                few{"{0} лм"}
+                many{"{0} лм"}
+                one{"{0} лм"}
+                other{"{0} лм"}
+            }
             lux{
                 dnam{"лк"}
                 few{"{0} лк"}
@@ -2164,6 +2311,13 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"гран"}
+                few{"{0} граны"}
+                many{"{0} гранаў"}
+                one{"{0} гран"}
+                other{"{0} грана"}
+            }
             gram{
                 dnam{"г"}
                 few{"{0} г"}
@@ -2231,6 +2385,13 @@
                 one{"{0} M☉"}
                 other{"{0} M☉"}
             }
+            stone{
+                dnam{"стоны"}
+                few{"{0} стоны"}
+                many{"{0} стонаў"}
+                one{"{0} стон"}
+                other{"{0} стона"}
+            }
             ton{
                 dnam{"амер. т"}
                 few{"{0} амер. т"}
@@ -2446,6 +2607,13 @@
                 one{"{0} барэль"}
                 other{"{0} барэля"}
             }
+            bushel{
+                dnam{"бушалі"}
+                few{"{0} буш."}
+                many{"{0} буш."}
+                one{"{0} буш."}
+                other{"{0} буш."}
+            }
             centiliter{
                 dnam{"сл"}
                 few{"{0} сл"}
@@ -2525,6 +2693,34 @@
                 one{"{0} дл"}
                 other{"{0} дл"}
             }
+            dessert-spoon{
+                dnam{"дэс. л."}
+                few{"{0} дэс. л."}
+                many{"{0} дэс. л."}
+                one{"{0} дэс. л."}
+                other{"{0} дэс. л."}
+            }
+            dessert-spoon-imperial{
+                dnam{"брыт. дэс. л."}
+                few{"{0} брыт. дэс. л."}
+                many{"{0} брыт. дэс. л."}
+                one{"{0} брыт. дэс. л."}
+                other{"{0} брыт. дэс. л."}
+            }
+            dram{
+                dnam{"вад. драхма"}
+                few{"{0} вад. драхмы"}
+                many{"{0} вад. драхмаў"}
+                one{"{0} вад. драхма"}
+                other{"{0} вад. драхмы"}
+            }
+            drop{
+                dnam{"кропля"}
+                few{"{0} кроплі"}
+                many{"{0} кропель"}
+                one{"{0} кропля"}
+                other{"{0} кроплі"}
+            }
             fluid-ounce{
                 dnam{"вадк. унц."}
                 few{"{0} вадк. унц."}
@@ -2562,6 +2758,13 @@
                 one{"{0} гл"}
                 other{"{0} гл"}
             }
+            jigger{
+                dnam{"джыгер"}
+                few{"{0} джыгеры"}
+                many{"{0} джыгераў"}
+                one{"{0} джыгер"}
+                other{"{0} джыгера"}
+            }
             liter{
                 dnam{"л"}
                 few{"{0} л"}
@@ -2584,6 +2787,13 @@
                 one{"{0} мл"}
                 other{"{0} мл"}
             }
+            pinch{
+                dnam{"дробка"}
+                few{"{0} дробкі"}
+                many{"{0} дробак"}
+                one{"{0} дробка"}
+                other{"{0} дробкі"}
+            }
             pint{
                 dnam{"пінты"}
                 few{"{0} пінты"}
@@ -2605,6 +2815,13 @@
                 one{"{0} кварта"}
                 other{"{0} кварты"}
             }
+            quart-imperial{
+                dnam{"брыт. кварта"}
+                few{"{0} брыт. кварты"}
+                many{"{0} брыт. кварт"}
+                one{"{0} брыт. кварта"}
+                other{"{0} брыт. кварты"}
+            }
             tablespoon{
                 dnam{"ст. лыжкі"}
                 few{"{0} ст. лыжкі"}
diff --git a/icu4c/source/data/unit/bem.txt b/icu4c/source/data/unit/bem.txt
index 9b64218..c874e0e 100644
--- a/icu4c/source/data/unit/bem.txt
+++ b/icu4c/source/data/unit/bem.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bem{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/bez.txt b/icu4c/source/data/unit/bez.txt
index c754378..0884fce 100644
--- a/icu4c/source/data/unit/bez.txt
+++ b/icu4c/source/data/unit/bez.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bez{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/bg.txt b/icu4c/source/data/unit/bg.txt
index cbaebfc..6909346 100644
--- a/icu4c/source/data/unit/bg.txt
+++ b/icu4c/source/data/unit/bg.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bg{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -161,14 +161,14 @@
                 other{"{0} литра на километър"}
             }
             mile-per-gallon{
-                dnam{"мили с един галон"}
-                one{"{0} миля с един галон"}
-                other{"{0} мили с един галон"}
+                dnam{"мили на галон"}
+                one{"{0} миля на галон"}
+                other{"{0} мили на галон"}
             }
             mile-per-gallon-imperial{
-                dnam{"мили с един британски галон"}
-                one{"{0} миля с един британски галон"}
-                other{"{0} мили с един британски галон"}
+                dnam{"мили на имперски галон"}
+                one{"{0} миля на имперски галон"}
+                other{"{0} мили на имперски галон"}
             }
         }
         coordinate{
@@ -408,6 +408,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"точка"}
+                one{"{0} точка"}
+                other{"{0} точки"}
+            }
             dot-per-centimeter{
                 dnam{"точки на сантиметър"}
                 one{"{0} точка на сантиметър"}
@@ -459,12 +464,27 @@
                 one{"{0} дециметър"}
                 other{"{0} дециметра"}
             }
+            earth-radius{
+                dnam{"земен радиус"}
+                one{"{0} земен радиус"}
+                other{"{0} земни радиуса"}
+            }
+            fathom{
+                dnam{"фатоми"}
+                one{"{0} фатом"}
+                other{"{0} фатома"}
+            }
             foot{
                 dnam{"футове"}
                 one{"{0} фут"}
                 other{"{0} фута"}
                 per{"{0} на фут"}
             }
+            furlong{
+                dnam{"фърлонги"}
+                one{"{0} фърлонг"}
+                other{"{0} фърлонга"}
+            }
             inch{
                 dnam{"инчове"}
                 one{"{0} инч"}
@@ -545,6 +565,16 @@
             }
         }
         light{
+            candela{
+                dnam{"кандела"}
+                one{"{0} кандела"}
+                other{"{0} кандели"}
+            }
+            lumen{
+                dnam{"лумен"}
+                one{"{0} лумен"}
+                other{"{0} лумена"}
+            }
             lux{
                 dnam{"луксове"}
                 one{"{0} лукс"}
@@ -572,6 +602,11 @@
                 one{"{0} маса на Земята"}
                 other{"{0} маси на Земята"}
             }
+            grain{
+                dnam{"гран"}
+                one{"{0} гран"}
+                other{"{0} грана"}
+            }
             gram{
                 dnam{"грамове"}
                 one{"{0} грам"}
@@ -585,9 +620,9 @@
                 per{"{0} на килограм"}
             }
             metric-ton{
-                dnam{"тонове"}
-                one{"{0} тон"}
-                other{"{0} тона"}
+                dnam{"метрични тонове"}
+                one{"{0} метричен тон"}
+                other{"{0} метрични тона"}
             }
             microgram{
                 dnam{"микрограмове"}
@@ -621,6 +656,11 @@
                 one{"{0} слънчева маса"}
                 other{"{0} слънчеви маси"}
             }
+            stone{
+                dnam{"стоунове"}
+                one{"{0} стоун"}
+                other{"{0} стоуна"}
+            }
             ton{
                 dnam{"къси тонове"}
                 one{"{0} къс тон"}
@@ -762,9 +802,9 @@
                 other{"{0} нютон-метра"}
             }
             pound-force-foot{
-                dnam{"фунт-футове"}
-                one{"{0} фунт-фут"}
-                other{"{0} фунт-фута"}
+                dnam{"паунд-футове"}
+                one{"{0} паунд-фут сила"}
+                other{"{0} паунд-фута"}
             }
         }
         volume{
@@ -778,6 +818,11 @@
                 one{"{0} барел"}
                 other{"{0} барела"}
             }
+            bushel{
+                dnam{"бушели"}
+                one{"{0} бушел"}
+                other{"{0} бушела"}
+            }
             centiliter{
                 dnam{"сентилитри"}
                 one{"{0} сентилитър"}
@@ -835,19 +880,34 @@
                 one{"{0} децилитър"}
                 other{"{0} децилитра"}
             }
+            dessert-spoon{
+                dnam{"десертна лъжица"}
+                one{"{0} десертна лъжица"}
+                other{"{0} десертни лъжици"}
+            }
+            dram{
+                dnam{"драм"}
+                one{"{0} драм"}
+                other{"{0} драма"}
+            }
+            drop{
+                dnam{"капка"}
+                one{"{0} капка"}
+                other{"{0} капки"}
+            }
             fluid-ounce{
                 dnam{"течни унции"}
                 one{"{0} течна унция"}
                 other{"{0} течни унции"}
             }
             fluid-ounce-imperial{
-                dnam{"Британски течни унции"}
-                one{"{0} британска течна унция"}
-                other{"{0} британски течни унции"}
+                dnam{"имперски течни унции"}
+                one{"{0} имперска течна унция"}
+                other{"{0} имперски течни унции"}
             }
             gallon{
                 dnam{"галони"}
-                one{"{0} галона"}
+                one{"{0} галон"}
                 other{"{0} галона"}
                 per{"{0} на галон"}
             }
@@ -862,6 +922,11 @@
                 one{"{0} хектолитър"}
                 other{"{0} хектолитра"}
             }
+            jigger{
+                dnam{"джигър"}
+                one{"{0} джигър"}
+                other{"{0} джигъра"}
+            }
             liter{
                 dnam{"литри"}
                 one{"{0} литър"}
@@ -878,6 +943,11 @@
                 one{"{0} милилитър"}
                 other{"{0} милилитра"}
             }
+            pinch{
+                dnam{"щипка"}
+                one{"{0} щипка"}
+                other{"{0} щипки"}
+            }
             pint{
                 dnam{"пинти"}
                 one{"{0} пинта"}
@@ -893,6 +963,11 @@
                 one{"{0} кварта"}
                 other{"{0} кварти"}
             }
+            quart-imperial{
+                dnam{"имперска кварта"}
+                one{"{0} имперска кварта"}
+                other{"{0} имперски кварти"}
+            }
             tablespoon{
                 dnam{"супени лъжици"}
                 one{"{0} супена лъжица"}
@@ -1388,6 +1463,11 @@
                 other{"{0} д"}
                 per{"{0}/д"}
             }
+            decade{
+                dnam{"декада"}
+                one{"{0} декада"}
+                other{"{0} декади"}
+            }
             hour{
                 dnam{"часове"}
                 one{"{0} ч"}
@@ -1541,6 +1621,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"точка"}
+                one{"{0} точка"}
+                other{"{0} точки"}
+            }
             em{
                 dnam{"ем"}
             }
@@ -1562,10 +1647,23 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                one{"{0} R⊕"}
+                other{"{0} R⊕"}
+            }
+            fathom{
+                one{"{0} fth"}
+                other{"{0} fth"}
+            }
             foot{
                 one{"{0} ft"}
                 other{"{0} ft"}
             }
+            furlong{
+                one{"{0} fur"}
+                other{"{0} fur"}
+            }
             inch{
                 one{"{0} in"}
                 other{"{0} in"}
@@ -1622,7 +1720,6 @@
                 other{"{0} pc"}
             }
             picometer{
-                dnam{"пикометри"}
                 one{"{0} pm"}
                 other{"{0} pm"}
             }
@@ -1641,6 +1738,16 @@
             }
         }
         light{
+            candela{
+                dnam{"cd"}
+                one{"{0} cd"}
+                other{"{0} cd"}
+            }
+            lumen{
+                dnam{"lm"}
+                one{"{0} lm"}
+                other{"{0} lm"}
+            }
             lux{
                 dnam{"lx"}
                 one{"{0} lx"}
@@ -1666,6 +1773,11 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"гран"}
+                one{"{0} гран"}
+                other{"{0} грана"}
+            }
             gram{
                 dnam{"g"}
                 one{"{0} g"}
@@ -1711,6 +1823,10 @@
                 one{"{0} M☉"}
                 other{"{0} M☉"}
             }
+            stone{
+                one{"{0} st"}
+                other{"{0} st"}
+            }
             ton{
                 one{"{0} tn"}
                 other{"{0} tn"}
@@ -1856,6 +1972,11 @@
                 one{"{0} bbl"}
                 other{"{0} bbl"}
             }
+            bushel{
+                dnam{"бушели"}
+                one{"{0} bu"}
+                other{"{0} bu"}
+            }
             centiliter{
                 dnam{"cl"}
                 one{"{0} cl"}
@@ -1909,6 +2030,26 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"дес. лъжица"}
+                one{"{0} дес. лъжица"}
+                other{"{0} дес. лъжици"}
+            }
+            dessert-spoon-imperial{
+                dnam{"брит. дес. лъжица"}
+                one{"{0} брит. дес. лъжица"}
+                other{"{0} брит. дес. лъжици"}
+            }
+            dram{
+                dnam{"течен драм"}
+                one{"{0} теч. драм"}
+                other{"{0} теч. драма"}
+            }
+            drop{
+                dnam{"капка"}
+                one{"{0} капка"}
+                other{"{0} капки"}
+            }
             fluid-ounce{
                 one{"{0} fl oz US"}
                 other{"{0} fl oz US"}
@@ -1925,7 +2066,7 @@
             gallon-imperial{
                 dnam{"имп. галон"}
                 one{"{0} имп. галон"}
-                other{"{0} имп. гал."}
+                other{"{0} имп. галона"}
                 per{"{0}/имп. галон"}
             }
             hectoliter{
@@ -1933,6 +2074,11 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"джигър"}
+                one{"{0} джигър"}
+                other{"{0} джигъра"}
+            }
             liter{
                 dnam{"l"}
                 one{"{0} l"}
@@ -1949,6 +2095,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"щипка"}
+                one{"{0} щипка"}
+                other{"{0} щипки"}
+            }
             pint{
                 one{"{0} pt"}
                 other{"{0} pt"}
@@ -1962,6 +2113,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"имп. кварта"}
+                one{"{0} имп. кварта"}
+                other{"{0} имп. кварти"}
+            }
             tablespoon{
                 dnam{"с. л."}
                 one{"{0} с. л."}
diff --git a/icu4c/source/data/unit/bm.txt b/icu4c/source/data/unit/bm.txt
index 92cb478..94e42a4 100644
--- a/icu4c/source/data/unit/bm.txt
+++ b/icu4c/source/data/unit/bm.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bm{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/bn.txt b/icu4c/source/data/unit/bn.txt
index 03a3001..8543f82 100644
--- a/icu4c/source/data/unit/bn.txt
+++ b/icu4c/source/data/unit/bn.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bn{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -540,6 +540,16 @@
             }
         }
         light{
+            candela{
+                dnam{"ক্যান্ডেলা"}
+                one{"{0} ক্যান্ডেলা"}
+                other{"{0} ক্যান্ডেলা"}
+            }
+            lumen{
+                dnam{"লুমেন"}
+                one{"{0} লুমেন"}
+                other{"{0} লুমেন"}
+            }
             lux{
                 dnam{"লাক্স"}
                 one{"{0} লাক্স"}
@@ -746,6 +756,11 @@
                 one{"{0} নিউটন-একক"}
                 other{"{0} নিউটন-এককগুলি"}
             }
+            pound-force-foot{
+                dnam{"পাউন্ড-ফিট"}
+                one{"{0} lbf⋅ft"}
+                other{"{0} পাউন্ড-ফিট"}
+            }
         }
         volume{
             acre-foot{
@@ -857,6 +872,11 @@
                 one{"{0} মিলিলিটার"}
                 other{"{0} মিলিলিটার"}
             }
+            pinch{
+                dnam{"চিমটে"}
+                one{"{0} চিমটে"}
+                other{"{0} চিমটে"}
+            }
             pint{
                 dnam{"পিন্ট"}
                 one{"{0} পিন্ট"}
@@ -949,9 +969,9 @@
         }
         consumption{
             liter-per-100-kilometer{
-                dnam{"L/100km"}
-                one{"{0} L/100km"}
-                other{"{0} L/100km"}
+                dnam{"লি/100কিমি"}
+                one{"{0} লি/100কিমি"}
+                other{"{0} লি/100কিমি"}
             }
         }
         coordinate{
@@ -1427,9 +1447,9 @@
         }
         consumption{
             liter-per-100-kilometer{
-                dnam{"L/100km"}
-                one{"{0} L/100km"}
-                other{"{0} L/100km"}
+                dnam{"লি/100কিমি"}
+                one{"{0} লি/100কিমি"}
+                other{"{0} লি/100কিমি"}
             }
             liter-per-kilometer{
                 dnam{"লিটার/কিমি"}
@@ -2081,6 +2101,11 @@
                 one{"{0} mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"চিমটে"}
+                one{"{0} চিমটে"}
+                other{"{0} চিমটে"}
+            }
             pint{
                 dnam{"pt"}
                 one{"{0} pt"}
diff --git a/icu4c/source/data/unit/bo.txt b/icu4c/source/data/unit/bo.txt
index c1d22ea..4aa84f4 100644
--- a/icu4c/source/data/unit/bo.txt
+++ b/icu4c/source/data/unit/bo.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bo{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/br.txt b/icu4c/source/data/unit/br.txt
index 4df7507..7ff8016 100644
--- a/icu4c/source/data/unit/br.txt
+++ b/icu4c/source/data/unit/br.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 br{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -9,6 +9,14 @@
     }
     units{
         acceleration{
+            g-force{
+                dnam{"buanadur g"}
+                few{"{0} buanadur g"}
+                many{"{0} a vuanadurioù g"}
+                one{"{0} buanadur g"}
+                other{"{0} buanadur g"}
+                two{"{0} vuanadur g"}
+            }
             meter-per-square-second{
                 dnam{"metroù dre eilenn garrez"}
                 few{"{0} metr dre eilenn garrez"}
@@ -228,6 +236,7 @@
             }
         }
         coordinate{
+            dnam{"durcʼhadur"}
             east{"{0} Reter"}
             north{"{0} Norzh"}
             south{"{0} Su"}
@@ -581,6 +590,14 @@
             }
         }
         graphics{
+            dot{
+                dnam{"pik"}
+                few{"{0} fik"}
+                many{"{0} a bikoù"}
+                one{"{0} pik"}
+                other{"{0} pik"}
+                two{"{0} bik"}
+            }
             dot-per-centimeter{
                 dnam{"pikoù dre gentimetr"}
                 few{"{0} fik dre gentimetr"}
@@ -597,6 +614,14 @@
                 other{"{0} pik dre veutad"}
                 two{"{0} bik dre veutad"}
             }
+            em{
+                dnam{"esaouenn em"}
+                few{"{0} esaouenn em"}
+                many{"{0} a esaouennoù em"}
+                one{"{0} esaouenn em"}
+                other{"{0} esaouenn em"}
+                two{"{0} esaouenn em"}
+            }
             megapixel{
                 dnam{"megapikselioù"}
                 few{"{0} megapiksel"}
@@ -656,6 +681,14 @@
                 other{"{0} dekimetr"}
                 two{"{0} zekimetr"}
             }
+            earth-radius{
+                dnam{"skin douar"}
+                few{"{0} skin douar"}
+                many{"{0} a skinoù douar"}
+                one{"{0} skin douar"}
+                other{"{0} skin douar"}
+                two{"{0} skin douar"}
+            }
             fathom{
                 dnam{"gourhedadoù"}
                 few{"{0} gourhedad"}
@@ -806,6 +839,22 @@
             }
         }
         light{
+            candela{
+                dnam{"kandelaoù"}
+                few{"{0} c'handela"}
+                many{"{0} a gandelaoù"}
+                one{"{0} c'handela"}
+                other{"{0} kandela"}
+                two{"{0} gandela"}
+            }
+            lumen{
+                dnam{"lumenoù"}
+                few{"{0} lumen"}
+                many{"{0} a lumenoù"}
+                one{"{0} lumen"}
+                other{"{0} lumen"}
+                two{"{0} lumen"}
+            }
             lux{
                 dnam{"luksoù"}
                 few{"{0} luks"}
@@ -840,6 +889,13 @@
                 other{"{0} tolzad douar"}
                 two{"{0} dolzad douar"}
             }
+            grain{
+                few{"{0} greunad"}
+                many{"{0} a c'hreunadoù"}
+                one{"{0} greunad"}
+                other{"{0} greunad"}
+                two{"{0} c'hreunad"}
+            }
             gram{
                 dnam{"grammoù"}
                 few{"{0} gramm"}
@@ -984,6 +1040,14 @@
             }
         }
         pressure{
+            atmosphere{
+                dnam{"atmosfer"}
+                few{"{0} atmosfer"}
+                many{"{0} a atmosferoù"}
+                one{"{0} atmosfer"}
+                other{"{0} atmosfer"}
+                two{"{0} atmosfer"}
+            }
             bar{
                 dnam{"baroù"}
                 few{"{0} bar"}
@@ -1000,6 +1064,14 @@
                 other{"{0} hektopaskal"}
                 two{"{0} hektopaskal"}
             }
+            inch-ofhg{
+                dnam{"meutadoù merkur"}
+                few{"{0} meutad merkur"}
+                many{"{0} a veutadoù merkur"}
+                one{"{0} meutad merkur"}
+                other{"{0} meutad merkur"}
+                two{"{0} veutad merkur"}
+            }
             kilopascal{
                 dnam{"kilopaskaloù"}
                 few{"{0} c'hilopaskal"}
@@ -1024,6 +1096,14 @@
                 other{"{0} milibar"}
                 two{"{0} vilibar"}
             }
+            millimeter-ofhg{
+                dnam{"milimetradoù merkur"}
+                few{"{0} milimetrad merkur"}
+                many{"{0} a vilimetradoù merkur"}
+                one{"{0} milimetrad merkur"}
+                other{"{0} milimetrad merkur"}
+                two{"{0} vilimetrad merkur"}
+            }
             pascal{
                 dnam{"paskaloù"}
                 few{"{0} faskal"}
@@ -1234,6 +1314,38 @@
                 other{"{0} dekilitr"}
                 two{"{0} zekilitr"}
             }
+            dessert-spoon{
+                dnam{"loaiad dibenn-pred"}
+                few{"{0} loaiad dibenn-pred"}
+                many{"{0} a loaiadoù dibenn-pred"}
+                one{"{0} loaiad dibenn-pred"}
+                other{"{0} loaiad dibenn-pred"}
+                two{"{0} loaiad dibenn-pred"}
+            }
+            dessert-spoon-imperial{
+                dnam{"loaiad dibenn-pred impalaerel"}
+                few{"{0} loaiad dibenn-pred impalaerel"}
+                many{"{0} a loaiadoù dibenn-pred impalaerel"}
+                one{"{0} loaiad dibenn-pred impalaerel"}
+                other{"{0} loaiad dibenn-pred impalaerel"}
+                two{"{0} loaiad dibenn-pred impalaerel"}
+            }
+            dram{
+                dnam{"drakm liñvel"}
+                few{"{0} drakm liñvel"}
+                many{"{0} a zrakmoù liñvel"}
+                one{"{0} drakm liñvel"}
+                other{"{0} drakm liñvel"}
+                two{"{0} zrakm liñvel"}
+            }
+            drop{
+                dnam{"takenn"}
+                few{"{0} zakenn"}
+                many{"{0} a dakennoù"}
+                one{"{0} dakenn"}
+                other{"{0} takenn"}
+                two{"{0} dakenn"}
+            }
             fluid-ounce{
                 dnam{"oñsoù liñvel"}
                 few{"{0} oñs liñvel"}
@@ -1276,6 +1388,14 @@
                 other{"{0} hektolitr"}
                 two{"{0} hektolitr"}
             }
+            jigger{
+                dnam{"shot"}
+                few{"{0} shot"}
+                many{"{0} a shotoù"}
+                one{"{0} shot"}
+                other{"{0} shot"}
+                two{"{0} shot"}
+            }
             liter{
                 dnam{"litroù"}
                 few{"{0} litr"}
@@ -1301,6 +1421,14 @@
                 other{"{0} mililitr"}
                 two{"{0} vililitr"}
             }
+            pinch{
+                dnam{"piñsad"}
+                few{"{0} fiñsad"}
+                many{"{0} a biñsadoù"}
+                one{"{0} piñsad"}
+                other{"{0} piñsad"}
+                two{"{0} biñsad"}
+            }
             pint{
                 dnam{"pintoù"}
                 few{"{0} fint"}
@@ -1325,6 +1453,14 @@
                 other{"{0} kard"}
                 two{"{0} gard"}
             }
+            quart-imperial{
+                dnam{"kardoù impalaerel"}
+                few{"{0} c'hard impalaerel"}
+                many{"{0} a gardoù impalaerel"}
+                one{"{0} c'hard impalaerel"}
+                other{"{0} kard impalaerel"}
+                two{"{0} gard impalaerel"}
+            }
             tablespoon{
                 dnam{"loaiadoù-boued"}
                 few{"{0} loaiad-voued"}
@@ -1539,6 +1675,13 @@
                 other{"{0}‰"}
                 two{"{0}‰"}
             }
+            permillion{
+                few{"{0}ppm"}
+                many{"{0}ppm"}
+                one{"{0}ppm"}
+                other{"{0}ppm"}
+                two{"{0}ppm"}
+            }
             permyriad{
                 few{"{0}‱"}
                 many{"{0}‱"}
@@ -1582,6 +1725,7 @@
             }
         }
         coordinate{
+            dnam{"durcʼhadur"}
             east{"{0}R"}
             north{"{0}N"}
             south{"{0}S"}
@@ -1919,6 +2063,14 @@
             }
         }
         graphics{
+            dot{
+                dnam{"pik"}
+                few{"{0}pik"}
+                many{"{0}pik"}
+                one{"{0}pik"}
+                other{"{0}pik"}
+                two{"{0}pik"}
+            }
             dot-per-centimeter{
                 dnam{"pdcm"}
                 few{"{0}pdcm"}
@@ -2000,6 +2152,13 @@
                 other{"{0}dm"}
                 two{"{0}dm"}
             }
+            earth-radius{
+                few{"{0}R⊕"}
+                many{"{0}R⊕"}
+                one{"{0}R⊕"}
+                other{"{0}R⊕"}
+                two{"{0}R⊕"}
+            }
             fathom{
                 dnam{"fth"}
                 few{"{0}fth"}
@@ -2147,6 +2306,20 @@
             }
         }
         light{
+            candela{
+                few{"{0}cd"}
+                many{"{0}cd"}
+                one{"{0}cd"}
+                other{"{0}cd"}
+                two{"{0}cd"}
+            }
+            lumen{
+                few{"{0}lm"}
+                many{"{0}lm"}
+                one{"{0}lm"}
+                other{"{0}lm"}
+                two{"{0}lm"}
+            }
             lux{
                 dnam{"lx"}
                 few{"{0}lx"}
@@ -2186,6 +2359,14 @@
                 other{"{0}M⊕"}
                 two{"{0}M⊕"}
             }
+            grain{
+                dnam{"gr"}
+                few{"{0}gr"}
+                many{"{0}gr"}
+                one{"{0}gr"}
+                other{"{0}gr"}
+                two{"{0}gr"}
+            }
             gram{
                 dnam{"g"}
                 few{"{0}g"}
@@ -2594,6 +2775,38 @@
                 other{"{0}dl"}
                 two{"{0}dl"}
             }
+            dessert-spoon{
+                dnam{"l.d.-b."}
+                few{"{0}l.d.-b."}
+                many{"{0}l.d.-b."}
+                one{"{0}l.d.-b."}
+                other{"{0}l.d.-b."}
+                two{"{0}l.d.-b."}
+            }
+            dessert-spoon-imperial{
+                dnam{"ldb Imp"}
+                few{"{0}ldb Imp"}
+                many{"{0}ldb Imp"}
+                one{"{0}ldb Imp"}
+                other{"{0}ldb Imp"}
+                two{"{0}ldb Imp"}
+            }
+            dram{
+                dnam{"fl dr"}
+                few{"{0}fl dr"}
+                many{"{0}fl dr"}
+                one{"{0}fl dr"}
+                other{"{0}fl dr"}
+                two{"{0}fl dr"}
+            }
+            drop{
+                dnam{"gt"}
+                few{"{0}gt"}
+                many{"{0}gt"}
+                one{"{0}gt"}
+                other{"{0}gt"}
+                two{"{0}gt"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 few{"{0}fl oz"}
@@ -2635,6 +2848,14 @@
                 other{"{0}hl"}
                 two{"{0}hl"}
             }
+            jigger{
+                dnam{"shot"}
+                few{"{0}shot"}
+                many{"{0}shot"}
+                one{"{0}shot"}
+                other{"{0}shot"}
+                two{"{0}shot"}
+            }
             liter{
                 dnam{"l"}
                 few{"{0}l"}
@@ -2660,6 +2881,14 @@
                 other{"{0}ml"}
                 two{"{0}ml"}
             }
+            pinch{
+                dnam{"piñs"}
+                few{"{0}piñs"}
+                many{"{0}piñs"}
+                one{"{0}piñs"}
+                other{"{0}piñs"}
+                two{"{0}piñs"}
+            }
             pint{
                 dnam{"pt"}
                 few{"{0}pt"}
@@ -2684,6 +2913,14 @@
                 other{"{0}qt"}
                 two{"{0}qt"}
             }
+            quart-imperial{
+                dnam{"qt Imp."}
+                few{"{0}qt Imp."}
+                many{"{0}qt Imp."}
+                one{"{0}qt Imp."}
+                other{"{0}qt Imp."}
+                two{"{0}qt Imp."}
+            }
             tablespoon{
                 dnam{"l.-v."}
                 few{"{0}l.-v."}
@@ -2922,6 +3159,7 @@
             }
         }
         coordinate{
+            dnam{"durcʼhadur"}
             east{"{0} R"}
             north{"{0} N"}
             south{"{0} S"}
@@ -3249,6 +3487,14 @@
             }
         }
         graphics{
+            dot{
+                dnam{"pik"}
+                few{"{0} pik"}
+                many{"{0} pik"}
+                one{"{0} pik"}
+                other{"{0} pik"}
+                two{"{0} pik"}
+            }
             dot-per-centimeter{
                 dnam{"pdcm"}
                 few{"{0} pdcm"}
@@ -3462,6 +3708,14 @@
                 other{"{0} CD"}
                 two{"{0} CD"}
             }
+            grain{
+                dnam{"gr"}
+                few{"{0} gr"}
+                many{"{0} gr"}
+                one{"{0} gr"}
+                other{"{0} gr"}
+                two{"{0} gr"}
+            }
             gram{
                 dnam{"g"}
                 few{"{0} g"}
@@ -3782,6 +4036,38 @@
                 other{"{0} dl"}
                 two{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"l.d.-b."}
+                few{"{0} l.d.-b."}
+                many{"{0} l.d.-b."}
+                one{"{0} l.d.-b."}
+                other{"{0} l.d.-b."}
+                two{"{0} l.d.-b."}
+            }
+            dessert-spoon-imperial{
+                dnam{"l.d.-b. imp."}
+                few{"{0} l.d.-b. imp."}
+                many{"{0} l.d.-b. imp."}
+                one{"{0} l.d.-b. imp."}
+                other{"{0} l.d.-b. imp."}
+                two{"{0} l.d.-b. imp."}
+            }
+            dram{
+                dnam{"fl dr"}
+                few{"{0} fl dr"}
+                many{"{0} fl dr"}
+                one{"{0} fl dr"}
+                other{"{0} fl dr"}
+                two{"{0} fl dr"}
+            }
+            drop{
+                dnam{"gt"}
+                few{"{0} gt"}
+                many{"{0} gt"}
+                one{"{0} gt"}
+                other{"{0} gt"}
+                two{"{0} gt"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 few{"{0} fl oz"}
@@ -3824,6 +4110,14 @@
                 other{"{0} hl"}
                 two{"{0} hl"}
             }
+            jigger{
+                dnam{"shot"}
+                few{"{0} shot"}
+                many{"{0} shot"}
+                one{"{0} shot"}
+                other{"{0} shot"}
+                two{"{0} shot"}
+            }
             liter{
                 dnam{"l"}
                 few{"{0} l"}
@@ -3849,6 +4143,14 @@
                 other{"{0} ml"}
                 two{"{0} ml"}
             }
+            pinch{
+                dnam{"piñs"}
+                few{"{0} piñs"}
+                many{"{0} piñs"}
+                one{"{0} piñs"}
+                other{"{0} piñs"}
+                two{"{0} piñs"}
+            }
             pint{
                 dnam{"pt"}
                 few{"{0} pt"}
@@ -3873,6 +4175,14 @@
                 other{"{0} qt"}
                 two{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"qt Imp."}
+                few{"{0} qt Imp."}
+                many{"{0} qt Imp."}
+                one{"{0} qt Imp."}
+                other{"{0} qt Imp."}
+                two{"{0} qt Imp."}
+            }
             tablespoon{
                 dnam{"l.-v."}
                 few{"{0} l.-v."}
diff --git a/icu4c/source/data/unit/brx.txt b/icu4c/source/data/unit/brx.txt
index 09f257a..b39932e 100644
--- a/icu4c/source/data/unit/brx.txt
+++ b/icu4c/source/data/unit/brx.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 brx{
-    Version{"37"}
     units{
         duration{
             day{
diff --git a/icu4c/source/data/unit/bs.txt b/icu4c/source/data/unit/bs.txt
index 53c13ce..7b72edc 100644
--- a/icu4c/source/data/unit/bs.txt
+++ b/icu4c/source/data/unit/bs.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -253,7 +253,7 @@
             megabyte{
                 dnam{"megabajti"}
                 few{"{0} megabajta"}
-                one{"{0} megabajta"}
+                one{"{0} megabajt"}
                 other{"{0} megabajta"}
             }
             petabyte{
@@ -473,6 +473,12 @@
             }
         }
         graphics{
+            dot{
+                dnam{"tačka"}
+                few{"{0} tačke"}
+                one{"{0} tačka"}
+                other{"{0} tačaka"}
+            }
             megapixel{
                 dnam{"megapikseli"}
             }
@@ -500,6 +506,18 @@
                 one{"{0} decimetar"}
                 other{"{0} decimetara"}
             }
+            earth-radius{
+                dnam{"radijus zemlje"}
+                few{"{0} radijusa zemlje"}
+                one{"{0} radijus zemlje"}
+                other{"{0} radijus zemlje"}
+            }
+            fathom{
+                dnam{"hvat"}
+                few{"{0} hvata"}
+                one{"{0} hvat"}
+                other{"{0} hvata"}
+            }
             foot{
                 dnam{"stope"}
                 few{"{0} stope"}
@@ -507,6 +525,12 @@
                 other{"{0} stopa"}
                 per{"{0} po stopi"}
             }
+            furlong{
+                dnam{"osmina milje"}
+                few{"{0} osmine milje"}
+                one{"{0} osmina milje"}
+                other{"{0} osmina milje"}
+            }
             inch{
                 dnam{"inči"}
                 few{"{0} inča"}
@@ -583,10 +607,10 @@
                 other{"{0} pikometara"}
             }
             point{
-                dnam{"tačke"}
-                few{"{0} tč"}
-                one{"{0} tačka"}
-                other{"{0} tačaka"}
+                dnam{"DTP tačke"}
+                few{"{0} DTP tačke"}
+                one{"{0} DTP tačka"}
+                other{"{0} DTP tačaka"}
             }
             solar-radius{
                 dnam{"Sunčevi radijusi"}
@@ -602,6 +626,18 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                few{"{0} kandele"}
+                one{"{0} kandela"}
+                other{"{0} kandela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                few{"{0} lumena"}
+                one{"{0} lumen"}
+                other{"{0} lumena"}
+            }
             lux{
                 dnam{"luksi"}
                 few{"{0} luksa"}
@@ -692,6 +728,12 @@
                 one{"{0} Sunčeva masa"}
                 other{"{0} Sunčevih masa"}
             }
+            stone{
+                dnam{"stone"}
+                few{"{0} stone"}
+                one{"{0} stone"}
+                other{"{0} stone"}
+            }
             ton{
                 dnam{"tone"}
                 few{"{0} tone"}
@@ -759,7 +801,7 @@
                 dnam{"inči živinog stuba"}
                 few{"{0} inča živinog stuba"}
                 one{"{0} inč živinog stuba"}
-                other{"{0} inča žive"}
+                other{"{0} inča živinog stuba"}
             }
             kilopascal{
                 dnam{"kilopaskali"}
@@ -877,6 +919,12 @@
                 one{"{0} barel"}
                 other{"{0} barela"}
             }
+            bushel{
+                dnam{"bušeli"}
+                few{"{0} bušela"}
+                one{"{0} bušel"}
+                other{"{0} bušela"}
+            }
             centiliter{
                 dnam{"centilitri"}
                 few{"{0} centilitra"}
@@ -945,6 +993,30 @@
                 one{"{0} decilitar"}
                 other{"{0} decilitara"}
             }
+            dessert-spoon{
+                dnam{"kašika za desert"}
+                few{"{0} kašike za desert"}
+                one{"{0} kašika za desert"}
+                other{"{0} kašika za desert"}
+            }
+            dessert-spoon-imperial{
+                dnam{"imperijalna kašika za desert"}
+                few{"{0} imperijalne kašike za desert"}
+                one{"{0} imperijalna kašika za desert"}
+                other{"{0} imperijalnih kašika za desert"}
+            }
+            dram{
+                dnam{"tečni dram"}
+                few{"{0} tečna drama"}
+                one{"{0} tečni dram"}
+                other{"{0} tečnih drama"}
+            }
+            drop{
+                dnam{"kap"}
+                few{"{0} kapi"}
+                one{"{0} kap"}
+                other{"{0} kapi"}
+            }
             fluid-ounce{
                 dnam{"tečne unce"}
                 few{"{0} tečne unce"}
@@ -977,6 +1049,12 @@
                 one{"{0} hektolitar"}
                 other{"{0} hektolitara"}
             }
+            jigger{
+                dnam{"mala čašica"}
+                few{"{0} male čašice"}
+                one{"{0} mala čašica"}
+                other{"{0} malih čašica"}
+            }
             liter{
                 dnam{"litri"}
                 few{"{0} litra"}
@@ -996,6 +1074,12 @@
                 one{"{0} mililitar"}
                 other{"{0} mililitara"}
             }
+            pinch{
+                dnam{"prstohvat"}
+                few{"{0} prstohvata"}
+                one{"{0} prstohvat"}
+                other{"{0} prstohvata"}
+            }
             pint{
                 dnam{"pinte"}
                 few{"{0} pinte"}
@@ -1014,6 +1098,12 @@
                 one{"{0} četvrtina"}
                 other{"{0} četvrtina"}
             }
+            quart-imperial{
+                dnam{"imperijalni kvarc"}
+                few{"{0} imperijalna kvarca"}
+                one{"{0} imperijalni kvarc"}
+                other{"{0} imperijalnih kvarca"}
+            }
             tablespoon{
                 dnam{"kašike"}
                 few{"{0} kašike"}
@@ -1029,6 +1119,62 @@
         }
     }
     unitsNarrow{
+        acceleration{
+            g-force{
+                few{"{0} G"}
+                one{"{0} G"}
+                other{"{0} G"}
+            }
+        }
+        angle{
+            arc-minute{
+                few{"{0}′"}
+                one{"{0}′"}
+                other{"{0}′"}
+            }
+            arc-second{
+                few{"{0}″"}
+                one{"{0}″"}
+                other{"{0}″"}
+            }
+            degree{
+                few{"{0}°"}
+                one{"{0}°"}
+                other{"{0}°"}
+            }
+        }
+        area{
+            acre{
+                few{"{0} kj"}
+                one{"{0} kj"}
+                other{"{0} kj"}
+            }
+            hectare{
+                few{"{0} ha"}
+                one{"{0} ha"}
+                other{"{0} ha"}
+            }
+            square-foot{
+                few{"{0} ft²"}
+                one{"{0} ft²"}
+                other{"{0} ft²"}
+            }
+            square-kilometer{
+                few{"{0} km²"}
+                one{"{0} km²"}
+                other{"{0} km²"}
+            }
+            square-meter{
+                few{"{0} m²"}
+                one{"{0} m²"}
+                other{"{0} m²"}
+            }
+            square-mile{
+                few{"{0} mi²"}
+                one{"{0} mi²"}
+                other{"{0} mi²"}
+            }
+        }
         compound{
             per{"{0}/{1}"}
         }
@@ -1124,12 +1270,27 @@
                 one{"{0} m"}
                 other{"{0} m"}
             }
+            mile{
+                few{"{0} mi"}
+                one{"{0} mi"}
+                other{"{0} mi"}
+            }
             millimeter{
                 dnam{"mm"}
                 few{"{0} mm"}
                 one{"{0} mm"}
                 other{"{0} mm"}
             }
+            picometer{
+                few{"{0} pm"}
+                one{"{0} pm"}
+                other{"{0} pm"}
+            }
+            yard{
+                few{"{0} yd"}
+                one{"{0} yd"}
+                other{"{0} yd"}
+            }
         }
         mass{
             gram{
@@ -1144,6 +1305,45 @@
                 one{"{0} kg"}
                 other{"{0} kg"}
             }
+            ounce{
+                few{"{0} oz"}
+                one{"{0} oz"}
+                other{"{0} oz"}
+            }
+            pound{
+                few{"{0} lb"}
+                one{"{0} lb"}
+                other{"{0} lb"}
+            }
+        }
+        power{
+            kilowatt{
+                few{"{0} kW"}
+                one{"{0} kW"}
+                other{"{0} kW"}
+            }
+            watt{
+                few{"{0} W"}
+                one{"{0} W"}
+                other{"{0} W"}
+            }
+        }
+        pressure{
+            hectopascal{
+                few{"{0} hPa"}
+                one{"{0} hPa"}
+                other{"{0} hPa"}
+            }
+            inch-ofhg{
+                few{"{0} inHg"}
+                one{"{0} inHg"}
+                other{"{0} inHg"}
+            }
+            millibar{
+                few{"{0} mbar"}
+                one{"{0} mb"}
+                other{"{0} mb"}
+            }
         }
         speed{
             kilometer-per-hour{
@@ -1152,6 +1352,16 @@
                 one{"{0} km/h"}
                 other{"{0} km/h"}
             }
+            meter-per-second{
+                few{"{0} m/s"}
+                one{"{0} m/s"}
+                other{"{0} m/s"}
+            }
+            mile-per-hour{
+                few{"{0} mi/h"}
+                one{"{0} mi/h"}
+                other{"{0} mi/h"}
+            }
         }
         temperature{
             celsius{
@@ -1160,8 +1370,23 @@
                 one{"{0}°"}
                 other{"{0}°"}
             }
+            fahrenheit{
+                few{"{0}°F"}
+                one{"{0}°F"}
+                other{"{0}°F"}
+            }
         }
         volume{
+            cubic-kilometer{
+                few{"{0} km³"}
+                one{"{0} km³"}
+                other{"{0} km³"}
+            }
+            cubic-mile{
+                few{"{0} mi³"}
+                one{"{0} mi³"}
+                other{"{0} mi³"}
+            }
             liter{
                 dnam{"litar"}
                 few{"{0}l"}
@@ -1706,6 +1931,12 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            fathom{
+                dnam{"hvat"}
+                few{"{0} hvata"}
+                one{"{0} hvat"}
+                other{"{0} hvata"}
+            }
             foot{
                 dnam{"stope"}
                 few{"{0} ft"}
@@ -1713,6 +1944,12 @@
                 other{"{0} ft"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"osmina milje"}
+                few{"{0} osmine milje"}
+                one{"{0} osmina milje"}
+                other{"{0} osmina milje"}
+            }
             inch{
                 dnam{"inči"}
                 few{"{0} in"}
@@ -1789,10 +2026,10 @@
                 other{"{0} pm"}
             }
             point{
-                dnam{"tč"}
-                few{"{0} tč"}
-                one{"{0} tč"}
-                other{"{0} tč"}
+                dnam{"DTP tč"}
+                few{"{0} DTP tč"}
+                one{"{0} DTP tč"}
+                other{"{0} DTP tč"}
             }
             solar-radius{
                 dnam{"R☉"}
@@ -1963,7 +2200,7 @@
                 other{"{0} hPa"}
             }
             inch-ofhg{
-                dnam{"in Hg"}
+                dnam{"inHg"}
                 few{"{0} inHg"}
                 one{"{0} inHg"}
                 other{"{0} inHg"}
@@ -1987,10 +2224,10 @@
                 other{"{0} mbar"}
             }
             millimeter-ofhg{
-                dnam{"mm Hg"}
-                few{"{0} mm Hg"}
-                one{"{0} mm Hg"}
-                other{"{0} mm Hg"}
+                dnam{"mmHg"}
+                few{"{0} mmHg"}
+                one{"{0} mmHg"}
+                other{"{0} mmHg"}
             }
             pascal{
                 dnam{"Pa"}
@@ -2084,6 +2321,12 @@
                 one{"{0} bbl"}
                 other{"{0} bbl"}
             }
+            bushel{
+                dnam{"bu"}
+                few{"{0} bu"}
+                one{"{0} bu"}
+                other{"{0} bu"}
+            }
             centiliter{
                 dnam{"cL"}
                 few{"{0} cL"}
@@ -2152,6 +2395,30 @@
                 one{"{0} dL"}
                 other{"{0} dL"}
             }
+            dessert-spoon{
+                dnam{"kš. des."}
+                few{"{0} kš. des."}
+                one{"{0} kš. des."}
+                other{"{0} kš. des."}
+            }
+            dessert-spoon-imperial{
+                dnam{"imp. kš. des."}
+                few{"{0} imp. kš. des."}
+                one{"{0} imp. kš. des."}
+                other{"{0} imp. kš. des."}
+            }
+            dram{
+                dnam{"teč. dram"}
+                few{"{0} teč. drama"}
+                one{"{0} teč. dram"}
+                other{"{0} teč. drama"}
+            }
+            drop{
+                dnam{"kap"}
+                few{"{0} kapi"}
+                one{"{0} kap"}
+                other{"{0} kapi"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 few{"{0} fl oz"}
@@ -2184,6 +2451,12 @@
                 one{"{0} hL"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"mala čašica"}
+                few{"{0} male čašice"}
+                one{"{0} mala čašica"}
+                other{"{0} malih čašica"}
+            }
             liter{
                 dnam{"litri"}
                 few{"{0} l"}
@@ -2203,6 +2476,12 @@
                 one{"{0} mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"prstohvat"}
+                few{"{0} prstohvata"}
+                one{"{0} prstohvat"}
+                other{"{0} prstohvata"}
+            }
             pint{
                 dnam{"pinte"}
                 few{"{0} pt"}
@@ -2221,6 +2500,12 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"imp. kvarc"}
+                few{"{0} imp. kvarca"}
+                one{"{0} imp. kvarc"}
+                other{"{0} imp. kvarca"}
+            }
             tablespoon{
                 dnam{"tbsp"}
                 few{"{0} tbsp"}
diff --git a/icu4c/source/data/unit/bs_BA.txt b/icu4c/source/data/unit/bs_BA.txt
index e5e3a46..70619a1 100644
--- a/icu4c/source/data/unit/bs_BA.txt
+++ b/icu4c/source/data/unit/bs_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_BA{
     "%%ALIAS"{"bs_Latn_BA"}
 }
diff --git a/icu4c/source/data/unit/bs_Cyrl.txt b/icu4c/source/data/unit/bs_Cyrl.txt
index 51f0a63..6728961 100644
--- a/icu4c/source/data/unit/bs_Cyrl.txt
+++ b/icu4c/source/data/unit/bs_Cyrl.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_Cyrl{
     %%Parent{"root"}
-    Version{"37"}
     units{
         area{
             acre{
diff --git a/icu4c/source/data/unit/bs_Latn.txt b/icu4c/source/data/unit/bs_Latn.txt
index d1a6b5e..f256112 100644
--- a/icu4c/source/data/unit/bs_Latn.txt
+++ b/icu4c/source/data/unit/bs_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/bs_Latn_BA.txt b/icu4c/source/data/unit/bs_Latn_BA.txt
index 3ef1cc4..04342dc 100644
--- a/icu4c/source/data/unit/bs_Latn_BA.txt
+++ b/icu4c/source/data/unit/bs_Latn_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/ca.txt b/icu4c/source/data/unit/ca.txt
index 97a91f2..bf56c90 100644
--- a/icu4c/source/data/unit/ca.txt
+++ b/icu4c/source/data/unit/ca.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ca{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -387,22 +387,22 @@
         }
         frequency{
             gigahertz{
-                dnam{"gigahertzs"}
+                dnam{"gigahertz"}
                 one{"{0} gigahertz"}
                 other{"{0} gigahertzs"}
             }
             hertz{
-                dnam{"hertzs"}
+                dnam{"hertz"}
                 one{"{0} hertz"}
                 other{"{0} hertzs"}
             }
             kilohertz{
-                dnam{"quilohertzs"}
+                dnam{"quilohertz"}
                 one{"{0} quilohertz"}
                 other{"{0} quilohertzs"}
             }
             megahertz{
-                dnam{"megahertzs"}
+                dnam{"megahertz"}
                 one{"{0} megahertz"}
                 other{"{0} megahertzs"}
             }
@@ -459,12 +459,27 @@
                 one{"{0} decímetre"}
                 other{"{0} decímetres"}
             }
+            earth-radius{
+                dnam{"radi terrestre"}
+                one{"{0} radi terrestre"}
+                other{"{0} radis terrestres"}
+            }
+            fathom{
+                dnam{"braces"}
+                one{"{0} braça"}
+                other{"{0} braces"}
+            }
             foot{
                 dnam{"peus"}
                 one{"{0} peu"}
                 other{"{0} peus"}
                 per{"{0} per peu"}
             }
+            furlong{
+                dnam{"estadis"}
+                one{"{0} estadi"}
+                other{"{0} estadis"}
+            }
             inch{
                 dnam{"polzades"}
                 one{"{0} polzada"}
@@ -530,8 +545,8 @@
             }
             point{
                 dnam{"punts"}
-                one{"{0} punt"}
-                other{"{0} punts"}
+                one{"{0} punt tipogràfic"}
+                other{"{0} punts tipogràfics"}
             }
             solar-radius{
                 dnam{"radis solars"}
@@ -545,6 +560,16 @@
             }
         }
         light{
+            candela{
+                dnam{"candela"}
+                one{"{0} candela"}
+                other{"{0} candeles"}
+            }
+            lumen{
+                dnam{"lumen"}
+                one{"{0} lumen"}
+                other{"{0} lumens"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
@@ -572,6 +597,10 @@
                 one{"{0} massa de la Terra"}
                 other{"{0} masses de la Terra"}
             }
+            grain{
+                one{"{0} gra"}
+                other{"{0} grans"}
+            }
             gram{
                 dnam{"grams"}
                 one{"{0} gram"}
@@ -621,6 +650,11 @@
                 one{"{0} massa solar"}
                 other{"{0} masses solars"}
             }
+            stone{
+                dnam{"pedres"}
+                one{"{0} pedra"}
+                other{"{0} pedres"}
+            }
             ton{
                 dnam{"tones"}
                 one{"{0} tona"}
@@ -778,6 +812,11 @@
                 one{"{0} barril"}
                 other{"{0} barrils"}
             }
+            bushel{
+                dnam{"bushels"}
+                one{"{0} bushel"}
+                other{"{0} bushels"}
+            }
             centiliter{
                 dnam{"centilitres"}
                 one{"{0} centilitre"}
@@ -835,8 +874,26 @@
                 one{"{0} decilitre"}
                 other{"{0} decilitres"}
             }
+            dessert-spoon{
+                one{"{0} cullereta de postres"}
+                other{"{0} culleretes de postres"}
+            }
+            dessert-spoon-imperial{
+                dnam{"cullereta de postres imperial"}
+                one{"{0} cullereta de postres imperial"}
+                other{"{0} culleretes de postres imperials"}
+            }
+            dram{
+                dnam{"dracma"}
+                one{"{0} dracma"}
+                other{"{0} dracmes"}
+            }
+            drop{
+                one{"{0} gota"}
+                other{"{0} gotes"}
+            }
             fluid-ounce{
-                dnam{"unça líquida"}
+                dnam{"unces líquides"}
                 one{"{0} unça líquida"}
                 other{"{0} unces líquides"}
             }
@@ -862,6 +919,11 @@
                 one{"{0} hectolitre"}
                 other{"{0} hectolitres"}
             }
+            jigger{
+                dnam{"mesurador de cocteleria"}
+                one{"{0} mesurador de cocteleria"}
+                other{"{0} mesuradors de cocteleria"}
+            }
             liter{
                 dnam{"litres"}
                 one{"{0} litre"}
@@ -878,6 +940,10 @@
                 one{"{0} mil·lilitre"}
                 other{"{0} mil·lilitres"}
             }
+            pinch{
+                one{"{0} pessic"}
+                other{"{0} pessics"}
+            }
             pint{
                 dnam{"pintes"}
                 one{"{0} pinta"}
@@ -893,6 +959,10 @@
                 one{"{0} quart"}
                 other{"{0} quarts"}
             }
+            quart-imperial{
+                one{"{0} quart imperial"}
+                other{"{0} quarts imperials"}
+            }
             tablespoon{
                 dnam{"cullerades"}
                 one{"{0} cullerada"}
@@ -1200,12 +1270,12 @@
                 other{"{0} arcsec"}
             }
             degree{
-                dnam{"º"}
+                dnam{"graus"}
                 one{"{0}°"}
                 other{"{0}°"}
             }
             radian{
-                dnam{"rad"}
+                dnam{"radiants"}
                 one{"{0} rad"}
                 other{"{0} rad"}
             }
@@ -1278,7 +1348,7 @@
         }
         concentr{
             karat{
-                dnam{"ct"}
+                dnam{"quirats"}
                 one{"{0} ct"}
                 other{"{0} ct"}
             }
@@ -1288,7 +1358,7 @@
                 other{"{0} mg/dl"}
             }
             millimole-per-liter{
-                dnam{"mM/l"}
+                dnam{"mil·limols/litre"}
                 one{"{0} mM/l"}
                 other{"{0} mM/l"}
             }
@@ -1303,7 +1373,7 @@
                 other{"{0} ‰"}
             }
             permillion{
-                dnam{"ppm"}
+                dnam{"parts/milió"}
                 one{"{0} ppm"}
                 other{"{0} ppm"}
             }
@@ -1531,8 +1601,11 @@
             }
         }
         force{
+            newton{
+                dnam{"newton"}
+            }
             pound-force{
-                dnam{"lbf"}
+                dnam{"lliures-força"}
                 one{"{0} lbf"}
                 other{"{0} lbf"}
             }
@@ -1560,6 +1633,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"punt"}
+                one{"{0} punt"}
+                other{"{0} punts"}
+            }
             dot-per-centimeter{
                 dnam{"ppcm"}
                 one{"{0} ppcm"}
@@ -1587,7 +1665,7 @@
             }
             pixel-per-centimeter{
                 dnam{"píxels per cm"}
-                one{"{0} píxels per cm"}
+                one{"{0} píxel per cm"}
                 other{"{0} píxels per cm"}
             }
             pixel-per-inch{
@@ -1694,11 +1772,17 @@
             }
         }
         light{
+            lumen{
+                dnam{"lm"}
+            }
             lux{
-                dnam{"lx"}
+                dnam{"lux"}
                 one{"{0} lx"}
                 other{"{0} lx"}
             }
+            solar-luminosity{
+                dnam{"lluminositats solars"}
+            }
         }
         mass{
             carat{
@@ -1715,6 +1799,11 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"gra"}
+                one{"{0} gra"}
+                other{"{0} grans"}
+            }
             gram{
                 dnam{"grams"}
                 one{"{0} g"}
@@ -1759,6 +1848,11 @@
                 other{"{0} lb"}
                 per{"{0}/lb"}
             }
+            stone{
+                dnam{"st"}
+                one{"{0} st"}
+                other{"{0} st"}
+            }
             ton{
                 dnam{"t"}
                 one{"{0} t"}
@@ -1908,6 +2002,11 @@
                 one{"{0} bbl"}
                 other{"{0} bbl"}
             }
+            bushel{
+                dnam{"bushels"}
+                one{"{0} bu"}
+                other{"{0} bu"}
+            }
             centiliter{
                 dnam{"cl"}
                 one{"{0} cl"}
@@ -1965,6 +2064,26 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"cullereta de postres"}
+                one{"{0} cullereta de postres"}
+                other{"{0} culleretes de postres"}
+            }
+            dessert-spoon-imperial{
+                dnam{"cull. postres imp."}
+                one{"{0} cull. postres imp."}
+                other{"{0} cull. postres imp."}
+            }
+            dram{
+                dnam{"dracma fluid"}
+                one{"{0} dracma fluid"}
+                other{"{0} dracmes fluids"}
+            }
+            drop{
+                dnam{"gota"}
+                one{"{0} gota"}
+                other{"{0} gotes"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -1992,6 +2111,11 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"mesurador"}
+                one{"{0} mesurador"}
+                other{"{0} mesuradors"}
+            }
             liter{
                 dnam{"l"}
                 one{"{0} l"}
@@ -2008,6 +2132,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"pessic"}
+                one{"{0} pessic"}
+                other{"{0} pessics"}
+            }
             pint{
                 dnam{"pt"}
                 one{"{0} pt"}
@@ -2023,6 +2152,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"quart imperial"}
+                one{"{0} quart imperial"}
+                other{"{0} quarts imperials"}
+            }
             tablespoon{
                 dnam{"cull."}
                 one{"{0} cull."}
diff --git a/icu4c/source/data/unit/ccp.txt b/icu4c/source/data/unit/ccp.txt
index ae59291..617fea0 100644
--- a/icu4c/source/data/unit/ccp.txt
+++ b/icu4c/source/data/unit/ccp.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ccp{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/ce.txt b/icu4c/source/data/unit/ce.txt
index 703a623..ad7f2dd 100644
--- a/icu4c/source/data/unit/ce.txt
+++ b/icu4c/source/data/unit/ce.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ce{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/ceb.txt b/icu4c/source/data/unit/ceb.txt
index 97f03f2..fe5070c 100644
--- a/icu4c/source/data/unit/ceb.txt
+++ b/icu4c/source/data/unit/ceb.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ceb{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -14,9 +14,9 @@
                 other{"{0} g-force"}
             }
             meter-per-square-second{
-                dnam{"mga metro kada second squared"}
-                one{"{0} ka metro kada second squared"}
-                other{"{0} ka mga metro kada second squared"}
+                dnam{"mga metro kada segundo kwadrado"}
+                one{"{0} ka metro kada segundo kwadrado"}
+                other{"{0} ka mga metro kada segundo kwadrado"}
             }
         }
         angle{
@@ -63,10 +63,10 @@
                 other{"{0} ka mga ektarya"}
             }
             square-centimeter{
-                dnam{"mga square centimeter"}
-                one{"{0} ka square centimeter"}
-                other{"{0} ka mga square centimeter"}
-                per{"{0} kada square centimeter"}
+                dnam{"mga centimetro kwadrado"}
+                one{"{0} ka sentimetro kwadrado"}
+                other{"{0} ka mga sentimetro kwadrado"}
+                per{"{0} kada sentimetro kwadrado"}
             }
             square-foot{
                 dnam{"mga square foot"}
@@ -81,21 +81,21 @@
             }
             square-kilometer{
                 dnam{"mga square kilometer"}
-                one{"{0} ka square kilometer"}
-                other{"{0} ka mga square kilometer"}
-                per{"{0} kada square kilometer"}
+                one{"{0} ka kilometro kwadrado"}
+                other{"{0} ka mga kilometro kwadrado"}
+                per{"{0} kada kilometro kwadrado"}
             }
             square-meter{
-                dnam{"mga square meter"}
-                one{"{0} ka square meter"}
-                other{"{0} ka mga square meter"}
-                per{"{0} kada square meter"}
+                dnam{"mga metro kwadrado"}
+                one{"{0} ka metro kwadrado"}
+                other{"{0} ka mga metro kwadrado"}
+                per{"{0} kada metro kwadrado"}
             }
             square-mile{
-                dnam{"mga square mile"}
-                one{"{0} ka square mile"}
-                other{"{0} ka mga square mile"}
-                per{"{0} kada square mile"}
+                dnam{"mga milya kwadrado"}
+                one{"{0} ka milya kwadrado"}
+                other{"{0} ka mga milya kwadrado"}
+                per{"{0} kada milya kwadrado"}
             }
             square-yard{
                 dnam{"mga square yard"}
@@ -407,6 +407,10 @@
             }
         }
         graphics{
+            dot{
+                one{"{0} dot"}
+                other{"{0} dot"}
+            }
             dot-per-centimeter{
                 dnam{"mga dot kada sentimetro"}
                 one{"{0} ka dot kada sentimetro"}
@@ -460,6 +464,11 @@
                 one{"{0} ka decimeter"}
                 other{"{0} ka mga decimeter"}
             }
+            earth-radius{
+                dnam{"radyus sa yuta"}
+                one{"{0} ka radyus sa yuta"}
+                other{"{0} ka radyus sa yuta"}
+            }
             foot{
                 dnam{"mga piye"}
                 one{"{0} ka piye"}
@@ -546,6 +555,16 @@
             }
         }
         light{
+            candela{
+                dnam{"candela"}
+                one{"{0} ka candela"}
+                other{"{0} ka candela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                one{"{0} ka lumen"}
+                other{"{0} ka lumen"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
@@ -573,6 +592,10 @@
                 one{"{0} ka mass sa Earth"}
                 other{"{0} ka mga mass sa Earth"}
             }
+            grain{
+                one{"{0} ka grain"}
+                other{"{0} ka grain"}
+            }
             gram{
                 dnam{"mga gramo"}
                 one{"{0} ka gramo"}
@@ -677,8 +700,8 @@
                 other{"{0} ka mga hectopascal"}
             }
             inch-ofhg{
-                dnam{"mga pulgada sa mercury"}
-                one{"{0} ka pulgada sa mercury"}
+                dnam{"mga inch sa mercury"}
+                one{"{0} ka inch sa mercury"}
                 other{"{0} ka mga pulgada sa mercury"}
             }
             kilopascal{
@@ -754,11 +777,11 @@
         torque{
             newton-meter{
                 dnam{"mga newton-meter"}
-                one{"{0} ka newton-meter"}
+                one{"{0} N⋅m"}
                 other{"{0} ka mga newton-meter"}
             }
             pound-force-foot{
-                dnam{"mga pound-force-foot"}
+                dnam{"pound-feet"}
                 one{"{0} ka pound-force-foot"}
                 other{"{0} ka mga pound-force-foot"}
             }
@@ -831,6 +854,25 @@
                 one{"{0} ka deciliter"}
                 other{"{0} ka mga deciliter"}
             }
+            dessert-spoon{
+                dnam{"kutsarang panghinam-is"}
+                one{"{0} ka kutsarang panghinam-is"}
+                other{"{0} ka kutsarang panghinam-is"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Imp. nga kutsarang panghinam-is"}
+                one{"{0} ka Imp. nga kutsarang panghinam-is"}
+                other{"{0} ka Imp. nga kutsarang panghinam-is"}
+            }
+            dram{
+                dnam{"dram"}
+                one{"{0} ka dram"}
+                other{"{0} ka dram"}
+            }
+            drop{
+                one{"{0} ka drop"}
+                other{"{0} ka drop"}
+            }
             fluid-ounce{
                 dnam{"mga fluid ounce"}
                 one{"{0} ka fluid ounce"}
@@ -858,6 +900,10 @@
                 one{"{0} ka hectoliter"}
                 other{"{0} ka mga hectoliter"}
             }
+            jigger{
+                one{"{0} ka jigger"}
+                other{"{0} ka jigger"}
+            }
             liter{
                 dnam{"mga litro"}
                 one{"{0} ka litro"}
@@ -874,6 +920,10 @@
                 one{"{0} ka milliliter"}
                 other{"{0} ka mga milliliter"}
             }
+            pinch{
+                one{"{0} ka pinch"}
+                other{"{0} ka pinch"}
+            }
             pint{
                 dnam{"mga pint"}
                 one{"{0} ka pint"}
@@ -889,6 +939,11 @@
                 one{"{0} ka quart"}
                 other{"{0} ka mga quart"}
             }
+            quart-imperial{
+                dnam{"Imp. quart"}
+                one{"{0} ka Imp. quart"}
+                other{"{0} ka Imp. quart"}
+            }
             tablespoon{
                 dnam{"mga kutsara"}
                 one{"{0} ka kutsara"}
@@ -1058,10 +1113,10 @@
                 dnam{"mga inch²"}
             }
             square-meter{
-                dnam{"mga meter²"}
+                dnam{"mga metro²"}
             }
             square-mile{
-                dnam{"mga sq mile"}
+                dnam{"mga milya kwadrado"}
                 one{"{0} sq mi"}
                 other{"{0} sq mi"}
             }
@@ -1405,6 +1460,14 @@
             cup{
                 dnam{"mga tasa"}
             }
+            dram{
+                one{"{0} ka dram fl"}
+                other{"{0} ka dram fl"}
+            }
+            drop{
+                one{"{0} ka drop"}
+                other{"{0} ka drop"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -1421,12 +1484,20 @@
                 other{"{0} gal"}
                 per{"{0}/gal US"}
             }
+            jigger{
+                one{"{0} ka jigger"}
+                other{"{0} ka jigger"}
+            }
             liter{
                 dnam{"mga litro"}
                 one{"{0} L"}
                 other{"{0} L"}
                 per{"{0}/L"}
             }
+            pinch{
+                one{"{0} ka pinch"}
+                other{"{0} ka pinch"}
+            }
             pint{
                 dnam{"mga pint"}
             }
diff --git a/icu4c/source/data/unit/cgg.txt b/icu4c/source/data/unit/cgg.txt
index 25daf6b..61aa5e5 100644
--- a/icu4c/source/data/unit/cgg.txt
+++ b/icu4c/source/data/unit/cgg.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cgg{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/chr.txt b/icu4c/source/data/unit/chr.txt
index 2e2af5a..0b88761 100644
--- a/icu4c/source/data/unit/chr.txt
+++ b/icu4c/source/data/unit/chr.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 chr{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/ckb.txt b/icu4c/source/data/unit/ckb.txt
index 8400cf4..ddfecf2 100644
--- a/icu4c/source/data/unit/ckb.txt
+++ b/icu4c/source/data/unit/ckb.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ckb{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/cs.txt b/icu4c/source/data/unit/cs.txt
index 34de1af..9ca4725 100644
--- a/icu4c/source/data/unit/cs.txt
+++ b/icu4c/source/data/unit/cs.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cs{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -17,7 +17,7 @@
                 other{"{0} G"}
             }
             meter-per-square-second{
-                dnam{"metr za sekundu na druhou"}
+                dnam{"metry za sekundu na druhou"}
                 few{"{0} metry za sekundu na druhou"}
                 many{"{0} metru za sekundu na druhou"}
                 one{"{0} metr za sekundu na druhou"}
@@ -223,11 +223,11 @@
                 other{"{0} mil na galon"}
             }
             mile-per-gallon-imperial{
-                dnam{"míle na imp. galon"}
-                few{"{0} míle na imp. galon"}
-                many{"{0} míle na imp. galon"}
-                one{"{0} míle na imp. galon"}
-                other{"{0} mil na imp. galon"}
+                dnam{"míle na britský galon"}
+                few{"{0} míle na britský galon"}
+                many{"{0} míle na britský galon"}
+                one{"{0} míle na britský galon"}
+                other{"{0} mil na britský galon"}
             }
         }
         coordinate{
@@ -551,6 +551,13 @@
             }
         }
         graphics{
+            dot{
+                dnam{"obrazový bod"}
+                few{"{0} obrazové body"}
+                many{"{0} obrazového bodu"}
+                one{"{0} obrazový bod"}
+                other{"{0} obrazových bodů"}
+            }
             dot-per-centimeter{
                 dnam{"body na centimetr"}
                 few{"{0} body na centimetr"}
@@ -624,12 +631,19 @@
                 one{"{0} decimetr"}
                 other{"{0} decimetrů"}
             }
+            earth-radius{
+                dnam{"poloměr Země"}
+                few{"{0} poloměry Země"}
+                many{"{0} poloměru Země"}
+                one{"{0} poloměr Země"}
+                other{"{0} poloměrů Země"}
+            }
             fathom{
-                dnam{"fathomy"}
-                few{"{0} fathomy"}
-                many{"{0} fathomu"}
-                one{"{0} fathom"}
-                other{"{0} fathomů"}
+                dnam{"sáhy"}
+                few{"{0} sáhy"}
+                many{"{0} sáhu"}
+                one{"{0} sáh"}
+                other{"{0} sáhů"}
             }
             foot{
                 dnam{"stopy"}
@@ -756,6 +770,20 @@
             }
         }
         light{
+            candela{
+                dnam{"kandely"}
+                few{"{0} kandely"}
+                many{"{0} kandely"}
+                one{"{0} kandela"}
+                other{"{0} kandel"}
+            }
+            lumen{
+                dnam{"lumeny"}
+                few{"{0} lumeny"}
+                many{"{0} lumenu"}
+                one{"{0} lumen"}
+                other{"{0} lumenů"}
+            }
             lux{
                 dnam{"luxy"}
                 few{"{0} luxy"}
@@ -764,7 +792,7 @@
                 other{"{0} luxů"}
             }
             solar-luminosity{
-                dnam{"zářivé výkony Sllunce"}
+                dnam{"zářivé výkony Slunce"}
                 few{"{0} zářivé výkony Slunce"}
                 many{"{0} zářivého výkonu Slunce"}
                 one{"{0} zářivý výkon Slunce"}
@@ -793,6 +821,13 @@
                 one{"{0} hmotnost Země"}
                 other{"{0} hmotností Země"}
             }
+            grain{
+                dnam{"grainy"}
+                few{"{0} grainy"}
+                many{"{0} grainu"}
+                one{"{0} grain"}
+                other{"{0} grainů"}
+            }
             gram{
                 dnam{"gramy"}
                 few{"{0} gramy"}
@@ -810,11 +845,11 @@
                 per{"{0} na kilogram"}
             }
             metric-ton{
-                dnam{"metrické tuny"}
-                few{"{0} metrické tuny"}
-                many{"{0} metrické tuny"}
-                one{"{0} metrická tuna"}
-                other{"{0} metrických tun"}
+                dnam{"tuny"}
+                few{"{0} tuny"}
+                many{"{0} tuny"}
+                one{"{0} tuna"}
+                other{"{0} tun"}
             }
             microgram{
                 dnam{"mikrogramy"}
@@ -846,7 +881,7 @@
                 other{"{0} trojských uncí"}
             }
             pound{
-                dnam{"libra"}
+                dnam{"libry"}
                 few{"{0} libry"}
                 many{"{0} libry"}
                 one{"{0} libra"}
@@ -868,11 +903,11 @@
                 other{"{0} kamenů"}
             }
             ton{
-                dnam{"tuny"}
-                few{"{0} tuny"}
-                many{"{0} tuny"}
-                one{"{0} tuna"}
-                other{"{0} tun"}
+                dnam{"americké tuny"}
+                few{"{0} americké tuny"}
+                many{"{0} americké tuny"}
+                one{"{0} americká tuna"}
+                other{"{0} amerických tun"}
             }
         }
         power{
@@ -942,11 +977,11 @@
                 other{"{0} hektopascalů"}
             }
             inch-ofhg{
-                dnam{"palce rtuti"}
-                few{"{0} palce rtuti"}
-                many{"{0} palce rtuti"}
-                one{"{0} palec rtuti"}
-                other{"{0} palců rtuti"}
+                dnam{"palce rtuťového sloupce"}
+                few{"{0} palce rtuťového sloupce"}
+                many{"{0} palce rtuťového sloupce"}
+                one{"{0} palec rtuťového sloupce"}
+                other{"{0} palců rtuťového sloupce"}
             }
             kilopascal{
                 dnam{"kilopascaly"}
@@ -970,11 +1005,11 @@
                 other{"{0} milibarů"}
             }
             millimeter-ofhg{
-                dnam{"milimetry rtuti"}
-                few{"{0} milimetry rtuti"}
-                many{"{0} milimetru rtuti"}
-                one{"{0} milimetr rtuti"}
-                other{"{0} milimetrů rtuti"}
+                dnam{"milimetry rtuťového sloupce"}
+                few{"{0} milimetry rtuťového sloupce"}
+                many{"{0} milimetru rtuťového sloupce"}
+                one{"{0} milimetr rtuťového sloupce"}
+                other{"{0} milimetrů rtuťového sloupce"}
             }
             pascal{
                 dnam{"pascaly"}
@@ -988,7 +1023,7 @@
                 few{"{0} libry na čtvereční palec"}
                 many{"{0} libry na čtvereční palec"}
                 one{"{0} libra na čtvereční palec"}
-                other{"{0} psi"}
+                other{"{0} liber na čtvereční palec"}
             }
         }
         speed{
@@ -1148,7 +1183,7 @@
                 other{"{0} yardů krychlových"}
             }
             cup{
-                dnam{"šálek"}
+                dnam{"šálky"}
                 few{"{0} šálky"}
                 many{"{0} šálku"}
                 one{"{0} šálek"}
@@ -1168,12 +1203,40 @@
                 one{"{0} decilitr"}
                 other{"{0} decilitrů"}
             }
+            dessert-spoon{
+                dnam{"dezertní lžičky"}
+                few{"{0} dezertní lžičky"}
+                many{"{0} dezertní lžičky"}
+                one{"{0} dezertní lžička"}
+                other{"{0} dezertních lžiček"}
+            }
+            dessert-spoon-imperial{
+                dnam{"britské dezertní lžičky"}
+                few{"{0} britské dezertní lžičky"}
+                many{"{0} britské dezertní lžičky"}
+                one{"{0} britská dezertní lžička"}
+                other{"{0} britských dezertních lžiček"}
+            }
+            dram{
+                dnam{"duté dramy"}
+                few{"{0} duté dramy"}
+                many{"{0} dutého dramu"}
+                one{"{0} dutý dram"}
+                other{"{0} dutých dramů"}
+            }
+            drop{
+                dnam{"kapky"}
+                few{"{0} kapky"}
+                many{"{0} kapky"}
+                one{"{0} kapka"}
+                other{"{0} kapek"}
+            }
             fluid-ounce{
-                dnam{"kapalinové unce"}
-                few{"{0} kapalinové unce"}
-                many{"{0} kapalinové unce"}
-                one{"{0} kapalinová unce"}
-                other{"{0} kapalinových uncí"}
+                dnam{"duté unce"}
+                few{"{0} duté unce"}
+                many{"{0} duté unce"}
+                one{"{0} dutá unce"}
+                other{"{0} dutých uncí"}
             }
             fluid-ounce-imperial{
                 dnam{"britské duté unce"}
@@ -1191,20 +1254,27 @@
                 per{"{0} na galon"}
             }
             gallon-imperial{
-                dnam{"imp. galony"}
-                few{"{0} imp. galony"}
-                many{"{0} imp. galonu"}
-                one{"{0} imp. galon"}
-                other{"{0} imp. galonů"}
-                per{"{0} na imp. galon"}
+                dnam{"britské galony"}
+                few{"{0} britské galony"}
+                many{"{0} britského galonu"}
+                one{"{0} britský galon"}
+                other{"{0} britských galonů"}
+                per{"{0} na britský galon"}
             }
             hectoliter{
-                dnam{"hektolitr"}
+                dnam{"hektolitry"}
                 few{"{0} hektolitry"}
                 many{"{0} hektolitru"}
                 one{"{0} hektolitr"}
                 other{"{0} hektolitrů"}
             }
+            jigger{
+                dnam{"barmanské odměrky"}
+                few{"{0} barmanské odměrky"}
+                many{"{0} barmanské odměrky"}
+                one{"{0} barmanská odměrka"}
+                other{"{0} barmanských odměrek"}
+            }
             liter{
                 dnam{"litry"}
                 few{"{0} litry"}
@@ -1227,6 +1297,13 @@
                 one{"{0} mililitr"}
                 other{"{0} mililitrů"}
             }
+            pinch{
+                dnam{"špetky"}
+                few{"{0} špetky"}
+                many{"{0} špetky"}
+                one{"{0} špetka"}
+                other{"{0} špetek"}
+            }
             pint{
                 dnam{"pinty"}
                 few{"{0} pinty"}
@@ -1248,6 +1325,13 @@
                 one{"{0} kvart"}
                 other{"{0} kvartů"}
             }
+            quart-imperial{
+                dnam{"britské kvarty"}
+                few{"{0} britské kvarty"}
+                many{"{0} britského kvartu"}
+                one{"{0} britský kvart"}
+                other{"{0} britských kvartů"}
+            }
             tablespoon{
                 dnam{"lžíce"}
                 few{"{0} lžíce"}
@@ -1256,7 +1340,7 @@
                 other{"{0} lžic"}
             }
             teaspoon{
-                dnam{"lžička"}
+                dnam{"lžičky"}
                 few{"{0} lžičky"}
                 many{"{0} lžičky"}
                 one{"{0} lžička"}
@@ -1431,11 +1515,11 @@
         }
         consumption{
             liter-per-100-kilometer{
-                dnam{"l/100 km"}
-                few{"{0} l/100 km"}
-                many{"{0} l/100 km"}
-                one{"{0} l/100 km"}
-                other{"{0} l/100 km"}
+                dnam{"l/100km"}
+                few{"{0} l/100km"}
+                many{"{0} l/100km"}
+                one{"{0} l/100km"}
+                other{"{0} l/100km"}
             }
             liter-per-kilometer{
                 dnam{"l/km"}
@@ -1901,11 +1985,11 @@
                 per{"{0}/kg"}
             }
             metric-ton{
-                dnam{"mt"}
-                few{"{0} mt"}
-                many{"{0} mt"}
-                one{"{0} mt"}
-                other{"{0} mt"}
+                dnam{"t"}
+                few{"{0} t"}
+                many{"{0} t"}
+                one{"{0} t"}
+                other{"{0} t"}
             }
             microgram{
                 dnam{"µg"}
@@ -2241,6 +2325,9 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"šp"}
+            }
             pint{
                 dnam{"pt"}
                 few{"{0} pt"}
@@ -2822,6 +2909,13 @@
             }
         }
         graphics{
+            dot{
+                dnam{"bod"}
+                few{"{0} b."}
+                many{"{0} b."}
+                one{"{0} b."}
+                other{"{0} b."}
+            }
             dot-per-centimeter{
                 dnam{"DPCM"}
                 few{"{0} DPCM"}
@@ -2895,8 +2989,19 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                few{"{0} R⊕"}
+                many{"{0} R⊕"}
+                one{"{0} R⊕"}
+                other{"{0} R⊕"}
+            }
             fathom{
                 dnam{"fm"}
+                few{"{0} fth"}
+                many{"{0} fth"}
+                one{"{0} fth"}
+                other{"{0} fth"}
             }
             foot{
                 dnam{"ft"}
@@ -3023,6 +3128,20 @@
             }
         }
         light{
+            candela{
+                dnam{"cd"}
+                few{"{0} cd"}
+                many{"{0} cd"}
+                one{"{0} cd"}
+                other{"{0} cd"}
+            }
+            lumen{
+                dnam{"lm"}
+                few{"{0} lm"}
+                many{"{0} lm"}
+                one{"{0} lm"}
+                other{"{0} lm"}
+            }
             lux{
                 dnam{"lx"}
                 few{"{0} lx"}
@@ -3060,6 +3179,13 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"gr"}
+                few{"{0} gr"}
+                many{"{0} gr"}
+                one{"{0} gr"}
+                other{"{0} gr"}
+            }
             gram{
                 dnam{"g"}
                 few{"{0} g"}
@@ -3077,11 +3203,11 @@
                 per{"{0}/kg"}
             }
             metric-ton{
-                dnam{"mt"}
-                few{"{0} mt"}
-                many{"{0} mt"}
-                one{"{0} mt"}
-                other{"{0} mt"}
+                dnam{"t"}
+                few{"{0} t"}
+                many{"{0} t"}
+                one{"{0} t"}
+                other{"{0} t"}
             }
             microgram{
                 dnam{"µg"}
@@ -3135,11 +3261,11 @@
                 other{"{0} st"}
             }
             ton{
-                dnam{"t"}
-                few{"{0} t"}
-                many{"{0} t"}
-                one{"{0} t"}
-                other{"{0} t"}
+                dnam{"sht"}
+                few{"{0} sht"}
+                many{"{0} sht"}
+                one{"{0} sht"}
+                other{"{0} sht"}
             }
         }
         power{
@@ -3237,11 +3363,11 @@
                 other{"{0} mb"}
             }
             millimeter-ofhg{
-                dnam{"mm Hg"}
-                few{"{0} mm Hg"}
-                many{"{0} mm Hg"}
-                one{"{0} mm Hg"}
-                other{"{0} mm Hg"}
+                dnam{"mmHg"}
+                few{"{0} mmHg"}
+                many{"{0} mmHg"}
+                one{"{0} mmHg"}
+                other{"{0} mmHg"}
             }
             pascal{
                 dnam{"Pa"}
@@ -3435,6 +3561,34 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"dstspn"}
+                few{"{0} dstspn"}
+                many{"{0} dstspn"}
+                one{"{0} dstspn"}
+                other{"{0} dstspn"}
+            }
+            dessert-spoon-imperial{
+                dnam{"dstspn Imp."}
+                few{"{0} dstspn Imp."}
+                many{"{0} dstspn Imp."}
+                one{"{0} dstspn Imp."}
+                other{"{0} dstspn Imp."}
+            }
+            dram{
+                dnam{"fl dr"}
+                few{"{0} fl dr"}
+                many{"{0} fl dr"}
+                one{"{0} fl dr"}
+                other{"{0} fl dr"}
+            }
+            drop{
+                dnam{"kapky"}
+                few{"{0} kapky"}
+                many{"{0} kapky"}
+                one{"{0} kapka"}
+                other{"{0} kapek"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 few{"{0} fl oz"}
@@ -3472,6 +3626,13 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"odměrky"}
+                few{"{0} odměrky"}
+                many{"{0} odměrky"}
+                one{"{0} odměrka"}
+                other{"{0} odměrek"}
+            }
             liter{
                 dnam{"l"}
                 few{"{0} l"}
@@ -3494,6 +3655,13 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"špetky"}
+                few{"{0} špetky"}
+                many{"{0} špetky"}
+                one{"{0} špetka"}
+                other{"{0} špetek"}
+            }
             pint{
                 dnam{"pt"}
                 few{"{0} pt"}
@@ -3515,6 +3683,13 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"qt Imp."}
+                few{"{0} qt Imp."}
+                many{"{0} qt Imp."}
+                one{"{0} qt Imp."}
+                other{"{0} qt Imp."}
+            }
             tablespoon{
                 dnam{"tbsp"}
                 few{"{0} tbsp"}
diff --git a/icu4c/source/data/unit/cy.txt b/icu4c/source/data/unit/cy.txt
index d747424..7a4e9cb 100644
--- a/icu4c/source/data/unit/cy.txt
+++ b/icu4c/source/data/unit/cy.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cy{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -236,7 +236,7 @@
                 many{"{0} rhan pob miliwn"}
                 one{"{0} rhan pob miliwn"}
                 other{"{0} rhan pob miliwn"}
-                two{"{0} rhan pob miliwn"}
+                two{"{0} ran pob miliwn"}
                 zero{"{0} rhan pob miliwn"}
             }
             permyriad{
@@ -683,6 +683,14 @@
             }
         }
         graphics{
+            dot{
+                few{"{0} dot"}
+                many{"{0} dot"}
+                one{"{0} dot"}
+                other{"{0} dot"}
+                two{"{0} ddot"}
+                zero{"{0} dot"}
+            }
             dot-per-centimeter{
                 dnam{"dotiau mewn centimedr"}
                 few{"{0} dpcm"}
@@ -696,11 +704,14 @@
                 dnam{"dotiau mewn modfedd"}
                 few{"{0} dpi"}
                 many{"{0} dpi"}
-                one{"{0} mewn modfedd"}
+                one{"{0} dot mewn modfedd"}
                 other{"{0} dot mewn modfedd"}
                 two{"{0} dpi"}
                 zero{"{0} dpi"}
             }
+            em{
+                dnam{"em argraffyddol"}
+            }
             megapixel{
                 dnam{"megapicseli"}
                 few{"{0} MP"}
@@ -767,6 +778,15 @@
                 two{"{0} dm"}
                 zero{"{0} dm"}
             }
+            earth-radius{
+                dnam{"radiws y Ddaear"}
+                few{"{0} R⊕"}
+                many{"{0} R⊕"}
+                one{"{0} radiws y Ddaear"}
+                other{"{0} radiws y Ddaear"}
+                two{"{0} R⊕"}
+                zero{"{0} R⊕"}
+            }
             fathom{
                 dnam{"gwrhydau"}
                 few{"{0} gwryd"}
@@ -935,6 +955,12 @@
             }
         }
         light{
+            candela{
+                dnam{"candela"}
+            }
+            lumen{
+                dnam{"lwmen"}
+            }
             lux{
                 dnam{"lycsau"}
                 few{"{0} lx"}
@@ -982,6 +1008,15 @@
                 two{"{0} M⊕"}
                 zero{"{0} M⊕"}
             }
+            grain{
+                dnam{"graen"}
+                few{"{0} graen"}
+                many{"{0} graen"}
+                one{"{0} graen"}
+                other{"{0} graen"}
+                two{"{0} raen"}
+                zero{"{0} graen"}
+            }
             gram{
                 dnam{"gramau"}
                 few{"{0} g"}
@@ -1163,12 +1198,12 @@
             }
             inch-ofhg{
                 dnam{"modfeddi o fercwri"}
-                few{"{0} ″ Hg"}
-                many{"{0} ″ Hg"}
+                few{"{0} inHg"}
+                many{"{0} inHg"}
                 one{"{0} fodfedd o fercwri"}
                 other{"{0} modfedd o fercwri"}
-                two{"{0} ″ Hg"}
-                zero{"{0} ″ Hg"}
+                two{"{0} inHg"}
+                zero{"{0} inHg"}
             }
             kilopascal{
                 dnam{"cilopascalau"}
@@ -1199,15 +1234,21 @@
             }
             millimeter-ofhg{
                 dnam{"milimetrau o fercwri"}
-                few{"{0} mm Hg"}
-                many{"{0} mm Hg"}
+                few{"{0} mmHg"}
+                many{"{0} mmHg"}
                 one{"{0} milimetr o fercwri"}
                 other{"{0} milimetr o fercwri"}
-                two{"{0} mm Hg"}
-                zero{"{0} mm Hg"}
+                two{"{0} mmHg"}
+                zero{"{0} mmHg"}
             }
             pascal{
-                dnam{"pascals"}
+                dnam{"pascalau"}
+                few{"{0} Pa"}
+                many{"{0} Pa"}
+                one{"{0} pascal"}
+                other{"{0} pascal"}
+                two{"{0} Pa"}
+                zero{"{0} Pa"}
             }
             pound-force-per-square-inch{
                 dnam{"pwysau y fodfedd sgwar"}
@@ -1309,7 +1350,7 @@
                 dnam{"pwys-troedfeddi"}
                 few{"{0} lbf⋅ft"}
                 many{"{0} lbf⋅ft"}
-                one{"{0} pwys-troedfedd"}
+                one{"{0} pwys o rym⋅droedfedd"}
                 other{"{0} pwys-troedfeddi"}
                 two{"{0} lbf⋅ft"}
                 zero{"{0} lbf⋅ft"}
@@ -1336,12 +1377,12 @@
             }
             bushel{
                 dnam{"bwsielau"}
-                few{"{0} bwsiel"}
-                many{"{0} bwsiel"}
+                few{"{0} bw"}
+                many{"{0} bw"}
                 one{"{0} bwsiel"}
                 other{"{0} bwsiel"}
-                two{"{0} bwsiel"}
-                zero{"{0} bwsiel"}
+                two{"{0} bw"}
+                zero{"{0} bw"}
             }
             centiliter{
                 dnam{"centilitrau"}
@@ -1444,6 +1485,42 @@
                 two{"{0} dL"}
                 zero{"{0} dL"}
             }
+            dessert-spoon{
+                dnam{"llond llwy bwdin"}
+                few{"{0} dstspn"}
+                many{"{0} dstspn"}
+                one{"{0} llond llwy bwdin"}
+                other{"{0} llond llwy bwdin"}
+                two{"{0} dstspn"}
+                zero{"{0} dstspn"}
+            }
+            dessert-spoon-imperial{
+                dnam{"llond llwy bwdin imp."}
+                few{"{0} dstspn Imp"}
+                many{"{0} dstspn Imp"}
+                one{"{0} llond llwy bwdin imp."}
+                other{"{0} llond llwy bwdin imp."}
+                two{"{0} dstspn Imp"}
+                zero{"{0} dstspn Imp"}
+            }
+            dram{
+                dnam{"dracmon hylifol"}
+                few{"{0} dracmon hy"}
+                many{"{0} dracmon hy"}
+                one{"{0} dracmon hy"}
+                other{"{0} dracmon hy"}
+                two{"{0} ddracmon hy"}
+                zero{"{0} dracmon hy"}
+            }
+            drop{
+                dnam{"diferyn"}
+                few{"{0} diferyn"}
+                many{"{0} diferyn"}
+                one{"{0} diferyn"}
+                other{"{0} diferyn"}
+                two{"{0} ddiferyn"}
+                zero{"{0} diferyn"}
+            }
             fluid-ounce{
                 dnam{"ownsiau hylifol"}
                 few{"{0} owns hylifol"}
@@ -1491,6 +1568,15 @@
                 two{"{0} hL"}
                 zero{"{0} hL"}
             }
+            jigger{
+                dnam{"joch"}
+                few{"{0} joch"}
+                many{"{0} joch"}
+                one{"{0} joch"}
+                other{"{0} joch"}
+                two{"{0} joch"}
+                zero{"{0} joch"}
+            }
             liter{
                 dnam{"litrau"}
                 few{"{0} L"}
@@ -1519,6 +1605,15 @@
                 two{"{0} mL"}
                 zero{"{0} mL"}
             }
+            pinch{
+                dnam{"pinsiad"}
+                few{"{0} phinsiad"}
+                many{"{0} pinsiad"}
+                one{"{0} pinsiad"}
+                other{"{0} pinsiad"}
+                two{"{0} binsiad"}
+                zero{"{0} pinsiad"}
+            }
             pint{
                 dnam{"peintiau"}
                 few{"{0} pheint"}
@@ -1546,6 +1641,15 @@
                 two{"{0} gwart"}
                 zero{"{0} chwart"}
             }
+            quart-imperial{
+                dnam{"chwart Imp"}
+                few{"{0} cht Imp."}
+                many{"{0} cht Imp."}
+                one{"{0} cht Imp."}
+                other{"{0} cht Imp."}
+                two{"{0} cht Imp."}
+                zero{"{0} cht Imp."}
+            }
             tablespoon{
                 dnam{"llond llwy fwrdd"}
                 few{"{0} llond llwy fwrdd"}
@@ -1855,14 +1959,14 @@
                 zero{"{0} eil"}
             }
             week{
-                dnam{"w"}
-                few{"{0}w"}
-                many{"{0}w"}
+                dnam{"ws"}
+                few{"{0} ws"}
+                many{"{0} ws"}
                 one{"{0}w"}
                 other{"{0}w"}
                 per{"{0}/w"}
-                two{"{0}w"}
-                zero{"{0}w"}
+                two{"{0} ws"}
+                zero{"{0} ws"}
             }
             year{
                 dnam{"bl"}
@@ -2836,6 +2940,7 @@
                 zero{"{0} beit"}
             }
             gigabit{
+                dnam{"Gbit"}
                 few{"{0} Gb"}
                 many{"{0} Gb"}
                 one{"{0} Gb"}
@@ -2852,6 +2957,9 @@
                 two{"{0} GB"}
                 zero{"{0} GB"}
             }
+            kilobit{
+                dnam{"kbit"}
+            }
             kilobyte{
                 dnam{"kBeit"}
                 few{"{0} kB"}
@@ -2861,6 +2969,9 @@
                 two{"{0} kB"}
                 zero{"{0} kB"}
             }
+            megabit{
+                dnam{"Mbit"}
+            }
             megabyte{
                 dnam{"MBeit"}
             }
@@ -2914,12 +3025,12 @@
             }
             decade{
                 dnam{"deg"}
-                few{"{0} degawd"}
-                many{"{0} degawd"}
-                one{"{0} degawd"}
-                other{"{0} degawd"}
+                few{"{0} deg"}
+                many{"{0} deg"}
+                one{"{0} deg"}
+                other{"{0} deg"}
                 two{"{0} degawd"}
-                zero{"{0} degawd"}
+                zero{"{0} deg"}
             }
             hour{
                 dnam{"oriau"}
@@ -2990,13 +3101,13 @@
             }
             week{
                 dnam{"wythnosau"}
-                few{"{0} wythnos"}
-                many{"{0} wythnos"}
-                one{"{0} wythnos"}
-                other{"{0} wythnos"}
-                per{"{0}/wythnos"}
-                two{"{0} wythnos"}
-                zero{"{0} wythnos"}
+                few{"{0} ws"}
+                many{"{0} ws"}
+                one{"{0} ws"}
+                other{"{0} ws"}
+                per{"{0}/ws"}
+                two{"{0} ws"}
+                zero{"{0} ws"}
             }
             year{
                 dnam{"blynyddoedd"}
@@ -3132,6 +3243,14 @@
             }
         }
         graphics{
+            dot{
+                few{"{0} dot"}
+                many{"{0} dot"}
+                one{"{0} dot"}
+                other{"{0} dot"}
+                two{"{0} ddot"}
+                zero{"{0} dot"}
+            }
             megapixel{
                 dnam{"megapicseli"}
             }
@@ -3189,6 +3308,12 @@
             }
             furlong{
                 dnam{"ystadenni"}
+                few{"{0} yst"}
+                many{"{0} yst"}
+                one{"{0} yst"}
+                other{"{0} yst"}
+                two{"{0} yst"}
+                zero{"{0} yst"}
             }
             inch{
                 dnam{"modfeddi"}
@@ -3353,6 +3478,15 @@
             earth-mass{
                 dnam{"masau ddaear"}
             }
+            grain{
+                dnam{"graen"}
+                few{"{0} graen"}
+                many{"{0} graen"}
+                one{"{0} graen"}
+                other{"{0} graen"}
+                two{"{0} raen"}
+                zero{"{0} graen"}
+            }
             gram{
                 dnam{"gramau"}
                 few{"{0} g"}
@@ -3518,13 +3652,13 @@
                 zero{"{0} hPa"}
             }
             inch-ofhg{
-                dnam{"\u0022 Hg"}
-                few{"{0} ″ Hg"}
-                many{"{0} ″ Hg"}
-                one{"{0} ″ Hg"}
-                other{"{0} ″ Hg"}
-                two{"{0} ″ Hg"}
-                zero{"{0} ″ Hg"}
+                dnam{"inHg"}
+                few{"{0} inHg"}
+                many{"{0} inHg"}
+                one{"{0} inHg"}
+                other{"{0} inHg"}
+                two{"{0} inHg"}
+                zero{"{0} inHg"}
             }
             millibar{
                 dnam{"mbar"}
@@ -3535,6 +3669,15 @@
                 two{"{0} mbar"}
                 zero{"{0} mbar"}
             }
+            millimeter-ofhg{
+                dnam{"mmHg"}
+                few{"{0} mmHg"}
+                many{"{0} mmHg"}
+                one{"{0} mmHg"}
+                other{"{0} mmHg"}
+                two{"{0} mmHg"}
+                zero{"{0} mmHg"}
+            }
             pound-force-per-square-inch{
                 few{"{0} psi"}
                 many{"{0} psi"}
@@ -3614,12 +3757,12 @@
             }
             bushel{
                 dnam{"bwsielau"}
-                few{"{0} bwsiel"}
-                many{"{0} bwsiel"}
-                one{"{0} bwsiel"}
-                other{"{0} bwsiel"}
-                two{"{0} bwsiel"}
-                zero{"{0} bwsiel"}
+                few{"{0} bw"}
+                many{"{0} bw"}
+                one{"{0} bw"}
+                other{"{0} bw"}
+                two{"{0} bw"}
+                zero{"{0} bw"}
             }
             centiliter{
                 dnam{"cL"}
@@ -3721,6 +3864,24 @@
                 two{"{0} dL"}
                 zero{"{0} dL"}
             }
+            dram{
+                dnam{"dracmon hylifol"}
+                few{"{0} dracmon hy"}
+                many{"{0} dracmon hy"}
+                one{"{0} dracmon hy"}
+                other{"{0} dracmon hy"}
+                two{"{0} ddracmon hy"}
+                zero{"{0} dracmon hy"}
+            }
+            drop{
+                dnam{"diferyn"}
+                few{"{0} diferyn"}
+                many{"{0} diferyn"}
+                one{"{0} diferyn"}
+                other{"{0} diferyn"}
+                two{"{0} ddiferyn"}
+                zero{"{0} diferyn"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 few{"{0} fl oz"}
@@ -3759,6 +3920,15 @@
                 two{"{0} hL"}
                 zero{"{0} hL"}
             }
+            jigger{
+                dnam{"joch"}
+                few{"{0} joch"}
+                many{"{0} joch"}
+                one{"{0} joch"}
+                other{"{0} joch"}
+                two{"{0} joch"}
+                zero{"{0} joch"}
+            }
             liter{
                 dnam{"litrau"}
                 few{"{0} L"}
@@ -3787,6 +3957,15 @@
                 two{"{0} mL"}
                 zero{"{0} mL"}
             }
+            pinch{
+                dnam{"pinsiad"}
+                few{"{0} phinsiad"}
+                many{"{0} pinsiad"}
+                one{"{0} pinsiad"}
+                other{"{0} pinsiad"}
+                two{"{0} binsiad"}
+                zero{"{0} pinsiad"}
+            }
             pint{
                 dnam{"peintiau"}
                 few{"{0} pt"}
@@ -3814,6 +3993,15 @@
                 two{"{0} qt"}
                 zero{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"cht Imp."}
+                few{"{0} cht Imp."}
+                many{"{0} cht Imp."}
+                one{"{0} cht Imp."}
+                other{"{0} cht Imp."}
+                two{"{0} cht Imp."}
+                zero{"{0} cht Imp."}
+            }
             tablespoon{
                 dnam{"tbsp"}
                 few{"{0} tbsp"}
diff --git a/icu4c/source/data/unit/da.txt b/icu4c/source/data/unit/da.txt
index 9004cdf..92edf03 100644
--- a/icu4c/source/data/unit/da.txt
+++ b/icu4c/source/data/unit/da.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 da{
-    Version{"37"}
     durationUnits{
         hm{"h.mm"}
         hms{"h.mm.ss"}
@@ -73,7 +73,7 @@
                 dnam{"kvadrattommer"}
                 one{"{0} kvadrattomme"}
                 other{"{0} kvadrattommer"}
-                per{"{0}/in²"}
+                per{"{0} pr. kvadrattomme"}
             }
             square-kilometer{
                 dnam{"kvadratkilometer"}
@@ -131,7 +131,7 @@
             }
             permillion{
                 dnam{"parts per million"}
-                one{"{0} parts per million"}
+                one{"{0} part per million"}
                 other{"{0} parts per million"}
             }
         }
@@ -345,7 +345,7 @@
             }
             kilowatt-hour{
                 dnam{"kilowatt-timer"}
-                one{"kilowatt-time"}
+                one{"{0} kilowatt-time"}
                 other{"{0} kilowatt-timer"}
             }
         }
@@ -379,6 +379,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"prik"}
+                one{"{0} prik"}
+                other{"{0} punkter"}
+            }
             dot-per-centimeter{
                 dnam{"punkter per centimeter"}
                 one{"{0} punkt per centimeter"}
@@ -399,6 +404,11 @@
                 one{"{0} megapixel"}
                 other{"{0} megapixels"}
             }
+            pixel{
+                dnam{"pixels"}
+                one{"{0} pixel"}
+                other{"{0} pixels"}
+            }
             pixel-per-centimeter{
                 dnam{"pixels per centimeter"}
                 one{"{0} pixel per centimeter"}
@@ -427,12 +437,27 @@
                 one{"{0} decimeter"}
                 other{"{0} decimeter"}
             }
+            earth-radius{
+                dnam{"jordradius"}
+                one{"{0} jordradius"}
+                other{"{0} jordradier"}
+            }
+            fathom{
+                dnam{"favne"}
+                one{"{0} favn"}
+                other{"{0} favne"}
+            }
             foot{
                 dnam{"fod"}
                 one{"{0} fod"}
                 other{"{0} fod"}
                 per{"{0} pr. fod"}
             }
+            furlong{
+                dnam{"furlongs"}
+                one{"{0} furlong"}
+                other{"{0} furlongs"}
+            }
             inch{
                 dnam{"tommer"}
                 one{"{0} tomme"}
@@ -513,6 +538,16 @@
             }
         }
         light{
+            candela{
+                dnam{"candela"}
+                one{"{0} candela"}
+                other{"{0} candela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                one{"{0} lumen"}
+                other{"{0} lumen"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
@@ -525,6 +560,16 @@
                 one{"{0} karat"}
                 other{"{0} karat"}
             }
+            earth-mass{
+                dnam{"Jordmasser"}
+                one{"{0} jordmasse"}
+                other{"{0} jordmasser"}
+            }
+            grain{
+                dnam{"gran"}
+                one{"{0} gran"}
+                other{"{0} gran"}
+            }
             gram{
                 dnam{"gram"}
                 one{"{0} gram"}
@@ -574,6 +619,11 @@
                 one{"{0} solmasse"}
                 other{"{0} solmasser"}
             }
+            stone{
+                dnam{"stone"}
+                one{"{0} stone"}
+                other{"{0} stone"}
+            }
             ton{
                 dnam{"short ton"}
                 one{"{0} short ton"}
@@ -656,7 +706,7 @@
             pound-force-per-square-inch{
                 dnam{"pounds pr. kvadrattomme"}
                 one{"{0} pound pr. kvadrattomme"}
-                other{"{0} pounds pr. kvadrattommer"}
+                other{"{0} pounds pr. kvadrattomme"}
             }
         }
         speed{
@@ -721,6 +771,11 @@
                 one{"{0} tønde"}
                 other{"{0} tønder"}
             }
+            bushel{
+                dnam{"skæpper"}
+                one{"{0} skæppe"}
+                other{"{0} skæpper"}
+            }
             centiliter{
                 dnam{"centiliter"}
                 one{"{0} centiliter"}
@@ -765,7 +820,7 @@
             }
             cup{
                 dnam{"cups"}
-                one{"cup"}
+                one{"{0} cup"}
                 other{"{0} cups"}
             }
             cup-metric{
@@ -778,6 +833,26 @@
                 one{"{0} deciliter"}
                 other{"{0} deciliter"}
             }
+            dessert-spoon{
+                dnam{"dessertske"}
+                one{"{0} dessertske"}
+                other{"{0} dessertskeer"}
+            }
+            dessert-spoon-imperial{
+                dnam{"britisk dessertske"}
+                one{"{0} britisk dessertske"}
+                other{"{0} britiske dessertskeer"}
+            }
+            dram{
+                dnam{"britisk flydende dram"}
+                one{"{0} britisk flydende dram"}
+                other{"{0} britiske flydende dramme"}
+            }
+            drop{
+                dnam{"dråbe"}
+                one{"{0} dråbe"}
+                other{"{0} dråber"}
+            }
             fluid-ounce{
                 dnam{"engelske fluid ounces"}
                 one{"{0} engelsk fluid ounce"}
@@ -804,6 +879,10 @@
                 one{"{0} hektoliter"}
                 other{"{0} hektoliter"}
             }
+            jigger{
+                one{"{0} jigger"}
+                other{"{0} jigger"}
+            }
             liter{
                 dnam{"liter"}
                 one{"{0} liter"}
@@ -820,6 +899,11 @@
                 one{"{0} milliliter"}
                 other{"{0} milliliter"}
             }
+            pinch{
+                dnam{"knivspids"}
+                one{"{0} knivspids"}
+                other{"{0} knivspidser"}
+            }
             pint{
                 dnam{"pints"}
                 one{"{0} pint"}
@@ -835,6 +919,11 @@
                 one{"{0} engelsk quart"}
                 other{"{0} engelske quarts"}
             }
+            quart-imperial{
+                dnam{"britisk quart"}
+                one{"{0} britisk quart"}
+                other{"{0} britiske quarts"}
+            }
             tablespoon{
                 dnam{"spiseskeer"}
                 one{"{0} spiseske"}
@@ -1338,9 +1427,9 @@
                 other{"{0} bit"}
             }
             byte{
-                dnam{"byte"}
-                one{"{0} byte"}
-                other{"{0} byte"}
+                dnam{"B"}
+                one{"{0} B"}
+                other{"{0} B"}
             }
             gigabit{
                 dnam{"Gbit"}
@@ -1408,7 +1497,7 @@
             hour{
                 dnam{"timer"}
                 one{"{0} t."}
-                other{"{0} t"}
+                other{"{0} t."}
                 per{"{0} /t"}
             }
             microsecond{
@@ -1543,6 +1632,13 @@
                 other{"{0} MHz"}
             }
         }
+        graphics{
+            dot{
+                dnam{"prik"}
+                one{"{0} p"}
+                other{"{0} p"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"ae"}
@@ -1560,6 +1656,11 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            fathom{
+                dnam{"favn"}
+                one{"{0} favn"}
+                other{"{0} favne"}
+            }
             foot{
                 dnam{"fod"}
                 one{"{0} fod"}
@@ -1656,6 +1757,11 @@
                 one{"{0} kt."}
                 other{"{0} kt."}
             }
+            grain{
+                dnam{"gran"}
+                one{"{0} gran"}
+                other{"{0} gran"}
+            }
             gram{
                 dnam{"gram"}
                 one{"{0} g"}
@@ -1663,7 +1769,6 @@
                 per{"{0}/g"}
             }
             kilogram{
-                dnam{"kilogram"}
                 one{"{0} kg"}
                 other{"{0} kg"}
                 per{"{0}/kg"}
@@ -1828,6 +1933,11 @@
                 one{"{0} td."}
                 other{"{0} tdr."}
             }
+            bushel{
+                dnam{"skp."}
+                one{"{0} skp."}
+                other{"{0} skp."}
+            }
             centiliter{
                 dnam{"cl"}
                 one{"{0} cl"}
@@ -1885,6 +1995,26 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"dsk."}
+                one{"{0} dsk."}
+                other{"{0} dsk."}
+            }
+            dessert-spoon-imperial{
+                dnam{"brit. dsk."}
+                one{"{0} brit. dsk."}
+                other{"{0} brit. dsk."}
+            }
+            dram{
+                dnam{"br. fl. dr."}
+                one{"{0} br. fl. dr."}
+                other{"{0} br. fl. dr."}
+            }
+            drop{
+                dnam{"dråbe"}
+                one{"{0} dråbe"}
+                other{"{0} dråber"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -1923,6 +2053,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"knsp."}
+                one{"{0} knsp."}
+                other{"{0} knsp."}
+            }
             pint{
                 dnam{"pt"}
                 one{"{0} pt"}
@@ -1938,6 +2073,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"britisk qt"}
+                one{"{0} britisk qt"}
+                other{"{0} britiske qt"}
+            }
             tablespoon{
                 dnam{"spsk."}
                 one{"{0} spsk."}
diff --git a/icu4c/source/data/unit/dav.txt b/icu4c/source/data/unit/dav.txt
index 6894cef..d2d0189 100644
--- a/icu4c/source/data/unit/dav.txt
+++ b/icu4c/source/data/unit/dav.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dav{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/de.txt b/icu4c/source/data/unit/de.txt
index 89f48d9..daf4dea 100644
--- a/icu4c/source/data/unit/de.txt
+++ b/icu4c/source/data/unit/de.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -11,11 +11,13 @@
         acceleration{
             g-force{
                 dnam{"g-Kraft"}
-                one{"{0}-fache Erdbeschleunigung"}
-                other{"{0}-fache Erdbeschleunigung"}
+                one{"{0} g-Kraft"}
+                other{"{0} g-Kraft"}
             }
             meter-per-square-second{
                 dnam{"Meter pro Quadratsekunde"}
+                one{"{0} Meter pro Quadratsekunde"}
+                other{"{0} Meter pro Quadratsekunde"}
             }
         }
         angle{
@@ -133,15 +135,15 @@
             }
             permillion{
                 dnam{"Parts per million"}
-                one{"{0} Parts per million"}
+                one{"{0} Part per million"}
                 other{"{0} Parts per million"}
             }
         }
         consumption{
             liter-per-100-kilometer{
-                dnam{"Liter auf 100 Kilometer"}
-                one{"{0} Liter auf 100 Kilometer"}
-                other{"{0} Liter auf 100 Kilometer"}
+                dnam{"Liter pro 100 Kilometer"}
+                one{"{0} Liter pro 100 Kilometer"}
+                other{"{0} Liter pro 100 Kilometer"}
             }
             liter-per-kilometer{
                 dnam{"Liter pro Kilometer"}
@@ -170,22 +172,22 @@
             bit{
                 dnam{"Bits"}
                 one{"{0} Bit"}
-                other{"{0} Bits"}
+                other{"{0} Bit"}
             }
             byte{
                 dnam{"Bytes"}
                 one{"{0} Byte"}
-                other{"{0} Bytes"}
+                other{"{0} Byte"}
             }
             gigabit{
                 dnam{"Gigabits"}
                 one{"{0} Gigabit"}
-                other{"{0} Gigabits"}
+                other{"{0} Gigabit"}
             }
             gigabyte{
                 dnam{"Gigabytes"}
                 one{"{0} Gigabyte"}
-                other{"{0} Gigabytes"}
+                other{"{0} Gigabyte"}
             }
             kilobit{
                 dnam{"Kilobits"}
@@ -195,32 +197,32 @@
             kilobyte{
                 dnam{"Kilobytes"}
                 one{"{0} Kilobyte"}
-                other{"{0} Kilobytes"}
+                other{"{0} Kilobyte"}
             }
             megabit{
                 dnam{"Megabits"}
                 one{"{0} Megabit"}
-                other{"{0} Megabits"}
+                other{"{0} Megabit"}
             }
             megabyte{
                 dnam{"Megabytes"}
                 one{"{0} Megabyte"}
-                other{"{0} Megabytes"}
+                other{"{0} Megabyte"}
             }
             petabyte{
                 dnam{"Petabytes"}
                 one{"{0} Petabyte"}
-                other{"{0} Petabytes"}
+                other{"{0} Petabyte"}
             }
             terabit{
                 dnam{"Terabits"}
                 one{"{0} Terabit"}
-                other{"{0} Terabits"}
+                other{"{0} Terabit"}
             }
             terabyte{
                 dnam{"Terabytes"}
                 one{"{0} Terabyte"}
-                other{"{0} Terabytes"}
+                other{"{0} Terabyte"}
             }
         }
         duration{
@@ -363,8 +365,9 @@
         }
         force{
             pound-force{
-                one{"Pound-force"}
-                other{"{0} lbf"}
+                dnam{"Pound-force"}
+                one{"{0} Pound-force"}
+                other{"{0} Pound-force"}
             }
         }
         frequency{
@@ -390,6 +393,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"Punkt"}
+                one{"{0} Punkt"}
+                other{"{0} Punkt"}
+            }
             dot-per-centimeter{
                 dnam{"Punkte pro Zentimeter"}
                 one{"{0} Punkt pro Zentimeter"}
@@ -438,6 +446,11 @@
                 one{"{0} Dezimeter"}
                 other{"{0} Dezimeter"}
             }
+            earth-radius{
+                dnam{"Erdradius"}
+                one{"{0} Erdradius"}
+                other{"{0} Erdradien"}
+            }
             fathom{
                 dnam{"Nautischer Faden"}
                 one{"{0} Faden"}
@@ -450,7 +463,7 @@
                 per{"{0} pro Fuß"}
             }
             furlong{
-                dnam{"Furlong"}
+                dnam{"Furlongs"}
                 one{"{0} Furlong"}
                 other{"{0} Furlong"}
             }
@@ -518,12 +531,12 @@
                 other{"{0} Pikometer"}
             }
             point{
-                dnam{"Punkte"}
-                one{"{0} Punkt"}
-                other{"{0} Punkte"}
+                dnam{"DTP-Punkte"}
+                one{"{0} DTP-Punkt"}
+                other{"{0} DTP-Punkte"}
             }
             solar-radius{
-                dnam{"Sonnenradius"}
+                dnam{"Sonnenradien"}
                 one{"{0} Sonnenradius"}
                 other{"{0} Sonnenradien"}
             }
@@ -534,11 +547,26 @@
             }
         }
         light{
+            candela{
+                dnam{"Candela"}
+                one{"{0} Candela"}
+                other{"{0} Candela"}
+            }
+            lumen{
+                dnam{"Lumen"}
+                one{"{0} Lumen"}
+                other{"{0} Lumen"}
+            }
             lux{
                 dnam{"Lux"}
                 one{"{0} Lux"}
                 other{"{0} Lux"}
             }
+            solar-luminosity{
+                dnam{"Sonnenleuchtkräfte"}
+                one{"{0} Sonnenleuchtkraft"}
+                other{"{0} Sonnenleuchtkräfte"}
+            }
         }
         mass{
             carat{
@@ -552,9 +580,14 @@
                 other{"{0} Dalton"}
             }
             earth-mass{
-                dnam{"Erdmasse"}
+                dnam{"Erdmassen"}
                 one{"{0} Erdmasse"}
-                other{"{0} Erdmasse"}
+                other{"{0} Erdmassen"}
+            }
+            grain{
+                dnam{"Gran"}
+                one{"{0} Gran"}
+                other{"{0} Gran"}
             }
             gram{
                 dnam{"Gramm"}
@@ -601,9 +634,9 @@
                 per{"{0} pro Pfund"}
             }
             solar-mass{
-                dnam{"Sonnenmasse"}
+                dnam{"Sonnenmassen"}
                 one{"{0} Sonnenmasse"}
-                other{"{0} Sonnenmasse"}
+                other{"{0} Sonnenmassen"}
             }
             stone{
                 dnam{"Stones"}
@@ -623,7 +656,7 @@
                 other{"{0} Gigawatt"}
             }
             horsepower{
-                dnam{"Pferdestärken"}
+                dnam{"Pferdestärke"}
                 one{"{0} Pferdestärke"}
                 other{"{0} Pferdestärken"}
             }
@@ -735,8 +768,8 @@
             }
             generic{
                 dnam{"°"}
-                one{"{0}°"}
-                other{"{0}°"}
+                one{"{0} Grad"}
+                other{"{0} Grad"}
             }
             kelvin{
                 dnam{"Kelvin"}
@@ -744,6 +777,18 @@
                 other{"{0} Kelvin"}
             }
         }
+        torque{
+            newton-meter{
+                dnam{"Newtonmeter"}
+                one{"{0} Newtonmeter"}
+                other{"{0} Newtonmeter"}
+            }
+            pound-force-foot{
+                dnam{"Foot-pound"}
+                one{"{0} Foot-pound"}
+                other{"{0} Foot-pound"}
+            }
+        }
         volume{
             acre-foot{
                 dnam{"Acre-Feet"}
@@ -803,20 +848,40 @@
                 other{"{0} Kubikyards"}
             }
             cup{
-                dnam{"Cups"}
-                one{"{0} Cup"}
-                other{"{0} Cups"}
-            }
-            cup-metric{
-                dnam{"Tasse"}
+                dnam{"Tassen"}
                 one{"{0} Tasse"}
                 other{"{0} Tassen"}
             }
+            cup-metric{
+                dnam{"metrische Tassen"}
+                one{"{0} metrische Tasse"}
+                other{"{0} metrische Tassen"}
+            }
             deciliter{
                 dnam{"Deziliter"}
                 one{"{0} Deziliter"}
                 other{"{0} Deziliter"}
             }
+            dessert-spoon{
+                dnam{"Dessertlöffel"}
+                one{"{0} Dessertlöffel"}
+                other{"{0} Dessertlöffel"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Imp. Dessertlöffel"}
+                one{"{0} Imp. Dessertlöffel"}
+                other{"{0} Imp. Dessertlöffel"}
+            }
+            dram{
+                dnam{"Dram"}
+                one{"{0} Dram"}
+                other{"{0} Dram"}
+            }
+            drop{
+                dnam{"Tropfen"}
+                one{"{0} Tropfen"}
+                other{"{0} Tropfen"}
+            }
             fluid-ounce{
                 dnam{"Flüssigunzen"}
                 one{"{0} Flüssigunze"}
@@ -828,15 +893,15 @@
                 other{"{0} Imp. Flüssigunzen"}
             }
             gallon{
-                dnam{"Gallonen"}
+                dnam{"Gallone"}
                 one{"{0} Gallone"}
                 other{"{0} Gallonen"}
                 per{"{0} pro Gallone"}
             }
             gallon-imperial{
-                dnam{"Imp. Gallone"}
-                one{"{0} Imp. Gallone"}
-                other{"{0} Imp. Gallonen"}
+                dnam{"Imp. Gallonen"}
+                one{"{0} Imp. Gallone"}
+                other{"{0} Imp. Gallonen"}
                 per{"{0} pro Imp. Gallone"}
             }
             hectoliter{
@@ -844,6 +909,11 @@
                 one{"{0} Hektoliter"}
                 other{"{0} Hektoliter"}
             }
+            jigger{
+                dnam{"Jigger"}
+                one{"{0} Jigger"}
+                other{"{0} Jigger"}
+            }
             liter{
                 dnam{"Liter"}
                 one{"{0} Liter"}
@@ -860,6 +930,11 @@
                 one{"{0} Milliliter"}
                 other{"{0} Milliliter"}
             }
+            pinch{
+                dnam{"Prise"}
+                one{"{0} Prise"}
+                other{"{0} Prisen"}
+            }
             pint{
                 dnam{"Pints"}
                 one{"{0} Pint"}
@@ -871,10 +946,15 @@
                 other{"{0} metrische Pints"}
             }
             quart{
-                dnam{"Quart"}
+                dnam{"Quarts"}
                 one{"{0} Quart"}
                 other{"{0} Quart"}
             }
+            quart-imperial{
+                dnam{"Imp. Quart"}
+                one{"{0} Imp. Quart"}
+                other{"{0} Imp. Quart"}
+            }
             tablespoon{
                 dnam{"Esslöffel"}
                 one{"{0} Esslöffel"}
@@ -972,9 +1052,9 @@
         }
         consumption{
             liter-per-100-kilometer{
-                dnam{"L/100 km"}
-                one{"{0} L/100 km"}
-                other{"{0} L/100 km"}
+                dnam{"L/100km"}
+                one{"{0}L/100km"}
+                other{"{0}L/100km"}
             }
             liter-per-kilometer{
                 one{"{0} l/km"}
@@ -1058,7 +1138,7 @@
                 other{"{0} μs"}
             }
             minute{
-                dnam{"Min."}
+                dnam{"min"}
                 one{"{0} Min."}
                 other{"{0} Min."}
                 per{"{0}/min"}
@@ -1362,8 +1442,6 @@
         temperature{
             celsius{
                 dnam{"°C"}
-                one{"{0}°"}
-                other{"{0}°"}
             }
             fahrenheit{
                 dnam{"°F"}
@@ -1476,6 +1554,8 @@
         acceleration{
             g-force{
                 dnam{"g-Kraft"}
+                one{"{0} g-Kraft"}
+                other{"{0} g-Kraft"}
             }
         }
         angle{
@@ -1507,7 +1587,7 @@
         }
         area{
             acre{
-                dnam{"Acres"}
+                dnam{"ac"}
                 one{"{0} ac"}
                 other{"{0} ac"}
             }
@@ -1571,7 +1651,6 @@
                 other{"{0} ‰"}
             }
             permillion{
-                dnam{"parts/million"}
                 one{"{0} ppm"}
                 other{"{0} ppm"}
             }
@@ -1609,7 +1688,7 @@
             bit{
                 dnam{"Bit"}
                 one{"{0} Bit"}
-                other{"{0} Bits"}
+                other{"{0} Bit"}
             }
             byte{
                 dnam{"Byte"}
@@ -1685,7 +1764,6 @@
                 other{"{0} μs"}
             }
             minute{
-                dnam{"Min."}
                 one{"{0} Min."}
                 other{"{0} Min."}
             }
@@ -1773,8 +1851,8 @@
             }
             fathom{
                 dnam{"Faden"}
-                one{"{0} fth"}
-                other{"{0} fth"}
+                one{"{0} fm"}
+                other{"{0} fm"}
             }
             foot{
                 dnam{"Fuß"}
@@ -1821,6 +1899,11 @@
             picometer{
                 dnam{"Pikometer"}
             }
+            point{
+                dnam{"p"}
+                one{"{0} p"}
+                other{"{0} p"}
+            }
             yard{
                 dnam{"Yards"}
             }
@@ -1838,6 +1921,11 @@
                 one{"{0} Kt"}
                 other{"{0} Kt"}
             }
+            grain{
+                dnam{"Gran"}
+                one{"{0} gr"}
+                other{"{0} gr"}
+            }
             gram{
                 dnam{"Gramm"}
             }
@@ -1851,6 +1939,11 @@
                 one{"{0} st"}
                 other{"{0} st"}
             }
+            ton{
+                dnam{"tn. sh."}
+                one{"{0} tn. sh."}
+                other{"{0} tn. sh."}
+            }
         }
         power{
             gigawatt{
@@ -1923,8 +2016,8 @@
             }
             fahrenheit{
                 dnam{"°F"}
-                one{"{0}°F"}
-                other{"{0}°F"}
+                one{"{0} °F"}
+                other{"{0} °F"}
             }
             generic{
                 dnam{"°"}
@@ -1984,11 +2077,36 @@
                 one{"{0} Cup"}
                 other{"{0} Cups"}
             }
+            cup-metric{
+                dnam{"Ta"}
+                one{"{0} Ta"}
+                other{"{0} Ta"}
+            }
             deciliter{
                 dnam{"dl"}
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"DL"}
+                one{"{0} DL"}
+                other{"{0} DL"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Imp. DL"}
+                one{"{0} Imp. DL"}
+                other{"{0} Imp. DL"}
+            }
+            dram{
+                dnam{"Flüssigdram"}
+                one{"{0} Fl.-Dram"}
+                other{"{0} Fl.-Dram"}
+            }
+            drop{
+                dnam{"Trpf."}
+                one{"{0} Trpf."}
+                other{"{0} Trpf."}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -2010,6 +2128,11 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"Jigger"}
+                one{"{0} Jigger"}
+                other{"{0} Jigger"}
+            }
             liter{
                 dnam{"Liter"}
             }
@@ -2023,10 +2146,20 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"Prise"}
+                one{"{0} Pr."}
+                other{"{0} Pr"}
+            }
             quart{
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"qt Imp"}
+                one{"{0} qt Imp."}
+                other{"{0} qt Imp."}
+            }
             tablespoon{
                 dnam{"EL"}
                 one{"{0} EL"}
diff --git a/icu4c/source/data/unit/de_CH.txt b/icu4c/source/data/unit/de_CH.txt
index 63229f0..5204ea4 100644
--- a/icu4c/source/data/unit/de_CH.txt
+++ b/icu4c/source/data/unit/de_CH.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de_CH{
-    Version{"37"}
     units{
         area{
             square-foot{
@@ -23,6 +23,11 @@
                 per{"{0} pro Fuss"}
             }
         }
+        mass{
+            grain{
+                dnam{"Messerspitze"}
+            }
+        }
         volume{
             cubic-foot{
                 dnam{"Kubikfuss"}
@@ -34,6 +39,9 @@
                 other{"{0} gal Imp."}
                 per{"{0}/gal Imp."}
             }
+            jigger{
+                dnam{"Schuss"}
+            }
         }
     }
     unitsShort{
@@ -42,12 +50,32 @@
                 dnam{"Fuss"}
             }
         }
+        mass{
+            grain{
+                dnam{"Messerspitze"}
+                other{"{0} Msp."}
+            }
+        }
         volume{
+            dram{
+                dnam{"Dram"}
+                one{"{0} dr."}
+                other{"{0} dr."}
+            }
             gallon-imperial{
                 one{"{0} gal Imp."}
                 other{"{0} gal Imp."}
                 per{"{0}/gal Imp."}
             }
+            jigger{
+                dnam{"Schuss"}
+                one{"Schuss"}
+                other{"{0} Schuss"}
+            }
+            pinch{
+                one{"{0} Prise"}
+                other{"{0} Prise"}
+            }
         }
     }
 }
diff --git a/icu4c/source/data/unit/dje.txt b/icu4c/source/data/unit/dje.txt
index 63575f5..acff366 100644
--- a/icu4c/source/data/unit/dje.txt
+++ b/icu4c/source/data/unit/dje.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dje{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/doi.txt b/icu4c/source/data/unit/doi.txt
new file mode 100644
index 0000000..42db246
--- /dev/null
+++ b/icu4c/source/data/unit/doi.txt
@@ -0,0 +1,10 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+doi{
+    durationUnits{
+        hm{"h:mm"}
+        hms{"h:mm:ss"}
+        ms{"m:ss"}
+    }
+}
diff --git a/icu4c/source/data/unit/dsb.txt b/icu4c/source/data/unit/dsb.txt
index 2edee14..1ace4af 100644
--- a/icu4c/source/data/unit/dsb.txt
+++ b/icu4c/source/data/unit/dsb.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dsb{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/dua.txt b/icu4c/source/data/unit/dua.txt
index ba39bd9..bf646aa 100644
--- a/icu4c/source/data/unit/dua.txt
+++ b/icu4c/source/data/unit/dua.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dua{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/dyo.txt b/icu4c/source/data/unit/dyo.txt
index d9da7c4..5fbeb3b 100644
--- a/icu4c/source/data/unit/dyo.txt
+++ b/icu4c/source/data/unit/dyo.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dyo{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/dz.txt b/icu4c/source/data/unit/dz.txt
index 1cc6edf..1135053 100644
--- a/icu4c/source/data/unit/dz.txt
+++ b/icu4c/source/data/unit/dz.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dz{
-    Version{"37"}
     units{
         duration{
             day{
diff --git a/icu4c/source/data/unit/ebu.txt b/icu4c/source/data/unit/ebu.txt
index bfefc79..510053d 100644
--- a/icu4c/source/data/unit/ebu.txt
+++ b/icu4c/source/data/unit/ebu.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ebu{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/ee.txt b/icu4c/source/data/unit/ee.txt
index c5711ef..defc600 100644
--- a/icu4c/source/data/unit/ee.txt
+++ b/icu4c/source/data/unit/ee.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ee{
-    Version{"37"}
     units{
         duration{
             day{
diff --git a/icu4c/source/data/unit/el.txt b/icu4c/source/data/unit/el.txt
index 227bbd4..15dcfb4 100644
--- a/icu4c/source/data/unit/el.txt
+++ b/icu4c/source/data/unit/el.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 el{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -369,7 +369,7 @@
             }
             therm-us{
                 dnam{"θερμικές μονάδες ΗΠΑ"}
-                one{"{0} θερμ. μονάδα ΗΠΑ"}
+                one{"{0} θερμική μονάδα ΗΠΑ"}
                 other{"{0} θερμικές μονάδες ΗΠΑ"}
             }
         }
@@ -408,6 +408,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"κουκκίδα"}
+                one{"{0} κουκκίδα"}
+                other{"{0} κουκκίδες"}
+            }
             dot-per-centimeter{
                 dnam{"κουκκίδες ανά εκατοστό"}
                 one{"{0} κουκκίδα ανά εκατοστό"}
@@ -461,12 +466,27 @@
                 one{"{0} δεκατόμετρο"}
                 other{"{0} δεκατόμετρα"}
             }
+            earth-radius{
+                dnam{"ακτίνα της Γης"}
+                one{"{0} ακτίνα της Γης"}
+                other{"{0} ακτίνες της Γης"}
+            }
+            fathom{
+                dnam{"οργιές"}
+                one{"{0} οργιά"}
+                other{"{0} οργιές"}
+            }
             foot{
                 dnam{"πόδια"}
                 one{"{0} πόδι"}
                 other{"{0} πόδια"}
                 per{"{0} ανά πόδι"}
             }
+            furlong{
+                dnam{"φέρλονγκ"}
+                one{"{0} φέρλονγκ"}
+                other{"{0} φέρλονγκ"}
+            }
             inch{
                 dnam{"ίντσες"}
                 one{"{0} ίντσα"}
@@ -545,6 +565,16 @@
             }
         }
         light{
+            candela{
+                dnam{"καντέλα"}
+                one{"{0} καντέλα"}
+                other{"{0} καντέλα"}
+            }
+            lumen{
+                dnam{"λούμεν"}
+                one{"{0} λούμεν"}
+                other{"{0} λούμεν"}
+            }
             lux{
                 dnam{"λουξ"}
                 one{"{0} λουξ"}
@@ -571,6 +601,11 @@
                 one{"{0} μάζα της Γης"}
                 other{"{0} μάζες της Γης"}
             }
+            grain{
+                dnam{"κόκκος"}
+                one{"{0} κόκκος"}
+                other{"{0} κόκκοι"}
+            }
             gram{
                 dnam{"γραμμάρια"}
                 one{"{0} γραμμάριο"}
@@ -584,9 +619,9 @@
                 per{"{0} ανά χιλιόγραμμο"}
             }
             metric-ton{
-                dnam{"μετρικοί τόνοι"}
-                one{"{0} μετρικός τόνος"}
-                other{"{0} μετρικοί τόνοι"}
+                dnam{"τόνοι"}
+                one{"{0} τόνος"}
+                other{"{0} τόνοι"}
             }
             microgram{
                 dnam{"μικρογραμμάρια"}
@@ -620,10 +655,15 @@
                 one{"{0} μάζα του Ήλιου"}
                 other{"{0} μάζες του Ήλιου"}
             }
+            stone{
+                dnam{"stone"}
+                one{"{0} stone"}
+                other{"{0} stone"}
+            }
             ton{
-                dnam{"τόνοι"}
-                one{"{0} τόνος"}
-                other{"{0} τόνοι"}
+                dnam{"τόνοι ΗΠΑ"}
+                one{"{0} τόνος ΗΠΑ"}
+                other{"{0} τόνοι ΗΠΑ"}
             }
         }
         power{
@@ -777,6 +817,11 @@
                 one{"{0} βαρέλι"}
                 other{"{0} βαρέλια"}
             }
+            bushel{
+                dnam{"μπούσελ"}
+                one{"{0} μπούσελ"}
+                other{"{0} μπούσελ"}
+            }
             centiliter{
                 dnam{"εκατοστόλιτρα"}
                 one{"{0} εκατοστόλιτρο"}
@@ -834,6 +879,26 @@
                 one{"{0} δεκατόλιτρο"}
                 other{"{0} δεκατόλιτρα"}
             }
+            dessert-spoon{
+                dnam{"κουταλιά φρούτου"}
+                one{"{0} κουταλιά φρούτου"}
+                other{"{0} κουταλιές φρούτου"}
+            }
+            dessert-spoon-imperial{
+                dnam{"αγγλοσαξονική κουταλιά φρούτου"}
+                one{"{0} αγγλοσαξονική κουταλιά φρούτου"}
+                other{"{0} αγγλοσαξονικές κουταλιές φρούτου"}
+            }
+            dram{
+                dnam{"δράμι"}
+                one{"{0} δράμι"}
+                other{"{0} δράμια"}
+            }
+            drop{
+                dnam{"σταγόνα"}
+                one{"{0} σταγόνα"}
+                other{"{0} σταγόνες"}
+            }
             fluid-ounce{
                 dnam{"ουγγιές όγκου"}
                 one{"{0} ουγγιά όγκου"}
@@ -861,6 +926,11 @@
                 one{"{0} εκτόλιτρο"}
                 other{"{0} εκτόλιτρα"}
             }
+            jigger{
+                dnam{"μεζούρα"}
+                one{"{0} μεζούρα"}
+                other{"{0} μεζούρες"}
+            }
             liter{
                 dnam{"λίτρα"}
                 one{"{0} λίτρο"}
@@ -877,6 +947,11 @@
                 one{"{0} χιλιοστόλιτρο"}
                 other{"{0} χιλιοστόλιτρα"}
             }
+            pinch{
+                dnam{"πρέζα"}
+                one{"{0} πρέζα"}
+                other{"{0} πρέζες"}
+            }
             pint{
                 dnam{"πίντες"}
                 one{"{0} πίντα"}
@@ -892,6 +967,11 @@
                 one{"{0} τέταρτο του γαλονιού"}
                 other{"{0} τέταρτα του γαλονιού"}
             }
+            quart-imperial{
+                dnam{"αγγλοσαξονικά τέταρτα του γαλονιού"}
+                one{"{0} αγγλοσαξονικό τέταρτο του γαλονιού"}
+                other{"{0} αγγλοσαξονικά τέταρτα του γαλονιού"}
+            }
             tablespoon{
                 dnam{"κουταλιές της σούπας"}
                 one{"{0} κουταλιά της σούπας"}
@@ -1287,7 +1367,7 @@
                 other{"{0}‰"}
             }
             permillion{
-                dnam{"ppm"}
+                dnam{"μέρη/εκατ."}
                 one{"{0} ppm"}
                 other{"{0} ppm"}
             }
@@ -1551,6 +1631,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"κουκ."}
+                one{"{0} κουκ."}
+                other{"{0} κουκ."}
+            }
             megapixel{
                 dnam{"megapixel"}
             }
@@ -1572,12 +1657,27 @@
                 one{"{0} δεκ."}
                 other{"{0} δεκ."}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                one{"{0} R⊕"}
+                other{"{0} R⊕"}
+            }
+            fathom{
+                dnam{"οργιές"}
+                one{"{0} οργ."}
+                other{"{0} οργ."}
+            }
             foot{
                 dnam{"πόδια"}
                 one{"{0} πδ"}
                 other{"{0} πδ"}
                 per{"{0}/πδ"}
             }
+            furlong{
+                dnam{"φέρλ."}
+                one{"{0} φέρλ."}
+                other{"{0} φέρλ."}
+            }
             inch{
                 dnam{"ίντσες"}
                 one{"{0} ίν."}
@@ -1656,6 +1756,16 @@
             }
         }
         light{
+            candela{
+                dnam{"καντ."}
+                one{"{0} καντ."}
+                other{"{0} καντ."}
+            }
+            lumen{
+                dnam{"λμ"}
+                one{"{0} λμ."}
+                other{"{0} λμ."}
+            }
             lux{
                 dnam{"λουξ"}
                 one{"{0} λουξ"}
@@ -1683,6 +1793,11 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"κόκ."}
+                one{"{0} κόκ."}
+                other{"{0} κόκ."}
+            }
             gram{
                 dnam{"γραμμ."}
                 one{"{0} γρ."}
@@ -1696,9 +1811,9 @@
                 per{"{0}/κιλό"}
             }
             metric-ton{
-                dnam{"μ.τ."}
-                one{"{0} μ.τ."}
-                other{"{0} μ.τ."}
+                dnam{"τ."}
+                one{"{0} τ."}
+                other{"{0} τ."}
             }
             microgram{
                 dnam{"µg"}
@@ -1732,10 +1847,14 @@
                 one{"{0} M☉"}
                 other{"{0} M☉"}
             }
+            stone{
+                one{"{0} st"}
+                other{"{0} st"}
+            }
             ton{
-                dnam{"τόνοι"}
-                one{"{0} τ."}
-                other{"{0} τ."}
+                dnam{"τόνοι ΗΠΑ"}
+                one{"{0} τ. ΗΠΑ"}
+                other{"{0} τ. ΗΠΑ"}
             }
         }
         power{
@@ -1888,6 +2007,11 @@
                 one{"{0} βρλ"}
                 other{"{0} βρλ"}
             }
+            bushel{
+                dnam{"μπ."}
+                one{"{0} μπ."}
+                other{"{0} μπ."}
+            }
             centiliter{
                 dnam{"cL"}
                 one{"{0} cL"}
@@ -1945,6 +2069,26 @@
                 one{"{0} dL"}
                 other{"{0} dL"}
             }
+            dessert-spoon{
+                dnam{"κ.φρ."}
+                one{"{0} κ.φρ."}
+                other{"{0} κ.φρ."}
+            }
+            dessert-spoon-imperial{
+                dnam{"αγγλ. κουτ. φρ."}
+                one{"{0} αγγλ. κουτ. φρ."}
+                other{"{0} αγγλ. κουτ. φρ."}
+            }
+            dram{
+                dnam{"δράμι όγκου"}
+                one{"{0} δρ. όγκου"}
+                other{"{0} δρ. όγκου"}
+            }
+            drop{
+                dnam{"σταγ."}
+                one{"{0} σταγ."}
+                other{"{0} σταγ."}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -1972,6 +2116,11 @@
                 one{"{0} hL"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"μεζ."}
+                one{"{0} μεζ."}
+                other{"{0} μεζ."}
+            }
             liter{
                 dnam{"λίτρα"}
                 one{"{0} λίτ."}
@@ -1988,6 +2137,11 @@
                 one{"{0} mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"πρ."}
+                one{"{0} πρ."}
+                other{"{0} πρ."}
+            }
             pint{
                 dnam{"πίντες"}
                 one{"{0} πντ"}
@@ -2003,6 +2157,11 @@
                 one{"{0} τέτ. γαλ."}
                 other{"{0} τέτ. γαλ."}
             }
+            quart-imperial{
+                dnam{"αγγλ. τέτ. γαλ."}
+                one{"{0} αγγλ. τέτ. γαλ."}
+                other{"{0} αγγλ. τέτ. γαλ."}
+            }
             tablespoon{
                 dnam{"κ.σ."}
                 one{"{0} κ.σ."}
diff --git a/icu4c/source/data/unit/en.txt b/icu4c/source/data/unit/en.txt
index 3c42afb..abae139 100644
--- a/icu4c/source/data/unit/en.txt
+++ b/icu4c/source/data/unit/en.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en{
-    Version{"37"}
     units{
         acceleration{
             g-force{
@@ -101,6 +101,7 @@
         }
         compound{
             per{"{0} per {1}"}
+            times{"{0}-{1}"}
         }
         concentr{
             karat{
@@ -403,6 +404,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"dot"}
+                one{"{0} dot"}
+                other{"{0} dot"}
+            }
             dot-per-centimeter{
                 dnam{"dots per centimeter"}
                 one{"{0} dot per centimeter"}
@@ -456,6 +462,11 @@
                 one{"{0} decimeter"}
                 other{"{0} decimeters"}
             }
+            earth-radius{
+                dnam{"earth radius"}
+                one{"{0} earth radius"}
+                other{"{0} earth radius"}
+            }
             fathom{
                 dnam{"fathoms"}
                 one{"{0} fathom"}
@@ -552,6 +563,16 @@
             }
         }
         light{
+            candela{
+                dnam{"candela"}
+                one{"{0} candela"}
+                other{"{0} candela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                one{"{0} lumen"}
+                other{"{0} lumen"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
@@ -579,6 +600,11 @@
                 one{"{0} Earth mass"}
                 other{"{0} Earth masses"}
             }
+            grain{
+                dnam{"grain"}
+                one{"{0} grain"}
+                other{"{0} grain"}
+            }
             gram{
                 dnam{"grams"}
                 one{"{0} gram"}
@@ -718,9 +744,9 @@
                 other{"{0} pascals"}
             }
             pound-force-per-square-inch{
-                dnam{"pounds per square inch"}
-                one{"{0} pound per square inch"}
-                other{"{0} pounds per square inch"}
+                dnam{"pounds-force per square inch"}
+                one{"{0} pound-force per square inch"}
+                other{"{0} pounds-force per square inch"}
             }
         }
         speed{
@@ -771,7 +797,7 @@
             pound-force-foot{
                 dnam{"pound-feet"}
                 one{"{0} pound-force-foot"}
-                other{"{0} pound-feet"}
+                other{"{0} pound-force-feet"}
             }
         }
         volume{
@@ -847,6 +873,26 @@
                 one{"{0} deciliter"}
                 other{"{0} deciliters"}
             }
+            dessert-spoon{
+                dnam{"dessert spoon"}
+                one{"{0} dessert spoon"}
+                other{"{0} dessert spoon"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Imp. dessert spoon"}
+                one{"{0} Imp. dessert spoon"}
+                other{"{0} Imp. dessert spoon"}
+            }
+            dram{
+                dnam{"dram"}
+                one{"{0} dram"}
+                other{"{0} dram"}
+            }
+            drop{
+                dnam{"drop"}
+                one{"{0} drop"}
+                other{"{0} drop"}
+            }
             fluid-ounce{
                 dnam{"fluid ounces"}
                 one{"{0} fluid ounce"}
@@ -874,6 +920,11 @@
                 one{"{0} hectoliter"}
                 other{"{0} hectoliters"}
             }
+            jigger{
+                dnam{"jigger"}
+                one{"{0} jigger"}
+                other{"{0} jigger"}
+            }
             liter{
                 dnam{"liters"}
                 one{"{0} liter"}
@@ -890,6 +941,11 @@
                 one{"{0} milliliter"}
                 other{"{0} milliliters"}
             }
+            pinch{
+                dnam{"pinch"}
+                one{"{0} pinch"}
+                other{"{0} pinch"}
+            }
             pint{
                 dnam{"pints"}
                 one{"{0} pint"}
@@ -905,6 +961,11 @@
                 one{"{0} quart"}
                 other{"{0} quarts"}
             }
+            quart-imperial{
+                dnam{"Imp. quart"}
+                one{"{0} Imp. quart"}
+                other{"{0} Imp. quart"}
+            }
             tablespoon{
                 dnam{"tablespoons"}
                 one{"{0} tablespoon"}
@@ -1089,52 +1150,52 @@
                 other{"{0}bit"}
             }
             byte{
-                dnam{"byte"}
+                dnam{"B"}
                 one{"{0}B"}
                 other{"{0}B"}
             }
             gigabit{
-                dnam{"Gbit"}
+                dnam{"Gb"}
                 one{"{0}Gb"}
                 other{"{0}Gb"}
             }
             gigabyte{
-                dnam{"GByte"}
+                dnam{"GB"}
                 one{"{0}GB"}
                 other{"{0}GB"}
             }
             kilobit{
-                dnam{"kbit"}
+                dnam{"kb"}
                 one{"{0}kb"}
                 other{"{0}kb"}
             }
             kilobyte{
-                dnam{"kByte"}
+                dnam{"kB"}
                 one{"{0}kB"}
                 other{"{0}kB"}
             }
             megabit{
-                dnam{"Mbit"}
+                dnam{"Mb"}
                 one{"{0}Mb"}
                 other{"{0}Mb"}
             }
             megabyte{
-                dnam{"MByte"}
+                dnam{"MB"}
                 one{"{0}MB"}
                 other{"{0}MB"}
             }
             petabyte{
-                dnam{"PByte"}
+                dnam{"PB"}
                 one{"{0}PB"}
                 other{"{0}PB"}
             }
             terabit{
-                dnam{"Tbit"}
+                dnam{"Tb"}
                 one{"{0}Tb"}
                 other{"{0}Tb"}
             }
             terabyte{
-                dnam{"TByte"}
+                dnam{"TB"}
                 one{"{0}TB"}
                 other{"{0}TB"}
             }
@@ -1305,6 +1366,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"dot"}
+                one{"{0}dot"}
+                other{"{0}dot"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 one{"{0}dpcm"}
@@ -1357,6 +1423,11 @@
                 one{"{0}dm"}
                 other{"{0}dm"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                one{"{0}R⊕"}
+                other{"{0}R⊕"}
+            }
             fathom{
                 dnam{"fathom"}
                 one{"{0}fth"}
@@ -1449,6 +1520,16 @@
             }
         }
         light{
+            candela{
+                dnam{"cd"}
+                one{"{0}cd"}
+                other{"{0}cd"}
+            }
+            lumen{
+                dnam{"lm"}
+                one{"{0}lm"}
+                other{"{0}lm"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0}lx"}
@@ -1476,6 +1557,11 @@
                 one{"{0}M⊕"}
                 other{"{0}M⊕"}
             }
+            grain{
+                dnam{"gr"}
+                one{"{0}gr"}
+                other{"{0}gr"}
+            }
             gram{
                 dnam{"gram"}
                 one{"{0}g"}
@@ -1740,6 +1826,26 @@
                 one{"{0}dL"}
                 other{"{0}dL"}
             }
+            dessert-spoon{
+                dnam{"dsp"}
+                one{"{0}dsp"}
+                other{"{0}dsp"}
+            }
+            dessert-spoon-imperial{
+                dnam{"dsp Imp"}
+                one{"{0}dsp-Imp"}
+                other{"{0}dsp-Imp"}
+            }
+            dram{
+                dnam{"fl.dr."}
+                one{"{0}fl.dr."}
+                other{"{0}fl.dr."}
+            }
+            drop{
+                dnam{"dr"}
+                one{"{0}dr"}
+                other{"{0}dr"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0}fl oz"}
@@ -1767,6 +1873,11 @@
                 one{"{0}hL"}
                 other{"{0}hL"}
             }
+            jigger{
+                dnam{"jigger"}
+                one{"{0}jigger"}
+                other{"{0}jigger"}
+            }
             liter{
                 dnam{"liter"}
                 one{"{0}L"}
@@ -1783,6 +1894,11 @@
                 one{"{0}mL"}
                 other{"{0}mL"}
             }
+            pinch{
+                dnam{"pn"}
+                one{"{0}pn"}
+                other{"{0}pn"}
+            }
             pint{
                 dnam{"pt"}
                 one{"{0}pt"}
@@ -1798,6 +1914,11 @@
                 one{"{0}qt"}
                 other{"{0}qt"}
             }
+            quart-imperial{
+                dnam{"qt Imp"}
+                one{"{0}qt-Imp."}
+                other{"{0}qt-Imp."}
+            }
             tablespoon{
                 dnam{"tbsp"}
                 one{"{0}tbsp"}
diff --git a/icu4c/source/data/unit/en_001.txt b/icu4c/source/data/unit/en_001.txt
index 5fc1b2c..a457b4b 100644
--- a/icu4c/source/data/unit/en_001.txt
+++ b/icu4c/source/data/unit/en_001.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_001{
-    Version{"37"}
     units{
         acceleration{
             meter-per-square-second{
@@ -79,7 +79,15 @@
                 other{"{0} miles per gallon"}
             }
         }
+        energy{
+            kilowatt-hour{
+                one{"{0} kilowatt-hour"}
+            }
+        }
         graphics{
+            dot{
+                other{"{0} dots"}
+            }
             dot-per-centimeter{
                 dnam{"dots per centimetre"}
                 one{"{0} dot per centimetre"}
@@ -103,6 +111,9 @@
                 one{"{0} decimetre"}
                 other{"{0} decimetres"}
             }
+            earth-radius{
+                other{"{0} earth radii"}
+            }
             kilometer{
                 dnam{"kilometres"}
                 one{"{0} kilometre"}
@@ -120,6 +131,11 @@
                 one{"{0} micrometre"}
                 other{"{0} micrometres"}
             }
+            mile-scandinavian{
+                dnam{"Scandinavian mile"}
+                one{"{0} Scandinavian mile"}
+                other{"{0} Scandinavian miles"}
+            }
             millimeter{
                 dnam{"millimetres"}
                 one{"{0} millimetre"}
@@ -136,7 +152,18 @@
                 other{"{0} picometres"}
             }
         }
+        light{
+            candela{
+                other{"{0} candelas"}
+            }
+            lumen{
+                other{"{0} lumens"}
+            }
+        }
         mass{
+            grain{
+                other{"{0} grains"}
+            }
             metric-ton{
                 dnam{"tonnes"}
                 one{"{0} tonne"}
@@ -168,6 +195,9 @@
             }
         }
         temperature{
+            generic{
+                dnam{"degree"}
+            }
             kelvin{
                 dnam{"kelvin"}
                 one{"{0} kelvin"}
@@ -209,6 +239,22 @@
                 one{"{0} decilitre"}
                 other{"{0} decilitres"}
             }
+            dessert-spoon{
+                dnam{"US dessertspoon"}
+                one{"{0} US dessertspoon"}
+                other{"{0} US dessertspoons"}
+            }
+            dessert-spoon-imperial{
+                dnam{"dessertspoon"}
+                one{"{0} dessertspoon"}
+                other{"{0} dessertspoons"}
+            }
+            dram{
+                other{"{0} drams"}
+            }
+            drop{
+                other{"{0} drops"}
+            }
             fluid-ounce{
                 dnam{"US fluid ounces"}
                 one{"{0} US fluid ounce"}
@@ -231,6 +277,9 @@
                 one{"{0} hectolitre"}
                 other{"{0} hectolitres"}
             }
+            jigger{
+                other{"{0} jiggers"}
+            }
             liter{
                 dnam{"litres"}
                 one{"{0} litre"}
@@ -247,6 +296,19 @@
                 one{"{0} millilitre"}
                 other{"{0} millilitres"}
             }
+            pinch{
+                other{"{0} pinches"}
+            }
+            quart{
+                dnam{"US quarts"}
+                one{"{0} US quart"}
+                other{"{0} US quarts"}
+            }
+            quart-imperial{
+                dnam{"quart"}
+                one{"{0} quart"}
+                other{"{0} quarts"}
+            }
         }
     }
     unitsNarrow{
@@ -304,6 +366,9 @@
             kilometer-per-hour{
                 dnam{"km/h"}
             }
+            mile-per-hour{
+                dnam{"mph"}
+            }
         }
         temperature{
             celsius{
@@ -367,6 +432,11 @@
                 dnam{"metres/sec²"}
             }
         }
+        angle{
+            revolution{
+                other{"{0} revs"}
+            }
+        }
         area{
             square-meter{
                 dnam{"metres²"}
@@ -384,7 +454,7 @@
                 other{"{0} mg/dl"}
             }
             millimole-per-liter{
-                dnam{"millimol/litre"}
+                dnam{"millimole/litre"}
                 one{"{0} mmol/l"}
                 other{"{0} mmol/l"}
             }
@@ -407,7 +477,7 @@
                 other{"{0} l/km"}
             }
             mile-per-gallon{
-                dnam{"miles/gal US"}
+                dnam{"miles/US gal"}
                 one{"{0} mpg US"}
                 other{"{0} mpg US"}
             }
@@ -422,6 +492,11 @@
                 one{"{0} hr"}
                 other{"{0} hrs"}
             }
+            microsecond{
+                dnam{"μsecs"}
+                one{"{0} μs"}
+                other{"{0} μs"}
+            }
             minute{
                 one{"{0} min"}
                 other{"{0} mins"}
@@ -431,6 +506,12 @@
                 other{"{0} secs"}
             }
         }
+        graphics{
+            dot{
+                one{"{0} dot"}
+                other{"{0} dots"}
+            }
+        }
         length{
             meter{
                 dnam{"metres"}
@@ -440,15 +521,18 @@
             }
         }
         mass{
+            carat{
+                one{"{0} ct"}
+                other{"{0} ct"}
+            }
+            grain{
+                one{"{0} grains"}
+                other{"{0} grains"}
+            }
             stone{
                 dnam{"stone"}
             }
         }
-        pressure{
-            inch-ofhg{
-                dnam{"inHG"}
-            }
-        }
         speed{
             meter-per-second{
                 dnam{"metres/sec"}
@@ -465,6 +549,25 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"US dstspn"}
+                one{"{0} US dstspn"}
+                other{"{0} US dstspn"}
+            }
+            dessert-spoon-imperial{
+                dnam{"dstspn"}
+                one{"{0} dstspn"}
+                other{"{0} dstspn"}
+            }
+            dram{
+                dnam{"dram"}
+                one{"{0} dram"}
+                other{"{0} drams"}
+            }
+            drop{
+                one{"{0} drops"}
+                other{"{0} drops"}
+            }
             fluid-ounce{
                 dnam{"US fl oz"}
                 one{"{0} US fl oz"}
@@ -472,8 +575,9 @@
             }
             gallon{
                 dnam{"US gal"}
-                one{"{0} gal US"}
-                other{"{0} gal US"}
+                one{"{0} US gal"}
+                other{"{0} US gal"}
+                per{"{0}/US gal"}
             }
             gallon-imperial{
                 dnam{"gal"}
@@ -486,6 +590,9 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                other{"{0} jiggers"}
+            }
             liter{
                 dnam{"litres"}
                 one{"{0} l"}
@@ -502,6 +609,20 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                one{"{0} pinches"}
+                other{"{0} pinches"}
+            }
+            quart{
+                dnam{"US qts"}
+                one{"{0} US qt"}
+                other{"{0} US qt"}
+            }
+            quart-imperial{
+                dnam{"qt"}
+                one{"{0} qt"}
+                other{"{0} qt"}
+            }
         }
     }
 }
diff --git a/icu4c/source/data/unit/en_150.txt b/icu4c/source/data/unit/en_150.txt
index 5a9d0dd..a616e24 100644
--- a/icu4c/source/data/unit/en_150.txt
+++ b/icu4c/source/data/unit/en_150.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_150{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_AG.txt b/icu4c/source/data/unit/en_AG.txt
index 15f4f3b..95a979e 100644
--- a/icu4c/source/data/unit/en_AG.txt
+++ b/icu4c/source/data/unit/en_AG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_AI.txt b/icu4c/source/data/unit/en_AI.txt
index ec4deb2..e1cf751 100644
--- a/icu4c/source/data/unit/en_AI.txt
+++ b/icu4c/source/data/unit/en_AI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AI{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_AT.txt b/icu4c/source/data/unit/en_AT.txt
index e4a6465..075c742 100644
--- a/icu4c/source/data/unit/en_AT.txt
+++ b/icu4c/source/data/unit/en_AT.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AT{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_AU.txt b/icu4c/source/data/unit/en_AU.txt
index 288edc6..2be16c2 100644
--- a/icu4c/source/data/unit/en_AU.txt
+++ b/icu4c/source/data/unit/en_AU.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AU{
     %%Parent{"en_001"}
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -37,11 +37,16 @@
                 other{"{0} tonnes"}
             }
         }
+        pressure{
+            pound-force-per-square-inch{
+                dnam{"pounds per square inch"}
+                one{"{0} pound per square inch"}
+                other{"{0} pounds per square inch"}
+            }
+        }
         temperature{
             generic{
                 dnam{"degrees"}
-                one{"{0} degree"}
-                other{"{0} degrees"}
             }
         }
         volume{
@@ -100,11 +105,6 @@
                 one{"{0} km/h"}
                 other{"{0} km/h"}
             }
-            mile-per-hour{
-                dnam{"m.p.h."}
-                one{"{0} m.p.h."}
-                other{"{0} m.p.h."}
-            }
         }
         temperature{
             celsius{
@@ -207,9 +207,6 @@
                 one{"{0} C."}
                 other{"{0} C."}
             }
-            hour{
-                per{"{0} phr"}
-            }
             microsecond{
                 dnam{"μsec."}
             }
@@ -219,20 +216,16 @@
             minute{
                 dnam{"min."}
                 one{"{0} min."}
-                other{"{0} min."}
+                other{"{0} mins"}
                 per{"{0}/min."}
             }
-            month{
-                one{"{0} m."}
-                other{"{0} m."}
-            }
             nanosecond{
                 dnam{"nanosec."}
             }
             second{
                 dnam{"sec."}
                 one{"{0} sec."}
-                other{"{0} sec."}
+                other{"{0} secs"}
                 per{"{0} ps."}
             }
         }
@@ -284,10 +277,6 @@
                 one{"{0} m/s."}
                 other{"{0} m/s."}
             }
-            mile-per-hour{
-                one{"{0} m.p.h."}
-                other{"{0} m.p.h."}
-            }
         }
         temperature{
             generic{
diff --git a/icu4c/source/data/unit/en_BB.txt b/icu4c/source/data/unit/en_BB.txt
index 814000f..d62d192 100644
--- a/icu4c/source/data/unit/en_BB.txt
+++ b/icu4c/source/data/unit/en_BB.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BB{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_BE.txt b/icu4c/source/data/unit/en_BE.txt
index ded6405..0e5fffa 100644
--- a/icu4c/source/data/unit/en_BE.txt
+++ b/icu4c/source/data/unit/en_BE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BE{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_BM.txt b/icu4c/source/data/unit/en_BM.txt
index 1f9a62c..d45a1f9 100644
--- a/icu4c/source/data/unit/en_BM.txt
+++ b/icu4c/source/data/unit/en_BM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_BS.txt b/icu4c/source/data/unit/en_BS.txt
index a4d4410..2bda4e8 100644
--- a/icu4c/source/data/unit/en_BS.txt
+++ b/icu4c/source/data/unit/en_BS.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BS{
     %%Parent{"en_001"}
-    Version{"37"}
     unitsNarrow{
         temperature{
             celsius{
diff --git a/icu4c/source/data/unit/en_BW.txt b/icu4c/source/data/unit/en_BW.txt
index 611516b..ab8bf09 100644
--- a/icu4c/source/data/unit/en_BW.txt
+++ b/icu4c/source/data/unit/en_BW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_BZ.txt b/icu4c/source/data/unit/en_BZ.txt
index bf7b181..f2706e1 100644
--- a/icu4c/source/data/unit/en_BZ.txt
+++ b/icu4c/source/data/unit/en_BZ.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BZ{
     %%Parent{"en_001"}
-    Version{"37"}
     unitsNarrow{
         temperature{
             celsius{
diff --git a/icu4c/source/data/unit/en_CA.txt b/icu4c/source/data/unit/en_CA.txt
index 9a4b09f..1be7f23 100644
--- a/icu4c/source/data/unit/en_CA.txt
+++ b/icu4c/source/data/unit/en_CA.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CA{
     %%Parent{"en_001"}
-    Version{"37"}
     units{
         concentr{
             karat{
@@ -11,10 +11,23 @@
                 other{"{0} karats"}
             }
         }
-        energy{
-            kilowatt-hour{
-                one{"{0} kilowatt-hour"}
-                other{"{0} kilowatt-hours"}
+        graphics{
+            dot{
+                one{"{0} dot"}
+                other{"{0} dots"}
+            }
+        }
+        light{
+            candela{
+                dnam{"candelas"}
+            }
+            lumen{
+                dnam{"lumens"}
+            }
+        }
+        mass{
+            grain{
+                dnam{"grains"}
             }
         }
         torque{
@@ -25,11 +38,35 @@
             }
         }
         volume{
+            dram{
+                dnam{"fluid drams"}
+                one{"{0} fluid dram"}
+                other{"{0} fluid drams"}
+            }
+            drop{
+                dnam{"drops"}
+            }
+            fluid-ounce{
+                dnam{"fluid ounces"}
+                one{"{0} fluid ounce"}
+                other{"{0} fluid ounces"}
+            }
             fluid-ounce-imperial{
                 dnam{"imp. fluid ounces"}
                 one{"{0} imp. fluid ounce"}
                 other{"{0} imp. fluid ounces"}
             }
+            jigger{
+                dnam{"jiggers"}
+            }
+            pinch{
+                dnam{"pinches"}
+            }
+            quart-imperial{
+                dnam{"imp. quart"}
+                one{"{0} imp. quart"}
+                other{"{0} imp. quarts"}
+            }
         }
     }
     unitsNarrow{
@@ -84,7 +121,7 @@
                 other{"{0} m"}
             }
             second{
-                dnam{"s"}
+                dnam{"sec."}
                 one{"{0} sec."}
                 other{"{0} sec."}
             }
@@ -289,9 +326,9 @@
                 other{"{0} nanosec."}
             }
             second{
-                dnam{"secs."}
+                dnam{"sec."}
                 one{"{0} sec."}
-                other{"{0} secs."}
+                other{"{0} sec."}
                 per{"{0}/sec."}
             }
             week{
@@ -371,8 +408,9 @@
         mass{
             carat{
                 dnam{"ct"}
-                one{"{0} ct"}
-                other{"{0} ct"}
+            }
+            grain{
+                dnam{"grains"}
             }
             ounce{
                 dnam{"oz."}
@@ -406,8 +444,10 @@
             }
         }
         pressure{
-            inch-ofhg{
-                dnam{"inHg"}
+            millimeter-ofhg{
+                dnam{"mm Hg"}
+                one{"{0} mm Hg"}
+                other{"{0} mm Hg"}
             }
         }
         speed{
@@ -432,7 +472,7 @@
         }
         volume{
             acre-foot{
-                dnam{"acre ft."}
+                dnam{"ac. ft."}
                 one{"{0} ac. ft."}
                 other{"{0} ac. ft."}
             }
@@ -474,6 +514,24 @@
                 one{"{0} dL"}
                 other{"{0} dL"}
             }
+            dessert-spoon{
+                dnam{"dssp"}
+                one{"{0} dssp"}
+                other{"{0} dssp"}
+            }
+            dessert-spoon-imperial{
+                dnam{"imp. dssp"}
+                one{"{0} imp. dssp"}
+                other{"{0} imp. dssp"}
+            }
+            dram{
+                dnam{"fl. dr."}
+                one{"{0} fl. dr."}
+                other{"{0} fl. dr."}
+            }
+            drop{
+                dnam{"drops"}
+            }
             fluid-ounce{
                 dnam{"fl. oz."}
                 one{"{0} fl. oz."}
@@ -481,8 +539,8 @@
             }
             fluid-ounce-imperial{
                 dnam{"imp. fl. oz."}
-                one{"{0} fl. oz. imp."}
-                other{"{0} fl. oz. imp."}
+                one{"{0} imp. fl. oz."}
+                other{"{0} imp. fl. oz."}
             }
             gallon{
                 dnam{"US gal."}
@@ -501,6 +559,9 @@
                 one{"{0} hL"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"jiggers"}
+            }
             liter{
                 one{"{0} L"}
                 other{"{0} L"}
@@ -516,6 +577,9 @@
                 one{"{0} mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"pinches"}
+            }
             pint{
                 one{"{0} pt."}
                 other{"{0} pt."}
@@ -525,6 +589,11 @@
                 one{"{0} qt."}
                 other{"{0} qt."}
             }
+            quart-imperial{
+                dnam{"imp. qt."}
+                one{"{0} imp. qt."}
+                other{"{0} imp. qt."}
+            }
             tablespoon{
                 dnam{"tbsp."}
                 one{"{0} tbsp."}
diff --git a/icu4c/source/data/unit/en_CC.txt b/icu4c/source/data/unit/en_CC.txt
index bce9886..906cf1e 100644
--- a/icu4c/source/data/unit/en_CC.txt
+++ b/icu4c/source/data/unit/en_CC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_CH.txt b/icu4c/source/data/unit/en_CH.txt
index 244edf2..2362921 100644
--- a/icu4c/source/data/unit/en_CH.txt
+++ b/icu4c/source/data/unit/en_CH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CH{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_CK.txt b/icu4c/source/data/unit/en_CK.txt
index ad52b0e..dc1c065 100644
--- a/icu4c/source/data/unit/en_CK.txt
+++ b/icu4c/source/data/unit/en_CK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_CM.txt b/icu4c/source/data/unit/en_CM.txt
index bf63213..b7fdf6d 100644
--- a/icu4c/source/data/unit/en_CM.txt
+++ b/icu4c/source/data/unit/en_CM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_CX.txt b/icu4c/source/data/unit/en_CX.txt
index 702f22b..58ff415 100644
--- a/icu4c/source/data/unit/en_CX.txt
+++ b/icu4c/source/data/unit/en_CX.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CX{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_CY.txt b/icu4c/source/data/unit/en_CY.txt
index 21b11b7..d4e75c0 100644
--- a/icu4c/source/data/unit/en_CY.txt
+++ b/icu4c/source/data/unit/en_CY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CY{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_DE.txt b/icu4c/source/data/unit/en_DE.txt
index 2623614..0147e01 100644
--- a/icu4c/source/data/unit/en_DE.txt
+++ b/icu4c/source/data/unit/en_DE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DE{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_DG.txt b/icu4c/source/data/unit/en_DG.txt
index 95b8e88..10bd8d9 100644
--- a/icu4c/source/data/unit/en_DG.txt
+++ b/icu4c/source/data/unit/en_DG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_DK.txt b/icu4c/source/data/unit/en_DK.txt
index d98349b..d694bb0 100644
--- a/icu4c/source/data/unit/en_DK.txt
+++ b/icu4c/source/data/unit/en_DK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DK{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_DM.txt b/icu4c/source/data/unit/en_DM.txt
index 5bfedb7..224df76 100644
--- a/icu4c/source/data/unit/en_DM.txt
+++ b/icu4c/source/data/unit/en_DM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_ER.txt b/icu4c/source/data/unit/en_ER.txt
index afd82fc..a39df78 100644
--- a/icu4c/source/data/unit/en_ER.txt
+++ b/icu4c/source/data/unit/en_ER.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ER{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_FI.txt b/icu4c/source/data/unit/en_FI.txt
index ae4b517..0b93a7e 100644
--- a/icu4c/source/data/unit/en_FI.txt
+++ b/icu4c/source/data/unit/en_FI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FI{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_FJ.txt b/icu4c/source/data/unit/en_FJ.txt
index 0c4ca01..65b19ac 100644
--- a/icu4c/source/data/unit/en_FJ.txt
+++ b/icu4c/source/data/unit/en_FJ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FJ{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_FK.txt b/icu4c/source/data/unit/en_FK.txt
index 9c92bfd..1fca516 100644
--- a/icu4c/source/data/unit/en_FK.txt
+++ b/icu4c/source/data/unit/en_FK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_FM.txt b/icu4c/source/data/unit/en_FM.txt
index 352f324..ad38147 100644
--- a/icu4c/source/data/unit/en_FM.txt
+++ b/icu4c/source/data/unit/en_FM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_GB.txt b/icu4c/source/data/unit/en_GB.txt
index 6b7a4eb..cd1c2e8 100644
--- a/icu4c/source/data/unit/en_GB.txt
+++ b/icu4c/source/data/unit/en_GB.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GB{
     %%Parent{"en_001"}
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -18,19 +18,16 @@
         }
     }
     unitsShort{
-        duration{
-            microsecond{
-                dnam{"μsecs"}
-                one{"{0} μs"}
-                other{"{0} μs"}
-            }
-        }
         volume{
             fluid-ounce-imperial{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
                 other{"{0} fl oz"}
             }
+            jigger{
+                one{"{0} jigger"}
+                other{"{0} jiggers"}
+            }
         }
     }
 }
diff --git a/icu4c/source/data/unit/en_GD.txt b/icu4c/source/data/unit/en_GD.txt
index 98ca5e4..5aadd22 100644
--- a/icu4c/source/data/unit/en_GD.txt
+++ b/icu4c/source/data/unit/en_GD.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GD{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_GG.txt b/icu4c/source/data/unit/en_GG.txt
index 8bee533..6d63e55 100644
--- a/icu4c/source/data/unit/en_GG.txt
+++ b/icu4c/source/data/unit/en_GG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_GH.txt b/icu4c/source/data/unit/en_GH.txt
index de37150..8d0f240 100644
--- a/icu4c/source/data/unit/en_GH.txt
+++ b/icu4c/source/data/unit/en_GH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GH{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_GI.txt b/icu4c/source/data/unit/en_GI.txt
index 5afa54f..809590d 100644
--- a/icu4c/source/data/unit/en_GI.txt
+++ b/icu4c/source/data/unit/en_GI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GI{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_GM.txt b/icu4c/source/data/unit/en_GM.txt
index bbf424c..0f9710e 100644
--- a/icu4c/source/data/unit/en_GM.txt
+++ b/icu4c/source/data/unit/en_GM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_GY.txt b/icu4c/source/data/unit/en_GY.txt
index 905d5be..0e53543 100644
--- a/icu4c/source/data/unit/en_GY.txt
+++ b/icu4c/source/data/unit/en_GY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GY{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_HK.txt b/icu4c/source/data/unit/en_HK.txt
index 3eec8fe..f074e0c 100644
--- a/icu4c/source/data/unit/en_HK.txt
+++ b/icu4c/source/data/unit/en_HK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_HK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_IE.txt b/icu4c/source/data/unit/en_IE.txt
index 96feab5..1426a90 100644
--- a/icu4c/source/data/unit/en_IE.txt
+++ b/icu4c/source/data/unit/en_IE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IE{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_IL.txt b/icu4c/source/data/unit/en_IL.txt
index 2d32919..39fe763 100644
--- a/icu4c/source/data/unit/en_IL.txt
+++ b/icu4c/source/data/unit/en_IL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IL{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_IM.txt b/icu4c/source/data/unit/en_IM.txt
index 15a218b..d6e869d 100644
--- a/icu4c/source/data/unit/en_IM.txt
+++ b/icu4c/source/data/unit/en_IM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_IN.txt b/icu4c/source/data/unit/en_IN.txt
index 9ee6794..b52a7f8 100644
--- a/icu4c/source/data/unit/en_IN.txt
+++ b/icu4c/source/data/unit/en_IN.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IN{
     %%Parent{"en_001"}
-    Version{"37"}
     units{
         temperature{
             generic{
diff --git a/icu4c/source/data/unit/en_IO.txt b/icu4c/source/data/unit/en_IO.txt
index 5cd7210..5b70c5a 100644
--- a/icu4c/source/data/unit/en_IO.txt
+++ b/icu4c/source/data/unit/en_IO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IO{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_JE.txt b/icu4c/source/data/unit/en_JE.txt
index d8e0823..715ff18 100644
--- a/icu4c/source/data/unit/en_JE.txt
+++ b/icu4c/source/data/unit/en_JE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_JE{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_JM.txt b/icu4c/source/data/unit/en_JM.txt
index 695ae1a..08a5127 100644
--- a/icu4c/source/data/unit/en_JM.txt
+++ b/icu4c/source/data/unit/en_JM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_JM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_KE.txt b/icu4c/source/data/unit/en_KE.txt
index eecdd35..01411a3 100644
--- a/icu4c/source/data/unit/en_KE.txt
+++ b/icu4c/source/data/unit/en_KE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KE{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_KI.txt b/icu4c/source/data/unit/en_KI.txt
index 6c68a9f..8cd023d 100644
--- a/icu4c/source/data/unit/en_KI.txt
+++ b/icu4c/source/data/unit/en_KI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KI{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_KN.txt b/icu4c/source/data/unit/en_KN.txt
index 35ebc91..092c41e 100644
--- a/icu4c/source/data/unit/en_KN.txt
+++ b/icu4c/source/data/unit/en_KN.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KN{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_KY.txt b/icu4c/source/data/unit/en_KY.txt
index 1f707ee..311bc3a 100644
--- a/icu4c/source/data/unit/en_KY.txt
+++ b/icu4c/source/data/unit/en_KY.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KY{
     %%Parent{"en_001"}
-    Version{"37"}
     unitsNarrow{
         temperature{
             celsius{
diff --git a/icu4c/source/data/unit/en_LC.txt b/icu4c/source/data/unit/en_LC.txt
index 5e248ad..ce24452 100644
--- a/icu4c/source/data/unit/en_LC.txt
+++ b/icu4c/source/data/unit/en_LC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_LC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_LR.txt b/icu4c/source/data/unit/en_LR.txt
index 0a77adc..979fa99 100644
--- a/icu4c/source/data/unit/en_LR.txt
+++ b/icu4c/source/data/unit/en_LR.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_LR{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_LS.txt b/icu4c/source/data/unit/en_LS.txt
index 14848c9..bd1380c 100644
--- a/icu4c/source/data/unit/en_LS.txt
+++ b/icu4c/source/data/unit/en_LS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_LS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_MG.txt b/icu4c/source/data/unit/en_MG.txt
index 2f24348..8799b5b 100644
--- a/icu4c/source/data/unit/en_MG.txt
+++ b/icu4c/source/data/unit/en_MG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_MO.txt b/icu4c/source/data/unit/en_MO.txt
index 2cd5c0a..769b2ea 100644
--- a/icu4c/source/data/unit/en_MO.txt
+++ b/icu4c/source/data/unit/en_MO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MO{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_MS.txt b/icu4c/source/data/unit/en_MS.txt
index fbedac5..e0028aa 100644
--- a/icu4c/source/data/unit/en_MS.txt
+++ b/icu4c/source/data/unit/en_MS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_MT.txt b/icu4c/source/data/unit/en_MT.txt
index a3af927..a217827 100644
--- a/icu4c/source/data/unit/en_MT.txt
+++ b/icu4c/source/data/unit/en_MT.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MT{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_MU.txt b/icu4c/source/data/unit/en_MU.txt
index 1e67240..1a4260b 100644
--- a/icu4c/source/data/unit/en_MU.txt
+++ b/icu4c/source/data/unit/en_MU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MU{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_MW.txt b/icu4c/source/data/unit/en_MW.txt
index 0624454..1920911 100644
--- a/icu4c/source/data/unit/en_MW.txt
+++ b/icu4c/source/data/unit/en_MW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_MY.txt b/icu4c/source/data/unit/en_MY.txt
index ffd93f8..891c100 100644
--- a/icu4c/source/data/unit/en_MY.txt
+++ b/icu4c/source/data/unit/en_MY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MY{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_NA.txt b/icu4c/source/data/unit/en_NA.txt
index 0b019a8..c1a4e58 100644
--- a/icu4c/source/data/unit/en_NA.txt
+++ b/icu4c/source/data/unit/en_NA.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NA{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_NF.txt b/icu4c/source/data/unit/en_NF.txt
index e264ade..514d0d9 100644
--- a/icu4c/source/data/unit/en_NF.txt
+++ b/icu4c/source/data/unit/en_NF.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NF{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_NG.txt b/icu4c/source/data/unit/en_NG.txt
index 70db1db..c047e03 100644
--- a/icu4c/source/data/unit/en_NG.txt
+++ b/icu4c/source/data/unit/en_NG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_NH.txt b/icu4c/source/data/unit/en_NH.txt
index 958b96b..5dc995b 100644
--- a/icu4c/source/data/unit/en_NH.txt
+++ b/icu4c/source/data/unit/en_NH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NH{
     "%%ALIAS"{"en_VU"}
 }
diff --git a/icu4c/source/data/unit/en_NL.txt b/icu4c/source/data/unit/en_NL.txt
index 5b5436b..0b352bd 100644
--- a/icu4c/source/data/unit/en_NL.txt
+++ b/icu4c/source/data/unit/en_NL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NL{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_NR.txt b/icu4c/source/data/unit/en_NR.txt
index 4377e15..89304ca 100644
--- a/icu4c/source/data/unit/en_NR.txt
+++ b/icu4c/source/data/unit/en_NR.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NR{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_NU.txt b/icu4c/source/data/unit/en_NU.txt
index 56d9b22..830320b 100644
--- a/icu4c/source/data/unit/en_NU.txt
+++ b/icu4c/source/data/unit/en_NU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NU{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_NZ.txt b/icu4c/source/data/unit/en_NZ.txt
index ca3650e..63e43a3 100644
--- a/icu4c/source/data/unit/en_NZ.txt
+++ b/icu4c/source/data/unit/en_NZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NZ{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_PG.txt b/icu4c/source/data/unit/en_PG.txt
index ffddbf4..217c90f 100644
--- a/icu4c/source/data/unit/en_PG.txt
+++ b/icu4c/source/data/unit/en_PG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_PH.txt b/icu4c/source/data/unit/en_PH.txt
index 9657884..1b59777 100644
--- a/icu4c/source/data/unit/en_PH.txt
+++ b/icu4c/source/data/unit/en_PH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PH{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_PK.txt b/icu4c/source/data/unit/en_PK.txt
index 874a3ee..9093157 100644
--- a/icu4c/source/data/unit/en_PK.txt
+++ b/icu4c/source/data/unit/en_PK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_PN.txt b/icu4c/source/data/unit/en_PN.txt
index 7f93228..975dcb4 100644
--- a/icu4c/source/data/unit/en_PN.txt
+++ b/icu4c/source/data/unit/en_PN.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PN{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_PW.txt b/icu4c/source/data/unit/en_PW.txt
index 3a0ff85..01ae418 100644
--- a/icu4c/source/data/unit/en_PW.txt
+++ b/icu4c/source/data/unit/en_PW.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PW{
     %%Parent{"en_001"}
-    Version{"37"}
     unitsNarrow{
         temperature{
             celsius{
diff --git a/icu4c/source/data/unit/en_RH.txt b/icu4c/source/data/unit/en_RH.txt
index b60f708..24bad29 100644
--- a/icu4c/source/data/unit/en_RH.txt
+++ b/icu4c/source/data/unit/en_RH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_RH{
     "%%ALIAS"{"en_ZW"}
 }
diff --git a/icu4c/source/data/unit/en_RW.txt b/icu4c/source/data/unit/en_RW.txt
index bc32932..ea92ac1 100644
--- a/icu4c/source/data/unit/en_RW.txt
+++ b/icu4c/source/data/unit/en_RW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_RW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_SB.txt b/icu4c/source/data/unit/en_SB.txt
index 7e736c2..9907157 100644
--- a/icu4c/source/data/unit/en_SB.txt
+++ b/icu4c/source/data/unit/en_SB.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SB{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_SC.txt b/icu4c/source/data/unit/en_SC.txt
index df04930..9d503c4 100644
--- a/icu4c/source/data/unit/en_SC.txt
+++ b/icu4c/source/data/unit/en_SC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_SD.txt b/icu4c/source/data/unit/en_SD.txt
index f2110fa..ef3c460 100644
--- a/icu4c/source/data/unit/en_SD.txt
+++ b/icu4c/source/data/unit/en_SD.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SD{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_SE.txt b/icu4c/source/data/unit/en_SE.txt
index c2a72c0..ec7d34e 100644
--- a/icu4c/source/data/unit/en_SE.txt
+++ b/icu4c/source/data/unit/en_SE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SE{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_SG.txt b/icu4c/source/data/unit/en_SG.txt
index ddf857d..1f25c86 100644
--- a/icu4c/source/data/unit/en_SG.txt
+++ b/icu4c/source/data/unit/en_SG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_SH.txt b/icu4c/source/data/unit/en_SH.txt
index 0e6c3dc..09e4765 100644
--- a/icu4c/source/data/unit/en_SH.txt
+++ b/icu4c/source/data/unit/en_SH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SH{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_SI.txt b/icu4c/source/data/unit/en_SI.txt
index a69030e..6fb107a 100644
--- a/icu4c/source/data/unit/en_SI.txt
+++ b/icu4c/source/data/unit/en_SI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SI{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_SL.txt b/icu4c/source/data/unit/en_SL.txt
index b956002..c79ccc5 100644
--- a/icu4c/source/data/unit/en_SL.txt
+++ b/icu4c/source/data/unit/en_SL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SL{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_SS.txt b/icu4c/source/data/unit/en_SS.txt
index 80fb800..390a313 100644
--- a/icu4c/source/data/unit/en_SS.txt
+++ b/icu4c/source/data/unit/en_SS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_SX.txt b/icu4c/source/data/unit/en_SX.txt
index 28da271..11fa700 100644
--- a/icu4c/source/data/unit/en_SX.txt
+++ b/icu4c/source/data/unit/en_SX.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SX{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_SZ.txt b/icu4c/source/data/unit/en_SZ.txt
index 431d63a..7e9c97d 100644
--- a/icu4c/source/data/unit/en_SZ.txt
+++ b/icu4c/source/data/unit/en_SZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SZ{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_TC.txt b/icu4c/source/data/unit/en_TC.txt
index 4129b99..181633b 100644
--- a/icu4c/source/data/unit/en_TC.txt
+++ b/icu4c/source/data/unit/en_TC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_TK.txt b/icu4c/source/data/unit/en_TK.txt
index 11010f3..e50d572 100644
--- a/icu4c/source/data/unit/en_TK.txt
+++ b/icu4c/source/data/unit/en_TK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_TO.txt b/icu4c/source/data/unit/en_TO.txt
index 6b63ad2..d21d084 100644
--- a/icu4c/source/data/unit/en_TO.txt
+++ b/icu4c/source/data/unit/en_TO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TO{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_TT.txt b/icu4c/source/data/unit/en_TT.txt
index d91ebb5..d375378 100644
--- a/icu4c/source/data/unit/en_TT.txt
+++ b/icu4c/source/data/unit/en_TT.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TT{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_TV.txt b/icu4c/source/data/unit/en_TV.txt
index 2d0ae8f..6247752 100644
--- a/icu4c/source/data/unit/en_TV.txt
+++ b/icu4c/source/data/unit/en_TV.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TV{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_TZ.txt b/icu4c/source/data/unit/en_TZ.txt
index 2ff0cbd..2aa8e46 100644
--- a/icu4c/source/data/unit/en_TZ.txt
+++ b/icu4c/source/data/unit/en_TZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TZ{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_UG.txt b/icu4c/source/data/unit/en_UG.txt
index 7ad0d87..26ed28e 100644
--- a/icu4c/source/data/unit/en_UG.txt
+++ b/icu4c/source/data/unit/en_UG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_UG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_VC.txt b/icu4c/source/data/unit/en_VC.txt
index 45b455d..a018754 100644
--- a/icu4c/source/data/unit/en_VC.txt
+++ b/icu4c/source/data/unit/en_VC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_VG.txt b/icu4c/source/data/unit/en_VG.txt
index 3e84e30..1a001d0 100644
--- a/icu4c/source/data/unit/en_VG.txt
+++ b/icu4c/source/data/unit/en_VG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_VU.txt b/icu4c/source/data/unit/en_VU.txt
index 6229365..91d6b81 100644
--- a/icu4c/source/data/unit/en_VU.txt
+++ b/icu4c/source/data/unit/en_VU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VU{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_WS.txt b/icu4c/source/data/unit/en_WS.txt
index 5d2f739..f197bb1 100644
--- a/icu4c/source/data/unit/en_WS.txt
+++ b/icu4c/source/data/unit/en_WS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_WS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_XA.txt b/icu4c/source/data/unit/en_XA.txt
new file mode 100644
index 0000000..7d4af76
--- /dev/null
+++ b/icu4c/source/data/unit/en_XA.txt
@@ -0,0 +1,1928 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+en_XA{
+    units{
+        acceleration{
+            g-force{
+                dnam{"[ĝ‐ƒöŕçé one two]"}
+                one{"[{0} ĝ‐ƒöŕçé one two]"}
+                other{"[{0} ĝ‐ƒöŕçé one two]"}
+            }
+            meter-per-square-second{
+                dnam{"[ɱéţéŕš þéŕ šéçöñð šǫûåŕéð one two three]"}
+                one{"[{0} ɱéţéŕ þéŕ šéçöñð šǫûåŕéð one two three four]"}
+                other{"[{0} ɱéţéŕš þéŕ šéçöñð šǫûåŕéð one two three four]"}
+            }
+        }
+        angle{
+            arc-minute{
+                dnam{"[åŕçɱîñûţéš one two]"}
+                one{"[{0} åŕçɱîñûţé one two]"}
+                other{"[{0} åŕçɱîñûţéš one two]"}
+            }
+            arc-second{
+                dnam{"[åŕçšéçöñðš one two]"}
+                one{"[{0} åŕçšéçöñð one two]"}
+                other{"[{0} åŕçšéçöñðš one two]"}
+            }
+            degree{
+                dnam{"[ðéĝŕééš one two]"}
+                one{"[{0} ðéĝŕéé one two]"}
+                other{"[{0} ðéĝŕééš one two]"}
+            }
+            radian{
+                dnam{"[ŕåðîåñš one two]"}
+                one{"[{0} ŕåðîåñ one two]"}
+                other{"[{0} ŕåðîåñš one two]"}
+            }
+            revolution{
+                dnam{"[ŕéṽöļûţîöñ one two]"}
+                one{"[{0} ŕéṽöļûţîöñ one two]"}
+                other{"[{0} ŕéṽöļûţîöñš one two three]"}
+            }
+        }
+        area{
+            acre{
+                dnam{"[åçŕéš one]"}
+                one{"[{0} åçŕé one two]"}
+                other{"[{0} åçŕéš one two]"}
+            }
+            dunam{
+                dnam{"[ðûñåɱš one]"}
+                one{"[{0} ðûñåɱ one two]"}
+                other{"[{0} ðûñåɱš one two]"}
+            }
+            hectare{
+                dnam{"[ĥéçţåŕéš one two]"}
+                one{"[{0} ĥéçţåŕé one two]"}
+                other{"[{0} ĥéçţåŕéš one two]"}
+            }
+            square-centimeter{
+                dnam{"[šǫûåŕé çéñţîɱéţéŕš one two three]"}
+                one{"[{0} šǫûåŕé çéñţîɱéţéŕ one two three]"}
+                other{"[{0} šǫûåŕé çéñţîɱéţéŕš one two three]"}
+                per{"[{0} þéŕ šǫûåŕé çéñţîɱéţéŕ one two three]"}
+            }
+            square-foot{
+                dnam{"[šǫûåŕé ƒééţ one two]"}
+                one{"[{0} šǫûåŕé ƒööţ one two three]"}
+                other{"[{0} šǫûåŕé ƒééţ one two three]"}
+            }
+            square-inch{
+                dnam{"[šǫûåŕé îñçĥéš one two]"}
+                one{"[{0} šǫûåŕé îñçĥ one two three]"}
+                other{"[{0} šǫûåŕé îñçĥéš one two three]"}
+                per{"[{0} þéŕ šǫûåŕé îñçĥ one two three]"}
+            }
+            square-kilometer{
+                dnam{"[šǫûåŕé ķîļöɱéţéŕš one two three]"}
+                one{"[{0} šǫûåŕé ķîļöɱéţéŕ one two three]"}
+                other{"[{0} šǫûåŕé ķîļöɱéţéŕš one two three]"}
+                per{"[{0} þéŕ šǫûåŕé ķîļöɱéţéŕ one two three]"}
+            }
+            square-meter{
+                dnam{"[šǫûåŕé ɱéţéŕš one two]"}
+                one{"[{0} šǫûåŕé ɱéţéŕ one two three]"}
+                other{"[{0} šǫûåŕé ɱéţéŕš one two three]"}
+                per{"[{0} þéŕ šǫûåŕé ɱéţéŕ one two three]"}
+            }
+            square-mile{
+                dnam{"[šǫûåŕé ɱîļéš one two]"}
+                one{"[{0} šǫûåŕé ɱîļé one two three]"}
+                other{"[{0} šǫûåŕé ɱîļéš one two three]"}
+                per{"[{0} þéŕ šǫûåŕé ɱîļé one two three]"}
+            }
+            square-yard{
+                dnam{"[šǫûåŕé ýåŕðš one two]"}
+                one{"[{0} šǫûåŕé ýåŕð one two three]"}
+                other{"[{0} šǫûåŕé ýåŕðš one two three]"}
+            }
+        }
+        compound{
+            per{"[{0} þéŕ {1} one two]"}
+            times{"[{0}‐{1} one two]"}
+        }
+        concentr{
+            karat{
+                dnam{"[ķåŕåţš one]"}
+                one{"[{0} ķåŕåţ one two]"}
+                other{"[{0} ķåŕåţš one two]"}
+            }
+            milligram-per-deciliter{
+                dnam{"[ɱîļļîĝŕåɱš þéŕ ðéçîļîţéŕ one two three]"}
+                one{"[{0} ɱîļļîĝŕåɱ þéŕ ðéçîļîţéŕ one two three four]"}
+                other{"[{0} ɱîļļîĝŕåɱš þéŕ ðéçîļîţéŕ one two three four]"}
+            }
+            millimole-per-liter{
+                dnam{"[ɱîļļîɱöļéš þéŕ ļîţéŕ one two three]"}
+                one{"[{0} ɱîļļîɱöļé þéŕ ļîţéŕ one two three]"}
+                other{"[{0} ɱîļļîɱöļéš þéŕ ļîţéŕ one two three]"}
+            }
+            mole{
+                dnam{"[ɱöļéš one]"}
+                one{"[{0} ɱöļé one two]"}
+                other{"[{0} ɱöļéš one two]"}
+            }
+            percent{
+                dnam{"[þéŕçéñţ one two]"}
+                one{"[{0} þéŕçéñţ one two]"}
+                other{"[{0} þéŕçéñţ one two]"}
+            }
+            permille{
+                dnam{"[þéŕɱîļļé one two]"}
+                one{"[{0} þéŕɱîļļé one two]"}
+                other{"[{0} þéŕɱîļļé one two]"}
+            }
+            permillion{
+                dnam{"[þåŕţš þéŕ ɱîļļîöñ one two three]"}
+                one{"[{0} þåŕţ þéŕ ɱîļļîöñ one two three]"}
+                other{"[{0} þåŕţš þéŕ ɱîļļîöñ one two three]"}
+            }
+            permyriad{
+                dnam{"[þéŕɱýŕîåð one two]"}
+                one{"[{0} þéŕɱýŕîåð one two]"}
+                other{"[{0} þéŕɱýŕîåð one two]"}
+            }
+        }
+        consumption{
+            liter-per-100-kilometer{
+                dnam{"[ļîţéŕš þéŕ ①⓪⓪ ķîļöɱéţéŕš one two three]"}
+                one{"[{0} ļîţéŕ þéŕ ①⓪⓪ ķîļöɱéţéŕš one two three four]"}
+                other{"[{0} ļîţéŕš þéŕ ①⓪⓪ ķîļöɱéţéŕš one two three four]"}
+            }
+            liter-per-kilometer{
+                dnam{"[ļîţéŕš þéŕ ķîļöɱéţéŕ one two three]"}
+                one{"[{0} ļîţéŕ þéŕ ķîļöɱéţéŕ one two three]"}
+                other{"[{0} ļîţéŕš þéŕ ķîļöɱéţéŕ one two three]"}
+            }
+            mile-per-gallon{
+                dnam{"[ɱîļéš þéŕ ĝåļļöñ one two three]"}
+                one{"[{0} ɱîļé þéŕ ĝåļļöñ one two three]"}
+                other{"[{0} ɱîļéš þéŕ ĝåļļöñ one two three]"}
+            }
+            mile-per-gallon-imperial{
+                dnam{"[ɱîļéš þéŕ Îɱþ· ĝåļļöñ one two three]"}
+                one{"[{0} ɱîļé þéŕ Îɱþ· ĝåļļöñ one two three]"}
+                other{"[{0} ɱîļéš þéŕ Îɱþ· ĝåļļöñ one two three]"}
+            }
+        }
+        coordinate{
+            dnam{"[çåŕðîñåļ ðîŕéçţîöñ one two three]"}
+            east{"[{0} éåšţ one two]"}
+            north{"[{0} ñöŕţĥ one two]"}
+            south{"[{0} šöûţĥ one two]"}
+            west{"[{0} ŵéšţ one two]"}
+        }
+        digital{
+            bit{
+                dnam{"[ƀîţš one]"}
+                one{"[{0} ƀîţ one two]"}
+                other{"[{0} ƀîţš one two]"}
+            }
+            byte{
+                dnam{"[ƀýţéš one]"}
+                one{"[{0} ƀýţé one two]"}
+                other{"[{0} ƀýţéš one two]"}
+            }
+            gigabit{
+                dnam{"[ĝîĝåƀîţš one two]"}
+                one{"[{0} ĝîĝåƀîţ one two]"}
+                other{"[{0} ĝîĝåƀîţš one two]"}
+            }
+            gigabyte{
+                dnam{"[ĝîĝåƀýţéš one two]"}
+                one{"[{0} ĝîĝåƀýţé one two]"}
+                other{"[{0} ĝîĝåƀýţéš one two]"}
+            }
+            kilobit{
+                dnam{"[ķîļöƀîţš one two]"}
+                one{"[{0} ķîļöƀîţ one two]"}
+                other{"[{0} ķîļöƀîţš one two]"}
+            }
+            kilobyte{
+                dnam{"[ķîļöƀýţéš one two]"}
+                one{"[{0} ķîļöƀýţé one two]"}
+                other{"[{0} ķîļöƀýţéš one two]"}
+            }
+            megabit{
+                dnam{"[ɱéĝåƀîţš one two]"}
+                one{"[{0} ɱéĝåƀîţ one two]"}
+                other{"[{0} ɱéĝåƀîţš one two]"}
+            }
+            megabyte{
+                dnam{"[ɱéĝåƀýţéš one two]"}
+                one{"[{0} ɱéĝåƀýţé one two]"}
+                other{"[{0} ɱéĝåƀýţéš one two]"}
+            }
+            petabyte{
+                dnam{"[þéţåƀýţéš one two]"}
+                one{"[{0} þéţåƀýţé one two]"}
+                other{"[{0} þéţåƀýţéš one two]"}
+            }
+            terabit{
+                dnam{"[ţéŕåƀîţš one two]"}
+                one{"[{0} ţéŕåƀîţ one two]"}
+                other{"[{0} ţéŕåƀîţš one two]"}
+            }
+            terabyte{
+                dnam{"[ţéŕåƀýţéš one two]"}
+                one{"[{0} ţéŕåƀýţé one two]"}
+                other{"[{0} ţéŕåƀýţéš one two]"}
+            }
+        }
+        duration{
+            century{
+                dnam{"[çéñţûŕîéš one two]"}
+                one{"[{0} çéñţûŕý one two]"}
+                other{"[{0} çéñţûŕîéš one two]"}
+            }
+            day{
+                dnam{"[ðåýš one]"}
+                one{"[{0} ðåý one two]"}
+                other{"[{0} ðåýš one two]"}
+                per{"[{0} þéŕ ðåý one two]"}
+            }
+            decade{
+                dnam{"[ðéçåðéš one two]"}
+                one{"[{0} ðéçåðé one two]"}
+                other{"[{0} ðéçåðéš one two]"}
+            }
+            hour{
+                dnam{"[ĥöûŕš one]"}
+                one{"[{0} ĥöûŕ one two]"}
+                other{"[{0} ĥöûŕš one two]"}
+                per{"[{0} þéŕ ĥöûŕ one two]"}
+            }
+            microsecond{
+                dnam{"[ɱîçŕöšéçöñðš one two]"}
+                one{"[{0} ɱîçŕöšéçöñð one two three]"}
+                other{"[{0} ɱîçŕöšéçöñðš one two three]"}
+            }
+            millisecond{
+                dnam{"[ɱîļļîšéçöñðš one two]"}
+                one{"[{0} ɱîļļîšéçöñð one two three]"}
+                other{"[{0} ɱîļļîšéçöñðš one two three]"}
+            }
+            minute{
+                dnam{"[ɱîñûţéš one two]"}
+                one{"[{0} ɱîñûţé one two]"}
+                other{"[{0} ɱîñûţéš one two]"}
+                per{"[{0} þéŕ ɱîñûţé one two]"}
+            }
+            month{
+                dnam{"[ɱöñţĥš one]"}
+                one{"[{0} ɱöñţĥ one two]"}
+                other{"[{0} ɱöñţĥš one two]"}
+                per{"[{0} þéŕ ɱöñţĥ one two]"}
+            }
+            nanosecond{
+                dnam{"[ñåñöšéçöñðš one two]"}
+                one{"[{0} ñåñöšéçöñð one two]"}
+                other{"[{0} ñåñöšéçöñðš one two three]"}
+            }
+            second{
+                dnam{"[šéçöñðš one two]"}
+                one{"[{0} šéçöñð one two]"}
+                other{"[{0} šéçöñðš one two]"}
+                per{"[{0} þéŕ šéçöñð one two]"}
+            }
+            week{
+                dnam{"[ŵééķš one]"}
+                one{"[{0} ŵééķ one two]"}
+                other{"[{0} ŵééķš one two]"}
+                per{"[{0} þéŕ ŵééķ one two]"}
+            }
+            year{
+                dnam{"[ýéåŕš one]"}
+                one{"[{0} ýéåŕ one two]"}
+                other{"[{0} ýéåŕš one two]"}
+                per{"[{0} þéŕ ýéåŕ one two]"}
+            }
+        }
+        electric{
+            ampere{
+                dnam{"[åɱþéŕéš one two]"}
+                one{"[{0} åɱþéŕé one two]"}
+                other{"[{0} åɱþéŕéš one two]"}
+            }
+            milliampere{
+                dnam{"[ɱîļļîåɱþéŕéš one two]"}
+                one{"[{0} ɱîļļîåɱþéŕé one two three]"}
+                other{"[{0} ɱîļļîåɱþéŕéš one two three]"}
+            }
+            ohm{
+                dnam{"[öĥɱš one]"}
+                one{"[{0} öĥɱ one two]"}
+                other{"[{0} öĥɱš one two]"}
+            }
+            volt{
+                dnam{"[ṽöļţš one]"}
+                one{"[{0} ṽöļţ one two]"}
+                other{"[{0} ṽöļţš one two]"}
+            }
+        }
+        energy{
+            british-thermal-unit{
+                dnam{"[Ɓŕîţîšĥ ţĥéŕɱåļ ûñîţš one two three]"}
+                one{"[{0} Ɓŕîţîšĥ ţĥéŕɱåļ ûñîţ one two three]"}
+                other{"[{0} Ɓŕîţîšĥ ţĥéŕɱåļ ûñîţš one two three]"}
+            }
+            calorie{
+                dnam{"[çåļöŕîéš one two]"}
+                one{"[{0} çåļöŕîé one two]"}
+                other{"[{0} çåļöŕîéš one two]"}
+            }
+            electronvolt{
+                dnam{"[éļéçţŕöñṽöļţš one two]"}
+                one{"[{0} éļéçţŕöñṽöļţ one two three]"}
+                other{"[{0} éļéçţŕöñṽöļţš one two three]"}
+            }
+            foodcalorie{
+                dnam{"[Çåļöŕîéš one two]"}
+                one{"[{0} Çåļöŕîé one two]"}
+                other{"[{0} Çåļöŕîéš one two]"}
+            }
+            joule{
+                dnam{"[ĵöûļéš one]"}
+                one{"[{0} ĵöûļé one two]"}
+                other{"[{0} ĵöûļéš one two]"}
+            }
+            kilocalorie{
+                dnam{"[ķîļöçåļöŕîéš one two]"}
+                one{"[{0} ķîļöçåļöŕîé one two three]"}
+                other{"[{0} ķîļöçåļöŕîéš one two three]"}
+            }
+            kilojoule{
+                dnam{"[ķîļöĵöûļéš one two]"}
+                one{"[{0} ķîļöĵöûļé one two]"}
+                other{"[{0} ķîļöĵöûļéš one two]"}
+            }
+            kilowatt-hour{
+                dnam{"[ķîļöŵåţţ‐ĥöûŕš one two]"}
+                one{"[{0} ķîļöŵåţţ ĥöûŕ one two three]"}
+                other{"[{0} ķîļöŵåţţ‐ĥöûŕš one two three]"}
+            }
+            therm-us{
+                dnam{"[ÛŠ ţĥéŕɱš one two]"}
+                one{"[{0} ÛŠ ţĥéŕɱ one two]"}
+                other{"[{0} ÛŠ ţĥéŕɱš one two]"}
+            }
+        }
+        force{
+            newton{
+                dnam{"[ñéŵţöñš one two]"}
+                one{"[{0} ñéŵţöñ one two]"}
+                other{"[{0} ñéŵţöñš one two]"}
+            }
+            pound-force{
+                dnam{"[þöûñðš öƒ ƒöŕçé one two three]"}
+                one{"[{0} þöûñð öƒ ƒöŕçé one two three]"}
+                other{"[{0} þöûñðš öƒ ƒöŕçé one two three]"}
+            }
+        }
+        frequency{
+            gigahertz{
+                dnam{"[ĝîĝåĥéŕţž one two]"}
+                one{"[{0} ĝîĝåĥéŕţž one two]"}
+                other{"[{0} ĝîĝåĥéŕţž one two]"}
+            }
+            hertz{
+                dnam{"[ĥéŕţž one]"}
+                one{"[{0} ĥéŕţž one two]"}
+                other{"[{0} ĥéŕţž one two]"}
+            }
+            kilohertz{
+                dnam{"[ķîļöĥéŕţž one two]"}
+                one{"[{0} ķîļöĥéŕţž one two]"}
+                other{"[{0} ķîļöĥéŕţž one two]"}
+            }
+            megahertz{
+                dnam{"[ɱéĝåĥéŕţž one two]"}
+                one{"[{0} ɱéĝåĥéŕţž one two]"}
+                other{"[{0} ɱéĝåĥéŕţž one two]"}
+            }
+        }
+        graphics{
+            dot{
+                dnam{"[ðöţ one]"}
+                one{"[{0} ðöţ one two]"}
+                other{"[{0} ðöţ one two]"}
+            }
+            dot-per-centimeter{
+                dnam{"[ðöţš þéŕ çéñţîɱéţéŕ one two three]"}
+                one{"[{0} ðöţ þéŕ çéñţîɱéţéŕ one two three]"}
+                other{"[{0} ðöţš þéŕ çéñţîɱéţéŕ one two three]"}
+            }
+            dot-per-inch{
+                dnam{"[ðöţš þéŕ îñçĥ one two]"}
+                one{"[{0} ðöţ þéŕ îñçĥ one two three]"}
+                other{"[{0} ðöţš þéŕ îñçĥ one two three]"}
+            }
+            em{
+                dnam{"[ţýþöĝŕåþĥîç éɱ one two]"}
+                one{"[{0} éɱ one]"}
+                other{"[{0} éɱš one two]"}
+            }
+            megapixel{
+                dnam{"[ɱéĝåþîẋéļš one two]"}
+                one{"[{0} ɱéĝåþîẋéļ one two]"}
+                other{"[{0} ɱéĝåþîẋéļš one two]"}
+            }
+            pixel{
+                dnam{"[þîẋéļš one]"}
+                one{"[{0} þîẋéļ one two]"}
+                other{"[{0} þîẋéļš one two]"}
+            }
+            pixel-per-centimeter{
+                dnam{"[þîẋéļš þéŕ çéñţîɱéţéŕ one two three]"}
+                one{"[{0} þîẋéļ þéŕ çéñţîɱéţéŕ one two three]"}
+                other{"[{0} þîẋéļš þéŕ çéñţîɱéţéŕ one two three]"}
+            }
+            pixel-per-inch{
+                dnam{"[þîẋéļš þéŕ îñçĥ one two three]"}
+                one{"[{0} þîẋéļ þéŕ îñçĥ one two three]"}
+                other{"[{0} þîẋéļš þéŕ îñçĥ one two three]"}
+            }
+        }
+        length{
+            astronomical-unit{
+                dnam{"[åšţŕöñöɱîçåļ ûñîţš one two three]"}
+                one{"[{0} åšţŕöñöɱîçåļ ûñîţ one two three]"}
+                other{"[{0} åšţŕöñöɱîçåļ ûñîţš one two three]"}
+            }
+            centimeter{
+                dnam{"[çéñţîɱéţéŕš one two]"}
+                one{"[{0} çéñţîɱéţéŕ one two]"}
+                other{"[{0} çéñţîɱéţéŕš one two three]"}
+                per{"[{0} þéŕ çéñţîɱéţéŕ one two three]"}
+            }
+            decimeter{
+                dnam{"[ðéçîɱéţéŕš one two]"}
+                one{"[{0} ðéçîɱéţéŕ one two]"}
+                other{"[{0} ðéçîɱéţéŕš one two]"}
+            }
+            earth-radius{
+                dnam{"[éåŕţĥ ŕåðîûš one two]"}
+                one{"[{0} éåŕţĥ ŕåðîûš one two three]"}
+                other{"[{0} éåŕţĥ ŕåðîûš one two three]"}
+            }
+            fathom{
+                dnam{"[ƒåţĥöɱš one two]"}
+                one{"[{0} ƒåţĥöɱ one two]"}
+                other{"[{0} ƒåţĥöɱš one two]"}
+            }
+            foot{
+                dnam{"[ƒééţ one]"}
+                one{"[{0} ƒööţ one two]"}
+                other{"[{0} ƒééţ one two]"}
+                per{"[{0} þéŕ ƒööţ one two]"}
+            }
+            furlong{
+                dnam{"[ƒûŕļöñĝš one two]"}
+                one{"[{0} ƒûŕļöñĝ one two]"}
+                other{"[{0} ƒûŕļöñĝš one two]"}
+            }
+            inch{
+                dnam{"[îñçĥéš one]"}
+                one{"[{0} îñçĥ one two]"}
+                other{"[{0} îñçĥéš one two]"}
+                per{"[{0} þéŕ îñçĥ one two]"}
+            }
+            kilometer{
+                dnam{"[ķîļöɱéţéŕš one two]"}
+                one{"[{0} ķîļöɱéţéŕ one two]"}
+                other{"[{0} ķîļöɱéţéŕš one two]"}
+                per{"[{0} þéŕ ķîļöɱéţéŕ one two three]"}
+            }
+            light-year{
+                dnam{"[ļîĝĥţ ýéåŕš one two]"}
+                one{"[{0} ļîĝĥţ ýéåŕ one two]"}
+                other{"[{0} ļîĝĥţ ýéåŕš one two three]"}
+            }
+            meter{
+                dnam{"[ɱéţéŕš one]"}
+                one{"[{0} ɱéţéŕ one two]"}
+                other{"[{0} ɱéţéŕš one two]"}
+                per{"[{0} þéŕ ɱéţéŕ one two]"}
+            }
+            micrometer{
+                dnam{"[ɱîçŕöɱéţéŕš one two]"}
+                one{"[{0} ɱîçŕöɱéţéŕ one two]"}
+                other{"[{0} ɱîçŕöɱéţéŕš one two three]"}
+            }
+            mile{
+                dnam{"[ɱîļéš one]"}
+                one{"[{0} ɱîļé one two]"}
+                other{"[{0} ɱîļéš one two]"}
+            }
+            mile-scandinavian{
+                dnam{"[ɱîļé‐šçåñðîñåṽîåñ one two three]"}
+                one{"[{0} ɱîļé‐šçåñðîñåṽîåñ one two three]"}
+                other{"[{0} ɱîļéš‐šçåñðîñåṽîåñ one two three]"}
+            }
+            millimeter{
+                dnam{"[ɱîļļîɱéţéŕš one two]"}
+                one{"[{0} ɱîļļîɱéţéŕ one two]"}
+                other{"[{0} ɱîļļîɱéţéŕš one two three]"}
+            }
+            nanometer{
+                dnam{"[ñåñöɱéţéŕš one two]"}
+                one{"[{0} ñåñöɱéţéŕ one two]"}
+                other{"[{0} ñåñöɱéţéŕš one two]"}
+            }
+            nautical-mile{
+                dnam{"[ñåûţîçåļ ɱîļéš one two]"}
+                one{"[{0} ñåûţîçåļ ɱîļé one two three]"}
+                other{"[{0} ñåûţîçåļ ɱîļéš one two three]"}
+            }
+            parsec{
+                dnam{"[þåŕšéçš one two]"}
+                one{"[{0} þåŕšéç one two]"}
+                other{"[{0} þåŕšéçš one two]"}
+            }
+            picometer{
+                dnam{"[þîçöɱéţéŕš one two]"}
+                one{"[{0} þîçöɱéţéŕ one two]"}
+                other{"[{0} þîçöɱéţéŕš one two]"}
+            }
+            point{
+                dnam{"[þöîñţš one]"}
+                one{"[{0} þöîñţ one two]"}
+                other{"[{0} þöîñţš one two]"}
+            }
+            solar-radius{
+                dnam{"[šöļåŕ ŕåðîî one two]"}
+                one{"[{0} šöļåŕ ŕåðîûš one two three]"}
+                other{"[{0} šöļåŕ ŕåðîî one two three]"}
+            }
+            yard{
+                dnam{"[ýåŕðš one]"}
+                one{"[{0} ýåŕð one two]"}
+                other{"[{0} ýåŕðš one two]"}
+            }
+        }
+        light{
+            candela{
+                dnam{"[çåñðéļå one two]"}
+                one{"[{0} çåñðéļå one two]"}
+                other{"[{0} çåñðéļå one two]"}
+            }
+            lumen{
+                dnam{"[ļûɱéñ one]"}
+                one{"[{0} ļûɱéñ one two]"}
+                other{"[{0} ļûɱéñ one two]"}
+            }
+            lux{
+                dnam{"[ļûẋ one]"}
+                one{"[{0} ļûẋ one two]"}
+                other{"[{0} ļûẋ one two]"}
+            }
+            solar-luminosity{
+                dnam{"[šöļåŕ ļûɱîñöšîţîéš one two three]"}
+                one{"[{0} šöļåŕ ļûɱîñöšîţý one two three]"}
+                other{"[{0} šöļåŕ ļûɱîñöšîţîéš one two three]"}
+            }
+        }
+        mass{
+            carat{
+                dnam{"[çåŕåţš one]"}
+                one{"[{0} çåŕåţ one two]"}
+                other{"[{0} çåŕåţš one two]"}
+            }
+            dalton{
+                dnam{"[ðåļţöñš one two]"}
+                one{"[{0} ðåļţöñ one two]"}
+                other{"[{0} ðåļţöñš one two]"}
+            }
+            earth-mass{
+                dnam{"[Éåŕţĥ ɱåššéš one two]"}
+                one{"[{0} Éåŕţĥ ɱåšš one two]"}
+                other{"[{0} Éåŕţĥ ɱåššéš one two three]"}
+            }
+            grain{
+                dnam{"[ĝŕåîñ one]"}
+                one{"[{0} ĝŕåîñ one two]"}
+                other{"[{0} ĝŕåîñ one two]"}
+            }
+            gram{
+                dnam{"[ĝŕåɱš one]"}
+                one{"[{0} ĝŕåɱ one two]"}
+                other{"[{0} ĝŕåɱš one two]"}
+                per{"[{0} þéŕ ĝŕåɱ one two]"}
+            }
+            kilogram{
+                dnam{"[ķîļöĝŕåɱš one two]"}
+                one{"[{0} ķîļöĝŕåɱ one two]"}
+                other{"[{0} ķîļöĝŕåɱš one two]"}
+                per{"[{0} þéŕ ķîļöĝŕåɱ one two three]"}
+            }
+            metric-ton{
+                dnam{"[ɱéţŕîç ţöñš one two]"}
+                one{"[{0} ɱéţŕîç ţöñ one two]"}
+                other{"[{0} ɱéţŕîç ţöñš one two three]"}
+            }
+            microgram{
+                dnam{"[ɱîçŕöĝŕåɱš one two]"}
+                one{"[{0} ɱîçŕöĝŕåɱ one two]"}
+                other{"[{0} ɱîçŕöĝŕåɱš one two]"}
+            }
+            milligram{
+                dnam{"[ɱîļļîĝŕåɱš one two]"}
+                one{"[{0} ɱîļļîĝŕåɱ one two]"}
+                other{"[{0} ɱîļļîĝŕåɱš one two]"}
+            }
+            ounce{
+                dnam{"[öûñçéš one]"}
+                one{"[{0} öûñçé one two]"}
+                other{"[{0} öûñçéš one two]"}
+                per{"[{0} þéŕ öûñçé one two]"}
+            }
+            ounce-troy{
+                dnam{"[ţŕöý öûñçéš one two]"}
+                one{"[{0} ţŕöý öûñçé one two]"}
+                other{"[{0} ţŕöý öûñçéš one two three]"}
+            }
+            pound{
+                dnam{"[þöûñðš one]"}
+                one{"[{0} þöûñð one two]"}
+                other{"[{0} þöûñðš one two]"}
+                per{"[{0} þéŕ þöûñð one two]"}
+            }
+            solar-mass{
+                dnam{"[šöļåŕ ɱåššéš one two]"}
+                one{"[{0} šöļåŕ ɱåšš one two]"}
+                other{"[{0} šöļåŕ ɱåššéš one two three]"}
+            }
+            stone{
+                dnam{"[šţöñéš one]"}
+                one{"[{0} šţöñé one two]"}
+                other{"[{0} šţöñéš one two]"}
+            }
+            ton{
+                dnam{"[ţöñš one]"}
+                one{"[{0} ţöñ one two]"}
+                other{"[{0} ţöñš one two]"}
+            }
+        }
+        power{
+            gigawatt{
+                dnam{"[ĝîĝåŵåţţš one two]"}
+                one{"[{0} ĝîĝåŵåţţ one two]"}
+                other{"[{0} ĝîĝåŵåţţš one two]"}
+            }
+            horsepower{
+                dnam{"[ĥöŕšéþöŵéŕ one two]"}
+                one{"[{0} ĥöŕšéþöŵéŕ one two]"}
+                other{"[{0} ĥöŕšéþöŵéŕ one two]"}
+            }
+            kilowatt{
+                dnam{"[ķîļöŵåţţš one two]"}
+                one{"[{0} ķîļöŵåţţ one two]"}
+                other{"[{0} ķîļöŵåţţš one two]"}
+            }
+            megawatt{
+                dnam{"[ɱéĝåŵåţţš one two]"}
+                one{"[{0} ɱéĝåŵåţţ one two]"}
+                other{"[{0} ɱéĝåŵåţţš one two]"}
+            }
+            milliwatt{
+                dnam{"[ɱîļļîŵåţţš one two]"}
+                one{"[{0} ɱîļļîŵåţţ one two]"}
+                other{"[{0} ɱîļļîŵåţţš one two]"}
+            }
+            watt{
+                dnam{"[ŵåţţš one]"}
+                one{"[{0} ŵåţţ one two]"}
+                other{"[{0} ŵåţţš one two]"}
+            }
+        }
+        pressure{
+            atmosphere{
+                dnam{"[åţɱöšþĥéŕéš one two]"}
+                one{"[{0} åţɱöšþĥéŕé one two]"}
+                other{"[{0} åţɱöšþĥéŕéš one two three]"}
+            }
+            bar{
+                dnam{"[ƀåŕš one]"}
+                one{"[{0} ƀåŕ one two]"}
+                other{"[{0} ƀåŕš one two]"}
+            }
+            hectopascal{
+                dnam{"[ĥéçţöþåšçåļš one two]"}
+                one{"[{0} ĥéçţöþåšçåļ one two three]"}
+                other{"[{0} ĥéçţöþåšçåļš one two three]"}
+            }
+            inch-ofhg{
+                dnam{"[îñçĥéš öƒ ɱéŕçûŕý one two three]"}
+                one{"[{0} îñçĥ öƒ ɱéŕçûŕý one two three]"}
+                other{"[{0} îñçĥéš öƒ ɱéŕçûŕý one two three]"}
+            }
+            kilopascal{
+                dnam{"[ķîļöþåšçåļš one two]"}
+                one{"[{0} ķîļöþåšçåļ one two]"}
+                other{"[{0} ķîļöþåšçåļš one two three]"}
+            }
+            megapascal{
+                dnam{"[ɱéĝåþåšçåļš one two]"}
+                one{"[{0} ɱéĝåþåšçåļ one two]"}
+                other{"[{0} ɱéĝåþåšçåļš one two three]"}
+            }
+            millibar{
+                dnam{"[ɱîļļîƀåŕš one two]"}
+                one{"[{0} ɱîļļîƀåŕ one two]"}
+                other{"[{0} ɱîļļîƀåŕš one two]"}
+            }
+            millimeter-ofhg{
+                dnam{"[ɱîļļîɱéţéŕš öƒ ɱéŕçûŕý one two three]"}
+                one{"[{0} ɱîļļîɱéţéŕ öƒ ɱéŕçûŕý one two three]"}
+                other{"[{0} ɱîļļîɱéţéŕš öƒ ɱéŕçûŕý one two three]"}
+            }
+            pascal{
+                dnam{"[þåšçåļš one two]"}
+                one{"[{0} þåšçåļ one two]"}
+                other{"[{0} þåšçåļš one two]"}
+            }
+            pound-force-per-square-inch{
+                dnam{"[þöûñðš‐ƒöŕçé þéŕ šǫûåŕé îñçĥ one two three four]"}
+                one{"[{0} þöûñð‐ƒöŕçé þéŕ šǫûåŕé îñçĥ one two three four]"}
+                other{"[{0} þöûñðš‐ƒöŕçé þéŕ šǫûåŕé îñçĥ one two three four]"}
+            }
+        }
+        speed{
+            kilometer-per-hour{
+                dnam{"[ķîļöɱéţéŕš þéŕ ĥöûŕ one two three]"}
+                one{"[{0} ķîļöɱéţéŕ þéŕ ĥöûŕ one two three]"}
+                other{"[{0} ķîļöɱéţéŕš þéŕ ĥöûŕ one two three]"}
+            }
+            knot{
+                dnam{"[ķñöţš one]"}
+                one{"[{0} ķñöţ one two]"}
+                other{"[{0} ķñöţš one two]"}
+            }
+            meter-per-second{
+                dnam{"[ɱéţéŕš þéŕ šéçöñð one two three]"}
+                one{"[{0} ɱéţéŕ þéŕ šéçöñð one two three]"}
+                other{"[{0} ɱéţéŕš þéŕ šéçöñð one two three]"}
+            }
+            mile-per-hour{
+                dnam{"[ɱîļéš þéŕ ĥöûŕ one two]"}
+                one{"[{0} ɱîļé þéŕ ĥöûŕ one two three]"}
+                other{"[{0} ɱîļéš þéŕ ĥöûŕ one two three]"}
+            }
+        }
+        temperature{
+            celsius{
+                dnam{"[ðéĝŕééš Çéļšîûš one two three]"}
+                one{"[{0} ðéĝŕéé Çéļšîûš one two three]"}
+                other{"[{0} ðéĝŕééš Çéļšîûš one two three]"}
+            }
+            fahrenheit{
+                dnam{"[ðéĝŕééš Ƒåĥŕéñĥéîţ one two three]"}
+                one{"[{0} ðéĝŕéé Ƒåĥŕéñĥéîţ one two three]"}
+                other{"[{0} ðéĝŕééš Ƒåĥŕéñĥéîţ one two three]"}
+            }
+            generic{
+                dnam{"[° one]"}
+            }
+            kelvin{
+                dnam{"[ķéļṽîñš one two]"}
+                one{"[{0} ķéļṽîñ one two]"}
+                other{"[{0} ķéļṽîñš one two]"}
+            }
+        }
+        torque{
+            newton-meter{
+                dnam{"[ñéŵţöñ‐ɱéţéŕš one two]"}
+                one{"[{0} ñéŵţöñ‐ɱéţéŕ one two three]"}
+                other{"[{0} ñéŵţöñ‐ɱéţéŕš one two three]"}
+            }
+            pound-force-foot{
+                dnam{"[þöûñð‐ƒééţ one two]"}
+                one{"[{0} þöûñð‐ƒöŕçé‐ƒööţ one two three]"}
+                other{"[{0} þöûñð‐ƒöŕçé‐ƒééţ one two three]"}
+            }
+        }
+        volume{
+            acre-foot{
+                dnam{"[åçŕé‐ƒééţ one two]"}
+                one{"[{0} åçŕé‐ƒööţ one two]"}
+                other{"[{0} åçŕé‐ƒééţ one two]"}
+            }
+            barrel{
+                dnam{"[ƀåŕŕéļš one two]"}
+                one{"[{0} ƀåŕŕéļ one two]"}
+                other{"[{0} ƀåŕŕéļš one two]"}
+            }
+            bushel{
+                dnam{"[ƀûšĥéļš one two]"}
+                one{"[{0} ƀûšĥéļ one two]"}
+                other{"[{0} ƀûšĥéļš one two]"}
+            }
+            centiliter{
+                dnam{"[çéñţîļîţéŕš one two]"}
+                one{"[{0} çéñţîļîţéŕ one two]"}
+                other{"[{0} çéñţîļîţéŕš one two three]"}
+            }
+            cubic-centimeter{
+                dnam{"[çûƀîç çéñţîɱéţéŕš one two three]"}
+                one{"[{0} çûƀîç çéñţîɱéţéŕ one two three]"}
+                other{"[{0} çûƀîç çéñţîɱéţéŕš one two three]"}
+                per{"[{0} þéŕ çûƀîç çéñţîɱéţéŕ one two three]"}
+            }
+            cubic-foot{
+                dnam{"[çûƀîç ƒééţ one two]"}
+                one{"[{0} çûƀîç ƒööţ one two]"}
+                other{"[{0} çûƀîç ƒééţ one two]"}
+            }
+            cubic-inch{
+                dnam{"[çûƀîç îñçĥéš one two]"}
+                one{"[{0} çûƀîç îñçĥ one two]"}
+                other{"[{0} çûƀîç îñçĥéš one two three]"}
+            }
+            cubic-kilometer{
+                dnam{"[çûƀîç ķîļöɱéţéŕš one two three]"}
+                one{"[{0} çûƀîç ķîļöɱéţéŕ one two three]"}
+                other{"[{0} çûƀîç ķîļöɱéţéŕš one two three]"}
+            }
+            cubic-meter{
+                dnam{"[çûƀîç ɱéţéŕš one two]"}
+                one{"[{0} çûƀîç ɱéţéŕ one two three]"}
+                other{"[{0} çûƀîç ɱéţéŕš one two three]"}
+                per{"[{0} þéŕ çûƀîç ɱéţéŕ one two three]"}
+            }
+            cubic-mile{
+                dnam{"[çûƀîç ɱîļéš one two]"}
+                one{"[{0} çûƀîç ɱîļé one two]"}
+                other{"[{0} çûƀîç ɱîļéš one two three]"}
+            }
+            cubic-yard{
+                dnam{"[çûƀîç ýåŕðš one two]"}
+                one{"[{0} çûƀîç ýåŕð one two]"}
+                other{"[{0} çûƀîç ýåŕðš one two three]"}
+            }
+            cup{
+                dnam{"[çûþš one]"}
+                one{"[{0} çûþ one two]"}
+                other{"[{0} çûþš one two]"}
+            }
+            cup-metric{
+                dnam{"[ɱéţŕîç çûþš one two]"}
+                one{"[{0} ɱéţŕîç çûþ one two]"}
+                other{"[{0} ɱéţŕîç çûþš one two three]"}
+            }
+            deciliter{
+                dnam{"[ðéçîļîţéŕš one two]"}
+                one{"[{0} ðéçîļîţéŕ one two]"}
+                other{"[{0} ðéçîļîţéŕš one two]"}
+            }
+            dessert-spoon{
+                dnam{"[ðéššéŕţ šþööñ one two]"}
+                one{"[{0} ðéššéŕţ šþööñ one two three]"}
+                other{"[{0} ðéššéŕţ šþööñ one two three]"}
+            }
+            dessert-spoon-imperial{
+                dnam{"[Îɱþ· ðéššéŕţ šþööñ one two three]"}
+                one{"[{0} Îɱþ· ðéššéŕţ šþööñ one two three]"}
+                other{"[{0} Îɱþ· ðéššéŕţ šþööñ one two three]"}
+            }
+            dram{
+                dnam{"[ðŕåɱ one]"}
+                one{"[{0} ðŕåɱ one two]"}
+                other{"[{0} ðŕåɱ one two]"}
+            }
+            drop{
+                dnam{"[ðŕöþ one]"}
+                one{"[{0} ðŕöþ one two]"}
+                other{"[{0} ðŕöþ one two]"}
+            }
+            fluid-ounce{
+                dnam{"[ƒļûîð öûñçéš one two]"}
+                one{"[{0} ƒļûîð öûñçé one two three]"}
+                other{"[{0} ƒļûîð öûñçéš one two three]"}
+            }
+            fluid-ounce-imperial{
+                dnam{"[Îɱþ· ƒļûîð öûñçéš one two three]"}
+                one{"[{0} Îɱþ· ƒļûîð öûñçé one two three]"}
+                other{"[{0} Îɱþ· ƒļûîð öûñçéš one two three]"}
+            }
+            gallon{
+                dnam{"[ĝåļļöñš one two]"}
+                one{"[{0} ĝåļļöñ one two]"}
+                other{"[{0} ĝåļļöñš one two]"}
+                per{"[{0} þéŕ ĝåļļöñ one two]"}
+            }
+            gallon-imperial{
+                dnam{"[Îɱþ· ĝåļļöñš one two]"}
+                one{"[{0} Îɱþ· ĝåļļöñ one two three]"}
+                other{"[{0} Îɱþ· ĝåļļöñš one two three]"}
+                per{"[{0} þéŕ Îɱþ· ĝåļļöñ one two three]"}
+            }
+            hectoliter{
+                dnam{"[ĥéçţöļîţéŕš one two]"}
+                one{"[{0} ĥéçţöļîţéŕ one two]"}
+                other{"[{0} ĥéçţöļîţéŕš one two three]"}
+            }
+            jigger{
+                dnam{"[ĵîĝĝéŕ one]"}
+                one{"[{0} ĵîĝĝéŕ one two]"}
+                other{"[{0} ĵîĝĝéŕ one two]"}
+            }
+            liter{
+                dnam{"[ļîţéŕš one]"}
+                one{"[{0} ļîţéŕ one two]"}
+                other{"[{0} ļîţéŕš one two]"}
+                per{"[{0} þéŕ ļîţéŕ one two]"}
+            }
+            megaliter{
+                dnam{"[ɱéĝåļîţéŕš one two]"}
+                one{"[{0} ɱéĝåļîţéŕ one two]"}
+                other{"[{0} ɱéĝåļîţéŕš one two]"}
+            }
+            milliliter{
+                dnam{"[ɱîļļîļîţéŕš one two]"}
+                one{"[{0} ɱîļļîļîţéŕ one two]"}
+                other{"[{0} ɱîļļîļîţéŕš one two three]"}
+            }
+            pinch{
+                dnam{"[þîñçĥ one]"}
+                one{"[{0} þîñçĥ one two]"}
+                other{"[{0} þîñçĥ one two]"}
+            }
+            pint{
+                dnam{"[þîñţš one]"}
+                one{"[{0} þîñţ one two]"}
+                other{"[{0} þîñţš one two]"}
+            }
+            pint-metric{
+                dnam{"[ɱéţŕîç þîñţš one two]"}
+                one{"[{0} ɱéţŕîç þîñţ one two three]"}
+                other{"[{0} ɱéţŕîç þîñţš one two three]"}
+            }
+            quart{
+                dnam{"[ǫûåŕţš one]"}
+                one{"[{0} ǫûåŕţ one two]"}
+                other{"[{0} ǫûåŕţš one two]"}
+            }
+            quart-imperial{
+                dnam{"[Îɱþ· ǫûåŕţ one two]"}
+                one{"[{0} Îɱþ· ǫûåŕţ one two]"}
+                other{"[{0} Îɱþ· ǫûåŕţ one two]"}
+            }
+            tablespoon{
+                dnam{"[ţåƀļéšþööñš one two]"}
+                one{"[{0} ţåƀļéšþööñ one two]"}
+                other{"[{0} ţåƀļéšþööñš one two three]"}
+            }
+            teaspoon{
+                dnam{"[ţéåšþööñš one two]"}
+                one{"[{0} ţéåšþööñ one two]"}
+                other{"[{0} ţéåšþööñš one two]"}
+            }
+        }
+    }
+    unitsShort{
+        acceleration{
+            g-force{
+                dnam{"[ĝ‐ƒöŕçé one two]"}
+                one{"[{0} Ĝ one]"}
+                other{"[{0} Ĝ one]"}
+            }
+            meter-per-square-second{
+                dnam{"[ɱéţéŕš⁄šéç² one two]"}
+                one{"[{0} ɱ⁄š² one two]"}
+                other{"[{0} ɱ⁄š² one two]"}
+            }
+        }
+        angle{
+            arc-minute{
+                dnam{"[åŕçɱîñš one two]"}
+                one{"[{0} åŕçɱîñ one two]"}
+                other{"[{0} åŕçɱîñš one two]"}
+            }
+            arc-second{
+                dnam{"[åŕçšéçš one two]"}
+                one{"[{0} åŕçšéç one two]"}
+                other{"[{0} åŕçšéçš one two]"}
+            }
+            degree{
+                dnam{"[ðéĝŕééš one two]"}
+                one{"[{0} ðéĝ one two]"}
+                other{"[{0} ðéĝ one two]"}
+            }
+            radian{
+                dnam{"[ŕåðîåñš one two]"}
+                one{"[{0} ŕåð one two]"}
+                other{"[{0} ŕåð one two]"}
+            }
+            revolution{
+                dnam{"[ŕéṽ one]"}
+                one{"[{0} ŕéṽ one two]"}
+                other{"[{0} ŕéṽ one two]"}
+            }
+        }
+        area{
+            acre{
+                dnam{"[åçŕéš one]"}
+                one{"[{0} åç one]"}
+                other{"[{0} åç one]"}
+            }
+            dunam{
+                dnam{"[ðûñåɱš one]"}
+                one{"[{0} ðûñåɱ one two]"}
+                other{"[{0} ðûñåɱ one two]"}
+            }
+            hectare{
+                dnam{"[ĥéçţåŕéš one two]"}
+                one{"[{0} ĥå one]"}
+                other{"[{0} ĥå one]"}
+            }
+            square-centimeter{
+                dnam{"[çɱ² one]"}
+                one{"[{0} çɱ² one two]"}
+                other{"[{0} çɱ² one two]"}
+                per{"[{0}⁄çɱ² one two]"}
+            }
+            square-foot{
+                dnam{"[šǫ ƒééţ one two]"}
+                one{"[{0} šǫ ƒţ one two]"}
+                other{"[{0} šǫ ƒţ one two]"}
+            }
+            square-inch{
+                dnam{"[îñçĥéš² one two]"}
+                one{"[{0} îñ² one two]"}
+                other{"[{0} îñ² one two]"}
+                per{"[{0}⁄îñ² one two]"}
+            }
+            square-kilometer{
+                dnam{"[ķɱ² one]"}
+                one{"[{0} ķɱ² one two]"}
+                other{"[{0} ķɱ² one two]"}
+                per{"[{0}⁄ķɱ² one two]"}
+            }
+            square-meter{
+                dnam{"[ɱéţéŕš² one two]"}
+                one{"[{0} ɱ² one]"}
+                other{"[{0} ɱ² one]"}
+                per{"[{0}⁄ɱ² one]"}
+            }
+            square-mile{
+                dnam{"[šǫ ɱîļéš one two]"}
+                one{"[{0} šǫ ɱî one two]"}
+                other{"[{0} šǫ ɱî one two]"}
+                per{"[{0}⁄ɱî² one two]"}
+            }
+            square-yard{
+                dnam{"[ýåŕðš² one]"}
+                one{"[{0} ýð² one two]"}
+                other{"[{0} ýð² one two]"}
+            }
+        }
+        compound{
+            per{"[{0}⁄{1} one two]"}
+        }
+        concentr{
+            karat{
+                dnam{"[ķåŕåţš one]"}
+                one{"[{0} ķţ one]"}
+                other{"[{0} ķţ one]"}
+            }
+            milligram-per-deciliter{
+                dnam{"[ɱĝ⁄ðĻ one]"}
+                one{"[{0} ɱĝ⁄ðĻ one two]"}
+                other{"[{0} ɱĝ⁄ðĻ one two]"}
+            }
+            millimole-per-liter{
+                dnam{"[ɱîļļîɱöļ⁄ļîţéŕ one two]"}
+                one{"[{0} ɱɱöļ⁄Ļ one two]"}
+                other{"[{0} ɱɱöļ⁄Ļ one two]"}
+            }
+            mole{
+                dnam{"[ɱöļé one]"}
+                one{"[{0} ɱöļ one two]"}
+                other{"[{0} ɱöļ one two]"}
+            }
+            percent{
+                dnam{"[þéŕçéñţ one two]"}
+                one{"[{0}‰ one]"}
+                other{"[{0}‰ one]"}
+            }
+            permille{
+                dnam{"[þéŕɱîļļé one two]"}
+                one{"[{0}‰ one]"}
+                other{"[{0}‰ one]"}
+            }
+            permillion{
+                dnam{"[þåŕţš⁄ɱîļļîöñ one two]"}
+                one{"[{0} þþɱ one two]"}
+                other{"[{0} þþɱ one two]"}
+            }
+            permyriad{
+                dnam{"[þéŕɱýŕîåð one two]"}
+                one{"[{0}‱ one]"}
+                other{"[{0}‱ one]"}
+            }
+        }
+        consumption{
+            liter-per-100-kilometer{
+                dnam{"[Ļ⁄①⓪⓪ ķɱ one two]"}
+                one{"[{0} Ļ⁄①⓪⓪ ķɱ one two]"}
+                other{"[{0} Ļ⁄①⓪⓪ ķɱ one two]"}
+            }
+            liter-per-kilometer{
+                dnam{"[ļîţéŕš⁄ķɱ one two]"}
+                one{"[{0} Ļ⁄ķɱ one two]"}
+                other{"[{0} Ļ⁄ķɱ one two]"}
+            }
+            mile-per-gallon{
+                dnam{"[ɱîļéš⁄ĝåļ one two]"}
+                one{"[{0} ɱþĝ one two]"}
+                other{"[{0} ɱþĝ one two]"}
+            }
+            mile-per-gallon-imperial{
+                dnam{"[ɱîļéš⁄ĝåļ Îɱþ· one two]"}
+                one{"[{0} ɱþĝ Îɱþ· one two]"}
+                other{"[{0} ɱþĝ Îɱþ· one two]"}
+            }
+        }
+        coordinate{
+            dnam{"[ðîŕéçţîöñ one two]"}
+            east{"[{0} É one]"}
+            north{"[{0} Ñ one]"}
+            south{"[{0} Š one]"}
+            west{"[{0} Ŵ one]"}
+        }
+        digital{
+            bit{
+                dnam{"[ƀîţ one]"}
+                one{"[{0} ƀîţ one two]"}
+                other{"[{0} ƀîţ one two]"}
+            }
+            byte{
+                dnam{"[ƀýţé one]"}
+                one{"[{0} ƀýţé one two]"}
+                other{"[{0} ƀýţé one two]"}
+            }
+            gigabit{
+                dnam{"[Ĝƀîţ one]"}
+                one{"[{0} Ĝƀ one]"}
+                other{"[{0} Ĝƀ one]"}
+            }
+            gigabyte{
+                dnam{"[ĜƁýţé one]"}
+                one{"[{0} ĜƁ one]"}
+                other{"[{0} ĜƁ one]"}
+            }
+            kilobit{
+                dnam{"[ķƀîţ one]"}
+                one{"[{0} ķƀ one]"}
+                other{"[{0} ķƀ one]"}
+            }
+            kilobyte{
+                dnam{"[ķƁýţé one]"}
+                one{"[{0} ķƁ one]"}
+                other{"[{0} ķƁ one]"}
+            }
+            megabit{
+                dnam{"[Ṁƀîţ one]"}
+                one{"[{0} Ṁƀ one]"}
+                other{"[{0} Ṁƀ one]"}
+            }
+            megabyte{
+                dnam{"[ṀƁýţé one]"}
+                one{"[{0} ṀƁ one]"}
+                other{"[{0} ṀƁ one]"}
+            }
+            petabyte{
+                dnam{"[ÞƁýţé one]"}
+                one{"[{0} ÞƁ one]"}
+                other{"[{0} ÞƁ one]"}
+            }
+            terabit{
+                dnam{"[Ţƀîţ one]"}
+                one{"[{0} Ţƀ one]"}
+                other{"[{0} Ţƀ one]"}
+            }
+            terabyte{
+                dnam{"[ŢƁýţé one]"}
+                one{"[{0} ŢƁ one]"}
+                other{"[{0} ŢƁ one]"}
+            }
+        }
+        duration{
+            century{
+                dnam{"[ç one]"}
+                one{"[{0} ç one]"}
+                other{"[{0} ç one]"}
+            }
+            day{
+                dnam{"[ðåýš one]"}
+                one{"[{0} ðåý one two]"}
+                other{"[{0} ðåýš one two]"}
+                per{"[{0}⁄ð one]"}
+            }
+            decade{
+                dnam{"[ðéç one]"}
+                one{"[{0} ðéç one two]"}
+                other{"[{0} ðéç one two]"}
+            }
+            hour{
+                dnam{"[ĥöûŕš one]"}
+                one{"[{0} ĥŕ one]"}
+                other{"[{0} ĥŕ one]"}
+                per{"[{0}⁄ĥ one]"}
+            }
+            microsecond{
+                dnam{"[µšéçš one]"}
+                one{"[{0} µš one]"}
+                other{"[{0} µš one]"}
+            }
+            millisecond{
+                dnam{"[ɱîļļîšéçš one two]"}
+                one{"[{0} ɱš one]"}
+                other{"[{0} ɱš one]"}
+            }
+            minute{
+                dnam{"[ɱîñš one]"}
+                one{"[{0} ɱîñ one two]"}
+                other{"[{0} ɱîñ one two]"}
+                per{"[{0}⁄ɱîñ one two]"}
+            }
+            month{
+                dnam{"[ɱöñţĥš one]"}
+                one{"[{0} ɱţĥ one two]"}
+                other{"[{0} ɱţĥš one two]"}
+                per{"[{0}⁄ɱ one]"}
+            }
+            nanosecond{
+                dnam{"[ñåñöšéçš one two]"}
+                one{"[{0} ñš one]"}
+                other{"[{0} ñš one]"}
+            }
+            second{
+                dnam{"[šéçš one]"}
+                one{"[{0} šéç one two]"}
+                other{"[{0} šéç one two]"}
+                per{"[{0}⁄š one]"}
+            }
+            week{
+                dnam{"[ŵééķš one]"}
+                one{"[{0} ŵķ one]"}
+                other{"[{0} ŵķš one two]"}
+                per{"[{0}⁄ŵ one]"}
+            }
+            year{
+                dnam{"[ýéåŕš one]"}
+                one{"[{0} ýŕ one]"}
+                other{"[{0} ýŕš one two]"}
+                per{"[{0}⁄ý one]"}
+            }
+        }
+        electric{
+            ampere{
+                dnam{"[åɱþš one]"}
+                one{"[{0} Å one]"}
+                other{"[{0} Å one]"}
+            }
+            milliampere{
+                dnam{"[ɱîļļîåɱþš one two]"}
+                one{"[{0} ɱÅ one]"}
+                other{"[{0} ɱÅ one]"}
+            }
+            ohm{
+                dnam{"[öĥɱš one]"}
+                one{"[{0} Ω one]"}
+                other{"[{0} Ω one]"}
+            }
+            volt{
+                dnam{"[ṽöļţš one]"}
+                one{"[{0} Ṽ one]"}
+                other{"[{0} Ṽ one]"}
+            }
+        }
+        energy{
+            british-thermal-unit{
+                dnam{"[ƁŢÛ one]"}
+                one{"[{0} Ɓţû one two]"}
+                other{"[{0} Ɓţû one two]"}
+            }
+            calorie{
+                dnam{"[çåļ one]"}
+                one{"[{0} çåļ one two]"}
+                other{"[{0} çåļ one two]"}
+            }
+            electronvolt{
+                dnam{"[éļéçţŕöñṽöļţ one two]"}
+                one{"[{0} éṼ one]"}
+                other{"[{0} éṼ one]"}
+            }
+            foodcalorie{
+                dnam{"[Çåļ one]"}
+                one{"[{0} Çåļ one two]"}
+                other{"[{0} Çåļ one two]"}
+            }
+            joule{
+                dnam{"[ĵöûļéš one]"}
+                one{"[{0} Ĵ one]"}
+                other{"[{0} Ĵ one]"}
+            }
+            kilocalorie{
+                dnam{"[ķçåļ one]"}
+                one{"[{0} ķçåļ one two]"}
+                other{"[{0} ķçåļ one two]"}
+            }
+            kilojoule{
+                dnam{"[ķîļöĵöûļé one two]"}
+                one{"[{0} ķĴ one]"}
+                other{"[{0} ķĴ one]"}
+            }
+            kilowatt-hour{
+                dnam{"[ķŴ‐ĥöûŕ one two]"}
+                one{"[{0} ķŴĥ one two]"}
+                other{"[{0} ķŴĥ one two]"}
+            }
+            therm-us{
+                dnam{"[ÛŠ ţĥéŕɱ one two]"}
+                one{"[{0} ÛŠ ţĥéŕɱ one two]"}
+                other{"[{0} ÛŠ ţĥéŕɱš one two]"}
+            }
+        }
+        force{
+            newton{
+                dnam{"[ñéŵţöñ one]"}
+                one{"[{0} Ñ one]"}
+                other{"[{0} Ñ one]"}
+            }
+            pound-force{
+                dnam{"[þöûñð‐ƒöŕçé one two]"}
+                one{"[{0} ļƀƒ one two]"}
+                other{"[{0} ļƀƒ one two]"}
+            }
+        }
+        frequency{
+            gigahertz{
+                dnam{"[ĜĤž one]"}
+                one{"[{0} ĜĤž one two]"}
+                other{"[{0} ĜĤž one two]"}
+            }
+            hertz{
+                dnam{"[Ĥž one]"}
+                one{"[{0} Ĥž one]"}
+                other{"[{0} Ĥž one]"}
+            }
+            kilohertz{
+                dnam{"[ķĤž one]"}
+                one{"[{0} ķĤž one two]"}
+                other{"[{0} ķĤž one two]"}
+            }
+            megahertz{
+                dnam{"[ṀĤž one]"}
+                one{"[{0} ṀĤž one two]"}
+                other{"[{0} ṀĤž one two]"}
+            }
+        }
+        graphics{
+            dot{
+                other{"[{0} ðöţ one two]"}
+            }
+            dot-per-centimeter{
+                dnam{"[ðþçɱ one]"}
+                one{"[{0} ðþçɱ one two]"}
+                other{"[{0} ðþçɱ one two]"}
+            }
+            dot-per-inch{
+                dnam{"[ðþî one]"}
+                one{"[{0} ðþî one two]"}
+                other{"[{0} ðþî one two]"}
+            }
+            em{
+                dnam{"[éɱ one]"}
+                one{"[{0} éɱ one]"}
+                other{"[{0} éɱ one]"}
+            }
+            megapixel{
+                dnam{"[ɱéĝåþîẋéļš one two]"}
+                one{"[{0} ṀÞ one]"}
+                other{"[{0} ṀÞ one]"}
+            }
+            pixel{
+                dnam{"[þîẋéļš one]"}
+                one{"[{0} þẋ one]"}
+                other{"[{0} þẋ one]"}
+            }
+            pixel-per-centimeter{
+                dnam{"[þþçɱ one]"}
+                one{"[{0} þþçɱ one two]"}
+                other{"[{0} þþçɱ one two]"}
+            }
+            pixel-per-inch{
+                dnam{"[þþî one]"}
+                one{"[{0} þþî one two]"}
+                other{"[{0} þþî one two]"}
+            }
+        }
+        length{
+            astronomical-unit{
+                dnam{"[åû one]"}
+                one{"[{0} åû one]"}
+                other{"[{0} åû one]"}
+            }
+            centimeter{
+                dnam{"[çɱ one]"}
+                one{"[{0} çɱ one]"}
+                other{"[{0} çɱ one]"}
+                per{"[{0}⁄çɱ one]"}
+            }
+            decimeter{
+                dnam{"[ðɱ one]"}
+                one{"[{0} ðɱ one]"}
+                other{"[{0} ðɱ one]"}
+            }
+            fathom{
+                dnam{"[ƒåţĥöɱš one two]"}
+                one{"[{0} ƒţĥ one two]"}
+                other{"[{0} ƒţĥ one two]"}
+            }
+            foot{
+                dnam{"[ƒééţ one]"}
+                one{"[{0} ƒţ one]"}
+                other{"[{0} ƒţ one]"}
+                per{"[{0}⁄ƒţ one]"}
+            }
+            furlong{
+                dnam{"[ƒûŕļöñĝš one two]"}
+                one{"[{0} ƒûŕ one two]"}
+                other{"[{0} ƒûŕ one two]"}
+            }
+            inch{
+                dnam{"[îñçĥéš one]"}
+                one{"[{0} îñ one]"}
+                other{"[{0} îñ one]"}
+                per{"[{0}⁄îñ one]"}
+            }
+            kilometer{
+                dnam{"[ķɱ one]"}
+                one{"[{0} ķɱ one]"}
+                other{"[{0} ķɱ one]"}
+                per{"[{0}⁄ķɱ one]"}
+            }
+            light-year{
+                dnam{"[ļîĝĥţ ýŕš one two]"}
+                one{"[{0} ļý one]"}
+                other{"[{0} ļý one]"}
+            }
+            meter{
+                dnam{"[ɱ one]"}
+                one{"[{0} ɱ one]"}
+                other{"[{0} ɱ one]"}
+                per{"[{0}⁄ɱ one]"}
+            }
+            micrometer{
+                dnam{"[µɱéţéŕš one two]"}
+                one{"[{0} µɱ one]"}
+                other{"[{0} µɱ one]"}
+            }
+            mile{
+                dnam{"[ɱîļéš one]"}
+                one{"[{0} ɱî one]"}
+                other{"[{0} ɱî one]"}
+            }
+            mile-scandinavian{
+                dnam{"[šɱî one]"}
+                one{"[{0} šɱî one two]"}
+                other{"[{0} šɱî one two]"}
+            }
+            millimeter{
+                dnam{"[ɱɱ one]"}
+                one{"[{0} ɱɱ one]"}
+                other{"[{0} ɱɱ one]"}
+            }
+            nanometer{
+                dnam{"[ñɱ one]"}
+                one{"[{0} ñɱ one]"}
+                other{"[{0} ñɱ one]"}
+            }
+            nautical-mile{
+                dnam{"[ñɱî one]"}
+                one{"[{0} ñɱî one two]"}
+                other{"[{0} ñɱî one two]"}
+            }
+            parsec{
+                dnam{"[þåŕšéçš one two]"}
+                one{"[{0} þç one]"}
+                other{"[{0} þç one]"}
+            }
+            picometer{
+                dnam{"[þɱ one]"}
+                one{"[{0} þɱ one]"}
+                other{"[{0} þɱ one]"}
+            }
+            point{
+                dnam{"[þöîñţš one]"}
+                one{"[{0} þţ one]"}
+                other{"[{0} þţ one]"}
+            }
+            solar-radius{
+                dnam{"[šöļåŕ ŕåðîî one two]"}
+                one{"[{0} Ŕ☉ one]"}
+                other{"[{0} Ŕ☉ one]"}
+            }
+            yard{
+                dnam{"[ýåŕðš one]"}
+                one{"[{0} ýð one]"}
+                other{"[{0} ýð one]"}
+            }
+        }
+        light{
+            lux{
+                dnam{"[ļûẋ one]"}
+                one{"[{0} ļẋ one]"}
+                other{"[{0} ļẋ one]"}
+            }
+            solar-luminosity{
+                dnam{"[šöļåŕ ļûɱîñöšîţîéš one two three]"}
+                one{"[{0} Ļ☉ one]"}
+                other{"[{0} Ļ☉ one]"}
+            }
+        }
+        mass{
+            carat{
+                dnam{"[çåŕåţš one]"}
+                one{"[{0} ÇÐ one]"}
+                other{"[{0} ÇÐ one]"}
+            }
+            dalton{
+                dnam{"[ðåļţöñš one two]"}
+                one{"[{0} Ðå one]"}
+                other{"[{0} Ðå one]"}
+            }
+            earth-mass{
+                dnam{"[Éåŕţĥ ɱåššéš one two]"}
+                one{"[{0} Ṁ⊕ one]"}
+                other{"[{0} Ṁ⊕ one]"}
+            }
+            grain{
+                other{"[{0} ĝŕåîñ one two]"}
+            }
+            gram{
+                dnam{"[ĝŕåɱš one]"}
+                one{"[{0} ĝ one]"}
+                other{"[{0} ĝ one]"}
+                per{"[{0}⁄ĝ one]"}
+            }
+            kilogram{
+                dnam{"[ķĝ one]"}
+                one{"[{0} ķĝ one]"}
+                other{"[{0} ķĝ one]"}
+                per{"[{0}⁄ķĝ one]"}
+            }
+            metric-ton{
+                dnam{"[ţ one]"}
+                one{"[{0} ţ one]"}
+                other{"[{0} ţ one]"}
+            }
+            microgram{
+                dnam{"[µĝ one]"}
+                one{"[{0} µĝ one]"}
+                other{"[{0} µĝ one]"}
+            }
+            milligram{
+                dnam{"[ɱĝ one]"}
+                one{"[{0} ɱĝ one]"}
+                other{"[{0} ɱĝ one]"}
+            }
+            ounce{
+                dnam{"[öž one]"}
+                one{"[{0} öž one]"}
+                other{"[{0} öž one]"}
+                per{"[{0}⁄öž one]"}
+            }
+            ounce-troy{
+                dnam{"[öž ţŕöý one two]"}
+                one{"[{0} öž ţ one two]"}
+                other{"[{0} öž ţ one two]"}
+            }
+            pound{
+                dnam{"[þöûñðš one]"}
+                one{"[{0} ļƀ one]"}
+                other{"[{0} ļƀ one]"}
+                per{"[{0}⁄ļƀ one]"}
+            }
+            solar-mass{
+                dnam{"[šöļåŕ ɱåššéš one two]"}
+                one{"[{0} Ṁ☉ one]"}
+                other{"[{0} Ṁ☉ one]"}
+            }
+            stone{
+                dnam{"[šţöñéš one]"}
+                one{"[{0} šţ one]"}
+                other{"[{0} šţ one]"}
+            }
+            ton{
+                dnam{"[ţöñš one]"}
+                one{"[{0} ţñ one]"}
+                other{"[{0} ţñ one]"}
+            }
+        }
+        power{
+            gigawatt{
+                dnam{"[ĜŴ one]"}
+                one{"[{0} ĜŴ one]"}
+                other{"[{0} ĜŴ one]"}
+            }
+            horsepower{
+                dnam{"[ĥþ one]"}
+                one{"[{0} ĥþ one]"}
+                other{"[{0} ĥþ one]"}
+            }
+            kilowatt{
+                dnam{"[ķŴ one]"}
+                one{"[{0} ķŴ one]"}
+                other{"[{0} ķŴ one]"}
+            }
+            megawatt{
+                dnam{"[ṀŴ one]"}
+                one{"[{0} ṀŴ one]"}
+                other{"[{0} ṀŴ one]"}
+            }
+            milliwatt{
+                dnam{"[ɱŴ one]"}
+                one{"[{0} ɱŴ one]"}
+                other{"[{0} ɱŴ one]"}
+            }
+            watt{
+                dnam{"[ŵåţţš one]"}
+                one{"[{0} Ŵ one]"}
+                other{"[{0} Ŵ one]"}
+            }
+        }
+        pressure{
+            atmosphere{
+                dnam{"[åţɱ one]"}
+                one{"[{0} åţɱ one two]"}
+                other{"[{0} åţɱ one two]"}
+            }
+            bar{
+                dnam{"[ƀåŕ one]"}
+                one{"[{0} ƀåŕ one two]"}
+                other{"[{0} ƀåŕ one two]"}
+            }
+            hectopascal{
+                dnam{"[ĥÞå one]"}
+                one{"[{0} ĥÞå one two]"}
+                other{"[{0} ĥÞå one two]"}
+            }
+            inch-ofhg{
+                dnam{"[îñĤĝ one]"}
+                one{"[{0} îñĤĝ one two]"}
+                other{"[{0} îñĤĝ one two]"}
+            }
+            kilopascal{
+                dnam{"[ķÞå one]"}
+                one{"[{0} ķÞå one two]"}
+                other{"[{0} ķÞå one two]"}
+            }
+            megapascal{
+                dnam{"[ṀÞå one]"}
+                one{"[{0} ṀÞå one two]"}
+                other{"[{0} ṀÞå one two]"}
+            }
+            millibar{
+                dnam{"[ɱƀåŕ one]"}
+                one{"[{0} ɱƀåŕ one two]"}
+                other{"[{0} ɱƀåŕ one two]"}
+            }
+            millimeter-ofhg{
+                dnam{"[ɱɱĤĝ one]"}
+                one{"[{0} ɱɱĤĝ one two]"}
+                other{"[{0} ɱɱĤĝ one two]"}
+            }
+            pascal{
+                dnam{"[Þå one]"}
+                one{"[{0} Þå one]"}
+                other{"[{0} Þå one]"}
+            }
+            pound-force-per-square-inch{
+                dnam{"[þšî one]"}
+                one{"[{0} þšî one two]"}
+                other{"[{0} þšî one two]"}
+            }
+        }
+        speed{
+            kilometer-per-hour{
+                dnam{"[ķɱ⁄ĥöûŕ one two]"}
+                one{"[{0} ķɱ⁄ĥ one two]"}
+                other{"[{0} ķɱ⁄ĥ one two]"}
+            }
+            knot{
+                dnam{"[ķñ one]"}
+                one{"[{0} ķñ one]"}
+                other{"[{0} ķñ one]"}
+            }
+            meter-per-second{
+                dnam{"[ɱéţéŕš⁄šéç one two]"}
+                one{"[{0} ɱ⁄š one two]"}
+                other{"[{0} ɱ⁄š one two]"}
+            }
+            mile-per-hour{
+                dnam{"[ɱîļéš⁄ĥöûŕ one two]"}
+                one{"[{0} ɱþĥ one two]"}
+                other{"[{0} ɱþĥ one two]"}
+            }
+        }
+        temperature{
+            celsius{
+                dnam{"[ðéĝ· Ç one]"}
+                one{"[{0}°Ç one]"}
+                other{"[{0}°Ç one]"}
+            }
+            fahrenheit{
+                dnam{"[ðéĝ· Ƒ one]"}
+                one{"[{0}°Ƒ one]"}
+                other{"[{0}°Ƒ one]"}
+            }
+            kelvin{
+                dnam{"[Ķ one]"}
+                one{"[{0} Ķ one]"}
+                other{"[{0} Ķ one]"}
+            }
+        }
+        torque{
+            newton-meter{
+                dnam{"[Ñ⋅ɱ one]"}
+                one{"[{0} Ñ⋅ɱ one two]"}
+                other{"[{0} Ñ⋅ɱ one two]"}
+            }
+            pound-force-foot{
+                dnam{"[ļƀƒ⋅ƒţ one]"}
+                one{"[{0} ļƀƒ⋅ƒţ one two]"}
+                other{"[{0} ļƀƒ⋅ƒţ one two]"}
+            }
+        }
+        volume{
+            acre-foot{
+                dnam{"[åçŕé ƒţ one two]"}
+                one{"[{0} åç ƒţ one two]"}
+                other{"[{0} åç ƒţ one two]"}
+            }
+            barrel{
+                dnam{"[ƀåŕŕéļ one]"}
+                one{"[{0} ƀƀļ one two]"}
+                other{"[{0} ƀƀļ one two]"}
+            }
+            bushel{
+                dnam{"[ƀûšĥéļš one two]"}
+                one{"[{0} ƀû one]"}
+                other{"[{0} ƀû one]"}
+            }
+            centiliter{
+                dnam{"[çĻ one]"}
+                one{"[{0} çĻ one]"}
+                other{"[{0} çĻ one]"}
+            }
+            cubic-centimeter{
+                dnam{"[çɱ³ one]"}
+                one{"[{0} çɱ³ one two]"}
+                other{"[{0} çɱ³ one two]"}
+            }
+            cubic-foot{
+                dnam{"[ƒééţ³ one]"}
+                one{"[{0} ƒţ³ one two]"}
+                other{"[{0} ƒţ³ one two]"}
+            }
+            cubic-inch{
+                dnam{"[îñçĥéš³ one two]"}
+                one{"[{0} îñ³ one two]"}
+                other{"[{0} îñ³ one two]"}
+            }
+            cubic-kilometer{
+                dnam{"[ķɱ³ one]"}
+                one{"[{0} ķɱ³ one two]"}
+                other{"[{0} ķɱ³ one two]"}
+            }
+            cubic-meter{
+                dnam{"[ɱ³ one]"}
+                one{"[{0} ɱ³ one]"}
+                other{"[{0} ɱ³ one]"}
+            }
+            cubic-mile{
+                dnam{"[ɱî³ one]"}
+                one{"[{0} ɱî³ one two]"}
+                other{"[{0} ɱî³ one two]"}
+            }
+            cubic-yard{
+                dnam{"[ýåŕðš³ one]"}
+                one{"[{0} ýð³ one two]"}
+                other{"[{0} ýð³ one two]"}
+            }
+            cup{
+                dnam{"[çûþš one]"}
+                one{"[{0} ç one]"}
+                other{"[{0} ç one]"}
+            }
+            cup-metric{
+                dnam{"[ɱçûþ one]"}
+                one{"[{0} ɱç one]"}
+                other{"[{0} ɱç one]"}
+            }
+            deciliter{
+                dnam{"[ðĻ one]"}
+                one{"[{0} ðĻ one]"}
+                other{"[{0} ðĻ one]"}
+            }
+            dessert-spoon{
+                dnam{"[ðšţšþñ one]"}
+                other{"[{0} ðšţšþñ one two]"}
+            }
+            dessert-spoon-imperial{
+                dnam{"[ðšţšþñ Îɱþ one two]"}
+                other{"[{0} ðšţšþñ Îɱþ one two]"}
+            }
+            dram{
+                dnam{"[ðŕåɱ ƒļûîð one two]"}
+                other{"[{0} ðŕåɱ ƒļ one two]"}
+            }
+            drop{
+                other{"[{0} ðŕöþ one two]"}
+            }
+            fluid-ounce{
+                dnam{"[ƒļ öž one]"}
+                one{"[{0} ƒļ öž one two]"}
+                other{"[{0} ƒļ öž one two]"}
+            }
+            fluid-ounce-imperial{
+                dnam{"[Îɱþ· ƒļ öž one two]"}
+                one{"[{0} ƒļ öž Îɱþ· one two]"}
+                other{"[{0} ƒļ öž Îɱþ· one two]"}
+            }
+            gallon{
+                dnam{"[ĝåļ one]"}
+                one{"[{0} ĝåļ one two]"}
+                other{"[{0} ĝåļ one two]"}
+                per{"[{0}⁄ĝåļ ÛŠ one two]"}
+            }
+            gallon-imperial{
+                dnam{"[Îɱþ· ĝåļ one two]"}
+                one{"[{0} ĝåļ Îɱþ· one two]"}
+                other{"[{0} ĝåļ Îɱþ· one two]"}
+                per{"[{0}⁄ĝåļ Îɱþ· one two]"}
+            }
+            hectoliter{
+                dnam{"[ĥĻ one]"}
+                one{"[{0} ĥĻ one]"}
+                other{"[{0} ĥĻ one]"}
+            }
+            jigger{
+                other{"[{0} ĵîĝĝéŕ one two]"}
+            }
+            liter{
+                dnam{"[ļîţéŕš one]"}
+                one{"[{0} Ļ one]"}
+                other{"[{0} Ļ one]"}
+                per{"[{0}⁄Ļ one]"}
+            }
+            megaliter{
+                dnam{"[ṀĻ one]"}
+                one{"[{0} ṀĻ one]"}
+                other{"[{0} ṀĻ one]"}
+            }
+            milliliter{
+                dnam{"[ɱĻ one]"}
+                one{"[{0} ɱĻ one]"}
+                other{"[{0} ɱĻ one]"}
+            }
+            pinch{
+                other{"[{0} þîñçĥ one two]"}
+            }
+            pint{
+                dnam{"[þîñţš one]"}
+                one{"[{0} þţ one]"}
+                other{"[{0} þţ one]"}
+            }
+            pint-metric{
+                dnam{"[ɱþţ one]"}
+                one{"[{0} ɱþţ one two]"}
+                other{"[{0} ɱþţ one two]"}
+            }
+            quart{
+                dnam{"[ǫţš one]"}
+                one{"[{0} ǫţ one]"}
+                other{"[{0} ǫţ one]"}
+            }
+            quart-imperial{
+                dnam{"[ǫţ Îɱþ one]"}
+                other{"[{0} ǫţ Îɱþ· one two]"}
+            }
+            tablespoon{
+                dnam{"[ţƀšþ one]"}
+                one{"[{0} ţƀšþ one two]"}
+                other{"[{0} ţƀšþ one two]"}
+            }
+            teaspoon{
+                dnam{"[ţšþ one]"}
+                one{"[{0} ţšþ one two]"}
+                other{"[{0} ţšþ one two]"}
+            }
+        }
+    }
+}
diff --git a/icu4c/source/data/unit/en_ZA.txt b/icu4c/source/data/unit/en_ZA.txt
index 942751e..13468e2 100644
--- a/icu4c/source/data/unit/en_ZA.txt
+++ b/icu4c/source/data/unit/en_ZA.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ZA{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_ZM.txt b/icu4c/source/data/unit/en_ZM.txt
index 32588ce..f61c471 100644
--- a/icu4c/source/data/unit/en_ZM.txt
+++ b/icu4c/source/data/unit/en_ZM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ZM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/en_ZW.txt b/icu4c/source/data/unit/en_ZW.txt
index 05fb790..60eaea8 100644
--- a/icu4c/source/data/unit/en_ZW.txt
+++ b/icu4c/source/data/unit/en_ZW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ZW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/eo.txt b/icu4c/source/data/unit/eo.txt
index 36f7c40..a88206b 100644
--- a/icu4c/source/data/unit/eo.txt
+++ b/icu4c/source/data/unit/eo.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 eo{
-    Version{"37"}
     unitsShort{
         duration{
             month{
diff --git a/icu4c/source/data/unit/es.txt b/icu4c/source/data/unit/es.txt
index eb95dd3..30fd5f5 100644
--- a/icu4c/source/data/unit/es.txt
+++ b/icu4c/source/data/unit/es.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -10,9 +10,9 @@
     units{
         acceleration{
             g-force{
-                dnam{"fuerza G"}
-                one{"{0} unidad de fuerza gravitacional"}
-                other{"{0} unidades de fuerza gravitacional"}
+                dnam{"unidades de fuerza g"}
+                one{"{0} unidad de fuerza g"}
+                other{"{0} unidades de fuerza g"}
             }
             meter-per-square-second{
                 dnam{"metros por segundo al cuadrado"}
@@ -126,7 +126,7 @@
             }
             mole{
                 dnam{"moles"}
-                one{"{0} moles"}
+                one{"{0} mol"}
                 other{"{0} moles"}
             }
             percent{
@@ -344,9 +344,9 @@
                 other{"{0} electronvoltios"}
             }
             foodcalorie{
-                dnam{"calorías"}
-                one{"{0} caloría"}
-                other{"{0} calorías"}
+                dnam{"kilocalorías"}
+                one{"{0} kilocaloría"}
+                other{"{0} kilocalorías"}
             }
             joule{
                 dnam{"julios"}
@@ -369,7 +369,7 @@
                 other{"{0} kilovatios-hora"}
             }
             therm-us{
-                dnam{"termia estadounidense"}
+                dnam{"termias estadounidenses"}
                 one{"{0} termia estadounidense"}
                 other{"{0} termias estadounidenses"}
             }
@@ -409,6 +409,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"puntos tipográficos"}
+                one{"{0} punto tipográfico"}
+                other{"{0} puntos tipográficos"}
+            }
             dot-per-centimeter{
                 dnam{"puntos por centímetro"}
                 one{"{0} punto por centímetro"}
@@ -462,12 +467,27 @@
                 one{"{0} decímetro"}
                 other{"{0} decímetros"}
             }
+            earth-radius{
+                dnam{"radios terrestres"}
+                one{"{0} radio terrestre"}
+                other{"{0} radios terrestres"}
+            }
+            fathom{
+                dnam{"brazas"}
+                one{"{0} braza"}
+                other{"{0} brazas"}
+            }
             foot{
                 dnam{"pies"}
                 one{"{0} pie"}
                 other{"{0} pies"}
                 per{"{0} por pie"}
             }
+            furlong{
+                dnam{"furlongs"}
+                one{"{0} furlong"}
+                other{"{0} furlongs"}
+            }
             inch{
                 dnam{"pulgadas"}
                 one{"{0} pulgada"}
@@ -548,6 +568,16 @@
             }
         }
         light{
+            candela{
+                dnam{"candelas"}
+                one{"{0} candela"}
+                other{"{0} candelas"}
+            }
+            lumen{
+                dnam{"lúmenes"}
+                one{"{0} lumen"}
+                other{"{0} lúmenes"}
+            }
             lux{
                 dnam{"luxes"}
                 one{"{0} lux"}
@@ -575,6 +605,11 @@
                 one{"{0} masa terrestre"}
                 other{"{0} masas terrestres"}
             }
+            grain{
+                dnam{"granos"}
+                one{"{0} grano"}
+                other{"{0} granos"}
+            }
             gram{
                 dnam{"gramos"}
                 one{"{0} gramo"}
@@ -588,9 +623,9 @@
                 per{"{0} por kilogramo"}
             }
             metric-ton{
-                dnam{"toneladas métricas"}
-                one{"{0} tonelada métrica"}
-                other{"{0} toneladas métricas"}
+                dnam{"toneladas"}
+                one{"{0} tonelada"}
+                other{"{0} toneladas"}
             }
             microgram{
                 dnam{"microgramos"}
@@ -624,10 +659,15 @@
                 one{"{0} masa solar"}
                 other{"{0} masas solares"}
             }
+            stone{
+                dnam{"stones"}
+                one{"{0} stone"}
+                other{"{0} stones"}
+            }
             ton{
-                dnam{"toneladas"}
-                one{"{0} tonelada"}
-                other{"{0} toneladas"}
+                dnam{"toneladas cortas"}
+                one{"{0} tonelada corta"}
+                other{"{0} toneladas cortas"}
             }
         }
         power{
@@ -748,9 +788,9 @@
                 other{"{0} grados Fahrenheit"}
             }
             generic{
-                dnam{"°"}
-                one{"{0}°"}
-                other{"{0}°"}
+                dnam{"grados"}
+                one{"{0} grado"}
+                other{"{0} grados"}
             }
             kelvin{
                 dnam{"kelvin"}
@@ -760,12 +800,12 @@
         }
         torque{
             newton-meter{
-                dnam{"newton metro"}
+                dnam{"newton metros"}
                 one{"{0} newton metro"}
                 other{"{0} newton metros"}
             }
             pound-force-foot{
-                dnam{"libra pies"}
+                dnam{"libras pies"}
                 one{"{0} libra pie"}
                 other{"{0} libras pies"}
             }
@@ -781,6 +821,11 @@
                 one{"{0} barril"}
                 other{"{0} barriles"}
             }
+            bushel{
+                dnam{"bushels"}
+                one{"{0} bushel"}
+                other{"{0} bushels"}
+            }
             centiliter{
                 dnam{"centilitros"}
                 one{"{0} centilitro"}
@@ -838,6 +883,26 @@
                 one{"{0} decilitro"}
                 other{"{0} decilitros"}
             }
+            dessert-spoon{
+                dnam{"cucharadas de postre"}
+                one{"{0} cucharada de postre"}
+                other{"{0} cucharadas de postre"}
+            }
+            dessert-spoon-imperial{
+                dnam{"cucharadas de postre imperiales"}
+                one{"{0} cucharada de postre imperial"}
+                other{"{0} cucharadas de postre imperiales"}
+            }
+            dram{
+                dnam{"dracmas líquidas"}
+                one{"{0} dracma líquida"}
+                other{"{0} dracmas líquidas"}
+            }
+            drop{
+                dnam{"gotas"}
+                one{"{0} gota"}
+                other{"{0} gotas"}
+            }
             fluid-ounce{
                 dnam{"onzas líquidas"}
                 one{"{0} onza líquida"}
@@ -865,6 +930,11 @@
                 one{"{0} hectolitro"}
                 other{"{0} hectolitros"}
             }
+            jigger{
+                dnam{"vasos medidores"}
+                one{"{0} vaso medidor"}
+                other{"{0} vasos medidores"}
+            }
             liter{
                 dnam{"litros"}
                 one{"{0} litro"}
@@ -881,6 +951,11 @@
                 one{"{0} mililitro"}
                 other{"{0} mililitros"}
             }
+            pinch{
+                dnam{"pizcas"}
+                one{"{0} pizca"}
+                other{"{0} pizcas"}
+            }
             pint{
                 dnam{"pintas"}
                 one{"{0} pinta"}
@@ -896,6 +971,11 @@
                 one{"{0} cuarto"}
                 other{"{0} cuartos"}
             }
+            quart-imperial{
+                dnam{"cuartos imperiales"}
+                one{"{0} cuarto imperial"}
+                other{"{0} cuartos imperiales"}
+            }
             tablespoon{
                 dnam{"cucharadas"}
                 one{"{0} cucharada"}
@@ -962,8 +1042,8 @@
         concentr{
             percent{
                 dnam{"%"}
-                one{"{0} %"}
-                other{"{0} %"}
+                one{"{0}%"}
+                other{"{0}%"}
             }
         }
         consumption{
@@ -988,10 +1068,14 @@
             }
             day{
                 dnam{"d"}
+                one{"{0}d"}
+                other{"{0}d"}
                 per{"{0}/d"}
             }
             hour{
                 dnam{"h"}
+                one{"{0}h"}
+                other{"{0}h"}
                 per{"{0}/h"}
             }
             microsecond{
@@ -1001,15 +1085,19 @@
             }
             millisecond{
                 dnam{"ms"}
+                one{"{0}ms"}
+                other{"{0}ms"}
             }
             minute{
                 dnam{"min"}
+                one{"{0}min"}
+                other{"{0}min"}
                 per{"{0}/min"}
             }
             month{
                 dnam{"m."}
-                one{"{0} m."}
-                other{"{0} m."}
+                one{"{0}m."}
+                other{"{0}m."}
             }
             nanosecond{
                 dnam{"ns"}
@@ -1018,17 +1106,19 @@
             }
             second{
                 dnam{"s"}
+                one{"{0}s"}
+                other{"{0}s"}
                 per{"{0}/s"}
             }
             week{
-                one{"{0} sem."}
-                other{"{0} sem."}
+                one{"{0}sem."}
+                other{"{0}sem."}
                 per{"{0}/sem"}
             }
             year{
                 dnam{"a"}
-                one{"{0} a"}
-                other{"{0} a"}
+                one{"{0}a"}
+                other{"{0}a"}
                 per{"{0}/a"}
             }
         }
@@ -1074,6 +1164,8 @@
             }
             meter{
                 dnam{"m"}
+                one{"{0}m"}
+                other{"{0}m"}
                 per{"{0}/m"}
             }
             micrometer{
@@ -1362,8 +1454,8 @@
                 other{"{0} mmol/L"}
             }
             mole{
-                one{"{0} moles"}
-                other{"{0} moles"}
+                one{"{0} mol"}
+                other{"{0} mol"}
             }
             percent{
                 dnam{"por ciento"}
@@ -1371,7 +1463,6 @@
                 other{"{0} %"}
             }
             permille{
-                dnam{"por mil"}
                 one{"{0} ‰"}
                 other{"{0} ‰"}
             }
@@ -1381,7 +1472,6 @@
                 other{"{0} ppm"}
             }
             permyriad{
-                dnam{"por diez mil"}
                 one{"{0} ‱"}
                 other{"{0} ‱"}
             }
@@ -1558,7 +1648,7 @@
                 other{"{0} Ω"}
             }
             volt{
-                dnam{"voltios"}
+                dnam{"V"}
                 one{"{0} V"}
                 other{"{0} V"}
             }
@@ -1574,13 +1664,10 @@
                 one{"{0} cal"}
                 other{"{0} cal"}
             }
-            electronvolt{
-                dnam{"electronvoltio"}
-            }
             foodcalorie{
-                dnam{"cal"}
-                one{"{0} cal"}
-                other{"{0} cal"}
+                dnam{"kcal"}
+                one{"{0} kcal"}
+                other{"{0} kcal"}
             }
             joule{
                 dnam{"J"}
@@ -1608,14 +1695,6 @@
                 other{"{0} thm EE. UU."}
             }
         }
-        force{
-            newton{
-                dnam{"newton"}
-            }
-            pound-force{
-                dnam{"libra fuerza"}
-            }
-        }
         frequency{
             gigahertz{
                 dnam{"GHz"}
@@ -1639,6 +1718,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"pt"}
+                one{"{0} pt"}
+                other{"{0} pt"}
+            }
             dot-per-centimeter{
                 dnam{"ppcm"}
                 one{"{0} ppcm"}
@@ -1692,12 +1776,20 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            fathom{
+                dnam{"ftm"}
+                one{"{0} ftm"}
+                other{"{0} ftm"}
+            }
             foot{
                 dnam{"ft"}
                 one{"{0} ft"}
                 other{"{0} ft"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"fur"}
+            }
             inch{
                 dnam{"in"}
                 one{"{0} in"}
@@ -1762,13 +1854,10 @@
                 other{"{0} pm"}
             }
             point{
-                dnam{"puntos"}
+                dnam{"ptos."}
                 one{"{0} pto."}
                 other{"{0} ptos."}
             }
-            solar-radius{
-                dnam{"radios solares"}
-            }
             yard{
                 dnam{"yd"}
                 one{"{0} yd"}
@@ -1781,21 +1870,17 @@
                 one{"{0} lx"}
                 other{"{0} lx"}
             }
-            solar-luminosity{
-                dnam{"luminosidades solares"}
-            }
         }
         mass{
             carat{
-                dnam{"c"}
-                one{"{0} c"}
-                other{"{0} c"}
+                dnam{"ct"}
+                one{"{0} ct"}
+                other{"{0} ct"}
             }
-            dalton{
-                dnam{"daltones"}
-            }
-            earth-mass{
-                dnam{"masas terrestres"}
+            grain{
+                dnam{"gr"}
+                one{"{0} gr"}
+                other{"{0} gr"}
             }
             gram{
                 dnam{"g"}
@@ -1810,9 +1895,8 @@
                 per{"{0}/kg"}
             }
             metric-ton{
-                dnam{"tm"}
-                one{"{0} tm"}
-                other{"{0} tm"}
+                one{"{0} t"}
+                other{"{0} t"}
             }
             microgram{
                 dnam{"µg"}
@@ -1841,13 +1925,10 @@
                 other{"{0} lb"}
                 per{"{0}/lb"}
             }
-            solar-mass{
-                dnam{"masas solares"}
-            }
             ton{
-                dnam{"t"}
-                one{"{0} t"}
-                other{"{0} t"}
+                dnam{"tc"}
+                one{"{0} tc"}
+                other{"{0} tc"}
             }
         }
         power{
@@ -1877,7 +1958,7 @@
                 other{"{0} mW"}
             }
             watt{
-                dnam{"vatios"}
+                dnam{"W"}
                 one{"{0} W"}
                 other{"{0} W"}
             }
@@ -1987,7 +2068,6 @@
                 other{"{0} ac ft"}
             }
             barrel{
-                dnam{"barril"}
                 one{"{0} bbl"}
                 other{"{0} bbl"}
             }
@@ -2034,20 +2114,40 @@
                 other{"{0} yd³"}
             }
             cup{
-                dnam{"tazas"}
-                one{"{0} tza."}
-                other{"{0} tza."}
+                dnam{"tza"}
+                one{"{0} tza"}
+                other{"{0} tza"}
             }
             cup-metric{
-                dnam{"mc"}
-                one{"{0} mc"}
-                other{"{0} mc"}
+                dnam{"tza m"}
+                one{"{0} tza m"}
+                other{"{0} tza m"}
             }
             deciliter{
                 dnam{"dl"}
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"c/p"}
+                one{"{0} c/p"}
+                other{"{0} c/p"}
+            }
+            dessert-spoon-imperial{
+                dnam{"dstspn imp."}
+                one{"{0} dstspn imp."}
+                other{"{0} dstspn imp."}
+            }
+            dram{
+                dnam{"fl dr"}
+                one{"{0} fl dr"}
+                other{"{0} fl dr"}
+            }
+            drop{
+                dnam{"gota"}
+                one{"{0} gota"}
+                other{"{0} gotas"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -2075,6 +2175,11 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"medidor"}
+                one{"{0} medidor"}
+                other{"{0} medidores"}
+            }
             liter{
                 dnam{"l"}
                 one{"{0} l"}
@@ -2091,10 +2196,15 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"pzc"}
+                one{"{0} pzc"}
+                other{"{0} pzc"}
+            }
             pint{
-                dnam{"pt"}
-                one{"{0} pt"}
-                other{"{0} pt"}
+                dnam{"p"}
+                one{"{0} p"}
+                other{"{0} p"}
             }
             pint-metric{
                 dnam{"mpt"}
@@ -2106,6 +2216,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"qt imp."}
+                one{"{0} qt imp."}
+                other{"{0} qt imp."}
+            }
             tablespoon{
                 dnam{"cda"}
                 one{"{0} cda"}
diff --git a/icu4c/source/data/unit/es_419.txt b/icu4c/source/data/unit/es_419.txt
index c9bf298..3051b00 100644
--- a/icu4c/source/data/unit/es_419.txt
+++ b/icu4c/source/data/unit/es_419.txt
@@ -1,8 +1,15 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_419{
-    Version{"37"}
     units{
+        acceleration{
+            g-force{
+                dnam{"fuerza G"}
+                one{"{0} unidad de fuerza gravitacional"}
+                other{"{0} unidades de fuerza gravitacional"}
+            }
+        }
         concentr{
             milligram-per-deciliter{
                 dnam{"mg/dL"}
@@ -48,10 +55,15 @@
             }
         }
         mass{
-            stone{
-                dnam{"stones"}
-                one{"{0} stone"}
-                other{"{0} stones"}
+            metric-ton{
+                dnam{"toneladas métricas"}
+                one{"{0} tonelada métrica"}
+                other{"{0} toneladas métricas"}
+            }
+            ton{
+                dnam{"toneladas"}
+                one{"{0} tonelada"}
+                other{"{0} toneladas"}
             }
         }
         power{
@@ -62,6 +74,10 @@
             }
         }
         temperature{
+            generic{
+                one{"{0}°"}
+                other{"{0}°"}
+            }
             kelvin{
                 dnam{"kelvins"}
                 one{"{0} kelvin"}
@@ -99,14 +115,6 @@
                 other{"{0}dd."}
                 per{"{0}/d."}
             }
-            hour{
-                one{"{0}h"}
-                other{"{0}h"}
-            }
-            minute{
-                one{"{0}min"}
-                other{"{0}min"}
-            }
             month{
                 one{"{0}m."}
                 other{"{0}mm."}
@@ -225,6 +233,13 @@
                 per{"{0}/a."}
             }
         }
+        graphics{
+            dot{
+                dnam{"p"}
+                one{"{0} p"}
+                other{"{0} p"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"ua"}
@@ -252,11 +267,6 @@
             }
         }
         mass{
-            carat{
-                dnam{"ct"}
-                one{"{0} ct"}
-                other{"{0} ct"}
-            }
             metric-ton{
                 dnam{"t"}
                 one{"{0} t"}
@@ -284,11 +294,14 @@
             }
         }
         volume{
-            gallon-imperial{
-                per{"{0}/gal Imp."}
+            cup{
+                one{"{0} tza."}
+                other{"{0} tza."}
             }
             pint{
                 dnam{"pintas"}
+                one{"{0} pt"}
+                other{"{0} pt"}
             }
             tablespoon{
                 dnam{"cdas."}
diff --git a/icu4c/source/data/unit/es_AR.txt b/icu4c/source/data/unit/es_AR.txt
index 30820ee..129168d 100644
--- a/icu4c/source/data/unit/es_AR.txt
+++ b/icu4c/source/data/unit/es_AR.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_AR{
     %%Parent{"es_419"}
-    Version{"37"}
     units{
         duration{
             year{
@@ -74,5 +74,15 @@
                 per{"{0}/a"}
             }
         }
+        electric{
+            volt{
+                dnam{"voltios"}
+            }
+        }
+        power{
+            watt{
+                dnam{"vatios"}
+            }
+        }
     }
 }
diff --git a/icu4c/source/data/unit/es_BO.txt b/icu4c/source/data/unit/es_BO.txt
index dac8e43..413f9de 100644
--- a/icu4c/source/data/unit/es_BO.txt
+++ b/icu4c/source/data/unit/es_BO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_BO{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/es_BR.txt b/icu4c/source/data/unit/es_BR.txt
index a8d655c..a18c09f 100644
--- a/icu4c/source/data/unit/es_BR.txt
+++ b/icu4c/source/data/unit/es_BR.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_BR{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/es_BZ.txt b/icu4c/source/data/unit/es_BZ.txt
index f703412..471108e 100644
--- a/icu4c/source/data/unit/es_BZ.txt
+++ b/icu4c/source/data/unit/es_BZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_BZ{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/es_CL.txt b/icu4c/source/data/unit/es_CL.txt
index 37d36d7..bbabb2a 100644
--- a/icu4c/source/data/unit/es_CL.txt
+++ b/icu4c/source/data/unit/es_CL.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CL{
     %%Parent{"es_419"}
-    Version{"37"}
     durationUnits{
         hms{"hh:mm:ss"}
         ms{"mm:ss"}
@@ -25,4 +25,16 @@
             }
         }
     }
+    unitsShort{
+        electric{
+            volt{
+                dnam{"voltios"}
+            }
+        }
+        power{
+            watt{
+                dnam{"vatios"}
+            }
+        }
+    }
 }
diff --git a/icu4c/source/data/unit/es_CO.txt b/icu4c/source/data/unit/es_CO.txt
index 7133af7..d5e2cfc 100644
--- a/icu4c/source/data/unit/es_CO.txt
+++ b/icu4c/source/data/unit/es_CO.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CO{
     %%Parent{"es_419"}
-    Version{"37"}
     units{
         duration{
             month{
diff --git a/icu4c/source/data/unit/es_CR.txt b/icu4c/source/data/unit/es_CR.txt
index 209ac6c..6164236 100644
--- a/icu4c/source/data/unit/es_CR.txt
+++ b/icu4c/source/data/unit/es_CR.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CR{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/es_CU.txt b/icu4c/source/data/unit/es_CU.txt
index a316a0d..1a3a70a 100644
--- a/icu4c/source/data/unit/es_CU.txt
+++ b/icu4c/source/data/unit/es_CU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CU{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/es_DO.txt b/icu4c/source/data/unit/es_DO.txt
index c6fb2a2..34bb688 100644
--- a/icu4c/source/data/unit/es_DO.txt
+++ b/icu4c/source/data/unit/es_DO.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_DO{
     %%Parent{"es_419"}
-    Version{"37"}
     units{
         electric{
             ampere{
@@ -44,5 +44,15 @@
                 other{"{0} seg."}
             }
         }
+        electric{
+            volt{
+                dnam{"voltios"}
+            }
+        }
+        power{
+            watt{
+                dnam{"vatios"}
+            }
+        }
     }
 }
diff --git a/icu4c/source/data/unit/es_EC.txt b/icu4c/source/data/unit/es_EC.txt
index e9e9808..eafd1a4 100644
--- a/icu4c/source/data/unit/es_EC.txt
+++ b/icu4c/source/data/unit/es_EC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_EC{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/es_GT.txt b/icu4c/source/data/unit/es_GT.txt
index 78a3245..d51db8b 100644
--- a/icu4c/source/data/unit/es_GT.txt
+++ b/icu4c/source/data/unit/es_GT.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_GT{
     %%Parent{"es_419"}
-    Version{"37"}
     units{
         duration{
             day{
@@ -63,11 +63,21 @@
         }
     }
     unitsShort{
+        electric{
+            volt{
+                dnam{"voltios"}
+            }
+        }
         length{
             foot{
                 dnam{"pie"}
             }
         }
+        power{
+            watt{
+                dnam{"vatios"}
+            }
+        }
         volume{
             acre-foot{
                 dnam{"acre pie"}
diff --git a/icu4c/source/data/unit/es_HN.txt b/icu4c/source/data/unit/es_HN.txt
index cd727c1..4446521 100644
--- a/icu4c/source/data/unit/es_HN.txt
+++ b/icu4c/source/data/unit/es_HN.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_HN{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/es_MX.txt b/icu4c/source/data/unit/es_MX.txt
index 09dfead..f1daeac 100644
--- a/icu4c/source/data/unit/es_MX.txt
+++ b/icu4c/source/data/unit/es_MX.txt
@@ -1,20 +1,19 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_MX{
     %%Parent{"es_419"}
-    Version{"37"}
     units{
         concentr{
             milligram-per-deciliter{
-                one{"{0} mg/dL"}
-                other{"{0} mg/dL"}
+                dnam{"miligramos por decilitro"}
             }
-            millimole-per-liter{
-                dnam{"mmol/L"}
-            }
-            permillion{
-                dnam{"ppm"}
-            }
+        }
+        coordinate{
+            east{"{0} este"}
+            north{"{0} norte"}
+            south{"{0} sur"}
+            west{"{0} oeste"}
         }
         electric{
             ohm{
@@ -31,11 +30,6 @@
             }
         }
         length{
-            micrometer{
-                dnam{"micrometros"}
-                one{"{0} micrometro"}
-                other{"{0} micrometros"}
-            }
             mile-scandinavian{
                 dnam{"millas escandinavas"}
             }
@@ -68,11 +62,6 @@
                 other{"{0} kelvines"}
             }
         }
-        torque{
-            newton-meter{
-                dnam{"newton metros"}
-            }
-        }
         volume{
             acre-foot{
                 one{"{0} acre-pie"}
@@ -122,9 +111,6 @@
             }
         }
         angle{
-            arc-second{
-                dnam{"arcseg"}
-            }
             degree{
                 dnam{"º"}
             }
@@ -172,9 +158,11 @@
                 per{"{0}/a"}
             }
         }
-        electric{
-            volt{
-                dnam{"V"}
+        graphics{
+            dot{
+                dnam{"pto"}
+                one{"{0} pto"}
+                other{"{0} ptos"}
             }
         }
         length{
diff --git a/icu4c/source/data/unit/es_NI.txt b/icu4c/source/data/unit/es_NI.txt
index e711c11..a58e4ec 100644
--- a/icu4c/source/data/unit/es_NI.txt
+++ b/icu4c/source/data/unit/es_NI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_NI{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/es_PA.txt b/icu4c/source/data/unit/es_PA.txt
index aa48114..248e100 100644
--- a/icu4c/source/data/unit/es_PA.txt
+++ b/icu4c/source/data/unit/es_PA.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PA{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/es_PE.txt b/icu4c/source/data/unit/es_PE.txt
index a0f01df..80ab18e 100644
--- a/icu4c/source/data/unit/es_PE.txt
+++ b/icu4c/source/data/unit/es_PE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PE{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/es_PR.txt b/icu4c/source/data/unit/es_PR.txt
index 10a09c6..18906c1 100644
--- a/icu4c/source/data/unit/es_PR.txt
+++ b/icu4c/source/data/unit/es_PR.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PR{
     %%Parent{"es_419"}
-    Version{"37"}
     unitsNarrow{
         temperature{
             fahrenheit{
diff --git a/icu4c/source/data/unit/es_PY.txt b/icu4c/source/data/unit/es_PY.txt
index d45a290..581dc85 100644
--- a/icu4c/source/data/unit/es_PY.txt
+++ b/icu4c/source/data/unit/es_PY.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PY{
     %%Parent{"es_419"}
-    Version{"37"}
     units{
         duration{
             year{
@@ -66,5 +66,15 @@
                 per{"{0}/año"}
             }
         }
+        electric{
+            volt{
+                dnam{"voltios"}
+            }
+        }
+        power{
+            watt{
+                dnam{"vatios"}
+            }
+        }
     }
 }
diff --git a/icu4c/source/data/unit/es_SV.txt b/icu4c/source/data/unit/es_SV.txt
index 426c56d..b4ed595 100644
--- a/icu4c/source/data/unit/es_SV.txt
+++ b/icu4c/source/data/unit/es_SV.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_SV{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/es_US.txt b/icu4c/source/data/unit/es_US.txt
index d387532..7f34786 100644
--- a/icu4c/source/data/unit/es_US.txt
+++ b/icu4c/source/data/unit/es_US.txt
@@ -1,41 +1,31 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_US{
     %%Parent{"es_419"}
-    Version{"37"}
     units{
-        angle{
-            arc-minute{
-                dnam{"arcominutos"}
-                one{"{0} minuto"}
-                other{"{0} minutos"}
-            }
-            arc-second{
-                dnam{"arcosegundos"}
-                one{"{0} segundo"}
-                other{"{0} segundos"}
-            }
-        }
         concentr{
             milligram-per-deciliter{
-                one{"{0} mg/dL"}
-                other{"{0} mg/dL"}
-            }
-            millimole-per-liter{
-                dnam{"mmol/L"}
-            }
-            permillion{
-                dnam{"ppm"}
+                dnam{"miligramos por decilitro"}
             }
         }
-        consumption{
-            mile-per-gallon-imperial{
-                dnam{"mpg Imp."}
-                one{"{0} mpg Imp."}
-                other{"{0} mpg Imp."}
-            }
+        coordinate{
+            east{"{0} este"}
+            north{"{0} norte"}
+            south{"{0} sur"}
+            west{"{0} oeste"}
         }
         electric{
+            ampere{
+                dnam{"amperios"}
+                one{"{0} amperio"}
+                other{"{0} amperios"}
+            }
+            milliampere{
+                dnam{"miliamperio"}
+                one{"{0} miliamperio"}
+                other{"{0} miliamperios"}
+            }
             ohm{
                 dnam{"ohmios"}
                 one{"{0} ohmio"}
@@ -43,68 +33,115 @@
             }
         }
         energy{
+            foodcalorie{
+                dnam{"Calorías"}
+                one{"{0} Caloría"}
+                other{"{0} Calorías"}
+            }
+            joule{
+                dnam{"julios"}
+                one{"{0} julio"}
+                other{"{0} julios"}
+            }
+            kilojoule{
+                dnam{"kilojulios"}
+                one{"{0} kilojulio"}
+                other{"{0} kilojulio"}
+            }
             kilowatt-hour{
-                dnam{"kilovatios hora"}
-                one{"{0} kilovatio hora"}
-                other{"{0} kilovatios hora"}
+                dnam{"kilovatios por hora"}
+                one{"{0} kilovatio por hora"}
+                other{"{0} kilovatios por hora"}
+            }
+        }
+        graphics{
+            em{
+                dnam{"espacio eme"}
+            }
+            megapixel{
+                dnam{"megapixeles"}
+                one{"{0} megapixel"}
+                other{"{0} megapixeles"}
+            }
+            pixel{
+                dnam{"pixeles"}
+                one{"{0} pixel"}
+                other{"{0} pixeles"}
+            }
+            pixel-per-centimeter{
+                dnam{"pixeles por centímetro"}
+                one{"{0} pixel por centímetro"}
+                other{"{0} pixeles por centímetro"}
+            }
+            pixel-per-inch{
+                dnam{"pixeles por pulgada"}
+                one{"{0} pixel por pulgada"}
+                other{"{0} pixeles por pulgada"}
             }
         }
         length{
-            mile-scandinavian{
-                dnam{"millas escandinavas"}
+            furlong{
+                dnam{"furlones"}
+                one{"{0} furlong"}
+                other{"{0} frulones"}
             }
             nautical-mile{
                 dnam{"millas naúticas"}
                 one{"{0} milla naútica"}
                 other{"{0} millas naúticas"}
             }
-            point{
-                dnam{"pt"}
-                one{"{0} pt"}
-                other{"{0} pt"}
-            }
-        }
-        light{
-            lux{
-                dnam{"lux"}
-            }
         }
         power{
             horsepower{
-                one{"{0} caballo de vapor"}
-                other{"{0} caballos de vapor"}
+                one{"{0} caballo de fuerza"}
+                other{"{0} caballos de fuerza"}
             }
         }
         temperature{
+            generic{
+                one{"{0} grado"}
+                other{"{0} grados"}
+            }
             kelvin{
                 dnam{"kelvin"}
                 one{"kelvin"}
                 other{"{0} kelvin"}
             }
         }
+        torque{
+            pound-force-foot{
+                dnam{"libra fuerza-pies"}
+                one{"{0} libra fuerza-pie"}
+                other{"{0} libra fuerza-pies"}
+            }
+        }
         volume{
             acre-foot{
                 dnam{"acres-pies"}
                 one{"{0} acre-pie"}
-                other{"{0} acre-pies"}
+                other{"{0} acres pies"}
             }
-            fluid-ounce{
-                dnam{"onzas líquidas"}
-                one{"{0} onza líquida"}
-                other{"{0} onzas líquidas"}
+            dram{
+                dnam{"dracma fluida"}
+                one{"{0} dracma fluida"}
+                other{"{0} dreacmas fluidas"}
             }
-            gallon-imperial{
-                dnam{"Imp. gal"}
-                one{"{0} gal Imp."}
-                other{"{0} gal Imp."}
-                per{"{0}/gal Imp."}
+            fluid-ounce-imperial{
+                dnam{"onzas fluidas imperiales"}
+                one{"onza fluida imperial"}
+                other{"{0} onzas fluidas imperiales"}
+            }
+            jigger{
+                dnam{"jigger"}
+                one{"{0} jigger"}
+                other{"{0} jiggers"}
             }
         }
     }
     unitsNarrow{
         duration{
             day{
-                dnam{"días"}
+                dnam{"día"}
                 one{"{0}d"}
                 other{"{0}d"}
             }
@@ -113,11 +150,6 @@
                 one{"{0}m"}
                 other{"{0}m"}
             }
-            week{
-                dnam{"sem"}
-                one{"{0}sem"}
-                other{"{0}sem"}
-            }
             year{
                 dnam{"a"}
                 one{"{0}a"}
@@ -132,27 +164,6 @@
         }
     }
     unitsShort{
-        acceleration{
-            g-force{
-                dnam{"Fg"}
-                one{"{0} Fg"}
-                other{"{0} Fg"}
-            }
-        }
-        angle{
-            arc-minute{
-                one{"{0} min"}
-                other{"{0} min"}
-            }
-            arc-second{
-                dnam{"arcseg"}
-                one{"{0} s"}
-                other{"{0} s"}
-            }
-            degree{
-                dnam{"grad."}
-            }
-        }
         concentr{
             percent{
                 dnam{"%"}
@@ -161,13 +172,6 @@
                 dnam{"‰"}
             }
         }
-        consumption{
-            mile-per-gallon-imperial{
-                dnam{"mpg Imp."}
-                one{"{0} mpg Imp."}
-                other{"{0} mpg Imp."}
-            }
-        }
         digital{
             bit{
                 dnam{"bit"}
@@ -183,74 +187,116 @@
                 other{"{0} días"}
                 per{"{0}/d"}
             }
+            minute{
+                dnam{"mins"}
+            }
             month{
                 one{"{0} m"}
-                other{"{0} m"}
-            }
-            week{
-                one{"{0} sem"}
-                other{"{0} sem"}
+                other{"{0} mm."}
             }
             year{
-                dnam{"a"}
                 one{"{0} a"}
-                other{"{0} a"}
+                other{"{0} aa."}
                 per{"{0}/a"}
             }
         }
+        energy{
+            foodcalorie{
+                dnam{"Cal"}
+                one{"{0} Cal"}
+                other{"{0} Cal"}
+            }
+            therm-us{
+                dnam{"th US"}
+                one{"{0} th US"}
+                other{"{0} th US"}
+            }
+        }
+        graphics{
+            dot{
+                dnam{"pts"}
+                one{"{0} pts"}
+                other{"{0} p"}
+            }
+        }
         length{
-            astronomical-unit{
-                dnam{"au"}
-                one{"{0} au"}
-                other{"{0} au"}
+            fathom{
+                dnam{"brz."}
+                one{"{0} brz."}
+                other{"{0} brz."}
+            }
+            furlong{
+                dnam{"furlones"}
+                one{"{0} fur."}
+                other{"{0} fur."}
             }
             light-year{
                 one{"{0} a. l."}
                 other{"{0} a. l."}
             }
             nautical-mile{
-                dnam{"M"}
-                one{"{0} M"}
-                other{"{0} M"}
-            }
-            point{
-                dnam{"pt"}
-                one{"{0} pt"}
-                other{"{0} pt"}
+                dnam{"mn"}
+                one{"{0} mn"}
+                other{"{0} mn"}
             }
             yard{
                 dnam{"yd"}
             }
         }
-        mass{
-            carat{
-                dnam{"c"}
-                one{"{0} c"}
-                other{"{0} c"}
-            }
-            ounce-troy{
-                dnam{"oz t"}
-                one{"{0} oz t"}
-                other{"{0} oz t"}
+        speed{
+            knot{
+                dnam{"nudo"}
+                one{"{0} nudo"}
+                other{"{0} nudos"}
             }
         }
-        power{
-            horsepower{
-                dnam{"CV"}
-                one{"{0} CV"}
-                other{"{0} CV"}
+        torque{
+            pound-force-foot{
+                dnam{"lbf⋅ft"}
+                one{"{0} lbf⋅ft"}
+                other{"{0} lbf⋅ft"}
             }
         }
         volume{
+            bushel{
+                dnam{"bsh"}
+                one{"{0} bsh"}
+                other{"{0} bsh"}
+            }
             cup{
                 dnam{"tza."}
                 one{"{0} tza."}
                 other{"{0} tzas."}
             }
-            gallon-imperial{
-                dnam{"Imp. gal"}
-                one{"{0} gal Imp."}
-                other{"{0} gal Imp."}
+            cup-metric{
+                dnam{"Tm"}
+                one{"{0} Tm"}
+                other{"{0} Tm"}
+            }
+            dessert-spoon{
+                dnam{"cdapostre"}
+                one{"{0} cdapostre"}
+                other{"{0} cdapostre"}
+            }
+            dessert-spoon-imperial{
+                dnam{"cdapostre imp."}
+                one{"{0} cdapostre imp."}
+                other{"{0} cdaspostre imp."}
+            }
+            dram{
+                dnam{"fl dracma"}
+                one{"{0} fl dracma"}
+                other{"{0} fl dracmas"}
+            }
+            jigger{
+                dnam{"jigger"}
+                one{"{0} jigger"}
+                other{"{0} jiggers"}
+            }
+            pint-metric{
+                dnam{"ptm"}
+                one{"{0} ptm"}
+                other{"{0} ptm"}
             }
         }
     }
diff --git a/icu4c/source/data/unit/es_UY.txt b/icu4c/source/data/unit/es_UY.txt
index 41fc7c0..143b9b3 100644
--- a/icu4c/source/data/unit/es_UY.txt
+++ b/icu4c/source/data/unit/es_UY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_UY{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/es_VE.txt b/icu4c/source/data/unit/es_VE.txt
index 445e952..7f8b65e 100644
--- a/icu4c/source/data/unit/es_VE.txt
+++ b/icu4c/source/data/unit/es_VE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_VE{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/et.txt b/icu4c/source/data/unit/et.txt
index 16bd5da..0c3addb 100644
--- a/icu4c/source/data/unit/et.txt
+++ b/icu4c/source/data/unit/et.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 et{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -409,6 +409,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"punkt"}
+                one{"{0} punkt"}
+                other{"{0} punkti"}
+            }
             dot-per-centimeter{
                 dnam{"punkte sentimeetri kohta"}
                 one{"{0} punkt sentimeetri kohta"}
@@ -462,6 +467,11 @@
                 one{"{0} detsimeeter"}
                 other{"{0} detsimeetrit"}
             }
+            earth-radius{
+                dnam{"Maa raadius"}
+                one{"{0} Maa raadius"}
+                other{"{0} Maa raadiust"}
+            }
             fathom{
                 dnam{"süllad"}
                 one{"{0} süld"}
@@ -542,9 +552,9 @@
                 other{"{0} pikomeetrit"}
             }
             point{
-                dnam{"punktid"}
-                one{"{0} punkt"}
-                other{"{0} punkti"}
+                dnam{"tüpograafilised punktid"}
+                one{"{0} tüpograafiline punkt"}
+                other{"{0} tüpograafilist punkti"}
             }
             solar-radius{
                 dnam{"Päikese raadiused"}
@@ -558,6 +568,16 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                one{"{0} kandela"}
+                other{"{0} kandelat"}
+            }
+            lumen{
+                dnam{"luumen"}
+                one{"{0} luumen"}
+                other{"{0} luumenit"}
+            }
             lux{
                 dnam{"luks"}
                 one{"{0} luks"}
@@ -583,6 +603,11 @@
                 one{"{0} Maa massi"}
                 other{"{0} Maa massi"}
             }
+            grain{
+                dnam{"graan"}
+                one{"{0} graan"}
+                other{"{0} graani"}
+            }
             gram{
                 dnam{"grammid"}
                 one{"{0} gramm"}
@@ -856,6 +881,26 @@
                 one{"{0} detsiliiter"}
                 other{"{0} detsiliitrit"}
             }
+            dessert-spoon{
+                dnam{"dessertlusikas"}
+                one{"{0} dessertlusikas"}
+                other{"{0} dessertlusikat"}
+            }
+            dessert-spoon-imperial{
+                dnam{"inglise dessertlusikas"}
+                one{"{0} inglise dessertlusikas"}
+                other{"{0} inglise dessertlusikat"}
+            }
+            dram{
+                dnam{"drahm"}
+                one{"{0} drahm"}
+                other{"{0} drahmi"}
+            }
+            drop{
+                dnam{"tilk"}
+                one{"{0} tilk"}
+                other{"{0} tilka"}
+            }
             fluid-ounce{
                 dnam{"vedelikuuntsid"}
                 one{"{0} vedelikuunts"}
@@ -883,6 +928,11 @@
                 one{"{0} hektoliiter"}
                 other{"{0} hektoliitrit"}
             }
+            jigger{
+                dnam{"pits"}
+                one{"{0} pits"}
+                other{"{0} pitsi"}
+            }
             liter{
                 dnam{"liitrid"}
                 one{"{0} liiter"}
@@ -899,6 +949,11 @@
                 one{"{0} milliliiter"}
                 other{"{0} milliliitrit"}
             }
+            pinch{
+                dnam{"näputäis"}
+                one{"{0} näputäis"}
+                other{"{0} näputäit"}
+            }
             pint{
                 dnam{"pindid"}
                 one{"{0} pint"}
@@ -914,6 +969,11 @@
                 one{"{0} kvart"}
                 other{"{0} kvarti"}
             }
+            quart-imperial{
+                dnam{"inglise kvart"}
+                one{"{0} inglise kvart"}
+                other{"{0} inglise kvarti"}
+            }
             tablespoon{
                 dnam{"supilusikad"}
                 one{"{0} supilusikas"}
@@ -1614,6 +1674,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"p"}
+                one{"{0} p"}
+                other{"{0} p"}
+            }
             dot-per-centimeter{
                 one{"{0} dpcm"}
                 other{"{0} dpcm"}
@@ -1785,6 +1850,11 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"graan"}
+                one{"{0} graan"}
+                other{"{0} graani"}
+            }
             gram{
                 dnam{"grammid"}
                 one{"{0} g"}
@@ -2049,6 +2119,21 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon-imperial{
+                dnam{"ingl dl"}
+                one{"{0} ingl dl"}
+                other{"{0} ingl dl"}
+            }
+            dram{
+                dnam{"drahm vedelikku"}
+                one{"{0} drahm vedelikku"}
+                other{"{0} drahmi vedelikku"}
+            }
+            drop{
+                dnam{"tilk"}
+                one{"{0} tilk"}
+                other{"{0} tilka"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -2076,6 +2161,11 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"pits"}
+                one{"{0} pits"}
+                other{"{0} pitsi"}
+            }
             liter{
                 dnam{"liitrid"}
                 one{"{0} l"}
@@ -2092,6 +2182,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"näputäis"}
+                one{"{0} näputäis"}
+                other{"{0} näputäit"}
+            }
             pint{
                 dnam{"pindid"}
                 one{"{0} pt"}
@@ -2107,6 +2202,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"ingl kvart"}
+                one{"{0} ingl kvart"}
+                other{"{0} ingl kvarti"}
+            }
             tablespoon{
                 dnam{"spl"}
                 one{"{0} spl"}
diff --git a/icu4c/source/data/unit/eu.txt b/icu4c/source/data/unit/eu.txt
index 83f5c30..42fb70d 100644
--- a/icu4c/source/data/unit/eu.txt
+++ b/icu4c/source/data/unit/eu.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 eu{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -388,6 +388,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"puntua"}
+                one{"{0} puntu"}
+                other{"{0} puntu"}
+            }
             dot-per-centimeter{
                 dnam{"puntu zentimetroko"}
                 one{"{0} puntu zentimetroko"}
@@ -441,12 +446,27 @@
                 one{"{0} dezimetro"}
                 other{"{0} dezimetro"}
             }
+            earth-radius{
+                dnam{"Lurraren erradio"}
+                one{"{0} Lurraren erradio"}
+                other{"{0} Lurraren erradio"}
+            }
+            fathom{
+                dnam{"besoa"}
+                one{"{0} beso"}
+                other{"{0} beso"}
+            }
             foot{
                 dnam{"oin"}
                 one{"{0} oin"}
                 other{"{0} oin"}
                 per{"{0} oin bakoitzeko"}
             }
+            furlong{
+                dnam{"fulong"}
+                one{"{0} furlong"}
+                other{"{0} furlong"}
+            }
             inch{
                 dnam{"hazbete"}
                 one{"{0} hazbete"}
@@ -512,8 +532,8 @@
             }
             point{
                 dnam{"puntu"}
-                one{"{0} puntu"}
-                other{"{0} puntu"}
+                one{"{0} puntu tipografiko"}
+                other{"{0} puntu tipografiko"}
             }
             solar-radius{
                 one{"{0} eguzki-erradio"}
@@ -526,6 +546,16 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                one{"{0} kandela"}
+                other{"{0} kandela"}
+            }
+            lumen{
+                dnam{"lumena"}
+                one{"{0} lumen"}
+                other{"{0} lumen"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
@@ -545,12 +575,17 @@
             }
             dalton{
                 one{"{0} dalton"}
-                other{"{0} daltons"}
+                other{"{0} dalton"}
             }
             earth-mass{
                 one{"{0} lur-masa"}
                 other{"{0} lur-masa"}
             }
+            grain{
+                dnam{"alea"}
+                one{"{0} ale"}
+                other{"{0} ale"}
+            }
             gram{
                 dnam{"gramoak"}
                 one{"{0} gramo"}
@@ -599,6 +634,11 @@
                 one{"{0} eguzki-masa"}
                 other{"{0} eguzki-masa"}
             }
+            stone{
+                dnam{"stone-a"}
+                one{"{0} stone"}
+                other{"{0} stone"}
+            }
             ton{
                 dnam{"AEBko tonak"}
                 one{"{0} AEBko tona"}
@@ -695,7 +735,7 @@
                 other{"{0} kilometro orduko"}
             }
             knot{
-                dnam{"knot"}
+                dnam{"korapilo"}
                 one{"{0} korapilo"}
                 other{"{0} korapilo"}
             }
@@ -754,6 +794,11 @@
                 one{"{0} upel"}
                 other{"{0} upel"}
             }
+            bushel{
+                dnam{"bushelak"}
+                one{"{0} bushel"}
+                other{"{0} bushel"}
+            }
             centiliter{
                 dnam{"zentilitro"}
                 one{"{0} zentilitro"}
@@ -811,6 +856,26 @@
                 one{"{0} dezilitro"}
                 other{"{0} dezilitro"}
             }
+            dessert-spoon{
+                dnam{"postre-koilarakada"}
+                one{"{0} postre-koilarakada"}
+                other{"{0} postre-koilarakada"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Postre-koilarakada inperiala"}
+                one{"{0} postre-koilarakada inperial"}
+                other{"{0} postre-koilarakada inperial"}
+            }
+            dram{
+                dnam{"dram fluidoa"}
+                one{"{0} dram fluido"}
+                other{"{0} dram fluido"}
+            }
+            drop{
+                dnam{"tanta"}
+                one{"{0} tanta"}
+                other{"{0} tanta"}
+            }
             fluid-ounce{
                 dnam{"ontza likido"}
                 one{"{0} likido-ontza"}
@@ -837,6 +902,11 @@
                 one{"{0} hektolitro"}
                 other{"{0} hektolitro"}
             }
+            jigger{
+                dnam{"txupitoa"}
+                one{"{0} txupito"}
+                other{"{0} txupito"}
+            }
             liter{
                 dnam{"litro"}
                 one{"{0} litro"}
@@ -853,6 +923,11 @@
                 one{"{0} mililitro"}
                 other{"{0} mililitro"}
             }
+            pinch{
+                dnam{"pinch-a"}
+                one{"{0} pinch"}
+                other{"{0} pinch"}
+            }
             pint{
                 dnam{"pinta"}
                 one{"{0} pinta"}
@@ -868,6 +943,11 @@
                 one{"{0} galoi-laurden"}
                 other{"{0} galoi-laurden"}
             }
+            quart-imperial{
+                dnam{"laurden inperiala"}
+                one{"{0} laurden inperial"}
+                other{"{0} laurden inperial"}
+            }
             tablespoon{
                 dnam{"koilarakada"}
                 one{"{0} koilarakada"}
@@ -1507,6 +1587,9 @@
             }
         }
         graphics{
+            dot{
+                dnam{"puntua"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 one{"{0} dpcm"}
@@ -1546,8 +1629,8 @@
         length{
             astronomical-unit{
                 dnam{"ua"}
-                one{"{0} au"}
-                other{"{0} au"}
+                one{"{0} ua"}
+                other{"{0} ua"}
             }
             centimeter{
                 dnam{"cm"}
@@ -1560,12 +1643,22 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            fathom{
+                dnam{"fm"}
+                one{"{0} fm"}
+                other{"{0} fm"}
+            }
             foot{
                 dnam{"oin"}
                 one{"{0} ft"}
                 other{"{0} ft"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"furlong"}
+                one{"{0} fur"}
+                other{"{0} fur"}
+            }
             inch{
                 dnam{"hazbete"}
                 one{"{0} in"}
@@ -1631,8 +1724,8 @@
             }
             point{
                 dnam{"puntu"}
-                one{"{0} puntu"}
-                other{"{0} puntu"}
+                one{"{0} pt"}
+                other{"{0} pt"}
             }
             solar-radius{
                 dnam{"eguzki-erradio"}
@@ -1644,6 +1737,16 @@
             }
         }
         light{
+            candela{
+                dnam{"cd"}
+                one{"{0} cd"}
+                other{"{0} cd"}
+            }
+            lumen{
+                dnam{"lm"}
+                one{"{0} lm"}
+                other{"{0} lm"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
@@ -1667,6 +1770,11 @@
                 one{"{0} lur-masa"}
                 other{"{0} lur-masa"}
             }
+            grain{
+                dnam{"alea"}
+                one{"{0} ale"}
+                other{"{0} ale"}
+            }
             gram{
                 dnam{"g"}
                 one{"{0} g"}
@@ -1716,6 +1824,10 @@
                 one{"{0} eguzki-masa"}
                 other{"{0} eguzki-masa"}
             }
+            stone{
+                one{"{0} st"}
+                other{"{0} st"}
+            }
             ton{
                 dnam{"AEBko tona"}
                 one{"{0} AEBko tona"}
@@ -1873,6 +1985,11 @@
                 one{"{0} upel"}
                 other{"{0} upel"}
             }
+            bushel{
+                dnam{"bushelak"}
+                one{"{0} bu"}
+                other{"{0} bu"}
+            }
             centiliter{
                 dnam{"cl"}
                 one{"{0} cl"}
@@ -1930,6 +2047,26 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"postre-koilar."}
+                one{"{0} postre-koilar."}
+                other{"{0} postre-koilar."}
+            }
+            dessert-spoon-imperial{
+                dnam{"postre-koilar. inp."}
+                one{"{0} postre-koilar. inp."}
+                other{"{0} postre-koilar. inp."}
+            }
+            dram{
+                dnam{"dram fluidoa"}
+                one{"{0} dram fl"}
+                other{"{0} dram fl"}
+            }
+            drop{
+                dnam{"tanta"}
+                one{"{0} tanta"}
+                other{"{0} tanta"}
+            }
             fluid-ounce{
                 dnam{"likido-ontza"}
                 one{"{0} likido-ontza"}
@@ -1957,6 +2094,11 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"txupitoa"}
+                one{"{0} txupito"}
+                other{"{0} txupito"}
+            }
             liter{
                 dnam{"l"}
                 one{"{0} l"}
@@ -1973,6 +2115,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"pinch-a"}
+                one{"{0} pinch"}
+                other{"{0} pinch"}
+            }
             pint{
                 dnam{"pinta"}
                 one{"{0} pinta"}
@@ -1988,6 +2135,11 @@
                 one{"{0} galoi-laurden"}
                 other{"{0} galoi-laurden"}
             }
+            quart-imperial{
+                dnam{"qt Imp"}
+                one{"{0} qt Imp."}
+                other{"{0} qt Imp."}
+            }
             tablespoon{
                 dnam{"koilarakada"}
                 one{"{0} koilarakada"}
diff --git a/icu4c/source/data/unit/ewo.txt b/icu4c/source/data/unit/ewo.txt
index 9fd55df..c522c94 100644
--- a/icu4c/source/data/unit/ewo.txt
+++ b/icu4c/source/data/unit/ewo.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ewo{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/fa.txt b/icu4c/source/data/unit/fa.txt
index 7a58e50..4d166da 100644
--- a/icu4c/source/data/unit/fa.txt
+++ b/icu4c/source/data/unit/fa.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fa{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -10,9 +10,9 @@
     units{
         acceleration{
             g-force{
-                dnam{"نیروی جاذبه"}
-                one{"{0} نیروی جاذبه"}
-                other{"{0} جاذبه"}
+                dnam{"گرانش"}
+                one{"{0} جی"}
+                other{"{0} جی"}
             }
             meter-per-square-second{
                 dnam{"متر بر مجذور ثانیه"}
@@ -406,6 +406,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"نقطه"}
+                one{"{0}نقطه"}
+                other{"{0}نقطه"}
+            }
             dot-per-centimeter{
                 dnam{"نقطه در سانتی‌متر"}
                 one{"{0} نقطه در سانتی‌متر"}
@@ -454,12 +459,27 @@
                 one{"{0} دسی‌متر"}
                 other{"{0} دسی‌متر"}
             }
+            earth-radius{
+                dnam{"شعاع زمین"}
+                one{"{0} شعاع زمین"}
+                other{"{0} شعاع زمین"}
+            }
+            fathom{
+                dnam{"فاتوم"}
+                one{"{0} فاتوم"}
+                other{"{0} فاتوم"}
+            }
             foot{
                 dnam{"فوت"}
                 one{"{0} فوت"}
                 other{"{0} فوت"}
                 per{"{0}/فوت"}
             }
+            furlong{
+                dnam{"فرلانگ"}
+                one{"{0} فرلانگ"}
+                other{"{0} فرلانگ"}
+            }
             inch{
                 dnam{"اینچ"}
                 one{"{0} اینچ"}
@@ -524,9 +544,9 @@
                 other{"{0} پیکومتر"}
             }
             point{
-                dnam{"پونت"}
-                one{"{0} پونت"}
-                other{"{0} پونت"}
+                dnam{"پوینت"}
+                one{"{0} پوینت"}
+                other{"{0} پوینت"}
             }
             solar-radius{
                 dnam{"شعاع خورشید"}
@@ -540,6 +560,16 @@
             }
         }
         light{
+            candela{
+                dnam{"شمع"}
+                one{"{0} شمع"}
+                other{"{0} شمع"}
+            }
+            lumen{
+                dnam{"لومن"}
+                one{"{0} لومن"}
+                other{"{0} لومن"}
+            }
             lux{
                 dnam{"لوکس"}
                 one{"{0} لوکس"}
@@ -567,6 +597,11 @@
                 one{"{0} جرم زمین"}
                 other{"{0} جرم زمین"}
             }
+            grain{
+                dnam{"دانه"}
+                one{"{0} دانه"}
+                other{"{0} دانه"}
+            }
             gram{
                 dnam{"گرم"}
                 one{"{0} گرم"}
@@ -616,6 +651,11 @@
                 one{"{0} جرم خورشید"}
                 other{"{0} جرم خورشید"}
             }
+            stone{
+                dnam{"سنگ"}
+                one{"{0} سنگ"}
+                other{"{0} سنگ"}
+            }
             ton{
                 dnam{"تن"}
                 one{"{0} تن"}
@@ -772,6 +812,11 @@
                 one{"{0} بشکه"}
                 other{"{0} بشکه"}
             }
+            bushel{
+                dnam{"بوشل"}
+                one{"{0} بوشل"}
+                other{"{0} بوشل"}
+            }
             centiliter{
                 dnam{"سانتی‌لیتر"}
                 one{"{0} سانتی‌لیتر"}
@@ -829,6 +874,26 @@
                 one{"{0} دسی‌لیتر"}
                 other{"{0} دسی‌لیتر"}
             }
+            dessert-spoon{
+                dnam{"قاشق دسرخوری"}
+                one{"{0} قاشق دسرخوری"}
+                other{"{0} قاشق دسرخوری"}
+            }
+            dessert-spoon-imperial{
+                dnam{"قاشق دسرخوری امپراتوری"}
+                one{"{0} قاشق دسرخوری امپراتوری"}
+                other{"{0} قاشق دسرخوری امپراتوری"}
+            }
+            dram{
+                dnam{"درم"}
+                one{"{0} درم"}
+                other{"{0} درم"}
+            }
+            drop{
+                dnam{"قطره"}
+                one{"{0} قطره"}
+                other{"{0} قطره"}
+            }
             fluid-ounce{
                 dnam{"اونس سیال"}
                 one{"{0} اونس سیال"}
@@ -856,6 +921,11 @@
                 one{"{0} هکتولیتر"}
                 other{"{0} هکتولیتر"}
             }
+            jigger{
+                dnam{"گیلاس"}
+                one{"{0} گیلاس"}
+                other{"{0} گیلاس"}
+            }
             liter{
                 dnam{"لیتر"}
                 one{"{0} لیتر"}
@@ -872,6 +942,11 @@
                 one{"{0} میلی‌لیتر"}
                 other{"{0} میلی‌لیتر"}
             }
+            pinch{
+                dnam{"یک سر انگشت"}
+                one{"{0} یک سر انگشت"}
+                other{"{0} یک سر انگشت"}
+            }
             pint{
                 dnam{"پاینت"}
                 one{"{0} پاینت"}
@@ -887,6 +962,11 @@
                 one{"{0} کوارت"}
                 other{"{0} کوارت"}
             }
+            quart-imperial{
+                dnam{"کوارت امپراتوری"}
+                one{"{0} کوارت امپراتوری"}
+                other{"{0} کوارت امپراتوری"}
+            }
             tablespoon{
                 dnam{"قاشق غذاخوری"}
                 one{"{0} قاشق غذاخوری"}
@@ -1005,8 +1085,8 @@
             }
             hour{
                 dnam{"ساعت"}
-                one{"{0} ساعت"}
-                other{"{0} ساعت"}
+                one{"{0}h"}
+                other{"{0}h"}
                 per{"{0}/ساعت"}
             }
             microsecond{
@@ -1021,8 +1101,8 @@
             }
             minute{
                 dnam{"دقیقه"}
-                one{"{0} دقیقه"}
-                other{"{0} دقیقه"}
+                one{"{0}m"}
+                other{"{0}m"}
                 per{"{0}/دقیقه"}
             }
             month{
@@ -1038,8 +1118,8 @@
             }
             second{
                 dnam{"ثانیه"}
-                one{"{0} ث"}
-                other{"{0} ث"}
+                one{"{0}s"}
+                other{"{0}s"}
                 per{"{0}/ث"}
             }
             week{
@@ -1077,9 +1157,9 @@
                 dnam{"واحد نجومی"}
             }
             centimeter{
-                dnam{"سانت"}
-                one{"{0} سانت"}
-                other{"{0} سانت"}
+                dnam{"cm"}
+                one{"{0}cm"}
+                other{"{0}cm"}
                 per{"{0}/سانت"}
             }
             decimeter{
@@ -1099,7 +1179,7 @@
                 per{"{0}/اینچ"}
             }
             kilometer{
-                dnam{"کیلومتر"}
+                dnam{"km"}
                 one{"{0}km"}
                 other{"{0}km"}
             }
@@ -1124,9 +1204,9 @@
                 other{"{0}mi"}
             }
             millimeter{
-                dnam{"م‌م"}
-                one{"{0} م‌م"}
-                other{"{0} م‌م"}
+                dnam{"mm"}
+                one{"{0}mm"}
+                other{"{0}mm"}
             }
             nanometer{
                 dnam{"نانومتر"}
@@ -1157,7 +1237,7 @@
                 per{"{0} در گرم"}
             }
             kilogram{
-                dnam{"کیلوگرم"}
+                dnam{"kg"}
                 one{"{0}kg"}
                 other{"{0}kg"}
             }
@@ -1288,17 +1368,17 @@
             }
             liter{
                 dnam{"لیتر"}
-                one{"{0} لیتر"}
-                other{"{0} لیتر"}
+                one{"{0}L"}
+                other{"{0}L"}
             }
         }
     }
     unitsShort{
         acceleration{
             g-force{
-                dnam{"نیروی جاذبه"}
-                one{"{0} جاذبه"}
-                other{"{0} جاذبه"}
+                dnam{"گرانش"}
+                one{"{0} <LRM>G"}
+                other{"{0} <LRM>G"}
             }
             meter-per-square-second{
                 dnam{"متر/مجذور ثانیه"}
@@ -1346,14 +1426,13 @@
             }
             hectare{
                 dnam{"هکتار"}
-                one{"{0} هکتار"}
-                other{"{0} هکتار"}
+                one{"{0} هک"}
+                other{"{0} <LRM>ha"}
             }
             square-centimeter{
-                dnam{"سانتی‌متر مربع"}
                 one{"{0}‎ cm²"}
                 other{"{0}‎ cm²"}
-                per{"{0} در سانتی‌متر مربع"}
+                per{"{0}<LRM>/cm²"}
             }
             square-foot{
                 dnam{"فوت مربع"}
@@ -1362,9 +1441,9 @@
             }
             square-inch{
                 dnam{"اینچ مربع"}
-                one{"{0} اینچ مربع"}
-                other{"{0} اینچ مربع"}
-                per{"{0} در اینچ مربع"}
+                one{"{0}<LRM>/in²"}
+                other{"{0}<LRM>/in²"}
+                per{"{0}<LRM>/in²"}
             }
             square-kilometer{
                 dnam{"کیلومتر مربع"}
@@ -1374,20 +1453,20 @@
             }
             square-meter{
                 dnam{"متر مربع"}
-                one{"{0} مترمربع"}
-                other{"{0} مترمربع"}
-                per{"{0} در متر مربع"}
+                one{"{0} <LRM>m²"}
+                other{"{0} <LRM>m²"}
+                per{"{0}<LRM>/m²"}
             }
             square-mile{
                 dnam{"مایل مربع"}
                 one{"{0} مایل مربع"}
                 other{"{0} مایل مربع"}
-                per{"{0}/mi²"}
+                per{"{0}<LRM>/mi²"}
             }
             square-yard{
                 dnam{"یارد مربع"}
-                one{"{0} یارد مربع"}
-                other{"{0} یارد مربع"}
+                one{"{0} <LRM>yd²"}
+                other{"{0} <LRM>yd²"}
             }
         }
         compound{
@@ -1478,48 +1557,48 @@
             }
             gigabit{
                 dnam{"گیگابیت"}
-                one{"{0} گیگابیت"}
-                other{"{0} گیگابیت"}
+                one{"{0} <LRM>Gb"}
+                other{"{0} <LRM>Gb"}
             }
             gigabyte{
                 dnam{"گیگابایت"}
-                one{"{0} گیگابایت"}
-                other{"{0} گیگابایت"}
+                one{"{0} <LRM>GB"}
+                other{"{0} <LRM>GB"}
             }
             kilobit{
                 dnam{"کیلوبیت"}
-                one{"{0} کیلوبیت"}
-                other{"{0} کیلوبیت"}
+                one{"{0} <LRM>kb"}
+                other{"{0} <LRM>kb"}
             }
             kilobyte{
                 dnam{"کیلوبایت"}
-                one{"{0} کیلوبایت"}
-                other{"{0} کیلوبایت"}
+                one{"{0} <LRM>kB"}
+                other{"{0} <LRM>kB"}
             }
             megabit{
                 dnam{"مگابیت"}
-                one{"{0} مگابیت"}
-                other{"{0} مگابیت"}
+                one{"{0} <LRM>Mb"}
+                other{"{0} <LRM>Mb"}
             }
             megabyte{
                 dnam{"مگابایت"}
-                one{"{0} مگابایت"}
-                other{"{0} مگابایت"}
+                one{"{0} <LRM>MB"}
+                other{"{0} <LRM>MB"}
             }
             petabyte{
                 dnam{"پتابایت"}
-                one{"{0} پتابایت"}
-                other{"{0} پتابایت"}
+                one{"{0} <LRM>PB"}
+                other{"{0} <LRM>PB"}
             }
             terabit{
                 dnam{"ترابیت"}
-                one{"{0} ترابیت"}
-                other{"{0} ترابیت"}
+                one{"{0} <LRM>Tb"}
+                other{"{0} <LRM>Tb"}
             }
             terabyte{
                 dnam{"ترابایت"}
-                one{"{0} ترابایت"}
-                other{"{0} ترابایت"}
+                one{"{0} <LRM>TB"}
+                other{"{0} <LRM>TB"}
             }
         }
         duration{
@@ -1548,7 +1627,7 @@
             microsecond{
                 dnam{"میکروثانیه"}
                 one{"{0} میکروثانیه"}
-                other{"{0} میکروثانیه"}
+                other{"{0} <LRM>µs"}
             }
             millisecond{
                 dnam{"میلی‌ثانیه"}
@@ -1569,8 +1648,8 @@
             }
             nanosecond{
                 dnam{"نانوثانیه"}
-                one{"{0} نانوثانیه"}
-                other{"{0} نانوثانیه"}
+                one{"{0} <LRM>ns"}
+                other{"{0} <LRM>ns"}
             }
             second{
                 dnam{"ثانیه"}
@@ -1695,110 +1774,151 @@
             }
         }
         graphics{
+            dot{
+                dnam{"نقطه"}
+                one{"{0} نقطه"}
+                other{"{0} نقطه"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
+                one{"{0} <LRM>dpcm"}
+                other{"{0} <LRM>dpcm"}
+            }
+            dot-per-inch{
+                one{"{0} <LRM>dpi"}
+                other{"{0} <LRM>dpi"}
+            }
+            em{
+                one{"{0} <LRM>em"}
+                other{"{0} <LRM>em"}
+            }
+            megapixel{
+                one{"{0} <LRM>MP"}
+                other{"{0} <LRM>MP"}
+            }
+            pixel{
+                one{"{0} <LRM>px"}
+                other{"{0} <LRM>px"}
+            }
+            pixel-per-centimeter{
+                one{"{0} <LRM>ppcm"}
+                other{"{0} <LRM>ppcm"}
+            }
+            pixel-per-inch{
+                one{"{0} <LRM>ppi"}
+                other{"{0} <LRM>ppi"}
             }
         }
         length{
             astronomical-unit{
-                dnam{"واحد نجومی"}
-                one{"{0} واحد نجومی"}
-                other{"{0} واحد نجومی"}
+                one{"{0} <LRM>au"}
+                other{"{0} <LRM>au"}
             }
             centimeter{
-                dnam{"سانت"}
-                one{"{0} سانت"}
-                other{"{0} سانت"}
-                per{"{0}/سانت"}
+                dnam{"cm"}
+                one{"{0} <LRM>cm"}
+                other{"{0} <LRM>cm"}
+                per{"{0}<LRM>/cm"}
             }
             decimeter{
-                dnam{"دسی‌متر"}
-                one{"{0} دسی‌متر"}
-                other{"{0} دسی‌متر"}
+                one{"{0} <LRM>dm"}
+                other{"{0} <LRM>dm"}
+            }
+            earth-radius{
+                dnam{"R⊕"}
+                one{"{0} <LRM>R⊕"}
+                other{"{0} <LRM>R⊕"}
+            }
+            fathom{
+                dnam{"فاتوم"}
+                one{"{0} <LRM>fth"}
+                other{"{0} <LRM>fth"}
             }
             foot{
                 dnam{"فوت"}
-                one{"{0} فوت"}
-                other{"{0} فوت"}
-                per{"{0}/فوت"}
+                one{"{0} <LRM>ft"}
+                other{"{0} <LRM>ft"}
+                per{"{0}<LRM>/ft"}
+            }
+            furlong{
+                dnam{"فرلانگ"}
+                one{"{0} <LRM>fur"}
+                other{"{0} <LRM>fur"}
             }
             inch{
                 dnam{"اینچ"}
-                one{"{0} اینچ"}
-                other{"{0} اینچ"}
-                per{"{0}/اینچ"}
+                one{"{0} <LRM>in"}
+                other{"{0} <LRM>in"}
+                per{"{0}<LRM>/in"}
             }
             kilometer{
                 dnam{"کیلومتر"}
-                one{"{0} کیلومتر"}
-                other{"{0} کیلومتر"}
-                per{"{0} در کیلومتر"}
+                one{"{0} <LRM>km"}
+                other{"{0} <LRM>km"}
+                per{"{0}<LRM>/km"}
             }
             light-year{
                 dnam{"سال نوری"}
-                one{"{0} سال نوری"}
-                other{"{0} سال نوری"}
+                one{"{0} <LRM>ly"}
+                other{"{0} <LRM>ly"}
             }
             meter{
                 dnam{"متر"}
-                one{"{0} متر"}
-                other{"{0} متر"}
-                per{"{0} در متر"}
+                one{"{0} <LRM>m"}
+                other{"{0} <LRM>m"}
+                per{"{0}<LRM>/m"}
             }
             micrometer{
                 dnam{"میکرومتر"}
-                one{"{0} میکرومتر"}
-                other{"{0} میکرومتر"}
+                one{"{0} <LRM>µm"}
+                other{"{0} <LRM>µm"}
             }
             mile{
                 dnam{"مایل"}
-                one{"{0} مایل"}
-                other{"{0} مایل"}
+                one{"{0} <LRM>mi"}
+                other{"{0} <LRM>mi"}
             }
             mile-scandinavian{
-                dnam{"مایل اسکاندیناوی"}
                 one{"{0}‎ smi"}
                 other{"{0}‎ smi"}
             }
             millimeter{
-                dnam{"م‌م"}
-                one{"{0} م‌م"}
-                other{"{0} م‌م"}
+                dnam{"mm"}
+                one{"{0} <LRM>mm"}
+                other{"{0} <LRM>mm"}
             }
             nanometer{
-                dnam{"نانومتر"}
-                one{"{0} نانومتر"}
-                other{"{0} نانومتر"}
+                one{"{0} <LRM>nm"}
+                other{"{0} <LRM>nm"}
             }
             nautical-mile{
-                dnam{"مایل دریایی"}
-                one{"{0} مایل دریایی"}
-                other{"{0} مایل دریایی"}
+                one{"{0} <LRM>nmi"}
+                other{"{0} <LRM>nmi"}
             }
             parsec{
                 dnam{"پارسک"}
-                one{"{0} پارسک"}
-                other{"{0} پارسک"}
+                one{"{0} <LRM>pc"}
+                other{"{0} <LRM>pc"}
             }
             picometer{
-                dnam{"پیکومتر"}
-                one{"{0} پیکومتر"}
-                other{"{0} پیکومتر"}
+                dnam{"pm"}
+                one{"{0} <LRM>pm"}
+                other{"{0} <LRM>pm"}
             }
             point{
-                dnam{"پونت"}
-                one{"{0} امتیاز"}
-                other{"{0} امتیاز"}
+                dnam{"پوینت"}
+                one{"{0} <LRM>pt"}
+                other{"{0} <LRM>pt"}
             }
             solar-radius{
                 dnam{"شعاع خورشید"}
-                one{"{0} ☉R"}
-                other{"{0} ☉R"}
+                one{"{0} <LRM>R☉"}
+                other{"{0} <LRM>R☉"}
             }
             yard{
                 dnam{"یارد"}
-                one{"{0} یارد"}
-                other{"{0} یارد"}
+                one{"{0} <LRM>yd"}
+                other{"{0} <LRM>yd"}
             }
         }
         light{
@@ -1829,6 +1949,11 @@
                 one{"{0} M⊕"}
                 other{"{0} ⊕M"}
             }
+            grain{
+                dnam{"دانه"}
+                one{"{0} دانه"}
+                other{"{0} دانه"}
+            }
             gram{
                 dnam{"گرم"}
                 one{"{0} گرم"}
@@ -1837,24 +1962,21 @@
             }
             kilogram{
                 dnam{"کیلوگرم"}
-                one{"{0} کیلوگرم"}
+                one{"{0} <LRM>kg"}
                 other{"{0} کیلوگرم"}
-                per{"{0} در کیلوگرم"}
+                per{"{0}<LRM>/kg"}
             }
             metric-ton{
-                dnam{"تن متریک"}
-                one{"{0} تن متریک"}
-                other{"{0} تن متریک"}
+                one{"{0} <LRM>t"}
+                other{"{0} <LRM>t"}
             }
             microgram{
-                dnam{"میکروگرم"}
-                one{"{0} میکروگرم"}
-                other{"{0} میکروگرم"}
+                one{"{0} <LRM>µg"}
+                other{"{0} <LRM>µg"}
             }
             milligram{
-                dnam{"میلی‌گرم"}
-                one{"{0} میلی‌گرم"}
-                other{"{0} میلی‌گرم"}
+                one{"{0} <LRM>mg"}
+                other{"{0} <LRM>mg"}
             }
             ounce{
                 dnam{"اونس"}
@@ -1878,6 +2000,11 @@
                 one{"{0} ☉M"}
                 other{"{0} ☉M"}
             }
+            stone{
+                dnam{"سنگ"}
+                one{"{0} سنگ"}
+                other{"{0} سنگ"}
+            }
             ton{
                 dnam{"تن"}
                 one{"{0} تن"}
@@ -1957,6 +2084,10 @@
                 one{"{0} م‌م جیوه"}
                 other{"{0} م‌م جیوه"}
             }
+            pascal{
+                one{"{0} <LRM>Pa"}
+                other{"{0} <LRM>Pa"}
+            }
             pound-force-per-square-inch{
                 dnam{"پوند در اینچ مربع"}
                 one{"{0}‎ psi"}
@@ -1976,8 +2107,8 @@
             }
             meter-per-second{
                 dnam{"متر در ثانیه"}
-                one{"{0} متردرثانیه"}
-                other{"{0} متردرثانیه"}
+                one{"{0} <LRM>m/s"}
+                other{"{0} <LRM>m/s"}
             }
             mile-per-hour{
                 dnam{"مایل در ساعت"}
@@ -2029,26 +2160,29 @@
                 one{"{0} بشکه"}
                 other{"{0} بشکه"}
             }
+            bushel{
+                dnam{"بوشل"}
+                one{"{0} بوشل"}
+                other{"{0} بوشل"}
+            }
             centiliter{
-                dnam{"سانتی‌لیتر"}
-                one{"{0} سانتی‌لیتر"}
-                other{"{0} سانتی‌لیتر"}
+                one{"{0} <LRM>cL"}
+                other{"{0} <LRM>cL"}
             }
             cubic-centimeter{
-                dnam{"سانتی‌متر مکعب"}
                 one{"{0}‎ cm³"}
                 other{"{0}‎ cm³"}
                 per{"{0}‎ /cm³"}
             }
             cubic-foot{
                 dnam{"فوت مکعب"}
-                one{"{0} فوت مکعب"}
-                other{"{0} فوت مکعب"}
+                one{"{0} <LRM>ft³"}
+                other{"{0} <LRM>ft³"}
             }
             cubic-inch{
                 dnam{"اینچ مکعب"}
-                one{"{0} اینچ مکعب"}
-                other{"{0} اینچ مکعب"}
+                one{"{0} <LRM>in³"}
+                other{"{0} <LRM>in³"}
             }
             cubic-kilometer{
                 dnam{"کیلومتر مکعب"}
@@ -2057,19 +2191,18 @@
             }
             cubic-meter{
                 dnam{"متر مکعب"}
-                one{"{0} متر مکعب"}
-                other{"{0} متر مکعب"}
-                per{"{0} در متر مکعب"}
+                one{"{0} <LRM>m³"}
+                other{"{0} <LRM>m³"}
+                per{"{0}<LRM>/m³"}
             }
             cubic-mile{
-                dnam{"مایل مکعب"}
-                one{"{0} مایل مکعب"}
-                other{"{0} مایل مکعب"}
+                one{"{0} <LRM>mi³"}
+                other{"{0} <LRM>mi³"}
             }
             cubic-yard{
                 dnam{"یارد مکعب"}
-                one{"{0} یارد مکعب"}
-                other{"{0} یارد مکعب"}
+                one{"{0} <LRM>yd³"}
+                other{"{0} <LRM>yd³"}
             }
             cup{
                 dnam{"پیمانه"}
@@ -2082,9 +2215,28 @@
                 other{"{0} پیمانهٔ متریک"}
             }
             deciliter{
-                dnam{"دسی‌لیتر"}
-                one{"{0} دسی‌لیتر"}
-                other{"{0} دسی‌لیتر"}
+                one{"{0} <LRM>dL"}
+                other{"{0} <LRM>dL"}
+            }
+            dessert-spoon{
+                dnam{"قاشق دسرخوری"}
+                one{"{0} ق.دس.خ."}
+                other{"{0} ق.دس.خ."}
+            }
+            dessert-spoon-imperial{
+                dnam{"قاشق دسرخوری امپراتوری"}
+                one{"{0} قاشق امپراتوری"}
+                other{"{0} قاشق امپراتوری"}
+            }
+            dram{
+                dnam{"درم سیال"}
+                one{"{0} درم سیال"}
+                other{"{0} درم سیال"}
+            }
+            drop{
+                dnam{"قطره"}
+                one{"{0} قطره"}
+                other{"{0} قطره"}
             }
             fluid-ounce{
                 dnam{"اونس سیال"}
@@ -2109,26 +2261,35 @@
                 per{"{0}/گالن امپریال"}
             }
             hectoliter{
-                dnam{"هکتولیتر"}
-                one{"{0} هکتولیتر"}
-                other{"{0} هکتولیتر"}
+                one{"{0} <LRM>hL"}
+                other{"{0} <LRM>hL"}
+            }
+            jigger{
+                dnam{"گیلاس"}
+                one{"{0} گیلاس"}
+                other{"{0} گیلاس"}
             }
             liter{
                 dnam{"لیتر"}
-                one{"{0} لیتر"}
-                other{"{0} لیتر"}
-                per{"{0} در لیتر"}
+                one{"{0} <LRM>L"}
+                other{"{0} <LRM>L"}
+                per{"{0}<LRM>/L"}
             }
             megaliter{
                 dnam{"مگالیتر"}
-                one{"{0} مگالیتر"}
-                other{"{0} مگالیتر"}
+                one{"{0} <LRM>ML"}
+                other{"{0} <LRM>ML"}
             }
             milliliter{
                 dnam{"میلی‌لیتر"}
                 one{"{0} میلی‌لیتر"}
                 other{"{0} میلی‌لیتر"}
             }
+            pinch{
+                dnam{"یک سر انگشت"}
+                one{"{0} سرانگشت"}
+                other{"{0} سرانگشت"}
+            }
             pint{
                 dnam{"پاینت"}
                 one{"{0} پاینت"}
@@ -2144,9 +2305,14 @@
                 one{"{0} کوارت"}
                 other{"{0} کوارت"}
             }
+            quart-imperial{
+                dnam{"کوارت امپراتوری"}
+                one{"{0} کوارت امپراتوری"}
+                other{"{0} کوارت امپراتوری"}
+            }
             tablespoon{
                 dnam{"قاشق غ."}
-                one{"{0} قاشق غ."}
+                one{"{0} ق.غ.خ"}
                 other{"{0} قاشق غ."}
             }
             teaspoon{
diff --git a/icu4c/source/data/unit/ff.txt b/icu4c/source/data/unit/ff.txt
index b51bbce..91de862 100644
--- a/icu4c/source/data/unit/ff.txt
+++ b/icu4c/source/data/unit/ff.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/ff_Adlm.txt b/icu4c/source/data/unit/ff_Adlm.txt
index 9dafb5a..cb37da0 100644
--- a/icu4c/source/data/unit/ff_Adlm.txt
+++ b/icu4c/source/data/unit/ff_Adlm.txt
@@ -1,20 +1,176 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm{
     %%Parent{"root"}
-    Version{"37"}
     units{
+        acceleration{
+            g-force{
+                dnam{"𞤵𞥅𞤴𞤲𞤣𞤭 𞤻𞤭𞥅𞤧𞤵𞤳𞤭 𞤤𞤫𞤴𞤣𞤭 𞤲𞤣𞤭𞤲"}
+                one{"{0} 𞤲𞤣𞤫 𞤵𞥅𞤴𞤲𞤣𞤭 𞤻𞤭𞥅𞤧𞤵𞤳𞤭 𞤤𞤫𞤴𞤣𞤭 𞤲𞤣𞤭𞤲"}
+                other{"{0} 𞤲𞤣𞤫 𞤵𞥅𞤴𞤲𞤣𞤭 𞤻𞤭𞥅𞤧𞤵𞤳𞤭 𞤤𞤫𞤴𞤣𞤭 𞤲𞤣𞤭𞤲"}
+            }
+            meter-per-square-second{
+                dnam{"𞤥𞤫𞥅𞤼𞤭 𞤲𞤣𞤫𞤪 𞤳𞤭𞤲𞤰𞤫𞤪𞤫 𞤣𞤭𞤲𞤺𞤢𞥄𞤲𞤣𞤫"}
+                one{"{0} 𞤥𞤫𞥅𞤼𞤮𞤤 𞤲𞤣𞤫𞤪 𞤳𞤭𞤲𞤰𞤫𞤪𞤫 𞤣𞤭𞤲𞤺𞤢𞥄𞤲𞤣𞤫"}
+                other{"{0} 𞤥𞤫𞥅𞤼𞤭 𞤲𞤣𞤫𞤪 𞤸𞤮𞤶𞤮𞤥𞤢𞥄𞤪𞤫 𞤣𞤭𞤲𞤺𞤢𞥄𞤲𞤣𞤫"}
+            }
+        }
+        angle{
+            arc-minute{
+                dnam{"𞤸𞤮𞤶𞤮𞤥𞤢𞥄𞤶𞤫 𞤤𞤢𞥄𞤻𞤢𞤤"}
+                one{"{0} 𞤸𞤮𞤶𞤮𞤥𞤢𞥄𞤪𞤫 𞤤𞤢𞥄𞤻𞤢𞤤"}
+                other{"{0} 𞤸𞤮𞤶𞤮𞤥𞤢𞥄𞤶𞤫 𞤤𞤢𞥄𞤻𞤢𞤤"}
+            }
+            arc-second{
+                dnam{"𞤸𞤮𞤶𞤮𞤥𞤢𞥄𞤶𞤫 𞤳𞤭𞤲𞤰𞤫𞤪𞤫"}
+                one{"{0} 𞤸𞤮𞤶𞤮𞤥𞤢𞥄𞤶𞤫 𞤳𞤭𞤲𞤰𞤫𞤪𞤫"}
+                other{"{0} 𞤸𞤮𞤶𞤮𞤥𞤢𞥄𞤶𞤫 𞤳𞤭𞤲𞤰𞤫𞤪𞤫"}
+            }
+            degree{
+                dnam{"𞤶𞤫𞤩𞤫"}
+                one{"{0} 𞤶𞤫𞤩𞤫𞤪𞤫"}
+                other{"{0} 𞤶𞤫𞤩𞤫"}
+            }
+            radian{
+                dnam{"𞤪𞤢𞤣𞤭𞤴𞤢𞤲𞤶𞤭"}
+                one{"{0} 𞤪𞤢𞤣𞤭𞤴𞤢𞤲𞤪𞤵"}
+                other{"{0} 𞤪𞤢𞤣𞤭𞤴𞤢𞤲𞤶𞤭"}
+            }
+            revolution{
+                dnam{"𞤱𞤭𞤣𞥆𞤢𞤲𞤣𞤫"}
+                one{"{0} 𞤱𞤭𞤣𞥆𞤢𞤲𞤣𞤫"}
+                other{"{0} 𞤱𞤭𞤣𞥆𞤢𞤲𞤯𞤫"}
+            }
+        }
         area{
+            acre{
+                dnam{"𞤺𞤢𞤪𞤳𞤭"}
+                one{"{0} 𞤺𞤢𞤪𞤳𞤵"}
+                other{"{0} 𞤺𞤢𞤪𞤳𞤭"}
+            }
+            dunam{
+                dnam{"𞤣𞤵𞥅𞤲𞤢𞤥𞤭"}
+                one{"{0} 𞤣𞤵𞥅𞤲𞤢𞤥𞤵"}
+                other{"{0} 𞤣𞤵𞥅𞤲𞤢𞤥𞤭"}
+            }
             hectare{
-                dnam{"𞤸𞤫𞤳𞤼𞤢𞥄𞤪𞤭"}
-                one{"{0} 𞤸𞤫𞤳𞤼𞤢𞥄𞤪𞤵"}
-                other{"{0} 𞤸𞤫𞤳𞤼𞤢𞥄𞤪𞤵𞥅𞤶𞤭"}
+                dnam{"𞤸𞤫𞤳𞤼𞤢𞤪𞤯𞤫"}
+                one{"{0} 𞤸𞤫𞤳𞤼𞤢𞤪𞤣𞤫"}
+                other{"{0} 𞤸𞤫𞤳𞤼𞤢𞤪𞤯𞤫"}
+            }
+            square-centimeter{
+                dnam{"𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤧𞤢𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤭"}
+                one{"{0} 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤧𞤢𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤮𞤤"}
+                other{"{0} 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤧𞤢𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤭"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤧𞤢𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤭"}
+            }
+            square-foot{
+                dnam{"𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤼𞤫𞤨𞥆𞤭"}
+                one{"{0} 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤼𞤫𞤨𞥆𞤵"}
+                other{"{0} 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤼𞤫𞤨𞥆𞤭"}
+            }
+            square-inch{
+                dnam{"𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤲𞤺𞤮𞤪𞤰𞤭"}
+                one{"{0} 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤲𞤺𞤮𞤪𞤰𞤵"}
+                other{"{0} 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤲𞤺𞤮𞤪𞤰𞤭"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤲𞤺𞤮𞤪𞤰𞤵"}
             }
             square-kilometer{
-                dnam{"𞤳𞤭𞤤𞤮𞤥𞤫𞥅𞤼𞤭 𞤶𞤢𞥄𞤣𞤭𞤲𞤳𞤮𞥅𞤶𞤭"}
-                one{"{0} 𞤳𞤭𞤤𞤮𞤥𞤫𞥅𞤼𞤮𞤤 𞤶𞤢𞥄𞤣𞤭𞤲𞤳𞤮𞤱𞤮𞤤"}
-                other{"{0} 𞤳𞤭𞤤𞤮𞤥𞤫𞥅𞤼𞤭 𞤶𞤢𞥄𞤣𞤭𞤲𞤳𞤮𞥅𞤶𞤭"}
-                per{"{0}/𞤫 𞤳𞤭𞤤𞤮𞤥𞤫𞥅𞤼𞤮𞤤 𞤶𞤢𞥄𞤣𞤭𞤲𞤳𞤮𞤱𞤮𞤤"}
+                dnam{"𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤳𞤭𞤤𞤮𞤥𞤫𞥅𞤼𞤭"}
+                one{"{0} 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤳𞤭𞤤𞤮𞤥𞤫𞥅𞤼𞤮𞤤"}
+                other{"{0} 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤳𞤭𞤤𞤮𞤥𞤫𞥅𞤼𞤭"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤳𞤭𞤤𞤮𞤥𞤫𞥅𞤼𞤮𞤤"}
+            }
+            square-meter{
+                dnam{"𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤥𞤫𞥅𞤼𞤭"}
+                one{"{0} 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤥𞤫𞥅𞤼𞤮𞤤"}
+                other{"{0} 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤥𞤫𞥅𞤼𞤭"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤥𞤫𞥅𞤼𞤮𞤤"}
+            }
+            square-mile{
+                dnam{"𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤥𞤢𞤴𞤤𞤭"}
+                one{"{0} 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤥𞤢𞤴𞤤𞤵"}
+                other{"{0} 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤥𞤢𞤴𞤤𞤭"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤥𞤢𞤴𞤤𞤵"}
+            }
+            square-yard{
+                dnam{"𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤧𞤮𞤺𞤮𞤲𞤫"}
+                one{"{0} 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤧𞤮𞤺𞤮𞤲𞤢𞤤"}
+                other{"{0} 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤧𞤮𞤺𞤮𞤲𞤫"}
+            }
+        }
+        compound{
+            per{"{0} 𞤲𞤣𞤫𞤪 {1}"}
+            times{"{0}-{1}"}
+        }
+        concentr{
+            milligram-per-deciliter{
+                dnam{"𞤥𞤭𞤤𞤭𞤺𞤢𞤪𞤬𞤭 𞤲𞤣𞤫𞤪 𞤣𞤫𞥅𞤧𞤭𞤤𞤭𞥅𞤼𞤵"}
+            }
+        }
+        coordinate{
+            dnam{"𞤦𞤢𞤲𞤽𞤢𞤤 𞤸𞤫𞤣𞥆𞤫"}
+            east{"{0} 𞤬𞤵𞤯𞤲𞤢𞥄𞤲𞤺𞤫"}
+            north{"{0} 𞤲𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫"}
+            south{"{0} 𞤻𞤢𞤥𞤲𞤢𞥄𞤲𞤺𞤫"}
+            west{"{0} 𞤸𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫"}
+        }
+        digital{
+            bit{
+                dnam{"𞤦𞤭𞥅𞤼𞥆𞤭"}
+                one{"{0} 𞤦𞤭𞥅𞤼𞥆𞤵"}
+                other{"{0} 𞤦𞤭𞥅𞤼𞥆𞤭"}
+            }
+            byte{
+                dnam{"𞤶𞤫𞥅𞤼𞥆𞤭"}
+                one{"{0} 𞤶𞤫𞥅𞤼𞥆𞤵"}
+                other{"{0} 𞤶𞤫𞥅𞤼𞥆𞤭"}
+            }
+            gigabit{
+                dnam{"𞤺𞤭𞤺𞤢𞤦𞤭𞥅𞤼𞥆𞤭"}
+                one{"{0} 𞤺𞤭𞤺𞤢𞤦𞤭𞥅𞤼𞥆𞤵"}
+                other{"{0} 𞤺𞤭𞤺𞤢𞤦𞤭𞥅𞤼𞥆𞤭"}
+            }
+            gigabyte{
+                dnam{"𞤺𞤭𞤺𞤢𞤶𞤫𞥅𞤼𞥆𞤭"}
+                one{"{0} 𞤺𞤭𞤺𞤢𞤶𞤫𞥅𞤼𞥆𞤵"}
+                other{"{0} 𞤺𞤭𞤺𞤢𞤶𞤫𞥅𞤼𞥆𞤭"}
+            }
+            kilobit{
+                dnam{"𞤳𞤭𞤤𞤮𞤦𞤭𞥅𞤼𞥆𞤭"}
+                one{"{0} 𞤳𞤭𞤤𞤮𞤦𞤭𞥅𞤼𞥆𞤵"}
+                other{"{0} 𞤳𞤭𞤤𞤮𞤦𞤭𞥅𞤼𞥆𞤭"}
+            }
+            kilobyte{
+                dnam{"𞤳𞤭𞤤𞤮𞤶𞤫𞥅𞤼𞥆𞤭"}
+                one{"{0} 𞤳𞤭𞤤𞤮𞤶𞤫𞥅𞤼𞥆𞤵"}
+                other{"{0} 𞤳𞤭𞤤𞤮𞤶𞤫𞥅𞤼𞥆𞤭"}
+            }
+            megabit{
+                dnam{"𞤥𞤫𞤺𞤢𞤦𞤭𞥅𞤼𞥆𞤭"}
+                one{"{0} 𞤥𞤫𞤺𞤢𞤦𞤭𞥅𞤼𞥆𞤵"}
+                other{"{0} 𞤥𞤫𞤺𞤢𞤦𞤭𞥅𞤼𞥆𞤭"}
+            }
+            megabyte{
+                dnam{"𞤥𞤫𞤺𞤢𞤶𞤫𞥅𞤼𞥆𞤭"}
+                one{"{0} 𞤥𞤫𞤺𞤢𞤶𞤫𞥅𞤼𞥆𞤵"}
+                other{"{0} 𞤥𞤫𞤺𞤢𞤶𞤫𞥅𞤼𞥆𞤭"}
+            }
+            petabyte{
+                dnam{"𞤨𞤫𞤼𞤢𞤶𞤫𞥅𞤼𞥆𞤭"}
+                one{"{0} 𞤨𞤫𞤼𞤢𞤶𞤫𞥅𞤼𞥆𞤵"}
+                other{"{0} 𞤨𞤫𞤼𞤢𞤶𞤫𞥅𞤼𞥆𞤭"}
+            }
+            terabit{
+                dnam{"𞤼𞤫𞤪𞤢𞤦𞤭𞥅𞤼𞥆𞤭"}
+                one{"{0} 𞤼𞤫𞤪𞤢𞤦𞤭𞥅𞤼𞥆𞤵"}
+                other{"{0} 𞤼𞤫𞤪𞤢𞤦𞤭𞥅𞤼𞥆𞤭"}
+            }
+            terabyte{
+                dnam{"𞤼𞤫𞤪𞤢𞤶𞤫𞥅𞤼𞥆𞤭"}
+                one{"{0} 𞤼𞤫𞤪𞤢𞤶𞤫𞥅𞤼𞥆𞤵"}
+                other{"{0} 𞤼𞤫𞤪𞤢𞤶𞤫𞥅𞤼𞥆𞤭"}
             }
         }
         duration{
@@ -29,27 +185,32 @@
                 other{"{0} 𞤻𞤢𞤤𞥆𞤫"}
                 per{"{0} 𞤲𞥋𞤣𞤫𞤪 𞤻𞤢𞤤𞥆𞤢𞤤"}
             }
+            decade{
+                dnam{"𞤼𞤭𞤶𞤢𞤲𞤯𞤫"}
+                one{"{0} 𞤼𞤭𞤶𞤢𞤲𞤣𞤫"}
+                other{"{0} 𞤼𞤭𞤶𞤢𞤲𞤯𞤫"}
+            }
             hour{
-                dnam{"𞤲𞥋𞤶𞤢𞤥𞤤𞤭"}
-                one{"{0} 𞤲𞥋𞤶𞤢𞤥𞤲𞥋𞤣𞤭"}
-                other{"{0} 𞤲𞥋𞤶𞤢𞤥𞤤𞤭"}
-                per{"{0} 𞤲𞥋𞤣𞤫𞤪 𞤲𞥋𞤶𞤢𞤥𞤲𞥋𞤣𞤭"}
+                dnam{"𞤲𞤶𞤢𞤥𞤤𞤭"}
+                one{"{0} 𞤲𞤶𞤢𞤥𞤲𞤣𞤭"}
+                other{"{0} 𞤲𞤶𞤢𞤥𞤤𞤭"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤲𞤶𞤢𞤥𞤲𞤣𞤭"}
             }
             microsecond{
                 dnam{"𞤻𞤭𞤤𞤢𞤳𞤭𞤲𞤰𞤫"}
-                one{"{0} 𞤻𞤭𞤤𞤢𞤳𞤭𞤲𞤰𞤢𞤤"}
+                one{"{0} 𞤻𞤭𞤤𞤢𞤳𞤭𞤲𞤰𞤫𞤪𞤫"}
                 other{"{0} 𞤻𞤭𞤤𞤢𞤳𞤭𞤲𞤰𞤫"}
             }
             millisecond{
-                dnam{"𞤤𞤫𞤤𞤳𞤭𞤲𞤰𞤫"}
-                one{"{0} 𞤤𞤫𞤤𞤳𞤭𞤲𞤰𞤢𞤤"}
-                other{"{0} 𞤤𞤫𞤤𞤳𞤭𞤲𞤰𞤫"}
+                dnam{"𞤥𞤭𞤤𞤭𞤳𞤭𞤲𞤰𞤫"}
+                one{"{0} 𞤥𞤭𞤤𞤭𞤳𞤭𞤲𞤰𞤫𞤪𞤫"}
+                other{"{0} 𞤥𞤭𞤤𞤭𞤳𞤭𞤲𞤰𞤫"}
             }
             minute{
-                dnam{"𞤳𞤮𞤶𞤮𞤥𞤶𞤫"}
-                one{"{0} 𞤸𞤮𞤶𞤮𞤥𞤪𞤫"}
-                other{"{0} 𞤳𞤮𞤶𞤮𞤥𞤶𞤫"}
-                per{"{0} 𞤲𞥋𞤣𞤫𞤪 𞤸𞤮𞤶𞤮𞤥𞤪𞤫"}
+                dnam{"𞤸𞤮𞤶𞤮𞤥𞤢𞥄𞤶𞤫"}
+                one{"{0} 𞤸𞤮𞤶𞤮𞤥𞤢𞥄𞤪𞤫"}
+                other{"{0} 𞤸𞤮𞤶𞤮𞤥𞤢𞥄𞤶𞤫"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤸𞤮𞤶𞤮𞤥𞤢𞥄𞤪𞤫"}
             }
             month{
                 dnam{"𞤤𞤫𞤦𞥆𞤭"}
@@ -59,14 +220,14 @@
             }
             nanosecond{
                 dnam{"𞤲𞤢𞤲𞤮𞥅𞤳𞤭𞤲𞤰𞤫"}
-                one{"{0} 𞤲𞤢𞤲𞤮𞥅𞤳𞤭𞤲𞤰𞤢𞤤"}
+                one{"{0} 𞤲𞤢𞤲𞤮𞥅𞤳𞤭𞤲𞤰𞤫𞤪𞤫"}
                 other{"{0} 𞤲𞤢𞤲𞤮𞥅𞤳𞤭𞤲𞤰𞤫"}
             }
             second{
                 dnam{"𞤳𞤭𞤲𞤰𞤫"}
-                one{"{0} 𞤳𞤭𞤲𞤰𞤢𞤤"}
+                one{"{0} 𞤳𞤭𞤲𞤰𞤮"}
                 other{"{0} 𞤳𞤭𞤲𞤰𞤫"}
-                per{"{0} 𞤲𞥋𞤣𞤫𞤪 𞤳𞤭𞤲𞤰𞤢𞤤"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤳𞤭𞤲𞤰𞤫"}
             }
             week{
                 dnam{"𞤶𞤮𞤲𞤼𞤫"}
@@ -81,34 +242,179 @@
                 per{"{0} 𞤲𞥋𞤣𞤫𞤪 𞤸𞤭𞤼𞤢𞥄𞤲𞥋𞤣𞤫"}
             }
         }
+        electric{
+            ampere{
+                dnam{"𞤢𞤥𞤨𞤫𞤪𞤶𞤭"}
+                one{"{0} 𞤢𞤥𞤨𞤫𞤪𞤱𞤵"}
+                other{"{0} 𞤢𞤥𞤨𞤫𞤪𞤶𞤭"}
+            }
+            milliampere{
+                dnam{"𞤥𞤭𞤤𞤭𞤢𞤥𞤨𞤫𞤪𞤶𞤭"}
+                one{"{0} 𞤥𞤭𞤤𞤭𞤢𞤥𞤨𞤫𞤪𞤱𞤵"}
+                other{"{0} 𞤥𞤭𞤤𞤭𞤢𞤥𞤨𞤫𞤪𞤶𞤭"}
+            }
+            ohm{
+                dnam{"𞤮𞤸𞤥𞤵𞥅𞤶𞤭"}
+                one{"{0} 𞤮𞤸𞤥𞤵"}
+                other{"{0} 𞤮𞤸𞤥𞤵𞥅𞤶𞤭"}
+            }
+            volt{
+                dnam{"𞤾𞤮𞤤𞤼𞤵𞥅𞤶𞤭"}
+                one{"{0} 𞤾𞤮𞤤𞤼𞤵"}
+                other{"{0} 𞤾𞤮𞤤𞤼𞤵𞥅𞤶𞤭"}
+            }
+        }
+        energy{
+            british-thermal-unit{
+                dnam{"𞤑𞤵𞥅𞤰𞤫 𞤲𞤺𞤵𞤤𞤲𞤣𞤭𞤲𞤳𞤮 𞤄𞤭𞤪𞤼𞤢𞤲𞤭𞤴𞤢𞤲𞤳𞤮"}
+                one{"{0} 𞤑𞤵𞥅𞤰𞤮 𞤲𞤺𞤵𞤤𞤣𞤭𞤲𞤳𞤮 𞤄𞤭𞤪𞤼𞤢𞤲𞤭𞤴𞤢𞤲𞤳𞤮"}
+                other{"{0} 𞤑𞤵𞥅𞤰𞤫 𞤲𞤺𞤵𞤤𞤣𞤭𞤲𞤳𞤮 𞤄𞤭𞤪𞤼𞤢𞤲𞤭𞤴𞤢𞤲𞤳𞤮"}
+            }
+            calorie{
+                dnam{"𞤲𞤺𞤵𞤤𞤭"}
+                one{"{0} 𞤲𞤺𞤵𞤤𞤵"}
+                other{"{0} 𞤲𞤺𞤵𞤤𞤭"}
+            }
+            electronvolt{
+                dnam{"𞤫𞤤𞤫𞤳𞤼𞤮𞤾𞤮𞤤𞤼𞤵𞥅𞤶𞤭"}
+                one{"{0} 𞤫𞤤𞤫𞤳𞤼𞤮𞤾𞤮𞤤𞤼𞤵"}
+                other{"{0} 𞤫𞤤𞤫𞤳𞤼𞤮𞤾𞤮𞤤𞤼𞤵𞥅𞤶𞤭"}
+            }
+            foodcalorie{
+                dnam{"𞤐𞤺𞤵𞤤𞤭"}
+                one{"{0} 𞤐𞤺𞤵𞤤𞤵"}
+                other{"{0} 𞤐𞤺𞤵𞤤𞤭"}
+            }
+            joule{
+                dnam{"𞥁𞤵𞥅𞤤𞤶𞤭"}
+                one{"{0} 𞥁𞤵𞥅𞤤𞤱𞤵"}
+                other{"{0} 𞥁𞤵𞥅𞤤𞤶𞤭"}
+            }
+            kilocalorie{
+                dnam{"𞤳𞤭𞤤𞤮𞤲𞤺𞤵𞤤𞤭"}
+                one{"{0} 𞤳𞤭𞤤𞤮𞤲𞤺𞤵𞤤𞤵"}
+                other{"{0} 𞤳𞤭𞤤𞤮𞤲𞤺𞤵𞤤𞤭"}
+            }
+            kilojoule{
+                dnam{"𞤳𞤭𞤤𞤮𞥁𞤵𞥅𞤤𞤶𞤭"}
+                one{"{0} 𞤳𞤭𞤤𞤮𞥁𞤵𞥅𞤤𞤶𞤭"}
+                other{"{0} 𞤳𞤭𞤤𞤮𞥁𞤵𞥅𞤤𞤶𞤭"}
+            }
+            kilowatt-hour{
+                dnam{"𞤳𞤭𞤤𞤮𞤱𞤢𞥄𞤼𞤵-𞤲𞤶𞤢𞤥𞤤𞤭"}
+                one{"{0} 𞤳𞤭𞤤𞤮𞤱𞤢𞥄𞤼𞤵-𞤲𞤶𞤢𞤥𞤲𞤣𞤭"}
+                other{"{0} 𞤳𞤭𞤤𞤮𞤱𞤢𞥄𞤼𞤵-𞤲𞤶𞤢𞤥𞤤𞤭"}
+            }
+            therm-us{
+                dnam{"𞤲𞤺𞤵𞤤𞤣𞤭𞤲𞤳𞤫 𞤁𞤀"}
+                one{"{0} 𞤲𞤺𞤵𞤤𞤣𞤭𞤲𞤳𞤮 𞤁𞤀"}
+                other{"{0} 𞤲𞤺𞤵𞤤𞤣𞤭𞤲𞤳𞤫 𞤁𞤀"}
+            }
+        }
+        force{
+            newton{
+                dnam{"𞤲𞤫𞤱𞤼𞤮𞤲𞤶𞤭"}
+                one{"{0} 𞤲𞤫𞤱𞤼𞤮𞤲"}
+                other{"{0} 𞤲𞤫𞤱𞤼𞤮𞤲𞤶𞤭"}
+            }
+        }
+        frequency{
+            gigahertz{
+                dnam{"𞤺𞤭𞤺𞤢𞤸𞤫𞤪𞤼𞤵"}
+                one{"{0} 𞤺𞤭𞤺𞤢𞤸𞤫𞤪𞤼𞤵"}
+                other{"{0} 𞤺𞤭𞤺𞤢𞤸𞤫𞤪𞤼𞤭"}
+            }
+            hertz{
+                dnam{"𞤸𞤫𞤪𞤼𞤵"}
+                one{"{0} 𞤸𞤫𞤪𞤼𞤵"}
+                other{"{0} 𞤸𞤫𞤪𞤼𞤭"}
+            }
+            kilohertz{
+                dnam{"𞤳𞤭𞤤𞤮𞤸𞤫𞤪𞤼𞤵"}
+                one{"{0} 𞤳𞤭𞤤𞤮𞤸𞤫𞤪𞤼𞤵"}
+                other{"{0} 𞤳𞤭𞤤𞤮𞤸𞤫𞤪𞤼𞤭"}
+            }
+            megahertz{
+                dnam{"𞤥𞤫𞤺𞤢𞤸𞤫𞤪𞤼𞤵"}
+                one{"{0} 𞤥𞤫𞤺𞤢𞤸𞤫𞤪𞤼𞤵"}
+                other{"{0} 𞤥𞤫𞤺𞤢𞤸𞤫𞤪𞤼𞤭"}
+            }
+        }
+        graphics{
+            dot{
+                dnam{"𞤼𞤮𞤩𞥆𞤫𞤪𞤫"}
+                one{"{0} 𞤼𞤮𞤩𞥆𞤫𞤪𞤫"}
+                other{"{0} 𞤼𞤮𞤩𞥆𞤫𞤪𞤫"}
+            }
+            dot-per-centimeter{
+                dnam{"𞤼𞤮𞤩𞥆𞤫 𞤲𞤣𞤫𞤪 𞤧𞤢𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤮𞤤"}
+                one{"{0} 𞤼𞤮𞤩𞥆𞤫𞤪𞤫 𞤲𞤣𞤫𞤪 𞤧𞤢𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤮𞤤"}
+                other{"{0} 𞤼𞤮𞤩𞥆𞤫 𞤲𞤣𞤫𞤪 𞤧𞤢𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤮𞤤"}
+            }
+            dot-per-inch{
+                dnam{"𞤼𞤮𞤩𞥆𞤫 𞤲𞤣𞤫𞤪 𞤲𞤺𞤮𞤪𞤰𞤵"}
+                one{"{0} 𞤼𞤮𞤩𞥆𞤫𞤪𞤫 𞤲𞤣𞤫𞤪 𞤲𞤺𞤮𞤪𞤰𞤵"}
+                other{"{0} 𞤼𞤮𞤩𞥆𞤫 𞤲𞤣𞤫𞤪 𞤲𞤺𞤮𞤪𞤰𞤵"}
+            }
+            em{
+                dnam{"𞤭𞤥𞤵 𞤬𞤭𞥅 𞤴𞤢𞥄𞤴𞤮"}
+                one{"{0} 𞤭𞤥𞤵"}
+                other{"{0} 𞤭𞤥𞤭"}
+            }
+            megapixel{
+                dnam{"𞤥𞤫𞤺𞤢𞤨𞤭𞤳𞤷𞤮𞤤"}
+                one{"{0} 𞤥𞤫𞤺𞤢𞤨𞤭𞤳𞤷𞤮𞤤"}
+                other{"{0} 𞤥𞤫𞤺𞤢𞤨𞤭𞤳𞤷𞤭"}
+            }
+            pixel{
+                dnam{"𞤨𞤭𞤳𞤷𞤭"}
+                one{"{0} 𞤨𞤭𞤳𞤷𞤮𞤤"}
+                other{"{0} 𞤨𞤭𞤳𞤷𞤭"}
+            }
+            pixel-per-centimeter{
+                dnam{"𞤨𞤭𞤳𞤷𞤭 𞤲𞤣𞤫𞤪 𞤧𞤢𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤮𞤤"}
+                one{"{0} 𞤨𞤭𞤳𞤷𞤮𞤤 𞤲𞤣𞤫𞤪 𞤧𞤢𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤮𞤤"}
+                other{"{0} 𞤨𞤭𞤳𞤷𞤭 𞤲𞤣𞤫𞤪 𞤧𞤢𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤮𞤤"}
+            }
+            pixel-per-inch{
+                dnam{"𞤨𞤭𞤳𞤷𞤭 𞤲𞤣𞤫𞤪 𞤲𞤺𞤮𞤪𞤰𞤵"}
+                one{"{0} 𞤨𞤭𞤳𞤷𞤮𞤤 𞤲𞤣𞤫𞤪 𞤲𞤺𞤮𞤪𞤰𞤵"}
+                other{"{0} 𞤨𞤭𞤳𞤷𞤭 𞤲𞤣𞤫𞤪 𞤲𞤺𞤮𞤪𞤰𞤵"}
+            }
+        }
         length{
             astronomical-unit{
-                dnam{"𞤺𞤵𞤥𞤫 𞤦𞤵𞤪𞤶𞤵𞤲𞤳𞤮𞤶𞤵𞤲"}
-                one{"{0} 𞤺𞤵𞤥𞤪𞤫 𞤦𞤵𞤪𞤶𞤵𞤲𞤳𞤮𞤶𞤵𞤲"}
-                other{"{0} 𞤺𞤵𞤥𞤫 𞤦𞤵𞤪𞤶𞤵𞤲𞤳𞤮𞤶𞤵𞤲"}
+                dnam{"𞤳𞤵𞥅𞤰𞤫 𞤦𞤵𞤪𞤶𞤵𞤲𞤳𞤮𞥅𞤶𞤫"}
+                one{"{0} 𞤳𞤵𞥅𞤰𞤵 𞤦𞤵𞤪𞤶𞤵𞤲𞤳𞤮𞤱𞤵"}
+                other{"{0} 𞤳𞤵𞥅𞤰𞤫 𞤦𞤵𞤪𞤶𞤵𞤲𞤳𞤮𞥅𞤶𞤫"}
             }
             centimeter{
                 dnam{"𞤧𞤢𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤭"}
                 one{"{0} 𞤧𞤢𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤮𞤤"}
                 other{"{0} 𞤧𞤫𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤭"}
-                per{"{0} 𞤧𞤢𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤮𞤤"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤧𞤢𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤮𞤤"}
             }
             decimeter{
-                dnam{"𞤣𞤫𞤧𞤭𞤥𞤫𞥅𞤼𞤭"}
-                one{"{0} 𞤣𞤫𞤧𞤭𞤥𞤫𞥅𞤼𞤮𞤤"}
-                other{"{0} 𞤣𞤫𞤧𞤭𞤥𞤫𞥅𞤼𞤭"}
+                dnam{"𞤣𞤫𞥅𞤧𞤭𞤥𞤫𞥅𞤼𞤭"}
+                one{"{0} 𞤣𞤫𞥅𞤧𞤭𞤥𞤫𞥅𞤼𞤮𞤤"}
+                other{"{0} 𞤣𞤫𞥅𞤧𞤭𞤥𞤫𞥅𞤼𞤭"}
+            }
+            earth-radius{
+                dnam{"𞤤𞤢𞥄𞤧𞤮𞤤 𞤤𞤫𞤴𞤣𞤭 𞤲𞤣𞤭𞤲"}
+                one{"{0} 𞤤𞤢𞥄𞤧𞤮𞤤 𞤤𞤫𞤴𞤣𞤭 𞤲𞤣𞤭𞤲"}
+                other{"{0} 𞤤𞤢𞥄𞤧𞤮𞤤 𞤤𞤫𞤴𞤣𞤭 𞤲𞤣𞤭𞤲"}
             }
             foot{
-                dnam{"𞤼𞤫𞤨𞥆𞤫"}
-                one{"{0} 𞤼𞤫𞤨𞥆𞤫𞤪𞤫"}
-                other{"{0} 𞤼𞤫𞤨𞥆𞤫"}
-                per{"{0}/𞤫 𞤼𞤫𞤨𞥆𞤫𞤪𞤫"}
+                dnam{"𞤼𞤫𞤨𞥆𞤭"}
+                one{"{0} 𞤼𞤫𞤨𞥆𞤵"}
+                other{"{0} 𞤼𞤫𞤨𞥆𞤭"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤼𞤫𞤨𞥆𞤵"}
             }
             inch{
-                dnam{"𞤺𞤮𞤪𞤭"}
-                one{"{0} 𞤺𞤮𞤪𞤲𞤣𞤵"}
-                other{"{0} 𞤺𞤮𞤪𞤭"}
-                per{"{0} 𞤫 𞤺𞤮𞤪𞤲𞤣𞤵"}
+                dnam{"𞤲𞤺𞤮𞤪𞤰𞤭"}
+                one{"{0} 𞤲𞤺𞤮𞤪𞤰𞤵"}
+                other{"{0} 𞤲𞤺𞤮𞤪𞤰𞤭"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤲𞤺𞤮𞤪𞤰𞤵"}
             }
             kilometer{
                 dnam{"𞤳𞤭𞤤𞤮𞤥𞤫𞥅𞤼𞤭"}
@@ -123,9 +429,9 @@
             }
             meter{
                 dnam{"𞤥𞤫𞥅𞤼𞤭"}
-                one{"{0}/𞤥𞤫𞥅𞤼𞤮𞤤"}
-                other{"{0}/𞤥𞤫𞥅𞤼𞤭"}
-                per{"{0}/𞤫 𞤥𞤫𞥅𞤼𞤮𞤤"}
+                one{"{0} 𞤥𞤫𞥅𞤼𞤮𞤤"}
+                other{"{0} 𞤥𞤫𞥅𞤼𞤭"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤥𞤫𞥅𞤼𞤮𞤤"}
             }
             micrometer{
                 dnam{"𞤻𞤭𞤤𞤢𞤥𞤫𞥅𞤼𞤭"}
@@ -138,9 +444,9 @@
                 other{"{0} 𞤥𞤢𞤴𞤤𞤭"}
             }
             mile-scandinavian{
-                dnam{"𞤥𞤢𞤴𞤤𞤵 𞤧𞤭𞤳𞤢𞤣𞤭𞤲𞤢𞥄𞤾𞤭𞤴𞤢𞤲𞤳𞤮"}
-                one{"{0} 𞤥𞤢𞤴𞤤𞤵 𞤧𞤭𞤳𞤢𞤣𞤭𞤲𞤢𞥄𞤾𞤭𞤴𞤢𞤲𞤳𞤮"}
-                other{"{0} 𞤥𞤢𞤴𞤤𞤭 𞤧𞤭𞤳𞤢𞤣𞤭𞤲𞤢𞥄𞤾𞤭𞤴𞤢𞤲𞤳𞤮"}
+                dnam{"𞤃𞤢𞤴𞤤𞤵 𞤧𞤭𞤳𞤢𞥄𞤣𞤭𞤲𞤢𞥄𞤾𞤭𞤲𞤳𞤮"}
+                one{"{0} 𞤃𞤢𞤴𞤤𞤵 𞤧𞤭𞤳𞤢𞥄𞤣𞤭𞤲𞤢𞥄𞤾𞤭𞤲𞤳𞤮"}
+                other{"{0} 𞤃𞤢𞤴𞤤𞤭 𞤧𞤭𞤳𞤢𞥄𞤣𞤭𞤲𞤢𞥄𞤾𞤭𞤲𞤳𞤮"}
             }
             millimeter{
                 dnam{"𞤥𞤭𞤤𞤭𞤥𞤫𞥅𞤼𞤭"}
@@ -148,14 +454,14 @@
                 other{"{0} 𞤥𞤭𞤤𞤭𞤥𞤫𞥅𞤼𞤭"}
             }
             nanometer{
-                dnam{"𞤲𞤢𞤲𞤮𞤥𞤫𞥅𞤼𞤭"}
-                one{"{0} 𞤲𞤢𞤲𞤮𞤥𞤫𞥅𞤼𞤮𞤤"}
-                other{"{0} 𞤲𞤢𞤲𞤮𞤥𞤫𞥅𞤼𞤭"}
+                dnam{"𞤲𞤢𞤲𞤮𞥊𞤥𞤫𞥅𞤼𞤭"}
+                one{"{0} 𞤲𞤢𞤲𞤮𞥊𞤥𞤫𞥅𞤼𞤮𞤤"}
+                other{"{0} 𞤲𞤢𞤲𞤮𞥊𞤥𞤫𞥅𞤼𞤭"}
             }
             nautical-mile{
-                dnam{"𞤥𞤢𞤴𞤤𞤭 𞤥𞤢𞥄𞤶𞤫𞤴𞤢𞤲𞤳𞤮"}
-                one{"{0} 𞤥𞤢𞤴𞤤𞤵 𞤥𞤢𞥄𞤶𞤫𞤴𞤢𞤲𞤳𞤮"}
-                other{"{0} 𞤥𞤢𞤴𞤤𞤭 𞤥𞤢𞥄𞤶𞤫𞤴𞤢𞤲𞤳𞤮"}
+                dnam{"𞤥𞤢𞤴𞤤𞤭 𞤥𞤢𞥄𞤶𞤫𞤴𞤢𞤲𞤳𞤮𞥅𞤶𞤭"}
+                one{"{0} 𞤥𞤢𞤴𞤤𞤵 𞤥𞤢𞥄𞤶𞤫𞤴𞤢𞤲𞤳𞤮𞤱𞤵"}
+                other{"{0} 𞤥𞤢𞤴𞤤𞤭 𞤥𞤢𞥄𞤶𞤫𞤴𞤢𞤲𞤳𞤮𞥅𞤶𞤭"}
             }
             parsec{
                 dnam{"𞤨𞤢𞤪𞤧𞤫𞤳𞤭"}
@@ -168,23 +474,416 @@
                 other{"{0} 𞤨𞤭𞤳𞤮𞤥𞤫𞥅𞤼𞤭"}
             }
             point{
-                dnam{"𞤼𞤮𞤩𞥆𞤫"}
-                one{"{0} 𞤼𞤮𞤩𞥆𞤫𞤪𞤫"}
-                other{"{0} 𞤼𞤮𞤩𞥆𞤫"}
+                dnam{"𞤲𞤶𞤮𞤣𞥆𞤵𞥅𞤶𞤭"}
+                one{"{0} 𞤲𞤶𞤮𞤣𞥆𞤵"}
+                other{"{0} 𞤲𞤶𞤮𞤣𞥆𞤵𞥅𞤶𞤭"}
+            }
+            solar-radius{
+                dnam{"𞤤𞤢𞥄𞤧𞤮𞤤 𞤲𞤢𞥄𞤲𞤺𞤫𞤴𞤢𞤲𞤳𞤮"}
+                one{"{0} 𞤤𞤢𞥄𞤧𞤭 𞤲𞤢𞥄𞤲𞤺𞤫𞤴𞤢𞤲𞤳𞤮"}
+                other{"{0} 𞤤𞤢𞥄𞤧𞤮𞤤 𞤲𞤢𞥄𞤲𞤺𞤫𞤴𞤢𞤲𞤳𞤮"}
             }
             yard{
-                dnam{"𞤴𞤢𞤪𞤣𞤵𞥅𞤶𞤭"}
-                one{"{0} 𞤴𞤢𞤪𞤣𞤵"}
-                other{"{0} 𞤴𞤢𞤪𞤣𞤵𞥅𞤶𞤭"}
+                dnam{"𞤧𞤮𞤺𞤮𞤲𞤫"}
+                one{"{0} 𞤧𞤮𞤺𞤮𞤲𞤢𞤤"}
+                other{"{0} 𞤧𞤮𞤺𞤮𞤲𞤫"}
+            }
+        }
+        mass{
+            carat{
+                dnam{"𞤳𞤭𞤪𞤢𞤪𞤼𞤵"}
+                one{"{0} 𞤳𞤢𞤪𞤢𞤪𞤼𞤵"}
+                other{"{0} 𞤳𞤢𞤪𞤢𞤪𞤼𞤭"}
+            }
+            dalton{
+                dnam{"𞤣𞤢𞤤𞤼𞤮𞥅𞤲𞤭"}
+                one{"{0} 𞤣𞤢𞤤𞤼𞤮𞥅𞤲𞤵"}
+                other{"{0} 𞤣𞤢𞤤𞤼𞤮𞥅𞤲𞤭"}
+            }
+            earth-mass{
+                dnam{"𞤲𞤭𞥅𞤧𞤵𞥅𞤶𞤭 𞤤𞤫𞤴𞤣𞤭 𞤲𞤣𞤭𞤲"}
+                one{"{0} 𞤲𞤭𞥅𞤧𞤵 𞤤𞤫𞤴𞤣𞤭 𞤲𞤣𞤭𞤲"}
+                other{"{0} 𞤲𞤭𞥅𞤧𞤵𞥅𞤶𞤭 𞤤𞤫𞤴𞤣𞤭 𞤲𞤣𞤭𞤲"}
+            }
+            grain{
+                dnam{"𞤺𞤢𞤰𞥆𞤫𞤪𞤫"}
+                one{"{0} 𞤺𞤢𞤰𞥆𞤫"}
+                other{"{0} 𞤺𞤢𞤰𞥆𞤫"}
+            }
+            gram{
+                dnam{"𞤺𞤢𞤪𞤬𞤭"}
+                one{"{0} 𞤺𞤢𞤪𞤬𞤵"}
+                other{"{0} 𞤺𞤢𞤪𞤬𞤭"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤺𞤢𞤪𞤬𞤵"}
+            }
+            kilogram{
+                dnam{"𞤳𞤭𞤤𞤮𞤺𞤢𞤪𞤬𞤭"}
+                one{"{0} 𞤳𞤭𞤤𞤮𞤺𞤢𞤪𞤬𞤵"}
+                other{"{0} 𞤳𞤭𞤤𞤮𞤺𞤢𞤪𞤬𞤭"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤳𞤭𞤤𞤮𞤺𞤢𞤪𞤬𞤵"}
+            }
+            metric-ton{
+                dnam{"𞤼𞤮𞥅𞤲𞤭 𞤥𞤫𞤼𞤭𞤪𞤳𞤵"}
+                one{"{0} 𞤼𞤮𞥅𞤲𞤵 𞤥𞤫𞤼𞤭𞤪𞤳𞤵"}
+                other{"{0} 𞤼𞤮𞥅𞤲𞤭 𞤥𞤫𞤼𞤭𞤪𞤳𞤵"}
+            }
+            microgram{
+                dnam{"𞤻𞤭𞤤𞤢𞤺𞤢𞤪𞤬𞤭"}
+                one{"{0} 𞤻𞤭𞤤𞤢𞤺𞤢𞤪𞤬𞤵"}
+                other{"{0} 𞤻𞤭𞤤𞤢𞤺𞤢𞤪𞤬𞤭"}
+            }
+            milligram{
+                dnam{"𞤥𞤭𞤤𞤭𞤺𞤢𞤪𞤬𞤭"}
+                one{"{0} 𞤥𞤭𞤤𞤭𞤺𞤢𞤪𞤬𞤵"}
+                other{"{0} 𞤥𞤭𞤤𞤭𞤺𞤢𞤪𞤬𞤭"}
+            }
+            ounce{
+                dnam{"𞤱𞤢𞤺𞤭𞤴𞤢𞥄𞤶𞤭"}
+                one{"{0} 𞤱𞤢𞤺𞤭𞤴𞤢𞤱𞤵"}
+                other{"{0} 𞤱𞤢𞤺𞤭𞤴𞤢𞥄𞤶𞤭"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤱𞤢𞤺𞤭𞤴𞤢𞤱𞤵"}
+            }
+            ounce-troy{
+                dnam{"𞤱𞤢𞤺𞤭𞤴𞤢𞥄𞤶𞤭 𞤥𞤫𞤲𞤳𞤫𞤤𞤣𞤭"}
+                one{"{0} 𞤱𞤢𞤺𞤭𞤴𞤢𞤱𞤵 𞤥𞤫𞤲𞤳𞤫𞤤𞤣𞤫"}
+                other{"{0} 𞤱𞤢𞤺𞤭𞤴𞤢𞥄𞤶𞤭 𞤥𞤫𞤲𞤳𞤫𞤤𞤣𞤫"}
+            }
+            pound{
+                dnam{"𞤺𞤢𞤪𞤤𞤭"}
+                one{"{0} 𞤺𞤢𞤪𞤤𞤵"}
+                other{"{0} 𞤺𞤢𞤪𞤤𞤭"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤺𞤢𞤪𞤤𞤵"}
+            }
+            solar-mass{
+                dnam{"𞤲𞤭𞥅𞤧𞤵𞥅𞤶𞤭 𞤲𞤢𞥄𞤲𞤺𞤫 𞤲𞤺𞤫𞤲"}
+                one{"{0} 𞤲𞤭𞥅𞤧𞤵 𞤲𞤢𞥄𞤲𞤺𞤫 𞤲𞤺𞤫𞤲"}
+                other{"{0} 𞤲𞤭𞥅𞤧𞤵𞥅𞤶𞤭 𞤲𞤢𞥄𞤲𞤺𞤫 𞤲𞤺𞤫𞤲"}
+            }
+            ton{
+                dnam{"𞤼𞤮𞥅𞤲𞤭"}
+                one{"{0} 𞤼𞤮𞥅𞤲𞤵"}
+                other{"{0} 𞤼𞤮𞥅𞤲𞤭"}
+            }
+        }
+        power{
+            gigawatt{
+                dnam{"𞤺𞤭𞤺𞤢𞤱𞤢𞥄𞤼𞤭"}
+                one{"{0} 𞤺𞤭𞤺𞤢𞤱𞤢𞥄𞤼𞤵"}
+                other{"{0} 𞤺𞤭𞤺𞤢𞤱𞤢𞥄𞤼𞤭"}
+            }
+            horsepower{
+                dnam{"𞤷𞤫𞤥𞤦𞤫-𞤨𞤵𞤷𞥆𞤭"}
+                one{"{0} 𞤷𞤫𞤥𞤦𞤫-𞤨𞤵𞤨𞥆𞤵"}
+                other{"{0} 𞤷𞤫𞤥𞤦𞤫-𞤨𞤵𞤷𞥆𞤭"}
+            }
+            kilowatt{
+                dnam{"𞤳𞤭𞤤𞤮𞤱𞤢𞥄𞤼𞤭"}
+                one{"{0} 𞤳𞤭𞤤𞤮𞤱𞤢𞥄𞤼𞤵"}
+                other{"{0} 𞤳𞤭𞤤𞤮𞤱𞤢𞥄𞤼𞤭"}
+            }
+            megawatt{
+                dnam{"𞤥𞤫𞤺𞤢𞤱𞤢𞥄𞤼𞤭"}
+                one{"{0} 𞤥𞤫𞤺𞤢𞤱𞤢𞥄𞤼𞤵"}
+                other{"{0} 𞤥𞤫𞤺𞤢𞤱𞤢𞥄𞤼𞤭"}
+            }
+            milliwatt{
+                dnam{"𞤥𞤭𞤤𞤭𞤱𞤢𞥄𞤼𞤭"}
+                one{"{0} 𞤥𞤭𞤤𞤭𞤱𞤢𞥄𞤼𞤵"}
+                other{"{0} 𞤥𞤭𞤤𞤭𞤱𞤢𞥄𞤼𞤭"}
+            }
+            watt{
+                dnam{"𞤱𞤢𞥄𞤼𞤭"}
+                one{"{0} 𞤱𞤢𞥄𞤼𞤭"}
+                other{"{0} 𞤱𞤢𞥄𞤼𞤭"}
+            }
+        }
+        pressure{
+            atmosphere{
+                dnam{"𞤦𞤫𞤧𞤤𞤮𞥅𞤶𞤭"}
+                one{"{0} 𞤦𞤫𞤧𞤤𞤮𞥅𞤪𞤭"}
+                other{"{0} 𞤦𞤫𞤧𞤤𞤮𞥅𞤶𞤭"}
+            }
+            bar{
+                dnam{"𞤦𞤢𞤪𞤤𞤭"}
+                one{"{0} 𞤦𞤢𞤪𞤤𞤵"}
+                other{"{0} 𞤦𞤢𞤪𞤤𞤭"}
+            }
+            hectopascal{
+                dnam{"𞤸𞤫𞤳𞤼𞤮𞤨𞤢𞤧𞤳𞤢𞤤𞤶𞤭"}
+                one{"{0} 𞤸𞤫𞤳𞤼𞤮𞤨𞤢𞤧𞤳𞤢𞤤"}
+                other{"{0} 𞤸𞤫𞤳𞤼𞤮𞤨𞤢𞤧𞤳𞤢𞤤𞤶𞤭"}
+            }
+            inch-ofhg{
+                dnam{"𞤲𞤺𞤮𞤪𞤰𞤭 𞤯𞤫𞤤𞤳𞤮𞥅𞤪𞤭"}
+                one{"{0} 𞤲𞤺𞤮𞤪𞤰𞤵 𞤯𞤫𞤤𞤳𞤮𞥅𞤪𞤭"}
+                other{"{0} 𞤲𞤺𞤮𞤪𞤰𞤭 𞤯𞤫𞤤𞤳𞤮𞥅𞤪𞤭"}
+            }
+            kilopascal{
+                dnam{"𞤳𞤭𞤤𞤮𞤨𞤢𞤧𞤳𞤢𞤤𞤶𞤭"}
+                one{"{0} 𞤳𞤭𞤤𞤮𞤨𞤢𞤧𞤳𞤢𞤤"}
+                other{"{0} 𞤳𞤭𞤤𞤮𞤨𞤢𞤧𞤳𞤢𞤤𞤶𞤭"}
+            }
+            megapascal{
+                dnam{"𞤥𞤫𞤺𞤢𞤨𞤢𞤧𞤳𞤢𞤤𞤶𞤭"}
+                one{"{0} 𞤥𞤫𞤺𞤢𞤨𞤢𞤧𞤳𞤢𞤤"}
+                other{"{0} 𞤥𞤫𞤺𞤢𞤨𞤢𞤧𞤳𞤢𞤤𞤶𞤭"}
+            }
+            millibar{
+                dnam{"𞤥𞤭𞤤𞤭𞤦𞤢𞤪𞤤𞤭"}
+                one{"{0} 𞤥𞤭𞤤𞤭𞤦𞤢𞤪𞤤𞤵"}
+                other{"{0} 𞤥𞤭𞤤𞤭𞤦𞤢𞤪𞤤𞤭"}
+            }
+            millimeter-ofhg{
+                dnam{"𞤥𞤭𞤤𞤭𞤥𞤫𞥅𞤼𞤭 𞤯𞤫𞤤𞤳𞤮𞥅𞤪𞤭"}
+                one{"{0} 𞤥𞤭𞤤𞤭𞤥𞤫𞥅𞤼𞤮𞤤 𞤯𞤫𞤤𞤳𞤮𞥅𞤪𞤭"}
+                other{"{0} 𞤥𞤭𞤤𞤭𞤥𞤫𞥅𞤼𞤭 𞤯𞤫𞤤𞤳𞤮𞥅𞤪𞤭"}
+            }
+            pascal{
+                dnam{"𞤨𞤢𞤧𞤳𞤢𞤤𞤶𞤭"}
+                one{"{0} 𞤨𞤢𞤧𞤷𞤢𞤤"}
+                other{"{0} 𞤨𞤢𞤧𞤷𞤢𞤤𞤶𞤭"}
+            }
+            pound-force-per-square-inch{
+                dnam{"𞤺𞤢𞤪𞤤𞤭 𞤲𞤣𞤫𞤪 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤲𞤺𞤮𞤪𞤰𞤵"}
+                one{"{0} 𞤺𞤢𞤪𞤤𞤵 𞤲𞤣𞤫𞤪 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤲𞤺𞤮𞤪𞤰𞤵"}
+                other{"{0} 𞤺𞤢𞤪𞤤𞤭 𞤲𞤣𞤫𞤪 𞤣𞤭𞤲𞤺𞤫𞤪𞤫 𞤲𞤺𞤮𞤪𞤰𞤵"}
+            }
+        }
+        speed{
+            kilometer-per-hour{
+                dnam{"𞤳𞤭𞤤𞤮𞤥𞤫𞥅𞤼𞤭 𞤲𞤣𞤫𞤪 𞤲𞤶𞤢𞤥𞤣𞤭"}
+                one{"{0} 𞤳𞤭𞤤𞤮𞤥𞤫𞥅𞤼𞤮𞤤 𞤲𞤣𞤫𞤪 𞤲𞤶𞤢𞤥𞤣𞤭"}
+                other{"{0} 𞤳𞤭𞤤𞤮𞤥𞤫𞥅𞤼𞤭 𞤲𞤣𞤫𞤪 𞤲𞤶𞤢𞤥𞤣𞤭"}
+            }
+            knot{
+                dnam{"𞤨𞤭𞤩𞤫"}
+                one{"{0} 𞤨𞤭𞤩𞤮"}
+                other{"{0} 𞤨𞤭𞤩𞤫"}
+            }
+            meter-per-second{
+                dnam{"𞤥𞤫𞥅𞤼𞤭 𞤲𞤣𞤫𞤪 𞤳𞤭𞤲𞤰𞤫𞤪𞤫"}
+                one{"{0} 𞤥𞤫𞥅𞤼𞤮𞤤 𞤲𞤣𞤫𞤪 𞤳𞤭𞤲𞤰𞤫𞤪𞤫"}
+                other{"{0} 𞤥𞤫𞥅𞤼𞤭 𞤲𞤣𞤫𞤪 𞤳𞤭𞤲𞤰𞤫𞤪𞤫"}
+            }
+            mile-per-hour{
+                dnam{"𞤥𞤢𞤴𞤤𞤭 𞤲𞤣𞤫𞤪 𞤲𞤶𞤢𞤥𞤲𞤣𞤭"}
+                one{"{0} 𞤥𞤢𞤴𞤤𞤵 𞤲𞤣𞤫𞤪 𞤲𞤶𞤢𞤥𞤲𞤣𞤭"}
+                other{"{0} 𞤥𞤢𞤴𞤤𞤭 𞤲𞤣𞤫𞤪 𞤲𞤶𞤢𞤥𞤲𞤣𞤭"}
+            }
+        }
+        temperature{
+            celsius{
+                dnam{"𞤶𞤫𞤩𞤫 𞤅𞤫𞤤𞤧𞤵"}
+                one{"{0} 𞤶𞤫𞤩𞤫𞤪𞤫 𞤅𞤫𞤤𞤧𞤵"}
+                other{"{0} 𞤶𞤫𞤩𞤫 𞤅𞤫𞤤𞤧𞤵"}
+            }
+            fahrenheit{
+                dnam{"𞤶𞤫𞤩𞤫 𞤊𞤢𞤸𞤪𞤢𞤲𞤫𞤴𞤼𞤵"}
+                one{"{0} 𞤶𞤫𞤩𞤫𞤪𞤫 𞤊𞤢𞤸𞤪𞤢𞤲𞤫𞤴𞤼𞤵"}
+                other{"{0} 𞤶𞤫𞤩𞤫 𞤊𞤢𞤸𞤪𞤢𞤲𞤫𞤴𞤼𞤵"}
+            }
+            generic{
+                one{"{0} 𞤶𞤫𞤩𞤫𞤪𞤫"}
+                other{"{0} 𞤶𞤫𞤩𞤫"}
+            }
+            kelvin{
+                dnam{"𞤶𞤫𞤩𞤫 𞤳𞤫𞤤𞤾𞤭𞥅𞤲"}
+                one{"{0} 𞤶𞤫𞤩𞤫𞤪𞤫 𞤳𞤫𞤤𞤾𞤭𞥅𞤲"}
+                other{"{0} 𞤶𞤫𞤩𞤫 𞤳𞤫𞤤𞤾𞤭𞥅𞤲"}
+            }
+        }
+        torque{
+            newton-meter{
+                dnam{"𞤲𞤫𞤱𞤼𞤮𞤲-𞤥𞤫𞥅𞤼𞤭"}
+                one{"{0} 𞤲𞤫𞤱𞤼𞤮𞤲-𞤥𞤫𞥅𞤼𞤮𞤤"}
+                other{"{0} 𞤲𞤫𞤱𞤼𞤮𞤲-𞤥𞤫𞥅𞤼𞤭"}
             }
         }
         volume{
+            acre-foot{
+                dnam{"𞤺𞤢𞤪𞤳𞤵 𞤼𞤫𞤨𞥆𞤭"}
+                one{"{0} 𞤺𞤢𞤪𞤳𞤵 𞤼𞤫𞤨𞥆𞤵"}
+                other{"{0} 𞤺𞤢𞤪𞤳𞤵 𞤼𞤫𞤨𞥆𞤭"}
+            }
+            barrel{
+                dnam{"𞤺𞤮𞤲𞤺𞤮𞥅𞤶𞤭"}
+                one{"{0} 𞤺𞤮𞤲𞤺𞤮𞥅𞤪𞤵"}
+                other{"{0} 𞤺𞤮𞤲𞤺𞤮𞥅𞤶𞤭"}
+            }
+            centiliter{
+                dnam{"𞤧𞤢𞤲𞤼𞤭𞤤𞤭𞥅𞤼𞤭"}
+                one{"{0} 𞤧𞤢𞤲𞤼𞤭𞤤𞤭𞥅𞤼𞤵"}
+                other{"{0} 𞤧𞤢𞤲𞤼𞤭𞤤𞤭𞥅𞤼𞤭"}
+            }
+            cubic-centimeter{
+                dnam{"𞤤𞤢𞤥𞤦𞤵 𞤧𞤢𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤭"}
+                one{"{0} 𞤤𞤢𞤥𞤦𞤵 𞤧𞤢𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤮𞤤"}
+                other{"{0} 𞤤𞤢𞤥𞤦𞤵 𞤧𞤢𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤭"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤤𞤢𞤥𞤦𞤵 𞤧𞤢𞤲𞤼𞤭𞤥𞤫𞥅𞤼𞤭"}
+            }
+            cubic-foot{
+                dnam{"𞤤𞤢𞤥𞤦𞤵 𞤼𞤫𞤨𞥆𞤭"}
+                one{"{0} 𞤤𞤢𞤥𞤦𞤵 𞤼𞤫𞤨𞥆𞤵"}
+                other{"{0} 𞤤𞤢𞤥𞤦𞤵 𞤼𞤫𞤨𞥆𞤭"}
+            }
+            cubic-inch{
+                dnam{"𞤤𞤢𞤥𞤦𞤵 𞤲𞤺𞤮𞤪𞤰𞤵"}
+                one{"{0} 𞤤𞤢𞤥𞤦𞤵 𞤲𞤺𞤮𞤪𞤰𞤵"}
+                other{"{0} 𞤤𞤢𞤥𞤦𞤵 𞤲𞤺𞤮𞤪𞤰𞤭"}
+            }
+            cubic-kilometer{
+                dnam{"𞤤𞤢𞤥𞤦𞤵 𞤳𞤭𞤤𞤮𞤥𞤫𞥅𞤼𞤭"}
+                one{"{0} 𞤤𞤢𞤥𞤦𞤵 𞤳𞤭𞤤𞤮𞤥𞤫𞥅𞤼𞤮𞤤"}
+                other{"{0} 𞤤𞤢𞤥𞤦𞤵 𞤳𞤭𞤤𞤮𞤥𞤫𞥅𞤼𞤭"}
+            }
             cubic-meter{
-                dnam{"𞤥𞥓"}
+                dnam{"𞤤𞤢𞤥𞤦𞤵 𞤥𞤫𞥅𞤼𞤮𞤤"}
+                one{"{0} 𞤤𞤢𞤥𞤦𞤵 𞤥𞤫𞥅𞤼𞤮𞤤"}
+                other{"{0} 𞤤𞤢𞤥𞤦𞤵 𞤥𞤫𞥅𞤼𞤭"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤤𞤢𞤥𞤦𞤵 𞤥𞤫𞥅𞤼𞤮𞤤"}
+            }
+            cubic-mile{
+                dnam{"𞤤𞤢𞤥𞤦𞤵 𞤥𞤢𞤴𞤤𞤭"}
+                one{"{0} 𞤤𞤢𞤥𞤦𞤵 𞤥𞤢𞤴𞤤𞤵"}
+                other{"{0} 𞤤𞤢𞤥𞤦𞤵 𞤥𞤢𞤴𞤤𞤭"}
+            }
+            cubic-yard{
+                dnam{"𞤤𞤢𞤥𞤦𞤵 𞤧𞤮𞤺𞤮𞤲𞤫"}
+                one{"{0} 𞤤𞤢𞤥𞤦𞤵 𞤧𞤮𞤺𞤮𞤲𞤢𞤤"}
+                other{"{0} 𞤤𞤢𞤥𞤦𞤵 𞤧𞤮𞤺𞤮𞤲𞤫"}
+            }
+            cup{
+                dnam{"𞤳𞤮𞤪𞤲𞤣𞤮𞥅𞤤𞤫"}
+                one{"{0} 𞤳𞤮𞤪𞤲𞤣𞤮𞥅𞤤𞤮"}
+                other{"{0} 𞤳𞤮𞤪𞤲𞤣𞤮𞥅𞤤𞤫"}
+            }
+            cup-metric{
+                dnam{"𞤳𞤮𞤪𞤲𞤣𞤮𞥅𞤤𞤫 𞤥𞤫𞤼𞤭𞤪𞤳𞤵"}
+                one{"{0} 𞤳𞤮𞤪𞤲𞤣𞤮𞥅𞤤𞤮 𞤥𞤫𞤼𞤭𞤪𞤳𞤵"}
+                other{"{0} 𞤳𞤮𞤪𞤲𞤣𞤮𞥅𞤤𞤫 𞤥𞤫𞤼𞤭𞤪𞤳𞤵"}
+            }
+            deciliter{
+                dnam{"𞤣𞤫𞥅𞤧𞤭𞤤𞤭𞥅𞤼𞤭"}
+                one{"{0} 𞤣𞤫𞥅𞤧𞤭𞤤𞤭𞥅𞤼𞤵"}
+                other{"{0} 𞤣𞤫𞥅𞤧𞤭𞤤𞤭𞥅𞤼𞤭"}
+            }
+            dessert-spoon{
+                dnam{"𞤳𞤮𞤤𞤬𞤮 𞤤𞤫𞤥𞤰𞤢𞥄𞤪𞤭"}
+                one{"{0} 𞤳𞤮𞤤𞤬𞤮 𞤤𞤫𞤥𞤰𞤢𞥄𞤪𞤭"}
+                other{"{0} 𞤳𞤮𞤤𞤬𞤮 𞤤𞤫𞤥𞤰𞤢𞥄𞤪𞤭"}
+            }
+            dessert-spoon-imperial{
+                dnam{"𞤳𞤮𞤤𞤬𞤮 𞤤𞤫𞤥𞤰𞤢𞥄𞤪𞤭 𞤚𞤭𞤤."}
+                one{"{0} 𞤳𞤮𞤤𞤬𞤫 𞤤𞤫𞤥𞤰𞤢𞥄𞤪𞤭 𞤚𞤭𞤤."}
+                other{"{0} 𞤳𞤮𞤤𞤬𞤮 𞤤𞤫𞤥𞤰𞤢𞥄𞤪𞤭 𞤚𞤭𞤤."}
+            }
+            dram{
+                dnam{"𞤣𞤭𞤪𞤸𞤢𞤥𞤵"}
+                one{"{0} 𞤣𞤭𞤪𞤸𞤢𞤥𞤵"}
+                other{"{0} 𞤣𞤭𞤪𞤸𞤢𞤥𞤵"}
+            }
+            drop{
+                dnam{"𞤧𞤭𞤲𞤼𞤫𞤪𞤫"}
+                one{"{0} 𞤧𞤭𞤲𞤼𞤫𞤪𞤫"}
+                other{"{0} 𞤷𞤭𞤲𞤼𞤫"}
+            }
+            fluid-ounce{
+                dnam{"𞤱𞤢𞤺𞤭𞤴𞤢𞥄𞤶𞤭 𞤧𞤫𞤤𞤦𞤢𞤲"}
+                one{"{0} 𞤱𞤢𞤺𞤭𞤴𞤢𞤱𞤵 𞤧𞤫𞤤𞤦𞤢𞤲"}
+                other{"{0} 𞤱𞤢𞤺𞤭𞤴𞤢𞥄𞤶𞤭 𞤧𞤫𞤤𞤦𞤢𞤲"}
+            }
+            fluid-ounce-imperial{
+                dnam{"𞤱𞤢𞤺𞤭𞤴𞤢𞥄𞤶𞤭 𞤧𞤫𞤤𞤦𞤢𞤲 𞤚𞤭𞤤𞤧𞤵"}
+                one{"{0} 𞤱𞤢𞤺𞤭𞤴𞤢𞤱𞤵 𞤧𞤫𞤤𞤦𞤢𞤲 𞤚𞤭𞤤𞤧𞤵"}
+                other{"{0} 𞤱𞤢𞤺𞤭𞤴𞤢𞥄𞤶𞤭 𞤧𞤫𞤤𞤦𞤢𞤲 𞤚𞤭𞤤𞤧𞤵"}
+            }
+            gallon{
+                dnam{"𞤺𞤢𞤤𞤮𞤲𞤶𞤭"}
+                one{"{0} 𞤺𞤢𞤤𞤮𞤲𞤪𞤵"}
+                other{"{0} 𞤺𞤢𞤤𞤮𞤲𞤶𞤭"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤺𞤢𞤤𞤮𞤲𞤪𞤵"}
+            }
+            gallon-imperial{
+                dnam{"𞤺𞤢𞤤𞤮𞤲𞤶𞤭 𞤚𞤭𞤤𞤧𞤵"}
+                one{"{0} 𞤺𞤢𞤤𞤮𞤲𞤪𞤵 𞤚𞤭𞤤𞤧𞤵"}
+                other{"{0} 𞤺𞤢𞤤𞤮𞤲𞤶𞤭 𞤚𞤭𞤤𞤧𞤵"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤺𞤢𞤤𞤮𞤲𞤪𞤵 𞤚𞤭𞤤𞤧𞤵"}
+            }
+            hectoliter{
+                dnam{"𞤸𞤫𞤳𞤼𞤮𞤤𞤭𞥅𞤼𞤭"}
+                one{"{0} 𞤸𞤫𞤳𞤼𞤮𞤤𞤭𞥅𞤼𞤵"}
+                other{"{0} 𞤸𞤫𞤳𞤼𞤮𞤤𞤭𞥅𞤼𞤭"}
+            }
+            jigger{
+                dnam{"𞤶𞤭𞤺𞥆𞤮"}
+                one{"{0} 𞤶𞤭𞤺𞥆𞤮"}
+                other{"{0} 𞤶𞤭𞤺𞥆𞤫"}
+            }
+            liter{
+                dnam{"𞤤𞤭𞥅𞤼𞤭"}
+                one{"{0} 𞤤𞤭𞥅𞤼𞤵"}
+                other{"{0} 𞤤𞤭𞥅𞤼𞤭"}
+                per{"{0} 𞤲𞤣𞤫𞤪 𞤤𞤭𞥅𞤼𞤵"}
+            }
+            megaliter{
+                dnam{"𞤥𞤫𞤺𞤢𞤤𞤭𞥅𞤼𞤵"}
+                one{"{0} 𞤥𞤫𞤺𞤢𞤤𞤭𞥅𞤼𞤵"}
+                other{"{0} 𞤥𞤫𞤺𞤢𞤤𞤭𞥅𞤼𞤭"}
+            }
+            milliliter{
+                dnam{"𞤥𞤭𞤤𞤭𞤤𞤭𞥅𞤼𞤭"}
+                one{"{0} 𞤥𞤭𞤤𞤭𞤤𞤭𞥅𞤼𞤵"}
+                other{"{0} 𞤥𞤭𞤤𞤭𞤤𞤭𞥅𞤼𞤭"}
+            }
+            pinch{
+                dnam{"𞤩𞤵𞤷𞥆𞤢𞤲𞤣𞤫"}
+                one{"{0} 𞤩𞤵𞤷𞥆𞤢𞤲𞤣𞤫"}
+                other{"{0} 𞤩𞤵𞤷𞥆𞤢𞤲𞤯𞤫"}
+            }
+            pint{
+                dnam{"𞤨𞤭𞤲𞤼𞤭"}
+                one{"{0} 𞤨𞤭𞤲𞤼𞤵"}
+                other{"{0} 𞤨𞤭𞤲𞤼𞤭"}
+            }
+            pint-metric{
+                dnam{"𞤨𞤭𞤲𞤼𞤭 𞤥𞤫𞤼𞤭𞤪𞤳𞤵"}
+                one{"{0} 𞤨𞤭𞤲𞤼𞤵 𞤥𞤫𞤼𞤭𞤪𞤳𞤵"}
+                other{"{0} 𞤨𞤭𞤲𞤼𞤭 𞤥𞤫𞤼𞤭𞤪𞤳𞤵"}
+            }
+            quart{
+                dnam{"𞤳𞤮𞤪𞤼𞤭"}
+                one{"{0} 𞤳𞤮𞤪𞤼𞤵"}
+                other{"{0} 𞤳𞤮𞤪𞤼𞤭"}
+            }
+            quart-imperial{
+                dnam{"𞤳𞤮𞤪𞤼𞤵 𞤚𞤭𞤤𞤧𞤵"}
+                one{"{0} 𞤳𞤮𞤪𞤼𞤵 𞤚𞤭𞤤𞤧𞤵"}
+                other{"{0} 𞤳𞤮𞤪𞤼𞤭 𞤚𞤭𞤤𞤧𞤵"}
+            }
+            tablespoon{
+                dnam{"𞤳𞤮𞤤𞤬𞤫-𞤻𞤢𞥄𞤥𞤣𞤵"}
+                one{"{0} 𞤳𞤮𞤤𞤬𞤮-𞤻𞤢𞥄𞤥𞤣𞤵"}
+                other{"{0} 𞤳𞤮𞤤𞤬𞤫-𞤻𞤢𞥄𞤥𞤣𞤵"}
+            }
+            teaspoon{
+                dnam{"𞤳𞤮𞤤𞤬𞤫-𞤲𞤦𞤢𞤪𞤩𞤵"}
+                one{"{0} 𞤳𞤮𞤤𞤬𞤮-𞤲𞤦𞤢𞤪𞤩𞤵"}
+                other{"{0} 𞤳𞤮𞤤𞤬𞤫-𞤲𞤦𞤢𞤪𞤩𞤵"}
             }
         }
     }
     unitsNarrow{
+        compound{
+            per{"{0}/{1}"}
+            times{"{0}-{1}"}
+        }
+        coordinate{
+            dnam{"𞤸𞤫𞤤𞥆𞤢"}
+            east{"{0}𞤊"}
+            north{"{0}𞤐"}
+            south{"{0}𞤙"}
+            west{"{0}𞤖"}
+        }
         duration{
             day{
                 dnam{"𞤻𞤢𞤤."}
@@ -192,19 +891,19 @@
                 other{"{0} 𞤻𞤢𞤤."}
             }
             hour{
-                dnam{"𞤶𞤢"}
-                one{"{0} 𞤶𞤢"}
-                other{"{0} 𞤶𞤢"}
+                dnam{"𞤲𞤶𞤢𞤥𞤲𞤣𞤭"}
+                one{"{0}𞤶"}
+                other{"{0}𞤶"}
             }
             millisecond{
-                dnam{"𞤤𞤳𞤭𞤲"}
-                one{"{0} 𞤤𞤳𞤭"}
-                other{"{0} 𞤤𞤳𞤭"}
+                dnam{"𞤥𞤳𞤭𞤲"}
+                one{"{0}𞤥𞤳𞤭𞤲"}
+                other{"{0}𞤥𞤳𞤭𞤲"}
             }
             minute{
                 dnam{"𞤸𞤮𞤶"}
-                one{"{0} 𞤸𞤮𞤶"}
-                other{"{0} 𞤳𞤮𞤶"}
+                one{"{0}𞤸𞤮𞤶"}
+                other{"{0}𞤸𞤮𞤶"}
             }
             month{
                 dnam{"𞤤𞤫𞤦𞥆𞤭"}
@@ -213,8 +912,8 @@
             }
             second{
                 dnam{"𞤳𞤭𞤲"}
-                one{"{0} 𞤳𞤭𞤲"}
-                other{"{0} 𞤳𞤭𞤲"}
+                one{"{0}𞤳𞤭𞤲"}
+                other{"{0}𞤳𞤭𞤲"}
             }
             week{
                 dnam{"𞤶𞤼"}
@@ -230,39 +929,223 @@
         length{
             centimeter{
                 dnam{"𞤧𞤥"}
-                one{"{0} 𞤧𞤥"}
-                other{"{0} 𞤧𞤥"}
+                one{"{0}𞤧𞤥"}
+                other{"{0}𞤧𞤥"}
             }
             kilometer{
                 dnam{"𞤳𞤥"}
-                one{"{0} 𞤳𞤥"}
-                other{"{0} 𞤳𞤥"}
+                one{"{0}𞤳𞤥"}
+                other{"{0}𞤳𞤥"}
             }
             meter{
                 dnam{"𞤥"}
-                one{"{0}/𞤥"}
-                other{"{0}/𞤥"}
+                one{"{0}𞤥"}
+                other{"{0}𞤥"}
             }
             millimeter{
                 dnam{"𞤥𞤥"}
-                one{"{0} 𞤥𞤥"}
-                other{"{0} 𞤥𞤥"}
+                one{"{0}𞤥𞤥"}
+                other{"{0}𞤥𞤥"}
+            }
+        }
+        mass{
+            gram{
+                dnam{"𞤺𞤢𞤪𞤬𞤵"}
+                one{"{0}𞤺"}
+                other{"{0}𞤺"}
+            }
+            kilogram{
+                dnam{"𞤳𞤺"}
+                one{"{0}𞤳𞤺"}
+                other{"{0}𞤳𞤺"}
+            }
+        }
+        speed{
+            kilometer-per-hour{
+                dnam{"𞤳𞤥/𞤶𞤢"}
+                one{"{0}𞤳𞤥/𞤶"}
+                other{"{0}𞤳𞤥/𞤶"}
+            }
+        }
+        temperature{
+            celsius{
+                dnam{"°𞤅"}
+                one{"{0}°𞤅"}
+                other{"{0}°𞤅"}
+            }
+        }
+        volume{
+            liter{
+                dnam{"𞤤𞤭𞥅𞤼𞤵"}
+                one{"{0}𞤂"}
+                other{"{0}𞤂"}
             }
         }
     }
     unitsShort{
+        acceleration{
+            g-force{
+                dnam{"𞤻-𞤷𞤫𞤥𞤦𞤫"}
+                one{"{0} 𞤙"}
+                other{"{0} 𞤙"}
+            }
+            meter-per-square-second{
+                dnam{"𞤥𞤫𞥅𞤼𞤭/𞤳𞤭𞤲𞥒"}
+                one{"{0} 𞤥/𞤳𞤭𞤲𞥒"}
+                other{"{0} 𞤥/𞤳𞤭𞤲𞥒"}
+            }
+        }
+        angle{
+            arc-minute{
+                dnam{"𞤸𞤮𞤶𞤤𞤢"}
+                one{"{0} 𞤸𞤮𞤶𞤤𞤢"}
+                other{"{0} 𞤸𞤮𞤶𞤤𞤢"}
+            }
+            arc-second{
+                dnam{"𞤶𞤮𞤶𞤳𞤭𞤲"}
+                one{"{0} 𞤸𞤮𞤶𞤳𞤭𞤲"}
+                other{"{0} 𞤸𞤮𞤶𞤳𞤭𞤲"}
+            }
+            degree{
+                dnam{"𞤶𞤫𞤩𞤫"}
+                one{"{0} 𞤶𞤫𞤩"}
+                other{"{0} 𞤶𞤫𞤩"}
+            }
+            radian{
+                dnam{"𞤪𞤢𞤣𞤭𞤴𞤢𞤲𞤶𞤭"}
+                one{"{0} 𞤪𞤢𞤣"}
+                other{"{0} 𞤪𞤢𞤣"}
+            }
+            revolution{
+                dnam{"𞤱𞤭𞤣"}
+                one{"{0} 𞤱𞤭𞤣"}
+                other{"{0} 𞤱𞤭𞤣"}
+            }
+        }
         area{
+            acre{
+                dnam{"𞤺𞤢𞤪𞤳𞤭"}
+                one{"{0} 𞤺𞤢"}
+                other{"{0} 𞤺𞤢"}
+            }
+            dunam{
+                dnam{"𞤣𞤵𞥅𞤲𞤢𞤥𞤭"}
+                one{"{0} 𞤣𞤵𞥅𞤲𞤢𞤥𞤵"}
+                other{"{0} 𞤣𞤵𞥅𞤲𞤢𞤥𞤭"}
+            }
             hectare{
-                dnam{"𞤸𞤢"}
+                dnam{"𞤸𞤫𞤳𞤼𞤢𞤪𞤯𞤫"}
                 one{"{0} 𞤸𞤢"}
                 other{"{0} 𞤸𞤢"}
             }
+            square-centimeter{
+                dnam{"𞤧𞤥𞥒"}
+                one{"{0} 𞤧𞤥𞥒"}
+                other{"{0} 𞤧𞤥𞥒"}
+                per{"{0}/𞤧𞤥𞥒"}
+            }
+            square-foot{
+                dnam{"𞤣𞤺 𞤼𞤫𞤨𞥆𞤭"}
+                one{"{0} 𞤣𞤺 𞤼𞤨"}
+                other{"{0} 𞤣𞤺 𞤼𞤨"}
+            }
+            square-inch{
+                dnam{"𞤲𞤺𞤮𞤪𞤰𞤭𞥒"}
+                one{"{0} 𞤺𞤮𞥒"}
+                other{"{0} 𞤺𞤮𞥒"}
+                per{"{0}/𞤺𞤮𞥒"}
+            }
             square-kilometer{
                 dnam{"𞤳𞤥𞥒"}
                 one{"{0} 𞤳𞤥𞥒"}
                 other{"{0} 𞤳𞤥𞥒"}
                 per{"{0}/𞤳𞤥𞥒"}
             }
+            square-meter{
+                dnam{"𞤥𞤫𞥅𞤼𞤭𞥒"}
+                one{"{0} 𞤥𞥒"}
+                other{"{0} 𞤥𞥒"}
+                per{"{0}/𞤥𞥒"}
+            }
+            square-mile{
+                dnam{"𞤣𞤺 𞤥𞤢𞤴𞤤𞤭"}
+                one{"{0} 𞤥𞤢 𞤣𞤺"}
+                other{"{0} 𞤥𞤢 𞤣𞤺"}
+                per{"{0}/𞤥𞤢𞥒"}
+            }
+            square-yard{
+                dnam{"𞤧𞤮𞤺𞤮𞤲𞤫𞥒"}
+                one{"{0} 𞤧𞤮𞥒"}
+                other{"{0} 𞤧𞤮𞥒"}
+            }
+        }
+        compound{
+            per{"{0}/{1}"}
+            times{"{0}-{1}"}
+        }
+        coordinate{
+            dnam{"𞤸𞤫𞤤𞥆𞤢"}
+            east{"{0} 𞤊"}
+            north{"{0} 𞤐"}
+            south{"{0} 𞤙"}
+            west{"{0} 𞤖"}
+        }
+        digital{
+            bit{
+                dnam{"𞤦𞤭𞥅𞤼𞥆𞤵"}
+                one{"{0} 𞤦"}
+                other{"{0} 𞤦"}
+            }
+            byte{
+                dnam{"𞤶𞤫𞥅𞤼𞥆𞤵"}
+                one{"{0} 𞤔"}
+                other{"{0} 𞤔"}
+            }
+            gigabit{
+                dnam{"𞤘𞤦𞤭𞥅𞤼𞥆𞤵"}
+                one{"{0} 𞤘𞤦"}
+                other{"{0} 𞤘𞤦"}
+            }
+            gigabyte{
+                dnam{"𞤘𞤔𞤫𞥅𞤼𞥆𞤵"}
+                one{"{0} 𞤘𞤔"}
+                other{"{0} 𞤘𞤔"}
+            }
+            kilobit{
+                dnam{"𞤳𞤦𞤭𞥅𞤼𞥆𞤵"}
+                one{"{0} 𞤳𞤦"}
+                other{"{0} 𞤳𞤦"}
+            }
+            kilobyte{
+                dnam{"𞤳𞤔𞤫𞥅𞤼𞥆𞤵"}
+                one{"{0} 𞤳𞤔"}
+                other{"{0} 𞤳𞤔"}
+            }
+            megabit{
+                dnam{"𞤃𞤦𞤭𞥅𞤼𞥆𞤵"}
+                one{"{0} 𞤃𞤦"}
+                other{"{0} 𞤃𞤦"}
+            }
+            megabyte{
+                dnam{"𞤃𞤔𞤫𞥅𞤼𞥆𞤵"}
+                one{"{0} 𞤃𞤔"}
+                other{"{0} 𞤃𞤔"}
+            }
+            petabyte{
+                dnam{"𞤆𞤔𞤫𞥅𞤼𞥆𞤵"}
+                one{"{0} 𞤆𞤔"}
+                other{"{0} 𞤆𞤔"}
+            }
+            terabit{
+                dnam{"𞤚𞤦𞤭𞥅𞤼𞥆𞤭"}
+                one{"{0} 𞤚𞤦"}
+                other{"{0} 𞤚𞤦"}
+            }
+            terabyte{
+                dnam{"𞤚𞤔𞤫𞥅𞤼𞥆𞤵"}
+                one{"{0} 𞤚𞤔"}
+                other{"{0} 𞤚𞤔"}
+            }
         }
         duration{
             century{
@@ -276,11 +1159,16 @@
                 other{"{0} 𞤻𞤢𞤤."}
                 per{"{0}/𞤻𞤢𞤤."}
             }
+            decade{
+                dnam{"𞤼𞤭𞤶"}
+                one{"{0} 𞤼𞤭𞤶"}
+                other{"{0} 𞤼𞤭𞤶"}
+            }
             hour{
-                dnam{"𞤶𞤢"}
+                dnam{"𞤲𞤶𞤢𞤥𞤤𞤭"}
                 one{"{0} 𞤶𞤢"}
                 other{"{0} 𞤶𞤢"}
-                per{"{0}/𞤶𞤢"}
+                per{"{0}/𞤶"}
             }
             microsecond{
                 dnam{"𞤻𞤳𞤭𞤲"}
@@ -288,19 +1176,19 @@
                 other{"{0} 𞤻𞤳𞤭𞤲"}
             }
             millisecond{
-                dnam{"𞤤𞤳𞤭𞤲"}
-                one{"{0} 𞤤𞤳𞤭𞤲"}
-                other{"{0} 𞤤𞤳𞤭𞤲"}
+                dnam{"𞤥𞤭𞤤𞤭𞤳𞤭𞤲"}
+                one{"{0} 𞤥𞤳𞤭𞤲"}
+                other{"{0} 𞤥𞤳𞤭𞤲"}
             }
             minute{
                 dnam{"𞤸𞤮𞤶"}
                 one{"{0} 𞤸𞤮𞤶"}
-                other{"{0} 𞤳𞤮𞤶"}
+                other{"{0} 𞤸𞤮𞤶"}
                 per{"{0}/𞤸𞤮𞤶"}
             }
             month{
                 dnam{"𞤤𞤫𞤦𞥆𞤭"}
-                one{"{0}/𞤳𞤭𞤼"}
+                one{"{0}/𞤤𞤫𞤱"}
                 other{"{0} 𞤤𞤫𞤦"}
                 per{"{0}/𞤤𞤫𞤱"}
             }
@@ -328,11 +1216,151 @@
                 per{"{0}/𞤸𞤭𞤼𞤢𞥄𞤲𞥋𞤣𞤫"}
             }
         }
+        electric{
+            ampere{
+                dnam{"𞤢𞤥𞤨𞤫𞤪𞤶𞤭"}
+                one{"{0} 𞤀"}
+                other{"{0} 𞤀"}
+            }
+            milliampere{
+                dnam{"𞤥𞤭𞤤𞤭𞤢𞤥𞤨𞤫𞤪𞤶𞤭"}
+                one{"{0} 𞤥𞤀"}
+                other{"{0} 𞤥𞤀"}
+            }
+            ohm{
+                dnam{"𞤮𞤸𞤥𞤵𞥅𞤶𞤭"}
+                one{"{0} Ω"}
+                other{"{0} Ω"}
+            }
+            volt{
+                dnam{"𞤾𞤮𞤤𞤼𞤵𞥅𞤶𞤭"}
+                one{"{0} 𞤜"}
+                other{"{0} 𞤜"}
+            }
+        }
+        energy{
+            british-thermal-unit{
+                dnam{"𞤑𞤘𞤄"}
+                one{"{0} 𞤑𞤺𞤦"}
+                other{"{0} 𞤑𞤺𞤦"}
+            }
+            calorie{
+                dnam{"𞤺𞤵𞤤"}
+                one{"{0} 𞤺𞤵𞤤"}
+                other{"{0} 𞤺𞤵𞤤"}
+            }
+            electronvolt{
+                dnam{"𞤫𞤤𞤫𞤳𞤼𞤮𞤾𞤮𞤤𞤼𞤵"}
+                one{"{0} 𞤫𞤜"}
+                other{"{0} 𞤫𞤜"}
+            }
+            foodcalorie{
+                dnam{"𞤺𞤵𞤤"}
+                one{"{0} 𞤺𞤵𞤤"}
+                other{"{0} 𞤺𞤵𞤤"}
+            }
+            joule{
+                dnam{"𞥁𞤵𞥅𞤤𞤶𞤭"}
+                one{"{0} 𞤟"}
+                other{"{0} 𞤟"}
+            }
+            kilocalorie{
+                dnam{"𞤳𞤺𞤵𞤤"}
+                one{"{0} 𞤳𞤺𞤵𞤤"}
+                other{"{0} 𞤳𞤺𞤵𞤤"}
+            }
+            kilojoule{
+                dnam{"𞤳𞤭𞤤𞤮𞥁𞤵𞥅𞤤𞤱𞤵"}
+                one{"{0} 𞤳𞥁"}
+                other{"{0} 𞤳𞥁"}
+            }
+            kilowatt-hour{
+                dnam{"𞤳𞤏-𞤲𞤶𞤢𞤥𞤲𞤣𞤭"}
+                one{"{0} 𞤳𞤏𞤶"}
+                other{"{0} 𞤳𞤏𞤶"}
+            }
+            therm-us{
+                dnam{"𞤲𞤺𞤵𞤤𞤣𞤭𞤲𞤳𞤮 𞤁𞤀"}
+                one{"{0} 𞤲𞤺𞤣𞤳𞤮 𞤁𞤀"}
+                other{"{0} 𞤲𞤺𞤣𞤳𞤮 𞤁𞤀"}
+            }
+        }
+        force{
+            newton{
+                dnam{"𞤲𞤫𞤱𞤼𞤮𞤲"}
+                one{"{0} 𞤐"}
+                other{"{0} 𞤐"}
+            }
+        }
+        frequency{
+            gigahertz{
+                dnam{"𞤘𞤖𞤪"}
+                one{"{0} 𞤘𞤖𞤪"}
+                other{"{0} 𞤘𞤖𞤪"}
+            }
+            hertz{
+                dnam{"𞤖𞤪"}
+                one{"{0} 𞤖𞤪"}
+                other{"{0} 𞤖𞤪"}
+            }
+            kilohertz{
+                dnam{"𞤳𞤖𞤪"}
+                one{"{0} 𞤳𞤖𞤪"}
+                other{"{0} 𞤳𞤖𞤪"}
+            }
+            megahertz{
+                dnam{"𞤃𞤖𞤪"}
+                one{"{0} 𞤃𞤖𞤪"}
+                other{"{0} 𞤃𞤖𞤪"}
+            }
+        }
+        graphics{
+            dot{
+                dnam{"𞤼𞤮𞤩𞥆𞤫𞤪𞤫"}
+                one{"{0} 𞤼𞤮𞤩𞥆𞤫𞤪𞤫"}
+                other{"{0} 𞤼𞤮𞤩𞥆𞤫𞤪𞤫"}
+            }
+            dot-per-centimeter{
+                dnam{"𞤼𞤩𞤧𞤥"}
+                one{"{0} 𞤼𞤩𞤧𞤥"}
+                other{"{0} 𞤼𞤩𞤧𞤥"}
+            }
+            dot-per-inch{
+                dnam{"𞤼𞤩𞤺𞤰"}
+                one{"{0} 𞤼𞤩𞤺𞤰"}
+                other{"{0} 𞤼𞤩𞤺𞤰"}
+            }
+            em{
+                dnam{"𞤭𞤥𞤵"}
+                one{"{0} 𞤭𞤥𞤵"}
+                other{"{0} 𞤭𞤥𞤵"}
+            }
+            megapixel{
+                dnam{"𞤥𞤫𞤺𞤢𞤨𞤭𞤳𞤷𞤭"}
+                one{"{0} 𞤃𞤆"}
+                other{"{0} 𞤃𞤆"}
+            }
+            pixel{
+                dnam{"𞤨𞤭𞤳𞤷𞤭"}
+                one{"{0} 𞤨𞤳"}
+                other{"{0} 𞤨𞤳"}
+            }
+            pixel-per-centimeter{
+                dnam{"𞤨𞤳𞤣𞤧𞤥"}
+                one{"{0} 𞤨𞤳𞤣𞤧𞤥"}
+                other{"{0} 𞤨𞤳𞤣𞤧𞤥"}
+            }
+            pixel-per-inch{
+                dnam{"𞤨𞤳𞤣𞤺𞤰"}
+                one{"{0} 𞤨𞤳𞤣𞤺𞤰"}
+                other{"{0} 𞤨𞤳𞤣𞤺𞤰"}
+            }
+        }
         length{
             astronomical-unit{
-                dnam{"𞤺𞤭"}
-                one{"{0} 𞤺𞤭"}
-                other{"{0} 𞤺𞤭"}
+                dnam{"𞤳𞤵"}
+                one{"{0} 𞤳𞤵"}
+                other{"{0} 𞤳𞤵"}
             }
             centimeter{
                 dnam{"𞤧𞤥"}
@@ -345,14 +1373,19 @@
                 one{"{0} 𞤣𞤥"}
                 other{"{0} 𞤣𞤥"}
             }
+            earth-radius{
+                dnam{"𞤂⊕"}
+                one{"{0} 𞤂⊕"}
+                other{"{0} 𞤂⊕"}
+            }
             foot{
-                dnam{"𞤼𞤫"}
-                one{"{0} 𞤼𞤫"}
-                other{"{0} 𞤼𞤫"}
-                per{"{0}/𞤼𞤫"}
+                dnam{"𞤼𞤨"}
+                one{"{0} 𞤼𞤨"}
+                other{"{0} 𞤼𞤨"}
+                per{"{0}/𞤼𞤨"}
             }
             inch{
-                dnam{"𞤺𞤮"}
+                dnam{"𞤲𞤺𞤮𞤪𞤰𞤭"}
                 one{"{0} 𞤺𞤮"}
                 other{"{0} 𞤺𞤮"}
                 per{"{0}/𞤺𞤮"}
@@ -370,12 +1403,12 @@
             }
             meter{
                 dnam{"𞤥"}
-                one{"{0}/𞤥"}
-                other{"{0}/𞤥"}
+                one{"{0} 𞤥"}
+                other{"{0} 𞤥"}
                 per{"{0}/𞤥"}
             }
             micrometer{
-                dnam{"𞤻𞤥"}
+                dnam{"𞤻𞤥𞤫𞥅𞤼𞤭"}
                 one{"{0} 𞤻𞤥"}
                 other{"{0} 𞤻𞤥"}
             }
@@ -415,14 +1448,397 @@
                 other{"{0} 𞤨𞤥"}
             }
             point{
-                dnam{"𞤼𞤩"}
-                one{"{0} 𞤼𞤩"}
-                other{"{0} 𞤼𞤩"}
+                dnam{"𞤶𞤣"}
+                one{"{0} 𞤶𞤣"}
+                other{"{0} 𞤶𞤣"}
+            }
+            solar-radius{
+                dnam{"𞤤𞤢𞥄𞤧𞤮𞤤 𞤲𞤢𞥄𞤲𞤺𞤫𞤴𞤢𞤲𞤳𞤮"}
+                one{"{0} 𞤂☉"}
+                other{"{0} 𞤂☉"}
             }
             yard{
-                dnam{"𞤴𞤣"}
-                one{"{0} 𞤴𞤣"}
-                other{"{0} 𞤴𞤣"}
+                dnam{"𞤧𞤮𞤺𞤮𞤲𞤫"}
+                one{"{0} 𞤧𞤮"}
+                other{"{0} 𞤧𞤮"}
+            }
+        }
+        mass{
+            carat{
+                dnam{"𞤳𞤭𞤪𞤭𞤪𞤼𞤭"}
+                one{"{0} 𞤑𞤈"}
+                other{"{0} 𞤑𞤈"}
+            }
+            dalton{
+                dnam{"𞤣𞤢𞤤𞤼𞤮𞥅𞤲𞤭"}
+                one{"{0} 𞤁𞤢"}
+                other{"{0} 𞤁𞤢"}
+            }
+            earth-mass{
+                dnam{"𞤲𞤭𞥅𞤧𞤵𞥅𞤶𞤭 𞤤𞤫𞤴𞤣𞤭 𞤲𞤣𞤭𞤲"}
+                one{"{0} 𞤐⊕"}
+                other{"{0} 𞤐⊕"}
+            }
+            grain{
+                dnam{"𞤺𞤢𞤰𞥆𞤫"}
+                one{"{0} 𞤺𞤢𞤰"}
+                other{"{0} 𞤺𞤢𞤰"}
+            }
+            gram{
+                dnam{"𞤺𞤢𞤪𞤬𞤭"}
+                one{"{0} 𞤺"}
+                other{"{0} 𞤺"}
+                per{"{0}/𞤺"}
+            }
+            kilogram{
+                dnam{"𞤳𞤺"}
+                one{"{0} 𞤳𞤺"}
+                other{"{0} 𞤳𞤺"}
+                per{"{0}/𞤳𞤺"}
+            }
+            metric-ton{
+                dnam{"𞤼"}
+                one{"{0} 𞤼"}
+                other{"{0} 𞤼"}
+            }
+            microgram{
+                dnam{"𞤻𞤺"}
+                one{"{0} 𞤻𞤺"}
+                other{"{0} 𞤻𞤺"}
+            }
+            milligram{
+                dnam{"𞤥𞤺"}
+                one{"{0} 𞤥𞤺"}
+                other{"{0} 𞤥𞤺"}
+            }
+            ounce{
+                dnam{"𞤱𞤺"}
+                one{"{0} 𞤱𞤺"}
+                other{"{0} 𞤱𞤺"}
+                per{"{0}/𞤱𞤺"}
+            }
+            ounce-troy{
+                dnam{"𞤱𞤺 𞤥𞤫𞤲𞤳𞤫𞤤𞤣𞤫"}
+                one{"{0} 𞤱𞤺 𞤥𞤳"}
+                other{"{0} 𞤱𞤺 𞤥𞤳"}
+            }
+            pound{
+                dnam{"𞤺𞤢𞤪𞤤𞤭"}
+                one{"{0} 𞤺𞤤"}
+                other{"{0} 𞤺𞤤"}
+                per{"{0}/𞤺𞤤"}
+            }
+            solar-mass{
+                dnam{"𞤲𞤭𞥅𞤧𞤵𞥅𞤶𞤭 𞤲𞤢𞥄𞤲𞤺𞤫 𞤲𞤺𞤫𞤲"}
+                one{"{0} 𞤐☉"}
+                other{"{0} 𞤐☉"}
+            }
+            ton{
+                dnam{"𞤼𞤮𞥅𞤲𞤭"}
+                one{"{0} 𞤼𞤲"}
+                other{"{0} 𞤼𞤲"}
+            }
+        }
+        power{
+            gigawatt{
+                dnam{"𞤘𞤏"}
+                one{"{0} 𞤘𞤏"}
+                other{"{0} 𞤘𞤏"}
+            }
+            horsepower{
+                dnam{"𞤷𞤨"}
+                one{"{0} 𞤷𞤨"}
+                other{"{0} 𞤷𞤨"}
+            }
+            kilowatt{
+                dnam{"𞤳𞤏"}
+                one{"{0} 𞤳𞤏"}
+                other{"{0} 𞤳𞤏"}
+            }
+            megawatt{
+                dnam{"𞤃𞤏"}
+                one{"{0} 𞤃𞤏"}
+                other{"{0} 𞤃𞤏"}
+            }
+            milliwatt{
+                dnam{"𞤥𞤏"}
+                one{"{0} 𞤥𞤏"}
+                other{"{0} 𞤥𞤏"}
+            }
+            watt{
+                dnam{"𞤱𞤢𞥄𞤼𞤭"}
+                one{"{0} 𞤏"}
+                other{"{0} 𞤏"}
+            }
+        }
+        pressure{
+            atmosphere{
+                dnam{"𞤦𞤫𞤧"}
+                one{"{0} 𞤦𞤫𞤧"}
+                other{"{0} 𞤦𞤫𞤧"}
+            }
+            bar{
+                dnam{"𞤦𞤢𞤪𞤤𞤵"}
+                one{"{0} 𞤦𞤢𞤪"}
+                other{"{0} 𞤦𞤢𞤪"}
+            }
+            hectopascal{
+                dnam{"𞤸𞤆𞤢"}
+                one{"{0} 𞤸𞤆𞤢"}
+                other{"{0} 𞤸𞤆𞤢"}
+            }
+            inch-ofhg{
+                dnam{"𞤺𞤮𞤖𞤺"}
+                one{"{0} 𞤺𞤮𞤖𞤺"}
+                other{"{0} 𞤺𞤮𞤖𞤺"}
+            }
+            kilopascal{
+                dnam{"𞤳𞤆𞤢"}
+                one{"{0} 𞤳𞤆𞤢"}
+                other{"{0} 𞤳𞤆𞤢"}
+            }
+            megapascal{
+                dnam{"𞤃𞤆𞤢"}
+                one{"{0} 𞤃𞤆𞤢"}
+                other{"{0} 𞤃𞤆𞤢"}
+            }
+            millibar{
+                dnam{"𞤥𞤦𞤢𞤪"}
+                one{"{0} 𞤥𞤦𞤢𞤪"}
+                other{"{0} 𞤥𞤦𞤢𞤪"}
+            }
+            millimeter-ofhg{
+                dnam{"𞤥𞤥𞤖𞤺"}
+                one{"{0} 𞤥𞤥𞤖𞤺"}
+                other{"{0} 𞤥𞤥𞤖𞤺"}
+            }
+            pascal{
+                dnam{"𞤆𞤢"}
+                one{"{0} 𞤆𞤢"}
+                other{"{0} 𞤆𞤢"}
+            }
+            pound-force-per-square-inch{
+                dnam{"𞤺𞤣𞤺𞤮"}
+                one{"{0} 𞤺𞤣𞤺𞤮"}
+                other{"{0} 𞤺𞤣𞤺𞤮"}
+            }
+        }
+        speed{
+            kilometer-per-hour{
+                dnam{"𞤳𞤥/𞤲𞤶𞤢𞤥𞤣𞤭"}
+                one{"{0} 𞤳𞤥/𞤶"}
+                other{"{0} 𞤳𞤥/𞤶"}
+            }
+            knot{
+                dnam{"𞤨𞤩"}
+                one{"{0} 𞤨𞤩"}
+                other{"{0} 𞤨𞤩"}
+            }
+            meter-per-second{
+                dnam{"𞤥𞤫𞥅𞤼𞤭/𞤳𞤭𞤲"}
+                one{"{0} 𞤥/𞤳𞤭𞤲"}
+                other{"{0} 𞤥/𞤳𞤭𞤲"}
+            }
+            mile-per-hour{
+                dnam{"𞤥𞤢𞤴𞤤𞤭/𞤲𞤶𞤢𞤥𞤲𞤣𞤭"}
+                one{"{0} 𞤥𞤢𞥋𞤣𞤶"}
+                other{"{0} 𞤥𞤢𞥋𞤣𞤶"}
+            }
+        }
+        temperature{
+            celsius{
+                dnam{"𞤶𞤫𞤩. 𞤅"}
+                one{"{0}°𞤅"}
+                other{"{0}°𞤅"}
+            }
+            fahrenheit{
+                dnam{"𞤶𞤫𞤩. 𞤊"}
+                one{"{0}°𞤊"}
+                other{"{0}°𞤊"}
+            }
+            kelvin{
+                dnam{"𞤑"}
+                one{"{0} 𞤑"}
+                other{"{0} 𞤑"}
+            }
+        }
+        torque{
+            newton-meter{
+                dnam{"𞤐.𞤥"}
+                one{"{0} 𞤐.𞤥"}
+                other{"{0} 𞤐.𞤥"}
+            }
+        }
+        volume{
+            acre-foot{
+                dnam{"𞤺𞤢𞤪𞤳𞤵 𞤼𞤨"}
+                one{"{0} 𞤺𞤢 𞤼𞤨"}
+                other{"{0} 𞤺𞤢 𞤼𞤨"}
+            }
+            barrel{
+                dnam{"𞤺𞤮𞤲𞤺𞤮𞥅𞤪𞤵"}
+                one{"{0} 𞤺𞤮𞤺"}
+                other{"{0} 𞤺𞤮𞤺"}
+            }
+            centiliter{
+                dnam{"𞤧𞤂"}
+                one{"{0} 𞤧𞤂"}
+                other{"{0} 𞤧𞤂"}
+            }
+            cubic-centimeter{
+                dnam{"𞤧𞤥𞥓"}
+                one{"{0} 𞤧𞤥𞥓"}
+                other{"{0} 𞤧𞤥𞥓"}
+                per{"{0}/𞤧𞤥𞥓"}
+            }
+            cubic-foot{
+                dnam{"𞤼𞤫𞤨𞥆𞤭𞥓"}
+                one{"{0} 𞤼𞤨𞥓"}
+                other{"{0} 𞤼𞤨𞥓"}
+            }
+            cubic-inch{
+                dnam{"𞤲𞤺𞤮𞤪𞤰𞤭𞥓"}
+                one{"{0} 𞤺𞤮𞥓"}
+                other{"{0} 𞤺𞤮𞥓"}
+            }
+            cubic-kilometer{
+                dnam{"𞤳𞤥𞥓"}
+                one{"{0} 𞤳𞤥𞥓"}
+                other{"{0} 𞤳𞤥𞥓"}
+            }
+            cubic-meter{
+                dnam{"𞤥𞥓"}
+                one{"{0} 𞤥𞥓"}
+                other{"{0} 𞤥𞥓"}
+                per{"{0}/𞤥𞥓"}
+            }
+            cubic-mile{
+                dnam{"𞤥𞤢𞥓"}
+                one{"{0} 𞤥𞤢𞥓"}
+                other{"{0} 𞤥𞤢𞥓"}
+            }
+            cubic-yard{
+                dnam{"𞤧𞤮𞤺𞤮𞤲𞤫𞥓"}
+                one{"{0} 𞤧𞤮𞥓"}
+                other{"{0} 𞤧𞤮𞥓"}
+            }
+            cup{
+                dnam{"𞤳𞤮𞤪𞤲𞤣𞤮𞥅𞤤𞤫"}
+                one{"{0} 𞤳𞤮𞤪"}
+                other{"{0} 𞤳𞤮𞤪"}
+            }
+            cup-metric{
+                dnam{"𞤳𞤮𞤪𞤥"}
+                one{"{0} 𞤳𞤮𞤪𞤥"}
+                other{"{0} 𞤳𞤮𞤪𞤥"}
+            }
+            deciliter{
+                dnam{"𞤣𞤂"}
+                one{"{0} 𞤣𞤂"}
+                other{"{0} 𞤣𞤂"}
+            }
+            dessert-spoon{
+                dnam{"𞤳𞤤𞤤"}
+                one{"{0} 𞤳𞤤𞤤"}
+                other{"{0} 𞤳𞤤𞤤"}
+            }
+            dessert-spoon-imperial{
+                dnam{"𞤳𞤤𞤤 𞤚𞤭𞤤."}
+                one{"{0} 𞤳𞤤𞤤 𞤚𞤭𞤤."}
+                other{"{0} 𞤳𞤤𞤤 𞤚𞤭𞤤."}
+            }
+            dram{
+                dnam{"𞤣𞤭𞤪𞤸𞤢𞤥𞤵 𞤧𞤫𞤤𞤦𞤢𞤲"}
+                one{"{0} 𞤣𞤪 𞤧𞤫𞤤"}
+                other{"{0} 𞤣𞤪 𞤧𞤫𞤤"}
+            }
+            drop{
+                dnam{"𞤧𞤭𞤲𞤼𞤫𞤪𞤫"}
+                one{"{0} 𞤧𞤭𞤲"}
+                other{"{0} 𞤷𞤭𞤲"}
+            }
+            fluid-ounce{
+                dnam{"𞤱𞤺 𞤧𞤫𞤤"}
+                one{"{0} 𞤱𞤺 𞤧𞤫𞤤"}
+                other{"{0} 𞤱𞤺 𞤧𞤫𞤤"}
+            }
+            fluid-ounce-imperial{
+                dnam{"𞤱𞤺 𞤧𞤫𞤤 𞤚𞤭𞤤."}
+                one{"{0} 𞤱𞤺 𞤧𞤫𞤤 𞤚𞤭𞤤."}
+                other{"{0} 𞤱𞤺 𞤧𞤫𞤤 𞤚𞤭𞤤."}
+            }
+            gallon{
+                dnam{"𞤺𞤢𞤤"}
+                one{"{0} 𞤺𞤢𞤤"}
+                other{"{0} 𞤺𞤢𞤤"}
+                per{"{0}/𞤺𞤢𞤤"}
+            }
+            gallon-imperial{
+                dnam{"𞤺𞤢𞤤 𞤚𞤭𞤤."}
+                one{"{0} 𞤺𞤢𞤤 𞤚𞤭𞤤."}
+                other{"{0} 𞤺𞤢𞤤 𞤚𞤭𞤤."}
+                per{"{0}/𞤺𞤢𞤤 𞤚𞤭𞤤."}
+            }
+            hectoliter{
+                dnam{"𞤸𞤂"}
+                one{"{0} 𞤸𞤂"}
+                other{"{0} 𞤸𞤂"}
+            }
+            jigger{
+                dnam{"𞤶𞤭𞤺𞥆𞤮"}
+                one{"{0} 𞤶𞤭𞤺𞥆𞤮"}
+                other{"{0} 𞤶𞤭𞤺𞥆𞤮"}
+            }
+            liter{
+                dnam{"𞤤𞤭𞥅𞤼𞤭"}
+                one{"{0} 𞤂"}
+                other{"{0} 𞤂"}
+                per{"{0}/𞤂"}
+            }
+            megaliter{
+                dnam{"𞤃𞤂"}
+                one{"{0} 𞤃𞤂"}
+                other{"{0} 𞤃𞤂"}
+            }
+            milliliter{
+                dnam{"𞤥𞤂"}
+                one{"{0} 𞤥𞤂"}
+                other{"{0} 𞤥𞤂"}
+            }
+            pinch{
+                dnam{"𞤩𞤵𞤷𞥆𞤢𞤲𞤣𞤫"}
+                one{"{0} 𞤩𞤵𞤷"}
+                other{"{0} 𞤩𞤵𞤷"}
+            }
+            pint{
+                dnam{"𞤨𞤭𞤲𞤼𞤭"}
+                one{"{0} 𞤨𞤼"}
+                other{"{0} 𞤨𞤼"}
+            }
+            pint-metric{
+                dnam{"𞤨𞤼𞤥"}
+                one{"{0} 𞤨𞤼𞤥"}
+                other{"{0} 𞤨𞤼𞤥"}
+            }
+            quart{
+                dnam{"𞤳𞤼𞤭"}
+                one{"{0} 𞤳𞤼"}
+                other{"{0} 𞤳𞤼"}
+            }
+            quart-imperial{
+                dnam{"𞤳𞤼 𞤚𞤭𞤤"}
+                one{"{0} 𞤳𞤼 𞤚𞤭𞤤."}
+                other{"{0} 𞤳𞤼 𞤚𞤭𞤤."}
+            }
+            tablespoon{
+                dnam{"𞤳𞤤𞤻"}
+                one{"{0} 𞤳𞤤𞤻"}
+                other{"{0} 𞤳𞤤𞤻"}
+            }
+            teaspoon{
+                dnam{"𞤳𞤤𞤦"}
+                one{"{0} 𞤳𞤤𞤦"}
+                other{"{0} 𞤳𞤤𞤦"}
             }
         }
     }
diff --git a/icu4c/source/data/unit/ff_CM.txt b/icu4c/source/data/unit/ff_CM.txt
index c381f6c..0bf68ef 100644
--- a/icu4c/source/data/unit/ff_CM.txt
+++ b/icu4c/source/data/unit/ff_CM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_CM{
     "%%ALIAS"{"ff_Latn_CM"}
 }
diff --git a/icu4c/source/data/unit/ff_GN.txt b/icu4c/source/data/unit/ff_GN.txt
index c3a0bf3..433db4d 100644
--- a/icu4c/source/data/unit/ff_GN.txt
+++ b/icu4c/source/data/unit/ff_GN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_GN{
     "%%ALIAS"{"ff_Latn_GN"}
 }
diff --git a/icu4c/source/data/unit/ff_Latn.txt b/icu4c/source/data/unit/ff_Latn.txt
index 3d8715b..d30cb62 100644
--- a/icu4c/source/data/unit/ff_Latn.txt
+++ b/icu4c/source/data/unit/ff_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/ff_Latn_CM.txt b/icu4c/source/data/unit/ff_Latn_CM.txt
index a141c2f..123bc57 100644
--- a/icu4c/source/data/unit/ff_Latn_CM.txt
+++ b/icu4c/source/data/unit/ff_Latn_CM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/ff_Latn_GN.txt b/icu4c/source/data/unit/ff_Latn_GN.txt
index b37284e..54b7546 100644
--- a/icu4c/source/data/unit/ff_Latn_GN.txt
+++ b/icu4c/source/data/unit/ff_Latn_GN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/ff_Latn_MR.txt b/icu4c/source/data/unit/ff_Latn_MR.txt
index 9b83c95..dd6364b 100644
--- a/icu4c/source/data/unit/ff_Latn_MR.txt
+++ b/icu4c/source/data/unit/ff_Latn_MR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/ff_Latn_SN.txt b/icu4c/source/data/unit/ff_Latn_SN.txt
index 6112f6f..33ed407 100644
--- a/icu4c/source/data/unit/ff_Latn_SN.txt
+++ b/icu4c/source/data/unit/ff_Latn_SN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/ff_MR.txt b/icu4c/source/data/unit/ff_MR.txt
index 17a8873..1da6e51 100644
--- a/icu4c/source/data/unit/ff_MR.txt
+++ b/icu4c/source/data/unit/ff_MR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_MR{
     "%%ALIAS"{"ff_Latn_MR"}
 }
diff --git a/icu4c/source/data/unit/ff_SN.txt b/icu4c/source/data/unit/ff_SN.txt
index c690854..ca2f4ec 100644
--- a/icu4c/source/data/unit/ff_SN.txt
+++ b/icu4c/source/data/unit/ff_SN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_SN{
     "%%ALIAS"{"ff_Latn_SN"}
 }
diff --git a/icu4c/source/data/unit/fi.txt b/icu4c/source/data/unit/fi.txt
index 838e7d3..783dda5 100644
--- a/icu4c/source/data/unit/fi.txt
+++ b/icu4c/source/data/unit/fi.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fi{
-    Version{"37"}
     durationUnits{
         hm{"h.mm"}
         hms{"h.mm.ss"}
@@ -139,9 +139,9 @@
                 other{"{0} promillea"}
             }
             permillion{
-                dnam{"ppm"}
-                one{"{0} ppm"}
-                other{"{0} ppm"}
+                dnam{"miljoonasosat"}
+                one{"{0} miljoonasosa"}
+                other{"{0} miljoonasosaa"}
             }
             permyriad{
                 dnam{"peruspiste"}
@@ -247,6 +247,11 @@
                 other{"{0} päivää"}
                 per{"{0} / päivä"}
             }
+            decade{
+                dnam{"vuosikymmenet"}
+                one{"{0} vuosikymmen"}
+                other{"{0} vuosikymmentä"}
+            }
             hour{
                 dnam{"tunnit"}
                 one{"{0} tunti"}
@@ -397,6 +402,13 @@
                 other{"{0} megahertsiä"}
             }
         }
+        graphics{
+            dot{
+                dnam{"piste"}
+                one{"{0} piste"}
+                other{"{0} pistettä"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"astronomiset yksiköt"}
@@ -414,6 +426,11 @@
                 one{"{0} desimetri"}
                 other{"{0} desimetriä"}
             }
+            earth-radius{
+                dnam{"Maan säteet"}
+                one{"{0} Maan säde"}
+                other{"{0} Maan sädettä"}
+            }
             fathom{
                 dnam{"sylet"}
                 one{"{0} syli"}
@@ -510,6 +527,16 @@
             }
         }
         light{
+            candela{
+                dnam{"kandelat"}
+                one{"{0} kandela"}
+                other{"{0} kandelaa"}
+            }
+            lumen{
+                dnam{"luumenit"}
+                one{"{0} luumen"}
+                other{"{0} luumenia"}
+            }
             lux{
                 dnam{"luksit"}
                 one{"{0} luksi"}
@@ -537,6 +564,11 @@
                 one{"{0} Maan massa"}
                 other{"{0} Maan massaa"}
             }
+            grain{
+                dnam{"graanit"}
+                one{"{0} graani"}
+                other{"{0} graania"}
+            }
             gram{
                 dnam{"grammat"}
                 one{"{0} gramma"}
@@ -647,8 +679,8 @@
             }
             inch-ofhg{
                 dnam{"elohopeatuumat"}
-                one{"{0} tuuma elohopeaa"}
-                other{"{0} tuumaa elohopeaa"}
+                one{"{0} elohopeatuuma"}
+                other{"{0} elohopeatuumaa"}
             }
             kilopascal{
                 dnam{"kilopascalit"}
@@ -667,8 +699,8 @@
             }
             millimeter-ofhg{
                 dnam{"elohopeamillimetrit"}
-                one{"{0} millimetri elohopeaa"}
-                other{"{0} millimetriä elohopeaa"}
+                one{"{0} elohopeamillimetri"}
+                other{"{0} elohopeamillimetriä"}
             }
             pascal{
                 dnam{"pascalit"}
@@ -810,6 +842,26 @@
                 one{"{0} desilitra"}
                 other{"{0} desilitraa"}
             }
+            dessert-spoon{
+                dnam{"jälkiruokalusikat"}
+                one{"{0} jälkiruokalusikka"}
+                other{"{0} jälkiruokalusikkaa"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Imp. jälkiruokalusikat"}
+                one{"{0} imp. jälkiruokalusikka"}
+                other{"{0} imp. jälkiruokalusikkaa"}
+            }
+            dram{
+                dnam{"dramit"}
+                one{"{0} dram"}
+                other{"{0} dramia"}
+            }
+            drop{
+                dnam{"tipat"}
+                one{"{0} tippa"}
+                other{"{0} tippaa"}
+            }
             fluid-ounce{
                 dnam{"nesteunssit"}
                 one{"{0} nesteunssi"}
@@ -837,6 +889,11 @@
                 one{"{0} hehtolitra"}
                 other{"{0} hehtolitraa"}
             }
+            jigger{
+                dnam{"jiggerit"}
+                one{"{0} jigger"}
+                other{"{0} jiggeriä"}
+            }
             liter{
                 dnam{"litrat"}
                 one{"{0} litra"}
@@ -853,6 +910,11 @@
                 one{"{0} millilitra"}
                 other{"{0} millilitraa"}
             }
+            pinch{
+                dnam{"ripaus"}
+                one{"{0} ripaus"}
+                other{"{0} ripausta"}
+            }
             pint{
                 dnam{"pintit"}
                 one{"{0} pint"}
@@ -868,6 +930,11 @@
                 one{"{0} neljännesgallona"}
                 other{"{0} neljännesgallonaa"}
             }
+            quart-imperial{
+                dnam{"Imp. neljännesgallonat"}
+                one{"{0} imp. neljännesgallona"}
+                other{"{0} imp. neljännesgallonaa"}
+            }
             tablespoon{
                 dnam{"ruokalusikat"}
                 one{"{0} ruokalusikka"}
@@ -2152,6 +2219,13 @@
                 other{"{0} MHz"}
             }
         }
+        graphics{
+            dot{
+                dnam{"piste"}
+                one{"{0} piste"}
+                other{"{0} pistettä"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"au"}
@@ -2286,6 +2360,11 @@
             earth-mass{
                 dnam{"Maan massat"}
             }
+            grain{
+                dnam{"graanit"}
+                one{"{0} graani"}
+                other{"{0} graania"}
+            }
             gram{
                 dnam{"g"}
                 one{"{0} g"}
@@ -2395,9 +2474,9 @@
                 other{"{0} mbar"}
             }
             millimeter-ofhg{
-                dnam{"mm Hg"}
-                one{"{0} mm Hg"}
-                other{"{0} mm Hg"}
+                dnam{"mmHg"}
+                one{"{0} mmHg"}
+                other{"{0} mmHg"}
             }
             pound-force-per-square-inch{
                 dnam{"psi"}
@@ -2532,6 +2611,26 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"jrkl"}
+                one{"{0} jrkl"}
+                other{"{0} jrkl"}
+            }
+            dessert-spoon-imperial{
+                dnam{"imp. jrkl"}
+                one{"{0} imp. jrkl"}
+                other{"{0} imp. jrkl"}
+            }
+            dram{
+                dnam{"dramit"}
+                one{"{0} dram"}
+                other{"{0} dramia"}
+            }
+            drop{
+                dnam{"tipat"}
+                one{"{0} tippa"}
+                other{"{0} tippaa"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -2557,6 +2656,11 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"jiggerit"}
+                one{"{0} jigger"}
+                other{"{0} jiggeriä"}
+            }
             liter{
                 dnam{"l"}
                 one{"{0} l"}
@@ -2573,6 +2677,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"ripaus"}
+                one{"{0} ripaus"}
+                other{"{0} ripausta"}
+            }
             pint{
                 dnam{"pt"}
                 one{"{0} pt"}
diff --git a/icu4c/source/data/unit/fil.txt b/icu4c/source/data/unit/fil.txt
index e8e1dfd..eb2e9cf 100644
--- a/icu4c/source/data/unit/fil.txt
+++ b/icu4c/source/data/unit/fil.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fil{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -398,6 +398,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"tuldok"}
+                one{"{0} tuldok"}
+                other{"{0} tuldok"}
+            }
             dot-per-centimeter{
                 dnam{"tuldok bawat sentimetro"}
                 one{"{0} tuldok bawat sentimetro"}
@@ -449,6 +454,11 @@
                 one{"{0} decimetro"}
                 other{"{0} na decimetro"}
             }
+            earth-radius{
+                dnam{"earth radius"}
+                one{"{0} earth radius"}
+                other{"{0} na earth radius"}
+            }
             fathom{
                 dnam{"fathoms"}
                 one{"{0} fathom"}
@@ -545,6 +555,16 @@
             }
         }
         light{
+            candela{
+                dnam{"candela"}
+                one{"{0} candela"}
+                other{"{0} candela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                one{"{0} lumen"}
+                other{"{0} lumen"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
@@ -572,6 +592,11 @@
                 one{"{0} Earth mass"}
                 other{"{0} Earth mass"}
             }
+            grain{
+                dnam{"butil"}
+                one{"{0} butil"}
+                other{"{0} butil"}
+            }
             gram{
                 dnam{"gramo"}
                 one{"{0} gramo"}
@@ -777,6 +802,11 @@
                 one{"{0} bariles"}
                 other{"{0} bariles"}
             }
+            bushel{
+                dnam{"mga bushel"}
+                one{"{0} bushel"}
+                other{"{0} mga bushel"}
+            }
             centiliter{
                 dnam{"sentilitro"}
                 one{"{0} sentilitro"}
@@ -834,6 +864,21 @@
                 one{"{0} decilitro"}
                 other{"{0} na decilitro"}
             }
+            dessert-spoon{
+                dnam{"kutsarang panghimagas"}
+                one{"{0} kutsarang panghimagas"}
+                other{"{0} kutsarang panghimagas"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Imp. na kutsarang panghimagas"}
+                one{"{0} Imp. na kutsarang panghimagas"}
+                other{"{0} Imp. na kutsarang panghimagas"}
+            }
+            drop{
+                dnam{"patak"}
+                one{"{0} patak"}
+                other{"{0} patak"}
+            }
             fluid-ounce{
                 dnam{"fluid ounces"}
                 one{"{0} fluid ounce"}
@@ -877,6 +922,11 @@
                 one{"{0} mililitro"}
                 other{"{0} mililitro"}
             }
+            pinch{
+                dnam{"karampot"}
+                one{"{0} karampot"}
+                other{"{0} karampot"}
+            }
             pint{
                 dnam{"pints"}
                 one{"{0} pint"}
@@ -892,6 +942,11 @@
                 one{"{0} quart"}
                 other{"{0} na quarts"}
             }
+            quart-imperial{
+                dnam{"Imp. na kuwart"}
+                one{"{0} Imp. na kuwart"}
+                other{"{0} Imp. na kuwart"}
+            }
             tablespoon{
                 dnam{"kutsara"}
                 one{"{0} kutsara"}
@@ -1687,6 +1742,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"tuldok"}
+                one{"{0} tuldok"}
+                other{"{0} tuldok"}
+            }
             pixel{
                 dnam{"mga pixel"}
             }
@@ -1708,6 +1768,10 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            earth-radius{
+                one{"{0} na R⊕"}
+                other{"{0} na R⊕"}
+            }
             fathom{
                 dnam{"fathoms"}
                 one{"{0} fth"}
@@ -1829,6 +1893,11 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"butil"}
+                one{"{0} butil"}
+                other{"{0} butil"}
+            }
             gram{
                 dnam{"gramo"}
                 one{"{0} g"}
@@ -2028,6 +2097,9 @@
             barrel{
                 dnam{"bariles"}
             }
+            bushel{
+                dnam{"mga bushel"}
+            }
             centiliter{
                 dnam{"cL"}
                 one{"{0} cL"}
@@ -2085,6 +2157,11 @@
                 one{"{0} dL"}
                 other{"{0} dL"}
             }
+            drop{
+                dnam{"patak"}
+                one{"{0} patak"}
+                other{"{0} patak"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -2123,6 +2200,11 @@
                 one{"{0} mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"karampot"}
+                one{"{0} karampot"}
+                other{"{0} karampot"}
+            }
             pint{
                 dnam{"pints"}
                 one{"{0} pt"}
@@ -2138,6 +2220,9 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"Imp na kuwart"}
+            }
             tablespoon{
                 dnam{"tbsp"}
                 one{"{0} tbsp"}
diff --git a/icu4c/source/data/unit/fil_PH.txt b/icu4c/source/data/unit/fil_PH.txt
index 5b83d82..481c955 100644
--- a/icu4c/source/data/unit/fil_PH.txt
+++ b/icu4c/source/data/unit/fil_PH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/fo.txt b/icu4c/source/data/unit/fo.txt
index 574e98f..4496577 100644
--- a/icu4c/source/data/unit/fo.txt
+++ b/icu4c/source/data/unit/fo.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fo{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -398,6 +398,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"punkt"}
+                one{"{0} punkt"}
+                other{"{0} punkt"}
+            }
             dot-per-centimeter{
                 dnam{"punkt fyri hvønn sentimetur"}
                 one{"{0} punkt fyri hvønn sentimetur"}
@@ -449,12 +454,27 @@
                 one{"{0} desimetur"}
                 other{"{0} desimetrar"}
             }
+            earth-radius{
+                dnam{"radius á jørðuni"}
+                one{"{0} radius á jørðuni"}
+                other{"{0} radius á jørðuni"}
+            }
+            fathom{
+                dnam{"favnar"}
+                one{"{0} favnur"}
+                other{"{0} favnar"}
+            }
             foot{
                 dnam{"føtur"}
                 one{"{0} fótur"}
                 other{"{0} føtur"}
                 per{"{0}/fót"}
             }
+            furlong{
+                dnam{"furlongrar"}
+                one{"{0} furlongur"}
+                other{"{0} furlongrar"}
+            }
             inch{
                 dnam{"tummar"}
                 one{"{0} tummi"}
@@ -519,9 +539,9 @@
                 other{"{0} picometrar"}
             }
             point{
-                dnam{"punkt"}
-                one{"{0} punkt"}
-                other{"{0} punkt"}
+                dnam{"prikkar"}
+                one{"{0} prikkur"}
+                other{"{0} prikkar"}
             }
             solar-radius{
                 dnam{"sólarradii"}
@@ -535,6 +555,16 @@
             }
         }
         light{
+            candela{
+                dnam{"candela"}
+                one{"{0} candela"}
+                other{"{0} candela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                one{"{0} lumen"}
+                other{"{0} lumen"}
+            }
             lux{
                 dnam{"luks"}
                 one{"{0} luks"}
@@ -611,6 +641,11 @@
                 one{"{0} sólarmassi"}
                 other{"{0} sólarmassar"}
             }
+            stone{
+                dnam{"stones"}
+                one{"{0} stone"}
+                other{"{0} stones"}
+            }
             ton{
                 dnam{"stutt tons"}
                 one{"{0} stutt tons"}
@@ -687,13 +722,13 @@
             }
             pascal{
                 dnam{"pascal"}
-                one{"{0} Pascal"}
-                other{"{0} Pascal"}
+                one{"{0} pascal"}
+                other{"{0} pascal"}
             }
             pound-force-per-square-inch{
-                dnam{"psi"}
-                one{"{0} psi"}
-                other{"{0} psi"}
+                dnam{"pund fyri hvønn kvadrattumma"}
+                one{"pund fyri hvønn kvadrattumma"}
+                other{"{0} pund fyri hvønn kvadrattumma"}
             }
         }
         speed{
@@ -763,6 +798,11 @@
                 one{"{0} tunna"}
                 other{"{0} tunnur"}
             }
+            bushel{
+                dnam{"skeppur"}
+                one{"{0} skeppa"}
+                other{"{0} skeppur"}
+            }
             centiliter{
                 dnam{"sentilitrar"}
                 one{"{0} sentilitur"}
@@ -820,6 +860,26 @@
                 one{"{0} desilitur"}
                 other{"{0} desilitrar"}
             }
+            dessert-spoon{
+                dnam{"dessertskeið"}
+                one{"{0} dessertskeið"}
+                other{"{0} dessertskeiðir"}
+            }
+            dessert-spoon-imperial{
+                dnam{"bretsk dessertskeið"}
+                one{"{0} bretsk dessertskeið"}
+                other{"{0} bretskar dessertskeiðir"}
+            }
+            dram{
+                dnam{"drammur"}
+                one{"{0} drammur"}
+                other{"{0} drammar"}
+            }
+            drop{
+                dnam{"dropi"}
+                one{"{0} dropi"}
+                other{"{0} dropar"}
+            }
             fluid-ounce{
                 dnam{"flótandi unsur"}
                 one{"{0} flótandi unsa"}
@@ -847,6 +907,11 @@
                 one{"{0} hektolitur"}
                 other{"{0} hektolitrar"}
             }
+            jigger{
+                dnam{"snapsur"}
+                one{"{0} snapsur"}
+                other{"{0} snapsar"}
+            }
             liter{
                 dnam{"litrar"}
                 one{"{0} litur"}
@@ -863,6 +928,11 @@
                 one{"{0} millilitur"}
                 other{"{0} millilitrar"}
             }
+            pinch{
+                dnam{"vet"}
+                one{"{0} vet"}
+                other{"{0} vet"}
+            }
             pint{
                 dnam{"pints"}
                 one{"{0} pint"}
@@ -878,6 +948,11 @@
                 one{"{0} quart"}
                 other{"{0} quarts"}
             }
+            quart-imperial{
+                dnam{"bretskur quart"}
+                one{"{0} bretskur quart"}
+                other{"{0} bretskir quartar"}
+            }
             tablespoon{
                 dnam{"súpiskeiðir"}
                 one{"{0} súpiskeið"}
@@ -930,6 +1005,7 @@
         }
         concentr{
             percent{
+                dnam{"%"}
                 one{"{0} %"}
                 other{"{0} %"}
             }
@@ -1457,6 +1533,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"punkt"}
+                one{"{0} punkt"}
+                other{"{0} punkt"}
+            }
             megapixel{
                 dnam{"megaskíggjadeplar"}
             }
@@ -1481,12 +1562,22 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            fathom{
+                dnam{"favnar"}
+                one{"{0} favnur"}
+                other{"{0} favnar"}
+            }
             foot{
                 dnam{"føtur"}
                 one{"{0} fótur"}
                 other{"{0} føtur"}
                 per{"{0}/fót"}
             }
+            furlong{
+                dnam{"furlongrar"}
+                one{"{0} furlongur"}
+                other{"{0} furlongrar"}
+            }
             inch{
                 dnam{"tum."}
                 one{"{0} tum."}
@@ -1551,9 +1642,9 @@
                 other{"{0} pm"}
             }
             point{
-                dnam{"pkt"}
-                one{"{0} pkt"}
-                other{"{0} pkt"}
+                dnam{"prikkar"}
+                one{"{0} prikkur"}
+                other{"{0} prikkar"}
             }
             solar-radius{
                 dnam{"sólarradii"}
@@ -1633,6 +1724,11 @@
             solar-mass{
                 dnam{"sólarmassi"}
             }
+            stone{
+                dnam{"stones"}
+                one{"{0} stone"}
+                other{"{0} stones"}
+            }
             ton{
                 dnam{"stutt t"}
                 one{"{0} stutt t"}
@@ -1698,7 +1794,7 @@
                 other{"{0} mmHg"}
             }
             pascal{
-                dnam{"pascal"}
+                dnam{"Pa"}
             }
             pound-force-per-square-inch{
                 dnam{"psi"}
@@ -1761,6 +1857,11 @@
                 one{"{0} tunna"}
                 other{"{0} tunnur"}
             }
+            bushel{
+                dnam{"skeppur"}
+                one{"{0} skeppa"}
+                other{"{0} skeppur"}
+            }
             centiliter{
                 dnam{"cl"}
                 one{"{0} cl"}
@@ -1818,6 +1919,26 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"dessertsk."}
+                one{"{0} dessertsk."}
+                other{"{0} dessertsk."}
+            }
+            dessert-spoon-imperial{
+                dnam{"bretsk dessertsk."}
+                one{"{0} bretsk dessertsk."}
+                other{"{0} bretskar dessertsk."}
+            }
+            dram{
+                dnam{"drammur"}
+                one{"{0} drammur"}
+                other{"{0} drammar"}
+            }
+            drop{
+                dnam{"dropi"}
+                one{"{0} dropi"}
+                other{"{0} dropar"}
+            }
             fluid-ounce{
                 dnam{"flótandi unsur"}
                 one{"{0} flótandi unsa"}
@@ -1845,6 +1966,11 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"snapsur"}
+                one{"{0} snapsur"}
+                other{"{0} snapsar"}
+            }
             liter{
                 dnam{"l"}
                 one{"{0} l"}
@@ -1861,6 +1987,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"vet"}
+                one{"{0} vet"}
+                other{"{0} vet"}
+            }
             pint{
                 dnam{"pints"}
                 one{"{0} pint"}
@@ -1876,6 +2007,11 @@
                 one{"{0} quart"}
                 other{"{0} quarts"}
             }
+            quart-imperial{
+                dnam{"bretskur quart"}
+                one{"{0} bretskur quart"}
+                other{"{0} bretskir quartar"}
+            }
             tablespoon{
                 dnam{"súpisk."}
                 one{"{0} súpisk."}
diff --git a/icu4c/source/data/unit/fr.txt b/icu4c/source/data/unit/fr.txt
index 407f11c..852de85 100644
--- a/icu4c/source/data/unit/fr.txt
+++ b/icu4c/source/data/unit/fr.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -408,6 +408,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"point"}
+                one{"{0} point"}
+                other{"{0} pts"}
+            }
             dot-per-centimeter{
                 dnam{"points par centimètre"}
                 one{"{0} point par centimètre"}
@@ -461,6 +466,11 @@
                 one{"{0} décimètre"}
                 other{"{0} décimètres"}
             }
+            earth-radius{
+                dnam{"rayon terrestre"}
+                one{"{0} rayon terrestre"}
+                other{"{0} rayons terrestres"}
+            }
             fathom{
                 dnam{"brasses"}
                 one{"{0} brasse"}
@@ -542,7 +552,7 @@
             }
             point{
                 dnam{"points"}
-                one{"{0} point"}
+                one{"{0} point typographique"}
                 other{"{0} points"}
             }
             solar-radius{
@@ -557,6 +567,11 @@
             }
         }
         light{
+            lumen{
+                dnam{"lumen"}
+                one{"{0} lumen"}
+                other{"{0} lumens"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
@@ -584,6 +599,10 @@
                 one{"{0} masse terrestre"}
                 other{"{0} masses terrestres"}
             }
+            grain{
+                one{"{0} grain"}
+                other{"{0} grains"}
+            }
             gram{
                 dnam{"grammes"}
                 one{"{0} gramme"}
@@ -795,6 +814,11 @@
                 one{"{0} baril"}
                 other{"{0} barils"}
             }
+            bushel{
+                dnam{"boisseaux"}
+                one{"{0} boisseau"}
+                other{"{0} boisseaux"}
+            }
             centiliter{
                 dnam{"centilitres"}
                 one{"{0} centilitre"}
@@ -852,6 +876,26 @@
                 one{"{0} décilitre"}
                 other{"{0} décilitres"}
             }
+            dessert-spoon{
+                dnam{"cuillère à dessert"}
+                one{"{0} cuillère à dessert"}
+                other{"{0} cuillères à dessert"}
+            }
+            dessert-spoon-imperial{
+                dnam{"cuillère à dessert impériale"}
+                one{"{0} cuillère à dessert impériale"}
+                other{"{0} cuillères à dessert impériales"}
+            }
+            dram{
+                dnam{"drachme"}
+                one{"{0} drachme"}
+                other{"{0} drachmes"}
+            }
+            drop{
+                dnam{"goutte"}
+                one{"{0} goutte"}
+                other{"{0} gouttes"}
+            }
             fluid-ounce{
                 dnam{"onces liquides"}
                 one{"{0} once liquide"}
@@ -879,6 +923,11 @@
                 one{"{0} hectolitre"}
                 other{"{0} hectolitres"}
             }
+            jigger{
+                dnam{"jigger"}
+                one{"{0} jigger"}
+                other{"{0} jiggers"}
+            }
             liter{
                 dnam{"litres"}
                 one{"{0} litre"}
@@ -895,6 +944,11 @@
                 one{"{0} millilitre"}
                 other{"{0} millilitres"}
             }
+            pinch{
+                dnam{"pincée"}
+                one{"{0} pincée"}
+                other{"{0} pincées"}
+            }
             pint{
                 dnam{"pintes"}
                 one{"{0} pinte"}
@@ -910,6 +964,11 @@
                 one{"{0} quart"}
                 other{"{0} quarts"}
             }
+            quart-imperial{
+                dnam{"quart impérial"}
+                one{"{0} quart impérial"}
+                other{"{0} quarts impériaux"}
+            }
             tablespoon{
                 dnam{"cuillères à soupe"}
                 one{"{0} cuillère à soupe"}
@@ -1589,7 +1648,7 @@
             terabit{
                 dnam{"Tbit"}
                 one{"{0} Tbit"}
-                other{"{0} Tb"}
+                other{"{0} Tbit"}
             }
             terabyte{
                 dnam{"To"}
@@ -1767,6 +1826,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"pt"}
+                one{"{0} pt"}
+                other{"{0} pts"}
+            }
             dot-per-centimeter{
                 dnam{"pt/cm"}
                 one{"{0} pt/cm"}
@@ -1822,8 +1886,8 @@
             }
             fathom{
                 dnam{"fm"}
-                one{"{0} fth"}
-                other{"{0} fth"}
+                one{"{0} fm"}
+                other{"{0} fm"}
             }
             foot{
                 dnam{"pi"}
@@ -1900,9 +1964,9 @@
                 other{"{0} pm"}
             }
             point{
-                dnam{"points"}
-                one{"{0} pt"}
-                other{"{0} pt"}
+                dnam{"points typographiques"}
+                one{"{0} pt typog."}
+                other{"{0} pts typog."}
             }
             solar-radius{
                 dnam{"R☉"}
@@ -1942,6 +2006,10 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                one{"{0} grains"}
+                other{"{0} grains"}
+            }
             gram{
                 dnam{"g"}
                 one{"{0} g"}
@@ -2147,6 +2215,11 @@
                 one{"{0} bbl"}
                 other{"{0} bbl"}
             }
+            bushel{
+                dnam{"bu"}
+                one{"{0} bu"}
+                other{"{0} bu"}
+            }
             centiliter{
                 dnam{"cl"}
                 one{"{0} cl"}
@@ -2204,6 +2277,26 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"c. à d."}
+                one{"{0} c. à d."}
+                other{"{0} c. à d."}
+            }
+            dessert-spoon-imperial{
+                dnam{"c. à d. imp."}
+                one{"{0} c. à d. imp."}
+                other{"{0} c. à d. imp."}
+            }
+            dram{
+                dnam{"drachme fluide"}
+                one{"{0} fl dr"}
+                other{"{0} fl dr"}
+            }
+            drop{
+                dnam{"gte"}
+                one{"{0} gte"}
+                other{"{0} gte"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -2231,6 +2324,11 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"jigger"}
+                one{"{0} jigger"}
+                other{"{0} jiggers"}
+            }
             liter{
                 dnam{"l"}
                 one{"{0} l"}
@@ -2247,6 +2345,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"pincée"}
+                one{"{0} pincée"}
+                other{"{0} pincées"}
+            }
             pint{
                 dnam{"pte"}
                 one{"{0} pte"}
@@ -2262,6 +2365,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"qt imp."}
+                one{"{0} qt imp."}
+                other{"{0} qt imp."}
+            }
             tablespoon{
                 dnam{"c. à s."}
                 one{"{0} c. à s."}
diff --git a/icu4c/source/data/unit/fr_CA.txt b/icu4c/source/data/unit/fr_CA.txt
index 037f68a..eb932b4 100644
--- a/icu4c/source/data/unit/fr_CA.txt
+++ b/icu4c/source/data/unit/fr_CA.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_CA{
-    Version{"37"}
     units{
         acceleration{
             g-force{
-                dnam{"force G"}
+                dnam{"force g"}
             }
             meter-per-square-second{
                 one{"{0} mètre par seconde carrée"}
@@ -13,14 +13,6 @@
             }
         }
         angle{
-            arc-minute{
-                one{"{0} minute d’angle"}
-                other{"{0} minutes d’angle"}
-            }
-            arc-second{
-                one{"{0} seconde d’angle"}
-                other{"{0} secondes d’angle"}
-            }
             degree{
                 one{"{0} degré"}
                 other{"{0} degrés"}
@@ -325,6 +317,9 @@
             }
         }
         light{
+            candela{
+                dnam{"candela"}
+            }
             lux{
                 one{"{0} lux"}
                 other{"{0} lux"}
@@ -335,6 +330,9 @@
                 one{"{0} carat"}
                 other{"{0} carats"}
             }
+            grain{
+                dnam{"grain"}
+            }
             gram{
                 one{"{0} gramme"}
                 other{"{0} grammes"}
@@ -485,6 +483,11 @@
                 one{"{0} hectolitre"}
                 other{"{0} hectolitres"}
             }
+            jigger{
+                dnam{"gobelet doseur"}
+                one{"{0} gobelet doseur"}
+                other{"{0} gobelets doseurs"}
+            }
             liter{
                 one{"{0} litre"}
                 other{"{0} litres"}
@@ -503,6 +506,11 @@
                 one{"{0} pinte"}
                 other{"{0} pintes"}
             }
+            quart-imperial{
+                dnam{"pinte impériale"}
+                one{"{0} pinte impériale"}
+                other{"{0} pintes impériales"}
+            }
             teaspoon{
                 dnam{"cuillères à thé"}
                 one{"{0} cuillère à thé"}
@@ -756,6 +764,8 @@
             }
             mile-per-gallon-imperial{
                 dnam{"mi/gal Imp"}
+                one{"{0} mi/gal Imp"}
+                other{"{0} mi/gal Imp"}
             }
         }
         digital{
@@ -915,6 +925,23 @@
                 other{"{0} MHz"}
             }
         }
+        graphics{
+            dot{
+                dnam{"p"}
+                one{"{0} p"}
+                other{"{0} p"}
+            }
+            dot-per-centimeter{
+                dnam{"ppcm"}
+                one{"{0} ppcm"}
+                other{"{0} ppcm"}
+            }
+            dot-per-inch{
+                dnam{"ppp"}
+                one{"{0} ppp"}
+                other{"{0} ppp"}
+            }
+        }
         length{
             astronomical-unit{
                 one{"{0} ua"}
@@ -994,6 +1021,10 @@
                 one{"{0} ct"}
                 other{"{0} ct"}
             }
+            grain{
+                one{"{0} grain"}
+                other{"{0} grains"}
+            }
             gram{
                 one{"{0} g"}
                 other{"{0} g"}
@@ -1158,6 +1189,26 @@
                 one{"{0} dL"}
                 other{"{0} dL"}
             }
+            dessert-spoon{
+                dnam{"cuill. à d."}
+                one{"{0} cuill. à d."}
+                other{"{0} cuill. à d."}
+            }
+            dessert-spoon-imperial{
+                dnam{"cuill. à d. imp."}
+                one{"{0} cuill. à d. imp."}
+                other{"{0} cuill. à d. imp."}
+            }
+            dram{
+                dnam{"dram liquide"}
+                one{"{0} dram liq"}
+                other{"{0} dram liq"}
+            }
+            drop{
+                dnam{"goutte"}
+                one{"{0} goutte"}
+                other{"{0} gouttes"}
+            }
             fluid-ounce{
                 dnam{"oz liq."}
                 one{"{0} oz liq."}
@@ -1179,6 +1230,11 @@
                 one{"{0} hL"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"gobelet doseur"}
+                one{"{0} gobelet doseur"}
+                other{"{0} gobelets doseurs"}
+            }
             liter{
                 dnam{"L"}
                 one{"{0} L"}
@@ -1205,6 +1261,11 @@
                 one{"{0} pte"}
                 other{"{0} pte"}
             }
+            quart-imperial{
+                dnam{"pte Imp"}
+                one{"{0} pte Imp"}
+                other{"{0} pte Imp"}
+            }
             teaspoon{
                 dnam{"c. à t."}
                 one{"{0} c. à t."}
diff --git a/icu4c/source/data/unit/fr_HT.txt b/icu4c/source/data/unit/fr_HT.txt
index a41fd50..52988f0 100644
--- a/icu4c/source/data/unit/fr_HT.txt
+++ b/icu4c/source/data/unit/fr_HT.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_HT{
-    Version{"37"}
     units{
         area{
             hectare{
diff --git a/icu4c/source/data/unit/fur.txt b/icu4c/source/data/unit/fur.txt
index 1bf7382..66a5f2a 100644
--- a/icu4c/source/data/unit/fur.txt
+++ b/icu4c/source/data/unit/fur.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fur{
-    Version{"37"}
     units{
         duration{
             day{
diff --git a/icu4c/source/data/unit/fy.txt b/icu4c/source/data/unit/fy.txt
index b558cfd..7dfa402 100644
--- a/icu4c/source/data/unit/fy.txt
+++ b/icu4c/source/data/unit/fy.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fy{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/ga.txt b/icu4c/source/data/unit/ga.txt
index 7e3cf3f..5ca10df 100644
--- a/icu4c/source/data/unit/ga.txt
+++ b/icu4c/source/data/unit/ga.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ga{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -78,7 +78,7 @@
                 two{"{0} acra"}
             }
             dunam{
-                dnam{"dunaim"}
+                dnam{"dúnaim"}
                 few{"{0} dhunam"}
                 many{"{0} ndunam"}
                 one{"{0} dunam"}
@@ -160,8 +160,8 @@
         }
         concentr{
             karat{
-                dnam{"carait óir"}
-                few{"{0} charat óir"}
+                dnam{"carait"}
+                few{"{0} charat"}
                 many{"{0} gcarat óir"}
                 one{"{0} charat óir"}
                 other{"{0} carat óir"}
@@ -209,17 +209,17 @@
             }
             permillion{
                 dnam{"codanna sa mhilliún"}
-                few{"{0} sa mhilliún"}
-                many{"{0} sa mhilliún"}
-                one{"{0} sa mhilliún"}
-                other{"{0} sa mhilliún"}
-                two{"{0} sa mhilliún"}
+                few{"{0} chuid sa mhilliún"}
+                many{"{0} gcuid sa mhilliún"}
+                one{"{0} chuid sa mhilliún"}
+                other{"{0} cuid sa mhilliún"}
+                two{"{0} chuid sa mhilliún"}
             }
             permyriad{
-                dnam{"permeiriad"}
+                dnam{"faoin deich míle"}
                 few{"{0}‱"}
                 many{"{0}‱"}
-                one{"{0} permeiriad"}
+                one{"{0} faoin deich míle"}
                 other{"{0}‱"}
                 two{"{0}‱"}
             }
@@ -331,7 +331,7 @@
                 two{"{0} mheigibheart"}
             }
             petabyte{
-                dnam{"peitibheart"}
+                dnam{"peitibhearta"}
                 few{"{0} PB"}
                 many{"{0} PB"}
                 one{"{0} peitibheart"}
@@ -496,10 +496,10 @@
         }
         energy{
             british-thermal-unit{
-                dnam{"aonad teirmeach Briotanach"}
+                dnam{"teas-aonaid Bhriotanacha"}
                 few{"{0} Btu"}
                 many{"{0} Btu"}
-                one{"{0} aonad teirmeach Briontanach"}
+                one{"{0} theas-aonad Briotanach"}
                 other{"{0} aonad teirmeach Briotanach"}
                 two{"{0} Btu"}
             }
@@ -512,11 +512,11 @@
                 two{"{0} chalra"}
             }
             electronvolt{
-                dnam{"leictravoltaí"}
+                dnam{"leictreonvoltanna"}
                 few{"{0} eV"}
                 many{"{0} eV"}
                 one{"{0} leictreavolta"}
-                other{"{0} leictreavoltaí"}
+                other{"{0} leictreonvolta"}
                 two{"{0} eV"}
             }
             foodcalorie{
@@ -560,12 +560,12 @@
                 two{"{0} chileavatuair"}
             }
             therm-us{
-                dnam{"teirmeacha US"}
-                few{"{0} theirm US"}
-                many{"{0} dteirm US"}
-                one{"{0} teirm US"}
-                other{"{0} teirm US"}
-                two{"{0} theirm US"}
+                dnam{"teirmeacha SAM"}
+                few{"{0} theirm SAM"}
+                many{"{0} dteirm SAM"}
+                one{"{0} teirm SAM"}
+                other{"{0} teirm SAM"}
+                two{"{0} theirm SAM"}
             }
         }
         force{
@@ -621,56 +621,69 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ponc"}
+                few{"{0} phonc"}
+                many{"{0} bponc"}
+                one{"{0} phonc"}
+                other{"{0} ponc"}
+                two{"{0} phonc"}
+            }
             dot-per-centimeter{
                 dnam{"poncanna sa cheintiméadar"}
-                few{"{0} dpcm"}
-                many{"{0} dpcm"}
-                one{"{0} ponc sa cheintiméadar"}
-                other{"{0} poncanna sa cheintiméadar"}
-                two{"{0} dpcm"}
+                few{"{0} phonc sa cheintiméadar"}
+                many{"{0} bponc sa cheintiméadar"}
+                one{"{0} phonc sa cheintiméadar"}
+                other{"{0} ponc sa cheintiméadar"}
+                two{"{0} phonc sa cheintiméadar"}
             }
             dot-per-inch{
                 dnam{"poncanna san orlach"}
-                few{"{0} dpi"}
-                many{"{0} dpi"}
-                one{"{0} ponc san orlach"}
-                other{"{0} poncanna san orlach"}
-                two{"{0} dpi"}
+                few{"{0} phonc san orlach"}
+                many{"{0} bponc san orlach"}
+                one{"{0} phonc san orlach"}
+                other{"{0} ponc san orlach"}
+                two{"{0} phonc san orlach"}
             }
             em{
-                dnam{"eim chlógrafach"}
+                dnam{"eim chlóghrafach"}
+                few{"{0} eim"}
+                many{"{0} n-eim"}
+                one{"{0} eim"}
+                other{"{0} eim"}
+                two{"{0} eim"}
             }
             megapixel{
                 dnam{"meigiphicteilíní"}
-                few{"{0} MP"}
-                many{"{0} MP"}
-                one{"{0} meigiphicteilín"}
+                few{"{0} mheigiphicteilín"}
+                many{"{0} meigiphicteilín"}
+                one{"{0} mheigiphicteilín"}
                 other{"{0} meigiphicteilín"}
-                two{"{0} MP"}
+                two{"{0} mheigiphicteilín"}
             }
             pixel{
                 dnam{"picteilíní"}
-                few{"{0} px"}
-                many{"{0} px"}
-                one{"{0} picteilín"}
+                few{"{0} phicteilín"}
+                many{"{0} bpicteilín"}
+                one{"{0} phicteilín"}
                 other{"{0} picteilín"}
-                two{"{0} px"}
+                two{"{0} phicteilín"}
             }
             pixel-per-centimeter{
                 dnam{"picteilíní sa cheintiméadar"}
-                few{"{0} ppcm"}
-                many{"{0} ppcm"}
-                one{"{0} picteilín sa cheintiméadar"}
-                other{"{0} picteilíní sa cheintiméadar"}
-                two{"{0} ppcm"}
+                few{"{0} phicteilín sa cheintiméadar"}
+                many{"{0} bpicteilín sa cheintiméadar"}
+                one{"{0} phicteilín sa cheintiméadar"}
+                other{"{0} picteilín sa cheintiméadar"}
+                two{"{0} phicteilín sa cheintiméadar"}
             }
             pixel-per-inch{
                 dnam{"picteilíní san orlach"}
-                few{"{0} ppi"}
-                many{"{0} ppi"}
-                one{"{0} picteilín san orlach"}
+                few{"{0} phicteilín san orlach"}
+                many{"{0} bpicteilín san orlach"}
+                one{"{0} phicteilín san orlach"}
                 other{"{0} picteilín san orlach"}
-                two{"{0} ppi"}
+                two{"{0} phicteilín san orlach"}
             }
         }
         length{
@@ -699,6 +712,14 @@
                 other{"{0} deiciméadar"}
                 two{"{0} dheiciméadar"}
             }
+            earth-radius{
+                dnam{"ga an domhain"}
+                few{"{0} gha an domhain"}
+                many{"{0} nga an domhain"}
+                one{"{0} gha an domhain"}
+                other{"{0} ga an domhain"}
+                two{"{0} gha an domhain"}
+            }
             fathom{
                 dnam{"feánna"}
                 few{"{0} fheá"}
@@ -832,12 +853,12 @@
                 two{"{0} phointe"}
             }
             solar-radius{
-                dnam{"raonta gréine"}
-                few{"{0} R☉"}
-                many{"{0} R☉"}
-                one{"{0} raon gréine"}
-                other{"{0} raon gréine"}
-                two{"{0} R☉"}
+                dnam{"grianghathanna"}
+                few{"{0} ghriangha"}
+                many{"{0} ngriangha"}
+                one{"{0} ghriangha"}
+                other{"{0} griangha"}
+                two{"{0} ghriangha"}
             }
             yard{
                 dnam{"slata"}
@@ -849,6 +870,22 @@
             }
         }
         light{
+            candela{
+                dnam{"caindéile"}
+                few{"{0} chaindéile"}
+                many{"{0} gcaindéile"}
+                one{"{0} chaindéile"}
+                other{"{0} caindéile"}
+                two{"{0} chaindéile"}
+            }
+            lumen{
+                dnam{"lúman"}
+                few{"{0} lúman"}
+                many{"{0} lúman"}
+                one{"{0} lúman"}
+                other{"{0} lúman"}
+                two{"{0} lúman"}
+            }
             lux{
                 dnam{"lucsa"}
                 few{"{0} lucsa"}
@@ -858,12 +895,12 @@
                 two{"{0} lucsa"}
             }
             solar-luminosity{
-                dnam{"lonrachtaí gréine"}
+                dnam{"grianlonrachas"}
                 few{"{0} L☉"}
                 many{"{0} L☉"}
-                one{"{0} lonracht ghréine"}
-                other{"{0} lonracht ghréine"}
-                two{"{0} L☉"}
+                one{"{0} ghrianlonrachas"}
+                other{"{0} grianlonrachas"}
+                two{"{0} ghrianlonrachas"}
             }
         }
         mass{
@@ -891,6 +928,14 @@
                 other{"{0} mais an Domhain"}
                 two{"{0} mhais an Domhain"}
             }
+            grain{
+                dnam{"gráinne"}
+                few{"{0} ghráinne"}
+                many{"{0} ngráinne"}
+                one{"{0} ghráinne"}
+                other{"{0} gráinne"}
+                two{"{0} ghráinne"}
+            }
             gram{
                 dnam{"graim"}
                 few{"{0} ghram"}
@@ -963,7 +1008,7 @@
                 dnam{"maiseanna gréine"}
                 few{"{0} mhais ghréine"}
                 many{"{0} mais ghréine"}
-                one{"{0} mais ghréine"}
+                one{"{0} mhais ghréine"}
                 other{"{0} mais ghréine"}
                 two{"{0} mhais ghréine"}
             }
@@ -1036,15 +1081,15 @@
         }
         pressure{
             atmosphere{
-                dnam{"atmaisféar"}
-                few{"{0} atm"}
-                many{"{0} atm"}
+                dnam{"atmaisféir"}
+                few{"{0} atmaisféar"}
+                many{"{0} n-atmaisféar"}
                 one{"{0} atmaisféar"}
                 other{"{0} atmaisféar"}
-                two{"{0} atm"}
+                two{"{0} atmaisféar"}
             }
             bar{
-                dnam{"barraí"}
+                dnam{"bair"}
                 few{"{0} bharra"}
                 many{"{0} mbarra"}
                 one{"{0} bharra"}
@@ -1071,7 +1116,7 @@
                 dnam{"cileapascail"}
                 few{"{0} kPa"}
                 many{"{0} kPa"}
-                one{"{0} cileapascal"}
+                one{"{0} chileapascal"}
                 other{"{0} kPa"}
                 two{"{0} kPa"}
             }
@@ -1079,7 +1124,7 @@
                 dnam{"meigeapascail"}
                 few{"{0} MPa"}
                 many{"{0} MPa"}
-                one{"meigeapascal"}
+                one{"{0} mheigeapascal"}
                 other{"{0} meigeapascal"}
                 two{"{0} MPa"}
             }
@@ -1092,13 +1137,21 @@
                 two{"{0} mhilleabar"}
             }
             millimeter-ofhg{
-                dnam{"milliméadair mhearcair"}
+                dnam{"milliméadair mearcair"}
                 few{"{0} mhilliméadar mearcair"}
                 many{"{0} milliméadar mearcair"}
                 one{"{0} mhilliméadar mearcair"}
                 other{"{0} milliméadar mearcair"}
                 two{"{0} mhilliméadar mearcair"}
             }
+            pascal{
+                dnam{"Pascail"}
+                few{"{0} phascal"}
+                many{"{0} bpascal"}
+                one{"{0} phascal"}
+                other{"{0} pascal"}
+                two{"{0} phascal"}
+            }
             pound-force-per-square-inch{
                 dnam{"puint san orlach cearnach"}
                 few{"{0} phunt san orlach cearnach"}
@@ -1181,9 +1234,9 @@
                 dnam{"méadar niútain"}
                 few{"{0} N⋅m"}
                 many{"{0} N⋅m"}
-                one{"{0} méadar niútain"}
+                one{"{0} mhéadar niútain"}
                 other{"{0} méadar niútain"}
-                two{"{0} N⋅m"}
+                two{"{0} mhéadar niútain"}
             }
             pound-force-foot{
                 dnam{"punt-troigh"}
@@ -1309,6 +1362,38 @@
                 other{"{0} deicilítear"}
                 two{"{0} dheicilítear"}
             }
+            dessert-spoon{
+                dnam{"spúnóga milseoige"}
+                few{"{0} spúnóg mhilseoige"}
+                many{"{0} spúnóg mhilseoige"}
+                one{"{0} spúnóg mhilseoige"}
+                other{"{0} spúnóg mhilseoige"}
+                two{"{0} spúnóg mhilseoige"}
+            }
+            dessert-spoon-imperial{
+                dnam{"spúnóga milseoige impiriúla"}
+                few{"{0} spúnóg mhilseoige impiriúla"}
+                many{"{0} spúnóg mhilseoige impiriúla"}
+                one{"{0} spúnóg mhilseoige impiriúil"}
+                other{"{0} spúnóg mhilseoige impiriúol"}
+                two{"{0} spúnóg mhilseoige impiriúla"}
+            }
+            dram{
+                dnam{"dram leachtach"}
+                few{"{0} dhram leachtacha"}
+                many{"{0} ndram leachtacha"}
+                one{"{0} dram leachtach"}
+                other{"{0} dram leachtach"}
+                two{"{0} dhram leachtacha"}
+            }
+            drop{
+                dnam{"braon"}
+                few{"{0} bhraon"}
+                many{"{0} mbraon"}
+                one{"{0} bhraon"}
+                other{"{0} braon"}
+                two{"{0} bhraon"}
+            }
             fluid-ounce{
                 dnam{"unsaí leachtacha"}
                 few{"{0} unsa leachtacha"}
@@ -1323,7 +1408,7 @@
                 many{"{0} fl oz Imp."}
                 one{"{0} unsa leachtach impiriúil"}
                 other{"{0} fl oz Imp."}
-                two{"{0} unsa leachtach impiriúil"}
+                two{"{0} unsa leachtacha impiriúla"}
             }
             gallon{
                 dnam{"galúin"}
@@ -1351,6 +1436,14 @@
                 other{"{0} heictilítear"}
                 two{"{0} heictilítear"}
             }
+            jigger{
+                dnam{"miosúr"}
+                few{"{0} mhiosúr"}
+                many{"{0} miosúr"}
+                one{"{0} mhiosúr"}
+                other{"{0} miosúr"}
+                two{"{0} mhiosúr"}
+            }
             liter{
                 dnam{"lítir"}
                 few{"{0} lítear"}
@@ -1376,6 +1469,14 @@
                 other{"{0} millilítear"}
                 two{"{0} mhillilítear"}
             }
+            pinch{
+                dnam{"pinse"}
+                few{"{0} phinse"}
+                many{"{0} bpinse"}
+                one{"{0} phinse"}
+                other{"{0} pinse"}
+                two{"{0} phinse"}
+            }
             pint{
                 dnam{"piontaí"}
                 few{"{0} phionta"}
@@ -1400,6 +1501,14 @@
                 other{"{0} cárt"}
                 two{"{0} chárt"}
             }
+            quart-imperial{
+                dnam{"cárt impiriúil"}
+                few{"{0} chárt impiriúla"}
+                many{"{0} gcárt impiriúla"}
+                one{"{0} chárt impiriúil"}
+                other{"{0} cárt impiriúil"}
+                two{"{0} chárt impiriúla"}
+            }
             tablespoon{
                 dnam{"spúnóga boird"}
                 few{"{0} spúnóg bhoird"}
@@ -3125,12 +3234,12 @@
                 two{"{0} kWh"}
             }
             therm-us{
-                dnam{"teirmeacha US"}
-                few{"{0} theirm US"}
-                many{"{0} dteirm US"}
-                one{"{0} teirm US"}
-                other{"{0} teirm US"}
-                two{"{0} theirm US"}
+                dnam{"teirmeacha SAM"}
+                few{"{0} theirm SAM"}
+                many{"{0} dteirm SAM"}
+                one{"{0} teirm SAM"}
+                other{"{0} teirm SAM"}
+                two{"{0} theirm SAM"}
             }
         }
         force{
@@ -3186,6 +3295,22 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ponc"}
+                few{"{0} phonc"}
+                many{"{0} bponc"}
+                one{"{0} phonc"}
+                other{"{0} ponc"}
+                two{"{0} phonc"}
+            }
+            em{
+                dnam{"eim"}
+                few{"{0} eim"}
+                many{"{0} n-eim"}
+                one{"{0} eim"}
+                other{"{0} eim"}
+                two{"{0} eim"}
+            }
             megapixel{
                 dnam{"meigiphicteilíní"}
             }
@@ -3411,6 +3536,14 @@
                 other{"{0} M⊕"}
                 two{"{0} M⊕"}
             }
+            grain{
+                dnam{"gráinne"}
+                few{"{0} ghráinne"}
+                many{"{0} ngráinne"}
+                one{"{0} ghráinne"}
+                other{"{0} gráinne"}
+                two{"{0} ghráinne"}
+            }
             gram{
                 dnam{"graim"}
                 few{"{0} g"}
@@ -3829,6 +3962,38 @@
                 other{"{0} dl"}
                 two{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"spmhil"}
+                few{"{0} spmhil"}
+                many{"{0} spmhil"}
+                one{"{0} spmhil"}
+                other{"{0} spmhil"}
+                two{"{0} spmhil"}
+            }
+            dessert-spoon-imperial{
+                dnam{"spmhil imp"}
+                few{"{0} spmhil imp"}
+                many{"{0} spmhil imp"}
+                one{"{0} spmhil imp"}
+                other{"{0} spmhil imp"}
+                two{"{0} spmhil imp"}
+            }
+            dram{
+                dnam{"dr l."}
+                few{"{0} dr l."}
+                many{"{0} dr l."}
+                one{"{0} dr l."}
+                other{"{0} dr l."}
+                two{"{0} dr l."}
+            }
+            drop{
+                dnam{"braon"}
+                few{"{0} bhraon"}
+                many{"{0} mbraon"}
+                one{"{0} bhraon"}
+                other{"{0} braon"}
+                two{"{0} bhraon"}
+            }
             fluid-ounce{
                 dnam{"unsaí leacht."}
                 few{"{0} unsa l."}
@@ -3871,6 +4036,14 @@
                 other{"{0} hl"}
                 two{"{0} hl"}
             }
+            jigger{
+                dnam{"miosúr"}
+                few{"{0} mhiosúr"}
+                many{"{0} miosúr"}
+                one{"{0} mhiosúr"}
+                other{"{0} miosúr"}
+                two{"{0} mhiosúr"}
+            }
             liter{
                 dnam{"lítir"}
                 few{"{0} l"}
@@ -3896,6 +4069,14 @@
                 other{"{0} ml"}
                 two{"{0} ml"}
             }
+            pinch{
+                dnam{"pinse"}
+                few{"{0} phinse"}
+                many{"{0} bpinse"}
+                one{"{0} phinse"}
+                other{"{0} pinse"}
+                two{"{0} phinse"}
+            }
             pint{
                 dnam{"piontaí"}
                 few{"{0} pt"}
@@ -3920,6 +4101,14 @@
                 other{"{0} cárt"}
                 two{"{0} chárt"}
             }
+            quart-imperial{
+                dnam{"cárt impiriúil"}
+                few{"{0} chárt impiriúla"}
+                many{"{0} gcárt impiriúla"}
+                one{"{0} chárt impiriúil"}
+                other{"{0} cárt impiriúil"}
+                two{"{0} chárt impiriúla"}
+            }
             tablespoon{
                 dnam{"spbh"}
                 few{"{0} spbh"}
diff --git a/icu4c/source/data/unit/gd.txt b/icu4c/source/data/unit/gd.txt
index 3acde98..61698d7 100644
--- a/icu4c/source/data/unit/gd.txt
+++ b/icu4c/source/data/unit/gd.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gd{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -550,6 +550,13 @@
             }
         }
         graphics{
+            dot{
+                dnam{"dotag"}
+                few{"{0} dotagan"}
+                one{"{0} dotag"}
+                other{"{0} dotag"}
+                two{"{0} dhotag"}
+            }
             dot-per-centimeter{
                 dnam{"dotag sa cheudameatair"}
                 few{"{0} dotagan sa cheudameatair"}
@@ -619,6 +626,13 @@
                 other{"{0} deicheamh-meatair"}
                 two{"{0} dheicheamh-meatair"}
             }
+            earth-radius{
+                dnam{"rèideas-talmhainn"}
+                few{"{0} rèideasan-talmhainn"}
+                one{"{0} rèideas-talmhainn"}
+                other{"{0} rèideas-talmhainn"}
+                two{"{0} rèideas-talmhainn"}
+            }
             fathom{
                 dnam{"aitheamh"}
                 few{"{0} aitheamhan"}
@@ -751,6 +765,20 @@
             }
         }
         light{
+            candela{
+                dnam{"candela"}
+                few{"{0} candela"}
+                one{"{0} chandela"}
+                other{"{0} candela"}
+                two{"{0} chandela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                few{"{0} lumen"}
+                one{"{0} lumen"}
+                other{"{0} lumen"}
+                two{"{0} lumen"}
+            }
             lux{
                 dnam{"lux"}
                 few{"{0} lux"}
@@ -788,6 +816,13 @@
                 other{"{0} tomad-talmhainn"}
                 two{"{0} thomad-talmhainn"}
             }
+            grain{
+                dnam{"gràinne"}
+                few{"{0} gràinnean"}
+                one{"{0} ghràinne"}
+                other{"{0} gràinne"}
+                two{"{0} gràinne"}
+            }
             gram{
                 dnam{"gram"}
                 few{"{0} gramaichean"}
@@ -1163,6 +1198,34 @@
                 other{"{0} deicheamh-liotair"}
                 two{"{0} dheicheamh-liotair"}
             }
+            dessert-spoon{
+                dnam{"spàin-mhìlsein"}
+                few{"{0} spàinean-mìlsein"}
+                one{"{0} spàin-mhìlsein"}
+                other{"{0} spàin-mhìlsein"}
+                two{"{0} spàin-mhìlsein"}
+            }
+            dessert-spoon-imperial{
+                dnam{"spàin-mhìlsein ìmpireil"}
+                few{"{0} spàinean-mìlsein ìmpireil"}
+                one{"{0} spàin-mhìlsein ìmpireil"}
+                other{"{0} spàin-mhìlsein ìmpireil"}
+                two{"{0} spàin-mhìlsein ìmpireil"}
+            }
+            dram{
+                dnam{"drama"}
+                few{"{0} dramaichean"}
+                one{"{0} drama"}
+                other{"{0} drama"}
+                two{"{0} dhrama"}
+            }
+            drop{
+                dnam{"boinne"}
+                few{"{0} boinnean"}
+                one{"{0} bhoinne"}
+                other{"{0} boinne"}
+                two{"{0} bhoinne"}
+            }
             fluid-ounce{
                 dnam{"unnsa-dighe"}
                 few{"{0} unnsachan-dighe"}
@@ -1200,6 +1263,13 @@
                 other{"{0} heacta-liotair"}
                 two{"{0} heacta-liotair"}
             }
+            jigger{
+                dnam{"sigire"}
+                few{"{0} sigirean"}
+                one{"{0} sigire"}
+                other{"{0} sigire"}
+                two{"{0} sigire"}
+            }
             liter{
                 dnam{"liotair"}
                 few{"{0} liotairean"}
@@ -1222,6 +1292,13 @@
                 other{"{0} mililiotair"}
                 two{"{0} mhililiotair"}
             }
+            pinch{
+                dnam{"crudhagan"}
+                few{"{0} crudhagain"}
+                one{"{0} chrudhagan"}
+                other{"{0} crudhagan"}
+                two{"{0} chrudhagan"}
+            }
             pint{
                 dnam{"pinnt"}
                 few{"{0} pinntean"}
@@ -1243,6 +1320,13 @@
                 other{"{0} càrt"}
                 two{"{0} chàrt"}
             }
+            quart-imperial{
+                dnam{"càrt ìmpireil"}
+                few{"{0} càrtan ìmpireil"}
+                one{"{0} chàrt ìmpireil"}
+                other{"{0} càrt ìmpireil"}
+                two{"{0} chàrt ìmpireil"}
+            }
             tablespoon{
                 dnam{"spàin-bhùird"}
                 few{"{0} spàinean-bùird"}
@@ -1796,6 +1880,13 @@
             }
         }
         graphics{
+            dot{
+                dnam{"dot"}
+                few{"{0}dot"}
+                one{"{0}dot"}
+                other{"{0}dot"}
+                two{"{0}dhot"}
+            }
             dot-per-centimeter{
                 few{"{0}dpcm"}
                 one{"{0}dpcm"}
@@ -1863,6 +1954,12 @@
                 other{"{0}dm"}
                 two{"{0}dm"}
             }
+            earth-radius{
+                few{"{0}R⊕"}
+                one{"{0}R⊕"}
+                other{"{0}R⊕"}
+                two{"{0}R⊕"}
+            }
             fathom{
                 dnam{"aitheamh"}
                 few{"{0}aith"}
@@ -1994,6 +2091,18 @@
             }
         }
         light{
+            candela{
+                few{"{0}cd"}
+                one{"{0}cd"}
+                other{"{0}cd"}
+                two{"{0}cd"}
+            }
+            lumen{
+                few{"{0}lm"}
+                one{"{0}lm"}
+                other{"{0}lm"}
+                two{"{0}lm"}
+            }
             lux{
                 dnam{"lux"}
                 few{"{0}lx"}
@@ -2029,6 +2138,13 @@
                 other{"{0}M⊕"}
                 two{"{0}M⊕"}
             }
+            grain{
+                dnam{"gràinne"}
+                few{"{0}gr"}
+                one{"{0}ghr"}
+                other{"{0}gr"}
+                two{"{0}ghr"}
+            }
             gram{
                 dnam{"gram"}
                 few{"{0}g"}
@@ -2398,6 +2514,34 @@
                 other{"{0}dL"}
                 two{"{0}dL"}
             }
+            dessert-spoon{
+                dnam{"sp-mhìl"}
+                few{"{0}sp-mìl"}
+                one{"{0}sp-mhìl"}
+                other{"{0}sp-mhìl"}
+                two{"{0}sp-mhìl"}
+            }
+            dessert-spoon-imperial{
+                dnam{"sp-mhìl ìmp."}
+                few{"{0}sp-mìl ì."}
+                one{"{0}sp-mìl ì."}
+                other{"{0}sp-mìl ì."}
+                two{"{0}sp-mìl ì."}
+            }
+            dram{
+                dnam{"drama"}
+                few{"{0}drama"}
+                one{"{0}drama"}
+                other{"{0}drama"}
+                two{"{0}dhrama"}
+            }
+            drop{
+                dnam{"boinne"}
+                few{"{0}boinne"}
+                one{"{0}bhoinne"}
+                other{"{0}boinne"}
+                two{"{0}bhoinne"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 few{"{0}fl oz"}
@@ -2435,6 +2579,13 @@
                 other{"{0}hL"}
                 two{"{0}hL"}
             }
+            jigger{
+                dnam{"sigire"}
+                few{"{0}sigire"}
+                one{"{0}sigire"}
+                other{"{0}sigire"}
+                two{"{0}sigire"}
+            }
             liter{
                 dnam{"liotair"}
                 few{"{0}l"}
@@ -2457,6 +2608,13 @@
                 other{"{0}mL"}
                 two{"{0}mL"}
             }
+            pinch{
+                dnam{"crudhag"}
+                few{"{0}crud."}
+                one{"{0}chrud."}
+                other{"{0}crud."}
+                two{"{0}chrud."}
+            }
             pint{
                 dnam{"pt"}
                 few{"{0}pt"}
@@ -2478,6 +2636,13 @@
                 other{"{0}càrt"}
                 two{"{0}càrt"}
             }
+            quart-imperial{
+                dnam{"càrt ìmp."}
+                few{"{0}càrt ì."}
+                one{"{0}chàrt ì."}
+                other{"{0}càrt ì."}
+                two{"{0}chàrt ì."}
+            }
             tablespoon{
                 dnam{"sp"}
                 few{"{0}sp"}
@@ -3013,6 +3178,13 @@
             }
         }
         graphics{
+            dot{
+                dnam{"dotag"}
+                few{"{0} dot"}
+                one{"{0} dot"}
+                other{"{0} dot"}
+                two{"{0} dot"}
+            }
             megapixel{
                 dnam{"meaga-piogsail"}
             }
@@ -3168,6 +3340,12 @@
             }
         }
         light{
+            candela{
+                dnam{"candela"}
+            }
+            lumen{
+                dnam{"lumen"}
+            }
             lux{
                 dnam{"lux"}
                 few{"{0} lx"}
@@ -3197,6 +3375,13 @@
             earth-mass{
                 dnam{"tomad-talmhainn"}
             }
+            grain{
+                dnam{"gràinne"}
+                few{"{0} gràinne"}
+                one{"{0} ghràinne"}
+                other{"{0} gràinne"}
+                two{"{0} ghràinne"}
+            }
             gram{
                 dnam{"gram"}
                 few{"{0} g"}
@@ -3542,6 +3727,34 @@
                 other{"{0} dL"}
                 two{"{0} dL"}
             }
+            dessert-spoon{
+                dnam{"spàin-mhìl"}
+                few{"{0} spàin-mìl"}
+                one{"{0} spàin-mhìl"}
+                other{"{0} spàin-mhìl"}
+                two{"{0} spàin-mhìl"}
+            }
+            dessert-spoon-imperial{
+                dnam{"spàin-mhìl ìmp."}
+                few{"{0} spàin-mìl ìmp."}
+                one{"{0} spàin-mhìl ìmp."}
+                other{"{0} spàin-mhìl ìmp."}
+                two{"{0} spàin-mhìl ìmp."}
+            }
+            dram{
+                dnam{"drama"}
+                few{"{0} drama"}
+                one{"{0} drama"}
+                other{"{0} drama"}
+                two{"{0} dhrama"}
+            }
+            drop{
+                dnam{"boinne"}
+                few{"{0} boinne"}
+                one{"{0} bhoinne"}
+                other{"{0} boinne"}
+                two{"{0} bhoinne"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 few{"{0} fl oz"}
@@ -3579,6 +3792,13 @@
                 other{"{0} hL"}
                 two{"{0} hL"}
             }
+            jigger{
+                dnam{"sigire"}
+                few{"{0} sigire"}
+                one{"{0} sigire"}
+                other{"{0} sigire"}
+                two{"{0} sigire"}
+            }
             liter{
                 dnam{"liotair"}
                 few{"{0} l"}
@@ -3601,6 +3821,13 @@
                 other{"{0} mL"}
                 two{"{0} mL"}
             }
+            pinch{
+                dnam{"crudhagan"}
+                few{"{0} crudhag"}
+                one{"{0} chrudhag"}
+                other{"{0} crudhag"}
+                two{"{0} chrudhag"}
+            }
             pint{
                 dnam{"pinnt"}
                 few{"{0} pt"}
@@ -3622,6 +3849,13 @@
                 other{"{0} càrt"}
                 two{"{0} chàrt"}
             }
+            quart-imperial{
+                dnam{"càrt ìmp."}
+                few{"{0} càrt ìmp."}
+                one{"{0} chàrt ìmp."}
+                other{"{0} càrt ìmp."}
+                two{"{0} chàrt ìmp."}
+            }
             tablespoon{
                 dnam{"spàin"}
                 few{"{0} spàin"}
diff --git a/icu4c/source/data/unit/gl.txt b/icu4c/source/data/unit/gl.txt
index e57de6a..3b54293 100644
--- a/icu4c/source/data/unit/gl.txt
+++ b/icu4c/source/data/unit/gl.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gl{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -408,6 +408,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"puntos tipográficos"}
+                one{"{0} punto tipográfico"}
+                other{"{0} puntos tipográficos"}
+            }
             dot-per-centimeter{
                 dnam{"puntos por centímetro"}
                 one{"{0} punto por centímetro"}
@@ -461,12 +466,27 @@
                 one{"{0} decímetro"}
                 other{"{0} decímetros"}
             }
+            earth-radius{
+                dnam{"raio terrestre"}
+                one{"{0} raio terrestre"}
+                other{"{0} raios terrestres"}
+            }
+            fathom{
+                dnam{"brazas inglesas"}
+                one{"{0} braza inglesa"}
+                other{"{0} brazas inglesas"}
+            }
             foot{
                 dnam{"pés"}
                 one{"{0} pé"}
                 other{"{0} pés"}
                 per{"{0} por pé"}
             }
+            furlong{
+                dnam{"furlongs"}
+                one{"{0} furlong"}
+                other{"{0} furlongs"}
+            }
             inch{
                 dnam{"polgadas"}
                 one{"{0} polgada"}
@@ -547,6 +567,16 @@
             }
         }
         light{
+            candela{
+                dnam{"candela"}
+                one{"{0} candela"}
+                other{"{0} candelas"}
+            }
+            lumen{
+                dnam{"lumen"}
+                one{"{0} lumen"}
+                other{"{0} lumens"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
@@ -574,6 +604,11 @@
                 one{"{0} masa da Terra"}
                 other{"{0} masas da Terra"}
             }
+            grain{
+                dnam{"gran"}
+                one{"{0} gran"}
+                other{"{0} grans"}
+            }
             gram{
                 dnam{"gramos"}
                 one{"{0} gramo"}
@@ -623,6 +658,11 @@
                 one{"{0} masa solar"}
                 other{"{0} masas solares"}
             }
+            stone{
+                dnam{"stones"}
+                one{"{0} stone"}
+                other{"{0} stones"}
+            }
             ton{
                 dnam{"toneladas estadounidenses"}
                 one{"{0} tonelada estadounidense"}
@@ -760,7 +800,7 @@
         torque{
             newton-meter{
                 dnam{"newtons metro"}
-                one{"newton metro"}
+                one{"{0} newton metro"}
                 other{"{0} newtons metro"}
             }
             pound-force-foot{
@@ -780,6 +820,11 @@
                 one{"{0} barril"}
                 other{"{0} barrís"}
             }
+            bushel{
+                dnam{"bushels"}
+                one{"{0} bushel"}
+                other{"{0} bushels"}
+            }
             centiliter{
                 dnam{"centilitros"}
                 one{"{0} centilitro"}
@@ -837,6 +882,26 @@
                 one{"{0} decilitro"}
                 other{"{0} decilitros"}
             }
+            dessert-spoon{
+                dnam{"cullerada de sobremesa"}
+                one{"{0} cullerada de sobremesa"}
+                other{"{0} culleradas de sobremesa"}
+            }
+            dessert-spoon-imperial{
+                dnam{"cullerada de sobremesa imperial"}
+                one{"{0} cullerada de sobremesa imperial"}
+                other{"{0} culleradas de sobremesa imperiais"}
+            }
+            dram{
+                dnam{"dracma líquida"}
+                one{"{0} dracma líquida"}
+                other{"{0} dracmas líquidas"}
+            }
+            drop{
+                dnam{"gota"}
+                one{"{0} gota"}
+                other{"{0} gotas"}
+            }
             fluid-ounce{
                 dnam{"onzas líquidas"}
                 one{"{0} onza líquida"}
@@ -844,7 +909,7 @@
             }
             fluid-ounce-imperial{
                 dnam{"onzas líquidas imperiais"}
-                one{"onza líquida imperial"}
+                one{"{0} onza líquida imperial"}
                 other{"{0} onzas líquidas imperiais"}
             }
             gallon{
@@ -864,6 +929,11 @@
                 one{"{0} hectolitro"}
                 other{"{0} hectolitros"}
             }
+            jigger{
+                dnam{"medidor de cóctel"}
+                one{"{0} medidor de cóctel"}
+                other{"{0} medidores de cóctel"}
+            }
             liter{
                 dnam{"litros"}
                 one{"{0} litro"}
@@ -880,6 +950,11 @@
                 one{"{0} mililitro"}
                 other{"{0} mililitros"}
             }
+            pinch{
+                dnam{"chisco"}
+                one{"{0} chisco"}
+                other{"{0} chiscos"}
+            }
             pint{
                 dnam{"pintas"}
                 one{"{0} pinta"}
@@ -895,6 +970,11 @@
                 one{"{0} cuarto"}
                 other{"{0} cuartos"}
             }
+            quart-imperial{
+                dnam{"cuarto imperial"}
+                one{"{0} cuarto imperial"}
+                other{"{0} cuartos imperiais"}
+            }
             tablespoon{
                 dnam{"culleradas"}
                 one{"{0} cullerada"}
@@ -1429,6 +1509,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ptos."}
+                one{"{0} ptos."}
+                other{"{0} ptos."}
+            }
             dot-per-centimeter{
                 dnam{"ppcm"}
                 one{"{0} ppcm"}
@@ -1472,12 +1557,22 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            fathom{
+                dnam{"brazas inglesas"}
+                one{"{0} fth"}
+                other{"{0} fth"}
+            }
             foot{
                 dnam{"pés"}
                 one{"{0} ft"}
                 other{"{0} ft"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"furlongs"}
+                one{"{0} fur"}
+                other{"{0} fur"}
+            }
             inch{
                 dnam{"polg."}
                 one{"{0} in"}
@@ -1577,6 +1672,11 @@
             earth-mass{
                 dnam{"masas da Terra"}
             }
+            grain{
+                dnam{"gran"}
+                one{"{0} gran"}
+                other{"{0} grans"}
+            }
             gram{
                 dnam{"gramos"}
                 one{"{0} g"}
@@ -1821,6 +1921,26 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"cull. sobr."}
+                one{"{0} cull. sobr."}
+                other{"{0} cull. sobr."}
+            }
+            dessert-spoon-imperial{
+                dnam{"cull. sobr. imp."}
+                one{"{0} cull. sobr. imp."}
+                other{"{0} cull. sobr. imp."}
+            }
+            dram{
+                dnam{"dracma"}
+                one{"{0} dracma"}
+                other{"{0} dracmas"}
+            }
+            drop{
+                dnam{"gota"}
+                one{"{0} gota"}
+                other{"{0} gotas"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -1848,6 +1968,11 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"medidor"}
+                one{"{0} medidor"}
+                other{"{0} medidores"}
+            }
             liter{
                 dnam{"litros"}
                 one{"{0} l"}
@@ -1864,6 +1989,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"chisco"}
+                one{"{0} chisco"}
+                other{"{0} chiscos"}
+            }
             pint{
                 dnam{"pintas"}
                 one{"{0} pt"}
@@ -1879,15 +2009,20 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"cuarto imperial"}
+                one{"{0} cto. imp."}
+                other{"{0} ctos. imp."}
+            }
             tablespoon{
                 dnam{"cull."}
                 one{"{0} cull."}
                 other{"{0} cull."}
             }
             teaspoon{
-                dnam{"cullña."}
+                dnam{"cullñs."}
                 one{"{0} cullña."}
-                other{"{0} cullña."}
+                other{"{0} cullñs."}
             }
         }
     }
diff --git a/icu4c/source/data/unit/gsw.txt b/icu4c/source/data/unit/gsw.txt
index fe79da4..e715a32 100644
--- a/icu4c/source/data/unit/gsw.txt
+++ b/icu4c/source/data/unit/gsw.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gsw{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/gu.txt b/icu4c/source/data/unit/gu.txt
index d7583d0..5966d0d 100644
--- a/icu4c/source/data/unit/gu.txt
+++ b/icu4c/source/data/unit/gu.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gu{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -42,9 +42,9 @@
                 other{"{0} સમત્રિજ્યાકોણ"}
             }
             revolution{
-                dnam{"ક્રાંતિ"}
-                one{"{0} ક્રાંતિ"}
-                other{"{0} ક્રાંતિ"}
+                dnam{"પરિભ્રમણ"}
+                one{"{0} પરિભ્રમણ"}
+                other{"{0} પરિભ્રમણ"}
             }
         }
         area{
@@ -106,7 +106,7 @@
         }
         compound{
             per{"{0} પ્રતિ {1}"}
-            times{"{0}⋅{1}"}
+            times{"{0}-{1}"}
         }
         concentr{
             karat{
@@ -409,6 +409,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ડૉટ"}
+                one{"{0} ડૉટ"}
+                other{"{0} ડૉટ"}
+            }
             dot-per-centimeter{
                 dnam{"ડૉટ્સ પ્રતિ સેન્ટિમીટર"}
                 one{"{0} ડૉટ પ્રતિ સેન્ટિમીટર"}
@@ -455,12 +460,22 @@
                 one{"{0} ડેસિમીટર"}
                 other{"{0} ડેસિમીટર"}
             }
+            fathom{
+                dnam{"ફૅધમ"}
+                one{"{0} ફૅધમ"}
+                other{"{0} ફૅધમ"}
+            }
             foot{
                 dnam{"ફૂટ"}
                 one{"{0} ફૂટ"}
                 other{"{0} ફૂટ"}
                 per{"{0} પ્રતિ ફૂટ"}
             }
+            furlong{
+                dnam{"ફર્લાંગ"}
+                one{"{0} ફર્લાંગ"}
+                other{"{0} ફર્લાંગ"}
+            }
             inch{
                 dnam{"ઇંચ"}
                 one{"{0} ઇંચ"}
@@ -541,6 +556,11 @@
             }
         }
         light{
+            lumen{
+                dnam{"લૂમેન"}
+                one{"{0} લૂમેન"}
+                other{"{0} લૂમેન"}
+            }
             lux{
                 dnam{"લક્સ"}
                 one{"{0} લક્સ"}
@@ -568,6 +588,11 @@
                 one{"{0} પૃથ્વી ઘનતા"}
                 other{"{0} પૃથ્વી ઘનતા"}
             }
+            grain{
+                dnam{"ગ્રેન"}
+                one{"{0} ગ્રેન"}
+                other{"{0} ગ્રેન"}
+            }
             gram{
                 dnam{"ગ્રામ"}
                 one{"{0} ગ્રામ"}
@@ -779,6 +804,11 @@
                 one{"{0} બેરલ"}
                 other{"{0} બેરલ"}
             }
+            bushel{
+                dnam{"બુશલ"}
+                one{"{0} બુશલ"}
+                other{"{0} બુશલ"}
+            }
             centiliter{
                 dnam{"સેન્ટિલીટર"}
                 one{"{0} સેન્ટિલીટર"}
@@ -836,6 +866,26 @@
                 one{"{0} ડેસિલીટર"}
                 other{"{0} ડેસિલીટર"}
             }
+            dessert-spoon{
+                dnam{"ડેઝર્ટ સ્પૂન"}
+                one{"{0} ડેઝર્ટ સ્પૂન"}
+                other{"{0} ડેઝર્ટ સ્પૂન"}
+            }
+            dessert-spoon-imperial{
+                dnam{"ઇમ્પીરિયલ ડેઝર્ટ સ્પૂન"}
+                one{"{0} ઇમ્પીરિયલ ડેઝર્ટ સ્પૂન"}
+                other{"{0} ઇમ્પીરિયલ ડેઝર્ટ સ્પૂન"}
+            }
+            dram{
+                dnam{"ડ્રામ"}
+                one{"{0} ડ્રામ"}
+                other{"{0} ડ્રામ"}
+            }
+            drop{
+                dnam{"ડ્રોપ"}
+                one{"{0} ડ્રોપ"}
+                other{"{0} ડ્રોપ"}
+            }
             fluid-ounce{
                 dnam{"પ્રવાહી ઔંસ"}
                 one{"{0} પ્રવાહી ઔંસ"}
@@ -863,6 +913,11 @@
                 one{"{0} હેક્ટોલીટર"}
                 other{"{0} હેક્ટોલીટર"}
             }
+            jigger{
+                dnam{"જિગર"}
+                one{"{0} જિગર"}
+                other{"{0} જિગર"}
+            }
             liter{
                 dnam{"લિટર"}
                 one{"{0} લિટર"}
@@ -879,6 +934,11 @@
                 one{"{0} મિલિલીટર"}
                 other{"{0} મિલિલીટર"}
             }
+            pinch{
+                dnam{"ચપટી"}
+                one{"{0} ચપટી"}
+                other{"{0} ચપટી"}
+            }
             pint{
                 dnam{"પિન્ટ"}
                 one{"{0} પિન્ટ"}
@@ -894,6 +954,11 @@
                 one{"{0} ક્વાર્ટ"}
                 other{"{0} ક્વાર્ટ"}
             }
+            quart-imperial{
+                dnam{"ઇમ્પીરિયલ ક્વૉર્ટ"}
+                one{"{0} ઇમ્પીરિયલ ક્વૉર્ટ"}
+                other{"{0} ઇમ્પીરિયલ ક્વૉર્ટ"}
+            }
             tablespoon{
                 dnam{"ટેબલસ્પૂન"}
                 one{"{0} ટેબલસ્પૂન"}
@@ -1187,9 +1252,9 @@
                 other{"{0} સમત્રિજ્યાકોણ"}
             }
             revolution{
-                dnam{"ક્રાંતિ"}
-                one{"{0} ક્રાંતિ"}
-                other{"{0} ક્રાંતિ"}
+                dnam{"પરિભ્રમણ"}
+                one{"{0} પરિભ્રમણ"}
+                other{"{0} પરિભ્રમણ"}
             }
         }
         area{
@@ -1285,8 +1350,8 @@
             }
             permillion{
                 dnam{"કણ/મિલિયન"}
-                one{"{0} પીપીએમ"}
-                other{"{0} પીપીએમ"}
+                one{"{0} ppm"}
+                other{"{0} ppm"}
             }
             permyriad{
                 dnam{"પરમિરિયડ"}
@@ -1366,8 +1431,8 @@
             }
             petabyte{
                 dnam{"પીબાઈટ"}
-                one{"{0} પીબી"}
-                other{"{0} પીબી"}
+                one{"{0} PB"}
+                other{"{0} PB"}
             }
             terabit{
                 dnam{"Tb"}
@@ -1553,6 +1618,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ડૉટ"}
+                one{"{0} ડૉટ"}
+                other{"{0} ડૉટ"}
+            }
             pixel{
                 dnam{"પિક્સેલ"}
             }
@@ -1574,12 +1644,18 @@
                 one{"{0} ડેમી"}
                 other{"{0} ડેમી"}
             }
+            fathom{
+                dnam{"ફૅધમ"}
+            }
             foot{
                 dnam{"ફૂટ"}
                 one{"{0} ફૂટ"}
                 other{"{0} ફૂટ"}
                 per{"{0}/ફૂટ"}
             }
+            furlong{
+                dnam{"ફર્લાંગ"}
+            }
             inch{
                 dnam{"ઇંચ"}
                 one{"{0} ઇંચ"}
@@ -1687,6 +1763,11 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"ગ્રેન"}
+                one{"{0} ગ્રેન"}
+                other{"{0} ગ્રેન"}
+            }
             gram{
                 dnam{"ગ્રામ"}
                 one{"{0} ગ્રા"}
@@ -1816,9 +1897,9 @@
                 other{"{0} mbar"}
             }
             millimeter-ofhg{
-                dnam{"mm Hg"}
-                one{"{0} mm Hg"}
-                other{"{0} mm Hg"}
+                dnam{"mmHg"}
+                one{"{0} mmHg"}
+                other{"{0} mmHg"}
             }
             pascal{
                 dnam{"Pa"}
@@ -1898,6 +1979,9 @@
                 one{"{0} bbl"}
                 other{"{0} bbl"}
             }
+            bushel{
+                dnam{"બુશલ"}
+            }
             centiliter{
                 dnam{"સેન્ટિલીટર"}
                 one{"{0} સેન્ટિલીટર"}
@@ -1955,6 +2039,14 @@
                 one{"{0} ડેસિલીટર"}
                 other{"{0} ડેસિલીટર"}
             }
+            dram{
+                dnam{"ડ્રામ ફ્લૂઇડ"}
+            }
+            drop{
+                dnam{"ડ્રોપ"}
+                one{"{0} ડ્રોપ"}
+                other{"{0} ડ્રોપ"}
+            }
             fluid-ounce{
                 dnam{"પ્રવાહી ઔંસ"}
                 one{"{0} પ્રવાહી ઔંસ"}
@@ -1982,6 +2074,11 @@
                 one{"{0} હેક્ટોલીટર"}
                 other{"{0} હેક્ટોલીટર"}
             }
+            jigger{
+                dnam{"જિગર"}
+                one{"{0} જિગર"}
+                other{"{0} જિગર"}
+            }
             liter{
                 dnam{"લિટર"}
                 one{"{0} લિ"}
@@ -1998,6 +2095,11 @@
                 one{"{0} મિલિલીટર"}
                 other{"{0} મિલિલીટર"}
             }
+            pinch{
+                dnam{"ચપટી"}
+                one{"{0} ચપટી"}
+                other{"{0} ચપટી"}
+            }
             pint{
                 dnam{"પિન્ટ"}
                 one{"{0} પિન્ટ"}
diff --git a/icu4c/source/data/unit/guz.txt b/icu4c/source/data/unit/guz.txt
index b50d5be..c9a66de 100644
--- a/icu4c/source/data/unit/guz.txt
+++ b/icu4c/source/data/unit/guz.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 guz{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/gv.txt b/icu4c/source/data/unit/gv.txt
index 63c855d..87aeded 100644
--- a/icu4c/source/data/unit/gv.txt
+++ b/icu4c/source/data/unit/gv.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gv{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/ha.txt b/icu4c/source/data/unit/ha.txt
index b542317..bd2660c 100644
--- a/icu4c/source/data/unit/ha.txt
+++ b/icu4c/source/data/unit/ha.txt
@@ -1,5 +1,1926 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ha{
-    Version{"37"}
+    durationUnits{
+        ms{"m:ss"}
+    }
+    units{
+        acceleration{
+            g-force{
+                one{"g-force {0}"}
+                other{"g-force {0}"}
+            }
+            meter-per-square-second{
+                dnam{"meters per second squared"}
+                one{"meter per second squared {0}"}
+                other{"meters per second squared {0}"}
+            }
+        }
+        angle{
+            arc-minute{
+                dnam{"arcminutes"}
+                one{"arcminute {0}"}
+                other{"arcminutes {0}"}
+            }
+            arc-second{
+                dnam{"arcseconds"}
+                one{"arcsecond {0}"}
+                other{"arcseconds {0}"}
+            }
+            degree{
+                dnam{"degrees"}
+                one{"degree {0}"}
+                other{"degrees {0}"}
+            }
+            radian{
+                dnam{"radians"}
+                one{"radian {0}"}
+                other{"radians {0}"}
+            }
+            revolution{
+                dnam{"revolution"}
+                one{"revolution {0}"}
+                other{"revolutions {0}"}
+            }
+        }
+        area{
+            acre{
+                dnam{"eka"}
+                one{"eka {0}"}
+                other{"ekoki {0}"}
+            }
+            dunam{
+                dnam{"dunams"}
+                one{"dunam {0}"}
+                other{"dunams {0}"}
+            }
+            hectare{
+                dnam{"hektoci"}
+                one{"hekta {0}"}
+                other{"hektoci {0}"}
+            }
+            square-centimeter{
+                dnam{"sikwaya sentimitoci"}
+                one{"sikwaya sentimita {0}"}
+                other{"sikwaya sentimitoci {0}"}
+                per{"{0} a sikwaya sentimita"}
+            }
+            square-foot{
+                dnam{"sikwaya ƙafafu"}
+                one{"sikwaya ƙafa {0}"}
+                other{"sikwaya ƙafafu {0}"}
+            }
+            square-inch{
+                dnam{"sikwaya incis"}
+                one{"sikwaya inci {0}"}
+                other{"sikwaya incina {0}"}
+                per{"{0} a sikwaya inci"}
+            }
+            square-kilometer{
+                dnam{"sikwaya kilomitoci"}
+                one{"sikwaya kilomita {0}"}
+                other{"sikwaya kilomitoci {0}"}
+                per{"{0} a sikwaya kilomita"}
+            }
+            square-meter{
+                dnam{"sikwaya mitoci"}
+                one{"sikwaya mita {0}"}
+                other{"sikwaya mitoci {0}"}
+                per{"{0} a sikwaya mita"}
+            }
+            square-mile{
+                dnam{"sikwaya mil-mil"}
+                one{"sikwaya mil {0}"}
+                other{"sikwaya mil-mil {0}"}
+                per{"{0} a sikwaya mil"}
+            }
+            square-yard{
+                dnam{"sikwaya yadina"}
+                one{"sikwaya yadi {0}"}
+                other{"sikwaya yaduna {0}"}
+            }
+        }
+        compound{
+            per{"{0} a {1}"}
+        }
+        concentr{
+            karat{
+                dnam{"karats"}
+                one{"karat {0}"}
+                other{"karats {0}"}
+            }
+            milligram-per-deciliter{
+                dnam{"milligrams per deciliter"}
+                one{"milligram per deciliter {0}"}
+                other{"milligrams per deciliter {0}"}
+            }
+            millimole-per-liter{
+                dnam{"millimoles per liter"}
+                one{"millimole per liter {0}"}
+                other{"millimoles per liter {0}"}
+            }
+            mole{
+                dnam{"moles"}
+                one{"mole {0}"}
+                other{"moles {0}"}
+            }
+            percent{
+                dnam{"kaso"}
+                one{"kaso {0}"}
+                other{"Kaso {0}"}
+            }
+            permille{
+                dnam{"permille"}
+                one{"permille {0}"}
+                other{"permille {0}"}
+            }
+            permillion{
+                dnam{"parts per million"}
+                one{"part per million {0}"}
+                other{"parts per million {0}"}
+            }
+            permyriad{
+                dnam{"permyriad"}
+                one{"permyriad {0}"}
+                other{"permyriad {0}"}
+            }
+        }
+        consumption{
+            liter-per-100-kilometer{
+                dnam{"litoci a kilomitoci 100"}
+                one{"lita a kilomitoci 100 {0}"}
+                other{"litoci a kilomitoci 100 {0}"}
+            }
+            liter-per-kilometer{
+                dnam{"litoci a kilomita"}
+                one{"lita a kilomita {0}"}
+                other{"litoci a kilomita {0}"}
+            }
+            mile-per-gallon{
+                dnam{"mil-mil a galan"}
+                one{"mil a galan {0}"}
+                other{"mil-mil a galan {0}"}
+            }
+            mile-per-gallon-imperial{
+                dnam{"mil-mil a Imp. gallon"}
+                one{"mil a Imp. gallon {0}"}
+                other{"mil-mil a Imp. gallon {0}"}
+            }
+        }
+        coordinate{
+            dnam{"cardinal direction"}
+            east{"Gabas {0}"}
+            north{"arewa {0}"}
+            south{"Kudu {0}"}
+            west{"Yamma {0}"}
+        }
+        digital{
+            bit{
+                dnam{"bits"}
+                one{"bit {0}"}
+                other{"bits {0}"}
+            }
+            byte{
+                dnam{"bytes"}
+                one{"byte {0}"}
+                other{"bytes {0}"}
+            }
+            gigabit{
+                dnam{"gigabits"}
+                one{"gigabit {0}"}
+                other{"gigabits {0}"}
+            }
+            gigabyte{
+                dnam{"gigabytes"}
+                one{"gigabyte {0}"}
+                other{"gigabytes {0}"}
+            }
+            kilobit{
+                dnam{"kilobits"}
+                one{"kilobit {0}"}
+                other{"kilobits {0}"}
+            }
+            kilobyte{
+                dnam{"kilobytes"}
+                one{"kilobyte {0}"}
+                other{"kilobytes {0}"}
+            }
+            megabit{
+                dnam{"megabits"}
+                one{"megabit {0}"}
+                other{"megabits {0}"}
+            }
+            megabyte{
+                dnam{"megabytes"}
+                one{"megabyte {0}"}
+                other{"megabytes {0}"}
+            }
+            petabyte{
+                dnam{"petabytes"}
+                one{"petabyte {0}"}
+                other{"petabytes {0}"}
+            }
+            terabit{
+                dnam{"terabits"}
+                one{"terabit {0}"}
+                other{"terabits {0}"}
+            }
+            terabyte{
+                dnam{"terabytes"}
+                one{"terabyte {0}"}
+                other{"terabytes {0}"}
+            }
+        }
+        duration{
+            century{
+                dnam{"ƙarnoni"}
+                one{"ƙarni {0}"}
+                other{"ƙarnoni {0}"}
+            }
+            day{
+                dnam{"ranaku"}
+                one{"rana {0}"}
+                other{"ranaku {0}"}
+                per{"{0} a rana"}
+            }
+            decade{
+                dnam{"shekaru goma-goma"}
+                one{"shekaru goma {0}"}
+                other{"shekaru goma-goma {0}"}
+            }
+            hour{
+                dnam{"saʼoʼi"}
+                one{"sa'a {0}"}
+                other{"sa'o'i {0}"}
+                per{"{0} a saʼa"}
+            }
+            microsecond{
+                dnam{"makirosekan"}
+                one{"makirosekan {0}"}
+                other{"makirosekans {0}"}
+            }
+            millisecond{
+                dnam{"millisakan"}
+                one{"millisakan {0}"}
+                other{"millisakans {0}"}
+            }
+            minute{
+                dnam{"mintoci"}
+                one{"minti {0}"}
+                other{"mintoci {0}"}
+                per{"{0} a minti"}
+            }
+            month{
+                dnam{"wat"}
+                one{"wata {0}"}
+                other{"watanni {0}"}
+                per{"{0} a wata"}
+            }
+            nanosecond{
+                dnam{"nanosekan"}
+                one{"nanosekan {0}"}
+                other{"nanosekans {0}"}
+            }
+            second{
+                dnam{"daƙiƙoƙi"}
+                one{"daƙiƙa {0}"}
+                other{"daƙiƙoƙi {0}"}
+                per{"{0} a daƙiƙa"}
+            }
+            week{
+                dnam{"makonni"}
+                one{"mako {0}"}
+                other{"makonni {0}"}
+                per{"{0} a mako"}
+            }
+            year{
+                dnam{"shekaru"}
+                one{"shekara {0}"}
+                other{"shekaru {0}"}
+                per{"{0} a shekara"}
+            }
+        }
+        electric{
+            ampere{
+                dnam{"amperes"}
+                one{"ampere {0}"}
+                other{"amperes {0}"}
+            }
+            milliampere{
+                dnam{"milliamperes"}
+                one{"milliamperes {0}"}
+                other{"milliamperes {0}"}
+            }
+            ohm{
+                dnam{"ohms"}
+                one{"ohm {0}"}
+                other{"ohms {0}"}
+            }
+            volt{
+                dnam{"volts"}
+                one{"volt {0}"}
+                other{"volts {0}"}
+            }
+        }
+        energy{
+            british-thermal-unit{
+                dnam{"British thermal units"}
+                one{"British thermal unit {0}"}
+                other{"British thermal units {0}"}
+            }
+            calorie{
+                dnam{"kaloris"}
+                one{"kalori {0}"}
+                other{"kaloris {0}"}
+            }
+            electronvolt{
+                dnam{"electronvolts"}
+                one{"electronvolt {0}"}
+                other{"electronvolts {0}"}
+            }
+            foodcalorie{
+                dnam{"Kaloris"}
+                one{"Kalori {0}"}
+                other{"Kaloris {0}"}
+            }
+            joule{
+                dnam{"joules"}
+                one{"joule {0}"}
+                other{"joules {0}"}
+            }
+            kilocalorie{
+                dnam{"kilokaloris"}
+                one{"kilokalori {0}"}
+                other{"kilokaloris {0}"}
+            }
+            kilojoule{
+                dnam{"kilojoules"}
+                one{"kilojoule {0}"}
+                other{"kilojoules {0}"}
+            }
+            kilowatt-hour{
+                dnam{"kilowatt-hours"}
+                one{"kilowatt hour {0}"}
+                other{"kilowatt-hours {0}"}
+            }
+            therm-us{
+                one{"US therm {0}"}
+                other{"US therms {0}"}
+            }
+        }
+        force{
+            newton{
+                dnam{"newtons"}
+                one{"newton {0}"}
+                other{"newtons {0}"}
+            }
+            pound-force{
+                dnam{"pounds of force"}
+                one{"pound of force {0}"}
+                other{"pounds of force {0}"}
+            }
+        }
+        frequency{
+            gigahertz{
+                dnam{"gigahertz"}
+                one{"gigahertz {0}"}
+                other{"gigahertz {0}"}
+            }
+            hertz{
+                dnam{"hertz"}
+                one{"hertz {0}"}
+                other{"hertz {0}"}
+            }
+            kilohertz{
+                dnam{"kilohertz"}
+                one{"kilohertz {0}"}
+                other{"kilohertz {0}"}
+            }
+            megahertz{
+                dnam{"megahertz"}
+                one{"megahertz {0}"}
+                other{"megahertz {0}"}
+            }
+        }
+        graphics{
+            dot{
+                dnam{"aya"}
+                one{"aya {0}"}
+                other{"aya {0}"}
+            }
+            dot-per-centimeter{
+                dnam{"ayoyi a sentimita"}
+                one{"{0} aya a sentimita"}
+                other{"{0} ayoyi a sentimita"}
+            }
+            dot-per-inch{
+                dnam{"ayoyi a inci"}
+                one{"{0} aya a inci"}
+                other{"{0} ayoyi a inci"}
+            }
+            em{
+                dnam{"typographic em"}
+                one{"em {0}"}
+                other{"{0} ems"}
+            }
+            megapixel{
+                dnam{"megafikzels"}
+                one{"megafikzel {0}"}
+                other{"megafikzels {0}"}
+            }
+            pixel{
+                dnam{"fikzel"}
+                one{"fikzel {0}"}
+                other{"fikzels {0}"}
+            }
+            pixel-per-centimeter{
+                dnam{"fikzels a sentimita"}
+                one{"{0} fikzel a sentimita"}
+                other{"{0} fikzels a sentimita"}
+            }
+            pixel-per-inch{
+                dnam{"fikzel a inci"}
+                one{"{0} fikzel a inci"}
+                other{"{0} fikzels a inci"}
+            }
+        }
+        length{
+            astronomical-unit{
+                dnam{"astronomical units"}
+                one{"astronomical unit {0}"}
+                other{"astronomical units {0}"}
+            }
+            centimeter{
+                dnam{"sentimitoci"}
+                one{"sentimita {0}"}
+                other{"sentimitoci {0}"}
+                per{"{0} a sentimita"}
+            }
+            decimeter{
+                dnam{"disimitoci"}
+                one{"disimita {0}"}
+                other{"disimitoci {0}"}
+            }
+            earth-radius{
+                dnam{"earth radius"}
+                one{"earth radius {0}"}
+                other{"earth radius {0}"}
+            }
+            foot{
+                dnam{"ƙafafu"}
+                one{"ƙafa {0}"}
+                other{"ƙafafu {0}"}
+                per{"{0} a ƙafa"}
+            }
+            inch{
+                dnam{"incina"}
+                one{"inci {0}"}
+                other{"incina {0}"}
+                per{"{0} a inci"}
+            }
+            kilometer{
+                dnam{"kilomitoci"}
+                one{"kilomita {0}"}
+                other{"kilomitoci {0}"}
+                per{"{0} a kilomita"}
+            }
+            light-year{
+                dnam{"light years"}
+                one{"light year {0}"}
+                other{"light years {0}"}
+            }
+            meter{
+                dnam{"mitoci"}
+                one{"mita {0}"}
+                other{"mitoci {0}"}
+                per{"{0} a mita"}
+            }
+            micrometer{
+                dnam{"makiromitoci"}
+                one{"makiromita {0}"}
+                other{"makiromitoci {0}"}
+            }
+            mile{
+                dnam{"mil-mil"}
+                one{"mil {0}"}
+                other{"mil-mil {0}"}
+            }
+            mile-scandinavian{
+                dnam{"mile-scandinavian"}
+                one{"mile-scandinavian {0}"}
+                other{"miles-scandinavian {0}"}
+            }
+            millimeter{
+                dnam{"milimitoci"}
+                one{"milimita {0}"}
+                other{"milimitoci {0}"}
+            }
+            nanometer{
+                dnam{"nanomitoci"}
+                one{"nanomita {0}"}
+                other{"nanomitoci {0}"}
+            }
+            nautical-mile{
+                dnam{"nautical miles"}
+                one{"nautical mile {0}"}
+                other{"nautical miles {0}"}
+            }
+            parsec{
+                dnam{"fasek"}
+                one{"fasek {0}"}
+                other{"fasekoki {0}"}
+            }
+            picometer{
+                dnam{"fikomitoci"}
+                one{"fikomita {0}"}
+                other{"fikomitoci {0}"}
+            }
+            point{
+                dnam{"makuna"}
+                one{"maki {0}"}
+                other{"makuna {0}"}
+            }
+            solar-radius{
+                dnam{"solar radii"}
+                one{"solar radius {0}"}
+                other{"solar radii {0}"}
+            }
+            yard{
+                dnam{"yaduka"}
+                one{"yadi {0}"}
+                other{"yaduka {0}"}
+            }
+        }
+        light{
+            candela{
+                dnam{"candela"}
+                one{"candela {0}"}
+                other{"candela {0}"}
+            }
+            lumen{
+                dnam{"lumen"}
+                one{"lumen {0}"}
+                other{"lumen {0}"}
+            }
+            lux{
+                dnam{"lux"}
+                one{"lux {0}"}
+                other{"lux {0}"}
+            }
+            solar-luminosity{
+                one{"solar luminosity {0}"}
+                other{"solar luminosities {0}"}
+            }
+        }
+        mass{
+            carat{
+                dnam{"carats"}
+                one{"carat {0}"}
+                other{"carats {0}"}
+            }
+            dalton{
+                dnam{"daltons"}
+                one{"dalton {0}"}
+                other{"daltons {0}"}
+            }
+            earth-mass{
+                dnam{"Earth masses"}
+                one{"Earth mas {0}"}
+                other{"Earth masses {0}"}
+            }
+            grain{
+                dnam{"ƙwaya"}
+                one{"ƙwaya {0}"}
+                other{"ƙwaya {0}"}
+            }
+            gram{
+                dnam{"giram-giram"}
+                one{"giram {0}"}
+                other{"giram-giram {0}"}
+                per{"{0} a giram"}
+            }
+            kilogram{
+                dnam{"kilogiramgiram"}
+                one{"kilogiram {0}"}
+                other{"kilogiramgiram {0}"}
+                per{"{0} a kilogiram"}
+            }
+            metric-ton{
+                dnam{"metric tons"}
+                one{"metric ton {0}"}
+                other{"metric tons {0}"}
+            }
+            microgram{
+                dnam{"makirogiramgiram"}
+                one{"makirogiram {0}"}
+                other{"makirogiramgiram {0}"}
+            }
+            milligram{
+                dnam{"milligiramgiram"}
+                one{"milligiram {0}"}
+                other{"milligiramgiram {0}"}
+            }
+            ounce{
+                dnam{"oza-oza"}
+                one{"oza {0}"}
+                other{"oza-oza {0}"}
+                per{"{0} a oza"}
+            }
+            ounce-troy{
+                dnam{"oza-ozar troy"}
+                one{"oza troy {0}"}
+                other{"oza-ozar troy {0}"}
+            }
+            pound{
+                one{"laba {0}"}
+                other{"laba-laba {0}"}
+            }
+            solar-mass{
+                dnam{"solar masses"}
+                one{"solar mas {0}"}
+                other{"solar masses {0}"}
+            }
+            ton{
+                dnam{"tan-tan"}
+                one{"tan {0}"}
+                other{"tan-tan {0}"}
+            }
+        }
+        power{
+            gigawatt{
+                dnam{"gigawatwat"}
+                one{"gigawat {0}"}
+                other{"gigawatwat {0}"}
+            }
+            horsepower{
+                dnam{"ƙarfin inji"}
+                one{"ƙarfin inji {0}"}
+                other{"ƙarfin inji {0}"}
+            }
+            kilowatt{
+                dnam{"kilowatwat"}
+                one{"kilowat {0}"}
+                other{"kilowatwat {0}"}
+            }
+            megawatt{
+                dnam{"megawatwat"}
+                one{"megawat {0}"}
+                other{"megawatwat {0}"}
+            }
+            milliwatt{
+                dnam{"milliwatwat"}
+                one{"milliwat {0}"}
+                other{"milliwatwat {0}"}
+            }
+            watt{
+                dnam{"wat-wat"}
+                one{"wat {0}"}
+                other{"wat-wat {0}"}
+            }
+        }
+        pressure{
+            atmosphere{
+                dnam{"yanaye-yanaye"}
+                one{"yanayi {0}"}
+                other{"yanaye-yanaye {0}"}
+            }
+            bar{
+                dnam{"sanduna"}
+                one{"sanda {0}"}
+                other{"anduna {0}"}
+            }
+            hectopascal{
+                dnam{"hectopascals"}
+                one{"hectopascal {0}"}
+                other{"hectopascals {0}"}
+            }
+            inch-ofhg{
+                dnam{"incinan zaiba"}
+                one{"incin zaiba {0}"}
+                other{"incinan zaiba {0}"}
+            }
+            kilopascal{
+                dnam{"kilopascals"}
+                one{"kilopascal {0}"}
+                other{"kilopascals {0}"}
+            }
+            megapascal{
+                dnam{"megapascals"}
+                one{"megapascal {0}"}
+                other{"megapascals {0}"}
+            }
+            millibar{
+                dnam{"millibars"}
+                one{"millibar {0}"}
+                other{"millibars {0}"}
+            }
+            millimeter-ofhg{
+                dnam{"millimitocin zaiba"}
+                one{"millimitar zaiba {0}"}
+                other{"millimitocin zaiba {0}"}
+            }
+            pascal{
+                dnam{"pascals"}
+                one{"pascal {0}"}
+                other{"pascals {0}"}
+            }
+            pound-force-per-square-inch{
+                dnam{"laba-laba a sikwaya inci"}
+                one{"laba a sikwaya inci {0}"}
+                other{"laba-laba a sikwaya inci {0}"}
+            }
+        }
+        speed{
+            kilometer-per-hour{
+                dnam{"kilomitoci a saʼa"}
+                one{"kilomita a sa'a {0}"}
+                other{"kilomitoci a sa'a {0}"}
+            }
+            knot{
+                dnam{"knots"}
+                one{"knot {0}"}
+                other{"knots {0}"}
+            }
+            meter-per-second{
+                dnam{"mitoci a daƙiƙa"}
+                one{"mita a daƙiƙa {0}"}
+                other{"mitoci a daƙiƙa {0}"}
+            }
+            mile-per-hour{
+                dnam{"mil-mil a saʼa"}
+                one{"mil a sa'a {0}"}
+                other{"mil-mil a sa'a {0}"}
+            }
+        }
+        temperature{
+            celsius{
+                dnam{"digiri-digiri Selsiyas"}
+                one{"digiri Selsiyas {0}"}
+                other{"digiri-digiri Selsiyas {0}"}
+            }
+            fahrenheit{
+                dnam{"digiri-digiri faranhit"}
+                one{"digiri faranhit {0}"}
+                other{"digiri-digiri faranhit {0}"}
+            }
+            generic{
+                one{"digiri {0}"}
+                other{"digiri-digiri {0}"}
+            }
+            kelvin{
+                dnam{"kelvins"}
+                one{"kelvin {0}"}
+                other{"kelvins {0}"}
+            }
+        }
+        torque{
+            newton-meter{
+                dnam{"newton-meters"}
+                one{"newton-meter {0}"}
+                other{"newton-meters {0}"}
+            }
+            pound-force-foot{
+                dnam{"pound-feet"}
+                one{"pound-force-foot {0}"}
+                other{"pound-feet {0}"}
+            }
+        }
+        volume{
+            acre-foot{
+                dnam{"eka-ƙafafu"}
+                one{"eka-ƙafa {0}"}
+                other{"eka-ƙafafu {0}"}
+            }
+            barrel{
+                dnam{"ganguna"}
+                one{"ganga {0}"}
+                other{"ganguna {0}"}
+            }
+            centiliter{
+                dnam{"sentilitoci"}
+                one{"sentilita {0}"}
+                other{"sentilitoci {0}"}
+            }
+            cubic-centimeter{
+                dnam{"kubik sentimitoci"}
+                one{"kubik sentimita {0}"}
+                other{"kubik sentimitoci {0}"}
+                per{"{0} a kubik sentimita"}
+            }
+            cubic-foot{
+                dnam{"kubik ƙafafu"}
+                one{"kubik ƙafa {0}"}
+                other{"kubik ƙafafu {0}"}
+            }
+            cubic-inch{
+                dnam{"kubic incina"}
+                one{"kubik inci {0}"}
+                other{"kubik incina {0}"}
+            }
+            cubic-kilometer{
+                dnam{"kubik kilomitoci"}
+                one{"kubik kilomita {0}"}
+                other{"kubik kilomitoci {0}"}
+            }
+            cubic-meter{
+                dnam{"kubic mitoci"}
+                one{"kubic mita {0}"}
+                other{"kubic mitoci {0}"}
+                per{"{0} a kubic mita"}
+            }
+            cubic-mile{
+                dnam{"kubik mil-mil"}
+                one{"kubik mil {0}"}
+                other{"kubik mil-mil {0}"}
+            }
+            cubic-yard{
+                dnam{"kubik yaduka"}
+                one{"kubik yadi {0}"}
+                other{"kubik yaduka {0}"}
+            }
+            cup{
+                dnam{"kofuna"}
+                one{"kofi {0}"}
+                other{"kofuna {0}"}
+            }
+            cup-metric{
+                dnam{"metric cups"}
+                one{"metric cup {0}"}
+                other{"metric cups {0}"}
+            }
+            deciliter{
+                dnam{"desilitoci"}
+                one{"desilita {0}"}
+                other{"desilitoci {0}"}
+            }
+            dessert-spoon{
+                dnam{"dessert spoon"}
+                one{"dessert spoon {0}"}
+                other{"dessert spoon {0}"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Imp. dessert spoon"}
+                one{"Imp. dessert spoon {0}"}
+                other{"Imp. dessert spoon {0}"}
+            }
+            dram{
+                dnam{"dram"}
+                one{"dram {0}"}
+                other{"{0} dram"}
+            }
+            drop{
+                dnam{"ɗigo"}
+                one{"ɗigo {0}"}
+                other{"ɗigo {0}"}
+            }
+            fluid-ounce{
+                dnam{"fluid ounces"}
+                one{"fluid ounce {0}"}
+                other{"fluid ounces {0}"}
+            }
+            fluid-ounce-imperial{
+                dnam{"Imp. fluid ounces"}
+                one{"Imp. fluid ounce {0}"}
+                other{"Imp. fluid ounces {0}"}
+            }
+            gallon{
+                dnam{"galan-galan"}
+                one{"galan {0}"}
+                other{"galan-galan {0}"}
+                per{"{0} a galan"}
+            }
+            gallon-imperial{
+                dnam{"Imp. gallons"}
+                one{"Imp. gallon {0}"}
+                other{"Imp. gallons {0}"}
+                per{"{0} a Imp. gallons"}
+            }
+            hectoliter{
+                dnam{"hektolitoci"}
+                one{"hektolita {0}"}
+                other{"hektolitoci {0}"}
+            }
+            liter{
+                dnam{"litoci"}
+                one{"lita {0}"}
+                other{"litoci {0}"}
+                per{"{0} a lita"}
+            }
+            megaliter{
+                dnam{"megalitoci"}
+                one{"megalita {0}"}
+                other{"megalitoci {0}"}
+            }
+            milliliter{
+                dnam{"millimitoci"}
+                one{"millimita {0}"}
+                other{"millimitoci {0}"}
+            }
+            pint{
+                dnam{"pints"}
+                one{"pint {0}"}
+                other{"pints {0}"}
+            }
+            pint-metric{
+                dnam{"metric pints"}
+                one{"metric pint {0}"}
+                other{"metric pints {0}"}
+            }
+            quart{
+                dnam{"quarts"}
+                one{"quart {0}"}
+                other{"quarts {0}"}
+            }
+            quart-imperial{
+                dnam{"Imp. quart"}
+                one{"{0}"}
+                other{"Imp. quart {0}"}
+            }
+            tablespoon{
+                dnam{"manyan cokula"}
+                one{"babban cokali {0}"}
+                other{"manyan cokula {0}"}
+            }
+            teaspoon{
+                dnam{"ƙananan cokula"}
+                one{"ƙaramin cokali {0}"}
+                other{"ƙananan cokula {0}"}
+            }
+        }
+    }
+    unitsNarrow{
+        concentr{
+            percent{
+                one{"%{0}"}
+                other{"%{0}"}
+            }
+        }
+        consumption{
+            liter-per-100-kilometer{
+                dnam{"L/100km"}
+                one{"L/100km"}
+                other{"L/100km {0}"}
+            }
+        }
+        coordinate{
+            east{"G{0}"}
+            north{"A{0}"}
+            south{"K{0}"}
+            west{"Y{0}"}
+        }
+        duration{
+            day{
+                dnam{"rana"}
+                one{"r{0}"}
+                other{"r{0}"}
+            }
+            hour{
+                dnam{"saʼa"}
+                one{"s{0}"}
+                other{"s{0}"}
+            }
+            millisecond{
+                dnam{"msek"}
+                one{"ms {0}"}
+                other{"ms {0}"}
+            }
+            minute{
+                dnam{"mnt"}
+                one{"mtn"}
+                other{"minti {0}"}
+            }
+            month{
+                dnam{"wata"}
+                one{"w{0}"}
+                other{"w{0}"}
+            }
+            second{
+                dnam{"daƙ"}
+                one{"d {0}"}
+                other{"d {0}"}
+            }
+            week{
+                dnam{"mk"}
+                one{"m{0}"}
+                other{"m{0}"}
+            }
+            year{
+                dnam{"shkr"}
+                one{"shkr {0}"}
+                other{"s{0}"}
+            }
+        }
+        length{
+            centimeter{
+                one{"cm{0}"}
+                other{"cm{0}"}
+            }
+            kilometer{
+                one{"km{0}"}
+                other{"km{0}"}
+            }
+            meter{
+                dnam{"m"}
+                one{"m{0}"}
+                other{"m{0}"}
+            }
+            millimeter{
+                one{"mm{0}"}
+                other{"mm{0}"}
+            }
+        }
+        mass{
+            gram{
+                dnam{"giram"}
+                one{"g{0}"}
+                other{"g{0}"}
+            }
+            kilogram{
+                one{"kg{0}"}
+                other{"kg{0}"}
+            }
+        }
+        speed{
+            kilometer-per-hour{
+                one{"km/s{0}"}
+                other{"km/s{0}"}
+            }
+        }
+        temperature{
+            celsius{
+                dnam{"°S"}
+                one{"S°{0}"}
+                other{"S°{0}"}
+            }
+        }
+        volume{
+            liter{
+                dnam{"lita"}
+                one{"L{0}"}
+                other{"L{0}"}
+            }
+        }
+    }
+    unitsShort{
+        acceleration{
+            g-force{
+                one{"G {0}"}
+                other{"G {0}"}
+            }
+            meter-per-square-second{
+                dnam{"meters/sec²"}
+                one{"m/s² {0}"}
+                other{"m/s² {0}"}
+            }
+        }
+        angle{
+            arc-minute{
+                dnam{"arcmins"}
+                one{"arcmin {0}"}
+                other{"arcmin {0}"}
+            }
+            arc-second{
+                dnam{"arcsecs"}
+                one{"arcsec {0}"}
+                other{"arcsec {0}"}
+            }
+            degree{
+                dnam{"degrees"}
+                one{"deg {0}"}
+                other{"deg {0}"}
+            }
+            radian{
+                dnam{"radian"}
+                one{"rad {0}"}
+                other{"rad {0}"}
+            }
+            revolution{
+                one{"rev {0}"}
+                other{"rev {0}"}
+            }
+        }
+        area{
+            acre{
+                dnam{"ekoki"}
+                one{"ek {0}"}
+                other{"ek {0}"}
+            }
+            dunam{
+                dnam{"dunams"}
+                one{"dunam {0}"}
+                other{"dunam {0}"}
+            }
+            hectare{
+                dnam{"hektoci"}
+                one{"ha {0}"}
+                other{"ha {0}"}
+            }
+            square-centimeter{
+                one{"cm² {0}"}
+                other{"cm² {0}"}
+            }
+            square-foot{
+                dnam{"sk ƙafa"}
+                one{"sk ƙf {0}"}
+                other{"sk ƙf {0}"}
+            }
+            square-inch{
+                dnam{"incina²"}
+                one{"in² {0}"}
+                other{"in² {0}"}
+            }
+            square-kilometer{
+                one{"km² {0}"}
+                other{"km² {0}"}
+            }
+            square-meter{
+                dnam{"mitoci²"}
+                one{"m² {0}"}
+                other{"m² {0}"}
+            }
+            square-mile{
+                dnam{"sk mil-mil"}
+                one{"sq mi {0}"}
+                other{"sq mi {0}"}
+            }
+            square-yard{
+                dnam{"yaduna²"}
+                one{"yd² {0}"}
+                other{"yd² {0}"}
+            }
+        }
+        concentr{
+            karat{
+                dnam{"karats"}
+                one{"kt {0}"}
+                other{"kt {0}"}
+            }
+            milligram-per-deciliter{
+                one{"mg/dL {0}"}
+                other{"mg/dL {0}"}
+            }
+            millimole-per-liter{
+                dnam{"millimol/liter"}
+                one{"mmol/L {0}"}
+                other{"mmol/L {0}"}
+            }
+            mole{
+                dnam{"mole"}
+                one{"mol {0}"}
+                other{"mol {0}"}
+            }
+            percent{
+                dnam{"kaso"}
+            }
+            permille{
+                dnam{"permille"}
+                one{"‰{0}"}
+                other{"‰{0}"}
+            }
+            permillion{
+                dnam{"parts/million"}
+                one{"ppm {0}"}
+                other{"ppm {0}"}
+            }
+            permyriad{
+                dnam{"permyriad"}
+                one{"‱{0}"}
+                other{"‱{0}"}
+            }
+        }
+        consumption{
+            liter-per-100-kilometer{
+                one{"L/100km {0}"}
+                other{"L/100km {0}"}
+            }
+            liter-per-kilometer{
+                dnam{"litoci/km"}
+                one{"L/km {0}"}
+                other{"L/km {0}"}
+            }
+            mile-per-gallon{
+                dnam{"mil-mil/gal"}
+                one{"mag {0}"}
+                other{"mag {0}"}
+            }
+            mile-per-gallon-imperial{
+                dnam{"mil-mil/gal Imp."}
+                one{"mag Imp. {0}"}
+                other{"mag Imp. {0}"}
+            }
+        }
+        coordinate{
+            east{"G {0}"}
+            north{"A {0}"}
+            south{"K {0}"}
+            west{"Y {0}"}
+        }
+        digital{
+            bit{
+                one{"bit {0}"}
+                other{"bit {0}"}
+            }
+            byte{
+                one{"byte {0}"}
+                other{"byte {0}"}
+            }
+            gigabit{
+                dnam{"Gbit"}
+                one{"Gb {0}"}
+                other{"Gb {0}"}
+            }
+            gigabyte{
+                dnam{"GByte"}
+                one{"GB {0}"}
+                other{"GB {0}"}
+            }
+            kilobit{
+                dnam{"kbit"}
+                one{"kb {0}"}
+                other{"kb {0}"}
+            }
+            kilobyte{
+                dnam{"KByte"}
+                one{"kB {0}"}
+                other{"kB {0}"}
+            }
+            megabit{
+                dnam{"Mbit"}
+                one{"Mb {0}"}
+                other{"Mb {0}"}
+            }
+            megabyte{
+                dnam{"MByte"}
+                one{"MB {0}"}
+                other{"MB {0}"}
+            }
+            petabyte{
+                dnam{"PByte"}
+                one{"PB {0}"}
+                other{"PB {0}"}
+            }
+            terabit{
+                dnam{"Tbit"}
+                one{"Tb {0}"}
+                other{"Tb {0}"}
+            }
+            terabyte{
+                dnam{"TByte"}
+                one{"TB {0}"}
+                other{"TB {0}"}
+            }
+        }
+        duration{
+            century{
+                dnam{"ƙ"}
+                one{"ƙ {0}"}
+                other{"ƙ {0}"}
+            }
+            day{
+                dnam{"ranaku"}
+                one{"rana {0}"}
+                other{"ranaku {0}"}
+                per{"{0}/r"}
+            }
+            decade{
+                dnam{"shkr gm"}
+                one{"shkr gm {0}"}
+                other{"shkr gm {0}"}
+            }
+            hour{
+                dnam{"saʼoʼi"}
+                one{"s {0}"}
+                other{"s {0}"}
+                per{"{0}/saʼa"}
+            }
+            microsecond{
+                dnam{"µsecs"}
+                one{"µs {0}"}
+                other{"µs {0}"}
+            }
+            millisecond{
+                dnam{"milseks"}
+                one{"ms {0}"}
+                other{"ms {0}"}
+            }
+            minute{
+                dnam{"mintc"}
+                one{"mnt {0}"}
+                other{"mnt {0}"}
+                per{"{0}/mnt"}
+            }
+            month{
+                dnam{"watanni"}
+                one{"wat {0}"}
+                other{"wtnn {0}"}
+                per{"{0}/w"}
+            }
+            nanosecond{
+                dnam{"nanoseks"}
+                one{"ns {0}"}
+                other{"ns {0}"}
+            }
+            second{
+                dnam{"daƙ"}
+                one{"d {0}"}
+                other{"d {0}"}
+                per{"{0}/d"}
+            }
+            week{
+                dnam{"makonni"}
+                one{"mk {0}"}
+                other{"mkn {0}"}
+                per{"{0}/m"}
+            }
+            year{
+                dnam{"shekaru"}
+                one{"shkr {0}"}
+                other{"shkru {0}"}
+                per{"{0}/s"}
+            }
+        }
+        electric{
+            ampere{
+                one{"A {0}"}
+                other{"A {0}"}
+            }
+            milliampere{
+                dnam{"milliamps"}
+                one{"mA {0}"}
+                other{"mA {0}"}
+            }
+            ohm{
+                dnam{"ohm"}
+                one{"Ω {0}"}
+                other{"Ω {0}"}
+            }
+            volt{
+                dnam{"volts"}
+                one{"V {0}"}
+                other{"V {0}"}
+            }
+        }
+        energy{
+            british-thermal-unit{
+                dnam{"BTU"}
+                one{"Btu {0}"}
+                other{"Btu {0}"}
+            }
+            calorie{
+                dnam{"kal"}
+                one{"kal {0}"}
+                other{"kal {0}"}
+            }
+            electronvolt{
+                dnam{"electronvolt"}
+                one{"eV {0}"}
+                other{"eV {0}"}
+            }
+            foodcalorie{
+                dnam{"Kal"}
+                one{"Kal {0}"}
+                other{"Kal {0}"}
+            }
+            joule{
+                dnam{"joules"}
+                one{"J {0}"}
+                other{"J {0}"}
+            }
+            kilocalorie{
+                one{"kcal {0}"}
+                other{"kcal {0}"}
+            }
+            kilojoule{
+                dnam{"kilojoule"}
+                one{"kj {0}"}
+                other{"kj {0}"}
+            }
+            kilowatt-hour{
+                dnam{"kW-hour"}
+                one{"kWh {0}"}
+                other{"kWh {0}"}
+            }
+            therm-us{
+                one{"US therm {0}"}
+                other{"US therm {0}"}
+            }
+        }
+        force{
+            newton{
+                dnam{"newton"}
+                one{"N {0}"}
+                other{"N {0}"}
+            }
+            pound-force{
+                dnam{"pounds-force"}
+                one{"lbf {0}"}
+                other{"lbf {0}"}
+            }
+        }
+        frequency{
+            gigahertz{
+                one{"GHz {0}"}
+                other{"GHz {0}"}
+            }
+            hertz{
+                one{"Hz {0}"}
+                other{"Hz {0}"}
+            }
+            kilohertz{
+                one{"kHz {0}"}
+                other{"kHz {0}"}
+            }
+            megahertz{
+                one{"MHz {0}"}
+                other{"MHz {0}"}
+            }
+        }
+        graphics{
+            dot{
+                dnam{"aya"}
+                one{"aya {0}"}
+                other{"aya {0}"}
+            }
+            dot-per-centimeter{
+                one{"dpcm {0}"}
+                other{"dpcm {0}"}
+            }
+            dot-per-inch{
+                one{"dpi {0}"}
+                other{"dpi {0}"}
+            }
+            em{
+                one{"em {0}"}
+                other{"em {0}"}
+            }
+            megapixel{
+                dnam{"megafikzels"}
+                one{"MP {0}"}
+                other{"MP {0}"}
+            }
+            pixel{
+                dnam{"fikzels"}
+                one{"px {0}"}
+                other{"px {0}"}
+            }
+            pixel-per-centimeter{
+                dnam{"ppcm"}
+                one{"{0} ppcm"}
+                other{"{0} ppcm"}
+            }
+            pixel-per-inch{
+                one{"ppi {0}"}
+                other{"ppi {0}"}
+            }
+        }
+        length{
+            astronomical-unit{
+                one{"au {0}"}
+                other{"au {0}"}
+            }
+            centimeter{
+                one{"cm {0}"}
+                other{"cm {0}"}
+            }
+            decimeter{
+                one{"dm {0}"}
+                other{"dm {0}"}
+            }
+            earth-radius{
+                one{"R⊕ {0}"}
+                other{"R⊕ {0}"}
+            }
+            foot{
+                dnam{"ƙafafu"}
+                one{"ƙf {0}"}
+                other{"ƙf {0}"}
+                per{"{0}/ƙf"}
+            }
+            inch{
+                dnam{"incina"}
+                one{"in {0}"}
+                other{"in {0}"}
+            }
+            kilometer{
+                one{"km {0}"}
+                other{"{0} km"}
+            }
+            light-year{
+                dnam{"light yrs"}
+                one{"ly {0}"}
+                other{"ly {0}"}
+            }
+            meter{
+                dnam{"m"}
+                one{"m {0}"}
+                other{"m {0}"}
+            }
+            micrometer{
+                dnam{"µmeters"}
+                one{"µm {0}"}
+                other{"µm {0}"}
+            }
+            mile{
+                dnam{"mil-mil"}
+                one{"mi {0}"}
+                other{"mi {0}"}
+            }
+            mile-scandinavian{
+                one{"smi {0}"}
+                other{"smi {0}"}
+            }
+            millimeter{
+                one{"mm {0}"}
+                other{"mm {0}"}
+            }
+            nanometer{
+                one{"nm {0}"}
+                other{"nm {0}"}
+            }
+            nautical-mile{
+                one{"nmi {0}"}
+                other{"nmi {0}"}
+            }
+            parsec{
+                dnam{"fasekoki"}
+                one{"pc {0}"}
+                other{"pc {0}"}
+            }
+            picometer{
+                one{"pm {0}"}
+                other{"pm {0}"}
+            }
+            point{
+                dnam{"makuna"}
+                one{"mk {0}"}
+                other{"mk {0}"}
+            }
+            solar-radius{
+                dnam{"solar radii"}
+                one{"R☉ {0}"}
+                other{"R☉ {0}"}
+            }
+            yard{
+                dnam{"yaduka"}
+                one{"yd {0}"}
+                other{"yd {0}"}
+            }
+        }
+        light{
+            candela{
+                one{"cd {0}"}
+                other{"cd {0}"}
+            }
+            lux{
+                dnam{"lux"}
+                one{"lx {0}"}
+                other{"lx {0}"}
+            }
+            solar-luminosity{
+                dnam{"solar luminosities"}
+                one{"L☉ {0}"}
+                other{"L☉ {0}"}
+            }
+        }
+        mass{
+            carat{
+                dnam{"carats"}
+                one{"CD {0}"}
+                other{"CD {0}"}
+            }
+            dalton{
+                dnam{"daltons"}
+                one{"Da {0}"}
+                other{"daltons {0}"}
+            }
+            earth-mass{
+                dnam{"Earth masses"}
+                one{"M⊕ {0}"}
+                other{"M⊕ {0}"}
+            }
+            grain{
+                dnam{"ƙwaya"}
+                one{"ƙwaya {0}"}
+                other{"ƙwaya {0}"}
+            }
+            gram{
+                dnam{"giram"}
+                one{"g {0}"}
+                other{"g {0}"}
+            }
+            kilogram{
+                one{"kg {0}"}
+                other{"kg {0}"}
+            }
+            metric-ton{
+                one{"t {0}"}
+                other{"t {0}"}
+            }
+            microgram{
+                one{"µg {0}"}
+                other{"µg {0}"}
+            }
+            milligram{
+                one{"mg {0}"}
+                other{"mg {0}"}
+            }
+            ounce{
+                one{"oz {0}"}
+                other{"oz {0}"}
+            }
+            ounce-troy{
+                dnam{"ozar troy"}
+                one{"oz t {0}"}
+                other{"oz t {0}"}
+            }
+            pound{
+                dnam{"laba-laba"}
+                one{"lb {0}"}
+                other{"lb {0}"}
+            }
+            solar-mass{
+                dnam{"solar masses"}
+                one{"M☉ {0}"}
+                other{"M☉ {0}"}
+            }
+            ton{
+                dnam{"tan-tan"}
+                one{"tn {0}"}
+                other{"tn {0}"}
+            }
+        }
+        power{
+            gigawatt{
+                one{"GW {0}"}
+                other{"GW {0}"}
+            }
+            horsepower{
+                dnam{"ƙi"}
+                one{"ƙi {0}"}
+                other{"ƙi {0}"}
+            }
+            kilowatt{
+                one{"kW {0}"}
+                other{"kW {0}"}
+            }
+            megawatt{
+                one{"MW {0}"}
+                other{"MW {0}"}
+            }
+            milliwatt{
+                one{"mW {0}"}
+                other{"mW {0}"}
+            }
+            watt{
+                dnam{"wat-wat"}
+                one{"W {0}"}
+                other{"W {0}"}
+            }
+        }
+        pressure{
+            atmosphere{
+                dnam{"yny"}
+                one{"yny {0}"}
+                other{"yny {0}"}
+            }
+            bar{
+                dnam{"sanda"}
+                one{"sanda {0}"}
+                other{"sanda {0}"}
+            }
+            hectopascal{
+                one{"hPa {0}"}
+                other{"hPa {0}"}
+            }
+            inch-ofhg{
+                one{"inHg {0}"}
+                other{"inHg {0}"}
+            }
+            kilopascal{
+                one{"kPa {0}"}
+                other{"kPa {0}"}
+            }
+            megapascal{
+                one{"MPa {0}"}
+                other{"MPa {0}"}
+            }
+            millibar{
+                one{"mbar {0}"}
+                other{"mbar {0}"}
+            }
+            millimeter-ofhg{
+                one{"mmHg {0}"}
+                other{"mmHg {0}"}
+            }
+            pascal{
+                one{"Pa {0}"}
+                other{"Pa {0}"}
+            }
+            pound-force-per-square-inch{
+                one{"psi {0}"}
+                other{"psi {0}"}
+            }
+        }
+        speed{
+            kilometer-per-hour{
+                dnam{"km/saʼa"}
+                one{"km/s {0}"}
+                other{"km/s {0}"}
+            }
+            knot{
+                one{"kn {0}"}
+                other{"kn {0}"}
+            }
+            meter-per-second{
+                dnam{"mitoci/daƙ"}
+                one{"m/s {0}"}
+                other{"m/s {0}"}
+            }
+            mile-per-hour{
+                dnam{"mil-mil/saʼa"}
+                one{"mas {0}"}
+                other{"mas {0}"}
+            }
+        }
+        temperature{
+            celsius{
+                dnam{"dig. S"}
+                one{"°S{0}"}
+                other{"°S{0}"}
+            }
+            fahrenheit{
+                dnam{"dig. F"}
+                one{"F°{0}"}
+                other{"F°{0}"}
+            }
+            generic{
+                one{"°{0}"}
+                other{"°{0}"}
+            }
+            kelvin{
+                one{"K {0}"}
+                other{"K {0}"}
+            }
+        }
+        torque{
+            newton-meter{
+                one{"N⋅m {0}"}
+                other{"N⋅m {0}"}
+            }
+            pound-force-foot{
+                one{"lbf⋅ft {0}"}
+                other{"lbf⋅ft {0}"}
+            }
+        }
+        volume{
+            acre-foot{
+                dnam{"eka ƙf"}
+                one{"ek ƙf {0}"}
+                other{"ek ƙf {0}"}
+            }
+            barrel{
+                one{"gang {0}"}
+                other{"gang {0}"}
+            }
+            centiliter{
+                one{"cL {0}"}
+                other{"cL {0}"}
+            }
+            cubic-centimeter{
+                one{"cm³ {0}"}
+                other{"cm³ {0}"}
+            }
+            cubic-foot{
+                dnam{"ƙafafu³"}
+                one{"ƙf³ {0}"}
+                other{"ƙf³ {0}"}
+            }
+            cubic-inch{
+                dnam{"incina³"}
+                one{"in³ {0}"}
+                other{"in³ {0}"}
+            }
+            cubic-kilometer{
+                one{"km³ {0}"}
+                other{"km³ {0}"}
+            }
+            cubic-meter{
+                one{"m³ {0}"}
+                other{"m³ {0}"}
+            }
+            cubic-mile{
+                one{"mi³ {0}"}
+                other{"mi³ {0}"}
+            }
+            cubic-yard{
+                dnam{"yaduka³"}
+                one{"yd³ {0}"}
+                other{"yd³ {0}"}
+            }
+            cup{
+                dnam{"kofuna"}
+                one{"k {0}"}
+                other{"k {0}"}
+            }
+            cup-metric{
+                one{"mc {0}"}
+                other{"mc {0}"}
+            }
+            deciliter{
+                one{"dL {0}"}
+                other{"dL {0}"}
+            }
+            dessert-spoon{
+                one{"dstspn {0}"}
+                other{"dstspn {0}"}
+            }
+            dessert-spoon-imperial{
+                one{"dstspn Imp {0}"}
+                other{"dstspn Imp {0}"}
+            }
+            dram{
+                one{"dram fl {0}"}
+                other{"dram fl {0}"}
+            }
+            drop{
+                dnam{"ɗigo"}
+                one{"ɗigo {0}"}
+                other{"ɗigo {0}"}
+            }
+            fluid-ounce{
+                dnam{"fl oz"}
+                one{"fl oz {0}"}
+                other{"fl oz {0}"}
+            }
+            fluid-ounce-imperial{
+                dnam{"Imp. fl oz"}
+                one{"fl oz Imp. {0}"}
+                other{"fl oz Imp. {0}"}
+            }
+            gallon{
+                dnam{"gal"}
+                one{"gal {0}"}
+                other{"gal {0}"}
+            }
+            gallon-imperial{
+                one{"gal Imp. {0}"}
+                other{"gal Imp.{0}"}
+            }
+            hectoliter{
+                one{"hL {0}"}
+                other{"hL {0}"}
+            }
+            jigger{
+                one{"jigger {0}"}
+                other{"jigger {0}"}
+            }
+            liter{
+                dnam{"litoci"}
+                one{"L {0}"}
+                other{"L {0}"}
+                per{"{0}/L"}
+            }
+            megaliter{
+                one{"ML {0}"}
+                other{"ML {0}"}
+            }
+            milliliter{
+                one{"mL {0}"}
+                other{"mL {0}"}
+            }
+            pinch{
+                one{"pinch {0}"}
+                other{"pinch {0}"}
+            }
+            pint{
+                dnam{"pints"}
+                one{"pt {0}"}
+                other{"pt {0}"}
+            }
+            pint-metric{
+                one{"mpt {0}"}
+                other{"mpt {0}"}
+            }
+            quart{
+                dnam{"qts"}
+                one{"qt {0}"}
+                other{"qt {0}"}
+            }
+            quart-imperial{
+                one{"qt Imp. {0}"}
+                other{"qt Imp. {0}"}
+            }
+            tablespoon{
+                dnam{"bckl"}
+                one{"bckl {0}"}
+                other{"bckl {0}"}
+            }
+            teaspoon{
+                dnam{"ƙmc"}
+                one{"ƙmc {0}"}
+                other{"{0} tsp"}
+            }
+        }
+    }
 }
diff --git a/icu4c/source/data/unit/haw.txt b/icu4c/source/data/unit/haw.txt
index 6ab5f26..28887bd 100644
--- a/icu4c/source/data/unit/haw.txt
+++ b/icu4c/source/data/unit/haw.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 haw{
-    Version{"37"}
     units{
         duration{
             day{
diff --git a/icu4c/source/data/unit/he.txt b/icu4c/source/data/unit/he.txt
index c201e4e..d675fc8 100644
--- a/icu4c/source/data/unit/he.txt
+++ b/icu4c/source/data/unit/he.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 he{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -546,6 +546,13 @@
             }
         }
         graphics{
+            dot{
+                dnam{"נקודה קטנה"}
+                many{"{0} נקודות קטנות"}
+                one{"{0} נקודה"}
+                other{"{0} נקודות קטנות"}
+                two{"{0} נקודות קטנות"}
+            }
             dot-per-centimeter{
                 dnam{"נקודות לסנטימטר"}
                 many{"‎{0} dpcm"}
@@ -619,6 +626,20 @@
                 other{"{0} דצימטרים"}
                 two{"{0} דצימטרים"}
             }
+            earth-radius{
+                dnam{"רדיוס כדור-הארץ"}
+                many{"{0} רדיוס כדור-הארץ"}
+                one{"רדיוס כדור-הארץ"}
+                other{"{0} רדיוס כדור-הארץ"}
+                two{"{0} רדיוס כדור-הארץ"}
+            }
+            fathom{
+                dnam{"פתום"}
+                many{"{0} פתום"}
+                one{"{0} פתום"}
+                other{"{0} פתום"}
+                two{"{0} פתום"}
+            }
             foot{
                 dnam{"רגל"}
                 many{"{0} רגל"}
@@ -627,6 +648,13 @@
                 per{"{0} לרגל"}
                 two{"{0} רגל"}
             }
+            furlong{
+                dnam{"פורלונג"}
+                many{"{0} פורלונג"}
+                one{"{0} פורלונג"}
+                other{"{0} פורלונג"}
+                two{"{0} פורלונג"}
+            }
             inch{
                 dnam{"אינץ׳"}
                 many{"{0} אינץ׳"}
@@ -737,6 +765,20 @@
             }
         }
         light{
+            candela{
+                dnam{"קנדלה"}
+                many{"{0} קנדלה"}
+                one{"קנדלה"}
+                other{"{0} קנדלה"}
+                two{"{0} קנדלה"}
+            }
+            lumen{
+                dnam{"לומן"}
+                many{"{0} לומן"}
+                one{"לומן {0}"}
+                other{"{0} לומן"}
+                two{"{0} לומן"}
+            }
             lux{
                 dnam{"לוקס"}
                 many{"{0} לוקס"}
@@ -770,6 +812,13 @@
                 other{"{0} M⊕"}
                 two{"{0} מסות כדור הארץ"}
             }
+            grain{
+                dnam{"גרעין"}
+                many{"{0} גרעינים"}
+                one{"גרעין {0}"}
+                other{"{0} גרעינים"}
+                two{"{0} גרעינים"}
+            }
             gram{
                 dnam{"גרם"}
                 many{"{0} גרם"}
@@ -1037,11 +1086,11 @@
                 two{"{0} ניוטון-מטר"}
             }
             pound-force-foot{
-                dnam{"כוח פאונד"}
-                many{"{0} כוח פאונד"}
-                one{"{0} כוח פאונד"}
-                other{"{0} כוח פאונד"}
-                two{"{0} כוח פאונד"}
+                dnam{"רגל-פאונד"}
+                many{"{0} רגל-פאונד"}
+                one{"{0} רגל-פאונד"}
+                other{"{0} רגל-פאונד"}
+                two{"{0} רגל-פאונד"}
             }
         }
         volume{
@@ -1059,6 +1108,13 @@
                 other{"{0} חביות"}
                 two{"{0} חביות"}
             }
+            bushel{
+                dnam{"בושל"}
+                many{"{0} בושל"}
+                one{"{0} בושל"}
+                other{"{0} בושל"}
+                two{"{0} בושל"}
+            }
             centiliter{
                 dnam{"סנטיליטר"}
                 many{"{0} סנטיליטר"}
@@ -1138,6 +1194,34 @@
                 other{"{0} דציליטר"}
                 two{"{0} דציליטר"}
             }
+            dessert-spoon{
+                dnam{"כפית קינוחים"}
+                many{"{0} כפיות קינוחים"}
+                one{"כפית קינוחים"}
+                other{"{0} כפיות קינוחים"}
+                two{"{0} כפיות קינוחים"}
+            }
+            dessert-spoon-imperial{
+                dnam{"כפית קינוחים בארה״ב"}
+                many{"{0} כפיות קינוחים בארה\u0022ב"}
+                one{"כפית קינוחים בארה״ב"}
+                other{"{0} כפיות קינוחים בארה\u0022ב"}
+                two{"{0} כפיות קינוחים בארה\u0022ב"}
+            }
+            dram{
+                dnam{"דראם אלכוהול"}
+                many{"{0} דראם אלכוהול"}
+                one{"דראם אלכוהול {0}"}
+                other{"{0} דראם אלכוהול"}
+                two{"{0} דראם אלכוהול"}
+            }
+            drop{
+                dnam{"טיפה"}
+                many{"{0} טיפות"}
+                one{"טיפה"}
+                other{"{0} טיפות"}
+                two{"{0} טיפות"}
+            }
             fluid-ounce{
                 dnam{"אונקיות נוזלים"}
                 many{"{0} אונקיות נוזלים"}
@@ -1175,6 +1259,13 @@
                 other{"{0} הקטוליטר"}
                 two{"{0} הקטוליטר"}
             }
+            jigger{
+                dnam{"ג׳יגר"}
+                many{"{0} ג'יגר"}
+                one{"ג'יגר {0}"}
+                other{"{0} ג'יגר"}
+                two{"{0} ג'יגר"}
+            }
             liter{
                 dnam{"ליטר"}
                 many{"{0} ליטר"}
@@ -1197,6 +1288,13 @@
                 other{"{0} מיליליטר"}
                 two{"{0} מיליליטר"}
             }
+            pinch{
+                dnam{"פינץ׳"}
+                many{"{0} פינץ'"}
+                one{"פינץ' {0}"}
+                other{"{0} פינץ'"}
+                two{"{0} פינץ'"}
+            }
             pint{
                 dnam{"פינט"}
                 many{"{0} פינט"}
@@ -1218,6 +1316,13 @@
                 other{"{0} קווארטות"}
                 two{"{0} קווארטות"}
             }
+            quart-imperial{
+                dnam{"קווארט אימפריאלי"}
+                many{"{0} קווארטות אימפריאליות"}
+                one{"קווארט אימפריאלי {0}"}
+                other{"{0} קווארטות אימפריאליות"}
+                two{"{0} קווארטות אימפריאליות"}
+            }
             tablespoon{
                 dnam{"כפות"}
                 many{"{0} כפות"}
@@ -2296,6 +2401,13 @@
             }
         }
         graphics{
+            dot{
+                dnam{"נקודה קטנה"}
+                many{"{0} נק′ קטנות"}
+                one{"{0} נק′ קטנה"}
+                other{"{0} נק′ קטנות"}
+                two{"{0} נק′ קטנות"}
+            }
             dot-per-centimeter{
                 many{"‎{0} dpcm"}
                 one{"‎{0} dpcm"}
@@ -2495,6 +2607,13 @@
                 other{"{0} CD"}
                 two{"{0} CD"}
             }
+            grain{
+                dnam{"גרעין"}
+                many{"{0} גרעינים"}
+                one{"גרעין {0}"}
+                other{"{0} גרעינים"}
+                two{"{0} גרעינים"}
+            }
             gram{
                 dnam{"גרם"}
                 many{"{0} גר׳"}
@@ -2818,6 +2937,13 @@
                 other{"{0} דצ״ל"}
                 two{"{0} דצ״ל"}
             }
+            drop{
+                dnam{"טיפה"}
+                many{"{0} טיפות"}
+                one{"טיפה"}
+                other{"{0} טיפות"}
+                two{"{0} טיפות"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 many{"‎{0} fl oz"}
@@ -2876,6 +3002,13 @@
                 other{"{0} מ״ל"}
                 two{"{0} מ״ל"}
             }
+            pinch{
+                dnam{"פינץ׳"}
+                many{"{0} פינץ'"}
+                one{"{0} פינץ'"}
+                other{"{0} פינץ'"}
+                two{"{0} פינץ'"}
+            }
             pint{
                 dnam{"פינט"}
                 many{"‎{0} pt"}
diff --git a/icu4c/source/data/unit/he_IL.txt b/icu4c/source/data/unit/he_IL.txt
index 7103953..21ee915 100644
--- a/icu4c/source/data/unit/he_IL.txt
+++ b/icu4c/source/data/unit/he_IL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/hi.txt b/icu4c/source/data/unit/hi.txt
index 509c873..03c7a60 100644
--- a/icu4c/source/data/unit/hi.txt
+++ b/icu4c/source/data/unit/hi.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hi{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -139,8 +139,8 @@
                 other{"{0} प्रति हज़ार"}
             }
             permillion{
-                dnam{"ppm"}
-                one{"{0} ppm"}
+                dnam{"हिस्सा प्रति दस लाख"}
+                one{"{0} हिस्सा प्रति दस लाख"}
                 other{"{0} हिस्सा प्रति दस लाख"}
             }
             permyriad{
@@ -408,6 +408,9 @@
             }
         }
         graphics{
+            dot{
+                dnam{"बिंदु"}
+            }
             dot-per-centimeter{
                 dnam{"बिंदु प्रति सेंटीमीटर"}
                 one{"{0} बिंदु प्रति सेंटीमीटर"}
@@ -459,12 +462,27 @@
                 one{"{0} डेसीमीटर"}
                 other{"{0} डेसीमीटर"}
             }
+            earth-radius{
+                dnam{"पृथ्वी की त्रिज्या"}
+                one{"{0} पृथ्वी की त्रिज्या"}
+                other{"{0} पृथ्वी की त्रिज्या"}
+            }
+            fathom{
+                dnam{"फ़ैदम"}
+                one{"{0} फ़ैदम"}
+                other{"{0} फ़ैदम"}
+            }
             foot{
                 dnam{"फ़ीट"}
                 one{"{0} फ़ुट"}
                 other{"{0} फ़ीट"}
                 per{"{0}/फ़ीट"}
             }
+            furlong{
+                dnam{"फ़र्लांग"}
+                one{"{0} फ़र्लांग"}
+                other{"{0} फ़र्लांग"}
+            }
             inch{
                 dnam{"इंच"}
                 one{"{0} इंच"}
@@ -545,6 +563,16 @@
             }
         }
         light{
+            candela{
+                dnam{"कैन्डेला"}
+                one{"{0} कैन्डेला"}
+                other{"{0} कैन्डेला"}
+            }
+            lumen{
+                dnam{"लुमेन"}
+                one{"{0} लुमेन"}
+                other{"{0} लुमेन"}
+            }
             lux{
                 dnam{"लक्स"}
                 one{"{0} लक्स"}
@@ -572,6 +600,11 @@
                 one{"{0} पृथ्वी द्रव्यमान"}
                 other{"{0} पृथ्वी द्रव्यमान"}
             }
+            grain{
+                dnam{"डेढ़ रत्ती"}
+                one{"{0} डेढ़ रत्ती"}
+                other{"{0} डेढ़ रत्ती"}
+            }
             gram{
                 dnam{"ग्राम"}
                 one{"{0} ग्राम"}
@@ -621,6 +654,11 @@
                 one{"{0} सौर द्रव्यमान"}
                 other{"{0} सौर द्रव्यमान"}
             }
+            stone{
+                dnam{"14 पौंड का बट्टा"}
+                one{"{0} 14 पौंड का बट्टा"}
+                other{"{0} 14 पौंड का बट्टा"}
+            }
             ton{
                 dnam{"टन"}
                 one{"{0} टन"}
@@ -778,6 +816,11 @@
                 one{"{0} बैरल"}
                 other{"{0} बैरल"}
             }
+            bushel{
+                dnam{"बुशल"}
+                one{"{0} बुशल"}
+                other{"{0} बुशल"}
+            }
             centiliter{
                 dnam{"सेंटीलीटर"}
                 one{"{0} सेंटीलीटर"}
@@ -835,6 +878,26 @@
                 one{"{0} डेसीलीटर"}
                 other{"{0} डेसीलीटर"}
             }
+            dessert-spoon{
+                dnam{"डेज़र्ट स्पून"}
+                one{"{0} डेज़र्ट स्पून"}
+                other{"{0} डेज़र्ट स्पून"}
+            }
+            dessert-spoon-imperial{
+                dnam{"इम्पीरियल डेज़र्टस्पून"}
+                one{"{0} इम्पीरियल डेज़र्टस्पून"}
+                other{"{0} इम्पीरियल डेज़र्टस्पून"}
+            }
+            dram{
+                dnam{"ड्रम फ्लूइड"}
+                one{"{0} ड्रम"}
+                other{"{0} ड्रम"}
+            }
+            drop{
+                dnam{"बूंद"}
+                one{"{0} बूंद"}
+                other{"{0} बूंद"}
+            }
             fluid-ounce{
                 dnam{"फ़्लूइड आउंस"}
                 one{"{0} फ़्लूइड आउंस"}
@@ -862,6 +925,11 @@
                 one{"{0} हैक्टोलीटर"}
                 other{"{0} हैक्टोलीटर"}
             }
+            jigger{
+                dnam{"जिगर"}
+                one{"{0} जिगर"}
+                other{"{0} जिगर"}
+            }
             liter{
                 dnam{"लीटर"}
                 one{"{0} लीटर"}
@@ -878,10 +946,14 @@
                 one{"{0} मिलीलीटर"}
                 other{"{0} मिलीलीटर"}
             }
+            pinch{
+                dnam{"चुटकी"}
+                one{"{0} चुटकी"}
+                other{"{0} चुटकी"}
+            }
             pint{
-                dnam{"पिंट"}
-                one{"{0} पिंट"}
-                other{"{0} पिंट"}
+                one{"{0} पाइंट"}
+                other{"{0} पाइंट"}
             }
             pint-metric{
                 dnam{"मीट्रिक पिंट"}
@@ -893,6 +965,11 @@
                 one{"{0} क्वार्ट"}
                 other{"{0} क्वार्ट"}
             }
+            quart-imperial{
+                dnam{"क्वार्ट इम्पीरियल"}
+                one{"{0} क्वार्ट इम्पीरियल"}
+                other{"{0} क्वार्ट इम्पीरियल"}
+            }
             tablespoon{
                 dnam{"टेबलस्पून"}
                 one{"{0} टेबलस्पून"}
@@ -1019,6 +1096,12 @@
                 other{"{0}वर्ष"}
             }
         }
+        graphics{
+            dot{
+                one{"{0}बिंदु"}
+                other{"{0}बिंदु"}
+            }
+        }
         length{
             centimeter{
                 dnam{"सें॰मी॰"}
@@ -1084,6 +1167,10 @@
                 one{"{0}#"}
                 other{"{0}#"}
             }
+            stone{
+                one{"{0} ला"}
+                other{"{0}st"}
+            }
         }
         power{
             horsepower{
@@ -1536,6 +1623,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"बिंदु"}
+                one{"{0} बिंदु"}
+                other{"{0} बिंदु"}
+            }
             megapixel{
                 dnam{"मेगापिक्सेल"}
             }
@@ -1560,12 +1652,22 @@
                 one{"{0} डे॰मी॰"}
                 other{"{0} डे॰मी॰"}
             }
+            fathom{
+                dnam{"फ़ैदम"}
+                one{"{0} फ़ैदम"}
+                other{"{0} फ़ैदम"}
+            }
             foot{
                 dnam{"फ़ीट"}
                 one{"{0} फ़ीट"}
                 other{"{0} फ़ीट"}
                 per{"{0}/फ़ीट"}
             }
+            furlong{
+                dnam{"फ़र्लांग"}
+                one{"{0} फ़र्लांग"}
+                other{"{0} फ़र्लांग"}
+            }
             inch{
                 dnam{"इंच"}
                 one{"{0} इंच"}
@@ -1658,6 +1760,11 @@
                 one{"{0} डाल्टन"}
                 other{"{0} डाल्टन"}
             }
+            grain{
+                dnam{"डे. रत्ती"}
+                one{"{0} डे. रत्ती"}
+                other{"{0} डेढ़ रत्ती"}
+            }
             gram{
                 dnam{"ग्राम"}
                 one{"{0} ग्रा॰"}
@@ -1702,6 +1809,11 @@
                 other{"{0} पौंड"}
                 per{"{0}/पौंड"}
             }
+            stone{
+                dnam{"14 पौ. का बट्टा"}
+                one{"{0} st"}
+                other{"{0} st"}
+            }
             ton{
                 dnam{"टन"}
                 one{"{0} टन"}
@@ -1854,6 +1966,11 @@
                 one{"{0} बैरल"}
                 other{"{0} बैरल"}
             }
+            bushel{
+                dnam{"बुशल"}
+                one{"{0} बुश."}
+                other{"{0} बुश."}
+            }
             centiliter{
                 dnam{"सें॰ली॰"}
                 one{"{0} सें॰ली॰"}
@@ -1911,6 +2028,26 @@
                 one{"{0} डे॰ली॰"}
                 other{"{0} डे॰ली॰"}
             }
+            dessert-spoon{
+                dnam{"डे. स्पून"}
+                one{"{0} डे. स्पून"}
+                other{"{0} डे. स्पून"}
+            }
+            dessert-spoon-imperial{
+                dnam{"इम्पी. डेज़र्टस्पून"}
+                one{"{0} इम्पी. डेज़र्टस्पून"}
+                other{"{0} इम्पी. डेज़र्टस्पून"}
+            }
+            dram{
+                dnam{"ड्रम फ्लूइड"}
+                one{"{0} ड्रम फ्लू."}
+                other{"{0} ड्रम फ्लू."}
+            }
+            drop{
+                dnam{"बूंद"}
+                one{"{0} बूंद"}
+                other{"{0} बूंद"}
+            }
             fluid-ounce{
                 dnam{"फ़्लूइड आउंस"}
                 one{"{0} फ़्लूइड आउंस"}
@@ -1933,6 +2070,11 @@
                 one{"{0} है॰ली॰"}
                 other{"{0} है॰ली॰"}
             }
+            jigger{
+                dnam{"जिगर"}
+                one{"{0} जिगर"}
+                other{"{0} जिगर"}
+            }
             liter{
                 dnam{"लीटर"}
                 one{"{0} ली॰"}
@@ -1949,10 +2091,15 @@
                 one{"{0} मि॰ ली॰"}
                 other{"{0} मि॰ ली॰"}
             }
+            pinch{
+                dnam{"चुटकी"}
+                one{"{0} चुटकी"}
+                other{"{0} चुटकी"}
+            }
             pint{
-                dnam{"पिंट"}
-                one{"{0} पिंट"}
-                other{"{0} पिंट"}
+                dnam{"पाइंट"}
+                one{"{0} पाइंट"}
+                other{"{0} पाइंट"}
             }
             pint-metric{
                 dnam{"मीट्रिक पिंट"}
@@ -1964,6 +2111,11 @@
                 one{"{0} क्वार्ट"}
                 other{"{0} क्वार्ट"}
             }
+            quart-imperial{
+                dnam{"क्वार्ट इम्पी."}
+                one{"{0} क. इम्पी."}
+                other{"{0} क. इम्पी."}
+            }
             tablespoon{
                 dnam{"टे॰ स्पून"}
                 one{"{0} टे॰ स्पून"}
diff --git a/icu4c/source/data/unit/hr.txt b/icu4c/source/data/unit/hr.txt
index 61aefe4..6ba0a4f 100644
--- a/icu4c/source/data/unit/hr.txt
+++ b/icu4c/source/data/unit/hr.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hr{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -202,10 +202,10 @@
         }
         coordinate{
             dnam{"kardinalni smjer"}
-            east{"{0}I"}
-            north{"{0}S"}
-            south{"{0}J"}
-            west{"{0}Z"}
+            east{"{0} istočno"}
+            north{"{0} sjeverno"}
+            south{"{0} južno"}
+            west{"{0} zapadno"}
         }
         digital{
             bit{
@@ -479,6 +479,12 @@
             }
         }
         graphics{
+            dot{
+                dnam{"točka"}
+                few{"{0} točke"}
+                one{"{0} točka"}
+                other{"{0} točaka"}
+            }
             dot-per-centimeter{
                 dnam{"točke po centimetru"}
                 few{"{0} točke po centimetru"}
@@ -542,6 +548,12 @@
                 one{"{0} decimetar"}
                 other{"{0} decimetara"}
             }
+            earth-radius{
+                dnam{"srednji polumjer Zemlje"}
+                few{"{0} srednja polumjera Zemlje"}
+                one{"{0} srednji polumjer Zemlje"}
+                other{"{0} srednjih polumjera Zemlje"}
+            }
             fathom{
                 dnam{"hvati"}
                 few{"{0} hvata"}
@@ -638,9 +650,9 @@
             }
             point{
                 dnam{"točke"}
-                few{"{0} točke"}
-                one{"{0} točka"}
-                other{"{0} točaka"}
+                few{"{0} tipografske točke"}
+                one{"{0} tipografska točka"}
+                other{"{0} tipografskih točaka"}
             }
             solar-radius{
                 dnam{"Sunčevi polumjeri"}
@@ -656,6 +668,18 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                few{"{0} kandele"}
+                one{"{0} kandela"}
+                other{"{0} kandela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                few{"{0} lumena"}
+                one{"{0} lumen"}
+                other{"{0} lumena"}
+            }
             lux{
                 dnam{"luksi"}
                 few{"{0} luksa"}
@@ -688,6 +712,11 @@
                 one{"{0} Zemljina masa"}
                 other{"{0} Zemljinih masa"}
             }
+            grain{
+                few{"{0} graina"}
+                one{"{0} gr"}
+                other{"{0} graina"}
+            }
             gram{
                 dnam{"grami"}
                 few{"{0} grama"}
@@ -1012,6 +1041,30 @@
                 one{"{0} decilitar"}
                 other{"{0} decilitara"}
             }
+            dessert-spoon{
+                dnam{"desertna žličica"}
+                few{"{0} desertne žličice"}
+                one{"{0} desertna žličica"}
+                other{"{0} desertnih žličica"}
+            }
+            dessert-spoon-imperial{
+                dnam{"imperijalna desertna žličica"}
+                few{"{0} imperijalne desertne žličice"}
+                one{"{0} imperijalna desertna žličica"}
+                other{"{0} imperijalnih desertnih žličica"}
+            }
+            dram{
+                dnam{"dram tekućine"}
+                few{"{0} drama tekućine"}
+                one{"{0} dram tekućine"}
+                other{"{0} drama tekućine"}
+            }
+            drop{
+                dnam{"kap"}
+                few{"{0} kapi"}
+                one{"{0} kap"}
+                other{"{0} kapi"}
+            }
             fluid-ounce{
                 dnam{"tekuće unce"}
                 few{"{0} tekuće unce"}
@@ -1044,6 +1097,11 @@
                 one{"{0} hektolitar"}
                 other{"{0} hektolitara"}
             }
+            jigger{
+                few{"{0} jiggera"}
+                one{"{0} jiggera"}
+                other{"{0} jiggera"}
+            }
             liter{
                 dnam{"litre"}
                 few{"{0} litre"}
@@ -1063,6 +1121,12 @@
                 one{"{0} mililitar"}
                 other{"{0} mililitara"}
             }
+            pinch{
+                dnam{"prstohvat"}
+                few{"{0} prstohvata"}
+                one{"{0} prstohvat"}
+                other{"{0} prstohvata"}
+            }
             pint{
                 dnam{"pinte"}
                 few{"{0} pinte"}
@@ -1081,6 +1145,12 @@
                 one{"{0} četvrtina"}
                 other{"{0} četvrtina"}
             }
+            quart-imperial{
+                dnam{"imperijalna četvrtina"}
+                few{"{0} imperijalne četvrtine"}
+                one{"{0} imperijalna četvrtina"}
+                other{"{0} imperijalne četvrtine"}
+            }
             tablespoon{
                 dnam{"žlice"}
                 few{"{0} žlice"}
@@ -1970,10 +2040,10 @@
         }
         coordinate{
             dnam{"smjer"}
-            east{"{0}I"}
-            north{"{0}S"}
-            south{"{0}J"}
-            west{"{0}Z"}
+            east{"{0} I"}
+            north{"{0} S"}
+            south{"{0} J"}
+            west{"{0} Z"}
         }
         digital{
             bit{
@@ -2227,6 +2297,12 @@
             }
         }
         graphics{
+            dot{
+                dnam{"točka"}
+                few{"{0} točke"}
+                one{"{0} točka"}
+                other{"{0} točaka"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 few{"{0} dpcm"}
@@ -2290,6 +2366,12 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                few{"{0} R⊕"}
+                one{"{0} R⊕"}
+                other{"{0} R⊕"}
+            }
             fathom{
                 dnam{"hv"}
                 few{"{0} hv"}
@@ -2415,6 +2497,12 @@
             dalton{
                 dnam{"daltoni"}
             }
+            grain{
+                dnam{"gr"}
+                few{"{0} gr"}
+                one{"{0} gr"}
+                other{"{0} gr"}
+            }
             gram{
                 dnam{"g"}
                 few{"{0} g"}
@@ -2709,6 +2797,30 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"žličica"}
+                few{"{0} des. žličice"}
+                one{"{0} des. žličica"}
+                other{"{0} des. žličica"}
+            }
+            dessert-spoon-imperial{
+                dnam{"imp. žličica"}
+                few{"{0} imp. žličice"}
+                one{"{0} imp. žličica"}
+                other{"{0} imp. žličica"}
+            }
+            dram{
+                dnam{"fl dr"}
+                few{"{0} fl dr"}
+                one{"{0} fl dr"}
+                other{"{0} fl dr"}
+            }
+            drop{
+                dnam{"kap"}
+                few{"{0} kapi"}
+                one{"{0} kap"}
+                other{"{0} kapi"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 few{"{0} fl oz"}
@@ -2741,6 +2853,11 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                few{"{0} jiggera"}
+                one{"{0} jiggera"}
+                other{"{0} jiggera"}
+            }
             liter{
                 dnam{"l"}
                 few{"{0} l"}
@@ -2760,6 +2877,12 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"prstohvat"}
+                few{"{0} prstohvata"}
+                one{"{0} prstohvat"}
+                other{"{0} prstohvata"}
+            }
             pint{
                 dnam{"pt"}
                 few{"{0} pt"}
diff --git a/icu4c/source/data/unit/hsb.txt b/icu4c/source/data/unit/hsb.txt
index d378c28..ba2bb9b 100644
--- a/icu4c/source/data/unit/hsb.txt
+++ b/icu4c/source/data/unit/hsb.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hsb{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/hu.txt b/icu4c/source/data/unit/hu.txt
index bede346..a05056c 100644
--- a/icu4c/source/data/unit/hu.txt
+++ b/icu4c/source/data/unit/hu.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hu{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -403,6 +403,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"képpont"}
+                one{"képpont"}
+                other{"{0} képpont"}
+            }
             dot-per-centimeter{
                 dnam{"pont per centiméter"}
                 one{"{0} pont per centiméter"}
@@ -456,12 +461,27 @@
                 one{"{0} deciméter"}
                 other{"{0} deciméter"}
             }
+            earth-radius{
+                dnam{"földsugár"}
+                one{"{0} földsugár"}
+                other{"{0} földsugár"}
+            }
+            fathom{
+                dnam{"öl"}
+                one{"{0} öl"}
+                other{"{0} öl"}
+            }
             foot{
                 dnam{"láb"}
                 one{"{0} láb"}
                 other{"{0} láb"}
                 per{"{0}/láb"}
             }
+            furlong{
+                dnam{"furlong"}
+                one{"{0} furlong"}
+                other{"{0} furlong"}
+            }
             inch{
                 dnam{"hüvelyk"}
                 one{"{0} hüvelyk"}
@@ -542,6 +562,16 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                one{"{0} kandela"}
+                other{"{0} kandela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                one{"{0} lumen"}
+                other{"{0} lumen"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
@@ -569,6 +599,11 @@
                 one{"{0} Föld-tömeg"}
                 other{"{0} Föld-tömeg"}
             }
+            grain{
+                dnam{"grain"}
+                one{"{0} grain"}
+                other{"{0} grain"}
+            }
             gram{
                 dnam{"gramm"}
                 one{"{0} gramm"}
@@ -624,9 +659,9 @@
                 other{"{0} stone"}
             }
             ton{
-                dnam{"tonna"}
-                one{"{0} tonna"}
-                other{"{0} tonna"}
+                dnam{"amerikai tonna"}
+                one{"{0} amerikai tonna"}
+                other{"{0} amerikai tonna"}
             }
         }
         power{
@@ -775,6 +810,11 @@
                 one{"{0} hordó"}
                 other{"{0} hordó"}
             }
+            bushel{
+                dnam{"véka"}
+                one{"{0} véka"}
+                other{"{0} véka"}
+            }
             centiliter{
                 dnam{"centiliter"}
                 one{"{0} centiliter"}
@@ -832,6 +872,26 @@
                 one{"{0} deciliter"}
                 other{"{0} deciliter"}
             }
+            dessert-spoon{
+                dnam{"desszertkanál"}
+                one{"{0} desszertkanál"}
+                other{"{0} desszertkanál"}
+            }
+            dessert-spoon-imperial{
+                dnam{"bir. desszertkanál"}
+                one{"{0} bir. desszertkanál"}
+                other{"{0} bir. desszertkanál"}
+            }
+            dram{
+                dnam{"dram"}
+                one{"{0} dram"}
+                other{"{0} dram"}
+            }
+            drop{
+                dnam{"csepp"}
+                one{"{0} csepp"}
+                other{"{0} csepp"}
+            }
             fluid-ounce{
                 dnam{"folyadékuncia"}
                 one{"{0} folyadékuncia"}
@@ -859,6 +919,11 @@
                 one{"{0} hektoliter"}
                 other{"{0} hektoliter"}
             }
+            jigger{
+                dnam{"adagolópohár"}
+                one{"{0} adagolópohár"}
+                other{"{0} adagolópohár"}
+            }
             liter{
                 dnam{"liter"}
                 one{"{0} liter"}
@@ -875,6 +940,11 @@
                 one{"{0} milliliter"}
                 other{"{0} milliliter"}
             }
+            pinch{
+                dnam{"csipet"}
+                one{"{0} csipet"}
+                other{"{0} csipet"}
+            }
             pint{
                 dnam{"pint"}
                 one{"{0} pint"}
@@ -890,6 +960,11 @@
                 one{"{0} quart"}
                 other{"{0} quart"}
             }
+            quart-imperial{
+                dnam{"birodalmi kvart"}
+                one{"{0} birodalmi kvart"}
+                other{"{0} birodalmi kvart"}
+            }
             tablespoon{
                 dnam{"evőkanál"}
                 one{"{0} evőkanál"}
@@ -995,8 +1070,8 @@
                 per{"{0}/nap"}
             }
             hour{
-                dnam{"h"}
-                one{"{0} h"}
+                dnam{"ó"}
+                one{"{0} ó"}
                 other{"{0} h"}
                 per{"{0}/h"}
             }
@@ -1006,9 +1081,9 @@
                 other{"{0} ms"}
             }
             minute{
-                dnam{"min"}
-                one{"{0} min"}
-                other{"{0} min"}
+                dnam{"p"}
+                one{"{0} p"}
+                other{"{0} p"}
                 per{"{0}/min"}
             }
             month{
@@ -1456,9 +1531,9 @@
             }
             hour{
                 dnam{"h"}
-                one{"{0} h"}
-                other{"{0} h"}
-                per{"{0}/h"}
+                one{"{0} ó"}
+                other{"{0} ó"}
+                per{"{0}/ó"}
             }
             microsecond{
                 dnam{"μs"}
@@ -1471,10 +1546,10 @@
                 other{"{0} ms"}
             }
             minute{
-                dnam{"min"}
-                one{"{0} min"}
-                other{"{0} min"}
-                per{"{0}/min"}
+                dnam{"p"}
+                one{"{0} p"}
+                other{"{0} p"}
+                per{"{0}/p"}
             }
             month{
                 dnam{"hónap"}
@@ -1588,6 +1663,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"képpont"}
+                one{"{0} képpont"}
+                other{"{0} képpont"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 one{"{0} dpcm"}
@@ -1622,12 +1702,22 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            fathom{
+                dnam{"öl"}
+                one{"{0} öl"}
+                other{"{0} öl"}
+            }
             foot{
                 dnam{"láb"}
                 one{"{0} láb"}
                 other{"{0} láb"}
                 per{"{0}/láb"}
             }
+            furlong{
+                dnam{"furlong"}
+                one{"{0} fur"}
+                other{"{0} fur"}
+            }
             inch{
                 dnam{"hüvelyk"}
                 one{"{0} hüvelyk"}
@@ -1718,6 +1808,11 @@
                 one{"{0} Kt"}
                 other{"{0} Kt"}
             }
+            grain{
+                dnam{"grain"}
+                one{"{0} grain"}
+                other{"{0} grain"}
+            }
             gram{
                 dnam{"gram"}
                 one{"{0} g"}
@@ -1823,8 +1918,8 @@
             }
             millimeter-ofhg{
                 dnam{"Hgmm"}
-                one{"{0} mm Hg"}
-                other{"{0} mm Hg"}
+                one{"{0} Hgmm"}
+                other{"{0} Hgmm"}
             }
             pascal{
                 dnam{"Pa"}
@@ -1899,6 +1994,11 @@
                 one{"{0} hordó"}
                 other{"{0} hordó"}
             }
+            bushel{
+                dnam{"véka"}
+                one{"{0} véka"}
+                other{"{0} véka"}
+            }
             centiliter{
                 dnam{"cl"}
                 one{"{0} cl"}
@@ -1956,6 +2056,26 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"desszertkanál"}
+                one{"{0} desszertkanál"}
+                other{"{0} desszertkanál"}
+            }
+            dessert-spoon-imperial{
+                dnam{"bir. desszertkanál"}
+                one{"{0} bir. desszertkanál"}
+                other{"{0} bir. desszertkanál"}
+            }
+            dram{
+                dnam{"fluid dram"}
+                one{"{0} fl dram"}
+                other{"{0} fl dram"}
+            }
+            drop{
+                dnam{"csepp"}
+                one{"{0} csepp"}
+                other{"{0} csepp"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -1983,6 +2103,11 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"adagolópohár"}
+                one{"{0} adagolópohár"}
+                other{"{0} adagolópohár"}
+            }
             liter{
                 dnam{"l"}
                 one{"{0} l"}
@@ -1999,6 +2124,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"csipet"}
+                one{"{0} csipet"}
+                other{"{0} csipet"}
+            }
             pint{
                 dnam{"pt"}
                 one{"{0} pt"}
@@ -2014,6 +2144,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"bir. qt"}
+                one{"{0} bir. qt"}
+                other{"{0} bir. qt"}
+            }
             tablespoon{
                 dnam{"ek."}
                 one{"{0} ek."}
diff --git a/icu4c/source/data/unit/hy.txt b/icu4c/source/data/unit/hy.txt
index dbedd4a..e7164ee 100644
--- a/icu4c/source/data/unit/hy.txt
+++ b/icu4c/source/data/unit/hy.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hy{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -408,6 +408,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"կետ"}
+                one{"{0} կետ"}
+                other{"{0} կետ"}
+            }
             dot-per-centimeter{
                 dnam{"կետեր սանտիմետրի վրա"}
                 one{"{0} կետ սանտիմետրի վրա"}
@@ -465,6 +470,10 @@
                 other{"{0} ֆուտ"}
                 per{"{0} ֆուտի վրա"}
             }
+            furlong{
+                one{"{0} ֆուրլոնգ"}
+                other{"{0} ֆուրլոնգ"}
+            }
             inch{
                 dnam{"մատնաչափեր"}
                 one{"{0} մատնաչափ"}
@@ -529,9 +538,9 @@
                 other{"{0} պիկոմետր"}
             }
             point{
-                dnam{"կետեր"}
-                one{"{0} կետ"}
-                other{"{0} կետ"}
+                dnam{"pt"}
+                one{"{0} pt"}
+                other{"{0} pt"}
             }
             solar-radius{
                 dnam{"արեգակնային շառավիղներ"}
@@ -545,6 +554,11 @@
             }
         }
         light{
+            candela{
+                dnam{"կանդելա"}
+                one{"{0} կանդելա"}
+                other{"{0} կանդելա"}
+            }
             lux{
                 dnam{"լյուքսեր"}
                 one{"{0} լյուքս"}
@@ -572,6 +586,11 @@
                 one{"{0} երկրային զանգված"}
                 other{"{0} արևային զանգված"}
             }
+            grain{
+                dnam{"գրան"}
+                one{"{0} գրան"}
+                other{"{0} գրան"}
+            }
             gram{
                 dnam{"գրամներ"}
                 one{"{0} գրամ"}
@@ -621,6 +640,10 @@
                 one{"{0} արեգակնային զանգված"}
                 other{"{0} արեգակնային զանգված"}
             }
+            stone{
+                one{"{0} սթոուն"}
+                other{"{0} սթոուն"}
+            }
             ton{
                 dnam{"ամերիկյան տոննաներ"}
                 one{"{0} ամերիկյան տոննա"}
@@ -778,6 +801,11 @@
                 one{"{0} տակառ"}
                 other{"{0} տակառ"}
             }
+            bushel{
+                dnam{"բուշել"}
+                one{"{0} բուշել"}
+                other{"{0} բուշել"}
+            }
             centiliter{
                 dnam{"սանտիլիտրեր"}
                 one{"{0} սանտիլիտր"}
@@ -835,6 +863,24 @@
                 one{"{0} դեցիլիտր"}
                 other{"{0} դեցիլիտր"}
             }
+            dessert-spoon{
+                one{"{0} աղանդերի գդալ"}
+                other{"{0} աղանդերի գդալ"}
+            }
+            dessert-spoon-imperial{
+                one{"{0} անգլիական աղանդերի գդալ"}
+                other{"{0} անգլիական աղանդերի գդալ"}
+            }
+            dram{
+                dnam{"դրամ"}
+                one{"{0} դրամ"}
+                other{"{0} դրամ"}
+            }
+            drop{
+                dnam{"կաթիլ"}
+                one{"{0} կաթիլ"}
+                other{"{0} կաթիլ"}
+            }
             fluid-ounce{
                 dnam{"հեղուկ ունկիներ"}
                 one{"{0} հեղուկ ունկի"}
@@ -862,6 +908,11 @@
                 one{"{0} հեկտոլիտր"}
                 other{"{0} հեկտոլիտր"}
             }
+            jigger{
+                dnam{"ջիգեր"}
+                one{"{0} ջիգեր"}
+                other{"{0} ջիգեր"}
+            }
             liter{
                 dnam{"լիտրեր"}
                 one{"{0} լիտր"}
@@ -878,6 +929,11 @@
                 one{"{0} միլիլիտր"}
                 other{"{0} միլիլիտր"}
             }
+            pinch{
+                dnam{"պտղունց"}
+                one{"{0} պտղունց"}
+                other{"{0} պտղունց"}
+            }
             pint{
                 dnam{"փինթեր"}
                 one{"{0} փինթ"}
@@ -893,6 +949,11 @@
                 one{"{0} քվարտ"}
                 other{"{0} քվարտ"}
             }
+            quart-imperial{
+                dnam{"անգլիական քվարտ"}
+                one{"{0} անգլիական քվարտ"}
+                other{"{0} անգլիական քվարտ"}
+            }
             tablespoon{
                 dnam{"ճաշի գդալ"}
                 one{"{0} ճաշի գդալ"}
@@ -964,9 +1025,9 @@
         }
         consumption{
             liter-per-100-kilometer{
-                dnam{"լ/100 կմ"}
-                one{"{0} լ/100 կմ"}
-                other{"{0} լ/100 կմ"}
+                dnam{"Լ/100 կմ"}
+                one{"{0} Լ/100 կմ"}
+                other{"{0} Լ/100 կմ"}
             }
         }
         coordinate{
@@ -1287,8 +1348,8 @@
             }
             permillion{
                 dnam{"մասնիկ/միլիոն"}
-                one{"{0} մասնիկ/միլիոն"}
-                other{"{0} մասնիկ/միլիոն"}
+                one{"{0} մմվ"}
+                other{"{0} մմվ"}
             }
             permyriad{
                 dnam{"‱"}
@@ -1298,9 +1359,9 @@
         }
         consumption{
             liter-per-100-kilometer{
-                dnam{"լ/100 կմ"}
-                one{"{0} լ/100 կմ"}
-                other{"{0} լ/100 կմ"}
+                dnam{"Լ/100 կմ"}
+                one{"{0} Լ/100 կմ"}
+                other{"{0} Լ/100 կմ"}
             }
             liter-per-kilometer{
                 dnam{"լ/կմ"}
@@ -1474,6 +1535,11 @@
             }
         }
         energy{
+            british-thermal-unit{
+                dnam{"ԲՋՄ"}
+                one{"{0} Բջմ"}
+                other{"{0} Բջմ"}
+            }
             calorie{
                 dnam{"կալ"}
                 one{"{0} կալ"}
@@ -1550,6 +1616,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"կետ"}
+                one{"{0} կետ"}
+                other{"{0} կետ"}
+            }
             dot-per-centimeter{
                 dnam{"կսմ"}
                 one{"{0} կսմ"}
@@ -1598,12 +1669,22 @@
                 one{"{0} դմ"}
                 other{"{0} դմ"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                one{"{0} R⊕"}
+                other{"{0} R⊕"}
+            }
             foot{
                 dnam{"ֆտ"}
                 one{"{0} ֆտ"}
                 other{"{0} ֆտ"}
                 per{"{0}/ֆտ"}
             }
+            furlong{
+                dnam{"ֆուրլոնգ"}
+                one{"{0} ֆուրլ․"}
+                other{"{0} ֆուրլ․"}
+            }
             inch{
                 dnam{"մատ"}
                 one{"{0} մատ"}
@@ -1668,9 +1749,8 @@
                 other{"{0} պմ"}
             }
             point{
-                dnam{"կտ"}
-                one{"{0} կտ"}
-                other{"{0} կտ"}
+                one{"{0} pt"}
+                other{"{0} pt"}
             }
             solar-radius{
                 dnam{"R☉"}
@@ -1684,6 +1764,16 @@
             }
         }
         light{
+            candela{
+                dnam{"կդ"}
+                one{"{0} կդ"}
+                other{"{0} կդ"}
+            }
+            lumen{
+                dnam{"լմ"}
+                one{"{0} լմ"}
+                other{"{0} լմ"}
+            }
             lux{
                 dnam{"լք"}
                 one{"{0} լք"}
@@ -1701,6 +1791,11 @@
                 one{"{0} դա"}
                 other{"{0} դա"}
             }
+            grain{
+                dnam{"գրան"}
+                one{"{0} գրան"}
+                other{"{0} գրան"}
+            }
             gram{
                 dnam{"գ"}
                 one{"{0} գ"}
@@ -1745,6 +1840,11 @@
                 other{"{0} ֆունտ"}
                 per{"{0}/ֆունտ"}
             }
+            stone{
+                dnam{"սթոուն"}
+                one{"{0} սթոուն"}
+                other{"{0} սթոուն"}
+            }
             ton{
                 dnam{"ամեր․ տ"}
                 one{"{0} ամեր․ տ"}
@@ -1959,6 +2059,26 @@
                 one{"{0} դլ"}
                 other{"{0} դլ"}
             }
+            dessert-spoon{
+                dnam{"ագ․"}
+                one{"{0} ագ․"}
+                other{"{0} ագ․"}
+            }
+            dessert-spoon-imperial{
+                dnam{"անգլ․ ագ․"}
+                one{"{0} անգլ․ ագ․"}
+                other{"{0} անգլ․ ագ․"}
+            }
+            dram{
+                dnam{"հեղուկ դրամ"}
+                one{"{0} հեղուկ դրամ"}
+                other{"{0} հեղուկ դրամ"}
+            }
+            drop{
+                dnam{"կաթիլ"}
+                one{"{0} կաթիլ"}
+                other{"{0} կաթիլ"}
+            }
             fluid-ounce{
                 dnam{"հղ․ ունկ․"}
                 one{"{0} հղ. ունկ․"}
@@ -1986,6 +2106,11 @@
                 one{"{0} հլ"}
                 other{"{0} հլ"}
             }
+            jigger{
+                dnam{"ջիգեր"}
+                one{"{0} ջիգեր"}
+                other{"{0} ջիգեր"}
+            }
             liter{
                 dnam{"լ"}
                 one{"{0} լ"}
@@ -2002,6 +2127,11 @@
                 one{"{0} մլ"}
                 other{"{0} մլ"}
             }
+            pinch{
+                dnam{"պտղունց"}
+                one{"{0} պտղունց"}
+                other{"{0} պտղունց"}
+            }
             pint{
                 dnam{"փինթեր"}
                 one{"{0} փինթ"}
@@ -2017,6 +2147,11 @@
                 one{"{0} քվարտ"}
                 other{"{0} քվարտ"}
             }
+            quart-imperial{
+                dnam{"անգլիական քվարտ"}
+                one{"{0} անգլիական քվարտ"}
+                other{"{0} անգլիական քվարտ"}
+            }
             tablespoon{
                 dnam{"ճգ."}
                 one{"{0} ճգ."}
diff --git a/icu4c/source/data/unit/ia.txt b/icu4c/source/data/unit/ia.txt
index e355a19..6e01a9c 100644
--- a/icu4c/source/data/unit/ia.txt
+++ b/icu4c/source/data/unit/ia.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ia{
-    Version{"37"}
     durationUnits{
         hm{"hh:mm"}
         hms{"hh:mm:ss"}
diff --git a/icu4c/source/data/unit/id.txt b/icu4c/source/data/unit/id.txt
index a742b27..4a7eca3 100644
--- a/icu4c/source/data/unit/id.txt
+++ b/icu4c/source/data/unit/id.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 id{
-    Version{"37"}
     durationUnits{
         hm{"h.mm"}
         hms{"h.mm.ss"}
@@ -136,10 +136,10 @@
         }
         coordinate{
             dnam{"arah mata angin"}
-            east{"{0}T"}
-            north{"{0}U"}
-            south{"{0}S"}
-            west{"{0}B"}
+            east{"{0} timur"}
+            north{"{0} utara"}
+            south{"{0} selatan"}
+            west{"{0} barat"}
         }
         digital{
             bit{
@@ -371,6 +371,10 @@
                 dnam{"desimeter"}
                 other{"{0} desimeter"}
             }
+            earth-radius{
+                dnam{"jari-jari Bumi"}
+                other{"{0} jari-jari Bumi"}
+            }
             fathom{
                 dnam{"depa"}
                 other{"{0} depa"}
@@ -449,6 +453,14 @@
             }
         }
         light{
+            candela{
+                dnam{"candela"}
+                other{"{0} candela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                other{"{0} lumen"}
+            }
             lux{
                 dnam{"lux"}
                 other{"{0} lux"}
@@ -471,6 +483,10 @@
                 dnam{"massa Bumi"}
                 other{"{0} massa Bumi"}
             }
+            grain{
+                dnam{"grain"}
+                other{"{0} grain"}
+            }
             gram{
                 dnam{"gram"}
                 other{"{0} gram"}
@@ -503,17 +519,21 @@
                 other{"{0} troy ons"}
             }
             pound{
-                dnam{"pon"}
-                other{"{0} pon"}
-                per{"{0} per pon"}
+                dnam{"pound"}
+                other{"{0} pound"}
+                per{"{0} per pound"}
             }
             solar-mass{
                 dnam{"massa Matahari"}
                 other{"{0} massa Matahari"}
             }
+            stone{
+                dnam{"stone"}
+                other{"{0} stone"}
+            }
             ton{
-                dnam{"ton"}
-                other{"{0} ton"}
+                dnam{"ton Amerika Serikat"}
+                other{"{0} ton Amerika Serikat"}
             }
         }
         power{
@@ -552,8 +572,8 @@
                 other{"{0} hektopascal"}
             }
             inch-ofhg{
-                dnam{"inci merkuri"}
-                other{"{0} inci merkuri"}
+                dnam{"inci raksa"}
+                other{"{0} inci raksa"}
             }
             kilopascal{
                 dnam{"kilopascal"}
@@ -568,16 +588,16 @@
                 other{"{0} milibar"}
             }
             millimeter-ofhg{
-                dnam{"milimeter merkuri"}
-                other{"{0} milimeter merkuri"}
+                dnam{"milimeter raksa"}
+                other{"{0} milimeter raksa"}
             }
             pascal{
                 dnam{"pascal"}
                 other{"{0} pascal"}
             }
             pound-force-per-square-inch{
-                dnam{"pon per inci persegi"}
-                other{"{0} pon per inci persegi"}
+                dnam{"pound per inci persegi"}
+                other{"{0} pound per inci persegi"}
             }
         }
         speed{
@@ -628,13 +648,17 @@
         }
         volume{
             acre-foot{
-                dnam{"acre-feet"}
-                other{"{0} acre-feet"}
+                dnam{"ekar kaki"}
+                other{"{0} ekar kaki"}
             }
             barrel{
                 dnam{"barrel"}
                 other{"{0} barrel"}
             }
+            bushel{
+                dnam{"gantang"}
+                other{"{0} gantang"}
+            }
             centiliter{
                 dnam{"sentiliter"}
                 other{"{0} sentiliter"}
@@ -681,6 +705,22 @@
                 dnam{"desiliter"}
                 other{"{0} desiliter"}
             }
+            dessert-spoon{
+                dnam{"sendok dessert"}
+                other{"{0} sendok dessert"}
+            }
+            dessert-spoon-imperial{
+                dnam{"sendok dessert Imp."}
+                other{"{0} sendok dessert Imp."}
+            }
+            dram{
+                dnam{"dram"}
+                other{"{0} dram"}
+            }
+            drop{
+                dnam{"tetes"}
+                other{"{0} tetes"}
+            }
             fluid-ounce{
                 dnam{"fluid ounce"}
                 other{"{0} fluid ounce"}
@@ -703,6 +743,10 @@
                 dnam{"hektoliter"}
                 other{"{0} hektoliter"}
             }
+            jigger{
+                dnam{"jigger"}
+                other{"{0} sloki"}
+            }
             liter{
                 dnam{"liter"}
                 other{"{0} liter"}
@@ -716,6 +760,10 @@
                 dnam{"mililiter"}
                 other{"{0} mililiter"}
             }
+            pinch{
+                dnam{"jumput"}
+                other{"{0} jumput"}
+            }
             pint{
                 dnam{"pint"}
                 other{"{0} pint"}
@@ -728,6 +776,10 @@
                 dnam{"quart"}
                 other{"{0} quart"}
             }
+            quart-imperial{
+                dnam{"quart Imp."}
+                other{"{0} quart Imp."}
+            }
             tablespoon{
                 dnam{"sendok makan"}
                 other{"{0} sendok makan"}
@@ -767,8 +819,8 @@
         }
         consumption{
             liter-per-100-kilometer{
-                dnam{"L/100km"}
-                other{"{0}L/100km"}
+                dnam{"L/100 km"}
+                other{"{0}L/100 km"}
             }
         }
         coordinate{
@@ -1069,8 +1121,8 @@
         }
         consumption{
             liter-per-100-kilometer{
-                dnam{"L/100km"}
-                other{"{0} L/100km"}
+                dnam{"L/100 km"}
+                other{"{0} L/100 km"}
             }
             liter-per-kilometer{
                 dnam{"liter/km"}
@@ -1087,10 +1139,10 @@
         }
         coordinate{
             dnam{"arah"}
-            east{"{0}T"}
-            north{"{0}U"}
-            south{"{0}S"}
-            west{"{0}B"}
+            east{"{0} T"}
+            north{"{0} U"}
+            south{"{0} S"}
+            west{"{0} B"}
         }
         digital{
             bit{
@@ -1373,6 +1425,14 @@
             }
         }
         light{
+            candela{
+                dnam{"cd"}
+                other{"{0} cd"}
+            }
+            lumen{
+                dnam{"lm"}
+                other{"{0} lm"}
+            }
             lux{
                 dnam{"lux"}
                 other{"{0} lx"}
@@ -1392,6 +1452,10 @@
             earth-mass{
                 dnam{"massa Bumi"}
             }
+            grain{
+                dnam{"grain"}
+                other{"{0} grain"}
+            }
             gram{
                 dnam{"gram"}
                 other{"{0} g"}
@@ -1424,7 +1488,7 @@
                 other{"{0} oz t"}
             }
             pound{
-                dnam{"pon"}
+                dnam{"pound"}
                 other{"{0} lb"}
                 per{"{0}/lb"}
             }
@@ -1435,8 +1499,8 @@
                 dnam{"stone"}
             }
             ton{
-                dnam{"ton"}
-                other{"{0} tn"}
+                dnam{"ton AS"}
+                other{"{0} tn AS"}
             }
         }
         power{
@@ -1483,8 +1547,8 @@
                 other{"{0} mbar"}
             }
             millimeter-ofhg{
-                dnam{"mm Hg"}
-                other{"{0} mm Hg"}
+                dnam{"mmHg"}
+                other{"{0} mmHg"}
             }
             pound-force-per-square-inch{
                 dnam{"psi"}
@@ -1535,6 +1599,9 @@
             barrel{
                 dnam{"barrel"}
             }
+            bushel{
+                dnam{"gantang"}
+            }
             centiliter{
                 dnam{"cL"}
                 other{"{0} cL"}
@@ -1581,6 +1648,13 @@
                 dnam{"dL"}
                 other{"{0} dL"}
             }
+            dram{
+                dnam{"dram cairan"}
+            }
+            drop{
+                dnam{"tetes"}
+                other{"{0} tetes"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 other{"{0} fl oz"}
@@ -1599,6 +1673,10 @@
                 dnam{"hL"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"sloki"}
+                other{"{0} sloki"}
+            }
             liter{
                 dnam{"liter"}
                 other{"{0} l"}
@@ -1612,6 +1690,10 @@
                 dnam{"mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"jumput"}
+                other{"{0} jumput"}
+            }
             pint{
                 dnam{"pint"}
                 other{"{0} pt"}
@@ -1624,6 +1706,10 @@
                 dnam{"qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"qt Imp."}
+                other{"{0} qt Imp."}
+            }
             tablespoon{
                 dnam{"sdm"}
                 other{"{0} sdm"}
diff --git a/icu4c/source/data/unit/id_ID.txt b/icu4c/source/data/unit/id_ID.txt
index 20daa23..63f19a2 100644
--- a/icu4c/source/data/unit/id_ID.txt
+++ b/icu4c/source/data/unit/id_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/ig.txt b/icu4c/source/data/unit/ig.txt
index 2b2dbfd..2b5212f 100644
--- a/icu4c/source/data/unit/ig.txt
+++ b/icu4c/source/data/unit/ig.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ig{
-    Version{"37"}
     units{
         duration{
             century{
@@ -23,5 +23,25 @@
                 dnam{"Ọtụtụ Afọ"}
             }
         }
+        length{
+            earth-radius{
+                dnam{"radius uwa"}
+            }
+        }
+        volume{
+            dessert-spoon{
+                dnam{"ngaji mégharia onu"}
+            }
+            dram{
+                dnam{"mmiri dram"}
+            }
+        }
+    }
+    unitsShort{
+        volume{
+            drop{
+                dnam{"dobé"}
+            }
+        }
     }
 }
diff --git a/icu4c/source/data/unit/ii.txt b/icu4c/source/data/unit/ii.txt
index e9f1c27..904db14 100644
--- a/icu4c/source/data/unit/ii.txt
+++ b/icu4c/source/data/unit/ii.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ii{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/in.txt b/icu4c/source/data/unit/in.txt
index 0233523..e2df169 100644
--- a/icu4c/source/data/unit/in.txt
+++ b/icu4c/source/data/unit/in.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 in{
     "%%ALIAS"{"id"}
 }
diff --git a/icu4c/source/data/unit/in_ID.txt b/icu4c/source/data/unit/in_ID.txt
index acec72c..03f2387 100644
--- a/icu4c/source/data/unit/in_ID.txt
+++ b/icu4c/source/data/unit/in_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 in_ID{
     "%%ALIAS"{"id_ID"}
 }
diff --git a/icu4c/source/data/unit/is.txt b/icu4c/source/data/unit/is.txt
index e62f151..6a7de88 100644
--- a/icu4c/source/data/unit/is.txt
+++ b/icu4c/source/data/unit/is.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 is{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -408,6 +408,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"punktur"}
+                one{"{0} punktur"}
+                other{"{0} punktur"}
+            }
             dot-per-centimeter{
                 dnam{"punktar á sentimetra"}
                 one{"{0} punktur á sentimetra"}
@@ -456,6 +461,11 @@
                 one{"{0} desimetri"}
                 other{"{0} desimetrar"}
             }
+            earth-radius{
+                dnam{"geisli jarðar"}
+                one{"{0} geisli jarðar"}
+                other{"{0} geisli jarðar"}
+            }
             fathom{
                 dnam{"faðmar"}
                 one{"{0} faðmur"}
@@ -552,6 +562,16 @@
             }
         }
         light{
+            candela{
+                dnam{"kerti"}
+                one{"{0} kerti"}
+                other{"{0} kerti"}
+            }
+            lumen{
+                dnam{"lúmen"}
+                one{"{0} lúmen"}
+                other{"{0} lúmen"}
+            }
             lux{
                 dnam{"lúx"}
                 one{"{0} lúx"}
@@ -578,6 +598,11 @@
                 one{"{0} jarðmassi"}
                 other{"{0} jarðmassar"}
             }
+            grain{
+                dnam{"ögn"}
+                one{"{0} ögn"}
+                other{"{0} agnir"}
+            }
             gram{
                 dnam{"grömm"}
                 one{"{0} gramm"}
@@ -774,7 +799,7 @@
             }
             pound-force-foot{
                 dnam{"pundfet"}
-                one{"{0} pundfet"}
+                one{"{0} pund-kraftur-fet"}
                 other{"{0} pundfet"}
             }
         }
@@ -789,6 +814,10 @@
                 one{"{0} tunna"}
                 other{"{0} tunnur"}
             }
+            bushel{
+                one{"{0} skeppa"}
+                other{"{0} skeppur"}
+            }
             centiliter{
                 dnam{"sentilítrar"}
                 one{"{0} sentilítri"}
@@ -846,6 +875,26 @@
                 one{"{0} desilítri"}
                 other{"{0} desilítrar"}
             }
+            dessert-spoon{
+                dnam{"ábætisskeið"}
+                one{"{0} ábætisskeið"}
+                other{"{0} ábætisskeið"}
+            }
+            dessert-spoon-imperial{
+                dnam{"bresk ábætisskeið"}
+                one{"{0} bresk ábætisskeið"}
+                other{"{0} bresk ábætisskeið"}
+            }
+            dram{
+                dnam{"dramm"}
+                one{"{0} dramm"}
+                other{"{0} drömm"}
+            }
+            drop{
+                dnam{"dropi"}
+                one{"{0} dropi"}
+                other{"{0} dropar"}
+            }
             fluid-ounce{
                 dnam{"vökvaúnsur"}
                 one{"{0} vökvaúnsa"}
@@ -873,6 +922,11 @@
                 one{"{0} hektólítri"}
                 other{"{0} hektólítrar"}
             }
+            jigger{
+                dnam{"sjúss"}
+                one{"{0} sjúss"}
+                other{"{0} sjússar"}
+            }
             liter{
                 dnam{"lítrar"}
                 one{"{0} lítri"}
@@ -889,6 +943,11 @@
                 one{"{0} millilítri"}
                 other{"{0} millilítrar"}
             }
+            pinch{
+                dnam{"klípa"}
+                one{"{0} klípa"}
+                other{"{0} klípur"}
+            }
             pint{
                 dnam{"hálfpottar"}
                 one{"{0} hálfpottur"}
@@ -904,6 +963,11 @@
                 one{"{0} kvart"}
                 other{"{0} kvartar"}
             }
+            quart-imperial{
+                dnam{"lagarmál"}
+                one{"{0} lagarmál"}
+                other{"{0} lagarmál"}
+            }
             tablespoon{
                 dnam{"matskeiðar"}
                 one{"{0} matskeið"}
@@ -1745,6 +1809,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"punktur"}
+                one{"{0} punktur"}
+                other{"{0} punktur"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 one{"{0} dpcm"}
@@ -1889,6 +1958,11 @@
             }
         }
         light{
+            candela{
+                dnam{"kerti"}
+                one{"{0} kerti"}
+                other{"{0} kerti"}
+            }
             lux{
                 dnam{"lúx"}
                 one{"{0} lx"}
@@ -1912,6 +1986,11 @@
             earth-mass{
                 dnam{"jarðmassar"}
             }
+            grain{
+                dnam{"ögn"}
+                one{"{0} ögn"}
+                other{"{0} agnir"}
+            }
             gram{
                 dnam{"grömm"}
                 one{"{0} g"}
@@ -2020,9 +2099,9 @@
                 other{"{0} hPa"}
             }
             inch-ofhg{
-                dnam{"inHg"}
-                one{"{0} inHg"}
-                other{"{0} inHg"}
+                dnam{"to Hg"}
+                one{"{0} to Hg"}
+                other{"{0} to Hg"}
             }
             millibar{
                 dnam{"mbar"}
@@ -2098,7 +2177,12 @@
             barrel{
                 dnam{"tunna"}
                 one{"{0} tunna"}
-                other{"{0} tunna"}
+                other{"{0} tunnur"}
+            }
+            bushel{
+                dnam{"skeppur"}
+                one{"{0} skeppa"}
+                other{"{0} skeppur"}
             }
             centiliter{
                 dnam{"cl"}
@@ -2157,6 +2241,26 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"ábætissk."}
+                one{"{0} ábætissk."}
+                other{"{0} ábætissk."}
+            }
+            dessert-spoon-imperial{
+                dnam{"bresk ábætissk."}
+                one{"{0} bresk ábætissk."}
+                other{"{0} bresk ábætissk."}
+            }
+            dram{
+                dnam{"dramm"}
+                one{"{0} dramm"}
+                other{"{0} drömm"}
+            }
+            drop{
+                dnam{"dropi"}
+                one{"{0} dropi"}
+                other{"{0} dropar"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -2184,6 +2288,11 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"sjúss"}
+                one{"{0} sjúss"}
+                other{"{0} sjússar"}
+            }
             liter{
                 dnam{"lítrar"}
                 one{"{0} l"}
@@ -2200,6 +2309,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"klípa"}
+                one{"{0} klípa"}
+                other{"{0} klípur"}
+            }
             pint{
                 dnam{"hálfp."}
                 one{"{0} hálfp."}
@@ -2215,6 +2329,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"lagarmál"}
+                one{"{0} lagarmál"}
+                other{"{0} lagarmál"}
+            }
             tablespoon{
                 dnam{"msk"}
                 one{"{0} msk"}
diff --git a/icu4c/source/data/unit/it.txt b/icu4c/source/data/unit/it.txt
index 92145ed..003b9c3 100644
--- a/icu4c/source/data/unit/it.txt
+++ b/icu4c/source/data/unit/it.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 it{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -106,6 +106,7 @@
         }
         compound{
             per{"{0} al {1}"}
+            times{"{0} {1}"}
         }
         concentr{
             karat{
@@ -408,6 +409,26 @@
             }
         }
         graphics{
+            dot{
+                dnam{"punto"}
+                one{"{0} punto"}
+                other{"{0} punti"}
+            }
+            dot-per-centimeter{
+                dnam{"punti per centimetro"}
+                one{"{0} punto per centimetro"}
+                other{"{0} punti per centimetro"}
+            }
+            dot-per-inch{
+                dnam{"punti per pollice"}
+                one{"{0} punto per pollice"}
+                other{"{0} punti per pollice"}
+            }
+            megapixel{
+                dnam{"megapixel"}
+                one{"{0} megapixel"}
+                other{"{0} megapixel"}
+            }
             pixel{
                 dnam{"pixel"}
                 one{"{0} pixel"}
@@ -418,6 +439,11 @@
                 one{"{0} pixel per centimetro"}
                 other{"{0} pixel per centimetro"}
             }
+            pixel-per-inch{
+                dnam{"pixel per pollice"}
+                one{"{0} pixel per pollice"}
+                other{"{0} pixel per pollice"}
+            }
         }
         length{
             astronomical-unit{
@@ -436,12 +462,27 @@
                 one{"{0} decimetro"}
                 other{"{0} decimetri"}
             }
+            earth-radius{
+                dnam{"raggio terrestre"}
+                one{"{0} raggio terrestre"}
+                other{"{0} raggi terrestri"}
+            }
+            fathom{
+                dnam{"braccia"}
+                one{"{0} braccio"}
+                other{"{0} braccia"}
+            }
             foot{
                 dnam{"piedi"}
                 one{"{0} piede"}
                 other{"{0} piedi"}
                 per{"{0} per piede"}
             }
+            furlong{
+                dnam{"furlong"}
+                one{"{0} furlong"}
+                other{"{0} furlong"}
+            }
             inch{
                 dnam{"pollici"}
                 one{"{0} pollice"}
@@ -507,8 +548,8 @@
             }
             point{
                 dnam{"punti"}
-                one{"{0} punto"}
-                other{"{0} punti"}
+                one{"{0} punto tipografico"}
+                other{"{0} punti tipografici"}
             }
             solar-radius{
                 dnam{"raggi solari"}
@@ -522,6 +563,16 @@
             }
         }
         light{
+            candela{
+                dnam{"candela"}
+                one{"{0} candela"}
+                other{"{0} candele"}
+            }
+            lumen{
+                dnam{"lumen"}
+                one{"{0} lumen"}
+                other{"{0} lumen"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
@@ -549,6 +600,11 @@
                 one{"{0} massa terrestre"}
                 other{"{0} masse terrestri"}
             }
+            grain{
+                dnam{"grano"}
+                one{"{0} grano"}
+                other{"{0} grani"}
+            }
             gram{
                 dnam{"grammi"}
                 one{"{0} grammo"}
@@ -598,6 +654,11 @@
                 one{"{0} massa solare"}
                 other{"{0} masse solari"}
             }
+            stone{
+                dnam{"stone"}
+                one{"{0} stone"}
+                other{"{0} stone"}
+            }
             ton{
                 dnam{"tonnellate"}
                 one{"{0} tonnellata"}
@@ -672,6 +733,11 @@
                 one{"{0} millimetro di mercurio"}
                 other{"{0} millimetri di mercurio"}
             }
+            pascal{
+                dnam{"pascal"}
+                one{"{0} pascal"}
+                other{"{0} pascal"}
+            }
             pound-force-per-square-inch{
                 dnam{"libbre per pollice quadrato"}
                 one{"{0} libbra per pollice quadrato"}
@@ -685,7 +751,7 @@
                 other{"{0} chilometri orari"}
             }
             knot{
-                dnam{"nodo"}
+                dnam{"nodi"}
                 one{"{0} nodo"}
                 other{"{0} nodi"}
             }
@@ -730,7 +796,7 @@
             }
             pound-force-foot{
                 dnam{"libbre-piede"}
-                one{"{0} libbra-piede"}
+                one{"{0} libbra-forza piede"}
                 other{"{0} libbre-piedi"}
             }
         }
@@ -807,6 +873,26 @@
                 one{"{0} decilitro"}
                 other{"{0} decilitri"}
             }
+            dessert-spoon{
+                dnam{"cucchiaino da dessert"}
+                one{"{0} cucchiaino da dessert"}
+                other{"{0} cucchiaini da dessert"}
+            }
+            dessert-spoon-imperial{
+                dnam{"cucchiaino da dessert imperiale"}
+                one{"{0} cucchiaino da dessert imperiale"}
+                other{"{0} cucchiaini da dessert imperiali"}
+            }
+            dram{
+                dnam{"dramma"}
+                one{"{0} dramma"}
+                other{"{0} dramme"}
+            }
+            drop{
+                dnam{"goccia"}
+                one{"{0} goccia"}
+                other{"{0} gocce"}
+            }
             fluid-ounce{
                 dnam{"once fluide"}
                 one{"{0} oncia fluida"}
@@ -834,6 +920,10 @@
                 one{"{0} ettolitro"}
                 other{"{0} ettolitri"}
             }
+            jigger{
+                one{"{0} jigger"}
+                other{"{0} jigger"}
+            }
             liter{
                 dnam{"litri"}
                 one{"{0} litro"}
@@ -850,6 +940,11 @@
                 one{"{0} millilitro"}
                 other{"{0} millilitri"}
             }
+            pinch{
+                dnam{"pizzico"}
+                one{"{0} pizzico"}
+                other{"{0} pizzichi"}
+            }
             pint{
                 dnam{"pinte"}
                 one{"{0} pinta"}
@@ -865,13 +960,18 @@
                 one{"{0} quarto"}
                 other{"{0} quarti"}
             }
+            quart-imperial{
+                dnam{"quarto imperiale"}
+                one{"{0} quarto imperiale"}
+                other{"{0} quarti imperiali"}
+            }
             tablespoon{
                 dnam{"cucchiai da tavola"}
                 one{"{0} cucchiaio da tavola"}
                 other{"{0} cucchiai da tavola"}
             }
             teaspoon{
-                dnam{"cucchiai da tè"}
+                dnam{"cucchiaio da tè"}
                 one{"{0} cucchiaio da tè"}
                 other{"{0} cucchiai da tè"}
             }
@@ -1108,6 +1208,7 @@
                 other{"{0}km³"}
             }
             cubic-mile{
+                dnam{"mi³"}
                 one{"{0}mi³"}
                 other{"{0}mi³"}
             }
@@ -1321,7 +1422,7 @@
                 other{"{0} MB"}
             }
             petabyte{
-                dnam{"PByte"}
+                dnam{"PB"}
                 one{"{0} PB"}
                 other{"{0} PB"}
             }
@@ -1491,6 +1592,13 @@
                 other{"{0} MHz"}
             }
         }
+        graphics{
+            dot{
+                dnam{"punto"}
+                one{"{0} p"}
+                other{"{0} p"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"au"}
@@ -1508,6 +1616,10 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            fathom{
+                one{"{0} fm"}
+                other{"{0} fm"}
+            }
             foot{
                 dnam{"ft"}
                 one{"{0} ft"}
@@ -1606,6 +1718,11 @@
                 one{"{0} Da"}
                 other{"{0} Da"}
             }
+            grain{
+                dnam{"grano"}
+                one{"{0} grano"}
+                other{"{0} grani"}
+            }
             gram{
                 dnam{"grammi"}
                 one{"{0} g"}
@@ -1847,6 +1964,16 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dram{
+                dnam{"dramma liquida"}
+                one{"{0} dr liq"}
+                other{"{0} dr liq"}
+            }
+            drop{
+                dnam{"goccia"}
+                one{"{0} goccia"}
+                other{"{0} gocce"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -1890,6 +2017,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"pizzico"}
+                one{"{0} pizzico"}
+                other{"{0} pizzichi"}
+            }
             pint{
                 dnam{"pt"}
                 one{"{0} pt"}
@@ -1905,6 +2037,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"imp qt"}
+                one{"{0} imp qt"}
+                other{"{0} imp qt"}
+            }
             tablespoon{
                 dnam{"tbsp"}
                 one{"{0} tbsp"}
diff --git a/icu4c/source/data/unit/iw.txt b/icu4c/source/data/unit/iw.txt
index d59865d..4aa2f62 100644
--- a/icu4c/source/data/unit/iw.txt
+++ b/icu4c/source/data/unit/iw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 iw{
     "%%ALIAS"{"he"}
 }
diff --git a/icu4c/source/data/unit/iw_IL.txt b/icu4c/source/data/unit/iw_IL.txt
index cf1666a..984aefd 100644
--- a/icu4c/source/data/unit/iw_IL.txt
+++ b/icu4c/source/data/unit/iw_IL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 iw_IL{
     "%%ALIAS"{"he_IL"}
 }
diff --git a/icu4c/source/data/unit/ja.txt b/icu4c/source/data/unit/ja.txt
index 235c7fa..bed6efd 100644
--- a/icu4c/source/data/unit/ja.txt
+++ b/icu4c/source/data/unit/ja.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ja{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -338,6 +338,9 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ドット"}
+            }
             dot-per-centimeter{
                 dnam{"ドット/cm"}
                 other{"{0} ドット/cm"}
@@ -380,6 +383,10 @@
                 dnam{"デシメートル"}
                 other{"{0} デシメートル"}
             }
+            earth-radius{
+                dnam{"地球半径"}
+                other{"{0} 地球半径"}
+            }
             fathom{
                 dnam{"ファゾム"}
                 other{"{0} ファゾム"}
@@ -458,6 +465,14 @@
             }
         }
         light{
+            candela{
+                dnam{"カンデラ"}
+                other{"{0} カンデラ"}
+            }
+            lumen{
+                dnam{"ルーメン"}
+                other{"{0} ルーメン"}
+            }
             lux{
                 dnam{"ルクス"}
                 other{"{0} ルクス"}
@@ -480,6 +495,10 @@
                 dnam{"地球質量"}
                 other{"{0} 地球質量"}
             }
+            grain{
+                dnam{"グレーン"}
+                other{"{0} グレーン"}
+            }
             gram{
                 dnam{"グラム"}
                 other{"{0} グラム"}
@@ -702,6 +721,22 @@
                 dnam{"デシリットル"}
                 other{"{0} デシリットル"}
             }
+            dessert-spoon{
+                dnam{"中さじ"}
+                other{"中さじ {0}"}
+            }
+            dessert-spoon-imperial{
+                dnam{"英デザートスプーン"}
+                other{"{0} 英デザートスプーン"}
+            }
+            dram{
+                dnam{"ドラム"}
+                other{"{0} ドラム"}
+            }
+            drop{
+                dnam{"滴"}
+                other{"{0} 滴"}
+            }
             fluid-ounce{
                 dnam{"液量オンス"}
                 other{"{0} 液量オンス"}
@@ -724,6 +759,10 @@
                 dnam{"ヘクトリットル"}
                 other{"{0} ヘクトリットル"}
             }
+            jigger{
+                dnam{"ジガー"}
+                other{"{0} ジガー"}
+            }
             liter{
                 dnam{"リットル"}
                 other{"{0} リットル"}
@@ -737,6 +776,10 @@
                 dnam{"ミリリットル"}
                 other{"{0} ミリリットル"}
             }
+            pinch{
+                dnam{"つまみ"}
+                other{"{0} つまみ"}
+            }
             pint{
                 dnam{"パイント"}
                 other{"{0} パイント"}
@@ -749,6 +792,10 @@
                 dnam{"クォート"}
                 other{"{0} クォート"}
             }
+            quart-imperial{
+                dnam{"英クォート"}
+                other{"{0} 英クォート"}
+            }
             tablespoon{
                 dnam{"大さじ"}
                 other{"大さじ {0}"}
@@ -1579,6 +1626,10 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ドット"}
+                other{"{0} ドット"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 other{"{0} dpcm"}
@@ -1622,6 +1673,10 @@
                 dnam{"デシメートル"}
                 other{"{0} dm"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                other{"{0} R⊕"}
+            }
             fathom{
                 dnam{"ファゾム"}
                 other{"{0} fth"}
@@ -1700,6 +1755,14 @@
             }
         }
         light{
+            candela{
+                dnam{"cd"}
+                other{"{0} cd"}
+            }
+            lumen{
+                dnam{"lm"}
+                other{"{0} lm"}
+            }
             lux{
                 dnam{"ルクス"}
                 other{"{0} lx"}
@@ -1722,6 +1785,10 @@
                 dnam{"地球質量"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"グレーン"}
+                other{"{0} グレーン"}
+            }
             gram{
                 dnam{"グラム"}
                 other{"{0} g"}
@@ -1944,6 +2011,22 @@
                 dnam{"デシリットル"}
                 other{"{0} dL"}
             }
+            dessert-spoon{
+                dnam{"中さじ"}
+                other{"中さじ {0}"}
+            }
+            dessert-spoon-imperial{
+                dnam{"英デザートスプーン"}
+                other{"{0} 英デザートスプーン"}
+            }
+            dram{
+                dnam{"液量ドラム"}
+                other{"{0} 液量ドラム"}
+            }
+            drop{
+                dnam{"滴"}
+                other{"{0} 滴"}
+            }
             fluid-ounce{
                 dnam{"液量オンス"}
                 other{"{0} fl oz"}
@@ -1966,6 +2049,10 @@
                 dnam{"ヘクトリットル"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"ジガー"}
+                other{"{0} ジガー"}
+            }
             liter{
                 dnam{"リットル"}
                 other{"{0} L"}
@@ -1979,6 +2066,10 @@
                 dnam{"ミリリットル"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"つまみ"}
+                other{"{0} つまみ"}
+            }
             pint{
                 dnam{"パイント"}
                 other{"{0} pt"}
@@ -1991,6 +2082,10 @@
                 dnam{"クォート"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"英クォート"}
+                other{"{0} qt Imp."}
+            }
             tablespoon{
                 dnam{"大さじ"}
                 other{"大さじ {0}"}
diff --git a/icu4c/source/data/unit/jgo.txt b/icu4c/source/data/unit/jgo.txt
index d1b4196..eb1aef7 100644
--- a/icu4c/source/data/unit/jgo.txt
+++ b/icu4c/source/data/unit/jgo.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jgo{
-    Version{"37"}
     units{
         duration{
             day{
diff --git a/icu4c/source/data/unit/jmc.txt b/icu4c/source/data/unit/jmc.txt
index a67dfa4..425a4ab 100644
--- a/icu4c/source/data/unit/jmc.txt
+++ b/icu4c/source/data/unit/jmc.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jmc{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/jv.txt b/icu4c/source/data/unit/jv.txt
index 8b45866..24be454 100644
--- a/icu4c/source/data/unit/jv.txt
+++ b/icu4c/source/data/unit/jv.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jv{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -50,37 +50,37 @@
                 other{"{0} hektar"}
             }
             square-centimeter{
-                dnam{"sentimeter persegi"}
-                other{"{0} sentimeter persegi"}
-                per{"{0} saben sentimeter persegi"}
+                dnam{"sentimeter pesagi"}
+                other{"{0} sentimeter pesagi"}
+                per{"{0} saben sentimeter pesagi"}
             }
             square-foot{
-                dnam{"kaki persegi"}
-                other{"{0} kaki persegi"}
+                dnam{"kaki pesagi"}
+                other{"{0} kaki pesagi"}
             }
             square-inch{
-                dnam{"inci persegi"}
-                other{"{0} inci persegi"}
-                per{"{0} saben inci persegi"}
+                dnam{"inci pesagi"}
+                other{"{0} inci pesagi"}
+                per{"{0} saben inci pesagi"}
             }
             square-kilometer{
-                dnam{"kilometer persegi"}
-                other{"{0} kilometer persegi"}
-                per{"{0} saben kilometer persegi"}
+                dnam{"kilometer pesagi"}
+                other{"{0} kilometer pesagi"}
+                per{"{0} saben kilometer pesagi"}
             }
             square-meter{
-                dnam{"meter persegi"}
-                other{"{0} meter persegi"}
-                per{"{0} saben meter persegi"}
+                dnam{"meter pesagi"}
+                other{"{0} meter pesagi"}
+                per{"{0} saben meter pesagi"}
             }
             square-mile{
-                dnam{"mil persegi"}
-                other{"{0} mil persegi"}
-                per{"{0} saben mil persegi"}
+                dnam{"mil pesagi"}
+                other{"{0} mil pesagi"}
+                per{"{0} saben mil pesagi"}
             }
             square-yard{
-                dnam{"yard persegi"}
-                other{"{0} yard persegi"}
+                dnam{"yard pesagi"}
+                other{"{0} yard pesagi"}
             }
         }
         compound{
@@ -329,6 +329,10 @@
             }
         }
         graphics{
+            dot{
+                dnam{"titik"}
+                other{"{0} titik"}
+            }
             dot-per-centimeter{
                 dnam{"titek saben sentimeter"}
                 other{"{0} titek saben sentimeter"}
@@ -363,11 +367,23 @@
                 dnam{"desimeter"}
                 other{"{0} desimeter"}
             }
+            earth-radius{
+                dnam{"radius donya"}
+                other{"{0} radius donya"}
+            }
+            fathom{
+                dnam{"fathoms"}
+                other{"{0} fathoms"}
+            }
             foot{
                 dnam{"kaki"}
                 other{"{0} kaki"}
                 per{"{0} saben kaki"}
             }
+            furlong{
+                dnam{"furlongs"}
+                other{"{0} furlongs"}
+            }
             inch{
                 dnam{"inci"}
                 other{"{0} inci"}
@@ -433,6 +449,14 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                other{"{0} kandela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                other{"{0} lumen"}
+            }
             lux{
                 dnam{"luk"}
                 other{"{0} luk"}
@@ -455,6 +479,10 @@
                 dnam{"massa Bumi"}
                 other{"{0} massa Bumi"}
             }
+            grain{
+                dnam{"wiji"}
+                other{"{0} wiji"}
+            }
             gram{
                 dnam{"gram"}
                 other{"{0} gram"}
@@ -495,6 +523,10 @@
                 dnam{"massa srengenge"}
                 other{"{0} massa srengenge"}
             }
+            stone{
+                dnam{"watu"}
+                other{"{0} watu"}
+            }
             ton{
                 dnam{"ton"}
                 other{"{0} ton"}
@@ -619,6 +651,10 @@
                 dnam{"barel"}
                 other{"{0} barel"}
             }
+            bushel{
+                dnam{"gantang"}
+                other{"{0} gantang"}
+            }
             centiliter{
                 dnam{"sentiliter"}
                 other{"{0} sentiliter"}
@@ -665,6 +701,22 @@
                 dnam{"desiliter"}
                 other{"{0} desiliter"}
             }
+            dessert-spoon{
+                dnam{"sendok es"}
+                other{"{0} sendok es"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Imp. sendok es"}
+                other{"{0} Imp. sendok es"}
+            }
+            dram{
+                dnam{"banyu dram"}
+                other{"{0} banyu dram"}
+            }
+            drop{
+                dnam{"tetes"}
+                other{"{0} tetes"}
+            }
             fluid-ounce{
                 dnam{"ons banyu"}
                 other{"{0} ons banyu"}
@@ -700,6 +752,10 @@
                 dnam{"mililiter"}
                 other{"{0} mililiter"}
             }
+            pinch{
+                dnam{"sak juwit"}
+                other{"{0} sak juwit"}
+            }
             pint{
                 dnam{"pin"}
                 other{"{0} pin"}
@@ -712,6 +768,10 @@
                 dnam{"seprapat galon"}
                 other{"{0} seprapat galon"}
             }
+            quart-imperial{
+                dnam{"Imp. seprapat galon"}
+                other{"{0} Imp. seprapat galon"}
+            }
             tablespoon{
                 dnam{"sendok mangan"}
                 other{"{0} sendok mangan"}
@@ -755,7 +815,7 @@
                 other{"{0}j"}
             }
             millisecond{
-                dnam{"md"}
+                dnam{"mdtk"}
                 other{"{0} md"}
             }
             minute{
@@ -834,7 +894,7 @@
             }
             meter-per-square-second{
                 dnam{"meter/detik²"}
-                other{"{0} meter/detik²"}
+                other{"{0} m/detik²"}
             }
         }
         angle{
@@ -874,8 +934,8 @@
                 per{"{0}/cm²"}
             }
             square-foot{
-                dnam{"kaki persegi"}
-                other{"{0} kaki persegi"}
+                dnam{"kaki pesagi"}
+                other{"{0} kaki pesagi"}
             }
             square-inch{
                 dnam{"inci²"}
@@ -1142,6 +1202,10 @@
             }
         }
         graphics{
+            dot{
+                dnam{"titik"}
+                other{"{0} titik"}
+            }
             dot-per-centimeter{
                 dnam{"tscm"}
                 other{"{0} tscm"}
@@ -1165,11 +1229,19 @@
                 dnam{"dm"}
                 other{"{0} dm"}
             }
+            fathom{
+                dnam{"fathoms"}
+                other{"{0} fth"}
+            }
             foot{
                 dnam{"kaki"}
                 other{"{0} kaki"}
                 per{"{0}/kaki"}
             }
+            furlong{
+                dnam{"furlongs"}
+                other{"{0} fur"}
+            }
             inch{
                 dnam{"inci"}
                 other{"{0} in"}
@@ -1197,10 +1269,6 @@
                 dnam{"mil"}
                 other{"{0} mil"}
             }
-            mile-scandinavian{
-                dnam{"mil-skandinavia"}
-                other{"{0} mil-skandinavia"}
-            }
             millimeter{
                 dnam{"mm"}
                 other{"{0} mm"}
@@ -1209,10 +1277,6 @@
                 dnam{"nm"}
                 other{"{0} nm"}
             }
-            nautical-mile{
-                dnam{"mil segoro"}
-                other{"{0} mil segoro"}
-            }
             parsec{
                 dnam{"parsek"}
                 other{"{0} ps"}
@@ -1234,6 +1298,10 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                other{"{0} kandela"}
+            }
             lux{
                 dnam{"luk"}
                 other{"{0} luk"}
@@ -1253,6 +1321,10 @@
             earth-mass{
                 dnam{"massa Bumi"}
             }
+            grain{
+                dnam{"wiji"}
+                other{"{0} wiji"}
+            }
             gram{
                 dnam{"gram"}
                 other{"{0} g"}
@@ -1269,7 +1341,6 @@
             }
             microgram{
                 dnam{"mikrogram"}
-                other{"{0} mikrogram"}
             }
             milligram{
                 dnam{"mg"}
@@ -1292,6 +1363,10 @@
             solar-mass{
                 dnam{"massa srengenge"}
             }
+            stone{
+                dnam{"watu"}
+                other{"{0} watu"}
+            }
             ton{
                 dnam{"ton"}
                 other{"{0} ton"}
@@ -1399,6 +1474,10 @@
             barrel{
                 dnam{"barel"}
             }
+            bushel{
+                dnam{"gantang"}
+                other{"{0} gantang"}
+            }
             centiliter{
                 dnam{"sentiliter"}
                 other{"{0} sentiliter"}
@@ -1439,12 +1518,27 @@
             }
             cup-metric{
                 dnam{"metrik kup"}
-                other{"{0} metrik kup"}
             }
             deciliter{
                 dnam{"dL"}
                 other{"{0} dL"}
             }
+            dessert-spoon{
+                dnam{"sendok es"}
+                other{"{0} sendok es"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Imp. sendok es"}
+                other{"{0} Imp. sendok es"}
+            }
+            dram{
+                dnam{"banyu dram"}
+                other{"{0} banyu dram"}
+            }
+            drop{
+                dnam{"tetes"}
+                other{"{0} tetes"}
+            }
             fluid-ounce{
                 dnam{"ons banyu"}
                 other{"{0} ons banyu"}
@@ -1460,7 +1554,7 @@
             }
             gallon-imperial{
                 dnam{"galon inggris"}
-                other{"{0} galon inggris"}
+                other{"{0} gal inggris"}
                 per{"{0}/galon inggris"}
             }
             hectoliter{
@@ -1480,6 +1574,10 @@
                 dnam{"mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"juwit"}
+                other{"{0} sak juwit"}
+            }
             pint{
                 dnam{"pin"}
                 other{"{0} pin"}
@@ -1492,6 +1590,10 @@
                 dnam{"seprapat galon"}
                 other{"{0} seprapat galon"}
             }
+            quart-imperial{
+                dnam{"Imp. seprapat galon"}
+                other{"{0} Imp. seprapat galon"}
+            }
             tablespoon{
                 dnam{"sdk mgn"}
                 other{"{0} sdk mgn"}
diff --git a/icu4c/source/data/unit/ka.txt b/icu4c/source/data/unit/ka.txt
index b540a85..9e3ffdd 100644
--- a/icu4c/source/data/unit/ka.txt
+++ b/icu4c/source/data/unit/ka.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ka{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -386,6 +386,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"წერტილი"}
+                one{"{0} წერტილი"}
+                other{"{0} წერტილი"}
+            }
             dot-per-centimeter{
                 dnam{"წერტილი სანტიმეტრზე"}
                 one{"{0} წერტილი სანტიმეტრზე"}
@@ -439,12 +444,27 @@
                 one{"{0} დეციმეტრი"}
                 other{"{0} დეციმეტრი"}
             }
+            earth-radius{
+                dnam{"დედამიწის რადიუსი"}
+                one{"{0} დედამიწის რადიუსი"}
+                other{"{0} დედამიწის რადიუსი"}
+            }
+            fathom{
+                dnam{"ფატომი"}
+                one{"{0} ფატომი"}
+                other{"{0} ფატომი"}
+            }
             foot{
                 dnam{"ფუტი"}
                 one{"{0} ფუტი"}
                 other{"{0} ფუტი"}
                 per{"{0} ფუტში"}
             }
+            furlong{
+                dnam{"ფურლონგი"}
+                one{"{0} ფურლონგი"}
+                other{"{0} ფურლონგი"}
+            }
             inch{
                 dnam{"დუიმი"}
                 one{"{0} დუიმი"}
@@ -513,6 +533,11 @@
                 one{"{0} პუნქტი"}
                 other{"{0} პუნქტი"}
             }
+            solar-radius{
+                dnam{"მზის რადიუსი"}
+                one{"{0} მზის რადიუსი"}
+                other{"{0} მზის რადიუსი"}
+            }
             yard{
                 dnam{"იარდი"}
                 one{"{0} იარდი"}
@@ -520,11 +545,26 @@
             }
         }
         light{
+            candela{
+                dnam{"კანდელა"}
+                one{"{0} კანდელა"}
+                other{"{0} კანდელა"}
+            }
+            lumen{
+                dnam{"ლუმენი"}
+                one{"{0} ლუმენი"}
+                other{"{0} ლუმენი"}
+            }
             lux{
                 dnam{"ლუქსი"}
                 one{"{0} ლუქსი"}
                 other{"{0} ლუქსი"}
             }
+            solar-luminosity{
+                dnam{"მზის სხივიერობა"}
+                one{"{0} მზის სხივიერობა"}
+                other{"{0} მზის სხივიერობა"}
+            }
         }
         mass{
             carat{
@@ -542,6 +582,11 @@
                 one{"{0} დედამიწის მასა"}
                 other{"{0} დედამიწის მასა"}
             }
+            grain{
+                dnam{"გრანი"}
+                one{"{0} გრანი"}
+                other{"{0} გრანი"}
+            }
             gram{
                 dnam{"გრამი"}
                 one{"{0} გრამი"}
@@ -591,6 +636,11 @@
                 one{"{0} მზის მასა"}
                 other{"{0} მზის მასა"}
             }
+            stone{
+                dnam{"სტოუნი"}
+                one{"{0} სტოუნი"}
+                other{"{0} სტოუნი"}
+            }
             ton{
                 dnam{"ტონა"}
                 one{"{0} ტონა"}
@@ -725,6 +775,18 @@
                 other{"{0} კელვინის გრადუსი"}
             }
         }
+        torque{
+            newton-meter{
+                dnam{"ნიუტონ-მეტრი"}
+                one{"{0} ნიუტონ-მეტრი"}
+                other{"{0} ნიუტონ-მეტრი"}
+            }
+            pound-force-foot{
+                dnam{"ფუნტი-ფუტი"}
+                one{"{0} ფუნტი-ფუტი"}
+                other{"{0} ფუნტი-ფუტი"}
+            }
+        }
         volume{
             acre-foot{
                 dnam{"აკრი-ფუტი"}
@@ -736,6 +798,11 @@
                 one{"{0} ბარელი"}
                 other{"{0} ბარელი"}
             }
+            bushel{
+                dnam{"ბუშელი"}
+                one{"{0} ბუშელი"}
+                other{"{0} ბუშელი"}
+            }
             centiliter{
                 dnam{"სანტილიტრი"}
                 one{"{0} სანტილიტრი"}
@@ -793,6 +860,26 @@
                 one{"{0} დეცილიტრი"}
                 other{"{0} დეცილიტრი"}
             }
+            dessert-spoon{
+                dnam{"დესერტის კოვზი"}
+                one{"{0} დესერტის კოვზი"}
+                other{"{0} დესერტის კოვზი"}
+            }
+            dessert-spoon-imperial{
+                dnam{"ბრიტ. დესერტის კოვზი"}
+                one{"{0} ბრიტ. დესერტის კოვზი"}
+                other{"{0} ბრიტ. დესერტის კოვზი"}
+            }
+            dram{
+                dnam{"ბრიტანული თხევადი დრაქმა"}
+                one{"{0} ბრიტანული თხევადი დრაქმა"}
+                other{"{0} ბრიტანული თხევადი დრაქმა"}
+            }
+            drop{
+                dnam{"წვეთი"}
+                one{"{0} წვეთი"}
+                other{"{0} წვეთი"}
+            }
             fluid-ounce{
                 dnam{"თხევადი უნცია"}
                 one{"{0} თხევადი უნცია"}
@@ -820,6 +907,11 @@
                 one{"{0} ჰექტოლიტრი"}
                 other{"{0} ჰექტოლიტრი"}
             }
+            jigger{
+                dnam{"ჯიგერი"}
+                one{"{0} ჯიგერი"}
+                other{"{0} ჯიგერი"}
+            }
             liter{
                 dnam{"ლიტრი"}
                 one{"{0} ლიტრი"}
@@ -836,6 +928,11 @@
                 one{"{0} მილილიტრი"}
                 other{"{0} მილილიტრი"}
             }
+            pinch{
+                dnam{"მწიკვი"}
+                one{"{0} მწიკვი"}
+                other{"{0} მწიკვი"}
+            }
             pint{
                 dnam{"პინტა"}
                 one{"{0} პინტა"}
@@ -851,6 +948,11 @@
                 one{"{0} კვარტა"}
                 other{"{0} კვარტა"}
             }
+            quart-imperial{
+                dnam{"ბრიტანული კვარტი"}
+                one{"{0} ბრიტანული კვარტი"}
+                other{"{0} ბრიტანული კვარტი"}
+            }
             tablespoon{
                 dnam{"სუფრის კოვზი"}
                 one{"{0} სუფრის კოვზი"}
@@ -1491,6 +1593,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"წერტილი"}
+                one{"{0} წერტილი"}
+                other{"{0} წერტილი"}
+            }
             dot-per-centimeter{
                 dnam{"წერტ/სმ-ზე"}
                 one{"{0} წერტ/სმ-ზე"}
@@ -1544,12 +1651,27 @@
                 one{"{0} დმ"}
                 other{"{0} დმ"}
             }
+            earth-radius{
+                dnam{"⊕ რადიუსი"}
+                one{"{0} ⊕ რადიუსი"}
+                other{"{0} ⊕ რადიუსი"}
+            }
+            fathom{
+                dnam{"ფატომი"}
+                one{"{0} ფატომი"}
+                other{"{0} ფატომი"}
+            }
             foot{
                 dnam{"ფტ"}
                 one{"{0} ფტ"}
                 other{"{0} ფტ"}
                 per{"{0}/ფტ"}
             }
+            furlong{
+                dnam{"ფურლონგი"}
+                one{"{0} ფურლონგი"}
+                other{"{0} ფურლონგი"}
+            }
             inch{
                 dnam{"დუიმი"}
                 one{"{0} დუიმი"}
@@ -1618,6 +1740,11 @@
                 one{"{0} პნქტ."}
                 other{"{0} პქნტ."}
             }
+            solar-radius{
+                dnam{"☉ რადიუსი"}
+                one{"{0} ☉ რადიუსი"}
+                other{"{0} ☉ რადიუსი"}
+            }
             yard{
                 dnam{"იარდი"}
                 one{"{0} იარდი"}
@@ -1625,11 +1752,26 @@
             }
         }
         light{
+            candela{
+                dnam{"კდ"}
+                one{"{0} კდ"}
+                other{"{0} კდ"}
+            }
+            lumen{
+                dnam{"ლმ"}
+                one{"{0} ლმ"}
+                other{"{0} ლმ"}
+            }
             lux{
                 dnam{"ლუქსი"}
                 one{"{0} ლუქსი"}
                 other{"{0} ლუქსი"}
             }
+            solar-luminosity{
+                dnam{"☉ სხივიერობა"}
+                one{"{0} ☉ სხივიერობა"}
+                other{"{0} ☉ სხივიერობა"}
+            }
         }
         mass{
             carat{
@@ -1642,6 +1784,11 @@
                 one{"{0} დალტ."}
                 other{"{0} დალტ."}
             }
+            grain{
+                dnam{"გრანი"}
+                one{"{0} გრანი"}
+                other{"{0} გრანი"}
+            }
             gram{
                 dnam{"გრამი"}
                 one{"{0} გ"}
@@ -1686,6 +1833,11 @@
                 other{"{0} ფნტ"}
                 per{"{0}/ფნტ"}
             }
+            stone{
+                dnam{"სტოუნი"}
+                one{"{0} სტოუნი"}
+                other{"{0} სტოუნი"}
+            }
             ton{
                 dnam{"ტონა"}
                 one{"{0} ტ"}
@@ -1820,6 +1972,18 @@
                 other{"{0} K"}
             }
         }
+        torque{
+            newton-meter{
+                dnam{"ნიუტ. მ"}
+                one{"{0} ნიუტ. მ"}
+                other{"{0} ნიუტ. მ"}
+            }
+            pound-force-foot{
+                dnam{"ფუნტი-ფუტი"}
+                one{"{0} ფუნტი-ფუტი"}
+                other{"{0} ფუნტი-ფუტი"}
+            }
+        }
         volume{
             acre-foot{
                 dnam{"აკრ.ფტ."}
@@ -1831,6 +1995,11 @@
                 one{"{0} ბარ."}
                 other{"{0} ბარ."}
             }
+            bushel{
+                dnam{"ბუშელი"}
+                one{"{0} ბუშელი"}
+                other{"{0} ბუშელი"}
+            }
             centiliter{
                 dnam{"სლ"}
                 one{"{0} სლ"}
@@ -1888,6 +2057,26 @@
                 one{"{0} დლ"}
                 other{"{0} დლ"}
             }
+            dessert-spoon{
+                dnam{"დესერტის კოვზი"}
+                one{"{0} დესერტის კოვზი"}
+                other{"{0} დესერტის კოვზი"}
+            }
+            dessert-spoon-imperial{
+                dnam{"ბრიტ. დესერტის კოვზი"}
+                one{"{0} ბრიტ. დეს. კოვზი"}
+                other{"{0} ბრიტ. დეს. კოვზი"}
+            }
+            dram{
+                dnam{"ბრიტ. თხევადი დრაქმა"}
+                one{"{0} ბრიტ. თხევ. დრაქმა"}
+                other{"{0} ბრიტ. თხევ. დრაქმა"}
+            }
+            drop{
+                dnam{"წვეთი"}
+                one{"{0} წვეთი"}
+                other{"{0} წვეთი"}
+            }
             fluid-ounce{
                 dnam{"თხ. უნცია"}
                 one{"{0} თხ. უნცია"}
@@ -1915,6 +2104,11 @@
                 one{"{0} ჰლ"}
                 other{"{0} ჰლ"}
             }
+            jigger{
+                dnam{"ჯიგერი"}
+                one{"{0} ჯიგერი"}
+                other{"{0} ჯიგერი"}
+            }
             liter{
                 dnam{"ლიტრი"}
                 one{"{0} ლ"}
@@ -1931,6 +2125,11 @@
                 one{"{0} მილილ."}
                 other{"{0} მილილ."}
             }
+            pinch{
+                dnam{"მწიკვი"}
+                one{"{0} მწიკვი"}
+                other{"{0} მწიკვი"}
+            }
             pint{
                 dnam{"პინტა"}
                 one{"{0} პინტა"}
@@ -1946,6 +2145,11 @@
                 one{"{0} კვარტა"}
                 other{"{0} კვარტა"}
             }
+            quart-imperial{
+                dnam{"ბრიტ. კვარტი"}
+                one{"{0} ბრიტ. კვარტი"}
+                other{"{0} ბრიტ. კვარტი"}
+            }
             tablespoon{
                 dnam{"ს. კოვზი"}
                 one{"{0} ს. კოვზი"}
diff --git a/icu4c/source/data/unit/kab.txt b/icu4c/source/data/unit/kab.txt
index 75a697e..f76905a 100644
--- a/icu4c/source/data/unit/kab.txt
+++ b/icu4c/source/data/unit/kab.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kab{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/kam.txt b/icu4c/source/data/unit/kam.txt
index f9443d0..26e23bc 100644
--- a/icu4c/source/data/unit/kam.txt
+++ b/icu4c/source/data/unit/kam.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kam{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/kde.txt b/icu4c/source/data/unit/kde.txt
index a7179f7..ce04321 100644
--- a/icu4c/source/data/unit/kde.txt
+++ b/icu4c/source/data/unit/kde.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kde{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/kea.txt b/icu4c/source/data/unit/kea.txt
index 648fbaa..3a3d50a 100644
--- a/icu4c/source/data/unit/kea.txt
+++ b/icu4c/source/data/unit/kea.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kea{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -131,8 +131,8 @@
                 other{"{0} milha pur galãu"}
             }
             mile-per-gallon-imperial{
-                dnam{"milha pur galãu imperial"}
-                other{"{0} milha pur galãu imperial"}
+                dnam{"milha pur galãu britániku"}
+                other{"{0} milha pur galãu britániku"}
             }
         }
         coordinate{
@@ -327,6 +327,10 @@
             }
         }
         graphics{
+            dot{
+                dnam{"pontu"}
+                other{"{0} pontu"}
+            }
             dot-per-centimeter{
                 dnam{"pontu pur sentímeru"}
                 other{"{0} pontu pur sentímetru"}
@@ -370,6 +374,10 @@
                 dnam{"desímetru"}
                 other{"{0} desímetru"}
             }
+            earth-radius{
+                dnam{"raiu di Tera"}
+                other{"{0} raiu di Tera"}
+            }
             foot{
                 dnam{"pe"}
                 other{"{0} pe"}
@@ -426,10 +434,6 @@
                 dnam{"pikómetru"}
                 other{"{0} pikómetru"}
             }
-            point{
-                dnam{"pontu"}
-                other{"{0} pontu"}
-            }
             solar-radius{
                 dnam{"raiu solar"}
                 other{"{0} raiu solar"}
@@ -440,6 +444,14 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                other{"{0} kandela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                other{"{0} lumen"}
+            }
             lux{
                 dnam{"lux"}
                 other{"{0} lux"}
@@ -462,6 +474,10 @@
                 dnam{"masa di Tera"}
                 other{"{0} masa di Tera"}
             }
+            grain{
+                dnam{"grãu"}
+                other{"{0} grãu"}
+            }
             gram{
                 dnam{"grama"}
                 other{"{0} grama"}
@@ -672,13 +688,29 @@
                 dnam{"desilitru"}
                 other{"{0} desilitru"}
             }
+            dessert-spoon{
+                dnam{"kudjer di subrimeza"}
+                other{"{0} kudjer di subrimeza"}
+            }
+            dessert-spoon-imperial{
+                dnam{"kudjer di subrimeza britániku"}
+                other{"{0} kudjer di subrimeza britániku"}
+            }
+            dram{
+                dnam{"drakma fluídu"}
+                other{"{0} drakma fluídu"}
+            }
+            drop{
+                dnam{"gota"}
+                other{"{0} gota"}
+            }
             fluid-ounce{
                 dnam{"ónsa fluídu"}
                 other{"{0} ónsa fluídu"}
             }
             fluid-ounce-imperial{
-                dnam{"ónsa fluídu imperial"}
-                other{"{0} ónsa fluídu imperial"}
+                dnam{"ónsa fluídu britániku"}
+                other{"{0} ónsa fluídu britániku"}
             }
             gallon{
                 dnam{"galãu"}
@@ -686,14 +718,18 @@
                 per{"{0} pur galãu"}
             }
             gallon-imperial{
-                dnam{"galãu imperial"}
-                other{"{0} galãu imperial"}
-                per{"{0} pur galãu imperial"}
+                dnam{"galãu britániku"}
+                other{"{0} galãu britániku"}
+                per{"{0} pur galãu britániku"}
             }
             hectoliter{
                 dnam{"ektolitru"}
                 other{"{0} ektolitru"}
             }
+            jigger{
+                dnam{"kopu di xot"}
+                other{"{0} kopu di xot"}
+            }
             liter{
                 dnam{"litru"}
                 other{"{0} litru"}
@@ -707,6 +743,10 @@
                 dnam{"mililitru"}
                 other{"{0} mililitru"}
             }
+            pinch{
+                dnam{"pitada"}
+                other{"{0} pitada"}
+            }
             pint{
                 dnam{"pint"}
                 other{"{0} pint"}
@@ -719,6 +759,10 @@
                 dnam{"kuart"}
                 other{"{0} kuart"}
             }
+            quart-imperial{
+                dnam{"kuart britániku"}
+                other{"{0} kuart britániku"}
+            }
             tablespoon{
                 dnam{"kudjer di sopa"}
                 other{"{0} kudjer di sopa"}
@@ -915,8 +959,8 @@
                 other{"{0} mpg"}
             }
             mile-per-gallon-imperial{
-                dnam{"milha/gal imp."}
-                other{"{0} mpg imp."}
+                dnam{"milha/gal brit."}
+                other{"{0} mpg brit."}
             }
         }
         coordinate{
@@ -1161,12 +1205,8 @@
                 other{"{0} pm"}
             }
             point{
-                dnam{"pontu"}
                 other{"{0} pt"}
             }
-            solar-radius{
-                dnam{"raiu solar"}
-            }
             yard{
                 dnam{"yd"}
                 other{"{0} yd"}
@@ -1183,6 +1223,10 @@
                 dnam{"kt"}
                 other{"{0} kt"}
             }
+            grain{
+                dnam{"grãu"}
+                other{"{0} grãu"}
+            }
             gram{
                 dnam{"g"}
             }
@@ -1246,13 +1290,25 @@
                 dnam{"dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon-imperial{
+                dnam{"dstspn brit."}
+                other{"{0} dstspn brit."}
+            }
+            dram{
+                dnam{"drakma fl."}
+                other{"{0} drakma fl."}
+            }
+            drop{
+                dnam{"gota"}
+                other{"{0} gota"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 other{"{0} fl oz"}
             }
             fluid-ounce-imperial{
-                dnam{"fl oz imp."}
-                other{"{0} fl oz imp."}
+                dnam{"fl oz brit."}
+                other{"{0} fl oz brit."}
             }
             gallon{
                 dnam{"gal"}
@@ -1260,14 +1316,18 @@
                 per{"{0}/gal"}
             }
             gallon-imperial{
-                dnam{"gal imp."}
-                other{"{0} gal imp."}
-                per{"{0}/gal imp."}
+                dnam{"gal brit."}
+                other{"{0} gal brit."}
+                per{"{0}/gal brit."}
             }
             hectoliter{
                 dnam{"hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"kopu x."}
+                other{"{0} kopu x."}
+            }
             liter{
                 dnam{"l"}
             }
@@ -1279,6 +1339,10 @@
                 dnam{"ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"pit."}
+                other{"{0} pit."}
+            }
             pint{
                 dnam{"pt"}
                 other{"{0} pt"}
@@ -1291,6 +1355,10 @@
                 dnam{"qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"qt brit."}
+                other{"{0} qt brit."}
+            }
             tablespoon{
                 dnam{"ks"}
                 other{"{0} ks"}
diff --git a/icu4c/source/data/unit/khq.txt b/icu4c/source/data/unit/khq.txt
index a1314c4..a225321 100644
--- a/icu4c/source/data/unit/khq.txt
+++ b/icu4c/source/data/unit/khq.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 khq{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/ki.txt b/icu4c/source/data/unit/ki.txt
index 9d196a4..b481838 100644
--- a/icu4c/source/data/unit/ki.txt
+++ b/icu4c/source/data/unit/ki.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ki{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/kk.txt b/icu4c/source/data/unit/kk.txt
index a2a24cd..e26daab 100644
--- a/icu4c/source/data/unit/kk.txt
+++ b/icu4c/source/data/unit/kk.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kk{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -408,6 +408,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"нүкте"}
+                one{"{0} нүкте"}
+                other{"{0} нүкте"}
+            }
             dot-per-centimeter{
                 dnam{"нүкте/сантиметр"}
                 one{"{0} нүкте/сантиметр"}
@@ -461,12 +466,27 @@
                 one{"{0} дециметр"}
                 other{"{0} дециметр"}
             }
+            earth-radius{
+                dnam{"Жер радиусы"}
+                one{"{0} Жер радиусы"}
+                other{"{0} Жер радиусы"}
+            }
+            fathom{
+                dnam{"фатом"}
+                one{"{0} фатом"}
+                other{"{0} фатом"}
+            }
             foot{
                 dnam{"фут"}
                 one{"{0} фут"}
                 other{"{0} фут"}
                 per{"{0}/фут"}
             }
+            furlong{
+                dnam{"фурлонг"}
+                one{"{0} фурлонг"}
+                other{"{0} фурлонг"}
+            }
             inch{
                 dnam{"дюйм"}
                 one{"{0} дюйм"}
@@ -547,6 +567,16 @@
             }
         }
         light{
+            candela{
+                dnam{"кандела"}
+                one{"{0} кандела"}
+                other{"{0} кандела"}
+            }
+            lumen{
+                dnam{"люмен"}
+                one{"{0} люмен"}
+                other{"{0} люмен"}
+            }
             lux{
                 dnam{"люкс"}
                 one{"{0} люкс"}
@@ -574,6 +604,11 @@
                 one{"{0} жер массасы"}
                 other{"{0} жер массасы"}
             }
+            grain{
+                dnam{"гран"}
+                one{"{0} гран"}
+                other{"{0} гран"}
+            }
             gram{
                 dnam{"грамм"}
                 one{"{0} грамм"}
@@ -623,6 +658,11 @@
                 one{"{0} Күн массасы"}
                 other{"{0} Күн массасы"}
             }
+            stone{
+                dnam{"стоун"}
+                one{"{0} стоун"}
+                other{"{0} стоун"}
+            }
             ton{
                 dnam{"тонна"}
                 one{"{0} тонна"}
@@ -780,6 +820,11 @@
                 one{"{0} баррель"}
                 other{"{0} баррель"}
             }
+            bushel{
+                dnam{"бушель"}
+                one{"{0} бушель"}
+                other{"{0} бушель"}
+            }
             centiliter{
                 dnam{"сантилитр"}
                 one{"{0} cантилитр"}
@@ -837,6 +882,26 @@
                 one{"{0} децилитр"}
                 other{"{0} децилитр"}
             }
+            dessert-spoon{
+                dnam{"десерт қасығы"}
+                one{"{0} десерт қасығы"}
+                other{"{0} десерт қасығы"}
+            }
+            dessert-spoon-imperial{
+                dnam{"британдық десерт қасығы"}
+                one{"{0} британдық десерт қасығы"}
+                other{"{0} британдық десерт қасығы"}
+            }
+            dram{
+                dnam{"драхма"}
+                one{"{0} драхма"}
+                other{"{0} драхма"}
+            }
+            drop{
+                dnam{"тамшы"}
+                one{"{0} тамшы"}
+                other{"{0} тамшы"}
+            }
             fluid-ounce{
                 dnam{"сұйық унция"}
                 one{"{0} сұйық унция"}
@@ -864,6 +929,11 @@
                 one{"{0} гектолитр"}
                 other{"{0} гектолитр"}
             }
+            jigger{
+                dnam{"джиггер"}
+                one{"{0} джиггер"}
+                other{"{0} джиггер"}
+            }
             liter{
                 dnam{"литр"}
                 one{"{0} литр"}
@@ -880,6 +950,11 @@
                 one{"{0} миллилитр"}
                 other{"{0} миллилитр"}
             }
+            pinch{
+                dnam{"шөкім"}
+                one{"{0} шөкім"}
+                other{"{0} шөкім"}
+            }
             pint{
                 dnam{"пинта"}
                 one{"{0} пинта"}
@@ -895,6 +970,11 @@
                 one{"{0} кварта"}
                 other{"{0} кварта"}
             }
+            quart-imperial{
+                dnam{"британдық кварта"}
+                one{"{0} британдық кварта"}
+                other{"{0} британдық кварта"}
+            }
             tablespoon{
                 dnam{"ас қасық"}
                 one{"{0} ас қасық"}
@@ -1557,6 +1637,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"нүкте"}
+                one{"{0} нүкте"}
+                other{"{0} нүкте"}
+            }
             dot-per-centimeter{
                 dnam{"нүкте/см"}
                 one{"{0} нүкте/см"}
@@ -1600,12 +1685,22 @@
                 one{"{0} дм"}
                 other{"{0} дм"}
             }
+            fathom{
+                dnam{"фатом"}
+                one{"{0} fth"}
+                other{"{0} fth"}
+            }
             foot{
                 dnam{"фут"}
                 one{"{0} фут"}
                 other{"{0} фут"}
                 per{"{0}/фут"}
             }
+            furlong{
+                dnam{"фурлонг"}
+                one{"{0} фурлонг"}
+                other{"{0} фурлонг"}
+            }
             inch{
                 dnam{"дюйм"}
                 one{"{0} дюйм"}
@@ -1671,8 +1766,8 @@
             }
             point{
                 dnam{"пункт"}
-                one{"{0} ұпай"}
-                other{"{0} ұпай"}
+                one{"{0} пункт"}
+                other{"{0} пункт"}
             }
             solar-radius{
                 dnam{"R☉"}
@@ -1686,6 +1781,16 @@
             }
         }
         light{
+            candela{
+                dnam{"Кд"}
+                one{"{0} Кд"}
+                other{"{0} Кд"}
+            }
+            lumen{
+                dnam{"лм"}
+                one{"{0} лм"}
+                other{"{0} лм"}
+            }
             lux{
                 dnam{"люкс"}
                 one{"{0} лк"}
@@ -1713,6 +1818,11 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"гран"}
+                one{"{0} гран"}
+                other{"{0} гран"}
+            }
             gram{
                 dnam{"грамм"}
                 one{"{0} г"}
@@ -1762,6 +1872,11 @@
                 one{"{0} M☉"}
                 other{"{0} M☉"}
             }
+            stone{
+                dnam{"стоун"}
+                one{"{0} стоун"}
+                other{"{0} стоун"}
+            }
             ton{
                 dnam{"тонна"}
                 one{"{0} тн"}
@@ -1919,6 +2034,10 @@
                 one{"{0} bbl"}
                 other{"{0} bbl"}
             }
+            bushel{
+                one{"{0} bu"}
+                other{"{0} bu"}
+            }
             centiliter{
                 dnam{"сл"}
                 one{"{0} cл"}
@@ -1975,6 +2094,26 @@
                 one{"{0} дл"}
                 other{"{0} дл"}
             }
+            dessert-spoon{
+                dnam{"дес. қас."}
+                one{"{0} дес. қас."}
+                other{"{0} дес. қас."}
+            }
+            dessert-spoon-imperial{
+                dnam{"брит. дес. қас."}
+                one{"{0} брит. дес. қас."}
+                other{"{0} брит. дес. қас."}
+            }
+            dram{
+                dnam{"сұйық драхма"}
+                one{"{0} сұй. драхма"}
+                other{"{0} сұй. драхма"}
+            }
+            drop{
+                dnam{"тамшы"}
+                one{"{0} тамшы"}
+                other{"{0} тамшы"}
+            }
             fluid-ounce{
                 dnam{"сұй. унц."}
                 one{"{0} сұй. унц."}
@@ -2002,6 +2141,11 @@
                 one{"{0} гл"}
                 other{"{0} гл"}
             }
+            jigger{
+                dnam{"джиггер"}
+                one{"{0} джиггер"}
+                other{"{0} джиггер"}
+            }
             liter{
                 dnam{"литр"}
                 one{"{0} л"}
@@ -2018,6 +2162,11 @@
                 one{"{0} мл"}
                 other{"{0} мл"}
             }
+            pinch{
+                dnam{"шөкім"}
+                one{"{0} шөкім"}
+                other{"{0} шөкім"}
+            }
             pint{
                 dnam{"пинта"}
                 one{"{0} pt"}
@@ -2033,6 +2182,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"брит. кварта"}
+                one{"{0} брит. кварта"}
+                other{"{0} брит. кварта"}
+            }
             tablespoon{
                 dnam{"ас қ."}
                 one{"{0} ас қ."}
diff --git a/icu4c/source/data/unit/kkj.txt b/icu4c/source/data/unit/kkj.txt
index 4eaaba5..dd77640 100644
--- a/icu4c/source/data/unit/kkj.txt
+++ b/icu4c/source/data/unit/kkj.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kkj{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/kl.txt b/icu4c/source/data/unit/kl.txt
index 01e221f..deb7104 100644
--- a/icu4c/source/data/unit/kl.txt
+++ b/icu4c/source/data/unit/kl.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kl{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/kln.txt b/icu4c/source/data/unit/kln.txt
index 6ac43c2..0db23ba 100644
--- a/icu4c/source/data/unit/kln.txt
+++ b/icu4c/source/data/unit/kln.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kln{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/km.txt b/icu4c/source/data/unit/km.txt
index 0c55f68..5744a6e 100644
--- a/icu4c/source/data/unit/km.txt
+++ b/icu4c/source/data/unit/km.txt
@@ -1,11 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 km{
-    Version{"37"}
     durationUnits{
-        hm{"h:mm"}
-        hms{"h:mm:ss"}
-        ms{"m:ss"}
+        hm{"ម៉:នន"}
+        hms{"ម៉:នន:វិវិ"}
+        ms{"ម៉:វិវិ"}
     }
     units{
         acceleration{
@@ -46,7 +46,8 @@
                 other{"{0} អា"}
             }
             dunam{
-                other{"{0} dunams"}
+                dnam{"ឌូណាម"}
+                other{"{0} ឌូណាម"}
             }
             hectare{
                 dnam{"ហិកតា"}
@@ -166,16 +167,16 @@
                 other{"{0} គីឡូបៃ"}
             }
             megabit{
-                dnam{"មេហ្គាប៊ីត"}
-                other{"{0} មេហ្គាប៊ីត"}
+                dnam{"មេកាប៊ីត"}
+                other{"{0} មេកាប៊ីត"}
             }
             megabyte{
-                dnam{"មេហ្គាបៃ"}
-                other{"{0} មេហ្គាបៃ"}
+                dnam{"មេកាបៃ"}
+                other{"{0} មេកាបៃ"}
             }
             petabyte{
-                dnam{"PB"}
-                other{"{0} PB"}
+                dnam{"ប៉េតាបៃ"}
+                other{"{0} ប៉េតាបៃ"}
             }
             terabit{
                 dnam{"តេរ៉ាប៊ីត"}
@@ -211,7 +212,7 @@
             }
             millisecond{
                 dnam{"មិល្លី​វិនាទី"}
-                other{"{0} មិល្លី​វិនាទី"}
+                other{"{0} មីលី​វិនាទី"}
             }
             minute{
                 dnam{"នាទី"}
@@ -262,10 +263,18 @@
             }
         }
         energy{
+            british-thermal-unit{
+                dnam{"ឯកតាកម្ដៅអង់គ្លេស"}
+                other{"{0} ឯកតាកម្ដៅអង់គ្លេស"}
+            }
             calorie{
                 dnam{"កាឡូរី"}
                 other{"{0} កាឡូរី"}
             }
+            electronvolt{
+                dnam{"អេឡិចត្រូវ៉ុល"}
+                other{"{0} អេឡិចត្រូវ៉ុល"}
+            }
             foodcalorie{
                 dnam{"កាឡូរី"}
                 other{"{0} កាឡូរី"}
@@ -286,6 +295,10 @@
                 dnam{"គីឡូវ៉ាត់​ម៉ោង"}
                 other{"{0} គីឡូវ៉ាត់​ម៉ោង"}
             }
+            therm-us{
+                dnam{"ឯកតាកម្ដៅអាមេរិក"}
+                other{"{0} ឯកតាកម្ដៅអាមេរិក"}
+            }
         }
         frequency{
             gigahertz{
@@ -305,6 +318,36 @@
                 other{"{0} មេហ្គា​ហឺត"}
             }
         }
+        graphics{
+            dot{
+                dnam{"ចំណុច"}
+                other{"{0}ចំណុច"}
+            }
+            dot-per-centimeter{
+                dnam{"ចំណុចក្នុង១សង់ទីម៉ែត្រ"}
+                other{"{0} ចំណុចក្នុង១សង់ទីម៉ែត្រ"}
+            }
+            dot-per-inch{
+                dnam{"ចំណុចក្នុង១អ៊ីញ"}
+                other{"{0} ចំណុចក្នុង១អ៊ីញ"}
+            }
+            megapixel{
+                dnam{"មេហ្កាភិចស៊ែល"}
+                other{"{0} មេហ្កាភិចស៊ែល"}
+            }
+            pixel{
+                dnam{"ភិចស៊ែល"}
+                other{"{0} ភិចស៊ែល"}
+            }
+            pixel-per-centimeter{
+                dnam{"ភិចស៊ែលក្នុង១សង់ទីម៉ែត្រ"}
+                other{"{0} ភិចស៊ែលក្នុង១សង់ទីម៉ែត្រ"}
+            }
+            pixel-per-inch{
+                dnam{"ភិចស៊ែលក្នុង១អ៊ីញ"}
+                other{"{0} ភិចស៊ែលក្នុង១អ៊ីញ"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"ឯកតាតារាសាស្ត្រ"}
@@ -316,14 +359,26 @@
                 per{"{0} ក្នុងមួយសង់ទីម៉ែត្រ"}
             }
             decimeter{
-                dnam{"ដេសីុម៉ែត្រ"}
-                other{"{0} ដេសីុម៉ែត្រ"}
+                dnam{"ដេស៊ីម៉ែត្រ"}
+                other{"{0} ដេស៊ីម៉ែត្រ"}
+            }
+            earth-radius{
+                dnam{"កាំផែនដី"}
+                other{"{0} កាំផែនដី"}
+            }
+            fathom{
+                dnam{"ហ្វាតឹម"}
+                other{"{0} ហ្វាតឹម"}
             }
             foot{
                 dnam{"ហ្វីត"}
                 other{"{0} ហ្វីត"}
                 per{"{0} ក្នុងមួយហ្វីត"}
             }
+            furlong{
+                dnam{"ហ្វឺឡង"}
+                other{"{0} ហ្វឺឡង"}
+            }
             inch{
                 dnam{"អ៊ីញ"}
                 other{"{0} អ៊ីញ"}
@@ -385,6 +440,14 @@
             }
         }
         light{
+            candela{
+                dnam{"កានដេឡា"}
+                other{"{0} កានដេឡា"}
+            }
+            lumen{
+                dnam{"លូមែន"}
+                other{"{0} លូមែន"}
+            }
             lux{
                 dnam{"lux"}
                 other{"{0} lux"}
@@ -395,6 +458,10 @@
                 dnam{"ការ៉ាត់"}
                 other{"{0} ការ៉ាត់"}
             }
+            grain{
+                dnam{"គ្រាប់"}
+                other{"{0} គ្រាប់"}
+            }
             gram{
                 dnam{"ក្រាម"}
                 other{"{0} ក្រាម"}
@@ -431,9 +498,13 @@
                 other{"{0} ផោន"}
                 per{"{0} ក្នុងមួយផោន"}
             }
+            stone{
+                dnam{"ស្តូន"}
+                other{"{0} ស្តូន"}
+            }
             ton{
-                dnam{"តោន"}
-                other{"{0} តោន"}
+                dnam{"តោនអាមេរិក"}
+                other{"{0} តោនអាមេរិក"}
             }
         }
         power{
@@ -475,6 +546,14 @@
                 dnam{"អ៊ីញនៃបារត"}
                 other{"{0} អ៊ីញនៃបារត"}
             }
+            kilopascal{
+                dnam{"គីឡូប៉ាស្កាល់"}
+                other{"{0} គីឡូប៉ាស្កាល់"}
+            }
+            megapascal{
+                dnam{"មេហ្កាប៉ាស្កាល់"}
+                other{"{0} មេហ្កាប៉ាស្កាល់"}
+            }
             millibar{
                 dnam{"មិល្លីបារ"}
                 other{"{0} មិល្លីបារ"}
@@ -483,6 +562,10 @@
                 dnam{"មិល្លីម៉ែត្រនៃ​បារត"}
                 other{"{0} មិល្លីម៉ែត្រនៃ​បារត"}
             }
+            pascal{
+                dnam{"ប៉ាស្កាល់"}
+                other{"{0} ប៉ាស្កាល់"}
+            }
             pound-force-per-square-inch{
                 dnam{"ផោន​ក្នុង​មួយ​អ៊ីញ​ការ៉េ"}
                 other{"{0} ផោន​ក្នុង​មួយ​អ៊ីញ​ការ៉េ"}
@@ -529,6 +612,10 @@
                 dnam{"អាហ្វីត"}
                 other{"{0} អាហ្វីត"}
             }
+            bushel{
+                dnam{"ប៊ូសែល"}
+                other{"{0} ប៊ូសែល"}
+            }
             centiliter{
                 dnam{"សង់ទីលីត្រ"}
                 other{"{0} សង់ទីលីត្រ"}
@@ -572,8 +659,20 @@
                 other{"{0} រង្វាស់ពែង"}
             }
             deciliter{
-                dnam{"ដេសីុលីត្រ"}
-                other{"{0} ដេសីុលីត្រ"}
+                dnam{"ដេស៊ីលីត្រ"}
+                other{"{0} ដេស៊ីលីត្រ"}
+            }
+            dessert-spoon{
+                dnam{"ស្លាបព្រាបង្អែម"}
+                other{"{0} ស្លាបព្រាបង្អែម"}
+            }
+            dram{
+                dnam{"ត្រាម"}
+                other{"{0} ត្រាម"}
+            }
+            drop{
+                dnam{"តំណក់"}
+                other{"{0} តំណក់"}
             }
             fluid-ounce{
                 dnam{"អោន​វត្ថុ​រាវ"}
@@ -593,6 +692,10 @@
                 dnam{"ហិកតូលីត្រ"}
                 other{"{0} ហិកតូលីត្រ"}
             }
+            jigger{
+                dnam{"ជីកហ្គឺរ"}
+                other{"{0} ជីកហ្គឺរ"}
+            }
             liter{
                 dnam{"លីត្រ"}
                 other{"{0} លីត្រ"}
@@ -606,6 +709,10 @@
                 dnam{"មិល្លីលីត្រ"}
                 other{"{0} មិល្លីលីត្រ"}
             }
+            pinch{
+                dnam{"ច្បិច"}
+                other{"{0} ច្បិច"}
+            }
             pint{
                 dnam{"ភីន"}
                 other{"{0} ភីន"}
@@ -698,7 +805,7 @@
             }
             millisecond{
                 dnam{"មិល្លី​វិនាទី"}
-                other{"{0}ms"}
+                other{"{0} ម.វិ"}
             }
             minute{
                 dnam{"នាទី"}
@@ -723,8 +830,8 @@
         }
         length{
             centimeter{
-                dnam{"cm"}
-                other{"{0} cm"}
+                dnam{"សម"}
+                other{"{0} សម"}
             }
             foot{
                 other{"{0}′"}
@@ -733,22 +840,21 @@
                 other{"{0}″"}
             }
             kilometer{
-                dnam{"km"}
-                other{"{0} km"}
+                dnam{"គម"}
             }
             light-year{
                 other{"{0} ឆ្នាំ​ពន្លឺ"}
             }
             meter{
                 dnam{"ម៉ែត្រ"}
-                other{"{0}m"}
+                other{"{0} ម"}
             }
             mile{
                 other{"{0} ម៉."}
             }
             millimeter{
-                dnam{"mm"}
-                other{"{0} mm"}
+                dnam{"មម"}
+                other{"{0} មម"}
             }
             picometer{
                 other{"{0} ព.ម."}
@@ -868,7 +974,8 @@
                 other{"{0} ac"}
             }
             dunam{
-                dnam{"dunams"}
+                dnam{"ឌូណាម"}
+                other{"{0} ឌូណាម"}
             }
             hectare{
                 dnam{"ហិកតា"}
@@ -1033,7 +1140,7 @@
             }
             millisecond{
                 dnam{"មិល្លី​វិនាទី"}
-                other{"{0} ms"}
+                other{"{0} ម.វិ"}
             }
             minute{
                 dnam{"នាទី"}
@@ -1130,34 +1237,47 @@
                 other{"{0} MHz"}
             }
         }
+        graphics{
+            dot{
+                dnam{"ចំណុច"}
+                other{"{0} ចំណុច"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"au"}
                 other{"{0} au"}
             }
             centimeter{
-                dnam{"cm"}
-                other{"{0} cm"}
-                per{"{0}/cm"}
+                dnam{"សម"}
+                other{"{0} សម"}
+                per{"{0}/សម"}
             }
             decimeter{
-                dnam{"dm"}
-                other{"{0} dm"}
+                dnam{"ដម"}
+                other{"{0} ដម"}
+            }
+            fathom{
+                dnam{"ហ្វាតឹម"}
             }
             foot{
                 dnam{"ហ្វីត"}
                 other{"{0} ft"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"ហ្វឺឡង"}
+                other{"{0} ហ្វឺ"}
+            }
             inch{
                 dnam{"អ៊ីញ"}
                 other{"{0} in"}
                 per{"{0}/in"}
             }
             kilometer{
-                dnam{"km"}
-                other{"{0} km"}
-                per{"{0}/km"}
+                dnam{"គម"}
+                other{"{0} គម"}
+                per{"{0}/គម"}
             }
             light-year{
                 dnam{"ឆ្នាំ​ពន្លឺ"}
@@ -1165,8 +1285,8 @@
             }
             meter{
                 dnam{"ម៉ែត្រ"}
-                other{"{0} m"}
-                per{"{0}/m"}
+                other{"{0} ម"}
+                per{"{0}/ម"}
             }
             micrometer{
                 dnam{"មីក្រូ​ម៉ែត្រ"}
@@ -1220,6 +1340,10 @@
                 dnam{"ការ៉ាត់"}
                 other{"{0} CD"}
             }
+            grain{
+                dnam{"គ្រាប់"}
+                other{"{0} គ្រាប់"}
+            }
             gram{
                 dnam{"ក្រាម"}
                 other{"{0} g"}
@@ -1256,8 +1380,12 @@
                 other{"{0} lb"}
                 per{"{0}/lb"}
             }
+            stone{
+                dnam{"ស្តូន"}
+                other{"{0} st"}
+            }
             ton{
-                dnam{"តោន"}
+                dnam{"តោនអាមេរិក"}
                 other{"{0} tn"}
             }
         }
@@ -1354,6 +1482,9 @@
                 dnam{"អាហ្វីត"}
                 other{"{0} ac ft"}
             }
+            bushel{
+                dnam{"ប៊ូសែល"}
+            }
             centiliter{
                 dnam{"cL"}
                 other{"{0} cL"}
@@ -1400,6 +1531,14 @@
                 dnam{"dL"}
                 other{"{0} dL"}
             }
+            dram{
+                dnam{"ត្រាមរាវ"}
+                other{"{0} ត្រាមរាវ"}
+            }
+            drop{
+                dnam{"តំណក់"}
+                other{"{0} តំណក់"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 other{"{0} fl oz"}
@@ -1418,6 +1557,10 @@
                 dnam{"hL"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"ជីកហ្គឺរ"}
+                other{"{0} ជីកហ្គឺរ"}
+            }
             liter{
                 dnam{"លីត្រ"}
                 other{"{0} L"}
@@ -1431,6 +1574,10 @@
                 dnam{"mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"ច្បិច"}
+                other{"{0} ច្បិច"}
+            }
             pint{
                 dnam{"ភីន"}
                 other{"{0} pt"}
diff --git a/icu4c/source/data/unit/kn.txt b/icu4c/source/data/unit/kn.txt
index 9ac244c..5d41ab1 100644
--- a/icu4c/source/data/unit/kn.txt
+++ b/icu4c/source/data/unit/kn.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kn{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -408,6 +408,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ಡಾಟ್"}
+                one{"{0}ಡಾಟ್"}
+                other{"{0}ಡಾಟ್"}
+            }
             dot-per-centimeter{
                 dnam{"ಡಾಟ್ಸ್ ಪರ್ ಸೆಂಟಿಮೀಟರ್"}
                 one{"{0} ಡಾಟ್ಸ್ ಪರ್ ಸೆಂಟಿಮೀಟರ್"}
@@ -461,12 +466,27 @@
                 one{"{0} ಡೆಸಿಮೀಟರ್"}
                 other{"{0} ಡೆಸಿಮೀಟರ್‌ಗಳು"}
             }
+            earth-radius{
+                dnam{"ಭೂಮಿಯ ತ್ರಿಜ್ಯ"}
+                one{"{0} ಭೂಮಿಯ ತ್ರಿಜ್ಯ"}
+                other{"{0} ಭೂಮಿಯ ತ್ರಿಜ್ಯ"}
+            }
+            fathom{
+                dnam{"ಫ್ಯಾಥಮ್ಸ್"}
+                one{"{0} ಫ್ಯಾಥಮ್"}
+                other{"{0} ಫ್ಯಾಥಮ್ಸ್"}
+            }
             foot{
                 dnam{"ಅಡಿ"}
                 one{"{0} ಅಡಿ"}
                 other{"{0} ಅಡಿ"}
                 per{"ಪ್ರತಿ ಅಡಿಗೆ {0}"}
             }
+            furlong{
+                dnam{"ಫರ್ಲಾಂಗ್ಸ್"}
+                one{"{0} ಫರ್ಲಾಂಗ್"}
+                other{"{0} ಫರ್ಲಾಂಗ್ಸ್"}
+            }
             inch{
                 dnam{"ಅಂಗುಲಗಳು"}
                 one{"{0} ಅಂಗುಲ"}
@@ -547,6 +567,16 @@
             }
         }
         light{
+            candela{
+                dnam{"ಕ್ಯಾಂಡಿಲಾ"}
+                one{"{0} ಕ್ಯಾಂಡಿಲಾ"}
+                other{"{0} ಕ್ಯಾಂಡಿಲಾ"}
+            }
+            lumen{
+                dnam{"ಲೂಮೆನ್"}
+                one{"{0} ಲೂಮೆನ್"}
+                other{"{0} ಲೂಮೆನ್"}
+            }
             lux{
                 dnam{"ಲಕ್ಸ್‌‌"}
                 one{"{0} ಲಕ್ಸ್‌‌"}
@@ -574,6 +604,11 @@
                 one{"{0} ಭೂಮಿಯ ದೃವ್ಯರಾಶಿ"}
                 other{"{0} ಭೂಮಿಯ ದೃವ್ಯರಾಶಿ"}
             }
+            grain{
+                dnam{"ಗ್ರೇನ್"}
+                one{"{0} ಗ್ರೇನ್"}
+                other{"{0} ಗ್ರೇನ್"}
+            }
             gram{
                 dnam{"ಗ್ರಾಂಗಳು"}
                 one{"{0} ಗ್ರಾಂ"}
@@ -785,6 +820,11 @@
                 one{"{0} ಬ್ಯಾರೆಲ್"}
                 other{"{0} ಬ್ಯಾರೆಲ್‌ಗಳು"}
             }
+            bushel{
+                dnam{"ಬುಶಲ್‌ಗಳು"}
+                one{"{0} ಬುಶಲ್"}
+                other{"{0} ಬುಶಲ್‌ಗಳು"}
+            }
             centiliter{
                 dnam{"ಸೆಂಟಿಲೀಟರ್‌ಗಳು"}
                 one{"{0} ಸೆಂಟಿಲೀಟರ್"}
@@ -842,6 +882,26 @@
                 one{"{0} ಡೆಸಿಲೀಟರ್‌"}
                 other{"{0} ಡೆಸಿಲೀಟರ್‌‌ಗಳು"}
             }
+            dessert-spoon{
+                dnam{"ಡೆಸರ್ಟ್ ಸ್ಪೂನ್"}
+                one{"{0} ಡೆಸರ್ಟ್ ಸ್ಪೂನ್"}
+                other{"{0} ಡೆಸರ್ಟ್ ಸ್ಪೂನ್"}
+            }
+            dessert-spoon-imperial{
+                dnam{"ಇಂಪಿರಿಯಲ್ ಡೆಸರ್ಟ್ ಸ್ಪೂನ್"}
+                one{"{0} ಇಂಪಿರಿಯಲ್ ಡೆಸರ್ಟ್ ಸ್ಪೂನ್"}
+                other{"{0} ಇಂಪಿರಿಯಲ್ ಡೆಸರ್ಟ್ ಸ್ಪೂನ್"}
+            }
+            dram{
+                dnam{"ಡ್ರಾಮ್"}
+                one{"{0} ಡ್ರಾಮ್"}
+                other{"{0} ಡ್ರಾಮ್"}
+            }
+            drop{
+                dnam{"ಡ್ರಾಪ್"}
+                one{"{0} ಡ್ರಾಪ್"}
+                other{"{0} ಡ್ರಾಪ್"}
+            }
             fluid-ounce{
                 dnam{"ಫ್ಲೂಡ್ ಔನ್ಸ್‌ಗಳು"}
                 one{"{0} ಫ್ಲೂಡ್ ಔನ್ಸ್‌"}
@@ -869,6 +929,11 @@
                 one{"{0} ಹೆಕ್ಟೋಲೀಟರ್"}
                 other{"{0} ಹೆಕ್ಟೋಲೀಟರ್‌ಗಳು"}
             }
+            jigger{
+                dnam{"ಜಿಗರ್"}
+                one{"{0} ಜಿಗರ್"}
+                other{"{0} ಜಿಗರ್"}
+            }
             liter{
                 dnam{"ಲೀಟರ್‌‌ಗಳು"}
                 one{"{0} ಲೀಟರ್"}
@@ -885,6 +950,11 @@
                 one{"{0} ಮಿಲಿಲೀಟರ್"}
                 other{"{0} ಮಿಲಿಲೀಟರ್‌ಗಳು"}
             }
+            pinch{
+                dnam{"ಪಿಂಚ್"}
+                one{"{0} ಪಿಂಚ್"}
+                other{"{0} ಪಿಂಚ್"}
+            }
             pint{
                 dnam{"ಪಿಂಟ್‌ಗಳು"}
                 one{"{0} ಪಿಂಟ್‌"}
@@ -900,6 +970,11 @@
                 one{"{0} ಕಾಲುಭಾಗ"}
                 other{"{0} ಕಾಲುಭಾಗಗಳು"}
             }
+            quart-imperial{
+                dnam{"ಇಂಪಿರಿಯಲ್ ಕ್ವಾರ್ಟ್"}
+                one{"{0} ಇಂಪಿರಿಯಲ್ ಕ್ವಾರ್ಟ್"}
+                other{"{0} ಇಂಪಿರಿಯಲ್ ಕ್ವಾರ್ಟ್"}
+            }
             tablespoon{
                 dnam{"ಟೇಬಲ್ ಸ್ಪೂನ್‍ಗಳು"}
                 one{"{0} ಟೇಬಲ್ ಸ್ಪೂನ್‍"}
@@ -1620,6 +1695,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ಡಾಟ್"}
+                one{"{0} ಡಾಟ್"}
+                other{"{0} ಡಾಟ್"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 one{"{0} dpcm"}
@@ -1673,12 +1753,27 @@
                 one{"{0} ಡೆಮೀ"}
                 other{"{0} ಡೆಮೀ"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                one{"{0} R⊕"}
+                other{"{0} R⊕"}
+            }
+            fathom{
+                dnam{"ಫ್ಯಾಥಮ್ಸ್"}
+                one{"{0} fth"}
+                other{"{0} fth"}
+            }
             foot{
                 dnam{"ಅಡಿ"}
                 one{"{0} ಅ"}
                 other{"{0} ಅ"}
                 per{"{0}/ಅ"}
             }
+            furlong{
+                dnam{"ಫರ್ಲಾಂಗ್ಸ್"}
+                one{"{0} ಫರ್"}
+                other{"{0} ಫರ್"}
+            }
             inch{
                 dnam{"ಅಂಗುಲಗಳು"}
                 one{"{0} ಅಂ"}
@@ -1759,6 +1854,16 @@
             }
         }
         light{
+            candela{
+                dnam{"ಕ್ಯಾಂ"}
+                one{"{0} ಕ್ಯಾಂ"}
+                other{"{0} ಕ್ಯಾಂ"}
+            }
+            lumen{
+                dnam{"ಎಲ್ಎಮ್"}
+                one{"{0} ಎಲ್ಎಮ್"}
+                other{"{0} ಎಲ್ಎಮ್"}
+            }
             lux{
                 dnam{"ಲಕ್ಸ್"}
                 one{"{0} ಎಲ್‌ಎಕ್ಸ್"}
@@ -1784,6 +1889,11 @@
                 one{"{0} ದೃ⊕"}
                 other{"{0} ದೃ⊕"}
             }
+            grain{
+                dnam{"ಗ್ರೇನ್"}
+                one{"{0} ಗ್ರೇನ್"}
+                other{"{0} ಗ್ರೇನ್"}
+            }
             gram{
                 dnam{"ಗ್ರಾಂಗಳು"}
                 one{"{0} ಗ್ರಾ"}
@@ -1995,6 +2105,11 @@
                 one{"{0} bbl"}
                 other{"{0} bbl"}
             }
+            bushel{
+                dnam{"ಬುಶಲ್‌ಗಳು"}
+                one{"{0} ಬು"}
+                other{"{0} ಬು"}
+            }
             centiliter{
                 dnam{"ಸೆಂ.ಲೀ"}
                 one{"{0} ಸೆಂ.ಲೀ"}
@@ -2052,6 +2167,26 @@
                 one{"{0} ಡೆ.ಲೀ"}
                 other{"{0} ಡೆ.ಲೀ"}
             }
+            dessert-spoon{
+                dnam{"ಡೆ.ಸ್ಪೂ"}
+                one{"{0} ಡೆ.ಸ್ಪೂ"}
+                other{"{0} ಡೆ.ಸ್ಪೂ"}
+            }
+            dessert-spoon-imperial{
+                dnam{"ಡೆ.ಸ್ಪೂ.ಇಂಪಿ"}
+                one{"{0} ಡೆ.ಸ್ಪೂ.ಇಂಪಿ"}
+                other{"{0} ಡೆ.ಸ್ಪೂ.ಇಂಪಿ"}
+            }
+            dram{
+                dnam{"ಡ್ರಾಮ್ ಫ್ಲೂಡ್"}
+                one{"{0} ಡ್ರಾಮ್ ಫ್ಲೂ"}
+                other{"{0} ಡ್ರಾಮ್.ಫ್ಲೂ"}
+            }
+            drop{
+                dnam{"ಡ್ರಾಪ್"}
+                one{"{0} ಡ್ರಾಪ್"}
+                other{"{0} ಡ್ರಾಪ್"}
+            }
             fluid-ounce{
                 dnam{"ಫ್ಲೂ.ಔ"}
                 one{"{0} ಫ್ಲೂ.ಔ"}
@@ -2079,6 +2214,11 @@
                 one{"{0} ಹೆ.ಲೀ"}
                 other{"{0} ಹೆ.ಲೀ"}
             }
+            jigger{
+                dnam{"ಜಿಗರ್"}
+                one{"{0} ಜಿಗರ್"}
+                other{"{0} ಜಿಗರ್"}
+            }
             liter{
                 dnam{"ಲೀಟರ್‌ಗಳು"}
                 one{"{0} ಲೀ"}
@@ -2095,6 +2235,11 @@
                 one{"{0} ಮಿ.ಲೀ"}
                 other{"{0} ಮಿ.ಲೀ"}
             }
+            pinch{
+                dnam{"ಪಿಂಚ್"}
+                one{"{0} ಪಿಂಚ್"}
+                other{"{0} ಪಿಂಚ್"}
+            }
             pint{
                 dnam{"ಪಿಂಟ್‍ಗಳು"}
                 one{"{0} ಪಿಂಟ್‌"}
@@ -2110,6 +2255,11 @@
                 one{"{0} ಕಾ.ಭಾ"}
                 other{"{0} ಕಾ.ಭಾ"}
             }
+            quart-imperial{
+                dnam{"ಕ್ವಾ.ಇಂಪ್"}
+                one{"{0} ಕ್ವಾ.ಇಂಪ್"}
+                other{"{0} ಕ್ವಾ.ಇಂಪ್"}
+            }
             tablespoon{
                 dnam{"ಟೇ.ಸ್ಪೂ"}
                 one{"{0} ಟೇ.ಸ್ಪೂ"}
diff --git a/icu4c/source/data/unit/ko.txt b/icu4c/source/data/unit/ko.txt
index 000d1bf..294b381 100644
--- a/icu4c/source/data/unit/ko.txt
+++ b/icu4c/source/data/unit/ko.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ko{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -14,8 +14,8 @@
                 other{"{0} 중력가속도"}
             }
             meter-per-square-second{
-                dnam{"제곱 초당 미터"}
-                other{"{0}제곱 초당 미터"}
+                dnam{"미터 매 초 제곱"}
+                other{"제곱 초당 {0}미터"}
             }
         }
         angle{
@@ -295,6 +295,10 @@
                 dnam{"킬로와트시"}
                 other{"{0}킬로와트시"}
             }
+            therm-us{
+                dnam{"미국 섬"}
+                other{"{0}섬"}
+            }
         }
         force{
             newton{
@@ -324,6 +328,29 @@
                 other{"{0}메가헤르츠"}
             }
         }
+        graphics{
+            dot{
+                other{"{0}dot"}
+            }
+            dot-per-inch{
+                other{"{0}dpi"}
+            }
+            em{
+                other{"{0}em"}
+            }
+            megapixel{
+                other{"{0}MP"}
+            }
+            pixel{
+                other{"{0}px"}
+            }
+            pixel-per-centimeter{
+                other{"{0}ppcm"}
+            }
+            pixel-per-inch{
+                other{"{0}ppi"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"천문 단위"}
@@ -338,6 +365,10 @@
                 dnam{"데시미터"}
                 other{"{0}데시미터"}
             }
+            earth-radius{
+                dnam{"지구 반경"}
+                other{"{0}지구 반경"}
+            }
             fathom{
                 dnam{"패덤"}
                 other{"{0}패덤"}
@@ -408,7 +439,7 @@
             }
             solar-radius{
                 dnam{"태양 반경"}
-                other{"{0} 태양 반경"}
+                other{"{0}태양 반경"}
             }
             yard{
                 dnam{"야드"}
@@ -416,6 +447,14 @@
             }
         }
         light{
+            candela{
+                dnam{"칸델라"}
+                other{"{0}칸델라"}
+            }
+            lumen{
+                dnam{"루멘"}
+                other{"{0}루멘"}
+            }
             lux{
                 dnam{"룩스"}
                 other{"{0}룩스"}
@@ -438,6 +477,10 @@
                 dnam{"지구 질량"}
                 other{"{0}지구 질량"}
             }
+            grain{
+                dnam{"그레인"}
+                other{"{0}그레인"}
+            }
             gram{
                 dnam{"그램"}
                 other{"{0}그램"}
@@ -518,6 +561,10 @@
                 dnam{"atm"}
                 other{"{0}atm"}
             }
+            bar{
+                dnam{"바"}
+                other{"{0}바"}
+            }
             hectopascal{
                 dnam{"헥토파스칼"}
                 other{"{0}헥토파스칼"}
@@ -542,6 +589,10 @@
                 dnam{"수은주밀리미터"}
                 other{"{0}수은주밀리미터"}
             }
+            pascal{
+                dnam{"파스칼"}
+                other{"{0}파스칼"}
+            }
             pound-force-per-square-inch{
                 dnam{"제곱인치당 파운드"}
                 other{"{0}제곱인치당 파운드"}
@@ -557,11 +608,11 @@
                 other{"{0}노트"}
             }
             meter-per-second{
-                dnam{"m/s"}
+                dnam{"미터 매 초"}
                 other{"초속 {0}미터"}
             }
             mile-per-hour{
-                dnam{"mi/h"}
+                dnam{"시간당 마일"}
                 other{"시속 {0}마일"}
             }
         }
@@ -601,6 +652,10 @@
                 dnam{"배럴"}
                 other{"{0}배럴"}
             }
+            bushel{
+                dnam{"부셸"}
+                other{"{0}부셸"}
+            }
             centiliter{
                 dnam{"센티리터"}
                 other{"{0}센티리터"}
@@ -647,6 +702,22 @@
                 dnam{"데시리터"}
                 other{"{0}데시리터"}
             }
+            dessert-spoon{
+                dnam{"디저트스푼"}
+                other{"{0}디저트스푼"}
+            }
+            dessert-spoon-imperial{
+                dnam{"영국 디저트스푼"}
+                other{"{0}영국 디저트스푼"}
+            }
+            dram{
+                dnam{"영국 액량 드램"}
+                other{"{0}영국 액량 드램"}
+            }
+            drop{
+                dnam{"방울"}
+                other{"{0}방울"}
+            }
             fluid-ounce{
                 dnam{"액량 온스"}
                 other{"{0}액량 온스"}
@@ -669,6 +740,10 @@
                 dnam{"헥토리터"}
                 other{"{0}헥토리터"}
             }
+            jigger{
+                dnam{"지거"}
+                other{"{0}지거"}
+            }
             liter{
                 dnam{"리터"}
                 other{"{0}리터"}
@@ -682,6 +757,10 @@
                 dnam{"밀리리터"}
                 other{"{0}밀리리터"}
             }
+            pinch{
+                dnam{"꼬집"}
+                other{"{0}꼬집"}
+            }
             pint{
                 dnam{"파인트"}
                 other{"{0}파인트"}
@@ -694,6 +773,10 @@
                 dnam{"쿼트"}
                 other{"{0}쿼트"}
             }
+            quart-imperial{
+                dnam{"영국 쿼트"}
+                other{"{0}영국 쿼트"}
+            }
             tablespoon{
                 dnam{"테이블스푼"}
                 other{"{0}테이블스푼"}
@@ -1236,7 +1319,7 @@
             }
             decade{
                 dnam{"dec"}
-                other{"{0} dec"}
+                other{"{0}dec"}
             }
             hour{
                 dnam{"시간"}
@@ -1333,8 +1416,8 @@
                 other{"{0}kWh"}
             }
             therm-us{
-                dnam{"US therm"}
-                other{"{0} US therm"}
+                dnam{"미국 섬"}
+                other{"{0}섬"}
             }
         }
         force{
@@ -1364,33 +1447,36 @@
             }
         }
         graphics{
+            dot{
+                other{"{0}dot"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
-                other{"{0} dpcm"}
+                other{"{0}dpcm"}
             }
             dot-per-inch{
                 dnam{"dpi"}
-                other{"{0} dpi"}
+                other{"{0}dpi"}
             }
             em{
                 dnam{"em"}
-                other{"{0} em"}
+                other{"{0}em"}
             }
             megapixel{
                 dnam{"MP"}
-                other{"{0} MP"}
+                other{"{0}MP"}
             }
             pixel{
                 dnam{"px"}
-                other{"{0} px"}
+                other{"{0}px"}
             }
             pixel-per-centimeter{
                 dnam{"ppcm"}
-                other{"{0} ppcm"}
+                other{"{0}ppcm"}
             }
             pixel-per-inch{
                 dnam{"ppi"}
-                other{"{0} ppi"}
+                other{"{0}ppi"}
             }
         }
         length{
@@ -1407,6 +1493,10 @@
                 dnam{"dm"}
                 other{"{0}dm"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                other{"{0}R⊕"}
+            }
             fathom{
                 dnam{"fm"}
                 other{"{0}fth"}
@@ -1481,10 +1571,16 @@
             }
             yard{
                 dnam{"yd"}
-                other{"{0}야드"}
+                other{"{0}yd"}
             }
         }
         light{
+            candela{
+                other{"{0}cd"}
+            }
+            lumen{
+                other{"{0}lm"}
+            }
             lux{
                 dnam{"lx"}
                 other{"{0}lx"}
@@ -1506,6 +1602,9 @@
                 dnam{"M⊕"}
                 other{"{0}M⊕"}
             }
+            grain{
+                other{"{0}grain"}
+            }
             gram{
                 dnam{"그램"}
                 other{"{0}g"}
@@ -1588,7 +1687,7 @@
             }
             bar{
                 dnam{"bar"}
-                other{"{0} bar"}
+                other{"{0}bar"}
             }
             hectopascal{
                 dnam{"hPa"}
@@ -1616,7 +1715,7 @@
             }
             pascal{
                 dnam{"Pa"}
-                other{"{0} Pa"}
+                other{"{0}Pa"}
             }
             pound-force-per-square-inch{
                 dnam{"psi"}
@@ -1676,6 +1775,10 @@
                 dnam{"bbl"}
                 other{"{0}bbl"}
             }
+            bushel{
+                dnam{"bu"}
+                other{"{0}bu"}
+            }
             centiliter{
                 dnam{"cL"}
                 other{"{0}cL"}
@@ -1722,6 +1825,18 @@
                 dnam{"dL"}
                 other{"{0}dL"}
             }
+            dessert-spoon{
+                other{"{0}dstspn"}
+            }
+            dessert-spoon-imperial{
+                other{"{0}dstspn Imp"}
+            }
+            dram{
+                other{"{0}dram fl"}
+            }
+            drop{
+                other{"{0}drop"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 other{"{0}fl oz"}
@@ -1744,6 +1859,9 @@
                 dnam{"hL"}
                 other{"{0}hL"}
             }
+            jigger{
+                other{"{0}jigger"}
+            }
             liter{
                 dnam{"리터"}
                 other{"{0}L"}
@@ -1757,6 +1875,9 @@
                 dnam{"mL"}
                 other{"{0}mL"}
             }
+            pinch{
+                other{"{0}pinch"}
+            }
             pint{
                 dnam{"pt"}
                 other{"{0}pt"}
@@ -1769,6 +1890,9 @@
                 dnam{"qt"}
                 other{"{0}qt"}
             }
+            quart-imperial{
+                other{"{0}qt Imp."}
+            }
             tablespoon{
                 dnam{"tbsp"}
                 other{"{0}tbsp"}
diff --git a/icu4c/source/data/unit/kok.txt b/icu4c/source/data/unit/kok.txt
index 6814a31..e41c523 100644
--- a/icu4c/source/data/unit/kok.txt
+++ b/icu4c/source/data/unit/kok.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kok{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -9,6 +9,10 @@
     }
     units{
         acceleration{
+            g-force{
+                dnam{"जी-फोर्स"}
+                other{"{0} जी-फोर्स"}
+            }
             meter-per-square-second{
                 dnam{"मी/से²"}
                 other{"{0} मी/से²"}
@@ -84,7 +88,8 @@
             }
         }
         compound{
-            per{"{1} क {0}"}
+            per{"{0} दर {1}"}
+            times{"{0}-{1}"}
         }
         concentr{
             karat{
@@ -111,6 +116,14 @@
                 dnam{"दरमायल"}
                 other{"{0} दरमायल"}
             }
+            permillion{
+                dnam{"पार्ट पर मिलियन"}
+                other{"{0} पार्ट पर मिलियन"}
+            }
+            permyriad{
+                dnam{"परमिरियड"}
+                other{"{0} परमिरियड"}
+            }
         }
         consumption{
             liter-per-100-kilometer{
@@ -121,6 +134,14 @@
                 dnam{"लिटर/किलोमीटर"}
                 other{"{0} लिटर/किलोमीटर"}
             }
+            mile-per-gallon{
+                dnam{"मैल दर गॅलोन"}
+                other{"{0} मैल दर गॅलोन"}
+            }
+            mile-per-gallon-imperial{
+                dnam{"मैल दर इंपिरियल गॅलोन"}
+                other{"{0} मैल दर इंपिरियल गॅलोन"}
+            }
         }
         coordinate{
             dnam{"मुख्य दिका"}
@@ -237,8 +258,13 @@
                 dnam{"एम्पियर"}
                 other{"{0} एम्पियर"}
             }
+            milliampere{
+                dnam{"मिलिएम्पियर"}
+                other{"{0} मिलिएम्पियर"}
+            }
             ohm{
                 dnam{"ओम"}
+                other{"{0} ओम"}
             }
             volt{
                 dnam{"वोल्ट"}
@@ -276,6 +302,10 @@
                 dnam{"न्युटन"}
                 other{"{0} न्युटन"}
             }
+            pound-force{
+                dnam{"पावंड ऑफ फोर्स"}
+                other{"{0} पावंड ऑफ फोर्स"}
+            }
         }
         frequency{
             gigahertz{
@@ -296,6 +326,10 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ठिपको"}
+                other{"{0}ठिपको"}
+            }
             dot-per-centimeter{
                 dnam{"दर सेंटिमीटर ठिपके"}
                 other{"दर सेंटिमीटर ठिपके {0}"}
@@ -339,11 +373,23 @@
                 dnam{"डेसीमीटर"}
                 other{"{0} डेसीमीटर"}
             }
+            earth-radius{
+                dnam{"पृथ्वी त्रिज्या"}
+                other{"{0} पृथ्वी त्रिज्या"}
+            }
+            fathom{
+                dnam{"फॅदम"}
+                other{"{0} फॅदम"}
+            }
             foot{
                 dnam{"फूट"}
                 other{"{0} फूट"}
                 per{"दर फूट {0}"}
             }
+            furlong{
+                dnam{"फर्लांग"}
+                other{"{0} फर्लांग"}
+            }
             inch{
                 dnam{"इंच"}
                 other{"{0} इंच"}
@@ -388,8 +434,8 @@
                 other{"{0} नॉटिकल्स मायल्स"}
             }
             parsec{
-                dnam{"पॅरासे"}
-                other{"{0} पॅरासे"}
+                dnam{"पासेक्स"}
+                other{"{0} पासेक्स"}
             }
             picometer{
                 dnam{"पिकोमीटर"}
@@ -408,11 +454,41 @@
                 other{"{0} यार्ड"}
             }
         }
+        light{
+            candela{
+                dnam{"कॅन्डेला"}
+                other{"{0} कॅन्डेला"}
+            }
+            lumen{
+                dnam{"ल्युमन"}
+                other{"{0} ल्युमन"}
+            }
+            lux{
+                dnam{"लक्स"}
+                other{"{0} लक्स"}
+            }
+            solar-luminosity{
+                dnam{"सौर ल्युमिनोसायटिस"}
+                other{"{0} सौर ल्युमिनोसायटिस"}
+            }
+        }
         mass{
             carat{
                 dnam{"कॅरट"}
                 other{"{0} कॅरट"}
             }
+            dalton{
+                dnam{"डाल्टन"}
+                other{"{0} डाल्टन"}
+            }
+            earth-mass{
+                dnam{"पृथ्वी वस्तुमान"}
+                other{"{0} पृथ्वी वस्तुमान"}
+            }
+            grain{
+                dnam{"कण"}
+                other{"{0} कण"}
+            }
             gram{
                 dnam{"ग्राम"}
                 other{"{0} ग्राम"}
@@ -431,9 +507,27 @@
                 dnam{"मिलिग्राम"}
                 other{"{0} मिलिग्राम"}
             }
+            ounce{
+                dnam{"औंस"}
+                other{"{0} औंस"}
+                per{"{0} दर औंस"}
+            }
+            ounce-troy{
+                dnam{"ट्रॉय औंस"}
+                other{"{0} ट्रॉय औंस"}
+            }
             pound{
                 dnam{"पौंड"}
                 other{"{0} पौंड"}
+                per{"{0} दर पौंड"}
+            }
+            solar-mass{
+                dnam{"सौर वस्तुमान"}
+                other{"{0} सौर वस्तुमान"}
+            }
+            stone{
+                dnam{"स्टोन"}
+                other{"{0} स्टोन"}
             }
             ton{
                 dnam{"टन"}
@@ -475,16 +569,48 @@
                 dnam{"पट्टी"}
                 other{"{0} पट्ट्यो"}
             }
+            hectopascal{
+                dnam{"हेक्टोपास्कल"}
+                other{"{0} हेक्टोपास्कल"}
+            }
+            inch-ofhg{
+                dnam{"इंचेस ऑफ मर्क्युरी"}
+                other{"{0} इंचेस ऑफ मर्क्युरी"}
+            }
+            kilopascal{
+                dnam{"किलोपास्कल"}
+                other{"{0} किलोपास्कल"}
+            }
+            megapascal{
+                dnam{"मेगापास्कल"}
+                other{"{0} किलोपास्कल्स"}
+            }
+            millibar{
+                dnam{"मिलिबार"}
+                other{"{0} मिलिबार"}
+            }
+            millimeter-ofhg{
+                dnam{"मिलिमीटर ऑफ मर्क्युरी"}
+                other{"{0} मिलिमीटर ऑफ मर्क्युरी"}
+            }
             pascal{
                 dnam{"पास्कल"}
                 other{"{0} पास्कल"}
             }
+            pound-force-per-square-inch{
+                dnam{"पावंड दर चौरस इंच"}
+                other{"{0} पावंड दर चौरस इंच"}
+            }
         }
         speed{
             kilometer-per-hour{
                 dnam{"किमी/व"}
                 other{"{0} किमी/व"}
             }
+            knot{
+                dnam{"नॉट"}
+                other{"{0} नॉट"}
+            }
             meter-per-second{
                 dnam{"मी/से"}
                 other{"{0} मी/से"}
@@ -513,6 +639,10 @@
                 dnam{"न्युटन-मीटर"}
                 other{"{0} न्युटन-मीटर"}
             }
+            pound-force-foot{
+                dnam{"पावंड-फूट"}
+                other{"{0} पावंड-फूट"}
+            }
         }
         volume{
             acre-foot{
@@ -523,18 +653,26 @@
                 dnam{"बॅरल"}
                 other{"{0} बॅरल"}
             }
+            bushel{
+                dnam{"बुशेल्स"}
+                other{"{0} बुशेल्स"}
+            }
+            centiliter{
+                dnam{"सेंटिलीटर"}
+                other{"{0} सेंटिलीटर"}
+            }
             cubic-centimeter{
-                dnam{"सेमी³"}
-                other{"{0} सेमी³"}
-                per{"{0}/सेमी³"}
+                dnam{"क्युबीक सेंटीमीटर"}
+                other{"{0} क्युबीक सेंटीमीटर"}
+                per{"{0} दर क्युबीक सेंटीमीटर"}
             }
             cubic-foot{
-                dnam{"फू³"}
-                other{"{0} फू³"}
+                dnam{"क्युबीक फूट"}
+                other{"{0} क्युबीक फूट"}
             }
             cubic-inch{
-                dnam{"इं³"}
-                other{"{0} इं³"}
+                dnam{"क्युबीक इंच"}
+                other{"{0} क्युबीक इंच"}
             }
             cubic-kilometer{
                 dnam{"क्युबीक किलोमीटर"}
@@ -546,12 +684,12 @@
                 per{"{0}/मी³"}
             }
             cubic-mile{
-                dnam{"मा³"}
-                other{"{0} मा³"}
+                dnam{"क्युबीक मील"}
+                other{"{0} क्युबीक मील"}
             }
             cubic-yard{
-                dnam{"या³"}
-                other{"{0} या³"}
+                dnam{"क्युबीक यार्ड"}
+                other{"{0} क्युबीक यार्ड"}
             }
             cup{
                 dnam{"कप"}
@@ -561,15 +699,51 @@
                 dnam{"मॅट्रिक कप"}
                 other{"{0} मॅट्रिक कप"}
             }
+            deciliter{
+                dnam{"डेसिलीटर"}
+                other{"{0} डेसिलीटर"}
+            }
+            dessert-spoon{
+                dnam{"डिझर्ट कुलेर"}
+                other{"{0} डिझर्ट कुलेर"}
+            }
+            dessert-spoon-imperial{
+                dnam{"इंपिरियल डिझर्ट कुलेर"}
+                other{"{0} इंप. डिझर्ट कुलेर"}
+            }
+            dram{
+                dnam{"ड्रॅम"}
+                other{"{0} ड्रॅम"}
+            }
+            drop{
+                dnam{"थेंबो"}
+                other{"{0} थेंबो"}
+            }
             fluid-ounce{
                 dnam{"फ्लुइड औंस"}
                 other{"{0} फ्लुइड औंस"}
             }
+            fluid-ounce-imperial{
+                dnam{"इंपिरियल फ्लुइड औंस"}
+                other{"{0} इंप. फ्लुइड औंस"}
+            }
             gallon{
                 dnam{"गॅलोन"}
                 other{"{0} गॅलोन"}
                 per{"दर गॅलोन {0}"}
             }
+            gallon-imperial{
+                dnam{"इंपिरियल गॅलोन"}
+                other{"{0} इंप. गॅलोन"}
+                per{"{0} दर इंप. गॅलोन"}
+            }
+            hectoliter{
+                dnam{"हॅक्टोलीटर"}
+            }
+            jigger{
+                dnam{"जिगर"}
+                other{"{0} जिगर"}
+            }
             liter{
                 dnam{"लिटर"}
                 other{"{0} लिटर"}
@@ -583,10 +757,26 @@
                 dnam{"मिलिलिटर"}
                 other{"{0} मिलिलिटर"}
             }
+            pinch{
+                dnam{"चिमटी"}
+                other{"{0} चिमटी"}
+            }
+            pint{
+                dnam{"पाइंट"}
+                other{"{0} पाइंट"}
+            }
+            pint-metric{
+                dnam{"मॅट्रिक पाइंट"}
+                other{"{0} मॅट्रिक पाइंट"}
+            }
             quart{
                 dnam{"क्वार्त"}
                 other{"{0} क्वार्त"}
             }
+            quart-imperial{
+                dnam{"इंपिरियल क्वार्त"}
+                other{"{0} इंप. क्वार्त"}
+            }
             tablespoon{
                 dnam{"व्हडलें कुलेर"}
                 other{"{0} व्हडलें कुलेर"}
@@ -598,6 +788,10 @@
         }
     }
     unitsNarrow{
+        compound{
+            per{"{0}/{1}"}
+            times{"{0}⋅{1}"}
+        }
         coordinate{
             dnam{"दिका"}
             east{"{0}उदें"}
@@ -689,7 +883,7 @@
     unitsShort{
         acceleration{
             g-force{
-                dnam{"g-force"}
+                dnam{"जी-फोर्स"}
                 other{"{0} G"}
             }
             meter-per-square-second{
@@ -814,11 +1008,11 @@
                 other{"{0} लि/किमी"}
             }
             mile-per-gallon{
-                dnam{"mpg US"}
-                other{"{0} mpg US"}
+                dnam{"मैल/गॅ"}
+                other{"{0} mpg"}
             }
             mile-per-gallon-imperial{
-                dnam{"mpg Imp."}
+                dnam{"मैल/गॅ इंप."}
                 other{"{0} mpg Imp."}
             }
         }
@@ -938,11 +1132,11 @@
                 other{"{0} ए"}
             }
             milliampere{
-                dnam{"mA"}
+                dnam{"मिलिएम्प"}
                 other{"{0} mA"}
             }
             ohm{
-                dnam{"ओम्स"}
+                dnam{"ओम"}
                 other{"{0} Ω"}
             }
             volt{
@@ -994,7 +1188,7 @@
                 other{"{0} न्यु"}
             }
             pound-force{
-                dnam{"lbf"}
+                dnam{"पावंड-फोर्स"}
                 other{"{0} lbf"}
             }
         }
@@ -1017,6 +1211,10 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ठिपको"}
+                other{"{0} ठिपको"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 other{"{0} dpcm"}
@@ -1060,11 +1258,23 @@
                 dnam{"डेमी"}
                 other{"{0} डेमी"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                other{"{0} R⊕"}
+            }
+            fathom{
+                dnam{"फॅदम"}
+                other{"{0} fth"}
+            }
             foot{
                 dnam{"फूट"}
                 other{"{0} फूट"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"फर्लांग"}
+                other{"{0} fur"}
+            }
             inch{
                 dnam{"इंच"}
                 other{"{0} in"}
@@ -1109,7 +1319,7 @@
                 other{"{0} nmi"}
             }
             parsec{
-                dnam{"pc"}
+                dnam{"पासेक"}
                 other{"{0} pc"}
             }
             picometer{
@@ -1130,12 +1340,20 @@
             }
         }
         light{
+            candela{
+                dnam{"cd"}
+                other{"{0} cd"}
+            }
+            lumen{
+                dnam{"lm"}
+                other{"{0} lm"}
+            }
             lux{
-                dnam{"lx"}
+                dnam{"लक्स"}
                 other{"{0} lx"}
             }
             solar-luminosity{
-                dnam{"L☉"}
+                dnam{"सौर ल्युमिनोसायटिस"}
                 other{"{0} L☉"}
             }
         }
@@ -1145,13 +1363,17 @@
                 other{"{0} कॅ"}
             }
             dalton{
-                dnam{"Da"}
+                dnam{"डाल्टन"}
                 other{"{0} Da"}
             }
             earth-mass{
-                dnam{"M⊕"}
+                dnam{"पृथ्वी वस्तुमान"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"कण"}
+                other{"{0} कण"}
+            }
             gram{
                 dnam{"ग्राम"}
                 other{"{0} ग्राम"}
@@ -1175,23 +1397,27 @@
                 other{"{0} मिग्रा"}
             }
             ounce{
-                dnam{"oz"}
+                dnam{"औंस"}
                 other{"{0} oz"}
-                per{"{0}/oz"}
+                per{"{0}/औंस"}
             }
             ounce-troy{
-                dnam{"oz t"}
+                dnam{"औंस ट्रॉय"}
                 other{"{0} oz t"}
             }
             pound{
-                dnam{"lb"}
+                dnam{"पौंड"}
                 other{"{0} lb"}
-                per{"{0}/lb"}
+                per{"{0}/पौंड"}
             }
             solar-mass{
-                dnam{"M☉"}
+                dnam{"सौर वस्तुमान"}
                 other{"{0} M☉"}
             }
+            stone{
+                dnam{"स्टोन"}
+                other{"{0} स्टोन"}
+            }
             ton{
                 dnam{"टन"}
                 other{"{0} टन"}
@@ -1271,7 +1497,7 @@
                 other{"{0} किमी/व"}
             }
             knot{
-                dnam{"kn"}
+                dnam{"नॉट"}
                 other{"{0} kn"}
             }
             meter-per-second{
@@ -1307,19 +1533,23 @@
                 other{"{0} N⋅m"}
             }
             pound-force-foot{
-                dnam{"lbf⋅ft"}
+                dnam{"पावंड-फूट"}
                 other{"{0} lbf⋅ft"}
             }
         }
         volume{
             acre-foot{
                 dnam{"एकर फू"}
-                other{"{0} ए फू"}
+                other{"{0} ac ft"}
             }
             barrel{
                 dnam{"बॅरल"}
                 other{"{0} बॅरल"}
             }
+            bushel{
+                dnam{"बुशेल्स"}
+                other{"{0} bu"}
+            }
             centiliter{
                 dnam{"cL"}
                 other{"{0} cL"}
@@ -1330,12 +1560,12 @@
                 per{"{0}/सेमी³"}
             }
             cubic-foot{
-                dnam{"फू³"}
-                other{"{0} फू³"}
+                dnam{"फूट³"}
+                other{"{0} ft³"}
             }
             cubic-inch{
                 dnam{"इंच³"}
-                other{"{0} इ³"}
+                other{"{0} in³"}
             }
             cubic-kilometer{
                 dnam{"किमी³"}
@@ -1351,8 +1581,8 @@
                 other{"{0} mi³"}
             }
             cubic-yard{
-                dnam{"या³"}
-                other{"{0} या³"}
+                dnam{"यार्ड³"}
+                other{"{0} yd³"}
             }
             cup{
                 dnam{"कप"}
@@ -1366,6 +1596,22 @@
                 dnam{"dL"}
                 other{"{0} dL"}
             }
+            dessert-spoon{
+                dnam{"डिझ. कुलेर"}
+                other{"{0} dstspn"}
+            }
+            dessert-spoon-imperial{
+                dnam{"डिझ. कुलेर इंप"}
+                other{"{0} dstspn Imp"}
+            }
+            dram{
+                dnam{"ड्रॅम फ्लुइड"}
+                other{"{0} ड्रॅम फ्लु"}
+            }
+            drop{
+                dnam{"थेंबो"}
+                other{"{0} थेंबो"}
+            }
             fluid-ounce{
                 dnam{"US fl oz"}
                 other{"{0} fl oz US"}
@@ -1380,14 +1626,18 @@
                 per{"{0}/गॅलो युएस"}
             }
             gallon-imperial{
-                dnam{"Imp. gal"}
-                other{"{0} gal Imp."}
-                per{"{0}/gal Imp."}
+                dnam{"इंप.गॅलोन"}
+                other{"{0} गॅल इंप."}
+                per{"{0}/गॅलोन इंप."}
             }
             hectoliter{
                 dnam{"hL"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"जिगर"}
+                other{"{0} जिगर"}
+            }
             liter{
                 dnam{"लिटर"}
                 other{"{0} लि"}
@@ -1401,8 +1651,12 @@
                 dnam{"मिलि"}
                 other{"{0} मिलि"}
             }
+            pinch{
+                dnam{"चिमटी"}
+                other{"{0} चिमटी"}
+            }
             pint{
-                dnam{"pt"}
+                dnam{"पाइंट"}
                 other{"{0} pt"}
             }
             pint-metric{
@@ -1413,6 +1667,10 @@
                 dnam{"क्वा"}
                 other{"{0} क्वा"}
             }
+            quart-imperial{
+                dnam{"क्वार्त इंप"}
+                other{"{0} qt Imp."}
+            }
             tablespoon{
                 dnam{"tbsp"}
                 other{"{0} tbsp"}
diff --git a/icu4c/source/data/unit/ks.txt b/icu4c/source/data/unit/ks.txt
index 2fce9d1..a126ad3 100644
--- a/icu4c/source/data/unit/ks.txt
+++ b/icu4c/source/data/unit/ks.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks{
-    Version{"37"}
     units{
         duration{
             day{
diff --git a/icu4c/source/data/unit/ks_Arab.txt b/icu4c/source/data/unit/ks_Arab.txt
index aafa093..f3d2206 100644
--- a/icu4c/source/data/unit/ks_Arab.txt
+++ b/icu4c/source/data/unit/ks_Arab.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks_Arab{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/ks_Arab_IN.txt b/icu4c/source/data/unit/ks_Arab_IN.txt
index a13c0c9..2d29f4c 100644
--- a/icu4c/source/data/unit/ks_Arab_IN.txt
+++ b/icu4c/source/data/unit/ks_Arab_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/ks_IN.txt b/icu4c/source/data/unit/ks_IN.txt
index fd8b52d..bd1a225 100644
--- a/icu4c/source/data/unit/ks_IN.txt
+++ b/icu4c/source/data/unit/ks_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks_IN{
     "%%ALIAS"{"ks_Arab_IN"}
 }
diff --git a/icu4c/source/data/unit/ksb.txt b/icu4c/source/data/unit/ksb.txt
index f4818ce..77a38c1 100644
--- a/icu4c/source/data/unit/ksb.txt
+++ b/icu4c/source/data/unit/ksb.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksb{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/ksf.txt b/icu4c/source/data/unit/ksf.txt
index bf1a877..710fb8b 100644
--- a/icu4c/source/data/unit/ksf.txt
+++ b/icu4c/source/data/unit/ksf.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksf{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/ksh.txt b/icu4c/source/data/unit/ksh.txt
index 7b2ef1e..2ceed82 100644
--- a/icu4c/source/data/unit/ksh.txt
+++ b/icu4c/source/data/unit/ksh.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksh{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/ku.txt b/icu4c/source/data/unit/ku.txt
index 46c727f..5c25185 100644
--- a/icu4c/source/data/unit/ku.txt
+++ b/icu4c/source/data/unit/ku.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ku{
-    Version{"37"}
     units{
         angle{
             arc-minute{
diff --git a/icu4c/source/data/unit/kw.txt b/icu4c/source/data/unit/kw.txt
index 5e7c801..c7bcb9f 100644
--- a/icu4c/source/data/unit/kw.txt
+++ b/icu4c/source/data/unit/kw.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kw{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/ky.txt b/icu4c/source/data/unit/ky.txt
index 6b08196..0a04c9a 100644
--- a/icu4c/source/data/unit/ky.txt
+++ b/icu4c/source/data/unit/ky.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ky{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -10,7 +10,7 @@
     units{
         acceleration{
             g-force{
-                dnam{"оордук күчүнүн ылдамдануусу"}
+                dnam{"оордук күчү"}
                 one{"{0} оордук күчү"}
                 other{"{0} оордук күчү"}
             }
@@ -105,7 +105,7 @@
             }
         }
         compound{
-            per{"{1}/{0}"}
+            per{"{0}/{1}"}
         }
         concentr{
             karat{
@@ -126,7 +126,7 @@
             mole{
                 dnam{"мольдор"}
                 one{"{0} моль"}
-                other{"{0} мольдор"}
+                other{"{0} моль"}
             }
             percent{
                 dnam{"пайыз"}
@@ -173,10 +173,10 @@
         }
         coordinate{
             dnam{"негизги багыт"}
-            east{"{0}Ч"}
-            north{"{0}Тн"}
-            south{"{0}Тш"}
-            west{"{0}Б"}
+            east{"{0} чыгыш"}
+            north{"{0} түндүк"}
+            south{"{0} түштүк"}
+            west{"{0} батыш"}
         }
         digital{
             bit{
@@ -248,7 +248,6 @@
                 per{"күнүнө {0}"}
             }
             decade{
-                dnam{"декадалар"}
                 one{"{0} он жылдык"}
                 other{"{0} он жылдык"}
             }
@@ -407,6 +406,11 @@
                 other{"{0} мегагерц"}
             }
         }
+        graphics{
+            dot{
+                dnam{"чекит"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"астрономиялык бирдик"}
@@ -424,6 +428,11 @@
                 one{"{0} дециметр"}
                 other{"{0} дециметр"}
             }
+            earth-radius{
+                dnam{"жер радиусу"}
+                one{"жер радиусу"}
+                other{"{0} жер радиусу"}
+            }
             foot{
                 dnam{"фут"}
                 one{"{0} фут"}
@@ -455,7 +464,7 @@
             }
             micrometer{
                 dnam{"микрометр"}
-                one{"микрометр"}
+                one{"{0} микрометр"}
                 other{"{0} микрометр"}
             }
             mile{
@@ -510,6 +519,16 @@
             }
         }
         light{
+            candela{
+                dnam{"кандела"}
+                one{"{0} кандела"}
+                other{"{0} кандела"}
+            }
+            lumen{
+                dnam{"люмен"}
+                one{"{0} люмен"}
+                other{"{0} люмен"}
+            }
             lux{
                 dnam{"люкс"}
                 one{"{0} люкс"}
@@ -537,6 +556,11 @@
                 one{"{0} Жер массасы"}
                 other{"{0} Жер массалары"}
             }
+            grain{
+                dnam{"грэйн"}
+                one{"{0} грэйн"}
+                other{"{0} грэйн"}
+            }
             gram{
                 dnam{"грамм"}
                 one{"{0} грамм"}
@@ -587,8 +611,8 @@
                 other{"{0} M☉"}
             }
             ton{
-                dnam{"тонна"}
-                one{"{0} тонна"}
+                dnam{"Америкалык тонна"}
+                one{"Америкалык тонна"}
                 other{"{0} тонна"}
             }
         }
@@ -646,9 +670,9 @@
                 other{"{0} kPa"}
             }
             megapascal{
-                dnam{"мегапаскалдар"}
-                one{"{0} MPa"}
-                other{"{0} MPa"}
+                dnam{"мегапаскаль"}
+                one{"{0} мегапаскаль"}
+                other{"{0} мегапаскаль"}
             }
             millibar{
                 dnam{"миллибар"}
@@ -701,8 +725,8 @@
             }
             generic{
                 dnam{"°"}
-                one{"{0}°"}
-                other{"{0}°"}
+                one{"{0} градус"}
+                other{"{0} градус"}
             }
             kelvin{
                 dnam{"Келвин градусу"}
@@ -733,6 +757,11 @@
                 one{"{0} bbl"}
                 other{"{0} bbl"}
             }
+            bushel{
+                dnam{"бушел"}
+                one{"{0} бушел"}
+                other{"{0} бушел"}
+            }
             centiliter{
                 dnam{"сантилитр"}
                 one{"{0} сантилитр"}
@@ -790,6 +819,16 @@
                 one{"{0} децилитр"}
                 other{"{0} децилитр"}
             }
+            dram{
+                dnam{"драм"}
+                one{"{0} драм"}
+                other{"{0} драм"}
+            }
+            drop{
+                dnam{"дроп"}
+                one{"{0} дроп"}
+                other{"{0} дроп"}
+            }
             fluid-ounce{
                 dnam{"суюк унция"}
                 one{"{0} суюк унция"}
@@ -798,7 +837,7 @@
             fluid-ounce-imperial{
                 dnam{"Имп. суюктук унциялары"}
                 one{"{0} Имп. суюктук унциялары"}
-                other{"{0} имп. суюктук унциялары"}
+                other{"{0} имп. суюктук унциясы"}
             }
             gallon{
                 dnam{"галлон"}
@@ -817,6 +856,11 @@
                 one{"{0} гектолитр"}
                 other{"{0} гектолитр"}
             }
+            jigger{
+                dnam{"жиггер"}
+                one{"{0} жиггер"}
+                other{"{0} жиггер"}
+            }
             liter{
                 dnam{"литр"}
                 one{"{0} литр"}
@@ -833,6 +877,11 @@
                 one{"{0} миллилитр"}
                 other{"{0} миллилитр"}
             }
+            pinch{
+                dnam{"пинч"}
+                one{"{0} пинч"}
+                other{"{0} пинч"}
+            }
             pint{
                 dnam{"пинта"}
                 one{"{0} пинта"}
@@ -908,7 +957,7 @@
             }
         }
         compound{
-            per{"{1}/{0}"}
+            per{"{0}/{1}"}
         }
         concentr{
             percent{
@@ -1026,7 +1075,6 @@
                 other{"{0} гр"}
             }
             kilogram{
-                dnam{"килограмм"}
                 one{"{0} кг"}
                 other{"{0} кг"}
             }
@@ -1112,7 +1160,7 @@
     unitsShort{
         acceleration{
             g-force{
-                dnam{"оордук күчүнүн ылдамдануусу"}
+                dnam{"оордук күчү"}
                 one{"{0} о.к."}
                 other{"{0} о.к."}
             }
@@ -1135,8 +1183,8 @@
             }
             degree{
                 dnam{"градус"}
-                one{"{0}°"}
-                other{"{0}°"}
+                one{"{0} град"}
+                other{"{0} град"}
             }
             radian{
                 dnam{"рад."}
@@ -1169,7 +1217,7 @@
                 dnam{"см²"}
                 one{"{0} см²"}
                 other{"{0} см²"}
-                per{"см²/{0}"}
+                per{"{0}/см²"}
             }
             square-foot{
                 dnam{"чарчы фут"}
@@ -1180,7 +1228,7 @@
                 dnam{"дюйм²"}
                 one{"{0} дюйм²"}
                 other{"{0} дюйм²"}
-                per{"дюйм²/{0}"}
+                per{"{0}/дюйм²"}
             }
             square-kilometer{
                 dnam{"км²"}
@@ -1192,13 +1240,13 @@
                 dnam{"метр²"}
                 one{"{0} м²"}
                 other{"{0} м²"}
-                per{"м²/{0}"}
+                per{"{0}/м²"}
             }
             square-mile{
                 dnam{"чарчы миля"}
                 one{"{0} мл²"}
                 other{"{0} мл²"}
-                per{"mi²/{0}"}
+                per{"{0}/ми²"}
             }
             square-yard{
                 dnam{"ярд²"}
@@ -1207,7 +1255,7 @@
             }
         }
         compound{
-            per{"{1}/{0}"}
+            per{"{0}/{1}"}
         }
         concentr{
             karat{
@@ -1216,12 +1264,12 @@
                 other{"{0} кт"}
             }
             milligram-per-deciliter{
-                dnam{"мг/Дл"}
-                one{"{0} мг/Дл"}
-                other{"{0} мг/Дл"}
+                dnam{"мг/дл"}
+                one{"{0} мг/дл"}
+                other{"{0} мг/дл"}
             }
             millimole-per-liter{
-                dnam{"ммоль/л"}
+                dnam{"миллимоль/литр"}
                 one{"{0} ммоль/л"}
                 other{"{0} ммоль/л"}
             }
@@ -1253,12 +1301,12 @@
         }
         consumption{
             liter-per-100-kilometer{
-                dnam{"100 км/л"}
+                dnam{"л/100 км"}
                 one{"{0} л/100км"}
                 other{"{0} л/100км"}
             }
             liter-per-kilometer{
-                dnam{"км/литр"}
+                dnam{"литр/км"}
                 one{"{0} л/км"}
                 other{"{0} л/км"}
             }
@@ -1276,9 +1324,9 @@
         coordinate{
             dnam{"багыт"}
             east{"{0}Ч"}
-            north{"{0}Тн"}
-            south{"{0}Тш"}
-            west{"{0}Б"}
+            north{"{0} Тн"}
+            south{"{0} Тш"}
+            west{"{0} Б"}
         }
         digital{
             bit{
@@ -1347,7 +1395,7 @@
                 dnam{"күн"}
                 one{"{0} күн"}
                 other{"{0} күн"}
-                per{"күн/{0}"}
+                per{"{0}/күн"}
             }
             decade{
                 dnam{"он жылдык"}
@@ -1358,7 +1406,7 @@
                 dnam{"саат"}
                 one{"{0} ст"}
                 other{"{0} ст"}
-                per{"ст/{0}"}
+                per{"{0}/ст"}
             }
             microsecond{
                 dnam{"μсек"}
@@ -1374,7 +1422,7 @@
                 dnam{"мүнөт"}
                 one{"{0} мүн"}
                 other{"{0} мүн"}
-                per{"мүн/{0}"}
+                per{"{0}/мүн"}
             }
             month{
                 dnam{"ай"}
@@ -1391,19 +1439,19 @@
                 dnam{"секунд"}
                 one{"{0} сек"}
                 other{"{0} сек"}
-                per{"сек/{0}"}
+                per{"{0}/сек"}
             }
             week{
                 dnam{"апта"}
                 one{"{0} апт"}
                 other{"{0} апт"}
-                per{"апт/{0}"}
+                per{"{0}/апт"}
             }
             year{
                 dnam{"жыл"}
-                one{"{0} ж."}
+                one{"{0}-ж."}
                 other{"{0} ж."}
-                per{"ж/{0}"}
+                per{"{0}/ж"}
             }
         }
         electric{
@@ -1509,6 +1557,13 @@
                 other{"{0} МГЦ"}
             }
         }
+        graphics{
+            dot{
+                dnam{"графикалык чекит"}
+                one{"{0} графикалык чекит"}
+                other{"{0} графикалык чекит"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"а. б."}
@@ -1519,7 +1574,7 @@
                 dnam{"см"}
                 one{"{0} см"}
                 other{"{0} см"}
-                per{"см/{0}"}
+                per{"{0}/см"}
             }
             decimeter{
                 dnam{"дм"}
@@ -1530,19 +1585,19 @@
                 dnam{"фут"}
                 one{"{0} фут"}
                 other{"{0} фут"}
-                per{"ф/{0}"}
+                per{"{0}/ф"}
             }
             inch{
                 dnam{"дюйм"}
                 one{"{0} дюйм"}
                 other{"{0} дюйм"}
-                per{"д/{0}"}
+                per{"{0}/д"}
             }
             kilometer{
                 dnam{"км"}
                 one{"{0} км"}
                 other{"{0} км"}
-                per{"км/{0}"}
+                per{"{0}/км"}
             }
             light-year{
                 dnam{"жарык жыл"}
@@ -1553,7 +1608,7 @@
                 dnam{"метр"}
                 one{"{0} м"}
                 other{"{0} м"}
-                per{"м/{0}"}
+                per{"{0}/м"}
             }
             micrometer{
                 dnam{"µметр"}
@@ -1588,7 +1643,7 @@
             parsec{
                 dnam{"парсек"}
                 one{"{0} пк"}
-                other{"{0} пк"}
+                other{"{0} пс"}
             }
             picometer{
                 dnam{"пм"}
@@ -1639,6 +1694,11 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"грэйн"}
+                one{"{0} грэйн"}
+                other{"{0} грэйн"}
+            }
             gram{
                 dnam{"грамм"}
                 one{"{0} гр"}
@@ -1646,10 +1706,10 @@
                 per{"гр/{0}"}
             }
             kilogram{
-                dnam{"килограмм"}
+                dnam{"кг"}
                 one{"{0} кг"}
                 other{"{0} кг"}
-                per{"кг/{0}"}
+                per{"{0}/кг"}
             }
             metric-ton{
                 dnam{"т"}
@@ -1689,9 +1749,9 @@
                 other{"{0} M☉"}
             }
             ton{
-                dnam{"тонна"}
-                one{"{0} тон."}
-                other{"{0} тон."}
+                dnam{"Америкалык тонна"}
+                one{"{0} АКШ тон."}
+                other{"{0} АКШ тон."}
             }
         }
         power{
@@ -1730,7 +1790,7 @@
             atmosphere{
                 dnam{"атм"}
                 one{"{0} атм"}
-                other{"{0} атмс"}
+                other{"{0} атм"}
             }
             hectopascal{
                 dnam{"гПа"}
@@ -1835,6 +1895,9 @@
                 one{"{0} bbl"}
                 other{"{0} bbl"}
             }
+            bushel{
+                dnam{"бушел"}
+            }
             centiliter{
                 dnam{"сЛ"}
                 one{"{0} сЛ"}
@@ -1844,7 +1907,7 @@
                 dnam{"см³"}
                 one{"{0} см³"}
                 other{"{0} см³"}
-                per{"см³/{0}"}
+                per{"{0}/см³"}
             }
             cubic-foot{
                 dnam{"фут³"}
@@ -1865,7 +1928,7 @@
                 dnam{"м³"}
                 one{"{0} м³"}
                 other{"{0} м³"}
-                per{"м³/{0}"}
+                per{"{0}/м³"}
             }
             cubic-mile{
                 dnam{"мил³"}
@@ -1892,6 +1955,14 @@
                 one{"{0} дл"}
                 other{"{0} дл"}
             }
+            dram{
+                dnam{"драм суюктук"}
+            }
+            drop{
+                dnam{"дроп"}
+                one{"{0} дроп"}
+                other{"{0} дроп"}
+            }
             fluid-ounce{
                 dnam{"с. унц."}
                 one{"{0} с. унц."}
@@ -1906,7 +1977,7 @@
                 dnam{"гал"}
                 one{"{0} гал"}
                 other{"{0} гал"}
-                per{"гал/{0}"}
+                per{"{0}/АКШ гал"}
             }
             gallon-imperial{
                 dnam{"англ. гал"}
@@ -1919,11 +1990,16 @@
                 one{"{0} гл"}
                 other{"{0} гл"}
             }
+            jigger{
+                dnam{"жиггер"}
+                one{"{0} жиггер"}
+                other{"{0} жиггер"}
+            }
             liter{
                 dnam{"литр"}
                 one{"{0} л"}
                 other{"{0} л"}
-                per{"л/{0}"}
+                per{"{0}/л"}
             }
             megaliter{
                 dnam{"мгл"}
@@ -1935,6 +2011,11 @@
                 one{"{0} мл"}
                 other{"{0} мл"}
             }
+            pinch{
+                dnam{"пинч"}
+                one{"{0} пинч"}
+                other{"{0} пинч"}
+            }
             pint{
                 dnam{"пт"}
                 one{"{0} пт"}
diff --git a/icu4c/source/data/unit/lag.txt b/icu4c/source/data/unit/lag.txt
index c34bb7f..b382d6d 100644
--- a/icu4c/source/data/unit/lag.txt
+++ b/icu4c/source/data/unit/lag.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lag{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/lb.txt b/icu4c/source/data/unit/lb.txt
index d602b3f..3143f4a 100644
--- a/icu4c/source/data/unit/lb.txt
+++ b/icu4c/source/data/unit/lb.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lb{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/lg.txt b/icu4c/source/data/unit/lg.txt
index 0f448ef..d511f9e 100644
--- a/icu4c/source/data/unit/lg.txt
+++ b/icu4c/source/data/unit/lg.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lg{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/lkt.txt b/icu4c/source/data/unit/lkt.txt
index 4e123b5..4a5ccae 100644
--- a/icu4c/source/data/unit/lkt.txt
+++ b/icu4c/source/data/unit/lkt.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lkt{
-    Version{"37"}
     units{
         duration{
             day{
diff --git a/icu4c/source/data/unit/ln.txt b/icu4c/source/data/unit/ln.txt
index 5d72bde..fbb6e92 100644
--- a/icu4c/source/data/unit/ln.txt
+++ b/icu4c/source/data/unit/ln.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ln{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/lo.txt b/icu4c/source/data/unit/lo.txt
index 7fdd44a..06d0c6f 100644
--- a/icu4c/source/data/unit/lo.txt
+++ b/icu4c/source/data/unit/lo.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lo{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -14,8 +14,8 @@
                 other{"{0} ແຮງຕົກຕາມລຳພັງ"}
             }
             meter-per-square-second{
-                dnam{"m/s²"}
-                other{"{0} m/s²"}
+                dnam{"ແມັດຕໍ່ວິນາທີກໍາລັງສອງ"}
+                other{"{0} ແມັດຕໍ່ວິນາທີກໍາລັງສອງ"}
             }
         }
         angle{
@@ -332,6 +332,12 @@
                 other{"{0} MHz"}
             }
         }
+        graphics{
+            dot{
+                dnam{"ດັອດ"}
+                other{"{0} ດັອດ"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"astronomical units"}
@@ -346,6 +352,10 @@
                 dnam{"ເດຊີແມັດ"}
                 other{"{0} ເດຊີແມັດ"}
             }
+            fathom{
+                dnam{"ftm"}
+                other{"{0} ftm"}
+            }
             foot{
                 dnam{"ຟຸດ"}
                 other{"{0} ຟຸດ"}
@@ -416,6 +426,14 @@
             }
         }
         light{
+            candela{
+                dnam{"ແຄນເດລາ"}
+                other{"{0} ແຄນເດລາ"}
+            }
+            lumen{
+                dnam{"ລູເມນ"}
+                other{"{0} ລູເມນ"}
+            }
             lux{
                 dnam{"lux"}
                 other{"{0} lux"}
@@ -438,6 +456,10 @@
                 dnam{"ມວນ​ສານ​ໜ່ວຍ​ໂລກ"}
                 other{"{0} ມວນ​ສານ​ໜ່ວຍ​ໂລກ"}
             }
+            grain{
+                dnam{"ເກຣນ"}
+                other{"{0} ເກຣນ"}
+            }
             gram{
                 dnam{"ກຣາມ"}
                 other{"{0} ກຣາມ"}
@@ -457,8 +479,8 @@
                 other{"{0} µg"}
             }
             milligram{
-                dnam{"mg"}
-                other{"{0} mg"}
+                dnam{"ມິນລີກຣາມ"}
+                other{"{0} ມິນລີກຣາມ"}
             }
             ounce{
                 dnam{"ອອນສ"}
@@ -478,6 +500,10 @@
                 dnam{"ມວນ​ສານດວງ​ຕາ​ເວັນ"}
                 other{"{0} ມວນ​ສານດວງ​ຕາ​ເວັນ"}
             }
+            stone{
+                dnam{"stones"}
+                other{"{0} stones"}
+            }
             ton{
                 dnam{"ໂຕນ"}
                 other{"{0} ໂຕນ"}
@@ -519,8 +545,8 @@
                 other{"{0} hectopascals"}
             }
             inch-ofhg{
-                dnam{"in Hg"}
-                other{"{0} inches of mercury"}
+                dnam{"ນິ້ວໃນບາຫຼອດ"}
+                other{"{0} ນິ້ວໃນບາຫຼອດ"}
             }
             kilopascal{
                 dnam{"ກິ​ໂລ​ປາ​ສ​ການ"}
@@ -535,12 +561,12 @@
                 other{"{0} ມິນລິບາ"}
             }
             millimeter-ofhg{
-                dnam{"mm Hg"}
-                other{"{0} mm Hg"}
+                dnam{"ມິນລີແມັດໃນບາຫຼອດ"}
+                other{"{0} ມິນລີແມັດໃນບາຫຼອດ"}
             }
             pound-force-per-square-inch{
-                dnam{"pounds per square inch"}
-                other{"{0} pounds per square inch"}
+                dnam{"ປອນຕໍ່ຕະລາງນິ້້ວ"}
+                other{"{0} ປອນຕໍ່ຕະລາງນິ້້ວ"}
             }
         }
         speed{
@@ -644,6 +670,14 @@
                 dnam{"dL"}
                 other{"{0} dL"}
             }
+            dram{
+                dnam{"ແດຣມ"}
+                other{"{0} ແດຣມ"}
+            }
+            drop{
+                dnam{"ຢອດ"}
+                other{"{0} ຢອດ"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 other{"{0} fl oz"}
@@ -675,6 +709,10 @@
                 dnam{"mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"ຢິບ"}
+                other{"{0} ຢິບ"}
+            }
             pint{
                 dnam{"pt"}
                 other{"{0} pt"}
@@ -911,8 +949,8 @@
                 other{"{0} G"}
             }
             meter-per-square-second{
-                dnam{"m/s²"}
-                other{"{0} m/s²"}
+                dnam{"ແມັດ/ວິນາທີ²"}
+                other{"{0} ມ/ວນທ²"}
             }
         }
         angle{
@@ -1203,6 +1241,12 @@
                 other{"{0} MHz"}
             }
         }
+        graphics{
+            dot{
+                dnam{"ດັອດ"}
+                other{"{0} ດັອດ"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"au"}
@@ -1217,6 +1261,10 @@
                 dnam{"ດມ"}
                 other{"{0} ດມ"}
             }
+            fathom{
+                dnam{"ftm"}
+                other{"{0} ftm"}
+            }
             foot{
                 dnam{"ຟຸດ"}
                 other{"{0} ຟ"}
@@ -1293,6 +1341,10 @@
                 dnam{"CD"}
                 other{"{0} CD"}
             }
+            grain{
+                dnam{"gr"}
+                other{"{0} gr"}
+            }
             gram{
                 dnam{"ກຣາມ"}
                 other{"{0} ກຼ"}
@@ -1473,6 +1525,14 @@
                 dnam{"dL"}
                 other{"{0} dL"}
             }
+            dram{
+                dnam{"dr fl"}
+                other{"{0} dr fl"}
+            }
+            drop{
+                dnam{"ຢອດ"}
+                other{"{0} ຢອດ"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 other{"{0} fl oz"}
@@ -1504,6 +1564,10 @@
                 dnam{"mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"ຢິບ"}
+                other{"{0} ຢິບ"}
+            }
             pint{
                 dnam{"pt"}
                 other{"{0} pt"}
diff --git a/icu4c/source/data/unit/lrc.txt b/icu4c/source/data/unit/lrc.txt
index 0dadb3d..45cb518 100644
--- a/icu4c/source/data/unit/lrc.txt
+++ b/icu4c/source/data/unit/lrc.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lrc{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/lt.txt b/icu4c/source/data/unit/lt.txt
index 2c08fc1..9bcdab4 100644
--- a/icu4c/source/data/unit/lt.txt
+++ b/icu4c/source/data/unit/lt.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lt{
-    Version{"37"}
     durationUnits{
         hm{"hh:mm"}
         hms{"hh:mm:ss"}
@@ -539,6 +539,13 @@
             }
         }
         graphics{
+            dot{
+                dnam{"taškas"}
+                few{"{0} taškai"}
+                many{"{0} taško"}
+                one{"{0} taškas"}
+                other{"{0} taškų"}
+            }
             dot-per-centimeter{
                 dnam{"taškai centimetre"}
                 few{"{0} taškai centimetre"}
@@ -608,6 +615,13 @@
                 one{"{0} decimetras"}
                 other{"{0} decimetrų"}
             }
+            earth-radius{
+                dnam{"žemės spindulys"}
+                few{"{0} R⊕"}
+                many{"{0} R⊕"}
+                one{"{0} žemės spindulys"}
+                other{"{0} žemės spindulių"}
+            }
             fathom{
                 dnam{"fadomai"}
                 few{"{0} fadomai"}
@@ -736,6 +750,20 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                few{"{0} cd"}
+                many{"{0} cd"}
+                one{"{0} kandela"}
+                other{"{0} kandelų"}
+            }
+            lumen{
+                dnam{"liumenas"}
+                few{"{0} lm"}
+                many{"{0} lm"}
+                one{"{0} liumenas"}
+                other{"{0} liumenų"}
+            }
             lux{
                 dnam{"liuksai"}
                 few{"{0} liuksai"}
@@ -765,6 +793,13 @@
             earth-mass{
                 dnam{"žemės masė"}
             }
+            grain{
+                dnam{"grūdas"}
+                few{"{0} grūdai"}
+                many{"{0} grūdo"}
+                one{"{0} grūdas"}
+                other{"{0} grūdų"}
+            }
             gram{
                 dnam{"gramai"}
                 few{"{0} gramai"}
@@ -1132,6 +1167,34 @@
                 one{"{0} decilitras"}
                 other{"{0} decilitrų"}
             }
+            dessert-spoon{
+                dnam{"desertinis šaukštelis"}
+                few{"{0} desertiniai šaukšteliai"}
+                many{"{0} desertinio šaukštelio"}
+                one{"{0} desertinis šaukštelis"}
+                other{"{0} desertinių šaukštelių"}
+            }
+            dessert-spoon-imperial{
+                dnam{"imp. desertinis šaukštelis"}
+                few{"{0} imp. desertiniai šaukšteliai"}
+                many{"{0} imp. desertinio šaukštelio"}
+                one{"{0} imp. desertinis šaukštelis"}
+                other{"{0} imp. desertinių šaukštelių"}
+            }
+            dram{
+                dnam{"skysčio drachma"}
+                few{"{0} skysčio drachmos"}
+                many{"{0} skysčio drachmos"}
+                one{"{0} skysčio drachma"}
+                other{"{0} skysčio drachmų"}
+            }
+            drop{
+                dnam{"lašas"}
+                few{"{0} lašai"}
+                many{"{0} lašo"}
+                one{"{0} lašas"}
+                other{"{0} lašų"}
+            }
             fluid-ounce{
                 dnam{"skysčio uncijos"}
                 few{"{0} skysčio uncijos"}
@@ -1169,6 +1232,13 @@
                 one{"{0} hektolitras"}
                 other{"{0} hektolitrų"}
             }
+            jigger{
+                dnam{"džigeris"}
+                few{"{0} džigeriai"}
+                many{"{0} džigerio"}
+                one{"{0} džigeris"}
+                other{"{0} džigerio"}
+            }
             liter{
                 dnam{"litrai"}
                 few{"{0} litrai"}
@@ -1191,6 +1261,13 @@
                 one{"{0} mililitras"}
                 other{"{0} mililitrų"}
             }
+            pinch{
+                dnam{"žiupsnelis"}
+                few{"{0} žiupsneliai"}
+                many{"{0} žiupsnelio"}
+                one{"{0} žiupsnelių"}
+                other{"{0} žiupsnelis"}
+            }
             pint{
                 dnam{"pintos"}
                 few{"{0} pintos"}
@@ -1212,6 +1289,13 @@
                 one{"{0} kvorta"}
                 other{"{0} kvortų"}
             }
+            quart-imperial{
+                dnam{"imp. kvorta"}
+                few{"{0} imp. kvortos"}
+                many{"{0} imp. kvortos"}
+                one{"{0} imp. kvorta"}
+                other{"{0} imp. kvortų"}
+            }
             tablespoon{
                 dnam{"valgomieji šaukštai"}
                 few{"{0} valgomieji šaukštai"}
@@ -2231,6 +2315,13 @@
             }
         }
         graphics{
+            dot{
+                dnam{"tšk."}
+                few{"{0} tšk."}
+                many{"{0} tšk."}
+                one{"{0} tšk."}
+                other{"{0} tšk."}
+            }
             dot-per-centimeter{
                 dnam{"taškai centimetre"}
                 few{"{0} tšk./cm"}
@@ -2292,6 +2383,13 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                few{"{0} R⊕"}
+                many{"{0} R⊕"}
+                one{"{0} R⊕"}
+                other{"{0} R⊕"}
+            }
             fathom{
                 dnam{"fth"}
                 few{"{0} fth"}
@@ -2417,6 +2515,20 @@
             }
         }
         light{
+            candela{
+                dnam{"cd"}
+                few{"{0} cd"}
+                many{"{0} cd"}
+                one{"{0} cd"}
+                other{"{0} cd"}
+            }
+            lumen{
+                dnam{"lm"}
+                few{"{0} lm"}
+                many{"{0} lm"}
+                one{"{0} lm"}
+                other{"{0} lm"}
+            }
             lux{
                 dnam{"lx"}
                 few{"{0} lx"}
@@ -2433,6 +2545,13 @@
                 one{"{0} ct"}
                 other{"{0} ct"}
             }
+            grain{
+                dnam{"grūdas"}
+                few{"{0} grūdai"}
+                many{"{0} grūdo"}
+                one{"{0} grūdas"}
+                other{"{0} grūdų"}
+            }
             gram{
                 dnam{"g"}
                 few{"{0} g"}
@@ -2769,6 +2888,34 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"des. š."}
+                few{"{0} des. š."}
+                many{"{0} des. š."}
+                one{"{0} des. š."}
+                other{"{0} des. š."}
+            }
+            dessert-spoon-imperial{
+                dnam{"imp. des. š."}
+                few{"{0} imp. des. š."}
+                many{"{0} imp. des. š."}
+                one{"{0} imp. des. š."}
+                other{"{0} imp. des. š."}
+            }
+            dram{
+                dnam{"sk. drach."}
+                few{"{0} sk. drach."}
+                many{"{0} sk. drach."}
+                one{"{0} sk. drach."}
+                other{"{0} sk. drach."}
+            }
+            drop{
+                dnam{"laš."}
+                few{"{0} laš."}
+                many{"{0} laš."}
+                one{"{0} laš."}
+                other{"{0} laš."}
+            }
             fluid-ounce{
                 dnam{"skysčio oz"}
                 few{"{0} skysčio oz"}
@@ -2806,6 +2953,13 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"džigeris"}
+                few{"{0} džigeriai"}
+                many{"{0} džigerio"}
+                one{"{0} džigeris"}
+                other{"{0} džigerio"}
+            }
             liter{
                 dnam{"litrai"}
                 few{"{0} l"}
@@ -2828,6 +2982,13 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"žiupsn."}
+                few{"{0} žiupsn."}
+                many{"{0} žiupsn."}
+                one{"{0} žiupsn."}
+                other{"{0} žiupsn."}
+            }
             pint{
                 dnam{"pintos"}
                 few{"{0} pt"}
@@ -2849,6 +3010,13 @@
                 one{"{0} kvorta"}
                 other{"{0} kvortų"}
             }
+            quart-imperial{
+                dnam{"imp. kv."}
+                few{"{0} imp. kv."}
+                many{"{0} imp. kv."}
+                one{"{0} imp. kv."}
+                other{"{0} imp. kv."}
+            }
             tablespoon{
                 dnam{"v. š."}
                 few{"{0} v. š."}
diff --git a/icu4c/source/data/unit/lu.txt b/icu4c/source/data/unit/lu.txt
index abe8001..5932327 100644
--- a/icu4c/source/data/unit/lu.txt
+++ b/icu4c/source/data/unit/lu.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lu{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/luo.txt b/icu4c/source/data/unit/luo.txt
index 4a1add6..47bd822 100644
--- a/icu4c/source/data/unit/luo.txt
+++ b/icu4c/source/data/unit/luo.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 luo{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/luy.txt b/icu4c/source/data/unit/luy.txt
index a1e374c..b3fda21 100644
--- a/icu4c/source/data/unit/luy.txt
+++ b/icu4c/source/data/unit/luy.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 luy{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/lv.txt b/icu4c/source/data/unit/lv.txt
index 974b2cf..fed680b 100644
--- a/icu4c/source/data/unit/lv.txt
+++ b/icu4c/source/data/unit/lv.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lv{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -16,10 +16,10 @@
                 zero{"{0} smagumspēku"}
             }
             meter-per-square-second{
-                dnam{"metri kvadrātsekundē"}
-                one{"{0} metrs kvadrātsekundē"}
-                other{"{0} metri kvadrātsekundē"}
-                zero{"{0} metru kvadrātsekundē"}
+                dnam{"metri sekundē kvadrātā"}
+                one{"{0} metrs sekundē kvadrātā"}
+                other{"{0} metri sekundē kvadrātā"}
+                zero{"{0} metru sekundē kvadrātā"}
             }
         }
         angle{
@@ -478,6 +478,9 @@
             }
         }
         graphics{
+            dot{
+                dnam{"punkts"}
+            }
             dot-per-centimeter{
                 dnam{"punkti centimetrā"}
                 one{"{0} punkts centimetrā"}
@@ -535,6 +538,12 @@
                 other{"{0} decimetri"}
                 zero{"{0} decimetru"}
             }
+            earth-radius{
+                dnam{"Zemes rādiuss"}
+                one{"{0} Zemes rādiuss"}
+                other{"{0} Zemes rādiuss"}
+                zero{"{0} R⊕"}
+            }
             fathom{
                 dnam{"fatomi"}
                 one{"{0} fatoms"}
@@ -649,6 +658,18 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                one{"{0} kandela"}
+                other{"{0} kandelas"}
+                zero{"{0} kandelu"}
+            }
+            lumen{
+                dnam{"lūmens"}
+                one{"{0} lūmens"}
+                other{"{0} lūmeni"}
+                zero{"{0} lūmenu"}
+            }
             lux{
                 dnam{"lukss"}
                 one{"{0} lukss"}
@@ -681,6 +702,12 @@
                 other{"{0} Zemes masas"}
                 zero{"{0} M⊕"}
             }
+            grain{
+                dnam{"grans"}
+                one{"{0} grans"}
+                other{"{0} grana"}
+                zero{"{0} granu"}
+            }
             gram{
                 dnam{"grami"}
                 one{"{0} grams"}
@@ -920,7 +947,7 @@
         }
         volume{
             acre-foot{
-                dnam{"akrpēdas"}
+                dnam{"akrpēda"}
                 one{"{0} akrpēda"}
                 other{"{0} akrpēdas"}
                 zero{"{0} akrpēdu"}
@@ -931,6 +958,12 @@
                 other{"{0} bareli"}
                 zero{"{0} bbl"}
             }
+            bushel{
+                dnam{"bušelis"}
+                one{"{0} bušelis"}
+                other{"{0} bušeļi"}
+                zero{"{0} bušeļu"}
+            }
             centiliter{
                 dnam{"centilitri"}
                 one{"{0} centilitrs"}
@@ -999,6 +1032,30 @@
                 other{"{0} decilitri"}
                 zero{"{0} decilitru"}
             }
+            dessert-spoon{
+                dnam{"deserta karote"}
+                one{"{0} deserta karote"}
+                other{"{0} deserta karotes"}
+                zero{"{0} deserta karošu"}
+            }
+            dessert-spoon-imperial{
+                dnam{"britu deserta karote"}
+                one{"{0} britu deserta karote"}
+                other{"{0} britu deserta karotes"}
+                zero{"{0} britu deserta karošu"}
+            }
+            dram{
+                dnam{"šķidruma drahma"}
+                one{"{0} šķidruma drahma"}
+                other{"{0} šķidruma drahmas"}
+                zero{"{0} šķidruma drahmu"}
+            }
+            drop{
+                dnam{"piliens"}
+                one{"{0} piliens"}
+                other{"{0} pilieni"}
+                zero{"{0} pilienu"}
+            }
             fluid-ounce{
                 dnam{"šķidruma unces"}
                 one{"{0} šķidruma unce"}
@@ -1031,6 +1088,12 @@
                 other{"{0} hektolitri"}
                 zero{"{0} hektolitru"}
             }
+            jigger{
+                dnam{"mērglāzīte"}
+                one{"{0} mērglāzīte"}
+                other{"{0} mērglāzītes"}
+                zero{"{0} mērglāzīšu"}
+            }
             liter{
                 dnam{"litri"}
                 one{"{0} litrs"}
@@ -1050,6 +1113,12 @@
                 other{"{0} mililitri"}
                 zero{"{0} mililitru"}
             }
+            pinch{
+                dnam{"šķipsniņa"}
+                one{"{0} šķipsniņa"}
+                other{"{0} šķipsniņas"}
+                zero{"{0} šķipsniņu"}
+            }
             pint{
                 dnam{"pintes"}
                 one{"{0} pinte"}
@@ -1068,6 +1137,12 @@
                 other{"{0} kvartas"}
                 zero{"{0} kvartu"}
             }
+            quart-imperial{
+                dnam{"britu kvarta"}
+                one{"{0} britu kvarta"}
+                other{"{0} britu kvartas"}
+                zero{"{0} britu kvartu"}
+            }
             tablespoon{
                 dnam{"ēdamkarotes"}
                 one{"{0} ēdamkarote"}
@@ -1405,7 +1480,7 @@
                 dnam{"km/h"}
                 one{"{0} km/h"}
                 other{"{0} km/h"}
-                zero{"{0}km/h"}
+                zero{"{0} km/h"}
             }
             knot{
                 dnam{"mezgls"}
@@ -1451,9 +1526,6 @@
             }
             liter{
                 dnam{"l"}
-                one{"{0} l"}
-                other{"{0} l"}
-                zero{"{0}l"}
             }
         }
     }
@@ -1466,7 +1538,7 @@
                 zero{"{0} G"}
             }
             meter-per-square-second{
-                dnam{"metri kvadrātsekundē"}
+                dnam{"metri sekundē kvadrātā"}
                 one{"{0} m/s²"}
                 other{"{0} m/s²"}
                 zero{"{0} m/s²"}
@@ -1587,10 +1659,10 @@
                 zero{"{0} mg/dl"}
             }
             millimole-per-liter{
-                dnam{"mmol/L"}
-                one{"{0} mmol/L"}
-                other{"{0} mmol/L"}
-                zero{"{0} mmol/L"}
+                dnam{"mmol/l"}
+                one{"{0} mmol/l"}
+                other{"{0} mmol/l"}
+                zero{"{0} mmol/l"}
             }
             mole{
                 dnam{"mols"}
@@ -1920,6 +1992,12 @@
             }
         }
         graphics{
+            dot{
+                dnam{"punkts"}
+                one{"{0} p."}
+                other{"{0} p."}
+                zero{"{0} p."}
+            }
             dot-per-centimeter{
                 dnam{"dpc"}
                 one{"{0} dpc"}
@@ -2060,6 +2138,12 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+            }
+            lumen{
+                dnam{"lūmens"}
+            }
             lux{
                 dnam{"lukss"}
                 one{"{0} lx"}
@@ -2092,6 +2176,12 @@
                 other{"{0} M⊕"}
                 zero{"{0} M⊕"}
             }
+            grain{
+                dnam{"gr."}
+                one{"{0} gr."}
+                other{"{0} gr."}
+                zero{"{0} gr."}
+            }
             gram{
                 dnam{"grami"}
                 one{"{0} g"}
@@ -2310,7 +2400,7 @@
                 dnam{"mārciņpēda"}
                 one{"{0} mārc. pēda"}
                 other{"{0} mārc. pēdas"}
-                zero{"{0} mārc. pēdas"}
+                zero{"{0} mārc. pēdu"}
             }
         }
         volume{
@@ -2383,10 +2473,10 @@
                 zero{"{0} gl."}
             }
             cup-metric{
-                dnam{"metr.gl."}
-                one{"{0} metr.gl."}
-                other{"{0} metr.gl."}
-                zero{"{0} metr.gl."}
+                dnam{"metr. gl."}
+                one{"{0} metr. gl."}
+                other{"{0} metr. gl."}
+                zero{"{0} metr. gl."}
             }
             deciliter{
                 dnam{"dl"}
@@ -2394,6 +2484,30 @@
                 other{"{0} dl"}
                 zero{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"des. kar."}
+                one{"{0} des. kar."}
+                other{"{0} des. kar."}
+                zero{"{0} des. kar."}
+            }
+            dessert-spoon-imperial{
+                dnam{"britu des. kar."}
+                one{"{0} britu des. kar."}
+                other{"{0} britu des. kar."}
+                zero{"{0} britu des. kar."}
+            }
+            dram{
+                dnam{"šķidruma drahma"}
+                one{"{0} šķ. drahma"}
+                other{"{0} šķ. drahmas"}
+                zero{"{0} šķi. drahmu"}
+            }
+            drop{
+                dnam{"pil."}
+                one{"{0} pil."}
+                other{"{0} pil."}
+                zero{"{0} pil."}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -2426,6 +2540,12 @@
                 other{"{0} hl"}
                 zero{"{0} hl"}
             }
+            jigger{
+                dnam{"mērglāzīte"}
+                one{"{0} mērgl."}
+                other{"{0} mērgl."}
+                zero{"{0} mērgl."}
+            }
             liter{
                 dnam{"l"}
                 one{"{0} l"}
@@ -2445,6 +2565,12 @@
                 other{"{0} ml"}
                 zero{"{0} ml"}
             }
+            pinch{
+                dnam{"šķips."}
+                one{"{0} šķips."}
+                other{"{0} šķips."}
+                zero{"{0} šķips."}
+            }
             pint{
                 dnam{"pintes"}
                 one{"{0} pt"}
@@ -2463,6 +2589,12 @@
                 other{"{0} qt"}
                 zero{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"IQT"}
+                one{"{0} IQT"}
+                other{"{0} IQT"}
+                zero{"{0} IQT"}
+            }
             tablespoon{
                 dnam{"ĒK"}
                 one{"{0} ĒK"}
diff --git a/icu4c/source/data/unit/mai.txt b/icu4c/source/data/unit/mai.txt
index fa81ebb..a5be8d7 100644
--- a/icu4c/source/data/unit/mai.txt
+++ b/icu4c/source/data/unit/mai.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mai{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/mas.txt b/icu4c/source/data/unit/mas.txt
index e679bf5..b1e1c71 100644
--- a/icu4c/source/data/unit/mas.txt
+++ b/icu4c/source/data/unit/mas.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mas{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/mer.txt b/icu4c/source/data/unit/mer.txt
index 9f20f6d..9092e9a 100644
--- a/icu4c/source/data/unit/mer.txt
+++ b/icu4c/source/data/unit/mer.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mer{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/mfe.txt b/icu4c/source/data/unit/mfe.txt
index a481511..876eff6 100644
--- a/icu4c/source/data/unit/mfe.txt
+++ b/icu4c/source/data/unit/mfe.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mfe{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/mg.txt b/icu4c/source/data/unit/mg.txt
index 95608d1..178591f 100644
--- a/icu4c/source/data/unit/mg.txt
+++ b/icu4c/source/data/unit/mg.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mg{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/mgh.txt b/icu4c/source/data/unit/mgh.txt
index 315912d..3d1d29c 100644
--- a/icu4c/source/data/unit/mgh.txt
+++ b/icu4c/source/data/unit/mgh.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mgh{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/mgo.txt b/icu4c/source/data/unit/mgo.txt
index 0e510c3..7a49b6d 100644
--- a/icu4c/source/data/unit/mgo.txt
+++ b/icu4c/source/data/unit/mgo.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mgo{
-    Version{"37"}
     units{
         duration{
             day{
diff --git a/icu4c/source/data/unit/mi.txt b/icu4c/source/data/unit/mi.txt
index 69d14d3..c3879c7 100644
--- a/icu4c/source/data/unit/mi.txt
+++ b/icu4c/source/data/unit/mi.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mi{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/mk.txt b/icu4c/source/data/unit/mk.txt
index cbea1b7..0c93989 100644
--- a/icu4c/source/data/unit/mk.txt
+++ b/icu4c/source/data/unit/mk.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mk{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -115,7 +115,7 @@
                 other{"{0} карати"}
             }
             milligram-per-deciliter{
-                dnam{"mg/dL"}
+                dnam{"милиграм по децилитар"}
                 one{"{0} mg/dL"}
                 other{"{0} mg/dL"}
             }
@@ -181,9 +181,9 @@
         }
         digital{
             bit{
-                dnam{"битови"}
+                dnam{"бита"}
                 one{"{0} бит"}
-                other{"{0} битови"}
+                other{"{0} бита"}
             }
             byte{
                 dnam{"бајти"}
@@ -191,9 +191,9 @@
                 other{"{0} бајти"}
             }
             gigabit{
-                dnam{"гигабитови"}
+                dnam{"гигабита"}
                 one{"{0} гигабит"}
-                other{"{0} гигабитови"}
+                other{"{0} гигабита"}
             }
             gigabyte{
                 dnam{"гигабајти"}
@@ -201,9 +201,9 @@
                 other{"{0} гигабајти"}
             }
             kilobit{
-                dnam{"килобитови"}
+                dnam{"килобита"}
                 one{"{0} килобит"}
-                other{"{0} килобитови"}
+                other{"{0} килобита"}
             }
             kilobyte{
                 dnam{"килобајти"}
@@ -211,9 +211,9 @@
                 other{"{0} килобајти"}
             }
             megabit{
-                dnam{"мегабитови"}
+                dnam{"мегабита"}
                 one{"{0} мегабит"}
-                other{"{0} мегабитови"}
+                other{"{0} мегабита"}
             }
             megabyte{
                 dnam{"мегабајти"}
@@ -226,9 +226,9 @@
                 other{"{0} петабајти"}
             }
             terabit{
-                dnam{"терабитови"}
+                dnam{"терабита"}
                 one{"{0} терабит"}
-                other{"{0} терабитови"}
+                other{"{0} терабита"}
             }
             terabyte{
                 dnam{"терабајти"}
@@ -408,6 +408,13 @@
                 other{"{0} мегахерци"}
             }
         }
+        graphics{
+            dot{
+                dnam{"точка"}
+                one{"{0} точка"}
+                other{"{0} точки"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"астрономски единици"}
@@ -425,6 +432,11 @@
                 one{"{0} дециметар"}
                 other{"{0} дециметри"}
             }
+            earth-radius{
+                dnam{"земјен радиус"}
+                one{"{0} земјен радиус"}
+                other{"{0} земјени радиуси"}
+            }
             fathom{
                 dnam{"фатоми"}
                 one{"{0} фатом"}
@@ -504,11 +516,6 @@
                 one{"{0} пикометар"}
                 other{"{0} пикометри"}
             }
-            point{
-                dnam{"точки"}
-                one{"{0} точка"}
-                other{"{0} точки"}
-            }
             solar-radius{
                 dnam{"сончеви радиуси"}
                 one{"{0} сончев радиус"}
@@ -521,6 +528,16 @@
             }
         }
         light{
+            candela{
+                dnam{"кандела"}
+                one{"{0} кандела"}
+                other{"{0} кандели"}
+            }
+            lumen{
+                dnam{"лумен"}
+                one{"{0} лумен"}
+                other{"{0} лумени"}
+            }
             lux{
                 dnam{"лукс"}
                 one{"{0} лукс"}
@@ -548,6 +565,11 @@
                 one{"{0} земјина маса"}
                 other{"{0} земјини маси"}
             }
+            grain{
+                dnam{"грејн"}
+                one{"{0} грејн"}
+                other{"{0} грејни"}
+            }
             gram{
                 dnam{"грама"}
                 one{"{0} грам"}
@@ -561,9 +583,9 @@
                 per{"{0} на килограм"}
             }
             metric-ton{
-                dnam{"метрички тони"}
-                one{"{0} метрички тон"}
-                other{"{0} метрички тони"}
+                dnam{"тони"}
+                one{"{0} тон"}
+                other{"{0} тони"}
             }
             microgram{
                 dnam{"микрограми"}
@@ -603,9 +625,9 @@
                 other{"{0} стоуни"}
             }
             ton{
-                dnam{"тони"}
-                one{"{0} тон"}
-                other{"{0} тони"}
+                dnam{"американски тони"}
+                one{"{0} американски тон"}
+                other{"{0} американски тони"}
             }
         }
         power{
@@ -681,6 +703,11 @@
                 one{"{0} милиметар жива"}
                 other{"{0} милиметри жива"}
             }
+            pascal{
+                dnam{"паскали"}
+                one{"{0} паскал"}
+                other{"{0} паскали"}
+            }
             pound-force-per-square-inch{
                 dnam{"фунти на квадратен инч"}
                 one{"{0} фунта на квадратен инч"}
@@ -745,9 +772,9 @@
         }
         volume{
             acre-foot{
-                dnam{"ар-стапка"}
-                one{"{0} ар-стапка"}
-                other{"{0} ар-стапки"}
+                dnam{"акр-стапка"}
+                one{"{0} акр-стапка"}
+                other{"{0} акр-стапки"}
             }
             barrel{
                 dnam{"барели"}
@@ -816,6 +843,26 @@
                 one{"{0} децилитар"}
                 other{"{0} децилитри"}
             }
+            dessert-spoon{
+                dnam{"лажица за десерт"}
+                one{"{0} лажица за десерт"}
+                other{"{0} лажици за десерт"}
+            }
+            dessert-spoon-imperial{
+                dnam{"имп. лажица за десерт"}
+                one{"{0} имп. лажица за десерт"}
+                other{"{0} имп. лажици за десерт"}
+            }
+            dram{
+                dnam{"драм"}
+                one{"{0} драм"}
+                other{"{0} драмови"}
+            }
+            drop{
+                dnam{"капка"}
+                one{"{0} капка"}
+                other{"{0} капки"}
+            }
             fluid-ounce{
                 dnam{"унци течност"}
                 one{"{0} унца течност"}
@@ -843,6 +890,11 @@
                 one{"{0} хектолитар"}
                 other{"{0} хектолитри"}
             }
+            jigger{
+                dnam{"џигер"}
+                one{"{0} џигер"}
+                other{"{0} џигери"}
+            }
             liter{
                 dnam{"литри"}
                 one{"{0} литар"}
@@ -859,6 +911,11 @@
                 one{"{0} милилитар"}
                 other{"{0} милилитри"}
             }
+            pinch{
+                dnam{"прстофат"}
+                one{"{0} прстофат"}
+                other{"{0} прстофати"}
+            }
             pint{
                 dnam{"пинти"}
                 one{"{0} пинта"}
@@ -874,6 +931,11 @@
                 one{"{0} кварт"}
                 other{"{0} кварти"}
             }
+            quart-imperial{
+                dnam{"имп. четвртина"}
+                one{"{0} имп. четвртина"}
+                other{"{0} имп. четвртини"}
+            }
             tablespoon{
                 dnam{"супени лажици"}
                 one{"{0} супена лажица"}
@@ -1102,9 +1164,9 @@
                 other{"{0} ае"}
             }
             centimeter{
-                dnam{"см"}
-                one{"{0} см"}
-                other{"{0} см"}
+                dnam{"cm"}
+                one{"{0}cm"}
+                other{"{0}cm"}
                 per{"{0}/см"}
             }
             decimeter{
@@ -1135,9 +1197,9 @@
                 per{"{0}/ин"}
             }
             kilometer{
-                dnam{"км"}
-                one{"{0} км"}
-                other{"{0} км"}
+                dnam{"km"}
+                one{"{0}km"}
+                other{"{0}km"}
                 per{"{0}/км"}
             }
             light-year{
@@ -1146,9 +1208,9 @@
                 other{"{0} сг"}
             }
             meter{
-                dnam{"метар"}
-                one{"{0} м"}
-                other{"{0} м"}
+                dnam{"m"}
+                one{"{0}m"}
+                other{"{0}m"}
                 per{"{0}/м"}
             }
             micrometer{
@@ -1166,9 +1228,9 @@
                 other{"{0} сми"}
             }
             millimeter{
-                dnam{"мм"}
-                one{"{0} мм"}
-                other{"{0} мм"}
+                dnam{"mm"}
+                one{"{0}mm"}
+                other{"{0}mm"}
             }
             nanometer{
                 dnam{"нм"}
@@ -1210,14 +1272,14 @@
             }
             gram{
                 dnam{"грам"}
-                one{"{0}г"}
-                other{"{0}г"}
+                one{"{0}g"}
+                other{"{0}g"}
                 per{"{0}/г"}
             }
             kilogram{
-                dnam{"кг"}
-                one{"{0} кг"}
-                other{"{0} кг"}
+                dnam{"kg"}
+                one{"{0}kg"}
+                other{"{0}kg"}
                 per{"{0}/кг"}
             }
             metric-ton{
@@ -1295,9 +1357,9 @@
         }
         speed{
             kilometer-per-hour{
-                dnam{"км/ч"}
-                one{"{0} к/ч"}
-                other{"{0} к/ч"}
+                dnam{"km/hr"}
+                one{"{0}km/h"}
+                other{"{0}km/h"}
             }
             knot{
                 dnam{"ја"}
@@ -1390,8 +1452,8 @@
             }
             liter{
                 dnam{"литар"}
-                one{"{0} л"}
-                other{"{0} л"}
+                one{"{0}L"}
+                other{"{0}L"}
             }
             megaliter{
                 one{"{0} Мл"}
@@ -1428,25 +1490,25 @@
             }
             meter-per-square-second{
                 dnam{"метри/сек²"}
-                one{"{0} м/с²"}
-                other{"{0} м/с²"}
+                one{"{0} m/s²"}
+                other{"{0} m/s²"}
             }
         }
         angle{
             arc-minute{
-                dnam{"аголни минути"}
-                one{"{0} аголна мин."}
-                other{"{0} аголни мин."}
+                dnam{"arcmins"}
+                one{"{0} arcmin"}
+                other{"{0} arcmins"}
             }
             arc-second{
-                dnam{"аголни секунди"}
-                one{"{0} аголна сек."}
-                other{"{0} аголни сек."}
+                dnam{"arcsecs"}
+                one{"{0} arcsec"}
+                other{"{0} arcsecs"}
             }
             degree{
                 dnam{"степени"}
-                one{"{0} степ."}
-                other{"{0} степ."}
+                one{"{0} deg"}
+                other{"{0} deg"}
             }
             radian{
                 dnam{"радијани"}
@@ -1462,29 +1524,29 @@
         area{
             acre{
                 dnam{"акри"}
-                one{"{0} акр"}
-                other{"{0} акри"}
+                one{"{0} ac"}
+                other{"{0} ac"}
             }
             dunam{
                 dnam{"дунами"}
-                one{"{0} дунам"}
-                other{"{0} дунам"}
+                one{"{0} dunam"}
+                other{"{0} dunam"}
             }
             hectare{
                 dnam{"хектари"}
-                one{"{0} хектар"}
-                other{"{0} хектари"}
+                one{"{0} ha"}
+                other{"{0} ha"}
             }
             square-centimeter{
-                dnam{"см²"}
-                one{"{0} см²"}
-                other{"{0} см²"}
-                per{"{0}/см²"}
+                dnam{"cm²"}
+                one{"{0} cm²"}
+                other{"{0} cm²"}
+                per{"{0}/cm²"}
             }
             square-foot{
                 dnam{"квадратни стапки"}
-                one{"{0} кв. стапка"}
-                other{"{0} кв. ст."}
+                one{"{0} sq ft"}
+                other{"{0} sq ft"}
             }
             square-inch{
                 dnam{"in²"}
@@ -1493,27 +1555,27 @@
                 per{"{0}/in²"}
             }
             square-kilometer{
-                dnam{"км²"}
-                one{"{0} км²"}
-                other{"{0} км²"}
+                dnam{"km²"}
+                one{"{0} km²"}
+                other{"{0} km²"}
                 per{"{0}/km²"}
             }
             square-meter{
                 dnam{"метри²"}
-                one{"{0} м²"}
-                other{"{0} м²"}
-                per{"{0}/м²"}
+                one{"{0} m²"}
+                other{"{0} m²"}
+                per{"{0}/m²"}
             }
             square-mile{
                 dnam{"кв. милји"}
-                one{"{0} кв. милја"}
-                other{"{0} кв. милји"}
+                one{"{0} sq mi"}
+                other{"{0} sq mi"}
                 per{"{0}/mi²"}
             }
             square-yard{
                 dnam{"јарди²"}
-                one{"{0} јд²"}
-                other{"{0} јд²"}
+                one{"{0} yd²"}
+                other{"{0} yd²"}
             }
         }
         compound{
@@ -1593,9 +1655,9 @@
         }
         digital{
             bit{
-                dnam{"бит"}
-                one{"{0} бит"}
-                other{"{0} битови"}
+                dnam{"bit"}
+                one{"{0} bit"}
+                other{"{0} bit"}
             }
             byte{
                 dnam{"бајт"}
@@ -1746,9 +1808,9 @@
                 other{"{0} Btu"}
             }
             calorie{
-                dnam{"кал."}
-                one{"{0} кал."}
-                other{"{0} кал."}
+                dnam{"cal"}
+                one{"{0} cal"}
+                other{"{0} cal"}
             }
             electronvolt{
                 dnam{"електронволт"}
@@ -1756,9 +1818,9 @@
                 other{"{0} eV"}
             }
             foodcalorie{
-                dnam{"Кал."}
-                one{"{0} кал."}
-                other{"{0} кал."}
+                dnam{"Cal"}
+                one{"{0} Cal"}
+                other{"{0} Cal"}
             }
             joule{
                 dnam{"џули"}
@@ -1821,6 +1883,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"тчк."}
+                one{"{0} тчк."}
+                other{"{0} тчк."}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 one{"{0} dpcm"}
@@ -1859,59 +1926,59 @@
         }
         length{
             astronomical-unit{
-                dnam{"ае"}
-                one{"{0} ае"}
-                other{"{0} ае"}
+                dnam{"au"}
+                one{"{0} au"}
+                other{"{0} au"}
             }
             centimeter{
-                dnam{"см"}
-                one{"{0} см"}
-                other{"{0} см"}
-                per{"{0}/см"}
+                dnam{"cm"}
+                one{"{0} cm"}
+                other{"{0} cm"}
+                per{"{0}/cm"}
             }
             decimeter{
-                dnam{"дм"}
-                one{"{0} дм"}
-                other{"{0} дм"}
+                dnam{"dm"}
+                one{"{0} dm"}
+                other{"{0} dm"}
             }
             fathom{
                 dnam{"фатоми"}
-                one{"{0} фм"}
-                other{"{0} фм"}
+                one{"{0} fth"}
+                other{"{0} fth"}
             }
             foot{
                 dnam{"стапки"}
-                one{"{0} ст"}
-                other{"{0} ст"}
-                per{"{0}/ст"}
+                one{"{0} ft"}
+                other{"{0} ft"}
+                per{"{0}/ft"}
             }
             furlong{
                 dnam{"фурлонзи"}
-                one{"{0} фур"}
-                other{"{0} фур"}
+                one{"{0} fur"}
+                other{"{0} fur"}
             }
             inch{
                 dnam{"инчи"}
-                one{"{0} инч"}
-                other{"{0} инчи"}
-                per{"{0}/ин"}
+                one{"{0} in"}
+                other{"{0} in"}
+                per{"{0}/in"}
             }
             kilometer{
-                dnam{"км"}
-                one{"{0} км"}
-                other{"{0} км"}
-                per{"{0}/км"}
+                dnam{"km"}
+                one{"{0} km"}
+                other{"{0} km"}
+                per{"{0}/km"}
             }
             light-year{
                 dnam{"свет. год."}
-                one{"{0} сг"}
-                other{"{0} сг"}
+                one{"{0} ly"}
+                other{"{0} ly"}
             }
             meter{
                 dnam{"метри"}
-                one{"{0} м"}
-                other{"{0} м"}
-                per{"{0}/м"}
+                one{"{0} m"}
+                other{"{0} m"}
+                per{"{0}/m"}
             }
             micrometer{
                 dnam{"µm"}
@@ -1920,8 +1987,8 @@
             }
             mile{
                 dnam{"милји"}
-                one{"{0} ми"}
-                other{"{0} ми"}
+                one{"{0} mi"}
+                other{"{0} mi"}
             }
             mile-scandinavian{
                 dnam{"smi"}
@@ -1929,29 +1996,29 @@
                 other{"{0} smi"}
             }
             millimeter{
-                dnam{"мм"}
-                one{"{0} мм"}
-                other{"{0} мм"}
+                dnam{"mm"}
+                one{"{0} mm"}
+                other{"{0} mm"}
             }
             nanometer{
-                dnam{"нм"}
-                one{"{0} нм"}
-                other{"{0} нм"}
+                dnam{"nm"}
+                one{"{0} nm"}
+                other{"{0} nm"}
             }
             nautical-mile{
-                dnam{"нми"}
-                one{"{0} нми"}
-                other{"{0} нми"}
+                dnam{"nmi"}
+                one{"{0} nmi"}
+                other{"{0} nmi"}
             }
             parsec{
                 dnam{"парсеци"}
-                one{"{0} пс"}
-                other{"{0} пс"}
+                one{"{0} pc"}
+                other{"{0} pc"}
             }
             picometer{
-                dnam{"пм"}
-                one{"{0} пм"}
-                other{"{0} пм"}
+                dnam{"pm"}
+                one{"{0} pm"}
+                other{"{0} pm"}
             }
             point{
                 dnam{"pt"}
@@ -1965,8 +2032,8 @@
             }
             yard{
                 dnam{"јарди"}
-                one{"{0} јард"}
-                other{"{0} јарди"}
+                one{"{0} yd"}
+                other{"{0} yd"}
             }
         }
         light{
@@ -1984,8 +2051,8 @@
         mass{
             carat{
                 dnam{"карати"}
-                one{"{0} кар."}
-                other{"{0} кар."}
+                one{"{0} CD"}
+                other{"{0} CD"}
             }
             dalton{
                 dnam{"Da"}
@@ -1997,22 +2064,27 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"грејн"}
+                one{"{0} grain"}
+                other{"{0} grain"}
+            }
             gram{
                 dnam{"грама"}
-                one{"{0} г"}
-                other{"{0} г"}
-                per{"{0}/г"}
+                one{"{0} g"}
+                other{"{0} g"}
+                per{"{0}/g"}
             }
             kilogram{
-                dnam{"кг"}
-                one{"{0} кг"}
-                other{"{0} кг"}
-                per{"{0}/кг"}
+                dnam{"kg"}
+                one{"{0} kg"}
+                other{"{0} kg"}
+                per{"{0}/kg"}
             }
             metric-ton{
-                dnam{"т"}
-                one{"{0} т"}
-                other{"{0} т"}
+                dnam{"t"}
+                one{"{0} t"}
+                other{"{0} t"}
             }
             microgram{
                 dnam{"µg"}
@@ -2020,14 +2092,14 @@
                 other{"{0} µg"}
             }
             milligram{
-                dnam{"мг"}
-                one{"{0} мг"}
-                other{"{0} мг"}
+                dnam{"mg"}
+                one{"{0} mg"}
+                other{"{0} mg"}
             }
             ounce{
-                dnam{"унци"}
-                one{"{0} унца"}
-                other{"{0} унци"}
+                dnam{"oz"}
+                one{"{0} oz"}
+                other{"{0} oz"}
                 per{"{0}/oz"}
             }
             ounce-troy{
@@ -2037,8 +2109,8 @@
             }
             pound{
                 dnam{"фунти"}
-                one{"{0} фунта"}
-                other{"{0} фунти"}
+                one{"{0} lb"}
+                other{"{0} lb"}
                 per{"{0}/lb"}
             }
             solar-mass{
@@ -2048,13 +2120,13 @@
             }
             stone{
                 dnam{"стоуни"}
-                one{"{0} стоун"}
-                other{"{0} стоуни"}
+                one{"{0} st"}
+                other{"{0} st"}
             }
             ton{
-                dnam{"тони"}
-                one{"{0} тн"}
-                other{"{0} тн"}
+                dnam{"американски тони"}
+                one{"{0} tn"}
+                other{"{0} tn"}
             }
         }
         power{
@@ -2064,9 +2136,9 @@
                 other{"{0} GW"}
             }
             horsepower{
-                dnam{"коњски сили"}
-                one{"{0} кс"}
-                other{"{0} кс"}
+                dnam{"hp"}
+                one{"{0} hp"}
+                other{"{0} hp"}
             }
             kilowatt{
                 dnam{"kW"}
@@ -2085,20 +2157,20 @@
             }
             watt{
                 dnam{"вати"}
-                one{"{0} ват"}
-                other{"{0} вати"}
+                one{"{0} W"}
+                other{"{0} W"}
             }
         }
         pressure{
             atmosphere{
-                dnam{"атм"}
-                one{"{0} атм"}
-                other{"{0} атм"}
+                dnam{"atm"}
+                one{"{0} atm"}
+                other{"{0} atm"}
             }
             bar{
-                dnam{"бар"}
-                one{"{0} бар"}
-                other{"{0} бари"}
+                dnam{"bar"}
+                one{"{0} bar"}
+                other{"{0} bar"}
             }
             hectopascal{
                 dnam{"hPa"}
@@ -2121,9 +2193,9 @@
                 other{"{0} MPa"}
             }
             millibar{
-                dnam{"мбар"}
-                one{"{0} мбар"}
-                other{"{0} мб."}
+                dnam{"mbar"}
+                one{"{0} mbar"}
+                other{"{0} mbar"}
             }
             millimeter-ofhg{
                 dnam{"mmHg"}
@@ -2144,8 +2216,8 @@
         speed{
             kilometer-per-hour{
                 dnam{"км/час"}
-                one{"{0} к/ч"}
-                other{"{0} к/ч"}
+                one{"{0} km/h"}
+                other{"{0} km/h"}
             }
             knot{
                 dnam{"kn"}
@@ -2154,13 +2226,13 @@
             }
             meter-per-second{
                 dnam{"метри/сек"}
-                one{"{0} м/с"}
-                other{"{0} м/с"}
+                one{"{0} m/s"}
+                other{"{0} m/s"}
             }
             mile-per-hour{
                 dnam{"милји/час"}
-                one{"{0} ми/ч"}
-                other{"{0} ми/ч"}
+                one{"{0} mph"}
+                other{"{0} mph"}
             }
         }
         temperature{
@@ -2199,9 +2271,9 @@
         }
         volume{
             acre-foot{
-                dnam{"ар-ст."}
-                one{"{0} ар-ст."}
-                other{"{0} ар-ст."}
+                dnam{"acre ft"}
+                one{"{0} ac ft"}
+                other{"{0} ac ft"}
             }
             barrel{
                 dnam{"bbl"}
@@ -2210,8 +2282,8 @@
             }
             bushel{
                 dnam{"бушели"}
-                one{"{0} бу"}
-                other{"{0} бу"}
+                one{"{0} bu"}
+                other{"{0} bu"}
             }
             centiliter{
                 dnam{"cL"}
@@ -2219,15 +2291,15 @@
                 other{"{0} cL"}
             }
             cubic-centimeter{
-                dnam{"см³"}
-                one{"{0} см³"}
-                other{"{0} см³"}
-                per{"{0}/см³"}
+                dnam{"cm³"}
+                one{"{0} cm³"}
+                other{"{0} cm³"}
+                per{"{0}/cm³"}
             }
             cubic-foot{
                 dnam{"стапки³"}
-                one{"{0} ст³"}
-                other{"{0} ст³"}
+                one{"{0} ft³"}
+                other{"{0} ft³"}
             }
             cubic-inch{
                 dnam{"инчи³"}
@@ -2235,30 +2307,30 @@
                 other{"{0} in³"}
             }
             cubic-kilometer{
-                dnam{"км³"}
-                one{"{0} км³"}
-                other{"{0} км³"}
+                dnam{"km³"}
+                one{"{0} km³"}
+                other{"{0} km³"}
             }
             cubic-meter{
-                dnam{"м³"}
-                one{"{0} м³"}
-                other{"{0} м³"}
-                per{"{0}/м³"}
+                dnam{"m³"}
+                one{"{0} m³"}
+                other{"{0} m³"}
+                per{"{0}/m³"}
             }
             cubic-mile{
-                dnam{"ми³"}
-                one{"{0} ми³"}
-                other{"{0} ми³"}
+                dnam{"mi³"}
+                one{"{0} mi³"}
+                other{"{0} mi³"}
             }
             cubic-yard{
                 dnam{"јарди³"}
-                one{"{0} јд³"}
-                other{"{0} јд³"}
+                one{"{0} yd³"}
+                other{"{0} yd³"}
             }
             cup{
                 dnam{"чаши"}
-                one{"{0} ч."}
-                other{"{0} ч."}
+                one{"{0} c"}
+                other{"{0} c"}
             }
             cup-metric{
                 dnam{"mcup"}
@@ -2270,6 +2342,22 @@
                 one{"{0} dL"}
                 other{"{0} dL"}
             }
+            dessert-spoon{
+                dnam{"dstspn"}
+                one{"{0} dstspn"}
+                other{"{0} dstspn"}
+            }
+            dessert-spoon-imperial{
+                dnam{"dstspn Imp"}
+            }
+            dram{
+                dnam{"драм течност"}
+            }
+            drop{
+                dnam{"капка"}
+                one{"{0} drop"}
+                other{"{0} drop"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -2281,27 +2369,30 @@
                 other{"{0} fl oz Imp."}
             }
             gallon{
-                dnam{"гал"}
-                one{"{0} гал"}
-                other{"{0} гал"}
-                per{"{0}/gal"}
+                dnam{"gal"}
+                one{"{0} gal"}
+                other{"{0} gal"}
+                per{"{0}/gal US"}
             }
             gallon-imperial{
-                dnam{"имп. галон"}
-                one{"{0} имп. галон"}
-                other{"{0} имп. галони"}
-                per{"{0}/имп. галон"}
+                dnam{"Imp. gal"}
+                one{"{0} gal Imp."}
+                other{"{0} gal Imp."}
+                per{"{0}/gal Imp."}
             }
             hectoliter{
                 dnam{"hL"}
                 one{"{0} hL"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"џигер"}
+            }
             liter{
                 dnam{"литри"}
-                one{"{0} л"}
-                other{"{0} л"}
-                per{"{0}/л"}
+                one{"{0} L"}
+                other{"{0} L"}
+                per{"{0}/L"}
             }
             megaliter{
                 dnam{"ML"}
diff --git a/icu4c/source/data/unit/ml.txt b/icu4c/source/data/unit/ml.txt
index a19f320..749a4df 100644
--- a/icu4c/source/data/unit/ml.txt
+++ b/icu4c/source/data/unit/ml.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ml{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -534,6 +534,10 @@
                 one{"{0} ഭൂപിണ്ഡം"}
                 other{"{0} ഭൂപിണ്ഡം"}
             }
+            grain{
+                one{"{0} gr"}
+                other{"{0} gr"}
+            }
             gram{
                 dnam{"ഗ്രാം"}
                 one{"{0} ഗ്രാം"}
@@ -802,6 +806,11 @@
                 one{"{0} ഡെസിലിറ്റർ"}
                 other{"{0} ഡെസിലിറ്റർ"}
             }
+            dram{
+                dnam{"dram"}
+                one{"{0} dram"}
+                other{"{0} dram"}
+            }
             fluid-ounce{
                 dnam{"ഫ്ലൂയിഡ് ഔൺസ്"}
                 one{"{0} ഫ്ലൂയിഡ് ഔൺസ്"}
@@ -824,6 +833,11 @@
                 one{"{0} ഹെക്ടോലിറ്റർ"}
                 other{"{0} ഹെക്ടോലിറ്റർ"}
             }
+            jigger{
+                dnam{"ജിഗർ"}
+                one{"{0} ജിഗർ"}
+                other{"{0} ജിഗർ"}
+            }
             liter{
                 dnam{"ലിറ്റർ"}
                 one{"{0} ലിറ്റർ"}
@@ -840,6 +854,11 @@
                 one{"{0} മില്ലിലിറ്റർ"}
                 other{"{0} മില്ലിലിറ്റർ"}
             }
+            pinch{
+                dnam{"നുള്ള്"}
+                one{"{0} നുള്ള്"}
+                other{"{0} നുള്ള്"}
+            }
             pint{
                 dnam{"പൈന്റ്"}
                 one{"{0} പൈന്റ്"}
@@ -1824,6 +1843,11 @@
             earth-mass{
                 dnam{"ഭൂപിണ്ഡം"}
             }
+            grain{
+                dnam{"grain"}
+                one{"{0} gr"}
+                other{"{0} gr"}
+            }
             gram{
                 dnam{"ഗ്രാം"}
                 one{"{0} ഗ്രാം"}
@@ -2088,6 +2112,11 @@
                 one{"{0} ഹെ.ലി."}
                 other{"{0} ഹെ.ലി."}
             }
+            jigger{
+                dnam{"ജിഗർ"}
+                one{"{0} ജിഗർ"}
+                other{"{0} ജിഗർ"}
+            }
             liter{
                 dnam{"ലിറ്റർ"}
                 one{"{0} ലി."}
@@ -2104,6 +2133,11 @@
                 one{"{0} മി.ലി."}
                 other{"{0} മി.ലി."}
             }
+            pinch{
+                dnam{"നുള്ള്"}
+                one{"{0} നുള്ള്"}
+                other{"{0} നുള്ള്"}
+            }
             pint{
                 dnam{"പൈ."}
                 one{"{0} പൈ."}
diff --git a/icu4c/source/data/unit/mn.txt b/icu4c/source/data/unit/mn.txt
index 9ae20d3..8ec3d3f 100644
--- a/icu4c/source/data/unit/mn.txt
+++ b/icu4c/source/data/unit/mn.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mn{
-    Version{"37"}
     durationUnits{
         hm{"hh:mm"}
         hms{"hh:mm:ss"}
@@ -408,6 +408,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"цэг"}
+                one{"{0} цэг"}
+                other{"{0} цэг"}
+            }
             dot-per-centimeter{
                 dnam{"цэг/см"}
                 one{"{0} цэг/см"}
@@ -441,12 +446,27 @@
                 one{"{0} дециметр"}
                 other{"{0} дециметр"}
             }
+            earth-radius{
+                dnam{"дэлхийн радиус"}
+                one{"{0} дэлхийн радиус"}
+                other{"{0} дэлхийн радиус"}
+            }
+            fathom{
+                dnam{"фатом"}
+                one{"{0} фатом"}
+                other{"{0} фатом"}
+            }
             foot{
                 dnam{"фут"}
                 one{"{0} фут"}
                 other{"{0} фут"}
                 per{"{0}/фут"}
             }
+            furlong{
+                dnam{"фурлонг"}
+                one{"{0} фурлонг"}
+                other{"{0} фурлонг"}
+            }
             inch{
                 dnam{"инч"}
                 one{"{0} инч"}
@@ -527,6 +547,16 @@
             }
         }
         light{
+            candela{
+                dnam{"кандел"}
+                one{"{0} кандел"}
+                other{"{0} кандел"}
+            }
+            lumen{
+                dnam{"люмен"}
+                one{"{0} люмен"}
+                other{"{0} люмен"}
+            }
             lux{
                 dnam{"люкс"}
                 one{"{0} люкс"}
@@ -554,6 +584,11 @@
                 one{"{0} Дэлхийн масс"}
                 other{"{0} Дэлхийн масс"}
             }
+            grain{
+                dnam{"үр"}
+                one{"{0} үр"}
+                other{"{0} үр"}
+            }
             gram{
                 dnam{"грамм"}
                 one{"{0} грамм"}
@@ -603,6 +638,11 @@
                 one{"{0} нарны масс"}
                 other{"{0} нарны масс"}
             }
+            stone{
+                dnam{"чулуу"}
+                one{"{0} чулуу"}
+                other{"{0} чулуу"}
+            }
             ton{
                 dnam{"америк тонн"}
                 one{"{0} америк тонн"}
@@ -815,6 +855,26 @@
                 one{"{0} децилитр"}
                 other{"{0} децилитр"}
             }
+            dessert-spoon{
+                dnam{"амттаны халбага"}
+                one{"{0} амттаны халбага"}
+                other{"{0} амттаны халбага"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Том амттаны халбага"}
+                one{"{0} том амттаны халбага"}
+                other{"{0} том амттаны халбага"}
+            }
+            dram{
+                dnam{"драм"}
+                one{"{0} драм"}
+                other{"{0} драм"}
+            }
+            drop{
+                dnam{"дусал"}
+                one{"{0} дусал"}
+                other{"{0} дусал"}
+            }
             fluid-ounce{
                 dnam{"шингэн унц"}
                 one{"{0} шингэн унц"}
@@ -842,6 +902,11 @@
                 one{"{0} хектолитр"}
                 other{"{0} хектолитр"}
             }
+            jigger{
+                dnam{"джиггер"}
+                one{"{0} джиггер"}
+                other{"{0} джиггер"}
+            }
             liter{
                 dnam{"литр"}
                 one{"{0} литр"}
@@ -858,6 +923,11 @@
                 one{"{0} миллилитр"}
                 other{"{0} миллилитр"}
             }
+            pinch{
+                dnam{"чимх"}
+                one{"{0} чимх"}
+                other{"{0} чимх"}
+            }
             pint{
                 dnam{"пинт"}
                 one{"{0} пинт"}
@@ -873,6 +943,11 @@
                 one{"{0} кварц"}
                 other{"{0} кварц"}
             }
+            quart-imperial{
+                dnam{"Том куарт"}
+                one{"{0} том куарт"}
+                other{"{0} том куарт"}
+            }
             tablespoon{
                 dnam{"хоолны халбага"}
                 one{"{0} хоолны халбага"}
@@ -1529,6 +1604,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"цэг"}
+                one{"{0} цэг"}
+                other{"{0} цэг"}
+            }
             dot-per-centimeter{
                 dnam{"цэг/см"}
                 one{"{0} цэг/см"}
@@ -1552,12 +1632,18 @@
                 one{"{0} дм"}
                 other{"{0} дм"}
             }
+            fathom{
+                dnam{"фатом"}
+            }
             foot{
                 dnam{"фут"}
                 one{"{0} фут"}
                 other{"{0} фут"}
                 per{"{0}/фут"}
             }
+            furlong{
+                dnam{"фурлонг"}
+            }
             inch{
                 dnam{"инч"}
                 one{"{0} инч"}
@@ -1659,6 +1745,11 @@
             earth-mass{
                 dnam{"Дэлхийн масс"}
             }
+            grain{
+                dnam{"үр"}
+                one{"{0} үр"}
+                other{"{0} үр"}
+            }
             gram{
                 dnam{"грамм"}
                 one{"{0} гр"}
@@ -1706,6 +1797,11 @@
             solar-mass{
                 dnam{"нарны масс"}
             }
+            stone{
+                dnam{"чулуу"}
+                one{"{0} ч"}
+                other{"{0} ч"}
+            }
             ton{
                 dnam{"америк тонн"}
                 one{"{0} ам. тн"}
@@ -1842,7 +1938,9 @@
         }
         torque{
             newton-meter{
-                dnam{"Н*м"}
+                dnam{"Н⋅м"}
+                one{"{0} Н⋅м"}
+                other{"{0} Н⋅м"}
             }
         }
         volume{
@@ -1913,6 +2011,26 @@
                 one{"{0} дл"}
                 other{"{0} дл"}
             }
+            dessert-spoon{
+                dnam{"амт.х"}
+                one{"{0} амт.х"}
+                other{"{0} амт.х"}
+            }
+            dessert-spoon-imperial{
+                dnam{"том амт.х"}
+                one{"{0} том амт.х"}
+                other{"{0} том амт.х"}
+            }
+            dram{
+                dnam{"драм шингэн"}
+                one{"{0} драм.ш"}
+                other{"{0} драм.ш"}
+            }
+            drop{
+                dnam{"дусал"}
+                one{"{0} дусал"}
+                other{"{0} дусал"}
+            }
             fluid-ounce{
                 dnam{"ш.унц"}
                 one{"{0} ш.унц"}
@@ -1940,6 +2058,11 @@
                 one{"{0} хл"}
                 other{"{0} хл"}
             }
+            jigger{
+                dnam{"джиггер"}
+                one{"{0} джиггер"}
+                other{"{0} джиггер"}
+            }
             liter{
                 dnam{"литр"}
                 one{"{0} л"}
@@ -1956,6 +2079,11 @@
                 one{"{0} мл"}
                 other{"{0} мл"}
             }
+            pinch{
+                dnam{"чимх"}
+                one{"{0} чимх"}
+                other{"{0} чимх"}
+            }
             pint{
                 dnam{"пинт"}
                 one{"{0} пт"}
@@ -1971,6 +2099,11 @@
                 one{"{0} крц"}
                 other{"{0} крц"}
             }
+            quart-imperial{
+                dnam{"том куарт"}
+                one{"{0} том куарт"}
+                other{"{0} том куарт"}
+            }
             tablespoon{
                 dnam{"х.х"}
                 one{"{0} х.х"}
diff --git a/icu4c/source/data/unit/mni.txt b/icu4c/source/data/unit/mni.txt
index 765eb18..15874e9 100644
--- a/icu4c/source/data/unit/mni.txt
+++ b/icu4c/source/data/unit/mni.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/mni_Beng.txt b/icu4c/source/data/unit/mni_Beng.txt
index e861947..08de0f1 100644
--- a/icu4c/source/data/unit/mni_Beng.txt
+++ b/icu4c/source/data/unit/mni_Beng.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni_Beng{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/mni_Beng_IN.txt b/icu4c/source/data/unit/mni_Beng_IN.txt
index fee6989..c896779 100644
--- a/icu4c/source/data/unit/mni_Beng_IN.txt
+++ b/icu4c/source/data/unit/mni_Beng_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/mni_IN.txt b/icu4c/source/data/unit/mni_IN.txt
index 00d8c00..99173b1 100644
--- a/icu4c/source/data/unit/mni_IN.txt
+++ b/icu4c/source/data/unit/mni_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni_IN{
     "%%ALIAS"{"mni_Beng_IN"}
 }
diff --git a/icu4c/source/data/unit/mo.txt b/icu4c/source/data/unit/mo.txt
index 01049c8..6ef8313 100644
--- a/icu4c/source/data/unit/mo.txt
+++ b/icu4c/source/data/unit/mo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mo{
     "%%ALIAS"{"ro"}
 }
diff --git a/icu4c/source/data/unit/mr.txt b/icu4c/source/data/unit/mr.txt
index eaf19a1..ba5d915 100644
--- a/icu4c/source/data/unit/mr.txt
+++ b/icu4c/source/data/unit/mr.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mr{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -230,9 +230,9 @@
                 other{"{0} टेराबिट"}
             }
             terabyte{
-                dnam{"टेराबाइट"}
+                dnam{"टेराबाइट्स"}
                 one{"{0} टेराबाइट"}
-                other{"{0} टेराबाइट"}
+                other{"{0} टेराबाइट्स"}
             }
         }
         duration{
@@ -403,6 +403,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"टिंब"}
+                one{"{0}टिंब"}
+                other{"{0}टिंब"}
+            }
             dot-per-centimeter{
                 dnam{"प्रति सेंटीमीटर बिंदू"}
                 one{"{0} प्रति सेंटीमीटर बिंदू"}
@@ -456,12 +461,27 @@
                 one{"{0} डेसीमीटर"}
                 other{"{0} डेसीमीटर"}
             }
+            earth-radius{
+                dnam{"पृथ्वी त्रिज्या"}
+                one{"{0} पृथ्वी त्रिज्या"}
+                other{"{0} पृथ्वी त्रिज्या"}
+            }
+            fathom{
+                dnam{"फॅदम"}
+                one{"{0} फॅदम"}
+                other{"{0} फॅदम"}
+            }
             foot{
                 dnam{"फूट"}
                 one{"{0} फूट"}
                 other{"{0} फूट"}
                 per{"{0} दर फूट"}
             }
+            furlong{
+                dnam{"फर्लांग"}
+                one{"{0} फर्लांग"}
+                other{"{0} फर्लांग"}
+            }
             inch{
                 dnam{"इंच"}
                 one{"{0} इंच"}
@@ -542,6 +562,16 @@
             }
         }
         light{
+            candela{
+                dnam{"कँडेला"}
+                one{"{0} कँडेला"}
+                other{"{0} कँडेला"}
+            }
+            lumen{
+                dnam{"लुमेन"}
+                one{"{0} लुमेन"}
+                other{"{0} लुमेन"}
+            }
             lux{
                 dnam{"लक्स"}
                 one{"{0} लक्स"}
@@ -569,6 +599,11 @@
                 one{"{0} पृथ्वी द्रव्यमान"}
                 other{"{0} पृथ्वी द्रव्यमान"}
             }
+            grain{
+                dnam{"अल्पांश"}
+                one{"{0} अल्पांश"}
+                other{"{0} अल्पांश"}
+            }
             gram{
                 dnam{"ग्रॅम"}
                 one{"{0} ग्रॅम"}
@@ -667,6 +702,10 @@
                 one{"{0} वातावरण"}
                 other{"{0} वातावरण"}
             }
+            bar{
+                one{"{0} बार"}
+                other{"{0} बार"}
+            }
             hectopascal{
                 dnam{"हेक्टोपास्कल"}
                 one{"{0} हेक्टोपास्कल"}
@@ -697,6 +736,11 @@
                 one{"{0} मर्क्यूरी मिलिमीटर"}
                 other{"{0} मर्क्यूरी मिलिमीटर"}
             }
+            pascal{
+                dnam{"पास्काल"}
+                one{"{0} पास्काल"}
+                other{"{0} पास्काल"}
+            }
             pound-force-per-square-inch{
                 dnam{"प्रति चौरस इंच पाउंड"}
                 one{"{0} प्रति चौरस इंच पाउंड"}
@@ -770,6 +814,11 @@
                 one{"{0} बॅरल"}
                 other{"{0} बॅरल"}
             }
+            bushel{
+                dnam{"बुशेल"}
+                one{"{0} बुशेल"}
+                other{"{0} बुशेल"}
+            }
             centiliter{
                 dnam{"सेंटीलीटर"}
                 one{"{0} सेंटीलीटर"}
@@ -827,6 +876,26 @@
                 one{"{0} डेसीलीटर"}
                 other{"{0} डेसीलीटर"}
             }
+            dessert-spoon{
+                dnam{"डेझर्ट स्पून"}
+                one{"{0} डेझर्ट स्पून"}
+                other{"{0} डेझर्ट स्पून"}
+            }
+            dessert-spoon-imperial{
+                dnam{"इंपि. डेझर्ट स्पून"}
+                one{"{0} इंपि. डेझर्ट स्पून"}
+                other{"{0} इंपि. डेझर्ट स्पून"}
+            }
+            dram{
+                dnam{"ड्रॅम"}
+                one{"{0} ड्रॅम"}
+                other{"{0} ड्रॅम"}
+            }
+            drop{
+                dnam{"पात"}
+                one{"{0} पात"}
+                other{"{0} पात"}
+            }
             fluid-ounce{
                 dnam{"फ्लूइड औंस"}
                 one{"{0} फ्लूइड औंस"}
@@ -854,6 +923,11 @@
                 one{"{0} हेक्टोलीटर"}
                 other{"{0} हेक्टोलीटर"}
             }
+            jigger{
+                dnam{"जिगर"}
+                one{"{0} जिगर"}
+                other{"{0} जिगर"}
+            }
             liter{
                 dnam{"लीटर"}
                 one{"{0} लीटर"}
@@ -870,6 +944,11 @@
                 one{"{0} मिलीलीटर"}
                 other{"{0} मिलीलीटर"}
             }
+            pinch{
+                dnam{"आकुंचन"}
+                one{"{0} आकुंचन"}
+                other{"{0} आकुंचन"}
+            }
             pint{
                 dnam{"पिंट"}
                 one{"{0} पिंट"}
@@ -885,6 +964,11 @@
                 one{"{0} क्वार्ट"}
                 other{"{0} क्वार्ट"}
             }
+            quart-imperial{
+                dnam{"इंपि. क्वार्ट"}
+                one{"{0} इंपि. क्वार्ट"}
+                other{"{0} इंपि. क्वार्ट"}
+            }
             tablespoon{
                 dnam{"टेबलस्पून"}
                 one{"{0} टेबलस्पून"}
@@ -1388,7 +1472,7 @@
                 other{"{0}‰"}
             }
             permillion{
-                dnam{"ppm"}
+                dnam{"भाग/दशलक्ष"}
                 one{"{0} ppm"}
                 other{"{0} ppm"}
             }
@@ -1644,6 +1728,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"टिंब"}
+                one{"{0} टिंब"}
+                other{"{0} टिंब"}
+            }
             dot-per-centimeter{
                 dnam{"प्र सें बिं"}
                 one{"{0} प्र सें बिं"}
@@ -1692,12 +1781,25 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+            }
+            fathom{
+                dnam{"फॅदम"}
+                one{"{0} fth"}
+                other{"{0} fth"}
+            }
             foot{
                 dnam{"फूट"}
                 one{"{0} फूट"}
                 other{"{0} फूट"}
                 per{"{0}/फूट"}
             }
+            furlong{
+                dnam{"फर्लांग"}
+                one{"{0} fur"}
+                other{"{0} fur"}
+            }
             inch{
                 dnam{"इंच"}
                 one{"{0} इंच"}
@@ -1776,6 +1878,16 @@
             }
         }
         light{
+            candela{
+                dnam{"cd"}
+                one{"{0} cd"}
+                other{"{0} cd"}
+            }
+            lumen{
+                dnam{"lm"}
+                one{"{0} lm"}
+                other{"{0} lm"}
+            }
             lux{
                 dnam{"लक्स"}
                 one{"{0} lx"}
@@ -1799,6 +1911,11 @@
             earth-mass{
                 dnam{"पृथ्वी द्रव्यमान"}
             }
+            grain{
+                dnam{"अल्पांश"}
+                one{"{0} अल्पांश"}
+                other{"{0} अल्पांश"}
+            }
             gram{
                 dnam{"ग्रॅम"}
                 one{"{0} ग्रॅ"}
@@ -1895,6 +2012,11 @@
                 one{"{0} atm"}
                 other{"{0} atm"}
             }
+            bar{
+                dnam{"बार"}
+                one{"{0} बार"}
+                other{"{0} बार"}
+            }
             hectopascal{
                 dnam{"hPa"}
                 one{"{0} hPa"}
@@ -1977,6 +2099,9 @@
             barrel{
                 dnam{"बॅरल"}
             }
+            bushel{
+                dnam{"बुशेल"}
+            }
             centiliter{
                 dnam{"cL"}
                 one{"{0} cL"}
@@ -2034,6 +2159,21 @@
                 one{"{0} dL"}
                 other{"{0} dL"}
             }
+            dessert-spoon{
+                dnam{"dstspn"}
+                one{"{0} dstspn"}
+                other{"{0} dstspn"}
+            }
+            dessert-spoon-imperial{
+                dnam{"dstspn Imp"}
+                one{"{0} dstspn Imp"}
+                other{"{0} dstspn Imp"}
+            }
+            drop{
+                dnam{"पात"}
+                one{"{0} पात"}
+                other{"{0} पात"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -2059,6 +2199,11 @@
                 one{"{0} hL"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"जिगर"}
+                one{"{0} जिगर"}
+                other{"{0} जिगर"}
+            }
             liter{
                 dnam{"लीटर"}
                 one{"{0} ली"}
@@ -2075,6 +2220,11 @@
                 one{"{0} मिली"}
                 other{"{0} मिली"}
             }
+            pinch{
+                dnam{"आकुंचन"}
+                one{"{0} आकुंचन"}
+                other{"{0} आकुंचन"}
+            }
             pint{
                 dnam{"पिंट"}
                 one{"{0} pt"}
@@ -2090,6 +2240,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"qt Imp"}
+                one{"{0} qt Imp."}
+                other{"{0} qt Imp."}
+            }
             tablespoon{
                 dnam{"tbsp"}
                 one{"{0} tbsp"}
diff --git a/icu4c/source/data/unit/ms.txt b/icu4c/source/data/unit/ms.txt
index 9c52e2f..bde82b0 100644
--- a/icu4c/source/data/unit/ms.txt
+++ b/icu4c/source/data/unit/ms.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ms{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -372,6 +372,10 @@
                 dnam{"desimeter"}
                 other{"{0} desimeter"}
             }
+            earth-radius{
+                dnam{"radius bumi"}
+                other{"{0} radius bumi"}
+            }
             fathom{
                 dnam{"fathom"}
                 other{"{0} fathom"}
@@ -450,6 +454,14 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                other{"{0} kandela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                other{"{0} lumen"}
+            }
             lux{
                 dnam{"lux"}
                 other{"{0} lux"}
@@ -514,7 +526,7 @@
             }
             stone{
                 dnam{"stone"}
-                other{"{0} st"}
+                other{"{0} stone"}
             }
             ton{
                 dnam{"tan"}
@@ -565,7 +577,7 @@
                 other{"{0} kilopaskal"}
             }
             megapascal{
-                dnam{"megapascal"}
+                dnam{"megapaskal"}
                 other{"{0} megapaskal"}
             }
             millibar{
@@ -640,6 +652,10 @@
                 dnam{"tong"}
                 other{"{0} tong"}
             }
+            bushel{
+                dnam{"busyel"}
+                other{"{0} busyel"}
+            }
             centiliter{
                 dnam{"sentiliter"}
                 other{"{0} sentiliter"}
@@ -686,6 +702,22 @@
                 dnam{"desiliter"}
                 other{"{0} desiliter"}
             }
+            dessert-spoon{
+                dnam{"sudu desert"}
+                other{"{0} sudu desert"}
+            }
+            dessert-spoon-imperial{
+                dnam{"sudu desert Imp."}
+                other{"{0} sudu desert Imp."}
+            }
+            dram{
+                dnam{"dram"}
+                other{"{0} dram"}
+            }
+            drop{
+                dnam{"titis"}
+                other{"{0} titis"}
+            }
             fluid-ounce{
                 dnam{"auns cecair"}
                 other{"{0} auns cecair"}
@@ -704,6 +736,9 @@
                 dnam{"hektoliter"}
                 other{"{0} hektoliter"}
             }
+            jigger{
+                dnam{"jigger"}
+            }
             liter{
                 dnam{"liter"}
                 other{"{0} liter"}
@@ -717,6 +752,10 @@
                 dnam{"mililiter"}
                 other{"{0} mililiter"}
             }
+            pinch{
+                dnam{"cubit"}
+                other{"{0} cubit"}
+            }
             pint{
                 dnam{"pain"}
                 other{"{0} pain"}
@@ -729,6 +768,10 @@
                 dnam{"kuart"}
                 other{"{0} kuart"}
             }
+            quart-imperial{
+                dnam{"kuart Imp."}
+                other{"{0} kuart Imp."}
+            }
             tablespoon{
                 dnam{"sudu besar"}
                 other{"{0} sudu besar"}
@@ -860,7 +903,7 @@
                 other{"{0} au"}
             }
             centimeter{
-                dnam{"sentimeter"}
+                dnam{"cm"}
                 other{"{0} cm"}
                 per{"{0}/cm"}
             }
@@ -882,11 +925,11 @@
                 other{"{0} fur"}
             }
             inch{
+                dnam{"in"}
                 other{"{0}\u0022"}
                 per{"{0}/in"}
             }
             kilometer{
-                dnam{"kilometer"}
                 other{"{0} km"}
                 per{"{0}/km"}
             }
@@ -900,6 +943,7 @@
                 per{"{0}/m"}
             }
             micrometer{
+                dnam{"µm"}
                 other{"{0} µm"}
             }
             mile{
@@ -916,7 +960,7 @@
             }
             nanometer{
                 dnam{"nm"}
-                other{"{0} nm"}
+                other{"{0}nm"}
             }
             nautical-mile{
                 dnam{"btn"}
@@ -1409,7 +1453,6 @@
                 other{"{0} au"}
             }
             centimeter{
-                dnam{"sentimeter"}
                 other{"{0} cm"}
                 per{"{0}/cm"}
             }
@@ -1436,7 +1479,6 @@
                 per{"{0}/in"}
             }
             kilometer{
-                dnam{"kilometer"}
                 other{"{0} km"}
                 per{"{0}/km"}
             }
@@ -1702,6 +1744,13 @@
                 dnam{"dL"}
                 other{"{0} dL"}
             }
+            dram{
+                dnam{"dram fl"}
+            }
+            drop{
+                dnam{"titis"}
+                other{"{0} titis"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 other{"{0} fl oz"}
@@ -1733,6 +1782,10 @@
                 dnam{"mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"cubit"}
+                other{"{0} cubit"}
+            }
             pint{
                 dnam{"pain"}
                 other{"{0} pt"}
diff --git a/icu4c/source/data/unit/mt.txt b/icu4c/source/data/unit/mt.txt
index a261d97..6177fdd 100644
--- a/icu4c/source/data/unit/mt.txt
+++ b/icu4c/source/data/unit/mt.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mt{
-    Version{"37"}
     units{
         angle{
             arc-minute{
diff --git a/icu4c/source/data/unit/mua.txt b/icu4c/source/data/unit/mua.txt
index 707d896..75276ce 100644
--- a/icu4c/source/data/unit/mua.txt
+++ b/icu4c/source/data/unit/mua.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mua{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/my.txt b/icu4c/source/data/unit/my.txt
index 694281b..52c42db 100644
--- a/icu4c/source/data/unit/my.txt
+++ b/icu4c/source/data/unit/my.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 my{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -336,6 +336,12 @@
                 other{"{0} မီဂါဟတ်ဇ်"}
             }
         }
+        graphics{
+            dot{
+                dnam{"အစက်"}
+                other{"{0} အစက်"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"နက်ခတ်တဗဒေယူနဈ"}
@@ -350,11 +356,23 @@
                 dnam{"ဒက်စီမီတာ"}
                 other{"{0} ဒက်စီမီတာ"}
             }
+            earth-radius{
+                dnam{"ကမ္ဘာ့ အချင်းဝက်"}
+                other{"{0} ကမ္ဘာ့အချင်းဝက်"}
+            }
+            fathom{
+                dnam{"ဖန်တမ်"}
+                other{"{0} ဖန်တမ်"}
+            }
             foot{
                 dnam{"ပေ"}
                 other{"{0} ပေ"}
                 per{"တစ်ပေလျှင် {0}"}
             }
+            furlong{
+                dnam{"ဖာလုံ"}
+                other{"{0} ဖာလုံ"}
+            }
             inch{
                 dnam{"လက်မ"}
                 other{"{0} လက်မ"}
@@ -420,6 +438,14 @@
             }
         }
         light{
+            candela{
+                dnam{"ကန်ဒဲလာ"}
+                other{"{0} ကန်ဒဲလာ"}
+            }
+            lumen{
+                dnam{"လူမန်"}
+                other{"{0} လူမန်"}
+            }
             lux{
                 dnam{"လတ်ခ်"}
                 other{"{0} လတ်ခ်"}
@@ -442,6 +468,10 @@
                 dnam{"ကမ္ဘာ့ဒြပ်ထု"}
                 other{"{0} ကမ္ဘာ့ဒြပ်ထု"}
             }
+            grain{
+                dnam{"ဂရိန်"}
+                other{"{0} ဂရိန်"}
+            }
             gram{
                 dnam{"ဂရမ်"}
                 other{"{0} ဂရမ်"}
@@ -482,6 +512,10 @@
                 dnam{"နေရောင်ခြည် ဒြပ်ထု"}
                 other{"{0} နေရောင်ခြည် ဒြပ်ထု"}
             }
+            stone{
+                dnam{"စတုန်"}
+                other{"{0} စတုန်"}
+            }
             ton{
                 dnam{"တန်"}
                 other{"{0} တန်"}
@@ -519,8 +553,8 @@
                 other{"{0} ကမ္ဘာ့လေထု"}
             }
             bar{
-                dnam{"bars"}
-                other{"{0} bars"}
+                dnam{"ဘား"}
+                other{"{0} ဘား"}
             }
             hectopascal{
                 dnam{"ဟက်တိုပါစကယ်"}
@@ -606,6 +640,10 @@
                 dnam{"ဘယ်ရလ်စ်"}
                 other{"{0} ဘယ်ရလ်စ်"}
             }
+            bushel{
+                dnam{"၈ ဂါလံဝင်ပုံး"}
+                other{"၈ ဂါလံဝင်ပုံး {0} ပုံး"}
+            }
             centiliter{
                 dnam{"စင်တီလီတာ"}
                 other{"{0} စင်တီလီတာ"}
@@ -652,6 +690,22 @@
                 dnam{"ဒက်စီလီတာ"}
                 other{"{0} ဒက်စီလီတာ"}
             }
+            dessert-spoon{
+                dnam{"အချိုပွဲဇွန်း"}
+                other{"အချိုပွဲဇွန်း {0} ဇွန်း"}
+            }
+            dessert-spoon-imperial{
+                dnam{"ဗြိတိသျှသုံး အချိုပွဲဇွန်း"}
+                other{"ဗြိတိသျှသုံး အချိုပွဲဇွန်း {0} ဇွန်း"}
+            }
+            dram{
+                dnam{"ဒရမ်"}
+                other{"{0} ဒရမ်"}
+            }
+            drop{
+                dnam{"တစ်စက်"}
+                other{"{0} စက်"}
+            }
             fluid-ounce{
                 dnam{"အရည်အောင်စ"}
                 other{"{0} အရည်အောင်စ"}
@@ -674,6 +728,10 @@
                 dnam{"ဟက်တိုလီတာ"}
                 other{"{0} ဟက်တိုမီတာ"}
             }
+            jigger{
+                dnam{"ပက်"}
+                other{"{0} ပက်"}
+            }
             liter{
                 dnam{"လီတာ"}
                 other{"{0} လီတာ"}
@@ -687,6 +745,10 @@
                 dnam{"မီလီလီတာ"}
                 other{"{0} မီလီလီတာ"}
             }
+            pinch{
+                dnam{"တစ်ဆိတ်"}
+                other{"{0} ဆိတ်"}
+            }
             pint{
                 dnam{"ပိုင့်"}
                 other{"{0} ပိုင့်"}
@@ -699,6 +761,10 @@
                 dnam{"ကွတ်"}
                 other{"{0} ကွတ်"}
             }
+            quart-imperial{
+                dnam{"ဗြိတိသျှသုံး ကွတ်"}
+                other{"ဗြိတိသျှသုံး {0} ကွတ်"}
+            }
             tablespoon{
                 dnam{"စားပွဲဇွန်း"}
                 other{"စားပွဲဇွန်း {0} ဇွန်း"}
@@ -1086,7 +1152,7 @@
                 other{"{0} MB"}
             }
             petabyte{
-                dnam{"PB"}
+                dnam{"ပက်တာဘိုက်"}
                 other{"{0} PB"}
             }
             terabit{
@@ -1208,7 +1274,7 @@
             }
             therm-us{
                 dnam{"ယူအက်စ် သာမယ်လ်"}
-                other{"{0} ယူအက်စပ် သာမယ်လ်"}
+                other{"{0} ယူအက်စ်သာမယ်လ်"}
             }
         }
         force{
@@ -1238,6 +1304,12 @@
                 other{"{0} MHz"}
             }
         }
+        graphics{
+            dot{
+                dnam{"အစက်"}
+                other{"{0} အစက်"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"နက်ခတ်တဗဒေယူနဈ"}
@@ -1252,11 +1324,23 @@
                 dnam{"dm"}
                 other{"{0} dm"}
             }
+            earth-radius{
+                dnam{"ကမ္ဘာ့အချင်းဝက်"}
+                other{"{0} ကမ္ဘာ့အချင်းဝက်"}
+            }
+            fathom{
+                dnam{"ဖန်တမ်"}
+                other{"{0} ဖန်တမ်"}
+            }
             foot{
                 dnam{"ပေ"}
                 other{"{0} ပေ"}
                 per{"{0}/ပေ"}
             }
+            furlong{
+                dnam{"ဖာလုံ"}
+                other{"{0} ဖာလုံ"}
+            }
             inch{
                 dnam{"လက်မ"}
                 other{"{0} လက်မ"}
@@ -1322,6 +1406,14 @@
             }
         }
         light{
+            candela{
+                dnam{"ကန်ဒဲလာ"}
+                other{"{0} ကန်ဒဲလာ"}
+            }
+            lumen{
+                dnam{"လူမန်"}
+                other{"{0} လူမန်"}
+            }
             lux{
                 dnam{"လတ်ခ်"}
                 other{"{0} lx"}
@@ -1343,6 +1435,10 @@
                 dnam{"ကမ္ဘာ့ဒြပ်ထု"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"ဂရိန်"}
+                other{"{0} ဂရိန်"}
+            }
             gram{
                 dnam{"ဂရမ်"}
                 other{"{0} g"}
@@ -1383,6 +1479,10 @@
                 dnam{"နေရောင်ခြည် ဒြပ်ထု"}
                 other{"{0} M☉"}
             }
+            stone{
+                dnam{"စတုန်"}
+                other{"{0} စတုန်"}
+            }
             ton{
                 dnam{"တန်"}
                 other{"{0} tn"}
@@ -1420,7 +1520,8 @@
                 other{"{0} atm"}
             }
             bar{
-                other{"{0} bars"}
+                dnam{"ဘား"}
+                other{"{0} ဘား"}
             }
             hectopascal{
                 dnam{"hPa"}
@@ -1506,6 +1607,10 @@
                 dnam{"ဘယ်ရလ်"}
                 other{"{0} bbl"}
             }
+            bushel{
+                dnam{"၈ ဂါလံဝင်ပုံး"}
+                other{"၈ ဂါလံဝင်ပုံး {0} ပုံး"}
+            }
             centiliter{
                 dnam{"စင်တီလီတာ"}
                 other{"{0} cL"}
@@ -1552,6 +1657,22 @@
                 dnam{"ဒက်စီလီတာ"}
                 other{"{0} dL"}
             }
+            dessert-spoon{
+                dnam{"အချိုပွဲဇွန်း"}
+                other{"အချိုပွဲဇွန်း {0} ဇွန်း"}
+            }
+            dessert-spoon-imperial{
+                dnam{"ဗြိတိသျှသုံး အချိုပွဲဇွန်း"}
+                other{"ဗြိတိသျှသုံးအချိုပွဲဇွန်း {0} ဇွန်း"}
+            }
+            dram{
+                dnam{"ဒရမ်"}
+                other{"{0} ဒရမ်"}
+            }
+            drop{
+                dnam{"တစ်စက်"}
+                other{"{0} စက်"}
+            }
             fluid-ounce{
                 dnam{"အရည်အောင်စ"}
                 other{"{0} fl oz"}
@@ -1566,14 +1687,18 @@
                 per{"{0}/gal US"}
             }
             gallon-imperial{
-                dnam{"ယူကဂေါလံ"}
-                other{"{0} ယူကဂေါလံ"}
+                dnam{"ယူကေ ဂါလံ"}
+                other{"{0} ယူကေ ဂါလံ"}
                 per{"{0}/gal Imp."}
             }
             hectoliter{
                 dnam{"ဟက်တိုလီတာ"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"ပက်"}
+                other{"{0} ပက်"}
+            }
             liter{
                 dnam{"လီတာ"}
                 other{"{0} လီတာ"}
@@ -1587,6 +1712,10 @@
                 dnam{"မီလီလီတာ"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"တစ်ဆိတ်"}
+                other{"{0} ဆိတ်"}
+            }
             pint{
                 dnam{"ပိုင့်"}
                 other{"{0} pt"}
@@ -1599,6 +1728,10 @@
                 dnam{"ကွတ်"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"ဗြိတိသျှသုံး ကွတ်"}
+                other{"ဗြိတိသျှသုံး {0} ကွတ်"}
+            }
             tablespoon{
                 dnam{"စားပွဲဇွန်း"}
                 other{"{0} tbsp"}
diff --git a/icu4c/source/data/unit/mzn.txt b/icu4c/source/data/unit/mzn.txt
index 71cdb9a..370d1ac 100644
--- a/icu4c/source/data/unit/mzn.txt
+++ b/icu4c/source/data/unit/mzn.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mzn{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/naq.txt b/icu4c/source/data/unit/naq.txt
index b5a2a9b..3295d39 100644
--- a/icu4c/source/data/unit/naq.txt
+++ b/icu4c/source/data/unit/naq.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 naq{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/nb.txt b/icu4c/source/data/unit/nb.txt
index 7adb4c4..fac164f 100644
--- a/icu4c/source/data/unit/nb.txt
+++ b/icu4c/source/data/unit/nb.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nb{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -396,6 +396,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"punkt"}
+                one{"{0} punkt"}
+                other{"{0} punkter"}
+            }
             dot-per-centimeter{
                 dnam{"punkter per centimeter"}
                 one{"{0} punkt per centimeter"}
@@ -449,12 +454,27 @@
                 one{"{0} desimeter"}
                 other{"{0} desimeter"}
             }
+            earth-radius{
+                dnam{"jordradius"}
+                one{"{0} jordradius"}
+                other{"{0} jordradier"}
+            }
+            fathom{
+                dnam{"favner"}
+                one{"{0} favn"}
+                other{"{0} favner"}
+            }
             foot{
                 dnam{"fot"}
                 one{"{0} fot"}
                 other{"{0} fot"}
                 per{"{0} per fot"}
             }
+            furlong{
+                dnam{"furlong"}
+                one{"{0} furlong"}
+                other{"{0} furlong"}
+            }
             inch{
                 dnam{"tommer"}
                 one{"{0} tomme"}
@@ -519,12 +539,14 @@
                 other{"{0} pikometer"}
             }
             point{
-                dnam{"punkter"}
-                one{"{0} punkt"}
-                other{"{0} punkter"}
+                dnam{"typografiske punkter"}
+                one{"{0} typografisk punkt"}
+                other{"{0} typografiske punkter"}
             }
             solar-radius{
-                dnam{"solradius"}
+                dnam{"solradier"}
+                one{"{0} solradius"}
+                other{"{0} solradier"}
             }
             yard{
                 dnam{"yard"}
@@ -533,6 +555,16 @@
             }
         }
         light{
+            candela{
+                dnam{"candela"}
+                one{"{0} candela"}
+                other{"{0} candela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                one{"{0} lumen"}
+                other{"{0} lumen"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
@@ -558,6 +590,10 @@
                 one{"{0} jordmasse"}
                 other{"{0} jordmasser"}
             }
+            grain{
+                one{"{0} grain"}
+                other{"{0} grain"}
+            }
             gram{
                 dnam{"gram"}
                 one{"{0} gram"}
@@ -607,6 +643,11 @@
                 one{"{0} solmasse"}
                 other{"{0} solmasser"}
             }
+            stone{
+                dnam{"stone"}
+                one{"{0} stone"}
+                other{"{0} stone"}
+            }
             ton{
                 dnam{"amerikanske tonn"}
                 one{"{0} amerikansk tonn"}
@@ -726,9 +767,9 @@
                 other{"{0} grader fahrenheit"}
             }
             generic{
-                dnam{"°"}
-                one{"{0}°"}
-                other{"{0}°"}
+                dnam{"grader"}
+                one{"{0} grad"}
+                other{"{0} grader"}
             }
             kelvin{
                 dnam{"kelvin"}
@@ -743,7 +784,9 @@
                 other{"{0} Nm"}
             }
             pound-force-foot{
-                dnam{"pound-force-foot"}
+                dnam{"pound-foot"}
+                one{"{0} pound-foot"}
+                other{"{0} pound-foot"}
             }
         }
         volume{
@@ -757,6 +800,11 @@
                 one{"{0} fat"}
                 other{"{0} fat"}
             }
+            bushel{
+                dnam{"bushel"}
+                one{"{0} bushel"}
+                other{"{0} bushels"}
+            }
             centiliter{
                 dnam{"centiliter"}
                 one{"{0} centiliter"}
@@ -814,15 +862,35 @@
                 one{"{0} desiliter"}
                 other{"{0} desiliter"}
             }
+            dessert-spoon{
+                dnam{"barneskje"}
+                one{"{0} barneskje"}
+                other{"{0} barneskjeer"}
+            }
+            dessert-spoon-imperial{
+                dnam{"britisk barneskje"}
+                one{"{0} britisk barneskje"}
+                other{"{0} britiske barneskjeer"}
+            }
+            dram{
+                dnam{"dram"}
+                one{"{0} dram"}
+                other{"{0} dram"}
+            }
+            drop{
+                dnam{"dråpe"}
+                one{"{0} dråpe"}
+                other{"{0} dråper"}
+            }
             fluid-ounce{
                 dnam{"væskeunser"}
                 one{"{0} væskeunse"}
                 other{"{0} væskeunser"}
             }
             fluid-ounce-imperial{
-                dnam{"imp. fluid ounce"}
-                one{"{0} imp. fluid ounce"}
-                other{"{0} imp. fluid ounce"}
+                dnam{"britiske væskeunser"}
+                one{"{0} britisk væskeunse"}
+                other{"{0} britiske væskeunser"}
             }
             gallon{
                 dnam{"gallon"}
@@ -841,6 +909,11 @@
                 one{"{0} hektoliter"}
                 other{"{0} hektoliter"}
             }
+            jigger{
+                dnam{"shot"}
+                one{"{0} shot"}
+                other{"{0} shot"}
+            }
             liter{
                 dnam{"liter"}
                 one{"{0} liter"}
@@ -857,6 +930,11 @@
                 one{"{0} milliliter"}
                 other{"{0} milliliter"}
             }
+            pinch{
+                dnam{"klype"}
+                one{"{0} klype"}
+                other{"{0} klyper"}
+            }
             pint{
                 dnam{"pint"}
                 one{"{0} pint"}
@@ -872,6 +950,11 @@
                 one{"{0} quart"}
                 other{"{0} quart"}
             }
+            quart-imperial{
+                dnam{"britisk quart"}
+                one{"{0} britisk quart"}
+                other{"{0} britiske quart"}
+            }
             tablespoon{
                 dnam{"spiseskjeer"}
                 one{"{0} spiseskje"}
@@ -1245,13 +1328,13 @@
         angle{
             arc-minute{
                 dnam{"bueminutter"}
-                one{"{0} bmin"}
-                other{"{0} bmin"}
+                one{"{0}′"}
+                other{"{0}′"}
             }
             arc-second{
                 dnam{"buesek"}
-                one{"{0} bsek"}
-                other{"{0} bsek"}
+                one{"{0}″"}
+                other{"{0}″"}
             }
             degree{
                 dnam{"grader"}
@@ -1293,7 +1376,7 @@
             }
             square-inch{
                 dnam{"tommer²"}
-                one{"{0} tommer²"}
+                one{"{0} tomme²"}
                 other{"{0} tommer²"}
                 per{"{0}/tommer²"}
             }
@@ -1310,9 +1393,9 @@
                 per{"{0}/m²"}
             }
             square-mile{
-                dnam{"engelske mil²"}
+                dnam{"miles²"}
                 one{"{0} mile²"}
-                other{"{0} mile²"}
+                other{"{0} miles²"}
                 per{"{0}/mile²"}
             }
             square-yard{
@@ -1373,12 +1456,12 @@
                 other{"{0} l/km"}
             }
             mile-per-gallon{
-                dnam{"eng. mil/gal"}
+                dnam{"miles/gal"}
                 one{"{0} mpg"}
                 other{"{0} mpg"}
             }
             mile-per-gallon-imperial{
-                dnam{"mile/brit. gal"}
+                dnam{"miles/brit. gal"}
                 one{"{0} mpg brit."}
                 other{"{0} mpg brit."}
             }
@@ -1437,7 +1520,7 @@
                 other{"{0} PB"}
             }
             terabit{
-                dnam{"Tb"}
+                dnam{"Tbit"}
                 one{"{0} Tb"}
                 other{"{0} Tb"}
             }
@@ -1613,6 +1696,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"pkt"}
+                one{"{0} pkt"}
+                other{"{0} pkt"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
             }
@@ -1643,9 +1731,9 @@
         }
         length{
             astronomical-unit{
-                dnam{"au"}
-                one{"{0} au"}
-                other{"{0} au"}
+                dnam{"AU"}
+                one{"{0} AU"}
+                other{"{0} AU"}
             }
             centimeter{
                 dnam{"cm"}
@@ -1658,12 +1746,22 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            fathom{
+                dnam{"favner"}
+                one{"{0} fm"}
+                other{"{0} fm"}
+            }
             foot{
                 dnam{"fot"}
                 one{"{0} fot"}
                 other{"{0} fot"}
                 per{"{0}/fot"}
             }
+            furlong{
+                dnam{"furlong"}
+                one{"{0} fur"}
+                other{"{0} fur"}
+            }
             inch{
                 dnam{"tommer"}
                 one{"{0} tomme"}
@@ -1693,9 +1791,9 @@
                 other{"{0} µm"}
             }
             mile{
-                dnam{"mile"}
+                dnam{"miles"}
                 one{"{0} mile"}
-                other{"{0} mile"}
+                other{"{0} miles"}
             }
             mile-scandinavian{
                 dnam{"mil"}
@@ -1742,6 +1840,16 @@
             }
         }
         light{
+            candela{
+                dnam{"cd"}
+                one{"{0} cd"}
+                other{"{0} cd"}
+            }
+            lumen{
+                dnam{"lm"}
+                one{"{0} lm"}
+                other{"{0} lm"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lx"}
@@ -1816,6 +1924,9 @@
                 one{"{0} M☉"}
                 other{"{0} M☉"}
             }
+            stone{
+                dnam{"stone"}
+            }
             ton{
                 dnam{"am. tonn"}
                 one{"{0} am. tonn"}
@@ -1911,9 +2022,9 @@
                 other{"{0} m/s"}
             }
             mile-per-hour{
-                dnam{"engelske mil/t"}
+                dnam{"miles/t"}
                 one{"{0} mile/t"}
-                other{"{0} mile/t"}
+                other{"{0} miles/t"}
             }
         }
         temperature{
@@ -1956,6 +2067,11 @@
                 one{"{0} fat"}
                 other{"{0} fat"}
             }
+            bushel{
+                dnam{"bushel"}
+                one{"{0} bu"}
+                other{"{0} bu"}
+            }
             centiliter{
                 dnam{"cl"}
                 one{"{0} cl"}
@@ -1974,7 +2090,7 @@
             }
             cubic-inch{
                 dnam{"tommer³"}
-                one{"{0} tommer³"}
+                one{"{0} tomme³"}
                 other{"{0} tommer³"}
             }
             cubic-kilometer{
@@ -1989,9 +2105,9 @@
                 per{"{0}/m³"}
             }
             cubic-mile{
-                dnam{"engelske mil³"}
+                dnam{"miles³"}
                 one{"{0} mile³"}
-                other{"{0} mile³"}
+                other{"{0} miles³"}
             }
             cubic-yard{
                 dnam{"yard³"}
@@ -2013,6 +2129,26 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"bs"}
+                one{"{0} bs"}
+                other{"{0} bs"}
+            }
+            dessert-spoon-imperial{
+                dnam{"imp. bs"}
+                one{"{0} imp. bs"}
+                other{"{0} imp. bs"}
+            }
+            dram{
+                dnam{"dram fluid"}
+                one{"{0} dram fl"}
+                other{"{0} dram fl"}
+            }
+            drop{
+                dnam{"dråpe"}
+                one{"{0} dråpe"}
+                other{"{0} dråpe"}
+            }
             fluid-ounce{
                 dnam{"væskeunse"}
                 one{"{0} fl oz"}
@@ -2040,6 +2176,11 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"shot"}
+                one{"{0} shot"}
+                other{"{0} shot"}
+            }
             liter{
                 dnam{"liter"}
                 one{"{0} l"}
@@ -2056,6 +2197,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"klype"}
+                one{"{0} klype"}
+                other{"{0} klype"}
+            }
             pint{
                 dnam{"pint"}
                 one{"{0} pt"}
@@ -2071,6 +2217,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"imp. quart"}
+                one{"{0} imp. quart"}
+                other{"{0} imp. quart"}
+            }
             tablespoon{
                 dnam{"ss"}
                 one{"{0} ss"}
diff --git a/icu4c/source/data/unit/nb_NO.txt b/icu4c/source/data/unit/nb_NO.txt
index fdac28b..15a33c3 100644
--- a/icu4c/source/data/unit/nb_NO.txt
+++ b/icu4c/source/data/unit/nb_NO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/nd.txt b/icu4c/source/data/unit/nd.txt
index 57c1537..0f43c83 100644
--- a/icu4c/source/data/unit/nd.txt
+++ b/icu4c/source/data/unit/nd.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nd{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/nds.txt b/icu4c/source/data/unit/nds.txt
deleted file mode 100644
index 2cf547f..0000000
--- a/icu4c/source/data/unit/nds.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-nds{
-    Version{"37"}
-    units{
-        duration{
-            day{
-                other{"{0} Daag"}
-            }
-            hour{
-                other{"{0} Stünnen"}
-            }
-            minute{
-                other{"{0} Minuten"}
-            }
-            month{
-                other{"{0} Maanden"}
-            }
-            second{
-                other{"{0} Sekunnen"}
-            }
-            week{
-                other{"{0} Weken"}
-            }
-            year{
-                other{"{0} Johren"}
-            }
-        }
-    }
-}
diff --git a/icu4c/source/data/unit/ne.txt b/icu4c/source/data/unit/ne.txt
index 7bff111..75a2f0a 100644
--- a/icu4c/source/data/unit/ne.txt
+++ b/icu4c/source/data/unit/ne.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ne{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -408,6 +408,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"बिन्‍दु"}
+                one{"{0}बिन्‍दु"}
+                other{"{0}बिन्‍दु"}
+            }
             dot-per-centimeter{
                 dnam{"डट प्रति सेन्टिमिटर"}
                 one{"{0} डट प्रति सेन्टिमिटर"}
@@ -459,12 +464,27 @@
                 one{"{0}डेसिमिटर"}
                 other{"{0}डेसिमिटर"}
             }
+            earth-radius{
+                dnam{"पृथ्वीको त्रिज्या"}
+                one{"{0} पृथ्वीको त्रिज्या"}
+                other{"{0} पृथ्वीको त्रिज्या"}
+            }
+            fathom{
+                dnam{"फ्यादम"}
+                one{"{0} फ्यादम"}
+                other{"{0} फ्यादम"}
+            }
             foot{
                 dnam{"फुट"}
                 one{"{0} फुट"}
                 other{"{0} फुट"}
                 per{"{0} प्रति फुट"}
             }
+            furlong{
+                dnam{"फर्लंग"}
+                one{"{0} फर्लंग"}
+                other{"{0} फर्लंग"}
+            }
             inch{
                 dnam{"इन्च"}
                 one{"{0}इन्च"}
@@ -545,6 +565,16 @@
             }
         }
         light{
+            candela{
+                dnam{"क्यान्डेला"}
+                one{"{0} क्यान्डेला"}
+                other{"{0} क्यान्डेला"}
+            }
+            lumen{
+                dnam{"लुमेन"}
+                one{"{0} लुमेन"}
+                other{"{0} लुमेन"}
+            }
             lux{
                 dnam{"लक्स"}
                 one{"{0}लक्स"}
@@ -572,6 +602,11 @@
                 one{"{0} पृथ्वी घन"}
                 other{"{0} पृथ्वी घन"}
             }
+            grain{
+                dnam{"दाना"}
+                one{"{0} दाना"}
+                other{"{0} दाना"}
+            }
             gram{
                 dnam{"ग्राम"}
                 one{"{0} ग्राम"}
@@ -621,6 +656,11 @@
                 one{"{0} सौर्य घन"}
                 other{"{0} सौर्य घन"}
             }
+            stone{
+                dnam{"स्टोन"}
+                one{"{0} स्टोन"}
+                other{"{0} स्टोन"}
+            }
             ton{
                 dnam{"टन"}
                 one{"{0}टन"}
@@ -778,6 +818,11 @@
                 one{"{0} ब्यारल"}
                 other{"{0} ब्यारल"}
             }
+            bushel{
+                dnam{"बुशेल"}
+                one{"{0} बुशेल"}
+                other{"{0} बुशेल"}
+            }
             centiliter{
                 dnam{"सेन्टिलिटर"}
                 one{"{0}सेन्टिलिटर"}
@@ -835,6 +880,26 @@
                 one{"{0}डेसिलिटर"}
                 other{"{0}डेसिलिटर"}
             }
+            dessert-spoon{
+                dnam{"डेजर्ट चम्चा"}
+                one{"{0} डेजर्ट चम्चा"}
+                other{"{0} डेजर्ट चम्चा"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Imp. डेजर्ट चम्चा"}
+                one{"{0} Imp. डेजर्ट चम्चा"}
+                other{"{0} Imp. डेजर्ट चम्चा"}
+            }
+            dram{
+                dnam{"ड्राम"}
+                one{"{0} ड्राम"}
+                other{"{0} ड्राम"}
+            }
+            drop{
+                dnam{"थोपा"}
+                one{"{0} थोपा"}
+                other{"{0} थोपा"}
+            }
             fluid-ounce{
                 dnam{"तरल आउन्स"}
                 one{"{0} तरल आउन्स"}
@@ -862,6 +927,11 @@
                 one{"{0}हेक्टोलिटर"}
                 other{"{0}हेक्टोलिटर"}
             }
+            jigger{
+                dnam{"जिगर"}
+                one{"{0} जिगर"}
+                other{"{0} जिगर"}
+            }
             liter{
                 dnam{"लिटर"}
                 one{"{0} लिटर"}
@@ -878,6 +948,11 @@
                 one{"{0}मिलिलिटर"}
                 other{"{0}मिलिलिटर"}
             }
+            pinch{
+                dnam{"चुटकी"}
+                one{"{0} चुटकी"}
+                other{"{0} चुटकी"}
+            }
             pint{
                 dnam{"पिन्ट"}
                 one{"{0}पिन्ट"}
@@ -893,6 +968,11 @@
                 one{"{0}क्वार्ट"}
                 other{"{0}क्वार्ट्स"}
             }
+            quart-imperial{
+                dnam{"इम्पिरियल चौथाइ"}
+                one{"{0} इम्पिरियल चौथाइ"}
+                other{"{0} इम्पिरियल चौथाइ"}
+            }
             tablespoon{
                 dnam{"टेबल चम्चा"}
                 one{"{0} टेबल चम्चा"}
@@ -1556,6 +1636,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"बिन्‍दु"}
+                one{"{0} बिन्‍दु"}
+                other{"{0} बिन्‍दु"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 one{"{0} dpcm"}
@@ -1609,12 +1694,27 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                one{"{0} R⊕"}
+                other{"{0} R⊕"}
+            }
+            fathom{
+                dnam{"फ्यादम"}
+                one{"{0} fth"}
+                other{"{0} fth"}
+            }
             foot{
                 dnam{"फिट"}
                 one{"{0}फिट"}
                 other{"{0}फिट"}
                 per{"{0}प्रति फिट"}
             }
+            furlong{
+                dnam{"फर्लंग"}
+                one{"{0} फर"}
+                other{"{0} fur"}
+            }
             inch{
                 dnam{"इन्च"}
                 one{"इन्च"}
@@ -1693,6 +1793,16 @@
             }
         }
         light{
+            candela{
+                dnam{"cd"}
+                one{"{0} cd"}
+                other{"{0} cd"}
+            }
+            lumen{
+                dnam{"lm"}
+                one{"{0} lm"}
+                other{"{0} lm"}
+            }
             lux{
                 dnam{"लक्स"}
                 one{"{0} lx"}
@@ -1718,6 +1828,11 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"दाना"}
+                one{"{0} दाना"}
+                other{"{0} दाना"}
+            }
             gram{
                 dnam{"ग्राम"}
                 one{"{0} ग्राम"}
@@ -1765,6 +1880,11 @@
             solar-mass{
                 dnam{"सौर्य घन"}
             }
+            stone{
+                dnam{"स्टोन"}
+                one{"{0} st"}
+                other{"{0} st"}
+            }
             ton{
                 dnam{"टन"}
                 one{"{0}टन"}
@@ -1917,6 +2037,11 @@
                 one{"{0} ब्यारल"}
                 other{"{0} ब्यारल"}
             }
+            bushel{
+                dnam{"बुशेल"}
+                one{"{0} bu"}
+                other{"{0} bu"}
+            }
             centiliter{
                 dnam{"cL"}
                 one{"{0} cL"}
@@ -1974,6 +2099,26 @@
                 one{"{0} dL"}
                 other{"{0} dL"}
             }
+            dessert-spoon{
+                dnam{"dstspn"}
+                one{"{0} dstspn"}
+                other{"{0} dstspn"}
+            }
+            dessert-spoon-imperial{
+                dnam{"dstspn Imp"}
+                one{"{0} dstspn Imp"}
+                other{"{0} dstspn Imp"}
+            }
+            dram{
+                dnam{"ड्राम तरल पदार्थ"}
+                one{"{0} ड्राम तरल"}
+                other{"{0} ड्राम fl"}
+            }
+            drop{
+                dnam{"थोपा"}
+                one{"{0} थोपा"}
+                other{"{0} थोपा"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -1996,6 +2141,11 @@
                 one{"{0} hL"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"जिगर"}
+                one{"{0} जिगर"}
+                other{"{0} जिगर"}
+            }
             liter{
                 dnam{"लिटर"}
                 one{"{0} लि."}
@@ -2012,6 +2162,11 @@
                 one{"{0} mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"चुटकी"}
+                one{"{0} चुटकी"}
+                other{"{0} चुटकी"}
+            }
             pint{
                 dnam{"पिन्ट"}
                 one{"{0} pt"}
@@ -2027,6 +2182,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"qt Imp"}
+                one{"{0} qt Imp."}
+                other{"{0} qt Imp."}
+            }
             tablespoon{
                 dnam{"tbsp"}
                 one{"{0} tbsp"}
diff --git a/icu4c/source/data/unit/nl.txt b/icu4c/source/data/unit/nl.txt
index a3f31b1..c2e2b84 100644
--- a/icu4c/source/data/unit/nl.txt
+++ b/icu4c/source/data/unit/nl.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -399,6 +399,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"punt"}
+                one{"dot"}
+                other{"{0} dot"}
+            }
             dot-per-centimeter{
                 dnam{"dots per centimeter"}
                 one{"{0} dot per centimeter"}
@@ -575,6 +580,11 @@
                 one{"{0} aardmassa"}
                 other{"{0} aardmassa"}
             }
+            grain{
+                dnam{"grein"}
+                one{"{0} grein"}
+                other{"{0} grein"}
+            }
             gram{
                 dnam{"gram"}
                 one{"{0} gram"}
@@ -588,9 +598,9 @@
                 per{"{0} per kilogram"}
             }
             metric-ton{
-                dnam{"tonne"}
-                one{"{0} tonne"}
-                other{"{0} tonnes"}
+                dnam{"metrische ton"}
+                one{"{0} metrische ton"}
+                other{"{0} metrische ton"}
             }
             microgram{
                 dnam{"microgram"}
@@ -772,7 +782,7 @@
             pound-force-foot{
                 dnam{"pound-feet"}
                 one{"{0} pound-force-foot"}
-                other{"{0} pound-feet"}
+                other{"{0} pound-force-feet"}
             }
         }
         volume{
@@ -848,6 +858,26 @@
                 one{"{0} deciliter"}
                 other{"{0} deciliter"}
             }
+            dessert-spoon{
+                dnam{"dessertlepel"}
+                one{"{0} dessertlepel"}
+                other{"{0} dessertlepels"}
+            }
+            dessert-spoon-imperial{
+                dnam{"imp. dessertlepel"}
+                one{"{0} imp. dessertlepel"}
+                other{"{0} imp. dessertlepels"}
+            }
+            dram{
+                dnam{"drachme"}
+                one{"{0} drachme"}
+                other{"{0} drachme"}
+            }
+            drop{
+                dnam{"druppel"}
+                one{"{0} druppel"}
+                other{"{0} druppels"}
+            }
             fluid-ounce{
                 dnam{"fluid ounce"}
                 one{"{0} fluid ounce"}
@@ -875,6 +905,10 @@
                 one{"{0} hectoliter"}
                 other{"{0} hectoliter"}
             }
+            jigger{
+                one{"{0} jigger"}
+                other{"{0} jiggers"}
+            }
             liter{
                 dnam{"liter"}
                 one{"{0} liter"}
@@ -891,6 +925,11 @@
                 one{"{0} milliliter"}
                 other{"{0} milliliter"}
             }
+            pinch{
+                dnam{"snufje"}
+                one{"{0} snufje"}
+                other{"{0} snufjes"}
+            }
             pint{
                 dnam{"pint"}
                 one{"{0} pint"}
@@ -906,6 +945,11 @@
                 one{"{0} quart"}
                 other{"{0} quart"}
             }
+            quart-imperial{
+                dnam{"imp. quart"}
+                one{"{0} imp. quart"}
+                other{"{0} imp. quarts"}
+            }
             tablespoon{
                 dnam{"eetlepel"}
                 one{"{0} eetlepel"}
@@ -2065,6 +2109,10 @@
             }
         }
         graphics{
+            dot{
+                one{"{0} dot"}
+                other{"{0} dot"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 one{"{0} dpcm"}
@@ -2221,6 +2269,11 @@
                 one{"{0} CD"}
                 other{"{0} CD"}
             }
+            grain{
+                dnam{"grein"}
+                one{"{0} grein"}
+                other{"{0} grein"}
+            }
             gram{
                 dnam{"g"}
                 one{"{0} g"}
@@ -2394,6 +2447,13 @@
                 other{"{0} K"}
             }
         }
+        torque{
+            newton-meter{
+                dnam{"Nm"}
+                one{"{0} Nm"}
+                other{"{0} Nm"}
+            }
+        }
         volume{
             acre-foot{
                 dnam{"acre ft"}
@@ -2462,6 +2522,26 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"des l"}
+                one{"{0} des l"}
+                other{"{0} des l"}
+            }
+            dessert-spoon-imperial{
+                dnam{"imp. des l"}
+                one{"{0} imp. des l"}
+                other{"{0} imp. des lpls"}
+            }
+            dram{
+                dnam{"drachme"}
+                one{"{0} fl dr"}
+                other{"{0} fl dr"}
+            }
+            drop{
+                dnam{"druppel"}
+                one{"{0} druppel"}
+                other{"{0} druppels"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -2500,6 +2580,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"snufje"}
+                one{"{0} snufje"}
+                other{"{0} snufje"}
+            }
             pint{
                 dnam{"pt"}
                 one{"{0} pt"}
@@ -2515,6 +2600,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"imp. qt"}
+                one{"{0} imp. qt"}
+                other{"{0} imp. qt"}
+            }
             tablespoon{
                 dnam{"el"}
                 one{"{0} el"}
diff --git a/icu4c/source/data/unit/nmg.txt b/icu4c/source/data/unit/nmg.txt
index 3be5f9b..5a8e42a 100644
--- a/icu4c/source/data/unit/nmg.txt
+++ b/icu4c/source/data/unit/nmg.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nmg{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/nn.txt b/icu4c/source/data/unit/nn.txt
index 2935e0c..163a412 100644
--- a/icu4c/source/data/unit/nn.txt
+++ b/icu4c/source/data/unit/nn.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nn{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -42,7 +42,7 @@
                 other{"{0} radianar"}
             }
             revolution{
-                dnam{"omdreiingar"}
+                dnam{"omdreiing"}
                 one{"{0} omdreiing"}
                 other{"{0} omdreiingar"}
             }
@@ -101,6 +101,7 @@
         }
         compound{
             per{"{0} per {1}"}
+            times{"{0}{1}"}
         }
         concentr{
             karat{
@@ -118,11 +119,26 @@
                 one{"{0} millimol per liter"}
                 other{"{0} millimol per liter"}
             }
+            percent{
+                dnam{"prosent"}
+                one{"{0} prosent"}
+                other{"{0} prosent"}
+            }
+            permille{
+                dnam{"promille"}
+                one{"{0} promille"}
+                other{"{0} promille"}
+            }
             permillion{
                 dnam{"milliondelar"}
                 one{"{0} milliondel"}
                 other{"{0} milliondelar"}
             }
+            permyriad{
+                dnam{"promyriade"}
+                one{"{0} promyriade"}
+                other{"{0} promyriade"}
+            }
         }
         consumption{
             liter-per-100-kilometer{
@@ -147,7 +163,11 @@
             }
         }
         coordinate{
+            dnam{"himmelretning"}
             east{"{0} aust"}
+            north{"{0} nord"}
+            south{"{0} sør"}
+            west{"{0} vest"}
         }
         digital{
             bit{
@@ -190,6 +210,11 @@
                 one{"{0} megabyte"}
                 other{"{0} megabyte"}
             }
+            petabyte{
+                dnam{"petabyte"}
+                one{"{0} petabyte"}
+                other{"{0} petabyte"}
+            }
             terabit{
                 dnam{"terabit"}
                 one{"{0} terabit"}
@@ -211,12 +236,17 @@
                 dnam{"døgn"}
                 one{"{0} døgn"}
                 other{"{0} døgn"}
-                per{"{0}/døgn"}
+                per{"{0} per døgn"}
+            }
+            decade{
+                dnam{"tiår"}
+                one{"{0} tiår"}
+                other{"{0} tiår"}
             }
             hour{
                 dnam{"timar"}
                 one{"{0} time"}
-                other{"{0} timar"}
+                other{"{0} timer"}
                 per{"{0} per time"}
             }
             microsecond{
@@ -272,7 +302,7 @@
                 other{"{0} ampere"}
             }
             milliampere{
-                dnam{"miliampere"}
+                dnam{"milliampere"}
                 one{"{0} milliampere"}
                 other{"{0} milliampere"}
             }
@@ -288,11 +318,21 @@
             }
         }
         energy{
+            british-thermal-unit{
+                dnam{"British thermal units"}
+                one{"{0} British thermal unit"}
+                other{"{0} British thermal units"}
+            }
             calorie{
                 dnam{"kaloriar"}
                 one{"{0} kalori"}
                 other{"{0} kaloriar"}
             }
+            electronvolt{
+                dnam{"elektronvolt"}
+                one{"{0} elektronvolt"}
+                other{"{0} elektronvolt"}
+            }
             foodcalorie{
                 dnam{"kaloriar"}
                 one{"{0} kalori"}
@@ -318,6 +358,23 @@
                 one{"{0} kilowattime"}
                 other{"{0} kilowattimar"}
             }
+            therm-us{
+                dnam{"therm"}
+                one{"{0} therm"}
+                other{"{0} therm"}
+            }
+        }
+        force{
+            newton{
+                dnam{"newton"}
+                one{"{0} newton"}
+                other{"{0} newton"}
+            }
+            pound-force{
+                dnam{"poundforce"}
+                one{"{0} poundforce"}
+                other{"{0} poundforce"}
+            }
         }
         frequency{
             gigahertz{
@@ -341,6 +398,48 @@
                 other{"{0} megahertz"}
             }
         }
+        graphics{
+            dot{
+                dnam{"punkt"}
+                one{"{0} punkt"}
+                other{"{0} punkt"}
+            }
+            dot-per-centimeter{
+                dnam{"punkt per centimeter"}
+                one{"{0} punkt per centimeter"}
+                other{"{0} punkt per centimeter"}
+            }
+            dot-per-inch{
+                dnam{"punkt per tomme"}
+                one{"{0} punkt per tomme"}
+                other{"{0} punkt per tomme"}
+            }
+            em{
+                dnam{"gefirt"}
+                one{"{0} gefirt"}
+                other{"{0} gefirt"}
+            }
+            megapixel{
+                dnam{"megapikslar"}
+                one{"{0} megapiksel"}
+                other{"{0} megapikslar"}
+            }
+            pixel{
+                dnam{"pikslar"}
+                one{"{0} piksel"}
+                other{"{0} pikslar"}
+            }
+            pixel-per-centimeter{
+                dnam{"pikslar per centimeter"}
+                one{"{0} piksel per centimeter"}
+                other{"{0} pikslar per centimeter"}
+            }
+            pixel-per-inch{
+                dnam{"pikslar per tomme"}
+                one{"{0} piksel per tomme"}
+                other{"{0} pikslar per tomme"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"astronomiske einingar"}
@@ -358,17 +457,32 @@
                 one{"{0} desimeter"}
                 other{"{0} desimeter"}
             }
+            earth-radius{
+                dnam{"jordradius"}
+                one{"{0} jordradius"}
+                other{"{0} jordradius"}
+            }
+            fathom{
+                dnam{"famner"}
+                one{"{0} famn"}
+                other{"{0} famner"}
+            }
             foot{
                 dnam{"fot"}
                 one{"{0} fot"}
                 other{"{0} fot"}
-                per{"{0}/ft"}
+                per{"{0} per fot"}
+            }
+            furlong{
+                dnam{"furlong"}
+                one{"{0} furlong"}
+                other{"{0} furlong"}
             }
             inch{
-                dnam{"tommer"}
+                dnam{"tommar"}
                 one{"{0} tomme"}
-                other{"{0} tommer"}
-                per{"{0}/in"}
+                other{"{0} tommar"}
+                per{"{0} per tomme"}
             }
             kilometer{
                 dnam{"kilometer"}
@@ -389,8 +503,8 @@
             }
             micrometer{
                 dnam{"mikrometer"}
-                one{"{0} µm"}
-                other{"{0} µm"}
+                one{"{0} mikrometer"}
+                other{"{0} mikrometer"}
             }
             mile{
                 dnam{"engelske mil"}
@@ -428,9 +542,14 @@
                 other{"{0} pikometer"}
             }
             point{
-                dnam{"punkt"}
-                one{"{0} punkt"}
-                other{"{0} punkt"}
+                dnam{"typografiske punkt"}
+                one{"{0} typografisk punkt"}
+                other{"{0} typografiske punkt"}
+            }
+            solar-radius{
+                dnam{"solradius"}
+                one{"{0} solradius"}
+                other{"{0} solradius"}
             }
             yard{
                 dnam{"engelske yard"}
@@ -439,11 +558,26 @@
             }
         }
         light{
+            candela{
+                dnam{"candela"}
+                one{"{0} candela"}
+                other{"{0} candela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                one{"{0} lumen"}
+                other{"{0} lumen"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
                 other{"{0} lux"}
             }
+            solar-luminosity{
+                dnam{"solluminositetar"}
+                one{"{0} solluminositet"}
+                other{"{0} solluminositetar"}
+            }
         }
         mass{
             carat{
@@ -451,6 +585,16 @@
                 one{"{0} karat"}
                 other{"{0} karat"}
             }
+            dalton{
+                dnam{"dalton"}
+                one{"{0} dalton"}
+                other{"{0} dalton"}
+            }
+            earth-mass{
+                dnam{"jordmassar"}
+                one{"{0} jordmasse"}
+                other{"{0} jordmassar"}
+            }
             gram{
                 dnam{"gram"}
                 one{"{0} gram"}
@@ -495,6 +639,16 @@
                 other{"{0} pund"}
                 per{"{0} per pund"}
             }
+            solar-mass{
+                dnam{"solmassar"}
+                one{"{0} solmasse"}
+                other{"{0} solmassar"}
+            }
+            stone{
+                dnam{"engelske stones"}
+                one{"{0} engelsk stone"}
+                other{"{0} engelske stones"}
+            }
             ton{
                 dnam{"amerikanske tonn"}
                 one{"{0} amerikansk tonn"}
@@ -534,6 +688,11 @@
             }
         }
         pressure{
+            atmosphere{
+                dnam{"atmosfærar"}
+                one{"{0} atmosfære"}
+                other{"{0} atmosfærar"}
+            }
             hectopascal{
                 dnam{"hektopascal"}
                 one{"{0} hektopascal"}
@@ -544,6 +703,16 @@
                 one{"{0} tomme kvikksølv"}
                 other{"{0} tommar kvikksølv"}
             }
+            kilopascal{
+                dnam{"kilopascal"}
+                one{"{0} kilopascal"}
+                other{"{0} kilopascal"}
+            }
+            megapascal{
+                dnam{"megapascal"}
+                one{"{0} megapascal"}
+                other{"{0} megapascal"}
+            }
             millibar{
                 dnam{"millibar"}
                 one{"{0} millibar"}
@@ -554,6 +723,11 @@
                 one{"{0} millimeter kvikksølv"}
                 other{"{0} millimeter kvikksølv"}
             }
+            pascal{
+                dnam{"pascal"}
+                one{"{0} pascal"}
+                other{"{0} pascal"}
+            }
             pound-force-per-square-inch{
                 dnam{"pund per kvadrattomme"}
                 one{"{0} pund per kvadrattomme"}
@@ -604,12 +778,34 @@
                 other{"{0} kelvin"}
             }
         }
+        torque{
+            newton-meter{
+                dnam{"newtonmeter"}
+                one{"{0} newtonmeter"}
+                other{"{0} newtonmeter"}
+            }
+            pound-force-foot{
+                dnam{"pound-feet"}
+                one{"{0} pound-force-foot"}
+                other{"{0} pound-feet"}
+            }
+        }
         volume{
             acre-foot{
                 dnam{"acre-fot"}
                 one{"{0} acre-fot"}
                 other{"{0} acre-fot"}
             }
+            barrel{
+                dnam{"fat"}
+                one{"{0} fat"}
+                other{"{0} fat"}
+            }
+            bushel{
+                dnam{"bushels"}
+                one{"{0} bushel"}
+                other{"{0} bushels"}
+            }
             centiliter{
                 dnam{"centiliter"}
                 one{"{0} centiliter"}
@@ -667,11 +863,36 @@
                 one{"{0} desiliter"}
                 other{"{0} desiliter"}
             }
+            dessert-spoon{
+                dnam{"dessertskei"}
+                one{"{0} dessertskei"}
+                other{"{0} dessertskeier"}
+            }
+            dessert-spoon-imperial{
+                dnam{"britisk dessertskei"}
+                one{"{0} britisk dessertskei"}
+                other{"{0} britisk dessertskei"}
+            }
+            dram{
+                dnam{"dram"}
+                one{"{0} dram"}
+                other{"{0} dram"}
+            }
+            drop{
+                dnam{"drope"}
+                one{"{0} drope"}
+                other{"{0} dropar"}
+            }
             fluid-ounce{
                 dnam{"væskeunser"}
                 one{"{0} væskeunse"}
                 other{"{0} væskeunser"}
             }
+            fluid-ounce-imperial{
+                dnam{"britiske væskeunser"}
+                one{"{0} britisk væskeunse"}
+                other{"{0} britiske væskeunser"}
+            }
             gallon{
                 dnam{"gallon"}
                 one{"{0} gallon"}
@@ -689,6 +910,11 @@
                 one{"{0} hektoliter"}
                 other{"{0} hektoliter"}
             }
+            jigger{
+                dnam{"shot"}
+                one{"{0} shot"}
+                other{"{0} jigger"}
+            }
             liter{
                 dnam{"liter"}
                 one{"{0} liter"}
@@ -705,6 +931,11 @@
                 one{"{0} milliliter"}
                 other{"{0} milliliter"}
             }
+            pinch{
+                dnam{"klype"}
+                one{"{0} klype"}
+                other{"{0} klyper"}
+            }
             pint{
                 dnam{"pint"}
                 one{"{0} pint"}
@@ -720,6 +951,11 @@
                 one{"{0} quart"}
                 other{"{0} quart"}
             }
+            quart-imperial{
+                dnam{"britisk quart"}
+                one{"{0} britisk quart"}
+                other{"{0} britiske quart"}
+            }
             tablespoon{
                 dnam{"matskeier"}
                 one{"{0} matskei"}
@@ -749,6 +985,14 @@
         }
         compound{
             per{"{0}/{1}"}
+            times{"{0}{1}"}
+        }
+        concentr{
+            percent{
+                dnam{"%"}
+                one{"{0} %"}
+                other{"{0} %"}
+            }
         }
         consumption{
             liter-per-100-kilometer{
@@ -757,6 +1001,12 @@
                 other{"{0} l/100km"}
             }
         }
+        coordinate{
+            east{"{0}Ø"}
+            north{"{0}N"}
+            south{"{0}S"}
+            west{"{0}V"}
+        }
         duration{
             day{
                 dnam{"døgn"}
@@ -970,6 +1220,7 @@
         }
         compound{
             per{"{0}/{1}"}
+            times{"{0}{1}"}
         }
         concentr{
             karat{
@@ -987,11 +1238,26 @@
                 one{"{0} mmol/l"}
                 other{"{0} mmol/l"}
             }
+            percent{
+                dnam{"prosent"}
+                one{"{0} %"}
+                other{"{0} %"}
+            }
+            permille{
+                dnam{"promille"}
+                one{"{0} ‰"}
+                other{"{0} ‰"}
+            }
             permillion{
                 dnam{"ppm"}
                 one{"{0} ppm"}
                 other{"{0} ppm"}
             }
+            permyriad{
+                dnam{"promyriade"}
+                one{"{0} ‱"}
+                other{"{0} ‱"}
+            }
         }
         consumption{
             liter-per-100-kilometer{
@@ -1015,6 +1281,13 @@
                 other{"{0} mile/brit. gal"}
             }
         }
+        coordinate{
+            dnam{"retning"}
+            east{"{0} Ø"}
+            north{"{0} N"}
+            south{"{0} S"}
+            west{"{0} V"}
+        }
         digital{
             bit{
                 dnam{"bit"}
@@ -1056,6 +1329,11 @@
                 one{"{0} MB"}
                 other{"{0} MB"}
             }
+            petabyte{
+                dnam{"PB"}
+                one{"{0} PB"}
+                other{"{0} PB"}
+            }
             terabit{
                 dnam{"Tb"}
                 one{"{0} Tb"}
@@ -1069,7 +1347,7 @@
         }
         duration{
             century{
-                dnam{"hundreår"}
+                dnam{"årh."}
                 one{"{0} årh."}
                 other{"{0} årh."}
             }
@@ -1079,10 +1357,16 @@
                 other{"{0} d"}
                 per{"{0}/d"}
             }
+            decade{
+                dnam{"tiår"}
+                one{"{0} tiår"}
+                other{"{0} tiår"}
+            }
             hour{
                 dnam{"timar"}
                 one{"{0} t"}
                 other{"{0} t"}
+                per{"{0}/t"}
             }
             microsecond{
                 dnam{"mikrosekund"}
@@ -1158,6 +1442,11 @@
                 one{"{0} cal"}
                 other{"{0} cal"}
             }
+            electronvolt{
+                dnam{"elektronvolt"}
+                one{"{0} eV"}
+                other{"{0} eV"}
+            }
             foodcalorie{
                 dnam{"cal"}
                 one{"{0} cal"}
@@ -1183,6 +1472,15 @@
                 one{"{0} kWh"}
                 other{"{0} kWh"}
             }
+            therm-us{
+                one{"{0} therm"}
+                other{"{0} therm"}
+            }
+        }
+        force{
+            pound-force{
+                dnam{"poundforce"}
+            }
         }
         frequency{
             gigahertz{
@@ -1206,6 +1504,40 @@
                 other{"{0} MHz"}
             }
         }
+        graphics{
+            dot{
+                dnam{"pkt"}
+                one{"{0} pkt"}
+                other{"{0} pkt"}
+            }
+            dot-per-centimeter{
+                one{"{0} dpcm"}
+                other{"{0} dpcm"}
+            }
+            dot-per-inch{
+                dnam{"ppt"}
+                one{"{0} ppt"}
+                other{"{0} ppt"}
+            }
+            em{
+                dnam{"gefirt"}
+                one{"{0} gefirt"}
+                other{"{0} gefirt"}
+            }
+            megapixel{
+                dnam{"megapikslar"}
+                one{"{0} MP"}
+                other{"{0} MP"}
+            }
+            pixel{
+                dnam{"pikslar"}
+            }
+            pixel-per-inch{
+                dnam{"ppi"}
+                one{"{0} ppi"}
+                other{"{0} ppi"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"au"}
@@ -1223,17 +1555,27 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            fathom{
+                dnam{"famner"}
+                one{"{0} fmn"}
+                other{"{0} fmn"}
+            }
             foot{
                 dnam{"fot"}
                 one{"{0} fot"}
                 other{"{0} fot"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"furlong"}
+                one{"{0} fur"}
+                other{"{0} fur"}
+            }
             inch{
-                dnam{"tommer"}
+                dnam{"tommar"}
                 one{"{0} tomme"}
-                other{"{0} tommer"}
-                per{"{0}/in"}
+                other{"{0} tommar"}
+                per{"{0}/tomme"}
             }
             kilometer{
                 dnam{"km"}
@@ -1297,10 +1639,11 @@
                 one{"{0} pt"}
                 other{"{0} pt"}
             }
+            solar-radius{
+                dnam{"solradius"}
+            }
             yard{
                 dnam{"engelske yard"}
-                one{"{0} yd"}
-                other{"{0} yd"}
             }
         }
         light{
@@ -1309,6 +1652,9 @@
                 one{"{0} lx"}
                 other{"{0} lx"}
             }
+            solar-luminosity{
+                dnam{"solluminositetar"}
+            }
         }
         mass{
             carat{
@@ -1316,6 +1662,15 @@
                 one{"{0} c"}
                 other{"{0} c"}
             }
+            dalton{
+                one{"{0} Da"}
+                other{"{0} Da"}
+            }
+            earth-mass{
+                dnam{"jordmasser"}
+                one{"{0} M⊕"}
+                other{"{0} M⊕"}
+            }
             gram{
                 dnam{"gram"}
                 one{"{0} g"}
@@ -1360,6 +1715,16 @@
                 other{"{0} pund"}
                 per{"{0}/pund"}
             }
+            solar-mass{
+                dnam{"solmassar"}
+                one{"{0} M☉"}
+                other{"{0} M☉"}
+            }
+            stone{
+                dnam{"stones"}
+                one{"{0} eng. st."}
+                other{"{0} eng. st."}
+            }
             ton{
                 dnam{"am. tonn"}
                 one{"{0} am. tonn"}
@@ -1399,6 +1764,11 @@
             }
         }
         pressure{
+            atmosphere{
+                dnam{"atm"}
+                one{"{0} atm"}
+                other{"{0} atm"}
+            }
             hectopascal{
                 dnam{"hPa"}
                 one{"{0} hPa"}
@@ -1442,7 +1812,7 @@
                 other{"{0} m/s"}
             }
             mile-per-hour{
-                dnam{"engelske mil per time"}
+                dnam{"engelske mil/t"}
                 one{"{0} mile/t"}
                 other{"{0} mile/t"}
             }
@@ -1469,12 +1839,29 @@
                 other{"{0} K"}
             }
         }
+        torque{
+            newton-meter{
+                dnam{"Nm"}
+                one{"{0} Nm"}
+                other{"{0} Nm"}
+            }
+        }
         volume{
             acre-foot{
                 dnam{"acre-fot"}
                 one{"{0} ac-fot"}
                 other{"{0} ac-fot"}
             }
+            barrel{
+                dnam{"fat"}
+                one{"{0} fat"}
+                other{"{0} fat"}
+            }
+            bushel{
+                dnam{"bushels"}
+                one{"{0} bu"}
+                other{"{0} bu"}
+            }
             centiliter{
                 dnam{"cl"}
                 one{"{0} cl"}
@@ -1532,11 +1919,31 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"dsskei"}
+                one{"{0} dsskei"}
+                other{"{0} dsskei"}
+            }
+            dessert-spoon-imperial{
+                dnam{"brit. dsskei"}
+                one{"{0} brit. dsskei"}
+                other{"{0} brit. dsskei"}
+            }
+            drop{
+                dnam{"drope"}
+                one{"{0} drope"}
+                other{"{0} drop"}
+            }
             fluid-ounce{
                 dnam{"væskeunse"}
                 one{"{0} fl oz"}
                 other{"{0} fl oz"}
             }
+            fluid-ounce-imperial{
+                dnam{"britisk væskeunse"}
+                one{"{0} britisk væskeunse"}
+                other{"{0} britiske væskeunser"}
+            }
             gallon{
                 dnam{"gal"}
                 one{"{0} gal"}
@@ -1554,6 +1961,11 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"shot"}
+                one{"{0} shot"}
+                other{"{0} jigger"}
+            }
             liter{
                 dnam{"liter"}
                 one{"{0} l"}
@@ -1570,6 +1982,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"klype"}
+                one{"{0} klype"}
+                other{"{0} pinch"}
+            }
             pint{
                 dnam{"pint"}
                 one{"{0} pt"}
@@ -1585,6 +2002,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"brit. quart"}
+                one{"{0} b. quart"}
+                other{"{0} b. quart"}
+            }
             tablespoon{
                 dnam{"ss"}
                 one{"{0} ss"}
diff --git a/icu4c/source/data/unit/nn_NO.txt b/icu4c/source/data/unit/nn_NO.txt
index 4e8a5f7..9eaa339 100644
--- a/icu4c/source/data/unit/nn_NO.txt
+++ b/icu4c/source/data/unit/nn_NO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/nnh.txt b/icu4c/source/data/unit/nnh.txt
index 967ded5..9704e96 100644
--- a/icu4c/source/data/unit/nnh.txt
+++ b/icu4c/source/data/unit/nnh.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nnh{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/no.txt b/icu4c/source/data/unit/no.txt
index 097a923..474d0b2 100644
--- a/icu4c/source/data/unit/no.txt
+++ b/icu4c/source/data/unit/no.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no{
     "%%ALIAS"{"nb"}
 }
diff --git a/icu4c/source/data/unit/no_NO.txt b/icu4c/source/data/unit/no_NO.txt
index 188a8a4..5d7f859 100644
--- a/icu4c/source/data/unit/no_NO.txt
+++ b/icu4c/source/data/unit/no_NO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no_NO{
     "%%ALIAS"{"nb_NO"}
 }
diff --git a/icu4c/source/data/unit/no_NO_NY.txt b/icu4c/source/data/unit/no_NO_NY.txt
index aa897fe..c900df7 100644
--- a/icu4c/source/data/unit/no_NO_NY.txt
+++ b/icu4c/source/data/unit/no_NO_NY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no_NO_NY{
     "%%ALIAS"{"nn_NO"}
 }
diff --git a/icu4c/source/data/unit/nus.txt b/icu4c/source/data/unit/nus.txt
index 4ca9779..86c260b 100644
--- a/icu4c/source/data/unit/nus.txt
+++ b/icu4c/source/data/unit/nus.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nus{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/nyn.txt b/icu4c/source/data/unit/nyn.txt
index ebf1943..2b1cd30 100644
--- a/icu4c/source/data/unit/nyn.txt
+++ b/icu4c/source/data/unit/nyn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nyn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/om.txt b/icu4c/source/data/unit/om.txt
index 2084a3f..4c08c72 100644
--- a/icu4c/source/data/unit/om.txt
+++ b/icu4c/source/data/unit/om.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 om{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/or.txt b/icu4c/source/data/unit/or.txt
index f7415dc..debd4b4 100644
--- a/icu4c/source/data/unit/or.txt
+++ b/icu4c/source/data/unit/or.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 or{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -402,6 +402,12 @@
                 other{"{0} ମେଗାହର୍ଜ୍"}
             }
         }
+        graphics{
+            dot{
+                one{"{0} ବିନ୍ଦୁ"}
+                other{"{0} ବି"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"ଖଗୋଲୀୟ ଏକକ"}
@@ -1379,6 +1385,11 @@
                 other{"{0} MHz"}
             }
         }
+        graphics{
+            dot{
+                dnam{"ବି."}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"ଆୟୁ"}
@@ -1550,6 +1561,10 @@
             solar-mass{
                 dnam{"ସୋଲର ମାସେସ"}
             }
+            stone{
+                one{"{0} ଷ୍ଟ."}
+                other{"{0} ଷ୍ଟ."}
+            }
             ton{
                 dnam{"ଟନ୍"}
                 one{"{0} ଟନ୍"}
diff --git a/icu4c/source/data/unit/os.txt b/icu4c/source/data/unit/os.txt
index 30bcf88..09c1243 100644
--- a/icu4c/source/data/unit/os.txt
+++ b/icu4c/source/data/unit/os.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 os{
-    Version{"37"}
     units{
         duration{
             day{
diff --git a/icu4c/source/data/unit/pa.txt b/icu4c/source/data/unit/pa.txt
index bb4dae3..dc132ed 100644
--- a/icu4c/source/data/unit/pa.txt
+++ b/icu4c/source/data/unit/pa.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -406,6 +406,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ਡਾਟ"}
+                one{"{0} ਡਾਟ"}
+                other{"{0} ਡਾਟ"}
+            }
             dot-per-centimeter{
                 dnam{"ਡਾਟ ਪ੍ਰਤੀ ਸੈਂਟੀਮੀਟਰ"}
                 one{"{0} ਡਾਟ ਪ੍ਰਤੀ ਸੈਂਟੀਮੀਟਰ"}
@@ -459,6 +464,11 @@
                 one{"{0} ਡੈਸੀਮੀਟਰ"}
                 other{"{0} ਡੈਸੀਮੀਟਰ"}
             }
+            earth-radius{
+                dnam{"ਧਰਤੀ ਦਾ ਘੇਰਾ"}
+                one{"{0} ਧਰਤੀ ਦਾ ਘੇਰਾ"}
+                other{"{0} ਧਰਤੀ ਦਾ ਘੇਰਾ"}
+            }
             fathom{
                 dnam{"ਫ਼ੈਦਮ"}
                 one{"{0} ਫ਼ੈਦਮ"}
@@ -555,6 +565,16 @@
             }
         }
         light{
+            candela{
+                dnam{"ਕੈਂਡੇਲਾ"}
+                one{"{0} ਕੈਂਡੇਲਾ"}
+                other{"{0} ਕੈਂਡੇਲਾ"}
+            }
+            lumen{
+                dnam{"ਲੁਮੇਨ"}
+                one{"{0} ਲੁਮੇਨ"}
+                other{"{0} ਲੁਮੇਨ"}
+            }
             lux{
                 dnam{"ਲਕਸ"}
                 one{"{0} ਲਕਸ"}
@@ -582,6 +602,11 @@
                 one{"{0} ਅਰਥ ਮਾਸ"}
                 other{"{0} ਅਰਥ ਮਾਸ"}
             }
+            grain{
+                dnam{"ਗ੍ਰੇਨ"}
+                one{"{0} ਗ੍ਰੇਨ"}
+                other{"{0} ਗ੍ਰੇਨ"}
+            }
             gram{
                 dnam{"ਗ੍ਰਾਮ"}
                 one{"{0} ਗ੍ਰਾਮ"}
@@ -637,9 +662,9 @@
                 other{"{0} ਸਟੋਨ"}
             }
             ton{
-                dnam{"ਟਨ"}
-                one{"{0} ਟਨ"}
-                other{"{0} ਟਨ"}
+                dnam{"ਅਮਰੀਕੀ ਟਨ"}
+                one{"{0} ਅਮਰੀਕੀ ਟਨ"}
+                other{"{0} ਅਮਰੀਕੀ ਟਨ"}
             }
         }
         power{
@@ -778,7 +803,7 @@
             }
             pound-force-foot{
                 dnam{"ਪੌਂਡ-ਫੁੱਟ"}
-                one{"{0} ਪੌਂਡ-ਫੁੱਟ"}
+                one{"{0} ਪੌਂਡ-ਬਲ-ਫੁੱਟ"}
                 other{"{0} ਪੌਂਡ-ਫੁੱਟ"}
             }
         }
@@ -855,6 +880,26 @@
                 one{"{0} ਡੈਸੀਲਿਟਰ"}
                 other{"{0} ਡੈਸੀਲਿਟਰ"}
             }
+            dessert-spoon{
+                dnam{"ਡੈਜ਼ਰਟ ਸਪੂਨ"}
+                one{"{0} ਡੈਜ਼ਰਟ ਸਪੂਨ"}
+                other{"{0} ਡੈਜ਼ਰਟ ਸਪੂਨ"}
+            }
+            dessert-spoon-imperial{
+                dnam{"ਇੰਪੀਰੀਅਲ ਡੈਜ਼ਰਟ ਸਪੂਨ"}
+                one{"{0} ਇੰਪੀਰੀਅਲ ਡੈਜ਼ਰਟ ਸਪੂਨ"}
+                other{"{0} ਇੰਪੀਰੀਅਲ ਡੈਜ਼ਰਟ ਸਪੂਨ"}
+            }
+            dram{
+                dnam{"ਚੁਸਕੀ"}
+                one{"{0} ਚੁਸਕੀ"}
+                other{"{0} ਚੁਸਕੀ"}
+            }
+            drop{
+                dnam{"ਬੂੰਦ"}
+                one{"{0} ਬੂੰਦ"}
+                other{"{0} ਬੂੰਦ"}
+            }
             fluid-ounce{
                 dnam{"ਤਰਲ ਔਂਸ"}
                 one{"{0} ਤਰਲ ਔਂਸ"}
@@ -882,6 +927,11 @@
                 one{"{0} ਹੈਕਟੋਲਿਟਰ"}
                 other{"{0} ਹੈਕਟੋਲਿਟਰ"}
             }
+            jigger{
+                dnam{"ਚੱਕਾ"}
+                one{"{0} ਚੱਕਾ"}
+                other{"{0} ਚੱਕਾ"}
+            }
             liter{
                 dnam{"ਲਿਟਰ"}
                 one{"{0} ਲਿਟਰ"}
@@ -898,6 +948,11 @@
                 one{"{0} ਮਿਲੀਲਿਟਰ"}
                 other{"{0} ਮਿਲੀਲਿਟਰ"}
             }
+            pinch{
+                dnam{"ਚੁਟਕੀ"}
+                one{"{0} ਚੁਟਕੀ"}
+                other{"{0} ਚੁਟਕੀ"}
+            }
             pint{
                 dnam{"ਪਿੰਟ"}
                 one{"{0} ਪਿੰਟ"}
@@ -913,6 +968,11 @@
                 one{"{0} ਕੁਆਟ"}
                 other{"{0} ਕੁਆਟ"}
             }
+            quart-imperial{
+                dnam{"ਇੰਪੀਰੀਅਲ ਚੁਥਾਈ ਗੈਲਨ"}
+                one{"{0} ਇੰਪੀਰੀਅਲ ਚੁਥਾਈ ਗੈਲਨ"}
+                other{"{0} ਇੰਪੀਰੀਅਲ ਚੁਥਾਈ ਗੈਲਨ"}
+            }
             tablespoon{
                 dnam{"ਟੇਬਲ ਸਪੂਨ"}
                 one{"{0} ਟੇਬਲ ਸਪੂਨ"}
@@ -1087,6 +1147,8 @@
             }
             millisecond{
                 dnam{"ਮਿਲੀਸਕਿੰਟ"}
+                one{"{0} ਮਿ.ਸ."}
+                other{"{0} ਮਿ.ਸ."}
             }
             minute{
                 dnam{"ਮਿੰਟ"}
@@ -1853,8 +1915,8 @@
             }
             therm-us{
                 dnam{"US therm"}
-                one{"{0} US therm"}
-                other{"{0} US therm"}
+                one{"{0} ਯੂ.ਐਸ. ਥੈਰਮ"}
+                other{"{0} ਯੂ.ਐਸ. ਥੈਰਮ"}
             }
         }
         force{
@@ -1890,6 +1952,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ਡਾਟ"}
+                one{"{0} ਡਾਟ"}
+                other{"{0} ਡਾਟ"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 one{"{0} dpcm"}
@@ -2037,6 +2104,11 @@
             }
         }
         light{
+            lumen{
+                dnam{"ਲੁਮੇਨ"}
+                one{"{0} ਲੁਮੇਨ"}
+                other{"{0} ਲੁਮੇਨ"}
+            }
             lux{
                 dnam{"ਲਕਸ"}
                 one{"{0} ਲਕਸ"}
@@ -2060,6 +2132,11 @@
             earth-mass{
                 dnam{"ਅਰਥ ਮਾਸ"}
             }
+            grain{
+                dnam{"ਗ੍ਰੇਨ"}
+                one{"{0} ਗ੍ਰੇਨ"}
+                other{"{0} ਗ੍ਰੇਨ"}
+            }
             gram{
                 dnam{"ਗ੍ਰਾਮ"}
                 one{"{0} ਗ੍ਰਾ."}
@@ -2113,9 +2190,9 @@
                 other{"{0} ਸਟੋਨ"}
             }
             ton{
-                dnam{"ਟਨ"}
-                one{"{0} ਟਨ"}
-                other{"{0} ਟਨ"}
+                dnam{"ਅਮਰੀਕੀ ਟਨ"}
+                one{"{0} ਅਮਰੀਕੀ ਟਨ"}
+                other{"{0} ਅਮਰੀਕੀ ਟਨ"}
             }
         }
         power{
@@ -2326,11 +2403,36 @@
                 one{"{0} ਡੈ.ਲਿ."}
                 other{"{0} ਡੈ.ਲਿ."}
             }
+            dessert-spoon{
+                dnam{"ਡੈਜ਼ਰਟ ਸਪੂਨ"}
+                one{"{0} ਡੈਜ਼ਰਟ ਸਪੂਨ"}
+                other{"{0} ਡੈਜ਼ਰਟ ਸਪੂਨ"}
+            }
+            dessert-spoon-imperial{
+                dnam{"ਇੰਪੀਰੀਅਲ ਡੈਜ਼ਰਟ ਸਪੂਨ"}
+                one{"{0} ਇੰਪ. ਡੈ. ਸ."}
+                other{"{0} ਇੰਪ. ਡੈ. ਸ."}
+            }
+            dram{
+                dnam{"ਚੁਸਕੀ ਭਰ"}
+                one{"{0} ਚੁਸਕੀ ਭਰ"}
+                other{"{0} ਚੁਸਕੀ ਭਰ"}
+            }
+            drop{
+                dnam{"ਬੂੰਦ"}
+                one{"{0} ਬੂੰਦ"}
+                other{"{0} ਬੂੰਦ"}
+            }
             fluid-ounce{
                 dnam{"ਤ. ਔਂਸ"}
                 one{"{0} ਤ. ਔਂਸ"}
                 other{"{0} ਤ. ਔਂਸ"}
             }
+            fluid-ounce-imperial{
+                dnam{"ਇੰਪ. ਫਲੂ. ਔ."}
+                one{"{0} ਫਲੂ. ਔ. ਇੰਪ."}
+                other{"{0} ਫਲੂ. ਔ. ਇੰਪ."}
+            }
             gallon{
                 dnam{"ਗੈਲਨ"}
                 one{"{0} ਗੈਲਨ"}
@@ -2348,6 +2450,11 @@
                 one{"{0} ਹੈ.ਲਿ."}
                 other{"{0} ਹੈ.ਲਿ."}
             }
+            jigger{
+                dnam{"ਚੱਕਾ"}
+                one{"{0} ਚੱਕਾ"}
+                other{"{0} ਚੱਕਾ"}
+            }
             liter{
                 dnam{"ਲਿਟਰ"}
                 one{"{0} ਲਿ."}
@@ -2364,6 +2471,11 @@
                 one{"{0} ਮਿ.ਲਿ."}
                 other{"{0} ਮਿ.ਲਿ."}
             }
+            pinch{
+                dnam{"ਚੁਟਕੀ"}
+                one{"{0} ਚੁਟਕੀ"}
+                other{"{0} ਚੁਟਕੀ"}
+            }
             pint{
                 dnam{"ਪਿੰਟ"}
                 one{"{0} ਪਿੰਟ"}
@@ -2379,6 +2491,11 @@
                 one{"{0} ਕੁਆਟ"}
                 other{"{0} ਕੁਆਟ"}
             }
+            quart-imperial{
+                dnam{"ਇੰਪੀਰੀਅਲ ਚੁਥਾਈ ਗੈਲਨ"}
+                one{"{0} ਇੰਪ. ਚੁ. ਗੈ."}
+                other{"{0} ਇੰਪ. ਚੁ. ਗੈ."}
+            }
             tablespoon{
                 dnam{"ਟੇਬਲ ਸਪੂਨ"}
                 one{"{0} ਟੇਬਲ ਸਪੂਨ"}
diff --git a/icu4c/source/data/unit/pa_Arab.txt b/icu4c/source/data/unit/pa_Arab.txt
index bb44635..1b371d8 100644
--- a/icu4c/source/data/unit/pa_Arab.txt
+++ b/icu4c/source/data/unit/pa_Arab.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_Arab{
     %%Parent{"root"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/pa_Arab_PK.txt b/icu4c/source/data/unit/pa_Arab_PK.txt
index e6b5861..3b1bc42 100644
--- a/icu4c/source/data/unit/pa_Arab_PK.txt
+++ b/icu4c/source/data/unit/pa_Arab_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/pa_Guru.txt b/icu4c/source/data/unit/pa_Guru.txt
index a0ee569..f10658f 100644
--- a/icu4c/source/data/unit/pa_Guru.txt
+++ b/icu4c/source/data/unit/pa_Guru.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_Guru{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/pa_Guru_IN.txt b/icu4c/source/data/unit/pa_Guru_IN.txt
index adeae3f..f67b7c3 100644
--- a/icu4c/source/data/unit/pa_Guru_IN.txt
+++ b/icu4c/source/data/unit/pa_Guru_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/pa_IN.txt b/icu4c/source/data/unit/pa_IN.txt
index b18bba6..0c963d7 100644
--- a/icu4c/source/data/unit/pa_IN.txt
+++ b/icu4c/source/data/unit/pa_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_IN{
     "%%ALIAS"{"pa_Guru_IN"}
 }
diff --git a/icu4c/source/data/unit/pa_PK.txt b/icu4c/source/data/unit/pa_PK.txt
index 1c66c7b..29612ad 100644
--- a/icu4c/source/data/unit/pa_PK.txt
+++ b/icu4c/source/data/unit/pa_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_PK{
     "%%ALIAS"{"pa_Arab_PK"}
 }
diff --git a/icu4c/source/data/unit/pcm.txt b/icu4c/source/data/unit/pcm.txt
index d160897..97aab29 100644
--- a/icu4c/source/data/unit/pcm.txt
+++ b/icu4c/source/data/unit/pcm.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pcm{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -409,6 +409,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"dọt"}
+                one{"{0}dọt"}
+                other{"{0}dọt"}
+            }
             dot-per-centimeter{
                 dnam{"Pọint-dẹm fọ ích sẹntímíta"}
                 one{"{0} Pọint fọ ích sẹntímíta"}
@@ -462,12 +467,27 @@
                 one{"{0} Dẹsímíta"}
                 other{"{0} Dẹsímíta"}
             }
+            earth-radius{
+                dnam{"Wọ́ld Rédiọs"}
+                one{"{0} Wọ́ld Rédiọs"}
+                other{"{0} Wọ́ld Rédiọs"}
+            }
+            fathom{
+                dnam{"Fátọm"}
+                one{"{0} fátọm"}
+                other{"{0} fátọm"}
+            }
             foot{
                 dnam{"Fut-dẹm"}
                 one{"{0} Fut"}
                 other{"{0} Fut"}
                 per{"{0} Fọ Ích Fut"}
             }
+            furlong{
+                dnam{"Fọ́lọng"}
+                one{"{0} fọ́lọng"}
+                other{"{0} fọ́lọng"}
+            }
             inch{
                 dnam{"Inch-dẹm"}
                 one{"{0} inch"}
@@ -548,6 +568,16 @@
             }
         }
         light{
+            candela{
+                dnam{"Kandíla"}
+                one{"{0} Kandíla"}
+                other{"{0} Kandíla"}
+            }
+            lumen{
+                dnam{"Lúmẹn"}
+                one{"{0} Lúmẹn"}
+                other{"{0} Lúmẹn"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
@@ -575,6 +605,11 @@
                 one{"{0} Ẹ́t Mas"}
                 other{"{0} Ẹ́t Mas"}
             }
+            grain{
+                dnam{"Gren"}
+                one{"{0} gren"}
+                other{"{0} gren"}
+            }
             gram{
                 dnam{"Gram-dẹm"}
                 one{"{0} Gram"}
@@ -624,6 +659,11 @@
                 one{"{0} Sólá Mas"}
                 other{"{0} Sólá Mas"}
             }
+            stone{
+                dnam{"Ston"}
+                one{"{0} ston"}
+                other{"{0} ston"}
+            }
             ton{
                 dnam{"Tọn-dẹm"}
                 one{"{0} Tọn"}
@@ -765,9 +805,9 @@
                 other{"{0} Niúton-Míta"}
             }
             pound-force-foot{
-                dnam{"Páund-Fut"}
-                one{"{0} Páund-Fut"}
-                other{"{0} Páund-Fut"}
+                dnam{"Paund-Fit"}
+                one{"{0} Paund-Fọs-Fut"}
+                other{"{0} Paund-Fit"}
             }
         }
         volume{
@@ -781,6 +821,11 @@
                 one{"{0} Drọm"}
                 other{"{0} Drọm"}
             }
+            bushel{
+                dnam{"Búshẹl"}
+                one{"{0} Búshẹl"}
+                other{"{0} Búshẹl"}
+            }
             centiliter{
                 dnam{"Sẹntílíta-dẹm"}
                 one{"{0} Sẹntílíta"}
@@ -820,8 +865,8 @@
             }
             cubic-yard{
                 dnam{"Kúbík Yad-dẹm"}
-                one{"{0} Kúbík"}
-                other{"{0} Kúbík"}
+                one{"{0} Kúbík Yad"}
+                other{"{0} Kúbík Yad"}
             }
             cup{
                 dnam{"Kọp-dẹm"}
@@ -838,6 +883,26 @@
                 one{"{0} Dẹsílíta"}
                 other{"{0} Dẹsílíta"}
             }
+            dessert-spoon{
+                dnam{"Dizát Spun"}
+                one{"{0} Dizát Spun"}
+                other{"{0} Dizát Spun"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Impẹ́riál Dizát Spun"}
+                one{"{0} Impẹ́riál Dizát Spun"}
+                other{"{0} Impẹ́riál Dizát Spun"}
+            }
+            dram{
+                dnam{"Dram"}
+                one{"{0} Dram"}
+                other{"{0} Dram"}
+            }
+            drop{
+                dnam{"Drọp"}
+                one{"{0} Drọp"}
+                other{"{0} Drọp"}
+            }
             fluid-ounce{
                 dnam{"Líkwíd Áuns-dẹm"}
                 one{"{0} Líkwíd Áuns"}
@@ -865,6 +930,11 @@
                 one{"{0} Hẹ́któlíta"}
                 other{"{0} Hẹ́któlíta"}
             }
+            jigger{
+                dnam{"Jigá"}
+                one{"{0} Jigá"}
+                other{"{0} Jigá"}
+            }
             liter{
                 dnam{"Líta-dẹm"}
                 one{"{0}Líta"}
@@ -881,6 +951,11 @@
                 one{"{0} Milílíta"}
                 other{"{0} Milílíta"}
             }
+            pinch{
+                dnam{"Pinch"}
+                one{"{0} Pinch"}
+                other{"{0} Pinch"}
+            }
             pint{
                 dnam{"Paint-dẹm"}
                 one{"{0} Paint"}
@@ -896,6 +971,11 @@
                 one{"{0} Kwọt"}
                 other{"{0} Kwọt"}
             }
+            quart-imperial{
+                dnam{"Impẹ́riál Kwọt"}
+                one{"{0} Impẹ́riál Kwọt"}
+                other{"{0} Impẹ́riál Kwọt"}
+            }
             tablespoon{
                 dnam{"Tébulspun-dẹm"}
                 one{"{0} Tébulspun"}
@@ -1434,6 +1514,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"dọt"}
+                one{"{0} dọt"}
+                other{"{0} dọt"}
+            }
             dot-per-centimeter{
                 dnam{"Pọints fọ ích sẹntímíta"}
                 one{"{0} PFIS"}
@@ -1487,12 +1572,22 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            fathom{
+                dnam{"Fátọm"}
+                one{"{0} fátọ"}
+                other{"{0} fátọ"}
+            }
             foot{
                 dnam{"Fut-dẹm"}
                 one{"{0} ft"}
                 other{"{0} ft"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"Fọ́lọng"}
+                one{"{0} fọl"}
+                other{"{0} fọl"}
+            }
             inch{
                 dnam{"Ínchis"}
                 one{"{0} in"}
@@ -1573,6 +1668,16 @@
             }
         }
         light{
+            candela{
+                dnam{"kd"}
+                one{"{0} kd"}
+                other{"{0} kd"}
+            }
+            lumen{
+                dnam{"lm"}
+                one{"{0} lm"}
+                other{"{0} lm"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lx"}
@@ -1600,6 +1705,11 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"Gren"}
+                one{"{0} gren"}
+                other{"{0} gren"}
+            }
             gram{
                 dnam{"Grams"}
                 one{"{0} g"}
@@ -1649,6 +1759,11 @@
                 one{"{0} M☉"}
                 other{"{0} M☉"}
             }
+            stone{
+                dnam{"Ston"}
+                one{"{0} st"}
+                other{"{0} st"}
+            }
             ton{
                 dnam{"Tọns"}
                 one{"{0} tn"}
@@ -1806,6 +1921,11 @@
                 one{"{0}dr"}
                 other{"{0}dr"}
             }
+            bushel{
+                dnam{"Búshẹl"}
+                one{"{0} bú"}
+                other{"{0} bú"}
+            }
             centiliter{
                 dnam{"sl"}
                 one{"{0} sl"}
@@ -1863,6 +1983,26 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"Dztspn"}
+                one{"{0} dztspn"}
+                other{"{0} dztspn"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Dztspn Imp"}
+                one{"{0} dzsp Imp"}
+                other{"{0} dzsp Imp"}
+            }
+            dram{
+                dnam{"Drám Líkwid"}
+                one{"{0} Dram lí"}
+                other{"{0} Dram lí"}
+            }
+            drop{
+                dnam{"Drọp"}
+                one{"{0} Drọp"}
+                other{"{0} Drọp"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -1890,6 +2030,11 @@
                 one{"{0} hL"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"Jigá"}
+                one{"{0} Jigá"}
+                other{"{0} Jigá"}
+            }
             liter{
                 dnam{"Lítas"}
                 one{"{0} L"}
@@ -1906,6 +2051,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"Pinch"}
+                one{"{0} Pinch"}
+                other{"{0} Pinch"}
+            }
             pint{
                 dnam{"Paints"}
                 one{"{0} pt"}
@@ -1921,6 +2071,11 @@
                 one{"{0} kwt"}
                 other{"{0} kwt"}
             }
+            quart-imperial{
+                dnam{"Kt Impẹ́riál"}
+                one{"{0} Kt Imp"}
+                other{"{0} Kt Imp"}
+            }
             tablespoon{
                 dnam{"Tbsp"}
                 one{"{0} Tbsp"}
diff --git a/icu4c/source/data/unit/pl.txt b/icu4c/source/data/unit/pl.txt
index ac0f3d5..9eadfe1 100644
--- a/icu4c/source/data/unit/pl.txt
+++ b/icu4c/source/data/unit/pl.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pl{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -213,7 +213,7 @@
             mile-per-gallon{
                 dnam{"mile na galon"}
                 few{"{0} mile na galon"}
-                many{"{0} mili na galon"}
+                many{"{0} mil na galon"}
                 one{"{0} mila na galon"}
                 other{"{0} mili na galon"}
             }
@@ -238,7 +238,7 @@
                 few{"{0} bity"}
                 many{"{0} bitów"}
                 one{"{0} bit"}
-                other{"{0} bitu"}
+                other{"{0} bita"}
             }
             byte{
                 dnam{"bajty"}
@@ -252,7 +252,7 @@
                 few{"{0} gigabity"}
                 many{"{0} gigabitów"}
                 one{"{0} gigabit"}
-                other{"{0} gigabitu"}
+                other{"{0} gigabita"}
             }
             gigabyte{
                 dnam{"gigabajty"}
@@ -266,7 +266,7 @@
                 few{"{0} kilobity"}
                 many{"{0} kilobitów"}
                 one{"{0} kilobit"}
-                other{"{0} kilobitu"}
+                other{"{0} kilobita"}
             }
             kilobyte{
                 dnam{"kilobajty"}
@@ -280,7 +280,7 @@
                 few{"{0} megabity"}
                 many{"{0} megabitów"}
                 one{"{0} megabit"}
-                other{"{0} megabitu"}
+                other{"{0} megabita"}
             }
             megabyte{
                 dnam{"megabajty"}
@@ -301,7 +301,7 @@
                 few{"{0} terabity"}
                 many{"{0} terabitów"}
                 one{"{0} terabit"}
-                other{"{0} terabitu"}
+                other{"{0} terabita"}
             }
             terabyte{
                 dnam{"terabajty"}
@@ -320,12 +320,12 @@
                 other{"{0} wieku"}
             }
             day{
-                dnam{"dni"}
-                few{"{0} dni"}
-                many{"{0} dni"}
-                one{"{0} dzień"}
-                other{"{0} dnia"}
-                per{"{0} na dzień"}
+                dnam{"doby"}
+                few{"{0} doby"}
+                many{"{0} dób"}
+                one{"{0} doba"}
+                other{"{0} doby"}
+                per{"{0} na dobę"}
             }
             decade{
                 dnam{"dekady"}
@@ -591,6 +591,20 @@
                 one{"{0} decymetr"}
                 other{"{0} decymetra"}
             }
+            earth-radius{
+                dnam{"promień Ziemi"}
+                few{"{0} promienie Ziemi"}
+                many{"{0} promieni Ziemi"}
+                one{"{0} promień Ziemi"}
+                other{"{0} promienia Ziemi"}
+            }
+            fathom{
+                dnam{"sążnie"}
+                few{"{0} sążnie"}
+                many{"{0} sążni"}
+                one{"{0} sążeń"}
+                other{"{0} sążnia"}
+            }
             foot{
                 dnam{"stopy"}
                 few{"{0} stopy"}
@@ -599,6 +613,13 @@
                 other{"{0} stopy"}
                 per{"{0} na stopę"}
             }
+            furlong{
+                dnam{"furlongi"}
+                few{"{0} furlongi"}
+                many{"{0} furlongów"}
+                one{"{0} furlong"}
+                other{"{0} furlonga"}
+            }
             inch{
                 dnam{"cale"}
                 few{"{0} cale"}
@@ -709,6 +730,20 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                few{"{0} kandele"}
+                many{"{0} kandeli"}
+                one{"{0} kandela"}
+                other{"{0} kandeli"}
+            }
+            lumen{
+                dnam{"lumen"}
+                few{"{0} lumeny"}
+                many{"{0} lumenów"}
+                one{"{0} lumen"}
+                other{"{0} lumena"}
+            }
             lux{
                 dnam{"luksy"}
                 few{"{0} luksy"}
@@ -733,18 +768,25 @@
                 other{"{0} karata"}
             }
             dalton{
-                dnam{"daltony"}
-                few{"{0} daltony"}
-                many{"{0} daltonów"}
-                one{"{0} dalton"}
-                other{"{0} daltona"}
+                dnam{"jednostki masy atomowej"}
+                few{"{0} jednostki masy atomowej"}
+                many{"{0} jednostek masy atomowej"}
+                one{"{0} jednostka masy atomowej"}
+                other{"{0} jednostki masy atomowej"}
             }
             earth-mass{
                 dnam{"masy Ziemi"}
                 few{"{0} masy Ziemi"}
                 many{"{0} mas Ziemi"}
                 one{"{0} masa Ziemi"}
-                other{"{0} masa Ziemi"}
+                other{"{0} masy Ziemi"}
+            }
+            grain{
+                dnam{"grany"}
+                few{"{0} grany"}
+                many{"{0} granów"}
+                one{"{0} gran"}
+                other{"{0} grana"}
             }
             gram{
                 dnam{"gramy"}
@@ -813,6 +855,13 @@
                 one{"{0} masa Słońca"}
                 other{"{0} masy Słońca"}
             }
+            stone{
+                dnam{"kamień"}
+                few{"{0} kamienie"}
+                many{"{0} kamieni"}
+                one{"{0} kamień"}
+                other{"{0} kamienia"}
+            }
             ton{
                 dnam{"krótkie tony"}
                 few{"{0} krótkie tony"}
@@ -1010,7 +1059,7 @@
                 few{"{0} stopofunty"}
                 many{"{0} stopofuntów"}
                 one{"{0} stopofunt"}
-                other{"{0} stopofunt"}
+                other{"{0} stopofunta"}
             }
         }
         volume{
@@ -1028,6 +1077,13 @@
                 one{"{0} baryłka"}
                 other{"{0} baryłki"}
             }
+            bushel{
+                dnam{"buszle"}
+                few{"{0} buszle"}
+                many{"{0} buszli"}
+                one{"{0} buszel"}
+                other{"{0} buszla"}
+            }
             centiliter{
                 dnam{"centylitry"}
                 few{"{0} centylitry"}
@@ -1087,11 +1143,11 @@
                 other{"{0} jarda sześciennego"}
             }
             cup{
-                dnam{"ćwierćkwarty"}
-                few{"{0} ćwierćkwarty"}
-                many{"{0} ćwierćkwart"}
-                one{"{0} ćwierćkwarta"}
-                other{"{0} ćwierćkwarty"}
+                dnam{"ćwierćkwarty amerykańske"}
+                few{"{0} ćwierćkwarty amerykańskie"}
+                many{"{0} ćwierćkwart amerykańskich"}
+                one{"{0} ćwierćkwarta amerykańska"}
+                other{"{0} ćwierćkwarty amerykańskiej"}
             }
             cup-metric{
                 dnam{"ćwierćkwarty metryczne"}
@@ -1107,27 +1163,55 @@
                 one{"{0} decylitr"}
                 other{"{0} decylitra"}
             }
+            dessert-spoon{
+                dnam{"łyżki deserowe"}
+                few{"{0} łyżki deserowe"}
+                many{"{0} łyżek deserowych"}
+                one{"{0} łyżka deserowa"}
+                other{"{0} łyżki deserowej"}
+            }
+            dessert-spoon-imperial{
+                dnam{"imperialna łyżeczka deserowa"}
+                few{"{0} imperialne łyżeczki deserowe"}
+                many{"{0} imperialnych łyżeczek deserowych"}
+                one{"{0} imperialna łyżeczka deserowa"}
+                other{"{0} imperialnej łyżeczki deserowej"}
+            }
+            dram{
+                dnam{"drachmy płynu"}
+                few{"{0} drachmy płynu"}
+                many{"{0} drachm płynu"}
+                one{"{0} drachma płynu"}
+                other{"{0} drachmy płynu"}
+            }
+            drop{
+                dnam{"krople"}
+                few{"{0} krople"}
+                many{"{0} kropli"}
+                one{"{0} kropla"}
+                other{"{0} kropli"}
+            }
             fluid-ounce{
-                dnam{"uncje płynu"}
-                few{"{0} uncje płynu"}
-                many{"{0} uncji płynu"}
-                one{"{0} uncja płynu"}
-                other{"{0} uncji płynu"}
+                dnam{"uncje płynu amerykańskie"}
+                few{"{0} uncje płynu amerykańskie"}
+                many{"{0} uncji płynu amerykańskich"}
+                one{"{0} uncja płynu amerykańska"}
+                other{"{0} uncji płynu amerykańskiej"}
             }
             fluid-ounce-imperial{
-                dnam{"uncje płynu imp."}
-                few{"{0} uncje płynu imp."}
-                many{"{0} uncji płynu imp."}
-                one{"{0} uncja płynu imp."}
-                other{"{0} uncji płynu imp."}
+                dnam{"uncje płynu angielskie"}
+                few{"{0} uncje płynu angielskie"}
+                many{"{0} uncji płynu angielskich"}
+                one{"{0} uncja płynu angielska"}
+                other{"{0} uncji płynu angielskiej"}
             }
             gallon{
-                dnam{"galony"}
-                few{"{0} galony"}
-                many{"{0} galonów"}
-                one{"{0} galon"}
-                other{"{0} galona"}
-                per{"{0} na galon"}
+                dnam{"galony amerykańskie"}
+                few{"{0} galony amerykańskie"}
+                many{"{0} galonów amerykańskich"}
+                one{"{0} galon amerykański"}
+                other{"{0} galona amerykańskiego"}
+                per{"{0} na galon amerykański"}
             }
             gallon-imperial{
                 dnam{"galony angielskie"}
@@ -1144,6 +1228,13 @@
                 one{"{0} hektolitr"}
                 other{"{0} hektolitra"}
             }
+            jigger{
+                dnam{"jiggery"}
+                few{"{0} jiggery"}
+                many{"{0} jiggerów"}
+                one{"{0} jigger"}
+                other{"{0} jiggera"}
+            }
             liter{
                 dnam{"litry"}
                 few{"{0} litry"}
@@ -1166,12 +1257,19 @@
                 one{"{0} mililitr"}
                 other{"{0} mililitra"}
             }
+            pinch{
+                dnam{"szczypty"}
+                few{"{0} szczypty"}
+                many{"{0} szczypt"}
+                one{"{0} szczypta"}
+                other{"{0} szczypty"}
+            }
             pint{
-                dnam{"półkwarty"}
-                few{"{0} półkwarty"}
-                many{"{0} półkwart"}
-                one{"{0} półkwarta"}
-                other{"{0} półkwarty"}
+                dnam{"półkwarty amerykańskie"}
+                few{"{0} półkwarty amerykańskie"}
+                many{"{0} półkwart amerykańskich"}
+                one{"{0} półkwarta amerykańska"}
+                other{"{0} półkwarty amerykańskiej"}
             }
             pint-metric{
                 dnam{"półkwarty metryczne"}
@@ -1181,11 +1279,18 @@
                 other{"{0} półkwarty metrycznej"}
             }
             quart{
-                dnam{"kwarty"}
-                few{"{0} kwarty"}
-                many{"{0} kwart"}
-                one{"{0} kwarta"}
-                other{"{0} kwarty"}
+                dnam{"kwarty amerykańskie"}
+                few{"{0} kwarty amerykańskie"}
+                many{"{0} kwart amerykańskich"}
+                one{"{0} kwarta amerykańska"}
+                other{"{0} kwarty amerykańskiej"}
+            }
+            quart-imperial{
+                dnam{"kwarty angielskie"}
+                few{"{0} kwarty angielskie"}
+                many{"{0} kwart angielskich"}
+                one{"{0} kwarta angielska"}
+                other{"{0} kwarty angielskiej"}
             }
             tablespoon{
                 dnam{"łyżki stołowe"}
@@ -1245,7 +1350,7 @@
         }
         duration{
             day{
-                dnam{"dzień"}
+                dnam{"doba"}
                 few{"{0} d."}
                 many{"{0} d."}
                 one{"{0} d."}
@@ -1442,9 +1547,6 @@
                 one{"{0} mol"}
                 other{"{0} mola"}
             }
-            permillion{
-                dnam{"części/milion"}
-            }
             permyriad{
                 few{"{0}‱"}
                 many{"{0}‱"}
@@ -1484,6 +1586,10 @@
         }
         coordinate{
             dnam{"kierunek"}
+            east{"{0}°E"}
+            north{"{0}°N"}
+            south{"{0}°S"}
+            west{"{0}°W"}
         }
         digital{
             bit{
@@ -1510,12 +1616,12 @@
                 other{"{0} w."}
             }
             day{
-                dnam{"dni"}
-                few{"{0} dni"}
-                many{"{0} dni"}
-                one{"{0} dzień"}
-                other{"{0} dnia"}
-                per{"{0}/dzień"}
+                dnam{"doby"}
+                few{"{0} doby"}
+                many{"{0} dób"}
+                one{"{0} doba"}
+                other{"{0} doby"}
+                per{"{0}/dobę"}
             }
             decade{
                 dnam{"dek"}
@@ -1640,13 +1746,18 @@
                 one{"{0} j.a."}
                 other{"{0} j.a."}
             }
+            fathom{
+                few{"{0} fm"}
+                many{"{0} fm"}
+                one{"{0} fm"}
+                other{"{0} fm"}
+            }
             foot{
                 dnam{"stopy"}
-                few{"{0} stopy"}
-                many{"{0} stóp"}
-                one{"{0} stopa"}
-                other{"{0} stopy"}
-                per{"{0}/stopa"}
+                few{"{0} ft"}
+                many{"{0} ft"}
+                one{"{0} ft"}
+                other{"{0} ft"}
             }
             inch{
                 dnam{"cale"}
@@ -1687,14 +1798,27 @@
                 other{"{0} R☉"}
             }
             yard{
-                dnam{"jardy"}
-                few{"{0} jardy"}
-                many{"{0} jardów"}
-                one{"{0} jard"}
-                other{"{0} jarda"}
+                few{"{0} yd"}
+                many{"{0} yd"}
+                one{"{0} yd"}
+                other{"{0} yd"}
             }
         }
         light{
+            candela{
+                dnam{"cd"}
+                few{"{0} cd"}
+                many{"{0} cd"}
+                one{"{0} cd"}
+                other{"{0} cd"}
+            }
+            lumen{
+                dnam{"lm"}
+                few{"{0} lm"}
+                many{"{0} lm"}
+                one{"{0} lm"}
+                other{"{0} lm"}
+            }
             solar-luminosity{
                 few{"{0} L☉"}
                 many{"{0} L☉"}
@@ -1711,7 +1835,6 @@
                 other{"{0} kt"}
             }
             dalton{
-                dnam{"daltony"}
                 few{"{0} Da"}
                 many{"{0} Da"}
                 one{"{0} Da"}
@@ -1723,6 +1846,13 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"gr"}
+                few{"{0} gr"}
+                many{"{0} gr"}
+                one{"{0} gr"}
+                other{"{0} gr"}
+            }
             gram{
                 dnam{"g"}
             }
@@ -1740,6 +1870,12 @@
                 one{"{0} M☉"}
                 other{"{0} M☉"}
             }
+            stone{
+                few{"{0} st"}
+                many{"{0} st"}
+                one{"{0} st"}
+                other{"{0} st"}
+            }
             ton{
                 dnam{"krótkie tony"}
                 few{"{0} krótkie tony"}
@@ -1775,8 +1911,22 @@
                 one{"{0} MPa"}
                 other{"{0} MPa"}
             }
+            millimeter-ofhg{
+                dnam{"mmHg"}
+                few{"{0} mmHg"}
+                many{"{0} mmHg"}
+                one{"{0} mmHg"}
+                other{"{0} mmHg"}
+            }
         }
         speed{
+            kilometer-per-hour{
+                dnam{"km/godz."}
+                few{"{0} km/godz."}
+                many{"{0} km/godz."}
+                one{"{0} km/godz."}
+                other{"{0} km/godz."}
+            }
             knot{
                 dnam{"w."}
                 few{"{0} w."}
@@ -1868,11 +2018,11 @@
                 other{"{0} jarda sześc."}
             }
             cup{
-                dnam{"ćwierćkwarty"}
-                few{"{0} ćwierćkwarty"}
-                many{"{0} ćwierćkwart"}
-                one{"{0} ćwierćkwarta"}
-                other{"{0} ćwierćkwarty"}
+                dnam{"ćwierćkwarty am."}
+                few{"{0} ćwierćkwarty am."}
+                many{"{0} ćwierćkwart am."}
+                one{"{0} ćwierćkwarta am."}
+                other{"{0} ćwierćkwarty am."}
             }
             cup-metric{
                 dnam{"ćwierćkwarty metr."}
@@ -1888,27 +2038,55 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"ł. deser."}
+                few{"{0} ł. deser."}
+                many{"{0} ł. deser."}
+                one{"{0} ł. deser."}
+                other{"{0} ł. deser."}
+            }
+            dessert-spoon-imperial{
+                dnam{"ł. deser. ang."}
+                few{"{0} ł. deser. ang."}
+                many{"{0} ł. deser. ang."}
+                one{"{0} ł. deser. ang."}
+                other{"{0} ł. deser. ang."}
+            }
+            dram{
+                dnam{"drachmy"}
+                few{"{0} drachmy"}
+                many{"{0} drachm"}
+                one{"{0} drachma"}
+                other{"{0} drachmy"}
+            }
+            drop{
+                dnam{"krople"}
+                few{"{0} krople"}
+                many{"{0} kropli"}
+                one{"{0} kropla"}
+                other{"{0} kropli"}
+            }
             fluid-ounce{
-                dnam{"fl oz"}
-                few{"{0} fl oz"}
-                many{"{0} fl oz"}
-                one{"{0} fl oz"}
-                other{"{0} fl oz"}
+                dnam{"fl oz am."}
+                few{"{0} fl oz am."}
+                many{"{0} fl oz am."}
+                one{"{0} fl oz am."}
+                other{"{0} fl oz am."}
             }
             fluid-ounce-imperial{
-                dnam{"fl oz imp."}
-                few{"{0} fl oz imp."}
-                many{"{0} fl oz imp."}
-                one{"{0} fl oz imp."}
-                other{"{0} fl oz imp."}
+                dnam{"fl oz ang."}
+                few{"{0} fl oz ang."}
+                many{"{0} fl oz ang."}
+                one{"{0} fl oz ang."}
+                other{"{0} fl oz ang."}
             }
             gallon{
-                dnam{"gal"}
-                few{"{0} gal"}
-                many{"{0} gal"}
-                one{"{0} gal"}
-                other{"{0} gal"}
-                per{"{0}/gal"}
+                dnam{"gal am."}
+                few{"{0} gal am."}
+                many{"{0} gal am."}
+                one{"{0} gal am."}
+                other{"{0} gal am."}
+                per{"{0}/gal am."}
             }
             gallon-imperial{
                 dnam{"gal ang."}
@@ -1925,6 +2103,13 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"jiggery"}
+                few{"{0} jiggery"}
+                many{"{0} jiggerów"}
+                one{"{0} jigger"}
+                other{"{0} jiggera"}
+            }
             liter{
                 dnam{"litry"}
             }
@@ -1942,12 +2127,19 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"szcz."}
+                few{"{0} szcz."}
+                many{"{0} szcz."}
+                one{"{0} szcz."}
+                other{"{0} szcz."}
+            }
             pint{
-                dnam{"półkwarty"}
-                few{"{0} półkwarty"}
-                many{"{0} półkwart"}
-                one{"{0} półkwarta"}
-                other{"{0} półkwarty"}
+                dnam{"półkwarty am."}
+                few{"{0} półkwarty am."}
+                many{"{0} półkwart am."}
+                one{"{0} półkwarta am."}
+                other{"{0} półkwarty am."}
             }
             pint-metric{
                 dnam{"półkwarty metr."}
@@ -1957,11 +2149,18 @@
                 other{"{0} półkwarty metr."}
             }
             quart{
-                dnam{"kwarty"}
-                few{"{0} kwarty"}
-                many{"{0} kwart"}
-                one{"{0} kwarta"}
-                other{"{0} kwarty"}
+                dnam{"kwarty am."}
+                few{"{0} kwarty am."}
+                many{"{0} kwart am."}
+                one{"{0} kwarta am."}
+                other{"{0} kwarty am."}
+            }
+            quart-imperial{
+                dnam{"kwarty ang."}
+                few{"{0} kwarty ang."}
+                many{"{0} kwart ang."}
+                one{"{0} kwarta ang."}
+                other{"{0} kwarty ang."}
             }
             tablespoon{
                 dnam{"ł. stoł."}
diff --git a/icu4c/source/data/unit/ps.txt b/icu4c/source/data/unit/ps.txt
index 641fc3d..27db2cb 100644
--- a/icu4c/source/data/unit/ps.txt
+++ b/icu4c/source/data/unit/ps.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ps{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -253,7 +253,7 @@
                 other{"{0} لسيزې"}
             }
             microsecond{
-                dnam{"مايکرو ثانيه"}
+                dnam{"مايکرو ثانيې"}
                 one{"{0} μs"}
                 other{"{0} μs"}
             }
@@ -312,8 +312,8 @@
         energy{
             british-thermal-unit{
                 dnam{"بريتانوي ترمل يونټس"}
-                one{"{0} بريتانوي ترمل يونټ"}
-                other{"{0} بريتانوي ترمل يونټس"}
+                one{"برتانوي ترمل یونټ"}
+                other{"{0} برتانوي ترمل يونټس"}
             }
             calorie{
                 dnam{"کيلريز"}
@@ -350,6 +350,9 @@
                 one{"{0} کيلو واټ ساعت"}
                 other{"{0} کيلو واټ ساعته"}
             }
+            therm-us{
+                dnam{"متحده ایالاتو ترمامونه"}
+            }
         }
         force{
             newton{
@@ -386,6 +389,9 @@
             }
         }
         graphics{
+            em{
+                dnam{"ټايپو ګرافيک em"}
+            }
             megapixel{
                 dnam{"ميګا فکسلسز"}
             }
@@ -407,12 +413,21 @@
                 one{"{0} ډيسي متر"}
                 other{"{0} ډيسي متره"}
             }
+            fathom{
+                dnam{"فتومونه"}
+                one{"{0} fathom"}
+                other{"{0} فتومونه"}
+            }
             foot{
                 dnam{"فټه"}
                 one{"{0} فټ"}
                 other{"{0} فټه"}
                 per{"{0}هر فټ"}
             }
+            furlong{
+                one{"{0} fur"}
+                other{"{0} فرلانګونه"}
+            }
             inch{
                 dnam{"انچې"}
                 one{"{0} انچ"}
@@ -468,6 +483,8 @@
             }
             parsec{
                 dnam{"پارسيکس"}
+                one{"{0} في ثانيه"}
+                other{"{0} في ثانيې"}
             }
             picometer{
                 dnam{"پيکو متره"}
@@ -715,6 +732,10 @@
                 one{"{0} بېرل"}
                 other{"{0} بېرلز"}
             }
+            bushel{
+                one{"{0} bu"}
+                other{"{0} بوشیل"}
+            }
             centiliter{
                 dnam{"سنټي ليټرز"}
                 one{"{0} سنټي ليټر"}
@@ -767,6 +788,21 @@
                 one{"{0} ډيسي ليټر"}
                 other{"{0} ډيسي ليټرز"}
             }
+            dessert-spoon{
+                dnam{"مچ چمچ"}
+                one{"{0} dessert spoon"}
+                other{"{0} مچ چمچ"}
+            }
+            dram{
+                dnam{"ډرام"}
+                one{"{0} ډرام"}
+                other{"{0} ډرام"}
+            }
+            drop{
+                dnam{"څاڅک"}
+                one{"{0} څاڅک"}
+                other{"{0} څاڅک"}
+            }
             fluid-ounce-imperial{
                 dnam{"امپيريل مايع اونس"}
                 one{"{0} امپيريل مايع اونس"}
@@ -799,11 +835,20 @@
                 one{"{0} ملي ليټر"}
                 other{"{0} ملي ليټرز"}
             }
+            pinch{
+                dnam{"چنه"}
+                one{"{0} چنه"}
+                other{"{0} چنه"}
+            }
             quart{
                 dnam{"څلورمه"}
                 one{"{0} څلورمه"}
                 other{"{0} څلورمه"}
             }
+            quart-imperial{
+                one{"{0} Imp. quart"}
+                other{"{0} Imp. quart"}
+            }
             tablespoon{
                 dnam{"د ميز کاچوغه"}
             }
@@ -931,6 +976,7 @@
         }
         volume{
             liter{
+                dnam{"لیټر"}
                 one{"{0}L"}
                 other{"{0}L"}
             }
@@ -1291,6 +1337,11 @@
                 one{"{0} kWh"}
                 other{"{0} kWh"}
             }
+            therm-us{
+                dnam{"US تهرم"}
+                one{"{0} US therm"}
+                other{"{0} US therm"}
+            }
         }
         force{
             newton{
@@ -1322,6 +1373,18 @@
                 other{"{0} MHz"}
             }
         }
+        graphics{
+            dot-per-centimeter{
+                dnam{"dpcm"}
+            }
+            em{
+                dnam{"em"}
+            }
+            megapixel{
+                one{"{0} MP"}
+                other{"{0} MP"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"au"}
@@ -1339,12 +1402,26 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            earth-radius{
+                one{"{0} R⊕"}
+                other{"{0} R⊕"}
+            }
+            fathom{
+                dnam{"فتومونه"}
+                one{"{0} fth"}
+                other{"{0} fth"}
+            }
             foot{
                 dnam{"فټه"}
                 one{"{0} ft"}
                 other{"{0} ft"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"فرلانګونه"}
+                one{"{0} fur"}
+                other{"{0} fur"}
+            }
             inch{
                 dnam{"انچې"}
                 one{"{0} in"}
@@ -1399,7 +1476,7 @@
                 other{"{0} nmi"}
             }
             parsec{
-                dnam{"parsecs"}
+                dnam{"پارسيکس"}
                 one{"{0} pc"}
                 other{"{0} pc"}
             }
@@ -1619,6 +1696,11 @@
             barrel{
                 dnam{"بېرل"}
             }
+            bushel{
+                dnam{"بوشیل"}
+                one{"{0} bu"}
+                other{"{0} bu"}
+            }
             centiliter{
                 dnam{"cL"}
                 one{"{0} cL"}
@@ -1676,6 +1758,24 @@
                 one{"{0} dL"}
                 other{"{0} dL"}
             }
+            dessert-spoon{
+                dnam{"dstspn"}
+                one{"{0} dstspn"}
+                other{"{0} dstspn"}
+            }
+            dessert-spoon-imperial{
+                dnam{"dstspn Imp"}
+            }
+            dram{
+                dnam{"ډرام مایع"}
+                one{"{0} dram fl"}
+                other{"{0} dram fl"}
+            }
+            drop{
+                dnam{"څاڅک"}
+                one{"{0} څاڅک"}
+                other{"{0} څاڅک"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -1701,6 +1801,10 @@
                 one{"{0} hL"}
                 other{"{0} hL"}
             }
+            jigger{
+                one{"{0} جګر"}
+                other{"{0} جګر"}
+            }
             liter{
                 dnam{"ليټرز"}
                 one{"{0} L"}
@@ -1717,6 +1821,11 @@
                 one{"{0} mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"چنه"}
+                one{"{0} چنه"}
+                other{"{0} چنه"}
+            }
             pint{
                 dnam{"pints"}
                 one{"{0} pt"}
@@ -1732,6 +1841,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"qt Imp"}
+                one{"{0} qt Imp."}
+                other{"{0} qt Imp."}
+            }
             tablespoon{
                 dnam{"tbsp"}
                 one{"{0} tbsp"}
diff --git a/icu4c/source/data/unit/ps_PK.txt b/icu4c/source/data/unit/ps_PK.txt
index 2c42cb5..dd6f22d 100644
--- a/icu4c/source/data/unit/ps_PK.txt
+++ b/icu4c/source/data/unit/ps_PK.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ps_PK{
-    Version{"37"}
     units{
         acceleration{
             g-force{
diff --git a/icu4c/source/data/unit/pt.txt b/icu4c/source/data/unit/pt.txt
index 4744d65..a6146ab 100644
--- a/icu4c/source/data/unit/pt.txt
+++ b/icu4c/source/data/unit/pt.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -407,6 +407,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ponto"}
+                one{"{0} ponto"}
+                other{"{0} pts"}
+            }
             dot-per-centimeter{
                 dnam{"pontos por centímetro"}
                 one{"{0} ponto por centímetro"}
@@ -458,6 +463,11 @@
                 one{"{0} decímetro"}
                 other{"{0} decímetros"}
             }
+            earth-radius{
+                dnam{"raio terrestre"}
+                one{"{0} raio terrestre"}
+                other{"{0} raios terrestres"}
+            }
             fathom{
                 dnam{"braças"}
                 one{"{0} braça"}
@@ -539,7 +549,7 @@
             }
             point{
                 dnam{"pontos"}
-                one{"{0} ponto"}
+                one{"{0} ponto tipográfico"}
                 other{"{0} pontos"}
             }
             solar-radius{
@@ -554,6 +564,16 @@
             }
         }
         light{
+            candela{
+                dnam{"candela"}
+                one{"{0} candela"}
+                other{"{0} candelas"}
+            }
+            lumen{
+                dnam{"lúmen"}
+                one{"{0} lúmen"}
+                other{"{0} lúmens"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
@@ -581,6 +601,11 @@
                 one{"{0} massa terrestre"}
                 other{"{0} massas terrestres"}
             }
+            grain{
+                dnam{"grão"}
+                one{"{0} grão"}
+                other{"{0} grãos"}
+            }
             gram{
                 dnam{"gramas"}
                 one{"{0} grama"}
@@ -636,9 +661,9 @@
                 other{"{0} stones"}
             }
             ton{
-                dnam{"toneladas"}
-                one{"{0} tonelada"}
-                other{"{0} toneladas"}
+                dnam{"toneladas americanas"}
+                one{"{0} tonelada americana"}
+                other{"{0} toneladas americanas"}
             }
         }
         power{
@@ -787,6 +812,11 @@
                 one{"{0} barril"}
                 other{"{0} barris"}
             }
+            bushel{
+                dnam{"bushels"}
+                one{"{0} bushel"}
+                other{"{0} bushels"}
+            }
             centiliter{
                 dnam{"centilitros"}
                 one{"{0} centilitro"}
@@ -844,6 +874,25 @@
                 one{"{0} decilitro"}
                 other{"{0} decilitros"}
             }
+            dessert-spoon{
+                dnam{"colher de sobremesa"}
+                one{"{0} colher de sobremesa"}
+                other{"{0} colheres de sobremesa"}
+            }
+            dessert-spoon-imperial{
+                one{"{0} colher de sobremesa imperial"}
+                other{"{0} colheres de sobremesa imperiais"}
+            }
+            dram{
+                dnam{"dracma"}
+                one{"{0} dracma líquido"}
+                other{"{0} dracmas líquidos"}
+            }
+            drop{
+                dnam{"gota"}
+                one{"{0} gota"}
+                other{"{0} gotas"}
+            }
             fluid-ounce{
                 dnam{"onças fluidas"}
                 one{"{0} onça fluida"}
@@ -871,6 +920,11 @@
                 one{"{0} hectolitro"}
                 other{"{0} hectolitros"}
             }
+            jigger{
+                dnam{"dosador"}
+                one{"{0} dosador"}
+                other{"{0} dosadores"}
+            }
             liter{
                 dnam{"litros"}
                 one{"{0} litro"}
@@ -887,6 +941,11 @@
                 one{"{0} mililitro"}
                 other{"{0} mililitros"}
             }
+            pinch{
+                dnam{"pitada"}
+                one{"{0} pitada"}
+                other{"{0} pitadas"}
+            }
             pint{
                 dnam{"pints"}
                 one{"{0} pint"}
@@ -902,6 +961,11 @@
                 one{"{0} quarto"}
                 other{"{0} quartos"}
             }
+            quart-imperial{
+                dnam{"quarto imperial"}
+                one{"{0} quarto imperial"}
+                other{"{0} quartos imperiais"}
+            }
             tablespoon{
                 dnam{"colheres de sopa"}
                 one{"{0} colher de sopa"}
@@ -1389,6 +1453,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ponto"}
+                one{"{0} p"}
+                other{"{0} pts"}
+            }
             megapixel{
                 dnam{"megapixels"}
             }
@@ -1471,6 +1540,11 @@
             earth-mass{
                 dnam{"massas terrestres"}
             }
+            grain{
+                dnam{"grão"}
+                one{"{0} grão"}
+                other{"{0} grãos"}
+            }
             gram{
                 dnam{"gramas"}
             }
@@ -1492,7 +1566,7 @@
                 dnam{"stones"}
             }
             ton{
-                dnam{"toneladas"}
+                dnam{"toneladas americanas"}
                 one{"{0} tn"}
                 other{"{0} tn"}
             }
@@ -1559,6 +1633,9 @@
             barrel{
                 dnam{"barril"}
             }
+            bushel{
+                dnam{"bushels"}
+            }
             centiliter{
                 dnam{"cl"}
                 one{"{0} cl"}
@@ -1590,6 +1667,24 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"csb"}
+                one{"{0} csb"}
+                other{"{0} csb"}
+            }
+            dessert-spoon-imperial{
+                dnam{"csb imp"}
+                one{"{0} csb imp"}
+                other{"{0} csb imp"}
+            }
+            dram{
+                dnam{"dracma líquido"}
+            }
+            drop{
+                dnam{"gota"}
+                one{"{0} gota"}
+                other{"{0} gotas"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -1612,6 +1707,11 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"dosador"}
+                one{"{0} dosador"}
+                other{"{0} dosadores"}
+            }
             liter{
                 dnam{"litros"}
             }
@@ -1625,6 +1725,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"pitada"}
+                one{"{0} pitada"}
+                other{"{0} pitadas"}
+            }
             pint{
                 dnam{"pints"}
             }
@@ -1636,6 +1741,11 @@
             quart{
                 dnam{"qts"}
             }
+            quart-imperial{
+                dnam{"impqt"}
+                one{"{0} impqt"}
+                other{"{0} impqt"}
+            }
             tablespoon{
                 dnam{"c. sopa"}
                 one{"{0} c. sopa"}
diff --git a/icu4c/source/data/unit/pt_AO.txt b/icu4c/source/data/unit/pt_AO.txt
index 95cf1c6..c6fcc6b 100644
--- a/icu4c/source/data/unit/pt_AO.txt
+++ b/icu4c/source/data/unit/pt_AO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_AO{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/pt_CH.txt b/icu4c/source/data/unit/pt_CH.txt
index 3a679be..67d661e 100644
--- a/icu4c/source/data/unit/pt_CH.txt
+++ b/icu4c/source/data/unit/pt_CH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_CH{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/pt_CV.txt b/icu4c/source/data/unit/pt_CV.txt
index 6d4dd3a..ebaaea8 100644
--- a/icu4c/source/data/unit/pt_CV.txt
+++ b/icu4c/source/data/unit/pt_CV.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_CV{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/pt_GQ.txt b/icu4c/source/data/unit/pt_GQ.txt
index 7cbf771..9364da9 100644
--- a/icu4c/source/data/unit/pt_GQ.txt
+++ b/icu4c/source/data/unit/pt_GQ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_GQ{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/pt_GW.txt b/icu4c/source/data/unit/pt_GW.txt
index da37fbe..e28e46c 100644
--- a/icu4c/source/data/unit/pt_GW.txt
+++ b/icu4c/source/data/unit/pt_GW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_GW{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/pt_LU.txt b/icu4c/source/data/unit/pt_LU.txt
index ebead8d..c402ea2 100644
--- a/icu4c/source/data/unit/pt_LU.txt
+++ b/icu4c/source/data/unit/pt_LU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_LU{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/pt_MO.txt b/icu4c/source/data/unit/pt_MO.txt
index cf54f62..293d10b 100644
--- a/icu4c/source/data/unit/pt_MO.txt
+++ b/icu4c/source/data/unit/pt_MO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_MO{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/pt_MZ.txt b/icu4c/source/data/unit/pt_MZ.txt
index b99439c..a8cc01a 100644
--- a/icu4c/source/data/unit/pt_MZ.txt
+++ b/icu4c/source/data/unit/pt_MZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_MZ{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/pt_PT.txt b/icu4c/source/data/unit/pt_PT.txt
index cca555d..11917e1 100644
--- a/icu4c/source/data/unit/pt_PT.txt
+++ b/icu4c/source/data/unit/pt_PT.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_PT{
-    Version{"37"}
     units{
         acceleration{
             g-force{
@@ -134,6 +134,12 @@
                 other{"{0} picómetros"}
             }
         }
+        light{
+            lumen{
+                one{"{0} lúmen"}
+                other{"{0} lúmenes"}
+            }
+        }
         mass{
             earth-mass{
                 one{"{0} massa da Terra"}
@@ -179,6 +185,18 @@
                 one{"{0} chávena métrica"}
                 other{"{0} chávenas métricas"}
             }
+            dessert-spoon-imperial{
+                dnam{"colher de sobremesa imperial"}
+            }
+            dram{
+                one{"{0} dracma"}
+                other{"{0} dracmas"}
+            }
+            jigger{
+                dnam{"doseador"}
+                one{"{0} doseador"}
+                other{"{0} doseadores"}
+            }
         }
     }
     unitsNarrow{
@@ -601,6 +619,10 @@
             }
         }
         graphics{
+            dot{
+                one{"{0} p"}
+                other{"{0} p"}
+            }
             dot-per-inch{
                 dnam{"ppp"}
                 one{"{0} ppp"}
@@ -624,6 +646,10 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            fathom{
+                one{"{0} fth"}
+                other{"{0} fth"}
+            }
             inch{
                 dnam{"polegadas"}
             }
@@ -760,21 +786,11 @@
                 one{"{0} hPa"}
                 other{"{0} hPa"}
             }
-            inch-ofhg{
-                dnam{"in Hg"}
-                one{"{0} inHg"}
-                other{"{0} inHg"}
-            }
             millibar{
                 dnam{"mbar"}
                 one{"{0} mb"}
                 other{"{0} mb"}
             }
-            millimeter-ofhg{
-                dnam{"mm Hg"}
-                one{"{0} mm Hg"}
-                other{"{0} mm Hg"}
-            }
             pound-force-per-square-inch{
                 dnam{"psi"}
                 one{"{0} psi"}
@@ -862,6 +878,11 @@
                 one{"{0} chám"}
                 other{"{0} chám"}
             }
+            dram{
+                dnam{"dracma fluido"}
+                one{"{0} dram fl"}
+                other{"{0} dram fl"}
+            }
             fluid-ounce-imperial{
                 dnam{"onças fluidas imp."}
                 one{"{0} onça fluida imp."}
@@ -873,6 +894,11 @@
                 other{"{0} gal imp."}
                 per{"{0}/gal imp."}
             }
+            jigger{
+                dnam{"doseador"}
+                one{"{0} doseadores"}
+                other{"{0} doseadores"}
+            }
             liter{
                 one{"{0} l"}
                 other{"{0} l"}
@@ -890,6 +916,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"quarto imp."}
+                one{"{0} quarto imp."}
+                other{"{0} quartos imp."}
+            }
             tablespoon{
                 dnam{"cs"}
                 one{"{0} cs"}
diff --git a/icu4c/source/data/unit/pt_ST.txt b/icu4c/source/data/unit/pt_ST.txt
index e432167..ba0c09e 100644
--- a/icu4c/source/data/unit/pt_ST.txt
+++ b/icu4c/source/data/unit/pt_ST.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_ST{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/pt_TL.txt b/icu4c/source/data/unit/pt_TL.txt
index b3777b6..0dafd09 100644
--- a/icu4c/source/data/unit/pt_TL.txt
+++ b/icu4c/source/data/unit/pt_TL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_TL{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/qu.txt b/icu4c/source/data/unit/qu.txt
index e362da8..2cff334 100644
--- a/icu4c/source/data/unit/qu.txt
+++ b/icu4c/source/data/unit/qu.txt
@@ -1,13 +1,19 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 qu{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
         ms{"m:ss"}
     }
     units{
+        acceleration{
+            meter-per-square-second{
+                dnam{"metros por segundo cuadrado"}
+                other{"{0} metros por segundo cuadrado"}
+            }
+        }
         area{
             acre{
                 dnam{"acre"}
@@ -55,6 +61,21 @@
                 other{"{0} yarda cuadrada"}
             }
         }
+        compound{
+            per{"{0} sapa {1}"}
+        }
+        concentr{
+            permillion{
+                dnam{"partes por millon"}
+                other{"{0} partes por millon"}
+            }
+        }
+        consumption{
+            liter-per-100-kilometer{
+                dnam{"litros por 100 kilometros"}
+                other{"{0} litros por 100 kilometros"}
+            }
+        }
         duration{
             century{
                 dnam{"siglos"}
@@ -109,10 +130,14 @@
             year{
                 dnam{"wata"}
                 other{"{0} wata"}
-                per{"{0} por wata"}
+                per{"{0} sapa wata"}
             }
         }
         graphics{
+            dot{
+                dnam{"chiku"}
+                other{"{0} chiku"}
+            }
             dot-per-centimeter{
                 dnam{"puntos por centímetro"}
                 other{"{0} puntos por centímetro"}
@@ -156,11 +181,23 @@
                 dnam{"decímetro"}
                 other{"{0} decímetro"}
             }
+            earth-radius{
+                dnam{"radio de la tierra"}
+                other{"{0} radio de la tierra"}
+            }
+            fathom{
+                dnam{"fathoms"}
+                other{"{0} fathoms"}
+            }
             foot{
                 dnam{"pie"}
                 other{"{0} pie"}
                 per{"{0}/pie"}
             }
+            furlong{
+                dnam{"furlongs"}
+                other{"{0} furlongs"}
+            }
             inch{
                 dnam{"pulgada"}
                 other{"{0} pulgada"}
@@ -225,6 +262,46 @@
                 other{"{0} yarda"}
             }
         }
+        light{
+            candela{
+                dnam{"candela"}
+                other{"{0} candela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                other{"{0} lumen"}
+            }
+        }
+        mass{
+            grain{
+                dnam{"grano"}
+                other{"{0} grano"}
+            }
+            stone{
+                dnam{"catorce libras"}
+                other{"{0} catorce libras"}
+            }
+        }
+        pressure{
+            inch-ofhg{
+                dnam{"pulgadas por mercurio"}
+                other{"{0} pulgadas por mercurio"}
+            }
+            millimeter-ofhg{
+                dnam{"milimetros de mercurio"}
+                other{"{0} milimetros de mercurio"}
+            }
+            pound-force-per-square-inch{
+                dnam{"libras por pulgada cuadrada"}
+                other{"{0} libras por pulgada cuadrada"}
+            }
+        }
+        torque{
+            pound-force-foot{
+                dnam{"libras-pies"}
+                other{"{0} libras-pies"}
+            }
+        }
         volume{
             acre-foot{
                 dnam{"acre-pie"}
@@ -234,6 +311,10 @@
                 dnam{"barril"}
                 other{"{0} barril"}
             }
+            bushel{
+                dnam{"bushels"}
+                other{"{0} bushels"}
+            }
             centiliter{
                 dnam{"centilitro"}
                 other{"{0} centilitro"}
@@ -280,6 +361,22 @@
                 dnam{"decilitro"}
                 other{"{0} decilitro"}
             }
+            dessert-spoon{
+                dnam{"cuchara para postes"}
+                other{"{0} cuchara para postres"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Imp. cuchara para postres"}
+                other{"{0} Imp. cuchara para postres"}
+            }
+            dram{
+                dnam{"trago"}
+                other{"{0} trago"}
+            }
+            drop{
+                dnam{"gota"}
+                other{"{0} gota"}
+            }
             fluid-ounce{
                 dnam{"Onza líquida"}
                 other{"{0} US Onza líquida"}
@@ -302,6 +399,10 @@
                 dnam{"hectolitro"}
                 other{"{0} hectolitro"}
             }
+            jigger{
+                dnam{"medida"}
+                other{"{0} medida"}
+            }
             liter{
                 dnam{"litro"}
                 other{"{0} litro"}
@@ -315,6 +416,10 @@
                 dnam{"mililitro"}
                 other{"{0} mililitro"}
             }
+            pinch{
+                dnam{"pizca"}
+                other{"{0} pizca"}
+            }
             pint{
                 dnam{"pinta"}
                 other{"{0} pinta"}
@@ -327,6 +432,10 @@
                 dnam{"cuarto"}
                 other{"{0} cuarto"}
             }
+            quart-imperial{
+                dnam{"Imp. cuarta"}
+                other{"{0} Imp. cuarta"}
+            }
             tablespoon{
                 dnam{"cucharada"}
                 other{"{0} cucharada"}
@@ -393,4 +502,79 @@
             }
         }
     }
+    unitsShort{
+        acceleration{
+            meter-per-square-second{
+                dnam{"metros/sec²"}
+            }
+        }
+        concentr{
+            permillion{
+                dnam{"partes/millon"}
+            }
+        }
+        consumption{
+            liter-per-100-kilometer{
+                dnam{"L/100 km"}
+                other{"{0} L/100 km"}
+            }
+        }
+        graphics{
+            dot{
+                dnam{"punto"}
+                other{"{0} punto"}
+            }
+        }
+        length{
+            fathom{
+                dnam{"fathom"}
+            }
+            furlong{
+                dnam{"furlong"}
+            }
+        }
+        mass{
+            grain{
+                dnam{"grano"}
+                other{"{0} grano"}
+            }
+            stone{
+                dnam{"catorce libras"}
+                other{"{0} catorce libras"}
+            }
+        }
+        volume{
+            bushel{
+                dnam{"bushel"}
+            }
+            dessert-spoon{
+                dnam{"cucharilla"}
+                other{"{0} cucharilla"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Imp cucharilla"}
+                other{"{0} Imp cucharilla"}
+            }
+            dram{
+                dnam{"trago fluido"}
+                other{"{0} trago fluido"}
+            }
+            drop{
+                dnam{"gota"}
+                other{"{0} gota"}
+            }
+            jigger{
+                dnam{"medida"}
+                other{"{0} medida"}
+            }
+            pinch{
+                dnam{"pizca"}
+                other{"{0} pizca"}
+            }
+            quart-imperial{
+                dnam{"Imp cuarta"}
+                other{"{0} Imp. cuarta"}
+            }
+        }
+    }
 }
diff --git a/icu4c/source/data/unit/rm.txt b/icu4c/source/data/unit/rm.txt
index 524c80a..d473565 100644
--- a/icu4c/source/data/unit/rm.txt
+++ b/icu4c/source/data/unit/rm.txt
@@ -1,106 +1,436 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rm{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
         ms{"m:ss"}
     }
     units{
+        digital{
+            bit{
+                dnam{"bits"}
+                one{"{0} bit"}
+                other{"{0} bits"}
+            }
+            byte{
+                dnam{"bytes"}
+                one{"{0} byte"}
+                other{"{0} bytes"}
+            }
+            gigabit{
+                dnam{"gigabits"}
+                one{"{0} gigabit"}
+                other{"{0} gigabits"}
+            }
+            gigabyte{
+                dnam{"gigabytes"}
+                one{"{0} gigabyte"}
+                other{"{0} gigabytes"}
+            }
+            kilobit{
+                dnam{"kilobits"}
+                one{"{0} kilobit"}
+                other{"{0} kilobits"}
+            }
+            kilobyte{
+                dnam{"kilobytes"}
+                one{"{0} kilobyte"}
+                other{"{0} kilobytes"}
+            }
+            megabit{
+                dnam{"megabits"}
+                one{"{0} megabit"}
+                other{"{0} megabits"}
+            }
+            megabyte{
+                dnam{"megabytes"}
+                one{"{0} megabyte"}
+                other{"{0} megabytes"}
+            }
+            petabyte{
+                dnam{"petabytes"}
+                one{"{0} petabyte"}
+                other{"{0} petabytes"}
+            }
+            terabit{
+                dnam{"terabits"}
+                one{"{0} terabit"}
+                other{"{0} terabits"}
+            }
+            terabyte{
+                dnam{"terabytes"}
+                one{"{0} terabyte"}
+                other{"{0} terabytes"}
+            }
+        }
         duration{
             day{
+                dnam{"dis"}
                 one{"{0} di"}
                 other{"{0} dis"}
             }
             hour{
+                dnam{"uras"}
                 one{"{0} ura"}
                 other{"{0} uras"}
             }
+            millisecond{
+                dnam{"millisecundas"}
+                one{"{0} millisecunda"}
+                other{"{0} millisecundas"}
+            }
             minute{
+                dnam{"minutas"}
                 one{"{0} minuta"}
                 other{"{0} minutas"}
+                per{"{0} per minuta"}
             }
             month{
+                dnam{"mais"}
                 one{"{0} mais"}
                 other{"{0} mais"}
             }
             second{
+                dnam{"secundas"}
                 one{"{0} secunda"}
                 other{"{0} secundas"}
+                per{"{0} per secunda"}
             }
             week{
+                dnam{"emnas"}
                 one{"{0} emna"}
                 other{"{0} emnas"}
             }
             year{
+                dnam{"onns"}
                 one{"{0} onn"}
                 other{"{0} onns"}
             }
         }
+        graphics{
+            pixel{
+                dnam{"pixels"}
+                one{"{0} pixel"}
+                other{"{0} pixels"}
+            }
+        }
+        length{
+            centimeter{
+                dnam{"centimeters"}
+                one{"{0} centimeter"}
+                other{"{0} centimeters"}
+            }
+            kilometer{
+                dnam{"kilometers"}
+                one{"{0} kilometer"}
+                other{"{0} kilometers"}
+            }
+            meter{
+                dnam{"meters"}
+                one{"{0} meter"}
+                other{"{0} meters"}
+            }
+            millimeter{
+                dnam{"millimeters"}
+                one{"{0} millimeter"}
+                other{"{0} millimeters"}
+            }
+        }
+        mass{
+            gram{
+                dnam{"grams"}
+                one{"{0} gram"}
+                other{"{0} grams"}
+            }
+            kilogram{
+                dnam{"kilograms"}
+                one{"{0} kilogram"}
+                other{"{0} kilograms"}
+            }
+        }
+        speed{
+            kilometer-per-hour{
+                dnam{"kilometers per ura"}
+                one{"{0} kilometer per ura"}
+                other{"{0} kilometers per ura"}
+            }
+        }
+        temperature{
+            celsius{
+                dnam{"grads celsius"}
+                one{"{0} grad celsius"}
+                other{"{0} grads celsius"}
+            }
+        }
+        volume{
+            liter{
+                dnam{"liters"}
+                one{"{0} liter"}
+                other{"{0} liters"}
+                per{"{0} per liter"}
+            }
+        }
     }
     unitsNarrow{
         duration{
             day{
+                dnam{"di"}
                 one{"{0} dis"}
                 other{"{0} dis"}
             }
             hour{
+                dnam{"ura"}
                 one{"{0} uras"}
                 other{"{0} uras"}
             }
+            millisecond{
+                dnam{"ms"}
+                one{"{0}ms"}
+                other{"{0}ms"}
+            }
             minute{
+                dnam{"min"}
                 one{"{0} mins."}
                 other{"{0} mins."}
             }
             month{
+                dnam{"mais"}
                 one{"{0} mais"}
                 other{"{0} mais"}
             }
             second{
+                dnam{"sec"}
                 one{"{0} secs."}
                 other{"{0} secs."}
             }
             week{
+                dnam{"emna"}
                 one{"{0} emnas"}
                 other{"{0} emnas"}
             }
             year{
+                dnam{"onn"}
                 one{"{0} onns"}
                 other{"{0} onns"}
             }
         }
+        length{
+            centimeter{
+                dnam{"cm"}
+                one{"{0}cm"}
+                other{"{0}cm"}
+            }
+            kilometer{
+                dnam{"km"}
+                one{"{0}km"}
+                other{"{0}km"}
+            }
+            meter{
+                dnam{"meter"}
+                one{"{0}m"}
+                other{"{0}m"}
+            }
+            millimeter{
+                dnam{"mm"}
+                one{"{0}mm"}
+                other{"{0}mm"}
+            }
+        }
+        mass{
+            gram{
+                dnam{"gram"}
+                one{"{0} g"}
+                other{"{0} g"}
+            }
+            kilogram{
+                dnam{"kg"}
+                one{"{0} kg"}
+                other{"{0} kg"}
+            }
+        }
+        speed{
+            kilometer-per-hour{
+                dnam{"km/h"}
+                one{"{0} km/h"}
+                other{"{0} km/h"}
+            }
+        }
+        temperature{
+            celsius{
+                dnam{"°C"}
+                one{"{0}°C"}
+                other{"{0}°C"}
+            }
+        }
+        volume{
+            liter{
+                dnam{"liter"}
+                one{"{0} l"}
+                other{"{0} l"}
+            }
+        }
     }
     unitsShort{
+        digital{
+            bit{
+                one{"{0} bit"}
+                other{"{0} bit"}
+            }
+            byte{
+                one{"{0} byte"}
+                other{"{0} byte"}
+            }
+            gigabit{
+                dnam{"Gbit"}
+                one{"{0} Gb"}
+                other{"{0} Gb"}
+            }
+            gigabyte{
+                dnam{"GByte"}
+                one{"{0} GB"}
+                other{"{0} GB"}
+            }
+            kilobit{
+                dnam{"kbit"}
+                one{"{0} kb"}
+                other{"{0} kb"}
+            }
+            kilobyte{
+                dnam{"kByte"}
+                one{"{0} kB"}
+                other{"{0} kB"}
+            }
+            megabit{
+                dnam{"Mbit"}
+                one{"{0} Mb"}
+                other{"{0} Mb"}
+            }
+            megabyte{
+                dnam{"MByte"}
+                one{"{0} MB"}
+                other{"{0} MB"}
+            }
+            petabyte{
+                dnam{"PByte"}
+                one{"{0} PB"}
+                other{"{0} PB"}
+            }
+            terabit{
+                dnam{"Tbit"}
+                one{"{0} Tb"}
+                other{"{0} Tb"}
+            }
+            terabyte{
+                dnam{"TByte"}
+                one{"{0} TB"}
+                other{"{0} TB"}
+            }
+        }
         duration{
             day{
+                dnam{"dis"}
                 one{"{0} di"}
                 other{"{0} dis"}
             }
             hour{
+                dnam{"uras"}
                 one{"{0} ura"}
                 other{"{0} uras"}
             }
+            millisecond{
+                dnam{"ms"}
+                one{"{0} ms"}
+                other{"{0} ms"}
+            }
             minute{
+                dnam{"minutas"}
                 one{"{0} min."}
                 other{"{0} mins."}
             }
             month{
+                dnam{"mais"}
                 one{"{0} mais"}
                 other{"{0} mais"}
             }
             second{
+                dnam{"secundas"}
                 one{"{0} sec."}
                 other{"{0} secs."}
             }
             week{
+                dnam{"emnas"}
                 one{"{0} emna"}
                 other{"{0} emnas"}
             }
             year{
+                dnam{"onns"}
                 one{"{0} onn"}
                 other{"{0} onns"}
             }
         }
+        graphics{
+            pixel{
+                dnam{"pixels"}
+                one{"{0} px"}
+                other{"{0} px"}
+            }
+        }
+        length{
+            centimeter{
+                dnam{"cm"}
+                one{"{0} cm"}
+                other{"{0} cm"}
+            }
+            kilometer{
+                dnam{"km"}
+                one{"{0} km"}
+                other{"{0} km"}
+            }
+            meter{
+                dnam{"meters"}
+                one{"{0} m"}
+                other{"{0} m"}
+            }
+            millimeter{
+                dnam{"mm"}
+                one{"{0} mm"}
+                other{"{0} mm"}
+            }
+        }
+        mass{
+            gram{
+                dnam{"grams"}
+                one{"{0} g"}
+                other{"{0} g"}
+            }
+            kilogram{
+                dnam{"kg"}
+                one{"{0} kg"}
+                other{"{0} kg"}
+            }
+        }
+        speed{
+            kilometer-per-hour{
+                dnam{"km/ura"}
+                one{"{0} km/h"}
+                other{"{0} km/h"}
+            }
+        }
+        temperature{
+            celsius{
+                dnam{"°C"}
+                one{"{0} °C"}
+                other{"{0} °C"}
+            }
+        }
+        volume{
+            liter{
+                dnam{"liters"}
+                one{"{0} l"}
+                other{"{0} l"}
+            }
+        }
     }
 }
diff --git a/icu4c/source/data/unit/rn.txt b/icu4c/source/data/unit/rn.txt
index 5a9f4db..4477138 100644
--- a/icu4c/source/data/unit/rn.txt
+++ b/icu4c/source/data/unit/rn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/ro.txt b/icu4c/source/data/unit/ro.txt
index dbff2f5..b2692de 100644
--- a/icu4c/source/data/unit/ro.txt
+++ b/icu4c/source/data/unit/ro.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ro{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -479,8 +479,14 @@
             }
         }
         graphics{
+            dot{
+                dnam{"punct"}
+                few{"{0} puncte"}
+                one{"{0} punct"}
+                other{"{0} de puncte"}
+            }
             dot-per-centimeter{
-                dnam{"puncte pe centimeru"}
+                dnam{"puncte pe centimetru"}
                 few{"{0} puncte pe centimetru"}
                 one{"{0} punct pe centimetru"}
                 other{"{0} de puncte pe centimetru"}
@@ -539,6 +545,18 @@
                 one{"{0} decimetru"}
                 other{"{0} de decimetri"}
             }
+            earth-radius{
+                dnam{"rază terestră"}
+                few{"{0} raze terestre"}
+                one{"{0} rază terestră"}
+                other{"{0} de raze terestre"}
+            }
+            fathom{
+                dnam{"fathomi"}
+                few{"{0} fathomi"}
+                one{"{0} fathom"}
+                other{"{0} de fathomi"}
+            }
             foot{
                 dnam{"picioare"}
                 few{"{0} picioare"}
@@ -546,6 +564,12 @@
                 other{"{0} de picioare"}
                 per{"{0} pe picior"}
             }
+            furlong{
+                dnam{"furlongi"}
+                few{"{0} furlongi"}
+                one{"{0} furlong"}
+                other{"{0} de furlongi"}
+            }
             inch{
                 dnam{"inchi"}
                 few{"{0} inchi"}
@@ -623,9 +647,9 @@
             }
             point{
                 dnam{"puncte"}
-                few{"{0} puncte"}
-                one{"{0} punct"}
-                other{"{0} de puncte"}
+                few{"{0} puncte tipografice"}
+                one{"{0} punct tipografic"}
+                other{"{0} de puncte tipografice"}
             }
             solar-radius{
                 dnam{"raze solare"}
@@ -641,6 +665,18 @@
             }
         }
         light{
+            candela{
+                dnam{"candelă"}
+                few{"{0} candele"}
+                one{"{0} candelă"}
+                other{"{0} de candele"}
+            }
+            lumen{
+                dnam{"lumen"}
+                few{"{0} lumeni"}
+                one{"{0} lumen"}
+                other{"{0} de lumeni"}
+            }
             lux{
                 dnam{"lucși"}
                 few{"{0} lucși"}
@@ -673,6 +709,12 @@
                 one{"{0} masă terestră"}
                 other{"{0} de mase terestre"}
             }
+            grain{
+                dnam{"boabă"}
+                few{"{0} boabe"}
+                one{"{0} boabă"}
+                other{"{0} de boabe"}
+            }
             gram{
                 dnam{"grame"}
                 few{"{0} grame"}
@@ -731,6 +773,12 @@
                 one{"{0} masă solară"}
                 other{"{0} de mase solare"}
             }
+            stone{
+                dnam{"stone"}
+                few{"{0} stone"}
+                one{"{0} stone"}
+                other{"{0} de stone"}
+            }
             ton{
                 dnam{"tone scurte"}
                 few{"{0} tone scurte"}
@@ -917,6 +965,12 @@
                 one{"{0} baril"}
                 other{"{0} de barili"}
             }
+            bushel{
+                dnam{"banițe"}
+                few{"{0} banițe"}
+                one{"{0} baniță"}
+                other{"{0} de banițe"}
+            }
             centiliter{
                 dnam{"centilitri"}
                 few{"{0} centilitri"}
@@ -985,6 +1039,30 @@
                 one{"{0} decilitru"}
                 other{"{0} de decilitri"}
             }
+            dessert-spoon{
+                dnam{"lingură de desert"}
+                few{"{0} linguri de desert"}
+                one{"{0} lingură de desert"}
+                other{"{0} de linguri de desert"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Lingură de desert imperială"}
+                few{"{0} linguri de desert imperiale"}
+                one{"{0} lingură de desert imperială"}
+                other{"{0} de linguri de desert imperiale"}
+            }
+            dram{
+                dnam{"dram lichid"}
+                few{"{0} drami lichizi"}
+                one{"{0} dram lichid"}
+                other{"{0} de drami lichizi"}
+            }
+            drop{
+                dnam{"picătură"}
+                few{"{0} picături"}
+                one{"{0} picătură"}
+                other{"{0} de picături"}
+            }
             fluid-ounce{
                 dnam{"uncii lichide"}
                 few{"{0} uncii lichide"}
@@ -1017,6 +1095,12 @@
                 one{"{0} hectolitru"}
                 other{"{0} de hectolitri"}
             }
+            jigger{
+                dnam{"jigger"}
+                few{"{0} jiggere"}
+                one{"{0} jigger"}
+                other{"{0} de jiggere"}
+            }
             liter{
                 dnam{"litri"}
                 few{"{0} litri"}
@@ -1036,6 +1120,12 @@
                 one{"{0} mililitru"}
                 other{"{0} de mililitri"}
             }
+            pinch{
+                dnam{"vârf de cuțit"}
+                few{"{0} vârfuri de cuțit"}
+                one{"{0} vârf de cuțit"}
+                other{"{0} de vârfuri de cuțit"}
+            }
             pint{
                 dnam{"pinte"}
                 few{"{0} pinte"}
@@ -1054,6 +1144,12 @@
                 one{"{0} quart"}
                 other{"{0} de quarte"}
             }
+            quart-imperial{
+                dnam{"quart imperial"}
+                few{"{0} quarte imperiale"}
+                one{"{0} quart imperial"}
+                other{"{0} de quarte imperiale"}
+            }
             tablespoon{
                 dnam{"linguri"}
                 few{"{0} linguri"}
@@ -1997,6 +2093,12 @@
             }
         }
         graphics{
+            dot{
+                dnam{"pct."}
+                few{"{0} pct."}
+                one{"{0} pct"}
+                other{"{0} de pct."}
+            }
             dot-per-centimeter{
                 dnam{"dpc"}
                 few{"{0} dpc"}
@@ -2033,6 +2135,9 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            fathom{
+                dnam{"fathomi"}
+            }
             foot{
                 dnam{"ft"}
                 few{"{0} ft"}
@@ -2040,6 +2145,9 @@
                 other{"{0} ft"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"furlongi"}
+            }
             inch{
                 dnam{"in"}
                 few{"{0} in"}
@@ -2161,6 +2269,12 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"boabă"}
+                few{"{0} boabe"}
+                one{"{0} boabă"}
+                other{"{0} boabe"}
+            }
             gram{
                 dnam{"grame"}
                 few{"{0} g"}
@@ -2390,6 +2504,9 @@
             barrel{
                 dnam{"baril"}
             }
+            bushel{
+                dnam{"banițe"}
+            }
             centiliter{
                 dnam{"cl"}
                 few{"{0} cl"}
@@ -2458,6 +2575,15 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dram{
+                dnam{"dram lichid"}
+            }
+            drop{
+                dnam{"picătură"}
+                few{"{0} picături"}
+                one{"{0} picătură"}
+                other{"{0} de picături"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 few{"{0} fl oz"}
@@ -2490,6 +2616,9 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"jigger"}
+            }
             liter{
                 dnam{"litri"}
                 few{"{0} l"}
@@ -2509,6 +2638,12 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"vârf"}
+                few{"{0} vârfuri"}
+                one{"{0} vârf"}
+                other{"{0} de vârfuri"}
+            }
             pint{
                 dnam{"pinte"}
                 few{"{0} pt"}
diff --git a/icu4c/source/data/unit/ro_MD.txt b/icu4c/source/data/unit/ro_MD.txt
index 7070a89..8c06ef2 100644
--- a/icu4c/source/data/unit/ro_MD.txt
+++ b/icu4c/source/data/unit/ro_MD.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ro_MD{
-    Version{"37"}
     unitsNarrow{
         duration{
             day{
diff --git a/icu4c/source/data/unit/rof.txt b/icu4c/source/data/unit/rof.txt
index 7f57cbd..589e60d 100644
--- a/icu4c/source/data/unit/rof.txt
+++ b/icu4c/source/data/unit/rof.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rof{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/root.txt b/icu4c/source/data/unit/root.txt
index 76d938f..7ab7a03 100644
--- a/icu4c/source/data/unit/root.txt
+++ b/icu4c/source/data/unit/root.txt
@@ -1,7 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 root{
-    Version{"37"}
+    Version{"38.1"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -344,6 +345,10 @@
             }
         }
         graphics{
+            dot{
+                dnam{"dot"}
+                other{"{0} dot"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 other{"{0} dpcm"}
@@ -387,6 +392,10 @@
                 dnam{"dm"}
                 other{"{0} dm"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                other{"{0} R⊕"}
+            }
             fathom{
                 dnam{"fm"}
                 other{"{0} fth"}
@@ -465,6 +474,14 @@
             }
         }
         light{
+            candela{
+                dnam{"cd"}
+                other{"{0} cd"}
+            }
+            lumen{
+                dnam{"lm"}
+                other{"{0} lm"}
+            }
             lux{
                 dnam{"lx"}
                 other{"{0} lx"}
@@ -487,6 +504,10 @@
                 dnam{"M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"grain"}
+                other{"{0} grain"}
+            }
             gram{
                 dnam{"gram"}
                 other{"{0} g"}
@@ -709,6 +730,22 @@
                 dnam{"dL"}
                 other{"{0} dL"}
             }
+            dessert-spoon{
+                dnam{"dstspn"}
+                other{"{0} dstspn"}
+            }
+            dessert-spoon-imperial{
+                dnam{"dstspn Imp"}
+                other{"{0} dstspn Imp"}
+            }
+            dram{
+                dnam{"dram fluid"}
+                other{"{0} dram fl"}
+            }
+            drop{
+                dnam{"drop"}
+                other{"{0} drop"}
+            }
             fluid-ounce{
                 dnam{"US fl oz"}
                 other{"{0} fl oz US"}
@@ -731,6 +768,10 @@
                 dnam{"hL"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"jigger"}
+                other{"{0} jigger"}
+            }
             liter{
                 dnam{"liter"}
                 other{"{0} l"}
@@ -744,6 +785,10 @@
                 dnam{"mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"pinch"}
+                other{"{0} pinch"}
+            }
             pint{
                 dnam{"pt"}
                 other{"{0} pt"}
@@ -756,6 +801,10 @@
                 dnam{"qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"qt Imp"}
+                other{"{0} qt Imp."}
+            }
             tablespoon{
                 dnam{"tbsp"}
                 other{"{0} tbsp"}
diff --git a/icu4c/source/data/unit/ru.txt b/icu4c/source/data/unit/ru.txt
index a2d8764..54c3061 100644
--- a/icu4c/source/data/unit/ru.txt
+++ b/icu4c/source/data/unit/ru.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -17,11 +17,11 @@
                 other{"{0} g"}
             }
             meter-per-square-second{
-                dnam{"метры в секунду в квадрате"}
-                few{"{0} метра в секунду в квадрате"}
-                many{"{0} метров в секунду в квадрате"}
-                one{"{0} метр в секунду в квадрате"}
-                other{"{0} метра в секунду в квадрате"}
+                dnam{"метры на секунду в квадрате"}
+                few{"{0} метра на секунду в квадрате"}
+                many{"{0} метров на секунду в квадрате"}
+                one{"{0} метр на секунду в квадрате"}
+                other{"{0} метра на секунду в квадрате"}
             }
         }
         angle{
@@ -215,11 +215,11 @@
                 other{"{0} литра на километр"}
             }
             mile-per-gallon{
-                dnam{"мили на галлон"}
-                few{"{0} мили на галлон"}
-                many{"{0} миль на галлон"}
-                one{"{0} миля на галлон"}
-                other{"{0} мили на галлон"}
+                dnam{"мили на амер. галлон"}
+                few{"{0} мили на амер. галлон"}
+                many{"{0} миль на амер. галлон"}
+                one{"{0} миля на амер. галлон"}
+                other{"{0} мили на амер. галлон"}
             }
             mile-per-gallon-imperial{
                 dnam{"мили на имп. галлон"}
@@ -461,11 +461,11 @@
                 other{"{0} электронвольта"}
             }
             foodcalorie{
-                dnam{"калории"}
-                few{"{0} калории"}
-                many{"{0} калорий"}
-                one{"{0} калория"}
-                other{"{0} калории"}
+                dnam{"килокалории"}
+                few{"{0} килокалории"}
+                many{"{0} килокалорий"}
+                one{"{0} килокалория"}
+                other{"{0} килокалории"}
             }
             joule{
                 dnam{"джоули"}
@@ -550,6 +550,13 @@
             }
         }
         graphics{
+            dot{
+                dnam{"точка"}
+                few{"{0} точки"}
+                many{"{0} точек"}
+                one{"{0} точка"}
+                other{"{0} точки"}
+            }
             dot-per-centimeter{
                 dnam{"точки на сантиметр"}
                 few{"{0} точки на сантиметр"}
@@ -623,6 +630,13 @@
                 one{"{0} дециметр"}
                 other{"{0} дециметра"}
             }
+            earth-radius{
+                dnam{"земной радиус"}
+                few{"{0} земных радиуса"}
+                many{"{0} земных радиусов"}
+                one{"{0} земной радиус"}
+                other{"{0} земного радиуса"}
+            }
             fathom{
                 dnam{"морские сажени"}
                 few{"{0} морских сажени"}
@@ -755,6 +769,20 @@
             }
         }
         light{
+            candela{
+                dnam{"кандела"}
+                few{"{0} канделы"}
+                many{"{0} кандел"}
+                one{"{0} кандела"}
+                other{"{0} канделы"}
+            }
+            lumen{
+                dnam{"люмен"}
+                few{"{0} люмена"}
+                many{"{0} люменов"}
+                one{"{0} люмен"}
+                other{"{0} люмена"}
+            }
             lux{
                 dnam{"люксы"}
                 few{"{0} люкса"}
@@ -792,6 +820,13 @@
                 one{"{0} масса Земли"}
                 other{"{0} массы Земли"}
             }
+            grain{
+                dnam{"гран"}
+                few{"{0} грана"}
+                many{"{0} гранов"}
+                one{"{0} гран"}
+                other{"{0} грана"}
+            }
             gram{
                 dnam{"граммы"}
                 few{"{0} грамма"}
@@ -1037,10 +1072,10 @@
             }
             generic{
                 dnam{"°"}
-                few{"{0}°"}
-                many{"{0}°"}
-                one{"{0}°"}
-                other{"{0}°"}
+                few{"{0} градуса"}
+                many{"{0} градусов"}
+                one{"{0} градус"}
+                other{"{0} градуса"}
             }
             kelvin{
                 dnam{"кельвины"}
@@ -1081,6 +1116,13 @@
                 one{"{0} баррель"}
                 other{"{0} барреля"}
             }
+            bushel{
+                dnam{"бушели"}
+                few{"{0} бушеля"}
+                many{"{0} бушелей"}
+                one{"{0} бушель"}
+                other{"{0} бушеля"}
+            }
             centiliter{
                 dnam{"сантилитры"}
                 few{"{0} сантилитра"}
@@ -1140,11 +1182,11 @@
                 other{"{0} кубического ярда"}
             }
             cup{
-                dnam{"чашки"}
-                few{"{0} чашки"}
-                many{"{0} чашек"}
-                one{"{0} чашка"}
-                other{"{0} чашки"}
+                dnam{"амер. чашки"}
+                few{"{0} амер. чашки"}
+                many{"{0} амер. чашек"}
+                one{"{0} амер. чашка"}
+                other{"{0} амер. чашки"}
             }
             cup-metric{
                 dnam{"метрические чашки"}
@@ -1160,27 +1202,54 @@
                 one{"{0} децилитр"}
                 other{"{0} децилитра"}
             }
+            dessert-spoon{
+                dnam{"десертная ложка"}
+                few{"{0} десертные ложки"}
+                many{"{0} десертных ложек"}
+                one{"{0} десертная ложка"}
+                other{"{0} десертной ложки"}
+            }
+            dessert-spoon-imperial{
+                dnam{"имп. десертная ложка"}
+                few{"{0} имп. десертные ложки"}
+                many{"{0} имп. десертных ложек"}
+                one{"{0} имп. десертная ложка"}
+                other{"{0} имп. десертной ложки"}
+            }
+            dram{
+                few{"{0} жидкие драхмы"}
+                many{"{0} жидких драхм"}
+                one{"{0} жидкая драхма"}
+                other{"{0} жидкой драхмы"}
+            }
+            drop{
+                dnam{"капля"}
+                few{"{0} капли"}
+                many{"{0} капель"}
+                one{"{0} капля"}
+                other{"{0} капли"}
+            }
             fluid-ounce{
-                dnam{"жидкие унции"}
-                few{"{0} жидкие унции"}
-                many{"{0} жидких унций"}
-                one{"{0} жидкая унция"}
-                other{"{0} жидкой унции"}
+                dnam{"амер. жидкие унции"}
+                few{"{0} амер. жидкие унции"}
+                many{"{0} амер. жидких унций"}
+                one{"{0} амер. жидкая унция"}
+                other{"{0} амер. жидкой унции"}
             }
             fluid-ounce-imperial{
-                dnam{"английские жидкие унции"}
-                few{"{0} английские жидкие унции"}
-                many{"{0} английских жидких унций"}
-                one{"{0} английская жидкая унция"}
-                other{"{0} английской жидкой унции"}
+                dnam{"имп. жидкие унции"}
+                few{"{0} имп. жидкие унции"}
+                many{"{0} имп. жидких унций"}
+                one{"{0} имп. жидкая унция"}
+                other{"{0} имп. жидкой унции"}
             }
             gallon{
-                dnam{"галлоны"}
-                few{"{0} галлона"}
-                many{"{0} галлонов"}
-                one{"{0} галлон"}
-                other{"{0} галлона"}
-                per{"{0} на галлон"}
+                dnam{"амер. галлоны"}
+                few{"{0} амер. галлона"}
+                many{"{0} амер. галлонов"}
+                one{"{0} амер. галлон"}
+                other{"{0} амер. галлона"}
+                per{"{0} на амер. галлон"}
             }
             gallon-imperial{
                 dnam{"имп. галлоны"}
@@ -1197,6 +1266,13 @@
                 one{"{0} гектолитр"}
                 other{"{0} гектолитра"}
             }
+            jigger{
+                dnam{"джиггер"}
+                few{"{0} джиггера"}
+                many{"{0} джиггеров"}
+                one{"{0} джиггер"}
+                other{"{0} джиггера"}
+            }
             liter{
                 dnam{"литры"}
                 few{"{0} литра"}
@@ -1219,12 +1295,19 @@
                 one{"{0} миллилитр"}
                 other{"{0} миллилитра"}
             }
+            pinch{
+                dnam{"щепотка"}
+                few{"{0} щепотки"}
+                many{"{0} щепот."}
+                one{"{0} щепотка"}
+                other{"{0} щепотки"}
+            }
             pint{
-                dnam{"пинты"}
-                few{"{0} пинты"}
-                many{"{0} пинт"}
-                one{"{0} пинта"}
-                other{"{0} пинты"}
+                dnam{"амер. пинты"}
+                few{"{0} амер. пинты"}
+                many{"{0} амер. пинт"}
+                one{"{0} амер. пинта"}
+                other{"{0} амер. пинты"}
             }
             pint-metric{
                 dnam{"метрические пинты"}
@@ -1234,11 +1317,18 @@
                 other{"{0} метрической пинты"}
             }
             quart{
-                dnam{"кварты"}
-                few{"{0} кварты"}
-                many{"{0} кварт"}
-                one{"{0} кварта"}
-                other{"{0} кварты"}
+                dnam{"амер. кварты"}
+                few{"{0} амер. кварты"}
+                many{"{0} амер. кварт"}
+                one{"{0} амер. кварта"}
+                other{"{0} амер. кварты"}
+            }
+            quart-imperial{
+                dnam{"имп. кварта"}
+                few{"{0} имп. кварты"}
+                many{"{0} имп. кварт"}
+                one{"{0} имп. кварта"}
+                other{"{0} имп. кварты"}
             }
             tablespoon{
                 dnam{"столовые ложки"}
@@ -2021,11 +2111,11 @@
                 other{"{0} л/км"}
             }
             mile-per-gallon{
-                dnam{"миль/гал"}
-                few{"{0} мили/гал"}
-                many{"{0} миль/гал"}
-                one{"{0} миля/гал"}
-                other{"{0} мили/гал"}
+                dnam{"миль/ам. гал"}
+                few{"{0} мили/ам. гал"}
+                many{"{0} миль/ам. гал"}
+                one{"{0} миля/ам. гал"}
+                other{"{0} мили/ам. гал"}
             }
             mile-per-gallon-imperial{
                 dnam{"мили/имп. гал"}
@@ -2167,11 +2257,11 @@
                 other{"{0} мс"}
             }
             minute{
-                dnam{"мин."}
-                few{"{0} мин."}
-                many{"{0} мин."}
-                one{"{0} мин."}
-                other{"{0} мин."}
+                dnam{"мин"}
+                few{"{0} мин"}
+                many{"{0} мин"}
+                one{"{0} мин"}
+                other{"{0} мин"}
                 per{"{0}/мин"}
             }
             month{
@@ -2190,11 +2280,11 @@
                 other{"{0} нс"}
             }
             second{
-                dnam{"сек."}
-                few{"{0} сек."}
-                many{"{0} сек."}
-                one{"{0} сек."}
-                other{"{0} сек."}
+                dnam{"с"}
+                few{"{0} с"}
+                many{"{0} с"}
+                one{"{0} с"}
+                other{"{0} с"}
                 per{"{0}/c"}
             }
             week{
@@ -2267,11 +2357,11 @@
                 other{"{0} эВ"}
             }
             foodcalorie{
-                dnam{"кал"}
-                few{"{0} кал"}
-                many{"{0} кал"}
-                one{"{0} кал"}
-                other{"{0} кал"}
+                dnam{"ккал"}
+                few{"{0} ккал"}
+                many{"{0} ккал"}
+                one{"{0} ккал"}
+                other{"{0} ккал"}
             }
             joule{
                 dnam{"Дж"}
@@ -2356,6 +2446,13 @@
             }
         }
         graphics{
+            dot{
+                dnam{"тчк"}
+                few{"{0} тчк"}
+                many{"{0} тчк"}
+                one{"{0} тчк"}
+                other{"{0} тчк"}
+            }
             dot-per-centimeter{
                 dnam{"тчк/см"}
                 few{"{0} тчк/см"}
@@ -2490,11 +2587,11 @@
                 other{"{0} мкм"}
             }
             mile{
-                dnam{"мили"}
-                few{"{0} мили"}
-                many{"{0} миль"}
-                one{"{0} миля"}
-                other{"{0} мили"}
+                dnam{"ми"}
+                few{"{0} ми"}
+                many{"{0} ми"}
+                one{"{0} ми"}
+                other{"{0} ми"}
             }
             mile-scandinavian{
                 dnam{"ск. мил."}
@@ -2561,6 +2658,20 @@
             }
         }
         light{
+            candela{
+                dnam{"кд"}
+                few{"{0} кд"}
+                many{"{0} кд"}
+                one{"{0} кд"}
+                other{"{0} кд"}
+            }
+            lumen{
+                dnam{"лм"}
+                few{"{0} лм"}
+                many{"{0} лм"}
+                one{"{0} лм"}
+                other{"{0} лм"}
+            }
             lux{
                 dnam{"лк"}
                 few{"{0} лк"}
@@ -2584,6 +2695,13 @@
                 one{"{0} Да"}
                 other{"{0} Да"}
             }
+            grain{
+                dnam{"гран"}
+                few{"{0} грана"}
+                many{"{0} гранов"}
+                one{"{0} гран"}
+                other{"{0} грана"}
+            }
             gram{
                 dnam{"г"}
                 few{"{0} г"}
@@ -2637,12 +2755,12 @@
                 other{"{0} тр. унц."}
             }
             pound{
-                dnam{"фунт."}
-                few{"{0} фунт."}
-                many{"{0} фунт."}
-                one{"{0} фунт."}
-                other{"{0} фунт."}
-                per{"{0}/фунт"}
+                dnam{"фнт"}
+                few{"{0} фнт"}
+                many{"{0} фнт"}
+                one{"{0} фнт"}
+                other{"{0} фнт"}
+                per{"{0}/фнт"}
             }
             stone{
                 dnam{"стоуны"}
@@ -2798,11 +2916,11 @@
                 other{"{0} м/с"}
             }
             mile-per-hour{
-                dnam{"мили/час"}
-                few{"{0} мили/час"}
-                many{"{0} миль/час"}
-                one{"{0} миля/час"}
-                other{"{0} мили/час"}
+                dnam{"ми/ч"}
+                few{"{0} ми/ч"}
+                many{"{0} ми/ч"}
+                one{"{0} ми/ч"}
+                other{"{0} ми/ч"}
             }
         }
         temperature{
@@ -2866,6 +2984,13 @@
                 one{"{0} барр."}
                 other{"{0} барр."}
             }
+            bushel{
+                dnam{"буш."}
+                few{"{0} буш."}
+                many{"{0} буш."}
+                one{"{0} буш."}
+                other{"{0} буш."}
+            }
             centiliter{
                 dnam{"сл"}
                 few{"{0} сл"}
@@ -2925,11 +3050,11 @@
                 other{"{0} ярд³"}
             }
             cup{
-                dnam{"чаш."}
-                few{"{0} чаш."}
-                many{"{0} чаш."}
-                one{"{0} чаш."}
-                other{"{0} чаш."}
+                dnam{"ам. чаш."}
+                few{"{0} ам. чаш."}
+                many{"{0} ам. чаш."}
+                one{"{0} ам. чаш."}
+                other{"{0} ам. чаш."}
             }
             cup-metric{
                 dnam{"м. чаш."}
@@ -2945,27 +3070,55 @@
                 one{"{0} дл"}
                 other{"{0} дл"}
             }
+            dessert-spoon{
+                dnam{"дес. л."}
+                few{"{0} дес. л."}
+                many{"{0} дес. л."}
+                one{"{0} дес. л."}
+                other{"{0} дес. л."}
+            }
+            dessert-spoon-imperial{
+                dnam{"имп. дес. л."}
+                few{"{0} имп. дес. л."}
+                many{"{0} имп. дес. л."}
+                one{"{0} имп. дес. л."}
+                other{"{0} имп. дес. л."}
+            }
+            dram{
+                dnam{"жидк. др."}
+                few{"{0} жидк. др."}
+                many{"{0} жидк. др."}
+                one{"{0} жидк. др."}
+                other{"{0} жидк. др."}
+            }
+            drop{
+                dnam{"кап."}
+                few{"{0} кап."}
+                many{"{0} кап."}
+                one{"{0} кап."}
+                other{"{0} кап."}
+            }
             fluid-ounce{
-                dnam{"жидк. унц."}
-                few{"{0} жидк. унц."}
-                many{"{0} жидк. унц."}
-                one{"{0} жидк. унц."}
-                other{"{0} жидк. унц."}
+                dnam{"ам. жидк. унц."}
+                few{"{0} ам. жидк. унц."}
+                many{"{0} ам. жидк. унц."}
+                one{"{0} ам. жидк. унц."}
+                other{"{0} ам. жидк. унц."}
             }
             fluid-ounce-imperial{
-                dnam{"англ. жидк. унц."}
-                few{"{0} англ. жидк. унц."}
-                many{"{0} англ. жидк. унц."}
-                one{"{0} англ. жидк. унц."}
-                other{"{0} англ. жидк. унц."}
+                dnam{"имп. жидк. унц."}
+                few{"{0} имп. жидк. унц."}
+                many{"{0} имп. жидк. унц."}
+                one{"{0} имп. жидк. унц."}
+                other{"{0} имп. жидк. унц."}
             }
             gallon{
-                dnam{"гал."}
-                few{"{0} гал."}
-                many{"{0} гал."}
-                one{"{0} гал."}
-                other{"{0} гал."}
-                per{"{0}/гал"}
+                dnam{"ам. гал."}
+                few{"{0} ам. гал."}
+                many{"{0} ам. гал."}
+                one{"{0} ам. гал."}
+                other{"{0} ам. гал."}
+                per{"{0}/ам. гал"}
             }
             gallon-imperial{
                 dnam{"имп. гал."}
@@ -2982,6 +3135,13 @@
                 one{"{0} гл"}
                 other{"{0} гл"}
             }
+            jigger{
+                dnam{"джиггер"}
+                few{"{0} джиггера"}
+                many{"{0} джиггеров"}
+                one{"{0} джиггер"}
+                other{"{0} джиггера"}
+            }
             liter{
                 dnam{"л"}
                 few{"{0} л"}
@@ -3004,12 +3164,19 @@
                 one{"{0} мл"}
                 other{"{0} мл"}
             }
+            pinch{
+                dnam{"щепот."}
+                few{"{0} щепот."}
+                many{"{0} щепот."}
+                one{"{0} щепот."}
+                other{"{0} щепот."}
+            }
             pint{
-                dnam{"пинт."}
-                few{"{0} пинт."}
-                many{"{0} пинт."}
-                one{"{0} пинт."}
-                other{"{0} пинт."}
+                dnam{"ам. пинт."}
+                few{"{0} ам. пинт."}
+                many{"{0} ам. пинт."}
+                one{"{0} ам. пинт."}
+                other{"{0} ам. пинт."}
             }
             pint-metric{
                 dnam{"мпт"}
@@ -3019,11 +3186,18 @@
                 other{"{0} мпт"}
             }
             quart{
-                dnam{"кварт."}
-                few{"{0} кварт."}
-                many{"{0} кварт."}
-                one{"{0} кварт."}
-                other{"{0} кварт."}
+                dnam{"ам. кварт."}
+                few{"{0} ам. кварт."}
+                many{"{0} ам. кварт."}
+                one{"{0} ам. кварт."}
+                other{"{0} ам. кварт."}
+            }
+            quart-imperial{
+                dnam{"имп. кварт."}
+                few{"{0} имп. кварт."}
+                many{"{0} имп. кварт."}
+                one{"{0} имп. кварт."}
+                other{"{0} имп. кварт."}
             }
             tablespoon{
                 dnam{"ст. л."}
diff --git a/icu4c/source/data/unit/rw.txt b/icu4c/source/data/unit/rw.txt
index 6b142b1..5c4ad25 100644
--- a/icu4c/source/data/unit/rw.txt
+++ b/icu4c/source/data/unit/rw.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rw{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/rwk.txt b/icu4c/source/data/unit/rwk.txt
index ab5706f..d206246 100644
--- a/icu4c/source/data/unit/rwk.txt
+++ b/icu4c/source/data/unit/rwk.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rwk{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/curr/nds.txt b/icu4c/source/data/unit/sa.txt
similarity index 63%
copy from icu4c/source/data/curr/nds.txt
copy to icu4c/source/data/unit/sa.txt
index ac58836..2d4f262 100644
--- a/icu4c/source/data/curr/nds.txt
+++ b/icu4c/source/data/unit/sa.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-nds{
-    Version{"37"}
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+sa{
 }
diff --git a/icu4c/source/data/unit/sah.txt b/icu4c/source/data/unit/sah.txt
index ddb5373..1b51e7f 100644
--- a/icu4c/source/data/unit/sah.txt
+++ b/icu4c/source/data/unit/sah.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sah{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/saq.txt b/icu4c/source/data/unit/saq.txt
index 1aa6942..781713d 100644
--- a/icu4c/source/data/unit/saq.txt
+++ b/icu4c/source/data/unit/saq.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 saq{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/sat.txt b/icu4c/source/data/unit/sat.txt
index ded5945..7ee5719 100644
--- a/icu4c/source/data/unit/sat.txt
+++ b/icu4c/source/data/unit/sat.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/sat_IN.txt b/icu4c/source/data/unit/sat_IN.txt
index c4976b4..15af329 100644
--- a/icu4c/source/data/unit/sat_IN.txt
+++ b/icu4c/source/data/unit/sat_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat_IN{
     "%%ALIAS"{"sat_Olck_IN"}
 }
diff --git a/icu4c/source/data/unit/sat_Olck.txt b/icu4c/source/data/unit/sat_Olck.txt
index 0d7225f..f09b6a0 100644
--- a/icu4c/source/data/unit/sat_Olck.txt
+++ b/icu4c/source/data/unit/sat_Olck.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat_Olck{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/sat_Olck_IN.txt b/icu4c/source/data/unit/sat_Olck_IN.txt
index 8bda43c..0a44bdb 100644
--- a/icu4c/source/data/unit/sat_Olck_IN.txt
+++ b/icu4c/source/data/unit/sat_Olck_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/sbp.txt b/icu4c/source/data/unit/sbp.txt
index b283c92..6c2e085 100644
--- a/icu4c/source/data/unit/sbp.txt
+++ b/icu4c/source/data/unit/sbp.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sbp{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/sd.txt b/icu4c/source/data/unit/sd.txt
index 8b55e19..85924ae 100644
--- a/icu4c/source/data/unit/sd.txt
+++ b/icu4c/source/data/unit/sd.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -16,13 +16,13 @@
             }
             meter-per-square-second{
                 dnam{"ميٽر في سيڪنڊ اسڪوائر"}
-                one{"{0} m/s²"}
+                one{"{0} ميٽر في سيڪنڊ اسڪوائر"}
                 other{"{0} ميٽر في سيڪنڊ اسڪوائر"}
             }
         }
         angle{
             arc-minute{
-                dnam{"آرڪ منٽز"}
+                dnam{"آرڪ منٽس"}
                 one{"{0} آرڪ منٽز"}
                 other{"{0} آرڪ منٽز"}
             }
@@ -105,7 +105,7 @@
             }
         }
         compound{
-            per{"في {1} تي {0}"}
+            per{"{0} في {1}"}
             times{"{0}⋅{1}"}
         }
         concentr{
@@ -141,7 +141,7 @@
             }
             permillion{
                 dnam{"حصا في ملين"}
-                one{"{0} حصا في ملين"}
+                one{"{0} حصو في ملين"}
                 other{"{0} حصا في ملين"}
             }
             permyriad{
@@ -153,7 +153,7 @@
         consumption{
             liter-per-100-kilometer{
                 dnam{"ليٽرز في 100 ڪلو ميٽر"}
-                one{"{0} L/100km"}
+                one{"{0} ليٽر في 100 ڪلوميٽر"}
                 other{"{0} ليٽرز في 100 ڪلو ميٽر"}
             }
             liter-per-kilometer{
@@ -188,7 +188,7 @@
             byte{
                 dnam{"بائيٽز"}
                 one{"{0} بائيٽ"}
-                other{"{0} بائيٽز"}
+                other{"{0} بائيٽس"}
             }
             gigabit{
                 dnam{"گيگا بٽز"}
@@ -201,7 +201,7 @@
                 other{"{0} گيگا بائيٽز"}
             }
             kilobit{
-                dnam{"ڪلو بٽز"}
+                dnam{"ڪلو بٽس"}
                 one{"{0} ڪلو بٽز"}
                 other{"{0} ڪلو بٽز"}
             }
@@ -312,7 +312,6 @@
                 other{"{0} ایمپئیر"}
             }
             milliampere{
-                dnam{"ملي ايمپئير"}
                 one{"{0} ملي ايمپئير"}
                 other{"{0} ملي ايمپئير"}
             }
@@ -324,7 +323,7 @@
             volt{
                 dnam{"وولٽز"}
                 one{"{0} وولٽ"}
-                other{"{0} وولٽز"}
+                other{"{0} وولٽس"}
             }
         }
         energy{
@@ -365,7 +364,7 @@
             }
             kilowatt-hour{
                 dnam{"ڪلو واٽ في ڪلاڪ"}
-                one{"{0} ڪلو واٽ في ڪلڪ"}
+                one{"{0} ڪلو واٽ في ڪلاڪ"}
                 other{"{0} ڪلو واٽ في ڪلڪ"}
             }
             therm-us{
@@ -425,7 +424,7 @@
                 other{"{0} ems"}
             }
             megapixel{
-                dnam{"ميگا پگزلس"}
+                dnam{"ميگا پڪسلز"}
                 one{"{0} ميگا پگزل"}
                 other{"{0} ميگا پگزلس"}
             }
@@ -548,6 +547,11 @@
             }
         }
         light{
+            lumen{
+                dnam{"ليومن"}
+                one{"{0} ليومن"}
+                other{"{0} ليومن"}
+            }
             lux{
                 dnam{"لڪس"}
                 one{"{0} لڪس"}
@@ -575,6 +579,11 @@
                 one{"{0} ارٿ ماس"}
                 other{"{0} ارٿ ماسز"}
             }
+            grain{
+                dnam{"گرين"}
+                one{"{0} گرين"}
+                other{"{0} گرين"}
+            }
             gram{
                 dnam{"گرامَ"}
                 one{"{0} گرام"}
@@ -642,7 +651,7 @@
                 other{"{0} هارس پاور"}
             }
             kilowatt{
-                dnam{"ڪلو واٽز"}
+                dnam{"ڪلو واٽس"}
                 one{"{0} ڪلو واٽ"}
                 other{"{0} ڪلو واٽز"}
             }
@@ -680,7 +689,7 @@
             }
             inch-ofhg{
                 dnam{"مرڪري جا انچز"}
-                one{"مرڪري جا {0} انچز"}
+                one{"مرڪري جو {0} انچ"}
                 other{"مرڪري جا {0} انچز"}
             }
             kilopascal{
@@ -710,7 +719,7 @@
             }
             pound-force-per-square-inch{
                 dnam{"پائونڊز في اسڪوائر انچ"}
-                one{"{0} psi"}
+                one{"{0} پائونڊ في اسڪوائر انچ"}
                 other{"{0} پائونڊز في اسڪوائر انچ"}
             }
         }
@@ -1001,14 +1010,14 @@
         mass{
             gram{
                 dnam{"گرام"}
-                one{"{0}گـ."}
-                other{"{0}گـ."}
+                one{"{0}g"}
+                other{"{0}g"}
                 per{"{0}/گـ."}
             }
             kilogram{
-                dnam{"ڪ.گـ."}
-                one{"{0}ڪ.گـ."}
-                other{"{0}ڪ.گـ."}
+                dnam{"kg"}
+                one{"{0}kg"}
+                other{"{0} kg"}
                 per{"{0}/ڪ.گـ."}
             }
             metric-ton{
@@ -1031,7 +1040,7 @@
         }
         temperature{
             celsius{
-                dnam{"ڊگري سيلسيس"}
+                dnam{"°C"}
                 one{"{0}°C"}
                 other{"{0}°C"}
             }
@@ -1177,9 +1186,8 @@
                 other{"{0}‰"}
             }
             permillion{
-                dnam{"حصا في ملين"}
-                one{"{0} حصا في ملين"}
-                other{"{0} حصا في ملين"}
+                one{"{0} ppm"}
+                other{"{0} ppm"}
             }
             permyriad{
                 dnam{"پيرمائيرڊ"}
@@ -1200,13 +1208,13 @@
             }
             mile-per-gallon{
                 dnam{"ميل في گيلن"}
-                one{"{0} ميل في گيلن"}
-                other{"{0} ميل في گيلن"}
+                one{"{0} mpg"}
+                other{"{0} mpg"}
             }
             mile-per-gallon-imperial{
                 dnam{"ميل في امپيريل گيلن"}
-                one{"{0} ميل في امپيريل گيلن"}
-                other{"{0} ميل في امپيريل گيلن"}
+                one{"{0} mpg Imp."}
+                other{"{0} mpg Imp."}
             }
         }
         coordinate{
@@ -1228,14 +1236,12 @@
                 other{"{0} بائيٽ"}
             }
             gigabit{
-                dnam{"گيگا بٽ"}
-                one{"{0} گيگا بٽز"}
-                other{"{0} گيگا بٽز"}
+                one{"{0} Gb"}
+                other{"{0} Gb"}
             }
             gigabyte{
-                dnam{"گيگا بائيٽ"}
-                one{"{0} گيگا بائيٽز"}
-                other{"{0} گيگا بائيٽز"}
+                one{"{0} GB"}
+                other{"{0} GB"}
             }
             kilobit{
                 dnam{"ڪلو بٽ"}
@@ -1244,7 +1250,7 @@
             }
             kilobyte{
                 dnam{"ڪلو بائيٽ"}
-                one{"{0} ڪلو بائيٽز"}
+                one{"{0} ڪلو بائيٽ"}
                 other{"{0} ڪلو بائيٽز"}
             }
             megabit{
@@ -1253,24 +1259,20 @@
                 other{"{0} ميگا بٽز"}
             }
             megabyte{
-                dnam{"ميگا بائيٽ"}
-                one{"{0} ميگا بائيٽز"}
-                other{"{0} ميگا بائيٽز"}
+                one{"{0} MB"}
+                other{"{0} MB"}
             }
             petabyte{
-                dnam{"پيرا بائيٽس"}
-                one{"{0} پيرا بائيٽس"}
-                other{"{0} پيرا بائيٽس"}
+                one{"{0} PB"}
+                other{"{0} PB"}
             }
             terabit{
-                dnam{"ٽيرا بٽز"}
-                one{"{0} ٽيرا بٽز"}
-                other{"{0} ٽيرا بٽز"}
+                one{"{0} Tb"}
+                other{"{0} Tb"}
             }
             terabyte{
-                dnam{"ٽيرا بائيٽز"}
-                one{"{0} ٽيرا بائيٽز"}
-                other{"{0} ٽيرا بائيٽز"}
+                one{"{0} TB"}
+                other{"{0} TB"}
             }
         }
         duration{
@@ -1350,8 +1352,8 @@
             }
             milliampere{
                 dnam{"ملي ايمپئير"}
-                one{"{0} ملي ايمپئير"}
-                other{"{0} ملي ايمپئير"}
+                one{"{0} ملي ايمپيئر"}
+                other{"{0} ملي ايمپيئر"}
             }
             ohm{
                 dnam{"اوهمس"}
@@ -1397,8 +1399,8 @@
             }
             kilojoule{
                 dnam{"ڪلو جول"}
-                one{"{0} ڪلو جول"}
-                other{"{0} ڪلو جول"}
+                one{"{0} kJ"}
+                other{"{0} kJ"}
             }
             kilowatt-hour{
                 dnam{"ڪلو واٽ في ڪلاڪ"}
@@ -1558,8 +1560,8 @@
         light{
             lux{
                 dnam{"لڪس"}
-                one{"{0} لڪس"}
-                other{"{0} لڪس"}
+                one{"{0} lx"}
+                other{"{0} lx"}
             }
             solar-luminosity{
                 dnam{"سولر ليومينوسائيٽيز"}
@@ -1583,32 +1585,32 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"گرين"}
+                one{"{0} گرين"}
+                other{"{0} گرين"}
+            }
             gram{
                 dnam{"گرامَ"}
-                one{"{0} گـ"}
-                other{"{0} گـ."}
-                per{"{0}/گـ."}
+                one{"{0} g"}
+                other{"{0} g"}
             }
             kilogram{
                 dnam{"ڪلو گرام"}
                 one{"{0} ڪلو گرام"}
-                other{"{0} ڪ.گـ."}
-                per{"{0}/ڪ.گـ."}
+                other{"{0} kg"}
             }
             metric-ton{
-                dnam{"ٽَـ"}
-                one{"{0} ٽَـ"}
-                other{"{0} ٽَـ"}
+                one{"{0} t"}
+                other{"{0} t"}
             }
             microgram{
-                dnam{"مائڪرو گرام"}
-                one{"{0} مائڪرو گرام"}
-                other{"{0} مائڪرو گرام"}
+                one{"{0} µg"}
+                other{"{0} µg"}
             }
             milligram{
-                dnam{"مـ.گـ."}
-                one{"{0} مـ.گـ."}
-                other{"{0} مـ.گـ."}
+                one{"{0} mg"}
+                other{"{0} mg"}
             }
             ounce{
                 dnam{"اونس"}
@@ -1672,9 +1674,8 @@
         }
         pressure{
             atmosphere{
-                dnam{"ايٽماس فيئر"}
-                one{"{0} ايٽماس فيئر"}
-                other{"{0} ايٽماس فيئر"}
+                one{"{0} atm"}
+                other{"{0} atm"}
             }
             bar{
                 dnam{"بار"}
@@ -1682,14 +1683,12 @@
                 other{"{0} بارس"}
             }
             hectopascal{
-                dnam{"هيڪٽوپاسڪلز"}
-                one{"{0} هيڪٽوپاسڪلز"}
-                other{"{0} هيڪٽوپاسڪلز"}
+                one{"{0} hPa"}
+                other{"{0} hPa"}
             }
             inch-ofhg{
-                dnam{"مرڪري جا انچز"}
-                one{"مرڪري جا {0} انچز"}
-                other{"مرڪري جا {0} انچز"}
+                one{"{0} inHg"}
+                other{"{0} inHg"}
             }
             kilopascal{
                 dnam{"kPa"}
@@ -1702,17 +1701,14 @@
                 other{"{0} MPa"}
             }
             millibar{
-                dnam{"ملي بارز"}
-                one{"{0} ملي بارز"}
-                other{"{0} ملي بارز"}
+                one{"{0} mbar"}
+                other{"{0} mbar"}
             }
             millimeter-ofhg{
-                dnam{"مرڪري جو ملي ميٽر"}
-                one{"مرڪري جو {0} ملي ميٽر"}
-                other{"مرڪري جو {0} ملي ميٽر"}
+                one{"{0} mmHg"}
+                other{"{0} mm Hg"}
             }
             pound-force-per-square-inch{
-                dnam{"پائونڊز في اسڪوائر انچ"}
                 one{"{0} psi"}
                 other{"{0} psi"}
             }
@@ -1741,24 +1737,20 @@
         }
         temperature{
             celsius{
-                dnam{"ڊگري سيلسيس"}
-                one{"{0} ڊگري سيلسيس"}
-                other{"{0} ڊگري سيلسيس"}
+                one{"{0}°C"}
+                other{"{0}°C"}
             }
             fahrenheit{
-                dnam{"ڊگريز فارن هائيٽ"}
-                one{"{0} ڊگريز فارن هائيٽ"}
-                other{"{0} ڊگريز فارن هائيٽ"}
+                one{"{0}°F"}
+                other{"{0}°F"}
             }
             generic{
-                dnam{"ڊگري"}
-                one{"{0} ڊگري"}
-                other{"{0} ڊگري"}
+                one{"{0}°"}
+                other{"{0}°"}
             }
             kelvin{
-                dnam{"ڪيلونز"}
-                one{"{0} ڪيلونز"}
-                other{"{0} ڪيلونز"}
+                one{"{0} K"}
+                other{"{0} K"}
             }
         }
         torque{
diff --git a/icu4c/source/data/unit/sd_Arab.txt b/icu4c/source/data/unit/sd_Arab.txt
index 52a97c8..c089e06 100644
--- a/icu4c/source/data/unit/sd_Arab.txt
+++ b/icu4c/source/data/unit/sd_Arab.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_Arab{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/sd_Arab_PK.txt b/icu4c/source/data/unit/sd_Arab_PK.txt
index 4a9803a..2e57dba 100644
--- a/icu4c/source/data/unit/sd_Arab_PK.txt
+++ b/icu4c/source/data/unit/sd_Arab_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/sd_Deva.txt b/icu4c/source/data/unit/sd_Deva.txt
index 3d793e0..fd9d7cc 100644
--- a/icu4c/source/data/unit/sd_Deva.txt
+++ b/icu4c/source/data/unit/sd_Deva.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_Deva{
     %%Parent{"root"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/sd_PK.txt b/icu4c/source/data/unit/sd_PK.txt
index 7663600..b7def87 100644
--- a/icu4c/source/data/unit/sd_PK.txt
+++ b/icu4c/source/data/unit/sd_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_PK{
     "%%ALIAS"{"sd_Arab_PK"}
 }
diff --git a/icu4c/source/data/unit/se.txt b/icu4c/source/data/unit/se.txt
index 7ee7947..7991845 100644
--- a/icu4c/source/data/unit/se.txt
+++ b/icu4c/source/data/unit/se.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 se{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/seh.txt b/icu4c/source/data/unit/seh.txt
index d5237e2..fa708a3 100644
--- a/icu4c/source/data/unit/seh.txt
+++ b/icu4c/source/data/unit/seh.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 seh{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/ses.txt b/icu4c/source/data/unit/ses.txt
index f8595e4..05fa547 100644
--- a/icu4c/source/data/unit/ses.txt
+++ b/icu4c/source/data/unit/ses.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ses{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/sg.txt b/icu4c/source/data/unit/sg.txt
index 2f001a3..ad75cb9 100644
--- a/icu4c/source/data/unit/sg.txt
+++ b/icu4c/source/data/unit/sg.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sg{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/sh.txt b/icu4c/source/data/unit/sh.txt
index 74b646a..83091b2 100644
--- a/icu4c/source/data/unit/sh.txt
+++ b/icu4c/source/data/unit/sh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh{
     "%%ALIAS"{"sr_Latn"}
 }
diff --git a/icu4c/source/data/unit/sh_BA.txt b/icu4c/source/data/unit/sh_BA.txt
index 93bdac6..7f73cd5 100644
--- a/icu4c/source/data/unit/sh_BA.txt
+++ b/icu4c/source/data/unit/sh_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_BA{
     "%%ALIAS"{"sr_Latn_BA"}
 }
diff --git a/icu4c/source/data/unit/sh_CS.txt b/icu4c/source/data/unit/sh_CS.txt
index 224568a..3b2f92b 100644
--- a/icu4c/source/data/unit/sh_CS.txt
+++ b/icu4c/source/data/unit/sh_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_CS{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/unit/sh_YU.txt b/icu4c/source/data/unit/sh_YU.txt
index 8a7d460..dc5a35b 100644
--- a/icu4c/source/data/unit/sh_YU.txt
+++ b/icu4c/source/data/unit/sh_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_YU{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/unit/shi.txt b/icu4c/source/data/unit/shi.txt
index 286f257..55a0e8d 100644
--- a/icu4c/source/data/unit/shi.txt
+++ b/icu4c/source/data/unit/shi.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/shi_Latn.txt b/icu4c/source/data/unit/shi_Latn.txt
index 1b87df9..f6f7139 100644
--- a/icu4c/source/data/unit/shi_Latn.txt
+++ b/icu4c/source/data/unit/shi_Latn.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_Latn{
     %%Parent{"root"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/shi_MA.txt b/icu4c/source/data/unit/shi_MA.txt
index 00de1b1..c96251d 100644
--- a/icu4c/source/data/unit/shi_MA.txt
+++ b/icu4c/source/data/unit/shi_MA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_MA{
     "%%ALIAS"{"shi_Tfng_MA"}
 }
diff --git a/icu4c/source/data/unit/shi_Tfng.txt b/icu4c/source/data/unit/shi_Tfng.txt
index 397f53f..723cdf1 100644
--- a/icu4c/source/data/unit/shi_Tfng.txt
+++ b/icu4c/source/data/unit/shi_Tfng.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_Tfng{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/shi_Tfng_MA.txt b/icu4c/source/data/unit/shi_Tfng_MA.txt
index 978cd5c..3ec81a4 100644
--- a/icu4c/source/data/unit/shi_Tfng_MA.txt
+++ b/icu4c/source/data/unit/shi_Tfng_MA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/si.txt b/icu4c/source/data/unit/si.txt
index 99bbd71..173d2d1 100644
--- a/icu4c/source/data/unit/si.txt
+++ b/icu4c/source/data/unit/si.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 si{
-    Version{"37"}
     durationUnits{
         hm{"h.mm"}
         hms{"h.mm.ss"}
@@ -151,9 +151,9 @@
         }
         consumption{
             liter-per-100-kilometer{
-                dnam{"කිලෝ මීටර 100 ට ලීටර"}
-                one{"කිලෝ මීටර 100 ට ලීටර {0}"}
-                other{"කිලෝ මීටර 100 ට ලීටර {0}"}
+                dnam{"කිලෝමීටර 100ට ලීටර"}
+                one{"කිලෝමීටර 100ට ලීටර {0}"}
+                other{"කිලෝමීටර 100ට ලීටර {0}"}
             }
             liter-per-kilometer{
                 dnam{"කිලෝ මීටරයට ලීටරය"}
@@ -408,6 +408,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"තිත"}
+                one{"{0}තිත"}
+                other{"{0}තිත"}
+            }
             dot-per-centimeter{
                 dnam{"සෙන්ටිමීටරයකට තිත්"}
                 one{"සෙන්ටිමීටරයකට තිත් {0}"}
@@ -459,12 +464,27 @@
                 one{"ඩෙසිමීටර {0}"}
                 other{"ඩෙසිමීටර {0}"}
             }
+            earth-radius{
+                dnam{"පෘථිවි අරය"}
+                one{"පෘථිවි අර {0}"}
+                other{"පෘථිවි අර {0}"}
+            }
+            fathom{
+                dnam{"බඹය"}
+                one{"{0} බඹය"}
+                other{"බඹ {0}"}
+            }
             foot{
                 dnam{"අඩි"}
                 one{"අඩි {0}"}
                 other{"අඩි {0}"}
                 per{"අඩියට {0}"}
             }
+            furlong{
+                dnam{"පර්ලොම"}
+                one{"{0} පර්ලොමය"}
+                other{"පර්ලොම {0}"}
+            }
             inch{
                 dnam{"අඟල්"}
                 one{"අඟල් {0}"}
@@ -545,6 +565,16 @@
             }
         }
         light{
+            candela{
+                dnam{"කැන්ඩෙලා"}
+                one{"{0} කැන්ඩෙලා"}
+                other{"කැන්ඩෙලා {0}"}
+            }
+            lumen{
+                dnam{"ලූමනය"}
+                one{"{0} ලූමනය"}
+                other{"ලූමන {0}"}
+            }
             lux{
                 dnam{"ලක්ස්"}
                 one{"ලක්ස් {0}"}
@@ -572,6 +602,11 @@
                 one{"{0} පෘථිවි ස්කන්ධ"}
                 other{"{0} පෘථිවි ස්කන්ධ"}
             }
+            grain{
+                dnam{"ඇබිත්ත"}
+                one{"{0} ඇබිත්ත"}
+                other{"ඇබිති {0}"}
+            }
             gram{
                 dnam{"ග්‍රෑම්"}
                 one{"ග්‍රෑම් {0}"}
@@ -621,6 +656,11 @@
                 one{"{0} සූර්ය ස්කන්ධ"}
                 other{"{0} සූර්ය ස්කන්ධ"}
             }
+            stone{
+                dnam{"ගල්"}
+                one{"{0} ගල"}
+                other{"ගල් {0}"}
+            }
             ton{
                 dnam{"ටොන්"}
                 one{"ටොන් {0}"}
@@ -706,9 +746,9 @@
                 other{"පැස්කල් {0}"}
             }
             pound-force-per-square-inch{
-                dnam{"වර්ග අලඟකට රාත්තල්"}
-                one{"වර්ග අලඟකට රාත්තල් {0}"}
-                other{"වර්ග අලඟකට රාත්තල් {0}"}
+                dnam{"වර්ග අඟලකට රාත්තල්"}
+                one{"වර්ග අඟලකට රාත්තල් {0}"}
+                other{"වර්ග අඟලකට රාත්තල් {0}"}
             }
         }
         speed{
@@ -778,6 +818,11 @@
                 one{"{0} බැරල්"}
                 other{"{0} බැරල්"}
             }
+            bushel{
+                dnam{"බුසල්"}
+                one{"{0} බුසල"}
+                other{"බුසල් {0}"}
+            }
             centiliter{
                 dnam{"සෙන්ටිලීටරය"}
                 one{"සෙන්ටිලීටරය {0}"}
@@ -835,6 +880,26 @@
                 one{"ඩෙසිලීටරය {0}"}
                 other{"ඩෙසිලීටරය {0}"}
             }
+            dessert-spoon{
+                dnam{"අතුරුපස හැන්ද"}
+                one{"{0} අතුරුපස හැන්ද"}
+                other{"අතුරුපස හැඳි {0}"}
+            }
+            dessert-spoon-imperial{
+                dnam{"ඉම්පීරියල් අතුරුපස හැන්ද"}
+                one{"{0} ඉම්පීරියල් අතුරුපස හැන්ද"}
+                other{"ඉම්පීරියල් අතුරුපස හැඳි {0}"}
+            }
+            dram{
+                dnam{"ඩ්‍රූම"}
+                one{"{0} ඩ්‍රූම"}
+                other{"ඩ්‍රූම {0}"}
+            }
+            drop{
+                dnam{"බින්දුව"}
+                one{"{0} බින්දුව"}
+                other{"බින්දු {0}"}
+            }
             fluid-ounce{
                 dnam{"ද්‍රව අවුන්ස"}
                 one{"ද්‍රව අවුන්ස {0}"}
@@ -862,6 +927,11 @@
                 one{"හෙක්ටොලීටර් {0}"}
                 other{"හෙක්ටොලීටර් {0}"}
             }
+            jigger{
+                dnam{"තැටි වාහකය"}
+                one{"{0} තැටි වාහකය"}
+                other{"තැටි වාහක {0}"}
+            }
             liter{
                 dnam{"ලීටර්"}
                 one{"ලීටර් {0}"}
@@ -878,6 +948,11 @@
                 one{"මිලිලීටර් {0}"}
                 other{"මිලිලීටර් {0}"}
             }
+            pinch{
+                dnam{"ඩිංග"}
+                one{"{0} ඩිංග"}
+                other{"ඩිංග {0}"}
+            }
             pint{
                 dnam{"පයින්ට්"}
                 one{"පයින්ට් {0}"}
@@ -893,6 +968,11 @@
                 one{"ක්වාට් {0}"}
                 other{"ක්වාට් {0}"}
             }
+            quart-imperial{
+                dnam{"ඉම්පීරියල් නැළිය"}
+                one{"{0} ඉම්පීරියල් නැළිය"}
+                other{"ඉම්පීරියල් නැළි {0}"}
+            }
             tablespoon{
                 dnam{"මේස හැදී"}
                 one{"මේස හැදී {0}"}
@@ -1556,6 +1636,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"තිත"}
+                one{"{0} තිත"}
+                other{"තිත් {0}"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 one{"{0} dpcm"}
@@ -1609,12 +1694,27 @@
                 one{"ඩෙමී {0}"}
                 other{"ඩෙමී {0}"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                one{"{0} R⊕"}
+                other{"{0} R⊕"}
+            }
+            fathom{
+                dnam{"බඹය"}
+                one{"බඹ {0}"}
+                other{"බඹ {0}"}
+            }
             foot{
                 dnam{"අඩි"}
                 one{"අඩි {0}"}
                 other{"අඩි {0}"}
                 per{"{0}/අඩි"}
             }
+            furlong{
+                dnam{"පර්ලොම"}
+                one{"පර්ලොම {0}"}
+                other{"පර්ලොම {0}"}
+            }
             inch{
                 dnam{"අඟල්"}
                 one{"අඟල් {0}"}
@@ -1695,6 +1795,16 @@
             }
         }
         light{
+            candela{
+                dnam{"කැන්ඩෙලා"}
+                one{"කැන්ඩෙලා {0}"}
+                other{"කැන්ඩෙලා {0}"}
+            }
+            lumen{
+                dnam{"ලූමනය"}
+                one{"ලූමන {0}"}
+                other{"ලූමන {0}"}
+            }
             lux{
                 dnam{"ලක්ස්"}
                 one{"ලක් {0}"}
@@ -1722,6 +1832,11 @@
                 one{"{0} ස්⊕"}
                 other{"{0} ස්⊕"}
             }
+            grain{
+                dnam{"ඇබිත්ත"}
+                one{"ඇබිති {0}"}
+                other{"ඇබිති {0}"}
+            }
             gram{
                 dnam{"ග්‍රෑම්"}
                 one{"ග්‍රෑ. {0}"}
@@ -1771,6 +1886,11 @@
                 one{"{0} ස්☉"}
                 other{"{0} ස්☉"}
             }
+            stone{
+                dnam{"ගල්"}
+                one{"ගල් {0}"}
+                other{"ගල් {0}"}
+            }
             ton{
                 dnam{"ටොන්"}
                 one{"ටොන් {0}"}
@@ -1856,9 +1976,9 @@
                 other{"පැස් {0}"}
             }
             pound-force-per-square-inch{
-                dnam{"වඅ රා"}
-                one{"වඅ රා {0}"}
-                other{"වඅ රා {0}"}
+                dnam{"වඅරා"}
+                one{"වඅරා {0}"}
+                other{"වඅරා {0}"}
             }
         }
         speed{
@@ -1928,6 +2048,11 @@
                 one{"{0} බැරල්"}
                 other{"{0} බැරල්"}
             }
+            bushel{
+                dnam{"බුසල්"}
+                one{"බුසල් {0}"}
+                other{"බුසල් {0}"}
+            }
             centiliter{
                 dnam{"සෙලී"}
                 one{"සෙලී {0}"}
@@ -1985,6 +2110,26 @@
                 one{"ඩෙලී {0}"}
                 other{"ඩෙලී {0}"}
             }
+            dessert-spoon{
+                dnam{"අතුරුපස හැන්ද"}
+                one{"අතුරුපස හැඳි {0}"}
+                other{"අතුරුපස හැඳි {0}"}
+            }
+            dessert-spoon-imperial{
+                dnam{"ඉම්පීරියල් අතුරුපස හැන්ද"}
+                one{"ඉම්පී. අතුරුපස හැඳි {0}"}
+                other{"ඉම්පී. අතුරුපස හැඳි {0}"}
+            }
+            dram{
+                dnam{"ඩ්‍රූම තරල"}
+                one{"ඩ්‍රූම තරල {0}"}
+                other{"ඩ්‍රූම තරල {0}"}
+            }
+            drop{
+                dnam{"බින්දුව"}
+                one{"බින්දු {0}"}
+                other{"බින්දු {0}"}
+            }
             fluid-ounce{
                 dnam{"ද්‍රව අවු"}
                 one{"ද්‍රව අවු {0}"}
@@ -2012,6 +2157,11 @@
                 one{"හෙලී {0}"}
                 other{"හෙලී {0}"}
             }
+            jigger{
+                dnam{"තැටි වාහකය"}
+                one{"තැටි වාහක {0}"}
+                other{"තැටි වාහක {0}"}
+            }
             liter{
                 dnam{"ලීටර්"}
                 one{"ලී {0}"}
@@ -2028,6 +2178,11 @@
                 one{"මිලී {0}"}
                 other{"මිලී {0}"}
             }
+            pinch{
+                dnam{"ඩිංග"}
+                one{"ඩිංග {0}"}
+                other{"ඩිංග {0}"}
+            }
             pint{
                 dnam{"පයින්ට්"}
                 one{"පට් {0}"}
@@ -2043,6 +2198,11 @@
                 one{"ක්ට් {0}"}
                 other{"ක්ට් {0}"}
             }
+            quart-imperial{
+                dnam{"ඉම්පීරියල් නැළිය"}
+                one{"ඉම්පීරියල් නැළි {0}"}
+                other{"ඉම්පීරියල් නැළි {0}"}
+            }
             tablespoon{
                 dnam{"මේසහැදී"}
                 one{"මේසහැදී {0}"}
diff --git a/icu4c/source/data/unit/sk.txt b/icu4c/source/data/unit/sk.txt
index c153620..1db88a6 100644
--- a/icu4c/source/data/unit/sk.txt
+++ b/icu4c/source/data/unit/sk.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sk{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -551,6 +551,13 @@
             }
         }
         graphics{
+            dot{
+                dnam{"bod"}
+                few{"{0} body"}
+                many{"{0} bodu"}
+                one{"{0} bod"}
+                other{"{0} bodov"}
+            }
             dot-per-centimeter{
                 dnam{"body na centimeter"}
                 few{"{0} body na centimeter"}
@@ -617,6 +624,13 @@
                 one{"{0} decimeter"}
                 other{"{0} decimetrov"}
             }
+            fathom{
+                dnam{"siahy"}
+                few{"{0} siahy"}
+                many{"{0} siahy"}
+                one{"{0} siaha"}
+                other{"{0} siah"}
+            }
             foot{
                 dnam{"stopy"}
                 few{"{0} stopy"}
@@ -625,6 +639,13 @@
                 other{"{0} stôp"}
                 per{"{0} na stopu"}
             }
+            furlong{
+                dnam{"furlongy"}
+                few{"{0} furlongy"}
+                many{"{0} furlongu"}
+                one{"{0} furlong"}
+                other{"{0} furlongov"}
+            }
             inch{
                 dnam{"palce"}
                 few{"{0} palce"}
@@ -713,11 +734,11 @@
                 other{"{0} pikometrov"}
             }
             point{
-                dnam{"body"}
-                few{"{0} body"}
-                many{"{0} bodu"}
-                one{"{0} bod"}
-                other{"{0} bodov"}
+                dnam{"typografické body"}
+                few{"{0} typografické body"}
+                many{"{0} typografického bodu"}
+                one{"{0} typografický bod"}
+                other{"{0} typografických bodov"}
             }
             solar-radius{
                 dnam{"polomer Slnka"}
@@ -735,6 +756,20 @@
             }
         }
         light{
+            candela{
+                dnam{"kandely"}
+                few{"{0} kandely"}
+                many{"{0} kandely"}
+                one{"{0} kandela"}
+                other{"{0} kandel"}
+            }
+            lumen{
+                dnam{"lúmeny"}
+                few{"{0} lúmeny"}
+                many{"{0} lúmenu"}
+                one{"{0} lúmen"}
+                other{"{0} lúmenov"}
+            }
             lux{
                 dnam{"luxy"}
                 few{"{0} luxy"}
@@ -772,6 +807,13 @@
                 one{"{0} hmotnosť Zeme"}
                 other{"{0} hmotností Zeme"}
             }
+            grain{
+                dnam{"gran"}
+                few{"{0} grany"}
+                many{"{0} granu"}
+                one{"{0} gran"}
+                other{"{0} granov"}
+            }
             gram{
                 dnam{"gramy"}
                 few{"{0} gramy"}
@@ -1061,6 +1103,13 @@
                 one{"{0} barel"}
                 other{"{0} barelov"}
             }
+            bushel{
+                dnam{"bušle"}
+                few{"{0} bušle"}
+                many{"{0} bušla"}
+                one{"{0} bušel"}
+                other{"{0} bušlov"}
+            }
             centiliter{
                 dnam{"centilitre"}
                 few{"{0} centilitre"}
@@ -1140,6 +1189,34 @@
                 one{"{0} deciliter"}
                 other{"{0} decilitrov"}
             }
+            dessert-spoon{
+                dnam{"dezertné lyžičky"}
+                few{"{0} dezertné lyžičky"}
+                many{"{0} dezertnej lyžičky"}
+                one{"{0} dezertná lyžička"}
+                other{"{0} dezertných lyžičiek"}
+            }
+            dessert-spoon-imperial{
+                dnam{"britské dezertné lyžičky"}
+                few{"{0} britské dezertné lyžičky"}
+                many{"{0} britskej dezertnej lyžičky"}
+                one{"{0} britská dezertná lyžička"}
+                other{"{0} britských dezertných lyžičiek"}
+            }
+            dram{
+                dnam{"drachmy"}
+                few{"{0} drachmy"}
+                many{"{0} drachmy"}
+                one{"{0} drachma"}
+                other{"{0} drachiem"}
+            }
+            drop{
+                dnam{"kvapky"}
+                few{"{0} kvapky"}
+                many{"{0} kvapky"}
+                one{"{0} kvapka"}
+                other{"{0} kvapiek"}
+            }
             fluid-ounce{
                 dnam{"tekuté unce"}
                 few{"{0} tekuté unce"}
@@ -1177,6 +1254,13 @@
                 one{"{0} hektoliter"}
                 other{"{0} hektolitrov"}
             }
+            jigger{
+                dnam{"barmanské odmerky"}
+                few{"{0} barmanské odmerky"}
+                many{"{0} barmanskej odmerky"}
+                one{"{0} barmanská odmerka"}
+                other{"{0} barmanských odmeriek"}
+            }
             liter{
                 dnam{"litre"}
                 few{"{0} litre"}
@@ -1199,6 +1283,13 @@
                 one{"{0} mililiter"}
                 other{"{0} mililitrov"}
             }
+            pinch{
+                dnam{"štipky"}
+                few{"{0} štipky"}
+                many{"{0} štipky"}
+                one{"{0} štipka"}
+                other{"{0} štipiek"}
+            }
             pint{
                 dnam{"pinty"}
                 few{"{0} pinty"}
@@ -1220,6 +1311,13 @@
                 one{"{0} quart"}
                 other{"{0} quartov"}
             }
+            quart-imperial{
+                dnam{"britské kvarty"}
+                few{"{0} britské kvarty"}
+                many{"{0} britského kvartu"}
+                one{"{0} britský kvart"}
+                other{"{0} britských kvartov"}
+            }
             tablespoon{
                 dnam{"polievkové lyžice"}
                 few{"{0} polievkové lyžice"}
@@ -2509,6 +2607,13 @@
             }
         }
         graphics{
+            dot{
+                dnam{"bod"}
+                few{"{0} body"}
+                many{"{0} bodu"}
+                one{"{0} bod"}
+                other{"{0} bodov"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 few{"{0} dpcm"}
@@ -2582,6 +2687,13 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            fathom{
+                dnam{"fth"}
+                few{"{0} fth"}
+                many{"{0} fth"}
+                one{"{0} fth"}
+                other{"{0} fth"}
+            }
             foot{
                 dnam{"ft"}
                 few{"{0} ft"}
@@ -2590,6 +2702,13 @@
                 other{"{0} ft"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"fur"}
+                few{"{0} fur"}
+                many{"{0} fur"}
+                one{"{0} fur"}
+                other{"{0} fur"}
+            }
             inch{
                 dnam{"in"}
                 few{"{0} in"}
@@ -2700,6 +2819,20 @@
             }
         }
         light{
+            candela{
+                dnam{"cd"}
+                few{"{0} cd"}
+                many{"{0} cd"}
+                one{"{0} cd"}
+                other{"{0} cd"}
+            }
+            lumen{
+                dnam{"lm"}
+                few{"{0} lm"}
+                many{"{0} lm"}
+                one{"{0} lm"}
+                other{"{0} lm"}
+            }
             lux{
                 dnam{"lx"}
                 few{"{0} lx"}
@@ -2737,6 +2870,13 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"gran"}
+                few{"{0} grany"}
+                many{"{0} granu"}
+                one{"{0} gran"}
+                other{"{0} granov"}
+            }
             gram{
                 dnam{"g"}
                 few{"{0} g"}
@@ -3012,6 +3152,13 @@
                 one{"{0} bbl"}
                 other{"{0} bbl"}
             }
+            bushel{
+                dnam{"bu"}
+                few{"{0} bu"}
+                many{"{0} bu"}
+                one{"{0} bu"}
+                other{"{0} bu"}
+            }
             centiliter{
                 dnam{"cl"}
                 few{"{0} cl"}
@@ -3091,6 +3238,34 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"dstspn"}
+                few{"{0} dstspn"}
+                many{"{0} dstspn"}
+                one{"{0} dstspn"}
+                other{"{0} dstspn"}
+            }
+            dessert-spoon-imperial{
+                dnam{"dstspn Imp"}
+                few{"{0} dstspn Imp"}
+                many{"{0} dstspn Imp"}
+                one{"{0} dstspn Imp"}
+                other{"{0} dstspn Imp"}
+            }
+            dram{
+                dnam{"dr"}
+                few{"{0} dr"}
+                many{"{0} dr"}
+                one{"{0} dr"}
+                other{"{0} dr"}
+            }
+            drop{
+                dnam{"kvapky"}
+                few{"{0} kvapky"}
+                many{"{0} kvapky"}
+                one{"{0} kvapka"}
+                other{"{0} kvapiek"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 few{"{0} fl oz"}
@@ -3128,6 +3303,13 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"odmerky"}
+                few{"{0} odmerky"}
+                many{"{0} odmerky"}
+                one{"{0} odmerka"}
+                other{"{0} odmeriek"}
+            }
             liter{
                 dnam{"l"}
                 few{"{0} l"}
@@ -3150,6 +3332,13 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"štipky"}
+                few{"{0} štipky"}
+                many{"{0} štipky"}
+                one{"{0} štipka"}
+                other{"{0} štipiek"}
+            }
             pint{
                 dnam{"pt"}
                 few{"{0} pt"}
@@ -3171,6 +3360,13 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"qt Imp"}
+                few{"{0} qt Imp"}
+                many{"{0} qt Imp"}
+                one{"{0} qt Imp"}
+                other{"{0} qt Imp"}
+            }
             tablespoon{
                 dnam{"tbsp"}
                 few{"{0} tbsp"}
diff --git a/icu4c/source/data/unit/sl.txt b/icu4c/source/data/unit/sl.txt
index cbc1ff2..4c65009 100644
--- a/icu4c/source/data/unit/sl.txt
+++ b/icu4c/source/data/unit/sl.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sl{
-    Version{"37"}
     durationUnits{
         hm{"h.mm"}
         hms{"h.mm.ss"}
@@ -48,7 +48,7 @@
             }
             radian{
                 dnam{"radian"}
-                few{"{0} radianov"}
+                few{"{0} radiani"}
                 one{"{0} radian"}
                 other{"{0} radianov"}
                 two{"{0} radiana"}
@@ -172,21 +172,21 @@
             }
             percent{
                 dnam{"odstotek"}
-                few{"{0} %"}
+                few{"{0} odstotki"}
                 one{"{0} odstotek"}
                 other{"{0} odstotkov"}
-                two{"{0} %"}
+                two{"{0} odstotka"}
             }
             permille{
                 dnam{"promile"}
-                few{"{0} ‰"}
+                few{"{0} promili"}
                 one{"{0} promile"}
                 other{"{0} promilov"}
-                two{"{0} ‰"}
+                two{"{0} promila"}
             }
             permillion{
                 dnam{"delci na milijon"}
-                few{"{0} delcev na milijon"}
+                few{"{0} delci na milijon"}
                 one{"{0} delec na milijon"}
                 other{"{0} delcev na milijon"}
                 two{"{0} delca na milijon"}
@@ -208,14 +208,14 @@
             }
             liter-per-kilometer{
                 dnam{"litrov na kilometer"}
-                few{"{0} litrov na kilometer"}
+                few{"{0} litri na kilometer"}
                 one{"{0} liter na kilometer"}
                 other{"{0} litrov na kilometer"}
                 two{"{0} litra na kilometer"}
             }
             mile-per-gallon{
                 dnam{"milje na galono"}
-                few{"{0} milj na galono"}
+                few{"{0} milje na galono"}
                 one{"{0} milja na galono"}
                 other{"{0} milj na galono"}
                 two{"{0} milji na galono"}
@@ -238,7 +238,7 @@
         digital{
             bit{
                 dnam{"bit"}
-                few{"{0} bite"}
+                few{"{0} biti"}
                 one{"{0} bit"}
                 other{"{0} bitov"}
                 two{"{0} bita"}
@@ -294,10 +294,10 @@
             }
             petabyte{
                 dnam{"petabajti"}
-                few{"{0} PB"}
+                few{"{0} petabajti"}
                 one{"{0} petabajt"}
                 other{"{0} petabajtov"}
-                two{"{0} PB"}
+                two{"{0} petabajta"}
             }
             terabit{
                 dnam{"terabiti"}
@@ -534,6 +534,15 @@
                 two{"{0} megahertza"}
             }
         }
+        graphics{
+            dot{
+                dnam{"pika"}
+                few{"{0} pike"}
+                one{"{0} pika"}
+                other{"{0} pik"}
+                two{"{0} piki"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"astronomska enota"}
@@ -557,11 +566,19 @@
                 other{"{0} decimetrov"}
                 two{"{0} decimetra"}
             }
+            earth-radius{
+                dnam{"Zemljin polmer"}
+                few{"{0} Zemljini polmeri"}
+                one{"{0} Zemljin polmer"}
+                other{"{0} Zemljinih polmerov"}
+                two{"{0} Zemljina polmera"}
+            }
             fathom{
-                few{"{0} fth"}
-                one{"{0} fth"}
-                other{"{0} fth"}
-                two{"{0} fth"}
+                dnam{"sežnji"}
+                few{"{0} sežnji"}
+                one{"{0} seženj"}
+                other{"{0} sežnjev"}
+                two{"{0} sežnja"}
             }
             foot{
                 dnam{"čevlji"}
@@ -571,6 +588,13 @@
                 per{"{0} na čevelj"}
                 two{"{0} čevlja"}
             }
+            furlong{
+                dnam{"furlongi"}
+                few{"{0} furlongi"}
+                one{"{0} furlong"}
+                other{"{0} furlongov"}
+                two{"{0} furlonga"}
+            }
             inch{
                 dnam{"palec"}
                 few{"{0} palci"}
@@ -681,6 +705,20 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                few{"{0} kandele"}
+                one{"{0} kandela"}
+                other{"{0} kandel"}
+                two{"{0} kandeli"}
+            }
+            lumen{
+                dnam{"lumen"}
+                few{"{0} lumni"}
+                one{"{0} lumen"}
+                other{"{0} lumnov"}
+                two{"{0} lumna"}
+            }
             lux{
                 dnam{"luks"}
                 few{"{0} luksi"}
@@ -718,6 +756,13 @@
                 other{"{0} mas Zemlje"}
                 two{"{0} masi Zemlje"}
             }
+            grain{
+                dnam{"gran"}
+                few{"{0} grani"}
+                one{"{0} gran"}
+                other{"{0} granov"}
+                two{"{0} grana"}
+            }
             gram{
                 dnam{"grami"}
                 few{"{0} grami"}
@@ -785,6 +830,13 @@
                 other{"{0} mas sonca"}
                 two{"{0} masi sonca"}
             }
+            stone{
+                dnam{"stone"}
+                few{"{0} stoni"}
+                one{"{0} stone"}
+                other{"{0} stonov"}
+                two{"{0} stona"}
+            }
             ton{
                 dnam{"ameriške tone"}
                 few{"{0} ameriške tone"}
@@ -999,6 +1051,13 @@
                 other{"{0} sodčkov"}
                 two{"{0} sodčka"}
             }
+            bushel{
+                dnam{"bušel"}
+                few{"{0} bušli"}
+                one{"{0} bušel"}
+                other{"{0} bušlov"}
+                two{"{0} bušla"}
+            }
             centiliter{
                 dnam{"centilitri"}
                 few{"{0} centilitri"}
@@ -1078,6 +1137,34 @@
                 other{"{0} decilitrov"}
                 two{"{0} decilitra"}
             }
+            dessert-spoon{
+                dnam{"desertna žlička"}
+                few{"{0} desertne žličke"}
+                one{"{0} desertna žlička"}
+                other{"{0} desertnih žličk"}
+                two{"{0} desertni žlički"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Imp. desertna žlička"}
+                few{"{0} imp. desertne žličke"}
+                one{"{0} imp. desertna žlička"}
+                other{"{0} imp. desertnih žličk"}
+                two{"{0} imp. desertni žlički"}
+            }
+            dram{
+                dnam{"drahma"}
+                few{"{0} drahme"}
+                one{"{0} drahma"}
+                other{"{0} drahm"}
+                two{"{0} drahmi"}
+            }
+            drop{
+                dnam{"kapljica"}
+                few{"{0} kapljice"}
+                one{"{0} kapljica"}
+                other{"{0} kapljic"}
+                two{"{0} kapljici"}
+            }
             fluid-ounce{
                 dnam{"tekoče unče"}
                 few{"{0} tekoče unče"}
@@ -1094,7 +1181,7 @@
             }
             gallon{
                 dnam{"galone"}
-                few{"{0} galon"}
+                few{"{0} galone"}
                 one{"{0} galona"}
                 other{"{0} galon"}
                 per{"{0} na galono"}
@@ -1104,7 +1191,7 @@
                 dnam{"imperialna galona"}
                 few{"{0} imperialne galone"}
                 one{"{0} imperialna galona"}
-                other{"{0} imperialne galone"}
+                other{"{0} imperialnih galon"}
                 per{"{0} na imp. gal"}
                 two{"{0} imperialni galoni"}
             }
@@ -1115,6 +1202,13 @@
                 other{"{0} hektolitrov"}
                 two{"{0} hektolitra"}
             }
+            jigger{
+                dnam{"šilce"}
+                few{"{0} šilci"}
+                one{"{0} šilce"}
+                other{"{0} šilcev"}
+                two{"{0} šilca"}
+            }
             liter{
                 dnam{"litri"}
                 few{"{0} litri"}
@@ -1137,6 +1231,13 @@
                 other{"{0} militrov"}
                 two{"{0} mililitra"}
             }
+            pinch{
+                dnam{"ščepec"}
+                few{"{0} ščepci"}
+                one{"{0} ščepec"}
+                other{"{0} ščepcev"}
+                two{"{0} ščepca"}
+            }
             pint{
                 dnam{"pinte"}
                 few{"{0} pinte"}
@@ -1158,6 +1259,13 @@
                 other{"{0} četrtin"}
                 two{"{0} četrtini"}
             }
+            quart-imperial{
+                dnam{"Imp. kvart"}
+                few{"{0} imp. kvarti"}
+                one{"{0} imp. kvart"}
+                other{"{0} imp. kvartov"}
+                two{"{0} imp. kvarta"}
+            }
             tablespoon{
                 dnam{"jedilne žlice"}
                 few{"{0} jedilne žlice"}
@@ -1719,10 +1827,10 @@
         digital{
             bit{
                 dnam{"bit"}
-                few{"{0} bit"}
+                few{"{0} biti"}
                 one{"{0} bit"}
-                other{"{0} bit"}
-                two{"{0} bit"}
+                other{"{0} bitov"}
+                two{"{0} bita"}
             }
             byte{
                 dnam{"bajt"}
@@ -2030,6 +2138,13 @@
             }
         }
         graphics{
+            dot{
+                dnam{"pika"}
+                few{"{0} pike"}
+                one{"{0} pika"}
+                other{"{0} pik"}
+                two{"{0} piki"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 few{"{0} dpcm"}
@@ -2103,7 +2218,15 @@
                 other{"{0} dm"}
                 two{"{0} dm"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                few{"{0} R⊕"}
+                one{"{0} R⊕"}
+                other{"{0} R⊕"}
+                two{"{0} R⊕"}
+            }
             fathom{
+                dnam{"sežnji"}
                 few{"{0} fth"}
                 one{"{0} fth"}
                 other{"{0} fth"}
@@ -2117,6 +2240,13 @@
                 per{"{0}/ft"}
                 two{"{0} ft"}
             }
+            furlong{
+                dnam{"furlongi"}
+                few{"{0} fur"}
+                one{"{0} fur"}
+                other{"{0} fur"}
+                two{"{0} fur"}
+            }
             inch{
                 dnam{"in"}
                 few{"{0} in"}
@@ -2264,6 +2394,13 @@
                 other{"{0} M⊕"}
                 two{"{0} M⊕"}
             }
+            grain{
+                dnam{"gran"}
+                few{"{0} grani"}
+                one{"{0} gran"}
+                other{"{0} granov"}
+                two{"{0} grana"}
+            }
             gram{
                 dnam{"g"}
                 few{"{0} g"}
@@ -2331,6 +2468,13 @@
                 other{"{0} M☉"}
                 two{"{0} M☉"}
             }
+            stone{
+                dnam{"stone"}
+                few{"{0} st"}
+                one{"{0} st"}
+                other{"{0} st"}
+                two{"{0} st"}
+            }
             ton{
                 dnam{"sh tn"}
                 few{"{0} sh tn"}
@@ -2435,10 +2579,10 @@
             }
             millimeter-ofhg{
                 dnam{"mmHg"}
-                few{"{0} mmHG"}
-                one{"{0} mmHG"}
-                other{"{0} mmHG"}
-                two{"{0} mmHG"}
+                few{"{0} mmHg"}
+                one{"{0} mmHg"}
+                other{"{0} mmHg"}
+                two{"{0} mmHg"}
             }
             pascal{
                 dnam{"Pa"}
@@ -2546,6 +2690,13 @@
                 other{"{0} bbl"}
                 two{"{0} bbl"}
             }
+            bushel{
+                dnam{"bušel"}
+                few{"{0} bu"}
+                one{"{0} bu"}
+                other{"{0} bu"}
+                two{"{0} bu"}
+            }
             centiliter{
                 dnam{"cl"}
                 few{"{0} cl"}
@@ -2625,6 +2776,34 @@
                 other{"{0} dl"}
                 two{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"desertna žlička"}
+                few{"{0} desertne žličke"}
+                one{"{0} desertna žlička"}
+                other{"{0} desertnih žličk"}
+                two{"{0} desertni žlički"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Imp. desertna žlička"}
+                few{"{0} imp. desertne žličke"}
+                one{"{0} imp. desertna žlička"}
+                other{"{0} imp. desertnih žličk"}
+                two{"{0} imp. desertni žlički"}
+            }
+            dram{
+                dnam{"tekoča drahma"}
+                few{"{0} tekoče drahme"}
+                one{"{0} tekoča drahma"}
+                other{"{0} tekočih drahm"}
+                two{"{0} tekoči drahmi"}
+            }
+            drop{
+                dnam{"kapljica"}
+                few{"{0} kapljice"}
+                one{"{0} kapljica"}
+                other{"{0} kapljic"}
+                two{"{0} kapljici"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 few{"{0} fl oz"}
@@ -2662,6 +2841,13 @@
                 other{"{0} hl"}
                 two{"{0} hl"}
             }
+            jigger{
+                dnam{"šilce"}
+                few{"{0} šilci"}
+                one{"{0} šilce"}
+                other{"{0} šilcev"}
+                two{"{0} šilca"}
+            }
             liter{
                 dnam{"l"}
                 few{"{0} l"}
@@ -2684,6 +2870,13 @@
                 other{"{0} ml"}
                 two{"{0} ml"}
             }
+            pinch{
+                dnam{"ščepec"}
+                few{"{0} ščepci"}
+                one{"{0} ščepec"}
+                other{"{0} ščepcev"}
+                two{"{0} ščepca"}
+            }
             pint{
                 dnam{"pt"}
                 few{"{0} pt"}
@@ -2705,6 +2898,13 @@
                 other{"{0} qt"}
                 two{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"Imp. qt"}
+                few{"{0} imp. qt"}
+                one{"{0} imp. qt"}
+                other{"{0} imp. qt"}
+                two{"{0} imp. qt"}
+            }
             tablespoon{
                 dnam{"žlica"}
                 few{"{0} žlice"}
diff --git a/icu4c/source/data/unit/smn.txt b/icu4c/source/data/unit/smn.txt
index 6f52229..cf2a306 100644
--- a/icu4c/source/data/unit/smn.txt
+++ b/icu4c/source/data/unit/smn.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 smn{
-    Version{"37"}
     units{
         duration{
             day{
diff --git a/icu4c/source/data/unit/sn.txt b/icu4c/source/data/unit/sn.txt
index 96407c5..33c96eb 100644
--- a/icu4c/source/data/unit/sn.txt
+++ b/icu4c/source/data/unit/sn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/so.txt b/icu4c/source/data/unit/so.txt
index 13d0239..6c0b88f 100644
--- a/icu4c/source/data/unit/so.txt
+++ b/icu4c/source/data/unit/so.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 so{
-    Version{"37"}
     units{
         acceleration{
             g-force{
diff --git a/icu4c/source/data/unit/sq.txt b/icu4c/source/data/unit/sq.txt
index 15a9885..430fdc5 100644
--- a/icu4c/source/data/unit/sq.txt
+++ b/icu4c/source/data/unit/sq.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sq{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -408,6 +408,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"pika"}
+                one{"{0} pikë"}
+                other{"{0} pika"}
+            }
             dot-per-centimeter{
                 dnam{"pika për centimetër"}
                 one{"{0} pikë për centimetër"}
@@ -461,6 +466,11 @@
                 one{"{0} decimetër"}
                 other{"{0} decimetra"}
             }
+            earth-radius{
+                dnam{"rreze toke"}
+                one{"{0} rreze toke"}
+                other{"{0} rreze toke"}
+            }
             foot{
                 dnam{"këmbë"}
                 one{"{0} këmbë"}
@@ -547,6 +557,16 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                one{"{0} kandelë"}
+                other{"{0} kandela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                one{"{0} lumen"}
+                other{"{0} lumenë"}
+            }
             lux{
                 dnam{"luks"}
                 one{"{0} luks"}
@@ -832,6 +852,11 @@
                 one{"{0} decilitër"}
                 other{"{0} decilitra"}
             }
+            dram{
+                dnam{"drahma të lëngshme"}
+                one{"{0} drahmë i lëngshëm"}
+                other{"{0} drahma të lëngshme"}
+            }
             fluid-ounce{
                 dnam{"onsë të lëngshëm"}
                 one{"{0} ons i lëngshëm"}
@@ -1566,6 +1591,9 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            fathom{
+                dnam{"fth"}
+            }
             foot{
                 dnam{"këmbë"}
                 one{"{0} ft"}
@@ -1753,7 +1781,6 @@
                 other{"{0} hPa"}
             }
             inch-ofhg{
-                dnam{"inHg"}
                 one{"{0} inHg"}
                 other{"{0} inHg"}
             }
diff --git a/icu4c/source/data/unit/sr.txt b/icu4c/source/data/unit/sr.txt
index dcdc623..25196d5 100644
--- a/icu4c/source/data/unit/sr.txt
+++ b/icu4c/source/data/unit/sr.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -171,7 +171,7 @@
         }
         consumption{
             liter-per-100-kilometer{
-                dnam{"L/100km"}
+                dnam{"литри на 100 километара"}
                 few{"{0} литра на 100 километара"}
                 one{"{0} литар на 100 километара"}
                 other{"{0} литара на 100 километара"}
@@ -219,49 +219,49 @@
                 dnam{"гигабитови"}
                 few{"{0} гигабита"}
                 one{"{0} гигабит"}
-                other{"{0} гигабита"}
+                other{"{0} гигабитова"}
             }
             gigabyte{
                 dnam{"гигабајти"}
                 few{"{0} гигабајта"}
                 one{"{0} гигабајт"}
-                other{"{0} гигабајта"}
+                other{"{0} гигабајтова"}
             }
             kilobit{
                 dnam{"килобитови"}
                 few{"{0} килобита"}
                 one{"{0} килобит"}
-                other{"{0} килобита"}
+                other{"{0} килобитова"}
             }
             kilobyte{
                 dnam{"килобајти"}
                 few{"{0} килобајта"}
                 one{"{0} килобајт"}
-                other{"{0} килобајта"}
+                other{"{0} килобајтова"}
             }
             megabit{
                 dnam{"мегабитови"}
                 few{"{0} мегабита"}
                 one{"{0} мегабит"}
-                other{"{0} мегабита"}
+                other{"{0} мегабитова"}
             }
             megabyte{
                 dnam{"мегабајти"}
                 few{"{0} мегабајта"}
                 one{"{0} мегабајт"}
-                other{"{0} мегабајта"}
+                other{"{0} мегабајтова"}
             }
             petabyte{
                 dnam{"петабајти"}
                 few{"{0} петабајта"}
                 one{"{0} петабајт"}
-                other{"{0} петабајта"}
+                other{"{0} петабајтова"}
             }
             terabit{
                 dnam{"терабитови"}
                 few{"{0} терабита"}
                 one{"{0} терабит"}
-                other{"{0} терабита"}
+                other{"{0} терабитова"}
             }
             terabyte{
                 dnam{"терабајти"}
@@ -470,6 +470,14 @@
                 other{"{0} мегахерца"}
             }
         }
+        graphics{
+            dot{
+                dnam{"тачка"}
+                few{"{0} тачке"}
+                one{"{0} тачка"}
+                other{"{0} тачака"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"астрономске јединице"}
@@ -490,6 +498,18 @@
                 one{"{0} дециметар"}
                 other{"{0} дециметара"}
             }
+            earth-radius{
+                dnam{"полупречник Земље"}
+                few{"{0} R⊕"}
+                one{"{0} полупречник Земље"}
+                other{"{0} полупречника Земље"}
+            }
+            fathom{
+                dnam{"хвати"}
+                few{"{0} хвата"}
+                one{"{0} хват"}
+                other{"{0} хвати"}
+            }
             foot{
                 dnam{"стопе"}
                 few{"{0} стопе"}
@@ -497,6 +517,12 @@
                 other{"{0} стопа"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"фурлонзи"}
+                few{"{0} фурлонга"}
+                one{"{0} фурлонг"}
+                other{"{0} фурлонга"}
+            }
             inch{
                 dnam{"инчи"}
                 few{"{0} инча"}
@@ -592,6 +618,18 @@
             }
         }
         light{
+            candela{
+                dnam{"кандела"}
+                few{"{0} канделе"}
+                one{"{0} кандела"}
+                other{"{0} кандела"}
+            }
+            lumen{
+                dnam{"лумен"}
+                few{"{0} лумена"}
+                one{"{0} лумен"}
+                other{"{0} лумена"}
+            }
             lux{
                 dnam{"лукс"}
                 few{"{0} лукса"}
@@ -618,6 +656,12 @@
                 one{"{0} маса земље"}
                 other{"{0} маса земље"}
             }
+            grain{
+                dnam{"грејн"}
+                few{"{0} грејна"}
+                one{"{0} грејн"}
+                other{"{0} грејна"}
+            }
             gram{
                 dnam{"грами"}
                 few{"{0} грама"}
@@ -676,6 +720,12 @@
                 one{"{0} маса сунца"}
                 other{"{0} маса сунца"}
             }
+            stone{
+                dnam{"америчке тоне"}
+                few{"{0} америчке тоне"}
+                one{"{0} америчка тона"}
+                other{"{0} америчких тона"}
+            }
             ton{
                 dnam{"тоне"}
                 few{"{0} тоне"}
@@ -843,10 +893,10 @@
                 other{"{0} њутн-метара"}
             }
             pound-force-foot{
-                dnam{"фунта-фити"}
-                few{"{0} фунта-фита"}
-                one{"{0} фунта-фит"}
-                other{"{0} фунта-фита"}
+                dnam{"фунта-стопе"}
+                few{"{0} фунте силе стопе"}
+                one{"{0} фунта силе стопе"}
+                other{"{0} фунти силе стопе"}
             }
         }
         volume{
@@ -862,6 +912,12 @@
                 one{"{0} барел"}
                 other{"{0} барела"}
             }
+            bushel{
+                dnam{"бушели"}
+                few{"{0} бушела"}
+                one{"{0} бушел"}
+                other{"{0} бушела"}
+            }
             centiliter{
                 dnam{"центилитри"}
                 few{"{0} центилитра"}
@@ -930,6 +986,30 @@
                 one{"{0} децилитар"}
                 other{"{0} децилитара"}
             }
+            dessert-spoon{
+                dnam{"десертна кашичица"}
+                few{"{0} десертне кашичице"}
+                one{"{0} десертна кашичица"}
+                other{"{0} десертних кашичица"}
+            }
+            dessert-spoon-imperial{
+                dnam{"империјска десертна кашичица"}
+                few{"{0} империјске десертне кашичице"}
+                one{"{0} империјска десертна кашичица"}
+                other{"{0} империјских десертних кашичица"}
+            }
+            dram{
+                dnam{"драм течности"}
+                few{"{0} драма течности"}
+                one{"{0} драм течности"}
+                other{"{0} драма течности"}
+            }
+            drop{
+                dnam{"кап"}
+                few{"{0} капи"}
+                one{"{0} кап"}
+                other{"{0} капи"}
+            }
             fluid-ounce{
                 dnam{"унце течности"}
                 few{"{0} унце течности"}
@@ -962,6 +1042,12 @@
                 one{"{0} хектолитар"}
                 other{"{0} хектолитара"}
             }
+            jigger{
+                dnam{"џигер"}
+                few{"{0} џигера"}
+                one{"{0} џигер"}
+                other{"{0} џигера"}
+            }
             liter{
                 dnam{"литри"}
                 few{"{0} литра"}
@@ -981,6 +1067,12 @@
                 one{"{0} милилитар"}
                 other{"{0} милилитара"}
             }
+            pinch{
+                dnam{"прстохват"}
+                few{"{0} прстохвата"}
+                one{"{0} прстохват"}
+                other{"{0} прстохвата"}
+            }
             pint{
                 dnam{"пинте"}
                 few{"{0} пинте"}
@@ -999,6 +1091,12 @@
                 one{"{0} кварат"}
                 other{"{0} кварата"}
             }
+            quart-imperial{
+                dnam{"империјска четвртина"}
+                few{"{0} империјске четвртине"}
+                one{"{0} империјска четвртина"}
+                other{"{0} империјских четвртина"}
+            }
             tablespoon{
                 dnam{"кашике"}
                 few{"{0} кашике"}
@@ -1758,6 +1856,12 @@
             }
         }
         graphics{
+            dot{
+                dnam{"тачка"}
+                few{"{0} тачке"}
+                one{"{0} тачка"}
+                other{"{0} тачака"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 few{"{0} dpcm"}
@@ -1821,6 +1925,18 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                few{"{0} R⊕"}
+                one{"{0} R⊕"}
+                other{"{0} R⊕"}
+            }
+            fathom{
+                dnam{"хв"}
+                few{"{0} fth"}
+                one{"{0} fth"}
+                other{"{0} fth"}
+            }
             foot{
                 dnam{"ft"}
                 few{"{0} ft"}
@@ -1828,6 +1944,12 @@
                 other{"{0} ft"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"фурлонзи"}
+                few{"{0} fur"}
+                one{"{0} fur"}
+                other{"{0} fur"}
+            }
             inch{
                 dnam{"инчи"}
                 few{"{0} инча"}
@@ -1931,6 +2053,9 @@
                 one{"{0} CD"}
                 other{"{0} CD"}
             }
+            grain{
+                dnam{"грејн"}
+            }
             gram{
                 dnam{"грами"}
                 few{"{0} g"}
@@ -2205,6 +2330,15 @@
                 one{"{0} dL"}
                 other{"{0} dL"}
             }
+            dram{
+                dnam{"драм течности"}
+            }
+            drop{
+                dnam{"кап"}
+                few{"{0} капи"}
+                one{"{0} кап"}
+                other{"{0} капи"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 few{"{0} fl oz"}
@@ -2231,6 +2365,9 @@
                 one{"{0} hL"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"џигер"}
+            }
             liter{
                 dnam{"литри"}
                 few{"{0} l"}
@@ -2250,6 +2387,9 @@
                 one{"{0} mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"прстохват"}
+            }
             pint{
                 dnam{"pt"}
                 few{"{0} pt"}
diff --git a/icu4c/source/data/unit/sr_BA.txt b/icu4c/source/data/unit/sr_BA.txt
index edad17f..04f2efd 100644
--- a/icu4c/source/data/unit/sr_BA.txt
+++ b/icu4c/source/data/unit/sr_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_BA{
     "%%ALIAS"{"sr_Cyrl_BA"}
 }
diff --git a/icu4c/source/data/unit/sr_CS.txt b/icu4c/source/data/unit/sr_CS.txt
index 5f8becf..6a32f49 100644
--- a/icu4c/source/data/unit/sr_CS.txt
+++ b/icu4c/source/data/unit/sr_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_CS{
-    "%%ALIAS"{"sr_Cyrl_RS"}
+    "%%ALIAS"{"sr_RS"}
 }
diff --git a/icu4c/source/data/unit/sr_Cyrl.txt b/icu4c/source/data/unit/sr_Cyrl.txt
index df3a287..772d8b3 100644
--- a/icu4c/source/data/unit/sr_Cyrl.txt
+++ b/icu4c/source/data/unit/sr_Cyrl.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/sr_Cyrl_BA.txt b/icu4c/source/data/unit/sr_Cyrl_BA.txt
index 51e1655..67a6c16 100644
--- a/icu4c/source/data/unit/sr_Cyrl_BA.txt
+++ b/icu4c/source/data/unit/sr_Cyrl_BA.txt
@@ -1,8 +1,98 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-/**
- * generated alias target
- */
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_BA{
-    ___{""}
+    units{
+        duration{
+            century{
+                dnam{"вијекови"}
+                few{"{0} вијека"}
+                one{"{0} вијек"}
+                other{"{0} вијекова"}
+            }
+            month{
+                dnam{"мјесеци"}
+                few{"{0} мјесеца"}
+                one{"{0} мјесец"}
+                other{"{0} мјесеци"}
+                per{"{0} мјесечно"}
+            }
+            week{
+                dnam{"недјеље"}
+                few{"{0} недјеље"}
+                one{"{0} недјеља"}
+                other{"{0} недјеља"}
+                per{"{0} недјељно"}
+            }
+        }
+        length{
+            light-year{
+                dnam{"свјетлосне године"}
+                few{"{0} свјетлосне године"}
+                one{"{0} свјетлосна година"}
+                other{"{0} свјетлосних година"}
+            }
+        }
+        mass{
+            grain{
+                dnam{"гран"}
+                few{"{0} грана"}
+                one{"{0} гран"}
+                other{"{0} гранова"}
+            }
+        }
+    }
+    unitsNarrow{
+        volume{
+            barrel{
+                dnam{"bbl"}
+                few{"{0} bbl"}
+                one{"{0}bbl"}
+                other{"{0}bbl"}
+            }
+            dessert-spoon{
+                dnam{"д. каш."}
+                few{"{0} д. каш."}
+                one{"{0} д. каш."}
+                other{"{0} д. каш."}
+            }
+            dessert-spoon-imperial{
+                dnam{"и. д. к."}
+                few{"{0} и. д. к."}
+                one{"{0} и. д. к."}
+                other{"{0} и. д. к."}
+            }
+        }
+    }
+    unitsShort{
+        duration{
+            month{
+                dnam{"мјесеци"}
+                few{"{0} мјес."}
+                one{"{0} мјес."}
+                other{"{0} мјес."}
+            }
+        }
+        length{
+            light-year{
+                dnam{"свјетлосне год."}
+            }
+        }
+        mass{
+            grain{
+                dnam{"гран"}
+                few{"{0} грана"}
+                one{"{0} гран"}
+                other{"{0} гранова"}
+            }
+        }
+        volume{
+            dessert-spoon{
+                dnam{"dstspn"}
+                few{"{0} dstspn"}
+                one{"{0} dstspn"}
+                other{"{0} dstspn"}
+            }
+        }
+    }
 }
diff --git a/icu4c/source/data/unit/sr_Cyrl_CS.txt b/icu4c/source/data/unit/sr_Cyrl_CS.txt
index 9325e5a..2da82d2 100644
--- a/icu4c/source/data/unit/sr_Cyrl_CS.txt
+++ b/icu4c/source/data/unit/sr_Cyrl_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_CS{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/unit/sr_Cyrl_RS.txt b/icu4c/source/data/unit/sr_Cyrl_RS.txt
index 7ef8fab..c74b860 100644
--- a/icu4c/source/data/unit/sr_Cyrl_RS.txt
+++ b/icu4c/source/data/unit/sr_Cyrl_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/sr_Cyrl_XK.txt b/icu4c/source/data/unit/sr_Cyrl_XK.txt
index d7d4a86..c74bfee 100644
--- a/icu4c/source/data/unit/sr_Cyrl_XK.txt
+++ b/icu4c/source/data/unit/sr_Cyrl_XK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/sr_Cyrl_YU.txt b/icu4c/source/data/unit/sr_Cyrl_YU.txt
index 806d42c..5874f8c 100644
--- a/icu4c/source/data/unit/sr_Cyrl_YU.txt
+++ b/icu4c/source/data/unit/sr_Cyrl_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_YU{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/unit/sr_Latn.txt b/icu4c/source/data/unit/sr_Latn.txt
index d2a8760..ed8bb9e 100644
--- a/icu4c/source/data/unit/sr_Latn.txt
+++ b/icu4c/source/data/unit/sr_Latn.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn{
     %%Parent{"root"}
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -172,7 +172,7 @@
         }
         consumption{
             liter-per-100-kilometer{
-                dnam{"L/100km"}
+                dnam{"litri na 100 kilometara"}
                 few{"{0} litra na 100 kilometara"}
                 one{"{0} litar na 100 kilometara"}
                 other{"{0} litara na 100 kilometara"}
@@ -220,49 +220,49 @@
                 dnam{"gigabitovi"}
                 few{"{0} gigabita"}
                 one{"{0} gigabit"}
-                other{"{0} gigabita"}
+                other{"{0} gigabitova"}
             }
             gigabyte{
                 dnam{"gigabajti"}
                 few{"{0} gigabajta"}
                 one{"{0} gigabajt"}
-                other{"{0} gigabajta"}
+                other{"{0} gigabajtova"}
             }
             kilobit{
                 dnam{"kilobitovi"}
                 few{"{0} kilobita"}
                 one{"{0} kilobit"}
-                other{"{0} kilobita"}
+                other{"{0} kilobitova"}
             }
             kilobyte{
                 dnam{"kilobajti"}
                 few{"{0} kilobajta"}
                 one{"{0} kilobajt"}
-                other{"{0} kilobajta"}
+                other{"{0} kilobajtova"}
             }
             megabit{
                 dnam{"megabitovi"}
                 few{"{0} megabita"}
                 one{"{0} megabit"}
-                other{"{0} megabita"}
+                other{"{0} megabitova"}
             }
             megabyte{
                 dnam{"megabajti"}
                 few{"{0} megabajta"}
                 one{"{0} megabajt"}
-                other{"{0} megabajta"}
+                other{"{0} megabajtova"}
             }
             petabyte{
                 dnam{"petabajti"}
                 few{"{0} petabajta"}
                 one{"{0} petabajt"}
-                other{"{0} petabajta"}
+                other{"{0} petabajtova"}
             }
             terabit{
                 dnam{"terabitovi"}
                 few{"{0} terabita"}
                 one{"{0} terabit"}
-                other{"{0} terabita"}
+                other{"{0} terabitova"}
             }
             terabyte{
                 dnam{"terabajti"}
@@ -471,6 +471,13 @@
                 other{"{0} megaherca"}
             }
         }
+        graphics{
+            dot{
+                dnam{"tačka"}
+                few{"{0} tačke"}
+                one{"{0} tačka"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"astronomske jedinice"}
@@ -491,6 +498,17 @@
                 one{"{0} decimetar"}
                 other{"{0} decimetara"}
             }
+            earth-radius{
+                dnam{"poluprečnik Zemlje"}
+                one{"{0} poluprečnik Zemlje"}
+                other{"{0} poluprečnika Zemlje"}
+            }
+            fathom{
+                dnam{"hvati"}
+                few{"{0} hvata"}
+                one{"{0} hvat"}
+                other{"{0} hvati"}
+            }
             foot{
                 dnam{"stope"}
                 few{"{0} stope"}
@@ -498,6 +516,12 @@
                 other{"{0} stopa"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"furlonzi"}
+                few{"{0} furlonga"}
+                one{"{0} furlong"}
+                other{"{0} furlonga"}
+            }
             inch{
                 dnam{"inči"}
                 few{"{0} inča"}
@@ -593,6 +617,18 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                few{"{0} kandele"}
+                one{"{0} kandela"}
+                other{"{0} kandela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                few{"{0} lumena"}
+                one{"{0} lumen"}
+                other{"{0} lumena"}
+            }
             lux{
                 dnam{"luks"}
                 few{"{0} luksa"}
@@ -619,6 +655,12 @@
                 one{"{0} masa zemlje"}
                 other{"{0} masa zemlje"}
             }
+            grain{
+                dnam{"grejn"}
+                few{"{0} grejna"}
+                one{"{0} grejn"}
+                other{"{0} grejna"}
+            }
             gram{
                 dnam{"grami"}
                 few{"{0} grama"}
@@ -677,6 +719,12 @@
                 one{"{0} masa sunca"}
                 other{"{0} masa sunca"}
             }
+            stone{
+                dnam{"američke tone"}
+                few{"{0} američke tone"}
+                one{"{0} američka tona"}
+                other{"{0} američkih tona"}
+            }
             ton{
                 dnam{"tone"}
                 few{"{0} tone"}
@@ -844,10 +892,10 @@
                 other{"{0} njutn-metara"}
             }
             pound-force-foot{
-                dnam{"funta-fiti"}
-                few{"{0} funta-fita"}
-                one{"{0} funta-fit"}
-                other{"{0} funta-fita"}
+                dnam{"funta-stope"}
+                few{"{0} funte sile stope"}
+                one{"{0} funta sile stope"}
+                other{"{0} funti sile stope"}
             }
         }
         volume{
@@ -863,6 +911,12 @@
                 one{"{0} barel"}
                 other{"{0} barela"}
             }
+            bushel{
+                dnam{"bušeli"}
+                few{"{0} bušela"}
+                one{"{0} bušel"}
+                other{"{0} bušela"}
+            }
             centiliter{
                 dnam{"centilitri"}
                 few{"{0} centilitra"}
@@ -931,6 +985,30 @@
                 one{"{0} decilitar"}
                 other{"{0} decilitara"}
             }
+            dessert-spoon{
+                dnam{"desertna kašičica"}
+                few{"{0} desertne kašičice"}
+                one{"{0} desertna kašičica"}
+                other{"{0} desertnih kašičica"}
+            }
+            dessert-spoon-imperial{
+                dnam{"imperijska desertna kašičica"}
+                few{"{0} imperijske desertne kašičice"}
+                one{"{0} imperijska desertna kašičica"}
+                other{"{0} imperijskih desertnih kašičica"}
+            }
+            dram{
+                dnam{"dram tečnosti"}
+                few{"{0} drama tečnosti"}
+                one{"{0} dram tečnosti"}
+                other{"{0} drama tečnosti"}
+            }
+            drop{
+                dnam{"kap"}
+                few{"{0} kapi"}
+                one{"{0} kap"}
+                other{"{0} kapi"}
+            }
             fluid-ounce{
                 dnam{"unce tečnosti"}
                 few{"{0} unce tečnosti"}
@@ -963,6 +1041,12 @@
                 one{"{0} hektolitar"}
                 other{"{0} hektolitara"}
             }
+            jigger{
+                dnam{"džiger"}
+                few{"{0} džigera"}
+                one{"{0} džiger"}
+                other{"{0} džigera"}
+            }
             liter{
                 dnam{"litri"}
                 few{"{0} litra"}
@@ -982,6 +1066,12 @@
                 one{"{0} mililitar"}
                 other{"{0} mililitara"}
             }
+            pinch{
+                dnam{"prstohvat"}
+                few{"{0} prstohvata"}
+                one{"{0} prstohvat"}
+                other{"{0} prstohvata"}
+            }
             pint{
                 dnam{"pinte"}
                 few{"{0} pinte"}
@@ -1000,6 +1090,12 @@
                 one{"{0} kvarat"}
                 other{"{0} kvarata"}
             }
+            quart-imperial{
+                dnam{"imperijska četvrtina"}
+                few{"{0} imperijske četvrtine"}
+                one{"{0} imperijska četvrtina"}
+                other{"{0} imperijskih četvrtina"}
+            }
             tablespoon{
                 dnam{"kašike"}
                 few{"{0} kašike"}
@@ -1155,12 +1251,24 @@
                 one{"{0} cm"}
                 other{"{0} cm"}
             }
+            fathom{
+                dnam{"hv"}
+                few{"{0} fth"}
+                one{"{0} fth"}
+                other{"{0} fth"}
+            }
             foot{
                 dnam{"ft"}
                 few{"{0} ft"}
                 one{"{0} ft"}
                 other{"{0} ft"}
             }
+            furlong{
+                dnam{"furlonzi"}
+                few{"{0} fur"}
+                one{"{0} fur"}
+                other{"{0} fur"}
+            }
             inch{
                 few{"{0} inča"}
                 one{"{0} inč"}
@@ -1759,6 +1867,12 @@
             }
         }
         graphics{
+            dot{
+                dnam{"tačka"}
+                few{"{0} tačke"}
+                one{"{0} tačka"}
+                other{"{0} tačaka"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 other{"{0} dpcm"}
@@ -1808,6 +1922,18 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                few{"{0} R⊕"}
+                one{"{0} R⊕"}
+                other{"{0} R⊕"}
+            }
+            fathom{
+                dnam{"hv"}
+                few{"{0} fth"}
+                one{"{0} fth"}
+                other{"{0} fth"}
+            }
             foot{
                 dnam{"ft"}
                 few{"{0} ft"}
@@ -1815,6 +1941,12 @@
                 other{"{0} ft"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"furlonzi"}
+                few{"{0} fur"}
+                one{"{0} fur"}
+                other{"{0} fur"}
+            }
             inch{
                 dnam{"inči"}
                 few{"{0} inča"}
@@ -1918,6 +2050,9 @@
                 one{"{0} CD"}
                 other{"{0} CD"}
             }
+            grain{
+                dnam{"grejn"}
+            }
             gram{
                 dnam{"grami"}
                 few{"{0} g"}
@@ -2192,6 +2327,15 @@
                 one{"{0} dL"}
                 other{"{0} dL"}
             }
+            dram{
+                dnam{"dram tečnosti"}
+            }
+            drop{
+                dnam{"kap"}
+                few{"{0} kapi"}
+                one{"{0} kap"}
+                other{"{0} kapi"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 few{"{0} fl oz"}
@@ -2218,6 +2362,9 @@
                 one{"{0} hL"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"džiger"}
+            }
             liter{
                 dnam{"litri"}
                 few{"{0} l"}
@@ -2237,6 +2384,9 @@
                 one{"{0} mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"prstohvat"}
+            }
             pint{
                 dnam{"pt"}
                 few{"{0} pt"}
diff --git a/icu4c/source/data/unit/sr_Latn_BA.txt b/icu4c/source/data/unit/sr_Latn_BA.txt
index f4b62ac..f1791c5 100644
--- a/icu4c/source/data/unit/sr_Latn_BA.txt
+++ b/icu4c/source/data/unit/sr_Latn_BA.txt
@@ -1,8 +1,98 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-/**
- * generated alias target
- */
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_BA{
-    ___{""}
+    units{
+        duration{
+            century{
+                dnam{"vijekovi"}
+                few{"{0} vijeka"}
+                one{"{0} vijek"}
+                other{"{0} vijekova"}
+            }
+            month{
+                dnam{"mjeseci"}
+                few{"{0} mjeseca"}
+                one{"{0} mjesec"}
+                other{"{0} mjeseci"}
+                per{"{0} mjesečno"}
+            }
+            week{
+                dnam{"nedjelje"}
+                few{"{0} nedjelje"}
+                one{"{0} nedjelja"}
+                other{"{0} nedjelja"}
+                per{"{0} nedjeljno"}
+            }
+        }
+        length{
+            light-year{
+                dnam{"svjetlosne godine"}
+                few{"{0} svjetlosne godine"}
+                one{"{0} svjetlosna godina"}
+                other{"{0} svjetlosnih godina"}
+            }
+        }
+        mass{
+            grain{
+                dnam{"gran"}
+                few{"{0} grana"}
+                one{"{0} gran"}
+                other{"{0} granova"}
+            }
+        }
+    }
+    unitsNarrow{
+        volume{
+            barrel{
+                dnam{"bbl"}
+                few{"{0} bbl"}
+                one{"{0}bbl"}
+                other{"{0}bbl"}
+            }
+            dessert-spoon{
+                dnam{"d. kaš."}
+                few{"{0} d. kaš."}
+                one{"{0} d. kaš."}
+                other{"{0} d. kaš."}
+            }
+            dessert-spoon-imperial{
+                dnam{"i. d. k."}
+                few{"{0} i. d. k."}
+                one{"{0} i. d. k."}
+                other{"{0} i. d. k."}
+            }
+        }
+    }
+    unitsShort{
+        duration{
+            month{
+                dnam{"mjeseci"}
+                few{"{0} mjes."}
+                one{"{0} mjes."}
+                other{"{0} mjes."}
+            }
+        }
+        length{
+            light-year{
+                dnam{"svjetlosne god."}
+            }
+        }
+        mass{
+            grain{
+                dnam{"gran"}
+                few{"{0} grana"}
+                one{"{0} gran"}
+                other{"{0} granova"}
+            }
+        }
+        volume{
+            dessert-spoon{
+                dnam{"dstspn"}
+                few{"{0} dstspn"}
+                one{"{0} dstspn"}
+                other{"{0} dstspn"}
+            }
+        }
+    }
 }
diff --git a/icu4c/source/data/unit/sr_Latn_CS.txt b/icu4c/source/data/unit/sr_Latn_CS.txt
index 0952735..7204cfd 100644
--- a/icu4c/source/data/unit/sr_Latn_CS.txt
+++ b/icu4c/source/data/unit/sr_Latn_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_CS{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/unit/sr_Latn_ME.txt b/icu4c/source/data/unit/sr_Latn_ME.txt
index 4cc6fe9..489fd5a 100644
--- a/icu4c/source/data/unit/sr_Latn_ME.txt
+++ b/icu4c/source/data/unit/sr_Latn_ME.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/sr_Latn_RS.txt b/icu4c/source/data/unit/sr_Latn_RS.txt
index 76d38f8..8d63da6 100644
--- a/icu4c/source/data/unit/sr_Latn_RS.txt
+++ b/icu4c/source/data/unit/sr_Latn_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/sr_Latn_YU.txt b/icu4c/source/data/unit/sr_Latn_YU.txt
index 2747ab2..415a4d8 100644
--- a/icu4c/source/data/unit/sr_Latn_YU.txt
+++ b/icu4c/source/data/unit/sr_Latn_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_YU{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/unit/sr_ME.txt b/icu4c/source/data/unit/sr_ME.txt
index 32dc910..aa51626 100644
--- a/icu4c/source/data/unit/sr_ME.txt
+++ b/icu4c/source/data/unit/sr_ME.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_ME{
     "%%ALIAS"{"sr_Latn_ME"}
 }
diff --git a/icu4c/source/data/unit/sr_RS.txt b/icu4c/source/data/unit/sr_RS.txt
index 674ff77..84db469 100644
--- a/icu4c/source/data/unit/sr_RS.txt
+++ b/icu4c/source/data/unit/sr_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_RS{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/unit/sr_XK.txt b/icu4c/source/data/unit/sr_XK.txt
index 9628a27..0d3aa53 100644
--- a/icu4c/source/data/unit/sr_XK.txt
+++ b/icu4c/source/data/unit/sr_XK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_XK{
     "%%ALIAS"{"sr_Cyrl_XK"}
 }
diff --git a/icu4c/source/data/unit/sr_YU.txt b/icu4c/source/data/unit/sr_YU.txt
index 26563d0..2d67778 100644
--- a/icu4c/source/data/unit/sr_YU.txt
+++ b/icu4c/source/data/unit/sr_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_YU{
-    "%%ALIAS"{"sr_Cyrl_RS"}
+    "%%ALIAS"{"sr_RS"}
 }
diff --git a/icu4c/source/data/unit/su.txt b/icu4c/source/data/unit/su.txt
index 24e7e64..bd24e01 100644
--- a/icu4c/source/data/unit/su.txt
+++ b/icu4c/source/data/unit/su.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su{
-    Version{"37"}
     durationUnits{
         hm{"h.mm"}
         hms{"h.mm.ss"}
diff --git a/icu4c/source/data/unit/su_ID.txt b/icu4c/source/data/unit/su_ID.txt
index 67dde38..8da0f56 100644
--- a/icu4c/source/data/unit/su_ID.txt
+++ b/icu4c/source/data/unit/su_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su_ID{
     "%%ALIAS"{"su_Latn_ID"}
 }
diff --git a/icu4c/source/data/unit/su_Latn.txt b/icu4c/source/data/unit/su_Latn.txt
index 008b423..87ca4fa 100644
--- a/icu4c/source/data/unit/su_Latn.txt
+++ b/icu4c/source/data/unit/su_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/su_Latn_ID.txt b/icu4c/source/data/unit/su_Latn_ID.txt
index 4629832..d6b42f3 100644
--- a/icu4c/source/data/unit/su_Latn_ID.txt
+++ b/icu4c/source/data/unit/su_Latn_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/sv.txt b/icu4c/source/data/unit/sv.txt
index 46fd183..d5193ff 100644
--- a/icu4c/source/data/unit/sv.txt
+++ b/icu4c/source/data/unit/sv.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sv{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -10,9 +10,9 @@
     units{
         acceleration{
             g-force{
-                dnam{"gånger jordens gravitation"}
-                one{"{0} gånger jordens gravitation"}
-                other{"{0} gånger jordens gravitation"}
+                dnam{"g-kraft"}
+                one{"{0} g-kraft"}
+                other{"{0} g-kraft"}
             }
             meter-per-square-second{
                 dnam{"meter per kvadratsekund"}
@@ -363,6 +363,10 @@
                 one{"{0} kilowattimme"}
                 other{"{0} kilowattimmar"}
             }
+            therm-us{
+                one{"{0} am. therm"}
+                other{"{0} am. therms"}
+            }
         }
         force{
             newton{
@@ -399,6 +403,9 @@
             }
         }
         graphics{
+            dot{
+                dnam{"punkt"}
+            }
             dot-per-centimeter{
                 dnam{"bildpunkter per centimeter"}
                 one{"{0} bildpunkt per centimeter"}
@@ -415,17 +422,17 @@
             megapixel{
                 dnam{"megapixel"}
                 one{"{0} megapixel"}
-                other{"{0} megapixel"}
+                other{"{0} megapixlar"}
             }
             pixel{
-                dnam{"pixel"}
+                dnam{"pixlar"}
                 one{"{0} pixel"}
-                other{"{0} pixel"}
+                other{"{0} pixlar"}
             }
             pixel-per-centimeter{
-                dnam{"pixel per centimeter"}
+                dnam{"pixlar per centimeter"}
                 one{"{0} pixel per centimeter"}
-                other{"{0} pixel per centimeter"}
+                other{"{0} pixlar per centimeter"}
             }
             pixel-per-inch{
                 dnam{"pixel per tum"}
@@ -450,6 +457,11 @@
                 one{"{0} decimeter"}
                 other{"{0} decimeter"}
             }
+            earth-radius{
+                dnam{"jordradie"}
+                one{"{0} jordradie"}
+                other{"{0} jordradie"}
+            }
             fathom{
                 dnam{"famnar"}
                 one{"{0} famn"}
@@ -535,9 +547,9 @@
                 other{"{0} pt"}
             }
             solar-radius{
-                dnam{"gånger Solens radie"}
-                one{"{0} gånger Solens radie"}
-                other{"{0} gånger Solens radie"}
+                dnam{"solradier"}
+                one{"{0} solradie"}
+                other{"{0} solradier"}
             }
             yard{
                 dnam{"engelska yard"}
@@ -546,15 +558,25 @@
             }
         }
         light{
+            candela{
+                dnam{"candela"}
+                one{"{0} candela"}
+                other{"{0} candela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                one{"{0} lumen"}
+                other{"{0} lumen"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
                 other{"{0} lux"}
             }
             solar-luminosity{
-                dnam{"gånger Solens luminositet"}
-                one{"{0} gånger Solens luminositet"}
-                other{"{0} gånger Solens luminositet"}
+                dnam{"solluminositeter"}
+                one{"{0} solluminositet"}
+                other{"{0} solluminositeter"}
             }
         }
         mass{
@@ -569,9 +591,13 @@
                 other{"{0} dalton"}
             }
             earth-mass{
-                dnam{"gånger Jordens massa"}
-                one{"{0} gånger Jordens massa"}
-                other{"{0} gånger Jordens massa"}
+                dnam{"jordmassor"}
+                one{"{0} jordmassa"}
+                other{"{0} jordmassor"}
+            }
+            grain{
+                one{"{0} grain"}
+                other{"{0} grains"}
             }
             gram{
                 dnam{"gram"}
@@ -618,9 +644,9 @@
                 per{"{0} per pund"}
             }
             solar-mass{
-                dnam{"gånger Solens massa"}
-                one{"{0} gånger Solens massa"}
-                other{"{0} gånger Solens massa"}
+                dnam{"solmassor"}
+                one{"{0} solmassa"}
+                other{"{0} solmassor"}
             }
             stone{
                 dnam{"engelska stenar"}
@@ -775,9 +801,7 @@
                 other{"{0} engelska tunnland gånger fot"}
             }
             barrel{
-                dnam{"råoljetunnor"}
-                one{"{0} tunna"}
-                other{"{0} tunnor"}
+                dnam{"fat"}
             }
             bushel{
                 dnam{"skäppor"}
@@ -841,6 +865,25 @@
                 one{"{0} deciliter"}
                 other{"{0} deciliter"}
             }
+            dessert-spoon{
+                dnam{"dessertsked"}
+                one{"{0} dessertsked"}
+                other{"{0} dessertsked"}
+            }
+            dessert-spoon-imperial{
+                dnam{"brittisk dessertsked"}
+                one{"{0} brittiska dessertskedar"}
+                other{"{0} brittiska dessertskedar"}
+            }
+            dram{
+                one{"{0} brittisk dram"}
+                other{"{0} brittiska dramer"}
+            }
+            drop{
+                dnam{"droppe"}
+                one{"{0} droppe"}
+                other{"{0} droppe"}
+            }
             fluid-ounce{
                 dnam{"fluid ounces"}
                 one{"{0} fluid ounce"}
@@ -863,6 +906,11 @@
                 one{"{0} hektoliter"}
                 other{"{0} hektoliter"}
             }
+            jigger{
+                dnam{"mätglas"}
+                one{"{0} mätglas"}
+                other{"{0} mätglas"}
+            }
             liter{
                 dnam{"liter"}
                 one{"{0} liter"}
@@ -879,6 +927,9 @@
                 one{"{0} milliliter"}
                 other{"{0} milliliter"}
             }
+            pinch{
+                dnam{"nypa"}
+            }
             pint{
                 dnam{"pint"}
                 one{"{0} pint"}
@@ -894,6 +945,11 @@
                 one{"{0} quart"}
                 other{"{0} quart"}
             }
+            quart-imperial{
+                dnam{"br quart"}
+                one{"{0} brittisk quart"}
+                other{"{0} brittiska quarts"}
+            }
             tablespoon{
                 dnam{"matskedar"}
                 one{"{0} matsked"}
@@ -1225,6 +1281,10 @@
                 one{"{0}kWh"}
                 other{"{0}kWh"}
             }
+            therm-us{
+                one{"{0} am. therm"}
+                other{"{0} am. therm"}
+            }
         }
         force{
             newton{
@@ -1254,6 +1314,13 @@
                 other{"{0}MHz"}
             }
         }
+        graphics{
+            dot{
+                dnam{"pkt"}
+                one{"{0} pkt"}
+                other{"{0} pkt"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"AE"}
@@ -1641,6 +1708,25 @@
                 one{"{0}dL"}
                 other{"{0}dL"}
             }
+            dessert-spoon{
+                dnam{"dskd"}
+                one{"{0} dskd"}
+                other{"{0} dskd"}
+            }
+            dessert-spoon-imperial{
+                one{"{0} br. dsk"}
+                other{"{0} br. dsk"}
+            }
+            dram{
+                dnam{"fl. dram"}
+                one{"{0} fl. dram"}
+                other{"{0} fl. dram"}
+            }
+            drop{
+                dnam{"drp"}
+                one{"{0} drp"}
+                other{"{0} drp"}
+            }
             fluid-ounce{
                 dnam{"vätskeuns"}
                 one{"{0} v:euns"}
@@ -1654,8 +1740,8 @@
             }
             gallon-imperial{
                 dnam{"ämbar à 4,6L"}
-                one{"{0} äb·4,6L"}
-                other{"{0} äb·4,6L"}
+                one{"{0} äb·4,6 l"}
+                other{"{0} äb·4,6 l"}
                 per{"{0}/äb·4,6L"}
             }
             hectoliter{
@@ -1663,6 +1749,11 @@
                 one{"{0}hL"}
                 other{"{0}hL"}
             }
+            jigger{
+                dnam{"mätglas"}
+                one{"{0} mätglas"}
+                other{"{0} mätglas"}
+            }
             liter{
                 dnam{"liter"}
                 one{"{0} l"}
@@ -1709,7 +1800,7 @@
     unitsShort{
         acceleration{
             g-force{
-                dnam{"G"}
+                dnam{"g-kraft"}
                 one{"{0} G"}
                 other{"{0} G"}
             }
@@ -2048,6 +2139,11 @@
                 one{"{0} kWh"}
                 other{"{0} kWh"}
             }
+            therm-us{
+                dnam{"am. therm"}
+                one{"{0} am. therm"}
+                other{"{0} am. therms"}
+            }
         }
         force{
             newton{
@@ -2080,6 +2176,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"punkt"}
+                one{"{0} punkt"}
+                other{"{0} punkt"}
+            }
             dot-per-centimeter{
                 dnam{"d/cm"}
                 one{"{0} d/cm"}
@@ -2091,9 +2192,9 @@
                 other{"{0} d/tum"}
             }
             megapixel{
-                dnam{"Mpx"}
-                one{"{0} Mpx"}
-                other{"{0} Mpx"}
+                dnam{"mpx"}
+                one{"{0} mpx"}
+                other{"{0} mpx"}
             }
             pixel-per-centimeter{
                 dnam{"px/cm"}
@@ -2136,8 +2237,8 @@
             }
             furlong{
                 dnam{"eng. plogfårelgd"}
-                one{"{0} eng. plogfårelgd"}
-                other{"{0} eng. plogfårelgd"}
+                one{"{0} fur"}
+                other{"{0} fur"}
             }
             inch{
                 dnam{"tum"}
@@ -2214,6 +2315,11 @@
             }
         }
         light{
+            lumen{
+                dnam{"lm"}
+                one{"{0} lm"}
+                other{"{0} lm"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
@@ -2392,6 +2498,13 @@
                 other{"{0} K"}
             }
         }
+        torque{
+            newton-meter{
+                dnam{"Nm"}
+                one{"{0} Nm"}
+                other{"{0} Nm"}
+            }
+        }
         volume{
             acre-foot{
                 dnam{"eng. t:land·fot"}
@@ -2399,7 +2512,7 @@
                 other{"{0} eng. t:d·fot"}
             }
             barrel{
-                dnam{"råoljefat"}
+                dnam{"fat"}
                 one{"{0} fat"}
                 other{"{0} fat"}
             }
@@ -2465,6 +2578,21 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"des.sked"}
+                one{"{0} dsk"}
+                other{"{0} dsk"}
+            }
+            dessert-spoon-imperial{
+                dnam{"br. dsk"}
+                one{"br. dsk"}
+                other{"{0} br. dsk"}
+            }
+            drop{
+                dnam{"droppe"}
+                one{"{0} droppe"}
+                other{"{0} droppe"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -2487,6 +2615,11 @@
                 one{"{0} hl"}
                 other{"{0} hl"}
             }
+            jigger{
+                dnam{"mätglas"}
+                one{"{0} mätglas"}
+                other{"{0} mätglas"}
+            }
             liter{
                 dnam{"liter"}
                 one{"{0} l"}
@@ -2503,6 +2636,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"nypa"}
+                one{"{0} nypa"}
+                other{"{0} nypa"}
+            }
             pint{
                 dnam{"pint"}
                 one{"{0} pint"}
@@ -2518,6 +2656,11 @@
                 one{"{0} quart"}
                 other{"{0} quart"}
             }
+            quart-imperial{
+                dnam{"br. qt"}
+                one{"{0} br. qt"}
+                other{"{0} br. qt"}
+            }
             tablespoon{
                 dnam{"msk"}
                 one{"{0} msk"}
diff --git a/icu4c/source/data/unit/sv_FI.txt b/icu4c/source/data/unit/sv_FI.txt
index 3e6d460..51b02e6 100644
--- a/icu4c/source/data/unit/sv_FI.txt
+++ b/icu4c/source/data/unit/sv_FI.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sv_FI{
-    Version{"37"}
     unitsNarrow{
         speed{
             kilometer-per-hour{
diff --git a/icu4c/source/data/unit/sw.txt b/icu4c/source/data/unit/sw.txt
index c04340f..26cbbab 100644
--- a/icu4c/source/data/unit/sw.txt
+++ b/icu4c/source/data/unit/sw.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -64,10 +64,10 @@
                 other{"hekta {0}"}
             }
             square-centimeter{
-                dnam{"sentimita mraba"}
-                one{"sentimita mraba {0}"}
-                other{"sentimita mraba {0}"}
-                per{"{0} kwa kila sentimita mraba"}
+                dnam{"sentimita za mraba"}
+                one{"sentimita {0} ya mraba"}
+                other{"sentimita {0} za mraba"}
+                per{"{0} kwa kila sentimita ya mraba"}
             }
             square-foot{
                 dnam{"futi za mraba"}
@@ -90,13 +90,13 @@
                 dnam{"mita za mraba"}
                 one{"mita {0} ya mraba"}
                 other{"mita {0} za mraba"}
-                per{"{0} kwa kila mita mraba"}
+                per{"{0} kwa kila mita ya mraba"}
             }
             square-mile{
                 dnam{"maili za mraba"}
                 one{"maili {0} ya mraba"}
                 other{"maili {0} za mraba"}
-                per{"{0} kwa kila maili mraba"}
+                per{"{0} kwa kila maili ya mraba"}
             }
             square-yard{
                 dnam{"yadi za mraba"}
@@ -139,9 +139,9 @@
                 other{"{0} kwa kila elfu"}
             }
             permillion{
-                dnam{"ppm"}
-                one{"ppm {0}"}
-                other{"ppm {0}"}
+                dnam{"sehemu kwa kila milioni"}
+                one{"sehemu {0} kwa kila milioni"}
+                other{"sehemu {0} kwa kila milioni"}
             }
             permyriad{
                 dnam{"permyriadi"}
@@ -327,6 +327,11 @@
             }
         }
         energy{
+            british-thermal-unit{
+                dnam{"vipimo vya joto vya Uingereza"}
+                one{"kipimo {0} cha joto cha Uingereza"}
+                other{"vipimo {0} vya joto vya Uingereza"}
+            }
             calorie{
                 dnam{"kalori"}
                 one{"kalori {0}"}
@@ -403,6 +408,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"kitone"}
+                one{"kitone {0}"}
+                other{"vitone {0}"}
+            }
             dot-per-centimeter{
                 dnam{"vitone kwa kila sentimita"}
                 one{"kitone {0} kwa kila sentimita"}
@@ -456,12 +466,27 @@
                 one{"desimita {0}"}
                 other{"desimita {0}"}
             }
+            earth-radius{
+                dnam{"nusu kipenyo cha dunia"}
+                one{"nusu kipenyo cha dunia {0}"}
+                other{"nusu kipenyo cha dunia {0}"}
+            }
+            fathom{
+                dnam{"fathom"}
+                one{"fathom {0}"}
+                other{"fathom {0}"}
+            }
             foot{
                 dnam{"futi"}
                 one{"futi {0}"}
                 other{"futi {0}"}
                 per{"{0} kwa kila futi"}
             }
+            furlong{
+                dnam{"furlong"}
+                one{"furlong {0}"}
+                other{"furlong {0}"}
+            }
             inch{
                 dnam{"inchi"}
                 one{"inchi {0}"}
@@ -497,8 +522,8 @@
             }
             mile-scandinavian{
                 dnam{"maili ya skandinavia"}
-                one{"maili ya skandinavia"}
-                other{"{0} smi"}
+                one{"maili {0} ya skandinavia"}
+                other{"maili {0} za skandinavia"}
             }
             millimeter{
                 dnam{"milimita"}
@@ -530,6 +555,11 @@
                 one{"pointi {0}"}
                 other{"pointi {0}"}
             }
+            solar-radius{
+                dnam{"nusu vipenyo vya jua"}
+                one{"nusu kipenyo cha jua {0}"}
+                other{"nusu vipenyo vya jua {0}"}
+            }
             yard{
                 dnam{"yadi"}
                 one{"yadi {0}"}
@@ -537,11 +567,26 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                one{"kandela {0}"}
+                other{"kandela {0}"}
+            }
+            lumen{
+                dnam{"lumeni"}
+                one{"lumeni {0}"}
+                other{"lumeni {0}"}
+            }
             lux{
                 dnam{"lux"}
                 one{"lux {0}"}
                 other{"lux {0}"}
             }
+            solar-luminosity{
+                dnam{"ung’avu wa jua"}
+                one{"ung'avu wa jua {0}"}
+                other{"ung'avu wa jua {0}"}
+            }
         }
         mass{
             carat{
@@ -549,6 +594,21 @@
                 one{"karati {0}"}
                 other{"karati {0}"}
             }
+            dalton{
+                dnam{"daltoni"}
+                one{"daltoni {0}"}
+                other{"daltoni {0}"}
+            }
+            earth-mass{
+                dnam{"uzito wa dunia"}
+                one{"uzito wa dunia {0}"}
+                other{"uzito wa dunia {0}"}
+            }
+            grain{
+                dnam{"nafaka"}
+                one{"nafaka {0}"}
+                other{"nafaka {0}"}
+            }
             gram{
                 dnam{"gramu"}
                 one{"gramu {0}"}
@@ -593,10 +653,20 @@
                 other{"ratili {0}"}
                 per{"{0} kwa kila ratili"}
             }
+            solar-mass{
+                dnam{"uzito wa jua"}
+                one{"uzito wa jua {0}"}
+                other{"uzito wa jua {0}"}
+            }
+            stone{
+                dnam{"mawe"}
+                one{"jiwe {0}"}
+                other{"mawe {0}"}
+            }
             ton{
-                dnam{"tani"}
-                one{"tani {0}"}
-                other{"tani {0}"}
+                dnam{"tani fupi"}
+                one{"tani fupi {0}"}
+                other{"tani fupi {0}"}
             }
         }
         power{
@@ -750,6 +820,11 @@
                 one{"pipa {0}"}
                 other{"mapipa {0}"}
             }
+            bushel{
+                dnam{"busheli"}
+                one{"busheli {0}"}
+                other{"busheli {0}"}
+            }
             centiliter{
                 dnam{"sentilita"}
                 one{"sentilita {0}"}
@@ -807,11 +882,36 @@
                 one{"desilita {0}"}
                 other{"desilita {0}"}
             }
+            dessert-spoon{
+                dnam{"kijiko cha kitindamlo"}
+                one{"kijiko {0} cha kitindamlo"}
+                other{"vijiko {0} vya kitindamlo"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Kijiko cha kitindamlo cha Uingireza"}
+                one{"kijiko {0} cha kitindamlo cha Uingereza"}
+                other{"vijiko {0} vya kitindamlo vya Uingereza"}
+            }
+            dram{
+                dnam{"dramu"}
+                one{"dramu {0}"}
+                other{"dramu {0}"}
+            }
+            drop{
+                dnam{"tone"}
+                one{"tone {0}"}
+                other{"matone {0}"}
+            }
             fluid-ounce{
                 dnam{"aunsi za ujazo"}
                 one{"aunsi {0} ya ujazo"}
                 other{"aunsi {0} za ujazo"}
             }
+            fluid-ounce-imperial{
+                dnam{"aunsi za ujazo za Uingereza"}
+                one{"aunsi {0} ya ujazo ya Uingereza"}
+                other{"aunsi {0} za ujazo za Uingereza"}
+            }
             gallon{
                 dnam{"galoni"}
                 one{"galoni {0}"}
@@ -820,8 +920,8 @@
             }
             gallon-imperial{
                 dnam{"Imp. gal"}
-                one{"{0} gal Imp."}
-                other{"{0} gal Imp."}
+                one{"gal Imp. {0}"}
+                other{"gal Imp. {0}"}
                 per{"{0}/gal Imp."}
             }
             hectoliter{
@@ -829,6 +929,11 @@
                 one{"hektolita {0}"}
                 other{"hektolita {0}"}
             }
+            jigger{
+                dnam{"toti"}
+                one{"toti {0}"}
+                other{"toti {0}"}
+            }
             liter{
                 dnam{"lita"}
                 one{"lita {0}"}
@@ -845,6 +950,11 @@
                 one{"mililita {0}"}
                 other{"mililita {0}"}
             }
+            pinch{
+                dnam{"mfinyo kwa vidole"}
+                one{"mfinyo {0} kwa vidole"}
+                other{"mifinyo {0} kwa vidole"}
+            }
             pint{
                 dnam{"painti"}
                 one{"painti {0}"}
@@ -860,6 +970,11 @@
                 one{"kwati {0}"}
                 other{"kwati {0}"}
             }
+            quart-imperial{
+                dnam{"kwati ya Uingereza"}
+                one{"kwati {0} ya Uingereza"}
+                other{"kwati {0} za Uingereza"}
+            }
             tablespoon{
                 dnam{"vijiko vikubwa"}
                 one{"kijiko {0} kikubwa"}
@@ -932,8 +1047,8 @@
         consumption{
             liter-per-100-kilometer{
                 dnam{"lita kwa kilomita 100"}
-                one{"{0}L/100km"}
-                other{"{0}L/100km"}
+                one{"L/100km {0}"}
+                other{"L/100km {0}"}
             }
         }
         coordinate{
@@ -961,8 +1076,8 @@
             }
             minute{
                 dnam{"dakika"}
-                one{"dakika {0}"}
-                other{"dakika {0}"}
+                one{"dak {0}"}
+                other{"dak {0}"}
             }
             month{
                 dnam{"mwezi"}
@@ -971,8 +1086,8 @@
             }
             second{
                 dnam{"sekunde"}
-                one{"sekunde {0}"}
-                other{"sekunde {0}"}
+                one{"sek {0}"}
+                other{"sek {0}"}
             }
             week{
                 dnam{"wiki"}
@@ -993,8 +1108,8 @@
         length{
             centimeter{
                 dnam{"sentimita"}
-                one{"{0} cm"}
-                other{"{0} cm"}
+                one{"cm {0}"}
+                other{"cm {0}"}
             }
             foot{
                 one{"Futi {0}"}
@@ -1025,8 +1140,8 @@
             }
             millimeter{
                 dnam{"milimita"}
-                one{"{0} mm"}
-                other{"{0} mm"}
+                one{"mm {0}"}
+                other{"mm {0}"}
             }
             picometer{
                 one{"pm {0}"}
@@ -1185,7 +1300,7 @@
                 other{"hekta {0}"}
             }
             square-centimeter{
-                dnam{"sentimita mraba"}
+                dnam{"sentimita za mraba"}
                 one{"cm² {0}"}
                 other{"cm² {0}"}
                 per{"{0}/cm²"}
@@ -1209,20 +1324,20 @@
             }
             square-meter{
                 dnam{"mita za mraba"}
-                one{"mita {0} ya mraba"}
+                one{"m² {0}"}
                 other{"m² {0}"}
                 per{"{0}/m²"}
             }
             square-mile{
                 dnam{"maili za mraba"}
-                one{"maili {0} ya mraba"}
-                other{"maili {0} za mraba"}
+                one{"sq mi {0}"}
+                other{"sq mi {0}"}
                 per{"{0}/mi²"}
             }
             square-yard{
                 dnam{"yadi za mraba"}
-                one{"yadi {0} ya mraba"}
-                other{"yadi {0} za mraba"}
+                one{"yd² {0}"}
+                other{"yd² {0}"}
             }
         }
         compound{
@@ -1260,7 +1375,7 @@
                 other{"{0} kwa elfu"}
             }
             permillion{
-                dnam{"ppm"}
+                dnam{"sehemu kwa kila milioni"}
                 one{"ppm {0}"}
                 other{"ppm {0}"}
             }
@@ -1271,8 +1386,8 @@
         consumption{
             liter-per-100-kilometer{
                 dnam{"lita kwa kilomita 100"}
-                one{"lita {0} kwa kilomita 100"}
-                other{"lita {0}/km100"}
+                one{"lita {0}/km 100"}
+                other{"lita {0}/km 100"}
             }
             liter-per-kilometer{
                 dnam{"lita kwa kila kilomita"}
@@ -1281,13 +1396,13 @@
             }
             mile-per-gallon{
                 dnam{"maili kwa kila galoni"}
-                one{"{0} mpg"}
-                other{"{0} mpg"}
+                one{"mpg {0}"}
+                other{"mpg {0}"}
             }
             mile-per-gallon-imperial{
                 dnam{"mpg Imp."}
-                one{"{0} mpg Imp."}
-                other{"{0} mpg Imp."}
+                one{"mpg Imp. {0}"}
+                other{"mpg Imp. {0}"}
             }
         }
         coordinate{
@@ -1384,8 +1499,8 @@
             }
             millisecond{
                 dnam{"millisekunde"}
-                one{"millisekunde {0}"}
-                other{"millisekunde {0}"}
+                one{"ms {0}"}
+                other{"ms {0}"}
             }
             minute{
                 dnam{"dakika"}
@@ -1431,8 +1546,8 @@
             }
             milliampere{
                 dnam{"miliampea"}
-                one{"{0} mA"}
-                other{"{0} mA"}
+                one{"mA {0}"}
+                other{"mA {0}"}
             }
             ohm{
                 dnam{"ohm"}
@@ -1446,6 +1561,11 @@
             }
         }
         energy{
+            british-thermal-unit{
+                dnam{"BTU"}
+                one{"Btu {0}"}
+                other{"Btu {0}"}
+            }
             calorie{
                 dnam{"kalori"}
                 one{"kalori {0}"}
@@ -1453,6 +1573,8 @@
             }
             electronvolt{
                 dnam{"elektrovolti"}
+                one{"eV {0}"}
+                other{"eV {0}"}
             }
             foodcalorie{
                 dnam{"kalori"}
@@ -1476,8 +1598,8 @@
             }
             kilowatt-hour{
                 dnam{"kilowati kwa saa"}
-                one{"{0} kWh"}
-                other{"{0} kWh"}
+                one{"kWh {0}"}
+                other{"kWh {0}"}
             }
             therm-us{
                 dnam{"kipimo cha gesi, Marekani"}
@@ -1488,9 +1610,13 @@
         force{
             newton{
                 dnam{"newtoni"}
+                one{"N {0}"}
+                other{"N {0}"}
             }
             pound-force{
                 dnam{"paunikani"}
+                one{"lbf {0}"}
+                other{"lbf {0}"}
             }
         }
         frequency{
@@ -1516,6 +1642,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"kitone"}
+                one{"kitone {0}"}
+                other{"vitone {0}"}
+            }
             dot-per-centimeter{
                 one{"dpcm {0}"}
                 other{"dpcm {0}"}
@@ -1563,12 +1694,26 @@
                 one{"desimita {0}"}
                 other{"desimita {0}"}
             }
+            earth-radius{
+                one{"R⊕ {0}"}
+                other{"R⊕ {0}"}
+            }
+            fathom{
+                dnam{"fathom"}
+                one{"fth {0}"}
+                other{"fth {0}"}
+            }
             foot{
                 dnam{"futi"}
                 one{"futi {0}"}
                 other{"futi {0}"}
                 per{"{0} kwa kila futi"}
             }
+            furlong{
+                dnam{"furlong"}
+                one{"fur {0}"}
+                other{"fur {0}"}
+            }
             inch{
                 dnam{"inchi"}
                 one{"inchi {0}"}
@@ -1604,8 +1749,8 @@
             }
             mile-scandinavian{
                 dnam{"smi"}
-                one{"{0} smi"}
-                other{"{0} smi"}
+                one{"smi {0}"}
+                other{"smi {0}"}
             }
             millimeter{
                 dnam{"milimita"}
@@ -1624,8 +1769,8 @@
             }
             parsec{
                 dnam{"kila sekunde"}
-                one{"{0} pc"}
-                other{"{0} pc"}
+                one{"pc {0}"}
+                other{"pc {0}"}
             }
             picometer{
                 dnam{"pikomita"}
@@ -1637,6 +1782,11 @@
                 one{"pointi {0}"}
                 other{"pointi {0}"}
             }
+            solar-radius{
+                dnam{"nusu vipenyo vya jua"}
+                one{"R☉ {0}"}
+                other{"R☉ {0}"}
+            }
             yard{
                 dnam{"yadi"}
                 one{"yadi {0}"}
@@ -1644,11 +1794,24 @@
             }
         }
         light{
+            candela{
+                one{"cd {0}"}
+                other{"cd {0}"}
+            }
+            lumen{
+                one{"lm {0}"}
+                other{"lm {0}"}
+            }
             lux{
                 dnam{"lux"}
                 one{"lx {0}"}
                 other{"lx {0}"}
             }
+            solar-luminosity{
+                dnam{"ung’avu wa jua"}
+                one{"L☉ {0}"}
+                other{"L☉ {0}"}
+            }
         }
         mass{
             carat{
@@ -1656,6 +1819,21 @@
                 one{"karati {0}"}
                 other{"karati {0}"}
             }
+            dalton{
+                dnam{"daltoni"}
+                one{"Da {0}"}
+                other{"Da {0}"}
+            }
+            earth-mass{
+                dnam{"uzito wa dunia"}
+                one{"M⊕ {0}"}
+                other{"M⊕ {0}"}
+            }
+            grain{
+                dnam{"nafaka"}
+                one{"nafaka {0}"}
+                other{"nafaka {0}"}
+            }
             gram{
                 dnam{"gramu"}
                 one{"gramu {0}"}
@@ -1700,10 +1878,20 @@
                 other{"ratili {0}"}
                 per{"{0}/lb"}
             }
+            solar-mass{
+                dnam{"uzito wa jua"}
+                one{"M☉ {0}"}
+                other{"M☉ {0}"}
+            }
+            stone{
+                dnam{"mawe"}
+                one{"st {0}"}
+                other{"st {0}"}
+            }
             ton{
-                dnam{"tani"}
-                one{"tani {0}"}
-                other{"tani {0}"}
+                dnam{"tani fupi"}
+                one{"tani fupi {0}"}
+                other{"tani fupi {0}"}
             }
         }
         power{
@@ -1714,8 +1902,8 @@
             }
             horsepower{
                 dnam{"kipimo cha hospawa"}
-                one{"{0} hp"}
-                other{"{0} hp"}
+                one{"hp {0}"}
+                other{"hp {0}"}
             }
             kilowatt{
                 dnam{"kilowati"}
@@ -1756,8 +1944,8 @@
             }
             inch-ofhg{
                 dnam{"inchi za zebaki"}
-                one{"{0} inHg"}
-                other{"{0} inHg"}
+                one{"inHg {0}"}
+                other{"inHg {0}"}
             }
             kilopascal{
                 one{"kPa {0}"}
@@ -1774,8 +1962,8 @@
             }
             millimeter-ofhg{
                 dnam{"milimita za zebaki"}
-                one{"milimita {0} ya zebaki"}
-                other{"mm Hg {0}"}
+                one{"mmHg {0}"}
+                other{"mmHg {0}"}
             }
             pascal{
                 one{"Pa {0}"}
@@ -1800,13 +1988,13 @@
             }
             meter-per-second{
                 dnam{"mita kwa kila sekunde"}
-                one{"{0} m/s"}
-                other{"{0} m/s"}
+                one{"m/s {0}"}
+                other{"m/s {0}"}
             }
             mile-per-hour{
                 dnam{"maili kwa kila saa"}
-                one{"{0} mph"}
-                other{"{0} mph"}
+                one{"mph {0}"}
+                other{"mph {0}"}
             }
         }
         temperature{
@@ -1831,6 +2019,16 @@
                 other{"{0} K"}
             }
         }
+        torque{
+            newton-meter{
+                one{"N⋅m {0}"}
+                other{"N⋅m {0}"}
+            }
+            pound-force-foot{
+                one{"lbf⋅ft {0}"}
+                other{"lbf⋅ft {0}"}
+            }
+        }
         volume{
             acre-foot{
                 dnam{"ekari futi"}
@@ -1842,6 +2040,11 @@
                 one{"pipa {0}"}
                 other{"mapipa {0}"}
             }
+            bushel{
+                dnam{"busheli"}
+                one{"bu {0}"}
+                other{"bu {0}"}
+            }
             centiliter{
                 dnam{"sentilita"}
                 one{"sentilita {0}"}
@@ -1899,11 +2102,35 @@
                 one{"desilita {0}"}
                 other{"desilita {0}"}
             }
+            dessert-spoon{
+                one{"dstspn {0}"}
+                other{"dstspn {0}"}
+            }
+            dessert-spoon-imperial{
+                dnam{"dstspn Imp"}
+                one{"dstspn Imp {0}"}
+                other{"dstspn Imp {0}"}
+            }
+            dram{
+                dnam{"ujazo wa dramu"}
+                one{"ujazo wa dramu {0}"}
+                other{"ujazo wa dramu {0}"}
+            }
+            drop{
+                dnam{"tone"}
+                one{"tone {0}"}
+                other{"matone {0}"}
+            }
             fluid-ounce{
                 dnam{"aunsi za ujazo"}
                 one{"fl oz {0}"}
                 other{"fl oz {0}"}
             }
+            fluid-ounce-imperial{
+                dnam{"Imp. fl oz"}
+                one{"fl oz Imp. {0}"}
+                other{"fl oz Imp. {0}"}
+            }
             gallon{
                 dnam{"galoni"}
                 one{"galoni {0}"}
@@ -1912,8 +2139,8 @@
             }
             gallon-imperial{
                 dnam{"Imp. gal"}
-                one{"{0} gal Imp."}
-                other{"{0} gal Imp."}
+                one{"gal Imp. {0}"}
+                other{"gal Imp. {0}"}
                 per{"{0}/gal Imp."}
             }
             hectoliter{
@@ -1921,6 +2148,11 @@
                 one{"hektolita {0}"}
                 other{"hektolita {0}"}
             }
+            jigger{
+                dnam{"toti"}
+                one{"toti {0}"}
+                other{"toti {0}"}
+            }
             liter{
                 dnam{"lita"}
                 one{"lita {0}"}
@@ -1937,6 +2169,11 @@
                 one{"mililita {0}"}
                 other{"mililita {0}"}
             }
+            pinch{
+                dnam{"mfinyo kwa vidole"}
+                one{"mfinyo {0} kwa vidole"}
+                other{"mifinyo {0} kwa vidole"}
+            }
             pint{
                 dnam{"painti"}
                 one{"painti {0}"}
@@ -1952,15 +2189,20 @@
                 one{"kwati {0}"}
                 other{"kwati {0}"}
             }
+            quart-imperial{
+                dnam{"qt Imp"}
+                one{"qt Imp. {0}"}
+                other{"qt Imp. {0}"}
+            }
             tablespoon{
                 dnam{"vijiko vikubwa"}
-                one{"kijiko {0} kikubwa"}
-                other{"vijiko {0} vikubwa"}
+                one{"tbsp {0}"}
+                other{"tbsp {0}"}
             }
             teaspoon{
                 dnam{"vijiko vidogo"}
-                one{"kijiko {0} kidogo"}
-                other{"vijiko {0} vidogo"}
+                one{"tsp {0}"}
+                other{"tsp {0}"}
             }
         }
     }
diff --git a/icu4c/source/data/unit/sw_KE.txt b/icu4c/source/data/unit/sw_KE.txt
index 0245864..bd6be0b 100644
--- a/icu4c/source/data/unit/sw_KE.txt
+++ b/icu4c/source/data/unit/sw_KE.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw_KE{
-    Version{"37"}
     units{
         duration{
             decade{
@@ -42,12 +42,7 @@
                 one{"maikromita {0}"}
                 other{"maikromita {0}"}
             }
-            mile-scandinavian{
-                one{"maili {0} ya skandinavia"}
-                other{"maili {0} za skandinavia"}
-            }
             solar-radius{
-                dnam{"nusu vipenyo vya jua"}
                 one{"nusu kipenyo {0} cha jua"}
                 other{"nusu vipenyo {0} vya jua"}
             }
@@ -106,19 +101,10 @@
                 one{"maikromita {0}"}
                 other{"maikromita {0}"}
             }
-            mile-scandinavian{
-                one{"smi {0}"}
-                other{"smi {0}"}
-            }
             parsec{
-                one{"{0} pc"}
+                one{"pc {0}"}
                 other{"kila sekunde {0}"}
             }
-            solar-radius{
-                dnam{"nusu vipenyo vya jua"}
-                one{"R☉ {0}"}
-                other{"R☉ {0}"}
-            }
         }
         pressure{
             bar{
@@ -126,9 +112,9 @@
                 one{"baa {0}"}
                 other{"baa {0}"}
             }
-            inch-ofhg{
-                one{"inHg {0}"}
-                other{"inHg {0}"}
+            millimeter-ofhg{
+                one{"mmHg {0}"}
+                other{"mm Hg {0}"}
             }
         }
     }
diff --git a/icu4c/source/data/unit/ta.txt b/icu4c/source/data/unit/ta.txt
index 7c25bc3..c365792 100644
--- a/icu4c/source/data/unit/ta.txt
+++ b/icu4c/source/data/unit/ta.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ta{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -408,6 +408,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"புள்ளி"}
+                one{"{0}புள்ளி"}
+                other{"{0}புள்ளி"}
+            }
             dot-per-centimeter{
                 dnam{"புள்ளிகள் / சென்டிமீட்டர்"}
                 one{"{0} புள்ளி / சென்டிமீட்டர்"}
@@ -461,12 +466,27 @@
                 one{"{0} டெசிமீட்டர்"}
                 other{"{0} டெசிமீட்டர்கள்"}
             }
+            earth-radius{
+                dnam{"புவி ஆரம்"}
+                one{"{0} புவி ஆரம்"}
+                other{"{0} புவி ஆரம்"}
+            }
+            fathom{
+                dnam{"ஃபேதம்கள்"}
+                one{"{0} ஃபேதம்"}
+                other{"{0} ஃபேதம்கள்"}
+            }
             foot{
                 dnam{"அடி"}
                 one{"{0} அடி"}
                 other{"{0} அடி"}
                 per{"{0}/அடி"}
             }
+            furlong{
+                dnam{"பர்லாங்குகள்"}
+                one{"{0} பர்லாங்கு"}
+                other{"{0} பர்லாங்குகள்"}
+            }
             inch{
                 dnam{"அங்குலங்கள்"}
                 one{"{0} அங்குலம்"}
@@ -547,6 +567,16 @@
             }
         }
         light{
+            candela{
+                dnam{"கேண்டலா"}
+                one{"{0} கேண்டலா"}
+                other{"{0} கேண்டலா"}
+            }
+            lumen{
+                dnam{"லூமன்"}
+                one{"{0} லூமன்"}
+                other{"{0} லூமன்"}
+            }
             lux{
                 dnam{"லக்ஸ்"}
                 one{"{0} லக்ஸ்"}
@@ -574,6 +604,11 @@
                 one{"{0} புவித் திணிவு"}
                 other{"{0} புவித் திணிவுகள்"}
             }
+            grain{
+                dnam{"கிரைன்"}
+                one{"{0} கிரைன்"}
+                other{"{0} கிரைன்"}
+            }
             gram{
                 dnam{"கிராம்கள்"}
                 one{"{0} கிராம்"}
@@ -785,6 +820,11 @@
                 one{"{0} பீப்பாய்"}
                 other{"{0} பீப்பாய்கள்"}
             }
+            bushel{
+                dnam{"புசல்கள்"}
+                one{"{0} புசல்"}
+                other{"{0} புசல்கள்"}
+            }
             centiliter{
                 dnam{"சென்டிலிட்டர்கள்"}
                 one{"{0} சென்டிலிட்டர்"}
@@ -842,6 +882,26 @@
                 one{"{0} டெசிலிட்டர்"}
                 other{"{0} டெசிலிட்டர்கள்"}
             }
+            dessert-spoon{
+                dnam{"இனிப்புக் கரண்டி"}
+                one{"{0} இனிப்புக் கரண்டி"}
+                other{"{0} இனிப்புக் கரண்டி"}
+            }
+            dessert-spoon-imperial{
+                dnam{"இம்பீரியல் இனிப்புக் கரண்டி"}
+                one{"{0} இம்பீரியல் இனிப்புக் கரண்டி"}
+                other{"{0} இம்பீரியல் இனிப்புக் கரண்டி"}
+            }
+            dram{
+                dnam{"டிராம்"}
+                one{"{0} டிராம்"}
+                other{"{0} டிராம்"}
+            }
+            drop{
+                dnam{"துளி"}
+                one{"{0} துளி"}
+                other{"{0} துளி"}
+            }
             fluid-ounce{
                 dnam{"திரவ அவுன்ஸ்"}
                 one{"{0} திரவ அவுன்ஸ்"}
@@ -869,6 +929,11 @@
                 one{"{0} ஹெக்டோலிட்டர்"}
                 other{"{0} ஹெக்டோலிட்டர்கள்"}
             }
+            jigger{
+                dnam{"ஜிகர்"}
+                one{"{0} ஜிகர்"}
+                other{"{0} ஜிகர்"}
+            }
             liter{
                 dnam{"லிட்டர்கள்"}
                 one{"{0} லிட்டர்"}
@@ -885,6 +950,11 @@
                 one{"{0} மில்லிலிட்டர்"}
                 other{"{0} மில்லிலிட்டர்கள்"}
             }
+            pinch{
+                dnam{"சிட்டிகை"}
+                one{"{0} சிட்டிகை"}
+                other{"{0} சிட்டிகை"}
+            }
             pint{
                 dnam{"பின்ட்கள்"}
                 one{"{0} பின்ட்"}
@@ -900,6 +970,11 @@
                 one{"{0} குவார்ட்"}
                 other{"{0} குவார்ட்ஸ்"}
             }
+            quart-imperial{
+                dnam{"இம்பீரியல் குவார்ட்"}
+                one{"{0} இம்பீரியல் குவார்ட்"}
+                other{"{0} இம்பீரியல் குவார்ட்"}
+            }
             tablespoon{
                 dnam{"மேஜைக்கரண்டி"}
                 one{"{0} மேஜைக்கரண்டி"}
@@ -1618,6 +1693,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"புள்ளி"}
+                one{"{0} புள்ளி"}
+                other{"{0} புள்ளி"}
+            }
             dot-per-centimeter{
                 dnam{"பு / செ.மீ"}
                 one{"{0} பு / செ.மீ"}
@@ -1671,12 +1751,22 @@
                 one{"{0} டெ.மீ"}
                 other{"{0} டெ.மீ"}
             }
+            fathom{
+                dnam{"ஃபே."}
+                one{"{0} ஃபே."}
+                other{"{0} ஃபே."}
+            }
             foot{
                 dnam{"அடி"}
                 one{"{0} அடி"}
                 other{"{0} அடி"}
                 per{"{0}/அடி"}
             }
+            furlong{
+                dnam{"பர்"}
+                one{"{0} பர்"}
+                other{"{0} பர்"}
+            }
             inch{
                 dnam{"அங்குலங்கள்"}
                 one{"{0} அங்."}
@@ -1755,6 +1845,16 @@
             }
         }
         light{
+            candela{
+                dnam{"கேண்ட."}
+                one{"{0} கேண்ட."}
+                other{"{0} கேண்ட."}
+            }
+            lumen{
+                dnam{"லூம."}
+                one{"{0} லூம."}
+                other{"{0} லூம."}
+            }
             lux{
                 dnam{"லக்ஸ்"}
                 one{"{0} லக்."}
@@ -1772,10 +1872,17 @@
             }
             dalton{
                 dnam{"டால்ட்டன்ஸ்"}
+                one{"{0} டா."}
+                other{"{0} டா."}
             }
             earth-mass{
                 dnam{"புவித் திணிவுகள்"}
             }
+            grain{
+                dnam{"கிரைன்"}
+                one{"{0} கிரைன்"}
+                other{"{0} கிரைன்"}
+            }
             gram{
                 dnam{"கிராம்கள்"}
                 one{"{0} கி."}
@@ -1982,6 +2089,13 @@
             }
             barrel{
                 dnam{"பீப்பாய்"}
+                one{"{0} பீப்."}
+                other{"{0} பீப்."}
+            }
+            bushel{
+                dnam{"புசல்கள்"}
+                one{"{0} புச."}
+                other{"{0} புச."}
             }
             centiliter{
                 dnam{"செ.லி."}
@@ -2040,11 +2154,36 @@
                 one{"{0} டெ.லி."}
                 other{"{0} டெ.லி."}
             }
+            dessert-spoon{
+                dnam{"இ.க."}
+                one{"{0} இ.க."}
+                other{"{0} இ.க."}
+            }
+            dessert-spoon-imperial{
+                dnam{"இ.க. இம்பீ."}
+                one{"{0} இ.க. இம்பீ."}
+                other{"{0} இ.க. இம்பீ."}
+            }
+            dram{
+                dnam{"டிரா.தி."}
+                one{"{0} டிரா.தி."}
+                other{"{0} டிரா.தி."}
+            }
+            drop{
+                dnam{"துளி"}
+                one{"{0} துளி"}
+                other{"{0} துளி"}
+            }
             fluid-ounce{
                 dnam{"தி. அவு."}
                 one{"{0} தி. அவு."}
                 other{"{0} தி. அவு."}
             }
+            fluid-ounce-imperial{
+                dnam{"இம்பீ. தி. அவு."}
+                one{"{0} தி. அவு. இம்பீ."}
+                other{"{0} தி. அவு. இம்பீ."}
+            }
             gallon{
                 dnam{"கேல."}
                 one{"{0} கேல."}
@@ -2062,6 +2201,11 @@
                 one{"{0} ஹெ.லி."}
                 other{"{0} ஹெ.லி."}
             }
+            jigger{
+                dnam{"ஜிக."}
+                one{"{0} ஜிக."}
+                other{"{0} ஜிக."}
+            }
             liter{
                 dnam{"லிட்டர்கள்"}
                 one{"{0} லி."}
@@ -2078,6 +2222,11 @@
                 one{"{0} மிலி"}
                 other{"{0} மிலி"}
             }
+            pinch{
+                dnam{"சிட்டி"}
+                one{"{0} சிட்டி"}
+                other{"{0} சிட்டி"}
+            }
             pint{
                 dnam{"பின்ட்கள்"}
                 one{"{0} பின்."}
@@ -2093,6 +2242,11 @@
                 one{"{0} குவாட்."}
                 other{"{0} குவாட்."}
             }
+            quart-imperial{
+                dnam{"குவாட். இம்பீ."}
+                one{"{0} குவாட். இம்பீ."}
+                other{"{0} குவாட். இம்பீ."}
+            }
             tablespoon{
                 dnam{"மே.க."}
                 one{"{0} மே.க."}
diff --git a/icu4c/source/data/unit/te.txt b/icu4c/source/data/unit/te.txt
index 30b93ba..aed2c5f 100644
--- a/icu4c/source/data/unit/te.txt
+++ b/icu4c/source/data/unit/te.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 te{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -408,6 +408,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"బిందువు"}
+                one{"{0} బిందువు"}
+                other{"{0} బిందువు"}
+            }
             dot-per-centimeter{
                 dnam{"బిందువులు ప్రతి సెంటిమీటరుకు"}
                 one{"{0} బిందువు ప్రతి సెంటిమీటరుకు"}
@@ -418,6 +423,10 @@
                 one{"{0} బిందువు ప్రతి అంగుళానికి"}
                 other{"{0} బిందువులు ప్రతి అంగుళానికి"}
             }
+            em{
+                one{"{0} em"}
+                other{"{0} emలు"}
+            }
             megapixel{
                 dnam{"మెగా పిక్సెల్స్"}
                 one{"{0} మెగా పిక్సెల్స్"}
@@ -425,7 +434,7 @@
             }
             pixel{
                 dnam{"పిక్సెల్స్"}
-                one{"{0} px"}
+                one{"{0} పిక్సెల్"}
                 other{"{0} పిక్సెల్స్"}
             }
             pixel-per-centimeter{
@@ -456,12 +465,27 @@
                 one{"{0} డెసిమీటరు"}
                 other{"{0} డెసిమీటర్లు"}
             }
+            earth-radius{
+                dnam{"భూమి వ్యాసార్ధం"}
+                one{"{0} భూమి వ్యాసార్ధం"}
+                other{"{0} భూమి వ్యాసార్ధం"}
+            }
+            fathom{
+                dnam{"వ్యామము"}
+                one{"{0} వ్యామము"}
+                other{"{0} వ్యామములు"}
+            }
             foot{
                 dnam{"అడుగులు"}
                 one{"{0} అడుగు"}
                 other{"{0} అడుగులు"}
                 per{"అడుగుకి {0}"}
             }
+            furlong{
+                dnam{"ఫర్లాంగులు"}
+                one{"{0} ఫర్లాంగు"}
+                other{"{0} ఫర్లాంగులు"}
+            }
             inch{
                 dnam{"అంగుళాలు"}
                 one{"{0} అంగుళం"}
@@ -542,6 +566,16 @@
             }
         }
         light{
+            candela{
+                dnam{"క్యాడెలా"}
+                one{"{0} క్యాడెలా"}
+                other{"{0} క్యాడెలా"}
+            }
+            lumen{
+                dnam{"లుమెన్"}
+                one{"{0} లుమెన్"}
+                other{"{0} లుమెన్"}
+            }
             lux{
                 dnam{"లక్స్"}
                 one{"{0} లక్స్"}
@@ -569,6 +603,11 @@
                 one{"{0} భూమి ద్రవ్యరాశి"}
                 other{"{0} భూమి ద్రవ్యరాశులు"}
             }
+            grain{
+                dnam{"ధాన్యము"}
+                one{"{0} ధాన్యము"}
+                other{"{0} ధాన్యము"}
+            }
             gram{
                 dnam{"గ్రాములు"}
                 one{"{0} గ్రాము"}
@@ -780,6 +819,11 @@
                 one{"{0} బారెల్‌లు"}
                 other{"{0} బారెల్‌లు"}
             }
+            bushel{
+                dnam{"బుషెల్"}
+                one{"{0} బుషెల్"}
+                other{"{0} బుషెల్‌లు"}
+            }
             centiliter{
                 dnam{"సెంటీలీటర్లు"}
                 one{"{0} సెంటీలీటరు"}
@@ -837,6 +881,26 @@
                 one{"{0} డెసిలీటరు"}
                 other{"{0} డెసిలీటర్లు"}
             }
+            dessert-spoon{
+                dnam{"డెసర్ట్ స్పూన్"}
+                one{"{0} డెసర్ట్ స్పూన్"}
+                other{"{0} డెసర్ట్ స్పూన్"}
+            }
+            dessert-spoon-imperial{
+                dnam{"ఇంపీరియల్ డెసర్ట్ స్పూన్"}
+                one{"{0} ఇంపీరియల్ డెసర్ట్ స్పూన్"}
+                other{"{0} ఇంపీరియల్ డెసర్ట్ స్పూన్"}
+            }
+            dram{
+                dnam{"డ్రామ్"}
+                one{"{0} డ్రామ్"}
+                other{"{0} డ్రామ్"}
+            }
+            drop{
+                dnam{"తగ్గించు"}
+                one{"{0} తగ్గించు"}
+                other{"{0} తగ్గించు"}
+            }
             fluid-ounce{
                 dnam{"ద్రవరూప ఔన్సులు"}
                 one{"{0} ద్రవరూప ఔన్సు"}
@@ -864,6 +928,11 @@
                 one{"{0} హెక్టాలీటరు"}
                 other{"{0} హెక్టాలీటర్లు"}
             }
+            jigger{
+                dnam{"జిగ్గర్"}
+                one{"{0} జిగ్గర్"}
+                other{"{0} జిగ్గర్"}
+            }
             liter{
                 dnam{"లీటర్లు"}
                 one{"{0} లీటరు"}
@@ -880,6 +949,11 @@
                 one{"{0} మిల్లీలీటరు"}
                 other{"{0} మిల్లీలీటర్లు"}
             }
+            pinch{
+                dnam{"చిటిక"}
+                one{"{0} చిటిక"}
+                other{"{0} చిటిక"}
+            }
             pint{
                 dnam{"పింట్లు"}
                 one{"{0} పింట్"}
@@ -895,6 +969,11 @@
                 one{"{0} పావు వంతు"}
                 other{"{0} పావు వంతులు"}
             }
+            quart-imperial{
+                dnam{"ఇంపీరియల్ చతుర్ధాంశం"}
+                one{"{0} ఇంపీరియల్ చతుర్ధాంశం"}
+                other{"{0} ఇంపీరియల్ చతుర్ధాంశం"}
+            }
             tablespoon{
                 dnam{"టేబుల్ స్పూన్లు"}
                 one{"{0} టేబుల్ స్పూన్"}
@@ -1605,6 +1684,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"బిందువు"}
+                one{"{0} బిందువు"}
+                other{"{0} బిందువు"}
+            }
             dot-per-centimeter{
                 dnam{"బి/సె.మీ."}
                 one{"{0} బి/సె.మీ."}
@@ -1651,12 +1735,22 @@
                 one{"{0} డె.మీ."}
                 other{"{0} డె.మీ."}
             }
+            fathom{
+                dnam{"వ్యామములు"}
+                one{"{0} వ్యా."}
+                other{"{0} వ్యా."}
+            }
             foot{
                 dnam{"అడుగులు"}
                 one{"{0} అ."}
                 other{"{0} అ."}
                 per{"{0}/అ."}
             }
+            furlong{
+                dnam{"ఫర్లాంగులు"}
+                one{"{0} ఫర్"}
+                other{"{0} ఫర్"}
+            }
             inch{
                 dnam{"అంగుళాలు"}
                 one{"{0} అం."}
@@ -1735,6 +1829,16 @@
             }
         }
         light{
+            candela{
+                dnam{"క్యా."}
+                one{"{0} క్యా."}
+                other{"{0} క్యా."}
+            }
+            lumen{
+                dnam{"లు."}
+                one{"{0} లు."}
+                other{"{0} లు."}
+            }
             lux{
                 dnam{"లక్స్"}
                 one{"{0} ల."}
@@ -1758,6 +1862,11 @@
             earth-mass{
                 dnam{"భూమి ద్రవ్యరాశులు"}
             }
+            grain{
+                dnam{"ధాన్యము"}
+                one{"{0} ధాన్యము"}
+                other{"{0} ధాన్యము"}
+            }
             gram{
                 dnam{"గ్రాములు"}
                 one{"{0} గ్రా."}
@@ -1944,7 +2053,9 @@
                 other{"{0} N⋅m"}
             }
             pound-force-foot{
-                dnam{"lbf⋅ft"}
+                dnam{"పౌం.ఫీ."}
+                one{"{0} పౌం.ఫీ."}
+                other{"{0} పౌం.ఫీ."}
             }
         }
         volume{
@@ -1958,6 +2069,11 @@
                 one{"{0} బారెల్"}
                 other{"{0} బారెల్"}
             }
+            bushel{
+                dnam{"బుషెల్‌లు"}
+                one{"{0} బు."}
+                other{"{0} బు."}
+            }
             centiliter{
                 dnam{"సె.లీ."}
                 one{"{0} సె.లీ."}
@@ -2015,6 +2131,26 @@
                 one{"{0} డె.లీ."}
                 other{"{0} డె.లీ."}
             }
+            dessert-spoon{
+                dnam{"డె.స్పూ."}
+                one{"{0} డె.స్పూ."}
+                other{"{0} డె.స్పూ."}
+            }
+            dessert-spoon-imperial{
+                dnam{"డె.స్పూ. ఇంపీరియల్"}
+                one{"{0} డె.స్పూ. ఇంపీరియల్"}
+                other{"{0} డె.స్పూ. ఇంపీరియల్"}
+            }
+            dram{
+                dnam{"డ్రామ్ ఫ్లూయిడ్"}
+                one{"{0} డ్రామ్ ఫ్లూ."}
+                other{"{0} డ్రామ్ ఫ్లూ."}
+            }
+            drop{
+                dnam{"తగ్గించు"}
+                one{"{0} తగ్గించు"}
+                other{"{0} తగ్గించు"}
+            }
             fluid-ounce{
                 dnam{"ద్ర.ఔ."}
                 one{"{0} ద్ర.ఔ."}
@@ -2037,6 +2173,11 @@
                 one{"{0} హె.లీ."}
                 other{"{0} హె.లీ."}
             }
+            jigger{
+                dnam{"జిగ్గర్"}
+                one{"{0} జిగ్గర్"}
+                other{"{0} జిగ్గర్"}
+            }
             liter{
                 dnam{"లీటర్లు"}
                 one{"{0} లీ."}
@@ -2053,6 +2194,11 @@
                 one{"{0} మి.లీ."}
                 other{"{0} మి.లీ."}
             }
+            pinch{
+                dnam{"చిటిక"}
+                one{"{0} చిటిక"}
+                other{"{0} చిటిక"}
+            }
             pint{
                 dnam{"పింట్లు"}
                 one{"{0} పిం."}
@@ -2068,6 +2214,11 @@
                 one{"{0} పావు వం."}
                 other{"{0} పావు వం."}
             }
+            quart-imperial{
+                dnam{"చతు. ఇంపీరియల్"}
+                one{"{0} చతు. ఇంపీరియల్"}
+                other{"{0} చతు. ఇంపీరియల్"}
+            }
             tablespoon{
                 dnam{"టే.స్పూ."}
                 one{"{0} టే.స్పూ"}
diff --git a/icu4c/source/data/unit/teo.txt b/icu4c/source/data/unit/teo.txt
index 8aec59f..9e0d98e 100644
--- a/icu4c/source/data/unit/teo.txt
+++ b/icu4c/source/data/unit/teo.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 teo{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/tg.txt b/icu4c/source/data/unit/tg.txt
index d490f61..b61026f 100644
--- a/icu4c/source/data/unit/tg.txt
+++ b/icu4c/source/data/unit/tg.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tg{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/th.txt b/icu4c/source/data/unit/th.txt
index f2566e0..f90b684 100644
--- a/icu4c/source/data/unit/th.txt
+++ b/icu4c/source/data/unit/th.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 th{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -126,8 +126,8 @@
         }
         consumption{
             liter-per-100-kilometer{
-                dnam{"ลิตรต่อ100 กิโลเมตร"}
-                other{"{0} ลิตรต่อ100 กิโลเมตร"}
+                dnam{"ลิตรต่อ 100 กิโลเมตร"}
+                other{"{0} ลิตรต่อ 100 กิโลเมตร"}
             }
             liter-per-kilometer{
                 dnam{"ลิตรต่อกิโลเมตร"}
@@ -337,6 +337,9 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ดอท"}
+            }
             dot-per-centimeter{
                 dnam{"จุดต่อเซนติเมตร"}
                 other{"{0} จุดต่อเซนติเมตร"}
@@ -376,11 +379,23 @@
                 dnam{"เดซิเมตร"}
                 other{"{0} เดซิเมตร"}
             }
+            earth-radius{
+                dnam{"รัศมีของโลก"}
+                other{"{0} รัศมีของโลก"}
+            }
+            fathom{
+                dnam{"ฟาทอม"}
+                other{"{0} ฟาทอม"}
+            }
             foot{
                 dnam{"ฟุต"}
                 other{"{0} ฟุต"}
                 per{"{0} ต่อฟุต"}
             }
+            furlong{
+                dnam{"เฟอร์ลอง"}
+                other{"{0} เฟอร์ลอง"}
+            }
             inch{
                 dnam{"นิ้ว"}
                 other{"{0} นิ้ว"}
@@ -446,6 +461,14 @@
             }
         }
         light{
+            candela{
+                dnam{"แรงเทียน"}
+                other{"{0} แรงเทียน"}
+            }
+            lumen{
+                dnam{"ลูเมน"}
+                other{"{0} ลูเมน"}
+            }
             lux{
                 dnam{"ลักซ์"}
                 other{"{0} ลักซ์"}
@@ -468,6 +491,10 @@
                 dnam{"มวลของโลก"}
                 other{"{0} มวลของโลก"}
             }
+            grain{
+                dnam{"เกรน"}
+                other{"{0} เกรน"}
+            }
             gram{
                 dnam{"กรัม"}
                 other{"{0} กรัม"}
@@ -508,6 +535,10 @@
                 dnam{"มวลดวงอาทิตย์"}
                 other{"{0} มวลดวงอาทิตย์"}
             }
+            stone{
+                dnam{"สโตน"}
+                other{"{0} สโตน"}
+            }
             ton{
                 dnam{"ตัน"}
                 other{"{0} ตัน"}
@@ -636,6 +667,10 @@
                 dnam{"บาร์เรล"}
                 other{"{0} บาร์เรล"}
             }
+            bushel{
+                dnam{"บุชเชล"}
+                other{"{0} บุชเชล"}
+            }
             centiliter{
                 dnam{"เซนติลิตร"}
                 other{"{0} เซนติลิตร"}
@@ -682,6 +717,22 @@
                 dnam{"เดซิลิตร"}
                 other{"{0} เดซิลิตร"}
             }
+            dessert-spoon{
+                dnam{"ช้อนขนม"}
+                other{"{0} ช้อนขนม"}
+            }
+            dessert-spoon-imperial{
+                dnam{"ช้อนขนม - อังกฤษ"}
+                other{"{0} ช้อนขนม - อังกฤษ"}
+            }
+            dram{
+                dnam{"แดรม"}
+                other{"{0} แดรม"}
+            }
+            drop{
+                dnam{"หยด"}
+                other{"{0} หยด"}
+            }
             fluid-ounce{
                 dnam{"ฟลูอิดออนซ์"}
                 other{"{0} ฟลูอิดออนซ์"}
@@ -704,6 +755,10 @@
                 dnam{"เฮกโตลิตร"}
                 other{"{0} เฮกโตลิตร"}
             }
+            jigger{
+                dnam{"จิกเกอร์"}
+                other{"{0} จิกเกอร์"}
+            }
             liter{
                 dnam{"ลิตร"}
                 other{"{0} ลิตร"}
@@ -717,6 +772,10 @@
                 dnam{"มิลลิลิตร"}
                 other{"{0} มิลลิลิตร"}
             }
+            pinch{
+                dnam{"หยิบมือ"}
+                other{"{0} หยิบมือ"}
+            }
             pint{
                 dnam{"ไพนต์"}
                 other{"{0} ไพนต์"}
@@ -729,6 +788,10 @@
                 dnam{"ควอร์ต"}
                 other{"{0} ควอร์ต"}
             }
+            quart-imperial{
+                dnam{"ควอร์ตอังกฤษ"}
+                other{"{0} ควอร์ตอังกฤษ"}
+            }
             tablespoon{
                 dnam{"ช้อนโต๊ะ"}
                 other{"{0} ช้อนโต๊ะ"}
@@ -781,7 +844,7 @@
         }
         consumption{
             liter-per-100-kilometer{
-                dnam{"ล. /100 กม."}
+                dnam{"ล./100กม."}
                 other{"{0} ล./100กม."}
             }
         }
@@ -1066,7 +1129,7 @@
         consumption{
             liter-per-100-kilometer{
                 dnam{"ล./100 กม."}
-                other{"{0} ล./100กม."}
+                other{"{0} ล./100 กม."}
             }
             liter-per-kilometer{
                 dnam{"ลิตร/กม."}
@@ -1271,6 +1334,12 @@
                 other{"{0} MHz"}
             }
         }
+        graphics{
+            dot{
+                dnam{"ดอท"}
+                other{"{0} ดอท"}
+            }
+        }
         length{
             astronomical-unit{
                 dnam{"หน่วยดาราศาสตร์"}
@@ -1285,11 +1354,17 @@
                 dnam{"ดม."}
                 other{"{0} ดม."}
             }
+            fathom{
+                dnam{"ฟาทอม"}
+            }
             foot{
                 dnam{"ฟุต"}
                 other{"{0} ฟุต"}
                 per{"{0}/ฟุต"}
             }
+            furlong{
+                dnam{"เฟอร์ลอง"}
+            }
             inch{
                 dnam{"นิ้ว"}
                 other{"{0} นิ้ว"}
@@ -1373,6 +1448,10 @@
             earth-mass{
                 dnam{"มวลของโลก"}
             }
+            grain{
+                dnam{"เกรน"}
+                other{"{0} เกรน"}
+            }
             gram{
                 dnam{"กรัม"}
                 other{"{0} ก."}
@@ -1412,6 +1491,9 @@
             solar-mass{
                 dnam{"มวลดวงอาทิตย์"}
             }
+            stone{
+                dnam{"สโตน"}
+            }
             ton{
                 dnam{"ตัน"}
                 other{"{0} ตัน"}
@@ -1517,6 +1599,9 @@
             barrel{
                 dnam{"บาร์เรล"}
             }
+            bushel{
+                dnam{"บุชเชล"}
+            }
             centiliter{
                 dnam{"ซล."}
                 other{"{0} ซล."}
@@ -1563,6 +1648,21 @@
                 dnam{"ดล."}
                 other{"{0} ดล."}
             }
+            dessert-spoon{
+                dnam{"ช้อนขนม"}
+                other{"{0} ช้อนขนม"}
+            }
+            dessert-spoon-imperial{
+                dnam{"ช้อนขนม - อังกฤษ"}
+                other{"{0} ช้อนขนม - อังกฤษ"}
+            }
+            dram{
+                dnam{"แดรมของเหลว"}
+            }
+            drop{
+                dnam{"หยด"}
+                other{"{0} หยด"}
+            }
             fluid-ounce{
                 dnam{"ฟลูอิดออนซ์"}
                 other{"{0} ฟลูอิดออนซ์"}
@@ -1581,6 +1681,10 @@
                 dnam{"ฮล."}
                 other{"{0} ฮล."}
             }
+            jigger{
+                dnam{"จิกเกอร์"}
+                other{"{0} จิกเกอร์"}
+            }
             liter{
                 dnam{"ลิตร"}
                 other{"{0} ล."}
@@ -1594,6 +1698,10 @@
                 dnam{"มล."}
                 other{"{0} มล."}
             }
+            pinch{
+                dnam{"หยิบมือ"}
+                other{"{0} หยิบมือ"}
+            }
             pint{
                 dnam{"ไพนต์"}
                 other{"{0} ไพนต์"}
diff --git a/icu4c/source/data/unit/ti.txt b/icu4c/source/data/unit/ti.txt
index 5fd055d..53a0587 100644
--- a/icu4c/source/data/unit/ti.txt
+++ b/icu4c/source/data/unit/ti.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ti{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/tk.txt b/icu4c/source/data/unit/tk.txt
index 51d2d78..8a01b23 100644
--- a/icu4c/source/data/unit/tk.txt
+++ b/icu4c/source/data/unit/tk.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tk{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"hh:mm:ss"}
@@ -408,6 +408,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"nokat"}
+                one{"{0} nokat"}
+                other{"{0} nokat"}
+            }
             dot-per-centimeter{
                 dnam{"santimetr başyna nokat"}
                 one{"{0} santimetr başyna nokat"}
@@ -461,12 +466,27 @@
                 one{"{0} desimetr"}
                 other{"{0} desimetr"}
             }
+            earth-radius{
+                dnam{"ýer togalagynyň radiusy"}
+                one{"{0} ýer togalagynyň radiusy"}
+                other{"{0} ýer togalagynyň radiusy"}
+            }
+            fathom{
+                dnam{"fatom"}
+                one{"{0} fatom"}
+                other{"{0} fatom"}
+            }
             foot{
                 dnam{"fut"}
                 one{"{0} fut"}
                 other{"{0} fut"}
                 per{"{0}/fut"}
             }
+            furlong{
+                dnam{"furlong"}
+                one{"{0} furlong"}
+                other{"{0} furlong"}
+            }
             inch{
                 dnam{"dýuým"}
                 one{"{0} dýuým"}
@@ -547,6 +567,16 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                one{"{0} kandela"}
+                other{"{0} kandela"}
+            }
+            lumen{
+                dnam{"lýumen"}
+                one{"{0} lýumen"}
+                other{"{0} lýumen"}
+            }
             lux{
                 dnam{"lýuks"}
                 one{"{0} lýuks"}
@@ -574,6 +604,11 @@
                 one{"{0} Ýer massasy"}
                 other{"{0} Ýer massasy"}
             }
+            grain{
+                dnam{"gran"}
+                one{"{0} gran"}
+                other{"{0} gran"}
+            }
             gram{
                 dnam{"gram"}
                 one{"{0} gram"}
@@ -623,6 +658,11 @@
                 one{"{0} gün massasy"}
                 other{"{0} gün massasy"}
             }
+            stone{
+                dnam{"stoun"}
+                one{"{0} stoun"}
+                other{"{0} stoun"}
+            }
             ton{
                 dnam{"tonna"}
                 one{"{0} tonna"}
@@ -748,8 +788,8 @@
             }
             generic{
                 dnam{"°"}
-                one{"{0}°"}
-                other{"{0}°"}
+                one{"{0} dereje"}
+                other{"{0} dereje"}
             }
             kelvin{
                 dnam{"Kelwin gradusy"}
@@ -780,6 +820,11 @@
                 one{"{0} barrel"}
                 other{"{0} barrel"}
             }
+            bushel{
+                dnam{"buşel"}
+                one{"{0} buşel"}
+                other{"{0} buşel"}
+            }
             centiliter{
                 dnam{"santilitr"}
                 one{"{0} santilitr"}
@@ -837,6 +882,26 @@
                 one{"{0} desilitr"}
                 other{"{0} desilitr"}
             }
+            dessert-spoon{
+                dnam{"süýji çemçesi"}
+                one{"{0} süýji çemçesi"}
+                other{"{0} süýji çemçesi"}
+            }
+            dessert-spoon-imperial{
+                dnam{"Imp. süýji çemçesi"}
+                one{"{0} Imp. süýji çemçesi"}
+                other{"{0} Imp. süýji çemçesi"}
+            }
+            dram{
+                dnam{"dram"}
+                one{"{0} dram"}
+                other{"{0} dram"}
+            }
+            drop{
+                dnam{"damja"}
+                one{"{0} damja"}
+                other{"{0} damja"}
+            }
             fluid-ounce{
                 dnam{"suwuklyk unsiýasy"}
                 one{"{0} suwuklyk unsiýasy"}
@@ -864,6 +929,11 @@
                 one{"{0} gektolitr"}
                 other{"{0} gektolitr"}
             }
+            jigger{
+                dnam{"jigger"}
+                one{"{0} jigger"}
+                other{"{0} jigger"}
+            }
             liter{
                 dnam{"litr"}
                 one{"{0} litr"}
@@ -880,6 +950,11 @@
                 one{"{0} millilitr"}
                 other{"{0} millilitr"}
             }
+            pinch{
+                dnam{"çümmük"}
+                one{"{0} çümmük"}
+                other{"{0} çümmük"}
+            }
             pint{
                 dnam{"pinta"}
                 one{"{0} pinta"}
@@ -895,6 +970,11 @@
                 one{"{0} kwarta"}
                 other{"{0} kwarta"}
             }
+            quart-imperial{
+                dnam{"Imp. kwarta"}
+                one{"{0} Imp. kwarta"}
+                other{"{0} Imp. kwarta"}
+            }
             tablespoon{
                 dnam{"nahar çemçesi"}
                 one{"{0} nahar çemçesi"}
@@ -1284,9 +1364,9 @@
                 per{"{0}/sag"}
             }
             microsecond{
-                dnam{"μs"}
-                one{"{0} μs"}
-                other{"{0} μs"}
+                dnam{"mks"}
+                one{"{0} mks"}
+                other{"{0} mks"}
             }
             millisecond{
                 dnam{"msek"}
@@ -1433,6 +1513,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"nokat"}
+                one{"{0} nokat"}
+                other{"{0} nokat"}
+            }
             dot-per-centimeter{
                 dnam{"smbn"}
                 one{"{0} smbn"}
@@ -1479,12 +1564,27 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                one{"{0} R⊕"}
+                other{"{0} R⊕"}
+            }
+            fathom{
+                dnam{"fatom"}
+                one{"{0} fth"}
+                other{"{0} fth"}
+            }
             foot{
                 dnam{"ft"}
                 one{"{0} ft"}
                 other{"{0} ft"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"furlong"}
+                one{"{0} fur"}
+                other{"{0} fur"}
+            }
             inch{
                 dnam{"dý"}
                 one{"{0} dý"}
@@ -1503,7 +1603,7 @@
                 other{"{0} ýý"}
             }
             meter{
-                dnam{"metr"}
+                dnam{"m"}
                 one{"{0} m"}
                 other{"{0} m"}
                 per{"{0}/m"}
@@ -1565,6 +1665,16 @@
             }
         }
         light{
+            candela{
+                dnam{"kd"}
+                one{"{0} kd"}
+                other{"{0} kd"}
+            }
+            lumen{
+                dnam{"lm"}
+                one{"{0} lm"}
+                other{"{0} lm"}
+            }
             lux{
                 dnam{"lk"}
                 one{"{0} lk"}
@@ -1592,6 +1702,11 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"gran"}
+                one{"{0} gran"}
+                other{"{0} gran"}
+            }
             gram{
                 dnam{"gram"}
                 one{"{0} g"}
@@ -1641,6 +1756,11 @@
                 one{"{0} M☉"}
                 other{"{0} M☉"}
             }
+            stone{
+                dnam{"stoun"}
+                one{"{0} st"}
+                other{"{0} st"}
+            }
             ton{
                 dnam{"tonna"}
                 one{"{0} tn"}
@@ -1788,6 +1908,11 @@
                 one{"{0} bbl"}
                 other{"{0} bbl"}
             }
+            bushel{
+                dnam{"buşel"}
+                one{"{0} bu"}
+                other{"{0} bu"}
+            }
             centiliter{
                 dnam{"sl"}
                 one{"{0} sl"}
@@ -1845,6 +1970,26 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"dstspn"}
+                one{"{0} dstspn"}
+                other{"{0} dstspn"}
+            }
+            dessert-spoon-imperial{
+                dnam{"dstspn Imp"}
+                one{"{0} dstspn Imp"}
+                other{"{0} dstspn Imp"}
+            }
+            dram{
+                dnam{"dram suwuklyk"}
+                one{"{0} dram fl"}
+                other{"{0} dram fl"}
+            }
+            drop{
+                dnam{"damja"}
+                one{"{0} damja"}
+                other{"{0} damja"}
+            }
             fluid-ounce{
                 dnam{"suw. uns."}
                 one{"{0} suw. uns."}
@@ -1872,6 +2017,11 @@
                 one{"{0} gl"}
                 other{"{0} gl"}
             }
+            jigger{
+                dnam{"jigger"}
+                one{"{0} jigger"}
+                other{"{0} jigger"}
+            }
             liter{
                 dnam{"litr"}
                 one{"{0} l"}
@@ -1888,6 +2038,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"çümmük"}
+                one{"{0} çümmük"}
+                other{"{0} çümmük"}
+            }
             pint{
                 dnam{"pt"}
                 one{"{0} pt"}
@@ -1903,6 +2058,11 @@
                 one{"{0} kwt"}
                 other{"{0} kwt"}
             }
+            quart-imperial{
+                dnam{"kt Imp"}
+                one{"{0} kt Imp."}
+                other{"{0} kt Imp."}
+            }
             tablespoon{
                 dnam{"n. ç."}
                 one{"{0} n. ç."}
diff --git a/icu4c/source/data/unit/tl.txt b/icu4c/source/data/unit/tl.txt
index 4e521f9..8c39518 100644
--- a/icu4c/source/data/unit/tl.txt
+++ b/icu4c/source/data/unit/tl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tl{
     "%%ALIAS"{"fil"}
 }
diff --git a/icu4c/source/data/unit/tl_PH.txt b/icu4c/source/data/unit/tl_PH.txt
index 07c9f90..59af394 100644
--- a/icu4c/source/data/unit/tl_PH.txt
+++ b/icu4c/source/data/unit/tl_PH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tl_PH{
     "%%ALIAS"{"fil_PH"}
 }
diff --git a/icu4c/source/data/unit/to.txt b/icu4c/source/data/unit/to.txt
index bfdbb3c..3ff1ea2 100644
--- a/icu4c/source/data/unit/to.txt
+++ b/icu4c/source/data/unit/to.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 to{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -337,6 +337,10 @@
             }
         }
         graphics{
+            dot{
+                dnam{"toti"}
+                other{"toti ʻe {0}"}
+            }
             dot-per-centimeter{
                 dnam{"toti he senitimita"}
                 other{"toti ʻe {0} he senitimita"}
@@ -380,6 +384,10 @@
                 dnam{"tesimita"}
                 other{"tesimita ʻe {0}"}
             }
+            earth-radius{
+                dnam{"lētiasi fakamāmani"}
+                other{"lētiasi fakamāmani ʻe {0}"}
+            }
             fathom{
                 dnam{"ofa"}
                 other{"ofa ʻe {0}"}
@@ -458,6 +466,14 @@
             }
         }
         light{
+            candela{
+                dnam{"kaniteli"}
+                other{"kaniteli ʻe {0}"}
+            }
+            lumen{
+                dnam{"lumeni"}
+                other{"lumeni ʻe {0}"}
+            }
             lux{
                 dnam{"lukisi"}
                 other{"lukisi ʻe {0}"}
@@ -480,6 +496,10 @@
                 dnam{"mamafa ʻo māmani"}
                 other{"mamafa ʻo māmani ʻe {0}"}
             }
+            grain{
+                dnam{"tenga"}
+                other{"tenga ʻe {0}"}
+            }
             gram{
                 dnam{"kalami"}
                 other{"kalami ʻe {0}"}
@@ -702,6 +722,22 @@
                 dnam{"tesilita"}
                 other{"tesilita ʻe {0}"}
             }
+            dessert-spoon{
+                dnam{"sēpuni puteni"}
+                other{"sēpuni puteni ʻe {0}"}
+            }
+            dessert-spoon-imperial{
+                dnam{"sēpuni puteni fakaʻemipaea"}
+                other{"sēpuni puteni fakaʻemipaea ʻe {0}"}
+            }
+            dram{
+                dnam{"talamu tafe"}
+                other{"talamu tafe ʻe {0}"}
+            }
+            drop{
+                dnam{"tulutā"}
+                other{"tulutā ʻe {0}"}
+            }
             fluid-ounce{
                 dnam{"ʻaunise tafe"}
                 other{"ʻaunise tafe ʻe {0}"}
@@ -724,6 +760,10 @@
                 dnam{"hēkitolita"}
                 other{"hēkitolita ʻe {0}"}
             }
+            jigger{
+                dnam{"sike"}
+                other{"sike ʻe {0}"}
+            }
             liter{
                 dnam{"lita"}
                 other{"lita ʻe {0}"}
@@ -737,6 +777,10 @@
                 dnam{"mililita"}
                 other{"mililita ʻe {0}"}
             }
+            pinch{
+                dnam{"kiʻimeʻi"}
+                other{"kiʻimeʻi ʻe {0}"}
+            }
             pint{
                 dnam{"painite"}
                 other{"painite ʻe {0}"}
@@ -749,6 +793,10 @@
                 dnam{"kuata"}
                 other{"kuata ʻe {0}"}
             }
+            quart-imperial{
+                dnam{"kuata fakaʻemipaea"}
+                other{"kuata fakaʻemipaea ʻe {0}"}
+            }
             tablespoon{
                 dnam{"sēpuni tēpile"}
                 other{"sēpuni tēpile ʻe {0}"}
@@ -857,7 +905,7 @@
                 other{"{0} mi/kā"}
             }
             mile-per-gallon-imperial{
-                other{"{0}m/kāʻe"}
+                other{"{0}m/kāʻem"}
             }
         }
         coordinate{
@@ -1438,8 +1486,8 @@
                 other{"mi ʻe {0}/kā"}
             }
             mile-per-gallon-imperial{
-                dnam{"mi/kāʻem"}
-                other{"mi ʻe {0}/kāʻem"}
+                dnam{"mi/kā-ʻem"}
+                other{"mi ʻe {0}/kā-ʻem"}
             }
         }
         coordinate{
@@ -1635,6 +1683,10 @@
             }
         }
         graphics{
+            dot{
+                dnam{"toti"}
+                other{"toti ʻe {0}"}
+            }
             dot-per-centimeter{
                 dnam{"toti/sm"}
                 other{"toti ʻe {0}/sm"}
@@ -1678,6 +1730,10 @@
                 dnam{"tm"}
                 other{"tm ʻe {0}"}
             }
+            earth-radius{
+                dnam{"L⊕"}
+                other{"L⊕ ʻe {0}"}
+            }
             fathom{
                 dnam{"ofa"}
                 other{"ofa ʻe {0}"}
@@ -1756,6 +1812,14 @@
             }
         }
         light{
+            candela{
+                dnam{"ktl"}
+                other{"ktl ʻe {0}"}
+            }
+            lumen{
+                dnam{"lm"}
+                other{"lm ʻe {0}"}
+            }
             lux{
                 dnam{"lx"}
                 other{"lx ʻe {0}"}
@@ -1778,6 +1842,10 @@
                 dnam{"mamafa ⊕"}
                 other{"mamafa ⊕ ʻe {0}"}
             }
+            grain{
+                dnam{"tenga"}
+                other{"tenga ʻe {0}"}
+            }
             gram{
                 dnam{"k"}
                 other{"k ʻe {0}"}
@@ -1996,6 +2064,22 @@
                 dnam{"tl"}
                 other{"tl ʻe {0}"}
             }
+            dessert-spoon{
+                dnam{"sēpu"}
+                other{"sēpu ʻe {0}"}
+            }
+            dessert-spoon-imperial{
+                dnam{"sēpu-ʻem"}
+                other{"sēpu-ʻem ʻe {0}"}
+            }
+            dram{
+                dnam{"tlmu-tf"}
+                other{"tlmu-tf ʻe {0}"}
+            }
+            drop{
+                dnam{"tltā"}
+                other{"tltā ʻe {0}"}
+            }
             fluid-ounce{
                 dnam{"ʻau-tf"}
                 other{"ʻau-tf ʻe {0}"}
@@ -2010,14 +2094,18 @@
                 per{"{0}/kā"}
             }
             gallon-imperial{
-                dnam{"kāʻem"}
-                other{"kāʻem ʻe {0}"}
-                per{"{0} / kāʻem"}
+                dnam{"kāʻ-em"}
+                other{"kā-ʻem ʻe {0}"}
+                per{"{0} / kā-ʻem"}
             }
             hectoliter{
                 dnam{"hl"}
                 other{"hl ʻe {0}"}
             }
+            jigger{
+                dnam{"sike"}
+                other{"sike ʻe {0}"}
+            }
             liter{
                 dnam{"l"}
                 other{"l ʻe {0}"}
@@ -2031,6 +2119,10 @@
                 dnam{"ml"}
                 other{"ml ʻe {0}"}
             }
+            pinch{
+                dnam{"kiʻimeʻi"}
+                other{"kiʻimeʻi ʻe {0}"}
+            }
             pint{
                 dnam{"pt"}
                 other{"pt ʻe {0}"}
@@ -2043,6 +2135,10 @@
                 dnam{"ku"}
                 other{"ku ʻe {0}"}
             }
+            quart-imperial{
+                dnam{"ku-ʻem"}
+                other{"ku-ʻem ʻe {0}"}
+            }
             tablespoon{
                 dnam{"sētē"}
                 other{"sētē ʻe {0}"}
diff --git a/icu4c/source/data/unit/tr.txt b/icu4c/source/data/unit/tr.txt
index 7918ba2..79b2521 100644
--- a/icu4c/source/data/unit/tr.txt
+++ b/icu4c/source/data/unit/tr.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tr{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -403,6 +403,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"nokta"}
+                one{"{0} nokta"}
+                other{"{0} nokta"}
+            }
             dot-per-centimeter{
                 dnam{"nokta/santimetre"}
                 one{"{0} nokta/santimetre"}
@@ -454,6 +459,11 @@
                 one{"{0} desimetre"}
                 other{"{0} desimetre"}
             }
+            earth-radius{
+                dnam{"Dünya yarıçapı"}
+                one{"{0} Dünya yarıçapı"}
+                other{"{0} Dünya yarıçapı"}
+            }
             fathom{
                 dnam{"fathom"}
                 one{"{0} fathom"}
@@ -550,6 +560,16 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                one{"{0} kandela"}
+                other{"{0} kandela"}
+            }
+            lumen{
+                dnam{"lümen"}
+                one{"{0} lümen"}
+                other{"{0} lümen"}
+            }
             lux{
                 dnam{"lüks"}
                 one{"{0} lüks"}
@@ -577,6 +597,11 @@
                 one{"{0} Dünya kütlesi"}
                 other{"{0} Dünya kütlesi"}
             }
+            grain{
+                dnam{"tane"}
+                one{"{0} tane"}
+                other{"{0} tane"}
+            }
             gram{
                 dnam{"gram"}
                 one{"{0} gram"}
@@ -845,6 +870,26 @@
                 one{"{0} desilitre"}
                 other{"{0} desilitre"}
             }
+            dessert-spoon{
+                dnam{"tatlı kaşığı"}
+                one{"{0} tatlı kaşığı"}
+                other{"{0} tatlı kaşığı"}
+            }
+            dessert-spoon-imperial{
+                dnam{"İng. tatlı kaşığı"}
+                one{"{0} İng. tatlı kaşığı"}
+                other{"{0} İng. tatlı kaşığı"}
+            }
+            dram{
+                dnam{"dram"}
+                one{"{0} dram"}
+                other{"{0} dram"}
+            }
+            drop{
+                dnam{"damla"}
+                one{"{0} damla"}
+                other{"{0} damla"}
+            }
             fluid-ounce{
                 dnam{"sıvı ons"}
                 one{"{0} sıvı ons"}
@@ -888,6 +933,11 @@
                 one{"{0} mililitre"}
                 other{"{0} mililitre"}
             }
+            pinch{
+                dnam{"tutam"}
+                one{"{0} tutam"}
+                other{"{0} tutam"}
+            }
             pint{
                 dnam{"pint"}
                 one{"{0} pint"}
@@ -903,15 +953,20 @@
                 one{"{0} quart"}
                 other{"{0} quart"}
             }
+            quart-imperial{
+                dnam{"İng. quart"}
+                one{"{0} İng. quart"}
+                other{"{0} İng. quart"}
+            }
             tablespoon{
                 dnam{"yemek kaşığı"}
                 one{"{0} yemek kaşığı"}
                 other{"{0} yemek kaşığı"}
             }
             teaspoon{
-                dnam{"tatlı kaşığı"}
-                one{"{0} tatlı kaşığı"}
-                other{"{0} tatlı kaşığı"}
+                dnam{"çay kaşığı"}
+                one{"{0} çay kaşığı"}
+                other{"{0} çay kaşığı"}
             }
         }
     }
@@ -1294,7 +1349,7 @@
                 other{"{0} IY"}
             }
             meter{
-                dnam{"metre"}
+                dnam{"m"}
                 one{"{0} m"}
                 other{"{0} m"}
                 per{"{0}/m"}
@@ -1999,6 +2054,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"nokta"}
+                one{"{0} nokta"}
+                other{"{0} nokta"}
+            }
             megapixel{
                 dnam{"megapiksel"}
             }
@@ -2146,6 +2206,11 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"tane"}
+                one{"{0} tane"}
+                other{"{0} tane"}
+            }
             gram{
                 dnam{"gram"}
                 one{"{0} g"}
@@ -2270,9 +2335,9 @@
                 other{"{0} mbar"}
             }
             millimeter-ofhg{
-                dnam{"mm Hg"}
-                one{"{0} mm Hg"}
-                other{"{0} mm Hg"}
+                dnam{"mmHg"}
+                one{"{0} mmHg"}
+                other{"{0} mmHg"}
             }
             pound-force-per-square-inch{
                 dnam{"lb/in²"}
@@ -2409,6 +2474,26 @@
                 one{"{0} dl"}
                 other{"{0} dl"}
             }
+            dessert-spoon{
+                dnam{"tat. kaşığı"}
+                one{"{0} tat. kaşığı"}
+                other{"{0} tat. kaşığı"}
+            }
+            dessert-spoon-imperial{
+                dnam{"İng. tat. kaşığı"}
+                one{"{0} İng. tat. kaşığı"}
+                other{"{0} İng. tat. kaşığı"}
+            }
+            dram{
+                dnam{"sıvı dram"}
+                one{"{0} sıvı dram"}
+                other{"{0} sıvı dram"}
+            }
+            drop{
+                dnam{"damla"}
+                one{"{0} damla"}
+                other{"{0} damla"}
+            }
             fluid-ounce{
                 dnam{"sıvı ons"}
                 one{"{0} sıvı ons"}
@@ -2452,6 +2537,11 @@
                 one{"{0} ml"}
                 other{"{0} ml"}
             }
+            pinch{
+                dnam{"tutam"}
+                one{"{0} tutam"}
+                other{"{0} tutam"}
+            }
             pint{
                 dnam{"pint"}
                 one{"{0} pint"}
@@ -2466,15 +2556,20 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"İng quart"}
+                one{"{0} İng. quart"}
+                other{"{0} İng. quart"}
+            }
             tablespoon{
                 dnam{"yk"}
                 one{"{0} yk"}
                 other{"{0} yk"}
             }
             teaspoon{
-                dnam{"tk"}
-                one{"{0} tk"}
-                other{"{0} tk"}
+                dnam{"çk"}
+                one{"{0} çk"}
+                other{"{0} çk"}
             }
         }
     }
diff --git a/icu4c/source/data/unit/tt.txt b/icu4c/source/data/unit/tt.txt
index 45ce13b..8f9cceb 100644
--- a/icu4c/source/data/unit/tt.txt
+++ b/icu4c/source/data/unit/tt.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tt{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/twq.txt b/icu4c/source/data/unit/twq.txt
index d90e4d4..12e378b 100644
--- a/icu4c/source/data/unit/twq.txt
+++ b/icu4c/source/data/unit/twq.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 twq{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/tzm.txt b/icu4c/source/data/unit/tzm.txt
index 9d0747f..ccc6dc3 100644
--- a/icu4c/source/data/unit/tzm.txt
+++ b/icu4c/source/data/unit/tzm.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tzm{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/ug.txt b/icu4c/source/data/unit/ug.txt
index 450bceb..6322ecb 100644
--- a/icu4c/source/data/unit/ug.txt
+++ b/icu4c/source/data/unit/ug.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ug{
-    Version{"37"}
     units{
         acceleration{
             g-force{
diff --git a/icu4c/source/data/unit/uk.txt b/icu4c/source/data/unit/uk.txt
index 4bc3cd0..2f7d4bf 100644
--- a/icu4c/source/data/unit/uk.txt
+++ b/icu4c/source/data/unit/uk.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uk{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -17,11 +17,11 @@
                 other{"{0} сили тяжіння"}
             }
             meter-per-square-second{
-                dnam{"метри на секунду в квадраті"}
-                few{"{0} метри на секунду в квадраті"}
-                many{"{0} метрів на секунду в квадраті"}
-                one{"{0} метр на секунду в квадраті"}
-                other{"{0} метра на секунду в квадраті"}
+                dnam{"метри на секунду у квадраті"}
+                few{"{0} метри на секунду у квадраті"}
+                many{"{0} метрів на секунду у квадраті"}
+                one{"{0} метр на секунду у квадраті"}
+                other{"{0} метра на секунду у квадраті"}
             }
         }
         angle{
@@ -231,10 +231,10 @@
         }
         coordinate{
             dnam{"сторона світу"}
-            east{"{0} на Схід"}
-            north{"{0} на Північ"}
-            south{"{0} на Південь"}
-            west{"{0} на Захід"}
+            east{"{0} східної довготи"}
+            north{"{0} північної широти"}
+            south{"{0} південної широти"}
+            west{"{0} західної довготи"}
         }
         digital{
             bit{
@@ -332,11 +332,11 @@
                 per{"{0} на день"}
             }
             decade{
-                dnam{"декади"}
-                few{"{0} декади"}
-                many{"{0} декад"}
-                one{"{0} декада"}
-                other{"{0} декади"}
+                dnam{"десятиріччя"}
+                few{"{0} десятиріччя"}
+                many{"{0} десятиріч"}
+                one{"{0} десятиріччя"}
+                other{"{0} десятиріччя"}
             }
             hour{
                 dnam{"години"}
@@ -366,7 +366,7 @@
                 many{"{0} хвилин"}
                 one{"{0} хвилина"}
                 other{"{0} хвилини"}
-                per{"{0} на хв"}
+                per{"{0} на хвилину"}
             }
             month{
                 dnam{"місяці"}
@@ -461,11 +461,11 @@
                 other{"{0} електрон-вольта"}
             }
             foodcalorie{
-                dnam{"Калорії"}
-                few{"{0} Калорії"}
-                many{"{0} Калорій"}
-                one{"{0} Калорія"}
-                other{"{0} Калорії"}
+                dnam{"кілокалорії"}
+                few{"{0} кілокалорії"}
+                many{"{0} кілокалорій"}
+                one{"{0} кілокалорія"}
+                other{"{0} кілокалорії"}
             }
             joule{
                 dnam{"джоулі"}
@@ -550,6 +550,13 @@
             }
         }
         graphics{
+            dot{
+                dnam{"точка"}
+                few{"{0} точки"}
+                many{"{0} точок"}
+                one{"{0} точка"}
+                other{"{0} точки"}
+            }
             megapixel{
                 dnam{"мегапікселі"}
                 few{"{0} Мп"}
@@ -581,6 +588,20 @@
                 one{"{0} дециметр"}
                 other{"{0} дециметра"}
             }
+            earth-radius{
+                dnam{"радіус Землі"}
+                few{"{0} радіуси Землі"}
+                many{"{0} радіусів Землі"}
+                one{"{0} радіус Землі"}
+                other{"{0} радіуса Землі"}
+            }
+            fathom{
+                dnam{"фатоми"}
+                few{"{0} фатоми"}
+                many{"{0} фатомів"}
+                one{"{0} фатом"}
+                other{"{0} фатома"}
+            }
             foot{
                 dnam{"фути"}
                 few{"{0} фути"}
@@ -589,6 +610,13 @@
                 other{"{0} фута"}
                 per{"{0} на фут"}
             }
+            furlong{
+                dnam{"фурлонги"}
+                few{"{0} фурлонги"}
+                many{"{0} фурлонгів"}
+                one{"{0} фурлонг"}
+                other{"{0} фурлонга"}
+            }
             inch{
                 dnam{"дюйми"}
                 few{"{0} дюйми"}
@@ -699,6 +727,20 @@
             }
         }
         light{
+            candela{
+                dnam{"кандела"}
+                few{"{0} кандели"}
+                many{"{0} кандел"}
+                one{"{0} кандела"}
+                other{"{0} кандели"}
+            }
+            lumen{
+                dnam{"люмен"}
+                few{"{0} люмени"}
+                many{"{0} люменів"}
+                one{"{0} люмен"}
+                other{"{0} люмена"}
+            }
             lux{
                 dnam{"люкси"}
                 few{"{0} люкси"}
@@ -736,6 +778,13 @@
                 one{"{0} маса Землі"}
                 other{"{0} маси Землі"}
             }
+            grain{
+                dnam{"гран"}
+                few{"{0} грани"}
+                many{"{0} гранів"}
+                one{"{0} гран"}
+                other{"{0} грана"}
+            }
             gram{
                 dnam{"грами"}
                 few{"{0} грами"}
@@ -1111,6 +1160,34 @@
                 one{"{0} децилітр"}
                 other{"{0} децилітра"}
             }
+            dessert-spoon{
+                dnam{"десертна ложка"}
+                few{"{0} десертні ложки"}
+                many{"{0} десертних ложок"}
+                one{"{0} десертна ложка"}
+                other{"{0} десертної ложки"}
+            }
+            dessert-spoon-imperial{
+                dnam{"імперська десертна ложка"}
+                few{"{0} імп. десертні ложки"}
+                many{"{0} імп. десертних ложок"}
+                one{"{0} імп. десертна ложка"}
+                other{"{0} імп. десертної ложки"}
+            }
+            dram{
+                dnam{"рідинна драхма"}
+                few{"{0} рідинні драхми"}
+                many{"{0} рідинних драхм"}
+                one{"{0} рідинна драхма"}
+                other{"{0} рідинної драхми"}
+            }
+            drop{
+                dnam{"крапля"}
+                few{"{0} краплі"}
+                many{"{0} крапель"}
+                one{"{0} крапля"}
+                other{"{0} краплі"}
+            }
             fluid-ounce{
                 dnam{"рідкі унції"}
                 few{"{0} рідкі унції"}
@@ -1148,6 +1225,13 @@
                 one{"{0} гектолітр"}
                 other{"{0} гектолітра"}
             }
+            jigger{
+                dnam{"мірна склянка"}
+                few{"{0} мірні склянки"}
+                many{"{0} мірних склянок"}
+                one{"{0} мірна склянка"}
+                other{"{0} мірна склянка"}
+            }
             liter{
                 dnam{"літри"}
                 few{"{0} літри"}
@@ -1170,6 +1254,13 @@
                 one{"{0} мілілітр"}
                 other{"{0} мілілітра"}
             }
+            pinch{
+                dnam{"дрібка"}
+                few{"{0} дрібки"}
+                many{"{0} дрібок"}
+                one{"{0} дрібка"}
+                other{"{0} дрібки"}
+            }
             pint{
                 dnam{"пінти"}
                 few{"{0} пінти"}
@@ -1191,6 +1282,13 @@
                 one{"{0} кварта"}
                 other{"{0} кварти"}
             }
+            quart-imperial{
+                dnam{"імперська кварта"}
+                few{"{0} імп. кварти"}
+                many{"{0} імп. кварт"}
+                one{"{0} імп. кварта"}
+                other{"{0} імп. кварти"}
+            }
             tablespoon{
                 dnam{"cтолові ложки"}
                 few{"{0} столові ложки"}
@@ -1321,10 +1419,10 @@
         }
         coordinate{
             dnam{"напрям"}
-            east{"{0} Сх"}
-            north{"{0} Пн"}
-            south{"{0} Пд"}
-            west{"{0} Зх"}
+            east{"{0}Сх"}
+            north{"{0}Пн"}
+            south{"{0}Пд"}
+            west{"{0}Зх"}
         }
         duration{
             century{
@@ -1344,10 +1442,10 @@
             }
             hour{
                 dnam{"год"}
-                few{"{0} год"}
-                many{"{0} год"}
-                one{"{0} год"}
-                other{"{0} год"}
+                few{"{0} год."}
+                many{"{0} год."}
+                one{"{0} год."}
+                other{"{0} год."}
                 per{"{0}/г"}
             }
             microsecond{
@@ -1366,10 +1464,10 @@
             }
             minute{
                 dnam{"хв"}
-                few{"{0} хв"}
-                many{"{0} хв"}
-                one{"{0} хв"}
-                other{"{0} хв"}
+                few{"{0} хв."}
+                many{"{0} хв."}
+                one{"{0} хв."}
+                other{"{0} хв."}
                 per{"{0}/хв"}
             }
             month{
@@ -1739,7 +1837,7 @@
         }
         temperature{
             celsius{
-                dnam{"° Цельсія"}
+                dnam{"°C"}
                 few{"{0}°C"}
                 many{"{0}°C"}
                 one{"{0}°C"}
@@ -2027,26 +2125,26 @@
                 other{"{0} л/км"}
             }
             mile-per-gallon{
-                dnam{"милі/галон"}
-                few{"{0} милі/галон"}
-                many{"{0} миль/галон"}
-                one{"{0} миля/галон"}
-                other{"{0} милі/галон"}
+                dnam{"милі/гал."}
+                few{"{0} милі/гал."}
+                many{"{0} миль/гал."}
+                one{"{0} миля/гал."}
+                other{"{0} милі/гал."}
             }
             mile-per-gallon-imperial{
-                dnam{"милі/англ. галон"}
-                few{"{0} милі/англ. галон"}
-                many{"{0} миль/англ. галон"}
-                one{"{0} миля/англ. галон"}
-                other{"{0} милі/англ. галон"}
+                dnam{"милі/англ. гал."}
+                few{"{0} милі/англ. гал."}
+                many{"{0} миль/англ. гал."}
+                one{"{0} миля/англ. гал."}
+                other{"{0} милі/англ. гал."}
             }
         }
         coordinate{
             dnam{"напрямок"}
-            east{"{0} на Сх"}
-            north{"{0} на Пн"}
-            south{"{0} на Пд"}
-            west{"{0} на Зх"}
+            east{"{0} сх. д."}
+            north{"{0} пн. ш."}
+            south{"{0} пд. ш."}
+            west{"{0} зх. д."}
         }
         digital{
             bit{
@@ -2273,11 +2371,11 @@
                 other{"{0} еВ"}
             }
             foodcalorie{
-                dnam{"Кал"}
-                few{"{0} Кал"}
-                many{"{0} Кал"}
-                one{"{0} Кал"}
-                other{"{0} Кал"}
+                dnam{"ккал"}
+                few{"{0} ккал"}
+                many{"{0} ккал"}
+                one{"{0} ккал"}
+                other{"{0} ккал"}
             }
             joule{
                 dnam{"джоулі"}
@@ -2287,11 +2385,11 @@
                 other{"{0} Дж"}
             }
             kilocalorie{
-                dnam{"Ккал"}
-                few{"{0} Ккал"}
-                many{"{0} Ккал"}
-                one{"{0} Ккал"}
-                other{"{0} Ккал"}
+                dnam{"ккал"}
+                few{"{0} ккал"}
+                many{"{0} ккал"}
+                one{"{0} ккал"}
+                other{"{0} ккал"}
             }
             kilojoule{
                 dnam{"кілоджоуль"}
@@ -2362,6 +2460,13 @@
             }
         }
         graphics{
+            dot{
+                dnam{"тчк"}
+                few{"{0} тчк"}
+                many{"{0} тчк"}
+                one{"{0} тчк"}
+                other{"{0} тчк"}
+            }
             dot-per-centimeter{
                 dnam{"dpcm"}
                 few{"{0} dpcm"}
@@ -2435,6 +2540,13 @@
                 one{"{0} дм"}
                 other{"{0} дм"}
             }
+            fathom{
+                dnam{"фатоми"}
+                few{"{0} фатоми"}
+                many{"{0} фатомів"}
+                one{"{0} фатом"}
+                other{"{0} фатома"}
+            }
             foot{
                 dnam{"фут"}
                 few{"{0} фути"}
@@ -2443,6 +2555,9 @@
                 other{"{0} фута"}
                 per{"{0}/фут"}
             }
+            furlong{
+                dnam{"фурлонги"}
+            }
             inch{
                 dnam{"дюйми"}
                 few{"{0} дюйми"}
@@ -2467,7 +2582,7 @@
                 other{"{0} св. р."}
             }
             meter{
-                dnam{"метри"}
+                dnam{"м"}
                 few{"{0} м"}
                 many{"{0} м"}
                 one{"{0} м"}
@@ -2549,6 +2664,20 @@
             }
         }
         light{
+            candela{
+                dnam{"кд"}
+                few{"{0} кд"}
+                many{"{0} кд"}
+                one{"{0} кд"}
+                other{"{0} кд"}
+            }
+            lumen{
+                dnam{"лм"}
+                few{"{0} лм"}
+                many{"{0} лм"}
+                one{"{0} лм"}
+                other{"{0} лм"}
+            }
             lux{
                 dnam{"люкс"}
                 few{"{0} лк"}
@@ -2578,6 +2707,13 @@
             earth-mass{
                 dnam{"маси Землі"}
             }
+            grain{
+                dnam{"гран"}
+                few{"{0} грани"}
+                many{"{0} гранів"}
+                one{"{0} гран"}
+                other{"{0} грана"}
+            }
             gram{
                 dnam{"грами"}
                 few{"{0} г"}
@@ -2641,6 +2777,12 @@
             solar-mass{
                 dnam{"маси Сонця"}
             }
+            stone{
+                few{"{0} st"}
+                many{"{0} st"}
+                one{"{0} st"}
+                other{"{0} st"}
+            }
             ton{
                 dnam{"тонни"}
                 few{"{0} т"}
@@ -2797,7 +2939,7 @@
         }
         temperature{
             celsius{
-                dnam{"градус Цельсія"}
+                dnam{"град. Цельсія"}
                 few{"{0}°C"}
                 many{"{0}°C"}
                 one{"{0}°C"}
@@ -2942,6 +3084,34 @@
                 one{"{0} дл"}
                 other{"{0} дл"}
             }
+            dessert-spoon{
+                dnam{"дес. л."}
+                few{"{0} дес. л."}
+                many{"{0} дес. л."}
+                one{"{0} дес. л."}
+                other{"{0} дес. л."}
+            }
+            dessert-spoon-imperial{
+                dnam{"імп. дес. ложка"}
+                few{"{0} імп. дес. ложки"}
+                many{"{0} імп. дес. ложок"}
+                one{"{0} імп. дес. ложка"}
+                other{"{0} імп. дес. ложки"}
+            }
+            dram{
+                dnam{"рід. драхма"}
+                few{"{0} рід. драхми"}
+                many{"{0} рід. драхм"}
+                one{"{0} рід. драхма"}
+                other{"{0} рід. драхми"}
+            }
+            drop{
+                dnam{"крапля"}
+                few{"{0} краплі"}
+                many{"{0} крапель"}
+                one{"{0} крапля"}
+                other{"{0} краплі"}
+            }
             fluid-ounce{
                 dnam{"рід. ун."}
                 few{"{0} рід. ун."}
@@ -2979,6 +3149,13 @@
                 one{"{0} гл"}
                 other{"{0} гл"}
             }
+            jigger{
+                dnam{"мірка"}
+                few{"{0} мірки"}
+                many{"{0} мірок"}
+                one{"{0} мірка"}
+                other{"{0} мірки"}
+            }
             liter{
                 dnam{"літри"}
                 few{"{0} л"}
@@ -3001,6 +3178,13 @@
                 one{"{0} мл"}
                 other{"{0} мл"}
             }
+            pinch{
+                dnam{"дрібка"}
+                few{"{0} дрібки"}
+                many{"{0} дрібок"}
+                one{"{0} дрібка"}
+                other{"{0} дрібки"}
+            }
             pint{
                 dnam{"пінти"}
                 few{"{0} пінти"}
@@ -3022,6 +3206,13 @@
                 one{"{0} квар."}
                 other{"{0} квар."}
             }
+            quart-imperial{
+                dnam{"імп. квар."}
+                few{"{0} імп. квар."}
+                many{"{0} імп. квар."}
+                one{"{0} імп. квар."}
+                other{"{0} імп. квар."}
+            }
             tablespoon{
                 dnam{"ст. л."}
                 few{"{0} ст. л."}
diff --git a/icu4c/source/data/unit/ur.txt b/icu4c/source/data/unit/ur.txt
index cc4eaef..a8d0708 100644
--- a/icu4c/source/data/unit/ur.txt
+++ b/icu4c/source/data/unit/ur.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ur{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -408,6 +408,9 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ڈاٹ"}
+            }
             dot-per-centimeter{
                 dnam{"ڈاٹس فی سینٹی میٹر"}
                 one{"{0} ڈاٹ فی سینٹی میٹر"}
@@ -461,12 +464,27 @@
                 one{"{0} ڈیسی میٹر"}
                 other{"{0} ڈیسی میٹر"}
             }
+            earth-radius{
+                dnam{"زمینی رداس"}
+                one{"{0} زمینی رداس"}
+                other{"{0} زمینی رداس"}
+            }
+            fathom{
+                dnam{"فیدمز"}
+                one{"{0} فیدم"}
+                other{"{0} فیدمز"}
+            }
             foot{
                 dnam{"فیٹ"}
                 one{"{0} فیٹ"}
                 other{"{0} فیٹ"}
                 per{"{0} فی فوٹ"}
             }
+            furlong{
+                dnam{"فرلانگز"}
+                one{"{0} فرلانگ"}
+                other{"{0} فرلانگز"}
+            }
             inch{
                 dnam{"انچ"}
                 one{"{0} انچ"}
@@ -547,6 +565,16 @@
             }
         }
         light{
+            candela{
+                dnam{"کنڈیلا"}
+                one{"{0} کنڈیلا"}
+                other{"{0} کنڈیلا"}
+            }
+            lumen{
+                dnam{"لیومِن"}
+                one{"{0} لیومِن"}
+                other{"{0} لیومِن"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lux"}
@@ -574,6 +602,11 @@
                 one{"{0} زمینی کمیت"}
                 other{"{0} زمینی کمیتیں"}
             }
+            grain{
+                dnam{"گرین"}
+                one{"{0} گرین"}
+                other{"{0} گرین"}
+            }
             gram{
                 dnam{"گرام"}
                 one{"{0} گرام"}
@@ -770,7 +803,7 @@
             }
             pound-force-foot{
                 dnam{"پاؤنڈ فٹ"}
-                one{"{0} پاؤنڈ فٹ"}
+                one{"{0} پاؤنڈ فورس فوٹ"}
                 other{"{0} پاؤنڈ فٹ"}
             }
         }
@@ -785,6 +818,11 @@
                 one{"{0} بیرل"}
                 other{"{0} بیرلز"}
             }
+            bushel{
+                dnam{"بُشلز"}
+                one{"{0} بُشل"}
+                other{"{0} بُشلز"}
+            }
             centiliter{
                 dnam{"سینٹی لیٹر"}
                 one{"{0} سینٹی لیٹر"}
@@ -842,6 +880,26 @@
                 one{"{0} ڈیسی لیٹر"}
                 other{"{0} ڈیسی لیٹر"}
             }
+            dessert-spoon{
+                dnam{"ڈیزرٹ اسپون"}
+                one{"{0} ڈیزرٹ اسپون"}
+                other{"{0} ڈیزرٹ اسپون"}
+            }
+            dessert-spoon-imperial{
+                dnam{"امپیریئل ڈیزرٹ اسپون"}
+                one{"{0} امپیریئل ڈیزرٹ اسپون"}
+                other{"{0} امپیریئل ڈیزرٹ اسپون"}
+            }
+            dram{
+                dnam{"ڈرام"}
+                one{"{0} ڈرام"}
+                other{"{0} ڈرام"}
+            }
+            drop{
+                dnam{"قطرہ"}
+                one{"{0} قطرہ"}
+                other{"{0} قطرہ"}
+            }
             fluid-ounce{
                 dnam{"فلوئڈ اونس"}
                 one{"{0} فلوئڈ اونس"}
@@ -869,6 +927,11 @@
                 one{"{0} ہیکٹو لیٹر"}
                 other{"{0} ہیکٹو لیٹر"}
             }
+            jigger{
+                dnam{"جگر"}
+                one{"{0} جگر"}
+                other{"{0} جگر"}
+            }
             liter{
                 dnam{"لیٹر"}
                 one{"{0} لیٹر"}
@@ -885,6 +948,11 @@
                 one{"{0} ملی لیٹر"}
                 other{"{0} ملی لیٹر"}
             }
+            pinch{
+                dnam{"چٹکی"}
+                one{"{0} چٹکی"}
+                other{"{0} چٹکی"}
+            }
             pint{
                 dnam{"پائنٹ"}
                 one{"{0} پائنٹ"}
@@ -900,6 +968,11 @@
                 one{"{0} کوارٹ"}
                 other{"{0} کوارٹ"}
             }
+            quart-imperial{
+                dnam{"امپیریئل کوارٹ"}
+                one{"{0} امپیریئل کوارٹ"}
+                other{"{0} امپیریئل کوارٹ"}
+            }
             tablespoon{
                 dnam{"ٹیبل سپون"}
                 one{"{0} ٹیبل سپون"}
@@ -1606,6 +1679,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"ڈاٹ"}
+                one{"{0} ڈاٹ"}
+                other{"{0} ڈاٹ"}
+            }
             megapixel{
                 dnam{"میگا پکسلز"}
             }
@@ -1630,12 +1708,27 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                one{"{0} R⊕"}
+                other{"{0} R⊕"}
+            }
+            fathom{
+                dnam{"فیدمز"}
+                one{"{0} فیدم"}
+                other{"{0} فیدم"}
+            }
             foot{
                 dnam{"فیٹ"}
                 one{"{0} فیٹ"}
                 other{"{0} فیٹ"}
                 per{"{0}/ft"}
             }
+            furlong{
+                dnam{"فرلانگز"}
+                one{"{0} فرلانگ"}
+                other{"{0} فرلانگ"}
+            }
             inch{
                 dnam{"انچ"}
                 one{"{0} انچ"}
@@ -1714,6 +1807,16 @@
             }
         }
         light{
+            candela{
+                dnam{"cd"}
+                one{"{0} cd"}
+                other{"{0} cd"}
+            }
+            lumen{
+                dnam{"lm"}
+                one{"{0} lm"}
+                other{"{0} lm"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} lx"}
@@ -1739,6 +1842,11 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"گرین"}
+                one{"{0} گرین"}
+                other{"{0} گرین"}
+            }
             gram{
                 dnam{"گرام"}
                 one{"{0} g"}
@@ -1931,6 +2039,11 @@
             barrel{
                 dnam{"بیرل"}
             }
+            bushel{
+                dnam{"بُشلز"}
+                one{"{0} بو"}
+                other{"{0} بو"}
+            }
             centiliter{
                 dnam{"سینٹی لیٹر"}
                 one{"{0} cL"}
@@ -1988,6 +2101,25 @@
                 one{"{0} dL"}
                 other{"{0} dL"}
             }
+            dessert-spoon{
+                dnam{"ڈیزرٹ اسپون"}
+                one{"{0} dstspn"}
+                other{"{0} dstspn"}
+            }
+            dessert-spoon-imperial{
+                one{"{0} dstspn Imp"}
+                other{"{0} dstspn Imp"}
+            }
+            dram{
+                dnam{"ڈرام فلوئیڈ"}
+                one{"{0} ڈرام فلوئیڈ"}
+                other{"{0} ڈرام فلوئیڈ"}
+            }
+            drop{
+                dnam{"قطرہ"}
+                one{"{0} قطرہ"}
+                other{"{0} قطرہ"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
@@ -2010,6 +2142,11 @@
                 one{"{0} hL"}
                 other{"{0} hL"}
             }
+            jigger{
+                dnam{"جگر"}
+                one{"{0} جگر"}
+                other{"{0} جگر"}
+            }
             liter{
                 dnam{"لیٹر"}
                 one{"{0} لیٹر"}
@@ -2026,6 +2163,11 @@
                 one{"{0} mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"چٹکی"}
+                one{"{0} چٹکی"}
+                other{"{0} چٹکی"}
+            }
             pint{
                 dnam{"pt"}
                 one{"{0} pt"}
@@ -2041,6 +2183,11 @@
                 one{"{0} qt"}
                 other{"{0} qt"}
             }
+            quart-imperial{
+                dnam{"qt Imp"}
+                one{"{0} qt Imp."}
+                other{"{0} qt Imp."}
+            }
             tablespoon{
                 dnam{"tbsp"}
                 one{"{0} tbsp"}
diff --git a/icu4c/source/data/unit/ur_IN.txt b/icu4c/source/data/unit/ur_IN.txt
index fbed9da..f3ec87d 100644
--- a/icu4c/source/data/unit/ur_IN.txt
+++ b/icu4c/source/data/unit/ur_IN.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ur_IN{
-    Version{"37"}
     units{
         length{
             astronomical-unit{
diff --git a/icu4c/source/data/unit/uz.txt b/icu4c/source/data/unit/uz.txt
index e1511bb..396f5cd 100644
--- a/icu4c/source/data/unit/uz.txt
+++ b/icu4c/source/data/unit/uz.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -129,9 +129,9 @@
                 other{"{0} promille"}
             }
             permillion{
-                dnam{"millionning ulushi"}
-                one{"milliondan {0}"}
-                other{"milliondan {0}"}
+                dnam{"qism/million"}
+                one{"{0} qism/million"}
+                other{"{0} qism/million"}
             }
             permyriad{
                 dnam{"promiriada"}
@@ -398,6 +398,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"piksel"}
+                one{"{0} piksel"}
+                other{"{0} piksel"}
+            }
             dot-per-centimeter{
                 dnam{"nuqta/santimetr"}
                 one{"{0} nuqta/santimetr"}
@@ -449,12 +454,27 @@
                 one{"{0} detsimetr"}
                 other{"{0} detsimetr"}
             }
+            earth-radius{
+                dnam{"yer radiusi"}
+                one{"{0} yer radiusi"}
+                other{"{0} yer radiusi"}
+            }
+            fathom{
+                dnam{"fatom"}
+                one{"{0} fatom"}
+                other{"{0} fatom"}
+            }
             foot{
                 dnam{"fut"}
                 one{"{0} fut"}
                 other{"{0} fut"}
                 per{"{0}/fut"}
             }
+            furlong{
+                dnam{"farlong"}
+                one{"{0} farlong"}
+                other{"{0} farlong"}
+            }
             inch{
                 dnam{"duym"}
                 one{"{0} duym"}
@@ -535,6 +555,16 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                one{"{0} kandela"}
+                other{"{0} kandela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                one{"{0} lumen"}
+                other{"{0} lumen"}
+            }
             lux{
                 dnam{"lyuks"}
                 one{"{0} lyuks"}
@@ -562,6 +592,11 @@
                 one{"{0} Yer massasi"}
                 other{"{0} Yer massasi"}
             }
+            grain{
+                dnam{"gran"}
+                one{"{0} gran"}
+                other{"{0} gran"}
+            }
             gram{
                 dnam{"gramm"}
                 one{"{0} gramm"}
@@ -611,6 +646,11 @@
                 one{"{0} quyosh massasi"}
                 other{"{0} quyosh massasi"}
             }
+            stone{
+                dnam{"tosh"}
+                one{"{0} tosh"}
+                other{"{0} tosh"}
+            }
             ton{
                 dnam{"amerika tonnasi"}
                 one{"{0} amerika tonnasi"}
@@ -691,9 +731,9 @@
                 other{"{0} paskal"}
             }
             pound-force-per-square-inch{
-                dnam{"funt/kvadrat duym"}
-                one{"{0} funt/kvadrat duym"}
-                other{"{0} funt/kvadrat duym"}
+                dnam{"funt/duym kvadrat"}
+                one{"{0} funt/duym kvadrat"}
+                other{"{0} funt/duym kvadrat"}
             }
         }
         speed{
@@ -748,7 +788,7 @@
             }
             pound-force-foot{
                 dnam{"funt-fut"}
-                one{"{0} funt-fut"}
+                one{"{0} funt-kuch-fut"}
                 other{"{0} funt-fut"}
             }
         }
@@ -763,6 +803,11 @@
                 one{"{0} barrel"}
                 other{"{0} barrel"}
             }
+            bushel{
+                dnam{"bushel"}
+                one{"{0} bushel"}
+                other{"{0} bushel"}
+            }
             centiliter{
                 dnam{"santilitr"}
                 one{"{0} santilitr"}
@@ -820,6 +865,26 @@
                 one{"{0} detsilitr"}
                 other{"{0} detsilitr"}
             }
+            dessert-spoon{
+                dnam{"desert qoshiq"}
+                one{"{0} desert qoshiq"}
+                other{"{0} desert qoshiq"}
+            }
+            dessert-spoon-imperial{
+                dnam{"imp. desert qoshiq"}
+                one{"{0} imp. desert qoshiq"}
+                other{"{0} imp. desert qoshiq"}
+            }
+            dram{
+                dnam{"draxma"}
+                one{"{0} draxma"}
+                other{"{0} draxma"}
+            }
+            drop{
+                dnam{"tomchi"}
+                one{"{0} tomchi"}
+                other{"{0} tomchi"}
+            }
             fluid-ounce{
                 dnam{"suyuq unsiya"}
                 one{"{0} suyuq unsiya"}
@@ -847,6 +912,11 @@
                 one{"{0} gektolitr"}
                 other{"{0} gektolitr"}
             }
+            jigger{
+                dnam{"qadah"}
+                one{"{0} qadah"}
+                other{"{0} qadah"}
+            }
             liter{
                 dnam{"litr"}
                 one{"{0} litr"}
@@ -863,6 +933,11 @@
                 one{"{0} millilitr"}
                 other{"{0} millilitr"}
             }
+            pinch{
+                dnam{"chimdim"}
+                one{"{0} chimdim"}
+                other{"{0} chimdim"}
+            }
             pint{
                 dnam{"pint"}
                 one{"{0} pint"}
@@ -878,6 +953,11 @@
                 one{"{0} kvart"}
                 other{"{0} kvart"}
             }
+            quart-imperial{
+                dnam{"imp kvarta"}
+                one{"{0} imp. kvarta"}
+                other{"{0} imp. kvarta"}
+            }
             tablespoon{
                 dnam{"osh qoshiq"}
                 one{"{0} osh qoshiq"}
@@ -1003,6 +1083,11 @@
                 other{"{0} yil"}
             }
         }
+        graphics{
+            dot{
+                dnam{"piksel"}
+            }
+        }
         length{
             centimeter{
                 dnam{"sm"}
@@ -1272,9 +1357,9 @@
                 other{"{0}‰"}
             }
             permillion{
-                dnam{"ppm"}
-                one{"{0} ppm"}
-                other{"{0} ppm"}
+                dnam{"qism/million"}
+                one{"{0} qism/million"}
+                other{"{0} qism/million"}
             }
             permyriad{
                 dnam{"promiriada"}
@@ -1541,6 +1626,11 @@
             }
         }
         graphics{
+            dot{
+                dnam{"piksel"}
+                one{"{0} piksel"}
+                other{"{0} piksel"}
+            }
             dot-per-centimeter{
                 dnam{"nuqta/sm"}
                 one{"{0} nuqta/sm"}
@@ -1594,12 +1684,27 @@
                 one{"{0} dm"}
                 other{"{0} dm"}
             }
+            earth-radius{
+                dnam{"yer radiusi"}
+                one{"{0} yer radiusi"}
+                other{"{0} yer radiusi"}
+            }
+            fathom{
+                dnam{"fatom"}
+                one{"{0} fatom"}
+                other{"{0} fatom"}
+            }
             foot{
                 dnam{"fut"}
                 one{"{0} fut"}
                 other{"{0} fut"}
                 per{"{0} fut"}
             }
+            furlong{
+                dnam{"farlong"}
+                one{"{0} farlong"}
+                other{"{0} farlong"}
+            }
             inch{
                 dnam{"duym"}
                 one{"{0} dy"}
@@ -1680,6 +1785,16 @@
             }
         }
         light{
+            candela{
+                dnam{"kandela"}
+                one{"{0} kandela"}
+                other{"{0} kandela"}
+            }
+            lumen{
+                dnam{"lm"}
+                one{"{0} lm"}
+                other{"{0} lm"}
+            }
             lux{
                 dnam{"lk"}
                 one{"{0} lk"}
@@ -1707,6 +1822,11 @@
                 one{"{0} M⊕"}
                 other{"{0} M⊕"}
             }
+            grain{
+                dnam{"gran"}
+                one{"{0} gran"}
+                other{"{0} gran"}
+            }
             gram{
                 dnam{"gramm"}
                 one{"{0} g"}
@@ -1756,6 +1876,11 @@
                 one{"{0} M☉"}
                 other{"{0} M☉"}
             }
+            stone{
+                dnam{"tosh"}
+                one{"{0} tosh"}
+                other{"{0} tosh"}
+            }
             ton{
                 dnam{"amer. t"}
                 one{"{0} amer. t"}
@@ -1811,9 +1936,9 @@
                 other{"{0} gPa"}
             }
             inch-ofhg{
-                dnam{"dy sim.ust"}
-                one{"{0} dy sim.ust"}
-                other{"{0} dy sim.ust"}
+                dnam{"inHg"}
+                one{"{0} inHg"}
+                other{"{0} inHg"}
             }
             kilopascal{
                 dnam{"kPa"}
@@ -1831,9 +1956,8 @@
                 other{"{0} mbar"}
             }
             millimeter-ofhg{
-                dnam{"mm sim.ust"}
-                one{"{0} mm sim.ust"}
-                other{"{0} mm sim.ust"}
+                one{"{0} mmHg"}
+                other{"{0} mmHg"}
             }
             pascal{
                 dnam{"Pa"}
@@ -1841,9 +1965,9 @@
                 other{"{0} Pa"}
             }
             pound-force-per-square-inch{
-                dnam{"funt/kv.dy"}
-                one{"{0} funt/kv.dy"}
-                other{"{0} funt/kv.dy"}
+                dnam{"funt/dy.kv"}
+                one{"{0} funt/dy.kv"}
+                other{"{0} funt/dy.kv"}
             }
         }
         speed{
@@ -1897,9 +2021,9 @@
                 other{"{0} N⋅m"}
             }
             pound-force-foot{
-                dnam{"funt-fut"}
-                one{"{0} funt-fut"}
-                other{"{0} funt-fut"}
+                dnam{"funt-kuch-fut"}
+                one{"{0} funt-kuch-fut"}
+                other{"{0} funt-kuch-fut"}
             }
         }
         volume{
@@ -1913,6 +2037,11 @@
                 one{"{0} barrel"}
                 other{"{0} barrel"}
             }
+            bushel{
+                dnam{"bushel"}
+                one{"{0} bushel"}
+                other{"{0} bushel"}
+            }
             centiliter{
                 dnam{"sL"}
                 one{"{0} sL"}
@@ -1970,6 +2099,26 @@
                 one{"{0} dL"}
                 other{"{0} dL"}
             }
+            dessert-spoon{
+                dnam{"desert qoshiq"}
+                one{"{0} desert qoshiq"}
+                other{"{0} desert qoshiq"}
+            }
+            dessert-spoon-imperial{
+                dnam{"imp desert qoshiq"}
+                one{"{0} imp desert qoshiq"}
+                other{"{0} imp desert qoshiq"}
+            }
+            dram{
+                dnam{"suyuqlik draxmasi"}
+                one{"{0} suyuqlik draxmasi"}
+                other{"{0} suyuqlik draxmasi"}
+            }
+            drop{
+                dnam{"tomchi"}
+                one{"{0} tomchi"}
+                other{"{0} tomchi"}
+            }
             fluid-ounce{
                 dnam{"suyuq unsiya"}
                 one{"{0} suyuq unsiya"}
@@ -1997,6 +2146,11 @@
                 one{"{0} gL"}
                 other{"{0} gL"}
             }
+            jigger{
+                dnam{"qadah"}
+                one{"{0} qadah"}
+                other{"{0} qadah"}
+            }
             liter{
                 dnam{"litr"}
                 one{"{0} L"}
@@ -2013,6 +2167,11 @@
                 one{"{0} mL"}
                 other{"{0} mL"}
             }
+            pinch{
+                dnam{"chimdim"}
+                one{"{0} chimdim"}
+                other{"{0} chimdim"}
+            }
             pint{
                 dnam{"pint"}
                 one{"{0} pint"}
@@ -2028,6 +2187,11 @@
                 one{"{0} kvart"}
                 other{"{0} kvart"}
             }
+            quart-imperial{
+                dnam{"imp kvarta"}
+                one{"{0} imp. kvarta"}
+                other{"{0} imp. kvarta"}
+            }
             tablespoon{
                 dnam{"osh qoshiq"}
                 one{"{0} osh qoshiq"}
diff --git a/icu4c/source/data/unit/uz_AF.txt b/icu4c/source/data/unit/uz_AF.txt
index 24ca294..0e8d20c 100644
--- a/icu4c/source/data/unit/uz_AF.txt
+++ b/icu4c/source/data/unit/uz_AF.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_AF{
     "%%ALIAS"{"uz_Arab_AF"}
 }
diff --git a/icu4c/source/data/unit/uz_Arab.txt b/icu4c/source/data/unit/uz_Arab.txt
index 40d0b74..f1546d8 100644
--- a/icu4c/source/data/unit/uz_Arab.txt
+++ b/icu4c/source/data/unit/uz_Arab.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Arab{
     %%Parent{"root"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/uz_Arab_AF.txt b/icu4c/source/data/unit/uz_Arab_AF.txt
index e45d708..e2978bb 100644
--- a/icu4c/source/data/unit/uz_Arab_AF.txt
+++ b/icu4c/source/data/unit/uz_Arab_AF.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/uz_Cyrl.txt b/icu4c/source/data/unit/uz_Cyrl.txt
index 7b5673d..2c1a615 100644
--- a/icu4c/source/data/unit/uz_Cyrl.txt
+++ b/icu4c/source/data/unit/uz_Cyrl.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Cyrl{
     %%Parent{"root"}
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/uz_Latn.txt b/icu4c/source/data/unit/uz_Latn.txt
index f6035b7..1ae52da 100644
--- a/icu4c/source/data/unit/uz_Latn.txt
+++ b/icu4c/source/data/unit/uz_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/uz_Latn_UZ.txt b/icu4c/source/data/unit/uz_Latn_UZ.txt
index 2d34eff..356e549 100644
--- a/icu4c/source/data/unit/uz_Latn_UZ.txt
+++ b/icu4c/source/data/unit/uz_Latn_UZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/uz_UZ.txt b/icu4c/source/data/unit/uz_UZ.txt
index ffac532..3a6a14d 100644
--- a/icu4c/source/data/unit/uz_UZ.txt
+++ b/icu4c/source/data/unit/uz_UZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_UZ{
     "%%ALIAS"{"uz_Latn_UZ"}
 }
diff --git a/icu4c/source/data/unit/vai.txt b/icu4c/source/data/unit/vai.txt
index 00fb305..f1f79bb 100644
--- a/icu4c/source/data/unit/vai.txt
+++ b/icu4c/source/data/unit/vai.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/vai_LR.txt b/icu4c/source/data/unit/vai_LR.txt
index 27d4238..f682350 100644
--- a/icu4c/source/data/unit/vai_LR.txt
+++ b/icu4c/source/data/unit/vai_LR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_LR{
     "%%ALIAS"{"vai_Vaii_LR"}
 }
diff --git a/icu4c/source/data/unit/vai_Latn.txt b/icu4c/source/data/unit/vai_Latn.txt
index 43baa49..2a01a5c 100644
--- a/icu4c/source/data/unit/vai_Latn.txt
+++ b/icu4c/source/data/unit/vai_Latn.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_Latn{
     %%Parent{"root"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/vai_Vaii.txt b/icu4c/source/data/unit/vai_Vaii.txt
index cffa591..6dc5e99 100644
--- a/icu4c/source/data/unit/vai_Vaii.txt
+++ b/icu4c/source/data/unit/vai_Vaii.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_Vaii{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/vai_Vaii_LR.txt b/icu4c/source/data/unit/vai_Vaii_LR.txt
index a17bc11..d2845ca 100644
--- a/icu4c/source/data/unit/vai_Vaii_LR.txt
+++ b/icu4c/source/data/unit/vai_Vaii_LR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/vi.txt b/icu4c/source/data/unit/vi.txt
index 1943b39..e0344f0 100644
--- a/icu4c/source/data/unit/vi.txt
+++ b/icu4c/source/data/unit/vi.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vi{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -281,6 +281,10 @@
             }
         }
         graphics{
+            dot{
+                dnam{"chấm"}
+                other{"{0} chấm"}
+            }
             dot-per-centimeter{
                 dnam{"chấm/xentimét"}
                 other{"{0} chấm/xentimét"}
@@ -319,6 +323,10 @@
                 dnam{"đềximét"}
                 other{"{0} đềximét"}
             }
+            earth-radius{
+                dnam{"bán kính trái đất"}
+                other{"{0} bán kính trái đất"}
+            }
             foot{
                 dnam{"feet"}
                 other{"{0} feet"}
@@ -386,6 +394,14 @@
             }
         }
         light{
+            candela{
+                dnam{"candela"}
+                other{"{0} candela"}
+            }
+            lumen{
+                dnam{"lumen"}
+                other{"{0} lumen"}
+            }
             lux{
                 dnam{"lux"}
                 other{"{0} lux"}
@@ -408,6 +424,10 @@
                 dnam{"Trọng lượng trái đất"}
                 other{"{0} trọng lượng trái đất"}
             }
+            grain{
+                dnam{"gren"}
+                other{"{0} gren"}
+            }
             gram{
                 dnam{"gam"}
                 other{"{0} gam"}
@@ -582,6 +602,7 @@
                 other{"{0} yard khối"}
             }
             cup{
+                dnam{"tách"}
                 other{"{0} cup"}
             }
             cup-metric{
@@ -592,6 +613,22 @@
                 dnam{"đềxilít"}
                 other{"{0} đềxilít"}
             }
+            dessert-spoon{
+                dnam{"thìa ăn tráng miệng"}
+                other{"{0} thìa ăn tráng miệng"}
+            }
+            dessert-spoon-imperial{
+                dnam{"thìa ăn tráng miệng Anh"}
+                other{"{0} thìa ăn tráng miệng Anh"}
+            }
+            dram{
+                dnam{"dram"}
+                other{"{0} dram chất lỏng Anh"}
+            }
+            drop{
+                dnam{"giọt"}
+                other{"{0} giọt"}
+            }
             fluid-ounce{
                 dnam{"aoxơ chất lỏng"}
                 other{"{0} aoxơ chất lỏng"}
@@ -614,6 +651,10 @@
                 dnam{"hectolit"}
                 other{"{0} hectolit"}
             }
+            jigger{
+                dnam{"jigger"}
+                other{"{0} jigger"}
+            }
             liter{
                 dnam{"lít"}
                 other{"{0} lít"}
@@ -626,6 +667,10 @@
                 dnam{"mililít"}
                 other{"{0} mililít"}
             }
+            pinch{
+                dnam{"nhúm"}
+                other{"{0} nhúm"}
+            }
             pint{
                 dnam{"panh"}
                 other{"{0} panh"}
@@ -638,6 +683,10 @@
                 dnam{"quart"}
                 other{"{0} quart"}
             }
+            quart-imperial{
+                dnam{"lít Anh"}
+                other{"{0} lít Anh"}
+            }
             tablespoon{
                 dnam{"muỗng canh"}
                 other{"{0} muỗng canh"}
@@ -1019,6 +1068,10 @@
             }
         }
         graphics{
+            dot{
+                dnam{"chấm"}
+                other{"{0} chấm"}
+            }
             megapixel{
                 dnam{"megapixel"}
             }
@@ -1033,6 +1086,10 @@
             decimeter{
                 dnam{"dm"}
             }
+            earth-radius{
+                dnam{"R⊕"}
+                other{"{0} R⊕"}
+            }
             inch{
                 dnam{"inch"}
                 other{"{0} inch"}
@@ -1072,6 +1129,14 @@
             }
         }
         light{
+            candela{
+                dnam{"cd"}
+                other{"{0} cd"}
+            }
+            lumen{
+                dnam{"lm"}
+                other{"{0} lm"}
+            }
             solar-luminosity{
                 dnam{"độ sáng của mặt trời"}
                 other{"{0} L☉"}
@@ -1089,6 +1154,10 @@
             earth-mass{
                 dnam{"Trọng lượng trái đất"}
             }
+            grain{
+                dnam{"gren"}
+                other{"{0} gren"}
+            }
             gram{
                 dnam{"g"}
             }
@@ -1203,6 +1272,7 @@
             }
             cup{
                 dnam{"c"}
+                other{"{0} tách"}
             }
             cup-metric{
                 dnam{"mcup"}
@@ -1210,6 +1280,21 @@
             deciliter{
                 dnam{"dL"}
             }
+            dessert-spoon{
+                dnam{"thìa tráng miệng"}
+                other{"{0} thìa tm"}
+            }
+            dessert-spoon-imperial{
+                dnam{"thìa tráng miệng Anh"}
+                other{"{0} thìa tm Anh"}
+            }
+            dram{
+                dnam{"dram chất lỏng"}
+            }
+            drop{
+                dnam{"giọt"}
+                other{"{0} giọt"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 other{"{0} fl oz"}
@@ -1231,6 +1316,10 @@
             hectoliter{
                 dnam{"hL"}
             }
+            jigger{
+                dnam{"jigger"}
+                other{"{0} jigger"}
+            }
             liter{
                 dnam{"l"}
                 other{"{0} L"}
@@ -1242,14 +1331,24 @@
             milliliter{
                 dnam{"mL"}
             }
+            pinch{
+                dnam{"nhúm"}
+                other{"{0} nhúm"}
+            }
             pint-metric{
                 dnam{"mpt"}
             }
+            quart-imperial{
+                dnam{"lít Anh"}
+                other{"{0} lít Anh"}
+            }
             tablespoon{
                 dnam{"thìa xúp"}
+                other{"{0} thìa xúp"}
             }
             teaspoon{
                 dnam{"tsp"}
+                other{"{0} thìa cà phê"}
             }
         }
     }
diff --git a/icu4c/source/data/unit/vun.txt b/icu4c/source/data/unit/vun.txt
index 8db299d..6e8c781 100644
--- a/icu4c/source/data/unit/vun.txt
+++ b/icu4c/source/data/unit/vun.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vun{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/wae.txt b/icu4c/source/data/unit/wae.txt
index 5efff32..976666e 100644
--- a/icu4c/source/data/unit/wae.txt
+++ b/icu4c/source/data/unit/wae.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 wae{
-    Version{"37"}
     units{
         duration{
             day{
diff --git a/icu4c/source/data/unit/wo.txt b/icu4c/source/data/unit/wo.txt
index 4864d76..bdde590 100644
--- a/icu4c/source/data/unit/wo.txt
+++ b/icu4c/source/data/unit/wo.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 wo{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/xh.txt b/icu4c/source/data/unit/xh.txt
index a659eb8..3a7aa5d 100644
--- a/icu4c/source/data/unit/xh.txt
+++ b/icu4c/source/data/unit/xh.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 xh{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/xog.txt b/icu4c/source/data/unit/xog.txt
index bd9bdd8..059ee19 100644
--- a/icu4c/source/data/unit/xog.txt
+++ b/icu4c/source/data/unit/xog.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 xog{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/yav.txt b/icu4c/source/data/unit/yav.txt
index 2ad349bf..5bbb6b1 100644
--- a/icu4c/source/data/unit/yav.txt
+++ b/icu4c/source/data/unit/yav.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yav{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/yi.txt b/icu4c/source/data/unit/yi.txt
index 0e8bcf7..97ea9bb 100644
--- a/icu4c/source/data/unit/yi.txt
+++ b/icu4c/source/data/unit/yi.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yi{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
diff --git a/icu4c/source/data/unit/yo.txt b/icu4c/source/data/unit/yo.txt
index 8ed6ad4..a154e86 100644
--- a/icu4c/source/data/unit/yo.txt
+++ b/icu4c/source/data/unit/yo.txt
@@ -1,13 +1,64 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yo{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
         ms{"m:ss"}
     }
     units{
+        concentr{
+            permille{
+                other{"{0} ìdákan nínú ẹgbẹ̀rún"}
+            }
+        }
+        digital{
+            bit{
+                dnam{"àwọ́n bíìtì"}
+                other{"{0} àwọ́n bíìtì"}
+            }
+            byte{
+                dnam{"àwọ́n báìtì"}
+                other{"{0} àwọ́n báìtì"}
+            }
+            gigabit{
+                dnam{"àwọn gígábíìtì"}
+                other{"{0} àwọn gígábíìtì"}
+            }
+            gigabyte{
+                dnam{"àwọn gígábáìtì"}
+                other{"{0} àwọn gígábáìtì"}
+            }
+            kilobit{
+                dnam{"àwọn kílóbíìtì"}
+                other{"{0} àwọ́n kílóbíìtì"}
+            }
+            kilobyte{
+                dnam{"àwọn kílóbáìtì"}
+                other{"{0} àwọn kílóbáìtì"}
+            }
+            megabit{
+                dnam{"àwọn mégábíìtì"}
+                other{"{0} àwọn mégábíìtì"}
+            }
+            megabyte{
+                dnam{"àwọn mégábáìtì"}
+                other{"{0} àwọn mégábáìtì"}
+            }
+            petabyte{
+                dnam{"àwọn pẹ́tábáìtì"}
+                other{"{0} àwọn pẹ́tábáìtì"}
+            }
+            terabit{
+                dnam{"àwọn tẹ́rábíìtì"}
+                other{"{0} àwọn tẹ́rábíìtì"}
+            }
+            terabyte{
+                dnam{"àwọn tẹ́rábáìtì"}
+                other{"{0} àwọn tẹ́rábáìtì"}
+            }
+        }
         duration{
             century{
                 dnam{"ọ̀rúndún"}
@@ -53,6 +104,64 @@
                 per{"{0} ọd"}
             }
         }
+        graphics{
+            dot{
+                dnam{"dọ́ọ̀tì"}
+                other{"{0} dọ́ọ̀tì"}
+            }
+        }
+        length{
+            earth-radius{
+                dnam{"ìdinwọ̀n ayé"}
+                other{"{0} ìdinwọ̀n ayé"}
+            }
+        }
+        light{
+            candela{
+                dnam{"kandẹ́là"}
+                other{"{0} kandẹ́là"}
+            }
+            lumen{
+                dnam{"lumẹ́ẹ̀nì"}
+                other{"{0} lumẹ́ẹ̀nì"}
+            }
+        }
+        mass{
+            grain{
+                dnam{"giréènì"}
+                other{"{0} gíréènì"}
+            }
+        }
+        volume{
+            dessert-spoon{
+                dnam{"àmì ṣíbí oúnjẹ́ kékeré"}
+                other{"{0} àmì ṣíbí oúnjẹ́ kékeré"}
+            }
+            dessert-spoon-imperial{
+                dnam{"ṣíbí oúnjẹ kékeré"}
+                other{"{0} àmì oúnjẹ kékeré"}
+            }
+            dram{
+                dnam{"omi dírámù"}
+                other{"{0} àmì omi dírámù"}
+            }
+            drop{
+                dnam{"dírọ́pù"}
+                other{"{0} dírọ́pù"}
+            }
+            jigger{
+                dnam{"jígà"}
+                other{"{0} jígà"}
+            }
+            pinch{
+                dnam{"píńṣì"}
+                other{"{0} píńṣì"}
+            }
+            quart-imperial{
+                dnam{"ìdásímérin"}
+                other{"{0} ìdásímérin"}
+            }
+        }
     }
     unitsNarrow{
         duration{
@@ -87,6 +196,53 @@
         }
     }
     unitsShort{
+        concentr{
+            permille{
+                dnam{"ìdákan nínú ẹgbẹ̀rún"}
+                other{"{0} àmì ìdákan"}
+            }
+        }
+        digital{
+            bit{
+                dnam{"bíìtì"}
+                other{"{0} bíìtì"}
+            }
+            byte{
+                dnam{"báìtì"}
+                other{"{0} báìtì"}
+            }
+            gigabit{
+                dnam{"jíbíìtì"}
+                other{"{0}jíbíìtì"}
+            }
+            gigabyte{
+                dnam{"jíbáìtì"}
+                other{"{0} jíbáìtì"}
+            }
+            kilobit{
+                dnam{"kébiì"}
+                other{"{0} kébiì"}
+            }
+            kilobyte{
+                dnam{"kébáìtì"}
+                other{"{0} kébáìtì"}
+            }
+            megabit{
+                dnam{"ẹ́mbíìtì"}
+                other{"{0} ẹ́mbiì"}
+            }
+            megabyte{
+                dnam{"ẹ́mbáìtì"}
+            }
+            petabyte{
+                dnam{"Píbáìtì"}
+                other{"{0} Píbáìtì"}
+            }
+            terabyte{
+                dnam{"Tíbáìtì"}
+                other{"{0} Tíbáìtì"}
+            }
+        }
         duration{
             day{
                 dnam{"ọjọ́"}
@@ -128,5 +284,63 @@
                 per{"{0}/ọd"}
             }
         }
+        graphics{
+            dot{
+                dnam{"dọ́ọ̀tì"}
+                other{"{0} dọ́ọ̀tì"}
+            }
+        }
+        length{
+            earth-radius{
+                dnam{"àmì ìdínwọ̀n ayé"}
+                other{"{0} àmì ìdínwọ̀n ayé"}
+            }
+        }
+        light{
+            candela{
+                dnam{"sídiì"}
+                other{"{0} sídiì"}
+            }
+            lumen{
+                dnam{"àmì lumẹ́ẹ̀nì"}
+                other{"{0} àmi lumẹ́ẹ̀nì"}
+            }
+        }
+        mass{
+            grain{
+                dnam{"gíréènì"}
+                other{"{0} gíréènì"}
+            }
+        }
+        volume{
+            dessert-spoon{
+                dnam{"ṣíbí oúnjẹ́ kékeré"}
+                other{"{0} ṣíbí oúnjẹ́ kékeré"}
+            }
+            dessert-spoon-imperial{
+                dnam{"àmì oúnjẹ kékeré"}
+                other{"{0} àmì oúnjẹ kékeré"}
+            }
+            dram{
+                dnam{"omi dírámù"}
+                other{"{0} àmì omi dírámù"}
+            }
+            drop{
+                dnam{"dírọ́pù"}
+                other{"{0} dírọ́pù"}
+            }
+            jigger{
+                dnam{"jígà"}
+                other{"{0} jígà"}
+            }
+            pinch{
+                dnam{"píńṣì"}
+                other{"{0} píńṣì"}
+            }
+            quart-imperial{
+                dnam{"àmì ìdásímérin"}
+                other{"{0} àmì ìdásímérin"}
+            }
+        }
     }
 }
diff --git a/icu4c/source/data/unit/yo_BJ.txt b/icu4c/source/data/unit/yo_BJ.txt
index 5f42132..f46277f 100644
--- a/icu4c/source/data/unit/yo_BJ.txt
+++ b/icu4c/source/data/unit/yo_BJ.txt
@@ -1,8 +1,59 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yo_BJ{
-    Version{"37"}
     units{
+        concentr{
+            permille{
+                other{"{0} ìdákan nínú ɛgbɛ̀rún"}
+            }
+        }
+        digital{
+            bit{
+                dnam{"àwɔ́n bíìtì"}
+                other{"{0} àwɔ́n bíìtì"}
+            }
+            byte{
+                dnam{"àwɔ́n báìtì"}
+                other{"{0} àwɔ́n báìtì"}
+            }
+            gigabit{
+                dnam{"àwɔn gígábíìtì"}
+                other{"{0} àwɔn gígábíìtì"}
+            }
+            gigabyte{
+                dnam{"àwɔn gígábáìtì"}
+                other{"{0} àwɔn gígábáìtì"}
+            }
+            kilobit{
+                dnam{"àwɔn kílóbíìtì"}
+                other{"{0} àwɔ́n kílóbíìtì"}
+            }
+            kilobyte{
+                dnam{"àwɔn kílóbáìtì"}
+                other{"{0} àwɔn kílóbáìtì"}
+            }
+            megabit{
+                dnam{"àwɔn mégábíìtì"}
+                other{"{0} àwɔn mégábíìtì"}
+            }
+            megabyte{
+                dnam{"àwɔn mégábáìtì"}
+                other{"{0} àwɔn mégábáìtì"}
+            }
+            petabyte{
+                dnam{"àwɔn pɛ́tábáìtì"}
+                other{"{0} àwɔn pɛ́tábáìtì"}
+            }
+            terabit{
+                dnam{"àwɔn tɛ́rábíìtì"}
+                other{"{0} àwɔn tɛ́rábíìtì"}
+            }
+            terabyte{
+                dnam{"àwɔn tɛ́rábáìtì"}
+                other{"{0} àwɔn tɛ́rábáìtì"}
+            }
+        }
         duration{
             century{
                 dnam{"ɔ̀rúndún"}
@@ -43,6 +94,46 @@
                 per{"{0} ɔd"}
             }
         }
+        graphics{
+            dot{
+                dnam{"dɔ́ɔ̀tì"}
+                other{"{0} dɔ́ɔ̀tì"}
+            }
+        }
+        length{
+            earth-radius{
+                dnam{"ìdinwɔ̀n ayé"}
+                other{"{0} ìdinwɔ̀n ayé"}
+            }
+        }
+        light{
+            candela{
+                dnam{"kandɛ́là"}
+                other{"{0} kandɛ́là"}
+            }
+            lumen{
+                dnam{"lumɛ́ɛ̀nì"}
+                other{"{0} lumɛ́ɛ̀nì"}
+            }
+        }
+        volume{
+            dessert-spoon{
+                dnam{"àmì shíbí oúnjɛ́ kékeré"}
+                other{"{0} àmì shíbí oúnjɛ́ kékeré"}
+            }
+            dessert-spoon-imperial{
+                dnam{"shíbí oúnjɛ kékeré"}
+                other{"{0} àmì oúnjɛ kékeré"}
+            }
+            drop{
+                dnam{"dírɔ́pù"}
+                other{"{0} dírɔ́pù"}
+            }
+            pinch{
+                dnam{"píńshì"}
+                other{"{0} píńshì"}
+            }
+        }
     }
     unitsNarrow{
         duration{
@@ -73,6 +164,20 @@
         }
     }
     unitsShort{
+        concentr{
+            permille{
+                dnam{"ìdákan nínú ɛgbɛ̀rún"}
+            }
+        }
+        digital{
+            megabit{
+                dnam{"ɛ́mbíìtì"}
+                other{"{0} ɛ́mbiì"}
+            }
+            megabyte{
+                dnam{"ɛ́mbáìtì"}
+            }
+        }
         duration{
             day{
                 dnam{"ɔjɔ́"}
@@ -109,5 +214,41 @@
                 per{"{0}/ɔd"}
             }
         }
+        graphics{
+            dot{
+                dnam{"dɔ́ɔ̀tì"}
+                other{"{0} dɔ́ɔ̀tì"}
+            }
+        }
+        length{
+            earth-radius{
+                dnam{"àmì ìdínwɔ̀n ayé"}
+                other{"{0} àmì ìdínwɔ̀n ayé"}
+            }
+        }
+        light{
+            lumen{
+                dnam{"àmì lumɛ́ɛ̀nì"}
+                other{"{0} àmi lumɛ́ɛ̀nì"}
+            }
+        }
+        volume{
+            dessert-spoon{
+                dnam{"shíbí oúnjɛ́ kékeré"}
+                other{"{0} shíbí oúnjɛ́ kékeré"}
+            }
+            dessert-spoon-imperial{
+                dnam{"àmì oúnjɛ kékeré"}
+                other{"{0} àmì oúnjɛ kékeré"}
+            }
+            drop{
+                dnam{"dírɔ́pù"}
+                other{"{0} dírɔ́pù"}
+            }
+            pinch{
+                dnam{"píńshì"}
+                other{"{0} píńshì"}
+            }
+        }
     }
 }
diff --git a/icu4c/source/data/unit/yue.txt b/icu4c/source/data/unit/yue.txt
index a755d4e..5e907ce 100644
--- a/icu4c/source/data/unit/yue.txt
+++ b/icu4c/source/data/unit/yue.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -337,6 +337,10 @@
             }
         }
         graphics{
+            dot{
+                dnam{"圓點"}
+                other{"{0} 個圓點"}
+            }
             dot-per-centimeter{
                 dnam{"每厘米點數"}
                 other{"{0} 點/厘米"}
@@ -380,6 +384,10 @@
                 dnam{"公寸"}
                 other{"{0} 公寸"}
             }
+            earth-radius{
+                dnam{"地球半徑"}
+                other{"{0} 地球半徑"}
+            }
             fathom{
                 dnam{"英尋"}
                 other{"{0} 英尋"}
@@ -458,6 +466,14 @@
             }
         }
         light{
+            candela{
+                dnam{"坎德拉"}
+                other{"{0} 坎德拉"}
+            }
+            lumen{
+                dnam{"流明"}
+                other{"{0} 流明"}
+            }
             lux{
                 dnam{"勒克斯"}
                 other{"{0} 勒克斯"}
@@ -480,6 +496,10 @@
                 dnam{"地球質量"}
                 other{"{0} 地球質量"}
             }
+            grain{
+                dnam{"喱"}
+                other{"{0}格令"}
+            }
             gram{
                 dnam{"克"}
                 other{"{0} 克"}
@@ -702,6 +722,22 @@
                 dnam{"公合"}
                 other{"{0} 公合"}
             }
+            dessert-spoon{
+                dnam{"甜品匙"}
+                other{"{0}甜品匙"}
+            }
+            dessert-spoon-imperial{
+                dnam{"英制甜品匙"}
+                other{"英制甜品匙{0}匙"}
+            }
+            dram{
+                dnam{"英制液量打蘭"}
+                other{"{0}英制液量打蘭"}
+            }
+            drop{
+                dnam{"滴"}
+                other{"{0}滴"}
+            }
             fluid-ounce{
                 dnam{"液盎司"}
                 other{"{0} 液盎司"}
@@ -724,6 +760,10 @@
                 dnam{"公石"}
                 other{"{0} 公石"}
             }
+            jigger{
+                dnam{"量酒杯"}
+                other{"量酒器{0}杯"}
+            }
             liter{
                 dnam{"公升"}
                 other{"{0} 公升"}
@@ -737,6 +777,10 @@
                 dnam{"毫升"}
                 other{"{0} 毫升"}
             }
+            pinch{
+                dnam{"小撮"}
+                other{"{0} 小撮"}
+            }
             pint{
                 dnam{"品脫"}
                 other{"{0} 品脫"}
@@ -749,6 +793,10 @@
                 dnam{"夸脫"}
                 other{"{0} 夸脫"}
             }
+            quart-imperial{
+                dnam{"英制夸脫"}
+                other{"{0} 英制夸脫"}
+            }
             tablespoon{
                 dnam{"湯匙"}
                 other{"{0} 湯匙"}
@@ -1530,6 +1578,10 @@
             }
         }
         graphics{
+            dot{
+                dnam{"圓點"}
+                other{"{0} 個圓點"}
+            }
             dot-per-centimeter{
                 dnam{"每厘米點數"}
                 other{"{0} 點/厘米"}
@@ -1573,6 +1625,10 @@
                 dnam{"公寸"}
                 other{"{0} 公寸"}
             }
+            earth-radius{
+                dnam{"地球半徑"}
+                other{"{0} 地球半徑"}
+            }
             fathom{
                 dnam{"fm"}
                 other{"{0} 英尋"}
@@ -1651,6 +1707,14 @@
             }
         }
         light{
+            candela{
+                dnam{"坎德拉"}
+                other{"{0} 坎德拉"}
+            }
+            lumen{
+                dnam{"流明"}
+                other{"{0} 流明"}
+            }
             lux{
                 dnam{"勒克斯"}
                 other{"{0} 勒克斯"}
@@ -1673,6 +1737,10 @@
                 dnam{"地球質量"}
                 other{"{0} 地球質量"}
             }
+            grain{
+                dnam{"喱"}
+                other{"{0} 喱"}
+            }
             gram{
                 dnam{"克"}
                 other{"{0} 克"}
@@ -1846,7 +1914,7 @@
                 other{"{0} 桶"}
             }
             bushel{
-                dnam{"bu"}
+                dnam{"蒲式耳"}
                 other{"{0} 蒲式耳"}
             }
             centiliter{
@@ -1895,6 +1963,22 @@
                 dnam{"公合"}
                 other{"{0} 公合"}
             }
+            dessert-spoon{
+                dnam{"甜品匙"}
+                other{"{0}甜品匙"}
+            }
+            dessert-spoon-imperial{
+                dnam{"英制甜品匙"}
+                other{"{0}英制甜品匙"}
+            }
+            dram{
+                dnam{"英制液量打蘭"}
+                other{"{0}英制液量打蘭"}
+            }
+            drop{
+                dnam{"滴"}
+                other{"{0}滴"}
+            }
             fluid-ounce{
                 dnam{"液盎司"}
                 other{"{0} 液盎司"}
@@ -1917,6 +2001,10 @@
                 dnam{"公石"}
                 other{"{0} 公石"}
             }
+            jigger{
+                dnam{"量酒杯"}
+                other{"量酒器{0}杯"}
+            }
             liter{
                 dnam{"公升"}
                 other{"{0} 公升"}
@@ -1930,6 +2018,10 @@
                 dnam{"毫升"}
                 other{"{0} 毫升"}
             }
+            pinch{
+                dnam{"小撮"}
+                other{"{0} 小撮"}
+            }
             pint{
                 dnam{"品脫"}
                 other{"{0} 品脫"}
@@ -1942,6 +2034,10 @@
                 dnam{"夸脫"}
                 other{"{0} 夸脫"}
             }
+            quart-imperial{
+                dnam{"英制夸脫"}
+                other{"{0} 英制夸脫"}
+            }
             tablespoon{
                 dnam{"湯匙"}
                 other{"{0} 湯匙"}
diff --git a/icu4c/source/data/unit/yue_CN.txt b/icu4c/source/data/unit/yue_CN.txt
index 26d4356..2a3cc8a 100644
--- a/icu4c/source/data/unit/yue_CN.txt
+++ b/icu4c/source/data/unit/yue_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_CN{
     "%%ALIAS"{"yue_Hans_CN"}
 }
diff --git a/icu4c/source/data/unit/yue_HK.txt b/icu4c/source/data/unit/yue_HK.txt
index 29a7459..7bce3c5 100644
--- a/icu4c/source/data/unit/yue_HK.txt
+++ b/icu4c/source/data/unit/yue_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_HK{
     "%%ALIAS"{"yue_Hant_HK"}
 }
diff --git a/icu4c/source/data/unit/yue_Hans.txt b/icu4c/source/data/unit/yue_Hans.txt
index 163e4f7..416a200 100644
--- a/icu4c/source/data/unit/yue_Hans.txt
+++ b/icu4c/source/data/unit/yue_Hans.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_Hans{
     %%Parent{"root"}
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -338,6 +338,10 @@
             }
         }
         graphics{
+            dot{
+                dnam{"圆点"}
+                other{"{0} 个圆点"}
+            }
             dot-per-centimeter{
                 dnam{"每厘米点数"}
                 other{"{0} 点/厘米"}
@@ -381,6 +385,10 @@
                 dnam{"公寸"}
                 other{"{0} 公寸"}
             }
+            earth-radius{
+                dnam{"地球半径"}
+                other{"{0} 地球半径"}
+            }
             fathom{
                 dnam{"英寻"}
                 other{"{0} 英寻"}
@@ -459,6 +467,14 @@
             }
         }
         light{
+            candela{
+                dnam{"坎德拉"}
+                other{"{0} 坎德拉"}
+            }
+            lumen{
+                dnam{"流明"}
+                other{"{0} 流明"}
+            }
             lux{
                 dnam{"勒克斯"}
                 other{"{0} 勒克斯"}
@@ -481,6 +497,10 @@
                 dnam{"地球质量"}
                 other{"{0} 地球质量"}
             }
+            grain{
+                dnam{"喱"}
+                other{"{0}格令"}
+            }
             gram{
                 dnam{"克"}
                 other{"{0} 克"}
@@ -703,6 +723,22 @@
                 dnam{"公合"}
                 other{"{0} 公合"}
             }
+            dessert-spoon{
+                dnam{"甜品匙"}
+                other{"{0}甜品匙"}
+            }
+            dessert-spoon-imperial{
+                dnam{"英制甜品匙"}
+                other{"英制甜品匙{0}匙"}
+            }
+            dram{
+                dnam{"英制液量打兰"}
+                other{"{0}英制液量打兰"}
+            }
+            drop{
+                dnam{"滴"}
+                other{"{0}滴"}
+            }
             fluid-ounce{
                 dnam{"液盎司"}
                 other{"{0} 液盎司"}
@@ -725,6 +761,10 @@
                 dnam{"公石"}
                 other{"{0} 公石"}
             }
+            jigger{
+                dnam{"量酒杯"}
+                other{"量酒器{0}杯"}
+            }
             liter{
                 dnam{"公升"}
                 other{"{0} 公升"}
@@ -738,6 +778,10 @@
                 dnam{"毫升"}
                 other{"{0} 毫升"}
             }
+            pinch{
+                dnam{"小撮"}
+                other{"{0} 小撮"}
+            }
             pint{
                 dnam{"品脱"}
                 other{"{0} 品脱"}
@@ -750,6 +794,10 @@
                 dnam{"夸脱"}
                 other{"{0} 夸脱"}
             }
+            quart-imperial{
+                dnam{"英制夸脱"}
+                other{"{0} 英制夸脱"}
+            }
             tablespoon{
                 dnam{"汤匙"}
                 other{"{0} 汤匙"}
@@ -1531,6 +1579,10 @@
             }
         }
         graphics{
+            dot{
+                dnam{"圆点"}
+                other{"{0} 个圆点"}
+            }
             dot-per-centimeter{
                 dnam{"每厘米点数"}
                 other{"{0} 点/厘米"}
@@ -1574,6 +1626,10 @@
                 dnam{"公寸"}
                 other{"{0} 公寸"}
             }
+            earth-radius{
+                dnam{"地球半径"}
+                other{"{0} 地球半径"}
+            }
             fathom{
                 dnam{"fm"}
                 other{"{0} 英寻"}
@@ -1652,6 +1708,14 @@
             }
         }
         light{
+            candela{
+                dnam{"坎德拉"}
+                other{"{0} 坎德拉"}
+            }
+            lumen{
+                dnam{"流明"}
+                other{"{0} 流明"}
+            }
             lux{
                 dnam{"勒克斯"}
                 other{"{0} 勒克斯"}
@@ -1674,6 +1738,10 @@
                 dnam{"地球质量"}
                 other{"{0} 地球质量"}
             }
+            grain{
+                dnam{"喱"}
+                other{"{0} 喱"}
+            }
             gram{
                 dnam{"克"}
                 other{"{0} 克"}
@@ -1896,6 +1964,22 @@
                 dnam{"公合"}
                 other{"{0} 公合"}
             }
+            dessert-spoon{
+                dnam{"甜品匙"}
+                other{"{0}甜品匙"}
+            }
+            dessert-spoon-imperial{
+                dnam{"英制甜品匙"}
+                other{"{0}英制甜品匙"}
+            }
+            dram{
+                dnam{"英制液量打兰"}
+                other{"{0}英制液量打兰"}
+            }
+            drop{
+                dnam{"滴"}
+                other{"{0}滴"}
+            }
             fluid-ounce{
                 dnam{"液盎司"}
                 other{"{0} 液盎司"}
@@ -1918,6 +2002,10 @@
                 dnam{"公石"}
                 other{"{0} 公石"}
             }
+            jigger{
+                dnam{"量酒杯"}
+                other{"量酒器{0}杯"}
+            }
             liter{
                 dnam{"公升"}
                 other{"{0} 升"}
@@ -1931,6 +2019,10 @@
                 dnam{"毫升"}
                 other{"{0} 毫升"}
             }
+            pinch{
+                dnam{"小撮"}
+                other{"{0} 小撮"}
+            }
             pint{
                 dnam{"品脱"}
                 other{"{0} 品脱"}
@@ -1943,6 +2035,10 @@
                 dnam{"夸脱"}
                 other{"{0} 夸脱"}
             }
+            quart-imperial{
+                dnam{"英制夸脱"}
+                other{"{0} 英制夸脱"}
+            }
             tablespoon{
                 dnam{"汤匙"}
                 other{"{0} 汤匙"}
diff --git a/icu4c/source/data/unit/yue_Hans_CN.txt b/icu4c/source/data/unit/yue_Hans_CN.txt
index 479d125..07edcb8 100644
--- a/icu4c/source/data/unit/yue_Hans_CN.txt
+++ b/icu4c/source/data/unit/yue_Hans_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/yue_Hant.txt b/icu4c/source/data/unit/yue_Hant.txt
index 8f39812..f1fb01c 100644
--- a/icu4c/source/data/unit/yue_Hant.txt
+++ b/icu4c/source/data/unit/yue_Hant.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_Hant{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/yue_Hant_HK.txt b/icu4c/source/data/unit/yue_Hant_HK.txt
index 9adeba7..e2bb01d 100644
--- a/icu4c/source/data/unit/yue_Hant_HK.txt
+++ b/icu4c/source/data/unit/yue_Hant_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/zgh.txt b/icu4c/source/data/unit/zgh.txt
index ffa19b1..4946cd8 100644
--- a/icu4c/source/data/unit/zgh.txt
+++ b/icu4c/source/data/unit/zgh.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zgh{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/zh.txt b/icu4c/source/data/unit/zh.txt
index 7399c30..c333157 100644
--- a/icu4c/source/data/unit/zh.txt
+++ b/icu4c/source/data/unit/zh.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -56,7 +56,6 @@
             square-centimeter{
                 dnam{"平方厘米"}
                 other{"{0}平方厘米"}
-                per{"每平方厘米{0}"}
             }
             square-foot{
                 dnam{"平方英尺"}
@@ -65,22 +64,18 @@
             square-inch{
                 dnam{"平方英寸"}
                 other{"{0}平方英寸"}
-                per{"每平方英寸{0}"}
             }
             square-kilometer{
                 dnam{"平方公里"}
                 other{"{0}平方公里"}
-                per{"每平方公里{0}"}
             }
             square-meter{
                 dnam{"平方米"}
                 other{"{0}平方米"}
-                per{"每平方米{0}"}
             }
             square-mile{
                 dnam{"平方英里"}
                 other{"{0}平方英里"}
-                per{"每平方英里{0}"}
             }
             square-yard{
                 dnam{"平方码"}
@@ -200,7 +195,6 @@
             day{
                 dnam{"天"}
                 other{"{0}天"}
-                per{"每天{0}"}
             }
             decade{
                 dnam{"年代"}
@@ -209,7 +203,6 @@
             hour{
                 dnam{"小时"}
                 other{"{0}小时"}
-                per{"每小时{0}"}
             }
             microsecond{
                 dnam{"微秒"}
@@ -222,12 +215,10 @@
             minute{
                 dnam{"分钟"}
                 other{"{0}分钟"}
-                per{"每分钟{0}"}
             }
             month{
                 dnam{"个月"}
                 other{"{0}个月"}
-                per{"每月{0}"}
             }
             nanosecond{
                 dnam{"纳秒"}
@@ -241,12 +232,10 @@
             week{
                 dnam{"周"}
                 other{"{0}周"}
-                per{"每周{0}"}
             }
             year{
                 dnam{"年"}
                 other{"{0}年"}
-                per{"每年{0}"}
             }
         }
         electric{
@@ -334,17 +323,21 @@
             }
         }
         graphics{
+            dot{
+                dnam{"点"}
+                other{"{0} 点"}
+            }
             dot-per-centimeter{
-                dnam{"点每厘米"}
-                other{"{0}点每厘米"}
+                dnam{"点/厘米"}
+                other{"{0} 点/厘米"}
             }
             dot-per-inch{
-                dnam{"点每英寸"}
-                other{"{0}点每英寸"}
+                dnam{"点/英寸"}
+                other{"{0} 点/英寸"}
             }
             em{
-                dnam{"版式"}
-                other{"{0}版式"}
+                dnam{"em"}
+                other{"{0} em"}
             }
             megapixel{
                 dnam{"百万像素"}
@@ -355,12 +348,12 @@
                 other{"{0}像素"}
             }
             pixel-per-centimeter{
-                dnam{"像素每厘米"}
-                other{"{0}像素每厘米"}
+                dnam{"像素/厘米"}
+                other{"{0} 像素/厘米"}
             }
             pixel-per-inch{
-                dnam{"像素每英寸"}
-                other{"{0}像素每英寸"}
+                dnam{"像素/英寸"}
+                other{"{0} 像素/英寸"}
             }
         }
         length{
@@ -371,12 +364,15 @@
             centimeter{
                 dnam{"厘米"}
                 other{"{0}厘米"}
-                per{"每厘米{0}"}
             }
             decimeter{
                 dnam{"分米"}
                 other{"{0}分米"}
             }
+            earth-radius{
+                dnam{"地球半径"}
+                other{"{0} 地球半径"}
+            }
             fathom{
                 dnam{"英寻"}
                 other{"{0}英寻"}
@@ -384,7 +380,6 @@
             foot{
                 dnam{"英尺"}
                 other{"{0}英尺"}
-                per{"每英尺{0}"}
             }
             furlong{
                 dnam{"弗隆"}
@@ -393,12 +388,10 @@
             inch{
                 dnam{"英寸"}
                 other{"{0}英寸"}
-                per{"每英寸{0}"}
             }
             kilometer{
                 dnam{"公里"}
                 other{"{0}公里"}
-                per{"每公里{0}"}
             }
             light-year{
                 dnam{"光年"}
@@ -407,7 +400,6 @@
             meter{
                 dnam{"米"}
                 other{"{0}米"}
-                per{"每米{0}"}
             }
             micrometer{
                 dnam{"微米"}
@@ -455,6 +447,14 @@
             }
         }
         light{
+            candela{
+                dnam{"坎德拉"}
+                other{"{0}坎德拉"}
+            }
+            lumen{
+                dnam{"流明"}
+                other{"{0}流明"}
+            }
             lux{
                 dnam{"勒克斯"}
                 other{"{0}勒克斯"}
@@ -477,10 +477,13 @@
                 dnam{"地球质量"}
                 other{"{0}地球质量"}
             }
+            grain{
+                dnam{"格令"}
+                other{"{0}格令"}
+            }
             gram{
                 dnam{"克"}
                 other{"{0}克"}
-                per{"每克{0}"}
             }
             kilogram{
                 dnam{"千克"}
@@ -660,7 +663,6 @@
             cubic-centimeter{
                 dnam{"立方厘米"}
                 other{"{0}立方厘米"}
-                per{"每立方厘米{0}"}
             }
             cubic-foot{
                 dnam{"立方英尺"}
@@ -677,7 +679,6 @@
             cubic-meter{
                 dnam{"立方米"}
                 other{"{0}立方米"}
-                per{"每立方米{0}"}
             }
             cubic-mile{
                 dnam{"立方英里"}
@@ -699,6 +700,22 @@
                 dnam{"分升"}
                 other{"{0}分升"}
             }
+            dessert-spoon{
+                dnam{"甜点匙"}
+                other{"{0}甜点匙"}
+            }
+            dessert-spoon-imperial{
+                dnam{"英制甜点匙"}
+                other{"{0}英制甜点匙"}
+            }
+            dram{
+                dnam{"打兰"}
+                other{"{0}打兰"}
+            }
+            drop{
+                dnam{"滴"}
+                other{"{0}滴"}
+            }
             fluid-ounce{
                 dnam{"液盎司"}
                 other{"{0}液盎司"}
@@ -710,21 +727,22 @@
             gallon{
                 dnam{"加仑"}
                 other{"{0}加仑"}
-                per{"每加仑{0}"}
             }
             gallon-imperial{
                 dnam{"英制加仑"}
                 other{"{0}英制加仑"}
-                per{"每英制加仑{0}"}
             }
             hectoliter{
                 dnam{"公石"}
                 other{"{0}公石"}
             }
+            jigger{
+                dnam{"量杯"}
+                other{"{0}量杯"}
+            }
             liter{
                 dnam{"升"}
                 other{"{0}升"}
-                per{"每升{0}"}
             }
             megaliter{
                 dnam{"兆升"}
@@ -734,6 +752,10 @@
                 dnam{"毫升"}
                 other{"{0}毫升"}
             }
+            pinch{
+                dnam{"撮"}
+                other{"{0}撮"}
+            }
             pint{
                 dnam{"品脱"}
                 other{"{0}品脱"}
@@ -746,6 +768,10 @@
                 dnam{"夸脱"}
                 other{"{0}夸脱"}
             }
+            quart-imperial{
+                dnam{"英制夸脱"}
+                other{"{0}英制夸脱"}
+            }
             tablespoon{
                 dnam{"汤匙"}
                 other{"{0}汤匙"}
@@ -833,7 +859,7 @@
         }
         consumption{
             liter-per-100-kilometer{
-                dnam{"升/100千米"}
+                dnam{"L/100km"}
                 other{"{0}L/100km"}
             }
         }
@@ -1004,12 +1030,12 @@
         }
         mass{
             gram{
-                dnam{"克"}
-                other{"{0}克"}
+                dnam{"g"}
+                other{"{0}g"}
             }
             kilogram{
-                dnam{"千克"}
-                other{"{0}千克"}
+                dnam{"kg"}
+                other{"{0}kg"}
             }
             ounce{
                 other{"{0}盎司"}
@@ -1046,8 +1072,8 @@
         }
         speed{
             kilometer-per-hour{
-                dnam{"公里/小时"}
-                other{"{0}公里/小时"}
+                dnam{"km/h"}
+                other{"{0}km/h"}
             }
             knot{
                 dnam{"节"}
@@ -1185,10 +1211,6 @@
                 dnam{"G力"}
                 other{"{0}G"}
             }
-            meter-per-square-second{
-                dnam{"米/秒²"}
-                other{"{0}米/秒²"}
-            }
         }
         angle{
             arc-minute{
@@ -1264,22 +1286,6 @@
             times{"{0}⋅{1}"}
         }
         concentr{
-            karat{
-                dnam{"克拉"}
-                other{"{0}克拉"}
-            }
-            milligram-per-deciliter{
-                dnam{"毫克/分升"}
-                other{"{0}毫克/分升"}
-            }
-            millimole-per-liter{
-                dnam{"毫摩尔/升"}
-                other{"{0}毫摩尔/升"}
-            }
-            mole{
-                dnam{"摩尔"}
-                other{"{0}摩尔"}
-            }
             percent{
                 dnam{"%"}
                 other{"{0}%"}
@@ -1293,24 +1299,6 @@
                 other{"{0}ppm"}
             }
         }
-        consumption{
-            liter-per-100-kilometer{
-                dnam{"升/100千米"}
-                other{"{0}升/100千米"}
-            }
-            liter-per-kilometer{
-                dnam{"升/公里"}
-                other{"{0}升/公里"}
-            }
-            mile-per-gallon{
-                dnam{"英里/加仑"}
-                other{"{0}英里/加仑"}
-            }
-            mile-per-gallon-imperial{
-                dnam{"英里/英制加仑"}
-                other{"{0}英里/英制加仑"}
-            }
-        }
         coordinate{
             dnam{"方向"}
             east{"东经{0}"}
@@ -1320,49 +1308,17 @@
         }
         digital{
             bit{
-                dnam{"比特"}
-                other{"{0}比特"}
+                dnam{"b"}
+                other{"{0} b"}
             }
             byte{
-                dnam{"字节"}
-                other{"{0}字节"}
-            }
-            gigabit{
-                dnam{"吉比特"}
-                other{"{0}吉比特"}
-            }
-            gigabyte{
-                dnam{"吉字节"}
-                other{"{0}吉字节"}
-            }
-            kilobit{
-                dnam{"千比特"}
-                other{"{0}千比特"}
-            }
-            kilobyte{
-                dnam{"千字节"}
-                other{"{0}千字节"}
-            }
-            megabit{
-                dnam{"兆比特"}
-                other{"{0}兆比特"}
-            }
-            megabyte{
-                dnam{"兆字节"}
-                other{"{0}兆字节"}
+                dnam{"B"}
+                other{"{0} B"}
             }
             petabyte{
                 dnam{"PB"}
                 other{"{0} PB"}
             }
-            terabit{
-                dnam{"太比特"}
-                other{"{0}太比特"}
-            }
-            terabyte{
-                dnam{"太字节"}
-                other{"{0}太字节"}
-            }
         }
         duration{
             century{
@@ -1423,20 +1379,13 @@
         }
         electric{
             ampere{
-                dnam{"安培"}
-                other{"{0}安"}
-            }
-            milliampere{
-                dnam{"毫安"}
-                other{"{0}毫安"}
+                dnam{"A"}
             }
             ohm{
-                dnam{"欧姆"}
-                other{"{0}欧"}
+                dnam{"Ω"}
             }
             volt{
-                dnam{"伏特"}
-                other{"{0}伏"}
+                dnam{"V"}
             }
         }
         energy{
@@ -1482,28 +1431,6 @@
                 dnam{"牛"}
                 other{"{0}牛"}
             }
-            pound-force{
-                dnam{"磅力"}
-                other{"{0}磅力"}
-            }
-        }
-        frequency{
-            gigahertz{
-                dnam{"吉赫"}
-                other{"{0}吉赫"}
-            }
-            hertz{
-                dnam{"赫兹"}
-                other{"{0}赫"}
-            }
-            kilohertz{
-                dnam{"千赫"}
-                other{"{0}千赫"}
-            }
-            megahertz{
-                dnam{"兆赫"}
-                other{"{0}兆赫"}
-            }
         }
         length{
             astronomical-unit{
@@ -1596,76 +1523,13 @@
                 other{"{0}码"}
             }
         }
-        light{
-            lux{
-                dnam{"勒克斯"}
-                other{"{0}勒克斯"}
-            }
-            solar-luminosity{
-                dnam{"太阳光度"}
-                other{"{0}太阳光度"}
-            }
-        }
         mass{
-            carat{
-                dnam{"克拉"}
-                other{"{0}克拉"}
-            }
-            dalton{
-                dnam{"道尔顿"}
-                other{"{0}道尔顿"}
-            }
-            earth-mass{
-                dnam{"地球质量"}
-                other{"{0}地球质量"}
+            grain{
+                dnam{"gr"}
+                other{"{0} gr"}
             }
             gram{
                 dnam{"克"}
-                other{"{0}克"}
-                per{"{0}/克"}
-            }
-            kilogram{
-                dnam{"千克"}
-                other{"{0}千克"}
-                per{"{0}/千克"}
-            }
-            metric-ton{
-                dnam{"公吨"}
-                other{"{0}公吨"}
-            }
-            microgram{
-                dnam{"微克"}
-                other{"{0}微克"}
-            }
-            milligram{
-                dnam{"毫克"}
-                other{"{0}毫克"}
-            }
-            ounce{
-                dnam{"盎司"}
-                other{"{0}盎司"}
-                per{"{0}/盎司"}
-            }
-            ounce-troy{
-                dnam{"金衡盎司"}
-                other{"{0}金衡盎司"}
-            }
-            pound{
-                dnam{"磅"}
-                other{"{0}磅"}
-                per{"{0}/磅"}
-            }
-            solar-mass{
-                dnam{"太阳质量"}
-                other{"{0}太阳质量"}
-            }
-            stone{
-                dnam{"英石"}
-                other{"{0}英石"}
-            }
-            ton{
-                dnam{"吨"}
-                other{"{0}吨"}
             }
         }
         power{
@@ -1695,72 +1559,16 @@
             }
         }
         pressure{
-            atmosphere{
-                dnam{"大气压"}
-                other{"{0}个大气压"}
-            }
-            bar{
-                dnam{"巴"}
-                other{"{0}巴"}
-            }
-            hectopascal{
-                dnam{"百帕"}
-                other{"{0}百帕"}
-            }
-            inch-ofhg{
-                dnam{"英寸汞柱"}
-                other{"{0}英寸汞柱"}
-            }
-            kilopascal{
-                dnam{"千帕"}
-                other{"{0}千帕"}
-            }
-            megapascal{
-                dnam{"兆帕"}
-                other{"{0}兆帕"}
-            }
-            millibar{
-                dnam{"毫巴"}
-                other{"{0}毫巴"}
-            }
             millimeter-ofhg{
-                dnam{"毫米汞柱"}
-                other{"{0}毫米汞柱"}
-            }
-            pascal{
-                dnam{"帕"}
-                other{"{0}帕"}
-            }
-            pound-force-per-square-inch{
-                dnam{"磅/平方英寸"}
-                other{"每平方英寸{0}磅"}
-            }
-        }
-        speed{
-            kilometer-per-hour{
-                dnam{"公里/小时"}
-                other{"每小时{0}公里"}
-            }
-            knot{
-                dnam{"节"}
-                other{"{0}节"}
-            }
-            meter-per-second{
-                dnam{"米/秒"}
-                other{"{0}米/秒"}
-            }
-            mile-per-hour{
-                dnam{"英里/小时"}
-                other{"{0}英里/小时"}
+                dnam{"mmHg"}
+                other{"{0} mmHg"}
             }
         }
         temperature{
             celsius{
-                dnam{"摄氏度"}
                 other{"{0}°C"}
             }
             fahrenheit{
-                dnam{"华氏度"}
                 other{"{0}°F"}
             }
             generic{
@@ -1768,7 +1576,6 @@
                 other{"{0}°"}
             }
             kelvin{
-                dnam{"开"}
                 other{"{0}K"}
             }
         }
@@ -1777,10 +1584,6 @@
                 dnam{"牛米"}
                 other{"{0}牛米"}
             }
-            pound-force-foot{
-                dnam{"磅英尺"}
-                other{"{0}磅英尺"}
-            }
         }
         volume{
             acre-foot{
@@ -1841,6 +1644,18 @@
                 dnam{"分升"}
                 other{"{0}分升"}
             }
+            dessert-spoon{
+                dnam{"甜点匙"}
+                other{"{0}甜点匙"}
+            }
+            dram{
+                dnam{"液量打兰"}
+                other{"{0}液量打兰"}
+            }
+            drop{
+                dnam{"滴"}
+                other{"{0}滴"}
+            }
             fluid-ounce{
                 dnam{"液盎司"}
                 other{"{0}液盎司"}
@@ -1863,6 +1678,10 @@
                 dnam{"公石"}
                 other{"{0}公石"}
             }
+            jigger{
+                dnam{"量杯"}
+                other{"{0}量杯"}
+            }
             liter{
                 dnam{"升"}
                 other{"{0}升"}
@@ -1876,6 +1695,10 @@
                 dnam{"毫升"}
                 other{"{0}毫升"}
             }
+            pinch{
+                dnam{"撮"}
+                other{"{0}撮"}
+            }
             pint{
                 dnam{"品脱"}
                 other{"{0}品脱"}
diff --git a/icu4c/source/data/unit/zh_CN.txt b/icu4c/source/data/unit/zh_CN.txt
index c915161..0136d26 100644
--- a/icu4c/source/data/unit/zh_CN.txt
+++ b/icu4c/source/data/unit/zh_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_CN{
     "%%ALIAS"{"zh_Hans_CN"}
 }
diff --git a/icu4c/source/data/unit/zh_HK.txt b/icu4c/source/data/unit/zh_HK.txt
index fe72a0e..c34c98f 100644
--- a/icu4c/source/data/unit/zh_HK.txt
+++ b/icu4c/source/data/unit/zh_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_HK{
     "%%ALIAS"{"zh_Hant_HK"}
 }
diff --git a/icu4c/source/data/unit/zh_Hans.txt b/icu4c/source/data/unit/zh_Hans.txt
index 72c418e..58a5386 100644
--- a/icu4c/source/data/unit/zh_Hans.txt
+++ b/icu4c/source/data/unit/zh_Hans.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hans{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/zh_Hans_CN.txt b/icu4c/source/data/unit/zh_Hans_CN.txt
index 70a6a77..333ba54 100644
--- a/icu4c/source/data/unit/zh_Hans_CN.txt
+++ b/icu4c/source/data/unit/zh_Hans_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/zh_Hans_HK.txt b/icu4c/source/data/unit/zh_Hans_HK.txt
index 3ba9bf9..b0e4b1a 100644
--- a/icu4c/source/data/unit/zh_Hans_HK.txt
+++ b/icu4c/source/data/unit/zh_Hans_HK.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hans_HK{
-    Version{"37"}
     units{
         compound{
             per{"{0}/{1}"}
diff --git a/icu4c/source/data/unit/zh_Hans_MO.txt b/icu4c/source/data/unit/zh_Hans_MO.txt
index 594fb78..6852b4c 100644
--- a/icu4c/source/data/unit/zh_Hans_MO.txt
+++ b/icu4c/source/data/unit/zh_Hans_MO.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hans_MO{
-    Version{"37"}
     units{
         compound{
             per{"{0}/{1}"}
diff --git a/icu4c/source/data/unit/zh_Hans_SG.txt b/icu4c/source/data/unit/zh_Hans_SG.txt
index 7e34b6f..4dd0299 100644
--- a/icu4c/source/data/unit/zh_Hans_SG.txt
+++ b/icu4c/source/data/unit/zh_Hans_SG.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hans_SG{
-    Version{"37"}
     units{
         compound{
             per{"{0}/{1}"}
diff --git a/icu4c/source/data/unit/zh_Hant.txt b/icu4c/source/data/unit/zh_Hant.txt
index c50931f..6432574 100644
--- a/icu4c/source/data/unit/zh_Hant.txt
+++ b/icu4c/source/data/unit/zh_Hant.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant{
     %%Parent{"root"}
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -357,6 +357,10 @@
                 dnam{"公寸"}
                 other{"{0} 公寸"}
             }
+            earth-radius{
+                dnam{"地球半徑"}
+                other{"{0} 地球半徑"}
+            }
             fathom{
                 dnam{"英尋"}
                 other{"{0} 英尋"}
@@ -435,6 +439,14 @@
             }
         }
         light{
+            candela{
+                dnam{"燭光"}
+                other{"{0} 燭光"}
+            }
+            lumen{
+                dnam{"流明"}
+                other{"{0} 流明"}
+            }
             lux{
                 dnam{"勒克斯"}
                 other{"{0} 勒克斯"}
@@ -457,6 +469,9 @@
                 dnam{"地球質量"}
                 other{"{0} 地球質量"}
             }
+            grain{
+                dnam{"格林"}
+            }
             gram{
                 dnam{"克"}
                 other{"{0} 克"}
@@ -502,8 +517,8 @@
                 other{"{0} 英石"}
             }
             ton{
-                dnam{"英噸"}
-                other{"{0} 英噸"}
+                dnam{"美噸"}
+                other{"{0} 美噸"}
             }
         }
         power{
@@ -679,6 +694,21 @@
                 dnam{"公合"}
                 other{"{0} 公合"}
             }
+            dessert-spoon{
+                dnam{"甜品匙"}
+                other{"{0} 甜品匙"}
+            }
+            dessert-spoon-imperial{
+                dnam{"英制甜品匙"}
+                other{"{0} 英制甜品匙"}
+            }
+            dram{
+                dnam{"打蘭"}
+                other{"{0} 打蘭"}
+            }
+            drop{
+                dnam{"滴"}
+            }
             fluid-ounce{
                 dnam{"液盎司"}
                 other{"{0} 液盎司"}
@@ -701,6 +731,10 @@
                 dnam{"公石"}
                 other{"{0} 公石"}
             }
+            jigger{
+                dnam{"量酒杯"}
+                other{"{0} 量酒杯"}
+            }
             liter{
                 dnam{"公升"}
                 other{"{0} 公升"}
@@ -714,6 +748,10 @@
                 dnam{"毫升"}
                 other{"{0} 毫升"}
             }
+            pinch{
+                dnam{"小撮"}
+                other{"{0} 小撮"}
+            }
             pint{
                 dnam{"品脫"}
                 other{"{0} 品脫"}
@@ -726,6 +764,10 @@
                 dnam{"夸脫"}
                 other{"{0} 夸脫"}
             }
+            quart-imperial{
+                dnam{"英制夸脫"}
+                other{"{0} 英制夸脫"}
+            }
             tablespoon{
                 dnam{"湯匙"}
                 other{"{0} 湯匙"}
@@ -1439,8 +1481,8 @@
                 other{"{0} 毫莫耳/公升"}
             }
             mole{
-                dnam{"mol"}
-                other{"{0} mol"}
+                dnam{"莫耳"}
+                other{"{0} 莫耳"}
             }
             percent{
                 dnam{"百分比"}
@@ -1607,16 +1649,16 @@
         }
         energy{
             british-thermal-unit{
-                dnam{"Btu"}
-                other{"{0} Btu"}
+                dnam{"英熱單位"}
+                other{"{0} 英熱單位"}
             }
             calorie{
                 dnam{"卡路里"}
                 other{"{0} 卡"}
             }
             electronvolt{
-                dnam{"eV"}
-                other{"{0} eV"}
+                dnam{"電子伏特"}
+                other{"{0} 電子伏特"}
             }
             foodcalorie{
                 dnam{"大卡"}
@@ -1686,7 +1728,7 @@
                 other{"{0} 公寸"}
             }
             fathom{
-                dnam{"fm"}
+                dnam{"英尋"}
                 other{"{0} 英尋"}
             }
             foot{
@@ -1759,6 +1801,14 @@
             }
         }
         light{
+            candela{
+                dnam{"燭光"}
+                other{"{0} 燭光"}
+            }
+            lumen{
+                dnam{"流明"}
+                other{"{0} 流明"}
+            }
             lux{
                 dnam{"勒克斯"}
                 other{"{0} 勒克斯"}
@@ -1774,12 +1824,16 @@
                 other{"{0} 克拉"}
             }
             dalton{
-                dnam{"Da"}
-                other{"{0} Da"}
+                dnam{"達爾頓"}
+                other{"{0} 達爾頓"}
             }
             earth-mass{
-                dnam{"M⊕"}
-                other{"{0} M⊕"}
+                dnam{"地球質量"}
+                other{"{0} 地球質量"}
+            }
+            grain{
+                dnam{"格林"}
+                other{"{0} 格林"}
             }
             gram{
                 dnam{"克"}
@@ -1818,16 +1872,16 @@
                 per{"{0}/磅"}
             }
             solar-mass{
-                dnam{"M☉"}
-                other{"{0} M☉"}
+                dnam{"太陽質量"}
+                other{"{0} 太陽質量"}
             }
             stone{
-                dnam{"st"}
+                dnam{"英石"}
                 other{"{0} 英石"}
             }
             ton{
-                dnam{"英噸"}
-                other{"{0} 英噸"}
+                dnam{"美噸"}
+                other{"{0} 美噸"}
             }
         }
         power{
@@ -1874,12 +1928,12 @@
                 other{"{0} 英寸汞柱"}
             }
             kilopascal{
-                dnam{"kPa"}
-                other{"{0} kPa"}
+                dnam{"千帕"}
+                other{"{0} 千帕"}
             }
             megapascal{
-                dnam{"MPa"}
-                other{"{0} MPa"}
+                dnam{"兆帕"}
+                other{"{0} 兆帕"}
             }
             millibar{
                 dnam{"毫巴"}
@@ -1890,8 +1944,8 @@
                 other{"{0} 毫米汞柱"}
             }
             pascal{
-                dnam{"Pa"}
-                other{"{0} Pa"}
+                dnam{"帕"}
+                other{"{0} 帕"}
             }
             pound-force-per-square-inch{
                 dnam{"磅力/平方英寸"}
@@ -1930,18 +1984,18 @@
                 other{"{0}°"}
             }
             kelvin{
-                dnam{"K"}
-                other{"{0} K"}
+                dnam{"克耳文"}
+                other{"{0} 克耳文"}
             }
         }
         torque{
             newton-meter{
-                dnam{"N⋅m"}
-                other{"{0} N⋅m"}
+                dnam{"牛頓米"}
+                other{"{0} 牛頓米"}
             }
             pound-force-foot{
-                dnam{"lbf⋅ft"}
-                other{"{0} lbf⋅ft"}
+                dnam{"磅英尺"}
+                other{"{0} 磅英尺"}
             }
         }
         volume{
@@ -1954,7 +2008,7 @@
                 other{"{0} 桶"}
             }
             bushel{
-                dnam{"bu"}
+                dnam{"蒲式耳"}
                 other{"{0} 蒲式耳"}
             }
             centiliter{
@@ -2003,6 +2057,22 @@
                 dnam{"公合"}
                 other{"{0} 公合"}
             }
+            dessert-spoon{
+                dnam{"甜品匙"}
+                other{"{0} 甜品匙"}
+            }
+            dessert-spoon-imperial{
+                dnam{"英制甜品匙"}
+                other{"{0} 英制甜品匙"}
+            }
+            dram{
+                dnam{"打蘭"}
+                other{"{0} 打蘭"}
+            }
+            drop{
+                dnam{"滴"}
+                other{"{0} 滴"}
+            }
             fluid-ounce{
                 dnam{"液盎司"}
                 other{"{0} 液盎司"}
@@ -2025,6 +2095,10 @@
                 dnam{"公石"}
                 other{"{0} 公石"}
             }
+            jigger{
+                dnam{"量酒杯"}
+                other{"{0} 量酒杯"}
+            }
             liter{
                 dnam{"公升"}
                 other{"{0} 升"}
@@ -2038,6 +2112,10 @@
                 dnam{"毫升"}
                 other{"{0} 毫升"}
             }
+            pinch{
+                dnam{"小撮"}
+                other{"{0} 小撮"}
+            }
             pint{
                 dnam{"品脫"}
                 other{"{0} 品脫"}
@@ -2050,6 +2128,10 @@
                 dnam{"夸脫"}
                 other{"{0} 夸脫"}
             }
+            quart-imperial{
+                dnam{"英制夸脫"}
+                other{"{0} 英制夸脫"}
+            }
             tablespoon{
                 dnam{"湯匙"}
                 other{"{0} 湯匙"}
diff --git a/icu4c/source/data/unit/zh_Hant_HK.txt b/icu4c/source/data/unit/zh_Hant_HK.txt
index ae31d3a..670bcf0 100644
--- a/icu4c/source/data/unit/zh_Hant_HK.txt
+++ b/icu4c/source/data/unit/zh_Hant_HK.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant_HK{
-    Version{"37"}
     units{
         acceleration{
             meter-per-square-second{
@@ -53,9 +53,6 @@
                 dnam{"每公升毫摩爾"}
                 other{"每公升 {0} 毫摩爾"}
             }
-            permillion{
-                other{"{0} ppm"}
-            }
         }
         consumption{
             liter-per-100-kilometer{
@@ -174,11 +171,21 @@
                 other{"{0} pt"}
             }
         }
+        light{
+            candela{
+                dnam{"坎德拉"}
+                other{"{0} 坎德拉"}
+            }
+        }
         mass{
             dalton{
                 dnam{"道爾頓"}
                 other{"{0} 道爾頓"}
             }
+            grain{
+                dnam{"格令"}
+                other{"{0}格令"}
+            }
             gram{
                 per{"{0} 每克"}
             }
@@ -748,7 +755,17 @@
                 other{"{0} pt"}
             }
         }
+        light{
+            candela{
+                dnam{"坎德拉"}
+                other{"{0} 坎德拉"}
+            }
+        }
         mass{
+            grain{
+                dnam{"格令"}
+                other{"{0} 格令"}
+            }
             gram{
                 per{"{0} 每克"}
             }
@@ -782,10 +799,6 @@
                 dnam{"英吋汞柱"}
                 other{"{0} 英吋汞柱"}
             }
-            pascal{
-                dnam{"帕"}
-                other{"{0} 帕"}
-            }
             pound-force-per-square-inch{
                 dnam{"磅每平方吋"}
                 other{"{0} 磅每平方吋"}
diff --git a/icu4c/source/data/unit/zh_Hant_MO.txt b/icu4c/source/data/unit/zh_Hant_MO.txt
index 670cffc..1f5fac8 100644
--- a/icu4c/source/data/unit/zh_Hant_MO.txt
+++ b/icu4c/source/data/unit/zh_Hant_MO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant_MO{
     %%Parent{"zh_Hant_HK"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/unit/zh_Hant_TW.txt b/icu4c/source/data/unit/zh_Hant_TW.txt
index b62ad69..b079f20 100644
--- a/icu4c/source/data/unit/zh_Hant_TW.txt
+++ b/icu4c/source/data/unit/zh_Hant_TW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/unit/zh_MO.txt b/icu4c/source/data/unit/zh_MO.txt
index 6565bf7..c6b2148 100644
--- a/icu4c/source/data/unit/zh_MO.txt
+++ b/icu4c/source/data/unit/zh_MO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_MO{
     "%%ALIAS"{"zh_Hant_MO"}
 }
diff --git a/icu4c/source/data/unit/zh_SG.txt b/icu4c/source/data/unit/zh_SG.txt
index bf27773..14136c3 100644
--- a/icu4c/source/data/unit/zh_SG.txt
+++ b/icu4c/source/data/unit/zh_SG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_SG{
     "%%ALIAS"{"zh_Hans_SG"}
 }
diff --git a/icu4c/source/data/unit/zh_TW.txt b/icu4c/source/data/unit/zh_TW.txt
index 9372c50..c54ccbf 100644
--- a/icu4c/source/data/unit/zh_TW.txt
+++ b/icu4c/source/data/unit/zh_TW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_TW{
     "%%ALIAS"{"zh_Hant_TW"}
 }
diff --git a/icu4c/source/data/unit/zu.txt b/icu4c/source/data/unit/zu.txt
index cd65d28..6bbca4c 100644
--- a/icu4c/source/data/unit/zu.txt
+++ b/icu4c/source/data/unit/zu.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zu{
-    Version{"37"}
     durationUnits{
         hm{"h:mm"}
         hms{"h:mm:ss"}
@@ -468,6 +468,14 @@
             }
         }
         light{
+            candela{
+                one{"{0} cd"}
+                other{"{0} candela"}
+            }
+            lumen{
+                one{"{0} i-lumen"}
+                other{"{0} lm"}
+            }
             lux{
                 dnam{"lux"}
                 one{"{0} i-lux"}
@@ -701,6 +709,14 @@
                 one{"{0} dL"}
                 other{"{0} dL"}
             }
+            dessert-spoon{
+                one{"{0} sipuni dessert"}
+                other{"{0} dstspn"}
+            }
+            dessert-spoon-imperial{
+                one{"{0} Imp. isipuni dessert"}
+                other{"{0} dstspn Imp"}
+            }
             fluid-ounce{
                 dnam{"fl oz"}
                 one{"{0} fl oz"}
diff --git a/icu4c/source/data/zone/LOCALE_DEPS.json b/icu4c/source/data/zone/LOCALE_DEPS.json
index 681e78c..2508537 100644
--- a/icu4c/source/data/zone/LOCALE_DEPS.json
+++ b/icu4c/source/data/zone/LOCALE_DEPS.json
@@ -1,8 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 
 {
-    "cldrVersion": "37",
+    "cldrVersion": "38.1",
     "aliases": {
         "ars": "ar_SA",
         "az_AZ": "az_Latn_AZ",
@@ -33,7 +34,7 @@
         "sh_YU": "sr_Latn_RS",
         "shi_MA": "shi_Tfng_MA",
         "sr_BA": "sr_Cyrl_BA",
-        "sr_CS": "sr_Cyrl_RS",
+        "sr_CS": "sr_RS",
         "sr_Cyrl_CS": "sr_Cyrl_RS",
         "sr_Cyrl_YU": "sr_Cyrl_RS",
         "sr_Latn_CS": "sr_Latn_RS",
@@ -41,7 +42,7 @@
         "sr_ME": "sr_Latn_ME",
         "sr_RS": "sr_Cyrl_RS",
         "sr_XK": "sr_Cyrl_XK",
-        "sr_YU": "sr_Cyrl_RS",
+        "sr_YU": "sr_RS",
         "su_ID": "su_Latn_ID",
         "tl": "fil",
         "tl_PH": "fil_PH",
diff --git a/icu4c/source/data/zone/af.txt b/icu4c/source/data/zone/af.txt
index 39a8434..5dddb69 100644
--- a/icu4c/source/data/zone/af.txt
+++ b/icu4c/source/data/zone/af.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 af{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -730,7 +730,7 @@
             ec{"Hovd"}
         }
         "Asia:Irkutsk"{
-            ec{"Irkutsk"}
+            ec{"Irkoetsk"}
         }
         "Asia:Jakarta"{
             ec{"Djakarta"}
@@ -1419,7 +1419,7 @@
             ls{"Bhoetan-tyd"}
         }
         "meta:Bolivia"{
-            ls{"Bolivia-tyd"}
+            ls{"Bolivië-tyd"}
         }
         "meta:Brasilia"{
             ld{"Brasilia-somertyd"}
@@ -1560,7 +1560,7 @@
             ls{"Persiese Golf-standaardtyd"}
         }
         "meta:Guyana"{
-            ls{"Guyana-tyd"}
+            ls{"Guiana-tyd"}
         }
         "meta:Hawaii_Aleutian"{
             ld{"Hawaii-Aleoete-dagligtyd"}
@@ -1601,9 +1601,9 @@
             ls{"Iran-standaardtyd"}
         }
         "meta:Irkutsk"{
-            ld{"Irkutsk-somertyd"}
-            lg{"Irkutsk-tyd"}
-            ls{"Irkutsk-standaardtyd"}
+            ld{"Irkoetsk-somertyd"}
+            lg{"Irkoetsk-tyd"}
+            ls{"Irkoetsk-standaardtyd"}
         }
         "meta:Israel"{
             ld{"Israel-dagligtyd"}
diff --git a/icu4c/source/data/zone/agq.txt b/icu4c/source/data/zone/agq.txt
index b54dffa..a75f252 100644
--- a/icu4c/source/data/zone/agq.txt
+++ b/icu4c/source/data/zone/agq.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 agq{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/ak.txt b/icu4c/source/data/zone/ak.txt
index 5057e2a..9e5c5d1 100644
--- a/icu4c/source/data/zone/ak.txt
+++ b/icu4c/source/data/zone/ak.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ak{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/am.txt b/icu4c/source/data/zone/am.txt
index f29976f..ab1b0c2 100644
--- a/icu4c/source/data/zone/am.txt
+++ b/icu4c/source/data/zone/am.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 am{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"አቢጃን"}
diff --git a/icu4c/source/data/zone/ar.txt b/icu4c/source/data/zone/ar.txt
index 09b6916..d1d9f5a 100644
--- a/icu4c/source/data/zone/ar.txt
+++ b/icu4c/source/data/zone/ar.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"أبيدجان"}
@@ -646,7 +646,7 @@
             ec{"ألماتي"}
         }
         "Asia:Amman"{
-            ec{"عمان"}
+            ec{"عمّان"}
         }
         "Asia:Anadyr"{
             ec{"أندير"}
diff --git a/icu4c/source/data/zone/ar_SA.txt b/icu4c/source/data/zone/ar_SA.txt
index d65944b..a848e8b 100644
--- a/icu4c/source/data/zone/ar_SA.txt
+++ b/icu4c/source/data/zone/ar_SA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/ar_XB.txt b/icu4c/source/data/zone/ar_XB.txt
index 3e13b2d..cd777c4 100644
--- a/icu4c/source/data/zone/ar_XB.txt
+++ b/icu4c/source/data/zone/ar_XB.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ar_XB{
-    Version{"37"}
     zoneStrings{
         "Africa:Sao_Tome"{
             ec{"؜‮São‬؜ ؜‮Tomé‬؜"}
@@ -33,6 +33,9 @@
         "Antarctica:DumontDUrville"{
             ec{"؜‮Dumont‬؜ ؜‮d‬؜’؜‮Urville‬؜"}
         }
+        "Asia:Aqtau"{
+            ec{"؜‮Aqtau‬؜"}
+        }
         "Asia:Qostanay"{
             ec{"؜‮Kostanay‬؜"}
         }
diff --git a/icu4c/source/data/zone/ars.txt b/icu4c/source/data/zone/ars.txt
index 1f49ca1..92183f5 100644
--- a/icu4c/source/data/zone/ars.txt
+++ b/icu4c/source/data/zone/ars.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ars{
     "%%ALIAS"{"ar_SA"}
 }
diff --git a/icu4c/source/data/zone/as.txt b/icu4c/source/data/zone/as.txt
index ced8d9e..669ea51 100644
--- a/icu4c/source/data/zone/as.txt
+++ b/icu4c/source/data/zone/as.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 as{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"আবিডজান"}
@@ -1705,9 +1705,9 @@
             ls{"নিয়ুৰ সময়"}
         }
         "meta:Norfolk"{
-            ld{"ন’ৰফ’ক দ্বীপৰ সময় গ্ৰীষ্মকালীন সময়"}
+            ld{"ন’ৰফ’ক দ্বীপৰ গ্ৰীষ্মকালীন সময়"}
             lg{"ন’ৰফ’ক দ্বীপৰ সময়"}
-            ls{"ন’ৰফ’ক দ্বীপৰ মান সময়"}
+            ls{"ন’ৰফ’ক দ্বীপৰ মান্য সময়"}
         }
         "meta:Noronha"{
             ld{"ফাৰ্নাণ্ডো ডে নোৰোন্‌হাৰ গ্ৰীষ্মকালীন সময়"}
diff --git a/icu4c/source/data/zone/asa.txt b/icu4c/source/data/zone/asa.txt
index 6a30986..5389fa3 100644
--- a/icu4c/source/data/zone/asa.txt
+++ b/icu4c/source/data/zone/asa.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 asa{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/ast.txt b/icu4c/source/data/zone/ast.txt
index b60c2b6..297ec72 100644
--- a/icu4c/source/data/zone/ast.txt
+++ b/icu4c/source/data/zone/ast.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ast{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
diff --git a/icu4c/source/data/zone/az.txt b/icu4c/source/data/zone/az.txt
index 2df60c4..bd371ef 100644
--- a/icu4c/source/data/zone/az.txt
+++ b/icu4c/source/data/zone/az.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abican"}
diff --git a/icu4c/source/data/zone/az_AZ.txt b/icu4c/source/data/zone/az_AZ.txt
index caf84c0..8932e86 100644
--- a/icu4c/source/data/zone/az_AZ.txt
+++ b/icu4c/source/data/zone/az_AZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_AZ{
     "%%ALIAS"{"az_Latn_AZ"}
 }
diff --git a/icu4c/source/data/zone/az_Cyrl.txt b/icu4c/source/data/zone/az_Cyrl.txt
index bd374ae..f09e5a6 100644
--- a/icu4c/source/data/zone/az_Cyrl.txt
+++ b/icu4c/source/data/zone/az_Cyrl.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_Cyrl{
     %%Parent{"root"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/az_Latn.txt b/icu4c/source/data/zone/az_Latn.txt
index 6022c58..6464d2e 100644
--- a/icu4c/source/data/zone/az_Latn.txt
+++ b/icu4c/source/data/zone/az_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 az_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/az_Latn_AZ.txt b/icu4c/source/data/zone/az_Latn_AZ.txt
index 36c6e61..3963c91 100644
--- a/icu4c/source/data/zone/az_Latn_AZ.txt
+++ b/icu4c/source/data/zone/az_Latn_AZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/bas.txt b/icu4c/source/data/zone/bas.txt
index c1c65dd..a18120a 100644
--- a/icu4c/source/data/zone/bas.txt
+++ b/icu4c/source/data/zone/bas.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bas{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/be.txt b/icu4c/source/data/zone/be.txt
index 05b844e..1b82e5e 100644
--- a/icu4c/source/data/zone/be.txt
+++ b/icu4c/source/data/zone/be.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 be{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Абіджан"}
diff --git a/icu4c/source/data/zone/bem.txt b/icu4c/source/data/zone/bem.txt
index 9b64218..c874e0e 100644
--- a/icu4c/source/data/zone/bem.txt
+++ b/icu4c/source/data/zone/bem.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bem{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/bez.txt b/icu4c/source/data/zone/bez.txt
index c754378..0884fce 100644
--- a/icu4c/source/data/zone/bez.txt
+++ b/icu4c/source/data/zone/bez.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bez{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/bg.txt b/icu4c/source/data/zone/bg.txt
index 80515d9..1de6de3 100644
--- a/icu4c/source/data/zone/bg.txt
+++ b/icu4c/source/data/zone/bg.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bg{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Абиджан"}
@@ -958,7 +958,7 @@
             ls{"Координирано универсално време"}
         }
         "Etc:Unknown"{
-            ec{"неизвестен"}
+            ec{"неизвестен град"}
         }
         "Europe:Amsterdam"{
             ec{"Амстердам"}
@@ -1903,7 +1903,7 @@
         gmtZeroFormat{"Гринуич"}
         hourFormat{"+HH:mm;-HH:mm"}
         regionFormat{"{0}"}
-        regionFormatDaylight{"{0}, лятно часово време"}
+        regionFormatDaylight{"{0} – лятно часово време"}
         regionFormatStandard{"{0} – стандартно време"}
     }
 }
diff --git a/icu4c/source/data/zone/bm.txt b/icu4c/source/data/zone/bm.txt
index 92cb478..94e42a4 100644
--- a/icu4c/source/data/zone/bm.txt
+++ b/icu4c/source/data/zone/bm.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bm{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/bn.txt b/icu4c/source/data/zone/bn.txt
index 1229834..24fc8d3 100644
--- a/icu4c/source/data/zone/bn.txt
+++ b/icu4c/source/data/zone/bn.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bn{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"আবিদজান"}
@@ -1292,6 +1292,11 @@
         "Pacific:Wallis"{
             ec{"ওলিস"}
         }
+        "meta:Acre"{
+            ld{"একর গ্রীষ্মকাল সময়"}
+            lg{"একর সময়"}
+            ls{"একর মানক সময়"}
+        }
         "meta:Afghanistan"{
             ls{"আফগানিস্তান সময়"}
         }
@@ -1500,7 +1505,7 @@
             ls{"পূর্ব ইউরোপীয় মানক সময়"}
         }
         "meta:Europe_Further_Eastern"{
-            ls{"অতিরিক্ত-পূর্ব ইউরোপীয় সময়"}
+            ls{"প্রান্তীয় পূর্ব ইউরোপীয় সময়"}
         }
         "meta:Europe_Western"{
             ld{"পশ্চিম ইউরোপীয় গ্রীষ্মকালীন সময়"}
diff --git a/icu4c/source/data/zone/bo.txt b/icu4c/source/data/zone/bo.txt
index 83d5cc6..4225851 100644
--- a/icu4c/source/data/zone/bo.txt
+++ b/icu4c/source/data/zone/bo.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bo{
-    Version{"37"}
     zoneStrings{
         "Etc:Unknown"{
             ec{"མ་རྟོགས་པ"}
diff --git a/icu4c/source/data/zone/br.txt b/icu4c/source/data/zone/br.txt
index b001c57..e571b9e 100644
--- a/icu4c/source/data/zone/br.txt
+++ b/icu4c/source/data/zone/br.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 br{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -1015,6 +1015,9 @@
             lg{"eur Europa ar Reter"}
             ls{"eur cʼhoañv Europa ar Reter"}
         }
+        "meta:Europe_Further_Eastern"{
+            ls{"eur Kaliningrad"}
+        }
         "meta:Europe_Western"{
             ld{"eur hañv Europa ar Cʼhornôg"}
             lg{"eur Europa ar Cʼhornôg"}
@@ -1072,6 +1075,11 @@
         "meta:Guyana"{
             ls{"eur Guyana"}
         }
+        "meta:Hawaii_Aleutian"{
+            ld{"eur hañv Hawaii hag an Aleouted"}
+            lg{"eur Hawaii hag an Aleouted"}
+            ls{"eur cʼhoañv Hawaii hag an Aleouted"}
+        }
         "meta:Hong_Kong"{
             ld{"eur hañv Hong Kong"}
             lg{"eur Hong Kong"}
@@ -1148,6 +1156,11 @@
         "meta:Line_Islands"{
             ls{"eur Line Islands"}
         }
+        "meta:Lord_Howe"{
+            ld{"eur hañv Lord Howe"}
+            lg{"eur Lord Howe"}
+            ls{"eur cʼhoañv Lord Howe"}
+        }
         "meta:Macau"{
             ld{"eur hañv Macau"}
             lg{"eur Macau"}
@@ -1186,6 +1199,11 @@
             lg{"eur Gwalarn Mecʼhiko"}
             ls{"eur cʼhoañv Gwalarn Mecʼhiko"}
         }
+        "meta:Mexico_Pacific"{
+            ld{"eur hañv an Habask mecʼhikan"}
+            lg{"eur an Habask mecʼhikan"}
+            ls{"eur cʼhoañv an Habask mecʼhikan"}
+        }
         "meta:Mongolia"{
             ld{"eur hañv Ulaanbaatar"}
             lg{"eur Ulaanbaatar"}
@@ -1233,6 +1251,9 @@
             lg{"eur Fernando de Noronha"}
             ls{"eur cʼhoañv Fernando de Noronha"}
         }
+        "meta:North_Mariana"{
+            ls{"eur Mariana an Norzh"}
+        }
         "meta:Novosibirsk"{
             ld{"eur hañv Novosibirsk"}
             lg{"eur Novosibirsk"}
@@ -1280,6 +1301,9 @@
         "meta:Pitcairn"{
             ls{"eur Pitcairn"}
         }
+        "meta:Ponape"{
+            ls{"eur Pohnpei"}
+        }
         "meta:Pyongyang"{
             ls{"eur Pʼyongyang"}
         }
diff --git a/icu4c/source/data/zone/brx.txt b/icu4c/source/data/zone/brx.txt
index 9383602..8f99fb6 100644
--- a/icu4c/source/data/zone/brx.txt
+++ b/icu4c/source/data/zone/brx.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 brx{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"अबिद्जान"}
diff --git a/icu4c/source/data/zone/bs.txt b/icu4c/source/data/zone/bs.txt
index cd97a5e..7558b33 100644
--- a/icu4c/source/data/zone/bs.txt
+++ b/icu4c/source/data/zone/bs.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -1513,11 +1513,17 @@
             ld{"Centralnoevropsko ljetno vrijeme"}
             lg{"Centralnoevropsko vrijeme"}
             ls{"Centralnoevropsko standardno vrijeme"}
+            sd{"CEST"}
+            sg{"CET"}
+            ss{"CET"}
         }
         "meta:Europe_Eastern"{
             ld{"Istočnoevropsko ljetno vrijeme"}
             lg{"Istočnoevropsko vrijeme"}
             ls{"Istočnoevropsko standardno vrijeme"}
+            sd{"EEST"}
+            sg{"EET"}
+            ss{"EET"}
         }
         "meta:Europe_Further_Eastern"{
             ls{"Dalekoistočnoevropsko vrijeme"}
@@ -1526,6 +1532,9 @@
             ld{"Zapadnoevropsko ljetno vrijeme"}
             lg{"Zapadnoevropsko vrijeme"}
             ls{"Zapadnoevropsko standardno vrijeme"}
+            sd{"WEST"}
+            sg{"WET"}
+            ss{"WET"}
         }
         "meta:Falkland"{
             ld{"Folklandsko ljetno vrijeme"}
@@ -1545,6 +1554,7 @@
         }
         "meta:GMT"{
             ls{"Griničko vrijeme"}
+            ss{"GMT"}
         }
         "meta:Galapagos"{
             ls{"Galapagosko vrijeme"}
diff --git a/icu4c/source/data/zone/bs_BA.txt b/icu4c/source/data/zone/bs_BA.txt
index e5e3a46..70619a1 100644
--- a/icu4c/source/data/zone/bs_BA.txt
+++ b/icu4c/source/data/zone/bs_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_BA{
     "%%ALIAS"{"bs_Latn_BA"}
 }
diff --git a/icu4c/source/data/zone/bs_Cyrl.txt b/icu4c/source/data/zone/bs_Cyrl.txt
index 45ef560..1363ea2 100644
--- a/icu4c/source/data/zone/bs_Cyrl.txt
+++ b/icu4c/source/data/zone/bs_Cyrl.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_Cyrl{
     %%Parent{"root"}
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Абиџан"}
diff --git a/icu4c/source/data/zone/bs_Latn.txt b/icu4c/source/data/zone/bs_Latn.txt
index d1a6b5e..f256112 100644
--- a/icu4c/source/data/zone/bs_Latn.txt
+++ b/icu4c/source/data/zone/bs_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 bs_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/bs_Latn_BA.txt b/icu4c/source/data/zone/bs_Latn_BA.txt
index 3ef1cc4..04342dc 100644
--- a/icu4c/source/data/zone/bs_Latn_BA.txt
+++ b/icu4c/source/data/zone/bs_Latn_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/ca.txt b/icu4c/source/data/zone/ca.txt
index cf2a07b..74f9789 100644
--- a/icu4c/source/data/zone/ca.txt
+++ b/icu4c/source/data/zone/ca.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ca{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -868,7 +868,7 @@
             ec{"Ulan Bator"}
         }
         "Asia:Urumqi"{
-            ec{"Urumchi"}
+            ec{"Ürümchi"}
         }
         "Asia:Ust-Nera"{
             ec{"Ust’-Nera"}
@@ -1049,9 +1049,6 @@
         "Europe:Malta"{
             ec{"Malta"}
         }
-        "Europe:Mariehamn"{
-            ec{"Maarianhamina"}
-        }
         "Europe:Minsk"{
             ec{"Minsk"}
         }
@@ -1092,7 +1089,7 @@
             ec{"Saràtov"}
         }
         "Europe:Simferopol"{
-            ec{"Simferopol"}
+            ec{"Simferòpol"}
         }
         "Europe:Skopje"{
             ec{"Skopje"}
@@ -1395,9 +1392,9 @@
             ls{"Hora estàndard d’Austràlia Occidental"}
         }
         "meta:Azerbaijan"{
-            ld{"Hora d’estiu d’Azerbaidjan"}
-            lg{"Hora d’Azerbaidjan"}
-            ls{"Hora estàndard d’Azerbaidjan"}
+            ld{"Hora d’estiu de l’Azerbaidjan"}
+            lg{"Hora de l’Azerbaidjan"}
+            ls{"Hora estàndard de l’Azerbaidjan"}
         }
         "meta:Azores"{
             ld{"Hora d’estiu de les Açores"}
@@ -1405,9 +1402,9 @@
             ls{"Hora estàndard de les Açores"}
         }
         "meta:Bangladesh"{
-            ld{"Hora d’estiu de Bangla Desh"}
-            lg{"Hora de Bangla Desh"}
-            ls{"Hora estàndard de Bangla Desh"}
+            ld{"Hora d’estiu de Bangladesh"}
+            lg{"Hora de Bangladesh"}
+            ls{"Hora estàndard de Bangladesh"}
         }
         "meta:Bhutan"{
             ls{"Hora de Bhutan"}
@@ -1429,7 +1426,7 @@
             ls{"Hora estàndard de Cap Verd"}
         }
         "meta:Chamorro"{
-            ls{"Hora de Chamorro"}
+            ls{"Hora estàndard de Chamorro"}
         }
         "meta:Chatham"{
             ld{"Hora d’estiu de Chatham"}
@@ -1561,7 +1558,7 @@
             ls{"Hora estàndard de l’Oest de Groenlàndia"}
         }
         "meta:Gulf"{
-            ls{"Hora del Golf"}
+            ls{"Hora estàndard del Golf"}
         }
         "meta:Guyana"{
             ls{"Hora de Guyana"}
@@ -1588,7 +1585,7 @@
             ls{"Hora de l’oceà Índic"}
         }
         "meta:Indochina"{
-            ls{"Hora d’Indoxina"}
+            ls{"Hora de l’Indoxina"}
         }
         "meta:Indonesia_Central"{
             ls{"Hora central d’Indonèsia"}
@@ -1600,9 +1597,9 @@
             ls{"Hora de l’oest d’Indonèsia"}
         }
         "meta:Iran"{
-            ld{"Hora d’estiu d’Iran"}
-            lg{"Hora d’Iran"}
-            ls{"Hora estàndard d’Iran"}
+            ld{"Hora d’estiu de l’Iran"}
+            lg{"Hora de l’Iran"}
+            ls{"Hora estàndard de l’Iran"}
         }
         "meta:Irkutsk"{
             ld{"Hora d’estiu d’Irkutsk"}
@@ -1776,9 +1773,9 @@
             ls{"Hora estàndard del Perú"}
         }
         "meta:Philippines"{
-            ld{"Hora d’estiu de Filipines"}
-            lg{"Hora de Filipines"}
-            ls{"Hora estàndard de Filipines"}
+            ld{"Hora d’estiu de les Filipines"}
+            lg{"Hora de les Filipines"}
+            ls{"Hora estàndard de les Filipines"}
         }
         "meta:Phoenix_Islands"{
             ls{"Hora de les illes Phoenix"}
@@ -1825,7 +1822,7 @@
             ls{"Hora de Singapur"}
         }
         "meta:Solomon"{
-            ls{"Hora de Salomó"}
+            ls{"Hora de les illes Salomó"}
         }
         "meta:South_Georgia"{
             ls{"Hora de Geòrgia del Sud"}
@@ -1898,7 +1895,7 @@
             ls{"Hora de Vostok"}
         }
         "meta:Wake"{
-            ls{"Hora de Wake"}
+            ls{"Hora de les illes Wake"}
         }
         "meta:Wallis"{
             ls{"Hora de Wallis i Futuna"}
diff --git a/icu4c/source/data/zone/ccp.txt b/icu4c/source/data/zone/ccp.txt
index 3bcb5e4..55b9510 100644
--- a/icu4c/source/data/zone/ccp.txt
+++ b/icu4c/source/data/zone/ccp.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ccp{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"𑄃𑄝𑄨𑄘𑄴𑄎𑄚𑄴"}
diff --git a/icu4c/source/data/zone/ce.txt b/icu4c/source/data/zone/ce.txt
index 65d9624..4a74c29 100644
--- a/icu4c/source/data/zone/ce.txt
+++ b/icu4c/source/data/zone/ce.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ce{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Абиджан"}
diff --git a/icu4c/source/data/zone/ceb.txt b/icu4c/source/data/zone/ceb.txt
index 880c9a4..64ea9e5 100644
--- a/icu4c/source/data/zone/ceb.txt
+++ b/icu4c/source/data/zone/ceb.txt
@@ -1,8 +1,11 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ceb{
-    Version{"37"}
     zoneStrings{
+        "Asia:Saigon"{
+            ec{"Siyudad sa Ho Chi Minh"}
+        }
         "Etc:UTC"{
             ls{"Gikoordinar nga Kinatibuk-ang Oras"}
         }
@@ -68,7 +71,7 @@
             ls{"Tamdanang Oras sa Apia"}
         }
         "meta:Arabian"{
-            ld{"Oras sa Adlawan sa Arabia"}
+            ld{"Oras sa Tag-init sa Arabia"}
             lg{"Oras sa Arabia"}
             ls{"Tamdanang Oras sa Arabia"}
         }
@@ -160,9 +163,9 @@
             ls{"Tamdanang Oras sa Chile"}
         }
         "meta:China"{
-            ld{"Oras sa Adlawan sa China"}
-            lg{"Oras sa China"}
-            ls{"Tamdanang Oras sa China"}
+            ld{"Oras sa Tag-init sa Tsina"}
+            lg{"Oras sa Tsina"}
+            ls{"Tamdanang Oras sa Tsina"}
         }
         "meta:Choibalsan"{
             ld{"Oras sa Tag-init sa Choibalsan"}
@@ -308,7 +311,7 @@
             ls{"Oras sa Western Indonesia"}
         }
         "meta:Iran"{
-            ld{"Oras sa Adlawan sa Iran"}
+            ld{"Oras sa Tag-init sa Iran"}
             lg{"Oras sa Iran"}
             ls{"Tamdanang Oras sa Iran"}
         }
@@ -318,7 +321,7 @@
             ls{"Tamdanang Oras sa Irkutsk"}
         }
         "meta:Israel"{
-            ld{"Oras sa Adlawan sa Israel"}
+            ld{"Oras sa Tag-init sa Israel"}
             lg{"Oras sa Israel"}
             ls{"Tamdanang Oras sa Israel"}
         }
@@ -334,7 +337,7 @@
             ls{"Oras sa West Kazakhstan"}
         }
         "meta:Korea"{
-            ld{"Oras sa Adlawan sa Korea"}
+            ld{"Oras sa Tag-init sa Korea"}
             lg{"Oras sa Korea"}
             ls{"Tamdanang Oras sa Korea"}
         }
@@ -533,7 +536,7 @@
             ls{"Oras sa Tahiti"}
         }
         "meta:Taipei"{
-            ld{"Oras sa Adlawan sa Taipei"}
+            ld{"Oras sa Tag-init sa Taipei"}
             lg{"Oras sa Taipei"}
             ls{"Tamdanang Oras sa Taipei"}
         }
diff --git a/icu4c/source/data/zone/cgg.txt b/icu4c/source/data/zone/cgg.txt
index 25daf6b..61aa5e5 100644
--- a/icu4c/source/data/zone/cgg.txt
+++ b/icu4c/source/data/zone/cgg.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cgg{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/chr.txt b/icu4c/source/data/zone/chr.txt
index b5e0e46..a905054 100644
--- a/icu4c/source/data/zone/chr.txt
+++ b/icu4c/source/data/zone/chr.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 chr{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"ᎠᏈᏣᏂ"}
diff --git a/icu4c/source/data/zone/ckb.txt b/icu4c/source/data/zone/ckb.txt
index 8400cf4..ddfecf2 100644
--- a/icu4c/source/data/zone/ckb.txt
+++ b/icu4c/source/data/zone/ckb.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ckb{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/cs.txt b/icu4c/source/data/zone/cs.txt
index 6ca4db7..25e4f63 100644
--- a/icu4c/source/data/zone/cs.txt
+++ b/icu4c/source/data/zone/cs.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cs{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidžan"}
diff --git a/icu4c/source/data/zone/cy.txt b/icu4c/source/data/zone/cy.txt
index cc2e6f4..a407baf 100644
--- a/icu4c/source/data/zone/cy.txt
+++ b/icu4c/source/data/zone/cy.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 cy{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -547,7 +547,7 @@
             ec{"Sitka"}
         }
         "America:St_Barthelemy"{
-            ec{"St. Barthelemy"}
+            ec{"St. Barthélemy"}
         }
         "America:St_Johns"{
             ec{"St. John’s"}
@@ -1052,9 +1052,6 @@
         "Europe:Monaco"{
             ec{"Monaco"}
         }
-        "Europe:Moscow"{
-            ec{"Moscfa"}
-        }
         "Europe:Oslo"{
             ec{"Oslo"}
         }
@@ -1399,7 +1396,7 @@
             ls{"Amser Bhutan"}
         }
         "meta:Bolivia"{
-            ls{"Amser Bolivia"}
+            ls{"Amser Bolifia"}
         }
         "meta:Brasilia"{
             ld{"Amser Haf Brasília"}
@@ -1454,9 +1451,9 @@
             ls{"Amser Safonol Ynysoedd Cook"}
         }
         "meta:Cuba"{
-            ld{"Amser Haf Cuba"}
-            lg{"Amser Cuba"}
-            ls{"Amser Safonol Cuba"}
+            ld{"Amser Haf Ciwa"}
+            lg{"Amser Ciwba"}
+            ls{"Amser Safonol Ciwba"}
         }
         "meta:Davis"{
             ls{"Amser Davis"}
@@ -1601,9 +1598,9 @@
             ls{"Amser Safonol Israel"}
         }
         "meta:Japan"{
-            ld{"Amser Haf Siapan"}
-            lg{"Amser Siapan"}
-            ls{"Amser Safonol Siapan"}
+            ld{"Amser Haf Japan"}
+            lg{"Amser Japan"}
+            ls{"Amser Safonol Japan"}
         }
         "meta:Kazakhstan_Eastern"{
             ls{"Amser Dwyrain Kazakhstan"}
diff --git a/icu4c/source/data/zone/da.txt b/icu4c/source/data/zone/da.txt
index ec36561..5d38526 100644
--- a/icu4c/source/data/zone/da.txt
+++ b/icu4c/source/data/zone/da.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 da{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
diff --git a/icu4c/source/data/zone/dav.txt b/icu4c/source/data/zone/dav.txt
index 6894cef..d2d0189 100644
--- a/icu4c/source/data/zone/dav.txt
+++ b/icu4c/source/data/zone/dav.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dav{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/de.txt b/icu4c/source/data/zone/de.txt
index f6ec00e..ca6ec51 100644
--- a/icu4c/source/data/zone/de.txt
+++ b/icu4c/source/data/zone/de.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -1553,7 +1553,7 @@
             ls{"Französisch-Guayana-Zeit"}
         }
         "meta:French_Southern"{
-            ls{"Französische Süd- und Antarktisgebiete-Zeit"}
+            ls{"Französische-Süd-und-Antarktisgebiete-Zeit"}
         }
         "meta:GMT"{
             ls{"Mittlere Greenwich-Zeit"}
@@ -1607,10 +1607,10 @@
             ls{"Chowd-Normalzeit"}
         }
         "meta:India"{
-            ls{"Indische Zeit"}
+            ls{"Indische Normalzeit"}
         }
         "meta:Indian_Ocean"{
-            ls{"Indischer Ozean-Zeit"}
+            ls{"Indischer-Ozean-Zeit"}
         }
         "meta:Indochina"{
             ls{"Indochina-Zeit"}
@@ -1768,9 +1768,9 @@
             ls{"Norfolkinsel-Normalzeit"}
         }
         "meta:Noronha"{
-            ld{"Fernando de Noronha-Sommerzeit"}
-            lg{"Fernando de Noronha-Zeit"}
-            ls{"Fernando de Noronha-Normalzeit"}
+            ld{"Fernando-de-Noronha-Sommerzeit"}
+            lg{"Fernando-de-Noronha-Zeit"}
+            ls{"Fernando-de-Noronha-Normalzeit"}
         }
         "meta:North_Mariana"{
             ls{"Nördliche-Marianen-Zeit"}
@@ -1781,9 +1781,9 @@
             ls{"Nowosibirsk-Normalzeit"}
         }
         "meta:Omsk"{
-            ld{"Omsk-Sommerzeit"}
-            lg{"Omsk-Zeit"}
-            ls{"Omsk-Normalzeit"}
+            ld{"Omsker Sommerzeit"}
+            lg{"Omsker Zeit"}
+            ls{"Omsker Normalzeit"}
         }
         "meta:Pakistan"{
             ld{"Pakistanische Sommerzeit"}
@@ -1858,7 +1858,7 @@
             ls{"Seychellen-Zeit"}
         }
         "meta:Singapore"{
-            ls{"Singapur-Zeit"}
+            ls{"Singapurische Normalzeit"}
         }
         "meta:Solomon"{
             ls{"Salomonen-Zeit"}
@@ -1940,9 +1940,9 @@
             ls{"Wallis-und-Futuna-Zeit"}
         }
         "meta:Yakutsk"{
-            ld{"Jakutsk-Sommerzeit"}
-            lg{"Jakutsk-Zeit"}
-            ls{"Jakutsk-Normalzeit"}
+            ld{"Jakutsker Sommerzeit"}
+            lg{"Jakutsker Zeit"}
+            ls{"Jakutsker Normalzeit"}
         }
         "meta:Yekaterinburg"{
             ld{"Jekaterinburg-Sommerzeit"}
diff --git a/icu4c/source/data/zone/de_CH.txt b/icu4c/source/data/zone/de_CH.txt
index f8b1eef..885bf60 100644
--- a/icu4c/source/data/zone/de_CH.txt
+++ b/icu4c/source/data/zone/de_CH.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 de_CH{
-    Version{"37"}
     zoneStrings{
         "Asia:Brunei"{
             ec{"Brunei"}
diff --git a/icu4c/source/data/zone/dje.txt b/icu4c/source/data/zone/dje.txt
index 63575f5..acff366 100644
--- a/icu4c/source/data/zone/dje.txt
+++ b/icu4c/source/data/zone/dje.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dje{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/doi.txt b/icu4c/source/data/zone/doi.txt
new file mode 100644
index 0000000..e45c5d2
--- /dev/null
+++ b/icu4c/source/data/zone/doi.txt
@@ -0,0 +1,69 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+doi{
+    zoneStrings{
+        "Etc:UTC"{
+            ls{"तालमेली आलमी समां"}
+        }
+        "Etc:Unknown"{
+            ec{"अनजांता शैह्‌र"}
+        }
+        "Europe:Dublin"{
+            ld{"आयरिश मानक समां"}
+        }
+        "Europe:London"{
+            ld{"ब्रिटिश गर्मियें दा समां"}
+        }
+        "meta:America_Central"{
+            ld{"उत्तरी अमरीकी डेलाइट केंदरी समां"}
+            lg{"उत्तरी अमरीकी केंदरी समां"}
+            ls{"उत्तरी अमरीकी मानक केंदरी समां"}
+        }
+        "meta:America_Eastern"{
+            ld{"उत्तरी अमरीकी डेलाइट पूर्वी समां"}
+            lg{"उत्तरी अमरीकी पूर्वी समां"}
+            ls{"उत्तरी अमरीकी मानक पूर्वी समां"}
+        }
+        "meta:America_Mountain"{
+            ld{"उत्तरी अमरीकी डेलाइट माउंटेन समां"}
+            lg{"उत्तरी अमरीकी माउंटेन समां"}
+            ls{"उत्तरी अमरीकी मानक माउंटेन समां"}
+        }
+        "meta:America_Pacific"{
+            ld{"उत्तरी अमरीकी डेलाइट प्रशांत समां"}
+            lg{"उत्तरी अमरीकी प्रशांत समां"}
+            ls{"उत्तरी अमरीकी मानक प्रशांत समां"}
+        }
+        "meta:Atlantic"{
+            ld{"अटलांटिक डेलाइट समां"}
+            lg{"अटलांटिक समां"}
+            ls{"अटलांटिक मानक समां"}
+        }
+        "meta:Europe_Central"{
+            ld{"केंदरी यूरोपी गर्मियें दा समां"}
+            lg{"केंदरी यूरोपी समां"}
+            ls{"केंदरी यूरोपी मानक समां"}
+        }
+        "meta:Europe_Eastern"{
+            ld{"उत्तरी यूरोपी गर्मियें दा समां"}
+            lg{"उत्तरी यूरोपी समां"}
+            ls{"उत्तरी यूरोपी मानक समां"}
+        }
+        "meta:Europe_Western"{
+            ld{"पच्छमी यूरोपी गर्मियें दा समां"}
+            lg{"पच्छमी यूरोपी समां"}
+            ls{"पच्छमी यूरोपी मानक समां"}
+        }
+        "meta:GMT"{
+            ls{"ग्रीनविच मीन टाइम"}
+        }
+        fallbackFormat{"{1} ({0})"}
+        gmtFormat{"GMT{0}"}
+        gmtZeroFormat{"GMT"}
+        hourFormat{"+HH:mm;-HH:mm"}
+        regionFormat{"{0} समां"}
+        regionFormatDaylight{"{0} डेलाइट समां"}
+        regionFormatStandard{"{0} मानक समां"}
+    }
+}
diff --git a/icu4c/source/data/zone/dsb.txt b/icu4c/source/data/zone/dsb.txt
index 91f39ef..b64eab1 100644
--- a/icu4c/source/data/zone/dsb.txt
+++ b/icu4c/source/data/zone/dsb.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dsb{
-    Version{"37"}
     zoneStrings{
         "Africa:Accra"{
             ec{"Akkra"}
diff --git a/icu4c/source/data/zone/dua.txt b/icu4c/source/data/zone/dua.txt
index ba39bd9..bf646aa 100644
--- a/icu4c/source/data/zone/dua.txt
+++ b/icu4c/source/data/zone/dua.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dua{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/dyo.txt b/icu4c/source/data/zone/dyo.txt
index d9da7c4..5fbeb3b 100644
--- a/icu4c/source/data/zone/dyo.txt
+++ b/icu4c/source/data/zone/dyo.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dyo{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/dz.txt b/icu4c/source/data/zone/dz.txt
index 4c36f4a..6b5e4cb 100644
--- a/icu4c/source/data/zone/dz.txt
+++ b/icu4c/source/data/zone/dz.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 dz{
-    Version{"37"}
     zoneStrings{
         "Africa:Cairo"{
             ec{"ཀཱའི་རོ"}
diff --git a/icu4c/source/data/zone/ebu.txt b/icu4c/source/data/zone/ebu.txt
index bfefc79..510053d 100644
--- a/icu4c/source/data/zone/ebu.txt
+++ b/icu4c/source/data/zone/ebu.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ebu{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/ee.txt b/icu4c/source/data/zone/ee.txt
index 2f3793f..b8ad9ed 100644
--- a/icu4c/source/data/zone/ee.txt
+++ b/icu4c/source/data/zone/ee.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ee{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
diff --git a/icu4c/source/data/zone/el.txt b/icu4c/source/data/zone/el.txt
index e1b8b7d..ce84a4c 100644
--- a/icu4c/source/data/zone/el.txt
+++ b/icu4c/source/data/zone/el.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 el{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Αμπιτζάν"}
diff --git a/icu4c/source/data/zone/en.txt b/icu4c/source/data/zone/en.txt
index 8ee8d1b..3aef6ad 100644
--- a/icu4c/source/data/zone/en.txt
+++ b/icu4c/source/data/zone/en.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en{
-    Version{"37"}
     zoneStrings{
         "Africa:Sao_Tome"{
             ec{"São Tomé"}
diff --git a/icu4c/source/data/zone/en_001.txt b/icu4c/source/data/zone/en_001.txt
index 0271d60..351504a 100644
--- a/icu4c/source/data/zone/en_001.txt
+++ b/icu4c/source/data/zone/en_001.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_001{
-    Version{"37"}
     zoneStrings{
         "America:St_Barthelemy"{
             ec{"St Barthélemy"}
@@ -21,6 +21,9 @@
         "America:St_Vincent"{
             ec{"St Vincent"}
         }
+        "Asia:Aqtau"{
+            ec{"Aktau"}
+        }
         "Atlantic:St_Helena"{
             ec{"St Helena"}
         }
diff --git a/icu4c/source/data/zone/en_150.txt b/icu4c/source/data/zone/en_150.txt
index cc273ad..e6dd944 100644
--- a/icu4c/source/data/zone/en_150.txt
+++ b/icu4c/source/data/zone/en_150.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_150{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Europe_Central"{
             sd{"CEST"}
diff --git a/icu4c/source/data/zone/en_AE.txt b/icu4c/source/data/zone/en_AE.txt
index 042856e..dfe4796 100644
--- a/icu4c/source/data/zone/en_AE.txt
+++ b/icu4c/source/data/zone/en_AE.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AE{
-    Version{"37"}
     zoneStrings{
         "Pacific:Honolulu"{
             sd{"∅∅∅"}
diff --git a/icu4c/source/data/zone/en_AG.txt b/icu4c/source/data/zone/en_AG.txt
index 15f4f3b..95a979e 100644
--- a/icu4c/source/data/zone/en_AG.txt
+++ b/icu4c/source/data/zone/en_AG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_AI.txt b/icu4c/source/data/zone/en_AI.txt
index ec4deb2..e1cf751 100644
--- a/icu4c/source/data/zone/en_AI.txt
+++ b/icu4c/source/data/zone/en_AI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AI{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_AT.txt b/icu4c/source/data/zone/en_AT.txt
index e4a6465..075c742 100644
--- a/icu4c/source/data/zone/en_AT.txt
+++ b/icu4c/source/data/zone/en_AT.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AT{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_AU.txt b/icu4c/source/data/zone/en_AU.txt
index 64b0cfe..3a12c42 100644
--- a/icu4c/source/data/zone/en_AU.txt
+++ b/icu4c/source/data/zone/en_AU.txt
@@ -1,12 +1,9 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_AU{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
-        "Asia:Rangoon"{
-            ec{"Rangoon"}
-        }
         "Pacific:Johnston"{
             ec{"Johnston"}
         }
diff --git a/icu4c/source/data/zone/en_BB.txt b/icu4c/source/data/zone/en_BB.txt
index 814000f..d62d192 100644
--- a/icu4c/source/data/zone/en_BB.txt
+++ b/icu4c/source/data/zone/en_BB.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BB{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_BE.txt b/icu4c/source/data/zone/en_BE.txt
index ded6405..0e5fffa 100644
--- a/icu4c/source/data/zone/en_BE.txt
+++ b/icu4c/source/data/zone/en_BE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BE{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_BM.txt b/icu4c/source/data/zone/en_BM.txt
index 1f9a62c..d45a1f9 100644
--- a/icu4c/source/data/zone/en_BM.txt
+++ b/icu4c/source/data/zone/en_BM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_BS.txt b/icu4c/source/data/zone/en_BS.txt
index 115d868..fa71936 100644
--- a/icu4c/source/data/zone/en_BS.txt
+++ b/icu4c/source/data/zone/en_BS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_BW.txt b/icu4c/source/data/zone/en_BW.txt
index b7792aa..83ede1c 100644
--- a/icu4c/source/data/zone/en_BW.txt
+++ b/icu4c/source/data/zone/en_BW.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BW{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_BZ.txt b/icu4c/source/data/zone/en_BZ.txt
index 226183a..fbf6977 100644
--- a/icu4c/source/data/zone/en_BZ.txt
+++ b/icu4c/source/data/zone/en_BZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_BZ{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_CA.txt b/icu4c/source/data/zone/en_CA.txt
index 86a4e3d..5e12327 100644
--- a/icu4c/source/data/zone/en_CA.txt
+++ b/icu4c/source/data/zone/en_CA.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CA{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "Asia:Rangoon"{
             ec{"Rangoon"}
diff --git a/icu4c/source/data/zone/en_CC.txt b/icu4c/source/data/zone/en_CC.txt
index bce9886..906cf1e 100644
--- a/icu4c/source/data/zone/en_CC.txt
+++ b/icu4c/source/data/zone/en_CC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_CH.txt b/icu4c/source/data/zone/en_CH.txt
index 244edf2..2362921 100644
--- a/icu4c/source/data/zone/en_CH.txt
+++ b/icu4c/source/data/zone/en_CH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CH{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_CK.txt b/icu4c/source/data/zone/en_CK.txt
index ad52b0e..dc1c065 100644
--- a/icu4c/source/data/zone/en_CK.txt
+++ b/icu4c/source/data/zone/en_CK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_CM.txt b/icu4c/source/data/zone/en_CM.txt
index 2604e7f..a863994 100644
--- a/icu4c/source/data/zone/en_CM.txt
+++ b/icu4c/source/data/zone/en_CM.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CM{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_CX.txt b/icu4c/source/data/zone/en_CX.txt
index 702f22b..58ff415 100644
--- a/icu4c/source/data/zone/en_CX.txt
+++ b/icu4c/source/data/zone/en_CX.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CX{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_CY.txt b/icu4c/source/data/zone/en_CY.txt
index 21b11b7..d4e75c0 100644
--- a/icu4c/source/data/zone/en_CY.txt
+++ b/icu4c/source/data/zone/en_CY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_CY{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_DE.txt b/icu4c/source/data/zone/en_DE.txt
index 2623614..0147e01 100644
--- a/icu4c/source/data/zone/en_DE.txt
+++ b/icu4c/source/data/zone/en_DE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DE{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_DG.txt b/icu4c/source/data/zone/en_DG.txt
index 95b8e88..10bd8d9 100644
--- a/icu4c/source/data/zone/en_DG.txt
+++ b/icu4c/source/data/zone/en_DG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_DK.txt b/icu4c/source/data/zone/en_DK.txt
index d98349b..d694bb0 100644
--- a/icu4c/source/data/zone/en_DK.txt
+++ b/icu4c/source/data/zone/en_DK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DK{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_DM.txt b/icu4c/source/data/zone/en_DM.txt
index 5bfedb7..224df76 100644
--- a/icu4c/source/data/zone/en_DM.txt
+++ b/icu4c/source/data/zone/en_DM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_DM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_ER.txt b/icu4c/source/data/zone/en_ER.txt
index ea5b75f..b386ab1 100644
--- a/icu4c/source/data/zone/en_ER.txt
+++ b/icu4c/source/data/zone/en_ER.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ER{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_FI.txt b/icu4c/source/data/zone/en_FI.txt
index ae4b517..0b93a7e 100644
--- a/icu4c/source/data/zone/en_FI.txt
+++ b/icu4c/source/data/zone/en_FI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FI{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_FJ.txt b/icu4c/source/data/zone/en_FJ.txt
index 0c4ca01..65b19ac 100644
--- a/icu4c/source/data/zone/en_FJ.txt
+++ b/icu4c/source/data/zone/en_FJ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FJ{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_FK.txt b/icu4c/source/data/zone/en_FK.txt
index 9c92bfd..1fca516 100644
--- a/icu4c/source/data/zone/en_FK.txt
+++ b/icu4c/source/data/zone/en_FK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_FM.txt b/icu4c/source/data/zone/en_FM.txt
index 352f324..ad38147 100644
--- a/icu4c/source/data/zone/en_FM.txt
+++ b/icu4c/source/data/zone/en_FM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_FM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_GB.txt b/icu4c/source/data/zone/en_GB.txt
index cde195e..f37c95f 100644
--- a/icu4c/source/data/zone/en_GB.txt
+++ b/icu4c/source/data/zone/en_GB.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GB{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -613,9 +613,6 @@
         "Asia:Anadyr"{
             ec{"Anadyr"}
         }
-        "Asia:Aqtau"{
-            ec{"Aqtau"}
-        }
         "Asia:Aqtobe"{
             ec{"Aqtobe"}
         }
diff --git a/icu4c/source/data/zone/en_GD.txt b/icu4c/source/data/zone/en_GD.txt
index 98ca5e4..5aadd22 100644
--- a/icu4c/source/data/zone/en_GD.txt
+++ b/icu4c/source/data/zone/en_GD.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GD{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_GG.txt b/icu4c/source/data/zone/en_GG.txt
index 8bee533..6d63e55 100644
--- a/icu4c/source/data/zone/en_GG.txt
+++ b/icu4c/source/data/zone/en_GG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_GH.txt b/icu4c/source/data/zone/en_GH.txt
index f311ddc..99ba648 100644
--- a/icu4c/source/data/zone/en_GH.txt
+++ b/icu4c/source/data/zone/en_GH.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GH{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_GI.txt b/icu4c/source/data/zone/en_GI.txt
index 5afa54f..809590d 100644
--- a/icu4c/source/data/zone/en_GI.txt
+++ b/icu4c/source/data/zone/en_GI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GI{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_GM.txt b/icu4c/source/data/zone/en_GM.txt
index 226ac23..67278f6 100644
--- a/icu4c/source/data/zone/en_GM.txt
+++ b/icu4c/source/data/zone/en_GM.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GM{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_GU.txt b/icu4c/source/data/zone/en_GU.txt
index fa8f727..df0b075 100644
--- a/icu4c/source/data/zone/en_GU.txt
+++ b/icu4c/source/data/zone/en_GU.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GU{
-    Version{"37"}
     zoneStrings{
         "meta:Chamorro"{
             ss{"ChST"}
diff --git a/icu4c/source/data/zone/en_GY.txt b/icu4c/source/data/zone/en_GY.txt
index 43ae552..7597458 100644
--- a/icu4c/source/data/zone/en_GY.txt
+++ b/icu4c/source/data/zone/en_GY.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_GY{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Guyana"{
             ss{"GYT"}
diff --git a/icu4c/source/data/zone/en_HK.txt b/icu4c/source/data/zone/en_HK.txt
index 1e3b180..645bbe1 100644
--- a/icu4c/source/data/zone/en_HK.txt
+++ b/icu4c/source/data/zone/en_HK.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_HK{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Hong_Kong"{
             sd{"HKST"}
diff --git a/icu4c/source/data/zone/en_IE.txt b/icu4c/source/data/zone/en_IE.txt
index 1c12745..1ab2d0d 100644
--- a/icu4c/source/data/zone/en_IE.txt
+++ b/icu4c/source/data/zone/en_IE.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IE{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "Europe:Dublin"{
             sd{"IST"}
diff --git a/icu4c/source/data/zone/en_IL.txt b/icu4c/source/data/zone/en_IL.txt
index 2d32919..39fe763 100644
--- a/icu4c/source/data/zone/en_IL.txt
+++ b/icu4c/source/data/zone/en_IL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IL{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_IM.txt b/icu4c/source/data/zone/en_IM.txt
index 15a218b..d6e869d 100644
--- a/icu4c/source/data/zone/en_IM.txt
+++ b/icu4c/source/data/zone/en_IM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_IN.txt b/icu4c/source/data/zone/en_IN.txt
index c15c1cb..1db9ea3 100644
--- a/icu4c/source/data/zone/en_IN.txt
+++ b/icu4c/source/data/zone/en_IN.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IN{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "Asia:Rangoon"{
             ec{"Rangoon"}
diff --git a/icu4c/source/data/zone/en_IO.txt b/icu4c/source/data/zone/en_IO.txt
index 5cd7210..5b70c5a 100644
--- a/icu4c/source/data/zone/en_IO.txt
+++ b/icu4c/source/data/zone/en_IO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_IO{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_JE.txt b/icu4c/source/data/zone/en_JE.txt
index d8e0823..715ff18 100644
--- a/icu4c/source/data/zone/en_JE.txt
+++ b/icu4c/source/data/zone/en_JE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_JE{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_JM.txt b/icu4c/source/data/zone/en_JM.txt
index 695ae1a..08a5127 100644
--- a/icu4c/source/data/zone/en_JM.txt
+++ b/icu4c/source/data/zone/en_JM.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_JM{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_KE.txt b/icu4c/source/data/zone/en_KE.txt
index d577a5e..433cac2 100644
--- a/icu4c/source/data/zone/en_KE.txt
+++ b/icu4c/source/data/zone/en_KE.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KE{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_KI.txt b/icu4c/source/data/zone/en_KI.txt
index 6c68a9f..8cd023d 100644
--- a/icu4c/source/data/zone/en_KI.txt
+++ b/icu4c/source/data/zone/en_KI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KI{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_KN.txt b/icu4c/source/data/zone/en_KN.txt
index 35ebc91..092c41e 100644
--- a/icu4c/source/data/zone/en_KN.txt
+++ b/icu4c/source/data/zone/en_KN.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KN{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_KY.txt b/icu4c/source/data/zone/en_KY.txt
index 71fa196..a0c571e 100644
--- a/icu4c/source/data/zone/en_KY.txt
+++ b/icu4c/source/data/zone/en_KY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_KY{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_LC.txt b/icu4c/source/data/zone/en_LC.txt
index 5e248ad..ce24452 100644
--- a/icu4c/source/data/zone/en_LC.txt
+++ b/icu4c/source/data/zone/en_LC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_LC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_LR.txt b/icu4c/source/data/zone/en_LR.txt
index 4d85249..348cd51 100644
--- a/icu4c/source/data/zone/en_LR.txt
+++ b/icu4c/source/data/zone/en_LR.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_LR{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_LS.txt b/icu4c/source/data/zone/en_LS.txt
index 3fc2453..99c9dad 100644
--- a/icu4c/source/data/zone/en_LS.txt
+++ b/icu4c/source/data/zone/en_LS.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_LS{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_MG.txt b/icu4c/source/data/zone/en_MG.txt
index e9cf845..266fbf3 100644
--- a/icu4c/source/data/zone/en_MG.txt
+++ b/icu4c/source/data/zone/en_MG.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MG{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_MH.txt b/icu4c/source/data/zone/en_MH.txt
index 7a6e541..64737ba 100644
--- a/icu4c/source/data/zone/en_MH.txt
+++ b/icu4c/source/data/zone/en_MH.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MH{
-    Version{"37"}
     zoneStrings{
         "Pacific:Honolulu"{
             sd{"∅∅∅"}
diff --git a/icu4c/source/data/zone/en_MO.txt b/icu4c/source/data/zone/en_MO.txt
index 2ab8b74..4541e00 100644
--- a/icu4c/source/data/zone/en_MO.txt
+++ b/icu4c/source/data/zone/en_MO.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MO{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Hong_Kong"{
             sd{"HKST"}
diff --git a/icu4c/source/data/zone/en_MP.txt b/icu4c/source/data/zone/en_MP.txt
index 0604749..1721cab 100644
--- a/icu4c/source/data/zone/en_MP.txt
+++ b/icu4c/source/data/zone/en_MP.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MP{
-    Version{"37"}
     zoneStrings{
         "Pacific:Honolulu"{
             sd{"∅∅∅"}
diff --git a/icu4c/source/data/zone/en_MS.txt b/icu4c/source/data/zone/en_MS.txt
index fbedac5..e0028aa 100644
--- a/icu4c/source/data/zone/en_MS.txt
+++ b/icu4c/source/data/zone/en_MS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_MT.txt b/icu4c/source/data/zone/en_MT.txt
index a3af927..a217827 100644
--- a/icu4c/source/data/zone/en_MT.txt
+++ b/icu4c/source/data/zone/en_MT.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MT{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_MU.txt b/icu4c/source/data/zone/en_MU.txt
index fde9ccf..01c1b07 100644
--- a/icu4c/source/data/zone/en_MU.txt
+++ b/icu4c/source/data/zone/en_MU.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MU{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_MW.txt b/icu4c/source/data/zone/en_MW.txt
index 49e0438..1bc72a6 100644
--- a/icu4c/source/data/zone/en_MW.txt
+++ b/icu4c/source/data/zone/en_MW.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MW{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_MY.txt b/icu4c/source/data/zone/en_MY.txt
index 012e5ec..be50366 100644
--- a/icu4c/source/data/zone/en_MY.txt
+++ b/icu4c/source/data/zone/en_MY.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_MY{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Malaysia"{
             ss{"MYT"}
diff --git a/icu4c/source/data/zone/en_NA.txt b/icu4c/source/data/zone/en_NA.txt
index f2771e3..f414a0d 100644
--- a/icu4c/source/data/zone/en_NA.txt
+++ b/icu4c/source/data/zone/en_NA.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NA{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_NF.txt b/icu4c/source/data/zone/en_NF.txt
index e264ade..514d0d9 100644
--- a/icu4c/source/data/zone/en_NF.txt
+++ b/icu4c/source/data/zone/en_NF.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NF{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_NG.txt b/icu4c/source/data/zone/en_NG.txt
index 15a8f0c..fbb72d7 100644
--- a/icu4c/source/data/zone/en_NG.txt
+++ b/icu4c/source/data/zone/en_NG.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NG{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_NH.txt b/icu4c/source/data/zone/en_NH.txt
index 958b96b..5dc995b 100644
--- a/icu4c/source/data/zone/en_NH.txt
+++ b/icu4c/source/data/zone/en_NH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NH{
     "%%ALIAS"{"en_VU"}
 }
diff --git a/icu4c/source/data/zone/en_NL.txt b/icu4c/source/data/zone/en_NL.txt
index 5b5436b..0b352bd 100644
--- a/icu4c/source/data/zone/en_NL.txt
+++ b/icu4c/source/data/zone/en_NL.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NL{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_NR.txt b/icu4c/source/data/zone/en_NR.txt
index 4377e15..89304ca 100644
--- a/icu4c/source/data/zone/en_NR.txt
+++ b/icu4c/source/data/zone/en_NR.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NR{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_NU.txt b/icu4c/source/data/zone/en_NU.txt
index 56d9b22..830320b 100644
--- a/icu4c/source/data/zone/en_NU.txt
+++ b/icu4c/source/data/zone/en_NU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NU{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_NZ.txt b/icu4c/source/data/zone/en_NZ.txt
index a1c15d5..367acf6 100644
--- a/icu4c/source/data/zone/en_NZ.txt
+++ b/icu4c/source/data/zone/en_NZ.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_NZ{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Australia_Central"{
             sd{"ACDT"}
diff --git a/icu4c/source/data/zone/en_PG.txt b/icu4c/source/data/zone/en_PG.txt
index ffddbf4..217c90f 100644
--- a/icu4c/source/data/zone/en_PG.txt
+++ b/icu4c/source/data/zone/en_PG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_PH.txt b/icu4c/source/data/zone/en_PH.txt
index 9657884..1b59777 100644
--- a/icu4c/source/data/zone/en_PH.txt
+++ b/icu4c/source/data/zone/en_PH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PH{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_PK.txt b/icu4c/source/data/zone/en_PK.txt
index 874a3ee..9093157 100644
--- a/icu4c/source/data/zone/en_PK.txt
+++ b/icu4c/source/data/zone/en_PK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_PN.txt b/icu4c/source/data/zone/en_PN.txt
index 7f93228..975dcb4 100644
--- a/icu4c/source/data/zone/en_PN.txt
+++ b/icu4c/source/data/zone/en_PN.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PN{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_PW.txt b/icu4c/source/data/zone/en_PW.txt
index ed60f26..89ef3e6 100644
--- a/icu4c/source/data/zone/en_PW.txt
+++ b/icu4c/source/data/zone/en_PW.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_PW{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_RH.txt b/icu4c/source/data/zone/en_RH.txt
index b60f708..24bad29 100644
--- a/icu4c/source/data/zone/en_RH.txt
+++ b/icu4c/source/data/zone/en_RH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_RH{
     "%%ALIAS"{"en_ZW"}
 }
diff --git a/icu4c/source/data/zone/en_RW.txt b/icu4c/source/data/zone/en_RW.txt
index 6357e0e..f79bb49 100644
--- a/icu4c/source/data/zone/en_RW.txt
+++ b/icu4c/source/data/zone/en_RW.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_RW{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_SB.txt b/icu4c/source/data/zone/en_SB.txt
index 7e736c2..9907157 100644
--- a/icu4c/source/data/zone/en_SB.txt
+++ b/icu4c/source/data/zone/en_SB.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SB{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_SC.txt b/icu4c/source/data/zone/en_SC.txt
index df04930..9d503c4 100644
--- a/icu4c/source/data/zone/en_SC.txt
+++ b/icu4c/source/data/zone/en_SC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_SD.txt b/icu4c/source/data/zone/en_SD.txt
index c43e3d7..700a5ba 100644
--- a/icu4c/source/data/zone/en_SD.txt
+++ b/icu4c/source/data/zone/en_SD.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SD{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_SE.txt b/icu4c/source/data/zone/en_SE.txt
index c2a72c0..ec7d34e 100644
--- a/icu4c/source/data/zone/en_SE.txt
+++ b/icu4c/source/data/zone/en_SE.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SE{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_SG.txt b/icu4c/source/data/zone/en_SG.txt
index fa15aad..0c42cdd 100644
--- a/icu4c/source/data/zone/en_SG.txt
+++ b/icu4c/source/data/zone/en_SG.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SG{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Malaysia"{
             ss{"MYT"}
diff --git a/icu4c/source/data/zone/en_SH.txt b/icu4c/source/data/zone/en_SH.txt
index 0e6c3dc..09e4765 100644
--- a/icu4c/source/data/zone/en_SH.txt
+++ b/icu4c/source/data/zone/en_SH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SH{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_SI.txt b/icu4c/source/data/zone/en_SI.txt
index a69030e..6fb107a 100644
--- a/icu4c/source/data/zone/en_SI.txt
+++ b/icu4c/source/data/zone/en_SI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SI{
     %%Parent{"en_150"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_SL.txt b/icu4c/source/data/zone/en_SL.txt
index 162236d..62f2c53 100644
--- a/icu4c/source/data/zone/en_SL.txt
+++ b/icu4c/source/data/zone/en_SL.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SL{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_SS.txt b/icu4c/source/data/zone/en_SS.txt
index 2363f4d..0d4cdde 100644
--- a/icu4c/source/data/zone/en_SS.txt
+++ b/icu4c/source/data/zone/en_SS.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SS{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_SX.txt b/icu4c/source/data/zone/en_SX.txt
index 28da271..11fa700 100644
--- a/icu4c/source/data/zone/en_SX.txt
+++ b/icu4c/source/data/zone/en_SX.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SX{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_SZ.txt b/icu4c/source/data/zone/en_SZ.txt
index b5cf405..9c42b88 100644
--- a/icu4c/source/data/zone/en_SZ.txt
+++ b/icu4c/source/data/zone/en_SZ.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_SZ{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_TC.txt b/icu4c/source/data/zone/en_TC.txt
index 4129b99..181633b 100644
--- a/icu4c/source/data/zone/en_TC.txt
+++ b/icu4c/source/data/zone/en_TC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_TK.txt b/icu4c/source/data/zone/en_TK.txt
index 11010f3..e50d572 100644
--- a/icu4c/source/data/zone/en_TK.txt
+++ b/icu4c/source/data/zone/en_TK.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TK{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_TO.txt b/icu4c/source/data/zone/en_TO.txt
index 6b63ad2..d21d084 100644
--- a/icu4c/source/data/zone/en_TO.txt
+++ b/icu4c/source/data/zone/en_TO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TO{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_TT.txt b/icu4c/source/data/zone/en_TT.txt
index d91ebb5..d375378 100644
--- a/icu4c/source/data/zone/en_TT.txt
+++ b/icu4c/source/data/zone/en_TT.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TT{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_TV.txt b/icu4c/source/data/zone/en_TV.txt
index 2d0ae8f..6247752 100644
--- a/icu4c/source/data/zone/en_TV.txt
+++ b/icu4c/source/data/zone/en_TV.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TV{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_TZ.txt b/icu4c/source/data/zone/en_TZ.txt
index 2f824e4..0aa61d8 100644
--- a/icu4c/source/data/zone/en_TZ.txt
+++ b/icu4c/source/data/zone/en_TZ.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_TZ{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_UG.txt b/icu4c/source/data/zone/en_UG.txt
index 1ec09fa..68af9cd 100644
--- a/icu4c/source/data/zone/en_UG.txt
+++ b/icu4c/source/data/zone/en_UG.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_UG{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_VC.txt b/icu4c/source/data/zone/en_VC.txt
index 45b455d..a018754 100644
--- a/icu4c/source/data/zone/en_VC.txt
+++ b/icu4c/source/data/zone/en_VC.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VC{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_VG.txt b/icu4c/source/data/zone/en_VG.txt
index 3e84e30..1a001d0 100644
--- a/icu4c/source/data/zone/en_VG.txt
+++ b/icu4c/source/data/zone/en_VG.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VG{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_VU.txt b/icu4c/source/data/zone/en_VU.txt
index 6229365..91d6b81 100644
--- a/icu4c/source/data/zone/en_VU.txt
+++ b/icu4c/source/data/zone/en_VU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_VU{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_WS.txt b/icu4c/source/data/zone/en_WS.txt
index 5d2f739..f197bb1 100644
--- a/icu4c/source/data/zone/en_WS.txt
+++ b/icu4c/source/data/zone/en_WS.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_WS{
     %%Parent{"en_001"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/en_XA.txt b/icu4c/source/data/zone/en_XA.txt
index 23c0d68..fac7f53 100644
--- a/icu4c/source/data/zone/en_XA.txt
+++ b/icu4c/source/data/zone/en_XA.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_XA{
-    Version{"37"}
     zoneStrings{
         "Africa:Sao_Tome"{
             ec{"[Šãö Ţöɱé one two]"}
@@ -33,6 +33,9 @@
         "Antarctica:DumontDUrville"{
             ec{"[Ðûɱöñţ ð’Ûŕṽîļļé one two three]"}
         }
+        "Asia:Aqtau"{
+            ec{"[Åǫţåû one]"}
+        }
         "Asia:Qostanay"{
             ec{"[Ķöšţåñåý one two]"}
         }
diff --git a/icu4c/source/data/zone/en_ZA.txt b/icu4c/source/data/zone/en_ZA.txt
index 9e7646f..98d3301 100644
--- a/icu4c/source/data/zone/en_ZA.txt
+++ b/icu4c/source/data/zone/en_ZA.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ZA{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_ZM.txt b/icu4c/source/data/zone/en_ZM.txt
index a3e802d..5575910 100644
--- a/icu4c/source/data/zone/en_ZM.txt
+++ b/icu4c/source/data/zone/en_ZM.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ZM{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/en_ZW.txt b/icu4c/source/data/zone/en_ZW.txt
index 93f5669..0b0016e 100644
--- a/icu4c/source/data/zone/en_ZW.txt
+++ b/icu4c/source/data/zone/en_ZW.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 en_ZW{
     %%Parent{"en_001"}
-    Version{"37"}
     zoneStrings{
         "meta:Africa_Central"{
             ss{"CAT"}
diff --git a/icu4c/source/data/zone/eo.txt b/icu4c/source/data/zone/eo.txt
index b190ca7..ffc275e 100644
--- a/icu4c/source/data/zone/eo.txt
+++ b/icu4c/source/data/zone/eo.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 eo{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/es.txt b/icu4c/source/data/zone/es.txt
index 980630d..44fccc5 100644
--- a/icu4c/source/data/zone/es.txt
+++ b/icu4c/source/data/zone/es.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abiyán"}
@@ -958,7 +958,7 @@
             ls{"tiempo universal coordinado"}
         }
         "Etc:Unknown"{
-            ec{"ciudad desconocida"}
+            ec{"Ciudad desconocida"}
         }
         "Europe:Amsterdam"{
             ec{"Ámsterdam"}
@@ -1007,7 +1007,7 @@
             ec{"Gibraltar"}
         }
         "Europe:Guernsey"{
-            ec{"Guernsey"}
+            ec{"Guernesey"}
         }
         "Europe:Helsinki"{
             ec{"Helsinki"}
diff --git a/icu4c/source/data/zone/es_419.txt b/icu4c/source/data/zone/es_419.txt
index b4e95fa..1415ef2 100644
--- a/icu4c/source/data/zone/es_419.txt
+++ b/icu4c/source/data/zone/es_419.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_419{
-    Version{"37"}
     zoneStrings{
         "America:Fort_Nelson"{
             ec{"Fuerte Nelson"}
@@ -19,7 +19,10 @@
             ec{"Islas Canarias"}
         }
         "Etc:UTC"{
-            ls{"Hora Universal Coordinada"}
+            ls{"hora universal coordinada"}
+        }
+        "Etc:Unknown"{
+            ec{"ciudad desconocida"}
         }
         "Europe:Busingen"{
             ec{"Büsingen"}
@@ -27,6 +30,9 @@
         "Europe:Dublin"{
             ld{"hora estándar de Irlanda"}
         }
+        "Europe:Guernsey"{
+            ec{"Guernsey"}
+        }
         "Pacific:Wake"{
             ec{"Isla Wake"}
         }
diff --git a/icu4c/source/data/zone/es_AR.txt b/icu4c/source/data/zone/es_AR.txt
index 52775ef..ecb79bc 100644
--- a/icu4c/source/data/zone/es_AR.txt
+++ b/icu4c/source/data/zone/es_AR.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_AR{
     %%Parent{"es_419"}
-    Version{"37"}
     zoneStrings{
         "meta:Argentina"{
             sd{"ARST"}
diff --git a/icu4c/source/data/zone/es_BO.txt b/icu4c/source/data/zone/es_BO.txt
index 41fd1c9..627a10c 100644
--- a/icu4c/source/data/zone/es_BO.txt
+++ b/icu4c/source/data/zone/es_BO.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_BO{
     %%Parent{"es_419"}
-    Version{"37"}
     zoneStrings{
         "meta:Bolivia"{
             ss{"BOT"}
diff --git a/icu4c/source/data/zone/es_BR.txt b/icu4c/source/data/zone/es_BR.txt
index a8d655c..a18c09f 100644
--- a/icu4c/source/data/zone/es_BR.txt
+++ b/icu4c/source/data/zone/es_BR.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_BR{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/es_BZ.txt b/icu4c/source/data/zone/es_BZ.txt
index f703412..471108e 100644
--- a/icu4c/source/data/zone/es_BZ.txt
+++ b/icu4c/source/data/zone/es_BZ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_BZ{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/es_CL.txt b/icu4c/source/data/zone/es_CL.txt
index 419e010..41afb48 100644
--- a/icu4c/source/data/zone/es_CL.txt
+++ b/icu4c/source/data/zone/es_CL.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CL{
     %%Parent{"es_419"}
-    Version{"37"}
     zoneStrings{
         "meta:Chile"{
             sd{"CLST"}
diff --git a/icu4c/source/data/zone/es_CO.txt b/icu4c/source/data/zone/es_CO.txt
index 6bbe0f3..7e861d8 100644
--- a/icu4c/source/data/zone/es_CO.txt
+++ b/icu4c/source/data/zone/es_CO.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CO{
     %%Parent{"es_419"}
-    Version{"37"}
     zoneStrings{
         "meta:Colombia"{
             sd{"COST"}
diff --git a/icu4c/source/data/zone/es_CR.txt b/icu4c/source/data/zone/es_CR.txt
index 209ac6c..6164236 100644
--- a/icu4c/source/data/zone/es_CR.txt
+++ b/icu4c/source/data/zone/es_CR.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CR{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/es_CU.txt b/icu4c/source/data/zone/es_CU.txt
index a316a0d..1a3a70a 100644
--- a/icu4c/source/data/zone/es_CU.txt
+++ b/icu4c/source/data/zone/es_CU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_CU{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/es_DO.txt b/icu4c/source/data/zone/es_DO.txt
index f1713d4..b5f7810 100644
--- a/icu4c/source/data/zone/es_DO.txt
+++ b/icu4c/source/data/zone/es_DO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_DO{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/es_EC.txt b/icu4c/source/data/zone/es_EC.txt
index 5aa7341..77c9040 100644
--- a/icu4c/source/data/zone/es_EC.txt
+++ b/icu4c/source/data/zone/es_EC.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_EC{
     %%Parent{"es_419"}
-    Version{"37"}
     zoneStrings{
         "meta:Ecuador"{
             ss{"ECT"}
diff --git a/icu4c/source/data/zone/es_GT.txt b/icu4c/source/data/zone/es_GT.txt
index 3b1fece..76889af 100644
--- a/icu4c/source/data/zone/es_GT.txt
+++ b/icu4c/source/data/zone/es_GT.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_GT{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/es_HN.txt b/icu4c/source/data/zone/es_HN.txt
index cd727c1..4446521 100644
--- a/icu4c/source/data/zone/es_HN.txt
+++ b/icu4c/source/data/zone/es_HN.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_HN{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/es_MX.txt b/icu4c/source/data/zone/es_MX.txt
index 3f0c621..715757d 100644
--- a/icu4c/source/data/zone/es_MX.txt
+++ b/icu4c/source/data/zone/es_MX.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_MX{
     %%Parent{"es_419"}
-    Version{"37"}
     zoneStrings{
         "Africa:Bujumbura"{
             ec{"Buyumbura"}
@@ -34,9 +34,6 @@
         "Asia:Atyrau"{
             ec{"Atirau"}
         }
-        "Etc:UTC"{
-            ls{"hora universal coordinada"}
-        }
         "Pacific:Honolulu"{
             ec{"Honolulu"}
         }
@@ -85,22 +82,12 @@
         "meta:Gilbert_Islands"{
             ls{"hora de las Islas Gilbert"}
         }
-        "meta:Irkutsk"{
-            ld{"hora de verano de Irkutsh"}
-            lg{"hora de Irkutsk"}
-            ls{"hora estándar de Irkutsh"}
-        }
         "meta:Macquarie"{
             ls{"hora de la isla Macquarie"}
         }
         "meta:Marshall_Islands"{
             ls{"hora de las Islas Marshall"}
         }
-        "meta:Norfolk"{
-            ld{"hora de verano de la isla Norfolk"}
-            lg{"hora de la isla Norfolk"}
-            ls{"hora estándar de la isla Norfolk"}
-        }
         "meta:Pyongyang"{
             ls{"hora de Pyongyang"}
         }
diff --git a/icu4c/source/data/zone/es_NI.txt b/icu4c/source/data/zone/es_NI.txt
index e711c11..a58e4ec 100644
--- a/icu4c/source/data/zone/es_NI.txt
+++ b/icu4c/source/data/zone/es_NI.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_NI{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/es_PA.txt b/icu4c/source/data/zone/es_PA.txt
index aa48114..248e100 100644
--- a/icu4c/source/data/zone/es_PA.txt
+++ b/icu4c/source/data/zone/es_PA.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PA{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/es_PE.txt b/icu4c/source/data/zone/es_PE.txt
index 5e74bb5..76fa3c1 100644
--- a/icu4c/source/data/zone/es_PE.txt
+++ b/icu4c/source/data/zone/es_PE.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PE{
     %%Parent{"es_419"}
-    Version{"37"}
     zoneStrings{
         "meta:Peru"{
             sd{"PEST"}
diff --git a/icu4c/source/data/zone/es_PR.txt b/icu4c/source/data/zone/es_PR.txt
index d5753df..b7a1b11 100644
--- a/icu4c/source/data/zone/es_PR.txt
+++ b/icu4c/source/data/zone/es_PR.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PR{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/es_PY.txt b/icu4c/source/data/zone/es_PY.txt
index 69d0042..5305115 100644
--- a/icu4c/source/data/zone/es_PY.txt
+++ b/icu4c/source/data/zone/es_PY.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_PY{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/es_SV.txt b/icu4c/source/data/zone/es_SV.txt
index 426c56d..b4ed595 100644
--- a/icu4c/source/data/zone/es_SV.txt
+++ b/icu4c/source/data/zone/es_SV.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_SV{
     %%Parent{"es_419"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/es_US.txt b/icu4c/source/data/zone/es_US.txt
index 6134963..a446ed1 100644
--- a/icu4c/source/data/zone/es_US.txt
+++ b/icu4c/source/data/zone/es_US.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_US{
     %%Parent{"es_419"}
-    Version{"37"}
     zoneStrings{
         "America:Fort_Nelson"{
             ec{"Fort Nelson"}
@@ -10,24 +10,12 @@
         "America:Nassau"{
             ec{"Nassau"}
         }
-        "America:Rio_Branco"{
-            ec{"Rio Branco"}
-        }
         "America:St_Thomas"{
             ec{"St. Thomas"}
         }
-        "Asia:Almaty"{
-            ec{"Almatý"}
-        }
-        "Asia:Barnaul"{
-            ec{"Barnaul"}
-        }
         "Asia:Pyongyang"{
             ec{"Piongyang"}
         }
-        "Etc:UTC"{
-            ls{"hora universal coordinada"}
-        }
         "Europe:Astrakhan"{
             ec{"Astrakhan"}
         }
@@ -87,9 +75,6 @@
         "meta:Chamorro"{
             ls{"hora de Chamorro"}
         }
-        "meta:Christmas"{
-            ls{"hora de la isla de Navidad"}
-        }
         "meta:Cocos"{
             ls{"hora de las Islas Cocos"}
         }
@@ -132,11 +117,6 @@
         "meta:Indian_Ocean"{
             ls{"hora del Océano Índico"}
         }
-        "meta:Irkutsk"{
-            ld{"hora de verano de Irkutsh"}
-            lg{"hora de Irkutsk"}
-            ls{"hora estándar de Irkutsh"}
-        }
         "meta:Macquarie"{
             ls{"hora de la isla Macquarie"}
         }
diff --git a/icu4c/source/data/zone/es_UY.txt b/icu4c/source/data/zone/es_UY.txt
index ba7a664..535b375 100644
--- a/icu4c/source/data/zone/es_UY.txt
+++ b/icu4c/source/data/zone/es_UY.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_UY{
     %%Parent{"es_419"}
-    Version{"37"}
     zoneStrings{
         "meta:Uruguay"{
             sd{"UYST"}
diff --git a/icu4c/source/data/zone/es_VE.txt b/icu4c/source/data/zone/es_VE.txt
index 738c1d6..a1553f8 100644
--- a/icu4c/source/data/zone/es_VE.txt
+++ b/icu4c/source/data/zone/es_VE.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 es_VE{
     %%Parent{"es_419"}
-    Version{"37"}
     zoneStrings{
         "meta:Venezuela"{
             ss{"VET"}
diff --git a/icu4c/source/data/zone/et.txt b/icu4c/source/data/zone/et.txt
index b49e965..c7c0411 100644
--- a/icu4c/source/data/zone/et.txt
+++ b/icu4c/source/data/zone/et.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 et{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -1754,9 +1754,9 @@
             ls{"Niue aeg"}
         }
         "meta:Norfolk"{
-            ld{"Norfolki saarte suveaeg"}
-            lg{"Norfolki saarte aeg"}
-            ls{"Norfolki saarte standardaeg"}
+            ld{"Norfolki saare suveaeg"}
+            lg{"Norfolki saare aeg"}
+            ls{"Norfolki saare standardaeg"}
         }
         "meta:Noronha"{
             ld{"Fernando de Noronha suveaeg"}
diff --git a/icu4c/source/data/zone/eu.txt b/icu4c/source/data/zone/eu.txt
index 0a962de..e224440 100644
--- a/icu4c/source/data/zone/eu.txt
+++ b/icu4c/source/data/zone/eu.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 eu{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -768,6 +768,9 @@
         "Asia:Kuwait"{
             ec{"Kuwait"}
         }
+        "Asia:Macau"{
+            ec{"Macau"}
+        }
         "Asia:Magadan"{
             ec{"Magadan"}
         }
@@ -1729,7 +1732,7 @@
         "meta:Norfolk"{
             ld{"Norfolk uharteetako udako ordua"}
             lg{"Norfolk uharteetako ordua"}
-            ls{"Norfolk uharteetako ordua estandarra"}
+            ls{"Norfolk uharteetako ordu estandarra"}
         }
         "meta:Noronha"{
             ld{"Fernando de Noronhako udako ordua"}
diff --git a/icu4c/source/data/zone/ewo.txt b/icu4c/source/data/zone/ewo.txt
index 9fd55df..c522c94 100644
--- a/icu4c/source/data/zone/ewo.txt
+++ b/icu4c/source/data/zone/ewo.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ewo{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/fa.txt b/icu4c/source/data/zone/fa.txt
index d90bf5c..d97de9d 100644
--- a/icu4c/source/data/zone/fa.txt
+++ b/icu4c/source/data/zone/fa.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fa{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"آبیجان"}
diff --git a/icu4c/source/data/zone/ff.txt b/icu4c/source/data/zone/ff.txt
index b51bbce..91de862 100644
--- a/icu4c/source/data/zone/ff.txt
+++ b/icu4c/source/data/zone/ff.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/ff_Adlm.txt b/icu4c/source/data/zone/ff_Adlm.txt
index 846ffc4..06690f8 100644
--- a/icu4c/source/data/zone/ff_Adlm.txt
+++ b/icu4c/source/data/zone/ff_Adlm.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Adlm{
     %%Parent{"root"}
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"𞤀𞤦𞤭𞤶𞤢𞤲"}
@@ -164,7 +164,7 @@
             ec{"𞤀𞤣𞤢𞤳"}
         }
         "America:Anchorage"{
-            ec{"𞤀𞤲𞤳𞤮𞤪𞤢𞥄𞤶"}
+            ec{"𞤀𞤲𞤧𞤮𞤪𞤢𞥄𞤶𞤵"}
         }
         "America:Anguilla"{
             ec{"𞤀𞤲𞤺𞤭𞤤𞤢𞥄"}
@@ -197,7 +197,7 @@
             ec{"𞤓𞤧𞤱𞤢𞤭𞥅𞤶"}
         }
         "America:Aruba"{
-            ec{"𞤀𞤪𞤵𞤦𞤢"}
+            ec{"𞤀𞤪𞤵𞥅𞤦𞤢"}
         }
         "America:Asuncion"{
             ec{"𞤀𞤧𞤵𞤲𞤧𞤭𞤴𞤮𞤲"}
@@ -206,19 +206,19 @@
             ec{"𞤄𞤢𞤸𞤭𞤴𞤢"}
         }
         "America:Bahia_Banderas"{
-            ec{"𞤄𞤢𞤸𞤭𞤴𞤢𞥄 𞤣𞤫 𞤄𞤢𞤲𞤣𞤫𞤪𞤢𞥄𞤧"}
+            ec{"𞤄𞤢𞤸𞤭𞤴𞤢𞥄 𞤄𞤢𞤲𞤣𞤫𞤪𞤢𞥄𞤧"}
         }
         "America:Barbados"{
-            ec{"𞤄𞤢𞤪𞤦𞤫𞤣𞤮𞥅𞤧"}
+            ec{"𞤄𞤢𞤪𞤦𞤢𞥄𞤣𞤮𞤧"}
         }
         "America:Belem"{
             ec{"𞤄𞤫𞤤𞤫𞤥"}
         }
         "America:Belize"{
-            ec{"𞤄𞤫𞤤𞤭𞥅𞤶"}
+            ec{"𞤄𞤫𞤤𞤭𞥅𞥁"}
         }
         "America:Blanc-Sablon"{
-            ec{"𞤄𞤢𞤤𞤢𞤲𞤳-𞤅𞤢𞤦𞤢𞤤𞤮𞤲"}
+            ec{"𞤄𞤵𞤤𞤢𞤲 𞤅𞤢𞤦𞤵𞤤𞤮𞤲"}
         }
         "America:Boa_Vista"{
             ec{"𞤄𞤮𞤱𞤢-𞤜𞤭𞤧𞤼𞤢"}
@@ -227,13 +227,13 @@
             ec{"𞤄𞤮𞤺𞤮𞤼𞤢"}
         }
         "America:Boise"{
-            ec{"𞤄𞤮𞤴𞤶𞤭𞥅"}
+            ec{"𞤄𞤮𞤴𞥁𞤭𞥅"}
         }
         "America:Buenos_Aires"{
             ec{"𞤄𞤭𞤴𞤲𞤮𞤧-𞤉𞥅𞤶𞤫𞤪𞤫𞥅𞤧"}
         }
         "America:Cambridge_Bay"{
-            ec{"𞤑𞤢𞤥𞤦𞤭𞤪𞤭𞥅𞤶-𞤄𞤫𞥅"}
+            ec{"𞤑𞤢𞤥𞤦𞤭𞤪𞤭𞥅𞤶 𞤄𞤫𞥅"}
         }
         "America:Campo_Grande"{
             ec{"𞤑𞤢𞤥𞤨𞤮-𞤘𞤪𞤢𞤲𞤣𞤫"}
@@ -251,22 +251,22 @@
             ec{"𞤑𞤢𞤴𞤫𞥅𞤲"}
         }
         "America:Cayman"{
-            ec{"𞤑𞤫𞤴𞤥𞤢𞥄𞤲"}
+            ec{"𞤑𞤢𞤴𞤥𞤢𞥄𞤲"}
         }
         "America:Chicago"{
             ec{"𞤕𞤭𞤳𞤢𞥄𞤺𞤮𞥅"}
         }
         "America:Chihuahua"{
-            ec{"𞤕𞤭𞤱𞤢𞥄𞤱𞤢"}
+            ec{"𞤕𞤋𞤱𞤢𞥄𞤱𞤢𞥄"}
         }
         "America:Coral_Harbour"{
-            ec{"𞤀𞤼𞤭𞤳𞤮𞤳𞤢𞤲"}
+            ec{"𞤀𞤼𞤭𞤳𞤮𞥅𞤳𞤢𞤲"}
         }
         "America:Cordoba"{
             ec{"𞤑𞤮𞤪𞤣𞤮𞤦𞤢𞥄"}
         }
         "America:Costa_Rica"{
-            ec{"𞤑𞤮𞤧𞤼𞤢-𞤈𞤭𞤳𞥆𞤢𞥄"}
+            ec{"𞤑𞤮𞤧𞤼𞤢 𞤈𞤭𞤳𞤢𞥄"}
         }
         "America:Creston"{
             ec{"𞤑𞤪𞤫𞤧𞤼𞤮𞤲"}
@@ -275,7 +275,7 @@
             ec{"𞤑𞤵𞤶𞤢𞤦𞤢𞥄"}
         }
         "America:Curacao"{
-            ec{"𞤑𞤵𞤪𞤢𞤧𞤢𞥄𞤱"}
+            ec{"𞤑𞤵𞤪𞤢𞤧𞤢𞤱𞤮𞥅"}
         }
         "America:Danmarkshavn"{
             ec{"𞤁𞤢𞥄𞤲𞤥𞤢𞤪𞤳𞥃𞤢𞥄𞤾𞤲"}
@@ -704,7 +704,7 @@
             ec{"𞤁𞤢𞤳𞤢𞥄"}
         }
         "Asia:Dili"{
-            ec{"𞤁𞤫𞤤𞤭"}
+            ec{"𞤁𞤫𞤤𞤭𞥅"}
         }
         "Asia:Dubai"{
             ec{"𞤁𞤵𞤦𞤢𞤴"}
@@ -722,7 +722,7 @@
             ec{"𞤝𞤭𞤤𞤢𞥄𞤤𞤵"}
         }
         "Asia:Hong_Kong"{
-            ec{"𞤖𞤮𞤲𞤳𞤮𞤲"}
+            ec{"𞤖𞤮𞤲𞤺 𞤑𞤮𞤲𞤺"}
         }
         "Asia:Hovd"{
             ec{"𞤖𞤮𞤬𞤣𞤵"}
@@ -890,7 +890,7 @@
             ec{"𞤀𞥁𞤮𞤪𞤫𞥅𞤧"}
         }
         "Atlantic:Bermuda"{
-            ec{"𞤄𞤢𞥄𞤪𞤥𞤵𞥅𞤣𞤢"}
+            ec{"𞤄𞤢𞤪𞤥𞤵𞥅𞤣𞤢"}
         }
         "Atlantic:Canary"{
             ec{"𞤑𞤢𞤲𞤢𞤪𞤭"}
@@ -950,10 +950,10 @@
             ec{"𞤆𞤫𞤪𞤧𞤭"}
         }
         "Australia:Sydney"{
-            ec{"𞤅𞤭𞤣𞤭𞤲𞤫𞥅"}
+            ec{"𞤅𞤭𞤣𞤲𞤫𞥅"}
         }
         "Etc:UTC"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤏𞤭𞤲𞤣𞤫𞤪𞤫𞤴𞤢𞤲𞤳𞤮𞥅𞤪𞤫 𞤊𞤮𞤼𞥆𞤢𞤲𞤢𞥄𞤲𞤣𞤫"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤭𞤤𞥆𞤢𞤲𞤳𞤮𞥅𞤪𞤫 𞤊𞤮𞤲𞤣𞤢𞥄𞤲𞤣𞤫"}
         }
         "Etc:Unknown"{
             ec{"𞤅𞤢𞤸𞤪𞤫 𞤀𞤧-𞤢𞤲𞤣𞤢𞥄𞤲𞤣𞤫"}
@@ -999,7 +999,7 @@
         }
         "Europe:Dublin"{
             ec{"𞤁𞤵𞤦𞤵𞤤𞤫𞤲"}
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤋𞤪𞤤𞤢𞤲𞤣𞤭𞥅𞤳𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤋𞤪𞤤𞤢𞤲𞤣𞤭𞤲𞤳𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫"}
         }
         "Europe:Gibraltar"{
             ec{"𞤔𞤭𞤦𞤢𞤪𞤢𞤤𞤼𞤢𞤪"}
@@ -1174,7 +1174,7 @@
             ec{"𞤈𞤫𞥅𞤲𞤭𞤴𞤮𞤲"}
         }
         "Pacific:Apia"{
-            ec{"𞤀𞤨𞤭𞤴𞤢"}
+            ec{"𞤀𞥄𞤨𞤭𞤴𞤢"}
         }
         "Pacific:Auckland"{
             ec{"𞤌𞤳𞤤𞤢𞤲𞤣𞤭"}
@@ -1198,10 +1198,10 @@
             ec{"𞤊𞤢𞤳𞤢𞤱𞤬𞤮"}
         }
         "Pacific:Fiji"{
-            ec{"𞤊𞤭𞤶𞤭"}
+            ec{"𞤊𞤭𞤶𞤭𞥅"}
         }
         "Pacific:Funafuti"{
-            ec{"𞤊𞤵𞤲𞤢𞤬𞤵𞤼𞤭"}
+            ec{"𞤊𞤵𞤲𞤢𞤬𞤵𞤼𞤭𞥅"}
         }
         "Pacific:Galapagos"{
             ec{"𞤘𞤢𞤤𞤢𞤨𞤢𞤺𞤮𞤧"}
@@ -1213,34 +1213,34 @@
             ec{"𞤘𞤵𞤱𞤢𞤣𞤢𞤤𞤳𞤢𞤲𞤢𞤤"}
         }
         "Pacific:Guam"{
-            ec{"𞤘𞤵𞤱𞤢𞤥"}
+            ec{"𞤘𞤵𞤱𞤢𞥄𞤥"}
         }
         "Pacific:Johnston"{
-            ec{"𞤔𞤮𞤲𞤧𞤵𞤼𞤮𞤲"}
+            ec{"𞤔𞤮𞤲𞤧𞤼𞤮𞤲"}
         }
         "Pacific:Kiritimati"{
             ec{"𞤑𞤭𞤪𞤭𞤼𞤭𞤥𞤢𞤼𞤭"}
         }
         "Pacific:Kosrae"{
-            ec{"𞤑𞤮𞤧𞤪𞤢𞤴"}
+            ec{"𞤑𞤮𞤧𞤪𞤫𞤴"}
         }
         "Pacific:Kwajalein"{
             ec{"𞤑𞤢𞤱𞤢𞤶𞤢𞤤𞤭𞥅𞤲"}
         }
         "Pacific:Majuro"{
-            ec{"𞤃𞤢𞤶𞤵𞥅𞤪𞤮"}
+            ec{"𞤃𞤢𞤶𞤵𞤪𞤮𞥅"}
         }
         "Pacific:Marquesas"{
-            ec{"𞤃𞤢𞤪𞤳𞤫𞤧𞤢𞤧"}
+            ec{"𞤃𞤢𞤪𞤳𞤫𞤧𞤢𞥄𞤧"}
         }
         "Pacific:Midway"{
             ec{"𞤃𞤭𞤣𞤱𞤫𞥅"}
         }
         "Pacific:Nauru"{
-            ec{"𞤐𞤵𞥅𞤪𞤵"}
+            ec{"𞤐𞤢𞤱𞤪𞤵"}
         }
         "Pacific:Niue"{
-            ec{"𞤐𞤭𞥅𞤴𞤵"}
+            ec{"𞤐𞤵𞥅𞤱𞤭"}
         }
         "Pacific:Norfolk"{
             ec{"𞤐𞤮𞤪𞤬𞤮𞤤𞤳𞤵"}
@@ -1252,13 +1252,13 @@
             ec{"𞤆𞤢𞤺𞤮-𞤆𞤢𞤺𞤮"}
         }
         "Pacific:Palau"{
-            ec{"𞤆𞤮𞤤𞤢𞥄𞤱𞤮"}
+            ec{"𞤆𞤢𞤤𞤢𞤱"}
         }
         "Pacific:Pitcairn"{
-            ec{"𞤆𞤭𞤼𞤭𞤳𞤫𞤪𞤲𞤵"}
+            ec{"𞤆𞤭𞤼𞤳𞤭𞥅𞤪𞤲𞤵"}
         }
         "Pacific:Ponape"{
-            ec{"𞤆𞤮𞤲𞤢𞤨𞤫"}
+            ec{"𞤆𞤮𞤥𞤨𞤫𞥅"}
         }
         "Pacific:Port_Moresby"{
             ec{"𞤆𞤮𞤪𞤼𞤵-𞤃𞤮𞤪𞤫𞤧𞤦𞤭"}
@@ -1267,16 +1267,16 @@
             ec{"𞤈𞤢𞤪𞤮𞤼𞤮𞤲𞤺𞤢"}
         }
         "Pacific:Saipan"{
-            ec{"𞤅𞤢𞤴𞤨𞤢𞤲"}
+            ec{"𞤅𞤢𞤴𞤨𞤢𞥄𞤲"}
         }
         "Pacific:Tahiti"{
-            ec{"𞤚𞤢𞤸𞤭𞤼𞤭"}
+            ec{"𞤚𞤢𞤸𞤭𞤼𞤭𞥅"}
         }
         "Pacific:Tarawa"{
-            ec{"𞤚𞤢𞤪𞤢𞤱𞤢"}
+            ec{"𞤚𞤫𞥅𞤪𞤢𞤱𞤢"}
         }
         "Pacific:Tongatapu"{
-            ec{"𞤚𞤮𞤲𞤺𞤢𞤼𞤢𞤨𞤵"}
+            ec{"𞤚𞤮𞤲𞤺𞤢𞤼𞤢𞥄𞤨𞤵"}
         }
         "Pacific:Truk"{
             ec{"𞤕𞤵𞥅𞤳𞤵"}
@@ -1285,32 +1285,32 @@
             ec{"𞤏𞤫𞥅𞤳𞤵"}
         }
         "Pacific:Wallis"{
-            ec{"𞤏𞤢𞤤𞤭𞥅𞤧"}
+            ec{"𞤏𞤢𞤤𞥆𞤭𞥅𞤧"}
         }
         "meta:Afghanistan"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤀𞤬𞤺𞤢𞤲𞤭𞤧𞤼𞤢𞥄𞤲"}
         }
         "meta:Africa_Central"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤀𞤬𞤪𞤭𞤳𞤭 𞤚𞤵𞤥𞤦𞤮𞥅𞤪𞤭"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤵𞤥𞤦𞤮𞥅𞤪𞤭 𞤀𞤬𞤪𞤭𞤳𞤢𞥄"}
         }
         "meta:Africa_Eastern"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞥋𞤣𞤫 𞤀𞤬𞤪𞤭𞤳𞤭"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞤺𞤫 𞤀𞤬𞤪𞤭𞤳𞤢𞥄"}
         }
         "meta:Africa_Southern"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤂𞤫𞤧𞤮-𞤀𞤬𞤪𞤭𞤳𞤭"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫 𞤀𞤬𞤪𞤭𞤳𞤢𞥄"}
         }
         "meta:Africa_Western"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤀𞤬𞤪𞤭𞤳𞤭"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤀𞤬𞤪𞤭𞤳𞤭"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫 𞤀𞤬𞤪𞤭𞤳𞤢𞥄"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫 𞤀𞤬𞤪𞤭𞤳𞤢𞥄"}
             ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞥋𞤺𞤫 "
-                "𞤀𞤬𞤪𞤭𞤳𞤭"
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫 "
+                "𞤀𞤬𞤪𞤭𞤳𞤢𞥄"
             }
         }
         "meta:Alaska"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤀𞤤𞤢𞤧𞤳𞤢𞥄"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤀𞤤𞤢𞤧𞤳𞤢𞥄 𞤲𞤣𞤫𞤲"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤀𞤤𞤢𞤧𞤳𞤢𞥄"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤀𞤤𞤢𞤧𞤳𞤢𞥄"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤀𞤤𞤢𞤧𞤳𞤢𞥄 𞤲𞤣𞤫𞤲"}
         }
         "meta:Amazon"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤀𞤥𞤢𞥁𞤮𞥅𞤲"}
@@ -1318,43 +1318,61 @@
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤀𞤥𞤢𞥁𞤮𞥅𞤲"}
         }
         "meta:America_Central"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤳𞤢 𞤚𞤵𞤥𞤦𞤮"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤳𞤢 𞤚𞤵𞤥𞤦𞤮 𞤈𞤫𞤱𞤮-𞤀𞤥𞤫𞤪𞤭𞤳"}
+            ld{
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤚𞤵𞤥𞤦𞤮 𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫 "
+                "𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄"
+            }
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤵𞤥𞤦𞤮 𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫 𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄"}
             ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤳𞤢 𞤚𞤵𞤥𞤦𞤮 𞤈𞤫𞤱𞤮-"
-                "𞤀𞤥𞤫𞤪𞤭𞤳"
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤚𞤵𞤥𞤦𞤮 𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫 "
+                "𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄"
             }
         }
         "meta:America_Eastern"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤳𞤢 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞥋𞤺𞤫"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤁𞤮𞤱𞤪𞤭-𞤀𞤥𞤫𞤪𞤭𞤳"}
+            ld{
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 "
+                "𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫 𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄"
+            }
+            lg{
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫 "
+                "𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄"
+            }
             ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞥋𞤺𞤫 "
-                "𞤁𞤮𞤱𞤪𞤭-𞤀𞤥𞤫𞤪𞤭𞤳"
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 "
+                "𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫 𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄"
             }
         }
         "meta:America_Mountain"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤆𞤫𞤤𞤫 𞤯𞤫𞤲"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤆𞤫𞤤𞤫 𞤯𞤫𞤲"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤆𞤫𞤤𞤫 𞤯𞤫𞤲"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫 𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄"}
+            lg{
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤆𞤫𞤤𞥆𞤭𞤲𞤳𞤮𞥅𞤪𞤫 𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫 "
+                "𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄"
+            }
+            ls{
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤆𞤫𞤤𞥆𞤭𞤲𞤳𞤮𞥅𞤪𞤫 "
+                "𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫 𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄"
+            }
         }
         "meta:America_Pacific"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤆𞤢𞥄𞤧𞤫𞤬𞤭𞤳 𞤁𞤮𞤱𞤪𞤭-𞤀𞤥𞤫𞤪𞤭𞤳"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤆𞤢𞥄𞤧𞤫𞤬𞤭𞤳 𞤁𞤮𞤱𞤪𞤭-𞤀𞤥𞤫𞤪𞤭𞤳"}
+            ld{
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤁𞤫𞤰𞥆𞤮 𞤕𞤫𞥅𞤯𞤵 𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫 "
+                "𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄"
+            }
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤁𞤫𞤰𞥆𞤮 𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫 𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄"}
             ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤆𞤢𞥄𞤧𞤫𞤬𞤭𞤳 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤁𞤮𞤱𞤪𞤭-"
-                "𞤀𞤥𞤫𞤪𞤭𞤳"
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤁𞤫𞤰𞥆𞤮 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫 "
+                "𞤀𞤥𞤫𞤪𞤭𞤳𞤢𞥄"
             }
         }
         "meta:Apia"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤀𞤨𞤭𞤴𞤢"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤀𞤨𞤭𞤴𞤢"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤀𞤨𞤭𞤴𞤢"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤀𞥄𞤨𞤭𞤴𞤢"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤀𞥄𞤨𞤭𞤴𞤢"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤀𞥄𞤨𞤭𞤴𞤢"}
         }
         "meta:Arabian"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤀𞥄𞤪𞤢𞤦𞤭𞤴𞤢"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤀𞥄𞤪𞤢𞤦𞤭𞤴𞤢"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤀𞥄𞤪𞤢𞤦𞤭𞤴𞤢"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤀𞥄𞤪𞤢𞤦𞤭𞤴𞤢"}
         }
         "meta:Argentina"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤀𞤪𞤶𞤢𞤲𞤼𞤭𞤲𞤢𞥄"}
@@ -1375,68 +1393,71 @@
         "meta:Armenia"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤀𞤪𞤥𞤫𞤲𞤭𞤴𞤢𞥄"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤀𞤪𞤥𞤫𞤲𞤭𞤴𞤢𞥄"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤀𞤪𞤥𞤫𞤲𞤭𞤴𞤢𞥄"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤀𞤪𞤥𞤫𞤲𞤭𞤴𞤢𞥄"}
         }
         "meta:Atlantic"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤳𞤢 𞤆𞤢𞥄𞤧𞤫𞤬𞤭𞤳"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤳𞤢 𞤆𞤢𞥄𞤧𞤫𞤬𞤭𞤳 𞤁𞤮𞤱𞤪𞤭-𞤀𞤥𞤫𞤪𞤭𞤳"}
-            ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤳𞤢 𞤆𞤢𞥄𞤧𞤫𞤬𞤭𞤳 "
-                "𞤁𞤮𞤱𞤪𞤭-𞤀𞤥𞤫𞤪𞤭𞤳"
-            }
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤚𞤫𞤳𞤵"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤫𞤳𞤵"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤫𞤳𞤵 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫"}
         }
         "meta:Australia_Central"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤚𞤵𞤥𞤦𞤮𞥅𞤪𞤭 𞤌𞤧𞤼𞤪𞤢𞤤𞤭𞤴𞤢𞥄"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤵𞤥𞤦𞤮𞥅𞤪𞤭 𞤌𞤧𞤼𞤪𞤢𞤤𞤭𞤴𞤢𞥄"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤚𞤵𞤥𞤦𞤮𞥅𞤪𞤭 𞤌𞤧𞤼𞤢𞤪𞤤𞤭𞤴𞤢𞥄"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤵𞤥𞤦𞤮𞥅𞤪𞤭 𞤌𞤧𞤼𞤢𞤪𞤤𞤭𞤴𞤢𞥄"}
             ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤚𞤵𞤥𞤦𞤮𞥅𞤪𞤭 "
-                "𞤌𞤧𞤼𞤪𞤢𞤤𞤭𞤴𞤢𞥄"
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤚𞤵𞤥𞤦𞤮𞥅𞤪𞤭 "
+                "𞤌𞤧𞤼𞤢𞤪𞤤𞤭𞤴𞤢𞥄"
             }
         }
         "meta:Australia_CentralWestern"{
             ld{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤚𞤵𞤥𞤦𞤮 𞤖𞤭𞥅𞤲𞤢𞥄𞤲𞥋𞤺𞤫 "
-                "𞤌𞤧𞤼𞤪𞤢𞤤𞤭𞤴𞤢𞥄"
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤚𞤵𞤥𞤦𞤮 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 "
+                "𞤌𞤧𞤼𞤢𞤪𞤤𞤭𞤴𞤢𞥄"
             }
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤵𞤥𞤦𞤮 𞤖𞤭𞥅𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤌𞤧𞤼𞤪𞤢𞤤𞤭𞤴𞤢𞥄"}
+            lg{
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤵𞤥𞤦𞤮 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 "
+                "𞤌𞤧𞤼𞤢𞤪𞤤𞤭𞤴𞤢𞥄"
+            }
             ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤚𞤵𞤥𞤦𞤮 "
-                "𞤖𞤭𞥅𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤌𞤧𞤼𞤪𞤢𞤤𞤭𞤴𞤢𞥄"
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤚𞤵𞤥𞤦𞤮 "
+                "𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 𞤌𞤧𞤼𞤢𞤪𞤤𞤭𞤴𞤢𞥄"
             }
         }
         "meta:Australia_Eastern"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤌𞤧𞤼𞤪𞤢𞤤𞤭𞤴𞤢𞥄"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤌𞤧𞤼𞤪𞤢𞤤𞤭𞤴𞤢𞥄"}
+            ld{
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 "
+                "𞤌𞤧𞤼𞤢𞤪𞤤𞤭𞤴𞤢𞥄"
+            }
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 𞤌𞤧𞤼𞤢𞤪𞤤𞤭𞤴𞤢𞥄"}
             ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞥋𞤺𞤫 "
-                "𞤌𞤧𞤼𞤪𞤢𞤤𞤭𞤴𞤢𞥄"
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 "
+                "𞤌𞤧𞤼𞤢𞤪𞤤𞤭𞤴𞤢𞥄"
             }
         }
         "meta:Australia_Western"{
             ld{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞥋𞤺𞤫 "
-                "𞤌𞤧𞤼𞤪𞤢𞤤𞤭𞤴𞤢𞥄"
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 "
+                "𞤌𞤧𞤼𞤢𞤪𞤤𞤭𞤴𞤢𞥄"
             }
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤌𞤧𞤼𞤪𞤢𞤤𞤭𞤴𞤢𞥄"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 𞤌𞤧𞤼𞤢𞤪𞤤𞤭𞤴𞤢𞥄"}
             ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞥋𞤺𞤫 "
-                "𞤌𞤧𞤼𞤪𞤢𞤤𞤭𞤴𞤢𞥄"
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫𞥅𞤪𞤭 "
+                "𞤌𞤧𞤼𞤢𞤪𞤤𞤭𞤴𞤢𞥄"
             }
         }
         "meta:Azerbaijan"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤀𞤶𞤫𞤪𞤦𞤢𞤴𞤶𞤢𞤲"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤀𞤶𞤫𞤪𞤦𞤢𞤴𞤶𞤢𞤲"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤀𞤶𞤫𞤪𞤦𞤢𞤴𞤶𞤢𞤲"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤀𞤶𞤫𞤪𞤦𞤢𞤴𞤶𞤢𞤲"}
         }
         "meta:Azores"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤀𞥁𞤮𞤪𞤫𞤧"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤀𞥁𞤮𞤪𞤫𞤧"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤀𞥁𞤮𞤪𞤫𞤧"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤀𞥁𞤮𞤪𞤫𞤧"}
         }
         "meta:Bangladesh"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤄𞤢𞤲𞤺𞤭𞤤𞤢𞤣𞤫𞥅𞤧"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤄𞤢𞤲𞤺𞤭𞤤𞤢𞤣𞤫𞥅𞤧"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤄𞤢𞤲𞤺𞤭𞤤𞤢𞤣𞤫𞥅𞤧"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤄𞤢𞤲𞤺𞤭𞤤𞤢𞤣𞤫𞥅𞤧"}
         }
         "meta:Bhutan"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤄𞤵𞤼𞤢𞥄𞤲"}
@@ -1455,15 +1476,15 @@
         "meta:Cape_Verde"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤑𞤢𞥄𞤦𞤮-𞤜𞤫𞤪𞤣𞤫"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤑𞤢𞥄𞤦𞤮-𞤜𞤫𞤪𞤣𞤫"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤑𞤢𞥄𞤦𞤮-𞤜𞤫𞤪𞤣𞤫"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤑𞤢𞥄𞤦𞤮 𞤜𞤫𞤪𞤣𞤫"}
         }
         "meta:Chamorro"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤕𞤢𞤥𞤮𞤪𞤮"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤕𞤮𞤥𞤮𞥅𞤪𞤮"}
         }
         "meta:Chatham"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤕𞤢𞤼𞤢𞤥"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤢𞤼𞤢𞤥"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤕𞤢𞤼𞤢𞤥"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤕𞤢𞥄𞤼𞤢𞤥"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤢𞤼𞤢𞥄𞤥"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤕𞤢𞤼𞤢𞥄𞤥"}
         }
         "meta:Chile"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤕𞤭𞤤𞤫𞥅"}
@@ -1473,7 +1494,7 @@
         "meta:China"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤕𞤢𞤴𞤲𞤢"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤢𞤴𞤲𞤢"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤕𞤢𞤴𞤲𞤢"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤕𞤢𞤴𞤲𞤢"}
         }
         "meta:Choibalsan"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤅𞤮𞤴𞤦𞤢𞤤𞤧𞤢𞤲"}
@@ -1492,14 +1513,14 @@
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤑𞤮𞤤𞤮𞤥𞤦𞤭𞤴𞤢𞥄"}
         }
         "meta:Cook"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤊𞤫𞤷𞥆𞤫𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤅𞤮𞤪𞤭𞥅𞤶𞤫 𞤑𞤵𞥅𞤳"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤅𞤮𞤪𞤭𞥅𞤶𞤫 𞤑𞤵𞥅𞤳"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤅𞤮𞤪𞤭𞥅𞤶𞤫 𞤑𞤵𞥅𞤳"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤆𞤫𞤷𞥆𞤵 𞤕𞤫𞥅𞤯𞤵 𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤑𞤵𞥅𞤳"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤑𞤵𞥅𞤳"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤑𞤵𞥅𞤳"}
         }
         "meta:Cuba"{
-            ld{"𞤑𞤫𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤑𞤵𞤦𞤢𞥄"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤑𞤵𞤦𞤢𞥄"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤑𞤵𞤦𞤢𞥄"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤑𞤵𞥅𞤦𞤢𞥄"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤑𞤵𞥅𞤦𞤢𞥄"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤑𞤵𞥅𞤦𞤢𞥄"}
         }
         "meta:Davis"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤁𞤫𞥅𞤾𞤭𞤧"}
@@ -1521,15 +1542,12 @@
         "meta:Europe_Central"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤚𞤵𞤥𞤦𞤮𞥅𞤪𞤭 𞤀𞤪𞤮𞥅𞤦𞤢"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤵𞤥𞤦𞤮𞥅𞤪𞤭 𞤀𞤪𞤮𞥅𞤦𞤢"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤚𞤵𞤥𞤦𞤮𞥅𞤪𞤭 𞤀𞤪𞤮𞥅𞤦𞤢"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤚𞤵𞤥𞤦𞤮𞥅𞤪𞤭 𞤀𞤪𞤮𞥅𞤦𞤢"}
         }
         "meta:Europe_Eastern"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤀𞤪𞤮𞥅𞤦𞤢"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤀𞤪𞤮𞥅𞤦𞤢"}
-            ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞥋𞤺𞤫 "
-                "𞤀𞤪𞤮𞥅𞤦𞤢"
-            }
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤀𞤪𞤮𞥅𞤦𞤢"}
         }
         "meta:Europe_Further_Eastern"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞥋𞤺𞤫𞥅𞤪𞤭 𞤀𞤪𞤮𞥅𞤦𞤢"}
@@ -1538,7 +1556,7 @@
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤀𞤪𞤮𞥅𞤦𞤢"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤀𞤪𞤮𞥅𞤦𞤢"}
             ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞥋𞤺𞤫 "
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞥋𞤺𞤫 "
                 "𞤀𞤪𞤮𞥅𞤦𞤢"
             }
         }
@@ -1548,9 +1566,9 @@
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤊𞤮𞤤𞤳𞤤𞤢𞤲𞤣-𞤀𞤴𞤤𞤢𞤲𞤣"}
         }
         "meta:Fiji"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤊𞤭𞤶𞤭"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤊𞤭𞤶𞤭"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤊𞤭𞤶𞤭"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤊𞤭𞤶𞤭𞥅"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤊𞤭𞤶𞤭𞥅"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤊𞤭𞤶𞤭𞥅"}
         }
         "meta:French_Guiana"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤘𞤢𞤴𞤢𞤲𞤢𞥄-𞤊𞤪𞤢𞤲𞤧𞤭"}
@@ -1570,62 +1588,53 @@
         "meta:Georgia"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤔𞤮𞤪𞤶𞤭𞤴𞤢"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤔𞤮𞤪𞤶𞤭𞤴𞤢"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤔𞤮𞤪𞤶𞤭𞤴𞤢"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤔𞤮𞤪𞤶𞤭𞤴𞤢"}
         }
         "meta:Gilbert_Islands"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤅𞤵𞤪𞤭𞥅𞤶𞤫 𞤘𞤭𞤤𞤦𞤫𞤪𞤼𞤵"}
         }
         "meta:Greenland_Eastern"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤘𞤪𞤭𞤲𞤤𞤢𞤲𞤣"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤘𞤪𞤭𞤲𞤤𞤢𞤲𞤣"}
-            ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞥋𞤺𞤫 "
-                "𞤘𞤪𞤭𞤲𞤤𞤢𞤲𞤣"
-            }
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞤺𞤫 𞤘𞤭𞤪𞤤𞤢𞤲𞤣"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤊𞤵𞤯𞤲𞤢𞥄𞤲𞤺𞤫 𞤘𞤭𞤪𞤤𞤢𞤲𞤣"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤬𞤵𞤯𞤲𞤢𞥄𞤲𞤺𞤫 𞤘𞤭𞤪𞤤𞤢𞤲𞤣"}
         }
         "meta:Greenland_Western"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤘𞤪𞤭𞤲𞤤𞤢𞤲𞤣"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤘𞤪𞤭𞤲𞤤𞤢𞤲𞤣"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫 𞤘𞤭𞤪𞤤𞤢𞤲𞤣"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫 𞤘𞤭𞤪𞤤𞤢𞤲𞤣"}
             ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞥋𞤺𞤫 "
-                "𞤘𞤪𞤭𞤲𞤤𞤢𞤲𞤣"
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫 "
+                "𞤘𞤭𞤪𞤤𞤢𞤲𞤣"
             }
         }
         "meta:Gulf"{
-            ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤂𞤮𞥅𞤻𞤮𞤤𞤣𞤵 "
-                "𞤀𞤪𞤢𞤦𞤭𞤴𞤢"
-            }
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤂𞤮𞥅𞤻𞤵"}
         }
         "meta:Guyana"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤘𞤢𞤴𞤢𞤲𞤢𞥄"}
         }
         "meta:Hawaii_Aleutian"{
-            ld{"𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤖𞤢𞤱𞤢𞥄𞤴𞤭𞥅-𞤀𞤤𞤮𞤧𞤭𞤴𞤢𞤲"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤖𞤢𞤱𞤢𞥄𞤴𞤭𞥅-𞤀𞤤𞤮𞤧𞤭𞤴𞤢𞤲"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤢𞥄𞤴𞤭𞥅-𞤀𞤤𞤮𞤧𞤭𞤴𞤢𞤲"}
-            ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤖𞤢𞤱𞤢𞥄𞤴𞤭𞥅-"
-                "𞤀𞤤𞤮𞤧𞤭𞤴𞤢𞤲"
-            }
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤖𞤢𞤱𞤢𞥄𞤴𞤭𞥅-𞤀𞤤𞤮𞤧𞤭𞤴𞤢𞤲"}
         }
         "meta:Hong_Kong"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤖𞤮𞤲𞤳𞤮𞤲"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤮𞤲𞤳𞤮𞤲"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤖𞤮𞤲𞤳𞤮𞤲"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤖𞤮𞤲𞤺 𞤑𞤮𞤲𞤺"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤮𞤲𞤺 𞤑𞤮𞤲𞤺"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤖𞤮𞤲𞤺 𞤑𞤮𞤲𞤺"}
         }
         "meta:Hovd"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤖𞤮𞤬𞤣𞤵"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤮𞤬𞤣𞤵"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤖𞤮𞤬𞤣𞤵"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤖𞤮𞤬𞤣𞤵"}
         }
         "meta:India"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤖𞤭𞤲𞤣𞤵𞤼𞤢𞥄𞤲"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤋𞤲𞤣𞤭𞤴𞤢"}
         }
         "meta:Indian_Ocean"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤃𞤢𞥄𞤴𞤮 𞤋𞤲𞤣𞤭𞤴𞤢𞤱𞤮"}
         }
         "meta:Indochina"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤭𞤲𞤣𞤵𞤷𞤢𞤴𞤲𞤢𞥄"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤋𞤲𞤣𞤮𞤧𞤭𞥅𞤲"}
         }
         "meta:Indonesia_Central"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤮𞤥𞤦𞤮𞥅𞤪𞤭 𞤋𞤲𞤣𞤮𞤲𞤭𞥅𞤧𞤭𞤴𞤢"}
@@ -1639,22 +1648,22 @@
         "meta:Iran"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤋𞤪𞤢𞥄𞤲"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤋𞤪𞤢𞥄𞤲"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤋𞤪𞤢𞥄𞤲"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤋𞤪𞤢𞥄𞤲"}
         }
         "meta:Irkutsk"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤋𞤪𞤳𞤵𞤼𞤭𞤧𞤳𞤵"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤋𞤪𞤳𞤵𞤼𞤭𞤧𞤳𞤵"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤋𞤪𞤳𞤵𞤼𞤭𞤧𞤳𞤵"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤋𞤪𞤳𞤵𞤼𞤭𞤧𞤳𞤵"}
         }
         "meta:Israel"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤋𞤧𞤪𞤢𞥄𞤭𞥅𞤤𞤵"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤋𞤧𞤪𞤢𞥄𞤭𞥅𞤤𞤵"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤋𞤧𞤪𞤢𞥄𞤭𞥅𞤤𞤵"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤋𞤧𞤪𞤢𞥄𞤭𞥅𞤤𞤵"}
         }
         "meta:Japan"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤔𞤢𞤨𞤢𞤲"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤔𞤢𞤨𞤢𞤲"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤔𞤢𞤨𞤢𞤲"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤐𞤭𞤨𞥆𞤮𞤲"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤐𞤭𞤨𞥆𞤮𞤲"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤐𞤭𞤨𞥆𞤮𞤲"}
         }
         "meta:Kazakhstan_Eastern"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤑𞤢𞥁𞤢𞤿𞤢𞤧𞤼𞤢𞥄𞤲"}
@@ -1665,7 +1674,7 @@
         "meta:Korea"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤑𞤮𞥅𞤪𞤫𞤴𞤢𞥄"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤑𞤮𞥅𞤪𞤫𞤴𞤢𞥄"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤑𞤮𞥅𞤪𞤫𞤴𞤢𞥄"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤑𞤮𞥅𞤪𞤫𞤴𞤢𞥄"}
         }
         "meta:Kosrae"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤑𞤮𞤧𞤪𞤢𞤴"}
@@ -1673,18 +1682,18 @@
         "meta:Krasnoyarsk"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤑𞤢𞤪𞤢𞤧𞤲𞤮𞤴𞤢𞤪𞤧𞤭𞤳"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤑𞤢𞤪𞤢𞤧𞤲𞤮𞤴𞤢𞤪𞤧𞤭𞤳"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤑𞤢𞤪𞤢𞤧𞤲𞤮𞤴𞤢𞤪𞤧𞤭𞤳"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤑𞤪𞤢𞤧𞤲𞤮𞤴𞤢𞤪𞤧𞤭𞤳"}
         }
         "meta:Kyrgystan"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤑𞤭𞤪𞤺𞤭𞤧𞤼𞤢𞥄𞤲"}
         }
         "meta:Line_Islands"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤅𞤵𞤪𞤭𞥅𞤶𞤫 𞤂𞤢𞤴𞤲𞤵"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤂𞤢𞤴𞤲𞤵"}
         }
         "meta:Lord_Howe"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤂𞤮𞤪𞤣𞤵-𞤖𞤮𞤱𞤫"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤂𞤮𞤪𞤣𞤵-𞤖𞤮𞤱𞤫"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤂𞤮𞤪𞤣𞤵-𞤖𞤮𞤱𞤫"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤂𞤮𞤪𞤣𞤵-𞤖𞤮𞤱𞤫"}
         }
         "meta:Macquarie"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤅𞤵𞤪𞤭𞥅𞤪𞤫 𞤃𞤢𞤳𞤢𞥄𞤪𞤭"}
@@ -1692,7 +1701,7 @@
         "meta:Magadan"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤃𞤢𞤺𞤢𞤣𞤢𞤲"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤃𞤢𞤺𞤢𞤣𞤢𞤲"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤃𞤢𞤺𞤢𞤣𞤢𞤲"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤃𞤢𞤺𞤢𞤣𞤢𞤲"}
         }
         "meta:Malaysia"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤃𞤢𞤤𞤫𞥅𞤧𞤭𞤴𞤢"}
@@ -1709,39 +1718,36 @@
         "meta:Mauritius"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤃𞤮𞤪𞤭𞥅𞤧𞤭"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤃𞤮𞤪𞤭𞥅𞤧𞤭"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤃𞤮𞤪𞤭𞥅𞤧𞤭"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤃𞤮𞤪𞤭𞥅𞤧𞤭"}
         }
         "meta:Mawson"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤃𞤢𞤱𞤧𞤮𞤲"}
         }
         "meta:Mexico_Northwest"{
             ld{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤁𞤮𞤱𞤪𞤭-𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞥋𞤺𞤫 "
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤐𞤢𞤲𞤮-𞤸𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫 "
                 "𞤃𞤫𞤳𞤧𞤭𞤳𞤮𞥅"
             }
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤁𞤮𞤱𞤪𞤭-𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤃𞤫𞤳𞤧𞤭𞤳𞤮𞥅"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤐𞤢𞤲𞤮-𞤸𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫 𞤃𞤫𞤳𞤧𞤭𞤳𞤮𞥅"}
             ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤁𞤮𞤱𞤪𞤭-"
-                "𞤖𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞥋𞤺𞤫 𞤃𞤫𞤳𞤧𞤭𞤳𞤮𞥅"
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤐𞤢𞤲𞤮-𞤸𞤭𞥅𞤪𞤲𞤢𞥄𞤲𞤺𞤫 "
+                "𞤃𞤫𞤳𞤧𞤭𞤳𞤮𞥅"
             }
         }
         "meta:Mexico_Pacific"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤆𞤢𞥄𞤧𞤫𞤬𞤭𞤳 𞤃𞤫𞤳𞤧𞤭𞤲𞤳𞤮"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤆𞤢𞥄𞤧𞤫𞤬𞤭𞤳 𞤃𞤫𞤳𞤧𞤭𞤲𞤳𞤮"}
-            ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤆𞤢𞥄𞤧𞤫𞤬𞤭𞤳 "
-                "𞤃𞤫𞤳𞤧𞤭𞤲𞤳𞤮"
-            }
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤁𞤫𞤰𞥆𞤮 𞤃𞤫𞤳𞤧𞤭𞤳𞤮𞥅"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤁𞤫𞤰𞥆𞤮 𞤃𞤫𞤳𞤧𞤭𞤳𞤮𞥅"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤁𞤫𞤰𞥆𞤮 𞤃𞤫𞤳𞤧𞤭𞤳𞤮𞥅"}
         }
         "meta:Mongolia"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤓𞤤𞤢𞤲𞤦𞤢𞤼𞤢𞤪"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤓𞤤𞤢𞤲𞤦𞤢𞤼𞤢𞤪"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤓𞤤𞤢𞤲𞤦𞤢𞤼𞤢𞤪"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤓𞤤𞤢𞤲𞤦𞤢𞤼𞤢𞤪"}
         }
         "meta:Moscow"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤃𞤮𞤧𞤳𞤮"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤃𞤮𞤧𞤳𞤮"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤃𞤮𞤧𞤳𞤮"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤃𞤮𞤧𞤳𞤮"}
         }
         "meta:Myanmar"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤃𞤭𞤴𞤢𞤥𞤢𞥄𞤪"}
@@ -1753,33 +1759,27 @@
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤐𞤫𞤨𞤢𞤤"}
         }
         "meta:New_Caledonia"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤑𞤢𞤤𞤭𞤣𞤮𞤲𞤭𞤴𞤢𞥄 𞤖𞤫𞤴𞤯𞤮"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤑𞤢𞤤𞤭𞤣𞤮𞤲𞤭𞤴𞤢𞥄 𞤖𞤫𞤴𞤯𞤮"}
-            ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤑𞤢𞤤𞤭𞤣𞤮𞤲𞤭𞤴𞤢𞥄 "
-                "𞤖𞤫𞤴𞤯𞤮"
-            }
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤑𞤢𞤤𞤭𞤣𞤮𞤲𞤭𞤴𞤢𞥄 𞤖𞤫𞤧𞤮"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤑𞤢𞤤𞤭𞤣𞤮𞤲𞤭𞤴𞤢𞥄 𞤖𞤫𞤧𞤮"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤑𞤢𞤤𞤭𞤣𞤮𞤲𞤭𞤴𞤢𞥄 𞤖𞤫𞤧𞤮"}
         }
         "meta:New_Zealand"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤐𞤫𞤱-𞤟𞤫𞤤𞤢𞤲𞤣𞤭"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤐𞤫𞤱-𞤟𞤫𞤤𞤢𞤲𞤣𞤭"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤐𞤫𞤱-𞤟𞤫𞤤𞤢𞤲𞤣𞤭"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤐𞤫𞤱-𞤟𞤫𞤤𞤢𞤲𞤣𞤭"}
         }
         "meta:Newfoundland"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤐𞤫𞤱𞤬𞤵𞤲𞤤𞤢𞤲𞤣"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤐𞤫𞤱𞤬𞤵𞤲𞤤𞤢𞤲𞤣"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤐𞤫𞤱𞤬𞤵𞤲𞤤𞤢𞤲𞤣"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤐𞤫𞤱-𞤊𞤵𞤲𞤣𞤵𞤤𞤢𞤲𞤣"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤐𞤫𞤱-𞤊𞤵𞤲𞤣𞤵𞤤𞤢𞤲𞤣"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤐𞤫𞤱-𞤊𞤵𞤲𞤣𞤵𞤤𞤢𞤲𞤣"}
         }
         "meta:Niue"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤐𞤭𞥅𞤴𞤵"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤐𞤵𞥅𞤱𞤭"}
         }
         "meta:Norfolk"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤅𞤵𞤪𞤭𞥅𞤪𞤫 𞤐𞤮𞤪𞤬𞤮𞤤𞤳𞤵"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤅𞤵𞤪𞤭𞥅𞤪𞤫 𞤐𞤮𞤪𞤬𞤮𞤤𞤳𞤵"}
-            ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤅𞤵𞤪𞤭𞥅𞤪𞤫 "
-                "𞤐𞤮𞤪𞤬𞤮𞤤𞤳𞤵"
-            }
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤅𞤵𞤪𞤭𞥅𞤪𞤫 𞤐𞤮𞤪𞤬𞤮𞤤𞤳𞤵"}
         }
         "meta:Noronha"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤊𞤫𞤪𞤲𞤢𞤲𞤣𞤮𞥅 𞤣𞤫 𞤐𞤮𞤪𞤮𞤲𞤽𞤢𞥄"}
@@ -1792,23 +1792,23 @@
         "meta:Novosibirsk"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤐𞤮𞤾𞤮𞤧𞤦𞤭𞤪𞤧𞤭𞤳"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤐𞤮𞤾𞤮𞤧𞤦𞤭𞤪𞤧𞤭𞤳"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤐𞤮𞤾𞤮𞤧𞤦𞤭𞤪𞤧𞤭𞤳"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤐𞤮𞤾𞤮𞤧𞤦𞤭𞤪𞤧𞤭𞤳"}
         }
         "meta:Omsk"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤌𞤥𞤧𞤵𞤳𞤵"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤌𞤥𞤧𞤵𞤳𞤵"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤌𞤥𞤧𞤵𞤳𞤵"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤌𞤥𞤧𞤵𞤳𞤵"}
         }
         "meta:Pakistan"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤆𞤢𞤳𞤭𞤧𞤼𞤢𞥄𞤲"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤆𞤢𞤳𞤭𞤧𞤼𞤢𞥄𞤲"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤆𞤢𞤳𞤭𞤧𞤼𞤢𞥄𞤲"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤆𞤢𞤳𞤭𞤧𞤼𞤢𞥄𞤲"}
         }
         "meta:Palau"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤆𞤮𞤤𞤢𞥄𞤱𞤮"}
         }
         "meta:Papua_New_Guinea"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤆𞤢𞤨𞤵𞤱𞤢 𞤘𞤭𞤲𞤫 𞤖𞤫𞤴𞤯𞤮"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤆𞤢𞤨𞤵𞤱𞤢 𞤘𞤭𞤲𞤫 𞤖𞤫𞤧𞤮"}
         }
         "meta:Paraguay"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤆𞤢𞥄𞤪𞤢𞤺𞤮𞤴"}
@@ -1821,26 +1821,26 @@
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤆𞤫𞤪𞤵𞥅"}
         }
         "meta:Philippines"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤊𞤭𞤤𞤭𞤨𞥆𞤭𞥅𞤲"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤊𞤭𞤤𞤭𞤨𞥆𞤭𞥅𞤲"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤊𞤭𞤤𞤭𞤨𞥆𞤭𞥅𞤲"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤊𞤭𞤤𞤭𞤨𞤭𞥅𞤲"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤊𞤭𞤤𞤭𞤨𞤭𞥅𞤲"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤊𞤭𞤤𞤭𞤨𞤭𞥅𞤲"}
         }
         "meta:Phoenix_Islands"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤅𞤵𞤪𞤭𞥅𞤶𞤫 𞤊𞤫𞤲𞤭𞤳𞤧𞤭"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤊𞤫𞤲𞤭𞤳𞤧𞤭"}
         }
         "meta:Pierre_Miquelon"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤅𞤫𞤲-𞤆𞤭𞤴𞤫𞥅𞤪 & 𞤃𞤭𞤳𞤫𞤤𞤮𞤲"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤅𞤫𞤲-𞤆𞤭𞤴𞤫𞥅𞤪 & 𞤃𞤭𞤳𞤫𞤤𞤮𞤲"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤅𞤼. 𞤆𞤭𞤴𞤫𞥅𞤪 & 𞤃𞤭𞤳𞤫𞤤𞤮𞤲"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤅𞤼. 𞤆𞤭𞤪𞤫𞥅𞤴 & 𞤃𞤭𞤳𞤫𞤤𞤮𞤲"}
             ls{
-                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤅𞤫𞤲-𞤆𞤭𞤴𞤫𞥅𞤪 & "
+                "𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤅𞤼. 𞤆𞤭𞤴𞤫𞥅𞤪 & "
                 "𞤃𞤭𞤳𞤫𞤤𞤮𞤲"
             }
         }
         "meta:Pitcairn"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤆𞤭𞤼𞤭𞤳𞤫𞤪𞤲𞤵"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤆𞤭𞤼𞤳𞤭𞥅𞤪𞤲𞤵"}
         }
         "meta:Ponape"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤆𞤮𞤲𞤢𞤨𞤫"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤆𞤮𞤲𞤢𞥄𞤨𞤫"}
         }
         "meta:Pyongyang"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤆𞤭𞤴𞤮𞤲𞤴𞤢𞤲"}
@@ -1854,21 +1854,21 @@
         "meta:Sakhalin"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤅𞤢𞤿𞤢𞤤𞤭𞥅𞤲"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤅𞤢𞤿𞤢𞤤𞤭𞥅𞤲"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤅𞤢𞤿𞤢𞤤𞤭𞥅𞤲"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤅𞤢𞤿𞤢𞤤𞤭𞥅𞤲"}
         }
         "meta:Samoa"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤅𞤢𞤥𞤮𞤱𞤢"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤅𞤢𞤥𞤮𞤱𞤢"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤅𞤢𞤥𞤮𞤱𞤢"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤅𞤢𞤥𞤵𞤱𞤢"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤅𞤢𞤥𞤵𞤱𞤢"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤅𞤢𞤥𞤵𞤱𞤢"}
         }
         "meta:Seychelles"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤅𞤫𞤴𞤭𞤧𞤫𞤤"}
         }
         "meta:Singapore"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤅𞤭𞤲𞤺𞤢𞤨𞤵𞥅𞤪"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤅𞤭𞤲𞤺𞤢𞤨𞤵𞥅𞤪"}
         }
         "meta:Solomon"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤅𞤵𞤪𞤭𞥅𞤶𞤫 𞤅𞤵𞤤𞤫𞤴𞤥𞤢𞥄𞤲𞤢"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤅𞤵𞤤𞤢𞤴𞤥𞤢𞥄𞤲"}
         }
         "meta:South_Georgia"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤅𞤢𞤱𞤬-𞤔𞤮𞤪𞤶𞤭𞤴𞤢𞥄"}
@@ -1880,34 +1880,34 @@
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤅𞤢𞥄𞤴𞤵𞤱𞤢"}
         }
         "meta:Tahiti"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤢𞤸𞤭𞤼𞤭"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤢𞤸𞤭𞤼𞤭𞥅"}
         }
         "meta:Taipei"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤚𞤢𞤴𞤨𞤫𞥅"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤢𞤴𞤨𞤫𞥅"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤚𞤢𞤴𞤨𞤫𞥅"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤚𞤢𞤴𞤨𞤫𞥅"}
         }
         "meta:Tajikistan"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤢𞤶𞤭𞤳𞤭𞤧𞤼𞤢𞥄𞤲"}
         }
         "meta:Tokelau"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤮𞤳𞤫𞤤𞤮𞤱𞤢"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤮𞥅𞤳𞤮𞤤𞤢𞥄𞤱𞤵"}
         }
         "meta:Tonga"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤚𞤮𞤲𞤺𞤢"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤮𞤲𞤺𞤢"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤚𞤮𞤲𞤺𞤢"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤮𞤲𞤺𞤢 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫"}
         }
         "meta:Truk"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤵𞥅𞤳𞤵"}
         }
         "meta:Turkmenistan"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤚𞤵𞤪𞤳𞤭𞤥𞤫𞤧𞤼𞤢𞥄𞤲"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤵𞤪𞤳𞤭𞤥𞤫𞤧𞤼𞤢𞥄𞤲"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤚𞤵𞤪𞤳𞤭𞤥𞤫𞤧𞤼𞤢𞥄𞤲"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤚𞤵𞤪𞤳𞤵𞤥𞤫𞤲𞤭𞤧𞤼𞤢𞥄𞤲"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤵𞤪𞤳𞤵𞤥𞤫𞤲𞤭𞤧𞤼𞤢𞥄𞤲"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤚𞤵𞤪𞤳𞤵𞤥𞤫𞤲𞤭𞤧𞤼𞤢𞥄𞤲"}
         }
         "meta:Tuvalu"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤵𞤾𞤢𞤤𞤵"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤚𞤵𞥅𞤾𞤢𞤤𞤵"}
         }
         "meta:Uruguay"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤒𞤵𞥅𞤪𞤺𞤮𞤴"}
@@ -1915,14 +1915,14 @@
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤒𞤵𞥅𞤪𞤺𞤮𞤴"}
         }
         "meta:Uzbekistan"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤓𞥅𞤶𞤵𞤦𞤫𞤳𞤭𞤧𞤼𞤢𞥄𞤲"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤓𞥅𞤶𞤵𞤦𞤫𞤳𞤭𞤧𞤼𞤢𞥄𞤲"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤓𞥅𞤶𞤵𞤦𞤫𞤳𞤭𞤧𞤼𞤢𞥄𞤲"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤓𞥁𞤦𞤫𞤳𞤭𞤧𞤼𞤢𞥄𞤲"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤓𞥁𞤦𞤫𞤳𞤭𞤧𞤼𞤢𞥄𞤲"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤓𞥁𞤦𞤫𞤳𞤭𞤧𞤼𞤢𞥄𞤲"}
         }
         "meta:Vanuatu"{
-            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤜𞤢𞤲𞤵𞥅𞤼𞤵"}
-            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤜𞤢𞤲𞤵𞥅𞤼𞤵"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤜𞤢𞤲𞤵𞥅𞤼𞤵"}
+            ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤜𞤢𞤲𞤵𞤱𞤢𞥄𞤼𞤵"}
+            lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤜𞤢𞤲𞤵𞤱𞤢𞥄𞤼𞤵"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤜𞤢𞤲𞤵𞤱𞤢𞥄𞤼𞤵"}
         }
         "meta:Venezuela"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤜𞤫𞤲𞤭𞥅𞥁𞤮𞥅𞤤𞤢"}
@@ -1930,12 +1930,12 @@
         "meta:Vladivostok"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤜𞤭𞤤𞤢𞤾𞤮𞤧𞤼𞤮𞤳"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤜𞤭𞤤𞤢𞤾𞤮𞤧𞤼𞤮𞤳"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤜𞤭𞤤𞤢𞤾𞤮𞤧𞤼𞤮𞤳"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤜𞤭𞤤𞤢𞤾𞤮𞤧𞤼𞤮𞤳"}
         }
         "meta:Volgograd"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤜𞤮𞤤𞤺𞤮𞤺𞤢𞤪𞤢𞥄𞤣"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤜𞤮𞤤𞤺𞤮𞤺𞤢𞤪𞤢𞥄𞤣"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤜𞤮𞤤𞤺𞤮𞤺𞤢𞤪𞤢𞥄𞤣"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤜𞤮𞤤𞤺𞤮𞤺𞤢𞤪𞤢𞥄𞤣"}
         }
         "meta:Vostok"{
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤜𞤮𞤧𞤼𞤮𞤳"}
@@ -1944,22 +1944,22 @@
             ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤅𞤵𞤪𞤭𞥅𞤪𞤫 𞤏𞤫𞥅𞤳𞤵"}
         }
         "meta:Wallis"{
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤏𞤢𞤤𞤭𞥅𞤧 & 𞤊𞤵𞤼𞤵𞤲𞤢"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤏𞤢𞤤𞥆𞤭𞥅𞤧 & 𞤊𞤵𞤼𞤵𞤲𞤢"}
         }
         "meta:Yakutsk"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤒𞤢𞤳𞤢𞤼𞤭𞤧𞤳𞤵"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤒𞤢𞤳𞤢𞤼𞤭𞤧𞤳𞤵"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤒𞤢𞤳𞤢𞤼𞤭𞤧𞤳𞤵"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤒𞤢𞤳𞤢𞤼𞤭𞤧𞤳𞤵"}
         }
         "meta:Yekaterinburg"{
             ld{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤕𞤫𞥅𞤯𞤵 𞤒𞤫𞤳𞤢𞤼𞤫𞤪𞤭𞤲𞤦𞤵𞤪𞤺𞤵"}
             lg{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤒𞤫𞤳𞤢𞤼𞤫𞤪𞤭𞤲𞤦𞤵𞤪𞤺𞤵"}
-            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫 𞤒𞤫𞤳𞤢𞤼𞤫𞤪𞤭𞤲𞤦𞤵𞤪𞤺𞤵"}
+            ls{"𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤵𞤲𞥋𞤣𞤫 𞤒𞤫𞤳𞤢𞤼𞤫𞤪𞤭𞤲𞤦𞤵𞤪𞤺𞤵"}
         }
-        gmtFormat{"𞤑𞤖𞤏{0}"}
-        gmtZeroFormat{"𞤑𞤖𞤏"}
+        gmtFormat{"𞤑𞤖𞤘{0}"}
+        gmtZeroFormat{"𞤑𞤖𞤘"}
         regionFormat{"{0} 𞤑𞤭𞤶𞤮𞥅𞤪𞤫"}
-        regionFormatDaylight{"{0} 𞤐𞥋𞤔𞤢𞤥𞤲𞥋𞤣𞤭 𞤕𞤫𞥅𞤯𞤵"}
+        regionFormatDaylight{"{0} 𞤐𞤶𞤢𞤥𞤲𞤣𞤭 𞤕𞤫𞥅𞤯𞤵"}
         regionFormatStandard{"{0} 𞤑𞤭𞤶𞤮𞥅𞤪𞤫 𞤖𞤢𞤱𞤪𞤭𞤼𞤵𞤲𞥋𞤣𞤫"}
     }
 }
diff --git a/icu4c/source/data/zone/ff_CM.txt b/icu4c/source/data/zone/ff_CM.txt
index c381f6c..0bf68ef 100644
--- a/icu4c/source/data/zone/ff_CM.txt
+++ b/icu4c/source/data/zone/ff_CM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_CM{
     "%%ALIAS"{"ff_Latn_CM"}
 }
diff --git a/icu4c/source/data/zone/ff_GN.txt b/icu4c/source/data/zone/ff_GN.txt
index c3a0bf3..433db4d 100644
--- a/icu4c/source/data/zone/ff_GN.txt
+++ b/icu4c/source/data/zone/ff_GN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_GN{
     "%%ALIAS"{"ff_Latn_GN"}
 }
diff --git a/icu4c/source/data/zone/ff_Latn.txt b/icu4c/source/data/zone/ff_Latn.txt
index 3d8715b..d30cb62 100644
--- a/icu4c/source/data/zone/ff_Latn.txt
+++ b/icu4c/source/data/zone/ff_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/ff_Latn_CM.txt b/icu4c/source/data/zone/ff_Latn_CM.txt
index a141c2f..123bc57 100644
--- a/icu4c/source/data/zone/ff_Latn_CM.txt
+++ b/icu4c/source/data/zone/ff_Latn_CM.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/ff_Latn_GN.txt b/icu4c/source/data/zone/ff_Latn_GN.txt
index b37284e..54b7546 100644
--- a/icu4c/source/data/zone/ff_Latn_GN.txt
+++ b/icu4c/source/data/zone/ff_Latn_GN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/ff_Latn_MR.txt b/icu4c/source/data/zone/ff_Latn_MR.txt
index 9b83c95..dd6364b 100644
--- a/icu4c/source/data/zone/ff_Latn_MR.txt
+++ b/icu4c/source/data/zone/ff_Latn_MR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/ff_Latn_SN.txt b/icu4c/source/data/zone/ff_Latn_SN.txt
index 6112f6f..33ed407 100644
--- a/icu4c/source/data/zone/ff_Latn_SN.txt
+++ b/icu4c/source/data/zone/ff_Latn_SN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/ff_MR.txt b/icu4c/source/data/zone/ff_MR.txt
index 17a8873..1da6e51 100644
--- a/icu4c/source/data/zone/ff_MR.txt
+++ b/icu4c/source/data/zone/ff_MR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_MR{
     "%%ALIAS"{"ff_Latn_MR"}
 }
diff --git a/icu4c/source/data/zone/ff_SN.txt b/icu4c/source/data/zone/ff_SN.txt
index c690854..ca2f4ec 100644
--- a/icu4c/source/data/zone/ff_SN.txt
+++ b/icu4c/source/data/zone/ff_SN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ff_SN{
     "%%ALIAS"{"ff_Latn_SN"}
 }
diff --git a/icu4c/source/data/zone/fi.txt b/icu4c/source/data/zone/fi.txt
index 86dbac2..1340fb3 100644
--- a/icu4c/source/data/zone/fi.txt
+++ b/icu4c/source/data/zone/fi.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fi{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -813,6 +813,9 @@
         "Asia:Qatar"{
             ec{"Qatar"}
         }
+        "Asia:Qostanay"{
+            ec{"Kostanai"}
+        }
         "Asia:Qyzylorda"{
             ec{"Qızılorda"}
         }
diff --git a/icu4c/source/data/zone/fil.txt b/icu4c/source/data/zone/fil.txt
index 7f52e30..945f054 100644
--- a/icu4c/source/data/zone/fil.txt
+++ b/icu4c/source/data/zone/fil.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fil{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -1322,7 +1322,7 @@
         "meta:America_Central"{
             ld{"Sentral na Daylight Time"}
             lg{"Sentral na Oras"}
-            ls{"Sentral na Karaniwang Oras"}
+            ls{"Sentral na Standard na Oras"}
         }
         "meta:America_Eastern"{
             ld{"Eastern Daylight Time"}
@@ -1722,7 +1722,7 @@
         "meta:Norfolk"{
             ld{"Daylight Time sa Norfolk Island"}
             lg{"Oras sa Norfolk Island"}
-            ls{"Standard na Norfolk Island"}
+            ls{"Standard na Oras sa Norfolk Island"}
         }
         "meta:Noronha"{
             ld{"Oras sa Tag-init ng Fernando de Noronha"}
diff --git a/icu4c/source/data/zone/fil_PH.txt b/icu4c/source/data/zone/fil_PH.txt
index 5b83d82..481c955 100644
--- a/icu4c/source/data/zone/fil_PH.txt
+++ b/icu4c/source/data/zone/fil_PH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/fo.txt b/icu4c/source/data/zone/fo.txt
index e956b45..ad8d337 100644
--- a/icu4c/source/data/zone/fo.txt
+++ b/icu4c/source/data/zone/fo.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fo{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -1038,7 +1038,7 @@
         }
         "Europe:London"{
             ec{"London"}
-            ld{"Stóra Bretland summartíð"}
+            ld{"Bretsk summartíð"}
         }
         "Europe:Luxembourg"{
             ec{"Luksemborg"}
@@ -1710,9 +1710,9 @@
             ls{"Niue tíð"}
         }
         "meta:Norfolk"{
-            ld{"Norfolksoyggj summartíð"}
-            lg{"Norfolksoyggj tíð"}
-            ls{"Norfolksoyggj vanlig tíð"}
+            ld{"Norfolkoyggj summartíð"}
+            lg{"Norfolkoyggj tíð"}
+            ls{"Norfolkoyggj vanlig tíð"}
         }
         "meta:Noronha"{
             ld{"Fernando de Noronha summartíð"}
diff --git a/icu4c/source/data/zone/fr.txt b/icu4c/source/data/zone/fr.txt
index 1ec6a94..a113840 100644
--- a/icu4c/source/data/zone/fr.txt
+++ b/icu4c/source/data/zone/fr.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -901,7 +901,7 @@
             ec{"Cap-Vert"}
         }
         "Atlantic:Faeroe"{
-            ec{"Féroé"}
+            ec{"Îles Féroé"}
         }
         "Atlantic:Madeira"{
             ec{"Madère"}
diff --git a/icu4c/source/data/zone/fr_CA.txt b/icu4c/source/data/zone/fr_CA.txt
index d184a0b..bd09d58 100644
--- a/icu4c/source/data/zone/fr_CA.txt
+++ b/icu4c/source/data/zone/fr_CA.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_CA{
-    Version{"37"}
     zoneStrings{
         "Africa:Ndjamena"{
             ec{"Ndjamena"}
@@ -216,11 +216,6 @@
             lg{"heure du Cap-Vert"}
             ls{"heure normale du Cap-Vert"}
         }
-        "meta:Chatham"{
-            ld{"heure avancée des Îles Chatham"}
-            lg{"heure des îles Chatham"}
-            ls{"heure normale des Îles Chatham"}
-        }
         "meta:Chile"{
             ld{"heure avancée du Chili"}
             lg{"heure du Chili"}
@@ -257,19 +252,19 @@
             ls{"heure normale de l’île de Pâques"}
         }
         "meta:Europe_Central"{
-            ld{"heure avancée d’Europe centrale"}
-            lg{"heure d’Europe centrale"}
-            ls{"heure normale d’Europe centrale"}
+            ld{"heure avancée de l’Europe centrale"}
+            lg{"heure de l’Europe centrale"}
+            ls{"heure normale de l’Europe centrale"}
         }
         "meta:Europe_Eastern"{
-            ld{"heure avancée d’Europe de l’Est"}
-            lg{"heure d’Europe de l’Est"}
-            ls{"heure normale d’Europe de l’Est"}
+            ld{"heure avancée de l’Europe de l’Est"}
+            lg{"heure de l’Europe de l’Est"}
+            ls{"heure normale de l’Europe de l’Est"}
         }
         "meta:Europe_Western"{
-            ld{"heure avancée d’Europe de l’Ouest"}
-            lg{"heure d’Europe de l’Ouest"}
-            ls{"heure normale d’Europe de l’Ouest"}
+            ld{"heure avancée de l’Europe de l’Ouest"}
+            lg{"heure de l’Europe de l’Ouest"}
+            ls{"heure normale de l’Europe de l’Ouest"}
         }
         "meta:Falkland"{
             ld{"heure avancée des îles Malouines"}
diff --git a/icu4c/source/data/zone/fr_GF.txt b/icu4c/source/data/zone/fr_GF.txt
index 9d0e1ff..c227e7f 100644
--- a/icu4c/source/data/zone/fr_GF.txt
+++ b/icu4c/source/data/zone/fr_GF.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fr_GF{
-    Version{"37"}
     zoneStrings{
         "meta:French_Guiana"{
             ss{"GFT"}
diff --git a/icu4c/source/data/zone/fur.txt b/icu4c/source/data/zone/fur.txt
index 9673612..23942d2 100644
--- a/icu4c/source/data/zone/fur.txt
+++ b/icu4c/source/data/zone/fur.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fur{
-    Version{"37"}
     zoneStrings{
         "America:New_York"{
             ec{"Gnove York"}
diff --git a/icu4c/source/data/zone/fy.txt b/icu4c/source/data/zone/fy.txt
index 45808ce..0cacddd 100644
--- a/icu4c/source/data/zone/fy.txt
+++ b/icu4c/source/data/zone/fy.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 fy{
-    Version{"37"}
     zoneStrings{
         "Africa:Addis_Ababa"{
             ec{"Addis Abeba"}
diff --git a/icu4c/source/data/zone/ga.txt b/icu4c/source/data/zone/ga.txt
index 1dfa8fe..6738191 100644
--- a/icu4c/source/data/zone/ga.txt
+++ b/icu4c/source/data/zone/ga.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ga{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -1106,7 +1106,7 @@
             ec{"Taillinn"}
         }
         "Europe:Tirane"{
-            ec{"Tirane"}
+            ec{"Tiorána"}
         }
         "Europe:Ulyanovsk"{
             ec{"Ulyanovsk"}
@@ -1306,7 +1306,7 @@
             ls{"Am Oirthear na hAfraice"}
         }
         "meta:Africa_Southern"{
-            ls{"Am Caighdeánach na hAfraice Theas"}
+            ls{"Am na hAfraice Theas"}
         }
         "meta:Africa_Western"{
             ld{"Am Samhraidh Iarthar na hAfraice"}
@@ -1329,19 +1329,19 @@
             ls{"Am Caighdeánach na hAmasóine"}
         }
         "meta:America_Central"{
-            ld{"Am Samhraidh Lárnach"}
-            lg{"Am Lárnach"}
-            ls{"Am Caighdeánach Lárnach"}
+            ld{"Am Samhraidh Lárnach Mheiriceá Thuaidh"}
+            lg{"Am Lárnach Mheiriceá Thuaidh"}
+            ls{"Am Caighdeánach Lárnach Mheiriceá Thuaidh"}
         }
         "meta:America_Eastern"{
-            ld{"Am Samhraidh an Oirthir"}
-            lg{"Am an Oirthir"}
-            ls{"Am Caighdeánach an Oirthir"}
+            ld{"Am Samhraidh Oirthear Mheiriceá Thuaidh"}
+            lg{"Am Oirthear Mheiriceá Thuaidh"}
+            ls{"Am Caighdeánach Oirthear Mheiriceá Thuaidh"}
         }
         "meta:America_Mountain"{
-            ld{"Am Samhraidh na Sléibhte"}
-            lg{"Am na Sléibhte"}
-            ls{"Am Caighdeánach na Sléibhte"}
+            ld{"Am Samhraidh Sléibhte Mheiriceá Thuaidh"}
+            lg{"Am Sléibhte Mheiriceá Thuaidh"}
+            ls{"Am Caighdeánach Sléibhte Mheiriceá Thuaidh"}
         }
         "meta:America_Pacific"{
             ld{"Am Samhraidh an Aigéin Chiúin"}
@@ -1864,7 +1864,7 @@
             ls{"Am Caighdeánach Shingeapór"}
         }
         "meta:Solomon"{
-            ls{"Am Oileáin Sholomón"}
+            ls{"Am Oileáin Sholaimh"}
         }
         "meta:South_Georgia"{
             ls{"Am na Seoirsia Theas"}
@@ -1903,7 +1903,7 @@
             ls{"Am Caighdeánach na Tuircméanastáine"}
         }
         "meta:Tuvalu"{
-            ls{"Am Thuvalu"}
+            ls{"Am Thúvalú"}
         }
         "meta:Uruguay"{
             ld{"Am Samhraidh Uragua"}
@@ -1940,7 +1940,7 @@
             ls{"Am Oileán Wake"}
         }
         "meta:Wallis"{
-            ls{"Am Vailís agus Futúna"}
+            ls{"Am Wallis agus Futuna"}
         }
         "meta:Yakutsk"{
             ld{"Am Samhraidh Iacútsc"}
diff --git a/icu4c/source/data/zone/gd.txt b/icu4c/source/data/zone/gd.txt
index dc873d0..a0569d5 100644
--- a/icu4c/source/data/zone/gd.txt
+++ b/icu4c/source/data/zone/gd.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gd{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -682,7 +682,7 @@
             ec{"Beirut"}
         }
         "Asia:Bishkek"{
-            ec{"Bishkek"}
+            ec{"Biškek"}
         }
         "Asia:Brunei"{
             ec{"Brùnaigh"}
@@ -712,7 +712,7 @@
             ec{"Dubai"}
         }
         "Asia:Dushanbe"{
-            ec{"Dushanbe"}
+            ec{"Dušanbe"}
         }
         "Asia:Famagusta"{
             ec{"Famagusta"}
@@ -847,10 +847,10 @@
             ec{"Taipei"}
         }
         "Asia:Tashkent"{
-            ec{"Tashkent"}
+            ec{"Toškent"}
         }
         "Asia:Tbilisi"{
-            ec{"Tbilisi"}
+            ec{"T’bilisi"}
         }
         "Asia:Tehran"{
             ec{"Tehrān"}
@@ -1460,9 +1460,9 @@
             ls{"Àm Boilibhia"}
         }
         "meta:Brasilia"{
-            ld{"Tìde samhraidh Bhrasilia"}
-            lg{"Àm Bhrasilia"}
-            ls{"Bun-àm Bhrasilia"}
+            ld{"Tìde samhraidh Bhrasília"}
+            lg{"Àm Bhrasília"}
+            ls{"Bun-àm Bhrasília"}
         }
         "meta:Brunei"{
             ls{"Àm Bhrùnaigh Dàr as-Salàm"}
diff --git a/icu4c/source/data/zone/gl.txt b/icu4c/source/data/zone/gl.txt
index 1d14aa1..9741d63 100644
--- a/icu4c/source/data/zone/gl.txt
+++ b/icu4c/source/data/zone/gl.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gl{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
diff --git a/icu4c/source/data/zone/gsw.txt b/icu4c/source/data/zone/gsw.txt
index ace3bc0..e7e4e14 100644
--- a/icu4c/source/data/zone/gsw.txt
+++ b/icu4c/source/data/zone/gsw.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gsw{
-    Version{"37"}
     zoneStrings{
         "Africa:Accra"{
             ec{"Akkra"}
diff --git a/icu4c/source/data/zone/gu.txt b/icu4c/source/data/zone/gu.txt
index 3ec3ddb..d05c8b7 100644
--- a/icu4c/source/data/zone/gu.txt
+++ b/icu4c/source/data/zone/gu.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gu{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"આબિદ્જાન"}
@@ -1752,7 +1752,7 @@
             ls{"નીયુ સમય"}
         }
         "meta:Norfolk"{
-            ld{"નોરફૉક આઇલેન્ડ ગ્રીષ્મ સમય"}
+            ld{"નોરફૉક આઇલેન્ડ દિવસ સમય"}
             lg{"નોરફૉક આઇલેન્ડ સમય"}
             ls{"નોરફૉક આઇલેન્ડ માનક સમય"}
         }
diff --git a/icu4c/source/data/zone/guz.txt b/icu4c/source/data/zone/guz.txt
index b50d5be..c9a66de 100644
--- a/icu4c/source/data/zone/guz.txt
+++ b/icu4c/source/data/zone/guz.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 guz{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/gv.txt b/icu4c/source/data/zone/gv.txt
index 63c855d..87aeded 100644
--- a/icu4c/source/data/zone/gv.txt
+++ b/icu4c/source/data/zone/gv.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 gv{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/ha.txt b/icu4c/source/data/zone/ha.txt
index 123b6f7..cf5ce29 100644
--- a/icu4c/source/data/zone/ha.txt
+++ b/icu4c/source/data/zone/ha.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ha{
-    Version{"37"}
     zoneStrings{
         "America:North_Dakota:Beulah"{
             ec{"Beulah, Arewacin Dakota"}
@@ -39,28 +39,39 @@
         "Etc:Unknown"{
             ec{"Birni da ba a sani ba"}
         }
+        "Europe:Dublin"{
+            ld{"Tsayayyen Lokacin Irish"}
+        }
+        "Europe:London"{
+            ld{"Lokacin Bazara na Birtaniya"}
+        }
         "meta:Afghanistan"{
-            ls{"Afghanistan Time"}
+            ls{"Lokacin Afghanistan"}
         }
         "meta:Africa_Central"{
-            ls{"Central Africa Time"}
+            ls{"Lokacin Afirka ta Tsakiya"}
         }
         "meta:Africa_Eastern"{
-            ls{"East Africa Time"}
+            ls{"Lokacin Gabashin Afirka"}
         }
         "meta:Africa_Southern"{
             ls{"South Africa Standard Time"}
         }
         "meta:Africa_Western"{
-            ld{"West Africa Summer Time"}
-            lg{"West Africa Time"}
-            ls{"West Africa Standard Time"}
+            ld{"Lokacin Bazara na Afirka ta Yamma"}
+            lg{"Lokacin Afirka ta Yamma"}
+            ls{"Tsayayyen Lokacin Afirka ta Yamma"}
         }
         "meta:Alaska"{
             ld{"Lokacin Rana na Alaska"}
             lg{"Lokacin Alaska"}
             ls{"Tsayayyen Lokacin Alaska"}
         }
+        "meta:Amazon"{
+            ld{"Lokacin Bazara na Amazon"}
+            lg{"Lokacin Amazon"}
+            ls{"Tsayayyen Lokacin Amazon"}
+        }
         "meta:America_Central"{
             ld{"Lokacin Rana dake Arewacin Amurika ta Tsakiya"}
             lg{"Lokaci dake Amurika arewa ta tsakiyar"}
@@ -72,123 +83,159 @@
             ls{"Tsayayyen Lokacin Gabas dake Arewacin Amurika"}
         }
         "meta:America_Mountain"{
-            ld{"Lokaci rana tsauni a arewacin da Amirka"}
-            lg{"Lokaci tsauni a arewacin da Amirka"}
+            ld{"Lokacin Rana na Tsaunin Arewacin Amurka"}
+            lg{"Lokacin Tsauni na Arewacin Amurka"}
             ls{"Lokaci tsayayye na tsauni a Arewacin Amurica"}
         }
         "meta:America_Pacific"{
-            ld{"Lokaci da rana a Arewacin Amurika"}
+            ld{"Lokacin Rana na Arewacin Amurka"}
             lg{"Lokacin Arewacin Amurika"}
             ls{"Lokaci Tsayayye na Arewacin Amurika"}
         }
         "meta:Apia"{
-            ld{"Apia Daylight Time"}
-            lg{"Apia Time"}
-            ls{"Apia Standard Time"}
+            ld{"Lokacin Rana na Apia"}
+            lg{"Lokacin Apia"}
+            ls{"Tsayayyen Lokacin Apia"}
         }
         "meta:Arabian"{
-            ld{"Arabian Daylight Time"}
-            lg{"Arabian Time"}
+            ld{"Lokacin Rana na Arebiya"}
+            lg{"Lokacin Arebiya"}
             ls{"Arabian Standard Time"}
         }
+        "meta:Argentina"{
+            ld{"Lokacin Bazara na Argentina"}
+            lg{"Lokacin Argentina"}
+            ls{"Tsayayyen Lokacin Argentina"}
+        }
+        "meta:Argentina_Western"{
+            ld{"Lokacin Bazara na Yammacin Argentina"}
+            lg{"Lokacin Yammacin Argentina"}
+            ls{"Tsayayyen Lokacin Yammacin Argentina"}
+        }
         "meta:Armenia"{
-            ld{"Armenia Summer Time"}
-            lg{"Armenia Time"}
-            ls{"Armenia Standard Time"}
+            ld{"Lokacin Bazara na Armenia"}
+            lg{"Lokacin Armenia"}
+            ls{"Tsayayyen Lokacin Armenia"}
         }
         "meta:Atlantic"{
             ld{"Lokacin Rana na Kanada, Puerto Rico da Virgin Islands"}
             lg{"Lokacin Kanada, Puerto Rico da Virgin Islands"}
-            ls{"Lokaci Tsayayye na Kanada, Puerto Rico da Virgin Islands"}
+            ls{"Tsayayyen Lokacin Kanada, Puerto Rico da Virgin Islands"}
         }
         "meta:Australia_Central"{
-            ld{"Australian Central Daylight Time"}
+            ld{"Lokacin Rana na Tsakiyar Austiraliya"}
             lg{"Central Australia Time"}
-            ls{"Australian Central Standard Time"}
+            ls{"Tsayayyen Lokacin Tsakiyar Austiraliya"}
         }
         "meta:Australia_CentralWestern"{
-            ld{"Australian Central Western Daylight Time"}
-            lg{"Australian Central Western Time"}
-            ls{"Australian Central Western Standard Time"}
+            ld{"Lokacin Rana na Yammacin Tsakiyar Austiraliya"}
+            lg{"Lokacin Yammacin Tsakiyar Austiraliya"}
+            ls{"Tsayayyen Lokacin Yammacin Tsakiyar Austiraliya"}
         }
         "meta:Australia_Eastern"{
-            ld{"Australian Eastern Daylight Time"}
-            lg{"Eastern Australia Time"}
+            ld{"Lokacin Rana na Gabashin Austiraliya"}
+            lg{"Lokacin Gabashin Austiraliya"}
             ls{"Australian Eastern Standard Time"}
         }
         "meta:Australia_Western"{
-            ld{"Australian Western Daylight Time"}
-            lg{"Western Australia Time"}
-            ls{"Australian Western Standard Time"}
+            ld{"Lokacin Rana na Yammacin Austiralia"}
+            lg{"Lokacin Yammacin Austiralia"}
+            ls{"Tsayayyen Lokacin Yammacin Austiralia"}
         }
         "meta:Azerbaijan"{
-            ld{"Azerbaijan Summer Time"}
-            lg{"Azerbaijan Time"}
-            ls{"Azerbaijan Standard Time"}
+            ld{"Lokacin Bazara na Azerbaijan"}
+            lg{"Lokacin Azerbaijan"}
+            ls{"Tsayayyen Lokacin Azerbaijan"}
         }
         "meta:Azores"{
-            ld{"Azores Summer Time"}
-            lg{"Azores Time"}
-            ls{"Azores Standard Time"}
+            ld{"Lokacin Azure na Bazara"}
+            lg{"Lokacin Azores"}
+            ls{"Lokacin Azores Daidaitacce"}
         }
         "meta:Bangladesh"{
-            ld{"Bangladesh Summer Time"}
-            lg{"Bangladesh Time"}
-            ls{"Bangladesh Standard Time"}
+            ld{"Lokacin Bazara na Bangladesh"}
+            lg{"Lokacin Bangladesh"}
+            ls{"Tsayayyen Lokacin Bangladesh"}
         }
         "meta:Bhutan"{
             ls{"Bhutan Time"}
         }
+        "meta:Bolivia"{
+            ls{"Lokacin Bolivia"}
+        }
+        "meta:Brasilia"{
+            ld{"Lokacin Bazara na Brasillia"}
+            lg{"Lokacin Brasillia"}
+            ls{"Tsayayyen Lokacin Brasillia"}
+        }
         "meta:Brunei"{
-            ls{"Brunei Darussalam Time"}
+            ls{"Lokacin Brunei Darussalam"}
         }
         "meta:Cape_Verde"{
-            ld{"Cape Verde Summer Time"}
-            lg{"Cape Verde Time"}
+            ld{"Lokacin Bazara na Cape Verde"}
+            lg{"Lokacin Cape Verde"}
             ls{"Cape Verde Standard Time"}
         }
         "meta:Chamorro"{
-            ls{"Chamorro Standard Time"}
+            ls{"Tsayayyen Lokacin Chamorro"}
         }
         "meta:Chatham"{
-            ld{"Chatham Daylight Time"}
-            lg{"Chatham Time"}
-            ls{"Chatham Standard Time"}
+            ld{"Lokacin Rana na Chatham"}
+            lg{"Lokacin Chatham"}
+            ls{"Tsayayyen Lokacin Chatham"}
+        }
+        "meta:Chile"{
+            ld{"Lokacin Bazara na Chile"}
+            lg{"Lokacin Chile"}
+            ls{"Tsayayyen Lokacin Chile"}
         }
         "meta:China"{
-            ld{"China Daylight Time"}
-            lg{"China Time"}
-            ls{"China Standard Time"}
+            ld{"Lokacin Rana na Sin"}
+            lg{"Lokacin Sin"}
+            ls{"Tsayayyen Lokacin Sin"}
         }
         "meta:Choibalsan"{
-            ld{"Choibalsan Summer Time"}
-            lg{"Choibalsan Time"}
-            ls{"Choibalsan Standard Time"}
+            ld{"Lokacin Bazara na Choibalsan"}
+            lg{"Lokacin Choibalsan"}
+            ls{"Tsayayyen Lokacin Choibalsan"}
         }
         "meta:Christmas"{
-            ls{"Christmas Island Time"}
+            ls{"Lokacin Christmas Island"}
         }
         "meta:Cocos"{
-            ls{"Cocos Islands Time"}
+            ls{"Lokacin Cocos Islands"}
+        }
+        "meta:Colombia"{
+            ld{"Lokacin Bazara na Colombia"}
+            lg{"Lokacin Colombia"}
+            ls{"Tsayayyen Lokacin Colombia"}
         }
         "meta:Cook"{
-            ld{"Cook Islands Half Summer Time"}
-            lg{"Cook Islands Time"}
-            ls{"Cook Islands Standard Time"}
+            ld{"Rabin Lokacin Bazara na Cook Islands"}
+            lg{"Lokacin Cook Islands"}
+            ls{"Tsayayyen Lokacin Cook Islands"}
         }
         "meta:Cuba"{
-            ld{"Lokaci rana ta Kuba"}
-            lg{"Lokaci ta Kuba"}
-            ls{"Lokaci Tsayayye na Kuba"}
+            ld{"Lokacin Rana na Kuba"}
+            lg{"Lokaci na Kuba"}
+            ls{"Tsayayyen Lokacin Kuba"}
         }
         "meta:Davis"{
-            ls{"Davis Time"}
+            ls{"Lokacin Davis"}
         }
         "meta:DumontDUrville"{
-            ls{"Dumont-d’Urville Time"}
+            ls{"Lokacin Dumont-d’Urville"}
         }
         "meta:East_Timor"{
-            ls{"East Timor Time"}
+            ls{"Lokacin East Timor"}
+        }
+        "meta:Easter"{
+            ld{"Lokacin Bazara na Easter Island"}
+            lg{"Lokacin Easter Island"}
+            ls{"Tsayayyen Lokacin Easter Island"}
+        }
+        "meta:Ecuador"{
+            ls{"Lokacin Ecuador"}
         }
         "meta:Europe_Central"{
             ld{"Tsakiyar bazara a lokaci turai"}
@@ -200,354 +247,397 @@
             lg{"Lokaci a turai gabas"}
             ls{"Ida lokaci a turai gabas"}
         }
+        "meta:Europe_Further_Eastern"{
+            ls{"Lokacin Gabashin Turai mai Nisa"}
+        }
         "meta:Europe_Western"{
             ld{"Ida lokaci ta yammacin turai da bazara"}
             lg{"Lokaci ta yammacin turai"}
             ls{"Ida lokaci ta yammacin turai"}
         }
+        "meta:Falkland"{
+            ld{"Lokacin Bazara na Falkland Islands"}
+            lg{"Lokacin Falkland Islands"}
+            ls{"Tsayayyen Lokacin Falkland Islands"}
+        }
         "meta:Fiji"{
-            ld{"Fiji Summer Time"}
-            lg{"Fiji Time"}
-            ls{"Fiji Standard Time"}
+            ld{"Lokacin Bazara na Fiji"}
+            lg{"Lokacin Fiji"}
+            ls{"Tsayayyen Lokacin Fiji"}
+        }
+        "meta:French_Guiana"{
+            ls{"Lokacin French Guiana"}
         }
         "meta:French_Southern"{
-            ls{"French Southern & Antarctic Time"}
+            ls{"Lokacin Kudancin Faransa da Antarctic"}
         }
         "meta:GMT"{
             ls{"Lokacin Greenwhich a London"}
         }
+        "meta:Galapagos"{
+            ls{"Lokacin Galapagos"}
+        }
         "meta:Gambier"{
-            ls{"Gambier Time"}
+            ls{"Lokacin Gambier"}
         }
         "meta:Georgia"{
             ld{"Georgia Summer Time"}
-            lg{"Georgia Time"}
-            ls{"Georgia Standard Time"}
+            lg{"Lokacin Georgia"}
+            ls{"Tsayayyen Lokacin Georgia"}
         }
         "meta:Gilbert_Islands"{
-            ls{"Gilbert Islands Time"}
+            ls{"Lokacin Gilbert Islands"}
         }
         "meta:Greenland_Eastern"{
-            ld{"Lokaci rana a gabas ta Greeland"}
-            lg{"Lokaci a gabas ta Greeland"}
-            ls{"Lokaci Tsayayye a gabashin ta Greenland"}
+            ld{"Lokacin Rana na Gabashin Greenland"}
+            lg{"Lokacin Gabas na Greenland"}
+            ls{"Tsayayyen Lokacin Gabashin Greenland"}
         }
         "meta:Greenland_Western"{
-            ld{"Lokacin rana a yammacin Greeland"}
-            lg{"Lokaci a yammacin Greeland"}
-            ls{"Lokaci Tsayayye a yammacin Greeland"}
+            ld{"Lokacin Rana na Yammacin Greenland"}
+            lg{"Lokacin Yammacin Greenland"}
+            ls{"Tsayayyen Lokacin Yammacin Greenland"}
         }
         "meta:Gulf"{
-            ls{
-                "Gulf Standard Time [translation hint: translate as just \u0022Gulf T"
-                "ime\u0022]"
-            }
+            ls{"Lokacin Golf"}
+        }
+        "meta:Guyana"{
+            ls{"Lokacin Guyana"}
         }
         "meta:Hawaii_Aleutian"{
-            ld{"Lokaci rana ta Hawaii-Aleutian"}
-            lg{"Lokaci ta Hawaii-Aleutian"}
-            ls{"Ida Lokaci ta Hawaii-Aleutian"}
+            ld{"Lokacin Rana na Hawaii-Aleutian"}
+            lg{"Lokaci na Hawaii-Aleutian"}
+            ls{"Tsayayyen Lokacin Hawaii-Aleutian"}
         }
         "meta:Hong_Kong"{
-            ld{"Hong Kong Summer Time"}
-            lg{"Hong Kong Time"}
-            ls{"Hong Kong Standard Time"}
+            ld{"Lokacin Bazara na Hong Kong"}
+            lg{"Lokacin Hong Kong"}
+            ls{"Tsayayyen Lokacin Hong Kong"}
         }
         "meta:Hovd"{
-            ld{"Hovd Summer Time"}
-            lg{"Hovd Time"}
-            ls{"Hovd Standard Time"}
+            ld{"Lokacin Bazara na Hovd"}
+            lg{"Lokacin Hovd"}
+            ls{"Tsayayyen Lokacin Hovd"}
         }
         "meta:India"{
             ls{"India Standard Time"}
         }
         "meta:Indian_Ocean"{
-            ls{"Indian Ocean Time"}
+            ls{"Lokacin Tekun Indiya"}
         }
         "meta:Indochina"{
-            ls{"Indochina Time"}
+            ls{"Lokacin Indochina"}
         }
         "meta:Indonesia_Central"{
-            ls{"Central Indonesia Time"}
+            ls{"Lokacin Indonesia ta Tsakiya"}
         }
         "meta:Indonesia_Eastern"{
             ls{"Eastern Indonesia Time"}
         }
         "meta:Indonesia_Western"{
-            ls{"Western Indonesia Time"}
+            ls{"Lokacin Yammacin Indonesia"}
         }
         "meta:Iran"{
-            ld{"Iran Daylight Time"}
-            lg{"Iran Time"}
-            ls{"Iran Standard Time"}
+            ld{"Lokacin Rana na Iran"}
+            lg{"Lokacin Iran"}
+            ls{"Tsayayyen Lokacin Iran"}
         }
         "meta:Irkutsk"{
-            ld{"Irkutsk Summer Time"}
-            lg{"Irkutsk Time"}
-            ls{"Irkutsk Standard Time"}
+            ld{"Lokacin Bazara na Irkutsk"}
+            lg{"Lokacin Irkutsk"}
+            ls{"Tsayayyen Lokacin Irkutsk"}
         }
         "meta:Israel"{
             ld{"Israel Daylight Time"}
-            lg{"Israel Time"}
+            lg{"Lokacin Israʼila"}
             ls{"Israel Standard Time"}
         }
         "meta:Japan"{
             ld{"Japan Daylight Time"}
-            lg{"Japan Time"}
+            lg{"Lokacin Japan"}
             ls{"Japan Standard Time"}
         }
         "meta:Kazakhstan_Eastern"{
-            ls{"East Kazakhstan Time"}
+            ls{"Lokacin Gabashin Kazakhstan"}
         }
         "meta:Kazakhstan_Western"{
-            ls{"West Kazakhstan Time"}
+            ls{"Lokacin Yammacin Kazakhstan"}
         }
         "meta:Korea"{
-            ld{"Korean Daylight Time"}
-            lg{"Korean Time"}
-            ls{"Korean Standard Time"}
+            ld{"Lokacin Rana na Koriya"}
+            lg{"Lokacin Koriya"}
+            ls{"Tsayayyen Lokacin Koriya"}
         }
         "meta:Kosrae"{
-            ls{"Kosrae Time"}
+            ls{"Lokacin Kosrae"}
         }
         "meta:Krasnoyarsk"{
-            ld{"Krasnoyarsk Summer Time"}
-            lg{"Krasnoyarsk Time"}
-            ls{"Krasnoyarsk Standard Time"}
+            ld{"Lokacin Bazara na Krasnoyarsk"}
+            lg{"Lokacin Krasnoyarsk"}
+            ls{"Tsayayyen Lokacin Krasnoyarsk"}
         }
         "meta:Kyrgystan"{
-            ls{"Kyrgyzstan Time"}
+            ls{"Lokacin Kazakhstan"}
         }
         "meta:Line_Islands"{
-            ls{"Line Islands Time"}
+            ls{"Lokacin Line Islands"}
         }
         "meta:Lord_Howe"{
-            ld{"Lord Howe Daylight Time"}
-            lg{"Lord Howe Time"}
-            ls{"Lord Howe Standard Time"}
+            ld{"Lokacin Rana na Vote Lord Howe"}
+            lg{"Lokacin Lord Howe"}
+            ls{"Tsayayyen Lokacin Lord Howe"}
         }
         "meta:Macquarie"{
-            ls{"Macquarie Island Time"}
+            ls{"Lokacin Macquarie Island"}
         }
         "meta:Magadan"{
-            ld{"Magadan Summer Time"}
-            lg{"Magadan Time"}
-            ls{"Magadan Standard Time"}
+            ld{"Lokacin Bazara na Magadan"}
+            lg{"Lokacin Magadan"}
+            ls{"Tsayayyen Lokacin Magadan"}
         }
         "meta:Malaysia"{
-            ls{"Malaysia Time"}
+            ls{"Lokacin Malaysia"}
         }
         "meta:Maldives"{
-            ls{"Maldives Time"}
+            ls{"Lokacin Maldives"}
         }
         "meta:Marquesas"{
-            ls{"Marquesas Time"}
+            ls{"Lokacin Marquesas"}
         }
         "meta:Marshall_Islands"{
-            ls{"Marshall Islands Time"}
+            ls{"Lokacin Marshall Islands"}
         }
         "meta:Mauritius"{
-            ld{"Bazarar Mauritius"}
+            ld{"Lokacin Bazara na Mauritius"}
             lg{"Lokacin Mauritius"}
-            ls{"TsaTsayayyar Lokacin Mauritius"}
+            ls{"Tsayayyen Lokacin Mauritius"}
         }
         "meta:Mawson"{
-            ls{"Mawson Time"}
+            ls{"Lokacin Mawson"}
         }
         "meta:Mexico_Northwest"{
-            ld{"Lokacin rana na arewa maso gabashin Mesiko"}
-            lg{"Lokacin arewa maso gabashin mesiko"}
-            ls{"Lokaci Tsayayye na arewa maso gabashin Mesiko"}
+            ld{"Lokacin Rana na Arewa Maso Yammacin Mekziko"}
+            lg{"Lokacin Arewa Maso Yammacin Mekziko"}
+            ls{"Tsayayyen Lokacin Arewa Maso Yammacin Mekziko"}
         }
         "meta:Mexico_Pacific"{
-            ld{"Lokaci na rana na Mesiko Pacific"}
-            lg{"Lokaci na Mesiko Pacific"}
-            ls{"Lokaci Tsayayye na Mesiko Pacific"}
+            ld{"Lokacin Rana na Mekziko Pacific"}
+            lg{"Lokacin Mekziko Pacific"}
+            ls{"Tsayayyen Lokacin Mekziko Pacific"}
         }
         "meta:Mongolia"{
-            ld{"Ulaanbaatar Summer Time"}
-            lg{"Ulaanbaatar Time"}
-            ls{"Ulaanbaatar Standard Time"}
+            ld{"Lokacin Bazara na Ulaanbaatar"}
+            lg{"Lokacin Ulaanbaatar"}
+            ls{"Tsayayyen Lokacin Ulaanbaatar"}
         }
         "meta:Moscow"{
-            ld{"Moscow Summer Time"}
-            lg{"Moscow Time"}
-            ls{"Moscow Standard Time"}
+            ld{"Lokacin Bazara na Moscow"}
+            lg{"Lokacin Moscow"}
+            ls{"Tsayayyen Lokacin Moscow"}
         }
         "meta:Myanmar"{
-            ls{"Myanmar Time"}
+            ls{"Lokacin Myanmar"}
         }
         "meta:Nauru"{
-            ls{"Nauru Time"}
+            ls{"Lokacin Nauru"}
         }
         "meta:Nepal"{
-            ls{"Nepal Time"}
+            ls{"Lokacin Nepal"}
         }
         "meta:New_Caledonia"{
-            ld{"New Caledonia Summer Time"}
-            lg{"New Caledonia Time"}
-            ls{"New Caledonia Standard Time"}
+            ld{"Lokacin Bazara na New Caledonia"}
+            lg{"Lokacin New Caledonia"}
+            ls{"Tsayayyen Lokacin New Caledonia"}
         }
         "meta:New_Zealand"{
-            ld{"New Zealand Daylight Time"}
-            lg{"New Zealand Time"}
-            ls{"New Zealand Standard Time"}
+            ld{"Lokacin Rana na New Zealand"}
+            lg{"Lokacin New Zealand"}
+            ls{"Tsayayyen Lokacin New Zealand"}
         }
         "meta:Newfoundland"{
             ld{"Lokaci rana ta Newfoundland"}
-            lg{"Lokaci ta Newfoundland"}
+            lg{"Lokacin Newfoundland"}
             ls{"Lokaci Tsayayye ta Newfoundland"}
         }
         "meta:Niue"{
-            ls{"Niue Time"}
+            ls{"Lokacin Niue"}
         }
         "meta:Norfolk"{
-            ld{"Norfolk Island Daylight Time"}
-            lg{"Norfolk Island Time"}
-            ls{"Norfolk Island Standard Time"}
+            ld{"Lokacin Rana na Norfolk Island"}
+            lg{"Lokacin Norfolk Island"}
+            ls{"Tsayayyen Lokacin Norfolk Island"}
+        }
+        "meta:Noronha"{
+            ld{"Lokacin Bazara na Fernando de Noronha"}
+            lg{"Lokacin Fernando de Noronha"}
+            ls{"Tsayayyen Lokacin Fernando de Noronha"}
         }
         "meta:Novosibirsk"{
-            ld{"Novosibirsk Summer Time"}
-            lg{"Novosibirsk Time"}
+            ld{"Lokacin Bazara na Novosibirsk"}
+            lg{"Lokacin Novosibirsk"}
             ls{"Novosibirsk Standard Time"}
         }
         "meta:Omsk"{
-            ld{"Omsk Summer Time"}
-            lg{"Omsk Time"}
-            ls{"Omsk Standard Time"}
+            ld{"Lokacin Bazara na Omsk"}
+            lg{"Lokacin Omsk"}
+            ls{"Tsayayyen Lokacin Omsk"}
         }
         "meta:Pakistan"{
-            ld{"Pakistan Summer Time"}
-            lg{"Pakistan Time"}
-            ls{"Pakistan Standard Time"}
+            ld{"Lokacin Bazara na Pakistan"}
+            lg{"Lokacin Pakistan"}
+            ls{"Tsayayyen Lokacin Pakistan"}
         }
         "meta:Palau"{
-            ls{"Palau Time"}
+            ls{"Lokacin Palau"}
         }
         "meta:Papua_New_Guinea"{
-            ls{"Papua New Guinea Time"}
+            ls{"Lokacin Papua New Guinea"}
+        }
+        "meta:Paraguay"{
+            ld{"Lokacin Bazara na Paraguay"}
+            lg{"Lokacin Paraguay"}
+            ls{"Tsayayyen Lokacin Paraguay"}
+        }
+        "meta:Peru"{
+            ld{"Lokacin Bazara na Peru"}
+            lg{"Lokacin Peru"}
+            ls{"Tsayayyen Lokacin Peru"}
         }
         "meta:Philippines"{
-            ld{"Philippine Summer Time"}
-            lg{"Philippine Time"}
-            ls{"Philippine Standard Time"}
+            ld{"Lokacin Bazara na Philippine"}
+            lg{"Lokacin Philippine"}
+            ls{"Tsayayyen Lokacin Philippine"}
         }
         "meta:Phoenix_Islands"{
-            ls{"Phoenix Islands Time"}
+            ls{"Lokacin Phoenix Islands"}
         }
         "meta:Pierre_Miquelon"{
-            ld{"Lokaci rana ta St. Pierre da Miquelon"}
-            lg{"Lokaci ta St. Pierre da Miquelon"}
-            ls{"Lokaci tsayayye St. Pierre da Miquelon"}
+            ld{"Lokacin Rana na St. Pierre da Miquelon"}
+            lg{"Lokacin St. Pierre da Miquelon"}
+            ls{"Tsayayyen Lokacin St. Pierre da Miquelon"}
         }
         "meta:Pitcairn"{
-            ls{"Pitcairn Time"}
+            ls{"Lokacin Pitcairn"}
         }
         "meta:Ponape"{
-            ls{"Ponape Time"}
+            ls{"Lokacin Ponape"}
         }
         "meta:Pyongyang"{
-            ls{"Pyongyang Time"}
+            ls{"Lokacin Pyongyang"}
         }
         "meta:Reunion"{
-            ls{"Réunion Time"}
+            ls{"Lokacin Réunion"}
         }
         "meta:Rothera"{
-            ls{"Rothera Time"}
+            ls{"Lokacin Rothera"}
         }
         "meta:Sakhalin"{
-            ld{"Sakhalin Summer Time"}
-            lg{"Sakhalin Time"}
-            ls{"Sakhalin Standard Time"}
+            ld{"Lokacin Bazara na Sakhalin"}
+            lg{"Lokacin Sakhalin"}
+            ls{"Tsayayyen Lokacin Sakhalin"}
         }
         "meta:Samoa"{
-            ld{"Samoa Daylight Time"}
-            lg{"Samoa Time"}
-            ls{"Samoa Standard Time"}
+            ld{"Lokacin Rana na Vote Samoa"}
+            lg{"Lokacin Samoa"}
+            ls{"Tsayayyen Lokacin Samoa"}
         }
         "meta:Seychelles"{
-            ls{"Seychelles Time"}
+            ls{"Lokacin Seychelles"}
         }
         "meta:Singapore"{
-            ls{"Singapore Standard Time"}
+            ls{"Tsayayyen Lokacin Singapore"}
         }
         "meta:Solomon"{
-            ls{"Solomon Islands Time"}
+            ls{"Lokacin Rana na Solomon"}
+        }
+        "meta:South_Georgia"{
+            ls{"Lokacin Kudancin Georgia"}
+        }
+        "meta:Suriname"{
+            ls{"Lokacin Suriname"}
         }
         "meta:Syowa"{
-            ls{"Syowa Time"}
+            ls{"Lokacin Syowa"}
         }
         "meta:Tahiti"{
-            ls{"Tahiti Time"}
+            ls{"Lokacin Tahiti"}
         }
         "meta:Taipei"{
-            ld{"Taipei Daylight Time"}
-            lg{"Taipei Time"}
-            ls{"Taipei Standard Time"}
+            ld{"Lokacin Rana na Taipei"}
+            lg{"Lokacin Taipei"}
+            ls{"Tsayayyen Lokacin Taipei"}
         }
         "meta:Tajikistan"{
-            ls{"Tajikistan Time"}
+            ls{"Lokacin Tajikistan"}
         }
         "meta:Tokelau"{
             ls{"Tokelau Time"}
         }
         "meta:Tonga"{
-            ld{"Tonga Summer Time"}
-            lg{"Tonga Time"}
-            ls{"Tonga Standard Time"}
+            ld{"Lokacin Bazara na Tonga"}
+            lg{"Lokacin Tonga"}
+            ls{"Tsayayyen Lokacin Tonga"}
         }
         "meta:Truk"{
-            ls{"Chuuk Time"}
+            ls{"Lokacin Chuuk"}
         }
         "meta:Turkmenistan"{
             ld{"Turkmenistan Summer Time"}
-            lg{"Turkmenistan Time"}
-            ls{"Turkmenistan Standard Time"}
+            lg{"Lokacin Turkmenistan"}
+            ls{"Tsayayyen Lokacin Turkmenistan"}
         }
         "meta:Tuvalu"{
-            ls{"Tuvalu Time"}
+            ls{"Lokacin Tuvalu"}
+        }
+        "meta:Uruguay"{
+            ld{"Lokacin Bazara na Uruguay"}
+            lg{"Lokacin Uruguay"}
+            ls{"Tsayayyen Lokacin Uruguay"}
         }
         "meta:Uzbekistan"{
-            ld{"Uzbekistan Summer Time"}
-            lg{"Uzbekistan Time"}
-            ls{"Uzbekistan Standard Time"}
+            ld{"Lokacin Bazara na Uzbekistan"}
+            lg{"Lokacin Uzbekistan"}
+            ls{"Tsayayyen Lokacin Uzbekistan"}
         }
         "meta:Vanuatu"{
-            ld{"Vanuatu Summer Time"}
-            lg{"Vanuatu Time"}
-            ls{"Vanuatu Standard Time"}
+            ld{"Lokacin Bazara na Vanuatu"}
+            lg{"Lokacin Vanuatu"}
+            ls{"Tsayayyen Lokacin Vanuatu"}
+        }
+        "meta:Venezuela"{
+            ls{"Lokacin Venezuela"}
         }
         "meta:Vladivostok"{
-            ld{"Vladivostok Summer Time"}
-            lg{"Vladivostok Time"}
-            ls{"Vladivostok Standard Time"}
+            ld{"Lokacin Bazara na Vladivostok"}
+            lg{"Lokacin Vladivostok"}
+            ls{"Tsayayyen Lokacin Vladivostok"}
         }
         "meta:Volgograd"{
-            ld{"Volgograd Summer Time"}
-            lg{"Volgograd Time"}
-            ls{"Volgograd Standard Time"}
+            ld{"Lokacin Bazara na Volgograd"}
+            lg{"Lokacin Volgograd"}
+            ls{"Tsayayyen Lokacin Volgograd"}
         }
         "meta:Vostok"{
-            ls{"Vostok Time"}
+            ls{"Lokacin Vostok"}
         }
         "meta:Wake"{
-            ls{"Wake Island Time"}
+            ls{"Lokacin Wake Island"}
         }
         "meta:Wallis"{
-            ls{"Wallis & Futuna Time"}
+            ls{"Lokacin Wallis da Futuna"}
         }
         "meta:Yakutsk"{
-            ld{"Yakutsk Summer Time"}
-            lg{"Yakutsk Time"}
-            ls{"Yakutsk Standard Time"}
+            ld{"Lokacin Bazara na Yakutsk"}
+            lg{"Lokacin Yakutsk"}
+            ls{"Tsayayyen Lokacin Yakutsk"}
         }
         "meta:Yekaterinburg"{
-            ld{"Yekaterinburg Summer Time"}
-            lg{"Yekaterinburg Time"}
-            ls{"Yekaterinburg Standard Time"}
+            ld{"Lokacin Bazara na Yekaterinburg"}
+            lg{"Lokacin Yekaterinburg"}
+            ls{"Tsayayyen Lokacin Yekaterinburg"}
         }
         regionFormat{"{0} Lokaci"}
-        regionFormatDaylight{"{0} Lokacin rana"}
-        regionFormatStandard{"{0} Daidai ta ce lokaci"}
+        regionFormatDaylight{"{0} Lokacin Rana"}
+        regionFormatStandard{"{0} Daidaitaccen Lokaci"}
     }
 }
diff --git a/icu4c/source/data/zone/haw.txt b/icu4c/source/data/zone/haw.txt
index 53439a6..f0f669a 100644
--- a/icu4c/source/data/zone/haw.txt
+++ b/icu4c/source/data/zone/haw.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 haw{
-    Version{"37"}
     zoneStrings{
         "Pacific:Honolulu"{
             sd{"HDT"}
diff --git a/icu4c/source/data/zone/he.txt b/icu4c/source/data/zone/he.txt
index 0490cd4..692c326 100644
--- a/icu4c/source/data/zone/he.txt
+++ b/icu4c/source/data/zone/he.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 he{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"אביג׳אן"}
@@ -613,7 +613,7 @@
             ec{"דומון ד׳אורוויל"}
         }
         "Antarctica:Macquarie"{
-            ec{"מקרי"}
+            ec{"מקווארי"}
         }
         "Antarctica:Mawson"{
             ec{"מוסון"}
diff --git a/icu4c/source/data/zone/he_IL.txt b/icu4c/source/data/zone/he_IL.txt
index 7103953..21ee915 100644
--- a/icu4c/source/data/zone/he_IL.txt
+++ b/icu4c/source/data/zone/he_IL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/hi.txt b/icu4c/source/data/zone/hi.txt
index 6763281..f9051bb 100644
--- a/icu4c/source/data/zone/hi.txt
+++ b/icu4c/source/data/zone/hi.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hi{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"अबिदजान"}
@@ -1219,6 +1219,8 @@
         }
         "Pacific:Honolulu"{
             ec{"होनोलुलु"}
+            sg{"एचएसटी"}
+            ss{"एचएसटी"}
         }
         "Pacific:Johnston"{
             ec{"जॉनस्टन"}
diff --git a/icu4c/source/data/zone/hr.txt b/icu4c/source/data/zone/hr.txt
index 113cc64..064b41c 100644
--- a/icu4c/source/data/zone/hr.txt
+++ b/icu4c/source/data/zone/hr.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hr{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -898,7 +898,7 @@
             ec{"Kanari"}
         }
         "Atlantic:Cape_Verde"{
-            ec{"Zelenortski Otoci"}
+            ec{"Cape Verde"}
         }
         "Atlantic:Faeroe"{
             ec{"Ferojski otoci"}
@@ -1149,13 +1149,13 @@
             ec{"Chagos"}
         }
         "Indian:Christmas"{
-            ec{"Božićni otok"}
+            ec{"Christmas"}
         }
         "Indian:Cocos"{
-            ec{"Kokosovi otoci"}
+            ec{"Cocos"}
         }
         "Indian:Comoro"{
-            ec{"Komori"}
+            ec{"Comoro"}
         }
         "Indian:Kerguelen"{
             ec{"Kerguelen"}
@@ -1188,7 +1188,7 @@
             ec{"Chatham"}
         }
         "Pacific:Easter"{
-            ec{"Uskršnji otok"}
+            ec{"Easter"}
         }
         "Pacific:Efate"{
             ec{"Efate"}
@@ -1821,10 +1821,10 @@
             ls{"standardno vrijeme za Sveti Petar i Mikelon"}
         }
         "meta:Pitcairn"{
-            ls{"vrijeme Pitcairna"}
+            ls{"pitcairnsko vrijeme"}
         }
         "meta:Ponape"{
-            ls{"vrijeme Ponapea"}
+            ls{"ponapejsko vrijeme"}
         }
         "meta:Pyongyang"{
             ls{"pjongjanško vrijeme"}
diff --git a/icu4c/source/data/zone/hsb.txt b/icu4c/source/data/zone/hsb.txt
index 53928ac..3e13da2 100644
--- a/icu4c/source/data/zone/hsb.txt
+++ b/icu4c/source/data/zone/hsb.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hsb{
-    Version{"37"}
     zoneStrings{
         "Africa:Accra"{
             ec{"Akkra"}
diff --git a/icu4c/source/data/zone/hu.txt b/icu4c/source/data/zone/hu.txt
index 753ce49..611c88c 100644
--- a/icu4c/source/data/zone/hu.txt
+++ b/icu4c/source/data/zone/hu.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hu{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -955,7 +955,7 @@
             ec{"Sydney"}
         }
         "Etc:UTC"{
-            ls{"Koordinált világidő"}
+            ls{"koordinált világidő"}
         }
         "Etc:Unknown"{
             ec{"Ismeretlen város"}
diff --git a/icu4c/source/data/zone/hy.txt b/icu4c/source/data/zone/hy.txt
index c3f5abf..22b2747 100644
--- a/icu4c/source/data/zone/hy.txt
+++ b/icu4c/source/data/zone/hy.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 hy{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Աբիջան"}
diff --git a/icu4c/source/data/zone/ia.txt b/icu4c/source/data/zone/ia.txt
index 6e38b76..be55659 100644
--- a/icu4c/source/data/zone/ia.txt
+++ b/icu4c/source/data/zone/ia.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ia{
-    Version{"37"}
     zoneStrings{
         "Africa:Ceuta"{
             ec{"Ceuta"}
diff --git a/icu4c/source/data/zone/id.txt b/icu4c/source/data/zone/id.txt
index f71089c..bfd5f1d 100644
--- a/icu4c/source/data/zone/id.txt
+++ b/icu4c/source/data/zone/id.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 id{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -1663,7 +1663,7 @@
             ls{"Waktu Standar Krasnoyarsk"}
         }
         "meta:Kyrgystan"{
-            ls{"Waktu Kirghizia"}
+            ls{"Waktu Kirgizstan"}
         }
         "meta:Lanka"{
             ls{"Waktu Lanka"}
@@ -1725,9 +1725,9 @@
             ls{"Waktu Standar Ulan Bator"}
         }
         "meta:Moscow"{
-            ld{"Waktu Musim Panas Moskwa"}
-            lg{"Waktu Moskwa"}
-            ls{"Waktu Standar Moskwa"}
+            ld{"Waktu Musim Panas Moskow"}
+            lg{"Waktu Moskow"}
+            ls{"Waktu Standar Moskow"}
         }
         "meta:Myanmar"{
             ls{"Waktu Myanmar"}
@@ -1757,9 +1757,9 @@
             ls{"Waktu Niue"}
         }
         "meta:Norfolk"{
-            ld{"Waktu Musim Panas Kepulauan Norfolk"}
-            lg{"Waktu Kepulauan Norfolk"}
-            ls{"Waktu Standar Kepulauan Norfolk"}
+            ld{"Waktu Musim Panas Pulau Norfolk"}
+            lg{"Waktu Pulau Norfolk"}
+            ls{"Waktu Standar Pulau Norfolk"}
         }
         "meta:Noronha"{
             ld{"Waktu Musim Panas Fernando de Noronha"}
diff --git a/icu4c/source/data/zone/id_ID.txt b/icu4c/source/data/zone/id_ID.txt
index 20daa23..63f19a2 100644
--- a/icu4c/source/data/zone/id_ID.txt
+++ b/icu4c/source/data/zone/id_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/ig.txt b/icu4c/source/data/zone/ig.txt
index 863520b..76744f5 100644
--- a/icu4c/source/data/zone/ig.txt
+++ b/icu4c/source/data/zone/ig.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ig{
-    Version{"37"}
     zoneStrings{
         "America:Araguaina"{
             ec{"Araguaina"}
@@ -220,6 +220,9 @@
             lg{"Oge Mpaghara Ọwụwa Anyanwụ Europe"}
             ls{"Oge Izugbe Mpaghara Ọwụwa Anyanwụ Europe"}
         }
+        "meta:Europe_Further_Eastern"{
+            ls{"Further-eastern European Time"}
+        }
         "meta:Europe_Western"{
             ld{"Oge Okpomọkụ Mpaghara Ọdịda Anyanwụ Europe"}
             lg{"Oge Mpaghara Ọdịda Anyanwụ Europe"}
diff --git a/icu4c/source/data/zone/ii.txt b/icu4c/source/data/zone/ii.txt
index 6eb8add..0d48243 100644
--- a/icu4c/source/data/zone/ii.txt
+++ b/icu4c/source/data/zone/ii.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ii{
-    Version{"37"}
     zoneStrings{
         "Etc:Unknown"{
             ec{"ꅉꀋꐚꌠ"}
diff --git a/icu4c/source/data/zone/in.txt b/icu4c/source/data/zone/in.txt
index 0233523..e2df169 100644
--- a/icu4c/source/data/zone/in.txt
+++ b/icu4c/source/data/zone/in.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 in{
     "%%ALIAS"{"id"}
 }
diff --git a/icu4c/source/data/zone/in_ID.txt b/icu4c/source/data/zone/in_ID.txt
index acec72c..03f2387 100644
--- a/icu4c/source/data/zone/in_ID.txt
+++ b/icu4c/source/data/zone/in_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 in_ID{
     "%%ALIAS"{"id_ID"}
 }
diff --git a/icu4c/source/data/zone/is.txt b/icu4c/source/data/zone/is.txt
index 8804f37..8fc3b11 100644
--- a/icu4c/source/data/zone/is.txt
+++ b/icu4c/source/data/zone/is.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 is{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -1107,7 +1107,7 @@
             ec{"Tallinn"}
         }
         "Europe:Tirane"{
-            ec{"Tirane"}
+            ec{"Tírana"}
         }
         "Europe:Ulyanovsk"{
             ec{"Ulyanovsk"}
diff --git a/icu4c/source/data/zone/it.txt b/icu4c/source/data/zone/it.txt
index 217a714..88ee9bc 100644
--- a/icu4c/source/data/zone/it.txt
+++ b/icu4c/source/data/zone/it.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 it{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
diff --git a/icu4c/source/data/zone/iw.txt b/icu4c/source/data/zone/iw.txt
index d59865d..4aa2f62 100644
--- a/icu4c/source/data/zone/iw.txt
+++ b/icu4c/source/data/zone/iw.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 iw{
     "%%ALIAS"{"he"}
 }
diff --git a/icu4c/source/data/zone/iw_IL.txt b/icu4c/source/data/zone/iw_IL.txt
index cf1666a..984aefd 100644
--- a/icu4c/source/data/zone/iw_IL.txt
+++ b/icu4c/source/data/zone/iw_IL.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 iw_IL{
     "%%ALIAS"{"he_IL"}
 }
diff --git a/icu4c/source/data/zone/ja.txt b/icu4c/source/data/zone/ja.txt
index b593bb0..8f69353 100644
--- a/icu4c/source/data/zone/ja.txt
+++ b/icu4c/source/data/zone/ja.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ja{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"アビジャン"}
diff --git a/icu4c/source/data/zone/jgo.txt b/icu4c/source/data/zone/jgo.txt
index 4ee7fec..acc553a 100644
--- a/icu4c/source/data/zone/jgo.txt
+++ b/icu4c/source/data/zone/jgo.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jgo{
-    Version{"37"}
     zoneStrings{
         fallbackFormat{"{1} ({0})"}
         gmtFormat{"GMT{0}"}
diff --git a/icu4c/source/data/zone/jmc.txt b/icu4c/source/data/zone/jmc.txt
index a67dfa4..425a4ab 100644
--- a/icu4c/source/data/zone/jmc.txt
+++ b/icu4c/source/data/zone/jmc.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jmc{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/jv.txt b/icu4c/source/data/zone/jv.txt
index 233e673..92c5792 100644
--- a/icu4c/source/data/zone/jv.txt
+++ b/icu4c/source/data/zone/jv.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 jv{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
diff --git a/icu4c/source/data/zone/ka.txt b/icu4c/source/data/zone/ka.txt
index 45bde00..25bb41d 100644
--- a/icu4c/source/data/zone/ka.txt
+++ b/icu4c/source/data/zone/ka.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ka{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"აბიჯანი"}
@@ -985,7 +985,7 @@
             ec{"ბრიუსელი"}
         }
         "Europe:Bucharest"{
-            ec{"ბუხარესტი"}
+            ec{"ბუქარესტი"}
         }
         "Europe:Budapest"{
             ec{"ბუდაპეშტი"}
@@ -1116,7 +1116,7 @@
             ec{"უჟგოროდი"}
         }
         "Europe:Vaduz"{
-            ec{"ვადუზი"}
+            ec{"ვადუცი"}
         }
         "Europe:Vatican"{
             ec{"ვატიკანი"}
diff --git a/icu4c/source/data/zone/kab.txt b/icu4c/source/data/zone/kab.txt
index 75a697e..f76905a 100644
--- a/icu4c/source/data/zone/kab.txt
+++ b/icu4c/source/data/zone/kab.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kab{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/kam.txt b/icu4c/source/data/zone/kam.txt
index f9443d0..26e23bc 100644
--- a/icu4c/source/data/zone/kam.txt
+++ b/icu4c/source/data/zone/kam.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kam{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/kde.txt b/icu4c/source/data/zone/kde.txt
index a7179f7..ce04321 100644
--- a/icu4c/source/data/zone/kde.txt
+++ b/icu4c/source/data/zone/kde.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kde{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/kea.txt b/icu4c/source/data/zone/kea.txt
index f1c39b5..ce9fe08 100644
--- a/icu4c/source/data/zone/kea.txt
+++ b/icu4c/source/data/zone/kea.txt
@@ -1,14 +1,38 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kea{
-    Version{"37"}
     zoneStrings{
+        "America:Adak"{
+            ec{"Adaki"}
+        }
+        "America:Anchorage"{
+            ec{"Ankoraji"}
+        }
+        "America:Anguilla"{
+            ec{"Angila"}
+        }
+        "America:Bahia_Banderas"{
+            ec{"Baía di Banderas"}
+        }
+        "America:Barbados"{
+            ec{"Barbadus"}
+        }
+        "America:Belize"{
+            ec{"Belizi"}
+        }
         "America:Blanc-Sablon"{
             ec{"Blank-Sablon"}
         }
+        "America:Boise"{
+            ec{"Boiz"}
+        }
         "America:Cancun"{
             ec{"Kankun"}
         }
+        "America:Cayman"{
+            ec{"Kaiman"}
+        }
         "America:Chicago"{
             ec{"Xikagu"}
         }
@@ -18,8 +42,92 @@
         "America:Costa_Rica"{
             ec{"Kosta Rika"}
         }
+        "America:Creston"{
+            ec{"Kréston"}
+        }
+        "America:Curacao"{
+            ec{"Kurasau"}
+        }
+        "America:Dominica"{
+            ec{"Dominika"}
+        }
+        "America:Grenada"{
+            ec{"Granada"}
+        }
+        "America:Guadeloupe"{
+            ec{"Guadalupi"}
+        }
+        "America:Guatemala"{
+            ec{"Guatimala"}
+        }
+        "America:Havana"{
+            ec{"Avana"}
+        }
         "America:Indianapolis"{
-            ec{"Indianapolis"}
+            ec{"Indianápolis"}
+        }
+        "America:Jamaica"{
+            ec{"Jamaika"}
+        }
+        "America:Managua"{
+            ec{"Manágua"}
+        }
+        "America:Martinique"{
+            ec{"Martinika"}
+        }
+        "America:Merida"{
+            ec{"Mérida"}
+        }
+        "America:Mexico_City"{
+            ec{"Sidadi di Méxiku"}
+        }
+        "America:Miquelon"{
+            ec{"Mikelon"}
+        }
+        "America:New_York"{
+            ec{"Nova Iorki"}
+        }
+        "America:North_Dakota:Beulah"{
+            ec{"Beulah, Dakota di Norti"}
+        }
+        "America:North_Dakota:Center"{
+            ec{"Center, Dakota di Norti"}
+        }
+        "America:North_Dakota:New_Salem"{
+            ec{"New Salem, Dakota di Norti"}
+        }
+        "America:Panama"{
+            ec{"Panamá"}
+        }
+        "America:Port_of_Spain"{
+            ec{"Portu di Spanha"}
+        }
+        "America:Puerto_Rico"{
+            ec{"Portu Riku"}
+        }
+        "America:Santo_Domingo"{
+            ec{"Santu Dumingu"}
+        }
+        "America:St_Barthelemy"{
+            ec{"San Bartolomeu"}
+        }
+        "America:St_Kitts"{
+            ec{"San Kristovan"}
+        }
+        "America:St_Lucia"{
+            ec{"Santa Lúsia"}
+        }
+        "America:St_Vincent"{
+            ec{"San Bisenti"}
+        }
+        "America:Toronto"{
+            ec{"Torontu"}
+        }
+        "America:Vancouver"{
+            ec{"Vankuver"}
+        }
+        "America:Winnipeg"{
+            ec{"Uínipeg"}
         }
         "Atlantic:Bermuda"{
             ec{"Bermuda"}
@@ -128,6 +236,41 @@
         "meta:GMT"{
             ls{"Ora Médiu di Greenwich"}
         }
+        "meta:Greenland_Eastern"{
+            ld{"Ora di Veron di Gronelándia Oriental"}
+            lg{"Ora di Gronelándia Oriental"}
+            ls{"Ora Padron di Gronelándia Oriental"}
+        }
+        "meta:Greenland_Western"{
+            ld{"Ora di Veron di Gronelándia Osidental"}
+            lg{"Ora di Gronelándia Osidental"}
+            ls{"Ora Padron di Gronelándia Osidental"}
+        }
+        "meta:Hawaii_Aleutian"{
+            ld{"Ora di Veron di Avaí i Aleutas"}
+            lg{"Ora di Avaí i Aleutas"}
+            ls{"Ora Padron di Avaí i Aleutas"}
+        }
+        "meta:Mexico_Northwest"{
+            ld{"Ora di Veron di Noroesti di Méxiku"}
+            lg{"Ora di Noroesti di Méxiku"}
+            ls{"Ora Padron di Noroesti di Méxiku"}
+        }
+        "meta:Mexico_Pacific"{
+            ld{"Ora di Veron di Pasífiku Mexikanu"}
+            lg{"Ora di Pasífiku Mexikanu"}
+            ls{"Ora Padron di Pasífiku Mexikanu"}
+        }
+        "meta:Newfoundland"{
+            ld{"Ora di Veron di Tera Nova"}
+            lg{"Ora di Tera Nova"}
+            ls{"Ora Padron di Tera Nova"}
+        }
+        "meta:Pierre_Miquelon"{
+            ld{"Ora di Veron di San Pedru i Mikelon"}
+            lg{"Ora di San Pedru i Mikelon"}
+            ls{"Ora Padron di San Pedru i Mikelon"}
+        }
         fallbackFormat{"{1} ({0})"}
         gmtFormat{"GMT{0}"}
         gmtZeroFormat{"GMT"}
diff --git a/icu4c/source/data/zone/khq.txt b/icu4c/source/data/zone/khq.txt
index a1314c4..a225321 100644
--- a/icu4c/source/data/zone/khq.txt
+++ b/icu4c/source/data/zone/khq.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 khq{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/ki.txt b/icu4c/source/data/zone/ki.txt
index 9d196a4..b481838 100644
--- a/icu4c/source/data/zone/ki.txt
+++ b/icu4c/source/data/zone/ki.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ki{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/kk.txt b/icu4c/source/data/zone/kk.txt
index 1a493b7..57ab2d0 100644
--- a/icu4c/source/data/zone/kk.txt
+++ b/icu4c/source/data/zone/kk.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kk{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Абиджан"}
diff --git a/icu4c/source/data/zone/kkj.txt b/icu4c/source/data/zone/kkj.txt
index 4eaaba5..dd77640 100644
--- a/icu4c/source/data/zone/kkj.txt
+++ b/icu4c/source/data/zone/kkj.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kkj{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/kl.txt b/icu4c/source/data/zone/kl.txt
index c29bc16..b9e6168 100644
--- a/icu4c/source/data/zone/kl.txt
+++ b/icu4c/source/data/zone/kl.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kl{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/kln.txt b/icu4c/source/data/zone/kln.txt
index 6ac43c2..0db23ba 100644
--- a/icu4c/source/data/zone/kln.txt
+++ b/icu4c/source/data/zone/kln.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kln{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/km.txt b/icu4c/source/data/zone/km.txt
index 64d6927..899c7fa 100644
--- a/icu4c/source/data/zone/km.txt
+++ b/icu4c/source/data/zone/km.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 km{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"អាប៊ីដ្យាន"}
@@ -1010,7 +1010,7 @@
             ec{"ហ្គេនស៊ី"}
         }
         "Europe:Helsinki"{
-            ec{"ហែលស៊ិងគី"}
+            ec{"ហែលស៊ិនគី"}
         }
         "Europe:Isle_of_Man"{
             ec{"អែលអុហ្វម៉ែន"}
@@ -1074,7 +1074,7 @@
             ec{"ប្រាក"}
         }
         "Europe:Riga"{
-            ec{"រីហ្គា"}
+            ec{"រីហ្កា"}
         }
         "Europe:Rome"{
             ec{"រ៉ូម"}
@@ -1335,9 +1335,9 @@
             ls{"ម៉ោងស្តង់ដារ​នៅតំបន់ភ្នំនៃទ្វីប​អាមេរិក​​​ខាង​ជើង"}
         }
         "meta:America_Pacific"{
-            ld{"ម៉ោង​​ពេលថ្ងៃនៅទ្វីប​អាមរិក​ខាង​ជើងភាគខាងលិច"}
-            lg{"ម៉ោង​​នៅទ្វីប​អាមរិក​ខាង​ជើងភាគខាងលិច"}
-            ls{"ម៉ោងស្តង់ដារ​​​នៅទ្វីប​អាមរិក​ខាង​ជើងភាគខាងលិច"}
+            ld{"ម៉ោងពេលថ្ងៃនៅប៉ាស៊ីហ្វិកអាមេរិក"}
+            lg{"ម៉ោងនៅប៉ាស៊ីហ្វិកអាមេរិក"}
+            ls{"ម៉ោងស្ដង់ដារនៅប៉ាស៊ីហ្វិកអាមេរិក"}
         }
         "meta:Apia"{
             ld{"ម៉ោង​ពេល​ថ្ងៃ​នៅ​អាប្យា"}
@@ -1711,7 +1711,7 @@
         }
         "meta:Norfolk"{
             ld{"ម៉ោងនៅ​ណ័រហ្វក់នា​រដូវ​ក្ដៅ"}
-            lg{"ម៉ោង​នៅ​កោះ​ន័រហ្វក់"}
+            lg{"ម៉ោង​នៅ​កោះ​ណ័រហ្វក់"}
             ls{"ម៉ោង​ស្ដង់ដារ​នៅ​ណ័រហ្វក់"}
         }
         "meta:Noronha"{
diff --git a/icu4c/source/data/zone/kn.txt b/icu4c/source/data/zone/kn.txt
index 02c0bd8..6e034f5 100644
--- a/icu4c/source/data/zone/kn.txt
+++ b/icu4c/source/data/zone/kn.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kn{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"ಅಬಿದ್‌ಜನ್"}
@@ -850,7 +850,7 @@
             ec{"ತಾಶ್ಕೆಂಟ್"}
         }
         "Asia:Tbilisi"{
-            ec{"ತಿಬಿಲಿಸಿ"}
+            ec{"ಟಿಬಿಲಿಸಿ"}
         }
         "Asia:Tehran"{
             ec{"ತೆಹ್ರಾನ್"}
@@ -865,7 +865,7 @@
             ec{"ಟೋಮ್‌ಸ್ಕ್"}
         }
         "Asia:Ulaanbaatar"{
-            ec{"ಉಲಾನ್‍ಬಾತರ್"}
+            ec{"ಉಲಾನ್ ಬತೊರ್"}
         }
         "Asia:Urumqi"{
             ec{"ಉರುಮ್‍ಕಿ"}
@@ -886,7 +886,7 @@
             ec{"ಎಕ್ಯಾಟೆರಿನ್ಬರ್ಗ್"}
         }
         "Asia:Yerevan"{
-            ec{"ಯೆರಿವಾನ್"}
+            ec{"ಯೆರೆವಾನ್"}
         }
         "Atlantic:Azores"{
             ec{"ಅಝೋರಿಸ್"}
@@ -1086,7 +1086,7 @@
             ec{"ಸ್ಯಾನ್ ಮರೀನೊ"}
         }
         "Europe:Sarajevo"{
-            ec{"ಸರಜೆವೊ"}
+            ec{"ಸರಯೇವೊ"}
         }
         "Europe:Saratov"{
             ec{"ಸರಾಟೋವ್"}
@@ -1292,6 +1292,11 @@
         "Pacific:Wallis"{
             ec{"ವ್ಯಾಲಿಸ್"}
         }
+        "meta:Acre"{
+            ld{"ಏಕರ್ ಬೇಸಿಗೆ ಸಮಯ"}
+            lg{"ಏಕರ್ ಸಮಯ"}
+            ls{"ಏಕರ್ ಪ್ರಮಾಣಿತ ಸಮಯ"}
+        }
         "meta:Afghanistan"{
             ls{"ಅಫಘಾನಿಸ್ತಾನ ಸಮಯ"}
         }
@@ -1314,6 +1319,11 @@
             lg{"ಅಲಾಸ್ಕಾ ಸಮಯ"}
             ls{"ಅಲಸ್ಕಾ ಪ್ರಮಾಣಿತ ಸಮಯ"}
         }
+        "meta:Almaty"{
+            ld{"ಆಲ್ಮೇಟಿ ಬೇಸಿಗೆ ಸಮಯ"}
+            lg{"ಆಲ್ಮೇಟಿ ಸಮಯ"}
+            ls{"ಆಲ್ಮೇಟಿ ಪ್ರಮಾಣಿತ ಸಮಯ"}
+        }
         "meta:Amazon"{
             ld{"ಅಮೆಜಾನ್ ಬೇಸಿಗೆ ಸಮಯ"}
             lg{"ಅಮೆಜಾನ್ ಸಮಯ"}
@@ -1349,6 +1359,16 @@
             lg{"ಅಪಿಯಾ ಸಮಯ"}
             ls{"ಅಪಿಯಾ ಪ್ರಮಾಣಿತ ಸಮಯ"}
         }
+        "meta:Aqtau"{
+            ld{"ಅಕ್ಟೌ ಬೇಸಿಗೆ ಸಮಯ"}
+            lg{"ಅಕ್ಟೌ ಸಮಯ"}
+            ls{"ಅಕ್ಟೌ ಪ್ರಮಾಣಿತ ಸಮಯ"}
+        }
+        "meta:Aqtobe"{
+            ld{"ಅಕ್ಟೋಬೆ ಬೇಸಿಗೆ ಸಮಯ"}
+            lg{"ಅಕ್ಟೋಬೆ ಸಮಯ"}
+            ls{"ಅಕ್ಟೋಬೆ ಪ್ರಮಾಣಿತ ಸಮಯ"}
+        }
         "meta:Arabian"{
             ld{"ಅರೇಬಿಯನ್ ಹಗಲು ಸಮಯ"}
             lg{"ಅರೇಬಿಯನ್ ಸಮಯ"}
@@ -1508,9 +1528,9 @@
             ls{"ಪಶ್ಚಿಮ ಯುರೋಪಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯ"}
         }
         "meta:Falkland"{
-            ld{"ಫಾಲ್ಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳ ಬೇಸಿಗೆ ಸಮಯ"}
-            lg{"ಫಾಲ್ಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳ ಸಮಯ"}
-            ls{"ಫಾಲ್ಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳ ಪ್ರಮಾಣಿತ ಸಮಯ"}
+            ld{"ಫಾಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳ ಬೇಸಿಗೆ ಸಮಯ"}
+            lg{"ಫಾಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳ ಸಮಯ"}
+            ls{"ಫಾಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳ ಪ್ರಮಾಣಿತ ಸಮಯ"}
         }
         "meta:Fiji"{
             ld{"ಫಿಜಿ ಬೇಸಿಗೆ ಸಮಯ"}
@@ -1550,6 +1570,9 @@
             lg{"ಪಶ್ಚಿಮ ಗ್ರೀನ್‌ಲ್ಯಾಂಡ್ ಸಮಯ"}
             ls{"ಪಶ್ಚಿಮ ಗ್ರೀನ್‌ಲ್ಯಾಂಡ್ ಪ್ರಮಾಣಿತ ಸಮಯ"}
         }
+        "meta:Guam"{
+            ls{"ಗುವಾಮ್ ಪ್ರಮಾಣಿತ ಸಮಯ"}
+        }
         "meta:Gulf"{
             ls{"ಗಲ್ಫ್ ಪ್ರಮಾಣಿತ ಸಮಯ"}
         }
@@ -1637,6 +1660,9 @@
         "meta:Kyrgystan"{
             ls{"ಕಿರ್ಗಿಸ್ತಾನ್ ಸಮಯ"}
         }
+        "meta:Lanka"{
+            ls{"ಲಂಕಾ ಸಮಯ"}
+        }
         "meta:Line_Islands"{
             ls{"ಲೈನ್ ದ್ವೀಪಗಳ ಸಮಯ"}
         }
@@ -1645,6 +1671,11 @@
             lg{"ಲಾರ್ಡ್ ಹೋವ್ ಸಮಯ"}
             ls{"ಲಾರ್ಡ್ ಹೋವ್ ಪ್ರಮಾಣಿತ ಸಮಯ"}
         }
+        "meta:Macau"{
+            ld{"ಮಕಾವ್ ಬೇಸಿಗೆ ಸಮಯ"}
+            lg{"ಮಕಾವ್ ಸಮಯ"}
+            ls{"ಮಕಾವ್ ಪ್ರಮಾಣಿತ ಸಮಯ"}
+        }
         "meta:Macquarie"{
             ls{"ಮ್ಯಾಕ್‌ಕ್ಯುರೈ ದ್ವೀಪ ಸಮಯ"}
         }
@@ -1684,9 +1715,9 @@
             ls{"ಮೆಕ್ಸಿಕನ್ ಪೆಸಿಫಿಕ್ ಪ್ರಮಾಣಿತ ಸಮಯ"}
         }
         "meta:Mongolia"{
-            ld{"ಉಲನ್ ಬ್ಯಾಟರ್ ಬೇಸಿಗೆ ಸಮಯ"}
-            lg{"ಉಲನ್ ಬ್ಯಾಟರ್ ಸಮಯ"}
-            ls{"ಉಲನ್ ಬ್ಯಾಟರ್ ಪ್ರಮಾಣಿತ ಸಮಯ"}
+            ld{"ಉಲಾನ್ ಬತೊರ್ ಬೇಸಿಗೆ ಸಮಯ"}
+            lg{"ಉಲಾನ್ ಬತೊರ್ ಸಮಯ"}
+            ls{"ಉಲಾನ್ ಬತೊರ್ ಪ್ರಮಾಣಿತ ಸಮಯ"}
         }
         "meta:Moscow"{
             ld{"ಮಾಸ್ಕೋ ಬೇಸಿಗೆ ಸಮಯ"}
@@ -1730,6 +1761,9 @@
             lg{"ಫೆರ್ನಾಂಡೋ ಡೆ ನೊರೊನ್ಹಾ ಸಮಯ"}
             ls{"ಫೆರ್ನಾಂಡೋ ಡೆ ನೊರೊನ್ಹಾ ಪ್ರಮಾಣಿತ ಸಮಯ"}
         }
+        "meta:North_Mariana"{
+            ls{"ಉತ್ತರ ಮರಿಯಾನಾ ದ್ವೀಪಗಳ ಸಮಯ"}
+        }
         "meta:Novosibirsk"{
             ld{"ನೊವೊಸಿಬಿರ್‌ಸ್ಕ್ ಬೇಸಿಗೆ ಸಮಯ"}
             lg{"ನೊವೊಸಿಬಿರ್‌ಸ್ಕ್ ಸಮಯ"}
@@ -1783,6 +1817,11 @@
         "meta:Pyongyang"{
             ls{"ಪ್ಯೊಂಗ್ಯಾಂಗ್ ಸಮಯ"}
         }
+        "meta:Qyzylorda"{
+            ld{"ಕೋಜಿಲೋರ್ಡಾ ಬೇಸಿಗೆ ಸಮಯ"}
+            lg{"ಕೋಜಿಲೋರ್ಡಾ ಸಮಯ"}
+            ls{"ಕೋಜಿಲೋರ್ಡಾ ಪ್ರಮಾಣಿತ ಸಮಯ"}
+        }
         "meta:Reunion"{
             ls{"ರಿಯೂನಿಯನ್ ಸಮಯ"}
         }
diff --git a/icu4c/source/data/zone/ko.txt b/icu4c/source/data/zone/ko.txt
index 7b4ad72..6365cf0 100644
--- a/icu4c/source/data/zone/ko.txt
+++ b/icu4c/source/data/zone/ko.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ko{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"아비장"}
@@ -346,25 +346,25 @@
             ec{"에르모시요"}
         }
         "America:Indiana:Knox"{
-            ec{"인디애나주 녹스"}
+            ec{"인디애나주, 녹스"}
         }
         "America:Indiana:Marengo"{
-            ec{"인디애나주, 마렝고"}
+            ec{"인디애나주, 머렝고"}
         }
         "America:Indiana:Petersburg"{
             ec{"인디애나주, 피츠버그"}
         }
         "America:Indiana:Tell_City"{
-            ec{"인디아나주, 텔시티"}
+            ec{"인디애나주, 텔시티"}
         }
         "America:Indiana:Vevay"{
-            ec{"비비"}
+            ec{"인디애나주, 비비"}
         }
         "America:Indiana:Vincennes"{
-            ec{"인디아나주, 뱅센"}
+            ec{"인디애나주, 빈센스"}
         }
         "America:Indiana:Winamac"{
-            ec{"인디아나주, 워너맥"}
+            ec{"인디애나주, 위너맥"}
         }
         "America:Indianapolis"{
             ec{"인디애나폴리스"}
@@ -478,7 +478,7 @@
             ec{"중부, 노스다코타"}
         }
         "America:North_Dakota:New_Salem"{
-            ec{"노스 다코타주, 뉴살렘"}
+            ec{"노스다코타주, 뉴살렘"}
         }
         "America:Ojinaga"{
             ec{"오히나가"}
@@ -556,16 +556,16 @@
             ec{"세인트존스"}
         }
         "America:St_Kitts"{
-            ec{"세인트 키츠"}
+            ec{"세인트키츠"}
         }
         "America:St_Lucia"{
-            ec{"세인트 루시아"}
+            ec{"세인트루시아"}
         }
         "America:St_Thomas"{
-            ec{"세인트 토마스"}
+            ec{"세인트토마스"}
         }
         "America:St_Vincent"{
-            ec{"세인트 빈센트"}
+            ec{"세인트빈센트"}
         }
         "America:Swift_Current"{
             ec{"스위프트커런트"}
@@ -1513,9 +1513,9 @@
             ls{"에콰도르 시간"}
         }
         "meta:Europe_Central"{
-            ld{"중부 유럽 하계 표준시"}
-            lg{"중부 유럽 시간"}
-            ls{"중부 유럽 표준시"}
+            ld{"중부유럽 하계 표준시"}
+            lg{"중부유럽 시간"}
+            ls{"중부유럽 표준시"}
         }
         "meta:Europe_Eastern"{
             ld{"동유럽 하계 표준시"}
@@ -1523,7 +1523,7 @@
             ls{"동유럽 표준시"}
         }
         "meta:Europe_Further_Eastern"{
-            ls{"극동 유럽 표준시"}
+            ls{"극동유럽 표준시"}
         }
         "meta:Europe_Western"{
             ld{"서유럽 하계 표준시"}
diff --git a/icu4c/source/data/zone/ko_KP.txt b/icu4c/source/data/zone/ko_KP.txt
index be396ca..37fcc4a 100644
--- a/icu4c/source/data/zone/ko_KP.txt
+++ b/icu4c/source/data/zone/ko_KP.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ko_KP{
-    Version{"37"}
     zoneStrings{
         "meta:Korea"{
             ld{"조선 하계 표준시"}
diff --git a/icu4c/source/data/zone/kok.txt b/icu4c/source/data/zone/kok.txt
index 65fef2b..5411497 100644
--- a/icu4c/source/data/zone/kok.txt
+++ b/icu4c/source/data/zone/kok.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kok{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"अबिदजान"}
diff --git a/icu4c/source/data/zone/ks.txt b/icu4c/source/data/zone/ks.txt
index 0fc4046..7e3d06a 100644
--- a/icu4c/source/data/zone/ks.txt
+++ b/icu4c/source/data/zone/ks.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"عابِدجان"}
diff --git a/icu4c/source/data/zone/ks_Arab.txt b/icu4c/source/data/zone/ks_Arab.txt
index aafa093..f3d2206 100644
--- a/icu4c/source/data/zone/ks_Arab.txt
+++ b/icu4c/source/data/zone/ks_Arab.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks_Arab{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/ks_Arab_IN.txt b/icu4c/source/data/zone/ks_Arab_IN.txt
index a13c0c9..2d29f4c 100644
--- a/icu4c/source/data/zone/ks_Arab_IN.txt
+++ b/icu4c/source/data/zone/ks_Arab_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/ks_IN.txt b/icu4c/source/data/zone/ks_IN.txt
index fd8b52d..bd1a225 100644
--- a/icu4c/source/data/zone/ks_IN.txt
+++ b/icu4c/source/data/zone/ks_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ks_IN{
     "%%ALIAS"{"ks_Arab_IN"}
 }
diff --git a/icu4c/source/data/zone/ksb.txt b/icu4c/source/data/zone/ksb.txt
index f4818ce..77a38c1 100644
--- a/icu4c/source/data/zone/ksb.txt
+++ b/icu4c/source/data/zone/ksb.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksb{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/ksf.txt b/icu4c/source/data/zone/ksf.txt
index bf1a877..710fb8b 100644
--- a/icu4c/source/data/zone/ksf.txt
+++ b/icu4c/source/data/zone/ksf.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksf{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/ksh.txt b/icu4c/source/data/zone/ksh.txt
index d4661c4..f1a0cf5 100644
--- a/icu4c/source/data/zone/ksh.txt
+++ b/icu4c/source/data/zone/ksh.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ksh{
-    Version{"37"}
     zoneStrings{
         "Africa:Cairo"{
             ec{"Kaijro"}
diff --git a/icu4c/source/data/zone/ku.txt b/icu4c/source/data/zone/ku.txt
index 3da099f..a05d1d1 100644
--- a/icu4c/source/data/zone/ku.txt
+++ b/icu4c/source/data/zone/ku.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ku{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/kw.txt b/icu4c/source/data/zone/kw.txt
index 5e7c801..c7bcb9f 100644
--- a/icu4c/source/data/zone/kw.txt
+++ b/icu4c/source/data/zone/kw.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 kw{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/ky.txt b/icu4c/source/data/zone/ky.txt
index ab202b3..33935d4 100644
--- a/icu4c/source/data/zone/ky.txt
+++ b/icu4c/source/data/zone/ky.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ky{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Абиджан"}
@@ -1320,7 +1320,7 @@
             ls{"Амазон кышкы убактысы"}
         }
         "meta:America_Central"{
-            ld{"Түндүк Америка, борбордук жайкы убакыт"}
+            ld{"Түндүк Америка, борбордук жайкы убактысы"}
             lg{"Түндүк Америка, борбордук убакыт"}
             ls{"Түндүк Америка, борбордук кышкы убактысы"}
         }
@@ -1342,7 +1342,7 @@
         "meta:Apia"{
             ld{"Апиа жайкы убактысы"}
             lg{"Апиа убактысы"}
-            ls{"Апиа кышкы убакыты"}
+            ls{"Апиа кышкы убактысы"}
         }
         "meta:Arabian"{
             ld{"Арабия жайкы убакыты"}
@@ -1460,7 +1460,7 @@
         "meta:Cook"{
             ld{"Кук аралдарынын жарым жайкы убактысы"}
             lg{"Кук аралдарынын убактысы"}
-            ls{"Кук аралдарынын кышкы убакыты"}
+            ls{"Кук аралдарынын кышкы убактысы"}
         }
         "meta:Cuba"{
             ld{"Куба жайкы убактысы"}
@@ -1611,7 +1611,7 @@
             ls{"Батыш Казакстан убактысы"}
         }
         "meta:Korea"{
-            ld{"Корея жайкы убакыты"}
+            ld{"Корея жайкы убактысы"}
             lg{"Корея убактысы"}
             ls{"Корея кышкы убакыты"}
         }
@@ -1694,7 +1694,7 @@
         "meta:New_Caledonia"{
             ld{"Жаңы Каледония жайкы убактысы"}
             lg{"Жаңы Каледония убактысы"}
-            ls{"Жаңы Каледония кышкы убакыты"}
+            ls{"Жаңы Каледония кышкы убактысы"}
         }
         "meta:New_Zealand"{
             ld{"Жаңы Зеландия жайкы убакыты"}
@@ -1786,7 +1786,7 @@
         "meta:Samoa"{
             ld{"Самоа жайкы убактысы"}
             lg{"Самоа убактысы"}
-            ls{"Самоа кышкы убакыты"}
+            ls{"Самоа кышкы убактысы"}
         }
         "meta:Seychelles"{
             ls{"Сейшел убактысы"}
@@ -1823,7 +1823,7 @@
         "meta:Tonga"{
             ld{"Тонга жайкы убактысы"}
             lg{"Тонга убактысы"}
-            ls{"Тонга кышкы убакыты"}
+            ls{"Тонга кышкы убактысы"}
         }
         "meta:Truk"{
             ls{"Чуук убактысы"}
diff --git a/icu4c/source/data/zone/lag.txt b/icu4c/source/data/zone/lag.txt
index c34bb7f..b382d6d 100644
--- a/icu4c/source/data/zone/lag.txt
+++ b/icu4c/source/data/zone/lag.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lag{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/lb.txt b/icu4c/source/data/zone/lb.txt
index 442114f..f0ca6cd 100644
--- a/icu4c/source/data/zone/lb.txt
+++ b/icu4c/source/data/zone/lb.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lb{
-    Version{"37"}
     zoneStrings{
         "Africa:Accra"{
             ec{"Accra"}
diff --git a/icu4c/source/data/zone/lg.txt b/icu4c/source/data/zone/lg.txt
index 0f448ef..d511f9e 100644
--- a/icu4c/source/data/zone/lg.txt
+++ b/icu4c/source/data/zone/lg.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lg{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/lkt.txt b/icu4c/source/data/zone/lkt.txt
index 4126b05..7663507 100644
--- a/icu4c/source/data/zone/lkt.txt
+++ b/icu4c/source/data/zone/lkt.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lkt{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/ln.txt b/icu4c/source/data/zone/ln.txt
index af66a40..33510ac 100644
--- a/icu4c/source/data/zone/ln.txt
+++ b/icu4c/source/data/zone/ln.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ln{
-    Version{"37"}
     zoneStrings{
         fallbackFormat{"{1} ({0})"}
         regionFormat{"Ngonga ya {0}"}
diff --git a/icu4c/source/data/zone/lo.txt b/icu4c/source/data/zone/lo.txt
index 0b9be94..301784d 100644
--- a/icu4c/source/data/zone/lo.txt
+++ b/icu4c/source/data/zone/lo.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lo{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"ອາບິດແຈນ"}
diff --git a/icu4c/source/data/zone/lrc.txt b/icu4c/source/data/zone/lrc.txt
index 26e127d..c4be073 100644
--- a/icu4c/source/data/zone/lrc.txt
+++ b/icu4c/source/data/zone/lrc.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lrc{
-    Version{"37"}
     zoneStrings{
         "Etc:Unknown"{
             ec{"نادیار"}
diff --git a/icu4c/source/data/zone/lt.txt b/icu4c/source/data/zone/lt.txt
index e275248..11c7c1f 100644
--- a/icu4c/source/data/zone/lt.txt
+++ b/icu4c/source/data/zone/lt.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lt{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidžanas"}
diff --git a/icu4c/source/data/zone/lu.txt b/icu4c/source/data/zone/lu.txt
index abe8001..5932327 100644
--- a/icu4c/source/data/zone/lu.txt
+++ b/icu4c/source/data/zone/lu.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lu{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/luo.txt b/icu4c/source/data/zone/luo.txt
index 4a1add6..47bd822 100644
--- a/icu4c/source/data/zone/luo.txt
+++ b/icu4c/source/data/zone/luo.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 luo{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/luy.txt b/icu4c/source/data/zone/luy.txt
index a1e374c..b3fda21 100644
--- a/icu4c/source/data/zone/luy.txt
+++ b/icu4c/source/data/zone/luy.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 luy{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/lv.txt b/icu4c/source/data/zone/lv.txt
index 810631d..15f2aa8 100644
--- a/icu4c/source/data/zone/lv.txt
+++ b/icu4c/source/data/zone/lv.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 lv{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidžana"}
diff --git a/icu4c/source/data/zone/mai.txt b/icu4c/source/data/zone/mai.txt
index abe5d6a..5d4b6eb 100644
--- a/icu4c/source/data/zone/mai.txt
+++ b/icu4c/source/data/zone/mai.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mai{
-    Version{"37"}
     zoneStrings{
         "Etc:UTC"{
             ls{"समन्वित वैश्विक समय"}
diff --git a/icu4c/source/data/zone/mas.txt b/icu4c/source/data/zone/mas.txt
index e679bf5..b1e1c71 100644
--- a/icu4c/source/data/zone/mas.txt
+++ b/icu4c/source/data/zone/mas.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mas{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/mer.txt b/icu4c/source/data/zone/mer.txt
index 9f20f6d..9092e9a 100644
--- a/icu4c/source/data/zone/mer.txt
+++ b/icu4c/source/data/zone/mer.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mer{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/mfe.txt b/icu4c/source/data/zone/mfe.txt
index a481511..876eff6 100644
--- a/icu4c/source/data/zone/mfe.txt
+++ b/icu4c/source/data/zone/mfe.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mfe{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/mg.txt b/icu4c/source/data/zone/mg.txt
index 95608d1..178591f 100644
--- a/icu4c/source/data/zone/mg.txt
+++ b/icu4c/source/data/zone/mg.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mg{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/mgh.txt b/icu4c/source/data/zone/mgh.txt
index 315912d..3d1d29c 100644
--- a/icu4c/source/data/zone/mgh.txt
+++ b/icu4c/source/data/zone/mgh.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mgh{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/mgo.txt b/icu4c/source/data/zone/mgo.txt
index 07bef3f..3f03029 100644
--- a/icu4c/source/data/zone/mgo.txt
+++ b/icu4c/source/data/zone/mgo.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mgo{
-    Version{"37"}
     zoneStrings{
         fallbackFormat{"{1} ({0})"}
         gmtFormat{"GMT{0}"}
diff --git a/icu4c/source/data/zone/mi.txt b/icu4c/source/data/zone/mi.txt
index 4b77a05..4e07ab4 100644
--- a/icu4c/source/data/zone/mi.txt
+++ b/icu4c/source/data/zone/mi.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mi{
-    Version{"37"}
     zoneStrings{
         "America:Araguaina"{
             ec{"Araguaina"}
diff --git a/icu4c/source/data/zone/mk.txt b/icu4c/source/data/zone/mk.txt
index 5038a9c..6091bf0 100644
--- a/icu4c/source/data/zone/mk.txt
+++ b/icu4c/source/data/zone/mk.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mk{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Абиџан"}
@@ -637,7 +637,7 @@
             ec{"Восток"}
         }
         "Arctic:Longyearbyen"{
-            ec{"Лонгјирбјен"}
+            ec{"Лонгјербијен"}
         }
         "Asia:Aden"{
             ec{"Аден"}
@@ -991,7 +991,7 @@
             ec{"Будимпешта"}
         }
         "Europe:Busingen"{
-            ec{"Бисинген"}
+            ec{"Бизинген"}
         }
         "Europe:Chisinau"{
             ec{"Кишинау"}
@@ -1113,7 +1113,7 @@
             ec{"Улјановск"}
         }
         "Europe:Uzhgorod"{
-            ec{"Ужхород"}
+            ec{"Ужгород"}
         }
         "Europe:Vaduz"{
             ec{"Вадуц"}
@@ -1325,24 +1325,24 @@
             ls{"Стандардно време во Амазон"}
         }
         "meta:America_Central"{
-            ld{"Централно летно сметање на времето"}
+            ld{"Централно летно сметање на времето во Северна Америка"}
             lg{"Централно време во Северна Америка"}
             ls{"Централно стандардно време во Северна Америка"}
         }
         "meta:America_Eastern"{
-            ld{"Источно летно сметање на времето"}
-            lg{"Источно време"}
-            ls{"Источно стандардно време"}
+            ld{"Источно летно сметање на времето во Северна Америка"}
+            lg{"Источно време во Северна Америка"}
+            ls{"Источно стандардно време во Северна Америка"}
         }
         "meta:America_Mountain"{
-            ld{"Планинско летно сметање на времето"}
-            lg{"Планинско време"}
-            ls{"Планинско стандардно време"}
+            ld{"Планинско летно сметање на времето во Северна Америка"}
+            lg{"Планинско време во Северна Америка"}
+            ls{"Планинско стандардно време во Северна Америка"}
         }
         "meta:America_Pacific"{
-            ld{"Пацифичко летно сметање на времето"}
-            lg{"Пацифичко време"}
-            ls{"Пацифичко стандардно време"}
+            ld{"Пацифичко летно сметање на времето во Северна Америка"}
+            lg{"Пацифичко време во Северна Америка"}
+            ls{"Пацифичко стандардно време во Северна Америка"}
         }
         "meta:Anadyr"{
             ld{"Анадирско летно време"}
diff --git a/icu4c/source/data/zone/ml.txt b/icu4c/source/data/zone/ml.txt
index fd84e1c..1cf9d7b 100644
--- a/icu4c/source/data/zone/ml.txt
+++ b/icu4c/source/data/zone/ml.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ml{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"അബിദ്‌ജാൻ‌"}
@@ -1752,9 +1752,9 @@
             ls{"ന്യൂയി സമയം"}
         }
         "meta:Norfolk"{
-            ld{"നോർഫാക്ക് ദ്വീപുകൾ ഡേലൈറ്റ് സമയം"}
-            lg{"നോർഫാക്ക് ദ്വീപുകൾ സമയം"}
-            ls{"നോർഫാക്ക് ദ്വീപുകൾ സ്റ്റാൻഡേർഡ് സമയം"}
+            ld{"നോർഫാക്ക് ദ്വീപ് ഡേലൈറ്റ് സമയം"}
+            lg{"നോർഫാക്ക് ദ്വീപ് സമയം"}
+            ls{"നോർഫാക്ക് ദ്വീപ് സ്റ്റാൻഡേർഡ് സമയം"}
         }
         "meta:Noronha"{
             ld{"ഫെർണാഡോ ഡി നൊറോൻഹ ഗ്രീഷ്‌മകാല സമയം"}
diff --git a/icu4c/source/data/zone/mn.txt b/icu4c/source/data/zone/mn.txt
index 4c5dab2..66c1ef7 100644
--- a/icu4c/source/data/zone/mn.txt
+++ b/icu4c/source/data/zone/mn.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mn{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Абижан"}
diff --git a/icu4c/source/data/zone/mni.txt b/icu4c/source/data/zone/mni.txt
index e479340..830ae0e 100644
--- a/icu4c/source/data/zone/mni.txt
+++ b/icu4c/source/data/zone/mni.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni{
-    Version{"37"}
     zoneStrings{
         "Etc:UTC"{
             ls{"কোওর্দিনেটেদ য়ুনিভর্সেল টাইম"}
diff --git a/icu4c/source/data/zone/mni_Beng.txt b/icu4c/source/data/zone/mni_Beng.txt
index e861947..08de0f1 100644
--- a/icu4c/source/data/zone/mni_Beng.txt
+++ b/icu4c/source/data/zone/mni_Beng.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni_Beng{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/mni_Beng_IN.txt b/icu4c/source/data/zone/mni_Beng_IN.txt
index fee6989..c896779 100644
--- a/icu4c/source/data/zone/mni_Beng_IN.txt
+++ b/icu4c/source/data/zone/mni_Beng_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/mni_IN.txt b/icu4c/source/data/zone/mni_IN.txt
index 00d8c00..99173b1 100644
--- a/icu4c/source/data/zone/mni_IN.txt
+++ b/icu4c/source/data/zone/mni_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mni_IN{
     "%%ALIAS"{"mni_Beng_IN"}
 }
diff --git a/icu4c/source/data/zone/mo.txt b/icu4c/source/data/zone/mo.txt
index 01049c8..6ef8313 100644
--- a/icu4c/source/data/zone/mo.txt
+++ b/icu4c/source/data/zone/mo.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mo{
     "%%ALIAS"{"ro"}
 }
diff --git a/icu4c/source/data/zone/mr.txt b/icu4c/source/data/zone/mr.txt
index f0c7ba1..944ba83 100644
--- a/icu4c/source/data/zone/mr.txt
+++ b/icu4c/source/data/zone/mr.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mr{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"अबिद्जान"}
@@ -1013,7 +1013,7 @@
             ec{"हेलसिंकी"}
         }
         "Europe:Isle_of_Man"{
-            ec{"आइल ऑफ मॅन"}
+            ec{"आयल ऑफ मॅन"}
         }
         "Europe:Istanbul"{
             ec{"इस्तंबूल"}
@@ -1140,7 +1140,7 @@
             ec{"झापोरोझे"}
         }
         "Europe:Zurich"{
-            ec{"झुरिच"}
+            ec{"झुरिक"}
         }
         "Indian:Antananarivo"{
             ec{"अंटानानारिवो"}
@@ -1326,7 +1326,7 @@
         }
         "meta:Amazon"{
             ld{"अ‍ॅमेझॉन उन्हाळी वेळ"}
-            lg{"अॅमेझॉन वेळ"}
+            lg{"अ‍ॅमेझॉन वेळ"}
             ls{"अ‍ॅमेझॉन प्रमाण वेळ"}
         }
         "meta:America_Central"{
@@ -1520,7 +1520,7 @@
             ls{"पूर्व युरोपियन प्रमाण वेळ"}
         }
         "meta:Europe_Further_Eastern"{
-            ls{"अग्र-पौर्वात्य यूरोपीयन वेळ"}
+            ls{"अग्र-पौर्वात्य युरोपीयन वेळ"}
         }
         "meta:Europe_Western"{
             ld{"पश्चिम युरोपियन उन्हाळी वेळ"}
diff --git a/icu4c/source/data/zone/ms.txt b/icu4c/source/data/zone/ms.txt
index 4631ee6..6baa33c 100644
--- a/icu4c/source/data/zone/ms.txt
+++ b/icu4c/source/data/zone/ms.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ms{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -1292,6 +1292,11 @@
         "Pacific:Wallis"{
             ec{"Wallis"}
         }
+        "meta:Acre"{
+            ld{"Waktu Musim Panas Acre"}
+            lg{"Waktu Acre"}
+            ls{"Waktu Piawai Acre"}
+        }
         "meta:Afghanistan"{
             ls{"Waktu Afghanistan"}
         }
@@ -1314,6 +1319,11 @@
             lg{"Waktu Alaska"}
             ls{"Waktu Piawai Alaska"}
         }
+        "meta:Almaty"{
+            ld{"Waktu Musim Panas Almaty"}
+            lg{"Waktu Almaty"}
+            ls{"Waktu Piawai Almaty"}
+        }
         "meta:Amazon"{
             ld{"Waktu Musim Panas Amazon"}
             lg{"Waktu Amazon"}
@@ -1354,6 +1364,11 @@
             lg{"Waktu Aqtau"}
             ls{"Waktu Standard Aqtau"}
         }
+        "meta:Aqtobe"{
+            ld{"Waktu Musim Panas Aqtobe"}
+            lg{"Waktu Aqtobe"}
+            ls{"Waktu Piawai Aqtobe"}
+        }
         "meta:Arabian"{
             ld{"Waktu Siang Arab"}
             lg{"Waktu Arab"}
@@ -1650,6 +1665,11 @@
             lg{"Waktu Lord Howe"}
             ls{"Waktu Piawai Lord Howe"}
         }
+        "meta:Macau"{
+            ld{"Waktu Musim Panas Macao"}
+            lg{"Waktu Macao"}
+            ls{"Waktu Piawai Macao"}
+        }
         "meta:Macquarie"{
             ls{"Waktu Pulau Macquarie"}
         }
@@ -1727,7 +1747,7 @@
             ls{"Waktu Niue"}
         }
         "meta:Norfolk"{
-            ld{"Waktu Musim Panas Kepulauan Norfolk"}
+            ld{"Waktu Siang Kepulauan Norfolk"}
             lg{"Waktu Kepulauan Norfolk"}
             ls{"Waktu Piawai Kepulauan Norfolk"}
         }
@@ -1736,6 +1756,9 @@
             lg{"Waktu Fernando de Noronha"}
             ls{"Waktu Piawai Fernando de Noronha"}
         }
+        "meta:North_Mariana"{
+            ls{"Waktu Kepulauan Mariana Utara"}
+        }
         "meta:Novosibirsk"{
             ld{"Waktu Musim Panas Novosibirsk"}
             lg{"Waktu Novosibirsk"}
@@ -1789,6 +1812,11 @@
         "meta:Pyongyang"{
             ls{"Waktu Pyongyang"}
         }
+        "meta:Qyzylorda"{
+            ld{"Waktu Musim Panas Qyzylorda"}
+            lg{"Waktu Qyzylorda"}
+            ls{"Waktu Piawai Qyzylorda"}
+        }
         "meta:Reunion"{
             ls{"Waktu Reunion"}
         }
diff --git a/icu4c/source/data/zone/ms_ID.txt b/icu4c/source/data/zone/ms_ID.txt
index 51068c2..bfd2ae3 100644
--- a/icu4c/source/data/zone/ms_ID.txt
+++ b/icu4c/source/data/zone/ms_ID.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ms_ID{
-    Version{"37"}
     zoneStrings{
         hourFormat{"+HH.mm;-HH.mm"}
     }
diff --git a/icu4c/source/data/zone/mt.txt b/icu4c/source/data/zone/mt.txt
index b58f1b4..686937d 100644
--- a/icu4c/source/data/zone/mt.txt
+++ b/icu4c/source/data/zone/mt.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mt{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
diff --git a/icu4c/source/data/zone/mua.txt b/icu4c/source/data/zone/mua.txt
index 707d896..75276ce 100644
--- a/icu4c/source/data/zone/mua.txt
+++ b/icu4c/source/data/zone/mua.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mua{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/my.txt b/icu4c/source/data/zone/my.txt
index 8b36d3e..42e28f8 100644
--- a/icu4c/source/data/zone/my.txt
+++ b/icu4c/source/data/zone/my.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 my{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"အာဘီဂျန်"}
@@ -1477,9 +1477,9 @@
             ls{"အရှေ့တီမော အချိန်"}
         }
         "meta:Easter"{
-            ld{"အီစတာကျွန်းနွေရာသီအချိန်"}
-            lg{"အီစတာကျွန်းအချိန်"}
-            ls{"အီစတာကျွန်းစံတော်ချိန်"}
+            ld{"အီစတာကျွန်း နွေရာသီ အချိန်"}
+            lg{"အီစတာကျွန်း အချိန်"}
+            ls{"အီစတာကျွန်း စံတော်ချိန်"}
         }
         "meta:Ecuador"{
             ls{"အီကွေဒေါ အချိန်"}
@@ -1522,7 +1522,7 @@
             ls{"ဂရင်းနစ် စံတော်ချိန်"}
         }
         "meta:Galapagos"{
-            ls{"ဂါလားပါဂိုးစ်အချိန်"}
+            ls{"ဂါလားပါဂိုးစ် အချိန်"}
         }
         "meta:Gambier"{
             ls{"ဂမ်ဘီယာ အချိန်"}
@@ -1723,7 +1723,7 @@
             ls{"နောဖော့ခ်ကျွန်း စံတော်ချိန်"}
         }
         "meta:Noronha"{
-            ld{"ဖာနန်ဒိုးဒီနိုးရိုးညာ နွေရာသီအချိန်"}
+            ld{"ဖာနန်ဒိုးဒီနိုးရိုးညာ နွေရာသီ အချိန်"}
             lg{"ဖာနန်ဒိုးဒီနိုးရိုးညာ အချိန်"}
             ls{"ဖာနန်ဒိုးဒီနိုးရိုးညာ စံတော်ချိန်"}
         }
diff --git a/icu4c/source/data/zone/mzn.txt b/icu4c/source/data/zone/mzn.txt
index f7d3e77..736da7f 100644
--- a/icu4c/source/data/zone/mzn.txt
+++ b/icu4c/source/data/zone/mzn.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 mzn{
-    Version{"37"}
     zoneStrings{
         fallbackFormat{"{1} ({0})"}
         gmtFormat{"GMT{0}"}
diff --git a/icu4c/source/data/zone/naq.txt b/icu4c/source/data/zone/naq.txt
index b5a2a9b..3295d39 100644
--- a/icu4c/source/data/zone/naq.txt
+++ b/icu4c/source/data/zone/naq.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 naq{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/nb.txt b/icu4c/source/data/zone/nb.txt
index 7257eea..6eccb51 100644
--- a/icu4c/source/data/zone/nb.txt
+++ b/icu4c/source/data/zone/nb.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nb{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
diff --git a/icu4c/source/data/zone/nb_NO.txt b/icu4c/source/data/zone/nb_NO.txt
index fdac28b..15a33c3 100644
--- a/icu4c/source/data/zone/nb_NO.txt
+++ b/icu4c/source/data/zone/nb_NO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/nd.txt b/icu4c/source/data/zone/nd.txt
index 57c1537..0f43c83 100644
--- a/icu4c/source/data/zone/nd.txt
+++ b/icu4c/source/data/zone/nd.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nd{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/nds.txt b/icu4c/source/data/zone/nds.txt
deleted file mode 100644
index ac58836..0000000
--- a/icu4c/source/data/zone/nds.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-nds{
-    Version{"37"}
-}
diff --git a/icu4c/source/data/zone/ne.txt b/icu4c/source/data/zone/ne.txt
index f6e552f..c90abbf 100644
--- a/icu4c/source/data/zone/ne.txt
+++ b/icu4c/source/data/zone/ne.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ne{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"अविड्जान"}
@@ -1710,9 +1710,9 @@
             ls{"निउए समय"}
         }
         "meta:Norfolk"{
-            ld{"नोर्फल्क टापू ग्रीष्मकालीन समय"}
-            lg{"नोर्फल्क टापू समय"}
-            ls{"नोर्फल्क टापू मानक समय"}
+            ld{"नोर्फोक टापूको ग्रीष्मकालीन समय"}
+            lg{"नोर्फोक टापूको समय"}
+            ls{"नोर्फोक टापूको मानक समय"}
         }
         "meta:Noronha"{
             ld{"फर्नान्डो डे नोरोन्हा ग्रीष्मकालीन समय"}
diff --git a/icu4c/source/data/zone/ne_IN.txt b/icu4c/source/data/zone/ne_IN.txt
index abdaeb0..8af5259 100644
--- a/icu4c/source/data/zone/ne_IN.txt
+++ b/icu4c/source/data/zone/ne_IN.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ne_IN{
-    Version{"37"}
     zoneStrings{
         "meta:India"{
             ss{"IST"}
diff --git a/icu4c/source/data/zone/nl.txt b/icu4c/source/data/zone/nl.txt
index 20b31b9..d1dfc19 100644
--- a/icu4c/source/data/zone/nl.txt
+++ b/icu4c/source/data/zone/nl.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -799,7 +799,7 @@
             ec{"Oral"}
         }
         "Asia:Phnom_Penh"{
-            ec{"Phnom-Penh"}
+            ec{"Phnom Penh"}
         }
         "Asia:Pontianak"{
             ec{"Pontianak"}
@@ -955,7 +955,7 @@
             ec{"Sydney"}
         }
         "Etc:UTC"{
-            ls{"Gecoördineerde wereldtijd"}
+            ls{"gecoördineerde wereldtijd"}
             ss{"UTC"}
         }
         "Etc:Unknown"{
diff --git a/icu4c/source/data/zone/nl_SR.txt b/icu4c/source/data/zone/nl_SR.txt
index 5a40ba7..97129e5 100644
--- a/icu4c/source/data/zone/nl_SR.txt
+++ b/icu4c/source/data/zone/nl_SR.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nl_SR{
-    Version{"37"}
     zoneStrings{
         "meta:Suriname"{
             ss{"SRT"}
diff --git a/icu4c/source/data/zone/nmg.txt b/icu4c/source/data/zone/nmg.txt
index 3be5f9b..5a8e42a 100644
--- a/icu4c/source/data/zone/nmg.txt
+++ b/icu4c/source/data/zone/nmg.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nmg{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/nn.txt b/icu4c/source/data/zone/nn.txt
index 8ef3fca..4cb9a29 100644
--- a/icu4c/source/data/zone/nn.txt
+++ b/icu4c/source/data/zone/nn.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nn{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -807,6 +807,9 @@
         "Asia:Qatar"{
             ec{"Qatar"}
         }
+        "Asia:Qostanay"{
+            ec{"Kostanaj"}
+        }
         "Asia:Qyzylorda"{
             ec{"Kyzylorda"}
         }
@@ -850,7 +853,7 @@
             ec{"Teheran"}
         }
         "Asia:Thimphu"{
-            ec{"Thimphu"}
+            ec{"Thimpu"}
         }
         "Asia:Tokyo"{
             ec{"Tokyo"}
@@ -995,7 +998,7 @@
         }
         "Europe:Dublin"{
             ec{"Dublin"}
-            ld{"irsk sumartid"}
+            ld{"irsk sommartid"}
         }
         "Europe:Gibraltar"{
             ec{"Gibraltar"}
@@ -1032,7 +1035,7 @@
         }
         "Europe:London"{
             ec{"London"}
-            ld{"britisk sumartid"}
+            ld{"britisk sommartid"}
         }
         "Europe:Luxembourg"{
             ec{"Luxemburg"}
@@ -1149,7 +1152,7 @@
             ec{"Kokosøyane"}
         }
         "Indian:Comoro"{
-            ec{"Komorene"}
+            ec{"Komorane"}
         }
         "Indian:Kerguelen"{
             ec{"Kerguelen"}
@@ -1214,6 +1217,9 @@
         "Pacific:Honolulu"{
             ec{"Honolulu"}
         }
+        "Pacific:Johnston"{
+            ec{"Johnston"}
+        }
         "Pacific:Kiritimati"{
             ec{"Kiritimati"}
         }
@@ -1301,62 +1307,62 @@
             ls{"vestafrikansk standardtid"}
         }
         "meta:Alaska"{
-            ld{"alaskisk sumartid"}
+            ld{"alaskisk sommartid"}
             lg{"alaskisk tid"}
             ls{"alaskisk normaltid"}
         }
         "meta:Amazon"{
-            ld{"sumartid for Amazonas"}
+            ld{"sommartid for Amazonas"}
             lg{"tidssone for Amazonas"}
             ls{"normaltid for Amazonas"}
         }
         "meta:America_Central"{
-            ld{"sumartid for sentrale Nord-Amerika"}
+            ld{"sommartid for sentrale Nord-Amerika"}
             lg{"tidssone for sentrale Nord-Amerika"}
             ls{"normaltid for sentrale Nord-Amerika"}
         }
         "meta:America_Eastern"{
-            ld{"sumartid for den nordamerikansk austkysten"}
-            lg{"tidssone for den nordamerikansk austkysten"}
-            ls{"normaltid for den nordamerikansk austkysten"}
+            ld{"sommartid for den nordamerikansk austkysten"}
+            lg{"tidssone for den nordamerikanske austkysten"}
+            ls{"normaltid for den nordamerikanske austkysten"}
         }
         "meta:America_Mountain"{
-            ld{"sumartid for Rocky Mountains (USA)"}
+            ld{"sommartid for Rocky Mountains (USA)"}
             lg{"tidssone for Rocky Mountains (USA)"}
             ls{"normaltid for Rocky Mountains (USA)"}
         }
         "meta:America_Pacific"{
-            ld{"sumartid for den nordamerikanske stillehavskysten"}
+            ld{"sommartid for den nordamerikanske stillehavskysten"}
             lg{"tidssone for den nordamerikanske stillehavskysten"}
             ls{"normaltid for den nordamerikanske stillehavskysten"}
         }
         "meta:Apia"{
-            ld{"sumartid for Apia"}
+            ld{"sommartid for Apia"}
             lg{"tidssone for Apia"}
             ls{"normaltid for Apia"}
         }
         "meta:Arabian"{
-            ld{"arabisk sumartid"}
+            ld{"arabisk sommartid"}
             lg{"arabisk tid"}
             ls{"arabisk normaltid"}
         }
         "meta:Argentina"{
-            ld{"argentinsk sumartid"}
+            ld{"argentinsk sommartid"}
             lg{"argentinsk tid"}
             ls{"argentinsk normaltid"}
         }
         "meta:Argentina_Western"{
-            ld{"vestargentinsk sumartid"}
+            ld{"vestargentinsk sommartid"}
             lg{"vestargentinsk tid"}
             ls{"vestargentinsk normaltid"}
         }
         "meta:Armenia"{
-            ld{"armensk sumartid"}
+            ld{"armensk sommartid"}
             lg{"armensk tid"}
             ls{"armensk normaltid"}
         }
         "meta:Atlantic"{
-            ld{"sumartid for den nordamerikanske atlanterhavskysten"}
+            ld{"sommartid for den nordamerikanske atlanterhavskysten"}
             lg{"tidssone for den nordamerikanske atlanterhavskysten"}
             ls{"normaltid for den nordamerikanske atlanterhavskysten"}
         }
@@ -1381,17 +1387,17 @@
             ls{"vestaustralsk standardtid"}
         }
         "meta:Azerbaijan"{
-            ld{"aserbajdsjansk sumartid"}
+            ld{"aserbajdsjansk sommartid"}
             lg{"aserbajdsjansk tid"}
             ls{"aserbajdsjansk normaltid"}
         }
         "meta:Azores"{
-            ld{"asorisk sumartid"}
+            ld{"asorisk sommartid"}
             lg{"asorisk tid"}
             ls{"asorisk normaltid"}
         }
         "meta:Bangladesh"{
-            ld{"bangladeshisk sumartid"}
+            ld{"bangladeshisk sommartid"}
             lg{"bangladeshisk tid"}
             ls{"bangladeshisk normaltid"}
         }
@@ -1402,7 +1408,7 @@
             ls{"boliviansk tid"}
         }
         "meta:Brasilia"{
-            ld{"sumartid for Brasilia"}
+            ld{"sommartid for Brasilia"}
             lg{"tidssone for Brasilia"}
             ls{"normaltid for Brasilia"}
         }
@@ -1410,7 +1416,7 @@
             ls{"tidssone for Brunei Darussalam"}
         }
         "meta:Cape_Verde"{
-            ld{"kappverdisk sumartid"}
+            ld{"kappverdisk sommartid"}
             lg{"kappverdisk tid"}
             ls{"kappverdisk normaltid"}
         }
@@ -1418,22 +1424,22 @@
             ls{"tidssone for Chamorro"}
         }
         "meta:Chatham"{
-            ld{"sumartid for Chatham"}
+            ld{"sommartid for Chatham"}
             lg{"tidssone for Chatham"}
             ls{"normaltid for Chatham"}
         }
         "meta:Chile"{
-            ld{"chilensk sumartid"}
+            ld{"chilensk sommartid"}
             lg{"chilensk tid"}
             ls{"chilensk normaltid"}
         }
         "meta:China"{
-            ld{"kinesisk sumartid"}
+            ld{"kinesisk sommartid"}
             lg{"kinesisk tid"}
             ls{"kinesisk normaltid"}
         }
         "meta:Choibalsan"{
-            ld{"sumartid for Tsjojbalsan"}
+            ld{"sommartid for Tsjojbalsan"}
             lg{"tidssone for Tsjojbalsan"}
             ls{"normaltid for Tsjojbalsan"}
         }
@@ -1444,17 +1450,17 @@
             ls{"tidssone for Kokosøyane"}
         }
         "meta:Colombia"{
-            ld{"kolombiansk sumartid"}
+            ld{"kolombiansk sommartid"}
             lg{"kolombiansk tid"}
             ls{"kolombiansk normaltid"}
         }
         "meta:Cook"{
-            ld{"sumartid for Cookøyane"}
+            ld{"sommartid for Cookøyane"}
             lg{"tidssone for Cookøyane"}
             ls{"normaltid for Cookøyane"}
         }
         "meta:Cuba"{
-            ld{"kubansk sumartid"}
+            ld{"kubansk sommartid"}
             lg{"kubansk tid"}
             ls{"kubansk normaltid"}
         }
@@ -1468,7 +1474,7 @@
             ls{"austtimoresisk tid"}
         }
         "meta:Easter"{
-            ld{"sumartid for Påskeøya"}
+            ld{"sommartid for Påskeøya"}
             lg{"tidssone for Påskeøya"}
             ls{"normaltid for Påskeøya"}
         }
@@ -1503,12 +1509,12 @@
             ss{"WET"}
         }
         "meta:Falkland"{
-            ld{"sumartid for Falklandsøyane"}
+            ld{"sommartid for Falklandsøyane"}
             lg{"tidssone for Falklandsøyane"}
             ls{"normaltid for Falklandsøyane"}
         }
         "meta:Fiji"{
-            ld{"fijiansk sumartid"}
+            ld{"fijiansk sommartid"}
             lg{"fijiansk tid"}
             ls{"fijiansk normaltid"}
         }
@@ -1529,7 +1535,7 @@
             ls{"tidssone for Gambier"}
         }
         "meta:Georgia"{
-            ld{"georgisk sumartid"}
+            ld{"georgisk sommartid"}
             lg{"georgisk tid"}
             ls{"georgisk normaltid"}
         }
@@ -1537,12 +1543,12 @@
             ls{"tidssone for Gilbertøyane"}
         }
         "meta:Greenland_Eastern"{
-            ld{"austgrønlandsk sumartid"}
+            ld{"austgrønlandsk sommartid"}
             lg{"austgrønlandsk tid"}
             ls{"austgrønlandsk normaltid"}
         }
         "meta:Greenland_Western"{
-            ld{"vestgrønlandsk sumartid"}
+            ld{"vestgrønlandsk sommartid"}
             lg{"vestgrønlandsk tid"}
             ls{"vestgrønlandsk normaltid"}
         }
@@ -1553,17 +1559,17 @@
             ls{"guyansk tid"}
         }
         "meta:Hawaii_Aleutian"{
-            ld{"sumartid for Hawaii og Aleutene"}
+            ld{"sommartid for Hawaii og Aleutene"}
             lg{"tidssone for Hawaii og Aleutene"}
             ls{"normaltid for Hawaii og Aleutene"}
         }
         "meta:Hong_Kong"{
-            ld{"hongkongkinesisk sumartid"}
+            ld{"hongkongkinesisk sommartid"}
             lg{"hongkongkinesisk tid"}
             ls{"hongkongkinesisk normaltid"}
         }
         "meta:Hovd"{
-            ld{"sumartid for Khovd"}
+            ld{"sommartid for Khovd"}
             lg{"tidssone for Khovd"}
             ls{"normaltid for Khovd"}
         }
@@ -1586,22 +1592,22 @@
             ls{"vestindonesisk tid"}
         }
         "meta:Iran"{
-            ld{"iransk sumartid"}
+            ld{"iransk sommartid"}
             lg{"iransk tid"}
             ls{"iransk normaltid"}
         }
         "meta:Irkutsk"{
-            ld{"sumartid for Irkutsk"}
+            ld{"sommartid for Irkutsk"}
             lg{"tidssone for Irkutsk"}
             ls{"normaltid for Irkutsk"}
         }
         "meta:Israel"{
-            ld{"israelsk sumartid"}
+            ld{"israelsk sommartid"}
             lg{"israelsk tid"}
             ls{"israelsk normaltid"}
         }
         "meta:Japan"{
-            ld{"japansk sumartid"}
+            ld{"japansk sommartid"}
             lg{"japansk tid"}
             ls{"japansk normaltid"}
         }
@@ -1612,7 +1618,7 @@
             ls{"vestkasakhstansk tid"}
         }
         "meta:Korea"{
-            ld{"koreansk sumartid"}
+            ld{"koreansk sommartid"}
             lg{"koreansk tid"}
             ls{"koreansk normaltid"}
         }
@@ -1620,7 +1626,7 @@
             ls{"tidssone for Kosrae"}
         }
         "meta:Krasnoyarsk"{
-            ld{"sumartid for Krasnojarsk"}
+            ld{"sommartid for Krasnojarsk"}
             lg{"tidssone for Krasnojarsk"}
             ls{"normaltid for Krasnojarsk"}
         }
@@ -1631,7 +1637,7 @@
             ls{"tidssone for Lineøyane"}
         }
         "meta:Lord_Howe"{
-            ld{"sumartid for Lord Howe-øya"}
+            ld{"sommartid for Lord Howe-øya"}
             lg{"tidssone for Lord Howe-øya"}
             ls{"normaltid for Lord Howe-øya"}
         }
@@ -1639,7 +1645,7 @@
             ls{"tidssone for Macquarieøya"}
         }
         "meta:Magadan"{
-            ld{"sumartid for Magadan"}
+            ld{"sommartid for Magadan"}
             lg{"tidssone for Magadan"}
             ls{"normaltid for Magadan"}
         }
@@ -1656,7 +1662,7 @@
             ls{"marshallesisk tid"}
         }
         "meta:Mauritius"{
-            ld{"mauritisk sumartid"}
+            ld{"mauritisk sommartid"}
             lg{"mauritisk tid"}
             ls{"mauritisk normaltid"}
         }
@@ -1664,22 +1670,22 @@
             ls{"tidssone for Mawson"}
         }
         "meta:Mexico_Northwest"{
-            ld{"sumartid for nordvestlege Mexico"}
+            ld{"sommartid for nordvestlege Mexico"}
             lg{"tidssone for nordvestlege Mexico"}
             ls{"normaltid for nordvestlege Mexico"}
         }
         "meta:Mexico_Pacific"{
-            ld{"sumartid for den meksikanske stillehavskysten"}
+            ld{"sommartid for den meksikanske stillehavskysten"}
             lg{"tidssone for den meksikanske stillehavskysten"}
             ls{"normaltid for den meksikanske stillehavskysten"}
         }
         "meta:Mongolia"{
-            ld{"sumartid"}
+            ld{"sommartid for Ulan Bator"}
             lg{"tidssone for Ulan Bator"}
             ls{"normaltid for Ulan Bator"}
         }
         "meta:Moscow"{
-            ld{"sumartid for Moskva"}
+            ld{"sommartid for Moskva"}
             lg{"tidssone for Moskva"}
             ls{"normaltid for Moskva"}
         }
@@ -1693,7 +1699,7 @@
             ls{"nepalsk tid"}
         }
         "meta:New_Caledonia"{
-            ld{"kaledonsk sumartid"}
+            ld{"kaledonsk sommartid"}
             lg{"kaledonsk tid"}
             ls{"kaledonsk normaltid"}
         }
@@ -1703,7 +1709,7 @@
             ls{"nyzealandsk normaltid"}
         }
         "meta:Newfoundland"{
-            ld{"sumartid for Newfoundland"}
+            ld{"sommartid for Newfoundland"}
             lg{"tidssone for Newfoundland"}
             ls{"normaltid for Newfoundland"}
         }
@@ -1711,27 +1717,27 @@
             ls{"tidssone for Niue"}
         }
         "meta:Norfolk"{
-            ld{"sumartid for Norfolkøya"}
+            ld{"sommartid for Norfolkøya"}
             lg{"tidssone for Norfolkøya"}
             ls{"normaltid for Norfolkøya"}
         }
         "meta:Noronha"{
-            ld{"sumartid for Fernando de Noronha"}
+            ld{"sommartid for Fernando de Noronha"}
             lg{"tidssone for Fernando de Noronha"}
             ls{"normaltid for Fernando de Noronha"}
         }
         "meta:Novosibirsk"{
-            ld{"sumartid for Novosibirsk"}
+            ld{"sommartid for Novosibirsk"}
             lg{"tidssone for Novosibirsk"}
             ls{"normaltid for Novosibirsk"}
         }
         "meta:Omsk"{
-            ld{"sumartid for Omsk"}
+            ld{"sommartid for Omsk"}
             lg{"tidssone for Omsk"}
             ls{"normaltid for Omsk"}
         }
         "meta:Pakistan"{
-            ld{"pakistansk sumartid"}
+            ld{"pakistansk sommartid"}
             lg{"pakistansk tid"}
             ls{"pakistansk normaltid"}
         }
@@ -1742,17 +1748,17 @@
             ls{"papuansk tid"}
         }
         "meta:Paraguay"{
-            ld{"paraguayansk sumartid"}
+            ld{"paraguayansk sommartid"}
             lg{"paraguayansk tid"}
             ls{"paraguayansk normaltid"}
         }
         "meta:Peru"{
-            ld{"peruansk sumartid"}
+            ld{"peruansk sommartid"}
             lg{"peruansk tid"}
             ls{"peruansk normaltid"}
         }
         "meta:Philippines"{
-            ld{"filippinsk sumartid"}
+            ld{"filippinsk sommartid"}
             lg{"filippinsk tid"}
             ls{"filippinsk normaltid"}
         }
@@ -1760,7 +1766,7 @@
             ls{"tidssone for Phoenixøyane"}
         }
         "meta:Pierre_Miquelon"{
-            ld{"sumartid for Saint-Pierre-et-Miquelon"}
+            ld{"sommartid for Saint-Pierre-et-Miquelon"}
             lg{"tidssone for Saint-Pierre-et-Miquelon"}
             ls{"normaltid for Saint-Pierre-et-Miquelon"}
         }
@@ -1780,12 +1786,12 @@
             ls{"tidssone for Rothera"}
         }
         "meta:Sakhalin"{
-            ld{"sumartid for Sakhalin"}
+            ld{"sommartid for Sakhalin"}
             lg{"tidssone for Sakhalin"}
             ls{"normaltid for Sakhalin"}
         }
         "meta:Samoa"{
-            ld{"samoansk sumartid"}
+            ld{"samoansk sommartid"}
             lg{"samoansk tid"}
             ls{"samoansk normaltid"}
         }
@@ -1811,7 +1817,7 @@
             ls{"tahitisk tid"}
         }
         "meta:Taipei"{
-            ld{"sumartid for Taipei"}
+            ld{"sommartid for Taipei"}
             lg{"tidssone for Taipei"}
             ls{"normaltid for Taipei"}
         }
@@ -1822,7 +1828,7 @@
             ls{"tidssone for Tokelau"}
         }
         "meta:Tonga"{
-            ld{"tongansk sumartid"}
+            ld{"tongansk sommartid"}
             lg{"tongansk tid"}
             ls{"tongansk normaltid"}
         }
@@ -1830,7 +1836,7 @@
             ls{"tidssone for Chuukøyane"}
         }
         "meta:Turkmenistan"{
-            ld{"turkmensk sumartid"}
+            ld{"turkmensk sommartid"}
             lg{"turkmensk tid"}
             ls{"turkmensk normaltid"}
         }
@@ -1838,17 +1844,17 @@
             ls{"tuvalsk tid"}
         }
         "meta:Uruguay"{
-            ld{"uruguayansk sumartid"}
+            ld{"uruguayansk sommartid"}
             lg{"uruguayansk tid"}
             ls{"uruguayansk normaltid"}
         }
         "meta:Uzbekistan"{
-            ld{"usbekisk sumartid"}
+            ld{"usbekisk sommartid"}
             lg{"usbekisk tid"}
             ls{"usbekisk normaltid"}
         }
         "meta:Vanuatu"{
-            ld{"vanuatisk sumartid"}
+            ld{"vanuatisk sommartid"}
             lg{"vanuatisk tid"}
             ls{"vanuatisk normaltid"}
         }
@@ -1856,12 +1862,12 @@
             ls{"venezuelansk tid"}
         }
         "meta:Vladivostok"{
-            ld{"sumartid for Vladivostok"}
+            ld{"sommartid for Vladivostok"}
             lg{"tidssone for Vladivostok"}
             ls{"normaltid for Vladivostok"}
         }
         "meta:Volgograd"{
-            ld{"sumartid for Volgograd"}
+            ld{"sommartid for Volgograd"}
             lg{"tidssone for Volgograd"}
             ls{"normaltid for Volgograd"}
         }
@@ -1875,12 +1881,12 @@
             ls{"tidssone for Wallis- og Futunaøyane"}
         }
         "meta:Yakutsk"{
-            ld{"sumartid for Jakutsk"}
+            ld{"sommartid for Jakutsk"}
             lg{"tidssone for Jakutsk"}
             ls{"normaltid for Jakutsk"}
         }
         "meta:Yekaterinburg"{
-            ld{"sumartid for Jekaterinburg"}
+            ld{"sommartid for Jekaterinburg"}
             lg{"tidssone for Jekaterinburg"}
             ls{"normaltid for Jekaterinburg"}
         }
@@ -1889,7 +1895,7 @@
         gmtZeroFormat{"GMT"}
         hourFormat{"+HH:mm;-HH:mm"}
         regionFormat{"tidssone for {0}"}
-        regionFormatDaylight{"sumartid – {0}"}
+        regionFormatDaylight{"sommartid – {0}"}
         regionFormatStandard{"normaltid – {0}"}
     }
 }
diff --git a/icu4c/source/data/zone/nn_NO.txt b/icu4c/source/data/zone/nn_NO.txt
index 4e8a5f7..9eaa339 100644
--- a/icu4c/source/data/zone/nn_NO.txt
+++ b/icu4c/source/data/zone/nn_NO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/nnh.txt b/icu4c/source/data/zone/nnh.txt
index 967ded5..9704e96 100644
--- a/icu4c/source/data/zone/nnh.txt
+++ b/icu4c/source/data/zone/nnh.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nnh{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/no.txt b/icu4c/source/data/zone/no.txt
index 097a923..474d0b2 100644
--- a/icu4c/source/data/zone/no.txt
+++ b/icu4c/source/data/zone/no.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no{
     "%%ALIAS"{"nb"}
 }
diff --git a/icu4c/source/data/zone/no_NO.txt b/icu4c/source/data/zone/no_NO.txt
index 188a8a4..5d7f859 100644
--- a/icu4c/source/data/zone/no_NO.txt
+++ b/icu4c/source/data/zone/no_NO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no_NO{
     "%%ALIAS"{"nb_NO"}
 }
diff --git a/icu4c/source/data/zone/no_NO_NY.txt b/icu4c/source/data/zone/no_NO_NY.txt
index aa897fe..c900df7 100644
--- a/icu4c/source/data/zone/no_NO_NY.txt
+++ b/icu4c/source/data/zone/no_NO_NY.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 no_NO_NY{
     "%%ALIAS"{"nn_NO"}
 }
diff --git a/icu4c/source/data/zone/nus.txt b/icu4c/source/data/zone/nus.txt
index 4ca9779..86c260b 100644
--- a/icu4c/source/data/zone/nus.txt
+++ b/icu4c/source/data/zone/nus.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nus{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/nyn.txt b/icu4c/source/data/zone/nyn.txt
index ebf1943..2b1cd30 100644
--- a/icu4c/source/data/zone/nyn.txt
+++ b/icu4c/source/data/zone/nyn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 nyn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/om.txt b/icu4c/source/data/zone/om.txt
index 5bf988a..c4f5b4e 100644
--- a/icu4c/source/data/zone/om.txt
+++ b/icu4c/source/data/zone/om.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 om{
-    Version{"37"}
     zoneStrings{
         gmtFormat{"GMT{0}"}
         hourFormat{"+HH:mm;-HH:mm"}
diff --git a/icu4c/source/data/zone/or.txt b/icu4c/source/data/zone/or.txt
index 62951d3..ef8def6 100644
--- a/icu4c/source/data/zone/or.txt
+++ b/icu4c/source/data/zone/or.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 or{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"ଆବିଦଜାନ"}
diff --git a/icu4c/source/data/zone/os.txt b/icu4c/source/data/zone/os.txt
index 0984ce9..1e24c96 100644
--- a/icu4c/source/data/zone/os.txt
+++ b/icu4c/source/data/zone/os.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 os{
-    Version{"37"}
     zoneStrings{
         "Asia:Tbilisi"{
             ec{"Тбилис"}
diff --git a/icu4c/source/data/zone/pa.txt b/icu4c/source/data/zone/pa.txt
index a859350..f9b6944 100644
--- a/icu4c/source/data/zone/pa.txt
+++ b/icu4c/source/data/zone/pa.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"ਅਬੀਦਜਾਨ"}
@@ -1740,7 +1740,7 @@
             ls{"ਨੀਊ ਵੇਲਾ"}
         }
         "meta:Norfolk"{
-            ld{"ਨੋਰਫੌਕ ਆਈਲੈਂਡ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ"}
+            ld{"ਨੋਰਫੌਕ ਆਈਲੈਂਡ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ"}
             lg{"ਨੋਰਫੌਕ ਆਈਲੈਂਡ ਵੇਲਾ"}
             ls{"ਨੋਰਫੌਕ ਆਈਲੈਂਡ ਮਿਆਰੀ ਵੇਲਾ"}
         }
diff --git a/icu4c/source/data/zone/pa_Arab.txt b/icu4c/source/data/zone/pa_Arab.txt
index bb44635..1b371d8 100644
--- a/icu4c/source/data/zone/pa_Arab.txt
+++ b/icu4c/source/data/zone/pa_Arab.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_Arab{
     %%Parent{"root"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/pa_Arab_PK.txt b/icu4c/source/data/zone/pa_Arab_PK.txt
index e6b5861..3b1bc42 100644
--- a/icu4c/source/data/zone/pa_Arab_PK.txt
+++ b/icu4c/source/data/zone/pa_Arab_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/pa_Guru.txt b/icu4c/source/data/zone/pa_Guru.txt
index a0ee569..f10658f 100644
--- a/icu4c/source/data/zone/pa_Guru.txt
+++ b/icu4c/source/data/zone/pa_Guru.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_Guru{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/pa_Guru_IN.txt b/icu4c/source/data/zone/pa_Guru_IN.txt
index adeae3f..f67b7c3 100644
--- a/icu4c/source/data/zone/pa_Guru_IN.txt
+++ b/icu4c/source/data/zone/pa_Guru_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/pa_IN.txt b/icu4c/source/data/zone/pa_IN.txt
index b18bba6..0c963d7 100644
--- a/icu4c/source/data/zone/pa_IN.txt
+++ b/icu4c/source/data/zone/pa_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_IN{
     "%%ALIAS"{"pa_Guru_IN"}
 }
diff --git a/icu4c/source/data/zone/pa_PK.txt b/icu4c/source/data/zone/pa_PK.txt
index 1c66c7b..29612ad 100644
--- a/icu4c/source/data/zone/pa_PK.txt
+++ b/icu4c/source/data/zone/pa_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pa_PK{
     "%%ALIAS"{"pa_Arab_PK"}
 }
diff --git a/icu4c/source/data/zone/pcm.txt b/icu4c/source/data/zone/pcm.txt
index cfd7018..1f9117b 100644
--- a/icu4c/source/data/zone/pcm.txt
+++ b/icu4c/source/data/zone/pcm.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pcm{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Ábijan"}
@@ -1704,7 +1704,7 @@
             ls{"Niúẹ Taim"}
         }
         "meta:Norfolk"{
-            ld{"Nọ́rfọ́lk Aíland Họ́t Sízin Taim"}
+            ld{"Nọ́rfọ́lk Aíland Délaít Taim"}
             lg{"Nọ́rfọ́lk Aíland Taim"}
             ls{"Nọ́rfọ́lk Aíland Fíksd Taim"}
         }
diff --git a/icu4c/source/data/zone/pl.txt b/icu4c/source/data/zone/pl.txt
index 398ee00..6c087aa 100644
--- a/icu4c/source/data/zone/pl.txt
+++ b/icu4c/source/data/zone/pl.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pl{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidżan"}
@@ -1409,6 +1409,9 @@
             lg{"czas Bangladesz"}
             ls{"Bangladesz (czas standardowy)"}
         }
+        "meta:Bhutan"{
+            ls{"czas Bhutan"}
+        }
         "meta:Bolivia"{
             ls{"czas Boliwia"}
         }
@@ -1417,6 +1420,9 @@
             lg{"czas Brasília"}
             ls{"Brasília (czas standardowy)"}
         }
+        "meta:Brunei"{
+            ls{"czas Brunei"}
+        }
         "meta:Cape_Verde"{
             ld{"Wyspy Zielonego Przylądka (czas letni)"}
             lg{"czas Wyspy Zielonego Przylądka"}
@@ -1466,6 +1472,9 @@
             lg{"czas Kuba"}
             ls{"Kuba (czas standardowy)"}
         }
+        "meta:Davis"{
+            ls{"czas Davis"}
+        }
         "meta:DumontDUrville"{
             ls{"czas Dumont-d’Urville"}
         }
@@ -1526,6 +1535,9 @@
         "meta:GMT"{
             ls{"czas uniwersalny"}
         }
+        "meta:Galapagos"{
+            ls{"czas Galapagos"}
+        }
         "meta:Gambier"{
             ls{"czas Wyspy Gambiera"}
         }
@@ -1622,6 +1634,9 @@
             lg{"czas Korea"}
             ls{"Korea (czas standardowy)"}
         }
+        "meta:Kosrae"{
+            ls{"czas Kosrae"}
+        }
         "meta:Krasnoyarsk"{
             ld{"Krasnojarsk (czas letni)"}
             lg{"czas Krasnojarsk"}
@@ -1638,6 +1653,9 @@
             lg{"czas Lord Howe"}
             ls{"Lord Howe (czas standardowy)"}
         }
+        "meta:Macquarie"{
+            ls{"czas Macquarie"}
+        }
         "meta:Magadan"{
             ld{"Magadan (czas letni)"}
             lg{"czas Magadan"}
@@ -1660,6 +1678,9 @@
             lg{"czas Mauritius"}
             ls{"Mauritius (czas standardowy)"}
         }
+        "meta:Mawson"{
+            ls{"czas Mawson"}
+        }
         "meta:Mexico_Northwest"{
             ld{"Meksyk Północno-Zachodni (czas letni)"}
             lg{"czas Meksyk Północno-Zachodni"}
@@ -1683,6 +1704,12 @@
         "meta:Myanmar"{
             ls{"czas Mjanma"}
         }
+        "meta:Nauru"{
+            ls{"czas Nauru"}
+        }
+        "meta:Nepal"{
+            ls{"czas Nepal"}
+        }
         "meta:New_Caledonia"{
             ld{"Nowa Kaledonia (czas letni)"}
             lg{"czas Nowa Kaledonia"}
@@ -1698,6 +1725,14 @@
             lg{"czas Nowa Fundlandia"}
             ls{"Nowa Fundlandia (czas standardowy)"}
         }
+        "meta:Niue"{
+            ls{"czas Niue"}
+        }
+        "meta:Norfolk"{
+            ld{"Norfolk (czas letni)"}
+            lg{"czas Norfolk"}
+            ls{"Norfolk (czas standardowy)"}
+        }
         "meta:Noronha"{
             ld{"Fernando de Noronha (czas letni)"}
             lg{"czas Fernando de Noronha"}
@@ -1718,6 +1753,9 @@
             lg{"czas Pakistan"}
             ls{"Pakistan (czas standardowy)"}
         }
+        "meta:Palau"{
+            ls{"czas Palau"}
+        }
         "meta:Papua_New_Guinea"{
             ls{"czas Papua-Nowa Gwinea"}
         }
@@ -1744,12 +1782,21 @@
             lg{"czas Saint-Pierre i Miquelon"}
             ls{"Saint-Pierre i Miquelon (czas standardowy)"}
         }
+        "meta:Pitcairn"{
+            ls{"czas Pitcairn"}
+        }
         "meta:Ponape"{
             ls{"czas Pohnpei"}
         }
         "meta:Pyongyang"{
             ls{"czas Pjongjang"}
         }
+        "meta:Reunion"{
+            ls{"czas Reunion"}
+        }
+        "meta:Rothera"{
+            ls{"czas Rothera"}
+        }
         "meta:Sakhalin"{
             ld{"Sachalin (czas letni)"}
             lg{"czas Sachalin"}
@@ -1780,6 +1827,12 @@
         "meta:Suriname"{
             ls{"czas Surinam"}
         }
+        "meta:Syowa"{
+            ls{"czas Syowa"}
+        }
+        "meta:Tahiti"{
+            ls{"czas Tahiti"}
+        }
         "meta:Taipei"{
             ld{"Tajpej (czas letni)"}
             lg{"czas Tajpej"}
@@ -1788,6 +1841,9 @@
         "meta:Tajikistan"{
             ls{"czas Tadżykistan"}
         }
+        "meta:Tokelau"{
+            ls{"czas Tokelau"}
+        }
         "meta:Tonga"{
             ld{"Tonga (czas letni)"}
             lg{"czas Tonga"}
@@ -1801,6 +1857,9 @@
             lg{"czas Turkmenistan"}
             ls{"Turkmenistan (czas standardowy)"}
         }
+        "meta:Tuvalu"{
+            ls{"czas Tuvalu"}
+        }
         "meta:Uruguay"{
             ld{"Urugwaj (czas letni)"}
             lg{"czas Urugwaj"}
@@ -1832,6 +1891,9 @@
         "meta:Vostok"{
             ls{"czas Wostok"}
         }
+        "meta:Wake"{
+            ls{"czas Wake"}
+        }
         "meta:Wallis"{
             ls{"czas Wallis i Futuna"}
         }
diff --git a/icu4c/source/data/zone/ps.txt b/icu4c/source/data/zone/ps.txt
index 66174c1..d3b655b 100644
--- a/icu4c/source/data/zone/ps.txt
+++ b/icu4c/source/data/zone/ps.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ps{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"ابيجان"}
@@ -964,7 +964,7 @@
             ec{"اندورا"}
         }
         "Europe:Astrakhan"{
-            ec{"آسترخان"}
+            ec{"استرا خان"}
         }
         "Europe:Athens"{
             ec{"ايتنز"}
@@ -1482,7 +1482,7 @@
             ls{"د اکوادور وخت"}
         }
         "meta:Europe_Central"{
-            ld{"وسطي اروپايي د اوړي وخت"}
+            ld{"مرکزي اروپايياوړي وخت"}
             lg{"مرکزي اروپايي وخت"}
             ls{"د مرکزي اروپا معیاري وخت"}
         }
@@ -1708,7 +1708,7 @@
         }
         "meta:Norfolk"{
             ld{"د نورفکاس ټاپو اوړي وخت"}
-            lg{"د نورفکاس ټاپو وخت"}
+            lg{"نورفوک ټاپو وخت"}
             ls{"د نورفکاس ټاپو معياري وخت"}
         }
         "meta:Noronha"{
@@ -1877,7 +1877,7 @@
         }
         "meta:Yekaterinburg"{
             ld{"د ياکټرنبرګ د اوړي وخت"}
-            lg{"د ياکيټرنبرګ وخت"}
+            lg{"یکاټیرینبرګ وخت"}
             ls{"د ياکيټرنبرګ معياري وخت"}
         }
         fallbackFormat{"{1} ({0})"}
diff --git a/icu4c/source/data/zone/ps_PK.txt b/icu4c/source/data/zone/ps_PK.txt
index d98c89f..816823d 100644
--- a/icu4c/source/data/zone/ps_PK.txt
+++ b/icu4c/source/data/zone/ps_PK.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ps_PK{
-    Version{"37"}
     zoneStrings{
         "Africa:Harare"{
             ec{"هرارے"}
diff --git a/icu4c/source/data/zone/pt.txt b/icu4c/source/data/zone/pt.txt
index 413d426..c86aa81 100644
--- a/icu4c/source/data/zone/pt.txt
+++ b/icu4c/source/data/zone/pt.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -816,6 +816,9 @@
         "Asia:Riyadh"{
             ec{"Riade"}
         }
+        "Asia:Saigon"{
+            ec{"Cidade de Ho Chi Minh"}
+        }
         "Asia:Sakhalin"{
             ec{"Sacalina"}
         }
@@ -892,7 +895,7 @@
             ec{"Cabo Verde"}
         }
         "Atlantic:Faeroe"{
-            ec{"Ilhas Faroe"}
+            ec{"Ilhas Faroé"}
         }
         "Atlantic:Madeira"{
             ec{"Madeira"}
@@ -1840,7 +1843,7 @@
             ls{"Horário de Seicheles"}
         }
         "meta:Singapore"{
-            ls{"Horário Padrão de Cingapura"}
+            ls{"Horário Padrão de Singapura"}
         }
         "meta:Solomon"{
             ls{"Horário das Ilhas Salomão"}
diff --git a/icu4c/source/data/zone/pt_AO.txt b/icu4c/source/data/zone/pt_AO.txt
index 00495fb..acafe58 100644
--- a/icu4c/source/data/zone/pt_AO.txt
+++ b/icu4c/source/data/zone/pt_AO.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_AO{
     %%Parent{"pt_PT"}
-    Version{"37"}
     zoneStrings{
         "meta:Azores"{
             sd{"∅∅∅"}
diff --git a/icu4c/source/data/zone/pt_CH.txt b/icu4c/source/data/zone/pt_CH.txt
index 3a679be..67d661e 100644
--- a/icu4c/source/data/zone/pt_CH.txt
+++ b/icu4c/source/data/zone/pt_CH.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_CH{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/pt_CV.txt b/icu4c/source/data/zone/pt_CV.txt
index 6faee22..ec15ca2 100644
--- a/icu4c/source/data/zone/pt_CV.txt
+++ b/icu4c/source/data/zone/pt_CV.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_CV{
     %%Parent{"pt_PT"}
-    Version{"37"}
     zoneStrings{
         "meta:Azores"{
             sd{"∅∅∅"}
diff --git a/icu4c/source/data/zone/pt_GQ.txt b/icu4c/source/data/zone/pt_GQ.txt
index 7cbf771..9364da9 100644
--- a/icu4c/source/data/zone/pt_GQ.txt
+++ b/icu4c/source/data/zone/pt_GQ.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_GQ{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/pt_GW.txt b/icu4c/source/data/zone/pt_GW.txt
index faf8977..3551ac5 100644
--- a/icu4c/source/data/zone/pt_GW.txt
+++ b/icu4c/source/data/zone/pt_GW.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_GW{
     %%Parent{"pt_PT"}
-    Version{"37"}
     zoneStrings{
         "meta:Azores"{
             sd{"∅∅∅"}
diff --git a/icu4c/source/data/zone/pt_LU.txt b/icu4c/source/data/zone/pt_LU.txt
index ebead8d..c402ea2 100644
--- a/icu4c/source/data/zone/pt_LU.txt
+++ b/icu4c/source/data/zone/pt_LU.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_LU{
     %%Parent{"pt_PT"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/pt_MO.txt b/icu4c/source/data/zone/pt_MO.txt
index b23eb84..513b911 100644
--- a/icu4c/source/data/zone/pt_MO.txt
+++ b/icu4c/source/data/zone/pt_MO.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_MO{
     %%Parent{"pt_PT"}
-    Version{"37"}
     zoneStrings{
         "meta:Azores"{
             sd{"∅∅∅"}
diff --git a/icu4c/source/data/zone/pt_MZ.txt b/icu4c/source/data/zone/pt_MZ.txt
index 451ddf5..00ac52e 100644
--- a/icu4c/source/data/zone/pt_MZ.txt
+++ b/icu4c/source/data/zone/pt_MZ.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_MZ{
     %%Parent{"pt_PT"}
-    Version{"37"}
     zoneStrings{
         "meta:Azores"{
             sd{"∅∅∅"}
diff --git a/icu4c/source/data/zone/pt_PT.txt b/icu4c/source/data/zone/pt_PT.txt
index 4d22d55..e34021f 100644
--- a/icu4c/source/data/zone/pt_PT.txt
+++ b/icu4c/source/data/zone/pt_PT.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_PT{
-    Version{"37"}
     zoneStrings{
         "Africa:Addis_Ababa"{
             ec{"Adis-Abeba"}
@@ -129,9 +129,6 @@
         "Asia:Rangoon"{
             ec{"Yangon"}
         }
-        "Asia:Saigon"{
-            ec{"Cidade de Ho Chi Minh"}
-        }
         "Asia:Taipei"{
             ec{"Taipé"}
         }
@@ -189,6 +186,9 @@
         "Europe:San_Marino"{
             ec{"São Marinho"}
         }
+        "Europe:Tallinn"{
+            ec{"Talim"}
+        }
         "Indian:Christmas"{
             ec{"Ilha do Natal"}
         }
@@ -702,7 +702,9 @@
             ls{"Hora de Niuê"}
         }
         "meta:Norfolk"{
-            ls{"Hora da Ilha Norfolk"}
+            ld{"Hora de verão da Ilha Norfolk"}
+            lg{"Hora da Ilha Norfolk"}
+            ls{"Hora padrão da Ilha Norfolk"}
         }
         "meta:Noronha"{
             ld{"Hora de verão de Fernando de Noronha"}
diff --git a/icu4c/source/data/zone/pt_ST.txt b/icu4c/source/data/zone/pt_ST.txt
index 1816386..c06bfee 100644
--- a/icu4c/source/data/zone/pt_ST.txt
+++ b/icu4c/source/data/zone/pt_ST.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_ST{
     %%Parent{"pt_PT"}
-    Version{"37"}
     zoneStrings{
         "meta:Azores"{
             sd{"∅∅∅"}
diff --git a/icu4c/source/data/zone/pt_TL.txt b/icu4c/source/data/zone/pt_TL.txt
index bd68cce..b09d1d3 100644
--- a/icu4c/source/data/zone/pt_TL.txt
+++ b/icu4c/source/data/zone/pt_TL.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 pt_TL{
     %%Parent{"pt_PT"}
-    Version{"37"}
     zoneStrings{
         "meta:Azores"{
             sd{"∅∅∅"}
diff --git a/icu4c/source/data/zone/qu.txt b/icu4c/source/data/zone/qu.txt
index abd6b3b..13b05e6 100644
--- a/icu4c/source/data/zone/qu.txt
+++ b/icu4c/source/data/zone/qu.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 qu{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abiyán"}
diff --git a/icu4c/source/data/zone/qu_BO.txt b/icu4c/source/data/zone/qu_BO.txt
index 935df64..92ab58d 100644
--- a/icu4c/source/data/zone/qu_BO.txt
+++ b/icu4c/source/data/zone/qu_BO.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 qu_BO{
-    Version{"37"}
     zoneStrings{
         "meta:Bolivia"{
             ss{"BOT"}
diff --git a/icu4c/source/data/zone/qu_EC.txt b/icu4c/source/data/zone/qu_EC.txt
index b3fca82..0667162 100644
--- a/icu4c/source/data/zone/qu_EC.txt
+++ b/icu4c/source/data/zone/qu_EC.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 qu_EC{
-    Version{"37"}
     zoneStrings{
         "meta:Ecuador"{
             ss{"ECT"}
diff --git a/icu4c/source/data/zone/rm.txt b/icu4c/source/data/zone/rm.txt
index 76ab442..9a9ae34 100644
--- a/icu4c/source/data/zone/rm.txt
+++ b/icu4c/source/data/zone/rm.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rm{
-    Version{"37"}
     zoneStrings{
         "Africa:Addis_Ababa"{
             ec{"Addis Abeba"}
@@ -19,7 +19,7 @@
             ec{"Dschibuti"}
         }
         "Africa:El_Aaiun"{
-            ec{"El Ayun"}
+            ec{"El Aaiún"}
         }
         "Africa:Khartoum"{
             ec{"Khartum"}
@@ -72,9 +72,6 @@
         "America:Cordoba"{
             ec{"Córdoba"}
         }
-        "America:Costa_Rica"{
-            ec{"San José"}
-        }
         "America:Cuiaba"{
             ec{"Cuiabá"}
         }
@@ -150,9 +147,6 @@
         "America:North_Dakota:New_Salem"{
             ec{"North Dakota (New Salem)"}
         }
-        "America:Port_of_Spain"{
-            ec{"Port-of-Spain"}
-        }
         "America:Sao_Paulo"{
             ec{"São Paulo"}
         }
@@ -232,7 +226,7 @@
             ec{"Riyad"}
         }
         "Asia:Saigon"{
-            ec{"Ho Chi Minh"}
+            ec{"Citad da Ho Chi Minh"}
         }
         "Asia:Sakhalin"{
             ec{"Sachalin"}
@@ -291,8 +285,11 @@
         "Atlantic:Stanley"{
             ec{"Port Stanley"}
         }
+        "Etc:UTC"{
+            ls{"Temp universal coordinà"}
+        }
         "Etc:Unknown"{
-            ec{"zona betg enconuschenta"}
+            ec{"citad nunenconuschenta"}
         }
         "Europe:Athens"{
             ec{"Athen"}
@@ -303,9 +300,6 @@
         "Europe:Bucharest"{
             ec{"Bucarest"}
         }
-        "Europe:Copenhagen"{
-            ec{"Copenhaghen"}
-        }
         "Europe:Guernsey"{
             ec{"Saint Peter Port"}
         }
@@ -334,10 +328,7 @@
             ec{"Tirana"}
         }
         "Europe:Uzhgorod"{
-            ec{"Uschgorod"}
-        }
-        "Europe:Vatican"{
-            ec{"Citad dal Vatican"}
+            ec{"Uschhorod"}
         }
         "Europe:Warsaw"{
             ec{"Varsovia"}
@@ -348,9 +339,6 @@
         "Europe:Zurich"{
             ec{"Turitg"}
         }
-        "Indian:Chagos"{
-            ec{"Diego Garcia"}
-        }
         "Indian:Christmas"{
             ec{"Flying Fish Cove"}
         }
@@ -360,9 +348,6 @@
         "Indian:Comoro"{
             ec{"Comoras"}
         }
-        "Indian:Kerguelen"{
-            ec{"Port-aux-Français"}
-        }
         "Indian:Maldives"{
             ec{"Maldivas"}
         }
@@ -420,8 +405,54 @@
         "Pacific:Wallis"{
             ec{"Matāʻutu"}
         }
+        "meta:America_Central"{
+            ld{"Temp da stad central"}
+            lg{"Temp central"}
+            ls{"Temp da standard central"}
+        }
+        "meta:America_Eastern"{
+            ld{"Temp da stad oriental"}
+            lg{"Temp oriental"}
+            ls{"Temp da standard oriental"}
+        }
+        "meta:America_Mountain"{
+            ld{"Temp da stad da muntogna"}
+            lg{"Temp da muntogna"}
+            ls{"Temp da standard da muntogna"}
+        }
+        "meta:America_Pacific"{
+            ld{"Temp da stad pacific"}
+            lg{"Temp pacific"}
+            ls{"Temp da standard pacific"}
+        }
+        "meta:Atlantic"{
+            ld{"Temp da stad atlantic"}
+            lg{"Temp atlantic"}
+            ls{"Temp da standard atlantic"}
+        }
+        "meta:Europe_Central"{
+            ld{"Temp da stad da l’Europa Centrala"}
+            lg{"Temp da l’Europa Centrala"}
+            ls{"Temp da standard da l’Europa Centrala"}
+        }
+        "meta:Europe_Eastern"{
+            ld{"Temp da stad da l’Europa Orientala"}
+            lg{"Temp da l’Europa Orientala"}
+            ls{"Temp da standard da l’Europa Orientala"}
+        }
+        "meta:Europe_Western"{
+            ld{"Temp da stad da l’Europa dal Vest"}
+            lg{"Temp da l’Europa dal Vest"}
+            ls{"Temp da standard da l’Europa dal Vest"}
+        }
+        "meta:GMT"{
+            ls{"Temp Greenwich"}
+        }
         fallbackFormat{"{1} ({0})"}
         gmtFormat{"GMT{0}"}
         hourFormat{"+HH:mm;-HH:mm"}
+        regionFormat{"temp: {0}"}
+        regionFormatDaylight{"temp da stad: {0}"}
+        regionFormatStandard{"temp normal: {0}"}
     }
 }
diff --git a/icu4c/source/data/zone/rn.txt b/icu4c/source/data/zone/rn.txt
index 5a9f4db..4477138 100644
--- a/icu4c/source/data/zone/rn.txt
+++ b/icu4c/source/data/zone/rn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/ro.txt b/icu4c/source/data/zone/ro.txt
index 62c0531..cbc4d9d 100644
--- a/icu4c/source/data/zone/ro.txt
+++ b/icu4c/source/data/zone/ro.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ro{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -898,7 +898,7 @@
             ec{"Capul Verde"}
         }
         "Atlantic:Faeroe"{
-            ec{"Faroe"}
+            ec{"Feroe"}
         }
         "Atlantic:Madeira"{
             ec{"Madeira"}
@@ -1065,7 +1065,7 @@
             ec{"Paris"}
         }
         "Europe:Podgorica"{
-            ec{"Podgorica"}
+            ec{"Podgorița"}
         }
         "Europe:Prague"{
             ec{"Praga"}
@@ -1316,6 +1316,11 @@
             lg{"Ora din Alaska"}
             ls{"Ora standard din Alaska"}
         }
+        "meta:Almaty"{
+            ld{"Ora de vară Almaty"}
+            lg{"Ora Almaty"}
+            ls{"Ora standard Almaty"}
+        }
         "meta:Amazon"{
             ld{"Ora de vară a Amazonului"}
             lg{"Ora Amazonului"}
@@ -1351,6 +1356,16 @@
             lg{"Ora din Apia"}
             ls{"Ora standard din Apia"}
         }
+        "meta:Aqtau"{
+            ld{"Ora de vară a zonei Aqtau"}
+            lg{"Ora Aqtau"}
+            ls{"Ora standard Aqtau"}
+        }
+        "meta:Aqtobe"{
+            ld{"Ora de vară a zonei Aqtobe"}
+            lg{"Ora Aqtobe"}
+            ls{"Ora standard Aqtobe"}
+        }
         "meta:Arabian"{
             ld{"Ora de vară arabă"}
             lg{"Ora arabă"}
@@ -1732,9 +1747,9 @@
             ls{"Ora din Niue"}
         }
         "meta:Norfolk"{
-            ld{"Ora de vară Insulelor Norfolk"}
-            lg{"Ora Insulelor Norfolk"}
-            ls{"Ora standard Insulelor Norfolk"}
+            ld{"Ora de vară a Insulei Norfolk"}
+            lg{"Ora Insulei Norfolk"}
+            ls{"Ora standard a Insulei Norfolk"}
         }
         "meta:Noronha"{
             ld{"Ora de vară din Fernando de Noronha"}
diff --git a/icu4c/source/data/zone/rof.txt b/icu4c/source/data/zone/rof.txt
index 7f57cbd..589e60d 100644
--- a/icu4c/source/data/zone/rof.txt
+++ b/icu4c/source/data/zone/rof.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rof{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/root.txt b/icu4c/source/data/zone/root.txt
index 4552cd4..5089593 100644
--- a/icu4c/source/data/zone/root.txt
+++ b/icu4c/source/data/zone/root.txt
@@ -1,7 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 root{
-    Version{"37"}
+    Version{"38.1"}
     zoneStrings{
         "Africa:Asmera"{
             ec{"Asmara"}
diff --git a/icu4c/source/data/zone/ru.txt b/icu4c/source/data/zone/ru.txt
index 382d51a..58412d2 100644
--- a/icu4c/source/data/zone/ru.txt
+++ b/icu4c/source/data/zone/ru.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ru{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Абиджан"}
@@ -1523,7 +1523,7 @@
             ls{"Восточная Европа, стандартное время"}
         }
         "meta:Europe_Further_Eastern"{
-            ls{"Минское время"}
+            ls{"Московское время"}
         }
         "meta:Europe_Western"{
             ld{"Западная Европа, летнее время"}
diff --git a/icu4c/source/data/zone/rw.txt b/icu4c/source/data/zone/rw.txt
index 2836457..853dad7 100644
--- a/icu4c/source/data/zone/rw.txt
+++ b/icu4c/source/data/zone/rw.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rw{
-    Version{"37"}
     zoneStrings{
         gmtFormat{"GMT{0}"}
         hourFormat{"+HH:mm;-HH:mm"}
diff --git a/icu4c/source/data/zone/rwk.txt b/icu4c/source/data/zone/rwk.txt
index ab5706f..d206246 100644
--- a/icu4c/source/data/zone/rwk.txt
+++ b/icu4c/source/data/zone/rwk.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 rwk{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/sa.txt b/icu4c/source/data/zone/sa.txt
new file mode 100644
index 0000000..75c16ac
--- /dev/null
+++ b/icu4c/source/data/zone/sa.txt
@@ -0,0 +1,59 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
+sa{
+    zoneStrings{
+        "Etc:UTC"{
+            ls{"समन्वितः वैश्विक समय:"}
+        }
+        "Etc:Unknown"{
+            ec{"अज्ञात नगरी"}
+        }
+        "meta:America_Central"{
+            ld{"उत्तर अमेरिका: मध्य अयाम समयः"}
+            lg{"उत्तर अमेरिका: मध्य समयः"}
+            ls{"उत्तर अमेरिका: मध्य आदर्श समयः"}
+        }
+        "meta:America_Eastern"{
+            ld{"उत्तर अमेरिका: पौर्व अयाम समय:"}
+            lg{"उत्तर अमेरिका: पौर्व समयः"}
+            ls{"उत्तर अमेरिका: पौर्व आदर्श समयः"}
+        }
+        "meta:America_Mountain"{
+            ld{"उत्तर अमेरिका: शैल अयाम समयः"}
+            lg{"उत्तर अमेरिका: शैल समयः"}
+            ls{"उत्तर अमेरिका: शैल आदर्श समयः"}
+        }
+        "meta:America_Pacific"{
+            ld{"उत्तर अमेरिका: सन्धिप्रिय अयाम समयः"}
+            lg{"उत्तर अमेरिका: सन्धिप्रिय समयः"}
+            ls{"उत्तर अमेरिका: सन्धिप्रिय आदर्श समयः"}
+        }
+        "meta:Atlantic"{
+            ld{"अटलाण्टिक अयाम समयः"}
+            lg{"अटलाण्टिक समयः"}
+            ls{"अटलाण्टिक आदर्श समयः"}
+        }
+        "meta:Europe_Central"{
+            ld{"मध्य यूरोपीय ग्रीष्म समयः"}
+            lg{"मध्य यूरोपीय समयः"}
+            ls{"मध्य यूरोपीय आदर्श समयः"}
+        }
+        "meta:Europe_Eastern"{
+            ld{"पौर्व यूरोपीय ग्रीष्म समयः"}
+            lg{"पौर्व यूरोपीय समयः"}
+            ls{"पौर्व यूरोपीय आदर्श समयः"}
+        }
+        "meta:Europe_Western"{
+            ld{"पाश्चात्य यूरोपीय ग्रीष्म समयः"}
+            lg{"पाश्चात्य यूरोपीय समयः"}
+            ls{"पाश्चात्य यूरोपीय आदर्श समयः"}
+        }
+        "meta:GMT"{
+            ls{"ग्रीनविच मीन समयः"}
+        }
+        regionFormat{"{0} समय:"}
+        regionFormatDaylight{"{0} डेलाइट समय:"}
+        regionFormatStandard{"{0} मानक समय:"}
+    }
+}
diff --git a/icu4c/source/data/zone/sah.txt b/icu4c/source/data/zone/sah.txt
index 5db44ca..8830d9d 100644
--- a/icu4c/source/data/zone/sah.txt
+++ b/icu4c/source/data/zone/sah.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sah{
-    Version{"37"}
     zoneStrings{
         "Asia:Almaty"{
             ec{"Алматы"}
diff --git a/icu4c/source/data/zone/saq.txt b/icu4c/source/data/zone/saq.txt
index 1aa6942..781713d 100644
--- a/icu4c/source/data/zone/saq.txt
+++ b/icu4c/source/data/zone/saq.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 saq{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/sat.txt b/icu4c/source/data/zone/sat.txt
index 9cbb214..5da992c 100644
--- a/icu4c/source/data/zone/sat.txt
+++ b/icu4c/source/data/zone/sat.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat{
-    Version{"37"}
     zoneStrings{
         "Etc:UTC"{
             ls{"ᱠᱚᱨᱰᱤᱱᱮᱴᱮᱰ ᱭᱩᱱᱤᱣᱟᱨᱥᱟᱞ ᱚᱠᱛᱚ"}
diff --git a/icu4c/source/data/zone/sat_IN.txt b/icu4c/source/data/zone/sat_IN.txt
index c4976b4..15af329 100644
--- a/icu4c/source/data/zone/sat_IN.txt
+++ b/icu4c/source/data/zone/sat_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat_IN{
     "%%ALIAS"{"sat_Olck_IN"}
 }
diff --git a/icu4c/source/data/zone/sat_Olck.txt b/icu4c/source/data/zone/sat_Olck.txt
index 0d7225f..f09b6a0 100644
--- a/icu4c/source/data/zone/sat_Olck.txt
+++ b/icu4c/source/data/zone/sat_Olck.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sat_Olck{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/sat_Olck_IN.txt b/icu4c/source/data/zone/sat_Olck_IN.txt
index 8bda43c..0a44bdb 100644
--- a/icu4c/source/data/zone/sat_Olck_IN.txt
+++ b/icu4c/source/data/zone/sat_Olck_IN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/sbp.txt b/icu4c/source/data/zone/sbp.txt
index b283c92..6c2e085 100644
--- a/icu4c/source/data/zone/sbp.txt
+++ b/icu4c/source/data/zone/sbp.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sbp{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/sd.txt b/icu4c/source/data/zone/sd.txt
index e9adca4..260087c 100644
--- a/icu4c/source/data/zone/sd.txt
+++ b/icu4c/source/data/zone/sd.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"ابي جان"}
@@ -757,7 +757,7 @@
             ec{"ڪريسنويارسڪ"}
         }
         "Asia:Kuala_Lumpur"{
-            ec{"ڪوللمپور"}
+            ec{"ڪوالالمپور"}
         }
         "Asia:Kuching"{
             ec{"کوچنگ"}
@@ -916,7 +916,7 @@
             ec{"اسٽينلي"}
         }
         "Australia:Adelaide"{
-            ec{"ايڊيلينڊ"}
+            ec{"ايڊيليڊ"}
         }
         "Australia:Brisbane"{
             ec{"برسبين"}
@@ -1023,7 +1023,7 @@
             ec{"ڪلينن گراڊ"}
         }
         "Europe:Kiev"{
-            ec{"ڪيف"}
+            ec{"ڪِيو"}
         }
         "Europe:Kirov"{
             ec{"ڪيروف"}
@@ -1105,7 +1105,7 @@
             ec{"ٽالن"}
         }
         "Europe:Tirane"{
-            ec{"اراني"}
+            ec{"تراني"}
         }
         "Europe:Ulyanovsk"{
             ec{"اليانوسڪ"}
@@ -1349,13 +1349,13 @@
         }
         "meta:Argentina"{
             ld{"ارجنٽائن جي اونهاري جو وقت"}
-            lg{"ارجنٽائن وقت"}
+            lg{"ارجنٽينا جو وقت"}
             ls{"ارجنٽائن معياري وقت"}
         }
         "meta:Argentina_Western"{
-            ld{"مغربي ارجنٽائن جي اونهاري جو وقت"}
-            lg{"مغربي ارجنٽائن وقت"}
-            ls{"مغربي ارجنٽائن جو معياري وقت"}
+            ld{"اولهه ارجنٽينا جي اونهاري جو وقت"}
+            lg{"اولهه ارجنٽينا جو وقت"}
+            ls{"اولهه ارجنٽينا جو معياري وقت"}
         }
         "meta:Armenia"{
             ld{"آرمينيا جي اونهاري جو وقت"}
@@ -1414,7 +1414,7 @@
             ls{"براسيليا جو معياري وقت"}
         }
         "meta:Brunei"{
-            ls{"برونائي داروالسلام جو وقت"}
+            ls{"برونائي دارالسلام جو وقت"}
         }
         "meta:Cape_Verde"{
             ld{"ڪيپ ورڊ جي اونهاري جو وقت"}
@@ -1436,7 +1436,7 @@
         }
         "meta:China"{
             ld{"چائنا جي ڏينهن جو وقت"}
-            lg{"چائنا جو وقت"}
+            lg{"چين جو وقت"}
             ls{"چائنا جو معياري وقت"}
         }
         "meta:Choibalsan"{
@@ -1496,9 +1496,9 @@
             ls{"وڌيڪ مشرقي يورپي وقت"}
         }
         "meta:Europe_Western"{
-            ld{"مغربي يورپي ڏينهن جو وقت"}
-            lg{"مغربي يورپي وقت"}
-            ls{"مغربي يورپي معياري وقت"}
+            ld{"اولهه يورپي ڏينهن جو وقت"}
+            lg{"اولهه يورپي وقت"}
+            ls{"اولهه يورپي معياري وقت"}
         }
         "meta:Falkland"{
             ld{"فاڪ لينڊ آئي لينڊ جي اونهاري جو وقت"}
@@ -1514,7 +1514,7 @@
             ls{"فرانسيسي گيانا جو وقت"}
         }
         "meta:French_Southern"{
-            ls{"فرانسيسي ڏاکڻي ۽ انٽارڪٽڪ جو وقت"}
+            ls{"فرانسيسي ڏاکڻيو ۽ انٽارڪٽڪ وقت"}
         }
         "meta:GMT"{
             ls{"گرين وچ مين ٽائيم"}
@@ -1544,7 +1544,7 @@
             ls{"مغربي گرين لينڊ جو معياري وقت"}
         }
         "meta:Gulf"{
-            ls{"خلج معياري وقت"}
+            ls{"خليجي معياري وقت"}
         }
         "meta:Guyana"{
             ls{"گيانائي وقت"}
@@ -1606,7 +1606,7 @@
             ls{"اوڀر قزاقستان جو وقت"}
         }
         "meta:Kazakhstan_Western"{
-            ls{"اولهه قزاقستان جو وقت"}
+            ls{"اولهه قازقستان جو وقت"}
         }
         "meta:Korea"{
             ld{"ڪوريا جي ڏينهن جو وقت"}
@@ -1622,7 +1622,7 @@
             ls{"ڪریسنویارسڪ جو معياري وقت"}
         }
         "meta:Kyrgystan"{
-            ls{"ڪرگزستان جو وقت"}
+            ls{"ڪرغزستان جو وقت"}
         }
         "meta:Line_Islands"{
             ls{"لائن آئي لينڊ جو وقت"}
@@ -1757,9 +1757,9 @@
             ls{"فونيڪس آئي لينڊ جو وقت"}
         }
         "meta:Pierre_Miquelon"{
-            ld{"سینٽ پیئر و میڪوئیلون جي ڏينهن جو وقت"}
-            lg{"سينٽ پيئر ائن ميڪوئلون جو وقت"}
-            ls{"سینٽ پیئر اَئن میڪوئلون جو مانائتو وقت"}
+            ld{"سينٽ پيئر ۽ ميڪلون جي ڏينهن جو وقت"}
+            lg{"سينٽ پيئر ۽ ميڪلون جو وقت"}
+            ls{"سينٽ پيئر ۽ ميڪلون جو معياري وقت"}
         }
         "meta:Pitcairn"{
             ls{"پٽڪيرن جو وقت"}
@@ -1768,7 +1768,7 @@
             ls{"پوناپي جو وقت"}
         }
         "meta:Pyongyang"{
-            ls{"شيانگ يانگ جو وقت"}
+            ls{"پيانگ يانگ جو وقت"}
         }
         "meta:Reunion"{
             ls{"ري يونين جو وقت"}
diff --git a/icu4c/source/data/zone/sd_Arab.txt b/icu4c/source/data/zone/sd_Arab.txt
index 52a97c8..c089e06 100644
--- a/icu4c/source/data/zone/sd_Arab.txt
+++ b/icu4c/source/data/zone/sd_Arab.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_Arab{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/sd_Arab_PK.txt b/icu4c/source/data/zone/sd_Arab_PK.txt
index 4a9803a..2e57dba 100644
--- a/icu4c/source/data/zone/sd_Arab_PK.txt
+++ b/icu4c/source/data/zone/sd_Arab_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/sd_Deva.txt b/icu4c/source/data/zone/sd_Deva.txt
index 1d5015e..9931bc2 100644
--- a/icu4c/source/data/zone/sd_Deva.txt
+++ b/icu4c/source/data/zone/sd_Deva.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_Deva{
     %%Parent{"root"}
-    Version{"37"}
     zoneStrings{
         "Etc:UTC"{
             ls{"आस्थानी चालू टाइमु"}
diff --git a/icu4c/source/data/zone/sd_PK.txt b/icu4c/source/data/zone/sd_PK.txt
index 7663600..b7def87 100644
--- a/icu4c/source/data/zone/sd_PK.txt
+++ b/icu4c/source/data/zone/sd_PK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sd_PK{
     "%%ALIAS"{"sd_Arab_PK"}
 }
diff --git a/icu4c/source/data/zone/se.txt b/icu4c/source/data/zone/se.txt
index e07be54..0cbfe80 100644
--- a/icu4c/source/data/zone/se.txt
+++ b/icu4c/source/data/zone/se.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 se{
-    Version{"37"}
     zoneStrings{
         "America:Curacao"{
             ec{"Curaçao"}
diff --git a/icu4c/source/data/zone/se_FI.txt b/icu4c/source/data/zone/se_FI.txt
index 02bf7d7..d472d0b 100644
--- a/icu4c/source/data/zone/se_FI.txt
+++ b/icu4c/source/data/zone/se_FI.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 se_FI{
-    Version{"37"}
     zoneStrings{
         "Africa:Cairo"{
             ec{"Kairo"}
diff --git a/icu4c/source/data/zone/seh.txt b/icu4c/source/data/zone/seh.txt
index d5237e2..fa708a3 100644
--- a/icu4c/source/data/zone/seh.txt
+++ b/icu4c/source/data/zone/seh.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 seh{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/ses.txt b/icu4c/source/data/zone/ses.txt
index f8595e4..05fa547 100644
--- a/icu4c/source/data/zone/ses.txt
+++ b/icu4c/source/data/zone/ses.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ses{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/sg.txt b/icu4c/source/data/zone/sg.txt
index 2f001a3..ad75cb9 100644
--- a/icu4c/source/data/zone/sg.txt
+++ b/icu4c/source/data/zone/sg.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sg{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/sh.txt b/icu4c/source/data/zone/sh.txt
index 74b646a..83091b2 100644
--- a/icu4c/source/data/zone/sh.txt
+++ b/icu4c/source/data/zone/sh.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh{
     "%%ALIAS"{"sr_Latn"}
 }
diff --git a/icu4c/source/data/zone/sh_BA.txt b/icu4c/source/data/zone/sh_BA.txt
index 93bdac6..7f73cd5 100644
--- a/icu4c/source/data/zone/sh_BA.txt
+++ b/icu4c/source/data/zone/sh_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_BA{
     "%%ALIAS"{"sr_Latn_BA"}
 }
diff --git a/icu4c/source/data/zone/sh_CS.txt b/icu4c/source/data/zone/sh_CS.txt
index 224568a..3b2f92b 100644
--- a/icu4c/source/data/zone/sh_CS.txt
+++ b/icu4c/source/data/zone/sh_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_CS{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/zone/sh_YU.txt b/icu4c/source/data/zone/sh_YU.txt
index 8a7d460..dc5a35b 100644
--- a/icu4c/source/data/zone/sh_YU.txt
+++ b/icu4c/source/data/zone/sh_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sh_YU{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/zone/shi.txt b/icu4c/source/data/zone/shi.txt
index 286f257..55a0e8d 100644
--- a/icu4c/source/data/zone/shi.txt
+++ b/icu4c/source/data/zone/shi.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/shi_Latn.txt b/icu4c/source/data/zone/shi_Latn.txt
index 1b87df9..f6f7139 100644
--- a/icu4c/source/data/zone/shi_Latn.txt
+++ b/icu4c/source/data/zone/shi_Latn.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_Latn{
     %%Parent{"root"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/shi_MA.txt b/icu4c/source/data/zone/shi_MA.txt
index 00de1b1..c96251d 100644
--- a/icu4c/source/data/zone/shi_MA.txt
+++ b/icu4c/source/data/zone/shi_MA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_MA{
     "%%ALIAS"{"shi_Tfng_MA"}
 }
diff --git a/icu4c/source/data/zone/shi_Tfng.txt b/icu4c/source/data/zone/shi_Tfng.txt
index 397f53f..723cdf1 100644
--- a/icu4c/source/data/zone/shi_Tfng.txt
+++ b/icu4c/source/data/zone/shi_Tfng.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 shi_Tfng{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/shi_Tfng_MA.txt b/icu4c/source/data/zone/shi_Tfng_MA.txt
index 978cd5c..3ec81a4 100644
--- a/icu4c/source/data/zone/shi_Tfng_MA.txt
+++ b/icu4c/source/data/zone/shi_Tfng_MA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/si.txt b/icu4c/source/data/zone/si.txt
index 7770411..b811006 100644
--- a/icu4c/source/data/zone/si.txt
+++ b/icu4c/source/data/zone/si.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 si{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"අබිජාන්"}
diff --git a/icu4c/source/data/zone/sk.txt b/icu4c/source/data/zone/sk.txt
index c9b4aa7..35e19cb 100644
--- a/icu4c/source/data/zone/sk.txt
+++ b/icu4c/source/data/zone/sk.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sk{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
diff --git a/icu4c/source/data/zone/sl.txt b/icu4c/source/data/zone/sl.txt
index 3c6bc9a..85f22db 100644
--- a/icu4c/source/data/zone/sl.txt
+++ b/icu4c/source/data/zone/sl.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sl{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidžan"}
@@ -901,7 +901,7 @@
             ec{"Zelenortski otoki"}
         }
         "Atlantic:Faeroe"{
-            ec{"Faroe"}
+            ec{"Ferski otoki"}
         }
         "Atlantic:Madeira"{
             ec{"Madeira"}
@@ -1720,9 +1720,9 @@
             ls{"Niuejski čas"}
         }
         "meta:Norfolk"{
-            ld{"Norfolški otoki poletni čas"}
-            lg{"Norfolški otoki čas"}
-            ls{"Norfolški otoki standardni čas"}
+            ld{"Poletni čas: Norfolški otoki"}
+            lg{"Čas: Norfolški otoki"}
+            ls{"Standardni čas: Norfolški otoki"}
         }
         "meta:Noronha"{
             ld{"Fernando de Noronški poletni čas"}
diff --git a/icu4c/source/data/zone/smn.txt b/icu4c/source/data/zone/smn.txt
index e434d61..2162663 100644
--- a/icu4c/source/data/zone/smn.txt
+++ b/icu4c/source/data/zone/smn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 smn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/sn.txt b/icu4c/source/data/zone/sn.txt
index 96407c5..33c96eb 100644
--- a/icu4c/source/data/zone/sn.txt
+++ b/icu4c/source/data/zone/sn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/so.txt b/icu4c/source/data/zone/so.txt
index 56c3672..07c16e0 100644
--- a/icu4c/source/data/zone/so.txt
+++ b/icu4c/source/data/zone/so.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 so{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjaan"}
@@ -787,7 +787,7 @@
             ec{"Farow"}
         }
         "Atlantic:Madeira"{
-            ec{"Madeera"}
+            ec{"Madira"}
         }
         "Atlantic:Reykjavik"{
             ec{"Reykjafik"}
@@ -848,7 +848,7 @@
             ec{"Atens"}
         }
         "Europe:Belgrade"{
-            ec{"Bilgaraydh"}
+            ec{"Belgaraydh"}
         }
         "Europe:Berlin"{
             ec{"Barliin"}
@@ -894,7 +894,7 @@
             ec{"Jaarsey"}
         }
         "Europe:Kiev"{
-            ec{"Kiyf"}
+            ec{"Kiyeef"}
         }
         "Europe:Kirov"{
             ec{"Kiroof"}
@@ -907,10 +907,10 @@
             ld{"Waqtiga Xagaaga ee Biritishka"}
         }
         "Europe:Luxembourg"{
-            ec{"Luksembaag"}
+            ec{"Luksemberg"}
         }
         "Europe:Madrid"{
-            ec{"Maadriid"}
+            ec{"Madriid"}
         }
         "Europe:Mariehamn"{
             ec{"Maarihaam"}
@@ -979,7 +979,7 @@
             ec{"Fatikaan"}
         }
         "Europe:Vienna"{
-            ec{"Fiyaana"}
+            ec{"Fiyeena"}
         }
         "Europe:Vilnius"{
             ec{"Finiyuus"}
@@ -988,13 +988,13 @@
             ec{"Folgograd"}
         }
         "Europe:Zagreb"{
-            ec{"Sagreb"}
+            ec{"Saqrib"}
         }
         "Europe:Zaporozhye"{
             ec{"Saborosey"}
         }
         "Europe:Zurich"{
-            ec{"Surij"}
+            ec{"Suurikh"}
         }
         "Indian:Antananarivo"{
             ec{"Antananarifo"}
@@ -1368,7 +1368,7 @@
             ls{"Waqtiga Koonfurta Faransiiska & Antaarktik"}
         }
         "meta:GMT"{
-            ls{"Waqtiga Celceliska Giriinwij"}
+            ls{"Wakhtiga Giriinwij"}
         }
         "meta:Galapagos"{
             ls{"Waqtiga Galabagos"}
diff --git a/icu4c/source/data/zone/sq.txt b/icu4c/source/data/zone/sq.txt
index cbe9231..f0e5342 100644
--- a/icu4c/source/data/zone/sq.txt
+++ b/icu4c/source/data/zone/sq.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sq{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abixhan"}
diff --git a/icu4c/source/data/zone/sr.txt b/icu4c/source/data/zone/sr.txt
index e5af0c2..436d794 100644
--- a/icu4c/source/data/zone/sr.txt
+++ b/icu4c/source/data/zone/sr.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Абиџан"}
@@ -1019,7 +1019,7 @@
             ec{"Истанбул"}
         }
         "Europe:Jersey"{
-            ec{"Џерси"}
+            ec{"Џерзи"}
         }
         "Europe:Kaliningrad"{
             ec{"Калињинград"}
@@ -1526,7 +1526,7 @@
             ss{"EET"}
         }
         "meta:Europe_Further_Eastern"{
-            ls{"Даљи исток Европе"}
+            ls{"Време даљег истока Европе"}
         }
         "meta:Europe_Western"{
             ld{"Западноевропско летње време"}
diff --git a/icu4c/source/data/zone/sr_BA.txt b/icu4c/source/data/zone/sr_BA.txt
index edad17f..04f2efd 100644
--- a/icu4c/source/data/zone/sr_BA.txt
+++ b/icu4c/source/data/zone/sr_BA.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_BA{
     "%%ALIAS"{"sr_Cyrl_BA"}
 }
diff --git a/icu4c/source/data/zone/sr_CS.txt b/icu4c/source/data/zone/sr_CS.txt
index 5f8becf..6a32f49 100644
--- a/icu4c/source/data/zone/sr_CS.txt
+++ b/icu4c/source/data/zone/sr_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_CS{
-    "%%ALIAS"{"sr_Cyrl_RS"}
+    "%%ALIAS"{"sr_RS"}
 }
diff --git a/icu4c/source/data/zone/sr_Cyrl.txt b/icu4c/source/data/zone/sr_Cyrl.txt
index df3a287..772d8b3 100644
--- a/icu4c/source/data/zone/sr_Cyrl.txt
+++ b/icu4c/source/data/zone/sr_Cyrl.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/sr_Cyrl_BA.txt b/icu4c/source/data/zone/sr_Cyrl_BA.txt
index 51e1655..4009144 100644
--- a/icu4c/source/data/zone/sr_Cyrl_BA.txt
+++ b/icu4c/source/data/zone/sr_Cyrl_BA.txt
@@ -1,8 +1,669 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-/**
- * generated alias target
- */
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_BA{
-    ___{""}
+    zoneStrings{
+        "America:Indiana:Vevay"{
+            ec{"Виви, Индијана"}
+        }
+        "America:Indiana:Vincennes"{
+            ec{"Винсенс, Индијана"}
+        }
+        "America:Indianapolis"{
+            ec{"Индијанаполис"}
+        }
+        "America:Louisville"{
+            ec{"Луивил"}
+        }
+        "America:North_Dakota:Beulah"{
+            ec{"Бјула, Сјеверна Дакота"}
+        }
+        "America:North_Dakota:Center"{
+            ec{"Центар, Сјеверна Дакота"}
+        }
+        "America:North_Dakota:New_Salem"{
+            ec{"Нови Салем, Сјеверна Дакота"}
+        }
+        "America:Port-au-Prince"{
+            ec{"Порт-о-Пренс"}
+        }
+        "America:Port_of_Spain"{
+            ec{"Порт ов Спејн"}
+        }
+        "America:Puerto_Rico"{
+            ec{"Порторико"}
+        }
+        "America:Regina"{
+            ec{"Реџајна"}
+        }
+        "America:Resolute"{
+            ec{"Резолут"}
+        }
+        "America:Scoresbysund"{
+            ec{"Итокортормит"}
+        }
+        "America:St_Barthelemy"{
+            ec{"Сен Бартелеми"}
+        }
+        "America:St_Johns"{
+            ec{"Сент Џонс"}
+        }
+        "America:St_Thomas"{
+            ec{"Сент Томас"}
+        }
+        "America:Swift_Current"{
+            ec{"Свифт Карент"}
+        }
+        "Antarctica:DumontDUrville"{
+            ec{"Димон д’Ирвил"}
+        }
+        "Antarctica:Macquarie"{
+            ec{"Маквори"}
+        }
+        "Arctic:Longyearbyen"{
+            ec{"Лонгјир"}
+        }
+        "Etc:UTC"{
+            ls{"Координисано универзално вријеме"}
+        }
+        "Europe:Dublin"{
+            ld{"Ирска, стандардно вријеме"}
+        }
+        "Europe:London"{
+            ld{"Британија, љетње вријеме"}
+        }
+        "Pacific:Niue"{
+            ec{"Нијуе"}
+        }
+        "meta:Afghanistan"{
+            ls{"Авганистан вријеме"}
+        }
+        "meta:Africa_Central"{
+            ls{"Централно-афричко вријеме"}
+        }
+        "meta:Africa_Eastern"{
+            ls{"Источно-афричко вријеме"}
+        }
+        "meta:Africa_Southern"{
+            ls{"Јужно-афричко вријеме"}
+        }
+        "meta:Africa_Western"{
+            ld{"Западно-афричко љетње вријеме"}
+            lg{"Западно-афричко вријеме"}
+            ls{"Западно-афричко стандардно вријеме"}
+        }
+        "meta:Alaska"{
+            ld{"Аљаска, љетње вријеме"}
+            lg{"Аљаска"}
+            ls{"Аљаска, стандардно вријеме"}
+        }
+        "meta:Amazon"{
+            ld{"Амазон, љетње вријеме"}
+            lg{"Амазон вријеме"}
+            ls{"Амазон, стандардно вријеме"}
+        }
+        "meta:America_Central"{
+            ld{"Сјеверноамеричко централно љетње вријеме"}
+            lg{"Сјеверноамеричко централно вријеме"}
+            ls{"Сјеверноамеричко централно стандардно вријеме"}
+        }
+        "meta:America_Eastern"{
+            ld{"Сјеверноамеричко источно љетње вријеме"}
+            lg{"Сјеверноамеричко источно вријеме"}
+            ls{"Сјеверноамеричко источно стандардно вријеме"}
+        }
+        "meta:America_Mountain"{
+            ld{"Сјеверноамеричко планинско љетње вријеме"}
+            lg{"Сјеверноамеричко планинско вријеме"}
+            ls{"Сјеверноамеричко планинско стандардно вријеме"}
+        }
+        "meta:America_Pacific"{
+            ld{"Сјеверноамеричко пацифичко летње вријеме"}
+            lg{"Сјеверноамеричко пацифичко вријеме"}
+            ls{"Сјеверноамеричко пацифичко стандардно вријеме"}
+        }
+        "meta:Apia"{
+            ld{"Апија, љетње вријеме"}
+            lg{"Апија вријеме"}
+            ls{"Апија, стандардно вријеме"}
+        }
+        "meta:Arabian"{
+            ld{"Арабијско љетње вријеме"}
+            lg{"Арабијско вријеме"}
+            ls{"Арабијско стандардно вријеме"}
+        }
+        "meta:Argentina"{
+            ld{"Аргентина, љетње вријеме"}
+            lg{"Аргентина вријеме"}
+            ls{"Аргентина, стандардно вријеме"}
+        }
+        "meta:Argentina_Western"{
+            ld{"Западна Аргентина, љетње вријеме"}
+            lg{"Западна Аргентина вријеме"}
+            ls{"Западна Аргентина, стандардно вријеме"}
+        }
+        "meta:Armenia"{
+            ld{"Јерменија, љетње вријеме"}
+            lg{"Јерменија вријеме"}
+            ls{"Јерменија, стандардно вријеме"}
+        }
+        "meta:Atlantic"{
+            ld{"Атлантско љетње вријеме"}
+            lg{"Атлантско вријеме"}
+            ls{"Атлантско стандардно вријеме"}
+        }
+        "meta:Australia_Central"{
+            ld{"Аустралијско централно љетње вријеме"}
+            lg{"Аустралијско централно вријеме"}
+            ls{"Аустралијско централно стандардно вријеме"}
+        }
+        "meta:Australia_CentralWestern"{
+            ld{"Аустралијско централно западно љетње вријеме"}
+            lg{"Аустралијско централно западно вријеме"}
+            ls{"Аустралијско централно западно стандардно вријеме"}
+        }
+        "meta:Australia_Eastern"{
+            ld{"Аустралијско источно љетње вријеме"}
+            lg{"Аустралијско источно вријеме"}
+            ls{"Аустралијско источно стандардно вријеме"}
+        }
+        "meta:Australia_Western"{
+            ld{"Аустралијско западно љетње вријеме"}
+            lg{"Аустралијско западно вријеме"}
+            ls{"Аустралијско западно стандардно вријеме"}
+        }
+        "meta:Azerbaijan"{
+            ld{"Азербејџан, љетње вријеме"}
+            lg{"Азербејџан вријеме"}
+            ls{"Азербејџан, стандардно вријеме"}
+        }
+        "meta:Azores"{
+            ld{"Азори, љетње вријеме"}
+            lg{"Азори вријеме"}
+            ls{"Азори, стандардно вријеме"}
+        }
+        "meta:Bangladesh"{
+            ld{"Бангладеш, љетње вријеме"}
+            lg{"Бангладеш вријеме"}
+            ls{"Бангладеш, стандардно вријеме"}
+        }
+        "meta:Bhutan"{
+            ls{"Бутан вријеме"}
+        }
+        "meta:Bolivia"{
+            ls{"Боливија вријеме"}
+        }
+        "meta:Brasilia"{
+            ld{"Бразилија, љетње вријеме"}
+            lg{"Бразилија вријеме"}
+            ls{"Бразилија, стандардно вријеме"}
+        }
+        "meta:Brunei"{
+            ls{"Брунеј Дарусалум вријеме"}
+        }
+        "meta:Cape_Verde"{
+            ld{"Зеленортска Острва, љетње вријеме"}
+            lg{"Зеленортска Острва вријеме"}
+            ls{"Зеленортска Острва, стандардно вријеме"}
+        }
+        "meta:Chamorro"{
+            ls{"Чаморо вријеме"}
+        }
+        "meta:Chatham"{
+            ld{"Чатам, љетње вријеме"}
+            lg{"Чатам вријеме"}
+            ls{"Чатам, стандардно вријеме"}
+        }
+        "meta:Chile"{
+            ld{"Чиле, љетње вријеме"}
+            lg{"Чиле вријеме"}
+            ls{"Чиле, стандардно вријеме"}
+        }
+        "meta:China"{
+            ld{"Кина, љетње вријеме"}
+            lg{"Кина вријеме"}
+            ls{"Кинеско стандардно вријеме"}
+        }
+        "meta:Choibalsan"{
+            ld{"Чојбалсан, љетње вријеме"}
+            lg{"Чојбалсан вријеме"}
+            ls{"Чојбалсан, стандардно вријеме"}
+        }
+        "meta:Christmas"{
+            ls{"Божићно острво вријеме"}
+        }
+        "meta:Cocos"{
+            ls{"Кокосова (Килинг) острва вријеме"}
+        }
+        "meta:Colombia"{
+            ld{"Колумбија, љетње вријеме"}
+            lg{"Колумбија вријеме"}
+            ls{"Колумбија, стандардно вријеме"}
+        }
+        "meta:Cook"{
+            ld{"Кукова Острва, полуљетње вријеме"}
+            lg{"Кукова Острва вријеме"}
+            ls{"Кукова Острва, стандардно вријеме"}
+        }
+        "meta:Cuba"{
+            ld{"Куба, љетње вријеме"}
+            lg{"Куба"}
+            ls{"Куба, стандардно вријеме"}
+        }
+        "meta:Davis"{
+            ls{"Дејвис вријеме"}
+        }
+        "meta:DumontDUrville"{
+            ls{"Димон д’Ирвил вријеме"}
+        }
+        "meta:East_Timor"{
+            ls{"Источни Тимор вријеме"}
+        }
+        "meta:Easter"{
+            ld{"Ускршња острва, љетње вријеме"}
+            lg{"Ускршња острва вријеме"}
+            ls{"Ускршња острва, стандардно вријеме"}
+        }
+        "meta:Ecuador"{
+            ls{"Еквадор вријеме"}
+        }
+        "meta:Europe_Central"{
+            ld{"Средњоевропско љетње вријеме"}
+            lg{"Средњоевропско вријеме"}
+            ls{"Средњоевропско стандардно вријеме"}
+        }
+        "meta:Europe_Eastern"{
+            ld{"Источноевропско љетње вријеме"}
+            lg{"Источноевропско вријеме"}
+            ls{"Источноевропско стандардно вријеме"}
+        }
+        "meta:Europe_Western"{
+            ld{"Западноевропско љетње вријеме"}
+            lg{"Западноевропско вријеме"}
+            ls{"Западноевропско стандардно вријеме"}
+        }
+        "meta:Falkland"{
+            ld{"Фолкландска Острва, љетње вријеме"}
+            lg{"Фолкландска Острва вријеме"}
+            ls{"Фолкландска Острва, стандардно вријеме"}
+        }
+        "meta:Fiji"{
+            ld{"Фиџи, љетње вријеме"}
+            lg{"Фиџи вријеме"}
+            ls{"Фиџи, стандардно вријеме"}
+        }
+        "meta:French_Guiana"{
+            ls{"Француска Гвајана вријеме"}
+        }
+        "meta:French_Southern"{
+            ls{"Француско јужно и антарктичко вријеме"}
+        }
+        "meta:GMT"{
+            ls{"Средње вријеме по Гриничу"}
+        }
+        "meta:Galapagos"{
+            ls{"Галапагос вријеме"}
+        }
+        "meta:Gambier"{
+            ls{"Гамбије вријеме"}
+        }
+        "meta:Georgia"{
+            ld{"Грузија, љетње вријеме"}
+            lg{"Грузија вријеме"}
+            ls{"Грузија, стандардно вријеме"}
+        }
+        "meta:Gilbert_Islands"{
+            ls{"Гилбертова острва вријеме"}
+        }
+        "meta:Greenland_Eastern"{
+            ld{"Источни Гренланд, љетње вријеме"}
+            lg{"Источни Гренланд"}
+            ls{"Источни Гренланд, стандардно вријеме"}
+        }
+        "meta:Greenland_Western"{
+            ld{"Западни Гренланд, љетње вријеме"}
+            lg{"Западни Гренланд"}
+            ls{"Западни Гренланд, стандардно вријеме"}
+        }
+        "meta:Gulf"{
+            ls{"Заливско вријеме"}
+        }
+        "meta:Guyana"{
+            ls{"Гвајана вријеме"}
+        }
+        "meta:Hawaii_Aleutian"{
+            ld{"Хавајско-алеутско љетње вријеме"}
+            lg{"Хавајско-алеутско вријеме"}
+            ls{"Хавајско-алеутско стандардно вријеме"}
+        }
+        "meta:Hong_Kong"{
+            ld{"Хонг Конг, љетње вријеме"}
+            lg{"Хонг Конг вријеме"}
+            ls{"Хонг Конг, стандардно вријеме"}
+        }
+        "meta:Hovd"{
+            ld{"Ховд, љетње вријеме"}
+            lg{"Ховд вријеме"}
+            ls{"Ховд, стандардно вријеме"}
+        }
+        "meta:India"{
+            ls{"Индијско стандардно вријеме"}
+        }
+        "meta:Indian_Ocean"{
+            ls{"Индијско океанско вријеме"}
+        }
+        "meta:Indochina"{
+            ls{"Индокина вријеме"}
+        }
+        "meta:Indonesia_Central"{
+            ls{"Централно-индонезијско вријеме"}
+        }
+        "meta:Indonesia_Eastern"{
+            ls{"Источно-индонезијско вријеме"}
+        }
+        "meta:Indonesia_Western"{
+            ls{"Западно-индонезијско вријеме"}
+        }
+        "meta:Iran"{
+            ld{"Иран, љетње вријеме"}
+            lg{"Иран вријеме"}
+            ls{"Иран, стандардно вријеме"}
+        }
+        "meta:Irkutsk"{
+            ld{"Иркуцк, љетње вријеме"}
+            lg{"Иркуцк вријеме"}
+            ls{"Иркуцк, стандардно вријеме"}
+        }
+        "meta:Israel"{
+            ld{"Израелско љетње вријеме"}
+            lg{"Израелско вријеме"}
+            ls{"Израелско стандардно вријеме"}
+        }
+        "meta:Japan"{
+            ld{"Јапанско љетње вријеме"}
+            lg{"Јапанско вријеме"}
+            ls{"Јапанско стандардно вријеме"}
+        }
+        "meta:Kazakhstan_Eastern"{
+            ls{"Источно-казахстанско вријеме"}
+        }
+        "meta:Kazakhstan_Western"{
+            ls{"Западно-казахстанско вријеме"}
+        }
+        "meta:Korea"{
+            ld{"Корејско љетње вријеме"}
+            lg{"Корејско вријеме"}
+            ls{"Корејско стандардно вријеме"}
+        }
+        "meta:Kosrae"{
+            ls{"Кошре вријеме"}
+        }
+        "meta:Krasnoyarsk"{
+            ld{"Краснојарск, љетње вријеме"}
+            lg{"Краснојарск вријеме"}
+            ls{"Краснојарск, стандардно вријеме"}
+        }
+        "meta:Kyrgystan"{
+            ls{"Киргистан вријеме"}
+        }
+        "meta:Line_Islands"{
+            ls{"Линијска острва вријеме"}
+        }
+        "meta:Lord_Howe"{
+            ld{"Лорд Хов, љетње вријеме"}
+            lg{"Лорд Хов вријеме"}
+            ls{"Лорд Хов, стандардно вријеме"}
+        }
+        "meta:Macquarie"{
+            ls{"острво Маквори вријеме"}
+        }
+        "meta:Magadan"{
+            ld{"Магадан, љетње вријеме"}
+            lg{"Магадан вријеме"}
+            ls{"Магадан, стандардно вријеме"}
+        }
+        "meta:Malaysia"{
+            ls{"Малезија вријеме"}
+        }
+        "meta:Maldives"{
+            ls{"Малдиви вријеме"}
+        }
+        "meta:Marquesas"{
+            ls{"Маркиз вријеме"}
+        }
+        "meta:Marshall_Islands"{
+            ls{"Маршалска Острва вријеме"}
+        }
+        "meta:Mauritius"{
+            ld{"Маурицијус, љетње вријеме"}
+            lg{"Маурицијус вријеме"}
+            ls{"Маурицијус, стандардно вријеме"}
+        }
+        "meta:Mawson"{
+            ls{"Мосон вријеме"}
+        }
+        "meta:Mexico_Northwest"{
+            ld{"Сјеверозападни Мексико, летње вријеме"}
+            lg{"Сјеверозападни Мексико"}
+            ls{"Сјеверозападни Мексико, стандардно вријеме"}
+        }
+        "meta:Mexico_Pacific"{
+            ld{"Мексички Пацифик, љетње вријеме"}
+            lg{"Мексички Пацифик"}
+            ls{"Мексички Пацифик, стандардно вријеме"}
+        }
+        "meta:Mongolia"{
+            ld{"Улан Батор, љетње вријееме"}
+            lg{"Улан Батор вријеме"}
+            ls{"Улан Батор, стандардно вријеме"}
+        }
+        "meta:Moscow"{
+            ld{"Москва, љетње вријеме"}
+            lg{"Москва вријеме"}
+            ls{"Москва, стандардно вријеме"}
+        }
+        "meta:Myanmar"{
+            ls{"Мјанмар вријеме"}
+        }
+        "meta:Nauru"{
+            ls{"Науру вријеме"}
+        }
+        "meta:Nepal"{
+            ls{"Непал вријеме"}
+        }
+        "meta:New_Caledonia"{
+            ld{"Нова Каледонија, љетње вријеме"}
+            lg{"Нова Каледонија вријеме"}
+            ls{"Нова Каледонија, стандардно вријеме"}
+        }
+        "meta:New_Zealand"{
+            ld{"Нови Зеланд, љетње вријеме"}
+            lg{"Нови Зеланд вријеме"}
+            ls{"Нови Зеланд, стандардно вријеме"}
+        }
+        "meta:Newfoundland"{
+            ld{"Њуфаундленд, љетње вријеме"}
+            lg{"Њуфаундленд"}
+            ls{"Њуфаундленд, стандардно вријеме"}
+        }
+        "meta:Niue"{
+            ls{"Нијуе вријеме"}
+        }
+        "meta:Norfolk"{
+            ld{"острво Норфолк, љетње вријеме"}
+            lg{"острво Норфолк вријеме"}
+            ls{"острво Норфолк, стандардно вријеме"}
+        }
+        "meta:Noronha"{
+            ld{"Фернандо де Нороња, љетње вријеме"}
+            lg{"Фернандо де Нороња вријеме"}
+            ls{"Фернандо де Нороња, стандардно вријеме"}
+        }
+        "meta:Novosibirsk"{
+            ld{"Новосибирск, љетње вријеме"}
+            lg{"Новосибирск вријеме"}
+            ls{"Новосибирск, стандардно вријеме"}
+        }
+        "meta:Omsk"{
+            ld{"Омск, љетње вријеме"}
+            lg{"Омск вријеме"}
+            ls{"Омск, стандардно вријеме"}
+        }
+        "meta:Pakistan"{
+            ld{"Пакистан, љетње вријеме"}
+            lg{"Пакистан вријеме"}
+            ls{"Пакистан, стандардно вријеме"}
+        }
+        "meta:Palau"{
+            ls{"Палау вријеме"}
+        }
+        "meta:Papua_New_Guinea"{
+            ls{"Папуа Нова Гвинеја вријеме"}
+        }
+        "meta:Paraguay"{
+            ld{"Парагвај, љетње вријеме"}
+            lg{"Парагвај вријеме"}
+            ls{"Парагвај, стандардно вријеме"}
+        }
+        "meta:Peru"{
+            ld{"Перу, љетње вријеме"}
+            lg{"Перу вријеме"}
+            ls{"Перу, стандардно вријеме"}
+        }
+        "meta:Philippines"{
+            ld{"Филипини, љетње вријеме"}
+            lg{"Филипини вријеме"}
+            ls{"Филипини, стандардно вријеме"}
+        }
+        "meta:Phoenix_Islands"{
+            ls{"Феникс острва вријеме"}
+        }
+        "meta:Pierre_Miquelon"{
+            ld{"Сен Пјер и Микелон, љетње вријеме"}
+            lg{"Сен Пјер и Микелон"}
+            ls{"Сен Пјер и Микелон, стандардно вријеме"}
+        }
+        "meta:Pitcairn"{
+            ls{"Питкерн вријеме"}
+        }
+        "meta:Ponape"{
+            ls{"Понпеј вријеме"}
+        }
+        "meta:Pyongyang"{
+            ls{"Пјонгјаншко вријеме"}
+        }
+        "meta:Reunion"{
+            ls{"Реунион вријеме"}
+        }
+        "meta:Rothera"{
+            ls{"Ротера вријеме"}
+        }
+        "meta:Sakhalin"{
+            ld{"Сахалин, љетње вријеме"}
+            lg{"Сахалин вријеме"}
+            ls{"Сахалин, стандардно вријеме"}
+        }
+        "meta:Samoa"{
+            ld{"Самоа, љетње вријеме"}
+            lg{"Самоа вријеме"}
+            ls{"Самоа, стандардно вријеме"}
+        }
+        "meta:Seychelles"{
+            ls{"Сејшели вријеме"}
+        }
+        "meta:Singapore"{
+            ls{"Сингапур, стандардно вријеме"}
+        }
+        "meta:Solomon"{
+            ls{"Соломонска Острва вријеме"}
+        }
+        "meta:South_Georgia"{
+            ls{"Јужна Џорџија вријеме"}
+        }
+        "meta:Suriname"{
+            ls{"Суринам вријеме"}
+        }
+        "meta:Syowa"{
+            ls{"Шова вријеме"}
+        }
+        "meta:Tahiti"{
+            ls{"Тахити вријеме"}
+        }
+        "meta:Taipei"{
+            ld{"Тајпеј, љетње вријеме"}
+            lg{"Тајпеј вријеме"}
+            ls{"Тајпеј, стандардно вријеме"}
+        }
+        "meta:Tajikistan"{
+            ls{"Таџикистан вријеме"}
+        }
+        "meta:Tokelau"{
+            ls{"Токелау вријеме"}
+        }
+        "meta:Tonga"{
+            ld{"Тонга, љетње вријеме"}
+            lg{"Тонга вријеме"}
+            ls{"Тонга, стандардно вријеме"}
+        }
+        "meta:Truk"{
+            ls{"Чук вријеме"}
+        }
+        "meta:Turkmenistan"{
+            ld{"Туркменистан, љетње вријеме"}
+            lg{"Туркменистан вријеме"}
+            ls{"Туркменистан, стандардно вријеме"}
+        }
+        "meta:Tuvalu"{
+            ls{"Тувалу вријеме"}
+        }
+        "meta:Uruguay"{
+            ld{"Уругвај, љетње вријеме"}
+            lg{"Уругвај вријеме"}
+            ls{"Уругвај, стандардно вријеме"}
+        }
+        "meta:Uzbekistan"{
+            ld{"Узбекистан, љетње вријеме"}
+            lg{"Узбекистан вријеме"}
+            ls{"Узбекистан, стандардно вријеме"}
+        }
+        "meta:Vanuatu"{
+            ld{"Вануату, љетње вријеме"}
+            lg{"Вануату вријеме"}
+            ls{"Вануату, стандардно вријеме"}
+        }
+        "meta:Venezuela"{
+            ls{"Венецуела вријеме"}
+        }
+        "meta:Vladivostok"{
+            ld{"Владивосток, љетње вријеме"}
+            lg{"Владивосток вријеме"}
+            ls{"Владивосток, стандардно вријеме"}
+        }
+        "meta:Volgograd"{
+            ld{"Волгоград, љетње вријеме"}
+            lg{"Волгоград вријеме"}
+            ls{"Волгоград, стандардно вријеме"}
+        }
+        "meta:Vostok"{
+            ls{"Восток вријеме"}
+        }
+        "meta:Wake"{
+            ls{"острво Вејк вријеме"}
+        }
+        "meta:Wallis"{
+            ls{"острва Валис и Футуна вријеме"}
+        }
+        "meta:Yakutsk"{
+            ld{"Јакутск, љетње вријеме"}
+            lg{"Јакутск вријеме"}
+            ls{"Јакутск, стандардно вријеме"}
+        }
+        "meta:Yekaterinburg"{
+            ld{"Јекатеринбург, љетње вријеме"}
+            lg{"Јекатеринбург вријеме"}
+            ls{"Јекатеринбург, стандардно вријеме"}
+        }
+        regionFormatDaylight{"{0}, љетње вријеме"}
+        regionFormatStandard{"{0}, стандардно вријеме"}
+    }
 }
diff --git a/icu4c/source/data/zone/sr_Cyrl_CS.txt b/icu4c/source/data/zone/sr_Cyrl_CS.txt
index 9325e5a..2da82d2 100644
--- a/icu4c/source/data/zone/sr_Cyrl_CS.txt
+++ b/icu4c/source/data/zone/sr_Cyrl_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_CS{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/zone/sr_Cyrl_RS.txt b/icu4c/source/data/zone/sr_Cyrl_RS.txt
index 7ef8fab..c74b860 100644
--- a/icu4c/source/data/zone/sr_Cyrl_RS.txt
+++ b/icu4c/source/data/zone/sr_Cyrl_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/sr_Cyrl_XK.txt b/icu4c/source/data/zone/sr_Cyrl_XK.txt
index d7d4a86..c74bfee 100644
--- a/icu4c/source/data/zone/sr_Cyrl_XK.txt
+++ b/icu4c/source/data/zone/sr_Cyrl_XK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/sr_Cyrl_YU.txt b/icu4c/source/data/zone/sr_Cyrl_YU.txt
index 806d42c..5874f8c 100644
--- a/icu4c/source/data/zone/sr_Cyrl_YU.txt
+++ b/icu4c/source/data/zone/sr_Cyrl_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Cyrl_YU{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/zone/sr_Latn.txt b/icu4c/source/data/zone/sr_Latn.txt
index 08216a5..6fe03eb 100644
--- a/icu4c/source/data/zone/sr_Latn.txt
+++ b/icu4c/source/data/zone/sr_Latn.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn{
     %%Parent{"root"}
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidžan"}
@@ -1020,7 +1020,7 @@
             ec{"Istanbul"}
         }
         "Europe:Jersey"{
-            ec{"Džersi"}
+            ec{"Džerzi"}
         }
         "Europe:Kaliningrad"{
             ec{"Kalinjingrad"}
@@ -1527,7 +1527,7 @@
             ss{"EET"}
         }
         "meta:Europe_Further_Eastern"{
-            ls{"Dalji istok Evrope"}
+            ls{"Vreme daljeg istoka Evrope"}
         }
         "meta:Europe_Western"{
             ld{"Zapadnoevropsko letnje vreme"}
diff --git a/icu4c/source/data/zone/sr_Latn_BA.txt b/icu4c/source/data/zone/sr_Latn_BA.txt
index f4b62ac..5cb7849 100644
--- a/icu4c/source/data/zone/sr_Latn_BA.txt
+++ b/icu4c/source/data/zone/sr_Latn_BA.txt
@@ -1,8 +1,662 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-/**
- * generated alias target
- */
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_BA{
-    ___{""}
+    zoneStrings{
+        "America:Indiana:Vevay"{
+            ec{"Vivi, Indijana"}
+        }
+        "America:Indiana:Vincennes"{
+            ec{"Vinsens, Indijana"}
+        }
+        "America:Indianapolis"{
+            ec{"Indijanapolis"}
+        }
+        "America:Louisville"{
+            ec{"Luivil"}
+        }
+        "America:North_Dakota:Beulah"{
+            ec{"Bjula, Sjeverna Dakota"}
+        }
+        "America:North_Dakota:Center"{
+            ec{"Centar, Sjeverna Dakota"}
+        }
+        "America:North_Dakota:New_Salem"{
+            ec{"Novi Salem, Sjeverna Dakota"}
+        }
+        "America:Port-au-Prince"{
+            ec{"Port-o-Prens"}
+        }
+        "America:Port_of_Spain"{
+            ec{"Port ov Spejn"}
+        }
+        "America:Puerto_Rico"{
+            ec{"Portoriko"}
+        }
+        "America:Regina"{
+            ec{"Redžajna"}
+        }
+        "America:Resolute"{
+            ec{"Rezolut"}
+        }
+        "America:Scoresbysund"{
+            ec{"Itokortormit"}
+        }
+        "America:St_Barthelemy"{
+            ec{"Sen Bartelemi"}
+        }
+        "America:St_Johns"{
+            ec{"Sent Džons"}
+        }
+        "America:St_Thomas"{
+            ec{"Sent Tomas"}
+        }
+        "America:Swift_Current"{
+            ec{"Svift Karent"}
+        }
+        "Antarctica:DumontDUrville"{
+            ec{"Dimon d’Irvil"}
+        }
+        "Antarctica:Macquarie"{
+            ec{"Makvori"}
+        }
+        "Arctic:Longyearbyen"{
+            ec{"Longjir"}
+        }
+        "Etc:UTC"{
+            ls{"Koordinisano univerzalno vrijeme"}
+        }
+        "Europe:Dublin"{
+            ld{"Irska, standardno vrijeme"}
+        }
+        "Europe:London"{
+            ld{"Britanija, ljetnje vrijeme"}
+        }
+        "Pacific:Niue"{
+            ec{"Nijue"}
+        }
+        "meta:Afghanistan"{
+            ls{"Avganistan vrijeme"}
+        }
+        "meta:Africa_Central"{
+            ls{"Centralno-afričko vrijeme"}
+        }
+        "meta:Africa_Eastern"{
+            ls{"Istočno-afričko vrijeme"}
+        }
+        "meta:Africa_Southern"{
+            ls{"Južno-afričko vrijeme"}
+        }
+        "meta:Africa_Western"{
+            ld{"Zapadno-afričko ljetnje vrijeme"}
+            lg{"Zapadno-afričko vrijeme"}
+            ls{"Zapadno-afričko standardno vrijeme"}
+        }
+        "meta:Alaska"{
+            ld{"Aljaska, ljetnje vrijeme"}
+            ls{"Aljaska, standardno vrijeme"}
+        }
+        "meta:Amazon"{
+            ld{"Amazon, ljetnje vrijeme"}
+            lg{"Amazon vrijeme"}
+            ls{"Amazon, standardno vrijeme"}
+        }
+        "meta:America_Central"{
+            ld{"Sjevernoameričko centralno ljetnje vrijeme"}
+            lg{"Sjevernoameričko centralno vrijeme"}
+            ls{"Sjevernoameričko centralno standardno vrijeme"}
+        }
+        "meta:America_Eastern"{
+            ld{"Sjevernoameričko istočno ljetnje vrijeme"}
+            lg{"Sjevernoameričko istočno vrijeme"}
+            ls{"Sjevernoameričko istočno standardno vrijeme"}
+        }
+        "meta:America_Mountain"{
+            ld{"Sjevernoameričko planinsko ljetnje vrijeme"}
+            lg{"Sjevernoameričko planinsko vrijeme"}
+            ls{"Sjevernoameričko planinsko standardno vrijeme"}
+        }
+        "meta:America_Pacific"{
+            ld{"Sjevernoameričko pacifičko letnje vrijeme"}
+            lg{"Sjevernoameričko pacifičko vrijeme"}
+            ls{"Sjevernoameričko pacifičko standardno vrijeme"}
+        }
+        "meta:Apia"{
+            ld{"Apija, ljetnje vrijeme"}
+            lg{"Apija vrijeme"}
+            ls{"Apija, standardno vrijeme"}
+        }
+        "meta:Arabian"{
+            ld{"Arabijsko ljetnje vrijeme"}
+            lg{"Arabijsko vrijeme"}
+            ls{"Arabijsko standardno vrijeme"}
+        }
+        "meta:Argentina"{
+            ld{"Argentina, ljetnje vrijeme"}
+            lg{"Argentina vrijeme"}
+            ls{"Argentina, standardno vrijeme"}
+        }
+        "meta:Argentina_Western"{
+            ld{"Zapadna Argentina, ljetnje vrijeme"}
+            lg{"Zapadna Argentina vrijeme"}
+            ls{"Zapadna Argentina, standardno vrijeme"}
+        }
+        "meta:Armenia"{
+            ld{"Jermenija, ljetnje vrijeme"}
+            lg{"Jermenija vrijeme"}
+            ls{"Jermenija, standardno vrijeme"}
+        }
+        "meta:Atlantic"{
+            ld{"Atlantsko ljetnje vrijeme"}
+            lg{"Atlantsko vrijeme"}
+            ls{"Atlantsko standardno vrijeme"}
+        }
+        "meta:Australia_Central"{
+            ld{"Australijsko centralno ljetnje vrijeme"}
+            lg{"Australijsko centralno vrijeme"}
+            ls{"Australijsko centralno standardno vrijeme"}
+        }
+        "meta:Australia_CentralWestern"{
+            ld{"Australijsko centralno zapadno ljetnje vrijeme"}
+            lg{"Australijsko centralno zapadno vrijeme"}
+            ls{"Australijsko centralno zapadno standardno vrijeme"}
+        }
+        "meta:Australia_Eastern"{
+            ld{"Australijsko istočno ljetnje vrijeme"}
+            lg{"Australijsko istočno vrijeme"}
+            ls{"Australijsko istočno standardno vrijeme"}
+        }
+        "meta:Australia_Western"{
+            ld{"Australijsko zapadno ljetnje vrijeme"}
+            lg{"Australijsko zapadno vrijeme"}
+            ls{"Australijsko zapadno standardno vrijeme"}
+        }
+        "meta:Azerbaijan"{
+            ld{"Azerbejdžan, ljetnje vrijeme"}
+            lg{"Azerbejdžan vrijeme"}
+            ls{"Azerbejdžan, standardno vrijeme"}
+        }
+        "meta:Azores"{
+            ld{"Azori, ljetnje vrijeme"}
+            lg{"Azori vrijeme"}
+            ls{"Azori, standardno vrijeme"}
+        }
+        "meta:Bangladesh"{
+            ld{"Bangladeš, ljetnje vrijeme"}
+            lg{"Bangladeš vrijeme"}
+            ls{"Bangladeš, standardno vrijeme"}
+        }
+        "meta:Bhutan"{
+            ls{"Butan vrijeme"}
+        }
+        "meta:Bolivia"{
+            ls{"Bolivija vrijeme"}
+        }
+        "meta:Brasilia"{
+            ld{"Brazilija, ljetnje vrijeme"}
+            lg{"Brazilija vrijeme"}
+            ls{"Brazilija, standardno vrijeme"}
+        }
+        "meta:Brunei"{
+            ls{"Brunej Darusalum vrijeme"}
+        }
+        "meta:Cape_Verde"{
+            ld{"Zelenortska Ostrva, ljetnje vrijeme"}
+            lg{"Zelenortska Ostrva vrijeme"}
+            ls{"Zelenortska Ostrva, standardno vrijeme"}
+        }
+        "meta:Chamorro"{
+            ls{"Čamoro vrijeme"}
+        }
+        "meta:Chatham"{
+            ld{"Čatam, ljetnje vrijeme"}
+            lg{"Čatam vrijeme"}
+            ls{"Čatam, standardno vrijeme"}
+        }
+        "meta:Chile"{
+            ld{"Čile, ljetnje vrijeme"}
+            lg{"Čile vrijeme"}
+            ls{"Čile, standardno vrijeme"}
+        }
+        "meta:China"{
+            ld{"Kina, ljetnje vrijeme"}
+            lg{"Kina vrijeme"}
+            ls{"Kinesko standardno vrijeme"}
+        }
+        "meta:Choibalsan"{
+            ld{"Čojbalsan, ljetnje vrijeme"}
+            lg{"Čojbalsan vrijeme"}
+            ls{"Čojbalsan, standardno vrijeme"}
+        }
+        "meta:Christmas"{
+            ls{"Božićno ostrvo vrijeme"}
+        }
+        "meta:Cocos"{
+            ls{"Kokosova (Kiling) ostrva vrijeme"}
+        }
+        "meta:Colombia"{
+            ld{"Kolumbija, ljetnje vrijeme"}
+            lg{"Kolumbija vrijeme"}
+            ls{"Kolumbija, standardno vrijeme"}
+        }
+        "meta:Cook"{
+            ld{"Kukova Ostrva, poluljetnje vrijeme"}
+            lg{"Kukova Ostrva vrijeme"}
+            ls{"Kukova Ostrva, standardno vrijeme"}
+        }
+        "meta:Cuba"{
+            ld{"Kuba, ljetnje vrijeme"}
+            ls{"Kuba, standardno vrijeme"}
+        }
+        "meta:Davis"{
+            ls{"Dejvis vrijeme"}
+        }
+        "meta:DumontDUrville"{
+            ls{"Dimon d’Irvil vrijeme"}
+        }
+        "meta:East_Timor"{
+            ls{"Istočni Timor vrijeme"}
+        }
+        "meta:Easter"{
+            ld{"Uskršnja ostrva, ljetnje vrijeme"}
+            lg{"Uskršnja ostrva vrijeme"}
+            ls{"Uskršnja ostrva, standardno vrijeme"}
+        }
+        "meta:Ecuador"{
+            ls{"Ekvador vrijeme"}
+        }
+        "meta:Europe_Central"{
+            ld{"Srednjoevropsko ljetnje vrijeme"}
+            lg{"Srednjoevropsko vrijeme"}
+            ls{"Srednjoevropsko standardno vrijeme"}
+        }
+        "meta:Europe_Eastern"{
+            ld{"Istočnoevropsko ljetnje vrijeme"}
+            lg{"Istočnoevropsko vrijeme"}
+            ls{"Istočnoevropsko standardno vrijeme"}
+        }
+        "meta:Europe_Western"{
+            ld{"Zapadnoevropsko ljetnje vrijeme"}
+            lg{"Zapadnoevropsko vrijeme"}
+            ls{"Zapadnoevropsko standardno vrijeme"}
+        }
+        "meta:Falkland"{
+            ld{"Folklandska Ostrva, ljetnje vrijeme"}
+            lg{"Folklandska Ostrva vrijeme"}
+            ls{"Folklandska Ostrva, standardno vrijeme"}
+        }
+        "meta:Fiji"{
+            ld{"Fidži, ljetnje vrijeme"}
+            lg{"Fidži vrijeme"}
+            ls{"Fidži, standardno vrijeme"}
+        }
+        "meta:French_Guiana"{
+            ls{"Francuska Gvajana vrijeme"}
+        }
+        "meta:French_Southern"{
+            ls{"Francusko južno i antarktičko vrijeme"}
+        }
+        "meta:GMT"{
+            ls{"Srednje vrijeme po Griniču"}
+        }
+        "meta:Galapagos"{
+            ls{"Galapagos vrijeme"}
+        }
+        "meta:Gambier"{
+            ls{"Gambije vrijeme"}
+        }
+        "meta:Georgia"{
+            ld{"Gruzija, ljetnje vrijeme"}
+            lg{"Gruzija vrijeme"}
+            ls{"Gruzija, standardno vrijeme"}
+        }
+        "meta:Gilbert_Islands"{
+            ls{"Gilbertova ostrva vrijeme"}
+        }
+        "meta:Greenland_Eastern"{
+            ld{"Istočni Grenland, ljetnje vrijeme"}
+            ls{"Istočni Grenland, standardno vrijeme"}
+        }
+        "meta:Greenland_Western"{
+            ld{"Zapadni Grenland, ljetnje vrijeme"}
+            ls{"Zapadni Grenland, standardno vrijeme"}
+        }
+        "meta:Gulf"{
+            ls{"Zalivsko vrijeme"}
+        }
+        "meta:Guyana"{
+            ls{"Gvajana vrijeme"}
+        }
+        "meta:Hawaii_Aleutian"{
+            ld{"Havajsko-aleutsko ljetnje vrijeme"}
+            lg{"Havajsko-aleutsko vrijeme"}
+            ls{"Havajsko-aleutsko standardno vrijeme"}
+        }
+        "meta:Hong_Kong"{
+            ld{"Hong Kong, ljetnje vrijeme"}
+            lg{"Hong Kong vrijeme"}
+            ls{"Hong Kong, standardno vrijeme"}
+        }
+        "meta:Hovd"{
+            ld{"Hovd, ljetnje vrijeme"}
+            lg{"Hovd vrijeme"}
+            ls{"Hovd, standardno vrijeme"}
+        }
+        "meta:India"{
+            ls{"Indijsko standardno vrijeme"}
+        }
+        "meta:Indian_Ocean"{
+            ls{"Indijsko okeansko vrijeme"}
+        }
+        "meta:Indochina"{
+            ls{"Indokina vrijeme"}
+        }
+        "meta:Indonesia_Central"{
+            ls{"Centralno-indonezijsko vrijeme"}
+        }
+        "meta:Indonesia_Eastern"{
+            ls{"Istočno-indonezijsko vrijeme"}
+        }
+        "meta:Indonesia_Western"{
+            ls{"Zapadno-indonezijsko vrijeme"}
+        }
+        "meta:Iran"{
+            ld{"Iran, ljetnje vrijeme"}
+            lg{"Iran vrijeme"}
+            ls{"Iran, standardno vrijeme"}
+        }
+        "meta:Irkutsk"{
+            ld{"Irkuck, ljetnje vrijeme"}
+            lg{"Irkuck vrijeme"}
+            ls{"Irkuck, standardno vrijeme"}
+        }
+        "meta:Israel"{
+            ld{"Izraelsko ljetnje vrijeme"}
+            lg{"Izraelsko vrijeme"}
+            ls{"Izraelsko standardno vrijeme"}
+        }
+        "meta:Japan"{
+            ld{"Japansko ljetnje vrijeme"}
+            lg{"Japansko vrijeme"}
+            ls{"Japansko standardno vrijeme"}
+        }
+        "meta:Kazakhstan_Eastern"{
+            ls{"Istočno-kazahstansko vrijeme"}
+        }
+        "meta:Kazakhstan_Western"{
+            ls{"Zapadno-kazahstansko vrijeme"}
+        }
+        "meta:Korea"{
+            ld{"Korejsko ljetnje vrijeme"}
+            lg{"Korejsko vrijeme"}
+            ls{"Korejsko standardno vrijeme"}
+        }
+        "meta:Kosrae"{
+            ls{"Košre vrijeme"}
+        }
+        "meta:Krasnoyarsk"{
+            ld{"Krasnojarsk, ljetnje vrijeme"}
+            lg{"Krasnojarsk vrijeme"}
+            ls{"Krasnojarsk, standardno vrijeme"}
+        }
+        "meta:Kyrgystan"{
+            ls{"Kirgistan vrijeme"}
+        }
+        "meta:Line_Islands"{
+            ls{"Linijska ostrva vrijeme"}
+        }
+        "meta:Lord_Howe"{
+            ld{"Lord Hov, ljetnje vrijeme"}
+            lg{"Lord Hov vrijeme"}
+            ls{"Lord Hov, standardno vrijeme"}
+        }
+        "meta:Macquarie"{
+            ls{"ostrvo Makvori vrijeme"}
+        }
+        "meta:Magadan"{
+            ld{"Magadan, ljetnje vrijeme"}
+            lg{"Magadan vrijeme"}
+            ls{"Magadan, standardno vrijeme"}
+        }
+        "meta:Malaysia"{
+            ls{"Malezija vrijeme"}
+        }
+        "meta:Maldives"{
+            ls{"Maldivi vrijeme"}
+        }
+        "meta:Marquesas"{
+            ls{"Markiz vrijeme"}
+        }
+        "meta:Marshall_Islands"{
+            ls{"Maršalska Ostrva vrijeme"}
+        }
+        "meta:Mauritius"{
+            ld{"Mauricijus, ljetnje vrijeme"}
+            lg{"Mauricijus vrijeme"}
+            ls{"Mauricijus, standardno vrijeme"}
+        }
+        "meta:Mawson"{
+            ls{"Moson vrijeme"}
+        }
+        "meta:Mexico_Northwest"{
+            ld{"Sjeverozapadni Meksiko, letnje vrijeme"}
+            lg{"Sjeverozapadni Meksiko"}
+            ls{"Sjeverozapadni Meksiko, standardno vrijeme"}
+        }
+        "meta:Mexico_Pacific"{
+            ld{"Meksički Pacifik, ljetnje vrijeme"}
+            ls{"Meksički Pacifik, standardno vrijeme"}
+        }
+        "meta:Mongolia"{
+            ld{"Ulan Bator, ljetnje vrijeeme"}
+            lg{"Ulan Bator vrijeme"}
+            ls{"Ulan Bator, standardno vrijeme"}
+        }
+        "meta:Moscow"{
+            ld{"Moskva, ljetnje vrijeme"}
+            lg{"Moskva vrijeme"}
+            ls{"Moskva, standardno vrijeme"}
+        }
+        "meta:Myanmar"{
+            ls{"Mjanmar vrijeme"}
+        }
+        "meta:Nauru"{
+            ls{"Nauru vrijeme"}
+        }
+        "meta:Nepal"{
+            ls{"Nepal vrijeme"}
+        }
+        "meta:New_Caledonia"{
+            ld{"Nova Kaledonija, ljetnje vrijeme"}
+            lg{"Nova Kaledonija vrijeme"}
+            ls{"Nova Kaledonija, standardno vrijeme"}
+        }
+        "meta:New_Zealand"{
+            ld{"Novi Zeland, ljetnje vrijeme"}
+            lg{"Novi Zeland vrijeme"}
+            ls{"Novi Zeland, standardno vrijeme"}
+        }
+        "meta:Newfoundland"{
+            ld{"Njufaundlend, ljetnje vrijeme"}
+            ls{"Njufaundlend, standardno vrijeme"}
+        }
+        "meta:Niue"{
+            ls{"Nijue vrijeme"}
+        }
+        "meta:Norfolk"{
+            ld{"ostrvo Norfolk, ljetnje vrijeme"}
+            lg{"ostrvo Norfolk vrijeme"}
+            ls{"ostrvo Norfolk, standardno vrijeme"}
+        }
+        "meta:Noronha"{
+            ld{"Fernando de Noronja, ljetnje vrijeme"}
+            lg{"Fernando de Noronja vrijeme"}
+            ls{"Fernando de Noronja, standardno vrijeme"}
+        }
+        "meta:Novosibirsk"{
+            ld{"Novosibirsk, ljetnje vrijeme"}
+            lg{"Novosibirsk vrijeme"}
+            ls{"Novosibirsk, standardno vrijeme"}
+        }
+        "meta:Omsk"{
+            ld{"Omsk, ljetnje vrijeme"}
+            lg{"Omsk vrijeme"}
+            ls{"Omsk, standardno vrijeme"}
+        }
+        "meta:Pakistan"{
+            ld{"Pakistan, ljetnje vrijeme"}
+            lg{"Pakistan vrijeme"}
+            ls{"Pakistan, standardno vrijeme"}
+        }
+        "meta:Palau"{
+            ls{"Palau vrijeme"}
+        }
+        "meta:Papua_New_Guinea"{
+            ls{"Papua Nova Gvineja vrijeme"}
+        }
+        "meta:Paraguay"{
+            ld{"Paragvaj, ljetnje vrijeme"}
+            lg{"Paragvaj vrijeme"}
+            ls{"Paragvaj, standardno vrijeme"}
+        }
+        "meta:Peru"{
+            ld{"Peru, ljetnje vrijeme"}
+            lg{"Peru vrijeme"}
+            ls{"Peru, standardno vrijeme"}
+        }
+        "meta:Philippines"{
+            ld{"Filipini, ljetnje vrijeme"}
+            lg{"Filipini vrijeme"}
+            ls{"Filipini, standardno vrijeme"}
+        }
+        "meta:Phoenix_Islands"{
+            ls{"Feniks ostrva vrijeme"}
+        }
+        "meta:Pierre_Miquelon"{
+            ld{"Sen Pjer i Mikelon, ljetnje vrijeme"}
+            ls{"Sen Pjer i Mikelon, standardno vrijeme"}
+        }
+        "meta:Pitcairn"{
+            ls{"Pitkern vrijeme"}
+        }
+        "meta:Ponape"{
+            ls{"Ponpej vrijeme"}
+        }
+        "meta:Pyongyang"{
+            ls{"Pjongjanško vrijeme"}
+        }
+        "meta:Reunion"{
+            ls{"Reunion vrijeme"}
+        }
+        "meta:Rothera"{
+            ls{"Rotera vrijeme"}
+        }
+        "meta:Sakhalin"{
+            ld{"Sahalin, ljetnje vrijeme"}
+            lg{"Sahalin vrijeme"}
+            ls{"Sahalin, standardno vrijeme"}
+        }
+        "meta:Samoa"{
+            ld{"Samoa, ljetnje vrijeme"}
+            lg{"Samoa vrijeme"}
+            ls{"Samoa, standardno vrijeme"}
+        }
+        "meta:Seychelles"{
+            ls{"Sejšeli vrijeme"}
+        }
+        "meta:Singapore"{
+            ls{"Singapur, standardno vrijeme"}
+        }
+        "meta:Solomon"{
+            ls{"Solomonska Ostrva vrijeme"}
+        }
+        "meta:South_Georgia"{
+            ls{"Južna Džordžija vrijeme"}
+        }
+        "meta:Suriname"{
+            ls{"Surinam vrijeme"}
+        }
+        "meta:Syowa"{
+            ls{"Šova vrijeme"}
+        }
+        "meta:Tahiti"{
+            ls{"Tahiti vrijeme"}
+        }
+        "meta:Taipei"{
+            ld{"Tajpej, ljetnje vrijeme"}
+            lg{"Tajpej vrijeme"}
+            ls{"Tajpej, standardno vrijeme"}
+        }
+        "meta:Tajikistan"{
+            ls{"Tadžikistan vrijeme"}
+        }
+        "meta:Tokelau"{
+            ls{"Tokelau vrijeme"}
+        }
+        "meta:Tonga"{
+            ld{"Tonga, ljetnje vrijeme"}
+            lg{"Tonga vrijeme"}
+            ls{"Tonga, standardno vrijeme"}
+        }
+        "meta:Truk"{
+            ls{"Čuk vrijeme"}
+        }
+        "meta:Turkmenistan"{
+            ld{"Turkmenistan, ljetnje vrijeme"}
+            lg{"Turkmenistan vrijeme"}
+            ls{"Turkmenistan, standardno vrijeme"}
+        }
+        "meta:Tuvalu"{
+            ls{"Tuvalu vrijeme"}
+        }
+        "meta:Uruguay"{
+            ld{"Urugvaj, ljetnje vrijeme"}
+            lg{"Urugvaj vrijeme"}
+            ls{"Urugvaj, standardno vrijeme"}
+        }
+        "meta:Uzbekistan"{
+            ld{"Uzbekistan, ljetnje vrijeme"}
+            lg{"Uzbekistan vrijeme"}
+            ls{"Uzbekistan, standardno vrijeme"}
+        }
+        "meta:Vanuatu"{
+            ld{"Vanuatu, ljetnje vrijeme"}
+            lg{"Vanuatu vrijeme"}
+            ls{"Vanuatu, standardno vrijeme"}
+        }
+        "meta:Venezuela"{
+            ls{"Venecuela vrijeme"}
+        }
+        "meta:Vladivostok"{
+            ld{"Vladivostok, ljetnje vrijeme"}
+            lg{"Vladivostok vrijeme"}
+            ls{"Vladivostok, standardno vrijeme"}
+        }
+        "meta:Volgograd"{
+            ld{"Volgograd, ljetnje vrijeme"}
+            lg{"Volgograd vrijeme"}
+            ls{"Volgograd, standardno vrijeme"}
+        }
+        "meta:Vostok"{
+            ls{"Vostok vrijeme"}
+        }
+        "meta:Wake"{
+            ls{"ostrvo Vejk vrijeme"}
+        }
+        "meta:Wallis"{
+            ls{"ostrva Valis i Futuna vrijeme"}
+        }
+        "meta:Yakutsk"{
+            ld{"Jakutsk, ljetnje vrijeme"}
+            lg{"Jakutsk vrijeme"}
+            ls{"Jakutsk, standardno vrijeme"}
+        }
+        "meta:Yekaterinburg"{
+            ld{"Jekaterinburg, ljetnje vrijeme"}
+            lg{"Jekaterinburg vrijeme"}
+            ls{"Jekaterinburg, standardno vrijeme"}
+        }
+        regionFormatDaylight{"{0}, ljetnje vrijeme"}
+        regionFormatStandard{"{0}, standardno vrijeme"}
+    }
 }
diff --git a/icu4c/source/data/zone/sr_Latn_CS.txt b/icu4c/source/data/zone/sr_Latn_CS.txt
index 0952735..7204cfd 100644
--- a/icu4c/source/data/zone/sr_Latn_CS.txt
+++ b/icu4c/source/data/zone/sr_Latn_CS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_CS{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/zone/sr_Latn_ME.txt b/icu4c/source/data/zone/sr_Latn_ME.txt
index 4cc6fe9..489fd5a 100644
--- a/icu4c/source/data/zone/sr_Latn_ME.txt
+++ b/icu4c/source/data/zone/sr_Latn_ME.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/sr_Latn_RS.txt b/icu4c/source/data/zone/sr_Latn_RS.txt
index 76d38f8..8d63da6 100644
--- a/icu4c/source/data/zone/sr_Latn_RS.txt
+++ b/icu4c/source/data/zone/sr_Latn_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/sr_Latn_YU.txt b/icu4c/source/data/zone/sr_Latn_YU.txt
index 2747ab2..415a4d8 100644
--- a/icu4c/source/data/zone/sr_Latn_YU.txt
+++ b/icu4c/source/data/zone/sr_Latn_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_Latn_YU{
     "%%ALIAS"{"sr_Latn_RS"}
 }
diff --git a/icu4c/source/data/zone/sr_ME.txt b/icu4c/source/data/zone/sr_ME.txt
index 32dc910..aa51626 100644
--- a/icu4c/source/data/zone/sr_ME.txt
+++ b/icu4c/source/data/zone/sr_ME.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_ME{
     "%%ALIAS"{"sr_Latn_ME"}
 }
diff --git a/icu4c/source/data/zone/sr_RS.txt b/icu4c/source/data/zone/sr_RS.txt
index 674ff77..84db469 100644
--- a/icu4c/source/data/zone/sr_RS.txt
+++ b/icu4c/source/data/zone/sr_RS.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_RS{
     "%%ALIAS"{"sr_Cyrl_RS"}
 }
diff --git a/icu4c/source/data/zone/sr_XK.txt b/icu4c/source/data/zone/sr_XK.txt
index 9628a27..0d3aa53 100644
--- a/icu4c/source/data/zone/sr_XK.txt
+++ b/icu4c/source/data/zone/sr_XK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_XK{
     "%%ALIAS"{"sr_Cyrl_XK"}
 }
diff --git a/icu4c/source/data/zone/sr_YU.txt b/icu4c/source/data/zone/sr_YU.txt
index 26563d0..2d67778 100644
--- a/icu4c/source/data/zone/sr_YU.txt
+++ b/icu4c/source/data/zone/sr_YU.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sr_YU{
-    "%%ALIAS"{"sr_Cyrl_RS"}
+    "%%ALIAS"{"sr_RS"}
 }
diff --git a/icu4c/source/data/zone/su.txt b/icu4c/source/data/zone/su.txt
index 93f2ed1..37393b8 100644
--- a/icu4c/source/data/zone/su.txt
+++ b/icu4c/source/data/zone/su.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su{
-    Version{"37"}
     zoneStrings{
         "Etc:UTC"{
             ls{"Waktu Universal Terkoordinasi"}
diff --git a/icu4c/source/data/zone/su_ID.txt b/icu4c/source/data/zone/su_ID.txt
index 67dde38..8da0f56 100644
--- a/icu4c/source/data/zone/su_ID.txt
+++ b/icu4c/source/data/zone/su_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su_ID{
     "%%ALIAS"{"su_Latn_ID"}
 }
diff --git a/icu4c/source/data/zone/su_Latn.txt b/icu4c/source/data/zone/su_Latn.txt
index 008b423..87ca4fa 100644
--- a/icu4c/source/data/zone/su_Latn.txt
+++ b/icu4c/source/data/zone/su_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 su_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/su_Latn_ID.txt b/icu4c/source/data/zone/su_Latn_ID.txt
index 4629832..d6b42f3 100644
--- a/icu4c/source/data/zone/su_Latn_ID.txt
+++ b/icu4c/source/data/zone/su_Latn_ID.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/sv.txt b/icu4c/source/data/zone/sv.txt
index 9ffc114..fa048fc 100644
--- a/icu4c/source/data/zone/sv.txt
+++ b/icu4c/source/data/zone/sv.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sv{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -955,7 +955,7 @@
             ec{"Sydney"}
         }
         "Etc:UTC"{
-            ls{"Koordinerad universell tid"}
+            ls{"koordinerad universell tid"}
             ss{"UTC"}
         }
         "Etc:Unknown"{
diff --git a/icu4c/source/data/zone/sw.txt b/icu4c/source/data/zone/sw.txt
index 77bea50..a71f788 100644
--- a/icu4c/source/data/zone/sw.txt
+++ b/icu4c/source/data/zone/sw.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -1452,15 +1452,15 @@
             ls{"Saa za Wastani za Choibalsan"}
         }
         "meta:Christmas"{
-            ls{"Saa za Kisiwa cha Christmas"}
+            ls{"Saa za Kisiwa cha Krismasi"}
         }
         "meta:Cocos"{
             ls{"Saa za Visiwa vya Cocos"}
         }
         "meta:Colombia"{
-            ld{"Saa za Majira ya joto za Colombia"}
-            lg{"Saa za Colombia"}
-            ls{"Saa za Wastani za Colombia"}
+            ld{"Saa za Majira ya joto za Kolombia"}
+            lg{"Saa za Kolombia"}
+            ls{"Saa za Wastani za Kolombia"}
         }
         "meta:Cook"{
             ld{"Saa za Majira nusu ya joto za Visiwa Cook"}
@@ -1468,9 +1468,9 @@
             ls{"Saa za Wastani za Visiwa vya Cook"}
         }
         "meta:Cuba"{
-            ld{"Saa za Mchana za Cuba"}
-            lg{"Saa za Cuba"}
-            ls{"Saa za Wastani ya Cuba"}
+            ld{"Saa za Mchana za Kuba"}
+            lg{"Saa za Kuba"}
+            ls{"Saa za Wastani ya Kuba"}
         }
         "meta:Davis"{
             ls{"Saa za Davis"}
@@ -1487,12 +1487,12 @@
             ls{"Saa za Wastani za Kisiwa cha Easter"}
         }
         "meta:Ecuador"{
-            ls{"Saa za Ecuador"}
+            ls{"Saa za Ekwado"}
         }
         "meta:Europe_Central"{
             ld{"Saa za Majira ya joto za Ulaya ya Kati"}
             lg{"Saa za Ulaya ya Kati"}
-            ls{"Saa za Wastani za Ulaya ya kati"}
+            ls{"Saa za Wastani za Ulaya ya Kati"}
         }
         "meta:Europe_Eastern"{
             ld{"Saa za Majira ya joto za Mashariki mwa Ulaya"}
@@ -1533,9 +1533,9 @@
             ls{"Saa za Gambier"}
         }
         "meta:Georgia"{
-            ld{"Saa za Majira ya joto za Georgia"}
-            lg{"Saa za Georgia"}
-            ls{"Saa za Wastani za Georgia"}
+            ld{"Saa za Majira ya joto za Jojia"}
+            lg{"Saa za Jojia"}
+            ls{"Saa za Wastani za Jojia"}
         }
         "meta:Gilbert_Islands"{
             ls{"Saa za Visiwa vya Gilbert"}
@@ -1572,7 +1572,7 @@
             ls{"Saa za Wastani za Hovd"}
         }
         "meta:India"{
-            ls{"Saa Wastani za India"}
+            ls{"Saa za Wastani za India"}
         }
         "meta:Indian_Ocean"{
             ls{"Saa za Bahari Hindi"}
@@ -1607,7 +1607,7 @@
         "meta:Japan"{
             ld{"Saa za Mchana za Japan"}
             lg{"Saa za Japan"}
-            ls{"Saa Wastani za Japan"}
+            ls{"Saa za Wastani za Japani"}
         }
         "meta:Kamchatka"{
             ld{"Saa za Kiangazi za Petropavlovsk-Kamchatski"}
@@ -1665,22 +1665,22 @@
             ls{"Saa za Visiwa vya Marshall"}
         }
         "meta:Mauritius"{
-            ld{"Saa za Majira ya joto za Mauritius"}
-            lg{"Saa za Mauritius"}
-            ls{"Saa za Wastani za Mauritius"}
+            ld{"Saa za Majira ya joto za Morisi"}
+            lg{"Saa za Morisi"}
+            ls{"Saa za Wastani za Morisi"}
         }
         "meta:Mawson"{
             ls{"Saa za Mawson"}
         }
         "meta:Mexico_Northwest"{
-            ld{"Saa za mchana za Mexico Kaskazini Magharibi"}
-            lg{"Saa za Mexico Kaskazini Magharibi"}
-            ls{"Saa za Wastani za Mexico Kaskazini Magharibi"}
+            ld{"Saa za mchana za Meksiko Kaskazini Magharibi"}
+            lg{"Saa za Meksiko Kaskazini Magharibi"}
+            ls{"Saa za Wastani za Meksiko Kaskazini Magharibi"}
         }
         "meta:Mexico_Pacific"{
-            ld{"Saa za mchana za pasifiki za Mexico"}
-            lg{"Saa za pasifiki za Mexico"}
-            ls{"Saa za wastani za pasifiki za Mexico"}
+            ld{"Saa za mchana za pasifiki za Meksiko"}
+            lg{"Saa za pasifiki za Meksiko"}
+            ls{"Saa za wastani za pasifiki za Meksiko"}
         }
         "meta:Mongolia"{
             ld{"Saa za Majira ya joto za Ulan Bator"}
@@ -1751,9 +1751,9 @@
             ls{"Saa za Papua New Guinea"}
         }
         "meta:Paraguay"{
-            ld{"Saa za Majira ya joto za Paraguay"}
-            lg{"Saa za Paraguay"}
-            ls{"Saa za Wastani za Paraguay"}
+            ld{"Saa za Majira ya joto za Paragwai"}
+            lg{"Saa za Paragwai"}
+            ls{"Saa za Wastani za Paragwai"}
         }
         "meta:Peru"{
             ld{"Saa za Majira ya joto za Peru"}
@@ -1852,9 +1852,9 @@
             ls{"Saa za Tuvalu"}
         }
         "meta:Uruguay"{
-            ld{"Saa za Majira ya joto za Uruguay"}
-            lg{"Saa za Uruguay"}
-            ls{"Saa za Wastani za Uruguay"}
+            ld{"Saa za Majira ya joto za Urugwai"}
+            lg{"Saa za Urugwai"}
+            ls{"Saa za Wastani za Urugwai"}
         }
         "meta:Uzbekistan"{
             ld{"Saa za Majira ya joto za Uzbekistan"}
diff --git a/icu4c/source/data/zone/sw_KE.txt b/icu4c/source/data/zone/sw_KE.txt
index ae69084..690a37d 100644
--- a/icu4c/source/data/zone/sw_KE.txt
+++ b/icu4c/source/data/zone/sw_KE.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 sw_KE{
-    Version{"37"}
     zoneStrings{
         "America:Barbados"{
             ec{"Babadosi"}
@@ -113,9 +113,6 @@
             lg{"Saa za Kepuvede"}
             ls{"Saa za Wastani za Kepuvede"}
         }
-        "meta:Christmas"{
-            ls{"Saa za Kisiwa cha Krismasi"}
-        }
         "meta:Colombia"{
             ld{"Saa za Majira ya Joto za Kolombia"}
             lg{"Saa za Kolombia"}
@@ -136,9 +133,6 @@
             lg{"Saa za Kisiwa cha Easter"}
             ls{"Saa za Wastani za Kisiwa cha Easter"}
         }
-        "meta:Ecuador"{
-            ls{"Saa za Ekwado"}
-        }
         "meta:French_Guiana"{
             ls{"Saa za Guiana"}
         }
@@ -150,9 +144,6 @@
         "meta:Gulf"{
             ls{"Saa za Wastani za Ghuba"}
         }
-        "meta:India"{
-            ls{"Saa za Wastani za India"}
-        }
         "meta:Iran"{
             ld{"Saa za Mchana za Irani"}
             lg{"Saa za Irani"}
diff --git a/icu4c/source/data/zone/ta.txt b/icu4c/source/data/zone/ta.txt
index 15ff284..7909bff 100644
--- a/icu4c/source/data/zone/ta.txt
+++ b/icu4c/source/data/zone/ta.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ta{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"அபிட்ஜான்"}
@@ -1752,7 +1752,7 @@
             ls{"நியு நேரம்"}
         }
         "meta:Norfolk"{
-            ld{"நார்ஃபோக் தீவு கோடை நேரம்"}
+            ld{"நார்ஃபோக் தீவு பகலொளி நேரம்"}
             lg{"நார்ஃபோக் தீவு நேரம்"}
             ls{"நார்ஃபோக் தீவு நிலையான நேரம்"}
         }
diff --git a/icu4c/source/data/zone/ta_MY.txt b/icu4c/source/data/zone/ta_MY.txt
index 930a97d..455100f 100644
--- a/icu4c/source/data/zone/ta_MY.txt
+++ b/icu4c/source/data/zone/ta_MY.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ta_MY{
-    Version{"37"}
     zoneStrings{
         "meta:India"{
             ss{"∅∅∅"}
diff --git a/icu4c/source/data/zone/ta_SG.txt b/icu4c/source/data/zone/ta_SG.txt
index 8ec52a4..9d3b785 100644
--- a/icu4c/source/data/zone/ta_SG.txt
+++ b/icu4c/source/data/zone/ta_SG.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ta_SG{
-    Version{"37"}
     zoneStrings{
         "meta:India"{
             ss{"∅∅∅"}
diff --git a/icu4c/source/data/zone/te.txt b/icu4c/source/data/zone/te.txt
index c71eed7..f57430c 100644
--- a/icu4c/source/data/zone/te.txt
+++ b/icu4c/source/data/zone/te.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 te{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"అబిడ్జాన్"}
@@ -1752,7 +1752,7 @@
             ls{"నియూ సమయం"}
         }
         "meta:Norfolk"{
-            ld{"నార్ఫోక్ దీవి వేసవి సమయం"}
+            ld{"నార్ఫోక్ దీవి పగటి సమయం"}
             lg{"నార్ఫోక్ దీవి సమయం"}
             ls{"నార్ఫోక్ దీవి ప్రామాణిక సమయం"}
         }
diff --git a/icu4c/source/data/zone/teo.txt b/icu4c/source/data/zone/teo.txt
index 8aec59f..9e0d98e 100644
--- a/icu4c/source/data/zone/teo.txt
+++ b/icu4c/source/data/zone/teo.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 teo{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/tg.txt b/icu4c/source/data/zone/tg.txt
index b642d86..6f64728 100644
--- a/icu4c/source/data/zone/tg.txt
+++ b/icu4c/source/data/zone/tg.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tg{
-    Version{"37"}
     zoneStrings{
         "Asia:Dushanbe"{
             ec{"Душанбе"}
diff --git a/icu4c/source/data/zone/th.txt b/icu4c/source/data/zone/th.txt
index 1bed16b..60d7163 100644
--- a/icu4c/source/data/zone/th.txt
+++ b/icu4c/source/data/zone/th.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 th{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"อาบีจาน"}
@@ -1754,7 +1754,7 @@
             ls{"เวลานีอูเอ"}
         }
         "meta:Norfolk"{
-            ld{"เวลาฤดูร้อนเกาะนอร์ฟอล์ก"}
+            ld{"เวลาออมแสงเกาะนอร์ฟอล์ก"}
             lg{"เวลาเกาะนอร์ฟอล์ก"}
             ls{"เวลามาตรฐานเกาะนอร์ฟอล์ก"}
         }
diff --git a/icu4c/source/data/zone/ti.txt b/icu4c/source/data/zone/ti.txt
index 894e20b..d482793 100644
--- a/icu4c/source/data/zone/ti.txt
+++ b/icu4c/source/data/zone/ti.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ti{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -807,6 +807,9 @@
         "Asia:Qatar"{
             ec{"Qatar"}
         }
+        "Asia:Qostanay"{
+            ec{"Kostanay"}
+        }
         "Asia:Qyzylorda"{
             ec{"Qyzylorda"}
         }
@@ -948,6 +951,9 @@
         "Australia:Sydney"{
             ec{"Sydney"}
         }
+        "Etc:UTC"{
+            ls{"Coordinated Universal Time"}
+        }
         "Etc:Unknown"{
             ec{"Unknown"}
         }
@@ -992,6 +998,7 @@
         }
         "Europe:Dublin"{
             ec{"Dublin"}
+            ld{"Irish Standard Time"}
         }
         "Europe:Gibraltar"{
             ec{"Gibraltar"}
@@ -1028,6 +1035,7 @@
         }
         "Europe:London"{
             ec{"London"}
+            ld{"British Summer Time"}
         }
         "Europe:Luxembourg"{
             ec{"Luxembourg"}
@@ -1209,6 +1217,9 @@
         "Pacific:Honolulu"{
             ec{"Honolulu"}
         }
+        "Pacific:Johnston"{
+            ec{"Johnston"}
+        }
         "Pacific:Kiritimati"{
             ec{"Kiritimati"}
         }
@@ -1278,6 +1289,21 @@
         "Pacific:Wallis"{
             ec{"Wallis"}
         }
+        "meta:Indonesia_Central"{
+            ls{"Central Indonesia Time"}
+        }
+        "meta:Indonesia_Eastern"{
+            ls{"Eastern Indonesia Time"}
+        }
+        "meta:Indonesia_Western"{
+            ls{"Western Indonesia Time"}
+        }
+        "meta:Malaysia"{
+            ls{"Malaysia Time"}
+        }
+        "meta:Singapore"{
+            ls{"Singapore Standard Time"}
+        }
         fallbackFormat{"{1} ({0})"}
         gmtFormat{"GMT{0}"}
         gmtZeroFormat{"GMT"}
diff --git a/icu4c/source/data/zone/tk.txt b/icu4c/source/data/zone/tk.txt
index 394a99d..292c1d7 100644
--- a/icu4c/source/data/zone/tk.txt
+++ b/icu4c/source/data/zone/tk.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tk{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abijan"}
@@ -588,6 +588,9 @@
         "America:Whitehorse"{
             ec{"Waýthors"}
         }
+        "America:Winnipeg"{
+            ec{"Winnipeg"}
+        }
         "America:Yakutat"{
             ec{"Ýakutat"}
         }
@@ -1510,7 +1513,7 @@
             ls{"Fransuz Günorta we Antarktika ýerleri wagty"}
         }
         "meta:GMT"{
-            ls{"Grinwiç boýunça orta wagt"}
+            ls{"Grinwiç ortaça wagty"}
         }
         "meta:Galapagos"{
             ls{"Galapagos adalary wagty"}
diff --git a/icu4c/source/data/zone/tl.txt b/icu4c/source/data/zone/tl.txt
index 4e521f9..8c39518 100644
--- a/icu4c/source/data/zone/tl.txt
+++ b/icu4c/source/data/zone/tl.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tl{
     "%%ALIAS"{"fil"}
 }
diff --git a/icu4c/source/data/zone/tl_PH.txt b/icu4c/source/data/zone/tl_PH.txt
index 07c9f90..59af394 100644
--- a/icu4c/source/data/zone/tl_PH.txt
+++ b/icu4c/source/data/zone/tl_PH.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tl_PH{
     "%%ALIAS"{"fil_PH"}
 }
diff --git a/icu4c/source/data/zone/to.txt b/icu4c/source/data/zone/to.txt
index 506f90e..bbc2327 100644
--- a/icu4c/source/data/zone/to.txt
+++ b/icu4c/source/data/zone/to.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 to{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
diff --git a/icu4c/source/data/zone/tr.txt b/icu4c/source/data/zone/tr.txt
index cdb913a..04b9e44 100644
--- a/icu4c/source/data/zone/tr.txt
+++ b/icu4c/source/data/zone/tr.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tr{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
diff --git a/icu4c/source/data/zone/tt.txt b/icu4c/source/data/zone/tt.txt
index 51be446..7b917bd 100644
--- a/icu4c/source/data/zone/tt.txt
+++ b/icu4c/source/data/zone/tt.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tt{
-    Version{"37"}
     zoneStrings{
         "Etc:UTC"{
             ls{"Бөтендөнья килештерелгән вакыты"}
diff --git a/icu4c/source/data/zone/twq.txt b/icu4c/source/data/zone/twq.txt
index d90e4d4..12e378b 100644
--- a/icu4c/source/data/zone/twq.txt
+++ b/icu4c/source/data/zone/twq.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 twq{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/tzm.txt b/icu4c/source/data/zone/tzm.txt
index 9d0747f..ccc6dc3 100644
--- a/icu4c/source/data/zone/tzm.txt
+++ b/icu4c/source/data/zone/tzm.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 tzm{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/ug.txt b/icu4c/source/data/zone/ug.txt
index 9182f20..ca66ea5 100644
--- a/icu4c/source/data/zone/ug.txt
+++ b/icu4c/source/data/zone/ug.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ug{
-    Version{"37"}
     zoneStrings{
         "Africa:Sao_Tome"{
             ec{"سان-تومې"}
diff --git a/icu4c/source/data/zone/uk.txt b/icu4c/source/data/zone/uk.txt
index 09ba825..34edaed 100644
--- a/icu4c/source/data/zone/uk.txt
+++ b/icu4c/source/data/zone/uk.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uk{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Абіджан"}
@@ -637,7 +637,7 @@
             ec{"Восток"}
         }
         "Arctic:Longyearbyen"{
-            ec{"Лонґйїр"}
+            ec{"Лонгʼїр"}
         }
         "Asia:Aden"{
             ec{"Аден"}
@@ -673,7 +673,7 @@
             ec{"Баку"}
         }
         "Asia:Bangkok"{
-            ec{"Банґкок"}
+            ec{"Бангкок"}
         }
         "Asia:Barnaul"{
             ec{"Барнаул"}
@@ -763,7 +763,7 @@
             ec{"Куала-Лумпур"}
         }
         "Asia:Kuching"{
-            ec{"Кучінґ"}
+            ec{"Кучинг"}
         }
         "Asia:Kuwait"{
             ec{"Кувейт"}
@@ -817,7 +817,7 @@
             ec{"Кизилорда"}
         }
         "Asia:Rangoon"{
-            ec{"Янґон"}
+            ec{"Янгон"}
         }
         "Asia:Riyadh"{
             ec{"Ер-Ріяд"}
@@ -973,7 +973,7 @@
             ec{"Афіни"}
         }
         "Europe:Belgrade"{
-            ec{"Белґрад"}
+            ec{"Белград"}
         }
         "Europe:Berlin"{
             ec{"Берлін"}
@@ -997,17 +997,17 @@
             ec{"Кишинів"}
         }
         "Europe:Copenhagen"{
-            ec{"Копенгаґен"}
+            ec{"Копенгаген"}
         }
         "Europe:Dublin"{
             ec{"Дублін"}
             ld{"за літнім часом в Ірландії"}
         }
         "Europe:Gibraltar"{
-            ec{"Ґібралтар"}
+            ec{"Гібралтар"}
         }
         "Europe:Guernsey"{
-            ec{"Ґернсі"}
+            ec{"Гернсі"}
         }
         "Europe:Helsinki"{
             ec{"Гельсінкі"}
@@ -1041,7 +1041,7 @@
             ld{"за літнім часом у Великій Британії"}
         }
         "Europe:Luxembourg"{
-            ec{"Люксембурґ"}
+            ec{"Люксембург"}
         }
         "Europe:Madrid"{
             ec{"Мадрид"}
@@ -1083,7 +1083,7 @@
             ec{"Самара"}
         }
         "Europe:San_Marino"{
-            ec{"Сан-Маріно"}
+            ec{"Сан-Марино"}
         }
         "Europe:Sarajevo"{
             ec{"Сараєво"}
@@ -1134,7 +1134,7 @@
             ec{"Варшава"}
         }
         "Europe:Zagreb"{
-            ec{"Заґреб"}
+            ec{"Загреб"}
         }
         "Europe:Zaporozhye"{
             ec{"Запоріжжя"}
@@ -1209,13 +1209,13 @@
             ec{"Ґалапаґос"}
         }
         "Pacific:Gambier"{
-            ec{"Ґамбʼєр"}
+            ec{"Гамбʼє"}
         }
         "Pacific:Guadalcanal"{
-            ec{"Ґуадалканал"}
+            ec{"Гуадалканал"}
         }
         "Pacific:Guam"{
-            ec{"Ґуам"}
+            ec{"Гуам"}
         }
         "Pacific:Honolulu"{
             ec{"Гонолулу"}
@@ -1269,7 +1269,7 @@
             ec{"Порт-Морсбі"}
         }
         "Pacific:Rarotonga"{
-            ec{"Раротонґа"}
+            ec{"Раротонга"}
         }
         "Pacific:Saipan"{
             ec{"Сайпан"}
@@ -1281,7 +1281,7 @@
             ec{"Тарава"}
         }
         "Pacific:Tongatapu"{
-            ec{"Тонґатапу"}
+            ec{"Тонгатапу"}
         }
         "Pacific:Truk"{
             ec{"Чуук"}
@@ -1529,7 +1529,7 @@
             ls{"за часом на Французьких Південних і Антарктичних територіях"}
         }
         "meta:GMT"{
-            ls{"за Ґрінвічем"}
+            ls{"за Гринвічем"}
         }
         "meta:Galapagos"{
             ls{"за часом Ґалапаґосу"}
@@ -1820,7 +1820,7 @@
             ls{"за часом на Сейшельських Островах"}
         }
         "meta:Singapore"{
-            ls{"за часом у Сінґапурі"}
+            ls{"за часом у Сінгапурі"}
         }
         "meta:Solomon"{
             ls{"за часом на Соломонових Островах"}
@@ -1849,9 +1849,9 @@
             ls{"за часом на островах Токелау"}
         }
         "meta:Tonga"{
-            ld{"за літнім часом на островах Тонґа"}
-            lg{"за часом на островах Тонґа"}
-            ls{"за стандартним часом на островах Тонґа"}
+            ld{"за літнім часом на островах Тонга"}
+            lg{"за часом на островах Тонга"}
+            ls{"за стандартним часом на островах Тонга"}
         }
         "meta:Truk"{
             ls{"за часом на островах Чуук"}
diff --git a/icu4c/source/data/zone/ur.txt b/icu4c/source/data/zone/ur.txt
index f1dda9a..f20905f 100644
--- a/icu4c/source/data/zone/ur.txt
+++ b/icu4c/source/data/zone/ur.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ur{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"عابدجان"}
@@ -1720,7 +1720,7 @@
             ls{"نیئو ٹائم"}
         }
         "meta:Norfolk"{
-            ld{"نارفوک آئلینڈ کا موسم گرما کا وقت"}
+            ld{"نارفوک آئلینڈ ڈے لائٹ وقت"}
             lg{"نارفوک آئلینڈ کا وقت"}
             ls{"نارفوک آئلینڈ کا معیاری وقت"}
         }
diff --git a/icu4c/source/data/zone/ur_IN.txt b/icu4c/source/data/zone/ur_IN.txt
index b0cfb3c..6e43160 100644
--- a/icu4c/source/data/zone/ur_IN.txt
+++ b/icu4c/source/data/zone/ur_IN.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 ur_IN{
-    Version{"37"}
     zoneStrings{
         "Africa:Accra"{
             ec{"اکرا"}
diff --git a/icu4c/source/data/zone/uz.txt b/icu4c/source/data/zone/uz.txt
index c2b99f7..946e744 100644
--- a/icu4c/source/data/zone/uz.txt
+++ b/icu4c/source/data/zone/uz.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
diff --git a/icu4c/source/data/zone/uz_AF.txt b/icu4c/source/data/zone/uz_AF.txt
index 24ca294..0e8d20c 100644
--- a/icu4c/source/data/zone/uz_AF.txt
+++ b/icu4c/source/data/zone/uz_AF.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_AF{
     "%%ALIAS"{"uz_Arab_AF"}
 }
diff --git a/icu4c/source/data/zone/uz_Arab.txt b/icu4c/source/data/zone/uz_Arab.txt
index fbe5126..a78e525 100644
--- a/icu4c/source/data/zone/uz_Arab.txt
+++ b/icu4c/source/data/zone/uz_Arab.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Arab{
     %%Parent{"root"}
-    Version{"37"}
     zoneStrings{
         "Asia:Kabul"{
             ec{"کابل"}
diff --git a/icu4c/source/data/zone/uz_Arab_AF.txt b/icu4c/source/data/zone/uz_Arab_AF.txt
index e45d708..e2978bb 100644
--- a/icu4c/source/data/zone/uz_Arab_AF.txt
+++ b/icu4c/source/data/zone/uz_Arab_AF.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/uz_Cyrl.txt b/icu4c/source/data/zone/uz_Cyrl.txt
index 724127d..03d6036 100644
--- a/icu4c/source/data/zone/uz_Cyrl.txt
+++ b/icu4c/source/data/zone/uz_Cyrl.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Cyrl{
     %%Parent{"root"}
-    Version{"37"}
     zoneStrings{
         "Africa:Asmera"{
             ec{"Asmara"}
diff --git a/icu4c/source/data/zone/uz_Latn.txt b/icu4c/source/data/zone/uz_Latn.txt
index f6035b7..1ae52da 100644
--- a/icu4c/source/data/zone/uz_Latn.txt
+++ b/icu4c/source/data/zone/uz_Latn.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_Latn{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/uz_Latn_UZ.txt b/icu4c/source/data/zone/uz_Latn_UZ.txt
index 2d34eff..356e549 100644
--- a/icu4c/source/data/zone/uz_Latn_UZ.txt
+++ b/icu4c/source/data/zone/uz_Latn_UZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/uz_UZ.txt b/icu4c/source/data/zone/uz_UZ.txt
index ffac532..3a6a14d 100644
--- a/icu4c/source/data/zone/uz_UZ.txt
+++ b/icu4c/source/data/zone/uz_UZ.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 uz_UZ{
     "%%ALIAS"{"uz_Latn_UZ"}
 }
diff --git a/icu4c/source/data/zone/vai.txt b/icu4c/source/data/zone/vai.txt
index 00fb305..f1f79bb 100644
--- a/icu4c/source/data/zone/vai.txt
+++ b/icu4c/source/data/zone/vai.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/vai_LR.txt b/icu4c/source/data/zone/vai_LR.txt
index 27d4238..f682350 100644
--- a/icu4c/source/data/zone/vai_LR.txt
+++ b/icu4c/source/data/zone/vai_LR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_LR{
     "%%ALIAS"{"vai_Vaii_LR"}
 }
diff --git a/icu4c/source/data/zone/vai_Latn.txt b/icu4c/source/data/zone/vai_Latn.txt
index 43baa49..2a01a5c 100644
--- a/icu4c/source/data/zone/vai_Latn.txt
+++ b/icu4c/source/data/zone/vai_Latn.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_Latn{
     %%Parent{"root"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/vai_Vaii.txt b/icu4c/source/data/zone/vai_Vaii.txt
index cffa591..6dc5e99 100644
--- a/icu4c/source/data/zone/vai_Vaii.txt
+++ b/icu4c/source/data/zone/vai_Vaii.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vai_Vaii{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/vai_Vaii_LR.txt b/icu4c/source/data/zone/vai_Vaii_LR.txt
index a17bc11..d2845ca 100644
--- a/icu4c/source/data/zone/vai_Vaii_LR.txt
+++ b/icu4c/source/data/zone/vai_Vaii_LR.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/vi.txt b/icu4c/source/data/zone/vi.txt
index cf0e8a1..8c3922f 100644
--- a/icu4c/source/data/zone/vi.txt
+++ b/icu4c/source/data/zone/vi.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vi{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"Abidjan"}
@@ -958,7 +958,7 @@
             ls{"Giờ Phối hợp Quốc tế"}
         }
         "Etc:Unknown"{
-            ec{"Thành phố Không xác định"}
+            ec{"Thành phố không xác định"}
         }
         "Europe:Amsterdam"{
             ec{"Amsterdam"}
@@ -1441,9 +1441,9 @@
             ls{"Giờ Chuẩn Azerbaijan"}
         }
         "meta:Azores"{
-            ld{"Giờ Mùa Hè Azores"}
+            ld{"Giờ mùa hè Azores"}
             lg{"Giờ Azores"}
-            ls{"Giờ Chuẩn Azores"}
+            ls{"Giờ chuẩn Azores"}
         }
         "meta:Bangladesh"{
             ld{"Giờ Mùa Hè Bangladesh"}
@@ -1544,7 +1544,7 @@
             ls{"Giờ chuẩn Đông Âu"}
         }
         "meta:Europe_Further_Eastern"{
-            ls{"Giờ Châu Âu Viễn Đông"}
+            ls{"Giờ Viễn đông Châu Âu"}
         }
         "meta:Europe_Western"{
             ld{"Giờ mùa hè Tây Âu"}
diff --git a/icu4c/source/data/zone/vun.txt b/icu4c/source/data/zone/vun.txt
index 8db299d..6e8c781 100644
--- a/icu4c/source/data/zone/vun.txt
+++ b/icu4c/source/data/zone/vun.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 vun{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/wae.txt b/icu4c/source/data/zone/wae.txt
index 4df39dd..688ae3b 100644
--- a/icu4c/source/data/zone/wae.txt
+++ b/icu4c/source/data/zone/wae.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 wae{
-    Version{"37"}
     zoneStrings{
         "Africa:Accra"{
             ec{"Akra"}
diff --git a/icu4c/source/data/zone/wo.txt b/icu4c/source/data/zone/wo.txt
index e0b2d69..08c265f 100644
--- a/icu4c/source/data/zone/wo.txt
+++ b/icu4c/source/data/zone/wo.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 wo{
-    Version{"37"}
     zoneStrings{
         "Africa:Dakar"{
             ec{"Dakar"}
diff --git a/icu4c/source/data/zone/xh.txt b/icu4c/source/data/zone/xh.txt
index a659eb8..3a7aa5d 100644
--- a/icu4c/source/data/zone/xh.txt
+++ b/icu4c/source/data/zone/xh.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 xh{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/xog.txt b/icu4c/source/data/zone/xog.txt
index bd9bdd8..059ee19 100644
--- a/icu4c/source/data/zone/xog.txt
+++ b/icu4c/source/data/zone/xog.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 xog{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/yav.txt b/icu4c/source/data/zone/yav.txt
index 2ad349bf..5bbb6b1 100644
--- a/icu4c/source/data/zone/yav.txt
+++ b/icu4c/source/data/zone/yav.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yav{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/yi.txt b/icu4c/source/data/zone/yi.txt
index 119fbf1..11457dc 100644
--- a/icu4c/source/data/zone/yi.txt
+++ b/icu4c/source/data/zone/yi.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yi{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"אַבידזשאַן"}
diff --git a/icu4c/source/data/zone/yo.txt b/icu4c/source/data/zone/yo.txt
index ec57ca3..e878b1b 100644
--- a/icu4c/source/data/zone/yo.txt
+++ b/icu4c/source/data/zone/yo.txt
@@ -1,8 +1,332 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yo{
-    Version{"37"}
     zoneStrings{
+        "America:Adak"{
+            ec{"ìlú Adákì"}
+        }
+        "America:Anchorage"{
+            ec{"ìlú Ankọ́réèjì"}
+        }
+        "America:Anguilla"{
+            ec{"ìlú Angúílà"}
+        }
+        "America:Antigua"{
+            ec{"ìlú Antígùà"}
+        }
+        "America:Aruba"{
+            ec{"ìlú Arúbá"}
+        }
+        "America:Bahia_Banderas"{
+            ec{"ìlú Báhì Bándẹ́rásì"}
+        }
+        "America:Barbados"{
+            ec{"ìlú Bábádọ́ọ̀sì"}
+        }
+        "America:Belize"{
+            ec{"ìlú Bẹ̀líìsì"}
+        }
+        "America:Blanc-Sablon"{
+            ec{"ìlú Blank Sabulọ́ọ̀nì"}
+        }
+        "America:Boise"{
+            ec{"ìlú Bọ́isè"}
+        }
+        "America:Cambridge_Bay"{
+            ec{"ìlú òkun kambíríìjì"}
+        }
+        "America:Cancun"{
+            ec{"ìlú Kancun"}
+        }
+        "America:Cayman"{
+            ec{"ilú Kayman"}
+        }
+        "America:Chicago"{
+            ec{"ìlú Chicago"}
+        }
+        "America:Chihuahua"{
+            ec{"ìlú Ṣihuahua"}
+        }
+        "America:Coral_Harbour"{
+            ec{"ìlú àtikọkàn"}
+        }
+        "America:Costa_Rica"{
+            ec{"ìlú Kosta Ríkà"}
+        }
+        "America:Creston"{
+            ec{"ìlú Kírẹstọ́ọ̀nù"}
+        }
+        "America:Curacao"{
+            ec{"ìlú Kuraṣao"}
+        }
+        "America:Danmarkshavn"{
+            ec{"ìlú Banmarkshan"}
+        }
+        "America:Dawson"{
+            ec{"ìlú Dawson"}
+        }
+        "America:Dawson_Creek"{
+            ec{"ìlú Dawson Creek"}
+        }
+        "America:Denver"{
+            ec{"ìlú Denver"}
+        }
+        "America:Detroit"{
+            ec{"ìlú Detroit"}
+        }
+        "America:Dominica"{
+            ec{"ìlú Dominika"}
+        }
+        "America:Edmonton"{
+            ec{"ìlú Edmonton"}
+        }
+        "America:El_Salvador"{
+            ec{"ìlú El Savador"}
+        }
+        "America:Fort_Nelson"{
+            ec{"ìlú Fort Nelson"}
+        }
+        "America:Glace_Bay"{
+            ec{"ìlú omi Glace"}
+        }
+        "America:Godthab"{
+            ec{"ìlú Nuuk"}
+        }
+        "America:Goose_Bay"{
+            ec{"ìlú omi Goosù"}
+        }
+        "America:Grand_Turk"{
+            ec{"ìlú Grand Turk"}
+        }
+        "America:Grenada"{
+            ec{"ìlú Grenada"}
+        }
+        "America:Guadeloupe"{
+            ec{"ìlú Guadeloupe"}
+        }
+        "America:Guatemala"{
+            ec{"ìlú Guatemala"}
+        }
+        "America:Halifax"{
+            ec{"ìlú Halifásì"}
+        }
+        "America:Havana"{
+            ec{"ìlú Havana"}
+        }
+        "America:Hermosillo"{
+            ec{"ìlú Hermosilo"}
+        }
+        "America:Indiana:Knox"{
+            ec{"ìlú nọ́sì"}
+        }
+        "America:Indiana:Marengo"{
+            ec{"ìlú Marẹ́ngo"}
+        }
+        "America:Indiana:Petersburg"{
+            ec{"ìlú Petersburg"}
+        }
+        "America:Indiana:Tell_City"{
+            ec{"ìlú Tell City"}
+        }
+        "America:Indiana:Vevay"{
+            ec{"ìlú Vevay"}
+        }
+        "America:Indiana:Vincennes"{
+            ec{"ìlú Vincennes ní Indiana"}
+        }
+        "America:Indiana:Winamac"{
+            ec{"ìlú Winamak ní Indiana"}
+        }
+        "America:Indianapolis"{
+            ec{"ìlú Indianapolis"}
+        }
+        "America:Inuvik"{
+            ec{"ìlú Inuvik"}
+        }
+        "America:Iqaluit"{
+            ec{"ìlú Iqaluit"}
+        }
+        "America:Jamaica"{
+            ec{"ìlú Jamaikà"}
+        }
+        "America:Juneau"{
+            ec{"ìlú Junu"}
+        }
+        "America:Kentucky:Monticello"{
+            ec{"ìlú Montisẹ́lò"}
+        }
+        "America:Kralendijk"{
+            ec{"ìlú Kíralẹ́ndáikì"}
+        }
+        "America:Los_Angeles"{
+            ec{"ìlú Los Angeles"}
+        }
+        "America:Louisville"{
+            ec{"ìlú Lúífíìlì"}
+        }
+        "America:Lower_Princes"{
+            ec{"ìlú Lower Prince’s Quarter"}
+        }
+        "America:Managua"{
+            ec{"ìlú Managua"}
+        }
+        "America:Marigot"{
+            ec{"ìlú Marigọ́ọ̀tì"}
+        }
+        "America:Martinique"{
+            ec{"ìlú Mátíníkì"}
+        }
+        "America:Matamoros"{
+            ec{"ìlú Matamorosì"}
+        }
+        "America:Mazatlan"{
+            ec{"ìlú Masatiani"}
+        }
+        "America:Menominee"{
+            ec{"ìlú Menominì"}
+        }
+        "America:Merida"{
+            ec{"ìlú Merida"}
+        }
+        "America:Metlakatla"{
+            ec{"ìlú Metilakatila"}
+        }
+        "America:Mexico_City"{
+            ec{"ìlú Mẹ́síkò"}
+        }
+        "America:Miquelon"{
+            ec{"ìlú Mikulọ́nì"}
+        }
+        "America:Moncton"{
+            ec{"ìlú Montoni"}
+        }
+        "America:Monterrey"{
+            ec{"ìlú Monteri"}
+        }
+        "America:Montserrat"{
+            ec{"ìlú Monseratì"}
+        }
+        "America:Nassau"{
+            ec{"ìlú Nasaò"}
+        }
+        "America:New_York"{
+            ec{"ìlú New York"}
+        }
+        "America:Nipigon"{
+            ec{"ìlú Nipigoni"}
+        }
+        "America:Nome"{
+            ec{"ìlú Nomi"}
+        }
+        "America:North_Dakota:Beulah"{
+            ec{"ìlú Beulà ní North Dakota"}
+        }
+        "America:North_Dakota:Center"{
+            ec{"ìlú Senta North Dakota"}
+        }
+        "America:North_Dakota:New_Salem"{
+            ec{"ìlú New Salem ni North Dakota"}
+        }
+        "America:Ojinaga"{
+            ec{"ìlú Ojinaga"}
+        }
+        "America:Panama"{
+            ec{"ìlú Panama"}
+        }
+        "America:Pangnirtung"{
+            ec{"ìlú Panituni"}
+        }
+        "America:Phoenix"{
+            ec{"ìlú Fínísì"}
+        }
+        "America:Port-au-Prince"{
+            ec{"ìlú Port-au-Prince"}
+        }
+        "America:Port_of_Spain"{
+            ec{"ìlú etí omi Sípéènì"}
+        }
+        "America:Puerto_Rico"{
+            ec{"ìlú Puerto Riko"}
+        }
+        "America:Rainy_River"{
+            ec{"ìlú Raini Rifà"}
+        }
+        "America:Rankin_Inlet"{
+            ec{"ìlú Rankin Inlet"}
+        }
+        "America:Regina"{
+            ec{"ìlú Regina"}
+        }
+        "America:Resolute"{
+            ec{"ìlú Resolútì"}
+        }
+        "America:Santo_Domingo"{
+            ec{"ìlú Santo Domigo"}
+        }
+        "America:Scoresbysund"{
+            ec{"ìlú Itokotomiti"}
+        }
+        "America:Sitka"{
+            ec{"ìlú Sika"}
+        }
+        "America:St_Barthelemy"{
+            ec{"ìlú Batilemì"}
+        }
+        "America:St_Johns"{
+            ec{"ìlú St Jọ́ọ̀nù"}
+        }
+        "America:St_Kitts"{
+            ec{"ìlú St kitisì"}
+        }
+        "America:St_Lucia"{
+            ec{"ìlú St Lusia"}
+        }
+        "America:St_Thomas"{
+            ec{"ìlú St Tọ́màsì"}
+        }
+        "America:St_Vincent"{
+            ec{"ìlú Finsentì"}
+        }
+        "America:Swift_Current"{
+            ec{"ìlú Súfítù Kọ̀rentì"}
+        }
+        "America:Tegucigalpa"{
+            ec{"ìlú Tegusigapà"}
+        }
+        "America:Thule"{
+            ec{"ìlú Tulè"}
+        }
+        "America:Thunder_Bay"{
+            ec{"ìlú Omi Thunder"}
+        }
+        "America:Tijuana"{
+            ec{"ìlú Tíjúana"}
+        }
+        "America:Toronto"{
+            ec{"ìlú Toronto"}
+        }
+        "America:Tortola"{
+            ec{"ìlú Totola"}
+        }
+        "America:Vancouver"{
+            ec{"ìlú Vankuva"}
+        }
+        "America:Whitehorse"{
+            ec{"ìlú Whitehosì"}
+        }
+        "America:Winnipeg"{
+            ec{"ìlú Winipegì"}
+        }
+        "America:Yakutat"{
+            ec{"ìlú Yakuta"}
+        }
+        "America:Yellowknife"{
+            ec{"ìlú Yelonáfù"}
+        }
+        "Atlantic:Bermuda"{
+            ec{"ìlú Bẹ̀múdà"}
+        }
         "Etc:UTC"{
             ls{"Àpapọ̀ Àkókò Àgbáyé"}
         }
@@ -73,9 +397,9 @@
             ls{"Arabian Standard Time"}
         }
         "meta:Argentina"{
-            ld{"Argentina Summer Time"}
-            lg{"Argentina Time"}
-            ls{"Argentina Standard Time"}
+            ld{"Aago Soma Argentina"}
+            lg{"Aago Ajẹntìnà"}
+            ls{"Aago àsìkò Argentina"}
         }
         "meta:Argentina_Western"{
             ld{"Western Argentina Summer Time"}
@@ -131,12 +455,12 @@
             ls{"Bhutan Time"}
         }
         "meta:Bolivia"{
-            ls{"Bolivia Time"}
+            ls{"Aago Bolivia"}
         }
         "meta:Brasilia"{
-            ld{"Brasilia Summer Time"}
-            lg{"Brasilia Time"}
-            ls{"Brasilia Standard Time"}
+            ld{"Aago Soma Brasilia"}
+            lg{"Aago Bùràsílíà"}
+            ls{"Aago àsìkò Bùràsílíà"}
         }
         "meta:Brunei"{
             ls{"Brunei Darussalam Time"}
@@ -176,9 +500,9 @@
             ls{"Cocos Islands Time"}
         }
         "meta:Colombia"{
-            ld{"Colombia Summer Time"}
-            lg{"Colombia Time"}
-            ls{"Colombia Standard Time"}
+            ld{"Aago Soma Colombia"}
+            lg{"Aago Kolombia"}
+            ls{"Aago àsìkò Kolombia"}
         }
         "meta:Cook"{
             ld{"Cook Islands Half Summer Time"}
@@ -200,12 +524,12 @@
             ls{"Àkókò Ìlà oorùn Timor"}
         }
         "meta:Easter"{
-            ld{"Easter Island Summer Time"}
-            lg{"Easter Island Time"}
-            ls{"Easter Island Standard Time"}
+            ld{"Aago Soma Easter Island"}
+            lg{"Aago Ajnde Ibùgbé Omi"}
+            ls{"Aago àsìkò Easter Island"}
         }
         "meta:Ecuador"{
-            ls{"Ecuador Time"}
+            ls{"Aago Ecuador"}
         }
         "meta:Europe_Central"{
             ld{"Àkókò Àárin Sọmà Europe"}
@@ -245,7 +569,7 @@
             ls{"Greenwich Mean Time"}
         }
         "meta:Galapagos"{
-            ls{"Galapagos Time"}
+            ls{"Aago Galapago"}
         }
         "meta:Gambier"{
             ls{"Gambier Time"}
@@ -441,9 +765,9 @@
             ls{"Norfolk Island Standard Time"}
         }
         "meta:Noronha"{
-            ld{"Fernando de Noronha Summer Time"}
-            lg{"Fernando de Noronha Time"}
-            ls{"Fernando de Noronha Standard Time"}
+            ld{"Aago Soma Fernando de Noronha"}
+            lg{"Aago Fenando de Norona"}
+            ls{"Aago àsìkò Fenando de Norona"}
         }
         "meta:Novosibirsk"{
             ld{"Novosibirsk Summer Time"}
@@ -563,8 +887,8 @@
             ls{"Tuvalu Time"}
         }
         "meta:Uruguay"{
-            ld{"Uruguay Summer Time"}
-            lg{"Uruguay Time"}
+            ld{"Aago Soma Uruguay"}
+            lg{"Aago Uruguay"}
             ls{"Uruguay Standard Time"}
         }
         "meta:Uzbekistan"{
@@ -578,7 +902,7 @@
             ls{"Vanuatu Standard Time"}
         }
         "meta:Venezuela"{
-            ls{"Venezuela Time"}
+            ls{"Aago Venezuela"}
         }
         "meta:Vladivostok"{
             ld{"Vladivostok Summer Time"}
diff --git a/icu4c/source/data/zone/yo_BJ.txt b/icu4c/source/data/zone/yo_BJ.txt
index 05fa8d5..b391e3f 100644
--- a/icu4c/source/data/zone/yo_BJ.txt
+++ b/icu4c/source/data/zone/yo_BJ.txt
@@ -1,8 +1,71 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yo_BJ{
-    Version{"37"}
     zoneStrings{
+        "America:Anchorage"{
+            ec{"ìlú Ankɔ́réèjì"}
+        }
+        "America:Bahia_Banderas"{
+            ec{"ìlú Báhì Bándɛ́rásì"}
+        }
+        "America:Barbados"{
+            ec{"ìlú Bábádɔ́ɔ̀sì"}
+        }
+        "America:Belize"{
+            ec{"ìlú Bɛ̀líìsì"}
+        }
+        "America:Blanc-Sablon"{
+            ec{"ìlú Blank Sabulɔ́ɔ̀nì"}
+        }
+        "America:Boise"{
+            ec{"ìlú Bɔ́isè"}
+        }
+        "America:Chihuahua"{
+            ec{"ìlú Shihuahua"}
+        }
+        "America:Coral_Harbour"{
+            ec{"ìlú àtikɔkàn"}
+        }
+        "America:Creston"{
+            ec{"ìlú Kírɛstɔ́ɔ̀nù"}
+        }
+        "America:Curacao"{
+            ec{"ìlú Kurashao"}
+        }
+        "America:Indiana:Knox"{
+            ec{"ìlú nɔ́sì"}
+        }
+        "America:Indiana:Marengo"{
+            ec{"ìlú Marɛ́ngo"}
+        }
+        "America:Kentucky:Monticello"{
+            ec{"ìlú Montisɛ́lò"}
+        }
+        "America:Kralendijk"{
+            ec{"ìlú Kíralɛ́ndáikì"}
+        }
+        "America:Marigot"{
+            ec{"ìlú Marigɔ́ɔ̀tì"}
+        }
+        "America:Mexico_City"{
+            ec{"ìlú Mɛ́síkò"}
+        }
+        "America:Miquelon"{
+            ec{"ìlú Mikulɔ́nì"}
+        }
+        "America:St_Johns"{
+            ec{"ìlú St Jɔ́ɔ̀nù"}
+        }
+        "America:St_Thomas"{
+            ec{"ìlú St Tɔ́màsì"}
+        }
+        "America:Swift_Current"{
+            ec{"ìlú Súfítù Kɔ̀rentì"}
+        }
+        "Atlantic:Bermuda"{
+            ec{"ìlú Bɛ̀múdà"}
+        }
         "Etc:UTC"{
             ls{"Àpapɔ̀ Àkókò Àgbáyé"}
         }
@@ -29,6 +92,11 @@
             lg{"Àkókò Pàsífíìkì"}
             ls{"Àkókò àsikò Pàsífíìkì"}
         }
+        "meta:Argentina"{
+            ld{"Aago Soma Argentina"}
+            lg{"Aago Ajɛntìnà"}
+            ls{"Aago àsìkò Argentina"}
+        }
         "meta:Atlantic"{
             ld{"Àkókò Ìyálɛta Àtìláńtíìkì"}
             lg{"Àkókò Àtìláńtíìkì"}
diff --git a/icu4c/source/data/zone/yue.txt b/icu4c/source/data/zone/yue.txt
index 9b65ff9..cfbfc29 100644
--- a/icu4c/source/data/zone/yue.txt
+++ b/icu4c/source/data/zone/yue.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"阿比讓"}
diff --git a/icu4c/source/data/zone/yue_CN.txt b/icu4c/source/data/zone/yue_CN.txt
index 26d4356..2a3cc8a 100644
--- a/icu4c/source/data/zone/yue_CN.txt
+++ b/icu4c/source/data/zone/yue_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_CN{
     "%%ALIAS"{"yue_Hans_CN"}
 }
diff --git a/icu4c/source/data/zone/yue_HK.txt b/icu4c/source/data/zone/yue_HK.txt
index 29a7459..7bce3c5 100644
--- a/icu4c/source/data/zone/yue_HK.txt
+++ b/icu4c/source/data/zone/yue_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_HK{
     "%%ALIAS"{"yue_Hant_HK"}
 }
diff --git a/icu4c/source/data/zone/yue_Hans.txt b/icu4c/source/data/zone/yue_Hans.txt
index dff7af5..a62d8dc 100644
--- a/icu4c/source/data/zone/yue_Hans.txt
+++ b/icu4c/source/data/zone/yue_Hans.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_Hans{
     %%Parent{"root"}
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"阿比让"}
diff --git a/icu4c/source/data/zone/yue_Hans_CN.txt b/icu4c/source/data/zone/yue_Hans_CN.txt
index 479d125..07edcb8 100644
--- a/icu4c/source/data/zone/yue_Hans_CN.txt
+++ b/icu4c/source/data/zone/yue_Hans_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/yue_Hant.txt b/icu4c/source/data/zone/yue_Hant.txt
index 8f39812..f1fb01c 100644
--- a/icu4c/source/data/zone/yue_Hant.txt
+++ b/icu4c/source/data/zone/yue_Hant.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 yue_Hant{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/yue_Hant_HK.txt b/icu4c/source/data/zone/yue_Hant_HK.txt
index 9adeba7..e2bb01d 100644
--- a/icu4c/source/data/zone/yue_Hant_HK.txt
+++ b/icu4c/source/data/zone/yue_Hant_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/zgh.txt b/icu4c/source/data/zone/zgh.txt
index ffa19b1..4946cd8 100644
--- a/icu4c/source/data/zone/zgh.txt
+++ b/icu4c/source/data/zone/zgh.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zgh{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/zh.txt b/icu4c/source/data/zone/zh.txt
index 7c50bcc..ca469f5 100644
--- a/icu4c/source/data/zone/zh.txt
+++ b/icu4c/source/data/zone/zh.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"阿比让"}
@@ -991,7 +991,7 @@
             ec{"布达佩斯"}
         }
         "Europe:Busingen"{
-            ec{"比辛根"}
+            ec{"布辛根"}
         }
         "Europe:Chisinau"{
             ec{"基希讷乌"}
@@ -1523,7 +1523,7 @@
             ls{"东欧标准时间"}
         }
         "meta:Europe_Further_Eastern"{
-            ls{"远东标准时间"}
+            ls{"欧洲极东时间"}
         }
         "meta:Europe_Western"{
             ld{"西欧夏令时间"}
diff --git a/icu4c/source/data/zone/zh_CN.txt b/icu4c/source/data/zone/zh_CN.txt
index c915161..0136d26 100644
--- a/icu4c/source/data/zone/zh_CN.txt
+++ b/icu4c/source/data/zone/zh_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_CN{
     "%%ALIAS"{"zh_Hans_CN"}
 }
diff --git a/icu4c/source/data/zone/zh_HK.txt b/icu4c/source/data/zone/zh_HK.txt
index fe72a0e..c34c98f 100644
--- a/icu4c/source/data/zone/zh_HK.txt
+++ b/icu4c/source/data/zone/zh_HK.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_HK{
     "%%ALIAS"{"zh_Hant_HK"}
 }
diff --git a/icu4c/source/data/zone/zh_Hans.txt b/icu4c/source/data/zone/zh_Hans.txt
index 72c418e..58a5386 100644
--- a/icu4c/source/data/zone/zh_Hans.txt
+++ b/icu4c/source/data/zone/zh_Hans.txt
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hans{
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/zh_Hans_CN.txt b/icu4c/source/data/zone/zh_Hans_CN.txt
index 70a6a77..333ba54 100644
--- a/icu4c/source/data/zone/zh_Hans_CN.txt
+++ b/icu4c/source/data/zone/zh_Hans_CN.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/zh_Hans_SG.txt b/icu4c/source/data/zone/zh_Hans_SG.txt
index 824e1b5..f89f519 100644
--- a/icu4c/source/data/zone/zh_Hans_SG.txt
+++ b/icu4c/source/data/zone/zh_Hans_SG.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hans_SG{
-    Version{"37"}
     zoneStrings{
         "America:Scoresbysund"{
             ec{"斯考斯伯松德"}
diff --git a/icu4c/source/data/zone/zh_Hant.txt b/icu4c/source/data/zone/zh_Hant.txt
index d7dadab..f0aa4d8 100644
--- a/icu4c/source/data/zone/zh_Hant.txt
+++ b/icu4c/source/data/zone/zh_Hant.txt
@@ -1,8 +1,8 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant{
     %%Parent{"root"}
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"阿比讓"}
diff --git a/icu4c/source/data/zone/zh_Hant_HK.txt b/icu4c/source/data/zone/zh_Hant_HK.txt
index 2616554..fe44f28 100644
--- a/icu4c/source/data/zone/zh_Hant_HK.txt
+++ b/icu4c/source/data/zone/zh_Hant_HK.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant_HK{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"阿比贊"}
diff --git a/icu4c/source/data/zone/zh_Hant_MO.txt b/icu4c/source/data/zone/zh_Hant_MO.txt
index 670cffc..1f5fac8 100644
--- a/icu4c/source/data/zone/zh_Hant_MO.txt
+++ b/icu4c/source/data/zone/zh_Hant_MO.txt
@@ -1,6 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_Hant_MO{
     %%Parent{"zh_Hant_HK"}
-    Version{"37"}
 }
diff --git a/icu4c/source/data/zone/zh_Hant_TW.txt b/icu4c/source/data/zone/zh_Hant_TW.txt
index b62ad69..b079f20 100644
--- a/icu4c/source/data/zone/zh_Hant_TW.txt
+++ b/icu4c/source/data/zone/zh_Hant_TW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 /**
  * generated alias target
  */
diff --git a/icu4c/source/data/zone/zh_MO.txt b/icu4c/source/data/zone/zh_MO.txt
index 6565bf7..c6b2148 100644
--- a/icu4c/source/data/zone/zh_MO.txt
+++ b/icu4c/source/data/zone/zh_MO.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_MO{
     "%%ALIAS"{"zh_Hant_MO"}
 }
diff --git a/icu4c/source/data/zone/zh_SG.txt b/icu4c/source/data/zone/zh_SG.txt
index bf27773..14136c3 100644
--- a/icu4c/source/data/zone/zh_SG.txt
+++ b/icu4c/source/data/zone/zh_SG.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_SG{
     "%%ALIAS"{"zh_Hans_SG"}
 }
diff --git a/icu4c/source/data/zone/zh_TW.txt b/icu4c/source/data/zone/zh_TW.txt
index 9372c50..c54ccbf 100644
--- a/icu4c/source/data/zone/zh_TW.txt
+++ b/icu4c/source/data/zone/zh_TW.txt
@@ -1,5 +1,6 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zh_TW{
     "%%ALIAS"{"zh_Hant_TW"}
 }
diff --git a/icu4c/source/data/zone/zu.txt b/icu4c/source/data/zone/zu.txt
index 53c1a8f..9f23236 100644
--- a/icu4c/source/data/zone/zu.txt
+++ b/icu4c/source/data/zone/zu.txt
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
+// Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
 zu{
-    Version{"37"}
     zoneStrings{
         "Africa:Abidjan"{
             ec{"i-Abidjan"}
diff --git a/icu4c/source/extra/scrptrun/Makefile.in b/icu4c/source/extra/scrptrun/Makefile.in
index 6712c43..f3f8943 100644
--- a/icu4c/source/extra/scrptrun/Makefile.in
+++ b/icu4c/source/extra/scrptrun/Makefile.in
@@ -12,9 +12,6 @@
 
 include $(top_builddir)/icudefs.mk
 
-## Platform-specific setup
-include @platform_make_fragment@
-
 ## Build directory information
 subdir = extra/scrptrun
 
@@ -22,7 +19,7 @@
 CLEANFILES = *~ $(DEPS)
 
 ## Target information
-TARGET = srtest
+TARGET = srtest$(EXEEXT)
 
 DEFS = @DEFS@
 CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/common -I$(top_srcdir) 
@@ -33,9 +30,10 @@
 RPATHLDFLAGS = $(LD_RPATH)$(LD_RPATH_PRE)$(libdir)
 endif
 LDFLAGS = @LDFLAGS@ $(RPATHLDFLAGS)
-LIBS = $(LIBICUUC) @LIBS@ @LIB_M@
+LIBS = $(LIBICUUC) $(LIB_M)
 
-OBJECTS = scrptrun.o srtest.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
@@ -74,7 +72,7 @@
 	 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
 
 $(TARGET) : $(OBJECTS)
-	$(LINK.cc) -o $@ $^ $(LIBS)
+	$(LINK.cc) $(OUTOPT)$@ $^ $(LIBS)
 	$(POST_BUILD_STEP)
 
 invoke:
diff --git a/icu4c/source/extra/scrptrun/sources.txt b/icu4c/source/extra/scrptrun/sources.txt
new file mode 100644
index 0000000..a4b20b7
--- /dev/null
+++ b/icu4c/source/extra/scrptrun/sources.txt
@@ -0,0 +1,2 @@
+scrptrun.cpp
+srtest.cpp
diff --git a/icu4c/source/extra/uconv/Makefile.in b/icu4c/source/extra/uconv/Makefile.in
index b614461..30e27fd 100644
--- a/icu4c/source/extra/uconv/Makefile.in
+++ b/icu4c/source/extra/uconv/Makefile.in
@@ -74,7 +74,8 @@
 INSTALLTO=$(libdir)
 endif
 
-OBJECTS = uconv.o uwmsg.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(patsubst %.cpp,%.o,$(patsubst %.c,%.o, $(SOURCES)))
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/extra/uconv/sources.txt b/icu4c/source/extra/uconv/sources.txt
new file mode 100644
index 0000000..ed227fe
--- /dev/null
+++ b/icu4c/source/extra/uconv/sources.txt
@@ -0,0 +1,2 @@
+uconv.cpp
+uwmsg.c
diff --git a/icu4c/source/extra/uconv/uconv.cpp b/icu4c/source/extra/uconv/uconv.cpp
index c3dca05..3be4e8e 100644
--- a/icu4c/source/extra/uconv/uconv.cpp
+++ b/icu4c/source/extra/uconv/uconv.cpp
@@ -323,7 +323,7 @@
                         if (U_SUCCESS(err)) {
                             /* List the standard tags */
                             const char *standardName;
-                            UBool isFirst = TRUE;
+                            UBool isFirst = true;
                             UErrorCode enumError = U_ZERO_ERROR;
                             while ((standardName = uenum_next(nameEnum, NULL, &enumError))) {
                                 /* See if this alias is supported by this standard. */
@@ -335,7 +335,7 @@
                                     /* Print a * after the default standard name */
                                     printf(" %s%s", stds[s], (isFirst ? "*" : ""));
                                 }
-                                isFirst = FALSE;
+                                isFirst = false;
                             }
                         }
                     }
@@ -518,7 +518,7 @@
         ucnv_fromUnicode(cnv,
             &out, buffer + sizeof(buffer),
             &in, a + 1,
-            NULL, TRUE, &err);
+            NULL, true, &err);
         ucnv_resetFromUnicode(cnv);
 
         if (NULL != ucnv_detectUnicodeSignature(buffer, (int32_t)(out - buffer), NULL, &err) &&
@@ -589,12 +589,12 @@
                          FILE * outfile, int verbose)
 {
     FILE *infile;
-    UBool ret = TRUE;
+    UBool ret = true;
     UConverter *convfrom = 0;
     UConverter *convto = 0;
     UErrorCode err = U_ZERO_ERROR;
     UBool flush;
-    UBool closeFile = FALSE;
+    UBool closeFile = false;
     const char *cbufp, *prevbufp;
     char *bufp;
 
@@ -615,7 +615,7 @@
     // use conversion offsets for error messages
     // unless a transliterator is used -
     // a text transformation will reorder characters in unpredictable ways
-    UBool useOffsets = TRUE;
+    UBool useOffsets = true;
 
     // Open the correct input file or connect to stdin for reading input
 
@@ -628,9 +628,9 @@
             str2.append((UChar32) 0);
             initMsg(pname);
             u_wmsg(stderr, "cantOpenInputF", str1.getBuffer(), str2.getBuffer());
-            return FALSE;
+            return false;
         }
-        closeFile = TRUE;
+        closeFile = true;
     } else {
         infilestr = "-";
         infile = stdin;
@@ -638,7 +638,7 @@
         if (setmode(fileno(stdin), O_BINARY) == -1) {
             initMsg(pname);
             u_wmsg(stderr, "cantSetInBinMode");
-            return FALSE;
+            return false;
         }
 #endif
     }
@@ -686,7 +686,7 @@
             goto error_exit;
         }
 
-        useOffsets = FALSE;
+        useOffsets = false;
     }
 #endif
 
@@ -733,7 +733,7 @@
     rd = 0;
 
     do {
-        willexit = FALSE;
+        willexit = false;
 
         // input file offset at the beginning of the next buffer
         infoffset += static_cast<uint32_t>(rd);
@@ -823,7 +823,7 @@
                         str.getTerminatedBuffer(),
                         u_wmsg_errorName(err));
 
-                willexit = TRUE;
+                willexit = true;
                 err = U_ZERO_ERROR; /* reset the error for the rest of the conversion. */
             }
 
@@ -1013,7 +1013,7 @@
                            u_wmsg_errorName(err));
                     u_wmsg(stderr, "errorUnicode", str.getTerminatedBuffer());
 
-                    willexit = TRUE;
+                    willexit = true;
                     err = U_ZERO_ERROR; /* reset the error for the rest of the conversion. */
                 }
 
@@ -1027,7 +1027,7 @@
                     UnicodeString str(strerror(errno));
                     initMsg(pname);
                     u_wmsg(stderr, "cantWrite", str.getTerminatedBuffer());
-                    willexit = TRUE;
+                    willexit = true;
                 }
 
                 if (willexit) {
@@ -1042,7 +1042,7 @@
     goto normal_exit;
 
 error_exit:
-    ret = FALSE;
+    ret = false;
 
 normal_exit:
     // Cleanup.
@@ -1107,7 +1107,7 @@
     const char *tocpage = 0;
     const char *translit = 0;
     const char *outfilestr = 0;
-    UBool fallback = FALSE;
+    UBool fallback = false;
 
     UConverterFromUCallback fromucallback = UCNV_FROM_U_CALLBACK_STOP;
     const void *fromuctxt = 0;
@@ -1119,10 +1119,10 @@
 
     const char *pname;
 
-    UBool printConvs = FALSE, printCanon = FALSE, printTranslits = FALSE;
+    UBool printConvs = false, printCanon = false, printTranslits = false;
     const char *printName = 0;
 
-    UBool verbose = FALSE;
+    UBool verbose = false;
     UErrorCode status = U_ZERO_ERROR;
 
     ConvertFile cf;
@@ -1173,9 +1173,9 @@
             else
                 usage(pname, 1);
         } else if (!strcmp("--fallback", *iter)) {
-            fallback = TRUE;
+            fallback = true;
         } else if (!strcmp("--no-fallback", *iter)) {
-            fallback = FALSE;
+            fallback = false;
         } else if (strcmp("-b", *iter) == 0 || !strcmp("--block-size", *iter)) {
             iter++;
             if (iter != end) {
@@ -1194,7 +1194,7 @@
             if (printTranslits) {
                 usage(pname, 1);
             }
-            printConvs = TRUE;
+            printConvs = true;
         } else if (strcmp("--default-code", *iter) == 0) {
             if (printTranslits) {
                 usage(pname, 1);
@@ -1218,13 +1218,13 @@
             } else
                 usage(pname, 1);
         } else if (strcmp("--canon", *iter) == 0) {
-            printCanon = TRUE;
+            printCanon = true;
         } else if (strcmp("-L", *iter) == 0
             || !strcmp("--list-transliterators", *iter)) {
             if (printConvs) {
                 usage(pname, 1);
             }
-            printTranslits = TRUE;
+            printTranslits = true;
         } else if (strcmp("-h", *iter) == 0 || !strcmp("-?", *iter)
             || !strcmp("--help", *iter)) {
             usage(pname, 0);
@@ -1283,9 +1283,9 @@
                 usage(pname, 1);
             }
         } else if (!strcmp("-s", *iter) || !strcmp("--silent", *iter)) {
-            verbose = FALSE;
+            verbose = false;
         } else if (!strcmp("-v", *iter) || !strcmp("--verbose", *iter)) {
-            verbose = TRUE;
+            verbose = true;
         } else if (!strcmp("-V", *iter) || !strcmp("--version", *iter)) {
             printf("%s v2.1  ICU " U_ICU_VERSION "\n", pname);
             return 0;
diff --git a/icu4c/source/extra/uconv/uconv.vcxproj b/icu4c/source/extra/uconv/uconv.vcxproj
index 1929ac4..e00a288 100644
--- a/icu4c/source/extra/uconv/uconv.vcxproj
+++ b/icu4c/source/extra/uconv/uconv.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/extra/uconv/uwmsg.c b/icu4c/source/extra/uconv/uwmsg.c
index fdfb1c8..2f611e9 100644
--- a/icu4c/source/extra/uconv/uwmsg.c
+++ b/icu4c/source/extra/uconv/uwmsg.c
@@ -24,6 +24,7 @@
 #include "cmemory.h"
 #include "cstring.h"
 
+#include <stdbool.h>
 #include <stdlib.h>
 #include <stdarg.h>
 #include <stdio.h>
@@ -68,7 +69,7 @@
         /* perform the conversion */
         ucnv_fromUnicode(converter, &myTarget,  myTarget + arraySize,
             &mySource, mySourceEnd, NULL,
-            TRUE, status);
+            true, status);
 
         /* Write the converted data to the FILE* */
         fwrite(buf, sizeof(char), myTarget - buf, f);
diff --git a/icu4c/source/i18n/Makefile.in b/icu4c/source/i18n/Makefile.in
index ae2c71a..ce7fe00 100644
--- a/icu4c/source/i18n/Makefile.in
+++ b/icu4c/source/i18n/Makefile.in
@@ -64,57 +64,8 @@
 LDFLAGS += $(LDFLAGSICUI18N)
 LIBS = $(LIBICUUC) $(DEFAULT_LIBS)
 
-OBJECTS = ucln_in.o \
-fmtable.o format.o msgfmt.o umsg.o numfmt.o unum.o decimfmt.o dcfmtsym.o \
-fmtable_cnv.o \
-choicfmt.o datefmt.o smpdtfmt.o reldtfmt.o dtfmtsym.o udat.o dtptngen.o udatpg.o \
-nfrs.o nfrule.o nfsubs.o rbnf.o numsys.o unumsys.o ucsdet.o \
-ucal.o calendar.o gregocal.o timezone.o simpletz.o olsontz.o \
-astro.o taiwncal.o buddhcal.o persncal.o islamcal.o japancal.o gregoimp.o hebrwcal.o \
-indiancal.o chnsecal.o cecal.o coptccal.o dangical.o ethpccal.o \
-coleitr.o coll.o sortkey.o bocsu.o ucoleitr.o \
-ucol.o ucol_res.o ucol_sit.o \
-collation.o collationsettings.o collationdata.o collationtailoring.o \
-collationdatareader.o collationdatawriter.o collationfcd.o \
-collationiterator.o utf16collationiterator.o utf8collationiterator.o uitercollationiterator.o \
-collationsets.o \
-collationcompare.o collationfastlatin.o collationkeys.o rulebasedcollator.o collationroot.o \
-collationrootelements.o collationdatabuilder.o \
-collationweights.o collationruleparser.o collationbuilder.o collationfastlatinbuilder.o \
-listformatter.o ulistformatter.o \
-strmatch.o usearch.o search.o stsearch.o \
-translit.o utrans.o esctrn.o unesctrn.o funcrepl.o strrepl.o tridpars.o \
-cpdtrans.o rbt.o rbt_data.o rbt_pars.o rbt_rule.o rbt_set.o \
-nultrans.o remtrans.o casetrn.o titletrn.o tolowtrn.o toupptrn.o anytrans.o \
-name2uni.o uni2name.o nortrans.o quant.o transreg.o brktrans.o \
-regexcmp.o rematch.o repattrn.o regexst.o regextxt.o regeximp.o uregex.o uregexc.o \
-ulocdata.o measfmt.o currfmt.o curramt.o currunit.o measure.o utmscale.o \
-csdetect.o csmatch.o csr2022.o csrecog.o csrmbcs.o csrsbcs.o csrucode.o csrutf8.o inputext.o \
-wintzimpl.o windtfmt.o winnmfmt.o basictz.o dtrule.o rbtz.o tzrule.o tztrans.o vtzone.o zonemeta.o \
-standardplural.o upluralrules.o plurrule.o plurfmt.o selfmt.o dtitvfmt.o dtitvinf.o udateintervalformat.o \
-tmunit.o tmutamt.o tmutfmt.o currpinf.o \
-uspoof.o uspoof_impl.o uspoof_build.o uspoof_conf.o smpdtfst.o \
-ztrans.o zrule.o vzone.o fphdlimp.o fpositer.o ufieldpositer.o \
-decNumber.o decContext.o alphaindex.o tznames.o tznames_impl.o tzgnames.o \
-tzfmt.o compactdecimalformat.o gender.o region.o scriptset.o \
-uregion.o reldatefmt.o quantityformatter.o measunit.o measunit_extra.o \
-sharedbreakiterator.o scientificnumberformatter.o dayperiodrules.o nounit.o \
-number_affixutils.o number_compact.o number_decimalquantity.o \
-number_decimfmtprops.o number_fluent.o number_formatimpl.o number_grouping.o \
-number_integerwidth.o number_longnames.o number_modifiers.o number_notation.o number_output.o \
-number_padding.o number_patternmodifier.o number_patternstring.o \
-number_rounding.o number_scientific.o number_utils.o number_asformat.o \
-number_mapper.o number_multiplier.o number_currencysymbols.o number_skeletons.o number_capi.o \
-double-conversion-string-to-double.o double-conversion-double-to-string.o \
-double-conversion-bignum-dtoa.o double-conversion-bignum.o \
-double-conversion-cached-powers.o \
-double-conversion-fast-dtoa.o double-conversion-strtod.o \
-string_segment.o numparse_parsednumber.o numparse_impl.o \
-numparse_symbols.o numparse_decimal.o numparse_scientific.o numparse_currency.o \
-numparse_affixes.o numparse_compositions.o numparse_validators.o \
-numrange_fluent.o numrange_impl.o \
-erarules.o \
-formattedvalue.o formattedval_iterimpl.o formattedval_sbimpl.o formatted_string_builder.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 ## Header files to install
 HEADERS = $(srcdir)/unicode/*.h
diff --git a/icu4c/source/i18n/buddhcal.h b/icu4c/source/i18n/buddhcal.h
index 0ad0886..7fc686d 100644
--- a/icu4c/source/i18n/buddhcal.h
+++ b/icu4c/source/i18n/buddhcal.h
@@ -174,7 +174,7 @@
                                             UBool useMonth) const;
 
     /**
-     * Returns TRUE because the Buddhist Calendar does have a default century
+     * Returns true because the Buddhist Calendar does have a default century
      * @internal
      */
     virtual UBool haveDefaultCentury() const;
diff --git a/icu4c/source/i18n/calendar.cpp b/icu4c/source/i18n/calendar.cpp
index 981f09c..c3e5e8c 100644
--- a/icu4c/source/i18n/calendar.cpp
+++ b/icu4c/source/i18n/calendar.cpp
@@ -266,7 +266,7 @@
     //TODO: ULOC_FULL_NAME is out of date and too small..
     char canonicalName[256];
 
-    // canonicalize, so grandfathered variant will be transformed to keywords
+    // Canonicalize, so that an old-style variant will be transformed to keywords.
     // e.g ja_JP_TRADITIONAL -> ja_JP@calendar=japanese
     // NOTE: Since ICU-20187, ja_JP_TRADITIONAL no longer canonicalizes, and
     // the Gregorian calendar is returned instead.
@@ -870,7 +870,7 @@
 Calendar* U_EXPORT2
 Calendar::createInstance(const Locale& aLocale, UErrorCode& success)
 {
-    return createInstance(TimeZone::createDefault(), aLocale, success);
+    return createInstance(TimeZone::forLocaleOrDefault(aLocale), aLocale, success);
 }
 
 // ------------------------------------- Adopting
diff --git a/icu4c/source/i18n/cecal.cpp b/icu4c/source/i18n/cecal.cpp
index 00faa8a..cb97c40 100644
--- a/icu4c/source/i18n/cecal.cpp
+++ b/icu4c/source/i18n/cecal.cpp
@@ -49,7 +49,7 @@
 //-------------------------------------------------------------------------
 
 CECalendar::CECalendar(const Locale& aLocale, UErrorCode& success)
-:   Calendar(TimeZone::createDefault(), aLocale, success)
+:   Calendar(TimeZone::forLocaleOrDefault(aLocale), aLocale, success)
 {
     setTimeInMillis(getNow(), success);
 }
diff --git a/icu4c/source/i18n/cecal.h b/icu4c/source/i18n/cecal.h
index c380f0b..80dab70 100644
--- a/icu4c/source/i18n/cecal.h
+++ b/icu4c/source/i18n/cecal.h
@@ -88,7 +88,7 @@
     virtual UBool inDaylightTime(UErrorCode&) const;
 
     /**
-     * Returns TRUE because Coptic/Ethiopic Calendar does have a default century
+     * Returns true because Coptic/Ethiopic Calendar does have a default century
      * @internal
      */
     virtual UBool haveDefaultCentury() const;
diff --git a/icu4c/source/i18n/chnsecal.cpp b/icu4c/source/i18n/chnsecal.cpp
index 4c03812..f8fb4a4 100644
--- a/icu4c/source/i18n/chnsecal.cpp
+++ b/icu4c/source/i18n/chnsecal.cpp
@@ -123,7 +123,7 @@
 }
 
 ChineseCalendar::ChineseCalendar(const Locale& aLocale, UErrorCode& success)
-:   Calendar(TimeZone::createDefault(), aLocale, success),
+:   Calendar(TimeZone::forLocaleOrDefault(aLocale), aLocale, success),
     isLeapYear(FALSE),
     fEpochYear(CHINESE_EPOCH_YEAR),
     fZoneAstroCalc(getChineseCalZoneAstroCalc())
@@ -133,7 +133,7 @@
 
 ChineseCalendar::ChineseCalendar(const Locale& aLocale, int32_t epochYear,
                                 const TimeZone* zoneAstroCalc, UErrorCode &success)
-:   Calendar(TimeZone::createDefault(), aLocale, success),
+:   Calendar(TimeZone::forLocaleOrDefault(aLocale), aLocale, success),
     isLeapYear(FALSE),
     fEpochYear(epochYear),
     fZoneAstroCalc(zoneAstroCalc)
diff --git a/icu4c/source/i18n/chnsecal.h b/icu4c/source/i18n/chnsecal.h
index a0c21b6..910afd2 100644
--- a/icu4c/source/i18n/chnsecal.h
+++ b/icu4c/source/i18n/chnsecal.h
@@ -242,7 +242,7 @@
 
 
   /**
-   * Returns TRUE because the Islamic Calendar does have a default century
+   * Returns true because the Islamic Calendar does have a default century
    * @internal
    */
   virtual UBool haveDefaultCentury() const;
diff --git a/icu4c/source/i18n/collation.h b/icu4c/source/i18n/collation.h
index e9256c9..ecbba29 100644
--- a/icu4c/source/i18n/collation.h
+++ b/icu4c/source/i18n/collation.h
@@ -356,7 +356,7 @@
     }
 
     /**
-     * @return TRUE if the ce32 yields one or more CEs without further data lookups
+     * @return true if the ce32 yields one or more CEs without further data lookups
      */
     static UBool isSelfContainedCE32(uint32_t ce32) {
         return !isSpecialCE32(ce32) ||
diff --git a/icu4c/source/i18n/collationbuilder.h b/icu4c/source/i18n/collationbuilder.h
index 2f20050..82f0459 100644
--- a/icu4c/source/i18n/collationbuilder.h
+++ b/icu4c/source/i18n/collationbuilder.h
@@ -42,7 +42,7 @@
     CollationBuilder(const CollationTailoring *base, UErrorCode &errorCode);
     virtual ~CollationBuilder();
 
-    void disableFastLatin() { fastLatinEnabled = FALSE; }
+    void disableFastLatin() { fastLatinEnabled = false; }
 
     CollationTailoring *parseAndBuild(const UnicodeString &ruleString,
                                       const UVersionInfo rulesVersion,
diff --git a/icu4c/source/i18n/collationdatabuilder.h b/icu4c/source/i18n/collationdatabuilder.h
index fee444d..6ae7777 100644
--- a/icu4c/source/i18n/collationdatabuilder.h
+++ b/icu4c/source/i18n/collationdatabuilder.h
@@ -73,12 +73,12 @@
     }
 
     /**
-     * @return TRUE if this builder has mappings (e.g., add() has been called)
+     * @return true if this builder has mappings (e.g., add() has been called)
      */
     UBool hasMappings() const { return modified; }
 
     /**
-     * @return TRUE if c has CEs in this builder
+     * @return true if c has CEs in this builder
      */
     UBool isAssigned(UChar32 c) const;
 
@@ -118,7 +118,7 @@
      * @param primary primary weight for 'start'
      * @param step per-code point primary-weight increment
      * @param errorCode ICU in/out error code
-     * @return TRUE if an OFFSET_TAG range was used for start..end
+     * @return true if an OFFSET_TAG range was used for start..end
      */
     UBool maybeSetPrimaryRange(UChar32 start, UChar32 end,
                                uint32_t primary, int32_t step,
@@ -150,7 +150,7 @@
     void optimize(const UnicodeSet &set, UErrorCode &errorCode);
     void suppressContractions(const UnicodeSet &set, UErrorCode &errorCode);
 
-    void enableFastLatin() { fastLatinEnabled = TRUE; }
+    void enableFastLatin() { fastLatinEnabled = true; }
     virtual void build(CollationData &data, UErrorCode &errorCode);
 
     /**
diff --git a/icu4c/source/i18n/collationfcd.h b/icu4c/source/i18n/collationfcd.h
index ec7167d..3a5738e 100644
--- a/icu4c/source/i18n/collationfcd.h
+++ b/icu4c/source/i18n/collationfcd.h
@@ -84,7 +84,7 @@
         // Handles all of Unicode 0..10FFFF.
         // c can be negative, e.g., U_SENTINEL.
         // U+0300 is the first character with lccc!=0.
-        if(c < 0x300) { return FALSE; }
+        if(c < 0x300) { return false; }
         if(c > 0xffff) { c = U16_LEAD(c); }
         int32_t i;
         return
@@ -101,7 +101,7 @@
      * This is a fast and imprecise test.
      *
      * @param c a code point
-     * @return TRUE if c is U+0F73, U+0F75 or U+0F81 or one of several other Tibetan characters
+     * @return true if c is U+0F73, U+0F75 or U+0F81 or one of several other Tibetan characters
      */
     static inline UBool maybeTibetanCompositeVowel(UChar32 c) {
         return (c & 0x1fff01) == 0xf01;
@@ -116,7 +116,7 @@
      * They have distinct lccc/tccc combinations: 129/130 or 129/132.
      *
      * @param fcd16 the FCD value (lccc/tccc combination) of a code point
-     * @return TRUE if fcd16 is from U+0F73, U+0F75 or U+0F81
+     * @return true if fcd16 is from U+0F73, U+0F75 or U+0F81
      */
     static inline UBool isFCD16OfTibetanCompositeVowel(uint16_t fcd16) {
         return fcd16 == 0x8182 || fcd16 == 0x8184;
diff --git a/icu4c/source/i18n/collationiterator.h b/icu4c/source/i18n/collationiterator.h
index 12e05b4..869f095 100644
--- a/icu4c/source/i18n/collationiterator.h
+++ b/icu4c/source/i18n/collationiterator.h
@@ -76,9 +76,9 @@
             // (Rather than buffer.getCapacity().)
             if(length < INITIAL_CAPACITY || ensureAppendCapacity(1, errorCode)) {
                 ++length;
-                return TRUE;
+                return true;
             } else {
-                return FALSE;
+                return false;
             }
         }
 
@@ -251,9 +251,9 @@
     virtual UBool foundNULTerminator();
 
     /**
-     * @return FALSE if surrogate code points U+D800..U+DFFF
+     * @return false if surrogate code points U+D800..U+DFFF
      *         map to their own implicit primary weights (for UTF-16),
-     *         or TRUE if they map to CE(U+FFFD) (for UTF-8)
+     *         or true if they map to CE(U+FFFD) (for UTF-8)
      */
     virtual UBool forbidSurrogateCodePoints() const;
 
diff --git a/icu4c/source/i18n/collationkeys.h b/icu4c/source/i18n/collationkeys.h
index 60d9e50..c526a4f 100644
--- a/icu4c/source/i18n/collationkeys.h
+++ b/icu4c/source/i18n/collationkeys.h
@@ -65,7 +65,7 @@
     }
 
     UBool Overflowed() const { return appended_ > capacity_; }
-    /** @return FALSE if memory allocation failed */
+    /** @return false if memory allocation failed */
     UBool IsOk() const { return buffer_ != NULL; }
 
 protected:
@@ -94,8 +94,8 @@
         virtual ~LevelCallback();
         /**
          * @param level The next level about to be written to the ByteSink.
-         * @return TRUE if the level is to be written
-         *         (the base class implementation always returns TRUE)
+         * @return true if the level is to be written
+         *         (the base class implementation always returns true)
          */
         virtual UBool needToWrite(Collation::Level level);
     };
@@ -103,7 +103,7 @@
     /**
      * Writes the sort key bytes for minLevel up to the iterator data's strength.
      * Optionally writes the case level.
-     * Stops writing levels when callback.needToWrite(level) returns FALSE.
+     * Stops writing levels when callback.needToWrite(level) returns false.
      * Separates levels with the LEVEL_SEPARATOR_BYTE
      * but does not write a TERMINATOR_BYTE.
      */
diff --git a/icu4c/source/i18n/collationtailoring.h b/icu4c/source/i18n/collationtailoring.h
index e1bc34c..5fc2bac 100644
--- a/icu4c/source/i18n/collationtailoring.h
+++ b/icu4c/source/i18n/collationtailoring.h
@@ -50,7 +50,7 @@
     virtual ~CollationTailoring();
 
     /**
-     * Returns TRUE if the constructor could not initialize properly.
+     * Returns true if the constructor could not initialize properly.
      */
     UBool isBogus() { return settings == NULL; }
 
diff --git a/icu4c/source/i18n/collationweights.h b/icu4c/source/i18n/collationweights.h
index b415882..0d20b92 100644
--- a/icu4c/source/i18n/collationweights.h
+++ b/icu4c/source/i18n/collationweights.h
@@ -62,7 +62,7 @@
      *                   weights less than this one.
      * @param n          The number of collation element weights w necessary such that
      *                   lowerLimit<w<upperLimit in lexical order.
-     * @return TRUE if it is possible to fit n elements between the limits
+     * @return true if it is possible to fit n elements between the limits
      */
     UBool allocWeights(uint32_t lowerLimit, uint32_t upperLimit, int32_t n);
 
diff --git a/icu4c/source/i18n/cpdtrans.h b/icu4c/source/i18n/cpdtrans.h
index a2c7abb..5ed74fc 100644
--- a/icu4c/source/i18n/cpdtrans.h
+++ b/icu4c/source/i18n/cpdtrans.h
@@ -131,7 +131,7 @@
      * to recreate this transliterator.
      * @param result the string to receive the rules.  Previous
      * contents will be deleted.
-     * @param escapeUnprintable if TRUE then convert unprintable
+     * @param escapeUnprintable if true then convert unprintable
      * character to their hex escape representations, \uxxxx or
      * \Uxxxxxxxx.  Unprintable characters are those other than
      * U+000A, U+0020..U+007E.
diff --git a/icu4c/source/i18n/csrecog.h b/icu4c/source/i18n/csrecog.h
index 713fd4e..944a500 100644
--- a/icu4c/source/i18n/csrecog.h
+++ b/icu4c/source/i18n/csrecog.h
@@ -43,8 +43,8 @@
      * Try the given input text against this Charset, and fill in the results object
      * with the quality of the match plus other information related to the match.
      *
-     * Return TRUE if the the input bytes are a potential match, and
-     * FALSE if the input data is not compatible with, or illegal in this charset.
+     * Return true if the the input bytes are a potential match, and
+     * false if the input data is not compatible with, or illegal in this charset.
      */
     virtual UBool match(InputText *textIn, CharsetMatch *results) const = 0;
 
diff --git a/icu4c/source/i18n/dayperiodrules.h b/icu4c/source/i18n/dayperiodrules.h
index 610c617..4bfca76 100644
--- a/icu4c/source/i18n/dayperiodrules.h
+++ b/icu4c/source/i18n/dayperiodrules.h
@@ -66,7 +66,7 @@
     // Sets period type for all hours in [startHour, limitHour).
     void add(int32_t startHour, int32_t limitHour, DayPeriod period);
 
-    // Returns TRUE if for all i, DayPeriodForHour[i] has a type other than UNKNOWN.
+    // Returns true if for all i, DayPeriodForHour[i] has a type other than UNKNOWN.
     // Values of HasNoon and HasMidnight do not affect the return value.
     UBool allHoursAreSet();
 
diff --git a/icu4c/source/i18n/decContext.h b/icu4c/source/i18n/decContext.h
index e145777..59ab65e 100644
--- a/icu4c/source/i18n/decContext.h
+++ b/icu4c/source/i18n/decContext.h
@@ -250,21 +250,21 @@
   #define DEC_INIT_DECQUAD    DEC_INIT_DECIMAL128
 
   /* decContext routines                                              */
-  U_INTERNAL decContext  * U_EXPORT2 uprv_decContextClearStatus(decContext *, uint32_t);
-  U_INTERNAL decContext  * U_EXPORT2 uprv_decContextDefault(decContext *, int32_t);
-  U_INTERNAL enum rounding U_EXPORT2 uprv_decContextGetRounding(decContext *);
-  U_INTERNAL uint32_t      U_EXPORT2 uprv_decContextGetStatus(decContext *);
-  U_INTERNAL decContext  * U_EXPORT2 uprv_decContextRestoreStatus(decContext *, uint32_t, uint32_t);
-  U_INTERNAL uint32_t      U_EXPORT2 uprv_decContextSaveStatus(decContext *, uint32_t);
-  U_INTERNAL decContext  * U_EXPORT2 uprv_decContextSetRounding(decContext *, enum rounding);
-  U_INTERNAL decContext  * U_EXPORT2 uprv_decContextSetStatus(decContext *, uint32_t);
-  U_INTERNAL decContext  * U_EXPORT2 uprv_decContextSetStatusFromString(decContext *, const char *);
-  U_INTERNAL decContext  * U_EXPORT2 uprv_decContextSetStatusFromStringQuiet(decContext *, const char *);
-  U_INTERNAL decContext  * U_EXPORT2 uprv_decContextSetStatusQuiet(decContext *, uint32_t);
-  U_INTERNAL const char  * U_EXPORT2 uprv_decContextStatusToString(const decContext *);
-  U_INTERNAL int32_t       U_EXPORT2 uprv_decContextTestEndian(uint8_t);
-  U_INTERNAL uint32_t      U_EXPORT2 uprv_decContextTestSavedStatus(uint32_t, uint32_t);
-  U_INTERNAL uint32_t      U_EXPORT2 uprv_decContextTestStatus(decContext *, uint32_t);
-  U_INTERNAL decContext  * U_EXPORT2 uprv_decContextZeroStatus(decContext *);
+  U_CAPI decContext  * U_EXPORT2 uprv_decContextClearStatus(decContext *, uint32_t);
+  U_CAPI decContext  * U_EXPORT2 uprv_decContextDefault(decContext *, int32_t);
+  U_CAPI enum rounding U_EXPORT2 uprv_decContextGetRounding(decContext *);
+  U_CAPI uint32_t      U_EXPORT2 uprv_decContextGetStatus(decContext *);
+  U_CAPI decContext  * U_EXPORT2 uprv_decContextRestoreStatus(decContext *, uint32_t, uint32_t);
+  U_CAPI uint32_t      U_EXPORT2 uprv_decContextSaveStatus(decContext *, uint32_t);
+  U_CAPI decContext  * U_EXPORT2 uprv_decContextSetRounding(decContext *, enum rounding);
+  U_CAPI decContext  * U_EXPORT2 uprv_decContextSetStatus(decContext *, uint32_t);
+  U_CAPI decContext  * U_EXPORT2 uprv_decContextSetStatusFromString(decContext *, const char *);
+  U_CAPI decContext  * U_EXPORT2 uprv_decContextSetStatusFromStringQuiet(decContext *, const char *);
+  U_CAPI decContext  * U_EXPORT2 uprv_decContextSetStatusQuiet(decContext *, uint32_t);
+  U_CAPI const char  * U_EXPORT2 uprv_decContextStatusToString(const decContext *);
+  U_CAPI int32_t       U_EXPORT2 uprv_decContextTestEndian(uint8_t);
+  U_CAPI uint32_t      U_EXPORT2 uprv_decContextTestSavedStatus(uint32_t, uint32_t);
+  U_CAPI uint32_t      U_EXPORT2 uprv_decContextTestStatus(decContext *, uint32_t);
+  U_CAPI decContext  * U_EXPORT2 uprv_decContextZeroStatus(decContext *);
 
 #endif
diff --git a/icu4c/source/i18n/decNumber.h b/icu4c/source/i18n/decNumber.h
index 7182e78..ddcc50e 100644
--- a/icu4c/source/i18n/decNumber.h
+++ b/icu4c/source/i18n/decNumber.h
@@ -112,74 +112,74 @@
   /* decNumber public functions and macros                            */
   /* ---------------------------------------------------------------- */
   /* Conversions                                                      */
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberFromInt32(decNumber *, int32_t);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberFromUInt32(decNumber *, uint32_t);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberFromString(decNumber *, const char *, decContext *);
-  U_INTERNAL char      * U_EXPORT2 uprv_decNumberToString(const decNumber *, char *);
-  U_INTERNAL char      * U_EXPORT2 uprv_decNumberToEngString(const decNumber *, char *);
-  U_INTERNAL uint32_t    U_EXPORT2 uprv_decNumberToUInt32(const decNumber *, decContext *);
-  U_INTERNAL int32_t     U_EXPORT2 uprv_decNumberToInt32(const decNumber *, decContext *);
-  U_INTERNAL uint8_t   * U_EXPORT2 uprv_decNumberGetBCD(const decNumber *, uint8_t *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberSetBCD(decNumber *, const uint8_t *, uint32_t);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromInt32(decNumber *, int32_t);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromUInt32(decNumber *, uint32_t);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromString(decNumber *, const char *, decContext *);
+  U_CAPI char      * U_EXPORT2 uprv_decNumberToString(const decNumber *, char *);
+  U_CAPI char      * U_EXPORT2 uprv_decNumberToEngString(const decNumber *, char *);
+  U_CAPI uint32_t    U_EXPORT2 uprv_decNumberToUInt32(const decNumber *, decContext *);
+  U_CAPI int32_t     U_EXPORT2 uprv_decNumberToInt32(const decNumber *, decContext *);
+  U_CAPI uint8_t   * U_EXPORT2 uprv_decNumberGetBCD(const decNumber *, uint8_t *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberSetBCD(decNumber *, const uint8_t *, uint32_t);
 
   /* Operators and elementary functions                               */
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberAbs(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberAdd(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberAnd(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberCompare(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberCompareSignal(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberCompareTotal(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberCompareTotalMag(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberDivide(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberDivideInteger(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberExp(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberFMA(decNumber *, const decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberInvert(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberLn(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberLogB(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberLog10(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberMax(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberMaxMag(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberMin(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberMinMag(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberMinus(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberMultiply(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberNormalize(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberOr(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberPlus(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberPower(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberQuantize(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberReduce(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberRemainder(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberRemainderNear(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberRescale(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberRotate(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberSameQuantum(decNumber *, const decNumber *, const decNumber *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberScaleB(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberShift(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberSquareRoot(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberSubtract(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberToIntegralExact(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberToIntegralValue(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberXor(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberAbs(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberAdd(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberAnd(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompare(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompareSignal(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompareTotal(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompareTotalMag(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberDivide(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberDivideInteger(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberExp(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberFMA(decNumber *, const decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberInvert(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberLn(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberLogB(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberLog10(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberMax(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberMaxMag(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberMin(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberMinMag(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberMinus(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberMultiply(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberNormalize(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberOr(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberPlus(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberPower(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberQuantize(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberReduce(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberRemainder(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberRemainderNear(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberRescale(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberRotate(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberSameQuantum(decNumber *, const decNumber *, const decNumber *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberScaleB(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberShift(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberSquareRoot(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberSubtract(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberToIntegralExact(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberToIntegralValue(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberXor(decNumber *, const decNumber *, const decNumber *, decContext *);
 
   /* Utilities                                                        */
   enum decClass uprv_decNumberClass(const decNumber *, decContext *);
-  U_INTERNAL const char * U_EXPORT2 uprv_decNumberClassToString(enum decClass);
-  U_INTERNAL decNumber  * U_EXPORT2 uprv_decNumberCopy(decNumber *, const decNumber *);
-  U_INTERNAL decNumber  * U_EXPORT2 uprv_decNumberCopyAbs(decNumber *, const decNumber *);
-  U_INTERNAL decNumber  * U_EXPORT2 uprv_decNumberCopyNegate(decNumber *, const decNumber *);
-  U_INTERNAL decNumber  * U_EXPORT2 uprv_decNumberCopySign(decNumber *, const decNumber *, const decNumber *);
-  U_INTERNAL decNumber  * U_EXPORT2 uprv_decNumberNextMinus(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber  * U_EXPORT2 uprv_decNumberNextPlus(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber  * U_EXPORT2 uprv_decNumberNextToward(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber  * U_EXPORT2 uprv_decNumberTrim(decNumber *);
-  U_INTERNAL const char * U_EXPORT2 uprv_decNumberVersion(void);
-  U_INTERNAL decNumber  * U_EXPORT2 uprv_decNumberZero(decNumber *);
+  U_CAPI const char * U_EXPORT2 uprv_decNumberClassToString(enum decClass);
+  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberCopy(decNumber *, const decNumber *);
+  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberCopyAbs(decNumber *, const decNumber *);
+  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberCopyNegate(decNumber *, const decNumber *);
+  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberCopySign(decNumber *, const decNumber *, const decNumber *);
+  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberNextMinus(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberNextPlus(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberNextToward(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberTrim(decNumber *);
+  U_CAPI const char * U_EXPORT2 uprv_decNumberVersion(void);
+  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberZero(decNumber *);
 
   /* Functions for testing decNumbers (normality depends on context)  */
-  U_INTERNAL int32_t U_EXPORT2 uprv_decNumberIsNormal(const decNumber *, decContext *);
-  U_INTERNAL int32_t U_EXPORT2 uprv_decNumberIsSubnormal(const decNumber *, decContext *);
+  U_CAPI int32_t U_EXPORT2 uprv_decNumberIsNormal(const decNumber *, decContext *);
+  U_CAPI int32_t U_EXPORT2 uprv_decNumberIsSubnormal(const decNumber *, decContext *);
 
   /* Macros for testing decNumber *dn                                 */
   #define decNumberIsCanonical(dn) (1)  /* All decNumbers are saintly */
diff --git a/icu4c/source/i18n/dtitv_impl.h b/icu4c/source/i18n/dtitv_impl.h
index c7addf3..6fc16bb 100644
--- a/icu4c/source/i18n/dtitv_impl.h
+++ b/icu4c/source/i18n/dtitv_impl.h
@@ -64,11 +64,13 @@
 #define LOW_Z             ((UChar)0x007A)
 
 #define CAP_A             ((UChar)0x0041)
+#define CAP_B             ((UChar)0x0042)
 #define CAP_C             ((UChar)0x0043)
 #define CAP_D             ((UChar)0x0044)
 #define CAP_E             ((UChar)0x0045)
 #define CAP_F             ((UChar)0x0046)
 #define CAP_G             ((UChar)0x0047)
+#define CAP_J             ((UChar)0x004A)
 #define CAP_H             ((UChar)0x0048)
 #define CAP_K             ((UChar)0x004B)
 #define CAP_L             ((UChar)0x004C)
diff --git a/icu4c/source/i18n/dtitvfmt.cpp b/icu4c/source/i18n/dtitvfmt.cpp
index 5c03932..920b5b6 100644
--- a/icu4c/source/i18n/dtitvfmt.cpp
+++ b/icu4c/source/i18n/dtitvfmt.cpp
@@ -26,6 +26,7 @@
 #include "unicode/msgfmt.h"
 // Android patch (CLDR ticket #10321) begin.
 #include "unicode/simpleformatter.h"
+#include "unicode/udisplaycontext.h"
 #include "cmemory.h"
 #include "cstring.h"
 #include "dtitv_impl.h"
@@ -146,7 +147,8 @@
     fLocale(Locale::getRoot()),
     fDatePattern(nullptr),
     fTimePattern(nullptr),
-    fDateTimeFormat(nullptr)
+    fDateTimeFormat(nullptr),
+    fCapitalizationContext(UDISPCTX_CAPITALIZATION_NONE)
 {}
 
 
@@ -159,7 +161,8 @@
     fLocale(itvfmt.fLocale),
     fDatePattern(nullptr),
     fTimePattern(nullptr),
-    fDateTimeFormat(nullptr) {
+    fDateTimeFormat(nullptr),
+    fCapitalizationContext(UDISPCTX_CAPITALIZATION_NONE) {
     *this = itvfmt;
 }
 
@@ -206,6 +209,7 @@
         fDatePattern    = (itvfmt.fDatePattern)?    itvfmt.fDatePattern->clone(): nullptr;
         fTimePattern    = (itvfmt.fTimePattern)?    itvfmt.fTimePattern->clone(): nullptr;
         fDateTimeFormat = (itvfmt.fDateTimeFormat)? itvfmt.fDateTimeFormat->clone(): nullptr;
+        fCapitalizationContext = itvfmt.fCapitalizationContext;
     }
     return *this;
 }
@@ -242,7 +246,7 @@
         if (fDateFormat && fmt->fDateFormat && (*fDateFormat != *fmt->fDateFormat)) {return FALSE;}
     }
     // note: fFromCalendar and fToCalendar hold no persistent state, and therefore do not participate in operator ==.
-    //       fDateFormat has the master calendar for the DateIntervalFormat.
+    //       fDateFormat has the primary calendar for the DateIntervalFormat.
     if (fSkeleton != fmt->fSkeleton) {return FALSE;}
     if (fDatePattern != fmt->fDatePattern && (fDatePattern == nullptr || fmt->fDatePattern == nullptr)) {return FALSE;}
     if (fDatePattern && fmt->fDatePattern && (*fDatePattern != *fmt->fDatePattern)) {return FALSE;}
@@ -257,6 +261,7 @@
         if (fIntervalPatterns[i].secondPart != fmt->fIntervalPatterns[i].secondPart ) {return FALSE;}
         if (fIntervalPatterns[i].laterDateFirst != fmt->fIntervalPatterns[i].laterDateFirst) {return FALSE;}
     }
+    if (fCapitalizationContext != fmt->fCapitalizationContext) {return FALSE;}
     return TRUE;
 }
 
@@ -412,6 +417,7 @@
 }
 
 
+// The following is only called from within the gFormatterMutex lock
 UnicodeString&
 DateIntervalFormat::formatImpl(Calendar& fromCalendar,
                            Calendar& toCalendar,
@@ -467,6 +473,11 @@
     if ( U_FAILURE(status) ) {
         return appendTo;
     }
+    UErrorCode tempStatus = U_ZERO_ERROR; // for setContext, ignored
+    // Set up fDateFormat to handle the first or only part of the interval
+    // (override later for any second part). Inside lock, OK to modify fDateFormat.
+    fDateFormat->setContext(fCapitalizationContext, tempStatus);
+
     if ( field == UCAL_FIELD_COUNT ) {
         /* ignore the millisecond etc. small fields' difference.
          * use single date when all the above are the same.
@@ -524,6 +535,9 @@
 
     if ( !intervalPattern.secondPart.isEmpty() ) {
         fDateFormat->applyPattern(intervalPattern.secondPart);
+        // No capitalization for second part of interval
+        tempStatus = U_ZERO_ERROR;
+        fDateFormat->setContext(UDISPCTX_CAPITALIZATION_NONE, tempStatus);
         fDateFormat->_format(*secondCal, appendTo, fphandler, status);
     }
     fDateFormat->applyPattern(originalPattern);
@@ -586,7 +600,7 @@
     if (fDateFormat != nullptr) {
         fDateFormat->adoptTimeZone(zone);
     }
-    // The fDateFormat has the master calendar for the DateIntervalFormat and has
+    // The fDateFormat has the primary calendar for the DateIntervalFormat and has
     // ownership of any adopted TimeZone; fFromCalendar and fToCalendar are internal
     // work clones of that calendar (and should not also be given ownership of the
     // adopted TimeZone).
@@ -604,7 +618,7 @@
     if (fDateFormat != nullptr) {
         fDateFormat->setTimeZone(zone);
     }
-    // The fDateFormat has the master calendar for the DateIntervalFormat;
+    // The fDateFormat has the primary calendar for the DateIntervalFormat;
     // fFromCalendar and fToCalendar are internal work clones of that calendar.
     if (fFromCalendar) {
         fFromCalendar->setTimeZone(zone);
@@ -625,6 +639,30 @@
     return *(TimeZone::createDefault());
 }
 
+void
+DateIntervalFormat::setContext(UDisplayContext value, UErrorCode& status)
+{
+    if (U_FAILURE(status))
+        return;
+    if ( (UDisplayContextType)((uint32_t)value >> 8) == UDISPCTX_TYPE_CAPITALIZATION ) {
+        fCapitalizationContext = value;
+    } else {
+        status = U_ILLEGAL_ARGUMENT_ERROR;
+    }
+}
+
+UDisplayContext
+DateIntervalFormat::getContext(UDisplayContextType type, UErrorCode& status) const
+{
+    if (U_FAILURE(status))
+        return (UDisplayContext)0;
+    if (type != UDISPCTX_TYPE_CAPITALIZATION) {
+        status = U_ILLEGAL_ARGUMENT_ERROR;
+        return (UDisplayContext)0;
+    }
+    return fCapitalizationContext;
+}
+
 DateIntervalFormat::DateIntervalFormat(const Locale& locale,
                                        DateIntervalInfo* dtItvInfo,
                                        const UnicodeString* skeleton,
@@ -636,7 +674,8 @@
     fLocale(locale),
     fDatePattern(nullptr),
     fTimePattern(nullptr),
-    fDateTimeFormat(nullptr)
+    fDateTimeFormat(nullptr),
+    fCapitalizationContext(UDISPCTX_CAPITALIZATION_NONE)
 {
     LocalPointer<DateIntervalInfo> info(dtItvInfo, status);
     LocalPointer<SimpleDateFormat> dtfmt(static_cast<SimpleDateFormat *>(
@@ -754,7 +793,7 @@
 
     /* the difference between time skeleton and normalizedTimeSkeleton are:
      * 1. (Formerly, normalized time skeleton folded 'H' to 'h'; no longer true)
-     * 2. 'a' is omitted in normalized time skeleton.
+     * 2. (Formerly, 'a' was omitted in normalized time skeleton; this is now handled elsewhere)
      * 3. there is only one appearance for 'h' or 'H', 'm','v', 'z' in normalized
      *    time skeleton
      *
@@ -763,7 +802,8 @@
      * 2. 'E' and 'EE' are normalized into 'EEE'
      * 3. 'MM' is normalized into 'M'
      */
-    getDateTimeSkeleton(fSkeleton, dateSkeleton, normalizedDateSkeleton,
+    UnicodeString convertedSkeleton = normalizeHourMetacharacters(fSkeleton);
+    getDateTimeSkeleton(convertedSkeleton, dateSkeleton, normalizedDateSkeleton,
                         timeSkeleton, normalizedTimeSkeleton);
 
 #ifdef DTITVFMT_DEBUG
@@ -902,6 +942,91 @@
 
 
 
+UnicodeString
+DateIntervalFormat::normalizeHourMetacharacters(const UnicodeString& skeleton) const {
+    UnicodeString result = skeleton;
+    
+    UChar hourMetachar = u'\0';
+    int32_t metacharStart = 0;
+    int32_t metacharCount = 0;
+    for (int32_t i = 0; i < result.length(); i++) {
+        UChar c = result[i];
+        if (c == LOW_J || c == CAP_J || c == CAP_C) {
+            if (hourMetachar == u'\0') {
+                hourMetachar = c;
+                metacharStart = i;
+            }
+            ++metacharCount;
+        } else {
+            if (hourMetachar != u'\0') {
+                break;
+            }
+        }
+    }
+    
+    if (hourMetachar != u'\0') {
+        UErrorCode err = U_ZERO_ERROR;
+        UChar hourChar = CAP_H;
+        UChar dayPeriodChar = LOW_A;
+        UnicodeString convertedPattern = DateFormat::getBestPattern(fLocale, UnicodeString(hourMetachar), err);
+
+        if (U_SUCCESS(err)) {
+            // strip literal text from the pattern (so literal characters don't get mistaken for pattern
+            // characters-- such as the 'h' in 'Uhr' in Germam)
+            int32_t firstQuotePos;
+            while ((firstQuotePos = convertedPattern.indexOf(u'\'')) != -1) {
+                int32_t secondQuotePos = convertedPattern.indexOf(u'\'', firstQuotePos + 1);
+                if (secondQuotePos == -1) {
+                    secondQuotePos = firstQuotePos;
+                }
+                convertedPattern.replace(firstQuotePos, (secondQuotePos - firstQuotePos) + 1, UnicodeString());
+            }
+        
+            if (convertedPattern.indexOf(LOW_H) != -1) {
+                hourChar = LOW_H;
+            } else if (convertedPattern.indexOf(CAP_K) != -1) {
+                hourChar = CAP_K;
+            } else if (convertedPattern.indexOf(LOW_K) != -1) {
+                hourChar = LOW_K;
+            }
+            
+            if (convertedPattern.indexOf(LOW_B) != -1) {
+                dayPeriodChar = LOW_B;
+            } else if (convertedPattern.indexOf(CAP_B) != -1) {
+                dayPeriodChar = CAP_B;
+            }
+        }
+        
+        if (hourChar == CAP_H || hourChar == LOW_K) {
+            result.replace(metacharStart, metacharCount, hourChar);
+        } else {
+            UnicodeString hourAndDayPeriod(hourChar);
+            switch (metacharCount) {
+                case 1:
+                case 2:
+                default:
+                    hourAndDayPeriod.append(UnicodeString(dayPeriodChar));
+                    break;
+                case 3:
+                case 4:
+                    for (int32_t i = 0; i < 4; i++) {
+                        hourAndDayPeriod.append(dayPeriodChar);
+                    }
+                    break;
+                case 5:
+                case 6:
+                    for (int32_t i = 0; i < 5; i++) {
+                        hourAndDayPeriod.append(dayPeriodChar);
+                    }
+                    break;
+            }
+            result.replace(metacharStart, metacharCount, hourAndDayPeriod);
+        }
+    }
+    return result;
+}
+
+
 void  U_EXPORT2
 DateIntervalFormat::getDateTimeSkeleton(const UnicodeString& skeleton,
                                         UnicodeString& dateSkeleton,
@@ -914,11 +1039,10 @@
     int32_t dCount = 0;
     int32_t MCount = 0;
     int32_t yCount = 0;
-    int32_t hCount = 0;
-    int32_t HCount = 0;
     int32_t mCount = 0;
     int32_t vCount = 0;
     int32_t zCount = 0;
+    UChar hourChar = u'\0';
     int32_t i;
 
     for (i = 0; i < skeleton.length(); ++i) {
@@ -959,17 +1083,14 @@
             normalizedDateSkeleton.append(ch);
             dateSkeleton.append(ch);
             break;
-          case LOW_A:
-            // 'a' is implicitly handled
-            timeSkeleton.append(ch);
-            break;
           case LOW_H:
-            timeSkeleton.append(ch);
-            ++hCount;
-            break;
           case CAP_H:
+          case LOW_K:
+          case CAP_K:
             timeSkeleton.append(ch);
-            ++HCount;
+            if (hourChar == u'\0') {
+                hourChar = ch;
+            }
             break;
           case LOW_M:
             timeSkeleton.append(ch);
@@ -983,14 +1104,15 @@
             ++vCount;
             timeSkeleton.append(ch);
             break;
+          case LOW_A:
           case CAP_V:
           case CAP_Z:
-          case LOW_K:
-          case CAP_K:
           case LOW_J:
           case LOW_S:
           case CAP_S:
           case CAP_A:
+          case LOW_B:
+          case CAP_B:
             timeSkeleton.append(ch);
             normalizedTimeSkeleton.append(ch);
             break;
@@ -1026,11 +1148,8 @@
     }
 
     /* generate normalized form for time */
-    if ( HCount != 0 ) {
-        normalizedTimeSkeleton.append(CAP_H);
-    }
-    else if ( hCount != 0 ) {
-        normalizedTimeSkeleton.append(LOW_H);
+    if ( hourChar != u'\0' ) {
+        normalizedTimeSkeleton.append(hourChar);
     }
     if ( mCount != 0 ) {
         normalizedTimeSkeleton.append(LOW_M);
@@ -1306,7 +1425,11 @@
         if ( field == UCAL_AM_PM ) {
             fInfo->getIntervalPattern(*bestSkeleton, UCAL_HOUR, pattern,status);
             if ( !pattern.isEmpty() ) {
-                setIntervalPattern(field, pattern);
+                UBool suppressDayPeriodField = fSkeleton.indexOf(CAP_J) != -1;
+                UnicodeString adjustIntervalPattern;
+                adjustFieldWidth(*skeleton, *bestSkeleton, pattern, differenceInfo,
+                                 suppressDayPeriodField, adjustIntervalPattern);
+                setIntervalPattern(field, adjustIntervalPattern);
             }
             return false;
         }
@@ -1338,10 +1461,11 @@
         }
     }
     if ( !pattern.isEmpty() ) {
-        if ( differenceInfo != 0 ) {
+        UBool suppressDayPeriodField = fSkeleton.indexOf(CAP_J) != -1;
+        if ( differenceInfo != 0 || suppressDayPeriodField) {
             UnicodeString adjustIntervalPattern;
             adjustFieldWidth(*skeleton, *bestSkeleton, pattern, differenceInfo,
-                              adjustIntervalPattern);
+                              suppressDayPeriodField, adjustIntervalPattern);
             setIntervalPattern(field, adjustIntervalPattern);
         } else {
             setIntervalPattern(field, pattern);
@@ -1428,6 +1552,7 @@
     return (i - count);
 }
 
+// The following is only called from fallbackFormat, i.e. within the gFormatterMutex lock
 void DateIntervalFormat::fallbackFormatRange(
         Calendar& fromCalendar,
         Calendar& toCalendar,
@@ -1444,12 +1569,15 @@
     int32_t offsets[2];
     UnicodeString patternBody = sf.getTextWithNoArguments(offsets, 2);
 
+    UErrorCode tempStatus = U_ZERO_ERROR; // for setContext, ignored
     // TODO(ICU-20406): Use SimpleFormatter Iterator interface when available.
     if (offsets[0] < offsets[1]) {
         firstIndex = 0;
         appendTo.append(patternBody.tempSubStringBetween(0, offsets[0]));
         fDateFormat->_format(fromCalendar, appendTo, fphandler, status);
         appendTo.append(patternBody.tempSubStringBetween(offsets[0], offsets[1]));
+        // No capitalization for second part of interval
+        fDateFormat->setContext(UDISPCTX_CAPITALIZATION_NONE, tempStatus);
         fDateFormat->_format(toCalendar, appendTo, fphandler, status);
         appendTo.append(patternBody.tempSubStringBetween(offsets[1]));
     } else {
@@ -1457,11 +1585,14 @@
         appendTo.append(patternBody.tempSubStringBetween(0, offsets[1]));
         fDateFormat->_format(toCalendar, appendTo, fphandler, status);
         appendTo.append(patternBody.tempSubStringBetween(offsets[1], offsets[0]));
+        // No capitalization for second part of interval
+        fDateFormat->setContext(UDISPCTX_CAPITALIZATION_NONE, tempStatus);
         fDateFormat->_format(fromCalendar, appendTo, fphandler, status);
         appendTo.append(patternBody.tempSubStringBetween(offsets[0]));
     }
 }
 
+// The following is only called from formatImpl, i.e. within the gFormatterMutex lock
 UnicodeString&
 DateIntervalFormat::fallbackFormat(Calendar& fromCalendar,
                                    Calendar& toCalendar,
@@ -1486,6 +1617,7 @@
         UnicodeString fullPattern; // for saving the pattern in fDateFormat
         fDateFormat->toPattern(fullPattern); // save current pattern, restore later
 
+        UErrorCode tempStatus = U_ZERO_ERROR; // for setContext, ignored
         // {0} is time range
         // {1} is single date portion
         // TODO(ICU-20406): Use SimpleFormatter Iterator interface when available.
@@ -1495,6 +1627,8 @@
             fallbackFormatRange(fromCalendar, toCalendar, appendTo, firstIndex, fphandler, status);
             appendTo.append(patternBody.tempSubStringBetween(offsets[0], offsets[1]));
             fDateFormat->applyPattern(*fDatePattern);
+            // No capitalization for second portion
+            fDateFormat->setContext(UDISPCTX_CAPITALIZATION_NONE, tempStatus);
             fDateFormat->_format(fromCalendar, appendTo, fphandler, status);
             appendTo.append(patternBody.tempSubStringBetween(offsets[1]));
         } else {
@@ -1503,6 +1637,8 @@
             fDateFormat->_format(fromCalendar, appendTo, fphandler, status);
             appendTo.append(patternBody.tempSubStringBetween(offsets[1], offsets[0]));
             fDateFormat->applyPattern(*fTimePattern);
+            // No capitalization for second portion
+            fDateFormat->setContext(UDISPCTX_CAPITALIZATION_NONE, tempStatus);
             fallbackFormatRange(fromCalendar, toCalendar, appendTo, firstIndex, fphandler, status);
             appendTo.append(patternBody.tempSubStringBetween(offsets[0]));
         }
@@ -1533,6 +1669,7 @@
                  const UnicodeString& bestMatchSkeleton,
                  const UnicodeString& bestIntervalPattern,
                  int8_t differenceInfo,
+                 UBool suppressDayPeriodField,
                  UnicodeString& adjustedPtn) {
     adjustedPtn = bestIntervalPattern;
     int32_t inputSkeletonFieldWidth[] =
@@ -1559,19 +1696,40 @@
          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
     };
 
+    const int8_t PATTERN_CHAR_BASE = 0x41;
+
     DateIntervalInfo::parseSkeleton(inputSkeleton, inputSkeletonFieldWidth);
     DateIntervalInfo::parseSkeleton(bestMatchSkeleton, bestMatchSkeletonFieldWidth);
-    if ( differenceInfo == 2 ) {
-        adjustedPtn.findAndReplace(UnicodeString((UChar)0x76 /* v */),
-                                   UnicodeString((UChar)0x7a /* z */));
+    if (suppressDayPeriodField) {
+        findReplaceInPattern(adjustedPtn, UnicodeString(LOW_A), UnicodeString());
+        findReplaceInPattern(adjustedPtn, UnicodeString("  "), UnicodeString(" "));
+        adjustedPtn.trim();
     }
+    if ( differenceInfo == 2 ) {
+        if (inputSkeleton.indexOf(LOW_Z) != -1) {
+             findReplaceInPattern(adjustedPtn, UnicodeString(LOW_V), UnicodeString(LOW_Z));
+         }
+         if (inputSkeleton.indexOf(CAP_K) != -1) {
+             findReplaceInPattern(adjustedPtn, UnicodeString(LOW_H), UnicodeString(CAP_K));
+         }
+         if (inputSkeleton.indexOf(LOW_K) != -1) {
+             findReplaceInPattern(adjustedPtn, UnicodeString(CAP_H), UnicodeString(LOW_K));
+         }
+         if (inputSkeleton.indexOf(LOW_B) != -1) {
+             findReplaceInPattern(adjustedPtn, UnicodeString(LOW_A), UnicodeString(LOW_B));
+         }
+    }
+    if (adjustedPtn.indexOf(LOW_A) != -1 && bestMatchSkeletonFieldWidth[LOW_A - PATTERN_CHAR_BASE] == 0) {
+        bestMatchSkeletonFieldWidth[LOW_A - PATTERN_CHAR_BASE] = 1;
+    }
+    if (adjustedPtn.indexOf(LOW_B) != -1 && bestMatchSkeletonFieldWidth[LOW_B - PATTERN_CHAR_BASE] == 0) {
+        bestMatchSkeletonFieldWidth[LOW_B - PATTERN_CHAR_BASE] = 1;
+     }
 
     UBool inQuote = false;
     UChar prevCh = 0;
     int32_t count = 0;
 
-    const int8_t PATTERN_CHAR_BASE = 0x41;
-
     // loop through the pattern string character by character
     int32_t adjustedPtnLength = adjustedPtn.length();
     int32_t i;
@@ -1637,6 +1795,39 @@
     }
 }
 
+void
+DateIntervalFormat::findReplaceInPattern(UnicodeString& targetString,
+                                         const UnicodeString& strToReplace,
+                                         const UnicodeString& strToReplaceWith) {
+    int32_t firstQuoteIndex = targetString.indexOf(u'\'');
+    if (firstQuoteIndex == -1) {
+        targetString.findAndReplace(strToReplace, strToReplaceWith);
+    } else {
+        UnicodeString result;
+        UnicodeString source = targetString;
+        
+        while (firstQuoteIndex >= 0) {
+            int32_t secondQuoteIndex = source.indexOf(u'\'', firstQuoteIndex + 1);
+            if (secondQuoteIndex == -1) {
+                secondQuoteIndex = source.length() - 1;
+            }
+            
+            UnicodeString unquotedText(source, 0, firstQuoteIndex);
+            UnicodeString quotedText(source, firstQuoteIndex, secondQuoteIndex - firstQuoteIndex + 1);
+            
+            unquotedText.findAndReplace(strToReplace, strToReplaceWith);
+            result += unquotedText;
+            result += quotedText;
+            
+            source.remove(0, secondQuoteIndex + 1);
+            firstQuoteIndex = source.indexOf(u'\'');
+        }
+        source.findAndReplace(strToReplace, strToReplaceWith);
+        result += source;
+        targetString = result;
+    }
+}
+
 
 
 void
diff --git a/icu4c/source/i18n/dtitvinf.cpp b/icu4c/source/i18n/dtitvinf.cpp
index 2553634..39fd44a 100644
--- a/icu4c/source/i18n/dtitvinf.cpp
+++ b/icu4c/source/i18n/dtitvinf.cpp
@@ -339,6 +339,9 @@
                 return UCAL_DATE;
             } else if (c0 == 'a') {
                 return UCAL_AM_PM;
+            } else if (c0 == 'B') {
+                // TODO: Using AM/PM as a proxy for flexible day period isn't really correct, but it's close
+                return UCAL_AM_PM;
             } else if (c0 == 'h' || c0 == 'H') {
                 return UCAL_HOUR;
             } else if (c0 == 'm') {
@@ -594,20 +597,23 @@
     const int32_t DIFFERENT_FIELD = 0x1000;
     const int32_t STRING_NUMERIC_DIFFERENCE = 0x100;
     const int32_t BASE = 0x41;
-    const UChar CHAR_V = 0x0076;
-    const UChar CHAR_Z = 0x007A;
 
-    // hack for 'v' and 'z'.
-    // resource bundle only have time skeletons ending with 'v',
-    // but not for time skeletons ending with 'z'.
-    UBool replaceZWithV = false;
+    // hack for certain alternate characters
+    // resource bundles only have time skeletons containing 'v', 'h', and 'H'
+    // but not time skeletons containing 'z', 'K', or 'k'
+    // the skeleton may also include 'a' or 'b', which never occur in the resource bundles, so strip them out too
+    UBool replacedAlternateChars = false;
     const UnicodeString* inputSkeleton = &skeleton;
     UnicodeString copySkeleton;
-    if ( skeleton.indexOf(CHAR_Z) != -1 ) {
+    if ( skeleton.indexOf(LOW_Z) != -1 || skeleton.indexOf(LOW_K) != -1 || skeleton.indexOf(CAP_K) != -1 || skeleton.indexOf(LOW_A) != -1 || skeleton.indexOf(LOW_B) != -1 ) {
         copySkeleton = skeleton;
-        copySkeleton.findAndReplace(UnicodeString(CHAR_Z), UnicodeString(CHAR_V));
+        copySkeleton.findAndReplace(UnicodeString(LOW_Z), UnicodeString(LOW_V));
+        copySkeleton.findAndReplace(UnicodeString(LOW_K), UnicodeString(CAP_H));
+        copySkeleton.findAndReplace(UnicodeString(CAP_K), UnicodeString(LOW_H));
+        copySkeleton.findAndReplace(UnicodeString(LOW_A), UnicodeString());
+        copySkeleton.findAndReplace(UnicodeString(LOW_B), UnicodeString());
         inputSkeleton = &copySkeleton;
-        replaceZWithV = true;
+        replacedAlternateChars = true;
     }
 
     parseSkeleton(*inputSkeleton, inputSkeletonFieldWidth);
@@ -616,7 +622,7 @@
 
     // 0 means exact the same skeletons;
     // 1 means having the same field, but with different length,
-    // 2 means only z/v differs
+    // 2 means only z/v, h/K, or H/k differs
     // -1 means having different field.
     bestMatchDistanceInfo = 0;
     int8_t fieldLength = UPRV_LENGTHOF(skeletonFieldWidth);
@@ -672,7 +678,7 @@
             break;
         }
     }
-    if ( replaceZWithV && bestMatchDistanceInfo != -1 ) {
+    if ( replacedAlternateChars && bestMatchDistanceInfo != -1 ) {
         bestMatchDistanceInfo = 2;
     }
     return bestSkeleton;
diff --git a/icu4c/source/i18n/dtptngen.cpp b/icu4c/source/i18n/dtptngen.cpp
index 02be4f0..21f2362 100644
--- a/icu4c/source/i18n/dtptngen.cpp
+++ b/icu4c/source/i18n/dtptngen.cpp
@@ -311,6 +311,16 @@
     return U_SUCCESS(status) ? result.orphan() : nullptr;
 }
 
+DateTimePatternGenerator* U_EXPORT2
+DateTimePatternGenerator::createInstanceNoStdPat(const Locale& locale, UErrorCode& status) {
+    if (U_FAILURE(status)) {
+        return nullptr;
+    }
+    LocalPointer<DateTimePatternGenerator> result(
+            new DateTimePatternGenerator(locale, status, true), status);
+    return U_SUCCESS(status) ? result.orphan() : nullptr;
+}
+
 DateTimePatternGenerator*  U_EXPORT2
 DateTimePatternGenerator::createEmptyInstance(UErrorCode& status) {
     if (U_FAILURE(status)) {
@@ -336,7 +346,7 @@
     }
 }
 
-DateTimePatternGenerator::DateTimePatternGenerator(const Locale& locale, UErrorCode &status) :
+DateTimePatternGenerator::DateTimePatternGenerator(const Locale& locale, UErrorCode &status, UBool skipStdPatterns) :
     skipMatcher(nullptr),
     fAvailableFormatKeyHash(nullptr),
     fDefaultHourFormatChar(0),
@@ -350,7 +360,7 @@
         internalErrorCode = status = U_MEMORY_ALLOCATION_ERROR;
     }
     else {
-        initData(locale, status);
+        initData(locale, status, skipStdPatterns);
     }
 }
 
@@ -489,13 +499,15 @@
 }  // namespace
 
 void
-DateTimePatternGenerator::initData(const Locale& locale, UErrorCode &status) {
+DateTimePatternGenerator::initData(const Locale& locale, UErrorCode &status, UBool skipStdPatterns) {
     //const char *baseLangName = locale.getBaseName(); // unused
 
     skipMatcher = nullptr;
     fAvailableFormatKeyHash=nullptr;
     addCanonicalItems(status);
-    addICUPatterns(locale, status);
+    if (!skipStdPatterns) { // skip to prevent circular dependency when called from SimpleDateFormat::construct
+        addICUPatterns(locale, status);
+    }
     addCLDRData(locale, status);
     setDateTimeFromCalendar(locale, status);
     setDecimalSymbols(locale, status);
@@ -893,7 +905,7 @@
             err = localStatus;
             return;
         }
-        if (calendarTypeLen < ULOC_KEYWORDS_CAPACITY) {
+        if (calendarTypeLen > 0 && calendarTypeLen < ULOC_KEYWORDS_CAPACITY) {
             destination.clear().append(calendarType, -1, err);
             if (U_FAILURE(err)) { return; }
         }
diff --git a/icu4c/source/i18n/dtptngen_impl.h b/icu4c/source/i18n/dtptngen_impl.h
index ade9f57..9b9442d 100644
--- a/icu4c/source/i18n/dtptngen_impl.h
+++ b/icu4c/source/i18n/dtptngen_impl.h
@@ -195,7 +195,7 @@
     void getQuoteLiteral(UnicodeString& quote, int32_t *itemIndex);
     UBool isPatternSeparator(const UnicodeString& field) const;
     static UBool isQuoteLiteral(const UnicodeString& s);
-    static int32_t getCanonicalIndex(const UnicodeString& s) { return getCanonicalIndex(s, TRUE); }
+    static int32_t getCanonicalIndex(const UnicodeString& s) { return getCanonicalIndex(s, true); }
     static int32_t getCanonicalIndex(const UnicodeString& s, UBool strict);
 
 private:
diff --git a/icu4c/source/i18n/fmtable.cpp b/icu4c/source/i18n/fmtable.cpp
index dbfd3c2..ea27246 100644
--- a/icu4c/source/i18n/fmtable.cpp
+++ b/icu4c/source/i18n/fmtable.cpp
@@ -895,7 +895,7 @@
 
 U_NAMESPACE_USE
 
-U_DRAFT UFormattable* U_EXPORT2
+U_CAPI UFormattable* U_EXPORT2
 ufmt_open(UErrorCode *status) {
   if( U_FAILURE(*status) ) {
     return NULL;
@@ -908,14 +908,14 @@
   return fmt;
 }
 
-U_DRAFT void U_EXPORT2
+U_CAPI void U_EXPORT2
 ufmt_close(UFormattable *fmt) {
   Formattable *obj = Formattable::fromUFormattable(fmt);
 
   delete obj;
 }
 
-U_INTERNAL UFormattableType U_EXPORT2
+U_CAPI UFormattableType U_EXPORT2
 ufmt_getType(const UFormattable *fmt, UErrorCode *status) {
   if(U_FAILURE(*status)) {
     return (UFormattableType)UFMT_COUNT;
@@ -925,27 +925,27 @@
 }
 
 
-U_INTERNAL UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ufmt_isNumeric(const UFormattable *fmt) {
   const Formattable *obj = Formattable::fromUFormattable(fmt);
   return obj->isNumeric();
 }
 
-U_DRAFT UDate U_EXPORT2
+U_CAPI UDate U_EXPORT2
 ufmt_getDate(const UFormattable *fmt, UErrorCode *status) {
   const Formattable *obj = Formattable::fromUFormattable(fmt);
 
   return obj->getDate(*status);
 }
 
-U_DRAFT double U_EXPORT2
+U_CAPI double U_EXPORT2
 ufmt_getDouble(UFormattable *fmt, UErrorCode *status) {
   Formattable *obj = Formattable::fromUFormattable(fmt);
 
   return obj->getDouble(*status);
 }
 
-U_DRAFT int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ufmt_getLong(UFormattable *fmt, UErrorCode *status) {
   Formattable *obj = Formattable::fromUFormattable(fmt);
 
@@ -953,7 +953,7 @@
 }
 
 
-U_DRAFT const void *U_EXPORT2
+U_CAPI const void *U_EXPORT2
 ufmt_getObject(const UFormattable *fmt, UErrorCode *status) {
   const Formattable *obj = Formattable::fromUFormattable(fmt);
 
@@ -966,7 +966,7 @@
   return ret;
 }
 
-U_DRAFT const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ufmt_getUChars(UFormattable *fmt, int32_t *len, UErrorCode *status) {
   Formattable *obj = Formattable::fromUFormattable(fmt);
 
@@ -986,7 +986,7 @@
   return str.getTerminatedBuffer();
 }
 
-U_DRAFT int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ufmt_getArrayLength(const UFormattable* fmt, UErrorCode *status) {
   const Formattable *obj = Formattable::fromUFormattable(fmt);
 
@@ -995,7 +995,7 @@
   return count;
 }
 
-U_DRAFT UFormattable * U_EXPORT2
+U_CAPI UFormattable * U_EXPORT2
 ufmt_getArrayItemByIndex(UFormattable* fmt, int32_t n, UErrorCode *status) {
   Formattable *obj = Formattable::fromUFormattable(fmt);
   int32_t count;
@@ -1010,7 +1010,7 @@
   }
 }
 
-U_DRAFT const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ufmt_getDecNumChars(UFormattable *fmt, int32_t *len, UErrorCode *status) {
   if(U_FAILURE(*status)) {
     return "";
@@ -1031,7 +1031,7 @@
   }
 }
 
-U_DRAFT int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 ufmt_getInt64(UFormattable *fmt, UErrorCode *status) {
   Formattable *obj = Formattable::fromUFormattable(fmt);
   return obj->getInt64(*status);
diff --git a/icu4c/source/i18n/fmtable_cnv.cpp b/icu4c/source/i18n/fmtable_cnv.cpp
index 9a64792..bc3847b 100644
--- a/icu4c/source/i18n/fmtable_cnv.cpp
+++ b/icu4c/source/i18n/fmtable_cnv.cpp
@@ -30,8 +30,6 @@
 // -------------------------------------
 // Creates a formattable object with a char* string.
 // This API is useless. The API that takes a UnicodeString is actually just as good.
-// This is just a grandfathered API.
-
 Formattable::Formattable(const char* stringToCopy)
 {
     init();
diff --git a/icu4c/source/i18n/format.cpp b/icu4c/source/i18n/format.cpp
index e5abbe9..a010def 100644
--- a/icu4c/source/i18n/format.cpp
+++ b/icu4c/source/i18n/format.cpp
@@ -26,7 +26,7 @@
 #include "unicode/utypes.h"
 
 #ifndef U_I18N_IMPLEMENTATION
-#error U_I18N_IMPLEMENTATION not set - must be set for all ICU source files in i18n/ - see http://userguide.icu-project.org/howtouseicu
+#error U_I18N_IMPLEMENTATION not set - must be set for all ICU source files in i18n/ - see https://unicode-org.github.io/icu/userguide/howtouseicu
 #endif
 
 /*
diff --git a/icu4c/source/i18n/formatted_string_builder.cpp b/icu4c/source/i18n/formatted_string_builder.cpp
index 5aabc31..b370f14 100644
--- a/icu4c/source/i18n/formatted_string_builder.cpp
+++ b/icu4c/source/i18n/formatted_string_builder.cpp
@@ -276,6 +276,11 @@
     char16_t *oldChars = getCharPtr();
     Field *oldFields = getFieldPtr();
     if (fLength + count > oldCapacity) {
+        if ((fLength + count) > INT32_MAX / 2) {
+            // If we continue, then newCapacity will overlow int32_t in the next line.
+            status = U_INPUT_TOO_LONG_ERROR;
+            return -1;
+        }
         int32_t newCapacity = (fLength + count) * 2;
         int32_t newZero = newCapacity / 2 - (fLength + count) / 2;
 
@@ -330,12 +335,14 @@
         fZero = newZero;
         fLength += count;
     }
+    U_ASSERT((fZero + index) >= 0);
     return fZero + index;
 }
 
 int32_t FormattedStringBuilder::remove(int32_t index, int32_t count) {
     // TODO: Reset the heap here?  (If the string after removal can fit on stack?)
     int32_t position = index + fZero;
+    U_ASSERT(position >= 0);
     uprv_memmove2(getCharPtr() + position,
             getCharPtr() + position + count,
             sizeof(char16_t) * (fLength - index - count));
diff --git a/icu4c/source/i18n/formatted_string_builder.h b/icu4c/source/i18n/formatted_string_builder.h
index 4567dc1..92bcf07 100644
--- a/icu4c/source/i18n/formatted_string_builder.h
+++ b/icu4c/source/i18n/formatted_string_builder.h
@@ -25,7 +25,7 @@
  *
  * <ol>
  * <li>Efficient prepend as well as append.
- * <li>Keeps tracks of Fields in an efficient manner.
+ * <li>Keeps track of Fields in an efficient manner.
  * </ol>
  *
  * See also FormattedValueStringBuilderImpl.
@@ -55,7 +55,6 @@
     // Convention: bottom 4 bits for field, top 4 bits for field category.
     // Field category 0 implies the number category so that the number field
     // literals can be directly passed as a Field type.
-    // See the helper functions in "StringBuilderFieldUtils" below.
     // Exported as U_I18N_API so it can be used by other exports on Windows.
     struct U_I18N_API Field {
         uint8_t bits;
diff --git a/icu4c/source/i18n/formattedval_impl.h b/icu4c/source/i18n/formattedval_impl.h
index 7bee374..c0dec83 100644
--- a/icu4c/source/i18n/formattedval_impl.h
+++ b/icu4c/source/i18n/formattedval_impl.h
@@ -69,6 +69,9 @@
 
 /**
  * Implementation of FormattedValue using FieldPositionHandler to accept fields.
+ *
+ * TODO(ICU-20897): This class is unused. If it is not needed when fixing ICU-20897,
+ * it should be deleted.
  */
 class FormattedValueFieldPositionIteratorImpl : public UMemory, public FormattedValue {
 public:
@@ -114,6 +117,24 @@
 };
 
 
+// Internal struct that must be exported for MSVC
+struct U_I18N_API SpanInfo {
+    int32_t spanValue;
+    int32_t length;
+};
+
+// Export an explicit template instantiation of the MaybeStackArray that
+//    is used as a data member of CEBuffer.
+//
+//    When building DLLs for Windows this is required even though
+//    no direct access to the MaybeStackArray leaks out of the i18n library.
+//
+// See digitlst.h, pluralaffix.h, datefmt.h, and others for similar examples.
+//
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API MaybeStackArray<SpanInfo, 8>;
+#endif
+
 /**
  * Implementation of FormattedValue based on FormattedStringBuilder.
  *
@@ -147,12 +168,23 @@
         return fString;
     }
 
+    /**
+     * Adds additional metadata used for span fields.
+     * 
+     * spanValue: the index of the list item, for example.
+     * length: the length of the span, used to split adjacent fields.
+     */
+    void appendSpanInfo(int32_t spanValue, int32_t length, UErrorCode& status);
+    void prependSpanInfo(int32_t spanValue, int32_t length, UErrorCode& status);
+
 private:
     FormattedStringBuilder fString;
     FormattedStringBuilder::Field fNumericField;
+    MaybeStackArray<SpanInfo, 8> spanIndices;
 
     bool nextPositionImpl(ConstrainedFieldPosition& cfpos, FormattedStringBuilder::Field numericField, UErrorCode& status) const;
     static bool isIntOrGroup(FormattedStringBuilder::Field field);
+    static bool isTrimmable(FormattedStringBuilder::Field field);
     int32_t trimBack(int32_t limit) const;
     int32_t trimFront(int32_t start) const;
 };
@@ -211,7 +243,7 @@
         return fData->appendTo(appendable, status); \
     } \
     UBool Name::nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const { \
-        UPRV_FORMATTED_VALUE_METHOD_GUARD(FALSE) \
+        UPRV_FORMATTED_VALUE_METHOD_GUARD(false) \
         return fData->nextPosition(cfpos, status); \
     }
 
@@ -230,7 +262,7 @@
         } \
         return static_cast<HelperType*>(impl)->exportForC(); \
     } \
-    U_DRAFT const UFormattedValue* U_EXPORT2 \
+    U_CAPI const UFormattedValue* U_EXPORT2 \
     Prefix ## _resultAsValue (const CType* uresult, UErrorCode* ec) { \
         const ImplType* result = HelperType::validate(uresult, *ec); \
         if (U_FAILURE(*ec)) { return nullptr; } \
diff --git a/icu4c/source/i18n/formattedval_sbimpl.cpp b/icu4c/source/i18n/formattedval_sbimpl.cpp
index dfe3af6..84c2d00 100644
--- a/icu4c/source/i18n/formattedval_sbimpl.cpp
+++ b/icu4c/source/i18n/formattedval_sbimpl.cpp
@@ -15,6 +15,7 @@
 #include "formatted_string_builder.h"
 #include "number_utils.h"
 #include "static_unicode_sets.h"
+#include "unicode/listformatter.h"
 
 U_NAMESPACE_BEGIN
 
@@ -45,19 +46,19 @@
 
 UBool FormattedValueStringBuilderImpl::nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const {
     // NOTE: MSVC sometimes complains when implicitly converting between bool and UBool
-    return nextPositionImpl(cfpos, fNumericField, status) ? TRUE : FALSE;
+    return nextPositionImpl(cfpos, fNumericField, status) ? true : false;
 }
 
 UBool FormattedValueStringBuilderImpl::nextFieldPosition(FieldPosition& fp, UErrorCode& status) const {
     int32_t rawField = fp.getField();
 
     if (rawField == FieldPosition::DONT_CARE) {
-        return FALSE;
+        return false;
     }
 
     if (rawField < 0 || rawField >= UNUM_FIELD_COUNT) {
         status = U_ILLEGAL_ARGUMENT_ERROR;
-        return FALSE;
+        return false;
     }
 
     ConstrainedFieldPosition cfpos;
@@ -66,7 +67,7 @@
     if (nextPositionImpl(cfpos, kUndefinedField, status)) {
         fp.setBeginIndex(cfpos.getStart());
         fp.setEndIndex(cfpos.getLimit());
-        return TRUE;
+        return true;
     }
 
     // Special case: fraction should start after integer if fraction is not present
@@ -84,7 +85,7 @@
         fp.setEndIndex(i - fString.fZero);
     }
 
-    return FALSE;
+    return false;
 }
 
 void FormattedValueStringBuilderImpl::getAllFieldPositions(FieldPositionIteratorHandler& fpih,
@@ -109,7 +110,7 @@
             if (currField != _field) {
                 int32_t end = i - fString.fZero;
                 // Grouping separators can be whitespace; don't throw them out!
-                if (currField != Field(UFIELD_CATEGORY_NUMBER, UNUM_GROUPING_SEPARATOR_FIELD)) {
+                if (isTrimmable(currField)) {
                     end = trimBack(i - fString.fZero);
                 }
                 if (end <= fieldStart) {
@@ -120,7 +121,7 @@
                     continue;
                 }
                 int32_t start = fieldStart;
-                if (currField != Field(UFIELD_CATEGORY_NUMBER, UNUM_GROUPING_SEPARATOR_FIELD)) {
+                if (isTrimmable(currField)) {
                     start = trimFront(start);
                 }
                 cfpos.setState(currField.getCategory(), currField.getField(), start, end);
@@ -154,7 +155,8 @@
                     || cfpos.getField() != numericField.getField())
                 && fString.getFieldPtr()[i - 1].isNumeric()
                 && !_field.isNumeric()) {
-            int j = i - 1;
+            // Re-wind to the beginning of the field and then emit it
+            int32_t j = i - 1;
             for (; j >= fString.fZero && fString.getFieldPtr()[j].isNumeric(); j--) {}
             cfpos.setState(
                 numericField.getCategory(),
@@ -163,6 +165,21 @@
                 i - fString.fZero);
             return true;
         }
+        // Special case: emit normalField if we are pointing at the end of spanField.
+        if (i > fString.fZero) {
+            auto elementField = fString.getFieldPtr()[i-1];
+            if (elementField == Field(UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD)
+                    && cfpos.matchesField(elementField.getCategory(), elementField.getField())
+                    && (cfpos.getLimit() < i - fString.fZero || cfpos.getCategory() != elementField.getCategory())) {
+                int64_t si = cfpos.getInt64IterationContext() - 1;
+                cfpos.setState(
+                    elementField.getCategory(),
+                    elementField.getField(),
+                    i - fString.fZero - spanIndices[si].length,
+                    i - fString.fZero);
+                return true;
+            }
+        }
         // Special case: skip over INTEGER; will be coalesced later.
         if (_field == Field(UFIELD_CATEGORY_NUMBER, UNUM_INTEGER_FIELD)) {
             _field = kUndefinedField;
@@ -172,6 +189,29 @@
             continue;
         }
         // Case 3: check for field starting at this position
+        // Case 3a: Need to add a SpanField
+        if (_field == Field(UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD)) {
+            int64_t si = cfpos.getInt64IterationContext();
+            int32_t spanValue = spanIndices[si].spanValue;
+            int32_t length = spanIndices[si].length;
+            cfpos.setInt64IterationContext(si + 1);
+            if (cfpos.matchesField(UFIELD_CATEGORY_LIST_SPAN, spanValue)) {
+                UFieldCategory spanCategory = UFIELD_CATEGORY_LIST_SPAN;
+                fieldStart = i - fString.fZero;
+                int32_t end = fieldStart + length;
+                cfpos.setState(
+                    spanCategory,
+                    spanValue,
+                    fieldStart,
+                    end);
+                return true;
+            } else {
+                // Failed to match; jump ahead
+                i += length - 1;
+                continue;
+            }
+        }
+        // Case 3b: No SpanField
         if (cfpos.matchesField(_field.getCategory(), _field.getField())) {
             fieldStart = i - fString.fZero;
             currField = _field;
@@ -179,14 +219,52 @@
     }
 
     U_ASSERT(currField == kUndefinedField);
+    // Always set the position to the end so that we don't revisit previous sections
+    cfpos.setState(
+        cfpos.getCategory(),
+        cfpos.getField(),
+        fString.fLength,
+        fString.fLength);
     return false;
 }
 
+void FormattedValueStringBuilderImpl::appendSpanInfo(int32_t spanValue, int32_t length, UErrorCode& status) {
+    if (U_FAILURE(status)) { return; }
+    U_ASSERT(spanIndices.getCapacity() >= spanValue);
+    if (spanIndices.getCapacity() == spanValue) {
+        if (!spanIndices.resize(spanValue * 2, spanValue)) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+            return;
+        }
+    }
+    spanIndices[spanValue] = {spanValue, length};
+}
+
+void FormattedValueStringBuilderImpl::prependSpanInfo(int32_t spanValue, int32_t length, UErrorCode& status) {
+    if (U_FAILURE(status)) { return; }
+    U_ASSERT(spanIndices.getCapacity() >= spanValue);
+    if (spanIndices.getCapacity() == spanValue) {
+        if (!spanIndices.resize(spanValue * 2, spanValue)) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+            return;
+        }
+    }
+    for (int32_t i = spanValue - 1; i >= 0; i--) {
+        spanIndices[i+1] = spanIndices[i];
+    }
+    spanIndices[0] = {spanValue, length};
+}
+
 bool FormattedValueStringBuilderImpl::isIntOrGroup(Field field) {
     return field == Field(UFIELD_CATEGORY_NUMBER, UNUM_INTEGER_FIELD)
         || field == Field(UFIELD_CATEGORY_NUMBER, UNUM_GROUPING_SEPARATOR_FIELD);
 }
 
+bool FormattedValueStringBuilderImpl::isTrimmable(Field field) {
+    return field != Field(UFIELD_CATEGORY_NUMBER, UNUM_GROUPING_SEPARATOR_FIELD)
+        && field.getCategory() != UFIELD_CATEGORY_LIST;
+}
+
 int32_t FormattedValueStringBuilderImpl::trimBack(int32_t limit) const {
     return unisets::get(unisets::DEFAULT_IGNORABLES)->spanBack(
         fString.getCharPtr() + fString.fZero,
diff --git a/icu4c/source/i18n/formattedvalue.cpp b/icu4c/source/i18n/formattedvalue.cpp
index e2c9c42..79ecf0a 100644
--- a/icu4c/source/i18n/formattedvalue.cpp
+++ b/icu4c/source/i18n/formattedvalue.cpp
@@ -193,7 +193,7 @@
 }
 
 
-U_DRAFT const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ufmtval_getString(
         const UFormattedValue* ufmtval,
         int32_t* pLength,
@@ -213,7 +213,7 @@
 }
 
 
-U_DRAFT UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ufmtval_nextPosition(
         const UFormattedValue* ufmtval,
         UConstrainedFieldPosition* ucfpos,
diff --git a/icu4c/source/i18n/fphdlimp.h b/icu4c/source/i18n/fphdlimp.h
index b9fa9b2..4fb0c7b 100644
--- a/icu4c/source/i18n/fphdlimp.h
+++ b/icu4c/source/i18n/fphdlimp.h
@@ -41,8 +41,8 @@
 
 class FieldPositionOnlyHandler : public FieldPositionHandler {
   FieldPosition& pos;
-  UBool acceptFirstOnly = FALSE;
-  UBool seenFirst = FALSE;
+  UBool acceptFirstOnly = false;
+  UBool seenFirst = false;
 
  public:
   FieldPositionOnlyHandler(FieldPosition& pos);
diff --git a/icu4c/source/i18n/gregocal.cpp b/icu4c/source/i18n/gregocal.cpp
index 6b15171..7ca5826 100644
--- a/icu4c/source/i18n/gregocal.cpp
+++ b/icu4c/source/i18n/gregocal.cpp
@@ -185,7 +185,7 @@
 // -------------------------------------
 
 GregorianCalendar::GregorianCalendar(const Locale& aLocale, UErrorCode& status)
-:   Calendar(TimeZone::createDefault(), aLocale, status),
+:   Calendar(TimeZone::forLocaleOrDefault(aLocale), aLocale, status),
 fGregorianCutover(kPapalCutover),
 fCutoverJulianDay(kCutoverJulianDay), fNormalizedGregorianCutover(fGregorianCutover), fGregorianCutoverYear(1582),
 fIsGregorian(TRUE), fInvertGregorian(FALSE)
diff --git a/icu4c/source/i18n/gregoimp.h b/icu4c/source/i18n/gregoimp.h
index 06eb323..aec33c4 100644
--- a/icu4c/source/i18n/gregoimp.h
+++ b/icu4c/source/i18n/gregoimp.h
@@ -148,9 +148,9 @@
 class Grego {
  public:
     /**
-     * Return TRUE if the given year is a leap year.
+     * Return true if the given year is a leap year.
      * @param year Gregorian year, with 0 == 1 BCE, -1 == 2 BCE, etc.
-     * @return TRUE if the year is a leap year
+     * @return true if the year is a leap year
      */
     static inline UBool isLeapYear(int32_t year);
 
diff --git a/icu4c/source/i18n/hebrwcal.cpp b/icu4c/source/i18n/hebrwcal.cpp
index c8fb8a1..4d8e59c 100644
--- a/icu4c/source/i18n/hebrwcal.cpp
+++ b/icu4c/source/i18n/hebrwcal.cpp
@@ -155,7 +155,7 @@
 * @internal
 */
 HebrewCalendar::HebrewCalendar(const Locale& aLocale, UErrorCode& success)
-:   Calendar(TimeZone::createDefault(), aLocale, success)
+:   Calendar(TimeZone::forLocaleOrDefault(aLocale), aLocale, success)
 
 {
     setTimeInMillis(getNow(), success); // Call this again now that the vtable is set up properly.
@@ -393,7 +393,8 @@
     int32_t day = CalendarCache::get(&gCache, year, status);
 
     if (day == 0) {
-        int32_t months = (235 * year - 234) / 19;           // # of months before year
+        // # of months before year
+        int32_t months = (int32_t)ClockMath::floorDivide((235 * (int64_t)year - 234), (int64_t)19);
 
         int64_t frac = (int64_t)months * MONTH_FRACT + BAHARAD;  // Fractional part of day #
         day  = months * 29 + (int32_t)(frac / DAY_PARTS);        // Whole # part of calculation
@@ -566,8 +567,8 @@
 */
 void HebrewCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status) {
     int32_t d = julianDay - 347997;
-    double m = ((d * (double)DAY_PARTS)/ (double) MONTH_PARTS);         // Months (approx)
-    int32_t year = (int32_t)( ((19. * m + 234.) / 235.) + 1.);     // Years (approx)
+    double m = ClockMath::floorDivide((d * (double)DAY_PARTS), (double) MONTH_PARTS);  // Months (approx)
+    int32_t year = (int32_t)(ClockMath::floorDivide((19. * m + 234.), 235.) + 1.);     // Years (approx)
     int32_t ys  = startOfYear(year, status);                   // 1st day of year
     int32_t dayOfYear = (d - ys);
 
diff --git a/icu4c/source/i18n/hebrwcal.h b/icu4c/source/i18n/hebrwcal.h
index 08136de..d27e6b8 100644
--- a/icu4c/source/i18n/hebrwcal.h
+++ b/icu4c/source/i18n/hebrwcal.h
@@ -386,7 +386,7 @@
   virtual UBool inDaylightTime(UErrorCode& status) const;
 
     /**
-     * Returns TRUE because the Hebrew Calendar does have a default century
+     * Returns true because the Hebrew Calendar does have a default century
      * @internal
      */
     virtual UBool haveDefaultCentury() const;
diff --git a/icu4c/source/i18n/i18n.vcxproj b/icu4c/source/i18n/i18n.vcxproj
index e009e21..218772f 100644
--- a/icu4c/source/i18n/i18n.vcxproj
+++ b/icu4c/source/i18n/i18n.vcxproj
@@ -16,22 +16,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
@@ -76,7 +60,7 @@
     </ClCompile>
     <Link>
       <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>..\..\$(IcuBinOutputDir)\icuin67d.dll</OutputFile>
+      <OutputFile>..\..\$(IcuBinOutputDir)\icuin68d.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icuind.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\$(IcuLibOutputDir)\icuind.lib</ImportLibrary>
     </Link>
@@ -89,7 +73,7 @@
     </ClCompile>
     <Link>
       <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>..\..\$(IcuBinOutputDir)\icuin67.dll</OutputFile>
+      <OutputFile>..\..\$(IcuBinOutputDir)\icuin68.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icuin.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\$(IcuLibOutputDir)\icuin.lib</ImportLibrary>
     </Link>
@@ -193,7 +177,6 @@
     <ClCompile Include="nfrs.cpp" />
     <ClCompile Include="nfrule.cpp" />
     <ClCompile Include="nfsubs.cpp" />
-    <ClCompile Include="nounit.cpp" />
     <ClCompile Include="number_affixutils.cpp" />
     <ClCompile Include="number_asformat.cpp" />
     <ClCompile Include="number_compact.cpp" />
@@ -213,11 +196,13 @@
     <ClCompile Include="number_rounding.cpp" />
     <ClCompile Include="number_scientific.cpp" />
     <ClCompile Include="formatted_string_builder.cpp" />
+    <ClCompile Include="number_usageprefs.cpp" />
     <ClCompile Include="number_utils.cpp" />
     <ClCompile Include="number_mapper.cpp" />
     <ClCompile Include="number_multiplier.cpp" />
     <ClCompile Include="number_currencysymbols.cpp" />
     <ClCompile Include="number_skeletons.cpp" />
+    <ClCompile Include="number_symbolswrapper.cpp" />
     <ClCompile Include="number_capi.cpp" />
     <ClCompile Include="string_segment.cpp" />
     <ClCompile Include="numparse_parsednumber.cpp" />
@@ -229,12 +214,14 @@
     <ClCompile Include="numparse_affixes.cpp" />
     <ClCompile Include="numparse_compositions.cpp" />
     <ClCompile Include="numparse_validators.cpp" />
+    <ClCompile Include="numrange_capi.cpp" />
     <ClCompile Include="numrange_fluent.cpp" />
     <ClCompile Include="numrange_impl.cpp" />
     <ClCompile Include="numfmt.cpp" />
     <ClCompile Include="numsys.cpp" />
     <ClCompile Include="olsontz.cpp" />
     <ClCompile Include="persncal.cpp" />
+    <ClCompile Include="pluralranges.cpp" />
     <ClCompile Include="plurfmt.cpp" />
     <ClCompile Include="plurrule.cpp" />
     <ClCompile Include="quantityformatter.cpp" />
@@ -266,6 +253,10 @@
     <ClCompile Include="ufieldpositer.cpp" />
     <ClCompile Include="ulocdata.cpp" />
     <ClCompile Include="umsg.cpp" />
+    <ClCompile Include="units_complexconverter.cpp" />
+    <ClCompile Include="units_converter.cpp" />
+    <ClCompile Include="units_data.cpp" />
+    <ClCompile Include="units_router.cpp" />
     <ClCompile Include="unum.cpp" />
     <ClCompile Include="unumsys.cpp" />
     <ClCompile Include="upluralrules.cpp" />
@@ -401,6 +392,7 @@
     <ClInclude Include="nfsubs.h" />
     <ClInclude Include="olsontz.h" />
     <ClInclude Include="persncal.h" />
+    <ClInclude Include="pluralranges.h" />
     <ClInclude Include="plurrule_impl.h" />
     <ClInclude Include="quantityformatter.h" />
     <ClInclude Include="sharedbreakiterator.h" />
@@ -481,12 +473,14 @@
     <ClInclude Include="number_scientific.h" />
     <ClInclude Include="formatted_string_builder.h" />
     <ClInclude Include="number_types.h" />
+    <ClInclude Include="number_usageprefs.h" />
     <ClInclude Include="number_utypes.h" />
     <ClInclude Include="number_utils.h" />
     <ClInclude Include="number_mapper.h" />
     <ClInclude Include="number_multiplier.h" />
     <ClInclude Include="number_currencysymbols.h" />
     <ClInclude Include="number_skeletons.h" />
+    <ClInclude Include="number_symbolswrapper.h" />
     <ClInclude Include="string_segment.h" />
     <ClInclude Include="numparse_impl.h" />
     <ClInclude Include="numparse_symbols.h" />
@@ -500,6 +494,10 @@
     <ClInclude Include="numparse_utils.h" />
     <ClInclude Include="numrange_impl.h" />
     <ClInclude Include="formattedval_impl.h" />
+    <ClInclude Include="units_complexconverter.h" />
+    <ClInclude Include="units_converter.h" />
+    <ClInclude Include="units_data.h" />
+    <ClInclude Include="units_router.h" />
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="i18n.rc" />
diff --git a/icu4c/source/i18n/i18n.vcxproj.filters b/icu4c/source/i18n/i18n.vcxproj.filters
index 50a06ee..2fc88e0 100644
--- a/icu4c/source/i18n/i18n.vcxproj.filters
+++ b/icu4c/source/i18n/i18n.vcxproj.filters
@@ -234,6 +234,9 @@
     <ClCompile Include="persncal.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
+    <ClCompile Include="pluralranges.cpp">
+      <Filter>formatting</Filter>
+    </ClCompile>
     <ClCompile Include="plurfmt.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
@@ -531,9 +534,6 @@
     <ClCompile Include="uregion.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
-    <ClCompile Include="nounit.cpp">
-      <Filter>misc</Filter>
-    </ClCompile>
     <ClCompile Include="number_affixutils.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
@@ -591,6 +591,9 @@
     <ClCompile Include="formatted_string_builder.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
+    <ClCompile Include="number_usageprefs.cpp">
+      <Filter>formatting</Filter>
+    </ClCompile>
     <ClCompile Include="number_utils.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
@@ -606,6 +609,9 @@
     <ClCompile Include="number_skeletons.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
+    <ClCompile Include="number_symbolswrapper.cpp">
+      <Filter>formatting</Filter>
+    </ClCompile>
     <ClCompile Include="number_capi.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
@@ -639,6 +645,9 @@
     <ClCompile Include="numparse_validators.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
+    <ClCompile Include="numrange_capi.cpp">
+      <Filter>formatting</Filter>
+    </ClCompile>
     <ClCompile Include="numrange_fluent.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
@@ -651,6 +660,18 @@
     <ClCompile Include="erarules.cpp">
       <Filter>formatting</Filter>
     </ClCompile>
+    <ClCompile Include="units_complexconverter.cpp">
+      <Filter>formatting</Filter>
+    </ClCompile>
+    <ClCompile Include="units_converter.cpp">
+      <Filter>formatting</Filter>
+    </ClCompile>
+    <ClCompile Include="units_data.cpp">
+      <Filter>formatting</Filter>
+    </ClCompile>
+    <ClCompile Include="units_router.cpp">
+      <Filter>formatting</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="bocsu.cpp">
@@ -902,6 +923,9 @@
     <ClInclude Include="number_utypes.h">
       <Filter>formatting</Filter>
     </ClInclude>
+    <ClInclude Include="number_usageprefs.h">
+      <Filter>formatting</Filter>
+    </ClInclude>
     <ClInclude Include="number_utils.h">
       <Filter>formatting</Filter>
     </ClInclude>
@@ -917,6 +941,9 @@
     <ClInclude Include="number_skeletons.h">
       <Filter>formatting</Filter>
     </ClInclude>
+    <ClInclude Include="number_symbolswrapper.h">
+      <Filter>formatting</Filter>
+    </ClInclude>
     <ClInclude Include="string_segment.h">
       <Filter>formatting</Filter>
     </ClInclude>
@@ -959,6 +986,9 @@
     <ClInclude Include="persncal.h">
       <Filter>formatting</Filter>
     </ClInclude>
+    <ClInclude Include="pluralranges.h">
+      <Filter>formatting</Filter>
+    </ClInclude>
     <ClInclude Include="plurrule_impl.h">
       <Filter>formatting</Filter>
     </ClInclude>
@@ -995,6 +1025,18 @@
     <ClInclude Include="umsg_imp.h">
       <Filter>formatting</Filter>
     </ClInclude>
+    <ClInclude Include="units_complexconverter.h">
+      <Filter>formatting</Filter>
+    </ClInclude>
+    <ClInclude Include="units_converter.h">
+      <Filter>formatting</Filter>
+    </ClInclude>
+    <ClInclude Include="units_data.h">
+      <Filter>formatting</Filter>
+    </ClInclude>
+    <ClInclude Include="units_router.h">
+      <Filter>formatting</Filter>
+    </ClInclude>
     <ClInclude Include="vzone.h">
       <Filter>formatting</Filter>
     </ClInclude>
@@ -1235,4 +1277,4 @@
       <Filter>misc</Filter>
     </ResourceCompile>
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/icu4c/source/i18n/i18n_uwp.vcxproj b/icu4c/source/i18n/i18n_uwp.vcxproj
index b4fd245..f836aeb 100644
--- a/icu4c/source/i18n/i18n_uwp.vcxproj
+++ b/icu4c/source/i18n/i18n_uwp.vcxproj
@@ -52,10 +52,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
@@ -190,7 +186,7 @@
       <ProgramDataBaseFileName>.\x86\ReleaseUWP/</ProgramDataBaseFileName>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\bin32uwp\icuin67.dll</OutputFile>
+      <OutputFile>..\..\bin32uwp\icuin68.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\lib32uwp\icuin.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\lib32uwp\icuin.lib</ImportLibrary>
       <AdditionalDependencies>..\..\lib32uwp\icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -207,7 +203,7 @@
       <ProgramDataBaseFileName>.\x86\DebugUWP/</ProgramDataBaseFileName>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\bin32uwp\icuin67d.dll</OutputFile>
+      <OutputFile>..\..\bin32uwp\icuin68d.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\lib32uwp\icuind.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\lib32uwp\icuind.lib</ImportLibrary>
       <AdditionalDependencies>..\..\lib32uwp\icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -224,7 +220,7 @@
       <ProgramDataBaseFileName>.\x64\ReleaseUWP/</ProgramDataBaseFileName>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\bin64uwp\icuin67.dll</OutputFile>
+      <OutputFile>..\..\bin64uwp\icuin68.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\lib64uwp\icuin.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\lib64uwp\icuin.lib</ImportLibrary>
       <AdditionalDependencies>..\..\lib64uwp\icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -241,7 +237,7 @@
       <ProgramDataBaseFileName>.\x64\DebugUWP/</ProgramDataBaseFileName>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\bin64uwp\icuin67d.dll</OutputFile>
+      <OutputFile>..\..\bin64uwp\icuin68d.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\lib64uwp\icuind.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\lib64uwp\icuind.lib</ImportLibrary>
       <AdditionalDependencies>..\..\lib64uwp\icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -258,7 +254,7 @@
       <ProgramDataBaseFileName>.\ARM\ReleaseUWP/</ProgramDataBaseFileName>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\binARMuwp\icuin67.dll</OutputFile>
+      <OutputFile>..\..\binARMuwp\icuin68.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\libARMuwp\icuin.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\libARMuwp\icuin.lib</ImportLibrary>
       <AdditionalDependencies>..\..\libARMuwp\icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -275,7 +271,7 @@
       <ProgramDataBaseFileName>.\ARM\DebugUWP/</ProgramDataBaseFileName>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\binARMuwp\icuin67d.dll</OutputFile>
+      <OutputFile>..\..\binARMuwp\icuin68d.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\libARMuwp\icuind.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\libARMuwp\icuind.lib</ImportLibrary>
       <AdditionalDependencies>..\..\libARMuwp\icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -292,7 +288,7 @@
       <ProgramDataBaseFileName>.\ARM64\ReleaseUWP/</ProgramDataBaseFileName>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\binARM64uwp\icuin67.dll</OutputFile>
+      <OutputFile>..\..\binARM64uwp\icuin68.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\libARM64uwp\icuin.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\libARM64uwp\icuin.lib</ImportLibrary>
       <AdditionalDependencies>..\..\libARM64uwp\icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -309,7 +305,7 @@
       <ProgramDataBaseFileName>.\ARM64\DebugUWP/</ProgramDataBaseFileName>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\binARM64uwp\icuin67d.dll</OutputFile>
+      <OutputFile>..\..\binARM64uwp\icuin68d.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\libARM64uwp\icuind.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\libARM64uwp\icuind.lib</ImportLibrary>
       <AdditionalDependencies>..\..\libARM64uwp\icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -414,7 +410,6 @@
     <ClCompile Include="nfrs.cpp" />
     <ClCompile Include="nfrule.cpp" />
     <ClCompile Include="nfsubs.cpp" />
-    <ClCompile Include="nounit.cpp" />
     <ClCompile Include="number_affixutils.cpp" />
     <ClCompile Include="number_asformat.cpp" />
     <ClCompile Include="number_compact.cpp" />
@@ -434,11 +429,13 @@
     <ClCompile Include="number_rounding.cpp" />
     <ClCompile Include="number_scientific.cpp" />
     <ClCompile Include="formatted_string_builder.cpp" />
+    <ClCompile Include="number_usageprefs.cpp" />
     <ClCompile Include="number_utils.cpp" />
     <ClCompile Include="number_mapper.cpp" />
     <ClCompile Include="number_multiplier.cpp" />
     <ClCompile Include="number_currencysymbols.cpp" />
     <ClCompile Include="number_skeletons.cpp" />
+    <ClCompile Include="number_symbolswrapper.cpp" />
     <ClCompile Include="number_capi.cpp" />
     <ClCompile Include="string_segment.cpp" />
     <ClCompile Include="numparse_parsednumber.cpp" />
@@ -450,12 +447,14 @@
     <ClCompile Include="numparse_affixes.cpp" />
     <ClCompile Include="numparse_compositions.cpp" />
     <ClCompile Include="numparse_validators.cpp" />
+    <ClCompile Include="numrange_capi.cpp" />
     <ClCompile Include="numrange_fluent.cpp" />
     <ClCompile Include="numrange_impl.cpp" />
     <ClCompile Include="numfmt.cpp" />
     <ClCompile Include="numsys.cpp" />
     <ClCompile Include="olsontz.cpp" />
     <ClCompile Include="persncal.cpp" />
+    <ClCompile Include="pluralranges.cpp" />
     <ClCompile Include="plurfmt.cpp" />
     <ClCompile Include="plurrule.cpp" />
     <ClCompile Include="quantityformatter.cpp" />
@@ -485,6 +484,10 @@
     <ClCompile Include="ufieldpositer.cpp" />
     <ClCompile Include="ulocdata.cpp" />
     <ClCompile Include="umsg.cpp" />
+    <ClCompile Include="units_complexconverter.cpp" />
+    <ClCompile Include="units_converter.cpp" />
+    <ClCompile Include="units_data.cpp" />
+    <ClCompile Include="units_router.cpp" />
     <ClCompile Include="unum.cpp" />
     <ClCompile Include="unumsys.cpp" />
     <ClCompile Include="upluralrules.cpp" />
@@ -620,6 +623,7 @@
     <ClInclude Include="nfsubs.h" />
     <ClInclude Include="olsontz.h" />
     <ClInclude Include="persncal.h" />
+    <ClInclude Include="pluralranges.h" />
     <ClInclude Include="plurrule_impl.h" />
     <ClInclude Include="quantityformatter.h" />
     <ClInclude Include="sharedbreakiterator.h" />
@@ -700,12 +704,14 @@
     <ClInclude Include="number_scientific.h" />
     <ClInclude Include="formatted_string_builder.h" />
     <ClInclude Include="number_types.h" />
+    <ClInclude Include="number_usageprefs.h" />
     <ClInclude Include="number_utypes.h" />
     <ClInclude Include="number_utils.h" />
     <ClInclude Include="number_mapper.h" />
     <ClInclude Include="number_multiplier.h" />
     <ClInclude Include="number_currencysymbols.h" />
     <ClInclude Include="number_skeletons.h" />
+    <ClInclude Include="number_symbolswrapper.h" />
     <ClInclude Include="string_segment.h" />
     <ClInclude Include="numparse_impl.h" />
     <ClInclude Include="numparse_symbols.h" />
@@ -719,6 +725,10 @@
     <ClInclude Include="numparse_utils.h" />
     <ClInclude Include="numrange_impl.h" />
     <ClInclude Include="formattedval_impl.h" />
+    <ClInclude Include="units_complexconverter.h" />
+    <ClInclude Include="units_converter.h" />
+    <ClInclude Include="units_data.h" />
+    <ClInclude Include="units_router.h" />
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="i18n.rc" />
@@ -729,4 +739,4 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" Condition="'$(SkipUWP)'!='true'" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/icu4c/source/i18n/indiancal.cpp b/icu4c/source/i18n/indiancal.cpp
index f1ab853..9d9df58 100644
--- a/icu4c/source/i18n/indiancal.cpp
+++ b/icu4c/source/i18n/indiancal.cpp
@@ -40,7 +40,7 @@
 }
 
 IndianCalendar::IndianCalendar(const Locale& aLocale, UErrorCode& success)
-  :   Calendar(TimeZone::createDefault(), aLocale, success)
+  :   Calendar(TimeZone::forLocaleOrDefault(aLocale), aLocale, success)
 {
   setTimeInMillis(getNow(), success); // Call this again now that the vtable is set up properly.
 }
@@ -83,7 +83,6 @@
     {/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // IS_LEAP_MONTH
 };
 
-static const double JULIAN_EPOCH = 1721425.5;
 static const int32_t INDIAN_ERA_START  = 78;
 static const int32_t INDIAN_YEAR_START = 80;
 
@@ -96,7 +95,7 @@
  */
 static UBool isGregorianLeap(int32_t year)
 {
-    return ((year % 4) == 0) && (!(((year % 100) == 0) && ((year % 400) != 0))); 
+    return Grego::isLeapYear(year);
 }
   
 //----------------------------------------------------------------------
@@ -137,56 +136,22 @@
  * Returns the Julian Day corresponding to gregorian date
  *
  * @param year The Gregorian year
- * @param month The month in Gregorian Year
+ * @param month The month in Gregorian Year, 0 based.
  * @param date The date in Gregorian day in month
  */
 static double gregorianToJD(int32_t year, int32_t month, int32_t date) {
-   double julianDay = (JULIAN_EPOCH - 1) +
-      (365 * (year - 1)) +
-      uprv_floor((year - 1) / 4) +
-      (-uprv_floor((year - 1) / 100)) +
-      uprv_floor((year - 1) / 400) +
-      uprv_floor((((367 * month) - 362) / 12) +
-            ((month <= 2) ? 0 :
-             (isGregorianLeap(year) ? -1 : -2)
-            ) +
-            date);
-
-   return julianDay;
+   return Grego::fieldsToDay(year, month, date) + kEpochStartAsJulianDay - 0.5;
 }
 
 /*
  * Returns the Gregorian Date corresponding to a given Julian Day
+ * Month is 0 based.
  * @param jd The Julian Day
  */
 static int32_t* jdToGregorian(double jd, int32_t gregorianDate[3]) {
-   double wjd, depoch, quadricent, dqc, cent, dcent, quad, dquad, yindex, yearday, leapadj;
-   int32_t year, month, day;
-   wjd = uprv_floor(jd - 0.5) + 0.5;
-   depoch = wjd - JULIAN_EPOCH;
-   quadricent = uprv_floor(depoch / 146097);
-   dqc = (int32_t)uprv_floor(depoch) % 146097;
-   cent = uprv_floor(dqc / 36524);
-   dcent = (int32_t)uprv_floor(dqc) % 36524;
-   quad = uprv_floor(dcent / 1461);
-   dquad = (int32_t)uprv_floor(dcent) % 1461;
-   yindex = uprv_floor(dquad / 365);
-   year = (int32_t)((quadricent * 400) + (cent * 100) + (quad * 4) + yindex);
-   if (!((cent == 4) || (yindex == 4))) {
-      year++;
-   }
-   yearday = wjd - gregorianToJD(year, 1, 1);
-   leapadj = ((wjd < gregorianToJD(year, 3, 1)) ? 0
-         :
-         (isGregorianLeap(year) ? 1 : 2)
-         );
-   month = (int32_t)uprv_floor((((yearday + leapadj) * 12) + 373) / 367);
-   day = (int32_t)(wjd - gregorianToJD(year, month, 1)) + 1;
-
-   gregorianDate[0] = year;
-   gregorianDate[1] = month;
-   gregorianDate[2] = day;
-
+   int32_t gdow;
+   Grego::dayToFields(jd - kEpochStartAsJulianDay,
+                      gregorianDate[0], gregorianDate[1], gregorianDate[2], gdow);
    return gregorianDate;
 }
 
@@ -203,11 +168,11 @@
 
    if(isGregorianLeap(gyear)) {
       leapMonth = 31;
-      start = gregorianToJD(gyear, 3, 21);
+      start = gregorianToJD(gyear, 2 /* The third month in 0 based month */, 21);
    } 
    else {
       leapMonth = 30;
-      start = gregorianToJD(gyear, 3, 22);
+      start = gregorianToJD(gyear, 2 /* The third month in 0 based month */, 22);
    }
 
    if (month == 1) {
@@ -297,7 +262,7 @@
 
     gregorianYear = jdToGregorian(julianDay, gd)[0];          // Gregorian date for Julian day
     IndianYear = gregorianYear - INDIAN_ERA_START;            // Year in Saka era
-    jdAtStartOfGregYear = gregorianToJD(gregorianYear, 1, 1); // JD at start of Gregorian year
+    jdAtStartOfGregYear = gregorianToJD(gregorianYear, 0, 1); // JD at start of Gregorian year
     yday = (int32_t)(julianDay - jdAtStartOfGregYear);        // Day number in Gregorian year (starting from 0)
 
     if (yday < INDIAN_YEAR_START) {
diff --git a/icu4c/source/i18n/indiancal.h b/icu4c/source/i18n/indiancal.h
index e259d9b..3981ea5 100644
--- a/icu4c/source/i18n/indiancal.h
+++ b/icu4c/source/i18n/indiancal.h
@@ -147,7 +147,7 @@
    * @param aLocale  The given locale.
    * @param success  Indicates the status of IndianCalendar object construction.
    *                 Returns U_ZERO_ERROR if constructed successfully.
-   * @param beCivil  Whether the calendar should be civil (default-TRUE) or religious (FALSE)
+   * @param beCivil  Whether the calendar should be civil (default-true) or religious (false)
    * @internal
    */
   IndianCalendar(const Locale& aLocale, UErrorCode &success);
@@ -303,7 +303,7 @@
 
 
   /**
-   * Returns TRUE because the Indian Calendar does have a default century
+   * Returns true because the Indian Calendar does have a default century
    * @internal
    */
   virtual UBool haveDefaultCentury() const;
diff --git a/icu4c/source/i18n/islamcal.cpp b/icu4c/source/i18n/islamcal.cpp
index 582b336..982b3ad 100644
--- a/icu4c/source/i18n/islamcal.cpp
+++ b/icu4c/source/i18n/islamcal.cpp
@@ -232,7 +232,7 @@
 }
 
 IslamicCalendar::IslamicCalendar(const Locale& aLocale, UErrorCode& success, ECalculationType type)
-:   Calendar(TimeZone::createDefault(), aLocale, success),
+:   Calendar(TimeZone::forLocaleOrDefault(aLocale), aLocale, success),
 cType(type)
 {
     setTimeInMillis(getNow(), success); // Call this again now that the vtable is set up properly.
@@ -368,7 +368,7 @@
     if (cType == CIVIL || cType == TBLA ||
         (cType == UMALQURA && (year < UMALQURA_YEAR_START || year > UMALQURA_YEAR_END))) 
     {
-        return (year-1)*354 + ClockMath::floorDivide((3+11*year),30);
+        return (year-1)*354 + ClockMath::floorDivide((3+11*(int64_t)year),(int64_t)30);
     } else if(cType==ASTRONOMICAL){
         return trueMonthStart(12*(year-1));
     } else {
@@ -391,7 +391,7 @@
     if (cType == CIVIL || cType == TBLA) {
         // This does not handle months out of the range 0..11
         return (int32_t)uprv_ceil(29.5*month)
-            + (year-1)*354 + (int32_t)ClockMath::floorDivide((3+11*year),30);
+            + (year-1)*354 + (int32_t)ClockMath::floorDivide((3+11*(int64_t)year),(int64_t)30);
     } else if(cType==ASTRONOMICAL){
         return trueMonthStart(12*(year-1) + month);
     } else {
@@ -447,7 +447,8 @@
                 }
             } while (age < 0);
         }
-        start = (int32_t)ClockMath::floorDivide((origin - HIJRA_MILLIS), (double)kOneDay) + 1;
+        start = (int32_t)(ClockMath::floorDivide(
+            (int64_t)((int64_t)origin - HIJRA_MILLIS), (int64_t)kOneDay) + 1);
         CalendarCache::put(&gMonthCache, month, start, status);
     }
 trueMonthStartEnd :
@@ -639,13 +640,14 @@
             months--;
         }
 
-        year = months / 12 + 1;
-        month = months % 12;
+        year = months >=  0 ? ((months / 12) + 1) : ((months + 1 ) / 12);
+        month = ((months % 12) + 12 ) % 12;
     } else if(cType == UMALQURA) {
         int32_t umalquraStartdays = yearStart(UMALQURA_YEAR_START) ;
         if( days < umalquraStartdays){
                 //Use Civil calculation
-                year  = (int)ClockMath::floorDivide( (double)(30 * days + 10646) , 10631.0 );
+                year  = (int32_t)ClockMath::floorDivide(
+                    (30 * (int64_t)days + 10646) , (int64_t)10631.0 );
                 month = (int32_t)uprv_ceil((days - 29 - yearStart(year)) / 29.5 );
                 month = month<11?month:11;
                 startDate = monthStart(year, month);
diff --git a/icu4c/source/i18n/islamcal.h b/icu4c/source/i18n/islamcal.h
index fde5847..d324c6e 100644
--- a/icu4c/source/i18n/islamcal.h
+++ b/icu4c/source/i18n/islamcal.h
@@ -395,7 +395,7 @@
 
 
   /**
-   * Returns TRUE because the Islamic Calendar does have a default century
+   * Returns true because the Islamic Calendar does have a default century
    * @internal
    */
   virtual UBool haveDefaultCentury() const;
diff --git a/icu4c/source/i18n/japancal.h b/icu4c/source/i18n/japancal.h
index 03e6361..e5b95d7 100644
--- a/icu4c/source/i18n/japancal.h
+++ b/icu4c/source/i18n/japancal.h
@@ -167,7 +167,7 @@
     virtual const char * getType() const;
 
     /**
-     * @return FALSE - no default century in Japanese
+     * @return false - no default century in Japanese
      * @internal 
      */
     virtual UBool haveDefaultCentury() const;
diff --git a/icu4c/source/i18n/listformatter.cpp b/icu4c/source/i18n/listformatter.cpp
index da99c92..be0d16b 100644
--- a/icu4c/source/i18n/listformatter.cpp
+++ b/icu4c/source/i18n/listformatter.cpp
@@ -16,6 +16,10 @@
 *   created by: Umesh P. Nair
 */
 
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
 #include "cmemory.h"
 #include "unicode/fpositer.h"  // FieldPositionIterator
 #include "unicode/listformatter.h"
@@ -52,10 +56,12 @@
 
     virtual PatternHandler* clone() const { return new PatternHandler(twoPattern, endPattern); }
 
+    /** Argument: final string in the list. */
     virtual const SimpleFormatter& getTwoPattern(const UnicodeString&) const {
         return twoPattern;
     }
 
+    /** Argument: final string in the list. */
     virtual const SimpleFormatter& getEndPattern(const UnicodeString&) const {
         return endPattern;
     }
@@ -169,21 +175,21 @@
     UErrorCode& status) {
     if (uprv_strcmp(lang, "es") == 0) {
         // Spanish
-        UnicodeString spanishYStr(TRUE, spanishY, -1);
+        UnicodeString spanishYStr(true, spanishY, -1);
         bool twoIsY = two == spanishYStr;
         bool endIsY = end == spanishYStr;
         if (twoIsY || endIsY) {
-            UnicodeString replacement(TRUE, spanishE, -1);
+            UnicodeString replacement(true, spanishE, -1);
             return new ContextualHandler(
                 shouldChangeToE,
                 twoIsY ? replacement : two, two,
                 endIsY ? replacement : end, end, status);
         }
-        UnicodeString spanishOStr(TRUE, spanishO, -1);
+        UnicodeString spanishOStr(true, spanishO, -1);
         bool twoIsO = two == spanishOStr;
         bool endIsO = end == spanishOStr;
         if (twoIsO || endIsO) {
-            UnicodeString replacement(TRUE, spanishU, -1);
+            UnicodeString replacement(true, spanishU, -1);
             return new ContextualHandler(
                 shouldChangeToU,
                 twoIsO ? replacement : two, two,
@@ -191,11 +197,11 @@
         }
     } else if (uprv_strcmp(lang, "he") == 0 || uprv_strcmp(lang, "iw") == 0) {
         // Hebrew
-        UnicodeString hebrewVavStr(TRUE, hebrewVav, -1);
+        UnicodeString hebrewVavStr(true, hebrewVav, -1);
         bool twoIsVav = two == hebrewVavStr;
         bool endIsVav = end == hebrewVavStr;
         if (twoIsVav || endIsVav) {
-            UnicodeString replacement(TRUE, hebrewVavDash, -1);
+            UnicodeString replacement(true, hebrewVavDash, -1);
             return new ContextualHandler(
                 shouldChangeToVavDash,
                 twoIsVav ? replacement : two, two,
@@ -236,17 +242,15 @@
 };
 
 
-#if !UCONFIG_NO_FORMATTING
-class FormattedListData : public FormattedValueFieldPositionIteratorImpl {
+class FormattedListData : public FormattedValueStringBuilderImpl {
 public:
-    FormattedListData(UErrorCode& status) : FormattedValueFieldPositionIteratorImpl(5, status) {}
+    FormattedListData(UErrorCode&) : FormattedValueStringBuilderImpl(kUndefinedField) {}
     virtual ~FormattedListData();
 };
 
 FormattedListData::~FormattedListData() = default;
 
 UPRV_FORMATTED_VALUE_SUBCLASS_AUTO_IMPL(FormattedList)
-#endif
 
 
 static Hashtable* listPatternHash = nullptr;
@@ -255,7 +259,7 @@
 static UBool U_CALLCONV uprv_listformatter_cleanup() {
     delete listPatternHash;
     listPatternHash = nullptr;
-    return TRUE;
+    return true;
 }
 
 static void U_CALLCONV
@@ -348,7 +352,6 @@
     return result;
 }
 
-#if !UCONFIG_NO_FORMATTING
 static const char* typeWidthToStyleString(UListFormatterType type, UListFormatterWidth width) {
     switch (type) {
         case ULISTFMT_TYPE_AND:
@@ -392,7 +395,6 @@
 
     return nullptr;
 }
-#endif
 
 static const UChar solidus = 0x2F;
 static const UChar aliasPrefix[] = { 0x6C,0x69,0x73,0x74,0x50,0x61,0x74,0x74,0x65,0x72,0x6E,0x2F }; // "listPattern/"
@@ -513,14 +515,9 @@
 }
 
 ListFormatter* ListFormatter::createInstance(const Locale& locale, UErrorCode& errorCode) {
-#if !UCONFIG_NO_FORMATTING
     return createInstance(locale, ULISTFMT_TYPE_AND, ULISTFMT_WIDTH_WIDE, errorCode);
-#else
-    return createInstance(locale, "standard", errorCode);
-#endif
 }
 
-#if !UCONFIG_NO_FORMATTING
 ListFormatter* ListFormatter::createInstance(
         const Locale& locale, UListFormatterType type, UListFormatterWidth width, UErrorCode& errorCode) {
     const char* style = typeWidthToStyleString(type, width);
@@ -530,7 +527,6 @@
     }
     return createInstance(locale, style, errorCode);
 }
-#endif
 
 ListFormatter* ListFormatter::createInstance(const Locale& locale, const char *style, UErrorCode& errorCode) {
     const ListFormatInternal* listFormatInternal = getListFormatInternal(locale, style, errorCode);
@@ -557,50 +553,89 @@
     delete owned;
 }
 
-/**
- * Joins first and second using the pattern pat.
- * On entry offset is an offset into first or -1 if offset unspecified.
- * On exit offset is offset of second in result if recordOffset was set
- * Otherwise if it was >=0 it is set to point into result where it used
- * to point into first. On exit, result is the join of first and second
- * according to pat. Any previous value of result gets replaced.
- */
-static void joinStringsAndReplace(
-        const SimpleFormatter& pat,
-        const UnicodeString& first,
-        const UnicodeString& second,
-        UnicodeString &result,
-        UBool recordOffset,
-        int32_t &offset,
-        int32_t *offsetFirst,
-        int32_t *offsetSecond,
-        UErrorCode& errorCode) {
-    if (U_FAILURE(errorCode)) {
-        return;
+namespace {
+
+class FormattedListBuilder {
+public:
+    LocalPointer<FormattedListData> data;
+
+    /** For lists of length 1+ */
+    FormattedListBuilder(const UnicodeString& start, UErrorCode& status)
+            : data(new FormattedListData(status), status) {
+        if (U_SUCCESS(status)) {
+            data->getStringRef().append(
+                start,
+                {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD},
+                status);
+            data->appendSpanInfo(0, start.length(), status);
+        }
     }
-    const UnicodeString *params[2] = {&first, &second};
-    int32_t offsets[2];
-    pat.formatAndReplace(
-            params,
-            UPRV_LENGTHOF(params),
-            result,
-            offsets,
-            UPRV_LENGTHOF(offsets),
-            errorCode);
-    if (U_FAILURE(errorCode)) {
-        return;
+
+    /** For lists of length 0 */
+    FormattedListBuilder(UErrorCode& status)
+            : data(new FormattedListData(status), status) {
     }
-    if (offsets[0] == -1 || offsets[1] == -1) {
-        errorCode = U_INVALID_FORMAT_ERROR;
-        return;
+
+    void append(const SimpleFormatter& pattern, const UnicodeString& next, int32_t position, UErrorCode& status) {
+        if (U_FAILURE(status)) {
+            return;
+        }
+        if (pattern.getArgumentLimit() != 2) {
+            status = U_INTERNAL_PROGRAM_ERROR;
+            return;
+        }
+        // In the pattern, {0} are the pre-existing elements and {1} is the new element.
+        int32_t offsets[] = {0, 0};
+        UnicodeString temp = pattern.getTextWithNoArguments(offsets, 2);
+        if (offsets[0] <= offsets[1]) {
+            // prefix{0}infix{1}suffix
+            // Prepend prefix, then append infix, element, and suffix
+            data->getStringRef().insert(
+                0,
+                temp.tempSubStringBetween(0, offsets[0]),
+                {UFIELD_CATEGORY_LIST, ULISTFMT_LITERAL_FIELD},
+                status);
+            data->getStringRef().append(
+                temp.tempSubStringBetween(offsets[0], offsets[1]),
+                {UFIELD_CATEGORY_LIST, ULISTFMT_LITERAL_FIELD},
+                status);
+            data->getStringRef().append(
+                next,
+                {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD},
+                status);
+            data->appendSpanInfo(position, next.length(), status);
+            data->getStringRef().append(
+                temp.tempSubString(offsets[1]),
+                {UFIELD_CATEGORY_LIST, ULISTFMT_LITERAL_FIELD},
+                status);
+        } else {
+            // prefix{1}infix{0}suffix
+            // Prepend infix, element, and prefix, then append suffix.
+            // (We prepend in reverse order because prepending at index 0 is fast.)
+            data->getStringRef().insert(
+                0,
+                temp.tempSubStringBetween(offsets[1], offsets[0]),
+                {UFIELD_CATEGORY_LIST, ULISTFMT_LITERAL_FIELD},
+                status);
+            data->getStringRef().insert(
+                0,
+                next,
+                {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD},
+                status);
+            data->prependSpanInfo(position, next.length(), status);
+            data->getStringRef().insert(
+                0,
+                temp.tempSubStringBetween(0, offsets[1]),
+                {UFIELD_CATEGORY_LIST, ULISTFMT_LITERAL_FIELD},
+                status);
+            data->getStringRef().append(
+                temp.tempSubString(offsets[0]),
+                {UFIELD_CATEGORY_LIST, ULISTFMT_LITERAL_FIELD},
+                status);
+        }
     }
-    if (recordOffset) {
-        offset = offsets[1];
-    } else if (offset >= 0) {
-        offset += offsets[0];
-    }
-    if (offsetFirst != nullptr) *offsetFirst = offsets[0];
-    if (offsetSecond != nullptr) *offsetSecond = offsets[1];
+};
+
 }
 
 UnicodeString& ListFormatter::format(
@@ -619,190 +654,86 @@
         int32_t index,
         int32_t &offset,
         UErrorCode& errorCode) const {
-  return format_(items, nItems, appendTo, index, offset, nullptr, errorCode);
+    int32_t initialOffset = appendTo.length();
+    auto result = formatStringsToValue(items, nItems, errorCode);
+    UnicodeStringAppendable appendable(appendTo);
+    result.appendTo(appendable, errorCode);
+    if (index >= 0) {
+        ConstrainedFieldPosition cfpos;
+        cfpos.constrainField(UFIELD_CATEGORY_LIST_SPAN, index);
+        result.nextPosition(cfpos, errorCode);
+        offset = initialOffset + cfpos.getStart();
+    }
+    return appendTo;
 }
 
-#if !UCONFIG_NO_FORMATTING
 FormattedList ListFormatter::formatStringsToValue(
         const UnicodeString items[],
         int32_t nItems,
         UErrorCode& errorCode) const {
-    LocalPointer<FormattedListData> result(new FormattedListData(errorCode), errorCode);
-    if (U_FAILURE(errorCode)) {
-        return FormattedList(errorCode);
-    }
-    UnicodeString string;
-    int32_t offset;
-    auto handler = result->getHandler(errorCode);
-    handler.setCategory(UFIELD_CATEGORY_LIST);
-    format_(items, nItems, string, -1, offset, &handler, errorCode);
-    handler.getError(errorCode);
-    result->appendString(string, errorCode);
-    if (U_FAILURE(errorCode)) {
-        return FormattedList(errorCode);
-    }
-
-    // Add span fields and sort
-    ConstrainedFieldPosition cfpos;
-    cfpos.constrainField(UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD);
-    int32_t i = 0;
-    handler.setCategory(UFIELD_CATEGORY_LIST_SPAN);
-    while (result->nextPosition(cfpos, errorCode)) {
-        handler.addAttribute(i++, cfpos.getStart(), cfpos.getLimit());
-    }
-    handler.getError(errorCode);
-    if (U_FAILURE(errorCode)) {
-        return FormattedList(errorCode);
-    }
-    result->sort();
-
-    return FormattedList(result.orphan());
-}
-#endif
-
-UnicodeString& ListFormatter::format_(
-        const UnicodeString items[],
-        int32_t nItems,
-        UnicodeString& appendTo,
-        int32_t index,
-        int32_t &offset,
-        FieldPositionHandler* handler,
-        UErrorCode& errorCode) const {
-#if !UCONFIG_NO_FORMATTING
-    offset = -1;
-    if (U_FAILURE(errorCode)) {
-        return appendTo;
-    }
-    if (data == nullptr) {
-        errorCode = U_INVALID_STATE_ERROR;
-        return appendTo;
-    }
-
-    if (nItems <= 0) {
-        return appendTo;
-    }
-    if (nItems == 1) {
-        if (index == 0) {
-            offset = appendTo.length();
+    if (nItems == 0) {
+        FormattedListBuilder result(errorCode);
+        if (U_FAILURE(errorCode)) {
+            return FormattedList(errorCode);
+        } else {
+            return FormattedList(result.data.orphan());
         }
-        if (handler != nullptr) {
-            handler->addAttribute(ULISTFMT_ELEMENT_FIELD,
-                                  appendTo.length(),
-                                  appendTo.length() + items[0].length());
+    } else if (nItems == 1) {
+        FormattedListBuilder result(items[0], errorCode);
+        result.data->getStringRef().writeTerminator(errorCode);
+        if (U_FAILURE(errorCode)) {
+            return FormattedList(errorCode);
+        } else {
+            return FormattedList(result.data.orphan());
         }
-        appendTo.append(items[0]);
-        return appendTo;
+    } else if (nItems == 2) {
+        FormattedListBuilder result(items[0], errorCode);
+        if (U_FAILURE(errorCode)) {
+            return FormattedList(errorCode);
+        }
+        result.append(
+            data->patternHandler->getTwoPattern(items[1]),
+            items[1],
+            1,
+            errorCode);
+        result.data->getStringRef().writeTerminator(errorCode);
+        if (U_FAILURE(errorCode)) {
+            return FormattedList(errorCode);
+        } else {
+            return FormattedList(result.data.orphan());
+        }
     }
-    UnicodeString result(items[0]);
-    if (index == 0) {
-        offset = 0;
+
+    FormattedListBuilder result(items[0], errorCode);
+    if (U_FAILURE(errorCode)) {
+        return FormattedList(errorCode);
     }
-    int32_t offsetFirst = 0;
-    int32_t offsetSecond = 0;
-    int32_t prefixLength = 0;
-    // for n items, there are 2 * (n + 1) boundary including 0 and the upper
-    // edge.
-    MaybeStackArray<int32_t, 10> offsets((handler != nullptr) ? 2 * (nItems + 1): 0);
-    if (nItems == 2) {
-        joinStringsAndReplace(
-                data->patternHandler->getTwoPattern(items[1]),
-                result,
-                items[1],
-                result,
-                index == 1,
-                offset,
-                &offsetFirst,
-                &offsetSecond,
-                errorCode);
+    result.append(
+        data->startPattern,
+        items[1],
+        1,
+        errorCode);
+    for (int32_t i = 2; i < nItems - 1; i++) {
+        result.append(
+            data->middlePattern,
+            items[i],
+            i,
+            errorCode);
+    }
+    result.append(
+        data->patternHandler->getEndPattern(items[nItems-1]),
+        items[nItems-1],
+        nItems-1,
+        errorCode);
+    result.data->getStringRef().writeTerminator(errorCode);
+    if (U_FAILURE(errorCode)) {
+        return FormattedList(errorCode);
     } else {
-        joinStringsAndReplace(
-                data->startPattern,
-                result,
-                items[1],
-                result,
-                index == 1,
-                offset,
-                &offsetFirst,
-                &offsetSecond,
-                errorCode);
+        return FormattedList(result.data.orphan());
     }
-    if (handler != nullptr) {
-        offsets[0] = 0;
-        prefixLength += offsetFirst;
-        offsets[1] = offsetSecond - prefixLength;
-    }
-    if (nItems > 2) {
-        for (int32_t i = 2; i < nItems - 1; ++i) {
-             joinStringsAndReplace(
-                     data->middlePattern,
-                     result,
-                     items[i],
-                     result,
-                     index == i,
-                     offset,
-                     &offsetFirst,
-                     &offsetSecond,
-                     errorCode);
-            if (handler != nullptr) {
-                prefixLength += offsetFirst;
-                offsets[i] = offsetSecond - prefixLength;
-            }
-        }
-        joinStringsAndReplace(
-                data->patternHandler->getEndPattern(items[nItems - 1]),
-                result,
-                items[nItems - 1],
-                result,
-                index == nItems - 1,
-                offset,
-                &offsetFirst,
-                &offsetSecond,
-                errorCode);
-        if (handler != nullptr) {
-            prefixLength += offsetFirst;
-            offsets[nItems - 1] = offsetSecond - prefixLength;
-        }
-    }
-    if (handler != nullptr) {
-        // If there are already some data in appendTo, we need to adjust the index
-        // by shifting that lenght while insert into handler.
-        int32_t shift = appendTo.length() + prefixLength;
-        // Output the ULISTFMT_ELEMENT_FIELD in the order of the input elements
-        for (int32_t i = 0; i < nItems; ++i) {
-            offsets[i + nItems] = offsets[i] + items[i].length() + shift;
-            offsets[i] += shift;
-            handler->addAttribute(
-                ULISTFMT_ELEMENT_FIELD,  // id
-                offsets[i],  // index
-                offsets[i + nItems]);  // limit
-        }
-        // The locale pattern may reorder the items (such as in ur-IN locale),
-        // so we cannot assume the array is in accendning order.
-        // To handle the edging case, just insert the two ends into the array
-        // and sort. Then we output ULISTFMT_LITERAL_FIELD if the indecies
-        // between the even and odd position are not the same in the sorted array.
-        offsets[2 * nItems] = shift - prefixLength;
-        offsets[2 * nItems + 1] = result.length() + shift - prefixLength;
-        uprv_sortArray(offsets.getAlias(), 2 * (nItems + 1), sizeof(int32_t),
-               uprv_int32Comparator, nullptr,
-               false, &errorCode);
-        for (int32_t i = 0; i <= nItems; ++i) {
-          if (offsets[i * 2] != offsets[i * 2 + 1]) {
-            handler->addAttribute(
-                ULISTFMT_LITERAL_FIELD,  // id
-                offsets[i * 2],  // index
-                offsets[i * 2 + 1]);  // limit
-          }
-        }
-    }
-    if (U_SUCCESS(errorCode)) {
-        if (offset >= 0) {
-            offset += appendTo.length();
-        }
-        appendTo += result;
-    }
-#endif  
-    return appendTo;
 }
- 
+
+
 U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/measfmt.cpp b/icu4c/source/i18n/measfmt.cpp
index e05d66d..08e6f66 100644
--- a/icu4c/source/i18n/measfmt.cpp
+++ b/icu4c/source/i18n/measfmt.cpp
@@ -861,7 +861,7 @@
         return appendTo;
     }
     // Fix up FieldPosition indexes if our field is found.
-    if (offset != -1) {
+    if (fieldPositionFoundIndex != -1 && offset != -1) {
         pos.setBeginIndex(fpos.getBeginIndex() + offset);
         pos.setEndIndex(fpos.getEndIndex() + offset);
     }
diff --git a/icu4c/source/i18n/measunit.cpp b/icu4c/source/i18n/measunit.cpp
index 4edf130..70b7a45 100644
--- a/icu4c/source/i18n/measunit.cpp
+++ b/icu4c/source/i18n/measunit.cpp
@@ -34,8 +34,9 @@
 // http://site.icu-project.org/design/formatting/measureformat/updating-measure-unit
 //
 // Start generated code
+// TODO(ICU-21076): improve how this generated code is produced.
 
-
+// Maps from Type ID to offset in gSubTypes.
 static const int32_t gOffsets[] = {
     0,
     2,
@@ -50,45 +51,49 @@
     368,
     370,
     374,
-    381,
-    402,
+    382,
     404,
-    418,
-    421,
-    427,
-    437,
-    441,
-    445,
-    447,
-    474
+    408,
+    423,
+    426,
+    432,
+    442,
+    446,
+    450,
+    452,
+    486
 };
 
-static const int32_t gIndexes[] = {
-    0,
-    2,
-    7,
-    17,
-    25,
-    29,
-    29,
-    40,
-    56,
-    60,
-    69,
-    71,
-    75,
-    82,
-    103,
-    105,
-    119,
-    122,
-    128,
-    138,
-    142,
-    146,
-    148,
-    175
-};
+// TODO: FIX CODE GENERATION - leaving this here but commented-out to make it
+// clear that we no longer want this array. We needed it for only one thing: efficient checking of "currency".
+//
+// static const int32_t gIndexes[] = {
+//     0,
+//     2,
+//     7,
+//     17,
+//     25,
+//     29,
+//     29,
+//     40,
+//     56,
+//     60,
+//     69,
+//     71,
+//     75,
+//     83,
+//     105,
+//     109,
+//     124,
+//     127,
+//     133,
+//     143,
+//     147,
+//     151,
+//     153,
+//     187
+// };
+static const int32_t kCurrencyOffset = 5;
 
 // Must be sorted alphabetically.
 static const char * const gTypes[] = {
@@ -493,6 +498,7 @@
     "hertz",
     "kilohertz",
     "megahertz",
+    "dot",
     "dot-per-centimeter",
     "dot-per-inch",
     "em",
@@ -503,6 +509,7 @@
     "astronomical-unit",
     "centimeter",
     "decimeter",
+    "earth-radius",
     "fathom",
     "foot",
     "furlong",
@@ -521,11 +528,14 @@
     "point",
     "solar-radius",
     "yard",
+    "candela",
+    "lumen",
     "lux",
     "solar-luminosity",
     "carat",
     "dalton",
     "earth-mass",
+    "grain",
     "gram",
     "kilogram",
     "metric-ton",
@@ -580,34 +590,29 @@
     "cup",
     "cup-metric",
     "deciliter",
+    "dessert-spoon",
+    "dessert-spoon-imperial",
+    "dram",
+    "drop",
     "fluid-ounce",
     "fluid-ounce-imperial",
     "gallon",
     "gallon-imperial",
     "hectoliter",
+    "jigger",
     "liter",
     "megaliter",
     "milliliter",
+    "pinch",
     "pint",
     "pint-metric",
     "quart",
+    "quart-imperial",
     "tablespoon",
     "teaspoon"
 };
 
-// Must be sorted by first value and then second value.
-static int32_t unitPerUnitToSingleUnit[][4] = {
-        {378, 382, 12, 5},
-        {378, 387, 12, 6},
-        {388, 343, 19, 0},
-        {390, 350, 19, 2},
-        {392, 343, 19, 3},
-        {392, 463, 4, 2},
-        {392, 464, 4, 3},
-        {411, 460, 3, 1},
-        {414, 12, 18, 9},
-        {466, 388, 4, 1}
-};
+// unitPerUnitToSingleUnit no longer in use! TODO: remove from code-generation code.
 
 // Shortcuts to the base unit in order to make the default constructor fast
 static const int32_t kBaseTypeIdx = 16;
@@ -781,14 +786,6 @@
     return MeasureUnit(3, 3);
 }
 
-MeasureUnit *MeasureUnit::createPartPerMillion(UErrorCode &status) {
-    return MeasureUnit::create(3, 6, status);
-}
-
-MeasureUnit MeasureUnit::getPartPerMillion() {
-    return MeasureUnit(3, 6);
-}
-
 MeasureUnit *MeasureUnit::createPercent(UErrorCode &status) {
     return MeasureUnit::create(3, 4, status);
 }
@@ -805,6 +802,14 @@
     return MeasureUnit(3, 5);
 }
 
+MeasureUnit *MeasureUnit::createPartPerMillion(UErrorCode &status) {
+    return MeasureUnit::create(3, 6, status);
+}
+
+MeasureUnit MeasureUnit::getPartPerMillion() {
+    return MeasureUnit(3, 6);
+}
+
 MeasureUnit *MeasureUnit::createPermyriad(UErrorCode &status) {
     return MeasureUnit::create(3, 7, status);
 }
@@ -1213,62 +1218,70 @@
     return MeasureUnit(11, 3);
 }
 
-MeasureUnit *MeasureUnit::createDotPerCentimeter(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createDot(UErrorCode &status) {
     return MeasureUnit::create(12, 0, status);
 }
 
-MeasureUnit MeasureUnit::getDotPerCentimeter() {
+MeasureUnit MeasureUnit::getDot() {
     return MeasureUnit(12, 0);
 }
 
-MeasureUnit *MeasureUnit::createDotPerInch(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createDotPerCentimeter(UErrorCode &status) {
     return MeasureUnit::create(12, 1, status);
 }
 
-MeasureUnit MeasureUnit::getDotPerInch() {
+MeasureUnit MeasureUnit::getDotPerCentimeter() {
     return MeasureUnit(12, 1);
 }
 
-MeasureUnit *MeasureUnit::createEm(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createDotPerInch(UErrorCode &status) {
     return MeasureUnit::create(12, 2, status);
 }
 
-MeasureUnit MeasureUnit::getEm() {
+MeasureUnit MeasureUnit::getDotPerInch() {
     return MeasureUnit(12, 2);
 }
 
-MeasureUnit *MeasureUnit::createMegapixel(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createEm(UErrorCode &status) {
     return MeasureUnit::create(12, 3, status);
 }
 
-MeasureUnit MeasureUnit::getMegapixel() {
+MeasureUnit MeasureUnit::getEm() {
     return MeasureUnit(12, 3);
 }
 
-MeasureUnit *MeasureUnit::createPixel(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createMegapixel(UErrorCode &status) {
     return MeasureUnit::create(12, 4, status);
 }
 
-MeasureUnit MeasureUnit::getPixel() {
+MeasureUnit MeasureUnit::getMegapixel() {
     return MeasureUnit(12, 4);
 }
 
-MeasureUnit *MeasureUnit::createPixelPerCentimeter(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createPixel(UErrorCode &status) {
     return MeasureUnit::create(12, 5, status);
 }
 
-MeasureUnit MeasureUnit::getPixelPerCentimeter() {
+MeasureUnit MeasureUnit::getPixel() {
     return MeasureUnit(12, 5);
 }
 
-MeasureUnit *MeasureUnit::createPixelPerInch(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createPixelPerCentimeter(UErrorCode &status) {
     return MeasureUnit::create(12, 6, status);
 }
 
-MeasureUnit MeasureUnit::getPixelPerInch() {
+MeasureUnit MeasureUnit::getPixelPerCentimeter() {
     return MeasureUnit(12, 6);
 }
 
+MeasureUnit *MeasureUnit::createPixelPerInch(UErrorCode &status) {
+    return MeasureUnit::create(12, 7, status);
+}
+
+MeasureUnit MeasureUnit::getPixelPerInch() {
+    return MeasureUnit(12, 7);
+}
+
 MeasureUnit *MeasureUnit::createAstronomicalUnit(UErrorCode &status) {
     return MeasureUnit::create(13, 0, status);
 }
@@ -1293,166 +1306,190 @@
     return MeasureUnit(13, 2);
 }
 
-MeasureUnit *MeasureUnit::createFathom(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createEarthRadius(UErrorCode &status) {
     return MeasureUnit::create(13, 3, status);
 }
 
-MeasureUnit MeasureUnit::getFathom() {
+MeasureUnit MeasureUnit::getEarthRadius() {
     return MeasureUnit(13, 3);
 }
 
-MeasureUnit *MeasureUnit::createFoot(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createFathom(UErrorCode &status) {
     return MeasureUnit::create(13, 4, status);
 }
 
-MeasureUnit MeasureUnit::getFoot() {
+MeasureUnit MeasureUnit::getFathom() {
     return MeasureUnit(13, 4);
 }
 
-MeasureUnit *MeasureUnit::createFurlong(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createFoot(UErrorCode &status) {
     return MeasureUnit::create(13, 5, status);
 }
 
-MeasureUnit MeasureUnit::getFurlong() {
+MeasureUnit MeasureUnit::getFoot() {
     return MeasureUnit(13, 5);
 }
 
-MeasureUnit *MeasureUnit::createInch(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createFurlong(UErrorCode &status) {
     return MeasureUnit::create(13, 6, status);
 }
 
-MeasureUnit MeasureUnit::getInch() {
+MeasureUnit MeasureUnit::getFurlong() {
     return MeasureUnit(13, 6);
 }
 
-MeasureUnit *MeasureUnit::createKilometer(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createInch(UErrorCode &status) {
     return MeasureUnit::create(13, 7, status);
 }
 
-MeasureUnit MeasureUnit::getKilometer() {
+MeasureUnit MeasureUnit::getInch() {
     return MeasureUnit(13, 7);
 }
 
-MeasureUnit *MeasureUnit::createLightYear(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createKilometer(UErrorCode &status) {
     return MeasureUnit::create(13, 8, status);
 }
 
-MeasureUnit MeasureUnit::getLightYear() {
+MeasureUnit MeasureUnit::getKilometer() {
     return MeasureUnit(13, 8);
 }
 
-MeasureUnit *MeasureUnit::createMeter(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createLightYear(UErrorCode &status) {
     return MeasureUnit::create(13, 9, status);
 }
 
-MeasureUnit MeasureUnit::getMeter() {
+MeasureUnit MeasureUnit::getLightYear() {
     return MeasureUnit(13, 9);
 }
 
-MeasureUnit *MeasureUnit::createMicrometer(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createMeter(UErrorCode &status) {
     return MeasureUnit::create(13, 10, status);
 }
 
-MeasureUnit MeasureUnit::getMicrometer() {
+MeasureUnit MeasureUnit::getMeter() {
     return MeasureUnit(13, 10);
 }
 
-MeasureUnit *MeasureUnit::createMile(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createMicrometer(UErrorCode &status) {
     return MeasureUnit::create(13, 11, status);
 }
 
-MeasureUnit MeasureUnit::getMile() {
+MeasureUnit MeasureUnit::getMicrometer() {
     return MeasureUnit(13, 11);
 }
 
-MeasureUnit *MeasureUnit::createMileScandinavian(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createMile(UErrorCode &status) {
     return MeasureUnit::create(13, 12, status);
 }
 
-MeasureUnit MeasureUnit::getMileScandinavian() {
+MeasureUnit MeasureUnit::getMile() {
     return MeasureUnit(13, 12);
 }
 
-MeasureUnit *MeasureUnit::createMillimeter(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createMileScandinavian(UErrorCode &status) {
     return MeasureUnit::create(13, 13, status);
 }
 
-MeasureUnit MeasureUnit::getMillimeter() {
+MeasureUnit MeasureUnit::getMileScandinavian() {
     return MeasureUnit(13, 13);
 }
 
-MeasureUnit *MeasureUnit::createNanometer(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createMillimeter(UErrorCode &status) {
     return MeasureUnit::create(13, 14, status);
 }
 
-MeasureUnit MeasureUnit::getNanometer() {
+MeasureUnit MeasureUnit::getMillimeter() {
     return MeasureUnit(13, 14);
 }
 
-MeasureUnit *MeasureUnit::createNauticalMile(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createNanometer(UErrorCode &status) {
     return MeasureUnit::create(13, 15, status);
 }
 
-MeasureUnit MeasureUnit::getNauticalMile() {
+MeasureUnit MeasureUnit::getNanometer() {
     return MeasureUnit(13, 15);
 }
 
-MeasureUnit *MeasureUnit::createParsec(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createNauticalMile(UErrorCode &status) {
     return MeasureUnit::create(13, 16, status);
 }
 
-MeasureUnit MeasureUnit::getParsec() {
+MeasureUnit MeasureUnit::getNauticalMile() {
     return MeasureUnit(13, 16);
 }
 
-MeasureUnit *MeasureUnit::createPicometer(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createParsec(UErrorCode &status) {
     return MeasureUnit::create(13, 17, status);
 }
 
-MeasureUnit MeasureUnit::getPicometer() {
+MeasureUnit MeasureUnit::getParsec() {
     return MeasureUnit(13, 17);
 }
 
-MeasureUnit *MeasureUnit::createPoint(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createPicometer(UErrorCode &status) {
     return MeasureUnit::create(13, 18, status);
 }
 
-MeasureUnit MeasureUnit::getPoint() {
+MeasureUnit MeasureUnit::getPicometer() {
     return MeasureUnit(13, 18);
 }
 
-MeasureUnit *MeasureUnit::createSolarRadius(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createPoint(UErrorCode &status) {
     return MeasureUnit::create(13, 19, status);
 }
 
-MeasureUnit MeasureUnit::getSolarRadius() {
+MeasureUnit MeasureUnit::getPoint() {
     return MeasureUnit(13, 19);
 }
 
-MeasureUnit *MeasureUnit::createYard(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createSolarRadius(UErrorCode &status) {
     return MeasureUnit::create(13, 20, status);
 }
 
-MeasureUnit MeasureUnit::getYard() {
+MeasureUnit MeasureUnit::getSolarRadius() {
     return MeasureUnit(13, 20);
 }
 
-MeasureUnit *MeasureUnit::createLux(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createYard(UErrorCode &status) {
+    return MeasureUnit::create(13, 21, status);
+}
+
+MeasureUnit MeasureUnit::getYard() {
+    return MeasureUnit(13, 21);
+}
+
+MeasureUnit *MeasureUnit::createCandela(UErrorCode &status) {
     return MeasureUnit::create(14, 0, status);
 }
 
-MeasureUnit MeasureUnit::getLux() {
+MeasureUnit MeasureUnit::getCandela() {
     return MeasureUnit(14, 0);
 }
 
-MeasureUnit *MeasureUnit::createSolarLuminosity(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createLumen(UErrorCode &status) {
     return MeasureUnit::create(14, 1, status);
 }
 
-MeasureUnit MeasureUnit::getSolarLuminosity() {
+MeasureUnit MeasureUnit::getLumen() {
     return MeasureUnit(14, 1);
 }
 
+MeasureUnit *MeasureUnit::createLux(UErrorCode &status) {
+    return MeasureUnit::create(14, 2, status);
+}
+
+MeasureUnit MeasureUnit::getLux() {
+    return MeasureUnit(14, 2);
+}
+
+MeasureUnit *MeasureUnit::createSolarLuminosity(UErrorCode &status) {
+    return MeasureUnit::create(14, 3, status);
+}
+
+MeasureUnit MeasureUnit::getSolarLuminosity() {
+    return MeasureUnit(14, 3);
+}
+
 MeasureUnit *MeasureUnit::createCarat(UErrorCode &status) {
     return MeasureUnit::create(15, 0, status);
 }
@@ -1477,94 +1514,102 @@
     return MeasureUnit(15, 2);
 }
 
-MeasureUnit *MeasureUnit::createGram(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createGrain(UErrorCode &status) {
     return MeasureUnit::create(15, 3, status);
 }
 
-MeasureUnit MeasureUnit::getGram() {
+MeasureUnit MeasureUnit::getGrain() {
     return MeasureUnit(15, 3);
 }
 
-MeasureUnit *MeasureUnit::createKilogram(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createGram(UErrorCode &status) {
     return MeasureUnit::create(15, 4, status);
 }
 
-MeasureUnit MeasureUnit::getKilogram() {
+MeasureUnit MeasureUnit::getGram() {
     return MeasureUnit(15, 4);
 }
 
-MeasureUnit *MeasureUnit::createMetricTon(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createKilogram(UErrorCode &status) {
     return MeasureUnit::create(15, 5, status);
 }
 
-MeasureUnit MeasureUnit::getMetricTon() {
+MeasureUnit MeasureUnit::getKilogram() {
     return MeasureUnit(15, 5);
 }
 
-MeasureUnit *MeasureUnit::createMicrogram(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createMetricTon(UErrorCode &status) {
     return MeasureUnit::create(15, 6, status);
 }
 
-MeasureUnit MeasureUnit::getMicrogram() {
+MeasureUnit MeasureUnit::getMetricTon() {
     return MeasureUnit(15, 6);
 }
 
-MeasureUnit *MeasureUnit::createMilligram(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createMicrogram(UErrorCode &status) {
     return MeasureUnit::create(15, 7, status);
 }
 
-MeasureUnit MeasureUnit::getMilligram() {
+MeasureUnit MeasureUnit::getMicrogram() {
     return MeasureUnit(15, 7);
 }
 
-MeasureUnit *MeasureUnit::createOunce(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createMilligram(UErrorCode &status) {
     return MeasureUnit::create(15, 8, status);
 }
 
-MeasureUnit MeasureUnit::getOunce() {
+MeasureUnit MeasureUnit::getMilligram() {
     return MeasureUnit(15, 8);
 }
 
-MeasureUnit *MeasureUnit::createOunceTroy(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createOunce(UErrorCode &status) {
     return MeasureUnit::create(15, 9, status);
 }
 
-MeasureUnit MeasureUnit::getOunceTroy() {
+MeasureUnit MeasureUnit::getOunce() {
     return MeasureUnit(15, 9);
 }
 
-MeasureUnit *MeasureUnit::createPound(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createOunceTroy(UErrorCode &status) {
     return MeasureUnit::create(15, 10, status);
 }
 
-MeasureUnit MeasureUnit::getPound() {
+MeasureUnit MeasureUnit::getOunceTroy() {
     return MeasureUnit(15, 10);
 }
 
-MeasureUnit *MeasureUnit::createSolarMass(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createPound(UErrorCode &status) {
     return MeasureUnit::create(15, 11, status);
 }
 
-MeasureUnit MeasureUnit::getSolarMass() {
+MeasureUnit MeasureUnit::getPound() {
     return MeasureUnit(15, 11);
 }
 
-MeasureUnit *MeasureUnit::createStone(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createSolarMass(UErrorCode &status) {
     return MeasureUnit::create(15, 12, status);
 }
 
-MeasureUnit MeasureUnit::getStone() {
+MeasureUnit MeasureUnit::getSolarMass() {
     return MeasureUnit(15, 12);
 }
 
-MeasureUnit *MeasureUnit::createTon(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createStone(UErrorCode &status) {
     return MeasureUnit::create(15, 13, status);
 }
 
-MeasureUnit MeasureUnit::getTon() {
+MeasureUnit MeasureUnit::getStone() {
     return MeasureUnit(15, 13);
 }
 
+MeasureUnit *MeasureUnit::createTon(UErrorCode &status) {
+    return MeasureUnit::create(15, 14, status);
+}
+
+MeasureUnit MeasureUnit::getTon() {
+    return MeasureUnit(15, 14);
+}
+
 MeasureUnit *MeasureUnit::createGigawatt(UErrorCode &status) {
     return MeasureUnit::create(17, 0, status);
 }
@@ -1885,110 +1930,166 @@
     return MeasureUnit(22, 13);
 }
 
-MeasureUnit *MeasureUnit::createFluidOunce(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createDessertSpoon(UErrorCode &status) {
     return MeasureUnit::create(22, 14, status);
 }
 
-MeasureUnit MeasureUnit::getFluidOunce() {
+MeasureUnit MeasureUnit::getDessertSpoon() {
     return MeasureUnit(22, 14);
 }
 
-MeasureUnit *MeasureUnit::createFluidOunceImperial(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createDessertSpoonImperial(UErrorCode &status) {
     return MeasureUnit::create(22, 15, status);
 }
 
-MeasureUnit MeasureUnit::getFluidOunceImperial() {
+MeasureUnit MeasureUnit::getDessertSpoonImperial() {
     return MeasureUnit(22, 15);
 }
 
-MeasureUnit *MeasureUnit::createGallon(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createDram(UErrorCode &status) {
     return MeasureUnit::create(22, 16, status);
 }
 
-MeasureUnit MeasureUnit::getGallon() {
+MeasureUnit MeasureUnit::getDram() {
     return MeasureUnit(22, 16);
 }
 
-MeasureUnit *MeasureUnit::createGallonImperial(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createDrop(UErrorCode &status) {
     return MeasureUnit::create(22, 17, status);
 }
 
-MeasureUnit MeasureUnit::getGallonImperial() {
+MeasureUnit MeasureUnit::getDrop() {
     return MeasureUnit(22, 17);
 }
 
-MeasureUnit *MeasureUnit::createHectoliter(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createFluidOunce(UErrorCode &status) {
     return MeasureUnit::create(22, 18, status);
 }
 
-MeasureUnit MeasureUnit::getHectoliter() {
+MeasureUnit MeasureUnit::getFluidOunce() {
     return MeasureUnit(22, 18);
 }
 
-MeasureUnit *MeasureUnit::createLiter(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createFluidOunceImperial(UErrorCode &status) {
     return MeasureUnit::create(22, 19, status);
 }
 
-MeasureUnit MeasureUnit::getLiter() {
+MeasureUnit MeasureUnit::getFluidOunceImperial() {
     return MeasureUnit(22, 19);
 }
 
-MeasureUnit *MeasureUnit::createMegaliter(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createGallon(UErrorCode &status) {
     return MeasureUnit::create(22, 20, status);
 }
 
-MeasureUnit MeasureUnit::getMegaliter() {
+MeasureUnit MeasureUnit::getGallon() {
     return MeasureUnit(22, 20);
 }
 
-MeasureUnit *MeasureUnit::createMilliliter(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createGallonImperial(UErrorCode &status) {
     return MeasureUnit::create(22, 21, status);
 }
 
-MeasureUnit MeasureUnit::getMilliliter() {
+MeasureUnit MeasureUnit::getGallonImperial() {
     return MeasureUnit(22, 21);
 }
 
-MeasureUnit *MeasureUnit::createPint(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createHectoliter(UErrorCode &status) {
     return MeasureUnit::create(22, 22, status);
 }
 
-MeasureUnit MeasureUnit::getPint() {
+MeasureUnit MeasureUnit::getHectoliter() {
     return MeasureUnit(22, 22);
 }
 
-MeasureUnit *MeasureUnit::createPintMetric(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createJigger(UErrorCode &status) {
     return MeasureUnit::create(22, 23, status);
 }
 
-MeasureUnit MeasureUnit::getPintMetric() {
+MeasureUnit MeasureUnit::getJigger() {
     return MeasureUnit(22, 23);
 }
 
-MeasureUnit *MeasureUnit::createQuart(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createLiter(UErrorCode &status) {
     return MeasureUnit::create(22, 24, status);
 }
 
-MeasureUnit MeasureUnit::getQuart() {
+MeasureUnit MeasureUnit::getLiter() {
     return MeasureUnit(22, 24);
 }
 
-MeasureUnit *MeasureUnit::createTablespoon(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createMegaliter(UErrorCode &status) {
     return MeasureUnit::create(22, 25, status);
 }
 
-MeasureUnit MeasureUnit::getTablespoon() {
+MeasureUnit MeasureUnit::getMegaliter() {
     return MeasureUnit(22, 25);
 }
 
-MeasureUnit *MeasureUnit::createTeaspoon(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createMilliliter(UErrorCode &status) {
     return MeasureUnit::create(22, 26, status);
 }
 
-MeasureUnit MeasureUnit::getTeaspoon() {
+MeasureUnit MeasureUnit::getMilliliter() {
     return MeasureUnit(22, 26);
 }
 
+MeasureUnit *MeasureUnit::createPinch(UErrorCode &status) {
+    return MeasureUnit::create(22, 27, status);
+}
+
+MeasureUnit MeasureUnit::getPinch() {
+    return MeasureUnit(22, 27);
+}
+
+MeasureUnit *MeasureUnit::createPint(UErrorCode &status) {
+    return MeasureUnit::create(22, 28, status);
+}
+
+MeasureUnit MeasureUnit::getPint() {
+    return MeasureUnit(22, 28);
+}
+
+MeasureUnit *MeasureUnit::createPintMetric(UErrorCode &status) {
+    return MeasureUnit::create(22, 29, status);
+}
+
+MeasureUnit MeasureUnit::getPintMetric() {
+    return MeasureUnit(22, 29);
+}
+
+MeasureUnit *MeasureUnit::createQuart(UErrorCode &status) {
+    return MeasureUnit::create(22, 30, status);
+}
+
+MeasureUnit MeasureUnit::getQuart() {
+    return MeasureUnit(22, 30);
+}
+
+MeasureUnit *MeasureUnit::createQuartImperial(UErrorCode &status) {
+    return MeasureUnit::create(22, 31, status);
+}
+
+MeasureUnit MeasureUnit::getQuartImperial() {
+    return MeasureUnit(22, 31);
+}
+
+MeasureUnit *MeasureUnit::createTablespoon(UErrorCode &status) {
+    return MeasureUnit::create(22, 32, status);
+}
+
+MeasureUnit MeasureUnit::getTablespoon() {
+    return MeasureUnit(22, 32);
+}
+
+MeasureUnit *MeasureUnit::createTeaspoon(UErrorCode &status) {
+    return MeasureUnit::create(22, 33, status);
+}
+
+MeasureUnit MeasureUnit::getTeaspoon() {
+    return MeasureUnit(22, 33);
+}
+
 // End generated code
 
 static int32_t binarySearch(
@@ -2038,7 +2139,9 @@
     if (this == &other) {
         return *this;
     }
-    delete fImpl;
+    if (fImpl != nullptr) {
+        delete fImpl;
+    }
     if (other.fImpl) {
         ErrorCode localStatus;
         fImpl = new MeasureUnitImpl(other.fImpl->copy(localStatus));
@@ -2059,7 +2162,9 @@
     if (this == &other) {
         return *this;
     }
-    delete fImpl;
+    if (fImpl != nullptr) {
+        delete fImpl;
+    }
     fImpl = other.fImpl;
     other.fImpl = nullptr;
     fTypeId = other.fTypeId;
@@ -2072,8 +2177,10 @@
 }
 
 MeasureUnit::~MeasureUnit() {
-    delete fImpl;
-    fImpl = nullptr;
+    if (fImpl != nullptr) {
+        delete fImpl;
+        fImpl = nullptr;
+    }
 }
 
 const char *MeasureUnit::getType() const {
@@ -2107,10 +2214,6 @@
     return uprv_strcmp(getIdentifier(), rhs.getIdentifier()) == 0;
 }
 
-int32_t MeasureUnit::getIndex() const {
-    return gIndexes[fTypeId] + fSubTypeId;
-}
-
 int32_t MeasureUnit::getAvailable(
         MeasureUnit *dest,
         int32_t destCapacity,
@@ -2173,26 +2276,12 @@
     return result;
 }
 
-int32_t MeasureUnit::getIndexCount() {
-    return gIndexes[UPRV_LENGTHOF(gIndexes) - 1];
-}
-
-int32_t MeasureUnit::internalGetIndexForTypeAndSubtype(const char *type, const char *subtype) {
-    int32_t t = binarySearch(gTypes, 0, UPRV_LENGTHOF(gTypes), type);
-    if (t < 0) {
-        return t;
-    }
-    int32_t st = binarySearch(gSubTypes, gOffsets[t], gOffsets[t + 1], subtype);
-    if (st < 0) {
-        return st;
-    }
-    return gIndexes[t] + st - gOffsets[t];
-}
-
 bool MeasureUnit::findBySubType(StringPiece subType, MeasureUnit* output) {
     for (int32_t t = 0; t < UPRV_LENGTHOF(gOffsets) - 1; t++) {
+        // Ensure kCurrencyOffset is set correctly
+        U_ASSERT(uprv_strcmp(gTypes[kCurrencyOffset], "currency") == 0);
         // Skip currency units
-        if (gIndexes[t] == gIndexes[t + 1]) {
+        if (t == kCurrencyOffset) {
             continue;
         }
         int32_t st = binarySearch(gSubTypes, gOffsets[t], gOffsets[t + 1], subType);
@@ -2204,41 +2293,6 @@
     return false;
 }
 
-MeasureUnit MeasureUnit::resolveUnitPerUnit(
-        const MeasureUnit &unit, const MeasureUnit &perUnit, bool* isResolved) {
-    int32_t unitOffset = unit.getOffset();
-    int32_t perUnitOffset = perUnit.getOffset();
-    if (unitOffset == -1 || perUnitOffset == -1) {
-        *isResolved = false;
-        return MeasureUnit();
-    }
-
-    // binary search for (unitOffset, perUnitOffset)
-    int32_t start = 0;
-    int32_t end = UPRV_LENGTHOF(unitPerUnitToSingleUnit);
-    while (start < end) {
-        int32_t mid = (start + end) / 2;
-        int32_t *midRow = unitPerUnitToSingleUnit[mid];
-        if (unitOffset < midRow[0]) {
-            end = mid;
-        } else if (unitOffset > midRow[0]) {
-            start = mid + 1;
-        } else if (perUnitOffset < midRow[1]) {
-            end = mid;
-        } else if (perUnitOffset > midRow[1]) {
-            start = mid + 1;
-        } else {
-            // We found a resolution for our unit / per-unit combo
-            // return it.
-            *isResolved = true;
-            return MeasureUnit(midRow[2], midRow[3]);
-        }
-    }
-
-    *isResolved = false;
-    return MeasureUnit();
-}
-
 MeasureUnit *MeasureUnit::create(int typeId, int subTypeId, UErrorCode &status) {
     if (U_FAILURE(status)) {
         return NULL;
@@ -2279,20 +2333,13 @@
     fSubTypeId = result - gOffsets[fTypeId];
 }
 
-void MeasureUnit::initNoUnit(const char *subtype) {
-    int32_t result = binarySearch(gTypes, 0, UPRV_LENGTHOF(gTypes), "none");
-    U_ASSERT(result != -1);
-    fTypeId = result;
-    result = binarySearch(gSubTypes, gOffsets[fTypeId], gOffsets[fTypeId + 1], subtype);
-    U_ASSERT(result != -1);
-    fSubTypeId = result - gOffsets[fTypeId];
-}
-
 void MeasureUnit::setTo(int32_t typeId, int32_t subTypeId) {
     fTypeId = typeId;
     fSubTypeId = subTypeId;
-    delete fImpl;
-    fImpl = nullptr;
+    if (fImpl != nullptr) {
+        delete fImpl;
+        fImpl = nullptr;
+    }
 }
 
 int32_t MeasureUnit::getOffset() const {
@@ -2302,6 +2349,20 @@
     return gOffsets[fTypeId] + fSubTypeId;
 }
 
+MeasureUnitImpl MeasureUnitImpl::copy(UErrorCode &status) const {
+    MeasureUnitImpl result;
+    result.complexity = complexity;
+    result.identifier.append(identifier, status);
+    for (int32_t i = 0; i < units.length(); i++) {
+        SingleUnitImpl *item = result.units.emplaceBack(*units[i]);
+        if (!item) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+            return result;
+        }
+    }
+    return result;
+}
+
 U_NAMESPACE_END
 
 #endif /* !UNCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/measunit_extra.cpp b/icu4c/source/i18n/measunit_extra.cpp
index aeb6001..2eb3f06 100644
--- a/icu4c/source/i18n/measunit_extra.cpp
+++ b/icu4c/source/i18n/measunit_extra.cpp
@@ -12,20 +12,25 @@
 // Helpful in toString methods and elsewhere.
 #define UNISTR_FROM_STRING_EXPLICIT
 
-#include <cstdlib>
+#include "charstr.h"
+#include "cmemory.h"
 #include "cstring.h"
 #include "measunit_impl.h"
+#include "resource.h"
 #include "uarrsort.h"
 #include "uassert.h"
 #include "ucln_in.h"
 #include "umutex.h"
-#include "unicode/errorcode.h"
+#include "unicode/bytestrie.h"
+#include "unicode/bytestriebuilder.h"
 #include "unicode/localpointer.h"
 #include "unicode/measunit.h"
-#include "unicode/ucharstrie.h"
-#include "unicode/ucharstriebuilder.h"
-
-#include "cstr.h"
+#include "unicode/stringpiece.h"
+#include "unicode/stringtriebuilder.h"
+#include "unicode/ures.h"
+#include "unicode/ustringtrie.h"
+#include "uresimp.h"
+#include <cstdlib>
 
 U_NAMESPACE_BEGIN
 
@@ -60,7 +65,7 @@
     INITIAL_COMPOUND_PART_PER = kInitialCompoundPartOffset,
 };
 
-// Trie value offset for powers like "square-", "cubic-", "p2-" etc.
+// Trie value offset for powers like "square-", "cubic-", "pow2-" etc.
 constexpr int32_t kPowerPartOffset = 256;
 
 enum PowerPart {
@@ -110,119 +115,101 @@
     { "yocto", UMEASURE_SI_PREFIX_YOCTO },
 };
 
-// TODO(ICU-21059): Get this list from data
-const char16_t* const gSimpleUnits[] = {
-    u"candela",
-    u"carat",
-    u"gram",
-    u"ounce",
-    u"ounce-troy",
-    u"pound",
-    u"kilogram",
-    u"stone",
-    u"ton",
-    u"metric-ton",
-    u"earth-mass",
-    u"solar-mass",
-    u"point",
-    u"inch",
-    u"foot",
-    u"yard",
-    u"meter",
-    u"fathom",
-    u"furlong",
-    u"mile",
-    u"nautical-mile",
-    u"mile-scandinavian",
-    u"100-kilometer",
-    u"earth-radius",
-    u"solar-radius",
-    u"astronomical-unit",
-    u"light-year",
-    u"parsec",
-    u"second",
-    u"minute",
-    u"hour",
-    u"day",
-    u"day-person",
-    u"week",
-    u"week-person",
-    u"month",
-    u"month-person",
-    u"year",
-    u"year-person",
-    u"decade",
-    u"century",
-    u"ampere",
-    u"fahrenheit",
-    u"kelvin",
-    u"celsius",
-    u"arc-second",
-    u"arc-minute",
-    u"degree",
-    u"radian",
-    u"revolution",
-    u"item",
-    u"mole",
-    u"permillion",
-    u"permyriad",
-    u"permille",
-    u"percent",
-    u"karat",
-    u"portion",
-    u"bit",
-    u"byte",
-    u"dot",
-    u"pixel",
-    u"em",
-    u"hertz",
-    u"newton",
-    u"pound-force",
-    u"pascal",
-    u"bar",
-    u"atmosphere",
-    u"ofhg",
-    u"electronvolt",
-    u"dalton",
-    u"joule",
-    u"calorie",
-    u"british-thermal-unit",
-    u"foodcalorie",
-    u"therm-us",
-    u"watt",
-    u"horsepower",
-    u"solar-luminosity",
-    u"volt",
-    u"ohm",
-    u"dunam",
-    u"acre",
-    u"hectare",
-    u"teaspoon",
-    u"tablespoon",
-    u"fluid-ounce-imperial",
-    u"fluid-ounce",
-    u"cup",
-    u"cup-metric",
-    u"pint",
-    u"pint-metric",
-    u"quart",
-    u"liter",
-    u"gallon",
-    u"gallon-imperial",
-    u"bushel",
-    u"barrel",
-    u"knot",
-    u"g-force",
-    u"lux",
+/**
+ * A ResourceSink that collects simple unit identifiers from the keys of the
+ * convertUnits table into an array, and adds these values to a TrieBuilder,
+ * with associated values being their index into this array plus a specified
+ * offset, to a trie.
+ *
+ * Example code:
+ *
+ *     UErrorCode status = U_ZERO_ERROR;
+ *     BytesTrieBuilder b(status);
+ *     const char *unitIdentifiers[200];
+ *     SimpleUnitIdentifiersSink identifierSink(unitIdentifiers, 200, b, kTrieValueOffset);
+ *     LocalUResourceBundlePointer unitsBundle(ures_openDirect(NULL, "units", &status));
+ *     ures_getAllItemsWithFallback(unitsBundle.getAlias(), "convertUnits", identifierSink, status);
+ */
+class SimpleUnitIdentifiersSink : public icu::ResourceSink {
+  public:
+    /**
+     * Constructor.
+     * @param out Array of char* to which the simple unit identifiers will be
+     *     saved.
+     * @param outSize The size of `out`.
+     * @param trieBuilder The trie builder to which the simple unit identifier
+     *     should be added. The trie builder must outlive this resource sink.
+     * @param trieValueOffset This is added to the index of the identifier in
+     *     the `out` array, before adding to `trieBuilder` as the value
+     *     associated with the identifier.
+     */
+    explicit SimpleUnitIdentifiersSink(const char **out, int32_t outSize, BytesTrieBuilder &trieBuilder,
+                                       int32_t trieValueOffset)
+        : outArray(out), outSize(outSize), trieBuilder(trieBuilder), trieValueOffset(trieValueOffset),
+          outIndex(0) {
+    }
+
+    /**
+     * Adds the table keys found in value to the output vector.
+     * @param key The key of the resource passed to `value`: the second
+     *     parameter of the ures_getAllItemsWithFallback() call.
+     * @param value Should be a ResourceTable value, if
+     *     ures_getAllItemsWithFallback() was called correctly for this sink.
+     * @param noFallback Ignored.
+     * @param status The standard ICU error code output parameter.
+     */
+    void put(const char * /*key*/, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) {
+        ResourceTable table = value.getTable(status);
+        if (U_FAILURE(status)) return;
+
+        if (outIndex + table.getSize() > outSize) {
+            status = U_INDEX_OUTOFBOUNDS_ERROR;
+            return;
+        }
+
+        // Collect keys from the table resource.
+        const char *key;
+        for (int32_t i = 0; table.getKeyAndValue(i, key, value); ++i) {
+            U_ASSERT(i < table.getSize());
+            U_ASSERT(outIndex < outSize);
+            if (uprv_strcmp(key, "kilogram") == 0) {
+                // For parsing, we use "gram", the prefixless metric mass unit. We
+                // thus ignore the SI Base Unit of Mass: it exists due to being the
+                // mass conversion target unit, but not needed for MeasureUnit
+                // parsing.
+                continue;
+            }
+            outArray[outIndex] = key;
+            trieBuilder.add(key, trieValueOffset + outIndex, status);
+            outIndex++;
+        }
+    }
+
+  private:
+    const char **outArray;
+    int32_t outSize;
+    BytesTrieBuilder &trieBuilder;
+    int32_t trieValueOffset;
+
+    int32_t outIndex;
 };
 
 icu::UInitOnce gUnitExtrasInitOnce = U_INITONCE_INITIALIZER;
 
-char16_t* kSerializedUnitExtrasStemTrie = nullptr;
+// Array of simple unit IDs.
+//
+// The array memory itself is owned by this pointer, but the individual char* in
+// that array point at static memory. (Note that these char* are also returned
+// by SingleUnitImpl::getSimpleUnitID().)
+const char **gSimpleUnits = nullptr;
+
+char *gSerializedUnitExtrasStemTrie = nullptr;
 
 UBool U_CALLCONV cleanupUnitExtras() {
-    uprv_free(kSerializedUnitExtrasStemTrie);
-    kSerializedUnitExtrasStemTrie = nullptr;
+    uprv_free(gSerializedUnitExtrasStemTrie);
+    gSerializedUnitExtrasStemTrie = nullptr;
+    uprv_free(gSimpleUnits);
+    gSimpleUnits = nullptr;
     gUnitExtrasInitOnce.reset();
     return TRUE;
 }
@@ -230,55 +217,75 @@
 void U_CALLCONV initUnitExtras(UErrorCode& status) {
     ucln_i18n_registerCleanup(UCLN_I18N_UNIT_EXTRAS, cleanupUnitExtras);
 
-    UCharsTrieBuilder b(status);
+    BytesTrieBuilder b(status);
     if (U_FAILURE(status)) { return; }
 
     // Add SI prefixes
     for (const auto& siPrefixInfo : gSIPrefixStrings) {
-        UnicodeString uSIPrefix(siPrefixInfo.string, -1, US_INV);
-        b.add(uSIPrefix, siPrefixInfo.value + kSIPrefixOffset, status);
+        b.add(siPrefixInfo.string, siPrefixInfo.value + kSIPrefixOffset, status);
     }
     if (U_FAILURE(status)) { return; }
 
     // Add syntax parts (compound, power prefixes)
-    b.add(u"-per-", COMPOUND_PART_PER, status);
-    b.add(u"-", COMPOUND_PART_TIMES, status);
-    b.add(u"-and-", COMPOUND_PART_AND, status);
-    b.add(u"per-", INITIAL_COMPOUND_PART_PER, status);
-    b.add(u"square-", POWER_PART_P2, status);
-    b.add(u"cubic-", POWER_PART_P3, status);
-    b.add(u"p2-", POWER_PART_P2, status);
-    b.add(u"p3-", POWER_PART_P3, status);
-    b.add(u"p4-", POWER_PART_P4, status);
-    b.add(u"p5-", POWER_PART_P5, status);
-    b.add(u"p6-", POWER_PART_P6, status);
-    b.add(u"p7-", POWER_PART_P7, status);
-    b.add(u"p8-", POWER_PART_P8, status);
-    b.add(u"p9-", POWER_PART_P9, status);
-    b.add(u"p10-", POWER_PART_P10, status);
-    b.add(u"p11-", POWER_PART_P11, status);
-    b.add(u"p12-", POWER_PART_P12, status);
-    b.add(u"p13-", POWER_PART_P13, status);
-    b.add(u"p14-", POWER_PART_P14, status);
-    b.add(u"p15-", POWER_PART_P15, status);
+    b.add("-per-", COMPOUND_PART_PER, status);
+    b.add("-", COMPOUND_PART_TIMES, status);
+    b.add("-and-", COMPOUND_PART_AND, status);
+    b.add("per-", INITIAL_COMPOUND_PART_PER, status);
+    b.add("square-", POWER_PART_P2, status);
+    b.add("cubic-", POWER_PART_P3, status);
+    b.add("pow2-", POWER_PART_P2, status);
+    b.add("pow3-", POWER_PART_P3, status);
+    b.add("pow4-", POWER_PART_P4, status);
+    b.add("pow5-", POWER_PART_P5, status);
+    b.add("pow6-", POWER_PART_P6, status);
+    b.add("pow7-", POWER_PART_P7, status);
+    b.add("pow8-", POWER_PART_P8, status);
+    b.add("pow9-", POWER_PART_P9, status);
+    b.add("pow10-", POWER_PART_P10, status);
+    b.add("pow11-", POWER_PART_P11, status);
+    b.add("pow12-", POWER_PART_P12, status);
+    b.add("pow13-", POWER_PART_P13, status);
+    b.add("pow14-", POWER_PART_P14, status);
+    b.add("pow15-", POWER_PART_P15, status);
     if (U_FAILURE(status)) { return; }
 
-    // Add sanctioned simple units by offset
-    int32_t simpleUnitOffset = kSimpleUnitOffset;
-    for (auto simpleUnit : gSimpleUnits) {
-        b.add(simpleUnit, simpleUnitOffset++, status);
+    // Add sanctioned simple units by offset: simple units all have entries in
+    // units/convertUnits resources.
+    // TODO(ICU-21059): confirm whether this is clean enough, or whether we need to
+    // filter units' validity list instead.
+    LocalUResourceBundlePointer unitsBundle(ures_openDirect(NULL, "units", &status));
+    LocalUResourceBundlePointer convertUnits(
+        ures_getByKey(unitsBundle.getAlias(), "convertUnits", NULL, &status));
+    if (U_FAILURE(status)) { return; }
+
+    // Allocate enough space: with identifierSink below skipping kilogram, we're
+    // probably allocating one more than needed.
+    int32_t simpleUnitsCount = convertUnits.getAlias()->fSize;
+    int32_t arrayMallocSize = sizeof(char *) * simpleUnitsCount;
+    gSimpleUnits = static_cast<const char **>(uprv_malloc(arrayMallocSize));
+    if (gSimpleUnits == nullptr) {
+        status = U_MEMORY_ALLOCATION_ERROR;
+        return;
     }
+    uprv_memset(gSimpleUnits, 0, arrayMallocSize);
+
+    // Populate gSimpleUnits and build the associated trie.
+    SimpleUnitIdentifiersSink identifierSink(gSimpleUnits, simpleUnitsCount, b, kSimpleUnitOffset);
+    ures_getAllItemsWithFallback(unitsBundle.getAlias(), "convertUnits", identifierSink, status);
 
     // Build the CharsTrie
     // TODO: Use SLOW or FAST here?
-    UnicodeString result;
-    b.buildUnicodeString(USTRINGTRIE_BUILD_FAST, result, status);
+    StringPiece result = b.buildStringPiece(USTRINGTRIE_BUILD_FAST, status);
     if (U_FAILURE(status)) { return; }
 
     // Copy the result into the global constant pointer
-    size_t numBytes = result.length() * sizeof(char16_t);
-    kSerializedUnitExtrasStemTrie = static_cast<char16_t*>(uprv_malloc(numBytes));
-    uprv_memcpy(kSerializedUnitExtrasStemTrie, result.getBuffer(), numBytes);
+    size_t numBytes = result.length();
+    gSerializedUnitExtrasStemTrie = static_cast<char *>(uprv_malloc(numBytes));
+    if (gSerializedUnitExtrasStemTrie == nullptr) {
+        status = U_MEMORY_ALLOCATION_ERROR;
+        return;
+    }
+    uprv_memcpy(gSerializedUnitExtrasStemTrie, result.data(), numBytes);
 }
 
 class Token {
@@ -385,7 +392,7 @@
     // should live longer than this Parser - and the parser shouldn't return any
     // references to that string.
     StringPiece fSource;
-    UCharsTrie fTrie;
+    BytesTrie fTrie;
 
     // Set to true when we've seen a "-per-" or a "per-", after which all units
     // are in the denominator. Until we find an "-and-", at which point the
@@ -395,7 +402,7 @@
     Parser() : fSource(""), fTrie(u"") {}
 
     Parser(StringPiece source)
-        : fSource(source), fTrie(kSerializedUnitExtrasStemTrie) {}
+        : fSource(source), fTrie(gSerializedUnitExtrasStemTrie) {}
 
     inline bool hasNext() const {
         return fIndex < fSource.length();
@@ -640,11 +647,11 @@
     } else if (posPower == 3) {
         output.append("cubic-", status);
     } else if (posPower < 10) {
-        output.append('p', status);
+        output.append("pow", status);
         output.append(posPower + '0', status);
         output.append('-', status);
     } else if (posPower <= 15) {
-        output.append("p1", status);
+        output.append("pow1", status);
         output.append('0' + (posPower % 10), status);
         output.append('-', status);
     } else {
@@ -666,7 +673,7 @@
         return;
     }
 
-    output.appendInvariantChars(gSimpleUnits[singleUnit.index], status);
+    output.append(singleUnit.getSimpleUnitID(), status);
 }
 
 /**
@@ -777,6 +784,17 @@
     return std::move(temp).build(status);
 }
 
+const char *SingleUnitImpl::getSimpleUnitID() const {
+    return gSimpleUnits[index];
+}
+
+MeasureUnitImpl::MeasureUnitImpl(const MeasureUnitImpl &other, UErrorCode &status) {
+    *this = other.copy(status);
+}
+
+MeasureUnitImpl::MeasureUnitImpl(const SingleUnitImpl &singleUnit, UErrorCode &status) {
+    this->append(singleUnit, status);
+}
 
 MeasureUnitImpl MeasureUnitImpl::forIdentifier(StringPiece identifier, UErrorCode& status) {
     return Parser::from(identifier, status).parse(status);
@@ -813,12 +831,26 @@
     return appendImpl(*this, singleUnit, status);
 }
 
+MaybeStackVector<MeasureUnitImpl> MeasureUnitImpl::extractIndividualUnits(UErrorCode &status) const {
+    MaybeStackVector<MeasureUnitImpl> result;
+
+    if (this->complexity != UMeasureUnitComplexity::UMEASURE_UNIT_MIXED) {
+        result.emplaceBackAndCheckErrorCode(status, *this, status);
+        return result;
+    }
+
+    for (int32_t i = 0; i < units.length(); i++) {
+        result.emplaceBackAndCheckErrorCode(status, *units[i], status);
+    }
+
+    return result;
+}
+
 MeasureUnit MeasureUnitImpl::build(UErrorCode& status) && {
     serialize(*this, status);
     return MeasureUnit(std::move(*this));
 }
 
-
 MeasureUnit MeasureUnit::forIdentifier(StringPiece identifier, UErrorCode& status) {
     return Parser::from(identifier, status).parse(status).build(status);
 }
@@ -876,11 +908,15 @@
     return std::move(impl).build(status);
 }
 
-LocalArray<MeasureUnit> MeasureUnit::splitToSingleUnits(int32_t& outCount, UErrorCode& status) const {
+LocalArray<MeasureUnit> MeasureUnit::splitToSingleUnitsImpl(int32_t& outCount, UErrorCode& status) const {
     MeasureUnitImpl temp;
     const MeasureUnitImpl& impl = MeasureUnitImpl::forMeasureUnit(*this, temp, status);
     outCount = impl.units.length();
     MeasureUnit* arr = new MeasureUnit[outCount];
+    if (arr == nullptr) {
+        status = U_MEMORY_ALLOCATION_ERROR;
+        return LocalArray<MeasureUnit>();
+    }
     for (int32_t i = 0; i < outCount; i++) {
         arr[i] = impl.units[i]->build(status);
     }
diff --git a/icu4c/source/i18n/measunit_impl.h b/icu4c/source/i18n/measunit_impl.h
index c69d243..3cc2cd0 100644
--- a/icu4c/source/i18n/measunit_impl.h
+++ b/icu4c/source/i18n/measunit_impl.h
@@ -22,7 +22,7 @@
 /**
  * A struct representing a single unit (optional SI prefix and dimensionality).
  */
-struct SingleUnitImpl : public UMemory {
+struct U_I18N_API SingleUnitImpl : public UMemory {
     /**
      * Gets a single unit from the MeasureUnit. If there are multiple single units, sets an error
      * code and returns the base dimensionless unit. Parses if necessary.
@@ -33,6 +33,16 @@
     MeasureUnit build(UErrorCode& status) const;
 
     /**
+     * Returns the "simple unit ID", without SI or dimensionality prefix: this
+     * instance may represent a square-kilometer, but only "meter" will be
+     * returned.
+     *
+     * The returned pointer points at memory that exists for the duration of the
+     * program's running.
+     */
+    const char *getSimpleUnitID() const;
+
+    /**
      * Compare this SingleUnitImpl to another SingleUnitImpl for the sake of
      * sorting and coalescing.
      *
@@ -110,12 +120,27 @@
     int32_t dimensionality = 1;
 };
 
+// Export explicit template instantiations of MaybeStackArray, MemoryPool and
+// MaybeStackVector. This is required when building DLLs for Windows. (See
+// datefmt.h, collationiterator.h, erarules.h and others for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API MaybeStackArray<SingleUnitImpl*, 8>;
+template class U_I18N_API MemoryPool<SingleUnitImpl, 8>;
+template class U_I18N_API MaybeStackVector<SingleUnitImpl, 8>;
+#endif
 
 /**
  * Internal representation of measurement units. Capable of representing all complexities of units,
  * including mixed and compound units.
  */
-struct MeasureUnitImpl : public UMemory {
+struct U_I18N_API MeasureUnitImpl : public UMemory {
+    MeasureUnitImpl() = default;
+    MeasureUnitImpl(MeasureUnitImpl &&other) = default;
+    MeasureUnitImpl(const MeasureUnitImpl &other, UErrorCode &status);
+    MeasureUnitImpl(const SingleUnitImpl &singleUnit, UErrorCode &status);
+
+    MeasureUnitImpl &operator=(MeasureUnitImpl &&other) noexcept = default;
+
     /** Extract the MeasureUnitImpl from a MeasureUnit. */
     static inline const MeasureUnitImpl* get(const MeasureUnit& measureUnit) {
         return measureUnit.fImpl;
@@ -169,13 +194,17 @@
     /**
      * Create a copy of this MeasureUnitImpl. Don't use copy constructor to make this explicit.
      */
-    inline MeasureUnitImpl copy(UErrorCode& status) const {
-        MeasureUnitImpl result;
-        result.complexity = complexity;
-        result.units.appendAll(units, status);
-        result.identifier.append(identifier, status);
-        return result;
-    }
+    MeasureUnitImpl copy(UErrorCode& status) const;
+
+    /**
+     * Extracts the list of all the individual units inside the `MeasureUnitImpl`.
+     *      For example:    
+     *          -   if the `MeasureUnitImpl` is `foot-per-hour`
+     *                  it will return a list of 1 {`foot-per-hour`} 
+     *          -   if the `MeasureUnitImpl` is `foot-and-inch` 
+     *                  it will return a list of 2 { `foot`, `inch`}
+     */
+    MaybeStackVector<MeasureUnitImpl> extractIndividualUnits(UErrorCode &status) const;
 
     /** Mutates this MeasureUnitImpl to take the reciprocal. */
     void takeReciprocal(UErrorCode& status);
@@ -206,7 +235,6 @@
     CharString identifier;
 };
 
-
 U_NAMESPACE_END
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/measure.cpp b/icu4c/source/i18n/measure.cpp
index bffa442..23adba1 100644
--- a/icu4c/source/i18n/measure.cpp
+++ b/icu4c/source/i18n/measure.cpp
@@ -23,7 +23,7 @@
 
 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(Measure)
 
-Measure::Measure() {}
+Measure::Measure() : unit(nullptr) {}
 
 Measure::Measure(const Formattable& _number, MeasureUnit* adoptedUnit,
                  UErrorCode& ec) :
@@ -35,7 +35,7 @@
 }
 
 Measure::Measure(const Measure& other) :
-    UObject(other), unit(0) {
+    UObject(other), unit(nullptr) {
     *this = other;
 }
 
@@ -43,7 +43,11 @@
     if (this != &other) {
         delete unit;
         number = other.number;
-        unit = other.unit->clone();
+        if (other.unit != nullptr) {
+            unit = other.unit->clone();
+        } else {
+            unit = nullptr;
+        }
     }
     return *this;
 }
diff --git a/icu4c/source/i18n/nfrs.cpp b/icu4c/source/i18n/nfrs.cpp
index e7b17b4..1510d88 100644
--- a/icu4c/source/i18n/nfrs.cpp
+++ b/icu4c/source/i18n/nfrs.cpp
@@ -37,7 +37,7 @@
     /** 0.x */
     PROPER_FRACTION_RULE_INDEX = 2,
     /** x.0 */
-    MASTER_RULE_INDEX = 3,
+    DEFAULT_RULE_INDEX = 3,
     /** Inf */
     INFINITY_RULE_INDEX = 4,
     /** NaN */
@@ -278,8 +278,8 @@
     else if (baseValue == NFRule::kProperFractionRule) {
         setBestFractionRule(PROPER_FRACTION_RULE_INDEX, rule, TRUE);
     }
-    else if (baseValue == NFRule::kMasterRule) {
-        setBestFractionRule(MASTER_RULE_INDEX, rule, TRUE);
+    else if (baseValue == NFRule::kDefaultRule) {
+        setBestFractionRule(DEFAULT_RULE_INDEX, rule, TRUE);
     }
     else if (baseValue == NFRule::kInfinityRule) {
         delete nonNumericalRules[INFINITY_RULE_INDEX];
@@ -323,7 +323,7 @@
     for (int i = 0; i < NON_NUMERICAL_RULE_LENGTH; i++) {
         if (i != IMPROPER_FRACTION_RULE_INDEX
             && i != PROPER_FRACTION_RULE_INDEX
-            && i != MASTER_RULE_INDEX)
+            && i != DEFAULT_RULE_INDEX)
         {
             delete nonNumericalRules[i];
         }
@@ -375,7 +375,7 @@
         rules[i]->setDecimalFormatSymbols(newSymbols, status);
     }
     // Switch the fraction rules to mirror the DecimalFormatSymbols.
-    for (int32_t nonNumericalIdx = IMPROPER_FRACTION_RULE_INDEX; nonNumericalIdx <= MASTER_RULE_INDEX; nonNumericalIdx++) {
+    for (int32_t nonNumericalIdx = IMPROPER_FRACTION_RULE_INDEX; nonNumericalIdx <= DEFAULT_RULE_INDEX; nonNumericalIdx++) {
         if (nonNumericalRules[nonNumericalIdx]) {
             for (uint32_t fIdx = 0; fIdx < fractionRules.size(); fIdx++) {
                 NFRule *fractionRule = fractionRules[fIdx];
@@ -472,9 +472,9 @@
         }
     }
 
-    // if there's a master rule, use it to format the number
-    if (nonNumericalRules[MASTER_RULE_INDEX]) {
-        return nonNumericalRules[MASTER_RULE_INDEX];
+    // if there's a default rule, use it to format the number
+    if (nonNumericalRules[DEFAULT_RULE_INDEX]) {
+        return nonNumericalRules[DEFAULT_RULE_INDEX];
     }
 
     // and if we haven't yet returned a rule, use findNormalRule()
@@ -507,13 +507,13 @@
     // do them in findRule(), because the version of format() that
     // takes a long bypasses findRule() and goes straight to this
     // function.  This function does skip the fraction rules since
-    // we know the value is an integer (it also skips the master
+    // we know the value is an integer (it also skips the default
     // rule, since it's considered a fraction rule.  Skipping the
-    // master rule in this function is also how we avoid infinite
+    // default rule in this function is also how we avoid infinite
     // recursion)
 
     // {dlf} unfortunately this fails if there are no rules except
-    // special rules.  If there are no rules, use the master rule.
+    // special rules.  If there are no rules, use the default rule.
 
     // binary-search the rule list for the applicable rule
     // (a rule is used for all values from its base value to
@@ -553,8 +553,8 @@
         }
         return result;
     }
-    // else use the master rule
-    return nonNumericalRules[MASTER_RULE_INDEX];
+    // else use the default rule
+    return nonNumericalRules[DEFAULT_RULE_INDEX];
 }
 
 /**
@@ -792,7 +792,7 @@
         if (nonNumericalRules[i]) {
             if (rule->getBaseValue() == NFRule::kImproperFractionRule
                 || rule->getBaseValue() == NFRule::kProperFractionRule
-                || rule->getBaseValue() == NFRule::kMasterRule)
+                || rule->getBaseValue() == NFRule::kDefaultRule)
             {
                 for (uint32_t fIdx = 0; fIdx < fractionRules.size(); fIdx++) {
                     NFRule *fractionRule = fractionRules[fIdx];
diff --git a/icu4c/source/i18n/nfrs.h b/icu4c/source/i18n/nfrs.h
index db03c90..3232ab2 100644
--- a/icu4c/source/i18n/nfrs.h
+++ b/icu4c/source/i18n/nfrs.h
@@ -36,7 +36,7 @@
     void parseRules(UnicodeString& rules, UErrorCode& status);
     void setNonNumericalRule(NFRule *rule);
     void setBestFractionRule(int32_t originalIndex, NFRule *newRule, UBool rememberRule);
-    void makeIntoFractionRuleSet() { fIsFractionRuleSet = TRUE; }
+    void makeIntoFractionRuleSet() { fIsFractionRuleSet = true; }
 
     ~NFRuleSet();
 
@@ -93,11 +93,11 @@
 uint64_t util64_pow(uint32_t radix, uint16_t exponent);
 
 // convert n to digit string in buffer, return length of string
-uint32_t util64_tou(int64_t n, UChar* buffer, uint32_t buflen, uint32_t radix = 10, UBool raw = FALSE);
+uint32_t util64_tou(int64_t n, UChar* buffer, uint32_t buflen, uint32_t radix = 10, UBool raw = false);
 
 #ifdef RBNF_DEBUG
 int64_t util64_utoi(const UChar* str, uint32_t radix = 10);
-uint32_t util64_toa(int64_t n, char* buffer, uint32_t buflen, uint32_t radix = 10, UBool raw = FALSE);
+uint32_t util64_toa(int64_t n, char* buffer, uint32_t buflen, uint32_t radix = 10, UBool raw = false);
 int64_t util64_atoi(const char* str, uint32_t radix);
 #endif
 
diff --git a/icu4c/source/i18n/nfrule.cpp b/icu4c/source/i18n/nfrule.cpp
index 3ad0291..a9b84ed 100644
--- a/icu4c/source/i18n/nfrule.cpp
+++ b/icu4c/source/i18n/nfrule.cpp
@@ -153,7 +153,7 @@
         if ((rule1->baseValue > 0
             && (rule1->baseValue % util64_pow(rule1->radix, rule1->exponent)) == 0)
             || rule1->getType() == kImproperFractionRule
-            || rule1->getType() == kMasterRule) {
+            || rule1->getType() == kDefaultRule) {
 
             // if it passes that test, new up the second rule.  If the
             // rule set both rules will belong to is a fraction rule
@@ -181,9 +181,9 @@
             }
 
             // if the description began with "x.0" and contains bracketed
-            // text, it describes both the master rule and the
+            // text, it describes both the default rule and the
             // improper fraction rule
-            else if (rule1->getType() == kMasterRule) {
+            else if (rule1->getType() == kDefaultRule) {
                 rule2->baseValue = rule1->baseValue;
                 rule1->setType(kImproperFractionRule);
             }
@@ -376,7 +376,7 @@
                 decimalPoint = descriptor.charAt(1);
             }
             else if (firstChar == gX && lastChar == gZero) {
-                setBaseValue(kMasterRule, status);
+                setBaseValue(kDefaultRule, status);
                 decimalPoint = descriptor.charAt(1);
             }
             else if (descriptor.compare(gNaN, 3) == 0) {
@@ -663,7 +663,7 @@
     case kNegativeNumberRule: result.append(gMinusX, 2); break;
     case kImproperFractionRule: result.append(gX).append(decimalPoint == 0 ? gDot : decimalPoint).append(gX); break;
     case kProperFractionRule: result.append(gZero).append(decimalPoint == 0 ? gDot : decimalPoint).append(gX); break;
-    case kMasterRule: result.append(gX).append(decimalPoint == 0 ? gDot : decimalPoint).append(gZero); break;
+    case kDefaultRule: result.append(gX).append(decimalPoint == 0 ? gDot : decimalPoint).append(gZero); break;
     case kInfinityRule: result.append(gInf, 3); break;
     case kNaNRule: result.append(gNaN, 3); break;
     default:
@@ -1297,6 +1297,10 @@
 #if !UCONFIG_NO_COLLATION
     // go through all this grief if we're in lenient-parse mode
     if (formatter->isLenient()) {
+        // Check if non-lenient rule finds the text before call lenient parsing
+        if (str.startsWith(prefix)) {
+            return prefix.length();
+        }
         // get the formatter's collator and use it to create two
         // collation element iterators, one over the target string
         // and another over the prefix (right now, we'll throw an
@@ -1505,9 +1509,15 @@
         return str.indexOf(key, startingAt);
     }
     else {
-        // but if lenient parsing is turned ON, we've got some work
-        // ahead of us
-        return findTextLenient(str, key, startingAt, length);
+        // Check if non-lenient rule finds the text before call lenient parsing
+        *length = key.length();
+        int32_t pos = str.indexOf(key, startingAt);
+        if(pos >= 0) {
+            return pos;
+        } else {
+            // but if lenient parsing is turned ON, we've got some work ahead of us
+            return findTextLenient(str, key, startingAt, length);
+        }
     }
 }
 
diff --git a/icu4c/source/i18n/nfrule.h b/icu4c/source/i18n/nfrule.h
index ed33eaa..989fbaa 100644
--- a/icu4c/source/i18n/nfrule.h
+++ b/icu4c/source/i18n/nfrule.h
@@ -38,7 +38,7 @@
         kNegativeNumberRule = -1,
         kImproperFractionRule = -2,
         kProperFractionRule = -3,
-        kMasterRule = -4,
+        kDefaultRule = -4,
         kInfinityRule = -5,
         kNaNRule = -6,
         kOtherRule = -7
diff --git a/icu4c/source/i18n/nfsubs.cpp b/icu4c/source/i18n/nfsubs.cpp
index 208543d..e3d1fc1 100644
--- a/icu4c/source/i18n/nfsubs.cpp
+++ b/icu4c/source/i18n/nfsubs.cpp
@@ -342,7 +342,7 @@
         // IntegralPartSubstitution
         else if (rule->getBaseValue() == NFRule::kImproperFractionRule
             || rule->getBaseValue() == NFRule::kProperFractionRule
-            || rule->getBaseValue() == NFRule::kMasterRule) {
+            || rule->getBaseValue() == NFRule::kDefaultRule) {
             return new IntegralPartSubstitution(pos, ruleSet, description, status);
         }
 
@@ -371,7 +371,7 @@
         // FractionalPartSubstitution
         else if (rule->getBaseValue() == NFRule::kImproperFractionRule
             || rule->getBaseValue() == NFRule::kProperFractionRule
-            || rule->getBaseValue() == NFRule::kMasterRule) {
+            || rule->getBaseValue() == NFRule::kDefaultRule) {
             return new FractionalPartSubstitution(pos, ruleSet, description, status);
         }
 
diff --git a/icu4c/source/i18n/nounit.cpp b/icu4c/source/i18n/nounit.cpp
deleted file mode 100644
index 1d4aa05..0000000
--- a/icu4c/source/i18n/nounit.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-
-#include "unicode/nounit.h"
-#include "uassert.h"
-
-#if !UCONFIG_NO_FORMATTING
-
-U_NAMESPACE_BEGIN
-
-UOBJECT_DEFINE_RTTI_IMPLEMENTATION(NoUnit)
-
-NoUnit U_EXPORT2 NoUnit::base() {
-    return NoUnit("");
-}
-
-NoUnit U_EXPORT2 NoUnit::percent() {
-    return NoUnit("percent");
-}
-
-NoUnit U_EXPORT2 NoUnit::permille() {
-    return NoUnit("permille");
-}
-
-NoUnit::NoUnit(const char* subtype) {
-    initNoUnit(subtype);
-}
-
-NoUnit::NoUnit(const NoUnit& other) : MeasureUnit(other) {
-}
-
-NoUnit* NoUnit::clone() const {
-    return new NoUnit(*this);
-}
-
-NoUnit::~NoUnit() {
-}
-
-
-U_NAMESPACE_END
-
-#endif
diff --git a/icu4c/source/i18n/number_asformat.h b/icu4c/source/i18n/number_asformat.h
index 7b0a1de..3a2fe31 100644
--- a/icu4c/source/i18n/number_asformat.h
+++ b/icu4c/source/i18n/number_asformat.h
@@ -25,7 +25,6 @@
  * A wrapper around LocalizedNumberFormatter implementing the Format interface, enabling improved
  * compatibility with other APIs.
  *
- * @draft ICU 62
  * @see NumberFormatter
  */
 class U_I18N_API LocalizedNumberFormatterAsFormat : public Format {
diff --git a/icu4c/source/i18n/number_capi.cpp b/icu4c/source/i18n/number_capi.cpp
index 21a600d..4cb5625 100644
--- a/icu4c/source/i18n/number_capi.cpp
+++ b/icu4c/source/i18n/number_capi.cpp
@@ -13,6 +13,7 @@
 #include "number_utypes.h"
 #include "numparse_types.h"
 #include "formattedval_impl.h"
+#include "number_decnum.h"
 #include "unicode/numberformatter.h"
 #include "unicode/unumberformatter.h"
 
@@ -196,6 +197,23 @@
     result->fData.getAllFieldPositions(fpih, *ec);
 }
 
+U_CAPI int32_t U_EXPORT2
+unumf_resultToDecimalNumber(
+        const UFormattedNumber* uresult,
+        char* dest,
+        int32_t destCapacity,
+        UErrorCode* ec) {
+    const auto* result = UFormattedNumberApiHelper::validate(uresult, *ec);
+    if (U_FAILURE(*ec)) {
+        return 0;
+    }
+    DecNum decnum;
+    return result->fData.quantity
+        .toDecNum(decnum, *ec)
+        .toCharString(*ec)
+        .extract(dest, destCapacity, *ec);
+}
+
 U_CAPI void U_EXPORT2
 unumf_close(UNumberFormatter* f) {
     UErrorCode localStatus = U_ZERO_ERROR;
diff --git a/icu4c/source/i18n/number_compact.cpp b/icu4c/source/i18n/number_compact.cpp
index e1fef8f..d781b6f 100644
--- a/icu4c/source/i18n/number_compact.cpp
+++ b/icu4c/source/i18n/number_compact.cpp
@@ -167,6 +167,11 @@
         if (U_FAILURE(status)) { return; }
         for (int i4 = 0; pluralVariantsTable.getKeyAndValue(i4, key, value); ++i4) {
 
+            if (uprv_strcmp(key, "0") == 0 || uprv_strcmp(key, "1") == 0) {
+                // TODO(ICU-21258): Handle this case. For now, skip.
+                continue;
+            }
+
             // Skip this magnitude/plural if we already have it from a child locale.
             // Note: This also skips USE_FALLBACK entries.
             StandardPlural::Form plural = StandardPlural::fromString(key, status);
diff --git a/icu4c/source/i18n/number_currencysymbols.cpp b/icu4c/source/i18n/number_currencysymbols.cpp
index 4d6fb2c..9208427 100644
--- a/icu4c/source/i18n/number_currencysymbols.cpp
+++ b/icu4c/source/i18n/number_currencysymbols.cpp
@@ -44,6 +44,16 @@
     return loadSymbol(UCURR_NARROW_SYMBOL_NAME, status);
 }
 
+UnicodeString CurrencySymbols::getFormalCurrencySymbol(UErrorCode& status) const {
+    // Note: currently no override is available for formal currency symbol
+    return loadSymbol(UCURR_FORMAL_SYMBOL_NAME, status);
+}
+
+UnicodeString CurrencySymbols::getVariantCurrencySymbol(UErrorCode& status) const {
+    // Note: currently no override is available for variant currency symbol
+    return loadSymbol(UCURR_VARIANT_SYMBOL_NAME, status);
+}
+
 UnicodeString CurrencySymbols::getCurrencySymbol(UErrorCode& status) const {
     if (!fCurrencySymbol.isBogus()) {
         return fCurrencySymbol;
diff --git a/icu4c/source/i18n/number_currencysymbols.h b/icu4c/source/i18n/number_currencysymbols.h
index 9996bf9..7e38fdf 100644
--- a/icu4c/source/i18n/number_currencysymbols.h
+++ b/icu4c/source/i18n/number_currencysymbols.h
@@ -31,6 +31,10 @@
 
     UnicodeString getNarrowCurrencySymbol(UErrorCode& status) const;
 
+    UnicodeString getFormalCurrencySymbol(UErrorCode& status) const;
+
+    UnicodeString getVariantCurrencySymbol(UErrorCode& status) const;
+
     UnicodeString getCurrencySymbol(UErrorCode& status) const;
 
     UnicodeString getIntlCurrencySymbol(UErrorCode& status) const;
diff --git a/icu4c/source/i18n/number_decimalquantity.cpp b/icu4c/source/i18n/number_decimalquantity.cpp
index 482e93d..74547c1 100644
--- a/icu4c/source/i18n/number_decimalquantity.cpp
+++ b/icu4c/source/i18n/number_decimalquantity.cpp
@@ -20,6 +20,7 @@
 #include "charstr.h"
 #include "number_utils.h"
 #include "uassert.h"
+#include "util.h"
 
 using namespace icu;
 using namespace icu::number;
@@ -626,7 +627,7 @@
             &count);
 }
 
-void DecimalQuantity::toDecNum(DecNum& output, UErrorCode& status) const {
+DecNum& DecimalQuantity::toDecNum(DecNum& output, UErrorCode& status) const {
     // Special handling for zero
     if (precision == 0) {
         output.setTo("0", status);
@@ -634,11 +635,15 @@
 
     // Use the BCD constructor. We need to do a little bit of work to convert, though.
     // The decNumber constructor expects most-significant first, but we store least-significant first.
-    MaybeStackArray<uint8_t, 20> ubcd(precision);
+    MaybeStackArray<uint8_t, 20> ubcd(precision, status);
+    if (U_FAILURE(status)) {
+        return output;
+    }
     for (int32_t m = 0; m < precision; m++) {
         ubcd[precision - m - 1] = static_cast<uint8_t>(getDigitPos(m));
     }
     output.setTo(ubcd.getAlias(), precision, scale, isNegative(), status);
+    return output;
 }
 
 void DecimalQuantity::truncate() {
@@ -1004,13 +1009,8 @@
     }
     if (usingBytes) {
         ensureCapacity(precision + numDigits);
-        int i = precision + numDigits - 1;
-        for (; i >= numDigits; i--) {
-            fBCD.bcdBytes.ptr[i] = fBCD.bcdBytes.ptr[i - numDigits];
-        }
-        for (; i >= 0; i--) {
-            fBCD.bcdBytes.ptr[i] = 0;
-        }
+        uprv_memmove(fBCD.bcdBytes.ptr + numDigits, fBCD.bcdBytes.ptr, precision);
+        uprv_memset(fBCD.bcdBytes.ptr, 0, numDigits);
     } else {
         fBCD.bcdLong <<= (numDigits * 4);
     }
@@ -1324,7 +1324,11 @@
 }
 
 UnicodeString DecimalQuantity::toString() const {
-    MaybeStackArray<char, 30> digits(precision + 1);
+    UErrorCode localStatus = U_ZERO_ERROR;
+    MaybeStackArray<char, 30> digits(precision + 1, localStatus);
+    if (U_FAILURE(localStatus)) {
+        return ICU_Utility::makeBogusString();
+    }
     for (int32_t i = 0; i < precision; i++) {
         digits[i] = getDigitPos(precision - i - 1) + '0';
     }
diff --git a/icu4c/source/i18n/number_decimalquantity.h b/icu4c/source/i18n/number_decimalquantity.h
index d9b35c0..5ab680e 100644
--- a/icu4c/source/i18n/number_decimalquantity.h
+++ b/icu4c/source/i18n/number_decimalquantity.h
@@ -20,7 +20,7 @@
 class DecNum;
 
 /**
- * An class for representing a number to be processed by the decimal formatting pipeline. Includes
+ * A class for representing a number to be processed by the decimal formatting pipeline. Includes
  * methods for rounding, plural rules, and decimal digit extraction.
  *
  * <p>By design, this is NOT IMMUTABLE and NOT THREAD SAFE. It is intended to be an intermediate
@@ -209,7 +209,7 @@
     double toDouble() const;
 
     /** Computes a DecNum representation of this DecimalQuantity, saving it to the output parameter. */
-    void toDecNum(DecNum& output, UErrorCode& status) const;
+    DecNum& toDecNum(DecNum& output, UErrorCode& status) const;
 
     DecimalQuantity &setToInt(int32_t n);
 
@@ -217,7 +217,13 @@
 
     DecimalQuantity &setToDouble(double n);
 
-    /** decNumber is similar to BigDecimal in Java. */
+    /**
+     * Produces a DecimalQuantity that was parsed from a string by the decNumber
+     * C Library.
+     *
+     * decNumber is similar to BigDecimal in Java, and supports parsing strings
+     * such as "123.456621E+40".
+     */
     DecimalQuantity &setToDecNumber(StringPiece n, UErrorCode& status);
 
     /** Internal method if the caller already has a DecNum. */
diff --git a/icu4c/source/i18n/number_decnum.h b/icu4c/source/i18n/number_decnum.h
index 0c7399d..3bb8d10 100644
--- a/icu4c/source/i18n/number_decnum.h
+++ b/icu4c/source/i18n/number_decnum.h
@@ -9,6 +9,7 @@
 
 #include "decNumber.h"
 #include "charstr.h"
+#include "bytesinkutil.h"
 
 U_NAMESPACE_BEGIN
 
@@ -57,6 +58,13 @@
 
     void toString(ByteSink& output, UErrorCode& status) const;
 
+    inline CharString toCharString(UErrorCode& status) const {
+      CharString cstr;
+      CharStringByteSink sink(&cstr);
+      toString(sink, status);
+      return cstr;
+    }
+
     inline const decNumber* getRawDecNumber() const {
         return fData.getAlias();
     }
diff --git a/icu4c/source/i18n/number_fluent.cpp b/icu4c/source/i18n/number_fluent.cpp
index 9cdb8b7..8569a36 100644
--- a/icu4c/source/i18n/number_fluent.cpp
+++ b/icu4c/source/i18n/number_fluent.cpp
@@ -13,6 +13,7 @@
 #include "number_asformat.h"
 #include "number_utils.h"
 #include "number_utypes.h"
+#include "number_mapper.h"
 #include "util.h"
 #include "fphdlimp.h"
 
@@ -274,6 +275,20 @@
 }
 
 template<typename Derived>
+Derived NumberFormatterSettings<Derived>::usage(const StringPiece usage) const& {
+    Derived copy(*this);
+    copy.fMacros.usage.set(usage);
+    return copy;
+}
+
+template<typename Derived>
+Derived NumberFormatterSettings<Derived>::usage(const StringPiece usage)&& {
+    Derived move(std::move(*this));
+    move.fMacros.usage.set(usage);
+    return move;
+}
+
+template<typename Derived>
 Derived NumberFormatterSettings<Derived>::padding(const Padder& padder) const& {
     Derived copy(*this);
     copy.fMacros.padder = padder;
@@ -400,7 +415,8 @@
 
 LocalizedNumberFormatter::LocalizedNumberFormatter(const NFS<LNF>& other)
         : NFS<LNF>(other) {
-    // No additional fields to assign (let call count and compiled formatter reset to defaults)
+    UErrorCode localStatus = U_ZERO_ERROR; // Can't bubble up the error
+    lnfCopyHelper(static_cast<const LNF&>(other), localStatus);
 }
 
 LocalizedNumberFormatter::LocalizedNumberFormatter(LocalizedNumberFormatter&& src) U_NOEXCEPT
@@ -408,38 +424,25 @@
 
 LocalizedNumberFormatter::LocalizedNumberFormatter(NFS<LNF>&& src) U_NOEXCEPT
         : NFS<LNF>(std::move(src)) {
-    // For the move operators, copy over the compiled formatter.
-    // Note: if the formatter is not compiled, call count information is lost.
-    if (static_cast<LNF&&>(src).fCompiled != nullptr) {
-        lnfMoveHelper(static_cast<LNF&&>(src));
-    }
+    lnfMoveHelper(std::move(static_cast<LNF&&>(src)));
 }
 
 LocalizedNumberFormatter& LocalizedNumberFormatter::operator=(const LNF& other) {
     NFS<LNF>::operator=(static_cast<const NFS<LNF>&>(other));
-    // Reset to default values.
-    clear();
+    UErrorCode localStatus = U_ZERO_ERROR; // Can't bubble up the error
+    lnfCopyHelper(other, localStatus);
     return *this;
 }
 
 LocalizedNumberFormatter& LocalizedNumberFormatter::operator=(LNF&& src) U_NOEXCEPT {
     NFS<LNF>::operator=(static_cast<NFS<LNF>&&>(src));
-    // For the move operators, copy over the compiled formatter.
-    // Note: if the formatter is not compiled, call count information is lost.
-    if (static_cast<LNF&&>(src).fCompiled != nullptr) {
-        // Formatter is compiled
-        lnfMoveHelper(static_cast<LNF&&>(src));
-    } else {
-        clear();
-    }
+    lnfMoveHelper(std::move(src));
     return *this;
 }
 
-void LocalizedNumberFormatter::clear() {
-    // Reset to default values.
+void LocalizedNumberFormatter::resetCompiled() {
     auto* callCount = reinterpret_cast<u_atomic_int32_t*>(fUnsafeCallCount);
     umtx_storeRelease(*callCount, 0);
-    delete fCompiled;
     fCompiled = nullptr;
 }
 
@@ -447,19 +450,56 @@
     // Copy over the compiled formatter and set call count to INT32_MIN as in computeCompiled().
     // Don't copy the call count directly because doing so requires a loadAcquire/storeRelease.
     // The bits themselves appear to be platform-dependent, so copying them might not be safe.
-    auto* callCount = reinterpret_cast<u_atomic_int32_t*>(fUnsafeCallCount);
-    umtx_storeRelease(*callCount, INT32_MIN);
     delete fCompiled;
-    fCompiled = src.fCompiled;
-    // Reset the source object to leave it in a safe state.
-    auto* srcCallCount = reinterpret_cast<u_atomic_int32_t*>(src.fUnsafeCallCount);
-    umtx_storeRelease(*srcCallCount, 0);
-    src.fCompiled = nullptr;
+    if (src.fCompiled != nullptr) {
+        auto* callCount = reinterpret_cast<u_atomic_int32_t*>(fUnsafeCallCount);
+        umtx_storeRelease(*callCount, INT32_MIN);
+        fCompiled = src.fCompiled;
+        // Reset the source object to leave it in a safe state.
+        src.resetCompiled();
+    } else {
+        resetCompiled();
+    }
+
+    // Unconditionally move the warehouse
+    delete fWarehouse;
+    fWarehouse = src.fWarehouse;
+    src.fWarehouse = nullptr;
+}
+
+void LocalizedNumberFormatter::lnfCopyHelper(const LNF&, UErrorCode& status) {
+    // When copying, always reset the compiled formatter.
+    delete fCompiled;
+    resetCompiled();
+
+    // If MacroProps has a reference to AffixPatternProvider, we need to copy it.
+    // If MacroProps has a reference to PluralRules, copy that one, too.
+    delete fWarehouse;
+    if (fMacros.affixProvider || fMacros.rules) {
+        LocalPointer<DecimalFormatWarehouse> warehouse(new DecimalFormatWarehouse(), status);
+        if (U_FAILURE(status)) {
+            fWarehouse = nullptr;
+            return;
+        }
+        if (fMacros.affixProvider) {
+            warehouse->affixProvider.setTo(fMacros.affixProvider, status);
+            fMacros.affixProvider = &warehouse->affixProvider.get();
+        }
+        if (fMacros.rules) {
+            warehouse->rules.adoptInsteadAndCheckErrorCode(
+                new PluralRules(*fMacros.rules), status);
+            fMacros.rules = warehouse->rules.getAlias();
+        }
+        fWarehouse = warehouse.orphan();
+    } else {
+        fWarehouse = nullptr;
+    }
 }
 
 
 LocalizedNumberFormatter::~LocalizedNumberFormatter() {
     delete fCompiled;
+    delete fWarehouse;
 }
 
 LocalizedNumberFormatter::LocalizedNumberFormatter(const MacroProps& macros, const Locale& locale) {
@@ -480,123 +520,6 @@
     return LocalizedNumberFormatter(std::move(fMacros), locale);
 }
 
-SymbolsWrapper::SymbolsWrapper(const SymbolsWrapper& other) {
-    doCopyFrom(other);
-}
-
-SymbolsWrapper::SymbolsWrapper(SymbolsWrapper&& src) U_NOEXCEPT {
-    doMoveFrom(std::move(src));
-}
-
-SymbolsWrapper& SymbolsWrapper::operator=(const SymbolsWrapper& other) {
-    if (this == &other) {
-        return *this;
-    }
-    doCleanup();
-    doCopyFrom(other);
-    return *this;
-}
-
-SymbolsWrapper& SymbolsWrapper::operator=(SymbolsWrapper&& src) U_NOEXCEPT {
-    if (this == &src) {
-        return *this;
-    }
-    doCleanup();
-    doMoveFrom(std::move(src));
-    return *this;
-}
-
-SymbolsWrapper::~SymbolsWrapper() {
-    doCleanup();
-}
-
-void SymbolsWrapper::setTo(const DecimalFormatSymbols& dfs) {
-    doCleanup();
-    fType = SYMPTR_DFS;
-    fPtr.dfs = new DecimalFormatSymbols(dfs);
-}
-
-void SymbolsWrapper::setTo(const NumberingSystem* ns) {
-    doCleanup();
-    fType = SYMPTR_NS;
-    fPtr.ns = ns;
-}
-
-void SymbolsWrapper::doCopyFrom(const SymbolsWrapper& other) {
-    fType = other.fType;
-    switch (fType) {
-        case SYMPTR_NONE:
-            // No action necessary
-            break;
-        case SYMPTR_DFS:
-            // Memory allocation failures are exposed in copyErrorTo()
-            if (other.fPtr.dfs != nullptr) {
-                fPtr.dfs = new DecimalFormatSymbols(*other.fPtr.dfs);
-            } else {
-                fPtr.dfs = nullptr;
-            }
-            break;
-        case SYMPTR_NS:
-            // Memory allocation failures are exposed in copyErrorTo()
-            if (other.fPtr.ns != nullptr) {
-                fPtr.ns = new NumberingSystem(*other.fPtr.ns);
-            } else {
-                fPtr.ns = nullptr;
-            }
-            break;
-    }
-}
-
-void SymbolsWrapper::doMoveFrom(SymbolsWrapper&& src) {
-    fType = src.fType;
-    switch (fType) {
-        case SYMPTR_NONE:
-            // No action necessary
-            break;
-        case SYMPTR_DFS:
-            fPtr.dfs = src.fPtr.dfs;
-            src.fPtr.dfs = nullptr;
-            break;
-        case SYMPTR_NS:
-            fPtr.ns = src.fPtr.ns;
-            src.fPtr.ns = nullptr;
-            break;
-    }
-}
-
-void SymbolsWrapper::doCleanup() {
-    switch (fType) {
-        case SYMPTR_NONE:
-            // No action necessary
-            break;
-        case SYMPTR_DFS:
-            delete fPtr.dfs;
-            break;
-        case SYMPTR_NS:
-            delete fPtr.ns;
-            break;
-    }
-}
-
-bool SymbolsWrapper::isDecimalFormatSymbols() const {
-    return fType == SYMPTR_DFS;
-}
-
-bool SymbolsWrapper::isNumberingSystem() const {
-    return fType == SYMPTR_NS;
-}
-
-const DecimalFormatSymbols* SymbolsWrapper::getDecimalFormatSymbols() const {
-    U_ASSERT(fType == SYMPTR_DFS);
-    return fPtr.dfs;
-}
-
-const NumberingSystem* SymbolsWrapper::getNumberingSystem() const {
-    U_ASSERT(fType == SYMPTR_NS);
-    return fPtr.ns;
-}
-
-
 FormattedNumber LocalizedNumberFormatter::formatInt(int64_t value, UErrorCode& status) const {
     if (U_FAILURE(status)) { return FormattedNumber(U_ILLEGAL_ARGUMENT_ERROR); }
     auto results = new UFormattedNumberData();
@@ -676,9 +599,9 @@
 
 void LocalizedNumberFormatter::formatImpl(impl::UFormattedNumberData* results, UErrorCode& status) const {
     if (computeCompiled(status)) {
-        fCompiled->format(results->quantity, results->getStringRef(), status);
+        fCompiled->format(results, status);
     } else {
-        NumberFormatterImpl::formatStatic(fMacros, results->quantity, results->getStringRef(), status);
+        NumberFormatterImpl::formatStatic(fMacros, results, status);
     }
     if (U_FAILURE(status)) {
         return;
diff --git a/icu4c/source/i18n/number_formatimpl.cpp b/icu4c/source/i18n/number_formatimpl.cpp
index 5bba09c..9a9f3c8 100644
--- a/icu4c/source/i18n/number_formatimpl.cpp
+++ b/icu4c/source/i18n/number_formatimpl.cpp
@@ -25,20 +25,20 @@
 using namespace icu::number::impl;
 
 
-MicroPropsGenerator::~MicroPropsGenerator() = default;
-
-
 NumberFormatterImpl::NumberFormatterImpl(const MacroProps& macros, UErrorCode& status)
     : NumberFormatterImpl(macros, true, status) {
 }
 
-int32_t NumberFormatterImpl::formatStatic(const MacroProps& macros, DecimalQuantity& inValue,
-                                       FormattedStringBuilder& outString, UErrorCode& status) {
+int32_t NumberFormatterImpl::formatStatic(const MacroProps &macros, UFormattedNumberData *results,
+                                          UErrorCode &status) {
+    DecimalQuantity &inValue = results->quantity;
+    FormattedStringBuilder &outString = results->getStringRef();
     NumberFormatterImpl impl(macros, false, status);
     MicroProps& micros = impl.preProcessUnsafe(inValue, status);
     if (U_FAILURE(status)) { return 0; }
     int32_t length = writeNumber(micros, inValue, outString, 0, status);
     length += writeAffixes(micros, outString, 0, length, status);
+    results->outputUnit = std::move(micros.outputUnit);
     return length;
 }
 
@@ -54,13 +54,15 @@
 // The "unsafe" method simply re-uses fMicros, eliminating the extra copy operation.
 // See MicroProps::processQuantity() for details.
 
-int32_t NumberFormatterImpl::format(DecimalQuantity& inValue, FormattedStringBuilder& outString,
-                                UErrorCode& status) const {
+int32_t NumberFormatterImpl::format(UFormattedNumberData *results, UErrorCode &status) const {
+    DecimalQuantity &inValue = results->quantity;
+    FormattedStringBuilder &outString = results->getStringRef();
     MicroProps micros;
     preProcess(inValue, micros, status);
     if (U_FAILURE(status)) { return 0; }
     int32_t length = writeNumber(micros, inValue, outString, 0, status);
     length += writeAffixes(micros, outString, 0, length, status);
+    results->outputUnit = std::move(micros.outputUnit);
     return length;
 }
 
@@ -130,9 +132,10 @@
 
     // Pre-compute a few values for efficiency.
     bool isCurrency = utils::unitIsCurrency(macros.unit);
-    bool isNoUnit = utils::unitIsNoUnit(macros.unit);
+    bool isBaseUnit = utils::unitIsBaseUnit(macros.unit);
     bool isPercent = utils::unitIsPercent(macros.unit);
     bool isPermille = utils::unitIsPermille(macros.unit);
+    bool isCompactNotation = macros.notation.fType == Notation::NTN_COMPACT;
     bool isAccounting =
             macros.sign == UNUM_SIGN_ACCOUNTING || macros.sign == UNUM_SIGN_ACCOUNTING_ALWAYS ||
             macros.sign == UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO;
@@ -144,8 +147,20 @@
     if (macros.unitWidth != UNUM_UNIT_WIDTH_COUNT) {
         unitWidth = macros.unitWidth;
     }
-    bool isCldrUnit = !isCurrency && !isNoUnit &&
-        (unitWidth == UNUM_UNIT_WIDTH_FULL_NAME || !(isPercent || isPermille));
+    // Use CLDR unit data for all MeasureUnits (not currency and not
+    // no-unit), except use the dedicated percent pattern for percent and
+    // permille. However, use the CLDR unit data for percent/permille if a
+    // long name was requested OR if compact notation is being used, since
+    // compact notation overrides the middle modifier (micros.modMiddle)
+    // normally used for the percent pattern.
+    bool isCldrUnit = !isCurrency
+        && !isBaseUnit
+        && (unitWidth == UNUM_UNIT_WIDTH_FULL_NAME
+            || !(isPercent || isPermille)
+            || isCompactNotation
+        );
+    bool isMixedUnit = isCldrUnit && (uprv_strcmp(macros.unit.getType(), "") == 0) &&
+                       macros.unit.getComplexity(status) == UMEASURE_UNIT_MIXED;
 
     // Select the numbering system.
     LocalPointer<const NumberingSystem> nsLocal;
@@ -222,6 +237,27 @@
     /// START POPULATING THE DEFAULT MICROPROPS AND BUILDING THE MICROPROPS GENERATOR ///
     /////////////////////////////////////////////////////////////////////////////////////
 
+    // Unit Preferences and Conversions as our first step
+    if (macros.usage.isSet()) {
+        if (!isCldrUnit) {
+            // We only support "usage" when the input unit is specified, and is
+            // a CLDR Unit.
+            status = U_ILLEGAL_ARGUMENT_ERROR;
+            return nullptr;
+        }
+        auto usagePrefsHandler =
+            new UsagePrefsHandler(macros.locale, macros.unit, macros.usage.fUsage, chain, status);
+        fUsagePrefsHandler.adoptInsteadAndCheckErrorCode(usagePrefsHandler, status);
+        chain = fUsagePrefsHandler.getAlias();
+    } else if (isMixedUnit) {
+        MeasureUnitImpl temp;
+        const MeasureUnitImpl &outputUnit = MeasureUnitImpl::forMeasureUnit(macros.unit, temp, status);
+        auto unitConversionHandler =
+            new UnitConversionHandler(outputUnit.units[0]->build(status), macros.unit, chain, status);
+        fUnitConversionHandler.adoptInsteadAndCheckErrorCode(unitConversionHandler, status);
+        chain = fUnitConversionHandler.getAlias();
+    }
+
     // Multiplier
     if (macros.scale.isValid()) {
         fMicros.helpers.multiplier.setAndChain(macros.scale, chain);
@@ -232,20 +268,18 @@
     Precision precision;
     if (!macros.precision.isBogus()) {
         precision = macros.precision;
-    } else if (macros.notation.fType == Notation::NTN_COMPACT) {
+    } else if (isCompactNotation) {
         precision = Precision::integer().withMinDigits(2);
     } else if (isCurrency) {
         precision = Precision::currency(UCURR_USAGE_STANDARD);
+    } else if (macros.usage.isSet()) {
+        // Bogus Precision - it will get set in the UsagePrefsHandler instead
+        precision = Precision();
     } else {
         precision = Precision::maxFraction(6);
     }
     UNumberFormatRoundingMode roundingMode;
-    if (macros.roundingMode != kDefaultMode) {
-        roundingMode = macros.roundingMode;
-    } else {
-        // Temporary until ICU 64
-        roundingMode = precision.fRoundingMode;
-    }
+    roundingMode = macros.roundingMode;
     fMicros.rounder = {precision, roundingMode, currency, status};
     if (U_FAILURE(status)) {
         return nullptr;
@@ -254,7 +288,7 @@
     // Grouping strategy
     if (!macros.grouper.isBogus()) {
         fMicros.grouping = macros.grouper;
-    } else if (macros.notation.fType == Notation::NTN_COMPACT) {
+    } else if (isCompactNotation) {
         // Compact notation uses minGrouping by default since ICU 59
         fMicros.grouping = Grouper::forStrategy(UNUM_GROUPING_MIN2);
     } else {
@@ -330,7 +364,8 @@
         patternModifier->setSymbols(fMicros.symbols, currency, unitWidth, nullptr, status);
     }
     if (safe) {
-        fImmutablePatternModifier.adoptInstead(patternModifier->createImmutable(status));
+        fImmutablePatternModifier.adoptInsteadAndCheckErrorCode(patternModifier->createImmutable(status),
+                                                                status);
     }
     if (U_FAILURE(status)) {
         return nullptr;
@@ -338,24 +373,34 @@
 
     // Outer modifier (CLDR units and currency long names)
     if (isCldrUnit) {
-        fLongNameHandler.adoptInstead(
-                LongNameHandler::forMeasureUnit(
-                        macros.locale,
-                        macros.unit,
-                        macros.perUnit,
-                        unitWidth,
-                        resolvePluralRules(macros.rules, macros.locale, status),
-                        chain,
-                        status));
-        chain = fLongNameHandler.getAlias();
+        if (macros.usage.isSet()) {
+            fLongNameMultiplexer.adoptInsteadAndCheckErrorCode(
+                LongNameMultiplexer::forMeasureUnits(
+                    macros.locale, *fUsagePrefsHandler->getOutputUnits(), unitWidth,
+                    resolvePluralRules(macros.rules, macros.locale, status), chain, status),
+                status);
+            chain = fLongNameMultiplexer.getAlias();
+        } else if (isMixedUnit) {
+            fMixedUnitLongNameHandler.adoptInsteadAndCheckErrorCode(new MixedUnitLongNameHandler(),
+                                                                    status);
+            MixedUnitLongNameHandler::forMeasureUnit(
+                macros.locale, macros.unit, unitWidth,
+                resolvePluralRules(macros.rules, macros.locale, status), chain,
+                fMixedUnitLongNameHandler.getAlias(), status);
+            chain = fMixedUnitLongNameHandler.getAlias();
+        } else {
+            fLongNameHandler.adoptInsteadAndCheckErrorCode(new LongNameHandler(), status);
+            LongNameHandler::forMeasureUnit(macros.locale, macros.unit, macros.perUnit, unitWidth,
+                                            resolvePluralRules(macros.rules, macros.locale, status),
+                                            chain, fLongNameHandler.getAlias(), status);
+            chain = fLongNameHandler.getAlias();
+        }
     } else if (isCurrency && unitWidth == UNUM_UNIT_WIDTH_FULL_NAME) {
-        fLongNameHandler.adoptInstead(
-                LongNameHandler::forCurrencyLongNames(
-                        macros.locale,
-                        currency,
-                        resolvePluralRules(macros.rules, macros.locale, status),
-                        chain,
-                        status));
+        fLongNameHandler.adoptInsteadAndCheckErrorCode(
+            LongNameHandler::forCurrencyLongNames(
+                macros.locale, currency, resolvePluralRules(macros.rules, macros.locale, status), chain,
+                status),
+            status);
         chain = fLongNameHandler.getAlias();
     } else {
         // No outer modifier required
@@ -366,7 +411,7 @@
     }
 
     // Compact notation
-    if (macros.notation.fType == Notation::NTN_COMPACT) {
+    if (isCompactNotation) {
         CompactType compactType = (isCurrency && unitWidth != UNUM_UNIT_WIDTH_FULL_NAME)
                                   ? CompactType::TYPE_CURRENCY : CompactType::TYPE_DECIMAL;
         auto newCompactHandler = new CompactHandler(
@@ -379,6 +424,9 @@
             safe,
             chain,
             status);
+        if (U_FAILURE(status)) {
+            return nullptr;
+        }
         if (newCompactHandler == nullptr) {
             status = U_MEMORY_ALLOCATION_ERROR;
             return nullptr;
@@ -417,6 +465,7 @@
 
 int32_t NumberFormatterImpl::writeAffixes(const MicroProps& micros, FormattedStringBuilder& string,
                                           int32_t start, int32_t end, UErrorCode& status) {
+    U_ASSERT(micros.modOuter != nullptr);
     // Always apply the inner modifier (which is "strong").
     int32_t length = micros.modInner->apply(string, start, end, status);
     if (micros.padding.isValid()) {
diff --git a/icu4c/source/i18n/number_formatimpl.h b/icu4c/source/i18n/number_formatimpl.h
index 084bc4a..5cd549e 100644
--- a/icu4c/source/i18n/number_formatimpl.h
+++ b/icu4c/source/i18n/number_formatimpl.h
@@ -10,11 +10,13 @@
 #include "number_types.h"
 #include "formatted_string_builder.h"
 #include "number_patternstring.h"
+#include "number_usageprefs.h"
 #include "number_utils.h"
 #include "number_patternmodifier.h"
 #include "number_longnames.h"
 #include "number_compact.h"
 #include "number_microprops.h"
+#include "number_utypes.h"
 
 U_NAMESPACE_BEGIN namespace number {
 namespace impl {
@@ -34,9 +36,8 @@
     /**
      * Builds and evaluates an "unsafe" MicroPropsGenerator, which is cheaper but can be used only once.
      */
-    static int32_t
-    formatStatic(const MacroProps &macros, DecimalQuantity &inValue, FormattedStringBuilder &outString,
-                 UErrorCode &status);
+    static int32_t formatStatic(const MacroProps &macros, UFormattedNumberData *results,
+                                UErrorCode &status);
 
     /**
      * Prints only the prefix and suffix; used for DecimalFormat getters.
@@ -51,7 +52,7 @@
     /**
      * Evaluates the "safe" MicroPropsGenerator created by "fromMacros".
      */
-    int32_t format(DecimalQuantity& inValue, FormattedStringBuilder& outString, UErrorCode& status) const;
+    int32_t format(UFormattedNumberData *results, UErrorCode &status) const;
 
     /**
      * Like format(), but saves the result into an output MicroProps without additional processing.
@@ -82,7 +83,9 @@
                                 int32_t end, UErrorCode& status);
 
   private:
-    // Head of the MicroPropsGenerator linked list:
+    // Head of the MicroPropsGenerator linked list. Subclasses' processQuantity
+    // methods process this list in a parent-first order, such that the last
+    // item added, which this points to, typically has its logic executed last.
     const MicroPropsGenerator *fMicroPropsGenerator = nullptr;
 
     // Tail of the list:
@@ -90,13 +93,20 @@
 
     // Other fields possibly used by the number formatting pipeline:
     // TODO: Convert more of these LocalPointers to value objects to reduce the number of news?
+    LocalPointer<const UsagePrefsHandler> fUsagePrefsHandler;
+    LocalPointer<const UnitConversionHandler> fUnitConversionHandler;
     LocalPointer<const DecimalFormatSymbols> fSymbols;
     LocalPointer<const PluralRules> fRules;
     LocalPointer<const ParsedPatternInfo> fPatternInfo;
     LocalPointer<const ScientificHandler> fScientificHandler;
     LocalPointer<MutablePatternModifier> fPatternModifier;
     LocalPointer<ImmutablePatternModifier> fImmutablePatternModifier;
-    LocalPointer<const LongNameHandler> fLongNameHandler;
+    LocalPointer<LongNameHandler> fLongNameHandler;
+    // TODO: use a common base class that enables fLongNameHandler,
+    // fLongNameMultiplexer, and fMixedUnitLongNameHandler to be merged into one
+    // member?
+    LocalPointer<MixedUnitLongNameHandler> fMixedUnitLongNameHandler;
+    LocalPointer<const LongNameMultiplexer> fLongNameMultiplexer;
     LocalPointer<const CompactHandler> fCompactHandler;
 
     // Value objects possibly used by the number formatting pipeline:
diff --git a/icu4c/source/i18n/number_grouping.cpp b/icu4c/source/i18n/number_grouping.cpp
index 41f727a..6b1642c 100644
--- a/icu4c/source/i18n/number_grouping.cpp
+++ b/icu4c/source/i18n/number_grouping.cpp
@@ -64,6 +64,13 @@
 }
 
 void Grouper::setLocaleData(const impl::ParsedPatternInfo &patternInfo, const Locale& locale) {
+    if (fMinGrouping == -2) {
+        fMinGrouping = getMinGroupingForLocale(locale);
+    } else if (fMinGrouping == -3) {
+        fMinGrouping = static_cast<int16_t>(uprv_max(2, getMinGroupingForLocale(locale)));
+    } else {
+        // leave fMinGrouping alone
+    }
     if (fGrouping1 != -2 && fGrouping2 != -4) {
         return;
     }
@@ -76,13 +83,6 @@
     if (grouping3 == -1) {
         grouping2 = grouping1;
     }
-    if (fMinGrouping == -2) {
-        fMinGrouping = getMinGroupingForLocale(locale);
-    } else if (fMinGrouping == -3) {
-        fMinGrouping = static_cast<int16_t>(uprv_max(2, getMinGroupingForLocale(locale)));
-    } else {
-        // leave fMinGrouping alone
-    }
     fGrouping1 = grouping1;
     fGrouping2 = grouping2;
 }
diff --git a/icu4c/source/i18n/number_integerwidth.cpp b/icu4c/source/i18n/number_integerwidth.cpp
index d62aef4..10b8534 100644
--- a/icu4c/source/i18n/number_integerwidth.cpp
+++ b/icu4c/source/i18n/number_integerwidth.cpp
@@ -40,6 +40,9 @@
 }
 
 void IntegerWidth::apply(impl::DecimalQuantity& quantity, UErrorCode& status) const {
+    if (U_FAILURE(status)) {
+        return;
+    }
     if (fHasError) {
         status = U_ILLEGAL_ARGUMENT_ERROR;
     } else if (fUnion.minMaxInt.fMaxInt == -1) {
diff --git a/icu4c/source/i18n/number_longnames.cpp b/icu4c/source/i18n/number_longnames.cpp
index bb32d03..3891d53 100644
--- a/icu4c/source/i18n/number_longnames.cpp
+++ b/icu4c/source/i18n/number_longnames.cpp
@@ -10,6 +10,7 @@
 #include "ureslocs.h"
 #include "charstr.h"
 #include "uresimp.h"
+#include "measunit_impl.h"
 #include "number_longnames.h"
 #include "number_microprops.h"
 #include <algorithm>
@@ -22,8 +23,23 @@
 
 namespace {
 
+/**
+ * Display Name (this format has no placeholder).
+ *
+ * Used as an index into the LongNameHandler::simpleFormats array. Units
+ * resources cover the normal set of PluralRules keys, as well as `dnam` and
+ * `per` forms.
+ */
 constexpr int32_t DNAM_INDEX = StandardPlural::Form::COUNT;
+/**
+ * "per" form (e.g. "{0} per day" is day's "per" form).
+ *
+ * Used as an index into the LongNameHandler::simpleFormats array. Units
+ * resources cover the normal set of PluralRules keys, as well as `dnam` and
+ * `per` forms.
+ */
 constexpr int32_t PER_INDEX = StandardPlural::Form::COUNT + 1;
+// Number of keys in the array populated by PluralTableSink.
 constexpr int32_t ARRAY_LENGTH = StandardPlural::Form::COUNT + 2;
 
 static int32_t getIndex(const char* pluralKeyword, UErrorCode& status) {
@@ -38,6 +54,11 @@
     }
 }
 
+// Selects a string out of the `strings` array which corresponds to the
+// specified plural form, with fallback to the OTHER form.
+//
+// The `strings` array must have ARRAY_LENGTH items: one corresponding to each
+// of the plural forms, plus a display name ("dnam") and a "per" form.
 static UnicodeString getWithPlural(
         const UnicodeString* strings,
         StandardPlural::Form plural,
@@ -87,6 +108,18 @@
 
 // NOTE: outArray MUST have room for all StandardPlural values.  No bounds checking is performed.
 
+/**
+ * Populates outArray with `locale`-specific values for `unit` through use of
+ * PluralTableSink. Only the set of basic units are supported!
+ *
+ * Reading from resources *unitsNarrow* and *unitsShort* (for width
+ * UNUM_UNIT_WIDTH_NARROW), or just *unitsShort* (for width
+ * UNUM_UNIT_WIDTH_SHORT). For other widths, it reads just "units".
+ *
+ * @param unit must have a type and subtype (i.e. it must be a unit listed in
+ *     gTypes and gSubTypes in measunit.cpp).
+ * @param outArray must be of fixed length ARRAY_LENGTH.
+ */
 void getMeasureData(const Locale &locale, const MeasureUnit &unit, const UNumberUnitWidth &width,
                     UnicodeString *outArray, UErrorCode &status) {
     PluralTableSink sink(outArray);
@@ -184,78 +217,107 @@
 
 } // namespace
 
-LongNameHandler*
-LongNameHandler::forMeasureUnit(const Locale &loc, const MeasureUnit &unitRef, const MeasureUnit &perUnit,
-                                const UNumberUnitWidth &width, const PluralRules *rules,
-                                const MicroPropsGenerator *parent, UErrorCode &status) {
-    if (uprv_strlen(unitRef.getType()) == 0 || uprv_strlen(perUnit.getType()) == 0) {
-        // TODO(ICU-20941): Unsanctioned unit. Not yet fully supported. Set an error code.
-        status = U_UNSUPPORTED_ERROR;
-        return nullptr;
-    }
+void LongNameHandler::forMeasureUnit(const Locale &loc, const MeasureUnit &unitRef,
+                                     const MeasureUnit &perUnit, const UNumberUnitWidth &width,
+                                     const PluralRules *rules, const MicroPropsGenerator *parent,
+                                     LongNameHandler *fillIn, UErrorCode &status) {
+    // Not valid for mixed units that aren't built-in units, and there should
+    // not be any built-in mixed units!
+    U_ASSERT(uprv_strcmp(unitRef.getType(), "") != 0 ||
+             unitRef.getComplexity(status) != UMEASURE_UNIT_MIXED);
+    U_ASSERT(fillIn != nullptr);
 
     MeasureUnit unit = unitRef;
     if (uprv_strcmp(perUnit.getType(), "none") != 0) {
         // Compound unit: first try to simplify (e.g., meters per second is its own unit).
-        bool isResolved = false;
-        MeasureUnit resolved = MeasureUnit::resolveUnitPerUnit(unit, perUnit, &isResolved);
-        if (isResolved) {
-            unit = resolved;
+        MeasureUnit simplified = unit.product(perUnit.reciprocal(status), status);
+        if (uprv_strcmp(simplified.getType(), "") != 0) {
+            unit = simplified;
         } else {
             // No simplified form is available.
-            return forCompoundUnit(loc, unit, perUnit, width, rules, parent, status);
+            forCompoundUnit(loc, unit, perUnit, width, rules, parent, fillIn, status);
+            return;
         }
     }
 
-    auto* result = new LongNameHandler(rules, parent);
-    if (result == nullptr) {
-        status = U_MEMORY_ALLOCATION_ERROR;
-        return nullptr;
+    if (uprv_strcmp(unit.getType(), "") == 0) {
+        // TODO(ICU-20941): Unsanctioned unit. Not yet fully supported. Set an
+        // error code. Once we support not-built-in units here, unitRef may be
+        // anything, but if not built-in, perUnit has to be "none".
+        status = U_UNSUPPORTED_ERROR;
+        return;
     }
+
     UnicodeString simpleFormats[ARRAY_LENGTH];
     getMeasureData(loc, unit, width, simpleFormats, status);
-    if (U_FAILURE(status)) { return result; }
-    result->simpleFormatsToModifiers(simpleFormats, {UFIELD_CATEGORY_NUMBER, UNUM_MEASURE_UNIT_FIELD}, status);
-    return result;
+    if (U_FAILURE(status)) {
+        return;
+    }
+    fillIn->rules = rules;
+    fillIn->parent = parent;
+    fillIn->simpleFormatsToModifiers(simpleFormats, {UFIELD_CATEGORY_NUMBER, UNUM_MEASURE_UNIT_FIELD},
+                                     status);
 }
 
-LongNameHandler*
-LongNameHandler::forCompoundUnit(const Locale &loc, const MeasureUnit &unit, const MeasureUnit &perUnit,
-                                 const UNumberUnitWidth &width, const PluralRules *rules,
-                                 const MicroPropsGenerator *parent, UErrorCode &status) {
-    auto* result = new LongNameHandler(rules, parent);
-    if (result == nullptr) {
-        status = U_MEMORY_ALLOCATION_ERROR;
-        return nullptr;
+void LongNameHandler::forCompoundUnit(const Locale &loc, const MeasureUnit &unit,
+                                      const MeasureUnit &perUnit, const UNumberUnitWidth &width,
+                                      const PluralRules *rules, const MicroPropsGenerator *parent,
+                                      LongNameHandler *fillIn, UErrorCode &status) {
+    if (uprv_strcmp(unit.getType(), "") == 0 || uprv_strcmp(perUnit.getType(), "") == 0) {
+        // TODO(ICU-20941): Unsanctioned unit. Not yet fully supported. Set an
+        // error code. Once we support not-built-in units here, unitRef may be
+        // anything, but if not built-in, perUnit has to be "none".
+        status = U_UNSUPPORTED_ERROR;
+        return;
+    }
+    if (fillIn == nullptr) {
+        status = U_INTERNAL_PROGRAM_ERROR;
+        return;
     }
     UnicodeString primaryData[ARRAY_LENGTH];
     getMeasureData(loc, unit, width, primaryData, status);
-    if (U_FAILURE(status)) { return result; }
+    if (U_FAILURE(status)) {
+        return;
+    }
     UnicodeString secondaryData[ARRAY_LENGTH];
     getMeasureData(loc, perUnit, width, secondaryData, status);
-    if (U_FAILURE(status)) { return result; }
+    if (U_FAILURE(status)) {
+        return;
+    }
 
     UnicodeString perUnitFormat;
     if (!secondaryData[PER_INDEX].isBogus()) {
         perUnitFormat = secondaryData[PER_INDEX];
     } else {
         UnicodeString rawPerUnitFormat = getPerUnitFormat(loc, width, status);
-        if (U_FAILURE(status)) { return result; }
+        if (U_FAILURE(status)) {
+            return;
+        }
         // rawPerUnitFormat is something like "{0}/{1}"; we need to substitute in the secondary unit.
         SimpleFormatter compiled(rawPerUnitFormat, 2, 2, status);
-        if (U_FAILURE(status)) { return result; }
+        if (U_FAILURE(status)) {
+            return;
+        }
         UnicodeString secondaryFormat = getWithPlural(secondaryData, StandardPlural::Form::ONE, status);
-        if (U_FAILURE(status)) { return result; }
+        if (U_FAILURE(status)) {
+            return;
+        }
         // Some "one" pattern may not contain "{0}". For example in "ar" or "ne" locale.
         SimpleFormatter secondaryCompiled(secondaryFormat, 0, 1, status);
-        if (U_FAILURE(status)) { return result; }
+        if (U_FAILURE(status)) {
+            return;
+        }
         UnicodeString secondaryString = secondaryCompiled.getTextWithNoArguments().trim();
         // TODO: Why does UnicodeString need to be explicit in the following line?
         compiled.format(UnicodeString(u"{0}"), secondaryString, perUnitFormat, status);
-        if (U_FAILURE(status)) { return result; }
+        if (U_FAILURE(status)) {
+            return;
+        }
     }
-    result->multiSimpleFormatsToModifiers(primaryData, perUnitFormat, {UFIELD_CATEGORY_NUMBER, UNUM_MEASURE_UNIT_FIELD}, status);
-    return result;
+    fillIn->rules = rules;
+    fillIn->parent = parent;
+    fillIn->multiSimpleFormatsToModifiers(primaryData, perUnitFormat,
+                                          {UFIELD_CATEGORY_NUMBER, UNUM_MEASURE_UNIT_FIELD}, status);
 }
 
 UnicodeString LongNameHandler::getUnitDisplayName(
@@ -338,7 +400,9 @@
 
 void LongNameHandler::processQuantity(DecimalQuantity &quantity, MicroProps &micros,
                                       UErrorCode &status) const {
-    parent->processQuantity(quantity, micros, status);
+    if (parent != NULL) {
+        parent->processQuantity(quantity, micros, status);
+    }
     StandardPlural::Form pluralForm = utils::getPluralSafe(micros.rounder, rules, quantity, status);
     micros.modOuter = &fModifiers[pluralForm];
 }
@@ -347,4 +411,199 @@
     return &fModifiers[plural];
 }
 
+void MixedUnitLongNameHandler::forMeasureUnit(const Locale &loc, const MeasureUnit &mixedUnit,
+                                              const UNumberUnitWidth &width, const PluralRules *rules,
+                                              const MicroPropsGenerator *parent,
+                                              MixedUnitLongNameHandler *fillIn, UErrorCode &status) {
+    U_ASSERT(mixedUnit.getComplexity(status) == UMEASURE_UNIT_MIXED);
+    U_ASSERT(fillIn != nullptr);
+
+    MeasureUnitImpl temp;
+    const MeasureUnitImpl& impl = MeasureUnitImpl::forMeasureUnit(mixedUnit, temp, status);
+    fillIn->fMixedUnitCount = impl.units.length();
+    fillIn->fMixedUnitData.adoptInstead(new UnicodeString[fillIn->fMixedUnitCount * ARRAY_LENGTH]);
+    for (int32_t i = 0; i < fillIn->fMixedUnitCount; i++) {
+        // Grab data for each of the components.
+        UnicodeString *unitData = &fillIn->fMixedUnitData[i * ARRAY_LENGTH];
+        getMeasureData(loc, impl.units[i]->build(status), width, unitData, status);
+    }
+
+    UListFormatterWidth listWidth = ULISTFMT_WIDTH_SHORT;
+    if (width == UNUM_UNIT_WIDTH_NARROW) {
+        listWidth = ULISTFMT_WIDTH_NARROW;
+    } else if (width == UNUM_UNIT_WIDTH_FULL_NAME) {
+        // This might be the same as SHORT in most languages:
+        listWidth = ULISTFMT_WIDTH_WIDE;
+    }
+    fillIn->fListFormatter.adoptInsteadAndCheckErrorCode(
+        ListFormatter::createInstance(loc, ULISTFMT_TYPE_UNITS, listWidth, status), status);
+    fillIn->rules = rules;
+    fillIn->parent = parent;
+
+    // We need a localised NumberFormatter for the integers of the bigger units
+    // (providing Arabic numerals, for example).
+    fillIn->fIntegerFormatter = NumberFormatter::withLocale(loc);
+}
+
+void MixedUnitLongNameHandler::processQuantity(DecimalQuantity &quantity, MicroProps &micros,
+                                               UErrorCode &status) const {
+    U_ASSERT(fMixedUnitCount > 1);
+    if (parent != nullptr) {
+        parent->processQuantity(quantity, micros, status);
+    }
+    micros.modOuter = getMixedUnitModifier(quantity, micros, status);
+}
+
+const Modifier *MixedUnitLongNameHandler::getMixedUnitModifier(DecimalQuantity &quantity,
+                                                               MicroProps &micros,
+                                                               UErrorCode &status) const {
+    if (micros.mixedMeasuresCount == 0) {
+        U_ASSERT(micros.mixedMeasuresCount > 0); // Mixed unit: we must have more than one unit value
+        status = U_UNSUPPORTED_ERROR;
+        return &micros.helpers.emptyWeakModifier;
+    }
+    // If we don't have at least one mixedMeasure, the LongNameHandler would be
+    // sufficient and we shouldn't be running MixedUnitLongNameHandler code:
+    U_ASSERT(micros.mixedMeasuresCount > 0);
+    // mixedMeasures does not contain the last value:
+    U_ASSERT(fMixedUnitCount == micros.mixedMeasuresCount + 1);
+    U_ASSERT(fListFormatter.isValid());
+
+    // Algorithm:
+    //
+    // For the mixed-units measurement of: "3 yard, 1 foot, 2.6 inch", we should
+    // find "3 yard" and "1 foot" in micros.mixedMeasures.
+    //
+    // Obtain long-names with plural forms corresponding to measure values:
+    //   * {0} yards, {0} foot, {0} inches
+    //
+    // Format the integer values appropriately and modify with the format
+    // strings:
+    //   - 3 yards, 1 foot
+    //
+    // Use ListFormatter to combine, with one placeholder:
+    //   - 3 yards, 1 foot and {0} inches
+    //
+    // Return a SimpleModifier for this pattern, letting the rest of the
+    // pipeline take care of the remaining inches.
+
+    LocalArray<UnicodeString> outputMeasuresList(new UnicodeString[fMixedUnitCount], status);
+    if (U_FAILURE(status)) {
+        return &micros.helpers.emptyWeakModifier;
+    }
+
+    for (int32_t i = 0; i < micros.mixedMeasuresCount; i++) {
+        DecimalQuantity fdec;
+        fdec.setToLong(micros.mixedMeasures[i]);
+        if (i > 0 && fdec.isNegative()) {
+            // If numbers are negative, only the first number needs to have its
+            // negative sign formatted.
+            fdec.negate();
+        }
+        StandardPlural::Form pluralForm = utils::getStandardPlural(rules, fdec);
+
+        UnicodeString simpleFormat =
+            getWithPlural(&fMixedUnitData[i * ARRAY_LENGTH], pluralForm, status);
+        SimpleFormatter compiledFormatter(simpleFormat, 0, 1, status);
+
+        UnicodeString num;
+        auto appendable = UnicodeStringAppendable(num);
+        fIntegerFormatter.formatDecimalQuantity(fdec, status).appendTo(appendable, status);
+        compiledFormatter.format(num, outputMeasuresList[i], status);
+        // TODO(icu-units#67): fix field positions
+    }
+
+    // Reiterated: we have at least one mixedMeasure:
+    U_ASSERT(micros.mixedMeasuresCount > 0);
+    // Thus if negative, a negative has already been formatted:
+    if (quantity.isNegative()) {
+        quantity.negate();
+    }
+
+    UnicodeString *finalSimpleFormats = &fMixedUnitData[(fMixedUnitCount - 1) * ARRAY_LENGTH];
+    StandardPlural::Form finalPlural = utils::getPluralSafe(micros.rounder, rules, quantity, status);
+    UnicodeString finalSimpleFormat = getWithPlural(finalSimpleFormats, finalPlural, status);
+    SimpleFormatter finalFormatter(finalSimpleFormat, 0, 1, status);
+    finalFormatter.format(UnicodeString(u"{0}"), outputMeasuresList[fMixedUnitCount - 1], status);
+
+    // Combine list into a "premixed" pattern
+    UnicodeString premixedFormatPattern;
+    fListFormatter->format(outputMeasuresList.getAlias(), fMixedUnitCount, premixedFormatPattern,
+                           status);
+    SimpleFormatter premixedCompiled(premixedFormatPattern, 0, 1, status);
+    if (U_FAILURE(status)) {
+        return &micros.helpers.emptyWeakModifier;
+    }
+
+    // TODO(icu-units#67): fix field positions
+    // Return a SimpleModifier for the "premixed" pattern
+    micros.helpers.mixedUnitModifier =
+        SimpleModifier(premixedCompiled, kUndefinedField, false, {this, SIGNUM_POS_ZERO, finalPlural});
+    return &micros.helpers.mixedUnitModifier;
+}
+
+const Modifier *MixedUnitLongNameHandler::getModifier(Signum /*signum*/,
+                                                      StandardPlural::Form /*plural*/) const {
+    // TODO(units): investigate this method when investigating where
+    // LongNameHandler::getModifier() gets used. To be sure it remains
+    // unreachable:
+    UPRV_UNREACHABLE;
+    return nullptr;
+}
+
+LongNameMultiplexer *
+LongNameMultiplexer::forMeasureUnits(const Locale &loc, const MaybeStackVector<MeasureUnit> &units,
+                                     const UNumberUnitWidth &width, const PluralRules *rules,
+                                     const MicroPropsGenerator *parent, UErrorCode &status) {
+    LocalPointer<LongNameMultiplexer> result(new LongNameMultiplexer(parent), status);
+    if (U_FAILURE(status)) {
+        return nullptr;
+    }
+    U_ASSERT(units.length() > 0);
+    if (result->fHandlers.resize(units.length()) == nullptr) {
+        status = U_MEMORY_ALLOCATION_ERROR;
+        return nullptr;
+    }
+    result->fMeasureUnits.adoptInstead(new MeasureUnit[units.length()]);
+    for (int32_t i = 0, length = units.length(); i < length; i++) {
+        const MeasureUnit& unit = *units[i];
+        result->fMeasureUnits[i] = unit;
+        if (unit.getComplexity(status) == UMEASURE_UNIT_MIXED) {
+            MixedUnitLongNameHandler *mlnh = result->fMixedUnitHandlers.createAndCheckErrorCode(status);
+            MixedUnitLongNameHandler::forMeasureUnit(loc, unit, width, rules, NULL, mlnh, status);
+            result->fHandlers[i] = mlnh;
+        } else {
+            LongNameHandler *lnh = result->fLongNameHandlers.createAndCheckErrorCode(status);
+            LongNameHandler::forMeasureUnit(loc, unit, MeasureUnit(), width, rules, NULL, lnh, status);
+            result->fHandlers[i] = lnh;
+        }
+        if (U_FAILURE(status)) {
+            return nullptr;
+        }
+    }
+    return result.orphan();
+}
+
+void LongNameMultiplexer::processQuantity(DecimalQuantity &quantity, MicroProps &micros,
+                                          UErrorCode &status) const {
+    // We call parent->processQuantity() from the Multiplexer, instead of
+    // letting LongNameHandler handle it: we don't know which LongNameHandler to
+    // call until we've called the parent!
+    fParent->processQuantity(quantity, micros, status);
+
+    // Call the correct LongNameHandler based on outputUnit
+    for (int i = 0; i < fHandlers.getCapacity(); i++) {
+        if (fMeasureUnits[i] == micros.outputUnit) {
+            fHandlers[i]->processQuantity(quantity, micros, status);
+            return;
+        }
+    }
+    if (U_FAILURE(status)) {
+        return;
+    }
+    // We shouldn't receive any outputUnit for which we haven't already got a
+    // LongNameHandler:
+    status = U_INTERNAL_PROGRAM_ERROR;
+}
+
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/number_longnames.h b/icu4c/source/i18n/number_longnames.h
index a19425a..67f2316 100644
--- a/icu4c/source/i18n/number_longnames.h
+++ b/icu4c/source/i18n/number_longnames.h
@@ -7,6 +7,8 @@
 #ifndef __NUMBER_LONGNAMES_H__
 #define __NUMBER_LONGNAMES_H__
 
+#include "cmemory.h"
+#include "unicode/listformatter.h"
 #include "unicode/uversion.h"
 #include "number_utils.h"
 #include "number_modifiers.h"
@@ -33,34 +35,206 @@
     forCurrencyLongNames(const Locale &loc, const CurrencyUnit &currency, const PluralRules *rules,
                          const MicroPropsGenerator *parent, UErrorCode &status);
 
-    static LongNameHandler*
-    forMeasureUnit(const Locale &loc, const MeasureUnit &unit, const MeasureUnit &perUnit,
-                   const UNumberUnitWidth &width, const PluralRules *rules,
-                   const MicroPropsGenerator *parent, UErrorCode &status);
+    /**
+     * Construct a localized LongNameHandler for the specified MeasureUnit.
+     *
+     * Compound units can be constructed via `unit` and `perUnit`. Both of these
+     * must then be built-in units.
+     *
+     * Mixed units are not supported, use MixedUnitLongNameHandler::forMeasureUnit.
+     *
+     * This function uses a fillIn intead of returning a pointer, because we
+     * want to fill in instances in a MemoryPool (which cannot adopt pointers it
+     * didn't create itself).
+     *
+     * @param loc The desired locale.
+     * @param unit The measure unit to construct a LongNameHandler for. If
+     *     `perUnit` is also defined, `unit` must not be a mixed unit.
+     * @param perUnit If `unit` is a mixed unit, `perUnit` must be "none".
+     * @param width Specifies the desired unit rendering.
+     * @param rules Does not take ownership.
+     * @param parent Does not take ownership.
+     * @param fillIn Required.
+     */
+    static void forMeasureUnit(const Locale &loc, const MeasureUnit &unit, const MeasureUnit &perUnit,
+                               const UNumberUnitWidth &width, const PluralRules *rules,
+                               const MicroPropsGenerator *parent, LongNameHandler *fillIn,
+                               UErrorCode &status);
 
+    /**
+     * Selects the plural-appropriate Modifier from the set of fModifiers based
+     * on the plural form.
+     */
     void
     processQuantity(DecimalQuantity &quantity, MicroProps &micros, UErrorCode &status) const U_OVERRIDE;
 
+    // TODO(units): investigate whether we might run into Mixed Unit trouble
+    // with this. This override for ModifierStore::getModifier does not support
+    // mixed units: investigate under which circumstances it gets called (check
+    // both ImmutablePatternModifier and in NumberRangeFormatterImpl).
     const Modifier* getModifier(Signum signum, StandardPlural::Form plural) const U_OVERRIDE;
 
   private:
+    // A set of pre-computed modifiers, one for each plural form.
     SimpleModifier fModifiers[StandardPlural::Form::COUNT];
+    // Not owned
     const PluralRules *rules;
+    // Not owned
     const MicroPropsGenerator *parent;
 
     LongNameHandler(const PluralRules *rules, const MicroPropsGenerator *parent)
-            : rules(rules), parent(parent) {}
+        : rules(rules), parent(parent) {
+    }
 
-    static LongNameHandler*
-    forCompoundUnit(const Locale &loc, const MeasureUnit &unit, const MeasureUnit &perUnit,
-                    const UNumberUnitWidth &width, const PluralRules *rules,
-                    const MicroPropsGenerator *parent, UErrorCode &status);
+    LongNameHandler() : rules(nullptr), parent(nullptr) {
+    }
 
+    // Enables MemoryPool<LongNameHandler>::emplaceBack(): requires access to
+    // the private constructors.
+    friend class MemoryPool<LongNameHandler>;
+
+    // Allow macrosToMicroGenerator to call the private default constructor.
+    friend class NumberFormatterImpl;
+
+    // Fills in LongNameHandler fields for formatting compound units identified
+    // via `unit` and `perUnit`. Both `unit` and `perUnit` need to be built-in
+    // units (for which data exists).
+    static void forCompoundUnit(const Locale &loc, const MeasureUnit &unit, const MeasureUnit &perUnit,
+                                const UNumberUnitWidth &width, const PluralRules *rules,
+                                const MicroPropsGenerator *parent, LongNameHandler *fillIn,
+                                UErrorCode &status);
+
+    // Sets fModifiers to use the patterns from `simpleFormats`.
     void simpleFormatsToModifiers(const UnicodeString *simpleFormats, Field field, UErrorCode &status);
+
+    // Sets fModifiers to a combination of `leadFormats` (one per plural form)
+    // and `trailFormat` appended to each.
+    //
+    // With a leadFormat of "{0}m" and a trailFormat of "{0}/s", it produces a
+    // pattern of "{0}m/s" by inserting the leadFormat pattern into trailFormat.
     void multiSimpleFormatsToModifiers(const UnicodeString *leadFormats, UnicodeString trailFormat,
                                        Field field, UErrorCode &status);
 };
 
+// Similar to LongNameHandler, but only for MIXED units.
+class MixedUnitLongNameHandler : public MicroPropsGenerator, public ModifierStore, public UMemory {
+  public:
+    /**
+     * Construct a localized MixedUnitLongNameHandler for the specified
+     * MeasureUnit. It must be a MIXED unit.
+     *
+     * This function uses a fillIn intead of returning a pointer, because we
+     * want to fill in instances in a MemoryPool (which cannot adopt pointers it
+     * didn't create itself).
+     *
+     * @param loc The desired locale.
+     * @param mixedUnit The mixed measure unit to construct a
+     *     MixedUnitLongNameHandler for.
+     * @param width Specifies the desired unit rendering.
+     * @param rules Does not take ownership.
+     * @param parent Does not take ownership.
+     * @param fillIn Required.
+     */
+    static void forMeasureUnit(const Locale &loc, const MeasureUnit &mixedUnit,
+                               const UNumberUnitWidth &width, const PluralRules *rules,
+                               const MicroPropsGenerator *parent, MixedUnitLongNameHandler *fillIn,
+                               UErrorCode &status);
+
+    /**
+     * Produces a plural-appropriate Modifier for a mixed unit: `quantity` is
+     * taken as the final smallest unit, while the larger unit values must be
+     * provided via `micros.mixedMeasures`.
+     */
+    void processQuantity(DecimalQuantity &quantity, MicroProps &micros,
+                         UErrorCode &status) const U_OVERRIDE;
+
+    // Required for ModifierStore. And ModifierStore is required by
+    // SimpleModifier constructor's last parameter. We assert his will never get
+    // called though.
+    const Modifier *getModifier(Signum signum, StandardPlural::Form plural) const U_OVERRIDE;
+
+  private:
+    // Not owned
+    const PluralRules *rules;
+    // Not owned
+    const MicroPropsGenerator *parent;
+
+    // Total number of units in the MeasureUnit this handler was configured for:
+    // for "foot-and-inch", this will be 2.
+    int32_t fMixedUnitCount = 1;
+    // Stores unit data for each of the individual units. For each unit, it
+    // stores ARRAY_LENGTH strings, as returned by getMeasureData. (Each unit
+    // with index `i` has ARRAY_LENGTH strings starting at index
+    // `i*ARRAY_LENGTH` in this array.)
+    LocalArray<UnicodeString> fMixedUnitData;
+    // A localized NumberFormatter used to format the integer-valued bigger
+    // units of Mixed Unit measurements.
+    LocalizedNumberFormatter fIntegerFormatter;
+    // A localised list formatter for joining mixed units together.
+    LocalPointer<ListFormatter> fListFormatter;
+
+    MixedUnitLongNameHandler(const PluralRules *rules, const MicroPropsGenerator *parent)
+        : rules(rules), parent(parent) {
+    }
+
+    MixedUnitLongNameHandler() : rules(nullptr), parent(nullptr) {
+    }
+
+    // Allow macrosToMicroGenerator to call the private default constructor.
+    friend class NumberFormatterImpl;
+
+    // Enables MemoryPool<LongNameHandler>::emplaceBack(): requires access to
+    // the private constructors.
+    friend class MemoryPool<MixedUnitLongNameHandler>;
+
+    // For a mixed unit, returns a Modifier that takes only one parameter: the
+    // smallest and final unit of the set. The bigger units' values and labels
+    // get baked into this Modifier, together with the unit label of the final
+    // unit.
+    const Modifier *getMixedUnitModifier(DecimalQuantity &quantity, MicroProps &micros,
+                                         UErrorCode &status) const;
+};
+
+/**
+ * A MicroPropsGenerator that multiplexes between different LongNameHandlers,
+ * depending on the outputUnit.
+ *
+ * See processQuantity() for the input requirements.
+ */
+class LongNameMultiplexer : public MicroPropsGenerator, public UMemory {
+  public:
+    // Produces a multiplexer for LongNameHandlers, one for each unit in
+    // `units`. An individual unit might be a mixed unit.
+    static LongNameMultiplexer *forMeasureUnits(const Locale &loc,
+                                                const MaybeStackVector<MeasureUnit> &units,
+                                                const UNumberUnitWidth &width, const PluralRules *rules,
+                                                const MicroPropsGenerator *parent, UErrorCode &status);
+
+    // The output unit must be provided via `micros.outputUnit`, it must match
+    // one of the units provided to the factory function.
+    void processQuantity(DecimalQuantity &quantity, MicroProps &micros,
+                         UErrorCode &status) const U_OVERRIDE;
+
+  private:
+    /**
+     * Because we only know which LongNameHandler we wish to call after calling
+     * earlier MicroPropsGenerators in the chain, LongNameMultiplexer keeps the
+     * parent link, while the LongNameHandlers are given no parents.
+     */
+    MemoryPool<LongNameHandler> fLongNameHandlers;
+    MemoryPool<MixedUnitLongNameHandler> fMixedUnitHandlers;
+    // Unowned pointers to instances owned by MaybeStackVectors.
+    MaybeStackArray<MicroPropsGenerator *, 8> fHandlers;
+    // Each MeasureUnit corresponds to the same-index MicroPropsGenerator
+    // pointed to in fHandlers.
+    LocalArray<MeasureUnit> fMeasureUnits;
+
+    const MicroPropsGenerator *fParent;
+
+    LongNameMultiplexer(const MicroPropsGenerator *parent) : fParent(parent) {
+    }
+};
+
 }  // namespace impl
 }  // namespace number
 U_NAMESPACE_END
diff --git a/icu4c/source/i18n/number_mapper.cpp b/icu4c/source/i18n/number_mapper.cpp
index ec61743..e2a0d28 100644
--- a/icu4c/source/i18n/number_mapper.cpp
+++ b/icu4c/source/i18n/number_mapper.cpp
@@ -92,6 +92,8 @@
     int32_t minSig = properties.minimumSignificantDigits;
     int32_t maxSig = properties.maximumSignificantDigits;
     double roundingIncrement = properties.roundingIncrement;
+    // Not assigning directly to macros.roundingMode here: we change
+    // roundingMode if and when we also change macros.precision.
     RoundingMode roundingMode = properties.roundingMode.getOrDefault(UNUM_ROUND_HALFEVEN);
     bool explicitMinMaxFrac = minFrac != -1 || maxFrac != -1;
     bool explicitMinMaxSig = minSig != -1 || maxSig != -1;
@@ -145,7 +147,7 @@
         precision = Precision::constructCurrency(currencyUsage);
     }
     if (!precision.isBogus()) {
-        precision.fRoundingMode = roundingMode;
+        macros.roundingMode = roundingMode;
         macros.precision = precision;
     }
 
@@ -239,7 +241,7 @@
                 // TODO: Reset maxSig_ = 1 + minFrac_ to follow the spec.
                 macros.precision = Precision::constructSignificant(minSig_, maxSig_);
             }
-            macros.precision.fRoundingMode = roundingMode;
+            macros.roundingMode = roundingMode;
         }
     }
 
diff --git a/icu4c/source/i18n/number_mapper.h b/icu4c/source/i18n/number_mapper.h
index d18b8b3..9ecd776 100644
--- a/icu4c/source/i18n/number_mapper.h
+++ b/icu4c/source/i18n/number_mapper.h
@@ -136,6 +136,16 @@
         }
     }
 
+    inline void setTo(const AffixPatternProvider* provider, UErrorCode& status) {
+        if (auto ptr = dynamic_cast<const PropertiesAffixPatternProvider*>(provider)) {
+            propertiesAPP = *ptr;
+        } else if (auto ptr = dynamic_cast<const CurrencyPluralInfoAffixProvider*>(provider)) {
+            currencyPluralInfoAPP = *ptr;
+        } else {
+            status = U_INTERNAL_PROGRAM_ERROR;
+        }
+    }
+
     inline const AffixPatternProvider& get() const {
       if (!currencyPluralInfoAPP.isBogus()) {
         return currencyPluralInfoAPP;
@@ -153,9 +163,9 @@
 /**
  * A struct for ownership of a few objects needed for formatting.
  */
-struct DecimalFormatWarehouse {
+struct DecimalFormatWarehouse : public UMemory {
     AutoAffixPatternProvider affixProvider;
-
+    LocalPointer<PluralRules> rules;
 };
 
 
diff --git a/icu4c/source/i18n/number_microprops.h b/icu4c/source/i18n/number_microprops.h
index 56512f5..058c592 100644
--- a/icu4c/source/i18n/number_microprops.h
+++ b/icu4c/source/i18n/number_microprops.h
@@ -22,6 +22,56 @@
 U_NAMESPACE_BEGIN namespace number {
 namespace impl {
 
+/**
+ * A copyable container for the integer values of mixed unit measurements.
+ *
+ * If memory allocation fails during copying, no values are copied and status is
+ * set to U_MEMORY_ALLOCATION_ERROR.
+ */
+class IntMeasures : public MaybeStackArray<int64_t, 2> {
+  public:
+    /**
+     * Default constructor initializes with internal T[stackCapacity] buffer.
+     *
+     * Stack Capacity: most mixed units are expected to consist of two or three
+     * subunits, so one or two integer measures should be enough.
+     */
+    IntMeasures() : MaybeStackArray<int64_t, 2>() {
+    }
+
+    /**
+     * Copy constructor.
+     *
+     * If memory allocation fails during copying, no values are copied and
+     * status is set to U_MEMORY_ALLOCATION_ERROR.
+     */
+    IntMeasures(const IntMeasures &other) : MaybeStackArray<int64_t, 2>() {
+        this->operator=(other);
+    }
+
+    // Assignment operator
+    IntMeasures &operator=(const IntMeasures &rhs) {
+        if (this == &rhs) {
+            return *this;
+        }
+        copyFrom(rhs, status);
+        return *this;
+    }
+
+    /** Move constructor */
+    IntMeasures(IntMeasures &&src) = default;
+
+    /** Move assignment */
+    IntMeasures &operator=(IntMeasures &&src) = default;
+
+    UErrorCode status = U_ZERO_ERROR;
+};
+
+/**
+ * MicroProps is the first MicroPropsGenerator that should be should be called,
+ * producing an initialized MicroProps instance that will be passed on and
+ * modified throughout the rest of the chain of MicroPropsGenerator instances.
+ */
 struct MicroProps : public MicroPropsGenerator {
 
     // NOTE: All of these fields are properly initialized in NumberFormatterImpl.
@@ -36,19 +86,47 @@
 
     // Note: This struct has no direct ownership of the following pointers.
     const DecimalFormatSymbols* symbols;
+
+    // Pointers to Modifiers provided by the number formatting pipeline (when
+    // the value is known):
+
+    // A Modifier provided by LongNameHandler, used for currency long names and
+    // units. If there is no LongNameHandler needed, this should be an
+    // EmptyModifier. (This is typically the third modifier applied.)
     const Modifier* modOuter;
+    // A Modifier for short currencies and compact notation. (This is typically
+    // the second modifier applied.)
     const Modifier* modMiddle = nullptr;
+    // A Modifier provided by ScientificHandler, used for scientific notation.
+    // This is typically the first modifier applied.
     const Modifier* modInner;
 
     // The following "helper" fields may optionally be used during the MicroPropsGenerator.
     // They live here to retain memory.
     struct {
+        // The ScientificModifier for which ScientificHandler is responsible.
+        // ScientificHandler::processQuantity() modifies this Modifier.
         ScientificModifier scientificModifier;
+        // EmptyModifier used for modOuter
         EmptyModifier emptyWeakModifier{false};
+        // EmptyModifier used for modInner
         EmptyModifier emptyStrongModifier{true};
         MultiplierFormatHandler multiplier;
+        // A Modifier used for Mixed Units. When formatting mixed units,
+        // LongNameHandler assigns this Modifier.
+        SimpleModifier mixedUnitModifier;
     } helpers;
 
+    // The MeasureUnit with which the output is represented. May also have
+    // UMEASURE_UNIT_MIXED complexity, in which case mixedMeasures comes into
+    // play.
+    MeasureUnit outputUnit;
+
+    // In the case of mixed units, this is the set of integer-only units
+    // *preceding* the final unit.
+    IntMeasures mixedMeasures;
+    // Number of mixedMeasures that have been populated
+    int32_t mixedMeasuresCount = 0;
 
     MicroProps() = default;
 
@@ -56,7 +134,23 @@
 
     MicroProps& operator=(const MicroProps& other) = default;
 
-    void processQuantity(DecimalQuantity&, MicroProps& micros, UErrorCode& status) const U_OVERRIDE {
+    /**
+     * As MicroProps is the "base instance", this implementation of
+     * MicroPropsGenerator::processQuantity() just ensures that the output
+     * `micros` is correctly initialized.
+     *
+     * For the "safe" invocation of this function, micros must not be *this,
+     * such that a copy of the base instance is made. For the "unsafe" path,
+     * this function can be used only once, because the base MicroProps instance
+     * will be modified and thus not be available for re-use.
+     *
+     * @param quantity The quantity for consideration and optional mutation.
+     * @param micros The MicroProps instance to populate. If this parameter is
+     * not already `*this`, it will be overwritten with a copy of `*this`.
+     */
+    void processQuantity(DecimalQuantity &quantity, MicroProps &micros,
+                         UErrorCode &status) const U_OVERRIDE {
+        (void) quantity;
         (void) status;
         if (this == &micros) {
             // Unsafe path: no need to perform a copy.
@@ -65,6 +159,7 @@
             U_ASSERT(exhausted);
         } else {
             // Safe path: copy self into the output micros.
+            U_ASSERT(!exhausted);
             micros = *this;
         }
     }
diff --git a/icu4c/source/i18n/number_modifiers.cpp b/icu4c/source/i18n/number_modifiers.cpp
index 3becb7b..b7d825f 100644
--- a/icu4c/source/i18n/number_modifiers.cpp
+++ b/icu4c/source/i18n/number_modifiers.cpp
@@ -25,13 +25,13 @@
 icu::UInitOnce gDefaultCurrencySpacingInitOnce = U_INITONCE_INITIALIZER;
 
 UnicodeSet *UNISET_DIGIT = nullptr;
-UnicodeSet *UNISET_NOTS = nullptr;
+UnicodeSet *UNISET_NOTSZ = nullptr;
 
 UBool U_CALLCONV cleanupDefaultCurrencySpacing() {
     delete UNISET_DIGIT;
     UNISET_DIGIT = nullptr;
-    delete UNISET_NOTS;
-    UNISET_NOTS = nullptr;
+    delete UNISET_NOTSZ;
+    UNISET_NOTSZ = nullptr;
     gDefaultCurrencySpacingInitOnce.reset();
     return TRUE;
 }
@@ -39,13 +39,13 @@
 void U_CALLCONV initDefaultCurrencySpacing(UErrorCode &status) {
     ucln_i18n_registerCleanup(UCLN_I18N_CURRENCY_SPACING, cleanupDefaultCurrencySpacing);
     UNISET_DIGIT = new UnicodeSet(UnicodeString(u"[:digit:]"), status);
-    UNISET_NOTS = new UnicodeSet(UnicodeString(u"[:^S:]"), status);
-    if (UNISET_DIGIT == nullptr || UNISET_NOTS == nullptr) {
+    UNISET_NOTSZ = new UnicodeSet(UnicodeString(u"[[:^S:]&[:^Z:]]"), status);
+    if (UNISET_DIGIT == nullptr || UNISET_NOTSZ == nullptr) {
         status = U_MEMORY_ALLOCATION_ERROR;
         return;
     }
     UNISET_DIGIT->freeze();
-    UNISET_NOTS->freeze();
+    UNISET_NOTSZ->freeze();
 }
 
 }  // namespace
@@ -469,8 +469,8 @@
             status);
     if (pattern.compare(u"[:digit:]", -1) == 0) {
         return *UNISET_DIGIT;
-    } else if (pattern.compare(u"[:^S:]", -1) == 0) {
-        return *UNISET_NOTS;
+    } else if (pattern.compare(u"[[:^S:]&[:^Z:]]", -1) == 0) {
+        return *UNISET_NOTSZ;
     } else {
         return UnicodeSet(pattern, status);
     }
diff --git a/icu4c/source/i18n/number_output.cpp b/icu4c/source/i18n/number_output.cpp
index 40192a9..7129b94 100644
--- a/icu4c/source/i18n/number_output.cpp
+++ b/icu4c/source/i18n/number_output.cpp
@@ -5,11 +5,13 @@
 
 #if !UCONFIG_NO_FORMATTING
 
+#include "unicode/measunit.h"
 #include "unicode/numberformatter.h"
 #include "number_utypes.h"
 #include "util.h"
 #include "number_decimalquantity.h"
 #include "number_decnum.h"
+#include "numrange_impl.h"
 
 U_NAMESPACE_BEGIN
 namespace number {
@@ -32,6 +34,11 @@
     fData->getAllFieldPositions(fpih, status);
 }
 
+MeasureUnit FormattedNumber::getOutputUnit(UErrorCode& status) const {
+    UPRV_FORMATTED_VALUE_METHOD_GUARD(MeasureUnit())
+    return fData->outputUnit;
+}
+
 void FormattedNumber::getDecimalQuantity(impl::DecimalQuantity& output, UErrorCode& status) const {
     UPRV_FORMATTED_VALUE_METHOD_GUARD(UPRV_NOARG)
     output = fData->quantity;
@@ -41,6 +48,42 @@
 impl::UFormattedNumberData::~UFormattedNumberData() = default;
 
 
+UPRV_FORMATTED_VALUE_SUBCLASS_AUTO_IMPL(FormattedNumberRange)
+
+#define UPRV_NOARG
+
+UnicodeString FormattedNumberRange::getFirstDecimal(UErrorCode& status) const {
+    UPRV_FORMATTED_VALUE_METHOD_GUARD(ICU_Utility::makeBogusString())
+    return fData->quantity1.toScientificString();
+}
+
+UnicodeString FormattedNumberRange::getSecondDecimal(UErrorCode& status) const {
+    UPRV_FORMATTED_VALUE_METHOD_GUARD(ICU_Utility::makeBogusString())
+    return fData->quantity2.toScientificString();
+}
+
+void FormattedNumberRange::getDecimalNumbers(ByteSink& sink1, ByteSink& sink2, UErrorCode& status) const {
+    UPRV_FORMATTED_VALUE_METHOD_GUARD(UPRV_NOARG)
+    impl::DecNum decnum1;
+    impl::DecNum decnum2;
+    fData->quantity1.toDecNum(decnum1, status).toString(sink1, status);
+    fData->quantity2.toDecNum(decnum2, status).toString(sink2, status);
+}
+
+UNumberRangeIdentityResult FormattedNumberRange::getIdentityResult(UErrorCode& status) const {
+    UPRV_FORMATTED_VALUE_METHOD_GUARD(UNUM_IDENTITY_RESULT_NOT_EQUAL)
+    return fData->identityResult;
+}
+
+const impl::UFormattedNumberRangeData* FormattedNumberRange::getData(UErrorCode& status) const {
+    UPRV_FORMATTED_VALUE_METHOD_GUARD(nullptr)
+    return fData;
+}
+
+
+impl::UFormattedNumberRangeData::~UFormattedNumberRangeData() = default;
+
+
 } // namespace number
 U_NAMESPACE_END
 
diff --git a/icu4c/source/i18n/number_patternmodifier.cpp b/icu4c/source/i18n/number_patternmodifier.cpp
index 4560294..314e7cb 100644
--- a/icu4c/source/i18n/number_patternmodifier.cpp
+++ b/icu4c/source/i18n/number_patternmodifier.cpp
@@ -294,14 +294,20 @@
         case AffixPatternType::TYPE_PERMILLE:
             return fSymbols->getSymbol(DecimalFormatSymbols::ENumberFormatSymbol::kPerMillSymbol);
         case AffixPatternType::TYPE_CURRENCY_SINGLE: {
-            // UnitWidth ISO and HIDDEN overrides the singular currency symbol.
-            if (fUnitWidth == UNumberUnitWidth::UNUM_UNIT_WIDTH_ISO_CODE) {
-                return fCurrencySymbols.getIntlCurrencySymbol(localStatus);
-            } else if (fUnitWidth == UNumberUnitWidth::UNUM_UNIT_WIDTH_HIDDEN) {
-                return UnicodeString();
-            } else if (fUnitWidth == UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROW) {
+            switch (fUnitWidth) {
+            case UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROW:
                 return fCurrencySymbols.getNarrowCurrencySymbol(localStatus);
-            } else {
+            case UNumberUnitWidth::UNUM_UNIT_WIDTH_SHORT:
+                return fCurrencySymbols.getCurrencySymbol(localStatus);
+            case UNumberUnitWidth::UNUM_UNIT_WIDTH_ISO_CODE:
+                return fCurrencySymbols.getIntlCurrencySymbol(localStatus);
+            case UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL:
+                return fCurrencySymbols.getFormalCurrencySymbol(localStatus);
+            case UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT:
+                return fCurrencySymbols.getVariantCurrencySymbol(localStatus);
+            case UNumberUnitWidth::UNUM_UNIT_WIDTH_HIDDEN:
+                return UnicodeString();
+            default:
                 return fCurrencySymbols.getCurrencySymbol(localStatus);
             }
         }
diff --git a/icu4c/source/i18n/number_rounding.cpp b/icu4c/source/i18n/number_rounding.cpp
index 3ffce67..a8fd6bc 100644
--- a/icu4c/source/i18n/number_rounding.cpp
+++ b/icu4c/source/i18n/number_rounding.cpp
@@ -5,13 +5,16 @@
 
 #if !UCONFIG_NO_FORMATTING
 
+#include "charstr.h"
 #include "uassert.h"
 #include "unicode/numberformatter.h"
 #include "number_types.h"
 #include "number_decimalquantity.h"
 #include "double-conversion.h"
 #include "number_roundingutils.h"
+#include "number_skeletons.h"
 #include "putilimp.h"
+#include "string_segment.h"
 
 using namespace icu;
 using namespace icu::number;
@@ -19,6 +22,39 @@
 
 
 using double_conversion::DoubleToStringConverter;
+using icu::StringSegment;
+
+void number::impl::parseIncrementOption(const StringSegment &segment,
+                                        Precision &outPrecision,
+                                        UErrorCode &status) {
+    // Need to do char <-> UChar conversion...
+    U_ASSERT(U_SUCCESS(status));
+    CharString buffer;
+    SKELETON_UCHAR_TO_CHAR(buffer, segment.toTempUnicodeString(), 0, segment.length(), status);
+
+    // Utilize DecimalQuantity/decNumber to parse this for us.
+    DecimalQuantity dq;
+    UErrorCode localStatus = U_ZERO_ERROR;
+    dq.setToDecNumber({buffer.data(), buffer.length()}, localStatus);
+    if (U_FAILURE(localStatus)) {
+        // throw new SkeletonSyntaxException("Invalid rounding increment", segment, e);
+        status = U_NUMBER_SKELETON_SYNTAX_ERROR;
+        return;
+    }
+    double increment = dq.toDouble();
+
+    // We also need to figure out how many digits. Do a brute force string operation.
+    int decimalOffset = 0;
+    while (decimalOffset < segment.length() && segment.charAt(decimalOffset) != '.') {
+        decimalOffset++;
+    }
+    if (decimalOffset == segment.length()) {
+        outPrecision = Precision::increment(increment);
+    } else {
+        int32_t fractionLength = segment.length() - decimalOffset - 1;
+        outPrecision = Precision::increment(increment).withMinFraction(fractionLength);
+    }
+}
 
 namespace {
 
@@ -84,7 +120,7 @@
 
 
 Precision Precision::unlimited() {
-    return Precision(RND_NONE, {}, kDefaultMode);
+    return Precision(RND_NONE, {});
 }
 
 FractionPrecision Precision::integer() {
@@ -229,7 +265,7 @@
     settings.fMaxSig = -1;
     PrecisionUnion union_;
     union_.fracSig = settings;
-    return {RND_FRACTION, union_, kDefaultMode};
+    return {RND_FRACTION, union_};
 }
 
 Precision Precision::constructSignificant(int32_t minSig, int32_t maxSig) {
@@ -240,7 +276,7 @@
     settings.fMaxSig = static_cast<digits_t>(maxSig);
     PrecisionUnion union_;
     union_.fracSig = settings;
-    return {RND_SIGNIFICANT, union_, kDefaultMode};
+    return {RND_SIGNIFICANT, union_};
 }
 
 Precision
@@ -250,7 +286,7 @@
     settings.fMaxSig = static_cast<digits_t>(maxSig);
     PrecisionUnion union_;
     union_.fracSig = settings;
-    return {RND_FRACTION_SIGNIFICANT, union_, kDefaultMode};
+    return {RND_FRACTION_SIGNIFICANT, union_};
 }
 
 IncrementPrecision Precision::constructIncrement(double increment, int32_t minFrac) {
@@ -270,18 +306,18 @@
         // NOTE: In C++, we must return the correct value type with the correct union.
         // It would be invalid to return a RND_FRACTION here because the methods on the
         // IncrementPrecision type assume that the union is backed by increment data.
-        return {RND_INCREMENT_ONE, union_, kDefaultMode};
+        return {RND_INCREMENT_ONE, union_};
     } else if (singleDigit == 5) {
-        return {RND_INCREMENT_FIVE, union_, kDefaultMode};
+        return {RND_INCREMENT_FIVE, union_};
     } else {
-        return {RND_INCREMENT, union_, kDefaultMode};
+        return {RND_INCREMENT, union_};
     }
 }
 
 CurrencyPrecision Precision::constructCurrency(UCurrencyUsage usage) {
     PrecisionUnion union_;
     union_.currencyUsage = usage;
-    return {RND_CURRENCY, union_, kDefaultMode};
+    return {RND_CURRENCY, union_};
 }
 
 
@@ -341,6 +377,9 @@
 
 /** This is the method that contains the actual rounding logic. */
 void RoundingImpl::apply(impl::DecimalQuantity &value, UErrorCode& status) const {
+    if (U_FAILURE(status)) {
+        return;
+    }
     if (fPassThrough) {
         return;
     }
diff --git a/icu4c/source/i18n/number_roundingutils.h b/icu4c/source/i18n/number_roundingutils.h
index 3e37f31..e85cbae 100644
--- a/icu4c/source/i18n/number_roundingutils.h
+++ b/icu4c/source/i18n/number_roundingutils.h
@@ -8,6 +8,7 @@
 #define __NUMBER_ROUNDINGUTILS_H__
 
 #include "number_types.h"
+#include "string_segment.h"
 
 U_NAMESPACE_BEGIN
 namespace number {
@@ -44,6 +45,9 @@
 inline bool
 getRoundingDirection(bool isEven, bool isNegative, Section section, RoundingMode roundingMode,
                      UErrorCode &status) {
+    if (U_FAILURE(status)) {
+        return false;
+    }
     switch (roundingMode) {
         case RoundingMode::UNUM_ROUND_UP:
             // round away from zero
@@ -187,8 +191,22 @@
     Precision fPrecision;
     UNumberFormatRoundingMode fRoundingMode;
     bool fPassThrough = true;  // default value
+
+    // Permits access to fPrecision.
+    friend class units::UnitsRouter;
+
+    // Permits access to fPrecision.
+    friend class UnitConversionHandler;
 };
 
+/**
+ * Parses Precision-related skeleton strings without knowledge of MacroProps
+ * - see blueprint_helpers::parseIncrementOption().
+ *
+ * Referencing MacroProps means needing to pull in the .o files that have the
+ * destructors for the SymbolsWrapper, Usage, and Scale classes.
+ */
+void parseIncrementOption(const StringSegment &segment, Precision &outPrecision, UErrorCode &status);
 
 } // namespace impl
 } // namespace number
diff --git a/icu4c/source/i18n/number_skeletons.cpp b/icu4c/source/i18n/number_skeletons.cpp
index 4ba2647..028525a 100644
--- a/icu4c/source/i18n/number_skeletons.cpp
+++ b/icu4c/source/i18n/number_skeletons.cpp
@@ -10,6 +10,7 @@
 #define UNISTR_FROM_STRING_EXPLICIT
 
 #include "number_decnum.h"
+#include "number_roundingutils.h"
 #include "number_skeletons.h"
 #include "umutex.h"
 #include "ucln_in.h"
@@ -80,6 +81,8 @@
     b.add(u"unit-width-short", STEM_UNIT_WIDTH_SHORT, status);
     b.add(u"unit-width-full-name", STEM_UNIT_WIDTH_FULL_NAME, status);
     b.add(u"unit-width-iso-code", STEM_UNIT_WIDTH_ISO_CODE, status);
+    b.add(u"unit-width-formal", STEM_UNIT_WIDTH_FORMAL, status);
+    b.add(u"unit-width-variant", STEM_UNIT_WIDTH_VARIANT, status);
     b.add(u"unit-width-hidden", STEM_UNIT_WIDTH_HIDDEN, status);
     b.add(u"sign-auto", STEM_SIGN_AUTO, status);
     b.add(u"sign-always", STEM_SIGN_ALWAYS, status);
@@ -97,6 +100,7 @@
     b.add(u"measure-unit", STEM_MEASURE_UNIT, status);
     b.add(u"per-measure-unit", STEM_PER_MEASURE_UNIT, status);
     b.add(u"unit", STEM_UNIT, status);
+    b.add(u"usage", STEM_UNIT_USAGE, status);
     b.add(u"currency", STEM_CURRENCY, status);
     b.add(u"integer-width", STEM_INTEGER_WIDTH, status);
     b.add(u"numbering-system", STEM_NUMBERING_SYSTEM, status);
@@ -149,21 +153,6 @@
 } UPRV_BLOCK_MACRO_END
 
 
-#define SKELETON_UCHAR_TO_CHAR(dest, src, start, end, status) (void)(dest); \
-UPRV_BLOCK_MACRO_BEGIN { \
-    UErrorCode conversionStatus = U_ZERO_ERROR; \
-    (dest).appendInvariantChars({FALSE, (src).getBuffer() + (start), (end) - (start)}, conversionStatus); \
-    if (conversionStatus == U_INVARIANT_CONVERSION_ERROR) { \
-        /* Don't propagate the invariant conversion error; it is a skeleton syntax error */ \
-        (status) = U_NUMBER_SKELETON_SYNTAX_ERROR; \
-        return; \
-    } else if (U_FAILURE(conversionStatus)) { \
-        (status) = conversionStatus; \
-        return; \
-    } \
-} UPRV_BLOCK_MACRO_END
-
-
 } // anonymous namespace
 
 
@@ -187,14 +176,11 @@
 MeasureUnit stem_to_object::unit(skeleton::StemEnum stem) {
     switch (stem) {
         case STEM_BASE_UNIT:
-            // Slicing is okay
-            return NoUnit::base(); // NOLINT
+            return MeasureUnit();
         case STEM_PERCENT:
-            // Slicing is okay
-            return NoUnit::percent(); // NOLINT
+            return MeasureUnit::getPercent();
         case STEM_PERMILLE:
-            // Slicing is okay
-            return NoUnit::permille(); // NOLINT
+            return MeasureUnit::getPermille();
         default:
             UPRV_UNREACHABLE;
     }
@@ -265,6 +251,10 @@
             return UNUM_UNIT_WIDTH_FULL_NAME;
         case STEM_UNIT_WIDTH_ISO_CODE:
             return UNUM_UNIT_WIDTH_ISO_CODE;
+        case STEM_UNIT_WIDTH_FORMAL:
+            return UNUM_UNIT_WIDTH_FORMAL;
+        case STEM_UNIT_WIDTH_VARIANT:
+            return UNUM_UNIT_WIDTH_VARIANT;
         case STEM_UNIT_WIDTH_HIDDEN:
             return UNUM_UNIT_WIDTH_HIDDEN;
         default:
@@ -372,6 +362,12 @@
         case UNUM_UNIT_WIDTH_ISO_CODE:
             sb.append(u"unit-width-iso-code", -1);
             break;
+        case UNUM_UNIT_WIDTH_FORMAL:
+            sb.append(u"unit-width-formal", -1);
+            break;
+        case UNUM_UNIT_WIDTH_VARIANT:
+            sb.append(u"unit-width-variant", -1);
+            break;
         case UNUM_UNIT_WIDTH_HIDDEN:
             sb.append(u"unit-width-hidden", -1);
             break;
@@ -470,6 +466,7 @@
 MacroProps skeleton::parseSkeleton(
         const UnicodeString& skeletonString, int32_t& errOffset, UErrorCode& status) {
     U_ASSERT(U_SUCCESS(status));
+    U_ASSERT(kSerializedStemTrie != nullptr);
 
     // Add a trailing whitespace to the end of the skeleton string to make code cleaner.
     UnicodeString tempSkeletonString(skeletonString);
@@ -550,6 +547,7 @@
                 case STATE_MEASURE_UNIT:
                 case STATE_PER_MEASURE_UNIT:
                 case STATE_IDENTIFIER_UNIT:
+                case STATE_UNIT_USAGE:
                 case STATE_CURRENCY_UNIT:
                 case STATE_INTEGER_WIDTH:
                 case STATE_NUMBERING_SYSTEM:
@@ -575,6 +573,8 @@
 ParseState
 skeleton::parseStem(const StringSegment& segment, const UCharsTrie& stemTrie, SeenMacroProps& seen,
                     MacroProps& macros, UErrorCode& status) {
+    U_ASSERT(U_SUCCESS(status));
+
     // First check for "blueprint" stems, which start with a "signal char"
     switch (segment.charAt(0)) {
         case u'.':
@@ -683,6 +683,8 @@
         case STEM_UNIT_WIDTH_SHORT:
         case STEM_UNIT_WIDTH_FULL_NAME:
         case STEM_UNIT_WIDTH_ISO_CODE:
+        case STEM_UNIT_WIDTH_FORMAL:
+        case STEM_UNIT_WIDTH_VARIANT:
         case STEM_UNIT_WIDTH_HIDDEN:
             CHECK_NULL(seen, unitWidth, status);
             macros.unitWidth = stem_to_object::unitWidth(stem);
@@ -705,7 +707,7 @@
             macros.decimal = stem_to_object::decimalSeparatorDisplay(stem);
             return STATE_NULL;
 
-            // Stems requiring an option:
+        // Stems requiring an option:
 
         case STEM_PRECISION_INCREMENT:
             CHECK_NULL(seen, precision, status);
@@ -724,8 +726,13 @@
             CHECK_NULL(seen, perUnit, status);
             return STATE_IDENTIFIER_UNIT;
 
+        case STEM_UNIT_USAGE:
+            CHECK_NULL(seen, usage, status);
+            return STATE_UNIT_USAGE;
+
         case STEM_CURRENCY:
             CHECK_NULL(seen, unit, status);
+            CHECK_NULL(seen, perUnit, status);
             return STATE_CURRENCY_UNIT;
 
         case STEM_INTEGER_WIDTH:
@@ -747,6 +754,7 @@
 
 ParseState skeleton::parseOption(ParseState stem, const StringSegment& segment, MacroProps& macros,
                                  UErrorCode& status) {
+    U_ASSERT(U_SUCCESS(status));
 
     ///// Required options: /////
 
@@ -763,6 +771,9 @@
         case STATE_IDENTIFIER_UNIT:
             blueprint_helpers::parseIdentifierUnitOption(segment, macros, status);
             return STATE_NULL;
+        case STATE_UNIT_USAGE:
+            blueprint_helpers::parseUnitUsageOption(segment, macros, status);
+            return STATE_NULL;
         case STATE_INCREMENT_PRECISION:
             blueprint_helpers::parseIncrementOption(segment, macros, status);
             return STATE_NULL;
@@ -833,7 +844,7 @@
         sb.append(u' ');
     }
     if (U_FAILURE(status)) { return; }
-    if (GeneratorHelpers::perUnit(macros, sb, status)) {
+    if (GeneratorHelpers::usage(macros, sb, status)) {
         sb.append(u' ');
     }
     if (U_FAILURE(status)) { return; }
@@ -968,6 +979,7 @@
 
 void blueprint_helpers::parseMeasureUnitOption(const StringSegment& segment, MacroProps& macros,
                                                UErrorCode& status) {
+    U_ASSERT(U_SUCCESS(status));
     const UnicodeString stemString = segment.toTempUnicodeString();
 
     // NOTE: The category (type) of the unit is guaranteed to be a valid subtag (alphanumeric)
@@ -983,14 +995,13 @@
     }
 
     // Need to do char <-> UChar conversion...
-    U_ASSERT(U_SUCCESS(status));
     CharString type;
     SKELETON_UCHAR_TO_CHAR(type, stemString, 0, firstHyphen, status);
     CharString subType;
     SKELETON_UCHAR_TO_CHAR(subType, stemString, firstHyphen + 1, stemString.length(), status);
 
-    // Note: the largest type as of this writing (March 2018) is "volume", which has 24 units.
-    static constexpr int32_t CAPACITY = 30;
+    // Note: the largest type as of this writing (Aug 2020) is "volume", which has 33 units.
+    static constexpr int32_t CAPACITY = 40;
     MeasureUnit units[CAPACITY];
     UErrorCode localStatus = U_ZERO_ERROR;
     int32_t numUnits = MeasureUnit::getAvailable(type.data(), units, CAPACITY, localStatus);
@@ -1011,14 +1022,6 @@
     status = U_NUMBER_SKELETON_SYNTAX_ERROR;
 }
 
-void blueprint_helpers::generateMeasureUnitOption(const MeasureUnit& measureUnit, UnicodeString& sb,
-                                                  UErrorCode&) {
-    // Need to do char <-> UChar conversion...
-    sb.append(UnicodeString(measureUnit.getType(), -1, US_INV));
-    sb.append(u'-');
-    sb.append(UnicodeString(measureUnit.getSubtype(), -1, US_INV));
-}
-
 void blueprint_helpers::parseMeasurePerUnitOption(const StringSegment& segment, MacroProps& macros,
                                                   UErrorCode& status) {
     // A little bit of a hack: save the current unit (numerator), call the main measure unit
@@ -1045,6 +1048,20 @@
         return;
     }
 
+    // Mixed units can only be represented by full MeasureUnit instances, so we
+    // don't split the denominator into macros.perUnit.
+    if (fullUnit.complexity == UMEASURE_UNIT_MIXED) {
+        macros.unit = std::move(fullUnit).build(status);
+        return;
+    }
+
+    // When we have a built-in unit (e.g. meter-per-second), we don't split it up
+    MeasureUnit testBuiltin = fullUnit.copy(status).build(status);
+    if (uprv_strcmp(testBuiltin.getType(), "") != 0) {
+        macros.unit = std::move(testBuiltin);
+        return;
+    }
+
     // TODO(ICU-20941): Clean this up.
     for (int32_t i = 0; i < fullUnit.units.length(); i++) {
         SingleUnitImpl* subUnit = fullUnit.units[i];
@@ -1057,6 +1074,17 @@
     }
 }
 
+void blueprint_helpers::parseUnitUsageOption(const StringSegment &segment, MacroProps &macros,
+                                             UErrorCode &status) {
+    // Need to do char <-> UChar conversion...
+    U_ASSERT(U_SUCCESS(status));
+    CharString buffer;
+    SKELETON_UCHAR_TO_CHAR(buffer, segment.toTempUnicodeString(), 0, segment.length(), status);
+    macros.usage.set(buffer.toStringPiece());
+    // We do not do any validation of the usage string: it depends on the
+    // unitPreferenceData in the units resources.
+}
+
 void blueprint_helpers::parseFractionStem(const StringSegment& segment, MacroProps& macros,
                                           UErrorCode& status) {
     U_ASSERT(segment.charAt(0) == u'.');
@@ -1301,35 +1329,9 @@
     return true;
 }
 
-void blueprint_helpers::parseIncrementOption(const StringSegment& segment, MacroProps& macros,
-                                             UErrorCode& status) {
-    // Need to do char <-> UChar conversion...
-    U_ASSERT(U_SUCCESS(status));
-    CharString buffer;
-    SKELETON_UCHAR_TO_CHAR(buffer, segment.toTempUnicodeString(), 0, segment.length(), status);
-
-    // Utilize DecimalQuantity/decNumber to parse this for us.
-    DecimalQuantity dq;
-    UErrorCode localStatus = U_ZERO_ERROR;
-    dq.setToDecNumber({buffer.data(), buffer.length()}, localStatus);
-    if (U_FAILURE(localStatus)) {
-        // throw new SkeletonSyntaxException("Invalid rounding increment", segment, e);
-        status = U_NUMBER_SKELETON_SYNTAX_ERROR;
-        return;
-    }
-    double increment = dq.toDouble();
-
-    // We also need to figure out how many digits. Do a brute force string operation.
-    int decimalOffset = 0;
-    while (decimalOffset < segment.length() && segment.charAt(decimalOffset) != '.') {
-        decimalOffset++;
-    }
-    if (decimalOffset == segment.length()) {
-        macros.precision = Precision::increment(increment);
-    } else {
-        int32_t fractionLength = segment.length() - decimalOffset - 1;
-        macros.precision = Precision::increment(increment).withMinFraction(fractionLength);
-    }
+void blueprint_helpers::parseIncrementOption(const StringSegment &segment, MacroProps &macros,
+                                             UErrorCode &status) {
+    number::impl::parseIncrementOption(segment, macros.precision, status);
 }
 
 void blueprint_helpers::generateIncrementOption(double increment, int32_t trailingZeros, UnicodeString& sb,
@@ -1499,50 +1501,46 @@
 }
 
 bool GeneratorHelpers::unit(const MacroProps& macros, UnicodeString& sb, UErrorCode& status) {
-    if (utils::unitIsCurrency(macros.unit)) {
+    MeasureUnit unit = macros.unit;
+    if (!utils::unitIsBaseUnit(macros.perUnit)) {
+        if (utils::unitIsCurrency(macros.unit) || utils::unitIsCurrency(macros.perUnit)) {
+            status = U_UNSUPPORTED_ERROR;
+            return false;
+        }
+        unit = unit.product(macros.perUnit.reciprocal(status), status);
+    }
+
+    if (utils::unitIsCurrency(unit)) {
         sb.append(u"currency/", -1);
-        CurrencyUnit currency(macros.unit, status);
+        CurrencyUnit currency(unit, status);
         if (U_FAILURE(status)) {
             return false;
         }
         blueprint_helpers::generateCurrencyOption(currency, sb, status);
         return true;
-    } else if (utils::unitIsNoUnit(macros.unit)) {
-        if (utils::unitIsPercent(macros.unit)) {
-            sb.append(u"percent", -1);
-            return true;
-        } else if (utils::unitIsPermille(macros.unit)) {
-            sb.append(u"permille", -1);
-            return true;
-        } else {
-            // Default value is not shown in normalized form
-            return false;
-        }
+    } else if (utils::unitIsBaseUnit(unit)) {
+        // Default value is not shown in normalized form
+        return false;
+    } else if (utils::unitIsPercent(unit)) {
+        sb.append(u"percent", -1);
+        return true;
+    } else if (utils::unitIsPermille(unit)) {
+        sb.append(u"permille", -1);
+        return true;
     } else {
-        sb.append(u"measure-unit/", -1);
-        blueprint_helpers::generateMeasureUnitOption(macros.unit, sb, status);
+        sb.append(u"unit/", -1);
+        sb.append(unit.getIdentifier());
         return true;
     }
 }
 
-bool GeneratorHelpers::perUnit(const MacroProps& macros, UnicodeString& sb, UErrorCode& status) {
-    // Per-units are currently expected to be only MeasureUnits.
-    if (utils::unitIsNoUnit(macros.perUnit)) {
-        if (utils::unitIsPercent(macros.perUnit) || utils::unitIsPermille(macros.perUnit)) {
-            status = U_UNSUPPORTED_ERROR;
-            return false;
-        } else {
-            // Default value: ok to ignore
-            return false;
-        }
-    } else if (utils::unitIsCurrency(macros.perUnit)) {
-        status = U_UNSUPPORTED_ERROR;
-        return false;
-    } else {
-        sb.append(u"per-measure-unit/", -1);
-        blueprint_helpers::generateMeasureUnitOption(macros.perUnit, sb, status);
+bool GeneratorHelpers::usage(const MacroProps& macros, UnicodeString& sb, UErrorCode& /* status */) {
+    if (macros.usage.isSet()) {
+        sb.append(u"usage/", -1);
+        sb.append(UnicodeString(macros.usage.fUsage, -1, US_INV));
         return true;
     }
+    return false;
 }
 
 bool GeneratorHelpers::precision(const MacroProps& macros, UnicodeString& sb, UErrorCode& status) {
diff --git a/icu4c/source/i18n/number_skeletons.h b/icu4c/source/i18n/number_skeletons.h
index d9b2c0e..201267e 100644
--- a/icu4c/source/i18n/number_skeletons.h
+++ b/icu4c/source/i18n/number_skeletons.h
@@ -22,10 +22,12 @@
 // namespace for enums and entrypoint functions
 namespace skeleton {
 
-///////////////////////////////////////////////////////////////////////////////////////
-// NOTE: For an example of how to add a new stem to the number skeleton parser, see: //
-// http://bugs.icu-project.org/trac/changeset/41193                                  //
-///////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////
+// NOTE: For examples of how to add a new stem to the number skeleton parser, see:    //
+// https://github.com/unicode-org/icu/commit/a2a7982216b2348070dc71093775ac7195793d73 //
+// and                                                                                //
+// https://github.com/unicode-org/icu/commit/6fe86f3934a8a5701034f648a8f7c5087e84aa28 //
+////////////////////////////////////////////////////////////////////////////////////////
 
 /**
  * While parsing a skeleton, this enum records what type of option we expect to find next.
@@ -47,6 +49,7 @@
     STATE_MEASURE_UNIT,
     STATE_PER_MEASURE_UNIT,
     STATE_IDENTIFIER_UNIT,
+    STATE_UNIT_USAGE,
     STATE_CURRENCY_UNIT,
     STATE_INTEGER_WIDTH,
     STATE_NUMBERING_SYSTEM,
@@ -95,6 +98,8 @@
     STEM_UNIT_WIDTH_SHORT,
     STEM_UNIT_WIDTH_FULL_NAME,
     STEM_UNIT_WIDTH_ISO_CODE,
+    STEM_UNIT_WIDTH_FORMAL,
+    STEM_UNIT_WIDTH_VARIANT,
     STEM_UNIT_WIDTH_HIDDEN,
     STEM_SIGN_AUTO,
     STEM_SIGN_ALWAYS,
@@ -112,6 +117,7 @@
     STEM_MEASURE_UNIT,
     STEM_PER_MEASURE_UNIT,
     STEM_UNIT,
+    STEM_UNIT_USAGE,
     STEM_CURRENCY,
     STEM_INTEGER_WIDTH,
     STEM_NUMBERING_SYSTEM,
@@ -234,14 +240,20 @@
 
 void generateCurrencyOption(const CurrencyUnit& currency, UnicodeString& sb, UErrorCode& status);
 
+// "measure-unit/" is deprecated in favour of "unit/".
 void parseMeasureUnitOption(const StringSegment& segment, MacroProps& macros, UErrorCode& status);
 
-void generateMeasureUnitOption(const MeasureUnit& measureUnit, UnicodeString& sb, UErrorCode& status);
-
+// "per-measure-unit/" is deprecated in favour of "unit/".
 void parseMeasurePerUnitOption(const StringSegment& segment, MacroProps& macros, UErrorCode& status);
 
+/**
+ * Parses unit identifiers like "meter-per-second" and "foot-and-inch", as
+ * specified via a "unit/" concise skeleton.
+ */
 void parseIdentifierUnitOption(const StringSegment& segment, MacroProps& macros, UErrorCode& status);
 
+void parseUnitUsageOption(const StringSegment& segment, MacroProps& macros, UErrorCode& status);
+
 void parseFractionStem(const StringSegment& segment, MacroProps& macros, UErrorCode& status);
 
 void generateFractionStem(int32_t minFrac, int32_t maxFrac, UnicodeString& sb, UErrorCode& status);
@@ -302,7 +314,7 @@
 
     static bool unit(const MacroProps& macros, UnicodeString& sb, UErrorCode& status);
 
-    static bool perUnit(const MacroProps& macros, UnicodeString& sb, UErrorCode& status);
+    static bool usage(const MacroProps& macros, UnicodeString& sb, UErrorCode& status);
 
     static bool precision(const MacroProps& macros, UnicodeString& sb, UErrorCode& status);
 
@@ -332,6 +344,7 @@
     bool notation = false;
     bool unit = false;
     bool perUnit = false;
+    bool usage = false;
     bool precision = false;
     bool roundingMode = false;
     bool grouper = false;
@@ -344,6 +357,24 @@
     bool scale = false;
 };
 
+namespace {
+
+#define SKELETON_UCHAR_TO_CHAR(dest, src, start, end, status) (void)(dest); \
+UPRV_BLOCK_MACRO_BEGIN { \
+    UErrorCode conversionStatus = U_ZERO_ERROR; \
+    (dest).appendInvariantChars({false, (src).getBuffer() + (start), (end) - (start)}, conversionStatus); \
+    if (conversionStatus == U_INVARIANT_CONVERSION_ERROR) { \
+        /* Don't propagate the invariant conversion error; it is a skeleton syntax error */ \
+        (status) = U_NUMBER_SKELETON_SYNTAX_ERROR; \
+        return; \
+    } else if (U_FAILURE(conversionStatus)) { \
+        (status) = conversionStatus; \
+        return; \
+    } \
+} UPRV_BLOCK_MACRO_END
+
+} // namespace
+
 } // namespace impl
 } // namespace number
 U_NAMESPACE_END
diff --git a/icu4c/source/i18n/number_symbolswrapper.cpp b/icu4c/source/i18n/number_symbolswrapper.cpp
new file mode 100644
index 0000000..ac3043d
--- /dev/null
+++ b/icu4c/source/i18n/number_symbolswrapper.cpp
@@ -0,0 +1,131 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "number_microprops.h"
+#include "unicode/numberformatter.h"
+
+using namespace icu;
+using namespace icu::number;
+using namespace icu::number::impl;
+
+SymbolsWrapper::SymbolsWrapper(const SymbolsWrapper &other) {
+    doCopyFrom(other);
+}
+
+SymbolsWrapper::SymbolsWrapper(SymbolsWrapper &&src) U_NOEXCEPT {
+    doMoveFrom(std::move(src));
+}
+
+SymbolsWrapper &SymbolsWrapper::operator=(const SymbolsWrapper &other) {
+    if (this == &other) {
+        return *this;
+    }
+    doCleanup();
+    doCopyFrom(other);
+    return *this;
+}
+
+SymbolsWrapper &SymbolsWrapper::operator=(SymbolsWrapper &&src) U_NOEXCEPT {
+    if (this == &src) {
+        return *this;
+    }
+    doCleanup();
+    doMoveFrom(std::move(src));
+    return *this;
+}
+
+SymbolsWrapper::~SymbolsWrapper() {
+    doCleanup();
+}
+
+void SymbolsWrapper::setTo(const DecimalFormatSymbols &dfs) {
+    doCleanup();
+    fType = SYMPTR_DFS;
+    fPtr.dfs = new DecimalFormatSymbols(dfs);
+}
+
+void SymbolsWrapper::setTo(const NumberingSystem *ns) {
+    doCleanup();
+    fType = SYMPTR_NS;
+    fPtr.ns = ns;
+}
+
+void SymbolsWrapper::doCopyFrom(const SymbolsWrapper &other) {
+    fType = other.fType;
+    switch (fType) {
+    case SYMPTR_NONE:
+        // No action necessary
+        break;
+    case SYMPTR_DFS:
+        // Memory allocation failures are exposed in copyErrorTo()
+        if (other.fPtr.dfs != nullptr) {
+            fPtr.dfs = new DecimalFormatSymbols(*other.fPtr.dfs);
+        } else {
+            fPtr.dfs = nullptr;
+        }
+        break;
+    case SYMPTR_NS:
+        // Memory allocation failures are exposed in copyErrorTo()
+        if (other.fPtr.ns != nullptr) {
+            fPtr.ns = new NumberingSystem(*other.fPtr.ns);
+        } else {
+            fPtr.ns = nullptr;
+        }
+        break;
+    }
+}
+
+void SymbolsWrapper::doMoveFrom(SymbolsWrapper &&src) {
+    fType = src.fType;
+    switch (fType) {
+    case SYMPTR_NONE:
+        // No action necessary
+        break;
+    case SYMPTR_DFS:
+        fPtr.dfs = src.fPtr.dfs;
+        src.fPtr.dfs = nullptr;
+        break;
+    case SYMPTR_NS:
+        fPtr.ns = src.fPtr.ns;
+        src.fPtr.ns = nullptr;
+        break;
+    }
+}
+
+void SymbolsWrapper::doCleanup() {
+    switch (fType) {
+    case SYMPTR_NONE:
+        // No action necessary
+        break;
+    case SYMPTR_DFS:
+        delete fPtr.dfs;
+        break;
+    case SYMPTR_NS:
+        delete fPtr.ns;
+        break;
+    }
+}
+
+bool SymbolsWrapper::isDecimalFormatSymbols() const {
+    return fType == SYMPTR_DFS;
+}
+
+bool SymbolsWrapper::isNumberingSystem() const {
+    return fType == SYMPTR_NS;
+}
+
+const DecimalFormatSymbols *SymbolsWrapper::getDecimalFormatSymbols() const {
+    U_ASSERT(fType == SYMPTR_DFS);
+    return fPtr.dfs;
+}
+
+const NumberingSystem *SymbolsWrapper::getNumberingSystem() const {
+    U_ASSERT(fType == SYMPTR_NS);
+    return fPtr.ns;
+}
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/number_types.h b/icu4c/source/i18n/number_types.h
index 5c2b8cf..8078851 100644
--- a/icu4c/source/i18n/number_types.h
+++ b/icu4c/source/i18n/number_types.h
@@ -246,31 +246,31 @@
  * itself. The {@link #processQuantity} method performs the final step in the number processing pipeline: it uses the
  * quantity to generate a finalized {@link MicroProps}, which can be used to render the number to output.
  *
- * <p>
  * In other words, this interface is used for the parts of number processing that are <em>quantity-dependent</em>.
  *
- * <p>
  * In order to allow for multiple different objects to all mutate the same MicroProps, a "chain" of MicroPropsGenerators
  * are linked together, and each one is responsible for manipulating a certain quantity-dependent part of the
  * MicroProps. At the tail of the linked list is a base instance of {@link MicroProps} with properties that are not
  * quantity-dependent. Each element in the linked list calls {@link #processQuantity} on its "parent", then does its
  * work, and then returns the result.
  *
+ * This chain of MicroPropsGenerators is typically constructed by NumberFormatterImpl::macrosToMicroGenerator() when
+ * constructing a NumberFormatter.
+ *
  * Exported as U_I18N_API because it is a base class for other exported types
  *
  */
 class U_I18N_API MicroPropsGenerator {
   public:
-    virtual ~MicroPropsGenerator();
+    virtual ~MicroPropsGenerator() = default;
 
     /**
-     * Considers the given {@link DecimalQuantity}, optionally mutates it, and returns a {@link MicroProps}.
+     * Considers the given {@link DecimalQuantity}, optionally mutates it, and
+     * populates a {@link MicroProps} instance.
      *
-     * @param quantity
-     *            The quantity for consideration and optional mutation.
-     * @param micros
-     *            The MicroProps instance to populate.
-     * @return A MicroProps instance resolved for the quantity.
+     * @param quantity The quantity for consideration and optional mutation.
+     * @param micros The MicroProps instance to populate. It will be modified as
+     *   needed for the given quantity.
      */
     virtual void processQuantity(DecimalQuantity& quantity, MicroProps& micros,
                                  UErrorCode& status) const = 0;
diff --git a/icu4c/source/i18n/number_usageprefs.cpp b/icu4c/source/i18n/number_usageprefs.cpp
new file mode 100644
index 0000000..0d9cb06
--- /dev/null
+++ b/icu4c/source/i18n/number_usageprefs.cpp
@@ -0,0 +1,208 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "number_usageprefs.h"
+#include "cstring.h"
+#include "number_decimalquantity.h"
+#include "number_microprops.h"
+#include "number_roundingutils.h"
+#include "number_skeletons.h"
+#include "unicode/char16ptr.h"
+#include "unicode/currunit.h"
+#include "unicode/fmtable.h"
+#include "unicode/measure.h"
+#include "unicode/numberformatter.h"
+#include "unicode/platform.h"
+#include "unicode/unum.h"
+#include "unicode/urename.h"
+#include "units_data.h"
+
+using namespace icu;
+using namespace icu::number;
+using namespace icu::number::impl;
+using icu::StringSegment;
+using icu::units::ConversionRates;
+
+// Copy constructor
+Usage::Usage(const Usage &other) : Usage() {
+    this->operator=(other);
+}
+
+// Copy assignment operator
+Usage &Usage::operator=(const Usage &other) {
+    fLength = 0;
+    fError = other.fError;
+    if (fUsage != nullptr) {
+        uprv_free(fUsage);
+        fUsage = nullptr;
+    }
+    if (other.fUsage == nullptr) {
+        return *this;
+    }
+    if (U_FAILURE(other.fError)) {
+        // We don't bother trying to allocating memory if we're in any case busy
+        // copying an errored Usage.
+        return *this;
+    }
+    fUsage = (char *)uprv_malloc(other.fLength + 1);
+    if (fUsage == nullptr) {
+        fError = U_MEMORY_ALLOCATION_ERROR;
+        return *this;
+    }
+    fLength = other.fLength;
+    uprv_strncpy(fUsage, other.fUsage, fLength + 1);
+    return *this;
+}
+
+// Move constructor
+Usage::Usage(Usage &&src) U_NOEXCEPT : fUsage(src.fUsage), fLength(src.fLength), fError(src.fError) {
+    // Take ownership away from src if necessary
+    src.fUsage = nullptr;
+}
+
+// Move assignment operator
+Usage &Usage::operator=(Usage &&src) U_NOEXCEPT {
+    if (this == &src) {
+        return *this;
+    }
+    if (fUsage != nullptr) {
+        uprv_free(fUsage);
+    }
+    fUsage = src.fUsage;
+    fLength = src.fLength;
+    fError = src.fError;
+    // Take ownership away from src if necessary
+    src.fUsage = nullptr;
+    return *this;
+}
+
+Usage::~Usage() {
+    if (fUsage != nullptr) {
+        uprv_free(fUsage);
+        fUsage = nullptr;
+    }
+}
+
+void Usage::set(StringPiece value) {
+    if (fUsage != nullptr) {
+        uprv_free(fUsage);
+        fUsage = nullptr;
+    }
+    fLength = value.length();
+    fUsage = (char *)uprv_malloc(fLength + 1);
+    if (fUsage == nullptr) {
+        fLength = 0;
+        fError = U_MEMORY_ALLOCATION_ERROR;
+        return;
+    }
+    uprv_strncpy(fUsage, value.data(), fLength);
+    fUsage[fLength] = 0;
+}
+
+// Populates micros.mixedMeasures and modifies quantity, based on the values in
+// measures.
+void mixedMeasuresToMicros(const MaybeStackVector<Measure> &measures, DecimalQuantity *quantity,
+                           MicroProps *micros, UErrorCode status) {
+    micros->mixedMeasuresCount = measures.length() - 1;
+    if (micros->mixedMeasuresCount > 0) {
+#ifdef U_DEBUG
+        U_ASSERT(micros->outputUnit.getComplexity(status) == UMEASURE_UNIT_MIXED);
+        U_ASSERT(U_SUCCESS(status));
+        // Check that we received measurements with the expected MeasureUnits:
+        MeasureUnitImpl temp;
+        const MeasureUnitImpl& impl = MeasureUnitImpl::forMeasureUnit(micros->outputUnit, temp, status);
+        U_ASSERT(U_SUCCESS(status));
+        U_ASSERT(measures.length() == impl.units.length());
+        for (int32_t i = 0; i < measures.length(); i++) {
+            U_ASSERT(measures[i]->getUnit() == impl.units[i]->build(status));
+        }
+        (void)impl;
+#endif
+        // Mixed units: except for the last value, we pass all values to the
+        // LongNameHandler via micros->mixedMeasures.
+        if (micros->mixedMeasures.getCapacity() < micros->mixedMeasuresCount) {
+            if (micros->mixedMeasures.resize(micros->mixedMeasuresCount) == nullptr) {
+                status = U_MEMORY_ALLOCATION_ERROR;
+                return;
+            }
+        }
+        for (int32_t i = 0; i < micros->mixedMeasuresCount; i++) {
+            micros->mixedMeasures[i] = measures[i]->getNumber().getInt64();
+        }
+    } else {
+        micros->mixedMeasuresCount = 0;
+    }
+    // The last value (potentially the only value) gets passed on via quantity.
+    quantity->setToDouble(measures[measures.length() - 1]->getNumber().getDouble());
+}
+
+UsagePrefsHandler::UsagePrefsHandler(const Locale &locale,
+                                     const MeasureUnit &inputUnit,
+                                     const StringPiece usage,
+                                     const MicroPropsGenerator *parent,
+                                     UErrorCode &status)
+    : fUnitsRouter(inputUnit, StringPiece(locale.getCountry()), usage, status),
+      fParent(parent) {
+}
+
+void UsagePrefsHandler::processQuantity(DecimalQuantity &quantity, MicroProps &micros,
+                                        UErrorCode &status) const {
+    fParent->processQuantity(quantity, micros, status);
+    if (U_FAILURE(status)) {
+        return;
+    }
+
+    quantity.roundToInfinity(); // Enables toDouble
+    const units::RouteResult routed = fUnitsRouter.route(quantity.toDouble(), &micros.rounder, status);
+    if (U_FAILURE(status)) {
+        return;
+    }
+    const MaybeStackVector<Measure>& routedMeasures = routed.measures;
+    micros.outputUnit = routed.outputUnit.copy(status).build(status);
+    if (U_FAILURE(status)) {
+        return;
+    }
+
+    mixedMeasuresToMicros(routedMeasures, &quantity, &micros, status);
+}
+
+UnitConversionHandler::UnitConversionHandler(const MeasureUnit &inputUnit, const MeasureUnit &outputUnit,
+                                             const MicroPropsGenerator *parent, UErrorCode &status)
+    : fOutputUnit(outputUnit), fParent(parent) {
+    MeasureUnitImpl tempInput, tempOutput;
+    const MeasureUnitImpl &inputUnitImpl = MeasureUnitImpl::forMeasureUnit(inputUnit, tempInput, status);
+    const MeasureUnitImpl &outputUnitImpl =
+        MeasureUnitImpl::forMeasureUnit(outputUnit, tempOutput, status);
+
+    // TODO: this should become an initOnce thing? Review with other
+    // ConversionRates usages.
+    ConversionRates conversionRates(status);
+    if (U_FAILURE(status)) {
+        return;
+    }
+    fUnitConverter.adoptInsteadAndCheckErrorCode(
+        new ComplexUnitsConverter(inputUnitImpl, outputUnitImpl, conversionRates, status), status);
+}
+
+void UnitConversionHandler::processQuantity(DecimalQuantity &quantity, MicroProps &micros,
+                                            UErrorCode &status) const {
+    fParent->processQuantity(quantity, micros, status);
+    if (U_FAILURE(status)) {
+        return;
+    }
+    quantity.roundToInfinity(); // Enables toDouble
+    MaybeStackVector<Measure> measures =
+        fUnitConverter->convert(quantity.toDouble(), &micros.rounder, status);
+    micros.outputUnit = fOutputUnit;
+    if (U_FAILURE(status)) {
+        return;
+    }
+
+    mixedMeasuresToMicros(measures, &quantity, &micros, status);
+}
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/number_usageprefs.h b/icu4c/source/i18n/number_usageprefs.h
new file mode 100644
index 0000000..9e8bd93
--- /dev/null
+++ b/icu4c/source/i18n/number_usageprefs.h
@@ -0,0 +1,125 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+#ifndef __NUMBER_USAGEPREFS_H__
+#define __NUMBER_USAGEPREFS_H__
+
+#include "cmemory.h"
+#include "number_types.h"
+#include "unicode/listformatter.h"
+#include "unicode/localpointer.h"
+#include "unicode/locid.h"
+#include "unicode/measunit.h"
+#include "unicode/stringpiece.h"
+#include "unicode/uobject.h"
+#include "units_converter.h"
+#include "units_router.h"
+
+U_NAMESPACE_BEGIN
+
+using ::icu::units::ComplexUnitsConverter;
+using ::icu::units::UnitsRouter;
+
+namespace number {
+namespace impl {
+
+/**
+ * A MicroPropsGenerator which uses UnitsRouter to produce output converted to a
+ * MeasureUnit appropriate for a particular localized usage: see
+ * NumberFormatterSettings::usage().
+ */
+class U_I18N_API UsagePrefsHandler : public MicroPropsGenerator, public UMemory {
+  public:
+    UsagePrefsHandler(const Locale &locale, const MeasureUnit &inputUnit, const StringPiece usage,
+                      const MicroPropsGenerator *parent, UErrorCode &status);
+
+    /**
+     * Obtains the appropriate output value, MeasureUnit and
+     * rounding/precision behaviour from the UnitsRouter.
+     *
+     * The output unit is passed on to the LongNameHandler via
+     * micros.outputUnit.
+     */
+    void processQuantity(DecimalQuantity &quantity, MicroProps &micros,
+                         UErrorCode &status) const U_OVERRIDE;
+
+    /**
+     * Returns the list of possible output units, i.e. the full set of
+     * preferences, for the localized, usage-specific unit preferences.
+     *
+     * The returned pointer should be valid for the lifetime of the
+     * UsagePrefsHandler instance.
+     */
+    const MaybeStackVector<MeasureUnit> *getOutputUnits() const {
+        return fUnitsRouter.getOutputUnits();
+    }
+
+  private:
+    UnitsRouter fUnitsRouter;
+    const MicroPropsGenerator *fParent;
+};
+
+} // namespace impl
+} // namespace number
+
+// Export explicit template instantiations of LocalPointerBase and LocalPointer.
+// This is required when building DLLs for Windows. (See datefmt.h,
+// collationiterator.h, erarules.h and others for similar examples.)
+//
+// Note: These need to be outside of the number::impl namespace, or Clang will
+// generate a compile error.
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+#if defined(_MSC_VER)
+// Ignore warning 4661 as LocalPointerBase does not use operator== or operator!=
+#pragma warning(push)
+#pragma warning(disable: 4661)
+#endif
+template class U_I18N_API LocalPointerBase<ComplexUnitsConverter>;
+template class U_I18N_API LocalPointer<ComplexUnitsConverter>;
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+#endif
+
+namespace number {
+namespace impl {
+
+/**
+ * A MicroPropsGenerator which converts a measurement from one MeasureUnit to
+ * another. In particular, the output MeasureUnit may be a mixed unit. (The
+ * input unit may not be a mixed unit.)
+ */
+class U_I18N_API UnitConversionHandler : public MicroPropsGenerator, public UMemory {
+  public:
+    /**
+     * Constructor.
+     *
+     * @param inputUnit Specifies the input MeasureUnit. Mixed units are not
+     *     supported as input (because input is just a single decimal quantity).
+     * @param outputUnit Specifies the output MeasureUnit.
+     * @param parent The parent MicroPropsGenerator.
+     * @param status Receives status.
+     */
+    UnitConversionHandler(const MeasureUnit &inputUnit, const MeasureUnit &outputUnit,
+                          const MicroPropsGenerator *parent, UErrorCode &status);
+
+    /**
+     * Obtains the appropriate output values from the Unit Converter.
+     */
+    void processQuantity(DecimalQuantity &quantity, MicroProps &micros,
+                         UErrorCode &status) const U_OVERRIDE;
+  private:
+    MeasureUnit fOutputUnit;
+    LocalPointer<ComplexUnitsConverter> fUnitConverter;
+    const MicroPropsGenerator *fParent;
+};
+
+} // namespace impl
+} // namespace number
+U_NAMESPACE_END
+
+#endif // __NUMBER_USAGEPREFS_H__
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/number_utils.cpp b/icu4c/source/i18n/number_utils.cpp
index 91d7f33..bef7ea6 100644
--- a/icu4c/source/i18n/number_utils.cpp
+++ b/icu4c/source/i18n/number_utils.cpp
@@ -258,7 +258,10 @@
     }
     // "string must be at least dn->digits+14 characters long"
     int32_t minCapacity = fData.getAlias()->digits + 14;
-    MaybeStackArray<char, 30> buffer(minCapacity);
+    MaybeStackArray<char, 30> buffer(minCapacity, status);
+    if (U_FAILURE(status)) {
+        return;
+    }
     uprv_decNumberToString(fData, buffer.getAlias());
     output.Append(buffer.getAlias(), static_cast<int32_t>(uprv_strlen(buffer.getAlias())));
 }
diff --git a/icu4c/source/i18n/number_utils.h b/icu4c/source/i18n/number_utils.h
index 93195f0..bc369c9 100644
--- a/icu4c/source/i18n/number_utils.h
+++ b/icu4c/source/i18n/number_utils.h
@@ -49,8 +49,8 @@
     return uprv_strcmp("currency", unit.getType()) == 0;
 }
 
-inline bool unitIsNoUnit(const MeasureUnit& unit) {
-    return uprv_strcmp("none", unit.getType()) == 0;
+inline bool unitIsBaseUnit(const MeasureUnit& unit) {
+    return unit == MeasureUnit();
 }
 
 inline bool unitIsPercent(const MeasureUnit& unit) {
diff --git a/icu4c/source/i18n/number_utypes.h b/icu4c/source/i18n/number_utypes.h
index 7a1b7a4..d97eadc 100644
--- a/icu4c/source/i18n/number_utypes.h
+++ b/icu4c/source/i18n/number_utypes.h
@@ -28,9 +28,6 @@
  * This struct is held internally by the C++ version FormattedNumber since the member types are not
  * declared in the public header file.
  *
- * The DecimalQuantity is not currently being used by FormattedNumber, but at some point it could be used
- * to add a toDecNumber() or similar method.
- *
  * Exported as U_I18N_API for tests
  */
 class U_I18N_API UFormattedNumberData : public FormattedValueStringBuilderImpl {
@@ -38,7 +35,13 @@
     UFormattedNumberData() : FormattedValueStringBuilderImpl(kUndefinedField) {}
     virtual ~UFormattedNumberData();
 
+    // The formatted quantity.
     DecimalQuantity quantity;
+
+    // The output unit for the formatted quantity.
+    // TODO(units,hugovdm): populate this correctly for the general case - it's
+    // currently only implemented for the .usage() use case.
+    MeasureUnit outputUnit;
 };
 
 
diff --git a/icu4c/source/i18n/numparse_affixes.cpp b/icu4c/source/i18n/numparse_affixes.cpp
index ca293e7..cef1685 100644
--- a/icu4c/source/i18n/numparse_affixes.cpp
+++ b/icu4c/source/i18n/numparse_affixes.cpp
@@ -127,8 +127,8 @@
     fMatchers[fMatchersLen++] = &matcher;
 }
 
-AffixPatternMatcher AffixPatternMatcherBuilder::build() {
-    return AffixPatternMatcher(fMatchers, fMatchersLen, fPattern);
+AffixPatternMatcher AffixPatternMatcherBuilder::build(UErrorCode& status) {
+    return AffixPatternMatcher(fMatchers, fMatchersLen, fPattern, status);
 }
 
 AffixTokenMatcherWarehouse::AffixTokenMatcherWarehouse(const AffixTokenMatcherSetupData* setupData)
@@ -209,12 +209,13 @@
 
     AffixPatternMatcherBuilder builder(affixPattern, tokenWarehouse, ignorables);
     AffixUtils::iterateWithConsumer(affixPattern, builder, status);
-    return builder.build();
+    return builder.build(status);
 }
 
 AffixPatternMatcher::AffixPatternMatcher(MatcherArray& matchers, int32_t matchersLen,
-                                         const UnicodeString& pattern)
-        : ArraySeriesMatcher(matchers, matchersLen), fPattern(pattern) {}
+                                         const UnicodeString& pattern, UErrorCode& status)
+    : ArraySeriesMatcher(matchers, matchersLen), fPattern(pattern, status) {
+}
 
 UnicodeString AffixPatternMatcher::getPattern() const {
     return fPattern.toAliasedUnicodeString();
@@ -446,28 +447,3 @@
 
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/icu4c/source/i18n/numparse_affixes.h b/icu4c/source/i18n/numparse_affixes.h
index 97a17f4..a82b731 100644
--- a/icu4c/source/i18n/numparse_affixes.h
+++ b/icu4c/source/i18n/numparse_affixes.h
@@ -128,7 +128,7 @@
     void consumeToken(::icu::number::impl::AffixPatternType type, UChar32 cp, UErrorCode& status) override;
 
     /** NOTE: You can build only once! */
-    AffixPatternMatcher build();
+    AffixPatternMatcher build(UErrorCode& status);
 
   private:
     ArraySeriesMatcher::MatcherArray fMatchers;
@@ -160,7 +160,8 @@
   private:
     CompactUnicodeString<4> fPattern;
 
-    AffixPatternMatcher(MatcherArray& matchers, int32_t matchersLen, const UnicodeString& pattern);
+    AffixPatternMatcher(MatcherArray& matchers, int32_t matchersLen, const UnicodeString& pattern,
+                        UErrorCode& status);
 
     friend class AffixPatternMatcherBuilder;
 };
diff --git a/icu4c/source/i18n/numparse_types.h b/icu4c/source/i18n/numparse_types.h
index b4007c2..623f0e8 100644
--- a/icu4c/source/i18n/numparse_types.h
+++ b/icu4c/source/i18n/numparse_types.h
@@ -64,14 +64,15 @@
         fBuffer[0] = 0;
     }
 
-    CompactUnicodeString(const UnicodeString& text)
-            : fBuffer(text.length() + 1) {
+    CompactUnicodeString(const UnicodeString& text, UErrorCode& status)
+            : fBuffer(text.length() + 1, status) {
+        if (U_FAILURE(status)) { return; }
         uprv_memcpy(fBuffer.getAlias(), text.getBuffer(), sizeof(UChar) * text.length());
         fBuffer[text.length()] = 0;
     }
 
     inline UnicodeString toAliasedUnicodeString() const {
-        return UnicodeString(TRUE, fBuffer.getAlias(), -1);
+        return UnicodeString(true, fBuffer.getAlias(), -1);
     }
 
     bool operator==(const CompactUnicodeString& other) const {
diff --git a/icu4c/source/i18n/numrange_capi.cpp b/icu4c/source/i18n/numrange_capi.cpp
new file mode 100644
index 0000000..a440a53
--- /dev/null
+++ b/icu4c/source/i18n/numrange_capi.cpp
@@ -0,0 +1,193 @@
+// © 2018 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+// Allow implicit conversion from char16_t* to UnicodeString for this file:
+// Helpful in toString methods and elsewhere.
+#define UNISTR_FROM_STRING_EXPLICIT
+
+#include "fphdlimp.h"
+#include "number_utypes.h"
+#include "numparse_types.h"
+#include "formattedval_impl.h"
+#include "numrange_impl.h"
+#include "number_decnum.h"
+#include "unicode/numberrangeformatter.h"
+#include "unicode/unumberrangeformatter.h"
+
+using namespace icu;
+using namespace icu::number;
+using namespace icu::number::impl;
+
+
+U_NAMESPACE_BEGIN
+namespace number {
+namespace impl {
+
+/**
+ * Implementation class for UNumberRangeFormatter. Wraps a LocalizedRangeNumberFormatter.
+ */
+struct UNumberRangeFormatterData : public UMemory,
+        // Magic number as ASCII == "NRF" (NumberRangeFormatter)
+        public IcuCApiHelper<UNumberRangeFormatter, UNumberRangeFormatterData, 0x4E524600> {
+    LocalizedNumberRangeFormatter fFormatter;
+};
+
+struct UFormattedNumberRangeImpl;
+
+// Magic number as ASCII == "FDN" (FormatteDNumber)
+typedef IcuCApiHelper<UFormattedNumberRange, UFormattedNumberRangeImpl, 0x46444E00> UFormattedNumberRangeApiHelper;
+
+struct UFormattedNumberRangeImpl : public UFormattedValueImpl, public UFormattedNumberRangeApiHelper {
+    UFormattedNumberRangeImpl();
+    ~UFormattedNumberRangeImpl();
+
+    FormattedNumberRange fImpl;
+    UFormattedNumberRangeData fData;
+};
+
+UFormattedNumberRangeImpl::UFormattedNumberRangeImpl()
+        : fImpl(&fData) {
+    fFormattedValue = &fImpl;
+}
+
+UFormattedNumberRangeImpl::~UFormattedNumberRangeImpl() {
+    // Disown the data from fImpl so it doesn't get deleted twice
+    fImpl.fData = nullptr;
+}
+
+} // namespace impl
+} // namespace number
+U_NAMESPACE_END
+
+
+UPRV_FORMATTED_VALUE_CAPI_NO_IMPLTYPE_AUTO_IMPL(
+    UFormattedNumberRange,
+    UFormattedNumberRangeImpl,
+    UFormattedNumberRangeApiHelper,
+    unumrf)
+
+
+const UFormattedNumberRangeData* number::impl::validateUFormattedNumberRange(
+        const UFormattedNumberRange* uresult, UErrorCode& status) {
+    auto* result = UFormattedNumberRangeApiHelper::validate(uresult, status);
+    if (U_FAILURE(status)) {
+        return nullptr;
+    }
+    return &result->fData;
+}
+
+
+U_CAPI UNumberRangeFormatter* U_EXPORT2
+unumrf_openForSkeletonWithCollapseAndIdentityFallback(
+        const UChar* skeleton,
+        int32_t skeletonLen,
+        UNumberRangeCollapse collapse,
+        UNumberRangeIdentityFallback identityFallback,
+        const char* locale,
+        UParseError* perror,
+        UErrorCode* ec) {
+    auto* impl = new UNumberRangeFormatterData();
+    if (impl == nullptr) {
+        *ec = U_MEMORY_ALLOCATION_ERROR;
+        return nullptr;
+    }
+    // Readonly-alias constructor (first argument is whether we are NUL-terminated)
+    UnicodeString skeletonString(skeletonLen == -1, skeleton, skeletonLen);
+    impl->fFormatter = NumberRangeFormatter::withLocale(locale)
+        .numberFormatterBoth(NumberFormatter::forSkeleton(skeletonString, *perror, *ec))
+        .collapse(collapse)
+        .identityFallback(identityFallback);
+    return impl->exportForC();
+}
+
+U_CAPI void U_EXPORT2
+unumrf_formatDoubleRange(
+        const UNumberRangeFormatter* uformatter,
+        double first,
+        double second,
+        UFormattedNumberRange* uresult,
+        UErrorCode* ec) {
+    const UNumberRangeFormatterData* formatter = UNumberRangeFormatterData::validate(uformatter, *ec);
+    auto* result = UFormattedNumberRangeApiHelper::validate(uresult, *ec);
+    if (U_FAILURE(*ec)) { return; }
+
+    result->fData.getStringRef().clear();
+    result->fData.quantity1.setToDouble(first);
+    result->fData.quantity2.setToDouble(second);
+    formatter->fFormatter.formatImpl(result->fData, first == second, *ec);
+}
+
+U_CAPI void U_EXPORT2
+unumrf_formatDecimalRange(
+        const UNumberRangeFormatter* uformatter,
+        const char* first, int32_t firstLen,
+        const char* second, int32_t secondLen,
+        UFormattedNumberRange* uresult,
+        UErrorCode* ec) {
+    const UNumberRangeFormatterData* formatter = UNumberRangeFormatterData::validate(uformatter, *ec);
+    auto* result = UFormattedNumberRangeApiHelper::validate(uresult, *ec);
+    if (U_FAILURE(*ec)) { return; }
+
+    result->fData.getStringRef().clear();
+    result->fData.quantity1.setToDecNumber({first, firstLen}, *ec);
+    result->fData.quantity2.setToDecNumber({second, secondLen}, *ec);
+    formatter->fFormatter.formatImpl(result->fData, first == second, *ec);
+}
+
+U_CAPI UNumberRangeIdentityResult U_EXPORT2
+unumrf_resultGetIdentityResult(
+        const UFormattedNumberRange* uresult,
+        UErrorCode* ec) {
+    auto* result = UFormattedNumberRangeApiHelper::validate(uresult, *ec);
+    if (U_FAILURE(*ec)) {
+        return UNUM_IDENTITY_RESULT_COUNT;
+    }
+    return result->fData.identityResult;
+}
+
+U_CAPI int32_t U_EXPORT2
+unumrf_resultGetFirstDecimalNumber(
+        const UFormattedNumberRange* uresult,
+        char* dest,
+        int32_t destCapacity,
+        UErrorCode* ec) {
+    const auto* result = UFormattedNumberRangeApiHelper::validate(uresult, *ec);
+    if (U_FAILURE(*ec)) {
+        return 0;
+    }
+    DecNum decnum;
+    return result->fData.quantity1.toDecNum(decnum, *ec)
+        .toCharString(*ec)
+        .extract(dest, destCapacity, *ec);
+}
+
+U_CAPI int32_t U_EXPORT2
+unumrf_resultGetSecondDecimalNumber(
+        const UFormattedNumberRange* uresult,
+        char* dest,
+        int32_t destCapacity,
+        UErrorCode* ec) {
+    const auto* result = UFormattedNumberRangeApiHelper::validate(uresult, *ec);
+    if (U_FAILURE(*ec)) {
+        return 0;
+    }
+    DecNum decnum;
+    return result->fData.quantity2
+        .toDecNum(decnum, *ec)
+        .toCharString(*ec)
+        .extract(dest, destCapacity, *ec);
+}
+
+U_CAPI void U_EXPORT2
+unumrf_close(UNumberRangeFormatter* f) {
+    UErrorCode localStatus = U_ZERO_ERROR;
+    const UNumberRangeFormatterData* impl = UNumberRangeFormatterData::validate(f, localStatus);
+    delete impl;
+}
+
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/numrange_fluent.cpp b/icu4c/source/i18n/numrange_fluent.cpp
index 3317902..d9286d1 100644
--- a/icu4c/source/i18n/numrange_fluent.cpp
+++ b/icu4c/source/i18n/numrange_fluent.cpp
@@ -12,6 +12,7 @@
 #include "numrange_impl.h"
 #include "util.h"
 #include "number_utypes.h"
+#include "number_decnum.h"
 
 using namespace icu;
 using namespace icu::number;
@@ -375,28 +376,4 @@
 }
 
 
-UPRV_FORMATTED_VALUE_SUBCLASS_AUTO_IMPL(FormattedNumberRange)
-
-#define UPRV_NOARG
-
-UnicodeString FormattedNumberRange::getFirstDecimal(UErrorCode& status) const {
-    UPRV_FORMATTED_VALUE_METHOD_GUARD(ICU_Utility::makeBogusString())
-    return fData->quantity1.toScientificString();
-}
-
-UnicodeString FormattedNumberRange::getSecondDecimal(UErrorCode& status) const {
-    UPRV_FORMATTED_VALUE_METHOD_GUARD(ICU_Utility::makeBogusString())
-    return fData->quantity2.toScientificString();
-}
-
-UNumberRangeIdentityResult FormattedNumberRange::getIdentityResult(UErrorCode& status) const {
-    UPRV_FORMATTED_VALUE_METHOD_GUARD(UNUM_IDENTITY_RESULT_NOT_EQUAL)
-    return fData->identityResult;
-}
-
-
-UFormattedNumberRangeData::~UFormattedNumberRangeData() = default;
-
-
-
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/numrange_impl.cpp b/icu4c/source/i18n/numrange_impl.cpp
index 9fb3dee..3aae5c2 100644
--- a/icu4c/source/i18n/numrange_impl.cpp
+++ b/icu4c/source/i18n/numrange_impl.cpp
@@ -12,6 +12,7 @@
 #include "unicode/numberrangeformatter.h"
 #include "numrange_impl.h"
 #include "patternprops.h"
+#include "pluralranges.h"
 #include "uresimp.h"
 #include "util.h"
 
@@ -106,92 +107,9 @@
     sink.fillInDefaults(status);
 }
 
-class PluralRangesDataSink : public ResourceSink {
-  public:
-    PluralRangesDataSink(StandardPluralRanges& output) : fOutput(output) {}
-
-    void put(const char* /*key*/, ResourceValue& value, UBool /*noFallback*/, UErrorCode& status) U_OVERRIDE {
-        ResourceArray entriesArray = value.getArray(status);
-        if (U_FAILURE(status)) { return; }
-        fOutput.setCapacity(entriesArray.getSize());
-        for (int i = 0; entriesArray.getValue(i, value); i++) {
-            ResourceArray pluralFormsArray = value.getArray(status);
-            if (U_FAILURE(status)) { return; }
-            pluralFormsArray.getValue(0, value);
-            StandardPlural::Form first = StandardPlural::fromString(value.getUnicodeString(status), status);
-            if (U_FAILURE(status)) { return; }
-            pluralFormsArray.getValue(1, value);
-            StandardPlural::Form second = StandardPlural::fromString(value.getUnicodeString(status), status);
-            if (U_FAILURE(status)) { return; }
-            pluralFormsArray.getValue(2, value);
-            StandardPlural::Form result = StandardPlural::fromString(value.getUnicodeString(status), status);
-            if (U_FAILURE(status)) { return; }
-            fOutput.addPluralRange(first, second, result);
-        }
-    }
-
-  private:
-    StandardPluralRanges& fOutput;
-};
-
-void getPluralRangesData(const Locale& locale, StandardPluralRanges& output, UErrorCode& status) {
-    if (U_FAILURE(status)) { return; }
-    LocalUResourceBundlePointer rb(ures_openDirect(nullptr, "pluralRanges", &status));
-    if (U_FAILURE(status)) { return; }
-
-    CharString dataPath;
-    dataPath.append("locales/", -1, status);
-    dataPath.append(locale.getLanguage(), -1, status);
-    if (U_FAILURE(status)) { return; }
-    int32_t setLen;
-    // Not all languages are covered: fail gracefully
-    UErrorCode internalStatus = U_ZERO_ERROR;
-    const UChar* set = ures_getStringByKeyWithFallback(rb.getAlias(), dataPath.data(), &setLen, &internalStatus);
-    if (U_FAILURE(internalStatus)) { return; }
-
-    dataPath.clear();
-    dataPath.append("rules/", -1, status);
-    dataPath.appendInvariantChars(set, setLen, status);
-    if (U_FAILURE(status)) { return; }
-    PluralRangesDataSink sink(output);
-    ures_getAllItemsWithFallback(rb.getAlias(), dataPath.data(), sink, status);
-    if (U_FAILURE(status)) { return; }
-}
-
 } // namespace
 
 
-void StandardPluralRanges::initialize(const Locale& locale, UErrorCode& status) {
-    getPluralRangesData(locale, *this, status);
-}
-
-void StandardPluralRanges::addPluralRange(
-        StandardPlural::Form first,
-        StandardPlural::Form second,
-        StandardPlural::Form result) {
-    U_ASSERT(fTriplesLen < fTriples.getCapacity());
-    fTriples[fTriplesLen] = {first, second, result};
-    fTriplesLen++;
-}
-
-void StandardPluralRanges::setCapacity(int32_t length) {
-    if (length > fTriples.getCapacity()) {
-        fTriples.resize(length, 0);
-    }
-}
-
-StandardPlural::Form
-StandardPluralRanges::resolve(StandardPlural::Form first, StandardPlural::Form second) const {
-    for (int32_t i=0; i<fTriplesLen; i++) {
-        const auto& triple = fTriples[i];
-        if (triple.first == first && triple.second == second) {
-            return triple.result;
-        }
-    }
-    // Default fallback
-    return StandardPlural::OTHER;
-}
-
 
 NumberRangeFormatterImpl::NumberRangeFormatterImpl(const RangeMacroProps& macros, UErrorCode& status)
     : formatterImpl1(macros.formatter1.fMacros, status),
@@ -213,7 +131,7 @@
     fApproximatelyModifier = {data.approximatelyPattern, kUndefinedField, false};
 
     // TODO: Get locale from PluralRules instead?
-    fPluralRanges.initialize(macros.locale, status);
+    fPluralRanges = StandardPluralRanges::forLocale(macros.locale, status);
     if (U_FAILURE(status)) { return; }
 }
 
diff --git a/icu4c/source/i18n/numrange_impl.h b/icu4c/source/i18n/numrange_impl.h
index 8f4c8a4..b81a311 100644
--- a/icu4c/source/i18n/numrange_impl.h
+++ b/icu4c/source/i18n/numrange_impl.h
@@ -15,6 +15,7 @@
 #include "number_formatimpl.h"
 #include "formatted_string_builder.h"
 #include "formattedval_impl.h"
+#include "pluralranges.h"
 
 U_NAMESPACE_BEGIN namespace number {
 namespace impl {
@@ -40,36 +41,6 @@
 };
 
 
-class StandardPluralRanges : public UMemory {
-  public:
-    void initialize(const Locale& locale, UErrorCode& status);
-    StandardPlural::Form resolve(StandardPlural::Form first, StandardPlural::Form second) const;
-
-    /** Used for data loading. */
-    void addPluralRange(
-        StandardPlural::Form first,
-        StandardPlural::Form second,
-        StandardPlural::Form result);
-
-    /** Used for data loading. */
-    void setCapacity(int32_t length);
-
-  private:
-    struct StandardPluralRangeTriple {
-        StandardPlural::Form first;
-        StandardPlural::Form second;
-        StandardPlural::Form result;
-    };
-
-    // TODO: An array is simple here, but it results in linear lookup time.
-    // Certain locales have 20-30 entries in this list.
-    // Consider changing to a smarter data structure.
-    typedef MaybeStackArray<StandardPluralRangeTriple, 3> PluralRangeTriples;
-    PluralRangeTriples fTriples;
-    int32_t fTriplesLen = 0;
-};
-
-
 class NumberRangeFormatterImpl : public UMemory {
   public:
     NumberRangeFormatterImpl(const RangeMacroProps& macros, UErrorCode& status);
@@ -105,6 +76,11 @@
 };
 
 
+/** Helper function used in upluralrules.cpp */
+const UFormattedNumberRangeData* validateUFormattedNumberRange(
+    const UFormattedNumberRange* uresult, UErrorCode& status);
+
+
 } // namespace impl
 } // namespace number
 U_NAMESPACE_END
diff --git a/icu4c/source/i18n/olsontz.cpp b/icu4c/source/i18n/olsontz.cpp
index d21e6e9..4873caa 100644
--- a/icu4c/source/i18n/olsontz.cpp
+++ b/icu4c/source/i18n/olsontz.cpp
@@ -197,58 +197,60 @@
         }
 
         // Process final rule and data, if any
-        const UChar *ruleIdUStr = ures_getStringByKey(res, kFINALRULE, &len, &ec);
-        ures_getByKey(res, kFINALRAW, r.getAlias(), &ec);
-        int32_t ruleRaw = ures_getInt(r.getAlias(), &ec);
-        ures_getByKey(res, kFINALYEAR, r.getAlias(), &ec);
-        int32_t ruleYear = ures_getInt(r.getAlias(), &ec);
         if (U_SUCCESS(ec)) {
-            UnicodeString ruleID(TRUE, ruleIdUStr, len);
-            UResourceBundle *rule = TimeZone::loadRule(top, ruleID, NULL, ec);
-            const int32_t *ruleData = ures_getIntVector(rule, &len, &ec); 
-            if (U_SUCCESS(ec) && len == 11) {
-                UnicodeString emptyStr;
-                finalZone = new SimpleTimeZone(
-                    ruleRaw * U_MILLIS_PER_SECOND,
-                    emptyStr,
-                    (int8_t)ruleData[0], (int8_t)ruleData[1], (int8_t)ruleData[2],
-                    ruleData[3] * U_MILLIS_PER_SECOND,
-                    (SimpleTimeZone::TimeMode) ruleData[4],
-                    (int8_t)ruleData[5], (int8_t)ruleData[6], (int8_t)ruleData[7],
-                    ruleData[8] * U_MILLIS_PER_SECOND,
-                    (SimpleTimeZone::TimeMode) ruleData[9],
-                    ruleData[10] * U_MILLIS_PER_SECOND, ec);
-                if (finalZone == NULL) {
-                    ec = U_MEMORY_ALLOCATION_ERROR;
+            const UChar *ruleIdUStr = ures_getStringByKey(res, kFINALRULE, &len, &ec);
+            ures_getByKey(res, kFINALRAW, r.getAlias(), &ec);
+            int32_t ruleRaw = ures_getInt(r.getAlias(), &ec);
+            ures_getByKey(res, kFINALYEAR, r.getAlias(), &ec);
+            int32_t ruleYear = ures_getInt(r.getAlias(), &ec);
+            if (U_SUCCESS(ec)) {
+                UnicodeString ruleID(TRUE, ruleIdUStr, len);
+                UResourceBundle *rule = TimeZone::loadRule(top, ruleID, NULL, ec);
+                const int32_t *ruleData = ures_getIntVector(rule, &len, &ec); 
+                if (U_SUCCESS(ec) && len == 11) {
+                    UnicodeString emptyStr;
+                    finalZone = new SimpleTimeZone(
+                        ruleRaw * U_MILLIS_PER_SECOND,
+                        emptyStr,
+                        (int8_t)ruleData[0], (int8_t)ruleData[1], (int8_t)ruleData[2],
+                        ruleData[3] * U_MILLIS_PER_SECOND,
+                        (SimpleTimeZone::TimeMode) ruleData[4],
+                        (int8_t)ruleData[5], (int8_t)ruleData[6], (int8_t)ruleData[7],
+                        ruleData[8] * U_MILLIS_PER_SECOND,
+                        (SimpleTimeZone::TimeMode) ruleData[9],
+                        ruleData[10] * U_MILLIS_PER_SECOND, ec);
+                    if (finalZone == NULL) {
+                        ec = U_MEMORY_ALLOCATION_ERROR;
+                    } else {
+                        finalStartYear = ruleYear;
+
+                        // Note: Setting finalStartYear to the finalZone is problematic.  When a date is around
+                        // year boundary, SimpleTimeZone may return false result when DST is observed at the 
+                        // beginning of year.  We could apply safe margin (day or two), but when one of recurrent
+                        // rules falls around year boundary, it could return false result.  Without setting the
+                        // start year, finalZone works fine around the year boundary of the start year.
+
+                        // finalZone->setStartYear(finalStartYear);
+
+
+                        // Compute the millis for Jan 1, 0:00 GMT of the finalYear
+
+                        // Note: finalStartMillis is used for detecting either if
+                        // historic transition data or finalZone to be used.  In an
+                        // extreme edge case - for example, two transitions fall into
+                        // small windows of time around the year boundary, this may
+                        // result incorrect offset computation.  But I think it will
+                        // never happen practically.  Yoshito - Feb 20, 2010
+                        finalStartMillis = Grego::fieldsToDay(finalStartYear, 0, 1) * U_MILLIS_PER_DAY;
+                    }
                 } else {
-                    finalStartYear = ruleYear;
-
-                    // Note: Setting finalStartYear to the finalZone is problematic.  When a date is around
-                    // year boundary, SimpleTimeZone may return false result when DST is observed at the 
-                    // beginning of year.  We could apply safe margin (day or two), but when one of recurrent
-                    // rules falls around year boundary, it could return false result.  Without setting the
-                    // start year, finalZone works fine around the year boundary of the start year.
-
-                    // finalZone->setStartYear(finalStartYear);
-
-
-                    // Compute the millis for Jan 1, 0:00 GMT of the finalYear
-
-                    // Note: finalStartMillis is used for detecting either if
-                    // historic transition data or finalZone to be used.  In an
-                    // extreme edge case - for example, two transitions fall into
-                    // small windows of time around the year boundary, this may
-                    // result incorrect offset computation.  But I think it will
-                    // never happen practically.  Yoshito - Feb 20, 2010
-                    finalStartMillis = Grego::fieldsToDay(finalStartYear, 0, 1) * U_MILLIS_PER_DAY;
+                    ec = U_INVALID_FORMAT_ERROR;
                 }
-            } else {
-                ec = U_INVALID_FORMAT_ERROR;
+                ures_close(rule);
+            } else if (ec == U_MISSING_RESOURCE_ERROR) {
+                // No final zone
+                ec = U_ZERO_ERROR;
             }
-            ures_close(rule);
-        } else if (ec == U_MISSING_RESOURCE_ERROR) {
-            // No final zone
-            ec = U_ZERO_ERROR;
         }
 
         // initialize canonical ID
diff --git a/icu4c/source/i18n/olsontz.h b/icu4c/source/i18n/olsontz.h
index a3b7dcc..275b1b4 100644
--- a/icu4c/source/i18n/olsontz.h
+++ b/icu4c/source/i18n/olsontz.h
@@ -208,7 +208,7 @@
     /**
      * TimeZone API.  For a historical zone, whether DST is used or
      * not varies over time.  In order to approximate expected
-     * behavior, this method returns TRUE if DST is observed at any
+     * behavior, this method returns true if DST is observed at any
      * point in the current year.
      */
     virtual UBool useDaylightTime() const;
@@ -234,7 +234,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the first transition after the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      */
     virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
 
@@ -244,7 +244,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the most recent transition before the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      */
     virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
 
diff --git a/icu4c/source/i18n/persncal.cpp b/icu4c/source/i18n/persncal.cpp
index 26fd294..d30577f 100644
--- a/icu4c/source/i18n/persncal.cpp
+++ b/icu4c/source/i18n/persncal.cpp
@@ -79,7 +79,7 @@
 }
 
 PersianCalendar::PersianCalendar(const Locale& aLocale, UErrorCode& success)
-  :   Calendar(TimeZone::createDefault(), aLocale, success)
+  :   Calendar(TimeZone::forLocaleOrDefault(aLocale), aLocale, success)
 {
     setTimeInMillis(getNow(), success); // Call this again now that the vtable is set up properly.
 }
diff --git a/icu4c/source/i18n/persncal.h b/icu4c/source/i18n/persncal.h
index ce6d739..c9eff1c 100644
--- a/icu4c/source/i18n/persncal.h
+++ b/icu4c/source/i18n/persncal.h
@@ -295,7 +295,7 @@
   virtual UBool inDaylightTime(UErrorCode& status) const;
 
   /**
-   * Returns TRUE because the Persian Calendar does have a default century
+   * Returns true because the Persian Calendar does have a default century
    * @internal
    */
   virtual UBool haveDefaultCentury() const;
diff --git a/icu4c/source/i18n/pluralranges.cpp b/icu4c/source/i18n/pluralranges.cpp
new file mode 100644
index 0000000..da10e21
--- /dev/null
+++ b/icu4c/source/i18n/pluralranges.cpp
@@ -0,0 +1,144 @@
+// © 2018 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+// Allow implicit conversion from char16_t* to UnicodeString for this file:
+// Helpful in toString methods and elsewhere.
+#define UNISTR_FROM_STRING_EXPLICIT
+
+#include "unicode/numberrangeformatter.h"
+#include "pluralranges.h"
+#include "uresimp.h"
+#include "charstr.h"
+#include "uassert.h"
+#include "util.h"
+#include "numrange_impl.h"
+
+U_NAMESPACE_BEGIN
+
+
+namespace {
+
+class PluralRangesDataSink : public ResourceSink {
+  public:
+    PluralRangesDataSink(StandardPluralRanges& output) : fOutput(output) {}
+
+    void put(const char* /*key*/, ResourceValue& value, UBool /*noFallback*/, UErrorCode& status) U_OVERRIDE {
+        ResourceArray entriesArray = value.getArray(status);
+        if (U_FAILURE(status)) { return; }
+        fOutput.setCapacity(entriesArray.getSize(), status);
+        if (U_FAILURE(status)) { return; }
+        for (int i = 0; entriesArray.getValue(i, value); i++) {
+            ResourceArray pluralFormsArray = value.getArray(status);
+            if (U_FAILURE(status)) { return; }
+            if (pluralFormsArray.getSize() != 3) {
+                status = U_RESOURCE_TYPE_MISMATCH;
+                return;
+            }
+            pluralFormsArray.getValue(0, value);
+            StandardPlural::Form first = StandardPlural::fromString(value.getUnicodeString(status), status);
+            if (U_FAILURE(status)) { return; }
+            pluralFormsArray.getValue(1, value);
+            StandardPlural::Form second = StandardPlural::fromString(value.getUnicodeString(status), status);
+            if (U_FAILURE(status)) { return; }
+            pluralFormsArray.getValue(2, value);
+            StandardPlural::Form result = StandardPlural::fromString(value.getUnicodeString(status), status);
+            if (U_FAILURE(status)) { return; }
+            fOutput.addPluralRange(first, second, result);
+        }
+    }
+
+  private:
+    StandardPluralRanges& fOutput;
+};
+
+void getPluralRangesData(const Locale& locale, StandardPluralRanges& output, UErrorCode& status) {
+    LocalUResourceBundlePointer rb(ures_openDirect(nullptr, "pluralRanges", &status));
+    if (U_FAILURE(status)) { return; }
+
+    CharString dataPath;
+    dataPath.append("locales/", -1, status);
+    dataPath.append(locale.getLanguage(), -1, status);
+    if (U_FAILURE(status)) { return; }
+    int32_t setLen;
+    // Not all languages are covered: fail gracefully
+    UErrorCode internalStatus = U_ZERO_ERROR;
+    const UChar* set = ures_getStringByKeyWithFallback(rb.getAlias(), dataPath.data(), &setLen, &internalStatus);
+    if (U_FAILURE(internalStatus)) { return; }
+
+    dataPath.clear();
+    dataPath.append("rules/", -1, status);
+    dataPath.appendInvariantChars(set, setLen, status);
+    if (U_FAILURE(status)) { return; }
+    PluralRangesDataSink sink(output);
+    ures_getAllItemsWithFallback(rb.getAlias(), dataPath.data(), sink, status);
+}
+
+} // namespace
+
+
+StandardPluralRanges
+StandardPluralRanges::forLocale(const Locale& locale, UErrorCode& status) {
+    StandardPluralRanges result;
+    getPluralRangesData(locale, result, status);
+    return result;
+}
+
+StandardPluralRanges
+StandardPluralRanges::copy(UErrorCode& status) const {
+    StandardPluralRanges result;
+    if (fTriplesLen > result.fTriples.getCapacity()) {
+        if (result.fTriples.resize(fTriplesLen) == nullptr) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+            return result;
+        }
+    }
+    uprv_memcpy(result.fTriples.getAlias(),
+        fTriples.getAlias(),
+        fTriplesLen * sizeof(fTriples[0]));
+    result.fTriplesLen = fTriplesLen;
+    return result;
+}
+
+LocalPointer<StandardPluralRanges>
+StandardPluralRanges::toPointer(UErrorCode& status) && noexcept {
+    return LocalPointer<StandardPluralRanges>(new StandardPluralRanges(std::move(*this)), status);
+}
+
+void StandardPluralRanges::addPluralRange(
+        StandardPlural::Form first,
+        StandardPlural::Form second,
+        StandardPlural::Form result) {
+    U_ASSERT(fTriplesLen < fTriples.getCapacity());
+    fTriples[fTriplesLen] = {first, second, result};
+    fTriplesLen++;
+}
+
+void StandardPluralRanges::setCapacity(int32_t length, UErrorCode& status) {
+    if (U_FAILURE(status)) { return; }
+    if (length > fTriples.getCapacity()) {
+        if (fTriples.resize(length, 0) == nullptr) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+        }
+    }
+}
+
+StandardPlural::Form
+StandardPluralRanges::resolve(StandardPlural::Form first, StandardPlural::Form second) const {
+    for (int32_t i=0; i<fTriplesLen; i++) {
+        const auto& triple = fTriples[i];
+        if (triple.first == first && triple.second == second) {
+            return triple.result;
+        }
+    }
+    // Default fallback
+    return StandardPlural::OTHER;
+}
+
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/pluralranges.h b/icu4c/source/i18n/pluralranges.h
new file mode 100644
index 0000000..eba59c7
--- /dev/null
+++ b/icu4c/source/i18n/pluralranges.h
@@ -0,0 +1,67 @@
+// © 2018 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#ifndef __PLURALRANGES_H__
+#define __PLURALRANGES_H__
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "unicode/uobject.h"
+#include "unicode/locid.h"
+#include "unicode/plurrule.h"
+#include "standardplural.h"
+#include "cmemory.h"
+
+U_NAMESPACE_BEGIN
+
+// Forward declarations
+namespace number {
+namespace impl {
+class UFormattedNumberRangeData;
+}
+}
+
+class StandardPluralRanges : public UMemory {
+  public:
+    /** Create a new StandardPluralRanges for the given locale */
+    static StandardPluralRanges forLocale(const Locale& locale, UErrorCode& status);
+
+    /** Explicit copy constructor */
+    StandardPluralRanges copy(UErrorCode& status) const;
+
+    /** Create an object (called on an rvalue) */
+    LocalPointer<StandardPluralRanges> toPointer(UErrorCode& status) && noexcept;
+
+    /** Select rule based on the first and second forms */
+    StandardPlural::Form resolve(StandardPlural::Form first, StandardPlural::Form second) const;
+
+    /** Used for data loading. */
+    void addPluralRange(
+        StandardPlural::Form first,
+        StandardPlural::Form second,
+        StandardPlural::Form result);
+
+    /** Used for data loading. */
+    void setCapacity(int32_t length, UErrorCode& status);
+
+  private:
+    struct StandardPluralRangeTriple {
+        StandardPlural::Form first;
+        StandardPlural::Form second;
+        StandardPlural::Form result;
+    };
+
+    // TODO: An array is simple here, but it results in linear lookup time.
+    // Certain locales have 20-30 entries in this list.
+    // Consider changing to a smarter data structure.
+    typedef MaybeStackArray<StandardPluralRangeTriple, 3> PluralRangeTriples;
+    PluralRangeTriples fTriples;
+    int32_t fTriplesLen = 0;
+};
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+#endif //__PLURALRANGES_H__
diff --git a/icu4c/source/i18n/plurfmt.cpp b/icu4c/source/i18n/plurfmt.cpp
index b994376..aac35c5 100644
--- a/icu4c/source/i18n/plurfmt.cpp
+++ b/icu4c/source/i18n/plurfmt.cpp
@@ -549,9 +549,15 @@
 
         UnicodeString currArg = pattern.tempSubString(partStart->getLimit(), partLimit->getIndex() - partStart->getLimit());
         if (rbnfLenientScanner != NULL) {
-            // If lenient parsing is turned ON, we've got some time consuming parsing ahead of us.
-            int32_t length = -1;
-            currMatchIndex = rbnfLenientScanner->findTextLenient(source, currArg, startingAt, &length);
+            // Check if non-lenient rule finds the text before call lenient parsing
+            int32_t tempIndex = source.indexOf(currArg, startingAt);
+            if (tempIndex >= 0) {
+                currMatchIndex = tempIndex;
+            } else {
+                // If lenient parsing is turned ON, we've got some time consuming parsing ahead of us.
+                int32_t length = -1;
+                currMatchIndex = rbnfLenientScanner->findTextLenient(source, currArg, startingAt, &length);
+            }
         }
         else {
             currMatchIndex = source.indexOf(currArg, startingAt);
diff --git a/icu4c/source/i18n/plurrule.cpp b/icu4c/source/i18n/plurrule.cpp
index 794a3d8..e1e1667 100644
--- a/icu4c/source/i18n/plurrule.cpp
+++ b/icu4c/source/i18n/plurrule.cpp
@@ -19,6 +19,7 @@
 #include "unicode/ures.h"
 #include "unicode/numfmt.h"
 #include "unicode/decimfmt.h"
+#include "unicode/numberrangeformatter.h"
 #include "charstr.h"
 #include "cmemory.h"
 #include "cstring.h"
@@ -36,6 +37,8 @@
 #include "unifiedcache.h"
 #include "number_decimalquantity.h"
 #include "util.h"
+#include "pluralranges.h"
+#include "numrange_impl.h"
 
 #if !UCONFIG_NO_FORMATTING
 
@@ -56,6 +59,7 @@
 static const UChar PK_VAR_I[]={LOW_I,0};
 static const UChar PK_VAR_F[]={LOW_F,0};
 static const UChar PK_VAR_T[]={LOW_T,0};
+static const UChar PK_VAR_E[]={LOW_E,0};
 static const UChar PK_VAR_V[]={LOW_V,0};
 static const UChar PK_WITHIN[]={LOW_W,LOW_I,LOW_T,LOW_H,LOW_I,LOW_N,0};
 static const UChar PK_DECIMAL[]={LOW_D,LOW_E,LOW_C,LOW_I,LOW_M,LOW_A,LOW_L,0};
@@ -67,6 +71,7 @@
 PluralRules::PluralRules(UErrorCode& /*status*/)
 :   UObject(),
     mRules(nullptr),
+    mStandardPluralRanges(nullptr),
     mInternalStatus(U_ZERO_ERROR)
 {
 }
@@ -74,6 +79,7 @@
 PluralRules::PluralRules(const PluralRules& other)
 : UObject(other),
     mRules(nullptr),
+    mStandardPluralRanges(nullptr),
     mInternalStatus(U_ZERO_ERROR)
 {
     *this=other;
@@ -81,6 +87,7 @@
 
 PluralRules::~PluralRules() {
     delete mRules;
+    delete mStandardPluralRanges;
 }
 
 SharedPluralRules::~SharedPluralRules() {
@@ -89,14 +96,20 @@
 
 PluralRules*
 PluralRules::clone() const {
-    PluralRules* newObj = new PluralRules(*this);
     // Since clone doesn't have a 'status' parameter, the best we can do is return nullptr if
     // the newly created object was not fully constructed properly (an error occurred).
-    if (newObj != nullptr && U_FAILURE(newObj->mInternalStatus)) {
-        delete newObj;
-        newObj = nullptr;
+    UErrorCode localStatus = U_ZERO_ERROR;
+    return clone(localStatus);
+}
+
+PluralRules*
+PluralRules::clone(UErrorCode& status) const {
+    LocalPointer<PluralRules> newObj(new PluralRules(*this), status);
+    if (U_SUCCESS(status) && U_FAILURE(newObj->mInternalStatus)) {
+        status = newObj->mInternalStatus;
+        newObj.adoptInstead(nullptr);
     }
-    return newObj;
+    return newObj.orphan();
 }
 
 PluralRules&
@@ -104,6 +117,8 @@
     if (this != &other) {
         delete mRules;
         mRules = nullptr;
+        delete mStandardPluralRanges;
+        mStandardPluralRanges = nullptr;
         mInternalStatus = other.mInternalStatus;
         if (U_FAILURE(mInternalStatus)) {
             // bail out early if the object we were copying from was already 'invalid'.
@@ -119,6 +134,11 @@
                 mInternalStatus = mRules->fInternalStatus;
             }
         }
+        if (other.mStandardPluralRanges != nullptr) {
+            mStandardPluralRanges = other.mStandardPluralRanges->copy(mInternalStatus)
+                .toPointer(mInternalStatus)
+                .orphan();
+        }
     }
     return *this;
 }
@@ -211,11 +231,8 @@
     if (U_FAILURE(status)) {
         return nullptr;
     }
-    PluralRules *result = (*shared)->clone();
+    PluralRules *result = (*shared)->clone(status);
     shared->removeRef();
-    if (result == nullptr) {
-        status = U_MEMORY_ALLOCATION_ERROR;
-    }
     return result;
 }
 
@@ -252,6 +269,10 @@
         //        Original impl used default rules.
         //        Ask the question to ICU Core.
 
+    newObj->mStandardPluralRanges = StandardPluralRanges::forLocale(locale, status)
+        .toPointer(status)
+        .orphan();
+
     return newObj.orphan();
 }
 
@@ -272,6 +293,10 @@
     if (U_FAILURE(status)) {
         return ICU_Utility::makeBogusString();
     }
+    if (U_FAILURE(mInternalStatus)) {
+        status = mInternalStatus;
+        return ICU_Utility::makeBogusString();
+    }
     return select(dq);
 }
 
@@ -285,6 +310,33 @@
     }
 }
 
+UnicodeString
+PluralRules::select(const number::FormattedNumberRange& range, UErrorCode& status) const {
+    return select(range.getData(status), status);
+}
+
+UnicodeString
+PluralRules::select(const number::impl::UFormattedNumberRangeData* impl, UErrorCode& status) const {
+    if (U_FAILURE(status)) {
+        return ICU_Utility::makeBogusString();
+    }
+    if (U_FAILURE(mInternalStatus)) {
+        status = mInternalStatus;
+        return ICU_Utility::makeBogusString();
+    }
+    if (mStandardPluralRanges == nullptr) {
+        // Happens if PluralRules was constructed via createRules()
+        status = U_UNSUPPORTED_ERROR;
+        return ICU_Utility::makeBogusString();
+    }
+    auto form1 = StandardPlural::fromString(select(impl->quantity1), status);
+    auto form2 = StandardPlural::fromString(select(impl->quantity2), status);
+    if (U_FAILURE(status)) {
+        return ICU_Utility::makeBogusString();
+    }
+    auto result = mStandardPluralRanges->resolve(form1, form2);
+    return UnicodeString(StandardPlural::getKeyword(result), -1, US_INV);
+}
 
 
 StringEnumeration*
@@ -326,9 +378,23 @@
     return scale;
 }
 
+/**
+ * Helper method for the overrides of getSamples() for double and FixedDecimal
+ * return value types.  Provide only one of an allocated array of doubles or
+ * FixedDecimals, and a nullptr for the other.
+ */
 static int32_t
-getSamplesFromString(const UnicodeString &samples, double *dest,
-                        int32_t destCapacity, UErrorCode& status) {
+getSamplesFromString(const UnicodeString &samples, double *destDbl,
+                        FixedDecimal* destFd, int32_t destCapacity,
+                        UErrorCode& status) {
+
+    if ((destDbl == nullptr && destFd == nullptr)
+            || (destDbl != nullptr && destFd != nullptr)) {
+        status = U_INTERNAL_PROGRAM_ERROR;
+        return 0;
+    }
+
+    bool isDouble = destDbl != nullptr;
     int32_t sampleCount = 0;
     int32_t sampleStartIdx = 0;
     int32_t sampleEndIdx = 0;
@@ -346,9 +412,13 @@
         int32_t tildeIndex = sampleRange.indexOf(TILDE);
         if (tildeIndex < 0) {
             FixedDecimal fixed(sampleRange, status);
-            double sampleValue = fixed.source;
-            if (fixed.visibleDecimalDigitCount == 0 || sampleValue != floor(sampleValue)) {
-                dest[sampleCount++] = sampleValue;
+            if (isDouble) {
+                double sampleValue = fixed.source;
+                if (fixed.visibleDecimalDigitCount == 0 || sampleValue != floor(sampleValue)) {
+                    destDbl[sampleCount++] = sampleValue;
+                }
+            } else {
+                destFd[sampleCount++] = fixed;
             }
         } else {
 
@@ -375,14 +445,21 @@
             rangeLo *= scale;
             rangeHi *= scale;
             for (double n=rangeLo; n<=rangeHi; n+=1) {
-                // Hack Alert: don't return any decimal samples with integer values that
-                //    originated from a format with trailing decimals.
-                //    This API is returning doubles, which can't distinguish having displayed
-                //    zeros to the right of the decimal.
-                //    This results in test failures with values mapping back to a different keyword.
                 double sampleValue = n/scale;
-                if (!(sampleValue == floor(sampleValue) && fixedLo.visibleDecimalDigitCount > 0)) {
-                    dest[sampleCount++] = sampleValue;
+                if (isDouble) {
+                    // Hack Alert: don't return any decimal samples with integer values that
+                    //    originated from a format with trailing decimals.
+                    //    This API is returning doubles, which can't distinguish having displayed
+                    //    zeros to the right of the decimal.
+                    //    This results in test failures with values mapping back to a different keyword.
+                    if (!(sampleValue == floor(sampleValue) && fixedLo.visibleDecimalDigitCount > 0)) {
+                        destDbl[sampleCount++] = sampleValue;
+                    }
+                } else {
+                    int32_t v = (int32_t) fixedLo.getPluralOperand(PluralOperand::PLURAL_OPERAND_V);
+                    int32_t e = (int32_t) fixedLo.getPluralOperand(PluralOperand::PLURAL_OPERAND_E);
+                    FixedDecimal newSample = FixedDecimal::createWithExponent(sampleValue, v, e);
+                    destFd[sampleCount++] = newSample;
                 }
                 if (sampleCount >= destCapacity) {
                     break;
@@ -394,24 +471,52 @@
     return sampleCount;
 }
 
-
 int32_t
 PluralRules::getSamples(const UnicodeString &keyword, double *dest,
                         int32_t destCapacity, UErrorCode& status) {
-    if (destCapacity == 0 || U_FAILURE(status)) {
+    if (U_FAILURE(status)) {
         return 0;
     }
     if (U_FAILURE(mInternalStatus)) {
         status = mInternalStatus;
         return 0;
     }
+    if (dest != nullptr ? destCapacity < 0 : destCapacity != 0) {
+        status = U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
     RuleChain *rc = rulesForKeyword(keyword);
     if (rc == nullptr) {
         return 0;
     }
-    int32_t numSamples = getSamplesFromString(rc->fIntegerSamples, dest, destCapacity, status);
+    int32_t numSamples = getSamplesFromString(rc->fIntegerSamples, dest, nullptr, destCapacity, status);
     if (numSamples == 0) {
-        numSamples = getSamplesFromString(rc->fDecimalSamples, dest, destCapacity, status);
+        numSamples = getSamplesFromString(rc->fDecimalSamples, dest, nullptr, destCapacity, status);
+    }
+    return numSamples;
+}
+
+int32_t
+PluralRules::getSamples(const UnicodeString &keyword, FixedDecimal *dest,
+                        int32_t destCapacity, UErrorCode& status) {
+    if (U_FAILURE(status)) {
+        return 0;
+    }
+    if (U_FAILURE(mInternalStatus)) {
+        status = mInternalStatus;
+        return 0;
+    }
+    if (dest != nullptr ? destCapacity < 0 : destCapacity != 0) {
+        status = U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+    RuleChain *rc = rulesForKeyword(keyword);
+    if (rc == nullptr) {
+        return 0;
+    }
+    int32_t numSamples = getSamplesFromString(rc->fIntegerSamples, nullptr, dest, destCapacity, status);
+    if (numSamples == 0) {
+        numSamples = getSamplesFromString(rc->fDecimalSamples, nullptr, dest, destCapacity, status);
     }
     return numSamples;
 }
@@ -600,6 +705,7 @@
         case tVariableI:
         case tVariableF:
         case tVariableT:
+        case tVariableE:
         case tVariableV:
             U_ASSERT(curAndConstraint != nullptr);
             curAndConstraint->digitsType = type;
@@ -984,6 +1090,8 @@
         s.append(LOW_V); break;
       case tVariableT:
         s.append(LOW_T); break;
+      case tVariableE:
+        s.append(LOW_E); break;
       default:
         s.append(TILDE);
     }
@@ -1160,6 +1268,7 @@
     case tVariableI:
     case tVariableF:
     case tVariableT:
+    case tVariableE:
     case tVariableV:
         if (type != tIs && type != tMod && type != tIn &&
             type != tNot && type != tWithin && type != tEqual && type != tNotEqual) {
@@ -1176,6 +1285,7 @@
               type == tVariableI ||
               type == tVariableF ||
               type == tVariableT ||
+              type == tVariableE ||
               type == tVariableV ||
               type == tAt)) {
             status = U_UNEXPECTED_TOKEN;
@@ -1207,6 +1317,7 @@
              type != tVariableI &&
              type != tVariableF &&
              type != tVariableT &&
+             type != tVariableE &&
              type != tVariableV) {
             status = U_UNEXPECTED_TOKEN;
         }
@@ -1384,6 +1495,8 @@
         keyType = tVariableF;
     } else if (0 == token.compare(PK_VAR_T, 1)) {
         keyType = tVariableT;
+    } else if (0 == token.compare(PK_VAR_E, 1)) {
+        keyType = tVariableE;
     } else if (0 == token.compare(PK_VAR_V, 1)) {
         keyType = tVariableV;
     } else if (0 == token.compare(PK_IS, 2)) {
@@ -1481,13 +1594,15 @@
         return PLURAL_OPERAND_V;
     case tVariableT:
         return PLURAL_OPERAND_T;
+    case tVariableE:
+        return PLURAL_OPERAND_E;
     default:
         UPRV_UNREACHABLE;  // unexpected.
     }
 }
 
-FixedDecimal::FixedDecimal(double n, int32_t v, int64_t f) {
-    init(n, v, f);
+FixedDecimal::FixedDecimal(double n, int32_t v, int64_t f, int32_t e) {
+    init(n, v, f, e);
     // check values. TODO make into unit test.
     //            
     //            long visiblePower = (int) Math.pow(10, v);
@@ -1503,6 +1618,10 @@
     //            }
 }
 
+FixedDecimal::FixedDecimal(double n, int32_t v, int64_t f) {
+    init(n, v, f);
+}
+
 FixedDecimal::FixedDecimal(double n, int32_t v) {
     // Ugly, but for samples we don't care.
     init(n, v, getFractionalDigits(n, v));
@@ -1522,20 +1641,36 @@
 
 FixedDecimal::FixedDecimal(const UnicodeString &num, UErrorCode &status) {
     CharString cs;
-    cs.appendInvariantChars(num, status);
+    int32_t parsedExponent = 0;
+
+    int32_t exponentIdx = num.indexOf(u'e');
+    if (exponentIdx < 0) {
+        exponentIdx = num.indexOf(u'E');
+    }
+    if (exponentIdx >= 0) {
+        cs.appendInvariantChars(num.tempSubString(0, exponentIdx), status);
+        int32_t expSubstrStart = exponentIdx + 1;
+        parsedExponent = ICU_Utility::parseAsciiInteger(num, expSubstrStart);
+    }
+    else {
+        cs.appendInvariantChars(num, status);
+    }
+
     DecimalQuantity dl;
     dl.setToDecNumber(cs.toStringPiece(), status);
     if (U_FAILURE(status)) {
         init(0, 0, 0);
         return;
     }
+
     int32_t decimalPoint = num.indexOf(DOT);
     double n = dl.toDouble();
     if (decimalPoint == -1) {
-        init(n, 0, 0);
+        init(n, 0, 0, parsedExponent);
     } else {
-        int32_t v = num.length() - decimalPoint - 1;
-        init(n, v, getFractionalDigits(n, v));
+        int32_t fractionNumLength = exponentIdx < 0 ? num.length() : cs.length();
+        int32_t v = fractionNumLength - decimalPoint - 1;
+        init(n, v, getFractionalDigits(n, v), parsedExponent);
     }
 }
 
@@ -1546,6 +1681,7 @@
     decimalDigits = other.decimalDigits;
     decimalDigitsWithoutTrailingZeros = other.decimalDigitsWithoutTrailingZeros;
     intValue = other.intValue;
+    exponent = other.exponent;
     _hasIntegerValue = other._hasIntegerValue;
     isNegative = other.isNegative;
     _isNaN = other._isNaN;
@@ -1554,6 +1690,10 @@
 
 FixedDecimal::~FixedDecimal() = default;
 
+FixedDecimal FixedDecimal::createWithExponent(double n, int32_t v, int32_t e) {
+    return FixedDecimal(n, v, getFractionalDigits(n, v), e);
+}
+
 
 void FixedDecimal::init(double n) {
     int32_t numFractionDigits = decimals(n);
@@ -1562,10 +1702,17 @@
 
 
 void FixedDecimal::init(double n, int32_t v, int64_t f) {
+    int32_t exponent = 0;
+    init(n, v, f, exponent);
+}
+
+
+void FixedDecimal::init(double n, int32_t v, int64_t f, int32_t e) {
     isNegative = n < 0.0;
     source = fabs(n);
     _isNaN = uprv_isNaN(source);
     _isInfinite = uprv_isInfinite(source);
+    exponent = e;
     if (_isNaN || _isInfinite) {
         v = 0;
         f = 0;
@@ -1661,7 +1808,9 @@
       case 3: return (int64_t)(fract*1000.0 + 0.5);
       default:
           double scaled = floor(fract * pow(10.0, (double)v) + 0.5);
-          if (scaled > U_INT64_MAX) {
+          if (scaled >= static_cast<double>(U_INT64_MAX)) {
+              // Note: a double cannot accurately represent U_INT64_MAX. Casting it to double
+              //       will round up to the next representable value, which is U_INT64_MAX + 1.
               return U_INT64_MAX;
           } else {
               return (int64_t)scaled;
@@ -1693,7 +1842,7 @@
         case PLURAL_OPERAND_F: return static_cast<double>(decimalDigits);
         case PLURAL_OPERAND_T: return static_cast<double>(decimalDigitsWithoutTrailingZeros);
         case PLURAL_OPERAND_V: return visibleDecimalDigitCount;
-        case PLURAL_OPERAND_E: return 0;
+        case PLURAL_OPERAND_E: return exponent;
         default:
              UPRV_UNREACHABLE;  // unexpected.
     }
@@ -1719,6 +1868,23 @@
     return visibleDecimalDigitCount;
 }
 
+bool FixedDecimal::operator==(const FixedDecimal &other) const {
+    return source == other.source && visibleDecimalDigitCount == other.visibleDecimalDigitCount
+        && decimalDigits == other.decimalDigits && exponent == other.exponent;
+}
+
+UnicodeString FixedDecimal::toString() const {
+    char pattern[15];
+    char buffer[20];
+    if (exponent == 0) {
+        snprintf(pattern, sizeof(pattern), "%%.%df", visibleDecimalDigitCount);
+        snprintf(buffer, sizeof(buffer), pattern, source);
+    } else {
+        snprintf(pattern, sizeof(pattern), "%%.%dfe%%d", visibleDecimalDigitCount);
+        snprintf(buffer, sizeof(buffer), pattern, source, exponent);
+    }
+    return UnicodeString(buffer, -1, US_INV);
+}
 
 
 PluralAvailableLocalesEnumeration::PluralAvailableLocalesEnumeration(UErrorCode &status) {
diff --git a/icu4c/source/i18n/plurrule_impl.h b/icu4c/source/i18n/plurrule_impl.h
index 0dc44fb..52af3a7 100644
--- a/icu4c/source/i18n/plurrule_impl.h
+++ b/icu4c/source/i18n/plurrule_impl.h
@@ -30,6 +30,12 @@
 #include "hash.h"
 #include "uassert.h"
 
+/**
+ * A FixedDecimal version of UPLRULES_NO_UNIQUE_VALUE used in PluralRulesTest
+ * for parsing of samples.
+ */
+#define UPLRULES_NO_UNIQUE_VALUE_DECIMAL (FixedDecimal((double)-0.00123456777))
+
 class PluralRulesTest;
 
 U_NAMESPACE_BEGIN
@@ -138,6 +144,7 @@
   tVariableF,
   tVariableV,
   tVariableT,
+  tVariableE,
   tDecimal,
   tInteger,
   tEOF
@@ -273,7 +280,9 @@
       * @param n   the number, e.g. 12.345
       * @param v   The number of visible fraction digits, e.g. 3
       * @param f   The fraction digits, e.g. 345
+      * @param e   The exponent, e.g. 7 in 1.2e7 (for compact/scientific)
       */
+    FixedDecimal(double  n, int32_t v, int64_t f, int32_t e);
     FixedDecimal(double  n, int32_t v, int64_t f);
     FixedDecimal(double n, int32_t);
     explicit FixedDecimal(double n);
@@ -282,6 +291,8 @@
     FixedDecimal(const UnicodeString &s, UErrorCode &ec);
     FixedDecimal(const FixedDecimal &other);
 
+    static FixedDecimal createWithExponent(double n, int32_t v, int32_t e);
+
     double getPluralOperand(PluralOperand operand) const U_OVERRIDE;
     bool isNaN() const U_OVERRIDE;
     bool isInfinite() const U_OVERRIDE;
@@ -291,19 +302,25 @@
 
     int32_t getVisibleFractionDigitCount() const;
 
+    void init(double n, int32_t v, int64_t f, int32_t e);
     void init(double n, int32_t v, int64_t f);
     void init(double n);
     UBool quickInit(double n);  // Try a fast-path only initialization,
-                                //    return TRUE if successful.
+                                //    return true if successful.
     void adjustForMinFractionDigits(int32_t min);
     static int64_t getFractionalDigits(double n, int32_t v);
     static int32_t decimals(double n);
 
+    bool operator==(const FixedDecimal &other) const;
+
+    UnicodeString toString() const;
+
     double      source;
     int32_t     visibleDecimalDigitCount;
     int64_t     decimalDigits;
     int64_t     decimalDigitsWithoutTrailingZeros;
     int64_t     intValue;
+    int32_t     exponent;
     UBool       _hasIntegerValue;
     UBool       isNegative;
     UBool       _isNaN;
@@ -320,8 +337,8 @@
     int32_t opNum = -1;             // for mod expressions, the right operand of the mod.
     int32_t value = -1;             // valid for 'is' rules only.
     UVector32 *rangeList = nullptr; // for 'in', 'within' rules. Null otherwise.
-    UBool negated = FALSE;          // TRUE for negated rules.
-    UBool integerOnly = FALSE;      // TRUE for 'within' rules.
+    UBool negated = false;          // true for negated rules.
+    UBool integerOnly = false;      // true for 'within' rules.
     tokenType digitsType = none;    // n | i | v | f constraint.
     AndConstraint *next = nullptr;
     // Internal error status, used for errors that occur during the copy constructor.
@@ -357,8 +374,8 @@
     OrConstraint   *ruleHeader = nullptr;
     UnicodeString   fDecimalSamples;  // Samples strings from rule source
     UnicodeString   fIntegerSamples;  //   without @decimal or @integer, otherwise unprocessed.
-    UBool           fDecimalSamplesUnbounded = FALSE;
-    UBool           fIntegerSamplesUnbounded = FALSE;
+    UBool           fDecimalSamplesUnbounded = false;
+    UBool           fIntegerSamplesUnbounded = false;
     // Internal error status, used for errors that occur during the copy constructor.
     UErrorCode      fInternalStatus = U_ZERO_ERROR;
 
diff --git a/icu4c/source/i18n/quant.h b/icu4c/source/i18n/quant.h
index d5aa8e5..df6924c 100644
--- a/icu4c/source/i18n/quant.h
+++ b/icu4c/source/i18n/quant.h
@@ -62,11 +62,11 @@
      * considered for matching will be text.charAt(limit-1) in the
      * forward direction or text.charAt(limit+1) in the backward
      * direction.
-     * @param incremental  if TRUE, then assume further characters may
+     * @param incremental  if true, then assume further characters may
      * be inserted at limit and check for partial matching.  Otherwise
      * assume the text as given is complete.
      * @return a match degree value indicating a full match, a partial
-     * match, or a mismatch.  If incremental is FALSE then
+     * match, or a mismatch.  If incremental is false then
      * U_PARTIAL_MATCH should never be returned.
      */
     virtual UMatchDegree matches(const Replaceable& text,
@@ -81,7 +81,7 @@
      * @return                  A reference to 'result'.
      */
     virtual UnicodeString& toPattern(UnicodeString& result,
-                                     UBool escapeUnprintable = FALSE) const;
+                                     UBool escapeUnprintable = false) const;
 
     /**
      * Implement UnicodeMatcher
diff --git a/icu4c/source/i18n/quantityformatter.h b/icu4c/source/i18n/quantityformatter.h
index daaef4f..841798c 100644
--- a/icu4c/source/i18n/quantityformatter.h
+++ b/icu4c/source/i18n/quantityformatter.h
@@ -74,18 +74,18 @@
      * @param variant "zero", "one", "two", "few", "many", "other"
      * @param rawPattern the pattern for the variant e.g "{0} meters"
      * @param status any error returned here.
-     * @return TRUE on success; FALSE if status was set to a non zero error.
+     * @return true on success; false if status was set to a non zero error.
      */
     UBool addIfAbsent(const char *variant, const UnicodeString &rawPattern, UErrorCode &status);
 
     /**
-     * returns TRUE if this object has at least the "other" variant.
+     * returns true if this object has at least the "other" variant.
      */
     UBool isValid() const;
 
     /**
      * Gets the pattern formatter that would be used for a particular variant.
-     * If isValid() returns TRUE, this method is guaranteed to return a
+     * If isValid() returns true, this method is guaranteed to return a
      * non-NULL value.
      */
     const SimpleFormatter *getByVariant(const char *variant) const;
@@ -112,7 +112,7 @@
 
     /**
      * Selects the standard plural form for the number/formatter/rules.
-     * TODO(13591): Remove this method.
+     * Used in MeasureFormat for backwards compatibility with NumberFormat.
      */
     static StandardPlural::Form selectPlural(
             const Formattable &number,
diff --git a/icu4c/source/i18n/rbt.h b/icu4c/source/i18n/rbt.h
index 97ef01e..61d3b6b 100644
--- a/icu4c/source/i18n/rbt.h
+++ b/icu4c/source/i18n/rbt.h
@@ -161,7 +161,7 @@
      * to construct a new transliterator.
      * @param result the string to receive the rules.  Previous
      * contents will be deleted.
-     * @param escapeUnprintable if TRUE then convert unprintable
+     * @param escapeUnprintable if true then convert unprintable
      * character to their hex escape representations, \uxxxx or
      * \Uxxxxxxxx.  Unprintable characters are those other than
      * U+000A, U+0020..U+007E.
diff --git a/icu4c/source/i18n/rbt_pars.cpp b/icu4c/source/i18n/rbt_pars.cpp
index 1ae5b81..89d4268 100644
--- a/icu4c/source/i18n/rbt_pars.cpp
+++ b/icu4c/source/i18n/rbt_pars.cpp
@@ -1557,7 +1557,7 @@
             return 0;
         }
         c = variableNext++;
-        // Set a placeholder in the master variables vector that will be
+        // Set a placeholder in the primary variables vector that will be
         // filled in later by setSegmentObject().  We know that we will get
         // called first because setSegmentObject() will call us.
         variablesVector.addElement((void*) NULL, status);
diff --git a/icu4c/source/i18n/rbt_pars.h b/icu4c/source/i18n/rbt_pars.h
index 61ce972..2a972e1 100644
--- a/icu4c/source/i18n/rbt_pars.h
+++ b/icu4c/source/i18n/rbt_pars.h
@@ -210,7 +210,7 @@
 
     /**
      * Assert that the given character is NOT within the variable range.
-     * If it is, return FALSE.  This is neccesary to ensure that the
+     * If it is, return false.  This is neccesary to ensure that the
      * variable range does not overlap characters used in a rule.
      * @param ch     the given character.
      * @return       True, if the given character is NOT within the variable range.
diff --git a/icu4c/source/i18n/rbt_rule.h b/icu4c/source/i18n/rbt_rule.h
index 5501981..b927f5d 100644
--- a/icu4c/source/i18n/rbt_rule.h
+++ b/icu4c/source/i18n/rbt_rule.h
@@ -172,9 +172,9 @@
      *                       segments, or null if there are none.  The array itself is adopted,
      *                       but the pointers within it are not.
      * @param segsCount      number of elements in segs[].
-     * @param anchorStart    TRUE if the the rule is anchored on the left to
+     * @param anchorStart    true if the the rule is anchored on the left to
      *                       the context start.
-     * @param anchorEnd      TRUE if the rule is anchored on the right to the
+     * @param anchorEnd      true if the rule is anchored on the right to the
      *                       context limit.
      * @param data           the rule data.
      * @param status         Output parameter filled in with success or failure status.
@@ -267,11 +267,11 @@
      * 
      * @param text the text
      * @param pos the position indices
-     * @param incremental if TRUE, test for partial matches that may
+     * @param incremental if true, test for partial matches that may
      * be completed by additional text inserted at pos.limit.
      * @return one of <code>U_MISMATCH</code>,
      * <code>U_PARTIAL_MATCH</code>, or <code>U_MATCH</code>.  If
-     * incremental is FALSE then U_PARTIAL_MATCH will not be returned.
+     * incremental is false then U_PARTIAL_MATCH will not be returned.
      */
     UMatchDegree matchAndReplace(Replaceable& text,
                                  UTransPosition& pos,
diff --git a/icu4c/source/i18n/rbt_set.h b/icu4c/source/i18n/rbt_set.h
index b4b4678..35ae3fb 100644
--- a/icu4c/source/i18n/rbt_set.h
+++ b/icu4c/source/i18n/rbt_set.h
@@ -123,14 +123,14 @@
     
     /**
      * Transliterate the given text with the given UTransPosition
-     * indices.  Return TRUE if the transliteration should continue
-     * or FALSE if it should halt (because of a U_PARTIAL_MATCH match).
-     * Note that FALSE is only ever returned if isIncremental is TRUE.
+     * indices.  Return true if the transliteration should continue
+     * or false if it should halt (because of a U_PARTIAL_MATCH match).
+     * Note that false is only ever returned if isIncremental is true.
      * @param text the text to be transliterated
      * @param index the position indices, which will be updated
-     * @param isIncremental if TRUE, assume new text may be inserted
-     * at index.limit, and return FALSE if thre is a partial match.
-     * @return TRUE unless a U_PARTIAL_MATCH has been obtained,
+     * @param isIncremental if true, assume new text may be inserted
+     * at index.limit, and return false if thre is a partial match.
+     * @return true unless a U_PARTIAL_MATCH has been obtained,
      * indicating that transliteration should stop until more text
      * arrives.
      */
diff --git a/icu4c/source/i18n/regexcmp.h b/icu4c/source/i18n/regexcmp.h
index f2aeea9..f3cfa6e 100644
--- a/icu4c/source/i18n/regexcmp.h
+++ b/icu4c/source/i18n/regexcmp.h
@@ -104,7 +104,7 @@
                                int32_t LoopOp);
     UBool       compileInlineInterval();             // Generate inline code for a {min,max} quantifier
     void        literalChar(UChar32 c);              // Compile a literal char
-    void        fixLiterals(UBool split=FALSE);      // Generate code for pending literal characters.
+    void        fixLiterals(UBool split=false);      // Generate code for pending literal characters.
     void        insertOp(int32_t where);             // Open up a slot for a new op in the
                                                      //   generated code at the specified location.
     void        appendOp(int32_t op);                // Append a new op to the compiled pattern.
diff --git a/icu4c/source/i18n/regextxt.h b/icu4c/source/i18n/regextxt.h
index 9cfabbe..0f64b84 100644
--- a/icu4c/source/i18n/regextxt.h
+++ b/icu4c/source/i18n/regextxt.h
@@ -29,7 +29,7 @@
 #endif
 
 #ifdef REGEX_DISABLE_CHUNK_MODE
-#  define UTEXT_FULL_TEXT_IN_CHUNK(ut,len) (FALSE)
+#  define UTEXT_FULL_TEXT_IN_CHUNK(ut,len) (false)
 #else
 #  define UTEXT_FULL_TEXT_IN_CHUNK(ut,len) ((0==((ut)->chunkNativeStart))&&((len)==((ut)->chunkNativeLimit))&&((len)==((ut)->nativeIndexingLimit)))
 #endif
diff --git a/icu4c/source/i18n/region.cpp b/icu4c/source/i18n/region.cpp
index 76445ae..d8a5ffd 100644
--- a/icu4c/source/i18n/region.cpp
+++ b/icu4c/source/i18n/region.cpp
@@ -217,7 +217,7 @@
         if ( aliasToRegion != NULL && aliasFromRegion == NULL ) { // This is just an alias from some string to a region
             uhash_put(newRegionAliases.getAlias(),(void *)aliasFromStr.orphan(), (void *)aliasToRegion,&status);
         } else {
-            if ( aliasFromRegion == NULL ) { // Deprecated region code not in the master codes list - so need to create a deprecated region for it.
+            if ( aliasFromRegion == NULL ) { // Deprecated region code not in the primary codes list - so need to create a deprecated region for it.
                 LocalPointer<Region> newRgn(new Region, status); 
                 if ( U_SUCCESS(status) ) {
                     aliasFromRegion = newRgn.orphan();
diff --git a/icu4c/source/i18n/reldatefmt.cpp b/icu4c/source/i18n/reldatefmt.cpp
index 8c6688c..b4d4e64 100644
--- a/icu4c/source/i18n/reldatefmt.cpp
+++ b/icu4c/source/i18n/reldatefmt.cpp
@@ -1326,7 +1326,7 @@
     return res.extract(result, resultCapacity, *status);
 }
 
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ureldatefmt_formatNumericToResult(
         const URelativeDateTimeFormatter* reldatefmt,
         double                            offset,
@@ -1369,7 +1369,7 @@
     return res.extract(result, resultCapacity, *status);
 }
 
-U_DRAFT void U_EXPORT2
+U_CAPI void U_EXPORT2
 ureldatefmt_formatToResult(
         const URelativeDateTimeFormatter* reldatefmt,
         double                            offset,
diff --git a/icu4c/source/i18n/rematch.cpp b/icu4c/source/i18n/rematch.cpp
index 69909fa..8e49632 100644
--- a/icu4c/source/i18n/rematch.cpp
+++ b/icu4c/source/i18n/rematch.cpp
@@ -2072,7 +2072,7 @@
         UErrorCode      &status)
 {
     //
-    // Check arguements for validity
+    // Check arguments for validity
     //
     if (U_FAILURE(status)) {
         return 0;
diff --git a/icu4c/source/i18n/rulebasedcollator.cpp b/icu4c/source/i18n/rulebasedcollator.cpp
index 60acf17..917482d 100644
--- a/icu4c/source/i18n/rulebasedcollator.cpp
+++ b/icu4c/source/i18n/rulebasedcollator.cpp
@@ -1600,10 +1600,7 @@
     appendSubtag(result, 'Z', subtag, length, errorCode);
 
     if(U_FAILURE(errorCode)) { return 0; }
-    if(result.length() <= capacity) {
-        uprv_memcpy(buffer, result.data(), result.length());
-    }
-    return u_terminateChars(buffer, capacity, result.length(), &errorCode);
+    return result.extract(buffer, capacity, errorCode);
 }
 
 UBool
diff --git a/icu4c/source/i18n/smpdtfmt.cpp b/icu4c/source/i18n/smpdtfmt.cpp
index 3fee8b9..a3ec7cb 100644
--- a/icu4c/source/i18n/smpdtfmt.cpp
+++ b/icu4c/source/i18n/smpdtfmt.cpp
@@ -54,6 +54,7 @@
 #include "unicode/udisplaycontext.h"
 #include "unicode/brkiter.h"
 #include "unicode/rbnf.h"
+#include "unicode/dtptngen.h"
 #include "uresimp.h"
 #include "olsontz.h"
 #include "patternprops.h"
@@ -657,6 +658,12 @@
 }
 
 //----------------------------------------------------------------------
+static const UChar* timeSkeletons[4] = {
+    u"jmmsszzzz",   // kFull
+    u"jmmssz",      // kLong
+    u"jmmss",       // kMedium
+    u"jmm",         // kShort
+};
 
 void SimpleDateFormat::construct(EStyle timeStyle,
                                  EStyle dateStyle,
@@ -721,35 +728,75 @@
     fDateOverride.setToBogus();
     fTimeOverride.setToBogus();
 
+    UnicodeString timePattern;
+    if (timeStyle >= kFull && timeStyle <= kShort) {
+        const char* baseLocID = locale.getBaseName();
+        if (baseLocID[0]!=0 && uprv_strcmp(baseLocID,"und")!=0) {
+            UErrorCode useStatus = U_ZERO_ERROR;
+            Locale baseLoc(baseLocID);
+            Locale validLoc(getLocale(ULOC_VALID_LOCALE, useStatus));
+            if (U_SUCCESS(useStatus) && validLoc!=baseLoc) {
+                bool useDTPG = false;
+                const char* baseReg = baseLoc.getCountry(); // empty string if no region
+                if ((baseReg[0]!=0 && uprv_strncmp(baseReg,validLoc.getCountry(),ULOC_COUNTRY_CAPACITY)!=0)
+                        || uprv_strncmp(baseLoc.getLanguage(),validLoc.getLanguage(),ULOC_LANG_CAPACITY)!=0) {
+                    // use DTPG if
+                    // * baseLoc has a region and validLoc does not have the same one (or has none), OR
+                    // * validLoc has a different language code than baseLoc
+                    useDTPG = true;
+                }
+                if (useDTPG) {
+                    // The standard time formats may have the wrong time cycle, because:
+                    // the valid locale differs in important ways (region, language) from
+                    // the base locale.
+                    // We could *also* check whether they do actually have a mismatch with
+                    // the time cycle preferences for the region, but that is a lot more
+                    // work for little or no additional benefit, since just going ahead
+                    // and always synthesizing the time format as per the following should
+                    // create a locale-appropriate pattern with cycle that matches the
+                    // region preferences anyway.
+                    LocalPointer<DateTimePatternGenerator> dtpg(DateTimePatternGenerator::createInstanceNoStdPat(locale, useStatus));
+                    if (U_SUCCESS(useStatus)) {
+                        UnicodeString timeSkeleton(TRUE, timeSkeletons[timeStyle], -1);
+                        timePattern = dtpg->getBestPattern(timeSkeleton, useStatus);
+                    }
+                }
+            }
+        }
+    }
+
     // if the pattern should include both date and time information, use the date/time
     // pattern string as a guide to tell use how to glue together the appropriate date
     // and time pattern strings.
     if ((timeStyle != kNone) && (dateStyle != kNone))
     {
-        currentBundle.adoptInstead(
-                ures_getByIndex(dateTimePatterns.getAlias(), (int32_t)timeStyle, NULL, &status));
-        if (U_FAILURE(status)) {
-           status = U_INVALID_FORMAT_ERROR;
-           return;
-        }
-        switch (ures_getType(currentBundle.getAlias())) {
-            case URES_STRING: {
-               resStr = ures_getString(currentBundle.getAlias(), &resStrLen, &status);
-               break;
-            }
-            case URES_ARRAY: {
-               resStr = ures_getStringByIndex(currentBundle.getAlias(), 0, &resStrLen, &status);
-               ovrStr = ures_getStringByIndex(currentBundle.getAlias(), 1, &ovrStrLen, &status);
-               fTimeOverride.setTo(TRUE, ovrStr, ovrStrLen);
-               break;
-            }
-            default: {
+        UnicodeString tempus1(timePattern);
+        if (tempus1.length() == 0) {
+            currentBundle.adoptInstead(
+                    ures_getByIndex(dateTimePatterns.getAlias(), (int32_t)timeStyle, NULL, &status));
+            if (U_FAILURE(status)) {
                status = U_INVALID_FORMAT_ERROR;
                return;
             }
-        }
+            switch (ures_getType(currentBundle.getAlias())) {
+                case URES_STRING: {
+                   resStr = ures_getString(currentBundle.getAlias(), &resStrLen, &status);
+                   break;
+                }
+                case URES_ARRAY: {
+                   resStr = ures_getStringByIndex(currentBundle.getAlias(), 0, &resStrLen, &status);
+                   ovrStr = ures_getStringByIndex(currentBundle.getAlias(), 1, &ovrStrLen, &status);
+                   fTimeOverride.setTo(TRUE, ovrStr, ovrStrLen);
+                   break;
+                }
+                default: {
+                   status = U_INVALID_FORMAT_ERROR;
+                   return;
+                }
+            }
 
-        UnicodeString tempus1(TRUE, resStr, resStrLen);
+            tempus1.setTo(TRUE, resStr, resStrLen);
+        }
 
         currentBundle.adoptInstead(
                 ures_getByIndex(dateTimePatterns.getAlias(), (int32_t)dateStyle, NULL, &status));
@@ -791,29 +838,32 @@
     // pattern string from the resources
     // setTo() - see DateFormatSymbols::assignArray comments
     else if (timeStyle != kNone) {
-        currentBundle.adoptInstead(
-                ures_getByIndex(dateTimePatterns.getAlias(), (int32_t)timeStyle, NULL, &status));
-        if (U_FAILURE(status)) {
-           status = U_INVALID_FORMAT_ERROR;
-           return;
-        }
-        switch (ures_getType(currentBundle.getAlias())) {
-            case URES_STRING: {
-               resStr = ures_getString(currentBundle.getAlias(), &resStrLen, &status);
-               break;
-            }
-            case URES_ARRAY: {
-               resStr = ures_getStringByIndex(currentBundle.getAlias(), 0, &resStrLen, &status);
-               ovrStr = ures_getStringByIndex(currentBundle.getAlias(), 1, &ovrStrLen, &status);
-               fDateOverride.setTo(TRUE, ovrStr, ovrStrLen);
-               break;
-            }
-            default: {
+        fPattern.setTo(timePattern);
+        if (fPattern.length() == 0) {
+            currentBundle.adoptInstead(
+                    ures_getByIndex(dateTimePatterns.getAlias(), (int32_t)timeStyle, NULL, &status));
+            if (U_FAILURE(status)) {
                status = U_INVALID_FORMAT_ERROR;
                return;
             }
+            switch (ures_getType(currentBundle.getAlias())) {
+                case URES_STRING: {
+                   resStr = ures_getString(currentBundle.getAlias(), &resStrLen, &status);
+                   break;
+                }
+                case URES_ARRAY: {
+                   resStr = ures_getStringByIndex(currentBundle.getAlias(), 0, &resStrLen, &status);
+                   ovrStr = ures_getStringByIndex(currentBundle.getAlias(), 1, &ovrStrLen, &status);
+                   fDateOverride.setTo(TRUE, ovrStr, ovrStrLen);
+                   break;
+                }
+                default: {
+                   status = U_INVALID_FORMAT_ERROR;
+                   return;
+                }
+            }
+            fPattern.setTo(TRUE, resStr, resStrLen);
         }
-        fPattern.setTo(TRUE, resStr, resStrLen);
     }
     else if (dateStyle != kNone) {
         currentBundle.adoptInstead(
@@ -855,7 +905,8 @@
 SimpleDateFormat::initializeCalendar(TimeZone* adoptZone, const Locale& locale, UErrorCode& status)
 {
     if(!U_FAILURE(status)) {
-        fCalendar = Calendar::createInstance(adoptZone?adoptZone:TimeZone::createDefault(), locale, status);
+        fCalendar = Calendar::createInstance(
+            adoptZone ? adoptZone : TimeZone::forLocaleOrDefault(locale), locale, status);
     }
     return fCalendar;
 }
diff --git a/icu4c/source/i18n/sources.txt b/icu4c/source/i18n/sources.txt
new file mode 100644
index 0000000..b28f34c
--- /dev/null
+++ b/icu4c/source/i18n/sources.txt
@@ -0,0 +1,240 @@
+alphaindex.cpp
+anytrans.cpp
+astro.cpp
+basictz.cpp
+bocsu.cpp
+brktrans.cpp
+buddhcal.cpp
+calendar.cpp
+casetrn.cpp
+cecal.cpp
+chnsecal.cpp
+choicfmt.cpp
+coleitr.cpp
+coll.cpp
+collation.cpp
+collationbuilder.cpp
+collationcompare.cpp
+collationdata.cpp
+collationdatabuilder.cpp
+collationdatareader.cpp
+collationdatawriter.cpp
+collationfastlatin.cpp
+collationfastlatinbuilder.cpp
+collationfcd.cpp
+collationiterator.cpp
+collationkeys.cpp
+collationroot.cpp
+collationrootelements.cpp
+collationruleparser.cpp
+collationsets.cpp
+collationsettings.cpp
+collationtailoring.cpp
+collationweights.cpp
+compactdecimalformat.cpp
+coptccal.cpp
+cpdtrans.cpp
+csdetect.cpp
+csmatch.cpp
+csr2022.cpp
+csrecog.cpp
+csrmbcs.cpp
+csrsbcs.cpp
+csrucode.cpp
+csrutf8.cpp
+curramt.cpp
+currfmt.cpp
+currpinf.cpp
+currunit.cpp
+dangical.cpp
+datefmt.cpp
+dayperiodrules.cpp
+dcfmtsym.cpp
+decContext.cpp
+decNumber.cpp
+decimfmt.cpp
+double-conversion-bignum-dtoa.cpp
+double-conversion-bignum.cpp
+double-conversion-cached-powers.cpp
+double-conversion-double-to-string.cpp
+double-conversion-fast-dtoa.cpp
+double-conversion-string-to-double.cpp
+double-conversion-strtod.cpp
+dtfmtsym.cpp
+dtitvfmt.cpp
+dtitvinf.cpp
+dtptngen.cpp
+dtrule.cpp
+erarules.cpp
+esctrn.cpp
+ethpccal.cpp
+fmtable.cpp
+fmtable_cnv.cpp
+format.cpp
+formatted_string_builder.cpp
+formattedval_iterimpl.cpp
+formattedval_sbimpl.cpp
+formattedvalue.cpp
+fphdlimp.cpp
+fpositer.cpp
+funcrepl.cpp
+gender.cpp
+gregocal.cpp
+gregoimp.cpp
+hebrwcal.cpp
+indiancal.cpp
+inputext.cpp
+islamcal.cpp
+japancal.cpp
+listformatter.cpp
+measfmt.cpp
+measunit.cpp
+measunit_extra.cpp
+measure.cpp
+msgfmt.cpp
+name2uni.cpp
+nfrs.cpp
+nfrule.cpp
+nfsubs.cpp
+nortrans.cpp
+nultrans.cpp
+number_affixutils.cpp
+number_asformat.cpp
+number_capi.cpp
+number_compact.cpp
+number_currencysymbols.cpp
+number_decimalquantity.cpp
+number_decimfmtprops.cpp
+number_fluent.cpp
+number_formatimpl.cpp
+number_grouping.cpp
+number_integerwidth.cpp
+number_longnames.cpp
+number_mapper.cpp
+number_modifiers.cpp
+number_multiplier.cpp
+number_notation.cpp
+number_output.cpp
+number_padding.cpp
+number_patternmodifier.cpp
+number_patternstring.cpp
+number_rounding.cpp
+number_scientific.cpp
+number_skeletons.cpp
+number_symbolswrapper.cpp
+number_usageprefs.cpp
+number_utils.cpp
+numfmt.cpp
+numparse_affixes.cpp
+numparse_compositions.cpp
+numparse_currency.cpp
+numparse_decimal.cpp
+numparse_impl.cpp
+numparse_parsednumber.cpp
+numparse_scientific.cpp
+numparse_symbols.cpp
+numparse_validators.cpp
+numrange_capi.cpp
+numrange_fluent.cpp
+numrange_impl.cpp
+numsys.cpp
+olsontz.cpp
+persncal.cpp
+pluralranges.cpp
+plurfmt.cpp
+plurrule.cpp
+quant.cpp
+quantityformatter.cpp
+rbnf.cpp
+rbt.cpp
+rbt_data.cpp
+rbt_pars.cpp
+rbt_rule.cpp
+rbt_set.cpp
+rbtz.cpp
+regexcmp.cpp
+regeximp.cpp
+regexst.cpp
+regextxt.cpp
+region.cpp
+reldatefmt.cpp
+reldtfmt.cpp
+rematch.cpp
+remtrans.cpp
+repattrn.cpp
+rulebasedcollator.cpp
+scientificnumberformatter.cpp
+scriptset.cpp
+search.cpp
+selfmt.cpp
+sharedbreakiterator.cpp
+simpletz.cpp
+smpdtfmt.cpp
+smpdtfst.cpp
+sortkey.cpp
+standardplural.cpp
+string_segment.cpp
+strmatch.cpp
+strrepl.cpp
+stsearch.cpp
+taiwncal.cpp
+timezone.cpp
+titletrn.cpp
+tmunit.cpp
+tmutamt.cpp
+tmutfmt.cpp
+tolowtrn.cpp
+toupptrn.cpp
+translit.cpp
+transreg.cpp
+tridpars.cpp
+tzfmt.cpp
+tzgnames.cpp
+tznames.cpp
+tznames_impl.cpp
+tzrule.cpp
+tztrans.cpp
+ucal.cpp
+ucln_in.cpp
+ucol.cpp
+ucol_res.cpp
+ucol_sit.cpp
+ucoleitr.cpp
+ucsdet.cpp
+udat.cpp
+udateintervalformat.cpp
+udatpg.cpp
+ufieldpositer.cpp
+uitercollationiterator.cpp
+ulistformatter.cpp
+ulocdata.cpp
+umsg.cpp
+unesctrn.cpp
+uni2name.cpp
+units_data.cpp
+units_complexconverter.cpp
+units_converter.cpp
+units_router.cpp
+unum.cpp
+unumsys.cpp
+upluralrules.cpp
+uregex.cpp
+uregexc.cpp
+uregion.cpp
+usearch.cpp
+uspoof.cpp
+uspoof_build.cpp
+uspoof_conf.cpp
+uspoof_impl.cpp
+utf16collationiterator.cpp
+utf8collationiterator.cpp
+utmscale.cpp
+utrans.cpp
+vtzone.cpp
+vzone.cpp
+windtfmt.cpp
+winnmfmt.cpp
+wintzimpl.cpp
+zonemeta.cpp
+zrule.cpp
+ztrans.cpp
diff --git a/icu4c/source/i18n/strmatch.h b/icu4c/source/i18n/strmatch.h
index 71ae984..4ee5cbd 100644
--- a/icu4c/source/i18n/strmatch.h
+++ b/icu4c/source/i18n/strmatch.h
@@ -109,11 +109,11 @@
      * considered for matching will be text.charAt(limit-1) in the
      * forward direction or text.charAt(limit+1) in the backward
      * direction.
-     * @param incremental  if TRUE, then assume further characters may
+     * @param incremental  if true, then assume further characters may
      * be inserted at limit and check for partial matching.  Otherwise
      * assume the text as given is complete.
      * @return a match degree value indicating a full match, a partial
-     * match, or a mismatch.  If incremental is FALSE then
+     * match, or a mismatch.  If incremental is false then
      * U_PARTIAL_MATCH should never be returned.
      */
     virtual UMatchDegree matches(const Replaceable& text,
@@ -128,16 +128,16 @@
      * @return                  A reference to 'result'.
      */
     virtual UnicodeString& toPattern(UnicodeString& result,
-                                     UBool escapeUnprintable = FALSE) const;
+                                     UBool escapeUnprintable = false) const;
 
     /**
      * Implement UnicodeMatcher
-     * Returns TRUE if this matcher will match a character c, where c
+     * Returns true if this matcher will match a character c, where c
      * & 0xFF == v, at offset, in the forward direction (with limit >
      * offset).  This is used by <tt>RuleBasedTransliterator</tt> for
      * indexing.
      * @param v    the given value
-     * @return     TRUE if this matcher will match a character c, 
+     * @return     true if this matcher will match a character c, 
      *             where c & 0xFF == v
      */
     virtual UBool matchesIndexValue(uint8_t v) const;
@@ -181,7 +181,7 @@
      * replacer that is equal to this one.
      * @param result the string to receive the pattern.  Previous
      * contents will be deleted.
-     * @param escapeUnprintable if TRUE then convert unprintable
+     * @param escapeUnprintable if true then convert unprintable
      * character to their hex escape representations, \\uxxxx or
      * \\Uxxxxxxxx.  Unprintable characters are defined by
      * Utility.isUnprintable().
diff --git a/icu4c/source/i18n/taiwncal.h b/icu4c/source/i18n/taiwncal.h
index 01d4d31..5fec78d 100644
--- a/icu4c/source/i18n/taiwncal.h
+++ b/icu4c/source/i18n/taiwncal.h
@@ -156,7 +156,7 @@
     virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const;
 
     /**
-     * Returns TRUE because the Taiwan Calendar does have a default century
+     * Returns true because the Taiwan Calendar does have a default century
      * @internal
      */
     virtual UBool haveDefaultCentury() const;
diff --git a/icu4c/source/i18n/timezone.cpp b/icu4c/source/i18n/timezone.cpp
index 284334e..78f538c 100644
--- a/icu4c/source/i18n/timezone.cpp
+++ b/icu4c/source/i18n/timezone.cpp
@@ -579,6 +579,24 @@
 
 // -------------------------------------
 
+TimeZone* U_EXPORT2
+TimeZone::forLocaleOrDefault(const Locale& locale)
+{
+    char buffer[ULOC_KEYWORDS_CAPACITY] = "";
+    UErrorCode localStatus = U_ZERO_ERROR;
+    int32_t count = locale.getKeywordValue("timezone", buffer, sizeof(buffer), localStatus);
+    if (U_FAILURE(localStatus) || localStatus == U_STRING_NOT_TERMINATED_WARNING) {
+        // the "timezone" keyword exceeds ULOC_KEYWORDS_CAPACITY; ignore and use default.
+        count = 0;
+    }
+    if (count > 0) {
+        return TimeZone::createTimeZone(UnicodeString(buffer, count, US_INV));
+    }
+    return TimeZone::createDefault();
+}
+
+// -------------------------------------
+
 void U_EXPORT2
 TimeZone::adoptDefault(TimeZone* zone)
 {
diff --git a/icu4c/source/i18n/transreg.h b/icu4c/source/i18n/transreg.h
index 041244e..04ed3fb 100644
--- a/icu4c/source/i18n/transreg.h
+++ b/icu4c/source/i18n/transreg.h
@@ -69,7 +69,7 @@
      * it when the registry mutex is NOT held, to prevent deadlock.
      * It may only be called once.
      *
-     * Note: Only call create() if isRuleBased() returns FALSE.
+     * Note: Only call create() if isRuleBased() returns false.
      *
      * This method must be called *outside* of the TransliteratorRegistry
      * mutex.
@@ -77,17 +77,17 @@
     Transliterator* create(UParseError&, UErrorCode&);
 
     /**
-     * Return TRUE if this alias is rule-based.  If so, the caller
+     * Return true if this alias is rule-based.  If so, the caller
      * must call parse() on it, then call TransliteratorRegistry::reget().
      */
     UBool isRuleBased() const;
 
     /**
-     * If isRuleBased() returns TRUE, then the caller must call this
+     * If isRuleBased() returns true, then the caller must call this
      * method, followed by TransliteratorRegistry::reget().  The latter
      * method must be called inside the TransliteratorRegistry mutex.
      *
-     * Note: Only call parse() if isRuleBased() returns TRUE.
+     * Note: Only call parse() if isRuleBased() returns true.
      *
      * This method must be called *outside* of the TransliteratorRegistry
      * mutex, because it can instantiate Transliterators embedded in
diff --git a/icu4c/source/i18n/tridpars.h b/icu4c/source/i18n/tridpars.h
index 5e42f06..03d68cc 100644
--- a/icu4c/source/i18n/tridpars.h
+++ b/icu4c/source/i18n/tridpars.h
@@ -222,7 +222,7 @@
      * @param source          the given source.
      * @param target          the given target.
      * @param variant         the given variant
-     * @param isSourcePresent If TRUE then the source is present. 
+     * @param isSourcePresent If true then the source is present. 
      *                        If the source is not present, ANY will be
      *                        given as the source, and isSourcePresent will be null
      * @return an array of 4 strings: source, target, variant, and
diff --git a/icu4c/source/i18n/tznames_impl.h b/icu4c/source/i18n/tznames_impl.h
index 1286eeb..417c051 100644
--- a/icu4c/source/i18n/tznames_impl.h
+++ b/icu4c/source/i18n/tznames_impl.h
@@ -92,9 +92,9 @@
     UBool    fHasValuesVector;
     UBool    fPadding;
 
-    // No value:   fValues == NULL               and  fHasValuesVector == FALSE
-    // One value:  fValues == value              and  fHasValuesVector == FALSE
-    // >=2 values: fValues == UVector of values  and  fHasValuesVector == TRUE
+    // No value:   fValues == NULL               and  fHasValuesVector == false
+    // One value:  fValues == value              and  fHasValuesVector == false
+    // >=2 values: fValues == UVector of values  and  fHasValuesVector == true
 };
 
 inline UBool CharacterNode::hasValues() const {
diff --git a/icu4c/source/i18n/ucal.cpp b/icu4c/source/i18n/ucal.cpp
index 67c51ae..c30ce09 100644
--- a/icu4c/source/i18n/ucal.cpp
+++ b/icu4c/source/i18n/ucal.cpp
@@ -91,7 +91,7 @@
     }
 }
 
-U_DRAFT int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getHostTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec) {
     int32_t len = 0;
     if (ec != NULL && U_SUCCESS(*ec)) {
diff --git a/icu4c/source/i18n/ucol_imp.h b/icu4c/source/i18n/ucol_imp.h
index a251fc4..f463957 100644
--- a/icu4c/source/i18n/ucol_imp.h
+++ b/icu4c/source/i18n/ucol_imp.h
@@ -41,10 +41,10 @@
  *  rules must be equivalent.
  *  @param source first collator
  *  @param target second collator
- *  @return TRUE or FALSE
+ *  @return true or false
  *  @internal ICU 3.0
  */
-U_INTERNAL UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucol_equals(const UCollator *source, const UCollator *target);
 
 /**
diff --git a/icu4c/source/i18n/ucol_sit.cpp b/icu4c/source/i18n/ucol_sit.cpp
index 92f332d..4dc81ae 100644
--- a/icu4c/source/i18n/ucol_sit.cpp
+++ b/icu4c/source/i18n/ucol_sit.cpp
@@ -372,10 +372,7 @@
                     }
                     len += s->entries[i].length();
                 } else {
-                    len += s->entries[i].length();
-                    if(len < capacity) {
-                        uprv_strncat(destination,s->entries[i].data(), s->entries[i].length());
-                    }
+                    len += s->entries[i].extract(destination + len, capacity - len, *status);
                 }
             }
         }
diff --git a/icu4c/source/i18n/ucsdet.cpp b/icu4c/source/i18n/ucsdet.cpp
index 46f69cf..63f204d 100644
--- a/icu4c/source/i18n/ucsdet.cpp
+++ b/icu4c/source/i18n/ucsdet.cpp
@@ -193,7 +193,7 @@
     return CharsetDetector::getAllDetectableCharsets(*status);
 }
 
-U_DRAFT UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucsdet_getDetectableCharsets(const UCharsetDetector *ucsd,  UErrorCode *status)
 {
     return ((CharsetDetector *)ucsd)->getDetectableCharsets(*status);
diff --git a/icu4c/source/i18n/udat.cpp b/icu4c/source/i18n/udat.cpp
index ab91bcf..ba44710 100644
--- a/icu4c/source/i18n/udat.cpp
+++ b/icu4c/source/i18n/udat.cpp
@@ -82,19 +82,24 @@
     UCAL_ZONE_OFFSET,          // UDAT_TIMEZONE_ISO_FIELD = 32 (also UCAL_DST_OFFSET)
     UCAL_ZONE_OFFSET,          // UDAT_TIMEZONE_ISO_LOCAL_FIELD = 33 (also UCAL_DST_OFFSET)
     UCAL_EXTENDED_YEAR,        // UDAT_RELATED_YEAR_FIELD = 34 (not an exact match)
-    UCAL_FIELD_COUNT,          // UDAT_FIELD_COUNT = 35
+    UCAL_FIELD_COUNT,          // UDAT_AM_PM_MIDNIGHT_NOON_FIELD=35 (no match)
+    UCAL_FIELD_COUNT,          // UDAT_FLEXIBLE_DAY_PERIOD_FIELD=36 (no match)
+    UCAL_FIELD_COUNT,          // UDAT_TIME_SEPARATOR_FIELD = 37 (no match)
+                               // UDAT_FIELD_COUNT = 38 as of ICU 67
     // UCAL_IS_LEAP_MONTH is not the target of a mapping
 };
 
 U_CAPI UCalendarDateFields U_EXPORT2
 udat_toCalendarDateField(UDateFormatField field) {
-  return gDateFieldMapping[field];
+  static_assert(UDAT_FIELD_COUNT == UPRV_LENGTHOF(gDateFieldMapping),
+    "UDateFormatField and gDateFieldMapping should have the same number of entries and be kept in sync.");
+  return (field >= UDAT_ERA_FIELD && field < UPRV_LENGTHOF(gDateFieldMapping))? gDateFieldMapping[field]: UCAL_FIELD_COUNT;
 }
 
 /* For now- one opener. */
 static UDateFormatOpener gOpener = NULL;
 
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_registerOpener(UDateFormatOpener opener, UErrorCode *status)
 {
   if(U_FAILURE(*status)) return;
@@ -107,7 +112,7 @@
   umtx_unlock(NULL);
 }
 
-U_INTERNAL UDateFormatOpener U_EXPORT2
+U_CAPI UDateFormatOpener U_EXPORT2
 udat_unregisterOpener(UDateFormatOpener opener, UErrorCode *status)
 {
   if(U_FAILURE(*status)) return NULL;
@@ -419,7 +424,7 @@
     ((DateFormat*)fmt)->setLenient(isLenient);
 }
 
-U_DRAFT UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 udat_getBooleanAttribute(const UDateFormat* fmt, 
                          UDateFormatBooleanAttribute attr, 
                          UErrorCode* status)
@@ -429,7 +434,7 @@
     //return FALSE;
 }
 
-U_DRAFT void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_setBooleanAttribute(UDateFormat *fmt, 
                          UDateFormatBooleanAttribute attr, 
                          UBool newValue, 
@@ -452,7 +457,7 @@
     ((DateFormat*)fmt)->setCalendar(*((Calendar*)calendarToSet));
 }
 
-U_DRAFT const UNumberFormat* U_EXPORT2 
+U_CAPI const UNumberFormat* U_EXPORT2 
 udat_getNumberFormatForField(const UDateFormat* fmt, UChar field)
 {
     UErrorCode status = U_ZERO_ERROR;
@@ -467,7 +472,7 @@
     return (const UNumberFormat*) ((DateFormat*)fmt)->getNumberFormat();
 }
 
-U_DRAFT void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 udat_adoptNumberFormatForFields(           UDateFormat*    fmt,
                                     const  UChar*          fields,
                                            UNumberFormat*  numberFormatToSet,
@@ -489,7 +494,7 @@
     ((DateFormat*)fmt)->setNumberFormat(*((NumberFormat*)numberFormatToSet));
 }
 
-U_DRAFT void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_adoptNumberFormat(      UDateFormat*    fmt,
                              UNumberFormat*  numberFormatToAdopt)
 {
diff --git a/icu4c/source/i18n/udateintervalformat.cpp b/icu4c/source/i18n/udateintervalformat.cpp
index 3889603..3557443 100644
--- a/icu4c/source/i18n/udateintervalformat.cpp
+++ b/icu4c/source/i18n/udateintervalformat.cpp
@@ -18,6 +18,7 @@
 #include "unicode/timezone.h"
 #include "unicode/locid.h"
 #include "unicode/unistr.h"
+#include "unicode/udisplaycontext.h"
 #include "formattedval_impl.h"
 
 U_NAMESPACE_USE
@@ -116,7 +117,7 @@
 }
 
 
-U_DRAFT void U_EXPORT2
+U_CAPI void U_EXPORT2
 udtitvfmt_formatToResult(
                 const UDateIntervalFormat* formatter,
                 UDate           fromDate,
@@ -134,7 +135,7 @@
     }
 }
 
-U_DRAFT void U_EXPORT2
+U_CAPI void U_EXPORT2
 udtitvfmt_formatCalendarToResult(
                 const UDateIntervalFormat* formatter,
                 UCalendar*      fromCalendar,
@@ -151,5 +152,25 @@
     }
 }
 
+U_CAPI void U_EXPORT2
+udtitvfmt_setContext(UDateIntervalFormat* formatter,
+                     UDisplayContext value,
+                     UErrorCode* status) {
+    if (U_FAILURE(*status)) {
+        return;
+    }
+    reinterpret_cast<DateIntervalFormat*>(formatter)->setContext( value, *status );
+}
+
+U_CAPI UDisplayContext U_EXPORT2
+udtitvfmt_getContext(const UDateIntervalFormat* formatter,
+                     UDisplayContextType type,
+                     UErrorCode* status) {
+    if (U_FAILURE(*status)) {
+        return (UDisplayContext)0;
+    }
+    return reinterpret_cast<const DateIntervalFormat*>(formatter)->getContext( type, *status );
+}
+
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/uitercollationiterator.h b/icu4c/source/i18n/uitercollationiterator.h
index 62b6f83..3a7b1a0 100644
--- a/icu4c/source/i18n/uitercollationiterator.h
+++ b/icu4c/source/i18n/uitercollationiterator.h
@@ -96,7 +96,7 @@
 
     /**
      * Extends the FCD text segment forward or normalizes around pos.
-     * @return TRUE if success
+     * @return true if success
      */
     UBool nextSegment(UErrorCode &errorCode);
 
@@ -107,7 +107,7 @@
 
     /**
      * Extends the FCD text segment backward or normalizes around pos.
-     * @return TRUE if success
+     * @return true if success
      */
     UBool previousSegment(UErrorCode &errorCode);
 
diff --git a/icu4c/source/i18n/ulocdata.cpp b/icu4c/source/i18n/ulocdata.cpp
index 7f4e7b9..68b9e0c 100644
--- a/icu4c/source/i18n/ulocdata.cpp
+++ b/icu4c/source/i18n/ulocdata.cpp
@@ -172,7 +172,7 @@
         return 0;
     }
 
-    delimiter = ures_getStringByKey(delimiterBundle, delimiterKeys[type], &len, &localStatus);
+    delimiter = ures_getStringByKeyWithFallback(delimiterBundle, delimiterKeys[type], &len, &localStatus);
     ures_close(delimiterBundle);
 
     if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
diff --git a/icu4c/source/i18n/unicode/alphaindex.h b/icu4c/source/i18n/unicode/alphaindex.h
index e3c68ea..edab16b 100644
--- a/icu4c/source/i18n/unicode/alphaindex.h
+++ b/icu4c/source/i18n/unicode/alphaindex.h
@@ -549,14 +549,14 @@
 
 
     /**
-     *   Advance the iteration over the Buckets of this index.  Return FALSE if
+     *   Advance the iteration over the Buckets of this index.  Return false if
      *   there are no more Buckets.
      *
      *   @param status  Error code, will be set with the reason if the operation fails.
      *   U_ENUM_OUT_OF_SYNC_ERROR will be reported if the index is modified while
      *   an enumeration of its contents are in process.
      *
-     *   @return TRUE if success, FALSE if at end of iteration
+     *   @return true if success, false if at end of iteration
      *   @stable ICU 4.8
      */
     virtual UBool nextBucket(UErrorCode &status);
@@ -609,7 +609,7 @@
      *   @param status  Error code, will be set with the reason if the operation fails.
      *   U_ENUM_OUT_OF_SYNC_ERROR will be reported if the index is modified while
      *   an enumeration of its contents are in process.
-     *   @return TRUE if successful, FALSE when the iteration advances past the last item.
+     *   @return true if successful, false when the iteration advances past the last item.
      *   @stable ICU 4.8
      */
     virtual UBool nextRecord(UErrorCode &status);
diff --git a/icu4c/source/i18n/unicode/basictz.h b/icu4c/source/i18n/unicode/basictz.h
index fc2cb8e..7dd981a 100644
--- a/icu4c/source/i18n/unicode/basictz.h
+++ b/icu4c/source/i18n/unicode/basictz.h
@@ -56,7 +56,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the first transition after the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      * @stable ICU 3.8
      */
     virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const = 0;
@@ -66,7 +66,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the most recent transition before the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      * @stable ICU 3.8
      */
     virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const = 0;
diff --git a/icu4c/source/i18n/unicode/calendar.h b/icu4c/source/i18n/unicode/calendar.h
index 2a8c293..cc84bb2 100644
--- a/icu4c/source/i18n/unicode/calendar.h
+++ b/icu4c/source/i18n/unicode/calendar.h
@@ -464,10 +464,10 @@
     UBool operator!=(const Calendar& that) const {return !operator==(that);}
 
     /**
-     * Returns TRUE if the given Calendar object is equivalent to this
+     * Returns true if the given Calendar object is equivalent to this
      * one.  An equivalent Calendar will behave exactly as this one
      * does, but it may be set to a different time.  By contrast, for
-     * the operator==() method to return TRUE, the other Calendar must
+     * the operator==() method to return true, the other Calendar must
      * be set to the same time.
      *
      * @param other the Calendar to be compared with this Calendar
@@ -1359,7 +1359,7 @@
      *     localeID.append(calType);
      *     char langTag[100];
      *     UErrorCode errorCode = U_ZERO_ERROR;
-     *     int32_t length = uloc_toLanguageTag(localeID.c_str(), langTag, (int32_t)sizeof(langTag), TRUE, &errorCode);
+     *     int32_t length = uloc_toLanguageTag(localeID.c_str(), langTag, (int32_t)sizeof(langTag), true, &errorCode);
      *     if (U_FAILURE(errorCode)) {
      *         // deal with errors & overflow
      *     }
@@ -1410,21 +1410,21 @@
     virtual int32_t getWeekendTransition(UCalendarDaysOfWeek dayOfWeek, UErrorCode &status) const;
 
     /**
-     * Returns TRUE if the given UDate is in the weekend in
+     * Returns true if the given UDate is in the weekend in
      * this calendar system.
      * @param date The UDate in question.
      * @param status The error code for the operation.
-     * @return TRUE if the given UDate is in the weekend in
-     * this calendar system, FALSE otherwise.
+     * @return true if the given UDate is in the weekend in
+     * this calendar system, false otherwise.
      * @stable ICU 4.4
      */
     virtual UBool isWeekend(UDate date, UErrorCode &status) const;
 
     /**
-     * Returns TRUE if this Calendar's current date-time is in the weekend in
+     * Returns true if this Calendar's current date-time is in the weekend in
      * this calendar system.
-     * @return TRUE if this Calendar's current date-time is in the weekend in
-     * this calendar system, FALSE otherwise.
+     * @return true if this Calendar's current date-time is in the weekend in
+     * this calendar system, false otherwise.
      * @stable ICU 4.4
      */
     virtual UBool isWeekend(void) const;
@@ -2372,7 +2372,7 @@
      *
      * @param key the registry key returned by a previous call to registerFactory
      * @param status the in/out status code, no special meanings are assigned
-     * @return TRUE if the factory for the key was successfully unregistered
+     * @return true if the factory for the key was successfully unregistered
      * @internal
      */
     static UBool unregister(URegistryKey key, UErrorCode& status);
@@ -2398,7 +2398,7 @@
 #endif /* !UCONFIG_NO_SERVICE */
 
     /**
-     * @return TRUE if this calendar has a default century (i.e. 03 -> 2003)
+     * @return true if this calendar has a default century (i.e. 03 -> 2003)
      * @internal
      */
     virtual UBool haveDefaultCentury() const = 0;
@@ -2458,7 +2458,7 @@
      * @param base The base time, inclusive
      * @param transitionTime Receives the result time
      * @param status The error status
-     * @return TRUE if a transition is found.
+     * @return true if a transition is found.
      */
     UBool getImmediatePreviousZoneTransition(UDate base, UDate *transitionTime, UErrorCode& status) const;
 
@@ -2531,7 +2531,7 @@
 {
     fFields[field] = value;
     fStamp[field] = kInternallySet;
-    fIsSet[field]     = TRUE; // Remove later
+    fIsSet[field]     = true; // Remove later
 }
 
 
diff --git a/icu4c/source/i18n/unicode/choicfmt.h b/icu4c/source/i18n/unicode/choicfmt.h
index 3b2f48c..cb01fca 100644
--- a/icu4c/source/i18n/unicode/choicfmt.h
+++ b/icu4c/source/i18n/unicode/choicfmt.h
@@ -106,7 +106,7 @@
  * arrays of numbers, closure flags and strings,
  * they are interpreted just like
  * the sequence of <code>(number separator string)</code> in an equivalent pattern string.
- * <code>closure[i]==TRUE</code> corresponds to a <code>less_than</code> separator sign.
+ * <code>closure[i]==true</code> corresponds to a <code>less_than</code> separator sign.
  * The equivalent pattern string will be constructed automatically.</p>
  *
  * <p>During formatting, a number is mapped to the first range
@@ -126,7 +126,7 @@
  * <p>Here is an example of two arrays that map the number
  * <code>1..7</code> to the English day of the week abbreviations
  * <code>Sun..Sat</code>. No closures array is given; this is the same as
- * specifying all closures to be <code>FALSE</code>.</p>
+ * specifying all closures to be <code>false</code>.</p>
  *
  * <pre>    {1,2,3,4,5,6,7},
  *     {&quot;Sun&quot;,&quot;Mon&quot;,&quot;Tue&quot;,&quot;Wed&quot;,&quot;Thur&quot;,&quot;Fri&quot;,&quot;Sat&quot;}</pre>
@@ -138,7 +138,7 @@
  * like the turned bracket in European notation: [-Inf, 1) == [-Inf, 1[  )</p>
  *
  * <pre>    {0, 1, 1},
- *     {FALSE, FALSE, TRUE},
+ *     {false, false, true},
  *     {&quot;no files&quot;, &quot;one file&quot;, &quot;many files&quot;}</pre>
  *
  * <p>Here is an example that shows formatting and parsing: </p>
@@ -189,7 +189,7 @@
 
     /**
      * Constructs a new ChoiceFormat with the given limits and message strings.
-     * All closure flags default to <code>FALSE</code>,
+     * All closure flags default to <code>false</code>,
      * equivalent to <code>less_than_or_equal</code> separators.
      *
      * Copies the limits and formats instead of adopting them.
@@ -210,9 +210,9 @@
      *
      * @param limits Array of limit values
      * @param closures Array of booleans specifying whether each
-     * element of 'limits' is open or closed.  If FALSE, then the
+     * element of 'limits' is open or closed.  If false, then the
      * corresponding limit number is a member of its range.
-     * If TRUE, then the limit number belongs to the previous range it.
+     * If true, then the limit number belongs to the previous range it.
      * @param formats Array of formats
      * @param count Size of 'limits', 'closures', and 'formats' arrays
      * @deprecated ICU 49 Use MessageFormat instead, with plural and select arguments.
@@ -568,13 +568,13 @@
      * The intervals may be closed, half open, or open.  This affects
      * formatting but does not affect parsing.  Interval i is affected
      * by fClosures[i] and fClosures[i+1].  If fClosures[i]
-     * is FALSE, then the value fChoiceLimits[i] is in interval i.
+     * is false, then the value fChoiceLimits[i] is in interval i.
      * That is, intervals i and i are:
      *
      *  i-1:                 ... x < fChoiceLimits[i]
      *    i: fChoiceLimits[i] <= x ...
      *
-     * If fClosures[i] is TRUE, then the value fChoiceLimits[i] is
+     * If fClosures[i] is true, then the value fChoiceLimits[i] is
      * in interval i-1.  That is, intervals i-1 and i are:
      *
      *  i-1:                ... x <= fChoiceLimits[i]
diff --git a/icu4c/source/i18n/unicode/coleitr.h b/icu4c/source/i18n/unicode/coleitr.h
index e3ec0e0..aa0b08f 100644
--- a/icu4c/source/i18n/unicode/coleitr.h
+++ b/icu4c/source/i18n/unicode/coleitr.h
@@ -253,7 +253,7 @@
     /**
     * Checks if a comparison order is ignorable.
     * @param order the collation order.
-    * @return TRUE if a character is ignorable, FALSE otherwise.
+    * @return true if a character is ignorable, false otherwise.
     * @stable ICU 2.0
     */
     static inline UBool isIgnorable(int32_t order);
diff --git a/icu4c/source/i18n/unicode/coll.h b/icu4c/source/i18n/unicode/coll.h
index f5564c7..c750711 100644
--- a/icu4c/source/i18n/unicode/coll.h
+++ b/icu4c/source/i18n/unicode/coll.h
@@ -236,21 +236,21 @@
     // Collator public methods --------------------------------------------
 
     /**
-     * Returns TRUE if "other" is the same as "this".
+     * Returns true if "other" is the same as "this".
      *
-     * The base class implementation returns TRUE if "other" has the same type/class as "this":
+     * The base class implementation returns true if "other" has the same type/class as "this":
      * `typeid(*this) == typeid(other)`.
      *
      * Subclass implementations should do something like the following:
      *
-     *     if (this == &other) { return TRUE; }
-     *     if (!Collator::operator==(other)) { return FALSE; }  // not the same class
+     *     if (this == &other) { return true; }
+     *     if (!Collator::operator==(other)) { return false; }  // not the same class
      *
      *     const MyCollator &o = (const MyCollator&)other;
      *     (compare this vs. o's subclass fields)
      *
      * @param other Collator object to be compared
-     * @return TRUE if other is the same as this.
+     * @return true if other is the same as this.
      * @stable ICU 2.0
      */
     virtual UBool operator==(const Collator& other) const;
@@ -259,7 +259,7 @@
      * Returns true if "other" is not the same as "this".
      * Calls ! operator==(const Collator&) const which works for all subclasses.
      * @param other Collator object to be compared
-     * @return TRUE if other is not the same as this.
+     * @return true if other is not the same as this.
      * @stable ICU 2.0
      */
     virtual UBool operator!=(const Collator& other) const;
@@ -304,7 +304,7 @@
      * Starting with ICU 54, collation attributes can be specified via locale keywords as well,
      * in the old locale extension syntax ("el@colCaseFirst=upper")
      * or in language tag syntax ("el-u-kf-upper").
-     * See <a href="http://userguide.icu-project.org/collation/api">User Guide: Collation API</a>.
+     * See <a href="https://unicode-org.github.io/icu/userguide/collation/api">User Guide: Collation API</a>.
      *
      * The UErrorCode& err parameter is used to return status information to the user.
      * To check whether the construction succeeded or not, you should check
@@ -788,7 +788,7 @@
      * applications who wish to cache collators, or otherwise reuse
      * collators when possible.  The functional equivalent may change
      * over time.  For more information, please see the <a
-     * href="http://userguide.icu-project.org/locale#TOC-Locales-and-Services">
+     * href="https://unicode-org.github.io/icu/userguide/locale#locales-and-services">
      * Locales and Services</a> section of the ICU User Guide.
      * @param keyword a particular keyword as enumerated by
      * ucol_getKeywords.
@@ -841,7 +841,7 @@
      * Collator::createInstance to avoid undefined behavior.
      * @param key the registry key returned by a previous call to registerInstance
      * @param status the in/out status code, no special meanings are assigned
-     * @return TRUE if the collator for the key was successfully unregistered
+     * @return true if the collator for the key was successfully unregistered
      * @stable ICU 2.6
      */
     static UBool U_EXPORT2 unregister(URegistryKey key, UErrorCode& status);
@@ -1139,7 +1139,7 @@
      *  This string will be normalized.
      *  The structure and the syntax of the string is defined in the "Naming collators"
      *  section of the users guide:
-     *  http://userguide.icu-project.org/collation/concepts#TOC-Collator-naming-scheme
+     *  https://unicode-org.github.io/icu/userguide/collation/concepts#collator-naming-scheme
      *  This function supports preflighting.
      *
      *  This is internal, and intended to be used with delegate converters.
diff --git a/icu4c/source/i18n/unicode/curramt.h b/icu4c/source/i18n/unicode/curramt.h
index 5cfe1cf..e4c35c1 100644
--- a/icu4c/source/i18n/unicode/curramt.h
+++ b/icu4c/source/i18n/unicode/curramt.h
@@ -41,7 +41,7 @@
     /**
      * Construct an object with the given numeric amount and the given
      * ISO currency code.
-     * @param amount a numeric object; amount.isNumeric() must be TRUE
+     * @param amount a numeric object; amount.isNumeric() must be true
      * @param isoCode the 3-letter ISO 4217 currency code; must not be
      * NULL and must have length 3
      * @param ec input-output error code. If the amount or the isoCode
diff --git a/icu4c/source/i18n/unicode/dcfmtsym.h b/icu4c/source/i18n/unicode/dcfmtsym.h
index 582e753..b2c39a0 100644
--- a/icu4c/source/i18n/unicode/dcfmtsym.h
+++ b/icu4c/source/i18n/unicode/dcfmtsym.h
@@ -378,7 +378,7 @@
      *                             back to the locale.
      */
     void initialize(const Locale& locale, UErrorCode& success,
-        UBool useLastResortData = FALSE, const NumberingSystem* ns = nullptr);
+                    UBool useLastResortData = false, const NumberingSystem* ns = nullptr);
 
     /**
      * Initialize the symbols with default values.
@@ -543,12 +543,12 @@
 // -------------------------------------
 
 inline void
-DecimalFormatSymbols::setSymbol(ENumberFormatSymbol symbol, const UnicodeString &value, const UBool propogateDigits = TRUE) {
+DecimalFormatSymbols::setSymbol(ENumberFormatSymbol symbol, const UnicodeString &value, const UBool propagateDigits = true) {
     if (symbol == kCurrencySymbol) {
-        fIsCustomCurrencySymbol = TRUE;
+        fIsCustomCurrencySymbol = true;
     }
     else if (symbol == kIntlCurrencySymbol) {
-        fIsCustomIntlCurrencySymbol = TRUE;
+        fIsCustomIntlCurrencySymbol = true;
     }
     if(symbol<kFormatSymbolCount) {
         fSymbols[symbol]=value;
@@ -559,7 +559,7 @@
     // Also record updates to fCodePointZero. Be conservative if in doubt.
     if (symbol == kZeroDigitSymbol) {
         UChar32 sym = value.char32At(0);
-        if ( propogateDigits && u_charDigitValue(sym) == 0 && value.countChar32() == 1 ) {
+        if ( propagateDigits && u_charDigitValue(sym) == 0 && value.countChar32() == 1 ) {
             fCodePointZero = sym;
             for ( int8_t i = 1 ; i<= 9 ; i++ ) {
                 sym++;
diff --git a/icu4c/source/i18n/unicode/decimfmt.h b/icu4c/source/i18n/unicode/decimfmt.h
index 8dba9b2..b9be18f 100644
--- a/icu4c/source/i18n/unicode/decimfmt.h
+++ b/icu4c/source/i18n/unicode/decimfmt.h
@@ -564,11 +564,11 @@
  *
  * <li>In order to enable significant digits formatting, use a pattern
  * containing the <code>'@'</code> pattern character.  Alternatively,
- * call setSignificantDigitsUsed(TRUE).
+ * call setSignificantDigitsUsed(true).
  *
  * <li>In order to disable significant digits formatting, use a
  * pattern that does not contain the <code>'@'</code> pattern
- * character. Alternatively, call setSignificantDigitsUsed(FALSE).
+ * character. Alternatively, call setSignificantDigitsUsed(false).
  *
  * <li>The number of significant digits has no effect on parsing.
  *
@@ -817,8 +817,8 @@
     /**
      * Sets whether lenient parsing should be enabled (it is off by default).
      *
-     * @param enable \c TRUE if lenient parsing should be used,
-     *               \c FALSE otherwise.
+     * @param enable \c true if lenient parsing should be used,
+     *               \c false otherwise.
      * @stable ICU 4.8
      */
     void setLenient(UBool enable) U_OVERRIDE;
@@ -1507,7 +1507,7 @@
 
     /**
      * Return whether or not scientific notation is used.
-     * @return TRUE if this object formats and parses scientific notation
+     * @return true if this object formats and parses scientific notation
      * @see #setScientificNotation
      * @see #getMinimumExponentDigits
      * @see #setMinimumExponentDigits
@@ -1523,7 +1523,7 @@
      * maximum number of integer digits is set to more than 8, the effective
      * maximum will be 1.  This allows this call to generate a 'default' scientific
      * number format without additional changes.
-     * @param useScientific TRUE if this object formats and parses scientific
+     * @param useScientific true if this object formats and parses scientific
      * notation
      * @see #isScientificNotation
      * @see #getMinimumExponentDigits
@@ -1562,7 +1562,7 @@
 
     /**
      * Return whether the exponent sign is always shown.
-     * @return TRUE if the exponent is always prefixed with either the
+     * @return true if the exponent is always prefixed with either the
      * localized minus sign or the localized plus sign, false if only negative
      * exponents are prefixed with the localized minus sign.
      * @see #setScientificNotation
@@ -1577,7 +1577,7 @@
     /**
      * Set whether the exponent sign is always shown.  This has no effect
      * unless scientific notation is in use.
-     * @param expSignAlways TRUE if the exponent is always prefixed with either
+     * @param expSignAlways true if the exponent is always prefixed with either
      * the localized minus sign or the localized plus sign, false if only
      * negative exponents are prefixed with the localized minus sign.
      * @see #setScientificNotation
@@ -1674,8 +1674,15 @@
     int32_t getMinimumGroupingDigits() const;
 
     /**
-     * Sets the minimum grouping digits. Setting to a value less than or
-     * equal to 1 turns off minimum grouping digits.
+     * Sets the minimum grouping digits. Setting the value to
+     *  - 1: Turns off minimum grouping digits.
+     *  - 0 or -1: The behavior is undefined.
+     *  - UNUM_MINIMUM_GROUPING_DIGITS_AUTO: Display grouping using the default
+     *      strategy for all locales.
+     *  - UNUM_MINIMUM_GROUPING_DIGITS_MIN2: Display grouping using locale
+     *      defaults, except do not show grouping on values smaller than 10000
+     *      (such that there is a minimum of two digits before the first
+     *      separator).
      *
      * For more control over grouping strategies, use NumberFormatter.
      *
@@ -1689,7 +1696,7 @@
      * Allows you to get the behavior of the decimal separator with integers.
      * (The decimal separator will always appear with decimals.)
      *
-     * @return    TRUE if the decimal separator always appear with decimals.
+     * @return    true if the decimal separator always appear with decimals.
      * Example: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
      * @stable ICU 2.0
      */
@@ -1699,7 +1706,7 @@
      * Allows you to set the behavior of the decimal separator with integers.
      * (The decimal separator will always appear with decimals.)
      *
-     * @param newValue    set TRUE if the decimal separator will always appear with decimals.
+     * @param newValue    set true if the decimal separator will always appear with decimals.
      * Example: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
      * @stable ICU 2.0
      */
@@ -1708,7 +1715,7 @@
     /**
      * Allows you to get the parse behavior of the pattern decimal mark.
      *
-     * @return    TRUE if input must contain a match to decimal mark in pattern
+     * @return    true if input must contain a match to decimal mark in pattern
      * @stable ICU 54
      */
     UBool isDecimalPatternMatchRequired(void) const;
@@ -1716,10 +1723,10 @@
     /**
      * Allows you to set the parse behavior of the pattern decimal mark.
      *
-     * if TRUE, the input must have a decimal mark if one was specified in the pattern. When
-     * FALSE the decimal mark may be omitted from the input.
+     * if true, the input must have a decimal mark if one was specified in the pattern. When
+     * false the decimal mark may be omitted from the input.
      *
-     * @param newValue    set TRUE if input must contain a match to decimal mark in pattern
+     * @param newValue    set true if input must contain a match to decimal mark in pattern
      * @stable ICU 54
      */
     virtual void setDecimalPatternMatchRequired(UBool newValue);
@@ -1962,7 +1969,7 @@
      * to one.  If the maximum significant digits count is less than
      * <code>min</code>, then it is set to <code>min</code>.
      * This function also enables the use of significant digits
-     * by this formatter - areSignificantDigitsUsed() will return TRUE.
+     * by this formatter - areSignificantDigitsUsed() will return true.
      * @see #areSignificantDigitsUsed
      * @param min the fewest significant digits to be shown
      * @stable ICU 3.0
@@ -1975,7 +1982,7 @@
      * to one.  If the minimum significant digits count is greater
      * than <code>max</code>, then it is set to <code>max</code>.
      * This function also enables the use of significant digits
-     * by this formatter - areSignificantDigitsUsed() will return TRUE.
+     * by this formatter - areSignificantDigitsUsed() will return true.
      * @see #areSignificantDigitsUsed
      * @param max the most significant digits to be shown
      * @stable ICU 3.0
diff --git a/icu4c/source/i18n/unicode/dtfmtsym.h b/icu4c/source/i18n/unicode/dtfmtsym.h
index c6d76fe..69f9f97 100644
--- a/icu4c/source/i18n/unicode/dtfmtsym.h
+++ b/icu4c/source/i18n/unicode/dtfmtsym.h
@@ -919,7 +919,8 @@
      *                             failure code upon return.
      * @param useLastResortData    determine if use last resort data
      */
-    void initializeData(const Locale& locale, const char *type, UErrorCode& status, UBool useLastResortData = FALSE);
+    void initializeData(const Locale& locale, const char *type,
+                        UErrorCode& status, UBool useLastResortData = false);
 
     /**
      * Copy or alias an array in another object, as appropriate.
@@ -983,12 +984,12 @@
     static UDateFormatField U_EXPORT2 getPatternCharIndex(char16_t c);
 
     /**
-     * Returns TRUE if f (with its pattern character repeated count times) is a numeric field.
+     * Returns true if f (with its pattern character repeated count times) is a numeric field.
      */
     static UBool U_EXPORT2 isNumericField(UDateFormatField f, int32_t count);
 
     /**
-     * Returns TRUE if c (repeated count times) is the pattern character for a numeric field.
+     * Returns true if c (repeated count times) is the pattern character for a numeric field.
      */
     static UBool U_EXPORT2 isNumericPatternChar(char16_t c, int32_t count);
 public:
diff --git a/icu4c/source/i18n/unicode/dtitvfmt.h b/icu4c/source/i18n/unicode/dtitvfmt.h
index 4e4d712..f45e680 100644
--- a/icu4c/source/i18n/unicode/dtitvfmt.h
+++ b/icu4c/source/i18n/unicode/dtitvfmt.h
@@ -31,6 +31,7 @@
 #include "unicode/dtitvinf.h"
 #include "unicode/dtptngen.h"
 #include "unicode/formattedvalue.h"
+#include "unicode/udisplaycontext.h"
 
 U_NAMESPACE_BEGIN
 
@@ -651,6 +652,34 @@
      */
     virtual void setTimeZone(const TimeZone& zone);
 
+#ifndef U_FORCE_HIDE_DRAFT_API
+    /**
+     * Set a particular UDisplayContext value in the formatter, such as
+     * UDISPCTX_CAPITALIZATION_FOR_STANDALONE. This causes the formatted
+     * result to be capitalized appropriately for the context in which
+     * it is intended to be used, considering both the locale and the
+     * type of field at the beginning of the formatted result.
+     * @param value The UDisplayContext value to set.
+     * @param status Input/output status. If at entry this indicates a failure
+     *               status, the function will do nothing; otherwise this will be
+     *               updated with any new status from the function.
+     * @draft ICU 68
+     */
+    virtual void setContext(UDisplayContext value, UErrorCode& status);
+
+    /**
+     * Get the formatter's UDisplayContext value for the specified UDisplayContextType,
+     * such as UDISPCTX_TYPE_CAPITALIZATION.
+     * @param type The UDisplayContextType whose value to return
+     * @param status Input/output status. If at entry this indicates a failure
+     *               status, the function will do nothing; otherwise this will be
+     *               updated with any new status from the function.
+     * @return The UDisplayContextValue for the specified type.
+     * @draft ICU 68
+     */
+    virtual UDisplayContext getContext(UDisplayContextType type, UErrorCode& status) const;
+#endif  // U_FORCE_HIDE_DRAFT_API
+
     /**
      * Return the class ID for this class. This is useful only for comparing to
      * a return value from getDynamicClassID(). For example:
@@ -796,7 +825,7 @@
      *                          to be formatted into date interval string
      * @param toCalendar        calendar set to the to date in date interval
      *                          to be formatted into date interval string
-     * @param fromToOnSameDay   TRUE iff from and to dates are on the same day
+     * @param fromToOnSameDay   true iff from and to dates are on the same day
      *                          (any difference is in ampm/hours or below)
      * @param appendTo          Output parameter to receive result.
      *                          Result is appended to existing contents.
@@ -864,6 +893,19 @@
     void setFallbackPattern(UCalendarDateFields field,
                             const UnicodeString& skeleton,
                             UErrorCode& status);
+    
+
+
+    /**
+     * Converts special hour metacharacters (such as 'j') in the skeleton into locale-appropriate
+     * pattern characters.
+     *
+     *
+     *  @param skeleton               The skeleton to convert
+     *  @return A copy of the skeleton, which "j" and any other special hour metacharacters converted to the regular ones.
+     *
+     */
+    UnicodeString normalizeHourMetacharacters(const UnicodeString& skeleton) const;
 
 
 
@@ -919,8 +961,8 @@
      * @param dateSkeleton   normalized date skeleton
      * @param timeSkeleton   normalized time skeleton
      * @return               whether the resource is found for the skeleton.
-     *                       TRUE if interval pattern found for the skeleton,
-     *                       FALSE otherwise.
+     *                       true if interval pattern found for the skeleton,
+     *                       false otherwise.
      */
     UBool setSeparateDateTimePtn(const UnicodeString& dateSkeleton,
                                  const UnicodeString& timeSkeleton);
@@ -948,8 +990,8 @@
      * @param extendedBestSkeleton  extended best match skeleton
      * @return                      whether the interval pattern is found
      *                              through extending skeleton or not.
-     *                              TRUE if interval pattern is found by
-     *                              extending skeleton, FALSE otherwise.
+     *                              true if interval pattern is found by
+     *                              extending skeleton, false otherwise.
      */
     UBool setIntervalPattern(UCalendarDateFields field,
                              const UnicodeString* skeleton,
@@ -984,6 +1026,7 @@
      * @param differenceInfo           the difference between 2 skeletons
      *                                 1 means only field width differs
      *                                 2 means v/z exchange
+     * @param suppressDayPeriodField if true, remove the day period field from the pattern, if there is one
      * @param adjustedIntervalPattern  adjusted interval pattern
      */
     static void U_EXPORT2 adjustFieldWidth(
@@ -991,9 +1034,21 @@
                             const UnicodeString& bestMatchSkeleton,
                             const UnicodeString& bestMatchIntervalPattern,
                             int8_t differenceInfo,
+                            UBool suppressDayPeriodField,
                             UnicodeString& adjustedIntervalPattern);
 
     /**
+     * Does the same thing as UnicodeString::findAndReplace(), except that it won't perform
+     * the substitution inside quoted literal text.
+     * @param targetString The string to perform the find-replace operation on.
+     * @param strToReplace The string to search for and replace in the target string.
+     * @param strToReplaceWith The string to substitute in wherever `stringToReplace` was found.
+     */
+    static void U_EXPORT2 findReplaceInPattern(UnicodeString& targetString,
+                                               const UnicodeString& strToReplace,
+                                               const UnicodeString& strToReplaceWith);
+
+    /**
      * Concat a single date pattern with a time interval pattern,
      * set it into the intervalPatterns, while field is time field.
      * This is used to handle time interval patterns on skeleton with
@@ -1137,6 +1192,11 @@
     UnicodeString* fDatePattern;
     UnicodeString* fTimePattern;
     UnicodeString* fDateTimeFormat;
+
+    /**
+     * Other formatting information
+     */
+    UDisplayContext fCapitalizationContext;
 };
 
 inline UBool
diff --git a/icu4c/source/i18n/unicode/dtitvinf.h b/icu4c/source/i18n/unicode/dtitvinf.h
index 68bfa43..3b26085 100644
--- a/icu4c/source/i18n/unicode/dtitvinf.h
+++ b/icu4c/source/i18n/unicode/dtitvinf.h
@@ -307,8 +307,8 @@
 
     /** Get default order -- whether the first date in pattern is later date
                              or not.
-     * return default date ordering in interval pattern. TRUE if the first date
-     *        in pattern is later date, FALSE otherwise.
+     * return default date ordering in interval pattern. true if the first date
+     *        in pattern is later date, false otherwise.
      * @stable ICU 4.0
      */
     UBool getDefaultOrder() const;
diff --git a/icu4c/source/i18n/unicode/dtptngen.h b/icu4c/source/i18n/unicode/dtptngen.h
index dd99d58..828c0a9 100644
--- a/icu4c/source/i18n/unicode/dtptngen.h
+++ b/icu4c/source/i18n/unicode/dtptngen.h
@@ -77,6 +77,13 @@
 #ifndef U_HIDE_INTERNAL_API
 
     /**
+     * For ICU use only. Skips loading the standard date/time patterns (which is done via DateFormat).
+     *
+     * @internal
+     */
+    static DateTimePatternGenerator* U_EXPORT2 createInstanceNoStdPat(const Locale& uLocale, UErrorCode& status);
+
+    /**
      * For ICU use only
      *
      * @internal
@@ -526,7 +533,7 @@
     /**
      * Constructor.
      */
-    DateTimePatternGenerator(const Locale& locale, UErrorCode & status);
+    DateTimePatternGenerator(const Locale& locale, UErrorCode & status, UBool skipStdPatterns = false);
 
     /**
      * Copy constructor.
@@ -573,7 +580,7 @@
         // with #13183, no longer need flags for b, B
     };
 
-    void initData(const Locale &locale, UErrorCode &status);
+    void initData(const Locale &locale, UErrorCode &status, UBool skipStdPatterns = false);
     void addCanonicalItems(UErrorCode &status);
     void addICUPatterns(const Locale& locale, UErrorCode& status);
     void hackTimes(const UnicodeString& hackPattern, UErrorCode& status);
diff --git a/icu4c/source/i18n/unicode/fieldpos.h b/icu4c/source/i18n/unicode/fieldpos.h
index 23ee386..ea0a23b 100644
--- a/icu4c/source/i18n/unicode/fieldpos.h
+++ b/icu4c/source/i18n/unicode/fieldpos.h
@@ -161,7 +161,7 @@
     /** 
      * Equality operator.
      * @param that    the object to be compared with.
-     * @return        TRUE if the two field positions are equal, FALSE otherwise.
+     * @return        true if the two field positions are equal, false otherwise.
      * @stable ICU 2.0
      */
     UBool              operator==(const FieldPosition& that) const;
@@ -169,7 +169,7 @@
     /** 
      * Equality operator.
      * @param that    the object to be compared with.
-     * @return        TRUE if the two field positions are not equal, FALSE otherwise.
+     * @return        true if the two field positions are not equal, false otherwise.
      * @stable ICU 2.0
      */
     UBool              operator!=(const FieldPosition& that) const;
diff --git a/icu4c/source/i18n/unicode/fmtable.h b/icu4c/source/i18n/unicode/fmtable.h
index 7bec4f6..3a09039 100644
--- a/icu4c/source/i18n/unicode/fmtable.h
+++ b/icu4c/source/i18n/unicode/fmtable.h
@@ -179,7 +179,7 @@
     /**
      * Equality comparison.
      * @param other    the object to be compared with.
-     * @return        TRUE if other are equal to this, FALSE otherwise.
+     * @return        true if other are equal to this, false otherwise.
      * @stable ICU 2.0
      */
     UBool          operator==(const Formattable &other) const;
@@ -187,7 +187,7 @@
     /**
      * Equality operator.
      * @param other    the object to be compared with.
-     * @return        TRUE if other are unequal to this, FALSE otherwise.
+     * @return        true if other are unequal to this, false otherwise.
      * @stable ICU 2.0
      */
     UBool          operator!=(const Formattable& other) const
@@ -277,9 +277,9 @@
     Type            getType(void) const;
 
     /**
-     * Returns TRUE if the data type of this Formattable object
+     * Returns true if the data type of this Formattable object
      * is kDouble, kLong, or kInt64
-     * @return TRUE if this is a pure numeric object
+     * @return true if this is a pure numeric object
      * @stable ICU 3.0
      */
     UBool           isNumeric() const;
diff --git a/icu4c/source/i18n/unicode/formattedvalue.h b/icu4c/source/i18n/unicode/formattedvalue.h
index e7ba4ec..5febea0 100644
--- a/icu4c/source/i18n/unicode/formattedvalue.h
+++ b/icu4c/source/i18n/unicode/formattedvalue.h
@@ -116,7 +116,7 @@
      * Gets the field category for the current position.
      *
      * The return value is well-defined only after
-     * FormattedValue#nextPosition returns TRUE.
+     * FormattedValue#nextPosition returns true.
      *
      * @return The field category saved in the instance.
      * @stable ICU 64
@@ -129,7 +129,7 @@
      * Gets the field for the current position.
      *
      * The return value is well-defined only after
-     * FormattedValue#nextPosition returns TRUE.
+     * FormattedValue#nextPosition returns true.
      *
      * @return The field saved in the instance.
      * @stable ICU 64
@@ -141,7 +141,7 @@
     /**
      * Gets the INCLUSIVE start index for the current position.
      *
-     * The return value is well-defined only after FormattedValue#nextPosition returns TRUE.
+     * The return value is well-defined only after FormattedValue#nextPosition returns true.
      *
      * @return The start index saved in the instance.
      * @stable ICU 64
@@ -153,7 +153,7 @@
     /**
      * Gets the EXCLUSIVE end index stored for the current position.
      *
-     * The return value is well-defined only after FormattedValue#nextPosition returns TRUE.
+     * The return value is well-defined only after FormattedValue#nextPosition returns true.
      *
      * @return The end index saved in the instance.
      * @stable ICU 64
@@ -301,8 +301,8 @@
      *         see ConstrainedFieldPosition#constrainCategory
      *         and ConstrainedFieldPosition#constrainField.
      * @param status Set if an error occurs.
-     * @return TRUE if a new occurrence of the field was found;
-     *         FALSE otherwise or if an error was set.
+     * @return true if a new occurrence of the field was found;
+     *         false otherwise or if an error was set.
      *
      * @stable ICU 64
      */
diff --git a/icu4c/source/i18n/unicode/fpositer.h b/icu4c/source/i18n/unicode/fpositer.h
index 3e8a010..87e811e 100644
--- a/icu4c/source/i18n/unicode/fpositer.h
+++ b/icu4c/source/i18n/unicode/fpositer.h
@@ -96,7 +96,7 @@
 
     /**
      * If the current position is valid, updates the FieldPosition values, advances the iterator,
-     * and returns TRUE, otherwise returns FALSE.
+     * and returns true, otherwise returns false.
      * @stable ICU 4.4
      */
     UBool next(FieldPosition& fp);
diff --git a/icu4c/source/i18n/unicode/gregocal.h b/icu4c/source/i18n/unicode/gregocal.h
index 4ce40da..e5e6df1 100644
--- a/icu4c/source/i18n/unicode/gregocal.h
+++ b/icu4c/source/i18n/unicode/gregocal.h
@@ -344,7 +344,7 @@
     UBool isLeapYear(int32_t year) const;
 
     /**
-     * Returns TRUE if the given Calendar object is equivalent to this
+     * Returns true if the given Calendar object is equivalent to this
      * one.  Calendar override.
      *
      * @param other the Calendar to be compared with this Calendar   
@@ -756,7 +756,7 @@
  public: // internal implementation
 
     /**
-     * @return TRUE if this calendar has the notion of a default century
+     * @return true if this calendar has the notion of a default century
      * @internal 
      */
     virtual UBool haveDefaultCentury() const;
diff --git a/icu4c/source/i18n/unicode/listformatter.h b/icu4c/source/i18n/unicode/listformatter.h
index 211055d..76a7289 100644
--- a/icu4c/source/i18n/unicode/listformatter.h
+++ b/icu4c/source/i18n/unicode/listformatter.h
@@ -23,6 +23,8 @@
 
 #if U_SHOW_CPLUSPLUS_API
 
+#if !UCONFIG_NO_FORMATTING
+
 #include "unicode/unistr.h"
 #include "unicode/locid.h"
 #include "unicode/formattedvalue.h"
@@ -65,7 +67,6 @@
  */
 
 
-#if !UCONFIG_NO_FORMATTING
 /**
  * An immutable class containing the result of a list formatting operation.
  *
@@ -135,7 +136,6 @@
         : fData(nullptr), fErrorCode(errorCode) {}
     friend class ListFormatter;
 };
-#endif // !UCONFIG_NO_FORMATTING
 
 
 /**
@@ -185,8 +185,6 @@
      */
     static ListFormatter* createInstance(const Locale& locale, UErrorCode& errorCode);
 
-#ifndef U_HIDE_DRAFT_API
-#if !UCONFIG_NO_FORMATTING
     /**
      * Creates a ListFormatter for the given locale, list type, and style.
      *
@@ -195,12 +193,10 @@
      * @param width The width of formatting to use.
      * @param errorCode ICU error code, set if no data available for the given locale.
      * @return A ListFormatter object created from internal data derived from CLDR data.
-     * @draft ICU 67
+     * @stable ICU 67
      */
     static ListFormatter* createInstance(
       const Locale& locale, UListFormatterType type, UListFormatterWidth width, UErrorCode& errorCode);
-#endif  /* !UCONFIG_NO_FORMATTING */
-#endif  /* U_HIDE_DRAFT_API */
   
 #ifndef U_HIDE_INTERNAL_API
     /**
@@ -239,7 +235,6 @@
     UnicodeString& format(const UnicodeString items[], int32_t n_items,
         UnicodeString& appendTo, UErrorCode& errorCode) const;
 
-#if !UCONFIG_NO_FORMATTING
     /**
      * Formats a list of strings to a FormattedList, which exposes field
      * position information. The FormattedList contains more information than
@@ -255,7 +250,6 @@
         const UnicodeString items[],
         int32_t n_items,
         UErrorCode& errorCode) const;
-#endif // !UCONFIG_NO_FORMATTING
 
 #ifndef U_HIDE_INTERNAL_API
     /**
@@ -296,6 +290,8 @@
 
 U_NAMESPACE_END
 
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
 #endif /* U_SHOW_CPLUSPLUS_API */
 
 #endif // __LISTFORMATTER_H__
diff --git a/icu4c/source/i18n/unicode/measfmt.h b/icu4c/source/i18n/unicode/measfmt.h
index b4f9048..2155ad5 100644
--- a/icu4c/source/i18n/unicode/measfmt.h
+++ b/icu4c/source/i18n/unicode/measfmt.h
@@ -309,7 +309,7 @@
     /**
      * ICU use only.
      * Allows subclass to change locale. Note that this method also changes
-     * the NumberFormat object. Returns TRUE if locale changed; FALSE if no
+     * the NumberFormat object. Returns true if locale changed; false if no
      * change was made.
      * @internal.
      */
diff --git a/icu4c/source/i18n/unicode/measunit.h b/icu4c/source/i18n/unicode/measunit.h
index e240092..d86bab3 100644
--- a/icu4c/source/i18n/unicode/measunit.h
+++ b/icu4c/source/i18n/unicode/measunit.h
@@ -434,7 +434,7 @@
      * For example, if the receiver is "kilowatt" and the argument is "hour-per-day", then the
      * unit "kilowatt-hour-per-day" is returned.
      *
-     * NOTE: Only works on SINGLE and COMPOUND units. If either unit (receivee and argument) is a
+     * NOTE: Only works on SINGLE and COMPOUND units. If either unit (receiver and argument) is a
      * MIXED unit, an error will occur. For more information, see UMeasureUnitComplexity.
      *
      * @param other The MeasureUnit to multiply with the target.
@@ -445,9 +445,9 @@
     MeasureUnit product(const MeasureUnit& other, UErrorCode& status) const;
 #endif // U_HIDE_DRAFT_API
 
-#ifndef U_HIDE_INTERNAL_API
+#ifndef U_HIDE_DRAFT_API
     /**
-     * Gets the list of SINGLE units contained within a MIXED of COMPOUND unit.
+     * Gets the list of SINGLE units contained within a MIXED or COMPOUND unit.
      *
      * Examples:
      * - Given "meter-kilogram-per-second", three units will be returned: "meter",
@@ -457,15 +457,12 @@
      *
      * If this is a SINGLE unit, an array of length 1 will be returned.
      *
-     * TODO(ICU-21021): Finalize this API and propose it as draft.
-     *
-     * @param outCount The number of elements in the return array.
      * @param status Set if an error occurs.
-     * @return An array of single units, owned by the caller.
-     * @internal ICU 67 Technical Preview
+     * @return A pair with the list of units as a LocalArray and the number of units in the list.
+     * @draft ICU 68
      */
-    LocalArray<MeasureUnit> splitToSingleUnits(int32_t& outCount, UErrorCode& status) const;
-#endif // U_HIDE_INTERNAL_API
+    inline std::pair<LocalArray<MeasureUnit>, int32_t> splitToSingleUnits(UErrorCode& status) const;
+#endif // U_HIDE_DRAFT_API
 
     /**
      * getAvailable gets all of the available units.
@@ -540,33 +537,10 @@
 #ifndef U_HIDE_INTERNAL_API
     /**
      * ICU use only.
-     * Returns associated array index for this measure unit. Only valid for
-     * non-currency measure units.
+     * Returns associated array index for this measure unit.
      * @internal
      */
-    int32_t getIndex() const;
-
-    /**
-     * ICU use only.
-     * Returns maximum value from getIndex plus 1.
-     * @internal
-     */
-    static int32_t getIndexCount();
-
-    /**
-     * ICU use only.
-     * @return the unit.getIndex() of the unit which has this unit.getType() and unit.getSubtype(),
-     *         or a negative value if there is no such unit
-     * @internal
-     */
-    static int32_t internalGetIndexForTypeAndSubtype(const char *type, const char *subtype);
-
-    /**
-     * ICU use only.
-     * @internal
-     */
-    static MeasureUnit resolveUnitPerUnit(
-            const MeasureUnit &unit, const MeasureUnit &perUnit, bool* isResolved);
+    int32_t getOffset() const;
 #endif /* U_HIDE_INTERNAL_API */
 
 // All code between the "Start generated createXXX methods" comment and
@@ -914,22 +888,6 @@
     static MeasureUnit getMole();
 
     /**
-     * Returns by pointer, unit of concentr: permillion.
-     * Caller owns returned value and must free it.
-     * Also see {@link #getPartPerMillion()}.
-     * @param status ICU error code.
-     * @stable ICU 57
-     */
-    static MeasureUnit *createPartPerMillion(UErrorCode &status);
-
-    /**
-     * Returns by value, unit of concentr: permillion.
-     * Also see {@link #createPartPerMillion()}.
-     * @stable ICU 64
-     */
-    static MeasureUnit getPartPerMillion();
-
-    /**
      * Returns by pointer, unit of concentr: percent.
      * Caller owns returned value and must free it.
      * Also see {@link #getPercent()}.
@@ -962,6 +920,22 @@
     static MeasureUnit getPermille();
 
     /**
+     * Returns by pointer, unit of concentr: permillion.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getPartPerMillion()}.
+     * @param status ICU error code.
+     * @stable ICU 57
+     */
+    static MeasureUnit *createPartPerMillion(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of concentr: permillion.
+     * Also see {@link #createPartPerMillion()}.
+     * @stable ICU 64
+     */
+    static MeasureUnit getPartPerMillion();
+
+    /**
      * Returns by pointer, unit of concentr: permyriad.
      * Caller owns returned value and must free it.
      * Also see {@link #getPermyriad()}.
@@ -1265,23 +1239,21 @@
      */
     static MeasureUnit getDayPerson();
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of duration: decade.
      * Caller owns returned value and must free it.
      * Also see {@link #getDecade()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createDecade(UErrorCode &status);
 
     /**
      * Returns by value, unit of duration: decade.
      * Also see {@link #createDecade()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getDecade();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of duration: hour.
@@ -1667,23 +1639,21 @@
      */
     static MeasureUnit getKilowattHour();
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of energy: therm-us.
      * Caller owns returned value and must free it.
      * Also see {@link #getThermUs()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createThermUs(UErrorCode &status);
 
     /**
      * Returns by value, unit of energy: therm-us.
      * Also see {@link #createThermUs()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getThermUs();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of force: newton.
@@ -1783,129 +1753,133 @@
 
 #ifndef U_HIDE_DRAFT_API
     /**
+     * Returns by pointer, unit of graphics: dot.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getDot()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createDot(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of graphics: dot.
+     * Also see {@link #createDot()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getDot();
+#endif /* U_HIDE_DRAFT_API */
+
+    /**
      * Returns by pointer, unit of graphics: dot-per-centimeter.
      * Caller owns returned value and must free it.
      * Also see {@link #getDotPerCentimeter()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createDotPerCentimeter(UErrorCode &status);
 
     /**
      * Returns by value, unit of graphics: dot-per-centimeter.
      * Also see {@link #createDotPerCentimeter()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getDotPerCentimeter();
-#endif /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of graphics: dot-per-inch.
      * Caller owns returned value and must free it.
      * Also see {@link #getDotPerInch()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createDotPerInch(UErrorCode &status);
 
     /**
      * Returns by value, unit of graphics: dot-per-inch.
      * Also see {@link #createDotPerInch()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getDotPerInch();
-#endif /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of graphics: em.
      * Caller owns returned value and must free it.
      * Also see {@link #getEm()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createEm(UErrorCode &status);
 
     /**
      * Returns by value, unit of graphics: em.
      * Also see {@link #createEm()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getEm();
-#endif /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of graphics: megapixel.
      * Caller owns returned value and must free it.
      * Also see {@link #getMegapixel()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createMegapixel(UErrorCode &status);
 
     /**
      * Returns by value, unit of graphics: megapixel.
      * Also see {@link #createMegapixel()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getMegapixel();
-#endif /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of graphics: pixel.
      * Caller owns returned value and must free it.
      * Also see {@link #getPixel()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createPixel(UErrorCode &status);
 
     /**
      * Returns by value, unit of graphics: pixel.
      * Also see {@link #createPixel()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getPixel();
-#endif /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of graphics: pixel-per-centimeter.
      * Caller owns returned value and must free it.
      * Also see {@link #getPixelPerCentimeter()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createPixelPerCentimeter(UErrorCode &status);
 
     /**
      * Returns by value, unit of graphics: pixel-per-centimeter.
      * Also see {@link #createPixelPerCentimeter()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getPixelPerCentimeter();
-#endif /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of graphics: pixel-per-inch.
      * Caller owns returned value and must free it.
      * Also see {@link #getPixelPerInch()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createPixelPerInch(UErrorCode &status);
 
     /**
      * Returns by value, unit of graphics: pixel-per-inch.
      * Also see {@link #createPixelPerInch()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getPixelPerInch();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: astronomical-unit.
@@ -1955,6 +1929,24 @@
      */
     static MeasureUnit getDecimeter();
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of length: earth-radius.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getEarthRadius()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createEarthRadius(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of length: earth-radius.
+     * Also see {@link #createEarthRadius()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getEarthRadius();
+#endif /* U_HIDE_DRAFT_API */
+
     /**
      * Returns by pointer, unit of length: fathom.
      * Caller owns returned value and must free it.
@@ -2243,6 +2235,42 @@
      */
     static MeasureUnit getYard();
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of light: candela.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getCandela()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createCandela(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of light: candela.
+     * Also see {@link #createCandela()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getCandela();
+#endif /* U_HIDE_DRAFT_API */
+
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of light: lumen.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getLumen()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createLumen(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of light: lumen.
+     * Also see {@link #createLumen()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getLumen();
+#endif /* U_HIDE_DRAFT_API */
+
     /**
      * Returns by pointer, unit of light: lux.
      * Caller owns returned value and must free it.
@@ -2323,6 +2351,24 @@
      */
     static MeasureUnit getEarthMass();
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of mass: grain.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getGrain()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createGrain(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of mass: grain.
+     * Also see {@link #createGrain()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getGrain();
+#endif /* U_HIDE_DRAFT_API */
+
     /**
      * Returns by pointer, unit of mass: gram.
      * Caller owns returned value and must free it.
@@ -2611,23 +2657,21 @@
      */
     static MeasureUnit getAtmosphere();
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of pressure: bar.
      * Caller owns returned value and must free it.
      * Also see {@link #getBar()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createBar(UErrorCode &status);
 
     /**
      * Returns by value, unit of pressure: bar.
      * Also see {@link #createBar()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getBar();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of pressure: hectopascal.
@@ -2725,23 +2769,21 @@
      */
     static MeasureUnit getMillimeterOfMercury();
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of pressure: pascal.
      * Caller owns returned value and must free it.
      * Also see {@link #getPascal()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createPascal(UErrorCode &status);
 
     /**
      * Returns by value, unit of pressure: pascal.
      * Also see {@link #createPascal()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getPascal();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of pressure: pound-force-per-square-inch.
@@ -3143,6 +3185,78 @@
      */
     static MeasureUnit getDeciliter();
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of volume: dessert-spoon.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getDessertSpoon()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createDessertSpoon(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of volume: dessert-spoon.
+     * Also see {@link #createDessertSpoon()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getDessertSpoon();
+#endif /* U_HIDE_DRAFT_API */
+
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of volume: dessert-spoon-imperial.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getDessertSpoonImperial()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createDessertSpoonImperial(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of volume: dessert-spoon-imperial.
+     * Also see {@link #createDessertSpoonImperial()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getDessertSpoonImperial();
+#endif /* U_HIDE_DRAFT_API */
+
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of volume: dram.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getDram()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createDram(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of volume: dram.
+     * Also see {@link #createDram()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getDram();
+#endif /* U_HIDE_DRAFT_API */
+
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of volume: drop.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getDrop()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createDrop(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of volume: drop.
+     * Also see {@link #createDrop()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getDrop();
+#endif /* U_HIDE_DRAFT_API */
+
     /**
      * Returns by pointer, unit of volume: fluid-ounce.
      * Caller owns returned value and must free it.
@@ -3223,6 +3337,24 @@
      */
     static MeasureUnit getHectoliter();
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of volume: jigger.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getJigger()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createJigger(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of volume: jigger.
+     * Also see {@link #createJigger()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getJigger();
+#endif /* U_HIDE_DRAFT_API */
+
     /**
      * Returns by pointer, unit of volume: liter.
      * Caller owns returned value and must free it.
@@ -3271,6 +3403,24 @@
      */
     static MeasureUnit getMilliliter();
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of volume: pinch.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getPinch()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createPinch(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of volume: pinch.
+     * Also see {@link #createPinch()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getPinch();
+#endif /* U_HIDE_DRAFT_API */
+
     /**
      * Returns by pointer, unit of volume: pint.
      * Caller owns returned value and must free it.
@@ -3319,6 +3469,24 @@
      */
     static MeasureUnit getQuart();
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of volume: quart-imperial.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getQuartImperial()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createQuartImperial(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of volume: quart-imperial.
+     * Also see {@link #createQuartImperial()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getQuartImperial();
+#endif /* U_HIDE_DRAFT_API */
+
     /**
      * Returns by pointer, unit of volume: tablespoon.
      * Caller owns returned value and must free it.
@@ -3369,12 +3537,6 @@
      */
     void initCurrency(StringPiece isoCurrency);
 
-    /**
-     * For ICU use only.
-     * @internal
-     */
-    void initNoUnit(const char *subtype);
-
 #endif  /* U_HIDE_INTERNAL_API */
 
 private:
@@ -3393,7 +3555,6 @@
     MeasureUnit(int32_t typeId, int32_t subTypeId);
     MeasureUnit(MeasureUnitImpl&& impl);
     void setTo(int32_t typeId, int32_t subTypeId);
-    int32_t getOffset() const;
     static MeasureUnit *create(int typeId, int subTypeId, UErrorCode &status);
 
     /**
@@ -3405,9 +3566,21 @@
      */
     static bool findBySubType(StringPiece subType, MeasureUnit* output);
 
+    /** Internal version of public API */
+    LocalArray<MeasureUnit> splitToSingleUnitsImpl(int32_t& outCount, UErrorCode& status) const;
+
     friend struct MeasureUnitImpl;
 };
 
+#ifndef U_HIDE_DRAFT_API  // @draft ICU 68
+inline std::pair<LocalArray<MeasureUnit>, int32_t>
+MeasureUnit::splitToSingleUnits(UErrorCode& status) const {
+    int32_t length;
+    auto array = splitToSingleUnitsImpl(length, status);
+    return std::make_pair(std::move(array), length);
+}
+#endif // U_HIDE_DRAFT_API
+
 U_NAMESPACE_END
 
 #endif // !UNCONFIG_NO_FORMATTING
diff --git a/icu4c/source/i18n/unicode/measure.h b/icu4c/source/i18n/unicode/measure.h
index fa9c293..aeb1dac 100644
--- a/icu4c/source/i18n/unicode/measure.h
+++ b/icu4c/source/i18n/unicode/measure.h
@@ -48,7 +48,7 @@
      * Construct an object with the given numeric amount and the given
      * unit.  After this call, the caller must not delete the given
      * unit object.
-     * @param number a numeric object; amount.isNumeric() must be TRUE
+     * @param number a numeric object; amount.isNumeric() must be true
      * @param adoptedUnit the unit object, which must not be NULL
      * @param ec input-output error code. If the amount or the unit
      * is invalid, then this will be set to a failing value.
diff --git a/icu4c/source/i18n/unicode/msgfmt.h b/icu4c/source/i18n/unicode/msgfmt.h
index 99b0eae..2d9bc8f 100644
--- a/icu4c/source/i18n/unicode/msgfmt.h
+++ b/icu4c/source/i18n/unicode/msgfmt.h
@@ -255,7 +255,7 @@
  * or preformatted values, but not pattern strings or custom format objects.</p>
  *
  * <p>For more details, see the
- * <a href="http://userguide.icu-project.org/formatparse/messages">ICU User Guide</a>.</p>
+ * <a href="https://unicode-org.github.io/icu/userguide/format_parse/messages">ICU User Guide</a>.</p>
  *
  * <h4>Usage Information</h4>
  *
@@ -920,7 +920,7 @@
     int32_t            argTypeCapacity;
 
     /**
-     * TRUE if there are different argTypes for the same argument.
+     * true if there are different argTypes for the same argument.
      * This only matters when the MessageFormat is used in the plain C (umsg_xxx) API
      * where the pattern argTypes determine how the va_arg list is read.
      */
diff --git a/icu4c/source/i18n/unicode/nounit.h b/icu4c/source/i18n/unicode/nounit.h
index 61b5c16..cee45e3 100644
--- a/icu4c/source/i18n/unicode/nounit.h
+++ b/icu4c/source/i18n/unicode/nounit.h
@@ -29,80 +29,53 @@
 
 /**
  * Dimensionless unit for percent and permille.
+ * Prior to ICU 68, this namespace was a class with the same name.
  * @see NumberFormatter
- * @draft ICU 60
+ * @draft ICU 68
  */
-class U_I18N_API NoUnit: public MeasureUnit {
-public:
+namespace NoUnit {
     /**
      * Returns an instance for the base unit (dimensionless and no scaling).
      *
-     * @return               a NoUnit instance
-     * @draft ICU 60
+     * Prior to ICU 68, this function returned a NoUnit by value.
+     *
+     * Since ICU 68, this function returns the same value as the default MeasureUnit constructor.
+     *
+     * @return               a MeasureUnit instance
+     * @draft ICU 68
      */
-    static NoUnit U_EXPORT2 base();
+    static inline MeasureUnit U_EXPORT2 base() {
+        return MeasureUnit();
+    }
 
     /**
      * Returns an instance for percent, or 1/100 of a base unit.
      *
-     * @return               a NoUnit instance
-     * @draft ICU 60
+     * Prior to ICU 68, this function returned a NoUnit by value.
+     *
+     * Since ICU 68, this function returns the same value as MeasureUnit::getPercent().
+     *
+     * @return               a MeasureUnit instance
+     * @draft ICU 68
      */
-    static NoUnit U_EXPORT2 percent();
+    static inline MeasureUnit U_EXPORT2 percent() {
+        return MeasureUnit::getPercent();
+    }
 
     /**
      * Returns an instance for permille, or 1/1000 of a base unit.
      *
-     * @return               a NoUnit instance
-     * @draft ICU 60
+     * Prior to ICU 68, this function returned a NoUnit by value.
+     *
+     * Since ICU 68, this function returns the same value as MeasureUnit::getPermille().
+     *
+     * @return               a MeasureUnit instance
+     * @draft ICU 68
      */
-    static NoUnit U_EXPORT2 permille();
-
-    /**
-     * Copy operator.
-     * @draft ICU 60
-     */
-    NoUnit(const NoUnit& other);
-
-    /**
-     * Destructor.
-     * @draft ICU 60
-     */
-    virtual ~NoUnit();
-
-    /**
-     * Return a polymorphic clone of this object.  The result will
-     * have the same class as returned by getDynamicClassID().
-     * @draft ICU 60
-     */
-    virtual NoUnit* clone() const;
-
-    /**
-     * Returns a unique class ID for this object POLYMORPHICALLY.
-     * This method implements a simple form of RTTI used by ICU.
-     * @return The class ID for this object. All objects of a given
-     * class have the same class ID.  Objects of other classes have
-     * different class IDs.
-     * @draft ICU 60
-     */
-    virtual UClassID getDynamicClassID() const;
-
-    /**
-     * Returns the class ID for this class. This is used to compare to
-     * the return value of getDynamicClassID().
-     * @return The class ID for all objects of this class.
-     * @draft ICU 60
-     */
-    static UClassID U_EXPORT2 getStaticClassID();
-
-private:
-    /**
-     * Constructor
-     * @internal (private)
-     */
-    NoUnit(const char* subtype);
-
-};
+    static inline MeasureUnit U_EXPORT2 permille() {
+        return MeasureUnit::getPermille();
+    }
+}
 
 U_NAMESPACE_END
 
diff --git a/icu4c/source/i18n/unicode/numberformatter.h b/icu4c/source/i18n/unicode/numberformatter.h
index 615cf49..06329b8 100644
--- a/icu4c/source/i18n/unicode/numberformatter.h
+++ b/icu4c/source/i18n/unicode/numberformatter.h
@@ -99,6 +99,13 @@
 }
 }
 
+namespace units {
+
+// Forward declarations:
+class UnitsRouter;
+
+} // namespace units
+
 namespace number {  // icu::number
 
 // Forward declarations:
@@ -157,6 +164,7 @@
 struct UFormattedNumberImpl;
 class MutablePatternModifier;
 class ImmutablePatternModifier;
+struct DecimalFormatWarehouse;
 
 /**
  * Used for NumberRangeFormatter and implemented in numrange_fluent.cpp.
@@ -371,9 +379,9 @@
     UBool copyErrorTo(UErrorCode &status) const {
         if (fType == NTN_ERROR) {
             status = fUnion.errorCode;
-            return TRUE;
+            return true;
         }
-        return FALSE;
+        return false;
     }
 
     // To allow MacroProps to initialize empty instances:
@@ -705,12 +713,8 @@
     typedef PrecisionUnion::FractionSignificantSettings FractionSignificantSettings;
     typedef PrecisionUnion::IncrementSettings IncrementSettings;
 
-    /** The Precision encapsulates the RoundingMode when used within the implementation. */
-    UNumberFormatRoundingMode fRoundingMode;
-
-    Precision(const PrecisionType& type, const PrecisionUnion& union_,
-              UNumberFormatRoundingMode roundingMode)
-            : fType(type), fUnion(union_), fRoundingMode(roundingMode) {}
+    Precision(const PrecisionType& type, const PrecisionUnion& union_)
+            : fType(type), fUnion(union_) {}
 
     Precision(UErrorCode errorCode) : fType(RND_ERROR) {
         fUnion.errorCode = errorCode;
@@ -725,9 +729,9 @@
     UBool copyErrorTo(UErrorCode &status) const {
         if (fType == RND_ERROR) {
             status = fUnion.errorCode;
-            return TRUE;
+            return true;
         }
-        return FALSE;
+        return false;
     }
 
     // On the parent type so that this method can be called internally on Precision instances.
@@ -744,8 +748,6 @@
 
     static CurrencyPrecision constructCurrency(UCurrencyUsage usage);
 
-    static Precision constructPassThrough();
-
     // To allow MacroProps/MicroProps to initialize bogus instances:
     friend struct impl::MacroProps;
     friend struct impl::MicroProps;
@@ -766,6 +768,9 @@
 
     // To allow access to the skeleton generation code:
     friend class impl::GeneratorHelpers;
+
+    // To allow access to isBogus and the default (bogus) constructor:
+    friend class units::UnitsRouter;
 };
 
 /**
@@ -969,9 +974,9 @@
     UBool copyErrorTo(UErrorCode &status) const {
         if (fHasError) {
             status = fUnion.errorCode;
-            return TRUE;
+            return true;
         }
-        return FALSE;
+        return false;
     }
 
     void apply(impl::DecimalQuantity &quantity, UErrorCode &status) const;
@@ -1095,11 +1100,11 @@
     }
 
     UBool copyErrorTo(UErrorCode &status) const {
-        if (fError != U_ZERO_ERROR) {
+        if (U_FAILURE(fError)) {
             status = fError;
-            return TRUE;
+            return true;
         }
-        return FALSE;
+        return false;
     }
 
     void applyTo(impl::DecimalQuantity& quantity) const;
@@ -1126,6 +1131,71 @@
 
 namespace impl {
 
+// Do not enclose entire Usage with #ifndef U_HIDE_INTERNAL_API, needed for a protected field
+/**
+ * Manages NumberFormatterSettings::usage()'s char* instance on the heap.
+ * @internal
+ */
+class U_I18N_API Usage : public UMemory {
+
+#ifndef U_HIDE_INTERNAL_API
+
+  public:
+    /** @internal */
+    Usage(const Usage& other);
+
+    /** @internal */
+    Usage& operator=(const Usage& other);
+
+    /** @internal */
+    Usage(Usage &&src) U_NOEXCEPT;
+
+    /** @internal */
+    Usage& operator=(Usage&& src) U_NOEXCEPT;
+
+    /** @internal */
+    ~Usage();
+
+    /** @internal */
+    int16_t length() const { return fLength; }
+
+    /** @internal
+     * Makes a copy of value. Set to "" to unset.
+     */
+    void set(StringPiece value);
+
+    /** @internal */
+    bool isSet() const { return fLength > 0; }
+
+#endif // U_HIDE_INTERNAL_API
+
+  private:
+    char *fUsage;
+    int16_t fLength;
+    UErrorCode fError;
+
+    Usage() : fUsage(nullptr), fLength(0), fError(U_ZERO_ERROR) {}
+
+    /** @internal */
+    UBool copyErrorTo(UErrorCode &status) const {
+        if (U_FAILURE(fError)) {
+            status = fError;
+            return true;
+        }
+        return false;
+    }
+
+    // Allow NumberFormatterImpl to access fUsage.
+    friend class impl::NumberFormatterImpl;
+
+    // Allow skeleton generation code to access private members.
+    friend class impl::GeneratorHelpers;
+
+    // Allow MacroProps/MicroProps to initialize empty instances and to call
+    // copyErrorTo().
+    friend struct impl::MacroProps;
+};
+
 // Do not enclose entire SymbolsWrapper with #ifndef U_HIDE_INTERNAL_API, needed for a protected field
 /** @internal */
 class U_I18N_API SymbolsWrapper : public UMemory {
@@ -1192,12 +1262,12 @@
     UBool copyErrorTo(UErrorCode &status) const {
         if (fType == SYMPTR_DFS && fPtr.dfs == nullptr) {
             status = U_MEMORY_ALLOCATION_ERROR;
-            return TRUE;
+            return true;
         } else if (fType == SYMPTR_NS && fPtr.ns == nullptr) {
             status = U_MEMORY_ALLOCATION_ERROR;
-            return TRUE;
+            return true;
         }
-        return FALSE;
+        return false;
     }
 
   private:
@@ -1239,13 +1309,13 @@
               fGrouping2(grouping2),
               fMinGrouping(minGrouping),
               fStrategy(strategy) {}
-#endif  // U_HIDE_INTERNAL_API
 
     /** @internal */
     int16_t getPrimary() const;
 
     /** @internal */
     int16_t getSecondary() const;
+#endif  // U_HIDE_INTERNAL_API
 
   private:
     /**
@@ -1309,10 +1379,10 @@
 
     /** @internal */
     static Padder codePoints(UChar32 cp, int32_t targetWidth, UNumberFormatPadPosition position);
-#endif  // U_HIDE_INTERNAL_API
 
     /** @internal */
     static Padder forProperties(const DecimalFormatProperties& properties);
+#endif  // U_HIDE_INTERNAL_API
 
   private:
     UChar32 fWidth;  // -3 = error; -2 = bogus; -1 = no padding
@@ -1341,9 +1411,9 @@
     UBool copyErrorTo(UErrorCode &status) const {
         if (fWidth == -3) {
             status = fUnion.errorCode;
-            return TRUE;
+            return true;
         }
-        return FALSE;
+        return false;
     }
 
     bool isValid() const {
@@ -1372,10 +1442,10 @@
     Notation notation;
 
     /** @internal */
-    MeasureUnit unit; // = NoUnit::base();
+    MeasureUnit unit;  // = MeasureUnit();  (the base dimensionless unit)
 
     /** @internal */
-    MeasureUnit perUnit; // = NoUnit::base();
+    MeasureUnit perUnit;  // = MeasureUnit();  (the base dimensionless unit)
 
     /** @internal */
     Precision precision;  // = Precision();  (bogus)
@@ -1410,6 +1480,9 @@
     Scale scale;  // = Scale();  (benign value)
 
     /** @internal */
+    Usage usage;  // = Usage();  (no usage)
+
+    /** @internal */
     const AffixPatternProvider* affixProvider = nullptr;  // no ownership
 
     /** @internal */
@@ -1430,7 +1503,7 @@
     bool copyErrorTo(UErrorCode &status) const {
         return notation.copyErrorTo(status) || precision.copyErrorTo(status) ||
                padder.copyErrorTo(status) || integerWidth.copyErrorTo(status) ||
-               symbols.copyErrorTo(status) || scale.copyErrorTo(status);
+               symbols.copyErrorTo(status) || scale.copyErrorTo(status) || usage.copyErrorTo(status);
     }
 };
 
@@ -1507,10 +1580,15 @@
      * All units will be properly localized with locale data, and all units are compatible with notation styles,
      * rounding precisions, and other number formatter settings.
      *
+     * \note If the usage() is set, the output unit **will be changed** to
+     *       produce localised units, according to usage, locale and unit. See
+     *       FormattedNumber::getOutputUnit().
+     *
      * Pass this method any instance of {@link MeasureUnit}. For units of measure:
      *
      * <pre>
      * NumberFormatter::with().unit(MeasureUnit::getMeter())
+     * NumberFormatter::with().unit(MeasureUnit::forIdentifier("foot-per-second", status))
      * </pre>
      *
      * Currency:
@@ -1693,7 +1771,7 @@
      *
      * The default is HALF_EVEN. For more information on rounding mode, see the ICU userguide here:
      *
-     * http://userguide.icu-project.org/formatparse/numbers/rounding-modes
+     * https://unicode-org.github.io/icu/userguide/format_parse/numbers/rounding-modes
      *
      * @param roundingMode The rounding mode to use.
      * @return The fluent chain.
@@ -2038,6 +2116,61 @@
      */
     Derived scale(const Scale &scale) &&;
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Specifies the usage for which numbers will be formatted ("person-height",
+     * "road", "rainfall", etc.)
+     *
+     * When a `usage` is specified, the output unit will change depending on the
+     * `Locale` and the unit quantity. For example, formatting length
+     * measurements specified in meters:
+     *
+     * `NumberFormatter::with().usage("person").unit(MeasureUnit::getMeter()).locale("en-US")`
+     *   * When formatting 0.25, the output will be "10 inches".
+     *   * When formatting 1.50, the output will be "4 feet and 11 inches".
+     *
+     * The input unit specified via unit() determines the type of measurement
+     * being formatted (e.g. "length" when the unit is "foot"). The usage
+     * requested will be looked for only within this category of measurement
+     * units.
+     *
+     * The output unit can be found via FormattedNumber::getOutputUnit().
+     *
+     * If the usage has multiple parts (e.g. "land-agriculture-grain") and does
+     * not match a known usage preference, the last part will be dropped
+     * repeatedly until a match is found (e.g. trying "land-agriculture", then
+     * "land"). If a match is still not found, usage will fall back to
+     * "default".
+     *
+     * Setting usage to an empty string clears the usage (disables usage-based
+     * localized formatting).
+     *
+     * Setting a usage string but not a correct input unit will result in an
+     * U_ILLEGAL_ARGUMENT_ERROR.
+     *
+     * When using usage, specifying rounding or precision is unnecessary.
+     * Specifying a precision in some manner will override the default
+     * formatting.
+     *
+     * @param usage A `usage` parameter from the units resource. See the
+     * unitPreferenceData in *source/data/misc/units.txt*, generated from
+     * `unitPreferenceData` in [CLDR's
+     * supplemental/units.xml](https://github.com/unicode-org/cldr/blob/master/common/supplemental/units.xml).
+     * @return The fluent chain.
+     * @draft ICU 68
+     */
+    Derived usage(StringPiece usage) const &;
+
+    /**
+     * Overload of usage() for use on an rvalue reference.
+     *
+     * @param usage The unit `usage`.
+     * @return The fluent chain.
+     * @draft ICU 68
+     */
+    Derived usage(StringPiece usage) &&;
+#endif // U_HIDE_DRAFT_API
+
 #ifndef U_HIDE_INTERNAL_API
 
     /**
@@ -2120,13 +2253,13 @@
     /**
      * Sets the UErrorCode if an error occurred in the fluent chain.
      * Preserves older error codes in the outErrorCode.
-     * @return TRUE if U_FAILURE(outErrorCode)
+     * @return true if U_FAILURE(outErrorCode)
      * @stable ICU 60
      */
     UBool copyErrorTo(UErrorCode &outErrorCode) const {
         if (U_FAILURE(outErrorCode)) {
             // Do not overwrite the older error code
-            return TRUE;
+            return true;
         }
         fMacros.copyErrorTo(outErrorCode);
         return U_FAILURE(outErrorCode);
@@ -2385,6 +2518,10 @@
     const impl::NumberFormatterImpl* fCompiled {nullptr};
     char fUnsafeCallCount[8] {};  // internally cast to u_atomic_int32_t
 
+    // Owned pointer to a DecimalFormatWarehouse, used when copying a LocalizedNumberFormatter
+    // from a DecimalFormat.
+    const impl::DecimalFormatWarehouse* fWarehouse {nullptr};
+
     explicit LocalizedNumberFormatter(const NumberFormatterSettings<LocalizedNumberFormatter>& other);
 
     explicit LocalizedNumberFormatter(NumberFormatterSettings<LocalizedNumberFormatter>&& src) U_NOEXCEPT;
@@ -2393,10 +2530,12 @@
 
     LocalizedNumberFormatter(impl::MacroProps &&macros, const Locale &locale);
 
-    void clear();
+    void resetCompiled();
 
     void lnfMoveHelper(LocalizedNumberFormatter&& src);
 
+    void lnfCopyHelper(const LocalizedNumberFormatter& src, UErrorCode& status);
+
     /**
      * @return true if the compiled formatter is available.
      */
@@ -2485,7 +2624,6 @@
     /** @copydoc FormattedValue::nextPosition() */
     UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const U_OVERRIDE;
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Export the formatted number as a "numeric string" conforming to the
      * syntax defined in the Decimal Arithmetic Specification, available at
@@ -2502,10 +2640,24 @@
      *         for example, std::string.
      * @param status Set if an error occurs.
      * @return A StringClass containing the numeric string.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     template<typename StringClass>
     inline StringClass toDecimalNumber(UErrorCode& status) const;
+
+#ifndef U_HIDE_DRAFT_API
+	/**
+     * Gets the resolved output unit.
+     *
+     * The output unit is dependent upon the localized preferences for the usage
+     * specified via NumberFormatterSettings::usage(), and may be a unit with
+     * UMEASURE_UNIT_MIXED unit complexity (MeasureUnit::getComplexity()), such
+     * as "foot-and-inch" or "hour-and-minute-and-second".
+     *
+     * @return `MeasureUnit`.
+     * @draft ICU 68
+     */
+    MeasureUnit getOutputUnit(UErrorCode& status) const;
 #endif // U_HIDE_DRAFT_API
 
 #ifndef U_HIDE_INTERNAL_API
@@ -2541,7 +2693,6 @@
     explicit FormattedNumber(UErrorCode errorCode)
         : fData(nullptr), fErrorCode(errorCode) {}
 
-    // TODO(ICU-20775): Propose this as API.
     void toDecimalNumber(ByteSink& sink, UErrorCode& status) const;
 
     // To give LocalizedNumberFormatter format methods access to this class's constructor:
@@ -2639,4 +2790,3 @@
 #endif /* U_SHOW_CPLUSPLUS_API */
 
 #endif // __NUMBERFORMATTER_H__
-
diff --git a/icu4c/source/i18n/unicode/numberrangeformatter.h b/icu4c/source/i18n/unicode/numberrangeformatter.h
index 4d436a7..4e0a15b 100644
--- a/icu4c/source/i18n/unicode/numberrangeformatter.h
+++ b/icu4c/source/i18n/unicode/numberrangeformatter.h
@@ -16,6 +16,7 @@
 #include "unicode/formattedvalue.h"
 #include "unicode/fpositer.h"
 #include "unicode/numberformatter.h"
+#include "unicode/unumberrangeformatter.h"
 
 /**
  * \file
@@ -31,7 +32,7 @@
  *     .numberFormatterFirst(NumberFormatter::with().adoptUnit(MeasureUnit::createMeter()))
  *     .numberFormatterSecond(NumberFormatter::with().adoptUnit(MeasureUnit::createKilometer()))
  *     .locale("en-GB")
- *     .formatRange(750, 1.2, status)
+ *     .formatFormattableRange(750, 1.2, status)
  *     .toString(status);
  * // => "750 m - 1.2 km"
  * </pre>
@@ -44,130 +45,11 @@
  */
 
 
-/**
- * Defines how to merge fields that are identical across the range sign.
- *
- * @stable ICU 63
- */
-typedef enum UNumberRangeCollapse {
-    /**
-     * Use locale data and heuristics to determine how much of the string to collapse. Could end up collapsing none,
-     * some, or all repeated pieces in a locale-sensitive way.
-     *
-     * The heuristics used for this option are subject to change over time.
-     *
-     * @stable ICU 63
-     */
-    UNUM_RANGE_COLLAPSE_AUTO,
-
-    /**
-     * Do not collapse any part of the number. Example: "3.2 thousand kilograms – 5.3 thousand kilograms"
-     *
-     * @stable ICU 63
-     */
-    UNUM_RANGE_COLLAPSE_NONE,
-
-    /**
-     * Collapse the unit part of the number, but not the notation, if present. Example: "3.2 thousand – 5.3 thousand
-     * kilograms"
-     *
-     * @stable ICU 63
-     */
-    UNUM_RANGE_COLLAPSE_UNIT,
-
-    /**
-     * Collapse any field that is equal across the range sign. May introduce ambiguity on the magnitude of the
-     * number. Example: "3.2 – 5.3 thousand kilograms"
-     *
-     * @stable ICU 63
-     */
-    UNUM_RANGE_COLLAPSE_ALL
-} UNumberRangeCollapse;
-
-/**
- * Defines the behavior when the two numbers in the range are identical after rounding. To programmatically detect
- * when the identity fallback is used, compare the lower and upper BigDecimals via FormattedNumber.
- *
- * @stable ICU 63
- * @see NumberRangeFormatter
- */
-typedef enum UNumberRangeIdentityFallback {
-    /**
-     * Show the number as a single value rather than a range. Example: "$5"
-     *
-     * @stable ICU 63
-     */
-    UNUM_IDENTITY_FALLBACK_SINGLE_VALUE,
-
-    /**
-     * Show the number using a locale-sensitive approximation pattern. If the numbers were the same before rounding,
-     * show the single value. Example: "~$5" or "$5"
-     *
-     * @stable ICU 63
-     */
-    UNUM_IDENTITY_FALLBACK_APPROXIMATELY_OR_SINGLE_VALUE,
-
-    /**
-     * Show the number using a locale-sensitive approximation pattern. Use the range pattern always, even if the
-     * inputs are the same. Example: "~$5"
-     *
-     * @stable ICU 63
-     */
-    UNUM_IDENTITY_FALLBACK_APPROXIMATELY,
-
-    /**
-     * Show the number as the range of two equal values. Use the range pattern always, even if the inputs are the
-     * same. Example (with RangeCollapse.NONE): "$5 – $5"
-     *
-     * @stable ICU 63
-     */
-    UNUM_IDENTITY_FALLBACK_RANGE
-} UNumberRangeIdentityFallback;
-
-/**
- * Used in the result class FormattedNumberRange to indicate to the user whether the numbers formatted in the range
- * were equal or not, and whether or not the identity fallback was applied.
- *
- * @stable ICU 63
- * @see NumberRangeFormatter
- */
-typedef enum UNumberRangeIdentityResult {
-    /**
-     * Used to indicate that the two numbers in the range were equal, even before any rounding rules were applied.
-     *
-     * @stable ICU 63
-     * @see NumberRangeFormatter
-     */
-    UNUM_IDENTITY_RESULT_EQUAL_BEFORE_ROUNDING,
-
-    /**
-     * Used to indicate that the two numbers in the range were equal, but only after rounding rules were applied.
-     *
-     * @stable ICU 63
-     * @see NumberRangeFormatter
-     */
-    UNUM_IDENTITY_RESULT_EQUAL_AFTER_ROUNDING,
-
-    /**
-     * Used to indicate that the two numbers in the range were not equal, even after rounding rules were applied.
-     *
-     * @stable ICU 63
-     * @see NumberRangeFormatter
-     */
-    UNUM_IDENTITY_RESULT_NOT_EQUAL,
-
-#ifndef U_HIDE_INTERNAL_API
-    /**
-     * The number of entries in this enum.
-     * @internal
-     */
-    UNUM_IDENTITY_RESULT_COUNT
-#endif
-
-} UNumberRangeIdentityResult;
-
 U_NAMESPACE_BEGIN
 
+// Forward declarations:
+class PluralRules;
+
 namespace number {  // icu::number
 
 // Forward declarations:
@@ -182,6 +64,7 @@
 class DecimalQuantity;
 class UFormattedNumberRangeData;
 class NumberRangeFormatterImpl;
+struct UFormattedNumberRangeImpl;
 
 } // namespace impl
 
@@ -418,8 +301,8 @@
 
     /**
      * Sets the behavior when the two sides of the range are the same. This could happen if the same two numbers are
-     * passed to the formatRange function, or if different numbers are passed to the function but they become the same
-     * after rounding rules are applied. Possible values:
+     * passed to the formatFormattableRange function, or if different numbers are passed to the function but they
+     * become the same after rounding rules are applied. Possible values:
      * <p>
      * <ul>
      * <li>SINGLE_VALUE: "5 miles"</li>
@@ -474,13 +357,13 @@
     /**
      * Sets the UErrorCode if an error occurred in the fluent chain.
      * Preserves older error codes in the outErrorCode.
-     * @return TRUE if U_FAILURE(outErrorCode)
+     * @return true if U_FAILURE(outErrorCode)
      * @stable ICU 63
      */
     UBool copyErrorTo(UErrorCode &outErrorCode) const {
         if (U_FAILURE(outErrorCode)) {
             // Do not overwrite the older error code
-            return TRUE;
+            return true;
         }
         fMacros.copyErrorTo(outErrorCode);
         return U_FAILURE(outErrorCode);
@@ -725,18 +608,22 @@
     /** @copydoc FormattedValue::nextPosition() */
     UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const U_OVERRIDE;
 
-#ifndef U_HIDE_DRAFT_API
+#ifndef U_HIDE_DEPRECATED_API
     /**
      * Export the first formatted number as a decimal number. This endpoint
      * is useful for obtaining the exact number being printed after scaling
      * and rounding have been applied by the number range formatting pipeline.
-     * 
+     *
      * The syntax of the unformatted number is a "numeric string"
      * as defined in the Decimal Arithmetic Specification, available at
      * http://speleotrove.com/decimal
      *
+     * TODO(ICU-21275): This function will be removed in ICU 69.
+     * Use getDecimalNumbers() instead.
+     *
+     * @param status Set if an error occurs.
      * @return A decimal representation of the first formatted number.
-     * @draft ICU 63
+     * @deprecated ICU 68 Use getDecimalNumbers instead.
      * @see NumberRangeFormatter
      * @see #getSecondDecimal
      */
@@ -746,17 +633,46 @@
      * Export the second formatted number as a decimal number. This endpoint
      * is useful for obtaining the exact number being printed after scaling
      * and rounding have been applied by the number range formatting pipeline.
-     * 
+     *
      * The syntax of the unformatted number is a "numeric string"
      * as defined in the Decimal Arithmetic Specification, available at
      * http://speleotrove.com/decimal
      *
+     * TODO(ICU-21275): This function will be removed in ICU 69.
+     * Use getDecimalNumbers() instead.
+     *
+     * @param status Set if an error occurs.
      * @return A decimal representation of the second formatted number.
-     * @draft ICU 63
+     * @deprecated ICU 68 Use getDecimalNumbers instead.
      * @see NumberRangeFormatter
      * @see #getFirstDecimal
      */
     UnicodeString getSecondDecimal(UErrorCode& status) const;
+#endif // U_HIDE_DEPRECATED_API
+
+
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Extracts the formatted range as a pair of decimal numbers. This endpoint
+     * is useful for obtaining the exact number being printed after scaling
+     * and rounding have been applied by the number range formatting pipeline.
+     * 
+     * The syntax of the unformatted numbers is a "numeric string"
+     * as defined in the Decimal Arithmetic Specification, available at
+     * http://speleotrove.com/decimal
+     *
+     * Example C++17 call site:
+     *
+     *     auto [ first, second ] = range.getDecimalNumbers<std::string>(status);
+     *
+     * @tparam StringClass A string class compatible with StringByteSink;
+     *         for example, std::string.
+     * @param status Set if an error occurs.
+     * @return A pair of StringClasses containing the numeric strings.
+     * @draft ICU 68
+     */
+    template<typename StringClass>
+    inline std::pair<StringClass, StringClass> getDecimalNumbers(UErrorCode& status) const;
 #endif // U_HIDE_DRAFT_API
 
     /**
@@ -818,10 +734,33 @@
 
     void getAllFieldPositionsImpl(FieldPositionIteratorHandler& fpih, UErrorCode& status) const;
 
+    void getDecimalNumbers(ByteSink& sink1, ByteSink& sink2, UErrorCode& status) const;
+
+    const impl::UFormattedNumberRangeData* getData(UErrorCode& status) const;
+
+    // To allow PluralRules to access the underlying data
+    friend class ::icu::PluralRules;
+
     // To give LocalizedNumberRangeFormatter format methods access to this class's constructor:
     friend class LocalizedNumberRangeFormatter;
+
+    // To give C API access to internals
+    friend struct impl::UFormattedNumberRangeImpl;
 };
 
+#ifndef U_HIDE_DRAFT_API
+// Note: This is draft ICU 68
+template<typename StringClass>
+std::pair<StringClass, StringClass> FormattedNumberRange::getDecimalNumbers(UErrorCode& status) const {
+    StringClass str1;
+    StringClass str2;
+    StringByteSink<StringClass> sink1(&str1);
+    StringByteSink<StringClass> sink2(&str2);
+    getDecimalNumbers(sink1, sink2, status);
+    return std::make_pair(str1, str2);
+}
+#endif // U_HIDE_DRAFT_API
+
 /**
  * See the main description in numberrangeformatter.h for documentation and examples.
  *
diff --git a/icu4c/source/i18n/unicode/numfmt.h b/icu4c/source/i18n/unicode/numfmt.h
index 48a69de..61fb59d 100644
--- a/icu4c/source/i18n/unicode/numfmt.h
+++ b/icu4c/source/i18n/unicode/numfmt.h
@@ -179,7 +179,7 @@
      *
      * <p>
      * For more detail on rounding modes, see:
-     * http://userguide.icu-project.org/formatparse/numbers/rounding-modes
+     * https://unicode-org.github.io/icu/userguide/format_parse/numbers/rounding-modes
      *
      * @stable ICU 2.4
      */
@@ -704,8 +704,8 @@
     /**
      * Sets whether lenient parsing should be enabled (it is off by default).
      *
-     * @param enable \c TRUE if lenient parsing should be used,
-     *               \c FALSE otherwise.
+     * @param enable \c true if lenient parsing should be used,
+     *               \c false otherwise.
      * @stable ICU 4.8
      */
     virtual void setLenient(UBool enable);
@@ -713,8 +713,8 @@
     /**
      * Returns whether lenient parsing is enabled (it is off by default).
      *
-     * @return \c TRUE if lenient parsing is enabled,
-     *         \c FALSE otherwise.
+     * @return \c true if lenient parsing is enabled,
+     *         \c false otherwise.
      * @see #setLenient
      * @stable ICU 4.8
      */
@@ -870,7 +870,7 @@
      * NumberFormat::createInstance to avoid undefined behavior.
      * @param key the registry key returned by a previous call to registerFactory
      * @param status the in/out status code, no special meanings are assigned
-     * @return TRUE if the factory for the key was successfully unregistered
+     * @return true if the factory for the key was successfully unregistered
      * @stable ICU 2.6
      */
     static UBool U_EXPORT2 unregister(URegistryKey key, UErrorCode& status);
@@ -1112,7 +1112,7 @@
 #ifndef U_HIDE_INTERNAL_API
     /**
      * Creates the specified number format style of the desired locale.
-     * If mustBeDecimalFormat is TRUE, then the returned pointer is
+     * If mustBeDecimalFormat is true, then the returned pointer is
      * either a DecimalFormat or it is NULL.
      * @internal
      */
@@ -1151,7 +1151,7 @@
 
   private:
     UBool      fParseIntegerOnly;
-    UBool      fLenient; // TRUE => lenient parse is enabled
+    UBool      fLenient; // true => lenient parse is enabled
 
     // ISO currency code
     char16_t      fCurrency[4];
@@ -1228,7 +1228,7 @@
     /**
      * @stable ICU 2.6
      */
-    SimpleNumberFormatFactory(const Locale& locale, UBool visible = TRUE);
+    SimpleNumberFormatFactory(const Locale& locale, UBool visible = true);
 
     /**
      * @stable ICU 3.0
diff --git a/icu4c/source/i18n/unicode/numsys.h b/icu4c/source/i18n/unicode/numsys.h
index 7def703..1646729 100644
--- a/icu4c/source/i18n/unicode/numsys.h
+++ b/icu4c/source/i18n/unicode/numsys.h
@@ -102,7 +102,7 @@
     /**
      * Create a numbering system using the specified radix, type, and description. 
      * @param radix         The radix (base) for this numbering system.
-     * @param isAlgorithmic TRUE if the numbering system is algorithmic rather than numeric.
+     * @param isAlgorithmic true if the numbering system is algorithmic rather than numeric.
      * @param description   The string representing the set of digits used in a numeric system, or the name of the RBNF
      *                      ruleset to be used in an algorithmic system.
      * @param status ICU status
@@ -171,10 +171,10 @@
 
 
     /**
-     * Returns TRUE if the given numbering system is algorithmic
+     * Returns true if the given numbering system is algorithmic
      *
-     * @return         TRUE if the numbering system is algorithmic.
-     *                 Otherwise, return FALSE.
+     * @return         true if the numbering system is algorithmic.
+     *                 Otherwise, return false.
      * @stable ICU 4.2
      */
     UBool isAlgorithmic() const;
diff --git a/icu4c/source/i18n/unicode/plurfmt.h b/icu4c/source/i18n/unicode/plurfmt.h
index 2c21165..fd60857 100644
--- a/icu4c/source/i18n/unicode/plurfmt.h
+++ b/icu4c/source/i18n/unicode/plurfmt.h
@@ -587,7 +587,7 @@
      */
     static int32_t findSubMessage(
          const MessagePattern& pattern, int32_t partIndex,
-         const PluralSelector& selector, void *context, double number, UErrorCode& ec); /**< @internal */
+         const PluralSelector& selector, void *context, double number, UErrorCode& ec);
 
     void parseType(const UnicodeString& source, const NFRule *rbnfLenientScanner,
         Formattable& result, FieldPosition& pos) const;
diff --git a/icu4c/source/i18n/unicode/plurrule.h b/icu4c/source/i18n/unicode/plurrule.h
index 408efbc..7b30f69 100644
--- a/icu4c/source/i18n/unicode/plurrule.h
+++ b/icu4c/source/i18n/unicode/plurrule.h
@@ -46,14 +46,20 @@
 
 class Hashtable;
 class IFixedDecimal;
+class FixedDecimal;
 class RuleChain;
 class PluralRuleParser;
 class PluralKeywordEnumeration;
 class AndConstraint;
 class SharedPluralRules;
+class StandardPluralRanges;
 
 namespace number {
 class FormattedNumber;
+class FormattedNumberRange;
+namespace impl {
+class UFormattedNumberRangeData;
+}
 }
 
 /**
@@ -367,11 +373,35 @@
      */
     UnicodeString select(const number::FormattedNumber& number, UErrorCode& status) const;
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Given a formatted number range, returns the overall plural form of the
+     * range. For example, "3-5" returns "other" in English.
+     *
+     * To get a FormattedNumberRange, see NumberRangeFormatter.
+     * 
+     * This method only works if PluralRules was created with a locale. If it was created
+     * from PluralRules::createRules(), this method sets status code U_UNSUPPORTED_ERROR.
+     * 
+     * @param range  The number range onto which the rules will be applied.
+     * @param status Set if an error occurs while selecting plural keyword.
+     *               This could happen if the FormattedNumberRange is invalid,
+     *               or if plural ranges data is unavailable.
+     * @return       The keyword of the selected rule.
+     * @draft ICU 68
+     */
+    UnicodeString select(const number::FormattedNumberRange& range, UErrorCode& status) const;
+#endif // U_HIDE_DRAFT_API
+
 #ifndef U_HIDE_INTERNAL_API
     /**
-      * @internal
-      */
+     * @internal
+     */
     UnicodeString select(const IFixedDecimal &number) const;
+    /**
+     * @internal
+     */
+    UnicodeString select(const number::impl::UFormattedNumberRangeData* urange, UErrorCode& status) const;
 #endif  /* U_HIDE_INTERNAL_API */
 
     /**
@@ -446,13 +476,39 @@
                        double *dest, int32_t destCapacity,
                        UErrorCode& status);
 
+#ifndef U_HIDE_INTERNAL_API
     /**
-     * Returns TRUE if the given keyword is defined in this
+     * Internal-only function that returns FixedDecimals instead of doubles.
+     *
+     * Returns sample values for which select() would return the keyword.  If
+     * the keyword is unknown, returns no values, but this is not an error.
+     *
+     * The number of returned values is typically small.
+     *
+     * @param keyword      The keyword.
+     * @param dest         Array into which to put the returned values.  May
+     *                     be NULL if destCapacity is 0.
+     * @param destCapacity The capacity of the array, must be at least 0.
+     * @param status       The error code.
+     * @return             The count of values written.
+     *                     If more than destCapacity samples are available, then
+     *                     only destCapacity are written, and destCapacity is returned as the count,
+     *                     rather than setting a U_BUFFER_OVERFLOW_ERROR.
+     *                     (The actual number of keyword values could be unlimited.)
+     * @internal
+     */
+    int32_t getSamples(const UnicodeString &keyword,
+                       FixedDecimal *dest, int32_t destCapacity,
+                       UErrorCode& status);
+#endif  /* U_HIDE_INTERNAL_API */
+
+    /**
+     * Returns true if the given keyword is defined in this
      * <code>PluralRules</code> object.
      *
      * @param keyword  the input keyword.
-     * @return         TRUE if the input keyword is defined.
-     *                 Otherwise, return FALSE.
+     * @return         true if the input keyword is defined.
+     *                 Otherwise, return false.
      * @stable ICU 4.0
      */
     UBool isKeyword(const UnicodeString& keyword) const;
@@ -513,12 +569,14 @@
 
 private:
     RuleChain  *mRules;
+    StandardPluralRanges *mStandardPluralRanges;
 
     PluralRules();   // default constructor not implemented
     void            parseDescription(const UnicodeString& ruleData, UErrorCode &status);
     int32_t         getNumberValue(const UnicodeString& token) const;
     UnicodeString   getRuleFromResource(const Locale& locale, UPluralType type, UErrorCode& status);
     RuleChain      *rulesForKeyword(const UnicodeString &keyword) const;
+    PluralRules    *clone(UErrorCode& status) const;
 
     /**
     * An internal status variable used to indicate that the object is in an 'invalid' state.
diff --git a/icu4c/source/i18n/unicode/rbnf.h b/icu4c/source/i18n/unicode/rbnf.h
index 62b0232..283e969 100644
--- a/icu4c/source/i18n/unicode/rbnf.h
+++ b/icu4c/source/i18n/unicode/rbnf.h
@@ -297,7 +297,7 @@
  *   </tr>
  *   <tr>
  *     <td>x.0:</td>
- *     <td>The rule is a <em>master rule</em>. If the full stop in
+ *     <td>The rule is a <em>default rule</em>. If the full stop in
  *     the middle of the rule name is replaced with the decimal point
  *     that is used in the language or DecimalFormatSymbols, then that rule will
  *     have precedence when formatting and parsing this rule. For example, some
@@ -332,9 +332,9 @@
  * algorithms: If the rule set is a regular rule set, do the following:
  *
  * <ul>
- *   <li>If the rule set includes a master rule (and the number was passed in as a <tt>double</tt>),
- *     use the master rule.&nbsp; (If the number being formatted was passed in as a <tt>long</tt>,
- *     the master rule is ignored.)</li>
+ *   <li>If the rule set includes a default rule (and the number was passed in as a <tt>double</tt>),
+ *     use the default rule.&nbsp; (If the number being formatted was passed in as a <tt>long</tt>,
+ *     the default rule is ignored.)</li>
  *   <li>If the number is negative, use the negative-number rule.</li>
  *   <li>If the number has a fractional part and is greater than 1, use the improper fraction
  *     rule.</li>
@@ -393,7 +393,7 @@
  *   </tr>
  *   <tr>
  *     <td></td>
- *     <td>in fraction or master rule</td>
+ *     <td>in fraction or default rule</td>
  *     <td>Isolate the number's fractional part and format it.</td>
  *   </tr>
  *   <tr>
@@ -425,7 +425,7 @@
  *   </tr>
  *   <tr>
  *     <td></td>
- *     <td>in fraction or master rule</td>
+ *     <td>in fraction or default rule</td>
  *     <td>Isolate the number's integral part and format it.</td>
  *   </tr>
  *   <tr>
@@ -456,7 +456,7 @@
  *   </tr>
  *   <tr>
  *     <td></td>
- *     <td>in master rule</td>
+ *     <td>in default rule</td>
  *     <td>Omit the optional text if the number is an integer (same as specifying both an x.x
  *     rule and an x.0 rule)</td>
  *   </tr>
diff --git a/icu4c/source/i18n/unicode/rbtz.h b/icu4c/source/i18n/unicode/rbtz.h
index d66e1f0..d481e9b 100644
--- a/icu4c/source/i18n/unicode/rbtz.h
+++ b/icu4c/source/i18n/unicode/rbtz.h
@@ -258,7 +258,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the first transition after the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      * @stable ICU 3.8
      */
     virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
@@ -268,7 +268,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the most recent transition before the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      * @stable ICU 3.8
      */
     virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
diff --git a/icu4c/source/i18n/unicode/regex.h b/icu4c/source/i18n/unicode/regex.h
index 7f7d152..98ef6a7 100644
--- a/icu4c/source/i18n/unicode/regex.h
+++ b/icu4c/source/i18n/unicode/regex.h
@@ -116,7 +116,7 @@
      * were constructed from identical source patterns using the same #URegexpFlag
      * settings.
      * @param that a RegexPattern object to compare with "this".
-     * @return TRUE if the objects are equivalent.
+     * @return true if the objects are equivalent.
      * @stable ICU 2.4
      */
     UBool           operator==(const RegexPattern& that) const;
@@ -126,7 +126,7 @@
      * were constructed from identical source patterns using the same #URegexpFlag
      * settings.
      * @param that a RegexPattern object to compare with "this".
-     * @return TRUE if the objects are different.
+     * @return true if the objects are different.
      * @stable ICU 2.4
      */
     inline UBool    operator!=(const RegexPattern& that) const {return ! operator ==(that);}
@@ -764,7 +764,7 @@
    /**
     *   Attempts to match the entire input region against the pattern.
     *    @param   status     A reference to a UErrorCode to receive any errors.
-    *    @return TRUE if there is a match
+    *    @return true if there is a match
     *    @stable ICU 2.4
     */
     virtual UBool matches(UErrorCode &status);
@@ -777,7 +777,7 @@
     *   A successful match must extend to the end of the input.
     *    @param   startIndex The input string (native) index at which to begin matching.
     *    @param   status     A reference to a UErrorCode to receive any errors.
-    *    @return TRUE if there is a match
+    *    @return true if there is a match
     *    @stable ICU 2.8
     */
     virtual UBool matches(int64_t startIndex, UErrorCode &status);
@@ -793,7 +793,7 @@
     *   end(), and group() functions.
     *
     *    @param   status     A reference to a UErrorCode to receive any errors.
-    *    @return  TRUE if there is a match at the start of the input string.
+    *    @return  true if there is a match at the start of the input string.
     *    @stable ICU 2.4
     */
     virtual UBool lookingAt(UErrorCode &status);
@@ -809,7 +809,7 @@
     *
     *    @param   startIndex The input string (native) index at which to begin matching.
     *    @param   status     A reference to a UErrorCode to receive any errors.
-    *    @return  TRUE if there is a match.
+    *    @return  true if there is a match.
     *    @stable ICU 2.8
     */
     virtual UBool lookingAt(int64_t startIndex, UErrorCode &status);
@@ -824,7 +824,7 @@
     *  Note that if the input string is changed by the application,
     *     use find(startPos, status) instead of find(), because the saved starting
     *     position may not be valid with the altered input string.
-    *  @return  TRUE if a match is found.
+    *  @return  true if a match is found.
     *  @stable ICU 2.4
     */
     virtual UBool find();
@@ -841,7 +841,7 @@
     *  use find(startPos, status) instead of find(), because the saved starting
     *  position may not be valid with the altered input string.
     *  @param   status  A reference to a UErrorCode to receive any errors.
-    *  @return  TRUE if a match is found.
+    *  @return  true if a match is found.
     * @stable ICU 55
     */
     virtual UBool find(UErrorCode &status);
@@ -852,7 +852,7 @@
     *
     *   @param   start     The (native) index in the input string to begin the search.
     *   @param   status    A reference to a UErrorCode to receive any errors.
-    *   @return  TRUE if a match is found.
+    *   @return  true if a match is found.
     *   @stable ICU 2.4
     */
     virtual UBool find(int64_t start, UErrorCode &status);
@@ -1271,7 +1271,7 @@
       * See useTransparentBounds for a description of transparent and opaque bounds.
       * By default, a matcher uses opaque region boundaries.
       *
-      * @return TRUE if this matcher is using opaque bounds, false if it is not.
+      * @return true if this matcher is using opaque bounds, false if it is not.
       * @stable ICU 4.0
       */
       virtual UBool hasTransparentBounds() const;
@@ -1290,7 +1290,7 @@
       *
       * By default, a matcher uses opaque bounds.
       *
-      * @param   b TRUE for transparent bounds; FALSE for opaque bounds
+      * @param   b true for transparent bounds; false for opaque bounds
       * @return  This Matcher;
       * @stable ICU 4.0
       **/
@@ -1301,7 +1301,7 @@
       * Return true if this matcher is using anchoring bounds.
       * By default, matchers use anchoring region bounds.
       *
-      * @return TRUE if this matcher is using anchoring bounds.
+      * @return true if this matcher is using anchoring bounds.
       * @stable ICU 4.0
       */    
       virtual UBool hasAnchoringBounds() const;
@@ -1315,7 +1315,7 @@
       *
       * Anchoring Bounds are the default for regions.
       *
-      * @param b TRUE if to enable anchoring bounds; FALSE to disable them.
+      * @param b true if to enable anchoring bounds; false to disable them.
       * @return  This Matcher
       * @stable ICU 4.0
       */
@@ -1323,26 +1323,26 @@
 
 
     /**
-      * Return TRUE if the most recent matching operation attempted to access
+      * Return true if the most recent matching operation attempted to access
       *  additional input beyond the available input text.
       *  In this case, additional input text could change the results of the match.
       *
       *  hitEnd() is defined for both successful and unsuccessful matches.
-      *  In either case hitEnd() will return TRUE if if the end of the text was
+      *  In either case hitEnd() will return true if if the end of the text was
       *  reached at any point during the matching process.
       *
-      *  @return  TRUE if the most recent match hit the end of input
+      *  @return  true if the most recent match hit the end of input
       *  @stable ICU 4.0
       */
       virtual UBool hitEnd() const;
 
     /**
-      * Return TRUE the most recent match succeeded and additional input could cause
+      * Return true the most recent match succeeded and additional input could cause
       * it to fail. If this method returns false and a match was found, then more input
       * might change the match but the match won't be lost. If a match was not found,
       * then requireEnd has no meaning.
       *
-      * @return TRUE if more input could cause the most recent match to no longer match.
+      * @return true if more input could cause the most recent match to no longer match.
       * @stable ICU 4.0
       */
       virtual UBool requireEnd() const;
@@ -1781,7 +1781,7 @@
     inline REStackFrame *StateSave(REStackFrame *fp, int64_t savePatIdx, UErrorCode &status);
     void                 IncrementTime(UErrorCode &status);
 
-    // Call user find callback function, if set. Return TRUE if operation should be interrupted.
+    // Call user find callback function, if set. Return true if operation should be interrupted.
     inline UBool         findProgressInterrupt(int64_t matchIndex, UErrorCode &status);
     
     int64_t              appendGroup(int32_t groupNum, UText *dest, UErrorCode &status) const;
diff --git a/icu4c/source/i18n/unicode/reldatefmt.h b/icu4c/source/i18n/unicode/reldatefmt.h
index d5533bb..2a3742f 100644
--- a/icu4c/source/i18n/unicode/reldatefmt.h
+++ b/icu4c/source/i18n/unicode/reldatefmt.h
@@ -175,19 +175,17 @@
      */
     UDAT_ABSOLUTE_QUARTER,
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Hour
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UDAT_ABSOLUTE_HOUR,
 
     /**
      * Minute
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UDAT_ABSOLUTE_MINUTE,
-#endif // U_HIDE_DRAFT_API
 
 #ifndef U_HIDE_DEPRECATED_API
     /**
diff --git a/icu4c/source/i18n/unicode/search.h b/icu4c/source/i18n/unicode/search.h
index 2865366..f1c4b2b 100644
--- a/icu4c/source/i18n/unicode/search.h
+++ b/icu4c/source/i18n/unicode/search.h
@@ -267,9 +267,9 @@
     /**
      * Equality operator. 
      * @param that SearchIterator instance to be compared.
-     * @return TRUE if both BreakIterators are of the same class, have the 
+     * @return true if both BreakIterators are of the same class, have the 
      *         same behavior, terates over the same text and have the same
-     *         attributes. FALSE otherwise.
+     *         attributes. false otherwise.
      * @stable ICU 2.0
      */
     virtual UBool operator==(const SearchIterator &that) const;
@@ -277,7 +277,7 @@
     /**
      * Not-equal operator. 
      * @param that SearchIterator instance to be compared.
-     * @return FALSE if operator== returns TRUE, and vice versa.
+     * @return false if operator== returns true, and vice versa.
      * @stable ICU 2.0
      */
     UBool operator!=(const SearchIterator &that) const;
diff --git a/icu4c/source/i18n/unicode/simpletz.h b/icu4c/source/i18n/unicode/simpletz.h
index 980a1b8..792fddb 100644
--- a/icu4c/source/i18n/unicode/simpletz.h
+++ b/icu4c/source/i18n/unicode/simpletz.h
@@ -714,7 +714,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the first transition after the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      * @stable ICU 3.8
      */
     virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
@@ -724,7 +724,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the most recent transition before the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      * @stable ICU 3.8
      */
     virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
diff --git a/icu4c/source/i18n/unicode/smpdtfmt.h b/icu4c/source/i18n/unicode/smpdtfmt.h
index b4b0e5f..3296c6b 100644
--- a/icu4c/source/i18n/unicode/smpdtfmt.h
+++ b/icu4c/source/i18n/unicode/smpdtfmt.h
@@ -81,7 +81,7 @@
  * the date and time formatting algorithm and pattern letters defined by
  * <a href="http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table">UTS#35
  * Unicode Locale Data Markup Language (LDML)</a> and further documented for ICU in the
- * <a href="https://sites.google.com/site/icuprojectuserguide/formatparse/datetime?pli=1#TOC-Date-Field-Symbol-Table">ICU
+ * <a href="https://unicode-org.github.io/icu/userguide/format_parse/datetime/#date-field-symbol-table">ICU
  * User Guide</a>. The following pattern letters are currently available (note that the actual
  * values depend on CLDR and may change from the examples shown here):</p>
  *
@@ -1183,11 +1183,11 @@
     /**
      * This is for ICU internal use only. Please do not use.
      * Check whether the 'field' is smaller than all the fields covered in
-     * pattern, return TRUE if it is. The sequence of calendar field,
+     * pattern, return true if it is. The sequence of calendar field,
      * from large to small is: ERA, YEAR, MONTH, DATE, AM_PM, HOUR, MINUTE,...
      * @param field    the calendar field need to check against
-     * @return         TRUE if the 'field' is smaller than all the fields
-     *                 covered in pattern. FALSE otherwise.
+     * @return         true if the 'field' is smaller than all the fields
+     *                 covered in pattern. false otherwise.
      * @internal ICU 4.0
      */
     UBool isFieldUnitIgnored(UCalendarDateFields field) const;
@@ -1196,12 +1196,12 @@
     /**
      * This is for ICU internal use only. Please do not use.
      * Check whether the 'field' is smaller than all the fields covered in
-     * pattern, return TRUE if it is. The sequence of calendar field,
+     * pattern, return true if it is. The sequence of calendar field,
      * from large to small is: ERA, YEAR, MONTH, DATE, AM_PM, HOUR, MINUTE,...
      * @param pattern  the pattern to check against
      * @param field    the calendar field need to check against
-     * @return         TRUE if the 'field' is smaller than all the fields
-     *                 covered in pattern. FALSE otherwise.
+     * @return         true if the 'field' is smaller than all the fields
+     *                 covered in pattern. false otherwise.
      * @internal ICU 4.0
      */
     static UBool isFieldUnitIgnored(const UnicodeString& pattern,
@@ -1305,12 +1305,12 @@
     static UBool isNumeric(char16_t formatChar, int32_t count);
 
     /**
-     * Returns TRUE if the patternOffset is at the start of a numeric field.
+     * Returns true if the patternOffset is at the start of a numeric field.
      */
     static UBool isAtNumericField(const UnicodeString &pattern, int32_t patternOffset);
 
     /**
-     * Returns TRUE if the patternOffset is right after a non-numeric field.
+     * Returns true if the patternOffset is right after a non-numeric field.
      */
     static UBool isAfterNonNumericField(const UnicodeString &pattern, int32_t patternOffset);
 
@@ -1390,11 +1390,11 @@
      * @param text the text being parsed
      * @param textOffset the starting offset into the text. On output
      *                   will be set to the offset of the character after the match
-     * @param whitespaceLenient <code>TRUE</code> if whitespace parse is lenient, <code>FALSE</code> otherwise.
-     * @param partialMatchLenient <code>TRUE</code> if partial match parse is lenient, <code>FALSE</code> otherwise.
-     * @param oldLeniency <code>TRUE</code> if old leniency control is lenient, <code>FALSE</code> otherwise.
+     * @param whitespaceLenient <code>true</code> if whitespace parse is lenient, <code>false</code> otherwise.
+     * @param partialMatchLenient <code>true</code> if partial match parse is lenient, <code>false</code> otherwise.
+     * @param oldLeniency <code>true</code> if old leniency control is lenient, <code>false</code> otherwise.
      *
-     * @return <code>TRUE</code> if the literal text could be matched, <code>FALSE</code> otherwise.
+     * @return <code>true</code> if the literal text could be matched, <code>false</code> otherwise.
      */
     static UBool matchLiterals(const UnicodeString &pattern, int32_t &patternOffset,
                                const UnicodeString &text, int32_t &textOffset,
diff --git a/icu4c/source/i18n/unicode/sortkey.h b/icu4c/source/i18n/unicode/sortkey.h
index 34ed7ee..1ca0744 100644
--- a/icu4c/source/i18n/unicode/sortkey.h
+++ b/icu4c/source/i18n/unicode/sortkey.h
@@ -150,7 +150,7 @@
     /**
     * Compare if two collation keys are not the same.
     * @param source the collation key to compare to.
-    * @return Returns TRUE if two collation keys are different, FALSE otherwise.
+    * @return Returns true if two collation keys are different, false otherwise.
     * @stable ICU 2.0
     */
     UBool                   operator!=(const CollationKey& source) const;
@@ -159,7 +159,7 @@
     /**
     * Test to see if the key is in an invalid state. The key will be in an
     * invalid state if it couldn't allocate memory for some operation.
-    * @return Returns TRUE if the key is in an invalid, FALSE otherwise.
+    * @return Returns true if the key is in an invalid, false otherwise.
     * @stable ICU 2.0
     */
     UBool                   isBogus(void) const;
diff --git a/icu4c/source/i18n/unicode/stsearch.h b/icu4c/source/i18n/unicode/stsearch.h
index fcb5dbf..9bf3df0 100644
--- a/icu4c/source/i18n/unicode/stsearch.h
+++ b/icu4c/source/i18n/unicode/stsearch.h
@@ -292,7 +292,7 @@
     /**
      * Equality operator. 
      * @param that instance to be compared.
-     * @return TRUE if both instances have the same attributes, 
+     * @return true if both instances have the same attributes, 
      *         breakiterators, collators and iterate over the same text 
      *         while looking for the same pattern.
      * @stable ICU 2.0
diff --git a/icu4c/source/i18n/unicode/tblcoll.h b/icu4c/source/i18n/unicode/tblcoll.h
index f5dc135..a004dd6 100644
--- a/icu4c/source/i18n/unicode/tblcoll.h
+++ b/icu4c/source/i18n/unicode/tblcoll.h
@@ -99,14 +99,14 @@
  * table-based collation.
  * <p>
  * For more information about the collation service see
- * <a href="http://userguide.icu-project.org/collation">the User Guide</a>.
+ * <a href="https://unicode-org.github.io/icu/userguide/collation">the User Guide</a>.
  * <p>
  * Collation service provides correct sorting orders for most locales supported in ICU.
  * If specific data for a locale is not available, the orders eventually falls back
  * to the <a href="http://www.unicode.org/reports/tr35/tr35-collation.html#Root_Collation">CLDR root sort order</a>.
  * <p>
  * Sort ordering may be customized by providing your own set of rules. For more on
- * this subject see the <a href="http://userguide.icu-project.org/collation/customization">
+ * this subject see the <a href="https://unicode-org.github.io/icu/userguide/collation/customization">
  * Collation Customization</a> section of the User Guide.
  * <p>
  * Note, RuleBasedCollator is not to be subclassed.
@@ -495,7 +495,7 @@
      * just the tailoring.
      *
      * getRules(void) should normally be used instead.
-     * See http://userguide.icu-project.org/collation/customization#TOC-Building-on-Existing-Locales
+     * See https://unicode-org.github.io/icu/userguide/collation/customization#building-on-existing-locales
      * @param delta one of UCOL_TAILORING_ONLY, UCOL_FULL_RULES.
      * @param buffer UnicodeString to store the result rules
      * @stable ICU 2.2
@@ -702,7 +702,7 @@
      *  This string will be normalized.
      *  The structure and the syntax of the string is defined in the "Naming collators"
      *  section of the users guide:
-     *  http://userguide.icu-project.org/collation/concepts#TOC-Collator-naming-scheme
+     *  https://unicode-org.github.io/icu/userguide/collation/concepts#collator-naming-scheme
      *  This function supports preflighting.
      *
      *  This is internal, and intended to be used with delegate converters.
@@ -752,7 +752,7 @@
      * Implements ucol_getContractionsAndExpansions().
      * Gets this collator's sets of contraction strings and/or
      * characters and strings that map to multiple collation elements (expansions).
-     * If addPrefixes is TRUE, then contractions that are expressed as
+     * If addPrefixes is true, then contractions that are expressed as
      * prefix/pre-context rules are included.
      * @param contractions if not NULL, the set to hold the contractions
      * @param expansions if not NULL, the set to hold the expansions
@@ -857,7 +857,7 @@
      * Tests whether a character is "unsafe" for use as a collation starting point.
      *
      * @param c code point or code unit
-     * @return TRUE if c is unsafe
+     * @return true if c is unsafe
      * @see CollationElementIterator#setOffset(int)
      */
     UBool isUnsafe(UChar32 c) const;
diff --git a/icu4c/source/i18n/unicode/timezone.h b/icu4c/source/i18n/unicode/timezone.h
index 433e3b5..90e5f25 100644
--- a/icu4c/source/i18n/unicode/timezone.h
+++ b/icu4c/source/i18n/unicode/timezone.h
@@ -317,6 +317,19 @@
      */
     static TimeZone* U_EXPORT2 createDefault(void);
 
+#ifndef U_HIDE_INTERNAL_API
+    /**
+     * If the locale contains the timezone keyword, creates a copy of that TimeZone.
+     * Otherwise, create the default timezone.
+     *
+     * @param locale a locale which may contains 'timezone' keyword/value.
+     * @return   A TimeZone. Clients are responsible for deleting the time zone
+     *           object returned.
+     * @internal
+     */
+    static TimeZone* U_EXPORT2 forLocaleOrDefault(const Locale& locale);
+#endif  /* U_HIDE_INTERNAL_API */
+
     /**
      * Sets the default time zone (i.e., what's returned by createDefault()) to be the
      * specified time zone.  If NULL is specified for the time zone, the default time
@@ -392,7 +405,7 @@
     *
     * <p>This implementation utilizes <a href="http://unicode.org/cldr/charts/supplemental/zone_tzid.html">
     * Zone-Tzid mapping data</a>. The mapping data is updated time to time. To get the latest changes,
-    * please read the ICU user guide section <a href="http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data">
+    * please read the ICU user guide section <a href="https://unicode-org.github.io/icu/userguide/datetime/timezone#updating-the-time-zone-data">
     * Updating the Time Zone Data</a>.
     *
     * @param id        A system time zone ID.
@@ -420,7 +433,7 @@
     *
     * <p>This implementation utilizes <a href="http://unicode.org/cldr/charts/supplemental/zone_tzid.html">
     * Zone-Tzid mapping data</a>. The mapping data is updated time to time. To get the latest changes,
-    * please read the ICU user guide section <a href="http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data">
+    * please read the ICU user guide section <a href="https://unicode-org.github.io/icu/userguide/datetime/timezone#updating-the-time-zone-data">
     * Updating the Time Zone Data</a>.
     *
     * @param winid     A Windows time zone ID.
@@ -696,8 +709,8 @@
      * there are time zones that used daylight savings time in the
      * past, but no longer used currently. For example, Asia/Tokyo has
      * never used daylight savings time since 1951. Most clients would
-     * expect that this method to return <code>FALSE</code> for such case.
-     * The default implementation of this method returns <code>TRUE</code>
+     * expect that this method to return <code>false</code> for such case.
+     * The default implementation of this method returns <code>true</code>
      * when the time zone uses daylight savings time in the current
      * (Gregorian) calendar year.
      * <p>In Java 7, <code>observesDaylightTime()</code> was added in
@@ -914,7 +927,7 @@
      * @param hour Receives parsed hour field
      * @param minute Receives parsed minute field
      * @param second Receives parsed second field
-     * @return Returns TRUE when the given custom id is valid.
+     * @return Returns true when the given custom id is valid.
      */
     static UBool parseCustomID(const UnicodeString& id, int32_t& sign, int32_t& hour,
         int32_t& minute, int32_t& second);
@@ -937,7 +950,7 @@
      * @param hour offset hours
      * @param min offset minutes
      * @param sec offset seconds
-     * @param negative sign of the offset, TRUE for negative offset.
+     * @param negative sign of the offset, true for negative offset.
      * @param id Receves the format result (normalized custom ID)
      * @return The reference to id
      */
diff --git a/icu4c/source/i18n/unicode/tmutamt.h b/icu4c/source/i18n/unicode/tmutamt.h
index 8bcc684..d5972e7 100644
--- a/icu4c/source/i18n/unicode/tmutamt.h
+++ b/icu4c/source/i18n/unicode/tmutamt.h
@@ -39,7 +39,7 @@
     /**
      * Construct TimeUnitAmount object with the given number and the
      * given time unit. 
-     * @param number        a numeric object; number.isNumeric() must be TRUE
+     * @param number        a numeric object; number.isNumeric() must be true
      * @param timeUnitField the time unit field of a time unit
      * @param status        the input-output error code. 
      *                      If the number is not numeric or the timeUnitField
diff --git a/icu4c/source/i18n/unicode/translit.h b/icu4c/source/i18n/unicode/translit.h
index fe2568d..2aa02c3 100644
--- a/icu4c/source/i18n/unicode/translit.h
+++ b/icu4c/source/i18n/unicode/translit.h
@@ -882,7 +882,7 @@
      * another transliterator.
      * @param text the text to be transliterated
      * @param index the position indices
-     * @param incremental if TRUE, then assume more characters may be inserted
+     * @param incremental if true, then assume more characters may be inserted
      * at index.limit, and postpone processing to accomodate future incoming
      * characters
      * @stable ICU 2.4
@@ -897,14 +897,14 @@
      * Top-level transliteration method, handling filtering, incremental and
      * non-incremental transliteration, and rollback.  All transliteration
      * public API methods eventually call this method with a rollback argument
-     * of TRUE.  Other entities may call this method but rollback should be
-     * FALSE.
+     * of true.  Other entities may call this method but rollback should be
+     * false.
      *
      * <p>If this transliterator has a filter, break up the input text into runs
      * of unfiltered characters.  Pass each run to
      * subclass.handleTransliterate().
      *
-     * <p>In incremental mode, if rollback is TRUE, perform a special
+     * <p>In incremental mode, if rollback is true, perform a special
      * incremental procedure in which several passes are made over the input
      * text, adding one character at a time, and committing successful
      * transliterations as they occur.  Unsuccessful transliterations are rolled
@@ -912,12 +912,12 @@
      *
      * @param text the text to be transliterated
      * @param index the position indices
-     * @param incremental if TRUE, then assume more characters may be inserted
+     * @param incremental if true, then assume more characters may be inserted
      * at index.limit, and postpone processing to accomodate future incoming
      * characters
-     * @param rollback if TRUE and if incremental is TRUE, then perform special
+     * @param rollback if true and if incremental is true, then perform special
      * incremental processing, as described above, and undo partial
-     * transliterations where necessary.  If incremental is FALSE then this
+     * transliterations where necessary.  If incremental is false then this
      * parameter is ignored.
      */
     virtual void filteredTransliterate(Replaceable& text,
@@ -1119,7 +1119,7 @@
      * to recreate this transliterator.
      * @param result the string to receive the rules.  Previous
      * contents will be deleted.
-     * @param escapeUnprintable if TRUE then convert unprintable
+     * @param escapeUnprintable if true then convert unprintable
      * character to their hex escape representations, \\uxxxx or
      * \\Uxxxxxxxx.  Unprintable characters are those other than
      * U+000A, U+0020..U+007E.
diff --git a/icu4c/source/i18n/unicode/tzfmt.h b/icu4c/source/i18n/unicode/tzfmt.h
index 6d3863b..4411865 100644
--- a/icu4c/source/i18n/unicode/tzfmt.h
+++ b/icu4c/source/i18n/unicode/tzfmt.h
@@ -295,7 +295,7 @@
      * Return true if the given Format objects are semantically equal.
      * Objects of different subclasses are considered unequal.
      * @param other The object to be compared with.
-     * @return Return TRUE if the given Format objects are semantically equal.
+     * @return Return true if the given Format objects are semantically equal.
      *                Objects of different subclasses are considered unequal.
      * @stable ICU 50
      */
@@ -814,7 +814,7 @@
      * @param str the string
      * @param codeArray receives the result
      * @param capacity the capacity of codeArray
-     * @return TRUE when the specified code array is fully filled with code points
+     * @return true when the specified code array is fully filled with code points
      *         (no under/overflow).
      */
     static UBool toCodePoints(const UnicodeString& str, UChar32* codeArray, int32_t capacity);
@@ -849,8 +849,8 @@
      * @param text the text contains ISO 8601 style time zone string (e.g. "-08:00", "Z")
      *      at the position.
      * @param pos the position, non-negative error index will be set on failure.
-     * @param extendedOnly TRUE if parsing the text as ISO 8601 extended offset format (e.g. "-08:00"),
-     *      or FALSE to evaluate the text as basic format.
+     * @param extendedOnly true if parsing the text as ISO 8601 extended offset format (e.g. "-08:00"),
+     *      or false to evaluate the text as basic format.
      * @param hasDigitOffset receiving if the parsed zone string contains offset digits.
      * @return the offset from GMT(UTC) in milliseconds for the given ISO 8601 style
      *      time zone string.
diff --git a/icu4c/source/i18n/unicode/tznames.h b/icu4c/source/i18n/unicode/tznames.h
index 8604942..2e20eff 100644
--- a/icu4c/source/i18n/unicode/tznames.h
+++ b/icu4c/source/i18n/unicode/tznames.h
@@ -139,7 +139,7 @@
     /**
      * Return true if the given TimeZoneNames objects are semantically equal.
      * @param other the object to be compared with.
-     * @return Return TRUE if the given Format objects are semantically equal.
+     * @return Return true if the given Format objects are semantically equal.
      * @stable ICU 50
      */
     virtual UBool operator==(const TimeZoneNames& other) const = 0;
@@ -148,7 +148,7 @@
      * Return true if the given TimeZoneNames objects are not semantically
      * equal.
      * @param other the object to be compared with.
-     * @return Return TRUE if the given Format objects are not semantically equal.
+     * @return Return true if the given Format objects are not semantically equal.
      * @stable ICU 50
      */
     UBool operator!=(const TimeZoneNames& other) const { return !operator==(other); }
@@ -373,7 +373,7 @@
          * Gets the zone ID of a match at the specified index.
          * @param idx The index
          * @param tzID Receives the zone ID.
-         * @return TRUE if the zone ID was set to tzID.
+         * @return true if the zone ID was set to tzID.
          * @internal
          */
         UBool getTimeZoneIDAt(int32_t idx, UnicodeString& tzID) const;
@@ -382,7 +382,7 @@
          * Gets the metazone ID of a match at the specified index.
          * @param idx The index
          * @param mzID Receives the metazone ID
-         * @return TRUE if the meta zone ID was set to mzID.
+         * @return true if the meta zone ID was set to mzID.
          * @internal
          */
         UBool getMetaZoneIDAt(int32_t idx, UnicodeString& mzID) const;
diff --git a/icu4c/source/i18n/unicode/ucal.h b/icu4c/source/i18n/unicode/ucal.h
index 4e6f026..89b1604 100644
--- a/icu4c/source/i18n/unicode/ucal.h
+++ b/icu4c/source/i18n/unicode/ucal.h
@@ -35,7 +35,7 @@
  *
  * <p>
  * Types of <code>UCalendar</code> interpret a <code>UDate</code>
- * according to the rules of a specific calendar system. The U_STABLE
+ * according to the rules of a specific calendar system. The C API
  * provides the enum UCalendarType with UCAL_TRADITIONAL and
  * UCAL_GREGORIAN.
  * <p>
@@ -587,7 +587,7 @@
  *          *ec will indicate the error.
  * @stable ICU 4.8
  */ 
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucal_openTimeZoneIDEnumeration(USystemTimeZoneType zoneType, const char* region,
                                 const int32_t* rawOffset, UErrorCode* ec);
 
@@ -602,7 +602,7 @@
  *
  * @stable ICU 2.6
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucal_openTimeZones(UErrorCode* ec);
 
 /**
@@ -621,7 +621,7 @@
  *
  * @stable ICU 2.6
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucal_openCountryTimeZones(const char* country, UErrorCode* ec);
 
 /**
@@ -647,7 +647,7 @@
  * 
  * @stable ICU 2.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getDefaultTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec);
 
 /**
@@ -659,11 +659,9 @@
  *
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucal_setDefaultTimeZone(const UChar* zoneID, UErrorCode* ec);
 
-#ifndef U_HIDE_DRAFT_API
-
 /**
  * Return the current host time zone. The host time zone is detected from
  * the current host system configuration by querying the host operating
@@ -691,13 +689,11 @@
  * 
  * @see #UCAL_UNKNOWN_ZONE_ID
  * 
- * @draft ICU 65
+ * @stable ICU 65
  */
-U_DRAFT int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getHostTimeZone(UChar *result, int32_t resultCapacity, UErrorCode *ec);
 
-#endif // U_HIDE_DRAFT_API
-
 /**
  * Return the amount of time in milliseconds that the clock is
  * advanced during daylight savings time for the given time zone, or
@@ -714,7 +710,7 @@
  *
  * @stable ICU 2.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getDSTSavings(const UChar* zoneID, UErrorCode* ec);
 
 /**
@@ -723,7 +719,7 @@
  * @return The current date and time.
  * @stable ICU 2.0
  */
-U_STABLE UDate U_EXPORT2 
+U_CAPI UDate U_EXPORT2 
 ucal_getNow(void);
 
 /**
@@ -749,7 +745,7 @@
  * @see #UCAL_UNKNOWN_ZONE_ID
  * @stable ICU 2.0
  */
-U_STABLE UCalendar* U_EXPORT2 
+U_CAPI UCalendar* U_EXPORT2 
 ucal_open(const UChar*   zoneID,
           int32_t        len,
           const char*    locale,
@@ -762,7 +758,7 @@
  * @param cal The UCalendar to close.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_close(UCalendar *cal);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -792,7 +788,7 @@
  * @return A pointer to a UCalendar identical to cal.
  * @stable ICU 4.0
  */
-U_STABLE UCalendar* U_EXPORT2 
+U_CAPI UCalendar* U_EXPORT2 
 ucal_clone(const UCalendar* cal,
            UErrorCode*      status);
 
@@ -805,7 +801,7 @@
  * @param status A pointer to an UErrorCode to receive any errors.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_setTimeZone(UCalendar*    cal,
                  const UChar*  zoneID,
                  int32_t       len,
@@ -821,7 +817,7 @@
  * @return              The total buffer size needed; if greater than resultLength, the output was truncated. 
  * @stable ICU 51 
  */ 
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_getTimeZoneID(const UCalendar *cal,
                    UChar *result,
                    int32_t resultLength,
@@ -858,7 +854,7 @@
  * @return             The total buffer size needed; if greater than resultLength, the output was truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_getTimeZoneDisplayName(const UCalendar*          cal,
                             UCalendarDisplayNameType  type,
                             const char*               locale,
@@ -871,10 +867,10 @@
  * Daylight savings time is not used in all parts of the world.
  * @param cal The UCalendar to query.
  * @param status A pointer to an UErrorCode to receive any errors
- * @return TRUE if cal is currently in daylight savings time, FALSE otherwise
+ * @return true if cal is currently in daylight savings time, false otherwise
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucal_inDaylightTime(const UCalendar*  cal,
                     UErrorCode*       status );
 
@@ -898,7 +894,7 @@
  * @see ucal_getGregorianChange
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucal_setGregorianChange(UCalendar *cal, UDate date, UErrorCode *pErrorCode);
 
 /**
@@ -921,7 +917,7 @@
  * @see ucal_setGregorianChange
  * @stable ICU 3.6
  */
-U_STABLE UDate U_EXPORT2
+U_CAPI UDate U_EXPORT2
 ucal_getGregorianChange(const UCalendar *cal, UErrorCode *pErrorCode);
 
 /**
@@ -1002,7 +998,7 @@
  * @see ucal_setAttribute
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_getAttribute(const UCalendar*    cal,
                   UCalendarAttribute  attr);
 
@@ -1017,7 +1013,7 @@
  * @see ucal_getAttribute
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_setAttribute(UCalendar*          cal,
                   UCalendarAttribute  attr,
                   int32_t             newValue);
@@ -1031,7 +1027,7 @@
  * @see ucal_countAvailable
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2 
+U_CAPI const char* U_EXPORT2 
 ucal_getAvailable(int32_t localeIndex);
 
 /**
@@ -1042,7 +1038,7 @@
  * @see ucal_getAvailable
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_countAvailable(void);
 
 /**
@@ -1056,7 +1052,7 @@
  * @see ucal_setDateTime
  * @stable ICU 2.0
  */
-U_STABLE UDate U_EXPORT2 
+U_CAPI UDate U_EXPORT2 
 ucal_getMillis(const UCalendar*  cal,
                UErrorCode*       status);
 
@@ -1071,7 +1067,7 @@
  * @see ucal_setDateTime
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_setMillis(UCalendar*   cal,
                UDate        dateTime,
                UErrorCode*  status );
@@ -1090,7 +1086,7 @@
  * @see ucal_setDateTime
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_setDate(UCalendar*   cal,
              int32_t      year,
              int32_t      month,
@@ -1114,7 +1110,7 @@
  * @see ucal_setDate
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_setDateTime(UCalendar*   cal,
                  int32_t      year,
                  int32_t      month,
@@ -1125,15 +1121,15 @@
                  UErrorCode*  status);
 
 /**
- * Returns TRUE if two UCalendars are equivalent.  Equivalent
+ * Returns true if two UCalendars are equivalent.  Equivalent
  * UCalendars will behave identically, but they may be set to
  * different times.
  * @param cal1 The first of the UCalendars to compare.
  * @param cal2 The second of the UCalendars to compare.
- * @return TRUE if cal1 and cal2 are equivalent, FALSE otherwise.
+ * @return true if cal1 and cal2 are equivalent, false otherwise.
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucal_equivalentTo(const UCalendar*  cal1,
                   const UCalendar*  cal2);
 
@@ -1155,7 +1151,7 @@
  * @see ucal_roll
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_add(UCalendar*           cal,
          UCalendarDateFields  field,
          int32_t              amount,
@@ -1185,7 +1181,7 @@
  * @see ucal_add
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_roll(UCalendar*           cal,
           UCalendarDateFields  field,
           int32_t              amount,
@@ -1207,7 +1203,7 @@
  * @see ucal_clear
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_get(const UCalendar*     cal,
          UCalendarDateFields  field,
          UErrorCode*          status );
@@ -1227,7 +1223,7 @@
  * @see ucal_clear
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_set(UCalendar*           cal,
          UCalendarDateFields  field,
          int32_t              value);
@@ -1240,14 +1236,14 @@
  * UCAL_WEEK_OF_YEAR, UCAL_WEEK_OF_MONTH, UCAL_DATE, UCAL_DAY_OF_YEAR, UCAL_DAY_OF_WEEK,
  * UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_AM_PM, UCAL_HOUR, UCAL_HOUR_OF_DAY, UCAL_MINUTE, UCAL_SECOND,
  * UCAL_MILLISECOND, UCAL_ZONE_OFFSET, UCAL_DST_OFFSET.
- * @return TRUE if field is set, FALSE otherwise.
+ * @return true if field is set, false otherwise.
  * @see ucal_get
  * @see ucal_set
  * @see ucal_clearField
  * @see ucal_clear
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucal_isSet(const UCalendar*     cal,
            UCalendarDateFields  field);
 
@@ -1265,7 +1261,7 @@
  * @see ucal_clear
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_clearField(UCalendar*           cal,
                 UCalendarDateFields  field);
 
@@ -1279,7 +1275,7 @@
  * @see ucal_clearField
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_clear(UCalendar* calendar);
 
 /**
@@ -1318,7 +1314,7 @@
  * @return The requested value.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_getLimit(const UCalendar*     cal,
               UCalendarDateFields  field,
               UCalendarLimitType   type,
@@ -1331,7 +1327,7 @@
  *  @return the locale name
  *  @stable ICU 2.8
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucal_getLocaleByType(const UCalendar *cal, ULocDataLocaleType type, UErrorCode* status);
 
 /**
@@ -1340,7 +1336,7 @@
  * @return the version string, such as "2007f"
  * @stable ICU 3.8
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucal_getTZDataVersion(UErrorCode* status);
 
 /**
@@ -1361,7 +1357,7 @@
  *                  null.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getCanonicalTimeZoneID(const UChar* id, int32_t len,
                             UChar* result, int32_t resultCapacity, UBool *isSystemID, UErrorCode* status);
 /**
@@ -1371,7 +1367,7 @@
  * @return The resource keyword value string.
  * @stable ICU 4.2
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucal_getType(const UCalendar *cal, UErrorCode* status);
 
 /**
@@ -1390,7 +1386,7 @@
  * @return a string enumeration over keyword values for the given key and the locale.
  * @stable ICU 4.2
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucal_getKeywordValuesForLocale(const char* key,
                                const char* locale,
                                UBool commonlyUsed,
@@ -1445,7 +1441,7 @@
  * @return The UCalendarWeekdayType for the day of the week.
  * @stable ICU 4.4
  */
-U_STABLE UCalendarWeekdayType U_EXPORT2
+U_CAPI UCalendarWeekdayType U_EXPORT2
 ucal_getDayOfWeekType(const UCalendar *cal, UCalendarDaysOfWeek dayOfWeek, UErrorCode* status);
 
 /**
@@ -1463,20 +1459,20 @@
  * @return The milliseconds after midnight at which the weekend begins or ends.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getWeekendTransition(const UCalendar *cal, UCalendarDaysOfWeek dayOfWeek, UErrorCode *status);
 
 /**
- * Returns TRUE if the given UDate is in the weekend in
+ * Returns true if the given UDate is in the weekend in
  * this calendar system.
  * @param cal The UCalendar to query.
  * @param date The UDate in question.
  * @param status The error code for the operation.
- * @return TRUE if the given UDate is in the weekend in
- * this calendar system, FALSE otherwise.
+ * @return true if the given UDate is in the weekend in
+ * this calendar system, false otherwise.
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucal_isWeekend(const UCalendar *cal, UDate date, UErrorCode *status);
 
 /**
@@ -1503,7 +1499,7 @@
  * @return The date difference for the specified field.
  * @stable ICU 4.8
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_getFieldDifference(UCalendar* cal,
                         UDate target,
                         UCalendarDateFields field,
@@ -1547,17 +1543,17 @@
 * the calendar's current date, in the time zone to which the calendar
 * is currently set. If there is no known time zone transition of the
 * requested type relative to the calendar's date, the function returns
-* FALSE.
+* false.
 * @param cal The UCalendar to query.
 * @param type The type of transition desired.
 * @param transition A pointer to a UDate to be set to the transition time.
-*         If the function returns FALSE, the value set is unspecified.
+*         If the function returns false, the value set is unspecified.
 * @param status A pointer to a UErrorCode to receive any errors.
-* @return TRUE if a valid transition time is set in *transition, FALSE
+* @return true if a valid transition time is set in *transition, false
 *         otherwise.
 * @stable ICU 50
 */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucal_getTimeZoneTransitionDate(const UCalendar* cal, UTimeZoneTransitionType type,
                                UDate* transition, UErrorCode* status);
 
@@ -1572,7 +1568,7 @@
 *
 * <p>This implementation utilizes <a href="http://unicode.org/cldr/charts/supplemental/zone_tzid.html">
 * Zone-Tzid mapping data</a>. The mapping data is updated time to time. To get the latest changes,
-* please read the ICU user guide section <a href="http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data">
+* please read the ICU user guide section <a href="https://unicode-org.github.io/icu/userguide/datetime/timezone#updating-the-time-zone-data">
 * Updating the Time Zone Data</a>.
 *
 * @param id            A system time zone ID.
@@ -1585,7 +1581,7 @@
 *
 * @stable ICU 52
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getWindowsTimeZoneID(const UChar* id, int32_t len,
                             UChar* winid, int32_t winidCapacity, UErrorCode* status);
 
@@ -1603,7 +1599,7 @@
 *
 * <p>This implementation utilizes <a href="http://unicode.org/cldr/charts/supplemental/zone_tzid.html">
 * Zone-Tzid mapping data</a>. The mapping data is updated time to time. To get the latest changes,
-* please read the ICU user guide section <a href="http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data">
+* please read the ICU user guide section <a href="https://unicode-org.github.io/icu/userguide/datetime/timezone#updating-the-time-zone-data">
 * Updating the Time Zone Data</a>.
 *
 * @param winid         A Windows time zone ID.
@@ -1617,7 +1613,7 @@
 *
 * @stable ICU 52
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getTimeZoneIDForWindowsID(const UChar* winid, int32_t len, const char* region,
                                 UChar* id, int32_t idCapacity, UErrorCode* status);
 
diff --git a/icu4c/source/i18n/unicode/ucol.h b/icu4c/source/i18n/unicode/ucol.h
index f7e6919..a01d0ae 100644
--- a/icu4c/source/i18n/unicode/ucol.h
+++ b/icu4c/source/i18n/unicode/ucol.h
@@ -35,14 +35,14 @@
  * searching and sorting routines for natural language text.
  * <p>
  * For more information about the collation service see 
- * <a href="http://userguide.icu-project.org/collation">the User Guide</a>.
+ * <a href="https://unicode-org.github.io/icu/userguide/collation">the User Guide</a>.
  * <p>
  * Collation service provides correct sorting orders for most locales supported in ICU. 
  * If specific data for a locale is not available, the orders eventually falls back
  * to the <a href="http://www.unicode.org/reports/tr35/tr35-collation.html#Root_Collation">CLDR root sort order</a>. 
  * <p>
  * Sort ordering may be customized by providing your own set of rules. For more on
- * this subject see the <a href="http://userguide.icu-project.org/collation/customization">
+ * this subject see the <a href="https://unicode-org.github.io/icu/userguide/collation/customization">
  * Collation Customization</a> section of the User Guide.
  * <p>
  * @see         UCollationResult
@@ -370,7 +370,7 @@
    * Retrieves the "UCA rules" concatenated with the tailoring rules.
    * The "UCA rules" are an <i>approximation</i> of the root collator's sort order.
    * They are almost never used or useful at runtime and can be removed from the data.
-   * See http://userguide.icu-project.org/collation/customization#TOC-Building-on-Existing-Locales
+   * See https://unicode-org.github.io/icu/userguide/collation/customization#building-on-existing-locales
    * @stable ICU 2.0
    */
   UCOL_FULL_RULES 
@@ -384,7 +384,7 @@
  * Starting with ICU 54, collation attributes can be specified via locale keywords as well,
  * in the old locale extension syntax ("el@colCaseFirst=upper")
  * or in language tag syntax ("el-u-kf-upper").
- * See <a href="http://userguide.icu-project.org/collation/api">User Guide: Collation API</a>.
+ * See <a href="https://unicode-org.github.io/icu/userguide/collation/api">User Guide: Collation API</a>.
  *
  * The UCollator pointer is used in all the calls to the Collation 
  * service. After finished, collator must be disposed of by calling
@@ -401,7 +401,7 @@
  * @see ucol_close
  * @stable ICU 2.0
  */
-U_STABLE UCollator* U_EXPORT2 
+U_CAPI UCollator* U_EXPORT2 
 ucol_open(const char *loc, UErrorCode *status);
 
 /**
@@ -429,7 +429,7 @@
  * @see ucol_close
  * @stable ICU 2.0
  */
-U_STABLE UCollator* U_EXPORT2 
+U_CAPI UCollator* U_EXPORT2 
 ucol_openRules( const UChar        *rules,
                 int32_t            rulesLength,
                 UColAttributeValue normalizationMode,
@@ -442,7 +442,7 @@
  * Open a collator defined by a short form string.
  * The structure and the syntax of the string is defined in the "Naming collators"
  * section of the users guide: 
- * http://userguide.icu-project.org/collation/concepts#TOC-Collator-naming-scheme
+ * https://unicode-org.github.io/icu/userguide/collation/concepts#collator-naming-scheme
  * Attributes are overriden by the subsequent attributes. So, for "S2_S3", final
  * strength will be 3. 3066bis locale overrides individual locale parts.
  * The call to this function is equivalent to a call to ucol_open, followed by a 
@@ -452,12 +452,12 @@
  *                   state for a locale.
  * @param parseError if not NULL, structure that will get filled with error's pre
  *                   and post context in case of error.
- * @param forceDefaults if FALSE, the settings that are the same as the collator 
+ * @param forceDefaults if false, the settings that are the same as the collator 
  *                   default settings will not be applied (for example, setting
  *                   French secondary on a French collator would not be executed). 
- *                   If TRUE, all the settings will be applied regardless of the 
+ *                   If true, all the settings will be applied regardless of the 
  *                   collator default value. If the definition
- *                   strings are to be cached, should be set to FALSE.
+ *                   strings are to be cached, should be set to false.
  * @param status     Error code. Apart from regular error conditions connected to 
  *                   instantiating collators (like out of memory or similar), this
  *                   API will return an error if an invalid attribute or attribute/value
@@ -509,7 +509,7 @@
  *
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucol_getContractionsAndExpansions( const UCollator *coll,
                   USet *contractions, USet *expansions,
                   UBool addPrefixes, UErrorCode *status);
@@ -524,7 +524,7 @@
  * @see ucol_safeClone
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_close(UCollator *coll);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -561,7 +561,7 @@
  * @see ucol_equal
  * @stable ICU 2.0
  */
-U_STABLE UCollationResult U_EXPORT2 
+U_CAPI UCollationResult U_EXPORT2 
 ucol_strcoll(    const    UCollator    *coll,
         const    UChar        *source,
         int32_t            sourceLength,
@@ -586,7 +586,7 @@
 * @see ucol_equal 
 * @stable ICU 50 
 */ 
-U_STABLE UCollationResult U_EXPORT2
+U_CAPI UCollationResult U_EXPORT2
 ucol_strcollUTF8(
         const UCollator *coll,
         const char      *source,
@@ -603,13 +603,13 @@
  * @param sourceLength The length of source, or -1 if null-terminated.
  * @param target The target string.
  * @param targetLength The length of target, or -1 if null-terminated.
- * @return TRUE if source is greater than target, FALSE otherwise.
+ * @return true if source is greater than target, false otherwise.
  * @see ucol_strcoll
  * @see ucol_greaterOrEqual
  * @see ucol_equal
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucol_greater(const UCollator *coll,
              const UChar     *source, int32_t sourceLength,
              const UChar     *target, int32_t targetLength);
@@ -622,13 +622,13 @@
  * @param sourceLength The length of source, or -1 if null-terminated.
  * @param target The target string.
  * @param targetLength The length of target, or -1 if null-terminated.
- * @return TRUE if source is greater than or equal to target, FALSE otherwise.
+ * @return true if source is greater than or equal to target, false otherwise.
  * @see ucol_strcoll
  * @see ucol_greater
  * @see ucol_equal
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucol_greaterOrEqual(const UCollator *coll,
                     const UChar     *source, int32_t sourceLength,
                     const UChar     *target, int32_t targetLength);
@@ -641,13 +641,13 @@
  * @param sourceLength The length of source, or -1 if null-terminated.
  * @param target The target string.
  * @param targetLength The length of target, or -1 if null-terminated.
- * @return TRUE if source is equal to target, FALSE otherwise
+ * @return true if source is equal to target, false otherwise
  * @see ucol_strcoll
  * @see ucol_greater
  * @see ucol_greaterOrEqual
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucol_equal(const UCollator *coll,
            const UChar     *source, int32_t sourceLength,
            const UChar     *target, int32_t targetLength);
@@ -664,7 +664,7 @@
  * @see ucol_strcoll
  * @stable ICU 2.6
  */
-U_STABLE UCollationResult U_EXPORT2 
+U_CAPI UCollationResult U_EXPORT2 
 ucol_strcollIter(  const    UCollator    *coll,
                   UCharIterator *sIter,
                   UCharIterator *tIter,
@@ -679,7 +679,7 @@
  * @see ucol_setStrength
  * @stable ICU 2.0
  */
-U_STABLE UCollationStrength U_EXPORT2 
+U_CAPI UCollationStrength U_EXPORT2 
 ucol_getStrength(const UCollator *coll);
 
 /**
@@ -691,7 +691,7 @@
  * @see ucol_getStrength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_setStrength(UCollator *coll,
                  UCollationStrength strength);
 
@@ -711,7 +711,7 @@
  * @see UColReorderCode
  * @stable ICU 4.8
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getReorderCodes(const UCollator* coll,
                     int32_t* dest,
                     int32_t destCapacity,
@@ -756,7 +756,7 @@
  * @see UColReorderCode
  * @stable ICU 4.8
  */ 
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_setReorderCodes(UCollator* coll,
                     const int32_t* reorderCodes,
                     int32_t reorderCodesLength,
@@ -781,7 +781,7 @@
  * @see UColReorderCode
  * @stable ICU 4.8
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getEquivalentReorderCodes(int32_t reorderCode,
                     int32_t* dest,
                     int32_t destCapacity,
@@ -799,7 +799,7 @@
  * the output was truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getDisplayName(    const    char        *objLoc,
             const    char        *dispLoc,
             UChar             *result,
@@ -815,7 +815,7 @@
  * @see ucol_countAvailable
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2 
+U_CAPI const char* U_EXPORT2 
 ucol_getAvailable(int32_t localeIndex);
 
 /**
@@ -826,7 +826,7 @@
  * @see ucol_getAvailable
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_countAvailable(void);
 
 #if !UCONFIG_NO_SERVICE
@@ -838,7 +838,7 @@
  * responsible for closing the result.
  * @stable ICU 3.0
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucol_openAvailableLocales(UErrorCode *status);
 #endif
 
@@ -851,7 +851,7 @@
  * responsible for closing the result.
  * @stable ICU 3.0
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucol_getKeywords(UErrorCode *status);
 
 /**
@@ -865,7 +865,7 @@
  * upon error. The caller is responsible for closing the result.
  * @stable ICU 3.0
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucol_getKeywordValues(const char *keyword, UErrorCode *status);
 
 /**
@@ -884,7 +884,7 @@
  * @return a string enumeration over keyword values for the given key and the locale.
  * @stable ICU 4.2
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucol_getKeywordValuesForLocale(const char* key,
                                const char* locale,
                                UBool commonlyUsed,
@@ -904,7 +904,7 @@
  * applications who wish to cache collators, or otherwise reuse
  * collators when possible. The functional equivalent may change
  * over time. For more information, please see the <a
- * href="http://userguide.icu-project.org/locale#TOC-Locales-and-Services">
+ * href="https://unicode-org.github.io/icu/userguide/locale#locales-and-services">
  * Locales and Services</a> section of the ICU User Guide.
  * @param result fillin for the functionally equivalent result locale
  * @param resultCapacity capacity of the fillin buffer
@@ -921,7 +921,7 @@
  * an error code will be returned.
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_getFunctionalEquivalent(char* result, int32_t resultCapacity,
                              const char* keyword, const char* locale,
                              UBool* isAvailable, UErrorCode* status);
@@ -934,7 +934,7 @@
  * @return The collation tailoring rules.
  * @stable ICU 2.0
  */
-U_STABLE const UChar* U_EXPORT2 
+U_CAPI const UChar* U_EXPORT2 
 ucol_getRules(    const    UCollator    *coll, 
         int32_t            *length);
 
@@ -945,7 +945,7 @@
  *  This string will be normalized.
  *  The structure and the syntax of the string is defined in the "Naming collators"
  *  section of the users guide: 
- *  http://userguide.icu-project.org/collation/concepts#TOC-Collator-naming-scheme
+ *  https://unicode-org.github.io/icu/userguide/collation/concepts#collator-naming-scheme
  *  This API supports preflighting.
  *  @param coll a collator
  *  @param locale a locale that will appear as a collators locale in the resulting
@@ -1017,7 +1017,7 @@
  * @see ucol_keyHashCode
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getSortKey(const    UCollator    *coll,
         const    UChar        *source,
         int32_t        sourceLength,
@@ -1045,7 +1045,7 @@
  *          the sort key.
  *  @stable ICU 2.6
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_nextSortKeyPart(const UCollator *coll,
                      UCharIterator *iter,
                      uint32_t state[2],
@@ -1112,7 +1112,7 @@
  * @see ucol_keyHashCode
  * @stable ICU 2.1
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getBound(const uint8_t       *source,
         int32_t             sourceLength,
         UColBoundMode       boundType,
@@ -1129,7 +1129,7 @@
  * @param info the version # information, the result will be filled in
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucol_getVersion(const UCollator* coll, UVersionInfo info);
 
 /**
@@ -1139,7 +1139,7 @@
  * @param info the version # information, the result will be filled in
  * @stable ICU 2.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucol_getUCAVersion(const UCollator* coll, UVersionInfo info);
 
 /**
@@ -1158,7 +1158,7 @@
  * Using strings with U+FFFE may yield shorter sort keys.
  *
  * For details about Sort Key Features see
- * http://userguide.icu-project.org/collation/api#TOC-Sort-Key-Features
+ * https://unicode-org.github.io/icu/userguide/collation/api#sort-key-features
  *
  * It is possible to merge multiple sort keys by consecutively merging
  * another one with the intermediate result.
@@ -1189,7 +1189,7 @@
  *         in which cases the contents of dest is undefined
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_mergeSortkeys(const uint8_t *src1, int32_t src1Length,
                    const uint8_t *src2, int32_t src2Length,
                    uint8_t *dest, int32_t destCapacity);
@@ -1205,7 +1205,7 @@
  * @see ucol_getAttribute
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_setAttribute(UCollator *coll, UColAttribute attr, UColAttributeValue value, UErrorCode *status);
 
 /**
@@ -1219,7 +1219,7 @@
  * @see ucol_setAttribute
  * @stable ICU 2.0
  */
-U_STABLE UColAttributeValue  U_EXPORT2 
+U_CAPI UColAttributeValue  U_EXPORT2 
 ucol_getAttribute(const UCollator *coll, UColAttribute attr, UErrorCode *status);
 
 /**
@@ -1238,7 +1238,7 @@
  * @see ucol_getMaxVariable
  * @stable ICU 53
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucol_setMaxVariable(UCollator *coll, UColReorderCode group, UErrorCode *pErrorCode);
 
 /**
@@ -1248,7 +1248,7 @@
  * @see ucol_setMaxVariable
  * @stable ICU 53
  */
-U_STABLE UColReorderCode U_EXPORT2
+U_CAPI UColReorderCode U_EXPORT2
 ucol_getMaxVariable(const UCollator *coll);
 
 #ifndef U_HIDE_DEPRECATED_API
@@ -1289,7 +1289,7 @@
  * @see ucol_restoreVariableTop
  * @stable ICU 2.0
  */
-U_STABLE uint32_t U_EXPORT2 ucol_getVariableTop(const UCollator *coll, UErrorCode *status);
+U_CAPI uint32_t U_EXPORT2 ucol_getVariableTop(const UCollator *coll, UErrorCode *status);
 
 #ifndef U_HIDE_DEPRECATED_API
 /**
@@ -1333,7 +1333,7 @@
  * @see ucol_close
  * @stable ICU 2.0
  */
-U_STABLE UCollator* U_EXPORT2 
+U_CAPI UCollator* U_EXPORT2 
 ucol_safeClone(const UCollator *coll,
                void            *stackBuffer,
                int32_t         *pBufferSize,
@@ -1354,7 +1354,7 @@
  * to store rules, will store up to available space.
  *
  * ucol_getRules() should normally be used instead.
- * See http://userguide.icu-project.org/collation/customization#TOC-Building-on-Existing-Locales
+ * See https://unicode-org.github.io/icu/userguide/collation/customization#building-on-existing-locales
  * @param coll collator to get the rules from
  * @param delta one of UCOL_TAILORING_ONLY, UCOL_FULL_RULES. 
  * @param buffer buffer to store the result in. If NULL, you'll get no rules.
@@ -1363,7 +1363,7 @@
  * @stable ICU 2.0
  * @see UCOL_FULL_RULES
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getRulesEx(const UCollator *coll, UColRuleOption delta, UChar *buffer, int32_t bufferLen);
 
 #ifndef U_HIDE_DEPRECATED_API
@@ -1399,7 +1399,7 @@
  *         NULL.
  * @stable ICU 2.8
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucol_getLocaleByType(const UCollator *coll, ULocDataLocaleType type, UErrorCode *status);
 
 /**
@@ -1412,7 +1412,7 @@
  * @see uset_close
  * @stable ICU 2.4
  */
-U_STABLE USet * U_EXPORT2
+U_CAPI USet * U_EXPORT2
 ucol_getTailoredSet(const UCollator *coll, UErrorCode *status);
 
 #ifndef U_HIDE_INTERNAL_API
@@ -1427,7 +1427,7 @@
  *  @return number of elements in the set
  *  @internal ICU 3.0
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_getUnsafeSet( const UCollator *coll,
                   USet *unsafe,
                   UErrorCode *status);
@@ -1439,12 +1439,12 @@
  *                   state for a locale.
  * @param parseError if not NULL, structure that will get filled with error's pre
  *                   and post context in case of error.
- * @param forceDefaults if FALSE, the settings that are the same as the collator 
+ * @param forceDefaults if false, the settings that are the same as the collator 
  *                   default settings will not be applied (for example, setting
  *                   French secondary on a French collator would not be executed). 
- *                   If TRUE, all the settings will be applied regardless of the 
+ *                   If true, all the settings will be applied regardless of the 
  *                   collator default value. If the definition
- *                   strings are to be cached, should be set to FALSE.
+ *                   strings are to be cached, should be set to false.
  * @param status     Error code. Apart from regular error conditions connected to 
  *                   instantiating collators (like out of memory or similar), this
  *                   API will return an error if an invalid attribute or attribute/value
@@ -1452,7 +1452,7 @@
  * @see ucol_openFromShortString
  * @internal ICU 3.2.1
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucol_prepareShortStringOpen( const char *definition,
                           UBool forceDefaults,
                           UParseError *parseError,
@@ -1470,7 +1470,7 @@
  *  @see ucol_openBinary
  *  @stable ICU 3.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_cloneBinary(const UCollator *coll,
                  uint8_t *buffer, int32_t capacity,
                  UErrorCode *status);
@@ -1492,7 +1492,7 @@
  *  @see ucol_cloneBinary
  *  @stable ICU 3.2
  */
-U_STABLE UCollator* U_EXPORT2
+U_CAPI UCollator* U_EXPORT2
 ucol_openBinary(const uint8_t *bin, int32_t length, 
                 const UCollator *base, 
                 UErrorCode *status);
diff --git a/icu4c/source/i18n/unicode/ucoleitr.h b/icu4c/source/i18n/unicode/ucoleitr.h
index 85ec838..d500036 100644
--- a/icu4c/source/i18n/unicode/ucoleitr.h
+++ b/icu4c/source/i18n/unicode/ucoleitr.h
@@ -23,7 +23,7 @@
 #if !UCONFIG_NO_COLLATION
 
 /**  
- * This indicates an error has occured during processing or if no more CEs is 
+ * This indicates an error has occurred during processing or if no more CEs is 
  * to be returned.
  * @stable ICU 2.0
  */
@@ -66,14 +66,14 @@
  * .      UCollationElements *c;
  * .      UCollatorOld *coll;
  * .      UErrorCode success = U_ZERO_ERROR;
- * .      s=(UChar*)malloc(sizeof(UChar) * (strlen("This is a test")+1) );
- * .      u_uastrcpy(s, "This is a test");
+ * .      str=(UChar*)malloc(sizeof(UChar) * (strlen("This is a test")+1) );
+ * .      u_uastrcpy(str, "This is a test");
  * .      coll = ucol_open(NULL, &success);
  * .      c = ucol_openElements(coll, str, u_strlen(str), &status);
  * .      order = ucol_next(c, &success);
  * .      ucol_reset(c);
  * .      order = ucol_prev(c, &success);
- * .      free(s);
+ * .      free(str);
  * .      ucol_close(coll);
  * .      ucol_closeElements(c);
  * .  }
@@ -102,6 +102,10 @@
 /**
  * Open the collation elements for a string.
  *
+ * The UCollationElements retains a pointer to the supplied text.
+ * The caller must not modify or delete the text while the UCollationElements
+ * object is used to iterate over this text.
+ *
  * @param coll The collator containing the desired collation rules.
  * @param text The text to iterate over.
  * @param textLength The number of characters in text, or -1 if null-terminated
@@ -109,13 +113,12 @@
  * @return a struct containing collation element information
  * @stable ICU 2.0
  */
-U_STABLE UCollationElements* U_EXPORT2 
+U_CAPI UCollationElements* U_EXPORT2 
 ucol_openElements(const UCollator  *coll,
                   const UChar      *text,
                         int32_t    textLength,
                         UErrorCode *status);
 
-
 /**
  * get a hash code for a key... Not very useful!
  * @param key    the given key.
@@ -123,7 +126,7 @@
  * @return       the hash code.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_keyHashCode(const uint8_t* key, int32_t length);
 
 /**
@@ -132,7 +135,7 @@
  * @param elems The UCollationElements to close.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_closeElements(UCollationElements *elems);
 
 /**
@@ -144,7 +147,7 @@
  * @see ucol_previous
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_reset(UCollationElements *elems);
 
 /**
@@ -153,10 +156,10 @@
  * @param elems The UCollationElements containing the text.
  * @param status A pointer to a UErrorCode to receive any errors.
  * @return The next collation elements ordering, otherwise returns UCOL_NULLORDER 
- *         if an error has occured or if the end of string has been reached
+ *         if an error has occurred or if the end of string has been reached
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_next(UCollationElements *elems, UErrorCode *status);
 
 /**
@@ -168,11 +171,11 @@
  *               a U_BUFFER_OVERFLOW_ERROR is returned if the internal stack
  *               buffer has been exhausted.
  * @return The previous collation elements ordering, otherwise returns 
- *         UCOL_NULLORDER if an error has occured or if the start of string has 
+ *         UCOL_NULLORDER if an error has occurred or if the start of string has 
  *         been reached.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_previous(UCollationElements *elems, UErrorCode *status);
 
 /**
@@ -186,7 +189,7 @@
  *         expansion sequence
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getMaxExpansion(const UCollationElements *elems, int32_t order);
 
 /**
@@ -194,6 +197,11 @@
  * Property settings for collation will remain the same.
  * In order to reset the iterator to the current collation property settings,
  * the API reset() has to be called.
+ *
+ * The UCollationElements retains a pointer to the supplied text.
+ * The caller must not modify or delete the text while the UCollationElements
+ * object is used to iterate over this text.
+ *
  * @param elems The UCollationElements to set.
  * @param text The source text containing the collation elements.
  * @param textLength The length of text, or -1 if null-terminated.
@@ -201,8 +209,8 @@
  * @see ucol_getText
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
-ucol_setText(      UCollationElements *elems, 
+U_CAPI void U_EXPORT2 
+ucol_setText(      UCollationElements *elems,
              const UChar              *text,
                    int32_t            textLength,
                    UErrorCode         *status);
@@ -216,7 +224,7 @@
  * @see ucol_setOffset
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getOffset(const UCollationElements *elems);
 
 /**
@@ -231,9 +239,9 @@
  * @see ucol_getOffset
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_setOffset(UCollationElements *elems,
-               int32_t        offset,
+               int32_t             offset,
                UErrorCode         *status);
 
 /**
@@ -242,7 +250,7 @@
 * @return the primary order of a collation order.
 * @stable ICU 2.6
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_primaryOrder (int32_t order); 
 
 /**
@@ -251,7 +259,7 @@
 * @return the secondary order of a collation order.
 * @stable ICU 2.6
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_secondaryOrder (int32_t order); 
 
 /**
@@ -260,7 +268,7 @@
 * @return the tertiary order of a collation order.
 * @stable ICU 2.6
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_tertiaryOrder (int32_t order); 
 
 #endif /* #if !UCONFIG_NO_COLLATION */
diff --git a/icu4c/source/i18n/unicode/ucsdet.h b/icu4c/source/i18n/unicode/ucsdet.h
index d28da50..8c62fde 100644
--- a/icu4c/source/i18n/unicode/ucsdet.h
+++ b/icu4c/source/i18n/unicode/ucsdet.h
@@ -78,7 +78,7 @@
   *  @return the newly opened charset detector.
   *  @stable ICU 3.6
   */
-U_STABLE UCharsetDetector * U_EXPORT2
+U_CAPI UCharsetDetector * U_EXPORT2
 ucsdet_open(UErrorCode   *status);
 
 /**
@@ -90,7 +90,7 @@
   *  @param ucsd  The charset detector to be closed.
   *  @stable ICU 3.6
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucsdet_close(UCharsetDetector *ucsd);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -127,7 +127,7 @@
   *
   * @stable ICU 3.6
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucsdet_setText(UCharsetDetector *ucsd, const char *textIn, int32_t len, UErrorCode *status);
 
 
@@ -149,7 +149,7 @@
  *
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucsdet_setDeclaredEncoding(UCharsetDetector *ucsd, const char *encoding, int32_t length, UErrorCode *status);
 
 
@@ -178,7 +178,7 @@
  *
  * @stable ICU 3.6
  */
-U_STABLE const UCharsetMatch * U_EXPORT2
+U_CAPI const UCharsetMatch * U_EXPORT2
 ucsdet_detect(UCharsetDetector *ucsd, UErrorCode *status);
     
 
@@ -212,7 +212,7 @@
  *                      the detector is closed or modified.
  * @stable ICU 3.6
  */
-U_STABLE const UCharsetMatch ** U_EXPORT2
+U_CAPI const UCharsetMatch ** U_EXPORT2
 ucsdet_detectAll(UCharsetDetector *ucsd, int32_t *matchesFound, UErrorCode *status);
 
 
@@ -232,7 +232,7 @@
  *
  *  @stable ICU 3.6
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucsdet_getName(const UCharsetMatch *ucsm, UErrorCode *status);
 
 /**
@@ -258,7 +258,7 @@
  *
  *  @stable ICU 3.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucsdet_getConfidence(const UCharsetMatch *ucsm, UErrorCode *status);
 
 /**
@@ -290,7 +290,7 @@
  *
  *  @stable ICU 3.6
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucsdet_getLanguage(const UCharsetMatch *ucsm, UErrorCode *status);
 
 
@@ -316,7 +316,7 @@
   *
   * @stable ICU 3.6
   */
-U_STABLE  int32_t U_EXPORT2
+U_CAPI  int32_t U_EXPORT2
 ucsdet_getUChars(const UCharsetMatch *ucsm,
                  UChar *buf, int32_t cap, UErrorCode *status);
 
@@ -350,7 +350,7 @@
   *  @return an iterator providing access to the detectable charset names.
   *  @stable ICU 3.6
   */
-U_STABLE  UEnumeration * U_EXPORT2
+U_CAPI  UEnumeration * U_EXPORT2
 ucsdet_getAllDetectableCharsets(const UCharsetDetector *ucsd,  UErrorCode *status);
 
 /**
@@ -360,11 +360,11 @@
   *  heuristics.
   *
   *  @param ucsd  The charset detector to check.
-  *  @return TRUE if filtering is enabled.
+  *  @return true if filtering is enabled.
   *  @stable ICU 3.6
   */
 
-U_STABLE  UBool U_EXPORT2
+U_CAPI  UBool U_EXPORT2
 ucsdet_isInputFilterEnabled(const UCharsetDetector *ucsd);
 
 
@@ -379,7 +379,7 @@
  *
  * @stable ICU 3.6
  */
-U_STABLE  UBool U_EXPORT2
+U_CAPI  UBool U_EXPORT2
 ucsdet_enableInputFilter(UCharsetDetector *ucsd, UBool filter);
 
 #ifndef U_HIDE_INTERNAL_API
@@ -396,7 +396,7 @@
   *  the specified charset detector.
   *  @internal
   */
-U_INTERNAL UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucsdet_getDetectableCharsets(const UCharsetDetector *ucsd,  UErrorCode *status);
 
 /**
@@ -406,13 +406,13 @@
   *
   * @param ucsd a Charset detector.
   * @param encoding encoding the name of charset encoding.
-  * @param enabled <code>TRUE</code> to enable, or <code>FALSE</code> to disable the
+  * @param enabled <code>true</code> to enable, or <code>false</code> to disable the
   *   charset encoding.
   * @param status receives the return status. When the name of charset encoding
   *   is not supported, U_ILLEGAL_ARGUMENT_ERROR is set.
   * @internal
   */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucsdet_setDetectableCharset(UCharsetDetector *ucsd, const char *encoding, UBool enabled, UErrorCode *status);
 #endif  /* U_HIDE_INTERNAL_API */
 
diff --git a/icu4c/source/i18n/unicode/udat.h b/icu4c/source/i18n/unicode/udat.h
index a0855c3..ec25eba 100644
--- a/icu4c/source/i18n/unicode/udat.h
+++ b/icu4c/source/i18n/unicode/udat.h
@@ -146,7 +146,7 @@
  * the date and time formatting algorithm and pattern letters defined by
  * <a href="http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table">UTS#35
  * Unicode Locale Data Markup Language (LDML)</a> and further documented for ICU in the
- * <a href="https://sites.google.com/site/icuprojectuserguide/formatparse/datetime?pli=1#TOC-Date-Field-Symbol-Table">ICU
+ * <a href="https://unicode-org.github.io/icu/userguide/format_parse/datetime#date-field-symbol-table">ICU
  * User Guide</a>.</p>
  */
 
@@ -836,10 +836,24 @@
 
 /**
  * Maps from a UDateFormatField to the corresponding UCalendarDateFields.
- * Note: since the mapping is many-to-one, there is no inverse mapping.
+ *
+ * Note 1: Since the mapping is many-to-one, there is no inverse mapping.
+ *
+ * Note 2: There is no UErrorCode parameter, so in case of error (UDateFormatField is
+ * unknown or has no corresponding UCalendarDateFields value), the function returns the
+ * current value of UCAL_FIELD_COUNT. However, that value may change from release to
+ * release and is consequently deprecated. For a future-proof runtime way of checking
+ * for errors:
+ * a) First save the value returned by the function when it is passed an invalid value
+ *    such as "(UDateFormatField)-1".
+ * b) Then, to test for errors when passing some other UDateFormatField value, check
+ *     whether the function returns that saved value.
+ *
  * @param field the UDateFormatField.
- * @return the UCalendarDateField.  This will be UCAL_FIELD_COUNT in case
- * of error (e.g., the input field is UDAT_FIELD_COUNT).
+ * @return the UCalendarDateField. In case of error (UDateFormatField is unknown or has
+ *   no corresponding UCalendarDateFields value) this will be the current value of
+ *   UCAL_FIELD_COUNT, but that value may change from release to release.
+ *   See Note 2 above.
  * @stable ICU 4.4
  */
 U_CAPI UCalendarDateFields U_EXPORT2
@@ -1221,7 +1235,7 @@
 * With lenient parsing, the parser may use heuristics to interpret inputs that do not
 * precisely match the pattern. With strict parsing, inputs must match the pattern.
 * @param fmt The formatter to query
-* @return TRUE if fmt is set to perform lenient parsing, FALSE otherwise.
+* @return true if fmt is set to perform lenient parsing, false otherwise.
 * @see udat_setLenient
 * @stable ICU 2.0
 */
@@ -1233,7 +1247,7 @@
 * With lenient parsing, the parser may use heuristics to interpret inputs that do not
 * precisely match the pattern. With strict parsing, inputs must match the pattern.
 * @param fmt The formatter to set
-* @param isLenient TRUE if fmt should perform lenient parsing, FALSE otherwise.
+* @param isLenient true if fmt should perform lenient parsing, false otherwise.
 * @see dat_isLenient
 * @stable ICU 2.0
 */
@@ -1393,7 +1407,7 @@
 * Extract the pattern from a UDateFormat.
 * The pattern will follow the pattern syntax rules.
 * @param fmt The formatter to query.
-* @param localized TRUE if the pattern should be localized, FALSE otherwise.
+* @param localized true if the pattern should be localized, false otherwise.
 * @param result A pointer to a buffer to receive the pattern.
 * @param resultLength The maximum size of result.
 * @param status A pointer to an UErrorCode to receive any errors
@@ -1412,7 +1426,7 @@
 * Set the pattern used by an UDateFormat.
 * The pattern should follow the pattern syntax rules.
 * @param format The formatter to set.
-* @param localized TRUE if the pattern is localized, FALSE otherwise.
+* @param localized true if the pattern is localized, false otherwise.
 * @param pattern The new pattern
 * @param patternLength The length of pattern, or -1 if null-terminated.
 * @see udat_toPattern
@@ -1640,7 +1654,7 @@
 * @see udat_applyPatternRelative
 * @internal ICU 4.2 technology preview
 */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udat_toPatternRelativeDate(const UDateFormat *fmt,
                            UChar             *result,
                            int32_t           resultLength,
@@ -1657,7 +1671,7 @@
 * @see udat_applyPatternRelative
 * @internal ICU 4.2 technology preview
 */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udat_toPatternRelativeTime(const UDateFormat *fmt,
                            UChar             *result,
                            int32_t           resultLength,
@@ -1675,7 +1689,7 @@
 * @see udat_toPatternRelativeDate, udat_toPatternRelativeTime
 * @internal ICU 4.2 technology preview
 */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_applyPatternRelative(UDateFormat *format,
                           const UChar *datePattern,
                           int32_t     datePatternLength,
@@ -1700,14 +1714,14 @@
  * Register a provider factory
  * @internal ICU 49
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_registerOpener(UDateFormatOpener opener, UErrorCode *status);
 
 /**
  * Un-Register a provider factory
  * @internal ICU 49
  */
-U_INTERNAL UDateFormatOpener U_EXPORT2
+U_CAPI UDateFormatOpener U_EXPORT2
 udat_unregisterOpener(UDateFormatOpener opener, UErrorCode *status);
 #endif  /* U_HIDE_INTERNAL_API */
 
diff --git a/icu4c/source/i18n/unicode/udateintervalformat.h b/icu4c/source/i18n/unicode/udateintervalformat.h
index 90fab08..b100ea6 100644
--- a/icu4c/source/i18n/unicode/udateintervalformat.h
+++ b/icu4c/source/i18n/unicode/udateintervalformat.h
@@ -17,6 +17,7 @@
 #include "unicode/ucal.h"
 #include "unicode/umisc.h"
 #include "unicode/uformattedvalue.h"
+#include "unicode/udisplaycontext.h"
 
 #if U_SHOW_CPLUSPLUS_API
 #include "unicode/localpointer.h"
@@ -117,7 +118,7 @@
  *            or NULL if an error occurred.
  * @stable ICU 4.8
  */
-U_STABLE UDateIntervalFormat* U_EXPORT2
+U_CAPI UDateIntervalFormat* U_EXPORT2
 udtitvfmt_open(const char*  locale,
               const UChar* skeleton,
               int32_t      skeletonLength,
@@ -131,7 +132,7 @@
  *            The UDateIntervalFormat object to close.
  * @stable ICU 4.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udtitvfmt_close(UDateIntervalFormat *formatter);
 
 /**
@@ -241,7 +242,7 @@
  *            output was truncated.
  * @stable ICU 4.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udtitvfmt_format(const UDateIntervalFormat* formatter,
                 UDate           fromDate,
                 UDate           toDate,
@@ -268,7 +269,7 @@
  *            A pointer to a UErrorCode to receive any errors.
  * @draft ICU 67
  */
-U_DRAFT void U_EXPORT2
+U_CAPI void U_EXPORT2
 udtitvfmt_formatToResult(
                 const UDateIntervalFormat* formatter,
                 UDate           fromDate,
@@ -293,7 +294,7 @@
  * @draft ICU 67
  */
 
-U_DRAFT void U_EXPORT2
+U_CAPI void U_EXPORT2
 udtitvfmt_formatCalendarToResult(
                 const UDateIntervalFormat* formatter,
                 UCalendar*      fromCalendar,
@@ -302,6 +303,34 @@
                 UErrorCode*     status);
 #endif /* U_HIDE_DRAFT_API */
 
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Set a particular UDisplayContext value in the formatter, such as
+ * UDISPCTX_CAPITALIZATION_FOR_STANDALONE. This causes the formatted
+ * result to be capitalized appropriately for the context in which
+ * it is intended to be used, considering both the locale and the
+ * type of field at the beginning of the formatted result.
+ * @param formatter The formatter for which to set a UDisplayContext value.
+ * @param value The UDisplayContext value to set.
+ * @param status A pointer to an UErrorCode to receive any errors
+ * @draft ICU 68
+ */
+U_CAPI void U_EXPORT2
+udtitvfmt_setContext(UDateIntervalFormat* formatter, UDisplayContext value, UErrorCode* status);
+
+/**
+ * Get the formatter's UDisplayContext value for the specified UDisplayContextType,
+ * such as UDISPCTX_TYPE_CAPITALIZATION.
+ * @param formatter The formatter to query.
+ * @param type The UDisplayContextType whose value to return
+ * @param status A pointer to an UErrorCode to receive any errors
+ * @return The UDisplayContextValue for the specified type.
+ * @draft ICU 68
+ */
+U_CAPI UDisplayContext U_EXPORT2
+udtitvfmt_getContext(const UDateIntervalFormat* formatter, UDisplayContextType type, UErrorCode* status);
+
+#endif /* U_HIDE_DRAFT_API */
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
 
diff --git a/icu4c/source/i18n/unicode/udatpg.h b/icu4c/source/i18n/unicode/udatpg.h
index 0c9eed7..5e44cd8 100644
--- a/icu4c/source/i18n/unicode/udatpg.h
+++ b/icu4c/source/i18n/unicode/udatpg.h
@@ -164,7 +164,7 @@
   * @return a pointer to UDateTimePatternGenerator.
   * @stable ICU 3.8
   */
-U_STABLE UDateTimePatternGenerator * U_EXPORT2
+U_CAPI UDateTimePatternGenerator * U_EXPORT2
 udatpg_open(const char *locale, UErrorCode *pErrorCode);
 
 /**
@@ -174,7 +174,7 @@
   * @return a pointer to UDateTimePatternGenerator.
   * @stable ICU 3.8
   */
-U_STABLE UDateTimePatternGenerator * U_EXPORT2
+U_CAPI UDateTimePatternGenerator * U_EXPORT2
 udatpg_openEmpty(UErrorCode *pErrorCode);
 
 /**
@@ -182,7 +182,7 @@
   * @param dtpg a pointer to UDateTimePatternGenerator.
   * @stable ICU 3.8
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udatpg_close(UDateTimePatternGenerator *dtpg);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -212,7 +212,7 @@
   * @return a pointer to a new UDateTimePatternGenerator.
   * @stable ICU 3.8
  */
-U_STABLE UDateTimePatternGenerator * U_EXPORT2
+U_CAPI UDateTimePatternGenerator * U_EXPORT2
 udatpg_clone(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode);
 
 /**
@@ -238,7 +238,7 @@
  * @return the length of bestPattern.
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_getBestPattern(UDateTimePatternGenerator *dtpg,
                       const UChar *skeleton, int32_t length,
                       UChar *bestPattern, int32_t capacity,
@@ -274,7 +274,7 @@
  * @return the length of bestPattern.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_getBestPatternWithOptions(UDateTimePatternGenerator *dtpg,
                                  const UChar *skeleton, int32_t length,
                                  UDateTimePatternMatchOptions options,
@@ -302,7 +302,7 @@
   * @return the length of skeleton.
   * @stable ICU 3.8
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_getSkeleton(UDateTimePatternGenerator *unusedDtpg,
                    const UChar *pattern, int32_t length,
                    UChar *skeleton, int32_t capacity,
@@ -332,7 +332,7 @@
  * @return the length of baseSkeleton.
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_getBaseSkeleton(UDateTimePatternGenerator *unusedDtpg,
                        const UChar *pattern, int32_t length,
                        UChar *baseSkeleton, int32_t capacity,
@@ -362,7 +362,7 @@
  *                  UDATPG_BASE_CONFLICT or UDATPG_CONFLICT.
  * @stable ICU 3.8
  */
-U_STABLE UDateTimePatternConflict U_EXPORT2
+U_CAPI UDateTimePatternConflict U_EXPORT2
 udatpg_addPattern(UDateTimePatternGenerator *dtpg,
                   const UChar *pattern, int32_t patternLength,
                   UBool override,
@@ -389,7 +389,7 @@
   * @param length the length of value.
   * @stable ICU 3.8
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udatpg_setAppendItemFormat(UDateTimePatternGenerator *dtpg,
                            UDateTimePatternField field,
                            const UChar *value, int32_t length);
@@ -404,7 +404,7 @@
  * @return appendItemFormat for field.
  * @stable ICU 3.8
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 udatpg_getAppendItemFormat(const UDateTimePatternGenerator *dtpg,
                            UDateTimePatternField field,
                            int32_t *pLength);
@@ -422,7 +422,7 @@
    * @param length the length of value.
    * @stable ICU 3.8
    */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udatpg_setAppendItemName(UDateTimePatternGenerator *dtpg,
                          UDateTimePatternField field,
                          const UChar *value, int32_t length);
@@ -439,7 +439,7 @@
  * @see udatpg_getFieldDisplayName
  * @stable ICU 3.8
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 udatpg_getAppendItemName(const UDateTimePatternGenerator *dtpg,
                          UDateTimePatternField field,
                          int32_t *pLength);
@@ -469,7 +469,7 @@
  *         truncated result.
  * @stable ICU 61
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_getFieldDisplayName(const UDateTimePatternGenerator *dtpg,
                            UDateTimePatternField field,
                            UDateTimePGDisplayWidth width,
@@ -499,7 +499,7 @@
  * @param length the length of dtFormat.
  * @stable ICU 3.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udatpg_setDateTimeFormat(const UDateTimePatternGenerator *dtpg,
                          const UChar *dtFormat, int32_t length);
 
@@ -510,7 +510,7 @@
  * @return dateTimeFormat.
  * @stable ICU 3.8
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 udatpg_getDateTimeFormat(const UDateTimePatternGenerator *dtpg,
                          int32_t *pLength);
 
@@ -527,7 +527,7 @@
  * @param length the length of decimal.
  * @stable ICU 3.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udatpg_setDecimal(UDateTimePatternGenerator *dtpg,
                   const UChar *decimal, int32_t length);
 
@@ -539,7 +539,7 @@
  * @return corresponding to the decimal point.
  * @stable ICU 3.8
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 udatpg_getDecimal(const UDateTimePatternGenerator *dtpg,
                   int32_t *pLength);
 
@@ -568,7 +568,7 @@
  * @return the length of dest.
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_replaceFieldTypes(UDateTimePatternGenerator *dtpg,
                          const UChar *pattern, int32_t patternLength,
                          const UChar *skeleton, int32_t skeletonLength,
@@ -605,7 +605,7 @@
  * @return the length of dest.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_replaceFieldTypesWithOptions(UDateTimePatternGenerator *dtpg,
                                     const UChar *pattern, int32_t patternLength,
                                     const UChar *skeleton, int32_t skeletonLength,
@@ -624,7 +624,7 @@
  *         The caller must close the object.
  * @stable ICU 3.8
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 udatpg_openSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode);
 
 /**
@@ -637,7 +637,7 @@
  *             The caller must close the object.
  * @stable ICU 3.8
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 udatpg_openBaseSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode);
 
 /**
@@ -650,7 +650,7 @@
  * @return pattern corresponding to a given skeleton.
  * @stable ICU 3.8
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 udatpg_getPatternForSkeleton(const UDateTimePatternGenerator *dtpg,
                              const UChar *skeleton, int32_t skeletonLength,
                              int32_t *pLength);
@@ -671,7 +671,7 @@
  * @return the default hour cycle.
  * @draft ICU 67
  */
-U_DRAFT UDateFormatHourCycle U_EXPORT2
+U_CAPI UDateFormatHourCycle U_EXPORT2
 udatpg_getDefaultHourCycle(const UDateTimePatternGenerator *dtpg, UErrorCode* pErrorCode);
 #endif  /* U_HIDE_DRAFT_API */
 
diff --git a/icu4c/source/i18n/unicode/ufieldpositer.h b/icu4c/source/i18n/unicode/ufieldpositer.h
index ba795a1..83df184 100644
--- a/icu4c/source/i18n/unicode/ufieldpositer.h
+++ b/icu4c/source/i18n/unicode/ufieldpositer.h
@@ -54,7 +54,7 @@
  *          or NULL if an error occurred.
  * @stable ICU 55
  */
-U_STABLE UFieldPositionIterator* U_EXPORT2
+U_CAPI UFieldPositionIterator* U_EXPORT2
 ufieldpositer_open(UErrorCode* status);
 
 /**
@@ -63,7 +63,7 @@
  *          A pointer to the UFieldPositionIterator object to close.
  * @stable ICU 55
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ufieldpositer_close(UFieldPositionIterator *fpositer);
 
 
@@ -114,7 +114,7 @@
  *
  * @stable ICU 55
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ufieldpositer_next(UFieldPositionIterator *fpositer,
                    int32_t *beginIndex, int32_t *endIndex);
 
diff --git a/icu4c/source/i18n/unicode/uformattable.h b/icu4c/source/i18n/unicode/uformattable.h
index 6afd949..6b8bee1 100644
--- a/icu4c/source/i18n/unicode/uformattable.h
+++ b/icu4c/source/i18n/unicode/uformattable.h
@@ -81,7 +81,7 @@
  * @see ufmt_close
  * @see icu::Formattable::Formattable()
  */
-U_STABLE UFormattable* U_EXPORT2
+U_CAPI UFormattable* U_EXPORT2
 ufmt_open(UErrorCode* status);
 
 /**
@@ -90,7 +90,7 @@
  * @stable ICU 52
  * @see ufmt_open
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ufmt_close(UFormattable* fmt);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -122,7 +122,7 @@
  * @see icu::Formattable::getType() const
  * @stable ICU 52
  */
-U_STABLE UFormattableType U_EXPORT2
+U_CAPI UFormattableType U_EXPORT2
 ufmt_getType(const UFormattable* fmt, UErrorCode *status);
 
 /**
@@ -133,7 +133,7 @@
  * @see icu::Formattable::isNumeric() const
  * @stable ICU 52
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ufmt_isNumeric(const UFormattable* fmt);
 
 /**
@@ -146,7 +146,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getDate(UErrorCode&) const
  */
-U_STABLE UDate U_EXPORT2
+U_CAPI UDate U_EXPORT2
 ufmt_getDate(const UFormattable* fmt, UErrorCode *status);
 
 /**
@@ -164,7 +164,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getDouble(UErrorCode&) const
  */
-U_STABLE double U_EXPORT2
+U_CAPI double U_EXPORT2
 ufmt_getDouble(UFormattable* fmt, UErrorCode *status);
 
 /**
@@ -185,7 +185,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getLong(UErrorCode&) const
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ufmt_getLong(UFormattable* fmt, UErrorCode *status);
 
 
@@ -206,7 +206,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getInt64(UErrorCode&) const
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 ufmt_getInt64(UFormattable* fmt, UErrorCode *status);
 
 /**
@@ -219,7 +219,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getObject() const
  */
-U_STABLE const void *U_EXPORT2
+U_CAPI const void *U_EXPORT2
 ufmt_getObject(const UFormattable* fmt, UErrorCode *status);
 
 /**
@@ -234,7 +234,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getString(UnicodeString&)const
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ufmt_getUChars(UFormattable* fmt, int32_t *len, UErrorCode *status);
 
 /**
@@ -245,7 +245,7 @@
  * @stable ICU 52
  * @see ufmt_getArrayItemByIndex
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ufmt_getArrayLength(const UFormattable* fmt, UErrorCode *status);
 
 /**
@@ -257,7 +257,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getArray(int32_t&, UErrorCode&) const
  */
-U_STABLE UFormattable * U_EXPORT2
+U_CAPI UFormattable * U_EXPORT2
 ufmt_getArrayItemByIndex(UFormattable* fmt, int32_t n, UErrorCode *status);
 
 /**
@@ -282,7 +282,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getDecimalNumber(UErrorCode&)
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ufmt_getDecNumChars(UFormattable *fmt, int32_t *len, UErrorCode *status);
 
 #endif
diff --git a/icu4c/source/i18n/unicode/uformattedvalue.h b/icu4c/source/i18n/unicode/uformattedvalue.h
index 07f4281..c358629 100644
--- a/icu4c/source/i18n/unicode/uformattedvalue.h
+++ b/icu4c/source/i18n/unicode/uformattedvalue.h
@@ -120,7 +120,7 @@
  * @return The new object, or NULL if an error occurs.
  * @stable ICU 64
  */
-U_STABLE UConstrainedFieldPosition* U_EXPORT2
+U_CAPI UConstrainedFieldPosition* U_EXPORT2
 ucfpos_open(UErrorCode* ec);
 
 
@@ -133,7 +133,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_reset(
     UConstrainedFieldPosition* ucfpos,
     UErrorCode* ec);
@@ -145,7 +145,7 @@
  * @param ucfpos The instance of UConstrainedFieldPosition.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_close(UConstrainedFieldPosition* ucfpos);
 
 
@@ -174,7 +174,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_constrainCategory(
     UConstrainedFieldPosition* ucfpos,
     int32_t category,
@@ -207,7 +207,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_constrainField(
     UConstrainedFieldPosition* ucfpos,
     int32_t category,
@@ -220,14 +220,14 @@
  *
  * If a category or field constraint was set, this function returns the constrained
  * category. Otherwise, the return value is well-defined only after
- * ufmtval_nextPosition returns TRUE.
+ * ufmtval_nextPosition returns true.
  *
  * @param ucfpos The instance of UConstrainedFieldPosition.
  * @param ec Set if an error occurs.
  * @return The field category saved in the instance.
  * @stable ICU 64
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucfpos_getCategory(
     const UConstrainedFieldPosition* ucfpos,
     UErrorCode* ec);
@@ -238,14 +238,14 @@
  *
  * If a field constraint was set, this function returns the constrained
  * field. Otherwise, the return value is well-defined only after
- * ufmtval_nextPosition returns TRUE.
+ * ufmtval_nextPosition returns true.
  *
  * @param ucfpos The instance of UConstrainedFieldPosition.
  * @param ec Set if an error occurs.
  * @return The field saved in the instance.
  * @stable ICU 64
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucfpos_getField(
     const UConstrainedFieldPosition* ucfpos,
     UErrorCode* ec);
@@ -254,7 +254,7 @@
 /**
  * Gets the INCLUSIVE start and EXCLUSIVE end index stored for the current position.
  *
- * The output values are well-defined only after ufmtval_nextPosition returns TRUE.
+ * The output values are well-defined only after ufmtval_nextPosition returns true.
  *
  * @param ucfpos The instance of UConstrainedFieldPosition.
  * @param pStart Set to the start index saved in the instance. Ignored if nullptr.
@@ -262,7 +262,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_getIndexes(
     const UConstrainedFieldPosition* ucfpos,
     int32_t* pStart,
@@ -282,7 +282,7 @@
  * @return The current iteration context from ucfpos_setInt64IterationContext.
  * @stable ICU 64
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 ucfpos_getInt64IterationContext(
     const UConstrainedFieldPosition* ucfpos,
     UErrorCode* ec);
@@ -298,7 +298,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_setInt64IterationContext(
     UConstrainedFieldPosition* ucfpos,
     int64_t context,
@@ -317,7 +317,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucfpos_matchesField(
     const UConstrainedFieldPosition* ucfpos,
     int32_t category,
@@ -341,7 +341,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_setState(
     UConstrainedFieldPosition* ucfpos,
     int32_t category,
@@ -374,7 +374,7 @@
  * @return A NUL-terminated char16 string owned by the UFormattedValue.
  * @stable ICU 64
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ufmtval_getString(
     const UFormattedValue* ufmtval,
     int32_t* pLength,
@@ -401,10 +401,10 @@
  *         see ucfpos_constrainCategory
  *         and ucfpos_constrainField.
  * @param ec Set if an error occurs.
- * @return TRUE if another position was found; FALSE otherwise.
+ * @return true if another position was found; false otherwise.
  * @stable ICU 64
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ufmtval_nextPosition(
     const UFormattedValue* ufmtval,
     UConstrainedFieldPosition* ucfpos,
diff --git a/icu4c/source/i18n/unicode/ugender.h b/icu4c/source/i18n/unicode/ugender.h
index 6ce006e..7093686 100644
--- a/icu4c/source/i18n/unicode/ugender.h
+++ b/icu4c/source/i18n/unicode/ugender.h
@@ -65,7 +65,7 @@
  * @return A UGenderInfo for the specified locale, or NULL if an error occurred.
  * @stable ICU 50
  */
-U_STABLE const UGenderInfo* U_EXPORT2
+U_CAPI const UGenderInfo* U_EXPORT2
 ugender_getInstance(const char *locale, UErrorCode *status);
 
 
@@ -78,7 +78,7 @@
  * @return The gender of the list.
  * @stable ICU 50
  */
-U_STABLE UGender U_EXPORT2
+U_CAPI UGender U_EXPORT2
 ugender_getListGender(const UGenderInfo* genderInfo, const UGender *genders, int32_t size, UErrorCode *status);
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/unicode/ulistformatter.h b/icu4c/source/i18n/unicode/ulistformatter.h
index 1431753..8334c78 100644
--- a/icu4c/source/i18n/unicode/ulistformatter.h
+++ b/icu4c/source/i18n/unicode/ulistformatter.h
@@ -62,17 +62,16 @@
     ULISTFMT_ELEMENT_FIELD
 } UListFormatterField;
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * Type of meaning expressed by the list.
  *
- * @draft ICU 67
+ * @stable ICU 67
  */
 typedef enum UListFormatterType {
     /**
      * Conjunction formatting, e.g. "Alice, Bob, Charlie, and Delta".
      *
-     * @draft ICU 67
+     * @stable ICU 67
      */
     ULISTFMT_TYPE_AND,
 
@@ -80,14 +79,14 @@
      * Disjunction (or alternative, or simply one of) formatting, e.g.
      * "Alice, Bob, Charlie, or Delta".
      *
-     * @draft ICU 67
+     * @stable ICU 67
      */
     ULISTFMT_TYPE_OR,
 
     /**
      * Formatting of a list of values with units, e.g. "5 pounds, 12 ounces".
      *
-     * @draft ICU 67
+     * @stable ICU 67
      */
     ULISTFMT_TYPE_UNITS
 } UListFormatterType;
@@ -95,29 +94,28 @@
 /**
  * Verbosity level of the list patterns.
  *
- * @draft ICU 67
+ * @stable ICU 67
  */
 typedef enum UListFormatterWidth {
     /**
      * Use list formatting with full words (no abbreviations) when possible.
      *
-     * @draft ICU 67
+     * @stable ICU 67
      */
     ULISTFMT_WIDTH_WIDE,
 
     /**
      * Use list formatting of typical length.
-     * @draft ICU 67
+     * @stable ICU 67
      */
     ULISTFMT_WIDTH_SHORT,
 
     /**
      * Use list formatting of the shortest possible length.
-     * @draft ICU 67
+     * @stable ICU 67
      */
     ULISTFMT_WIDTH_NARROW,
 } UListFormatterWidth;
-#endif /* U_HIDE_DRAFT_API */
 
 /**
  * Open a new UListFormatter object using the rules for a given locale.
@@ -141,7 +139,6 @@
 ulistfmt_open(const char*  locale,
               UErrorCode*  status);
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * Open a new UListFormatter object appropriate for the given locale, list type,
  * and style.
@@ -162,12 +159,11 @@
  * @return
  *            A pointer to a UListFormatter object for the specified locale,
  *            or NULL if an error occurred.
- * @draft ICU 67
+ * @stable ICU 67
  */
-U_DRAFT UListFormatter* U_EXPORT2
+U_CAPI UListFormatter* U_EXPORT2
 ulistfmt_openForType(const char*  locale, UListFormatterType type,
                      UListFormatterWidth width, UErrorCode*  status);
-#endif /* U_HIDE_DRAFT_API */
 
 /**
  * Close a UListFormatter object. Once closed it may no longer be used.
diff --git a/icu4c/source/i18n/unicode/ulocdata.h b/icu4c/source/i18n/unicode/ulocdata.h
index 834be98..3977743 100644
--- a/icu4c/source/i18n/unicode/ulocdata.h
+++ b/icu4c/source/i18n/unicode/ulocdata.h
@@ -90,7 +90,7 @@
  * @param status    Pointer to error status code.
  * @stable ICU 3.4
  */
-U_STABLE ULocaleData* U_EXPORT2
+U_CAPI ULocaleData* U_EXPORT2
 ulocdata_open(const char *localeID, UErrorCode *status);
 
 /**
@@ -99,7 +99,7 @@
  * @param uld       The locale data object to close
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocdata_close(ULocaleData *uld);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -132,7 +132,7 @@
  * @param setting   Value of the "no substitute" attribute.
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocdata_setNoSubstitute(ULocaleData *uld, UBool setting);
 
 /**
@@ -146,7 +146,7 @@
  * @return UBool    Value of the "no substitute" attribute.
  * @stable ICU 3.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ulocdata_getNoSubstitute(ULocaleData *uld);
 
 /**
@@ -176,7 +176,7 @@
  *                  In case of error, NULL is returned.
  * @stable ICU 3.4
  */
-U_STABLE USet* U_EXPORT2
+U_CAPI USet* U_EXPORT2
 ulocdata_getExemplarSet(ULocaleData *uld, USet *fillIn,
                         uint32_t options, ULocaleDataExemplarSetType extype, UErrorCode *status);
 
@@ -193,7 +193,7 @@
  *                      the output was truncated.
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ulocdata_getDelimiter(ULocaleData *uld, ULocaleDataDelimiterType type, UChar *result, int32_t resultLength, UErrorCode *status);
 
 /**
@@ -223,7 +223,7 @@
  * @return UMeasurementSystem the measurement system used in the locale.
  * @stable ICU 2.8
  */
-U_STABLE UMeasurementSystem U_EXPORT2
+U_CAPI UMeasurementSystem U_EXPORT2
 ulocdata_getMeasurementSystem(const char *localeID, UErrorCode *status);
 
 /**
@@ -242,7 +242,7 @@
  *                      which must not indicate a failure before the function call.
  * @stable ICU 2.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocdata_getPaperSize(const char *localeID, int32_t *height, int32_t *width, UErrorCode *status);
 
 /**
@@ -251,7 +251,7 @@
  * @param status error code - could be U_MISSING_RESOURCE_ERROR if the version was not found.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocdata_getCLDRVersion(UVersionInfo versionArray, UErrorCode *status);
 
 /**
@@ -269,7 +269,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ulocdata_getLocaleDisplayPattern(ULocaleData *uld,
                                  UChar *pattern,
                                  int32_t patternCapacity,
@@ -291,7 +291,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ulocdata_getLocaleSeparator(ULocaleData *uld,
                             UChar *separator,
                             int32_t separatorCapacity,
diff --git a/icu4c/source/i18n/unicode/umsg.h b/icu4c/source/i18n/unicode/umsg.h
index 3668234..db660db 100644
--- a/icu4c/source/i18n/unicode/umsg.h
+++ b/icu4c/source/i18n/unicode/umsg.h
@@ -178,7 +178,7 @@
  * @see u_parseMessage
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 u_formatMessage(const char  *locale,
                  const UChar *pattern,
                 int32_t     patternLength,
@@ -205,7 +205,7 @@
  * @see u_parseMessage
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 u_vformatMessage(   const char  *locale,
                     const UChar *pattern,
                     int32_t     patternLength,
@@ -230,7 +230,7 @@
  * @see u_formatMessage
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_parseMessage( const char   *locale,
                 const UChar  *pattern,
                 int32_t      patternLength,
@@ -255,7 +255,7 @@
  * @see u_formatMessage
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_vparseMessage(const char  *locale,
                 const UChar *pattern,
                 int32_t     patternLength,
@@ -284,7 +284,7 @@
  * @see u_parseMessage
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 u_formatMessageWithError(   const char    *locale,
                             const UChar   *pattern,
                             int32_t       patternLength,
@@ -313,7 +313,7 @@
  * output was truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 u_vformatMessageWithError(  const char   *locale,
                             const UChar  *pattern,
                             int32_t      patternLength,
@@ -341,7 +341,7 @@
  * @see u_formatMessage
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_parseMessageWithError(const char  *locale,
                         const UChar *pattern,
                         int32_t     patternLength,
@@ -369,7 +369,7 @@
  * @see u_formatMessage
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_vparseMessageWithError(const char  *locale,
                          const UChar *pattern,
                          int32_t     patternLength,
@@ -399,7 +399,7 @@
  *                      messages, or 0 if an error occurred. 
  * @stable ICU 2.0
  */
-U_STABLE UMessageFormat* U_EXPORT2 
+U_CAPI UMessageFormat* U_EXPORT2 
 umsg_open(  const UChar     *pattern,
             int32_t         patternLength,
             const  char     *locale,
@@ -412,7 +412,7 @@
  * @param format The formatter to close.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 umsg_close(UMessageFormat* format);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -442,7 +442,7 @@
  * @return A pointer to a UDateFormat identical to fmt.
  * @stable ICU 2.0
  */
-U_STABLE UMessageFormat U_EXPORT2 
+U_CAPI UMessageFormat U_EXPORT2 
 umsg_clone(const UMessageFormat *fmt,
            UErrorCode *status);
 
@@ -453,7 +453,7 @@
  * @param locale The locale the formatter should use.
  * @stable ICU 2.0
  */
-U_STABLE void  U_EXPORT2 
+U_CAPI void  U_EXPORT2 
 umsg_setLocale(UMessageFormat *fmt,
                const char* locale);
 
@@ -464,7 +464,7 @@
  * @return the locale.
  * @stable ICU 2.0
  */
-U_STABLE const char*  U_EXPORT2 
+U_CAPI const char*  U_EXPORT2 
 umsg_getLocale(const UMessageFormat *fmt);
 
 /**
@@ -479,7 +479,7 @@
  *                      set to a failure result.
  * @stable ICU 2.0
  */
-U_STABLE void  U_EXPORT2 
+U_CAPI void  U_EXPORT2 
 umsg_applyPattern( UMessageFormat *fmt,
                    const UChar* pattern,
                    int32_t patternLength,
@@ -497,7 +497,7 @@
  * @return the pattern of the format
  * @stable ICU 2.0
  */
-U_STABLE int32_t  U_EXPORT2 
+U_CAPI int32_t  U_EXPORT2 
 umsg_toPattern(const UMessageFormat *fmt,
                UChar* result, 
                int32_t resultLength,
@@ -518,7 +518,7 @@
  *                      the output was truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 umsg_format(    const UMessageFormat *fmt,
                 UChar          *result,
                 int32_t        resultLength,
@@ -540,7 +540,7 @@
  *                     the output was truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 umsg_vformat(   const UMessageFormat *fmt,
                 UChar          *result,
                 int32_t        resultLength,
@@ -561,7 +561,7 @@
  *                      specified in pattern.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 umsg_parse( const UMessageFormat *fmt,
             const UChar    *source,
             int32_t        sourceLength,
@@ -584,7 +584,7 @@
  * @see u_formatMessage
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 umsg_vparse(const UMessageFormat *fmt,
             const UChar    *source,
             int32_t        sourceLength,
@@ -616,7 +616,7 @@
  *        not
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 umsg_autoQuoteApostrophe(const UChar* pattern, 
                          int32_t patternLength,
                          UChar* dest,
diff --git a/icu4c/source/i18n/unicode/unirepl.h b/icu4c/source/i18n/unicode/unirepl.h
index 1ec627a..7f6edcf 100644
--- a/icu4c/source/i18n/unicode/unirepl.h
+++ b/icu4c/source/i18n/unicode/unirepl.h
@@ -77,7 +77,7 @@
      * replacer that is equal to this one.
      * @param result the string to receive the pattern.  Previous
      * contents will be deleted.
-     * @param escapeUnprintable if TRUE then convert unprintable
+     * @param escapeUnprintable if true then convert unprintable
      * character to their hex escape representations, \\uxxxx or
      * \\Uxxxxxxxx.  Unprintable characters are defined by
      * Utility.isUnprintable().
diff --git a/icu4c/source/i18n/unicode/unum.h b/icu4c/source/i18n/unicode/unum.h
index b03e846..68207a9 100644
--- a/icu4c/source/i18n/unicode/unum.h
+++ b/icu4c/source/i18n/unicode/unum.h
@@ -275,7 +275,7 @@
  *
  * <p>
  * For more detail on rounding modes, see:
- * http://userguide.icu-project.org/formatparse/numbers/rounding-modes
+ * https://unicode-org.github.io/icu/userguide/format_parse/numbers/rounding-modes
  *
  * @stable ICU 2.0
  */
@@ -395,6 +395,30 @@
 } UNumberFormatFields;
 
 
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Selectors with special numeric values to use locale default minimum grouping
+ * digits for the DecimalFormat/UNumberFormat setMinimumGroupingDigits method.
+ * Do not use these constants with the [U]NumberFormatter API.
+ *
+ * @draft ICU 68
+ */
+typedef enum UNumberFormatMinimumGroupingDigits {
+    /**
+     * Display grouping using the default strategy for all locales.
+     * @draft ICU 68
+     */
+    UNUM_MINIMUM_GROUPING_DIGITS_AUTO = -2,
+    /**
+     * Display grouping using locale defaults, except do not show grouping on
+     * values smaller than 10000 (such that there is a minimum of two digits
+     * before the first separator).
+     * @draft ICU 68
+     */
+    UNUM_MINIMUM_GROUPING_DIGITS_MIN2 = -3,
+} UNumberFormatMinimumGroupingDigits;
+#endif  // U_HIDE_DRAFT_API
+
 /**
  * Create and return a new UNumberFormat for formatting and parsing
  * numbers.  A UNumberFormat may be used to format numbers by calling
@@ -432,7 +456,7 @@
  * @see DecimalFormat
  * @stable ICU 2.0
  */
-U_STABLE UNumberFormat* U_EXPORT2 
+U_CAPI UNumberFormat* U_EXPORT2 
 unum_open(  UNumberFormatStyle    style,
             const    UChar*    pattern,
             int32_t            patternLength,
@@ -447,7 +471,7 @@
 * @param fmt The formatter to close.
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 unum_close(UNumberFormat* fmt);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -477,7 +501,7 @@
  * @return A pointer to a UNumberFormat identical to fmt.
  * @stable ICU 2.0
  */
-U_STABLE UNumberFormat* U_EXPORT2 
+U_CAPI UNumberFormat* U_EXPORT2 
 unum_clone(const UNumberFormat *fmt,
        UErrorCode *status);
 
@@ -505,7 +529,7 @@
 * @see UFieldPosition
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_format(    const    UNumberFormat*    fmt,
         int32_t            number,
         UChar*            result,
@@ -537,7 +561,7 @@
 * @see UFieldPosition
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_formatInt64(const UNumberFormat *fmt,
         int64_t         number,
         UChar*          result,
@@ -569,7 +593,7 @@
 * @see UFieldPosition
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_formatDouble(    const    UNumberFormat*  fmt,
             double          number,
             UChar*          result,
@@ -619,7 +643,7 @@
 * @see UNumberFormatFields
 * @stable ICU 59
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unum_formatDoubleForFields(const UNumberFormat* format,
                            double number,
                            UChar* result,
@@ -656,7 +680,7 @@
 * @see UFieldPosition
 * @stable ICU 4.4 
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_formatDecimal(    const    UNumberFormat*  fmt,
             const char *    number,
             int32_t         length,
@@ -689,7 +713,7 @@
  * @see UFieldPosition
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unum_formatDoubleCurrency(const UNumberFormat* fmt,
                           double number,
                           UChar* currency,
@@ -718,7 +742,7 @@
  * @see unum_parseToUFormattable
  * @stable ICU 52
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unum_formatUFormattable(const UNumberFormat* fmt,
                         const UFormattable *number,
                         UChar *result,
@@ -745,7 +769,7 @@
 * @see unum_formatDouble
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_parse(    const   UNumberFormat*  fmt,
         const   UChar*          text,
         int32_t         textLength,
@@ -771,7 +795,7 @@
 * @see unum_formatDouble
 * @stable ICU 2.8
 */
-U_STABLE int64_t U_EXPORT2 
+U_CAPI int64_t U_EXPORT2 
 unum_parseInt64(const UNumberFormat*  fmt,
         const UChar*  text,
         int32_t       textLength,
@@ -797,7 +821,7 @@
 * @see unum_formatDouble
 * @stable ICU 2.0
 */
-U_STABLE double U_EXPORT2 
+U_CAPI double U_EXPORT2 
 unum_parseDouble(    const   UNumberFormat*  fmt,
             const   UChar*          text,
             int32_t         textLength,
@@ -832,7 +856,7 @@
 * @see unum_formatDouble
 * @stable ICU 4.4
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_parseDecimal(const   UNumberFormat*  fmt,
                  const   UChar*          text,
                          int32_t         textLength,
@@ -860,7 +884,7 @@
  * @see unum_formatDoubleCurrency
  * @stable ICU 3.0
  */
-U_STABLE double U_EXPORT2
+U_CAPI double U_EXPORT2
 unum_parseDoubleCurrency(const UNumberFormat* fmt,
                          const UChar* text,
                          int32_t textLength,
@@ -888,7 +912,7 @@
  * @see ufmt_close
  * @stable ICU 52
  */
-U_STABLE UFormattable* U_EXPORT2
+U_CAPI UFormattable* U_EXPORT2
 unum_parseToUFormattable(const UNumberFormat* fmt,
                          UFormattable *result,
                          const UChar* text,
@@ -901,7 +925,7 @@
  * on a DecimalFormat, other formats return U_UNSUPPORTED_ERROR
  * in the status.
  * @param format The formatter to set.
- * @param localized TRUE if the pattern is localized, FALSE otherwise.
+ * @param localized true if the pattern is localized, false otherwise.
  * @param pattern The new pattern
  * @param patternLength The length of pattern, or -1 if null-terminated.
  * @param parseError A pointer to UParseError to receive information
@@ -912,7 +936,7 @@
  * @see DecimalFormat
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 unum_applyPattern(          UNumberFormat  *format,
                             UBool          localized,
                     const   UChar          *pattern,
@@ -931,7 +955,7 @@
 * @see unum_countAvailable
 * @stable ICU 2.0
 */
-U_STABLE const char* U_EXPORT2 
+U_CAPI const char* U_EXPORT2 
 unum_getAvailable(int32_t localeIndex);
 
 /**
@@ -943,7 +967,7 @@
 * @see unum_getAvailable
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_countAvailable(void);
 
 #if UCONFIG_HAVE_PARSEALLINPUT
@@ -1124,7 +1148,7 @@
 * @see unum_setTextAttribute
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_getAttribute(const UNumberFormat*          fmt,
           UNumberFormatAttribute  attr);
 
@@ -1147,7 +1171,7 @@
 * @see unum_setTextAttribute
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 unum_setAttribute(    UNumberFormat*          fmt,
             UNumberFormatAttribute  attr,
             int32_t                 newValue);
@@ -1167,7 +1191,7 @@
 * @see unum_setTextAttribute
 * @stable ICU 2.0
 */
-U_STABLE double U_EXPORT2 
+U_CAPI double U_EXPORT2 
 unum_getDoubleAttribute(const UNumberFormat*          fmt,
           UNumberFormatAttribute  attr);
 
@@ -1185,7 +1209,7 @@
 * @see unum_setTextAttribute
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 unum_setDoubleAttribute(    UNumberFormat*          fmt,
             UNumberFormatAttribute  attr,
             double                 newValue);
@@ -1242,7 +1266,7 @@
 * @see unum_setAttribute
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_getTextAttribute(    const    UNumberFormat*                    fmt,
             UNumberFormatTextAttribute      tag,
             UChar*                            result,
@@ -1265,7 +1289,7 @@
 * @see unum_setAttribute
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 unum_setTextAttribute(    UNumberFormat*                    fmt,
             UNumberFormatTextAttribute      tag,
             const    UChar*                            newValue,
@@ -1276,8 +1300,8 @@
  * Extract the pattern from a UNumberFormat.  The pattern will follow
  * the DecimalFormat pattern syntax.
  * @param fmt The formatter to query.
- * @param isPatternLocalized TRUE if the pattern should be localized,
- * FALSE otherwise.  This is ignored if the formatter is a rule-based
+ * @param isPatternLocalized true if the pattern should be localized,
+ * false otherwise.  This is ignored if the formatter is a rule-based
  * formatter.
  * @param result A pointer to a buffer to receive the pattern.
  * @param resultLength The maximum size of result.
@@ -1288,7 +1312,7 @@
  * @see DecimalFormat
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_toPattern(    const    UNumberFormat*          fmt,
         UBool                  isPatternLocalized,
         UChar*                  result,
@@ -1407,7 +1431,7 @@
 * @see unum_setSymbol
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unum_getSymbol(const UNumberFormat *fmt,
                UNumberFormatSymbol symbol,
                UChar *buffer,
@@ -1427,7 +1451,7 @@
 * @see unum_getSymbol
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unum_setSymbol(UNumberFormat *fmt,
                UNumberFormatSymbol symbol,
                const UChar *value,
@@ -1444,7 +1468,7 @@
  * @return the locale name
  * @stable ICU 2.8
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 unum_getLocaleByType(const UNumberFormat *fmt,
                      ULocDataLocaleType type,
                      UErrorCode* status); 
@@ -1457,7 +1481,7 @@
  * @param status A pointer to an UErrorCode to receive any errors
  * @stable ICU 53
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unum_setContext(UNumberFormat* fmt, UDisplayContext value, UErrorCode* status);
 
 /**
@@ -1469,7 +1493,7 @@
  * @return The UDisplayContextValue for the specified type.
  * @stable ICU 53
  */
-U_STABLE UDisplayContext U_EXPORT2
+U_CAPI UDisplayContext U_EXPORT2
 unum_getContext(const UNumberFormat *fmt, UDisplayContextType type, UErrorCode* status);
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/unicode/unumberformatter.h b/icu4c/source/i18n/unicode/unumberformatter.h
index af98ba0..754987a 100644
--- a/icu4c/source/i18n/unicode/unumberformatter.h
+++ b/icu4c/source/i18n/unicode/unumberformatter.h
@@ -1,11 +1,12 @@
 // © 2018 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
+#ifndef __UNUMBERFORMATTER_H__
+#define __UNUMBERFORMATTER_H__
+
 #include "unicode/utypes.h"
 
 #if !UCONFIG_NO_FORMATTING
-#ifndef __UNUMBERFORMATTER_H__
-#define __UNUMBERFORMATTER_H__
 
 #include "unicode/parseerr.h"
 #include "unicode/ufieldpositer.h"
@@ -147,6 +148,30 @@
      */
             UNUM_UNIT_WIDTH_ISO_CODE,
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Use the formal variant of the currency symbol; for example, "NT$" for the New Taiwan
+     * dollar in zh-TW.
+     *
+     * <p>
+     * Behavior of this option with non-currency units is not defined at this time.
+     *
+     * @draft ICU 68
+     */
+            UNUM_UNIT_WIDTH_FORMAL,
+
+    /**
+     * Use the alternate variant of the currency symbol; for example, "TL" for the Turkish
+     * lira (TRY).
+     *
+     * <p>
+     * Behavior of this option with non-currency units is not defined at this time.
+     *
+     * @draft ICU 68
+     */
+            UNUM_UNIT_WIDTH_VARIANT,
+#endif  // U_HIDE_DRAFT_API
+
     /**
      * Format the number according to the specified unit, but do not display the unit. For currencies, apply
      * monetary symbols and formats as with SHORT, but omit the currency symbol. For measure units, the behavior is
@@ -432,7 +457,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE UNumberFormatter* U_EXPORT2
+U_CAPI UNumberFormatter* U_EXPORT2
 unumf_openForSkeletonAndLocale(const UChar* skeleton, int32_t skeletonLen, const char* locale,
                                UErrorCode* ec);
 
@@ -449,7 +474,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE UNumberFormatter* U_EXPORT2
+U_CAPI UNumberFormatter* U_EXPORT2
 unumf_openForSkeletonAndLocaleWithError(
        const UChar* skeleton, int32_t skeletonLen, const char* locale, UParseError* perror, UErrorCode* ec);
 
@@ -462,7 +487,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE UFormattedNumber* U_EXPORT2
+U_CAPI UFormattedNumber* U_EXPORT2
 unumf_openResult(UErrorCode* ec);
 
 
@@ -481,7 +506,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumf_formatInt(const UNumberFormatter* uformatter, int64_t value, UFormattedNumber* uresult,
                 UErrorCode* ec);
 
@@ -501,7 +526,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumf_formatDouble(const UNumberFormatter* uformatter, double value, UFormattedNumber* uresult,
                    UErrorCode* ec);
 
@@ -525,7 +550,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumf_formatDecimal(const UNumberFormatter* uformatter, const char* value, int32_t valueLen,
                     UFormattedNumber* uresult, UErrorCode* ec);
 
@@ -543,7 +568,7 @@
  * @return A UFormattedValue owned by the input object.
  * @stable ICU 64
  */
-U_STABLE const UFormattedValue* U_EXPORT2
+U_CAPI const UFormattedValue* U_EXPORT2
 unumf_resultAsValue(const UFormattedNumber* uresult, UErrorCode* ec);
 
 
@@ -566,7 +591,7 @@
  * @return The required length.
  * @stable ICU 62
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unumf_resultToString(const UFormattedNumber* uresult, UChar* buffer, int32_t bufferCapacity,
                      UErrorCode* ec);
 
@@ -600,11 +625,11 @@
  *            "beginIndex" field is set to the beginning of the first occurrence of the field after the
  *            input "endIndex", and "endIndex" is set to the end of that occurrence of the field
  *            (exclusive index). If a field position is not found, the FieldPosition is not changed and
- *            the method returns FALSE.
+ *            the method returns false.
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unumf_resultNextFieldPosition(const UFormattedNumber* uresult, UFieldPosition* ufpos, UErrorCode* ec);
 
 
@@ -629,16 +654,37 @@
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumf_resultGetAllFieldPositions(const UFormattedNumber* uresult, UFieldPositionIterator* ufpositer,
                                  UErrorCode* ec);
 
 
-// TODO(ICU-20775): Propose this as API.
-// NOTE: This is not currently implemented.
-// U_DRAFT int32_t U_EXPORT2
-// unumf_resultToDecimalNumber(const UFormattedNumber* uresult, char* buffer, int32_t bufferCapacity,
-//                             UErrorCode* ec);
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Extracts the formatted number as a "numeric string" conforming to the
+ * syntax defined in the Decimal Arithmetic Specification, available at
+ * http://speleotrove.com/decimal
+ *
+ * This endpoint is useful for obtaining the exact number being printed
+ * after scaling and rounding have been applied by the number formatter.
+ *
+ * @param uresult        The input object containing the formatted number.
+ * @param  dest          the 8-bit char buffer into which the decimal number is placed
+ * @param  destCapacity  The size, in chars, of the destination buffer.  May be zero
+ *                       for precomputing the required size.
+ * @param  ec            receives any error status.
+ *                       If U_BUFFER_OVERFLOW_ERROR: Returns number of chars for
+ *                       preflighting.
+ * @return Number of chars in the data.  Does not include a trailing NUL.
+ * @draft ICU 68
+ */
+U_CAPI int32_t U_EXPORT2
+unumf_resultToDecimalNumber(
+       const UFormattedNumber* uresult,
+       char* dest,
+       int32_t destCapacity,
+       UErrorCode* ec);
+#endif // U_HIDE_DRAFT_API
 
 
 /**
@@ -647,7 +693,7 @@
  * @param uformatter An object created by unumf_openForSkeletonAndLocale().
  * @stable ICU 62
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumf_close(UNumberFormatter* uformatter);
 
 
@@ -657,7 +703,7 @@
  * @param uresult An object created by unumf_openResult().
  * @stable ICU 62
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumf_closeResult(UFormattedNumber* uresult);
 
 
@@ -701,5 +747,5 @@
 U_NAMESPACE_END
 #endif // U_SHOW_CPLUSPLUS_API
 
-#endif //__UNUMBERFORMATTER_H__
 #endif /* #if !UCONFIG_NO_FORMATTING */
+#endif //__UNUMBERFORMATTER_H__
diff --git a/icu4c/source/i18n/unicode/unumberrangeformatter.h b/icu4c/source/i18n/unicode/unumberrangeformatter.h
new file mode 100644
index 0000000..e28fe51
--- /dev/null
+++ b/icu4c/source/i18n/unicode/unumberrangeformatter.h
@@ -0,0 +1,477 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#ifndef __UNUMBERRANGEFORMATTER_H__
+#define __UNUMBERRANGEFORMATTER_H__
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "unicode/parseerr.h"
+#include "unicode/ufieldpositer.h"
+#include "unicode/umisc.h"
+#include "unicode/uformattedvalue.h"
+#include "unicode/uformattable.h"
+
+
+/**
+ * \file
+ * \brief C-compatible API for localized number range formatting.
+ *
+ * This is the C-compatible version of the NumberRangeFormatter API. C++ users
+ * should include unicode/numberrangeformatter.h and use the proper C++ APIs.
+ *
+ * First create a UNumberRangeFormatter, which is immutable, and then format to
+ * a UFormattedNumberRange.
+ *
+ * Example code:
+ * <pre>
+ * // Setup:
+ * UErrorCode ec = U_ZERO_ERROR;
+ * UNumberRangeFormatter* uformatter = unumrf_openForSkeletonCollapseIdentityFallbackAndLocaleWithError(
+ *     u"currency/USD precision-integer",
+ *     -1,
+ *     UNUM_RANGE_COLLAPSE_AUTO,
+ *     UNUM_IDENTITY_FALLBACK_APPROXIMATELY,
+ *     "en-US",
+ *     NULL,
+ *     &ec);
+ * UFormattedNumberRange* uresult = unumrf_openResult(&ec);
+ * if (U_FAILURE(ec)) { return; }
+ *
+ * // Format a double range:
+ * unumrf_formatDoubleRange(uformatter, 3.0, 5.0, uresult, &ec);
+ * if (U_FAILURE(ec)) { return; }
+ *
+ * // Get the result string:
+ * int32_t len;
+ * const UChar* str = ufmtval_getString(unumrf_resultAsValue(uresult, &ec), &len, &ec);
+ * if (U_FAILURE(ec)) { return; }
+ * // str should equal "$3 – $5"
+ *
+ * // Cleanup:
+ * unumf_close(uformatter);
+ * unumf_closeResult(uresult);
+ * </pre>
+ *
+ * If you are a C++ user linking against the C libraries, you can use the LocalPointer versions of these
+ * APIs. The following example uses LocalPointer with the decimal number and field position APIs:
+ *
+ * <pre>
+ * // Setup:
+ * LocalUNumberRangeFormatterPointer uformatter(
+ *     unumrf_openForSkeletonCollapseIdentityFallbackAndLocaleWithError(...));
+ * LocalUFormattedNumberRangePointer uresult(unumrf_openResult(&ec));
+ * if (U_FAILURE(ec)) { return; }
+ *
+ * // Format a double number range:
+ * unumrf_formatDoubleRange(uformatter.getAlias(), 3.0, 5.0, uresult.getAlias(), &ec);
+ * if (U_FAILURE(ec)) { return; }
+ *
+ * // No need to do any cleanup since we are using LocalPointer.
+ * </pre>
+ *
+ * You can also get field positions. For more information, see uformattedvalue.h.
+ */
+
+/**
+ * Defines how to merge fields that are identical across the range sign.
+ *
+ * @stable ICU 63
+ */
+typedef enum UNumberRangeCollapse {
+    /**
+     * Use locale data and heuristics to determine how much of the string to collapse. Could end up collapsing none,
+     * some, or all repeated pieces in a locale-sensitive way.
+     *
+     * The heuristics used for this option are subject to change over time.
+     *
+     * @stable ICU 63
+     */
+    UNUM_RANGE_COLLAPSE_AUTO,
+
+    /**
+     * Do not collapse any part of the number. Example: "3.2 thousand kilograms – 5.3 thousand kilograms"
+     *
+     * @stable ICU 63
+     */
+    UNUM_RANGE_COLLAPSE_NONE,
+
+    /**
+     * Collapse the unit part of the number, but not the notation, if present. Example: "3.2 thousand – 5.3 thousand
+     * kilograms"
+     *
+     * @stable ICU 63
+     */
+    UNUM_RANGE_COLLAPSE_UNIT,
+
+    /**
+     * Collapse any field that is equal across the range sign. May introduce ambiguity on the magnitude of the
+     * number. Example: "3.2 – 5.3 thousand kilograms"
+     *
+     * @stable ICU 63
+     */
+    UNUM_RANGE_COLLAPSE_ALL
+} UNumberRangeCollapse;
+
+/**
+ * Defines the behavior when the two numbers in the range are identical after rounding. To programmatically detect
+ * when the identity fallback is used, compare the lower and upper BigDecimals via FormattedNumber.
+ *
+ * @stable ICU 63
+ * @see NumberRangeFormatter
+ */
+typedef enum UNumberRangeIdentityFallback {
+    /**
+     * Show the number as a single value rather than a range. Example: "$5"
+     *
+     * @stable ICU 63
+     */
+    UNUM_IDENTITY_FALLBACK_SINGLE_VALUE,
+
+    /**
+     * Show the number using a locale-sensitive approximation pattern. If the numbers were the same before rounding,
+     * show the single value. Example: "~$5" or "$5"
+     *
+     * @stable ICU 63
+     */
+    UNUM_IDENTITY_FALLBACK_APPROXIMATELY_OR_SINGLE_VALUE,
+
+    /**
+     * Show the number using a locale-sensitive approximation pattern. Use the range pattern always, even if the
+     * inputs are the same. Example: "~$5"
+     *
+     * @stable ICU 63
+     */
+    UNUM_IDENTITY_FALLBACK_APPROXIMATELY,
+
+    /**
+     * Show the number as the range of two equal values. Use the range pattern always, even if the inputs are the
+     * same. Example (with RangeCollapse.NONE): "$5 – $5"
+     *
+     * @stable ICU 63
+     */
+    UNUM_IDENTITY_FALLBACK_RANGE
+} UNumberRangeIdentityFallback;
+
+/**
+ * Used in the result class FormattedNumberRange to indicate to the user whether the numbers formatted in the range
+ * were equal or not, and whether or not the identity fallback was applied.
+ *
+ * @stable ICU 63
+ * @see NumberRangeFormatter
+ */
+typedef enum UNumberRangeIdentityResult {
+    /**
+     * Used to indicate that the two numbers in the range were equal, even before any rounding rules were applied.
+     *
+     * @stable ICU 63
+     * @see NumberRangeFormatter
+     */
+    UNUM_IDENTITY_RESULT_EQUAL_BEFORE_ROUNDING,
+
+    /**
+     * Used to indicate that the two numbers in the range were equal, but only after rounding rules were applied.
+     *
+     * @stable ICU 63
+     * @see NumberRangeFormatter
+     */
+    UNUM_IDENTITY_RESULT_EQUAL_AFTER_ROUNDING,
+
+    /**
+     * Used to indicate that the two numbers in the range were not equal, even after rounding rules were applied.
+     *
+     * @stable ICU 63
+     * @see NumberRangeFormatter
+     */
+    UNUM_IDENTITY_RESULT_NOT_EQUAL,
+
+#ifndef U_HIDE_INTERNAL_API
+    /**
+     * The number of entries in this enum.
+     * @internal
+     */
+    UNUM_IDENTITY_RESULT_COUNT
+#endif
+
+} UNumberRangeIdentityResult;
+
+
+#ifndef U_HIDE_DRAFT_API
+
+struct UNumberRangeFormatter;
+/**
+ * C-compatible version of icu::number::LocalizedNumberRangeFormatter.
+ *
+ * NOTE: This is a C-compatible API; C++ users should build against numberrangeformatter.h instead.
+ *
+ * @draft ICU 68
+ */
+typedef struct UNumberRangeFormatter UNumberRangeFormatter;
+
+
+struct UFormattedNumberRange;
+/**
+ * C-compatible version of icu::number::FormattedNumberRange.
+ *
+ * NOTE: This is a C-compatible API; C++ users should build against numberrangeformatter.h instead.
+ *
+ * @draft ICU 68
+ */
+typedef struct UFormattedNumberRange UFormattedNumberRange;
+
+
+/**
+ * Creates a new UNumberFormatter for the given skeleton string, collapse option, identity fallback
+ * option, and locale. This is currently the only method for creating a new UNumberRangeFormatter.
+ *
+ * Objects of type UNumberRangeFormatter returned by this method are threadsafe.
+ *
+ * For more details on skeleton strings, see the documentation in numberrangeformatter.h. For more
+ * details on the usage of this API, see the documentation at the top of unumberrangeformatter.h.
+ *
+ * NOTE: This is a C-compatible API; C++ users should build against numberrangeformatter.h instead.
+ *
+ * @param skeleton The skeleton string, like u"percent precision-integer"
+ * @param skeletonLen The number of UChars in the skeleton string, or -1 if it is NUL-terminated.
+ * @param collapse Option for how to merge affixes (if unsure, use UNUM_RANGE_COLLAPSE_AUTO)
+ * @param identityFallback Option for resolving when both sides of the range are equal.
+ * @param locale The NUL-terminated locale ID.
+ * @param perror A parse error struct populated if an error occurs when parsing. Can be NULL.
+ *               If no error occurs, perror->offset will be set to -1.
+ * @param ec Set if an error occurs.
+ * @draft ICU 68
+ */
+U_CAPI UNumberRangeFormatter* U_EXPORT2
+unumrf_openForSkeletonWithCollapseAndIdentityFallback(
+    const UChar* skeleton,
+    int32_t skeletonLen,
+    UNumberRangeCollapse collapse,
+    UNumberRangeIdentityFallback identityFallback,
+    const char* locale,
+    UParseError* perror,
+    UErrorCode* ec);
+
+
+/**
+ * Creates an object to hold the result of a UNumberRangeFormatter
+ * operation. The object can be used repeatedly; it is cleared whenever
+ * passed to a format function.
+ *
+ * @param ec Set if an error occurs.
+ * @draft ICU 68
+ */
+U_CAPI UFormattedNumberRange* U_EXPORT2
+unumrf_openResult(UErrorCode* ec);
+
+
+/**
+ * Uses a UNumberRangeFormatter to format a range of doubles.
+ *
+ * The UNumberRangeFormatter can be shared between threads. Each thread should have its own local
+ * UFormattedNumberRange, however, for storing the result of the formatting operation.
+ *
+ * NOTE: This is a C-compatible API; C++ users should build against numberrangeformatter.h instead.
+ *
+ * @param uformatter A formatter object; see unumberrangeformatter.h.
+ * @param first The first (usually smaller) number in the range.
+ * @param second The second (usually larger) number in the range.
+ * @param uresult The object that will be mutated to store the result; see unumrf_openResult.
+ * @param ec Set if an error occurs.
+ * @draft ICU 68
+ */
+U_CAPI void U_EXPORT2
+unumrf_formatDoubleRange(
+    const UNumberRangeFormatter* uformatter,
+    double first,
+    double second,
+    UFormattedNumberRange* uresult,
+    UErrorCode* ec);
+
+
+/**
+ * Uses a UNumberRangeFormatter to format a range of decimal numbers.
+ *
+ * With a decimal number string, you can specify an input with arbitrary precision.
+ *
+ * The UNumberRangeFormatter can be shared between threads. Each thread should have its own local
+ * UFormattedNumberRange, however, for storing the result of the formatting operation.
+ *
+ * NOTE: This is a C-compatible API; C++ users should build against numberrangeformatter.h instead.
+ *
+ * @param uformatter A formatter object; see unumberrangeformatter.h.
+ * @param first The first (usually smaller) number in the range.
+ * @param firstLen The length of the first decimal number string.
+ * @param second The second (usually larger) number in the range.
+ * @param secondLen The length of the second decimal number string.
+ * @param uresult The object that will be mutated to store the result; see unumrf_openResult.
+ * @param ec Set if an error occurs.
+ * @draft ICU 68
+ */
+U_CAPI void U_EXPORT2
+unumrf_formatDecimalRange(
+    const UNumberRangeFormatter* uformatter,
+    const char* first,
+    int32_t firstLen,
+    const char* second,
+    int32_t secondLen,
+    UFormattedNumberRange* uresult,
+    UErrorCode* ec);
+
+
+/**
+ * Returns a representation of a UFormattedNumberRange as a UFormattedValue,
+ * which can be subsequently passed to any API requiring that type.
+ *
+ * The returned object is owned by the UFormattedNumberRange and is valid
+ * only as long as the UFormattedNumber is present and unchanged in memory.
+ *
+ * You can think of this method as a cast between types.
+ *
+ * @param uresult The object containing the formatted number range.
+ * @param ec Set if an error occurs.
+ * @return A UFormattedValue owned by the input object.
+ * @draft ICU 68
+ */
+U_CAPI const UFormattedValue* U_EXPORT2
+unumrf_resultAsValue(const UFormattedNumberRange* uresult, UErrorCode* ec);
+
+
+/**
+ * Extracts the identity result from a UFormattedNumberRange.
+ *
+ * NOTE: This is a C-compatible API; C++ users should build against numberformatter.h instead.
+ *
+ * @param uresult The object containing the formatted number range.
+ * @param ec Set if an error occurs.
+ * @return The identity result; see UNumberRangeIdentityResult.
+ * @draft ICU 68
+ */
+U_CAPI UNumberRangeIdentityResult U_EXPORT2
+unumrf_resultGetIdentityResult(
+    const UFormattedNumberRange* uresult,
+    UErrorCode* ec);
+
+
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Extracts the first formatted number as a decimal number. This endpoint
+ * is useful for obtaining the exact number being printed after scaling
+ * and rounding have been applied by the number range formatting pipeline.
+ * 
+ * The syntax of the unformatted number is a "numeric string"
+ * as defined in the Decimal Arithmetic Specification, available at
+ * http://speleotrove.com/decimal
+ *
+ * @param  uresult       The input object containing the formatted number range.
+ * @param  dest          the 8-bit char buffer into which the decimal number is placed
+ * @param  destCapacity  The size, in chars, of the destination buffer.  May be zero
+ *                       for precomputing the required size.
+ * @param  ec            receives any error status.
+ *                       If U_BUFFER_OVERFLOW_ERROR: Returns number of chars for
+ *                       preflighting.
+ * @return Number of chars in the data.  Does not include a trailing NUL.
+ * @draft ICU 68
+ */
+U_CAPI int32_t U_EXPORT2
+unumrf_resultGetFirstDecimalNumber(
+    const UFormattedNumberRange* uresult,
+    char* dest,
+    int32_t destCapacity,
+    UErrorCode* ec);
+
+
+/**
+ * Extracts the second formatted number as a decimal number. This endpoint
+ * is useful for obtaining the exact number being printed after scaling
+ * and rounding have been applied by the number range formatting pipeline.
+ * 
+ * The syntax of the unformatted number is a "numeric string"
+ * as defined in the Decimal Arithmetic Specification, available at
+ * http://speleotrove.com/decimal
+ *
+ * @param  uresult       The input object containing the formatted number range.
+ * @param  dest          the 8-bit char buffer into which the decimal number is placed
+ * @param  destCapacity  The size, in chars, of the destination buffer.  May be zero
+ *                       for precomputing the required size.
+ * @param  ec            receives any error status.
+ *                       If U_BUFFER_OVERFLOW_ERROR: Returns number of chars for
+ *                       preflighting.
+ * @return Number of chars in the data.  Does not include a trailing NUL.
+ * @draft ICU 68
+ */
+U_CAPI int32_t U_EXPORT2
+unumrf_resultGetSecondDecimalNumber(
+    const UFormattedNumberRange* uresult,
+    char* dest,
+    int32_t destCapacity,
+    UErrorCode* ec);
+#endif // U_HIDE_DRAFT_API
+
+
+/**
+ * Releases the UNumberFormatter created by unumf_openForSkeletonAndLocale().
+ *
+ * @param uformatter An object created by unumf_openForSkeletonAndLocale().
+ * @draft ICU 68
+ */
+U_CAPI void U_EXPORT2
+unumrf_close(UNumberRangeFormatter* uformatter);
+
+
+/**
+ * Releases the UFormattedNumber created by unumf_openResult().
+ *
+ * @param uresult An object created by unumf_openResult().
+ * @draft ICU 68
+ */
+U_CAPI void U_EXPORT2
+unumrf_closeResult(UFormattedNumberRange* uresult);
+
+
+#if U_SHOW_CPLUSPLUS_API
+U_NAMESPACE_BEGIN
+
+/**
+ * \class LocalUNumberRangeFormatterPointer
+ * "Smart pointer" class; closes a UNumberFormatter via unumf_close().
+ * For most methods see the LocalPointerBase base class.
+ *
+ * Usage:
+ * <pre>
+ * LocalUNumberRangeFormatterPointer uformatter(
+ *     unumrf_openForSkeletonCollapseIdentityFallbackAndLocaleWithError(...));
+ * // no need to explicitly call unumrf_close()
+ * </pre>
+ *
+ * @see LocalPointerBase
+ * @see LocalPointer
+ * @draft ICU 68
+ */
+U_DEFINE_LOCAL_OPEN_POINTER(LocalUNumberRangeFormatterPointer, UNumberRangeFormatter, unumrf_close);
+
+/**
+ * \class LocalUFormattedNumberPointer
+ * "Smart pointer" class; closes a UFormattedNumber via unumf_closeResult().
+ * For most methods see the LocalPointerBase base class.
+ *
+ * Usage:
+ * <pre>
+ * LocalUFormattedNumberRangePointer uresult(unumrf_openResult(...));
+ * // no need to explicitly call unumrf_closeResult()
+ * </pre>
+ *
+ * @see LocalPointerBase
+ * @see LocalPointer
+ * @draft ICU 68
+ */
+U_DEFINE_LOCAL_OPEN_POINTER(LocalUFormattedNumberRangePointer, UFormattedNumberRange, unumrf_closeResult);
+
+U_NAMESPACE_END
+#endif // U_SHOW_CPLUSPLUS_API
+
+#endif // U_HIDE_DRAFT_API
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+#endif //__UNUMBERRANGEFORMATTER_H__
diff --git a/icu4c/source/i18n/unicode/unumsys.h b/icu4c/source/i18n/unicode/unumsys.h
index d459e80..fe713ea 100644
--- a/icu4c/source/i18n/unicode/unumsys.h
+++ b/icu4c/source/i18n/unicode/unumsys.h
@@ -57,7 +57,7 @@
  *                  occurred.
  * @stable ICU 52
  */
-U_STABLE UNumberingSystem * U_EXPORT2
+U_CAPI UNumberingSystem * U_EXPORT2
 unumsys_open(const char *locale, UErrorCode *status);
 
 /**
@@ -78,7 +78,7 @@
  *                  occurred.
  * @stable ICU 52
  */
-U_STABLE UNumberingSystem * U_EXPORT2
+U_CAPI UNumberingSystem * U_EXPORT2
 unumsys_openByName(const char *name, UErrorCode *status);
 
 /**
@@ -86,7 +86,7 @@
  * @param unumsys   The UNumberingSystem object to close.
  * @stable ICU 52
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumsys_close(UNumberingSystem *unumsys);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -114,7 +114,7 @@
  *                  or NULL if an error occurred.
  * @stable ICU 52
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 unumsys_openAvailableNames(UErrorCode *status);
 
 /**
@@ -126,18 +126,18 @@
  *                  is only valid for the lifetime of the UNumberingSystem object.
  * @stable ICU 52
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 unumsys_getName(const UNumberingSystem *unumsys);
 
 /**
  * Returns whether the given UNumberingSystem object is for an algorithmic (not purely
  * positional) system.
  * @param unumsys   The UNumberingSystem whose algorithmic status is desired.
- * @return          TRUE if the specified UNumberingSystem object is for an algorithmic
+ * @return          true if the specified UNumberingSystem object is for an algorithmic
  *                  system.
  * @stable ICU 52
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unumsys_isAlgorithmic(const UNumberingSystem *unumsys);
 
 /**
@@ -148,7 +148,7 @@
  * @return          The radix of the specified UNumberingSystem object.
  * @stable ICU 52
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unumsys_getRadix(const UNumberingSystem *unumsys);
 
 /**
@@ -167,7 +167,7 @@
  *                  output was truncated.
  * @stable ICU 52
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unumsys_getDescription(const UNumberingSystem *unumsys, UChar *result,
                        int32_t resultLength, UErrorCode *status);
 
diff --git a/icu4c/source/i18n/unicode/upluralrules.h b/icu4c/source/i18n/unicode/upluralrules.h
index ec8cc81..71a45dd 100644
--- a/icu4c/source/i18n/unicode/upluralrules.h
+++ b/icu4c/source/i18n/unicode/upluralrules.h
@@ -26,6 +26,7 @@
 
 // Forward-declaration
 struct UFormattedNumber;
+struct UFormattedNumberRange;
 
 /**
  * \file
@@ -167,7 +168,7 @@
  * @param uplrules The UPluralRules object specifying the rules.
  * @param number The formatted number for which the rule has to be determined.
  * @param keyword The destination buffer for the keyword of the rule that
- *         applies to number.
+ *         applies to the number.
  * @param capacity The capacity of the keyword buffer.
  * @param status A pointer to a UErrorCode to receive any errors.
  * @return The length of the keyword.
@@ -179,6 +180,29 @@
                UChar *keyword, int32_t capacity,
                UErrorCode *status);
 
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Given a formatted number range, returns the overall plural form of the
+ * range. For example, "3-5" returns "other" in English.
+ *
+ * To get a UFormattedNumberRange, see UNumberRangeFormatter.
+ *
+ * @param uplrules The UPluralRules object specifying the rules.
+ * @param urange The number range onto which the rules will be applied.
+ * @param keyword The destination buffer for the keyword of the rule that
+ *         applies to the number range.
+ * @param capacity The capacity of the keyword buffer.
+ * @param status A pointer to a UErrorCode to receive any errors.
+ * @return The length of the keyword.
+ * @draft ICU 68
+ */
+U_CAPI int32_t U_EXPORT2
+uplrules_selectForRange(const UPluralRules *uplrules,
+               const struct UFormattedNumberRange* urange,
+               UChar *keyword, int32_t capacity,
+               UErrorCode *status);
+#endif // U_HIDE_DRAFT_API
+
 #ifndef U_HIDE_INTERNAL_API
 /**
  * Given a number, returns the keyword of the first rule that applies to the
@@ -198,7 +222,7 @@
  * @return The length of keyword.
  * @internal ICU 59 technology preview, may be removed in the future
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uplrules_selectWithFormat(const UPluralRules *uplrules,
                           double number,
                           const UNumberFormat *fmt,
@@ -217,7 +241,7 @@
  * upon error. The caller is responsible for closing the result.
  * @stable ICU 59
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uplrules_getKeywords(const UPluralRules *uplrules,
                      UErrorCode *status);
 
diff --git a/icu4c/source/i18n/unicode/uregex.h b/icu4c/source/i18n/unicode/uregex.h
index dab172d..e946e63 100644
--- a/icu4c/source/i18n/unicode/uregex.h
+++ b/icu4c/source/i18n/unicode/uregex.h
@@ -134,7 +134,7 @@
   * @stable ICU 3.0
   *
   */
-U_STABLE URegularExpression * U_EXPORT2
+U_CAPI URegularExpression * U_EXPORT2
 uregex_open( const  UChar          *pattern,
                     int32_t         patternLength,
                     uint32_t        flags,
@@ -164,7 +164,7 @@
   *
   * @stable ICU 4.6
   */
-U_STABLE URegularExpression *  U_EXPORT2
+U_CAPI URegularExpression *  U_EXPORT2
 uregex_openUText(UText          *pattern,
                  uint32_t        flags,
                  UParseError    *pe,
@@ -194,7 +194,7 @@
   *
   * @stable ICU 3.0
   */
-U_STABLE URegularExpression * U_EXPORT2
+U_CAPI URegularExpression * U_EXPORT2
 uregex_openC( const char           *pattern,
                     uint32_t        flags,
                     UParseError    *pe,
@@ -210,7 +210,7 @@
   * @param regexp   The regular expression to be closed.
   * @stable ICU 3.0
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_close(URegularExpression *regexp);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -250,7 +250,7 @@
  * @return the cloned copy of the compiled regular expression.
  * @stable ICU 3.0
  */
-U_STABLE URegularExpression * U_EXPORT2 
+U_CAPI URegularExpression * U_EXPORT2 
 uregex_clone(const URegularExpression *regexp, UErrorCode *status);
 
 /**
@@ -270,7 +270,7 @@
  *                   will remain valid until the regular expression is closed.
  * @stable ICU 3.0
  */
-U_STABLE const UChar * U_EXPORT2 
+U_CAPI const UChar * U_EXPORT2 
 uregex_pattern(const URegularExpression *regexp,
                      int32_t            *patLength,
                      UErrorCode         *status);
@@ -286,7 +286,7 @@
  *
  * @stable ICU 4.6
  */
-U_STABLE UText * U_EXPORT2 
+U_CAPI UText * U_EXPORT2 
 uregex_patternUText(const URegularExpression *regexp,
                           UErrorCode         *status);
 
@@ -298,7 +298,7 @@
   * @see URegexpFlag
   * @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_flags(const  URegularExpression   *regexp,
                     UErrorCode           *status);
 
@@ -323,7 +323,7 @@
   * @param status     Receives errors detected by this function.
   * @stable ICU 3.0
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_setText(URegularExpression *regexp,
                const UChar        *text,
                int32_t             textLength,
@@ -346,7 +346,7 @@
   *
   * @stable ICU 4.6
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_setUText(URegularExpression *regexp,
                 UText              *text,
                 UErrorCode         *status);
@@ -371,7 +371,7 @@
   *                    this regular expression.
   * @stable ICU 3.0
   */
-U_STABLE const UChar * U_EXPORT2 
+U_CAPI const UChar * U_EXPORT2 
 uregex_getText(URegularExpression *regexp,
                int32_t            *textLength,
                UErrorCode         *status);
@@ -392,7 +392,7 @@
   *
   * @stable ICU 4.6
   */
-U_STABLE UText * U_EXPORT2 
+U_CAPI UText * U_EXPORT2 
 uregex_getUText(URegularExpression *regexp,
                 UText              *dest,
                 UErrorCode         *status);
@@ -422,7 +422,7 @@
   *
   * @stable ICU 4.8
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_refreshUText(URegularExpression *regexp,
                     UText              *text,
                     UErrorCode         *status);
@@ -444,10 +444,10 @@
   *    @param  startIndex  The input string (native) index at which to begin matching, or -1
   *                        to match the input Region.
   *    @param  status      Receives errors detected by this function.
-  *    @return             TRUE if there is a match
+  *    @return             true if there is a match
   *    @stable ICU 3.0
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_matches(URegularExpression *regexp,
                 int32_t            startIndex,
                 UErrorCode        *status);
@@ -470,10 +470,10 @@
   *    @param  startIndex  The input string (native) index at which to begin matching, or -1
   *                        to match the input Region.
   *    @param  status      Receives errors detected by this function.
-  *    @return             TRUE if there is a match
+  *    @return             true if there is a match
   *   @stable ICU 4.6
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_matches64(URegularExpression *regexp,
                  int64_t            startIndex,
                  UErrorCode        *status);
@@ -498,10 +498,10 @@
   *    @param   startIndex  The input string (native) index at which to begin matching, or
   *                         -1 to match the Input Region
   *    @param   status      A reference to a UErrorCode to receive any errors.
-  *    @return  TRUE if there is a match.
+  *    @return  true if there is a match.
   *    @stable ICU 3.0
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_lookingAt(URegularExpression *regexp,
                  int32_t             startIndex,
                  UErrorCode         *status);
@@ -527,10 +527,10 @@
   *    @param   startIndex  The input string (native) index at which to begin matching, or
   *                         -1 to match the Input Region
   *    @param   status      A reference to a UErrorCode to receive any errors.
-  *    @return  TRUE if there is a match.
+  *    @return  true if there is a match.
   *    @stable ICU 4.6
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_lookingAt64(URegularExpression *regexp,
                    int64_t             startIndex,
                    UErrorCode         *status);
@@ -551,10 +551,10 @@
   *   @param   startIndex  The position (native) in the input string to begin the search, or
   *                        -1 to search within the Input Region.
   *   @param   status      A reference to a UErrorCode to receive any errors.
-  *   @return              TRUE if a match is found.
+  *   @return              true if a match is found.
   *   @stable ICU 3.0
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_find(URegularExpression *regexp,
             int32_t             startIndex, 
             UErrorCode         *status);
@@ -576,10 +576,10 @@
   *   @param   startIndex  The position (native) in the input string to begin the search, or
   *                        -1 to search within the Input Region.
   *   @param   status      A reference to a UErrorCode to receive any errors.
-  *   @return              TRUE if a match is found.
+  *   @return              true if a match is found.
   *   @stable ICU 4.6
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_find64(URegularExpression *regexp,
               int64_t             startIndex, 
               UErrorCode         *status);
@@ -593,11 +593,11 @@
   *
   *  @param   regexp      The compiled regular expression.
   *  @param   status      A reference to a UErrorCode to receive any errors.
-  *  @return              TRUE if a match is found.
+  *  @return              true if a match is found.
   *  @see uregex_reset
   *  @stable ICU 3.0
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_findNext(URegularExpression *regexp,
                 UErrorCode         *status);
 
@@ -608,7 +608,7 @@
   *   @return the number of capture groups
   *   @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_groupCount(URegularExpression *regexp,
                   UErrorCode         *status);
 
@@ -628,7 +628,7 @@
   *
   * @stable ICU 55
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregex_groupNumberFromName(URegularExpression *regexp,
                            const UChar        *groupName,
                            int32_t             nameLength,
@@ -652,7 +652,7 @@
   *
   * @stable ICU 55
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregex_groupNumberFromCName(URegularExpression *regexp,
                             const char         *groupName,
                             int32_t             nameLength,
@@ -674,7 +674,7 @@
   *                         or -1 if no applicable match.
   *   @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_group(URegularExpression *regexp,
              int32_t             groupNum,
              UChar              *dest,
@@ -703,7 +703,7 @@
   *
   *   @stable ICU 4.6
   */
-U_STABLE UText * U_EXPORT2 
+U_CAPI UText * U_EXPORT2 
 uregex_groupUText(URegularExpression *regexp,
                   int32_t             groupNum,
                   UText              *dest,
@@ -724,7 +724,7 @@
   *                         by the specified group.
   *    @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_start(URegularExpression *regexp,
              int32_t             groupNum,
              UErrorCode          *status);
@@ -744,7 +744,7 @@
   *                         by the specified group.
   *   @stable ICU 4.6
   */
-U_STABLE int64_t U_EXPORT2 
+U_CAPI int64_t U_EXPORT2 
 uregex_start64(URegularExpression *regexp,
                int32_t             groupNum,
                UErrorCode          *status);
@@ -762,7 +762,7 @@
   *    @return              the (native) index of the position following the last matched character.
   *    @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_end(URegularExpression   *regexp,
            int32_t               groupNum,
            UErrorCode           *status);
@@ -781,7 +781,7 @@
   *    @return              the (native) index of the position following the last matched character.
   *   @stable ICU 4.6
   */
-U_STABLE int64_t U_EXPORT2 
+U_CAPI int64_t U_EXPORT2 
 uregex_end64(URegularExpression *regexp,
              int32_t               groupNum,
              UErrorCode           *status);
@@ -799,7 +799,7 @@
   *    @param   status      A reference to a UErrorCode to receive any errors.
   *    @stable ICU 3.0
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_reset(URegularExpression    *regexp,
              int32_t               index,
              UErrorCode            *status);
@@ -818,7 +818,7 @@
   *    @param   status      A reference to a UErrorCode to receive any errors.
   *    @stable ICU 4.6
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_reset64(URegularExpression  *regexp,
                int64_t               index,
                UErrorCode            *status);
@@ -843,7 +843,7 @@
   * @param status A pointer to a UErrorCode to receive any errors.
   * @stable ICU 4.0
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_setRegion(URegularExpression   *regexp,
                  int32_t               regionStart,
                  int32_t               regionLimit,
@@ -870,7 +870,7 @@
   * @param status A pointer to a UErrorCode to receive any errors.
   * @stable ICU 4.6
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_setRegion64(URegularExpression *regexp,
                  int64_t               regionStart,
                  int64_t               regionLimit,
@@ -890,7 +890,7 @@
   * @param status A pointer to a UErrorCode to receive any errors.
   * @stable ICU 4.6
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_setRegionAndStart(URegularExpression *regexp,
                  int64_t               regionStart,
                  int64_t               regionLimit,
@@ -906,7 +906,7 @@
   * @return The starting (native) index of this matcher's region.
   * @stable ICU 4.0
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregex_regionStart(const  URegularExpression   *regexp,
                           UErrorCode           *status);
 
@@ -920,7 +920,7 @@
   * @return The starting (native) index of this matcher's region.
   * @stable ICU 4.6
   */
-U_STABLE int64_t U_EXPORT2 
+U_CAPI int64_t U_EXPORT2 
 uregex_regionStart64(const  URegularExpression   *regexp,
                             UErrorCode           *status);
 
@@ -934,7 +934,7 @@
   * @return The ending point (native) of this matcher's region.
   * @stable ICU 4.0
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregex_regionEnd(const  URegularExpression   *regexp,
                         UErrorCode           *status);
 
@@ -949,7 +949,7 @@
   * @return The ending point (native) of this matcher's region.
   * @stable ICU 4.6
   */
-U_STABLE int64_t U_EXPORT2 
+U_CAPI int64_t U_EXPORT2 
 uregex_regionEnd64(const  URegularExpression   *regexp,
                           UErrorCode           *status);
 
@@ -960,18 +960,18 @@
   *
   * @param regexp The compiled regular expression.
   * @param status A pointer to a UErrorCode to receive any errors.
-  * @return TRUE if this matcher is using opaque bounds, false if it is not.
+  * @return true if this matcher is using opaque bounds, false if it is not.
   * @stable ICU 4.0
   */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uregex_hasTransparentBounds(const  URegularExpression   *regexp,
                                    UErrorCode           *status);
 
 
 /**
   * Sets the transparency of region bounds for this URegularExpression.
-  * Invoking this function with an argument of TRUE will set matches to use transparent bounds.
-  * If the boolean argument is FALSE, then opaque bounds will be used.
+  * Invoking this function with an argument of true will set matches to use transparent bounds.
+  * If the boolean argument is false, then opaque bounds will be used.
   *
   * Using transparent bounds, the boundaries of the matching region are transparent
   * to lookahead, lookbehind, and boundary matching constructs. Those constructs can
@@ -983,11 +983,11 @@
   * By default, opaque bounds are used.
   *
   * @param   regexp The compiled regular expression.
-  * @param   b      TRUE for transparent bounds; FALSE for opaque bounds
+  * @param   b      true for transparent bounds; false for opaque bounds
   * @param   status A pointer to a UErrorCode to receive any errors.
   * @stable ICU 4.0
   **/
-U_STABLE void U_EXPORT2  
+U_CAPI void U_EXPORT2  
 uregex_useTransparentBounds(URegularExpression   *regexp, 
                             UBool                b,
                             UErrorCode           *status);
@@ -999,10 +999,10 @@
   *
   * @param  regexp The compiled regular expression.
   * @param  status A pointer to a UErrorCode to receive any errors.
-  * @return TRUE if this matcher is using anchoring bounds.
+  * @return true if this matcher is using anchoring bounds.
   * @stable ICU 4.0
   */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uregex_hasAnchoringBounds(const  URegularExpression   *regexp,
                                  UErrorCode           *status);
 
@@ -1016,41 +1016,41 @@
   * Anchoring Bounds are the default for regions.
   *
   * @param regexp The compiled regular expression.
-  * @param b      TRUE if to enable anchoring bounds; FALSE to disable them.
+  * @param b      true if to enable anchoring bounds; false to disable them.
   * @param status A pointer to a UErrorCode to receive any errors.
   * @stable ICU 4.0
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_useAnchoringBounds(URegularExpression   *regexp,
                           UBool                 b,
                           UErrorCode           *status);
 
 /**
-  * Return TRUE if the most recent matching operation touched the
+  * Return true if the most recent matching operation touched the
   *  end of the text being processed.  In this case, additional input text could
   *  change the results of that match.
   *
   *  @param regexp The compiled regular expression.
   *  @param status A pointer to a UErrorCode to receive any errors.
-  *  @return  TRUE if the most recent match hit the end of input
+  *  @return  true if the most recent match hit the end of input
   *  @stable ICU 4.0
   */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uregex_hitEnd(const  URegularExpression   *regexp,
                      UErrorCode           *status);
 
 /**
-  * Return TRUE the most recent match succeeded and additional input could cause
+  * Return true the most recent match succeeded and additional input could cause
   * it to fail. If this function returns false and a match was found, then more input
   * might change the match but the match won't be lost. If a match was not found,
   * then requireEnd has no meaning.
   *
   * @param regexp The compiled regular expression.
   * @param status A pointer to a UErrorCode to receive any errors.
-  * @return TRUE  if more input could cause the most recent match to no longer match.
+  * @return true  if more input could cause the most recent match to no longer match.
   * @stable ICU 4.0
   */
-U_STABLE UBool U_EXPORT2   
+U_CAPI UBool U_EXPORT2   
 uregex_requireEnd(const  URegularExpression   *regexp,
                          UErrorCode           *status);
 
@@ -1082,7 +1082,7 @@
   *                                is still the full length of the untruncated string.
   *    @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_replaceAll(URegularExpression    *regexp,
                   const UChar           *replacementText,
                   int32_t                replacementLength,
@@ -1111,7 +1111,7 @@
   *
   *    @stable ICU 4.6
   */
-U_STABLE UText * U_EXPORT2 
+U_CAPI UText * U_EXPORT2 
 uregex_replaceAllUText(URegularExpression *regexp,
                        UText              *replacement,
                        UText              *dest,
@@ -1141,7 +1141,7 @@
   *                                is still the full length of the untruncated string.
   *    @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_replaceFirst(URegularExpression  *regexp,
                     const UChar         *replacementText,
                     int32_t              replacementLength,
@@ -1170,7 +1170,7 @@
   *
   *    @stable ICU 4.6
   */
-U_STABLE UText * U_EXPORT2 
+U_CAPI UText * U_EXPORT2 
 uregex_replaceFirstUText(URegularExpression *regexp,
                          UText              *replacement,
                          UText              *dest,
@@ -1222,7 +1222,7 @@
   *   @stable ICU 3.0
   *
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_appendReplacement(URegularExpression    *regexp,
                          const UChar           *replacementText,
                          int32_t                replacementLength,
@@ -1252,7 +1252,7 @@
   *
   *   @stable ICU 4.6
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_appendReplacementUText(URegularExpression    *regexp,
                               UText                 *replacementText,
                               UText                 *dest,
@@ -1282,7 +1282,7 @@
   *
   *   @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_appendTail(URegularExpression    *regexp,
                   UChar                **destBuf,
                   int32_t               *destCapacity,
@@ -1306,7 +1306,7 @@
   *
   *   @stable ICU 4.6
   */
-U_STABLE UText * U_EXPORT2 
+U_CAPI UText * U_EXPORT2 
 uregex_appendTailUText(URegularExpression    *regexp,
                        UText                 *dest,
                        UErrorCode            *status);
@@ -1362,7 +1362,7 @@
    * @return        The number of fields into which the input string was split.
    * @stable ICU 3.0
    */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_split(   URegularExpression      *regexp,
                   UChar                 *destBuf,
                   int32_t                destCapacity,
@@ -1397,7 +1397,7 @@
    *
    * @stable ICU 4.6
    */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_splitUText(URegularExpression    *regexp,
                   UText                 *destFields[],
                   int32_t                destFieldsCapacity,
@@ -1425,7 +1425,7 @@
  * @param   status      A reference to a UErrorCode to receive any errors.
  * @stable ICU 4.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_setTimeLimit(URegularExpression      *regexp,
                     int32_t                  limit,
                     UErrorCode              *status);
@@ -1439,7 +1439,7 @@
  * @return the maximum allowed time for a match, in units of processing steps.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregex_getTimeLimit(const URegularExpression      *regexp,
                           UErrorCode              *status);
 
@@ -1463,7 +1463,7 @@
  *
  * @stable ICU 4.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_setStackLimit(URegularExpression      *regexp,
                      int32_t                  limit,
                      UErrorCode              *status);
@@ -1475,7 +1475,7 @@
  *          stack size is unlimited.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregex_getStackLimit(const URegularExpression      *regexp,
                            UErrorCode              *status);
 
@@ -1483,7 +1483,7 @@
 /**
  * Function pointer for a regular expression matching callback function.
  * When set, a callback function will be called periodically during matching
- * operations.  If the call back function returns FALSE, the matching
+ * operations.  If the call back function returns false, the matching
  * operation will be terminated early.
  *
  * Note:  the callback function must not call other functions on this
@@ -1494,8 +1494,8 @@
  *                 uregex_setMatchCallback() is called.
  * @param steps    the accumulated processing time, in match steps, 
  *                 for this matching operation.
- * @return         TRUE to continue the matching operation.
- *                 FALSE to terminate the matching operation.
+ * @return         true to continue the matching operation.
+ *                 false to terminate the matching operation.
  * @stable ICU 4.0
  */
 U_CDECL_BEGIN
@@ -1518,7 +1518,7 @@
  * @param   status      A reference to a UErrorCode to receive any errors.
  * @stable ICU 4.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_setMatchCallback(URegularExpression      *regexp,
                         URegexMatchCallback     *callback,
                         const void              *context,
@@ -1536,7 +1536,7 @@
  * @param   status      A reference to a UErrorCode to receive any errors.
  * @stable ICU 4.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_getMatchCallback(const URegularExpression    *regexp,
                         URegexMatchCallback        **callback,
                         const void                 **context,
@@ -1557,7 +1557,7 @@
  * to be attempted, giving the application the opportunity to terminate a long-running
  * find operation.
  * 
- * If the call back function returns FALSE, the find operation will be terminated early.
+ * If the call back function returns false, the find operation will be terminated early.
  *
  * Note:  the callback function must not call other functions on this
  *        URegularExpression
@@ -1568,8 +1568,8 @@
  * @param matchIndex  the next index at which a match attempt will be attempted for this
  *                 find operation.  If this callback interrupts the search, this is the
  *                 index at which a find/findNext operation may be re-initiated.
- * @return         TRUE to continue the matching operation.
- *                 FALSE to terminate the matching operation.
+ * @return         true to continue the matching operation.
+ *                 false to terminate the matching operation.
  * @stable ICU 4.6
  */
 U_CDECL_BEGIN
@@ -1590,7 +1590,7 @@
  * @param   status      A reference to a UErrorCode to receive any errors.
  * @stable ICU 4.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_setFindProgressCallback(URegularExpression              *regexp,
                                 URegexFindProgressCallback      *callback,
                                 const void                      *context,
@@ -1607,7 +1607,7 @@
  * @param   status      A reference to a UErrorCode to receive any errors.
  * @stable ICU 4.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_getFindProgressCallback(const URegularExpression          *regexp,
                                 URegexFindProgressCallback        **callback,
                                 const void                        **context,
diff --git a/icu4c/source/i18n/unicode/uregion.h b/icu4c/source/i18n/unicode/uregion.h
index a5de496..25472ae 100644
--- a/icu4c/source/i18n/unicode/uregion.h
+++ b/icu4c/source/i18n/unicode/uregion.h
@@ -133,7 +133,7 @@
  * (U_ILLEGAL_ARGUMENT_ERROR).
  * @stable ICU 52
  */
-U_STABLE const URegion* U_EXPORT2
+U_CAPI const URegion* U_EXPORT2
 uregion_getRegionFromCode(const char *regionCode, UErrorCode *status);
 
 /**
@@ -141,7 +141,7 @@
  * code is not recognized, the appropriate error code will be set (U_ILLEGAL_ARGUMENT_ERROR).
  * @stable ICU 52
  */
-U_STABLE const URegion* U_EXPORT2
+U_CAPI const URegion* U_EXPORT2
 uregion_getRegionFromNumericCode (int32_t code, UErrorCode *status);
 
 /**
@@ -149,14 +149,14 @@
  * The enumeration must be closed with with uenum_close().
  * @stable ICU 52
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uregion_getAvailable(URegionType type, UErrorCode *status);
 
 /**
  * Returns true if the specified uregion is equal to the specified otherRegion.
  * @stable ICU 52
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uregion_areEqual(const URegion* uregion, const URegion* otherRegion);
 
 /**
@@ -165,7 +165,7 @@
  * this method with region "IT" (Italy) returns the URegion for "039" (Southern Europe).
  * @stable ICU 52
  */
-U_STABLE const URegion* U_EXPORT2
+U_CAPI const URegion* U_EXPORT2
 uregion_getContainingRegion(const URegion* uregion);
 
 /**
@@ -177,7 +177,7 @@
  * URegion "150" (Europe).
  * @stable ICU 52
  */
-U_STABLE const URegion* U_EXPORT2
+U_CAPI const URegion* U_EXPORT2
 uregion_getContainingRegionOfType(const URegion* uregion, URegionType type);
 
 /**
@@ -190,7 +190,7 @@
  * and "155" (Western Europe). The enumeration must be closed with with uenum_close().
  * @stable ICU 52
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uregion_getContainedRegions(const URegion* uregion, UErrorCode *status);
 
 /**
@@ -202,7 +202,7 @@
  * etc. The enumeration must be closed with with uenum_close().
  * @stable ICU 52
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uregion_getContainedRegionsOfType(const URegion* uregion, URegionType type, UErrorCode *status);
 
 /**
@@ -210,7 +210,7 @@
  * hierarchy.
  * @stable ICU 52
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uregion_contains(const URegion* uregion, const URegion* otherRegion);
 
 /**
@@ -221,14 +221,14 @@
  * "AZ" (Azerbaijan), etc... The enumeration must be closed with with uenum_close().
  * @stable ICU 52
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uregion_getPreferredValues(const URegion* uregion, UErrorCode *status);
 
 /**
  * Returns the specified uregion's canonical code.
  * @stable ICU 52
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uregion_getRegionCode(const URegion* uregion);
 
 /**
@@ -236,14 +236,14 @@
  * for the specified uregion.
  * @stable ICU 52
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregion_getNumericCode(const URegion* uregion);
 
 /**
  * Returns the URegionType of the specified uregion.
  * @stable ICU 52
  */
-U_STABLE URegionType U_EXPORT2
+U_CAPI URegionType U_EXPORT2
 uregion_getType(const URegion* uregion);
 
 
diff --git a/icu4c/source/i18n/unicode/ureldatefmt.h b/icu4c/source/i18n/unicode/ureldatefmt.h
index 3afc24b..3c44890 100644
--- a/icu4c/source/i18n/unicode/ureldatefmt.h
+++ b/icu4c/source/i18n/unicode/ureldatefmt.h
@@ -237,7 +237,7 @@
  *          or NULL if an error occurred.
  * @stable ICU 57
  */
-U_STABLE URelativeDateTimeFormatter* U_EXPORT2
+U_CAPI URelativeDateTimeFormatter* U_EXPORT2
 ureldatefmt_open( const char*          locale,
                   UNumberFormat*       nfToAdopt,
                   UDateRelativeDateTimeFormatterStyle width,
@@ -250,7 +250,7 @@
  *            The URelativeDateTimeFormatter object to close.
  * @stable ICU 57
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ureldatefmt_close(URelativeDateTimeFormatter *reldatefmt);
 
 struct UFormattedRelativeDateTime;
@@ -269,7 +269,7 @@
  * @return A pointer needing ownership.
  * @stable ICU 64
  */
-U_STABLE UFormattedRelativeDateTime* U_EXPORT2
+U_CAPI UFormattedRelativeDateTime* U_EXPORT2
 ureldatefmt_openResult(UErrorCode* ec);
 
 /**
@@ -286,7 +286,7 @@
  * @return A UFormattedValue owned by the input object.
  * @stable ICU 64
  */
-U_STABLE const UFormattedValue* U_EXPORT2
+U_CAPI const UFormattedValue* U_EXPORT2
 ureldatefmt_resultAsValue(const UFormattedRelativeDateTime* ufrdt, UErrorCode* ec);
 
 /**
@@ -295,7 +295,7 @@
  * @param ufrdt The object to release.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ureldatefmt_closeResult(UFormattedRelativeDateTime* ufrdt);
 
 
@@ -357,7 +357,7 @@
  *          than resultCapacity, in which case an error is returned.
  * @stable ICU 57
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ureldatefmt_formatNumeric( const URelativeDateTimeFormatter* reldatefmt,
                     double                offset,
                     URelativeDateTimeUnit unit,
@@ -388,7 +388,7 @@
  *          undefined.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ureldatefmt_formatNumericToResult(
     const URelativeDateTimeFormatter* reldatefmt,
     double                            offset,
@@ -424,7 +424,7 @@
  *          than resultCapacity, in which case an error is returned.
  * @stable ICU 57
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ureldatefmt_format( const URelativeDateTimeFormatter* reldatefmt,
                     double                offset,
                     URelativeDateTimeUnit unit,
@@ -458,7 +458,7 @@
  *          undefined.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ureldatefmt_formatToResult(
     const URelativeDateTimeFormatter* reldatefmt,
     double                            offset,
@@ -495,7 +495,7 @@
  *          in which case an error is returned.
  * @stable ICU 57
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ureldatefmt_combineDateAndTime( const URelativeDateTimeFormatter* reldatefmt,
                     const UChar *     relativeDateString,
                     int32_t           relativeDateStringLen,
diff --git a/icu4c/source/i18n/unicode/usearch.h b/icu4c/source/i18n/unicode/usearch.h
index 3b64c7b..65747cb 100644
--- a/icu4c/source/i18n/unicode/usearch.h
+++ b/icu4c/source/i18n/unicode/usearch.h
@@ -28,8 +28,8 @@
  * \brief C API: StringSearch
  *
  * C APIs for an engine that provides language-sensitive text searching based 
- * on the comparison rules defined in a <tt>UCollator</tt> data struct,
- * see <tt>ucol.h</tt>. This ensures that language eccentricity can be 
+ * on the comparison rules defined in a <code>UCollator</code> data struct,
+ * see <code>ucol.h</code>. This ensures that language eccentricity can be 
  * handled, e.g. for the German collator, characters &szlig; and SS will be matched 
  * if case is chosen to be ignored. 
  * See the <a href="http://source.icu-project.org/repos/icu/icuhtml/trunk/design/collation/ICU_collation_design.htm">
@@ -57,18 +57,18 @@
  * Option 2. will be the default.
  * <p>
  * This search has APIs similar to that of other text iteration mechanisms 
- * such as the break iterators in <tt>ubrk.h</tt>. Using these 
+ * such as the break iterators in <code>ubrk.h</code>. Using these 
  * APIs, it is easy to scan through text looking for all occurrences of 
  * a given pattern. This search iterator allows changing of direction by 
- * calling a <tt>reset</tt> followed by a <tt>next</tt> or <tt>previous</tt>. 
- * Though a direction change can occur without calling <tt>reset</tt> first,  
+ * calling a <code>reset</code> followed by a <code>next</code> or <code>previous</code>. 
+ * Though a direction change can occur without calling <code>reset</code> first,  
  * this operation comes with some speed penalty.
  * Generally, match results in the forward direction will match the result 
  * matches in the backwards direction in the reverse order
  * <p>
- * <tt>usearch.h</tt> provides APIs to specify the starting position 
- * within the text string to be searched, e.g. <tt>usearch_setOffset</tt>,
- * <tt>usearch_preceding</tt> and <tt>usearch_following</tt>. Since the 
+ * <code>usearch.h</code> provides APIs to specify the starting position 
+ * within the text string to be searched, e.g. <code>usearch_setOffset</code>,
+ * <code>usearch_preceding</code> and <code>usearch_following</code>. Since the 
  * starting position will be set as it is specified, please take note that 
  * there are some dangerous positions which the search may render incorrect 
  * results:
@@ -104,7 +104,7 @@
  * Though collator attributes will be taken into consideration while 
  * performing matches, there are no APIs here for setting and getting the 
  * attributes. These attributes can be set by getting the collator
- * from <tt>usearch_getCollator</tt> and using the APIs in <tt>ucol.h</tt>.
+ * from <code>usearch_getCollator</code> and using the APIs in <code>ucol.h</code>.
  * Lastly to update String Search to the new collator attributes, 
  * usearch_reset() has to be called.
  * <p> 
@@ -280,9 +280,13 @@
 /* open and close ------------------------------------------------------ */
 
 /**
-* Creating a search iterator data struct using the argument locale language
+* Creates a String Search iterator data struct using the argument locale language
 * rule set. A collator will be created in the process, which will be owned by
-* this search and will be deleted in <tt>usearch_close</tt>.
+* this String Search and will be deleted in <code>usearch_close</code>.
+*
+* The UStringSearch retains a pointer to both the pattern and text strings.
+* The caller must not modify or delete them while using the UStringSearch.
+*
 * @param pattern for matching
 * @param patternlength length of the pattern, -1 for null-termination
 * @param text text string
@@ -291,9 +295,9 @@
 * @param breakiter A BreakIterator that will be used to restrict the points
 *                  at which matches are detected. If a match is found, but 
 *                  the match's start or end index is not a boundary as 
-*                  determined by the <tt>BreakIterator</tt>, the match will 
+*                  determined by the <code>BreakIterator</code>, the match will 
 *                  be rejected and another will be searched for. 
-*                  If this parameter is <tt>NULL</tt>, no break detection is 
+*                  If this parameter is <code>NULL</code>, no break detection is 
 *                  attempted.
 * @param status for errors if it occurs. If pattern or text is NULL, or if
 *               patternlength or textlength is 0 then an 
@@ -301,54 +305,59 @@
 * @return search iterator data structure, or NULL if there is an error.
 * @stable ICU 2.4
 */
-U_STABLE UStringSearch * U_EXPORT2 usearch_open(const UChar          *pattern, 
-                                              int32_t         patternlength, 
-                                        const UChar          *text, 
+U_CAPI UStringSearch * U_EXPORT2 usearch_open(const UChar    *pattern,
+                                              int32_t         patternlength,
+                                        const UChar          *text,
                                               int32_t         textlength,
                                         const char           *locale,
                                               UBreakIterator *breakiter,
                                               UErrorCode     *status);
 
 /**
-* Creating a search iterator data struct using the argument collator language
-* rule set. Note, user retains the ownership of this collator, thus the 
+* Creates a String Search iterator data struct using the argument collator language
+* rule set. Note, user retains the ownership of this collator, thus the
 * responsibility of deletion lies with the user.
-* NOTE: string search cannot be instantiated from a collator that has 
-* collate digits as numbers (CODAN) turned on.
+
+* NOTE: String Search cannot be instantiated from a collator that has
+* collate digits as numbers (CODAN) turned on (UCOL_NUMERIC_COLLATION).
+*
+* The UStringSearch retains a pointer to both the pattern and text strings.
+* The caller must not modify or delete them while using the UStringSearch.
+*
 * @param pattern for matching
 * @param patternlength length of the pattern, -1 for null-termination
 * @param text text string
 * @param textlength length of the text string, -1 for null-termination
 * @param collator used for the language rules
 * @param breakiter A BreakIterator that will be used to restrict the points
-*                  at which matches are detected. If a match is found, but 
-*                  the match's start or end index is not a boundary as 
-*                  determined by the <tt>BreakIterator</tt>, the match will 
-*                  be rejected and another will be searched for. 
-*                  If this parameter is <tt>NULL</tt>, no break detection is 
+*                  at which matches are detected. If a match is found, but
+*                  the match's start or end index is not a boundary as
+*                  determined by the <code>BreakIterator</code>, the match will
+*                  be rejected and another will be searched for.
+*                  If this parameter is <code>NULL</code>, no break detection is
 *                  attempted.
-* @param status for errors if it occurs. If collator, pattern or text is NULL, 
-*               or if patternlength or textlength is 0 then an 
+* @param status for errors if it occurs. If collator, pattern or text is NULL,
+*               or if patternlength or textlength is 0 then an
 *               U_ILLEGAL_ARGUMENT_ERROR is returned.
 * @return search iterator data structure, or NULL if there is an error.
 * @stable ICU 2.4
 */
-U_STABLE UStringSearch * U_EXPORT2 usearch_openFromCollator(
-                                         const UChar *pattern, 
+U_CAPI UStringSearch * U_EXPORT2 usearch_openFromCollator(
+                                         const UChar          *pattern,
                                                int32_t         patternlength,
-                                         const UChar          *text, 
+                                         const UChar          *text,
                                                int32_t         textlength,
                                          const UCollator      *collator,
                                                UBreakIterator *breakiter,
                                                UErrorCode     *status);
 
 /**
-* Destroying and cleaning up the search iterator data struct.
-* If a collator is created in <tt>usearch_open</tt>, it will be destroyed here.
-* @param searchiter data struct to clean up
-* @stable ICU 2.4
-*/
-U_STABLE void U_EXPORT2 usearch_close(UStringSearch *searchiter);
+ * Destroys and cleans up the String Search iterator data struct.
+ * If a collator was created in <code>usearch_open</code>, then it will be destroyed here.
+ * @param searchiter The UStringSearch to clean up
+ * @stable ICU 2.4
+ */
+U_CAPI void U_EXPORT2 usearch_close(UStringSearch *searchiter);
 
 #if U_SHOW_CPLUSPLUS_API
 
@@ -386,24 +395,24 @@
 * @param status error status if any.
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_setOffset(UStringSearch *strsrch, 
-                                        int32_t    position,
+U_CAPI void U_EXPORT2 usearch_setOffset(UStringSearch *strsrch,
+                                        int32_t        position,
                                         UErrorCode    *status);
 
 /**
 * Return the current index in the string text being searched.
 * If the iteration has gone past the end of the text (or past the beginning 
-* for a backwards search), <tt>USEARCH_DONE</tt> is returned.
+* for a backwards search), <code>USEARCH_DONE</code> is returned.
 * @param strsrch search iterator data struct
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_getOffset(const UStringSearch *strsrch);
+U_CAPI int32_t U_EXPORT2 usearch_getOffset(const UStringSearch *strsrch);
     
 /**
 * Sets the text searching attributes located in the enum USearchAttribute
 * with values from the enum USearchAttributeValue.
-* <tt>USEARCH_DEFAULT</tt> can be used for all attributes for resetting.
+* <code>USEARCH_DEFAULT</code> can be used for all attributes for resetting.
 * @param strsrch search iterator data struct
 * @param attribute text attribute to be set
 * @param value text attribute value
@@ -411,7 +420,7 @@
 * @see #usearch_getAttribute
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_setAttribute(UStringSearch         *strsrch, 
+U_CAPI void U_EXPORT2 usearch_setAttribute(UStringSearch         *strsrch,
                                            USearchAttribute       attribute,
                                            USearchAttributeValue  value,
                                            UErrorCode            *status);
@@ -424,19 +433,19 @@
 * @see #usearch_setAttribute
 * @stable ICU 2.4
 */
-U_STABLE USearchAttributeValue U_EXPORT2 usearch_getAttribute(
+U_CAPI USearchAttributeValue U_EXPORT2 usearch_getAttribute(
                                          const UStringSearch    *strsrch,
                                                USearchAttribute  attribute);
 
 /**
 * Returns the index to the match in the text string that was searched.
 * This call returns a valid result only after a successful call to 
-* <tt>usearch_first</tt>, <tt>usearch_next</tt>, <tt>usearch_previous</tt>, 
-* or <tt>usearch_last</tt>.
+* <code>usearch_first</code>, <code>usearch_next</code>, <code>usearch_previous</code>, 
+* or <code>usearch_last</code>.
 * Just after construction, or after a searching method returns 
-* <tt>USEARCH_DONE</tt>, this method will return <tt>USEARCH_DONE</tt>.
+* <code>USEARCH_DONE</code>, this method will return <code>USEARCH_DONE</code>.
 * <p>
-* Use <tt>usearch_getMatchedLength</tt> to get the matched string length.
+* Use <code>usearch_getMatchedLength</code> to get the matched string length.
 * @param strsrch search iterator data struct
 * @return index to a substring within the text string that is being 
 *         searched.
@@ -447,16 +456,16 @@
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_getMatchedStart(
+U_CAPI int32_t U_EXPORT2 usearch_getMatchedStart(
                                                const UStringSearch *strsrch);
     
 /**
 * Returns the length of text in the string which matches the search pattern. 
 * This call returns a valid result only after a successful call to 
-* <tt>usearch_first</tt>, <tt>usearch_next</tt>, <tt>usearch_previous</tt>, 
-* or <tt>usearch_last</tt>.
+* <code>usearch_first</code>, <code>usearch_next</code>, <code>usearch_previous</code>, 
+* or <code>usearch_last</code>.
 * Just after construction, or after a searching method returns 
-* <tt>USEARCH_DONE</tt>, this method will return 0.
+* <code>USEARCH_DONE</code>, this method will return 0.
 * @param strsrch search iterator data struct
 * @return The length of the match in the string text, or 0 if there is no 
 *         match currently.
@@ -467,22 +476,22 @@
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_getMatchedLength(
+U_CAPI int32_t U_EXPORT2 usearch_getMatchedLength(
                                                const UStringSearch *strsrch);
 
 /**
 * Returns the text that was matched by the most recent call to 
-* <tt>usearch_first</tt>, <tt>usearch_next</tt>, <tt>usearch_previous</tt>, 
-* or <tt>usearch_last</tt>.
+* <code>usearch_first</code>, <code>usearch_next</code>, <code>usearch_previous</code>, 
+* or <code>usearch_last</code>.
 * If the iterator is not pointing at a valid match (e.g. just after 
-* construction or after <tt>USEARCH_DONE</tt> has been returned, returns
+* construction or after <code>USEARCH_DONE</code> has been returned, returns
 * an empty string. If result is not large enough to store the matched text,
 * result will be filled with the partial text and an U_BUFFER_OVERFLOW_ERROR 
 * will be returned in status. result will be null-terminated whenever 
 * possible. If the buffer fits the matched text exactly, a null-termination 
 * is not possible, then a U_STRING_NOT_TERMINATED_ERROR set in status.
 * Pre-flighting can be either done with length = 0 or the API 
-* <tt>usearch_getMatchedLength</tt>.
+* <code>usearch_getMatchedLength</code>.
 * @param strsrch search iterator data struct
 * @param result UChar buffer to store the matched string
 * @param resultCapacity length of the result buffer
@@ -495,7 +504,7 @@
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_getMatchedText(const UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_getMatchedText(const UStringSearch *strsrch, 
                                             UChar         *result, 
                                             int32_t        resultCapacity, 
                                             UErrorCode    *status);
@@ -509,38 +518,42 @@
 * @param breakiter A BreakIterator that will be used to restrict the points
 *                  at which matches are detected. If a match is found, but 
 *                  the match's start or end index is not a boundary as 
-*                  determined by the <tt>BreakIterator</tt>, the match will 
+*                  determined by the <code>BreakIterator</code>, the match will 
 *                  be rejected and another will be searched for. 
-*                  If this parameter is <tt>NULL</tt>, no break detection is 
+*                  If this parameter is <code>NULL</code>, no break detection is 
 *                  attempted.
 * @param status for errors if it occurs
 * @see #usearch_getBreakIterator
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_setBreakIterator(UStringSearch  *strsrch, 
+U_CAPI void U_EXPORT2 usearch_setBreakIterator(UStringSearch  *strsrch, 
                                                UBreakIterator *breakiter,
                                                UErrorCode     *status);
 
 /**
 * Returns the BreakIterator that is used to restrict the points at which 
 * matches are detected. This will be the same object that was passed to the 
-* constructor or to <tt>usearch_setBreakIterator</tt>. Note that 
-* <tt>NULL</tt> 
+* constructor or to <code>usearch_setBreakIterator</code>. Note that 
+* <code>NULL</code> 
 * is a legal value; it means that break detection should not be attempted.
 * @param strsrch search iterator data struct
 * @return break iterator used
 * @see #usearch_setBreakIterator
 * @stable ICU 2.4
 */
-U_STABLE const UBreakIterator * U_EXPORT2 usearch_getBreakIterator(
+U_CAPI const UBreakIterator * U_EXPORT2 usearch_getBreakIterator(
                                               const UStringSearch *strsrch);
     
 #endif
-    
+
 /**
 * Set the string text to be searched. Text iteration will hence begin at the 
 * start of the text string. This method is useful if you want to re-use an 
 * iterator to search for the same pattern within a different body of text.
+*
+* The UStringSearch retains a pointer to the text string. The caller must not
+* modify or delete the string while using the UStringSearch.
+*
 * @param strsrch search iterator data struct
 * @param text new string to look for match
 * @param textlength length of the new string, -1 for null-termination
@@ -550,7 +563,7 @@
 * @see #usearch_getText
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_setText(      UStringSearch *strsrch, 
+U_CAPI void U_EXPORT2 usearch_setText(      UStringSearch *strsrch, 
                                       const UChar         *text,
                                             int32_t        textlength,
                                             UErrorCode    *status);
@@ -563,20 +576,20 @@
 * @see #usearch_setText
 * @stable ICU 2.4
 */
-U_STABLE const UChar * U_EXPORT2 usearch_getText(const UStringSearch *strsrch, 
+U_CAPI const UChar * U_EXPORT2 usearch_getText(const UStringSearch *strsrch, 
                                                int32_t       *length);
 
 /**
 * Gets the collator used for the language rules. 
 * <p>
-* Deleting the returned <tt>UCollator</tt> before calling 
-* <tt>usearch_close</tt> would cause the string search to fail.
-* <tt>usearch_close</tt> will delete the collator if this search owns it.
+* Deleting the returned <code>UCollator</code> before calling 
+* <code>usearch_close</code> would cause the string search to fail.
+* <code>usearch_close</code> will delete the collator if this search owns it.
 * @param strsrch search iterator data struct
 * @return collator
 * @stable ICU 2.4
 */
-U_STABLE UCollator * U_EXPORT2 usearch_getCollator(
+U_CAPI UCollator * U_EXPORT2 usearch_getCollator(
                                                const UStringSearch *strsrch);
 
 /**
@@ -589,7 +602,7 @@
 * @param status for errors if it occurs
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_setCollator(      UStringSearch *strsrch, 
+U_CAPI void U_EXPORT2 usearch_setCollator(      UStringSearch *strsrch, 
                                           const UCollator     *collator,
                                                 UErrorCode    *status);
 
@@ -597,6 +610,10 @@
 * Sets the pattern used for matching.
 * Internal data like the Boyer Moore table will be recalculated, but the 
 * iterator's position is unchanged.
+*
+* The UStringSearch retains a pointer to the pattern string. The caller must not
+* modify or delete the string while using the UStringSearch.
+*
 * @param strsrch search iterator data struct
 * @param pattern string
 * @param patternlength pattern length, -1 for null-terminated string
@@ -605,7 +622,7 @@
 *               done to strsrch.
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_setPattern(      UStringSearch *strsrch, 
+U_CAPI void U_EXPORT2 usearch_setPattern(      UStringSearch *strsrch, 
                                          const UChar         *pattern,
                                                int32_t        patternlength,
                                                UErrorCode    *status);
@@ -618,7 +635,7 @@
 * @return pattern string
 * @stable ICU 2.4
 */
-U_STABLE const UChar * U_EXPORT2 usearch_getPattern(
+U_CAPI const UChar * U_EXPORT2 usearch_getPattern(
                                                const UStringSearch *strsrch, 
                                                      int32_t       *length);
 
@@ -628,28 +645,28 @@
 * Returns the first index at which the string text matches the search 
 * pattern.  
 * The iterator is adjusted so that its current index (as returned by 
-* <tt>usearch_getOffset</tt>) is the match position if one was found.
-* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and
-* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>.
+* <code>usearch_getOffset</code>) is the match position if one was found.
+* If a match is not found, <code>USEARCH_DONE</code> will be returned and
+* the iterator will be adjusted to the index <code>USEARCH_DONE</code>.
 * @param strsrch search iterator data struct
 * @param status for errors if it occurs
 * @return The character index of the first match, or 
-* <tt>USEARCH_DONE</tt> if there are no matches.
+* <code>USEARCH_DONE</code> if there are no matches.
 * @see #usearch_getOffset
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_first(UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_first(UStringSearch *strsrch, 
                                            UErrorCode    *status);
 
 /**
-* Returns the first index equal or greater than <tt>position</tt> at which
+* Returns the first index equal or greater than <code>position</code> at which
 * the string text
 * matches the search pattern. The iterator is adjusted so that its current 
-* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 
+* index (as returned by <code>usearch_getOffset</code>) is the match position if 
 * one was found.
-* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and
-* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>
+* If a match is not found, <code>USEARCH_DONE</code> will be returned and
+* the iterator will be adjusted to the index <code>USEARCH_DONE</code>
 * <p>
 * Search positions that may render incorrect results are highlighted in the
 * header comments. If position is less than or greater than the text range 
@@ -657,60 +674,60 @@
 * @param strsrch search iterator data struct
 * @param position to start the search at
 * @param status for errors if it occurs
-* @return The character index of the first match following <tt>pos</tt>,
-*         or <tt>USEARCH_DONE</tt> if there are no matches.
+* @return The character index of the first match following <code>pos</code>,
+*         or <code>USEARCH_DONE</code> if there are no matches.
 * @see #usearch_getOffset
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_following(UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_following(UStringSearch *strsrch, 
                                                int32_t    position, 
                                                UErrorCode    *status);
     
 /**
 * Returns the last index in the target text at which it matches the search 
 * pattern. The iterator is adjusted so that its current 
-* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 
+* index (as returned by <code>usearch_getOffset</code>) is the match position if 
 * one was found.
-* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and
-* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>.
+* If a match is not found, <code>USEARCH_DONE</code> will be returned and
+* the iterator will be adjusted to the index <code>USEARCH_DONE</code>.
 * @param strsrch search iterator data struct
 * @param status for errors if it occurs
-* @return The index of the first match, or <tt>USEARCH_DONE</tt> if there 
+* @return The index of the first match, or <code>USEARCH_DONE</code> if there 
 *         are no matches.
 * @see #usearch_getOffset
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_last(UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_last(UStringSearch *strsrch, 
                                           UErrorCode    *status);
 
 /**
-* Returns the first index less than <tt>position</tt> at which the string text 
+* Returns the first index less than <code>position</code> at which the string text 
 * matches the search pattern. The iterator is adjusted so that its current 
-* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 
+* index (as returned by <code>usearch_getOffset</code>) is the match position if 
 * one was found.
-* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and
-* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>
+* If a match is not found, <code>USEARCH_DONE</code> will be returned and
+* the iterator will be adjusted to the index <code>USEARCH_DONE</code>
 * <p>
 * Search positions that may render incorrect results are highlighted in the
 * header comments. If position is less than or greater than the text range 
 * for searching, an U_INDEX_OUTOFBOUNDS_ERROR will be returned.
 * <p>
-* When <tt>USEARCH_OVERLAP</tt> option is off, the last index of the
-* result match is always less than <tt>position</tt>.
-* When <tt>USERARCH_OVERLAP</tt> is on, the result match may span across
-* <tt>position</tt>.
+* When <code>USEARCH_OVERLAP</code> option is off, the last index of the
+* result match is always less than <code>position</code>.
+* When <code>USERARCH_OVERLAP</code> is on, the result match may span across
+* <code>position</code>.
 * @param strsrch search iterator data struct
 * @param position index position the search is to begin at
 * @param status for errors if it occurs
-* @return The character index of the first match preceding <tt>pos</tt>,
-*         or <tt>USEARCH_DONE</tt> if there are no matches.
+* @return The character index of the first match preceding <code>pos</code>,
+*         or <code>USEARCH_DONE</code> if there are no matches.
 * @see #usearch_getOffset
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_preceding(UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_preceding(UStringSearch *strsrch, 
                                                int32_t    position, 
                                                UErrorCode    *status);
     
@@ -718,40 +735,40 @@
 * Returns the index of the next point at which the string text matches the
 * search pattern, starting from the current position.
 * The iterator is adjusted so that its current 
-* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 
+* index (as returned by <code>usearch_getOffset</code>) is the match position if 
 * one was found.
-* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and
-* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>
+* If a match is not found, <code>USEARCH_DONE</code> will be returned and
+* the iterator will be adjusted to the index <code>USEARCH_DONE</code>
 * @param strsrch search iterator data struct
 * @param status for errors if it occurs
 * @return The index of the next match after the current position, or 
-*         <tt>USEARCH_DONE</tt> if there are no more matches.
+*         <code>USEARCH_DONE</code> if there are no more matches.
 * @see #usearch_first
 * @see #usearch_getOffset
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, 
                                           UErrorCode    *status);
 
 /**
 * Returns the index of the previous point at which the string text matches
 * the search pattern, starting at the current position.
 * The iterator is adjusted so that its current 
-* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 
+* index (as returned by <code>usearch_getOffset</code>) is the match position if 
 * one was found.
-* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and
-* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>
+* If a match is not found, <code>USEARCH_DONE</code> will be returned and
+* the iterator will be adjusted to the index <code>USEARCH_DONE</code>
 * @param strsrch search iterator data struct
 * @param status for errors if it occurs
 * @return The index of the previous match before the current position,
-*         or <tt>USEARCH_DONE</tt> if there are no more matches.
+*         or <code>USEARCH_DONE</code> if there are no more matches.
 * @see #usearch_last
 * @see #usearch_getOffset
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_previous(UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_previous(UStringSearch *strsrch, 
                                               UErrorCode    *status);
     
 /** 
@@ -764,7 +781,7 @@
 * @see #usearch_first
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_reset(UStringSearch *strsrch);
+U_CAPI void U_EXPORT2 usearch_reset(UStringSearch *strsrch);
 
 #ifndef U_HIDE_INTERNAL_API
 /**
@@ -817,11 +834,11 @@
   *                    A value of -1 will be returned if no match was found.
   *          
   *  @param status     Report any errors.  Note that no match found is not an error.
-  *  @return           TRUE if a match was found, FALSE otherwise.
+  *  @return           true if a match was found, false otherwise.
   *
   *  @internal
   */
-U_INTERNAL UBool U_EXPORT2 usearch_search(UStringSearch *strsrch,
+U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch,
                                           int32_t        startIdx,
                                           int32_t        *matchStart,
                                           int32_t        *matchLimit,
@@ -877,11 +894,11 @@
   *                    A value of -1 will be returned if no match was found.
   *          
   *  @param status     Report any errors.  Note that no match found is not an error.
-  *  @return           TRUE if a match was found, FALSE otherwise.
+  *  @return           true if a match was found, false otherwise.
   *
   *  @internal
   */
-U_INTERNAL UBool U_EXPORT2 usearch_searchBackwards(UStringSearch *strsrch,
+U_CAPI UBool U_EXPORT2 usearch_searchBackwards(UStringSearch *strsrch,
                                                    int32_t        startIdx,
                                                    int32_t        *matchStart,
                                                    int32_t        *matchLimit,
diff --git a/icu4c/source/i18n/unicode/uspoof.h b/icu4c/source/i18n/unicode/uspoof.h
index 8e846e1..7680c68 100644
--- a/icu4c/source/i18n/unicode/uspoof.h
+++ b/icu4c/source/i18n/unicode/uspoof.h
@@ -154,10 +154,10 @@
  *     UChar* skel = (UChar*) malloc(++len * sizeof(UChar));
  *     status = U_ZERO_ERROR;
  *     uspoof_getSkeleton(sc, 0, str, -1, skel, len, &status);
- *     UBool result = FALSE;
+ *     UBool result = false;
  *     for (size_t i=0; i<DICTIONARY_LENGTH; i++) {
  *         result = u_strcmp(skel, skeletons[i]) == 0;
- *         if (result == TRUE) { break; }
+ *         if (result == true) { break; }
  *     }
  *     // Has confusable in dictionary: 1 (status: U_ZERO_ERROR)
  *     printf("Has confusable in dictionary: %d (status: %s)\n", result, u_errorName(status));
@@ -601,7 +601,7 @@
  *  @return        the newly created Spoof Checker
  *  @stable ICU 4.2
  */
-U_STABLE USpoofChecker * U_EXPORT2
+U_CAPI USpoofChecker * U_EXPORT2
 uspoof_open(UErrorCode *status);
 
 
@@ -626,7 +626,7 @@
  * @see uspoof_serialize
  * @stable ICU 4.2
  */
-U_STABLE USpoofChecker * U_EXPORT2
+U_CAPI USpoofChecker * U_EXPORT2
 uspoof_openFromSerialized(const void *data, int32_t length, int32_t *pActualLength,
                           UErrorCode *pErrorCode);
 
@@ -660,7 +660,7 @@
   * @return            A spoof checker that uses the rules from the input files.
   * @stable ICU 4.2
   */
-U_STABLE USpoofChecker * U_EXPORT2
+U_CAPI USpoofChecker * U_EXPORT2
 uspoof_openFromSource(const char *confusables,  int32_t confusablesLen,
                       const char *confusablesWholeScript, int32_t confusablesWholeScriptLen,
                       int32_t *errType, UParseError *pe, UErrorCode *status);
@@ -671,7 +671,7 @@
   *   its implementation.
   * @stable ICU 4.2
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_close(USpoofChecker *sc);
 
 /**
@@ -683,7 +683,7 @@
  * @return
  * @stable ICU 4.2
  */
-U_STABLE USpoofChecker * U_EXPORT2
+U_CAPI USpoofChecker * U_EXPORT2
 uspoof_clone(const USpoofChecker *sc, UErrorCode *status);
 
 
@@ -691,8 +691,10 @@
  * Specify the bitmask of checks that will be performed by {@link uspoof_check}. Calling this method
  * overwrites any checks that may have already been enabled. By default, all checks are enabled.
  *
- * To enable specific checks and disable all others, the "whitelisted" checks should be ORed together. For
- * example, to fail strings containing characters outside of the set specified by {@link uspoof_setAllowedChars} and
+ * To enable specific checks and disable all others,
+ * OR together only the bit constants for the desired checks.
+ * For example, to fail strings containing characters outside of
+ * the set specified by {@link uspoof_setAllowedChars} and
  * also strings that contain digits from mixed numbering systems:
  *
  * <pre>
@@ -701,8 +703,9 @@
  * }
  * </pre>
  *
- * To disable specific checks and enable all others, the "blacklisted" checks should be ANDed away from
- * ALL_CHECKS. For example, if you are not planning to use the {@link uspoof_areConfusable} functionality,
+ * To disable specific checks and enable all others,
+ * start with ALL_CHECKS and "AND away" the not-desired checks.
+ * For example, if you are not planning to use the {@link uspoof_areConfusable} functionality,
  * it is good practice to disable the CONFUSABLE check:
  *
  * <pre>
@@ -724,7 +727,7 @@
  * @stable ICU 4.2
  *
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_setChecks(USpoofChecker *sc, int32_t checks, UErrorCode *status);
 
 /**
@@ -738,7 +741,7 @@
  * @stable ICU 4.2
  *
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_getChecks(const USpoofChecker *sc, UErrorCode *status);
 
 /**
@@ -752,7 +755,7 @@
  * @see URestrictionLevel
  * @stable ICU 51
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_setRestrictionLevel(USpoofChecker *sc, URestrictionLevel restrictionLevel);
 
 
@@ -763,7 +766,7 @@
   * @see URestrictionLevel
   * @stable ICU 51
   */
-U_STABLE URestrictionLevel U_EXPORT2
+U_CAPI URestrictionLevel U_EXPORT2
 uspoof_getRestrictionLevel(const USpoofChecker *sc);
 
 /**
@@ -808,7 +811,7 @@
  * @param status       The error code, set if this function encounters a problem.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_setAllowedLocales(USpoofChecker *sc, const char *localesList, UErrorCode *status);
 
 /**
@@ -832,7 +835,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 uspoof_getAllowedLocales(USpoofChecker *sc, UErrorCode *status);
 
 
@@ -854,7 +857,7 @@
  * @param status   The error code, set if this function encounters a problem.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_setAllowedChars(USpoofChecker *sc, const USet *chars, UErrorCode *status);
 
 
@@ -878,7 +881,7 @@
  *                 the USPOOF_CHAR_LIMIT test.
  * @stable ICU 4.2
  */
-U_STABLE const USet * U_EXPORT2
+U_CAPI const USet * U_EXPORT2
 uspoof_getAllowedChars(const USpoofChecker *sc, UErrorCode *status);
 
 
@@ -914,7 +917,7 @@
  * @see uspoof_check2
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_check(const USpoofChecker *sc,
                          const UChar *id, int32_t length,
                          int32_t *position,
@@ -953,7 +956,7 @@
  * @see uspoof_check2UTF8
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_checkUTF8(const USpoofChecker *sc,
                  const char *id, int32_t length,
                  int32_t *position,
@@ -988,7 +991,7 @@
  * @see uspoof_check2UnicodeString
  * @stable ICU 58
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_check2(const USpoofChecker *sc,
     const UChar* id, int32_t length,
     USpoofCheckResult* checkResult,
@@ -1025,7 +1028,7 @@
  * @see uspoof_check2UnicodeString
  * @stable ICU 58
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_check2UTF8(const USpoofChecker *sc,
     const char *id, int32_t length,
     USpoofCheckResult* checkResult,
@@ -1049,7 +1052,7 @@
  * @see uspoof_check2UnicodeString
  * @stable ICU 58
  */
-U_STABLE USpoofCheckResult* U_EXPORT2
+U_CAPI USpoofCheckResult* U_EXPORT2
 uspoof_openCheckResult(UErrorCode *status);
 
 /**
@@ -1059,7 +1062,7 @@
  * @param checkResult  The instance of USpoofCheckResult to close
  * @stable ICU 58
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_closeCheckResult(USpoofCheckResult *checkResult);
 
 /**
@@ -1076,7 +1079,7 @@
  * @see uspoof_setChecks
  * @stable ICU 58
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_getCheckResultChecks(const USpoofCheckResult *checkResult, UErrorCode *status);
 
 /**
@@ -1089,7 +1092,7 @@
  * @see uspoof_setRestrictionLevel
  * @stable ICU 58
  */
-U_STABLE URestrictionLevel U_EXPORT2
+U_CAPI URestrictionLevel U_EXPORT2
 uspoof_getCheckResultRestrictionLevel(const USpoofCheckResult *checkResult, UErrorCode *status);
 
 /**
@@ -1103,7 +1106,7 @@
  * @param status       The error code, set if an error occurred.
  * @stable ICU 58
  */
-U_STABLE const USet* U_EXPORT2
+U_CAPI const USet* U_EXPORT2
 uspoof_getCheckResultNumerics(const USpoofCheckResult *checkResult, UErrorCode *status);
 
 
@@ -1150,7 +1153,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_areConfusable(const USpoofChecker *sc,
                      const UChar *id1, int32_t length1,
                      const UChar *id2, int32_t length2,
@@ -1183,7 +1186,7 @@
  *
  * @see uspoof_areConfusable
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_areConfusableUTF8(const USpoofChecker *sc,
                          const char *id1, int32_t length1,
                          const char *id2, int32_t length2,
@@ -1223,7 +1226,7 @@
  * @stable ICU 4.2
  * @see uspoof_areConfusable
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_getSkeleton(const USpoofChecker *sc,
                    uint32_t type,
                    const UChar *id,  int32_t length,
@@ -1263,7 +1266,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_getSkeletonUTF8(const USpoofChecker *sc,
                        uint32_t type,
                        const char *id,  int32_t length,
@@ -1282,7 +1285,7 @@
   *
   * @stable ICU 51
   */
-U_STABLE const USet * U_EXPORT2
+U_CAPI const USet * U_EXPORT2
 uspoof_getInclusionSet(UErrorCode *status);
 
 /**
@@ -1297,7 +1300,7 @@
   *
   * @stable ICU 51
   */
-U_STABLE const USet * U_EXPORT2
+U_CAPI const USet * U_EXPORT2
 uspoof_getRecommendedSet(UErrorCode *status);
 
 /**
@@ -1322,7 +1325,7 @@
  * @see utrie2_openFromSerialized()
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_serialize(USpoofChecker *sc,
                  void *data, int32_t capacity,
                  UErrorCode *status);
@@ -1388,7 +1391,7 @@
  * @param status   The error code, set if this function encounters a problem.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_setAllowedUnicodeSet(USpoofChecker *sc, const icu::UnicodeSet *chars, UErrorCode *status);
 
 
@@ -1412,7 +1415,7 @@
  *                 the USPOOF_CHAR_LIMIT test.
  * @stable ICU 4.2
  */
-U_STABLE const icu::UnicodeSet * U_EXPORT2
+U_CAPI const icu::UnicodeSet * U_EXPORT2
 uspoof_getAllowedUnicodeSet(const USpoofChecker *sc, UErrorCode *status);
 
 /**
@@ -1443,7 +1446,7 @@
  * @see uspoof_check2UnicodeString
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_checkUnicodeString(const USpoofChecker *sc,
                           const icu::UnicodeString &id,
                           int32_t *position,
@@ -1474,7 +1477,7 @@
  * @see uspoof_check2UTF8
  * @stable ICU 58
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_check2UnicodeString(const USpoofChecker *sc,
     const icu::UnicodeString &id,
     USpoofCheckResult* checkResult,
@@ -1501,7 +1504,7 @@
  *
  * @see uspoof_areConfusable
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_areConfusableUnicodeString(const USpoofChecker *sc,
                                   const icu::UnicodeString &s1,
                                   const icu::UnicodeString &s2,
@@ -1549,7 +1552,7 @@
   *
   * @stable ICU 51
   */
-U_STABLE const icu::UnicodeSet * U_EXPORT2
+U_CAPI const icu::UnicodeSet * U_EXPORT2
 uspoof_getInclusionUnicodeSet(UErrorCode *status);
 
 /**
@@ -1564,7 +1567,7 @@
   *
   * @stable ICU 51
   */
-U_STABLE const icu::UnicodeSet * U_EXPORT2
+U_CAPI const icu::UnicodeSet * U_EXPORT2
 uspoof_getRecommendedUnicodeSet(UErrorCode *status);
 
 #endif /* U_SHOW_CPLUSPLUS_API */
diff --git a/icu4c/source/i18n/unicode/utmscale.h b/icu4c/source/i18n/unicode/utmscale.h
index d8b8a2e..5a0bdc6 100644
--- a/icu4c/source/i18n/unicode/utmscale.h
+++ b/icu4c/source/i18n/unicode/utmscale.h
@@ -449,7 +449,7 @@
  * 
  * @stable ICU 3.2
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
     utmscale_getTimeScaleValue(UDateTimeScale timeScale, UTimeScaleValue value, UErrorCode *status);
 
 /* Conversion to 'universal time scale' */
@@ -465,7 +465,7 @@
  *
  * @stable ICU 3.2
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
     utmscale_fromInt64(int64_t otherTime, UDateTimeScale timeScale, UErrorCode *status);
 
 /* Conversion from 'universal time scale' */
@@ -481,7 +481,7 @@
  *
  * @stable ICU 3.2
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
     utmscale_toInt64(int64_t universalTime, UDateTimeScale timeScale, UErrorCode *status);
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/unicode/utrans.h b/icu4c/source/i18n/unicode/utrans.h
index 9134e37..1ad7dbd 100644
--- a/icu4c/source/i18n/unicode/utrans.h
+++ b/icu4c/source/i18n/unicode/utrans.h
@@ -191,7 +191,7 @@
  *         utrans_xxx() functions, or NULL if the open call fails.
  * @stable ICU 2.8
  */
-U_STABLE UTransliterator* U_EXPORT2
+U_CAPI UTransliterator* U_EXPORT2
 utrans_openU(const UChar *id,
              int32_t idLength,
              UTransDirection dir,
@@ -215,7 +215,7 @@
  * inverse of trans, or NULL if the open call fails.
  * @stable ICU 2.0
  */
-U_STABLE UTransliterator* U_EXPORT2 
+U_CAPI UTransliterator* U_EXPORT2 
 utrans_openInverse(const UTransliterator* trans,
                    UErrorCode* status);
 
@@ -229,7 +229,7 @@
  * utrans_xxx() functions, or NULL if the clone call fails.
  * @stable ICU 2.0
  */
-U_STABLE UTransliterator* U_EXPORT2 
+U_CAPI UTransliterator* U_EXPORT2 
 utrans_clone(const UTransliterator* trans,
              UErrorCode* status);
 
@@ -239,7 +239,7 @@
  * @param trans the transliterator to be closed.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_close(UTransliterator* trans);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -275,7 +275,7 @@
  *
  * @stable ICU 2.8
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 utrans_getUnicodeID(const UTransliterator *trans,
                     int32_t *resultLength);
 
@@ -293,7 +293,7 @@
  * @param status a pointer to the UErrorCode
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_register(UTransliterator* adoptedTrans,
                 UErrorCode* status);
 
@@ -306,7 +306,7 @@
  * @param idLength the length of id, or -1 if id is zero-terminated
  * @stable ICU 2.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utrans_unregisterID(const UChar* id, int32_t idLength);
 
 /**
@@ -327,7 +327,7 @@
  * @see UnicodeSet
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_setFilter(UTransliterator* trans,
                  const UChar* filterPattern,
                  int32_t filterPatternLen,
@@ -340,7 +340,7 @@
  * @return the number of system transliterators.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 utrans_countAvailableIDs(void);
 
 /**
@@ -352,7 +352,7 @@
  *
  * @stable ICU 2.8
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 utrans_openIDs(UErrorCode *pErrorCode);
 
 /********************************************************************
@@ -382,7 +382,7 @@
  * @param status a pointer to the UErrorCode
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_trans(const UTransliterator* trans,
              UReplaceable* rep,
              const UReplaceableCallbacks* repFunc,
@@ -433,7 +433,7 @@
  * @param status a pointer to the UErrorCode
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_transIncremental(const UTransliterator* trans,
                         UReplaceable* rep,
                         const UReplaceableCallbacks* repFunc,
@@ -470,7 +470,7 @@
  * @param status a pointer to the UErrorCode
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_transUChars(const UTransliterator* trans,
                    UChar* text,
                    int32_t* textLength,
@@ -505,7 +505,7 @@
  * @see utrans_transIncremental
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_transIncrementalUChars(const UTransliterator* trans,
                               UChar* text,
                               int32_t* textLength,
@@ -518,7 +518,7 @@
  * transliterator.
  *
  * @param trans     The transliterator
- * @param escapeUnprintable if TRUE then convert unprintable characters to their
+ * @param escapeUnprintable if true then convert unprintable characters to their
  *                  hex escape representations, \\uxxxx or \\Uxxxxxxxx.
  *                  Unprintable characters are those other than
  *                  U+000A, U+0020..U+007E.
@@ -530,7 +530,7 @@
  *                  in which case an error is returned).
  * @stable ICU 53
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utrans_toRules(     const UTransliterator* trans,
                     UBool escapeUnprintable,
                     UChar* result, int32_t resultLength,
@@ -540,9 +540,9 @@
  * Returns the set of all characters that may be modified in the input text by
  * this UTransliterator, optionally ignoring the transliterator's current filter.
  * @param trans     The transliterator.
- * @param ignoreFilter If FALSE, the returned set incorporates the
+ * @param ignoreFilter If false, the returned set incorporates the
  *                  UTransliterator's current filter; if the filter is changed,
- *                  the return value of this function will change. If TRUE, the
+ *                  the return value of this function will change. If true, the
  *                  returned set ignores the effect of the UTransliterator's
  *                  current filter.
  * @param fillIn    Pointer to a USet object to receive the modifiable characters
@@ -555,7 +555,7 @@
  *                  error, NULL is returned.
  * @stable ICU 53
  */
-U_STABLE USet* U_EXPORT2
+U_CAPI USet* U_EXPORT2
 utrans_getSourceSet(const UTransliterator* trans,
                     UBool ignoreFilter,
                     USet* fillIn,
diff --git a/icu4c/source/i18n/unicode/vtzone.h b/icu4c/source/i18n/unicode/vtzone.h
index 2743b6c..34b371b 100644
--- a/icu4c/source/i18n/unicode/vtzone.h
+++ b/icu4c/source/i18n/unicode/vtzone.h
@@ -119,7 +119,7 @@
      * created from VTIMEZONE data, the initial value is set by the TZURL property value
      * in the data.  Otherwise, the initial value is not set.
      * @param url Receives the RFC2445 TZURL property value.
-     * @return TRUE if TZURL attribute is available and value is set.
+     * @return true if TZURL attribute is available and value is set.
      * @stable ICU 3.8
      */
     UBool getTZURL(UnicodeString& url) const;
@@ -136,7 +136,7 @@
      * was created from VTIMEZONE data, the initial value is set by the LAST-MODIFIED property
      * value in the data.  Otherwise, the initial value is not set.
      * @param lastModified Receives the last modified date.
-     * @return TRUE if lastModified attribute is available and value is set.
+     * @return true if lastModified attribute is available and value is set.
      * @stable ICU 3.8
      */
     UBool getLastModified(UDate& lastModified) const;
@@ -322,7 +322,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the first transition after the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      * @stable ICU 3.8
      */
     virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
@@ -332,7 +332,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the most recent transition before the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      * @stable ICU 3.8
      */
     virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
diff --git a/icu4c/source/i18n/units_complexconverter.cpp b/icu4c/source/i18n/units_complexconverter.cpp
new file mode 100644
index 0000000..27f835e
--- /dev/null
+++ b/icu4c/source/i18n/units_complexconverter.cpp
@@ -0,0 +1,253 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include <cmath>
+
+#include "cmemory.h"
+#include "number_decimalquantity.h"
+#include "number_roundingutils.h"
+#include "uarrsort.h"
+#include "uassert.h"
+#include "unicode/fmtable.h"
+#include "unicode/localpointer.h"
+#include "unicode/measunit.h"
+#include "unicode/measure.h"
+#include "units_complexconverter.h"
+#include "units_converter.h"
+
+U_NAMESPACE_BEGIN
+namespace units {
+
+ComplexUnitsConverter::ComplexUnitsConverter(const MeasureUnitImpl &inputUnit,
+                                             const MeasureUnitImpl &outputUnits,
+                                             const ConversionRates &ratesInfo, UErrorCode &status)
+    : units_(outputUnits.extractIndividualUnits(status)) {
+    if (U_FAILURE(status)) {
+        return;
+    }
+
+    U_ASSERT(units_.length() != 0);
+
+    // Save the desired order of output units before we sort units_
+    for (int32_t i = 0; i < units_.length(); i++) {
+        outputUnits_.emplaceBackAndCheckErrorCode(status, units_[i]->copy(status).build(status));
+    }
+
+    // NOTE:
+    //  This comparator is used to sort the units in a descending order. Therefore, we return -1 if
+    //  the left is bigger than right and so on.
+    auto descendingCompareUnits = [](const void *context, const void *left, const void *right) {
+        UErrorCode status = U_ZERO_ERROR;
+
+        const auto *leftPointer = static_cast<const MeasureUnitImpl *const *>(left);
+        const auto *rightPointer = static_cast<const MeasureUnitImpl *const *>(right);
+
+        UnitConverter fromLeftToRight(**leftPointer,                                  //
+                                      **rightPointer,                                 //
+                                      *static_cast<const ConversionRates *>(context), //
+                                      status);
+
+        double rightFromOneLeft = fromLeftToRight.convert(1.0);
+        if (std::abs(rightFromOneLeft - 1.0) < 0.0000000001) { // Equals To
+            return 0;
+        } else if (rightFromOneLeft > 1.0) { // Greater Than
+            return -1;
+        }
+
+        return 1; // Less Than
+    };
+
+    uprv_sortArray(units_.getAlias(),                                                                  //
+                   units_.length(),                                                                    //
+                   sizeof units_[0], /* NOTE: we have already asserted that the units_ is not empty.*/ //
+                   descendingCompareUnits,                                                             //
+                   &ratesInfo,                                                                         //
+                   false,                                                                              //
+                   &status                                                                             //
+    );
+
+    // In case the `outputUnits` are `UMEASURE_UNIT_MIXED` such as `foot+inch`. In this case we need more
+    // converters to convert from the `inputUnit` to the first unit in the `outputUnits`. Then, a
+    // converter from the first unit in the `outputUnits` to the second unit and so on.
+    //      For Example:
+    //          - inputUnit is `meter`
+    //          - outputUnits is `foot+inch`
+    //              - Therefore, we need to have two converters:
+    //                      1. a converter from `meter` to `foot`
+    //                      2. a converter from `foot` to `inch`
+    //          - Therefore, if the input is `2 meter`:
+    //              1. convert `meter` to `foot` --> 2 meter to 6.56168 feet
+    //              2. convert the residual of 6.56168 feet (0.56168) to inches, which will be (6.74016
+    //              inches)
+    //              3. then, the final result will be (6 feet and 6.74016 inches)
+    for (int i = 0, n = units_.length(); i < n; i++) {
+        if (i == 0) { // first element
+            unitConverters_.emplaceBackAndCheckErrorCode(status, inputUnit, *units_[i], ratesInfo,
+                                                         status);
+        } else {
+            unitConverters_.emplaceBackAndCheckErrorCode(status, *units_[i - 1], *units_[i], ratesInfo,
+                                                         status);
+        }
+
+        if (U_FAILURE(status)) {
+            return;
+        }
+    }
+}
+
+UBool ComplexUnitsConverter::greaterThanOrEqual(double quantity, double limit) const {
+    U_ASSERT(unitConverters_.length() > 0);
+
+    // First converter converts to the biggest quantity.
+    double newQuantity = unitConverters_[0]->convert(quantity);
+    return newQuantity >= limit;
+}
+
+MaybeStackVector<Measure> ComplexUnitsConverter::convert(double quantity,
+                                                         icu::number::impl::RoundingImpl *rounder,
+                                                         UErrorCode &status) const {
+    // TODO(hugovdm): return an error for "foot-and-foot"?
+    MaybeStackVector<Measure> result;
+    int sign = 1;
+    if (quantity < 0) {
+        quantity *= -1;
+        sign = -1;
+    }
+
+    // For N converters:
+    // - the first converter converts from the input unit to the largest unit,
+    // - N-1 converters convert to bigger units for which we want integers,
+    // - the Nth converter (index N-1) converts to the smallest unit, for which
+    //   we keep a double.
+    MaybeStackArray<int64_t, 5> intValues(unitConverters_.length() - 1, status);
+    if (U_FAILURE(status)) {
+        return result;
+    }
+    uprv_memset(intValues.getAlias(), 0, (unitConverters_.length() - 1) * sizeof(int64_t));
+
+    for (int i = 0, n = unitConverters_.length(); i < n; ++i) {
+        quantity = (*unitConverters_[i]).convert(quantity);
+        if (i < n - 1) {
+            // The double type has 15 decimal digits of precision. For choosing
+            // whether to use the current unit or the next smaller unit, we
+            // therefore nudge up the number with which the thresholding
+            // decision is made. However after the thresholding, we use the
+            // original values to ensure unbiased accuracy (to the extent of
+            // double's capabilities).
+            int64_t roundedQuantity = floor(quantity * (1 + DBL_EPSILON));
+            intValues[i] = roundedQuantity;
+
+            // Keep the residual of the quantity.
+            //   For example: `3.6 feet`, keep only `0.6 feet`
+            //
+            // When the calculation is near enough +/- DBL_EPSILON, we round to
+            // zero. (We also ensure no negative values here.)
+            if ((quantity - roundedQuantity) / quantity < DBL_EPSILON) {
+                quantity = 0;
+            } else {
+                quantity -= roundedQuantity;
+            }
+        } else { // LAST ELEMENT
+            if (rounder == nullptr) {
+                // Nothing to do for the last element.
+                break;
+            }
+
+            // Round the last value
+            // TODO(ICU-21288): get smarter about precision for mixed units.
+            number::impl::DecimalQuantity quant;
+            quant.setToDouble(quantity);
+            rounder->apply(quant, status);
+            if (U_FAILURE(status)) {
+                return result;
+            }
+            quantity = quant.toDouble();
+            if (i == 0) {
+                // Last element is also the first element, so we're done
+                break;
+            }
+
+            // Check if there's a carry, and bubble it back up the resulting intValues.
+            int64_t carry = floor(unitConverters_[i]->convertInverse(quantity) * (1 + DBL_EPSILON));
+            if (carry <= 0) {
+                break;
+            }
+            quantity -= unitConverters_[i]->convert(carry);
+            intValues[i - 1] += carry;
+
+            // We don't use the first converter: that one is for the input unit
+            for (int32_t j = i - 1; j > 0; j--) {
+                carry = floor(unitConverters_[j]->convertInverse(intValues[j]) * (1 + DBL_EPSILON));
+                if (carry <= 0) {
+                    break;
+                }
+                intValues[j] -= round(unitConverters_[j]->convert(carry));
+                intValues[j - 1] += carry;
+            }
+        }
+    }
+
+    // Package values into Measure instances in result:
+    for (int i = 0, n = unitConverters_.length(); i < n; ++i) {
+        if (i < n - 1) {
+            Formattable formattableQuantity(intValues[i] * sign);
+            // Measure takes ownership of the MeasureUnit*
+            MeasureUnit *type = new MeasureUnit(units_[i]->copy(status).build(status));
+            if (result.emplaceBackAndCheckErrorCode(status, formattableQuantity, type, status) ==
+                nullptr) {
+                // Ownership wasn't taken
+                U_ASSERT(U_FAILURE(status));
+                delete type;
+            }
+            if (U_FAILURE(status)) {
+                return result;
+            }
+        } else { // LAST ELEMENT
+            // Add the last element, not an integer:
+            Formattable formattableQuantity(quantity * sign);
+            // Measure takes ownership of the MeasureUnit*
+            MeasureUnit *type = new MeasureUnit(units_[i]->copy(status).build(status));
+            if (result.emplaceBackAndCheckErrorCode(status, formattableQuantity, type, status) ==
+                nullptr) {
+                // Ownership wasn't taken
+                U_ASSERT(U_FAILURE(status));
+                delete type;
+            }
+            if (U_FAILURE(status)) {
+                return result;
+            }
+            U_ASSERT(result.length() == i + 1);
+            U_ASSERT(result[i] != nullptr);
+        }
+    }
+
+    MaybeStackVector<Measure> orderedResult;
+    int32_t unitsCount = outputUnits_.length();
+    U_ASSERT(unitsCount == units_.length());
+    Measure **arr = result.getAlias();
+    // O(N^2) is fine: mixed units' unitsCount is usually 2 or 3.
+    for (int32_t i = 0; i < unitsCount; i++) {
+        for (int32_t j = i; j < unitsCount; j++) {
+            // Find the next expected unit, and swap it into place.
+            U_ASSERT(result[j] != nullptr);
+            if (result[j]->getUnit() == *outputUnits_[i]) {
+                if (j != i) {
+                    Measure *tmp = arr[j];
+                    arr[j] = arr[i];
+                    arr[i] = tmp;
+                }
+            }
+        }
+    }
+
+    return result;
+}
+
+} // namespace units
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/units_complexconverter.h b/icu4c/source/i18n/units_complexconverter.h
new file mode 100644
index 0000000..83c5b94
--- /dev/null
+++ b/icu4c/source/i18n/units_complexconverter.h
@@ -0,0 +1,93 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+#ifndef __UNITS_COMPLEXCONVERTER_H__
+#define __UNITS_COMPLEXCONVERTER_H__
+
+#include "cmemory.h"
+#include "measunit_impl.h"
+#include "number_roundingutils.h"
+#include "unicode/errorcode.h"
+#include "unicode/measure.h"
+#include "units_converter.h"
+#include "units_data.h"
+
+U_NAMESPACE_BEGIN
+
+// Export explicit template instantiations of MaybeStackArray, MemoryPool and
+// MaybeStackVector. This is required when building DLLs for Windows. (See
+// datefmt.h, collationiterator.h, erarules.h and others for similar examples.)
+//
+// Note: These need to be outside of the units namespace, or Clang will generate
+// a compile error.
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API MaybeStackArray<units::UnitConverter*, 8>;
+template class U_I18N_API MemoryPool<units::UnitConverter, 8>;
+template class U_I18N_API MaybeStackVector<units::UnitConverter, 8>;
+template class U_I18N_API MaybeStackArray<MeasureUnitImpl*, 8>;
+template class U_I18N_API MemoryPool<MeasureUnitImpl, 8>;
+template class U_I18N_API MaybeStackVector<MeasureUnitImpl, 8>;
+template class U_I18N_API MaybeStackArray<MeasureUnit*, 8>;
+template class U_I18N_API MemoryPool<MeasureUnit, 8>;
+template class U_I18N_API MaybeStackVector<MeasureUnit, 8>;
+#endif
+
+namespace units {
+
+/**
+ *  Converts from single or compound unit to single, compound or mixed units.
+ * For example, from `meter` to `foot+inch`.
+ *
+ *  DESIGN:
+ *    This class uses `UnitConverter` in order to perform the single converter (i.e. converters from a
+ *    single unit to another single unit). Therefore, `ComplexUnitsConverter` class contains multiple
+ *    instances of the `UnitConverter` to perform the conversion.
+ */
+class U_I18N_API ComplexUnitsConverter : public UMemory {
+  public:
+    /**
+     * Constructor of `ComplexUnitsConverter`.
+     * NOTE:
+     *   - inputUnit and outputUnits must be under the same category
+     *      - e.g. meter to feet and inches --> all of them are length units.
+     *
+     * @param inputUnit represents the source unit. (should be single or compound unit).
+     * @param outputUnits represents the output unit. could be any type. (single, compound or mixed).
+     * @param status
+     */
+    ComplexUnitsConverter(const MeasureUnitImpl &inputUnit, const MeasureUnitImpl &outputUnits,
+                          const ConversionRates &ratesInfo, UErrorCode &status);
+
+    // Returns true if the specified `quantity` of the `inputUnit`, expressed in terms of the biggest
+    // unit in the MeasureUnit `outputUnit`, is greater than or equal to `limit`.
+    //    For example, if the input unit is `meter` and the target unit is `foot+inch`. Therefore, this
+    //    function will convert the `quantity` from `meter` to `foot`, then, it will compare the value in
+    //    `foot` with the `limit`.
+    UBool greaterThanOrEqual(double quantity, double limit) const;
+
+    // Returns outputMeasures which is an array with the corresponding values.
+    //    - E.g. converting meters to feet and inches.
+    //                  1 meter --> 3 feet, 3.3701 inches
+    //         NOTE:
+    //           the smallest element is the only element that could have fractional values. And all
+    //           other elements are floored to the nearest integer
+    MaybeStackVector<Measure>
+    convert(double quantity, icu::number::impl::RoundingImpl *rounder, UErrorCode &status) const;
+
+  private:
+    MaybeStackVector<UnitConverter> unitConverters_;
+    // Individual units of mixed units, sorted big to small
+    MaybeStackVector<MeasureUnitImpl> units_;
+    // Individual units of mixed units, sorted in desired output order
+    MaybeStackVector<MeasureUnit> outputUnits_;
+};
+
+} // namespace units
+U_NAMESPACE_END
+
+#endif //__UNITS_COMPLEXCONVERTER_H__
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/units_converter.cpp b/icu4c/source/i18n/units_converter.cpp
new file mode 100644
index 0000000..a777d02
--- /dev/null
+++ b/icu4c/source/i18n/units_converter.cpp
@@ -0,0 +1,546 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "charstr.h"
+#include "cmemory.h"
+#include "double-conversion-string-to-double.h"
+#include "measunit_impl.h"
+#include "uassert.h"
+#include "unicode/errorcode.h"
+#include "unicode/localpointer.h"
+#include "unicode/stringpiece.h"
+#include "units_converter.h"
+#include <algorithm>
+#include <cmath>
+#include <stdlib.h>
+#include <utility>
+
+U_NAMESPACE_BEGIN
+namespace units {
+
+void U_I18N_API Factor::multiplyBy(const Factor &rhs) {
+    factorNum *= rhs.factorNum;
+    factorDen *= rhs.factorDen;
+    for (int i = 0; i < CONSTANTS_COUNT; i++) {
+        constants[i] += rhs.constants[i];
+    }
+
+    // NOTE
+    //  We need the offset when the source and the target are simple units. e.g. the source is
+    //  celsius and the target is Fahrenheit. Therefore, we just keep the value using `std::max`.
+    offset = std::max(rhs.offset, offset);
+}
+
+void U_I18N_API Factor::divideBy(const Factor &rhs) {
+    factorNum *= rhs.factorDen;
+    factorDen *= rhs.factorNum;
+    for (int i = 0; i < CONSTANTS_COUNT; i++) {
+        constants[i] -= rhs.constants[i];
+    }
+
+    // NOTE
+    //  We need the offset when the source and the target are simple units. e.g. the source is
+    //  celsius and the target is Fahrenheit. Therefore, we just keep the value using `std::max`.
+    offset = std::max(rhs.offset, offset);
+}
+
+void U_I18N_API Factor::power(int32_t power) {
+    // multiply all the constant by the power.
+    for (int i = 0; i < CONSTANTS_COUNT; i++) {
+        constants[i] *= power;
+    }
+
+    bool shouldFlip = power < 0; // This means that after applying the absolute power, we should flip
+                                 // the Numerator and Denominator.
+
+    factorNum = std::pow(factorNum, std::abs(power));
+    factorDen = std::pow(factorDen, std::abs(power));
+
+    if (shouldFlip) {
+        // Flip Numerator and Denominator.
+        std::swap(factorNum, factorDen);
+    }
+}
+
+void U_I18N_API Factor::flip() {
+    std::swap(factorNum, factorDen);
+
+    for (int i = 0; i < CONSTANTS_COUNT; i++) {
+        constants[i] *= -1;
+    }
+}
+
+void U_I18N_API Factor::applySiPrefix(UMeasureSIPrefix siPrefix) {
+    if (siPrefix == UMeasureSIPrefix::UMEASURE_SI_PREFIX_ONE) return; // No need to do anything
+
+    double siApplied = std::pow(10.0, std::abs(siPrefix));
+
+    if (siPrefix < 0) {
+        factorDen *= siApplied;
+        return;
+    }
+
+    factorNum *= siApplied;
+}
+
+void U_I18N_API Factor::substituteConstants() {
+    for (int i = 0; i < CONSTANTS_COUNT; i++) {
+        if (this->constants[i] == 0) {
+            continue;
+        }
+
+        auto absPower = std::abs(this->constants[i]);
+        Signum powerSig = this->constants[i] < 0 ? Signum::NEGATIVE : Signum::POSITIVE;
+        double absConstantValue = std::pow(constantsValues[i], absPower);
+
+        if (powerSig == Signum::NEGATIVE) {
+            this->factorDen *= absConstantValue;
+        } else {
+            this->factorNum *= absConstantValue;
+        }
+
+        this->constants[i] = 0;
+    }
+}
+
+namespace {
+
+/* Helpers */
+
+using icu::double_conversion::StringToDoubleConverter;
+
+// TODO: Make this a shared-utility function.
+// Returns `double` from a scientific number(i.e. "1", "2.01" or "3.09E+4")
+double strToDouble(StringPiece strNum, UErrorCode &status) {
+    // We are processing well-formed input, so we don't need any special options to
+    // StringToDoubleConverter.
+    StringToDoubleConverter converter(0, 0, 0, "", "");
+    int32_t count;
+    double result = converter.StringToDouble(strNum.data(), strNum.length(), &count);
+    if (count != strNum.length()) {
+        status = U_INVALID_FORMAT_ERROR;
+    }
+
+    return result;
+}
+
+// Returns `double` from a scientific number that could has a division sign (i.e. "1", "2.01", "3.09E+4"
+// or "2E+2/3")
+double strHasDivideSignToDouble(StringPiece strWithDivide, UErrorCode &status) {
+    int divisionSignInd = -1;
+    for (int i = 0, n = strWithDivide.length(); i < n; ++i) {
+        if (strWithDivide.data()[i] == '/') {
+            divisionSignInd = i;
+            break;
+        }
+    }
+
+    if (divisionSignInd >= 0) {
+        return strToDouble(strWithDivide.substr(0, divisionSignInd), status) /
+               strToDouble(strWithDivide.substr(divisionSignInd + 1), status);
+    }
+
+    return strToDouble(strWithDivide, status);
+}
+
+/*
+  Adds single factor to a `Factor` object. Single factor means "23^2", "23.3333", "ft2m^3" ...etc.
+  However, complex factor are not included, such as "ft2m^3*200/3"
+*/
+void addFactorElement(Factor &factor, StringPiece elementStr, Signum signum, UErrorCode &status) {
+    StringPiece baseStr;
+    StringPiece powerStr;
+    int32_t power =
+        1; // In case the power is not written, then, the power is equal 1 ==> `ft2m^1` == `ft2m`
+
+    // Search for the power part
+    int32_t powerInd = -1;
+    for (int32_t i = 0, n = elementStr.length(); i < n; ++i) {
+        if (elementStr.data()[i] == '^') {
+            powerInd = i;
+            break;
+        }
+    }
+
+    if (powerInd > -1) {
+        // There is power
+        baseStr = elementStr.substr(0, powerInd);
+        powerStr = elementStr.substr(powerInd + 1);
+
+        power = static_cast<int32_t>(strToDouble(powerStr, status));
+    } else {
+        baseStr = elementStr;
+    }
+
+    addSingleFactorConstant(baseStr, power, signum, factor, status);
+}
+
+/*
+ * Extracts `Factor` from a complete string factor. e.g. "ft2m^3*1007/cup2m3*3"
+ */
+Factor extractFactorConversions(StringPiece stringFactor, UErrorCode &status) {
+    Factor result;
+    Signum signum = Signum::POSITIVE;
+    auto factorData = stringFactor.data();
+    for (int32_t i = 0, start = 0, n = stringFactor.length(); i < n; i++) {
+        if (factorData[i] == '*' || factorData[i] == '/') {
+            StringPiece factorElement = stringFactor.substr(start, i - start);
+            addFactorElement(result, factorElement, signum, status);
+
+            start = i + 1; // Set `start` to point to the start of the new element.
+        } else if (i == n - 1) {
+            // Last element
+            addFactorElement(result, stringFactor.substr(start, i + 1), signum, status);
+        }
+
+        if (factorData[i] == '/') {
+            signum = Signum::NEGATIVE; // Change the signum because we reached the Denominator.
+        }
+    }
+
+    return result;
+}
+
+// Load factor for a single source
+Factor loadSingleFactor(StringPiece source, const ConversionRates &ratesInfo, UErrorCode &status) {
+    const auto conversionUnit = ratesInfo.extractConversionInfo(source, status);
+    if (U_FAILURE(status)) return Factor();
+    if (conversionUnit == nullptr) {
+        status = U_INTERNAL_PROGRAM_ERROR;
+        return Factor();
+    }
+
+    Factor result = extractFactorConversions(conversionUnit->factor.toStringPiece(), status);
+    result.offset = strHasDivideSignToDouble(conversionUnit->offset.toStringPiece(), status);
+
+    return result;
+}
+
+// Load Factor of a compound source unit.
+Factor loadCompoundFactor(const MeasureUnitImpl &source, const ConversionRates &ratesInfo,
+                          UErrorCode &status) {
+
+    Factor result;
+    for (int32_t i = 0, n = source.units.length(); i < n; i++) {
+        SingleUnitImpl singleUnit = *source.units[i];
+
+        Factor singleFactor = loadSingleFactor(singleUnit.getSimpleUnitID(), ratesInfo, status);
+        if (U_FAILURE(status)) return result;
+
+        // Apply SiPrefix before the power, because the power may be will flip the factor.
+        singleFactor.applySiPrefix(singleUnit.siPrefix);
+
+        // Apply the power of the `dimensionality`
+        singleFactor.power(singleUnit.dimensionality);
+
+        result.multiplyBy(singleFactor);
+    }
+
+    return result;
+}
+
+/**
+ * Checks if the source unit and the target unit are simple. For example celsius or fahrenheit. But not
+ * square-celsius or square-fahrenheit.
+ *
+ * NOTE:
+ *  Empty unit means simple unit.
+ */
+UBool checkSimpleUnit(const MeasureUnitImpl &unit, UErrorCode &status) {
+    if (U_FAILURE(status)) return false;
+
+    if (unit.complexity != UMEASURE_UNIT_SINGLE) {
+        return false;
+    }
+    if (unit.units.length() == 0) {
+        // Empty units means simple unit.
+        return true;
+    }
+
+    auto singleUnit = *(unit.units[0]);
+
+    if (singleUnit.dimensionality != 1 || singleUnit.siPrefix != UMEASURE_SI_PREFIX_ONE) {
+        return false;
+    }
+
+    return true;
+}
+
+/**
+ *  Extract conversion rate from `source` to `target`
+ */
+void loadConversionRate(ConversionRate &conversionRate, const MeasureUnitImpl &source,
+                        const MeasureUnitImpl &target, Convertibility unitsState,
+                        const ConversionRates &ratesInfo, UErrorCode &status) {
+    // Represents the conversion factor from the source to the target.
+    Factor finalFactor;
+
+    // Represents the conversion factor from the source to the base unit that specified in the conversion
+    // data which is considered as the root of the source and the target.
+    Factor sourceToBase = loadCompoundFactor(source, ratesInfo, status);
+    Factor targetToBase = loadCompoundFactor(target, ratesInfo, status);
+
+    // Merger Factors
+    finalFactor.multiplyBy(sourceToBase);
+    if (unitsState == Convertibility::CONVERTIBLE) {
+        finalFactor.divideBy(targetToBase);
+    } else if (unitsState == Convertibility::RECIPROCAL) {
+        finalFactor.multiplyBy(targetToBase);
+    } else {
+        status = UErrorCode::U_ARGUMENT_TYPE_MISMATCH;
+        return;
+    }
+
+    finalFactor.substituteConstants();
+
+    conversionRate.factorNum = finalFactor.factorNum;
+    conversionRate.factorDen = finalFactor.factorDen;
+
+    // In case of simple units (such as: celsius or fahrenheit), offsets are considered.
+    if (checkSimpleUnit(source, status) && checkSimpleUnit(target, status)) {
+        conversionRate.sourceOffset =
+            sourceToBase.offset * sourceToBase.factorDen / sourceToBase.factorNum;
+        conversionRate.targetOffset =
+            targetToBase.offset * targetToBase.factorDen / targetToBase.factorNum;
+    }
+
+    conversionRate.reciprocal = unitsState == Convertibility::RECIPROCAL;
+}
+
+struct UnitIndexAndDimension : UMemory {
+    int32_t index = 0;
+    int32_t dimensionality = 0;
+
+    UnitIndexAndDimension(const SingleUnitImpl &singleUnit, int32_t multiplier) {
+        index = singleUnit.index;
+        dimensionality = singleUnit.dimensionality * multiplier;
+    }
+};
+
+void mergeSingleUnitWithDimension(MaybeStackVector<UnitIndexAndDimension> &unitIndicesWithDimension,
+                                  const SingleUnitImpl &shouldBeMerged, int32_t multiplier) {
+    for (int32_t i = 0; i < unitIndicesWithDimension.length(); i++) {
+        auto &unitWithIndex = *unitIndicesWithDimension[i];
+        if (unitWithIndex.index == shouldBeMerged.index) {
+            unitWithIndex.dimensionality += shouldBeMerged.dimensionality * multiplier;
+            return;
+        }
+    }
+
+    unitIndicesWithDimension.emplaceBack(shouldBeMerged, multiplier);
+}
+
+void mergeUnitsAndDimensions(MaybeStackVector<UnitIndexAndDimension> &unitIndicesWithDimension,
+                             const MeasureUnitImpl &shouldBeMerged, int32_t multiplier) {
+    for (int32_t unit_i = 0; unit_i < shouldBeMerged.units.length(); unit_i++) {
+        auto singleUnit = *shouldBeMerged.units[unit_i];
+        mergeSingleUnitWithDimension(unitIndicesWithDimension, singleUnit, multiplier);
+    }
+}
+
+UBool checkAllDimensionsAreZeros(const MaybeStackVector<UnitIndexAndDimension> &dimensionVector) {
+    for (int32_t i = 0; i < dimensionVector.length(); i++) {
+        if (dimensionVector[i]->dimensionality != 0) {
+            return false;
+        }
+    }
+
+    return true;
+}
+
+} // namespace
+
+// Conceptually, this modifies factor: factor *= baseStr^(signum*power).
+//
+// baseStr must be a known constant or a value that strToDouble() is able to
+// parse.
+void U_I18N_API addSingleFactorConstant(StringPiece baseStr, int32_t power, Signum signum,
+                                        Factor &factor, UErrorCode &status) {
+    if (baseStr == "ft_to_m") {
+        factor.constants[CONSTANT_FT2M] += power * signum;
+    } else if (baseStr == "ft2_to_m2") {
+        factor.constants[CONSTANT_FT2M] += 2 * power * signum;
+    } else if (baseStr == "ft3_to_m3") {
+        factor.constants[CONSTANT_FT2M] += 3 * power * signum;
+    } else if (baseStr == "in3_to_m3") {
+        factor.constants[CONSTANT_FT2M] += 3 * power * signum;
+        factor.factorDen *= 12 * 12 * 12;
+    } else if (baseStr == "gal_to_m3") {
+        factor.factorNum *= 231;
+        factor.constants[CONSTANT_FT2M] += 3 * power * signum;
+        factor.factorDen *= 12 * 12 * 12;
+    } else if (baseStr == "gal_imp_to_m3") {
+        factor.constants[CONSTANT_GAL_IMP2M3] += power * signum;
+    } else if (baseStr == "G") {
+        factor.constants[CONSTANT_G] += power * signum;
+    } else if (baseStr == "gravity") {
+        factor.constants[CONSTANT_GRAVITY] += power * signum;
+    } else if (baseStr == "lb_to_kg") {
+        factor.constants[CONSTANT_LB2KG] += power * signum;
+    } else if (baseStr == "PI") {
+        factor.constants[CONSTANT_PI] += power * signum;
+    } else {
+        if (signum == Signum::NEGATIVE) {
+            factor.factorDen *= std::pow(strToDouble(baseStr, status), power);
+        } else {
+            factor.factorNum *= std::pow(strToDouble(baseStr, status), power);
+        }
+    }
+}
+
+/**
+ * Extracts the compound base unit of a compound unit (`source`). For example, if the source unit is
+ * `square-mile-per-hour`, the compound base unit will be `square-meter-per-second`
+ */
+MeasureUnitImpl U_I18N_API extractCompoundBaseUnit(const MeasureUnitImpl &source,
+                                                   const ConversionRates &conversionRates,
+                                                   UErrorCode &status) {
+
+    MeasureUnitImpl result;
+    if (U_FAILURE(status)) return result;
+
+    const auto &singleUnits = source.units;
+    for (int i = 0, count = singleUnits.length(); i < count; ++i) {
+        const auto &singleUnit = *singleUnits[i];
+        // Extract `ConversionRateInfo` using the absolute unit. For example: in case of `square-meter`,
+        // we will use `meter`
+        const auto rateInfo =
+            conversionRates.extractConversionInfo(singleUnit.getSimpleUnitID(), status);
+        if (U_FAILURE(status)) {
+            return result;
+        }
+        if (rateInfo == nullptr) {
+            status = U_INTERNAL_PROGRAM_ERROR;
+            return result;
+        }
+
+        // Multiply the power of the singleUnit by the power of the baseUnit. For example, square-hectare
+        // must be pow4-meter. (NOTE: hectare --> square-meter)
+        auto baseUnits =
+            MeasureUnitImpl::forIdentifier(rateInfo->baseUnit.toStringPiece(), status).units;
+        for (int32_t i = 0, baseUnitsCount = baseUnits.length(); i < baseUnitsCount; i++) {
+            baseUnits[i]->dimensionality *= singleUnit.dimensionality;
+            // TODO: Deal with SI-prefix
+            result.append(*baseUnits[i], status);
+
+            if (U_FAILURE(status)) {
+                return result;
+            }
+        }
+    }
+
+    return result;
+}
+
+/**
+ * Determine the convertibility between `source` and `target`.
+ * For example:
+ *    `meter` and `foot` are `CONVERTIBLE`.
+ *    `meter-per-second` and `second-per-meter` are `RECIPROCAL`.
+ *    `meter` and `pound` are `UNCONVERTIBLE`.
+ *
+ * NOTE:
+ *    Only works with SINGLE and COMPOUND units. If one of the units is a
+ *    MIXED unit, an error will occur. For more information, see UMeasureUnitComplexity.
+ */
+Convertibility U_I18N_API extractConvertibility(const MeasureUnitImpl &source,
+                                                const MeasureUnitImpl &target,
+                                                const ConversionRates &conversionRates,
+                                                UErrorCode &status) {
+
+    if (source.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED ||
+        target.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED) {
+        status = U_INTERNAL_PROGRAM_ERROR;
+        return UNCONVERTIBLE;
+    }
+
+    MeasureUnitImpl sourceBaseUnit = extractCompoundBaseUnit(source, conversionRates, status);
+    MeasureUnitImpl targetBaseUnit = extractCompoundBaseUnit(target, conversionRates, status);
+    if (U_FAILURE(status)) return UNCONVERTIBLE;
+
+    MaybeStackVector<UnitIndexAndDimension> convertible;
+    MaybeStackVector<UnitIndexAndDimension> reciprocal;
+
+    mergeUnitsAndDimensions(convertible, sourceBaseUnit, 1);
+    mergeUnitsAndDimensions(reciprocal, sourceBaseUnit, 1);
+
+    mergeUnitsAndDimensions(convertible, targetBaseUnit, -1);
+    mergeUnitsAndDimensions(reciprocal, targetBaseUnit, 1);
+
+    if (checkAllDimensionsAreZeros(convertible)) {
+        return CONVERTIBLE;
+    }
+
+    if (checkAllDimensionsAreZeros(reciprocal)) {
+        return RECIPROCAL;
+    }
+
+    return UNCONVERTIBLE;
+}
+
+UnitConverter::UnitConverter(const MeasureUnitImpl &source, const MeasureUnitImpl &target,
+                             const ConversionRates &ratesInfo, UErrorCode &status)
+    : conversionRate_(source.copy(status), target.copy(status)) {
+    if (source.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED ||
+        target.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED) {
+        status = U_INTERNAL_PROGRAM_ERROR;
+        return;
+    }
+
+    Convertibility unitsState = extractConvertibility(source, target, ratesInfo, status);
+    if (U_FAILURE(status)) return;
+    if (unitsState == Convertibility::UNCONVERTIBLE) {
+        status = U_INTERNAL_PROGRAM_ERROR;
+        return;
+    }
+
+    loadConversionRate(conversionRate_, conversionRate_.source, conversionRate_.target, unitsState,
+                       ratesInfo, status);
+}
+
+double UnitConverter::convert(double inputValue) const {
+    double result =
+        inputValue + conversionRate_.sourceOffset; // Reset the input to the target zero index.
+    // Convert the quantity to from the source scale to the target scale.
+    result *= conversionRate_.factorNum / conversionRate_.factorDen;
+
+    result -= conversionRate_.targetOffset; // Set the result to its index.
+
+    if (conversionRate_.reciprocal) {
+        if (result == 0) {
+            // TODO: demonstrate the resulting behaviour in tests... and figure
+            // out desired behaviour. (Theoretical result should be infinity,
+            // not 0.)
+            return 0.0;
+        }
+        result = 1.0 / result;
+    }
+
+    return result;
+}
+
+double UnitConverter::convertInverse(double inputValue) const {
+    double result = inputValue;
+    if (conversionRate_.reciprocal) {
+        if (result == 0) {
+            // TODO: demonstrate the resulting behaviour in tests... and figure
+            // out desired behaviour. (Theoretical result should be infinity,
+            // not 0.)
+            return 0.0;
+        }
+        result = 1.0 / result;
+    }
+    result += conversionRate_.targetOffset;
+    result *= conversionRate_.factorDen / conversionRate_.factorNum;
+    result -= conversionRate_.sourceOffset;
+    return result;
+}
+
+} // namespace units
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/units_converter.h b/icu4c/source/i18n/units_converter.h
new file mode 100644
index 0000000..7650131
--- /dev/null
+++ b/icu4c/source/i18n/units_converter.h
@@ -0,0 +1,173 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+#ifndef __UNITS_CONVERTER_H__
+#define __UNITS_CONVERTER_H__
+
+#include "cmemory.h"
+#include "measunit_impl.h"
+#include "unicode/errorcode.h"
+#include "unicode/stringpiece.h"
+#include "unicode/uobject.h"
+#include "units_converter.h"
+#include "units_data.h"
+
+U_NAMESPACE_BEGIN
+namespace units {
+
+/* Internal Structure */
+
+enum Constants {
+    CONSTANT_FT2M,    // ft2m stands for foot to meter.
+    CONSTANT_PI,      // PI
+    CONSTANT_GRAVITY, // Gravity
+    CONSTANT_G,
+    CONSTANT_GAL_IMP2M3, // Gallon imp to m3
+    CONSTANT_LB2KG,      // Pound to Kilogram
+
+    // Must be the last element.
+    CONSTANTS_COUNT
+};
+
+// These values are a hard-coded subset of unitConstants in the units
+// resources file. A unit test checks that all constants in the resource
+// file are at least recognised by the code. Derived constants' values or
+// hard-coded derivations are not checked.
+static const double constantsValues[CONSTANTS_COUNT] = {
+    0.3048,                    // CONSTANT_FT2M
+    411557987.0 / 131002976.0, // CONSTANT_PI
+    9.80665,                   // CONSTANT_GRAVITY
+    6.67408E-11,               // CONSTANT_G
+    0.00454609,                // CONSTANT_GAL_IMP2M3
+    0.45359237,                // CONSTANT_LB2KG
+};
+
+typedef enum Signum {
+    NEGATIVE = -1,
+    POSITIVE = 1,
+} Signum;
+
+/* Represents a conversion factor */
+struct U_I18N_API Factor {
+    double factorNum = 1;
+    double factorDen = 1;
+    double offset = 0;
+    bool reciprocal = false;
+    int32_t constants[CONSTANTS_COUNT] = {};
+
+    void multiplyBy(const Factor &rhs);
+    void divideBy(const Factor &rhs);
+
+    // Apply the power to the factor.
+    void power(int32_t power);
+
+    // Flip the `Factor`, for example, factor= 2/3, flippedFactor = 3/2
+    void flip();
+
+    // Apply SI prefix to the `Factor`
+    void applySiPrefix(UMeasureSIPrefix siPrefix);
+    void substituteConstants();
+};
+
+/*
+ * Adds a single factor element to the `Factor`. e.g "ft3m", "2.333" or "cup2m3". But not "cup2m3^3".
+ */
+void U_I18N_API addSingleFactorConstant(StringPiece baseStr, int32_t power, Signum sigNum,
+                                        Factor &factor, UErrorCode &status);
+
+/**
+ * Represents the conversion rate between `source` and `target`.
+ */
+struct U_I18N_API ConversionRate : public UMemory {
+    const MeasureUnitImpl source;
+    const MeasureUnitImpl target;
+    double factorNum = 1;
+    double factorDen = 1;
+    double sourceOffset = 0;
+    double targetOffset = 0;
+    bool reciprocal = false;
+
+    ConversionRate(MeasureUnitImpl &&source, MeasureUnitImpl &&target)
+        : source(std::move(source)), target(std::move(target)) {}
+};
+
+enum Convertibility {
+    RECIPROCAL,
+    CONVERTIBLE,
+    UNCONVERTIBLE,
+};
+
+MeasureUnitImpl U_I18N_API extractCompoundBaseUnit(const MeasureUnitImpl &source,
+                                                   const ConversionRates &conversionRates,
+                                                   UErrorCode &status);
+
+/**
+ * Check if the convertibility between `source` and `target`.
+ * For example:
+ *    `meter` and `foot` are `CONVERTIBLE`.
+ *    `meter-per-second` and `second-per-meter` are `RECIPROCAL`.
+ *    `meter` and `pound` are `UNCONVERTIBLE`.
+ *
+ * NOTE:
+ *    Only works with SINGLE and COMPOUND units. If one of the units is a
+ *    MIXED unit, an error will occur. For more information, see UMeasureUnitComplexity.
+ */
+Convertibility U_I18N_API extractConvertibility(const MeasureUnitImpl &source,
+                                                const MeasureUnitImpl &target,
+                                                const ConversionRates &conversionRates,
+                                                UErrorCode &status);
+
+/**
+ * Converts from a source `MeasureUnit` to a target `MeasureUnit`.
+ *
+ * NOTE:
+ *    Only works with SINGLE and COMPOUND units. If one of the units is a
+ *    MIXED unit, an error will occur. For more information, see UMeasureUnitComplexity.
+ */
+class U_I18N_API UnitConverter : public UMemory {
+  public:
+    /**
+     * Constructor of `UnitConverter`.
+     * NOTE:
+     *   - source and target must be under the same category
+     *      - e.g. meter to mile --> both of them are length units.
+     *
+     * @param source represents the source unit.
+     * @param target represents the target unit.
+     * @param ratesInfo Contains all the needed conversion rates.
+     * @param status
+     */
+    UnitConverter(const MeasureUnitImpl &source, const MeasureUnitImpl &target,
+                  const ConversionRates &ratesInfo, UErrorCode &status);
+
+    /**
+     * Convert a measurement expressed in the source unit to a measurement
+     * expressed in the target unit.
+     *
+     * @param inputValue the value to be converted.
+     * @return the converted value.
+     */
+    double convert(double inputValue) const;
+
+    /**
+     * The inverse of convert(): convert a measurement expressed in the target
+     * unit to a measurement expressed in the source unit.
+     *
+     * @param inputValue the value to be converted.
+     * @return the converted value.
+     */
+    double convertInverse(double inputValue) const;
+
+  private:
+    ConversionRate conversionRate_;
+};
+
+} // namespace units
+U_NAMESPACE_END
+
+#endif //__UNITS_CONVERTER_H__
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/units_data.cpp b/icu4c/source/i18n/units_data.cpp
new file mode 100644
index 0000000..42bd624
--- /dev/null
+++ b/icu4c/source/i18n/units_data.cpp
@@ -0,0 +1,428 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "cstring.h"
+#include "number_decimalquantity.h"
+#include "resource.h"
+#include "uassert.h"
+#include "unicode/unistr.h"
+#include "unicode/ures.h"
+#include "units_data.h"
+#include "uresimp.h"
+#include "util.h"
+#include <utility>
+
+U_NAMESPACE_BEGIN
+namespace units {
+
+namespace {
+
+using icu::number::impl::DecimalQuantity;
+
+void trimSpaces(CharString& factor, UErrorCode& status){
+   CharString trimmed;
+   for (int i = 0 ; i < factor.length(); i++) {
+       if (factor[i] == ' ') continue;
+
+       trimmed.append(factor[i], status);
+   }
+
+   factor = std::move(trimmed);
+}
+
+/**
+ * A ResourceSink that collects conversion rate information.
+ *
+ * This class is for use by ures_getAllItemsWithFallback.
+ */
+class ConversionRateDataSink : public ResourceSink {
+  public:
+    /**
+     * Constructor.
+     * @param out The vector to which ConversionRateInfo instances are to be
+     * added. This vector must outlive the use of the ResourceSink.
+     */
+    explicit ConversionRateDataSink(MaybeStackVector<ConversionRateInfo> *out) : outVector(out) {}
+
+    /**
+     * Method for use by `ures_getAllItemsWithFallback`. Adds the unit
+     * conversion rates that are found in `value` to the output vector.
+     *
+     * @param source This string must be "convertUnits": the resource that this
+     * class supports reading.
+     * @param value The "convertUnits" resource, containing unit conversion rate
+     * information.
+     * @param noFallback Ignored.
+     * @param status The standard ICU error code output parameter.
+     */
+    void put(const char *source, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) {
+        if (U_FAILURE(status)) { return; }
+        if (uprv_strcmp(source, "convertUnits") != 0) {
+            // This is very strict, however it is the cheapest way to be sure
+            // that with `value`, we're looking at the convertUnits table.
+            status = U_ILLEGAL_ARGUMENT_ERROR;
+            return;
+        }
+        ResourceTable conversionRateTable = value.getTable(status);
+        const char *srcUnit;
+        // We're reusing `value`, which seems to be a common pattern:
+        for (int32_t unit = 0; conversionRateTable.getKeyAndValue(unit, srcUnit, value); unit++) {
+            ResourceTable unitTable = value.getTable(status);
+            const char *key;
+            UnicodeString baseUnit = ICU_Utility::makeBogusString();
+            UnicodeString factor = ICU_Utility::makeBogusString();
+            UnicodeString offset = ICU_Utility::makeBogusString();
+            for (int32_t i = 0; unitTable.getKeyAndValue(i, key, value); i++) {
+                if (uprv_strcmp(key, "target") == 0) {
+                    baseUnit = value.getUnicodeString(status);
+                } else if (uprv_strcmp(key, "factor") == 0) {
+                    factor = value.getUnicodeString(status);
+                } else if (uprv_strcmp(key, "offset") == 0) {
+                    offset = value.getUnicodeString(status);
+                }
+            }
+            if (U_FAILURE(status)) { return; }
+            if (baseUnit.isBogus() || factor.isBogus()) {
+                // We could not find a usable conversion rate: bad resource.
+                status = U_MISSING_RESOURCE_ERROR;
+                return;
+            }
+
+            // We don't have this ConversionRateInfo yet: add it.
+            ConversionRateInfo *cr = outVector->emplaceBack();
+            if (!cr) {
+                status = U_MEMORY_ALLOCATION_ERROR;
+                return;
+            } else {
+                cr->sourceUnit.append(srcUnit, status);
+                cr->baseUnit.appendInvariantChars(baseUnit, status);
+                cr->factor.appendInvariantChars(factor, status);
+                trimSpaces(cr->factor, status);
+                if (!offset.isBogus()) cr->offset.appendInvariantChars(offset, status);
+            }
+        }
+        return;
+    }
+
+  private:
+    MaybeStackVector<ConversionRateInfo> *outVector;
+};
+
+bool operator<(const UnitPreferenceMetadata &a, const UnitPreferenceMetadata &b) {
+    return a.compareTo(b) < 0;
+}
+
+/**
+ * A ResourceSink that collects unit preferences information.
+ *
+ * This class is for use by ures_getAllItemsWithFallback.
+ */
+class UnitPreferencesSink : public ResourceSink {
+  public:
+    /**
+     * Constructor.
+     * @param outPrefs The vector to which UnitPreference instances are to be
+     * added. This vector must outlive the use of the ResourceSink.
+     * @param outMetadata  The vector to which UnitPreferenceMetadata instances
+     * are to be added. This vector must outlive the use of the ResourceSink.
+     */
+    explicit UnitPreferencesSink(MaybeStackVector<UnitPreference> *outPrefs,
+                                 MaybeStackVector<UnitPreferenceMetadata> *outMetadata)
+        : preferences(outPrefs), metadata(outMetadata) {}
+
+    /**
+     * Method for use by `ures_getAllItemsWithFallback`. Adds the unit
+     * preferences info that are found in `value` to the output vector.
+     *
+     * @param source This string must be "unitPreferenceData": the resource that
+     * this class supports reading.
+     * @param value The "unitPreferenceData" resource, containing unit
+     * preferences data.
+     * @param noFallback Ignored.
+     * @param status The standard ICU error code output parameter. Note: if an
+     * error is returned, outPrefs and outMetadata may be inconsistent.
+     */
+    void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) {
+        if (U_FAILURE(status)) { return; }
+        if (uprv_strcmp(key, "unitPreferenceData") != 0) {
+            // This is very strict, however it is the cheapest way to be sure
+            // that with `value`, we're looking at the convertUnits table.
+            status = U_ILLEGAL_ARGUMENT_ERROR;
+            return;
+        }
+        // The unitPreferenceData structure (see data/misc/units.txt) contains a
+        // hierarchy of category/usage/region, within which are a set of
+        // preferences. Hence three for-loops and another loop for the
+        // preferences themselves:
+        ResourceTable unitPreferenceDataTable = value.getTable(status);
+        const char *category;
+        for (int32_t i = 0; unitPreferenceDataTable.getKeyAndValue(i, category, value); i++) {
+            ResourceTable categoryTable = value.getTable(status);
+            const char *usage;
+            for (int32_t j = 0; categoryTable.getKeyAndValue(j, usage, value); j++) {
+                ResourceTable regionTable = value.getTable(status);
+                const char *region;
+                for (int32_t k = 0; regionTable.getKeyAndValue(k, region, value); k++) {
+                    // `value` now contains the set of preferences for
+                    // category/usage/region.
+                    ResourceArray unitPrefs = value.getArray(status);
+                    if (U_FAILURE(status)) { return; }
+                    int32_t prefLen = unitPrefs.getSize();
+
+                    // Update metadata for this set of preferences.
+                    UnitPreferenceMetadata *meta = metadata->emplaceBack(
+                        category, usage, region, preferences->length(), prefLen, status);
+                    if (!meta) {
+                        status = U_MEMORY_ALLOCATION_ERROR;
+                        return;
+                    }
+                    if (U_FAILURE(status)) { return; }
+                    if (metadata->length() > 1) {
+                        // Verify that unit preferences are sorted and
+                        // without duplicates.
+                        if (!(*(*metadata)[metadata->length() - 2] <
+                              *(*metadata)[metadata->length() - 1])) {
+                            status = U_INVALID_FORMAT_ERROR;
+                            return;
+                        }
+                    }
+
+                    // Collect the individual preferences.
+                    for (int32_t i = 0; unitPrefs.getValue(i, value); i++) {
+                        UnitPreference *up = preferences->emplaceBack();
+                        if (!up) {
+                            status = U_MEMORY_ALLOCATION_ERROR;
+                            return;
+                        }
+                        ResourceTable unitPref = value.getTable(status);
+                        if (U_FAILURE(status)) { return; }
+                        for (int32_t i = 0; unitPref.getKeyAndValue(i, key, value); ++i) {
+                            if (uprv_strcmp(key, "unit") == 0) {
+                                int32_t length;
+                                const UChar *u = value.getString(length, status);
+                                up->unit.appendInvariantChars(u, length, status);
+                            } else if (uprv_strcmp(key, "geq") == 0) {
+                                int32_t length;
+                                const UChar *g = value.getString(length, status);
+                                CharString geq;
+                                geq.appendInvariantChars(g, length, status);
+                                DecimalQuantity dq;
+                                dq.setToDecNumber(geq.data(), status);
+                                up->geq = dq.toDouble();
+                            } else if (uprv_strcmp(key, "skeleton") == 0) {
+                                up->skeleton = value.getUnicodeString(status);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+  private:
+    MaybeStackVector<UnitPreference> *preferences;
+    MaybeStackVector<UnitPreferenceMetadata> *metadata;
+};
+
+int32_t binarySearch(const MaybeStackVector<UnitPreferenceMetadata> *metadata,
+                     const UnitPreferenceMetadata &desired, bool *foundCategory, bool *foundUsage,
+                     bool *foundRegion, UErrorCode &status) {
+    if (U_FAILURE(status)) { return -1; }
+    int32_t start = 0;
+    int32_t end = metadata->length();
+    *foundCategory = false;
+    *foundUsage = false;
+    *foundRegion = false;
+    while (start < end) {
+        int32_t mid = (start + end) / 2;
+        int32_t cmp = (*metadata)[mid]->compareTo(desired, foundCategory, foundUsage, foundRegion);
+        if (cmp < 0) {
+            start = mid + 1;
+        } else if (cmp > 0) {
+            end = mid;
+        } else {
+            return mid;
+        }
+    }
+    return -1;
+}
+
+/**
+ * Finds the UnitPreferenceMetadata instance that matches the given category,
+ * usage and region: if missing, region falls back to "001", and usage
+ * repeatedly drops tailing components, eventually trying "default"
+ * ("land-agriculture-grain" -> "land-agriculture" -> "land" -> "default").
+ *
+ * @param metadata The full list of UnitPreferenceMetadata instances.
+ * @param category The category to search for. See getUnitCategory().
+ * @param usage The usage for which formatting preferences is needed. If the
+ * given usage is not known, automatic fallback occurs, see function description
+ * above.
+ * @param region The region for which preferences are needed. If there are no
+ * region-specific preferences, this function automatically falls back to the
+ * "001" region (global).
+ * @param status The standard ICU error code output parameter.
+ *   * If an invalid category is given, status will be U_ILLEGAL_ARGUMENT_ERROR.
+ *   * If fallback to "default" or "001" didn't resolve, status will be
+ *     U_MISSING_RESOURCE.
+ * @return The index into the metadata vector which represents the appropriate
+ * preferences. If appropriate preferences are not found, -1 is returned.
+ */
+int32_t getPreferenceMetadataIndex(const MaybeStackVector<UnitPreferenceMetadata> *metadata,
+                                   StringPiece category, StringPiece usage, StringPiece region,
+                                   UErrorCode &status) {
+    if (U_FAILURE(status)) { return -1; }
+    bool foundCategory, foundUsage, foundRegion;
+    UnitPreferenceMetadata desired(category, usage, region, -1, -1, status);
+    int32_t idx = binarySearch(metadata, desired, &foundCategory, &foundUsage, &foundRegion, status);
+    if (U_FAILURE(status)) { return -1; }
+    if (idx >= 0) { return idx; }
+    if (!foundCategory) {
+        status = U_ILLEGAL_ARGUMENT_ERROR;
+        return -1;
+    }
+    U_ASSERT(foundCategory);
+    while (!foundUsage) {
+        int32_t lastDashIdx = desired.usage.lastIndexOf('-');
+        if (lastDashIdx > 0) {
+            desired.usage.truncate(lastDashIdx);
+        } else if (uprv_strcmp(desired.usage.data(), "default") != 0) {
+            desired.usage.truncate(0).append("default", status);
+        } else {
+            // "default" is not supposed to be missing for any valid category.
+            status = U_MISSING_RESOURCE_ERROR;
+            return -1;
+        }
+        idx = binarySearch(metadata, desired, &foundCategory, &foundUsage, &foundRegion, status);
+        if (U_FAILURE(status)) { return -1; }
+    }
+    U_ASSERT(foundCategory);
+    U_ASSERT(foundUsage);
+    if (!foundRegion) {
+        if (uprv_strcmp(desired.region.data(), "001") != 0) {
+            desired.region.truncate(0).append("001", status);
+            idx = binarySearch(metadata, desired, &foundCategory, &foundUsage, &foundRegion, status);
+        }
+        if (!foundRegion) {
+            // "001" is not supposed to be missing for any valid usage.
+            status = U_MISSING_RESOURCE_ERROR;
+            return -1;
+        }
+    }
+    U_ASSERT(foundCategory);
+    U_ASSERT(foundUsage);
+    U_ASSERT(foundRegion);
+    U_ASSERT(idx >= 0);
+    return idx;
+}
+
+} // namespace
+
+UnitPreferenceMetadata::UnitPreferenceMetadata(StringPiece category, StringPiece usage,
+                                               StringPiece region, int32_t prefsOffset,
+                                               int32_t prefsCount, UErrorCode &status) {
+    this->category.append(category, status);
+    this->usage.append(usage, status);
+    this->region.append(region, status);
+    this->prefsOffset = prefsOffset;
+    this->prefsCount = prefsCount;
+}
+
+int32_t UnitPreferenceMetadata::compareTo(const UnitPreferenceMetadata &other) const {
+    int32_t cmp = uprv_strcmp(category.data(), other.category.data());
+    if (cmp == 0) {
+        cmp = uprv_strcmp(usage.data(), other.usage.data());
+    }
+    if (cmp == 0) {
+        cmp = uprv_strcmp(region.data(), other.region.data());
+    }
+    return cmp;
+}
+
+int32_t UnitPreferenceMetadata::compareTo(const UnitPreferenceMetadata &other, bool *foundCategory,
+                                          bool *foundUsage, bool *foundRegion) const {
+    int32_t cmp = uprv_strcmp(category.data(), other.category.data());
+    if (cmp == 0) {
+        *foundCategory = true;
+        cmp = uprv_strcmp(usage.data(), other.usage.data());
+    }
+    if (cmp == 0) {
+        *foundUsage = true;
+        cmp = uprv_strcmp(region.data(), other.region.data());
+    }
+    if (cmp == 0) {
+        *foundRegion = true;
+    }
+    return cmp;
+}
+
+CharString U_I18N_API getUnitCategory(const char *baseUnitIdentifier, UErrorCode &status) {
+    CharString result;
+    LocalUResourceBundlePointer unitsBundle(ures_openDirect(NULL, "units", &status));
+    LocalUResourceBundlePointer unitQuantities(
+        ures_getByKey(unitsBundle.getAlias(), "unitQuantities", NULL, &status));
+    int32_t categoryLength;
+    if (U_FAILURE(status)) { return result; }
+    const UChar *uCategory =
+        ures_getStringByKey(unitQuantities.getAlias(), baseUnitIdentifier, &categoryLength, &status);
+    if (U_FAILURE(status)) {
+        // TODO(CLDR-13787,hugovdm): special-casing the consumption-inverse
+        // case. Once CLDR-13787 is clarified, this should be generalised (or
+        // possibly removed):
+        if (uprv_strcmp(baseUnitIdentifier, "meter-per-cubic-meter") == 0) {
+            status = U_ZERO_ERROR;
+            result.append("consumption-inverse", status);
+            return result;
+        }
+    }
+    result.appendInvariantChars(uCategory, categoryLength, status);
+    return result;
+}
+
+// TODO: this may be unnecessary. Fold into ConversionRates class? Or move to anonymous namespace?
+void U_I18N_API getAllConversionRates(MaybeStackVector<ConversionRateInfo> &result, UErrorCode &status) {
+    LocalUResourceBundlePointer unitsBundle(ures_openDirect(NULL, "units", &status));
+    ConversionRateDataSink sink(&result);
+    ures_getAllItemsWithFallback(unitsBundle.getAlias(), "convertUnits", sink, status);
+}
+
+const ConversionRateInfo *ConversionRates::extractConversionInfo(StringPiece source,
+                                                                 UErrorCode &status) const {
+    for (size_t i = 0, n = conversionInfo_.length(); i < n; ++i) {
+        if (conversionInfo_[i]->sourceUnit.toStringPiece() == source) return conversionInfo_[i];
+    }
+
+    status = U_INTERNAL_PROGRAM_ERROR;
+    return nullptr;
+}
+
+U_I18N_API UnitPreferences::UnitPreferences(UErrorCode &status) {
+    LocalUResourceBundlePointer unitsBundle(ures_openDirect(NULL, "units", &status));
+    UnitPreferencesSink sink(&unitPrefs_, &metadata_);
+    ures_getAllItemsWithFallback(unitsBundle.getAlias(), "unitPreferenceData", sink, status);
+}
+
+// TODO: make outPreferences const?
+//
+// TODO: consider replacing `UnitPreference **&outPreferences` with slice class
+// of some kind.
+void U_I18N_API UnitPreferences::getPreferencesFor(StringPiece category, StringPiece usage,
+                                                   StringPiece region,
+                                                   const UnitPreference *const *&outPreferences,
+                                                   int32_t &preferenceCount, UErrorCode &status) const {
+    int32_t idx = getPreferenceMetadataIndex(&metadata_, category, usage, region, status);
+    if (U_FAILURE(status)) { return; }
+    U_ASSERT(idx >= 0); // Failures should have been taken care of by `status`.
+    const UnitPreferenceMetadata *m = metadata_[idx];
+    outPreferences = unitPrefs_.getAlias() + m->prefsOffset;
+    preferenceCount = m->prefsCount;
+}
+
+} // namespace units
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/units_data.h b/icu4c/source/i18n/units_data.h
new file mode 100644
index 0000000..b6fe8e8
--- /dev/null
+++ b/icu4c/source/i18n/units_data.h
@@ -0,0 +1,229 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+#ifndef __UNITS_DATA_H__
+#define __UNITS_DATA_H__
+
+#include <limits>
+
+#include "charstr.h"
+#include "cmemory.h"
+#include "unicode/stringpiece.h"
+#include "unicode/uobject.h"
+
+U_NAMESPACE_BEGIN
+namespace units {
+
+/**
+ * Looks up the unit category of a base unit identifier.
+ *
+ * Only supports base units, other units must be resolved to base units before
+ * passing to this function.
+ *
+ * Categories are found in `unitQuantities` in the `units` resource (see
+ * `units.txt`).
+ *
+ * TODO(hugovdm): if we give units_data.cpp access to the functionality of
+ * `extractCompoundBaseUnit` which is currently in units_converter.cpp, we could
+ * support all units for which there is a category. Does it make sense to move
+ * that function to units_data.cpp?
+ */
+CharString U_I18N_API getUnitCategory(const char *baseUnitIdentifier, UErrorCode &status);
+
+/**
+ * Encapsulates "convertUnits" information from units resources, specifying how
+ * to convert from one unit to another.
+ *
+ * Information in this class is still in the form of strings: symbolic constants
+ * need to be interpreted. Rationale: symbols can cancel out for higher
+ * precision conversion - going from feet to inches should cancel out the
+ * `ft_to_m` constant.
+ */
+class U_I18N_API ConversionRateInfo : public UMemory {
+  public:
+    ConversionRateInfo() {}
+    ConversionRateInfo(StringPiece sourceUnit, StringPiece baseUnit, StringPiece factor,
+                       StringPiece offset, UErrorCode &status)
+        : sourceUnit(), baseUnit(), factor(), offset() {
+        this->sourceUnit.append(sourceUnit, status);
+        this->baseUnit.append(baseUnit, status);
+        this->factor.append(factor, status);
+        this->offset.append(offset, status);
+    }
+    CharString sourceUnit;
+    CharString baseUnit;
+    CharString factor;
+    CharString offset;
+};
+
+} // namespace units
+
+// Export explicit template instantiations of MaybeStackArray, MemoryPool and
+// MaybeStackVector. This is required when building DLLs for Windows. (See
+// datefmt.h, collationiterator.h, erarules.h and others for similar examples.)
+//
+// Note: These need to be outside of the units namespace, or Clang will generate
+// a compile error.
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API MaybeStackArray<units::ConversionRateInfo*, 8>;
+template class U_I18N_API MemoryPool<units::ConversionRateInfo, 8>;
+template class U_I18N_API MaybeStackVector<units::ConversionRateInfo, 8>;
+#endif
+
+namespace units {
+
+/**
+ * Returns ConversionRateInfo for all supported conversions.
+ *
+ * @param result Receives the set of conversion rates.
+ * @param status Receives status.
+ */
+void U_I18N_API getAllConversionRates(MaybeStackVector<ConversionRateInfo> &result, UErrorCode &status);
+
+/**
+ * Contains all the supported conversion rates.
+ */
+class U_I18N_API ConversionRates {
+  public:
+    /**
+     * Constructor
+     *
+     * @param status Receives status.
+     */
+    ConversionRates(UErrorCode &status) { getAllConversionRates(conversionInfo_, status); }
+
+    /**
+     * Returns a pointer to the conversion rate info that match the `source`.
+     *
+     * @param source Contains the source.
+     * @param status Receives status.
+     */
+    const ConversionRateInfo *extractConversionInfo(StringPiece source, UErrorCode &status) const;
+
+  private:
+    MaybeStackVector<ConversionRateInfo> conversionInfo_;
+};
+
+// Encapsulates unitPreferenceData information from units resources, specifying
+// a sequence of output unit preferences.
+struct U_I18N_API UnitPreference : public UMemory {
+    // Set geq to 1.0 by default
+    UnitPreference() : geq(1.0) {}
+    CharString unit;
+    double geq;
+    UnicodeString skeleton;
+};
+
+/**
+ * Metadata about the preferences in UnitPreferences::unitPrefs_.
+ *
+ * This class owns all of its data.
+ *
+ * UnitPreferenceMetadata lives in the anonymous namespace, because it should
+ * only be useful to internal code and unit testing code.
+ */
+class U_I18N_API UnitPreferenceMetadata : public UMemory {
+  public:
+    UnitPreferenceMetadata() {}
+    // Constructor, makes copies of the parameters passed to it.
+    UnitPreferenceMetadata(StringPiece category, StringPiece usage, StringPiece region,
+                           int32_t prefsOffset, int32_t prefsCount, UErrorCode &status);
+
+    // Unit category (e.g. "length", "mass", "electric-capacitance").
+    CharString category;
+    // Usage (e.g. "road", "vehicle-fuel", "blood-glucose"). Every category
+    // should have an entry for "default" usage. TODO(hugovdm): add a test for
+    // this.
+    CharString usage;
+    // Region code (e.g. "US", "CZ", "001"). Every usage should have an entry
+    // for the "001" region ("world"). TODO(hugovdm): add a test for this.
+    CharString region;
+    // Offset into the UnitPreferences::unitPrefs_ list where the relevant
+    // preferences are found.
+    int32_t prefsOffset;
+    // The number of preferences that form this set.
+    int32_t prefsCount;
+
+    int32_t compareTo(const UnitPreferenceMetadata &other) const;
+    int32_t compareTo(const UnitPreferenceMetadata &other, bool *foundCategory, bool *foundUsage,
+                      bool *foundRegion) const;
+};
+
+} // namespace units
+
+// Export explicit template instantiations of MaybeStackArray, MemoryPool and
+// MaybeStackVector. This is required when building DLLs for Windows. (See
+// datefmt.h, collationiterator.h, erarules.h and others for similar examples.)
+//
+// Note: These need to be outside of the units namespace, or Clang will generate
+// a compile error.
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API MaybeStackArray<units::UnitPreferenceMetadata*, 8>;
+template class U_I18N_API MemoryPool<units::UnitPreferenceMetadata, 8>;
+template class U_I18N_API MaybeStackVector<units::UnitPreferenceMetadata, 8>;
+template class U_I18N_API MaybeStackArray<units::UnitPreference*, 8>;
+template class U_I18N_API MemoryPool<units::UnitPreference, 8>;
+template class U_I18N_API MaybeStackVector<units::UnitPreference, 8>;
+#endif
+
+namespace units {
+
+/**
+ * Unit Preferences information for various locales and usages.
+ */
+class U_I18N_API UnitPreferences {
+  public:
+    /**
+     * Constructor, loads all the preference data.
+     *
+     * @param status Receives status.
+     */
+    UnitPreferences(UErrorCode &status);
+
+    /**
+     * Returns the set of unit preferences in the particular category that best
+     * matches the specified usage and region.
+     *
+     * If region can't be found, falls back to global (001). If usage can't be
+     * found, falls back to "default".
+     *
+     * @param category The category within which to look up usage and region.
+     * (TODO(hugovdm): improve docs on how to find the category, once the lookup
+     * function is added.)
+     * @param usage The usage parameter. (TODO(hugovdm): improve this
+     * documentation. Add reference to some list of usages we support.) If the
+     * given usage is not found, the method automatically falls back to
+     * "default".
+     * @param region The region whose preferences are desired. If there are no
+     * specific preferences for the requested region, the method automatically
+     * falls back to region "001" ("world").
+     * @param outPreferences A pointer into an array of preferences: essentially
+     * an array slice in combination with preferenceCount.
+     * @param preferenceCount The number of unit preferences that belong to the
+     * result set.
+     * @param status Receives status.
+     *
+     * TODO(hugovdm): maybe replace `UnitPreference **&outPreferences` with a slice class?
+     */
+    void getPreferencesFor(StringPiece category, StringPiece usage, StringPiece region,
+                           const UnitPreference *const *&outPreferences, int32_t &preferenceCount,
+                           UErrorCode &status) const;
+
+  protected:
+    // Metadata about the sets of preferences, this is the index for looking up
+    // preferences in the unitPrefs_ list.
+    MaybeStackVector<UnitPreferenceMetadata> metadata_;
+    // All the preferences as a flat list: which usage and region preferences
+    // are associated with is stored in `metadata_`.
+    MaybeStackVector<UnitPreference> unitPrefs_;
+};
+
+} // namespace units
+U_NAMESPACE_END
+
+#endif //__UNITS_DATA_H__
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/units_router.cpp b/icu4c/source/i18n/units_router.cpp
new file mode 100644
index 0000000..3158718
--- /dev/null
+++ b/icu4c/source/i18n/units_router.cpp
@@ -0,0 +1,132 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "charstr.h"
+#include "cmemory.h"
+#include "cstring.h"
+#include "measunit_impl.h"
+#include "number_decimalquantity.h"
+#include "number_roundingutils.h"
+#include "resource.h"
+#include "unicode/measure.h"
+#include "units_data.h"
+#include "units_router.h"
+#include <cmath>
+
+U_NAMESPACE_BEGIN
+namespace units {
+
+using number::Precision;
+using number::impl::parseIncrementOption;
+
+Precision UnitsRouter::parseSkeletonToPrecision(icu::UnicodeString precisionSkeleton,
+                                                UErrorCode &status) {
+    if (U_FAILURE(status)) {
+        // As a member of UsagePrefsHandler, which is a friend of Precision, we
+        // get access to the default constructor.
+        return {};
+    }
+    constexpr int32_t kSkelPrefixLen = 20;
+    if (!precisionSkeleton.startsWith(UNICODE_STRING_SIMPLE("precision-increment/"))) {
+        status = U_INVALID_FORMAT_ERROR;
+        return {};
+    }
+    U_ASSERT(precisionSkeleton[kSkelPrefixLen - 1] == u'/');
+    StringSegment segment(precisionSkeleton, false);
+    segment.adjustOffset(kSkelPrefixLen);
+    Precision result;
+    parseIncrementOption(segment, result, status);
+    return result;
+}
+
+UnitsRouter::UnitsRouter(MeasureUnit inputUnit, StringPiece region, StringPiece usage,
+                         UErrorCode &status) {
+    // TODO: do we want to pass in ConversionRates and UnitPreferences instead
+    // of loading in each UnitsRouter instance? (Or make global?)
+    ConversionRates conversionRates(status);
+    UnitPreferences prefs(status);
+
+    MeasureUnitImpl inputUnitImpl = MeasureUnitImpl::forMeasureUnitMaybeCopy(inputUnit, status);
+    MeasureUnit baseUnit =
+        (extractCompoundBaseUnit(inputUnitImpl, conversionRates, status)).build(status);
+    CharString category = getUnitCategory(baseUnit.getIdentifier(), status);
+
+    const UnitPreference *const *unitPreferences;
+    int32_t preferencesCount;
+    prefs.getPreferencesFor(category.data(), usage, region, unitPreferences, preferencesCount, status);
+
+    for (int i = 0; i < preferencesCount; ++i) {
+        const auto &preference = *unitPreferences[i];
+
+        MeasureUnitImpl complexTargetUnitImpl =
+            MeasureUnitImpl::forIdentifier(preference.unit.data(), status);
+        if (U_FAILURE(status)) {
+            return;
+        }
+
+        UnicodeString precision = preference.skeleton;
+
+        // For now, we only have "precision-increment" in Units Preferences skeleton.
+        // Therefore, we check if the skeleton starts with "precision-increment" and force the program to
+        // fail otherwise.
+        // NOTE:
+        //  It is allowed to have an empty precision.
+        if (!precision.isEmpty() && !precision.startsWith(u"precision-increment", 19)) {
+            status = U_INTERNAL_PROGRAM_ERROR;
+            return;
+        }
+
+        outputUnits_.emplaceBackAndCheckErrorCode(status,
+                                                  complexTargetUnitImpl.copy(status).build(status));
+        converterPreferences_.emplaceBackAndCheckErrorCode(status, inputUnitImpl, complexTargetUnitImpl,
+                                                           preference.geq, std::move(precision),
+                                                           conversionRates, status);
+
+        if (U_FAILURE(status)) {
+            return;
+        }
+    }
+}
+
+RouteResult UnitsRouter::route(double quantity, icu::number::impl::RoundingImpl *rounder, UErrorCode &status) const {
+    // Find the matching preference
+    const ConverterPreference *converterPreference = nullptr;
+    for (int32_t i = 0, n = converterPreferences_.length(); i < n; i++) {
+        converterPreference = converterPreferences_[i];
+        if (converterPreference->converter.greaterThanOrEqual(std::abs(quantity) * (1 + DBL_EPSILON),
+                                                              converterPreference->limit)) {
+            break;
+        }
+    }
+    U_ASSERT(converterPreference != nullptr);
+
+    // Set up the rounder for this preference's precision
+    if (rounder != nullptr && rounder->fPrecision.isBogus()) {
+        if (converterPreference->precision.length() > 0) {
+            rounder->fPrecision = parseSkeletonToPrecision(converterPreference->precision, status);
+        } else {
+            // We use the same rounding mode as COMPACT notation: known to be a
+            // human-friendly rounding mode: integers, but add a decimal digit
+            // as needed to ensure we have at least 2 significant digits.
+            rounder->fPrecision = Precision::integer().withMinDigits(2);
+        }
+    }
+
+    return RouteResult(converterPreference->converter.convert(quantity, rounder, status),
+                       converterPreference->targetUnit.copy(status));
+}
+
+const MaybeStackVector<MeasureUnit> *UnitsRouter::getOutputUnits() const {
+    // TODO: consider pulling this from converterPreferences_ and dropping
+    // outputUnits_?
+    return &outputUnits_;
+}
+
+} // namespace units
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/units_router.h b/icu4c/source/i18n/units_router.h
new file mode 100644
index 0000000..bd7a93d
--- /dev/null
+++ b/icu4c/source/i18n/units_router.h
@@ -0,0 +1,162 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+#ifndef __UNITS_ROUTER_H__
+#define __UNITS_ROUTER_H__
+
+#include <limits>
+
+#include "cmemory.h"
+#include "measunit_impl.h"
+#include "unicode/measunit.h"
+#include "unicode/stringpiece.h"
+#include "unicode/uobject.h"
+#include "units_complexconverter.h"
+#include "units_data.h"
+
+U_NAMESPACE_BEGIN
+
+// Forward declarations
+class Measure;
+namespace number {
+class Precision;
+}
+
+namespace units {
+
+struct RouteResult : UMemory {
+    // A list of measures: a single measure for single units, multiple measures
+    // for mixed units.
+    //
+    // TODO(icu-units/icu#21): figure out the right mixed unit API.
+    MaybeStackVector<Measure> measures;
+
+    // The output unit for this RouteResult. This may be a MIXED unit - for
+    // example: "yard-and-foot-and-inch", for which `measures` will have three
+    // elements.
+    MeasureUnitImpl outputUnit;
+
+    RouteResult(MaybeStackVector<Measure> measures, MeasureUnitImpl outputUnit)
+        : measures(std::move(measures)), outputUnit(std::move(outputUnit)) {}
+};
+
+/**
+ * Contains the complex unit converter and the limit which representing the smallest value that the
+ * converter should accept. For example, if the converter is converting to `foot+inch` and the limit
+ * equals 3.0, thus means the converter should not convert to a value less than `3.0 feet`.
+ *
+ * NOTE:
+ *    if the limit doest not has a value `i.e. (std::numeric_limits<double>::lowest())`, this mean there
+ *    is no limit for the converter.
+ */
+struct ConverterPreference : UMemory {
+    ComplexUnitsConverter converter;
+    double limit;
+    UnicodeString precision;
+
+    // The output unit for this ConverterPreference. This may be a MIXED unit -
+    // for example: "yard-and-foot-and-inch".
+    MeasureUnitImpl targetUnit;
+
+    // In case there is no limit, the limit will be -inf.
+    ConverterPreference(const MeasureUnitImpl &source, const MeasureUnitImpl &complexTarget,
+                        UnicodeString precision, const ConversionRates &ratesInfo, UErrorCode &status)
+        : ConverterPreference(source, complexTarget, std::numeric_limits<double>::lowest(), precision,
+                              ratesInfo, status) {}
+
+    ConverterPreference(const MeasureUnitImpl &source, const MeasureUnitImpl &complexTarget,
+                        double limit, UnicodeString precision, const ConversionRates &ratesInfo,
+                        UErrorCode &status)
+        : converter(source, complexTarget, ratesInfo, status), limit(limit),
+          precision(std::move(precision)), targetUnit(complexTarget.copy(status)) {}
+};
+
+} // namespace units
+
+// Export explicit template instantiations of MaybeStackArray, MemoryPool and
+// MaybeStackVector. This is required when building DLLs for Windows. (See
+// datefmt.h, collationiterator.h, erarules.h and others for similar examples.)
+//
+// Note: These need to be outside of the units namespace, or Clang will generate
+// a compile error.
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API MaybeStackArray<units::ConverterPreference*, 8>;
+template class U_I18N_API MemoryPool<units::ConverterPreference, 8>;
+template class U_I18N_API MaybeStackVector<units::ConverterPreference, 8>;
+#endif
+
+namespace units {
+
+/**
+ * `UnitsRouter` responsible for converting from a single unit (such as `meter` or `meter-per-second`) to
+ * one of the complex units based on the limits.
+ * For example:
+ *    if the input is `meter` and the output as following
+ *    {`foot+inch`, limit: 3.0}
+ *    {`inch`     , limit: no value (-inf)}
+ *    Thus means if the input in `meter` is greater than or equal to `3.0 feet`, the output will be in
+ *    `foot+inch`, otherwise, the output will be in `inch`.
+ *
+ * NOTE:
+ *    the output units and the their limits MUST BE in order, for example, if the output units, from the
+ *    previous example, are the following:
+ *        {`inch`     , limit: no value (-inf)}
+ *        {`foot+inch`, limit: 3.0}
+ *     IN THIS CASE THE OUTPUT WILL BE ALWAYS IN `inch`.
+ *
+ * NOTE:
+ *    the output units  and their limits will be extracted from the units preferences database by knowing
+ *    the followings:
+ *        - input unit
+ *        - locale
+ *        - usage
+ *
+ * DESIGN:
+ *    `UnitRouter` uses internally `ComplexUnitConverter` in order to convert the input units to the
+ *    desired complex units and to check the limit too.
+ */
+class U_I18N_API UnitsRouter {
+  public:
+    UnitsRouter(MeasureUnit inputUnit, StringPiece locale, StringPiece usage, UErrorCode &status);
+
+    /**
+     * Performs locale and usage sensitive unit conversion.
+     * @param quantity The quantity to convert, expressed in terms of inputUnit.
+     * @param rounder If not null, this RoundingImpl will be used to do rounding
+     *     on the converted value. If the rounder lacks an fPrecision, the
+     *     rounder will be modified to use the preferred precision for the usage
+     *     and locale preference, alternatively with the default precision.
+     * @param status Receives status.
+     */
+    RouteResult route(double quantity, icu::number::impl::RoundingImpl *rounder, UErrorCode &status) const;
+
+    /**
+     * Returns the list of possible output units, i.e. the full set of
+     * preferences, for the localized, usage-specific unit preferences.
+     *
+     * The returned pointer should be valid for the lifetime of the
+     * UnitsRouter instance.
+     */
+    const MaybeStackVector<MeasureUnit> *getOutputUnits() const;
+
+  private:
+    // List of possible output units. TODO: converterPreferences_ now also has
+    // this data available. Maybe drop outputUnits_ and have getOutputUnits
+    // construct a the list from data in converterPreferences_ instead?
+    MaybeStackVector<MeasureUnit> outputUnits_;
+
+    MaybeStackVector<ConverterPreference> converterPreferences_;
+
+    static number::Precision parseSkeletonToPrecision(icu::UnicodeString precisionSkeleton,
+                                                      UErrorCode &status);
+};
+
+} // namespace units
+U_NAMESPACE_END
+
+#endif //__UNITS_ROUTER_H__
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/i18n/unum.cpp b/icu4c/source/i18n/unum.cpp
index cce3db7..7043f7a 100644
--- a/icu4c/source/i18n/unum.cpp
+++ b/icu4c/source/i18n/unum.cpp
@@ -898,7 +898,7 @@
     return ((const NumberFormat*)fmt)->getContext(type, *status);
 }
 
-U_INTERNAL UFormattable * U_EXPORT2
+U_CAPI UFormattable * U_EXPORT2
 unum_parseToUFormattable(const UNumberFormat* fmt,
                          UFormattable *result,
                          const UChar* text,
@@ -922,7 +922,7 @@
   return result;
 }
 
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unum_formatUFormattable(const UNumberFormat* fmt,
                         const UFormattable *number,
                         UChar *result,
diff --git a/icu4c/source/i18n/upluralrules.cpp b/icu4c/source/i18n/upluralrules.cpp
index 5119257..73e59a7 100644
--- a/icu4c/source/i18n/upluralrules.cpp
+++ b/icu4c/source/i18n/upluralrules.cpp
@@ -20,6 +20,7 @@
 #include "unicode/unumberformatter.h"
 #include "number_decimalquantity.h"
 #include "number_utypes.h"
+#include "numrange_impl.h"
 
 U_NAMESPACE_USE
 
@@ -116,6 +117,25 @@
 }
 
 U_CAPI int32_t U_EXPORT2
+uplrules_selectForRange(const UPluralRules *uplrules,
+                const UFormattedNumberRange* urange,
+                UChar *keyword, int32_t capacity,
+                UErrorCode *status)
+{
+    if (U_FAILURE(*status)) {
+        return 0;
+    }
+    if (keyword == NULL ? capacity != 0 : capacity < 0) {
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        return 0;
+    }
+    const number::impl::UFormattedNumberRangeData* impl =
+        number::impl::validateUFormattedNumberRange(urange, *status);
+    UnicodeString result = ((PluralRules*)uplrules)->select(impl, *status);
+    return result.extract(keyword, capacity, *status);
+}
+
+U_CAPI int32_t U_EXPORT2
 uplrules_selectWithFormat(const UPluralRules *uplrules,
                           double number,
                           const UNumberFormat *fmt,
diff --git a/icu4c/source/i18n/uspoof_impl.h b/icu4c/source/i18n/uspoof_impl.h
index b111d4b..43b23a8 100644
--- a/icu4c/source/i18n/uspoof_impl.h
+++ b/icu4c/source/i18n/uspoof_impl.h
@@ -222,7 +222,7 @@
     SpoofData(const void *serializedData, int32_t length, UErrorCode &status);
 
     //  Check raw Spoof Data Version compatibility.
-    //  Return TRUE it looks good.
+    //  Return true it looks good.
     UBool validateDataVersion(UErrorCode &status) const;
 
     ~SpoofData();                    // Destructor not normally used.
diff --git a/icu4c/source/i18n/usrchimp.h b/icu4c/source/i18n/usrchimp.h
index 88b2e21..f118167 100644
--- a/icu4c/source/i18n/usrchimp.h
+++ b/icu4c/source/i18n/usrchimp.h
@@ -206,7 +206,7 @@
 * the text "\u00e6" 
 * @param strsrch string search data
 * @param status error status if any
-* @return TRUE if an exact match is found, FALSE otherwise
+* @return true if an exact match is found, false otherwise
 */
 U_CFUNC
 UBool usearch_handleNextExact(UStringSearch *strsrch, UErrorCode *status);
@@ -217,7 +217,7 @@
 * of beginning and ending accents if it overlaps that region.
 * @param strsrch string search data
 * @param status error status if any
-* @return TRUE if a canonical match is found, FALSE otherwise
+* @return true if a canonical match is found, false otherwise
 */
 U_CFUNC
 UBool usearch_handleNextCanonical(UStringSearch *strsrch, UErrorCode *status);
@@ -227,7 +227,7 @@
 * Comments follows from handleNextExact
 * @param strsrch string search data
 * @param status error status if any
-* @return True if a exact math is found, FALSE otherwise.
+* @return True if a exact math is found, false otherwise.
 */
 U_CFUNC
 UBool usearch_handlePreviousExact(UStringSearch *strsrch, UErrorCode *status);
@@ -238,7 +238,7 @@
 * of beginning and ending accents if it overlaps that region.
 * @param strsrch string search data
 * @param status error status if any
-* @return TRUE if a canonical match is found, FALSE otherwise
+* @return true if a canonical match is found, false otherwise
 */
 U_CFUNC
 UBool usearch_handlePreviousCanonical(UStringSearch *strsrch, 
diff --git a/icu4c/source/i18n/utf16collationiterator.h b/icu4c/source/i18n/utf16collationiterator.h
index fd3a05e..6305d81 100644
--- a/icu4c/source/i18n/utf16collationiterator.h
+++ b/icu4c/source/i18n/utf16collationiterator.h
@@ -125,7 +125,7 @@
     /**
      * Extend the FCD text segment forward or normalize around pos.
      * To be called when checkDir > 0 && pos != limit.
-     * @return TRUE if success, checkDir == 0 and pos != limit
+     * @return true if success, checkDir == 0 and pos != limit
      */
     UBool nextSegment(UErrorCode &errorCode);
 
@@ -139,7 +139,7 @@
     /**
      * Extend the FCD text segment backward or normalize around pos.
      * To be called when checkDir < 0 && pos != start.
-     * @return TRUE if success, checkDir == 0 and pos != start
+     * @return true if success, checkDir == 0 and pos != start
      */
     UBool previousSegment(UErrorCode &errorCode);
 
diff --git a/icu4c/source/i18n/utf8collationiterator.h b/icu4c/source/i18n/utf8collationiterator.h
index 9a3ec45..9059e72 100644
--- a/icu4c/source/i18n/utf8collationiterator.h
+++ b/icu4c/source/i18n/utf8collationiterator.h
@@ -54,7 +54,7 @@
      * together with a bogus code point. The caller will ignore that code point.
      *
      * Special values may be returned for surrogate code points, which are also illegal in UTF-8,
-     * but the caller will treat them like U+FFFD because forbidSurrogateCodePoints() returns TRUE.
+     * but the caller will treat them like U+FFFD because forbidSurrogateCodePoints() returns true.
      *
      * Valid lead surrogates are returned from inside a normalized text segment,
      * where handleGetTrailSurrogate() will return the matching trail surrogate.
@@ -117,7 +117,7 @@
 
     /**
      * Extends the FCD text segment forward or normalizes around pos.
-     * @return TRUE if success
+     * @return true if success
      */
     UBool nextSegment(UErrorCode &errorCode);
 
@@ -128,7 +128,7 @@
 
     /**
      * Extends the FCD text segment backward or normalizes around pos.
-     * @return TRUE if success
+     * @return true if success
      */
     UBool previousSegment(UErrorCode &errorCode);
 
diff --git a/icu4c/source/i18n/vzone.h b/icu4c/source/i18n/vzone.h
index 17df92e..96f5e85 100644
--- a/icu4c/source/i18n/vzone.h
+++ b/icu4c/source/i18n/vzone.h
@@ -91,7 +91,7 @@
  * @param zone, the vzone to use
  * @param url Receives the RFC2445 TZURL property value.
  * @param urlLength, length of the url
- * @return TRUE if TZURL attribute is available and value is set.
+ * @return true if TZURL attribute is available and value is set.
  */
 U_CAPI UBool U_EXPORT2
 vzone_getTZURL(VZone* zone, UChar* & url, int32_t & urlLength);
@@ -112,7 +112,7 @@
  * is not set.
  * @param zone, the vzone to use
  * @param lastModified Receives the last modified date.
- * @return TRUE if lastModified attribute is available and value is set.
+ * @return true if lastModified attribute is available and value is set.
  */
 U_CAPI UBool U_EXPORT2
 vzone_getLastModified(VZone* zone, UDate& lastModified);
@@ -283,7 +283,7 @@
  * @return true if the given date is in daylight savings time,
  * false, otherwise.
  */
-U_INTERNAL UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 vzone_inDaylightTime(VZone* zone, UDate date, UErrorCode& status);
 
 /**
@@ -303,7 +303,7 @@
  * @param base      The base time.
  * @param inclusive Whether the base time is inclusive or not.
  * @param result    Receives the first transition after the base time.
- * @return  TRUE if the transition is found.
+ * @return  true if the transition is found.
  */
 U_CAPI UBool U_EXPORT2
 vzone_getNextTransition(VZone* zone, UDate base, UBool inclusive, ZTrans* result);
@@ -314,7 +314,7 @@
  * @param base      The base time.
  * @param inclusive Whether the base time is inclusive or not.
  * @param result    Receives the most recent transition before the base time.
- * @return  TRUE if the transition is found.
+ * @return  true if the transition is found.
  */
 U_CAPI UBool U_EXPORT2
 vzone_getPreviousTransition(VZone* zone, UDate base, UBool inclusive, ZTrans* result);
diff --git a/icu4c/source/i18n/zonemeta.h b/icu4c/source/i18n/zonemeta.h
index 9dbcc87..58724ea 100644
--- a/icu4c/source/i18n/zonemeta.h
+++ b/icu4c/source/i18n/zonemeta.h
@@ -59,7 +59,7 @@
      * is not associated with a country, return bogus string.
      * @param tzid Zone ID
      * @param country [output] Country code
-     * @param isPrimary [output] TRUE if the zone is the primary zone for the country
+     * @param isPrimary [output] true if the zone is the primary zone for the country
      * @return A reference to the result country
      */
     static UnicodeString& U_EXPORT2 getCanonicalCountry(const UnicodeString &tzid, UnicodeString &country, UBool *isPrimary = NULL);
diff --git a/icu4c/source/io/Makefile.in b/icu4c/source/io/Makefile.in
index ef2c2a6..9bf9359 100644
--- a/icu4c/source/io/Makefile.in
+++ b/icu4c/source/io/Makefile.in
@@ -60,9 +60,8 @@
 LDFLAGS += $(LDFLAGSICUIO)
 LIBS = $(LIBICUUC) $(LIBICUI18N) $(DEFAULT_LIBS)
 
-OBJECTS = locbund.o ufile.o ufmt_cmn.o uprintf.o uprntf_p.o \
-uscanf.o uscanf_p.o ustdio.o sprintf.o sscanf.o \
-ustream.o ucln_io.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 ## Header files to install
 HEADERS = $(srcdir)/unicode/*.h
diff --git a/icu4c/source/io/io.vcxproj b/icu4c/source/io/io.vcxproj
index 24edd67..c324236 100644
--- a/icu4c/source/io/io.vcxproj
+++ b/icu4c/source/io/io.vcxproj
@@ -16,22 +16,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
@@ -76,7 +60,7 @@
     </ClCompile>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <OutputFile>..\..\$(IcuBinOutputDir)\icuio67d.dll</OutputFile>
+      <OutputFile>..\..\$(IcuBinOutputDir)\icuio68d.dll</OutputFile>
       <ProgramDatabaseFile>..\..\$(IcuLibOutputDir)\icuiod.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\$(IcuLibOutputDir)\icuiod.lib</ImportLibrary>
       <AdditionalDependencies>icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -89,7 +73,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\$(IcuBinOutputDir)\icuio67.dll</OutputFile>
+      <OutputFile>..\..\$(IcuBinOutputDir)\icuio68.dll</OutputFile>
       <ProgramDatabaseFile>..\..\$(IcuLibOutputDir)\icuio.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\$(IcuLibOutputDir)\icuio.lib</ImportLibrary>
       <AdditionalDependencies>icuuc.lib;icuin.lib;%(AdditionalDependencies)</AdditionalDependencies>
diff --git a/icu4c/source/io/sources.txt b/icu4c/source/io/sources.txt
new file mode 100644
index 0000000..7331043
--- /dev/null
+++ b/icu4c/source/io/sources.txt
@@ -0,0 +1,12 @@
+locbund.cpp
+sprintf.cpp
+sscanf.cpp
+ucln_io.cpp
+ufile.cpp
+ufmt_cmn.cpp
+uprintf.cpp
+uprntf_p.cpp
+uscanf.cpp
+uscanf_p.cpp
+ustdio.cpp
+ustream.cpp
diff --git a/icu4c/source/io/ucln_io.cpp b/icu4c/source/io/ucln_io.cpp
index 5cd367c..c1307b5 100644
--- a/icu4c/source/io/ucln_io.cpp
+++ b/icu4c/source/io/ucln_io.cpp
@@ -23,7 +23,7 @@
 #include "uassert.h"
 
 #ifndef U_IO_IMPLEMENTATION
-#error U_IO_IMPLEMENTATION not set - must be set for all ICU source files in io/ - see http://userguide.icu-project.org/howtouseicu
+#error U_IO_IMPLEMENTATION not set - must be set for all ICU source files in io/ - see https://unicode-org.github.io/icu/userguide/howtouseicu
 #endif
 
 
@@ -69,4 +69,3 @@
     ucln_registerAutomaticCleanup();
 #endif
 }
-
diff --git a/icu4c/source/io/ufile.cpp b/icu4c/source/io/ufile.cpp
index 1d8c221..6076019 100644
--- a/icu4c/source/io/ufile.cpp
+++ b/icu4c/source/io/ufile.cpp
@@ -40,6 +40,7 @@
 #include "unicode/ures.h"
 #include "unicode/ucnv.h"
 #include "unicode/ustring.h"
+#include "unicode/unistr.h"
 #include "cstring.h"
 #include "cmemory.h"
 
@@ -142,18 +143,42 @@
     return result; /* not a file leak */
 }
 
+// FILENAME_BUF_MAX represents the largest size that we are willing to use for a
+// stack-allocated buffer to contain a file name or path. If PATH_MAX (POSIX) or MAX_PATH
+// (Windows) are defined and are smaller than this we will use their defined value;
+// otherwise, we will use FILENAME_BUF_MAX for the stack-allocated buffer, and dynamically
+// allocate a buffer for any file name or path that is that length or longer.
+#define FILENAME_BUF_MAX 296
+#if defined PATH_MAX && PATH_MAX < FILENAME_BUF_MAX
+#define FILENAME_BUF_CAPACITY PATH_MAX
+#elif defined MAX_PATH && MAX_PATH < FILENAME_BUF_MAX
+#define FILENAME_BUF_CAPACITY MAX_PATH
+#else
+#define FILENAME_BUF_CAPACITY FILENAME_BUF_MAX
+#endif
+
 U_CAPI UFILE* U_EXPORT2
 u_fopen_u(const UChar   *filename,
         const char    *perm,
         const char    *locale,
         const char    *codepage)
 {
-    UFILE     *result;
-    char buffer[256];
+    UFILE *result;
+    char buffer[FILENAME_BUF_CAPACITY];
+    char *filenameBuffer = buffer;
 
-    u_austrcpy(buffer, filename);
+    icu::UnicodeString filenameString(true, filename, -1); // readonly aliasing, does not allocate memory
+    // extract with conversion to platform default codepage, return full length (not including 0 termination)
+    int32_t filenameLength = filenameString.extract(0, filenameString.length(), filenameBuffer, FILENAME_BUF_CAPACITY);
+    if (filenameLength >= FILENAME_BUF_CAPACITY) { // could not fit (with zero termination) in buffer
+        filenameBuffer = static_cast<char *>(uprv_malloc(++filenameLength)); // add one for zero termination
+        if (!filenameBuffer) {
+            return nullptr;
+        }
+        filenameString.extract(0, filenameString.length(), filenameBuffer, filenameLength);
+    }
 
-    result = u_fopen(buffer, perm, locale, codepage);
+    result = u_fopen(filenameBuffer, perm, locale, codepage);
 #if U_PLATFORM_USES_ONLY_WIN32_API
     /* Try Windows API _wfopen if the above fails. */
     if (!result) {
@@ -161,20 +186,25 @@
         wchar_t wperm[40] = {};
         size_t  retVal;
         mbstowcs_s(&retVal, wperm, UPRV_LENGTHOF(wperm), perm, _TRUNCATE);
-        FILE *systemFile = _wfopen((const wchar_t *)filename, wperm);
+        FILE *systemFile = _wfopen(reinterpret_cast<const wchar_t *>(filename), wperm); // may return NULL for long filename
         if (systemFile) {
             result = finit_owner(systemFile, locale, codepage, TRUE);
         }
-        if (!result) {
+        if (!result && systemFile) {
             /* Something bad happened.
-               Maybe the converter couldn't be opened. */
+               Maybe the converter couldn't be opened.
+               Bu do not fclose(systemFile) if systemFile is NULL. */
             fclose(systemFile);
         }
     }
 #endif
+    if (filenameBuffer != buffer) {
+        uprv_free(filenameBuffer);
+    }
     return result; /* not a file leak */
 }
 
+
 U_CAPI UFILE* U_EXPORT2
 u_fstropen(UChar *stringBuf,
            int32_t      capacity,
diff --git a/icu4c/source/io/ufile.h b/icu4c/source/io/ufile.h
index e85208f..88fa409 100644
--- a/icu4c/source/io/ufile.h
+++ b/icu4c/source/io/ufile.h
@@ -74,7 +74,7 @@
 
     UChar       fUCBuffer[UFILE_UCHARBUFFER_SIZE];/* buffer used for toUnicode */
 
-    UBool       fOwnFile;       /* TRUE if fFile should be closed */
+    UBool       fOwnFile;       /* true if fFile should be closed */
 
     int32_t     fFileno;        /* File number. Useful to determine if it's stdin. */
 };
@@ -100,7 +100,7 @@
  * Get one code unit and detect whether the end of file has been reached.
  * @param f The UFILE containing the characters.
  * @param ch The read in character
- * @return TRUE if the character is valid, or FALSE when EOF has been detected
+ * @return true if the character is valid, or false when EOF has been detected
  */
 U_CFUNC UBool U_EXPORT2
 ufile_getch(UFILE *f, UChar *ch);
@@ -109,7 +109,7 @@
  * Get one character and detect whether the end of file has been reached.
  * @param f The UFILE containing the characters.
  * @param ch The read in character
- * @return TRUE if the character is valid, or FALSE when EOF has been detected
+ * @return true if the character is valid, or false when EOF has been detected
  */
 U_CFUNC UBool U_EXPORT2
 ufile_getch32(UFILE *f, UChar32 *ch);
diff --git a/icu4c/source/io/ufmt_cmn.h b/icu4c/source/io/ufmt_cmn.h
index 33b56a0..d040fdc 100644
--- a/icu4c/source/io/ufmt_cmn.h
+++ b/icu4c/source/io/ufmt_cmn.h
@@ -82,7 +82,7 @@
  * Determine if a UChar is a digit for a specified radix.
  * @param c The UChar to check.
  * @param radix The desired radix.
- * @return TRUE if <TT>c</TT> is a digit in <TT>radix</TT>, FALSE otherwise.
+ * @return true if <TT>c</TT> is a digit in <TT>radix</TT>, false otherwise.
  */
 UBool
 ufmt_isdigit(UChar     c,
@@ -95,7 +95,7 @@
  * the number of UChars written to <TT>buffer</TT>.
  * @param value The value to be converted
  * @param radix The desired radix
- * @param uselower TRUE means lower case will be used, FALSE means upper case
+ * @param uselower true means lower case will be used, false means upper case
  * @param minDigits The minimum number of digits for for the formatted number,
  * which will be padded with zeroes. -1 means do not pad.
  */
diff --git a/icu4c/source/io/unicode/ustdio.h b/icu4c/source/io/unicode/ustdio.h
index 86ba534..50a8815 100644
--- a/icu4c/source/io/unicode/ustdio.h
+++ b/icu4c/source/io/unicode/ustdio.h
@@ -231,7 +231,7 @@
  * That is, data written to a UFILE will be formatted using the conventions
  * specified by that UFILE's Locale; this data will be in the character set
  * specified by that UFILE's codepage.
- * @param filename The name of the file to open.
+ * @param filename The name of the file to open. Must be 0-terminated.
  * @param perm The read/write permission for the UFILE; one of "r", "w", "rw"
  * @param locale The locale whose conventions will be used to format 
  * and parse output. If this parameter is NULL, the default locale will 
@@ -242,7 +242,7 @@
  * @return A new UFILE, or NULL if an error occurred.
  * @stable ICU 3.0
  */
-U_STABLE UFILE* U_EXPORT2
+U_CAPI UFILE* U_EXPORT2
 u_fopen(const char    *filename,
     const char    *perm,
     const char    *locale,
@@ -254,7 +254,7 @@
  * That is, data written to a UFILE will be formatted using the conventions
  * specified by that UFILE's Locale; this data will be in the character set
  * specified by that UFILE's codepage.
- * @param filename The name of the file to open.
+ * @param filename The name of the file to open. Must be 0-terminated.
  * @param perm The read/write permission for the UFILE; one of "r", "w", "rw"
  * @param locale The locale whose conventions will be used to format
  * and parse output. If this parameter is NULL, the default locale will
@@ -265,7 +265,7 @@
  * @return A new UFILE, or NULL if an error occurred.
  * @stable ICU 54
  */
-U_STABLE UFILE* U_EXPORT2
+U_CAPI UFILE* U_EXPORT2
 u_fopen_u(const UChar    *filename,
     const char    *perm,
     const char    *locale,
@@ -287,7 +287,7 @@
  * @return A new UFILE, or NULL if an error occurred.
  * @stable ICU 3.0
  */
-U_STABLE UFILE* U_EXPORT2
+U_CAPI UFILE* U_EXPORT2
 u_finit(FILE        *f,
     const char    *locale,
     const char    *codepage);
@@ -308,7 +308,7 @@
  * the ownership of the FILE* stream remains with the caller.
  * @stable ICU 4.4
  */
-U_STABLE UFILE* U_EXPORT2
+U_CAPI UFILE* U_EXPORT2
 u_fadopt(FILE     *f,
     const char    *locale,
     const char    *codepage);
@@ -327,7 +327,7 @@
  * @return A new UFILE, or NULL if an error occurred.
  * @stable ICU 3.0
  */
-U_STABLE UFILE* U_EXPORT2
+U_CAPI UFILE* U_EXPORT2
 u_fstropen(UChar      *stringBuf,
            int32_t     capacity,
            const char *locale);
@@ -338,7 +338,7 @@
  * @stable ICU 3.0
  * @see u_fflush
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_fclose(UFILE *file);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -363,12 +363,12 @@
 /**
  * Tests if the UFILE is at the end of the file stream.
  * @param f The UFILE from which to read.
- * @return Returns TRUE after the first read operation that attempts to
- * read past the end of the file. It returns FALSE if the current position is
+ * @return Returns true after the first read operation that attempts to
+ * read past the end of the file. It returns false if the current position is
  * not end of file.
  * @stable ICU 3.0
 */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_feof(UFILE  *f);
 
 /**
@@ -381,7 +381,7 @@
  * @param file The UFILE to flush.
  * @stable ICU 3.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_fflush(UFILE *file);
 
 /**
@@ -389,7 +389,7 @@
  * @param file The UFILE to rewind.
  * @stable ICU 3.0
  */
-U_STABLE void
+U_CAPI void
 u_frewind(UFILE *file);
 
 /**
@@ -398,7 +398,7 @@
  * @return A FILE*, owned by the UFILE. (The FILE <EM>must not</EM> be modified or closed)
  * @stable ICU 3.0
  */
-U_STABLE FILE* U_EXPORT2
+U_CAPI FILE* U_EXPORT2
 u_fgetfile(UFILE *f);
 
 #if !UCONFIG_NO_FORMATTING
@@ -411,7 +411,7 @@
  * @return The locale whose conventions are used to format and parse output.
  * @stable ICU 3.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 u_fgetlocale(UFILE *file);
 
 /**
@@ -422,7 +422,7 @@
  * @return NULL if successful, otherwise a negative number.
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_fsetlocale(UFILE      *file,
              const char *locale);
 
@@ -437,7 +437,7 @@
  * or NULL if an error occurred.
  * @stable ICU 3.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 u_fgetcodepage(UFILE *file);
 
 /**
@@ -455,7 +455,7 @@
  * @see u_frewind
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_fsetcodepage(const char   *codepage,
                UFILE        *file);
 
@@ -466,7 +466,7 @@
  * @return alias to the converter (The converter <EM>must not</EM> be modified or closed)
  * @stable ICU 3.0
  */
-U_STABLE UConverter* U_EXPORT2 u_fgetConverter(UFILE *f);
+U_CAPI UConverter* U_EXPORT2 u_fgetConverter(UFILE *f);
 
 #if !UCONFIG_NO_FORMATTING
 /**
@@ -475,7 +475,7 @@
  * @return alias to the number formatter (The formatter <EM>must not</EM> be modified or closed)
  * @stable ICU 51
 */
- U_STABLE const UNumberFormat* U_EXPORT2 u_fgetNumberFormat(UFILE *f);
+ U_CAPI const UNumberFormat* U_EXPORT2 u_fgetNumberFormat(UFILE *f);
 
 /* Output functions */
 
@@ -486,7 +486,7 @@
  * @return The number of Unicode characters written to <TT>stdout</TT>
  * @stable ICU 49
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_printf(const char *patternSpecification,
          ... );
 
@@ -498,7 +498,7 @@
  * @return The number of Unicode characters written to <TT>f</TT>.
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_fprintf(UFILE         *f,
           const char    *patternSpecification,
           ... );
@@ -515,7 +515,7 @@
  * @see u_fprintf
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_vfprintf(UFILE        *f,
            const char   *patternSpecification,
            va_list      ap);
@@ -527,7 +527,7 @@
  * @return The number of Unicode characters written to <TT>stdout</TT>
  * @stable ICU 49
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_printf_u(const UChar *patternSpecification,
            ... );
 
@@ -536,7 +536,7 @@
  * @return UFILE that writes to <TT>stdout</TT>
  * @stable ICU 49
  */
-U_STABLE UFILE * U_EXPORT2
+U_CAPI UFILE * U_EXPORT2
 u_get_stdout(void);
 
 /**
@@ -547,7 +547,7 @@
  * @return The number of Unicode characters written to <TT>f</TT>.
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_fprintf_u(UFILE       *f,
             const UChar *patternSpecification,
             ... );
@@ -564,7 +564,7 @@
  * @see u_fprintf_u
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_vfprintf_u(UFILE      *f,
             const UChar *patternSpecification,
             va_list     ap);
@@ -579,7 +579,7 @@
  * @see u_file_write
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_fputs(const UChar *s,
         UFILE       *f);
 
@@ -590,7 +590,7 @@
  * @return The character written if successful, EOF otherwise.
  * @stable ICU 3.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_fputc(UChar32  uc,
         UFILE  *f);
 
@@ -605,7 +605,7 @@
  * @see u_fputs
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_file_write(const UChar    *ustring, 
              int32_t        count, 
              UFILE          *f);
@@ -623,7 +623,7 @@
  * if an error occurred.
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_fscanf(UFILE      *f,
          const char *patternSpecification,
          ... );
@@ -641,7 +641,7 @@
  * @see u_fscanf
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_vfscanf(UFILE         *f,
           const char    *patternSpecification,
           va_list        ap);
@@ -655,7 +655,7 @@
  * if an error occurred.
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_fscanf_u(UFILE        *f,
            const UChar  *patternSpecification,
            ... );
@@ -673,7 +673,7 @@
  * @see u_fscanf_u
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_vfscanf_u(UFILE       *f,
             const UChar *patternSpecification,
             va_list      ap);
@@ -691,7 +691,7 @@
  * @return A pointer to <TT>s</TT>, or NULL if no characters were available.
  * @stable ICU 3.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_fgets(UChar  *s,
         int32_t n,
         UFILE  *f);
@@ -705,7 +705,7 @@
  * @return The UChar value read, or U+FFFF if no character was available.
  * @stable ICU 3.0
  */
-U_STABLE UChar U_EXPORT2
+U_CAPI UChar U_EXPORT2
 u_fgetc(UFILE   *f);
 
 /**
@@ -718,7 +718,7 @@
  * @see u_unescape()
  * @stable ICU 3.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_fgetcx(UFILE  *f);
 
 /**
@@ -732,7 +732,7 @@
  * @return The UChar32 value put back if successful, U_EOF otherwise.
  * @stable ICU 3.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_fungetc(UChar32   c,
       UFILE        *f);
 
@@ -746,7 +746,7 @@
  * @return The number of Unicode characters read.
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_file_read(UChar        *chars, 
         int32_t        count, 
         UFILE         *f);
@@ -770,7 +770,7 @@
  * on the result of this function.
  * @stable ICU 3.0
  */
-U_STABLE UTransliterator* U_EXPORT2
+U_CAPI UTransliterator* U_EXPORT2
 u_fsettransliterator(UFILE *file, UFileDirection direction,
                      UTransliterator *adopt, UErrorCode *status);
 
@@ -791,7 +791,7 @@
  * does not include the terminating null character.
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_sprintf(UChar       *buffer,
         const char    *patternSpecification,
         ... );
@@ -813,7 +813,7 @@
  * the terminating null character.
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_snprintf(UChar      *buffer,
         int32_t       count,
         const char    *patternSpecification,
@@ -832,7 +832,7 @@
  * @see u_sprintf
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_vsprintf(UChar      *buffer,
         const char    *patternSpecification,
         va_list        ap);
@@ -857,7 +857,7 @@
  * @see u_sprintf
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_vsnprintf(UChar     *buffer,
         int32_t       count,
         const char    *patternSpecification,
@@ -872,7 +872,7 @@
  * @return The number of Unicode characters written to <TT>buffer</TT>.
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_sprintf_u(UChar      *buffer,
         const UChar    *patternSpecification,
         ... );
@@ -893,7 +893,7 @@
  * <TT>buffer</TT> had count been sufficiently large.
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_snprintf_u(UChar     *buffer,
         int32_t        count,
         const UChar    *patternSpecification,
@@ -912,7 +912,7 @@
  * @see u_sprintf_u
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_vsprintf_u(UChar     *buffer,
         const UChar    *patternSpecification,
         va_list        ap);
@@ -937,7 +937,7 @@
  * @see u_sprintf_u
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_vsnprintf_u(UChar *buffer,
         int32_t         count,
         const UChar     *patternSpecification,
@@ -955,7 +955,7 @@
  * if an error occurred.
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_sscanf(const UChar   *buffer,
         const char     *patternSpecification,
         ... );
@@ -974,7 +974,7 @@
  * @see u_sscanf
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_vsscanf(const UChar  *buffer,
         const char     *patternSpecification,
         va_list        ap);
@@ -989,7 +989,7 @@
  * if an error occurred.
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_sscanf_u(const UChar  *buffer,
         const UChar     *patternSpecification,
         ... );
@@ -1008,7 +1008,7 @@
  * @see u_sscanf_u
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_vsscanf_u(const UChar *buffer,
         const UChar     *patternSpecification,
         va_list         ap);
diff --git a/icu4c/source/io/uscanf_p.cpp b/icu4c/source/io/uscanf_p.cpp
index 6dc1c09..5bf3e5b 100644
--- a/icu4c/source/io/uscanf_p.cpp
+++ b/icu4c/source/io/uscanf_p.cpp
@@ -695,9 +695,10 @@
 
     int32_t         len;
     void            *num        = (void*) (args[0].ptrValue);
-    UNumberFormat   *format;
+    UNumberFormat   *format, *localFormat;
     int32_t         parsePos    = 0;
     int32_t         skipped;
+    int32_t         parseIntOnly = 0;
     UErrorCode      status      = U_ZERO_ERROR;
     int64_t         result;
 
@@ -722,11 +723,20 @@
     if(format == 0)
         return 0;
 
+    /* for integer types, do not attempt to parse fractions */
+    localFormat = unum_clone(format, &status);
+    if(U_FAILURE(status))
+        return 0;
+
+    if(info->fSpec == 'd' || info->fSpec == 'i' || info->fSpec == 'u')
+        parseIntOnly = 1;
+    unum_setAttribute(localFormat, UNUM_PARSE_INT_ONLY, parseIntOnly);
+
     /* Skip the positive prefix. ICU normally can't handle this due to strict parsing. */
-    skipped += u_scanf_skip_leading_positive_sign(input, format, &status);
+    skipped += u_scanf_skip_leading_positive_sign(input, localFormat, &status);
 
     /* parse the number */
-    result = unum_parseInt64(format, input->str.fPos, len, &parsePos, &status);
+    result = unum_parseInt64(localFormat, input->str.fPos, len, &parsePos, &status);
 
     /* mask off any necessary bits */
     if (!info->fSkipArg) {
@@ -741,6 +751,9 @@
     /* update the input's position to reflect consumed data */
     input->str.fPos += parsePos;
 
+    /* cleanup cloned formatter */
+    unum_close(localFormat);
+
     /* we converted 1 arg */
     *argConverted = !info->fSkipArg;
     return parsePos + skipped;
diff --git a/icu4c/source/layoutex/Makefile.in b/icu4c/source/layoutex/Makefile.in
index d456ef4..d735099 100644
--- a/icu4c/source/layoutex/Makefile.in
+++ b/icu4c/source/layoutex/Makefile.in
@@ -67,11 +67,8 @@
 LDFLAGS += $(LDFLAGSICULX)
 LIBS = $(LIBICUUC) $(LIBICULE) $(DEFAULT_LIBS)
 
-OBJECTS =  ParagraphLayout.o \
-RunArrays.o \
-LXUtilities.o  \
-playout.o \
-plruns.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 ## Header files to install
 HEADERS= $(srcdir)/layout/ParagraphLayout.h $(srcdir)/layout/RunArrays.h $(srcdir)/layout/playout.h $(srcdir)/layout/plruns.h
diff --git a/icu4c/source/layoutex/ParagraphLayout.cpp b/icu4c/source/layoutex/ParagraphLayout.cpp
index 9e525cf..0a765a3 100644
--- a/icu4c/source/layoutex/ParagraphLayout.cpp
+++ b/icu4c/source/layoutex/ParagraphLayout.cpp
@@ -137,7 +137,7 @@
  * process, rather for all scripts which require
  * complex processing for correct rendering.
  */
-static const le_bool complexTable[scriptCodeCount] = {
+static const le_bool complexTable[] = {
     FALSE , /* Zyyy */
     FALSE,  /* Qaai */
     TRUE,   /* Arab */
@@ -974,7 +974,7 @@
 
 le_bool ParagraphLayout::isComplex(UScriptCode script)
 {
-    if (script < 0 || script >= (UScriptCode) scriptCodeCount) {
+    if (script < 0 || script >= ARRAY_SIZE(complexTable)) {
         return FALSE;
     }
 
diff --git a/icu4c/source/layoutex/layout/ParagraphLayout.h b/icu4c/source/layoutex/layout/ParagraphLayout.h
index 60972dc..ce3f7e5 100644
--- a/icu4c/source/layoutex/layout/ParagraphLayout.h
+++ b/icu4c/source/layoutex/layout/ParagraphLayout.h
@@ -46,7 +46,7 @@
  * You may use this class with the HarfBuzz icu-le-hb wrapper,
  *  see http://www.freedesktop.org/wiki/Software/HarfBuzz/
  *
- *  See http://userguide.icu-project.org/layoutengine for special build instructions.
+ *  See https://unicode-org.github.io/icu/userguide/layoutengine for special build instructions.
  */
 class U_LAYOUTEX_API ParagraphLayout : public UObject
 {
@@ -382,7 +382,7 @@
      *
      * @param paragraphLevel is the directionality of the paragraph, as in the UBiDi object.
      *
-     * @param vertical is <code>TRUE</code> if the paragraph should be set vertically.
+     * @param vertical is <code>true</code> if the paragraph should be set vertically.
      *
      * @param status will be set to any error code encountered during construction.
      *
@@ -424,7 +424,7 @@
      *
      * @param fontRuns is a pointer to a <code>FontRuns</code> object representing the font runs.
      *
-     * @return <code>TRUE</code> if the paragraph contains complex text.
+     * @return <code>true</code> if the paragraph contains complex text.
      *
      * @stable ICU 3.2
      */
@@ -438,7 +438,7 @@
      *
      * @param count is the number of characters in the paragraph.
      *
-     * @return <code>TRUE</code> if any of the text requires complex processing.
+     * @return <code>true</code> if any of the text requires complex processing.
      *
      * @stable ICU 3.2
      */
diff --git a/icu4c/source/layoutex/layout/RunArrays.h b/icu4c/source/layoutex/layout/RunArrays.h
index 5cf6c60..aa8b4ac 100644
--- a/icu4c/source/layoutex/layout/RunArrays.h
+++ b/icu4c/source/layoutex/layout/RunArrays.h
@@ -222,19 +222,19 @@
 };
 
 inline RunArray::RunArray()
-    : UObject(), fClientArrays(FALSE), fLimits(NULL), fCount(0), fCapacity(0)
+    : UObject(), fClientArrays(false), fLimits(NULL), fCount(0), fCapacity(0)
 {
     // nothing else to do...
 }
 
 inline RunArray::RunArray(const RunArray & /*other*/)
-    : UObject(), fClientArrays(FALSE), fLimits(NULL), fCount(0), fCapacity(0)
+    : UObject(), fClientArrays(false), fLimits(NULL), fCount(0), fCapacity(0)
 {
     // nothing else to do...
 }
 
 inline RunArray::RunArray(const le_int32 *limits, le_int32 count)
-    : UObject(), fClientArrays(TRUE), fLimits(limits), fCount(count), fCapacity(count)
+    : UObject(), fClientArrays(true), fLimits(limits), fCount(count), fCapacity(count)
 {
     // nothing else to do...
 }
diff --git a/icu4c/source/layoutex/layout/playout.h b/icu4c/source/layoutex/layout/playout.h
index 317b438..98fc212 100644
--- a/icu4c/source/layoutex/layout/playout.h
+++ b/icu4c/source/layoutex/layout/playout.h
@@ -82,7 +82,7 @@
  *
  * @param paragraphLevel is the directionality of the paragraph, as in the UBiDi object.
  *
- * @param vertical is <code>TRUE</code> if the paragraph should be set vertically.
+ * @param vertical is <code>true</code> if the paragraph should be set vertically.
  *
  * @param status will be set to any error code encountered during construction.
  *
@@ -95,7 +95,7 @@
  *
  * @internal
  */
-U_INTERNAL pl_paragraph * U_EXPORT2
+U_CAPI pl_paragraph * U_EXPORT2
 pl_create(const LEUnicode chars[],
           le_int32 count,
           const pl_fontRuns *fontRuns,
@@ -115,7 +115,7 @@
  *
  * @internal
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 pl_close(pl_paragraph *paragraph);
 
 /**
@@ -126,12 +126,12 @@
  *
  * @param count is the number of characters in the paragraph.
  *
- * @return <code>TRUE</code> if any of the text requires complex processing.
+ * @return <code>true</code> if any of the text requires complex processing.
  *
  * @internal
  */
 
-U_INTERNAL le_bool U_EXPORT2
+U_CAPI le_bool U_EXPORT2
 pl_isComplex(const LEUnicode chars[],
           le_int32 count);
 
@@ -146,7 +146,7 @@
  *
  * @internal
  */
-U_INTERNAL UBiDiLevel U_EXPORT2
+U_CAPI UBiDiLevel U_EXPORT2
 pl_getParagraphLevel(pl_paragraph *paragraph);
 
 /**
@@ -160,7 +160,7 @@
  *
  * @internal
  */
-U_INTERNAL UBiDiDirection U_EXPORT2
+U_CAPI UBiDiDirection U_EXPORT2
 pl_getTextDirection(pl_paragraph *paragraph);
 
 /**
@@ -178,7 +178,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getAscent(const pl_paragraph *paragraph);
 
 /**
@@ -191,7 +191,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getDescent(const pl_paragraph *paragraph);
 
 /**
@@ -204,7 +204,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getLeading(const pl_paragraph *paragraph);
 
 /**
@@ -214,7 +214,7 @@
  *
  * @internal
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 pl_reflow(pl_paragraph *paragraph);
 
 /**
@@ -235,7 +235,7 @@
  *
  * @internal
  */
-U_INTERNAL pl_line * U_EXPORT2
+U_CAPI pl_line * U_EXPORT2
 pl_nextLine(pl_paragraph *paragraph, float width);
 
 /**
@@ -247,7 +247,7 @@
  *
  * @internal
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 pl_closeLine(pl_line *line);
 
 /**
@@ -259,7 +259,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_countLineRuns(const pl_line *line);
 
 /**
@@ -272,7 +272,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getLineAscent(const pl_line *line);
 
 /**
@@ -285,7 +285,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getLineDescent(const pl_line *line);
 
 /**
@@ -298,7 +298,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getLineLeading(const pl_line *line);
 
 /**
@@ -312,7 +312,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getLineWidth(const pl_line *line);
 
 /**
@@ -331,7 +331,7 @@
  *
  * @internal
  */
-U_INTERNAL const pl_visualRun * U_EXPORT2
+U_CAPI const pl_visualRun * U_EXPORT2
 pl_getLineVisualRun(const pl_line *line, le_int32 runIndex);
 
 /**
@@ -348,7 +348,7 @@
  *
  * @internal
  */
-U_INTERNAL const le_font * U_EXPORT2
+U_CAPI const le_font * U_EXPORT2
 pl_getVisualRunFont(const pl_visualRun *run);
 
 /**
@@ -361,7 +361,7 @@
  *
  * @internal
  */
-U_INTERNAL UBiDiDirection U_EXPORT2
+U_CAPI UBiDiDirection U_EXPORT2
 pl_getVisualRunDirection(const pl_visualRun *run);
 
 /**
@@ -373,7 +373,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getVisualRunGlyphCount(const pl_visualRun *run);
 
 /**
@@ -388,7 +388,7 @@
  *
  * @internal
  */
-U_INTERNAL const LEGlyphID * U_EXPORT2
+U_CAPI const LEGlyphID * U_EXPORT2
 pl_getVisualRunGlyphs(const pl_visualRun *run);
 
 /**
@@ -406,7 +406,7 @@
  *
  * @internal
  */
-U_INTERNAL const float * U_EXPORT2
+U_CAPI const float * U_EXPORT2
 pl_getVisualRunPositions(const pl_visualRun *run);
 
 /**
@@ -421,7 +421,7 @@
  *
  * @internal
  */
-U_INTERNAL const le_int32 * U_EXPORT2
+U_CAPI const le_int32 * U_EXPORT2
 pl_getVisualRunGlyphToCharMap(const pl_visualRun *run);
 
 /**
@@ -434,7 +434,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getVisualRunAscent(const pl_visualRun *run);
 
 /**
@@ -447,7 +447,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getVisualRunDescent(const pl_visualRun *run);
 
 /**
@@ -460,7 +460,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getVisualRunLeading(const pl_visualRun *run);
 
 #endif  /* U_HIDE_INTERNAL_API */
diff --git a/icu4c/source/layoutex/layout/plruns.h b/icu4c/source/layoutex/layout/plruns.h
index 6cbece8..48888fd 100644
--- a/icu4c/source/layoutex/layout/plruns.h
+++ b/icu4c/source/layoutex/layout/plruns.h
@@ -58,7 +58,7 @@
  *
  * @internal
  */
-U_INTERNAL pl_fontRuns * U_EXPORT2
+U_CAPI pl_fontRuns * U_EXPORT2
 pl_openFontRuns(const le_font **fonts,
                 const le_int32 *limits,
                 le_int32 count);
@@ -74,7 +74,7 @@
  *
  * @internal
  */
-U_INTERNAL pl_fontRuns * U_EXPORT2
+U_CAPI pl_fontRuns * U_EXPORT2
 pl_openEmptyFontRuns(le_int32 initialCapacity);
 
 /**
@@ -85,7 +85,7 @@
  *
  * @internal
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 pl_closeFontRuns(pl_fontRuns *fontRuns);
 
 /**
@@ -97,7 +97,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getFontRunCount(const pl_fontRuns *fontRuns);
 
 /**
@@ -107,7 +107,7 @@
  *
  * @internal
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 pl_resetFontRuns(pl_fontRuns *fontRuns);
 
 /**
@@ -120,7 +120,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getFontRunLastLimit(const pl_fontRuns *fontRuns);
 
 /**
@@ -133,7 +133,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getFontRunLimit(const pl_fontRuns *fontRuns,
                    le_int32 run);
 
@@ -149,7 +149,7 @@
  *
  * @internal
  */
-U_INTERNAL const le_font * U_EXPORT2
+U_CAPI const le_font * U_EXPORT2
 pl_getFontRunFont(const pl_fontRuns *fontRuns,
                   le_int32 run);
 
@@ -172,7 +172,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_addFontRun(pl_fontRuns *fontRuns,
               const le_font *font,
               le_int32 limit);
@@ -191,7 +191,7 @@
  *
  * @internal
  */
-U_INTERNAL pl_valueRuns * U_EXPORT2
+U_CAPI pl_valueRuns * U_EXPORT2
 pl_openValueRuns(const le_int32 *values,
                  const le_int32 *limits,
                  le_int32 count);
@@ -207,7 +207,7 @@
  *
  * @internal
  */
-U_INTERNAL pl_valueRuns * U_EXPORT2
+U_CAPI pl_valueRuns * U_EXPORT2
 pl_openEmptyValueRuns(le_int32 initialCapacity);
 
 /**
@@ -218,7 +218,7 @@
  *
  * @internal
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 pl_closeValueRuns(pl_valueRuns *valueRuns);
 
 /**
@@ -230,7 +230,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getValueRunCount(const pl_valueRuns *valueRuns);
 
 /**
@@ -240,7 +240,7 @@
  *
  * @internal
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 pl_resetValueRuns(pl_valueRuns *valueRuns);
 
 /**
@@ -253,7 +253,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getValueRunLastLimit(const pl_valueRuns *valueRuns);
 
 /**
@@ -266,7 +266,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getValueRunLimit(const pl_valueRuns *valueRuns,
                      le_int32 run);
 
@@ -282,7 +282,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getValueRunValue(const pl_valueRuns *valueRuns,
                     le_int32 run);
 
@@ -304,7 +304,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_addValueRun(pl_valueRuns *valueRuns,
                le_int32 value,
                le_int32 limit);
@@ -323,7 +323,7 @@
  *
  * @internal
  */
-U_INTERNAL pl_localeRuns * U_EXPORT2
+U_CAPI pl_localeRuns * U_EXPORT2
 pl_openLocaleRuns(const char **locales,
                   const le_int32 *limits,
                   le_int32 count);
@@ -339,7 +339,7 @@
  *
  * @internal
  */
-U_INTERNAL pl_localeRuns * U_EXPORT2
+U_CAPI pl_localeRuns * U_EXPORT2
 pl_openEmptyLocaleRuns(le_int32 initialCapacity);
 
 /**
@@ -350,7 +350,7 @@
  *
  * @internal
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 pl_closeLocaleRuns(pl_localeRuns *localeRuns);
 
 /**
@@ -362,7 +362,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getLocaleRunCount(const pl_localeRuns *localeRuns);
 
 /**
@@ -372,7 +372,7 @@
  *
  * @internal
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 pl_resetLocaleRuns(pl_localeRuns *localeRuns);
 
 /**
@@ -385,7 +385,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getLocaleRunLastLimit(const pl_localeRuns *localeRuns);
 
 /**
@@ -398,7 +398,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_getLocaleRunLimit(const pl_localeRuns *localeRuns,
                      le_int32 run);
 
@@ -414,7 +414,7 @@
  *
  * @internal
  */
-U_INTERNAL const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 pl_getLocaleRunLocale(const pl_localeRuns *localeRuns,
                       le_int32 run);
 
@@ -437,7 +437,7 @@
  *
  * @internal
  */
-U_INTERNAL le_int32 U_EXPORT2
+U_CAPI le_int32 U_EXPORT2
 pl_addLocaleRun(pl_localeRuns *localeRuns,
                 const char *locale,
                 le_int32 limit);
diff --git a/icu4c/source/layoutex/layoutex.vcxproj b/icu4c/source/layoutex/layoutex.vcxproj
index e3ba855..0a1556e 100644
--- a/icu4c/source/layoutex/layoutex.vcxproj
+++ b/icu4c/source/layoutex/layoutex.vcxproj
@@ -15,22 +15,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
@@ -70,7 +54,7 @@
       <CompileAs>Default</CompileAs>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\bin\iculx67.dll</OutputFile>
+      <OutputFile>..\..\bin\iculx68.dll</OutputFile>
       <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>.\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <ProgramDatabaseFile>.\..\..\lib\iculx.pdb</ProgramDatabaseFile>
@@ -95,7 +79,7 @@
       <CompileAs>Default</CompileAs>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\bin\iculx67d.dll</OutputFile>
+      <OutputFile>..\..\bin\iculx68d.dll</OutputFile>
       <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>.\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -120,7 +104,7 @@
       <CompileAs>Default</CompileAs>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\bin64\iculx67.dll</OutputFile>
+      <OutputFile>..\..\bin64\iculx68.dll</OutputFile>
       <AdditionalDependencies>icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>.\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <ProgramDatabaseFile>.\..\..\lib64\iculx.pdb</ProgramDatabaseFile>
@@ -143,7 +127,7 @@
       <CompileAs>Default</CompileAs>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\bin64\iculx67d.dll</OutputFile>
+      <OutputFile>..\..\bin64\iculx68d.dll</OutputFile>
       <AdditionalDependencies>icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>.\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <GenerateDebugInformation>true</GenerateDebugInformation>
diff --git a/icu4c/source/layoutex/sources.txt b/icu4c/source/layoutex/sources.txt
new file mode 100644
index 0000000..ef92e54
--- /dev/null
+++ b/icu4c/source/layoutex/sources.txt
@@ -0,0 +1,5 @@
+LXUtilities.cpp
+ParagraphLayout.cpp
+RunArrays.cpp
+playout.cpp
+plruns.cpp
diff --git a/icu4c/source/python/icutools/databuilder/filtration.py b/icu4c/source/python/icutools/databuilder/filtration.py
index 554013a..5ad5f50 100644
--- a/icu4c/source/python/icutools/databuilder/filtration.py
+++ b/icu4c/source/python/icutools/databuilder/filtration.py
@@ -78,15 +78,22 @@
         return False
 
 
-class WhitelistBlacklistFilter(Filter):
+class IncludeExcludeFilter(Filter):
     def __init__(self, json_data):
         if "whitelist" in json_data:
-            self.is_whitelist = True
-            self.whitelist = json_data["whitelist"]
+            self.is_includelist = True
+            self.includelist = json_data["whitelist"]
+        elif "includelist" in json_data:
+            self.is_includelist = True
+            self.includelist = json_data["includelist"]
+        elif "blacklist" in json_data:
+            self.is_includelist = False
+            self.excludelist = json_data["blacklist"]
+        elif "excludelist" in json_data:
+            self.is_includelist = False
+            self.excludelist = json_data["excludelist"]
         else:
-            assert "blacklist" in json_data, "Need either whitelist or blacklist: %s" % str(json_data)
-            self.is_whitelist = False
-            self.blacklist = json_data["blacklist"]
+            raise AssertionError("Need either includelist or excludelist: %s" % str(json_data))
 
     def match(self, file):
         file_stem = self._file_to_file_stem(file)
@@ -97,43 +104,43 @@
         pass
 
 
-class FileStemFilter(WhitelistBlacklistFilter):
+class FileStemFilter(IncludeExcludeFilter):
     def _should_include(self, file_stem):
-        if self.is_whitelist:
-            return file_stem in self.whitelist
+        if self.is_includelist:
+            return file_stem in self.includelist
         else:
-            return file_stem not in self.blacklist
+            return file_stem not in self.excludelist
 
 
-class LanguageFilter(WhitelistBlacklistFilter):
+class LanguageFilter(IncludeExcludeFilter):
     def _should_include(self, file_stem):
         language = file_stem.split("_")[0]
         if language == "root":
             # Always include root.txt
             return True
-        if self.is_whitelist:
-            return language in self.whitelist
+        if self.is_includelist:
+            return language in self.includelist
         else:
-            return language not in self.blacklist
+            return language not in self.excludelist
 
 
-class RegexFilter(WhitelistBlacklistFilter):
+class RegexFilter(IncludeExcludeFilter):
     def __init__(self, *args):
         # TODO(ICU-20301): Change this to: super().__init__(*args)
         super(RegexFilter, self).__init__(*args)
-        if self.is_whitelist:
-            self.whitelist = [re.compile(pat) for pat in self.whitelist]
+        if self.is_includelist:
+            self.includelist = [re.compile(pat) for pat in self.includelist]
         else:
-            self.blacklist = [re.compile(pat) for pat in self.blacklist]
+            self.excludelist = [re.compile(pat) for pat in self.excludelist]
 
     def _should_include(self, file_stem):
-        if self.is_whitelist:
-            for pattern in self.whitelist:
+        if self.is_includelist:
+            for pattern in self.includelist:
                 if pattern.match(file_stem):
                     return True
             return False
         else:
-            for pattern in self.blacklist:
+            for pattern in self.excludelist:
                 if pattern.match(file_stem):
                     return False
             return True
@@ -159,7 +166,12 @@
 
 class LocaleFilter(Filter):
     def __init__(self, json_data, io):
-        self.locales_requested = list(json_data["whitelist"])
+        if "whitelist" in json_data:
+            self.locales_requested = list(json_data["whitelist"])
+        elif "includelist" in json_data:
+            self.locales_requested = list(json_data["includelist"])
+        else:
+            raise AssertionError("You must have an includelist in a locale filter")
         self.include_children = json_data.get("includeChildren", True)
         self.include_scripts = json_data.get("includeScripts", False)
 
diff --git a/icu4c/source/python/icutools/databuilder/filtration_schema.json b/icu4c/source/python/icutools/databuilder/filtration_schema.json
index 2b7ff99..3aed41a 100644
--- a/icu4c/source/python/icutools/databuilder/filtration_schema.json
+++ b/icu4c/source/python/icutools/databuilder/filtration_schema.json
@@ -90,7 +90,7 @@
                 {
                     "properties": {
                         "filterType": {
-                            "$ref": "#/definitions/blacklistWhitelistFilterTypes"
+                            "$ref": "#/definitions/includeExcludeFilterTypes"
                         },
                         "whitelist": { "$ref": "#/definitions/stringList" }
                     },
@@ -100,7 +100,7 @@
                 {
                     "properties": {
                         "filterType": {
-                            "$ref": "#/definitions/blacklistWhitelistFilterTypes"
+                            "$ref": "#/definitions/includeExcludeFilterTypes"
                         },
                         "blacklist": { "$ref": "#/definitions/stringList" }
                     },
@@ -110,6 +110,26 @@
                 {
                     "properties": {
                         "filterType": {
+                            "$ref": "#/definitions/includeExcludeFilterTypes"
+                        },
+                        "includelist": { "$ref": "#/definitions/stringList" }
+                    },
+                    "required": ["includelist"],
+                    "additionalProperties": false
+                },
+                {
+                    "properties": {
+                        "filterType": {
+                            "$ref": "#/definitions/includeExcludeFilterTypes"
+                        },
+                        "excludelist": { "$ref": "#/definitions/stringList" }
+                    },
+                    "required": ["excludelist"],
+                    "additionalProperties": false
+                },
+                {
+                    "properties": {
+                        "filterType": {
                             "type": "string",
                             "enum": ["exclude"]
                         }
@@ -138,6 +158,23 @@
                     "properties": {
                         "filterType": {
                             "type": "string",
+                            "enum": ["locale"]
+                        },
+                        "includeChildren": {
+                            "type": "boolean"
+                        },
+                        "includeScripts": {
+                            "type": "boolean"
+                        },
+                        "includelist": { "$ref": "#/definitions/stringList" }
+                    },
+                    "required": ["filterType", "includelist"],
+                    "additionalProperties": false
+                },
+                {
+                    "properties": {
+                        "filterType": {
+                            "type": "string",
                             "enum": ["union"]
                         },
                         "unionOf": {
@@ -150,7 +187,7 @@
                 }
             ]
         },
-        "blacklistWhitelistFilterTypes": {
+        "includeExcludeFilterTypes": {
             "type": "string",
             "enum": [
                 "language",
diff --git a/icu4c/source/python/icutools/databuilder/renderers/common_exec.py b/icu4c/source/python/icutools/databuilder/renderers/common_exec.py
index 3623441..91c12fd 100644
--- a/icu4c/source/python/icutools/databuilder/renderers/common_exec.py
+++ b/icu4c/source/python/icutools/databuilder/renderers/common_exec.py
@@ -1,6 +1,10 @@
 # Copyright (C) 2018 and later: Unicode, Inc. and others.
 # License & terms of use: http://www.unicode.org/copyright.html
 
+# Python 2/3 Compatibility (ICU-20299)
+# TODO(ICU-20301): Remove this.
+from __future__ import print_function
+
 from . import *
 from .. import *
 from .. import utils
@@ -146,4 +150,6 @@
             )
     if changed_windows_comspec:
         os.environ["COMSPEC"] = previous_comspec
+    if returncode != 0:
+        print("Command failed: %s" % command_line, file=sys.stderr)
     return returncode
diff --git a/icu4c/source/python/icutools/databuilder/test/sample_data/brkitr/LOCALE_DEPS.json b/icu4c/source/python/icutools/databuilder/test/sample_data/brkitr/LOCALE_DEPS.json
index 89329e8..674db09 100644
--- a/icu4c/source/python/icutools/databuilder/test/sample_data/brkitr/LOCALE_DEPS.json
+++ b/icu4c/source/python/icutools/databuilder/test/sample_data/brkitr/LOCALE_DEPS.json
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 //////////////////////////////////////////////////////////////
 // This is a sample LOCALE_DEPS.json file for testing only. //
diff --git a/icu4c/source/python/icutools/databuilder/test/sample_data/locales/LOCALE_DEPS.json b/icu4c/source/python/icutools/databuilder/test/sample_data/locales/LOCALE_DEPS.json
index fd28a74..1456ea0 100644
--- a/icu4c/source/python/icutools/databuilder/test/sample_data/locales/LOCALE_DEPS.json
+++ b/icu4c/source/python/icutools/databuilder/test/sample_data/locales/LOCALE_DEPS.json
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 //////////////////////////////////////////////////////////////
 // This is a sample LOCALE_DEPS.json file for testing only. //
diff --git a/icu4c/source/python/icutools/databuilder/test/sample_data/rbnf/LOCALE_DEPS.json b/icu4c/source/python/icutools/databuilder/test/sample_data/rbnf/LOCALE_DEPS.json
index f079619..c6ec208 100644
--- a/icu4c/source/python/icutools/databuilder/test/sample_data/rbnf/LOCALE_DEPS.json
+++ b/icu4c/source/python/icutools/databuilder/test/sample_data/rbnf/LOCALE_DEPS.json
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 //////////////////////////////////////////////////////////////
 // This is a sample LOCALE_DEPS.json file for testing only. //
diff --git a/icu4c/source/runConfigureICU b/icu4c/source/runConfigureICU
index 77df3a0..4b3d24a 100755
--- a/icu4c/source/runConfigureICU
+++ b/icu4c/source/runConfigureICU
@@ -36,7 +36,7 @@
 
 The following names can be supplied as the argument for platform:
 
-    AIX                 Use the IBM Visual Age xlc_r/xlC_r compilers on AIX
+    AIX                 Use the IBM XL xlclang/xlclang compilers on AIX
     AIX/GCC             Use the GNU gcc/g++ compilers on AIX
     Cygwin              Use the GNU gcc/g++ compilers on Cygwin
     Cygwin/MSVC         Use the Microsoft Visual C++ compiler on Cygwin
@@ -49,7 +49,7 @@
     Linux/gcc           Use the GNU gcc/g++ compilers on Linux
     Linux/ECC           Use the Intel ECC compiler on Linux
     Linux/ICC           Use the Intel ICC compiler on Linux
-    Linux/VA            Use the IBM Visual Age compiler on Power PC Linux
+    Linux/VA            Use the IBM XL compiler on Power PC Linux
     MacOSX              Use the default compilers on MacOS X (Darwin)
     MacOSX/GCC          Use the GNU gcc/g++ compilers on MacOSX (Darwin)
     MinGW               Use the GNU gcc/g++ compilers on MinGW
@@ -134,17 +134,17 @@
 case $platform in
     AIX)
         THE_OS=AIX
-        THE_COMP="xlC_r"
-        CC=`which xlc_r`; export CC
+        THE_COMP="xlclang"
+        CC=`which xlclang`; export CC
         if [ ! -x $CC ]; then
-           echo "ERROR: xlc_r was not found, please check the PATH to make sure it is correct."; exit 1
+           echo "ERROR: xlclang was not found, please check the PATH to make sure it is correct."; exit 1
         fi
-        CXX=`which xlC_r`; export CXX
+        CXX=`which xlclang++`; export CXX
         if [ ! -x $CXX ]; then
-           echo "ERROR: xlC_r was not found, please check the PATH to make sure it is correct."; exit 1
+           echo "ERROR: xlclang++ was not found, please check the PATH to make sure it is correct."; exit 1
         fi
-        RELEASE_CFLAGS="-O2 -qmaxmem=-1"
-        RELEASE_CXXFLAGS="-O2 -qmaxmem=-1"
+        RELEASE_CFLAGS="-O3"
+        RELEASE_CXXFLAGS="-O3"
         ;;
     AIX/GCC)
         THE_OS=AIX
@@ -228,11 +228,11 @@
         ;;
     Linux/VA)
         THE_OS="Linux"
-        THE_COMP="IBM Visual Age C++ Compiler"
-        CC=`which xlc_r`; export CC
-        CXX=`which xlC_r`; export CXX
-        RELEASE_CFLAGS="-O2 -qmaxmem=-1"
-        RELEASE_CXXFLAGS="-O2 -qmaxmem=-1"
+        THE_COMP="IBM XL C++ Compiler"
+        CC=`which xlclang`; export CC
+        CXX=`which xlclang++`; export CXX
+        RELEASE_CFLAGS="-O3"
+        RELEASE_CXXFLAGS="-O3"
         ;;
     Linux/gcc)
         THE_OS="Linux"
diff --git a/icu4c/source/samples/Makefile.in b/icu4c/source/samples/Makefile.in
index 211b2a5..374a70f 100644
--- a/icu4c/source/samples/Makefile.in
+++ b/icu4c/source/samples/Makefile.in
@@ -1,6 +1,6 @@
 ## Makefile.in for ICU samples
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 1999-2011, International Business Machines Corporation and
 ## others. All Rights Reserved.
diff --git a/icu4c/source/samples/all/samplecheck.bat b/icu4c/source/samples/all/samplecheck.bat
index c85a6c6..ab69cb2 100644
--- a/icu4c/source/samples/all/samplecheck.bat
+++ b/icu4c/source/samples/all/samplecheck.bat
@@ -34,6 +34,10 @@
  goto :eof
 )
 
+REM Change the codepage to UTF-8 in order to better handle non-ASCII characters from the samples.
+echo Setting codepage to UTF-8
+chcp 65001
+
 echo Testing ICU samples in %ICU_ICUDIR%  arch=%ICU_ARCH% type=%ICU_DBRL%
 set PATH=%ICU_BINDIR%;%PATH%
 pushd %ICU_BINDIR%
diff --git a/icu4c/source/samples/break/Makefile b/icu4c/source/samples/break/Makefile
index 4cb9c2e..4fda882 100644
--- a/icu4c/source/samples/break/Makefile
+++ b/icu4c/source/samples/break/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2000-2002 IBM, Inc. and others
 # sample code makefile
diff --git a/icu4c/source/samples/break/break.cpp b/icu4c/source/samples/break/break.cpp
index 8b4ad61..8678441 100644
--- a/icu4c/source/samples/break/break.cpp
+++ b/icu4c/source/samples/break/break.cpp
@@ -2,7 +2,7 @@
 *******************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 *******************************************************************************
 *******************************************************************************
diff --git a/icu4c/source/samples/break/break.vcxproj b/icu4c/source/samples/break/break.vcxproj
index 5cf80d7..d9a5100 100644
--- a/icu4c/source/samples/break/break.vcxproj
+++ b/icu4c/source/samples/break/break.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/break/readme.txt b/icu4c/source/samples/break/readme.txt
index 4751ae5..debedd1 100644
--- a/icu4c/source/samples/break/readme.txt
+++ b/icu4c/source/samples/break/readme.txt
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2002-2010, International Business Machines Corporation and others. All Rights Reserved.
 break: Boundary Analysis
diff --git a/icu4c/source/samples/break/ubreak.c b/icu4c/source/samples/break/ubreak.c
index 593ea82..10d7d0b 100644
--- a/icu4c/source/samples/break/ubreak.c
+++ b/icu4c/source/samples/break/ubreak.c
@@ -2,7 +2,7 @@
 *******************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 *******************************************************************************
 *******************************************************************************
diff --git a/icu4c/source/samples/cal/Makefile.in b/icu4c/source/samples/cal/Makefile.in
index 2fa058d..f696350 100644
--- a/icu4c/source/samples/cal/Makefile.in
+++ b/icu4c/source/samples/cal/Makefile.in
@@ -1,5 +1,5 @@
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Makefile.in for ICU - samples/cal
 ## Copyright (c) 1999-2011, International Business Machines Corporation and
diff --git a/icu4c/source/samples/cal/cal.c b/icu4c/source/samples/cal/cal.c
index bb096bf..95fe48f 100644
--- a/icu4c/source/samples/cal/cal.c
+++ b/icu4c/source/samples/cal/cal.c
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 **********************************************************************
 * Copyright (C) 1998-2012, International Business Machines Corporation
diff --git a/icu4c/source/samples/cal/cal.vcxproj b/icu4c/source/samples/cal/cal.vcxproj
index 00c8ef6..51f721b 100644
--- a/icu4c/source/samples/cal/cal.vcxproj
+++ b/icu4c/source/samples/cal/cal.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/cal/readme.txt b/icu4c/source/samples/cal/readme.txt
index f32eeb0..c9a73aa 100644
--- a/icu4c/source/samples/cal/readme.txt
+++ b/icu4c/source/samples/cal/readme.txt
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2002-2005, International Business Machines Corporation and others. All Rights Reserved.
 icucal: a sample program which displays the calendar.
diff --git a/icu4c/source/samples/cal/uprint.c b/icu4c/source/samples/cal/uprint.c
index 8fce883..59c5d3b 100644
--- a/icu4c/source/samples/cal/uprint.c
+++ b/icu4c/source/samples/cal/uprint.c
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 **********************************************************************
 * Copyright (C) 1998-2001, International Business Machines Corporation
@@ -18,6 +18,7 @@
 */
 
 #include "uprint.h"
+#include <stdbool.h>
 #include "unicode/ucnv.h"
 #include "unicode/ustring.h"
 
@@ -61,7 +62,7 @@
     /* perform the conversion */
     ucnv_fromUnicode(converter, &myTarget, myTarget + arraySize,
              &mySource, mySourceEnd, NULL,
-             TRUE, status);
+             true, status);
 
     /* Write the converted data to the FILE* */
     fwrite(buf, sizeof(char), myTarget - buf, f);
diff --git a/icu4c/source/samples/cal/uprint.h b/icu4c/source/samples/cal/uprint.h
index cbbcefb..49db38b 100644
--- a/icu4c/source/samples/cal/uprint.h
+++ b/icu4c/source/samples/cal/uprint.h
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 **********************************************************************
 * Copyright (C) 1998-2004, International Business Machines Corporation
diff --git a/icu4c/source/samples/case/Makefile b/icu4c/source/samples/case/Makefile
index 3fa0a5b..171c922 100644
--- a/icu4c/source/samples/case/Makefile
+++ b/icu4c/source/samples/case/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2003 IBM, Inc. and others
 # sample code makefile
diff --git a/icu4c/source/samples/case/case.cpp b/icu4c/source/samples/case/case.cpp
index c0f7216..0f8baff 100644
--- a/icu4c/source/samples/case/case.cpp
+++ b/icu4c/source/samples/case/case.cpp
@@ -2,7 +2,7 @@
 *******************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 *******************************************************************************
 *******************************************************************************
diff --git a/icu4c/source/samples/case/case.vcxproj b/icu4c/source/samples/case/case.vcxproj
index 7620fa5..38be307 100644
--- a/icu4c/source/samples/case/case.vcxproj
+++ b/icu4c/source/samples/case/case.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/case/readme.txt b/icu4c/source/samples/case/readme.txt
index b39949c..df3cb5f 100644
--- a/icu4c/source/samples/case/readme.txt
+++ b/icu4c/source/samples/case/readme.txt
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2003-2005, International Business Machines Corporation and others. All Rights Reserved.
 case: case mapping
diff --git a/icu4c/source/samples/case/ucase.c b/icu4c/source/samples/case/ucase.c
index 2dd272a..439c3c5 100644
--- a/icu4c/source/samples/case/ucase.c
+++ b/icu4c/source/samples/case/ucase.c
@@ -2,7 +2,7 @@
 *******************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 *******************************************************************************
 *******************************************************************************
diff --git a/icu4c/source/samples/citer/Makefile b/icu4c/source/samples/citer/Makefile
index 638d814..14b87e0 100644
--- a/icu4c/source/samples/citer/Makefile
+++ b/icu4c/source/samples/citer/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2003-2005 IBM, Inc. and others
 # sample code makefile
diff --git a/icu4c/source/samples/citer/citer.cpp b/icu4c/source/samples/citer/citer.cpp
index 4d5a3bb..958fe42 100644
--- a/icu4c/source/samples/citer/citer.cpp
+++ b/icu4c/source/samples/citer/citer.cpp
@@ -2,7 +2,7 @@
 *******************************************************************************
 *
 *     © 2016 and later: Unicode, Inc. and others.
-*     License & terms of use: http://www.unicode.org/copyright.html#License
+*     License & terms of use: http://www.unicode.org/copyright.html
 *
 *******************************************************************************
 *******************************************************************************
diff --git a/icu4c/source/samples/citer/citer.vcxproj b/icu4c/source/samples/citer/citer.vcxproj
index c6bf105..c921144 100644
--- a/icu4c/source/samples/citer/citer.vcxproj
+++ b/icu4c/source/samples/citer/citer.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/citer/readme.txt b/icu4c/source/samples/citer/readme.txt
index c805c1e..59ef8b5 100644
--- a/icu4c/source/samples/citer/readme.txt
+++ b/icu4c/source/samples/citer/readme.txt
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2003-2010, International Business Machines Corporation and others. All Rights Reserved.
 citer: Character Iteration
diff --git a/icu4c/source/samples/coll/Makefile b/icu4c/source/samples/coll/Makefile
index 7a43cfc..84b5ff2 100644
--- a/icu4c/source/samples/coll/Makefile
+++ b/icu4c/source/samples/coll/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2000-2002 IBM, Inc. and others
 # sample code makefile
diff --git a/icu4c/source/samples/coll/coll.cpp b/icu4c/source/samples/coll/coll.cpp
index afa57d0..d8d067a 100644
--- a/icu4c/source/samples/coll/coll.cpp
+++ b/icu4c/source/samples/coll/coll.cpp
@@ -1,7 +1,7 @@
 /*************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *************************************************************************
  *************************************************************************
@@ -47,13 +47,13 @@
  */
 char * opt_locale     = "en_US";
 char * opt_rules      = 0;
-UBool  opt_help       = FALSE;
-UBool  opt_norm       = FALSE;
-UBool  opt_french     = FALSE;
-UBool  opt_shifted    = FALSE;
-UBool  opt_lower      = FALSE;
-UBool  opt_upper      = FALSE;
-UBool  opt_case       = FALSE;
+UBool  opt_help       = false;
+UBool  opt_norm       = false;
+UBool  opt_french     = false;
+UBool  opt_shifted    = false;
+UBool  opt_lower      = false;
+UBool  opt_upper      = false;
+UBool  opt_case       = false;
 int    opt_level      = 0;
 char * opt_source     = "abc";
 char * opt_target     = "abd";
@@ -97,14 +97,14 @@
             if (strcmp(pOpt->name, pArgName) == 0) {
                 switch (pOpt->type) {
                 case OptSpec::FLAG:
-                    *(UBool *)(pOpt->pVar) = TRUE;
+                    *(UBool *)(pOpt->pVar) = true;
                     break;
                 case OptSpec::STRING:
                     argNum ++;
                     if (argNum >= argc) {
                         fprintf(stderr, "value expected for \"%s\" option.\n", 
 							    pOpt->name);
-                        return FALSE;
+                        return false;
                     }
                     *(const char **)(pOpt->pVar) = argv[argNum];
                     break;
@@ -113,7 +113,7 @@
                     if (argNum >= argc) {
                         fprintf(stderr, "value expected for \"%s\" option.\n", 
 							    pOpt->name);
-                        return FALSE;
+                        return false;
                     }
                     char *endp;
                     int i = strtol(argv[argNum], &endp, 0);
@@ -121,7 +121,7 @@
                         fprintf(stderr, 
 							    "integer value expected for \"%s\" option.\n", 
 								pOpt->name);
-                        return FALSE;
+                        return false;
                     }
                     *(int *)(pOpt->pVar) = i;
                 }
@@ -131,10 +131,10 @@
         if (pOpt->name == 0)
         {
             fprintf(stderr, "Unrecognized option \"%s\"\n", pArgName);
-            return FALSE;
+            return false;
         }
     }
-	return TRUE;
+	return true;
 }
 
 /**
@@ -175,7 +175,7 @@
     }
 	if (U_FAILURE(status)) {
         fprintf(stderr, "Collator creation failed.: %d\n", status);
-        return FALSE;
+        return false;
     }
     if (status == U_USING_DEFAULT_WARNING) {
         fprintf(stderr, "Warning, U_USING_DEFAULT_WARNING for %s\n", 
@@ -228,14 +228,14 @@
             break;
         default:
             fprintf(stderr, "-level param must be between 1 and 5\n");
-            return FALSE;
+            return false;
         }
     }
     if (U_FAILURE(status)) {
         fprintf(stderr, "Collator attribute setting failed.: %d\n", status);
-        return FALSE;
+        return false;
     }
-	return TRUE;
+	return true;
 }
 
 /** 
@@ -244,12 +244,12 @@
  */
 int main(int argc, const char** argv) 
 {
-    if (processOptions(argc, argv, opts) != TRUE || opt_help) {
+    if (!static_cast<bool>(processOptions(argc, argv, opts)) || static_cast<bool>(opt_help)) {
         printf(gHelpString);
         return -1;
     }
 
-    if (processCollator() != TRUE) {
+    if (!static_cast<bool>(processCollator())) {
 		fprintf(stderr, "Error creating collator for comparison\n");
 		return -1;
 	}
diff --git a/icu4c/source/samples/coll/coll.vcxproj b/icu4c/source/samples/coll/coll.vcxproj
index a486491..fd49d1b 100644
--- a/icu4c/source/samples/coll/coll.vcxproj
+++ b/icu4c/source/samples/coll/coll.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/coll/readme.txt b/icu4c/source/samples/coll/readme.txt
index 135632a..f98139a 100644
--- a/icu4c/source/samples/coll/readme.txt
+++ b/icu4c/source/samples/coll/readme.txt
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2002-2005, International Business Machines Corporation and others. All Rights Reserved.
 coll: a sample program which compares 2 strings with a user-defined collator.
diff --git a/icu4c/source/samples/csdet/Makefile b/icu4c/source/samples/csdet/Makefile
index 045b8af..3b70a3a 100644
--- a/icu4c/source/samples/csdet/Makefile
+++ b/icu4c/source/samples/csdet/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2000-2007 IBM, Inc. and others
 # sample code makefile
diff --git a/icu4c/source/samples/csdet/csdet.c b/icu4c/source/samples/csdet/csdet.c
index c8df791..5b20dbf 100644
--- a/icu4c/source/samples/csdet/csdet.c
+++ b/icu4c/source/samples/csdet/csdet.c
@@ -1,7 +1,7 @@
 /*
 ********************************************************************************
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 ********************************************************************************
 ********************************************************************************
  *   Copyright (C) 2005-2006, International Business Machines
diff --git a/icu4c/source/samples/csdet/csdet.vcxproj b/icu4c/source/samples/csdet/csdet.vcxproj
index 803a514..234a7b8 100644
--- a/icu4c/source/samples/csdet/csdet.vcxproj
+++ b/icu4c/source/samples/csdet/csdet.vcxproj
@@ -15,22 +15,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/csdet/readme.txt b/icu4c/source/samples/csdet/readme.txt
index 61e7e6f..550dfe9 100644
--- a/icu4c/source/samples/csdet/readme.txt
+++ b/icu4c/source/samples/csdet/readme.txt
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2001-2010 International Business Machines
 Corporation and others. All Rights Reserved.
diff --git a/icu4c/source/samples/date/Makefile.in b/icu4c/source/samples/date/Makefile.in
index 1826469..cbc020e 100644
--- a/icu4c/source/samples/date/Makefile.in
+++ b/icu4c/source/samples/date/Makefile.in
@@ -1,5 +1,5 @@
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Makefile.in for ICU - samples/date
 ## Copyright (c) 1999-2012, International Business Machines Corporation and
diff --git a/icu4c/source/samples/date/date.c b/icu4c/source/samples/date/date.c
index 400fe2c..a8abb36 100644
--- a/icu4c/source/samples/date/date.c
+++ b/icu4c/source/samples/date/date.c
@@ -1,7 +1,7 @@
 /*
 *************************************************************************
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *************************************************************************
 ***********************************************************************
 *   Copyright (C) 1998-2012, International Business Machines
@@ -19,6 +19,7 @@
 *******************************************************************************
 */
 
+#include <stdbool.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
@@ -276,7 +277,7 @@
   fmt = udat_open(style, style, locale, tz, -1,NULL,0, status);
   if ( format != NULL ) {
     charsToUCharsDefault(uFormat,sizeof(uFormat)/sizeof(uFormat[0]),format,-1,status);
-    udat_applyPattern(fmt,FALSE,uFormat,-1);
+    udat_applyPattern(fmt,false,uFormat,-1);
   }
   len = udat_format(fmt, when, 0, len, 0, status);
   if(*status == U_BUFFER_OVERFLOW_ERROR) {
@@ -331,7 +332,7 @@
     fmt = udat_open(style, style, locale, tz, -1,NULL,0, status);
     if ( format != NULL ) {
       charsToUCharsDefault(uFormat,sizeof(uFormat)/sizeof(uFormat[0]), format,-1,status);
-      udat_applyPattern(fmt,FALSE,uFormat,-1);
+      udat_applyPattern(fmt,false,uFormat,-1);
     }
     
     charsToUCharsDefault(uParse,sizeof(uParse)/sizeof(uParse[0]), parse,-1,status);
diff --git a/icu4c/source/samples/date/date.vcxproj b/icu4c/source/samples/date/date.vcxproj
index d0308a3..3d20f95 100644
--- a/icu4c/source/samples/date/date.vcxproj
+++ b/icu4c/source/samples/date/date.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/date/readme.txt b/icu4c/source/samples/date/readme.txt
index d02a224..72c4661 100644
--- a/icu4c/source/samples/date/readme.txt
+++ b/icu4c/source/samples/date/readme.txt
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2002-2010, International Business Machines Corporation and others. All Rights Reserved.
 icudate: a sample program which displays the current date
diff --git a/icu4c/source/samples/date/uprint.c b/icu4c/source/samples/date/uprint.c
index b0ef938..f901580 100644
--- a/icu4c/source/samples/date/uprint.c
+++ b/icu4c/source/samples/date/uprint.c
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 **********************************************************************
 * Copyright (C) 1998-2001, International Business Machines Corporation
@@ -19,6 +19,7 @@
 
 #include "uprint.h"
 
+#include <stdbool.h>
 #include "unicode/ucnv.h"
 #include "unicode/ustring.h"
 
@@ -62,7 +63,7 @@
 	/* perform the conversion */
 	ucnv_fromUnicode(converter, &myTarget,	myTarget + arraySize,
 			 &mySource, mySourceEnd, NULL,
-			 TRUE, status);
+			 true, status);
 
 	/* Write the converted data to the FILE* */
 	fwrite(buf, sizeof(char), myTarget - buf, f);
diff --git a/icu4c/source/samples/date/uprint.h b/icu4c/source/samples/date/uprint.h
index 5f2fba6..2f60ecb 100644
--- a/icu4c/source/samples/date/uprint.h
+++ b/icu4c/source/samples/date/uprint.h
@@ -1,7 +1,7 @@
 /*
 ********************************************************************************
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 ********************************************************************************
 **********************************************************************
 * Copyright (C) 1998-2004, International Business Machines Corporation
diff --git a/icu4c/source/samples/datecal/Makefile b/icu4c/source/samples/datecal/Makefile
index 796eb5e..013992b 100644
--- a/icu4c/source/samples/datecal/Makefile
+++ b/icu4c/source/samples/datecal/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2000-2006 IBM, Inc. and others
 # sample code makefile
diff --git a/icu4c/source/samples/datecal/cal.cpp b/icu4c/source/samples/datecal/cal.cpp
index 1af3a69..ba581b8 100644
--- a/icu4c/source/samples/datecal/cal.cpp
+++ b/icu4c/source/samples/datecal/cal.cpp
@@ -2,7 +2,7 @@
 *******************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 *******************************************************************************
 *******************************************************************************
diff --git a/icu4c/source/samples/datecal/ccal.c b/icu4c/source/samples/datecal/ccal.c
index 4a80beb..b9ce3de 100644
--- a/icu4c/source/samples/datecal/ccal.c
+++ b/icu4c/source/samples/datecal/ccal.c
@@ -2,7 +2,7 @@
 *******************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 *******************************************************************************
 *******************************************************************************
diff --git a/icu4c/source/samples/datefmt/Makefile b/icu4c/source/samples/datefmt/Makefile
index 9556ed6..c9032a7 100644
--- a/icu4c/source/samples/datefmt/Makefile
+++ b/icu4c/source/samples/datefmt/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2000-2002 IBM, Inc. and others
 # sample code makefile
diff --git a/icu4c/source/samples/datefmt/README.TXT b/icu4c/source/samples/datefmt/README.TXT
index 3be6db2..2ec4782 100644
--- a/icu4c/source/samples/datefmt/README.TXT
+++ b/icu4c/source/samples/datefmt/README.TXT
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2002-2010, International Business Machines Corporation and others. All Rights Reserved.
 
diff --git a/icu4c/source/samples/datefmt/answers/main_0.cpp b/icu4c/source/samples/datefmt/answers/main_0.cpp
index 0c58786..9bea9b2 100644
--- a/icu4c/source/samples/datefmt/answers/main_0.cpp
+++ b/icu4c/source/samples/datefmt/answers/main_0.cpp
@@ -1,6 +1,6 @@
 /********************************************************************
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *************************************************************************
  *************************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/datefmt/answers/main_1.cpp b/icu4c/source/samples/datefmt/answers/main_1.cpp
index 1afcfd6..41253df 100644
--- a/icu4c/source/samples/datefmt/answers/main_1.cpp
+++ b/icu4c/source/samples/datefmt/answers/main_1.cpp
@@ -1,6 +1,6 @@
 /********************************************************************
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *************************************************************************
  *************************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/datefmt/answers/main_2.cpp b/icu4c/source/samples/datefmt/answers/main_2.cpp
index ccce516..775cecf 100644
--- a/icu4c/source/samples/datefmt/answers/main_2.cpp
+++ b/icu4c/source/samples/datefmt/answers/main_2.cpp
@@ -1,6 +1,6 @@
 /********************************************************************
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *************************************************************************
  *************************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/datefmt/answers/main_3.cpp b/icu4c/source/samples/datefmt/answers/main_3.cpp
index 39c095a..4aba560 100644
--- a/icu4c/source/samples/datefmt/answers/main_3.cpp
+++ b/icu4c/source/samples/datefmt/answers/main_3.cpp
@@ -1,6 +1,6 @@
 /********************************************************************
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *************************************************************************
  *************************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/datefmt/datefmt.vcxproj b/icu4c/source/samples/datefmt/datefmt.vcxproj
index e22dde6..00dcd6d 100644
--- a/icu4c/source/samples/datefmt/datefmt.vcxproj
+++ b/icu4c/source/samples/datefmt/datefmt.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/datefmt/main.cpp b/icu4c/source/samples/datefmt/main.cpp
index 9fb22e5..b7c8a13 100644
--- a/icu4c/source/samples/datefmt/main.cpp
+++ b/icu4c/source/samples/datefmt/main.cpp
@@ -1,6 +1,6 @@
 /*************************************************************************
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *************************************************************************
  *************************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/datefmt/util.cpp b/icu4c/source/samples/datefmt/util.cpp
index 240b405..f7c2ade 100644
--- a/icu4c/source/samples/datefmt/util.cpp
+++ b/icu4c/source/samples/datefmt/util.cpp
@@ -1,6 +1,6 @@
 /********************************************************************
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *************************************************************************
  *************************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/datefmt/util.h b/icu4c/source/samples/datefmt/util.h
index 2fd538b..27d6c80 100644
--- a/icu4c/source/samples/datefmt/util.h
+++ b/icu4c/source/samples/datefmt/util.h
@@ -1,6 +1,6 @@
 /********************************************************************
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *************************************************************************
  *************************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/defs.mk b/icu4c/source/samples/defs.mk
index 316f1d7..bda76fb 100644
--- a/icu4c/source/samples/defs.mk
+++ b/icu4c/source/samples/defs.mk
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2002-2012 IBM, Inc. and others
 # Sample code makefile definitions 
diff --git a/icu4c/source/samples/layout/FontMap.GDI b/icu4c/source/samples/layout/FontMap.GDI
index 29c8d61..59c5998 100644
--- a/icu4c/source/samples/layout/FontMap.GDI
+++ b/icu4c/source/samples/layout/FontMap.GDI
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (C) 2001-2010, International Business Machines
 # Corporation and others.  All Rights Reserved.
diff --git a/icu4c/source/samples/layout/FontMap.Gnome b/icu4c/source/samples/layout/FontMap.Gnome
index cec0625..ece82d7 100644
--- a/icu4c/source/samples/layout/FontMap.Gnome
+++ b/icu4c/source/samples/layout/FontMap.Gnome
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (C) 2001-2005, International Business Machines
 # Corporation and others.  All Rights Reserved.
diff --git a/icu4c/source/samples/layout/FontMap.cpp b/icu4c/source/samples/layout/FontMap.cpp
index 1ca98df..acfee82 100644
--- a/icu4c/source/samples/layout/FontMap.cpp
+++ b/icu4c/source/samples/layout/FontMap.cpp
@@ -1,7 +1,7 @@
 /*
  ******************************************************************************
  * © 2016 and later: Unicode, Inc. and others.                    *
- * License & terms of use: http://www.unicode.org/copyright.html#License      *
+ * License & terms of use: http://www.unicode.org/copyright.html      *
  ******************************************************************************
  ******************************************************************************
  * Copyright (C) 1998-2006, International Business Machines Corporation and   *
diff --git a/icu4c/source/samples/layout/FontMap.h b/icu4c/source/samples/layout/FontMap.h
index c3f518b..cdc8fd5 100644
--- a/icu4c/source/samples/layout/FontMap.h
+++ b/icu4c/source/samples/layout/FontMap.h
@@ -1,7 +1,7 @@
 /*
  ******************************************************************************
  * © 2016 and later: Unicode, Inc. and others.                    *
- * License & terms of use: http://www.unicode.org/copyright.html#License      *
+ * License & terms of use: http://www.unicode.org/copyright.html      *
  ******************************************************************************
  ******************************************************************************
  * Copyright (C) 1998-2003, International Business Machines Corporation and   *
diff --git a/icu4c/source/samples/layout/FontTableCache.cpp b/icu4c/source/samples/layout/FontTableCache.cpp
index 7ca68b7..fcf9fe8 100644
--- a/icu4c/source/samples/layout/FontTableCache.cpp
+++ b/icu4c/source/samples/layout/FontTableCache.cpp
@@ -1,7 +1,7 @@
 /*
  *************************************************************************
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *************************************************************************
  *************************************************************************
  *   Copyright (C) 2003 - 2008, International Business Machines
diff --git a/icu4c/source/samples/layout/FontTableCache.h b/icu4c/source/samples/layout/FontTableCache.h
index f949c5a..e928b91 100644
--- a/icu4c/source/samples/layout/FontTableCache.h
+++ b/icu4c/source/samples/layout/FontTableCache.h
@@ -1,7 +1,7 @@
 /*
  *************************************************************************
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *************************************************************************
  **********************************************************************
  *   Copyright (C) 2003-2008, International Business Machines
diff --git a/icu4c/source/samples/layout/GDIFontInstance.cpp b/icu4c/source/samples/layout/GDIFontInstance.cpp
index 59448f0..8bd688d 100644
--- a/icu4c/source/samples/layout/GDIFontInstance.cpp
+++ b/icu4c/source/samples/layout/GDIFontInstance.cpp
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/samples/layout/GDIFontInstance.h b/icu4c/source/samples/layout/GDIFontInstance.h
index 36211d4..e0ab1e0 100644
--- a/icu4c/source/samples/layout/GDIFontInstance.h
+++ b/icu4c/source/samples/layout/GDIFontInstance.h
@@ -3,7 +3,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/samples/layout/GDIFontMap.cpp b/icu4c/source/samples/layout/GDIFontMap.cpp
index bdbfe30..19213b2 100644
--- a/icu4c/source/samples/layout/GDIFontMap.cpp
+++ b/icu4c/source/samples/layout/GDIFontMap.cpp
@@ -1,7 +1,7 @@
 /*
  ******************************************************************************
  * © 2016 and later: Unicode, Inc. and others.                    *
- * License & terms of use: http://www.unicode.org/copyright.html#License      *
+ * License & terms of use: http://www.unicode.org/copyright.html      *
  ******************************************************************************
  ******************************************************************************
  * Copyright (C) 1998-2003, International Business Machines Corporation and   *
diff --git a/icu4c/source/samples/layout/GDIFontMap.h b/icu4c/source/samples/layout/GDIFontMap.h
index 0a66334..2c07c23 100644
--- a/icu4c/source/samples/layout/GDIFontMap.h
+++ b/icu4c/source/samples/layout/GDIFontMap.h
@@ -1,7 +1,7 @@
 /*
  ******************************************************************************
  * © 2016 and later: Unicode, Inc. and others.                    *
- * License & terms of use: http://www.unicode.org/copyright.html#License      *
+ * License & terms of use: http://www.unicode.org/copyright.html      *
  ******************************************************************************
  ******************************************************************************
  * Copyright (C) 1998-2003, International Business Machines Corporation and   *
diff --git a/icu4c/source/samples/layout/GDIGUISupport.cpp b/icu4c/source/samples/layout/GDIGUISupport.cpp
index a3289e4..e314b8a 100644
--- a/icu4c/source/samples/layout/GDIGUISupport.cpp
+++ b/icu4c/source/samples/layout/GDIGUISupport.cpp
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/samples/layout/GDIGUISupport.h b/icu4c/source/samples/layout/GDIGUISupport.h
index e3ae957..c77d40b 100644
--- a/icu4c/source/samples/layout/GDIGUISupport.h
+++ b/icu4c/source/samples/layout/GDIGUISupport.h
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/samples/layout/GUISupport.h b/icu4c/source/samples/layout/GUISupport.h
index 1b092a3..a88bf5f 100644
--- a/icu4c/source/samples/layout/GUISupport.h
+++ b/icu4c/source/samples/layout/GUISupport.h
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/samples/layout/GnomeFontInstance.cpp b/icu4c/source/samples/layout/GnomeFontInstance.cpp
index c330b61..068f6f6 100644
--- a/icu4c/source/samples/layout/GnomeFontInstance.cpp
+++ b/icu4c/source/samples/layout/GnomeFontInstance.cpp
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/samples/layout/GnomeFontInstance.h b/icu4c/source/samples/layout/GnomeFontInstance.h
index 7cabcb5..9d48bc3 100644
--- a/icu4c/source/samples/layout/GnomeFontInstance.h
+++ b/icu4c/source/samples/layout/GnomeFontInstance.h
@@ -3,7 +3,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/samples/layout/GnomeFontMap.cpp b/icu4c/source/samples/layout/GnomeFontMap.cpp
index 7895dd8..d85f28b 100644
--- a/icu4c/source/samples/layout/GnomeFontMap.cpp
+++ b/icu4c/source/samples/layout/GnomeFontMap.cpp
@@ -1,7 +1,7 @@
 /*
  ******************************************************************************
  * © 2016 and later: Unicode, Inc. and others.                    *
- * License & terms of use: http://www.unicode.org/copyright.html#License      *
+ * License & terms of use: http://www.unicode.org/copyright.html      *
  ******************************************************************************
  ******************************************************************************
  * Copyright (C) 1998-2006, International Business Machines Corporation and   *
diff --git a/icu4c/source/samples/layout/GnomeFontMap.h b/icu4c/source/samples/layout/GnomeFontMap.h
index 2a38a64..7fc166b 100644
--- a/icu4c/source/samples/layout/GnomeFontMap.h
+++ b/icu4c/source/samples/layout/GnomeFontMap.h
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *******************************************************************************
  ******************************************************************************
  * Copyright (C) 1998-2006, International Business Machines Corporation and   *
diff --git a/icu4c/source/samples/layout/GnomeGUISupport.cpp b/icu4c/source/samples/layout/GnomeGUISupport.cpp
index 35a4166..21eb6fb 100644
--- a/icu4c/source/samples/layout/GnomeGUISupport.cpp
+++ b/icu4c/source/samples/layout/GnomeGUISupport.cpp
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/samples/layout/GnomeGUISupport.h b/icu4c/source/samples/layout/GnomeGUISupport.h
index 2f56e2a..b11f5be 100644
--- a/icu4c/source/samples/layout/GnomeGUISupport.h
+++ b/icu4c/source/samples/layout/GnomeGUISupport.h
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/samples/layout/LayoutSample.rc b/icu4c/source/samples/layout/LayoutSample.rc
index dd50c58..9b44471 100644
--- a/icu4c/source/samples/layout/LayoutSample.rc
+++ b/icu4c/source/samples/layout/LayoutSample.rc
@@ -1,7 +1,7 @@
 //Microsoft Developer Studio generated resource script.
 //
 // Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 #include "resource.h"
 
 #define APSTUDIO_READONLY_SYMBOLS
@@ -13,7 +13,7 @@
 *******************************************************************************
 *
 *   Copyright (C) 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 *******************************************************************************
 *******************************************************************************
diff --git a/icu4c/source/samples/layout/Makefile.in b/icu4c/source/samples/layout/Makefile.in
index b242df2..a8c4a24 100644
--- a/icu4c/source/samples/layout/Makefile.in
+++ b/icu4c/source/samples/layout/Makefile.in
@@ -1,5 +1,5 @@
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Makefile.in for ICU - samples/layout
 ## Copyright (c) 2001-2011, International Business Machines Corporation and
diff --git a/icu4c/source/samples/layout/RenderingSurface.h b/icu4c/source/samples/layout/RenderingSurface.h
index 0399e71..42b7e60 100644
--- a/icu4c/source/samples/layout/RenderingSurface.h
+++ b/icu4c/source/samples/layout/RenderingSurface.h
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/samples/layout/ScriptCompositeFontInstance.cpp b/icu4c/source/samples/layout/ScriptCompositeFontInstance.cpp
index a87c650..004b31b 100644
--- a/icu4c/source/samples/layout/ScriptCompositeFontInstance.cpp
+++ b/icu4c/source/samples/layout/ScriptCompositeFontInstance.cpp
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/samples/layout/ScriptCompositeFontInstance.h b/icu4c/source/samples/layout/ScriptCompositeFontInstance.h
index 151d682..06f2c1a 100644
--- a/icu4c/source/samples/layout/ScriptCompositeFontInstance.h
+++ b/icu4c/source/samples/layout/ScriptCompositeFontInstance.h
@@ -2,7 +2,7 @@
  * %W% %E%
  *
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  * (C) Copyright IBM Corp. 1998-2011 - All Rights Reserved
  *
diff --git a/icu4c/source/samples/layout/Surface.cpp b/icu4c/source/samples/layout/Surface.cpp
index 268145a..5b0686a 100644
--- a/icu4c/source/samples/layout/Surface.cpp
+++ b/icu4c/source/samples/layout/Surface.cpp
@@ -1,6 +1,6 @@
 /*
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *   Copyright (C) 2003, International Business Machines
  *   Corporation and others.  All Rights Reserved.
diff --git a/icu4c/source/samples/layout/Surface.h b/icu4c/source/samples/layout/Surface.h
index 9e25516..40a0c5d 100644
--- a/icu4c/source/samples/layout/Surface.h
+++ b/icu4c/source/samples/layout/Surface.h
@@ -1,6 +1,6 @@
 /*
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *   Copyright (C) 2003, International Business Machines
  *   Corporation and others.  All Rights Reserved.
diff --git a/icu4c/source/samples/layout/UnicodeReader.cpp b/icu4c/source/samples/layout/UnicodeReader.cpp
index 47a4386..a7caa01 100644
--- a/icu4c/source/samples/layout/UnicodeReader.cpp
+++ b/icu4c/source/samples/layout/UnicodeReader.cpp
@@ -1,7 +1,7 @@
 /*
  ******************************************************************************
  * © 2016 and later: Unicode, Inc. and others.                    *
- * License & terms of use: http://www.unicode.org/copyright.html#License      *
+ * License & terms of use: http://www.unicode.org/copyright.html      *
  ******************************************************************************
  ******************************************************************************
  * Copyright (C) 1998-2005, International Business Machines Corporation and   *
diff --git a/icu4c/source/samples/layout/UnicodeReader.h b/icu4c/source/samples/layout/UnicodeReader.h
index 4429f1c..2d7c9cc 100644
--- a/icu4c/source/samples/layout/UnicodeReader.h
+++ b/icu4c/source/samples/layout/UnicodeReader.h
@@ -1,7 +1,7 @@
 /*
  ******************************************************************************
  * © 2016 and later: Unicode, Inc. and others.                    *
- * License & terms of use: http://www.unicode.org/copyright.html#License      *
+ * License & terms of use: http://www.unicode.org/copyright.html      *
  ******************************************************************************
  ******************************************************************************
  * Copyright (C) 1998-2001, International Business Machines Corporation and   *
diff --git a/icu4c/source/samples/layout/arraymem.h b/icu4c/source/samples/layout/arraymem.h
index 2580410..8939984 100644
--- a/icu4c/source/samples/layout/arraymem.h
+++ b/icu4c/source/samples/layout/arraymem.h
@@ -1,7 +1,7 @@
 /*
  *
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
  *
diff --git a/icu4c/source/samples/layout/cgnomelayout.c b/icu4c/source/samples/layout/cgnomelayout.c
index ff3d563..b591412 100644
--- a/icu4c/source/samples/layout/cgnomelayout.c
+++ b/icu4c/source/samples/layout/cgnomelayout.c
@@ -3,7 +3,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  ****************************************************************************** *
diff --git a/icu4c/source/samples/layout/clayout.c b/icu4c/source/samples/layout/clayout.c
index e129966..de8f118 100644
--- a/icu4c/source/samples/layout/clayout.c
+++ b/icu4c/source/samples/layout/clayout.c
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/samples/layout/cmaps.cpp b/icu4c/source/samples/layout/cmaps.cpp
index 36d6335..d6f71ed 100644
--- a/icu4c/source/samples/layout/cmaps.cpp
+++ b/icu4c/source/samples/layout/cmaps.cpp
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  ****************************************************************************** *
diff --git a/icu4c/source/samples/layout/cmaps.h b/icu4c/source/samples/layout/cmaps.h
index 0abda50..35fc2e0 100644
--- a/icu4c/source/samples/layout/cmaps.h
+++ b/icu4c/source/samples/layout/cmaps.h
@@ -2,7 +2,7 @@
  ******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  ******************************************************************************
  ****************************************************************************** *
diff --git a/icu4c/source/samples/layout/gdiglue.cpp b/icu4c/source/samples/layout/gdiglue.cpp
index b79f6ee..49ca883 100644
--- a/icu4c/source/samples/layout/gdiglue.cpp
+++ b/icu4c/source/samples/layout/gdiglue.cpp
@@ -1,7 +1,7 @@
 /*
  *
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
  *
diff --git a/icu4c/source/samples/layout/gdiglue.h b/icu4c/source/samples/layout/gdiglue.h
index 8018d08..7efe947 100644
--- a/icu4c/source/samples/layout/gdiglue.h
+++ b/icu4c/source/samples/layout/gdiglue.h
@@ -1,7 +1,7 @@
 /*
  *
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
  *
diff --git a/icu4c/source/samples/layout/gnomeglue.cpp b/icu4c/source/samples/layout/gnomeglue.cpp
index 906b143..2ee5457 100644
--- a/icu4c/source/samples/layout/gnomeglue.cpp
+++ b/icu4c/source/samples/layout/gnomeglue.cpp
@@ -1,7 +1,7 @@
 /*
  *
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
  *
diff --git a/icu4c/source/samples/layout/gnomeglue.h b/icu4c/source/samples/layout/gnomeglue.h
index 3413bae..13e434e 100644
--- a/icu4c/source/samples/layout/gnomeglue.h
+++ b/icu4c/source/samples/layout/gnomeglue.h
@@ -1,7 +1,7 @@
 /*
  *
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
  *
diff --git a/icu4c/source/samples/layout/gnomelayout.cpp b/icu4c/source/samples/layout/gnomelayout.cpp
index 8f7c37d..b534737 100644
--- a/icu4c/source/samples/layout/gnomelayout.cpp
+++ b/icu4c/source/samples/layout/gnomelayout.cpp
@@ -3,7 +3,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  ****************************************************************************** *
diff --git a/icu4c/source/samples/layout/gsupport.h b/icu4c/source/samples/layout/gsupport.h
index 582bcc1..4bb6e6c 100644
--- a/icu4c/source/samples/layout/gsupport.h
+++ b/icu4c/source/samples/layout/gsupport.h
@@ -1,7 +1,7 @@
 /*
  *
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
  *
diff --git a/icu4c/source/samples/layout/layout.cpp b/icu4c/source/samples/layout/layout.cpp
index 009a055..7ad9ac2 100644
--- a/icu4c/source/samples/layout/layout.cpp
+++ b/icu4c/source/samples/layout/layout.cpp
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/samples/layout/layout.vcxproj b/icu4c/source/samples/layout/layout.vcxproj
index f6114bb..31ac1d9 100644
--- a/icu4c/source/samples/layout/layout.vcxproj
+++ b/icu4c/source/samples/layout/layout.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/layout/paragraph.cpp b/icu4c/source/samples/layout/paragraph.cpp
index 190106f..f302301 100644
--- a/icu4c/source/samples/layout/paragraph.cpp
+++ b/icu4c/source/samples/layout/paragraph.cpp
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/samples/layout/paragraph.h b/icu4c/source/samples/layout/paragraph.h
index 0f307fd..822c1cf 100644
--- a/icu4c/source/samples/layout/paragraph.h
+++ b/icu4c/source/samples/layout/paragraph.h
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/samples/layout/pflow.c b/icu4c/source/samples/layout/pflow.c
index 92d521c..c7fd290 100644
--- a/icu4c/source/samples/layout/pflow.c
+++ b/icu4c/source/samples/layout/pflow.c
@@ -1,7 +1,7 @@
 /*
  *
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
  *
diff --git a/icu4c/source/samples/layout/pflow.h b/icu4c/source/samples/layout/pflow.h
index ec87131..d759a8f 100644
--- a/icu4c/source/samples/layout/pflow.h
+++ b/icu4c/source/samples/layout/pflow.h
@@ -1,7 +1,7 @@
 /*
  *
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
  *
diff --git a/icu4c/source/samples/layout/readme.html b/icu4c/source/samples/layout/readme.html
index 548cac4..32c89d8 100644
--- a/icu4c/source/samples/layout/readme.html
+++ b/icu4c/source/samples/layout/readme.html
@@ -6,7 +6,7 @@
   <meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
   <meta name="COPYRIGHT" content=
   "Copyright (C) 2016 and later: Unicode, Inc. and others.
-   License &amp; terms of use: http://www.unicode.org/copyright.html#License
+   License &amp; terms of use: http://www.unicode.org/copyright.html
 
    Copyright (c) 2001-2010 IBM Corporation and others. All Rights Reserved." />
   <meta name="Author" content="Eric Mader" />
diff --git a/icu4c/source/samples/layout/resource.h b/icu4c/source/samples/layout/resource.h
index 77374ba..f4fdeed 100644
--- a/icu4c/source/samples/layout/resource.h
+++ b/icu4c/source/samples/layout/resource.h
@@ -1,7 +1,7 @@
 //{{NO_DEPENDENCIES}}
 // Microsoft Developer Studio generated include file.
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 // Corporation and others. All Rights Reserved.
 // Copyright (c) 2001-2003 International Business Machines
 // Corporation and others. All Rights Reserved.
diff --git a/icu4c/source/samples/layout/rsurface.cpp b/icu4c/source/samples/layout/rsurface.cpp
index a64ba9a..b48357e 100644
--- a/icu4c/source/samples/layout/rsurface.cpp
+++ b/icu4c/source/samples/layout/rsurface.cpp
@@ -1,7 +1,7 @@
 /*
  *
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
  *
diff --git a/icu4c/source/samples/layout/rsurface.h b/icu4c/source/samples/layout/rsurface.h
index ae2098b..3292d79 100644
--- a/icu4c/source/samples/layout/rsurface.h
+++ b/icu4c/source/samples/layout/rsurface.h
@@ -1,7 +1,7 @@
 /*
  *
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
  *
diff --git a/icu4c/source/samples/layout/sfnt.h b/icu4c/source/samples/layout/sfnt.h
index 32173ba..1073744 100644
--- a/icu4c/source/samples/layout/sfnt.h
+++ b/icu4c/source/samples/layout/sfnt.h
@@ -2,7 +2,7 @@
  ******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  ******************************************************************************
  ****************************************************************************** *
diff --git a/icu4c/source/samples/layout/ucreader.cpp b/icu4c/source/samples/layout/ucreader.cpp
index 232ee86..3e38b5a 100644
--- a/icu4c/source/samples/layout/ucreader.cpp
+++ b/icu4c/source/samples/layout/ucreader.cpp
@@ -1,7 +1,7 @@
 /*
  *
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
  *
diff --git a/icu4c/source/samples/layout/ucreader.h b/icu4c/source/samples/layout/ucreader.h
index bf2dd70..b377eac 100644
--- a/icu4c/source/samples/layout/ucreader.h
+++ b/icu4c/source/samples/layout/ucreader.h
@@ -1,7 +1,7 @@
 /*
  *
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
  *
diff --git a/icu4c/source/samples/legacy/Makefile b/icu4c/source/samples/legacy/Makefile
index 58d345c..f3dfda6 100644
--- a/icu4c/source/samples/legacy/Makefile
+++ b/icu4c/source/samples/legacy/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2001-2004 IBM, Inc. and others
 # conversion sample code
diff --git a/icu4c/source/samples/legacy/README b/icu4c/source/samples/legacy/README
index 3461de1..cecf961 100644
--- a/icu4c/source/samples/legacy/README
+++ b/icu4c/source/samples/legacy/README
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2002, International Business Machines Corporation and others. All Rights Reserved.
 This example demonstrates running an instance of  ICU 1.8.1. together with a current version of ICU. It only tests u_getVersion and several collation APIs. 
diff --git a/icu4c/source/samples/legacy/legacy.cpp b/icu4c/source/samples/legacy/legacy.cpp
index 559fbcb..679a183 100644
--- a/icu4c/source/samples/legacy/legacy.cpp
+++ b/icu4c/source/samples/legacy/legacy.cpp
@@ -2,7 +2,7 @@
 *******************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 *******************************************************************************
 *******************************************************************************
diff --git a/icu4c/source/samples/legacy/legacy.vcxproj b/icu4c/source/samples/legacy/legacy.vcxproj
index e96fa91..655a7ca 100644
--- a/icu4c/source/samples/legacy/legacy.vcxproj
+++ b/icu4c/source/samples/legacy/legacy.vcxproj
@@ -50,22 +50,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/legacy/newcol.cpp b/icu4c/source/samples/legacy/newcol.cpp
index b5430d7..221348f 100644
--- a/icu4c/source/samples/legacy/newcol.cpp
+++ b/icu4c/source/samples/legacy/newcol.cpp
@@ -2,7 +2,7 @@
 *******************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 *******************************************************************************
 *******************************************************************************
diff --git a/icu4c/source/samples/legacy/oldcol.cpp b/icu4c/source/samples/legacy/oldcol.cpp
index 8c9c696..cd3f731 100644
--- a/icu4c/source/samples/legacy/oldcol.cpp
+++ b/icu4c/source/samples/legacy/oldcol.cpp
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/samples/msgfmt/Makefile b/icu4c/source/samples/msgfmt/Makefile
index 0e114d9..1dfae07 100644
--- a/icu4c/source/samples/msgfmt/Makefile
+++ b/icu4c/source/samples/msgfmt/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2000-2002 IBM, Inc. and others
 # sample code makefile
diff --git a/icu4c/source/samples/msgfmt/README.TXT b/icu4c/source/samples/msgfmt/README.TXT
index bce1fd3..5fc50b4 100644
--- a/icu4c/source/samples/msgfmt/README.TXT
+++ b/icu4c/source/samples/msgfmt/README.TXT
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2002-2010, International Business Machines Corporation and others. All Rights Reserved.
 
diff --git a/icu4c/source/samples/msgfmt/answers/main_0.cpp b/icu4c/source/samples/msgfmt/answers/main_0.cpp
index 5dafe09..c0b36d7 100644
--- a/icu4c/source/samples/msgfmt/answers/main_0.cpp
+++ b/icu4c/source/samples/msgfmt/answers/main_0.cpp
@@ -1,6 +1,6 @@
 /**********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/msgfmt/answers/main_1.cpp b/icu4c/source/samples/msgfmt/answers/main_1.cpp
index 66add56..bbe7fc7 100644
--- a/icu4c/source/samples/msgfmt/answers/main_1.cpp
+++ b/icu4c/source/samples/msgfmt/answers/main_1.cpp
@@ -1,6 +1,6 @@
 /**********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/msgfmt/answers/main_2.cpp b/icu4c/source/samples/msgfmt/answers/main_2.cpp
index d252ac7..e8891aa 100644
--- a/icu4c/source/samples/msgfmt/answers/main_2.cpp
+++ b/icu4c/source/samples/msgfmt/answers/main_2.cpp
@@ -1,6 +1,6 @@
 /**********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/msgfmt/answers/main_3.cpp b/icu4c/source/samples/msgfmt/answers/main_3.cpp
index aa42dee..d335a7e 100644
--- a/icu4c/source/samples/msgfmt/answers/main_3.cpp
+++ b/icu4c/source/samples/msgfmt/answers/main_3.cpp
@@ -1,6 +1,6 @@
 /**********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/msgfmt/main.cpp b/icu4c/source/samples/msgfmt/main.cpp
index 0a7de73..cdcdbbf 100644
--- a/icu4c/source/samples/msgfmt/main.cpp
+++ b/icu4c/source/samples/msgfmt/main.cpp
@@ -1,6 +1,6 @@
 /**********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/msgfmt/msgfmt.vcxproj b/icu4c/source/samples/msgfmt/msgfmt.vcxproj
index 8b7a951..b1a9040 100644
--- a/icu4c/source/samples/msgfmt/msgfmt.vcxproj
+++ b/icu4c/source/samples/msgfmt/msgfmt.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/msgfmt/util.cpp b/icu4c/source/samples/msgfmt/util.cpp
index 7966e7a..8d5fdf3 100644
--- a/icu4c/source/samples/msgfmt/util.cpp
+++ b/icu4c/source/samples/msgfmt/util.cpp
@@ -1,6 +1,6 @@
 /**********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/msgfmt/util.h b/icu4c/source/samples/msgfmt/util.h
index 590e545..4b64f5a 100644
--- a/icu4c/source/samples/msgfmt/util.h
+++ b/icu4c/source/samples/msgfmt/util.h
@@ -1,6 +1,6 @@
 /**********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/numfmt/Makefile b/icu4c/source/samples/numfmt/Makefile
index 2c67d17..5affb92 100644
--- a/icu4c/source/samples/numfmt/Makefile
+++ b/icu4c/source/samples/numfmt/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2000-2002 IBM, Inc. and others
 # sample code makefile
diff --git a/icu4c/source/samples/numfmt/capi.c b/icu4c/source/samples/numfmt/capi.c
index bf96f01..5f833c6 100644
--- a/icu4c/source/samples/numfmt/capi.c
+++ b/icu4c/source/samples/numfmt/capi.c
@@ -1,6 +1,6 @@
 /********************************************************************
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *************************************************************************
  *************************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/numfmt/main.cpp b/icu4c/source/samples/numfmt/main.cpp
index 172202e..2534a9c 100644
--- a/icu4c/source/samples/numfmt/main.cpp
+++ b/icu4c/source/samples/numfmt/main.cpp
@@ -1,6 +1,6 @@
 /********************************************************************
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *************************************************************************
  *************************************************************************
  * COPYRIGHT:
@@ -35,8 +35,8 @@
     printf("C API\n");
     capi();
 
-    showCurrencyFormatting(FALSE);
-    showCurrencyFormatting(TRUE);
+    showCurrencyFormatting(false);
+    showCurrencyFormatting(true);
 
     u_cleanup();    // Release any additional storage held by ICU.  
 
diff --git a/icu4c/source/samples/numfmt/numfmt.vcxproj b/icu4c/source/samples/numfmt/numfmt.vcxproj
index e345627..4ea39eb 100644
--- a/icu4c/source/samples/numfmt/numfmt.vcxproj
+++ b/icu4c/source/samples/numfmt/numfmt.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/numfmt/readme.txt b/icu4c/source/samples/numfmt/readme.txt
index 749c2bb..e332f56 100644
--- a/icu4c/source/samples/numfmt/readme.txt
+++ b/icu4c/source/samples/numfmt/readme.txt
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2002-2005, International Business Machines Corporation and others. All Rights Reserved.
 numfmt: a sample program which displays number formatting in C and C++
diff --git a/icu4c/source/samples/numfmt/util.cpp b/icu4c/source/samples/numfmt/util.cpp
index f6e405b..e67b6d2 100644
--- a/icu4c/source/samples/numfmt/util.cpp
+++ b/icu4c/source/samples/numfmt/util.cpp
@@ -1,6 +1,6 @@
 /********************************************************************
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *************************************************************************
  *************************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/numfmt/util.h b/icu4c/source/samples/numfmt/util.h
index 8c048fc..86a698c 100644
--- a/icu4c/source/samples/numfmt/util.h
+++ b/icu4c/source/samples/numfmt/util.h
@@ -1,6 +1,6 @@
 /********************************************************************
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *************************************************************************
  *************************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/plurfmtsample/plurfmtsample.cpp b/icu4c/source/samples/plurfmtsample/plurfmtsample.cpp
index c4c2879..f910c4f 100644
--- a/icu4c/source/samples/plurfmtsample/plurfmtsample.cpp
+++ b/icu4c/source/samples/plurfmtsample/plurfmtsample.cpp
@@ -1,6 +1,6 @@
 /********************************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ********************************************************************************
 ********************************************************************************
 * Copyright (C) 2008-2013, International Business Machines Corporation and
diff --git a/icu4c/source/samples/props/Makefile b/icu4c/source/samples/props/Makefile
index 821dc1e..e4ed252 100644
--- a/icu4c/source/samples/props/Makefile
+++ b/icu4c/source/samples/props/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2000-2002 IBM, Inc. and others
 # sample code makefile
diff --git a/icu4c/source/samples/props/props.cpp b/icu4c/source/samples/props/props.cpp
index f1a1486..0f5c4ea 100644
--- a/icu4c/source/samples/props/props.cpp
+++ b/icu4c/source/samples/props/props.cpp
@@ -2,7 +2,7 @@
 *******************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 *******************************************************************************
 *******************************************************************************
diff --git a/icu4c/source/samples/props/props.vcxproj b/icu4c/source/samples/props/props.vcxproj
index 5225c4a..17869e1 100644
--- a/icu4c/source/samples/props/props.vcxproj
+++ b/icu4c/source/samples/props/props.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/props/readme.txt b/icu4c/source/samples/props/readme.txt
index 9ee6827..3a4b322 100644
--- a/icu4c/source/samples/props/readme.txt
+++ b/icu4c/source/samples/props/readme.txt
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2002-2005, International Business Machines Corporation and others. All Rights Reserved.
 props: Unicode Character Properties
diff --git a/icu4c/source/samples/readme.txt b/icu4c/source/samples/readme.txt
index ce062e6..0ef2177 100644
--- a/icu4c/source/samples/readme.txt
+++ b/icu4c/source/samples/readme.txt
@@ -1,5 +1,5 @@
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 2002-2010, International Business Machines Corporation 
 ## and others. All Rights Reserved.
diff --git a/icu4c/source/samples/rules.mk b/icu4c/source/samples/rules.mk
index d16f373..6bacaef 100644
--- a/icu4c/source/samples/rules.mk
+++ b/icu4c/source/samples/rules.mk
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2002-2012 IBM, Inc. and others
 # sample code rules for a single-target simple sample
diff --git a/icu4c/source/samples/strsrch/Makefile b/icu4c/source/samples/strsrch/Makefile
index d23eed9..3e24aba 100644
--- a/icu4c/source/samples/strsrch/Makefile
+++ b/icu4c/source/samples/strsrch/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2000-2002 IBM, Inc. and others
 # sample code makefile
diff --git a/icu4c/source/samples/strsrch/readme.txt b/icu4c/source/samples/strsrch/readme.txt
index e140d9a..ce2f5ac 100644
--- a/icu4c/source/samples/strsrch/readme.txt
+++ b/icu4c/source/samples/strsrch/readme.txt
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2002-2005, International Business Machines Corporation and others. All Rights Reserved.
 strsrch: a sample program which finds the occurrences of a pattern string in a source string, using user-defined collation rules.
diff --git a/icu4c/source/samples/strsrch/strsrch.cpp b/icu4c/source/samples/strsrch/strsrch.cpp
index 2478712..c5fff0c 100644
--- a/icu4c/source/samples/strsrch/strsrch.cpp
+++ b/icu4c/source/samples/strsrch/strsrch.cpp
@@ -1,6 +1,6 @@
 /*************************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  *************************************************************************
  *************************************************************************
@@ -49,15 +49,15 @@
  */
 char * opt_locale      = "en_US";
 char * opt_rules       = 0;
-UBool  opt_help        = FALSE;
-UBool  opt_norm        = FALSE;
-UBool  opt_french      = FALSE;
-UBool  opt_shifted     = FALSE;
-UBool  opt_lower       = FALSE;
-UBool  opt_upper       = FALSE;
-UBool  opt_case        = FALSE;
-UBool  opt_overlap     = FALSE;
-UBool  opt_canonical   = FALSE;
+UBool  opt_help        = false;
+UBool  opt_norm        = false;
+UBool  opt_french      = false;
+UBool  opt_shifted     = false;
+UBool  opt_lower       = false;
+UBool  opt_upper       = false;
+UBool  opt_case        = false;
+UBool  opt_overlap     = false;
+UBool  opt_canonical   = false;
 int    opt_level       = 0;
 char * opt_source      = "International Components for Unicode";
 char * opt_pattern     = "Unicode";
@@ -107,14 +107,14 @@
             if (strcmp(pOpt->name, pArgName) == 0) {
                 switch (pOpt->type) {
                 case OptSpec::FLAG:
-                    *(UBool *)(pOpt->pVar) = TRUE;
+                    *(UBool *)(pOpt->pVar) = true;
                     break;
                 case OptSpec::STRING:
                     argNum ++;
                     if (argNum >= argc) {
                         fprintf(stderr, "value expected for \"%s\" option.\n", 
 							    pOpt->name);
-                        return FALSE;
+                        return false;
                     }
                     *(const char **)(pOpt->pVar) = argv[argNum];
                     break;
@@ -123,7 +123,7 @@
                     if (argNum >= argc) {
                         fprintf(stderr, "value expected for \"%s\" option.\n", 
 							    pOpt->name);
-                        return FALSE;
+                        return false;
                     }
                     char *endp;
                     int i = strtol(argv[argNum], &endp, 0);
@@ -131,7 +131,7 @@
                         fprintf(stderr, 
 							    "integer value expected for \"%s\" option.\n", 
 								pOpt->name);
-                        return FALSE;
+                        return false;
                     }
                     *(int *)(pOpt->pVar) = i;
                 }
@@ -141,10 +141,10 @@
         if (pOpt->name == 0)
         {
             fprintf(stderr, "Unrecognized option \"%s\"\n", pArgName);
-            return FALSE;
+            return false;
         }
     }
-	return TRUE;
+	return true;
 }
 
 /**
@@ -165,7 +165,7 @@
     }
 	if (U_FAILURE(status)) {
         fprintf(stderr, "Collator creation failed.: %d\n", status);
-        return FALSE;
+        return false;
     }
     if (status == U_USING_DEFAULT_WARNING) {
         fprintf(stderr, "Warning, U_USING_DEFAULT_WARNING for %s\n", 
@@ -218,14 +218,14 @@
             break;
         default:
             fprintf(stderr, "-level param must be between 1 and 5\n");
-            return FALSE;
+            return false;
         }
     }
     if (U_FAILURE(status)) {
         fprintf(stderr, "Collator attribute setting failed.: %d\n", status);
-        return FALSE;
+        return false;
     }
-	return TRUE;
+	return true;
 }
 
 /**
@@ -239,20 +239,20 @@
 	search = usearch_openFromCollator(pattern, -1, source, -1, collator, NULL, 
 		                              &status);
 	if (U_FAILURE(status)) {
-		return FALSE;
+		return false;
 	}
-	if (opt_overlap == TRUE) {
+	if (static_cast<bool>(opt_overlap)) {
 		usearch_setAttribute(search, USEARCH_OVERLAP, USEARCH_ON, &status);
 	}
-	if (opt_canonical == TRUE) {
+	if (static_cast<bool>(opt_canonical)) {
 		usearch_setAttribute(search, USEARCH_CANONICAL_MATCH, USEARCH_ON, 
 			                 &status);
 	}
 	if (U_FAILURE(status)) {
 		fprintf(stderr, "Error setting search attributes\n");
-		return FALSE;
+		return false;
 	}
-	return TRUE;
+	return true;
 }
 
 UBool findPattern()
@@ -269,10 +269,10 @@
 	}
 	if (U_FAILURE(status)) {
 		fprintf(stderr, "Error in searching for pattern %d\n", status);
-		return FALSE;
+		return false;
 	}
 	fprintf(stdout, "End of search\n");
-	return TRUE;
+	return true;
 }
 
 /** 
@@ -281,17 +281,17 @@
  */
 int main(int argc, const char** argv) 
 {
-    if (processOptions(argc, argv, opts) != TRUE || opt_help) {
+    if (!static_cast<bool>(processOptions(argc, argv, opts)) || static_cast<bool>(opt_help)) {
         printf(gHelpString);
         return -1;
     }
 
-    if (processCollator() != TRUE) {
+    if (!static_cast<bool>(processCollator())) {
 		fprintf(stderr, "Error creating collator\n");
 		return -1;
 	}
 
-	if (processStringSearch() != TRUE) {
+	if (!static_cast<bool>(processStringSearch())) {
 		fprintf(stderr, "Error creating string search\n");
 		return -1;
 	}
diff --git a/icu4c/source/samples/strsrch/strsrch.vcxproj b/icu4c/source/samples/strsrch/strsrch.vcxproj
index 021bf22..8ebc131 100644
--- a/icu4c/source/samples/strsrch/strsrch.vcxproj
+++ b/icu4c/source/samples/strsrch/strsrch.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/translit/Makefile b/icu4c/source/samples/translit/Makefile
index bc683eb..46a5d3b 100644
--- a/icu4c/source/samples/translit/Makefile
+++ b/icu4c/source/samples/translit/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2000-2003 IBM, Inc. and others
 # sample code makefile
diff --git a/icu4c/source/samples/translit/README.TXT b/icu4c/source/samples/translit/README.TXT
index 1240012..3e8c274 100644
--- a/icu4c/source/samples/translit/README.TXT
+++ b/icu4c/source/samples/translit/README.TXT
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2002-2010, International Business Machines Corporation and others. All Rights Reserved.
 
diff --git a/icu4c/source/samples/translit/answers/main_1.cpp b/icu4c/source/samples/translit/answers/main_1.cpp
index 04c4886..d8227df 100644
--- a/icu4c/source/samples/translit/answers/main_1.cpp
+++ b/icu4c/source/samples/translit/answers/main_1.cpp
@@ -1,6 +1,6 @@
 /***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/translit/answers/main_2.cpp b/icu4c/source/samples/translit/answers/main_2.cpp
index 2110990..8603bad 100644
--- a/icu4c/source/samples/translit/answers/main_2.cpp
+++ b/icu4c/source/samples/translit/answers/main_2.cpp
@@ -1,6 +1,6 @@
 /***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/translit/answers/main_3.cpp b/icu4c/source/samples/translit/answers/main_3.cpp
index d18b1ce..a240200 100644
--- a/icu4c/source/samples/translit/answers/main_3.cpp
+++ b/icu4c/source/samples/translit/answers/main_3.cpp
@@ -1,6 +1,6 @@
 /***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/translit/answers/main_4.cpp b/icu4c/source/samples/translit/answers/main_4.cpp
index ec2306d..59d0b58 100644
--- a/icu4c/source/samples/translit/answers/main_4.cpp
+++ b/icu4c/source/samples/translit/answers/main_4.cpp
@@ -1,6 +1,6 @@
 /***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/translit/answers/unaccent.cpp b/icu4c/source/samples/translit/answers/unaccent.cpp
index c726071..de5dd47 100644
--- a/icu4c/source/samples/translit/answers/unaccent.cpp
+++ b/icu4c/source/samples/translit/answers/unaccent.cpp
@@ -1,6 +1,6 @@
 /***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  * COPYRIGHT:
  * Copyright (c) 1999-2002, International Business Machines Corporation and
diff --git a/icu4c/source/samples/translit/answers/unaccent.h b/icu4c/source/samples/translit/answers/unaccent.h
index 5399312..12fc368 100644
--- a/icu4c/source/samples/translit/answers/unaccent.h
+++ b/icu4c/source/samples/translit/answers/unaccent.h
@@ -1,6 +1,6 @@
 /***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/translit/main.cpp b/icu4c/source/samples/translit/main.cpp
index ca7f090..e10ab95 100644
--- a/icu4c/source/samples/translit/main.cpp
+++ b/icu4c/source/samples/translit/main.cpp
@@ -1,6 +1,6 @@
 /***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/translit/translit.vcxproj b/icu4c/source/samples/translit/translit.vcxproj
index fe91ee7..eae6965 100644
--- a/icu4c/source/samples/translit/translit.vcxproj
+++ b/icu4c/source/samples/translit/translit.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/translit/unaccent.cpp b/icu4c/source/samples/translit/unaccent.cpp
index b16a5a4..0a1ff27 100644
--- a/icu4c/source/samples/translit/unaccent.cpp
+++ b/icu4c/source/samples/translit/unaccent.cpp
@@ -1,6 +1,6 @@
 /**********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  **********************************************************************
  **********************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/translit/unaccent.h b/icu4c/source/samples/translit/unaccent.h
index 568cc67..bb78039 100644
--- a/icu4c/source/samples/translit/unaccent.h
+++ b/icu4c/source/samples/translit/unaccent.h
@@ -1,6 +1,6 @@
 /***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/translit/util.cpp b/icu4c/source/samples/translit/util.cpp
index 6f38729..9fa11b2 100644
--- a/icu4c/source/samples/translit/util.cpp
+++ b/icu4c/source/samples/translit/util.cpp
@@ -1,6 +1,6 @@
 /***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/translit/util.h b/icu4c/source/samples/translit/util.h
index 5ff6c02..ce75364 100644
--- a/icu4c/source/samples/translit/util.h
+++ b/icu4c/source/samples/translit/util.h
@@ -1,6 +1,6 @@
 /***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/samples/uciter8/Makefile b/icu4c/source/samples/uciter8/Makefile
index 7d09606..6aeb11a 100644
--- a/icu4c/source/samples/uciter8/Makefile
+++ b/icu4c/source/samples/uciter8/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2003 IBM, Inc. and others
 # sample code makefile
diff --git a/icu4c/source/samples/uciter8/readme.txt b/icu4c/source/samples/uciter8/readme.txt
index 4f01b2b..46e5a6f 100644
--- a/icu4c/source/samples/uciter8/readme.txt
+++ b/icu4c/source/samples/uciter8/readme.txt
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2003-2005, International Business Machines Corporation and others. All Rights Reserved.
 uciter8: Lenient reading of 8-bit Unicode with a UCharIterator
diff --git a/icu4c/source/samples/uciter8/uciter8.c b/icu4c/source/samples/uciter8/uciter8.c
index dcd9aa0..aa828db 100644
--- a/icu4c/source/samples/uciter8/uciter8.c
+++ b/icu4c/source/samples/uciter8/uciter8.c
@@ -2,7 +2,7 @@
 *******************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 *******************************************************************************
 *******************************************************************************
@@ -113,7 +113,7 @@
         return;
     }
     if(!iter1->hasNext(iter1)) {
-        log_err("%s->hasNext() at the start returns FALSE\n", n1);
+        log_err("%s->hasNext() at the start returns false\n", n1);
         return;
     }
 
@@ -123,7 +123,7 @@
         return;
     }
     if(!iter2->hasNext(iter2)) {
-        log_err("%s->hasNext() at the start returns FALSE\n", n2);
+        log_err("%s->hasNext() at the start returns false\n", n2);
         return;
     }
 
@@ -137,11 +137,11 @@
     } while(c1>=0);
 
     if(iter1->hasNext(iter1)) {
-        log_err("%s->hasNext() at the end returns TRUE\n", n1);
+        log_err("%s->hasNext() at the end returns true\n", n1);
         return;
     }
     if(iter2->hasNext(iter2)) {
-        log_err("%s->hasNext() at the end returns TRUE\n", n2);
+        log_err("%s->hasNext() at the end returns true\n", n2);
         return;
     }
 
@@ -178,7 +178,7 @@
         return;
     }
     if(!iter1->hasPrevious(iter1)) {
-        log_err("%s->hasPrevious() at the end returns FALSE\n", n1);
+        log_err("%s->hasPrevious() at the end returns false\n", n1);
         return;
     }
 
@@ -188,7 +188,7 @@
         return;
     }
     if(!iter2->hasPrevious(iter2)) {
-        log_err("%s->hasPrevious() at the end returns FALSE\n", n2);
+        log_err("%s->hasPrevious() at the end returns false\n", n2);
         return;
     }
 
@@ -202,11 +202,11 @@
     } while(c1>=0);
 
     if(iter1->hasPrevious(iter1)) {
-        log_err("%s->hasPrevious() at the start returns TRUE\n", n1);
+        log_err("%s->hasPrevious() at the start returns true\n", n1);
         return;
     }
     if(iter2->hasPrevious(iter2)) {
-        log_err("%s->hasPrevious() at the start returns TRUE\n", n2);
+        log_err("%s->hasPrevious() at the start returns true\n", n2);
         return;
     }
 }
diff --git a/icu4c/source/samples/uciter8/uciter8.vcxproj b/icu4c/source/samples/uciter8/uciter8.vcxproj
index b417be3..fdbfa44 100644
--- a/icu4c/source/samples/uciter8/uciter8.vcxproj
+++ b/icu4c/source/samples/uciter8/uciter8.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/uciter8/uit_len8.c b/icu4c/source/samples/uciter8/uit_len8.c
index 5f8778b..d2d3c54 100644
--- a/icu4c/source/samples/uciter8/uit_len8.c
+++ b/icu4c/source/samples/uciter8/uit_len8.c
@@ -2,7 +2,7 @@
 *******************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 *******************************************************************************
 *******************************************************************************
@@ -217,24 +217,24 @@
     case UITER_ZERO:
     case UITER_START:
         pos=delta;
-        havePos=TRUE;
+        havePos=true;
         /* iter->index<0 (unknown) is possible */
         break;
     case UITER_CURRENT:
         if(iter->index>=0) {
             pos=iter->index+delta;
-            havePos=TRUE;
+            havePos=true;
         } else {
             /* the current UTF-16 index is unknown after setState(), use only delta */
             pos=0;
-            havePos=FALSE;
+            havePos=false;
         }
         break;
     case UITER_LIMIT:
     case UITER_LENGTH:
         if(iter->length>=0) {
             pos=iter->length+delta;
-            havePos=TRUE;
+            havePos=true;
         } else {
             /* pin to the end, avoid counting the length */
             iter->index=-1;
@@ -245,7 +245,7 @@
             } else {
                 /* the current UTF-16 index is unknown, use only delta */
                 pos=0;
-                havePos=FALSE;
+                havePos=false;
             }
         }
         break;
diff --git a/icu4c/source/samples/uciter8/uit_len8.h b/icu4c/source/samples/uciter8/uit_len8.h
index 2aef2ad..bda4265 100644
--- a/icu4c/source/samples/uciter8/uit_len8.h
+++ b/icu4c/source/samples/uciter8/uit_len8.h
@@ -2,7 +2,7 @@
 *******************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 *******************************************************************************
 *******************************************************************************
diff --git a/icu4c/source/samples/ucnv/Makefile b/icu4c/source/samples/ucnv/Makefile
index 3bc676d..b97363f 100644
--- a/icu4c/source/samples/ucnv/Makefile
+++ b/icu4c/source/samples/ucnv/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2000-2002 IBM, Inc. and others
 # sample code makefile
diff --git a/icu4c/source/samples/ucnv/convsamp.cpp b/icu4c/source/samples/ucnv/convsamp.cpp
index a692b77..2d6d0c1 100644
--- a/icu4c/source/samples/ucnv/convsamp.cpp
+++ b/icu4c/source/samples/ucnv/convsamp.cpp
@@ -1,7 +1,7 @@
 /*************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 **************************************************************************
 **************************************************************************
@@ -342,7 +342,7 @@
         
         ucnv_toUnicode(conv, &target, targetLimit, 
                        &source, sourceLimit, NULL,
-                       feof(f)?TRUE:FALSE,         /* pass 'flush' when eof */
+                       feof(f)?true:false,         /* pass 'flush' when eof */
                                    /* is true (when no more data will come) */
                        &status);
       
@@ -719,7 +719,7 @@
   UConverter *conv = NULL, *cloneCnv = NULL;
   UErrorCode status = U_ZERO_ERROR;
   uint32_t len, len2;
-  UBool  flagVal = FALSE;
+  UBool  flagVal = false;
   UConverterFromUCallback junkCB;
   
   FromUFLAGContext *flagCtx = NULL, 
@@ -930,7 +930,7 @@
         
         ucnv_toUnicode( conv, &target, targetLimit, 
                        &source, sourceLimit, NULL,
-                       feof(f)?TRUE:FALSE,         /* pass 'flush' when eof */
+                       feof(f)?true:false,         /* pass 'flush' when eof */
                                    /* is true (when no more data will come) */
                          &status);
       
@@ -1035,7 +1035,7 @@
         
         ucnv_fromUnicode( conv, &target, targetLimit, 
                        &source, sourceLimit, NULL,
-                       feof(f)?TRUE:FALSE,         /* pass 'flush' when eof */
+                       feof(f)?true:false,         /* pass 'flush' when eof */
                                    /* is true (when no more data will come) */
                          &status);
       
@@ -1079,7 +1079,7 @@
 
   //! [ucnv_detectUnicodeSignature]
   UErrorCode err = U_ZERO_ERROR;
-  UBool discardSignature = TRUE; /* set to TRUE to throw away the initial U+FEFF */
+  UBool discardSignature = true; /* set to true to throw away the initial U+FEFF */
   char input[] = { '\xEF','\xBB', '\xBF','\x41','\x42','\x43' };
   int32_t signatureLength = 0;
   const char *encoding = ucnv_detectUnicodeSignature(input,sizeof(input),&signatureLength,&err);
@@ -1094,7 +1094,7 @@
     ucnv_toUnicode(conv,
                    &target, output + UPRV_LENGTHOF(output),
                    &source, input + sizeof(input),
-                   NULL, TRUE, &err);
+                   NULL, true, &err);
     out = output;
     if (discardSignature){
       ++out; // ignore initial U+FEFF
diff --git a/icu4c/source/samples/ucnv/data06.txt b/icu4c/source/samples/ucnv/data06.txt
index 8e842fb..98b97c9 100644
--- a/icu4c/source/samples/ucnv/data06.txt
+++ b/icu4c/source/samples/ucnv/data06.txt
@@ -1,7 +1,7 @@
 // *******************************************************************************
 // *
 // *   Copyright (C) 2016 and later: Unicode, Inc. and others.
-// *   License & terms of use: http://www.unicode.org/copyright.html#License
+// *   License & terms of use: http://www.unicode.org/copyright.html
 // *
 // *******************************************************************************
 // *******************************************************************************
diff --git a/icu4c/source/samples/ucnv/flagcb.c b/icu4c/source/samples/ucnv/flagcb.c
index 7830109..da275a1 100644
--- a/icu4c/source/samples/ucnv/flagcb.c
+++ b/icu4c/source/samples/ucnv/flagcb.c
@@ -1,6 +1,6 @@
 /**************************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  **************************************************************************
  **************************************************************************
  * COPYRIGHT:
@@ -25,7 +25,7 @@
 
     ctx->subCallback = NULL;
     ctx->subContext  = NULL;
-    ctx->flag        = FALSE;
+    ctx->flag        = false;
 
     return ctx;
 }
@@ -42,7 +42,7 @@
   /* First step - based on the reason code, take action */
 
   if(reason == UCNV_UNASSIGNED) { /* whatever set should be trapped here */
-    ((FromUFLAGContext*)context)->flag = TRUE;
+    ((FromUFLAGContext*)context)->flag = true;
   }
 
   if(reason == UCNV_CLONE) {
diff --git a/icu4c/source/samples/ucnv/flagcb.h b/icu4c/source/samples/ucnv/flagcb.h
index f6af5bd..2058903 100644
--- a/icu4c/source/samples/ucnv/flagcb.h
+++ b/icu4c/source/samples/ucnv/flagcb.h
@@ -1,5 +1,5 @@
 /* © 2016 and later: Unicode, Inc. and others.
-   License & terms of use: http://www.unicode.org/copyright.html#License
+   License & terms of use: http://www.unicode.org/copyright.html
 
    Copyright (c) 2000 IBM, Inc. and Others. 
    FLAGCB.H - interface to 'flagging' callback which 
diff --git a/icu4c/source/samples/ucnv/readme.txt b/icu4c/source/samples/ucnv/readme.txt
index 8708b22..1098765 100644
--- a/icu4c/source/samples/ucnv/readme.txt
+++ b/icu4c/source/samples/ucnv/readme.txt
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (C) 2002-2010, International Business Machines
 Corporation and others.  All Rights Reserved.
diff --git a/icu4c/source/samples/ucnv/ucnv.vcxproj b/icu4c/source/samples/ucnv/ucnv.vcxproj
index 65d4dbe..b131e48 100644
--- a/icu4c/source/samples/ucnv/ucnv.vcxproj
+++ b/icu4c/source/samples/ucnv/ucnv.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/udata/Makefile b/icu4c/source/samples/udata/Makefile
index 9467631..138a95c 100644
--- a/icu4c/source/samples/udata/Makefile
+++ b/icu4c/source/samples/udata/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2000-2012 IBM, Inc. and others
 # udata sample code
diff --git a/icu4c/source/samples/udata/reader.c b/icu4c/source/samples/udata/reader.c
index 00817b8..cc32417 100644
--- a/icu4c/source/samples/udata/reader.c
+++ b/icu4c/source/samples/udata/reader.c
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
@@ -69,9 +69,9 @@
         pInfo->dataFormat[3]==0x74 &&
         pInfo->formatVersion[0]==1 &&
         pInfo->dataVersion[0]==1   ) {
-        return TRUE;
+        return true;
     } else {
-        return FALSE;
+        return false;
     }
 
 
diff --git a/icu4c/source/samples/udata/reader.vcxproj b/icu4c/source/samples/udata/reader.vcxproj
index 32c11f9..ab97c1b 100644
--- a/icu4c/source/samples/udata/reader.vcxproj
+++ b/icu4c/source/samples/udata/reader.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <OutDir>.\x86\Debug\</OutDir>
diff --git a/icu4c/source/samples/udata/readme.txt b/icu4c/source/samples/udata/readme.txt
index 1f87b9a..7467484 100644
--- a/icu4c/source/samples/udata/readme.txt
+++ b/icu4c/source/samples/udata/readme.txt
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2002-2010, International Business Machines Corporation and others. All Rights Reserved.
 udata: Low level ICU data
diff --git a/icu4c/source/samples/udata/writer.c b/icu4c/source/samples/udata/writer.c
index ba81e46..05dd2fc 100644
--- a/icu4c/source/samples/udata/writer.c
+++ b/icu4c/source/samples/udata/writer.c
@@ -2,7 +2,7 @@
 *******************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 *******************************************************************************
 *******************************************************************************
diff --git a/icu4c/source/samples/udata/writer.vcxproj b/icu4c/source/samples/udata/writer.vcxproj
index 0bb8320..a0abdb3 100644
--- a/icu4c/source/samples/udata/writer.vcxproj
+++ b/icu4c/source/samples/udata/writer.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <OutDir>.\x86\Debug\</OutDir>
diff --git a/icu4c/source/samples/ufortune/Makefile b/icu4c/source/samples/ufortune/Makefile
index de56b40..77302f4 100644
--- a/icu4c/source/samples/ufortune/Makefile
+++ b/icu4c/source/samples/ufortune/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2001-2003 IBM, Inc. and others
 
diff --git a/icu4c/source/samples/ufortune/fortunedefs.mk b/icu4c/source/samples/ufortune/fortunedefs.mk
index a07eb11..d2bcb59 100644
--- a/icu4c/source/samples/ufortune/fortunedefs.mk
+++ b/icu4c/source/samples/ufortune/fortunedefs.mk
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2001-2011 IBM, Inc. and others
 # common makefile between ufortune and ufortune/resources
diff --git a/icu4c/source/samples/ufortune/readme.txt b/icu4c/source/samples/ufortune/readme.txt
index 22a2355..ead27a7 100644
--- a/icu4c/source/samples/ufortune/readme.txt
+++ b/icu4c/source/samples/ufortune/readme.txt
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2002-2005, International Business Machines Corporation and others. All Rights Reserved.
 ufortune: a sample program demonstrating the use of ICU resource files by an application.
diff --git a/icu4c/source/samples/ufortune/resources/Makefile b/icu4c/source/samples/ufortune/resources/Makefile
index 8a3c169..d10169a 100644
--- a/icu4c/source/samples/ufortune/resources/Makefile
+++ b/icu4c/source/samples/ufortune/resources/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2001-2011 IBM, Inc. and others
 #
diff --git a/icu4c/source/samples/ufortune/resources/es.txt b/icu4c/source/samples/ufortune/resources/es.txt
index f8257bc..c2849f6 100644
--- a/icu4c/source/samples/ufortune/resources/es.txt
+++ b/icu4c/source/samples/ufortune/resources/es.txt
@@ -1,5 +1,5 @@
 //   Copyright (C) 2016 and later: Unicode, Inc. and others.
-//   License & terms of use: http://www.unicode.org/copyright.html#License
+//   License & terms of use: http://www.unicode.org/copyright.html
 //
 //   Copyright (C) 2001-2006, International Business Machines
 //   Corporation and others.  All Rights Reserved.
diff --git a/icu4c/source/samples/ufortune/resources/fortune_resources.mak b/icu4c/source/samples/ufortune/resources/fortune_resources.mak
index 707ae6b..1643222 100644
--- a/icu4c/source/samples/ufortune/resources/fortune_resources.mak
+++ b/icu4c/source/samples/ufortune/resources/fortune_resources.mak
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2001-2009 IBM, Inc. and others
 #
diff --git a/icu4c/source/samples/ufortune/resources/root.txt b/icu4c/source/samples/ufortune/resources/root.txt
index 3b5d2fd..fc95f38 100644
--- a/icu4c/source/samples/ufortune/resources/root.txt
+++ b/icu4c/source/samples/ufortune/resources/root.txt
@@ -1,5 +1,5 @@
 //   Copyright (C) 2016 and later: Unicode, Inc. and others.
-//   License & terms of use: http://www.unicode.org/copyright.html#License
+//   License & terms of use: http://www.unicode.org/copyright.html
 //
 //   Copyright (C) 2001-2003, International Business Machines
 //   Corporation and others.  All Rights Reserved.
diff --git a/icu4c/source/samples/ufortune/ufortune.c b/icu4c/source/samples/ufortune/ufortune.c
index 7bf5bab..edc4c33 100644
--- a/icu4c/source/samples/ufortune/ufortune.c
+++ b/icu4c/source/samples/ufortune/ufortune.c
@@ -1,7 +1,7 @@
 /*************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 **************************************************************************
 **************************************************************************
@@ -58,9 +58,9 @@
  */
 int main(int argc, char **argv)
 {
-    UBool              displayUsage  = FALSE;    /* Set true if command line err or help      */
+    UBool              displayUsage  = false;    /* Set true if command line err or help      */
                                                  /*   option was requested.                   */
-    UBool              verbose       = FALSE;    /* Set true if -v command line option.       */
+    UBool              verbose       = false;    /* Set true if -v command line option.       */
     char              *optionError   = NULL;     /* If command line contains an unrecognized  */
                                                  /*   option, this will point to it.          */
     char              *locale=NULL;              /* Locale name.  Null for system default,    */
@@ -95,14 +95,14 @@
             continue;
         }
         if (strcmp(argv[i], "-v") == 0) {
-            verbose = TRUE;
+            verbose = true;
             continue;}
         if (strcmp(argv[i], "-?") == 0 ||
             strcmp(argv[i], "--help") == 0) {
-            displayUsage = TRUE;
+            displayUsage = true;
             continue;}
         optionError = argv[i];
-        displayUsage = TRUE;
+        displayUsage = true;
         break;
     }
 
diff --git a/icu4c/source/samples/ufortune/ufortune.vcxproj b/icu4c/source/samples/ufortune/ufortune.vcxproj
index 8e04935..cdb926b 100644
--- a/icu4c/source/samples/ufortune/ufortune.vcxproj
+++ b/icu4c/source/samples/ufortune/ufortune.vcxproj
@@ -1,107 +1,73 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{25F534DF-93C9-4853-A88E-DB7D8CF74042}</ProjectGuid>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
   </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v141</PlatformToolset>
   </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <!-- The following import will include the 'default' configuration options for VS projects. -->
+  <Import Project="..\..\allinone\Build.Windows.ProjectConfiguration.props" />
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <OutDir>.\x86\Debug\</OutDir>
-    <IntDir>.\x86\Debug\</IntDir>
-    <TargetName>$(ProjectName)</TargetName>
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir>.\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir>.\$(Platform)\$(Configuration)\</IntDir>
+    <!-- The ICU projects use "Win32" to mean "x86", so we need to special case it. -->
+    <OutDir Condition="'$(Platform)'=='Win32'">.\x86\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Platform)'=='Win32'">.\x86\$(Configuration)\</IntDir>
+    <!-- Disable Incremental Linking for Release builds as it prevents Link-time Code Generation -->
+    <LinkIncremental Condition="'$(Configuration)'=='Debug'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)'=='Release'">false</LinkIncremental>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <OutDir>.\x86\Release\</OutDir>
-    <IntDir>.\x86\Release\</IntDir>
-    <TargetName>$(ProjectName)</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+  <!-- Options that are common to *all* project configurations -->
+  <ItemDefinitionGroup>
     <Midl>
-      <TypeLibraryName>.\x86\Debug/ufortune.tlb</TypeLibraryName>
+      <TypeLibraryName>$(OutDir)\ufortune.tlb</TypeLibraryName>
     </Midl>
     <ClCompile>
-      <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
-      <PrecompiledHeaderFile />
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <PrecompiledHeaderOutputFile>$(OutDir)/ufortune.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
+      <ObjectFileName>$(OutDir)/</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)/ufortune.pdb</ProgramDataBaseFileName>
     </ClCompile>
     <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
+      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>icuucd.lib;resources\fortune_resources.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
+      <AdditionalLibraryDirectories>..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
     </Link>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\x86\Release/ufortune.tlb</TypeLibraryName>
-    </Midl>
+  <!-- Options that are common to all 'Debug' project configurations -->
+  <ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
     <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
+      <BrowseInformation>true</BrowseInformation>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>icuucd.lib;resources\fortune_resources.lib;icuiod.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <!-- Options that are common to all 'Release' project configurations -->
+  <ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
+    <ClCompile>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <FunctionLevelLinking>true</FunctionLevelLinking>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-      <PrecompiledHeaderFile />
     </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
     <Link>
       <AdditionalDependencies>icuuc.lib;resources\fortune_resources.lib;icuio.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>../../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <SubSystem>Console</SubSystem>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
diff --git a/icu4c/source/samples/ugrep/Makefile b/icu4c/source/samples/ugrep/Makefile
index 366eb2b..8a0f44f 100644
--- a/icu4c/source/samples/ugrep/Makefile
+++ b/icu4c/source/samples/ugrep/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2000-2010 IBM, Inc. and others
 # sample code makefile
diff --git a/icu4c/source/samples/ugrep/readme.txt b/icu4c/source/samples/ugrep/readme.txt
index cb4042e..8c6b2d5 100644
--- a/icu4c/source/samples/ugrep/readme.txt
+++ b/icu4c/source/samples/ugrep/readme.txt
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2002-2005, International Business Machines Corporation and others. All Rights Reserved.
 ugrep: a sample program demonstrating the use of ICU regular expression API.
diff --git a/icu4c/source/samples/ugrep/ugrep.cpp b/icu4c/source/samples/ugrep/ugrep.cpp
index 9c2f0bd..6d7fce0 100644
--- a/icu4c/source/samples/ugrep/ugrep.cpp
+++ b/icu4c/source/samples/ugrep/ugrep.cpp
@@ -1,7 +1,7 @@
 /*************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 **************************************************************************
 **************************************************************************
@@ -42,8 +42,8 @@
 //
 const char *pattern = NULL;     // The regular expression
 int        firstFileNum;        //  argv index of the first file name
-UBool      displayFileName = FALSE;
-UBool      displayLineNum  = FALSE;
+UBool      displayFileName = false;
+UBool      displayLineNum  = false;
 
 
 //
@@ -93,7 +93,7 @@
 //
 //------------------------------------------------------------------------------------------
 int main(int argc, const char** argv) {
-    UBool     matchFound = FALSE;
+    UBool     matchFound = false;
 
     //
     //  Process the command line options.
@@ -141,10 +141,10 @@
         //  Loop through the lines of a file, trying to match the regex pattern on each.
         //
         for (nextLine(0); lineStart<fileLen; nextLine(lineEnd)) {
-            UnicodeString s(FALSE, ucharBuf+lineStart, lineEnd-lineStart);
+            UnicodeString s(false, ucharBuf+lineStart, lineEnd-lineStart);
             matcher->reset(s);
             if (matcher->find()) {
-                matchFound = TRUE;
+                matchFound = true;
                 printMatch();
             }
         }
@@ -177,8 +177,8 @@
 //------------------------------------------------------------------------------------------
 void processOptions(int argc, const char **argv) {
     int            optInd;
-    UBool          doUsage   = FALSE;
-    UBool          doVersion = FALSE;
+    UBool          doUsage   = false;
+    UBool          doVersion = false;
     const char    *arg;
 
 
@@ -187,14 +187,14 @@
         
         /* version info */
         if(strcmp(arg, "-V") == 0 || strcmp(arg, "--version") == 0) {
-            doVersion = TRUE;
+            doVersion = true;
         }
         /* usage info */
         else if(strcmp(arg, "--help") == 0) {
-            doUsage = TRUE;
+            doUsage = true;
         }
         else if(strcmp(arg, "-n") == 0 || strcmp(arg, "--line-number") == 0) {
-            displayLineNum = TRUE;
+            displayLineNum = true;
         }
         /* POSIX.1 says all arguments after -- are not options */
         else if(strcmp(arg, "--") == 0) {
@@ -205,7 +205,7 @@
         /* unrecognized option */
         else if(strncmp(arg, "-", strlen("-")) == 0) {
             printf("ugrep: invalid option -- %s\n", arg+1);
-            doUsage = TRUE;
+            doUsage = true;
         }
         /* done with options */
         else {
@@ -234,7 +234,7 @@
 
     if (remainingArgs > 2) {
         // More than one file to be processed.   Display file names with match output.
-        displayFileName = TRUE;
+        displayFileName = true;
     }
 
     pattern      = argv[optInd];
diff --git a/icu4c/source/samples/ugrep/ugrep.vcxproj b/icu4c/source/samples/ugrep/ugrep.vcxproj
index 39ab564..5c2c559 100644
--- a/icu4c/source/samples/ugrep/ugrep.vcxproj
+++ b/icu4c/source/samples/ugrep/ugrep.vcxproj
@@ -14,35 +14,17 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+    <OutDir>.\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir>.\$(Platform)\$(Configuration)\</IntDir>
+    <!-- The ICU projects use "Win32" to mean "x86", so we need to special case it. -->
+    <OutDir Condition="'$(Platform)'=='Win32'">.\x86\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Platform)'=='Win32'">.\x86\$(Configuration)\</IntDir>
+    <!-- Disable Incremental Linking for Release builds as it prevents Link-time Code Generation -->
+    <LinkIncremental Condition="'$(Configuration)'=='Debug'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)'=='Release'">false</LinkIncremental>
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <Midl>
diff --git a/icu4c/source/samples/uresb/Makefile b/icu4c/source/samples/uresb/Makefile
index c05110b..c5ab9e8 100644
--- a/icu4c/source/samples/uresb/Makefile
+++ b/icu4c/source/samples/uresb/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2000-2005 IBM, Inc. and others
 # conversion sample code
diff --git a/icu4c/source/samples/uresb/en.txt b/icu4c/source/samples/uresb/en.txt
index 391a349..edecd81 100644
--- a/icu4c/source/samples/uresb/en.txt
+++ b/icu4c/source/samples/uresb/en.txt
@@ -1,5 +1,5 @@
 //   Copyright (C) 2016 and later: Unicode, Inc. and others.
-//   License & terms of use: http://www.unicode.org/copyright.html#License
+//   License & terms of use: http://www.unicode.org/copyright.html
 //
 //   Copyright (C) 2000-2003, International Business Machines
 //   Corporation and others.  All Rights Reserved.
diff --git a/icu4c/source/samples/uresb/readme.txt b/icu4c/source/samples/uresb/readme.txt
index e75eae7..a33c365 100644
--- a/icu4c/source/samples/uresb/readme.txt
+++ b/icu4c/source/samples/uresb/readme.txt
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2001-2010 International Business Machines
 Corporation and others. All Rights Reserved.
diff --git a/icu4c/source/samples/uresb/resources.mak b/icu4c/source/samples/uresb/resources.mak
index 9d3b6e1..df399b5 100644
--- a/icu4c/source/samples/uresb/resources.mak
+++ b/icu4c/source/samples/uresb/resources.mak
@@ -1,5 +1,5 @@
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 2001-2009 International Business Machines
 ## Corporation and others. All Rights Reserved.
diff --git a/icu4c/source/samples/uresb/resources.vcxproj b/icu4c/source/samples/uresb/resources.vcxproj
index 44755ac..4b98a12 100644
--- a/icu4c/source/samples/uresb/resources.vcxproj
+++ b/icu4c/source/samples/uresb/resources.vcxproj
@@ -13,22 +13,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/uresb/root.txt b/icu4c/source/samples/uresb/root.txt
index 0a5b965..9624d31 100644
--- a/icu4c/source/samples/uresb/root.txt
+++ b/icu4c/source/samples/uresb/root.txt
@@ -1,5 +1,5 @@
 // Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 //
 // Copyright (c) 2001-2003 International Business Machines
 // Corporation and others. All Rights Reserved.
diff --git a/icu4c/source/samples/uresb/sr.txt b/icu4c/source/samples/uresb/sr.txt
index 09c2fdf..922f505 100644
--- a/icu4c/source/samples/uresb/sr.txt
+++ b/icu4c/source/samples/uresb/sr.txt
@@ -1,5 +1,5 @@
 // Copyright (C) 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 //
 // Copyright (c) 2001-2003 International Business Machines
 // Corporation and others. All Rights Reserved.
diff --git a/icu4c/source/samples/uresb/uresb.c b/icu4c/source/samples/uresb/uresb.c
index f8d7cd6..dc85930 100644
--- a/icu4c/source/samples/uresb/uresb.c
+++ b/icu4c/source/samples/uresb/uresb.c
@@ -2,7 +2,7 @@
 *******************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 *******************************************************************************
 *******************************************************************************
@@ -55,7 +55,7 @@
 static const int32_t indentsize = 4;
 static UFILE *outerr = NULL;
 static int32_t truncsize = URESB_DEFAULTTRUNC;
-static UBool trunc = FALSE;
+static UBool trunc = false;
 
 const UChar baderror[] = { 0x0042, 0x0041, 0x0044, 0x0000 };
 
@@ -76,7 +76,7 @@
     UOPTION_VERBOSE
 };
 
-static UBool VERBOSE = FALSE;
+static UBool VERBOSE = false;
 
 extern int
 main(int argc, char* argv[]) {
@@ -134,18 +134,18 @@
     }
 
     if(options[5].doesOccur) {
-        trunc = TRUE;
+        trunc = true;
         if(options[5].value != NULL) {
             truncsize = atoi(options[5].value); /* user defined printable size */
         } else {
             truncsize = URESB_DEFAULTTRUNC; /* we'll use default omitting size */
         }
     } else {
-        trunc = FALSE;
+        trunc = false;
     }
 
     if(options[6].doesOccur) {
-        VERBOSE = TRUE;
+        VERBOSE = true;
     }
 
     outerr = u_finit(stderr, locale, encoding);
diff --git a/icu4c/source/samples/uresb/uresb.vcxproj b/icu4c/source/samples/uresb/uresb.vcxproj
index 6e6e96b..52ab5d0 100644
--- a/icu4c/source/samples/uresb/uresb.vcxproj
+++ b/icu4c/source/samples/uresb/uresb.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/samples/ustring/Makefile b/icu4c/source/samples/ustring/Makefile
index 84e68d5..f83464e 100644
--- a/icu4c/source/samples/ustring/Makefile
+++ b/icu4c/source/samples/ustring/Makefile
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2002 IBM, Inc. and others
 # sample code makefile
diff --git a/icu4c/source/samples/ustring/readme.txt b/icu4c/source/samples/ustring/readme.txt
index 9097f7f..513ea18 100644
--- a/icu4c/source/samples/ustring/readme.txt
+++ b/icu4c/source/samples/ustring/readme.txt
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2002-2005, International Business Machines Corporation and others. All Rights Reserved.
 ustring: Unicode String Manipulation
diff --git a/icu4c/source/samples/ustring/ustring.cpp b/icu4c/source/samples/ustring/ustring.cpp
index a123c83..35a8ec1 100644
--- a/icu4c/source/samples/ustring/ustring.cpp
+++ b/icu4c/source/samples/ustring/ustring.cpp
@@ -2,7 +2,7 @@
 *******************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 *******************************************************************************
 *******************************************************************************
@@ -135,7 +135,7 @@
 
     puts("");
 
-    isError=FALSE;
+    isError=false;
     i=1; /* write position, gets post-incremented so needs to be in an l-value */
     U16_APPEND(input, i, UPRV_LENGTHOF(input), 0x0062, isError);
 
@@ -226,7 +226,7 @@
     printUString("input string: ", input, -1);
 
     /* uppercase */
-    isError=FALSE;
+    isError=false;
     for(i=j=0; j<UPRV_LENGTHOF(buffer) && !isError; /* U16_NEXT post-increments */) {
         U16_NEXT(input, i, INT32_MAX, c); /* without length because NUL-terminated */
         if(c==0) {
@@ -237,7 +237,7 @@
     }
     printUString("simple-uppercased: ", buffer, j);
     /* lowercase */
-    isError=FALSE;
+    isError=false;
     for(i=j=0; j<UPRV_LENGTHOF(buffer) && !isError; /* U16_NEXT post-increments */) {
         U16_NEXT(input, i, INT32_MAX, c); /* without length because NUL-terminated */
         if(c==0) {
@@ -248,7 +248,7 @@
     }
     printUString("simple-lowercased: ", buffer, j);
     /* titlecase */
-    isError=FALSE;
+    isError=false;
     for(i=j=0; j<UPRV_LENGTHOF(buffer) && !isError; /* U16_NEXT post-increments */) {
         U16_NEXT(input, i, INT32_MAX, c); /* without length because NUL-terminated */
         if(c==0) {
@@ -259,7 +259,7 @@
     }
     printUString("simple-titlecased: ", buffer, j);
     /* case-fold/default */
-    isError=FALSE;
+    isError=false;
     for(i=j=0; j<UPRV_LENGTHOF(buffer) && !isError; /* U16_NEXT post-increments */) {
         U16_NEXT(input, i, INT32_MAX, c); /* without length because NUL-terminated */
         if(c==0) {
@@ -270,7 +270,7 @@
     }
     printUString("simple-case-folded/default: ", buffer, j);
     /* case-fold/Turkic */
-    isError=FALSE;
+    isError=false;
     for(i=j=0; j<UPRV_LENGTHOF(buffer) && !isError; /* U16_NEXT post-increments */) {
         U16_NEXT(input, i, INT32_MAX, c); /* without length because NUL-terminated */
         if(c==0) {
@@ -456,7 +456,7 @@
 
     // * UnicodeString using readonly-alias to a const UChar array
     // construct a string that aliases a readonly buffer
-    UnicodeString three(FALSE, readonly, UPRV_LENGTHOF(readonly));
+    UnicodeString three(false, readonly, UPRV_LENGTHOF(readonly));
     printUnicodeString("readonly-alias string: ", three);
     // copy-on-write: any modification to the string results in
     // a copy to either the internal buffer or to a newly allocated one
@@ -468,7 +468,7 @@
                i, readonly[i]);
     }
     // setTo() readonly alias
-    one.setTo(FALSE, writeable, UPRV_LENGTHOF(writeable));
+    one.setTo(false, writeable, UPRV_LENGTHOF(writeable));
     // copying the readonly-alias object with fastCopyFrom() (new in ICU 2.4)
     // will readonly-alias the same buffer
     two.fastCopyFrom(one);
@@ -549,7 +549,7 @@
     U_STRING_INIT(invString, "such characters are safe 123 %-.", 32);
 
     // compare the C and C++ strings
-    printf("C and C++ Unicode strings are equal: %d\n", invariantOnly==UnicodeString(TRUE, invString, 32));
+    printf("C and C++ Unicode strings are equal: %d\n", invariantOnly==UnicodeString(true, invString, 32));
 
     /*
      * convert between char * and UChar * strings that
diff --git a/icu4c/source/samples/ustring/ustring.vcxproj b/icu4c/source/samples/ustring/ustring.vcxproj
index 7e2882d..644dc95 100644
--- a/icu4c/source/samples/ustring/ustring.vcxproj
+++ b/icu4c/source/samples/ustring/ustring.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/stubdata/Makefile.in b/icu4c/source/stubdata/Makefile.in
index 162c63a..cf20510 100644
--- a/icu4c/source/stubdata/Makefile.in
+++ b/icu4c/source/stubdata/Makefile.in
@@ -48,7 +48,8 @@
 CPPFLAGS += -I$(top_srcdir)/common $(LIBCPPFLAGS)
 LDFLAGS += $(LDFLAGSICUDT)
 
-OBJECTS = stubdata.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 ## Header files to install
 HEADERS = 
diff --git a/icu4c/source/stubdata/icudt67l.dat b/icu4c/source/stubdata/icudt67l.dat
deleted file mode 100644
index 9c96d42..0000000
--- a/icu4c/source/stubdata/icudt67l.dat
+++ /dev/null
Binary files differ
diff --git a/icu4c/source/stubdata/icudt68l.dat b/icu4c/source/stubdata/icudt68l.dat
new file mode 100644
index 0000000..34f0022
--- /dev/null
+++ b/icu4c/source/stubdata/icudt68l.dat
Binary files differ
diff --git a/icu4c/source/stubdata/sources.txt b/icu4c/source/stubdata/sources.txt
new file mode 100644
index 0000000..1bbb267
--- /dev/null
+++ b/icu4c/source/stubdata/sources.txt
@@ -0,0 +1 @@
+stubdata.cpp
diff --git a/icu4c/source/stubdata/stubdata.vcxproj b/icu4c/source/stubdata/stubdata.vcxproj
index 5e25345..7c58b7e 100644
--- a/icu4c/source/stubdata/stubdata.vcxproj
+++ b/icu4c/source/stubdata/stubdata.vcxproj
@@ -16,22 +16,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
@@ -72,7 +56,7 @@
       <SetChecksum>true</SetChecksum>
       <TurnOffAssemblyGeneration>true</TurnOffAssemblyGeneration>
       <!-- Note: stubdata is somewhat odd in that it doesn't suffix the Debug output DLL/LIB with a "d" like common/i18n/etc. -->
-      <OutputFile>..\..\$(IcuBinOutputDir)\icudt67.dll</OutputFile>
+      <OutputFile>..\..\$(IcuBinOutputDir)\icudt68.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icudt.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\$(IcuLibOutputDir)\icudt.lib</ImportLibrary>
     </Link>
diff --git a/icu4c/source/test/cintltst/Makefile.in b/icu4c/source/test/cintltst/Makefile.in
index a803837..34f8ea2 100644
--- a/icu4c/source/test/cintltst/Makefile.in
+++ b/icu4c/source/test/cintltst/Makefile.in
@@ -55,7 +55,7 @@
 utexttst.o ucsdetst.o spooftest.o \
 cbiditransformtst.o \
 cgendtst.o \
-unumberformattertst.o uformattedvaluetst.o
+unumberformattertst.o uformattedvaluetst.o unumberrangeformattertst.o
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/test/cintltst/cdateintervalformattest.c b/icu4c/source/test/cintltst/cdateintervalformattest.c
index fb5bc73..513989a 100644
--- a/icu4c/source/test/cintltst/cdateintervalformattest.c
+++ b/icu4c/source/test/cintltst/cdateintervalformattest.c
@@ -14,6 +14,7 @@
 #include "unicode/udat.h"
 #include "unicode/ucal.h"
 #include "unicode/ustring.h"
+#include "unicode/udisplaycontext.h"
 #include "cintltst.h"
 #include "cmemory.h"
 #include "cformtst.h"
@@ -48,23 +49,43 @@
 typedef struct {
     const char * locale;
     const char * skeleton;
+    UDisplayContext context;
     const char * tzid;
     const UDate  from;
     const UDate  to;
     const char * resultExpected;
 } DateIntervalFormatTestItem;
 
+#define CAP_NONE  UDISPCTX_CAPITALIZATION_NONE
+#define CAP_BEGIN UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE
+#define CAP_LIST  UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU
+#define CAP_ALONE UDISPCTX_CAPITALIZATION_FOR_STANDALONE
+
 /* Just a small set of tests for now, the real functionality is tested in the C++ tests */
 static const DateIntervalFormatTestItem testItems[] = {
-    { "en", "MMMdHHmm", tzUSPacific, Date201103021030, Date201103021030 + 7.0*_HOUR,  "Mar 2, 10:30 \\u2013 17:30" },
-    { "en", "MMMdHHmm", tzAsiaTokyo, Date201103021030, Date201103021030 + 7.0*_HOUR,  "Mar 3, 03:30 \\u2013 10:30" },
-    { "en", "yMMMEd",   tzUSPacific, Date201009270800, Date201009270800 + 12.0*_HOUR, "Mon, Sep 27, 2010" },
-    { "en", "yMMMEd",   tzUSPacific, Date201009270800, Date201009270800 + 31.0*_DAY,  "Mon, Sep 27 \\u2013 Thu, Oct 28, 2010" },
-    { "en", "yMMMEd",   tzUSPacific, Date201009270800, Date201009270800 + 410.0*_DAY, "Mon, Sep 27, 2010 \\u2013 Fri, Nov 11, 2011" },
-    { "de", "Hm",       tzUSPacific, Date201009270800, Date201009270800 + 12.0*_HOUR, "08:00\\u201320:00 Uhr" },
-    { "de", "Hm",       tzUSPacific, Date201009270800, Date201009270800 + 31.0*_DAY,  "27.9.2010, 08:00 \\u2013 28.10.2010, 08:00" },
-    { "ja", "MMMd",     tzUSPacific, Date201009270800, Date201009270800 + 1.0*_DAY,   "9\\u670827\\u65E5\\uFF5E28\\u65E5" },
-    { NULL, NULL,       NULL,        0,                0,                             NULL }
+    { "en", "MMMdHHmm", CAP_NONE,  tzUSPacific, Date201103021030, Date201103021030 + 7.0*_HOUR,  "Mar 2, 10:30 \\u2013 17:30" },
+    { "en", "MMMdHHmm", CAP_NONE,  tzAsiaTokyo, Date201103021030, Date201103021030 + 7.0*_HOUR,  "Mar 3, 03:30 \\u2013 10:30" },
+    { "en", "yMMMEd",   CAP_NONE,  tzUSPacific, Date201009270800, Date201009270800 + 12.0*_HOUR, "Mon, Sep 27, 2010" },
+    { "en", "yMMMEd",   CAP_NONE,  tzUSPacific, Date201009270800, Date201009270800 + 31.0*_DAY,  "Mon, Sep 27 \\u2013 Thu, Oct 28, 2010" },
+    { "en", "yMMMEd",   CAP_NONE,  tzUSPacific, Date201009270800, Date201009270800 + 410.0*_DAY, "Mon, Sep 27, 2010 \\u2013 Fri, Nov 11, 2011" },
+    { "de", "Hm",       CAP_NONE,  tzUSPacific, Date201009270800, Date201009270800 + 12.0*_HOUR, "08:00\\u201320:00 Uhr" },
+    { "de", "Hm",       CAP_NONE,  tzUSPacific, Date201009270800, Date201009270800 + 31.0*_DAY,  "27.9.2010, 08:00 \\u2013 28.10.2010, 08:00" },
+    { "ja", "MMMd",     CAP_NONE,  tzUSPacific, Date201009270800, Date201009270800 + 1.0*_DAY,   "9\\u670827\\u65E5\\uFF5E28\\u65E5" },
+    { "cs", "MMMEd",    CAP_NONE,  tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY,  "po 27. 9. \\u2013 p\\u00E1 26. 11." },
+    { "cs", "yMMMM",    CAP_NONE,  tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY,  "z\\u00E1\\u0159\\u00ED\\u2013listopad 2010" },
+    { "cs", "yMMMM",    CAP_NONE,  tzUSPacific, Date201009270800, Date201009270800 + 1.0*_DAY,   "z\\u00E1\\u0159\\u00ED 2010" },
+#if !UCONFIG_NO_BREAK_ITERATION
+    { "cs", "MMMEd",    CAP_BEGIN, tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY,  "Po 27. 9. \\u2013 p\\u00E1 26. 11." },
+    { "cs", "yMMMM",    CAP_BEGIN, tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY,  "Z\\u00E1\\u0159\\u00ED\\u2013listopad 2010" },
+    { "cs", "yMMMM",    CAP_BEGIN, tzUSPacific, Date201009270800, Date201009270800 + 1.0*_DAY,   "Z\\u00E1\\u0159\\u00ED 2010" },
+    { "cs", "MMMEd",    CAP_LIST,  tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY,  "Po 27. 9. \\u2013 p\\u00E1 26. 11." },
+    { "cs", "yMMMM",    CAP_LIST,  tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY,  "Z\\u00E1\\u0159\\u00ED\\u2013listopad 2010" },
+    { "cs", "yMMMM",    CAP_LIST,  tzUSPacific, Date201009270800, Date201009270800 + 1.0*_DAY,   "Z\\u00E1\\u0159\\u00ED 2010" },
+    { "cs", "MMMEd",    CAP_ALONE, tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY,  "po 27. 9. \\u2013 p\\u00E1 26. 11." },
+#endif
+    { "cs", "yMMMM",    CAP_ALONE, tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY,  "z\\u00E1\\u0159\\u00ED\\u2013listopad 2010" },
+    { "cs", "yMMMM",    CAP_ALONE, tzUSPacific, Date201009270800, Date201009270800 + 1.0*_DAY,   "z\\u00E1\\u0159\\u00ED 2010" },
+    { NULL, NULL,       CAP_NONE,  NULL,        0,                0,                             NULL }
 };
 
 enum {
@@ -98,6 +119,22 @@
         if ( U_SUCCESS(status) ) {
             UChar result[kFormatBufLen];
             UChar resultExpected[kFormatBufLen];
+
+            udtitvfmt_setContext(udtitvfmt, testItemPtr->context, &status);
+            if ( U_FAILURE(status) ) {
+                log_err("FAIL: udtitvfmt_setContext for locale %s, skeleton %s, context %04X -  %s\n",
+                        testItemPtr->locale, testItemPtr->skeleton, (unsigned)testItemPtr->context, myErrorName(status) );
+            } else {
+                UDisplayContext getContext = udtitvfmt_getContext(udtitvfmt, UDISPCTX_TYPE_CAPITALIZATION, &status);
+                if ( U_FAILURE(status) ) {
+                    log_err("FAIL: udtitvfmt_getContext for locale %s, skeleton %s, context %04X -  %s\n",
+                            testItemPtr->locale, testItemPtr->skeleton, (unsigned)testItemPtr->context, myErrorName(status) );
+                } else if (getContext != testItemPtr->context) {
+                    log_err("FAIL: udtitvfmt_getContext for locale %s, skeleton %s, context %04X -  got context %04X\n",
+                            testItemPtr->locale, testItemPtr->skeleton, (unsigned)testItemPtr->context, (unsigned)getContext );
+                }
+            }
+            status = U_ZERO_ERROR;
             int32_t fmtLen = udtitvfmt_format(udtitvfmt, testItemPtr->from, testItemPtr->to, result, kFormatBufLen, NULL, &status);
             if (fmtLen >= kFormatBufLen) {
                 result[kFormatBufLen-1] = 0;
diff --git a/icu4c/source/test/cintltst/cdattst.c b/icu4c/source/test/cintltst/cdattst.c
index d5e3ba2..cded31e 100644
--- a/icu4c/source/test/cintltst/cdattst.c
+++ b/icu4c/source/test/cintltst/cdattst.c
@@ -43,6 +43,7 @@
 static void TestParseErrorReturnValue(void);
 static void TestFormatForFields(void);
 static void TestForceGannenNumbering(void);
+static void TestMapDateToCalFields(void);
 
 void addDateForTest(TestNode** root);
 
@@ -63,6 +64,7 @@
     TESTCASE(TestParseErrorReturnValue);
     TESTCASE(TestFormatForFields);
     TESTCASE(TestForceGannenNumbering);
+    TESTCASE(TestMapDateToCalFields);
 }
 /* Testing the DateFormat API */
 static void TestDateFormat()
@@ -194,16 +196,21 @@
     }
     /*format using fr */
 
-    u_unescape("10 juil. 1996 \\u00E0 16:05:28 heure d\\u2019\\u00E9t\\u00E9 du Pacifique", temp, 50);
+    u_unescape("10 juil. 1996, 16:05:28 heure d\\u2019\\u00E9t\\u00E9 du Pacifique", temp, 50);
     if(result != NULL) {
         free(result);
         result = NULL;
     }
     result=myDateFormat(fr, d);
-    if(u_strcmp(result, temp)==0)
+    if(u_strcmp(result, temp)==0) {
         log_verbose("PASS: Date Format for french locale successful using udat_format()\n");
-    else
-        log_data_err("FAIL: Date Format for french locale failed using udat_format().\n" );
+    } else {
+        char xbuf[2048];
+        char gbuf[2048];
+        u_austrcpy(xbuf, temp);
+        u_austrcpy(gbuf, result);
+        log_data_err("FAIL: Date Format for french locale failed using udat_format() - expected %s got %s\n", xbuf, gbuf);
+    }
 
     /*format using it */
     u_uastrcpy(temp, "10 lug 1996, 16:05:28");
@@ -1905,4 +1912,35 @@
         udatpg_close(dtpgen);
     }
 }
+
+typedef struct {
+    UChar               patternChar; // for future use
+    UDateFormatField    dateField;
+    UCalendarDateFields calField;
+} PatternCharToFieldsItem;
+
+static const PatternCharToFieldsItem patCharToFieldsItems[] = {
+    { u'G', UDAT_ERA_FIELD,                 UCAL_ERA },
+    { u'y', UDAT_YEAR_FIELD,                UCAL_YEAR },
+    { u'Y', UDAT_YEAR_WOY_FIELD,            UCAL_YEAR_WOY },
+    { u'Q', UDAT_QUARTER_FIELD,             UCAL_MONTH },
+    { u'H', UDAT_HOUR_OF_DAY0_FIELD,        UCAL_HOUR_OF_DAY },
+    { u'r', UDAT_RELATED_YEAR_FIELD,        UCAL_EXTENDED_YEAR },
+    { u'B', UDAT_FLEXIBLE_DAY_PERIOD_FIELD, UCAL_FIELD_COUNT },
+    { u'$', UDAT_FIELD_COUNT,               UCAL_FIELD_COUNT },
+    { 0xFFFF, (UDateFormatField)-1,         UCAL_FIELD_COUNT }, // patternChar ignored here
+    { (UChar)0, (UDateFormatField)0, (UCalendarDateFields)0 } // terminator
+};
+
+static void TestMapDateToCalFields(void){
+    const PatternCharToFieldsItem* itemPtr;
+    for ( itemPtr=patCharToFieldsItems; itemPtr->patternChar!=(UChar)0; itemPtr++) {
+        UCalendarDateFields calField = udat_toCalendarDateField(itemPtr->dateField);
+        if (calField != itemPtr->calField) {
+            log_err("for pattern char 0x%04X, dateField %d, expect calField %d and got %d\n",
+                    itemPtr->patternChar, itemPtr->dateField, itemPtr->calField, calField);
+        }
+    }
+}
+
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/cintltst/cformtst.c b/icu4c/source/test/cintltst/cformtst.c
index f4e62b7..f9c3ac3 100644
--- a/icu4c/source/test/cintltst/cformtst.c
+++ b/icu4c/source/test/cintltst/cformtst.c
@@ -41,6 +41,7 @@
 void addUListFmtTest(TestNode** root);
 void addUNumberFormatterTest(TestNode** root);
 void addUFormattedValueTest(TestNode** root);
+void addUNumberRangeFormatterTest(TestNode** root);
 
 void addFormatTest(TestNode** root);
 
@@ -65,6 +66,7 @@
     addUListFmtTest(root);
     addUNumberFormatterTest(root);
     addUFormattedValueTest(root);
+    addUNumberRangeFormatterTest(root);
 }
 /*Internal functions used*/
 
diff --git a/icu4c/source/test/cintltst/cintltst.c b/icu4c/source/test/cintltst/cintltst.c
index 97534c3..293dd55 100644
--- a/icu4c/source/test/cintltst/cintltst.c
+++ b/icu4c/source/test/cintltst/cintltst.c
@@ -521,6 +521,12 @@
 
 U_CFUNC UBool assertEquals(const char* message, const char* expected,
                            const char* actual) {
+    if (expected == NULL) {
+        expected = "(null)";
+    }
+    if (actual == NULL) {
+        actual = "(null)";
+    }
     if (uprv_strcmp(expected, actual) != 0) {
         log_err("FAIL: %s; got \"%s\"; expected \"%s\"\n",
                 message, actual, expected);
@@ -536,6 +542,12 @@
 
 U_CFUNC UBool assertUEquals(const char* message, const UChar* expected,
                             const UChar* actual) {
+    if (expected == NULL) {
+        expected = u"(null)";
+    }
+    if (actual == NULL) {
+        actual = u"(null)";
+    }
     for (int32_t i=0;; i++) {
         if (expected[i] != actual[i]) {
             log_err("FAIL: %s; got \"%s\"; expected \"%s\"\n",
diff --git a/icu4c/source/test/cintltst/cintltst.vcxproj b/icu4c/source/test/cintltst/cintltst.vcxproj
index 9444d3a..251d4fd 100644
--- a/icu4c/source/test/cintltst/cintltst.vcxproj
+++ b/icu4c/source/test/cintltst/cintltst.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
@@ -175,6 +159,7 @@
     <ClCompile Include="ulistfmttest.c" />
     <ClCompile Include="unumberformattertst.c" />
     <ClCompile Include="uformattedvaluetst.c" />
+    <ClCompile Include="unumberrangeformattertst.c" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="cbiditst.h" />
diff --git a/icu4c/source/test/cintltst/cintltst.vcxproj.filters b/icu4c/source/test/cintltst/cintltst.vcxproj.filters
index b541163..d39436d 100644
--- a/icu4c/source/test/cintltst/cintltst.vcxproj.filters
+++ b/icu4c/source/test/cintltst/cintltst.vcxproj.filters
@@ -225,6 +225,9 @@
     <ClInclude Include="uformattedvaluetst.c">
       <Filter>formatting</Filter>
     </ClInclude>
+    <ClInclude Include="unumberrangeformattertst.c">
+      <Filter>formatting</Filter>
+    </ClInclude>
     <ClCompile Include="cldrtest.c">
       <Filter>locales &amp; resources</Filter>
     </ClCompile>
diff --git a/icu4c/source/test/cintltst/cldrtest.c b/icu4c/source/test/cintltst/cldrtest.c
index c0fc8d0..8044622 100644
--- a/icu4c/source/test/cintltst/cldrtest.c
+++ b/icu4c/source/test/cintltst/cldrtest.c
@@ -555,19 +555,18 @@
             ures_close(currentLocale);
             continue;
         }
-        ures_getStringByKey(currentLocale, "Version", NULL, &errorCode);
-        if(errorCode != U_ZERO_ERROR) {
+        const UChar *version = ures_getStringByKey(currentLocale, "Version", NULL, &errorCode);
+        if(U_FAILURE(errorCode)) {
             log_err("No version information is available for locale %s, and it should be!\n",
                 currLoc);
         }
-        else if (ures_getStringByKey(currentLocale, "Version", NULL, &errorCode)[0] == (UChar)(0x78)) {
-            log_verbose("WARNING: The locale %s is experimental! It shouldn't be listed as an installed locale.\n",
-                currLoc);
+        else if (version[0] == u'x') {
+            log_verbose("WARNING: The locale %s is experimental! "
+                        "It shouldn't be listed as an installed locale.\n",
+                        currLoc);
         }
         resolvedLoc = ures_getLocaleByType(currentLocale, ULOC_ACTUAL_LOCALE, &errorCode);
         if (strcmp(resolvedLoc, currLoc) != 0) {
-            /* All locales have at least a Version resource.
-               If it's absolutely empty, then the previous test will fail too.*/
             log_err("Locale resolves to different locale. Is %s an alias of %s?\n",
                 currLoc, resolvedLoc);
         }
@@ -1097,11 +1096,11 @@
                if (U_FAILURE(errorCode)) {
                    log_err("ulocdata_getMeasurementSystem failed for locale %s with error: %s \n", currLoc, u_errorName(errorCode));
                } else {
-                   if ( strstr(fullLoc, "_US")!=NULL || strstr(fullLoc, "_MM")!=NULL || strstr(fullLoc, "_LR")!=NULL ) {
+                   if ( strstr(fullLoc, "_US")!=NULL || strstr(fullLoc, "_LR")!=NULL ) {
                        if(measurementSystem != UMS_US){
                             log_err("ulocdata_getMeasurementSystem did not return expected data for locale %s \n", currLoc);
                        }
-                   } else if ( strstr(fullLoc, "_GB")!=NULL ) {
+                   } else if ( strstr(fullLoc, "_GB")!=NULL || strstr(fullLoc, "_MM")!=NULL ) {
                        if(measurementSystem != UMS_UK){
                             log_err("ulocdata_getMeasurementSystem did not return expected data for locale %s \n", currLoc);
                        }
@@ -1339,7 +1338,7 @@
         status = U_ZERO_ERROR;
         ulocdata_getDelimiter(uld, types[i], result, 32, &status);
         if (U_FAILURE(status)){
-            log_err("ulocdata_getgetDelimiter error with type %d", types[i]);
+            log_err("ulocdata_getDelimiter error with type %d", types[i]);
         }
     }
 
@@ -1348,6 +1347,49 @@
     ulocdata_close(uld);
 }
 
+typedef struct {
+    const char*  locale;
+    const UChar* quoteStart;
+    const UChar* quoteEnd;
+} TestDelimitersItem;
+
+static const TestDelimitersItem testDelimsItems[] = {
+    { "fr_CA", u"«", u"»" }, // inherited from fr
+    { "de_CH", u"„", u"“" }, // inherited from de
+    { "es_MX", u"“", u"”" }, // inherited from es_419
+    { "ja",    u"「", u"」" },
+    { NULL, NULL, NULL }
+};
+
+enum { kUDelimMax = 8, kBDelimMax = 16 };
+static void TestDelimiters(void){
+    const TestDelimitersItem* itemPtr = testDelimsItems;
+    for (; itemPtr->locale != NULL; itemPtr++) {
+        UErrorCode status = U_ZERO_ERROR;
+        ULocaleData  *uld = ulocdata_open(itemPtr->locale, &status);
+        if (U_FAILURE(status)) {
+            log_data_err("ulocdata_open for locale %s fails: %s\n", itemPtr->locale, u_errorName(status));
+        } else {
+            UChar quoteStart[kUDelimMax], quoteEnd[kUDelimMax];
+            (void)ulocdata_getDelimiter(uld, ULOCDATA_QUOTATION_START, quoteStart, kUDelimMax, &status);
+            (void)ulocdata_getDelimiter(uld, ULOCDATA_QUOTATION_END,   quoteEnd,   kUDelimMax, &status);
+            if (U_FAILURE(status)) {
+                log_err("ulocdata_getDelimiter ULOCDATA_QUOTATION_START/END for locale %s fails: %s\n", itemPtr->locale, u_errorName(status));
+            } else if (u_strcmp(quoteStart,itemPtr->quoteStart)!=0 || u_strcmp(quoteEnd,itemPtr->quoteEnd)!=0) {
+                char expStart[kBDelimMax], expEnd[kBDelimMax], getStart[kBDelimMax], getEnd[kBDelimMax];
+                u_austrcpy(expStart, itemPtr->quoteStart);
+                u_austrcpy(expEnd, itemPtr->quoteEnd);
+                u_austrcpy(getStart, quoteStart);
+                u_austrcpy(getEnd, quoteEnd);
+                log_err("ulocdata_getDelimiter ULOCDATA_QUOTATION_START/END for locale %s, expect %s..%s, get %s..%s\n",
+                        itemPtr->locale, expStart, expEnd, getStart, getEnd);
+            }
+            ulocdata_close(uld);
+        }
+    }
+}
+
+
 static void TestIndexChars(void) {
     /* Very basic test of ULOCDATA_ES_INDEX.
      * No comprehensive test of data, just basic check that the code path is alive.
@@ -1537,6 +1579,7 @@
     TESTCASE(TestExemplarSet);
     TESTCASE(TestLocaleDisplayPattern);
     TESTCASE(TestCoverage);
+    TESTCASE(TestDelimiters);
     TESTCASE(TestIndexChars);
     TESTCASE(TestAvailableIsoCodes);
 }
diff --git a/icu4c/source/test/cintltst/cloctst.c b/icu4c/source/test/cintltst/cloctst.c
index b611709..5f66d06 100644
--- a/icu4c/source/test/cintltst/cloctst.c
+++ b/icu4c/source/test/cintltst/cloctst.c
@@ -47,6 +47,8 @@
 static void TestLocDataWithRgTag(void);
 static void TestLanguageExemplarsFallbacks(void);
 static void TestDisplayNameBrackets(void);
+static void TestIllegalArgumentWhenNoDataWithNoSubstitute(void);
+static void Test21157CorrectTerminating(void);
 
 static void TestUnicodeDefines(void);
 
@@ -55,6 +57,8 @@
 static void TestBug20370(void);
 static void TestBug20321UnicodeLocaleKey(void);
 
+static void TestUsingDefaultWarning(void);
+
 void PrintDataTable();
 
 /*---------------------------------------------------
@@ -217,6 +221,7 @@
     TESTCASE(TestPrefixes);
     TESTCASE(TestSimpleResourceInfo);
     TESTCASE(TestDisplayNames);
+    TESTCASE(TestGetDisplayScriptPreFlighting21160);
     TESTCASE(TestGetAvailableLocales);
     TESTCASE(TestGetAvailableLocalesByType);
     TESTCASE(TestDataDirectory);
@@ -240,6 +245,7 @@
     TESTCASE(TestGetLocale);
 #endif
     TESTCASE(TestDisplayNameWarning);
+    TESTCASE(Test21157CorrectTerminating);
     TESTCASE(TestNonexistentLanguageExemplars);
     TESTCASE(TestLocDataErrorCodeChaining);
     TESTCASE(TestLocDataWithRgTag);
@@ -257,12 +263,14 @@
     TESTCASE(TestToLanguageTag);
     TESTCASE(TestBug20132);
     TESTCASE(TestBug20149);
+    TESTCASE(TestCDefaultLocale);
     TESTCASE(TestForLanguageTag);
     TESTCASE(TestLangAndRegionCanonicalize);
     TESTCASE(TestTrailingNull);
     TESTCASE(TestUnicodeDefines);
     TESTCASE(TestEnglishExemplarCharacters);
     TESTCASE(TestDisplayNameBrackets);
+    TESTCASE(TestIllegalArgumentWhenNoDataWithNoSubstitute);
     TESTCASE(TestIsRightToLeft);
     TESTCASE(TestToUnicodeLocaleKey);
     TESTCASE(TestToLegacyKey);
@@ -271,6 +279,7 @@
     TESTCASE(TestBadLocaleIDs);
     TESTCASE(TestBug20370);
     TESTCASE(TestBug20321UnicodeLocaleKey);
+    TESTCASE(TestUsingDefaultWarning);
 }
 
 
@@ -403,6 +412,10 @@
         }
         
     }
+    uloc_setDefault(original, &status);
+    if (U_FAILURE(status)) {
+        log_err("Failed to change the default locale back to %s\n", original);
+    }
     
 }
 /* Test the i- and x- and @ and . functionality 
@@ -691,9 +704,19 @@
     /* test that the default locale has a display name for its own language */
     errorCode=U_ZERO_ERROR;
     length=uloc_getDisplayLanguage(NULL, NULL, buffer, UPRV_LENGTHOF(buffer), &errorCode);
+    /* check <=3 to reject getting the language code as a display name */
     if(U_FAILURE(errorCode) || (length<=3 && buffer[0]<=0x7f)) {
-        /* check <=3 to reject getting the language code as a display name */
-        log_data_err("unable to get a display string for the language of the default locale - %s (Are you missing data?)\n", u_errorName(errorCode));
+        const char* defaultLocale = uloc_getDefault();
+        for (int32_t i = 0, count = uloc_countAvailable(); i < count; i++) {
+            /* Only report error if the default locale is in the available list */
+            if (uprv_strcmp(defaultLocale, uloc_getAvailable(i)) == 0) {
+                log_data_err(
+                    "unable to get a display string for the language of the "
+                    "default locale - %s (Are you missing data?)\n",
+                    u_errorName(errorCode));
+                break;
+            }
+        }
     }
 
     /* test that we get the language code itself for an unknown language, and a default warning */
@@ -808,6 +831,26 @@
     }
 }
 
+/**
+ * ICU-21160 test the pre-flighting call to uloc_getDisplayScript returns the actual length needed
+ * for the result buffer.
+ */
+static void TestGetDisplayScriptPreFlighting21160()
+{
+    const char* locale = "und-Latn";
+    const char* inlocale = "de";
+
+    UErrorCode ec = U_ZERO_ERROR;
+    UChar* result = NULL;
+    int32_t length = uloc_getDisplayScript(locale, inlocale, NULL, 0, &ec) + 1;
+    ec = U_ZERO_ERROR;
+    result=(UChar*)malloc(sizeof(UChar) * length);
+    length = uloc_getDisplayScript(locale, inlocale, result, length, &ec);
+    if (U_FAILURE(ec)) {
+        log_err("uloc_getDisplayScript length %d returned error %s", length, u_errorName(ec));
+    }
+    free(result);
+}
 
 /* test for uloc_getAvialable()  and uloc_countAvilable()*/
 static void TestGetAvailableLocales()
@@ -1195,6 +1238,72 @@
 }
 
 /*------------------------------
+ * TestIllegalArgumentWhenNoDataWithNoSubstitute
+ */
+
+static void TestIllegalArgumentWhenNoDataWithNoSubstitute()
+{
+#if !UCONFIG_NO_FORMATTING
+    UErrorCode status = U_ZERO_ERROR;
+    UChar getName[kDisplayNameBracketsMax];
+    UDisplayContext contexts[] = {
+        UDISPCTX_NO_SUBSTITUTE,
+    };
+    ULocaleDisplayNames* ldn = uldn_openForContext("en", contexts, 1, &status);
+
+    uldn_localeDisplayName(ldn, "efg", getName, kDisplayNameBracketsMax, &status);
+    if (status != U_ILLEGAL_ARGUMENT_ERROR) {
+        log_err("FAIL uldn_localeDisplayName should return U_ILLEGAL_ARGUMENT_ERROR "
+                "while no resource under UDISPCTX_NO_SUBSTITUTE");
+    }
+
+    status = U_ZERO_ERROR;
+    uldn_languageDisplayName(ldn, "zz", getName, kDisplayNameBracketsMax, &status);
+    if (status != U_ILLEGAL_ARGUMENT_ERROR) {
+        log_err("FAIL uldn_languageDisplayName should return U_ILLEGAL_ARGUMENT_ERROR "
+                "while no resource under UDISPCTX_NO_SUBSTITUTE");
+    }
+
+    status = U_ZERO_ERROR;
+    uldn_scriptDisplayName(ldn, "Aaaa", getName, kDisplayNameBracketsMax, &status);
+    if (status != U_ILLEGAL_ARGUMENT_ERROR) {
+        log_err("FAIL uldn_scriptDisplayName should return U_ILLEGAL_ARGUMENT_ERROR "
+                "while no resource under UDISPCTX_NO_SUBSTITUTE");
+    }
+
+    status = U_ZERO_ERROR;
+    uldn_regionDisplayName(ldn, "KK", getName, kDisplayNameBracketsMax, &status);
+    if (status != U_ILLEGAL_ARGUMENT_ERROR) {
+        log_err("FAIL uldn_regionDisplayName should return U_ILLEGAL_ARGUMENT_ERROR "
+                "while no resource under UDISPCTX_NO_SUBSTITUTE");
+    }
+
+    status = U_ZERO_ERROR;
+    uldn_variantDisplayName(ldn, "ZZ", getName, kDisplayNameBracketsMax, &status);
+    if (status != U_ILLEGAL_ARGUMENT_ERROR) {
+        log_err("FAIL uldn_variantDisplayName should return U_ILLEGAL_ARGUMENT_ERROR "
+                "while no resource under UDISPCTX_NO_SUBSTITUTE");
+    }
+
+    status = U_ZERO_ERROR;
+    uldn_keyDisplayName(ldn, "zz", getName, kDisplayNameBracketsMax, &status);
+    if (status != U_ILLEGAL_ARGUMENT_ERROR) {
+        log_err("FAIL uldn_keyDisplayName should return U_ILLEGAL_ARGUMENT_ERROR "
+                "while no resource under UDISPCTX_NO_SUBSTITUTE");
+    }
+
+    status = U_ZERO_ERROR;
+    uldn_keyValueDisplayName(ldn, "ca", "zz", getName, kDisplayNameBracketsMax, &status);
+    if (status != U_ILLEGAL_ARGUMENT_ERROR) {
+        log_err("FAIL uldn_keyValueDisplayName should return U_ILLEGAL_ARGUMENT_ERROR "
+                "while no resource under UDISPCTX_NO_SUBSTITUTE");
+    }
+
+    uldn_close(ldn);
+#endif
+}
+
+/*------------------------------
  * TestISOFunctions
  */
 
@@ -3653,7 +3762,7 @@
     "de_Latn_DE_POSIX_1901",
     "de__POSIX_1901"
   }, {
-    "",
+    "zzz",
     ""
   }, {
     "en_Latn_US@calendar=gregorian",
@@ -6565,17 +6674,163 @@
 
 
 
-static void test_unicode_define(const char *namech, char ch, const char *nameu, UChar uch)
+static void test_unicode_define(const char *namech, char ch,
+                                const char *nameu, UChar uch)
 {
-  UChar asUch[1];
-  asUch[0]=0;
-  log_verbose("Testing whether %s[\\x%02x,'%c'] == %s[U+%04X]\n", namech, ch,(int)ch, nameu, (int) uch);
-  u_charsToUChars(&ch, asUch, 1);
-  if(asUch[0] != uch) {
-    log_err("FAIL:  %s[\\x%02x,'%c'] maps to U+%04X, but %s = U+%04X\n", namech, ch, (int)ch, (int)asUch[0], nameu, (int)uch);
-  } else {
-    log_verbose(" .. OK, == U+%04X\n", (int)asUch[0]);
-  }
+    UChar asUch[1];
+    asUch[0]=0;
+    log_verbose("Testing whether %s[\\x%02x,'%c'] == %s[U+%04X]\n",
+                namech, ch,(int)ch, nameu, (int) uch);
+    u_charsToUChars(&ch, asUch, 1);
+    if(asUch[0] != uch) {
+        log_err("FAIL:  %s[\\x%02x,'%c'] maps to U+%04X, but %s = U+%04X\n",
+                namech, ch, (int)ch, (int)asUch[0], nameu, (int)uch);
+    } else {
+        log_verbose(" .. OK, == U+%04X\n", (int)asUch[0]);
+    }
+}
+
+static void checkTerminating(const char* locale, const char* inLocale)
+{
+    UErrorCode status = U_ZERO_ERROR;
+    int32_t preflight_length = uloc_getDisplayName(
+        locale, inLocale, NULL, 0, &status);
+    if (status != U_BUFFER_OVERFLOW_ERROR) {
+        log_err("uloc_getDisplayName(%s, %s) preflight failed",
+                locale, inLocale);
+    }
+    UChar buff[256];
+    const UChar sentinel1 = 0x6C38; // 永- a Han unicode as sentinel.
+    const UChar sentinel2 = 0x92D2; // 鋒- a Han unicode as sentinel.
+
+    // 1. Test when we set the maxResultSize to preflight_length + 1.
+    // Set sentinel1 in the buff[preflight_length-1] to check it will be
+    // replaced with display name.
+    buff[preflight_length-1] = sentinel1;
+    // Set sentinel2 in the buff[preflight_length] to check it will be
+    // replaced by null.
+    buff[preflight_length] = sentinel2;
+    // It should be properly null terminated at buff[preflight_length].
+    status = U_ZERO_ERROR;
+    int32_t length = uloc_getDisplayName(
+        locale, inLocale, buff, preflight_length + 1, &status);
+    const char* result = U_SUCCESS(status) ?
+        aescstrdup(buff, length) : "(undefined when failure)";
+    if (length != preflight_length) {
+        log_err("uloc_getDisplayName(%s, %s) w/ maxResultSize=length+1 returns "
+                "length %d different from preflight length %d. Returns '%s'\n",
+                locale, inLocale, length, preflight_length, result);
+    }
+    if (U_ZERO_ERROR != status) {
+        log_err("uloc_getDisplayName(%s, %s) w/ maxResultSize=length+1 should "
+                "set status to U_ZERO_ERROR but got %d %s. Returns %s\n",
+                locale, inLocale, status, myErrorName(status), result);
+    }
+    if (buff[length-1] == sentinel1) {
+        log_err("uloc_getDisplayName(%s, %s) w/ maxResultSize=length+1 does "
+                "not change memory in the end of buffer while it should. "
+                "Returns %s\n",
+                locale, inLocale, result);
+    }
+    if (buff[length] != 0x0000) {
+        log_err("uloc_getDisplayName(%s, %s) w/ maxResultSize=length+1 should "
+                "null terminate at buff[length] but does not %x. Returns %s\n",
+                locale, inLocale, buff[length], result);
+    }
+
+    // 2. Test when we only set the maxResultSize to preflight_length.
+
+    // Set sentinel1 in the buff[preflight_length-1] to check it will be
+    // replaced with display name.
+    buff[preflight_length-1] = sentinel1;
+    // Set sentinel2 in the buff[preflight_length] to check it won't be replaced
+    // by null.
+    buff[preflight_length] = sentinel2;
+    status = U_ZERO_ERROR;
+    length = uloc_getDisplayName(
+        locale, inLocale, buff, preflight_length, &status);
+    result = U_SUCCESS(status) ?
+        aescstrdup(buff, length) : "(undefined when failure)";
+
+    if (length != preflight_length) {
+        log_err("uloc_getDisplayName(%s, %s) w/ maxResultSize=length return "
+                "length %d different from preflight length %d. Returns '%s'\n",
+                locale, inLocale, length, preflight_length, result);
+    }
+    if (U_STRING_NOT_TERMINATED_WARNING != status) {
+        log_err("uloc_getDisplayName(%s, %s) w/ maxResultSize=length should "
+                "set status to U_STRING_NOT_TERMINATED_WARNING but got %d %s. "
+                "Returns %s\n",
+                locale, inLocale, status, myErrorName(status), result);
+    }
+    if (buff[length-1] == sentinel1) {
+        log_err("uloc_getDisplayName(%s, %s) w/ maxResultSize=length does not "
+                "change memory in the end of buffer while it should. Returns "
+                "'%s'\n",
+                locale, inLocale, result);
+    }
+    if (buff[length] != sentinel2) {
+        log_err("uloc_getDisplayName(%s, %s) w/ maxResultSize=length change "
+                "memory beyond maxResultSize to %x. Returns '%s'\n",
+                locale, inLocale, buff[length], result);
+    }
+    if (buff[preflight_length - 1] == 0x0000) {
+        log_err("uloc_getDisplayName(%s, %s) w/ maxResultSize=length null "
+                "terminated while it should not. Return '%s'\n",
+                locale, inLocale, result);
+    }
+
+    // 3. Test when we only set the maxResultSize to preflight_length-1.
+    // Set sentinel1 in the buff[preflight_length-1] to check it will not be
+    // replaced with display name.
+    buff[preflight_length-1] = sentinel1;
+    // Set sentinel2 in the buff[preflight_length] to check it won't be replaced
+    // by null.
+    buff[preflight_length] = sentinel2;
+    status = U_ZERO_ERROR;
+    length = uloc_getDisplayName(
+        locale, inLocale, buff, preflight_length - 1, &status);
+    result = U_SUCCESS(status) ?
+        aescstrdup(buff, length) : "(undefined when failure)";
+
+    if (length != preflight_length) {
+        log_err("uloc_getDisplayName(%s, %s) w/ maxResultSize=length-1 return "
+                "length %d different from preflight length %d. Returns '%s'\n",
+                locale, inLocale, length, preflight_length, result);
+    }
+    if (U_BUFFER_OVERFLOW_ERROR != status) {
+        log_err("uloc_getDisplayName(%s, %s) w/ maxResultSize=length-1 should "
+                "set status to U_BUFFER_OVERFLOW_ERROR but got %d %s. "
+                "Returns %s\n",
+                locale, inLocale, status, myErrorName(status), result);
+    }
+    if (buff[length-1] != sentinel1) {
+        log_err("uloc_getDisplayName(%s, %s) w/ maxResultSize=length-1 should "
+                "not change memory in beyond the maxResultSize. Returns '%s'\n",
+                locale, inLocale, result);
+    }
+    if (buff[length] != sentinel2) {
+        log_err("uloc_getDisplayName(%s, %s) w/ maxResultSize=length-1 change "
+                "memory beyond maxResultSize to %x. Returns '%s'\n",
+                locale, inLocale, buff[length], result);
+    }
+    if (buff[preflight_length - 2] == 0x0000) {
+        log_err("uloc_getDisplayName(%s, %s) w/ maxResultSize=length-1 null "
+                "terminated while it should not. Return '%s'\n",
+                locale, inLocale, result);
+    }
+}
+
+static void Test21157CorrectTerminating(void) {
+    checkTerminating("fr", "fr");
+    checkTerminating("fr_BE", "fr");
+    checkTerminating("fr_Latn_BE", "fr");
+    checkTerminating("fr_Latn", "fr");
+    checkTerminating("fr", "fr");
+    checkTerminating("fr-CN", "fr");
+    checkTerminating("fr-Hant-CN", "fr");
+    checkTerminating("fr-Hant", "fr");
+    checkTerminating("zh-u-co-pinyin", "fr");
 }
 
 #define TEST_UNICODE_DEFINE(x,y) test_unicode_define(#x, (char)(x), #y, (UChar)(y))
@@ -6654,3 +6909,87 @@
         log_err("ERROR: in uloc_forLanguageTag %s return %s\n", myErrorName(status), locale);
     }
 }
+
+static void TestUsingDefaultWarning() {
+    UChar buff[256];
+    char errorOutputBuff[256];
+    UErrorCode status = U_ZERO_ERROR;
+    const char* language = "jJj";
+    int32_t length = uloc_getDisplayLanguage(language, "de", buff, 256, &status);
+    if (status != U_USING_DEFAULT_WARNING ||
+        u_strcmp(buff, u"jjj") != 0 ||
+        length != 3) {
+        u_UCharsToChars(buff, errorOutputBuff, length+1);
+        log_err("ERROR: in uloc_getDisplayLanguage %s return len:%d %s with status %d %s\n",
+                language, length, errorOutputBuff, status, myErrorName(status));
+    }
+
+    status = U_ZERO_ERROR;
+    const char* script = "und-lALA";
+    length = uloc_getDisplayScript(script, "de", buff, 256, &status);
+    if (status != U_USING_DEFAULT_WARNING ||
+        u_strcmp(buff, u"Lala") != 0 ||
+        length != 4) {
+        u_UCharsToChars(buff, errorOutputBuff, length+1);
+        log_err("ERROR: in uloc_getDisplayScript %s return len:%d %s with status %d %s\n",
+                script, length, errorOutputBuff, status, myErrorName(status));
+    }
+
+    status = U_ZERO_ERROR;
+    const char* region = "und-wt";
+    length = uloc_getDisplayCountry(region, "de", buff, 256, &status);
+    if (status != U_USING_DEFAULT_WARNING ||
+        u_strcmp(buff, u"WT") != 0 ||
+        length != 2) {
+        u_UCharsToChars(buff, errorOutputBuff, length+1);
+        log_err("ERROR: in uloc_getDisplayCountry %s return len:%d %s with status %d %s\n",
+                region, length, errorOutputBuff, status, myErrorName(status));
+    }
+
+    status = U_ZERO_ERROR;
+    const char* variant = "und-abcde";
+    length = uloc_getDisplayVariant(variant, "de", buff, 256, &status);
+    if (status != U_USING_DEFAULT_WARNING ||
+        u_strcmp(buff, u"ABCDE") != 0 ||
+        length != 5) {
+        u_UCharsToChars(buff, errorOutputBuff, length+1);
+        log_err("ERROR: in uloc_getDisplayVariant %s return len:%d %s with status %d %s\n",
+                variant, length, errorOutputBuff, status, myErrorName(status));
+    }
+
+    status = U_ZERO_ERROR;
+    const char* keyword = "postCODE";
+    length = uloc_getDisplayKeyword(keyword, "de", buff, 256, &status);
+    if (status != U_USING_DEFAULT_WARNING ||
+        u_strcmp(buff, u"postCODE") != 0 ||
+        length != 8) {
+        u_UCharsToChars(buff, errorOutputBuff, length+1);
+        log_err("ERROR: in uloc_getDisplayKeyword %s return len:%d %s with status %d %s\n",
+                keyword, length, errorOutputBuff, status, myErrorName(status));
+    }
+
+    status = U_ZERO_ERROR;
+    const char* keyword_value = "de_DE@postCode=fOObAR";
+    length = uloc_getDisplayKeywordValue(keyword_value, keyword, "de", buff, 256, &status);
+    if (status != U_USING_DEFAULT_WARNING ||
+        u_strcmp(buff, u"fOObAR") != 0 ||
+        length != 6) {
+        u_UCharsToChars(buff, errorOutputBuff, length+1);
+        log_err("ERROR: in uloc_getDisplayKeywordValue %s %s return len:%d %s with status %d %s\n",
+                keyword_value, keyword, length, errorOutputBuff, status, myErrorName(status));
+      }
+}      
+// Test case for ICU-20575
+// This test checks if the environment variable LANG is set, 
+// and if so ensures that both C and C.UTF-8 cause ICU's default locale to be en_US_POSIX.
+static void TestCDefaultLocale(){
+    const char *defaultLocale = uloc_getDefault();
+    char *env_var = getenv("LANG");
+    if (env_var == NULL) {
+      log_verbose("Skipping TestCDefaultLocale test, as the LANG variable is not set.");
+      return;
+    }
+    if ((strcmp(env_var, "C") == 0 || strcmp(env_var, "C.UTF-8") == 0) && strcmp(defaultLocale, "en_US_POSIX") != 0) {
+      log_err("The default locale for LANG=%s should be en_US_POSIX, not %s\n", env_var, defaultLocale);
+    }
+}
diff --git a/icu4c/source/test/cintltst/cloctst.h b/icu4c/source/test/cintltst/cloctst.h
index be61de1..af7fa5d 100644
--- a/icu4c/source/test/cintltst/cloctst.h
+++ b/icu4c/source/test/cintltst/cloctst.h
@@ -33,6 +33,8 @@
  * Use Locale to access Resource file display names and compare against expected values
  **/
 static  void TestDisplayNames(void);
+static  void TestGetDisplayScriptPreFlighting21160(void);
+
 /**
  * Test getAvailableLocales
  **/
@@ -122,6 +124,11 @@
 static void TestLikelySubtags(void);
 
 /**
+ * test terminate correctly.
+ */
+static void Test21157CorrectTerminating(void);
+
+/**
  * language tag
  */
 static void TestForLanguageTag(void);
@@ -134,6 +141,13 @@
 static void TestToUnicodeLocaleType(void);
 static void TestToLegacyType(void);
 static void TestBug20149(void);
+static void TestCDefaultLocale(void);
+
+
+/**
+ * U_USING_DEFAULT_WARNING
+ */
+static void TestUsingDefaultWarning(void);
 
 /**
  * locale data
diff --git a/icu4c/source/test/cintltst/cmsccoll.c b/icu4c/source/test/cintltst/cmsccoll.c
index bc7a766..9f4dae4 100644
--- a/icu4c/source/test/cintltst/cmsccoll.c
+++ b/icu4c/source/test/cintltst/cmsccoll.c
@@ -3212,7 +3212,7 @@
     }
 
     /*
-U_DRAFT int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_getFunctionalEquivalent(char* result, int32_t resultCapacity,
                              const char* locale, UBool* isAvailable,
                              UErrorCode* status);
diff --git a/icu4c/source/test/cintltst/cnmdptst.c b/icu4c/source/test/cintltst/cnmdptst.c
index a40db7c..99a9ce2 100644
--- a/icu4c/source/test/cintltst/cnmdptst.c
+++ b/icu4c/source/test/cintltst/cnmdptst.c
@@ -419,7 +419,7 @@
     UChar res[100];
     UErrorCode status = U_ZERO_ERROR;
     const char* locale[]={"fr_CA", "de_DE@currency=DEM", "fr_FR@currency=FRF"};
-    const char* result[]={"1,50\\u00a0$", "1,50\\u00a0DM", "1,50\\u00a0F"};
+    const char* result[]={"1,50\\u00a0$\\u00a0CA", "1,50\\u00a0DM", "1,50\\u00a0F"};
     log_verbose("\nTesting the number format with different currency patterns\n");
     for(i=0; i < 3; i++)
     {
diff --git a/icu4c/source/test/cintltst/cpluralrulestest.c b/icu4c/source/test/cintltst/cpluralrulestest.c
index 8db9d1f..e695154 100644
--- a/icu4c/source/test/cintltst/cpluralrulestest.c
+++ b/icu4c/source/test/cintltst/cpluralrulestest.c
@@ -14,6 +14,7 @@
 #include "unicode/ustring.h"
 #include "unicode/uenum.h"
 #include "unicode/unumberformatter.h"
+#include "unicode/unumberrangeformatter.h"
 #include "cintltst.h"
 #include "cmemory.h"
 #include "cstring.h"
@@ -22,6 +23,7 @@
 static void TestOrdinalRules(void);
 static void TestGetKeywords(void);
 static void TestFormatted(void);
+static void TestSelectRange(void);
 
 void addPluralRulesTest(TestNode** root);
 
@@ -33,6 +35,7 @@
     TESTCASE(TestOrdinalRules);
     TESTCASE(TestGetKeywords);
     TESTCASE(TestFormatted);
+    TESTCASE(TestSelectRange);
 }
 
 typedef struct {
@@ -180,7 +183,7 @@
 static const KeywordsForLang getKeywordsItems[] = {
     { "zh", { "other" } },
     { "en", { "one", "other" } },
-    { "fr", { "one", "other" } },
+    { "fr", { "one", "many", "other" } },
     { "lv", { "zero", "one", "other" } },
     { "hr", { "one", "few", "other" } },
     { "sl", { "one", "two", "few", "other" } },
@@ -295,4 +298,56 @@
     unumf_closeResult(uresult);
 }
 
+static void TestSelectRange() {
+    UErrorCode ec = U_ZERO_ERROR;
+    UNumberRangeFormatter* unumrf = NULL;
+    UFormattedNumberRange* uresult = NULL;
+    UPluralRules* uplrules = NULL;
+
+    int32_t d1 = 102;
+    int32_t d2 = 201;
+
+    // Locale sl has interesting data: one + two => few
+    uplrules = uplrules_open("sl", &ec);
+    if (!assertSuccess("open plural rules", &ec)) {
+        goto cleanup;
+    }
+
+    unumrf = unumrf_openForSkeletonWithCollapseAndIdentityFallback(
+        u"",
+        0,
+        UNUM_RANGE_COLLAPSE_AUTO,
+        UNUM_IDENTITY_FALLBACK_APPROXIMATELY,
+        "sl",
+        NULL,
+        &ec);
+    if (!assertSuccess("open unumrf", &ec)) {
+        goto cleanup;
+    }
+
+    uresult = unumrf_openResult(&ec);
+    if (!assertSuccess("open result", &ec)) {
+        goto cleanup;
+    }
+
+    unumrf_formatDoubleRange(unumrf, d1, d2, uresult, &ec);
+    if (!assertSuccess("format", &ec)) {
+        goto cleanup;
+    }
+
+    UChar buffer[40];
+    int32_t len = uplrules_selectForRange(uplrules, uresult, buffer, 40, &ec);
+    if (!assertSuccess("select", &ec)) {
+        goto cleanup;
+    }
+
+    assertUEquals("102-201 is plural category 'few' in sl", u"few", buffer);
+    assertIntEquals("Length should be as expected", u_strlen(buffer), len);
+
+cleanup:
+    uplrules_close(uplrules);
+    unumrf_close(unumrf);
+    unumrf_closeResult(uresult);
+}
+
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/cintltst/crestst.c b/icu4c/source/test/cintltst/crestst.c
index b7af6ea..0803010 100644
--- a/icu4c/source/test/cintltst/crestst.c
+++ b/icu4c/source/test/cintltst/crestst.c
@@ -149,6 +149,15 @@
 
 void TestResourceBundles()
 {
+    // The test expectation only works if the default locale is not one of the
+    // locale bundle in the testdata which have those info. Therefore, we skip
+    // the test if the default locale is te, sh, mc, or them with subtags.
+    if (    uprv_strncmp(uloc_getDefault(), "te", 2) == 0 ||
+            uprv_strncmp(uloc_getDefault(), "sh", 2) == 0 ||
+            uprv_strncmp(uloc_getDefault(), "mc", 2) == 0) {
+        return;
+    }
+
     UErrorCode status = U_ZERO_ERROR;
     loadTestData(&status);
     if(U_FAILURE(status)) {
@@ -595,16 +604,19 @@
     ures_close(casing);
 
     /*
-     * verify that ures_open("ne") finds the root bundle but
-     * ures_openDirect("ne") does not
+     * verify that ures_open("ne") finds the root bundle or default locale
+     * bundle but ures_openDirect("ne") does not.
      */
     errorCode=U_ZERO_ERROR;
     ne=ures_open("testdata", "ne", &errorCode);
     if(U_FAILURE(errorCode)) {
         log_data_err("ures_open(\"ne\") failed (expected to get root): %s\n", u_errorName(errorCode));
     }
-    if(errorCode!=U_USING_DEFAULT_WARNING || 0!=uprv_strcmp("root", ures_getLocale(ne, &errorCode))) {
-        log_err("ures_open(\"ne\") found something other than \"root\" - %s\n", u_errorName(errorCode));
+    if(    errorCode!=U_USING_DEFAULT_WARNING ||
+           (0!=uprv_strcmp("root", ures_getLocale(ne, &errorCode)) &&
+            0!=uprv_strcmp(uloc_getDefault(), ures_getLocale(ne, &errorCode)))) {
+        log_err("ures_open(\"ne\") found something other than \"root\" "
+                "or default locale \"%s\" - %s\n", uloc_getDefault(), u_errorName(errorCode));
     }
     ures_close(ne);
 
diff --git a/icu4c/source/test/cintltst/creststn.c b/icu4c/source/test/cintltst/creststn.c
index 24735b0..79b14a8 100644
--- a/icu4c/source/test/cintltst/creststn.c
+++ b/icu4c/source/test/cintltst/creststn.c
@@ -1509,6 +1509,15 @@
 
 static void TestResourceBundles()
 {
+    // The test expectation only works if the default locale is not one of the
+    // locale bundle in the testdata which have those info. Therefore, we skip
+    // the test if the default locale is te, sh, mc, or them with subtags.
+    if (    uprv_strncmp(uloc_getDefault(), "te", 2) == 0 ||
+            uprv_strncmp(uloc_getDefault(), "sh", 2) == 0 ||
+            uprv_strncmp(uloc_getDefault(), "mc", 2) == 0) {
+        return;
+    }
+
     UErrorCode status = U_ZERO_ERROR;
     loadTestData(&status);
     if(U_FAILURE(status)) {
@@ -1532,6 +1541,15 @@
 
 static void TestConstruction1()
 {
+    // The test expectation only works if the default locale is not one of the
+    // locale bundle in the testdata which have those info. Therefore, we skip
+    // the test if the default locale is te, sh, mc, or them with subtags.
+    if (    uprv_strncmp(uloc_getDefault(), "te", 2) == 0 ||
+            uprv_strncmp(uloc_getDefault(), "sh", 2) == 0 ||
+            uprv_strncmp(uloc_getDefault(), "mc", 2) == 0) {
+        return;
+    }
+
     UResourceBundle *test1 = 0, *test2 = 0,*empty = 0;
     const UChar *result1, *result2;
     UErrorCode status= U_ZERO_ERROR;
@@ -2162,13 +2180,13 @@
         UErrorCode err =U_ZERO_ERROR;
         UResourceBundle* myResB = ures_open(NULL,"no_NO_NY",&err);
         UResourceBundle* resLocID = ures_getByKey(myResB, "Version", NULL, &err);
-        UResourceBundle* tResB;
-        UResourceBundle* zoneResource;
         const UChar* version = NULL;
-        static const UChar versionStr[] = u"37"; // 37 in nn_NO
+        static const UChar versionStr[] = u"38.1"; // 38.1 in nn_NO or in a parent bundle/root
 
-        if(err != U_ZERO_ERROR){
-            log_data_err("Expected U_ZERO_ERROR when trying to test no_NO_NY aliased to nn_NO for Version err=%s\n",u_errorName(err));
+        if(U_FAILURE(err)) {
+            log_data_err("Expected success when trying to test no_NO_NY aliased to nn_NO for Version "
+                         "err=%s\n",
+                         u_errorName(err));
             return;
         }
         version = tres_getString(resLocID, -1, NULL, &resultLen, &err);
@@ -2177,11 +2195,12 @@
             char g[100];
             u_austrcpy(x, versionStr);
             u_austrcpy(g, version);
-            log_data_err("ures_getString(resLocID, &resultLen, &err) returned an unexpected version value. Expected '%s', but got '%s'\n",
-                    x, g);
+            log_data_err("ures_getString(resLocID, &resultLen, &err) returned an unexpected "
+                         "version value. Expected '%s', but got '%s'\n",
+                         x, g);
         }
-        zoneResource = ures_open(U_ICUDATA_ZONE, "no_NO_NY", &err);
-        tResB = ures_getByKey(zoneResource, "zoneStrings", NULL, &err);
+        UResourceBundle* zoneResource = ures_open(U_ICUDATA_ZONE, "no_NO_NY", &err);
+        UResourceBundle* tResB = ures_getByKey(zoneResource, "zoneStrings", NULL, &err);
         if(err != U_USING_FALLBACK_WARNING){
             log_err("Expected U_USING_FALLBACK_ERROR when trying to test no_NO_NY aliased with nn_NO_NY for zoneStrings err=%s\n",u_errorName(err));
         }
diff --git a/icu4c/source/test/cintltst/cstrtest.c b/icu4c/source/test/cintltst/cstrtest.c
index cfc3a3d..985b8ff 100644
--- a/icu4c/source/test/cintltst/cstrtest.c
+++ b/icu4c/source/test/cintltst/cstrtest.c
@@ -387,7 +387,7 @@
 TestInvCharToAscii() {
     for (int32_t i = 0;; ++i) {
         char ic = nativeInvChars[i];
-        uint8_t ac = asciiInvChars[i];
+        uint8_t ac = (uint8_t)asciiInvChars[i];
         uint8_t actual = uprv_invCharToAscii(ic);
         if (actual != ac) {
             log_err("uprv_invCharToAscii('%c') did not convert to ASCII 0x%02x\n", ic, (int)ac);
diff --git a/icu4c/source/test/cintltst/custrtst.c b/icu4c/source/test/cintltst/custrtst.c
index 6d9b067..a1fc7b9 100644
--- a/icu4c/source/test/cintltst/custrtst.c
+++ b/icu4c/source/test/cintltst/custrtst.c
@@ -22,6 +22,7 @@
 #include "unicode/ucnv.h"
 #include "unicode/uiter.h"
 #include "cintltst.h"
+#include "cstring.h"
 #include "cmemory.h"
 #include <string.h>
 
@@ -36,6 +37,7 @@
 static void TestStringSearching(void);
 static void TestSurrogateSearching(void);
 static void TestUnescape(void);
+static void TestUnescapeRepeatedSurrogateLead20725(void);
 static void TestCountChar32(void);
 static void TestUCharIterator(void);
 
@@ -48,6 +50,8 @@
     addTest(root, &TestStringSearching, "tsutil/custrtst/TestStringSearching");
     addTest(root, &TestSurrogateSearching, "tsutil/custrtst/TestSurrogateSearching");
     addTest(root, &TestUnescape, "tsutil/custrtst/TestUnescape");
+    addTest(root, &TestUnescapeRepeatedSurrogateLead20725,
+            "tsutil/custrtst/TestUnescapeRepeatedSurrogateLead20725");
     addTest(root, &TestCountChar32, "tsutil/custrtst/TestCountChar32");
     addTest(root, &TestUCharIterator, "tsutil/custrtst/TestUCharIterator");
 }
@@ -962,6 +966,16 @@
     ) {
         log_err("error: one of the u_str[str etc](\"aba\") incorrectly finds something\n");
     }
+    /* Regression test for ICU-20684 Use-of-uninitialized-value in isMatchAtCPBoundary
+     * Condition: search the same string while the first char is not an
+     * surrogate and the last char is the leading surragte.
+     */
+    {
+        static const UChar s[]={ 0x0020, 0xD9C1 };
+        if (u_strFindFirst(s, 2, s, 2) != s) {
+            log_err("error: ending with a partial supplementary code point should match\n");
+        }
+    }
 }
 
 static void TestStringCopy()
@@ -1114,6 +1128,55 @@
     /* ### TODO: test u_unescapeAt() */
 }
 
+static void
+TestUnescapeRepeatedSurrogateLead20725() {
+    const int32_t repeat = 20000;
+    const int32_t srclen = repeat * 6 + 1;
+    char *src = (char*)malloc(srclen);
+    UChar *dest = (UChar*) malloc(sizeof(UChar) * (repeat + 1));
+    if (src == NULL || dest == NULL) {
+        log_err("memory allocation error");
+    }
+    for (int32_t i = 0; i < repeat; i++) {
+      uprv_strcpy(src + (i * 6), "\\ud841");
+    }
+    int32_t len = u_unescape(src, dest, repeat);
+    if (len != repeat) {
+        log_err("failure in u_unescape()");
+    }
+    for (int32_t i = 0; i < repeat; i++) {
+      if (dest[i] != 0xd841) {
+        log_err("failure in u_unescape() return value");
+      }
+    }
+    free(src);
+
+    // A few simple test cases to make sure that the code recovers properly
+    u_unescape("\\ud841\\x5A", dest, repeat);
+    const UChar expected1[] = {0xd841, 'Z', 0};
+    if (u_strcmp(dest, expected1)!=0) {
+        log_err("u_unescape() should return u\"\\ud841Z\" but got %s", dest);
+    }
+
+    u_unescape("\\ud841\\U00050005", dest, repeat);
+    const UChar expected2[] = {0xd841, 0xd900, 0xdc05, 0};
+    if (u_strcmp(dest, expected2)!=0) {
+        log_err("u_unescape() should return u\"\\ud841\\ud900\\udc05\" "
+                "but got %s", dest);
+    }
+
+    // \\xXX is ill-formed. The documentation states:
+    // If an escape sequence is ill-formed, this method returns an empty string.
+    u_unescape("\\ud841\\xXX", dest, repeat);
+    const UChar expected3[] = { 0 };
+    if (u_strcmp(dest, expected3)!=0) {
+        log_err("u_unescape() should return empty string");
+    }
+
+    free(dest);
+
+}
+
 /* test code point counting functions --------------------------------------- */
 
 /* reference implementation of u_strHasMoreChar32Than() */
diff --git a/icu4c/source/test/cintltst/ucptrietest.c b/icu4c/source/test/cintltst/ucptrietest.c
index 9d2e489..cbeb43d 100644
--- a/icu4c/source/test/cintltst/ucptrietest.c
+++ b/icu4c/source/test/cintltst/ucptrietest.c
@@ -1145,6 +1145,9 @@
     testTrieRanges("set3-initial-9", FALSE,
         setRanges3, UPRV_LENGTHOF(setRanges3),
         checkRanges3, UPRV_LENGTHOF(checkRanges3));
+    testTrieRanges("set3-initial-9-clone", TRUE,
+        setRanges3, UPRV_LENGTHOF(setRanges3),
+        checkRanges3, UPRV_LENGTHOF(checkRanges3));
 }
 
 static void
diff --git a/icu4c/source/test/cintltst/unumberformattertst.c b/icu4c/source/test/cintltst/unumberformattertst.c
index 8919c78..75f1cca 100644
--- a/icu4c/source/test/cintltst/unumberformattertst.c
+++ b/icu4c/source/test/cintltst/unumberformattertst.c
@@ -28,6 +28,8 @@
 
 static void TestSkeletonParseError(void);
 
+static void TestToDecimalNumber(void);
+
 static void TestPerUnitInArabic(void);
 
 void addUNumberFormatterTest(TestNode** root);
@@ -40,6 +42,7 @@
     TESTCASE(TestExampleCode);
     TESTCASE(TestFormattedValue);
     TESTCASE(TestSkeletonParseError);
+    TESTCASE(TestToDecimalNumber);
     TESTCASE(TestPerUnitInArabic);
 }
 
@@ -259,6 +262,35 @@
     unumf_close(uformatter);
 }
 
+
+static void TestToDecimalNumber() {
+    UErrorCode ec = U_ZERO_ERROR;
+    UNumberFormatter* uformatter = unumf_openForSkeletonAndLocale(
+        u"currency/USD",
+        -1,
+        "en-US",
+        &ec);
+    assertSuccessCheck("Should create without error", &ec, TRUE);
+    UFormattedNumber* uresult = unumf_openResult(&ec);
+    assertSuccess("Should create result without error", &ec);
+
+    unumf_formatDouble(uformatter, 3.0, uresult, &ec);
+    const UChar* str = ufmtval_getString(unumf_resultAsValue(uresult, &ec), NULL, &ec);
+    assertSuccessCheck("Formatting should succeed", &ec, TRUE);
+    assertUEquals("Should produce expected string result", u"$3.00", str);
+
+    char buffer[CAPACITY];
+
+    int32_t len = unumf_resultToDecimalNumber(uresult, buffer, CAPACITY, &ec);
+    assertIntEquals("Length should be as expected", strlen(buffer), len);
+    assertEquals("Decimal should be as expected", "3", buffer);
+
+    // cleanup:
+    unumf_closeResult(uresult);
+    unumf_close(uformatter);
+}
+
+
 static void TestPerUnitInArabic() {
     const char* simpleMeasureUnits[] = {
         "area-acre",
@@ -321,7 +353,7 @@
             sprintf(buffer, "measure-unit/%s per-measure-unit/%s",
                     simpleMeasureUnits[i], simpleMeasureUnits[j]);
             int32_t outputlen = 0;
-            u_strFromUTF8(ubuffer, BUFFER_LEN, &outputlen, buffer, strlen(buffer), &status);
+            u_strFromUTF8(ubuffer, BUFFER_LEN, &outputlen, buffer, (int32_t)strlen(buffer), &status);
             if (U_FAILURE(status)) {
                 log_err("FAIL u_strFromUTF8: %s = %s ( %s )\n", locale, buffer,
                         u_errorName(status));
diff --git a/icu4c/source/test/cintltst/unumberrangeformattertst.c b/icu4c/source/test/cintltst/unumberrangeformattertst.c
new file mode 100644
index 0000000..35c21a2
--- /dev/null
+++ b/icu4c/source/test/cintltst/unumberrangeformattertst.c
@@ -0,0 +1,195 @@
+// © 2018 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+// Allow implicit conversion from char16_t* to UnicodeString for this file:
+// Helpful in toString methods and elsewhere.
+#define UNISTR_FROM_STRING_EXPLICIT
+
+#include <stdio.h>
+#include "unicode/unumberformatter.h"
+#include "unicode/unumberrangeformatter.h"
+#include "unicode/umisc.h"
+#include "unicode/unum.h"
+#include "unicode/ustring.h"
+#include "cformtst.h"
+#include "cintltst.h"
+#include "cmemory.h"
+
+static void TestExampleCode(void);
+
+static void TestFormattedValue(void);
+
+static void TestSkeletonParseError(void);
+
+static void TestGetDecimalNumbers(void);
+
+void addUNumberRangeFormatterTest(TestNode** root);
+
+#define TESTCASE(x) addTest(root, &x, "tsformat/unumberrangeformatter/" #x)
+
+void addUNumberRangeFormatterTest(TestNode** root) {
+    TESTCASE(TestExampleCode);
+    TESTCASE(TestFormattedValue);
+    TESTCASE(TestSkeletonParseError);
+    TESTCASE(TestGetDecimalNumbers);
+}
+
+
+#define CAPACITY 30
+
+
+static void TestExampleCode() {
+    // This is the example code given in unumberrangeformatter.h.
+
+    // Setup:
+    UErrorCode ec = U_ZERO_ERROR;
+    UNumberRangeFormatter* uformatter = unumrf_openForSkeletonWithCollapseAndIdentityFallback(
+        u"currency/USD precision-integer",
+        -1,
+        UNUM_RANGE_COLLAPSE_AUTO,
+        UNUM_IDENTITY_FALLBACK_APPROXIMATELY,
+        "en-US",
+        NULL,
+        &ec);
+    UFormattedNumberRange* uresult = unumrf_openResult(&ec);
+    assertSuccessCheck("There should not be a failure in the example code", &ec, TRUE);
+
+    // Format a double range:
+    unumrf_formatDoubleRange(uformatter, 3.0, 5.0, uresult, &ec);
+    assertSuccessCheck("There should not be a failure in the example code", &ec, TRUE);
+
+    // Get the result string:
+    int32_t len;
+    const UChar* str = ufmtval_getString(unumrf_resultAsValue(uresult, &ec), &len, &ec);
+    assertSuccessCheck("There should not be a failure in the example code", &ec, TRUE);
+    assertUEquals("Should produce expected string result", u"$3 – $5", str);
+    int32_t resultLength = str != NULL ? u_strlen(str) : 0;
+    assertIntEquals("Length should be as expected", resultLength, len);
+
+    // Cleanup:
+    unumrf_close(uformatter);
+    unumrf_closeResult(uresult);
+}
+
+
+static void TestFormattedValue() {
+    UErrorCode ec = U_ZERO_ERROR;
+    UNumberRangeFormatter* uformatter = unumrf_openForSkeletonWithCollapseAndIdentityFallback(
+        u"K",
+        -1,
+        UNUM_RANGE_COLLAPSE_AUTO,
+        UNUM_IDENTITY_FALLBACK_APPROXIMATELY,
+        "en-US",
+        NULL,
+        &ec);
+    assertSuccessCheck("Should create without error", &ec, TRUE);
+    UFormattedNumberRange* uresult = unumrf_openResult(&ec);
+    assertSuccess("Should create result without error", &ec);
+
+    // Test the decimal number code path, too
+    unumrf_formatDecimalRange(uformatter, "5.5e4", -1, "1.5e5", -1, uresult, &ec);
+
+    if (assertSuccessCheck("Should format without error", &ec, TRUE)) {
+        const UFormattedValue* fv = unumrf_resultAsValue(uresult, &ec);
+        assertSuccess("Should convert without error", &ec);
+        static const UFieldPosition expectedFieldPositions[] = {
+            // field, begin index, end index
+            {UNUM_INTEGER_FIELD, 0, 2},
+            {UNUM_COMPACT_FIELD, 2, 3},
+            {UNUM_INTEGER_FIELD, 6, 9},
+            {UNUM_COMPACT_FIELD, 9, 10}};
+        checkFormattedValue(
+            "FormattedNumber as FormattedValue",
+            fv,
+            u"55K – 150K",
+            UFIELD_CATEGORY_NUMBER,
+            expectedFieldPositions,
+            UPRV_LENGTHOF(expectedFieldPositions));
+    }
+
+    assertIntEquals("Identity result should match",
+        UNUM_IDENTITY_RESULT_NOT_EQUAL,
+        unumrf_resultGetIdentityResult(uresult, &ec));
+
+    // cleanup:
+    unumrf_closeResult(uresult);
+    unumrf_close(uformatter);
+}
+
+
+static void TestSkeletonParseError() {
+    UErrorCode ec = U_ZERO_ERROR;
+    UNumberRangeFormatter* uformatter;
+    UParseError perror;
+
+    // The UParseError can be null. The following should not segfault.
+    uformatter = unumrf_openForSkeletonWithCollapseAndIdentityFallback(
+        u".00 measure-unit/typo",
+        -1, 
+        UNUM_RANGE_COLLAPSE_AUTO,
+        UNUM_IDENTITY_FALLBACK_APPROXIMATELY,
+        "en",
+        NULL,
+        &ec);
+    unumrf_close(uformatter);
+
+    // Now test the behavior.
+    ec = U_ZERO_ERROR;
+    uformatter = unumrf_openForSkeletonWithCollapseAndIdentityFallback(
+        u".00 measure-unit/typo",
+        -1, 
+        UNUM_RANGE_COLLAPSE_AUTO,
+        UNUM_IDENTITY_FALLBACK_APPROXIMATELY,
+        "en",
+        &perror,
+        &ec);
+
+    assertIntEquals("Should have set error code", U_NUMBER_SKELETON_SYNTAX_ERROR, ec);
+    assertIntEquals("Should have correct skeleton error offset", 17, perror.offset);
+    assertUEquals("Should have correct pre context", u"0 measure-unit/", perror.preContext);
+    assertUEquals("Should have correct post context", u"typo", perror.postContext);
+
+    // cleanup:
+    unumrf_close(uformatter);
+}
+
+
+static void TestGetDecimalNumbers() {
+    UErrorCode ec = U_ZERO_ERROR;
+    UNumberRangeFormatter* uformatter = unumrf_openForSkeletonWithCollapseAndIdentityFallback(
+        u"currency/USD",
+        -1,
+        UNUM_RANGE_COLLAPSE_AUTO,
+        UNUM_IDENTITY_FALLBACK_APPROXIMATELY,
+        "en-US",
+        NULL,
+        &ec);
+    assertSuccessCheck("Should create without error", &ec, TRUE);
+    UFormattedNumberRange* uresult = unumrf_openResult(&ec);
+    assertSuccess("Should create result without error", &ec);
+
+    unumrf_formatDoubleRange(uformatter, 3.0, 5.0, uresult, &ec);
+    const UChar* str = ufmtval_getString(unumrf_resultAsValue(uresult, &ec), NULL, &ec);
+    assertSuccessCheck("Formatting should succeed", &ec, TRUE);
+    assertUEquals("Should produce expected string result", u"$3.00 \u2013 $5.00", str);
+
+    char buffer[CAPACITY];
+
+    int32_t len = unumrf_resultGetFirstDecimalNumber(uresult, buffer, CAPACITY, &ec);
+    assertIntEquals("First len should be as expected", strlen(buffer), len);
+    assertEquals("First decimal should be as expected", "3", buffer);
+
+    len = unumrf_resultGetSecondDecimalNumber(uresult, buffer, CAPACITY, &ec);
+    assertIntEquals("Second len should be as expected", strlen(buffer), len);
+    assertEquals("Second decimal should be as expected", "5", buffer);
+
+    // cleanup:
+    unumrf_closeResult(uresult);
+    unumrf_close(uformatter);
+}
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/cintltst/utf8tst.c b/icu4c/source/test/cintltst/utf8tst.c
index 4884be4..de36615 100644
--- a/icu4c/source/test/cintltst/utf8tst.c
+++ b/icu4c/source/test/cintltst/utf8tst.c
@@ -758,10 +758,12 @@
 }
 
 /**
-* Ticket #13636 - Visual Studio 2017 has problems optimizing this function.
-* As a workaround, we will turn off optimization just for this function on VS2017 and above.
-*/
-#if defined(_MSC_VER) && (_MSC_VER > 1900)
+ * Ticket #13636 - The optimizer in Visual Studio 2017 has problems optimizing this function.
+ * As a work-around, optimization is disabled for this function on VS2017.
+ * This work-around should be removed once the following versions of Visual Studio are no
+ * longer supported: All versions of VS2017, and versions of VS2019 below 16.4.
+ */
+#if defined(_MSC_VER) && (_MSC_VER > 1900) && (_MSC_VER < 1924)
 #pragma optimize( "", off )
 #endif
 
@@ -850,10 +852,8 @@
     }
 }
 
-/**
-* Ticket #13636 - Turn optimization back on.
-*/
-#if defined(_MSC_VER) && (_MSC_VER > 1900)
+// Ticket #13636 - Turn optimization back on.
+#if defined(_MSC_VER) && (_MSC_VER > 1900) && (_MSC_VER < 1924)
 #pragma optimize( "", on )
 #endif
 
diff --git a/icu4c/source/test/depstest/dependencies.txt b/icu4c/source/test/depstest/dependencies.txt
index 022b144..9367f16 100644
--- a/icu4c/source/test/depstest/dependencies.txt
+++ b/icu4c/source/test/depstest/dependencies.txt
@@ -184,7 +184,7 @@
     uinit utypes errorcode
     icuplug
     platform
-    localebuilder localematcher
+    localematcher
 
 group: pluralmap
     # TODO: Move to i18n library, ticket #11926.
@@ -634,6 +634,7 @@
     # Do we need class LocaleBased? https://unicode-org.atlassian.net/browse/ICU-8608
     locbased.o
     loclikely.o
+    localebuilder.o
   deps
     udata ucol_swp
     sort stringenumeration uhash uvector
@@ -641,15 +642,10 @@
     bytesinkutil
     errorcode
 
-group: localebuilder
-    localebuilder.o
-  deps
-    resourcebundle
-
 group: localematcher
     localematcher.o
   deps
-    localebuilder localeprioritylist loclikelysubtags locdistance lsr
+    resourcebundle localeprioritylist loclikelysubtags locdistance lsr
 
 group: localeprioritylist
     localeprioritylist.o
@@ -869,8 +865,9 @@
     dayperiodrules
     listformatter
     formatting formattable_cnv regex regex_cnv translit
-    double_conversion number_representation number_output numberformatter number_skeletons numberparser
-    units_extra
+    double_conversion number_representation number_output numberformatter
+    number_skeletons number_usageprefs numberparser
+    units_extra unitsformatter
     universal_time_scale
     uclean_i18n
 
@@ -946,7 +943,7 @@
 group: listformatter
     listformatter.o ulistformatter.o
   deps
-    uchar resourcebundle simpleformatter format uclean_i18n formatted_value_iterimpl
+    uchar resourcebundle simpleformatter format uclean_i18n formatted_value_sbimpl
 
 group: double_conversion
     double-conversion-bignum.o double-conversion-double-to-string.o
@@ -973,10 +970,10 @@
 group: number_output
     # PluralRules and FormattedNumber
     number_output.o
-    standardplural.o plurrule.o
+    standardplural.o plurrule.o pluralranges.o
   deps
     # FormattedNumber internals:
-    number_representation format formatted_value_sbimpl
+    number_representation format formatted_value_sbimpl units
     # PluralRules internals:
     unifiedcache
 
@@ -987,24 +984,56 @@
     number_decimfmtprops.o
     number_fluent.o number_formatimpl.o
     number_grouping.o number_integerwidth.o number_longnames.o
-    number_mapper.o number_modifiers.o number_multiplier.o
+    number_mapper.o number_modifiers.o
     number_notation.o number_padding.o
-    number_patternmodifier.o number_patternstring.o number_rounding.o
+    number_patternmodifier.o number_patternstring.o
     number_scientific.o
-    currpinf.o dcfmtsym.o numsys.o
+    currpinf.o
     numrange_fluent.o numrange_impl.o
   deps
-    decnumber double_conversion formattable units
-    number_representation number_output
+    decnumber double_conversion formattable units unitsformatter
+    listformatter number_representation number_output
+    numsys
+    number_usageprefs
+    number_rounding
+    number_symbolswrapper
     uclean_i18n common
 
+group: numsys
+    dcfmtsym.o
+    numsys.o
+  deps
+    currency
+    resourcebundle
+    uclean_i18n
+
+group: number_usageprefs
+    number_multiplier.o
+    number_usageprefs.o
+  deps
+    number_rounding
+    number_symbolswrapper
+    unitsformatter
+
+group: number_rounding
+    number_rounding.o
+  deps
+    currency
+    number_representation
+
 group: number_skeletons
     # Number skeleton support; separated from numberformatter
-    number_skeletons.o number_capi.o number_asformat.o
+    number_skeletons.o number_capi.o number_asformat.o numrange_capi.o
   deps
     numberformatter
     units_extra
 
+group: number_symbolswrapper
+    number_symbolswrapper.o
+  deps
+    platform
+    numsys
+
 group: numberparser
     numparse_affixes.o numparse_compositions.o numparse_currency.o
     numparse_decimal.o numparse_impl.o numparse_parsednumber.o
@@ -1056,6 +1085,7 @@
     sharedbreakiterator # for reldatefmt.o
     uclean_i18n
     region
+    formatted_value_iterimpl  # NOTE (2020-08-27): Not currently used.
 
 group: sharedbreakiterator
     sharedbreakiterator.o
@@ -1065,13 +1095,19 @@
 group: units_extra
     measunit_extra.o
   deps
-    units ucharstriebuilder ucharstrie uclean_i18n
+    units bytestriebuilder bytestrie resourcebundle uclean_i18n
 
 group: units
-    measunit.o currunit.o nounit.o
+    measunit.o currunit.o
   deps
     stringenumeration errorcode
 
+group: unitsformatter
+    units_data.o units_converter.o units_complexconverter.o units_router.o
+  deps
+    resourcebundle units_extra double_conversion number_representation formattable sort
+    number_rounding
+
 group: decnumber
     decContext.o decNumber.o
   deps
diff --git a/icu4c/source/test/fuzzer/Makefile.in b/icu4c/source/test/fuzzer/Makefile.in
index 37c609d..259e6b0 100644
--- a/icu4c/source/test/fuzzer/Makefile.in
+++ b/icu4c/source/test/fuzzer/Makefile.in
@@ -73,7 +73,9 @@
 	$(RMV) Makefile
 
 check-local: all-local
-	$(foreach trgt,$(FUZZER_TARGETS), echo $(trgt); $(INVOKE) ./$(trgt) \
+	# Create a dummy test case file with content "abc123"
+	echo "abc123" > dummytestcase
+	$(foreach trgt,$(FUZZER_TARGETS), echo $(trgt); $(INVOKE) ./$(trgt) dummytestcase -q \
             $(TEST_OUTPUT_OPTS) || exit \
             $(IOTEST_OPTS);)
 
diff --git a/icu4c/source/test/fuzzer/fuzzer_driver.cpp b/icu4c/source/test/fuzzer/fuzzer_driver.cpp
index 820ed85..9bffb93 100644
--- a/icu4c/source/test/fuzzer/fuzzer_driver.cpp
+++ b/icu4c/source/test/fuzzer/fuzzer_driver.cpp
@@ -1,8 +1,12 @@
 // © 2019 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
+#include <fstream>
+#include <iostream>
+#include <sstream>
 #include <stddef.h>
 #include <stdint.h>
+#include <string>
 
 #include "cmemory.h"
 
@@ -10,11 +14,45 @@
 
 int main(int argc, char* argv[])
 {
-  (void) argc;
-  (void) argv;
-  const char *fuzzer_data = "abc123";
-   
-  LLVMFuzzerTestOneInput((const uint8_t *) fuzzer_data, strlen(fuzzer_data));
+    bool show_warning = true;
+    bool show_error = true;
+#if UPRV_HAS_FEATURE(address_sanitizer)
+    show_warning = false;
+#endif
+#if UPRV_HAS_FEATURE(memory_sanitizer)
+    show_warning = false;
+#endif
+    if (argc > 2 && strcmp(argv[2], "-q") == 0) {
+        show_warning = false;
+        show_error = false;
+    }
+    if (show_warning) {
+        std::cerr << "WARNING: This binary work only under build configure with" << std::endl
+                  << " CFLAGS=\"-fsanitize=$SANITIZE\""
+                  << " CXXFLAGS=\"-fsanitize=$SANITIZE\""
+                  << " ./runConfigureICU ... " << std::endl
+                  << "  where $SANITIZE is 'address' or 'memory'" << std::endl
+                  << "Plesae run the above step and make tests to rebuild" << std::endl;
+        // Do not return -1 here so we will pass the unit test.
+    }
+    if (argc < 2) {
+        if (show_error) {
+            std::cerr << "Usage: " << argv[0] << "  testcasefile [-q]" << std::endl
+                      << "  -q : quiet while error" << std::endl;
+        }
+        return -1;
+    }
+    const char *path = argv[1];
+    std::ifstream file(path, std::ios::binary);
+    if (!file.is_open()) {
+        if (show_error) {
+            std::cerr << "Cannot open testcase file " << path << std::endl;
+        }
+        return -1;
+    }
+    std::ostringstream ostrm;
+    ostrm << file.rdbuf();
+    LLVMFuzzerTestOneInput((const uint8_t *) ostrm.str().c_str(), ostrm.str().size());
 
-  return 0;
+    return 0;
 }
diff --git a/icu4c/source/test/hdrtst/testinternalheaders.sh b/icu4c/source/test/hdrtst/testinternalheaders.sh
index 5f70bcf..eaad8b1 100755
--- a/icu4c/source/test/hdrtst/testinternalheaders.sh
+++ b/icu4c/source/test/hdrtst/testinternalheaders.sh
@@ -9,27 +9,38 @@
 CC=clang
 CXX=clang++
 
+ERROR_EXIT=0
+
 # Runtime libraries
 
 for file in `ls common/*.h`; do
     echo $file
     echo '#include "'$file'"' > ht_temp.cpp ;
     echo 'void noop() {}' >> ht_temp.cpp ;
-    $CXX -c -std=c++11 -I common -O0 ht_temp.cpp ;
+    $CXX -c -std=c++11 -I common -DU_COMMON_IMPLEMENTATION -O0 ht_temp.cpp ;
+    if [ $? != 0 ] ; then
+        ERROR_EXIT=1
+    fi
 done ;
 
 for file in `ls i18n/*.h`; do
     echo $file
     echo '#include "'$file'"' > ht_temp.cpp ;
     echo 'void noop() {}' >> ht_temp.cpp ;
-    $CXX -c -std=c++11 -I common -I i18n -O0 ht_temp.cpp ;
+    $CXX -c -std=c++11 -I common -I i18n -DU_I18N_IMPLEMENTATION -O0 ht_temp.cpp ;
+    if [ $? != 0 ] ; then
+        ERROR_EXIT=1
+    fi
 done ;
 
 for file in `ls io/*.h`; do
     echo $file
     echo '#include "'$file'"' > ht_temp.cpp ;
     echo 'void noop() {}' >> ht_temp.cpp ;
-    $CXX -c -std=c++11 -I common -I i18n -I io -O0 ht_temp.cpp ;
+    $CXX -c -std=c++11 -I common -I i18n -I io -DU_IO_IMPLEMENTATION -O0 ht_temp.cpp ;
+    if [ $? != 0 ] ; then
+        ERROR_EXIT=1
+    fi
 done ;
 
 # layout is removed.
@@ -51,6 +62,9 @@
     echo '#include "'$file'"' > ht_temp.cpp ;
     echo 'void noop() {}' >> ht_temp.cpp ;
     $CXX -c -std=c++11 -I common -I i18n -I io -I tools/toolutil -O0 ht_temp.cpp ;
+    if [ $? != 0 ] ; then
+        ERROR_EXIT=1
+    fi
 done ;
 
 # Exclude tzcode: tools/tzcode/private.h uses an argument "new" in a function declaration.
@@ -65,6 +79,9 @@
         echo '#include "'$file'"' > ht_temp.cpp ;
         echo 'void noop() {}' >> ht_temp.cpp ;
         $CXX -c -std=c++11 -I common -I i18n -I io -I tools/toolutil -I tools/$tool -O0 ht_temp.cpp ;
+        if [ $? != 0 ] ; then
+            ERROR_EXIT=1
+        fi
     done ;
 done ;
 
@@ -75,6 +92,9 @@
     echo '#include "'$file'"' > ht_temp.cpp ;
     echo 'void noop() {}' >> ht_temp.cpp ;
     $CXX -c -std=c++11 -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -O0 ht_temp.cpp ;
+    if [ $? != 0 ] ; then
+        ERROR_EXIT=1
+    fi
 done ;
 
 # C not C++ for cintltst
@@ -83,6 +103,9 @@
     echo '#include "'$file'"' > ht_temp.c ;
     echo 'void noop() {}' >> ht_temp.c ;
     $CC -c -std=c11 -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -I test/cintltst -O0 ht_temp.c ;
+    if [ $? != 0 ] ; then
+        ERROR_EXIT=1
+    fi
 done ;
 
 for test in intltest iotest testmap thaitest fuzzer; do
@@ -91,6 +114,9 @@
         echo '#include "'$file'"' > ht_temp.cpp ;
         echo 'void noop() {}' >> ht_temp.cpp ;
         $CXX -c -std=c++11 -I common -I i18n -I io -I tools/toolutil -I tools/ctestfw -I test/$test -O0 ht_temp.cpp ;
+        if [ $? != 0 ] ; then
+            ERROR_EXIT=1
+        fi
     done ;
 done ;
 
@@ -106,3 +132,6 @@
 # TODO: perf/*/*.h
 
 rm ht_temp.cpp ht_temp.c ht_temp.o
+
+echo $ERROR_EXIT
+exit $ERROR_EXIT
diff --git a/icu4c/source/test/hdrtst/testtagsguards.sh b/icu4c/source/test/hdrtst/testtagsguards.sh
index 928707c..a432538 100755
--- a/icu4c/source/test/hdrtst/testtagsguards.sh
+++ b/icu4c/source/test/hdrtst/testtagsguards.sh
@@ -1,15 +1,17 @@
+#/usr/bin/env bash
 # Copyright © 2019 and later: Unicode, Inc. and others.
 # License & terms of use: http://www.unicode.org/copyright.html
 
 # Run this script from $ICU_ROOT/icu4c.
-# ~/icu/mine/src/icu4c$ source/test/hdrtest/testtagsguards.sh
+# ~/icu/mine/src/icu4c$ source/test/hdrtst/testtagsguards.sh
 
 # set -x # echo on
 
-DEF=-DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1
-INCL="-Isource/common -Isource/i18n -Isource/io"
-TMPDIR=`mktemp -d`
-DIFF="diff -u --minimal"
+: ${DEF:=-DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1}
+: ${INCL:="-Isource/common -Isource/i18n -Isource/io"}
+: ${TMPDIR:=`mktemp -d`}
+: ${DIFF:="diff -u --minimal"}
+: ${CXX:="clang++"}
 
 echo "*** testtagsguards.sh TMPDIR=$TMPDIR"
 
@@ -18,13 +20,13 @@
     echo $file
     echo '#include "unicode/'$base'"' > $TMPDIR/ht-$base.cpp
     # Preprocess only.
-    clang++ $INCL -C -E $DEF -o $TMPDIR/ht-$base-normal.i $TMPDIR/ht-$base.cpp
+    $CXX $INCL -C -E $DEF -o $TMPDIR/ht-$base-normal.i $TMPDIR/ht-$base.cpp
 
     # When hiding @draft, none should be in the output.
     TAG=draft
     GUARD=DRAFT
     echo "    @$TAG"
-    clang++ $INCL -C -E -DU_HIDE_${GUARD}_API=1 -DU_FORCE_HIDE_${GUARD}_API=1 $DEF -o $TMPDIR/ht-$base-$TAG.i $TMPDIR/ht-$base.cpp
+    $CXX $INCL -C -E -DU_HIDE_${GUARD}_API=1 -DU_FORCE_HIDE_${GUARD}_API=1 $DEF -o $TMPDIR/ht-$base-$TAG.i $TMPDIR/ht-$base.cpp
     if grep "@$TAG" -C 5 $TMPDIR/ht-$base-$TAG.i; then
         echo "*** error: @$TAG not hidden in $TMPDIR/ht-$base-$TAG.i"
         exit 1
@@ -42,7 +44,7 @@
     TAG=deprecated
     GUARD=DEPRECATED
     echo "    @$TAG"
-    clang++ $INCL -C -E -DU_HIDE_${GUARD}_API=1 -DU_FORCE_HIDE_${GUARD}_API=1 $DEF -o $TMPDIR/ht-$base-$TAG.i $TMPDIR/ht-$base.cpp
+    $CXX $INCL -C -E -DU_HIDE_${GUARD}_API=1 -DU_FORCE_HIDE_${GUARD}_API=1 $DEF -o $TMPDIR/ht-$base-$TAG.i $TMPDIR/ht-$base.cpp
     if grep "@$TAG" -C 5 $TMPDIR/ht-$base-$TAG.i; then
         echo "*** error: @$TAG not hidden in $TMPDIR/ht-$base-$TAG.i"
         exit 1
@@ -63,7 +65,7 @@
     TAG=system
     GUARD=SYSTEM
     echo "    @$TAG"
-    clang++ $INCL -C -E -DU_HIDE_${GUARD}_API=1 -DU_FORCE_HIDE_${GUARD}_API=1 $DEF -o $TMPDIR/ht-$base-$TAG.i $TMPDIR/ht-$base.cpp
+    $CXX $INCL -C -E -DU_HIDE_${GUARD}_API=1 -DU_FORCE_HIDE_${GUARD}_API=1 $DEF -o $TMPDIR/ht-$base-$TAG.i $TMPDIR/ht-$base.cpp
     if grep "@$TAG" -C 5 $TMPDIR/ht-$base-$TAG.i; then
         echo "*** error: @$TAG not hidden in $TMPDIR/ht-$base-$TAG.i"
         exit 1
@@ -75,7 +77,7 @@
     TAG=obsolete
     GUARD=OBSOLETE
     echo "    @$TAG"
-    clang++ $INCL -C -E -DU_HIDE_${GUARD}_API=1 -DU_FORCE_HIDE_${GUARD}_API=1 $DEF -o $TMPDIR/ht-$base-$TAG.i $TMPDIR/ht-$base.cpp
+    $CXX $INCL -C -E -DU_HIDE_${GUARD}_API=1 -DU_FORCE_HIDE_${GUARD}_API=1 $DEF -o $TMPDIR/ht-$base-$TAG.i $TMPDIR/ht-$base.cpp
     if grep "@$TAG" -C 5 $TMPDIR/ht-$base-$TAG.i; then
         echo "*** error: @$TAG not hidden in $TMPDIR/ht-$base-$TAG.i"
         exit 1
diff --git a/icu4c/source/test/intltest/Makefile.in b/icu4c/source/test/intltest/Makefile.in
index bcab2c9..13d3ea8 100644
--- a/icu4c/source/test/intltest/Makefile.in
+++ b/icu4c/source/test/intltest/Makefile.in
@@ -68,7 +68,8 @@
 string_segment_test.o \
 numbertest_parse.o numbertest_doubleconversion.o numbertest_skeletons.o \
 static_unisets_test.o numfmtdatadriventest.o numbertest_range.o erarulestest.o \
-formattedvaluetest.o formatted_string_builder_test.o numbertest_permutation.o
+formattedvaluetest.o formatted_string_builder_test.o numbertest_permutation.o \
+units_data_test.o units_router_test.o units_test.o
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/test/intltest/alphaindextst.cpp b/icu4c/source/test/intltest/alphaindextst.cpp
index f1b9b13..a2bea63 100644
--- a/icu4c/source/test/intltest/alphaindextst.cpp
+++ b/icu4c/source/test/intltest/alphaindextst.cpp
@@ -518,7 +518,7 @@
     /* Latvian*/    {"lv", "A:B:C:\\u010C:D:E:F:G:\\u0122:H:I:J:K:\\u0136:L:\\u013B:M:N:\\u0145:O:P:Q:R:S:\\u0160:T:U:V:W:X:Z:\\u017D"},
     /* Norwegian Bokm\\u00E5l*/  {"nb", "A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:\\u00C6:\\u00D8:\\u00C5"},
     /* Dutch*/  {"nl", "A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z"},
-    /* Polish*/ {"pl", "A:\\u0104:B:C:\\u0106:D:E:\\u0118:F:G:H:I:J:K:L:\\u0141:M:N:\\u0143:O:\\u00D3:P:Q:R:S:\\u015A:T:U:V:W:X:Y:Z:\\u0179:\\u017B"},
+    /* Polish*/ {"pl", "A:B:C:\\u0106:D:E:F:G:H:I:J:K:L:\\u0141:M:N:O:\\u00D3:P:Q:R:S:\\u015A:T:U:V:W:X:Y:Z:\\u0179:\\u017B"},
     /* Portuguese*/ {"pt", "A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z"},
     /* Romanian*/   {"ro", "A:\\u0102:\\u00C2:B:C:D:E:F:G:H:I:\\u00CE:J:K:L:M:N:O:P:Q:R:S:\\u0218:T:\\u021A:U:V:W:X:Y:Z"},
     /* Russian*/    {"ru", "\\u0410:\\u0411:\\u0412:\\u0413:\\u0414:\\u0415:\\u0416:\\u0417:\\u0418:\\u0419:\\u041A:\\u041B:\\u041C:\\u041D:\\u041E:\\u041F:\\u0420:\\u0421:\\u0422:\\u0423:\\u0424:\\u0425:\\u0426:\\u0427:\\u0428:\\u0429:\\u042B:\\u042D:\\u042E:\\u042F"},
diff --git a/icu4c/source/test/intltest/caltest.cpp b/icu4c/source/test/intltest/caltest.cpp
index 02a0644..25f5f72 100644
--- a/icu4c/source/test/intltest/caltest.cpp
+++ b/icu4c/source/test/intltest/caltest.cpp
@@ -346,6 +346,13 @@
             TestChineseCalendarMapping();
           }
           break;
+        case 37:
+          name = "TestTimeZoneInLocale";
+          if(exec) {
+            logln("TestTimeZoneInLocale---"); logln("");
+            TestTimeZoneInLocale();
+          }
+          break;
         default: name = ""; break;
     }
 }
@@ -2807,6 +2814,51 @@
   TEST_CHECK_STATUS;
 }
 
+void CalendarTest::TestTimeZoneInLocale(void) {
+    const char *tests[][3]  = {
+        { "en-u-tz-usden",                     "America/Denver",             "gregorian" },
+        { "es-u-tz-usden",                     "America/Denver",             "gregorian" },
+        { "ms-u-tz-mykul",                     "Asia/Kuala_Lumpur",          "gregorian" },
+        { "zh-u-tz-mykul",                     "Asia/Kuala_Lumpur",          "gregorian" },
+        { "fr-u-ca-buddhist-tz-phmnl",         "Asia/Manila",                "buddhist" },
+        { "th-u-ca-chinese-tz-gblon",          "Europe/London",              "chinese" },
+        { "de-u-ca-coptic-tz-ciabj",           "Africa/Abidjan",             "coptic" },
+        { "ja-u-ca-dangi-tz-hkhkg",            "Asia/Hong_Kong",             "dangi" },
+        { "da-u-ca-ethioaa-tz-ruunera",        "Asia/Ust-Nera",              "ethiopic-amete-alem" },
+        { "ko-u-ca-ethiopic-tz-cvrai",         "Atlantic/Cape_Verde",        "ethiopic" },
+        { "fil-u-ca-gregory-tz-aubne",         "Australia/Brisbane",         "gregorian" },
+        { "fa-u-ca-hebrew-tz-brrbr",           "America/Rio_Branco",         "hebrew" },
+        { "gr-u-ca-indian-tz-lccas",           "America/St_Lucia",           "indian" },
+        { "or-u-ca-islamic-tz-cayyn",          "America/Swift_Current",      "islamic" },
+        { "my-u-ca-islamic-umalqura-tz-kzala", "Asia/Almaty",                "islamic-umalqura" },
+        { "lo-u-ca-islamic-tbla-tz-bmbda",     "Atlantic/Bermuda",           "islamic-tbla" },
+        { "km-u-ca-islamic-civil-tz-aqplm",    "Antarctica/Palmer",          "islamic-civil" },
+        { "kk-u-ca-islamic-rgsa-tz-usanc",     "America/Anchorage",          "islamic" },
+        { "ar-u-ca-iso8601-tz-bjptn",          "Africa/Porto-Novo",          "gregorian" },
+        { "he-u-ca-japanese-tz-tzdar",         "Africa/Dar_es_Salaam",       "japanese" },
+        { "bs-u-ca-persian-tz-etadd",          "Africa/Addis_Ababa",         "persian" },
+        { "it-u-ca-roc-tz-aruaq",              "America/Argentina/San_Juan", "roc" },
+    };
+
+    for (int32_t i = 0; i < UPRV_LENGTHOF(tests); ++i) {
+        UErrorCode status = U_ZERO_ERROR;
+        const char **testLine = tests[i];
+        Locale locale(testLine[0]);
+        UnicodeString expected(testLine[1], -1, US_INV);
+        UnicodeString actual;
+
+        LocalPointer<Calendar> calendar(
+                Calendar::createInstance(locale, status));
+        if (failure(status, "Calendar::createInstance", TRUE)) continue;
+
+        assertEquals("TimeZone from Calendar::createInstance",
+                     expected, calendar->getTimeZone().getID(actual));
+
+        assertEquals("Calendar Type from Calendar::createInstance",
+                     testLine[2], calendar->getType());
+    }
+}
+
 void CalendarTest::setAndTestCalendar(Calendar* cal, int32_t initMonth, int32_t initDay, int32_t initYear, UErrorCode& status) {
         cal->clear();
         cal->setLenient(FALSE);
diff --git a/icu4c/source/test/intltest/caltest.h b/icu4c/source/test/intltest/caltest.h
index f85abf9..a3d9e13 100644
--- a/icu4c/source/test/intltest/caltest.h
+++ b/icu4c/source/test/intltest/caltest.h
@@ -242,6 +242,8 @@
 
     void TestCloneLocale(void);
 
+    void TestTimeZoneInLocale(void);
+
     void TestHebrewMonthValidation(void);
 
     /*
diff --git a/icu4c/source/test/intltest/colldata.cpp b/icu4c/source/test/intltest/colldata.cpp
index 1e37c47..c3a6d8a 100644
--- a/icu4c/source/test/intltest/colldata.cpp
+++ b/icu4c/source/test/intltest/colldata.cpp
@@ -22,6 +22,7 @@
 
 #include "unicode/regex.h"        // TODO: make conditional on regexp being built.
 
+#include "unicode/testlog.h"
 #include "unicode/uniset.h"
 #include "unicode/uset.h"
 #include "unicode/usetiter.h"
diff --git a/icu4c/source/test/intltest/convtest.cpp b/icu4c/source/test/intltest/convtest.cpp
index 53cdc0e..cdc4ec5 100644
--- a/icu4c/source/test/intltest/convtest.cpp
+++ b/icu4c/source/test/intltest/convtest.cpp
@@ -77,6 +77,7 @@
     TESTCASE_AUTO(TestGetUnicodeSet2);
     TESTCASE_AUTO(TestDefaultIgnorableCallback);
     TESTCASE_AUTO(TestUTF8ToUTF8Overflow);
+    TESTCASE_AUTO(TestUTF8ToUTF8Streaming);
     TESTCASE_AUTO_END;
 }
 
@@ -857,6 +858,65 @@
     }
 }
 
+void
+ConversionTest::TestUTF8ToUTF8Streaming() {
+    IcuTestErrorCode errorCode(*this, "TestUTF8ToUTF8Streaming");
+    LocalUConverterPointer cnv1(ucnv_open("UTF-8", errorCode));
+    LocalUConverterPointer cnv2(ucnv_open("UTF-8", errorCode));
+
+    // UTF8 encoded cyrillic part of 'Lorem ipsum'
+    static const char* text =
+        "\xd0\xb5\xd1\x82\x20\xd1\x81\xd1\x86\xd0\xb0\xd0\xb5\xd0\xb2\xd0"
+        "\xbe\xd0\xbb\xd0\xb0\x20\xd1\x81\xd0\xb0\xd0\xb4\xd0\xb8\xd0\xbf"
+        "\xd1\x81\xd1\x86\xd0\xb8\xd0\xbd\xd0\xb3\x20\xd0\xb0\xd1\x86\xd1"
+        "\x86\xd0\xbe\xd0\xbc\xd0\xbc\xd0\xbe\xd0\xb4\xd0\xb0\xd1\x80\xd0"
+        "\xb5\x20\xd1\x85\xd0\xb0\xd1\x81";
+
+    int32_t chunk1 = 25; // partial lead at the end: 0xd0
+    int32_t chunk2 = 47; // partial tail at the beginning: 0xb0
+
+    char result[128];
+
+    int32_t sourceLen = (int32_t)strlen(text);
+    const char* source = text;
+    const char* sourceLimit = text + chunk1;
+
+    int32_t targetLen = sizeof(result);
+    char* target = result;
+    const char* targetLimit = result + targetLen;
+
+    UChar buffer16[20];
+    UChar* pivotSource = buffer16;
+    UChar* pivotTarget = buffer16;
+    const UChar* pivotLimit = buffer16 + UPRV_LENGTHOF(buffer16);
+
+    int32_t length;
+    ucnv_convertEx(cnv2.getAlias(), cnv1.getAlias(),
+        &target, result + targetLen, &source, sourceLimit,
+        buffer16, &pivotSource, &pivotTarget, pivotLimit,
+        FALSE, FALSE, errorCode);
+
+    length = (int32_t)(target - result);
+    targetLen -= length;
+    assertEquals("First chunk -1 doesn't match converted length", chunk1 - 1, length);
+
+    source = text + chunk1;
+    sourceLimit = source + chunk2;
+
+    // Convert the rest and flush.
+    ucnv_convertEx(cnv2.getAlias(), cnv1.getAlias(),
+        &target, targetLimit, &source, sourceLimit,
+        buffer16, &pivotSource, &pivotTarget, pivotLimit,
+        FALSE, TRUE, errorCode);
+
+    length = (int32_t)(target - result - length);
+    targetLen -= length;
+    assertEquals("Second chunk + 2 doesn't  match converted length", chunk2 + 1, length);
+
+    assertEquals("Full text length match", sourceLen, sizeof(result) - targetLen);
+    assertSuccess("UTF-8->UTF-8", errorCode);
+}
+
 // open testdata or ICU data converter ------------------------------------- ***
 
 UConverter *
diff --git a/icu4c/source/test/intltest/convtest.h b/icu4c/source/test/intltest/convtest.h
index 84a3a89..dda10cb 100644
--- a/icu4c/source/test/intltest/convtest.h
+++ b/icu4c/source/test/intltest/convtest.h
@@ -77,6 +77,7 @@
     void TestGetUnicodeSet2();
     void TestDefaultIgnorableCallback();
     void TestUTF8ToUTF8Overflow();
+    void TestUTF8ToUTF8Streaming();
 
 private:
     UBool
diff --git a/icu4c/source/test/intltest/dtfmttst.cpp b/icu4c/source/test/intltest/dtfmttst.cpp
index 2fcd8c4..ebb706e 100644
--- a/icu4c/source/test/intltest/dtfmttst.cpp
+++ b/icu4c/source/test/intltest/dtfmttst.cpp
@@ -88,6 +88,7 @@
     TESTCASE_AUTO(TestHebrewClone);
     TESTCASE_AUTO(TestDateFormatSymbolsClone);
     TESTCASE_AUTO(TestTimeZoneDisplayName);
+    TESTCASE_AUTO(TestTimeZoneInLocale);
     TESTCASE_AUTO(TestRoundtripWithCalendar);
     TESTCASE_AUTO(Test6338);
     TESTCASE_AUTO(Test6726);
@@ -2857,13 +2858,13 @@
         { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" },
         { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
         { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+5:30", "+5:30" },
-        { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "Indische Zeit", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "Indische Normalzeit", "+5:30" },
         { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" },
         { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
         { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+5:30", "+05:30" },
-        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "Indische Zeit", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "Indische Normalzeit", "+5:30" },
         { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "Indien Zeit", "Asia/Calcutta" },
-        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "Indische Zeit", "Asia/Calcutta" },
+        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "Indische Normalzeit", "Asia/Calcutta" },
 
         // ==========
 
@@ -3359,7 +3360,7 @@
         { "ti", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" },
         { "ti", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" },
         { "ti", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+1", "+1:00" },
-        { "ti", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" },
+        { "ti", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "British Summer Time", "+1:00" },
         { "ti", "Europe/London", "2004-07-15T00:00:00Z", "v", "\\u12A5\\u1295\\u130D\\u120A\\u12DD", "Europe/London" },
         { "ti", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\\u12A5\\u1295\\u130D\\u120A\\u12DD", "Europe/London" },
 
@@ -3442,6 +3443,82 @@
     }
 }
 
+void DateFormatTest::TestTimeZoneInLocale()
+{
+    const char *tests[][3]  = {
+        { "en-u-tz-usden",                     "America/Denver",             "gregorian" },
+        { "es-u-tz-usden",                     "America/Denver",             "gregorian" },
+        { "ms-u-tz-mykul",                     "Asia/Kuala_Lumpur",          "gregorian" },
+        { "zh-u-tz-mykul",                     "Asia/Kuala_Lumpur",          "gregorian" },
+        { "fr-u-ca-buddhist-tz-phmnl",         "Asia/Manila",                "buddhist" },
+        { "th-u-ca-chinese-tz-gblon",          "Europe/London",              "chinese" },
+        { "de-u-ca-coptic-tz-ciabj",           "Africa/Abidjan",             "coptic" },
+        { "ja-u-ca-dangi-tz-hkhkg",            "Asia/Hong_Kong",             "dangi" },
+        { "da-u-ca-ethioaa-tz-ruunera",        "Asia/Ust-Nera",              "ethiopic-amete-alem" },
+        { "ko-u-ca-ethiopic-tz-cvrai",         "Atlantic/Cape_Verde",        "ethiopic" },
+        { "fil-u-ca-gregory-tz-aubne",         "Australia/Brisbane",         "gregorian" },
+        { "fa-u-ca-hebrew-tz-brrbr",           "America/Rio_Branco",         "hebrew" },
+        { "gr-u-ca-indian-tz-lccas",           "America/St_Lucia",           "indian" },
+        { "or-u-ca-islamic-tz-cayyn",          "America/Swift_Current",      "islamic" },
+        { "my-u-ca-islamic-umalqura-tz-kzala", "Asia/Almaty",                "islamic-umalqura" },
+        { "lo-u-ca-islamic-tbla-tz-bmbda",     "Atlantic/Bermuda",           "islamic-tbla" },
+        { "km-u-ca-islamic-civil-tz-aqplm",    "Antarctica/Palmer",          "islamic-civil" },
+        { "kk-u-ca-islamic-rgsa-tz-usanc",     "America/Anchorage",          "islamic" },
+        { "ar-u-ca-iso8601-tz-bjptn",          "Africa/Porto-Novo",          "gregorian" },
+        { "he-u-ca-japanese-tz-tzdar",         "Africa/Dar_es_Salaam",       "japanese" },
+        { "bs-u-ca-persian-tz-etadd",          "Africa/Addis_Ababa",         "persian" },
+        { "it-u-ca-roc-tz-aruaq",              "America/Argentina/San_Juan", "roc" },
+    };
+
+    for (int32_t i = 0; i < UPRV_LENGTHOF(tests); ++i) {
+        UErrorCode status = U_ZERO_ERROR;
+        const char **testLine = tests[i];
+        Locale locale(testLine[0]);
+        UnicodeString expectedTimezone(testLine[1], -1, US_INV);
+        UnicodeString actual;
+
+        SimpleDateFormat smptfmt("Z", locale, status);
+        ASSERT_OK(status);
+        assertEquals("TimeZone from SimpleDateFormat constructor",
+                     expectedTimezone, smptfmt.getTimeZone().getID(actual));
+        assertEquals("Calendar from SimpleDateFormat constructor",
+                     testLine[2], smptfmt.getCalendar()->getType());
+
+        LocalPointer<DateFormat> datefmt(
+                DateFormat::createDateInstance(DateFormat::kDefault, locale));
+        if (datefmt == nullptr) {
+            dataerrln("Error calling DateFormat::createDateInstance()");
+            return;
+        }
+        assertEquals("TimeZone from DateFormat::createDateInstance",
+                     expectedTimezone, datefmt->getTimeZone().getID(actual));
+        assertEquals("Calendar from DateFormat::createDateInstance",
+                     testLine[2], datefmt->getCalendar()->getType());
+        LocalPointer<DateFormat> timefmt(
+                DateFormat::createTimeInstance(DateFormat::kDefault, locale));
+        if (timefmt == nullptr) {
+            dataerrln("Error calling DateFormat::createTimeInstance()");
+            return;
+        }
+        assertEquals("TimeZone from TimeFormat::createTimeInstance",
+                     expectedTimezone, timefmt->getTimeZone().getID(actual));
+        assertEquals("Calendar from DateFormat::createTimeInstance",
+                     testLine[2], timefmt->getCalendar()->getType());
+
+        LocalPointer<DateFormat> datetimefmt(
+                DateFormat::createDateTimeInstance(
+                    DateFormat::kDefault, DateFormat::kDefault, locale));
+        if (datetimefmt == nullptr) {
+            dataerrln("Error calling DateFormat::createDateTimeInstance()");
+            return;
+        }
+        assertEquals("TimeZone from DateTimeFormat::createDateTimeInstance",
+                     expectedTimezone, datetimefmt->getTimeZone().getID(actual));
+        assertEquals("Calendar from DateFormat::createDateTimeInstance",
+                     testLine[2], datetimefmt->getCalendar()->getType());
+    }
+}
+
 void DateFormatTest::TestRoundtripWithCalendar(void) {
     UErrorCode status = U_ZERO_ERROR;
 
@@ -5576,14 +5653,19 @@
     UErrorCode status = U_ZERO_ERROR;
     // This test relies on the locale fullName exceeding ULOC_FULLNAME_CAPACITY
     // in order for setKeywordValue to fail.
+    Calendar* cal = Calendar::createInstance(status);
+    ASSERT_OK(status);
     SimpleDateFormat sdf(
         "d.M.y",
         Locale("de__POSIX@colstrength=primary;currency=eur;em=default;"
                "hours=h23;lb=strict;lw=normal;measure=metric;numbers=latn;"
                "rg=atzzzz;sd=atat1;ss=none;timezone=Europe/Vienna"),
         status);
-    ASSERT_OK(status);
-    sdf.adoptCalendar(Calendar::createInstance(status));
+    // ASSERT_OK(status); Please do NOT add ASSERT_OK here. The point of this
+    // test is to ensure sdf.adoptCalendar won't leak AFTER the above FAILED.
+    // If the following caused crash we should fix the implementation not change
+    // this test.
+    sdf.adoptCalendar(cal);
 }
 
 /**
diff --git a/icu4c/source/test/intltest/dtfmttst.h b/icu4c/source/test/intltest/dtfmttst.h
index ac36919..eef0d22 100644
--- a/icu4c/source/test/intltest/dtfmttst.h
+++ b/icu4c/source/test/intltest/dtfmttst.h
@@ -226,6 +226,8 @@
 
     void TestTimeZoneDisplayName(void);
 
+    void TestTimeZoneInLocale(void);
+
     void TestRoundtripWithCalendar(void);
 
 public:
diff --git a/icu4c/source/test/intltest/dtifmtts.cpp b/icu4c/source/test/intltest/dtifmtts.cpp
index da271a2..ea077df 100644
--- a/icu4c/source/test/intltest/dtifmtts.cpp
+++ b/icu4c/source/test/intltest/dtifmtts.cpp
@@ -60,6 +60,8 @@
         TESTCASE(11, testCreateInstanceForAllLocales);
         TESTCASE(12, testTicket20707);
         TESTCASE(13, testFormatMillisecond);
+        TESTCASE(14, testHourMetacharacters);
+        TESTCASE(15, testContext);
         default: name = ""; break;
     }
 }
@@ -833,7 +835,7 @@
         "zh", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "MMMMy", "2007\\u5e7410\\u6708\\u81f311\\u6708",
 
 
-        "zh", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "hmv", "2007/10/10 \\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10 \\u2013 2007/11/10 \\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10",
+        "zh", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "hmv", "2007/10/10\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10 \\u2013 2007/11/10\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10",
 
         "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EEEEdMMMMy", "2007\\u5e7411\\u670810\\u65e5\\u661f\\u671f\\u516d\\u81f320\\u65e5\\u661f\\u671f\\u4e8c",
 
@@ -862,24 +864,24 @@
         "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "MMM", "11\\u6708", // (fixed expected result per ticket:6626: and others)
 
 
-        "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "hmz", "2007/11/10 GMT-8 \\u4e0a\\u534810:10 \\u2013 2007/11/20 GMT-8 \\u4e0a\\u534810:10",
+        "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "hmz", "2007/11/10GMT-8 \\u4e0a\\u534810:10 \\u2013 2007/11/20GMT-8 \\u4e0a\\u534810:10",
 
-        "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "h", "2007/11/10 \\u4e0a\\u534810\\u65f6 \\u2013 2007/11/20 \\u4e0a\\u534810\\u65f6",
+        "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "h", "2007/11/10\\u4e0a\\u534810\\u65f6 \\u2013 2007/11/20\\u4e0a\\u534810\\u65f6",
 
         "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "EEEEdMMMMy", "2007\\u5e741\\u670810\\u65e5\\u661f\\u671f\\u4e09", // (fixed expected result per ticket:6626:)
 
         "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hm", "\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10",
 
 
-        "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hmz", "GMT-8\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10",
+        "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hmz", "GMT-8 \\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10",
 
         "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "h", "\\u4e0a\\u534810\\u65F6\\u81f3\\u4e0b\\u53482\\u65f6",
 
-        "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4\\u4E0A\\u534810\\u65F6\\u81F3\\u4E0B\\u53482\\u65F6",
+        "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810\\u65F6\\u81F3\\u4E0B\\u53482\\u65F6",
 
         "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hm", "\\u4e0a\\u534810:00\\u81f310:20",
 
-        "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hmv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4\\u4E0A\\u534810:00\\u81F310:20",
+        "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hmv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:00\\u81F310:20",
 
         "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hz", "GMT-8\\u4e0a\\u534810\\u65f6",
 
@@ -1085,6 +1087,102 @@
 }
 
 
+/**
+ * Test handling of hour and day period metacharacters
+ */
+void DateIntervalFormatTest::testHourMetacharacters() {
+    // first item is date pattern
+    // followed by a group of locale/from_data/to_data/skeleton/interval_data
+    // Note that from_data/to_data are specified using era names from root, for the calendar specified by locale.
+    const char* DATA[] = {
+        "GGGGG y MM dd HH:mm:ss", // pattern for from_data/to_data
+        
+        // This test is for tickets ICU-21154, ICU-21155, and ICU-21156 and is intended to verify
+        // that all of the special skeleton characters for hours and day periods work as expected
+        // with date intervals:
+        // - If a, b, or B is included in the skeleton, it correctly sets the length of the day-period field
+        // - If k or K is included, it behaves the same as H or h, except for the difference in the actual
+        //   number used for the hour.
+        // - If j is included, it behaves the same as either h or H as appropriate, and multiple j's have the
+        //   intended effect on the length of the day period field (if there is one)
+        // - If J is included, it correctly suppresses the day period field if j would include it
+        // - If C is included, it behaves the same as j and brings up the correct day period field
+        // - In all cases, if the day period of both ends of the range is the same, you only see it once
+
+        // baseline (h and H)
+        "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "hh", "12 \\u2013 1 AM",
+        "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "HH", "00\\u201301 Uhr",
+        
+        // k and K (ICU-21154 and ICU-21156)
+        "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "KK", "0 \\u2013 1 AM",
+        "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "kk", "24\\u201301 Uhr",
+
+        // different lengths of the 'a' field
+        "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "ha", "10 AM \\u2013 1 PM",
+        "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "ha", "12 \\u2013 1 AM",
+        "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 12:00:00", "haaaaa", "10 a \\u2013 12 p",
+        "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "haaaaa", "12 \\u2013 1 a",
+        
+        // j (ICU-21155)
+        "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jj", "10 AM \\u2013 1 PM",
+        "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jj", "12 \\u2013 1 AM",
+        "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jjjjj", "10 a \\u2013 1 p",
+        "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jjjjj", "12 \\u2013 1 a",
+        "de", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jj", "10\\u201313 Uhr",
+        "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jj", "00\\u201301 Uhr",
+        "de", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jjjjj", "10\\u201313 Uhr",
+        "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jjjjj", "00\\u201301 Uhr",
+        
+        // b and B
+        "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 12:00:00", "hb", "10 AM \\u2013 12 noon",
+        "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 12:00:00", "hbbbbb", "10 a \\u2013 12 n",
+        "en", "CE 2010 09 27 13:00:00", "CE 2010 09 27 14:00:00", "hb", "1 \\u2013 2 PM",
+        "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "hB", "10 in the morning \\u2013 1 in the afternoon",
+        "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "hB", "12 \\u2013 1 at night",
+        
+        // J
+        "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "J", "10 \\u2013 1",
+        "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "J", "12 \\u2013 1",
+        "de", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "J", "10\\u201313 Uhr",
+        "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "J", "00\\u201301 Uhr",
+        
+        // C
+        // (for English and German, C should do the same thing as j)
+        "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CC", "10 AM \\u2013 1 PM",
+        "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CC", "12 \\u2013 1 AM",
+        "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CCCCC", "10 a \\u2013 1 p",
+        "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CCCCC", "12 \\u2013 1 a",
+        "de", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CC", "10\\u201313 Uhr",
+        "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CC", "00\\u201301 Uhr",
+        "de", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CCCCC", "10\\u201313 Uhr",
+        "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CCCCC", "00\\u201301 Uhr",
+        // (for zh_HK and hi_IN, j maps to ha, but C maps to hB)
+        "zh_HK", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jj", "\\u4E0A\\u534810\\u6642\\u81F3\\u4E0B\\u53481\\u6642",
+        "zh_HK", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jj", "\\u4E0A\\u534812\\u6642\\u81F31\\u6642",
+        "zh_HK", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "hB", "\\u4E0A\\u534810\\u6642 \\u2013 \\u4E0B\\u53481\\u6642",
+        "zh_HK", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "hB", "\\u51CC\\u666812\\u20131\\u6642",
+        "zh_HK", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CC", "\\u4E0A\\u534810\\u6642 \\u2013 \\u4E0B\\u53481\\u6642",
+        "zh_HK", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CC", "\\u51CC\\u666812\\u20131\\u6642",
+        "hi_IN", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jj", "10 am \\u2013 1 pm",
+        "hi_IN", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jj", "12\\u20131 am",
+        "hi_IN", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "hB", "\\u0938\\u0941\\u092C\\u0939 10 \\u2013 \\u0926\\u094B\\u092A\\u0939\\u0930 1",
+        "hi_IN", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "hB", "\\u0930\\u093E\\u0924 12\\u20131",
+        "hi_IN", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CC", "\\u0938\\u0941\\u092C\\u0939 10 \\u2013 \\u0926\\u094B\\u092A\\u0939\\u0930 1",
+        "hi_IN", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CC", "\\u0930\\u093E\\u0924 12\\u20131",
+
+         // regression test for ICU-21342
+         "en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 10:00:00", "kk", "24\\u201310",
+         "en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 11:00:00", "kk", "24\\u201311",
+         "en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 12:00:00", "kk", "24\\u201312",
+         "en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 13:00:00", "kk", "24\\u201313",
+
+         // regression test for ICU-21343
+         "de", "CE 2010 09 27 01:00:00", "CE 2010 09 27 10:00:00", "KK", "1 \\u2013 10 Uhr AM",
+    };
+    expect(DATA, UPRV_LENGTHOF(DATA));
+}
+
+
 void DateIntervalFormatTest::expect(const char** data, int32_t data_length) {
     int32_t i = 0;
     UErrorCode ec = U_ZERO_ERROR;
@@ -1181,21 +1279,100 @@
         "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "10. Jan. 2007",
 
 
-        "es", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "10 oct. 2007 --- 10 oct. 2008",
+        "es", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "10 oct 2007 --- 10 oct 2008",
 
-        "es", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 oct. 10 - nov. 2007",
+        "es", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 oct 10 - nov 2007",
 
-        "es", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "10 nov. 2007 --- 20 nov. 2007",
+        "es", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "10 nov 2007 --- 20 nov 2007",
 
-        "es", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "10 ene. 2007",
+        "es", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "10 ene 2007",
 
-        "es", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "10 ene. 2007",
+        "es", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "10 ene 2007",
 
-        "es", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "10 ene. 2007",
+        "es", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "10 ene 2007",
     };
     expectUserDII(DATA, UPRV_LENGTHOF(DATA));
 }
 
+/*
+ * Test format using UDisplayContext
+ */
+#define CAP_NONE  UDISPCTX_CAPITALIZATION_NONE
+#define CAP_BEGIN UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE
+#define CAP_LIST  UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU
+#define CAP_ALONE UDISPCTX_CAPITALIZATION_FOR_STANDALONE
+#define _DAY    (24.0*60.0*60.0*1000.0)
+
+void DateIntervalFormatTest::testContext() {
+    static const UDate startDate = 1285599629000.0; // 2010-Sep-27 0800 in America/Los_Angeles
+    typedef struct {
+        const char * locale;
+        const char * skeleton;
+        UDisplayContext context;
+        const UDate  deltaDate;
+        const UChar* expectResult;
+    } DateIntervalContextItem;
+    static const DateIntervalContextItem testItems[] = {
+        { "cs",    "MMMEd",    CAP_NONE,  60.0*_DAY,  u"po 27. 9. – pá 26. 11." },
+        { "cs",    "yMMMM",    CAP_NONE,  60.0*_DAY,  u"září–listopad 2010" },
+        { "cs",    "yMMMM",    CAP_NONE,  1.0*_DAY,   u"září 2010" },
+#if !UCONFIG_NO_BREAK_ITERATION
+        { "cs",    "MMMEd",    CAP_BEGIN, 60.0*_DAY,  u"Po 27. 9. – pá 26. 11." },
+        { "cs",    "yMMMM",    CAP_BEGIN, 60.0*_DAY,  u"Září–listopad 2010" },
+        { "cs",    "yMMMM",    CAP_BEGIN, 1.0*_DAY,   u"Září 2010" },
+        { "cs",    "MMMEd",    CAP_LIST,  60.0*_DAY,  u"Po 27. 9. – pá 26. 11." },
+        { "cs",    "yMMMM",    CAP_LIST,  60.0*_DAY,  u"Září–listopad 2010" },
+        { "cs",    "yMMMM",    CAP_LIST,  1.0*_DAY,   u"Září 2010" },
+#endif
+        { "cs",    "MMMEd",    CAP_ALONE, 60.0*_DAY,  u"po 27. 9. – pá 26. 11." },
+        { "cs",    "yMMMM",    CAP_ALONE, 60.0*_DAY,  u"září–listopad 2010" },
+        { "cs",    "yMMMM",    CAP_ALONE, 1.0*_DAY,   u"září 2010" },
+        { nullptr, nullptr,    CAP_NONE,  0,          nullptr }
+    };
+    const DateIntervalContextItem* testItemPtr;
+    for ( testItemPtr = testItems; testItemPtr->locale != nullptr; ++testItemPtr ) {
+        UErrorCode status = U_ZERO_ERROR;
+        Locale locale(testItemPtr->locale);
+        UnicodeString skeleton(testItemPtr->skeleton, -1, US_INV);
+        LocalPointer<DateIntervalFormat> fmt(DateIntervalFormat::createInstance(skeleton, locale, status));
+        if (U_FAILURE(status)) {
+            errln("createInstance failed for locale %s skeleton %s: %s",
+                    testItemPtr->locale, testItemPtr->skeleton, u_errorName(status));
+            continue;
+        }
+        fmt->adoptTimeZone(TimeZone::createTimeZone("America/Los_Angeles"));
+
+        fmt->setContext(testItemPtr->context, status);
+        if (U_FAILURE(status)) {
+            errln("setContext failed for locale %s skeleton %s context %04X: %s",
+                    testItemPtr->locale, testItemPtr->skeleton, (unsigned)testItemPtr->context, u_errorName(status));
+        } else {
+            UDisplayContext getContext = fmt->getContext(UDISPCTX_TYPE_CAPITALIZATION, status);
+            if (U_FAILURE(status)) {
+                errln("getContext failed for locale %s skeleton %s context %04X: %s",
+                        testItemPtr->locale, testItemPtr->skeleton, (unsigned)testItemPtr->context, u_errorName(status));
+            } else if (getContext != testItemPtr->context) {
+                errln("getContext failed for locale %s skeleton %s context %04X: got context %04X",
+                        testItemPtr->locale, testItemPtr->skeleton, (unsigned)testItemPtr->context, (unsigned)getContext);
+            }
+        }
+
+        status = U_ZERO_ERROR;
+        DateInterval interval(startDate, startDate + testItemPtr->deltaDate);
+        UnicodeString getResult;
+        FieldPosition pos(FieldPosition::DONT_CARE);
+        fmt->format(&interval, getResult, pos, status);
+        if (U_FAILURE(status)) {
+            errln("format failed for locale %s skeleton %s context %04X: %s",
+                    testItemPtr->locale, testItemPtr->skeleton, (unsigned)testItemPtr->context, u_errorName(status));
+            continue;
+        }
+        UnicodeString expectResult(true, testItemPtr->expectResult, -1);
+        if (getResult != expectResult) {
+            errln(UnicodeString("format expected ") + expectResult + UnicodeString(" but got ") + getResult);
+        }
+    }
+}
 
 void DateIntervalFormatTest::testSetIntervalPatternNoSideEffect() {
     UErrorCode ec = U_ZERO_ERROR;
diff --git a/icu4c/source/test/intltest/dtifmtts.h b/icu4c/source/test/intltest/dtifmtts.h
index 69b3d93..700eb4f 100644
--- a/icu4c/source/test/intltest/dtifmtts.h
+++ b/icu4c/source/test/intltest/dtifmtts.h
@@ -34,6 +34,12 @@
      */
     void testFormat();
 
+    
+    /**
+     * Test handling of hour and day period metacharacters
+     */
+    void testHourMetacharacters();
+
     void testFormatMillisecond();
 
     /**
@@ -41,6 +47,11 @@
      */
     void testFormatUserDII();
 
+    /*
+     * Test format using UDisplayContext
+     */
+    void testContext();
+
     /**
      * Test for no unwanted side effects when setting
      * interval patterns.
diff --git a/icu4c/source/test/intltest/dtptngts.cpp b/icu4c/source/test/intltest/dtptngts.cpp
index 4003eda..a211bfe 100644
--- a/icu4c/source/test/intltest/dtptngts.cpp
+++ b/icu4c/source/test/intltest/dtptngts.cpp
@@ -44,6 +44,7 @@
         TESTCASE(8, test20640_HourCyclArsEnNH);
         TESTCASE(9, testFallbackWithDefaultRootLocale);
         TESTCASE(10, testGetDefaultHourCycle_OnEmptyInstance);
+        TESTCASE(11, test_jConsistencyOddLocales);
         default: name = ""; break;
     }
 }
@@ -179,11 +180,11 @@
     UnicodeString patternResults_es[] = {
         // es                                                 // 4 es
         UnicodeString("1/1999"),                              // 00: yM    -> "M/y"
-        UnicodeString("ene. 1999"),                           // 01: yMMM  -> "MMM y"
+        UnicodeString("ene 1999"),                            // 01: yMMM  -> "MMM y"
         UnicodeString("13/1/1999"),                           // 02: yMd   -> "d/M/y"
-        UnicodeString("13 ene. 1999"),                        // 03: yMMMd -> "d MMM y"
+        UnicodeString("13 ene 1999"),                         // 03: yMMMd -> "d MMM y"
         UnicodeString("13/1"),                                // 04: Md    -> "d/M"
-        UnicodeString("13 ene."),                             // 05: MMMd  -> "d 'de' MMM"
+        UnicodeString("13 ene"),                              // 05: MMMd  -> "d 'de' MMM"
         UnicodeString("13 de enero"),                         // 06: MMMMd -> "d 'de' MMMM"
         UnicodeString("T1 1999"),                             // 07: yQQQ  -> "QQQ y"
         CharsToUnicodeString("11:58 p.\\u00A0m."),            // 08: hhmm  -> "hh:mm a"
@@ -191,8 +192,8 @@
         UnicodeString("23:58"),                               // 10: jjmm  -> "HH:mm"
         UnicodeString("58:59"),                               // 11: mmss  -> "mm:ss"
         UnicodeString("enero de 1999"),                       // 12: yyyyMMMM -> "MMMM 'de' yyyy"
-        CharsToUnicodeString("mi\\u00E9., 13 ene."),          // 13: MMMEd -> "E, d MMM"
-        CharsToUnicodeString("mi\\u00E9. 13"),                // 14: Ed    -> "EEE d"
+        CharsToUnicodeString("mi\\u00E9, 13 ene"),            // 13: MMMEd -> "E, d MMM"
+        CharsToUnicodeString("mi\\u00E9 13"),                 // 14: Ed    -> "EEE d"
         UnicodeString("23:58:59,123"),                        // 15: jmmssSSS -> "H:mm:ss,SSS"
         UnicodeString("23:58"),                               // 16: JJmm
     };
@@ -1398,7 +1399,9 @@
                      shortPattern.extract(0, shortPattern.length(), spBuf, 32);
                      jPattern.extract(0, jPattern.length(), jpBuf, 32);
                      const char* dfmtCalType = (dfmt->getCalendar())->getType();
-                     errln("ERROR: locale %s, expected j resolved char %s to occur in short time pattern '%s' for %s (best pattern: '%s')", localeID, jcBuf, spBuf, dfmtCalType, jpBuf);
+                     const char* validLoc = dfmt->getLocaleID(ULOC_VALID_LOCALE, status);
+                     errln("ERROR: locale %s (valid %s), expected j resolved char %s to occur in short time pattern '%s' for %s (best pattern: '%s')",
+                             localeID, validLoc, jcBuf, spBuf, dfmtCalType, jpBuf);
                  }
                  break;
              }
@@ -1423,8 +1426,7 @@
         // formerly New Hebrides, now Vanuatu => VU => h.
         {"en_NH", u"h a", u"h:mm a", UDAT_HOUR_CYCLE_12},
         // ch_ZH is a typo (should be zh_CN), but we should fail gracefully.
-        // {"cn_ZH", u"HH", u"H:mm"}, // TODO(ICU-20653): Desired behavior
-        {"cn_ZH", u"HH", u"h:mm a", UDAT_HOUR_CYCLE_23 }, // Actual behavior
+        {"cn_ZH", u"HH", u"HH:mm", UDAT_HOUR_CYCLE_23 }, // Desired & now actual behavior (does this fix ICU-20653?)
         // a non-BCP47 locale without a country code should not fail
         {"ja_TRADITIONAL", u"H時", u"H:mm", UDAT_HOUR_CYCLE_23},
     };
@@ -1510,4 +1512,52 @@
     }
 }
 
+void IntlTestDateTimePatternGeneratorAPI::test_jConsistencyOddLocales() { // ICU-20590
+    static const char* localeIDs[] = {
+        "en", "ro", // known languages 12h / 24h
+        "en-RO", "ro-US",  // known languages with known regions, hour conflict language vs region
+        "en-XZ", "ro-XZ", // known languages 12h / 24h, unknown region
+        "xz-RO", "xz-US",  // unknown language with known regions
+        "xz", // unknown language
+        "xz-ZX",  // unknown language with unknown country
+        "ars", "wuu" // aliased locales
+    };
+    static const UChar* skeleton = u"jm";
+    for (const char* localeID: localeIDs) {
+        UErrorCode status = U_ZERO_ERROR;
+        Locale locale(localeID);
+        LocalPointer<DateFormat> dtfShort(DateFormat::createTimeInstance(DateFormat::kShort, locale), status);
+        if (U_FAILURE(status)) {
+            errln("DateFormat::createTimeInstance failed for locale %s: %s", localeID, u_errorName(status));
+            continue;
+        }
+        LocalPointer<DateFormat> dtfSkel(DateFormat::createInstanceForSkeleton(skeleton, locale, status));
+        if (U_FAILURE(status)) {
+            errln("DateFormat::createInstanceForSkeleton failed for locale %s: %s", localeID, u_errorName(status));
+            continue;
+        }
+        LocalPointer<DateTimePatternGenerator> dtpg(DateTimePatternGenerator::createInstance(locale, status));
+        if (U_FAILURE(status)) {
+            errln("DateTimePatternGenerator::createInstance failed for locale %s: %s", localeID, u_errorName(status));
+            continue;
+        }
+        UnicodeString dtfShortPattern, dtfSkelPattern;
+        dynamic_cast<SimpleDateFormat*>(dtfShort.getAlias())->toPattern(dtfShortPattern);
+        dynamic_cast<SimpleDateFormat*>(dtfSkel.getAlias())->toPattern(dtfSkelPattern);
+        UnicodeString dtpgPattern = (dtpg.getAlias())->getBestPattern(skeleton, status);
+        if (U_FAILURE(status)) {
+            errln("DateTimePatternGenerator::getBestPattern failed for locale %s: %s", localeID, u_errorName(status));
+            continue;
+        }
+        if (dtfShortPattern != dtfSkelPattern || dtfSkelPattern != dtpgPattern) {
+            const char* dtfShortValidLoc = dtfShort->getLocaleID(ULOC_VALID_LOCALE, status);
+            const char* dtfShortActualLoc = dtfShort->getLocaleID(ULOC_ACTUAL_LOCALE, status);
+            errln(UnicodeString("For locale ") + localeID +
+                    " expected same pattern from DateTimePatGen: " + dtpgPattern +
+                    ", DateFmt-forSkel: " + dtfSkelPattern + ", DateFmt-short: "  + dtfShortPattern +
+                    "; latter has validLoc " + dtfShortValidLoc + ", actualLoc " + dtfShortActualLoc);
+        }
+    }
+}
+
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/intltest/dtptngts.h b/icu4c/source/test/intltest/dtptngts.h
index 90f65c9..b3fb02e 100644
--- a/icu4c/source/test/intltest/dtptngts.h
+++ b/icu4c/source/test/intltest/dtptngts.h
@@ -36,6 +36,7 @@
     void test20640_HourCyclArsEnNH();
     void testFallbackWithDefaultRootLocale();
     void testGetDefaultHourCycle_OnEmptyInstance();
+    void test_jConsistencyOddLocales();
 };
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/intltest/formattedvaluetest.cpp b/icu4c/source/test/intltest/formattedvaluetest.cpp
index 976a90b..0edf420 100644
--- a/icu4c/source/test/intltest/formattedvaluetest.cpp
+++ b/icu4c/source/test/intltest/formattedvaluetest.cpp
@@ -237,9 +237,14 @@
     }
     UBool afterLoopResult = fv.nextPosition(cfpos, status);
     assertFalse(baseMessage + u"A after loop: " + CFPosToUnicodeString(cfpos), afterLoopResult);
+    afterLoopResult = fv.nextPosition(cfpos, status);
+    assertFalse(baseMessage + u"A after loop again: " + CFPosToUnicodeString(cfpos), afterLoopResult);
 
     // Check nextPosition constrained over each category one at a time
-    for (int32_t category=0; category<UFIELD_CATEGORY_COUNT; category++) {
+    for (int32_t category=0; category<UFIELD_CATEGORY_COUNT+1; category++) {
+        if (category == UFIELD_CATEGORY_COUNT+1) {
+            category = UFIELD_CATEGORY_LIST_SPAN;
+        }
         cfpos.reset();
         cfpos.constrainCategory(static_cast<UFieldCategory>(category));
         for (int32_t i = 0; i < length; i++) {
@@ -263,6 +268,8 @@
         }
         UBool afterLoopResult = fv.nextPosition(cfpos, status);
         assertFalse(baseMessage + u"B after loop @ " + CFPosToUnicodeString(cfpos), afterLoopResult);
+        afterLoopResult = fv.nextPosition(cfpos, status);
+        assertFalse(baseMessage + u"B after loop again @ " + CFPosToUnicodeString(cfpos), afterLoopResult);
     }
 
     // Check nextPosition constrained over each field one at a time
@@ -297,6 +304,8 @@
         }
         UBool afterLoopResult = fv.nextPosition(cfpos, status);
         assertFalse(baseMessage + u"C after loop: " + CFPosToUnicodeString(cfpos), afterLoopResult);
+        afterLoopResult = fv.nextPosition(cfpos, status);
+        assertFalse(baseMessage + u"C after loop again: " + CFPosToUnicodeString(cfpos), afterLoopResult);
     }
 }
 
diff --git a/icu4c/source/test/intltest/incaltst.cpp b/icu4c/source/test/intltest/incaltst.cpp
index 61a2e32..db6bfce 100644
--- a/icu4c/source/test/intltest/incaltst.cpp
+++ b/icu4c/source/test/intltest/incaltst.cpp
@@ -9,6 +9,7 @@
 /* Test Internationalized Calendars for C++ */
 
 #include "unicode/utypes.h"
+#include "cmemory.h"
 #include "string.h"
 #include "unicode/locid.h"
 #include "japancal.h"
@@ -71,20 +72,40 @@
 void IntlCalendarTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
 {
     if (exec) logln("TestSuite IntlCalendarTest");
-    switch (index) {
-    CASE(0,TestTypes);
-    CASE(1,TestGregorian);
-    CASE(2,TestBuddhist);
-    CASE(3,TestJapanese);
-    CASE(4,TestBuddhistFormat);
-    CASE(5,TestJapaneseFormat);
-    CASE(6,TestJapanese3860);
-    CASE(7,TestForceGannenNumbering);
-    CASE(8,TestPersian);
-    CASE(9,TestPersianFormat);
-    CASE(10,TestTaiwan);
-    default: name = ""; break;
-    }
+    TESTCASE_AUTO_BEGIN;
+    TESTCASE_AUTO(TestTypes);
+    TESTCASE_AUTO(TestGregorian);
+    TESTCASE_AUTO(TestBuddhist);
+    TESTCASE_AUTO(TestBug21043Indian);
+    TESTCASE_AUTO(TestBug21044Hebrew);
+    TESTCASE_AUTO(TestBug21045Islamic);
+    TESTCASE_AUTO(TestBug21046IslamicUmalqura);
+    TESTCASE_AUTO(TestJapanese);
+    TESTCASE_AUTO(TestBuddhistFormat);
+    TESTCASE_AUTO(TestJapaneseFormat);
+    TESTCASE_AUTO(TestJapanese3860);
+    TESTCASE_AUTO(TestForceGannenNumbering);
+    TESTCASE_AUTO(TestPersian);
+    TESTCASE_AUTO(TestPersianFormat);
+    TESTCASE_AUTO(TestTaiwan);
+    TESTCASE_AUTO(TestConsistencyGregorian);
+    TESTCASE_AUTO(TestConsistencyCoptic);
+    TESTCASE_AUTO(TestConsistencyEthiopic);
+    TESTCASE_AUTO(TestConsistencyROC);
+    TESTCASE_AUTO(TestConsistencyChinese);
+    TESTCASE_AUTO(TestConsistencyDangi);
+    TESTCASE_AUTO(TestConsistencyBuddhist);
+    TESTCASE_AUTO(TestConsistencyEthiopicAmeteAlem);
+    TESTCASE_AUTO(TestConsistencyHebrew);
+    TESTCASE_AUTO(TestConsistencyIndian);
+    TESTCASE_AUTO(TestConsistencyIslamic);
+    TESTCASE_AUTO(TestConsistencyIslamicCivil);
+    TESTCASE_AUTO(TestConsistencyIslamicRGSA);
+    TESTCASE_AUTO(TestConsistencyIslamicTBLA);
+    TESTCASE_AUTO(TestConsistencyIslamicUmalqura);
+    TESTCASE_AUTO(TestConsistencyPersian);
+    TESTCASE_AUTO(TestConsistencyJapanese);
+    TESTCASE_AUTO_END;
 }
 
 #undef CASE
@@ -917,6 +938,169 @@
     CHECK(status, "Error occured testing Persian Calendar in English "); 
 }
 
+void IntlCalendarTest::TestConsistencyGregorian() {
+    checkConsistency("en@calendar=gregorian");
+}
+void IntlCalendarTest::TestConsistencyIndian() {
+    checkConsistency("en@calendar=indian");
+}
+void IntlCalendarTest::TestConsistencyHebrew() {
+    checkConsistency("en@calendar=hebrew");
+}
+void IntlCalendarTest::TestConsistencyIslamic() {
+    checkConsistency("en@calendar=islamic");
+}
+void IntlCalendarTest::TestConsistencyIslamicRGSA() {
+    checkConsistency("en@calendar=islamic-rgsa");
+}
+void IntlCalendarTest::TestConsistencyIslamicTBLA() {
+    checkConsistency("en@calendar=islamic-tbla");
+}
+void IntlCalendarTest::TestConsistencyIslamicUmalqura() {
+    checkConsistency("en@calendar=islamic-umalqura");
+}
+void IntlCalendarTest::TestConsistencyIslamicCivil() {
+    checkConsistency("en@calendar=islamic-civil");
+}
+void IntlCalendarTest::TestConsistencyCoptic() {
+    checkConsistency("en@calendar=coptic");
+}
+void IntlCalendarTest::TestConsistencyEthiopic() {
+    checkConsistency("en@calendar=ethiopic");
+}
+void IntlCalendarTest::TestConsistencyROC() {
+    checkConsistency("en@calendar=roc");
+}
+void IntlCalendarTest::TestConsistencyChinese() {
+    checkConsistency("en@calendar=chinese");
+}
+void IntlCalendarTest::TestConsistencyDangi() {
+    checkConsistency("en@calendar=dangi");
+}
+void IntlCalendarTest::TestConsistencyPersian() {
+    checkConsistency("en@calendar=persian");
+}
+void IntlCalendarTest::TestConsistencyBuddhist() {
+    checkConsistency("en@calendar=buddhist");
+}
+void IntlCalendarTest::TestConsistencyJapanese() {
+    checkConsistency("en@calendar=japanese");
+}
+void IntlCalendarTest::TestConsistencyEthiopicAmeteAlem() {
+    checkConsistency("en@calendar=ethiopic-amete-alem");
+}
+void IntlCalendarTest::checkConsistency(const char* locale) {
+    // Check 2.5 years in quick mode and 8000 years in exhaustive mode.
+    int32_t numOfDaysToTest = (quick ? 2.5 : 8000) * 365;
+    constexpr int32_t msInADay = 1000*60*60*24;
+    std::string msg("TestConsistency");
+    IcuTestErrorCode status(*this, (msg + locale).c_str());
+    // g is just for debugging messages.
+    std::unique_ptr<Calendar> g(Calendar::createInstance("en", status));
+    g->setTimeZone(*(TimeZone::getGMT()));
+    std::unique_ptr<Calendar> base(Calendar::createInstance(locale, status));
+    if (status.errIfFailureAndReset("Cannot create calendar %s", locale)) {
+        return;
+    }
+    UDate test = Calendar::getNow();
+    base->setTimeZone(*(TimeZone::getGMT()));
+    int32_t j;
+    int lastDay = 1;
+    std::unique_ptr<Calendar> r(base->clone());
+    for (j = 0; j < numOfDaysToTest; j++, test -= msInADay) {
+        status.errIfFailureAndReset();
+        g->setTime(test, status);
+        if (status.errIfFailureAndReset("Cannot set time")) {
+            return;
+        }
+        base->clear();
+        base->setTime(test, status);
+        if (status.errIfFailureAndReset("Cannot set time")) {
+            return;
+        }
+        // First, we verify the date from base is decrease one day from the
+        // last day unless the last day is 1.
+        int32_t cday = base->get(UCAL_DATE, status);
+        if (U_FAILURE(status)) {
+           UErrorCode localStatus = U_ZERO_ERROR;
+           if (status.errIfFailureAndReset(
+               "Cannot get the %dth date for %f %d %d/%d/%d\n",
+               j,
+               test,
+               g->get(UCAL_ERA, localStatus),
+               g->get(UCAL_YEAR, localStatus),
+               (g->get(UCAL_MONTH, localStatus) + 1),
+               g->get(UCAL_DATE, localStatus))) {
+               return;
+           }
+        }
+        if (lastDay == 1) {
+            lastDay = cday;
+        } else {
+            if (cday != lastDay-1) {
+                // Ignore if it is the last day before Gregorian Calendar switch on
+                // 1582 Oct 4
+                if (g->get(UCAL_YEAR, status) == 1582 &&
+                    (g->get(UCAL_MONTH, status) + 1) == 10 &&
+                    g->get(UCAL_DATE, status) == 4) {
+                    lastDay = 5;
+                } else {
+                    errln((UnicodeString)
+                        "Day is not one less from previous date for "
+                        "Gregorian(e=" + g->get(UCAL_ERA, status) + " " +
+                        g->get(UCAL_YEAR, status) + "/" +
+                        (g->get(UCAL_MONTH, status) + 1) + "/" +
+                        g->get(UCAL_DATE, status) + ") " + locale + "(" +
+                        base->get(UCAL_ERA, status) + " " +
+                        base->get(UCAL_YEAR, status) + "/" +
+                        (base->get(UCAL_MONTH, status) + 1 ) + "/" +
+                        base->get(UCAL_DATE, status) + ")");
+                    status.errIfFailureAndReset();
+                    return;
+                }
+            }
+            lastDay--;
+        }
+        // Second, we verify the month is in reasonale range.
+        int32_t cmonth = base->get(UCAL_MONTH, status);
+        if (cmonth < 0 || cmonth > 13) {
+            errln((UnicodeString)
+                "Month is out of range Gregorian(e=" +
+                g->get(UCAL_ERA, status) + " " +
+                g->get(UCAL_YEAR, status) + "/" +
+                (g->get(UCAL_MONTH, status) + 1) + "/" +
+                g->get(UCAL_DATE, status) + ") " + locale + "(" +
+                base->get(UCAL_ERA, status) + " " +
+                base->get(UCAL_YEAR, status) + "/" +
+                (base->get(UCAL_MONTH, status) + 1 ) + "/" +
+                base->get(UCAL_DATE, status) + ")");
+            status.errIfFailureAndReset();
+            return;
+        }
+        // Third, we verify the set function can round trip the time back.
+        r->clear();
+        for (int32_t f = 0; f < UCAL_FIELD_COUNT; f++) {
+            UCalendarDateFields ut = (UCalendarDateFields)f;
+            r->set(ut, base->get(ut, status));
+        }
+        UDate result = r->getTime(status);
+        if (status.errIfFailureAndReset("Cannot get time %s", locale)) {
+            return;
+        }
+        if (test != result) {
+            errln((UnicodeString)"Round trip conversion produces different "
+                  "time from " + test + " to  " + result + " delta: " +
+                  (result - test) +
+                  " Gregorian(e=" + g->get(UCAL_ERA, status) + " " +
+                  g->get(UCAL_YEAR, status) + "/" +
+                  (g->get(UCAL_MONTH, status) + 1) + "/" +
+                  g->get(UCAL_DATE, status) + ") ");
+            status.errIfFailureAndReset();
+            return;
+        }
+    }
+    status.errIfFailureAndReset();
+}
 
 void IntlCalendarTest::simpleTest(const Locale& loc, const UnicodeString& expect, UDate expectDate, UErrorCode& status)
 {
@@ -947,6 +1131,97 @@
     delete fmt0;
 }
 
+void IntlCalendarTest::TestBug21043Indian() {
+    IcuTestErrorCode status(*this, "TestBug21043Indian");
+    std::unique_ptr<Calendar> cal(
+        Calendar::createInstance("en@calendar=indian", status));
+    std::unique_ptr<Calendar> g(
+        Calendar::createInstance("en@calendar=gregorian", status));
+    // set to 10 BC
+    g->set(UCAL_ERA, 0);
+    g->set(UCAL_YEAR, 10);
+    g->set(UCAL_MONTH, 1);
+    g->set(UCAL_DATE, 1);
+    cal->setTime(g->getTime(status), status);
+    int32_t m = cal->get(UCAL_MONTH, status);
+    if (m < 0 || m > 11) {
+        errln(
+              u"Month should be between 0 and 11 in India calendar");
+    }
+}
+
+void IntlCalendarTest::TestBug21044Hebrew() {
+    IcuTestErrorCode status(*this, "TestBug21044Hebrew");
+    std::unique_ptr<Calendar> cal(
+        Calendar::createInstance("en@calendar=hebrew", status));
+    std::unique_ptr<Calendar> g(
+        Calendar::createInstance("en@calendar=gregorian", status));
+    // set to 3771/10/27 BC which is before 3760 BC.
+    g->set(UCAL_ERA, 0);
+    g->set(UCAL_YEAR, 3771);
+    g->set(UCAL_MONTH, 9);
+    g->set(UCAL_DATE, 27);
+    cal->setTime(g->getTime(status), status);
+
+    if (status.errIfFailureAndReset(
+        "Cannot set date. Got error %s", u_errorName(status))) {
+        return;
+    }
+    int32_t y = cal->get(UCAL_YEAR, status);
+    int32_t m = cal->get(UCAL_MONTH, status);
+    int32_t d = cal->get(UCAL_DATE, status);
+    if (status.errIfFailureAndReset(
+        "Cannot get date. Got error %s", u_errorName(status))) {
+        return;
+   }
+    if (y > 0 || m < 0 || m > 12 || d < 0 || d > 32) {
+        errln((UnicodeString)"Out of rage!\nYear " +  y + " should be " +
+              "negative number before 1AD.\nMonth " + m + " should " +
+              "be between 0 and 12 in Hebrew calendar.\nDate " + d +
+              " should be between 0 and 32 in Islamic calendar.");
+    }
+}
+
+void IntlCalendarTest::TestBug21045Islamic() {
+    IcuTestErrorCode status(*this, "TestBug21045Islamic");
+    std::unique_ptr<Calendar> cal(
+        Calendar::createInstance("en@calendar=islamic", status));
+    std::unique_ptr<Calendar> g(
+        Calendar::createInstance("en@calendar=gregorian", status));
+    // set to 500 AD before 622 AD.
+    g->set(UCAL_ERA, 1);
+    g->set(UCAL_YEAR, 500);
+    g->set(UCAL_MONTH, 1);
+    g->set(UCAL_DATE, 1);
+    cal->setTime(g->getTime(status), status);
+    int32_t m = cal->get(UCAL_MONTH, status);
+    if (m < 0 || m > 11) {
+        errln(u"Month should be between 1 and 12 in Islamic calendar");
+    }
+}
+
+void IntlCalendarTest::TestBug21046IslamicUmalqura() {
+    IcuTestErrorCode status(*this, "TestBug21046IslamicUmalqura");
+    std::unique_ptr<Calendar> cal(
+        Calendar::createInstance("en@calendar=islamic-umalqura", status));
+    std::unique_ptr<Calendar> g(
+        Calendar::createInstance("en@calendar=gregorian", status));
+    // set to 195366 BC
+    g->set(UCAL_ERA, 0);
+    g->set(UCAL_YEAR, 195366);
+    g->set(UCAL_MONTH, 1);
+    g->set(UCAL_DATE, 1);
+    cal->setTime(g->getTime(status), status);
+    int32_t y = cal->get(UCAL_YEAR, status);
+    int32_t m = cal->get(UCAL_MONTH, status);
+    int32_t d = cal->get(UCAL_DATE, status);
+    if (y > 0 || m < 0 || m > 11 || d < 0 || d > 32) {
+        errln((UnicodeString)"Out of rage!\nYear " +  y + " should be " +
+              "negative number before 1AD.\nMonth " + m + " should " +
+              "be between 0 and 11 in Islamic calendar.\nDate " + d +
+              " should be between 0 and 32 in Islamic calendar.");
+    }
+}
 #undef CHECK
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/intltest/incaltst.h b/icu4c/source/test/intltest/incaltst.h
index 2d42bcc..fd3ab2e 100644
--- a/icu4c/source/test/intltest/incaltst.h
+++ b/icu4c/source/test/intltest/incaltst.h
@@ -28,6 +28,10 @@
 
     void TestBuddhist(void);
     void TestBuddhistFormat(void);
+    void TestBug21043Indian(void);
+    void TestBug21044Hebrew(void);
+    void TestBug21045Islamic(void);
+    void TestBug21046IslamicUmalqura(void);
 
     void TestTaiwan(void);
 
@@ -39,10 +43,31 @@
     void TestPersian(void);
     void TestPersianFormat(void);
 
+    void TestConsistencyGregorian(void);
+    void TestConsistencyCoptic(void);
+    void TestConsistencyEthiopic(void);
+    void TestConsistencyROC(void);
+    void TestConsistencyChinese(void);
+    void TestConsistencyDangi(void);
+    void TestConsistencyBuddhist(void);
+    void TestConsistencyEthiopicAmeteAlem(void);
+    void TestConsistencyHebrew(void);
+    void TestConsistencyIndian(void);
+    void TestConsistencyIslamic(void);
+    void TestConsistencyIslamicCivil(void);
+    void TestConsistencyIslamicRGSA(void);
+    void TestConsistencyIslamicTBLA(void);
+    void TestConsistencyIslamicUmalqura(void);
+    void TestConsistencyPersian(void);
+    void TestConsistencyJapanese(void);
+
  protected:
     // Test a Gregorian-Like calendar
     void quasiGregorianTest(Calendar& cal, const Locale& gregoLocale, const int32_t *data);
     void simpleTest(const Locale& loc, const UnicodeString& expect, UDate expectDate, UErrorCode& status);
+    void checkConsistency(const char* locale);
+
+    int32_t daysToCheckInConsistency;
  
 public: // package
     // internal routine for checking date
diff --git a/icu4c/source/test/intltest/intltest.cpp b/icu4c/source/test/intltest/intltest.cpp
index 773152d..39818b4 100644
--- a/icu4c/source/test/intltest/intltest.cpp
+++ b/icu4c/source/test/intltest/intltest.cpp
@@ -19,6 +19,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <cmath>
+#include <math.h>
 #include <iostream>
 
 #include "unicode/ctest.h" // for str_timeDelta
@@ -45,6 +46,7 @@
 #include "udbgutil.h"
 #include "umutex.h"
 #include "uoptions.h"
+#include "number_decnum.h"
 
 #ifdef XP_MAC_CONSOLE
 #include <console.h>
@@ -982,7 +984,7 @@
   UBool firstForTicket = TRUE, firstForWhere = TRUE;
   knownList = udbg_knownIssue_openU(knownList, ticket, fullpath, msg2.getTerminatedBuffer(), &firstForTicket, &firstForWhere);
 
-  msg2 = UNICODE_STRING_SIMPLE("(Known issue #") +
+  msg2 = UNICODE_STRING_SIMPLE("(Known issue ") +
       UnicodeString(ticket, -1, US_INV) + UNICODE_STRING_SIMPLE(") ") + msg;
   if(firstForTicket || firstForWhere) {
     infoln(msg2);
@@ -1899,7 +1901,6 @@
     return TRUE;
 }
 
-
 UBool IntlTest::assertEquals(const char* message,
                              UBool expected,
                              UBool actual) {
@@ -2016,6 +2017,47 @@
     return TRUE;
 }
 
+UBool IntlTest::assertNotEquals(const char* message,
+                                int32_t expectedNot,
+                                int32_t actual) {
+    if (expectedNot == actual) {
+        errln((UnicodeString)("FAIL: ") + message + "; got " + actual + "=0x" + toHex(actual) +
+              "; expected != " + expectedNot);
+        return FALSE;
+    }
+#ifdef VERBOSE_ASSERTIONS
+    else {
+        logln((UnicodeString)("Ok: ") + message + "; got " + actual + "=0x" + toHex(actual) +
+              " != " + expectedNot);
+    }
+#endif
+    return TRUE;
+}
+
+UBool IntlTest::assertEqualsNear(const char* message,
+                                 double expected,
+                                 double actual,
+                                 double delta) {
+    if (std::isnan(delta) || std::isinf(delta)) {
+        errln((UnicodeString)("FAIL: ") + message + "; nonsensical delta " + delta +
+              " - delta may not be NaN or Inf");
+        return FALSE;
+    }
+    bool bothNaN = std::isnan(expected) && std::isnan(actual);
+    double difference = std::abs(expected - actual);
+    if (expected != actual && (difference > delta || std::isnan(difference)) && !bothNaN) {
+        errln((UnicodeString)("FAIL: ") + message + "; got " + actual + "; expected " + expected +
+              "; acceptable delta " + delta);
+        return FALSE;
+    }
+#ifdef VERBOSE_ASSERTIONS
+    else {
+        logln((UnicodeString)("Ok: ") + message + "; got " + actual);
+    }
+#endif
+    return TRUE;
+}
+
 static char ASSERT_BUF[256];
 
 static const char* extractToAssertBuf(const UnicodeString& message) {
@@ -2085,6 +2127,17 @@
                              const std::vector<std::string>& actual) {
     return assertEquals(extractToAssertBuf(message), expected, actual);
 }
+UBool IntlTest::assertNotEquals(const UnicodeString &message,
+                                int32_t expectedNot,
+                                int32_t actual) {
+    return assertNotEquals(extractToAssertBuf(message), expectedNot, actual);
+}
+UBool IntlTest::assertEqualsNear(const UnicodeString& message,
+                                 double expected,
+                                 double actual,
+                                 double delta) {
+    return assertEqualsNear(extractToAssertBuf(message), expected, actual, delta);
+}
 
 #if !UCONFIG_NO_FORMATTING
 UBool IntlTest::assertEquals(const UnicodeString& message,
diff --git a/icu4c/source/test/intltest/intltest.h b/icu4c/source/test/intltest/intltest.h
index b8650b0..c0270d0 100644
--- a/icu4c/source/test/intltest/intltest.h
+++ b/icu4c/source/test/intltest/intltest.h
@@ -166,30 +166,27 @@
     virtual void logln( void );
 
     /**
-     * Replaces isICUVersionAtLeast and isICUVersionBefore
-     * log that an issue is known.
+     * Logs that an issue is known. Can be called multiple times.
      * Usually used this way:
-     * <code>if( ... && logKnownIssue("12345", "some bug")) continue; </code>
-     * @param ticket ticket string, "12345" or "cldrbug:1234"
+     * <code>if( ... && logKnownIssue("ICU-12345", "some bug")) continue; </code>
+     * @param ticket ticket string, "ICU-12345" or "CLDR-1234"
      * @param message optional message string
      * @return true if test should be skipped
      */
     UBool logKnownIssue( const char *ticket, const UnicodeString &message );
     /**
-     * Replaces isICUVersionAtLeast and isICUVersionBefore
-     * log that an issue is known.
+     * Logs that an issue is known. Can be called multiple times.
      * Usually used this way:
-     * <code>if( ... && logKnownIssue("12345", "some bug")) continue; </code>
-     * @param ticket ticket string, "12345" or "cldrbug:1234"
+     * <code>if( ... && logKnownIssue("ICU-12345", "some bug")) continue; </code>
+     * @param ticket ticket string, "ICU-12345" or "CLDR-1234"
      * @return true if test should be skipped
      */
     UBool logKnownIssue( const char *ticket );
     /**
-     * Replaces isICUVersionAtLeast and isICUVersionBefore
-     * log that an issue is known.
+     * Log that an issue is known. Can be called multiple times.
      * Usually used this way:
-     * <code>if( ... && logKnownIssue("12345", "some bug")) continue; </code>
-     * @param ticket ticket string, "12345" or "cldrbug:1234"
+     * <code>if( ... && logKnownIssue("ICU-12345", "some bug")) continue; </code>
+     * @param ticket ticket string, "ICU-12345" or "CLDR-1234"
      * @param message optional message string
      * @return true if test should be skipped
      */
@@ -299,16 +296,32 @@
     UBool assertEquals(const char* message, int32_t expected, int32_t actual);
     UBool assertEquals(const char* message, int64_t expected, int64_t actual);
     UBool assertEquals(const char* message, double expected, double actual);
+    /**
+     * Asserts that two doubles are equal to within a positive delta. Returns
+     * false if they are not.
+     *
+     * NaNs are considered equal: assertEquals(msg, NaN, NaN, *) passes.
+     * Infs are considered equal: assertEquals(msg, inf, inf, *) passes.
+     *
+     * @param message - the identifying message for the AssertionError.
+     * @param expected - expected value.
+     * @param actual - the value to check against expected.
+     * @param delta - the maximum delta for the absolute difference between
+     * expected and actual for which both numbers are still considered equal.
+     */
+    UBool assertEqualsNear(const char* message, double expected, double actual, double delta);
     UBool assertEquals(const char* message, UErrorCode expected, UErrorCode actual);
     UBool assertEquals(const char* message, const UnicodeSet& expected, const UnicodeSet& actual);
     UBool assertEquals(const char* message,
         const std::vector<std::string>& expected, const std::vector<std::string>& actual);
+
 #if !UCONFIG_NO_FORMATTING
     UBool assertEquals(const char* message, const Formattable& expected,
                        const Formattable& actual, UBool possibleDataError=FALSE);
     UBool assertEquals(const UnicodeString& message, const Formattable& expected,
                        const Formattable& actual);
 #endif
+    UBool assertNotEquals(const char* message, int32_t expectedNot, int32_t actual);
     UBool assertTrue(const UnicodeString& message, UBool condition, UBool quiet=FALSE, UBool possibleDataError=FALSE);
     UBool assertFalse(const UnicodeString& message, UBool condition, UBool quiet=FALSE, UBool possibleDataError=FALSE);
     UBool assertSuccess(const UnicodeString& message, UErrorCode ec);
@@ -319,10 +332,25 @@
     UBool assertEquals(const UnicodeString& message, int32_t expected, int32_t actual);
     UBool assertEquals(const UnicodeString& message, int64_t expected, int64_t actual);
     UBool assertEquals(const UnicodeString& message, double expected, double actual);
+    /**
+     * Asserts that two doubles are equal to within a positive delta. Returns
+     * false if they are not.
+     *
+     * NaNs are considered equal: assertEquals(msg, NaN, NaN, *) passes.
+     * Infs are considered equal: assertEquals(msg, inf, inf, *) passes.
+     *
+     * @param message - the identifying message for the AssertionError.
+     * @param expected - expected value.
+     * @param actual - the value to check against expected.
+     * @param delta - the maximum delta between expected and actual for which
+     * both numbers are still considered equal.
+     */
+    UBool assertEqualsNear(const UnicodeString& message, double expected, double actual, double delta);
     UBool assertEquals(const UnicodeString& message, UErrorCode expected, UErrorCode actual);
     UBool assertEquals(const UnicodeString& message, const UnicodeSet& expected, const UnicodeSet& actual);
     UBool assertEquals(const UnicodeString& message,
         const std::vector<std::string>& expected, const std::vector<std::string>& actual);
+    UBool assertNotEquals(const UnicodeString& message, int32_t expectedNot, int32_t actual);
 
     virtual void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ); // overide !
 
diff --git a/icu4c/source/test/intltest/intltest.vcxproj b/icu4c/source/test/intltest/intltest.vcxproj
index dbdb3e0..319c3ab 100644
--- a/icu4c/source/test/intltest/intltest.vcxproj
+++ b/icu4c/source/test/intltest/intltest.vcxproj
@@ -15,22 +15,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
@@ -301,6 +285,9 @@
     <ClCompile Include="formattedvaluetest.cpp" />
     <ClCompile Include="localebuildertest.cpp" />
     <ClCompile Include="localematchertest.cpp" />
+    <ClCompile Include="units_data_test.cpp" />
+    <ClCompile Include="units_router_test.cpp" />
+    <ClCompile Include="units_test.cpp" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="colldata.h" />
diff --git a/icu4c/source/test/intltest/intltest.vcxproj.filters b/icu4c/source/test/intltest/intltest.vcxproj.filters
index 0bf336b..b706980 100644
--- a/icu4c/source/test/intltest/intltest.vcxproj.filters
+++ b/icu4c/source/test/intltest/intltest.vcxproj.filters
@@ -550,6 +550,15 @@
     <ClCompile Include="localematchertest.cpp">
       <Filter>locales &amp; resources</Filter>
     </ClCompile>
+    <ClCompile Include="units_data_test.cpp">
+      <Filter>formatting</Filter>
+    </ClCompile>
+    <ClCompile Include="units_router_test.cpp">
+      <Filter>formatting</Filter>
+    </ClCompile>
+    <ClCompile Include="units_test.cpp">
+      <Filter>formatting</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="itrbbi.h">
diff --git a/icu4c/source/test/intltest/itformat.cpp b/icu4c/source/test/intltest/itformat.cpp
index 870728a..a2b5ffe 100644
--- a/icu4c/source/test/intltest/itformat.cpp
+++ b/icu4c/source/test/intltest/itformat.cpp
@@ -74,6 +74,9 @@
 extern IntlTest *createFormattedValueTest();
 extern IntlTest *createFormattedStringBuilderTest();
 extern IntlTest *createStringSegmentTest();
+extern IntlTest *createUnitsDataTest();
+extern IntlTest *createUnitsTest();
+extern IntlTest *createUnitsRouterTest();
 
 
 #define TESTCLASS(id, TestClass)          \
@@ -247,6 +250,33 @@
             callTest(*test, par);
           }
           break;
+        case 56:
+          name = "UnitsTest";
+          if (exec) {
+            logln("UnitsTest test---");
+            logln((UnicodeString)"");
+            LocalPointer<IntlTest> test(createUnitsTest());
+            callTest(*test, par);
+          }
+          break;
+        case 57:
+          name = "UnitsDataTest";
+          if (exec) {
+            logln("UnitsDataTest test---");
+            logln((UnicodeString)"");
+            LocalPointer<IntlTest> test(createUnitsDataTest());
+            callTest(*test, par);
+          }
+          break;
+        case 58:
+          name = "UnitsRouterTest";
+          if (exec) {
+            logln("UnitsRouterTest test---");
+            logln((UnicodeString)"");
+            LocalPointer<IntlTest> test(createUnitsRouterTest());
+            callTest(*test, par);
+          }
+          break;
         default: name = ""; break; //needed to end loop
     }
     if (exec) {
diff --git a/icu4c/source/test/intltest/itformat.h b/icu4c/source/test/intltest/itformat.h
index d8b1799..feb55e2 100644
--- a/icu4c/source/test/intltest/itformat.h
+++ b/icu4c/source/test/intltest/itformat.h
@@ -35,6 +35,10 @@
 
 class IntlTestWithFieldPosition : public IntlTest {
 public:
+    // Tests FormattedValue's toString, toTempString, and nextPosition methods.
+    //
+    // expectedCategory gets combined with expectedFieldPositions to call
+    // checkMixedFormattedValue.
     void checkFormattedValue(
         const char16_t* message,
         const FormattedValue& fv,
@@ -43,6 +47,7 @@
         const UFieldPosition* expectedFieldPositions,
         int32_t length);
 
+    // Tests FormattedValue's toString, toTempString, and nextPosition methods.
     void checkMixedFormattedValue(
         const char16_t* message,
         const FormattedValue& fv,
diff --git a/icu4c/source/test/intltest/itrbnf.cpp b/icu4c/source/test/intltest/itrbnf.cpp
index ed4e865..efddaa7 100644
--- a/icu4c/source/test/intltest/itrbnf.cpp
+++ b/icu4c/source/test/intltest/itrbnf.cpp
@@ -1889,16 +1889,19 @@
             UErrorCode status = U_ZERO_ERROR;
             RuleBasedNumberFormat* f = new RuleBasedNumberFormat((URBNFRuleSetTag)j, *loc, status);
 
-            if (status == U_USING_DEFAULT_WARNING || status == U_USING_FALLBACK_WARNING) {
-                // Skip it.
-                delete f;
-                break;
-            }
             if (U_FAILURE(status)) {
                 errln(UnicodeString(loc->getName()) + names[j]
                     + "ERROR could not instantiate -> " + u_errorName(status));
                 continue;
             }
+
+            Locale actualLocale = f->getLocale(ULOC_ACTUAL_LOCALE, status);
+            if (actualLocale != *loc) {
+                // Skip the redundancy
+                delete f;
+                break;
+            }
+
 #if !UCONFIG_NO_COLLATION
             for (unsigned int numidx = 0; numidx < UPRV_LENGTHOF(numbers); numidx++) {
                 double n = numbers[numidx];
@@ -1936,28 +1939,26 @@
                             + UnicodeString(" -> ") + str + UnicodeString(" -> ") + num.getDouble());
                     }
                 }
-                if (!quick && !logKnownIssue("9503") ) {
-                    // lenient parse
-                    status = U_ZERO_ERROR;
-                    f->setLenient(TRUE);
-                    f->parse(str, num, status);
-                    if (U_FAILURE(status)) {
+                // lenient parse
+                status = U_ZERO_ERROR;
+                f->setLenient(TRUE);
+                f->parse(str, num, status);
+                if (U_FAILURE(status)) {
+                    errln(UnicodeString(loc->getName()) + names[j]
+                        + "ERROR could not parse(lenient) '" + str + "' -> " + u_errorName(status));
+                }
+                // We only check the spellout. The behavior is undefined for numbers < 1 and fractional numbers.
+                if (j == 0) {
+                    if (num.getType() == Formattable::kLong && num.getLong() != n) {
                         errln(UnicodeString(loc->getName()) + names[j]
-                            + "ERROR could not parse(lenient) '" + str + "' -> " + u_errorName(status));
+                            + UnicodeString("ERROR could not roundtrip ") + n
+                            + UnicodeString(" -> ") + str + UnicodeString(" -> ") + num.getLong());
                     }
-                    // We only check the spellout. The behavior is undefined for numbers < 1 and fractional numbers.
-                    if (j == 0) {
-                        if (num.getType() == Formattable::kLong && num.getLong() != n) {
-                            errln(UnicodeString(loc->getName()) + names[j]
-                                + UnicodeString("ERROR could not roundtrip ") + n
-                                + UnicodeString(" -> ") + str + UnicodeString(" -> ") + num.getLong());
-                        }
-                        else if (num.getType() == Formattable::kDouble && (int64_t)(num.getDouble() * 1000) != (int64_t)(n*1000)) {
-                            // The epsilon difference is too high.
-                            errln(UnicodeString(loc->getName()) + names[j]
-                                + UnicodeString("ERROR could not roundtrip ") + n
-                                + UnicodeString(" -> ") + str + UnicodeString(" -> ") + num.getDouble());
-                        }
+                    else if (num.getType() == Formattable::kDouble && (int64_t)(num.getDouble() * 1000) != (int64_t)(n*1000)) {
+                        // The epsilon difference is too high.
+                        errln(UnicodeString(loc->getName()) + names[j]
+                            + UnicodeString("ERROR could not roundtrip ") + n
+                            + UnicodeString(" -> ") + str + UnicodeString(" -> ") + num.getDouble());
                     }
                 }
             }
diff --git a/icu4c/source/test/intltest/listformattertest.cpp b/icu4c/source/test/intltest/listformattertest.cpp
index c57c8f5..34536e6 100644
--- a/icu4c/source/test/intltest/listformattertest.cpp
+++ b/icu4c/source/test/intltest/listformattertest.cpp
@@ -48,6 +48,8 @@
     TESTCASE_AUTO(TestBadStylesFail);
     TESTCASE_AUTO(TestCreateStyled);
     TESTCASE_AUTO(TestContextual);
+    TESTCASE_AUTO(TestNextPosition);
+    TESTCASE_AUTO(TestInt32Overflow);
     TESTCASE_AUTO_END;
 }
 
@@ -494,10 +496,10 @@
 
 void ListFormatterTest::TestFormattedValue() {
     IcuTestErrorCode status(*this, "TestFormattedValue");
-    LocalPointer<ListFormatter> fmt(ListFormatter::createInstance("en", status));
-    if (status.errIfFailureAndReset()) { return; }
 
     {
+        LocalPointer<ListFormatter> fmt(ListFormatter::createInstance("en", status));
+        if (status.errIfFailureAndReset()) { return; }
         const char16_t* message = u"Field position test 1";
         const char16_t* expectedString = u"hello, wonderful, and world";
         const UnicodeString inputs[] = {
@@ -523,6 +525,87 @@
             expectedFieldPositions,
             UPRV_LENGTHOF(expectedFieldPositions));
     }
+
+    {
+        LocalPointer<ListFormatter> fmt(ListFormatter::createInstance("zh", ULISTFMT_TYPE_UNITS, ULISTFMT_WIDTH_SHORT, status));
+        if (status.errIfFailureAndReset()) { return; }
+        const char16_t* message = u"Field position test 2 (ICU-21340)";
+        const char16_t* expectedString = u"aabbbbbbbccc";
+        const UnicodeString inputs[] = {
+            u"aa",
+            u"bbbbbbb",
+            u"ccc"
+        };
+        FormattedList result = fmt->formatStringsToValue(inputs, UPRV_LENGTHOF(inputs), status);
+        static const UFieldPositionWithCategory expectedFieldPositions[] = {
+            // field, begin index, end index
+            {UFIELD_CATEGORY_LIST_SPAN, 0, 0, 2},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD, 0, 2},
+            {UFIELD_CATEGORY_LIST_SPAN, 1, 2, 9},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD, 2, 9},
+            {UFIELD_CATEGORY_LIST_SPAN, 2, 9, 12},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD, 9, 12}};
+        checkMixedFormattedValue(
+            message,
+            result,
+            expectedString,
+            expectedFieldPositions,
+            UPRV_LENGTHOF(expectedFieldPositions));
+    }
+
+    {
+        LocalPointer<ListFormatter> fmt(ListFormatter::createInstance("en", ULISTFMT_TYPE_UNITS, ULISTFMT_WIDTH_SHORT, status));
+        if (status.errIfFailureAndReset()) { return; }
+        const char16_t* message = u"ICU-21383 Long list";
+        const char16_t* expectedString = u"a, b, c, d, e, f, g, h, i";
+        const UnicodeString inputs[] = {
+            u"a",
+            u"b",
+            u"c",
+            u"d",
+            u"e",
+            u"f",
+            u"g",
+            u"h",
+            u"i",
+        };
+        FormattedList result = fmt->formatStringsToValue(inputs, UPRV_LENGTHOF(inputs), status);
+        static const UFieldPositionWithCategory expectedFieldPositions[] = {
+            // field, begin index, end index
+            {UFIELD_CATEGORY_LIST_SPAN, 0, 0, 1},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD, 0, 1},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_LITERAL_FIELD, 1, 3},
+            {UFIELD_CATEGORY_LIST_SPAN, 1, 3, 4},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD, 3, 4},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_LITERAL_FIELD, 4, 6},
+            {UFIELD_CATEGORY_LIST_SPAN, 2, 6, 7},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD, 6, 7},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_LITERAL_FIELD, 7, 9},
+            {UFIELD_CATEGORY_LIST_SPAN, 3, 9, 10},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD, 9, 10},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_LITERAL_FIELD, 10, 12},
+            {UFIELD_CATEGORY_LIST_SPAN, 4, 12, 13},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD, 12, 13},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_LITERAL_FIELD, 13, 15},
+            {UFIELD_CATEGORY_LIST_SPAN, 5, 15, 16},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD, 15, 16},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_LITERAL_FIELD, 16, 18},
+            {UFIELD_CATEGORY_LIST_SPAN, 6, 18, 19},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD, 18, 19},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_LITERAL_FIELD, 19, 21},
+            {UFIELD_CATEGORY_LIST_SPAN, 7, 21, 22},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD, 21, 22},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_LITERAL_FIELD, 22, 24},
+            {UFIELD_CATEGORY_LIST_SPAN, 8, 24, 25},
+            {UFIELD_CATEGORY_LIST, ULISTFMT_ELEMENT_FIELD, 24, 25},
+            };
+        checkMixedFormattedValue(
+            message,
+            result,
+            expectedString,
+            expectedFieldPositions,
+            UPRV_LENGTHOF(expectedFieldPositions));
+    }
 }
 
 void ListFormatterTest::DoTheRealListStyleTesting(Locale locale,
@@ -700,4 +783,66 @@
     }
 }
 
+void ListFormatterTest::TestNextPosition() {
+    IcuTestErrorCode status(*this, "TestNextPosition");
+    std::vector<std::string> locales = { "en", "es", "zh", "ja" };
+    UListFormatterWidth widths [] = {
+        ULISTFMT_WIDTH_WIDE, ULISTFMT_WIDTH_SHORT, ULISTFMT_WIDTH_NARROW
+    };
+    const char* widthStr [] = {"wide", "short", "narrow"};
+    UListFormatterType types [] = {
+        ULISTFMT_TYPE_AND, ULISTFMT_TYPE_OR, ULISTFMT_TYPE_UNITS
+    };
+    const char* typeStr [] = {"and", "or", "units"};
+    const UnicodeString inputs[] = { u"A1", u"B2", u"C3", u"D4" };
+    for (auto width : widths) {
+        for (auto type : types) {
+            for (auto locale : locales) {
+                LocalPointer<ListFormatter> fmt(
+                        ListFormatter::createInstance(locale.c_str(), type, width, status),
+                    status);
+                if (status.errIfFailureAndReset()) {
+                    continue;
+                }
+                for (int32_t n = 1; n <= UPRV_LENGTHOF(inputs); n++) {
+                    FormattedList result = fmt->formatStringsToValue(
+                        inputs, n, status);
+                    int32_t elements = 0;
+                    icu::ConstrainedFieldPosition cfpos;
+                    cfpos.constrainCategory(UFIELD_CATEGORY_LIST);
+                    while (result.nextPosition(cfpos, status) && U_SUCCESS(status)) {
+                        if (cfpos.getField() == ULISTFMT_ELEMENT_FIELD) {
+                            elements++;
+                        }
+                    }
+                    std::string msg = locale;
+                    // Test that if there are n elements (n=1..4) in the input, then the
+                    // nextPosition() should iterate through exactly n times
+                    // with field == ULISTFMT_ELEMENT_FIELD.
+                    assertEquals((msg
+                                  .append(" w=").append(widthStr[width])
+                                  .append(" t=").append(typeStr[type])).c_str(),
+                                 n, elements);
+                }
+            }
+        }
+    }
+}
+
+void ListFormatterTest::TestInt32Overflow() {
+    if (quick) {
+        return;
+    }
+    IcuTestErrorCode status(*this, "TestInt32Overflow");
+    LocalPointer<ListFormatter> fmt(ListFormatter::createInstance("en", status), status);
+    std::vector<UnicodeString> inputs;
+    UnicodeString input(0xAAAFF00, 0x00000042, 0xAAAFF00);
+    for (int32_t i = 0; i < 16; i++) {
+      inputs.push_back(input);
+    }
+    FormattedList result = fmt->formatStringsToValue(
+        inputs.data(), static_cast<int32_t>(inputs.size()), status);
+    status.expectErrorAndReset(U_INPUT_TOO_LONG_ERROR);
+}
+
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/intltest/listformattertest.h b/icu4c/source/test/intltest/listformattertest.h
index 9c7a5dd..aeba483 100644
--- a/icu4c/source/test/intltest/listformattertest.h
+++ b/icu4c/source/test/intltest/listformattertest.h
@@ -55,6 +55,8 @@
     void TestBadStylesFail();
     void TestCreateStyled();
     void TestContextual();
+    void TestNextPosition();
+    void TestInt32Overflow();
 
   private:
     void CheckFormatting(
diff --git a/icu4c/source/test/intltest/localematchertest.cpp b/icu4c/source/test/intltest/localematchertest.cpp
index 683466b..664f300 100644
--- a/icu4c/source/test/intltest/localematchertest.cpp
+++ b/icu4c/source/test/intltest/localematchertest.cpp
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // localematchertest.cpp
 // created: 2019jul04 Markus W. Scherer
@@ -58,8 +58,10 @@
     void testBasics();
     void testSupportedDefault();
     void testUnsupportedDefault();
+    void testNoDefault();
     void testDemotion();
     void testDirection();
+    void testMaxDistanceAndIsMatch();
     void testMatch();
     void testResolvedLocale();
     void testDataDriven();
@@ -82,8 +84,10 @@
     TESTCASE_AUTO(testBasics);
     TESTCASE_AUTO(testSupportedDefault);
     TESTCASE_AUTO(testUnsupportedDefault);
+    TESTCASE_AUTO(testNoDefault);
     TESTCASE_AUTO(testDemotion);
     TESTCASE_AUTO(testDirection);
+    TESTCASE_AUTO(testMaxDistanceAndIsMatch);
     TESTCASE_AUTO(testMatch);
     TESTCASE_AUTO(testResolvedLocale);
     TESTCASE_AUTO(testDataDriven);
@@ -302,6 +306,29 @@
                  -1, result.getSupportedIndex());
 }
 
+void LocaleMatcherTest::testNoDefault() {
+    // We want nullptr instead of any default locale.
+    IcuTestErrorCode errorCode(*this, "testNoDefault");
+    Locale locales[] = { "fr", "en_GB", "en" };
+    LocaleMatcher matcher = LocaleMatcher::Builder().
+        setSupportedLocales(ARRAY_RANGE(locales)).
+        setNoDefaultLocale().
+        build(errorCode);
+    const Locale *best = matcher.getBestMatch("en_GB", errorCode);
+    assertEquals("getBestMatch(en_GB)", "en_GB", locString(best));
+    best = matcher.getBestMatch("en_US", errorCode);
+    assertEquals("getBestMatch(en_US)", "en", locString(best));
+    best = matcher.getBestMatch("fr_FR", errorCode);
+    assertEquals("getBestMatch(fr_FR)", "fr", locString(best));
+    best = matcher.getBestMatch("ja_JP", errorCode);
+    assertEquals("getBestMatch(ja_JP)", "(null)", locString(best));
+    LocaleMatcher::Result result = matcher.getBestMatchResult("ja_JP", errorCode);
+    assertEquals("getBestMatchResult(ja_JP).supp",
+                 "(null)", locString(result.getSupportedLocale()));
+    assertEquals("getBestMatchResult(ja_JP).suppIndex",
+                 -1, result.getSupportedIndex());
+}
+
 void LocaleMatcherTest::testDemotion() {
     IcuTestErrorCode errorCode(*this, "testDemotion");
     Locale supported[] = { "fr", "de-CH", "it" };
@@ -355,6 +382,36 @@
     }
 }
 
+void LocaleMatcherTest::testMaxDistanceAndIsMatch() {
+    IcuTestErrorCode errorCode(*this, "testMaxDistanceAndIsMatch");
+    LocaleMatcher::Builder builder;
+    LocaleMatcher standard = builder.build(errorCode);
+    Locale germanLux("de-LU");
+    Locale germanPhoenician("de-Phnx-AT");
+    Locale greek("el");
+    assertTrue("standard de-LU / de", standard.isMatch(germanLux, Locale::getGerman(), errorCode));
+    assertFalse("standard de-Phnx-AT / de",
+                standard.isMatch(germanPhoenician, Locale::getGerman(), errorCode));
+
+    // Allow a script difference to still match.
+    LocaleMatcher loose =
+        builder.setMaxDistance(germanPhoenician, Locale::getGerman()).build(errorCode);
+    assertTrue("loose de-LU / de", loose.isMatch(germanLux, Locale::getGerman(), errorCode));
+    assertTrue("loose de-Phnx-AT / de",
+               loose.isMatch(germanPhoenician, Locale::getGerman(), errorCode));
+    assertFalse("loose el / de", loose.isMatch(greek, Locale::getGerman(), errorCode));
+
+    // Allow at most a regional difference.
+    LocaleMatcher regional =
+        builder.setMaxDistance(Locale("de-AT"), Locale::getGerman()).build(errorCode);
+    assertTrue("regional de-LU / de",
+               regional.isMatch(Locale("de-LU"), Locale::getGerman(), errorCode));
+    assertFalse("regional da / no", regional.isMatch(Locale("da"), Locale("no"), errorCode));
+    assertFalse("regional zh-Hant / zh",
+                regional.isMatch(Locale::getChinese(), Locale::getTraditionalChinese(), errorCode));
+}
+
+
 void LocaleMatcherTest::testMatch() {
     IcuTestErrorCode errorCode(*this, "testMatch");
     LocaleMatcher matcher = LocaleMatcher::Builder().build(errorCode);
diff --git a/icu4c/source/test/intltest/locnmtst.cpp b/icu4c/source/test/intltest/locnmtst.cpp
index 26f730d..61baca2 100644
--- a/icu4c/source/test/intltest/locnmtst.cpp
+++ b/icu4c/source/test/intltest/locnmtst.cpp
@@ -82,6 +82,7 @@
         TESTCASE(12, TestUldnDisplayContext);
         TESTCASE(13, TestUldnWithGarbage);
         TESTCASE(14, TestSubstituteHandling);
+        TESTCASE(15, TestNumericRegionID);
 #endif
         default:
             name = "";
@@ -298,7 +299,6 @@
 static UChar daFor_en_cabud[] = {0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x62,0x75,0x64,0x64,0x68,0x69,0x73,0x74,0x69,0x73,0x6B,0x20,
                                  0x6B,0x61,0x6C,0x65,0x6E,0x64,0x65,0x72,0x29,0}; //"engelsk (buddhistisk kalender)"
 static UChar daFor_en_GB[]    = {0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x53,0x74,0x6F,0x72,0x62,0x72,0x69,0x74,0x61,0x6E,0x6E,0x69,0x65,0x6E,0x29,0}; //"engelsk (Storbritannien)"
-static UChar daFor_en_GB_S[]  = {0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x55,0x4B,0x29,0}; //"engelsk (UK)"
 static UChar daFor_en_GB_D[]  = {0x62,0x72,0x69,0x74,0x69,0x73,0x6B,0x20,0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0}; //"britisk engelsk"
 static UChar esFor_en[]       = {0x69,0x6E,0x67,0x6C,0xE9,0x73,0}; //"ingles" with acute on the e
 static UChar esFor_en_GB[]    = {0x69,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x28,0x52,0x65,0x69,0x6E,0x6F,0x20,0x55,0x6E,0x69,0x64,0x6F,0x29,0}; //"ingles (Reino Unido)" ...
@@ -310,7 +310,6 @@
 static UChar daFor_en_cabudT[]= {0x45,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x62,0x75,0x64,0x64,0x68,0x69,0x73,0x74,0x69,0x73,0x6B,0x20,
                                  0x6B,0x61,0x6C,0x65,0x6E,0x64,0x65,0x72,0x29,0}; //"Engelsk (buddhistisk kalender)"
 static UChar daFor_en_GB_T[]  = {0x45,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x53,0x74,0x6F,0x72,0x62,0x72,0x69,0x74,0x61,0x6E,0x6E,0x69,0x65,0x6E,0x29,0}; //"Engelsk (Storbritannien)"
-static UChar daFor_en_GB_ST[] = {0x45,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x55,0x4B,0x29,0}; //"Engelsk (UK)"
 static UChar daFor_en_GB_DT[] = {0x42,0x72,0x69,0x74,0x69,0x73,0x6B,0x20,0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0}; //"Britisk engelsk"
 static UChar esFor_en_T[]     = {0x49,0x6E,0x67,0x6C,0xE9,0x73,0}; //"Ingles" with acute on the e
 static UChar esFor_en_GB_T[]  = {0x49,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x28,0x52,0x65,0x69,0x6E,0x6F,0x20,0x55,0x6E,0x69,0x64,0x6F,0x29,0}; //"Ingles (Reino Unido)" ...
@@ -323,7 +322,7 @@
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,    UDISPCTX_LENGTH_FULL,   en,    daFor_en },
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,    UDISPCTX_LENGTH_FULL,   en_cabud, daFor_en_cabud },
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,    UDISPCTX_LENGTH_FULL,   en_GB, daFor_en_GB },
-    { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,    UDISPCTX_LENGTH_SHORT,  en_GB, daFor_en_GB_S },
+    { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,    UDISPCTX_LENGTH_SHORT,  en_GB, daFor_en_GB },
     { "da", UDISPCTX_DIALECT_NAMES,  UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,    UDISPCTX_LENGTH_FULL,   en_GB, daFor_en_GB_D },
     { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,    UDISPCTX_LENGTH_FULL,   en,    esFor_en },
     { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,    UDISPCTX_LENGTH_FULL,   en_GB, esFor_en_GB },
@@ -334,7 +333,7 @@
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, UDISPCTX_LENGTH_FULL,   en,    daFor_en_T },
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, UDISPCTX_LENGTH_FULL,   en_cabud, daFor_en_cabudT },
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, UDISPCTX_LENGTH_FULL,   en_GB, daFor_en_GB_T },
-    { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, UDISPCTX_LENGTH_SHORT,  en_GB, daFor_en_GB_ST },
+    { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, UDISPCTX_LENGTH_SHORT,  en_GB, daFor_en_GB_T },
     { "da", UDISPCTX_DIALECT_NAMES,  UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, UDISPCTX_LENGTH_FULL,   en_GB, daFor_en_GB_DT },
     { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, UDISPCTX_LENGTH_FULL,   en,    esFor_en_T },
     { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, UDISPCTX_LENGTH_FULL,   en_GB, esFor_en_GB_T },
@@ -345,7 +344,7 @@
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU,       UDISPCTX_LENGTH_FULL,   en,    daFor_en_T },
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU,       UDISPCTX_LENGTH_FULL,   en_cabud, daFor_en_cabudT },
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU,       UDISPCTX_LENGTH_FULL,   en_GB, daFor_en_GB_T },
-    { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU,       UDISPCTX_LENGTH_SHORT,  en_GB, daFor_en_GB_ST },
+    { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU,       UDISPCTX_LENGTH_SHORT,  en_GB, daFor_en_GB_T },
     { "da", UDISPCTX_DIALECT_NAMES,  UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU,       UDISPCTX_LENGTH_FULL,   en_GB, daFor_en_GB_DT },
     { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU,       UDISPCTX_LENGTH_FULL,   en,    esFor_en_T },
     { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU,       UDISPCTX_LENGTH_FULL,   en_GB, esFor_en_GB_T },
@@ -356,7 +355,7 @@
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE,            UDISPCTX_LENGTH_FULL,   en,    daFor_en },
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE,            UDISPCTX_LENGTH_FULL,   en_cabud, daFor_en_cabud },
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE,            UDISPCTX_LENGTH_FULL,   en_GB, daFor_en_GB },
-    { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE,            UDISPCTX_LENGTH_SHORT,  en_GB, daFor_en_GB_S },
+    { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE,            UDISPCTX_LENGTH_SHORT,  en_GB, daFor_en_GB },
     { "da", UDISPCTX_DIALECT_NAMES,  UDISPCTX_CAPITALIZATION_FOR_STANDALONE,            UDISPCTX_LENGTH_FULL,   en_GB, daFor_en_GB_D },
     { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE,            UDISPCTX_LENGTH_FULL,   en,    esFor_en_T },
     { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE,            UDISPCTX_LENGTH_FULL,   en_GB, esFor_en_GB_T },
@@ -422,6 +421,23 @@
   delete ldn;
 }
 
+void LocaleDisplayNamesTest::TestNumericRegionID() {
+    UErrorCode err = U_ZERO_ERROR;
+    ULocaleDisplayNames* ldn = uldn_open("es_MX", ULDN_STANDARD_NAMES, &err);
+    UChar displayName[200];
+    int32_t displayNameLength = uldn_regionDisplayName(ldn, "019", displayName, 200, &err);
+    test_assert(U_SUCCESS(err));
+    test_assert_equal(UnicodeString(u"América"), UnicodeString(displayName));
+    uldn_close(ldn);    
+
+    err = U_ZERO_ERROR; // reset in case the test above returned an error code
+    ldn = uldn_open("en_AU", ULDN_STANDARD_NAMES, &err);
+    displayNameLength = uldn_regionDisplayName(ldn, "002", displayName, 200, &err);
+    test_assert(U_SUCCESS(err));
+    test_assert_equal(UnicodeString(u"Africa"), UnicodeString(displayName));
+    uldn_close(ldn);    
+}
+
 static const char unknown_region[] = "wx";
 static const char unknown_lang[] = "xy";
 static const char unknown_script[] = "wxyz";
diff --git a/icu4c/source/test/intltest/locnmtst.h b/icu4c/source/test/intltest/locnmtst.h
index ad0af46..e09a7d3 100644
--- a/icu4c/source/test/intltest/locnmtst.h
+++ b/icu4c/source/test/intltest/locnmtst.h
@@ -38,6 +38,7 @@
     void TestUldnDisplayContext(void);
     void TestUldnWithGarbage(void);
     void TestSubstituteHandling(void);
+    void TestNumericRegionID(void);
 
     void VerifySubstitute(LocaleDisplayNames* ldn);
     void VerifyNoSubstitute(LocaleDisplayNames* ldn);
diff --git a/icu4c/source/test/intltest/loctest.cpp b/icu4c/source/test/intltest/loctest.cpp
index 7267a11..1853ad4 100644
--- a/icu4c/source/test/intltest/loctest.cpp
+++ b/icu4c/source/test/intltest/loctest.cpp
@@ -32,6 +32,8 @@
 #include "putilimp.h"
 #include "hash.h"
 #include "locmap.h"
+#include "uparse.h"
+#include "ulocimp.h"
 
 static const char* const rawData[33][8] = {
 
@@ -257,6 +259,8 @@
     TESTCASE_AUTO(TestBug13554);
     TESTCASE_AUTO(TestBug20410);
     TESTCASE_AUTO(TestBug20900);
+    TESTCASE_AUTO(TestLocaleCanonicalizationFromFile);
+    TESTCASE_AUTO(TestKnownCanonicalizedListCorrect);
     TESTCASE_AUTO(TestConstructorAcceptsBCP47);
     TESTCASE_AUTO(TestForLanguageTag);
     TESTCASE_AUTO(TestToLanguageTag);
@@ -277,6 +281,7 @@
     TESTCASE_AUTO(TestSetUnicodeKeywordValueInLongLocale);
     TESTCASE_AUTO(TestSetUnicodeKeywordValueNullInLongLocale);
     TESTCASE_AUTO(TestCanonicalize);
+    TESTCASE_AUTO(TestLeak21419);
     TESTCASE_AUTO_END;
 }
 
@@ -1711,7 +1716,2111 @@
             "und_Moon_AQ",
             "_Moon_AQ",
             "_Moon_AQ"
-        },
+        }, {
+            "aa",
+            "aa_Latn_ET",
+            "aa"
+        }, {
+            "af",
+            "af_Latn_ZA",
+            "af"
+        }, {
+            "ak",
+            "ak_Latn_GH",
+            "ak"
+        }, {
+            "am",
+            "am_Ethi_ET",
+            "am"
+        }, {
+            "ar",
+            "ar_Arab_EG",
+            "ar"
+        }, {
+            "as",
+            "as_Beng_IN",
+            "as"
+        }, {
+            "az",
+            "az_Latn_AZ",
+            "az"
+        }, {
+            "be",
+            "be_Cyrl_BY",
+            "be"
+        }, {
+            "bg",
+            "bg_Cyrl_BG",
+            "bg"
+        }, {
+            "bn",
+            "bn_Beng_BD",
+            "bn"
+        }, {
+            "bo",
+            "bo_Tibt_CN",
+            "bo"
+        }, {
+            "bs",
+            "bs_Latn_BA",
+            "bs"
+        }, {
+            "ca",
+            "ca_Latn_ES",
+            "ca"
+        }, {
+            "ch",
+            "ch_Latn_GU",
+            "ch"
+        }, {
+            "chk",
+            "chk_Latn_FM",
+            "chk"
+        }, {
+            "cs",
+            "cs_Latn_CZ",
+            "cs"
+        }, {
+            "cy",
+            "cy_Latn_GB",
+            "cy"
+        }, {
+            "da",
+            "da_Latn_DK",
+            "da"
+        }, {
+            "de",
+            "de_Latn_DE",
+            "de"
+        }, {
+            "dv",
+            "dv_Thaa_MV",
+            "dv"
+        }, {
+            "dz",
+            "dz_Tibt_BT",
+            "dz"
+        }, {
+            "ee",
+            "ee_Latn_GH",
+            "ee"
+        }, {
+            "el",
+            "el_Grek_GR",
+            "el"
+        }, {
+            "en",
+            "en_Latn_US",
+            "en"
+        }, {
+            "es",
+            "es_Latn_ES",
+            "es"
+        }, {
+            "et",
+            "et_Latn_EE",
+            "et"
+        }, {
+            "eu",
+            "eu_Latn_ES",
+            "eu"
+        }, {
+            "fa",
+            "fa_Arab_IR",
+            "fa"
+        }, {
+            "fi",
+            "fi_Latn_FI",
+            "fi"
+        }, {
+            "fil",
+            "fil_Latn_PH",
+            "fil"
+        }, {
+            "fj",
+            "fj_Latn_FJ",
+            "fj"
+        }, {
+            "fo",
+            "fo_Latn_FO",
+            "fo"
+        }, {
+            "fr",
+            "fr_Latn_FR",
+            "fr"
+        }, {
+            "fur",
+            "fur_Latn_IT",
+            "fur"
+        }, {
+            "ga",
+            "ga_Latn_IE",
+            "ga"
+        }, {
+            "gaa",
+            "gaa_Latn_GH",
+            "gaa"
+        }, {
+            "gl",
+            "gl_Latn_ES",
+            "gl"
+        }, {
+            "gn",
+            "gn_Latn_PY",
+            "gn"
+        }, {
+            "gu",
+            "gu_Gujr_IN",
+            "gu"
+        }, {
+            "ha",
+            "ha_Latn_NG",
+            "ha"
+        }, {
+            "haw",
+            "haw_Latn_US",
+            "haw"
+        }, {
+            "he",
+            "he_Hebr_IL",
+            "he"
+        }, {
+            "hi",
+            "hi_Deva_IN",
+            "hi"
+        }, {
+            "hr",
+            "hr_Latn_HR",
+            "hr"
+        }, {
+            "ht",
+            "ht_Latn_HT",
+            "ht"
+        }, {
+            "hu",
+            "hu_Latn_HU",
+            "hu"
+        }, {
+            "hy",
+            "hy_Armn_AM",
+            "hy"
+        }, {
+            "id",
+            "id_Latn_ID",
+            "id"
+        }, {
+            "ig",
+            "ig_Latn_NG",
+            "ig"
+        }, {
+            "ii",
+            "ii_Yiii_CN",
+            "ii"
+        }, {
+            "is",
+            "is_Latn_IS",
+            "is"
+        }, {
+            "it",
+            "it_Latn_IT",
+            "it"
+        }, {
+            "ja",
+            "ja_Jpan_JP",
+            "ja"
+        }, {
+            "ka",
+            "ka_Geor_GE",
+            "ka"
+        }, {
+            "kaj",
+            "kaj_Latn_NG",
+            "kaj"
+        }, {
+            "kam",
+            "kam_Latn_KE",
+            "kam"
+        }, {
+            "kk",
+            "kk_Cyrl_KZ",
+            "kk"
+        }, {
+            "kl",
+            "kl_Latn_GL",
+            "kl"
+        }, {
+            "km",
+            "km_Khmr_KH",
+            "km"
+        }, {
+            "kn",
+            "kn_Knda_IN",
+            "kn"
+        }, {
+            "ko",
+            "ko_Kore_KR",
+            "ko"
+        }, {
+            "kok",
+            "kok_Deva_IN",
+            "kok"
+        }, {
+            "kpe",
+            "kpe_Latn_LR",
+            "kpe"
+        }, {
+            "ku",
+            "ku_Latn_TR",
+            "ku"
+        }, {
+            "ky",
+            "ky_Cyrl_KG",
+            "ky"
+        }, {
+            "la",
+            "la_Latn_VA",
+            "la"
+        }, {
+            "ln",
+            "ln_Latn_CD",
+            "ln"
+        }, {
+            "lo",
+            "lo_Laoo_LA",
+            "lo"
+        }, {
+            "lt",
+            "lt_Latn_LT",
+            "lt"
+        }, {
+            "lv",
+            "lv_Latn_LV",
+            "lv"
+        }, {
+            "mg",
+            "mg_Latn_MG",
+            "mg"
+        }, {
+            "mh",
+            "mh_Latn_MH",
+            "mh"
+        }, {
+            "mk",
+            "mk_Cyrl_MK",
+            "mk"
+        }, {
+            "ml",
+            "ml_Mlym_IN",
+            "ml"
+        }, {
+            "mn",
+            "mn_Cyrl_MN",
+            "mn"
+        }, {
+            "mr",
+            "mr_Deva_IN",
+            "mr"
+        }, {
+            "ms",
+            "ms_Latn_MY",
+            "ms"
+        }, {
+            "mt",
+            "mt_Latn_MT",
+            "mt"
+        }, {
+            "my",
+            "my_Mymr_MM",
+            "my"
+        }, {
+            "na",
+            "na_Latn_NR",
+            "na"
+        }, {
+            "ne",
+            "ne_Deva_NP",
+            "ne"
+        }, {
+            "niu",
+            "niu_Latn_NU",
+            "niu"
+        }, {
+            "nl",
+            "nl_Latn_NL",
+            "nl"
+        }, {
+            "nn",
+            "nn_Latn_NO",
+            "nn"
+        }, {
+            "nr",
+            "nr_Latn_ZA",
+            "nr"
+        }, {
+            "nso",
+            "nso_Latn_ZA",
+            "nso"
+        }, {
+            "om",
+            "om_Latn_ET",
+            "om"
+        }, {
+            "or",
+            "or_Orya_IN",
+            "or"
+        }, {
+            "pa",
+            "pa_Guru_IN",
+            "pa"
+        }, {
+            "pa_Arab",
+            "pa_Arab_PK",
+            "pa_PK"
+        }, {
+            "pa_PK",
+            "pa_Arab_PK",
+            "pa_PK"
+        }, {
+            "pap",
+            "pap_Latn_AW",
+            "pap"
+        }, {
+            "pau",
+            "pau_Latn_PW",
+            "pau"
+        }, {
+            "pl",
+            "pl_Latn_PL",
+            "pl"
+        }, {
+            "ps",
+            "ps_Arab_AF",
+            "ps"
+        }, {
+            "pt",
+            "pt_Latn_BR",
+            "pt"
+        }, {
+            "rn",
+            "rn_Latn_BI",
+            "rn"
+        }, {
+            "ro",
+            "ro_Latn_RO",
+            "ro"
+        }, {
+            "ru",
+            "ru_Cyrl_RU",
+            "ru"
+        }, {
+            "rw",
+            "rw_Latn_RW",
+            "rw"
+        }, {
+            "sa",
+            "sa_Deva_IN",
+            "sa"
+        }, {
+            "se",
+            "se_Latn_NO",
+            "se"
+        }, {
+            "sg",
+            "sg_Latn_CF",
+            "sg"
+        }, {
+            "si",
+            "si_Sinh_LK",
+            "si"
+        }, {
+            "sid",
+            "sid_Latn_ET",
+            "sid"
+        }, {
+            "sk",
+            "sk_Latn_SK",
+            "sk"
+        }, {
+            "sl",
+            "sl_Latn_SI",
+            "sl"
+        }, {
+            "sm",
+            "sm_Latn_WS",
+            "sm"
+        }, {
+            "so",
+            "so_Latn_SO",
+            "so"
+        }, {
+            "sq",
+            "sq_Latn_AL",
+            "sq"
+        }, {
+            "sr",
+            "sr_Cyrl_RS",
+            "sr"
+        }, {
+            "ss",
+            "ss_Latn_ZA",
+            "ss"
+        }, {
+            "st",
+            "st_Latn_ZA",
+            "st"
+        }, {
+            "sv",
+            "sv_Latn_SE",
+            "sv"
+        }, {
+            "sw",
+            "sw_Latn_TZ",
+            "sw"
+        }, {
+            "ta",
+            "ta_Taml_IN",
+            "ta"
+        }, {
+            "te",
+            "te_Telu_IN",
+            "te"
+        }, {
+            "tet",
+            "tet_Latn_TL",
+            "tet"
+        }, {
+            "tg",
+            "tg_Cyrl_TJ",
+            "tg"
+        }, {
+            "th",
+            "th_Thai_TH",
+            "th"
+        }, {
+            "ti",
+            "ti_Ethi_ET",
+            "ti"
+        }, {
+            "tig",
+            "tig_Ethi_ER",
+            "tig"
+        }, {
+            "tk",
+            "tk_Latn_TM",
+            "tk"
+        }, {
+            "tkl",
+            "tkl_Latn_TK",
+            "tkl"
+        }, {
+            "tn",
+            "tn_Latn_ZA",
+            "tn"
+        }, {
+            "to",
+            "to_Latn_TO",
+            "to"
+        }, {
+            "tpi",
+            "tpi_Latn_PG",
+            "tpi"
+        }, {
+            "tr",
+            "tr_Latn_TR",
+            "tr"
+        }, {
+            "ts",
+            "ts_Latn_ZA",
+            "ts"
+        }, {
+            "tt",
+            "tt_Cyrl_RU",
+            "tt"
+        }, {
+            "tvl",
+            "tvl_Latn_TV",
+            "tvl"
+        }, {
+            "ty",
+            "ty_Latn_PF",
+            "ty"
+        }, {
+            "uk",
+            "uk_Cyrl_UA",
+            "uk"
+        }, {
+            "und",
+            "en_Latn_US",
+            "en"
+        }, {
+            "und_AD",
+            "ca_Latn_AD",
+            "ca_AD"
+        }, {
+            "und_AE",
+            "ar_Arab_AE",
+            "ar_AE"
+        }, {
+            "und_AF",
+            "fa_Arab_AF",
+            "fa_AF"
+        }, {
+            "und_AL",
+            "sq_Latn_AL",
+            "sq"
+        }, {
+            "und_AM",
+            "hy_Armn_AM",
+            "hy"
+        }, {
+            "und_AO",
+            "pt_Latn_AO",
+            "pt_AO"
+        }, {
+            "und_AR",
+            "es_Latn_AR",
+            "es_AR"
+        }, {
+            "und_AS",
+            "sm_Latn_AS",
+            "sm_AS"
+        }, {
+            "und_AT",
+            "de_Latn_AT",
+            "de_AT"
+        }, {
+            "und_AW",
+            "nl_Latn_AW",
+            "nl_AW"
+        }, {
+            "und_AX",
+            "sv_Latn_AX",
+            "sv_AX"
+        }, {
+            "und_AZ",
+            "az_Latn_AZ",
+            "az"
+        }, {
+            "und_Arab",
+            "ar_Arab_EG",
+            "ar"
+        }, {
+            "und_Arab_IN",
+            "ur_Arab_IN",
+            "ur_IN"
+        }, {
+            "und_Arab_PK",
+            "ur_Arab_PK",
+            "ur"
+        }, {
+            "und_Arab_SN",
+            "ar_Arab_SN",
+            "ar_SN"
+        }, {
+            "und_Armn",
+            "hy_Armn_AM",
+            "hy"
+        }, {
+            "und_BA",
+            "bs_Latn_BA",
+            "bs"
+        }, {
+            "und_BD",
+            "bn_Beng_BD",
+            "bn"
+        }, {
+            "und_BE",
+            "nl_Latn_BE",
+            "nl_BE"
+        }, {
+            "und_BF",
+            "fr_Latn_BF",
+            "fr_BF"
+        }, {
+            "und_BG",
+            "bg_Cyrl_BG",
+            "bg"
+        }, {
+            "und_BH",
+            "ar_Arab_BH",
+            "ar_BH"
+        }, {
+            "und_BI",
+            "rn_Latn_BI",
+            "rn"
+        }, {
+            "und_BJ",
+            "fr_Latn_BJ",
+            "fr_BJ"
+        }, {
+            "und_BN",
+            "ms_Latn_BN",
+            "ms_BN"
+        }, {
+            "und_BO",
+            "es_Latn_BO",
+            "es_BO"
+        }, {
+            "und_BR",
+            "pt_Latn_BR",
+            "pt"
+        }, {
+            "und_BT",
+            "dz_Tibt_BT",
+            "dz"
+        }, {
+            "und_BY",
+            "be_Cyrl_BY",
+            "be"
+        }, {
+            "und_Beng",
+            "bn_Beng_BD",
+            "bn"
+        }, {
+            "und_Beng_IN",
+            "bn_Beng_IN",
+            "bn_IN"
+        }, {
+            "und_CD",
+            "sw_Latn_CD",
+            "sw_CD"
+        }, {
+            "und_CF",
+            "fr_Latn_CF",
+            "fr_CF"
+        }, {
+            "und_CG",
+            "fr_Latn_CG",
+            "fr_CG"
+        }, {
+            "und_CH",
+            "de_Latn_CH",
+            "de_CH"
+        }, {
+            "und_CI",
+            "fr_Latn_CI",
+            "fr_CI"
+        }, {
+            "und_CL",
+            "es_Latn_CL",
+            "es_CL"
+        }, {
+            "und_CM",
+            "fr_Latn_CM",
+            "fr_CM"
+        }, {
+            "und_CN",
+            "zh_Hans_CN",
+            "zh"
+        }, {
+            "und_CO",
+            "es_Latn_CO",
+            "es_CO"
+        }, {
+            "und_CR",
+            "es_Latn_CR",
+            "es_CR"
+        }, {
+            "und_CU",
+            "es_Latn_CU",
+            "es_CU"
+        }, {
+            "und_CV",
+            "pt_Latn_CV",
+            "pt_CV"
+        }, {
+            "und_CY",
+            "el_Grek_CY",
+            "el_CY"
+        }, {
+            "und_CZ",
+            "cs_Latn_CZ",
+            "cs"
+        }, {
+            "und_Cyrl",
+            "ru_Cyrl_RU",
+            "ru"
+        }, {
+            "und_Cyrl_KZ",
+            "ru_Cyrl_KZ",
+            "ru_KZ"
+        }, {
+            "und_DE",
+            "de_Latn_DE",
+            "de"
+        }, {
+            "und_DJ",
+            "aa_Latn_DJ",
+            "aa_DJ"
+        }, {
+            "und_DK",
+            "da_Latn_DK",
+            "da"
+        }, {
+            "und_DO",
+            "es_Latn_DO",
+            "es_DO"
+        }, {
+            "und_DZ",
+            "ar_Arab_DZ",
+            "ar_DZ"
+        }, {
+            "und_Deva",
+            "hi_Deva_IN",
+            "hi"
+        }, {
+            "und_EC",
+            "es_Latn_EC",
+            "es_EC"
+        }, {
+            "und_EE",
+            "et_Latn_EE",
+            "et"
+        }, {
+            "und_EG",
+            "ar_Arab_EG",
+            "ar"
+        }, {
+            "und_EH",
+            "ar_Arab_EH",
+            "ar_EH"
+        }, {
+            "und_ER",
+            "ti_Ethi_ER",
+            "ti_ER"
+        }, {
+            "und_ES",
+            "es_Latn_ES",
+            "es"
+        }, {
+            "und_ET",
+            "am_Ethi_ET",
+            "am"
+        }, {
+            "und_Ethi",
+            "am_Ethi_ET",
+            "am"
+        }, {
+            "und_Ethi_ER",
+            "am_Ethi_ER",
+            "am_ER"
+        }, {
+            "und_FI",
+            "fi_Latn_FI",
+            "fi"
+        }, {
+            "und_FM",
+            "en_Latn_FM",
+            "en_FM"
+        }, {
+            "und_FO",
+            "fo_Latn_FO",
+            "fo"
+        }, {
+            "und_FR",
+            "fr_Latn_FR",
+            "fr"
+        }, {
+            "und_GA",
+            "fr_Latn_GA",
+            "fr_GA"
+        }, {
+            "und_GE",
+            "ka_Geor_GE",
+            "ka"
+        }, {
+            "und_GF",
+            "fr_Latn_GF",
+            "fr_GF"
+        }, {
+            "und_GL",
+            "kl_Latn_GL",
+            "kl"
+        }, {
+            "und_GN",
+            "fr_Latn_GN",
+            "fr_GN"
+        }, {
+            "und_GP",
+            "fr_Latn_GP",
+            "fr_GP"
+        }, {
+            "und_GQ",
+            "es_Latn_GQ",
+            "es_GQ"
+        }, {
+            "und_GR",
+            "el_Grek_GR",
+            "el"
+        }, {
+            "und_GT",
+            "es_Latn_GT",
+            "es_GT"
+        }, {
+            "und_GU",
+            "en_Latn_GU",
+            "en_GU"
+        }, {
+            "und_GW",
+            "pt_Latn_GW",
+            "pt_GW"
+        }, {
+            "und_Geor",
+            "ka_Geor_GE",
+            "ka"
+        }, {
+            "und_Grek",
+            "el_Grek_GR",
+            "el"
+        }, {
+            "und_Gujr",
+            "gu_Gujr_IN",
+            "gu"
+        }, {
+            "und_Guru",
+            "pa_Guru_IN",
+            "pa"
+        }, {
+            "und_HK",
+            "zh_Hant_HK",
+            "zh_HK"
+        }, {
+            "und_HN",
+            "es_Latn_HN",
+            "es_HN"
+        }, {
+            "und_HR",
+            "hr_Latn_HR",
+            "hr"
+        }, {
+            "und_HT",
+            "ht_Latn_HT",
+            "ht"
+        }, {
+            "und_HU",
+            "hu_Latn_HU",
+            "hu"
+        }, {
+            "und_Hani",
+            "zh_Hani_CN",
+            "zh_Hani"
+        }, {
+            "und_Hans",
+            "zh_Hans_CN",
+            "zh"
+        }, {
+            "und_Hant",
+            "zh_Hant_TW",
+            "zh_TW"
+        }, {
+            "und_Hebr",
+            "he_Hebr_IL",
+            "he"
+        }, {
+            "und_ID",
+            "id_Latn_ID",
+            "id"
+        }, {
+            "und_IL",
+            "he_Hebr_IL",
+            "he"
+        }, {
+            "und_IN",
+            "hi_Deva_IN",
+            "hi"
+        }, {
+            "und_IQ",
+            "ar_Arab_IQ",
+            "ar_IQ"
+        }, {
+            "und_IR",
+            "fa_Arab_IR",
+            "fa"
+        }, {
+            "und_IS",
+            "is_Latn_IS",
+            "is"
+        }, {
+            "und_IT",
+            "it_Latn_IT",
+            "it"
+        }, {
+            "und_JO",
+            "ar_Arab_JO",
+            "ar_JO"
+        }, {
+            "und_JP",
+            "ja_Jpan_JP",
+            "ja"
+        }, {
+            "und_Jpan",
+            "ja_Jpan_JP",
+            "ja"
+        }, {
+            "und_KG",
+            "ky_Cyrl_KG",
+            "ky"
+        }, {
+            "und_KH",
+            "km_Khmr_KH",
+            "km"
+        }, {
+            "und_KM",
+            "ar_Arab_KM",
+            "ar_KM"
+        }, {
+            "und_KP",
+            "ko_Kore_KP",
+            "ko_KP"
+        }, {
+            "und_KR",
+            "ko_Kore_KR",
+            "ko"
+        }, {
+            "und_KW",
+            "ar_Arab_KW",
+            "ar_KW"
+        }, {
+            "und_KZ",
+            "ru_Cyrl_KZ",
+            "ru_KZ"
+        }, {
+            "und_Khmr",
+            "km_Khmr_KH",
+            "km"
+        }, {
+            "und_Knda",
+            "kn_Knda_IN",
+            "kn"
+        }, {
+            "und_Kore",
+            "ko_Kore_KR",
+            "ko"
+        }, {
+            "und_LA",
+            "lo_Laoo_LA",
+            "lo"
+        }, {
+            "und_LB",
+            "ar_Arab_LB",
+            "ar_LB"
+        }, {
+            "und_LI",
+            "de_Latn_LI",
+            "de_LI"
+        }, {
+            "und_LK",
+            "si_Sinh_LK",
+            "si"
+        }, {
+            "und_LS",
+            "st_Latn_LS",
+            "st_LS"
+        }, {
+            "und_LT",
+            "lt_Latn_LT",
+            "lt"
+        }, {
+            "und_LU",
+            "fr_Latn_LU",
+            "fr_LU"
+        }, {
+            "und_LV",
+            "lv_Latn_LV",
+            "lv"
+        }, {
+            "und_LY",
+            "ar_Arab_LY",
+            "ar_LY"
+        }, {
+            "und_Laoo",
+            "lo_Laoo_LA",
+            "lo"
+        }, {
+            "und_Latn_ES",
+            "es_Latn_ES",
+            "es"
+        }, {
+            "und_Latn_ET",
+            "en_Latn_ET",
+            "en_ET"
+        }, {
+            "und_Latn_GB",
+            "en_Latn_GB",
+            "en_GB"
+        }, {
+            "und_Latn_GH",
+            "ak_Latn_GH",
+            "ak"
+        }, {
+            "und_Latn_ID",
+            "id_Latn_ID",
+            "id"
+        }, {
+            "und_Latn_IT",
+            "it_Latn_IT",
+            "it"
+        }, {
+            "und_Latn_NG",
+            "en_Latn_NG",
+            "en_NG"
+        }, {
+            "und_Latn_TR",
+            "tr_Latn_TR",
+            "tr"
+        }, {
+            "und_Latn_ZA",
+            "en_Latn_ZA",
+            "en_ZA"
+        }, {
+            "und_MA",
+            "ar_Arab_MA",
+            "ar_MA"
+        }, {
+            "und_MC",
+            "fr_Latn_MC",
+            "fr_MC"
+        }, {
+            "und_MD",
+            "ro_Latn_MD",
+            "ro_MD"
+        }, {
+            "und_ME",
+            "sr_Latn_ME",
+            "sr_ME"
+        }, {
+            "und_MG",
+            "mg_Latn_MG",
+            "mg"
+        }, {
+            "und_MK",
+            "mk_Cyrl_MK",
+            "mk"
+        }, {
+            "und_ML",
+            "bm_Latn_ML",
+            "bm"
+        }, {
+            "und_MM",
+            "my_Mymr_MM",
+            "my"
+        }, {
+            "und_MN",
+            "mn_Cyrl_MN",
+            "mn"
+        }, {
+            "und_MO",
+            "zh_Hant_MO",
+            "zh_MO"
+        }, {
+            "und_MQ",
+            "fr_Latn_MQ",
+            "fr_MQ"
+        }, {
+            "und_MR",
+            "ar_Arab_MR",
+            "ar_MR"
+        }, {
+            "und_MT",
+            "mt_Latn_MT",
+            "mt"
+        }, {
+            "und_MV",
+            "dv_Thaa_MV",
+            "dv"
+        }, {
+            "und_MX",
+            "es_Latn_MX",
+            "es_MX"
+        }, {
+            "und_MY",
+            "ms_Latn_MY",
+            "ms"
+        }, {
+            "und_MZ",
+            "pt_Latn_MZ",
+            "pt_MZ"
+        }, {
+            "und_Mlym",
+            "ml_Mlym_IN",
+            "ml"
+        }, {
+            "und_Mymr",
+            "my_Mymr_MM",
+            "my"
+        }, {
+            "und_NC",
+            "fr_Latn_NC",
+            "fr_NC"
+        }, {
+            "und_NE",
+            "ha_Latn_NE",
+            "ha_NE"
+        }, {
+            "und_NG",
+            "en_Latn_NG",
+            "en_NG"
+        }, {
+            "und_NI",
+            "es_Latn_NI",
+            "es_NI"
+        }, {
+            "und_NL",
+            "nl_Latn_NL",
+            "nl"
+        }, {
+            "und_NO",
+            "no_Latn_NO",
+            "no"
+        }, {
+            "und_NP",
+            "ne_Deva_NP",
+            "ne"
+        }, {
+            "und_NR",
+            "en_Latn_NR",
+            "en_NR"
+        }, {
+            "und_OM",
+            "ar_Arab_OM",
+            "ar_OM"
+        }, {
+            "und_Orya",
+            "or_Orya_IN",
+            "or"
+        }, {
+            "und_PA",
+            "es_Latn_PA",
+            "es_PA"
+        }, {
+            "und_PE",
+            "es_Latn_PE",
+            "es_PE"
+        }, {
+            "und_PF",
+            "fr_Latn_PF",
+            "fr_PF"
+        }, {
+            "und_PG",
+            "tpi_Latn_PG",
+            "tpi"
+        }, {
+            "und_PH",
+            "fil_Latn_PH",
+            "fil"
+        }, {
+            "und_PL",
+            "pl_Latn_PL",
+            "pl"
+        }, {
+            "und_PM",
+            "fr_Latn_PM",
+            "fr_PM"
+        }, {
+            "und_PR",
+            "es_Latn_PR",
+            "es_PR"
+        }, {
+            "und_PS",
+            "ar_Arab_PS",
+            "ar_PS"
+        }, {
+            "und_PT",
+            "pt_Latn_PT",
+            "pt_PT"
+        }, {
+            "und_PW",
+            "pau_Latn_PW",
+            "pau"
+        }, {
+            "und_PY",
+            "gn_Latn_PY",
+            "gn"
+        }, {
+            "und_QA",
+            "ar_Arab_QA",
+            "ar_QA"
+        }, {
+            "und_RE",
+            "fr_Latn_RE",
+            "fr_RE"
+        }, {
+            "und_RO",
+            "ro_Latn_RO",
+            "ro"
+        }, {
+            "und_RS",
+            "sr_Cyrl_RS",
+            "sr"
+        }, {
+            "und_RU",
+            "ru_Cyrl_RU",
+            "ru"
+        }, {
+            "und_RW",
+            "rw_Latn_RW",
+            "rw"
+        }, {
+            "und_SA",
+            "ar_Arab_SA",
+            "ar_SA"
+        }, {
+            "und_SD",
+            "ar_Arab_SD",
+            "ar_SD"
+        }, {
+            "und_SE",
+            "sv_Latn_SE",
+            "sv"
+        }, {
+            "und_SG",
+            "en_Latn_SG",
+            "en_SG"
+        }, {
+            "und_SI",
+            "sl_Latn_SI",
+            "sl"
+        }, {
+            "und_SJ",
+            "no_Latn_SJ",
+            "no_SJ"
+        }, {
+            "und_SK",
+            "sk_Latn_SK",
+            "sk"
+        }, {
+            "und_SM",
+            "it_Latn_SM",
+            "it_SM"
+        }, {
+            "und_SN",
+            "fr_Latn_SN",
+            "fr_SN"
+        }, {
+            "und_SO",
+            "so_Latn_SO",
+            "so"
+        }, {
+            "und_SR",
+            "nl_Latn_SR",
+            "nl_SR"
+        }, {
+            "und_ST",
+            "pt_Latn_ST",
+            "pt_ST"
+        }, {
+            "und_SV",
+            "es_Latn_SV",
+            "es_SV"
+        }, {
+            "und_SY",
+            "ar_Arab_SY",
+            "ar_SY"
+        }, {
+            "und_Sinh",
+            "si_Sinh_LK",
+            "si"
+        }, {
+            "und_Syrc",
+            "syr_Syrc_IQ",
+            "syr"
+        }, {
+            "und_TD",
+            "fr_Latn_TD",
+            "fr_TD"
+        }, {
+            "und_TG",
+            "fr_Latn_TG",
+            "fr_TG"
+        }, {
+            "und_TH",
+            "th_Thai_TH",
+            "th"
+        }, {
+            "und_TJ",
+            "tg_Cyrl_TJ",
+            "tg"
+        }, {
+            "und_TK",
+            "tkl_Latn_TK",
+            "tkl"
+        }, {
+            "und_TL",
+            "pt_Latn_TL",
+            "pt_TL"
+        }, {
+            "und_TM",
+            "tk_Latn_TM",
+            "tk"
+        }, {
+            "und_TN",
+            "ar_Arab_TN",
+            "ar_TN"
+        }, {
+            "und_TO",
+            "to_Latn_TO",
+            "to"
+        }, {
+            "und_TR",
+            "tr_Latn_TR",
+            "tr"
+        }, {
+            "und_TV",
+            "tvl_Latn_TV",
+            "tvl"
+        }, {
+            "und_TW",
+            "zh_Hant_TW",
+            "zh_TW"
+        }, {
+            "und_Taml",
+            "ta_Taml_IN",
+            "ta"
+        }, {
+            "und_Telu",
+            "te_Telu_IN",
+            "te"
+        }, {
+            "und_Thaa",
+            "dv_Thaa_MV",
+            "dv"
+        }, {
+            "und_Thai",
+            "th_Thai_TH",
+            "th"
+        }, {
+            "und_Tibt",
+            "bo_Tibt_CN",
+            "bo"
+        }, {
+            "und_UA",
+            "uk_Cyrl_UA",
+            "uk"
+        }, {
+            "und_UY",
+            "es_Latn_UY",
+            "es_UY"
+        }, {
+            "und_UZ",
+            "uz_Latn_UZ",
+            "uz"
+        }, {
+            "und_VA",
+            "it_Latn_VA",
+            "it_VA"
+        }, {
+            "und_VE",
+            "es_Latn_VE",
+            "es_VE"
+        }, {
+            "und_VN",
+            "vi_Latn_VN",
+            "vi"
+        }, {
+            "und_VU",
+            "bi_Latn_VU",
+            "bi"
+        }, {
+            "und_WF",
+            "fr_Latn_WF",
+            "fr_WF"
+        }, {
+            "und_WS",
+            "sm_Latn_WS",
+            "sm"
+        }, {
+            "und_YE",
+            "ar_Arab_YE",
+            "ar_YE"
+        }, {
+            "und_YT",
+            "fr_Latn_YT",
+            "fr_YT"
+        }, {
+            "und_Yiii",
+            "ii_Yiii_CN",
+            "ii"
+        }, {
+            "ur",
+            "ur_Arab_PK",
+            "ur"
+        }, {
+            "uz",
+            "uz_Latn_UZ",
+            "uz"
+        }, {
+            "uz_AF",
+            "uz_Arab_AF",
+            "uz_AF"
+        }, {
+            "uz_Arab",
+            "uz_Arab_AF",
+            "uz_AF"
+        }, {
+            "ve",
+            "ve_Latn_ZA",
+            "ve"
+        }, {
+            "vi",
+            "vi_Latn_VN",
+            "vi"
+        }, {
+            "wal",
+            "wal_Ethi_ET",
+            "wal"
+        }, {
+            "wo",
+            "wo_Latn_SN",
+            "wo"
+        }, {
+            "wo_SN",
+            "wo_Latn_SN",
+            "wo"
+        }, {
+            "xh",
+            "xh_Latn_ZA",
+            "xh"
+        }, {
+            "yo",
+            "yo_Latn_NG",
+            "yo"
+        }, {
+            "zh",
+            "zh_Hans_CN",
+            "zh"
+        }, {
+            "zh_HK",
+            "zh_Hant_HK",
+            "zh_HK"
+        }, {
+            "zh_Hani",
+            "zh_Hani_CN",
+            "zh_Hani"
+        }, {
+            "zh_Hant",
+            "zh_Hant_TW",
+            "zh_TW"
+        }, {
+            "zh_MO",
+            "zh_Hant_MO",
+            "zh_MO"
+        }, {
+            "zh_TW",
+            "zh_Hant_TW",
+            "zh_TW"
+        }, {
+            "zu",
+            "zu_Latn_ZA",
+            "zu"
+        }, {
+            "und",
+            "en_Latn_US",
+            "en"
+        }, {
+            "und_ZZ",
+            "en_Latn_US",
+            "en"
+        }, {
+            "und_CN",
+            "zh_Hans_CN",
+            "zh"
+        }, {
+            "und_TW",
+            "zh_Hant_TW",
+            "zh_TW"
+        }, {
+            "und_HK",
+            "zh_Hant_HK",
+            "zh_HK"
+        }, {
+            "und_AQ",
+            "_Latn_AQ",
+            "_AQ"
+        }, {
+            "und_Zzzz",
+            "en_Latn_US",
+            "en"
+        }, {
+            "und_Zzzz_ZZ",
+            "en_Latn_US",
+            "en"
+        }, {
+            "und_Zzzz_CN",
+            "zh_Hans_CN",
+            "zh"
+        }, {
+            "und_Zzzz_TW",
+            "zh_Hant_TW",
+            "zh_TW"
+        }, {
+            "und_Zzzz_HK",
+            "zh_Hant_HK",
+            "zh_HK"
+        }, {
+            "und_Zzzz_AQ",
+            "_Latn_AQ",
+            "_AQ"
+        }, {
+            "und_Latn",
+            "en_Latn_US",
+            "en"
+        }, {
+            "und_Latn_ZZ",
+            "en_Latn_US",
+            "en"
+        }, {
+            "und_Latn_CN",
+            "za_Latn_CN",
+            "za"
+        }, {
+            "und_Latn_TW",
+            "trv_Latn_TW",
+            "trv"
+        }, {
+            "und_Latn_HK",
+            "zh_Latn_HK",
+            "zh_Latn_HK"
+        }, {
+            "und_Latn_AQ",
+            "_Latn_AQ",
+            "_AQ"
+        }, {
+            "und_Hans",
+            "zh_Hans_CN",
+            "zh"
+        }, {
+            "und_Hans_ZZ",
+            "zh_Hans_CN",
+            "zh"
+        }, {
+            "und_Hans_CN",
+            "zh_Hans_CN",
+            "zh"
+        }, {
+            "und_Hans_TW",
+            "zh_Hans_TW",
+            "zh_Hans_TW"
+        }, {
+            "und_Hans_HK",
+            "zh_Hans_HK",
+            "zh_Hans_HK"
+        }, {
+            "und_Hans_AQ",
+            "zh_Hans_AQ",
+            "zh_AQ"
+        }, {
+            "und_Hant",
+            "zh_Hant_TW",
+            "zh_TW"
+        }, {
+            "und_Hant_ZZ",
+            "zh_Hant_TW",
+            "zh_TW"
+        }, {
+            "und_Hant_CN",
+            "zh_Hant_CN",
+            "zh_Hant_CN"
+        }, {
+            "und_Hant_TW",
+            "zh_Hant_TW",
+            "zh_TW"
+        }, {
+            "und_Hant_HK",
+            "zh_Hant_HK",
+            "zh_HK"
+        }, {
+            "und_Hant_AQ",
+            "zh_Hant_AQ",
+            "zh_Hant_AQ"
+        }, {
+            "und_Moon",
+            "en_Moon_US",
+            "en_Moon"
+        }, {
+            "und_Moon_ZZ",
+            "en_Moon_US",
+            "en_Moon"
+        }, {
+            "und_Moon_CN",
+            "zh_Moon_CN",
+            "zh_Moon"
+        }, {
+            "und_Moon_TW",
+            "zh_Moon_TW",
+            "zh_Moon_TW"
+        }, {
+            "und_Moon_HK",
+            "zh_Moon_HK",
+            "zh_Moon_HK"
+        }, {
+            "und_Moon_AQ",
+            "_Moon_AQ",
+            "_Moon_AQ"
+        }, {
+            "es",
+            "es_Latn_ES",
+            "es"
+        }, {
+            "es_ZZ",
+            "es_Latn_ES",
+            "es"
+        }, {
+            "es_CN",
+            "es_Latn_CN",
+            "es_CN"
+        }, {
+            "es_TW",
+            "es_Latn_TW",
+            "es_TW"
+        }, {
+            "es_HK",
+            "es_Latn_HK",
+            "es_HK"
+        }, {
+            "es_AQ",
+            "es_Latn_AQ",
+            "es_AQ"
+        }, {
+            "es_Zzzz",
+            "es_Latn_ES",
+            "es"
+        }, {
+            "es_Zzzz_ZZ",
+            "es_Latn_ES",
+            "es"
+        }, {
+            "es_Zzzz_CN",
+            "es_Latn_CN",
+            "es_CN"
+        }, {
+            "es_Zzzz_TW",
+            "es_Latn_TW",
+            "es_TW"
+        }, {
+            "es_Zzzz_HK",
+            "es_Latn_HK",
+            "es_HK"
+        }, {
+            "es_Zzzz_AQ",
+            "es_Latn_AQ",
+            "es_AQ"
+        }, {
+            "es_Latn",
+            "es_Latn_ES",
+            "es"
+        }, {
+            "es_Latn_ZZ",
+            "es_Latn_ES",
+            "es"
+        }, {
+            "es_Latn_CN",
+            "es_Latn_CN",
+            "es_CN"
+        }, {
+            "es_Latn_TW",
+            "es_Latn_TW",
+            "es_TW"
+        }, {
+            "es_Latn_HK",
+            "es_Latn_HK",
+            "es_HK"
+        }, {
+            "es_Latn_AQ",
+            "es_Latn_AQ",
+            "es_AQ"
+        }, {
+            "es_Hans",
+            "es_Hans_ES",
+            "es_Hans"
+        }, {
+            "es_Hans_ZZ",
+            "es_Hans_ES",
+            "es_Hans"
+        }, {
+            "es_Hans_CN",
+            "es_Hans_CN",
+            "es_Hans_CN"
+        }, {
+            "es_Hans_TW",
+            "es_Hans_TW",
+            "es_Hans_TW"
+        }, {
+            "es_Hans_HK",
+            "es_Hans_HK",
+            "es_Hans_HK"
+        }, {
+            "es_Hans_AQ",
+            "es_Hans_AQ",
+            "es_Hans_AQ"
+        }, {
+            "es_Hant",
+            "es_Hant_ES",
+            "es_Hant"
+        }, {
+            "es_Hant_ZZ",
+            "es_Hant_ES",
+            "es_Hant"
+        }, {
+            "es_Hant_CN",
+            "es_Hant_CN",
+            "es_Hant_CN"
+        }, {
+            "es_Hant_TW",
+            "es_Hant_TW",
+            "es_Hant_TW"
+        }, {
+            "es_Hant_HK",
+            "es_Hant_HK",
+            "es_Hant_HK"
+        }, {
+            "es_Hant_AQ",
+            "es_Hant_AQ",
+            "es_Hant_AQ"
+        }, {
+            "es_Moon",
+            "es_Moon_ES",
+            "es_Moon"
+        }, {
+            "es_Moon_ZZ",
+            "es_Moon_ES",
+            "es_Moon"
+        }, {
+            "es_Moon_CN",
+            "es_Moon_CN",
+            "es_Moon_CN"
+        }, {
+            "es_Moon_TW",
+            "es_Moon_TW",
+            "es_Moon_TW"
+        }, {
+            "es_Moon_HK",
+            "es_Moon_HK",
+            "es_Moon_HK"
+        }, {
+            "es_Moon_AQ",
+            "es_Moon_AQ",
+            "es_Moon_AQ"
+        }, {
+            "zh",
+            "zh_Hans_CN",
+            "zh"
+        }, {
+            "zh_ZZ",
+            "zh_Hans_CN",
+            "zh"
+        }, {
+            "zh_CN",
+            "zh_Hans_CN",
+            "zh"
+        }, {
+            "zh_TW",
+            "zh_Hant_TW",
+            "zh_TW"
+        }, {
+            "zh_HK",
+            "zh_Hant_HK",
+            "zh_HK"
+        }, {
+            "zh_AQ",
+            "zh_Hans_AQ",
+            "zh_AQ"
+        }, {
+            "zh_Zzzz",
+            "zh_Hans_CN",
+            "zh"
+        }, {
+            "zh_Zzzz_ZZ",
+            "zh_Hans_CN",
+            "zh"
+        }, {
+            "zh_Zzzz_CN",
+            "zh_Hans_CN",
+            "zh"
+        }, {
+            "zh_Zzzz_TW",
+            "zh_Hant_TW",
+            "zh_TW"
+        }, {
+            "zh_Zzzz_HK",
+            "zh_Hant_HK",
+            "zh_HK"
+        }, {
+            "zh_Zzzz_AQ",
+            "zh_Hans_AQ",
+            "zh_AQ"
+        }, {
+            "zh_Latn",
+            "zh_Latn_CN",
+            "zh_Latn"
+        }, {
+            "zh_Latn_ZZ",
+            "zh_Latn_CN",
+            "zh_Latn"
+        }, {
+            "zh_Latn_CN",
+            "zh_Latn_CN",
+            "zh_Latn"
+        }, {
+            "zh_Latn_TW",
+            "zh_Latn_TW",
+            "zh_Latn_TW"
+        }, {
+            "zh_Latn_HK",
+            "zh_Latn_HK",
+            "zh_Latn_HK"
+        }, {
+            "zh_Latn_AQ",
+            "zh_Latn_AQ",
+            "zh_Latn_AQ"
+        }, {
+            "zh_Hans",
+            "zh_Hans_CN",
+            "zh"
+        }, {
+            "zh_Hans_ZZ",
+            "zh_Hans_CN",
+            "zh"
+        }, {
+            "zh_Hans_TW",
+            "zh_Hans_TW",
+            "zh_Hans_TW"
+        }, {
+            "zh_Hans_HK",
+            "zh_Hans_HK",
+            "zh_Hans_HK"
+        }, {
+            "zh_Hans_AQ",
+            "zh_Hans_AQ",
+            "zh_AQ"
+        }, {
+            "zh_Hant",
+            "zh_Hant_TW",
+            "zh_TW"
+        }, {
+            "zh_Hant_ZZ",
+            "zh_Hant_TW",
+            "zh_TW"
+        }, {
+            "zh_Hant_CN",
+            "zh_Hant_CN",
+            "zh_Hant_CN"
+        }, {
+            "zh_Hant_AQ",
+            "zh_Hant_AQ",
+            "zh_Hant_AQ"
+        }, {
+            "zh_Moon",
+            "zh_Moon_CN",
+            "zh_Moon"
+        }, {
+            "zh_Moon_ZZ",
+            "zh_Moon_CN",
+            "zh_Moon"
+        }, {
+            "zh_Moon_CN",
+            "zh_Moon_CN",
+            "zh_Moon"
+        }, {
+            "zh_Moon_TW",
+            "zh_Moon_TW",
+            "zh_Moon_TW"
+        }, {
+            "zh_Moon_HK",
+            "zh_Moon_HK",
+            "zh_Moon_HK"
+        }, {
+            "zh_Moon_AQ",
+            "zh_Moon_AQ",
+            "zh_Moon_AQ"
+        }, {
+            "art",
+            "",
+            ""
+        }, {
+            "art_ZZ",
+            "",
+            ""
+        }, {
+            "art_CN",
+            "",
+            ""
+        }, {
+            "art_TW",
+            "",
+            ""
+        }, {
+            "art_HK",
+            "",
+            ""
+        }, {
+            "art_AQ",
+            "",
+            ""
+        }, {
+            "art_Zzzz",
+            "",
+            ""
+        }, {
+            "art_Zzzz_ZZ",
+            "",
+            ""
+        }, {
+            "art_Zzzz_CN",
+            "",
+            ""
+        }, {
+            "art_Zzzz_TW",
+            "",
+            ""
+        }, {
+            "art_Zzzz_HK",
+            "",
+            ""
+        }, {
+            "art_Zzzz_AQ",
+            "",
+            ""
+        }, {
+            "art_Latn",
+            "",
+            ""
+        }, {
+            "art_Latn_ZZ",
+            "",
+            ""
+        }, {
+            "art_Latn_CN",
+            "",
+            ""
+        }, {
+            "art_Latn_TW",
+            "",
+            ""
+        }, {
+            "art_Latn_HK",
+            "",
+            ""
+        }, {
+            "art_Latn_AQ",
+            "",
+            ""
+        }, {
+            "art_Hans",
+            "",
+            ""
+        }, {
+            "art_Hans_ZZ",
+            "",
+            ""
+        }, {
+            "art_Hans_CN",
+            "",
+            ""
+        }, {
+            "art_Hans_TW",
+            "",
+            ""
+        }, {
+            "art_Hans_HK",
+            "",
+            ""
+        }, {
+            "art_Hans_AQ",
+            "",
+            ""
+        }, {
+            "art_Hant",
+            "",
+            ""
+        }, {
+            "art_Hant_ZZ",
+            "",
+            ""
+        }, {
+            "art_Hant_CN",
+            "",
+            ""
+        }, {
+            "art_Hant_TW",
+            "",
+            ""
+        }, {
+            "art_Hant_HK",
+            "",
+            ""
+        }, {
+            "art_Hant_AQ",
+            "",
+            ""
+        }, {
+            "art_Moon",
+            "",
+            ""
+        }, {
+            "art_Moon_ZZ",
+            "",
+            ""
+        }, {
+            "art_Moon_CN",
+            "",
+            ""
+        }, {
+            "art_Moon_TW",
+            "",
+            ""
+        }, {
+            "art_Moon_HK",
+            "",
+            ""
+        }, {
+            "art_Moon_AQ",
+            "",
+            ""
+        }, {
+            "aae_Latn_IT",
+            "aae_Latn_IT",
+            "aae_Latn_IT"
+        }, {
+            "aae_Thai_CO",
+            "aae_Thai_CO",
+            "aae_Thai_CO"
+        }, {
+            "und_CW",
+            "pap_Latn_CW",
+            "pap_CW"
+        }, {
+            "zh_Hant",
+            "zh_Hant_TW",
+            "zh_TW"
+        }, {
+            "zh_Hani",
+            "zh_Hani_CN",
+            "zh_Hani"
+        }, {
+            "und",
+            "en_Latn_US",
+            "en"
+        }, {
+            "und_Thai",
+            "th_Thai_TH",
+            "th"
+        }, {
+            "und_419",
+            "es_Latn_419",
+            "es_419"
+        }, {
+            "und_150",
+            "ru_Cyrl_RU",
+            "ru"
+        }, {
+            "und_AT",
+            "de_Latn_AT",
+            "de_AT"
+        }, {
+            "und_US",
+            "en_Latn_US",
+            "en"
+        }
     };
 
     for (const auto& item : full_data) {
@@ -1720,7 +3829,11 @@
         Locale res(org);
         res.addLikelySubtags(status);
         status.errIfFailureAndReset("\"%s\"", org);
-        assertEquals("addLikelySubtags", exp, res.getName());
+        if (exp[0]) {
+            assertEquals("addLikelySubtags", exp, res.getName());
+        } else {
+            assertEquals("addLikelySubtags", org, res.getName());
+        }
     }
 
     for (const auto& item : full_data) {
@@ -1729,7 +3842,11 @@
         Locale res(org);
         res.minimizeSubtags(status);
         status.errIfFailureAndReset("\"%s\"", org);
-        assertEquals("minimizeSubtags", exp, res.getName());
+        if (exp[0]) {
+            assertEquals("minimizeSubtags", exp, res.getName());
+        } else {
+            assertEquals("minimizeSubtags", org, res.getName());
+        }
     }
 }
 
@@ -2038,7 +4155,7 @@
         { "calendar", "buddhist" }
     };
 
-    UErrorCode status = U_ZERO_ERROR;
+    IcuTestErrorCode status(*this, "TestSetKeywordValue()");
 
     int32_t i = 0;
     int32_t resultLen = 0;
@@ -2060,6 +4177,24 @@
                 testCases[i].value, testCases[i].keyword, buffer);
         }
     }
+
+    // Test long locale
+    {
+        status.errIfFailureAndReset();
+        const char* input =
+            "de__POSIX@colnormalization=no;colstrength=primary;currency=eur;"
+            "em=default;kv=space;lb=strict;lw=normal;measure=metric;"
+            "numbers=latn;rg=atzzzz;sd=atat1";
+        const char* expected =
+            "de__POSIX@colnormalization=no;colstrength=primary;currency=eur;"
+            "em=default;kv=space;lb=strict;lw=normal;measure=metric;"
+            "numbers=latn;rg=atzzzz;sd=atat1;ss=none";
+        // Bug ICU-21385
+        Locale l2(input);
+        l2.setKeywordValue("ss", "none", status);
+        assertEquals("", expected, l2.getName());
+        status.errIfFailureAndReset();
+    }
 }
 
 void
@@ -2595,10 +4730,10 @@
     } testCases[] = {
         { "ca_ES-with-extra-stuff-that really doesn't make any sense-unless-you're trying to increase code coverage",
           "ca_ES_WITH_EXTRA_STUFF_THAT REALLY DOESN'T MAKE ANY SENSE_UNLESS_YOU'RE TRYING TO INCREASE CODE COVERAGE",
-          "ca_ES_WITH_EXTRA_STUFF_THAT REALLY DOESN'T MAKE ANY SENSE_UNLESS_YOU'RE TRYING TO INCREASE CODE COVERAGE"},
+          "ca_ES_EXTRA_STUFF_THAT REALLY DOESN'T MAKE ANY SENSE_UNLESS_WITH_YOU'RE TRYING TO INCREASE CODE COVERAGE"},
         { "zh@collation=pinyin", "zh@collation=pinyin", "zh@collation=pinyin" },
-        { "zh_CN@collation=pinyin", "zh_CN@collation=pinyin", "zh_Hans_CN@collation=pinyin" },
-        { "zh_CN_CA@collation=pinyin", "zh_CN_CA@collation=pinyin", "zh_Hans_CN_CA@collation=pinyin" },
+        { "zh_CN@collation=pinyin", "zh_CN@collation=pinyin", "zh_CN@collation=pinyin" },
+        { "zh_CN_CA@collation=pinyin", "zh_CN_CA@collation=pinyin", "zh_CN_CA@collation=pinyin" },
         { "en_US_POSIX", "en_US_POSIX", "en_US_POSIX" }, 
         { "hy_AM_REVISED", "hy_AM_REVISED", "hy_AM_REVISED" }, 
         { "no_NO_NY", "no_NO_NY", "nb_NO_NY" /* not: "nn_NO" [alan ICU3.0] */ },
@@ -2617,13 +4752,17 @@
         { "x-piglatin_ML.MBE", "x-piglatin_ML.MBE", "x-piglatin_ML" },
         { "i-cherokee_US.utf7", "i-cherokee_US.utf7", "i-cherokee_US" },
         { "x-filfli_MT_FILFLA.gb-18030", "x-filfli_MT_FILFLA.gb-18030", "x-filfli_MT_FILFLA" },
-        { "no-no-ny.utf8@B", "no_NO_NY.utf8@B", "nb_NO_NY_B" /* not: "nn_NO" [alan ICU3.0] */ }, /* @ ignored unless variant is empty */
+        { "no-no-ny.utf8@B", "no_NO_NY.utf8@B", "nb_NO_B_NY" /* not: "nn_NO" [alan ICU3.0] */ }, /* @ ignored unless variant is empty */
 
         /* fleshing out canonicalization */
         /* trim space and sort keywords, ';' is separator so not present at end in canonical form */
-        { "en_Hant_IL_VALLEY_GIRL@ currency = EUR; calendar = Japanese ;", "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR", "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR" },
+        { "en_Hant_IL_VALLEY_GIRL@ currency = EUR; calendar = Japanese ;",
+          "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR",
+          "en_Hant_IL_GIRL_VALLEY@calendar=Japanese;currency=EUR" },
         /* already-canonical ids are not changed */
-        { "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR", "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR", "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR" },
+        { "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR",
+          "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR",
+          "en_Hant_IL_GIRL_VALLEY@calendar=Japanese;currency=EUR" },
         /* norwegian is just too weird, if we handle things in their full generality */
         { "no-Hant-GB_NY@currency=$$$", "no_Hant_GB_NY@currency=$$$", "nb_Hant_GB_NY@currency=$$$" /* not: "nn_Hant_GB@currency=$$$" [alan ICU3.0] */ },
 
@@ -2664,13 +4803,13 @@
         { "hi__DIRECT", "hi__DIRECT", "hi__DIRECT" },
         { "ja_JP_TRADITIONAL", "ja_JP_TRADITIONAL", "ja_JP_TRADITIONAL" },
         { "th_TH_TRADITIONAL", "th_TH_TRADITIONAL", "th_TH_TRADITIONAL" },
-        { "zh_TW_STROKE", "zh_TW_STROKE", "zh_Hant_TW_STROKE" },
+        { "zh_TW_STROKE", "zh_TW_STROKE", "zh_TW_STROKE" },
         { "zh__PINYIN", "zh__PINYIN", "zh__PINYIN" },
         { "sr-SP-Cyrl", "sr_SP_CYRL", "sr_SP_CYRL" }, /* .NET name */
         { "sr-SP-Latn", "sr_SP_LATN", "sr_SP_LATN" }, /* .NET name */
         { "sr_YU_CYRILLIC", "sr_YU_CYRILLIC", "sr_RS_CYRILLIC" }, /* Linux name */
-        { "uz-UZ-Cyrl", "uz_UZ_CYRL", "uz_Latn_UZ_CYRL" }, /* .NET name */
-        { "uz-UZ-Latn", "uz_UZ_LATN", "uz_Latn_UZ_LATN" }, /* .NET name */
+        { "uz-UZ-Cyrl", "uz_UZ_CYRL", "uz_UZ_CYRL" }, /* .NET name */
+        { "uz-UZ-Latn", "uz_UZ_LATN", "uz_UZ_LATN" }, /* .NET name */
         { "zh-CHS", "zh_CHS", "zh_CHS" }, /* .NET name */
         { "zh-CHT", "zh_CHT", "zh_CHT" }, /* .NET name This may change back to zh_Hant */
         /* PRE_EURO and EURO conversions don't affect other keywords */
@@ -2739,17 +4878,18 @@
         // also test with script, variants and extensions
         { "prs-Cyrl-1009-u-ca-roc", "fa-Cyrl-AF-1009-u-ca-roc" },
 
-        //  language _ country -> language _ script _ country
-        { "pa-IN", "pa-Guru-IN" },
+        { "pa-IN", "pa-IN" },
         // also test with script
         { "pa-Latn-IN", "pa-Latn-IN" },
         // also test with variants and extensions
-        { "pa-IN-5678-u-ca-hindi", "pa-Guru-IN-5678-u-ca-hindi" },
+        { "pa-IN-5678-u-ca-hindi", "pa-IN-5678-u-ca-hindi" },
 
-        //  language _ script _ country -> language _ country
-        { "ky-Cyrl-KG", "ky-KG" },
+        { "ky-Cyrl-KG", "ky-Cyrl-KG" },
         // also test with variants and extensions
-        { "ky-Cyrl-KG-3456-u-ca-roc", "ky-KG-3456-u-ca-roc" },
+        { "ky-Cyrl-KG-3456-u-ca-roc", "ky-Cyrl-KG-3456-u-ca-roc" },
+
+        // Test replacement of scriptAlias
+        { "en-Qaai", "en-Zinh" },
 
         // Test replacement of territoryAlias
         // 554 has one replacement
@@ -2768,6 +4908,14 @@
         { "uz-Cyrl-172-5678-u-nu-latn", "uz-Cyrl-UZ-5678-u-nu-latn" },
         // a language not used in this region
         { "fr-172", "fr-RU" },
+
+        // variant
+        { "ja-Latn-hepburn-heploc", "ja-Latn-alalc97"},
+
+        { "aaa-Fooo-SU", "aaa-Fooo-RU"},
+
+        // ICU-21344
+        { "ku-Arab-NT", "ku-Arab-IQ"},
     };
     int32_t i;
     for (i=0; i < UPRV_LENGTHOF(testCases); i++) {
@@ -3223,6 +5371,73 @@
     }
 }
 
+U_DEFINE_LOCAL_OPEN_POINTER(LocalStdioFilePointer, FILE, fclose);
+void LocaleTest::TestLocaleCanonicalizationFromFile()
+{
+    IcuTestErrorCode status(*this, "TestLocaleCanonicalizationFromFile");
+    const char *sourceTestDataPath=getSourceTestData(status);
+    if(status.errIfFailureAndReset("unable to find the source/test/testdata "
+                                      "folder (getSourceTestData())")) {
+        return;
+    }
+    char testPath[400];
+    char line[256];
+    strcpy(testPath, sourceTestDataPath);
+    strcat(testPath, "localeCanonicalization.txt");
+    LocalStdioFilePointer testFile(fopen(testPath, "r"));
+    if(testFile.isNull()) {
+        errln("unable to open %s", testPath);
+        return;
+    }
+    // Format:
+    // <source locale identifier>	;	<expected canonicalized locale identifier>
+    while (fgets(line, (int)sizeof(line), testFile.getAlias())!=NULL) {
+        if (line[0] == '#') {
+            // ignore any lines start with #
+            continue;
+        }
+        char *semi = strchr(line, ';');
+        if (semi == nullptr) {
+            // ignore any lines without ;
+            continue;
+        }
+        *semi = '\0'; // null terminiate on the spot of semi
+        const char* from = u_skipWhitespace((const char*)line);
+        u_rtrim((char*)from);
+        const char* to = u_skipWhitespace((const char*)semi + 1);
+        u_rtrim((char*)to);
+        std::string expect(to);
+        // Change the _ to -
+        std::transform(expect.begin(), expect.end(), expect.begin(),
+                       [](unsigned char c){ return c == '_' ? '-' : c; });
+
+        Locale loc = Locale::createCanonical(from);
+        std::string result = loc.toLanguageTag<std::string>(status);
+        const char* tag = loc.isBogus() ? "BOGUS" : result.c_str();
+        status.errIfFailureAndReset(
+            "FAIL: createCanonical(%s).toLanguageTag() expected \"%s\" locale is %s",
+            from, tag, loc.getName());
+        std::string msg("createCanonical(");
+        msg += from;
+        msg += ") locale = ";
+        msg += loc.getName();
+        assertEquals(msg.c_str(), expect.c_str(), tag);
+    }
+}
+
+void LocaleTest::TestKnownCanonicalizedListCorrect()
+{
+    IcuTestErrorCode status(*this, "TestKnownCanonicalizedListCorrect");
+    int32_t numOfKnownCanonicalized;
+    const char* const* knownCanonicalized =
+        ulocimp_getKnownCanonicalizedLocaleForTest(&numOfKnownCanonicalized);
+    for (int32_t i = 0; i < numOfKnownCanonicalized; i++) {
+        std::string msg("Known Canonicalized Locale is not canonicalized: ");
+        assertTrue((msg + knownCanonicalized[i]).c_str(),
+                   ulocimp_isCanonicalizedLocaleForTest(knownCanonicalized[i]));
+    }
+}
+
 void LocaleTest::TestConstructorAcceptsBCP47() {
     IcuTestErrorCode status(*this, "TestConstructorAcceptsBCP47");
 
@@ -4173,3 +6388,10 @@
         }
     }
 }
+
+void LocaleTest::TestLeak21419() {
+    IcuTestErrorCode status(*this, "TestLeak21419");
+    Locale l = Locale("s-yU");
+    l.canonicalize(status);
+    status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
+}
diff --git a/icu4c/source/test/intltest/loctest.h b/icu4c/source/test/intltest/loctest.h
index b217ce2..1fba6d9 100644
--- a/icu4c/source/test/intltest/loctest.h
+++ b/icu4c/source/test/intltest/loctest.h
@@ -122,6 +122,8 @@
     void TestBug13554();
     void TestBug20410();
     void TestBug20900();
+    void TestLocaleCanonicalizationFromFile();
+    void TestKnownCanonicalizedListCorrect();
     void TestConstructorAcceptsBCP47();
 
     void TestAddLikelySubtags();
@@ -151,6 +153,7 @@
     void TestCapturingTagConvertingIterator();
     void TestSetUnicodeKeywordValueInLongLocale();
     void TestSetUnicodeKeywordValueNullInLongLocale();
+    void TestLeak21419();
 
 private:
     void _checklocs(const char* label,
diff --git a/icu4c/source/test/intltest/measfmttest.cpp b/icu4c/source/test/intltest/measfmttest.cpp
index 51a85fe..7d5330f 100644
--- a/icu4c/source/test/intltest/measfmttest.cpp
+++ b/icu4c/source/test/intltest/measfmttest.cpp
@@ -17,6 +17,9 @@
 
 #if !UCONFIG_NO_FORMATTING
 
+#include "charstr.h"
+#include "cstr.h"
+#include "measunit_impl.h"
 #include "unicode/decimfmt.h"
 #include "unicode/measfmt.h"
 #include "unicode/measure.h"
@@ -25,8 +28,6 @@
 #include "unicode/tmunit.h"
 #include "unicode/plurrule.h"
 #include "unicode/ustring.h"
-#include "charstr.h"
-#include "cstr.h"
 #include "unicode/reldatefmt.h"
 #include "unicode/rbnf.h"
 
@@ -54,6 +55,7 @@
     void TestCompatible63();
     void TestCompatible64();
     void TestCompatible65();
+    void TestCompatible68();
     void TestGetAvailable();
     void TestExamplesInDocs();
     void TestFormatPeriodEn();
@@ -81,9 +83,13 @@
     void TestNumericTimeSomeSpecialFormats();
     void TestIdentifiers();
     void TestInvalidIdentifiers();
+    void TestParseToBuiltIn();
+    void TestKilogramIdentifier();
     void TestCompoundUnitOperations();
     void TestDimensionlessBehaviour();
     void Test21060_AddressSanitizerProblem();
+    void Test21223_FrenchDuration();
+    void TestInternalMeasureUnitImpl();
 
     void verifyFormat(
         const char *description,
@@ -178,6 +184,7 @@
     TESTCASE_AUTO(TestCompatible63);
     TESTCASE_AUTO(TestCompatible64);
     TESTCASE_AUTO(TestCompatible65);
+    TESTCASE_AUTO(TestCompatible68);
     TESTCASE_AUTO(TestGetAvailable);
     TESTCASE_AUTO(TestExamplesInDocs);
     TESTCASE_AUTO(TestFormatPeriodEn);
@@ -205,9 +212,13 @@
     TESTCASE_AUTO(TestNumericTimeSomeSpecialFormats);
     TESTCASE_AUTO(TestIdentifiers);
     TESTCASE_AUTO(TestInvalidIdentifiers);
+    TESTCASE_AUTO(TestParseToBuiltIn);
+    TESTCASE_AUTO(TestKilogramIdentifier);
     TESTCASE_AUTO(TestCompoundUnitOperations);
     TESTCASE_AUTO(TestDimensionlessBehaviour);
     TESTCASE_AUTO(Test21060_AddressSanitizerProblem);
+    TESTCASE_AUTO(Test21223_FrenchDuration);
+    TESTCASE_AUTO(TestInternalMeasureUnitImpl);
     TESTCASE_AUTO_END;
 }
 
@@ -1906,6 +1917,384 @@
     assertSuccess("", status);
 }
 
+// Note that TestCompatible66(), TestCompatible67()
+// would be the same as TestCompatible65(), no need to add them.
+
+void MeasureFormatTest::TestCompatible68() {
+    UErrorCode status = U_ZERO_ERROR;
+    LocalPointer<MeasureUnit> measureUnit;
+    MeasureUnit measureUnitValue;
+    measureUnit.adoptInstead(MeasureUnit::createGForce(status));
+    measureUnitValue = MeasureUnit::getGForce();
+    measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
+    measureUnitValue = MeasureUnit::getMeterPerSecondSquared();
+    measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
+    measureUnitValue = MeasureUnit::getArcMinute();
+    measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
+    measureUnitValue = MeasureUnit::getArcSecond();
+    measureUnit.adoptInstead(MeasureUnit::createDegree(status));
+    measureUnitValue = MeasureUnit::getDegree();
+    measureUnit.adoptInstead(MeasureUnit::createRadian(status));
+    measureUnitValue = MeasureUnit::getRadian();
+    measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
+    measureUnitValue = MeasureUnit::getRevolutionAngle();
+    measureUnit.adoptInstead(MeasureUnit::createAcre(status));
+    measureUnitValue = MeasureUnit::getAcre();
+    measureUnit.adoptInstead(MeasureUnit::createDunam(status));
+    measureUnitValue = MeasureUnit::getDunam();
+    measureUnit.adoptInstead(MeasureUnit::createHectare(status));
+    measureUnitValue = MeasureUnit::getHectare();
+    measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
+    measureUnitValue = MeasureUnit::getSquareCentimeter();
+    measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
+    measureUnitValue = MeasureUnit::getSquareFoot();
+    measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
+    measureUnitValue = MeasureUnit::getSquareInch();
+    measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
+    measureUnitValue = MeasureUnit::getSquareKilometer();
+    measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
+    measureUnitValue = MeasureUnit::getSquareMeter();
+    measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
+    measureUnitValue = MeasureUnit::getSquareMile();
+    measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
+    measureUnitValue = MeasureUnit::getSquareYard();
+    measureUnit.adoptInstead(MeasureUnit::createKarat(status));
+    measureUnitValue = MeasureUnit::getKarat();
+    measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status));
+    measureUnitValue = MeasureUnit::getMilligramPerDeciliter();
+    measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status));
+    measureUnitValue = MeasureUnit::getMillimolePerLiter();
+    measureUnit.adoptInstead(MeasureUnit::createMole(status));
+    measureUnitValue = MeasureUnit::getMole();
+    measureUnit.adoptInstead(MeasureUnit::createPercent(status));
+    measureUnitValue = MeasureUnit::getPercent();
+    measureUnit.adoptInstead(MeasureUnit::createPermille(status));
+    measureUnitValue = MeasureUnit::getPermille();
+    measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status));
+    measureUnitValue = MeasureUnit::getPartPerMillion();
+    measureUnit.adoptInstead(MeasureUnit::createPermyriad(status));
+    measureUnitValue = MeasureUnit::getPermyriad();
+    measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
+    measureUnitValue = MeasureUnit::getLiterPer100Kilometers();
+    measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
+    measureUnitValue = MeasureUnit::getLiterPerKilometer();
+    measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
+    measureUnitValue = MeasureUnit::getMilePerGallon();
+    measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
+    measureUnitValue = MeasureUnit::getMilePerGallonImperial();
+    measureUnit.adoptInstead(MeasureUnit::createBit(status));
+    measureUnitValue = MeasureUnit::getBit();
+    measureUnit.adoptInstead(MeasureUnit::createByte(status));
+    measureUnitValue = MeasureUnit::getByte();
+    measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
+    measureUnitValue = MeasureUnit::getGigabit();
+    measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
+    measureUnitValue = MeasureUnit::getGigabyte();
+    measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
+    measureUnitValue = MeasureUnit::getKilobit();
+    measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
+    measureUnitValue = MeasureUnit::getKilobyte();
+    measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
+    measureUnitValue = MeasureUnit::getMegabit();
+    measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
+    measureUnitValue = MeasureUnit::getMegabyte();
+    measureUnit.adoptInstead(MeasureUnit::createPetabyte(status));
+    measureUnitValue = MeasureUnit::getPetabyte();
+    measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
+    measureUnitValue = MeasureUnit::getTerabit();
+    measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
+    measureUnitValue = MeasureUnit::getTerabyte();
+    measureUnit.adoptInstead(MeasureUnit::createCentury(status));
+    measureUnitValue = MeasureUnit::getCentury();
+    measureUnit.adoptInstead(MeasureUnit::createDay(status));
+    measureUnitValue = MeasureUnit::getDay();
+    measureUnit.adoptInstead(MeasureUnit::createDayPerson(status));
+    measureUnitValue = MeasureUnit::getDayPerson();
+    measureUnit.adoptInstead(MeasureUnit::createDecade(status));
+    measureUnitValue = MeasureUnit::getDecade();
+    measureUnit.adoptInstead(MeasureUnit::createHour(status));
+    measureUnitValue = MeasureUnit::getHour();
+    measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
+    measureUnitValue = MeasureUnit::getMicrosecond();
+    measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
+    measureUnitValue = MeasureUnit::getMillisecond();
+    measureUnit.adoptInstead(MeasureUnit::createMinute(status));
+    measureUnitValue = MeasureUnit::getMinute();
+    measureUnit.adoptInstead(MeasureUnit::createMonth(status));
+    measureUnitValue = MeasureUnit::getMonth();
+    measureUnit.adoptInstead(MeasureUnit::createMonthPerson(status));
+    measureUnitValue = MeasureUnit::getMonthPerson();
+    measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
+    measureUnitValue = MeasureUnit::getNanosecond();
+    measureUnit.adoptInstead(MeasureUnit::createSecond(status));
+    measureUnitValue = MeasureUnit::getSecond();
+    measureUnit.adoptInstead(MeasureUnit::createWeek(status));
+    measureUnitValue = MeasureUnit::getWeek();
+    measureUnit.adoptInstead(MeasureUnit::createWeekPerson(status));
+    measureUnitValue = MeasureUnit::getWeekPerson();
+    measureUnit.adoptInstead(MeasureUnit::createYear(status));
+    measureUnitValue = MeasureUnit::getYear();
+    measureUnit.adoptInstead(MeasureUnit::createYearPerson(status));
+    measureUnitValue = MeasureUnit::getYearPerson();
+    measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
+    measureUnitValue = MeasureUnit::getAmpere();
+    measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
+    measureUnitValue = MeasureUnit::getMilliampere();
+    measureUnit.adoptInstead(MeasureUnit::createOhm(status));
+    measureUnitValue = MeasureUnit::getOhm();
+    measureUnit.adoptInstead(MeasureUnit::createVolt(status));
+    measureUnitValue = MeasureUnit::getVolt();
+    measureUnit.adoptInstead(MeasureUnit::createBritishThermalUnit(status));
+    measureUnitValue = MeasureUnit::getBritishThermalUnit();
+    measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
+    measureUnitValue = MeasureUnit::getCalorie();
+    measureUnit.adoptInstead(MeasureUnit::createElectronvolt(status));
+    measureUnitValue = MeasureUnit::getElectronvolt();
+    measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
+    measureUnitValue = MeasureUnit::getFoodcalorie();
+    measureUnit.adoptInstead(MeasureUnit::createJoule(status));
+    measureUnitValue = MeasureUnit::getJoule();
+    measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
+    measureUnitValue = MeasureUnit::getKilocalorie();
+    measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
+    measureUnitValue = MeasureUnit::getKilojoule();
+    measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
+    measureUnitValue = MeasureUnit::getKilowattHour();
+    measureUnit.adoptInstead(MeasureUnit::createThermUs(status));
+    measureUnitValue = MeasureUnit::getThermUs();
+    measureUnit.adoptInstead(MeasureUnit::createNewton(status));
+    measureUnitValue = MeasureUnit::getNewton();
+    measureUnit.adoptInstead(MeasureUnit::createPoundForce(status));
+    measureUnitValue = MeasureUnit::getPoundForce();
+    measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
+    measureUnitValue = MeasureUnit::getGigahertz();
+    measureUnit.adoptInstead(MeasureUnit::createHertz(status));
+    measureUnitValue = MeasureUnit::getHertz();
+    measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
+    measureUnitValue = MeasureUnit::getKilohertz();
+    measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
+    measureUnitValue = MeasureUnit::getMegahertz();
+    measureUnit.adoptInstead(MeasureUnit::createDot(status));
+    measureUnitValue = MeasureUnit::getDot();
+    measureUnit.adoptInstead(MeasureUnit::createDotPerCentimeter(status));
+    measureUnitValue = MeasureUnit::getDotPerCentimeter();
+    measureUnit.adoptInstead(MeasureUnit::createDotPerInch(status));
+    measureUnitValue = MeasureUnit::getDotPerInch();
+    measureUnit.adoptInstead(MeasureUnit::createEm(status));
+    measureUnitValue = MeasureUnit::getEm();
+    measureUnit.adoptInstead(MeasureUnit::createMegapixel(status));
+    measureUnitValue = MeasureUnit::getMegapixel();
+    measureUnit.adoptInstead(MeasureUnit::createPixel(status));
+    measureUnitValue = MeasureUnit::getPixel();
+    measureUnit.adoptInstead(MeasureUnit::createPixelPerCentimeter(status));
+    measureUnitValue = MeasureUnit::getPixelPerCentimeter();
+    measureUnit.adoptInstead(MeasureUnit::createPixelPerInch(status));
+    measureUnitValue = MeasureUnit::getPixelPerInch();
+    measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
+    measureUnitValue = MeasureUnit::getAstronomicalUnit();
+    measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
+    measureUnitValue = MeasureUnit::getCentimeter();
+    measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
+    measureUnitValue = MeasureUnit::getDecimeter();
+    measureUnit.adoptInstead(MeasureUnit::createEarthRadius(status));
+    measureUnitValue = MeasureUnit::getEarthRadius();
+    measureUnit.adoptInstead(MeasureUnit::createFathom(status));
+    measureUnitValue = MeasureUnit::getFathom();
+    measureUnit.adoptInstead(MeasureUnit::createFoot(status));
+    measureUnitValue = MeasureUnit::getFoot();
+    measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
+    measureUnitValue = MeasureUnit::getFurlong();
+    measureUnit.adoptInstead(MeasureUnit::createInch(status));
+    measureUnitValue = MeasureUnit::getInch();
+    measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
+    measureUnitValue = MeasureUnit::getKilometer();
+    measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
+    measureUnitValue = MeasureUnit::getLightYear();
+    measureUnit.adoptInstead(MeasureUnit::createMeter(status));
+    measureUnitValue = MeasureUnit::getMeter();
+    measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
+    measureUnitValue = MeasureUnit::getMicrometer();
+    measureUnit.adoptInstead(MeasureUnit::createMile(status));
+    measureUnitValue = MeasureUnit::getMile();
+    measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
+    measureUnitValue = MeasureUnit::getMileScandinavian();
+    measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
+    measureUnitValue = MeasureUnit::getMillimeter();
+    measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
+    measureUnitValue = MeasureUnit::getNanometer();
+    measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
+    measureUnitValue = MeasureUnit::getNauticalMile();
+    measureUnit.adoptInstead(MeasureUnit::createParsec(status));
+    measureUnitValue = MeasureUnit::getParsec();
+    measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
+    measureUnitValue = MeasureUnit::getPicometer();
+    measureUnit.adoptInstead(MeasureUnit::createPoint(status));
+    measureUnitValue = MeasureUnit::getPoint();
+    measureUnit.adoptInstead(MeasureUnit::createSolarRadius(status));
+    measureUnitValue = MeasureUnit::getSolarRadius();
+    measureUnit.adoptInstead(MeasureUnit::createYard(status));
+    measureUnitValue = MeasureUnit::getYard();
+    measureUnit.adoptInstead(MeasureUnit::createCandela(status));
+    measureUnitValue = MeasureUnit::getCandela();
+    measureUnit.adoptInstead(MeasureUnit::createLumen(status));
+    measureUnitValue = MeasureUnit::getLumen();
+    measureUnit.adoptInstead(MeasureUnit::createLux(status));
+    measureUnitValue = MeasureUnit::getLux();
+    measureUnit.adoptInstead(MeasureUnit::createSolarLuminosity(status));
+    measureUnitValue = MeasureUnit::getSolarLuminosity();
+    measureUnit.adoptInstead(MeasureUnit::createCarat(status));
+    measureUnitValue = MeasureUnit::getCarat();
+    measureUnit.adoptInstead(MeasureUnit::createDalton(status));
+    measureUnitValue = MeasureUnit::getDalton();
+    measureUnit.adoptInstead(MeasureUnit::createEarthMass(status));
+    measureUnitValue = MeasureUnit::getEarthMass();
+    measureUnit.adoptInstead(MeasureUnit::createGrain(status));
+    measureUnitValue = MeasureUnit::getGrain();
+    measureUnit.adoptInstead(MeasureUnit::createGram(status));
+    measureUnitValue = MeasureUnit::getGram();
+    measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
+    measureUnitValue = MeasureUnit::getKilogram();
+    measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
+    measureUnitValue = MeasureUnit::getMetricTon();
+    measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
+    measureUnitValue = MeasureUnit::getMicrogram();
+    measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
+    measureUnitValue = MeasureUnit::getMilligram();
+    measureUnit.adoptInstead(MeasureUnit::createOunce(status));
+    measureUnitValue = MeasureUnit::getOunce();
+    measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
+    measureUnitValue = MeasureUnit::getOunceTroy();
+    measureUnit.adoptInstead(MeasureUnit::createPound(status));
+    measureUnitValue = MeasureUnit::getPound();
+    measureUnit.adoptInstead(MeasureUnit::createSolarMass(status));
+    measureUnitValue = MeasureUnit::getSolarMass();
+    measureUnit.adoptInstead(MeasureUnit::createStone(status));
+    measureUnitValue = MeasureUnit::getStone();
+    measureUnit.adoptInstead(MeasureUnit::createTon(status));
+    measureUnitValue = MeasureUnit::getTon();
+    measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
+    measureUnitValue = MeasureUnit::getGigawatt();
+    measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
+    measureUnitValue = MeasureUnit::getHorsepower();
+    measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
+    measureUnitValue = MeasureUnit::getKilowatt();
+    measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
+    measureUnitValue = MeasureUnit::getMegawatt();
+    measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
+    measureUnitValue = MeasureUnit::getMilliwatt();
+    measureUnit.adoptInstead(MeasureUnit::createWatt(status));
+    measureUnitValue = MeasureUnit::getWatt();
+    measureUnit.adoptInstead(MeasureUnit::createAtmosphere(status));
+    measureUnitValue = MeasureUnit::getAtmosphere();
+    measureUnit.adoptInstead(MeasureUnit::createBar(status));
+    measureUnitValue = MeasureUnit::getBar();
+    measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
+    measureUnitValue = MeasureUnit::getHectopascal();
+    measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
+    measureUnitValue = MeasureUnit::getInchHg();
+    measureUnit.adoptInstead(MeasureUnit::createKilopascal(status));
+    measureUnitValue = MeasureUnit::getKilopascal();
+    measureUnit.adoptInstead(MeasureUnit::createMegapascal(status));
+    measureUnitValue = MeasureUnit::getMegapascal();
+    measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
+    measureUnitValue = MeasureUnit::getMillibar();
+    measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
+    measureUnitValue = MeasureUnit::getMillimeterOfMercury();
+    measureUnit.adoptInstead(MeasureUnit::createPascal(status));
+    measureUnitValue = MeasureUnit::getPascal();
+    measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
+    measureUnitValue = MeasureUnit::getPoundPerSquareInch();
+    measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
+    measureUnitValue = MeasureUnit::getKilometerPerHour();
+    measureUnit.adoptInstead(MeasureUnit::createKnot(status));
+    measureUnitValue = MeasureUnit::getKnot();
+    measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
+    measureUnitValue = MeasureUnit::getMeterPerSecond();
+    measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
+    measureUnitValue = MeasureUnit::getMilePerHour();
+    measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
+    measureUnitValue = MeasureUnit::getCelsius();
+    measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
+    measureUnitValue = MeasureUnit::getFahrenheit();
+    measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
+    measureUnitValue = MeasureUnit::getGenericTemperature();
+    measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
+    measureUnitValue = MeasureUnit::getKelvin();
+    measureUnit.adoptInstead(MeasureUnit::createNewtonMeter(status));
+    measureUnitValue = MeasureUnit::getNewtonMeter();
+    measureUnit.adoptInstead(MeasureUnit::createPoundFoot(status));
+    measureUnitValue = MeasureUnit::getPoundFoot();
+    measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
+    measureUnitValue = MeasureUnit::getAcreFoot();
+    measureUnit.adoptInstead(MeasureUnit::createBarrel(status));
+    measureUnitValue = MeasureUnit::getBarrel();
+    measureUnit.adoptInstead(MeasureUnit::createBushel(status));
+    measureUnitValue = MeasureUnit::getBushel();
+    measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
+    measureUnitValue = MeasureUnit::getCentiliter();
+    measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
+    measureUnitValue = MeasureUnit::getCubicCentimeter();
+    measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
+    measureUnitValue = MeasureUnit::getCubicFoot();
+    measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
+    measureUnitValue = MeasureUnit::getCubicInch();
+    measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
+    measureUnitValue = MeasureUnit::getCubicKilometer();
+    measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
+    measureUnitValue = MeasureUnit::getCubicMeter();
+    measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
+    measureUnitValue = MeasureUnit::getCubicMile();
+    measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
+    measureUnitValue = MeasureUnit::getCubicYard();
+    measureUnit.adoptInstead(MeasureUnit::createCup(status));
+    measureUnitValue = MeasureUnit::getCup();
+    measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
+    measureUnitValue = MeasureUnit::getCupMetric();
+    measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
+    measureUnitValue = MeasureUnit::getDeciliter();
+    measureUnit.adoptInstead(MeasureUnit::createDessertSpoon(status));
+    measureUnitValue = MeasureUnit::getDessertSpoon();
+    measureUnit.adoptInstead(MeasureUnit::createDessertSpoonImperial(status));
+    measureUnitValue = MeasureUnit::getDessertSpoonImperial();
+    measureUnit.adoptInstead(MeasureUnit::createDram(status));
+    measureUnitValue = MeasureUnit::getDram();
+    measureUnit.adoptInstead(MeasureUnit::createDrop(status));
+    measureUnitValue = MeasureUnit::getDrop();
+    measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
+    measureUnitValue = MeasureUnit::getFluidOunce();
+    measureUnit.adoptInstead(MeasureUnit::createFluidOunceImperial(status));
+    measureUnitValue = MeasureUnit::getFluidOunceImperial();
+    measureUnit.adoptInstead(MeasureUnit::createGallon(status));
+    measureUnitValue = MeasureUnit::getGallon();
+    measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status));
+    measureUnitValue = MeasureUnit::getGallonImperial();
+    measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
+    measureUnitValue = MeasureUnit::getHectoliter();
+    measureUnit.adoptInstead(MeasureUnit::createJigger(status));
+    measureUnitValue = MeasureUnit::getJigger();
+    measureUnit.adoptInstead(MeasureUnit::createLiter(status));
+    measureUnitValue = MeasureUnit::getLiter();
+    measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
+    measureUnitValue = MeasureUnit::getMegaliter();
+    measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
+    measureUnitValue = MeasureUnit::getMilliliter();
+    measureUnit.adoptInstead(MeasureUnit::createPinch(status));
+    measureUnitValue = MeasureUnit::getPinch();
+    measureUnit.adoptInstead(MeasureUnit::createPint(status));
+    measureUnitValue = MeasureUnit::getPint();
+    measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
+    measureUnitValue = MeasureUnit::getPintMetric();
+    measureUnit.adoptInstead(MeasureUnit::createQuart(status));
+    measureUnitValue = MeasureUnit::getQuart();
+    measureUnit.adoptInstead(MeasureUnit::createQuartImperial(status));
+    measureUnitValue = MeasureUnit::getQuartImperial();
+    measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
+    measureUnitValue = MeasureUnit::getTablespoon();
+    measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
+    measureUnitValue = MeasureUnit::getTeaspoon();
+    assertSuccess("", status);
+}
+
 void MeasureFormatTest::TestBasic() {
     UErrorCode status = U_ZERO_ERROR;
     MeasureUnit *ptr1 = MeasureUnit::createArcMinute(status);
@@ -2706,7 +3095,7 @@
     helperTestMultiples(en, UMEASFMT_WIDTH_SHORT,  "2 mi, 1 ft, 2.3 in");
     helperTestMultiples(en, UMEASFMT_WIDTH_NARROW, "2mi 1\\u2032 2.3\\u2033");
     helperTestMultiples(ru, UMEASFMT_WIDTH_WIDE,   "2 \\u043C\\u0438\\u043B\\u0438 1 \\u0444\\u0443\\u0442 2,3 \\u0434\\u044E\\u0439\\u043C\\u0430");
-    helperTestMultiples(ru, UMEASFMT_WIDTH_SHORT,  "2 \\u043C\\u0438\\u043B\\u0438 1 \\u0444\\u0442 2,3 \\u0434\\u044E\\u0439\\u043C.");
+    helperTestMultiples(ru, UMEASFMT_WIDTH_SHORT,  "2 \\u043C\\u0438 1 \\u0444\\u0442 2,3 \\u0434\\u044E\\u0439\\u043C.");
     helperTestMultiples(ru, UMEASFMT_WIDTH_NARROW, "2 \\u043C\\u0438\\u043B\\u044C 1 \\u0444\\u0442 2,3 \\u0434\\u044E\\u0439\\u043C\\u0430");
 }
 
@@ -2751,7 +3140,7 @@
     helperTestManyLocaleDurations("en", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
     helperTestManyLocaleDurations("en_GB", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5h 37m");
     helperTestManyLocaleDurations("en_GB", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
-    helperTestManyLocaleDurations("es", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5 h 37 min");
+    helperTestManyLocaleDurations("es", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5h 37min");
     helperTestManyLocaleDurations("es", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
     helperTestManyLocaleDurations("fi", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5t 37min");
     helperTestManyLocaleDurations("fi", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5.37");
@@ -2765,7 +3154,7 @@
     helperTestManyLocaleDurations("nb", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
     helperTestManyLocaleDurations("nl", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5 u, 37 m");
     helperTestManyLocaleDurations("nl", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
-    helperTestManyLocaleDurations("nn", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5t og 37m");
+    helperTestManyLocaleDurations("nn", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5t 37m");
     helperTestManyLocaleDurations("nn", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
     helperTestManyLocaleDurations("sv", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5h 37m");
     helperTestManyLocaleDurations("sv", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
@@ -3108,7 +3497,7 @@
     UErrorCode status = U_ZERO_ERROR;
     Locale en("en");
     MeasureFormat fmt("en", UMEASFMT_WIDTH_SHORT, status);
-    Measure measure(50.0, MeasureUnit::createPound(status), status);
+    Measure measure(50.0, MeasureUnit::createPoundForce(status), status);
     LocalPointer<MeasureUnit> sqInch(MeasureUnit::createSquareInch(status));
     if (!assertSuccess("Create of format unit and per unit", status)) {
         return;
@@ -3130,11 +3519,23 @@
     // and falls back to fr for the "other" form.
     IcuTestErrorCode errorCode(*this, "TestIndividualPluralFallback");
     MeasureFormat mf("fr_CA", UMEASFMT_WIDTH_SHORT, errorCode);
+    if (errorCode.errIfFailureAndReset("MeasureFormat mf(...) failed.")) {
+        return;
+    }
     LocalPointer<Measure> twoDeg(
         new Measure(2.0, MeasureUnit::createGenericTemperature(errorCode), errorCode), errorCode);
+    if (errorCode.errIfFailureAndReset("Creating twoDeg failed.")) {
+        return;
+    }
     UnicodeString expected = UNICODE_STRING_SIMPLE("2\\u00B0").unescape();
     UnicodeString actual;
-    assertEquals("2 deg temp in fr_CA", expected, mf.format(twoDeg.orphan(), actual, errorCode), TRUE);
+    // Formattable adopts the pointer
+    mf.format(Formattable(twoDeg.orphan()), actual, errorCode);
+    if (errorCode.errIfFailureAndReset("mf.format(...) failed.")) {
+        return;
+    }
+    assertEquals("2 deg temp in fr_CA", expected, actual, TRUE);
+    errorCode.errIfFailureAndReset("mf.format failed");
 }
 
 void MeasureFormatTest::Test20332_PersonUnits() {
@@ -3258,11 +3659,11 @@
         {"per-kilometer", "per-kilometer"},
 
         // Normalization of power and per
-        {"p2-foot-and-p2-mile", "square-foot-and-square-mile"},
+        {"pow2-foot-and-pow2-mile", "square-foot-and-square-mile"},
         {"gram-square-gram-per-dekagram", "cubic-gram-per-dekagram"},
         {"kilogram-per-meter-per-second", "kilogram-per-meter-second"},
 
-        // TODO(ICU-20920): Add more test cases once the proper ranking is available.
+        // TODO(ICU-21284): Add more test cases once the proper ranking is available.
     };
     for (const auto &cas : cases) {
         status.setScope(cas.id);
@@ -3290,8 +3691,10 @@
         "+meter",
         "-kilometer",
         "+kilometer",
-        "-p2-meter",
-        "+p2-meter",
+        "-pow2-meter",
+        "+pow2-meter",
+        "p2-meter",
+        "p4-meter",
         "+",
         "-",
         "-mile",
@@ -3319,6 +3722,72 @@
     }
 }
 
+void MeasureFormatTest::TestParseToBuiltIn() {
+    IcuTestErrorCode status(*this, "TestParseToBuiltIn()");
+    const struct TestCase {
+        const char *identifier;
+        MeasureUnit expectedBuiltIn;
+    } cases[] = {
+        {"meter-per-second-per-second", MeasureUnit::getMeterPerSecondSquared()},
+        {"meter-per-second-second", MeasureUnit::getMeterPerSecondSquared()},
+        {"centimeter-centimeter", MeasureUnit::getSquareCentimeter()},
+        {"square-foot", MeasureUnit::getSquareFoot()},
+        {"pow2-inch", MeasureUnit::getSquareInch()},
+        {"milligram-per-deciliter", MeasureUnit::getMilligramPerDeciliter()},
+        {"pound-force-per-pow2-inch", MeasureUnit::getPoundPerSquareInch()},
+        {"yard-pow2-yard", MeasureUnit::getCubicYard()},
+        {"square-yard-yard", MeasureUnit::getCubicYard()},
+    };
+
+    for (auto &cas : cases) {
+        MeasureUnit fromIdent = MeasureUnit::forIdentifier(cas.identifier, status);
+        status.assertSuccess();
+        assertEquals("forIdentifier returns a normal built-in unit when it exists",
+                     cas.expectedBuiltIn.getOffset(), fromIdent.getOffset());
+        assertEquals("type", cas.expectedBuiltIn.getType(), fromIdent.getType());
+        assertEquals("subType", cas.expectedBuiltIn.getSubtype(), fromIdent.getSubtype());
+    }
+}
+
+// Kilogram is a "base unit", although it's also "gram" with a kilo- prefix.
+// This tests that it is handled in the preferred manner.
+void MeasureFormatTest::TestKilogramIdentifier() {
+    IcuTestErrorCode status(*this, "TestKilogramIdentifier");
+
+    // SI unit of mass
+    MeasureUnit kilogram = MeasureUnit::forIdentifier("kilogram", status);
+    // Metric mass unit
+    MeasureUnit gram = MeasureUnit::forIdentifier("gram", status);
+    // Microgram: still a built-in type
+    MeasureUnit microgram = MeasureUnit::forIdentifier("microgram", status);
+    // Nanogram: not a built-in type at this time
+    MeasureUnit nanogram = MeasureUnit::forIdentifier("nanogram", status);
+    status.assertSuccess();
+
+    assertEquals("parsed kilogram equals built-in kilogram", MeasureUnit::getKilogram().getType(),
+                 kilogram.getType());
+    assertEquals("parsed kilogram equals built-in kilogram", MeasureUnit::getKilogram().getSubtype(),
+                 kilogram.getSubtype());
+    assertEquals("parsed gram equals built-in gram", MeasureUnit::getGram().getType(), gram.getType());
+    assertEquals("parsed gram equals built-in gram", MeasureUnit::getGram().getSubtype(),
+                 gram.getSubtype());
+    assertEquals("parsed microgram equals built-in microgram", MeasureUnit::getMicrogram().getType(),
+                 microgram.getType());
+    assertEquals("parsed microgram equals built-in microgram", MeasureUnit::getMicrogram().getSubtype(),
+                 microgram.getSubtype());
+    assertEquals("nanogram", "", nanogram.getType());
+    assertEquals("nanogram", "nanogram", nanogram.getIdentifier());
+
+    assertEquals("prefix of kilogram", UMEASURE_SI_PREFIX_KILO, kilogram.getSIPrefix(status));
+    assertEquals("prefix of gram", UMEASURE_SI_PREFIX_ONE, gram.getSIPrefix(status));
+    assertEquals("prefix of microgram", UMEASURE_SI_PREFIX_MICRO, microgram.getSIPrefix(status));
+    assertEquals("prefix of nanogram", UMEASURE_SI_PREFIX_NANO, nanogram.getSIPrefix(status));
+
+    MeasureUnit tmp = kilogram.withSIPrefix(UMEASURE_SI_PREFIX_MILLI, status);
+    assertEquals(UnicodeString("Kilogram + milli should be milligram, got: ") + tmp.getIdentifier(),
+                 MeasureUnit::getMilligram().getIdentifier(), tmp.getIdentifier());
+}
+
 void MeasureFormatTest::TestCompoundUnitOperations() {
     IcuTestErrorCode status(*this, "TestCompoundUnitOperations");
 
@@ -3347,8 +3816,8 @@
 
     verifySingleUnit(squareMeter, UMEASURE_SI_PREFIX_ONE, 2, "square-meter");
     verifySingleUnit(overCubicCentimeter, UMEASURE_SI_PREFIX_CENTI, -3, "per-cubic-centimeter");
-    verifySingleUnit(quarticKilometer, UMEASURE_SI_PREFIX_KILO, 4, "p4-kilometer");
-    verifySingleUnit(overQuarticKilometer1, UMEASURE_SI_PREFIX_KILO, -4, "per-p4-kilometer");
+    verifySingleUnit(quarticKilometer, UMEASURE_SI_PREFIX_KILO, 4, "pow4-kilometer");
+    verifySingleUnit(overQuarticKilometer1, UMEASURE_SI_PREFIX_KILO, -4, "per-pow4-kilometer");
 
     assertTrue("power inequality", quarticKilometer != overQuarticKilometer1);
 
@@ -3361,9 +3830,9 @@
         .reciprocal(status)
         .withSIPrefix(UMEASURE_SI_PREFIX_KILO, status);
 
-    verifySingleUnit(overQuarticKilometer2, UMEASURE_SI_PREFIX_KILO, -4, "per-p4-kilometer");
-    verifySingleUnit(overQuarticKilometer3, UMEASURE_SI_PREFIX_KILO, -4, "per-p4-kilometer");
-    verifySingleUnit(overQuarticKilometer4, UMEASURE_SI_PREFIX_KILO, -4, "per-p4-kilometer");
+    verifySingleUnit(overQuarticKilometer2, UMEASURE_SI_PREFIX_KILO, -4, "per-pow4-kilometer");
+    verifySingleUnit(overQuarticKilometer3, UMEASURE_SI_PREFIX_KILO, -4, "per-pow4-kilometer");
+    verifySingleUnit(overQuarticKilometer4, UMEASURE_SI_PREFIX_KILO, -4, "per-pow4-kilometer");
 
     assertTrue("reciprocal equality", overQuarticKilometer1 == overQuarticKilometer2);
     assertTrue("reciprocal equality", overQuarticKilometer1 == overQuarticKilometer3);
@@ -3442,17 +3911,17 @@
     assertTrue("kilometer equality", kilometer == kilometer2);
 
     // Test out-of-range powers
-    MeasureUnit power15 = MeasureUnit::forIdentifier("p15-kilometer", status);
-    verifySingleUnit(power15, UMEASURE_SI_PREFIX_KILO, 15, "p15-kilometer");
+    MeasureUnit power15 = MeasureUnit::forIdentifier("pow15-kilometer", status);
+    verifySingleUnit(power15, UMEASURE_SI_PREFIX_KILO, 15, "pow15-kilometer");
     status.errIfFailureAndReset();
-    MeasureUnit power16a = MeasureUnit::forIdentifier("p16-kilometer", status);
+    MeasureUnit power16a = MeasureUnit::forIdentifier("pow16-kilometer", status);
     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
     MeasureUnit power16b = power15.product(kilometer, status);
     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
-    MeasureUnit powerN15 = MeasureUnit::forIdentifier("per-p15-kilometer", status);
-    verifySingleUnit(powerN15, UMEASURE_SI_PREFIX_KILO, -15, "per-p15-kilometer");
+    MeasureUnit powerN15 = MeasureUnit::forIdentifier("per-pow15-kilometer", status);
+    verifySingleUnit(powerN15, UMEASURE_SI_PREFIX_KILO, -15, "per-pow15-kilometer");
     status.errIfFailureAndReset();
-    MeasureUnit powerN16a = MeasureUnit::forIdentifier("per-p16-kilometer", status);
+    MeasureUnit powerN16a = MeasureUnit::forIdentifier("per-pow16-kilometer", status);
     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
     MeasureUnit powerN16b = powerN15.product(overQuarticKilometer1, status);
     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
@@ -3467,8 +3936,8 @@
     // Parser::from("") to be called:
 
     // splitToSingleUnits
-    int32_t count;
-    LocalArray<MeasureUnit> singles = dimensionless.splitToSingleUnits(count, status);
+    auto pair = dimensionless.splitToSingleUnits(status);
+    int32_t count = pair.second;
     status.errIfFailureAndReset("dimensionless.splitToSingleUnits(...)");
     assertEquals("no singles in dimensionless", 0, count);
 
@@ -3486,7 +3955,8 @@
     // dimensionless.withSIPrefix()
     modified = dimensionless.withSIPrefix(UMEASURE_SI_PREFIX_KILO, status);
     status.errIfFailureAndReset("dimensionless.withSIPrefix(...)");
-    singles = modified.splitToSingleUnits(count, status);
+    pair = dimensionless.splitToSingleUnits(status);
+    count = pair.second;
     assertEquals("no singles in modified", 0, count);
     siPrefix = modified.getSIPrefix(status);
     status.errIfFailureAndReset("modified.getSIPrefix(...)");
@@ -3547,6 +4017,79 @@
     status.errIfFailureAndReset();
 }
 
+void MeasureFormatTest::Test21223_FrenchDuration() {
+    IcuTestErrorCode status(*this, "Test21223_FrenchDuration");
+    MeasureFormat mf("fr-FR", UMEASFMT_WIDTH_NARROW, status);
+    Measure H5M10[] = {
+        {5, MeasureUnit::createHour(status), status},
+        {10, MeasureUnit::createMinute(status), status}
+    };
+    UnicodeString result;
+    FieldPosition pos;
+    mf.formatMeasures(H5M10, UPRV_LENGTHOF(H5M10), result, pos, status);
+    assertEquals("Should have consistent spacing", u"5h 10min", result);
+
+    // Test additional locales:
+    // int32_t localeCount;
+    // const Locale* locales = Locale::getAvailableLocales(localeCount);
+    // for (int32_t i=0; i<localeCount; i++) {
+    //     auto& loc = locales[i];
+    //     MeasureFormat mf1(loc, UMEASFMT_WIDTH_NARROW, status);
+    //     mf1.formatMeasures(H5M10, UPRV_LENGTHOF(H5M10), result.remove(), pos, status);
+    //     assertFalse(result + u" " + loc.getName(), TRUE);
+    // }
+}
+
+void MeasureFormatTest::TestInternalMeasureUnitImpl() {
+    IcuTestErrorCode status(*this, "TestInternalMeasureUnitImpl");
+    MeasureUnitImpl mu1 = MeasureUnitImpl::forIdentifier("meter", status);
+    status.assertSuccess();
+    assertEquals("mu1 initial identifier", "", mu1.identifier.data());
+    assertEquals("mu1 initial complexity", UMEASURE_UNIT_SINGLE, mu1.complexity);
+    assertEquals("mu1 initial units length", 1, mu1.units.length());
+    assertEquals("mu1 initial units[0]", "meter", mu1.units[0]->getSimpleUnitID());
+
+    // Producing identifier via build(): the std::move() means mu1 gets modified
+    // while it also gets assigned to tmp's internal fImpl.
+    MeasureUnit tmp = std::move(mu1).build(status);
+    status.assertSuccess();
+    assertEquals("mu1 post-move-build identifier", "meter", mu1.identifier.data());
+    assertEquals("mu1 post-move-build complexity", UMEASURE_UNIT_SINGLE, mu1.complexity);
+    assertEquals("mu1 post-move-build units length", 1, mu1.units.length());
+    assertEquals("mu1 post-move-build units[0]", "meter", mu1.units[0]->getSimpleUnitID());
+    assertEquals("MeasureUnit tmp identifier", "meter", tmp.getIdentifier());
+
+    // This temporary variable is used when forMeasureUnit's first parameter
+    // lacks an fImpl instance:
+    MeasureUnitImpl tmpMemory;
+    const MeasureUnitImpl &tmpImplRef = MeasureUnitImpl::forMeasureUnit(tmp, tmpMemory, status);
+    status.assertSuccess();
+    assertEquals("tmpMemory identifier", "", tmpMemory.identifier.data());
+    assertEquals("tmpMemory complexity", UMEASURE_UNIT_SINGLE, tmpMemory.complexity);
+    assertEquals("tmpMemory units length", 1, tmpMemory.units.length());
+    assertEquals("tmpMemory units[0]", "meter", tmpMemory.units[0]->getSimpleUnitID());
+    assertEquals("tmpImplRef identifier", "", tmpImplRef.identifier.data());
+    assertEquals("tmpImplRef complexity", UMEASURE_UNIT_SINGLE, tmpImplRef.complexity);
+
+    MeasureUnitImpl mu2 = MeasureUnitImpl::forIdentifier("newton-meter", status);
+    status.assertSuccess();
+    mu1 = std::move(mu2);
+    assertEquals("mu1 = move(mu2): identifier", "", mu1.identifier.data());
+    assertEquals("mu1 = move(mu2): complexity", UMEASURE_UNIT_COMPOUND, mu1.complexity);
+    assertEquals("mu1 = move(mu2): units length", 2, mu1.units.length());
+    assertEquals("mu1 = move(mu2): units[0]", "newton", mu1.units[0]->getSimpleUnitID());
+    assertEquals("mu1 = move(mu2): units[1]", "meter", mu1.units[1]->getSimpleUnitID());
+
+    mu1 = MeasureUnitImpl::forIdentifier("hour-and-minute-and-second", status);
+    status.assertSuccess();
+    assertEquals("mu1 = HMS: identifier", "", mu1.identifier.data());
+    assertEquals("mu1 = HMS: complexity", UMEASURE_UNIT_MIXED, mu1.complexity);
+    assertEquals("mu1 = HMS: units length", 3, mu1.units.length());
+    assertEquals("mu1 = HMS: units[0]", "hour", mu1.units[0]->getSimpleUnitID());
+    assertEquals("mu1 = HMS: units[1]", "minute", mu1.units[1]->getSimpleUnitID());
+    assertEquals("mu1 = HMS: units[2]", "second", mu1.units[2]->getSimpleUnitID());
+}
+
 
 void MeasureFormatTest::verifyFieldPosition(
         const char *description,
@@ -3665,8 +4208,9 @@
         unit.getComplexity(status));
     status.errIfFailureAndReset("%s: Complexity", identifier);
 
-    int32_t length;
-    LocalArray<MeasureUnit> subUnits = unit.splitToSingleUnits(length, status);
+    auto pair = unit.splitToSingleUnits(status);
+    const LocalArray<MeasureUnit>& subUnits = pair.first;
+    int32_t length = pair.second;
     assertEquals(uid + ": Length", subIdentifierCount, length);
     for (int32_t i = 0;; i++) {
         if (i >= subIdentifierCount || i >= length) break;
@@ -3698,8 +4242,9 @@
         unit.getComplexity(status));
     status.errIfFailureAndReset("%s: Complexity", identifier);
 
-    int32_t length;
-    LocalArray<MeasureUnit> subUnits = unit.splitToSingleUnits(length, status);
+    auto pair = unit.splitToSingleUnits(status);
+    const LocalArray<MeasureUnit>& subUnits = pair.first;
+    int32_t length = pair.second;
     assertEquals(uid + ": Length", subIdentifierCount, length);
     for (int32_t i = 0;; i++) {
         if (i >= subIdentifierCount || i >= length) break;
diff --git a/icu4c/source/test/intltest/numberformattesttuple.cpp b/icu4c/source/test/intltest/numberformattesttuple.cpp
index b73e67e..6565a4b 100644
--- a/icu4c/source/test/intltest/numberformattesttuple.cpp
+++ b/icu4c/source/test/intltest/numberformattesttuple.cpp
@@ -11,6 +11,7 @@
 
 #if !UCONFIG_NO_FORMATTING
 
+#include "unicode/testlog.h"
 #include "ustrfmt.h"
 #include "charstr.h"
 #include "cstring.h"
diff --git a/icu4c/source/test/intltest/numbertest.h b/icu4c/source/test/intltest/numbertest.h
index cb0be28..bd4c0e2 100644
--- a/icu4c/source/test/intltest/numbertest.h
+++ b/icu4c/source/test/intltest/numbertest.h
@@ -16,6 +16,11 @@
 #include "unicode/numberformatter.h"
 #include "unicode/numberrangeformatter.h"
 
+// ICU-20241 Solaris #defines ESP in sys/regset.h
+#ifdef ESP
+#   undef ESP
+#endif
+
 using namespace icu::number;
 using namespace icu::number::impl;
 using namespace icu::numparse;
@@ -54,6 +59,10 @@
     void notationCompact();
     void unitMeasure();
     void unitCompoundMeasure();
+    void unitSkeletons();
+    void unitUsage();
+    void unitUsageErrorCodes();
+    void unitUsageSkeletons();
     void unitCurrency();
     void unitPercent();
     void percentParity();
@@ -84,6 +93,7 @@
     void localPointerCAPI();
     void toObject();
     void toDecimalNumber();
+    void microPropsInternals();
 
     void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0);
 
@@ -95,15 +105,20 @@
     CurrencyUnit ESP;
     CurrencyUnit PTE;
     CurrencyUnit RON;
+    CurrencyUnit TWD;
+    CurrencyUnit TRY;
     CurrencyUnit CNY;
 
     MeasureUnit METER;
+    MeasureUnit METER_PER_SECOND;
     MeasureUnit DAY;
     MeasureUnit SQUARE_METER;
     MeasureUnit FAHRENHEIT;
     MeasureUnit SECOND;
     MeasureUnit POUND;
+    MeasureUnit POUND_FORCE;
     MeasureUnit SQUARE_MILE;
+    MeasureUnit SQUARE_INCH;
     MeasureUnit JOULE;
     MeasureUnit FURLONG;
     MeasureUnit KELVIN;
@@ -259,6 +274,7 @@
     void flexibleSeparators();
     void wildcardCharacters();
     void perUnitInArabic();
+    void perUnitToSkeleton();
 
     void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0);
 
@@ -280,6 +296,7 @@
     void testFieldPositions();
     void testCopyMove();
     void toObject();
+    void testGetDecimalNumbers();
 
     void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0);
 
diff --git a/icu4c/source/test/intltest/numbertest_api.cpp b/icu4c/source/test/intltest/numbertest_api.cpp
index c586603..e653fbf 100644
--- a/icu4c/source/test/intltest/numbertest_api.cpp
+++ b/icu4c/source/test/intltest/numbertest_api.cpp
@@ -11,12 +11,14 @@
 #include <memory>
 #include "unicode/unum.h"
 #include "unicode/numberformatter.h"
+#include "unicode/testlog.h"
+#include "unicode/utypes.h"
 #include "number_asformat.h"
 #include "number_types.h"
 #include "number_utils.h"
-#include "numbertest.h"
-#include "unicode/utypes.h"
 #include "number_utypes.h"
+#include "number_microprops.h"
+#include "numbertest.h"
 
 using number::impl::UFormattedNumberData;
 
@@ -36,6 +38,8 @@
           ESP(u"ESP", status),
           PTE(u"PTE", status),
           RON(u"RON", status),
+          TWD(u"TWD", status),
+          TRY(u"TRY", status),
           CNY(u"CNY", status),
           FRENCH_SYMBOLS(Locale::getFrench(), status),
           SWISS_SYMBOLS(Locale("de-CH"), status),
@@ -49,12 +53,15 @@
     }
     METER = *unit;
 
+    METER_PER_SECOND = *LocalPointer<MeasureUnit>(MeasureUnit::createMeterPerSecond(status));
     DAY = *LocalPointer<MeasureUnit>(MeasureUnit::createDay(status));
     SQUARE_METER = *LocalPointer<MeasureUnit>(MeasureUnit::createSquareMeter(status));
     FAHRENHEIT = *LocalPointer<MeasureUnit>(MeasureUnit::createFahrenheit(status));
     SECOND = *LocalPointer<MeasureUnit>(MeasureUnit::createSecond(status));
     POUND = *LocalPointer<MeasureUnit>(MeasureUnit::createPound(status));
+    POUND_FORCE = *LocalPointer<MeasureUnit>(MeasureUnit::createPoundForce(status));
     SQUARE_MILE = *LocalPointer<MeasureUnit>(MeasureUnit::createSquareMile(status));
+    SQUARE_INCH = *LocalPointer<MeasureUnit>(MeasureUnit::createSquareInch(status));
     JOULE = *LocalPointer<MeasureUnit>(MeasureUnit::createJoule(status));
     FURLONG = *LocalPointer<MeasureUnit>(MeasureUnit::createFurlong(status));
     KELVIN = *LocalPointer<MeasureUnit>(MeasureUnit::createKelvin(status));
@@ -73,6 +80,10 @@
         TESTCASE_AUTO(notationCompact);
         TESTCASE_AUTO(unitMeasure);
         TESTCASE_AUTO(unitCompoundMeasure);
+        TESTCASE_AUTO(unitSkeletons);
+        TESTCASE_AUTO(unitUsage);
+        TESTCASE_AUTO(unitUsageErrorCodes);
+        TESTCASE_AUTO(unitUsageSkeletons);
         TESTCASE_AUTO(unitCurrency);
         TESTCASE_AUTO(unitPercent);
         if (!quick) {
@@ -110,6 +121,7 @@
         TESTCASE_AUTO(localPointerCAPI);
         TESTCASE_AUTO(toObject);
         TESTCASE_AUTO(toDecimalNumber);
+        TESTCASE_AUTO(microPropsInternals);
     TESTCASE_AUTO_END;
 }
 
@@ -483,6 +495,17 @@
             1e7,
             u"1000\u842C");
 
+    if (!logKnownIssue("21258", "StandardPlural cannot handle keywords 1, 0")) {
+        assertFormatSingle(
+                u"Compact with plural form =1 (ICU-21258)",
+                u"compact-long",
+                u"K",
+                NumberFormatter::with().notation(Notation::compactLong()),
+                Locale("fr-FR"),
+                1e3,
+                u"mille");
+    }
+
     assertFormatSingle(
             u"Compact Infinity",
             u"compact-short",
@@ -506,6 +529,8 @@
 }
 
 void NumberFormatterApiTest::unitMeasure() {
+    IcuTestErrorCode status(*this, "unitMeasure()");
+
     assertFormatDescending(
             u"Meters Short and unit() method",
             u"measure-unit/length-meter",
@@ -557,6 +582,23 @@
             u"0.0088 meters",
             u"0 meters");
 
+//     // TODO(ICU-20941): Support formatting for not-built-in units
+//     assertFormatDescending(
+//             u"Hectometers",
+//             u"measure-unit/length-hectometer",
+//             u"unit/hectometer",
+//             NumberFormatter::with().unit(MeasureUnit::forIdentifier("hectometer", status)),
+//             Locale::getEnglish(),
+//             u"87,650 hm",
+//             u"8,765 hm",
+//             u"876.5 hm",
+//             u"87.65 hm",
+//             u"8.765 hm",
+//             u"0.8765 hm",
+//             u"0.08765 hm",
+//             u"0.008765 hm",
+//             u"0 hm");
+
 //    TODO: Implement Measure in C++
 //    assertFormatSingleMeasure(
 //            u"Meters with Measure Input",
@@ -672,9 +714,104 @@
             Locale("es-MX"),
             5,
             u"5 a\u00F1os");
+
+    assertFormatSingle(
+            u"Mixed unit",
+            u"unit/yard-and-foot-and-inch",
+            u"unit/yard-and-foot-and-inch",
+            NumberFormatter::with()
+                .unit(MeasureUnit::forIdentifier("yard-and-foot-and-inch", status)),
+            Locale("en-US"),
+            3.65,
+            "3 yd, 1 ft, 11.4 in");
+
+    assertFormatSingle(
+            u"Mixed unit, Scientific",
+            u"unit/yard-and-foot-and-inch E0",
+            u"unit/yard-and-foot-and-inch E0",
+            NumberFormatter::with()
+                .unit(MeasureUnit::forIdentifier("yard-and-foot-and-inch", status))
+                .notation(Notation::scientific()),
+            Locale("en-US"),
+            3.65,
+            "3 yd, 1 ft, 1.14E1 in");
+
+    assertFormatSingle(
+            u"Mixed Unit (Narrow Version)",
+            u"unit/metric-ton-and-kilogram-and-gram unit-width-narrow",
+            u"unit/metric-ton-and-kilogram-and-gram unit-width-narrow",
+            NumberFormatter::with()
+                .unit(MeasureUnit::forIdentifier("metric-ton-and-kilogram-and-gram", status))
+                .unitWidth(UNUM_UNIT_WIDTH_NARROW),
+            Locale("en-US"),
+            4.28571,
+            u"4t 285kg 710g");
+
+    assertFormatSingle(
+            u"Mixed Unit (Short Version)",
+            u"unit/metric-ton-and-kilogram-and-gram unit-width-short",
+            u"unit/metric-ton-and-kilogram-and-gram unit-width-short",
+            NumberFormatter::with()
+                .unit(MeasureUnit::forIdentifier("metric-ton-and-kilogram-and-gram", status))
+                .unitWidth(UNUM_UNIT_WIDTH_SHORT),
+            Locale("en-US"),
+            4.28571,
+            u"4 t, 285 kg, 710 g");
+
+    assertFormatSingle(
+            u"Mixed Unit (Full Name Version)",
+            u"unit/metric-ton-and-kilogram-and-gram unit-width-full-name",
+            u"unit/metric-ton-and-kilogram-and-gram unit-width-full-name",
+            NumberFormatter::with()
+                .unit(MeasureUnit::forIdentifier("metric-ton-and-kilogram-and-gram", status))
+                .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),
+            Locale("en-US"),
+            4.28571,
+            u"4 metric tons, 285 kilograms, 710 grams");
+
+    assertFormatSingle(
+            u"Testing  \"1 foot 12 inches\"",
+            u"unit/foot-and-inch @### unit-width-full-name",
+            u"unit/foot-and-inch @### unit-width-full-name",
+            NumberFormatter::with()
+                .unit(MeasureUnit::forIdentifier("foot-and-inch", status))
+                .precision(Precision::maxSignificantDigits(4))
+                .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),
+            Locale("en-US"),
+            1.9999,
+            u"2 feet, 0 inches");
+
+    assertFormatSingle(
+            u"Negative numbers: temperature",
+            u"measure-unit/temperature-celsius",
+            u"unit/celsius",
+            NumberFormatter::with().unit(MeasureUnit::forIdentifier("celsius", status)),
+            Locale("nl-NL"),
+            -6.5,
+            u"-6,5\u00B0C");
+
+    assertFormatSingle(
+            u"Negative numbers: time",
+            u"unit/hour-and-minute-and-second",
+            u"unit/hour-and-minute-and-second",
+            NumberFormatter::with().unit(MeasureUnit::forIdentifier("hour-and-minute-and-second", status)),
+            Locale("de-DE"),
+            -1.24,
+            u"-1 Std., 14 Min. und 24 Sek.");
+
+    assertFormatSingle(
+            u"Zero out the unit field",
+            u"",
+            u"",
+            NumberFormatter::with().unit(KELVIN).unit(MeasureUnit()),
+            Locale("en"),
+            100,
+            u"100");
 }
 
 void NumberFormatterApiTest::unitCompoundMeasure() {
+    IcuTestErrorCode status(*this, "unitCompoundMeasure()");
+
     assertFormatDescending(
             u"Meters Per Second Short (unit that simplifies) and perUnit method",
             u"measure-unit/length-meter per-measure-unit/duration-second",
@@ -692,6 +829,22 @@
             u"0 m/s");
 
     assertFormatDescending(
+            u"Meters Per Second Short, built-in m/s",
+            u"measure-unit/speed-meter-per-second",
+            u"unit/meter-per-second",
+            NumberFormatter::with().unit(METER_PER_SECOND),
+            Locale::getEnglish(),
+            u"87,650 m/s",
+            u"8,765 m/s",
+            u"876.5 m/s",
+            u"87.65 m/s",
+            u"8.765 m/s",
+            u"0.8765 m/s",
+            u"0.08765 m/s",
+            u"0.008765 m/s",
+            u"0 m/s");
+
+    assertFormatDescending(
             u"Pounds Per Square Mile Short (secondary unit has per-format) and adoptPerUnit method",
             u"measure-unit/mass-pound per-measure-unit/area-square-mile",
             u"unit/pound-per-square-mile",
@@ -739,6 +892,661 @@
     //         u"0.08765 J/fur",
     //         u"0.008765 J/fur",
     //         u"0 J/fur");
+
+    assertFormatDescending(
+            u"Pounds per Square Inch: composed",
+            u"measure-unit/force-pound-force per-measure-unit/area-square-inch",
+            u"unit/pound-force-per-square-inch",
+            NumberFormatter::with().unit(POUND_FORCE).perUnit(SQUARE_INCH),
+            Locale::getEnglish(),
+            u"87,650 psi",
+            u"8,765 psi",
+            u"876.5 psi",
+            u"87.65 psi",
+            u"8.765 psi",
+            u"0.8765 psi",
+            u"0.08765 psi",
+            u"0.008765 psi",
+            u"0 psi");
+
+    assertFormatDescending(
+            u"Pounds per Square Inch: built-in",
+            u"measure-unit/force-pound-force per-measure-unit/area-square-inch",
+            u"unit/pound-force-per-square-inch",
+            NumberFormatter::with().unit(MeasureUnit::getPoundPerSquareInch()),
+            Locale::getEnglish(),
+            u"87,650 psi",
+            u"8,765 psi",
+            u"876.5 psi",
+            u"87.65 psi",
+            u"8.765 psi",
+            u"0.8765 psi",
+            u"0.08765 psi",
+            u"0.008765 psi",
+            u"0 psi");
+
+    assertFormatSingle(
+            u"m/s/s simplifies to m/s^2",
+            u"measure-unit/speed-meter-per-second per-measure-unit/duration-second",
+            u"unit/meter-per-square-second",
+            NumberFormatter::with().unit(METER_PER_SECOND).perUnit(SECOND),
+            Locale("en-GB"),
+            2.4,
+            u"2.4 m/s\u00B2");
+
+    assertFormatSingle(
+            u"Negative numbers: acceleration",
+            u"measure-unit/acceleration-meter-per-square-second",
+            u"unit/meter-per-second-second",
+            NumberFormatter::with().unit(MeasureUnit::forIdentifier("meter-per-pow2-second", status)),
+            Locale("af-ZA"),
+            -9.81,
+            u"-9,81 m/s\u00B2");
+
+    // Testing the rejection of invalid specifications
+
+    // If .unit() is not given a built-in type, .perUnit() is not allowed
+    // (because .unit is now flexible enough to handle compound units,
+    // .perUnit() is supported for backward compatibility).
+    LocalizedNumberFormatter nf = NumberFormatter::with()
+             .unit(MeasureUnit::forIdentifier("furlong-pascal", status))
+             .perUnit(METER)
+             .locale("en-GB");
+    status.assertSuccess(); // Error is only returned once we try to format.
+    FormattedNumber num = nf.formatDouble(2.4, status);
+    if (!status.expectErrorAndReset(U_UNSUPPORTED_ERROR)) {
+        errln(UnicodeString("Expected failure, got: \"") +
+              nf.formatDouble(2.4, status).toString(status) + "\".");
+        status.assertSuccess();
+    }
+
+    // .perUnit() may only be passed a built-in type, or something that combines
+    // to a built-in type together with .unit().
+    MeasureUnit SQUARE_SECOND = MeasureUnit::forIdentifier("square-second", status);
+    nf = NumberFormatter::with().unit(FURLONG).perUnit(SQUARE_SECOND).locale("en-GB");
+    status.assertSuccess(); // Error is only returned once we try to format.
+    num = nf.formatDouble(2.4, status);
+    if (!status.expectErrorAndReset(U_UNSUPPORTED_ERROR)) {
+        errln(UnicodeString("Expected failure, got: \"") +
+              nf.formatDouble(2.4, status).toString(status) + "\".");
+        status.assertSuccess();
+    }
+    // As above, "square-second" is not a built-in type, however this time,
+    // meter-per-square-second is a built-in type.
+    assertFormatSingle(
+            u"meter per square-second works as a composed unit",
+            u"measure-unit/speed-meter-per-second per-measure-unit/duration-second",
+            u"unit/meter-per-square-second",
+            NumberFormatter::with().unit(METER).perUnit(SQUARE_SECOND),
+            Locale("en-GB"),
+            2.4,
+            u"2.4 m/s\u00B2");
+}
+
+// TODO: merge these tests into numbertest_skeletons.cpp instead of here:
+void NumberFormatterApiTest::unitSkeletons() {
+    const struct TestCase {
+        const char *msg;
+        const char16_t *inputSkeleton;
+        const char16_t *normalizedSkeleton;
+    } cases[] = {
+        {"old-form built-in compound unit",      //
+         u"measure-unit/speed-meter-per-second", //
+         u"unit/meter-per-second"},
+
+        {"old-form compound construction, converts to built-in",        //
+         u"measure-unit/length-meter per-measure-unit/duration-second", //
+         u"unit/meter-per-second"},
+
+        {"old-form compound construction which does not simplify to a built-in", //
+         u"measure-unit/energy-joule per-measure-unit/length-meter",             //
+         u"unit/joule-per-meter"},
+
+        {"old-form compound-compound ugliness resolves neatly",                   //
+         u"measure-unit/speed-meter-per-second per-measure-unit/duration-second", //
+         u"unit/meter-per-square-second"},
+
+        {"short-form built-in units stick with the built-in", //
+         u"unit/meter-per-second",                            //
+         u"unit/meter-per-second"},
+
+        {"short-form compound units stay as is", //
+         u"unit/square-meter-per-square-meter",  //
+         u"unit/square-meter-per-square-meter"},
+
+        {"short-form compound units stay as is", //
+         u"unit/joule-per-furlong",              //
+         u"unit/joule-per-furlong"},
+
+        {"short-form that doesn't consist of built-in units", //
+         u"unit/hectometer-per-second",                       //
+         u"unit/hectometer-per-second"},
+
+        {"short-form that doesn't consist of built-in units", //
+         u"unit/meter-per-hectosecond",                       //
+         u"unit/meter-per-hectosecond"},
+
+        {"percent compound skeletons handled correctly", //
+         u"unit/percent-per-meter",                      //
+         u"unit/percent-per-meter"},
+
+        {"permille compound skeletons handled correctly",                 //
+         u"measure-unit/concentr-permille per-measure-unit/length-meter", //
+         u"unit/permille-per-meter"},
+
+        {"percent simple unit is not actually considered a unit", //
+         u"unit/percent",                                         //
+         u"percent"},
+
+        {"permille simple unit is not actually considered a unit", //
+         u"measure-unit/concentr-permille",                        //
+         u"permille"},
+
+        // // TODO: binary prefixes not supported yet!
+        // {"Round-trip example from icu-units#35", //
+        //  u"unit/kibijoule-per-furlong",          //
+        //  u"unit/kibijoule-per-furlong"},
+    };
+    for (auto &cas : cases) {
+        IcuTestErrorCode status(*this, cas.msg);
+        auto nf = NumberFormatter::forSkeleton(cas.inputSkeleton, status);
+        if (status.errIfFailureAndReset("NumberFormatter::forSkeleton failed")) {
+            continue;
+        }
+        assertEquals(                                                       //
+            UnicodeString(TRUE, cas.inputSkeleton, -1) + u" normalization", //
+            cas.normalizedSkeleton,                                         //
+            nf.toSkeleton(status));
+        status.errIfFailureAndReset("NumberFormatter::toSkeleton failed");
+    }
+
+    const struct FailCase {
+        const char *msg;
+        const char16_t *inputSkeleton;
+        UErrorCode expectedForSkelStatus;
+        UErrorCode expectedToSkelStatus;
+    } failCases[] = {
+        {"Parsing measure-unit/* results in failure if not built-in unit",
+         u"measure-unit/hectometer",     //
+         U_NUMBER_SKELETON_SYNTAX_ERROR, //
+         U_ZERO_ERROR},
+
+        {"Parsing per-measure-unit/* results in failure if not built-in unit",
+         u"measure-unit/meter per-measure-unit/hectosecond", //
+         U_NUMBER_SKELETON_SYNTAX_ERROR,                     //
+         U_ZERO_ERROR},
+
+        {"\"currency/EUR measure-unit/length-meter\" fails, conflicting skeleton.",
+         u"currency/EUR measure-unit/length-meter", //
+         U_NUMBER_SKELETON_SYNTAX_ERROR,            //
+         U_ZERO_ERROR},
+
+        {"\"measure-unit/length-meter currency/EUR\" fails, conflicting skeleton.",
+         u"measure-unit/length-meter currency/EUR", //
+         U_NUMBER_SKELETON_SYNTAX_ERROR,            //
+         U_ZERO_ERROR},
+
+        {"\"currency/EUR per-measure-unit/meter\" fails, conflicting skeleton.",
+         u"currency/EUR per-measure-unit/length-meter", //
+         U_NUMBER_SKELETON_SYNTAX_ERROR,                //
+         U_ZERO_ERROR},
+    };
+    for (auto &cas : failCases) {
+        IcuTestErrorCode status(*this, cas.msg);
+        auto nf = NumberFormatter::forSkeleton(cas.inputSkeleton, status);
+        if (status.expectErrorAndReset(cas.expectedForSkelStatus, cas.msg)) {
+            continue;
+        }
+        nf.toSkeleton(status);
+        status.expectErrorAndReset(cas.expectedToSkelStatus, cas.msg);
+    }
+
+    IcuTestErrorCode status(*this, "unitSkeletons");
+    assertEquals(                                //
+        ".unit(METER_PER_SECOND) normalization", //
+        u"unit/meter-per-second",                //
+        NumberFormatter::with().unit(METER_PER_SECOND).toSkeleton(status));
+    assertEquals(                                     //
+        ".unit(METER).perUnit(SECOND) normalization", //
+        u"unit/meter-per-second",
+        NumberFormatter::with().unit(METER).perUnit(SECOND).toSkeleton(status));
+    assertEquals(                                                                  //
+        ".unit(MeasureUnit::forIdentifier(\"hectometer\", status)) normalization", //
+        u"unit/hectometer",
+        NumberFormatter::with()
+            .unit(MeasureUnit::forIdentifier("hectometer", status))
+            .toSkeleton(status));
+    assertEquals(                                                                  //
+        ".unit(MeasureUnit::forIdentifier(\"hectometer\", status)) normalization", //
+        u"unit/meter-per-hectosecond",
+        NumberFormatter::with()
+            .unit(METER)
+            .perUnit(MeasureUnit::forIdentifier("hectosecond", status))
+            .toSkeleton(status));
+
+    status.assertSuccess();
+    assertEquals(                                                //
+        ".unit(CURRENCY) produces a currency/CURRENCY skeleton", //
+        u"currency/GBP",                                         //
+        NumberFormatter::with().unit(GBP).toSkeleton(status));
+    status.assertSuccess();
+    // .unit(CURRENCY).perUnit(ANYTHING) is not supported.
+    NumberFormatter::with().unit(GBP).perUnit(METER).toSkeleton(status);
+    status.expectErrorAndReset(U_UNSUPPORTED_ERROR);
+}
+
+void NumberFormatterApiTest::unitUsage() {
+    IcuTestErrorCode status(*this, "unitUsage()");
+    UnlocalizedNumberFormatter unloc_formatter;
+    LocalizedNumberFormatter formatter;
+    FormattedNumber formattedNum;
+    UnicodeString uTestCase;
+
+    status.assertSuccess();
+    formattedNum =
+        NumberFormatter::with().usage("road").locale(Locale::getEnglish()).formatInt(1, status);
+    status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
+
+    unloc_formatter = NumberFormatter::with().usage("road").unit(MeasureUnit::getMeter());
+
+    uTestCase = u"unitUsage() en-ZA road";
+    formatter = unloc_formatter.locale("en-ZA");
+    formattedNum = formatter.formatDouble(321, status);
+    status.errIfFailureAndReset("unitUsage() en-ZA road formatDouble");
+    assertTrue(
+            uTestCase + u", got outputUnit: \"" + formattedNum.getOutputUnit(status).getIdentifier() + "\"",
+            MeasureUnit::getMeter() == formattedNum.getOutputUnit(status));
+    assertEquals(uTestCase, "300 m", formattedNum.toString(status));
+    {
+        static const UFieldPosition expectedFieldPositions[] = {
+                {UNUM_INTEGER_FIELD, 0, 3},
+                {UNUM_MEASURE_UNIT_FIELD, 4, 5}};
+        assertNumberFieldPositions(
+                (uTestCase + u" field positions").getTerminatedBuffer(),
+                formattedNum,
+                expectedFieldPositions,
+                UPRV_LENGTHOF(expectedFieldPositions));
+    }
+    assertFormatDescendingBig(
+            uTestCase.getTerminatedBuffer(),
+            u"measure-unit/length-meter usage/road",
+            u"unit/meter usage/road",
+            unloc_formatter,
+            Locale("en-ZA"),
+            u"87\u00A0650 km",
+            u"8\u00A0765 km",
+            u"876 km", // 6.5 rounds down, 7.5 rounds up.
+            u"88 km",
+            u"8,8 km",
+            u"900 m",
+            u"90 m",
+            u"10 m",
+            u"0 m");
+
+    uTestCase = u"unitUsage() en-GB road";
+    formatter = unloc_formatter.locale("en-GB");
+    formattedNum = formatter.formatDouble(321, status);
+    status.errIfFailureAndReset("unitUsage() en-GB road, formatDouble(...)");
+    assertTrue(
+            uTestCase + u", got outputUnit: \"" + formattedNum.getOutputUnit(status).getIdentifier() + "\"",
+            MeasureUnit::getYard() == formattedNum.getOutputUnit(status));
+    status.errIfFailureAndReset("unitUsage() en-GB road, getOutputUnit(...)");
+    assertEquals(uTestCase, "350 yd", formattedNum.toString(status));
+    status.errIfFailureAndReset("unitUsage() en-GB road, toString(...)");
+    {
+        static const UFieldPosition expectedFieldPositions[] = {
+                {UNUM_INTEGER_FIELD, 0, 3},
+                {UNUM_MEASURE_UNIT_FIELD, 4, 6}};
+        assertNumberFieldPositions(
+                (uTestCase + u" field positions").getTerminatedBuffer(),
+                formattedNum,
+                expectedFieldPositions,
+                UPRV_LENGTHOF(expectedFieldPositions));
+    }
+    assertFormatDescendingBig(
+            uTestCase.getTerminatedBuffer(),
+            u"measure-unit/length-meter usage/road",
+            u"unit/meter usage/road",
+            unloc_formatter,
+            Locale("en-GB"),
+            u"54,463 mi",
+            u"5,446 mi",
+            u"545 mi",
+            u"54 mi",
+            u"5.4 mi",
+            u"0.54 mi",
+            u"96 yd",
+            u"9.6 yd",
+            u"0 yd");
+
+    uTestCase = u"unitUsage() en-US road";
+    formatter = unloc_formatter.locale("en-US");
+    formattedNum = formatter.formatDouble(321, status);
+    status.errIfFailureAndReset("unitUsage() en-US road, formatDouble(...)");
+    assertTrue(
+            uTestCase + u", got outputUnit: \"" + formattedNum.getOutputUnit(status).getIdentifier() + "\"",
+            MeasureUnit::getFoot() == formattedNum.getOutputUnit(status));
+    status.errIfFailureAndReset("unitUsage() en-US road, getOutputUnit(...)");
+    assertEquals(uTestCase, "1,050 ft", formattedNum.toString(status));
+    status.errIfFailureAndReset("unitUsage() en-US road, toString(...)");
+    {
+        static const UFieldPosition expectedFieldPositions[] = {
+                {UNUM_GROUPING_SEPARATOR_FIELD, 1, 2},
+                {UNUM_INTEGER_FIELD, 0, 5},
+                {UNUM_MEASURE_UNIT_FIELD, 6, 8}};
+        assertNumberFieldPositions(
+                (uTestCase + u" field positions").getTerminatedBuffer(),
+                formattedNum,
+                expectedFieldPositions,
+                UPRV_LENGTHOF(expectedFieldPositions));
+    }
+    assertFormatDescendingBig(
+            uTestCase.getTerminatedBuffer(),
+            u"measure-unit/length-meter usage/road",
+            u"unit/meter usage/road",
+            unloc_formatter,
+            Locale("en-US"),
+            u"54,463 mi",
+            u"5,446 mi",
+            u"545 mi",
+            u"54 mi",
+            u"5.4 mi",
+            u"0.54 mi",
+            u"300 ft",
+            u"30 ft",
+            u"0 ft");
+
+    unloc_formatter = NumberFormatter::with().usage("person").unit(MeasureUnit::getKilogram());
+    uTestCase = u"unitUsage() en-GB person";
+    formatter = unloc_formatter.locale("en-GB");
+    formattedNum = formatter.formatDouble(80, status);
+    status.errIfFailureAndReset("unitUsage() en-GB person formatDouble");
+    assertTrue(
+        uTestCase + ", got outputUnit: \"" + formattedNum.getOutputUnit(status).getIdentifier() + "\"",
+        MeasureUnit::forIdentifier("stone-and-pound", status) == formattedNum.getOutputUnit(status));
+    status.errIfFailureAndReset("unitUsage() en-GB person - formattedNum.getOutputUnit(status)");
+    assertEquals(uTestCase, "12 st, 8.4 lb", formattedNum.toString(status));
+    status.errIfFailureAndReset("unitUsage() en-GB person, toString(...)");
+    {
+        static const UFieldPosition expectedFieldPositions[] = {
+                // // Desired output: TODO(icu-units#67)
+                // {UNUM_INTEGER_FIELD, 0, 2},
+                // {UNUM_MEASURE_UNIT_FIELD, 3, 5},
+                // {ULISTFMT_LITERAL_FIELD, 5, 6},
+                // {UNUM_INTEGER_FIELD, 7, 8},
+                // {UNUM_DECIMAL_SEPARATOR_FIELD, 8, 9},
+                // {UNUM_FRACTION_FIELD, 9, 10},
+                // {UNUM_MEASURE_UNIT_FIELD, 11, 13}};
+
+                // Current output: rather no fields than wrong fields
+                {UNUM_INTEGER_FIELD, 7, 8},
+                {UNUM_DECIMAL_SEPARATOR_FIELD, 8, 9},
+                {UNUM_FRACTION_FIELD, 9, 10},
+                };
+        assertNumberFieldPositions(
+                (uTestCase + u" field positions").getTerminatedBuffer(),
+                formattedNum,
+                expectedFieldPositions,
+                UPRV_LENGTHOF(expectedFieldPositions));
+    }
+    assertFormatDescending(
+            uTestCase.getTerminatedBuffer(),
+            u"measure-unit/mass-kilogram usage/person",
+            u"unit/kilogram usage/person",
+            unloc_formatter,
+            Locale("en-GB"),
+            u"13,802 st, 7.2 lb",
+            u"1,380 st, 3.5 lb",
+            u"138 st, 0.35 lb",
+            u"13 st, 11 lb",
+            u"1 st, 5.3 lb",
+            u"1 lb, 15 oz",
+            u"0 lb, 3.1 oz",
+            u"0 lb, 0.31 oz",
+            u"0 lb, 0 oz");
+
+   assertFormatDescending(
+            uTestCase.getTerminatedBuffer(),
+            u"usage/person unit-width-narrow measure-unit/mass-kilogram",
+            u"usage/person unit-width-narrow unit/kilogram",
+            unloc_formatter.unitWidth(UNUM_UNIT_WIDTH_NARROW),
+            Locale("en-GB"),
+            u"13,802st 7.2lb",
+            u"1,380st 3.5lb",
+            u"138st 0.35lb",
+            u"13st 11lb",
+            u"1st 5.3lb",
+            u"1lb 15oz",
+            u"0lb 3.1oz",
+            u"0lb 0.31oz",
+            u"0lb 0oz");
+
+   assertFormatDescending(
+            uTestCase.getTerminatedBuffer(),
+            u"usage/person unit-width-short measure-unit/mass-kilogram",
+            u"usage/person unit-width-short unit/kilogram",
+            unloc_formatter.unitWidth(UNUM_UNIT_WIDTH_SHORT),
+            Locale("en-GB"),
+            u"13,802 st, 7.2 lb",
+            u"1,380 st, 3.5 lb",
+            u"138 st, 0.35 lb",
+            u"13 st, 11 lb",
+            u"1 st, 5.3 lb",
+            u"1 lb, 15 oz",
+            u"0 lb, 3.1 oz",
+            u"0 lb, 0.31 oz",
+            u"0 lb, 0 oz");
+
+   assertFormatDescending(
+            uTestCase.getTerminatedBuffer(),
+            u"usage/person unit-width-full-name measure-unit/mass-kilogram",
+            u"usage/person unit-width-full-name unit/kilogram",
+            unloc_formatter.unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),
+            Locale("en-GB"),
+            u"13,802 stone, 7.2 pounds",
+            u"1,380 stone, 3.5 pounds",
+            u"138 stone, 0.35 pounds",
+            u"13 stone, 11 pounds",
+            u"1 stone, 5.3 pounds",
+            u"1 pound, 15 ounces",
+            u"0 pounds, 3.1 ounces",
+            u"0 pounds, 0.31 ounces",
+            u"0 pounds, 0 ounces");
+
+    assertFormatDescendingBig(
+            u"Scientific notation with Usage: possible when using a reasonable Precision",
+            u"scientific @### usage/default measure-unit/area-square-meter unit-width-full-name",
+            u"scientific @### usage/default unit/square-meter unit-width-full-name",
+            NumberFormatter::with()
+                    .unit(SQUARE_METER)
+                    .usage("default")
+                    .notation(Notation::scientific())
+                    .precision(Precision::minMaxSignificantDigits(1, 4))
+                    .unitWidth(UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAME),
+            Locale("en-ZA"),
+            u"8,765E1 square kilometres",
+            u"8,765E0 square kilometres",
+            u"8,765E1 hectares",
+            u"8,765E0 hectares",
+            u"8,765E3 square metres",
+            u"8,765E2 square metres",
+            u"8,765E1 square metres",
+            u"8,765E0 square metres",
+            u"0E0 square centimetres");
+
+    assertFormatSingle(
+            u"Negative numbers: minute-and-second",
+            u"measure-unit/duration-second usage/media",
+            u"unit/second usage/media",
+            NumberFormatter::with().unit(SECOND).usage("media"),
+            Locale("nl-NL"),
+            -77.7,
+            u"-1 min, 18 sec");
+
+    assertFormatSingle(
+            u"Rounding Mode propagates: rounding down",
+            u"usage/road measure-unit/length-centimeter rounding-mode-floor",
+            u"usage/road unit/centimeter rounding-mode-floor",
+            NumberFormatter::with()
+                .unit(MeasureUnit::forIdentifier("centimeter", status))
+                .usage("road")
+                .roundingMode(UNUM_ROUND_FLOOR),
+            Locale("en-ZA"),
+            34500,
+            u"300 m");
+
+    assertFormatSingle(
+            u"Rounding Mode propagates: rounding up",
+            u"usage/road measure-unit/length-centimeter rounding-mode-ceiling",
+            u"usage/road unit/centimeter rounding-mode-ceiling",
+            NumberFormatter::with()
+                .unit(MeasureUnit::forIdentifier("centimeter", status))
+                .usage("road")
+                .roundingMode(UNUM_ROUND_CEILING),
+            Locale("en-ZA"),
+            30500,
+            u"350 m");
+
+    // TODO(icu-units#38): improve unit testing coverage. E.g. add vehicle-fuel
+    // triggering inversion conversion code. Test with 0 too, to see
+    // divide-by-zero behaviour.
+}
+
+void NumberFormatterApiTest::unitUsageErrorCodes() {
+    IcuTestErrorCode status(*this, "unitUsageErrorCodes()");
+    UnlocalizedNumberFormatter unloc_formatter;
+
+    unloc_formatter = NumberFormatter::forSkeleton(u"unit/foobar", status);
+    // This gives an error, because foobar is an invalid unit:
+    status.expectErrorAndReset(U_NUMBER_SKELETON_SYNTAX_ERROR);
+
+    unloc_formatter = NumberFormatter::forSkeleton(u"usage/foobar", status);
+    // This does not give an error, because usage is not looked up yet.
+    status.errIfFailureAndReset("Expected behaviour: no immediate error for invalid usage");
+    unloc_formatter.locale("en-GB").formatInt(1, status);
+    // Lacking a unit results in a failure. The skeleton is "incomplete", but we
+    // support adding the unit via the fluent API, so it is not an error until
+    // we build the formatting pipeline itself.
+    status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
+    // Adding the unit as part of the fluent chain leads to success.
+    unloc_formatter.unit(MeasureUnit::getMeter()).locale("en-GB").formatInt(1, status);
+    status.assertSuccess();
+}
+
+// Tests for the "skeletons" field in unitPreferenceData, as well as precision
+// and notation overrides.
+void NumberFormatterApiTest::unitUsageSkeletons() {
+    IcuTestErrorCode status(*this, "unitUsageSkeletons()");
+
+    assertFormatSingle(
+            u"Default >300m road preference skeletons round to 50m",
+            u"usage/road measure-unit/length-meter",
+            u"usage/road unit/meter",
+            NumberFormatter::with().unit(METER).usage("road"),
+            Locale("en-ZA"),
+            321,
+            u"300 m");
+
+    assertFormatSingle(
+            u"Precision can be overridden: override takes precedence",
+            u"usage/road measure-unit/length-meter @#",
+            u"usage/road unit/meter @#",
+            NumberFormatter::with()
+                .unit(METER)
+                .usage("road")
+                .precision(Precision::maxSignificantDigits(2)),
+            Locale("en-ZA"),
+            321,
+            u"320 m");
+
+    assertFormatSingle(
+            u"Compact notation with Usage: bizarre, but possible (short)",
+            u"compact-short usage/road measure-unit/length-meter",
+            u"compact-short usage/road unit/meter",
+            NumberFormatter::with()
+               .unit(METER)
+               .usage("road")
+               .notation(Notation::compactShort()),
+            Locale("en-ZA"),
+            987654321,
+            u"988K km");
+
+    assertFormatSingle(
+            u"Compact notation with Usage: bizarre, but possible (short, precision override)",
+            u"compact-short usage/road measure-unit/length-meter @#",
+            u"compact-short usage/road unit/meter @#",
+            NumberFormatter::with()
+                .unit(METER)
+                .usage("road")
+                .notation(Notation::compactShort())
+                .precision(Precision::maxSignificantDigits(2)),
+            Locale("en-ZA"),
+            987654321,
+            u"990K km");
+
+    assertFormatSingle(
+            u"Compact notation with Usage: unusual but possible (long)",
+            u"compact-long usage/road measure-unit/length-meter @#",
+            u"compact-long usage/road unit/meter @#",
+            NumberFormatter::with()
+                .unit(METER)
+                .usage("road")
+                .notation(Notation::compactLong())
+                .precision(Precision::maxSignificantDigits(2)),
+            Locale("en-ZA"),
+            987654321,
+            u"990 thousand km");
+
+    assertFormatSingle(
+            u"Compact notation with Usage: unusual but possible (long, precision override)",
+            u"compact-long usage/road measure-unit/length-meter @#",
+            u"compact-long usage/road unit/meter @#",
+            NumberFormatter::with()
+                .unit(METER)
+                .usage("road")
+                .notation(Notation::compactLong())
+                .precision(Precision::maxSignificantDigits(2)),
+            Locale("en-ZA"),
+            987654321,
+            u"990 thousand km");
+
+    assertFormatSingle(
+            u"Scientific notation, not recommended, requires precision override for road",
+            u"scientific usage/road measure-unit/length-meter",
+            u"scientific usage/road unit/meter",
+            NumberFormatter::with().unit(METER).usage("road").notation(Notation::scientific()),
+            Locale("en-ZA"),
+            321.45,
+            // Rounding to the nearest "50" is not exponent-adjusted in scientific notation:
+            u"0E2 m");
+
+    assertFormatSingle(
+            u"Scientific notation with Usage: possible when using a reasonable Precision",
+            u"scientific usage/road measure-unit/length-meter @###",
+            u"scientific usage/road unit/meter @###",
+            NumberFormatter::with()
+                .unit(METER)
+                .usage("road")
+                .notation(Notation::scientific())
+                .precision(Precision::maxSignificantDigits(4)),
+            Locale("en-ZA"),
+            321.45, // 0.45 rounds down, 0.55 rounds up.
+            u"3,214E2 m");
+
+    assertFormatSingle(
+            u"Scientific notation with Usage: possible when using a reasonable Precision",
+            u"scientific usage/default measure-unit/length-astronomical-unit unit-width-full-name",
+            u"scientific usage/default unit/astronomical-unit unit-width-full-name",
+            NumberFormatter::with()
+                .unit(MeasureUnit::forIdentifier("astronomical-unit", status))
+                .usage("default")
+                .notation(Notation::scientific())
+                .unitWidth(UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAME),
+            Locale("en-ZA"),
+            1e20,
+            u"1,5E28 kilometres");
+
+    status.assertSuccess();
 }
 
 void NumberFormatterApiTest::unitCurrency() {
@@ -851,6 +1659,42 @@
             u"US$5.43");
 
     assertFormatSingle(
+            u"Currency Difference between Formal and Short (Formal Version)",
+            u"currency/TWD unit-width-formal",
+            u"currency/TWD unit-width-formal",
+            NumberFormatter::with().unit(TWD).unitWidth(UNUM_UNIT_WIDTH_FORMAL),
+            Locale("zh-TW"),
+            5.43,
+            u"NT$5.43");
+
+    assertFormatSingle(
+            u"Currency Difference between Formal and Short (Short Version)",
+            u"currency/TWD unit-width-short",
+            u"currency/TWD unit-width-short",
+            NumberFormatter::with().unit(TWD).unitWidth(UNUM_UNIT_WIDTH_SHORT),
+            Locale("zh-TW"),
+            5.43,
+            u"$5.43");
+
+    assertFormatSingle(
+            u"Currency Difference between Variant and Short (Formal Version)",
+            u"currency/TRY unit-width-variant",
+            u"currency/TRY unit-width-variant",
+            NumberFormatter::with().unit(TRY).unitWidth(UNUM_UNIT_WIDTH_VARIANT),
+            Locale("tr-TR"),
+            5.43,
+            u"TL\u00A05,43");
+
+    assertFormatSingle(
+            u"Currency Difference between Variant and Short (Short Version)",
+            u"currency/TRY unit-width-short",
+            u"currency/TRY unit-width-short",
+            NumberFormatter::with().unit(TRY).unitWidth(UNUM_UNIT_WIDTH_SHORT),
+            Locale("tr-TR"),
+            5.43,
+            u"₺5,43");
+
+    assertFormatSingle(
             u"Currency-dependent format (Control)",
             u"currency/USD unit-width-short",
             u"currency/USD unit-width-short",
@@ -975,6 +1819,77 @@
             Locale::getEnglish(),
             -98.7654321,
             u"-98.765432%");
+
+    // ICU-20923
+    assertFormatDescendingBig(
+            u"Compact Percent",
+            u"compact-short percent",
+            u"K %",
+            NumberFormatter::with()
+                    .notation(Notation::compactShort())
+                    .unit(NoUnit::percent()),
+            Locale::getEnglish(),
+            u"88M%",
+            u"8.8M%",
+            u"876K%",
+            u"88K%",
+            u"8.8K%",
+            u"876%",
+            u"88%",
+            u"8.8%",
+            u"0%");
+
+    // ICU-20923
+    assertFormatDescendingBig(
+            u"Compact Percent with Scale",
+            u"compact-short percent scale/100",
+            u"K %x100",
+            NumberFormatter::with()
+                    .notation(Notation::compactShort())
+                    .unit(NoUnit::percent())
+                    .scale(Scale::powerOfTen(2)),
+            Locale::getEnglish(),
+            u"8.8B%",
+            u"876M%",
+            u"88M%",
+            u"8.8M%",
+            u"876K%",
+            u"88K%",
+            u"8.8K%",
+            u"876%",
+            u"0%");
+
+    // ICU-20923
+    assertFormatDescendingBig(
+            u"Compact Percent Long Name",
+            u"compact-short percent unit-width-full-name",
+            u"K % unit-width-full-name",
+            NumberFormatter::with()
+                    .notation(Notation::compactShort())
+                    .unit(NoUnit::percent())
+                    .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),
+            Locale::getEnglish(),
+            u"88M percent",
+            u"8.8M percent",
+            u"876K percent",
+            u"88K percent",
+            u"8.8K percent",
+            u"876 percent",
+            u"88 percent",
+            u"8.8 percent",
+            u"0 percent");
+
+    assertFormatSingle(
+            u"Per Percent",
+            u"measure-unit/length-meter per-measure-unit/concentr-percent unit-width-full-name",
+            u"measure-unit/length-meter per-measure-unit/concentr-percent unit-width-full-name",
+            NumberFormatter::with()
+                    .unit(MeasureUnit::getMeter())
+                    .perUnit(MeasureUnit::getPercent())
+                    .unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),
+            Locale::getEnglish(),
+            50,
+            u"50 meters per percent");
 }
 
 void NumberFormatterApiTest::percentParity() {
@@ -2829,11 +3744,11 @@
     }
 
     {
-        const char16_t* message = u"Measure unit field position with prefix and suffix";
+        const char16_t* message = u"Measure unit field position with prefix and suffix, composed m/s";
         FormattedNumber result = assertFormatSingle(
                 message,
                 u"measure-unit/length-meter per-measure-unit/duration-second unit-width-full-name",
-                u"unit/meter-per-second unit-width-full-name",
+                u"measure-unit/length-meter per-measure-unit/duration-second unit-width-full-name",
                 NumberFormatter::with().unit(METER).perUnit(SECOND).unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),
                 "ky", // locale with the interesting data
                 68,
@@ -2851,6 +3766,28 @@
     }
 
     {
+        const char16_t* message = u"Measure unit field position with prefix and suffix, built-in m/s";
+        FormattedNumber result = assertFormatSingle(
+                message,
+                u"measure-unit/speed-meter-per-second unit-width-full-name",
+                u"unit/meter-per-second unit-width-full-name",
+                NumberFormatter::with().unit(METER_PER_SECOND).unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),
+                "ky", // locale with the interesting data
+                68,
+                u"секундасына 68 метр");
+        static const UFieldPosition expectedFieldPositions[] = {
+                // field, begin index, end index
+                {UNUM_MEASURE_UNIT_FIELD, 0, 11},
+                {UNUM_INTEGER_FIELD, 12, 14},
+                {UNUM_MEASURE_UNIT_FIELD, 15, 19}};
+        assertNumberFieldPositions(
+                message,
+                result,
+                expectedFieldPositions,
+                UPRV_LENGTHOF(expectedFieldPositions));
+    }
+
+    {
         const char16_t* message = u"Measure unit field position with inner spaces";
         FormattedNumber result = assertFormatSingle(
                 message,
@@ -3410,7 +4347,43 @@
         "9.8765E+14", fn.toDecimalNumber<std::string>(status).c_str());
 }
 
+void NumberFormatterApiTest::microPropsInternals() {
+    // Verify copy construction and assignment operators.
+    int64_t testValues[2] = {4, 61};
 
+    MicroProps mp;
+    assertEquals("capacity", 2, mp.mixedMeasures.getCapacity());
+    mp.mixedMeasures[0] = testValues[0];
+    mp.mixedMeasures[1] = testValues[1];
+    MicroProps copyConstructed(mp);
+    MicroProps copyAssigned;
+    int64_t *resizeResult = mp.mixedMeasures.resize(4, 4);
+    assertTrue("Resize success", resizeResult != NULL);
+    copyAssigned = mp;
+
+    assertTrue("MicroProps success status", U_SUCCESS(mp.mixedMeasures.status));
+    assertTrue("Copy Constructed success status", U_SUCCESS(copyConstructed.mixedMeasures.status));
+    assertTrue("Copy Assigned success status", U_SUCCESS(copyAssigned.mixedMeasures.status));
+    assertEquals("Original values[0]", testValues[0], mp.mixedMeasures[0]);
+    assertEquals("Original values[1]", testValues[1], mp.mixedMeasures[1]);
+    assertEquals("Copy Constructed[0]", testValues[0], copyConstructed.mixedMeasures[0]);
+    assertEquals("Copy Constructed[1]", testValues[1], copyConstructed.mixedMeasures[1]);
+    assertEquals("Copy Assigned[0]", testValues[0], copyAssigned.mixedMeasures[0]);
+    assertEquals("Copy Assigned[1]", testValues[1], copyAssigned.mixedMeasures[1]);
+    assertEquals("Original capacity", 4, mp.mixedMeasures.getCapacity());
+    assertEquals("Copy Constructed capacity", 2, copyConstructed.mixedMeasures.getCapacity());
+    assertEquals("Copy Assigned capacity", 4, copyAssigned.mixedMeasures.getCapacity());
+}
+
+/* For skeleton comparisons: this checks the toSkeleton output for `f` and for
+ * `conciseSkeleton` against the normalized version of `uskeleton` - this does
+ * not round-trip uskeleton itself.
+ *
+ * If `conciseSkeleton` starts with a "~", its round-trip check is skipped.
+ *
+ * If `uskeleton` is nullptr, toSkeleton is expected to return an
+ * U_UNSUPPORTED_ERROR.
+ */
 void NumberFormatterApiTest::assertFormatDescending(
         const char16_t* umessage,
         const char16_t* uskeleton,
@@ -3472,6 +4445,15 @@
     }
 }
 
+/* For skeleton comparisons: this checks the toSkeleton output for `f` and for
+ * `conciseSkeleton` against the normalized version of `uskeleton` - this does
+ * not round-trip uskeleton itself.
+ *
+ * If `conciseSkeleton` starts with a "~", its round-trip check is skipped.
+ *
+ * If `uskeleton` is nullptr, toSkeleton is expected to return an
+ * U_UNSUPPORTED_ERROR.
+ */
 void NumberFormatterApiTest::assertFormatDescendingBig(
         const char16_t* umessage,
         const char16_t* uskeleton,
@@ -3533,6 +4515,15 @@
     }
 }
 
+/* For skeleton comparisons: this checks the toSkeleton output for `f` and for
+ * `conciseSkeleton` against the normalized version of `uskeleton` - this does
+ * not round-trip uskeleton itself.
+ *
+ * If `conciseSkeleton` starts with a "~", its round-trip check is skipped.
+ *
+ * If `uskeleton` is nullptr, toSkeleton is expected to return an
+ * U_UNSUPPORTED_ERROR.
+ */
 FormattedNumber
 NumberFormatterApiTest::assertFormatSingle(
         const char16_t* umessage,
diff --git a/icu4c/source/test/intltest/numbertest_decimalquantity.cpp b/icu4c/source/test/intltest/numbertest_decimalquantity.cpp
index 8cb0ac0..9339396 100644
--- a/icu4c/source/test/intltest/numbertest_decimalquantity.cpp
+++ b/icu4c/source/test/intltest/numbertest_decimalquantity.cpp
@@ -573,10 +573,6 @@
         double actualIOperand = dq.getPluralOperand(PLURAL_OPERAND_I);
         double actualEOperand = dq.getPluralOperand(PLURAL_OPERAND_E);
 
-        assertEquals(
-                u"formatted number " + cas.skeleton + u" toString: " + cas.input,
-                cas.expectedString,
-                actualString);
         assertDoubleEquals(
                 u"compact decimal " + cas.skeleton + u" n operand: " + cas.input,
                 expectedNOperand,
diff --git a/icu4c/source/test/intltest/numbertest_parse.cpp b/icu4c/source/test/intltest/numbertest_parse.cpp
index 12ecc75..b47519d 100644
--- a/icu4c/source/test/intltest/numbertest_parse.cpp
+++ b/icu4c/source/test/intltest/numbertest_parse.cpp
@@ -196,7 +196,8 @@
     PercentMatcher m3(symbols);
     IgnorablesMatcher m4(0);
 
-    ArraySeriesMatcher::MatcherArray matchers(5);
+    ArraySeriesMatcher::MatcherArray matchers(5, status);
+    status.assertSuccess();
     matchers[0] = &m0;
     matchers[1] = &m1;
     matchers[2] = &m2;
diff --git a/icu4c/source/test/intltest/numbertest_permutation.cpp b/icu4c/source/test/intltest/numbertest_permutation.cpp
index 85f32d5..a96dd75 100644
--- a/icu4c/source/test/intltest/numbertest_permutation.cpp
+++ b/icu4c/source/test/intltest/numbertest_permutation.cpp
@@ -71,7 +71,11 @@
  * Test permutations of 3 orthogonal skeleton parts from the list above.
  * Compare the results against the golden data file:
  *     numberpermutationtest.txt
- * To regenerate that file, run intltest with the -G option.
+ * To regenerate that file, run intltest with the -e and -G options.
+ * On Linux, from icu4c/source:
+ *     make -j8 tests && (cd test/intltest && LD_LIBRARY_PATH=../../lib:../../tools/ctestfw ./intltest -e -G format/NumberTest/NumberPermutationTest)
+ * After re-generating the file, copy it into icu4j:
+ *     cp test/testdata/numberpermutationtest.txt ../../icu4j/main/tests/core/src/com/ibm/icu/dev/data/numberpermutationtest.txt
  */
 void NumberPermutationTest::testPermutations() {
     IcuTestErrorCode status(*this, "testPermutations");
diff --git a/icu4c/source/test/intltest/numbertest_range.cpp b/icu4c/source/test/intltest/numbertest_range.cpp
index 75816ba..2cd31ca 100644
--- a/icu4c/source/test/intltest/numbertest_range.cpp
+++ b/icu4c/source/test/intltest/numbertest_range.cpp
@@ -51,6 +51,7 @@
         TESTCASE_AUTO(testFieldPositions);
         TESTCASE_AUTO(testCopyMove);
         TESTCASE_AUTO(toObject);
+        TESTCASE_AUTO(testGetDecimalNumbers);
     TESTCASE_AUTO_END;
 }
 
@@ -860,6 +861,48 @@
     }
 }
 
+void NumberRangeFormatterTest::testGetDecimalNumbers() {
+    IcuTestErrorCode status(*this, "testGetDecimalNumbers");
+
+    LocalizedNumberRangeFormatter lnf = NumberRangeFormatter::withLocale("en")
+        .numberFormatterBoth(NumberFormatter::with().unit(USD));
+
+    // Range of numbers
+    {
+        FormattedNumberRange range = lnf.formatFormattableRange(1, 5, status);
+        assertEquals("Range: Formatted string should be as expected",
+            u"$1.00 \u2013 $5.00",
+            range.toString(status));
+        auto decimalNumbers = range.getDecimalNumbers<std::string>(status);
+        // TODO(ICU-21281): DecNum doesn't retain trailing zeros. Is that a problem?
+        if (logKnownIssue("ICU-21281")) {
+            assertEquals("First decimal number", "1", decimalNumbers.first.c_str());
+            assertEquals("Second decimal number", "5", decimalNumbers.second.c_str());
+        } else {
+            assertEquals("First decimal number", "1.00", decimalNumbers.first.c_str());
+            assertEquals("Second decimal number", "5.00", decimalNumbers.second.c_str());
+        }
+    }
+
+    // Identity fallback
+    {
+        FormattedNumberRange range = lnf.formatFormattableRange(3, 3, status);
+        assertEquals("Identity: Formatted string should be as expected",
+            u"~$3.00",
+            range.toString(status));
+        auto decimalNumbers = range.getDecimalNumbers<std::string>(status);
+        // NOTE: DecNum doesn't retain trailing zeros. Is that a problem?
+        // TODO(ICU-21281): DecNum doesn't retain trailing zeros. Is that a problem?
+        if (logKnownIssue("ICU-21281")) {
+            assertEquals("First decimal number", "3", decimalNumbers.first.c_str());
+            assertEquals("Second decimal number", "3", decimalNumbers.second.c_str());
+        } else {
+            assertEquals("First decimal number", "3.00", decimalNumbers.first.c_str());
+            assertEquals("Second decimal number", "3.00", decimalNumbers.second.c_str());
+        }
+    }
+}
+
 void  NumberRangeFormatterTest::assertFormatRange(
       const char16_t* message,
       const UnlocalizedNumberRangeFormatter& f,
diff --git a/icu4c/source/test/intltest/numbertest_skeletons.cpp b/icu4c/source/test/intltest/numbertest_skeletons.cpp
index d5e4bcf..07a864a 100644
--- a/icu4c/source/test/intltest/numbertest_skeletons.cpp
+++ b/icu4c/source/test/intltest/numbertest_skeletons.cpp
@@ -31,6 +31,7 @@
         TESTCASE_AUTO(flexibleSeparators);
         TESTCASE_AUTO(wildcardCharacters);
         TESTCASE_AUTO(perUnitInArabic);
+        TESTCASE_AUTO(perUnitToSkeleton);
     TESTCASE_AUTO_END;
 }
 
@@ -436,4 +437,59 @@
     }
 }
 
+void NumberSkeletonTest::perUnitToSkeleton() {
+    IcuTestErrorCode status(*this, "perUnitToSkeleton");
+    struct TestCase {
+        const char16_t* type;
+        const char16_t* subtype;
+    } cases[] = {
+        {u"area", u"acre"},
+        {u"concentr", u"percent"},
+        {u"concentr", u"permille"},
+        {u"concentr", u"permillion"},
+        {u"concentr", u"permyriad"},
+        {u"digital", u"bit"},
+        {u"length", u"yard"},
+    };
+
+    for (const auto& cas1 : cases) {
+        for (const auto& cas2 : cases) {
+            UnicodeString skeleton(u"measure-unit/");
+            skeleton += cas1.type;
+            skeleton += u"-";
+            skeleton += cas1.subtype;
+            skeleton += u" ";
+            skeleton += u"per-measure-unit/";
+            skeleton += cas2.type;
+            skeleton += u"-";
+            skeleton += cas2.subtype;
+
+            status.setScope(skeleton);
+            if (cas1.type != cas2.type && cas1.subtype != cas2.subtype) {
+                UnicodeString toSkeleton = NumberFormatter::forSkeleton(
+                    skeleton, status).toSkeleton(status);
+                if (status.errIfFailureAndReset()) {
+                    continue;
+                }
+                // Ensure both subtype are in the toSkeleton.
+                UnicodeString msg;
+                msg.append(toSkeleton)
+                    .append(" should contain '")
+                    .append(UnicodeString(cas1.subtype))
+                    .append("' when constructed from ")
+                    .append(skeleton);
+                assertTrue(msg, toSkeleton.indexOf(cas1.subtype) >= 0);
+
+                msg.remove();
+                msg.append(toSkeleton)
+                    .append(" should contain '")
+                    .append(UnicodeString(cas2.subtype))
+                    .append("' when constructed from ")
+                    .append(skeleton);
+                assertTrue(msg, toSkeleton.indexOf(cas2.subtype) >= 0);
+            }
+        }
+    }
+}
+
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/intltest/numfmtst.cpp b/icu4c/source/test/intltest/numfmtst.cpp
index 5a26a7a..dc193f2 100644
--- a/icu4c/source/test/intltest/numfmtst.cpp
+++ b/icu4c/source/test/intltest/numfmtst.cpp
@@ -133,7 +133,7 @@
   TESTCASE_AUTO(TestCases);
 
   TESTCASE_AUTO(TestCurrencyNames);
-  TESTCASE_AUTO(Test20484_NarrowSymbolFallback);
+  TESTCASE_AUTO(TestCurrencyVariants);
   TESTCASE_AUTO(TestCurrencyAmount);
   TESTCASE_AUTO(TestCurrencyUnit);
   TESTCASE_AUTO(TestCoverage);
@@ -245,6 +245,9 @@
   TESTCASE_AUTO(Test13735_GroupingSizeGetter);
   TESTCASE_AUTO(Test13734_StrictFlexibleWhitespace);
   TESTCASE_AUTO(Test20961_CurrencyPluralPattern);
+  TESTCASE_AUTO(Test21134_ToNumberFormatter);
+  TESTCASE_AUTO(Test13733_StrictAndLenient);
+  TESTCASE_AUTO(Test21232_ParseTimeout);
   TESTCASE_AUTO_END;
 }
 
@@ -928,8 +931,8 @@
 
     UnicodeString s; currencyFmt->format(1.50, s);
     logln((UnicodeString)"Un pauvre ici a..........." + s);
-    if (!(s==CharsToUnicodeString("1,50\\u00A0$")))
-        errln((UnicodeString)"FAIL: Expected 1,50<nbsp>$ but got " + s);
+    if (!(s==CharsToUnicodeString("1,50\\u00A0$\\u00A0CA")))
+        errln((UnicodeString)"FAIL: Expected 1,50<nbsp>$<nbsp>CA but got " + s);
     delete currencyFmt;
     s.truncate(0);
     char loc[256]={0};
@@ -2114,22 +2117,26 @@
     // TODO add more tests later
 }
 
-void NumberFormatTest::Test20484_NarrowSymbolFallback(){
-    IcuTestErrorCode status(*this, "Test20484_NarrowSymbolFallback");
+void NumberFormatTest::TestCurrencyVariants(){
+    IcuTestErrorCode status(*this, "TestCurrencyVariants");
 
     struct TestCase {
         const char* locale;
         const char16_t* isoCode;
         const char16_t* expectedShort;
         const char16_t* expectedNarrow;
+        const char16_t* expectedFormal;
+        const char16_t* expectedVariant;
         UErrorCode expectedNarrowError;
     } cases[] = {
-        {"en-US", u"CAD", u"CA$", u"$", U_USING_DEFAULT_WARNING}, // narrow: fallback to root
-        {"en-US", u"CDF", u"CDF", u"CDF", U_USING_FALLBACK_WARNING}, // narrow: fallback to short
-        {"sw-CD", u"CDF", u"FC", u"FC", U_USING_FALLBACK_WARNING}, // narrow: fallback to short
-        {"en-US", u"GEL", u"GEL", u"₾", U_USING_DEFAULT_WARNING}, // narrow: fallback to root
-        {"ka-GE", u"GEL", u"₾", u"₾", U_USING_FALLBACK_WARNING}, // narrow: fallback to ka
-        {"ka", u"GEL", u"₾", u"₾", U_ZERO_ERROR}, // no fallback on narrow
+        {"en-US", u"CAD", u"CA$", u"$", u"CA$", u"CA$", U_USING_DEFAULT_WARNING}, // narrow: fallback to root
+        {"en-US", u"CDF", u"CDF", u"CDF", u"CDF", u"CDF", U_USING_FALLBACK_WARNING}, // narrow: fallback to short
+        {"sw-CD", u"CDF", u"FC", u"FC", u"FC", u"FC", U_USING_FALLBACK_WARNING}, // narrow: fallback to short
+        {"en-US", u"GEL", u"GEL", u"₾", u"GEL", u"GEL", U_USING_DEFAULT_WARNING}, // narrow: fallback to root
+        {"ka-GE", u"GEL", u"₾", u"₾", u"₾", u"₾", U_USING_FALLBACK_WARNING}, // narrow: fallback to ka
+        {"ka", u"GEL", u"₾", u"₾", u"₾", u"₾", U_ZERO_ERROR}, // no fallback on narrow
+        {"zh-TW", u"TWD", u"$", u"$", u"NT$", u"$", U_USING_FALLBACK_WARNING}, // narrow: fallback to short
+        {"ccp", u"TRY", u"TRY", u"₺", u"TRY", u"TL", U_ZERO_ERROR}, // no fallback on variant
     };
     for (const auto& cas : cases) {
         status.setScope(cas.isoCode);
@@ -2142,6 +2149,20 @@
             &choiceFormatIgnored,
             &lengthIgnored,
             status);
+        const UChar* actualFormal = ucurr_getName(
+            cas.isoCode,
+            cas.locale,
+            UCURR_FORMAL_SYMBOL_NAME,
+            &choiceFormatIgnored,
+            &lengthIgnored,
+            status);
+        const UChar* actualVarant = ucurr_getName(
+            cas.isoCode,
+            cas.locale,
+            UCURR_VARIANT_SYMBOL_NAME,
+            &choiceFormatIgnored,
+            &lengthIgnored,
+            status);
         status.errIfFailureAndReset();
         const UChar* actualNarrow = ucurr_getName(
             cas.isoCode,
@@ -2153,8 +2174,12 @@
         status.expectErrorAndReset(cas.expectedNarrowError);
         assertEquals(UnicodeString("Short symbol: ") + cas.locale + u": " + cas.isoCode,
                 cas.expectedShort, actualShort);
-        assertEquals(UnicodeString("Narrow symbol: ") + cas.locale + ": " + cas.isoCode,
+        assertEquals(UnicodeString("Narrow symbol: ") + cas.locale + u": " + cas.isoCode,
                 cas.expectedNarrow, actualNarrow);
+        assertEquals(UnicodeString("Formal symbol: ") + cas.locale + u": " + cas.isoCode,
+                cas.expectedFormal, actualFormal);
+        assertEquals(UnicodeString("Variant symbol: ") + cas.locale + u": " + cas.isoCode,
+                cas.expectedVariant, actualVarant);
     }
 }
 
@@ -2246,12 +2271,12 @@
     }
     CurrencyUnit bad(BAD, ec);
     assertSuccess("CurrencyUnit", ec);
-    if (cu.getIndex() == bad.getIndex()) {
+    if (cu.getOffset() == bad.getOffset()) {
         errln("Indexes of different currencies should differ.");
     }
     CurrencyUnit bad2(BAD2, ec);
     assertSuccess("CurrencyUnit", ec);
-    if (bad2.getIndex() != bad.getIndex()) {
+    if (bad2.getOffset() != bad.getOffset()) {
         errln("Indexes of unrecognized currencies should be the same.");
     }
     if (bad == bad2) {
@@ -8814,7 +8839,7 @@
     // Test two ways to set a currency via API
 
     Locale loc1 = Locale("pt_PT");
-    LocalPointer<NumberFormat> fmt1(NumberFormat::createCurrencyInstance("loc1", status),
+    LocalPointer<NumberFormat> fmt1(NumberFormat::createCurrencyInstance(loc1, status),
                                     status);
     if (U_FAILURE(status)) {
       dataerrln("%s %d NumberFormat instance fmt1 is null",  __FILE__, __LINE__);
@@ -8831,10 +8856,8 @@
     UnicodeString actualLocaleString;
     fmt2->format(amount, actualLocaleString);
 
-    // TODO: The following test will fail until DecimalFormat wraps NumberFormatter.
-    if (!logKnownIssue("13574")) {
-        assertEquals("Custom Currency Pattern, Set Currency", expected, actualSetCurrency);
-    }
+    assertEquals("Custom Currency Pattern, Set Currency", expected, actualSetCurrency);
+    assertEquals("Custom Currency Pattern, Locale String", expected, actualLocaleString);
 }
 
 void NumberFormatTest::Test11318_DoubleConversion() {
@@ -9077,6 +9100,43 @@
     df.format(12345, result.remove(), status);
     status.errIfFailureAndReset();
     assertEquals("Should have grouping", u"12,345", result);
+
+
+    // Test special values -1, UNUM_MINIMUM_GROUPING_DIGITS_AUTO and
+    // UNUM_MINIMUM_GROUPING_DIGITS_MIN2
+    struct TestCase {
+        const char* locale;
+        int32_t minGroup;
+        double input;
+        const char16_t* expected;
+    } cases[] = {
+        { "en-US", 1, 1000, u"1,000" },
+        { "en-US", 1, 10000, u"10,000" },
+        { "en-US", UNUM_MINIMUM_GROUPING_DIGITS_AUTO, 1000, u"1,000" },
+        { "en-US", UNUM_MINIMUM_GROUPING_DIGITS_AUTO, 10000, u"10,000" },
+        { "en-US", UNUM_MINIMUM_GROUPING_DIGITS_MIN2, 1000, u"1000" },
+        { "en-US", UNUM_MINIMUM_GROUPING_DIGITS_MIN2, 10000, u"10,000" },
+
+        { "es", 1, 1000, u"1.000" },
+        { "es", 1, 10000, u"10.000" },
+        { "es", UNUM_MINIMUM_GROUPING_DIGITS_AUTO, 1000, u"1000" },
+        { "es", UNUM_MINIMUM_GROUPING_DIGITS_AUTO, 10000, u"10.000" },
+        { "es", UNUM_MINIMUM_GROUPING_DIGITS_MIN2, 1000, u"1000" },
+        { "es", UNUM_MINIMUM_GROUPING_DIGITS_MIN2, 10000, u"10.000" },
+    };
+    for (const auto& cas : cases) {
+        UnicodeString message = UnicodeString(cas.locale)
+            + u" " + Int64ToUnicodeString(cas.minGroup)
+            + u" " + DoubleToUnicodeString(cas.input);
+        status.setScope(message);
+        DecimalFormat df(u"#,##0", {cas.locale, status}, status);
+        if (status.errIfFailureAndReset()) { continue; }
+        df.setMinimumGroupingDigits(cas.minGroup);
+        UnicodeString actual;
+        df.format(cas.input, actual, status);
+        if (status.errIfFailureAndReset()) { continue; }
+        assertEquals(message, cas.expected, actual);
+    }
 }
 
 void NumberFormatTest::Test11897_LocalizedPatternSeparator() {
@@ -9835,4 +9895,172 @@
     }
 }
 
+void NumberFormatTest::Test21134_ToNumberFormatter() {
+    IcuTestErrorCode status(*this, "Test21134_ToNumberFormatter");
+    LocalizedNumberFormatter outer1;
+    LocalizedNumberFormatter outer2;
+    LocalPointer<LocalizedNumberFormatter> outer3;
+    {
+        // Case 1: new formatter object
+        DecimalFormat inner(u"a0b", {"en", status}, status);
+        if (auto ptr = inner.toNumberFormatter(status)) {
+            // Copy assignment
+            outer1 = *ptr;
+        } else {
+            status.errIfFailureAndReset();
+            return;
+        }
+    }
+    {
+        // Case 2: compiled formatter object (used at least 3 times)
+        DecimalFormat inner(u"c0d", {"en", status}, status);
+        UnicodeString dummy;
+        inner.format(100, dummy);
+        inner.format(100, dummy);
+        inner.format(100, dummy);
+        if (auto ptr = inner.toNumberFormatter(status)) {
+            // Copy assignment
+            outer2 = *ptr;
+        } else {
+            status.errIfFailureAndReset();
+            return;
+        }
+    }
+    {
+        // Case 3: currency plural info (different code path)
+        LocalPointer<DecimalFormat> inner(static_cast<DecimalFormat*>(
+            DecimalFormat::createInstance("en-US", UNUM_CURRENCY_PLURAL, status)));
+        if (auto ptr = inner->toNumberFormatter(status)) {
+            // Copy constructor
+            outer3.adoptInsteadAndCheckErrorCode(new LocalizedNumberFormatter(*ptr), status);
+        } else {
+            status.errIfFailureAndReset();
+            return;
+        }
+    }
+    auto result1 = outer1.formatDouble(99, status);
+    assertEquals("Using NumberFormatter from DecimalFormat, new version",
+        u"a99b",
+        result1.toTempString(status));
+    auto result2 = outer2.formatDouble(99, status);
+    assertEquals("Using NumberFormatter from DecimalFormat, compiled version",
+        u"c99d",
+        result2.toTempString(status));
+    auto result3 = outer3->formatDouble(99, status);
+    assertEquals("Using NumberFormatter from DecimalFormat, compiled version",
+        u"99.00 US dollars",
+        result3.toTempString(status));
+}
+
+void NumberFormatTest::Test13733_StrictAndLenient() {
+    IcuTestErrorCode status(*this, "Test13733_StrictAndLenient");
+
+    static const struct TestCase {
+        const char16_t* inputString;
+        const char16_t* patternString;
+        int64_t expectedStrictParse;
+        int64_t expectedLenientParse;
+    } cases[] = { {u"CA$ 12", u"¤ 0", 12, 12},
+                  {u"CA$12", u"¤0", 12, 12},
+                  {u"CAD 12", u"¤¤ 0", 12, 12},
+                  {u"12 CAD", u"0 ¤¤", 12, 12},
+                  {u"12 Canadian dollars", u"0 ¤¤¤", 12, 12},
+                  {u"$12 ", u"¤¤¤¤0", 12, 12},
+                  {u"12$", u"0¤¤¤¤", 12, 12},
+                  {u"CA$ 12", u"¤0", 0, 12},
+                  {u"CA$ 12", u"0 ¤¤", 0, 12},
+                  {u"CA$ 12", u"0 ¤¤¤", 0, 12},
+                  {u"CA$ 12", u"¤¤¤¤0", 0, 12},
+                  {u"CA$ 12", u"0¤¤¤¤", 0, 12},
+                  {u"CA$12", u"¤ 0", 0, 12},
+                  {u"CA$12", u"¤¤ 0", 0, 12},
+                  {u"CA$12", u"0 ¤¤", 0, 12},
+                  {u"CA$12", u"0 ¤¤¤", 0, 12},
+                  {u"CA$12", u"0¤¤¤¤", 0, 12},
+                  {u"CAD 12", u"¤0", 0, 12},
+                  {u"CAD 12", u"0 ¤¤", 0, 12},
+                  {u"CAD 12", u"0 ¤¤¤", 0, 12},
+                  {u"CAD 12", u"¤¤¤¤0", 0, 12},
+                  {u"CAD 12", u"0¤¤¤¤", 0, 12},
+                  {u"12 CAD", u"¤ 0", 0, 12},
+                  {u"12 CAD", u"¤0", 0, 12},
+                  {u"12 CAD", u"¤¤ 0", 0, 12},
+                  {u"12 CAD", u"¤¤¤¤0", 0, 12},
+                  {u"12 CAD", u"0¤¤¤¤", 0, 12},
+                  {u"12 Canadian dollars", u"¤ 0", 0, 12},
+                  {u"12 Canadian dollars", u"¤0", 0, 12},
+                  {u"12 Canadian dollars", u"¤¤ 0", 0, 12},
+                  {u"12 Canadian dollars", u"¤¤¤¤0", 0, 12},
+                  {u"12 Canadian dollars", u"0¤¤¤¤", 0, 12},
+                  {u"$12 ", u"¤ 0", 0, 12},
+                  {u"$12 ", u"¤¤ 0", 0, 12},
+                  {u"$12 ", u"0 ¤¤", 0, 12},
+                  {u"$12 ", u"0 ¤¤¤", 0, 12},
+                  {u"$12 ", u"0¤¤¤¤", 0, 12},
+                  {u"12$", u"¤ 0", 0, 12},
+                  {u"12$", u"¤0", 0, 12},
+                  {u"12$", u"¤¤ 0", 0, 12},
+                  {u"12$", u"0 ¤¤", 0, 12},
+                  {u"12$", u"0 ¤¤¤", 0, 12},
+                  {u"12$", u"¤¤¤¤0", 0, 12} };
+    for (auto& cas : cases) {
+        UnicodeString inputString(cas.inputString);
+        UnicodeString patternString(cas.patternString);
+        int64_t parsedStrictValue = 0;
+        int64_t parsedLenientValue = 0;
+        ParsePosition ppos;
+
+        DecimalFormatSymbols dfs(Locale::getEnglish(), status);
+        if (status.errDataIfFailureAndReset()) {
+            return;
+        }
+        DecimalFormat df(patternString, dfs, status);
+        if (status.errDataIfFailureAndReset()) {
+            return;
+        }
+        df.setLenient(FALSE);
+        LocalPointer<CurrencyAmount> ca_strict(df.parseCurrency(inputString, ppos));
+        if (ca_strict != nullptr) {
+            parsedStrictValue = ca_strict->getNumber().getInt64();
+        }
+        assertEquals("Strict parse of " + inputString + " using " + patternString,
+            parsedStrictValue, cas.expectedStrictParse);
+
+        ppos.setIndex(0);
+        df.setLenient(TRUE);
+        LocalPointer<CurrencyAmount> ca_lenient(df.parseCurrency(inputString, ppos));
+        Formattable parsedNumber_lenient = ca_lenient->getNumber();
+        if (ca_lenient != nullptr) {
+            parsedLenientValue = ca_lenient->getNumber().getInt64();
+        }
+        assertEquals("Lenient parse of " + inputString + " using " + patternString,
+            parsedLenientValue, cas.expectedLenientParse);
+    }
+}
+
+void NumberFormatTest::Test21232_ParseTimeout() {
+    IcuTestErrorCode status(*this, "Test21232_ParseTimeout");
+
+    DecimalFormat df(status);
+    if (status.errDataIfFailureAndReset()) {
+        return;
+    }
+
+    UnicodeString input = u"4444444444444444444444444444444444444444";
+    if (quick) {
+        for (int32_t i = 0; i < 5; i++) {
+            input.append(input);
+        }
+        assertEquals("Somewhat long input of digits", 1280, input.length());
+    } else {
+        for (int32_t i = 0; i < 12; i++) {
+            input.append(input);
+        }
+        assertEquals("Very long input of digits", 163840, input.length());
+    }
+    Formattable result;
+    df.parse(input, result, status);
+    // Should not hang
+}
+
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/intltest/numfmtst.h b/icu4c/source/test/intltest/numfmtst.h
index 068ad58..24ca15a 100644
--- a/icu4c/source/test/intltest/numfmtst.h
+++ b/icu4c/source/test/intltest/numfmtst.h
@@ -153,7 +153,7 @@
 
     void TestCurrencyNames(void);
 
-    void Test20484_NarrowSymbolFallback(void);
+    void TestCurrencyVariants(void);
 
     void TestCurrencyAmount(void);
 
@@ -301,6 +301,9 @@
     void Test13735_GroupingSizeGetter();
     void Test13734_StrictFlexibleWhitespace();
     void Test20961_CurrencyPluralPattern();
+    void Test21134_ToNumberFormatter();
+    void Test13733_StrictAndLenient();
+    void Test21232_ParseTimeout();
 
  private:
     UBool testFormattableAsUFormattable(const char *file, int line, Formattable &f);
diff --git a/icu4c/source/test/intltest/numrgts.cpp b/icu4c/source/test/intltest/numrgts.cpp
index 7bdb5f8..b9c4f66 100644
--- a/icu4c/source/test/intltest/numrgts.cpp
+++ b/icu4c/source/test/intltest/numrgts.cpp
@@ -975,20 +975,20 @@
     UnicodeString tempString;
     /* User error :
     String expectedDefault = "-5\u00a0789,987";
-    String expectedCurrency = "5\u00a0789,98\u00a0$";
+    String expectedCurrency = "5\u00a0789,98\u00a0$\u00a0CA";
     String expectedPercent = "-578\u00a0998%";
     */
     UChar chars1 [] = {
         0x2d, 0x35, 0x00a0, 0x37, 0x38, 0x39, 0x2c, 0x39, 0x38, 0x38
     };
     UChar chars2 [] = {
-        0x35, 0x00a0, 0x37, 0x38, 0x39, 0x2c, 0x39, 0x39, 0x00a0, 0x24
+        0x35, 0x00a0, 0x37, 0x38, 0x39, 0x2c, 0x39, 0x39, 0x00a0, 0x24, 0x00a0, 0x43, 0x41
     };
     UChar chars3 [] = {
         0x2d, 0x35, 0x37, 0x38, 0x00a0, 0x39, 0x39, 0x39, 0x00a0, 0x25
     };
     UnicodeString expectedDefault(chars1, 10, 10);
-    UnicodeString expectedCurrency(chars2, 10, 10);
+    UnicodeString expectedCurrency(chars2, 13, 13);
     UnicodeString expectedPercent(chars3, 10, 10);
 
     UErrorCode status = U_ZERO_ERROR;
diff --git a/icu4c/source/test/intltest/plurults.cpp b/icu4c/source/test/intltest/plurults.cpp
index a70c362..c015197 100644
--- a/icu4c/source/test/intltest/plurults.cpp
+++ b/icu4c/source/test/intltest/plurults.cpp
@@ -23,14 +23,17 @@
 #include "unicode/plurrule.h"
 #include "unicode/stringpiece.h"
 #include "unicode/numberformatter.h"
+#include "unicode/numberrangeformatter.h"
 
 #include "cmemory.h"
+#include "cstr.h"
 #include "plurrule_impl.h"
 #include "plurults.h"
 #include "uhash.h"
 #include "number_decimalquantity.h"
 
 using icu::number::impl::DecimalQuantity;
+using namespace icu::number;
 
 void setupResult(const int32_t testSource[], char result[], int32_t* max);
 UBool checkEqual(const PluralRules &test, char *result, int32_t max);
@@ -47,10 +50,14 @@
     TESTCASE_AUTO(testAPI);
     // TESTCASE_AUTO(testGetUniqueKeywordValue);
     TESTCASE_AUTO(testGetSamples);
+    TESTCASE_AUTO(testGetFixedDecimalSamples);
+    TESTCASE_AUTO(testSamplesWithExponent);
     TESTCASE_AUTO(testWithin);
     TESTCASE_AUTO(testGetAllKeywordValues);
+    TESTCASE_AUTO(testCompactDecimalPluralKeyword);
     TESTCASE_AUTO(testOrdinal);
     TESTCASE_AUTO(testSelect);
+    TESTCASE_AUTO(testSelectRange);
     TESTCASE_AUTO(testAvailbleLocales);
     TESTCASE_AUTO(testParseErrors);
     TESTCASE_AUTO(testFixedDecimal);
@@ -352,120 +359,245 @@
 
 void
 PluralRulesTest::assertRuleValue(const UnicodeString& rule, double expected) {
-  assertRuleKeyValue("a:" + rule, "a", expected);
+    assertRuleKeyValue("a:" + rule, "a", expected);
 }
 
 void
 PluralRulesTest::assertRuleKeyValue(const UnicodeString& rule,
                                     const UnicodeString& key, double expected) {
-  UErrorCode status = U_ZERO_ERROR;
-  PluralRules *pr = PluralRules::createRules(rule, status);
-  double result = pr->getUniqueKeywordValue(key);
-  delete pr;
-  if (expected != result) {
-    errln("expected %g but got %g", expected, result);
-  }
+    UErrorCode status = U_ZERO_ERROR;
+    PluralRules *pr = PluralRules::createRules(rule, status);
+    double result = pr->getUniqueKeywordValue(key);
+    delete pr;
+    if (expected != result) {
+        errln("expected %g but got %g", expected, result);
+    }
 }
 
 // TODO: UniqueKeywordValue() is not currently supported.
 //       If it never will be, this test code should be removed.
 void PluralRulesTest::testGetUniqueKeywordValue() {
-  assertRuleValue("n is 1", 1);
-  assertRuleValue("n in 2..2", 2);
-  assertRuleValue("n within 2..2", 2);
-  assertRuleValue("n in 3..4", UPLRULES_NO_UNIQUE_VALUE);
-  assertRuleValue("n within 3..4", UPLRULES_NO_UNIQUE_VALUE);
-  assertRuleValue("n is 2 or n is 2", 2);
-  assertRuleValue("n is 2 and n is 2", 2);
-  assertRuleValue("n is 2 or n is 3", UPLRULES_NO_UNIQUE_VALUE);
-  assertRuleValue("n is 2 and n is 3", UPLRULES_NO_UNIQUE_VALUE);
-  assertRuleValue("n is 2 or n in 2..3", UPLRULES_NO_UNIQUE_VALUE);
-  assertRuleValue("n is 2 and n in 2..3", 2);
-  assertRuleKeyValue("a: n is 1", "not_defined", UPLRULES_NO_UNIQUE_VALUE); // key not defined
-  assertRuleKeyValue("a: n is 1", "other", UPLRULES_NO_UNIQUE_VALUE); // key matches default rule
+    assertRuleValue("n is 1", 1);
+    assertRuleValue("n in 2..2", 2);
+    assertRuleValue("n within 2..2", 2);
+    assertRuleValue("n in 3..4", UPLRULES_NO_UNIQUE_VALUE);
+    assertRuleValue("n within 3..4", UPLRULES_NO_UNIQUE_VALUE);
+    assertRuleValue("n is 2 or n is 2", 2);
+    assertRuleValue("n is 2 and n is 2", 2);
+    assertRuleValue("n is 2 or n is 3", UPLRULES_NO_UNIQUE_VALUE);
+    assertRuleValue("n is 2 and n is 3", UPLRULES_NO_UNIQUE_VALUE);
+    assertRuleValue("n is 2 or n in 2..3", UPLRULES_NO_UNIQUE_VALUE);
+    assertRuleValue("n is 2 and n in 2..3", 2);
+    assertRuleKeyValue("a: n is 1", "not_defined", UPLRULES_NO_UNIQUE_VALUE); // key not defined
+    assertRuleKeyValue("a: n is 1", "other", UPLRULES_NO_UNIQUE_VALUE); // key matches default rule
 }
 
 void PluralRulesTest::testGetSamples() {
-  // TODO: fix samples, re-enable this test.
+    // TODO: fix samples, re-enable this test.
 
-  // no get functional equivalent API in ICU4C, so just
-  // test every locale...
-  UErrorCode status = U_ZERO_ERROR;
-  int32_t numLocales;
-  const Locale* locales = Locale::getAvailableLocales(numLocales);
+    // no get functional equivalent API in ICU4C, so just
+    // test every locale...
+    UErrorCode status = U_ZERO_ERROR;
+    int32_t numLocales;
+    const Locale* locales = Locale::getAvailableLocales(numLocales);
 
-  double values[1000];
-  for (int32_t i = 0; U_SUCCESS(status) && i < numLocales; ++i) {
-    PluralRules *rules = PluralRules::forLocale(locales[i], status);
-    if (U_FAILURE(status)) {
-      break;
-    }
-    StringEnumeration *keywords = rules->getKeywords(status);
-    if (U_FAILURE(status)) {
-      delete rules;
-      break;
-    }
-    const UnicodeString* keyword;
-    while (NULL != (keyword = keywords->snext(status))) {
-      int32_t count = rules->getSamples(*keyword, values, UPRV_LENGTHOF(values), status);
-      if (U_FAILURE(status)) {
-        errln(UNICODE_STRING_SIMPLE("getSamples() failed for locale ") +
-              locales[i].getName() +
-              UNICODE_STRING_SIMPLE(", keyword ") + *keyword);
-        continue;
-      }
-      if (count == 0) {
-        // TODO: Lots of these. 
-        //   errln(UNICODE_STRING_SIMPLE("no samples for keyword ") + *keyword + UNICODE_STRING_SIMPLE(" in locale ") + locales[i].getName() );
-      }
-      if (count > UPRV_LENGTHOF(values)) {
-        errln(UNICODE_STRING_SIMPLE("getSamples()=") + count +
-              UNICODE_STRING_SIMPLE(", too many values, for locale ") +
-              locales[i].getName() +
-              UNICODE_STRING_SIMPLE(", keyword ") + *keyword);
-        count = UPRV_LENGTHOF(values);
-      }
-      for (int32_t j = 0; j < count; ++j) {
-        if (values[j] == UPLRULES_NO_UNIQUE_VALUE) {
-          errln("got 'no unique value' among values");
-        } else {
-          UnicodeString resultKeyword = rules->select(values[j]);
-          // if (strcmp(locales[i].getName(), "uk") == 0) {    // Debug only.
-          //     std::cout << "  uk " << US(resultKeyword).cstr() << " " << values[j] << std::endl;
-          // }
-          if (*keyword != resultKeyword) {
-            errln("file %s, line %d, Locale %s, sample for keyword \"%s\":  %g, select(%g) returns keyword \"%s\"",
-                __FILE__, __LINE__, locales[i].getName(), US(*keyword).cstr(), values[j], values[j], US(resultKeyword).cstr());
-          }
+    double values[1000];
+    for (int32_t i = 0; U_SUCCESS(status) && i < numLocales; ++i) {
+        if (uprv_strcmp(locales[i].getLanguage(), "fr") == 0 &&
+                logKnownIssue("21299", "PluralRules::getSamples cannot distinguish 1e5 from 100000")) {
+            continue;
         }
-      }
+        LocalPointer<PluralRules> rules(PluralRules::forLocale(locales[i], status));
+        if (U_FAILURE(status)) {
+            break;
+        }
+        LocalPointer<StringEnumeration> keywords(rules->getKeywords(status));
+        if (U_FAILURE(status)) {
+            break;
+        }
+        const UnicodeString* keyword;
+        while (NULL != (keyword = keywords->snext(status))) {
+            int32_t count = rules->getSamples(*keyword, values, UPRV_LENGTHOF(values), status);
+            if (U_FAILURE(status)) {
+                errln(UnicodeString(u"getSamples() failed for locale ") +
+                      locales[i].getName() +
+                      UnicodeString(u", keyword ") + *keyword);
+                continue;
+            }
+            if (count == 0) {
+                // TODO: Lots of these.
+                //   errln(UnicodeString(u"no samples for keyword ") + *keyword + UnicodeString(u" in locale ") + locales[i].getName() );
+            }
+            if (count > UPRV_LENGTHOF(values)) {
+                errln(UnicodeString(u"getSamples()=") + count +
+                      UnicodeString(u", too many values, for locale ") +
+                      locales[i].getName() +
+                      UnicodeString(u", keyword ") + *keyword);
+                count = UPRV_LENGTHOF(values);
+            }
+            for (int32_t j = 0; j < count; ++j) {
+                if (values[j] == UPLRULES_NO_UNIQUE_VALUE) {
+                    errln("got 'no unique value' among values");
+                } else {
+                    UnicodeString resultKeyword = rules->select(values[j]);
+                    // if (strcmp(locales[i].getName(), "uk") == 0) {    // Debug only.
+                    //     std::cout << "  uk " << US(resultKeyword).cstr() << " " << values[j] << std::endl;
+                    // }
+                    if (*keyword != resultKeyword) {
+                        errln("file %s, line %d, Locale %s, sample for keyword \"%s\":  %g, select(%g) returns keyword \"%s\"",
+                              __FILE__, __LINE__, locales[i].getName(), US(*keyword).cstr(), values[j], values[j], US(resultKeyword).cstr());
+                    }
+                }
+            }
+        }
     }
-    delete keywords;
-    delete rules;
-  }
+}
+
+void PluralRulesTest::testGetFixedDecimalSamples() {
+    // TODO: fix samples, re-enable this test.
+
+    // no get functional equivalent API in ICU4C, so just
+    // test every locale...
+    UErrorCode status = U_ZERO_ERROR;
+    int32_t numLocales;
+    const Locale* locales = Locale::getAvailableLocales(numLocales);
+
+    FixedDecimal values[1000];
+    for (int32_t i = 0; U_SUCCESS(status) && i < numLocales; ++i) {
+        if (uprv_strcmp(locales[i].getLanguage(), "fr") == 0 &&
+                logKnownIssue("21299", "PluralRules::getSamples cannot distinguish 1e5 from 100000")) {
+            continue;
+        }
+        LocalPointer<PluralRules> rules(PluralRules::forLocale(locales[i], status));
+        if (U_FAILURE(status)) {
+            break;
+        }
+        LocalPointer<StringEnumeration> keywords(rules->getKeywords(status));
+        if (U_FAILURE(status)) {
+            break;
+        }
+        const UnicodeString* keyword;
+        while (NULL != (keyword = keywords->snext(status))) {
+            int32_t count = rules->getSamples(*keyword, values, UPRV_LENGTHOF(values), status);
+            if (U_FAILURE(status)) {
+                errln(UnicodeString(u"getSamples() failed for locale ") +
+                      locales[i].getName() +
+                      UnicodeString(u", keyword ") + *keyword);
+                continue;
+            }
+            if (count == 0) {
+                // TODO: Lots of these.
+                //   errln(UnicodeString(u"no samples for keyword ") + *keyword + UnicodeString(u" in locale ") + locales[i].getName() );
+            }
+            if (count > UPRV_LENGTHOF(values)) {
+                errln(UnicodeString(u"getSamples()=") + count +
+                      UnicodeString(u", too many values, for locale ") +
+                      locales[i].getName() +
+                      UnicodeString(u", keyword ") + *keyword);
+                count = UPRV_LENGTHOF(values);
+            }
+            for (int32_t j = 0; j < count; ++j) {
+                if (values[j] == UPLRULES_NO_UNIQUE_VALUE_DECIMAL) {
+                    errln("got 'no unique value' among values");
+                } else {
+                    UnicodeString resultKeyword = rules->select(values[j]);
+                    // if (strcmp(locales[i].getName(), "uk") == 0) {    // Debug only.
+                    //     std::cout << "  uk " << US(resultKeyword).cstr() << " " << values[j] << std::endl;
+                    // }
+                    if (*keyword != resultKeyword) {
+                        errln("file %s, line %d, Locale %s, sample for keyword \"%s\":  %s, select(%s) returns keyword \"%s\"",
+                                  __FILE__, __LINE__, locales[i].getName(), US(*keyword).cstr(), values[j].toString().getBuffer(), values[j].toString().getBuffer(), US(resultKeyword).cstr());
+                    }
+                }
+            }
+        }
+    }
+}
+
+void PluralRulesTest::testSamplesWithExponent() {
+    // integer samples
+    UErrorCode status = U_ZERO_ERROR;
+    UnicodeString description(
+        u"one: i = 0,1 @integer 0, 1, 1e5 @decimal 0.0~1.5, 1.1e5; "
+        u"many: e = 0 and i != 0 and i % 1000000 = 0 and v = 0 or e != 0..5"
+        u" @integer 1000000, 2e6, 3e6, 4e6, 5e6, 6e6, 7e6, … @decimal 2.1e6, 3.1e6, 4.1e6, 5.1e6, 6.1e6, 7.1e6, …; "
+        u"other:  @integer 2~17, 100, 1000, 10000, 100000, 2e5, 3e5, 4e5, 5e5, 6e5, 7e5, …"
+        u" @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 2.1e5, 3.1e5, 4.1e5, 5.1e5, 6.1e5, 7.1e5, …"
+    );
+    LocalPointer<PluralRules> test(PluralRules::createRules(description, status));
+    if (U_FAILURE(status)) {
+        errln("Couldn't create plural rules from a string using exponent notation, with error = %s", u_errorName(status));
+        return;
+    }
+    checkNewSamples(description, test, u"one", u"@integer 0, 1, 1e5", FixedDecimal(0));
+    checkNewSamples(description, test, u"many", u"@integer 1000000, 2e6, 3e6, 4e6, 5e6, 6e6, 7e6, …", FixedDecimal(1000000));
+    checkNewSamples(description, test, u"other", u"@integer 2~17, 100, 1000, 10000, 100000, 2e5, 3e5, 4e5, 5e5, 6e5, 7e5, …", FixedDecimal(2));
+
+    // decimal samples
+    status = U_ZERO_ERROR;
+    UnicodeString description2(
+        u"one: i = 0,1 @decimal 0.0~1.5, 1.1e5; "
+        u"many: e = 0 and i != 0 and i % 1000000 = 0 and v = 0 or e != 0..5"
+        u" @decimal 2.1e6, 3.1e6, 4.1e6, 5.1e6, 6.1e6, 7.1e6, …; "
+        u"other:  @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 2.1e5, 3.1e5, 4.1e5, 5.1e5, 6.1e5, 7.1e5, …"
+    );
+    LocalPointer<PluralRules> test2(PluralRules::createRules(description2, status));
+    if (U_FAILURE(status)) {
+        errln("Couldn't create plural rules from a string using exponent notation, with error = %s", u_errorName(status));
+        return;
+    }
+    checkNewSamples(description2, test2, u"one", u"@decimal 0.0~1.5, 1.1e5", FixedDecimal(0, 1));
+    checkNewSamples(description2, test2, u"many", u"@decimal 2.1e6, 3.1e6, 4.1e6, 5.1e6, 6.1e6, 7.1e6, …", FixedDecimal::createWithExponent(2.1, 1, 6));
+    checkNewSamples(description2, test2, u"other", u"@decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 2.1e5, 3.1e5, 4.1e5, 5.1e5, 6.1e5, 7.1e5, …", FixedDecimal(2.0, 1));
+}
+
+void PluralRulesTest::checkNewSamples(
+        UnicodeString description, 
+        const LocalPointer<PluralRules> &test,
+        UnicodeString keyword,
+        UnicodeString samplesString,
+        FixedDecimal firstInRange) {
+
+    UErrorCode status = U_ZERO_ERROR;
+    FixedDecimal samples[1000];
+    
+    test->getSamples(keyword, samples, UPRV_LENGTHOF(samples), status);
+    if (U_FAILURE(status)) {
+        errln("Couldn't retrieve plural samples, with error = %s", u_errorName(status));
+        return;
+    }
+    FixedDecimal actualFirstSample = samples[0];
+
+    if (!(firstInRange == actualFirstSample)) {
+        CStr descCstr(description);
+        CStr samplesCstr(samplesString);
+        char errMsg[1000];
+        snprintf(errMsg, sizeof(errMsg), "First parsed sample FixedDecimal not equal to expected for samples: %s in rule string: %s\n", descCstr(), samplesCstr());
+        errln(errMsg);
+    }
 }
 
 void PluralRulesTest::testWithin() {
-  // goes to show you what lack of testing will do.
-  // of course, this has been broken for two years and no one has noticed...
-  UErrorCode status = U_ZERO_ERROR;
-  PluralRules *rules = PluralRules::createRules("a: n mod 10 in 5..8", status);
-  if (!rules) {
-    errln("couldn't instantiate rules");
-    return;
-  }
+    // goes to show you what lack of testing will do.
+    // of course, this has been broken for two years and no one has noticed...
+    UErrorCode status = U_ZERO_ERROR;
+    PluralRules *rules = PluralRules::createRules("a: n mod 10 in 5..8", status);
+    if (!rules) {
+        errln("couldn't instantiate rules");
+        return;
+    }
 
-  UnicodeString keyword = rules->select((int32_t)26);
-  if (keyword != "a") {
-    errln("expected 'a' for 26 but didn't get it.");
-  }
+    UnicodeString keyword = rules->select((int32_t)26);
+    if (keyword != "a") {
+        errln("expected 'a' for 26 but didn't get it.");
+    }
 
-  keyword = rules->select(26.5);
-  if (keyword != "other") {
-    errln("expected 'other' for 26.5 but didn't get it.");
-  }
+    keyword = rules->select(26.5);
+    if (keyword != "other") {
+        errln("expected 'other' for 26.5 but didn't get it.");
+    }
 
-  delete rules;
+    delete rules;
 }
 
 void
@@ -595,6 +727,88 @@
     }
 }
 
+void
+PluralRulesTest::testCompactDecimalPluralKeyword() {
+    IcuTestErrorCode errorCode(*this, "testCompactDecimalPluralKeyword");
+
+    LocalPointer<PluralRules> rules(PluralRules::createRules(
+        u"one: i = 0,1 @integer 0, 1 @decimal 0.0~1.5;  "
+        u"many: e = 0 and i % 1000000 = 0 and v = 0 or e != 0 .. 5;  "
+        u"other:  @integer 2~17, 100, 1000, 10000, 100000, 1000000,  "
+        u"  @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …", errorCode));
+
+    if (U_FAILURE(errorCode)) {
+        errln("Couldn't instantiate plurals rules from string, with error = %s", u_errorName(errorCode));
+        return;
+    }
+
+    const char* localeName = "fr-FR";
+    Locale locale = Locale::createFromName(localeName);
+
+    struct TestCase {
+        const char16_t* skeleton;
+        const int input;
+        const char16_t* expectedFormattedOutput;
+        const char16_t* expectedPluralRuleKeyword;
+    } cases[] = {
+        // unlocalized formatter skeleton, input, string output, plural rule keyword
+        {u"",             0, u"0", u"one"},
+        {u"compact-long", 0, u"0", u"one"},
+
+        {u"",             1, u"1", u"one"},
+        {u"compact-long", 1, u"1", u"one"},
+
+        {u"",             2, u"2", u"other"},
+        {u"compact-long", 2, u"2", u"other"},
+
+        {u"",             1000000, u"1 000 000", u"many"},
+        {u"compact-long", 1000000, u"1 million", u"many"},
+
+        {u"",             1000001, u"1 000 001", u"other"},
+        {u"compact-long", 1000001, u"1 million", u"many"},
+
+        {u"",             120000,  u"1 200 000",    u"other"},
+        {u"compact-long", 1200000, u"1,2 millions", u"many"},
+
+        {u"",             1200001, u"1 200 001",    u"other"},
+        {u"compact-long", 1200001, u"1,2 millions", u"many"},
+
+        {u"",             2000000, u"2 000 000",  u"many"},
+        {u"compact-long", 2000000, u"2 millions", u"many"},
+    };
+    for (const auto& cas : cases) {
+        const char16_t* skeleton = cas.skeleton;
+        const int input = cas.input;
+        const char16_t* expectedPluralRuleKeyword = cas.expectedPluralRuleKeyword;
+
+        UnicodeString actualPluralRuleKeyword =
+            getPluralKeyword(rules, locale, input, skeleton);
+
+        UnicodeString message(UnicodeString(localeName) + u" " + DoubleToUnicodeString(input));
+        assertEquals(message, expectedPluralRuleKeyword, actualPluralRuleKeyword);
+    }
+}
+
+UnicodeString PluralRulesTest::getPluralKeyword(const LocalPointer<PluralRules> &rules, Locale locale, double number, const char16_t* skeleton) {
+    IcuTestErrorCode errorCode(*this, "getPluralKeyword");
+    UnlocalizedNumberFormatter ulnf = NumberFormatter::forSkeleton(skeleton, errorCode);
+    if (errorCode.errIfFailureAndReset("PluralRules::getPluralKeyword(<PluralRules>, <locale>, %d, %s) failed", number, skeleton)) {
+        return nullptr;
+    }
+    LocalizedNumberFormatter formatter = ulnf.locale(locale);
+    
+    const FormattedNumber fn = formatter.formatDouble(number, errorCode);
+    if (errorCode.errIfFailureAndReset("NumberFormatter::formatDouble(%d) failed", number)) {
+        return nullptr;
+    }
+
+    UnicodeString pluralKeyword = rules->select(fn, errorCode);
+    if (errorCode.errIfFailureAndReset("PluralRules->select(FormattedNumber of %d) failed", number)) {
+        return nullptr;
+    }
+    return pluralKeyword;
+}
+
 void PluralRulesTest::testOrdinal() {
     IcuTestErrorCode errorCode(*this, "testOrdinal");
     LocalPointer<PluralRules> pr(PluralRules::forLocale("en", UPLURAL_TYPE_ORDINAL, errorCode));
@@ -841,6 +1055,50 @@
 }
 
 
+void PluralRulesTest::testSelectRange() {
+    IcuTestErrorCode status(*this, "testSelectRange");
+
+    int32_t d1 = 102;
+    int32_t d2 = 201;
+    Locale locale("sl");
+
+    // Locale sl has interesting data: one + two => few
+    auto range = NumberRangeFormatter::withLocale(locale).formatFormattableRange(d1, d2, status);
+    auto rules = LocalPointer<PluralRules>(PluralRules::forLocale(locale, status), status);
+    if (status.errIfFailureAndReset()) {
+        return;
+    }
+
+    // For testing: get plural form of first and second numbers
+    auto a = NumberFormatter::withLocale(locale).formatDouble(d1, status);
+    auto b = NumberFormatter::withLocale(locale).formatDouble(d2, status);
+    assertEquals("First plural", u"two", rules->select(a, status));
+    assertEquals("Second plural", u"one", rules->select(b, status));
+
+    // Check the range plural now:
+    auto form = rules->select(range, status);
+    assertEquals("Range plural", u"few", form);
+
+    // Test after copying:
+    PluralRules copy(*rules);
+    form = copy.select(range, status);
+    assertEquals("Range plural after copying", u"few", form);
+
+    // Test when plural ranges data is unavailable:
+    auto bare = LocalPointer<PluralRules>(
+        PluralRules::createRules(u"a: i = 0,1", status), status);
+    if (status.errIfFailureAndReset()) { return; }
+    form = bare->select(range, status);
+    status.expectErrorAndReset(U_UNSUPPORTED_ERROR);
+
+    // However, they should not set an error when no data is available for a language.
+    auto xyz = LocalPointer<PluralRules>(
+        PluralRules::forLocale("xyz", status));
+    form = xyz->select(range, status);
+    assertEquals("Fallback form", u"other", form);
+}
+
+
 void PluralRulesTest::testAvailbleLocales() {
     
     // Hash set of (char *) strings.
@@ -1030,6 +1288,11 @@
         status.setScope(message);
         Locale locale(cas.localeName);
         LocalPointer<PluralRules> rules(PluralRules::forLocale(locale, status));
+        if (U_FAILURE(status)) {
+            dataerrln("Failed to create PluralRules by PluralRules::forLocale(%s): %s\n",
+                      cas.localeName, u_errorName(status));
+            return;
+        }
         assertEquals(message, cas.expectedDoubleKeyword, rules->select(cas.number));
         number::FormattedNumber fn = unf.locale(locale).formatDouble(cas.number, status);
         assertEquals(message, cas.expectedFormattedKeyword, rules->select(fn, status));
diff --git a/icu4c/source/test/intltest/plurults.h b/icu4c/source/test/intltest/plurults.h
index 784b0d3..7082349 100644
--- a/icu4c/source/test/intltest/plurults.h
+++ b/icu4c/source/test/intltest/plurults.h
@@ -30,10 +30,14 @@
     void testAPI();
     void testGetUniqueKeywordValue();
     void testGetSamples();
+    void testGetFixedDecimalSamples();
+    void testSamplesWithExponent();
     void testWithin();
     void testGetAllKeywordValues();
+    void testCompactDecimalPluralKeyword();
     void testOrdinal();
     void testSelect();
+    void testSelectRange();
     void testAvailbleLocales();
     void testParseErrors();
     void testFixedDecimal();
@@ -43,6 +47,13 @@
     void assertRuleValue(const UnicodeString& rule, double expected);
     void assertRuleKeyValue(const UnicodeString& rule, const UnicodeString& key,
                             double expected);
+    void checkNewSamples(UnicodeString description, 
+                         const LocalPointer<PluralRules> &test,
+                         UnicodeString keyword,
+                         UnicodeString samplesString,
+                         FixedDecimal firstInRange);
+    UnicodeString getPluralKeyword(const LocalPointer<PluralRules> &rules,
+                                   Locale locale, double number, const char16_t* skeleton);
     void checkSelect(const LocalPointer<PluralRules> &rules, UErrorCode &status, 
                                   int32_t line, const char *keyword, ...);
     void compareLocaleResults(const char* loc1, const char* loc2, const char* loc3);
diff --git a/icu4c/source/test/intltest/rbbiapts.cpp b/icu4c/source/test/intltest/rbbiapts.cpp
index ecc10e8..fdb496e 100644
--- a/icu4c/source/test/intltest/rbbiapts.cpp
+++ b/icu4c/source/test/intltest/rbbiapts.cpp
@@ -1030,7 +1030,7 @@
     parseError.offset = 0;
     LocalUDataMemoryPointer data(udata_open(U_ICUDATA_BRKITR, "brk", dataFile, &status));
     uint32_t length;
-    const UChar *builtSource;
+    const char *builtSource;
     const uint8_t *rbbiRules;
     const uint8_t *builtRules;
 
@@ -1040,7 +1040,7 @@
     }
 
     builtRules = (const uint8_t *)udata_getMemory(data.getAlias());
-    builtSource = (const UChar *)(builtRules + ((RBBIDataHeader*)builtRules)->fRuleSource);
+    builtSource = (const char *)(builtRules + ((RBBIDataHeader*)builtRules)->fRuleSource);
     LocalPointer<RuleBasedBreakIterator> brkItr (new RuleBasedBreakIterator(builtSource, parseError, status));
     if (U_FAILURE(status)) {
         errln("%s:%d createRuleBasedBreakIterator: ICU Error \"%s\"  at line %d, column %d\n",
diff --git a/icu4c/source/test/intltest/rbbitst.cpp b/icu4c/source/test/intltest/rbbitst.cpp
index d5728bd..8e3086b 100644
--- a/icu4c/source/test/intltest/rbbitst.cpp
+++ b/icu4c/source/test/intltest/rbbitst.cpp
@@ -128,6 +128,12 @@
     TESTCASE_AUTO(TestReverse);
     TESTCASE_AUTO(TestBug13692);
     TESTCASE_AUTO(TestDebugRules);
+    TESTCASE_AUTO(Test8BitsTrieWith8BitStateTable);
+    TESTCASE_AUTO(Test8BitsTrieWith16BitStateTable);
+    TESTCASE_AUTO(Test16BitsTrieWith8BitStateTable);
+    TESTCASE_AUTO(Test16BitsTrieWith16BitStateTable);
+    TESTCASE_AUTO(TestTable_8_16_Bits);
+    TESTCASE_AUTO(TestBug13590);
 
 #if U_ENABLE_TRACING
     TESTCASE_AUTO(TestTraceCreateCharacter);
@@ -899,6 +905,10 @@
         case PARSE_DATA:
             if (c == u'•') {
                 int32_t  breakIdx = tp.dataToBreak.length();
+                if (tp.expectedBreaks->size() > breakIdx) {
+                    errln("rbbitst.txt:%d:%d adjacent expected breaks with no intervening test text",
+                          lineNum, column);
+                }
                 tp.expectedBreaks->setSize(breakIdx+1);
                 tp.expectedBreaks->setElementAt(-1, breakIdx);
                 tp.srcLine->setSize(breakIdx+1);
@@ -1063,6 +1073,10 @@
                     tagValue = -1;
                 }
                 int32_t  breakIdx = tp.dataToBreak.length();
+                if (tp.expectedBreaks->size() > breakIdx) {
+                    errln("rbbitst.txt:%d:%d adjacent expected breaks with no intervening test text",
+                          lineNum, column);
+                }
                 tp.expectedBreaks->setSize(breakIdx+1);
                 tp.expectedBreaks->setElementAt(tagValue, breakIdx);
                 tp.srcLine->setSize(breakIdx+1);
@@ -1326,34 +1340,37 @@
         const UChar *fString;
     } badTestCases[] = {
         {"10666", "GraphemeBreakTest.txt", u"\u0020\u0020\u0033"},    // Fake example, for illustration.
+        // The following tests were originally for
         // Issue 8151, move the Finnish tailoring of the line break of hyphens to root.
-        // This probably ultimately wants to be resolved by updating UAX-14, but in the mean time
-        // ICU is out of sync with Unicode.
-        {"8151",  "LineBreakTest.txt", u"-#"},
-        {"8151",  "LineBreakTest.txt", u"\u002d\u0308\u0023"},
-        {"8151",  "LineBreakTest.txt", u"\u002d\u00a7"},
-        {"8151",  "LineBreakTest.txt", u"\u002d\u0308\u00a7"},
-        {"8151",  "LineBreakTest.txt", u"\u002d\U00050005"},
-        {"8151",  "LineBreakTest.txt", u"\u002d\u0308\U00050005"},
-        {"8151",  "LineBreakTest.txt", u"\u002d\u0e01"},
-        {"8151",  "LineBreakTest.txt", u"\u002d\u0308\u0e01"},
+        // However, that ticket has been closed as fixed but these tests still fail, so
+        // ICU-21097 has been created to investigate and address these remaining issues.
+        {"21097",  "LineBreakTest.txt", u"-#"},
+        {"21097",  "LineBreakTest.txt", u"\u002d\u0308\u0023"},
+        {"21097",  "LineBreakTest.txt", u"\u002d\u00a7"},
+        {"21097",  "LineBreakTest.txt", u"\u002d\u0308\u00a7"},
+        {"21097",  "LineBreakTest.txt", u"\u002d\U00050005"},
+        {"21097",  "LineBreakTest.txt", u"\u002d\u0308\U00050005"},
+        {"21097",  "LineBreakTest.txt", u"\u002d\u0e01"},
+        {"21097",  "LineBreakTest.txt", u"\u002d\u0308\u0e01"},
 
-        // Issue ICU-12017 Improve line break around numbers
-        {"12017", "LineBreakTest.txt", u"\u002C\u0030"},   // ",0"
-        {"12017", "LineBreakTest.txt", u"\u002C\u0308\u0030"},
-        {"12017", "LineBreakTest.txt", u"find .com"},
-        {"12017", "LineBreakTest.txt", u"equals .35 cents"},
-        {"12017", "LineBreakTest.txt", u"a.2 "},
-        {"12017", "LineBreakTest.txt", u"a.2 \u0915"},
-        {"12017", "LineBreakTest.txt", u"a.2 \u672C"},
-        {"12017", "LineBreakTest.txt", u"a.2\u3000\u672C"},
-        {"12017", "LineBreakTest.txt", u"a.2\u3000\u307E"},
-        {"12017", "LineBreakTest.txt", u"a.2\u3000\u0033"},
-        {"12017", "LineBreakTest.txt", u"A.1 \uBABB"},
-        {"12017", "LineBreakTest.txt", u"\uBD24\uC5B4\u002E\u0020\u0041\u002E\u0032\u0020\uBCFC"},
-        {"12017", "LineBreakTest.txt", u"\uBD10\uC694\u002E\u0020\u0041\u002E\u0033\u0020\uBABB"},
-        {"12017", "LineBreakTest.txt", u"\uC694\u002E\u0020\u0041\u002E\u0034\u0020\uBABB"},
-        {"12017", "LineBreakTest.txt", u"a.2\u3000\u300C"},
+        // The following tests were originally for
+        // Issue ICU-12017 Improve line break around numbers.
+        // However, that ticket has been closed as fixed but these tests still fail, so
+        // ICU-21097 has been created to investigate and address these remaining issues.
+        {"21097", "LineBreakTest.txt", u"\u002C\u0030"},   // ",0"
+        {"21097", "LineBreakTest.txt", u"\u002C\u0308\u0030"},
+        {"21097", "LineBreakTest.txt", u"equals .35 cents"},
+        {"21097", "LineBreakTest.txt", u"a.2 "},
+        {"21097", "LineBreakTest.txt", u"a.2 \u0915"},
+        {"21097", "LineBreakTest.txt", u"a.2 \u672C"},
+        {"21097", "LineBreakTest.txt", u"a.2\u3000\u672C"},
+        {"21097", "LineBreakTest.txt", u"a.2\u3000\u307E"},
+        {"21097", "LineBreakTest.txt", u"a.2\u3000\u0033"},
+        {"21097", "LineBreakTest.txt", u"A.1 \uBABB"},
+        {"21097", "LineBreakTest.txt", u"\uBD24\uC5B4\u002E\u0020\u0041\u002E\u0032\u0020\uBCFC"},
+        {"21097", "LineBreakTest.txt", u"\uBD10\uC694\u002E\u0020\u0041\u002E\u0033\u0020\uBABB"},
+        {"21097", "LineBreakTest.txt", u"\uC694\u002E\u0020\u0041\u002E\u0034\u0020\uBABB"},
+        {"21097", "LineBreakTest.txt", u"a.2\u3000\u300C"},
     };
 
     for (int n=0; n<UPRV_LENGTHOF(badTestCases); n++) {
@@ -4618,7 +4635,7 @@
     RuleBasedBreakIterator bi(rules, pe, status);
     assertSuccess(WHERE, status);
     UnicodeString rtRules = bi.getRules();
-    assertEquals(WHERE, UnicodeString(u"!!forward; $x = [ab#]; '#' '?'; "),  rtRules);
+    assertEquals(WHERE, UnicodeString(u"!!forward;$x=[ab#];'#''?';"),  rtRules);
 }
 
 
@@ -4632,6 +4649,7 @@
 
     RBBIDataWrapper *dw = bi->fData;
     const RBBIStateTable *fwtbl = dw->fForwardTable;
+    UBool in8Bits = fwtbl->fFlags & RBBI_8BITS_ROWS;
     int32_t numCharClasses = dw->fHeader->fCatCount;
     // printf("Char Classes: %d     states: %d\n", numCharClasses, fwtbl->fNumStates);
 
@@ -4642,13 +4660,14 @@
         UnicodeString s;
         for (int32_t r = 1; r < (int32_t)fwtbl->fNumStates; r++) {
             RBBIStateTableRow  *row = (RBBIStateTableRow *) (fwtbl->fTableData + (fwtbl->fRowLen * r));
-            s.append(row->fNextState[column]);
+            s.append(in8Bits ? row->r8.fNextState[column] : row->r16.fNextState[column]);
         }
         columns.push_back(s);
     }
     // Ignore column (char class) 0 while checking; it's special, and may have duplicates.
     for (int c1=1; c1<numCharClasses; c1++) {
-        for (int c2 = c1+1; c2 < numCharClasses; c2++) {
+        int limit = c1 < (int)fwtbl->fDictCategoriesStart ? fwtbl->fDictCategoriesStart : numCharClasses;
+        for (int c2 = c1+1; c2 < limit; c2++) {
             if (columns.at(c1) == columns.at(c2)) {
                 errln("%s:%d Duplicate columns (%d, %d)\n", __FILE__, __LINE__, c1, c2);
                 goto out;
@@ -4662,12 +4681,20 @@
     for (int32_t r=0; r < (int32_t)fwtbl->fNumStates; r++) {
         UnicodeString s;
         RBBIStateTableRow  *row = (RBBIStateTableRow *) (fwtbl->fTableData + (fwtbl->fRowLen * r));
-        assertTrue(WHERE, row->fAccepting >= -1);
-        s.append(row->fAccepting + 1);   // values of -1 are expected.
-        s.append(row->fLookAhead);
-        s.append(row->fTagIdx);
-        for (int32_t column = 0; column < numCharClasses; column++) {
-            s.append(row->fNextState[column]);
+        if (in8Bits) {
+            s.append(row->r8.fAccepting);
+            s.append(row->r8.fLookAhead);
+            s.append(row->r8.fTagsIdx);
+            for (int32_t column = 0; column < numCharClasses; column++) {
+                s.append(row->r8.fNextState[column]);
+            }
+        } else {
+            s.append(row->r16.fAccepting);
+            s.append(row->r16.fLookAhead);
+            s.append(row->r16.fTagsIdx);
+            for (int32_t column = 0; column < numCharClasses; column++) {
+                s.append(row->r16.fNextState[column]);
+            }
         }
         rows.push_back(s);
     }
@@ -4740,12 +4767,14 @@
 
     RBBIDataWrapper *data = bi->fData;
     int32_t categoryCount = data->fHeader->fCatCount;
-    UTrie2  *trie = data->fTrie;
+    UCPTrie *trie = data->fTrie;
+    bool use8BitsTrie = ucptrie_getValueWidth(trie) == UCPTRIE_VALUE_BITS_8;
+    uint32_t dictBit = use8BitsTrie ? 0x0080 : 0x4000;
 
     std::vector<UnicodeString> strings(categoryCount, UnicodeString());
     for (int cp=0; cp<0x1fff0; ++cp) {
-        int cat = utrie2_get32(trie, cp);
-        cat &= ~0x4000;    // And off the dictionary bit from the category.
+        int cat = ucptrie_get(trie, cp);
+        cat &= ~dictBit;    // And off the dictionary bit from the category.
         assertTrue(WHERE, cat < categoryCount && cat >= 0);
         if (cat < 0 || cat >= categoryCount) return;
         strings[cat].append(cp);
@@ -4883,6 +4912,239 @@
 #endif
 }
 
+void RBBITest::testTrieStateTable(int32_t numChar, bool expectedTrieWidthIn8Bits, bool expectedStateRowIn8Bits) {
+    UCPTrieValueWidth expectedTrieWidth = expectedTrieWidthIn8Bits ? UCPTRIE_VALUE_BITS_8 : UCPTRIE_VALUE_BITS_16;
+    int32_t expectedStateRowBits = expectedStateRowIn8Bits ? RBBI_8BITS_ROWS : 0;
+    // Text are duplicate characters from U+4E00 to U+4FFF
+    UnicodeString text;
+    for (UChar c = 0x4e00; c < 0x5000; c++) {
+        text.append(c).append(c);
+    }
+    // Generate rule which will caused length+4 character classes and
+    // length+3 states
+    UnicodeString rules(u"!!quoted_literals_only;");
+    for (UChar c = 0x4e00; c < 0x4e00 + numChar; c++) {
+        rules.append(u'\'').append(c).append(c).append(u"';");
+    }
+    rules.append(u".;");
+    UErrorCode status = U_ZERO_ERROR;
+    UParseError parseError;
+    RuleBasedBreakIterator bi(rules, parseError, status);
+
+    assertEquals(WHERE, numChar + 4, bi.fData->fHeader->fCatCount);
+    assertEquals(WHERE, numChar + 3, bi.fData->fForwardTable->fNumStates);
+    assertEquals(WHERE, expectedTrieWidth, ucptrie_getValueWidth(bi.fData->fTrie));
+    assertEquals(WHERE, expectedStateRowBits, bi.fData->fForwardTable->fFlags & RBBI_8BITS_ROWS);
+    assertEquals(WHERE, expectedStateRowBits, bi.fData->fReverseTable->fFlags & RBBI_8BITS_ROWS);
+
+    bi.setText(text);
+
+    int32_t pos;
+    int32_t i = 0;
+    while ((pos = bi.next()) > 0) {
+        // The first numChar should not break between the pair
+        if (i++ < numChar) {
+            assertEquals(WHERE, i * 2, pos);
+        } else {
+            // After the first numChar next(), break on each character.
+            assertEquals(WHERE, i + numChar, pos);
+        }
+    }
+    while ((pos = bi.previous()) > 0) {
+        // The first numChar should not break between the pair
+        if (--i < numChar) {
+            assertEquals(WHERE, i * 2, pos);
+        } else {
+            // After the first numChar next(), break on each character.
+            assertEquals(WHERE, i + numChar, pos);
+        }
+    }
+}
+
+void RBBITest::Test8BitsTrieWith8BitStateTable() {
+    testTrieStateTable(251, true /* expectedTrieWidthIn8Bits */, true /* expectedStateRowIn8Bits */);
+}
+
+void RBBITest::Test16BitsTrieWith8BitStateTable() {
+    testTrieStateTable(252, false /* expectedTrieWidthIn8Bits */, true /* expectedStateRowIn8Bits */);
+}
+
+void RBBITest::Test16BitsTrieWith16BitStateTable() {
+    testTrieStateTable(253, false /* expectedTrieWidthIn8Bits */, false /* expectedStateRowIn8Bits */);
+}
+
+void RBBITest::Test8BitsTrieWith16BitStateTable() {
+    // Test UCPTRIE_VALUE_BITS_8 with 16 bits rows. Use a different approach to
+    // create state table in 16 bits.
+
+    // Generate 510 'a' as text
+    UnicodeString text;
+    for (int32_t i = 0; i < 510; i++) {
+        text.append(u'a');
+    }
+
+    UnicodeString rules(u"!!quoted_literals_only;'");
+    // 254 'a' in the rule will cause 256 states
+    for (int32_t i = 0; i < 254; i++) {
+        rules.append(u'a');
+    }
+    rules.append(u"';.;");
+
+    UErrorCode status = U_ZERO_ERROR;
+    UParseError parseError;
+    LocalPointer<RuleBasedBreakIterator> bi(new RuleBasedBreakIterator(rules, parseError, status));
+
+    assertEquals(WHERE, 256, bi->fData->fForwardTable->fNumStates);
+    assertEquals(WHERE, UCPTRIE_VALUE_BITS_8, ucptrie_getValueWidth(bi->fData->fTrie));
+    assertEquals(WHERE,
+                 false, RBBI_8BITS_ROWS == (bi->fData->fForwardTable->fFlags & RBBI_8BITS_ROWS));
+    bi->setText(text);
+
+    // break positions:
+    // 254, 508, 509, ... 510
+    assertEquals("next()", 254, bi->next());
+    int32_t i = 0;
+    int32_t pos;
+    while ((pos = bi->next()) > 0) {
+        assertEquals(WHERE, 508 + i , pos);
+        i++;
+    }
+    i = 0;
+    while ((pos = bi->previous()) > 0) {
+        i++;
+        if (pos >= 508) {
+            assertEquals(WHERE, 510 - i , pos);
+        } else {
+            assertEquals(WHERE, 254 , pos);
+        }
+    }
+}
+
+// Test that both compact (8 bit) and full sized (16 bit) rbbi tables work, and
+// that there are no problems with rules at the size that transitions between the two.
+//
+// A rule that matches a literal string, like 'abcdefghij', will require one state and
+// one character class per character in the string. So we can make a rule to tickle the
+// boundaries by using literal strings of various lengths.
+//
+// For both the number of states and the number of character classes, the eight bit format
+// only has 7 bits available, allowing for 128 values. For both, a few values are reserved,
+// leaving 120 something available. This test runs the string over the range of 120 - 130,
+// which allows some margin for changes to the number of values reserved by the rule builder
+// without breaking the test.
+
+void RBBITest::TestTable_8_16_Bits() {
+
+    // testStr serves as both the source of the rule string (truncated to the desired length)
+    // and as test data to check matching behavior. A break rule consisting of the first 120
+    // characters of testStr will match the first 120 chars of the full-length testStr.
+    UnicodeString testStr;
+    for (UChar c=0x3000; c<0x3200; ++c) {
+        testStr.append(c);
+    }
+
+    const int32_t startLength = 120;   // The shortest rule string to test.
+    const int32_t endLength = 260;     // The longest rule string to test
+    const int32_t increment = this->quick ? endLength - startLength : 1;
+
+    for (int32_t ruleLen=startLength; ruleLen <= endLength; ruleLen += increment) {
+        UParseError parseError;
+        UErrorCode status = U_ZERO_ERROR;
+
+        UnicodeString ruleString{u"!!quoted_literals_only; '#';"};
+        ruleString.findAndReplace(UnicodeString(u"#"), UnicodeString(testStr, 0, ruleLen));
+        RuleBasedBreakIterator bi(ruleString, parseError, status);
+        if (!assertSuccess(WHERE, status)) {
+            errln(ruleString);
+            break;
+        }
+        // bi.dumpTables();
+
+        // Verify that the break iterator is functioning - that the first boundary found
+        // in testStr is at the length of the rule string.
+        bi.setText(testStr);
+        assertEquals(WHERE, ruleLen, bi.next());
+
+        // Reverse iteration. Do a setText() first, to flush the break iterator's internal cache
+        // of previously detected boundaries, thus forcing the engine to run the safe reverse rules.
+        bi.setText(testStr);
+        int32_t result = bi.preceding(ruleLen);
+        assertEquals(WHERE, 0, result);
+
+        // Verify that the range of rule lengths being tested cover the transations
+        // from 8 to 16 bit data.
+        bool has8BitRowData = bi.fData->fForwardTable->fFlags & RBBI_8BITS_ROWS;
+        bool has8BitsTrie = ucptrie_getValueWidth(bi.fData->fTrie) == UCPTRIE_VALUE_BITS_8;
+
+        if (ruleLen == startLength) {
+            assertEquals(WHERE, true, has8BitRowData);
+            assertEquals(WHERE, true, has8BitsTrie);
+        }
+        if (ruleLen == endLength) {
+            assertEquals(WHERE, false, has8BitRowData);
+            assertEquals(WHERE, false, has8BitsTrie);
+        }
+    }
+}
+
+/* Test handling of a large number of look-ahead rules.
+ * The number of rules in the test exceeds the implementation limits prior to the
+ * improvements introduced with #13590.
+ *
+ * The test look-ahead rules have the form "AB / CE"; "CD / EG"; ...
+ * The text being matched is sequential, "ABCDEFGHI..."
+ *
+ * The upshot is that the look-ahead rules all match on their preceding context,
+ * and consequently must save a potential result, but then fail to match on their
+ * trailing context, so that they don't actually cause a boundary.
+ *
+ * Additionally, add a ".*" rule, so there are no boundaries unless a
+ * look-ahead hard-break rule forces one.
+ */
+void RBBITest::TestBug13590() {
+    UnicodeString rules {u"!!quoted_literals_only; !!chain; .*;\n"};
+
+    const int NUM_LOOKAHEAD_RULES = 50;
+    const char16_t STARTING_CHAR = u'\u5000';
+    char16_t firstChar;
+    for (int ruleNum = 0; ruleNum < NUM_LOOKAHEAD_RULES; ++ruleNum) {
+        firstChar = STARTING_CHAR + ruleNum*2;
+        rules.append(u'\'') .append(firstChar) .append(firstChar+1) .append(u'\'')
+             .append(u' ') .append(u'/') .append(u' ')
+             .append(u'\'') .append(firstChar+2) .append(firstChar+4) .append(u'\'')
+             .append(u';') .append(u'\n');
+    }
+
+    // Change the last rule added from the form "UV / WY" to "UV / WX".
+    // Changes the rule so that it will match - all 4 chars are in ascending sequence.
+    rules.findAndReplace(UnicodeString(firstChar+4), UnicodeString(firstChar+3));
+
+    UErrorCode status = U_ZERO_ERROR;
+    UParseError parseError;
+    RuleBasedBreakIterator bi(rules, parseError, status);
+    if (!assertSuccess(WHERE, status)) {
+        errln(rules);
+        return;
+    }
+    // bi.dumpTables();
+
+    UnicodeString testString;
+    for (char16_t c = STARTING_CHAR-200; c < STARTING_CHAR + NUM_LOOKAHEAD_RULES*4; ++c) {
+        testString.append(c);
+    }
+    bi.setText(testString);
+
+    int breaksFound = 0;
+    while (bi.next() != UBRK_DONE) {
+        ++breaksFound;
+    }
+
+    // Two matches are expected, one from the last rule that was explicitly modified,
+    // and one at the end of the text.
+    assertEquals(WHERE, 2, breaksFound);
+}
+
+
 #if U_ENABLE_TRACING
 static std::vector<std::string> gData;
 static std::vector<int32_t> gEntryFn;
diff --git a/icu4c/source/test/intltest/rbbitst.h b/icu4c/source/test/intltest/rbbitst.h
index 8f667e5..da14411 100644
--- a/icu4c/source/test/intltest/rbbitst.h
+++ b/icu4c/source/test/intltest/rbbitst.h
@@ -86,6 +86,12 @@
 
     void TestDebug();
     void TestProperties();
+    void Test8BitsTrieWith8BitStateTable();
+    void Test8BitsTrieWith16BitStateTable();
+    void Test16BitsTrieWith8BitStateTable();
+    void Test16BitsTrieWith16BitStateTable();
+    void TestTable_8_16_Bits();
+    void TestBug13590();
 
 #if U_ENABLE_TRACING
     void TestTraceCreateCharacter();
@@ -133,6 +139,9 @@
     // Test parameters, from the test framework and test invocation.
     const char* fTestParams;
 
+    // Helper functions to test different trie bit sizes and state table bit sizes.
+    void testTrieStateTable(int32_t numChar, bool expectedTrieWidthIn8Bits, bool expectedStateRowIn8Bits);
+
 #if U_ENABLE_TRACING
     void assertTestTraceResult(int32_t fnNumber, const char* expectedData);
 #endif
diff --git a/icu4c/source/test/intltest/restsnew.cpp b/icu4c/source/test/intltest/restsnew.cpp
index 482e241..5d25dd1 100644
--- a/icu4c/source/test/intltest/restsnew.cpp
+++ b/icu4c/source/test/intltest/restsnew.cpp
@@ -535,26 +535,28 @@
         errln("copy construction failed\n");
     }
 
-    ResourceBundle defaultSub = defaultresource.get((int32_t)0, err);
-    ResourceBundle defSubCopy(defaultSub);
-    if(strcmp(defSubCopy.getName(), defaultSub.getName() ) !=0  ||
-        strcmp(defSubCopy.getLocale().getName(), defaultSub.getLocale().getName() ) !=0  ){
-        errln("copy construction for subresource failed\n");
+    {
+        LocalPointer<ResourceBundle> p(defaultresource.clone());
+        if(p.getAlias() == &defaultresource || !equalRB(*p, defaultresource)) {
+            errln("ResourceBundle.clone() failed");
+        }
     }
 
-    ResourceBundle *p;
-
-    p = defaultresource.clone();
-    if(p == &defaultresource || !equalRB(*p, defaultresource)) {
-        errln("ResourceBundle.clone() failed");
+    // The following tests involving defaultSub may no longer be exercised if
+    // defaultresource is for a locale like en_US with an empty resource bundle.
+    // (Before ICU-21028 such a bundle would have contained at least a Version string.)
+    if(defaultresource.getSize() != 0) {
+        ResourceBundle defaultSub = defaultresource.get((int32_t)0, err);
+        ResourceBundle defSubCopy(defaultSub);
+        if(strcmp(defSubCopy.getName(), defaultSub.getName()) != 0 ||
+                strcmp(defSubCopy.getLocale().getName(), defaultSub.getLocale().getName() ) != 0) {
+            errln("copy construction for subresource failed\n");
+        }
+        LocalPointer<ResourceBundle> p(defaultSub.clone());
+        if(p.getAlias() == &defaultSub || !equalRB(*p, defaultSub)) {
+            errln("2nd ResourceBundle.clone() failed");
+        }
     }
-    delete p;
-
-    p = defaultSub.clone();
-    if(p == &defaultSub || !equalRB(*p, defaultSub)) {
-        errln("2nd ResourceBundle.clone() failed");
-    }
-    delete p;
 
     UVersionInfo ver;
     copyRes.getVersion(ver);
diff --git a/icu4c/source/test/intltest/static_unisets_test.cpp b/icu4c/source/test/intltest/static_unisets_test.cpp
index 5cc946b..ab12819 100644
--- a/icu4c/source/test/intltest/static_unisets_test.cpp
+++ b/icu4c/source/test/intltest/static_unisets_test.cpp
@@ -111,8 +111,9 @@
 
 void StaticUnicodeSetsTest::assertInSet(const UnicodeString &localeName, const UnicodeString &setName,
                               const UnicodeSet &set, UChar32 cp) {
-    // If this test case fails, add the specified code point to the corresponding set in
-    // UnicodeSetStaticCache.java and numparse_unisets.cpp
+    // If this test case fails, add the specified code point to the corresponding set in either:
+    // - parseLenients in CLDR root.xml
+    // - harded-coded sets in StaticUnicodeSets.java and static_unicode_sets.cpp
     assertTrue(
             localeName + UnicodeString(u" ") + UnicodeString(cp) + UnicodeString(u" is missing in ") +
             setName, set.contains(cp));
diff --git a/icu4c/source/test/intltest/strcase.cpp b/icu4c/source/test/intltest/strcase.cpp
index 4093c51..4154558 100644
--- a/icu4c/source/test/intltest/strcase.cpp
+++ b/icu4c/source/test/intltest/strcase.cpp
@@ -53,6 +53,7 @@
     void TestTitleOptions();
     void TestFullCaseFoldingIterator();
     void TestGreekUpper();
+    void TestArmenian();
     void TestLongUpper();
     void TestMalformedUTF8();
     void TestBufferOverflow();
@@ -97,6 +98,7 @@
 #endif
     TESTCASE_AUTO(TestFullCaseFoldingIterator);
     TESTCASE_AUTO(TestGreekUpper);
+    TESTCASE_AUTO(TestArmenian);
     TESTCASE_AUTO(TestLongUpper);
     TESTCASE_AUTO(TestMalformedUTF8);
     TESTCASE_AUTO(TestBufferOverflow);
@@ -814,6 +816,26 @@
     assertGreekUpper(u"ή.", u"Ή.");
 }
 
+void StringCaseTest::TestArmenian() {
+    Locale hy("hy");  // Eastern Armenian
+    Locale hyw("hyw");  // Western Armenian
+    Locale root = Locale::getRoot();
+    // See ICU-13416:
+    // և ligature ech-yiwn
+    // uppercases to ԵՒ=ech+yiwn by default and in Western Armenian,
+    // but to ԵՎ=ech+vew in Eastern Armenian.
+    UnicodeString s(u"և Երևանի");
+
+    assertEquals("upper root", u"ԵՒ ԵՐԵՒԱՆԻ", UnicodeString(s).toUpper(root));
+    assertEquals("upper hy", u"ԵՎ ԵՐԵՎԱՆԻ", UnicodeString(s).toUpper(hy));
+    assertEquals("upper hyw", u"ԵՒ ԵՐԵՒԱՆԻ", UnicodeString(s).toUpper(hyw));
+#if !UCONFIG_NO_BREAK_ITERATION
+    assertEquals("title root", u"Եւ Երևանի", UnicodeString(s).toTitle(nullptr, root));
+    assertEquals("title hy", u"Եվ Երևանի", UnicodeString(s).toTitle(nullptr, hy));
+    assertEquals("title hyw", u"Եւ Երևանի", UnicodeString(s).toTitle(nullptr, hyw));
+#endif
+}
+
 void
 StringCaseTest::TestLongUpper() {
     if (quick) {
diff --git a/icu4c/source/test/intltest/strtest.cpp b/icu4c/source/test/intltest/strtest.cpp
index 1185d31..043355f 100644
--- a/icu4c/source/test/intltest/strtest.cpp
+++ b/icu4c/source/test/intltest/strtest.cpp
@@ -483,11 +483,11 @@
         std::string stdhaystack(cas.haystack);
         std::string stdneedle(cas.needle);
         assertEquals(Int64ToUnicodeString(caseNumber) + u" (std)",
-            cas.expected, stdhaystack.find(stdneedle, 0));
+            cas.expected, static_cast<int32_t>(stdhaystack.find(stdneedle, 0)));
         // Test offsets against std::string::find
         for (int32_t offset = 0; offset < haystack.length(); offset++) {
             assertEquals(Int64ToUnicodeString(caseNumber) + "u @ " + Int64ToUnicodeString(offset),
-                stdhaystack.find(stdneedle, offset), haystack.find(needle, offset));
+                static_cast<int32_t>(stdhaystack.find(stdneedle, offset)), haystack.find(needle, offset));
         }
         caseNumber++;
     }
@@ -810,6 +810,27 @@
                 "Long string over 40 characters to trigger heap allocation",
                 s3.data());
     }
+
+    {
+        // extract()
+        errorCode.reset();
+        CharString s("abc", errorCode);
+        char buffer[10];
+
+        s.extract(buffer, 10, errorCode);
+        assertEquals("abc.extract(10) success", U_ZERO_ERROR, errorCode.get());
+        assertEquals("abc.extract(10) output", "abc", buffer);
+
+        strcpy(buffer, "012345");
+        s.extract(buffer, 3, errorCode);
+        assertEquals("abc.extract(3) not terminated",
+                     U_STRING_NOT_TERMINATED_WARNING, errorCode.reset());
+        assertEquals("abc.extract(3) output", "abc345", buffer);
+
+        strcpy(buffer, "012345");
+        s.extract(buffer, 2, errorCode);
+        assertEquals("abc.extract(2) overflow", U_BUFFER_OVERFLOW_ERROR, errorCode.reset());
+    }
 }
 
 void
diff --git a/icu4c/source/test/intltest/units_data_test.cpp b/icu4c/source/test/intltest/units_data_test.cpp
new file mode 100644
index 0000000..1846451
--- /dev/null
+++ b/icu4c/source/test/intltest/units_data_test.cpp
@@ -0,0 +1,153 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html#License
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "units_data.h"
+#include "intltest.h"
+
+using namespace ::icu::units;
+
+class UnitsDataTest : public IntlTest {
+  public:
+    UnitsDataTest() {}
+
+    void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = NULL);
+
+    void testGetUnitCategory();
+    void testGetAllConversionRates();
+    void testGetPreferencesFor();
+};
+
+extern IntlTest *createUnitsDataTest() { return new UnitsDataTest(); }
+
+void UnitsDataTest::runIndexedTest(int32_t index, UBool exec, const char *&name, char * /*par*/) {
+    if (exec) { logln("TestSuite UnitsDataTest: "); }
+    TESTCASE_AUTO_BEGIN;
+    TESTCASE_AUTO(testGetUnitCategory);
+    TESTCASE_AUTO(testGetAllConversionRates);
+    TESTCASE_AUTO(testGetPreferencesFor);
+    TESTCASE_AUTO_END;
+}
+
+void UnitsDataTest::testGetUnitCategory() {
+    struct TestCase {
+        const char *unit;
+        const char *expectedCategory;
+    } testCases[]{
+        {"kilogram-per-cubic-meter", "mass-density"},
+        {"cubic-meter-per-meter", "consumption"},
+        // TODO(CLDR-13787,hugovdm): currently we're treating
+        // consumption-inverse as a separate category. Once consumption
+        // preference handling has been clarified by CLDR-13787, this function
+        // should be fixed.
+        {"meter-per-cubic-meter", "consumption-inverse"},
+    };
+
+    IcuTestErrorCode status(*this, "testGetUnitCategory");
+    for (const auto &t : testCases) {
+        CharString category = getUnitCategory(t.unit, status);
+        status.errIfFailureAndReset("getUnitCategory(%s)", t.unit);
+        assertEquals("category", t.expectedCategory, category.data());
+    }
+}
+
+void UnitsDataTest::testGetAllConversionRates() {
+    IcuTestErrorCode status(*this, "testGetAllConversionRates");
+    MaybeStackVector<ConversionRateInfo> conversionInfo;
+    getAllConversionRates(conversionInfo, status);
+
+    // Convenience output for debugging
+    for (int i = 0; i < conversionInfo.length(); i++) {
+        ConversionRateInfo *cri = conversionInfo[i];
+        logln("* conversionInfo %d: source=\"%s\", baseUnit=\"%s\", factor=\"%s\", offset=\"%s\"", i,
+              cri->sourceUnit.data(), cri->baseUnit.data(), cri->factor.data(), cri->offset.data());
+        assertTrue("sourceUnit", cri->sourceUnit.length() > 0);
+        assertTrue("baseUnit", cri->baseUnit.length() > 0);
+        assertTrue("factor", cri->factor.length() > 0);
+    }
+}
+
+class UnitPreferencesOpenedUp : public UnitPreferences {
+  public:
+    UnitPreferencesOpenedUp(UErrorCode &status) : UnitPreferences(status) {}
+    const MaybeStackVector<UnitPreferenceMetadata> *getInternalMetadata() const { return &metadata_; }
+    const MaybeStackVector<UnitPreference> *getInternalUnitPrefs() const { return &unitPrefs_; }
+};
+
+/**
+ * This test is dependent upon CLDR Data: when the preferences change, the test
+ * may fail: see the constants for expected Max/Min unit identifiers, for US and
+ * World, and for Roads and default lengths.
+ */
+void UnitsDataTest::testGetPreferencesFor() {
+    const char* USRoadMax = "mile";
+    const char* USRoadMin = "foot";
+    const char* USLenMax = "mile";
+    const char* USLenMin = "inch";
+    const char* WorldRoadMax = "kilometer";
+    const char* WorldRoadMin = "meter";
+    const char* WorldLenMax = "kilometer";
+    const char* WorldLenMin = "centimeter";
+    struct TestCase {
+        const char *name;
+        const char *category;
+        const char *usage;
+        const char *region;
+        const char *expectedBiggest;
+        const char *expectedSmallest;
+    } testCases[]{
+        {"US road", "length", "road", "US", USRoadMax, USRoadMin},
+        {"001 road", "length", "road", "001", WorldRoadMax, WorldRoadMin},
+        {"US lengths", "length", "default", "US", USLenMax, USLenMin},
+        {"001 lengths", "length", "default", "001", WorldLenMax, WorldLenMin},
+        {"XX road falls back to 001", "length", "road", "XX", WorldRoadMax, WorldRoadMin},
+        {"XX default falls back to 001", "length", "default", "XX", WorldLenMax, WorldLenMin},
+        {"Unknown usage US", "length", "foobar", "US", USLenMax, USLenMin},
+        {"Unknown usage 001", "length", "foobar", "XX", WorldLenMax, WorldLenMin},
+        {"Fallback", "length", "person-height-xyzzy", "DE", "meter-and-centimeter",
+         "meter-and-centimeter"},
+        {"Fallback twice", "length", "person-height-xyzzy-foo", "DE", "meter-and-centimeter",
+         "meter-and-centimeter"},
+        // Confirming results for some unitPreferencesTest.txt test cases
+        {"001 area", "area", "default", "001", "square-kilometer", "square-centimeter"},
+        {"GB area", "area", "default", "GB", "square-mile", "square-inch"},
+        {"001 area geograph", "area", "geograph", "001", "square-kilometer", "square-kilometer"},
+        {"GB area geograph", "area", "geograph", "GB", "square-mile", "square-mile"},
+        {"CA person-height", "length", "person-height", "CA", "foot-and-inch", "inch"},
+        {"AT person-height", "length", "person-height", "AT", "meter-and-centimeter",
+         "meter-and-centimeter"},
+    };
+    IcuTestErrorCode status(*this, "testGetPreferencesFor");
+    UnitPreferencesOpenedUp preferences(status);
+    auto *metadata = preferences.getInternalMetadata();
+    auto *unitPrefs = preferences.getInternalUnitPrefs();
+    assertTrue(UnicodeString("Metadata count: ") + metadata->length() + " > 200",
+               metadata->length() > 200);
+    assertTrue(UnicodeString("Preferences count: ") + unitPrefs->length() + " > 250",
+               unitPrefs->length() > 250);
+
+    for (const auto &t : testCases) {
+        logln(t.name);
+        const UnitPreference *const *prefs;
+        int32_t prefsCount;
+        preferences.getPreferencesFor(t.category, t.usage, t.region, prefs, prefsCount, status);
+        if (status.errIfFailureAndReset("getPreferencesFor(\"%s\", \"%s\", \"%s\", ...", t.category,
+                                        t.usage, t.region)) {
+            continue;
+        }
+        if (prefsCount > 0) {
+            assertEquals(UnicodeString(t.name) + " - max unit", t.expectedBiggest,
+                         prefs[0]->unit.data());
+            assertEquals(UnicodeString(t.name) + " - min unit", t.expectedSmallest,
+                         prefs[prefsCount - 1]->unit.data());
+        } else {
+            errln(UnicodeString(t.name) + ": failed to find preferences");
+        }
+        status.errIfFailureAndReset("testCase '%s'", t.name);
+    }
+}
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/intltest/units_router_test.cpp b/icu4c/source/test/intltest/units_router_test.cpp
new file mode 100644
index 0000000..d43e1c8
--- /dev/null
+++ b/icu4c/source/test/intltest/units_router_test.cpp
@@ -0,0 +1,33 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html#License
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "intltest.h"
+#include "unicode/unistr.h"
+#include "units_router.h"
+
+
+class UnitsRouterTest : public IntlTest {
+  public:
+    UnitsRouterTest() {}
+
+    void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = NULL);
+
+    void testBasic();
+};
+
+extern IntlTest *createUnitsRouterTest() { return new UnitsRouterTest(); }
+
+void UnitsRouterTest::runIndexedTest(int32_t index, UBool exec, const char *&name, char * /*par*/) {
+    if (exec) { logln("TestSuite UnitsRouterTest: "); }
+    TESTCASE_AUTO_BEGIN;
+    TESTCASE_AUTO(testBasic);
+    TESTCASE_AUTO_END;
+}
+
+void UnitsRouterTest::testBasic() { IcuTestErrorCode status(*this, "UnitsRouter testBasic"); }
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/intltest/units_test.cpp b/icu4c/source/test/intltest/units_test.cpp
new file mode 100644
index 0000000..a853dd7
--- /dev/null
+++ b/icu4c/source/test/intltest/units_test.cpp
@@ -0,0 +1,887 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html#License
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include <cmath>
+#include <iostream>
+
+#include "charstr.h"
+#include "cmemory.h"
+#include "filestrm.h"
+#include "intltest.h"
+#include "number_decimalquantity.h"
+#include "putilimp.h"
+#include "unicode/ctest.h"
+#include "unicode/measunit.h"
+#include "unicode/unistr.h"
+#include "unicode/unum.h"
+#include "unicode/ures.h"
+#include "units_complexconverter.h"
+#include "units_converter.h"
+#include "units_data.h"
+#include "units_router.h"
+#include "uparse.h"
+#include "uresimp.h"
+
+struct UnitConversionTestCase {
+    const StringPiece source;
+    const StringPiece target;
+    const double inputValue;
+    const double expectedValue;
+};
+
+using ::icu::number::impl::DecimalQuantity;
+using namespace ::icu::units;
+
+class UnitsTest : public IntlTest {
+  public:
+    UnitsTest() {}
+
+    void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = NULL);
+
+    void testUnitConstantFreshness();
+    void testConversionCapability();
+    void testConversions();
+    void testComplexUnitsConverter();
+    void testComplexUnitConverterSorting();
+    void testPreferences();
+    void testSiPrefixes();
+    void testMass();
+    void testTemperature();
+    void testArea();
+};
+
+extern IntlTest *createUnitsTest() { return new UnitsTest(); }
+
+void UnitsTest::runIndexedTest(int32_t index, UBool exec, const char *&name, char * /*par*/) {
+    if (exec) {
+        logln("TestSuite UnitsTest: ");
+    }
+    TESTCASE_AUTO_BEGIN;
+    TESTCASE_AUTO(testUnitConstantFreshness);
+    TESTCASE_AUTO(testConversionCapability);
+    TESTCASE_AUTO(testConversions);
+    TESTCASE_AUTO(testComplexUnitsConverter);
+    TESTCASE_AUTO(testComplexUnitConverterSorting);
+    TESTCASE_AUTO(testPreferences);
+    TESTCASE_AUTO(testSiPrefixes);
+    TESTCASE_AUTO(testMass);
+    TESTCASE_AUTO(testTemperature);
+    TESTCASE_AUTO(testArea);
+    TESTCASE_AUTO_END;
+}
+
+// Tests the hard-coded constants in the code against constants that appear in
+// units.txt.
+void UnitsTest::testUnitConstantFreshness() {
+    IcuTestErrorCode status(*this, "testUnitConstantFreshness");
+    LocalUResourceBundlePointer unitsBundle(ures_openDirect(NULL, "units", status));
+    LocalUResourceBundlePointer unitConstants(
+        ures_getByKey(unitsBundle.getAlias(), "unitConstants", NULL, status));
+
+    while (ures_hasNext(unitConstants.getAlias())) {
+        int32_t len;
+        const char *constant = NULL;
+        ures_getNextString(unitConstants.getAlias(), &len, &constant, status);
+
+        Factor factor;
+        addSingleFactorConstant(constant, 1, POSITIVE, factor, status);
+        if (status.errDataIfFailureAndReset(
+                "addSingleFactorConstant(<%s>, ...).\n\n"
+                "If U_INVALID_FORMAT_ERROR, please check that \"icu4c/source/i18n/units_converter.cpp\" "
+                "has all constants? Is \"%s\" a new constant?\n",
+                constant, constant)) {
+            continue;
+        }
+
+        // Check the values of constants that have a simple numeric value
+        factor.substituteConstants();
+        int32_t uLen;
+        UnicodeString uVal = ures_getStringByKey(unitConstants.getAlias(), constant, &uLen, status);
+        CharString val;
+        val.appendInvariantChars(uVal, status);
+        if (status.errDataIfFailureAndReset("Failed to get constant value for %s.", constant)) {
+            continue;
+        }
+        DecimalQuantity dqVal;
+        UErrorCode parseStatus = U_ZERO_ERROR;
+        // TODO(units): unify with strToDouble() in units_converter.cpp
+        dqVal.setToDecNumber(val.toStringPiece(), parseStatus);
+        if (!U_SUCCESS(parseStatus)) {
+            // Not simple to parse, skip validating this constant's value. (We
+            // leave catching mistakes to the data-driven integration tests.)
+            continue;
+        }
+        double expectedNumerator = dqVal.toDouble();
+        assertEquals(UnicodeString("Constant ") + constant + u" numerator", expectedNumerator,
+                     factor.factorNum);
+        assertEquals(UnicodeString("Constant ") + constant + u" denominator", 1.0, factor.factorDen);
+    }
+}
+
+void UnitsTest::testConversionCapability() {
+    struct TestCase {
+        const char *const source;
+        const char *const target;
+        const Convertibility expectedState;
+    } testCases[]{
+        {"meter", "foot", CONVERTIBLE},                                              //
+        {"kilometer", "foot", CONVERTIBLE},                                          //
+        {"hectare", "square-foot", CONVERTIBLE},                                     //
+        {"kilometer-per-second", "second-per-meter", RECIPROCAL},                    //
+        {"square-meter", "square-foot", CONVERTIBLE},                                //
+        {"kilometer-per-second", "foot-per-second", CONVERTIBLE},                    //
+        {"square-hectare", "pow4-foot", CONVERTIBLE},                                //
+        {"square-kilometer-per-second", "second-per-square-meter", RECIPROCAL},      //
+        {"cubic-kilometer-per-second-meter", "second-per-square-meter", RECIPROCAL}, //
+    };
+
+    for (const auto &testCase : testCases) {
+        UErrorCode status = U_ZERO_ERROR;
+
+        MeasureUnitImpl source = MeasureUnitImpl::forIdentifier(testCase.source, status);
+        MeasureUnitImpl target = MeasureUnitImpl::forIdentifier(testCase.target, status);
+
+        ConversionRates conversionRates(status);
+        auto convertibility = extractConvertibility(source, target, conversionRates, status);
+
+        assertEquals(UnicodeString("Conversion Capability: ") + testCase.source + " to " +
+                         testCase.target,
+                     testCase.expectedState, convertibility);
+    }
+}
+
+void UnitsTest::testSiPrefixes() {
+    IcuTestErrorCode status(*this, "Units testSiPrefixes");
+    // Test Cases
+    struct TestCase {
+        const char *source;
+        const char *target;
+        const double inputValue;
+        const double expectedValue;
+    } testCases[]{
+        {"gram", "kilogram", 1.0, 0.001},            //
+        {"milligram", "kilogram", 1.0, 0.000001},    //
+        {"microgram", "kilogram", 1.0, 0.000000001}, //
+        {"megagram", "gram", 1.0, 1000000},          //
+        {"megagram", "kilogram", 1.0, 1000},         //
+        {"gigabyte", "byte", 1.0, 1000000000},       //
+        // TODO: Fix `watt` probelms.
+        // {"megawatt", "watt", 1.0, 1000000},          //
+        // {"megawatt", "kilowatt", 1.0, 1000},         //
+    };
+
+    for (const auto &testCase : testCases) {
+        UErrorCode status = U_ZERO_ERROR;
+
+        MeasureUnitImpl source = MeasureUnitImpl::forIdentifier(testCase.source, status);
+        MeasureUnitImpl target = MeasureUnitImpl::forIdentifier(testCase.target, status);
+
+        ConversionRates conversionRates(status);
+        UnitConverter converter(source, target, conversionRates, status);
+
+        assertEqualsNear(UnicodeString("testSiPrefixes: ") + testCase.source + " to " + testCase.target,
+                         testCase.expectedValue, converter.convert(testCase.inputValue),
+                         0.0001 * testCase.expectedValue);
+    }
+}
+
+void UnitsTest::testMass() {
+    IcuTestErrorCode status(*this, "Units testMass");
+
+    // Test Cases
+    struct TestCase {
+        const char *source;
+        const char *target;
+        const double inputValue;
+        const double expectedValue;
+    } testCases[]{
+        {"gram", "kilogram", 1.0, 0.001},      //
+        {"pound", "kilogram", 1.0, 0.453592},  //
+        {"pound", "kilogram", 2.0, 0.907185},  //
+        {"ounce", "pound", 16.0, 1.0},         //
+        {"ounce", "kilogram", 16.0, 0.453592}, //
+        {"ton", "pound", 1.0, 2000},           //
+        {"stone", "pound", 1.0, 14},           //
+        {"stone", "kilogram", 1.0, 6.35029}    //
+    };
+
+    for (const auto &testCase : testCases) {
+        UErrorCode status = U_ZERO_ERROR;
+
+        MeasureUnitImpl source = MeasureUnitImpl::forIdentifier(testCase.source, status);
+        MeasureUnitImpl target = MeasureUnitImpl::forIdentifier(testCase.target, status);
+
+        ConversionRates conversionRates(status);
+        UnitConverter converter(source, target, conversionRates, status);
+
+        assertEqualsNear(UnicodeString("testMass: ") + testCase.source + " to " + testCase.target,
+                         testCase.expectedValue, converter.convert(testCase.inputValue),
+                         0.0001 * testCase.expectedValue);
+    }
+}
+
+void UnitsTest::testTemperature() {
+    IcuTestErrorCode status(*this, "Units testTemperature");
+    // Test Cases
+    struct TestCase {
+        const char *source;
+        const char *target;
+        const double inputValue;
+        const double expectedValue;
+    } testCases[]{
+        {"celsius", "fahrenheit", 0.0, 32.0},   //
+        {"celsius", "fahrenheit", 10.0, 50.0},  //
+        {"fahrenheit", "celsius", 32.0, 0.0},   //
+        {"fahrenheit", "celsius", 89.6, 32},    //
+        {"kelvin", "fahrenheit", 0.0, -459.67}, //
+        {"kelvin", "fahrenheit", 300, 80.33},   //
+        {"kelvin", "celsius", 0.0, -273.15},    //
+        {"kelvin", "celsius", 300.0, 26.85}     //
+    };
+
+    for (const auto &testCase : testCases) {
+        UErrorCode status = U_ZERO_ERROR;
+
+        MeasureUnitImpl source = MeasureUnitImpl::forIdentifier(testCase.source, status);
+        MeasureUnitImpl target = MeasureUnitImpl::forIdentifier(testCase.target, status);
+
+        ConversionRates conversionRates(status);
+        UnitConverter converter(source, target, conversionRates, status);
+
+        assertEqualsNear(UnicodeString("testTemperature: ") + testCase.source + " to " + testCase.target,
+                         testCase.expectedValue, converter.convert(testCase.inputValue),
+                         0.0001 * uprv_fabs(testCase.expectedValue));
+    }
+}
+
+void UnitsTest::testArea() {
+    IcuTestErrorCode status(*this, "Units Area");
+
+    // Test Cases
+    struct TestCase {
+        const char *source;
+        const char *target;
+        const double inputValue;
+        const double expectedValue;
+    } testCases[]{
+        {"square-meter", "square-yard", 10.0, 11.9599},     //
+        {"hectare", "square-yard", 1.0, 11959.9},           //
+        {"square-mile", "square-foot", 0.0001, 2787.84},    //
+        {"hectare", "square-yard", 1.0, 11959.9},           //
+        {"hectare", "square-meter", 1.0, 10000},            //
+        {"hectare", "square-meter", 0.0, 0.0},              //
+        {"square-mile", "square-foot", 0.0001, 2787.84},    //
+        {"square-yard", "square-foot", 10, 90},             //
+        {"square-yard", "square-foot", 0, 0},               //
+        {"square-yard", "square-foot", 0.000001, 0.000009}, //
+        {"square-mile", "square-foot", 0.0, 0.0},           //
+    };
+
+    for (const auto &testCase : testCases) {
+        UErrorCode status = U_ZERO_ERROR;
+
+        MeasureUnitImpl source = MeasureUnitImpl::forIdentifier(testCase.source, status);
+        MeasureUnitImpl target = MeasureUnitImpl::forIdentifier(testCase.target, status);
+
+        ConversionRates conversionRates(status);
+        UnitConverter converter(source, target, conversionRates, status);
+
+        assertEqualsNear(UnicodeString("testArea: ") + testCase.source + " to " + testCase.target,
+                         testCase.expectedValue, converter.convert(testCase.inputValue),
+                         0.0001 * testCase.expectedValue);
+    }
+}
+
+/**
+ * Trims whitespace off of the specified string.
+ * @param field is two pointers pointing at the start and end of the string.
+ * @return A StringPiece with initial and final space characters trimmed off.
+ */
+StringPiece trimField(char *(&field)[2]) {
+    const char *start = field[0];
+    start = u_skipWhitespace(start);
+    if (start >= field[1]) {
+        start = field[1];
+    }
+    const char *end = field[1];
+    while ((start < end) && U_IS_INV_WHITESPACE(*(end - 1))) {
+        end--;
+    }
+    int32_t length = (int32_t)(end - start);
+    return StringPiece(start, length);
+}
+
+// Used for passing context to unitsTestDataLineFn via u_parseDelimitedFile.
+struct UnitsTestContext {
+    // Provides access to UnitsTest methods like logln.
+    UnitsTest *unitsTest;
+    // Conversion rates: does not take ownership.
+    ConversionRates *conversionRates;
+};
+
+/**
+ * Deals with a single data-driven unit test for unit conversions.
+ *
+ * This is a UParseLineFn as required by u_parseDelimitedFile, intended for
+ * parsing unitsTest.txt.
+ *
+ * @param context Must point at a UnitsTestContext struct.
+ * @param fields A list of pointer-pairs, each pair pointing at the start and
+ * end of each field. End pointers are important because these are *not*
+ * null-terminated strings. (Interpreted as a null-terminated string,
+ * fields[0][0] points at the whole line.)
+ * @param fieldCount The number of fields (pointer pairs) passed to the fields
+ * parameter.
+ * @param pErrorCode Receives status.
+ */
+void unitsTestDataLineFn(void *context, char *fields[][2], int32_t fieldCount, UErrorCode *pErrorCode) {
+    if (U_FAILURE(*pErrorCode)) {
+        return;
+    }
+    UnitsTestContext *ctx = (UnitsTestContext *)context;
+    UnitsTest *unitsTest = ctx->unitsTest;
+    (void)fieldCount; // unused UParseLineFn variable
+    IcuTestErrorCode status(*unitsTest, "unitsTestDatalineFn");
+
+    StringPiece quantity = trimField(fields[0]);
+    StringPiece x = trimField(fields[1]);
+    StringPiece y = trimField(fields[2]);
+    StringPiece commentConversionFormula = trimField(fields[3]);
+    StringPiece utf8Expected = trimField(fields[4]);
+
+    UNumberFormat *nf = unum_open(UNUM_DEFAULT, NULL, -1, "en_US", NULL, status);
+    if (status.errIfFailureAndReset("unum_open failed")) {
+        return;
+    }
+    UnicodeString uExpected = UnicodeString::fromUTF8(utf8Expected);
+    double expected = unum_parseDouble(nf, uExpected.getBuffer(), uExpected.length(), 0, status);
+    unum_close(nf);
+    if (status.errIfFailureAndReset("unum_parseDouble(\"%s\") failed", utf8Expected)) {
+        return;
+    }
+
+    CharString sourceIdent(x, status);
+    MeasureUnitImpl sourceUnit = MeasureUnitImpl::forIdentifier(x, status);
+    if (status.errIfFailureAndReset("forIdentifier(\"%.*s\")", x.length(), x.data())) {
+        return;
+    }
+
+    CharString targetIdent(y, status);
+    MeasureUnitImpl targetUnit = MeasureUnitImpl::forIdentifier(y, status);
+    if (status.errIfFailureAndReset("forIdentifier(\"%.*s\")", y.length(), y.data())) {
+        return;
+    }
+
+    unitsTest->logln("Quantity (Category): \"%.*s\", "
+                     "Expected value of \"1000 %.*s in %.*s\": %f, "
+                     "commentConversionFormula: \"%.*s\", ",
+                     quantity.length(), quantity.data(), x.length(), x.data(), y.length(), y.data(),
+                     expected, commentConversionFormula.length(), commentConversionFormula.data());
+
+    // Convertibility:
+    auto convertibility = extractConvertibility(sourceUnit, targetUnit, *ctx->conversionRates, status);
+    if (status.errIfFailureAndReset("extractConvertibility(<%s>, <%s>, ...)",
+                                    sourceIdent.data(), targetIdent.data())) {
+        return;
+    }
+    CharString msg;
+    msg.append("convertible: ", status)
+        .append(sourceIdent.data(), status)
+        .append(" -> ", status)
+        .append(targetIdent.data(), status);
+    if (status.errIfFailureAndReset("msg construction")) {
+        return;
+    }
+    unitsTest->assertNotEquals(msg.data(), UNCONVERTIBLE, convertibility);
+
+    // Conversion:
+    UnitConverter converter(sourceUnit, targetUnit, *ctx->conversionRates, status);
+    if (status.errIfFailureAndReset("constructor: UnitConverter(<%s>, <%s>, status)",
+                                    sourceIdent.data(), targetIdent.data())) {
+        return;
+    }
+    double got = converter.convert(1000);
+    msg.clear();
+    msg.append("Converting 1000 ", status).append(x, status).append(" to ", status).append(y, status);
+    unitsTest->assertEqualsNear(msg.data(), expected, got, 0.0001 * expected);
+    double inverted = converter.convertInverse(got);
+    msg.clear();
+    msg.append("Converting back to ", status).append(x, status).append(" from ", status).append(y, status);
+    unitsTest->assertEqualsNear(msg.data(), 1000, inverted, 0.0001);
+}
+
+/**
+ * Runs data-driven unit tests for unit conversion. It looks for the test cases
+ * in source/test/testdata/cldr/units/unitsTest.txt, which originates in CLDR.
+ */
+void UnitsTest::testConversions() {
+    const char *filename = "unitsTest.txt";
+    const int32_t kNumFields = 5;
+    char *fields[kNumFields][2];
+
+    IcuTestErrorCode errorCode(*this, "UnitsTest::testConversions");
+    const char *sourceTestDataPath = getSourceTestData(errorCode);
+    if (errorCode.errIfFailureAndReset("unable to find the source/test/testdata "
+                                       "folder (getSourceTestData())")) {
+        return;
+    }
+
+    CharString path(sourceTestDataPath, errorCode);
+    path.appendPathPart("cldr/units", errorCode);
+    path.appendPathPart(filename, errorCode);
+
+    ConversionRates rates(errorCode);
+    UnitsTestContext ctx = {this, &rates};
+    u_parseDelimitedFile(path.data(), ';', fields, kNumFields, unitsTestDataLineFn, &ctx, errorCode);
+    if (errorCode.errIfFailureAndReset("error parsing %s: %s\n", path.data(), u_errorName(errorCode))) {
+        return;
+    }
+}
+
+void UnitsTest::testComplexUnitsConverter() {
+    IcuTestErrorCode status(*this, "UnitsTest::testComplexUnitsConverter");
+    ConversionRates rates(status);
+    MeasureUnit input = MeasureUnit::getFoot();
+    MeasureUnit output = MeasureUnit::forIdentifier("foot-and-inch", status);
+    MeasureUnitImpl tempInput, tempOutput;
+    const MeasureUnitImpl &inputImpl = MeasureUnitImpl::forMeasureUnit(input, tempInput, status);
+    const MeasureUnitImpl &outputImpl = MeasureUnitImpl::forMeasureUnit(output, tempOutput, status);
+    auto converter = ComplexUnitsConverter(inputImpl, outputImpl, rates, status);
+
+    // Significantly less than 2.0.
+    MaybeStackVector<Measure> measures = converter.convert(1.9999, nullptr, status);
+    assertEquals("measures length", 2, measures.length());
+    if (2 == measures.length()) {
+        assertEquals("1.9999: measures[0] value", 1.0, measures[0]->getNumber().getDouble(status));
+        assertEquals("1.9999: measures[0] unit", MeasureUnit::getFoot().getIdentifier(),
+                     measures[0]->getUnit().getIdentifier());
+        assertEqualsNear("1.9999: measures[1] value", 11.9988,
+                         measures[1]->getNumber().getDouble(status), 0.0001);
+        assertEquals("1.9999: measures[1] unit", MeasureUnit::getInch().getIdentifier(),
+                     measures[1]->getUnit().getIdentifier());
+    }
+
+    // TODO(icu-units#100): consider factoring out the set of tests to make this function more
+    // data-driven.
+
+    // A minimal nudge under 2.0.
+    measures = converter.convert((2.0 - DBL_EPSILON), nullptr, status);
+    assertEquals("measures length", 2, measures.length());
+    if (2 == measures.length()) {
+        assertEquals("1 - eps: measures[0] value", 2.0, measures[0]->getNumber().getDouble(status));
+        assertEquals("1 - eps: measures[0] unit", MeasureUnit::getFoot().getIdentifier(),
+                     measures[0]->getUnit().getIdentifier());
+        assertEquals("1 - eps: measures[1] value", 0.0, measures[1]->getNumber().getDouble(status));
+        assertEquals("1 - eps: measures[1] unit", MeasureUnit::getInch().getIdentifier(),
+                     measures[1]->getUnit().getIdentifier());
+    }
+
+    // Testing precision with meter and light-year. 1e-16 light years is
+    // 0.946073 meters, and double precision can provide only ~15 decimal
+    // digits, so we don't expect to get anything less than 1 meter.
+
+    // An epsilon's nudge under one light-year: should give 1 ly, 0 m.
+    input = MeasureUnit::getLightYear();
+    output = MeasureUnit::forIdentifier("light-year-and-meter", status);
+    const MeasureUnitImpl &inputImpl3 = MeasureUnitImpl::forMeasureUnit(input, tempInput, status);
+    const MeasureUnitImpl &outputImpl3 = MeasureUnitImpl::forMeasureUnit(output, tempOutput, status);
+    converter = ComplexUnitsConverter(inputImpl3, outputImpl3, rates, status);
+    measures = converter.convert((2.0 - DBL_EPSILON), nullptr, status);
+    assertEquals("measures length", 2, measures.length());
+    if (2 == measures.length()) {
+        assertEquals("light-year test: measures[0] value", 2.0,
+                     measures[0]->getNumber().getDouble(status));
+        assertEquals("light-year test: measures[0] unit", MeasureUnit::getLightYear().getIdentifier(),
+                     measures[0]->getUnit().getIdentifier());
+        assertEquals("light-year test: measures[1] value", 0.0,
+                     measures[1]->getNumber().getDouble(status));
+        assertEquals("light-year test: measures[1] unit", MeasureUnit::getMeter().getIdentifier(),
+                     measures[1]->getUnit().getIdentifier());
+    }
+
+    // 1e-15 light years is 9.46073 meters (calculated using "bc" and the CLDR
+    // conversion factor). With double-precision maths, we get 10.5. In this
+    // case, we're off by almost 1 meter.
+    measures = converter.convert((1.0 + 1e-15), nullptr, status);
+    assertEquals("measures length", 2, measures.length());
+    if (2 == measures.length()) {
+        assertEquals("light-year test: measures[0] value", 1.0,
+                     measures[0]->getNumber().getDouble(status));
+        assertEquals("light-year test: measures[0] unit", MeasureUnit::getLightYear().getIdentifier(),
+                     measures[0]->getUnit().getIdentifier());
+        assertEqualsNear("light-year test: measures[1] value", 10,
+                         measures[1]->getNumber().getDouble(status), 1);
+        assertEquals("light-year test: measures[1] unit", MeasureUnit::getMeter().getIdentifier(),
+                     measures[1]->getUnit().getIdentifier());
+    }
+
+    // 2e-16 light years is 1.892146 meters. We consider this in the noise, and
+    // thus expect a 0. (This test fails when 2e-16 is increased to 4e-16.)
+    measures = converter.convert((1.0 + 2e-16), nullptr, status);
+    assertEquals("measures length", 2, measures.length());
+    if (2 == measures.length()) {
+        assertEquals("light-year test: measures[0] value", 1.0,
+                     measures[0]->getNumber().getDouble(status));
+        assertEquals("light-year test: measures[0] unit", MeasureUnit::getLightYear().getIdentifier(),
+                     measures[0]->getUnit().getIdentifier());
+        assertEquals("light-year test: measures[1] value", 0.0,
+                     measures[1]->getNumber().getDouble(status));
+        assertEquals("light-year test: measures[1] unit", MeasureUnit::getMeter().getIdentifier(),
+                     measures[1]->getUnit().getIdentifier());
+    }
+
+    // TODO(icu-units#63): test negative numbers!
+}
+
+void UnitsTest::testComplexUnitConverterSorting() {
+    IcuTestErrorCode status(*this, "UnitsTest::testComplexUnitConverterSorting");
+
+    MeasureUnitImpl source = MeasureUnitImpl::forIdentifier("meter", status);
+    MeasureUnitImpl target = MeasureUnitImpl::forIdentifier("inch-and-foot", status);
+    ConversionRates conversionRates(status);
+
+    ComplexUnitsConverter complexConverter(source, target, conversionRates, status);
+    auto measures = complexConverter.convert(10.0, nullptr, status);
+
+    if (2 == measures.length()) {
+        assertEquals("inch-and-foot unit 0", "inch", measures[0]->getUnit().getIdentifier());
+        assertEquals("inch-and-foot unit 1", "foot", measures[1]->getUnit().getIdentifier());
+
+        assertEqualsNear("inch-and-foot value 0", 9.7008, measures[0]->getNumber().getDouble(), 0.0001);
+        assertEqualsNear("inch-and-foot value 1", 32, measures[1]->getNumber().getInt64(), 0.00001);
+    }
+}
+
+/**
+ * This class represents the output fields from unitPreferencesTest.txt. Please
+ * see the documentation at the top of that file for details.
+ *
+ * For "mixed units" output, there are more (repeated) output fields. The last
+ * output unit has the expected output specified as both a rational fraction and
+ * a decimal fraction. This class ignores rational fractions, and expects to
+ * find a decimal fraction for each output unit.
+ */
+class ExpectedOutput {
+  public:
+    // Counts number of units in the output. When this is more than one, we have
+    // "mixed units" in the expected output.
+    int _compoundCount = 0;
+
+    // Counts how many fields were skipped: we expect to skip only one per
+    // output unit type (the rational fraction).
+    int _skippedFields = 0;
+
+    // The expected output units: more than one for "mixed units".
+    MeasureUnit _measureUnits[3];
+
+    // The amounts of each of the output units.
+    double _amounts[3];
+
+    /**
+     * Parse an expected output field from the test data file.
+     *
+     * @param output may be a string representation of an integer, a rational
+     * fraction, a decimal fraction, or it may be a unit identifier. Whitespace
+     * should already be trimmed. This function ignores rational fractions,
+     * saving only decimal fractions and their unit identifiers.
+     * @return true if the field was successfully parsed, false if parsing
+     * failed.
+     */
+    void parseOutputField(StringPiece output, UErrorCode &errorCode) {
+        if (U_FAILURE(errorCode)) return;
+        DecimalQuantity dqOutputD;
+
+        dqOutputD.setToDecNumber(output, errorCode);
+        if (U_SUCCESS(errorCode)) {
+            _amounts[_compoundCount] = dqOutputD.toDouble();
+            return;
+        } else if (errorCode == U_DECIMAL_NUMBER_SYNTAX_ERROR) {
+            // Not a decimal fraction, it might be a rational fraction or a unit
+            // identifier: continue.
+            errorCode = U_ZERO_ERROR;
+        } else {
+            // Unexpected error, so we propagate it.
+            return;
+        }
+
+        _measureUnits[_compoundCount] = MeasureUnit::forIdentifier(output, errorCode);
+        if (U_SUCCESS(errorCode)) {
+            _compoundCount++;
+            _skippedFields = 0;
+            return;
+        }
+        _skippedFields++;
+        if (_skippedFields < 2) {
+            // We are happy skipping one field per output unit: we want to skip
+            // rational fraction fields like "11 / 10".
+            errorCode = U_ZERO_ERROR;
+            return;
+        } else {
+            // Propagate the error.
+            return;
+        }
+    }
+
+    /**
+     * Produces an output string for debug purposes.
+     */
+    std::string toDebugString() {
+        std::string result;
+        for (int i = 0; i < _compoundCount; i++) {
+            result += std::to_string(_amounts[i]);
+            result += " ";
+            result += _measureUnits[i].getIdentifier();
+            result += " ";
+        }
+        return result;
+    }
+};
+
+// Checks a vector of Measure instances against ExpectedOutput.
+void checkOutput(UnitsTest *unitsTest, const char *msg, ExpectedOutput expected,
+                 const MaybeStackVector<Measure> &actual, double precision) {
+    IcuTestErrorCode status(*unitsTest, "checkOutput");
+
+    CharString testMessage("Test case \"", status);
+    testMessage.append(msg, status);
+    testMessage.append("\": expected output: ", status);
+    testMessage.append(expected.toDebugString().c_str(), status);
+    testMessage.append(", obtained output:", status);
+    for (int i = 0; i < actual.length(); i++) {
+        testMessage.append(" ", status);
+        testMessage.append(std::to_string(actual[i]->getNumber().getDouble(status)), status);
+        testMessage.append(" ", status);
+        testMessage.appendInvariantChars(actual[i]->getUnit().getIdentifier(), status);
+    }
+    if (!unitsTest->assertEquals(testMessage.data(), expected._compoundCount, actual.length())) {
+        return;
+    };
+    for (int i = 0; i < actual.length(); i++) {
+        double permittedDiff = precision * expected._amounts[i];
+        if (permittedDiff == 0) {
+            // If 0 is expected, still permit a small delta.
+            // TODO: revisit this experimentally chosen value:
+            permittedDiff = 0.00000001;
+        }
+        unitsTest->assertEqualsNear(testMessage.data(), expected._amounts[i],
+                                    actual[i]->getNumber().getDouble(status), permittedDiff);
+    }
+}
+
+/**
+ * Runs a single data-driven unit test for unit preferences.
+ *
+ * This is a UParseLineFn as required by u_parseDelimitedFile, intended for
+ * parsing unitPreferencesTest.txt.
+ */
+void unitPreferencesTestDataLineFn(void *context, char *fields[][2], int32_t fieldCount,
+                                   UErrorCode *pErrorCode) {
+    if (U_FAILURE(*pErrorCode)) return;
+    UnitsTest *unitsTest = (UnitsTest *)context;
+    IcuTestErrorCode status(*unitsTest, "unitPreferencesTestDatalineFn");
+
+    if (!unitsTest->assertTrue(u"unitPreferencesTestDataLineFn expects 9 fields for simple and 11 "
+                               u"fields for compound. Other field counts not yet supported. ",
+                               fieldCount == 9 || fieldCount == 11)) {
+        return;
+    }
+
+    StringPiece quantity = trimField(fields[0]);
+    StringPiece usage = trimField(fields[1]);
+    StringPiece region = trimField(fields[2]);
+    // Unused // StringPiece inputR = trimField(fields[3]);
+    StringPiece inputD = trimField(fields[4]);
+    StringPiece inputUnit = trimField(fields[5]);
+    ExpectedOutput expected;
+    for (int i = 6; i < fieldCount; i++) {
+        expected.parseOutputField(trimField(fields[i]), status);
+    }
+    if (status.errIfFailureAndReset("parsing unitPreferencesTestData.txt test case: %s", fields[0][0])) {
+        return;
+    }
+
+    DecimalQuantity dqInputD;
+    dqInputD.setToDecNumber(inputD, status);
+    if (status.errIfFailureAndReset("parsing decimal quantity: \"%.*s\"", inputD.length(),
+                                    inputD.data())) {
+        return;
+    }
+    double inputAmount = dqInputD.toDouble();
+
+    MeasureUnit inputMeasureUnit = MeasureUnit::forIdentifier(inputUnit, status);
+    if (status.errIfFailureAndReset("forIdentifier(\"%.*s\")", inputUnit.length(), inputUnit.data())) {
+        return;
+    }
+
+    unitsTest->logln("Quantity (Category): \"%.*s\", Usage: \"%.*s\", Region: \"%.*s\", "
+                     "Input: \"%f %s\", Expected Output: %s",
+                     quantity.length(), quantity.data(), usage.length(), usage.data(), region.length(),
+                     region.data(), inputAmount, inputMeasureUnit.getIdentifier(),
+                     expected.toDebugString().c_str());
+
+    if (U_FAILURE(status)) {
+        return;
+    }
+
+    UnitsRouter router(inputMeasureUnit, region, usage, status);
+    if (status.errIfFailureAndReset("UnitsRouter(<%s>, \"%.*s\", \"%.*s\", status)",
+                                    inputMeasureUnit.getIdentifier(), region.length(), region.data(),
+                                    usage.length(), usage.data())) {
+        return;
+    }
+
+    CharString msg(quantity, status);
+    msg.append(" ", status);
+    msg.append(usage, status);
+    msg.append(" ", status);
+    msg.append(region, status);
+    msg.append(" ", status);
+    msg.append(inputD, status);
+    msg.append(" ", status);
+    msg.append(inputMeasureUnit.getIdentifier(), status);
+    if (status.errIfFailureAndReset("Failure before router.route")) {
+        return;
+    }
+    RouteResult routeResult = router.route(inputAmount, nullptr, status);
+    if (status.errIfFailureAndReset("router.route(inputAmount, ...)")) {
+        return;
+    }
+    // TODO: revisit this experimentally chosen precision:
+    checkOutput(unitsTest, msg.data(), expected, routeResult.measures, 0.0000000001);
+}
+
+/**
+ * Parses the format used by unitPreferencesTest.txt, calling lineFn for each
+ * line.
+ *
+ * This is a modified version of u_parseDelimitedFile, customized for
+ * unitPreferencesTest.txt, due to it having a variable number of fields per
+ * line.
+ */
+void parsePreferencesTests(const char *filename, char delimiter, char *fields[][2],
+                           int32_t maxFieldCount, UParseLineFn *lineFn, void *context,
+                           UErrorCode *pErrorCode) {
+    FileStream *file;
+    char line[10000];
+    char *start, *limit;
+    int32_t i;
+
+    if (U_FAILURE(*pErrorCode)) {
+        return;
+    }
+
+    if (fields == NULL || lineFn == NULL || maxFieldCount <= 0) {
+        *pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+
+    if (filename == NULL || *filename == 0 || (*filename == '-' && filename[1] == 0)) {
+        filename = NULL;
+        file = T_FileStream_stdin();
+    } else {
+        file = T_FileStream_open(filename, "r");
+    }
+    if (file == NULL) {
+        *pErrorCode = U_FILE_ACCESS_ERROR;
+        return;
+    }
+
+    while (T_FileStream_readLine(file, line, sizeof(line)) != NULL) {
+        /* remove trailing newline characters */
+        u_rtrim(line);
+
+        start = line;
+        *pErrorCode = U_ZERO_ERROR;
+
+        /* skip this line if it is empty or a comment */
+        if (*start == 0 || *start == '#') {
+            continue;
+        }
+
+        /* remove in-line comments */
+        limit = uprv_strchr(start, '#');
+        if (limit != NULL) {
+            /* get white space before the pound sign */
+            while (limit > start && U_IS_INV_WHITESPACE(*(limit - 1))) {
+                --limit;
+            }
+
+            /* truncate the line */
+            *limit = 0;
+        }
+
+        /* skip lines with only whitespace */
+        if (u_skipWhitespace(start)[0] == 0) {
+            continue;
+        }
+
+        /* for each field, call the corresponding field function */
+        for (i = 0; i < maxFieldCount; ++i) {
+            /* set the limit pointer of this field */
+            limit = start;
+            while (*limit != delimiter && *limit != 0) {
+                ++limit;
+            }
+
+            /* set the field start and limit in the fields array */
+            fields[i][0] = start;
+            fields[i][1] = limit;
+
+            /* set start to the beginning of the next field, if any */
+            start = limit;
+            if (*start != 0) {
+                ++start;
+            } else {
+                break;
+            }
+        }
+        if (i == maxFieldCount) {
+            *pErrorCode = U_PARSE_ERROR;
+        }
+        int fieldCount = i + 1;
+
+        /* call the field function */
+        lineFn(context, fields, fieldCount, pErrorCode);
+        if (U_FAILURE(*pErrorCode)) {
+            break;
+        }
+    }
+
+    if (filename != NULL) {
+        T_FileStream_close(file);
+    }
+}
+
+/**
+ * Runs data-driven unit tests for unit preferences. It looks for the test cases
+ * in source/test/testdata/cldr/units/unitPreferencesTest.txt, which originates
+ * in CLDR.
+ */
+void UnitsTest::testPreferences() {
+    const char *filename = "unitPreferencesTest.txt";
+    const int32_t maxFields = 11;
+    char *fields[maxFields][2];
+
+    IcuTestErrorCode errorCode(*this, "UnitsTest::testPreferences");
+    const char *sourceTestDataPath = getSourceTestData(errorCode);
+    if (errorCode.errIfFailureAndReset("unable to find the source/test/testdata "
+                                       "folder (getSourceTestData())")) {
+        return;
+    }
+
+    CharString path(sourceTestDataPath, errorCode);
+    path.appendPathPart("cldr/units", errorCode);
+    path.appendPathPart(filename, errorCode);
+
+    parsePreferencesTests(path.data(), ';', fields, maxFields, unitPreferencesTestDataLineFn, this,
+                          errorCode);
+    if (errorCode.errIfFailureAndReset("error parsing %s: %s\n", path.data(), u_errorName(errorCode))) {
+        return;
+    }
+}
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/intltest/uobjtest.cpp b/icu4c/source/test/intltest/uobjtest.cpp
index 3c4abb0..6b6a02c 100644
--- a/icu4c/source/test/intltest/uobjtest.cpp
+++ b/icu4c/source/test/intltest/uobjtest.cpp
@@ -276,7 +276,6 @@
 #include "unicode/msgfmt.h"
 #include "unicode/normlzr.h"
 #include "unicode/normalizer2.h"
-#include "unicode/nounit.h"
 #include "unicode/numfmt.h"
 #include "unicode/parsepos.h"
 #include "unicode/plurrule.h"
@@ -373,7 +372,6 @@
     TESTCLASSID_DEFAULT(Formattable);
 
     TESTCLASSID_FACTORY(MeasureUnit, MeasureUnit::createMeter(status));
-    TESTCLASSID_FACTORY(NoUnit, NoUnit::percent().clone());
     TESTCLASSID_FACTORY(TimeUnit, TimeUnit::createInstance(TimeUnit::UTIMEUNIT_YEAR, status));
     static const UChar SMALL_STR[] = u"QQQ";
     TESTCLASSID_CTOR(CurrencyAmount, (1.0, SMALL_STR, status));
diff --git a/icu4c/source/test/intltest/uts46test.cpp b/icu4c/source/test/intltest/uts46test.cpp
index b399d2d..9f80466 100644
--- a/icu4c/source/test/intltest/uts46test.cpp
+++ b/icu4c/source/test/intltest/uts46test.cpp
@@ -29,6 +29,7 @@
 #include "charstr.h"
 #include "cmemory.h"
 #include "intltest.h"
+#include "punycode.h"
 #include "uparse.h"
 
 class UTS46Test : public IntlTest {
@@ -39,6 +40,9 @@
     void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=NULL);
     void TestAPI();
     void TestNotSTD3();
+    void TestInvalidPunycodeDigits();
+    void TestACELabelEdgeCases();
+    void TestTooLong();
     void TestSomeCases();
     void IdnaTest();
 
@@ -82,6 +86,9 @@
     TESTCASE_AUTO_BEGIN;
     TESTCASE_AUTO(TestAPI);
     TESTCASE_AUTO(TestNotSTD3);
+    TESTCASE_AUTO(TestInvalidPunycodeDigits);
+    TESTCASE_AUTO(TestACELabelEdgeCases);
+    TESTCASE_AUTO(TestTooLong);
     TESTCASE_AUTO(TestSomeCases);
     TESTCASE_AUTO(IdnaTest);
     TESTCASE_AUTO_END;
@@ -245,6 +252,114 @@
     }
 }
 
+void UTS46Test::TestInvalidPunycodeDigits() {
+    IcuTestErrorCode errorCode(*this, "TestInvalidPunycodeDigits()");
+    LocalPointer<IDNA> idna(IDNA::createUTS46Instance(0, errorCode));
+    if(errorCode.isFailure()) {
+        return;
+    }
+    UnicodeString result;
+    {
+        IDNAInfo info;
+        idna->nameToUnicode(u"xn--pleP", result, info, errorCode);  // P=U+0050
+        assertFalse("nameToUnicode() should succeed",
+                    (info.getErrors()&UIDNA_ERROR_PUNYCODE)!=0);
+        assertEquals("normal result", u"ᔼᔴ", result);
+    }
+    {
+        IDNAInfo info;
+        idna->nameToUnicode(u"xn--pleѐ", result, info, errorCode);  // ends with non-ASCII U+0450
+        assertTrue("nameToUnicode() should detect non-ASCII",
+                   (info.getErrors()&UIDNA_ERROR_PUNYCODE)!=0);
+    }
+
+    // Test with ASCII characters adjacent to LDH.
+    {
+        IDNAInfo info;
+        idna->nameToUnicode(u"xn--ple/", result, info, errorCode);
+        assertTrue("nameToUnicode() should detect '/'",
+                   (info.getErrors()&UIDNA_ERROR_PUNYCODE)!=0);
+    }
+
+    {
+        IDNAInfo info;
+        idna->nameToUnicode(u"xn--ple:", result, info, errorCode);
+        assertTrue("nameToUnicode() should detect ':'",
+                   (info.getErrors()&UIDNA_ERROR_PUNYCODE)!=0);
+    }
+
+    {
+        IDNAInfo info;
+        idna->nameToUnicode(u"xn--ple@", result, info, errorCode);
+        assertTrue("nameToUnicode() should detect '@'",
+                   (info.getErrors()&UIDNA_ERROR_PUNYCODE)!=0);
+    }
+
+    {
+        IDNAInfo info;
+        idna->nameToUnicode(u"xn--ple[", result, info, errorCode);
+        assertTrue("nameToUnicode() should detect '['",
+                   (info.getErrors()&UIDNA_ERROR_PUNYCODE)!=0);
+    }
+
+    {
+        IDNAInfo info;
+        idna->nameToUnicode(u"xn--ple`", result, info, errorCode);
+        assertTrue("nameToUnicode() should detect '`'",
+                   (info.getErrors()&UIDNA_ERROR_PUNYCODE)!=0);
+    }
+
+    {
+        IDNAInfo info;
+        idna->nameToUnicode(u"xn--ple{", result, info, errorCode);
+        assertTrue("nameToUnicode() should detect '{'",
+                   (info.getErrors()&UIDNA_ERROR_PUNYCODE)!=0);
+    }
+}
+
+void UTS46Test::TestACELabelEdgeCases() {
+    // In IDNA2008, these labels fail the round-trip validation from comparing
+    // the ToUnicode input with the back-to-ToASCII output.
+    IcuTestErrorCode errorCode(*this, "TestACELabelEdgeCases()");
+    LocalPointer<IDNA> idna(IDNA::createUTS46Instance(0, errorCode));
+    if(errorCode.isFailure()) {
+        return;
+    }
+    UnicodeString result;
+    {
+        IDNAInfo info;
+        idna->labelToUnicode(u"xn--", result, info, errorCode);
+        assertTrue("empty xn--", (info.getErrors()&UIDNA_ERROR_INVALID_ACE_LABEL)!=0);
+    }
+    {
+        IDNAInfo info;
+        idna->labelToUnicode(u"xN--ASCII-", result, info, errorCode);
+        assertTrue("nothing but ASCII", (info.getErrors()&UIDNA_ERROR_INVALID_ACE_LABEL)!=0);
+    }
+    {
+        // Different error: The Punycode decoding procedure does not consume the last delimiter
+        // if it is right after the xn-- so the main decoding loop fails because the hyphen
+        // is not a valid Punycode digit.
+        IDNAInfo info;
+        idna->labelToUnicode(u"Xn---", result, info, errorCode);
+        assertTrue("empty Xn---", (info.getErrors()&UIDNA_ERROR_PUNYCODE)!=0);
+    }
+}
+
+void UTS46Test::TestTooLong() {
+    // ICU-13727: Limit input length for n^2 algorithm
+    // where well-formed strings are at most 59 characters long.
+    int32_t count = 50000;
+    UnicodeString s(count, u'a', count);  // capacity, code point, count
+    char16_t dest[60000];
+    UErrorCode errorCode = U_ZERO_ERROR;
+    u_strToPunycode(s.getBuffer(), s.length(), dest, UPRV_LENGTHOF(dest), nullptr, &errorCode);
+    assertEquals("encode: expected an error for too-long input", U_INPUT_TOO_LONG_ERROR, errorCode);
+    errorCode = U_ZERO_ERROR;
+    u_strFromPunycode(s.getBuffer(), s.length(), dest, UPRV_LENGTHOF(dest), nullptr, &errorCode);
+    assertEquals("decode: expected an error for too-long input", U_INPUT_TOO_LONG_ERROR, errorCode);
+}
+
 struct TestCase {
     // Input string and options string (Nontransitional/Transitional/Both).
     const char *s, *o;
@@ -491,13 +606,13 @@
       UIDNA_ERROR_EMPTY_LABEL|UIDNA_ERROR_LEADING_HYPHEN|UIDNA_ERROR_TRAILING_HYPHEN|
       UIDNA_ERROR_HYPHEN_3_4 },
     { "a..c", "B", "a..c", UIDNA_ERROR_EMPTY_LABEL },
-    { "a.xn--.c", "B", "a..c", UIDNA_ERROR_EMPTY_LABEL },
+    { "a.xn--.c", "B", "a.xn--\\uFFFD.c", UIDNA_ERROR_INVALID_ACE_LABEL },
     { "a.-b.", "B", "a.-b.", UIDNA_ERROR_LEADING_HYPHEN },
     { "a.b-.c", "B", "a.b-.c", UIDNA_ERROR_TRAILING_HYPHEN },
     { "a.-.c", "B", "a.-.c", UIDNA_ERROR_LEADING_HYPHEN|UIDNA_ERROR_TRAILING_HYPHEN },
     { "a.bc--de.f", "B", "a.bc--de.f", UIDNA_ERROR_HYPHEN_3_4 },
     { "\\u00E4.\\u00AD.c", "B", "\\u00E4..c", UIDNA_ERROR_EMPTY_LABEL },
-    { "\\u00E4.xn--.c", "B", "\\u00E4..c", UIDNA_ERROR_EMPTY_LABEL },
+    { "\\u00E4.xn--.c", "B", "\\u00E4.xn--\\uFFFD.c", UIDNA_ERROR_INVALID_ACE_LABEL },
     { "\\u00E4.-b.", "B", "\\u00E4.-b.", UIDNA_ERROR_LEADING_HYPHEN },
     { "\\u00E4.b-.c", "B", "\\u00E4.b-.c", UIDNA_ERROR_TRAILING_HYPHEN },
     { "\\u00E4.-.c", "B", "\\u00E4.-.c", UIDNA_ERROR_LEADING_HYPHEN|UIDNA_ERROR_TRAILING_HYPHEN },
diff --git a/icu4c/source/test/iotest/filetst.c b/icu4c/source/test/iotest/filetst.c
index e074b90..7215c7d 100644
--- a/icu4c/source/test/iotest/filetst.c
+++ b/icu4c/source/test/iotest/filetst.c
@@ -15,6 +15,7 @@
  */
 
 #include "cmemory.h"
+#include "cstring.h"
 #include "iotest.h"
 #include "unicode/ustdio.h"
 #include "unicode/ustring.h"
@@ -27,9 +28,18 @@
 
 const char *STANDARD_TEST_LOCALE = "en_US_POSIX";
 
+const char *MEDIUMNAME_TEST_FILE =
+"iotest_medium_filename_4567_30_234567_40_234567_50_234567_60_234567_70_234567_80_234567_90_23456_100"
+"_23456_110_23456_120.txt"; // 124 chars
+
+const char *LONGNAME_TEST_FILE =
+"iotest_long_filename_234567_30_234567_40_234567_50_234567_60_234567_70_234567_80_234567_90_23456_100"
+"_23456_110_23456_120_23456_130_23456_140_23456_150_23456_160_23456_170_23456_180_23456_190_23456_200"
+"_23456_210_23456_220_23456_230_23456_240_23456_250_23456_260.txt"; // 264 chars, may  be too long on some filesystems
+
 
 #if !UCONFIG_NO_FORMATTING
-static void TestFileFromICU(UFILE *myFile) {
+static void TestFileFromICU(UFILE *myFile, const char* description) {
     int32_t n[1];
     float myFloat = -1234.0;
     int32_t newValuePtr[1];
@@ -48,7 +58,11 @@
     memset(testBuf, '*', UPRV_LENGTHOF(testBuf));
 
     if (myFile == NULL) {
-        log_err("Can't write test file.\n");
+        if (uprv_strstr(description, "ULONGNAME")) {
+            log_info("Can't %s test file, OK.\n", description);
+        } else {
+            log_err("Can't %s test file.\n", description);
+        }
         return;
     }
 
@@ -314,10 +328,24 @@
     u_fclose(myFile);
 }
 
+enum { kUFilenameBufLen = 296 };
 static void TestFile(void) {
+    
+    UChar ufilename[kUFilenameBufLen + 1]; // +1 for guaranteed 0 termination
+    ufilename[kUFilenameBufLen] = 0; // ensure 0 termination
+ 
+    log_verbose("Testing u_fopen with STANDARD_TEST_FILE\n");
+    TestFileFromICU(u_fopen(STANDARD_TEST_FILE, "w", STANDARD_TEST_LOCALE, NULL), "u_fopen STANDARD");
 
-    log_verbose("Testing u_fopen\n");
-    TestFileFromICU(u_fopen(STANDARD_TEST_FILE, "w", STANDARD_TEST_LOCALE, NULL));
+    u_uastrncpy(ufilename, MEDIUMNAME_TEST_FILE, kUFilenameBufLen); 
+    log_verbose("Testing u_fopen_u with UMEDIUMNAME_TEST_FILE\n");
+    TestFileFromICU(u_fopen_u(ufilename, "w", STANDARD_TEST_LOCALE, NULL), "u_fopen_u UMEDIUMNAME");
+
+    // The following u_fopen_u will fail to open a file on many filesystems (name too long)
+    // but we want to make sure that at least we do not crash in u_fopen_u name conversion.
+    u_uastrncpy(ufilename, LONGNAME_TEST_FILE, kUFilenameBufLen); 
+    log_verbose("Testing u_fopen_u with ULONGNAME_TEST_FILE\n");
+    TestFileFromICU(u_fopen_u(ufilename, "w", STANDARD_TEST_LOCALE, NULL), "u_fopen_u ULONGNAME");
 }
 
 static void TestFinit(void) {
@@ -325,7 +353,7 @@
 
     log_verbose("Testing u_finit\n");
     standardFile = fopen(STANDARD_TEST_FILE, "w");
-    TestFileFromICU(u_finit(standardFile, STANDARD_TEST_LOCALE, NULL));
+    TestFileFromICU(u_finit(standardFile, STANDARD_TEST_LOCALE, NULL), "u_finit STANDARD");
     fclose(standardFile);
 }
 
@@ -334,7 +362,7 @@
 
     log_verbose("Testing u_fadopt\n");
     standardFile = fopen(STANDARD_TEST_FILE, "w");
-    TestFileFromICU(u_fadopt(standardFile, STANDARD_TEST_LOCALE, NULL));
+    TestFileFromICU(u_fadopt(standardFile, STANDARD_TEST_LOCALE, NULL), "u_fadopt STANDARD");
 }
 #endif
 
diff --git a/icu4c/source/test/iotest/iotest.cpp b/icu4c/source/test/iotest/iotest.cpp
index f98e232..e017c32 100644
--- a/icu4c/source/test/iotest/iotest.cpp
+++ b/icu4c/source/test/iotest/iotest.cpp
@@ -360,6 +360,43 @@
 U_CDECL_END
 
 U_CDECL_BEGIN
+static void U_CALLCONV ScanfMultipleIntegers(void)
+{
+#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_FILE_IO
+    UnicodeString input = UNICODE_STRING("[1.2.3]", 7);
+    UnicodeString fmt = UNICODE_STRING("[%d.%d.%d]", 10);
+    DataDrivenLogger logger;
+
+    const int32_t expectedFirst = 1;
+    const int32_t expectedSecond = 2;
+    const int32_t expectedThird = 3;
+    const int32_t expectedResult = 3;
+    int32_t first = 0;
+    int32_t second = 0;
+    int32_t third = 0;
+    int32_t result = u_sscanf_u(input.getBuffer(), fmt.getBuffer(), &first, &second, &third);
+
+    if(first != expectedFirst){
+        log_err("error in scanfmultipleintegers test 'first' Got: %d Exp: %d\n", 
+                first, expectedFirst);
+    }
+    if(second != expectedSecond){
+        log_err("error in scanfmultipleintegers test 'second' Got: %d Exp: %d\n",
+                second, expectedSecond);
+    }
+    if(third != expectedThird){
+        log_err("error in scanfmultipleintegers test 'third' Got: %d Exp: %d\n",
+                third, expectedThird);
+    }
+    if(result != expectedResult){
+        log_err("error in scanfmultipleintegers test 'result'  Got: %d Exp: %d\n",
+                result, expectedResult);
+    }
+#endif
+}
+U_CDECL_END
+
+U_CDECL_BEGIN
 static void U_CALLCONV DataDrivenScanf(void)
 {
 #if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_FILE_IO
@@ -697,6 +734,7 @@
     addTest(root, &DataDrivenPrintf, "datadriv/DataDrivenPrintf");
     addTest(root, &DataDrivenPrintfPrecision, "datadriv/DataDrivenPrintfPrecision");
     addTest(root, &DataDrivenScanf, "datadriv/DataDrivenScanf");
+    addTest(root, &ScanfMultipleIntegers, "ScanfMultipleIntegers");
 #endif
     addStreamTests(root);
 }
@@ -780,15 +818,20 @@
     nerrors = runTestRequest(root, argc, argv);
 
 #if 1
+    static const char* filenamesToRemove[] = { STANDARD_TEST_FILE, MEDIUMNAME_TEST_FILE, LONGNAME_TEST_FILE, nullptr };
+    const char** filenamesToRemovePtr = filenamesToRemove;
+    const char* filenameToRemove;
+    while ((filenameToRemove = *filenamesToRemovePtr++) != nullptr)
     {
-        FILE* fileToRemove = fopen(STANDARD_TEST_FILE, "r");
+
+        FILE* fileToRemove = fopen(filenameToRemove, "r");
         /* This should delete any temporary files. */
         if (fileToRemove) {
             fclose(fileToRemove);
-            log_verbose("Deleting: %s\n", STANDARD_TEST_FILE);
-            if (remove(STANDARD_TEST_FILE) != 0) {
+            log_verbose("Deleting: %s\n", filenameToRemove);
+            if (remove(filenameToRemove) != 0) {
                 /* Maybe someone didn't close the file correctly. */
-                fprintf(stderr, "FAIL: Could not delete %s\n", STANDARD_TEST_FILE);
+                fprintf(stderr, "FAIL: Could not delete %s\n", filenameToRemove);
                 nerrors += 1;
             }
         }
diff --git a/icu4c/source/test/iotest/iotest.h b/icu4c/source/test/iotest/iotest.h
index 514575e..d9840d7 100644
--- a/icu4c/source/test/iotest/iotest.h
+++ b/icu4c/source/test/iotest/iotest.h
@@ -36,6 +36,8 @@
 extern const UChar NEW_LINE[];
 extern const char C_NEW_LINE[];
 extern const char *STANDARD_TEST_FILE;
+extern const char *MEDIUMNAME_TEST_FILE;
+extern const char *LONGNAME_TEST_FILE;
 U_CDECL_END
 
 #define STANDARD_TEST_NUM_RANGE 1000
diff --git a/icu4c/source/test/iotest/iotest.vcxproj b/icu4c/source/test/iotest/iotest.vcxproj
index 4de4540..7ed7342 100644
--- a/icu4c/source/test/iotest/iotest.vcxproj
+++ b/icu4c/source/test/iotest/iotest.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/test/letest/gendata.vcxproj b/icu4c/source/test/letest/gendata.vcxproj
index 5a0b943..f29232b 100644
--- a/icu4c/source/test/letest/gendata.vcxproj
+++ b/icu4c/source/test/letest/gendata.vcxproj
@@ -49,22 +49,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/test/letest/letest.vcxproj b/icu4c/source/test/letest/letest.vcxproj
index e2a5499..5936d5e 100644
--- a/icu4c/source/test/letest/letest.vcxproj
+++ b/icu4c/source/test/letest/letest.vcxproj
@@ -49,22 +49,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/test/perf/DateFmtPerf/DateFmtPerf.cpp b/icu4c/source/test/perf/DateFmtPerf/DateFmtPerf.cpp
index d0a7295..facb39a 100644
--- a/icu4c/source/test/perf/DateFmtPerf/DateFmtPerf.cpp
+++ b/icu4c/source/test/perf/DateFmtPerf/DateFmtPerf.cpp
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 ***********************************************************************
 * Copyright (c) 2002-2014,International Business Machines
diff --git a/icu4c/source/test/perf/DateFmtPerf/DateFmtPerf.h b/icu4c/source/test/perf/DateFmtPerf/DateFmtPerf.h
index b07a7e0..0dd6ec9 100644
--- a/icu4c/source/test/perf/DateFmtPerf/DateFmtPerf.h
+++ b/icu4c/source/test/perf/DateFmtPerf/DateFmtPerf.h
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 ***********************************************************************
 * Copyright (c) 2002-2016,International Business Machines
diff --git a/icu4c/source/test/perf/DateFmtPerf/Makefile.in b/icu4c/source/test/perf/DateFmtPerf/Makefile.in
index d216155..8ec0152 100644
--- a/icu4c/source/test/perf/DateFmtPerf/Makefile.in
+++ b/icu4c/source/test/perf/DateFmtPerf/Makefile.in
@@ -1,6 +1,6 @@
 ## Makefile.in for ICU - test/perf/ubrkperf
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 2001-2011, International Business Machines Corporation and
 ## others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/DateFmtPerf/ReadMe.txt b/icu4c/source/test/perf/DateFmtPerf/ReadMe.txt
index 968c85b..b73f708 100644
--- a/icu4c/source/test/perf/DateFmtPerf/ReadMe.txt
+++ b/icu4c/source/test/perf/DateFmtPerf/ReadMe.txt
@@ -1,6 +1,6 @@
 ***********************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 ***********************************************************************
 * Copyright (c) 2002-2010,International Business Machines
diff --git a/icu4c/source/test/perf/DateFmtPerf/breakdata.h b/icu4c/source/test/perf/DateFmtPerf/breakdata.h
index f94f314..1dce508 100644
--- a/icu4c/source/test/perf/DateFmtPerf/breakdata.h
+++ b/icu4c/source/test/perf/DateFmtPerf/breakdata.h
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 ***********************************************************************
 * Copyright (c) 2002-2010,International Business Machines
diff --git a/icu4c/source/test/perf/DateFmtPerf/collationdata.h b/icu4c/source/test/perf/DateFmtPerf/collationdata.h
index 82304db..406aedc 100644
--- a/icu4c/source/test/perf/DateFmtPerf/collationdata.h
+++ b/icu4c/source/test/perf/DateFmtPerf/collationdata.h
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 ***********************************************************************
 * Copyright (c) 2002-2010,International Business Machines
diff --git a/icu4c/source/test/perf/DateFmtPerf/datedata.h b/icu4c/source/test/perf/DateFmtPerf/datedata.h
index e30fdc7..d1f290d 100644
--- a/icu4c/source/test/perf/DateFmtPerf/datedata.h
+++ b/icu4c/source/test/perf/DateFmtPerf/datedata.h
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 ***********************************************************************
 * Copyright (c) 2002-2010,International Business Machines
diff --git a/icu4c/source/test/perf/Makefile.in b/icu4c/source/test/perf/Makefile.in
index faef51a..cb7c2f1 100644
--- a/icu4c/source/test/perf/Makefile.in
+++ b/icu4c/source/test/perf/Makefile.in
@@ -1,7 +1,7 @@
 ## Makefile.in for ICU tests
 ##
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 1999-2011, International Business Machines Corporation and
 ## others. All Rights Reserved.
@@ -22,7 +22,7 @@
 ## Files to remove for 'make clean'
 CLEANFILES = *~
 
-SUBDIRS = collationperf collperf collperf2 charperf dicttrieperf normperf ubrkperf unisetperf usetperf ustrperf utfperf utrie2perf DateFmtPerf howExpensiveIs
+SUBDIRS = collationperf collperf collperf2 charperf dicttrieperf localecanperf normperf ubrkperf unisetperf usetperf ustrperf utfperf utrie2perf DateFmtPerf howExpensiveIs
 
 # Subdirs that support 'xperf'
 XSUBDIRS = DateFmtPerf
diff --git a/icu4c/source/test/perf/README b/icu4c/source/test/perf/README
index aaf0d3b..75c5cda 100644
--- a/icu4c/source/test/perf/README
+++ b/icu4c/source/test/perf/README
@@ -1,5 +1,5 @@
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (C) 2008-2013, International Business Machines
 Corporation and others.  All Rights Reserved.
diff --git a/icu4c/source/test/perf/charperf/CharPerf.pl b/icu4c/source/test/perf/charperf/CharPerf.pl
index 822d269..2cab9a3 100755
--- a/icu4c/source/test/perf/charperf/CharPerf.pl
+++ b/icu4c/source/test/perf/charperf/CharPerf.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/charperf/CharPerf_r.pl b/icu4c/source/test/perf/charperf/CharPerf_r.pl
index 85fecda..c567813 100755
--- a/icu4c/source/test/perf/charperf/CharPerf_r.pl
+++ b/icu4c/source/test/perf/charperf/CharPerf_r.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/charperf/Makefile.in b/icu4c/source/test/perf/charperf/Makefile.in
index a40e517..d755c19 100644
--- a/icu4c/source/test/perf/charperf/Makefile.in
+++ b/icu4c/source/test/perf/charperf/Makefile.in
@@ -1,6 +1,6 @@
 ## Makefile.in for ICU - test/perf/charperf
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 2001-2011, International Business Machines Corporation and
 ## others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/charperf/charperf.cpp b/icu4c/source/test/perf/charperf/charperf.cpp
index a1dda4a..6fc576c 100644
--- a/icu4c/source/test/perf/charperf/charperf.cpp
+++ b/icu4c/source/test/perf/charperf/charperf.cpp
@@ -1,6 +1,6 @@
 /***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/charperf/charperf.h b/icu4c/source/test/perf/charperf/charperf.h
index ab794b6..bb93c07 100644
--- a/icu4c/source/test/perf/charperf/charperf.h
+++ b/icu4c/source/test/perf/charperf/charperf.h
@@ -1,7 +1,7 @@
 /*
 **********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 **********************************************************************
 **********************************************************************
 * Copyright (c) 2002-2006, International Business Machines
diff --git a/icu4c/source/test/perf/charperf/charperf.vcxproj b/icu4c/source/test/perf/charperf/charperf.vcxproj
index 1128037..a2b4382 100644
--- a/icu4c/source/test/perf/charperf/charperf.vcxproj
+++ b/icu4c/source/test/perf/charperf/charperf.vcxproj
@@ -47,22 +47,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/test/perf/collationperf/CollPerf.pl b/icu4c/source/test/perf/collationperf/CollPerf.pl
index 3e11d21..ad7db50 100755
--- a/icu4c/source/test/perf/collationperf/CollPerf.pl
+++ b/icu4c/source/test/perf/collationperf/CollPerf.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  * COPYRIGHT:
 #  * Copyright (c) 2002-2013, International Business Machines Corporation and
diff --git a/icu4c/source/test/perf/collationperf/Makefile.in b/icu4c/source/test/perf/collationperf/Makefile.in
index 13ec1a7..a19f1ea 100644
--- a/icu4c/source/test/perf/collationperf/Makefile.in
+++ b/icu4c/source/test/perf/collationperf/Makefile.in
@@ -1,6 +1,6 @@
 ## Makefile.in for ICU - test/perf/collationperf
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 2001-2011, International Business Machines Corporation and
 ## others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/collationperf/collperf.cpp b/icu4c/source/test/perf/collationperf/collperf.cpp
index 33e3e6c..a1d8556 100644
--- a/icu4c/source/test/perf/collationperf/collperf.cpp
+++ b/icu4c/source/test/perf/collationperf/collperf.cpp
@@ -1,6 +1,6 @@
 /***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * COPYRIGHT:
@@ -110,31 +110,31 @@
 const char * opt_locale     = "en_US";
 int    opt_langid     = 0;         // Defaults to value corresponding to opt_locale.
 char * opt_rules      = 0;
-UBool  opt_help       = FALSE;
+UBool  opt_help       = false;
 int    opt_loopCount  = 1;
 int    opt_iLoopCount = 1;
-UBool  opt_terse      = FALSE;
-UBool  opt_qsort      = FALSE;
-UBool  opt_binsearch  = FALSE;
-UBool  opt_icu        = TRUE;
-UBool  opt_win        = FALSE;      // Run with Windows native functions.
-UBool  opt_unix       = FALSE;      // Run with UNIX strcoll, strxfrm functions.
-UBool  opt_uselen     = FALSE;
-UBool  opt_usekeys    = FALSE;
-UBool  opt_strcmp     = FALSE;
-UBool  opt_strcmpCPO  = FALSE;
-UBool  opt_norm       = FALSE;
-UBool  opt_keygen     = FALSE;
-UBool  opt_french     = FALSE;
-UBool  opt_frenchoff  = FALSE;
-UBool  opt_shifted    = FALSE;
-UBool  opt_lower      = FALSE;
-UBool  opt_upper      = FALSE;
-UBool  opt_case       = FALSE;
+UBool  opt_terse      = false;
+UBool  opt_qsort      = false;
+UBool  opt_binsearch  = false;
+UBool  opt_icu        = true;
+UBool  opt_win        = false;      // Run with Windows native functions.
+UBool  opt_unix       = false;      // Run with UNIX strcoll, strxfrm functions.
+UBool  opt_uselen     = false;
+UBool  opt_usekeys    = false;
+UBool  opt_strcmp     = false;
+UBool  opt_strcmpCPO  = false;
+UBool  opt_norm       = false;
+UBool  opt_keygen     = false;
+UBool  opt_french     = false;
+UBool  opt_frenchoff  = false;
+UBool  opt_shifted    = false;
+UBool  opt_lower      = false;
+UBool  opt_upper      = false;
+UBool  opt_case       = false;
 int    opt_level      = 0;
-UBool  opt_keyhist    = FALSE;
-UBool  opt_itertest   = FALSE;
-UBool  opt_dump       = FALSE;
+UBool  opt_keyhist    = false;
+UBool  opt_itertest   = false;
+UBool  opt_dump       = false;
 
 
 
@@ -233,13 +233,13 @@
             if (strcmp(pOpt->name, pArgName) == 0) {
                 switch (pOpt->type) {
                 case OptSpec::FLAG:
-                    *(UBool *)(pOpt->pVar) = TRUE;
+                    *(UBool *)(pOpt->pVar) = true;
                     break;
                 case OptSpec::STRING:
                     argNum ++;
                     if (argNum >= argc) {
                         fprintf(stderr, "value expected for \"%s\" option.\n", pOpt->name);
-                        return FALSE;
+                        return false;
                     }
                     *(const char **)(pOpt->pVar)  = argv[argNum];
                     break;
@@ -247,13 +247,13 @@
                     argNum ++;
                     if (argNum >= argc) {
                         fprintf(stderr, "value expected for \"%s\" option.\n", pOpt->name);
-                        return FALSE;
+                        return false;
                     }
                     char *endp;
                     i = strtol(argv[argNum], &endp, 0);
                     if (endp == argv[argNum]) {
                         fprintf(stderr, "integer value expected for \"%s\" option.\n", pOpt->name);
-                        return FALSE;
+                        return false;
                     }
                     *(int *)(pOpt->pVar) = i;
                 }
@@ -263,10 +263,10 @@
         if (pOpt->name == 0)
         {
             fprintf(stderr, "Unrecognized option \"%s\"\n", pArgName);
-            return FALSE;
+            return false;
         }
     }
-return TRUE;
+return true;
 }
 
 //---------------------------------------------------------------------------------------
@@ -425,7 +425,7 @@
     unsigned long elapsedTime = timeGetTime() - startTime;
     int ns = (int)(float(1000000) * (float)elapsedTime / (float)(adj_loopCount*gNumFileLines));
 
-    if (opt_terse == FALSE) {
+    if (opt_terse == false) {
         printf("Sort Key Generation:  total # of keys = %d\n", loops*gNumFileLines);
         printf("Sort Key Generation:  time per key = %d ns\n", ns);
     }
@@ -448,7 +448,7 @@
         }
 
     }
-    if (opt_terse == FALSE) {
+    if (opt_terse == false) {
         printf("Key Length / character = %f\n", (float)totalKeyLen / (float)totalChars);
     } else {
         printf("%f, ", (float)totalKeyLen / (float)totalChars);
@@ -610,7 +610,7 @@
                                 r = CompareStringW(gWinLCID, 0, (gSortedLines[line])->name, lineLen, (gSortedLines[guess])->name, guessLen);
                             }
                             if (r == 0) {
-                                if (opt_terse == FALSE) {
+                                if (opt_terse == false) {
                                     fprintf(stderr, "Error returned from Windows CompareStringW.\n");
                                 }
                                 exit(-1);
@@ -679,7 +679,7 @@
     }
 
     int ns = (int)(float(1000000) * (float)elapsedTime / (float)gCount);
-    if (opt_terse == FALSE) {
+    if (opt_terse == false) {
         printf("binary search:  total # of string compares = %d\n", gCount);
         printf("binary search:  compares per loop = %d\n", gCount / loops);
         printf("binary search:  time per compare = %d ns\n", ns);
@@ -763,7 +763,7 @@
 
     unsigned long elapsedTime = timeGetTime() - startTime;
     int ns = (int)(float(1000000) * (float)elapsedTime / (float)gCount);
-    if (opt_terse == FALSE) {
+    if (opt_terse == false) {
         printf("qsort:  total # of string compares = %d\n", gCount);
         printf("qsort:  time per compare = %d ns\n", ns);
     } else {
@@ -925,7 +925,7 @@
         int count5 = 5;
         strindex = 0;
         ucol_setOffset(iter, strindex, &error);
-        while (TRUE) {
+        while (true) {
             if (ucol_next(iter, &error) == UCOL_NULLORDER) {
                 break;
             }
@@ -954,7 +954,7 @@
         int count5 = 5;
         strindex = 0;
         ucol_setOffset(iter, strindex, &error);
-        while (TRUE) {
+        while (true) {
             tempgCount ++;
             count5 --;
             if (count5 == 0) {
@@ -1088,7 +1088,7 @@
         int count5 = 5;
         strindex = 5;
         ucol_setOffset(iter, strindex, &error);
-        while (TRUE) {
+        while (true) {
             if (ucol_previous(iter, &error) == UCOL_NULLORDER) {
                 break;
             }
@@ -1117,7 +1117,7 @@
         int count5 = 5;
         strindex = 5;
         ucol_setOffset(iter, strindex, &error);
-        while (TRUE) {
+        while (true) {
              tempgCount ++;
              count5 --;
              if (count5 == 0) {
@@ -1229,14 +1229,14 @@
 };
 
 UCharFile::UCharFile(const char * fileName) {
-    fEof                 = FALSE;
-    fError               = FALSE;
+    fEof                 = false;
+    fError               = false;
     fName                = fileName;
     fFile                = fopen(fName, "rb");
     fPending2ndSurrogate = 0;
     if (fFile == NULL) {
         fprintf(stderr, "Can not open file \"%s\"\n", opt_fName);
-        fError = TRUE;
+        fError = true;
         return;
     }
     //
@@ -1279,7 +1279,7 @@
             c  = cL  | (cH << 8);
             if (cH == EOF) {
                 c   = 0;
-                fEof = TRUE;
+                fEof = true;
             }
             break;
         }
@@ -1291,7 +1291,7 @@
             c  = cL  | (cH << 8);
             if (cL == EOF) {
                 c   = 0;
-                fEof = TRUE;
+                fEof = true;
             }
             break;
         }
@@ -1306,7 +1306,7 @@
             int ch = fgetc(fFile);   // Note:  c and ch are separate cause eof test doesn't work on UChar type.
             if (ch == EOF) {
                 c = 0;
-                fEof = TRUE;
+                fEof = true;
                 break;
             }
             
@@ -1324,7 +1324,7 @@
             else if (ch >= 0xC0) {nBytes=2;}
             else {
                 fprintf(stderr, "utf-8 encoded file contains corrupt data.\n");
-                fError = TRUE;
+                fError = true;
                 return 0;
             }
             
@@ -1335,7 +1335,7 @@
                 bytes[i] = fgetc(fFile);
                 if (bytes[i] < 0x80 || bytes[i] >= 0xc0) {
                     fprintf(stderr, "utf-8 encoded file contains corrupt data.\n");
-                    fError = TRUE;
+                    fError = true;
                     return 0;
                 }
             }
@@ -1426,14 +1426,14 @@
 //
 //----------------------------------------------------------------------------------------
 int main(int argc, const char** argv) {
-    if (ProcessOptions(argc, argv, opts) != TRUE || opt_help || opt_fName == 0) {
+    if (ProcessOptions(argc, argv, opts) != true || opt_help || opt_fName == 0) {
         printf(gUsageString);
         exit (1);
     }
 
     // Make sure that we've only got one API selected.
-    if (opt_unix || opt_win) opt_icu = FALSE;
-    if (opt_unix) opt_win = FALSE;
+    if (opt_unix || opt_win) opt_icu = false;
+    if (opt_unix) opt_win = false;
 
     //
     //  Set up an ICU collator
@@ -1451,10 +1451,10 @@
             return -1;
         }
     }
-    if (status==U_USING_DEFAULT_WARNING && opt_terse==FALSE) {
+    if (status==U_USING_DEFAULT_WARNING && opt_terse==false) {
         fprintf(stderr, "Warning, U_USING_DEFAULT_WARNING for %s\n", opt_locale);
     }
-    if (status==U_USING_FALLBACK_WARNING && opt_terse==FALSE) {
+    if (status==U_USING_FALLBACK_WARNING && opt_terse==false) {
         fprintf(stderr, "Warning, U_USING_FALLBACK_ERROR for %s\n", opt_locale);
     }
 
@@ -1589,16 +1589,16 @@
         buf[column++] = c;
         if (column >= 1023)
         {
-            static UBool warnFlag = TRUE;
+            static UBool warnFlag = true;
             if (warnFlag) {
                 fprintf(stderr, "Warning - file line longer than 1023 chars truncated.\n");
-                warnFlag = FALSE;
+                warnFlag = false;
             }
             column--;
         }
     }
 
-    if (opt_terse == FALSE) {
+    if (opt_terse == false) {
         printf("file \"%s\", %d lines.\n", opt_fName, gNumFileLines);
     }
 
diff --git a/icu4c/source/test/perf/collationperf/readme.html b/icu4c/source/test/perf/collationperf/readme.html
index 07fb7a7..a0950a7 100644
--- a/icu4c/source/test/perf/collationperf/readme.html
+++ b/icu4c/source/test/perf/collationperf/readme.html
@@ -4,7 +4,7 @@
 <HEAD>
 	<META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=iso-8859-1">
         <meta name="Copyright" content="Copyright (C) 2016 and later: Unicode, Inc. and others.
-        License & terms of use: http://www.unicode.org/copyright.html#License
+        License & terms of use: http://www.unicode.org/copyright.html
         Copyright (c) 2002-2008, International Business Machines Corporation and others. All Rights Reserved.">
 	<META NAME="GENERATOR" Content="Visual Page 2.0 for Windows">
 	<TITLE>collperf</TITLE>
diff --git a/icu4c/source/test/perf/collperf/CollPerf.pl b/icu4c/source/test/perf/collperf/CollPerf.pl
index 73b8048..972b9c7 100755
--- a/icu4c/source/test/perf/collperf/CollPerf.pl
+++ b/icu4c/source/test/perf/collperf/CollPerf.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/collperf/CollPerf_r.pl b/icu4c/source/test/perf/collperf/CollPerf_r.pl
index 83dc933..ef2315a 100755
--- a/icu4c/source/test/perf/collperf/CollPerf_r.pl
+++ b/icu4c/source/test/perf/collperf/CollPerf_r.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/collperf/Makefile.in b/icu4c/source/test/perf/collperf/Makefile.in
index d3fc881..8e3c158 100644
--- a/icu4c/source/test/perf/collperf/Makefile.in
+++ b/icu4c/source/test/perf/collperf/Makefile.in
@@ -1,6 +1,6 @@
 ## Makefile.in for ICU - test/perf/collperf
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 2001-2011, International Business Machines Corporation and
 ## others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/collperf/collperf.cpp b/icu4c/source/test/perf/collperf/collperf.cpp
index 137b31a..8622ea3 100644
--- a/icu4c/source/test/perf/collperf/collperf.cpp
+++ b/icu4c/source/test/perf/collperf/collperf.cpp
@@ -1,6 +1,6 @@
 /***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *
 ***********************************************************************
 ***********************************************************************
diff --git a/icu4c/source/test/perf/collperf/collperf.vcxproj b/icu4c/source/test/perf/collperf/collperf.vcxproj
index 807894d..4eaae91 100644
--- a/icu4c/source/test/perf/collperf/collperf.vcxproj
+++ b/icu4c/source/test/perf/collperf/collperf.vcxproj
@@ -47,22 +47,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/test/perf/collperf2/CollPerf2_r.pl b/icu4c/source/test/perf/collperf2/CollPerf2_r.pl
index b957ac3..71813c6 100755
--- a/icu4c/source/test/perf/collperf2/CollPerf2_r.pl
+++ b/icu4c/source/test/perf/collperf2/CollPerf2_r.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 # ********************************************************************
 #  Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  License & terms of use: http://www.unicode.org/copyright.html#License
+#  License & terms of use: http://www.unicode.org/copyright.html
 # ********************************************************************
 # ********************************************************************
 #  COPYRIGHT:
diff --git a/icu4c/source/test/perf/collperf2/Makefile.in b/icu4c/source/test/perf/collperf2/Makefile.in
index f3f74be..af4e0d2 100644
--- a/icu4c/source/test/perf/collperf2/Makefile.in
+++ b/icu4c/source/test/perf/collperf2/Makefile.in
@@ -1,6 +1,6 @@
 ## Makefile.in for ICU - test/perf/collperf2
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 2013, International Business Machines Corporation and
 ## others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/collperf2/collperf2.cpp b/icu4c/source/test/perf/collperf2/collperf2.cpp
index 35201dc..afb90c5 100644
--- a/icu4c/source/test/perf/collperf2/collperf2.cpp
+++ b/icu4c/source/test/perf/collperf2/collperf2.cpp
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 ***********************************************************************
 * Copyright (c) 2013-2014, International Business Machines
diff --git a/icu4c/source/test/perf/collperf2/collperf2.vcxproj b/icu4c/source/test/perf/collperf2/collperf2.vcxproj
index cb6cb11..42422e2 100644
--- a/icu4c/source/test/perf/collperf2/collperf2.vcxproj
+++ b/icu4c/source/test/perf/collperf2/collperf2.vcxproj
@@ -47,22 +47,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/test/perf/convperf/ConvPerf_r.pl b/icu4c/source/test/perf/convperf/ConvPerf_r.pl
index 20a311e..0213ffa 100755
--- a/icu4c/source/test/perf/convperf/ConvPerf_r.pl
+++ b/icu4c/source/test/perf/convperf/ConvPerf_r.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/convperf/Makefile.in b/icu4c/source/test/perf/convperf/Makefile.in
index 2719076..813f024 100644
--- a/icu4c/source/test/perf/convperf/Makefile.in
+++ b/icu4c/source/test/perf/convperf/Makefile.in
@@ -1,5 +1,5 @@
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Makefile.in for ICU - test/perf/collperf
 ## Copyright (c) 2001-2011, International Business Machines Corporation and
diff --git a/icu4c/source/test/perf/convperf/convperf.cpp b/icu4c/source/test/perf/convperf/convperf.cpp
index d543748..0720111 100644
--- a/icu4c/source/test/perf/convperf/convperf.cpp
+++ b/icu4c/source/test/perf/convperf/convperf.cpp
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 ***********************************************************************
 * Copyright (c) 2002-2014, International Business Machines
diff --git a/icu4c/source/test/perf/convperf/convperf.h b/icu4c/source/test/perf/convperf/convperf.h
index cc1e3d5..e185c90 100644
--- a/icu4c/source/test/perf/convperf/convperf.h
+++ b/icu4c/source/test/perf/convperf/convperf.h
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 ***********************************************************************
 * Copyright (c) 2002-2014, International Business Machines
diff --git a/icu4c/source/test/perf/convperf/convperf.vcxproj b/icu4c/source/test/perf/convperf/convperf.vcxproj
index 41bdd92..3a87532 100644
--- a/icu4c/source/test/perf/convperf/convperf.vcxproj
+++ b/icu4c/source/test/perf/convperf/convperf.vcxproj
@@ -47,22 +47,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/test/perf/convperf/convperf_ansi.pl b/icu4c/source/test/perf/convperf/convperf_ansi.pl
index 406bfeb..2427eaa 100755
--- a/icu4c/source/test/perf/convperf/convperf_ansi.pl
+++ b/icu4c/source/test/perf/convperf/convperf_ansi.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/convperf/convperf_iml.pl b/icu4c/source/test/perf/convperf/convperf_iml.pl
index 0ca20aa..3c9996b 100755
--- a/icu4c/source/test/perf/convperf/convperf_iml.pl
+++ b/icu4c/source/test/perf/convperf/convperf_iml.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/convperf/data.h b/icu4c/source/test/perf/convperf/data.h
index 0ff8563..3afaa1d 100644
--- a/icu4c/source/test/perf/convperf/data.h
+++ b/icu4c/source/test/perf/convperf/data.h
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 ***********************************************************************
 * Copyright (c) 2002-2003,International Business Machines
diff --git a/icu4c/source/test/perf/dicttrieperf/Makefile.in b/icu4c/source/test/perf/dicttrieperf/Makefile.in
index d95ec92..005604b 100644
--- a/icu4c/source/test/perf/dicttrieperf/Makefile.in
+++ b/icu4c/source/test/perf/dicttrieperf/Makefile.in
@@ -1,6 +1,6 @@
 ## Makefile.in for ICU - test/perf/dicttrieperf
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 2001-2011, International Business Machines Corporation and
 ## others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/dicttrieperf/dicttrieperf.cpp b/icu4c/source/test/perf/dicttrieperf/dicttrieperf.cpp
index 661c6e8..7d70233 100644
--- a/icu4c/source/test/perf/dicttrieperf/dicttrieperf.cpp
+++ b/icu4c/source/test/perf/dicttrieperf/dicttrieperf.cpp
@@ -1,7 +1,7 @@
 /*  
  ***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  *   Copyright (C) 2010-2014, International Business Machines
diff --git a/icu4c/source/test/perf/howExpensiveIs/Makefile.in b/icu4c/source/test/perf/howExpensiveIs/Makefile.in
index a50642e..ad0cec8 100644
--- a/icu4c/source/test/perf/howExpensiveIs/Makefile.in
+++ b/icu4c/source/test/perf/howExpensiveIs/Makefile.in
@@ -1,6 +1,6 @@
 ## Makefile.in for ICU - test/perf/howExpensiveIs
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 2001-2012, International Business Machines Corporation and
 ## others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/howExpensiveIs/howExpensiveIs.cpp b/icu4c/source/test/perf/howExpensiveIs/howExpensiveIs.cpp
index fb16e4f..7fe13cb 100644
--- a/icu4c/source/test/perf/howExpensiveIs/howExpensiveIs.cpp
+++ b/icu4c/source/test/perf/howExpensiveIs/howExpensiveIs.cpp
@@ -1,7 +1,7 @@
 /*
  ***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * Copyright (c) 2011-2016,International Business Machines
@@ -500,7 +500,7 @@
     case kApplyPattern:
       {
         UNumberFormat *fmt = unum_open(UNUM_DECIMAL, NULL, -1, TEST_LOCALE, 0, &setupStatus);
-        unum_applyPattern(fmt, FALSE, fPat.getTerminatedBuffer(), -1, NULL, &setupStatus);
+        unum_applyPattern(fmt, false, fPat.getTerminatedBuffer(), -1, NULL, &setupStatus);
         return fmt;
       }
     case kGroupOff:
@@ -512,7 +512,7 @@
     case kApplyGroupOff:
       {
         UNumberFormat *fmt = unum_open(UNUM_DECIMAL, NULL, -1, TEST_LOCALE, 0, &setupStatus);
-        unum_applyPattern(fmt, FALSE, fPat.getTerminatedBuffer(), -1, NULL, &setupStatus);
+        unum_applyPattern(fmt, false, fPat.getTerminatedBuffer(), -1, NULL, &setupStatus);
         unum_setAttribute(fmt, UNUM_GROUPING_USED, UNUM_NO);
         return fmt;
       }
diff --git a/icu4c/source/test/perf/howExpensiveIs/readme.txt b/icu4c/source/test/perf/howExpensiveIs/readme.txt
index 64eb0b1..cd05657 100644
--- a/icu4c/source/test/perf/howExpensiveIs/readme.txt
+++ b/icu4c/source/test/perf/howExpensiveIs/readme.txt
@@ -1,6 +1,6 @@
 # -*- mode: org -*-
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (C) 2012 International Business Machines Corporation and Others. All Rights Reserved. 
 
diff --git a/icu4c/source/test/perf/howExpensiveIs/sieve.cpp b/icu4c/source/test/perf/howExpensiveIs/sieve.cpp
index 6190de7..0478b6d 100644
--- a/icu4c/source/test/perf/howExpensiveIs/sieve.cpp
+++ b/icu4c/source/test/perf/howExpensiveIs/sieve.cpp
@@ -1,7 +1,7 @@
 /*
  ***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * Copyright (c) 2011-2012,International Business Machines
@@ -190,12 +190,12 @@
   return meanTime;
 }
 
-UBool calcSieveTime = FALSE;
+UBool calcSieveTime = false;
 double meanSieveTime = 0.0;
 double meanSieveME = 0.0;
 
 U_CAPI double uprv_getSieveTime(double *marginOfError) {
-  if(calcSieveTime==FALSE) {
+  if(!calcSieveTime) {
 #define SAMPLES 50
     uint32_t samples = SAMPLES;
     double times[SAMPLES];
@@ -208,7 +208,7 @@
     }
     
     meanSieveTime = uprv_getMeanTime(times, &samples,&meanSieveME);
-    calcSieveTime=TRUE;
+    calcSieveTime=true;
   }
   if(marginOfError!=NULL) {
     *marginOfError = meanSieveME;
diff --git a/icu4c/source/test/perf/howExpensiveIs/sieve.h b/icu4c/source/test/perf/howExpensiveIs/sieve.h
index 168f82e..00dbaa9 100644
--- a/icu4c/source/test/perf/howExpensiveIs/sieve.h
+++ b/icu4c/source/test/perf/howExpensiveIs/sieve.h
@@ -1,7 +1,7 @@
 /*
  ***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  * Copyright (c) 2011-2012,International Business Machines
@@ -20,7 +20,7 @@
 /**
  * Calculate the standardized sieve time (1 run)
  */
-U_INTERNAL double uprv_calcSieveTime(void);
+U_CAPI double uprv_calcSieveTime(void);
 
 /**
  * Calculate the mean time, with margin of error
@@ -29,13 +29,13 @@
  * @param marginOfError out parameter: gives +/- margin of err at 95% confidence
  * @return the mean time, or negative if error/imprecision.
  */
-U_INTERNAL double uprv_getMeanTime(double *times, uint32_t *timeCount, double *marginOfError);
+U_CAPI double uprv_getMeanTime(double *times, uint32_t *timeCount, double *marginOfError);
 
 /**
  * Get the standardized sieve time. (Doesn't recalculate if already computed.
  * @param marginOfError out parameter: gives +/- margin of error at 95% confidence.
  * @return the mean time, or negative if error/imprecision.
  */
-U_INTERNAL double uprv_getSieveTime(double *marginOfError);
+U_CAPI double uprv_getSieveTime(double *marginOfError);
 
 #endif
diff --git a/icu4c/source/test/perf/icuperf2report.xsl b/icu4c/source/test/perf/icuperf2report.xsl
index 73c2815..b2bc90b 100644
--- a/icu4c/source/test/perf/icuperf2report.xsl
+++ b/icu4c/source/test/perf/icuperf2report.xsl
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 
 <!-- Copyright (C) 2016 and later: Unicode, Inc. and others. -->
-<!-- License & terms of use: http://www.unicode.org/copyright.html#License -->
+<!-- License & terms of use: http://www.unicode.org/copyright.html -->
 
 <!-- Copyright (C) 2011 IBM Corporation and Others. All Rights Reserved. -->
 
diff --git a/icu4c/source/test/perf/leperf/FontObject.cpp b/icu4c/source/test/perf/leperf/FontObject.cpp
index 39aefe9..96b8773 100644
--- a/icu4c/source/test/perf/leperf/FontObject.cpp
+++ b/icu4c/source/test/perf/leperf/FontObject.cpp
@@ -1,7 +1,7 @@
 /***************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 ****************************************************************************/
 /***************************************************************************
diff --git a/icu4c/source/test/perf/leperf/FontObject.h b/icu4c/source/test/perf/leperf/FontObject.h
index 83fe8fb..95a4385 100644
--- a/icu4c/source/test/perf/leperf/FontObject.h
+++ b/icu4c/source/test/perf/leperf/FontObject.h
@@ -1,7 +1,7 @@
 /**************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 ***************************************************************************
 ***************************************************************************
diff --git a/icu4c/source/test/perf/leperf/FontTableCache.cpp b/icu4c/source/test/perf/leperf/FontTableCache.cpp
index b312432..a687068 100644
--- a/icu4c/source/test/perf/leperf/FontTableCache.cpp
+++ b/icu4c/source/test/perf/leperf/FontTableCache.cpp
@@ -1,7 +1,7 @@
 /*
 **************************************************************************
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *************************************************************************
  *************************************************************************
  *   Copyright (C) 2003-2013, International Business Machines
diff --git a/icu4c/source/test/perf/leperf/FontTableCache.h b/icu4c/source/test/perf/leperf/FontTableCache.h
index 038a01f..2a83906 100644
--- a/icu4c/source/test/perf/leperf/FontTableCache.h
+++ b/icu4c/source/test/perf/leperf/FontTableCache.h
@@ -1,7 +1,7 @@
 /*
  **********************************************************************
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  **********************************************************************
  **********************************************************************
  *   Copyright (C) 2003-2013, International Business Machines
diff --git a/icu4c/source/test/perf/leperf/Makefile.in b/icu4c/source/test/perf/leperf/Makefile.in
index d7f00a3..0538e20 100644
--- a/icu4c/source/test/perf/leperf/Makefile.in
+++ b/icu4c/source/test/perf/leperf/Makefile.in
@@ -1,6 +1,6 @@
 ## Makefile.in for ICU - test/perf/collperf
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 2001-2013, International Business Machines Corporation and
 ## others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/leperf/PortableFontInstance.cpp b/icu4c/source/test/perf/leperf/PortableFontInstance.cpp
index 28866ab..a7fe7e2 100644
--- a/icu4c/source/test/perf/leperf/PortableFontInstance.cpp
+++ b/icu4c/source/test/perf/leperf/PortableFontInstance.cpp
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/test/perf/leperf/PortableFontInstance.h b/icu4c/source/test/perf/leperf/PortableFontInstance.h
index 6f3f95d..2f113cd 100644
--- a/icu4c/source/test/perf/leperf/PortableFontInstance.h
+++ b/icu4c/source/test/perf/leperf/PortableFontInstance.h
@@ -3,7 +3,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/test/perf/leperf/SimpleFontInstance.cpp b/icu4c/source/test/perf/leperf/SimpleFontInstance.cpp
index f143d93..23ae00e 100644
--- a/icu4c/source/test/perf/leperf/SimpleFontInstance.cpp
+++ b/icu4c/source/test/perf/leperf/SimpleFontInstance.cpp
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/test/perf/leperf/SimpleFontInstance.h b/icu4c/source/test/perf/leperf/SimpleFontInstance.h
index f50a62a..14f5bfb 100644
--- a/icu4c/source/test/perf/leperf/SimpleFontInstance.h
+++ b/icu4c/source/test/perf/leperf/SimpleFontInstance.h
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/test/perf/leperf/cfonts.cpp b/icu4c/source/test/perf/leperf/cfonts.cpp
index 0031469..62f7aee 100644
--- a/icu4c/source/test/perf/leperf/cfonts.cpp
+++ b/icu4c/source/test/perf/leperf/cfonts.cpp
@@ -1,7 +1,7 @@
 /*
  *
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved
  *
diff --git a/icu4c/source/test/perf/leperf/cfonts.h b/icu4c/source/test/perf/leperf/cfonts.h
index 3ab38ec..f9403cd 100644
--- a/icu4c/source/test/perf/leperf/cfonts.h
+++ b/icu4c/source/test/perf/leperf/cfonts.h
@@ -1,7 +1,7 @@
 /*
  *
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved
  *
diff --git a/icu4c/source/test/perf/leperf/cmaps.cpp b/icu4c/source/test/perf/leperf/cmaps.cpp
index da06afb..943befa 100644
--- a/icu4c/source/test/perf/leperf/cmaps.cpp
+++ b/icu4c/source/test/perf/leperf/cmaps.cpp
@@ -1,7 +1,7 @@
 /**************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 ***************************************************************************
 ***************************************************************************
diff --git a/icu4c/source/test/perf/leperf/cmaps.h b/icu4c/source/test/perf/leperf/cmaps.h
index 16bf92b..a90057f 100644
--- a/icu4c/source/test/perf/leperf/cmaps.h
+++ b/icu4c/source/test/perf/leperf/cmaps.h
@@ -1,7 +1,7 @@
 /**************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 ***************************************************************************
 ***************************************************************************
diff --git a/icu4c/source/test/perf/leperf/leperf.cpp b/icu4c/source/test/perf/leperf/leperf.cpp
index 1639102..9fa8a5e 100644
--- a/icu4c/source/test/perf/leperf/leperf.cpp
+++ b/icu4c/source/test/perf/leperf/leperf.cpp
@@ -1,7 +1,7 @@
 /**************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 ***************************************************************************
 ***************************************************************************
diff --git a/icu4c/source/test/perf/leperf/letrperf.cpp b/icu4c/source/test/perf/leperf/letrperf.cpp
index 25e6ea9..75f3a55 100644
--- a/icu4c/source/test/perf/leperf/letrperf.cpp
+++ b/icu4c/source/test/perf/leperf/letrperf.cpp
@@ -1,7 +1,7 @@
 /**************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 ***************************************************************************
 ***************************************************************************
diff --git a/icu4c/source/test/perf/leperf/sfnt.h b/icu4c/source/test/perf/leperf/sfnt.h
index 73ec116..8e4d3d8 100644
--- a/icu4c/source/test/perf/leperf/sfnt.h
+++ b/icu4c/source/test/perf/leperf/sfnt.h
@@ -1,7 +1,7 @@
 /***************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 ****************************************************************************/
 /***************************************************************************
diff --git a/icu4c/source/test/perf/leperf/xmlreader.cpp b/icu4c/source/test/perf/leperf/xmlreader.cpp
index 1ad9399..e0f595d 100644
--- a/icu4c/source/test/perf/leperf/xmlreader.cpp
+++ b/icu4c/source/test/perf/leperf/xmlreader.cpp
@@ -2,7 +2,7 @@
  *******************************************************************************
  *
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *
  *******************************************************************************
  *******************************************************************************
diff --git a/icu4c/source/test/perf/leperf/xmlreader.h b/icu4c/source/test/perf/leperf/xmlreader.h
index 2f01e73..298d9b8 100644
--- a/icu4c/source/test/perf/leperf/xmlreader.h
+++ b/icu4c/source/test/perf/leperf/xmlreader.h
@@ -1,7 +1,7 @@
 /*
  *
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved
  *
diff --git a/icu4c/source/test/perf/localecanperf/Makefile.in b/icu4c/source/test/perf/localecanperf/Makefile.in
new file mode 100644
index 0000000..e681eff
--- /dev/null
+++ b/icu4c/source/test/perf/localecanperf/Makefile.in
@@ -0,0 +1,79 @@
+## Makefile.in for ICU - test/perf/localecanperf
+## Copyright (C) 2020 and later: Unicode, Inc. and others.
+## License & terms of use: http://www.unicode.org/copyright.html
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = ../../..
+
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = test/perf/localecanperf
+
+## Extra files to remove for 'make clean'
+CLEANFILES = *~ $(DEPS)
+
+## Target information
+TARGET = localecanperf
+
+CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
+LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M)
+
+OBJECTS = localecanperf.o
+
+DEPS = $(OBJECTS:.o=.d)
+
+## List of phony targets
+.PHONY : all all-local install install-local clean clean-local	\
+distclean distclean-local dist dist-local check check-local
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local
+install: install-local
+clean: clean-local
+distclean : distclean-local
+dist: dist-local
+check: all check-local
+
+all-local: $(TARGET)
+
+install-local:
+
+dist-local:
+
+clean-local:
+	test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+	$(RMV) $(OBJECTS) $(TARGET)
+
+distclean-local: clean-local
+	$(RMV) Makefile
+
+check-local: all-local
+
+Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) \
+	 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(TARGET) : $(OBJECTS)
+	$(LINK.cc) -o $@ $^ $(LIBS)
+	$(POST_BUILD_STEP)
+
+invoke:
+	ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION)
+
+ifeq (,$(MAKECMDGOALS))
+-include $(DEPS)
+else
+ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
+ifneq ($(patsubst %install,,$(MAKECMDGOALS)),)
+-include $(DEPS)
+endif
+endif
+endif
+
diff --git a/icu4c/source/test/perf/localecanperf/localecanperf.cpp b/icu4c/source/test/perf/localecanperf/localecanperf.cpp
new file mode 100644
index 0000000..9e56134
--- /dev/null
+++ b/icu4c/source/test/perf/localecanperf/localecanperf.cpp
@@ -0,0 +1,94 @@
+/*
+***********************************************************************
+* © 2020 and later: Unicode, Inc. and others.
+* License & terms of use: http://www.unicode.org/copyright.html
+***********************************************************************
+*/
+
+#include <algorithm>
+#include <vector>
+#include <string>
+
+#include "unicode/locid.h"
+#include "unicode/uperf.h"
+
+//
+// Test case ...
+//
+class LocaleCreateCanonical : public UPerfFunction {
+public:
+    LocaleCreateCanonical() {
+        testCases.push_back("en");
+        testCases.push_back("en-US");
+        testCases.push_back("ja-JP");
+        testCases.push_back("zh-Hant-CN");
+        testCases.push_back("hy-SU");
+    }
+    ~LocaleCreateCanonical() {  }
+    virtual void call(UErrorCode* /* status */)
+    {
+        std::for_each(testCases.begin(), testCases.end(),
+                      [](const std::string& s)
+                      {
+                          Locale l = Locale::createCanonical(s.c_str());
+                      });
+    }
+    virtual long getOperationsPerIteration() { return testCases.size(); }
+    virtual long getEventsPerIteration() { return testCases.size(); }
+private:
+    std::vector<std::string> testCases;
+};
+
+class LocaleCanonicalizationPerfTest : public UPerfTest
+{
+public:
+    LocaleCanonicalizationPerfTest(
+        int32_t argc, const char *argv[], UErrorCode &status)
+            : UPerfTest(argc, argv, nullptr, 0, "localecanperf", status)
+    {
+    }
+
+    ~LocaleCanonicalizationPerfTest()
+    {
+    }
+    virtual UPerfFunction* runIndexedTest(
+        int32_t index, UBool exec, const char *&name, char *par = nullptr);
+
+private:
+    UPerfFunction* TestLocaleCreateCanonical()
+    {
+        return new LocaleCreateCanonical();
+    }
+};
+
+UPerfFunction*
+LocaleCanonicalizationPerfTest::runIndexedTest(
+    int32_t index, UBool exec, const char *&name, char *par /*= nullptr*/)
+{
+    (void)par;
+    TESTCASE_AUTO_BEGIN;
+
+    TESTCASE_AUTO(TestLocaleCreateCanonical);
+
+    TESTCASE_AUTO_END;
+    return nullptr;
+}
+
+int main(int argc, const char *argv[])
+{
+    UErrorCode status = U_ZERO_ERROR;
+    LocaleCanonicalizationPerfTest test(argc, argv, status);
+
+    if (U_FAILURE(status)){
+        fprintf(stderr, "The error is %s\n", u_errorName(status));
+        test.usage();
+        return status;
+    }
+
+    if (test.run() == FALSE){
+        test.usage();
+        fprintf(stderr, "FAILED: Tests could not be run please check the arguments.\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/icu4c/source/test/perf/localecanperf/runTest.sh b/icu4c/source/test/perf/localecanperf/runTest.sh
new file mode 100755
index 0000000..b72e5af
--- /dev/null
+++ b/icu4c/source/test/perf/localecanperf/runTest.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+# Copyright (C) 2020 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+
+# run the test with 1, 10, 100, 1000, 10000, 100000 iterations
+LD_LIBRARY_PATH=lib:stubdata:tools/ctestfw:../../lib:../../stubdata:../../tools/ctestfw:$LD_LIBRARY_PATH:../../../lib:../../../stubdata:../../../tools/ctestfw:$LD_LIBRARY_PATH \
+  ./localecanperf TestLocaleCreateCanonical -i 1
+
+LD_LIBRARY_PATH=lib:stubdata:tools/ctestfw:../../lib:../../stubdata:../../tools/ctestfw:$LD_LIBRARY_PATH:../../../lib:../../../stubdata:../../../tools/ctestfw:$LD_LIBRARY_PATH \
+  ./localecanperf TestLocaleCreateCanonical -i 10
+
+LD_LIBRARY_PATH=lib:stubdata:tools/ctestfw:../../lib:../../stubdata:../../tools/ctestfw:$LD_LIBRARY_PATH:../../../lib:../../../stubdata:../../../tools/ctestfw:$LD_LIBRARY_PATH \
+  ./localecanperf TestLocaleCreateCanonical -i 100
+
+LD_LIBRARY_PATH=lib:stubdata:tools/ctestfw:../../lib:../../stubdata:../../tools/ctestfw:$LD_LIBRARY_PATH:../../../lib:../../../stubdata:../../../tools/ctestfw:$LD_LIBRARY_PATH \
+  ./localecanperf TestLocaleCreateCanonical -i 1000
+
+LD_LIBRARY_PATH=lib:stubdata:tools/ctestfw:../../lib:../../stubdata:../../tools/ctestfw:$LD_LIBRARY_PATH:../../../lib:../../../stubdata:../../../tools/ctestfw:$LD_LIBRARY_PATH \
+  ./localecanperf TestLocaleCreateCanonical -i 10000
+
+LD_LIBRARY_PATH=lib:stubdata:tools/ctestfw:../../lib:../../stubdata:../../tools/ctestfw:$LD_LIBRARY_PATH:../../../lib:../../../stubdata:../../../tools/ctestfw:$LD_LIBRARY_PATH \
+  ./localecanperf TestLocaleCreateCanonical -i 100000
diff --git a/icu4c/source/test/perf/normperf/Makefile.in b/icu4c/source/test/perf/normperf/Makefile.in
index bc63e82..3ed7e3d 100644
--- a/icu4c/source/test/perf/normperf/Makefile.in
+++ b/icu4c/source/test/perf/normperf/Makefile.in
@@ -1,6 +1,6 @@
 ## Makefile.in for ICU - test/perf/normperf
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 2001-2011, International Business Machines Corporation and
 ## others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/normperf/NormPerf.pl b/icu4c/source/test/perf/normperf/NormPerf.pl
index f079e6d..a37e28c 100755
--- a/icu4c/source/test/perf/normperf/NormPerf.pl
+++ b/icu4c/source/test/perf/normperf/NormPerf.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * Copyright (c) 2002-2013, International Business Machines
diff --git a/icu4c/source/test/perf/normperf/NormPerf_r.pl b/icu4c/source/test/perf/normperf/NormPerf_r.pl
index cb7139f..673afef 100755
--- a/icu4c/source/test/perf/normperf/NormPerf_r.pl
+++ b/icu4c/source/test/perf/normperf/NormPerf_r.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/normperf/dtfmtrtperf.cpp b/icu4c/source/test/perf/normperf/dtfmtrtperf.cpp
index a4ebf26..a53fb73 100644
--- a/icu4c/source/test/perf/normperf/dtfmtrtperf.cpp
+++ b/icu4c/source/test/perf/normperf/dtfmtrtperf.cpp
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 ***********************************************************************
 * Copyright (c) 2010,International Business Machines
diff --git a/icu4c/source/test/perf/normperf/dtfmtrtperf.vcxproj b/icu4c/source/test/perf/normperf/dtfmtrtperf.vcxproj
index 689ce06..b3146ea 100644
--- a/icu4c/source/test/perf/normperf/dtfmtrtperf.vcxproj
+++ b/icu4c/source/test/perf/normperf/dtfmtrtperf.vcxproj
@@ -50,22 +50,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
diff --git a/icu4c/source/test/perf/normperf/normperf.cpp b/icu4c/source/test/perf/normperf/normperf.cpp
index 0cc65b5..8ec29d5 100644
--- a/icu4c/source/test/perf/normperf/normperf.cpp
+++ b/icu4c/source/test/perf/normperf/normperf.cpp
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 ***********************************************************************
 * Copyright (c) 2002-2016, International Business Machines
diff --git a/icu4c/source/test/perf/normperf/normperf.h b/icu4c/source/test/perf/normperf/normperf.h
index c057154..b29a7bc 100644
--- a/icu4c/source/test/perf/normperf/normperf.h
+++ b/icu4c/source/test/perf/normperf/normperf.h
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 ***********************************************************************
 * Copyright (c) 2002-2011, International Business Machines
@@ -47,7 +47,7 @@
 
 public:
     virtual void call(UErrorCode* status){
-        if(line_mode==TRUE){
+        if(line_mode){
             if(uselen){
                 for(int32_t i = 0; i< numLines; i++){
                     retVal =  (*fn)(lines[i].name,lines[i].len,mode, options, status);
@@ -68,7 +68,7 @@
 
     }
     virtual long getOperationsPerIteration(){
-        if(line_mode==TRUE){
+        if(line_mode){
             int32_t totalChars=0;
             for(int32_t i =0; i< numLines; i++){
                 totalChars+= lines[i].len;
@@ -86,7 +86,7 @@
         mode = _mode;
         src = NULL;
         srcLen = 0;
-        line_mode = TRUE;
+        line_mode = true;
     }
     QuickCheckPerfFunction(QuickCheckFn func, const UChar* source,int32_t sourceLen, UNormalizationMode _mode, int32_t opts, UBool _uselen) : options(opts) {
         fn = func;
@@ -96,7 +96,7 @@
         mode = _mode;
         src = source;
         srcLen = sourceLen;
-        line_mode = FALSE;
+        line_mode = false;
     }
 };
 
@@ -118,7 +118,7 @@
 
 public:
     virtual void call(UErrorCode* status){
-        if(line_mode==TRUE){
+        if(line_mode){
             if(uselen){
                 for(int32_t i = 0; i< numLines; i++){
                     retVal =  (*fn)(lines[i].name,lines[i].len,pDest,destLen, options, status);
@@ -137,7 +137,7 @@
         }
     }
     virtual long getOperationsPerIteration(){
-        if(line_mode ==TRUE){
+        if(line_mode){
             int32_t totalChars=0;
             for(int32_t i =0; i< numLines; i++){
                 totalChars+= lines[i].len;
@@ -156,7 +156,7 @@
         pDest = dest;
         src = NULL;
         srcLen = 0;
-        line_mode = TRUE;
+        line_mode = true;
     }
     NormPerfFunction(NormFn func, int32_t opts, const UChar* source,int32_t sourceLen,UBool _uselen) : options(opts) {
         fn = func;
@@ -167,7 +167,7 @@
         pDest = (UChar*) malloc(destLen * U_SIZEOF_UCHAR);
         src = source;
         srcLen = sourceLen;
-        line_mode = FALSE;
+        line_mode = false;
     }
     ~NormPerfFunction(){
         if(dest != pDest){
diff --git a/icu4c/source/test/perf/normperf/normperf.vcxproj b/icu4c/source/test/perf/normperf/normperf.vcxproj
index 62c9aad..ee8f01e 100644
--- a/icu4c/source/test/perf/normperf/normperf.vcxproj
+++ b/icu4c/source/test/perf/normperf/normperf.vcxproj
@@ -47,22 +47,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/test/perf/normperf/simplenormperf.cpp b/icu4c/source/test/perf/normperf/simplenormperf.cpp
index b6865ba..2f7341b 100644
--- a/icu4c/source/test/perf/normperf/simplenormperf.cpp
+++ b/icu4c/source/test/perf/normperf/simplenormperf.cpp
@@ -255,7 +255,7 @@
     UErrorCode errorCode = U_ZERO_ERROR;
     utimer_getTime(&startTime);
     for (int32_t i = 0; i < iterations; ++i) {
-        piece.setTo(FALSE, s + start, pieceLength);
+        piece.setTo(false, s + start, pieceLength);
         norm2.normalize(piece, dest, errorCode);
         start = (start + pieceLength) % limit;
     }
diff --git a/icu4c/source/test/perf/perldriver/Common.pl.template b/icu4c/source/test/perf/perldriver/Common.pl.template
index 0bee8b0..8bad2b1 100755
--- a/icu4c/source/test/perf/perldriver/Common.pl.template
+++ b/icu4c/source/test/perf/perldriver/Common.pl.template
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/perldriver/Dataset.pm b/icu4c/source/test/perf/perldriver/Dataset.pm
index 119cfd5..82acd2d 100644
--- a/icu4c/source/test/perf/perldriver/Dataset.pm
+++ b/icu4c/source/test/perf/perldriver/Dataset.pm
@@ -1,7 +1,7 @@
 #!/usr/local/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/perldriver/Format.pm b/icu4c/source/test/perf/perldriver/Format.pm
index d06448f..b53b784 100644
--- a/icu4c/source/test/perf/perldriver/Format.pm
+++ b/icu4c/source/test/perf/perldriver/Format.pm
@@ -1,7 +1,7 @@
 #!/usr/local/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/perldriver/Output.pm b/icu4c/source/test/perf/perldriver/Output.pm
index d7b8837..3e74bc9 100644
--- a/icu4c/source/test/perf/perldriver/Output.pm
+++ b/icu4c/source/test/perf/perldriver/Output.pm
@@ -2,7 +2,7 @@
 
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/perldriver/PerfFramework.pm b/icu4c/source/test/perf/perldriver/PerfFramework.pm
index f6d5540..59e0f1b 100644
--- a/icu4c/source/test/perf/perldriver/PerfFramework.pm
+++ b/icu4c/source/test/perf/perldriver/PerfFramework.pm
@@ -1,7 +1,7 @@
 #!/usr/local/bin/perl
 #  ***********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ***********************************************************************
 #  ***********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/strsrchperf/Makefile.in b/icu4c/source/test/perf/strsrchperf/Makefile.in
index d42dcb7..1a4982b 100644
--- a/icu4c/source/test/perf/strsrchperf/Makefile.in
+++ b/icu4c/source/test/perf/strsrchperf/Makefile.in
@@ -1,6 +1,6 @@
 ## Makefile.in for ICU - test/perf/strsrchperf
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 2008-2011, International Business Machines Corporation and
 ## others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/strsrchperf/StrSrchPerf_r.pl b/icu4c/source/test/perf/strsrchperf/StrSrchPerf_r.pl
index 7b16dc8..349efa0 100755
--- a/icu4c/source/test/perf/strsrchperf/StrSrchPerf_r.pl
+++ b/icu4c/source/test/perf/strsrchperf/StrSrchPerf_r.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/strsrchperf/strsrchperf.cpp b/icu4c/source/test/perf/strsrchperf/strsrchperf.cpp
index 406e398..cc67486 100644
--- a/icu4c/source/test/perf/strsrchperf/strsrchperf.cpp
+++ b/icu4c/source/test/perf/strsrchperf/strsrchperf.cpp
@@ -1,6 +1,6 @@
 /************************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  *************************************************************************
  ********************************************************************
diff --git a/icu4c/source/test/perf/strsrchperf/strsrchperf.h b/icu4c/source/test/perf/strsrchperf/strsrchperf.h
index 81b83bd..04ee403 100644
--- a/icu4c/source/test/perf/strsrchperf/strsrchperf.h
+++ b/icu4c/source/test/perf/strsrchperf/strsrchperf.h
@@ -1,6 +1,6 @@
 /************************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  *************************************************************************
  ********************************************************************
diff --git a/icu4c/source/test/perf/strsrchperf/strsrchperf.vcxproj b/icu4c/source/test/perf/strsrchperf/strsrchperf.vcxproj
index 89f2ccd..f5988df 100644
--- a/icu4c/source/test/perf/strsrchperf/strsrchperf.vcxproj
+++ b/icu4c/source/test/perf/strsrchperf/strsrchperf.vcxproj
@@ -47,22 +47,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/test/perf/ubrkperf/Makefile.in b/icu4c/source/test/perf/ubrkperf/Makefile.in
index 68f2d25..c992705 100644
--- a/icu4c/source/test/perf/ubrkperf/Makefile.in
+++ b/icu4c/source/test/perf/ubrkperf/Makefile.in
@@ -1,5 +1,5 @@
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Makefile.in for ICU - test/perf/ubrkperf
 ## Copyright (c) 2001-2011, International Business Machines Corporation and
diff --git a/icu4c/source/test/perf/ubrkperf/UBrkPerf_r.pl b/icu4c/source/test/perf/ubrkperf/UBrkPerf_r.pl
index de5c9be..34c5f1f 100755
--- a/icu4c/source/test/perf/ubrkperf/UBrkPerf_r.pl
+++ b/icu4c/source/test/perf/ubrkperf/UBrkPerf_r.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * Copyright (c) 2002-2013, International Business Machines
diff --git a/icu4c/source/test/perf/ubrkperf/ubrkperf.cpp b/icu4c/source/test/perf/ubrkperf/ubrkperf.cpp
index 361a14b..a8d2bd1 100644
--- a/icu4c/source/test/perf/ubrkperf/ubrkperf.cpp
+++ b/icu4c/source/test/perf/ubrkperf/ubrkperf.cpp
@@ -1,6 +1,6 @@
 /***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  ***********************************************************************
  ***********************************************************************
diff --git a/icu4c/source/test/perf/ubrkperf/ubrkperf.h b/icu4c/source/test/perf/ubrkperf/ubrkperf.h
index bc028da..651228f 100644
--- a/icu4c/source/test/perf/ubrkperf/ubrkperf.h
+++ b/icu4c/source/test/perf/ubrkperf/ubrkperf.h
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 **********************************************************************
 * Copyright (c) 2002-2011, International Business Machines
diff --git a/icu4c/source/test/perf/ubrkperf/ubrkperf.vcxproj b/icu4c/source/test/perf/ubrkperf/ubrkperf.vcxproj
index f38d9b4..87f23ea 100644
--- a/icu4c/source/test/perf/ubrkperf/ubrkperf.vcxproj
+++ b/icu4c/source/test/perf/ubrkperf/ubrkperf.vcxproj
@@ -47,22 +47,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/test/perf/ubrkperf/ubrkperfold.cpp b/icu4c/source/test/perf/ubrkperf/ubrkperfold.cpp
index 19c4721..7ac6e34 100644
--- a/icu4c/source/test/perf/ubrkperf/ubrkperfold.cpp
+++ b/icu4c/source/test/perf/ubrkperf/ubrkperfold.cpp
@@ -1,6 +1,6 @@
 /***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  ***********************************************************************
  ***********************************************************************
diff --git a/icu4c/source/test/perf/ucnvavailperf/ucnvavailperf.cpp b/icu4c/source/test/perf/ucnvavailperf/ucnvavailperf.cpp
index d79468b..f16db53 100644
--- a/icu4c/source/test/perf/ucnvavailperf/ucnvavailperf.cpp
+++ b/icu4c/source/test/perf/ucnvavailperf/ucnvavailperf.cpp
@@ -2,7 +2,7 @@
 *******************************************************************************
 *
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *
 *******************************************************************************
 *******************************************************************************
diff --git a/icu4c/source/test/perf/unisetperf/Makefile.in b/icu4c/source/test/perf/unisetperf/Makefile.in
index 121441a..6a02529 100644
--- a/icu4c/source/test/perf/unisetperf/Makefile.in
+++ b/icu4c/source/test/perf/unisetperf/Makefile.in
@@ -1,6 +1,6 @@
 ## Makefile.in for ICU - test/perf/unisetperf
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 2001-2011, International Business Machines Corporation and
 ## others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/unisetperf/draft/bitset.cpp b/icu4c/source/test/perf/unisetperf/draft/bitset.cpp
index e1eb64e..59746bc 100644
--- a/icu4c/source/test/perf/unisetperf/draft/bitset.cpp
+++ b/icu4c/source/test/perf/unisetperf/draft/bitset.cpp
@@ -1,7 +1,7 @@
 /*  
 *************************************************************************
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *************************************************************************
 *************************************************************************
 *   Copyright (C) 2014, International Business Machines
diff --git a/icu4c/source/test/perf/unisetperf/draft/contperf.bat b/icu4c/source/test/perf/unisetperf/draft/contperf.bat
index fd24474..1adb013 100755
--- a/icu4c/source/test/perf/unisetperf/draft/contperf.bat
+++ b/icu4c/source/test/perf/unisetperf/draft/contperf.bat
@@ -1,5 +1,5 @@
 rem  Copyright (C) 2016 and later: Unicode, Inc. and others.
-rem  License & terms of use: http://www.unicode.org/copyright.html#License
+rem  License & terms of use: http://www.unicode.org/copyright.html
 
 rem  Copyright (c) 2007, International Business Machines Corporation and
 rem  others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/unisetperf/draft/contperf.sh b/icu4c/source/test/perf/unisetperf/draft/contperf.sh
index 20a15a2..bfe0ae8 100755
--- a/icu4c/source/test/perf/unisetperf/draft/contperf.sh
+++ b/icu4c/source/test/perf/unisetperf/draft/contperf.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2007, International Business Machines Corporation and
 # others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/unisetperf/draft/span16perf.bat b/icu4c/source/test/perf/unisetperf/draft/span16perf.bat
index 8df7e3e..91ecd91 100755
--- a/icu4c/source/test/perf/unisetperf/draft/span16perf.bat
+++ b/icu4c/source/test/perf/unisetperf/draft/span16perf.bat
@@ -1,5 +1,5 @@
 rem  Copyright (C) 2016 and later: Unicode, Inc. and others.
-rem  License & terms of use: http://www.unicode.org/copyright.html#License
+rem  License & terms of use: http://www.unicode.org/copyright.html
 
 rem  Copyright (c) 2007, International Business Machines Corporation and
 rem  others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/unisetperf/draft/span16perf.sh b/icu4c/source/test/perf/unisetperf/draft/span16perf.sh
index a1cb5eb..b620aa2 100755
--- a/icu4c/source/test/perf/unisetperf/draft/span16perf.sh
+++ b/icu4c/source/test/perf/unisetperf/draft/span16perf.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2007, International Business Machines Corporation and
 # others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/unisetperf/draft/span8perf.bat b/icu4c/source/test/perf/unisetperf/draft/span8perf.bat
index 2e1561b..4846000 100755
--- a/icu4c/source/test/perf/unisetperf/draft/span8perf.bat
+++ b/icu4c/source/test/perf/unisetperf/draft/span8perf.bat
@@ -1,5 +1,5 @@
 rem  Copyright (C) 2016 and later: Unicode, Inc. and others.
-rem  License & terms of use: http://www.unicode.org/copyright.html#License
+rem  License & terms of use: http://www.unicode.org/copyright.html
 
 rem  Copyright (c) 2007, International Business Machines Corporation and
 rem  others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/unisetperf/draft/span8perf.sh b/icu4c/source/test/perf/unisetperf/draft/span8perf.sh
index fce51e2..200303f 100755
--- a/icu4c/source/test/perf/unisetperf/draft/span8perf.sh
+++ b/icu4c/source/test/perf/unisetperf/draft/span8perf.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (c) 2007, International Business Machines Corporation and
 # others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/unisetperf/draft/trieset.cpp b/icu4c/source/test/perf/unisetperf/draft/trieset.cpp
index ad5afde..0e007d7 100644
--- a/icu4c/source/test/perf/unisetperf/draft/trieset.cpp
+++ b/icu4c/source/test/perf/unisetperf/draft/trieset.cpp
@@ -1,7 +1,7 @@
 /*  
 *************************************************************************
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *************************************************************************
 *************************************************************************
 *   Copyright (C) 2007, International Business Machines
diff --git a/icu4c/source/test/perf/unisetperf/draft/unicont.h b/icu4c/source/test/perf/unisetperf/draft/unicont.h
index 19b5791..aeb43d2 100644
--- a/icu4c/source/test/perf/unisetperf/draft/unicont.h
+++ b/icu4c/source/test/perf/unisetperf/draft/unicont.h
@@ -1,7 +1,7 @@
 /*  
 *************************************************************************
 *   © 2016 and later: Unicode, Inc. and others.
-*   License & terms of use: http://www.unicode.org/copyright.html#License
+*   License & terms of use: http://www.unicode.org/copyright.html
 *************************************************************************
 *************************************************************************
 *   Copyright (C) 2007, International Business Machines
diff --git a/icu4c/source/test/perf/unisetperf/unisetperf.cpp b/icu4c/source/test/perf/unisetperf/unisetperf.cpp
index cfeb3ad..6bc7957 100644
--- a/icu4c/source/test/perf/unisetperf/unisetperf.cpp
+++ b/icu4c/source/test/perf/unisetperf/unisetperf.cpp
@@ -1,7 +1,7 @@
 /*  
 **************************************************************************
 *    © 2016 and later: Unicode, Inc. and others.
-*    License & terms of use: http://www.unicode.org/copyright.html#License
+*    License & terms of use: http://www.unicode.org/copyright.html
 **************************************************************************
 **************************************************************************
 *   Copyright (C) 2014, International Business Machines
diff --git a/icu4c/source/test/perf/unisetperf/unisetperf.pl b/icu4c/source/test/perf/unisetperf/unisetperf.pl
index f4a5a5b..9de7c69 100755
--- a/icu4c/source/test/perf/unisetperf/unisetperf.pl
+++ b/icu4c/source/test/perf/unisetperf/unisetperf.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/unisetperf/unisetperf.vcxproj b/icu4c/source/test/perf/unisetperf/unisetperf.vcxproj
index 7e68901..c68b700 100644
--- a/icu4c/source/test/perf/unisetperf/unisetperf.vcxproj
+++ b/icu4c/source/test/perf/unisetperf/unisetperf.vcxproj
@@ -47,22 +47,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/test/perf/usetperf/Makefile.in b/icu4c/source/test/perf/usetperf/Makefile.in
index 55b0f3f..e5c17b6 100644
--- a/icu4c/source/test/perf/usetperf/Makefile.in
+++ b/icu4c/source/test/perf/usetperf/Makefile.in
@@ -1,6 +1,6 @@
 ## Makefile.in for ICU - test/perf/usetperf
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 2001-2011, International Business Machines Corporation and
 ## others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/usetperf/UsetPerf.pl b/icu4c/source/test/perf/usetperf/UsetPerf.pl
index e486836..02c6675 100755
--- a/icu4c/source/test/perf/usetperf/UsetPerf.pl
+++ b/icu4c/source/test/perf/usetperf/UsetPerf.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/usetperf/bitset.cpp b/icu4c/source/test/perf/usetperf/bitset.cpp
index ce8842d..71da112 100644
--- a/icu4c/source/test/perf/usetperf/bitset.cpp
+++ b/icu4c/source/test/perf/usetperf/bitset.cpp
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 ***********************************************************************
 * Copyright (c) 2002-2005, International Business Machines
@@ -35,7 +35,7 @@
     uint32_t longIndex = bitIndex >> 5;
     int32_t bitInLong = bitIndex & 0x1F;
     return (longIndex < len) ? (((data[longIndex] >> bitInLong) & 1) != 0)
-        : FALSE;
+        : false;
 }
 
 void BitSet::set(int32_t bitIndex) {
diff --git a/icu4c/source/test/perf/usetperf/bitset.h b/icu4c/source/test/perf/usetperf/bitset.h
index d03aa86..70634b7 100644
--- a/icu4c/source/test/perf/usetperf/bitset.h
+++ b/icu4c/source/test/perf/usetperf/bitset.h
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 ***********************************************************************
 * Copyright (c) 2002-2005, International Business Machines
diff --git a/icu4c/source/test/perf/usetperf/usetperf.cpp b/icu4c/source/test/perf/usetperf/usetperf.cpp
index 337b262..0885a5d 100644
--- a/icu4c/source/test/perf/usetperf/usetperf.cpp
+++ b/icu4c/source/test/perf/usetperf/usetperf.cpp
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 ***********************************************************************
 * Copyright (c) 2002-2005, International Business Machines
diff --git a/icu4c/source/test/perf/usetperf/usetperf.vcxproj b/icu4c/source/test/perf/usetperf/usetperf.vcxproj
index 801b8a8..9c56643 100644
--- a/icu4c/source/test/perf/usetperf/usetperf.vcxproj
+++ b/icu4c/source/test/perf/usetperf/usetperf.vcxproj
@@ -47,22 +47,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/test/perf/ustrperf/Makefile.in b/icu4c/source/test/perf/ustrperf/Makefile.in
index e9cba1e..4d60113 100644
--- a/icu4c/source/test/perf/ustrperf/Makefile.in
+++ b/icu4c/source/test/perf/ustrperf/Makefile.in
@@ -1,6 +1,6 @@
 ## Makefile.in for ICU - test/perf/ustrperf
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 2001-2011, International Business Machines Corporation and
 ## others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/ustrperf/StringPerf.pl b/icu4c/source/test/perf/ustrperf/StringPerf.pl
index f477e6e..378cbc1 100755
--- a/icu4c/source/test/perf/ustrperf/StringPerf.pl
+++ b/icu4c/source/test/perf/ustrperf/StringPerf.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  *License & terms of use: http://www.unicode.org/copyright.html#License
+#  *License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/ustrperf/StringPerf_r.pl b/icu4c/source/test/perf/ustrperf/StringPerf_r.pl
index db2c5e0..5875950 100755
--- a/icu4c/source/test/perf/ustrperf/StringPerf_r.pl
+++ b/icu4c/source/test/perf/ustrperf/StringPerf_r.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  *License & terms of use: http://www.unicode.org/copyright.html#License
+#  *License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/ustrperf/stringperf.cpp b/icu4c/source/test/perf/ustrperf/stringperf.cpp
index d9b5c12..420b1b3 100644
--- a/icu4c/source/test/perf/ustrperf/stringperf.cpp
+++ b/icu4c/source/test/perf/ustrperf/stringperf.cpp
@@ -1,6 +1,6 @@
 /***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  ***********************************************************************
  ***********************************************************************
diff --git a/icu4c/source/test/perf/ustrperf/stringperf.h b/icu4c/source/test/perf/ustrperf/stringperf.h
index 5392ee7..59b8418 100644
--- a/icu4c/source/test/perf/ustrperf/stringperf.h
+++ b/icu4c/source/test/perf/ustrperf/stringperf.h
@@ -1,7 +1,7 @@
 /*
 ***********************************************************************
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 ***********************************************************************
 * Copyright (c) 2002-2016, International Business Machines
diff --git a/icu4c/source/test/perf/ustrperf/stringperf.vcxproj b/icu4c/source/test/perf/ustrperf/stringperf.vcxproj
index a6b4e5c..86dd1ae 100644
--- a/icu4c/source/test/perf/ustrperf/stringperf.vcxproj
+++ b/icu4c/source/test/perf/ustrperf/stringperf.vcxproj
@@ -47,22 +47,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/test/perf/utfperf/Makefile.in b/icu4c/source/test/perf/utfperf/Makefile.in
index a83cd69..3896fd2 100644
--- a/icu4c/source/test/perf/utfperf/Makefile.in
+++ b/icu4c/source/test/perf/utfperf/Makefile.in
@@ -1,6 +1,6 @@
 ## Makefile.in for ICU - test/perf/utfperf
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 2001-2011, International Business Machines Corporation and
 ## others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/utfperf/UtfPerf.pl b/icu4c/source/test/perf/utfperf/UtfPerf.pl
index b9d6cac..115611e 100755
--- a/icu4c/source/test/perf/utfperf/UtfPerf.pl
+++ b/icu4c/source/test/perf/utfperf/UtfPerf.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  ********************************************************************
 #  ********************************************************************
 #  * COPYRIGHT:
diff --git a/icu4c/source/test/perf/utfperf/utfperf.cpp b/icu4c/source/test/perf/utfperf/utfperf.cpp
index e027cc8..a48b0c7 100644
--- a/icu4c/source/test/perf/utfperf/utfperf.cpp
+++ b/icu4c/source/test/perf/utfperf/utfperf.cpp
@@ -1,7 +1,7 @@
 /*  
 **************************************************************************
  *   © 2016 and later: Unicode, Inc. and others.
- *   License & terms of use: http://www.unicode.org/copyright.html#License
+ *   License & terms of use: http://www.unicode.org/copyright.html
  *************************************************************************
  *************************************************************************
  *   Copyright (C) 2002-2014, International Business Machines
diff --git a/icu4c/source/test/perf/utfperf/utfperf.vcxproj b/icu4c/source/test/perf/utfperf/utfperf.vcxproj
index 0d0eef7..49aea66 100644
--- a/icu4c/source/test/perf/utfperf/utfperf.vcxproj
+++ b/icu4c/source/test/perf/utfperf/utfperf.vcxproj
@@ -47,22 +47,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/test/perf/utrie2perf/Makefile.in b/icu4c/source/test/perf/utrie2perf/Makefile.in
index 7475925..5cebe56 100644
--- a/icu4c/source/test/perf/utrie2perf/Makefile.in
+++ b/icu4c/source/test/perf/utrie2perf/Makefile.in
@@ -1,6 +1,6 @@
 ## Makefile.in for ICU - test/perf/utrie2perf
 ## Copyright (C) 2016 and later: Unicode, Inc. and others.
-## License & terms of use: http://www.unicode.org/copyright.html#License
+## License & terms of use: http://www.unicode.org/copyright.html
 ##
 ## Copyright (c) 2001-2011, International Business Machines Corporation and
 ## others. All Rights Reserved.
diff --git a/icu4c/source/test/perf/utrie2perf/utrie2perf.bat b/icu4c/source/test/perf/utrie2perf/utrie2perf.bat
index 7c7d64a..83b155e 100755
--- a/icu4c/source/test/perf/utrie2perf/utrie2perf.bat
+++ b/icu4c/source/test/perf/utrie2perf/utrie2perf.bat
@@ -1,5 +1,5 @@
 rem  Copyright (C) 2016 and later: Unicode, Inc. and others.
-rem  License & terms of use: http://www.unicode.org/copyright.html#License
+rem  License & terms of use: http://www.unicode.org/copyright.html
 
 rem Copyright (C) 2008, International Business Machines Corporation and others.
 rem All Rights Reserved.
diff --git a/icu4c/source/test/perf/utrie2perf/utrie2perf.cpp b/icu4c/source/test/perf/utrie2perf/utrie2perf.cpp
index 8b28407..761ad0c 100644
--- a/icu4c/source/test/perf/utrie2perf/utrie2perf.cpp
+++ b/icu4c/source/test/perf/utrie2perf/utrie2perf.cpp
@@ -1,7 +1,7 @@
 /*  
  ***********************************************************************
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  ***********************************************************************
  ***********************************************************************
  *   Copyright (C) 2002-2014, International Business Machines
diff --git a/icu4c/source/test/perf/utrie2perf/utrie2perf.sh b/icu4c/source/test/perf/utrie2perf/utrie2perf.sh
index 788cce9..3753453 100755
--- a/icu4c/source/test/perf/utrie2perf/utrie2perf.sh
+++ b/icu4c/source/test/perf/utrie2perf/utrie2perf.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (C) 2008, International Business Machines Corporation and others.
 # All Rights Reserved.
diff --git a/icu4c/source/test/perf/utrie2perf/utrie2perf.vcxproj b/icu4c/source/test/perf/utrie2perf/utrie2perf.vcxproj
index bca5958..d829fcb 100644
--- a/icu4c/source/test/perf/utrie2perf/utrie2perf.vcxproj
+++ b/icu4c/source/test/perf/utrie2perf/utrie2perf.vcxproj
@@ -47,22 +47,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/test/testdata/break_rules/README.md b/icu4c/source/test/testdata/break_rules/README.md
index b5b9bd8..1deb4df 100644
--- a/icu4c/source/test/testdata/break_rules/README.md
+++ b/icu4c/source/test/testdata/break_rules/README.md
@@ -1,6 +1,6 @@
-<!--
+<!--
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2015-2016, International Business Machines Corporation and others. All Rights Reserved.
 -->
diff --git a/icu4c/source/test/testdata/break_rules/sentence.txt b/icu4c/source/test/testdata/break_rules/sentence.txt
index ed0918f..5f6843c 100644
--- a/icu4c/source/test/testdata/break_rules/sentence.txt
+++ b/icu4c/source/test/testdata/break_rules/sentence.txt
@@ -1,6 +1,6 @@
 #
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 
 # Copyright (c) 2016, International Business Machines Corporation and others. All Rights Reserved.
 # file: sentence.txt
diff --git a/icu4c/source/test/testdata/calendar.txt b/icu4c/source/test/testdata/calendar.txt
index 83b9301..f4ebc35 100644
--- a/icu4c/source/test/testdata/calendar.txt
+++ b/icu4c/source/test/testdata/calendar.txt
@@ -438,7 +438,7 @@
                     "MILLIS=-180799750799999",
                     "add",
                     "YEAR=100000", // year + 100000
-                    "MILLIS=2974930006022001",
+                    "MILLIS=2974932601622001",
                },
             }
         }	          
diff --git a/icu4c/source/test/testdata/cldr/units/_readme.txt b/icu4c/source/test/testdata/cldr/units/_readme.txt
new file mode 100644
index 0000000..323c53f
--- /dev/null
+++ b/icu4c/source/test/testdata/cldr/units/_readme.txt
@@ -0,0 +1,6 @@
+# Test data for units: conversions and preferences
+#  Copyright © 1991-2020 Unicode, Inc.
+#  For terms of use, see http://www.unicode.org/copyright.html
+#  Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+#  CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+# The format may vary between folders or files.
diff --git a/icu4c/source/test/testdata/cldr/units/unitPreferencesTest.txt b/icu4c/source/test/testdata/cldr/units/unitPreferencesTest.txt
new file mode 100644
index 0000000..b0dabe0
--- /dev/null
+++ b/icu4c/source/test/testdata/cldr/units/unitPreferencesTest.txt
@@ -0,0 +1,454 @@
+# Test data for unit preferences
+#  Copyright © 1991-2020 Unicode, Inc.
+#  For terms of use, see http://www.unicode.org/copyright.html
+#  Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+#  CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# Format:
+#	Quantity;	Usage;	Region;	Input (r);	Input (d);	Input Unit;	Output (r);	Output (d);	Output Unit
+#
+# Use: Convert the Input amount & unit according to the Usage and Region.
+#	 The result should match the Output amount and unit.
+#	 Both rational (r) and double64 (d) forms of the input and output amounts are supplied so that implementations
+#	 have two options for testing based on the precision in their implementations. For example:
+#	   3429 / 12500; 0.27432; meter;
+#	 The Output amount and Unit are repeated for mixed units. In such a case, only the smallest unit will have
+#	 both a rational and decimal amount; the others will have a single integer value, such as:
+#	   length; person-height; CA; 3429 / 12500; 0.27432; meter; 2; foot; 54 / 5; 10.8; inch
+#	 The input and output units are unit identifers; in particular, the output does not have further processing:
+#		 • no localization
+#		 • no adjustment for pluralization
+#		 • no formatted with the skeleton
+#		 • no suppression of zero values (for secondary -and- units such as pound in stone-and-pound)
+#
+# Generation: Set GENERATE_TESTS in TestUnits.java, and look at TestUnitPreferences results.
+
+area;	default;	001;	1100000;	1100000.0;	square-meter;	11 / 10;	1.1;	square-kilometer
+area;	default;	001;	1000000;	1000000.0;	square-meter;	1;	1.0;	square-kilometer
+area;	default;	001;	900000;	900000.0;	square-meter;	90;	90.0;	hectare
+area;	default;	001;	10000;	10000.0;	square-meter;	1;	1.0;	hectare
+area;	default;	001;	9000;	9000.0;	square-meter;	9000;	9000.0;	square-meter
+area;	default;	001;	1;	1.0;	square-meter;	1;	1.0;	square-meter
+area;	default;	001;	9 / 10;	0.9;	square-meter;	9000;	9000.0;	square-centimeter
+area;	default;	001;	1 / 10000;	1.0E-4;	square-meter;	1;	1.0;	square-centimeter
+area;	default;	001;	9 / 100000;	9.0E-5;	square-meter;	9 / 10;	0.9;	square-centimeter
+
+area;	default;	GB;	222577103232 / 78125;	2848986.9213696;	square-meter;	11 / 10;	1.1;	square-mile
+area;	default;	GB;	40468564224 / 15625;	2589988.110336;	square-meter;	1;	1.0;	square-mile
+area;	default;	GB;	182108539008 / 78125;	2330989.2993024;	square-meter;	576;	576.0;	acre
+area;	default;	GB;	316160658 / 78125;	4046.8564224;	square-meter;	1;	1.0;	acre
+area;	default;	GB;	1422722961 / 390625;	3642.17078016;	square-meter;	39204;	39204.0;	square-foot
+area;	default;	GB;	145161 / 1562500;	0.09290304;	square-meter;	1;	1.0;	square-foot
+area;	default;	GB;	1306449 / 15625000;	0.083612736;	square-meter;	648 / 5;	129.6;	square-inch
+area;	default;	GB;	16129 / 25000000;	6.4516E-4;	square-meter;	1;	1.0;	square-inch
+area;	default;	GB;	145161 / 250000000;	5.80644E-4;	square-meter;	9 / 10;	0.9;	square-inch
+
+area;	geograph;	001;	1100000;	1100000.0;	square-meter;	11 / 10;	1.1;	square-kilometer
+area;	geograph;	001;	1000000;	1000000.0;	square-meter;	1;	1.0;	square-kilometer
+area;	geograph;	001;	900000;	900000.0;	square-meter;	9 / 10;	0.9;	square-kilometer
+
+area;	geograph;	GB;	222577103232 / 78125;	2848986.9213696;	square-meter;	11 / 10;	1.1;	square-mile
+area;	geograph;	GB;	40468564224 / 15625;	2589988.110336;	square-meter;	1;	1.0;	square-mile
+area;	geograph;	GB;	182108539008 / 78125;	2330989.2993024;	square-meter;	9 / 10;	0.9;	square-mile
+
+area;	land;	001;	11000;	11000.0;	square-meter;	11 / 10;	1.1;	hectare
+area;	land;	001;	10000;	10000.0;	square-meter;	1;	1.0;	hectare
+area;	land;	001;	9000;	9000.0;	square-meter;	9 / 10;	0.9;	hectare
+
+area;	land;	GB;	1738883619 / 390625;	4451.54206464;	square-meter;	11 / 10;	1.1;	acre
+area;	land;	GB;	316160658 / 78125;	4046.8564224;	square-meter;	1;	1.0;	acre
+area;	land;	GB;	1422722961 / 390625;	3642.17078016;	square-meter;	9 / 10;	0.9;	acre
+
+concentration;	blood-glucose;	AG;	662435483600000000000000;	6.624354836E23;	item-per-cubic-meter;	11 / 10;	1.1;	millimole-per-liter
+concentration;	blood-glucose;	AG;	602214076000000000000000;	6.02214076E23;	item-per-cubic-meter;	1;	1.0;	millimole-per-liter
+concentration;	blood-glucose;	AG;	541992668400000000000000;	5.419926684E23;	item-per-cubic-meter;	9 / 10;	0.9;	millimole-per-liter
+
+concentration;	default;	001;	11 / 10;	1.1;	item-per-cubic-meter;	11 / 10;	1.1;	item-per-cubic-meter
+concentration;	default;	001;	1;	1.0;	item-per-cubic-meter;	1;	1.0;	item-per-cubic-meter
+concentration;	default;	001;	9 / 10;	0.9;	item-per-cubic-meter;	9 / 10;	0.9;	item-per-cubic-meter
+
+consumption;	default;	001;	11 / 1000000000;	1.1E-8;	cubic-meter-per-meter;	11 / 10;	1.1;	liter-per-100-kilometer
+consumption;	default;	001;	1 / 100000000;	1.0E-8;	cubic-meter-per-meter;	1;	1.0;	liter-per-100-kilometer
+consumption;	default;	001;	9 / 1000000000;	9.0E-9;	cubic-meter-per-meter;	9 / 10;	0.9;	liter-per-100-kilometer
+
+consumption;	vehicle-fuel;	001;	11 / 1000000000;	1.1E-8;	cubic-meter-per-meter;	11 / 10;	1.1;	liter-per-100-kilometer
+consumption;	vehicle-fuel;	001;	1 / 100000000;	1.0E-8;	cubic-meter-per-meter;	1;	1.0;	liter-per-100-kilometer
+consumption;	vehicle-fuel;	001;	9 / 1000000000;	9.0E-9;	cubic-meter-per-meter;	9 / 10;	0.9;	liter-per-100-kilometer
+
+consumption;	vehicle-fuel;	BR;	11 / 10000000;	1.1E-6;	cubic-meter-per-meter;	11 / 10;	1.1;	liter-per-kilometer
+consumption;	vehicle-fuel;	BR;	1 / 1000000;	1.0E-6;	cubic-meter-per-meter;	1;	1.0;	liter-per-kilometer
+consumption;	vehicle-fuel;	BR;	9 / 10000000;	9.0E-7;	cubic-meter-per-meter;	9 / 10;	0.9;	liter-per-kilometer
+
+consumption-inverse;	default;	001;	110000000;	1.1E8;	meter-per-cubic-meter;	11 / 10;	1.1;	kilometer-per-centiliter
+consumption-inverse;	default;	001;	100000000;	1.0E8;	meter-per-cubic-meter;	1;	1.0;	kilometer-per-centiliter
+consumption-inverse;	default;	001;	90000000;	9.0E7;	meter-per-cubic-meter;	9 / 10;	0.9;	kilometer-per-centiliter
+
+consumption-inverse;	vehicle-fuel;	001;	110000000;	1.1E8;	meter-per-cubic-meter;	11 / 10;	1.1;	kilometer-per-centiliter
+consumption-inverse;	vehicle-fuel;	001;	100000000;	1.0E8;	meter-per-cubic-meter;	1;	1.0;	kilometer-per-centiliter
+consumption-inverse;	vehicle-fuel;	001;	90000000;	9.0E7;	meter-per-cubic-meter;	9 / 10;	0.9;	kilometer-per-centiliter
+
+consumption-inverse;	vehicle-fuel;	US;	52800000000 / 112903;	467658.0781732992;	meter-per-cubic-meter;	11 / 10;	1.1;	mile-per-gallon
+consumption-inverse;	vehicle-fuel;	US;	48000000000 / 112903;	425143.707430272;	meter-per-cubic-meter;	1;	1.0;	mile-per-gallon
+consumption-inverse;	vehicle-fuel;	US;	43200000000 / 112903;	382629.3366872448;	meter-per-cubic-meter;	9 / 10;	0.9;	mile-per-gallon
+
+consumption-inverse;	vehicle-fuel;	CA;	177027840000 / 454609;	389406.8089281118;	meter-per-cubic-meter;	11 / 10;	1.1;	mile-per-gallon-imperial
+consumption-inverse;	vehicle-fuel;	CA;	160934400000 / 454609;	354006.1899346471;	meter-per-cubic-meter;	1;	1.0;	mile-per-gallon-imperial
+consumption-inverse;	vehicle-fuel;	CA;	144840960000 / 454609;	318605.5709411824;	meter-per-cubic-meter;	9 / 10;	0.9;	mile-per-gallon-imperial
+
+duration;	default;	001;	95040;	95040.0;	second;	11 / 10;	1.1;	day
+duration;	default;	001;	86400;	86400.0;	second;	1;	1.0;	day
+duration;	default;	001;	77760;	77760.0;	second;	108 / 5;	21.6;	hour
+duration;	default;	001;	3600;	3600.0;	second;	1;	1.0;	hour
+duration;	default;	001;	3240;	3240.0;	second;	54;	54.0;	minute
+duration;	default;	001;	60;	60.0;	second;	1;	1.0;	minute
+duration;	default;	001;	54;	54.0;	second;	54;	54.0;	second
+duration;	default;	001;	1;	1.0;	second;	1;	1.0;	second
+duration;	default;	001;	9 / 10;	0.9;	second;	900;	900.0;	millisecond
+duration;	default;	001;	1 / 1000;	0.001;	second;	1;	1.0;	millisecond
+duration;	default;	001;	9 / 10000;	9.0E-4;	second;	900;	900.0;	microsecond
+duration;	default;	001;	1 / 1000000;	1.0E-6;	second;	1;	1.0;	microsecond
+duration;	default;	001;	9 / 10000000;	9.0E-7;	second;	900;	900.0;	nanosecond
+duration;	default;	001;	1 / 1000000000;	1.0E-9;	second;	1;	1.0;	nanosecond
+duration;	default;	001;	9 / 10000000000;	9.0E-10;	second;	9 / 10;	0.9;	nanosecond
+
+duration;	media;	001;	66;	66.0;	second;	1;	minute;	6;	6.0;	second
+duration;	media;	001;	60;	60.0;	second;	1;	minute;	0;	0.0;	second
+duration;	media;	001;	54;	54.0;	second;	54;	54.0;	second
+duration;	media;	001;	1;	1.0;	second;	1;	1.0;	second
+duration;	media;	001;	9 / 10;	0.9;	second;	9 / 10;	0.9;	second
+
+energy;	default;	001;	3960000;	3960000.0;	kilogram-square-meter-per-square-second;	11 / 10;	1.1;	kilowatt-hour
+energy;	default;	001;	3600000;	3600000.0;	kilogram-square-meter-per-square-second;	1;	1.0;	kilowatt-hour
+energy;	default;	001;	3240000;	3240000.0;	kilogram-square-meter-per-square-second;	9 / 10;	0.9;	kilowatt-hour
+
+energy;	food;	US;	23012 / 5;	4602.4;	kilogram-square-meter-per-square-second;	11 / 10;	1.1;	foodcalorie
+energy;	food;	US;	4184;	4184.0;	kilogram-square-meter-per-square-second;	1;	1.0;	foodcalorie
+energy;	food;	US;	18828 / 5;	3765.6;	kilogram-square-meter-per-square-second;	9 / 10;	0.9;	foodcalorie
+
+energy;	food;	001;	23012 / 5;	4602.4;	kilogram-square-meter-per-square-second;	11 / 10;	1.1;	kilocalorie
+energy;	food;	001;	4184;	4184.0;	kilogram-square-meter-per-square-second;	1;	1.0;	kilocalorie
+energy;	food;	001;	18828 / 5;	3765.6;	kilogram-square-meter-per-square-second;	9 / 10;	0.9;	kilocalorie
+
+length;	default;	001;	1100;	1100.0;	meter;	11 / 10;	1.1;	kilometer
+length;	default;	001;	1000;	1000.0;	meter;	1;	1.0;	kilometer
+length;	default;	001;	900;	900.0;	meter;	900;	900.0;	meter
+length;	default;	001;	1;	1.0;	meter;	1;	1.0;	meter
+length;	default;	001;	9 / 10;	0.9;	meter;	90;	90.0;	centimeter
+length;	default;	001;	1 / 100;	0.01;	meter;	1;	1.0;	centimeter
+length;	default;	001;	9 / 1000;	0.009;	meter;	9 / 10;	0.9;	centimeter
+
+length;	default;	GB;	1106424 / 625;	1770.2784;	meter;	11 / 10;	1.1;	mile
+length;	default;	GB;	201168 / 125;	1609.344;	meter;	1;	1.0;	mile
+length;	default;	GB;	905256 / 625;	1448.4096;	meter;	4752;	4752.0;	foot
+length;	default;	GB;	381 / 1250;	0.3048;	meter;	1;	1.0;	foot
+length;	default;	GB;	3429 / 12500;	0.27432;	meter;	54 / 5;	10.8;	inch
+length;	default;	GB;	127 / 5000;	0.0254;	meter;	1;	1.0;	inch
+length;	default;	GB;	1143 / 50000;	0.02286;	meter;	9 / 10;	0.9;	inch
+
+length;	focal-length;	001;	11 / 10000;	0.0011;	meter;	11 / 10;	1.1;	millimeter
+length;	focal-length;	001;	1 / 1000;	0.001;	meter;	1;	1.0;	millimeter
+length;	focal-length;	001;	9 / 10000;	9.0E-4;	meter;	9 / 10;	0.9;	millimeter
+
+length;	person;	001;	11 / 1000;	0.011;	meter;	11 / 10;	1.1;	centimeter
+length;	person;	001;	1 / 100;	0.01;	meter;	1;	1.0;	centimeter
+length;	person;	001;	9 / 1000;	0.009;	meter;	9 / 10;	0.9;	centimeter
+
+length;	person;	CA;	1397 / 50000;	0.02794;	meter;	11 / 10;	1.1;	inch
+length;	person;	CA;	127 / 5000;	0.0254;	meter;	1;	1.0;	inch
+length;	person;	CA;	1143 / 50000;	0.02286;	meter;	9 / 10;	0.9;	inch
+
+length;	person-height;	001;	11 / 1000;	0.011;	meter;	11 / 10;	1.1;	centimeter
+length;	person-height;	001;	1 / 100;	0.01;	meter;	1;	1.0;	centimeter
+length;	person-height;	001;	9 / 1000;	0.009;	meter;	9 / 10;	0.9;	centimeter
+
+length;	person-height;	CA;	11811 / 12500;	0.94488;	meter;	3;	foot;	6 / 5;	1.2;	inch
+length;	person-height;	CA;	1143 / 1250;	0.9144;	meter;	3;	foot;	0;	0.0;	inch
+length;	person-height;	CA;	11049 / 12500;	0.88392;	meter;	174 / 5;	34.8;	inch
+length;	person-height;	CA;	127 / 5000;	0.0254;	meter;	1;	1.0;	inch
+length;	person-height;	CA;	1143 / 50000;	0.02286;	meter;	9 / 10;	0.9;	inch
+
+length;	person-height;	AT;	11 / 10;	1.1;	meter;	1;	meter;	10;	10.0;	centimeter
+length;	person-height;	AT;	1;	1.0;	meter;	1;	meter;	0;	0.0;	centimeter
+length;	person-height;	AT;	9 / 10;	0.9;	meter;	0;	meter;	90;	90.0;	centimeter
+
+length;	rainfall;	BR;	11 / 1000;	0.011;	meter;	11 / 10;	1.1;	centimeter
+length;	rainfall;	BR;	1 / 100;	0.01;	meter;	1;	1.0;	centimeter
+length;	rainfall;	BR;	9 / 1000;	0.009;	meter;	9 / 10;	0.9;	centimeter
+
+length;	rainfall;	US;	1397 / 50000;	0.02794;	meter;	11 / 10;	1.1;	inch
+length;	rainfall;	US;	127 / 5000;	0.0254;	meter;	1;	1.0;	inch
+length;	rainfall;	US;	1143 / 50000;	0.02286;	meter;	9 / 10;	0.9;	inch
+
+length;	rainfall;	001;	11 / 10000;	0.0011;	meter;	11 / 10;	1.1;	millimeter
+length;	rainfall;	001;	1 / 1000;	0.001;	meter;	1;	1.0;	millimeter
+length;	rainfall;	001;	9 / 10000;	9.0E-4;	meter;	9 / 10;	0.9;	millimeter
+
+length;	road;	001;	1000;	1000.0;	meter;	1;	1.0;	kilometer
+length;	road;	001;	900;	900.0;	meter;	9 / 10;	0.9;	kilometer
+length;	road;	001;	800;	800.0;	meter;	800;	800.0;	meter
+length;	road;	001;	300;	300.0;	meter;	300;	300.0;	meter
+length;	road;	001;	2999 / 10;	299.9;	meter;	2999 / 10;	299.9;	meter
+length;	road;	001;	1;	1.0;	meter;	1;	1.0;	meter
+length;	road;	001;	9 / 10;	0.9;	meter;	9 / 10;	0.9;	meter
+
+length;	road;	US;	603504 / 625;	965.6064;	meter;	3 / 5;	0.6;	mile
+length;	road;	US;	100584 / 125;	804.672;	meter;	1 / 2;	0.5;	mile
+length;	road;	US;	402336 / 625;	643.7376;	meter;	2112;	2112.0;	foot
+length;	road;	US;	762 / 25;	30.48;	meter;	100;	100.0;	foot
+length;	road;	US;	380619 / 12500;	30.44952;	meter;	999 / 10;	99.9;	foot
+length;	road;	US;	381 / 1250;	0.3048;	meter;	1;	1.0;	foot
+length;	road;	US;	3429 / 12500;	0.27432;	meter;	9 / 10;	0.9;	foot
+
+length;	road;	GB;	603504 / 625;	965.6064;	meter;	3 / 5;	0.6;	mile
+length;	road;	GB;	100584 / 125;	804.672;	meter;	1 / 2;	0.5;	mile
+length;	road;	GB;	402336 / 625;	643.7376;	meter;	704;	704.0;	yard
+length;	road;	GB;	2286 / 25;	91.44;	meter;	100;	100.0;	yard
+length;	road;	GB;	1141857 / 12500;	91.34856;	meter;	999 / 10;	99.9;	yard
+length;	road;	GB;	1143 / 1250;	0.9144;	meter;	1;	1.0;	yard
+length;	road;	GB;	10287 / 12500;	0.82296;	meter;	9 / 10;	0.9;	yard
+
+length;	road;	SE;	11000;	11000.0;	meter;	11 / 10;	1.1;	mile-scandinavian
+length;	road;	SE;	10000;	10000.0;	meter;	1;	1.0;	mile-scandinavian
+length;	road;	SE;	9000;	9000.0;	meter;	9;	9.0;	kilometer
+length;	road;	SE;	1000;	1000.0;	meter;	1;	1.0;	kilometer
+length;	road;	SE;	900;	900.0;	meter;	900;	900.0;	meter
+length;	road;	SE;	300;	300.0;	meter;	300;	300.0;	meter
+length;	road;	SE;	2999 / 10;	299.9;	meter;	2999 / 10;	299.9;	meter
+length;	road;	SE;	1;	1.0;	meter;	1;	1.0;	meter
+length;	road;	SE;	9 / 10;	0.9;	meter;	9 / 10;	0.9;	meter
+
+length;	snowfall;	001;	11 / 1000;	0.011;	meter;	11 / 10;	1.1;	centimeter
+length;	snowfall;	001;	1 / 100;	0.01;	meter;	1;	1.0;	centimeter
+length;	snowfall;	001;	9 / 1000;	0.009;	meter;	9 / 10;	0.9;	centimeter
+
+length;	snowfall;	US;	1397 / 50000;	0.02794;	meter;	11 / 10;	1.1;	inch
+length;	snowfall;	US;	127 / 5000;	0.0254;	meter;	1;	1.0;	inch
+length;	snowfall;	US;	1143 / 50000;	0.02286;	meter;	9 / 10;	0.9;	inch
+
+length;	vehicle;	GB;	4191 / 12500;	0.33528;	meter;	1;	foot;	6 / 5;	1.2;	inch
+length;	vehicle;	GB;	381 / 1250;	0.3048;	meter;	1;	foot;	0;	0.0;	inch
+length;	vehicle;	GB;	3429 / 12500;	0.27432;	meter;	0;	foot;	54 / 5;	10.8;	inch
+
+length;	vehicle;	001;	11 / 10;	1.1;	meter;	11 / 10;	1.1;	meter
+length;	vehicle;	001;	1;	1.0;	meter;	1;	1.0;	meter
+length;	vehicle;	001;	9 / 10;	0.9;	meter;	9 / 10;	0.9;	meter
+
+length;	vehicle;	MX;	11 / 10;	1.1;	meter;	1;	meter;	10;	10.0;	centimeter
+length;	vehicle;	MX;	1;	1.0;	meter;	1;	meter;	0;	0.0;	centimeter
+length;	vehicle;	MX;	9 / 10;	0.9;	meter;	0;	meter;	90;	90.0;	centimeter
+
+length;	visiblty;	001;	200;	200.0;	meter;	1 / 5;	0.2;	kilometer
+length;	visiblty;	001;	100;	100.0;	meter;	1 / 10;	0.1;	kilometer
+length;	visiblty;	001;	1;	1.0;	meter;	1;	1.0;	meter
+length;	visiblty;	001;	9 / 10;	0.9;	meter;	9 / 10;	0.9;	meter
+length;	visiblty;	001;	0;	0.0;	meter;	0;	0.0;	meter
+
+length;	visiblty;	DE;	11 / 10;	1.1;	meter;	11 / 10;	1.1;	meter
+length;	visiblty;	DE;	1;	1.0;	meter;	1;	1.0;	meter
+length;	visiblty;	DE;	9 / 10;	0.9;	meter;	9 / 10;	0.9;	meter
+
+length;	visiblty;	GB;	1106424 / 625;	1770.2784;	meter;	11 / 10;	1.1;	mile
+length;	visiblty;	GB;	201168 / 125;	1609.344;	meter;	1;	1.0;	mile
+length;	visiblty;	GB;	905256 / 625;	1448.4096;	meter;	4752;	4752.0;	foot
+length;	visiblty;	GB;	381 / 1250;	0.3048;	meter;	1;	1.0;	foot
+length;	visiblty;	GB;	3429 / 12500;	0.27432;	meter;	9 / 10;	0.9;	foot
+
+mass;	default;	001;	1100;	1100.0;	kilogram;	11 / 10;	1.1;	metric-ton
+mass;	default;	001;	1000;	1000.0;	kilogram;	1;	1.0;	metric-ton
+mass;	default;	001;	900;	900.0;	kilogram;	900;	900.0;	kilogram
+mass;	default;	001;	1;	1.0;	kilogram;	1;	1.0;	kilogram
+mass;	default;	001;	9 / 10;	0.9;	kilogram;	900;	900.0;	gram
+mass;	default;	001;	1 / 1000;	0.001;	kilogram;	1;	1.0;	gram
+mass;	default;	001;	9 / 10000;	9.0E-4;	kilogram;	900;	900.0;	milligram
+mass;	default;	001;	1 / 1000000;	1.0E-6;	kilogram;	1;	1.0;	milligram
+mass;	default;	001;	9 / 10000000;	9.0E-7;	kilogram;	900;	900.0;	microgram
+mass;	default;	001;	1 / 1000000000;	1.0E-9;	kilogram;	1;	1.0;	microgram
+mass;	default;	001;	9 / 10000000000;	9.0E-10;	kilogram;	9 / 10;	0.9;	microgram
+
+mass;	default;	GB;	498951607 / 500000;	997.903214;	kilogram;	11 / 10;	1.1;	ton
+mass;	default;	GB;	45359237 / 50000;	907.18474;	kilogram;	1;	1.0;	ton
+mass;	default;	GB;	408233133 / 500000;	816.466266;	kilogram;	1800;	1800.0;	pound
+mass;	default;	GB;	45359237 / 100000000;	0.45359237;	kilogram;	1;	1.0;	pound
+mass;	default;	GB;	408233133 / 1000000000;	0.408233133;	kilogram;	72 / 5;	14.4;	ounce
+mass;	default;	GB;	45359237 / 1600000000;	0.028349523125;	kilogram;	1;	1.0;	ounce
+mass;	default;	GB;	408233133 / 16000000000;	0.0255145708125;	kilogram;	9 / 10;	0.9;	ounce
+
+mass;	person;	001;	11 / 10;	1.1;	kilogram;	11 / 10;	1.1;	kilogram
+mass;	person;	001;	1;	1.0;	kilogram;	1;	1.0;	kilogram
+mass;	person;	001;	9 / 10;	0.9;	kilogram;	900;	900.0;	gram
+mass;	person;	001;	1 / 1000;	0.001;	kilogram;	1;	1.0;	gram
+mass;	person;	001;	9 / 10000;	9.0E-4;	kilogram;	9 / 10;	0.9;	gram
+
+mass;	person;	DZ;	11 / 10;	1.1;	kilogram;	1;	kilogram;	100;	100.0;	gram
+mass;	person;	DZ;	1;	1.0;	kilogram;	1;	kilogram;	0;	0.0;	gram
+mass;	person;	DZ;	9 / 10;	0.9;	kilogram;	0;	kilogram;	900;	900.0;	gram
+
+mass;	person;	US;	498951607 / 1000000000;	0.498951607;	kilogram;	11 / 10;	1.1;	pound
+mass;	person;	US;	45359237 / 100000000;	0.45359237;	kilogram;	1;	1.0;	pound
+mass;	person;	US;	408233133 / 1000000000;	0.408233133;	kilogram;	0;	pound;	72 / 5;	14.4;	ounce
+
+mass;	person;	GB;	3492661249 / 500000000;	6.985322498;	kilogram;	1;	stone;	7 / 5;	1.4;	pound
+mass;	person;	GB;	317514659 / 50000000;	6.35029318;	kilogram;	1;	stone;	0;	0.0;	pound
+mass;	person;	GB;	2857631931 / 500000000;	5.715263862;	kilogram;	12;	pound;	48 / 5;	9.6;	ounce
+mass;	person;	GB;	45359237 / 100000000;	0.45359237;	kilogram;	1;	pound;	0;	0.0;	ounce
+mass;	person;	GB;	408233133 / 1000000000;	0.408233133;	kilogram;	0;	pound;	72 / 5;	14.4;	ounce
+
+mass;	person;	HK;	498951607 / 1000000000;	0.498951607;	kilogram;	1;	pound;	8 / 5;	1.6;	ounce
+mass;	person;	HK;	45359237 / 100000000;	0.45359237;	kilogram;	1;	pound;	0;	0.0;	ounce
+mass;	person;	HK;	408233133 / 1000000000;	0.408233133;	kilogram;	0;	pound;	72 / 5;	14.4;	ounce
+
+mass-density;	blood-glucose;	001;	11 / 1000;	0.011;	kilogram-per-cubic-meter;	11 / 10;	1.1;	milligram-per-deciliter
+mass-density;	blood-glucose;	001;	1 / 100;	0.01;	kilogram-per-cubic-meter;	1;	1.0;	milligram-per-deciliter
+mass-density;	blood-glucose;	001;	9 / 1000;	0.009;	kilogram-per-cubic-meter;	9 / 10;	0.9;	milligram-per-deciliter
+
+mass-density;	default;	001;	11 / 10;	1.1;	kilogram-per-cubic-meter;	11 / 10;	1.1;	kilogram-per-cubic-meter
+mass-density;	default;	001;	1;	1.0;	kilogram-per-cubic-meter;	1;	1.0;	kilogram-per-cubic-meter
+mass-density;	default;	001;	9 / 10;	0.9;	kilogram-per-cubic-meter;	9 / 10;	0.9;	kilogram-per-cubic-meter
+
+power;	default;	001;	1100000000;	1.1E9;	kilogram-square-meter-per-cubic-second;	11 / 10;	1.1;	gigawatt
+power;	default;	001;	1000000000;	1.0E9;	kilogram-square-meter-per-cubic-second;	1;	1.0;	gigawatt
+power;	default;	001;	900000000;	9.0E8;	kilogram-square-meter-per-cubic-second;	900;	900.0;	megawatt
+power;	default;	001;	1000000;	1000000.0;	kilogram-square-meter-per-cubic-second;	1;	1.0;	megawatt
+power;	default;	001;	900000;	900000.0;	kilogram-square-meter-per-cubic-second;	900;	900.0;	kilowatt
+power;	default;	001;	1000;	1000.0;	kilogram-square-meter-per-cubic-second;	1;	1.0;	kilowatt
+power;	default;	001;	900;	900.0;	kilogram-square-meter-per-cubic-second;	900;	900.0;	watt
+power;	default;	001;	1;	1.0;	kilogram-square-meter-per-cubic-second;	1;	1.0;	watt
+power;	default;	001;	9 / 10;	0.9;	kilogram-square-meter-per-cubic-second;	900;	900.0;	milliwatt
+power;	default;	001;	1 / 1000;	0.001;	kilogram-square-meter-per-cubic-second;	1;	1.0;	milliwatt
+power;	default;	001;	9 / 10000;	9.0E-4;	kilogram-square-meter-per-cubic-second;	9 / 10;	0.9;	milliwatt
+
+power;	engine;	001;	1100;	1100.0;	kilogram-square-meter-per-cubic-second;	11 / 10;	1.1;	kilowatt
+power;	engine;	001;	1000;	1000.0;	kilogram-square-meter-per-cubic-second;	1;	1.0;	kilowatt
+power;	engine;	001;	900;	900.0;	kilogram-square-meter-per-cubic-second;	9 / 10;	0.9;	kilowatt
+
+power;	engine;	GB;	410134929370248621 / 500000000000000;	820.2698587404972;	kilogram-square-meter-per-cubic-second;	11 / 10;	1.1;	horsepower
+power;	engine;	GB;	37284993579113511 / 50000000000000;	745.6998715822702;	kilogram-square-meter-per-cubic-second;	1;	1.0;	horsepower
+power;	engine;	GB;	335564942212021599 / 500000000000000;	671.1298844240432;	kilogram-square-meter-per-cubic-second;	9 / 10;	0.9;	horsepower
+
+pressure;	baromtrc;	001;	110;	110.0;	kilogram-per-meter-square-second;	11 / 10;	1.1;	hectopascal
+pressure;	baromtrc;	001;	100;	100.0;	kilogram-per-meter-square-second;	1;	1.0;	hectopascal
+pressure;	baromtrc;	001;	90;	90.0;	kilogram-per-meter-square-second;	9 / 10;	0.9;	hectopascal
+
+pressure;	baromtrc;	IN;	37250275043751 / 10000000000;	3725.0275043751;	kilogram-per-meter-square-second;	11 / 10;	1.1;	inch-ofhg
+pressure;	baromtrc;	IN;	3386388640341 / 1000000000;	3386.388640341;	kilogram-per-meter-square-second;	1;	1.0;	inch-ofhg
+pressure;	baromtrc;	IN;	30477497763069 / 10000000000;	3047.7497763069;	kilogram-per-meter-square-second;	9 / 10;	0.9;	inch-ofhg
+
+pressure;	baromtrc;	BR;	110;	110.0;	kilogram-per-meter-square-second;	11 / 10;	1.1;	millibar
+pressure;	baromtrc;	BR;	100;	100.0;	kilogram-per-meter-square-second;	1;	1.0;	millibar
+pressure;	baromtrc;	BR;	90;	90.0;	kilogram-per-meter-square-second;	9 / 10;	0.9;	millibar
+
+pressure;	baromtrc;	MX;	293309252313 / 2000000000;	146.6546261565;	kilogram-per-meter-square-second;	11 / 10;	1.1;	millimeter-ofhg
+pressure;	baromtrc;	MX;	26664477483 / 200000000;	133.322387415;	kilogram-per-meter-square-second;	1;	1.0;	millimeter-ofhg
+pressure;	baromtrc;	MX;	239980297347 / 2000000000;	119.9901486735;	kilogram-per-meter-square-second;	9 / 10;	0.9;	millimeter-ofhg
+
+pressure;	default;	001;	1100000;	1100000.0;	kilogram-per-meter-square-second;	11 / 10;	1.1;	megapascal
+pressure;	default;	001;	1000000;	1000000.0;	kilogram-per-meter-square-second;	1;	1.0;	megapascal
+pressure;	default;	001;	900000;	900000.0;	kilogram-per-meter-square-second;	900000;	900000.0;	pascal
+pressure;	default;	001;	1;	1.0;	kilogram-per-meter-square-second;	1;	1.0;	pascal
+pressure;	default;	001;	9 / 10;	0.9;	kilogram-per-meter-square-second;	9 / 10;	0.9;	pascal
+
+pressure;	default;	GB;	97860875535731 / 12903200000;	7584.233022485197;	kilogram-per-meter-square-second;	11 / 10;	1.1;	pound-force-per-square-inch
+pressure;	default;	GB;	8896443230521 / 1290320000;	6894.757293168361;	kilogram-per-meter-square-second;	1;	1.0;	pound-force-per-square-inch
+pressure;	default;	GB;	80067989074689 / 12903200000;	6205.281563851525;	kilogram-per-meter-square-second;	9 / 10;	0.9;	pound-force-per-square-inch
+
+speed;	default;	001;	11 / 36;	0.3055555555555556;	meter-per-second;	11 / 10;	1.1;	kilometer-per-hour
+speed;	default;	001;	5 / 18;	0.2777777777777778;	meter-per-second;	1;	1.0;	kilometer-per-hour
+speed;	default;	001;	1 / 4;	0.25;	meter-per-second;	9 / 10;	0.9;	kilometer-per-hour
+
+speed;	default;	GB;	15367 / 31250;	0.491744;	meter-per-second;	11 / 10;	1.1;	mile-per-hour
+speed;	default;	GB;	1397 / 3125;	0.44704;	meter-per-second;	1;	1.0;	mile-per-hour
+speed;	default;	GB;	12573 / 31250;	0.402336;	meter-per-second;	9 / 10;	0.9;	mile-per-hour
+
+speed;	wind;	001;	11 / 36;	0.3055555555555556;	meter-per-second;	11 / 10;	1.1;	kilometer-per-hour
+speed;	wind;	001;	5 / 18;	0.2777777777777778;	meter-per-second;	1;	1.0;	kilometer-per-hour
+speed;	wind;	001;	1 / 4;	0.25;	meter-per-second;	9 / 10;	0.9;	kilometer-per-hour
+
+speed;	wind;	FI;	11 / 10;	1.1;	meter-per-second;	11 / 10;	1.1;	meter-per-second
+speed;	wind;	FI;	1;	1.0;	meter-per-second;	1;	1.0;	meter-per-second
+speed;	wind;	FI;	9 / 10;	0.9;	meter-per-second;	9 / 10;	0.9;	meter-per-second
+
+speed;	wind;	US;	15367 / 31250;	0.491744;	meter-per-second;	11 / 10;	1.1;	mile-per-hour
+speed;	wind;	US;	1397 / 3125;	0.44704;	meter-per-second;	1;	1.0;	mile-per-hour
+speed;	wind;	US;	12573 / 31250;	0.402336;	meter-per-second;	9 / 10;	0.9;	mile-per-hour
+
+temperature;	default;	001;	1097 / 4;	274.25;	kelvin;	11 / 10;	1.1;	celsius
+temperature;	default;	001;	5483 / 20;	274.15;	kelvin;	1;	1.0;	celsius
+temperature;	default;	001;	5481 / 20;	274.05;	kelvin;	9 / 10;	0.9;	celsius
+
+temperature;	default;	US;	15359 / 60;	255.9833333333333;	kelvin;	11 / 10;	1.1;	fahrenheit
+temperature;	default;	US;	46067 / 180;	255.9277777777778;	kelvin;	1;	1.0;	fahrenheit
+temperature;	default;	US;	46057 / 180;	255.8722222222222;	kelvin;	9 / 10;	0.9;	fahrenheit
+
+temperature;	weather;	001;	1097 / 4;	274.25;	kelvin;	11 / 10;	1.1;	celsius
+temperature;	weather;	001;	5483 / 20;	274.15;	kelvin;	1;	1.0;	celsius
+temperature;	weather;	001;	5481 / 20;	274.05;	kelvin;	9 / 10;	0.9;	celsius
+
+temperature;	weather;	BS;	15359 / 60;	255.9833333333333;	kelvin;	11 / 10;	1.1;	fahrenheit
+temperature;	weather;	BS;	46067 / 180;	255.9277777777778;	kelvin;	1;	1.0;	fahrenheit
+temperature;	weather;	BS;	46057 / 180;	255.8722222222222;	kelvin;	9 / 10;	0.9;	fahrenheit
+
+volume;	default;	001;	11 / 10;	1.1;	cubic-meter;	11 / 10;	1.1;	cubic-meter
+volume;	default;	001;	1;	1.0;	cubic-meter;	1;	1.0;	cubic-meter
+volume;	default;	001;	9 / 10;	0.9;	cubic-meter;	900000;	900000.0;	cubic-centimeter
+volume;	default;	001;	1 / 1000000;	1.0E-6;	cubic-meter;	1;	1.0;	cubic-centimeter
+volume;	default;	001;	9 / 10000000;	9.0E-7;	cubic-meter;	9 / 10;	0.9;	cubic-centimeter
+
+volume;	default;	GB;	608369751 / 19531250000;	0.0311485312512;	cubic-meter;	11 / 10;	1.1;	cubic-foot
+volume;	default;	GB;	55306341 / 1953125000;	0.028316846592;	cubic-meter;	1;	1.0;	cubic-foot
+volume;	default;	GB;	497757069 / 19531250000;	0.0254851619328;	cubic-meter;	7776 / 5;	1555.2;	cubic-inch
+volume;	default;	GB;	2048383 / 125000000000;	1.6387064E-5;	cubic-meter;	1;	1.0;	cubic-inch
+volume;	default;	GB;	18435447 / 1250000000000;	1.47483576E-5;	cubic-meter;	9 / 10;	0.9;	cubic-inch
+
+volume;	fluid;	001;	11 / 10000;	0.0011;	cubic-meter;	11 / 10;	1.1;	liter
+volume;	fluid;	001;	1 / 1000;	0.001;	cubic-meter;	1;	1.0;	liter
+volume;	fluid;	001;	9 / 10000;	9.0E-4;	cubic-meter;	900;	900.0;	milliliter
+volume;	fluid;	001;	1 / 1000000;	1.0E-6;	cubic-meter;	1;	1.0;	milliliter
+volume;	fluid;	001;	9 / 10000000;	9.0E-7;	cubic-meter;	9 / 10;	0.9;	milliliter
+
+volume;	fluid;	US;	5204941203 / 1250000000000;	0.0041639529624;	cubic-meter;	11 / 10;	1.1;	gallon
+volume;	fluid;	US;	473176473 / 125000000000;	0.003785411784;	cubic-meter;	1;	1.0;	gallon
+volume;	fluid;	US;	4258588257 / 1250000000000;	0.0034068706056;	cubic-meter;	18 / 5;	3.6;	quart
+volume;	fluid;	US;	473176473 / 500000000000;	9.46352946E-4;	cubic-meter;	1;	1.0;	quart
+volume;	fluid;	US;	4258588257 / 5000000000000;	8.517176514E-4;	cubic-meter;	9 / 5;	1.8;	pint
+volume;	fluid;	US;	473176473 / 1000000000000;	4.73176473E-4;	cubic-meter;	1;	1.0;	pint
+volume;	fluid;	US;	4258588257 / 10000000000000;	4.258588257E-4;	cubic-meter;	9 / 5;	1.8;	cup
+volume;	fluid;	US;	473176473 / 2000000000000;	2.365882365E-4;	cubic-meter;	1;	1.0;	cup
+volume;	fluid;	US;	4258588257 / 20000000000000;	2.1292941285E-4;	cubic-meter;	36 / 5;	7.2;	fluid-ounce
+volume;	fluid;	US;	473176473 / 16000000000000;	2.95735295625E-5;	cubic-meter;	1;	1.0;	fluid-ounce
+volume;	fluid;	US;	4258588257 / 160000000000000;	2.661617660625E-5;	cubic-meter;	9 / 5;	1.8;	tablespoon
+volume;	fluid;	US;	473176473 / 32000000000000;	1.478676478125E-5;	cubic-meter;	1;	1.0;	tablespoon
+volume;	fluid;	US;	4258588257 / 320000000000000;	1.3308088303125E-5;	cubic-meter;	27 / 10;	2.7;	teaspoon
+volume;	fluid;	US;	157725491 / 32000000000000;	4.92892159375E-6;	cubic-meter;	1;	1.0;	teaspoon
+volume;	fluid;	US;	1419529419 / 320000000000000;	4.436029434375E-6;	cubic-meter;	9 / 10;	0.9;	teaspoon
+
+volume;	fluid;	GB;	5000699 / 1000000000;	0.005000699;	cubic-meter;	11 / 10;	1.1;	gallon-imperial
+volume;	fluid;	GB;	454609 / 100000000;	0.00454609;	cubic-meter;	1;	1.0;	gallon-imperial
+volume;	fluid;	GB;	4091481 / 1000000000;	0.004091481;	cubic-meter;	144;	144.0;	fluid-ounce-imperial
+volume;	fluid;	GB;	454609 / 16000000000;	2.84130625E-5;	cubic-meter;	1;	1.0;	fluid-ounce-imperial
+volume;	fluid;	GB;	4091481 / 160000000000;	2.557175625E-5;	cubic-meter;	9 / 10;	0.9;	fluid-ounce-imperial
+
+volume;	oil;	001;	109303765263 / 625000000000;	0.1748860244208;	cubic-meter;	11 / 10;	1.1;	barrel
+volume;	oil;	001;	9936705933 / 62500000000;	0.158987294928;	cubic-meter;	1;	1.0;	barrel
+volume;	oil;	001;	89430353397 / 625000000000;	0.1430885654352;	cubic-meter;	9 / 10;	0.9;	barrel
+
+volume;	vehicle;	US;	5204941203 / 1250000000000;	0.0041639529624;	cubic-meter;	11 / 10;	1.1;	gallon
+volume;	vehicle;	US;	473176473 / 125000000000;	0.003785411784;	cubic-meter;	1;	1.0;	gallon
+volume;	vehicle;	US;	4258588257 / 1250000000000;	0.0034068706056;	cubic-meter;	9 / 10;	0.9;	gallon
+
+volume;	vehicle;	001;	11 / 10000;	0.0011;	cubic-meter;	11 / 10;	1.1;	liter
+volume;	vehicle;	001;	1 / 1000;	0.001;	cubic-meter;	1;	1.0;	liter
+volume;	vehicle;	001;	9 / 10000;	9.0E-4;	cubic-meter;	9 / 10;	0.9;	liter
+
+year-duration;	default;	001;	11 / 10;	1.1;	year;	11 / 10;	1.1;	year
+year-duration;	default;	001;	1;	1.0;	year;	1;	1.0;	year
+year-duration;	default;	001;	9 / 10;	0.9;	year;	54 / 5;	10.8;	month
+year-duration;	default;	001;	1 / 12;	0.08333333333333333;	year;	1;	1.0;	month
+year-duration;	default;	001;	3 / 40;	0.075;	year;	9 / 10;	0.9;	month
+
+year-duration;	person-age;	001;	13 / 5;	2.6;	year;	13 / 5;	2.6;	year-person
+year-duration;	person-age;	001;	5 / 2;	2.5;	year;	5 / 2;	2.5;	year-person
+year-duration;	person-age;	001;	12 / 5;	2.4;	year;	2;	year-person;	24 / 5;	4.8;	month-person
+year-duration;	person-age;	001;	1;	1.0;	year;	1;	year-person;	0;	0.0;	month-person
+year-duration;	person-age;	001;	9 / 10;	0.9;	year;	54 / 5;	10.8;	month-person
+year-duration;	person-age;	001;	1 / 12;	0.08333333333333333;	year;	1;	1.0;	month-person
+year-duration;	person-age;	001;	3 / 40;	0.075;	year;	9 / 10;	0.9;	month-person
diff --git a/icu4c/source/test/testdata/cldr/units/unitsTest.txt b/icu4c/source/test/testdata/cldr/units/unitsTest.txt
new file mode 100644
index 0000000..d2facef
--- /dev/null
+++ b/icu4c/source/test/testdata/cldr/units/unitsTest.txt
@@ -0,0 +1,203 @@
+# Test data for unit conversions
+#  Copyright © 1991-2020 Unicode, Inc.
+#  For terms of use, see http://www.unicode.org/copyright.html
+#  Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+#  CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# Format:
+#	Quantity	;	x	;	y	;	conversion to y (rational)	;	test: 1000 x ⟹ y
+#
+# Use: convert 1000 x units to the y unit; the result should match the final column,
+#   at the given precision. For example, when the last column is 159.1549,
+#   round to 4 decimal digits before comparing.
+# Note that certain conversions are approximate, such as degrees to radians
+#
+# Generation: Set GENERATE_TESTS in TestUnits.java, and look at TestParseUnit results.
+
+acceleration	;	meter-per-square-second	;	meter-per-square-second	;	1 * x	;	1,000.00
+acceleration	;	g-force	;	meter-per-square-second	;	9.80665 * x	;	9806.65
+angle	;	arc-second	;	revolution	;	0.0000625/81 * x	;	7.716049E-4
+angle	;	arc-minute	;	revolution	;	0.00125/27 * x	;	0.0462963
+angle	;	degree	;	revolution	;	0.025/9 * x	;	2.777778
+angle	;	radian	;	revolution	;	65,501,488/411,557,987 * x	;	159.1549
+angle	;	revolution	;	revolution	;	1 * x	;	1,000.00
+area	;	square-centimeter	;	square-meter	;	0.0001 * x	;	0.1
+area	;	square-inch	;	square-meter	;	0.00064516 * x	;	0.64516
+area	;	square-foot	;	square-meter	;	0.09290304 * x	;	92.90304
+area	;	square-yard	;	square-meter	;	0.83612736 * x	;	836.1274
+area	;	square-meter	;	square-meter	;	1 * x	;	1,000.00
+area	;	dunam	;	square-meter	;	1,000 * x	;	1000000.0
+area	;	acre	;	square-meter	;	4,046.8564224 * x	;	4046856.0
+area	;	hectare	;	square-meter	;	10,000 * x	;	1.0E7
+area	;	square-kilometer	;	square-meter	;	1,000,000 * x	;	1.0E9
+area	;	square-mile	;	square-meter	;	2,589,988.110336 * x	;	2.589988E9
+concentration	;	millimole-per-liter	;	item-per-cubic-meter	;	602,214,076,000,000,000,000,000 * x	;	6.022141E26
+consumption	;	liter-per-100-kilometer	;	cubic-meter-per-meter	;	0.00000001 * x	;	1.0E-5
+consumption	;	liter-per-kilometer	;	cubic-meter-per-meter	;	0.000001 * x	;	0.001
+consumption-inverse	;	mile-per-gallon-imperial	;	meter-per-cubic-meter	;	160,934,400,000/454,609 * x	;	3.540062E8
+consumption-inverse	;	mile-per-gallon	;	meter-per-cubic-meter	;	48,000,000,000/112,903 * x	;	4.251437E8
+digital	;	bit	;	bit	;	1 * x	;	1,000.00
+digital	;	byte	;	bit	;	8 * x	;	8000.0
+digital	;	kilobit	;	bit	;	1,000 * x	;	1000000.0
+digital	;	kilobyte	;	bit	;	8,000 * x	;	8000000.0
+digital	;	megabit	;	bit	;	1,000,000 * x	;	1.0E9
+digital	;	megabyte	;	bit	;	8,000,000 * x	;	8.0E9
+digital	;	gigabit	;	bit	;	1,000,000,000 * x	;	1.0E12
+digital	;	gigabyte	;	bit	;	8,000,000,000 * x	;	8.0E12
+digital	;	terabit	;	bit	;	1,000,000,000,000 * x	;	1.0E15
+digital	;	terabyte	;	bit	;	8,000,000,000,000 * x	;	8.0E15
+digital	;	petabyte	;	bit	;	8,000,000,000,000,000 * x	;	8.0E18
+duration	;	nanosecond	;	second	;	0.000000001 * x	;	1.0E-6
+duration	;	microsecond	;	second	;	0.000001 * x	;	0.001
+duration	;	millisecond	;	second	;	0.001 * x	;	1.0
+duration	;	second	;	second	;	1 * x	;	1,000.00
+duration	;	minute	;	second	;	60 * x	;	60000.0
+duration	;	hour	;	second	;	3,600 * x	;	3600000.0
+duration	;	day	;	second	;	86,400 * x	;	8.64E7
+duration	;	day-person	;	second	;	86,400 * x	;	8.64E7
+duration	;	week	;	second	;	604,800 * x	;	6.048E8
+duration	;	week-person	;	second	;	604,800 * x	;	6.048E8
+electric-current	;	milliampere	;	ampere	;	0.001 * x	;	1.0
+electric-current	;	ampere	;	ampere	;	1 * x	;	1,000.00
+electric-resistance	;	ohm	;	kilogram-square-meter-per-cubic-second-square-ampere	;	1 * x	;	1000.0
+energy	;	electronvolt	;	kilogram-square-meter-per-square-second	;	0.0000000000000000001602177 * x	;	1.602177E-16
+energy	;	dalton	;	kilogram-square-meter-per-square-second	;	0.00000000014924180856 * x	;	1.492418E-7
+energy	;	joule	;	kilogram-square-meter-per-square-second	;	1 * x	;	1000.0
+energy	;	newton-meter	;	kilogram-square-meter-per-square-second	;	1 * x	;	1000.0
+energy	;	pound-force-foot	;	kilogram-square-meter-per-square-second	;	1.3558179483314004 * x	;	1355.818
+energy	;	calorie	;	kilogram-square-meter-per-square-second	;	4.184 * x	;	4184.0
+energy	;	kilojoule	;	kilogram-square-meter-per-square-second	;	1,000 * x	;	1000000.0
+energy	;	british-thermal-unit	;	kilogram-square-meter-per-square-second	;	9,489.1523804/9 * x	;	1054350.0
+energy	;	foodcalorie	;	kilogram-square-meter-per-square-second	;	4,184 * x	;	4184000.0
+energy	;	kilocalorie	;	kilogram-square-meter-per-square-second	;	4,184 * x	;	4184000.0
+energy	;	kilowatt-hour	;	kilogram-square-meter-second-per-cubic-second	;	3,600,000 * x	;	3.6E9
+energy	;	therm-us	;	kilogram-square-meter-per-square-second	;	105,480,400 * x	;	1.054804E11
+force	;	newton	;	kilogram-meter-per-square-second	;	1 * x	;	1000.0
+force	;	pound-force	;	kilogram-meter-per-square-second	;	4.4482216152605 * x	;	4448.222
+frequency	;	hertz	;	revolution-per-second	;	1 * x	;	1000.0
+frequency	;	kilohertz	;	revolution-per-second	;	1,000 * x	;	1000000.0
+frequency	;	megahertz	;	revolution-per-second	;	1,000,000 * x	;	1.0E9
+frequency	;	gigahertz	;	revolution-per-second	;	1,000,000,000 * x	;	1.0E12
+graphics	;	dot	;	pixel	;	1 * x	;	1000.0
+graphics	;	pixel	;	pixel	;	1 * x	;	1,000.00
+graphics	;	megapixel	;	pixel	;	1,000,000 * x	;	1.0E9
+illuminance	;	lux	;	candela-per-square-meter	;	1 * x	;	1000.0
+length	;	picometer	;	meter	;	0.000000000001 * x	;	1.0E-9
+length	;	nanometer	;	meter	;	0.000000001 * x	;	1.0E-6
+length	;	micrometer	;	meter	;	0.000001 * x	;	0.001
+length	;	point	;	meter	;	0.003175/9 * x	;	0.3527778
+length	;	millimeter	;	meter	;	0.001 * x	;	1.0
+length	;	centimeter	;	meter	;	0.01 * x	;	10.0
+length	;	inch	;	meter	;	0.0254 * x	;	25.4
+length	;	decimeter	;	meter	;	0.1 * x	;	100.0
+length	;	foot	;	meter	;	0.3048 * x	;	304.8
+length	;	yard	;	meter	;	0.9144 * x	;	914.4
+length	;	meter	;	meter	;	1 * x	;	1,000.00
+length	;	fathom	;	meter	;	1.8288 * x	;	1828.8
+length	;	furlong	;	meter	;	201.168 * x	;	201168.0
+length	;	kilometer	;	meter	;	1,000 * x	;	1000000.0
+length	;	mile	;	meter	;	1,609.344 * x	;	1609344.0
+length	;	nautical-mile	;	meter	;	1,852 * x	;	1852000.0
+length	;	mile-scandinavian	;	meter	;	10,000 * x	;	1.0E7
+length	;	100-kilometer	;	meter	;	100,000 * x	;	1.0E8
+length	;	earth-radius	;	meter	;	6,378,100 * x	;	6.3781E9
+length	;	solar-radius	;	meter	;	695,700,000 * x	;	6.957E11
+length	;	astronomical-unit	;	meter	;	149,597,900,000 * x	;	1.495979E14
+length	;	light-year	;	meter	;	9,460,730,000,000,000 * x	;	9.46073E18
+length	;	parsec	;	meter	;	30,856,780,000,000,000 * x	;	3.085678E19
+luminous-flux	;	lumen	;	candela-square-meter-per-square-meter	;	1 * x	;	1000.0
+luminous-intensity	;	candela	;	candela	;	1 * x	;	1,000.00
+mass	;	microgram	;	kilogram	;	0.000000001 * x	;	1.0E-6
+mass	;	milligram	;	kilogram	;	0.000001 * x	;	0.001
+mass	;	grain	;	kilogram	;	0.00006479891 * x	;	0.06479891
+mass	;	carat	;	kilogram	;	0.0002 * x	;	0.2
+mass	;	gram	;	kilogram	;	0.001 * x	;	1.0
+mass	;	ounce	;	kilogram	;	0.028349523125 * x	;	28.34952
+mass	;	ounce-troy	;	kilogram	;	0.03110348 * x	;	31.10348
+mass	;	pound	;	kilogram	;	0.45359237 * x	;	453.5924
+mass	;	kilogram	;	kilogram	;	1 * x	;	1,000.00
+mass	;	stone	;	kilogram	;	6.35029318 * x	;	6350.293
+mass	;	ton	;	kilogram	;	907.18474 * x	;	907184.7
+mass	;	metric-ton	;	kilogram	;	1,000 * x	;	1000000.0
+mass	;	earth-mass	;	kilogram	;	5,972,200,000,000,000,000,000,000 * x	;	5.9722E27
+mass	;	solar-mass	;	kilogram	;	1,988,470,000,000,000,000,000,000,000,000 * x	;	1.98847E33
+mass-density	;	milligram-per-deciliter	;	kilogram-per-cubic-meter	;	0.01 * x	;	10.0
+portion	;	permillion	;	portion	;	0.000001 * x	;	0.001
+portion	;	permyriad	;	portion	;	0.0001 * x	;	0.1
+portion	;	permille	;	portion	;	0.001 * x	;	1.0
+portion	;	percent	;	portion	;	0.01 * x	;	10.0
+portion	;	karat	;	portion	;	0.125/3 * x	;	41.66667
+portion	;	portion	;	portion	;	1 * x	;	1,000.00
+power	;	milliwatt	;	kilogram-square-meter-per-cubic-second	;	0.001 * x	;	1.0
+power	;	watt	;	kilogram-square-meter-per-cubic-second	;	1 * x	;	1000.0
+power	;	horsepower	;	kilogram-square-meter-per-cubic-second	;	745.69987158227022 * x	;	745699.9
+power	;	kilowatt	;	kilogram-square-meter-per-cubic-second	;	1,000 * x	;	1000000.0
+power	;	megawatt	;	kilogram-square-meter-per-cubic-second	;	1,000,000 * x	;	1.0E9
+power	;	gigawatt	;	kilogram-square-meter-per-cubic-second	;	1,000,000,000 * x	;	1.0E12
+power	;	solar-luminosity	;	kilogram-square-meter-per-cubic-second	;	382,800,000,000,000,000,000,000,000 * x	;	3.828E29
+pressure	;	pascal	;	kilogram-per-meter-square-second	;	1 * x	;	1000.0
+pressure	;	hectopascal	;	kilogram-per-meter-square-second	;	100 * x	;	100000.0
+pressure	;	millibar	;	kilogram-per-meter-square-second	;	100 * x	;	100000.0
+pressure	;	millimeter-ofhg	;	kilogram-meter-per-square-meter-square-second	;	133.322387415 * x	;	133322.4
+pressure	;	kilopascal	;	kilogram-per-meter-square-second	;	1,000 * x	;	1000000.0
+pressure	;	inch-ofhg	;	kilogram-meter-per-square-meter-square-second	;	3,386.388640341 * x	;	3386389.0
+pressure	;	pound-force-per-square-inch	;	kilogram-meter-per-square-meter-square-second	;	111,205,540.3815125/16,129 * x	;	6894757.0
+pressure	;	bar	;	kilogram-per-meter-square-second	;	100,000 * x	;	1.0E8
+pressure	;	atmosphere	;	kilogram-per-meter-square-second	;	101,325 * x	;	1.01325E8
+pressure	;	megapascal	;	kilogram-per-meter-square-second	;	1,000,000 * x	;	1.0E9
+pressure-per-length	;	ofhg	;	kilogram-per-square-meter-square-second	;	133,322.387415 * x	;	1.333224E8
+resolution	;	dot-per-inch	;	pixel-per-meter	;	5,000/127 * x	;	39370.08
+resolution	;	pixel-per-inch	;	pixel-per-meter	;	5,000/127 * x	;	39370.08
+resolution	;	dot-per-centimeter	;	pixel-per-meter	;	100 * x	;	100000.0
+resolution	;	pixel-per-centimeter	;	pixel-per-meter	;	100 * x	;	100000.0
+speed	;	kilometer-per-hour	;	meter-per-second	;	2.5/9 * x	;	277.7778
+speed	;	mile-per-hour	;	meter-per-second	;	0.44704 * x	;	447.04
+speed	;	knot	;	meter-per-second	;	4.63/9 * x	;	514.4444
+speed	;	meter-per-second	;	meter-per-second	;	1 * x	;	1,000.00
+substance-amount	;	item	;	item	;	1 * x	;	1,000.00
+substance-amount	;	mole	;	item	;	602,214,076,000,000,000,000,000 * x	;	6.022141E26
+temperature	;	fahrenheit	;	kelvin	;	5/9 * x - 2,298.35/9	;	810.9278
+temperature	;	kelvin	;	kelvin	;	1 * x	;	1,000.00
+temperature	;	celsius	;	kelvin	;	1 * x - 273.15	;	1273.15
+typewidth	;	em	;	em	;	1 * x	;	1,000.00
+voltage	;	volt	;	kilogram-square-meter-per-cubic-second-ampere	;	1 * x	;	1000.0
+volume	;	drop	;	cubic-meter	;	0.0000001540287998046875/3 * x	;	5.134293E-5
+volume	;	pinch	;	cubic-meter	;	0.00000023104319970703125 * x	;	2.310432E-4
+volume	;	cubic-centimeter	;	cubic-meter	;	0.000001 * x	;	0.001
+volume	;	milliliter	;	cubic-meter	;	0.000001 * x	;	0.001
+volume	;	dessert-spoon	;	cubic-meter	;	0.00000184834559765625 * x	;	0.001848346
+volume	;	dessert-spoon-imperial	;	cubic-meter	;	0.0000022197705078125 * x	;	0.002219771
+volume	;	dram	;	cubic-meter	;	0.0000036966911953125 * x	;	0.003696691
+volume	;	teaspoon	;	cubic-meter	;	0.00000492892159375 * x	;	0.004928922
+volume	;	centiliter	;	cubic-meter	;	0.00001 * x	;	0.01
+volume	;	tablespoon	;	cubic-meter	;	0.00001478676478125 * x	;	0.01478676
+volume	;	cubic-inch	;	cubic-meter	;	0.000016387064 * x	;	0.01638706
+volume	;	fluid-ounce-imperial	;	cubic-meter	;	0.0000284130625 * x	;	0.02841306
+volume	;	fluid-ounce	;	cubic-meter	;	0.0000295735295625 * x	;	0.02957353
+volume	;	jigger	;	cubic-meter	;	0.00004436029434375 * x	;	0.04436029
+volume	;	deciliter	;	cubic-meter	;	0.0001 * x	;	0.1
+volume	;	cup	;	cubic-meter	;	0.0002365882365 * x	;	0.2365882
+volume	;	cup-metric	;	cubic-meter	;	0.00025 * x	;	0.25
+volume	;	pint	;	cubic-meter	;	0.000473176473 * x	;	0.4731765
+volume	;	pint-metric	;	cubic-meter	;	0.0005 * x	;	0.5
+volume	;	quart	;	cubic-meter	;	0.000946352946 * x	;	0.9463529
+volume	;	liter	;	cubic-meter	;	0.001 * x	;	1.0
+volume	;	quart-imperial	;	cubic-meter	;	0.0011365225 * x	;	1.136522
+volume	;	gallon	;	cubic-meter	;	0.003785411784 * x	;	3.785412
+volume	;	gallon-imperial	;	cubic-meter	;	0.00454609 * x	;	4.54609
+volume	;	cubic-foot	;	cubic-meter	;	0.028316846592 * x	;	28.31685
+volume	;	bushel	;	cubic-meter	;	0.03523907016688 * x	;	35.23907
+volume	;	hectoliter	;	cubic-meter	;	0.1 * x	;	100.0
+volume	;	barrel	;	cubic-meter	;	0.158987294928 * x	;	158.9873
+volume	;	cubic-yard	;	cubic-meter	;	0.764554857984 * x	;	764.5549
+volume	;	cubic-meter	;	cubic-meter	;	1 * x	;	1,000.00
+volume	;	megaliter	;	cubic-meter	;	1,000 * x	;	1000000.0
+volume	;	acre-foot	;	cubic-meter	;	1,233.48183754752 * x	;	1233482.0
+volume	;	cubic-kilometer	;	cubic-meter	;	1,000,000,000 * x	;	1.0E12
+volume	;	cubic-mile	;	cubic-meter	;	4,168,181,825.440579584 * x	;	4.168182E12
+year-duration	;	month	;	year	;	0.25/3 * x	;	83.33333
+year-duration	;	month-person	;	year	;	0.25/3 * x	;	83.33333
+year-duration	;	year	;	year	;	1 * x	;	1,000.00
+year-duration	;	year-person	;	year	;	1 * x	;	1000.0
+year-duration	;	decade	;	year	;	10 * x	;	10000.0
+year-duration	;	century	;	year	;	100 * x	;	100000.0
\ No newline at end of file
diff --git a/icu4c/source/test/testdata/encoded.utf16be b/icu4c/source/test/testdata/encoded.utf16be
index dd287c1..4609469 100644
--- a/icu4c/source/test/testdata/encoded.utf16be
+++ b/icu4c/source/test/testdata/encoded.utf16be
Binary files differ
diff --git a/icu4c/source/test/testdata/localeCanonicalization.txt b/icu4c/source/test/testdata/localeCanonicalization.txt
new file mode 100644
index 0000000..ce0e191
--- /dev/null
+++ b/icu4c/source/test/testdata/localeCanonicalization.txt
@@ -0,0 +1,1647 @@
+# Test data for locale identifier canonicalization
+#  Copyright © 1991-2020 Unicode, Inc.
+#  For terms of use, see http://www.unicode.org/copyright.html
+#  Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+#  CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# Format:
+# <source locale identifier>	;	<expected canonicalized locale identifier>
+#
+# The data lines are divided into 4 sets:
+#   explicit:    a short list of explicit test cases.
+#   fromAliases: test cases generated from the alias data.
+#   decanonicalized: test cases generated by reversing the normalization process.
+#   withIrrelevants: test cases generated from the others by adding irrelevant fields where possible,
+#                           to ensure that the canonicalization implementation is not sensitive to irrelevant fields. These include:
+#     Language: aaa
+#     Script:   Adlm
+#     Region:   AC
+#     Variant:  fonipa
+######
+
+
+
+# explicit
+
+art_lojban	;	jbo
+en_US_aaland	;	en_US
+en_US_heploc	;	en_US_alalc97
+en_US_polytoni	;	en_US_polyton
+en_aaland	;	en_AX
+en_arevela	;	en
+en_arevmda_arevela	;	en
+en_lojban	;	en
+hy_arevela	;	hy
+hy_arevmda	;	hyw
+hy_arevmda_arevela	;	hyw
+hye_arevmda	;	hyw
+no_bokmal_nynorsk	;	nb
+no_nynorsk_bokmal	;	nb
+zh_guoyu_hakka_xiang	;	hak
+zh_hakka_xiang	;	hak
+
+# fromAliases
+
+aa_saaho	;	ssy
+aam	;	aas
+aar	;	aa
+abk	;	ab
+adp	;	dz
+afr	;	af
+aju	;	jrb
+aka	;	ak
+alb	;	sq
+als	;	sq
+amh	;	am
+ara	;	ar
+arb	;	ar
+arg	;	an
+arm	;	hy
+asd	;	snz
+asm	;	as
+aue	;	ktz
+ava	;	av
+ave	;	ae
+aym	;	ay
+ayr	;	ay
+ayx	;	nun
+aze	;	az
+azj	;	az
+bak	;	ba
+bam	;	bm
+baq	;	eu
+bcc	;	bal
+bcl	;	bik
+bel	;	be
+ben	;	bn
+bgm	;	bcg
+bh	;	bho
+bih	;	bho
+bis	;	bi
+bjd	;	drl
+bod	;	bo
+bos	;	bs
+bre	;	br
+bul	;	bg
+bur	;	my
+bxk	;	luy
+bxr	;	bua
+cat	;	ca
+ccq	;	rki
+cel_gaulish	;	xtg
+ces	;	cs
+cha	;	ch
+che	;	ce
+chi	;	zh
+chu	;	cu
+chv	;	cv
+cjr	;	mom
+cka	;	cmr
+cld	;	syr
+cmk	;	xch
+cmn	;	zh
+cnr	;	sr_ME
+cor	;	kw
+cos	;	co
+coy	;	pij
+cqu	;	quh
+cre	;	cr
+cwd	;	cr
+cym	;	cy
+cze	;	cs
+dan	;	da
+deu	;	de
+dgo	;	doi
+dhd	;	mwr
+dik	;	din
+diq	;	zza
+dit	;	dif
+div	;	dv
+drh	;	mn
+drw	;	fa_AF
+dut	;	nl
+dzo	;	dz
+ekk	;	et
+ell	;	el
+emk	;	man
+eng	;	en
+epo	;	eo
+esk	;	ik
+est	;	et
+eus	;	eu
+ewe	;	ee
+fao	;	fo
+fas	;	fa
+fat	;	ak
+fij	;	fj
+fin	;	fi
+fra	;	fr
+fre	;	fr
+fry	;	fy
+fuc	;	ff
+ful	;	ff
+gav	;	dev
+gaz	;	om
+gbo	;	grb
+geo	;	ka
+ger	;	de
+gfx	;	vaj
+ggn	;	gvr
+gla	;	gd
+gle	;	ga
+glg	;	gl
+glv	;	gv
+gno	;	gon
+gre	;	el
+grn	;	gn
+gti	;	nyc
+gug	;	gn
+guj	;	gu
+guv	;	duz
+gya	;	gba
+hat	;	ht
+hau	;	ha
+hbs	;	sr_Latn
+hdn	;	hai
+hea	;	hmn
+heb	;	he
+her	;	hz
+him	;	srx
+hin	;	hi
+hmo	;	ho
+hrr	;	jal
+hrv	;	hr
+hun	;	hu
+hye	;	hy
+ibi	;	opa
+ibo	;	ig
+ice	;	is
+ido	;	io
+iii	;	ii
+ike	;	iu
+iku	;	iu
+ile	;	ie
+ilw	;	gal
+in	;	id
+ina	;	ia
+ind	;	id
+ipk	;	ik
+isl	;	is
+ita	;	it
+iw	;	he
+jav	;	jv
+jeg	;	oyb
+ji	;	yi
+jpn	;	ja
+jw	;	jv
+kal	;	kl
+kan	;	kn
+kas	;	ks
+kat	;	ka
+kau	;	kr
+kaz	;	kk
+kgc	;	tdf
+kgh	;	kml
+khk	;	mn
+khm	;	km
+kik	;	ki
+kin	;	rw
+kir	;	ky
+kmr	;	ku
+knc	;	kr
+kng	;	kg
+knn	;	kok
+koj	;	kwv
+kom	;	kv
+kon	;	kg
+kor	;	ko
+kpv	;	kv
+krm	;	bmf
+ktr	;	dtp
+kua	;	kj
+kur	;	ku
+kvs	;	gdj
+kwq	;	yam
+kxe	;	tvd
+kzj	;	dtp
+kzt	;	dtp
+lao	;	lo
+lat	;	la
+lav	;	lv
+lbk	;	bnc
+lii	;	raq
+lim	;	li
+lin	;	ln
+lit	;	lt
+llo	;	ngt
+lmm	;	rmx
+ltz	;	lb
+lub	;	lu
+lug	;	lg
+lvs	;	lv
+mac	;	mk
+mah	;	mh
+mal	;	ml
+mao	;	mi
+mar	;	mr
+may	;	ms
+meg	;	cir
+mhr	;	chm
+mkd	;	mk
+mlg	;	mg
+mlt	;	mt
+mnk	;	man
+mo	;	ro
+mol	;	ro
+mon	;	mn
+mri	;	mi
+msa	;	ms
+mst	;	mry
+mup	;	raj
+mwj	;	vaj
+mya	;	my
+myd	;	aog
+myt	;	mry
+nad	;	xny
+nau	;	na
+nav	;	nv
+nbl	;	nr
+ncp	;	kdz
+nde	;	nd
+ndo	;	ng
+nep	;	ne
+nld	;	nl
+nno	;	nn
+nns	;	nbr
+nnx	;	ngv
+no	;	nb
+no_bokmal	;	nb
+no_nynorsk	;	nn
+nob	;	nb
+nor	;	nb
+npi	;	ne
+nts	;	pij
+nya	;	ny
+oci	;	oc
+ojg	;	oj
+oji	;	oj
+ori	;	or
+orm	;	om
+ory	;	or
+oss	;	os
+oun	;	vaj
+pan	;	pa
+pbu	;	ps
+pcr	;	adx
+per	;	fa
+pes	;	fa
+pli	;	pi
+plt	;	mg
+pmc	;	huw
+pmu	;	phr
+pnb	;	lah
+pol	;	pl
+por	;	pt
+ppa	;	bfy
+ppr	;	lcq
+prs	;	fa_AF
+pry	;	prt
+pus	;	ps
+puz	;	pub
+que	;	qu
+quz	;	qu
+rmy	;	rom
+roh	;	rm
+ron	;	ro
+rum	;	ro
+run	;	rn
+rus	;	ru
+sag	;	sg
+san	;	sa
+sca	;	hle
+scc	;	sr
+scr	;	hr
+sgn_BR	;	bzs
+sgn_CO	;	csn
+sgn_DE	;	gsg
+sgn_DK	;	dsl
+sgn_FR	;	fsl
+sgn_GB	;	bfi
+sgn_GR	;	gss
+sgn_IE	;	isg
+sgn_IT	;	ise
+sgn_JP	;	jsl
+sgn_MX	;	mfs
+sgn_NI	;	ncs
+sgn_NL	;	dse
+sgn_NO	;	nsi
+sgn_PT	;	psr
+sgn_SE	;	swl
+sgn_US	;	ase
+sgn_ZA	;	sfs
+sh	;	sr_Latn
+sin	;	si
+skk	;	oyb
+slk	;	sk
+slo	;	sk
+slv	;	sl
+sme	;	se
+smo	;	sm
+sna	;	sn
+snd	;	sd
+som	;	so
+sot	;	st
+spa	;	es
+spy	;	kln
+sqi	;	sq
+src	;	sc
+srd	;	sc
+srp	;	sr
+ssw	;	ss
+sun	;	su
+swa	;	sw
+swc	;	sw_CD
+swe	;	sv
+swh	;	sw
+tah	;	ty
+tam	;	ta
+tat	;	tt
+tdu	;	dtp
+tel	;	te
+tgk	;	tg
+tgl	;	fil
+tha	;	th
+thc	;	tpo
+thx	;	oyb
+tib	;	bo
+tie	;	ras
+tir	;	ti
+tkk	;	twm
+tl	;	fil
+tlw	;	weo
+tmp	;	tyj
+tne	;	kak
+tnf	;	fa_AF
+ton	;	to
+tsf	;	taj
+tsn	;	tn
+tso	;	ts
+ttq	;	tmh
+tuk	;	tk
+tur	;	tr
+tw	;	ak
+twi	;	ak
+uig	;	ug
+ukr	;	uk
+umu	;	del
+und_004	;	und_AF
+und_008	;	und_AL
+und_010	;	und_AQ
+und_012	;	und_DZ
+und_016	;	und_AS
+und_020	;	und_AD
+und_024	;	und_AO
+und_028	;	und_AG
+und_031	;	und_AZ
+und_032	;	und_AR
+und_036	;	und_AU
+und_040	;	und_AT
+und_044	;	und_BS
+und_048	;	und_BH
+und_050	;	und_BD
+und_051	;	und_AM
+und_052	;	und_BB
+und_056	;	und_BE
+und_060	;	und_BM
+und_062	;	und_034
+und_064	;	und_BT
+und_068	;	und_BO
+und_070	;	und_BA
+und_072	;	und_BW
+und_074	;	und_BV
+und_076	;	und_BR
+und_084	;	und_BZ
+und_086	;	und_IO
+und_090	;	und_SB
+und_092	;	und_VG
+und_096	;	und_BN
+und_100	;	und_BG
+und_104	;	und_MM
+und_108	;	und_BI
+und_112	;	und_BY
+und_116	;	und_KH
+und_120	;	und_CM
+und_124	;	und_CA
+und_132	;	und_CV
+und_136	;	und_KY
+und_140	;	und_CF
+und_144	;	und_LK
+und_148	;	und_TD
+und_152	;	und_CL
+und_156	;	und_CN
+und_158	;	und_TW
+und_162	;	und_CX
+und_166	;	und_CC
+und_170	;	und_CO
+und_172	;	und_RU
+und_174	;	und_KM
+und_175	;	und_YT
+und_178	;	und_CG
+und_180	;	und_CD
+und_184	;	und_CK
+und_188	;	und_CR
+und_191	;	und_HR
+und_192	;	und_CU
+und_196	;	und_CY
+und_200	;	und_CZ
+und_203	;	und_CZ
+und_204	;	und_BJ
+und_208	;	und_DK
+und_212	;	und_DM
+und_214	;	und_DO
+und_218	;	und_EC
+und_222	;	und_SV
+und_226	;	und_GQ
+und_230	;	und_ET
+und_231	;	und_ET
+und_232	;	und_ER
+und_233	;	und_EE
+und_234	;	und_FO
+und_238	;	und_FK
+und_239	;	und_GS
+und_242	;	und_FJ
+und_246	;	und_FI
+und_248	;	und_AX
+und_249	;	und_FR
+und_250	;	und_FR
+und_254	;	und_GF
+und_258	;	und_PF
+und_260	;	und_TF
+und_262	;	und_DJ
+und_266	;	und_GA
+und_268	;	und_GE
+und_270	;	und_GM
+und_275	;	und_PS
+und_276	;	und_DE
+und_278	;	und_DE
+und_280	;	und_DE
+und_288	;	und_GH
+und_292	;	und_GI
+und_296	;	und_KI
+und_300	;	und_GR
+und_304	;	und_GL
+und_308	;	und_GD
+und_312	;	und_GP
+und_316	;	und_GU
+und_320	;	und_GT
+und_324	;	und_GN
+und_328	;	und_GY
+und_332	;	und_HT
+und_334	;	und_HM
+und_336	;	und_VA
+und_340	;	und_HN
+und_344	;	und_HK
+und_348	;	und_HU
+und_352	;	und_IS
+und_356	;	und_IN
+und_360	;	und_ID
+und_364	;	und_IR
+und_368	;	und_IQ
+und_372	;	und_IE
+und_376	;	und_IL
+und_380	;	und_IT
+und_384	;	und_CI
+und_388	;	und_JM
+und_392	;	und_JP
+und_398	;	und_KZ
+und_400	;	und_JO
+und_404	;	und_KE
+und_408	;	und_KP
+und_410	;	und_KR
+und_414	;	und_KW
+und_417	;	und_KG
+und_418	;	und_LA
+und_422	;	und_LB
+und_426	;	und_LS
+und_428	;	und_LV
+und_430	;	und_LR
+und_434	;	und_LY
+und_438	;	und_LI
+und_440	;	und_LT
+und_442	;	und_LU
+und_446	;	und_MO
+und_450	;	und_MG
+und_454	;	und_MW
+und_458	;	und_MY
+und_462	;	und_MV
+und_466	;	und_ML
+und_470	;	und_MT
+und_474	;	und_MQ
+und_478	;	und_MR
+und_480	;	und_MU
+und_484	;	und_MX
+und_492	;	und_MC
+und_496	;	und_MN
+und_498	;	und_MD
+und_499	;	und_ME
+und_500	;	und_MS
+und_504	;	und_MA
+und_508	;	und_MZ
+und_512	;	und_OM
+und_516	;	und_NA
+und_520	;	und_NR
+und_524	;	und_NP
+und_528	;	und_NL
+und_530	;	und_CW
+und_531	;	und_CW
+und_532	;	und_CW
+und_533	;	und_AW
+und_534	;	und_SX
+und_535	;	und_BQ
+und_536	;	und_SA
+und_540	;	und_NC
+und_548	;	und_VU
+und_554	;	und_NZ
+und_558	;	und_NI
+und_562	;	und_NE
+und_566	;	und_NG
+und_570	;	und_NU
+und_574	;	und_NF
+und_578	;	und_NO
+und_580	;	und_MP
+und_581	;	und_UM
+und_582	;	und_FM
+und_583	;	und_FM
+und_584	;	und_MH
+und_585	;	und_PW
+und_586	;	und_PK
+und_591	;	und_PA
+und_598	;	und_PG
+und_600	;	und_PY
+und_604	;	und_PE
+und_608	;	und_PH
+und_612	;	und_PN
+und_616	;	und_PL
+und_620	;	und_PT
+und_624	;	und_GW
+und_626	;	und_TL
+und_630	;	und_PR
+und_634	;	und_QA
+und_638	;	und_RE
+und_642	;	und_RO
+und_643	;	und_RU
+und_646	;	und_RW
+und_652	;	und_BL
+und_654	;	und_SH
+und_659	;	und_KN
+und_660	;	und_AI
+und_662	;	und_LC
+und_663	;	und_MF
+und_666	;	und_PM
+und_670	;	und_VC
+und_674	;	und_SM
+und_678	;	und_ST
+und_682	;	und_SA
+und_686	;	und_SN
+und_688	;	und_RS
+und_690	;	und_SC
+und_694	;	und_SL
+und_702	;	und_SG
+und_703	;	und_SK
+und_704	;	und_VN
+und_705	;	und_SI
+und_706	;	und_SO
+und_710	;	und_ZA
+und_716	;	und_ZW
+und_720	;	und_YE
+und_724	;	und_ES
+und_728	;	und_SS
+und_729	;	und_SD
+und_732	;	und_EH
+und_736	;	und_SD
+und_740	;	und_SR
+und_744	;	und_SJ
+und_748	;	und_SZ
+und_752	;	und_SE
+und_756	;	und_CH
+und_760	;	und_SY
+und_762	;	und_TJ
+und_764	;	und_TH
+und_768	;	und_TG
+und_772	;	und_TK
+und_776	;	und_TO
+und_780	;	und_TT
+und_784	;	und_AE
+und_788	;	und_TN
+und_792	;	und_TR
+und_795	;	und_TM
+und_796	;	und_TC
+und_798	;	und_TV
+und_800	;	und_UG
+und_804	;	und_UA
+und_807	;	und_MK
+und_810	;	und_RU
+und_818	;	und_EG
+und_826	;	und_GB
+und_830	;	und_JE
+und_831	;	und_GG
+und_832	;	und_JE
+und_833	;	und_IM
+und_834	;	und_TZ
+und_840	;	und_US
+und_850	;	und_VI
+und_854	;	und_BF
+und_858	;	und_UY
+und_860	;	und_UZ
+und_862	;	und_VE
+und_876	;	und_WF
+und_882	;	und_WS
+und_886	;	und_YE
+und_887	;	und_YE
+und_890	;	und_RS
+und_891	;	und_RS
+und_894	;	und_ZM
+und_958	;	und_AA
+und_959	;	und_QM
+und_960	;	und_QN
+und_962	;	und_QP
+und_963	;	und_QQ
+und_964	;	und_QR
+und_965	;	und_QS
+und_966	;	und_QT
+und_967	;	und_EU
+und_968	;	und_QV
+und_969	;	und_QW
+und_970	;	und_QX
+und_971	;	und_QY
+und_972	;	und_QZ
+und_973	;	und_XA
+und_974	;	und_XB
+und_975	;	und_XC
+und_976	;	und_XD
+und_977	;	und_XE
+und_978	;	und_XF
+und_979	;	und_XG
+und_980	;	und_XH
+und_981	;	und_XI
+und_982	;	und_XJ
+und_983	;	und_XK
+und_984	;	und_XL
+und_985	;	und_XM
+und_986	;	und_XN
+und_987	;	und_XO
+und_988	;	und_XP
+und_989	;	und_XQ
+und_990	;	und_XR
+und_991	;	und_XS
+und_992	;	und_XT
+und_993	;	und_XU
+und_994	;	und_XV
+und_995	;	und_XW
+und_996	;	und_XX
+und_997	;	und_XY
+und_998	;	und_XZ
+und_999	;	und_ZZ
+und_AN	;	und_CW
+und_BU	;	und_MM
+und_CS	;	und_RS
+und_CT	;	und_KI
+und_DD	;	und_DE
+und_DY	;	und_BJ
+und_FQ	;	und_AQ
+und_FX	;	und_FR
+und_HV	;	und_BF
+und_JT	;	und_UM
+und_MI	;	und_UM
+und_NH	;	und_VU
+und_NQ	;	und_AQ
+und_NT	;	und_SA
+und_PC	;	und_FM
+und_PU	;	und_UM
+und_PZ	;	und_PA
+und_QU	;	und_EU
+und_Qaai	;	und_Zinh
+und_RH	;	und_ZW
+und_SU	;	und_RU
+und_TP	;	und_TL
+und_UK	;	und_GB
+und_VD	;	und_VN
+und_WK	;	und_UM
+und_YD	;	und_YE
+und_YU	;	und_RS
+und_ZR	;	und_CD
+und_aaland	;	und_AX
+und_arevela	;	und
+und_arevmda	;	und
+und_bokmal	;	und
+und_hakka	;	und
+und_heploc	;	und_alalc97
+und_lojban	;	und
+und_nynorsk	;	und
+und_polytoni	;	und_polyton
+und_saaho	;	und
+und_xiang	;	und
+uok	;	ema
+urd	;	ur
+uzb	;	uz
+uzn	;	uz
+ven	;	ve
+vie	;	vi
+vol	;	vo
+wel	;	cy
+wln	;	wa
+wol	;	wo
+xba	;	cax
+xho	;	xh
+xia	;	acn
+xkh	;	waw
+xpe	;	kpe
+xsj	;	suj
+xsl	;	den
+ybd	;	rki
+ydd	;	yi
+yid	;	yi
+yma	;	lrr
+ymt	;	mtm
+yor	;	yo
+yos	;	zom
+yuu	;	yug
+zai	;	zap
+zh_guoyu	;	zh
+zh_hakka	;	hak
+zh_xiang	;	hsn
+zha	;	za
+zho	;	zh
+zsm	;	ms
+zul	;	zu
+zyb	;	za
+
+# decanonicalized
+
+aar_saaho	;	ssy
+arm_arevela	;	hy
+arm_arevela_arevmda	;	hyw
+arm_arevmda	;	hyw
+chi_guoyu	;	zh
+chi_guoyu_hakka_xiang	;	hak
+chi_hakka	;	hak
+chi_hakka_xiang	;	hak
+chi_xiang	;	hsn
+cmn_guoyu	;	zh
+cmn_guoyu_hakka_xiang	;	hak
+cmn_hakka	;	hak
+cmn_hakka_xiang	;	hak
+cmn_xiang	;	hsn
+en_840_aaland	;	en_US
+en_840_heploc	;	en_US_alalc97
+en_840_polytoni	;	en_US_polyton
+eng_840_aaland	;	en_US
+eng_840_heploc	;	en_US_alalc97
+eng_840_polytoni	;	en_US_polyton
+eng_US_aaland	;	en_US
+eng_US_heploc	;	en_US_alalc97
+eng_US_polytoni	;	en_US_polyton
+eng_aaland	;	en_AX
+eng_arevela	;	en
+eng_arevela_arevmda	;	en
+eng_lojban	;	en
+hye_arevela	;	hy
+hye_arevela_arevmda	;	hyw
+sgn_076	;	bzs
+sgn_170	;	csn
+sgn_208	;	dsl
+sgn_249	;	fsl
+sgn_250	;	fsl
+sgn_276	;	gsg
+sgn_278	;	gsg
+sgn_280	;	gsg
+sgn_300	;	gss
+sgn_372	;	isg
+sgn_380	;	ise
+sgn_392	;	jsl
+sgn_484	;	mfs
+sgn_528	;	dse
+sgn_558	;	ncs
+sgn_578	;	nsi
+sgn_620	;	psr
+sgn_710	;	sfs
+sgn_752	;	swl
+sgn_826	;	bfi
+sgn_840	;	ase
+sgn_DD	;	gsg
+sgn_FX	;	fsl
+sgn_UK	;	bfi
+zho_guoyu	;	zh
+zho_guoyu_hakka_xiang	;	hak
+zho_hakka	;	hak
+zho_hakka_xiang	;	hak
+zho_xiang	;	hsn
+
+# withIrrelevants
+
+aa_Adlm_AC_fonipa_saaho	;	ssy_Adlm_AC_fonipa
+aaa_Adlm_004_fonipa	;	aaa_Adlm_AF_fonipa
+aaa_Adlm_008_fonipa	;	aaa_Adlm_AL_fonipa
+aaa_Adlm_010_fonipa	;	aaa_Adlm_AQ_fonipa
+aaa_Adlm_012_fonipa	;	aaa_Adlm_DZ_fonipa
+aaa_Adlm_016_fonipa	;	aaa_Adlm_AS_fonipa
+aaa_Adlm_020_fonipa	;	aaa_Adlm_AD_fonipa
+aaa_Adlm_024_fonipa	;	aaa_Adlm_AO_fonipa
+aaa_Adlm_028_fonipa	;	aaa_Adlm_AG_fonipa
+aaa_Adlm_031_fonipa	;	aaa_Adlm_AZ_fonipa
+aaa_Adlm_032_fonipa	;	aaa_Adlm_AR_fonipa
+aaa_Adlm_036_fonipa	;	aaa_Adlm_AU_fonipa
+aaa_Adlm_040_fonipa	;	aaa_Adlm_AT_fonipa
+aaa_Adlm_044_fonipa	;	aaa_Adlm_BS_fonipa
+aaa_Adlm_048_fonipa	;	aaa_Adlm_BH_fonipa
+aaa_Adlm_050_fonipa	;	aaa_Adlm_BD_fonipa
+aaa_Adlm_051_fonipa	;	aaa_Adlm_AM_fonipa
+aaa_Adlm_052_fonipa	;	aaa_Adlm_BB_fonipa
+aaa_Adlm_056_fonipa	;	aaa_Adlm_BE_fonipa
+aaa_Adlm_060_fonipa	;	aaa_Adlm_BM_fonipa
+aaa_Adlm_062_fonipa	;	aaa_Adlm_034_fonipa
+aaa_Adlm_064_fonipa	;	aaa_Adlm_BT_fonipa
+aaa_Adlm_068_fonipa	;	aaa_Adlm_BO_fonipa
+aaa_Adlm_070_fonipa	;	aaa_Adlm_BA_fonipa
+aaa_Adlm_072_fonipa	;	aaa_Adlm_BW_fonipa
+aaa_Adlm_074_fonipa	;	aaa_Adlm_BV_fonipa
+aaa_Adlm_076_fonipa	;	aaa_Adlm_BR_fonipa
+aaa_Adlm_084_fonipa	;	aaa_Adlm_BZ_fonipa
+aaa_Adlm_086_fonipa	;	aaa_Adlm_IO_fonipa
+aaa_Adlm_090_fonipa	;	aaa_Adlm_SB_fonipa
+aaa_Adlm_092_fonipa	;	aaa_Adlm_VG_fonipa
+aaa_Adlm_096_fonipa	;	aaa_Adlm_BN_fonipa
+aaa_Adlm_100_fonipa	;	aaa_Adlm_BG_fonipa
+aaa_Adlm_104_fonipa	;	aaa_Adlm_MM_fonipa
+aaa_Adlm_108_fonipa	;	aaa_Adlm_BI_fonipa
+aaa_Adlm_112_fonipa	;	aaa_Adlm_BY_fonipa
+aaa_Adlm_116_fonipa	;	aaa_Adlm_KH_fonipa
+aaa_Adlm_120_fonipa	;	aaa_Adlm_CM_fonipa
+aaa_Adlm_124_fonipa	;	aaa_Adlm_CA_fonipa
+aaa_Adlm_132_fonipa	;	aaa_Adlm_CV_fonipa
+aaa_Adlm_136_fonipa	;	aaa_Adlm_KY_fonipa
+aaa_Adlm_140_fonipa	;	aaa_Adlm_CF_fonipa
+aaa_Adlm_144_fonipa	;	aaa_Adlm_LK_fonipa
+aaa_Adlm_148_fonipa	;	aaa_Adlm_TD_fonipa
+aaa_Adlm_152_fonipa	;	aaa_Adlm_CL_fonipa
+aaa_Adlm_156_fonipa	;	aaa_Adlm_CN_fonipa
+aaa_Adlm_158_fonipa	;	aaa_Adlm_TW_fonipa
+aaa_Adlm_162_fonipa	;	aaa_Adlm_CX_fonipa
+aaa_Adlm_166_fonipa	;	aaa_Adlm_CC_fonipa
+aaa_Adlm_170_fonipa	;	aaa_Adlm_CO_fonipa
+aaa_Adlm_172_fonipa	;	aaa_Adlm_RU_fonipa
+aaa_Adlm_174_fonipa	;	aaa_Adlm_KM_fonipa
+aaa_Adlm_175_fonipa	;	aaa_Adlm_YT_fonipa
+aaa_Adlm_178_fonipa	;	aaa_Adlm_CG_fonipa
+aaa_Adlm_180_fonipa	;	aaa_Adlm_CD_fonipa
+aaa_Adlm_184_fonipa	;	aaa_Adlm_CK_fonipa
+aaa_Adlm_188_fonipa	;	aaa_Adlm_CR_fonipa
+aaa_Adlm_191_fonipa	;	aaa_Adlm_HR_fonipa
+aaa_Adlm_192_fonipa	;	aaa_Adlm_CU_fonipa
+aaa_Adlm_196_fonipa	;	aaa_Adlm_CY_fonipa
+aaa_Adlm_200_fonipa	;	aaa_Adlm_CZ_fonipa
+aaa_Adlm_203_fonipa	;	aaa_Adlm_CZ_fonipa
+aaa_Adlm_204_fonipa	;	aaa_Adlm_BJ_fonipa
+aaa_Adlm_208_fonipa	;	aaa_Adlm_DK_fonipa
+aaa_Adlm_212_fonipa	;	aaa_Adlm_DM_fonipa
+aaa_Adlm_214_fonipa	;	aaa_Adlm_DO_fonipa
+aaa_Adlm_218_fonipa	;	aaa_Adlm_EC_fonipa
+aaa_Adlm_222_fonipa	;	aaa_Adlm_SV_fonipa
+aaa_Adlm_226_fonipa	;	aaa_Adlm_GQ_fonipa
+aaa_Adlm_230_fonipa	;	aaa_Adlm_ET_fonipa
+aaa_Adlm_231_fonipa	;	aaa_Adlm_ET_fonipa
+aaa_Adlm_232_fonipa	;	aaa_Adlm_ER_fonipa
+aaa_Adlm_233_fonipa	;	aaa_Adlm_EE_fonipa
+aaa_Adlm_234_fonipa	;	aaa_Adlm_FO_fonipa
+aaa_Adlm_238_fonipa	;	aaa_Adlm_FK_fonipa
+aaa_Adlm_239_fonipa	;	aaa_Adlm_GS_fonipa
+aaa_Adlm_242_fonipa	;	aaa_Adlm_FJ_fonipa
+aaa_Adlm_246_fonipa	;	aaa_Adlm_FI_fonipa
+aaa_Adlm_248_fonipa	;	aaa_Adlm_AX_fonipa
+aaa_Adlm_249_fonipa	;	aaa_Adlm_FR_fonipa
+aaa_Adlm_250_fonipa	;	aaa_Adlm_FR_fonipa
+aaa_Adlm_254_fonipa	;	aaa_Adlm_GF_fonipa
+aaa_Adlm_258_fonipa	;	aaa_Adlm_PF_fonipa
+aaa_Adlm_260_fonipa	;	aaa_Adlm_TF_fonipa
+aaa_Adlm_262_fonipa	;	aaa_Adlm_DJ_fonipa
+aaa_Adlm_266_fonipa	;	aaa_Adlm_GA_fonipa
+aaa_Adlm_268_fonipa	;	aaa_Adlm_GE_fonipa
+aaa_Adlm_270_fonipa	;	aaa_Adlm_GM_fonipa
+aaa_Adlm_275_fonipa	;	aaa_Adlm_PS_fonipa
+aaa_Adlm_276_fonipa	;	aaa_Adlm_DE_fonipa
+aaa_Adlm_278_fonipa	;	aaa_Adlm_DE_fonipa
+aaa_Adlm_280_fonipa	;	aaa_Adlm_DE_fonipa
+aaa_Adlm_288_fonipa	;	aaa_Adlm_GH_fonipa
+aaa_Adlm_292_fonipa	;	aaa_Adlm_GI_fonipa
+aaa_Adlm_296_fonipa	;	aaa_Adlm_KI_fonipa
+aaa_Adlm_300_fonipa	;	aaa_Adlm_GR_fonipa
+aaa_Adlm_304_fonipa	;	aaa_Adlm_GL_fonipa
+aaa_Adlm_308_fonipa	;	aaa_Adlm_GD_fonipa
+aaa_Adlm_312_fonipa	;	aaa_Adlm_GP_fonipa
+aaa_Adlm_316_fonipa	;	aaa_Adlm_GU_fonipa
+aaa_Adlm_320_fonipa	;	aaa_Adlm_GT_fonipa
+aaa_Adlm_324_fonipa	;	aaa_Adlm_GN_fonipa
+aaa_Adlm_328_fonipa	;	aaa_Adlm_GY_fonipa
+aaa_Adlm_332_fonipa	;	aaa_Adlm_HT_fonipa
+aaa_Adlm_334_fonipa	;	aaa_Adlm_HM_fonipa
+aaa_Adlm_336_fonipa	;	aaa_Adlm_VA_fonipa
+aaa_Adlm_340_fonipa	;	aaa_Adlm_HN_fonipa
+aaa_Adlm_344_fonipa	;	aaa_Adlm_HK_fonipa
+aaa_Adlm_348_fonipa	;	aaa_Adlm_HU_fonipa
+aaa_Adlm_352_fonipa	;	aaa_Adlm_IS_fonipa
+aaa_Adlm_356_fonipa	;	aaa_Adlm_IN_fonipa
+aaa_Adlm_360_fonipa	;	aaa_Adlm_ID_fonipa
+aaa_Adlm_364_fonipa	;	aaa_Adlm_IR_fonipa
+aaa_Adlm_368_fonipa	;	aaa_Adlm_IQ_fonipa
+aaa_Adlm_372_fonipa	;	aaa_Adlm_IE_fonipa
+aaa_Adlm_376_fonipa	;	aaa_Adlm_IL_fonipa
+aaa_Adlm_380_fonipa	;	aaa_Adlm_IT_fonipa
+aaa_Adlm_384_fonipa	;	aaa_Adlm_CI_fonipa
+aaa_Adlm_388_fonipa	;	aaa_Adlm_JM_fonipa
+aaa_Adlm_392_fonipa	;	aaa_Adlm_JP_fonipa
+aaa_Adlm_398_fonipa	;	aaa_Adlm_KZ_fonipa
+aaa_Adlm_400_fonipa	;	aaa_Adlm_JO_fonipa
+aaa_Adlm_404_fonipa	;	aaa_Adlm_KE_fonipa
+aaa_Adlm_408_fonipa	;	aaa_Adlm_KP_fonipa
+aaa_Adlm_410_fonipa	;	aaa_Adlm_KR_fonipa
+aaa_Adlm_414_fonipa	;	aaa_Adlm_KW_fonipa
+aaa_Adlm_417_fonipa	;	aaa_Adlm_KG_fonipa
+aaa_Adlm_418_fonipa	;	aaa_Adlm_LA_fonipa
+aaa_Adlm_422_fonipa	;	aaa_Adlm_LB_fonipa
+aaa_Adlm_426_fonipa	;	aaa_Adlm_LS_fonipa
+aaa_Adlm_428_fonipa	;	aaa_Adlm_LV_fonipa
+aaa_Adlm_430_fonipa	;	aaa_Adlm_LR_fonipa
+aaa_Adlm_434_fonipa	;	aaa_Adlm_LY_fonipa
+aaa_Adlm_438_fonipa	;	aaa_Adlm_LI_fonipa
+aaa_Adlm_440_fonipa	;	aaa_Adlm_LT_fonipa
+aaa_Adlm_442_fonipa	;	aaa_Adlm_LU_fonipa
+aaa_Adlm_446_fonipa	;	aaa_Adlm_MO_fonipa
+aaa_Adlm_450_fonipa	;	aaa_Adlm_MG_fonipa
+aaa_Adlm_454_fonipa	;	aaa_Adlm_MW_fonipa
+aaa_Adlm_458_fonipa	;	aaa_Adlm_MY_fonipa
+aaa_Adlm_462_fonipa	;	aaa_Adlm_MV_fonipa
+aaa_Adlm_466_fonipa	;	aaa_Adlm_ML_fonipa
+aaa_Adlm_470_fonipa	;	aaa_Adlm_MT_fonipa
+aaa_Adlm_474_fonipa	;	aaa_Adlm_MQ_fonipa
+aaa_Adlm_478_fonipa	;	aaa_Adlm_MR_fonipa
+aaa_Adlm_480_fonipa	;	aaa_Adlm_MU_fonipa
+aaa_Adlm_484_fonipa	;	aaa_Adlm_MX_fonipa
+aaa_Adlm_492_fonipa	;	aaa_Adlm_MC_fonipa
+aaa_Adlm_496_fonipa	;	aaa_Adlm_MN_fonipa
+aaa_Adlm_498_fonipa	;	aaa_Adlm_MD_fonipa
+aaa_Adlm_499_fonipa	;	aaa_Adlm_ME_fonipa
+aaa_Adlm_500_fonipa	;	aaa_Adlm_MS_fonipa
+aaa_Adlm_504_fonipa	;	aaa_Adlm_MA_fonipa
+aaa_Adlm_508_fonipa	;	aaa_Adlm_MZ_fonipa
+aaa_Adlm_512_fonipa	;	aaa_Adlm_OM_fonipa
+aaa_Adlm_516_fonipa	;	aaa_Adlm_NA_fonipa
+aaa_Adlm_520_fonipa	;	aaa_Adlm_NR_fonipa
+aaa_Adlm_524_fonipa	;	aaa_Adlm_NP_fonipa
+aaa_Adlm_528_fonipa	;	aaa_Adlm_NL_fonipa
+aaa_Adlm_530_fonipa	;	aaa_Adlm_CW_fonipa
+aaa_Adlm_531_fonipa	;	aaa_Adlm_CW_fonipa
+aaa_Adlm_532_fonipa	;	aaa_Adlm_CW_fonipa
+aaa_Adlm_533_fonipa	;	aaa_Adlm_AW_fonipa
+aaa_Adlm_534_fonipa	;	aaa_Adlm_SX_fonipa
+aaa_Adlm_535_fonipa	;	aaa_Adlm_BQ_fonipa
+aaa_Adlm_536_fonipa	;	aaa_Adlm_SA_fonipa
+aaa_Adlm_540_fonipa	;	aaa_Adlm_NC_fonipa
+aaa_Adlm_548_fonipa	;	aaa_Adlm_VU_fonipa
+aaa_Adlm_554_fonipa	;	aaa_Adlm_NZ_fonipa
+aaa_Adlm_558_fonipa	;	aaa_Adlm_NI_fonipa
+aaa_Adlm_562_fonipa	;	aaa_Adlm_NE_fonipa
+aaa_Adlm_566_fonipa	;	aaa_Adlm_NG_fonipa
+aaa_Adlm_570_fonipa	;	aaa_Adlm_NU_fonipa
+aaa_Adlm_574_fonipa	;	aaa_Adlm_NF_fonipa
+aaa_Adlm_578_fonipa	;	aaa_Adlm_NO_fonipa
+aaa_Adlm_580_fonipa	;	aaa_Adlm_MP_fonipa
+aaa_Adlm_581_fonipa	;	aaa_Adlm_UM_fonipa
+aaa_Adlm_582_fonipa	;	aaa_Adlm_FM_fonipa
+aaa_Adlm_583_fonipa	;	aaa_Adlm_FM_fonipa
+aaa_Adlm_584_fonipa	;	aaa_Adlm_MH_fonipa
+aaa_Adlm_585_fonipa	;	aaa_Adlm_PW_fonipa
+aaa_Adlm_586_fonipa	;	aaa_Adlm_PK_fonipa
+aaa_Adlm_591_fonipa	;	aaa_Adlm_PA_fonipa
+aaa_Adlm_598_fonipa	;	aaa_Adlm_PG_fonipa
+aaa_Adlm_600_fonipa	;	aaa_Adlm_PY_fonipa
+aaa_Adlm_604_fonipa	;	aaa_Adlm_PE_fonipa
+aaa_Adlm_608_fonipa	;	aaa_Adlm_PH_fonipa
+aaa_Adlm_612_fonipa	;	aaa_Adlm_PN_fonipa
+aaa_Adlm_616_fonipa	;	aaa_Adlm_PL_fonipa
+aaa_Adlm_620_fonipa	;	aaa_Adlm_PT_fonipa
+aaa_Adlm_624_fonipa	;	aaa_Adlm_GW_fonipa
+aaa_Adlm_626_fonipa	;	aaa_Adlm_TL_fonipa
+aaa_Adlm_630_fonipa	;	aaa_Adlm_PR_fonipa
+aaa_Adlm_634_fonipa	;	aaa_Adlm_QA_fonipa
+aaa_Adlm_638_fonipa	;	aaa_Adlm_RE_fonipa
+aaa_Adlm_642_fonipa	;	aaa_Adlm_RO_fonipa
+aaa_Adlm_643_fonipa	;	aaa_Adlm_RU_fonipa
+aaa_Adlm_646_fonipa	;	aaa_Adlm_RW_fonipa
+aaa_Adlm_652_fonipa	;	aaa_Adlm_BL_fonipa
+aaa_Adlm_654_fonipa	;	aaa_Adlm_SH_fonipa
+aaa_Adlm_659_fonipa	;	aaa_Adlm_KN_fonipa
+aaa_Adlm_660_fonipa	;	aaa_Adlm_AI_fonipa
+aaa_Adlm_662_fonipa	;	aaa_Adlm_LC_fonipa
+aaa_Adlm_663_fonipa	;	aaa_Adlm_MF_fonipa
+aaa_Adlm_666_fonipa	;	aaa_Adlm_PM_fonipa
+aaa_Adlm_670_fonipa	;	aaa_Adlm_VC_fonipa
+aaa_Adlm_674_fonipa	;	aaa_Adlm_SM_fonipa
+aaa_Adlm_678_fonipa	;	aaa_Adlm_ST_fonipa
+aaa_Adlm_682_fonipa	;	aaa_Adlm_SA_fonipa
+aaa_Adlm_686_fonipa	;	aaa_Adlm_SN_fonipa
+aaa_Adlm_688_fonipa	;	aaa_Adlm_RS_fonipa
+aaa_Adlm_690_fonipa	;	aaa_Adlm_SC_fonipa
+aaa_Adlm_694_fonipa	;	aaa_Adlm_SL_fonipa
+aaa_Adlm_702_fonipa	;	aaa_Adlm_SG_fonipa
+aaa_Adlm_703_fonipa	;	aaa_Adlm_SK_fonipa
+aaa_Adlm_704_fonipa	;	aaa_Adlm_VN_fonipa
+aaa_Adlm_705_fonipa	;	aaa_Adlm_SI_fonipa
+aaa_Adlm_706_fonipa	;	aaa_Adlm_SO_fonipa
+aaa_Adlm_710_fonipa	;	aaa_Adlm_ZA_fonipa
+aaa_Adlm_716_fonipa	;	aaa_Adlm_ZW_fonipa
+aaa_Adlm_720_fonipa	;	aaa_Adlm_YE_fonipa
+aaa_Adlm_724_fonipa	;	aaa_Adlm_ES_fonipa
+aaa_Adlm_728_fonipa	;	aaa_Adlm_SS_fonipa
+aaa_Adlm_729_fonipa	;	aaa_Adlm_SD_fonipa
+aaa_Adlm_732_fonipa	;	aaa_Adlm_EH_fonipa
+aaa_Adlm_736_fonipa	;	aaa_Adlm_SD_fonipa
+aaa_Adlm_740_fonipa	;	aaa_Adlm_SR_fonipa
+aaa_Adlm_744_fonipa	;	aaa_Adlm_SJ_fonipa
+aaa_Adlm_748_fonipa	;	aaa_Adlm_SZ_fonipa
+aaa_Adlm_752_fonipa	;	aaa_Adlm_SE_fonipa
+aaa_Adlm_756_fonipa	;	aaa_Adlm_CH_fonipa
+aaa_Adlm_760_fonipa	;	aaa_Adlm_SY_fonipa
+aaa_Adlm_762_fonipa	;	aaa_Adlm_TJ_fonipa
+aaa_Adlm_764_fonipa	;	aaa_Adlm_TH_fonipa
+aaa_Adlm_768_fonipa	;	aaa_Adlm_TG_fonipa
+aaa_Adlm_772_fonipa	;	aaa_Adlm_TK_fonipa
+aaa_Adlm_776_fonipa	;	aaa_Adlm_TO_fonipa
+aaa_Adlm_780_fonipa	;	aaa_Adlm_TT_fonipa
+aaa_Adlm_784_fonipa	;	aaa_Adlm_AE_fonipa
+aaa_Adlm_788_fonipa	;	aaa_Adlm_TN_fonipa
+aaa_Adlm_792_fonipa	;	aaa_Adlm_TR_fonipa
+aaa_Adlm_795_fonipa	;	aaa_Adlm_TM_fonipa
+aaa_Adlm_796_fonipa	;	aaa_Adlm_TC_fonipa
+aaa_Adlm_798_fonipa	;	aaa_Adlm_TV_fonipa
+aaa_Adlm_800_fonipa	;	aaa_Adlm_UG_fonipa
+aaa_Adlm_804_fonipa	;	aaa_Adlm_UA_fonipa
+aaa_Adlm_807_fonipa	;	aaa_Adlm_MK_fonipa
+aaa_Adlm_810_fonipa	;	aaa_Adlm_RU_fonipa
+aaa_Adlm_818_fonipa	;	aaa_Adlm_EG_fonipa
+aaa_Adlm_826_fonipa	;	aaa_Adlm_GB_fonipa
+aaa_Adlm_830_fonipa	;	aaa_Adlm_JE_fonipa
+aaa_Adlm_831_fonipa	;	aaa_Adlm_GG_fonipa
+aaa_Adlm_832_fonipa	;	aaa_Adlm_JE_fonipa
+aaa_Adlm_833_fonipa	;	aaa_Adlm_IM_fonipa
+aaa_Adlm_834_fonipa	;	aaa_Adlm_TZ_fonipa
+aaa_Adlm_840_fonipa	;	aaa_Adlm_US_fonipa
+aaa_Adlm_850_fonipa	;	aaa_Adlm_VI_fonipa
+aaa_Adlm_854_fonipa	;	aaa_Adlm_BF_fonipa
+aaa_Adlm_858_fonipa	;	aaa_Adlm_UY_fonipa
+aaa_Adlm_860_fonipa	;	aaa_Adlm_UZ_fonipa
+aaa_Adlm_862_fonipa	;	aaa_Adlm_VE_fonipa
+aaa_Adlm_876_fonipa	;	aaa_Adlm_WF_fonipa
+aaa_Adlm_882_fonipa	;	aaa_Adlm_WS_fonipa
+aaa_Adlm_886_fonipa	;	aaa_Adlm_YE_fonipa
+aaa_Adlm_887_fonipa	;	aaa_Adlm_YE_fonipa
+aaa_Adlm_890_fonipa	;	aaa_Adlm_RS_fonipa
+aaa_Adlm_891_fonipa	;	aaa_Adlm_RS_fonipa
+aaa_Adlm_894_fonipa	;	aaa_Adlm_ZM_fonipa
+aaa_Adlm_958_fonipa	;	aaa_Adlm_AA_fonipa
+aaa_Adlm_959_fonipa	;	aaa_Adlm_QM_fonipa
+aaa_Adlm_960_fonipa	;	aaa_Adlm_QN_fonipa
+aaa_Adlm_962_fonipa	;	aaa_Adlm_QP_fonipa
+aaa_Adlm_963_fonipa	;	aaa_Adlm_QQ_fonipa
+aaa_Adlm_964_fonipa	;	aaa_Adlm_QR_fonipa
+aaa_Adlm_965_fonipa	;	aaa_Adlm_QS_fonipa
+aaa_Adlm_966_fonipa	;	aaa_Adlm_QT_fonipa
+aaa_Adlm_967_fonipa	;	aaa_Adlm_EU_fonipa
+aaa_Adlm_968_fonipa	;	aaa_Adlm_QV_fonipa
+aaa_Adlm_969_fonipa	;	aaa_Adlm_QW_fonipa
+aaa_Adlm_970_fonipa	;	aaa_Adlm_QX_fonipa
+aaa_Adlm_971_fonipa	;	aaa_Adlm_QY_fonipa
+aaa_Adlm_972_fonipa	;	aaa_Adlm_QZ_fonipa
+aaa_Adlm_973_fonipa	;	aaa_Adlm_XA_fonipa
+aaa_Adlm_974_fonipa	;	aaa_Adlm_XB_fonipa
+aaa_Adlm_975_fonipa	;	aaa_Adlm_XC_fonipa
+aaa_Adlm_976_fonipa	;	aaa_Adlm_XD_fonipa
+aaa_Adlm_977_fonipa	;	aaa_Adlm_XE_fonipa
+aaa_Adlm_978_fonipa	;	aaa_Adlm_XF_fonipa
+aaa_Adlm_979_fonipa	;	aaa_Adlm_XG_fonipa
+aaa_Adlm_980_fonipa	;	aaa_Adlm_XH_fonipa
+aaa_Adlm_981_fonipa	;	aaa_Adlm_XI_fonipa
+aaa_Adlm_982_fonipa	;	aaa_Adlm_XJ_fonipa
+aaa_Adlm_983_fonipa	;	aaa_Adlm_XK_fonipa
+aaa_Adlm_984_fonipa	;	aaa_Adlm_XL_fonipa
+aaa_Adlm_985_fonipa	;	aaa_Adlm_XM_fonipa
+aaa_Adlm_986_fonipa	;	aaa_Adlm_XN_fonipa
+aaa_Adlm_987_fonipa	;	aaa_Adlm_XO_fonipa
+aaa_Adlm_988_fonipa	;	aaa_Adlm_XP_fonipa
+aaa_Adlm_989_fonipa	;	aaa_Adlm_XQ_fonipa
+aaa_Adlm_990_fonipa	;	aaa_Adlm_XR_fonipa
+aaa_Adlm_991_fonipa	;	aaa_Adlm_XS_fonipa
+aaa_Adlm_992_fonipa	;	aaa_Adlm_XT_fonipa
+aaa_Adlm_993_fonipa	;	aaa_Adlm_XU_fonipa
+aaa_Adlm_994_fonipa	;	aaa_Adlm_XV_fonipa
+aaa_Adlm_995_fonipa	;	aaa_Adlm_XW_fonipa
+aaa_Adlm_996_fonipa	;	aaa_Adlm_XX_fonipa
+aaa_Adlm_997_fonipa	;	aaa_Adlm_XY_fonipa
+aaa_Adlm_998_fonipa	;	aaa_Adlm_XZ_fonipa
+aaa_Adlm_999_fonipa	;	aaa_Adlm_ZZ_fonipa
+aaa_Adlm_AC_aaland_fonipa	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_arevela_fonipa	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_arevmda_fonipa	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_bokmal_fonipa	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_fonipa_hakka	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_fonipa_heploc	;	aaa_Adlm_AC_alalc97_fonipa
+aaa_Adlm_AC_fonipa_lojban	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_fonipa_nynorsk	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_fonipa_polytoni	;	aaa_Adlm_AC_fonipa_polyton
+aaa_Adlm_AC_fonipa_saaho	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_fonipa_xiang	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AN_fonipa	;	aaa_Adlm_CW_fonipa
+aaa_Adlm_BU_fonipa	;	aaa_Adlm_MM_fonipa
+aaa_Adlm_CS_fonipa	;	aaa_Adlm_RS_fonipa
+aaa_Adlm_CT_fonipa	;	aaa_Adlm_KI_fonipa
+aaa_Adlm_DD_fonipa	;	aaa_Adlm_DE_fonipa
+aaa_Adlm_DY_fonipa	;	aaa_Adlm_BJ_fonipa
+aaa_Adlm_FQ_fonipa	;	aaa_Adlm_AQ_fonipa
+aaa_Adlm_FX_fonipa	;	aaa_Adlm_FR_fonipa
+aaa_Adlm_HV_fonipa	;	aaa_Adlm_BF_fonipa
+aaa_Adlm_JT_fonipa	;	aaa_Adlm_UM_fonipa
+aaa_Adlm_MI_fonipa	;	aaa_Adlm_UM_fonipa
+aaa_Adlm_NH_fonipa	;	aaa_Adlm_VU_fonipa
+aaa_Adlm_NQ_fonipa	;	aaa_Adlm_AQ_fonipa
+aaa_Adlm_NT_fonipa	;	aaa_Adlm_SA_fonipa
+aaa_Adlm_PC_fonipa	;	aaa_Adlm_FM_fonipa
+aaa_Adlm_PU_fonipa	;	aaa_Adlm_UM_fonipa
+aaa_Adlm_PZ_fonipa	;	aaa_Adlm_PA_fonipa
+aaa_Adlm_QU_fonipa	;	aaa_Adlm_EU_fonipa
+aaa_Adlm_RH_fonipa	;	aaa_Adlm_ZW_fonipa
+aaa_Adlm_SU_fonipa	;	aaa_Adlm_RU_fonipa
+aaa_Adlm_TP_fonipa	;	aaa_Adlm_TL_fonipa
+aaa_Adlm_UK_fonipa	;	aaa_Adlm_GB_fonipa
+aaa_Adlm_VD_fonipa	;	aaa_Adlm_VN_fonipa
+aaa_Adlm_WK_fonipa	;	aaa_Adlm_UM_fonipa
+aaa_Adlm_YD_fonipa	;	aaa_Adlm_YE_fonipa
+aaa_Adlm_YU_fonipa	;	aaa_Adlm_RS_fonipa
+aaa_Adlm_ZR_fonipa	;	aaa_Adlm_CD_fonipa
+aaa_Qaai_AC_fonipa	;	aaa_Zinh_AC_fonipa
+aam_Adlm_AC_fonipa	;	aas_Adlm_AC_fonipa
+aar_Adlm_AC_fonipa	;	aa_Adlm_AC_fonipa
+aar_Adlm_AC_fonipa_saaho	;	ssy_Adlm_AC_fonipa
+abk_Adlm_AC_fonipa	;	ab_Adlm_AC_fonipa
+adp_Adlm_AC_fonipa	;	dz_Adlm_AC_fonipa
+afr_Adlm_AC_fonipa	;	af_Adlm_AC_fonipa
+aju_Adlm_AC_fonipa	;	jrb_Adlm_AC_fonipa
+aka_Adlm_AC_fonipa	;	ak_Adlm_AC_fonipa
+alb_Adlm_AC_fonipa	;	sq_Adlm_AC_fonipa
+als_Adlm_AC_fonipa	;	sq_Adlm_AC_fonipa
+amh_Adlm_AC_fonipa	;	am_Adlm_AC_fonipa
+ara_Adlm_AC_fonipa	;	ar_Adlm_AC_fonipa
+arb_Adlm_AC_fonipa	;	ar_Adlm_AC_fonipa
+arg_Adlm_AC_fonipa	;	an_Adlm_AC_fonipa
+arm_Adlm_AC_arevela_arevmda_fonipa	;	hyw_Adlm_AC_fonipa
+arm_Adlm_AC_arevela_fonipa	;	hy_Adlm_AC_fonipa
+arm_Adlm_AC_arevmda_fonipa	;	hyw_Adlm_AC_fonipa
+arm_Adlm_AC_fonipa	;	hy_Adlm_AC_fonipa
+art_Adlm_AC_fonipa_lojban	;	jbo_Adlm_AC_fonipa
+asd_Adlm_AC_fonipa	;	snz_Adlm_AC_fonipa
+asm_Adlm_AC_fonipa	;	as_Adlm_AC_fonipa
+aue_Adlm_AC_fonipa	;	ktz_Adlm_AC_fonipa
+ava_Adlm_AC_fonipa	;	av_Adlm_AC_fonipa
+ave_Adlm_AC_fonipa	;	ae_Adlm_AC_fonipa
+aym_Adlm_AC_fonipa	;	ay_Adlm_AC_fonipa
+ayr_Adlm_AC_fonipa	;	ay_Adlm_AC_fonipa
+ayx_Adlm_AC_fonipa	;	nun_Adlm_AC_fonipa
+aze_Adlm_AC_fonipa	;	az_Adlm_AC_fonipa
+azj_Adlm_AC_fonipa	;	az_Adlm_AC_fonipa
+bak_Adlm_AC_fonipa	;	ba_Adlm_AC_fonipa
+bam_Adlm_AC_fonipa	;	bm_Adlm_AC_fonipa
+baq_Adlm_AC_fonipa	;	eu_Adlm_AC_fonipa
+bcc_Adlm_AC_fonipa	;	bal_Adlm_AC_fonipa
+bcl_Adlm_AC_fonipa	;	bik_Adlm_AC_fonipa
+bel_Adlm_AC_fonipa	;	be_Adlm_AC_fonipa
+ben_Adlm_AC_fonipa	;	bn_Adlm_AC_fonipa
+bgm_Adlm_AC_fonipa	;	bcg_Adlm_AC_fonipa
+bh_Adlm_AC_fonipa	;	bho_Adlm_AC_fonipa
+bih_Adlm_AC_fonipa	;	bho_Adlm_AC_fonipa
+bis_Adlm_AC_fonipa	;	bi_Adlm_AC_fonipa
+bjd_Adlm_AC_fonipa	;	drl_Adlm_AC_fonipa
+bod_Adlm_AC_fonipa	;	bo_Adlm_AC_fonipa
+bos_Adlm_AC_fonipa	;	bs_Adlm_AC_fonipa
+bre_Adlm_AC_fonipa	;	br_Adlm_AC_fonipa
+bul_Adlm_AC_fonipa	;	bg_Adlm_AC_fonipa
+bur_Adlm_AC_fonipa	;	my_Adlm_AC_fonipa
+bxk_Adlm_AC_fonipa	;	luy_Adlm_AC_fonipa
+bxr_Adlm_AC_fonipa	;	bua_Adlm_AC_fonipa
+cat_Adlm_AC_fonipa	;	ca_Adlm_AC_fonipa
+ccq_Adlm_AC_fonipa	;	rki_Adlm_AC_fonipa
+cel_Adlm_AC_fonipa_gaulish	;	xtg_Adlm_AC_fonipa
+ces_Adlm_AC_fonipa	;	cs_Adlm_AC_fonipa
+cha_Adlm_AC_fonipa	;	ch_Adlm_AC_fonipa
+che_Adlm_AC_fonipa	;	ce_Adlm_AC_fonipa
+chi_Adlm_AC_fonipa	;	zh_Adlm_AC_fonipa
+chi_Adlm_AC_fonipa_guoyu	;	zh_Adlm_AC_fonipa
+chi_Adlm_AC_fonipa_guoyu_hakka_xiang	;	hak_Adlm_AC_fonipa
+chi_Adlm_AC_fonipa_hakka	;	hak_Adlm_AC_fonipa
+chi_Adlm_AC_fonipa_hakka_xiang	;	hak_Adlm_AC_fonipa
+chi_Adlm_AC_fonipa_xiang	;	hsn_Adlm_AC_fonipa
+chu_Adlm_AC_fonipa	;	cu_Adlm_AC_fonipa
+chv_Adlm_AC_fonipa	;	cv_Adlm_AC_fonipa
+cjr_Adlm_AC_fonipa	;	mom_Adlm_AC_fonipa
+cka_Adlm_AC_fonipa	;	cmr_Adlm_AC_fonipa
+cld_Adlm_AC_fonipa	;	syr_Adlm_AC_fonipa
+cmk_Adlm_AC_fonipa	;	xch_Adlm_AC_fonipa
+cmn_Adlm_AC_fonipa	;	zh_Adlm_AC_fonipa
+cmn_Adlm_AC_fonipa_guoyu	;	zh_Adlm_AC_fonipa
+cmn_Adlm_AC_fonipa_guoyu_hakka_xiang	;	hak_Adlm_AC_fonipa
+cmn_Adlm_AC_fonipa_hakka	;	hak_Adlm_AC_fonipa
+cmn_Adlm_AC_fonipa_hakka_xiang	;	hak_Adlm_AC_fonipa
+cmn_Adlm_AC_fonipa_xiang	;	hsn_Adlm_AC_fonipa
+cnr_Adlm_AC_fonipa	;	sr_Adlm_AC_fonipa
+cor_Adlm_AC_fonipa	;	kw_Adlm_AC_fonipa
+cos_Adlm_AC_fonipa	;	co_Adlm_AC_fonipa
+coy_Adlm_AC_fonipa	;	pij_Adlm_AC_fonipa
+cqu_Adlm_AC_fonipa	;	quh_Adlm_AC_fonipa
+cre_Adlm_AC_fonipa	;	cr_Adlm_AC_fonipa
+cwd_Adlm_AC_fonipa	;	cr_Adlm_AC_fonipa
+cym_Adlm_AC_fonipa	;	cy_Adlm_AC_fonipa
+cze_Adlm_AC_fonipa	;	cs_Adlm_AC_fonipa
+dan_Adlm_AC_fonipa	;	da_Adlm_AC_fonipa
+deu_Adlm_AC_fonipa	;	de_Adlm_AC_fonipa
+dgo_Adlm_AC_fonipa	;	doi_Adlm_AC_fonipa
+dhd_Adlm_AC_fonipa	;	mwr_Adlm_AC_fonipa
+dik_Adlm_AC_fonipa	;	din_Adlm_AC_fonipa
+diq_Adlm_AC_fonipa	;	zza_Adlm_AC_fonipa
+dit_Adlm_AC_fonipa	;	dif_Adlm_AC_fonipa
+div_Adlm_AC_fonipa	;	dv_Adlm_AC_fonipa
+drh_Adlm_AC_fonipa	;	mn_Adlm_AC_fonipa
+drw_Adlm_AC_fonipa	;	fa_Adlm_AC_fonipa
+dut_Adlm_AC_fonipa	;	nl_Adlm_AC_fonipa
+dzo_Adlm_AC_fonipa	;	dz_Adlm_AC_fonipa
+ekk_Adlm_AC_fonipa	;	et_Adlm_AC_fonipa
+ell_Adlm_AC_fonipa	;	el_Adlm_AC_fonipa
+emk_Adlm_AC_fonipa	;	man_Adlm_AC_fonipa
+en_Adlm_840_aaland_fonipa	;	en_Adlm_US_fonipa
+en_Adlm_840_fonipa_heploc	;	en_Adlm_US_alalc97_fonipa
+en_Adlm_840_fonipa_polytoni	;	en_Adlm_US_fonipa_polyton
+en_Adlm_AC_aaland_fonipa	;	en_Adlm_AC_fonipa
+en_Adlm_AC_arevela_arevmda_fonipa	;	en_Adlm_AC_fonipa
+en_Adlm_AC_arevela_fonipa	;	en_Adlm_AC_fonipa
+en_Adlm_AC_fonipa_lojban	;	en_Adlm_AC_fonipa
+en_Adlm_US_aaland_fonipa	;	en_Adlm_US_fonipa
+en_Adlm_US_fonipa_heploc	;	en_Adlm_US_alalc97_fonipa
+en_Adlm_US_fonipa_polytoni	;	en_Adlm_US_fonipa_polyton
+eng_Adlm_840_aaland_fonipa	;	en_Adlm_US_fonipa
+eng_Adlm_840_fonipa_heploc	;	en_Adlm_US_alalc97_fonipa
+eng_Adlm_840_fonipa_polytoni	;	en_Adlm_US_fonipa_polyton
+eng_Adlm_AC_aaland_fonipa	;	en_Adlm_AC_fonipa
+eng_Adlm_AC_arevela_arevmda_fonipa	;	en_Adlm_AC_fonipa
+eng_Adlm_AC_arevela_fonipa	;	en_Adlm_AC_fonipa
+eng_Adlm_AC_fonipa	;	en_Adlm_AC_fonipa
+eng_Adlm_AC_fonipa_lojban	;	en_Adlm_AC_fonipa
+eng_Adlm_US_aaland_fonipa	;	en_Adlm_US_fonipa
+eng_Adlm_US_fonipa_heploc	;	en_Adlm_US_alalc97_fonipa
+eng_Adlm_US_fonipa_polytoni	;	en_Adlm_US_fonipa_polyton
+epo_Adlm_AC_fonipa	;	eo_Adlm_AC_fonipa
+esk_Adlm_AC_fonipa	;	ik_Adlm_AC_fonipa
+est_Adlm_AC_fonipa	;	et_Adlm_AC_fonipa
+eus_Adlm_AC_fonipa	;	eu_Adlm_AC_fonipa
+ewe_Adlm_AC_fonipa	;	ee_Adlm_AC_fonipa
+fao_Adlm_AC_fonipa	;	fo_Adlm_AC_fonipa
+fas_Adlm_AC_fonipa	;	fa_Adlm_AC_fonipa
+fat_Adlm_AC_fonipa	;	ak_Adlm_AC_fonipa
+fij_Adlm_AC_fonipa	;	fj_Adlm_AC_fonipa
+fin_Adlm_AC_fonipa	;	fi_Adlm_AC_fonipa
+fra_Adlm_AC_fonipa	;	fr_Adlm_AC_fonipa
+fre_Adlm_AC_fonipa	;	fr_Adlm_AC_fonipa
+fry_Adlm_AC_fonipa	;	fy_Adlm_AC_fonipa
+fuc_Adlm_AC_fonipa	;	ff_Adlm_AC_fonipa
+ful_Adlm_AC_fonipa	;	ff_Adlm_AC_fonipa
+gav_Adlm_AC_fonipa	;	dev_Adlm_AC_fonipa
+gaz_Adlm_AC_fonipa	;	om_Adlm_AC_fonipa
+gbo_Adlm_AC_fonipa	;	grb_Adlm_AC_fonipa
+geo_Adlm_AC_fonipa	;	ka_Adlm_AC_fonipa
+ger_Adlm_AC_fonipa	;	de_Adlm_AC_fonipa
+gfx_Adlm_AC_fonipa	;	vaj_Adlm_AC_fonipa
+ggn_Adlm_AC_fonipa	;	gvr_Adlm_AC_fonipa
+gla_Adlm_AC_fonipa	;	gd_Adlm_AC_fonipa
+gle_Adlm_AC_fonipa	;	ga_Adlm_AC_fonipa
+glg_Adlm_AC_fonipa	;	gl_Adlm_AC_fonipa
+glv_Adlm_AC_fonipa	;	gv_Adlm_AC_fonipa
+gno_Adlm_AC_fonipa	;	gon_Adlm_AC_fonipa
+gre_Adlm_AC_fonipa	;	el_Adlm_AC_fonipa
+grn_Adlm_AC_fonipa	;	gn_Adlm_AC_fonipa
+gti_Adlm_AC_fonipa	;	nyc_Adlm_AC_fonipa
+gug_Adlm_AC_fonipa	;	gn_Adlm_AC_fonipa
+guj_Adlm_AC_fonipa	;	gu_Adlm_AC_fonipa
+guv_Adlm_AC_fonipa	;	duz_Adlm_AC_fonipa
+gya_Adlm_AC_fonipa	;	gba_Adlm_AC_fonipa
+hat_Adlm_AC_fonipa	;	ht_Adlm_AC_fonipa
+hau_Adlm_AC_fonipa	;	ha_Adlm_AC_fonipa
+hbs_Adlm_AC_fonipa	;	sr_Adlm_AC_fonipa
+hdn_Adlm_AC_fonipa	;	hai_Adlm_AC_fonipa
+hea_Adlm_AC_fonipa	;	hmn_Adlm_AC_fonipa
+heb_Adlm_AC_fonipa	;	he_Adlm_AC_fonipa
+her_Adlm_AC_fonipa	;	hz_Adlm_AC_fonipa
+him_Adlm_AC_fonipa	;	srx_Adlm_AC_fonipa
+hin_Adlm_AC_fonipa	;	hi_Adlm_AC_fonipa
+hmo_Adlm_AC_fonipa	;	ho_Adlm_AC_fonipa
+hrr_Adlm_AC_fonipa	;	jal_Adlm_AC_fonipa
+hrv_Adlm_AC_fonipa	;	hr_Adlm_AC_fonipa
+hun_Adlm_AC_fonipa	;	hu_Adlm_AC_fonipa
+hy_Adlm_AC_arevela_arevmda_fonipa	;	hyw_Adlm_AC_fonipa
+hy_Adlm_AC_arevela_fonipa	;	hy_Adlm_AC_fonipa
+hy_Adlm_AC_arevmda_fonipa	;	hyw_Adlm_AC_fonipa
+hye_Adlm_AC_arevela_arevmda_fonipa	;	hyw_Adlm_AC_fonipa
+hye_Adlm_AC_arevela_fonipa	;	hy_Adlm_AC_fonipa
+hye_Adlm_AC_arevmda_fonipa	;	hyw_Adlm_AC_fonipa
+hye_Adlm_AC_fonipa	;	hy_Adlm_AC_fonipa
+ibi_Adlm_AC_fonipa	;	opa_Adlm_AC_fonipa
+ibo_Adlm_AC_fonipa	;	ig_Adlm_AC_fonipa
+ice_Adlm_AC_fonipa	;	is_Adlm_AC_fonipa
+ido_Adlm_AC_fonipa	;	io_Adlm_AC_fonipa
+iii_Adlm_AC_fonipa	;	ii_Adlm_AC_fonipa
+ike_Adlm_AC_fonipa	;	iu_Adlm_AC_fonipa
+iku_Adlm_AC_fonipa	;	iu_Adlm_AC_fonipa
+ile_Adlm_AC_fonipa	;	ie_Adlm_AC_fonipa
+ilw_Adlm_AC_fonipa	;	gal_Adlm_AC_fonipa
+in_Adlm_AC_fonipa	;	id_Adlm_AC_fonipa
+ina_Adlm_AC_fonipa	;	ia_Adlm_AC_fonipa
+ind_Adlm_AC_fonipa	;	id_Adlm_AC_fonipa
+ipk_Adlm_AC_fonipa	;	ik_Adlm_AC_fonipa
+isl_Adlm_AC_fonipa	;	is_Adlm_AC_fonipa
+ita_Adlm_AC_fonipa	;	it_Adlm_AC_fonipa
+iw_Adlm_AC_fonipa	;	he_Adlm_AC_fonipa
+jav_Adlm_AC_fonipa	;	jv_Adlm_AC_fonipa
+jeg_Adlm_AC_fonipa	;	oyb_Adlm_AC_fonipa
+ji_Adlm_AC_fonipa	;	yi_Adlm_AC_fonipa
+jpn_Adlm_AC_fonipa	;	ja_Adlm_AC_fonipa
+jw_Adlm_AC_fonipa	;	jv_Adlm_AC_fonipa
+kal_Adlm_AC_fonipa	;	kl_Adlm_AC_fonipa
+kan_Adlm_AC_fonipa	;	kn_Adlm_AC_fonipa
+kas_Adlm_AC_fonipa	;	ks_Adlm_AC_fonipa
+kat_Adlm_AC_fonipa	;	ka_Adlm_AC_fonipa
+kau_Adlm_AC_fonipa	;	kr_Adlm_AC_fonipa
+kaz_Adlm_AC_fonipa	;	kk_Adlm_AC_fonipa
+kgc_Adlm_AC_fonipa	;	tdf_Adlm_AC_fonipa
+kgh_Adlm_AC_fonipa	;	kml_Adlm_AC_fonipa
+khk_Adlm_AC_fonipa	;	mn_Adlm_AC_fonipa
+khm_Adlm_AC_fonipa	;	km_Adlm_AC_fonipa
+kik_Adlm_AC_fonipa	;	ki_Adlm_AC_fonipa
+kin_Adlm_AC_fonipa	;	rw_Adlm_AC_fonipa
+kir_Adlm_AC_fonipa	;	ky_Adlm_AC_fonipa
+kmr_Adlm_AC_fonipa	;	ku_Adlm_AC_fonipa
+knc_Adlm_AC_fonipa	;	kr_Adlm_AC_fonipa
+kng_Adlm_AC_fonipa	;	kg_Adlm_AC_fonipa
+knn_Adlm_AC_fonipa	;	kok_Adlm_AC_fonipa
+koj_Adlm_AC_fonipa	;	kwv_Adlm_AC_fonipa
+kom_Adlm_AC_fonipa	;	kv_Adlm_AC_fonipa
+kon_Adlm_AC_fonipa	;	kg_Adlm_AC_fonipa
+kor_Adlm_AC_fonipa	;	ko_Adlm_AC_fonipa
+kpv_Adlm_AC_fonipa	;	kv_Adlm_AC_fonipa
+krm_Adlm_AC_fonipa	;	bmf_Adlm_AC_fonipa
+ktr_Adlm_AC_fonipa	;	dtp_Adlm_AC_fonipa
+kua_Adlm_AC_fonipa	;	kj_Adlm_AC_fonipa
+kur_Adlm_AC_fonipa	;	ku_Adlm_AC_fonipa
+kvs_Adlm_AC_fonipa	;	gdj_Adlm_AC_fonipa
+kwq_Adlm_AC_fonipa	;	yam_Adlm_AC_fonipa
+kxe_Adlm_AC_fonipa	;	tvd_Adlm_AC_fonipa
+kzj_Adlm_AC_fonipa	;	dtp_Adlm_AC_fonipa
+kzt_Adlm_AC_fonipa	;	dtp_Adlm_AC_fonipa
+lao_Adlm_AC_fonipa	;	lo_Adlm_AC_fonipa
+lat_Adlm_AC_fonipa	;	la_Adlm_AC_fonipa
+lav_Adlm_AC_fonipa	;	lv_Adlm_AC_fonipa
+lbk_Adlm_AC_fonipa	;	bnc_Adlm_AC_fonipa
+lii_Adlm_AC_fonipa	;	raq_Adlm_AC_fonipa
+lim_Adlm_AC_fonipa	;	li_Adlm_AC_fonipa
+lin_Adlm_AC_fonipa	;	ln_Adlm_AC_fonipa
+lit_Adlm_AC_fonipa	;	lt_Adlm_AC_fonipa
+llo_Adlm_AC_fonipa	;	ngt_Adlm_AC_fonipa
+lmm_Adlm_AC_fonipa	;	rmx_Adlm_AC_fonipa
+ltz_Adlm_AC_fonipa	;	lb_Adlm_AC_fonipa
+lub_Adlm_AC_fonipa	;	lu_Adlm_AC_fonipa
+lug_Adlm_AC_fonipa	;	lg_Adlm_AC_fonipa
+lvs_Adlm_AC_fonipa	;	lv_Adlm_AC_fonipa
+mac_Adlm_AC_fonipa	;	mk_Adlm_AC_fonipa
+mah_Adlm_AC_fonipa	;	mh_Adlm_AC_fonipa
+mal_Adlm_AC_fonipa	;	ml_Adlm_AC_fonipa
+mao_Adlm_AC_fonipa	;	mi_Adlm_AC_fonipa
+mar_Adlm_AC_fonipa	;	mr_Adlm_AC_fonipa
+may_Adlm_AC_fonipa	;	ms_Adlm_AC_fonipa
+meg_Adlm_AC_fonipa	;	cir_Adlm_AC_fonipa
+mhr_Adlm_AC_fonipa	;	chm_Adlm_AC_fonipa
+mkd_Adlm_AC_fonipa	;	mk_Adlm_AC_fonipa
+mlg_Adlm_AC_fonipa	;	mg_Adlm_AC_fonipa
+mlt_Adlm_AC_fonipa	;	mt_Adlm_AC_fonipa
+mnk_Adlm_AC_fonipa	;	man_Adlm_AC_fonipa
+mo_Adlm_AC_fonipa	;	ro_Adlm_AC_fonipa
+mol_Adlm_AC_fonipa	;	ro_Adlm_AC_fonipa
+mon_Adlm_AC_fonipa	;	mn_Adlm_AC_fonipa
+mri_Adlm_AC_fonipa	;	mi_Adlm_AC_fonipa
+msa_Adlm_AC_fonipa	;	ms_Adlm_AC_fonipa
+mst_Adlm_AC_fonipa	;	mry_Adlm_AC_fonipa
+mup_Adlm_AC_fonipa	;	raj_Adlm_AC_fonipa
+mwj_Adlm_AC_fonipa	;	vaj_Adlm_AC_fonipa
+mya_Adlm_AC_fonipa	;	my_Adlm_AC_fonipa
+myd_Adlm_AC_fonipa	;	aog_Adlm_AC_fonipa
+myt_Adlm_AC_fonipa	;	mry_Adlm_AC_fonipa
+nad_Adlm_AC_fonipa	;	xny_Adlm_AC_fonipa
+nau_Adlm_AC_fonipa	;	na_Adlm_AC_fonipa
+nav_Adlm_AC_fonipa	;	nv_Adlm_AC_fonipa
+nbl_Adlm_AC_fonipa	;	nr_Adlm_AC_fonipa
+ncp_Adlm_AC_fonipa	;	kdz_Adlm_AC_fonipa
+nde_Adlm_AC_fonipa	;	nd_Adlm_AC_fonipa
+ndo_Adlm_AC_fonipa	;	ng_Adlm_AC_fonipa
+nep_Adlm_AC_fonipa	;	ne_Adlm_AC_fonipa
+nld_Adlm_AC_fonipa	;	nl_Adlm_AC_fonipa
+nno_Adlm_AC_fonipa	;	nn_Adlm_AC_fonipa
+nns_Adlm_AC_fonipa	;	nbr_Adlm_AC_fonipa
+nnx_Adlm_AC_fonipa	;	ngv_Adlm_AC_fonipa
+no_Adlm_AC_bokmal_fonipa	;	nb_Adlm_AC_fonipa
+no_Adlm_AC_bokmal_fonipa_nynorsk	;	nb_Adlm_AC_fonipa
+no_Adlm_AC_fonipa	;	nb_Adlm_AC_fonipa
+no_Adlm_AC_fonipa_nynorsk	;	nn_Adlm_AC_fonipa
+nob_Adlm_AC_fonipa	;	nb_Adlm_AC_fonipa
+nor_Adlm_AC_fonipa	;	nb_Adlm_AC_fonipa
+npi_Adlm_AC_fonipa	;	ne_Adlm_AC_fonipa
+nts_Adlm_AC_fonipa	;	pij_Adlm_AC_fonipa
+nya_Adlm_AC_fonipa	;	ny_Adlm_AC_fonipa
+oci_Adlm_AC_fonipa	;	oc_Adlm_AC_fonipa
+ojg_Adlm_AC_fonipa	;	oj_Adlm_AC_fonipa
+oji_Adlm_AC_fonipa	;	oj_Adlm_AC_fonipa
+ori_Adlm_AC_fonipa	;	or_Adlm_AC_fonipa
+orm_Adlm_AC_fonipa	;	om_Adlm_AC_fonipa
+ory_Adlm_AC_fonipa	;	or_Adlm_AC_fonipa
+oss_Adlm_AC_fonipa	;	os_Adlm_AC_fonipa
+oun_Adlm_AC_fonipa	;	vaj_Adlm_AC_fonipa
+pan_Adlm_AC_fonipa	;	pa_Adlm_AC_fonipa
+pbu_Adlm_AC_fonipa	;	ps_Adlm_AC_fonipa
+pcr_Adlm_AC_fonipa	;	adx_Adlm_AC_fonipa
+per_Adlm_AC_fonipa	;	fa_Adlm_AC_fonipa
+pes_Adlm_AC_fonipa	;	fa_Adlm_AC_fonipa
+pli_Adlm_AC_fonipa	;	pi_Adlm_AC_fonipa
+plt_Adlm_AC_fonipa	;	mg_Adlm_AC_fonipa
+pmc_Adlm_AC_fonipa	;	huw_Adlm_AC_fonipa
+pmu_Adlm_AC_fonipa	;	phr_Adlm_AC_fonipa
+pnb_Adlm_AC_fonipa	;	lah_Adlm_AC_fonipa
+pol_Adlm_AC_fonipa	;	pl_Adlm_AC_fonipa
+por_Adlm_AC_fonipa	;	pt_Adlm_AC_fonipa
+ppa_Adlm_AC_fonipa	;	bfy_Adlm_AC_fonipa
+ppr_Adlm_AC_fonipa	;	lcq_Adlm_AC_fonipa
+prs_Adlm_AC_fonipa	;	fa_Adlm_AC_fonipa
+pry_Adlm_AC_fonipa	;	prt_Adlm_AC_fonipa
+pus_Adlm_AC_fonipa	;	ps_Adlm_AC_fonipa
+puz_Adlm_AC_fonipa	;	pub_Adlm_AC_fonipa
+que_Adlm_AC_fonipa	;	qu_Adlm_AC_fonipa
+quz_Adlm_AC_fonipa	;	qu_Adlm_AC_fonipa
+rmy_Adlm_AC_fonipa	;	rom_Adlm_AC_fonipa
+roh_Adlm_AC_fonipa	;	rm_Adlm_AC_fonipa
+ron_Adlm_AC_fonipa	;	ro_Adlm_AC_fonipa
+rum_Adlm_AC_fonipa	;	ro_Adlm_AC_fonipa
+run_Adlm_AC_fonipa	;	rn_Adlm_AC_fonipa
+rus_Adlm_AC_fonipa	;	ru_Adlm_AC_fonipa
+sag_Adlm_AC_fonipa	;	sg_Adlm_AC_fonipa
+san_Adlm_AC_fonipa	;	sa_Adlm_AC_fonipa
+sca_Adlm_AC_fonipa	;	hle_Adlm_AC_fonipa
+scc_Adlm_AC_fonipa	;	sr_Adlm_AC_fonipa
+scr_Adlm_AC_fonipa	;	hr_Adlm_AC_fonipa
+sgn_Adlm_076_fonipa	;	bzs_Adlm_fonipa
+sgn_Adlm_170_fonipa	;	csn_Adlm_fonipa
+sgn_Adlm_208_fonipa	;	dsl_Adlm_fonipa
+sgn_Adlm_249_fonipa	;	fsl_Adlm_fonipa
+sgn_Adlm_250_fonipa	;	fsl_Adlm_fonipa
+sgn_Adlm_276_fonipa	;	gsg_Adlm_fonipa
+sgn_Adlm_278_fonipa	;	gsg_Adlm_fonipa
+sgn_Adlm_280_fonipa	;	gsg_Adlm_fonipa
+sgn_Adlm_300_fonipa	;	gss_Adlm_fonipa
+sgn_Adlm_372_fonipa	;	isg_Adlm_fonipa
+sgn_Adlm_380_fonipa	;	ise_Adlm_fonipa
+sgn_Adlm_392_fonipa	;	jsl_Adlm_fonipa
+sgn_Adlm_484_fonipa	;	mfs_Adlm_fonipa
+sgn_Adlm_528_fonipa	;	dse_Adlm_fonipa
+sgn_Adlm_558_fonipa	;	ncs_Adlm_fonipa
+sgn_Adlm_578_fonipa	;	nsi_Adlm_fonipa
+sgn_Adlm_620_fonipa	;	psr_Adlm_fonipa
+sgn_Adlm_710_fonipa	;	sfs_Adlm_fonipa
+sgn_Adlm_752_fonipa	;	swl_Adlm_fonipa
+sgn_Adlm_826_fonipa	;	bfi_Adlm_fonipa
+sgn_Adlm_840_fonipa	;	ase_Adlm_fonipa
+sgn_Adlm_BR_fonipa	;	bzs_Adlm_fonipa
+sgn_Adlm_CO_fonipa	;	csn_Adlm_fonipa
+sgn_Adlm_DD_fonipa	;	gsg_Adlm_fonipa
+sgn_Adlm_DE_fonipa	;	gsg_Adlm_fonipa
+sgn_Adlm_DK_fonipa	;	dsl_Adlm_fonipa
+sgn_Adlm_FR_fonipa	;	fsl_Adlm_fonipa
+sgn_Adlm_FX_fonipa	;	fsl_Adlm_fonipa
+sgn_Adlm_GB_fonipa	;	bfi_Adlm_fonipa
+sgn_Adlm_GR_fonipa	;	gss_Adlm_fonipa
+sgn_Adlm_IE_fonipa	;	isg_Adlm_fonipa
+sgn_Adlm_IT_fonipa	;	ise_Adlm_fonipa
+sgn_Adlm_JP_fonipa	;	jsl_Adlm_fonipa
+sgn_Adlm_MX_fonipa	;	mfs_Adlm_fonipa
+sgn_Adlm_NI_fonipa	;	ncs_Adlm_fonipa
+sgn_Adlm_NL_fonipa	;	dse_Adlm_fonipa
+sgn_Adlm_NO_fonipa	;	nsi_Adlm_fonipa
+sgn_Adlm_PT_fonipa	;	psr_Adlm_fonipa
+sgn_Adlm_SE_fonipa	;	swl_Adlm_fonipa
+sgn_Adlm_UK_fonipa	;	bfi_Adlm_fonipa
+sgn_Adlm_US_fonipa	;	ase_Adlm_fonipa
+sgn_Adlm_ZA_fonipa	;	sfs_Adlm_fonipa
+sh_Adlm_AC_fonipa	;	sr_Adlm_AC_fonipa
+sin_Adlm_AC_fonipa	;	si_Adlm_AC_fonipa
+skk_Adlm_AC_fonipa	;	oyb_Adlm_AC_fonipa
+slk_Adlm_AC_fonipa	;	sk_Adlm_AC_fonipa
+slo_Adlm_AC_fonipa	;	sk_Adlm_AC_fonipa
+slv_Adlm_AC_fonipa	;	sl_Adlm_AC_fonipa
+sme_Adlm_AC_fonipa	;	se_Adlm_AC_fonipa
+smo_Adlm_AC_fonipa	;	sm_Adlm_AC_fonipa
+sna_Adlm_AC_fonipa	;	sn_Adlm_AC_fonipa
+snd_Adlm_AC_fonipa	;	sd_Adlm_AC_fonipa
+som_Adlm_AC_fonipa	;	so_Adlm_AC_fonipa
+sot_Adlm_AC_fonipa	;	st_Adlm_AC_fonipa
+spa_Adlm_AC_fonipa	;	es_Adlm_AC_fonipa
+spy_Adlm_AC_fonipa	;	kln_Adlm_AC_fonipa
+sqi_Adlm_AC_fonipa	;	sq_Adlm_AC_fonipa
+src_Adlm_AC_fonipa	;	sc_Adlm_AC_fonipa
+srd_Adlm_AC_fonipa	;	sc_Adlm_AC_fonipa
+srp_Adlm_AC_fonipa	;	sr_Adlm_AC_fonipa
+ssw_Adlm_AC_fonipa	;	ss_Adlm_AC_fonipa
+sun_Adlm_AC_fonipa	;	su_Adlm_AC_fonipa
+swa_Adlm_AC_fonipa	;	sw_Adlm_AC_fonipa
+swc_Adlm_AC_fonipa	;	sw_Adlm_AC_fonipa
+swe_Adlm_AC_fonipa	;	sv_Adlm_AC_fonipa
+swh_Adlm_AC_fonipa	;	sw_Adlm_AC_fonipa
+tah_Adlm_AC_fonipa	;	ty_Adlm_AC_fonipa
+tam_Adlm_AC_fonipa	;	ta_Adlm_AC_fonipa
+tat_Adlm_AC_fonipa	;	tt_Adlm_AC_fonipa
+tdu_Adlm_AC_fonipa	;	dtp_Adlm_AC_fonipa
+tel_Adlm_AC_fonipa	;	te_Adlm_AC_fonipa
+tgk_Adlm_AC_fonipa	;	tg_Adlm_AC_fonipa
+tgl_Adlm_AC_fonipa	;	fil_Adlm_AC_fonipa
+tha_Adlm_AC_fonipa	;	th_Adlm_AC_fonipa
+thc_Adlm_AC_fonipa	;	tpo_Adlm_AC_fonipa
+thx_Adlm_AC_fonipa	;	oyb_Adlm_AC_fonipa
+tib_Adlm_AC_fonipa	;	bo_Adlm_AC_fonipa
+tie_Adlm_AC_fonipa	;	ras_Adlm_AC_fonipa
+tir_Adlm_AC_fonipa	;	ti_Adlm_AC_fonipa
+tkk_Adlm_AC_fonipa	;	twm_Adlm_AC_fonipa
+tl_Adlm_AC_fonipa	;	fil_Adlm_AC_fonipa
+tlw_Adlm_AC_fonipa	;	weo_Adlm_AC_fonipa
+tmp_Adlm_AC_fonipa	;	tyj_Adlm_AC_fonipa
+tne_Adlm_AC_fonipa	;	kak_Adlm_AC_fonipa
+tnf_Adlm_AC_fonipa	;	fa_Adlm_AC_fonipa
+ton_Adlm_AC_fonipa	;	to_Adlm_AC_fonipa
+tsf_Adlm_AC_fonipa	;	taj_Adlm_AC_fonipa
+tsn_Adlm_AC_fonipa	;	tn_Adlm_AC_fonipa
+tso_Adlm_AC_fonipa	;	ts_Adlm_AC_fonipa
+ttq_Adlm_AC_fonipa	;	tmh_Adlm_AC_fonipa
+tuk_Adlm_AC_fonipa	;	tk_Adlm_AC_fonipa
+tur_Adlm_AC_fonipa	;	tr_Adlm_AC_fonipa
+tw_Adlm_AC_fonipa	;	ak_Adlm_AC_fonipa
+twi_Adlm_AC_fonipa	;	ak_Adlm_AC_fonipa
+uig_Adlm_AC_fonipa	;	ug_Adlm_AC_fonipa
+ukr_Adlm_AC_fonipa	;	uk_Adlm_AC_fonipa
+umu_Adlm_AC_fonipa	;	del_Adlm_AC_fonipa
+uok_Adlm_AC_fonipa	;	ema_Adlm_AC_fonipa
+urd_Adlm_AC_fonipa	;	ur_Adlm_AC_fonipa
+uzb_Adlm_AC_fonipa	;	uz_Adlm_AC_fonipa
+uzn_Adlm_AC_fonipa	;	uz_Adlm_AC_fonipa
+ven_Adlm_AC_fonipa	;	ve_Adlm_AC_fonipa
+vie_Adlm_AC_fonipa	;	vi_Adlm_AC_fonipa
+vol_Adlm_AC_fonipa	;	vo_Adlm_AC_fonipa
+wel_Adlm_AC_fonipa	;	cy_Adlm_AC_fonipa
+wln_Adlm_AC_fonipa	;	wa_Adlm_AC_fonipa
+wol_Adlm_AC_fonipa	;	wo_Adlm_AC_fonipa
+xba_Adlm_AC_fonipa	;	cax_Adlm_AC_fonipa
+xho_Adlm_AC_fonipa	;	xh_Adlm_AC_fonipa
+xia_Adlm_AC_fonipa	;	acn_Adlm_AC_fonipa
+xkh_Adlm_AC_fonipa	;	waw_Adlm_AC_fonipa
+xpe_Adlm_AC_fonipa	;	kpe_Adlm_AC_fonipa
+xsj_Adlm_AC_fonipa	;	suj_Adlm_AC_fonipa
+xsl_Adlm_AC_fonipa	;	den_Adlm_AC_fonipa
+ybd_Adlm_AC_fonipa	;	rki_Adlm_AC_fonipa
+ydd_Adlm_AC_fonipa	;	yi_Adlm_AC_fonipa
+yid_Adlm_AC_fonipa	;	yi_Adlm_AC_fonipa
+yma_Adlm_AC_fonipa	;	lrr_Adlm_AC_fonipa
+ymt_Adlm_AC_fonipa	;	mtm_Adlm_AC_fonipa
+yor_Adlm_AC_fonipa	;	yo_Adlm_AC_fonipa
+yos_Adlm_AC_fonipa	;	zom_Adlm_AC_fonipa
+yuu_Adlm_AC_fonipa	;	yug_Adlm_AC_fonipa
+zai_Adlm_AC_fonipa	;	zap_Adlm_AC_fonipa
+zh_Adlm_AC_fonipa_guoyu	;	zh_Adlm_AC_fonipa
+zh_Adlm_AC_fonipa_guoyu_hakka_xiang	;	hak_Adlm_AC_fonipa
+zh_Adlm_AC_fonipa_hakka	;	hak_Adlm_AC_fonipa
+zh_Adlm_AC_fonipa_hakka_xiang	;	hak_Adlm_AC_fonipa
+zh_Adlm_AC_fonipa_xiang	;	hsn_Adlm_AC_fonipa
+zha_Adlm_AC_fonipa	;	za_Adlm_AC_fonipa
+zho_Adlm_AC_fonipa	;	zh_Adlm_AC_fonipa
+zho_Adlm_AC_fonipa_guoyu	;	zh_Adlm_AC_fonipa
+zho_Adlm_AC_fonipa_guoyu_hakka_xiang	;	hak_Adlm_AC_fonipa
+zho_Adlm_AC_fonipa_hakka	;	hak_Adlm_AC_fonipa
+zho_Adlm_AC_fonipa_hakka_xiang	;	hak_Adlm_AC_fonipa
+zho_Adlm_AC_fonipa_xiang	;	hsn_Adlm_AC_fonipa
+zsm_Adlm_AC_fonipa	;	ms_Adlm_AC_fonipa
+zul_Adlm_AC_fonipa	;	zu_Adlm_AC_fonipa
+zyb_Adlm_AC_fonipa	;	za_Adlm_AC_fonipa
diff --git a/icu4c/source/test/testdata/localeMatcherTest.txt b/icu4c/source/test/testdata/localeMatcherTest.txt
index 7a10986..6d21303 100644
--- a/icu4c/source/test/testdata/localeMatcherTest.txt
+++ b/icu4c/source/test/testdata/localeMatcherTest.txt
@@ -1,5 +1,5 @@
 # © 2017 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Data-driven test for the language/locale matcher.
 # Format:
@@ -279,7 +279,7 @@
 zh-Hant >> und-TW
 zh >> und-TW
 
-** test: testMatchGrandfatheredCode
+** test: testMatchLegacyCode
 
 @supported=fr, i-klingon, en-Latn-US
 en-GB-oed >> en-Latn-US
@@ -984,7 +984,7 @@
 x-piglatin >> x-bork
 x-bork >> x-bork
 
-** test: MatchGrandfatheredCode
+** test: MatchLegacyCode
 @supported=fr, i-klingon, en-Latn-US
 en-GB-oed >> en-Latn-US
 i-klingon >> tlh
@@ -1525,7 +1525,7 @@
 x-piglatin >> fr
 x-bork >> x-bork
 
-** test: grandfathered codes
+** test: legacy codes
 @supported=fr, i-klingon, en-Latn-US
 en-GB-oed >> en-Latn-US
 i-klingon >> tlh
diff --git a/icu4c/source/test/testdata/numberpermutationtest.txt b/icu4c/source/test/testdata/numberpermutationtest.txt
index 24136ad..9767baa 100644
--- a/icu4c/source/test/testdata/numberpermutationtest.txt
+++ b/icu4c/source/test/testdata/numberpermutationtest.txt
@@ -3,31 +3,31 @@
 
 compact-short percent unit-width-narrow
   es-MX
-    0 %
-    92 k
-    -0.22 %
+    0%
+    92 k%
+    -0.22%
   zh-TW
     0%
-    9.2萬
+    9.2萬%
     -0.22%
   bn-BD
     ০%
-    ৯২ হা
+    ৯২ হা%
     -০.২২%
 
 compact-short percent unit-width-full-name
   es-MX
-    0 %
-    92 k
-    -0.22 %
+    0 por ciento
+    92 k por ciento
+    -0.22 por ciento
   zh-TW
     0%
-    9.2萬
+    9.2萬%
     -0.22%
   bn-BD
-    ০%
-    ৯২ হা
-    -০.২২%
+    ০শতাংশ
+    ৯২ হাশতাংশ
+    -০.২২শতাংশ
 
 compact-short currency/EUR unit-width-narrow
   es-MX
@@ -73,9 +73,9 @@
 
 compact-short measure-unit/length-furlong unit-width-full-name
   es-MX
-    0 fur
-    92 k fur
-    -0.22 fur
+    0 furlongs
+    92 k furlongs
+    -0.22 furlongs
   zh-TW
     0 化朗
     9.2萬 化朗
@@ -101,17 +101,17 @@
 
 scientific/+ee/sign-always percent unit-width-full-name
   es-MX
-    0E+00 %
-    9.182736E+04 %
-    -2.2222E-01 %
+    0E+00 por ciento
+    9.182736E+04 por ciento
+    -2.2222E-01 por ciento
   zh-TW
     0E+00%
     9.182736E+04%
     -2.2222E-01%
   bn-BD
-    ০E+০০%
-    ৯.১৮২৭৩৬E+০৪%
-    -২.২২২২E-০১%
+    ০E+০০শতাংশ
+    ৯.১৮২৭৩৬E+০৪শতাংশ
+    -২.২২২২E-০১শতাংশ
 
 scientific/+ee/sign-always currency/EUR unit-width-narrow
   es-MX
@@ -157,9 +157,9 @@
 
 scientific/+ee/sign-always measure-unit/length-furlong unit-width-full-name
   es-MX
-    0E+00 fur
-    9.182736E+04 fur
-    -2.2222E-01 fur
+    0E+00 furlongs
+    9.182736E+04 furlongs
+    -2.2222E-01 furlongs
   zh-TW
     0E+00 化朗
     9.182736E+04 化朗
@@ -172,57 +172,57 @@
 compact-short percent precision-integer
   es-MX
     0 %
-    92 k
+    92 k %
     -0 %
   zh-TW
     0%
-    9萬
+    9萬%
     -0%
   bn-BD
     ০%
-    ৯২ হা
+    ৯২ হা%
     -০%
 
 compact-short percent .000
   es-MX
     0.000 %
-    91.827 k
+    91.827 k %
     -0.222 %
   zh-TW
     0.000%
-    9.183萬
+    9.183萬%
     -0.222%
   bn-BD
     ০.০০০%
-    ৯১.৮২৭ হা
+    ৯১.৮২৭ হা%
     -০.২২২%
 
 compact-short percent .##/@@@+
   es-MX
     0 %
-    91.83 k
+    91.83 k %
     -0.222 %
   zh-TW
     0%
-    9.18萬
+    9.18萬%
     -0.222%
   bn-BD
     ০%
-    ৯১.৮৩ হা
+    ৯১.৮৩ হা%
     -০.২২২%
 
 compact-short percent @@
   es-MX
     0.0 %
-    92 k
+    92 k %
     -0.22 %
   zh-TW
     0.0%
-    9.2萬
+    9.2萬%
     -0.22%
   bn-BD
     ০.০%
-    ৯২ হা
+    ৯২ হা%
     -০.২২%
 
 compact-short currency/EUR precision-integer
@@ -508,15 +508,15 @@
 compact-short percent rounding-mode-floor
   es-MX
     0 %
-    91 k
+    91 k %
     -0.23 %
   zh-TW
     0%
-    9.1萬
+    9.1萬%
     -0.23%
   bn-BD
     ০%
-    ৯১ হা
+    ৯১ হা%
     -০.২৩%
 
 compact-short currency/EUR rounding-mode-floor
@@ -592,15 +592,15 @@
 compact-short percent integer-width/##00
   es-MX
     00 %
-    92 k
+    92 k %
     -00.22 %
   zh-TW
     00%
-    09.2萬
+    09.2萬%
     -00.22%
   bn-BD
     ০০%
-    ৯২ হা
+    ৯২ হা%
     -০০.২২%
 
 compact-short currency/EUR integer-width/##00
@@ -676,15 +676,15 @@
 compact-short percent scale/0.5
   es-MX
     0 %
-    46 k
+    46 k %
     -0.11 %
   zh-TW
     0%
-    4.6萬
+    4.6萬%
     -0.11%
   bn-BD
     ০%
-    ৪৬ হা
+    ৪৬ হা%
     -০.১১%
 
 compact-short currency/EUR scale/0.5
@@ -760,15 +760,15 @@
 compact-short percent group-on-aligned
   es-MX
     0 %
-    92 k
+    92 k %
     -0.22 %
   zh-TW
     0%
-    9.2萬
+    9.2萬%
     -0.22%
   bn-BD
     ০%
-    ৯২ হা
+    ৯২ হা%
     -০.২২%
 
 compact-short currency/EUR group-on-aligned
@@ -844,15 +844,15 @@
 compact-short percent latin
   es-MX
     0 %
-    92 k
+    92 k %
     -0.22 %
   zh-TW
     0%
-    9.2萬
+    9.2萬%
     -0.22%
   bn-BD
     0%
-    92 হা
+    92 হা%
     -0.22%
 
 compact-short currency/EUR latin
@@ -928,15 +928,15 @@
 compact-short percent sign-accounting-except-zero
   es-MX
     0 %
-    +92 k
+    +92 k %
     -0.22 %
   zh-TW
     0%
-    +9.2萬
+    +9.2萬%
     -0.22%
   bn-BD
     ০%
-    +৯২ হা
+    +৯২ হা%
     -০.২২%
 
 compact-short currency/EUR sign-accounting-except-zero
@@ -1012,15 +1012,15 @@
 compact-short percent decimal-always
   es-MX
     0. %
-    92. k
+    92. k %
     -0.22 %
   zh-TW
     0.%
-    9.2萬
+    9.2萬%
     -0.22%
   bn-BD
     ০.%
-    ৯২. হা
+    ৯২. হা%
     -০.২২%
 
 compact-short currency/EUR decimal-always
@@ -3139,59 +3139,59 @@
 
 percent unit-width-full-name precision-integer
   es-MX
-    0 %
-    91,827 %
-    -0 %
+    0 por ciento
+    91,827 por ciento
+    -0 por ciento
   zh-TW
     0%
     91,827%
     -0%
   bn-BD
-    ০%
-    ৯১,৮২৭%
-    -০%
+    ০শতাংশ
+    ৯১,৮২৭শতাংশ
+    -০শতাংশ
 
 percent unit-width-full-name .000
   es-MX
-    0.000 %
-    91,827.364 %
-    -0.222 %
+    0.000 por ciento
+    91,827.364 por ciento
+    -0.222 por ciento
   zh-TW
     0.000%
     91,827.364%
     -0.222%
   bn-BD
-    ০.০০০%
-    ৯১,৮২৭.৩৬৪%
-    -০.২২২%
+    ০.০০০শতাংশ
+    ৯১,৮২৭.৩৬৪শতাংশ
+    -০.২২২শতাংশ
 
 percent unit-width-full-name .##/@@@+
   es-MX
-    0 %
-    91,827.36 %
-    -0.222 %
+    0 por ciento
+    91,827.36 por ciento
+    -0.222 por ciento
   zh-TW
     0%
     91,827.36%
     -0.222%
   bn-BD
-    ০%
-    ৯১,৮২৭.৩৬%
-    -০.২২২%
+    ০শতাংশ
+    ৯১,৮২৭.৩৬শতাংশ
+    -০.২২২শতাংশ
 
 percent unit-width-full-name @@
   es-MX
-    0.0 %
-    92,000 %
-    -0.22 %
+    0.0 por ciento
+    92,000 por ciento
+    -0.22 por ciento
   zh-TW
     0.0%
     92,000%
     -0.22%
   bn-BD
-    ০.০%
-    ৯২,০০০%
-    -০.২২%
+    ০.০শতাংশ
+    ৯২,০০০শতাংশ
+    -০.২২শতাংশ
 
 currency/EUR unit-width-narrow precision-integer
   es-MX
@@ -3363,9 +3363,9 @@
 
 measure-unit/length-furlong unit-width-full-name precision-integer
   es-MX
-    0 fur
-    91,827 fur
-    -0 fur
+    0 furlongs
+    91,827 furlongs
+    -0 furlongs
   zh-TW
     0 化朗
     91,827 化朗
@@ -3377,9 +3377,9 @@
 
 measure-unit/length-furlong unit-width-full-name .000
   es-MX
-    0.000 fur
-    91,827.364 fur
-    -0.222 fur
+    0.000 furlongs
+    91,827.364 furlongs
+    -0.222 furlongs
   zh-TW
     0.000 化朗
     91,827.364 化朗
@@ -3391,9 +3391,9 @@
 
 measure-unit/length-furlong unit-width-full-name .##/@@@+
   es-MX
-    0 fur
-    91,827.36 fur
-    -0.222 fur
+    0 furlongs
+    91,827.36 furlongs
+    -0.222 furlongs
   zh-TW
     0 化朗
     91,827.36 化朗
@@ -3405,9 +3405,9 @@
 
 measure-unit/length-furlong unit-width-full-name @@
   es-MX
-    0.0 fur
-    92,000 fur
-    -0.22 fur
+    0.0 furlongs
+    92,000 furlongs
+    -0.22 furlongs
   zh-TW
     0.0 化朗
     92,000 化朗
@@ -3433,17 +3433,17 @@
 
 percent unit-width-full-name rounding-mode-floor
   es-MX
-    0 %
-    91,827.3645 %
-    -0.22222 %
+    0 por ciento
+    91,827.3645 por ciento
+    -0.22222 por ciento
   zh-TW
     0%
     91,827.3645%
     -0.22222%
   bn-BD
-    ০%
-    ৯১,৮২৭.৩৬৪৫%
-    -০.২২২২২%
+    ০শতাংশ
+    ৯১,৮২৭.৩৬৪৫শতাংশ
+    -০.২২২২২শতাংশ
 
 currency/EUR unit-width-narrow rounding-mode-floor
   es-MX
@@ -3489,9 +3489,9 @@
 
 measure-unit/length-furlong unit-width-full-name rounding-mode-floor
   es-MX
-    0 fur
-    91,827.3645 fur
-    -0.22222 fur
+    0 furlongs
+    91,827.3645 furlongs
+    -0.22222 furlongs
   zh-TW
     0 化朗
     91,827.3645 化朗
@@ -3517,17 +3517,17 @@
 
 percent unit-width-full-name integer-width/##00
   es-MX
-    00 %
-    1827.3645 %
-    -00.22222 %
+    00 por ciento
+    1827.3645 por ciento
+    -00.22222 por ciento
   zh-TW
     00%
     1,827.3645%
     -00.22222%
   bn-BD
-    ০০%
-    ১,৮২৭.৩৬৪৫%
-    -০০.২২২২২%
+    ০০শতাংশ
+    ১,৮২৭.৩৬৪৫শতাংশ
+    -০০.২২২২২শতাংশ
 
 currency/EUR unit-width-narrow integer-width/##00
   es-MX
@@ -3573,9 +3573,9 @@
 
 measure-unit/length-furlong unit-width-full-name integer-width/##00
   es-MX
-    00 fur
-    1827.3645 fur
-    -00.22222 fur
+    00 furlongs
+    1827.3645 furlongs
+    -00.22222 furlongs
   zh-TW
     00 化朗
     1,827.3645 化朗
@@ -3601,17 +3601,17 @@
 
 percent unit-width-full-name scale/0.5
   es-MX
-    0 %
-    45,913.68225 %
-    -0.11111 %
+    0 por ciento
+    45,913.68225 por ciento
+    -0.11111 por ciento
   zh-TW
     0%
     45,913.68225%
     -0.11111%
   bn-BD
-    ০%
-    ৪৫,৯১৩.৬৮২২৫%
-    -০.১১১১১%
+    ০শতাংশ
+    ৪৫,৯১৩.৬৮২২৫শতাংশ
+    -০.১১১১১শতাংশ
 
 currency/EUR unit-width-narrow scale/0.5
   es-MX
@@ -3657,9 +3657,9 @@
 
 measure-unit/length-furlong unit-width-full-name scale/0.5
   es-MX
-    0 fur
-    45,913.68225 fur
-    -0.11111 fur
+    0 furlongs
+    45,913.68225 furlongs
+    -0.11111 furlongs
   zh-TW
     0 化朗
     45,913.68225 化朗
@@ -3685,17 +3685,17 @@
 
 percent unit-width-full-name group-on-aligned
   es-MX
-    0 %
-    91,827.3645 %
-    -0.22222 %
+    0 por ciento
+    91,827.3645 por ciento
+    -0.22222 por ciento
   zh-TW
     0%
     91,827.3645%
     -0.22222%
   bn-BD
-    ০%
-    ৯১,৮২৭.৩৬৪৫%
-    -০.২২২২২%
+    ০শতাংশ
+    ৯১,৮২৭.৩৬৪৫শতাংশ
+    -০.২২২২২শতাংশ
 
 currency/EUR unit-width-narrow group-on-aligned
   es-MX
@@ -3741,9 +3741,9 @@
 
 measure-unit/length-furlong unit-width-full-name group-on-aligned
   es-MX
-    0 fur
-    91,827.3645 fur
-    -0.22222 fur
+    0 furlongs
+    91,827.3645 furlongs
+    -0.22222 furlongs
   zh-TW
     0 化朗
     91,827.3645 化朗
@@ -3769,17 +3769,17 @@
 
 percent unit-width-full-name latin
   es-MX
-    0 %
-    91,827.3645 %
-    -0.22222 %
+    0 por ciento
+    91,827.3645 por ciento
+    -0.22222 por ciento
   zh-TW
     0%
     91,827.3645%
     -0.22222%
   bn-BD
-    0%
-    91,827.3645%
-    -0.22222%
+    0শতাংশ
+    91,827.3645শতাংশ
+    -0.22222শতাংশ
 
 currency/EUR unit-width-narrow latin
   es-MX
@@ -3825,9 +3825,9 @@
 
 measure-unit/length-furlong unit-width-full-name latin
   es-MX
-    0 fur
-    91,827.3645 fur
-    -0.22222 fur
+    0 furlongs
+    91,827.3645 furlongs
+    -0.22222 furlongs
   zh-TW
     0 化朗
     91,827.3645 化朗
@@ -3853,17 +3853,17 @@
 
 percent unit-width-full-name sign-accounting-except-zero
   es-MX
-    0 %
-    +91,827.3645 %
-    -0.22222 %
+    0 por ciento
+    +91,827.3645 por ciento
+    -0.22222 por ciento
   zh-TW
     0%
     +91,827.3645%
     -0.22222%
   bn-BD
-    ০%
-    +৯১,৮২৭.৩৬৪৫%
-    -০.২২২২২%
+    ০শতাংশ
+    +৯১,৮২৭.৩৬৪৫শতাংশ
+    -০.২২২২২শতাংশ
 
 currency/EUR unit-width-narrow sign-accounting-except-zero
   es-MX
@@ -3909,9 +3909,9 @@
 
 measure-unit/length-furlong unit-width-full-name sign-accounting-except-zero
   es-MX
-    0 fur
-    +91,827.3645 fur
-    -0.22222 fur
+    0 furlongs
+    +91,827.3645 furlongs
+    -0.22222 furlongs
   zh-TW
     0 化朗
     +91,827.3645 化朗
@@ -3937,17 +3937,17 @@
 
 percent unit-width-full-name decimal-always
   es-MX
-    0. %
-    91,827.3645 %
-    -0.22222 %
+    0. por ciento
+    91,827.3645 por ciento
+    -0.22222 por ciento
   zh-TW
     0.%
     91,827.3645%
     -0.22222%
   bn-BD
-    ০.%
-    ৯১,৮২৭.৩৬৪৫%
-    -০.২২২২২%
+    ০.শতাংশ
+    ৯১,৮২৭.৩৬৪৫শতাংশ
+    -০.২২২২২শতাংশ
 
 currency/EUR unit-width-narrow decimal-always
   es-MX
@@ -3993,9 +3993,9 @@
 
 measure-unit/length-furlong unit-width-full-name decimal-always
   es-MX
-    0. fur
-    91,827.3645 fur
-    -0.22222 fur
+    0. furlongs
+    91,827.3645 furlongs
+    -0.22222 furlongs
   zh-TW
     0. 化朗
     91,827.3645 化朗
diff --git a/icu4c/source/test/testdata/out/build/calendar.res b/icu4c/source/test/testdata/out/build/calendar.res
index 7c0a1aa..0d6c002 100644
--- a/icu4c/source/test/testdata/out/build/calendar.res
+++ b/icu4c/source/test/testdata/out/build/calendar.res
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/ibm9027.cnv b/icu4c/source/test/testdata/out/build/ibm9027.cnv
index 94def89..f1562a9 100644
--- a/icu4c/source/test/testdata/out/build/ibm9027.cnv
+++ b/icu4c/source/test/testdata/out/build/ibm9027.cnv
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/root.res b/icu4c/source/test/testdata/out/build/root.res
index cac81d4..2487891 100644
--- a/icu4c/source/test/testdata/out/build/root.res
+++ b/icu4c/source/test/testdata/out/build/root.res
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/structLocale.res b/icu4c/source/test/testdata/out/build/structLocale.res
index 77d2410..7fcecab 100644
--- a/icu4c/source/test/testdata/out/build/structLocale.res
+++ b/icu4c/source/test/testdata/out/build/structLocale.res
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/test1.cnv b/icu4c/source/test/testdata/out/build/test1.cnv
index bc53c98..a6ca3b0 100644
--- a/icu4c/source/test/testdata/out/build/test1.cnv
+++ b/icu4c/source/test/testdata/out/build/test1.cnv
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/test1bmp.cnv b/icu4c/source/test/testdata/out/build/test1bmp.cnv
index 3bef97e..eb08b4c 100644
--- a/icu4c/source/test/testdata/out/build/test1bmp.cnv
+++ b/icu4c/source/test/testdata/out/build/test1bmp.cnv
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/test2.cnv b/icu4c/source/test/testdata/out/build/test2.cnv
index d923f55..f73a853 100644
--- a/icu4c/source/test/testdata/out/build/test2.cnv
+++ b/icu4c/source/test/testdata/out/build/test2.cnv
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/test3.cnv b/icu4c/source/test/testdata/out/build/test3.cnv
index 8da1c69..2a3d842 100644
--- a/icu4c/source/test/testdata/out/build/test3.cnv
+++ b/icu4c/source/test/testdata/out/build/test3.cnv
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/test4.cnv b/icu4c/source/test/testdata/out/build/test4.cnv
index d9bf63d..b07a5a8 100644
--- a/icu4c/source/test/testdata/out/build/test4.cnv
+++ b/icu4c/source/test/testdata/out/build/test4.cnv
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/test4x.cnv b/icu4c/source/test/testdata/out/build/test4x.cnv
index 9b5521f..a28a63e 100644
--- a/icu4c/source/test/testdata/out/build/test4x.cnv
+++ b/icu4c/source/test/testdata/out/build/test4x.cnv
Binary files differ
diff --git a/icu4c/source/test/testdata/out/build/test5.cnv b/icu4c/source/test/testdata/out/build/test5.cnv
index 4b718b6..274c059 100644
--- a/icu4c/source/test/testdata/out/build/test5.cnv
+++ b/icu4c/source/test/testdata/out/build/test5.cnv
Binary files differ
diff --git a/icu4c/source/test/testdata/out/testdata.dat b/icu4c/source/test/testdata/out/testdata.dat
index 14ec4d6..6177a70 100644
--- a/icu4c/source/test/testdata/out/testdata.dat
+++ b/icu4c/source/test/testdata/out/testdata.dat
Binary files differ
diff --git a/icu4c/source/test/testdata/rbbitst.txt b/icu4c/source/test/testdata/rbbitst.txt
index 9962f94..3fae72c 100644
--- a/icu4c/source/test/testdata/rbbitst.txt
+++ b/icu4c/source/test/testdata/rbbitst.txt
@@ -32,7 +32,7 @@
 #   [ICU4C]   source/test/testdata/rbbitst.txt
 #   [ICU4J]   main/tests/core/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt
 #
-# ICU4C's copy is the master.  If any changes are made to ICU4J's copy, make sure they
+# ICU4C's copy is the primary one.  If any changes are made to ICU4J's copy, make sure they
 #  are merged back into ICU4C's copy of the file, lest they get overwritten later.
 # TODO:  figure out how to have a single copy of the file for use by both C and Java.
 
@@ -289,7 +289,7 @@
 # वृद्धिसँग ;
 <data>•वृ•द्धि•सँ•ग•</data>
 # अंतःज्ञानी  ;
-<data>•अं•तः•ज्ञा•नी••</data>
+<data>•अं•तः•ज्ञा•नी• •</data>
 # गन्नदी॑धिम ;
 <data>•ग•न्न•दी॑•धि•म•</data>
 # प्प्रप॑द्ये॒ ;
@@ -319,7 +319,7 @@
 # भर्तुर्भोगः ;
 <data>•भ•र्तु•र्भो•गः•</data>
 # शॆत्युल  ;
-<data>•शॆ•त्यु•ल••</data>
+<data>•शॆ•त्यु•ल• •</data>
 # महारॆन्य ;
 <data>•म•हा•रॆ•न्य•</data>
 # सॆक्युल ;
diff --git a/icu4c/source/test/testdata/root.txt b/icu4c/source/test/testdata/root.txt
index 23e07dd..ff0f517 100644
--- a/icu4c/source/test/testdata/root.txt
+++ b/icu4c/source/test/testdata/root.txt
@@ -13,8 +13,8 @@
 root
 {
     Version { 44.0 }
-    ExpectCLDRVersionAtLeast { 37.0 } // 'base' cldr version. Allow up to version =.=.* of this
-    CurrentCLDRVersion { 37.0 } // Current CLDR version as of the test update. Warn if not an exact match.
+    ExpectCLDRVersionAtLeast { 38.1 } // 'base' cldr version. Allow up to version =.=.* of this
+    CurrentCLDRVersion { 38.1 } // Current CLDR version as of the test update. Warn if not an exact match.
 
     ShortLanguage { xxx }
 
diff --git a/icu4c/source/test/testdata/structLocale.txt b/icu4c/source/test/testdata/structLocale.txt
index 55c1276..3cae998 100644
--- a/icu4c/source/test/testdata/structLocale.txt
+++ b/icu4c/source/test/testdata/structLocale.txt
@@ -6088,7 +6088,7 @@
     MeasurementSystem:int{0}
     MoreInformation{""}
     NumberElements{
-        arab{
+        adlm{
             miscPatterns{
                 approximately{""}
                 atLeast{""}
@@ -6105,6 +6105,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -6401,6 +6402,338 @@
                 }
             }
             symbols{
+                approximatelySign{""}
+                decimal{""}
+                exponential{""}
+                group{""}
+                infinity{""}
+                list{""}
+                minusSign{""}
+                nan{""}
+                perMille{""}
+                percentSign{""}
+                plusSign{""}
+                currencyDecimal{""}
+                currencyGroup{""}
+                superscriptingExponent{""}
+                timeSeparator{""}
+            }
+        }
+        arab{
+            miscPatterns{
+                approximately{""}
+                atLeast{""}
+                atMost{""}
+                range{""}
+            }
+            patterns{
+                accountingFormat{""}
+                currencyFormat{""}
+                decimalFormat{""}
+                percentFormat{""}
+                scientificFormat{""}
+            }
+            patternsLong{
+                decimalFormat{
+                    1000{
+                        1{""}
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    10000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    100000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    1000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    10000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    100000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    1000000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    10000000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    100000000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    1000000000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    10000000000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    100000000000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                }
+            }
+            patternsShort{
+                currencyFormat{
+                    1000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    10000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    100000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    1000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    10000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    100000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    1000000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    10000000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    100000000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    1000000000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    10000000000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    100000000000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                }
+                decimalFormat{
+                    1000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    10000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    100000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    1000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    10000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    100000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    1000000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    10000000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    100000000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    1000000000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    10000000000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                    100000000000000{
+                        zero{""}
+                        one{""}
+                        two{""}
+                        few{""}
+                        many{""}
+                        other{""}
+                    }
+                }
+            }
+            symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -6434,6 +6767,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -6730,6 +7064,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -6763,6 +7098,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -7059,6 +7395,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -7092,6 +7429,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -7388,6 +7726,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -7421,6 +7760,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -7717,6 +8057,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -7750,6 +8091,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -8046,6 +8388,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -8079,6 +8422,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -8375,6 +8719,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -8410,6 +8755,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -8706,6 +9052,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -8740,6 +9087,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -9036,6 +9384,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -9069,6 +9418,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -9365,6 +9715,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -9398,6 +9749,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -9694,6 +10046,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -9727,6 +10080,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -10023,6 +10377,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -10056,6 +10411,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -10352,6 +10708,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -10385,6 +10742,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -10681,6 +11039,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -10714,6 +11073,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -11010,6 +11370,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -11043,6 +11404,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -11339,6 +11701,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -11372,6 +11735,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -11668,6 +12032,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -11701,6 +12066,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -11997,6 +12363,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -12030,6 +12397,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -12326,6 +12694,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -12359,6 +12728,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -12655,6 +13025,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -12688,6 +13059,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -12984,6 +13356,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -13017,6 +13390,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -13313,6 +13687,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -13346,6 +13721,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -13642,6 +14018,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -13675,6 +14052,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -13971,6 +14349,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -14022,6 +14401,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -14318,6 +14698,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -14351,6 +14732,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -14647,6 +15029,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -14680,6 +15063,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -14976,6 +15360,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -15009,6 +15394,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -15305,6 +15691,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -15338,6 +15725,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -15634,6 +16022,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -15669,6 +16058,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -15965,6 +16355,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -15998,6 +16389,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -16294,6 +16686,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -16327,6 +16720,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -16623,6 +17017,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -16656,6 +17051,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -16952,6 +17348,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -16985,6 +17382,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -17281,6 +17679,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -17314,6 +17713,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -17610,6 +18010,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -17643,6 +18044,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -17939,6 +18341,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -17972,6 +18375,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -18268,6 +18672,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -18301,6 +18706,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -18597,6 +19003,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -18630,6 +19037,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -18926,6 +19334,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -18959,6 +19368,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -19255,6 +19665,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -19288,6 +19699,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -19584,6 +19996,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -19617,6 +20030,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -19913,6 +20327,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -19946,6 +20361,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -20242,6 +20658,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -20275,6 +20692,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -20571,6 +20989,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
@@ -20605,6 +21024,7 @@
             patternsLong{
                 decimalFormat{
                     1000{
+                        1{""}
                         zero{""}
                         one{""}
                         two{""}
@@ -20901,6 +21321,7 @@
                 }
             }
             symbols{
+                approximatelySign{""}
                 decimal{""}
                 exponential{""}
                 group{""}
diff --git a/icu4c/source/tools/ctestfw/Makefile.in b/icu4c/source/tools/ctestfw/Makefile.in
index 8b43d25..3af4f2e 100644
--- a/icu4c/source/tools/ctestfw/Makefile.in
+++ b/icu4c/source/tools/ctestfw/Makefile.in
@@ -50,7 +50,8 @@
 LDFLAGS += $(LDFLAGSCTESTFW)
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS)
 
-OBJECTS = ctest.o tstdtmod.o testdata.o datamap.o uperf.o ucln_ct.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(patsubst %.cpp,%.o,$(patsubst %.c,%.o, $(SOURCES)))
 
 STATIC_OBJECTS = $(OBJECTS:.o=.$(STATIC_O))
 
diff --git a/icu4c/source/tools/ctestfw/ctest.c b/icu4c/source/tools/ctestfw/ctest.c
index 7608c28..417573b 100644
--- a/icu4c/source/tools/ctestfw/ctest.c
+++ b/icu4c/source/tools/ctestfw/ctest.c
@@ -734,9 +734,9 @@
                                      &firstForTicket, &firstForWhere);
 
     if(firstForTicket || firstForWhere) {
-      log_info("(Known issue #%s) %s\n", ticket, buf);
+      log_info("(Known issue %s) %s\n", ticket, buf);
     } else {
-      log_verbose("(Known issue #%s) %s\n", ticket, buf);
+      log_verbose("(Known issue %s) %s\n", ticket, buf);
     }
 
     return TRUE;
diff --git a/icu4c/source/tools/ctestfw/ctestfw.vcxproj b/icu4c/source/tools/ctestfw/ctestfw.vcxproj
index db71ae9..744d773 100644
--- a/icu4c/source/tools/ctestfw/ctestfw.vcxproj
+++ b/icu4c/source/tools/ctestfw/ctestfw.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
@@ -69,7 +53,7 @@
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\..\$(IcuBinOutputDir)\icutest67d.exe</OutputFile>
+      <OutputFile>..\..\..\$(IcuBinOutputDir)\icutest68d.exe</OutputFile>
       <ProgramDatabaseFile>.\..\..\..\$(IcuLibOutputDir)\icutestd.pdb</ProgramDatabaseFile>
       <ImportLibrary>.\..\..\..\$(IcuLibOutputDir)\icutestd.lib</ImportLibrary>
       <AdditionalDependencies>icuucd.lib;icutud.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -82,7 +66,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\..\$(IcuBinOutputDir)\icutest67.exe</OutputFile>
+      <OutputFile>..\..\..\$(IcuBinOutputDir)\icutest68.exe</OutputFile>
       <ProgramDatabaseFile>.\..\..\..\$(IcuLibOutputDir)\icutest.pdb</ProgramDatabaseFile>
       <ImportLibrary>.\..\..\..\$(IcuLibOutputDir)\icutest.lib</ImportLibrary>
       <AdditionalDependencies>icuuc.lib;icutu.lib;%(AdditionalDependencies)</AdditionalDependencies>
diff --git a/icu4c/source/tools/ctestfw/sources.txt b/icu4c/source/tools/ctestfw/sources.txt
new file mode 100644
index 0000000..30103db
--- /dev/null
+++ b/icu4c/source/tools/ctestfw/sources.txt
@@ -0,0 +1,6 @@
+ctest.c
+datamap.cpp
+testdata.cpp
+tstdtmod.cpp
+ucln_ct.c
+uperf.cpp
diff --git a/icu4c/source/tools/ctestfw/unicode/ctest.h b/icu4c/source/tools/ctestfw/unicode/ctest.h
index 5a5e42e..0a47738 100644
--- a/icu4c/source/tools/ctestfw/unicode/ctest.h
+++ b/icu4c/source/tools/ctestfw/unicode/ctest.h
@@ -228,7 +228,7 @@
 
 /**
  * Log a known issue.
- * @param ticket ticket number such as "12345" for ICU tickets or "cldrbug:6636" for CLDR tickets.
+ * @param ticket ticket number such as "ICU-12345" for ICU tickets or "CLDR-6636" for CLDR tickets.
  * @param fmt ...  sprintf-style format, optional message. can be NULL.
  * @return TRUE if known issue test should be skipped, FALSE if it should be run
  */
diff --git a/icu4c/source/tools/ctestfw/unicode/testtype.h b/icu4c/source/tools/ctestfw/unicode/testtype.h
index 7849a6d..0a0228e 100644
--- a/icu4c/source/tools/ctestfw/unicode/testtype.h
+++ b/icu4c/source/tools/ctestfw/unicode/testtype.h
@@ -39,3 +39,9 @@
     #define T_CTEST_EXPORT_API T_CTEST_IMPORT
 #endif
 
+#ifndef TRUE
+#   define TRUE  1
+#endif
+#ifndef FALSE
+#   define FALSE 0
+#endif
diff --git a/icu4c/source/tools/ctestfw/unicode/utimer.h b/icu4c/source/tools/ctestfw/unicode/utimer.h
index 51b7f26..7b0d753 100644
--- a/icu4c/source/tools/ctestfw/unicode/utimer.h
+++ b/icu4c/source/tools/ctestfw/unicode/utimer.h
@@ -207,7 +207,7 @@
         return (t2-t1);
     }
 static    UBool uprv_compareFrequency(UTimer* /*timer1*/, UTimer* /*timer2*/){
-        return TRUE;
+        return true;
     }
 
 #endif
diff --git a/icu4c/source/tools/genbrk/Makefile.in b/icu4c/source/tools/genbrk/Makefile.in
index cb7fcd8..bcb684e 100644
--- a/icu4c/source/tools/genbrk/Makefile.in
+++ b/icu4c/source/tools/genbrk/Makefile.in
@@ -31,7 +31,8 @@
 CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = genbrk.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/genbrk/genbrk.cpp b/icu4c/source/tools/genbrk/genbrk.cpp
index 38df3ee..cc0133b 100644
--- a/icu4c/source/tools/genbrk/genbrk.cpp
+++ b/icu4c/source/tools/genbrk/genbrk.cpp
@@ -282,7 +282,7 @@
     //
     //  Put the source rules into a UnicodeString
     //
-    UnicodeString ruleSourceS(FALSE, ruleSourceU, destCap);
+    UnicodeString ruleSourceS(false, ruleSourceU, destCap);
 
     //
     //  Create the break iterator from the rules
diff --git a/icu4c/source/tools/genbrk/genbrk.vcxproj b/icu4c/source/tools/genbrk/genbrk.vcxproj
index dff44bc..44cb00e 100644
--- a/icu4c/source/tools/genbrk/genbrk.vcxproj
+++ b/icu4c/source/tools/genbrk/genbrk.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/tools/genbrk/sources.txt b/icu4c/source/tools/genbrk/sources.txt
new file mode 100644
index 0000000..a750aeb
--- /dev/null
+++ b/icu4c/source/tools/genbrk/sources.txt
@@ -0,0 +1 @@
+genbrk.cpp
diff --git a/icu4c/source/tools/genccode/Makefile.in b/icu4c/source/tools/genccode/Makefile.in
index 948fd00..6a1bab5 100644
--- a/icu4c/source/tools/genccode/Makefile.in
+++ b/icu4c/source/tools/genccode/Makefile.in
@@ -32,7 +32,8 @@
 CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = genccode.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.c=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/genccode/genccode.vcxproj b/icu4c/source/tools/genccode/genccode.vcxproj
index f319514..aad028f 100644
--- a/icu4c/source/tools/genccode/genccode.vcxproj
+++ b/icu4c/source/tools/genccode/genccode.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/tools/genccode/sources.txt b/icu4c/source/tools/genccode/sources.txt
new file mode 100644
index 0000000..d5eb025
--- /dev/null
+++ b/icu4c/source/tools/genccode/sources.txt
@@ -0,0 +1 @@
+genccode.c
diff --git a/icu4c/source/tools/gencfu/Makefile.in b/icu4c/source/tools/gencfu/Makefile.in
index 0563141..6cd8e41 100644
--- a/icu4c/source/tools/gencfu/Makefile.in
+++ b/icu4c/source/tools/gencfu/Makefile.in
@@ -31,7 +31,8 @@
 CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = gencfu.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/gencfu/gencfu.cpp b/icu4c/source/tools/gencfu/gencfu.cpp
index 9bc62bd..541b78e 100644
--- a/icu4c/source/tools/gencfu/gencfu.cpp
+++ b/icu4c/source/tools/gencfu/gencfu.cpp
@@ -179,9 +179,9 @@
         copyright = U_COPYRIGHT_STRING;
     }
 
-    UBool quiet = FALSE;
+    UBool quiet = false;
     if (options[9].doesOccur) {
-      quiet = TRUE;
+      quiet = true;
     }
 
 #if UCONFIG_NO_REGULAR_EXPRESSIONS || UCONFIG_NO_NORMALIZATION || UCONFIG_NO_FILE_IO
diff --git a/icu4c/source/tools/gencfu/gencfu.vcxproj b/icu4c/source/tools/gencfu/gencfu.vcxproj
index 0627f02..4018d50 100644
--- a/icu4c/source/tools/gencfu/gencfu.vcxproj
+++ b/icu4c/source/tools/gencfu/gencfu.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/tools/gencfu/sources.txt b/icu4c/source/tools/gencfu/sources.txt
new file mode 100644
index 0000000..e5a05f8
--- /dev/null
+++ b/icu4c/source/tools/gencfu/sources.txt
@@ -0,0 +1 @@
+gencfu.cpp
diff --git a/icu4c/source/tools/gencmn/Makefile.in b/icu4c/source/tools/gencmn/Makefile.in
index dd33fcd..bb7fc4e 100644
--- a/icu4c/source/tools/gencmn/Makefile.in
+++ b/icu4c/source/tools/gencmn/Makefile.in
@@ -32,7 +32,8 @@
 CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = gencmn.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.c=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/gencmn/gencmn.vcxproj b/icu4c/source/tools/gencmn/gencmn.vcxproj
index dffc419..94c18b6 100644
--- a/icu4c/source/tools/gencmn/gencmn.vcxproj
+++ b/icu4c/source/tools/gencmn/gencmn.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/tools/gencmn/sources.txt b/icu4c/source/tools/gencmn/sources.txt
new file mode 100644
index 0000000..6ffa777
--- /dev/null
+++ b/icu4c/source/tools/gencmn/sources.txt
@@ -0,0 +1 @@
+gencmn.c
diff --git a/icu4c/source/tools/gencnval/Makefile.in b/icu4c/source/tools/gencnval/Makefile.in
index 4e0ab25..b808b0f 100644
--- a/icu4c/source/tools/gencnval/Makefile.in
+++ b/icu4c/source/tools/gencnval/Makefile.in
@@ -32,7 +32,8 @@
 CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = gencnval.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.c=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/gencnval/gencnval.c b/icu4c/source/tools/gencnval/gencnval.c
index 82cf65d..83b5863 100644
--- a/icu4c/source/tools/gencnval/gencnval.c
+++ b/icu4c/source/tools/gencnval/gencnval.c
@@ -32,6 +32,7 @@
 #include "cstring.h"
 #include "uinvchar.h"
 #include "filestrm.h"
+#include "toolutil.h"
 #include "unicode/uclean.h"
 #include "unewdata.h"
 #include "uoptions.h"
diff --git a/icu4c/source/tools/gencnval/gencnval.vcxproj b/icu4c/source/tools/gencnval/gencnval.vcxproj
index 57b5f95..8e3b7ba 100644
--- a/icu4c/source/tools/gencnval/gencnval.vcxproj
+++ b/icu4c/source/tools/gencnval/gencnval.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/tools/gencnval/sources.txt b/icu4c/source/tools/gencnval/sources.txt
new file mode 100644
index 0000000..9206d40
--- /dev/null
+++ b/icu4c/source/tools/gencnval/sources.txt
@@ -0,0 +1 @@
+gencnval.c
diff --git a/icu4c/source/tools/gendict/Makefile.in b/icu4c/source/tools/gendict/Makefile.in
index 03eb07e..d2cdb1c 100644
--- a/icu4c/source/tools/gendict/Makefile.in
+++ b/icu4c/source/tools/gendict/Makefile.in
@@ -31,7 +31,8 @@
 CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = gendict.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/gendict/gendict.vcxproj b/icu4c/source/tools/gendict/gendict.vcxproj
index 4f36956..42c1ba7 100644
--- a/icu4c/source/tools/gendict/gendict.vcxproj
+++ b/icu4c/source/tools/gendict/gendict.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/tools/gendict/sources.txt b/icu4c/source/tools/gendict/sources.txt
new file mode 100644
index 0000000..6647c5c
--- /dev/null
+++ b/icu4c/source/tools/gendict/sources.txt
@@ -0,0 +1 @@
+gendict.cpp
diff --git a/icu4c/source/tools/gennorm2/Makefile.in b/icu4c/source/tools/gennorm2/Makefile.in
index afc3f9b..84f5830 100644
--- a/icu4c/source/tools/gennorm2/Makefile.in
+++ b/icu4c/source/tools/gennorm2/Makefile.in
@@ -27,7 +27,8 @@
 CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = gennorm2.o n2builder.o extradata.o norms.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/gennorm2/gennorm2.cpp b/icu4c/source/tools/gennorm2/gennorm2.cpp
index bce5336..723e912 100644
--- a/icu4c/source/tools/gennorm2/gennorm2.cpp
+++ b/icu4c/source/tools/gennorm2/gennorm2.cpp
@@ -104,7 +104,7 @@
             "Reads the infiles with normalization data and\n"
             "creates a binary file, or a C source file (--csource), with the data,\n"
             "or writes a data file with the combined data (--combined).\n"
-            "See http://userguide.icu-project.org/transforms/normalization#TOC-Data-File-Syntax\n"
+            "See https://unicode-org.github.io/icu/userguide/transforms/normalization#data-file-syntax\n"
             "\n"
             "Alternate usage: %s [-options] a.txt b.txt minus p.txt q.txt -o outputfilename\n"
             "\n"
diff --git a/icu4c/source/tools/gennorm2/sources.txt b/icu4c/source/tools/gennorm2/sources.txt
new file mode 100644
index 0000000..76452d2
--- /dev/null
+++ b/icu4c/source/tools/gennorm2/sources.txt
@@ -0,0 +1,4 @@
+extradata.cpp
+gennorm2.cpp
+n2builder.cpp
+norms.cpp
diff --git a/icu4c/source/tools/genrb/Makefile.in b/icu4c/source/tools/genrb/Makefile.in
index 5e75725..336d839 100644
--- a/icu4c/source/tools/genrb/Makefile.in
+++ b/icu4c/source/tools/genrb/Makefile.in
@@ -37,9 +37,10 @@
 CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT=explicit -DUNISTR_FROM_STRING_EXPLICIT=explicit
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = errmsg.o genrb.o parse.o read.o reslist.o ustr.o rbutil.o \
-wrtjava.o rle.o wrtxml.o prscmnts.o filterrb.o
-DERB_OBJ = derb.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(patsubst %.cpp,%.o,$(patsubst %.c,%.o, $(SOURCES)))
+DERB_SOURCES = derb.cpp
+DERB_OBJ = $(DERB_SOURCES:.cpp=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 DERB_DEPS = $(DERB_OBJ:.o=.d)
diff --git a/icu4c/source/tools/genrb/derb.vcxproj b/icu4c/source/tools/genrb/derb.vcxproj
index 43edf4c..f5ba9bf 100644
--- a/icu4c/source/tools/genrb/derb.vcxproj
+++ b/icu4c/source/tools/genrb/derb.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/tools/genrb/errmsg.c b/icu4c/source/tools/genrb/errmsg.c
index 603f26a..91dfd32 100644
--- a/icu4c/source/tools/genrb/errmsg.c
+++ b/icu4c/source/tools/genrb/errmsg.c
@@ -21,6 +21,7 @@
 #include <stdio.h>
 #include "cstring.h"
 #include "errmsg.h"
+#include "toolutil.h"
 
 U_CFUNC void error(uint32_t linenumber, const char *msg, ...)
 {
diff --git a/icu4c/source/tools/genrb/genrb.vcxproj b/icu4c/source/tools/genrb/genrb.vcxproj
index 166ce73..66651c1 100644
--- a/icu4c/source/tools/genrb/genrb.vcxproj
+++ b/icu4c/source/tools/genrb/genrb.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/tools/genrb/read.c b/icu4c/source/tools/genrb/read.c
index 9135da2..7314f6b 100644
--- a/icu4c/source/tools/genrb/read.c
+++ b/icu4c/source/tools/genrb/read.c
@@ -20,6 +20,7 @@
 
 #include "read.h"
 #include "errmsg.h"
+#include "toolutil.h"
 #include "unicode/ustring.h"
 #include "unicode/utf16.h"
 
diff --git a/icu4c/source/tools/genrb/reslist.cpp b/icu4c/source/tools/genrb/reslist.cpp
index 3186c78..4bc6adc 100644
--- a/icu4c/source/tools/genrb/reslist.cpp
+++ b/icu4c/source/tools/genrb/reslist.cpp
@@ -39,6 +39,7 @@
 #include "unicode/putil.h"
 #include "errmsg.h"
 #include "filterrb.h"
+#include "toolutil.h"
 
 #include "uarrsort.h"
 #include "uelement.h"
diff --git a/icu4c/source/tools/genrb/reslist.h b/icu4c/source/tools/genrb/reslist.h
index 07874fd..77140b2 100644
--- a/icu4c/source/tools/genrb/reslist.h
+++ b/icu4c/source/tools/genrb/reslist.h
@@ -355,7 +355,7 @@
               fNumCopies(0), fNumUnitsSaved(0), fNumCharsForLength(numCharsForLength) {
         // v3 pool string encoded as string-v2 with low offset
         fRes = URES_MAKE_RESOURCE(URES_STRING_V2, poolStringIndex);
-        fWritten = TRUE;
+        fWritten = true;
     }
     virtual ~StringResource();
 
diff --git a/icu4c/source/tools/genrb/rle.c b/icu4c/source/tools/genrb/rle.c
index 279684a..f737c45 100644
--- a/icu4c/source/tools/genrb/rle.c
+++ b/icu4c/source/tools/genrb/rle.c
@@ -16,6 +16,7 @@
 *   01/11/02    Ram        Creation.
 *******************************************************************************
 */
+#include <stdbool.h>
 #include "rle.h"
 /**
  * The ESCAPE character is used during run-length encoding.  It signals
@@ -297,7 +298,7 @@
 rleStringToByteArray(uint16_t* src, int32_t srcLen, uint8_t* target, int32_t tgtLen, UErrorCode* status) {
 
     int32_t length = 0;
-    UBool nextChar = TRUE;
+    UBool nextChar = true;
     uint16_t c = 0;
     int32_t node = 0;
     int32_t runLength = 0;
@@ -334,11 +335,11 @@
         if (nextChar) {
             c = src[i++];
             b = (uint8_t) (c >> 8);
-            nextChar = FALSE;
+            nextChar = false;
         }
         else {
             b = (uint8_t) (c & 0xFF);
-            nextChar = TRUE;
+            nextChar = true;
         }
 
        /* This part of the loop is a tiny state machine which handles
diff --git a/icu4c/source/tools/genrb/sources.txt b/icu4c/source/tools/genrb/sources.txt
new file mode 100644
index 0000000..0128e20
--- /dev/null
+++ b/icu4c/source/tools/genrb/sources.txt
@@ -0,0 +1,12 @@
+errmsg.c
+filterrb.cpp
+genrb.cpp
+parse.cpp
+prscmnts.cpp
+rbutil.c
+read.c
+reslist.cpp
+rle.c
+ustr.c
+wrtjava.cpp
+wrtxml.cpp
diff --git a/icu4c/source/tools/gensprep/Makefile.in b/icu4c/source/tools/gensprep/Makefile.in
index 3ed8cd1..7f475ae 100644
--- a/icu4c/source/tools/gensprep/Makefile.in
+++ b/icu4c/source/tools/gensprep/Makefile.in
@@ -32,7 +32,8 @@
 CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = gensprep.o store.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.c=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/gensprep/gensprep.c b/icu4c/source/tools/gensprep/gensprep.c
index a78a5f3..ec931c8 100644
--- a/icu4c/source/tools/gensprep/gensprep.c
+++ b/icu4c/source/tools/gensprep/gensprep.c
@@ -28,6 +28,7 @@
 
 #include "cmemory.h"
 #include "cstring.h"
+#include "toolutil.h"
 #include "unewdata.h"
 #include "uoptions.h"
 #include "uparse.h"
diff --git a/icu4c/source/tools/gensprep/gensprep.vcxproj b/icu4c/source/tools/gensprep/gensprep.vcxproj
index c771a41..c6f7bbd 100644
--- a/icu4c/source/tools/gensprep/gensprep.vcxproj
+++ b/icu4c/source/tools/gensprep/gensprep.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/tools/gensprep/sources.txt b/icu4c/source/tools/gensprep/sources.txt
new file mode 100644
index 0000000..c369456
--- /dev/null
+++ b/icu4c/source/tools/gensprep/sources.txt
@@ -0,0 +1,2 @@
+gensprep.c
+store.c
diff --git a/icu4c/source/tools/gensprep/store.c b/icu4c/source/tools/gensprep/store.c
index 4b00d1b..b526e59 100644
--- a/icu4c/source/tools/gensprep/store.c
+++ b/icu4c/source/tools/gensprep/store.c
@@ -23,6 +23,7 @@
 #include "cmemory.h"
 #include "cstring.h"
 #include "filestrm.h"
+#include "toolutil.h"
 #include "unicode/udata.h"
 #include "unicode/utf16.h"
 #include "utrie.h"
@@ -34,76 +35,76 @@
 #define DO_DEBUG_OUT 0
 
 
-/* 
+/*
  * StringPrep profile file format ------------------------------------
- * 
+ *
  * The file format prepared and written here contains a 16-bit trie and a mapping table.
- * 
+ *
  * Before the data contents described below, there are the headers required by
  * the udata API for loading ICU data. Especially, a UDataInfo structure
  * precedes the actual data. It contains platform properties values and the
  * file format version.
- * 
+ *
  * The following is a description of format version 2.
- * 
+ *
  * Data contents:
- * 
+ *
  * The contents is a parsed, binary form of RFC3454 and possibly
  * NormalizationCorrections.txt depending on the options specified on the profile.
- * 
+ *
  * Any Unicode code point from 0 to 0x10ffff can be looked up to get
  * the trie-word, if any, for that code point. This means that the input
  * to the lookup are 21-bit unsigned integers, with not all of the
  * 21-bit range used.
- * 
+ *
  * *.spp files customarily begin with a UDataInfo structure, see udata.h and .c.
  * After that there are the following structures:
  *
  * int32_t indexes[_SPREP_INDEX_TOP];           -- _SPREP_INDEX_TOP=16, see enum in sprpimpl.h file
  *
  * UTrie stringPrepTrie;                        -- size in bytes=indexes[_SPREP_INDEX_TRIE_SIZE]
- * 
- * uint16_t mappingTable[];                     -- Contains the sequecence of code units that the code point maps to 
+ *
+ * uint16_t mappingTable[];                     -- Contains the sequecence of code units that the code point maps to
  *                                                 size in bytes = indexes[_SPREP_INDEX_MAPPING_DATA_SIZE]
  *
  * The indexes array contains the following values:
  *  indexes[_SPREP_INDEX_TRIE_SIZE]                  -- The size of the StringPrep trie in bytes
- *  indexes[_SPREP_INDEX_MAPPING_DATA_SIZE]          -- The size of the mappingTable in bytes 
- *  indexes[_SPREP_NORM_CORRECTNS_LAST_UNI_VERSION]  -- The index of Unicode version of last entry in NormalizationCorrections.txt 
- *  indexes[_SPREP_ONE_UCHAR_MAPPING_INDEX_START]    -- The starting index of 1 UChar  mapping index in the mapping table 
+ *  indexes[_SPREP_INDEX_MAPPING_DATA_SIZE]          -- The size of the mappingTable in bytes
+ *  indexes[_SPREP_NORM_CORRECTNS_LAST_UNI_VERSION]  -- The index of Unicode version of last entry in NormalizationCorrections.txt
+ *  indexes[_SPREP_ONE_UCHAR_MAPPING_INDEX_START]    -- The starting index of 1 UChar  mapping index in the mapping table
  *  indexes[_SPREP_TWO_UCHARS_MAPPING_INDEX_START]   -- The starting index of 2 UChars mapping index in the mapping table
  *  indexes[_SPREP_THREE_UCHARS_MAPPING_INDEX_START] -- The starting index of 3 UChars mapping index in the mapping table
  *  indexes[_SPREP_FOUR_UCHARS_MAPPING_INDEX_START]  -- The starting index of 4 UChars mapping index in the mapping table
  *  indexes[_SPREP_OPTIONS]                          -- Bit set of options to turn on in the profile, e.g: USPREP_NORMALIZATION_ON, USPREP_CHECK_BIDI_ON
- *    
+ *
  *
  * StringPrep Trie :
  *
- * The StringPrep tries is a 16-bit trie that contains data for the profile. 
+ * The StringPrep tries is a 16-bit trie that contains data for the profile.
  * Each code point is associated with a value (trie-word) in the trie.
  *
  * - structure of data words from the trie
- * 
- *  i)  A value greater than or equal to _SPREP_TYPE_THRESHOLD (0xFFF0) 
+ *
+ *  i)  A value greater than or equal to _SPREP_TYPE_THRESHOLD (0xFFF0)
  *      represents the type associated with the code point
  *      if(trieWord >= _SPREP_TYPE_THRESHOLD){
  *          type = trieWord - 0xFFF0;
  *      }
  *      The type can be :
- *             USPREP_UNASSIGNED                     
- *             USPREP_PROHIBITED       
- *             USPREP_DELETE     
- *     
+ *             USPREP_UNASSIGNED
+ *             USPREP_PROHIBITED
+ *             USPREP_DELETE
+ *
  *  ii) A value less than _SPREP_TYPE_THRESHOLD means the type is USPREP_MAP and
  *      contains distribution described below
- *      
+ *
  *      0       -  ON : The code point is prohibited (USPREP_PROHIBITED). This is to allow for codepoint that are both prohibited and mapped.
  *      1       -  ON : The value in the next 14 bits is an index into the mapping table
  *                 OFF: The value in the next 14 bits is an delta value from the code point
- *      2..15   -  Contains data as described by bit 1. If all bits are set 
+ *      2..15   -  Contains data as described by bit 1. If all bits are set
  *                 (value = _SPREP_MAX_INDEX_VALUE) then the type is USPREP_DELETE
  *
- *  
+ *
  * Mapping Table:
  * The data in mapping table is sorted according to the length of the mapping sequence.
  * If the type of the code point is USPREP_MAP and value in trie word is an index, the index
@@ -120,10 +121,10 @@
  *                        index < indexes[_SPREP_FOUR_UCHARS_MAPPING_INDEX_START]){
  *                   length = 3;
  *               }else{
- *                   // The first position in the mapping table contains the length 
+ *                   // The first position in the mapping table contains the length
  *                   // of the sequence
  *                   length = mappingTable[index++];
- *        
+ *
  *               }
  *
  */
@@ -192,7 +193,7 @@
 #define MAX_DATA_LENGTH 11500
 
 
-#define SPREP_DELTA_RANGE_POSITIVE_LIMIT              8191 
+#define SPREP_DELTA_RANGE_POSITIVE_LIMIT              8191
 #define SPREP_DELTA_RANGE_NEGATIVE_LIMIT              -8192
 
 
@@ -235,8 +236,8 @@
 }
 
 
-static void 
-storeMappingData(){
+static void
+storeMappingData(void){
 
     int32_t pos = UHASH_FIRST;
     const UHashElement* element = NULL;
@@ -260,10 +261,10 @@
     while(writtenElementCount < elementCount){
 
         while( (element = uhash_nextElement(hashTable, &pos))!=NULL){
-            
+
             codepoint = element->key.integer;
             value = (ValueStruct*)element->value.pointer;
-            
+
             /* store the start of indexes */
             if(oldMappingLength != mappingLength){
                 /* Assume that index[] is used according to the enums defined */
@@ -272,9 +273,9 @@
                 }
                 if(oldMappingLength <= _SPREP_MAX_INDEX_TOP_LENGTH &&
                    mappingLength == _SPREP_MAX_INDEX_TOP_LENGTH +1){
-                   
+
                     limitIndex = currentIndex;
-                     
+
                 }
                 oldMappingLength = mappingLength;
             }
@@ -284,7 +285,7 @@
                 trieWord = currentIndex << 2;
                 /* turn on the 2nd bit to signal that the following bits contain an index */
                 trieWord += 0x02;
-            
+
                 if(trieWord > _SPREP_TYPE_THRESHOLD){
                     fprintf(stderr,"trieWord cannot contain value greater than 0x%04X.\n",_SPREP_TYPE_THRESHOLD);
                     exit(U_ILLEGAL_CHAR_FOUND);
@@ -296,19 +297,19 @@
                         /* turn on the first bit in trie word */
                         trieWord += 0x01;
                     }else{
-                        /* 
+                        /*
                          * the codepoint has value something other than prohibited
-                         * and a mapping .. error! 
+                         * and a mapping .. error!
                          */
                         fprintf(stderr,"Type for codepoint \\U%08X already set!.\n", (int)codepoint);
-                        exit(U_ILLEGAL_ARGUMENT_ERROR); 
-                    } 
-                } 
-                
+                        exit(U_ILLEGAL_ARGUMENT_ERROR);
+                    }
+                }
+
                 /* now set the value in the trie */
                 if(!utrie_set32(sprepTrie,codepoint,trieWord)){
                     fprintf(stderr,"Could not set the value for code point.\n");
-                    exit(U_ILLEGAL_ARGUMENT_ERROR);   
+                    exit(U_ILLEGAL_ARGUMENT_ERROR);
                 }
 
                 /* written the trie word for the codepoint... increment the count*/
@@ -316,7 +317,7 @@
 
                 /* sanity check are we exceeding the max number allowed */
                 if(currentIndex+value->length+1 > _SPREP_MAX_INDEX_VALUE){
-                    fprintf(stderr, "Too many entries in the mapping table %i. Maximum allowed is %i\n", 
+                    fprintf(stderr, "Too many entries in the mapping table %i. Maximum allowed is %i\n",
                         currentIndex+value->length, _SPREP_MAX_INDEX_VALUE);
                     exit(U_INDEX_OUTOFBOUNDS_ERROR);
                 }
@@ -346,7 +347,7 @@
     }else{
         indexes[_SPREP_FOUR_UCHARS_MAPPING_INDEX_START] = limitIndex;
     }
-    
+
 }
 
 extern void setOptions(int32_t options){
@@ -355,8 +356,8 @@
 extern void
 storeMapping(uint32_t codepoint, uint32_t* mapping,int32_t length,
              UStringPrepType type, UErrorCode* status){
-    
- 
+
+
     UChar* map = NULL;
     int16_t adjustedLen=0, i, j;
     uint16_t trieWord = 0;
@@ -368,7 +369,7 @@
         hashTable = uhash_open(hashEntry, compareEntries, NULL, status);
         uhash_setValueDeleter(hashTable, valueDeleter);
     }
-    
+
     /* figure out if the code point has type already stored */
     savedTrieWord= utrie_get32(sprepTrie,codepoint,NULL);
     if(savedTrieWord!=0){
@@ -376,16 +377,16 @@
             /* turn on the first bit in trie word */
             trieWord += 0x01;
         }else{
-            /* 
+            /*
              * the codepoint has value something other than prohibited
-             * and a mapping .. error! 
+             * and a mapping .. error!
              */
             fprintf(stderr,"Type for codepoint \\U%08X already set!.\n", (int)codepoint);
-            exit(U_ILLEGAL_ARGUMENT_ERROR); 
-        } 
+            exit(U_ILLEGAL_ARGUMENT_ERROR);
+        }
     }
 
-    /* figure out the real length */ 
+    /* figure out the real length */
     for(i=0; i<length; i++){
         adjustedLen += U16_LENGTH(mapping[i]);
     }
@@ -393,11 +394,11 @@
     if(adjustedLen == 0){
         trieWord = (uint16_t)(_SPREP_MAX_INDEX_VALUE << 2);
         /* make sure that the value of trieWord is less than the threshold */
-        if(trieWord < _SPREP_TYPE_THRESHOLD){   
+        if(trieWord < _SPREP_TYPE_THRESHOLD){
             /* now set the value in the trie */
             if(!utrie_set32(sprepTrie,codepoint,trieWord)){
                 fprintf(stderr,"Could not set the value for code point.\n");
-                exit(U_ILLEGAL_ARGUMENT_ERROR);   
+                exit(U_ILLEGAL_ARGUMENT_ERROR);
             }
             /* value is set so just return */
             return;
@@ -422,28 +423,28 @@
                 exit(U_INTERNAL_PROGRAM_ERROR);
             }
             /* make sure that the value of trieWord is less than the threshold */
-            if(trieWord < _SPREP_TYPE_THRESHOLD){   
+            if(trieWord < _SPREP_TYPE_THRESHOLD){
                 /* now set the value in the trie */
                 if(!utrie_set32(sprepTrie,codepoint,trieWord)){
                     fprintf(stderr,"Could not set the value for code point.\n");
-                    exit(U_ILLEGAL_ARGUMENT_ERROR);   
+                    exit(U_ILLEGAL_ARGUMENT_ERROR);
                 }
                 /* value is set so just return */
                 return;
             }
         }
-        /* 
+        /*
          * if the delta is not in the given range or if the trieWord is larger than the threshold
          * just fall through for storing the mapping in the mapping table
          */
     }
 
     map = (UChar*) uprv_calloc(adjustedLen + 1, U_SIZEOF_UCHAR);
-    
+
     for (i=0, j=0; i<length; i++) {
         U16_APPEND_UNSAFE(map, j, mapping[i]);
     }
-    
+
     value = (ValueStruct*) uprv_malloc(sizeof(ValueStruct));
     value->mapping = map;
     value->type    = type;
@@ -478,9 +479,9 @@
         uint32_t savedTrieWord = utrie_get32(sprepTrie, start, NULL);
         if(savedTrieWord>0){
             if(savedTrieWord < _SPREP_TYPE_THRESHOLD && type == USPREP_PROHIBITED){
-                /* 
-                 * A mapping is stored in the trie word 
-                 * and the only other possible type that a 
+                /*
+                 * A mapping is stored in the trie word
+                 * and the only other possible type that a
                  * code point can have is USPREP_PROHIBITED
                  *
                  */
@@ -492,11 +493,11 @@
                 trieWord = (uint16_t)savedTrieWord;
 
                 /* make sure that the value of trieWord is less than the threshold */
-                if(trieWord < _SPREP_TYPE_THRESHOLD){   
+                if(trieWord < _SPREP_TYPE_THRESHOLD){
                     /* now set the value in the trie */
                     if(!utrie_set32(sprepTrie,start,trieWord)){
                         fprintf(stderr,"Could not set the value for code point.\n");
-                        exit(U_ILLEGAL_ARGUMENT_ERROR);   
+                        exit(U_ILLEGAL_ARGUMENT_ERROR);
                     }
                     /* value is set so just return */
                     return;
@@ -504,7 +505,7 @@
                     fprintf(stderr,"trieWord cannot contain value greater than threshold 0x%04X.\n",_SPREP_TYPE_THRESHOLD);
                     exit(U_ILLEGAL_CHAR_FOUND);
                 }
- 
+
             }else if(savedTrieWord != trieWord){
                 fprintf(stderr,"Value for codepoint \\U%08X already set!.\n", (int)start);
                 exit(U_ILLEGAL_ARGUMENT_ERROR);
@@ -513,12 +514,12 @@
         }
         if(!utrie_set32(sprepTrie,start,trieWord)){
             fprintf(stderr,"Could not set the value for code point \\U%08X.\n", (int)start);
-            exit(U_ILLEGAL_ARGUMENT_ERROR);   
+            exit(U_ILLEGAL_ARGUMENT_ERROR);
         }
     }else{
         if(!utrie_setRange32(sprepTrie, start, end+1, trieWord, FALSE)){
             fprintf(stderr,"Value for certain codepoint already set.\n");
-            exit(U_ILLEGAL_CHAR_FOUND);   
+            exit(U_ILLEGAL_CHAR_FOUND);
         }
     }
 
@@ -567,13 +568,13 @@
 
     /* sort and add mapping data */
     storeMappingData();
-    
+
     sprepTrieSize=utrie_serialize(sprepTrie, sprepTrieBlock, sizeof(sprepTrieBlock), getFoldedValue, TRUE, &errorCode);
     if(U_FAILURE(errorCode)) {
         fprintf(stderr, "error: utrie_serialize(sprep trie) failed, %s\n", u_errorName(errorCode));
         exit(errorCode);
     }
-    
+
     size = sprepTrieSize + mappingDataCapacity*U_SIZEOF_UCHAR + sizeof(indexes);
     if(beVerbose) {
         printf("size of sprep trie              %5u bytes\n", (int)sprepTrieSize);
@@ -599,11 +600,11 @@
 
     indexes[_SPREP_INDEX_TRIE_SIZE]=sprepTrieSize;
     indexes[_SPREP_INDEX_MAPPING_DATA_SIZE]=mappingDataCapacity*U_SIZEOF_UCHAR;
-    
+
     udata_writeBlock(pData, indexes, sizeof(indexes));
     udata_writeBlock(pData, sprepTrieBlock, sprepTrieSize);
     udata_writeBlock(pData, mappingData, indexes[_SPREP_INDEX_MAPPING_DATA_SIZE]);
-    
+
 
 #endif
 
diff --git a/icu4c/source/tools/gentest/Makefile.in b/icu4c/source/tools/gentest/Makefile.in
index 5f6d9e8..4aba2b6 100644
--- a/icu4c/source/tools/gentest/Makefile.in
+++ b/icu4c/source/tools/gentest/Makefile.in
@@ -26,7 +26,8 @@
 CPPFLAGS+= -I$(top_srcdir)/i18n
 LIBS = $(LIBCTESTFW) $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = gentest.o genres32.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.c=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/gentest/gentest.vcxproj b/icu4c/source/tools/gentest/gentest.vcxproj
index 2c6c768..79155c1 100644
--- a/icu4c/source/tools/gentest/gentest.vcxproj
+++ b/icu4c/source/tools/gentest/gentest.vcxproj
@@ -15,22 +15,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/tools/gentest/sources.txt b/icu4c/source/tools/gentest/sources.txt
new file mode 100644
index 0000000..b681084
--- /dev/null
+++ b/icu4c/source/tools/gentest/sources.txt
@@ -0,0 +1,2 @@
+genres32.c
+gentest.c
diff --git a/icu4c/source/tools/icu-file-utf8-check.py b/icu4c/source/tools/icu-file-utf8-check.py
deleted file mode 100755
index 86de259..0000000
--- a/icu4c/source/tools/icu-file-utf8-check.py
+++ /dev/null
@@ -1,106 +0,0 @@
-#! /usr/bin/python -B
-
-# Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html
-
-# Copyright (C) 2009-2011, International Business Machines Corporation, Google and Others.
-# All rights reserved.
-
-#
-#  Script to check that ICU source files contain only valid UTF-8 encoded text,
-#  and that all files except '.txt' files do not contain a Byte Order Mark (BOM).
-#
-#  THIS SCRIPT DOES NOT WORK ON WINDOWS
-#     It only works correctly on platforms where the native line ending is a plain \n
-#
-#  usage:
-#     icu-file-utf8-check.py  [options]
-#
-#  options:
-#     -h | --help    Print a usage line and exit.
-#
-#  The tool operates recursively on the directory from which it is run.
-#  Only files from the ICU github repository are checked.
-#  No changes are made to the repository; only the working copy will be altered.
-
-from __future__ import print_function
-
-import sys
-import os
-import os.path
-import re
-import getopt
-
-
-def runCommand(cmd):
-    output_file = os.popen(cmd);
-    output_text = output_file.read();
-    exit_status = output_file.close();
-    if exit_status:
-        print('"', cmd, '" failed.  Exiting.', file=sys.stderr)
-        sys.exit(exit_status)
-    return output_text
-
-
-def usage():
-    print("usage: " + sys.argv[0] + " [-h | --help]")
-
-    
-#
-#  File check.         Check source code files for UTF-8 and all except text files for not containing a BOM
-#    file_name:        name of a text file.
-#    is_source:        Flag, set to True if file is a source code file (.c, .cpp, .h, .java).
-#
-def check_file(file_name, is_source):
-    f = open(file_name, 'rb')
-    bytes = f.read()
-    f.close()
-
-    if is_source:
-        try:
-            bytes.decode("UTF-8")
-        except UnicodeDecodeError:
-            print("Error: %s is a source code file but contains non-utf-8 bytes." % file_name)
-    
-    if bytes[0] == 0xef:
-        if not (file_name.endswith(".txt") or file_name.endswith(".sln")
-                    or file_name.endswith(".targets")
-                    or ".vcxproj" in file_name):
-            print("Warning: file %s contains a UTF-8 BOM: " % file_name)
-
-    return
-
-def main(argv):
-    try:
-        opts, args = getopt.getopt(argv, "h", ("help"))
-    except getopt.GetoptError:
-        print("unrecognized option: " + argv[0])
-        usage()
-        sys.exit(2)
-    for opt, arg in opts:
-        if opt in ("-h", "--help"):
-            usage()
-            sys.exit()
-    if args:
-        print("unexpected command line argument")
-        usage()
-        sys.exit()
-
-    output = runCommand("git ls-files ");
-    file_list = output.splitlines()
-
-    source_file_re = re.compile(".*((?:\\.c$)|(?:\\.cpp$)|(?:\\.h$)|(?:\\.java$))")
-    
-    for f in file_list:
-        if os.path.isdir(f):
-            print("Skipping dir " + f)
-            continue
-        if not os.path.isfile(f):
-            print("Repository file not in working copy: " + f)
-            continue;
-
-        source_file = source_file_re.match(f)
-        check_file(f, source_file)
-
-if __name__ == "__main__":
-    main(sys.argv[1:])
diff --git a/icu4c/source/tools/icuinfo/Makefile.in b/icu4c/source/tools/icuinfo/Makefile.in
index ddbb2ee..68eeb08 100644
--- a/icu4c/source/tools/icuinfo/Makefile.in
+++ b/icu4c/source/tools/icuinfo/Makefile.in
@@ -26,8 +26,10 @@
 CPPFLAGS+= -I$(top_srcdir)/i18n
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = icuinfo.o
-@PLUGINS_TRUE@PLUGIN_OBJECTS = testplug.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
+@PLUGINS_TRUE@PLUGIN_SOURCES = $(shell cat $(srcdir)/plugin_sources.txt)
+@PLUGINS_TRUE@PLUGIN_OBJECTS = $(@PLUGINS_TRUE@PLUGIN_SOURCES:.c=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/icuinfo/icuinfo.vcxproj b/icu4c/source/tools/icuinfo/icuinfo.vcxproj
index 78ac7fa..ac8bfa8 100644
--- a/icu4c/source/tools/icuinfo/icuinfo.vcxproj
+++ b/icu4c/source/tools/icuinfo/icuinfo.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/tools/icuinfo/plugin_sources.txt b/icu4c/source/tools/icuinfo/plugin_sources.txt
new file mode 100644
index 0000000..7d5e663
--- /dev/null
+++ b/icu4c/source/tools/icuinfo/plugin_sources.txt
@@ -0,0 +1 @@
+testplug.c
diff --git a/icu4c/source/tools/icuinfo/sources.txt b/icu4c/source/tools/icuinfo/sources.txt
new file mode 100644
index 0000000..67b9aa2
--- /dev/null
+++ b/icu4c/source/tools/icuinfo/sources.txt
@@ -0,0 +1 @@
+icuinfo.cpp
diff --git a/icu4c/source/tools/icuinfo/testplug.vcxproj b/icu4c/source/tools/icuinfo/testplug.vcxproj
index ca81f1a..dac99be 100644
--- a/icu4c/source/tools/icuinfo/testplug.vcxproj
+++ b/icu4c/source/tools/icuinfo/testplug.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/tools/icupkg/Makefile.in b/icu4c/source/tools/icupkg/Makefile.in
index 6a5a773..45f0b33 100644
--- a/icu4c/source/tools/icupkg/Makefile.in
+++ b/icu4c/source/tools/icupkg/Makefile.in
@@ -31,7 +31,8 @@
 CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = icupkg.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/icupkg/icupkg.cpp b/icu4c/source/tools/icupkg/icupkg.cpp
index ea7be4a..3970794 100644
--- a/icu4c/source/tools/icupkg/icupkg.cpp
+++ b/icu4c/source/tools/icupkg/icupkg.cpp
@@ -59,6 +59,7 @@
             "%csage: %s [-h|-?|--help ] [-tl|-tb|-te] [-c] [-C comment]\n"
             "\t[-a list] [-r list] [-x list] [-l [-o outputListFileName]]\n"
             "\t[-s path] [-d path] [-w] [-m mode]\n"
+            "\t[--ignore-deps]\n"
             "\t[--auto_toc_prefix] [--auto_toc_prefix_with_type] [--toc_prefix]\n"
             "\tinfilename [outfilename]\n",
             isHelp ? 'U' : 'u', pname);
@@ -121,6 +122,10 @@
             "\t        noslash: the '*' wildcard does not match the '/' tree separator\n");
         fprintf(where,
             "\n"
+            "\t--ignore-deps     Do not fail if not all resource dependencies are met. Use this\n"
+            "\t                  option if the missing resources come from another source.");
+        fprintf(where,
+            "\n"
             "\tIn the .dat package, the Table of Contents (ToC) contains an entry\n"
             "\tfor each item of the form prefix/tree/itemname .\n"
             "\tThe prefix normally matches the package basename, and icupkg checks that,\n"
@@ -198,6 +203,8 @@
 
     UOPTION_DEF("matchmode", 'm', UOPT_REQUIRES_ARG),
 
+    UOPTION_DEF("ignore-deps", '\1', UOPT_NO_ARG),
+
     UOPTION_DEF("add", 'a', UOPT_REQUIRES_ARG),
     UOPTION_DEF("remove", 'r', UOPT_REQUIRES_ARG),
     UOPTION_DEF("extract", 'x', UOPT_REQUIRES_ARG),
@@ -225,6 +232,8 @@
 
     OPT_MATCHMODE,
 
+    OPT_IGNORE_DEPS,
+
     OPT_ADD_LIST,
     OPT_REMOVE_LIST,
     OPT_EXTRACT_LIST,
@@ -501,7 +510,7 @@
     }
 
     /* check dependencies between items */
-    if(!pkg->checkDependencies()) {
+    if(!options[OPT_IGNORE_DEPS].doesOccur && !pkg->checkDependencies()) {
         /* some dependencies are not fulfilled */
         return U_MISSING_RESOURCE_ERROR;
     }
diff --git a/icu4c/source/tools/icupkg/icupkg.vcxproj b/icu4c/source/tools/icupkg/icupkg.vcxproj
index 1af31e0..7b9cf58 100644
--- a/icu4c/source/tools/icupkg/icupkg.vcxproj
+++ b/icu4c/source/tools/icupkg/icupkg.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/tools/icupkg/sources.txt b/icu4c/source/tools/icupkg/sources.txt
new file mode 100644
index 0000000..b4406e6
--- /dev/null
+++ b/icu4c/source/tools/icupkg/sources.txt
@@ -0,0 +1 @@
+icupkg.cpp
diff --git a/icu4c/source/tools/icuswap/Makefile.in b/icu4c/source/tools/icuswap/Makefile.in
index f2f7978..18b04e8 100644
--- a/icu4c/source/tools/icuswap/Makefile.in
+++ b/icu4c/source/tools/icuswap/Makefile.in
@@ -31,7 +31,8 @@
 CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = icuswap.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/icuswap/icuswap.vcxproj b/icu4c/source/tools/icuswap/icuswap.vcxproj
index 78e2947..3c60511 100644
--- a/icu4c/source/tools/icuswap/icuswap.vcxproj
+++ b/icu4c/source/tools/icuswap/icuswap.vcxproj
@@ -46,22 +46,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
diff --git a/icu4c/source/tools/icuswap/sources.txt b/icu4c/source/tools/icuswap/sources.txt
new file mode 100644
index 0000000..6e73ffb
--- /dev/null
+++ b/icu4c/source/tools/icuswap/sources.txt
@@ -0,0 +1 @@
+icuswap.cpp
diff --git a/icu4c/source/tools/makeconv/Makefile.in b/icu4c/source/tools/makeconv/Makefile.in
index 6447283..061d54c 100644
--- a/icu4c/source/tools/makeconv/Makefile.in
+++ b/icu4c/source/tools/makeconv/Makefile.in
@@ -31,7 +31,8 @@
 CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = makeconv.o ucnvstat.o genmbcs.o gencnvex.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(patsubst %.cpp,%.o,$(patsubst %.c,%.o, $(SOURCES)))
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/makeconv/genmbcs.cpp b/icu4c/source/tools/makeconv/genmbcs.cpp
index 79f185f..488af47 100644
--- a/icu4c/source/tools/makeconv/genmbcs.cpp
+++ b/icu4c/source/tools/makeconv/genmbcs.cpp
@@ -26,6 +26,7 @@
 #include "ucm.h"
 #include "makeconv.h"
 #include "genmbcs.h"
+#include "toolutil.h"
 
 /*
  * TODO: Split this file into toUnicode, SBCSFromUnicode and MBCSFromUnicode files.
diff --git a/icu4c/source/tools/makeconv/makeconv.vcxproj b/icu4c/source/tools/makeconv/makeconv.vcxproj
index 73c94a7..1ec8ec7 100644
--- a/icu4c/source/tools/makeconv/makeconv.vcxproj
+++ b/icu4c/source/tools/makeconv/makeconv.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/tools/makeconv/sources.txt b/icu4c/source/tools/makeconv/sources.txt
new file mode 100644
index 0000000..4283ea9
--- /dev/null
+++ b/icu4c/source/tools/makeconv/sources.txt
@@ -0,0 +1,4 @@
+gencnvex.c
+genmbcs.cpp
+makeconv.cpp
+ucnvstat.c
diff --git a/icu4c/source/tools/makeconv/ucnvstat.c b/icu4c/source/tools/makeconv/ucnvstat.c
index c04a025..05d8bff 100644
--- a/icu4c/source/tools/makeconv/ucnvstat.c
+++ b/icu4c/source/tools/makeconv/ucnvstat.c
@@ -15,6 +15,7 @@
 
 #include "unicode/utypes.h"
 #include "unicode/ucnv.h"
+#include "toolutil.h"
 #include "ucnv_bld.h"
 
 
diff --git a/icu4c/source/tools/pkgdata/Makefile.in b/icu4c/source/tools/pkgdata/Makefile.in
index 13e1289..4777998 100644
--- a/icu4c/source/tools/pkgdata/Makefile.in
+++ b/icu4c/source/tools/pkgdata/Makefile.in
@@ -36,7 +36,8 @@
 DEFS += -DUDATA_SO_SUFFIX=\".$(SO)\" -DSTATIC_O=\"$(STATIC_O)\"
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = pkgdata.o pkgtypes.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(patsubst %.cpp,%.o,$(patsubst %.c,%.o, $(SOURCES)))
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/pkgdata/pkgdata.vcxproj b/icu4c/source/tools/pkgdata/pkgdata.vcxproj
index f2efdbd..0975456 100644
--- a/icu4c/source/tools/pkgdata/pkgdata.vcxproj
+++ b/icu4c/source/tools/pkgdata/pkgdata.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
diff --git a/icu4c/source/tools/pkgdata/pkgtypes.c b/icu4c/source/tools/pkgdata/pkgtypes.c
index 43ee3df..26bd945 100644
--- a/icu4c/source/tools/pkgdata/pkgtypes.c
+++ b/icu4c/source/tools/pkgdata/pkgtypes.c
@@ -17,6 +17,7 @@
 *  common types for pkgdata
 */
 
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include "unicode/utypes.h"
@@ -294,9 +295,9 @@
 {
   for(;l;l=l->next){
     if(!uprv_strcmp(l->str, str)) {
-      return TRUE;
+      return true;
     }
   }
 
-  return FALSE;
+  return false;
 }
diff --git a/icu4c/source/tools/pkgdata/sources.txt b/icu4c/source/tools/pkgdata/sources.txt
new file mode 100644
index 0000000..8a5b202
--- /dev/null
+++ b/icu4c/source/tools/pkgdata/sources.txt
@@ -0,0 +1,2 @@
+pkgdata.cpp
+pkgtypes.c
diff --git a/icu4c/source/tools/toolutil/Makefile.in b/icu4c/source/tools/toolutil/Makefile.in
index 0a6dc7d..c9fd89b 100644
--- a/icu4c/source/tools/toolutil/Makefile.in
+++ b/icu4c/source/tools/toolutil/Makefile.in
@@ -55,12 +55,8 @@
 LDFLAGS += $(LDFLAGSICUTOOLUTIL)
 LIBS = $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS)
 
-OBJECTS = filestrm.o package.o pkgitems.o swapimpl.o toolutil.o unewdata.o \
-collationinfo.o denseranges.o \
-ucm.o ucmstate.o uoptions.o uparse.o \
-ucbuf.o xmlparser.o writesrc.o \
-pkg_icu.o pkg_genc.o pkg_gencmn.o ppucd.o flagparser.o filetools.o \
-udbgutil.o dbgutil.o ucln_tu.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 STATIC_OBJECTS = $(OBJECTS:.o=.$(STATIC_O))
 
diff --git a/icu4c/source/tools/toolutil/dbgutil.cpp b/icu4c/source/tools/toolutil/dbgutil.cpp
index a5a3f51..399ec6d 100644
--- a/icu4c/source/tools/toolutil/dbgutil.cpp
+++ b/icu4c/source/tools/toolutil/dbgutil.cpp
@@ -29,7 +29,7 @@
     if(str == NULL) {
         return fillin.remove();
     } else {
-        return fillin = UnicodeString(str, ""); // optimize?
+        return fillin = UnicodeString(str, -1, US_INV);
     }
 }
 
diff --git a/icu4c/source/tools/toolutil/filetools.h b/icu4c/source/tools/toolutil/filetools.h
index 6a25c36..40a606a 100644
--- a/icu4c/source/tools/toolutil/filetools.h
+++ b/icu4c/source/tools/toolutil/filetools.h
@@ -26,7 +26,7 @@
 #include "unicode/utypes.h"
 
 U_CAPI UBool U_EXPORT2
-isFileModTimeLater(const char *filePath, const char *checkAgainst, UBool isDir=FALSE);
+isFileModTimeLater(const char *filePath, const char *checkAgainst, UBool isDir=false);
 
 U_CAPI void U_EXPORT2
 swapFileSepChar(char *filePath, const char oldFileSepChar, const char newFileSepChar);
diff --git a/icu4c/source/tools/toolutil/package.h b/icu4c/source/tools/toolutil/package.h
index 2c5bd16..ea60c13 100644
--- a/icu4c/source/tools/toolutil/package.h
+++ b/icu4c/source/tools/toolutil/package.h
@@ -57,13 +57,13 @@
      * Uses the prefix of the first entry of the package in readPackage(),
      * rather than the package basename.
      */
-    void setAutoPrefix() { doAutoPrefix=TRUE; }
+    void setAutoPrefix() { doAutoPrefix=true; }
     /**
      * Same as setAutoPrefix(), plus the prefix must end with the platform type letter.
      */
     void setAutoPrefixWithType() {
-        doAutoPrefix=TRUE;
-        prefixEndsWithType=TRUE;
+        doAutoPrefix=true;
+        prefixEndsWithType=true;
     }
     void setPrefix(const char *p);
 
@@ -128,7 +128,7 @@
     const Item *getItem(int32_t idx) const;
 
     /*
-     * Check dependencies and return TRUE if all dependencies are fulfilled.
+     * Check dependencies and return true if all dependencies are fulfilled.
      */
     UBool checkDependencies();
 
diff --git a/icu4c/source/tools/toolutil/pkg_genc.cpp b/icu4c/source/tools/toolutil/pkg_genc.cpp
index 8251128..17347ba 100644
--- a/icu4c/source/tools/toolutil/pkg_genc.cpp
+++ b/icu4c/source/tools/toolutil/pkg_genc.cpp
@@ -738,8 +738,8 @@
         exit(U_ILLEGAL_ARGUMENT_ERROR);
     }
 
-    uprv_strcpy(outFilename, outFilenameBuilder.data());
-    uprv_strcpy(entryName, entryNameBuilder.data());
+    outFilenameBuilder.extract(outFilename, outFilenameCapacity, status);
+    entryNameBuilder.extract(entryName, entryNameCapacity, status);
 }
 
 #ifdef CAN_GENERATE_OBJECTS
diff --git a/icu4c/source/tools/toolutil/pkg_genc.h b/icu4c/source/tools/toolutil/pkg_genc.h
index b231aa6..72d9687 100644
--- a/icu4c/source/tools/toolutil/pkg_genc.h
+++ b/icu4c/source/tools/toolutil/pkg_genc.h
@@ -68,13 +68,13 @@
 
 
 
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 printAssemblyHeadersToStdErr(void);
 
-U_INTERNAL UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 checkAssemblyHeaderName(const char* optAssembly);
 
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 writeCCode(
     const char *filename,
     const char *destdir,
@@ -83,7 +83,7 @@
     char *outFilePath,
     size_t outFilePathCapacity);
 
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 writeAssemblyCode(
     const char *filename,
     const char *destdir,
@@ -92,7 +92,7 @@
     char *outFilePath,
     size_t outFilePathCapacity);
 
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 writeObjectCode(
     const char *filename,
     const char *destdir,
diff --git a/icu4c/source/tools/toolutil/pkgitems.cpp b/icu4c/source/tools/toolutil/pkgitems.cpp
index 7b86c55..1d4542f 100644
--- a/icu4c/source/tools/toolutil/pkgitems.cpp
+++ b/icu4c/source/tools/toolutil/pkgitems.cpp
@@ -441,6 +441,7 @@
 
 // get dependencies from conversion tables --------------------------------- ***
 
+#if !UCONFIG_NO_CONVERSION
 /* code adapted from ucnv_swap() */
 static void
 ucnv_enumDependencies(const UDataSwapper *ds,
@@ -631,5 +632,6 @@
         }
     }
 }
+#endif /* UCONFIG_NO_CONVERSION */
 
 U_NAMESPACE_END
diff --git a/icu4c/source/tools/toolutil/sources.txt b/icu4c/source/tools/toolutil/sources.txt
new file mode 100644
index 0000000..d328899
--- /dev/null
+++ b/icu4c/source/tools/toolutil/sources.txt
@@ -0,0 +1,24 @@
+collationinfo.cpp
+dbgutil.cpp
+denseranges.cpp
+filestrm.cpp
+filetools.cpp
+flagparser.cpp
+package.cpp
+pkg_genc.cpp
+pkg_gencmn.cpp
+pkg_icu.cpp
+pkgitems.cpp
+ppucd.cpp
+swapimpl.cpp
+toolutil.cpp
+ucbuf.cpp
+ucln_tu.cpp
+ucm.cpp
+ucmstate.cpp
+udbgutil.cpp
+unewdata.cpp
+uoptions.cpp
+uparse.cpp
+writesrc.cpp
+xmlparser.cpp
diff --git a/icu4c/source/tools/toolutil/toolutil.cpp b/icu4c/source/tools/toolutil/toolutil.cpp
index 95543c6..7a574f4 100644
--- a/icu4c/source/tools/toolutil/toolutil.cpp
+++ b/icu4c/source/tools/toolutil/toolutil.cpp
@@ -33,7 +33,7 @@
 #include "unicode/utypes.h"
 
 #ifndef U_TOOLUTIL_IMPLEMENTATION
-#error U_TOOLUTIL_IMPLEMENTATION not set - must be set for all ICU source files in common/ - see http://userguide.icu-project.org/howtouseicu
+#error U_TOOLUTIL_IMPLEMENTATION not set - must be set for all ICU source files in common/ - see https://unicode-org.github.io/icu/userguide/howtouseicu
 #endif
 
 #if U_PLATFORM_USES_ONLY_WIN32_API
@@ -166,14 +166,11 @@
     const char *basename=uprv_strrchr(filename, U_FILE_SEP_CHAR);
 
 #if U_FILE_ALT_SEP_CHAR!=U_FILE_SEP_CHAR
-#if !(U_PLATFORM == U_PF_CYGWIN && U_PLATFORM_USES_ONLY_WIN32_API)
-    if(basename==NULL)
-#endif
-    {
-        /* Use lenient matching on Windows, which can accept either \ or /
-           This is useful for environments like Win32+CygWin which have both.
-        */
-        basename=uprv_strrchr(filename, U_FILE_ALT_SEP_CHAR);
+    //be lenient about pathname separators on Windows, like official implementation of C++17 std::filesystem in MSVC
+    //would be convenient to merge this loop with the one above, but alas, there is no such solution in the standard library
+    const char *alt_basename=uprv_strrchr(filename, U_FILE_ALT_SEP_CHAR);
+    if(alt_basename>basename) {
+        basename=alt_basename;
     }
 #endif
 
diff --git a/icu4c/source/tools/toolutil/toolutil.h b/icu4c/source/tools/toolutil/toolutil.h
index 7ab665c..e6be0a2 100644
--- a/icu4c/source/tools/toolutil/toolutil.h
+++ b/icu4c/source/tools/toolutil/toolutil.h
@@ -23,6 +23,12 @@
 
 #include "unicode/utypes.h"
 
+#ifndef TRUE
+#   define TRUE  1
+#endif
+#ifndef FALSE
+#   define FALSE 0
+#endif
 
 #ifdef __cplusplus
 
diff --git a/icu4c/source/tools/toolutil/toolutil.vcxproj b/icu4c/source/tools/toolutil/toolutil.vcxproj
index a8a4411..5fe0035 100644
--- a/icu4c/source/tools/toolutil/toolutil.vcxproj
+++ b/icu4c/source/tools/toolutil/toolutil.vcxproj
@@ -14,22 +14,6 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
-  </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
@@ -90,7 +74,7 @@
       <TypeLibraryName>.\..\..\..\lib\icutu.tlb</TypeLibraryName>
     </Midl>
     <Link>
-      <OutputFile>..\..\..\bin\icutu67.dll</OutputFile>
+      <OutputFile>..\..\..\bin\icutu68.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\..\lib\icutu.pdb</ProgramDatabaseFile>
       <DataExecutionPrevention>
       </DataExecutionPrevention>
@@ -102,7 +86,7 @@
       <TypeLibraryName>.\..\..\..\lib\icutud.tlb</TypeLibraryName>
     </Midl>
     <Link>
-      <OutputFile>..\..\..\bin\icutu67d.dll</OutputFile>
+      <OutputFile>..\..\..\bin\icutu68d.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\..\lib\icutud.pdb</ProgramDatabaseFile>
       <DataExecutionPrevention>
       </DataExecutionPrevention>
@@ -129,7 +113,7 @@
       <WholeProgramOptimization>true</WholeProgramOptimization>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\..\bin64\icutu67.dll</OutputFile>
+      <OutputFile>..\..\..\bin64\icutu68.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\..\lib64\icutu.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\..\lib64\icutu.lib</ImportLibrary>
     </Link>
@@ -139,7 +123,7 @@
       <TypeLibraryName>.\..\..\..\lib64\icutud.tlb</TypeLibraryName>
     </Midl>
     <Link>
-      <OutputFile>..\..\..\bin64\icutu67d.dll</OutputFile>
+      <OutputFile>..\..\..\bin64\icutu68d.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\..\lib64\icutud.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\..\lib64\icutud.lib</ImportLibrary>
     </Link>
@@ -160,7 +144,7 @@
       <TypeLibraryName>..\..\..\libARM\icutu.tlb</TypeLibraryName>
     </Midl>
     <Link>
-      <OutputFile>..\..\..\binARM\icutu67.dll</OutputFile>
+      <OutputFile>..\..\..\binARM\icutu68.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\..\libARM\icutu.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\..\libARM\icutu.lib</ImportLibrary>
     </Link>
@@ -173,7 +157,7 @@
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\..\binARM\icutu67d.dll</OutputFile>
+      <OutputFile>..\..\..\binARM\icutu68d.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\..\libARM\icutud.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\..\libARM\icutud.lib</ImportLibrary>
     </Link>
@@ -194,7 +178,7 @@
       <TypeLibraryName>.\..\..\..\libARM64\icutu.tlb</TypeLibraryName>
     </Midl>
     <Link>
-      <OutputFile>..\..\..\binARM64\icutu67.dll</OutputFile>
+      <OutputFile>..\..\..\binARM64\icutu68.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\..\libARM64\icutu.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\..\libARM64\icutu.lib</ImportLibrary>
     </Link>
@@ -207,7 +191,7 @@
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
     </ClCompile>
     <Link>
-      <OutputFile>..\..\..\binARM64\icutu67d.dll</OutputFile>
+      <OutputFile>..\..\..\binARM64\icutu68d.dll</OutputFile>
       <ProgramDatabaseFile>.\..\..\..\libARM64\icutud.pdb</ProgramDatabaseFile>
       <ImportLibrary>..\..\..\libARM64\icutud.lib</ImportLibrary>
     </Link>
diff --git a/icu4c/source/tools/toolutil/udbgutil.cpp b/icu4c/source/tools/toolutil/udbgutil.cpp
index 285f68a..9936945 100644
--- a/icu4c/source/tools/toolutil/udbgutil.cpp
+++ b/icu4c/source/tools/toolutil/udbgutil.cpp
@@ -594,24 +594,11 @@
   fprintf(out, " </icuSystemParams>\n");
 }
 
-#define ICU_TRAC_URL "http://bugs.icu-project.org/trac/ticket/"
-#define CLDR_TRAC_URL "http://unicode.org/cldr/trac/ticket/"
-#define CLDR_TICKET_PREFIX "cldrbug:"
+#define UNICODE_BUG_URL "https://unicode-org.atlassian.net/browse/"
+#define OLD_CLDR_PREFIX "cldrbug:"
+#define CLDR_BUG_PREFIX "CLDR-"
+#define ICU_BUG_PREFIX "ICU-"
 
-U_CAPI char *udbg_knownIssueURLFrom(const char *ticket, char *buf) {
-  if( ticket==NULL ) {
-    return NULL;
-  }
-
-  if( !strncmp(ticket, CLDR_TICKET_PREFIX, strlen(CLDR_TICKET_PREFIX)) ) {
-    strcpy( buf, CLDR_TRAC_URL );
-    strcat( buf, ticket+strlen(CLDR_TICKET_PREFIX) );
-  } else {
-    strcpy( buf, ICU_TRAC_URL );
-    strcat( buf, ticket );
-  }
-  return buf;
-}
 
 
 #include <set>
@@ -641,8 +628,27 @@
 {
 }
 
-void KnownIssues::add(const char *ticket, const char *where, const UChar *msg, UBool *firstForTicket, UBool *firstForWhere)
+/**
+ * Map cldr:1234 to CLDR-1234
+ * Map 1234 to ICU-1234
+ */
+static std::string mapTicketId(const char *ticketStr) {
+  std::string ticket(ticketStr);
+  // TODO: Can remove this function once all logKnownIssue calls are switched over
+  // to the ICU-1234 and CLDR-1234 format.
+  if(ticket.rfind(OLD_CLDR_PREFIX) == 0) {
+    // map cldrbug:1234 to CLDR-1234
+    ticket.replace(0, uprv_strlen(OLD_CLDR_PREFIX), CLDR_BUG_PREFIX);
+  } else if(::isdigit(ticket[0])) {
+    // map 1234 to ICU-1234
+    ticket.insert(0, ICU_BUG_PREFIX);
+  }
+  return ticket;
+}
+
+void KnownIssues::add(const char *ticketStr, const char *where, const UChar *msg, UBool *firstForTicket, UBool *firstForWhere)
 {
+  const std::string ticket = mapTicketId(ticketStr);
   if(fTable.find(ticket) == fTable.end()) {
     if(firstForTicket!=NULL) *firstForTicket = TRUE;
     fTable[ticket] = std::map < std::string, std::set < std::string > >();
@@ -664,8 +670,9 @@
   fTable[ticket][where].insert(std::string(icu::CStr(ustr)()));
 }
 
-void KnownIssues::add(const char *ticket, const char *where, const char *msg, UBool *firstForTicket, UBool *firstForWhere)
+void KnownIssues::add(const char *ticketStr, const char *where, const char *msg, UBool *firstForTicket, UBool *firstForWhere)
 {
+  const std::string ticket = mapTicketId(ticketStr);
   if(fTable.find(ticket) == fTable.end()) {
     if(firstForTicket!=NULL) *firstForTicket = TRUE;
     fTable[ticket] = std::map < std::string, std::set < std::string > >();
@@ -697,8 +704,13 @@
           std::map <  std::string,  std::set <  std::string > > >::iterator i = fTable.begin();
        i != fTable.end();
        i++ ) {
-    char URL[1024];
-    std::cout << '#' << (*i).first << " <" << udbg_knownIssueURLFrom( (*i).first.c_str(), URL ) << ">" << std::endl;
+    const std::string ticketid = (*i).first;
+    std::cout << "[" << ticketid << "] ";
+    if(ticketid.rfind(ICU_BUG_PREFIX) == 0 || ticketid.rfind(CLDR_BUG_PREFIX) == 0) {
+      // If it's a unicode.org bug.
+      std::cout << UNICODE_BUG_URL << ticketid;
+    } // Else: some other kind of bug. Allow this, but without a URL.
+    std::cout << std::endl;
 
     for( std::map< std::string, std::set < std::string > >::iterator ii = (*i).second.begin();
          ii != (*i).second.end();
diff --git a/icu4c/source/tools/toolutil/udbgutil.h b/icu4c/source/tools/toolutil/udbgutil.h
index 2f186e6..b9af132 100644
--- a/icu4c/source/tools/toolutil/udbgutil.h
+++ b/icu4c/source/tools/toolutil/udbgutil.h
@@ -114,14 +114,6 @@
 #define UDBG_KNOWNISSUE_LEN 255
 
 /**
- * Convert a "known issue" string into a URL
- * @param ticket ticket string such as "10245" or "cldrbug:5013"
- * @param buf output buffer - must be UDBG_KNOWNISSUE_LEN in size
- * @return pointer to output buffer, or NULL on err
- */
-U_CAPI char *udbg_knownIssueURLFrom(const char *ticket, char *buf);
-
-/**
  * Open (or reopen) a 'known issue' table.
  * @param ptr pointer to 'table'. Opaque.
  * @return new or existing ptr
diff --git a/icu4c/source/tools/toolutil/unewdata.cpp b/icu4c/source/tools/toolutil/unewdata.cpp
index 32b615c..43ff16b 100644
--- a/icu4c/source/tools/toolutil/unewdata.cpp
+++ b/icu4c/source/tools/toolutil/unewdata.cpp
@@ -56,15 +56,25 @@
         *pErrorCode=U_MEMORY_ALLOCATION_ERROR;
         return NULL;
     }
-    
+
+    char dirSepChar = U_FILE_SEP_CHAR;
+#if (U_FILE_SEP_CHAR != U_FILE_ALT_SEP_CHAR)
+    // We may need to append a different directory separator when building for Cygwin or MSYS2.
+    if(dir && *dir) {
+      if(!uprv_strchr(dir, U_FILE_SEP_CHAR) && uprv_strchr(dir, U_FILE_ALT_SEP_CHAR)) {
+          dirSepChar = U_FILE_ALT_SEP_CHAR;
+      }
+    }
+#endif
+
     /* Check that the full path won't be too long */
     length = 0;					/* Start with nothing */
     if(dir != NULL  && *dir !=0)	/* Add directory length if one was given */
     {
     	length += static_cast<int32_t>(strlen(dir));
-	
+
     	/* Add 1 if dir doesn't end with path sep */
-        if (dir[strlen(dir) - 1]!= U_FILE_SEP_CHAR) {
+        if (dir[strlen(dir) - 1]!= dirSepChar) {
             length++;
         }
 	}
@@ -74,7 +84,7 @@
         length += static_cast<int32_t>(strlen(type));
     }
 
-        
+
      /* LDH buffer Length error check */
     if(length  > ((int32_t)sizeof(filename) - 1))
     {
@@ -82,13 +92,13 @@
    	    uprv_free(pData);
 	    return NULL;
     }
-   
+
     /* open the output file */
     if(dir!=NULL && *dir!=0) { /* if dir has a value, we prepend it to the filename */
         char *p=filename+strlen(dir);
         uprv_strcpy(filename, dir);
-        if (*(p-1)!=U_FILE_SEP_CHAR) {
-            *p++=U_FILE_SEP_CHAR;
+        if (*(p-1)!=dirSepChar) {
+            *p++=dirSepChar;
             *p=0;
         }
     } else { /* otherwise, we'll output to the current dir */
diff --git a/icu4c/source/tools/tzcode/tz2icu.cpp b/icu4c/source/tools/tzcode/tz2icu.cpp
index cf53c83..dcdbf65 100644
--- a/icu4c/source/tools/tzcode/tz2icu.cpp
+++ b/icu4c/source/tools/tzcode/tz2icu.cpp
@@ -1789,7 +1789,7 @@
     if (file) {
         file << "//---------------------------------------------------------" << endl
              << "// Copyright (C) 2016 and later: Unicode, Inc. and others." << endl
-             << "// License & terms of use: http://www.unicode.org/copyright.html#License" << endl
+             << "// License & terms of use: http://www.unicode.org/copyright.html" << endl
              << "//---------------------------------------------------------" << endl
              << "// Build tool:  tz2icu" << endl
              << "// Build date:  " << asctime(now) /* << endl -- asctime emits CR */
diff --git a/icu4j/APIChangeReport.html b/icu4j/APIChangeReport.html
index c1b5290..c47a1d8 100644
--- a/icu4j/APIChangeReport.html
+++ b/icu4j/APIChangeReport.html
@@ -3,256 +3,217 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <!-- © 2020 and later: Unicode, Inc. and others. -->
-<!-- License & terms of use: http://www.unicode.org/copyright.html#License -->
-<title>ICU4J API Comparison: ICU4J 66.1 with ICU4J 67.1</title>
+<!-- License & terms of use: http://www.unicode.org/copyright.html -->
+<title>ICU4J API Comparison: ICU4J 67.1 with ICU4J 68.1</title>
 </head>
 <body>
-<h1>ICU4J API Comparison: ICU4J 66.1 with ICU4J 67.1</h1>
+<h1>ICU4J API Comparison: ICU4J 67.1 with ICU4J 68.1</h1>
 
 <hr/>
-<h2>Removed from ICU4J 66.1</h2>
-
-<h3>Package com.ibm.icu.number</h3>
-<ul>
-FormattedNumber
-<ul>
-<li><span style='color:orange'>(draft)</span> public boolean <i>equals</i>(java.lang.Object)</li>
-<li><span style='color:orange'>(draft)</span> public int <i>hashCode</i>()</li>
-<li><span style='color:orange'>(draft)</span> public boolean <i>nextFieldPosition</i>(java.text.FieldPosition)</li>
-</ul>
-FormattedNumberRange
-<ul>
-<li><span style='color:orange'>(draft)</span> public boolean <i>nextFieldPosition</i>(java.text.FieldPosition)</li>
-</ul>
-Precision
-<ul>
-<li><span style='color:orange'>(draft)</span> public java.lang.Object <i>clone</i>()</li>
-</ul>
-ScientificNotation
-<ul>
-<li><span style='color:orange'>(draft)</span> public java.lang.Object <i>clone</i>()</li>
-</ul>
-</ul>
-
+<h2>Removed from ICU4J 67.1</h2>
+<p>(no API removed)</p>
 
 <hr/>
-<h2>Deprecated or Obsoleted in ICU4J 67.1</h2>
+<h2>Deprecated or Obsoleted in ICU4J 68.1</h2>
 <p>(no API obsoleted)</p>
 
 <hr/>
-<h2>Changed in ICU4J 67.1 (old, new)</h2>
+<h2>Changed in ICU4J 68.1 (old, new)</h2>
 
-<h3>Package com.ibm.icu.number</h3>
+<h3>Package com.ibm.icu.util</h3>
 <ul>
-<li>    <span style='color:green'>(stable)</span> public abstract class <i>Precision</i> extends java.lang.Object implements java.lang.Cloneable</br>
-<span style='color:green'>(stable)</span> public abstract class <i>Precision</i> extends java.lang.Object</li>
-<li>    <span style='color:green'>(stable)</span> public class <i>ScientificNotation</i> extends com.ibm.icu.number.Notation implements java.lang.Cloneable</br>
-<span style='color:green'>(stable)</span> public class <i>ScientificNotation</i> extends com.ibm.icu.number.Notation</li>
+<li>    <span style='color:orange'>(draft)</span> public class <i>NoUnit</i> extends com.ibm.icu.util.MeasureUnit</br>
+<span style='color:orange'>(draft)</span> public final class <i>NoUnit</i> extends java.lang.Object</li>
+NoUnit
+<ul>
+<li>    <span style='color:orange'>(draft)</span> public static final com.ibm.icu.util.NoUnit BASE</br>
+<span style='color:orange'>(draft)</span> public static final com.ibm.icu.util.MeasureUnit BASE</li>
+<li>    <span style='color:orange'>(draft)</span> public static final com.ibm.icu.util.NoUnit PERCENT</br>
+<span style='color:orange'>(draft)</span> public static final com.ibm.icu.util.MeasureUnit PERCENT</li>
+<li>    <span style='color:orange'>(draft)</span> public static final com.ibm.icu.util.NoUnit PERMILLE</br>
+<span style='color:orange'>(draft)</span> public static final com.ibm.icu.util.MeasureUnit PERMILLE</li>
+</ul>
 </ul>
 
 
 <hr/>
-<h2>Promoted to stable in ICU4J 67.1</h2>
+<h2>Promoted to stable in ICU4J 68.1</h2>
+
+<h3>Package com.ibm.icu.text</h3>
+<ul>
+RelativeDateTimeFormatter.AbsoluteUnit
+<ul>
+<li><span style='color:green'>(stable)</span> public static final RelativeDateTimeFormatter.AbsoluteUnit HOUR</li>
+<li><span style='color:green'>(stable)</span> public static final RelativeDateTimeFormatter.AbsoluteUnit MINUTE</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.util</h3>
+<ul>
+<li><span style='color:green'>(stable)</span> public static final class <i>LocaleMatcher.Builder</i></li>
+<li><span style='color:green'>(stable)</span> public static final class <i>LocaleMatcher.Result</i></li>
+<li><span style='color:green'>(stable)</span> public static enum <i>LocaleMatcher.Demotion</i></li>
+<li><span style='color:green'>(stable)</span> public static enum <i>LocaleMatcher.FavorSubtag</i></li>
+<li><span style='color:green'>(stable)</span> public static enum <i>ULocale.AvailableType</i></li>
+LocaleMatcher
+<ul>
+<li><span style='color:green'>(stable)</span> public static LocaleMatcher.Builder <i>builder</i>()</li>
+<li><span style='color:green'>(stable)</span> public java.util.Locale <i>getBestLocale</i>(java.lang.Iterable&lt;java.util.Locale&gt;)</li>
+<li><span style='color:green'>(stable)</span> public java.util.Locale <i>getBestLocale</i>(java.util.Locale)</li>
+<li><span style='color:green'>(stable)</span> public LocaleMatcher.Result <i>getBestLocaleResult</i>(java.lang.Iterable&lt;java.util.Locale&gt;)</li>
+<li><span style='color:green'>(stable)</span> public LocaleMatcher.Result <i>getBestLocaleResult</i>(java.util.Locale)</li>
+<li><span style='color:green'>(stable)</span> public LocaleMatcher.Result <i>getBestMatchResult</i>(ULocale)</li>
+<li><span style='color:green'>(stable)</span> public LocaleMatcher.Result <i>getBestMatchResult</i>(java.lang.Iterable&lt;ULocale&gt;)</li>
+</ul>
+LocaleMatcher.Demotion
+<ul>
+<li><span style='color:green'>(stable)</span> public static final LocaleMatcher.Demotion NONE</li>
+<li><span style='color:green'>(stable)</span> public static final LocaleMatcher.Demotion REGION</li>
+</ul>
+LocaleMatcher.FavorSubtag
+<ul>
+<li><span style='color:green'>(stable)</span> public static final LocaleMatcher.FavorSubtag LANGUAGE</li>
+<li><span style='color:green'>(stable)</span> public static final LocaleMatcher.FavorSubtag SCRIPT</li>
+</ul>
+LocalePriorityList
+<ul>
+<li><span style='color:green'>(stable)</span> public java.util.Set&lt;ULocale&gt; <i>getULocales</i>()</li>
+</ul>
+MeasureUnit
+<ul>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit BAR</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit DECADE</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit DOT_PER_CENTIMETER</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit DOT_PER_INCH</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit EM</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit MEGAPIXEL</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit PASCAL</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit PIXEL</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit PIXEL_PER_CENTIMETER</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit PIXEL_PER_INCH</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit THERM_US</li>
+</ul>
+ULocale
+<ul>
+<li><span style='color:green'>(stable)</span> public static java.util.Collection&lt;ULocale&gt; <i>getAvailableLocalesByType</i>(ULocale.AvailableType)</li>
+</ul>
+ULocale.AvailableType
+<ul>
+<li><span style='color:green'>(stable)</span> public static final ULocale.AvailableType DEFAULT</li>
+<li><span style='color:green'>(stable)</span> public static final ULocale.AvailableType ONLY_LEGACY_ALIASES</li>
+<li><span style='color:green'>(stable)</span> public static final ULocale.AvailableType WITH_LEGACY_ALIASES</li>
+</ul>
+</ul>
+
+
+<hr/>
+<h2>Added in ICU4J 68.1</h2>
 
 <h3>Package com.ibm.icu.number</h3>
 <ul>
 FormattedNumber
 <ul>
-<li><span style='color:green'>(stable)</span> public char <i>charAt</i>(int)</li>
-<li><span style='color:green'>(stable)</span> public int <i>length</i>()</li>
-<li><span style='color:green'>(stable)</span> public boolean <i>nextPosition</i>(ConstrainedFieldPosition)</li>
-<li><span style='color:green'>(stable)</span> public java.lang.CharSequence <i>subSequence</i>(int, int)</li>
+<li><span style='color:orange'>(draft)</span> public MeasureUnit <i>getOutputUnit</i>()</li>
 </ul>
-FormattedNumberRange
+NumberFormatterSettings
 <ul>
-<li><span style='color:green'>(stable)</span> public char <i>charAt</i>(int)</li>
-<li><span style='color:green'>(stable)</span> public boolean <i>equals</i>(java.lang.Object)</li>
-<li><span style='color:green'>(stable)</span> public int <i>hashCode</i>()</li>
-<li><span style='color:green'>(stable)</span> public int <i>length</i>()</li>
-<li><span style='color:green'>(stable)</span> public boolean <i>nextPosition</i>(ConstrainedFieldPosition)</li>
-<li><span style='color:green'>(stable)</span> public java.lang.CharSequence <i>subSequence</i>(int, int)</li>
+<li><span style='color:orange'>(draft)</span> public T extends NumberFormatterSettings&lt;?&gt; <i>usage</i>(java.lang.String)</li>
 </ul>
 </ul>
 
 <h3>Package com.ibm.icu.text</h3>
 <ul>
-<li><span style='color:green'>(stable)</span> public class <i>ConstrainedFieldPosition</i></li>
-<li><span style='color:green'>(stable)</span> public static final class <i>DateIntervalFormat.FormattedDateInterval</i></li>
-<li><span style='color:green'>(stable)</span> public static final class <i>DateIntervalFormat.SpanField</i></li>
-<li><span style='color:green'>(stable)</span> public interface <i>FormattedValue</i></li>
-<li><span style='color:green'>(stable)</span> public static class <i>RelativeDateTimeFormatter.Field</i></li>
-<li><span style='color:green'>(stable)</span> public static class <i>RelativeDateTimeFormatter.FormattedRelativeDateTime</i></li>
-<li><span style='color:green'>(stable)</span> public static abstract class <i>UFormat.SpanField</i></li>
-DateFormatSymbols
-<ul>
-<li><span style='color:green'>(stable)</span> public java.lang.String[] <i>getNarrowEras</i>()</li>
-<li><span style='color:green'>(stable)</span> public void <i>setNarrowEras</i>(java.lang.String[])</li>
-</ul>
 DateIntervalFormat
 <ul>
-<li><span style='color:green'>(stable)</span> public DateIntervalFormat.FormattedDateInterval <i>formatToValue</i>(Calendar, Calendar)</li>
-<li><span style='color:green'>(stable)</span> public DateIntervalFormat.FormattedDateInterval <i>formatToValue</i>(DateInterval)</li>
+<li><span style='color:orange'>(draft)</span> public DisplayContext <i>getContext</i>(DisplayContext.Type)</li>
+<li><span style='color:orange'>(draft)</span> public void <i>setContext</i>(DisplayContext)</li>
 </ul>
 DecimalFormat
 <ul>
-<li><span style='color:green'>(stable)</span> public synchronized int <i>getMinimumGroupingDigits</i>()</li>
-<li><span style='color:green'>(stable)</span> public synchronized boolean <i>isParseCaseSensitive</i>()</li>
-<li><span style='color:green'>(stable)</span> public synchronized boolean <i>isParseNoExponent</i>()</li>
-<li><span style='color:green'>(stable)</span> public synchronized boolean <i>isSignAlwaysShown</i>()</li>
-<li><span style='color:green'>(stable)</span> public synchronized void <i>setMinimumGroupingDigits</i>(int)</li>
-<li><span style='color:green'>(stable)</span> public synchronized void <i>setParseCaseSensitive</i>(boolean)</li>
-<li><span style='color:green'>(stable)</span> public synchronized void <i>setParseNoExponent</i>(boolean)</li>
-<li><span style='color:green'>(stable)</span> public synchronized void <i>setSignAlwaysShown</i>(boolean)</li>
-</ul>
-NumberFormat.Field
-<ul>
-<li><span style='color:green'>(stable)</span> public static final NumberFormat.Field COMPACT</li>
-<li><span style='color:green'>(stable)</span> public static final NumberFormat.Field MEASURE_UNIT</li>
+<li><span style='color:orange'>(draft)</span> public static final int MINIMUM_GROUPING_DIGITS_AUTO</li>
+<li><span style='color:orange'>(draft)</span> public static final int MINIMUM_GROUPING_DIGITS_MIN2</li>
 </ul>
 PluralRules
 <ul>
-<li><span style='color:green'>(stable)</span> public java.lang.String <i>select</i>(FormattedNumber)</li>
-</ul>
-RelativeDateTimeFormatter
-<ul>
-<li><span style='color:green'>(stable)</span> public RelativeDateTimeFormatter.FormattedRelativeDateTime <i>formatNumericToValue</i>(double, RelativeDateTimeFormatter.RelativeDateTimeUnit)</li>
-<li><span style='color:green'>(stable)</span> public RelativeDateTimeFormatter.FormattedRelativeDateTime <i>formatToValue</i>(RelativeDateTimeFormatter.Direction, RelativeDateTimeFormatter.AbsoluteUnit)</li>
-<li><span style='color:green'>(stable)</span> public RelativeDateTimeFormatter.FormattedRelativeDateTime <i>formatToValue</i>(double, RelativeDateTimeFormatter.Direction, RelativeDateTimeFormatter.RelativeUnit)</li>
-<li><span style='color:green'>(stable)</span> public RelativeDateTimeFormatter.FormattedRelativeDateTime <i>formatToValue</i>(double, RelativeDateTimeFormatter.RelativeDateTimeUnit)</li>
-</ul>
-RelativeDateTimeFormatter.AbsoluteUnit
-<ul>
-<li><span style='color:green'>(stable)</span> public static final RelativeDateTimeFormatter.AbsoluteUnit QUARTER</li>
+<li><span style='color:orange'>(draft)</span> public java.lang.String <i>select</i>(FormattedNumberRange)</li>
 </ul>
 </ul>
 
 <h3>Package com.ibm.icu.util</h3>
 <ul>
-BytesTrie
+<li><span style='color:orange'>(draft)</span> public class <i>ICUInputTooLongException</i></li>
+<li><span style='color:orange'>(draft)</span> public static enum <i>MeasureUnit.Complexity</i></li>
+<li><span style='color:orange'>(draft)</span> public static enum <i>MeasureUnit.SIPrefix</i></li>
+LocaleMatcher
 <ul>
-<li><span style='color:green'>(stable)</span> public <i>BytesTrie</i>(BytesTrie)</li>
-<li><span style='color:green'>(stable)</span> public long <i>getState64</i>()</li>
-<li><span style='color:green'>(stable)</span> public BytesTrie <i>resetToState64</i>(long)</li>
-</ul>
-CharsTrie
-<ul>
-<li><span style='color:green'>(stable)</span> public <i>CharsTrie</i>(CharsTrie)</li>
-<li><span style='color:green'>(stable)</span> public long <i>getState64</i>()</li>
-<li><span style='color:green'>(stable)</span> public CharsTrie <i>resetToState64</i>(long)</li>
-</ul>
-MeasureUnit
-<ul>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit BARREL</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit BRITISH_THERMAL_UNIT</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit DALTON</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit DAY_PERSON</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit DUNAM</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit EARTH_MASS</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit ELECTRONVOLT</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit FLUID_OUNCE_IMPERIAL</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit KILOPASCAL</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit MEGAPASCAL</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit MOLE</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit MONTH_PERSON</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit NEWTON</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit NEWTON_METER</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit PERMYRIAD</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit POUND_FOOT</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit POUND_FORCE</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit SOLAR_LUMINOSITY</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit SOLAR_MASS</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit SOLAR_RADIUS</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit WEEK_PERSON</li>
-<li><span style='color:green'>(stable)</span> public static final MeasureUnit YEAR_PERSON</li>
-</ul>
-</ul>
-
-
-<hr/>
-<h2>Added in ICU4J 67.1</h2>
-
-<h3>Package com.ibm.icu.number</h3>
-<ul>
-NumberFormatter.UnitWidth
-<ul>
-<li><span style='color:orange'>(draft)</span> public static final NumberFormatter.UnitWidth FORMAL</li>
-<li><span style='color:orange'>(draft)</span> public static final NumberFormatter.UnitWidth VARIANT</li>
-</ul>
-</ul>
-
-<h3>Package com.ibm.icu.text</h3>
-<ul>
-<li><span style='color:orange'>(draft)</span> public static final class <i>ListFormatter.Field</i></li>
-<li><span style='color:orange'>(draft)</span> public static final class <i>ListFormatter.FormattedList</i></li>
-<li><span style='color:orange'>(draft)</span> public static final class <i>ListFormatter.SpanField</i></li>
-<li><span style='color:orange'>(draft)</span> public static enum <i>DateFormat.HourCycle</i></li>
-<li><span style='color:orange'>(draft)</span> public static enum <i>ListFormatter.Type</i></li>
-<li><span style='color:orange'>(draft)</span> public static enum <i>ListFormatter.Width</i></li>
-CurrencyDisplayNames
-<ul>
-<li><span style='color:orange'>(draft)</span> public abstract java.lang.String <i>getFormalSymbol</i>(java.lang.String)</li>
-<li><span style='color:orange'>(draft)</span> public abstract java.lang.String <i>getVariantSymbol</i>(java.lang.String)</li>
-</ul>
-DateFormat.HourCycle
-<ul>
-<li><span style='color:orange'>(draft)</span> public static final DateFormat.HourCycle HOUR_CYCLE_11</li>
-<li><span style='color:orange'>(draft)</span> public static final DateFormat.HourCycle HOUR_CYCLE_12</li>
-<li><span style='color:orange'>(draft)</span> public static final DateFormat.HourCycle HOUR_CYCLE_23</li>
-<li><span style='color:orange'>(draft)</span> public static final DateFormat.HourCycle HOUR_CYCLE_24</li>
-</ul>
-DateTimePatternGenerator
-<ul>
-<li><span style='color:orange'>(draft)</span> public DateFormat.HourCycle <i>getDefaultHourCycle</i>()</li>
-</ul>
-DecimalFormatSymbols
-<ul>
-<li><span style='color:gray'>(deprecated)</span> public java.lang.String <i>getCurrencyPattern</i>()</li>
-</ul>
-ListFormatter
-<ul>
-<li><span style='color:orange'>(draft)</span> public ListFormatter.FormattedList <i>formatToValue</i>(java.lang.Object...)</li>
-<li><span style='color:orange'>(draft)</span> public ListFormatter.FormattedList <i>formatToValue</i>(java.util.Collection&lt;?&gt;)</li>
-<li><span style='color:orange'>(draft)</span> public static ListFormatter <i>getInstance</i>(ULocale, ListFormatter.Type, ListFormatter.Width)</li>
-<li><span style='color:orange'>(draft)</span> public static ListFormatter <i>getInstance</i>(java.util.Locale, ListFormatter.Type, ListFormatter.Width)</li>
-</ul>
-ListFormatter.Type
-<ul>
-<li><span style='color:orange'>(draft)</span> public static final ListFormatter.Type AND</li>
-<li><span style='color:orange'>(draft)</span> public static final ListFormatter.Type OR</li>
-<li><span style='color:orange'>(draft)</span> public static final ListFormatter.Type UNITS</li>
-</ul>
-ListFormatter.Width
-<ul>
-<li><span style='color:orange'>(draft)</span> public static final ListFormatter.Width NARROW</li>
-<li><span style='color:orange'>(draft)</span> public static final ListFormatter.Width SHORT</li>
-<li><span style='color:orange'>(draft)</span> public static final ListFormatter.Width WIDE</li>
-</ul>
-</ul>
-
-<h3>Package com.ibm.icu.util</h3>
-<ul>
-<li><span style='color:orange'>(draft)</span> public static enum <i>LocaleMatcher.Direction</i></li>
-Currency
-<ul>
-<li><span style='color:orange'>(draft)</span> public static final int FORMAL_SYMBOL_NAME</li>
-<li><span style='color:orange'>(draft)</span> public static final int VARIANT_SYMBOL_NAME</li>
+<li><span style='color:orange'>(draft)</span> public boolean <i>isMatch</i>(ULocale, ULocale)</li>
+<li><span style='color:orange'>(draft)</span> public boolean <i>isMatch</i>(java.util.Locale, java.util.Locale)</li>
 </ul>
 LocaleMatcher.Builder
 <ul>
-<li><span style='color:orange'>(draft)</span> public LocaleMatcher.Builder <i>setDirection</i>(LocaleMatcher.Direction)</li>
+<li><span style='color:orange'>(draft)</span> public LocaleMatcher.Builder <i>setMaxDistance</i>(ULocale, ULocale)</li>
+<li><span style='color:orange'>(draft)</span> public LocaleMatcher.Builder <i>setMaxDistance</i>(java.util.Locale, java.util.Locale)</li>
+<li><span style='color:orange'>(draft)</span> public LocaleMatcher.Builder <i>setNoDefaultLocale</i>()</li>
 </ul>
-LocaleMatcher.Direction
+MeasureUnit
 <ul>
-<li><span style='color:orange'>(draft)</span> public static final LocaleMatcher.Direction ONLY_TWO_WAY</li>
-<li><span style='color:orange'>(draft)</span> public static final LocaleMatcher.Direction WITH_ONE_WAY</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit CANDELA</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit DESSERT_SPOON</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit DESSERT_SPOON_IMPERIAL</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit DOT</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit DRAM</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit DROP</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit EARTH_RADIUS</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit GRAIN</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit JIGGER</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit LUMEN</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit PINCH</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit QUART_IMPERIAL</li>
+<li><span style='color:orange'>(draft)</span> public static MeasureUnit <i>forIdentifier</i>(java.lang.String)</li>
+<li><span style='color:orange'>(draft)</span> public MeasureUnit.Complexity <i>getComplexity</i>()</li>
+<li><span style='color:orange'>(draft)</span> public int <i>getDimensionality</i>()</li>
+<li><span style='color:orange'>(draft)</span> public java.lang.String <i>getIdentifier</i>()</li>
+<li><span style='color:orange'>(draft)</span> public MeasureUnit.SIPrefix <i>getSIPrefix</i>()</li>
+<li><span style='color:orange'>(draft)</span> public MeasureUnit <i>product</i>(MeasureUnit)</li>
+<li><span style='color:orange'>(draft)</span> public MeasureUnit <i>reciprocal</i>()</li>
+<li><span style='color:orange'>(draft)</span> public java.util.List&lt;MeasureUnit&gt; <i>splitToSingleUnits</i>()</li>
+<li><span style='color:orange'>(draft)</span> public MeasureUnit <i>withDimensionality</i>(int)</li>
+<li><span style='color:orange'>(draft)</span> public MeasureUnit <i>withSIPrefix</i>(MeasureUnit.SIPrefix)</li>
 </ul>
-ULocale
+MeasureUnit.Complexity
 <ul>
-<li><span style='color:orange'>(draft)</span> public static ULocale <i>createCanonical</i>(ULocale)</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.Complexity COMPOUND</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.Complexity MIXED</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.Complexity SINGLE</li>
+</ul>
+MeasureUnit.SIPrefix
+<ul>
+<li><span style='color:orange'>(draft)</span> public int <i>getPower</i>()</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix ATTO</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix CENTI</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix DECI</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix DEKA</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix EXA</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix FEMTO</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix GIGA</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix HECTO</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix KILO</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix MEGA</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix MICRO</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix MILLI</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix NANO</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix ONE</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix PETA</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix PICO</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix TERA</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix YOCTO</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix YOTTA</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix ZEPTO</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix ZETTA</li>
 </ul>
 </ul>
 
 <hr/>
-<p><i><font size="-1">Contents generated by ReportAPI tool on Wed Apr 01 16:15:30 EDT 2020<br/>© 2020 and later: Unicode, Inc. and others. License & terms of use: <a href="http://www.unicode.org/copyright.html#License">http://www.unicode.org/copyright.html#License</a></font></i></p>
+<p><i><font size="-1">Contents generated by ReportAPI tool on Fri Oct 23 11:19:04 PDT 2020<br/>© 2020 and later: Unicode, Inc. and others. License & terms of use: <a href="http://www.unicode.org/copyright.html">http://www.unicode.org/copyright.html</a></font></i></p>
 </body>
 </html>
diff --git a/icu4j/build.properties b/icu4j/build.properties
index 10f87c9..f4393c6 100644
--- a/icu4j/build.properties
+++ b/icu4j/build.properties
@@ -4,9 +4,9 @@
 #* Copyright (C) 2009-2016, International Business Machines Corporation and    *
 #* others. All Rights Reserved.                                                *
 #*******************************************************************************
-api.report.version = 67
-api.report.prev.version = 66
-release.file.ver = 67_1
-api.doc.version = 67.1
-maven.pom.ver = 67.1
+api.report.version = 68
+api.report.prev.version = 67
+release.file.ver = 68_2
+api.doc.version = 68.2
+maven.pom.ver = 68.2
 
diff --git a/icu4j/build.xml b/icu4j/build.xml
index a770315..9182ef4 100644
--- a/icu4j/build.xml
+++ b/icu4j/build.xml
@@ -1,6 +1,6 @@
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *******************************************************************************
 * Copyright (C) 1997-2016, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
@@ -267,6 +267,8 @@
             <mkdir dir="${junit.out.dir}/checkTest"/>
 
             <junit printsummary="yes" fork="yes">
+                <jvmarg value="-ea"/>
+                <jvmarg value="-Djava.awt.headless=true"/>
                 <jvmarg value="-DICU.exhaustive=10"/>
                 <classpath>
                     <path refid="junit.jars"/>
diff --git a/icu4j/coverage-exclusion.txt b/icu4j/coverage-exclusion.txt
index 4b011f1..06ae033 100644
--- a/icu4j/coverage-exclusion.txt
+++ b/icu4j/coverage-exclusion.txt
@@ -1,6 +1,6 @@
 //
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 // Copyright (C) 2016, International Business Machines Corporation and
 // others. All Rights Reserved.
 //
diff --git a/icu4j/demos/.settings/org.eclipse.jdt.ui.prefs b/icu4j/demos/.settings/org.eclipse.jdt.ui.prefs
index 3e3a642..22b2f87 100644
--- a/icu4j/demos/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/demos/.settings/org.eclipse.jdt.ui.prefs
@@ -3,7 +3,7 @@
 formatter_profile=_ICU4J Standard
 formatter_settings_version=11
 org.eclipse.jdt.ui.javadoc=false
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/demos/build.xml b/icu4j/demos/build.xml
index dea5579..600c1f8 100644
--- a/icu4j/demos/build.xml
+++ b/icu4j/demos/build.xml
@@ -1,6 +1,6 @@
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--
 *******************************************************************************
@@ -32,4 +32,4 @@
     <target name="jar" depends="compile, copy, @jar" description="Create the project's jar file"/>
 
     <target name="src-jar" depends="@src-jar" description="Create the project's source jar file"/>
-</project>
\ No newline at end of file
+</project>
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/Launcher.java b/icu4j/demos/src/com/ibm/icu/dev/demo/Launcher.java
index 591168c..51e2342 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/Launcher.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/Launcher.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2011, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/CalendarApp.java b/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/CalendarApp.java
index 6e84d57..02d488a 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/CalendarApp.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/CalendarApp.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1997-2010, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/CalendarCalc.java b/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/CalendarCalc.java
index 9bf8b50..fb0b057 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/CalendarCalc.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/CalendarCalc.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1997-2008, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java b/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java
index 2654de6..0780e66 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1997-2007, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java b/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java
index af508c1..ba28f8d 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1997-2007, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/package.html b/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/package.html
index 5f8a162..1d26038 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/package.html
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/calendar/package.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--  Copyright (C) 2016 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--  Copyright (C) 2000-2004, International Business Machines Corporation and
   others. All Rights Reserved.
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/charsetdet/DetectingViewer.java b/icu4j/demos/src/com/ibm/icu/dev/demo/charsetdet/DetectingViewer.java
index ed6fd50..9612243 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/charsetdet/DetectingViewer.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/charsetdet/DetectingViewer.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **************************************************************************
  * Copyright (C) 2005-2010, International Business Machines Corporation   *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java b/icu4j/demos/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java
index 9529434..4949811 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1997-2010, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java b/icu4j/demos/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java
index a0269dc..068696a 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/holiday/package.html b/icu4j/demos/src/com/ibm/icu/dev/demo/holiday/package.html
index 5a09858..ce228b1 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/holiday/package.html
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/holiday/package.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--  Copyright (C) 2016 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--  Copyright (C) 2000-2004, International Business Machines Corporation and
   others. All Rights Reserved.
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/impl/AppletFrame.java b/icu4j/demos/src/com/ibm/icu/dev/demo/impl/AppletFrame.java
index e8b1b46..42ee817 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/impl/AppletFrame.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/impl/AppletFrame.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/impl/DemoApplet.java b/icu4j/demos/src/com/ibm/icu/dev/demo/impl/DemoApplet.java
index c4552d4..f9cbf6c 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/impl/DemoApplet.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/impl/DemoApplet.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1997-2010, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java b/icu4j/demos/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java
index bedc010..89e894e 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1997-2010, International Business Machines Corporation and    *
@@ -95,4 +95,4 @@
 
     private int[]           breakPos = new int[10]; // TODO: get real
     private int             nbreaks = 0;
-}
\ No newline at end of file
+}
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/impl/DemoUtility.java b/icu4j/demos/src/com/ibm/icu/dev/demo/impl/DemoUtility.java
index 450bc67..866de90 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/impl/DemoUtility.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/impl/DemoUtility.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1997-2014, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java b/icu4j/demos/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java
index bc75c5a..84f6a9a 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/impl/Selection.java b/icu4j/demos/src/com/ibm/icu/dev/demo/impl/Selection.java
index d8912fc..bc8db13 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/impl/Selection.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/impl/Selection.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/impl/package.html b/icu4j/demos/src/com/ibm/icu/dev/demo/impl/package.html
index d29290a..483740c 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/impl/package.html
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/impl/package.html
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
 <html>
 <head>
-<!-- © 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html#License -->
+<!-- © 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html -->
 <!--  Copyright (C) 2000-2004, International Business Machines Corporation and
   others. All Rights Reserved.
 
@@ -10,4 +10,4 @@
 <body bgcolor="white">
 Shared utilities for demo applications and Applets.
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/number/CurrencyDemo.java b/icu4j/demos/src/com/ibm/icu/dev/demo/number/CurrencyDemo.java
index 0b647f9..a53363d 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/number/CurrencyDemo.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/number/CurrencyDemo.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2003-2010, International Business Machines
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfDemo.java b/icu4j/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfDemo.java
index e34479d..36d25cb 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfDemo.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfDemo.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
@@ -45,6 +45,7 @@
 import java.util.Locale;
 
 import com.ibm.icu.dev.demo.impl.DemoApplet;
+import com.ibm.icu.math.BigDecimal;
 import com.ibm.icu.text.RuleBasedNumberFormat;
 
 public class RbnfDemo extends DemoApplet {
@@ -66,10 +67,12 @@
         new RbnfDemo().showDemo();
     }
 
+    @Override
     protected Dimension getDefaultFrameSize(DemoApplet applet, Frame f) {
         return new Dimension(430,270);
     }
 
+    @Override
     protected Frame createDemoFrame(DemoApplet applet) {
         final Frame window = new Frame("Number Spellout Demo");
         window.setSize(800, 600);
@@ -89,7 +92,7 @@
         populateRuleSetMenu();
         numberFormatter = new DecimalFormat("#,##0.##########");
         parsePosition = new ParsePosition(0);
-        theNumber = 0;
+        theNumber = BigDecimal.ZERO;
 
         numberField = new TextField();
         numberField.setFont(new Font("Serif", Font.PLAIN, 24));
@@ -100,6 +103,7 @@
         lenientParseButton = new Checkbox("Lenient parse", lenientParse);
 
         numberField.addTextListener(new TextListener() {
+            @Override
             public void textValueChanged(TextEvent e) {
                 if (!numberFieldHasFocus)
                     return;
@@ -108,22 +112,25 @@
                 parsePosition.setIndex(0);
                 Number temp = numberFormatter.parse(fieldText, parsePosition);
                 if (temp == null || parsePosition.getIndex() == 0) {
-                    theNumber = 0;
+                    theNumber = BigDecimal.ZERO;
                     textField.setText("PARSE ERROR");
                 }
                 else {
-                    theNumber = temp.doubleValue();
-                    textField.setText(spelloutFormatter.format(theNumber, ruleSetName));
+                    theNumber = new BigDecimal(temp instanceof Long ? temp.longValue() : temp.doubleValue());
+                    textField.setText(spelloutFormatter.format(
+                            theNumber.scale() == 0 ? theNumber.longValue() : theNumber.doubleValue(), ruleSetName));
                 }
             }
         } );
 
         numberField.addFocusListener(new FocusAdapter() {
+            @Override
             public void focusLost(FocusEvent e) {
                 numberFieldHasFocus = false;
                 numberField.setText(numberFormatter.format(theNumber));
             }
 
+            @Override
             public void focusGained(FocusEvent e) {
                 numberFieldHasFocus = true;
                 numberField.selectAll();
@@ -131,14 +138,15 @@
         } );
 
         textField.addKeyListener(new KeyAdapter() {
+            @Override
             public void keyTyped(KeyEvent e) {
                 if (e.getKeyChar() == '\t') {
                     String fieldText = ((TextComponent)(e.getSource())).getText();
                     parsePosition.setIndex(0);
-                    theNumber = spelloutFormatter.parse(fieldText, parsePosition)
-                                        .doubleValue();
+                    theNumber = new BigDecimal(spelloutFormatter.parse(fieldText, parsePosition)
+                                    .doubleValue());
                     if (parsePosition.getIndex() == 0) {
-                        theNumber = 0;
+                        theNumber = BigDecimal.ZERO;
                         numberField.setText("PARSE ERROR");
                         textField.selectAll();
                     }
@@ -156,11 +164,12 @@
         } );
 
         textField.addFocusListener(new FocusAdapter() {
+            @Override
             public void focusLost(FocusEvent e) {
                 String fieldText = ((TextComponent)(e.getSource())).getText();
                 parsePosition.setIndex(0);
-                theNumber = spelloutFormatter.parse(fieldText, parsePosition)
-                                .doubleValue();
+                theNumber = new BigDecimal(spelloutFormatter.parse(fieldText, parsePosition)
+                                .doubleValue());
                 if (parsePosition.getIndex() == 0)
                     numberField.setText("PARSE ERROR");
                 else
@@ -168,12 +177,14 @@
                 textField.setText(textField.getText()); // textField.repaint() didn't work right
             }
 
+            @Override
             public void focusGained(FocusEvent e) {
                 textField.selectAll();
             }
         } );
 
         rulesField.addKeyListener(new KeyAdapter() {
+            @Override
             public void keyTyped(KeyEvent e) {
                 if (e.getKeyChar() == '\t') {
                     String fieldText = ((TextComponent)(e.getSource())).getText();
@@ -201,6 +212,7 @@
         } );
 
         rulesField.addFocusListener(new FocusAdapter() {
+            @Override
             public void focusLost(FocusEvent e) {
                 String fieldText = ((TextComponent)(e.getSource())).getText();
                 if (formatterMenu.getSelectedItem().equals("Custom") || !fieldText.equals(
@@ -223,6 +235,7 @@
         } );
 
         lenientParseButton.addItemListener(new ItemListener() {
+            @Override
             public void itemStateChanged(ItemEvent e) {
                 lenientParse = lenientParseButton.getState();
                 spelloutFormatter.setLenientParseMode(lenientParse);
@@ -231,7 +244,8 @@
 
         numberField.setText(numberFormatter.format(theNumber));
         numberField.selectAll();
-        textField.setText(spelloutFormatter.format(theNumber, ruleSetName));
+        textField.setText(spelloutFormatter
+                .format(theNumber.scale() == 0 ? theNumber.longValue() : theNumber.doubleValue(), ruleSetName));
 
         Panel leftPanel = new Panel();
         leftPanel.setLayout(new BorderLayout());
@@ -247,6 +261,7 @@
         panel2.setLayout(new GridLayout(3, 3));
         Button button = new Button("+100");
         button.addActionListener( new ActionListener() {
+            @Override
             public void actionPerformed(ActionEvent e) {
                 roll(100);
             }
@@ -254,6 +269,7 @@
         panel2.add(button);
         button = new Button("+10");
         button.addActionListener( new ActionListener() {
+            @Override
             public void actionPerformed(ActionEvent e) {
                 roll(10);
             }
@@ -261,6 +277,7 @@
         panel2.add(button);
         button = new Button("+1");
         button.addActionListener( new ActionListener() {
+            @Override
             public void actionPerformed(ActionEvent e) {
                 roll(1);
             }
@@ -268,8 +285,9 @@
         panel2.add(button);
         button = new Button("<");
         button.addActionListener( new ActionListener() {
+            @Override
             public void actionPerformed(ActionEvent e) {
-                theNumber *= 10;
+                theNumber = new BigDecimal(theNumber.toString()).multiply(new BigDecimal("10"));
                 redisplay();
             }
         } );
@@ -277,14 +295,16 @@
         panel2.add(new Panel());
         button = new Button(">");
         button.addActionListener( new ActionListener() {
+            @Override
             public void actionPerformed(ActionEvent e) {
-                theNumber /= 10;
+                theNumber = new BigDecimal(theNumber.toString()).multiply(new BigDecimal("0.1"));
                 redisplay();
             }
         } );
         panel2.add(button);
         button = new Button("-100");
         button.addActionListener( new ActionListener() {
+            @Override
             public void actionPerformed(ActionEvent e) {
                 roll(-100);
             }
@@ -292,6 +312,7 @@
         panel2.add(button);
         button = new Button("-10");
         button.addActionListener( new ActionListener() {
+            @Override
             public void actionPerformed(ActionEvent e) {
                 roll(-10);
             }
@@ -299,6 +320,7 @@
         panel2.add(button);
         button = new Button("-1");
         button.addActionListener( new ActionListener() {
+            @Override
             public void actionPerformed(ActionEvent e) {
                 roll(-1);
             }
@@ -315,6 +337,7 @@
             formatterMenu.addItem(RbnfSampleRuleSets.sampleRuleSetNames[i]);
         formatterMenu.addItem("Custom");
         formatterMenu.addItemListener(new ItemListener() {
+            @Override
             public void itemStateChanged(ItemEvent e) {
                 Choice source = (Choice)(e.getSource());
                 int item = source.getSelectedIndex();
@@ -344,6 +367,7 @@
         populateRuleSetMenu();
 
         ruleSetMenu.addItemListener(new ItemListener() {
+            @Override
             public void itemStateChanged(ItemEvent e) {
                 ruleSetName = ruleSetMenu.getSelectedItem();
                 redisplay();
@@ -370,6 +394,7 @@
         final DemoApplet theApplet = applet;
         window.addWindowListener(
                 new WindowAdapter() {
+                    @Override
                     public void windowClosing(WindowEvent e) {
                         setVisible(false);
                         window.dispose();
@@ -383,13 +408,14 @@
     }
 
     void roll(int delta) {
-        theNumber += delta;
+        theNumber = theNumber.add(new BigDecimal(delta));
         redisplay();
     }
 
     void redisplay() {
         numberField.setText(numberFormatter.format(theNumber));
-        textField.setText(spelloutFormatter.format(theNumber, ruleSetName));
+        textField.setText(spelloutFormatter
+                .format(theNumber.scale() == 0 ? theNumber.longValue() : theNumber.doubleValue(), ruleSetName));
     }
 
     void makeNewSpelloutFormatter() {
@@ -444,7 +470,7 @@
 
     private boolean lenientParse = true;
 
-    private double theNumber = 0;
+    private BigDecimal theNumber = BigDecimal.ZERO;
 //    private boolean canEdit = true;
 
     private Choice formatterMenu;
@@ -471,6 +497,7 @@
         return text;
     }
 
+    @Override
     public void paint(Graphics g) {
         Font font = getFont();
         FontMetrics fm = g.getFontMetrics();
@@ -542,10 +569,12 @@
         add(sp, "ScrollPane");
     }
 
+    @Override
     public void addFocusListener(FocusListener l) {
         tf1.addFocusListener(l);
     }
 
+    @Override
     public void addKeyListener(KeyListener l) {
         tf1.addKeyListener(l);
     }
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java b/icu4j/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java
index 074ad38..8b00e7b 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2007, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/rbnf/package.html b/icu4j/demos/src/com/ibm/icu/dev/demo/rbnf/package.html
index 7eb27fd..a192f7c 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/rbnf/package.html
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/rbnf/package.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--  Copyright (C) 2016 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--  Copyright (C) 2000-2004, International Business Machines Corporation and
   others. All Rights Reserved.
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java
index 325afa0..c6c5254 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/CaseIterator.java b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/CaseIterator.java
index 48a50c1..b9a6cd1 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/CaseIterator.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/CaseIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Demo.java b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Demo.java
index 4dc8c76..3a91f5a 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Demo.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Demo.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/DemoApplet.java b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/DemoApplet.java
index f631abc..f574749 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/DemoApplet.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/DemoApplet.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/InfoDialog.java b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/InfoDialog.java
index 2059c7b..1786366 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/InfoDialog.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/InfoDialog.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/IntDiffer.java b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/IntDiffer.java
index a329882..166c8c7 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/IntDiffer.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/IntDiffer.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt
index 874b774..8abb300 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt
@@ -1,6 +1,6 @@
 #--------------------------------------------------------------------
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
 # Copyright (c) 1999-2004, International Business Machines
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt
index b5e06d3..b4ada02 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt
@@ -1,6 +1,6 @@
 #--------------------------------------------------------------------
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
 # Copyright (c) 1999-2004, International Business Machines
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt
index 198fb12..44bea3a 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt
@@ -1,6 +1,6 @@
 #--------------------------------------------------------------------
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
 # Copyright (c) 1999-2004, International Business Machines
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt
index 3e144de..8e19837 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt
@@ -1,6 +1,6 @@
 #--------------------------------------------------------------------
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
 # Copyright (c) 1999-2004, International Business Machines
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Instructions.html b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Instructions.html
index 38d9d31..80806b2 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Instructions.html
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Instructions.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Language" content="en-us">
 <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
-<meta name="Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html#License">
+<meta name="Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html">
 <meta name="COPYRIGHT" content="Copyright 2006-2007, International Business Machines Corporation and others. All Rights Reserved.">
 <title>New Transliteration Test Files</title>
 </head>
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt
index 7e1f67a..d1192dc 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt
@@ -1,6 +1,6 @@
 #--------------------------------------------------------------------
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
 # Copyright (c) 1999-2004, International Business Machines
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java
index 6375414..4af4daa 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/TransliterationChart.java b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/TransliterationChart.java
index c845041..d348c0b 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/TransliterationChart.java
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/TransliterationChart.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
@@ -293,4 +293,4 @@
         }
 
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/demo.bat b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/demo.bat
index 4e20bbf..5d8b728 100755
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/demo.bat
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/demo.bat
@@ -1,7 +1,7 @@
 REM /*
 REM  *******************************************************************************
 REM  * Copyright (C) 2016 and later: Unicode, Inc. and others.
-REM  * License & terms of use: http://www.unicode.org/copyright.html#License
+REM  * License & terms of use: http://www.unicode.org/copyright.html
 REM  *******************************************************************************
 REM  *******************************************************************************
 REM  * Copyright (C) 1996-2004, International Business Machines Corporation and    *
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/demo.html b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/demo.html
index 8d49fbb..c5d6d92 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/demo.html
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/demo.html
@@ -2,7 +2,7 @@
 /**
  *******************************************************************************
  * Copyright (C) 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *******************************************************************************
  */
 /**
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/package.html b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/package.html
index aa1b7f4..cdbee7b 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/package.html
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/package.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--  Copyright (C) 2016 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--  Copyright (C) 2000-2004, International Business Machines Corporation and
   others. All Rights Reserved.
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Han_Pinyin.txt b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Han_Pinyin.txt
index 1dd61f8..2cb3235 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Han_Pinyin.txt
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Han_Pinyin.txt
@@ -1,6 +1,6 @@
 #--------------------------------------------------------------------
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
 # Copyright (c) 1999-2001, International Business Machines
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_English.txt b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_English.txt
index 79e526a..6abcda5 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_English.txt
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_English.txt
@@ -1,6 +1,6 @@
 #--------------------------------------------------------------------
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
 # Copyright (c) 1999-2001, International Business Machines
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_OnRomaji.txt b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_OnRomaji.txt
index 4b5eb4b..b291d56 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_OnRomaji.txt
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_OnRomaji.txt
@@ -1,6 +1,6 @@
 #--------------------------------------------------------------------
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
 # Copyright (c) 1999-2001, International Business Machines
diff --git a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/thai_test.txt b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/thai_test.txt
index eb81e18..a50177c 100644
--- a/icu4j/demos/src/com/ibm/icu/dev/demo/translit/thai_test.txt
+++ b/icu4j/demos/src/com/ibm/icu/dev/demo/translit/thai_test.txt
@@ -1,6 +1,6 @@
 #--------------------------------------------------------------------
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
 # Copyright (c) 1999-2004, International Business Machines
diff --git a/icu4j/ivy.xml b/icu4j/ivy.xml
index 94e875d..e63f362 100644
--- a/icu4j/ivy.xml
+++ b/icu4j/ivy.xml
@@ -1,6 +1,6 @@
 <!--
 * © 2017 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 -->
 <ivy-module version="2.0">
 	<info organisation="com.ibm.icu" module="icu4j"/>
diff --git a/icu4j/main/classes/charset/.settings/org.eclipse.jdt.ui.prefs b/icu4j/main/classes/charset/.settings/org.eclipse.jdt.ui.prefs
index 3680fab..d733db1 100644
--- a/icu4j/main/classes/charset/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/main/classes/charset/.settings/org.eclipse.jdt.ui.prefs
@@ -7,7 +7,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/main/classes/charset/build.xml b/icu4j/main/classes/charset/build.xml
index f0a91fa..0fc45fe 100644
--- a/icu4j/main/classes/charset/build.xml
+++ b/icu4j/main/classes/charset/build.xml
@@ -1,6 +1,6 @@
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *******************************************************************************
 * Copyright (C) 2009-2015, International Business Machines Corporation and
 * others. All Rights Reserved.
diff --git a/icu4j/main/classes/charset/src/META-INF/services/java.nio.charset.spi.CharsetProvider b/icu4j/main/classes/charset/src/META-INF/services/java.nio.charset.spi.CharsetProvider
index e21d50e..c967511 100644
--- a/icu4j/main/classes/charset/src/META-INF/services/java.nio.charset.spi.CharsetProvider
+++ b/icu4j/main/classes/charset/src/META-INF/services/java.nio.charset.spi.CharsetProvider
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (C) 2006, International Business Machines Corporation and others. All Rights Reserved.   
 # icu4j converters
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/Charset88591.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/Charset88591.java
index 1ea9cfc..2971c3e 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/Charset88591.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/Charset88591.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2006-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetASCII.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetASCII.java
index 5ea2279..0d93fe4 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetASCII.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetASCII.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2006-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetBOCU1.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetBOCU1.java
index d4111df..fd113db 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetBOCU1.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetBOCU1.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetCESU8.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetCESU8.java
index a029055..c1adc22 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetCESU8.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetCESU8.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2006-2008, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetCallback.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetCallback.java
index 7d7ad47..4ef038a 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetCallback.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetCallback.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2006-2014, International Business Machines Corporation and
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetCompoundText.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetCompoundText.java
index 2e2b314..e426389 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetCompoundText.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetCompoundText.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2010-2012, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetDecoderICU.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetDecoderICU.java
index 267fa08..6d5a2b6 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetDecoderICU.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetDecoderICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2006-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetEncoderICU.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetEncoderICU.java
index 8c960ec..3ebff31 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetEncoderICU.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetEncoderICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2006-2013, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetHZ.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetHZ.java
index e2294c0..8d4914c 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetHZ.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetHZ.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetICU.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetICU.java
index 8fd7d87..3daba24 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetICU.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2006-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetISCII.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetISCII.java
index 371e933..7b3dd48 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetISCII.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetISCII.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetISO2022.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetISO2022.java
index fdaa94d..154b1ab 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetISO2022.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetISO2022.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetLMBCS.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetLMBCS.java
index b920fcb..8a4aa3e 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetLMBCS.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetLMBCS.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetMBCS.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetMBCS.java
index d5fc265..9137c7a 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetMBCS.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetMBCS.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2006-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetProviderICU.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetProviderICU.java
index 8e11a1e..61af119 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetProviderICU.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetProviderICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2006-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetSCSU.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetSCSU.java
index d162156..07fa96d 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetSCSU.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetSCSU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetSelector.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetSelector.java
index c800d55..410bcd5 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetSelector.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetSelector.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16.java
index a401441..3813645 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2006-2011, International Business Machines Corporation and    *
@@ -17,7 +17,6 @@
 
 import com.ibm.icu.text.UTF16;
 import com.ibm.icu.text.UnicodeSet;
-import com.ibm.icu.util.VersionInfo;
 
 /**
  * @author Niti Hantaweepant
@@ -65,13 +64,10 @@
             this.endianXOR = ENDIAN_XOR_LE;
         }
 
-        /* UnicodeBig and UnicodeLittle requires maxBytesPerChar set to 4 in Java 5 or less */
-        if ((VersionInfo.javaVersion().getMajor() == 1 && VersionInfo.javaVersion().getMinor() <= 5)
-                && (isEndianSpecified && version == 1)) {
-            maxBytesPerChar = 4;
-        } else {
-            maxBytesPerChar = 2;
-        }
+        // UnicodeBig and UnicodeLittle used to require maxBytesPerChar set to 4 in Java 5 or less,
+        // but it's no longer necessary for newer Java versions. Java 5 or older runtime is no
+        // longer supported.
+        maxBytesPerChar = 2;
 
         minBytesPerChar = 2;
         maxCharsPerByte = 1;
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16BE.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16BE.java
index 5258484..5062b88 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16BE.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16BE.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2006-2008, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16LE.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16LE.java
index 0b0cfd0..3c380e4 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16LE.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16LE.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2006-2008, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF32.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF32.java
index c8e4544..b6847f4 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF32.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF32.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2006-2008, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF32BE.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF32BE.java
index 4abd1e2..62093bd 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF32BE.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF32BE.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2006-2008, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF32LE.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF32LE.java
index 1e7bf19..f499baa 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF32LE.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF32LE.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2006-2008, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF7.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF7.java
index 345870c..d409b79 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF7.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF7.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2011, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF8.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF8.java
index bd52379..3810c19 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF8.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF8.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2006-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterAlias.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterAlias.java
index cd8723f..9a94b9e 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterAlias.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterAlias.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2006-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterAliasDataReader.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterAliasDataReader.java
index 4393f01..5be5f1e 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterAliasDataReader.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterAliasDataReader.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2006-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterConstants.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterConstants.java
index 157c3c7..27760b6 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterConstants.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterConstants.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2006-2008, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterDataReader.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterDataReader.java
index 457a597..8005c15 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterDataReader.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterDataReader.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2006-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterSharedData.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterSharedData.java
index e310e52..c1c48d0 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterSharedData.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterSharedData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2006-2008, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterStaticData.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterStaticData.java
index e6a67aa..d58a4c5 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterStaticData.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/UConverterStaticData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2006-2007, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/UTF8.java b/icu4j/main/classes/charset/src/com/ibm/icu/charset/UTF8.java
index 6dc39f4..0ca3e38 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/UTF8.java
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/UTF8.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.charset;
 
 /**
diff --git a/icu4j/main/classes/charset/src/com/ibm/icu/charset/package.html b/icu4j/main/classes/charset/src/com/ibm/icu/charset/package.html
index 3063faf..3cced1f 100644
--- a/icu4j/main/classes/charset/src/com/ibm/icu/charset/package.html
+++ b/icu4j/main/classes/charset/src/com/ibm/icu/charset/package.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--  Copyright (C) 2016 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--  Copyright (C) 2006, International Business Machines Corporation and
   others. All Rights Reserved.
diff --git a/icu4j/main/classes/collate/.settings/org.eclipse.jdt.ui.prefs b/icu4j/main/classes/collate/.settings/org.eclipse.jdt.ui.prefs
index 3680fab..d733db1 100644
--- a/icu4j/main/classes/collate/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/main/classes/collate/.settings/org.eclipse.jdt.ui.prefs
@@ -7,7 +7,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/main/classes/collate/build.xml b/icu4j/main/classes/collate/build.xml
index e91df50..611b2b2 100644
--- a/icu4j/main/classes/collate/build.xml
+++ b/icu4j/main/classes/collate/build.xml
@@ -1,6 +1,6 @@
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *******************************************************************************
 * Copyright (C) 2009-2015, International Business Machines Corporation and
 * others. All Rights Reserved.
diff --git a/icu4j/main/classes/collate/findbugs-exclude.xml b/icu4j/main/classes/collate/findbugs-exclude.xml
index b01c3cb..d562350 100644
--- a/icu4j/main/classes/collate/findbugs-exclude.xml
+++ b/icu4j/main/classes/collate/findbugs-exclude.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *******************************************************************************
 * Copyright (C) 2013, International Business Machines Corporation and         *
 * others. All Rights Reserved.                                                *
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/BOCSU.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/BOCSU.java
index cc99ee9..0bbf47e 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/BOCSU.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/BOCSU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2014, International Business Machines Corporation and
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/Collation.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/Collation.java
index 3546862..0ae987c 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/Collation.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/Collation.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2010-2015, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationBuilder.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationBuilder.java
index abc7109..820b387 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationBuilder.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2015, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationCompare.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationCompare.java
index 5bad642..aee1171 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationCompare.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationCompare.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationData.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationData.java
index b846b07..d29509b 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationData.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2010-2015, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationDataBuilder.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationDataBuilder.java
index d29512a..9f424ff 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationDataBuilder.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationDataBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2012-2015, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationDataReader.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationDataReader.java
index d4c41d7..9323ec1 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationDataReader.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationDataReader.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2015, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationFCD.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationFCD.java
index 59381be..a786199 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationFCD.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationFCD.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2012-2016, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationFastLatin.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationFastLatin.java
index 1c5033e..441e900 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationFastLatin.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationFastLatin.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2015, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationFastLatinBuilder.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationFastLatinBuilder.java
index 08642f0..7f2f9e2 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationFastLatinBuilder.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationFastLatinBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2015, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationIterator.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationIterator.java
index 91051fe..d82d383 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationIterator.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2010-2014, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationKeys.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationKeys.java
index ea833d9..d553394 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationKeys.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationKeys.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012-2015, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationLoader.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationLoader.java
index f3b3430..c5259e3 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationLoader.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationLoader.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationRoot.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationRoot.java
index 645c1f3..4b1519e 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationRoot.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationRoot.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2012-2014, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationRootElements.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationRootElements.java
index d804fb6..a25b13a 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationRootElements.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationRootElements.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2014, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationRuleParser.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationRuleParser.java
index 5a3bcb2..9696c37 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationRuleParser.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationRuleParser.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2015, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationSettings.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationSettings.java
index 4f7f40a..f2f9b85 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationSettings.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationSettings.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2015, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationTailoring.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationTailoring.java
index 303ff2d..0879e7a 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationTailoring.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationTailoring.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2015, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationWeights.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationWeights.java
index 1a4ddd3..2d4a977 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationWeights.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/CollationWeights.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/ContractionsAndExpansions.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/ContractionsAndExpansions.java
index bd0e817..64124a2 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/ContractionsAndExpansions.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/ContractionsAndExpansions.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2014, International Business Machines
@@ -303,4 +303,4 @@
     private void resetPrefix() {
         unreversedPrefix.setLength(0);
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/FCDIterCollationIterator.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/FCDIterCollationIterator.java
index 95024b9..e336df3 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/FCDIterCollationIterator.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/FCDIterCollationIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2012-2014, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/FCDUTF16CollationIterator.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/FCDUTF16CollationIterator.java
index 9463ef2..c096ca8 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/FCDUTF16CollationIterator.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/FCDUTF16CollationIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2010-2014, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/IterCollationIterator.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/IterCollationIterator.java
index 6a23647..45449a5 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/IterCollationIterator.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/IterCollationIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2012-2014, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/SharedObject.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/SharedObject.java
index 234e108..6b7f1db 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/SharedObject.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/SharedObject.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2014, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/TailoredSet.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/TailoredSet.java
index 26ce864..b168795 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/TailoredSet.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/TailoredSet.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2013-2014, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/UTF16CollationIterator.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/UTF16CollationIterator.java
index 02dae66..a8d1ff9 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/UTF16CollationIterator.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/UTF16CollationIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2010-2014, International Business Machines
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/UVector32.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/UVector32.java
index ff617e1..6b6a144 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/UVector32.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/UVector32.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/UVector64.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/UVector64.java
index 3d4e3e4..aa732b0 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/UVector64.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/coll/UVector64.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/impl/text/RbnfScannerProviderImpl.java b/icu4j/main/classes/collate/src/com/ibm/icu/impl/text/RbnfScannerProviderImpl.java
index 46f452b..129af4f 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/impl/text/RbnfScannerProviderImpl.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/impl/text/RbnfScannerProviderImpl.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2009-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/text/AlphabeticIndex.java b/icu4j/main/classes/collate/src/com/ibm/icu/text/AlphabeticIndex.java
index 3dbe3c0..ad2e3cd 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/text/AlphabeticIndex.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/text/AlphabeticIndex.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2016, Google Inc, International Business Machines Corporation
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/text/CollationElementIterator.java b/icu4j/main/classes/collate/src/com/ibm/icu/text/CollationElementIterator.java
index 5a3dba2..021e0c6 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/text/CollationElementIterator.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/text/CollationElementIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2016, International Business Machines Corporation and
@@ -55,7 +55,7 @@
  * can not be compared simply by using basic arithmetic operators,
  * e.g. &lt;, == or &gt;, further processing has to be done. Details
  * can be found in the ICU
- * <a href="http://userguide.icu-project.org/collation/architecture">
+ * <a href="https://unicode-org.github.io/icu/userguide/collation/architecture">
  * User Guide</a>. An example of using the CollationElementIterator
  * for collation ordering comparison is the class
  * {@link com.ibm.icu.text.StringSearch}.
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/text/CollationKey.java b/icu4j/main/classes/collate/src/com/ibm/icu/text/CollationKey.java
index ca5c925..203706a 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/text/CollationKey.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/text/CollationKey.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2016, International Business Machines Corporation and
@@ -491,7 +491,7 @@
      * Using strings with U+FFFE may yield shorter sort keys.
      *
      * <p>For details about Sort Key Features see
-     * http://userguide.icu-project.org/collation/api#TOC-Sort-Key-Features
+     * https://unicode-org.github.io/icu/userguide/collation/api#sort-key-features
      *
      * <p>It is possible to merge multiple sort keys by consecutively merging
      * another one with the intermediate result.
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/text/Collator.java b/icu4j/main/classes/collate/src/com/ibm/icu/text/Collator.java
index c2da6c5..47d4994 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/text/Collator.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/text/Collator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2016, International Business Machines Corporation and
@@ -64,7 +64,7 @@
 *     difference between large and small Kana. A tertiary difference is ignored
 *     when there is a primary or secondary difference anywhere in the strings.
 * <li>QUATERNARY strength: When punctuation is ignored
-*     (see <a href="http://userguide.icu-project.org/collation/concepts#TOC-Ignoring-Punctuation">
+*     (see <a href="https://unicode-org.github.io/icu/userguide/collation/concepts#ignoring-punctuation">
 *     Ignoring Punctuations in the User Guide</a>) at PRIMARY to TERTIARY
 *     strength, an additional strength level can
 *     be used to distinguish words with and without punctuation (for example,
@@ -95,7 +95,7 @@
 * a comparison or before getting a CollationKey.
 *
 * <p>For more information about the collation service see the
-* <a href="http://userguide.icu-project.org/collation">User Guide</a>.
+* <a href="https://unicode-org.github.io/icu/userguide/collation">User Guide</a>.
 *
 * <p>Examples of use
 * <pre>
@@ -172,7 +172,7 @@
     /**
      * {@icu} Fourth level collator strength value.
      * When punctuation is ignored
-     * (see <a href="http://userguide.icu-project.org/collation/concepts#TOC-Ignoring-Punctuation">
+     * (see <a href="https://unicode-org.github.io/icu/userguide/collation/concepts#ignoring-punctuation">
      * Ignoring Punctuation in the User Guide</a>) at PRIMARY to TERTIARY
      * strength, an additional strength level can
      * be used to distinguish words with and without punctuation.
@@ -807,7 +807,7 @@
      * Starting with ICU 54, collation attributes can be specified via locale keywords as well,
      * in the old locale extension syntax ("el@colCaseFirst=upper")
      * or in language tag syntax ("el-u-kf-upper").
-     * See <a href="http://userguide.icu-project.org/collation/api">User Guide: Collation API</a>.
+     * See <a href="https://unicode-org.github.io/icu/userguide/collation/api">User Guide: Collation API</a>.
      *
      * @param locale the desired locale.
      * @return Collator for the desired locale if it is created successfully.
@@ -841,7 +841,7 @@
      * Starting with ICU 54, collation attributes can be specified via locale keywords as well,
      * in the old locale extension syntax ("el@colCaseFirst=upper", only with {@link ULocale})
      * or in language tag syntax ("el-u-kf-upper").
-     * See <a href="http://userguide.icu-project.org/collation/api">User Guide: Collation API</a>.
+     * See <a href="https://unicode-org.github.io/icu/userguide/collation/api">User Guide: Collation API</a>.
      *
      * @param locale the desired locale.
      * @return Collator for the desired locale if it is created successfully.
@@ -1056,7 +1056,7 @@
      * applications who wish to cache collators, or otherwise reuse
      * collators when possible.  The functional equivalent may change
      * over time.  For more information, please see the <a
-     * href="http://userguide.icu-project.org/locale#TOC-Locales-and-Services">
+     * href="https://unicode-org.github.io/icu/userguide/locale#locales-and-services">
      * Locales and Services</a> section of the ICU User Guide.
      * @param keyword a particular keyword as enumerated by
      * getKeywords.
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/text/CollatorServiceShim.java b/icu4j/main/classes/collate/src/com/ibm/icu/text/CollatorServiceShim.java
index 6ae0e4f..a8e0a94 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/text/CollatorServiceShim.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/text/CollatorServiceShim.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2003-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/text/RawCollationKey.java b/icu4j/main/classes/collate/src/com/ibm/icu/text/RawCollationKey.java
index e1db856..79f2fd6 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/text/RawCollationKey.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/text/RawCollationKey.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/text/RuleBasedCollator.java b/icu4j/main/classes/collate/src/com/ibm/icu/text/RuleBasedCollator.java
index 846c2e0..a8c0033 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/text/RuleBasedCollator.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/text/RuleBasedCollator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
@@ -50,7 +50,7 @@
  * <p>A Collator is thread-safe only when frozen. See {{@link #isFrozen()} and {@link com.ibm.icu.util.Freezable}.
  *
  * <p>
- * Users are strongly encouraged to read the <a href="http://userguide.icu-project.org/collation">User
+ * Users are strongly encouraged to read the <a href="https://unicode-org.github.io/icu/userguide/collation">User
  * Guide</a> for more information about the collation service before using this class.
  *
  * <p>
@@ -67,8 +67,8 @@
  *
  * <p>
  * For information about the collation rule syntax and details about customization, please refer to the <a
- * href="http://userguide.icu-project.org/collation/customization">Collation customization</a> section of the
- * User Guide.
+ * href="https://unicode-org.github.io/icu/userguide/collation/customization">Collation customization</a>
+ * section of the User Guide.
  *
  * <p>
  * <strong>Note</strong> that there are some differences between the Collation rule syntax used in Java and ICU4J:
@@ -193,7 +193,7 @@
      * The collator will be based on the CLDR root collation, with the
      * attributes and re-ordering of the characters specified in the argument rules.
      * <p>
-     * See the User Guide's section on <a href="http://userguide.icu-project.org/collation/customization">
+     * See the User Guide's section on <a href="https://unicode-org.github.io/icu/userguide/collation/customization">
      * Collation Customization</a> for details on the rule syntax.
      *
      * @param rules
@@ -570,7 +570,7 @@
     /**
      * Sets the mode for the direction of SECONDARY weights to be used in French collation. The default value is false,
      * which treats SECONDARY weights in the order they appear. If set to true, the SECONDARY weights will be sorted
-     * backwards. See the section on <a href="http://userguide.icu-project.org/collation/architecture">
+     * backwards. See the section on <a href="https://unicode-org.github.io/icu/userguide/collation/architecture">
      * French collation</a> for more information.
      *
      * @param flag
@@ -619,7 +619,7 @@
      * first mode. A simple way to ignore accent differences in a string is to set the strength to PRIMARY and enable
      * case level.
      * <p>
-     * See the section on <a href="http://userguide.icu-project.org/collation/architecture">case
+     * See the section on <a href="https://unicode-org.github.io/icu/userguide/collation/architecture">case
      * level</a> for more information.
      *
      * @param flag
@@ -963,7 +963,7 @@
      *
      * <p>The root collation rules are an <i>approximation</i> of the root collator's sort order.
      * They are almost never used or useful at runtime and can be removed from the data.
-     * See <a href="http://userguide.icu-project.org/collation/customization#TOC-Building-on-Existing-Locales">User Guide:
+     * See <a href="https://unicode-org.github.io/icu/userguide/collation/customization#building-on-existing-locales">User Guide:
      * Collation Customization, Building on Existing Locales</a>
      *
      * <p>{@link #getRules()} should normally be used instead.
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/text/SearchIterator.java b/icu4j/main/classes/collate/src/com/ibm/icu/text/SearchIterator.java
index 2a22b2c..cd67af6 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/text/SearchIterator.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/text/SearchIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/text/StringSearch.java b/icu4j/main/classes/collate/src/com/ibm/icu/text/StringSearch.java
index 4744163..dad2252 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/text/StringSearch.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/text/StringSearch.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/collate/src/com/ibm/icu/util/GlobalizationPreferences.java b/icu4j/main/classes/collate/src/com/ibm/icu/util/GlobalizationPreferences.java
index 5c3699c..ef681b9 100644
--- a/icu4j/main/classes/collate/src/com/ibm/icu/util/GlobalizationPreferences.java
+++ b/icu4j/main/classes/collate/src/com/ibm/icu/util/GlobalizationPreferences.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2014, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/.settings/org.eclipse.jdt.ui.prefs b/icu4j/main/classes/core/.settings/org.eclipse.jdt.ui.prefs
index 3680fab..d733db1 100644
--- a/icu4j/main/classes/core/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/main/classes/core/.settings/org.eclipse.jdt.ui.prefs
@@ -7,7 +7,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/main/classes/core/build.xml b/icu4j/main/classes/core/build.xml
index 6583840..627215e 100644
--- a/icu4j/main/classes/core/build.xml
+++ b/icu4j/main/classes/core/build.xml
@@ -1,6 +1,6 @@
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *******************************************************************************
 * Copyright (C) 2009-2015, International Business Machines Corporation and
 * others. All Rights Reserved.
diff --git a/icu4j/main/classes/core/findbugs-exclude.xml b/icu4j/main/classes/core/findbugs-exclude.xml
index 91aa3de..104d1cc 100644
--- a/icu4j/main/classes/core/findbugs-exclude.xml
+++ b/icu4j/main/classes/core/findbugs-exclude.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *******************************************************************************
 * Copyright (C) 2013, International Business Machines Corporation and         *
 * others. All Rights Reserved.                                                *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/ICUConfig.properties b/icu4j/main/classes/core/src/com/ibm/icu/ICUConfig.properties
index 917b66e..bc56ef6 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/ICUConfig.properties
+++ b/icu4j/main/classes/core/src/com/ibm/icu/ICUConfig.properties
@@ -1,7 +1,7 @@
 #*
 #*******************************************************************************
 # Copyright (C) 2016 and later: Unicode, Inc. and others.                      *
-# License & terms of use: http://www.unicode.org/copyright.html#License        *
+# License & terms of use: http://www.unicode.org/copyright.html        *
 #*******************************************************************************
 #*******************************************************************************
 #* Copyright (C) 2008-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/Assert.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/Assert.java
index d419cda..761309f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/Assert.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/Assert.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2005-2006, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/BMPSet.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/BMPSet.java
index 038477d..c78c1b0 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/BMPSet.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/BMPSet.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/CSCharacterIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/CSCharacterIterator.java
index 4de2889..2ff1839 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/CSCharacterIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/CSCharacterIterator.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl;
 
 import java.text.CharacterIterator;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/CacheBase.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/CacheBase.java
index a003f84..10ba217 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/CacheBase.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/CacheBase.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2010, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/CacheValue.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/CacheValue.java
index cf655fc..750dd42 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/CacheValue.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/CacheValue.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/CalType.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/CalType.java
index ad9c3bb..11ea350 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/CalType.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/CalType.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl;
 
 /**
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/CalendarAstronomer.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/CalendarAstronomer.java
index fdcaf20..9aeb437 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/CalendarAstronomer.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/CalendarAstronomer.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/CalendarCache.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/CalendarCache.java
index d401bad..3232ba3 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/CalendarCache.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/CalendarCache.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/CalendarUtil.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/CalendarUtil.java
index 83da8ce..bf751ee 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/CalendarUtil.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/CalendarUtil.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009,2016 International Business Machines Corporation and
@@ -46,7 +46,7 @@
             return calType.toLowerCase(Locale.ROOT);
         }
 
-        // Canonicalize, so grandfathered variant will be transformed to keywords
+        // Canonicalize, so that an old-style variant will be transformed to keywords.
         ULocale canonical = ULocale.createCanonical(loc.toString());
         calType = canonical.getKeywordValue(CALKEY);
         if (calType != null) {
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/CaseMapImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/CaseMapImpl.java
index bdd3073..bd963be 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/CaseMapImpl.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/CaseMapImpl.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl;
 
 import java.io.IOException;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/CharTrie.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/CharTrie.java
index 688b620..6a73849 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/CharTrie.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/CharTrie.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/CharacterIteration.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/CharacterIteration.java
index a26b81a..15cd3e3 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/CharacterIteration.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/CharacterIteration.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/CharacterIteratorWrapper.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/CharacterIteratorWrapper.java
index d657f77..63cc35b 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/CharacterIteratorWrapper.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/CharacterIteratorWrapper.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/CharacterPropertiesImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/CharacterPropertiesImpl.java
index 44b01a5..de2ce34 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/CharacterPropertiesImpl.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/CharacterPropertiesImpl.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl;
 
 import com.ibm.icu.lang.UCharacter;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ClassLoaderUtil.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ClassLoaderUtil.java
index e7389a1..327f4ef 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ClassLoaderUtil.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ClassLoaderUtil.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/CollectionSet.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/CollectionSet.java
index 0956619..e13d02d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/CollectionSet.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/CollectionSet.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl;
 
 import java.util.Collection;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/CurrencyData.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/CurrencyData.java
index 49f1a50..bdb6dc5 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/CurrencyData.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/CurrencyData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/DateNumberFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/DateNumberFormat.java
index 2baa018..9271d22 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/DateNumberFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/DateNumberFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2007-2016, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/DayPeriodRules.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/DayPeriodRules.java
index 8eec592..7374f13 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/DayPeriodRules.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/DayPeriodRules.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/DontCareFieldPosition.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/DontCareFieldPosition.java
index 3ec92e0..275f9c7 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/DontCareFieldPosition.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/DontCareFieldPosition.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2013-2014, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/EraRules.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/EraRules.java
index 36835bd..373f18e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/EraRules.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/EraRules.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl;
 
 import java.util.Arrays;
@@ -312,4 +312,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/FormattedStringBuilder.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/FormattedStringBuilder.java
index 2249ceb..48f048c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/FormattedStringBuilder.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/FormattedStringBuilder.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl;
 
 import java.util.Arrays;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/FormattedValueFieldPositionIteratorImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/FormattedValueFieldPositionIteratorImpl.java
index de87c5b..0858ee7 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/FormattedValueFieldPositionIteratorImpl.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/FormattedValueFieldPositionIteratorImpl.java
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl;
 
 import java.text.AttributedCharacterIterator;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/FormattedValueStringBuilderImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/FormattedValueStringBuilderImpl.java
index 6be209c..43f0c4d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/FormattedValueStringBuilderImpl.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/FormattedValueStringBuilderImpl.java
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl;
 
 import java.text.AttributedCharacterIterator;
@@ -227,6 +227,12 @@
         }
 
         assert currField == null;
+        // Always set the position to the end so that we don't revisit previous sections
+        cfpos.setState(
+            cfpos.getField(),
+            cfpos.getFieldValue(),
+            self.length,
+            self.length);
         return false;
     }
 
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/Grego.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/Grego.java
index 774c5d0..e10e49e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/Grego.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/Grego.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2003-2014, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUBinary.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUBinary.java
index fcc5248..bd4e8de 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUBinary.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUBinary.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUCache.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUCache.java
index 8161559..574e6d4 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUCache.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUCache.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ***************************************************************************
  * Copyright (c) 2007-2009 International Business Machines Corporation and *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUConfig.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUConfig.java
index 2989e85..61018c3 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUConfig.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUConfig.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUData.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUData.java
index cf20dbf..7db97bb 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUData.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2014, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUDataVersion.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUDataVersion.java
index 473f30d..d0fd633 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUDataVersion.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUDataVersion.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2009-2016, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUDebug.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUDebug.java
index 641b6b5..e5fdfab 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUDebug.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUDebug.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICULocaleService.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICULocaleService.java
index 9f9ba53..f4d53fe 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICULocaleService.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICULocaleService.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUNotifier.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUNotifier.java
index 59fe345..12b4261 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUNotifier.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUNotifier.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2009, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICURWLock.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICURWLock.java
index 6cc93a5..52ef743 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICURWLock.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICURWLock.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2013, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundle.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundle.java
index 74521e7..9494c1d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundle.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundle.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * *****************************************************************************
  * Copyright (C) 2005-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundleImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundleImpl.java
index a5cbe26..0c7a36a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundleImpl.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundleImpl.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundleReader.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundleReader.java
index 564d60c..746b1d9 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundleReader.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundleReader.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceTableAccess.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceTableAccess.java
index a69b3b4..2c84d99 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceTableAccess.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceTableAccess.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUService.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUService.java
index 4db16b3..6f0de5d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUService.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUService.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/IDNA2003.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/IDNA2003.java
index 12ba5a9..aac0b23 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/IDNA2003.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/IDNA2003.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2003-2010, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/IllegalIcuArgumentException.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/IllegalIcuArgumentException.java
index b9902a6..4753c54 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/IllegalIcuArgumentException.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/IllegalIcuArgumentException.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009, Google, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/IntTrie.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/IntTrie.java
index ca45ded..598b6a8 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/IntTrie.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/IntTrie.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/IntTrieBuilder.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/IntTrieBuilder.java
index 15941a2..9f4d07d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/IntTrieBuilder.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/IntTrieBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 1996-2010, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/InvalidFormatException.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/InvalidFormatException.java
index 6ee6e16..b60b589 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/InvalidFormatException.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/InvalidFormatException.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2006-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/IterableComparator.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/IterableComparator.java
index 38c1983..1b74a84 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/IterableComparator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/IterableComparator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ************************************************************************************
  * Copyright (C) 2007-2015, Google Inc, International Business Machines Corporation
@@ -65,4 +65,4 @@
 
     @SuppressWarnings("rawtypes")
     private static final IterableComparator NOCOMPARATOR = new IterableComparator();
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/JavaTimeZone.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/JavaTimeZone.java
index e71e31f..23c6bb8 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/JavaTimeZone.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/JavaTimeZone.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleDisplayNamesImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleDisplayNamesImpl.java
index 60ba36f..cd56d4b 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleDisplayNamesImpl.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleDisplayNamesImpl.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleIDParser.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleIDParser.java
index 3d1144f..e97ccc7 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleIDParser.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleIDParser.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2003-2011, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleIDs.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleIDs.java
index 1baf213..290fa6c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleIDs.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleIDs.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2013, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleUtility.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleUtility.java
index 3fe28bf..80104d4 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleUtility.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleUtility.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 1996-2007, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/Norm2AllModes.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/Norm2AllModes.java
index 8ae6ca9..4241d8d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/Norm2AllModes.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/Norm2AllModes.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  *   Copyright (C) 2009-2016, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/Normalizer2Impl.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/Normalizer2Impl.java
index 1f9a8a3..ea6c204 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/Normalizer2Impl.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/Normalizer2Impl.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  *   Copyright (C) 2009-2015, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/OlsonTimeZone.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/OlsonTimeZone.java
index aaa8086..0d315b1 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/OlsonTimeZone.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/OlsonTimeZone.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
  /*
   *******************************************************************************
   * Copyright (C) 2005-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/PVecToTrieCompactHandler.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/PVecToTrieCompactHandler.java
index 1050c00..60ada04 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/PVecToTrieCompactHandler.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/PVecToTrieCompactHandler.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 1996-2009, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/Pair.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/Pair.java
index 882f7c2..2356d04 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/Pair.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/Pair.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/PatternProps.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/PatternProps.java
index 50aa5e8..fd142a3 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/PatternProps.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/PatternProps.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/PatternTokenizer.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/PatternTokenizer.java
index 849cb74..d897031 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/PatternTokenizer.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/PatternTokenizer.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2006-2009, Google, International Business Machines Corporation *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/PluralRulesLoader.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/PluralRulesLoader.java
index e94d455..e4d073a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/PluralRulesLoader.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/PluralRulesLoader.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2016, International Business Machines Corporation and
@@ -18,7 +18,7 @@
 import java.util.Set;
 import java.util.TreeMap;
 
-import com.ibm.icu.text.PluralRanges;
+import com.ibm.icu.impl.number.range.StandardPluralRanges;
 import com.ibm.icu.text.PluralRules;
 import com.ibm.icu.text.PluralRules.PluralType;
 import com.ibm.icu.util.ULocale;
@@ -28,19 +28,19 @@
  * Loader for plural rules data.
  */
 public class PluralRulesLoader extends PluralRules.Factory {
-    private final Map<String, PluralRules> rulesIdToRules;
+    // Key is rules set + ranges set
+    private final Map<String, PluralRules> pluralRulesCache;
     // lazy init, use getLocaleIdToRulesIdMap to access
     private Map<String, String> localeIdToCardinalRulesId;
     private Map<String, String> localeIdToOrdinalRulesId;
     private Map<String, ULocale> rulesIdToEquivalentULocale;
-    private static Map<String, PluralRanges> localeIdToPluralRanges;
 
 
     /**
      * Access through singleton.
      */
     private PluralRulesLoader() {
-        rulesIdToRules = new HashMap<String, PluralRules>();
+        pluralRulesCache = new HashMap<String, PluralRules>();
     }
 
     /**
@@ -179,14 +179,20 @@
      * Gets the rule from the rulesId. If there is no rule for this rulesId,
      * return null.
      */
-    public PluralRules getRulesForRulesId(String rulesId) {
+    public PluralRules getOrCreateRulesForLocale(ULocale locale, PluralRules.PluralType type) {
+        String rulesId = getRulesIdForLocale(locale, type);
+        if (rulesId == null || rulesId.trim().length() == 0) {
+            return null;
+        }
+        String rangesId = StandardPluralRanges.getSetForLocale(locale);
+        String cacheKey = rulesId + "/" + rangesId; // could end with "/null" (this is OK)
         // synchronize on the map.  release the lock temporarily while we build the rules.
         PluralRules rules = null;
         boolean hasRules;  // Separate boolean because stored rules can be null.
-        synchronized (rulesIdToRules) {
-            hasRules = rulesIdToRules.containsKey(rulesId);
+        synchronized (pluralRulesCache) {
+            hasRules = pluralRulesCache.containsKey(cacheKey);
             if (hasRules) {
-                rules = rulesIdToRules.get(rulesId);  // can be null
+                rules = pluralRulesCache.get(cacheKey);  // can be null
             }
         }
         if (!hasRules) {
@@ -205,15 +211,16 @@
                     sb.append(": ");
                     sb.append(b.getString());
                 }
-                rules = PluralRules.parseDescription(sb.toString());
+                StandardPluralRanges ranges = StandardPluralRanges.forSet(rangesId);
+                rules = PluralRules.newInternal(sb.toString(), ranges);
             } catch (ParseException e) {
             } catch (MissingResourceException e) {
             }
-            synchronized (rulesIdToRules) {
-                if (rulesIdToRules.containsKey(rulesId)) {
-                    rules = rulesIdToRules.get(rulesId);
+            synchronized (pluralRulesCache) {
+                if (pluralRulesCache.containsKey(cacheKey)) {
+                    rules = pluralRulesCache.get(cacheKey);
                 } else {
-                    rulesIdToRules.put(rulesId, rules);  // can be null
+                    pluralRulesCache.put(cacheKey, rules);  // can be null
                 }
             }
         }
@@ -235,11 +242,7 @@
      * com.ibm.icu.text.PluralRules.DEFAULT is returned.
      */
     public PluralRules forLocale(ULocale locale, PluralRules.PluralType type) {
-        String rulesId = getRulesIdForLocale(locale, type);
-        if (rulesId == null || rulesId.trim().length() == 0) {
-            return PluralRules.DEFAULT;
-        }
-        PluralRules rules = getRulesForRulesId(rulesId);
+        PluralRules rules = getOrCreateRulesForLocale(locale, type);
         if (rules == null) {
             rules = PluralRules.DEFAULT;
         }
@@ -258,245 +261,4 @@
     public boolean hasOverride(ULocale locale) {
         return false;
     }
-    
-    private static final PluralRanges UNKNOWN_RANGE = new PluralRanges().freeze();
-
-    public PluralRanges getPluralRanges(ULocale locale) {
-        // TODO markdavis Fix the bad fallback, here and elsewhere in this file.
-        String localeId = ULocale.canonicalize(locale.getBaseName());
-        PluralRanges result;
-        while (null == (result = localeIdToPluralRanges.get(localeId))) {
-            int ix = localeId.lastIndexOf("_");
-            if (ix == -1) {
-                result = UNKNOWN_RANGE;
-                break;
-            }
-            localeId = localeId.substring(0, ix);
-        }
-        return result;
-    }
-
-    public boolean isPluralRangesAvailable(ULocale locale) {
-        return getPluralRanges(locale) == UNKNOWN_RANGE;
-    }
-
-    // TODO markdavis FIX HARD-CODED HACK once we have data from CLDR in the bundles
-    static {
-        String[][] pluralRangeData = {
-                {"locales", "id ja km ko lo ms my th vi zh"},
-                {"other", "other", "other"},
-
-                {"locales", "am bn fr gu hi hy kn mr pa zu"},
-                {"one", "one", "one"},
-                {"one", "other", "other"},
-                {"other", "other", "other"},
-
-                {"locales", "fa"},
-                {"one", "one", "other"},
-                {"one", "other", "other"},
-                {"other", "other", "other"},
-
-                {"locales", "ka"},
-                {"one", "other", "one"},
-                {"other", "one", "other"},
-                {"other", "other", "other"},
-
-                {"locales", "az de el gl hu it kk ky ml mn ne nl pt sq sw ta te tr ug uz"},
-                {"one", "other", "other"},
-                {"other", "one", "one"},
-                {"other", "other", "other"},
-
-                {"locales", "af bg ca en es et eu fi nb sv ur"},
-                {"one", "other", "other"},
-                {"other", "one", "other"},
-                {"other", "other", "other"},
-
-                {"locales", "da fil is"},
-                {"one", "one", "one"},
-                {"one", "other", "other"},
-                {"other", "one", "one"},
-                {"other", "other", "other"},
-
-                {"locales", "si"},
-                {"one", "one", "one"},
-                {"one", "other", "other"},
-                {"other", "one", "other"},
-                {"other", "other", "other"},
-
-                {"locales", "mk"},
-                {"one", "one", "other"},
-                {"one", "other", "other"},
-                {"other", "one", "other"},
-                {"other", "other", "other"},
-
-                {"locales", "lv"},
-                {"zero", "zero", "other"},
-                {"zero", "one", "one"},
-                {"zero", "other", "other"},
-                {"one", "zero", "other"},
-                {"one", "one", "one"},
-                {"one", "other", "other"},
-                {"other", "zero", "other"},
-                {"other", "one", "one"},
-                {"other", "other", "other"},
-
-                {"locales", "ro"},
-                {"one", "few", "few"},
-                {"one", "other", "other"},
-                {"few", "one", "few"},
-                {"few", "few", "few"},
-                {"few", "other", "other"},
-                {"other", "few", "few"},
-                {"other", "other", "other"},
-
-                {"locales", "hr sr bs"},
-                {"one", "one", "one"},
-                {"one", "few", "few"},
-                {"one", "other", "other"},
-                {"few", "one", "one"},
-                {"few", "few", "few"},
-                {"few", "other", "other"},
-                {"other", "one", "one"},
-                {"other", "few", "few"},
-                {"other", "other", "other"},
-
-                {"locales", "sl"},
-                {"one", "one", "few"},
-                {"one", "two", "two"},
-                {"one", "few", "few"},
-                {"one", "other", "other"},
-                {"two", "one", "few"},
-                {"two", "two", "two"},
-                {"two", "few", "few"},
-                {"two", "other", "other"},
-                {"few", "one", "few"},
-                {"few", "two", "two"},
-                {"few", "few", "few"},
-                {"few", "other", "other"},
-                {"other", "one", "few"},
-                {"other", "two", "two"},
-                {"other", "few", "few"},
-                {"other", "other", "other"},
-
-                {"locales", "he"},
-                {"one", "two", "other"},
-                {"one", "many", "many"},
-                {"one", "other", "other"},
-                {"two", "many", "other"},
-                {"two", "other", "other"},
-                {"many", "many", "many"},
-                {"many", "other", "many"},
-                {"other", "one", "other"},
-                {"other", "two", "other"},
-                {"other", "many", "many"},
-                {"other", "other", "other"},
-
-                {"locales", "cs pl sk"},
-                {"one", "few", "few"},
-                {"one", "many", "many"},
-                {"one", "other", "other"},
-                {"few", "few", "few"},
-                {"few", "many", "many"},
-                {"few", "other", "other"},
-                {"many", "one", "one"},
-                {"many", "few", "few"},
-                {"many", "many", "many"},
-                {"many", "other", "other"},
-                {"other", "one", "one"},
-                {"other", "few", "few"},
-                {"other", "many", "many"},
-                {"other", "other", "other"},
-
-                {"locales", "lt ru uk"},
-                {"one", "one", "one"},
-                {"one", "few", "few"},
-                {"one", "many", "many"},
-                {"one", "other", "other"},
-                {"few", "one", "one"},
-                {"few", "few", "few"},
-                {"few", "many", "many"},
-                {"few", "other", "other"},
-                {"many", "one", "one"},
-                {"many", "few", "few"},
-                {"many", "many", "many"},
-                {"many", "other", "other"},
-                {"other", "one", "one"},
-                {"other", "few", "few"},
-                {"other", "many", "many"},
-                {"other", "other", "other"},
-
-                {"locales", "cy"},
-                {"zero", "one", "one"},
-                {"zero", "two", "two"},
-                {"zero", "few", "few"},
-                {"zero", "many", "many"},
-                {"zero", "other", "other"},
-                {"one", "two", "two"},
-                {"one", "few", "few"},
-                {"one", "many", "many"},
-                {"one", "other", "other"},
-                {"two", "few", "few"},
-                {"two", "many", "many"},
-                {"two", "other", "other"},
-                {"few", "many", "many"},
-                {"few", "other", "other"},
-                {"many", "other", "other"},
-                {"other", "one", "one"},
-                {"other", "two", "two"},
-                {"other", "few", "few"},
-                {"other", "many", "many"},
-                {"other", "other", "other"},
-
-                {"locales", "ar"},
-                {"zero", "one", "zero"},
-                {"zero", "two", "zero"},
-                {"zero", "few", "few"},
-                {"zero", "many", "many"},
-                {"zero", "other", "other"},
-                {"one", "two", "other"},
-                {"one", "few", "few"},
-                {"one", "many", "many"},
-                {"one", "other", "other"},
-                {"two", "few", "few"},
-                {"two", "many", "many"},
-                {"two", "other", "other"},
-                {"few", "few", "few"},
-                {"few", "many", "many"},
-                {"few", "other", "other"},
-                {"many", "few", "few"},
-                {"many", "many", "many"},
-                {"many", "other", "other"},
-                {"other", "one", "other"},
-                {"other", "two", "other"},
-                {"other", "few", "few"},
-                {"other", "many", "many"},
-                {"other", "other", "other"},     
-        };
-        PluralRanges pr = null;
-        String[] locales = null;
-        HashMap<String, PluralRanges> tempLocaleIdToPluralRanges = new HashMap<String, PluralRanges>();
-        for (String[] row : pluralRangeData) {
-            if (row[0].equals("locales")) {
-                if (pr != null) {
-                    pr.freeze();
-                    for (String locale : locales) {
-                        tempLocaleIdToPluralRanges.put(locale, pr);
-                    }
-                }
-                locales = row[1].split(" ");
-                pr = new PluralRanges();
-            } else {
-                pr.add(
-                        StandardPlural.fromString(row[0]),
-                        StandardPlural.fromString(row[1]),
-                        StandardPlural.fromString(row[2]));
-            }
-        }
-        // do last one
-        for (String locale : locales) {
-            tempLocaleIdToPluralRanges.put(locale, pr);
-        }
-        // now make whole thing immutable
-        localeIdToPluralRanges = Collections.unmodifiableMap(tempLocaleIdToPluralRanges);
-    }
 }
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/PropsVectors.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/PropsVectors.java
index 0df6063..5d19ece 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/PropsVectors.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/PropsVectors.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 1996-2011, International Business Machines Corporation and   *
@@ -561,4 +561,4 @@
         public void setRowIndexForErrorValue(int rowIndex);
         public void startRealValues(int rowIndex);
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/Punycode.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/Punycode.java
index 5cdcdb8..9faf64c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/Punycode.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/Punycode.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2014, International Business Machines Corporation and
@@ -11,9 +11,10 @@
 import com.ibm.icu.lang.UCharacter;
 import com.ibm.icu.text.StringPrepParseException;
 import com.ibm.icu.text.UTF16;
+import com.ibm.icu.util.ICUInputTooLongException;
 
 /**
- * Ported code from ICU punycode.c 
+ * Ported code from ICU punycode.c
  * @author ram
  */
 public final class Punycode {
@@ -26,17 +27,17 @@
     private static final int DAMP           = 700;
     private static final int INITIAL_BIAS   = 72;
     private static final int INITIAL_N      = 0x80;
-    
+
     /* "Basic" Unicode/ASCII code points */
     private static final char HYPHEN        = 0x2d;
     private static final char DELIMITER     = HYPHEN;
-    
+
     private static final int ZERO           = 0x30;
     //private static final int NINE           = 0x39;
-    
+
     private static final int SMALL_A        = 0x61;
     private static final int SMALL_Z        = 0x7a;
-    
+
     private static final int CAPITAL_A      = 0x41;
     private static final int CAPITAL_Z      = 0x5a;
 
@@ -53,39 +54,30 @@
             delta/=(BASE-TMIN);
         }
 
-        return count+(((BASE-TMIN+1)*delta)/(delta+SKEW));         
+        return count+(((BASE-TMIN+1)*delta)/(delta+SKEW));
     }
 
     /**
-     * basicToDigit[] contains the numeric value of a basic code
-     * point (for use in representing integers) in the range 0 to
-     * BASE-1, or -1 if b is does not represent a value.
+     * @return the numeric value of a basic code point (for use in representing integers)
+     *         in the range 0 to BASE-1, or a negative value if cp is invalid.
      */
-    static final int[]    basicToDigit= new int[]{
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1,
-    
-        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
-        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-    
-        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
-        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-    
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
-    };
+    private static final int decodeDigit(int cp) {
+        if(cp<='Z') {
+            if(cp<='9') {
+                if(cp<'0') {
+                    return -1;
+                } else {
+                    return cp-'0'+26;  // 0..9 -> 26..35
+                }
+            } else {
+                return cp-'A';  // A-Z -> 0..25
+            }
+        } else if(cp<='z') {
+            return cp-'a';  // a..z -> 0..25
+        } else {
+            return -1;
+        }
+    }
 
     ///CLOVER:OFF
     private static char asciiCaseMap(char b, boolean uppercase) {
@@ -99,7 +91,7 @@
             }
         }
         return b;
-    }    
+    }
     ///CLOVER:ON
     /**
      * digitToBasic() returns the basic code point whose value
@@ -120,11 +112,17 @@
             return (char)((ZERO-26)+digit);
         }
     }
+
+    // ICU-13727: Limit input length for n^2 algorithm
+    // where well-formed strings are at most 59 characters long.
+    private static final int ENCODE_MAX_CODE_UNITS = 1000;
+    private static final int DECODE_MAX_CHARS = 2000;
+
     /**
      * Converts Unicode to Punycode.
      * The input string must not contain single, unpaired surrogates.
      * The output will be represented as an array of ASCII code points.
-     * 
+     *
      * @param src The source of the String Buffer passed.
      * @param caseFlags The boolean array of case flags.
      * @return An array of ASCII code points.
@@ -133,6 +131,10 @@
         int n, delta, handledCPCount, basicLength, bias, j, m, q, k, t, srcCPCount;
         char c, c2;
         int srcLength = src.length();
+        if (srcLength > ENCODE_MAX_CODE_UNITS) {
+            throw new ICUInputTooLongException(
+                    "input too long: " + srcLength + " UTF-16 code units");
+        }
         int[] cpBuffer = new int[srcLength];
         StringBuilder dest = new StringBuilder(srcLength);
         /*
@@ -140,7 +142,7 @@
          * convert extended ones to UTF-32 in cpBuffer (caseFlag in sign bit):
          */
         srcCPCount=0;
-        
+
         for(j=0; j<srcLength; ++j) {
             c=src.charAt(j);
             if(isBasic(c)) {
@@ -152,7 +154,7 @@
                     n|=c;
                 } else if(UTF16.isLeadSurrogate(c) && (j+1)<srcLength && UTF16.isTrailSurrogate(c2=src.charAt(j+1))) {
                     ++j;
-                    
+
                     n|=UCharacter.getCodePoint(c, c2);
                 } else {
                     /* error: unmatched surrogate */
@@ -196,7 +198,7 @@
              * Increase delta enough to advance the decoder's
              * <n,i> state to <m,0>, but guard against overflow:
              */
-            if(m-n>(0x7fffffff-delta)/(handledCPCount+1)) {
+            if(m-n>(0x7fffffff-handledCPCount-delta)/(handledCPCount+1)) {
                 throw new IllegalStateException("Internal program error");
             }
             delta+=(m-n)*(handledCPCount+1);
@@ -211,7 +213,7 @@
                     /* Represent delta as a generalized variable-length integer: */
                     for(q=delta, k=BASE; /* no condition */; k+=BASE) {
 
-                        /** RAM: comment out the old code for conformance with draft-ietf-idn-punycode-03.txt   
+                        /** RAM: comment out the old code for conformance with draft-ietf-idn-punycode-03.txt
 
                         t=k-bias;
                         if(t<TMIN) {
@@ -220,7 +222,7 @@
                             t=TMAX;
                         }
                         */
-                    
+
                         t=k-bias;
                         if(t<TMIN) {
                             t=TMIN;
@@ -249,7 +251,7 @@
 
         return dest;
     }
-    
+
     private static boolean isBasic(int ch){
         return (ch < INITIAL_N);
     }
@@ -264,14 +266,17 @@
     /**
      * Converts Punycode to Unicode.
      * The Unicode string will be at most as long as the Punycode string.
-     * 
+     *
      * @param src The source of the string buffer being passed.
      * @param caseFlags The array of boolean case flags.
      * @return StringBuilder string.
      */
-    public static StringBuilder decode(CharSequence src, boolean[] caseFlags) 
+    public static StringBuilder decode(CharSequence src, boolean[] caseFlags)
                                throws StringPrepParseException{
         int srcLength = src.length();
+        if (srcLength > DECODE_MAX_CHARS) {
+            throw new ICUInputTooLongException("input too long: " + srcLength + " characters");
+        }
         StringBuilder dest = new StringBuilder(src.length());
         int n, i, bias, basicLength, j, in, oldi, w, k, digit, t,
                 destCPCount, firstSupplementaryIndex, cpLength;
@@ -330,7 +335,7 @@
                     throw new StringPrepParseException("Illegal char found", StringPrepParseException.ILLEGAL_CHAR_FOUND);
                 }
 
-                digit=basicToDigit[src.charAt(in++) & 0xFF];
+                digit=decodeDigit(src.charAt(in++));
                 if(digit<0) {
                     throw new StringPrepParseException("Invalid char found", StringPrepParseException.INVALID_CHAR_FOUND);
                 }
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/RBBIDataWrapper.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/RBBIDataWrapper.java
index 9dc032d..e2ca784 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/RBBIDataWrapper.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/RBBIDataWrapper.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
@@ -12,10 +12,12 @@
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 
 import com.ibm.icu.impl.ICUBinary.Authenticate;
 import com.ibm.icu.text.RuleBasedBreakIterator;
+import com.ibm.icu.util.CodePointTrie;
 
 /**
 * <p>Internal class used for Rule Based Break Iterators.</p>
@@ -40,17 +42,28 @@
          */
         public int     fRowLen;
         /**
+         * Char category number of the first dictionary char class,
+         * or the the largest category number + 1 if there are no dictionary categories.
+         */
+        public int     fDictCategoriesStart;
+        /**
+         * Size of run-time array required for holding
+         * look-ahead results. Indexed by row.fLookAhead.
+         */
+        public int     fLookAheadResultsSize;
+        /**
          * Option Flags for this state table.
          */
         public int     fFlags;
         /**
-         * Option Flags for this state table.
+         * Length in bytes of the state table header, of all the int32 fields
+         * preceding fTable in the serialized form.
          */
-        public int     fReserved;
+        public static int fHeaderSize = 20;
         /**
          * Linear array of next state values, accessed as short[state, char_class]
          */
-        public short[] fTable;
+        public char[] fTable;
 
         public RBBIStateTable() {
         }
@@ -59,30 +72,50 @@
             if (length == 0) {
                 return null;
             }
-            if (length < 16) {
+            if (length < fHeaderSize) {
                 throw new IOException("Invalid RBBI state table length.");
             }
             RBBIStateTable This = new RBBIStateTable();
             This.fNumStates = bytes.getInt();
             This.fRowLen    = bytes.getInt();
+            This.fDictCategoriesStart = bytes.getInt();
+            This.fLookAheadResultsSize = bytes.getInt();
             This.fFlags     = bytes.getInt();
-            This.fReserved  = bytes.getInt();
-            int lengthOfShorts = length - 16;   // length in bytes.
-            This.fTable     = ICUBinary.getShorts(bytes, lengthOfShorts / 2, lengthOfShorts & 1);
+            int lengthOfTable = length - fHeaderSize;   // length in bytes.
+            boolean use8Bits = (This.fFlags & RBBIDataWrapper.RBBI_8BITS_ROWS) == RBBIDataWrapper.RBBI_8BITS_ROWS;
+            if (use8Bits) {
+                This.fTable = new char[lengthOfTable];
+                for (int i = 0; i < lengthOfTable; i++) {
+                    byte b = bytes.get();
+                    This.fTable[i] = (char)(0xff & b); // Treat b as unsigned.
+                }
+                ICUBinary.skipBytes(bytes, lengthOfTable & 1);
+            } else {
+                This.fTable    = ICUBinary.getChars(bytes, lengthOfTable / 2, lengthOfTable & 1);
+            }
             return This;
         }
 
         public int put(DataOutputStream bytes) throws IOException {
             bytes.writeInt(fNumStates);
             bytes.writeInt(fRowLen);
+            bytes.writeInt(fDictCategoriesStart);
+            bytes.writeInt(fLookAheadResultsSize);
             bytes.writeInt(fFlags);
-            bytes.writeInt(fReserved);
-            int tableLen = fRowLen * fNumStates / 2;  // fRowLen is bytes.
-            for (int i = 0; i < tableLen; i++) {
-                bytes.writeShort(fTable[i]);
+            if ((fFlags & RBBIDataWrapper.RBBI_8BITS_ROWS) == RBBIDataWrapper.RBBI_8BITS_ROWS) {
+                int tableLen = fRowLen * fNumStates;  // fRowLen is bytes.
+                for (int i = 0; i < tableLen; i++) {
+                    byte b = (byte)(fTable[i] & 0x00ff);
+                    bytes.writeByte(b);
+                }
+            } else {
+                int tableLen = fRowLen * fNumStates / 2;  // fRowLen is bytes.
+                for (int i = 0; i < tableLen; i++) {
+                    bytes.writeChar(fTable[i]);
+                }
             }
-            int bytesWritten = 16 + fRowLen * fNumStates;   // total bytes written,
-                                                            // including 16 for the header.
+            int bytesWritten = fHeaderSize + fRowLen * fNumStates;   // total bytes written,
+                                                                     // including the header.
             while (bytesWritten % 8 != 0) {
                 bytes.writeByte(0);
                 ++bytesWritten;
@@ -104,8 +137,9 @@
             RBBIStateTable otherST = (RBBIStateTable)other;
             if (fNumStates != otherST.fNumStates) return false;
             if (fRowLen    != otherST.fRowLen)    return false;
+            if (fDictCategoriesStart != otherST.fDictCategoriesStart) return false;
+            if (fLookAheadResultsSize != otherST.fLookAheadResultsSize) return false;
             if (fFlags     != otherST.fFlags)     return false;
-            if (fReserved  != otherST.fReserved)  return false;
             return Arrays.equals(fTable, otherST.fTable);
         }
     }
@@ -134,12 +168,12 @@
 
     public RBBIStateTable   fRTable;
 
-    public Trie2   fTrie;
+    public CodePointTrie    fTrie;
     public String  fRuleSource;
     public int     fStatusTable[];
 
     public static final int DATA_FORMAT = 0x42726b20;     // "Brk "
-    public static final int FORMAT_VERSION = 0x05000000;  // 4.0.0.0
+    public static final int FORMAT_VERSION = 0x06000000;  // 6.0.0.0
 
     private static final class IsAcceptable implements Authenticate {
         @Override
@@ -185,21 +219,23 @@
     /**
      * offset to the "tagIndex" field in a state table row.
      */
-    public final static int      TAGIDX     = 2;
-    /**
-     * offset to the reserved field in a state table row.
-     */
-    public final static int      RESERVED   = 3;
+    public final static int      TAGSIDX    = 2;
     /**
      * offset to the start of the next states array in a state table row.
      */
-    public final static int      NEXTSTATES = 4;
+    public final static int      NEXTSTATES = 3;
+
+    /**
+     *  value constant for the ACCEPTING field of a state table row.
+     */
+    public final static int      ACCEPTING_UNCONDITIONAL = 1;
 
     //  Bit selectors for the "FLAGS" field of the state table header
     //     enum RBBIStateTableFlags in the C version.
     //
     public final static int      RBBI_LOOKAHEAD_HARD_BREAK = 1;
     public final static int      RBBI_BOF_REQUIRED         = 2;
+    public final static int      RBBI_8BITS_ROWS           = 4;
 
     /**
      * Data Header.  A struct-like class with the fields from the RBBI data file header.
@@ -243,7 +279,7 @@
      * array index of the start of the state table row for that state.
      */
     public int getRowIndex(int state){
-        return state * (fHeader.fCatCount + 4);
+        return state * (fHeader.fCatCount + NEXTSTATES);
     }
 
     RBBIDataWrapper() {
@@ -330,7 +366,10 @@
                                                 //  as we don't go more than 100 bytes past the
                                                 //  past the end of the TRIE.
 
-        This.fTrie = Trie2.createFromSerialized(bytes);  // Deserialize the TRIE, leaving buffer
+        This.fTrie = CodePointTrie.fromBinary(
+            CodePointTrie.Type.FAST,
+            null,
+            bytes);  // Deserialize the TRIE, leaving buffer
                                                 //  at an unknown position, preceding the
                                                 //  padding between TRIE and following section.
 
@@ -359,8 +398,8 @@
         }
         ICUBinary.skipBytes(bytes, This.fHeader.fRuleSource - pos);
         pos = This.fHeader.fRuleSource;
-        This.fRuleSource = ICUBinary.getString(
-                bytes, This.fHeader.fRuleSourceLen / 2, This.fHeader.fRuleSourceLen & 1);
+        This.fRuleSource = new String(
+            ICUBinary.getBytes(bytes, This.fHeader.fRuleSourceLen, 0), StandardCharsets.UTF_8);
 
         if (RuleBasedBreakIterator.fDebugEnv!=null && RuleBasedBreakIterator.fDebugEnv.indexOf("data")>=0) {
             This.dump(System.out);
@@ -396,6 +435,15 @@
         return dest.toString();
     }
 
+    static public String charToString(char n, int width) {
+        StringBuilder  dest = new StringBuilder(width);
+        dest.append(n);
+        while (dest.length() < width) {
+           dest.insert(0, ' ');
+        }
+        return dest.toString();
+    }
+
     /** Fixed width int-to-string conversion. */
     static public String intToHexString(int n, int width) {
         StringBuilder  dest = new StringBuilder(width);
@@ -408,11 +456,11 @@
 
     /** Dump a state table.  (A full set of RBBI rules has 4 state tables.)  */
     private void dumpTable(java.io.PrintStream out, RBBIStateTable table) {
-        if (table == null || table.fTable.length == 0)   {
+        if (table == null || (table.fTable.length == 0)) {
             out.println("  -- null -- ");
         } else {
-            int n;
-            int state;
+            char n;
+            char state;
             StringBuilder header = new StringBuilder(" Row  Acc Look  Tag");
             for (n=0; n<fHeader.fCatCount; n++) {
                 header.append(intToString(n, 5));
@@ -434,21 +482,21 @@
      * @param table
      * @param state
      */
-    private void dumpRow(java.io.PrintStream out, RBBIStateTable table, int   state) {
+    private void dumpRow(java.io.PrintStream out, RBBIStateTable table, char   state) {
         StringBuilder dest = new StringBuilder(fHeader.fCatCount*5 + 20);
         dest.append(intToString(state, 4));
         int row = getRowIndex(state);
         if (table.fTable[row+ACCEPTING] != 0) {
-           dest.append(intToString(table.fTable[row+ACCEPTING], 5));
-        }else {
+            dest.append(intToString(table.fTable[row+ACCEPTING], 5));
+        } else {
             dest.append("     ");
         }
         if (table.fTable[row+LOOKAHEAD] != 0) {
             dest.append(intToString(table.fTable[row+LOOKAHEAD], 5));
-        }else {
+        } else {
             dest.append("     ");
         }
-        dest.append(intToString(table.fTable[row+TAGIDX], 5));
+        dest.append(intToString(table.fTable[row+TAGSIDX], 5));
 
         for (int col=0; col<fHeader.fCatCount; col++) {
             dest.append(intToString(table.fTable[row+NEXTSTATES+col], 5));
@@ -474,7 +522,6 @@
         out.println("--------------------");
         for (char32 = 0; char32<=0x10ffff; char32++) {
             category = fTrie.get(char32);
-            category &= ~0x4000;            // Mask off dictionary bit.
             if (category < 0 || category > fHeader.fCatCount) {
                 out.println("Error, bad category " + Integer.toHexString(category) +
                         " for char " + Integer.toHexString(char32));
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/Relation.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/Relation.java
index c0be988..3807ef7 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/Relation.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/Relation.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2002-2015, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/RelativeDateFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/RelativeDateFormat.java
index b564394..43fc957 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/RelativeDateFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/RelativeDateFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ReplaceableUCharacterIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ReplaceableUCharacterIterator.java
index aa914e0..f204234 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ReplaceableUCharacterIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ReplaceableUCharacterIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ResourceBundleWrapper.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ResourceBundleWrapper.java
index 50869e7..4cb6b8e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ResourceBundleWrapper.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ResourceBundleWrapper.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2004-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/Row.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/Row.java
index c09b67c..875cefe 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/Row.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/Row.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2002-2014, Google, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/RuleCharacterIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/RuleCharacterIterator.java
index a72261c..2bdd900 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/RuleCharacterIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/RuleCharacterIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2003-2011, International Business Machines
@@ -345,4 +345,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/SimpleCache.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/SimpleCache.java
index d0a1264..cb23efe 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/SimpleCache.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/SimpleCache.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ****************************************************************************
  * Copyright (c) 2007-2015 International Business Machines Corporation and  *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/SimpleFilteredSentenceBreakIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/SimpleFilteredSentenceBreakIterator.java
index 6a37014..bef89a2 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/SimpleFilteredSentenceBreakIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/SimpleFilteredSentenceBreakIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/SimpleFormatterImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/SimpleFormatterImpl.java
index 8458534..916e6ac 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/SimpleFormatterImpl.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/SimpleFormatterImpl.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/SoftCache.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/SoftCache.java
index 737dc60..fb02eef 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/SoftCache.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/SoftCache.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2010-2016, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/SortedSetRelation.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/SortedSetRelation.java
index 2d023bc..35d5deb 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/SortedSetRelation.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/SortedSetRelation.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2002-2010, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/StandardPlural.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/StandardPlural.java
index c9a7fe5..d77a7ff 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/StandardPlural.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/StandardPlural.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2015, International Business Machines Corporation and
@@ -141,4 +141,4 @@
             throw new IllegalArgumentException(keyword.toString());
         }
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/StaticUnicodeSets.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/StaticUnicodeSets.java
index f50814b..f14dbe0 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/StaticUnicodeSets.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/StaticUnicodeSets.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl;
 
 import static com.ibm.icu.impl.number.parse.ParsingUtils.safeContains;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/StringPrepDataReader.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/StringPrepDataReader.java
index 667522f..c953e70 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/StringPrepDataReader.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/StringPrepDataReader.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2003-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/StringRange.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/StringRange.java
index fae69eb..fc2bb2b 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/StringRange.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/StringRange.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, Google, Inc., International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/StringSegment.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/StringSegment.java
index da5da54..b8f5baf 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/StringSegment.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/StringSegment.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl;
 
 import com.ibm.icu.lang.UCharacter;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/TZDBTimeZoneNames.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/TZDBTimeZoneNames.java
index 7128948..dd1c3e8 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/TZDBTimeZoneNames.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/TZDBTimeZoneNames.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/TextTrieMap.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/TextTrieMap.java
index 764d09a..6f5ac28 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/TextTrieMap.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/TextTrieMap.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * ********************************************************************************
  * Copyright (C) 2007-2011, International Business Machines Corporation and others.
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneAdapter.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneAdapter.java
index 5f02417..abb2f28 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneAdapter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneAdapter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2003-2010, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneGenericNames.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneGenericNames.java
index 689905b..d1bd994 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneGenericNames.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneGenericNames.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneNamesFactoryImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneNamesFactoryImpl.java
index b38d769..8c1fbed 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneNamesFactoryImpl.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneNamesFactoryImpl.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneNamesImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneNamesImpl.java
index 10cc8c2..253fccf 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneNamesImpl.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/TimeZoneNamesImpl.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie.java
index ee18cc3..04071fc 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2.java
index d892409..62fe218 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2Writable.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2Writable.java
index de0aeb7..b7d2c49 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2Writable.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2Writable.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2_16.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2_16.java
index 506ecd8..48f09d0 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2_16.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2_16.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2_32.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2_32.java
index faf0ec9..b677af9 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2_32.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2_32.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/TrieBuilder.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/TrieBuilder.java
index 4ebe52d..ff60a10 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/TrieBuilder.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/TrieBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 1996-2010, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/TrieIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/TrieIterator.java
index 5b4bd4c..b612028 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/TrieIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/TrieIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/UBiDiProps.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/UBiDiProps.java
index 4c5963d..fead12c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/UBiDiProps.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/UBiDiProps.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/UCaseProps.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/UCaseProps.java
index a925507..ae8bfb8 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/UCaseProps.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/UCaseProps.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  *
@@ -782,6 +782,7 @@
     static final int LOC_LITHUANIAN=3;
     static final int LOC_GREEK=4;
     public static final int LOC_DUTCH=5;
+    static final int LOC_ARMENIAN=6;
 
     public static final int getCaseLocale(Locale locale) {
         return getCaseLocale(locale.getLanguage());
@@ -806,6 +807,8 @@
                 return LOC_LITHUANIAN;
             } else if(language.equals("nl")) {
                 return LOC_DUTCH;
+            } else if(language.equals("hy")) {
+                return LOC_ARMENIAN;
             }
         } else if(language.length()==3) {
             if(language.equals("tur") || language.equals("aze")) {
@@ -816,6 +819,8 @@
                 return LOC_LITHUANIAN;
             } else if(language.equals("nld")) {
                 return LOC_DUTCH;
+            } else if(language.equals("hye")) {  // *not* hyw
+                return LOC_ARMENIAN;
             }
         }
         return LOC_ROOT;
@@ -1190,6 +1195,21 @@
                         0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE
                      */
                     return 0; /* remove the dot (continue without output) */
+                } else if(c==0x0587) {
+                    // See ICU-13416:
+                    // և ligature ech-yiwn
+                    // uppercases to ԵՒ=ech+yiwn by default and in Western Armenian,
+                    // but to ԵՎ=ech+vew in Eastern Armenian.
+                    try {
+                        if(loc==LOC_ARMENIAN) {
+                            out.append(upperNotTitle ? "ԵՎ" : "Եվ");
+                        } else {
+                            out.append(upperNotTitle ? "ԵՒ" : "Եւ");
+                        }
+                        return 2;
+                    } catch (IOException e) {
+                        throw new ICUUncheckedIOException(e);
+                    }
                 } else {
                     /* no known conditional special case mapping, use a normal mapping */
                 }
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharArrayIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharArrayIterator.java
index 443f187..e72b25f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharArrayIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharArrayIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2010, International Business Machines Corporation and    *
@@ -91,4 +91,4 @@
             return null; // never invoked
         }
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterIteratorWrapper.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterIteratorWrapper.java
index 315560b..2c496ce 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterIteratorWrapper.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterIteratorWrapper.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterName.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterName.java
index 7657058..343e647 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterName.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterName.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterNameChoice.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterNameChoice.java
index 849b04c..eaa87e5 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterNameChoice.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterNameChoice.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2011, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterNameReader.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterNameReader.java
index a44d1d6..3d877e5 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterNameReader.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterNameReader.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterProperty.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterProperty.java
index d9e170c..3e12d1a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterProperty.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterProperty.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterUtility.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterUtility.java
index 7d550fe..991d0e9 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterUtility.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/UCharacterUtility.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2004, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/UPropertyAliases.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/UPropertyAliases.java
index 36bbfae..0755aad 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/UPropertyAliases.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/UPropertyAliases.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2002-2015, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/URLHandler.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/URLHandler.java
index 7e03874..50fba67 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/URLHandler.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/URLHandler.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2005-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/UResource.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/UResource.java
index 2c9ba45..f761944 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/UResource.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/UResource.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2015-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/USerializedSet.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/USerializedSet.java
index 9023cec..892ac56 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/USerializedSet.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/USerializedSet.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  *   Copyright (C) 2002-2010, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/UTS46.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/UTS46.java
index c830bc3..3e04ed2 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/UTS46.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/UTS46.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2010-2014, International Business Machines
@@ -341,6 +341,16 @@
             dest.charAt(labelStart+2)=='-' && dest.charAt(labelStart+3)=='-'
         ) {
             // Label starts with "xn--", try to un-Punycode it.
+            // In IDNA2008, labels like "xn--" (decodes to an empty string) and
+            // "xn--ASCII-" (decodes to just "ASCII") fail the round-trip validation from
+            // comparing the ToUnicode input with the back-to-ToASCII output.
+            // They are alternate encodings of the respective ASCII labels.
+            // Ignore "xn---" here: It will fail Punycode.decode() which logically comes before
+            // the round-trip verification.
+            if(labelLength==4 || (labelLength>5 && dest.charAt(labelStart+labelLength-1)=='-')) {
+                addLabelError(info, Error.INVALID_ACE_LABEL);
+                return markBadACELabel(dest, labelStart, labelLength, toASCII, info);
+            }
             wasPunycode=true;
             try {
                 fromPunycode=Punycode.decode(dest.subSequence(labelStart+4, labelStart+labelLength), null);
@@ -496,9 +506,9 @@
         boolean disallowNonLDHDot=(options&USE_STD3_RULES)!=0;
         boolean isASCII=true;
         boolean onlyLDH=true;
-        int i=labelStart+4;  // After the initial "xn--".
         int limit=labelStart+labelLength;
-        do {
+        // Start after the initial "xn--".
+        for(int i=labelStart+4; i<limit; ++i) {
             char c=dest.charAt(i);
             if(c<=0x7f) {
                 if(c=='.') {
@@ -515,7 +525,7 @@
             } else {
                 isASCII=onlyLDH=false;
             }
-        } while(++i<limit);
+        }
         if(onlyLDH) {
             dest.insert(labelStart+labelLength, '\ufffd');
             ++labelLength;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/UnicodeRegex.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/UnicodeRegex.java
index ccaa607..e4260e4 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/UnicodeRegex.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/UnicodeRegex.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2015, Google, International Business Machines Corporation
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/UnicodeSetStringSpan.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/UnicodeSetStringSpan.java
index b18eef0..fcf1e47 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/UnicodeSetStringSpan.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/UnicodeSetStringSpan.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/Utility.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/Utility.java
index 3f0944d..af5c7e8 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/Utility.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/Utility.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
@@ -10,6 +10,7 @@
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.Locale;
 import java.util.regex.Pattern;
 
@@ -1858,4 +1859,32 @@
             throw new ICUUncheckedIOException(e);
         }
     }
+
+    /**
+     * Java 8+ String#join(CharSequence, Iterable<? extends CharSequence>) compatible method for Java 7 env.
+     * @param delimiter the delimiter that separates each element
+     * @param elements the elements to join together.
+     * @return a new String that is composed of the elements separated by the delimiter
+     * @throws NullPointerException If delimiter or elements is null
+     */
+    public static String joinStrings(CharSequence delimiter, Iterable<? extends CharSequence> elements) {
+        if (delimiter == null || elements == null) {
+            throw new NullPointerException("Delimiter or elements is null");
+        }
+        StringBuilder buf = new StringBuilder();
+        Iterator<? extends CharSequence> itr = elements.iterator();
+        boolean isFirstElem = true;
+        while (itr.hasNext()) {
+            CharSequence element = itr.next();
+            if (element != null) {
+                if (!isFirstElem) {
+                    buf.append(delimiter);
+                } else {
+                    isFirstElem = false;
+                }
+                buf.append(element);
+            }
+        }
+        return buf.toString();
+    }
 }
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ValidIdentifiers.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ValidIdentifiers.java
index 0cbda66..743f871 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ValidIdentifiers.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ValidIdentifiers.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2015-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ZoneMeta.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ZoneMeta.java
index 807a228..5858b48 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ZoneMeta.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ZoneMeta.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2003-2016 International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle.java
index 10fdfea..e2fafa9 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_da.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_da.java
index 61f7896..60779b9 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_da.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_da.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_da_DK.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_da_DK.java
index 7b151de..23482bd 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_da_DK.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_da_DK.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_de.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_de.java
index bef264c..5523c4f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_de.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_de.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_de_AT.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_de_AT.java
index 2728e89..775b73d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_de_AT.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_de_AT.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_de_DE.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_de_DE.java
index d92a5e8..9cce3d8 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_de_DE.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_de_DE.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_el.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_el.java
index 9a9e05b..72915ca 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_el.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_el.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_el_GR.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_el_GR.java
index 4f5225a..7d16a6e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_el_GR.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_el_GR.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en.java
index 004ec2b..4be641a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en_CA.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en_CA.java
index 3b44c81..e9c964f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en_CA.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en_CA.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en_GB.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en_GB.java
index 92f7270..45eb043 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en_GB.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en_GB.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en_US.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en_US.java
index 5a672ca..dd1da31 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en_US.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en_US.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_es.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_es.java
index df9293c..e7a0a53 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_es.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_es.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_es_MX.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_es_MX.java
index c2a02d0..de73b70 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_es_MX.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_es_MX.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_fr.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_fr.java
index ee3d0ea..807cbcc 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_fr.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_fr.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_fr_CA.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_fr_CA.java
index edd28a1..97f16f7 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_fr_CA.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_fr_CA.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_fr_FR.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_fr_FR.java
index d3212ff..8c97c0a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_fr_FR.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_fr_FR.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_it.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_it.java
index 3446201..8e58c76 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_it.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_it.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_it_IT.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_it_IT.java
index b0c2511..fcc0af2 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_it_IT.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_it_IT.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_iw.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_iw.java
index 3fc72e0..865cfff 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_iw.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_iw.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_iw_IL.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_iw_IL.java
index 5245619..70c3d81 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_iw_IL.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_iw_IL.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_ja_JP.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_ja_JP.java
index 779b469..b42b8ef 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_ja_JP.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_ja_JP.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/ResourceReader.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/ResourceReader.java
index d2b63fb..bb84147 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/ResourceReader.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/ResourceReader.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/TokenIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/TokenIterator.java
index 9ca94a8..d37ea46 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/TokenIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/TokenIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2004-2015, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/package.html b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/package.html
index 7914c07..49a84fe 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/data/package.html
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/data/package.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--  Copyright (C) 2016 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--
   Copyright (C) 2000-2004, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormat.java
index b8cadea..3aa2559 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2013, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormatter.java
index e0adf54..a66cce0 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormatter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2014, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormatterFactory.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormatterFactory.java
index 4fbeb64..0d1c1aa 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormatterFactory.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormatterFactory.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2009, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodBuilderFactory.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodBuilderFactory.java
index ade665e..c4c0a67 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodBuilderFactory.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodBuilderFactory.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2011, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatter.java
index 887752f..7a73cac 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatterFactory.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatterFactory.java
index ecff5a0..7f23c64 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatterFactory.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatterFactory.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatterService.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatterService.java
index c840bdc..8c972cb 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatterService.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatterService.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/DateFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/DateFormatter.java
index fdecb4f..b4a1d2c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/DateFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/DateFormatter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/DurationFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/DurationFormatter.java
index 0e7236d..1bb52f4 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/DurationFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/DurationFormatter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/DurationFormatterFactory.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/DurationFormatterFactory.java
index eccec7b..b60d88e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/DurationFormatterFactory.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/DurationFormatterFactory.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2009, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/Period.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/Period.java
index 2f2a105..5953ba9 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/Period.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/Period.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodBuilder.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodBuilder.java
index 08085cf..be5f3ce 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodBuilder.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodBuilderFactory.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodBuilderFactory.java
index 4e61f25..96ddb41 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodBuilderFactory.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodBuilderFactory.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2009, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatter.java
index 615345d..f1f436d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatterFactory.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatterFactory.java
index 56e0f6f..e06ee80 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatterFactory.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatterFactory.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatterService.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatterService.java
index 81f27eb..34401d9 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatterService.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatterService.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2007-2009, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/TimeUnit.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/TimeUnit.java
index e9065bc..e564fea 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/TimeUnit.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/TimeUnit.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/TimeUnitConstants.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/TimeUnitConstants.java
index b4ec282..fcea809 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/TimeUnitConstants.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/TimeUnitConstants.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/DataRecord.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/DataRecord.java
index 1aaf8a4..6bb837e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/DataRecord.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/DataRecord.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2007-2009, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/PeriodFormatterData.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/PeriodFormatterData.java
index 13c99d1..99cecb8 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/PeriodFormatterData.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/PeriodFormatterData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2009-2011, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/PeriodFormatterDataService.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/PeriodFormatterDataService.java
index 1f5eac8..47fdc01 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/PeriodFormatterDataService.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/PeriodFormatterDataService.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2007-2009, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/RecordReader.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/RecordReader.java
index fd361c3..5d86d1c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/RecordReader.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/RecordReader.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/RecordWriter.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/RecordWriter.java
index 4367616..bf1cb78 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/RecordWriter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/RecordWriter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/ResourceBasedPeriodFormatterDataService.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/ResourceBasedPeriodFormatterDataService.java
index e6f3754..a05688d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/ResourceBasedPeriodFormatterDataService.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/ResourceBasedPeriodFormatterDataService.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2007-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/Utils.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/Utils.java
index d36b02f..cee6b1c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/Utils.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/Utils.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2012, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/XMLRecordReader.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/XMLRecordReader.java
index 0b8e5bf..b769756 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/XMLRecordReader.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/XMLRecordReader.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/XMLRecordWriter.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/XMLRecordWriter.java
index d2f1867..b05c54f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/XMLRecordWriter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/XMLRecordWriter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/index.txt b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/index.txt
index b4d05ac..7735c1e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/index.txt
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/index.txt
@@ -1,6 +1,6 @@
 #******************************************************************************
 #* Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-#* License & terms of use: http://www.unicode.org/copyright.html#License      *
+#* License & terms of use: http://www.unicode.org/copyright.html      *
 #******************************************************************************
 #******************************************************************************
 #* Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml
index edf1c1b..4ce4f5f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml.escaped b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml.escaped
index 97db591..9c8eb93 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml.escaped
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml.escaped
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_en.xml b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_en.xml
index d802a9d..28b2f12 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_en.xml
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_en.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_es.xml b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_es.xml
index b3ec83e..d6b309a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_es.xml
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_es.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_fr.xml b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_fr.xml
index e1d314b..e77dfce 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_fr.xml
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_fr.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_he_IL.xml b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_he_IL.xml
index 7a87962..67ed43d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_he_IL.xml
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_he_IL.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_hi.xml b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_hi.xml
index 002f71b..8de0d61 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_hi.xml
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_hi.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_it.xml b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_it.xml
index 0d99c71..4fa77d9 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_it.xml
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_it.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ja.xml b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ja.xml
index 2070f13..f3aacd9 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ja.xml
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ja.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ko.xml b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ko.xml
index 1323562..430ebab 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ko.xml
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ko.xml
@@ -2,7 +2,7 @@
 <!--
 *******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                     *
-* License & terms of use: http://www.unicode.org/copyright.html#License       *
+* License & terms of use: http://www.unicode.org/copyright.html       *
 *******************************************************************************
 *******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and     *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ru.xml b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ru.xml
index 7dc9d5f..8a88afe 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ru.xml
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ru.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_th.xml b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_th.xml
index 86ae843..f79b272 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_th.xml
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_th.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans.xml b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans.xml
index adae420..58e30dd 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans.xml
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans_SG.xml b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans_SG.xml
index 1bcc983..44d0d63 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans_SG.xml
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans_SG.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant.xml b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant.xml
index d1093de..cec3b85 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant.xml
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant_HK.xml b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant_HK.xml
index 18cac3f..2c4006e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant_HK.xml
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant_HK.xml
@@ -2,7 +2,7 @@
 <!--
 ******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                    *
-* License & terms of use: http://www.unicode.org/copyright.html#License      *
+* License & terms of use: http://www.unicode.org/copyright.html      *
 ******************************************************************************
 ******************************************************************************
 * Copyright (C) 2007-2008 International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/AsciiUtil.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/AsciiUtil.java
index 527230e..1cc37dc 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/AsciiUtil.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/AsciiUtil.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/BaseLocale.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/BaseLocale.java
index 66deee9..8a3b5f7 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/BaseLocale.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/BaseLocale.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/Extension.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/Extension.java
index bccda56..45ad405 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/Extension.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/Extension.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2010, International Business Machines Corporation and    *
@@ -38,4 +38,4 @@
     public String toString() {
         return getID();
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/InternalLocaleBuilder.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/InternalLocaleBuilder.java
index 2a676a3..a126d2a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/InternalLocaleBuilder.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/InternalLocaleBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/KeyTypeData.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/KeyTypeData.java
index 68e0956..50033b3 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/KeyTypeData.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/KeyTypeData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2016, International Business Machines Corporation and
@@ -64,6 +64,14 @@
         }
     }
 
+    private static class ScriptCodeTypeHandler extends SpecialTypeHandler {
+        private static final Pattern pat = Pattern.compile("[a-zA-Z]{4}(-[a-zA-Z]{4})*");
+        @Override
+        boolean isWellFormed(String value) {
+            return pat.matcher(value).matches();
+        }
+    }
+
     private static class SubdivisionKeyValueTypeHandler extends SpecialTypeHandler {
         private static final Pattern pat = Pattern.compile("([a-zA-Z]{2}|[0-9]{3})");
         @Override
@@ -84,6 +92,7 @@
         CODEPOINTS(new CodepointsTypeHandler()),
         REORDER_CODE(new ReorderCodeTypeHandler()),
         RG_KEY_VALUE(new RgKeyValueTypeHandler()),
+        SCRIPT_CODE(new ScriptCodeTypeHandler()),
         SUBDIVISION_CODE(new SubdivisionKeyValueTypeHandler()),
         PRIVATE_USE(new PrivateUseKeyValueTypeHandler()),
         ;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LSR.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LSR.java
index 95c2898..1b1b028 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LSR.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LSR.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.locale;
 
 import java.util.Objects;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LanguageTag.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LanguageTag.java
index 14d1a94..ef2d6e6 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LanguageTag.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LanguageTag.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2010-2013, International Business Machines Corporation and    *
@@ -38,13 +38,13 @@
     private List<String> _variants = Collections.emptyList();   // variant subtags
     private List<String> _extensions = Collections.emptyList(); // extensions
 
-    // Map contains grandfathered tags and its preferred mappings from
-    // http://www.ietf.org/rfc/rfc5646.txt
-    private static final Map<AsciiUtil.CaseInsensitiveKey, String[]> GRANDFATHERED =
+    // The Map contains legacy language tags (marked as “Type: grandfathered” in BCP 47)
+    // and their preferred mappings from BCP 47.
+    private static final Map<AsciiUtil.CaseInsensitiveKey, String[]> LEGACY =
         new HashMap<AsciiUtil.CaseInsensitiveKey, String[]>();
 
     static {
-        // grandfathered = irregular           ; non-redundant tags registered
+        // legacy        = irregular           ; non-redundant tags registered
         //               / regular             ; during the RFC 3066 era
         //
         // irregular     = "en-GB-oed"         ; irregular tags do not match
@@ -78,7 +78,7 @@
         final String[][] entries = {
           //{"tag",         "preferred"},
             {"art-lojban",  "jbo"},
-            {"cel-gaulish", "xtg-x-cel-gaulish"},   // fallback
+            {"cel-gaulish", "xtg"},   // fallback
             {"en-GB-oed",   "en-GB-x-oed"},         // fallback
             {"i-ami",       "ami"},
             {"i-bnn",       "bnn"},
@@ -105,57 +105,17 @@
             {"zh-xiang",    "hsn"},
         };
         for (String[] e : entries) {
-            GRANDFATHERED.put(new AsciiUtil.CaseInsensitiveKey(e[0]), e);
+            LEGACY.put(new AsciiUtil.CaseInsensitiveKey(e[0]), e);
         }
     }
 
     private LanguageTag() {
     }
 
-    /*
-     * BNF in RFC5464
-     *
-     * Language-Tag  = langtag             ; normal language tags
-     *               / privateuse          ; private use tag
-     *               / grandfathered       ; grandfathered tags
-     *
-     *
-     * langtag       = language
-     *                 ["-" script]
-     *                 ["-" region]
-     *                 *("-" variant)
-     *                 *("-" extension)
-     *                 ["-" privateuse]
-     *
-     * language      = 2*3ALPHA            ; shortest ISO 639 code
-     *                 ["-" extlang]       ; sometimes followed by
-     *                                     ; extended language subtags
-     *               / 4ALPHA              ; or reserved for future use
-     *               / 5*8ALPHA            ; or registered language subtag
-     *
-     * extlang       = 3ALPHA              ; selected ISO 639 codes
-     *                 *2("-" 3ALPHA)      ; permanently reserved
-     *
-     * script        = 4ALPHA              ; ISO 15924 code
-     *
-     * region        = 2ALPHA              ; ISO 3166-1 code
-     *               / 3DIGIT              ; UN M.49 code
-     *
-     * variant       = 5*8alphanum         ; registered variants
-     *               / (DIGIT 3alphanum)
-     *
-     * extension     = singleton 1*("-" (2*8alphanum))
-     *
-     *                                     ; Single alphanumerics
-     *                                     ; "x" reserved for private use
-     * singleton     = DIGIT               ; 0 - 9
-     *               / %x41-57             ; A - W
-     *               / %x59-5A             ; Y - Z
-     *               / %x61-77             ; a - w
-     *               / %x79-7A             ; y - z
-     *
-     * privateuse    = "x" 1*("-" (1*8alphanum))
-     *
+    /**
+     * See BCP 47 “Tags for Identifying Languages”:
+     * https://www.rfc-editor.org/info/bcp47 -->
+     * https://www.rfc-editor.org/rfc/rfc5646.html#section-2.1
      */
     public static LanguageTag parse(String languageTag, ParseStatus sts) {
         if (sts == null) {
@@ -165,14 +125,13 @@
         }
 
         StringTokenIterator itr;
-        boolean isGrandfathered = false;
+        boolean isLegacy = false;
 
-        // Check if the tag is grandfathered
-        String[] gfmap = GRANDFATHERED.get(new AsciiUtil.CaseInsensitiveKey(languageTag));
+        String[] gfmap = LEGACY.get(new AsciiUtil.CaseInsensitiveKey(languageTag));
         // Language tag is at least 2 alpha so we can skip searching the first 2 chars.
         int dash = 2;
         while (gfmap == null && (dash = languageTag.indexOf('-', dash + 1)) != -1) {
-            gfmap = GRANDFATHERED.get(new AsciiUtil.CaseInsensitiveKey(languageTag.substring(0, dash)));
+            gfmap = LEGACY.get(new AsciiUtil.CaseInsensitiveKey(languageTag.substring(0, dash)));
         }
 
         if (gfmap != null) {
@@ -183,7 +142,7 @@
                 // append the rest of the tag.
                 itr = new StringTokenIterator(gfmap[1] + languageTag.substring(dash), SEP);
             }
-            isGrandfathered = true;
+            isLegacy = true;
         } else {
             itr = new StringTokenIterator(languageTag, SEP);
         }
@@ -202,8 +161,8 @@
         }
         tag.parsePrivateuse(itr, sts);
 
-        if (isGrandfathered) {
-            // Grandfathered tag is replaced with a well-formed tag above.
+        if (isLegacy) {
+            // A legacy tag is replaced with a well-formed tag above.
             // However, the parsed length must be the original tag length.
             assert (itr.isDone());
             assert (!sts.isError());
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleDistance.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleDistance.java
index fb16814..3680104 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleDistance.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleDistance.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.locale;
 
 import java.nio.ByteBuffer;
@@ -92,7 +92,7 @@
         return shiftedDistance / (1 << DISTANCE_SHIFT);
     }
 
-    private static final int getDistanceFloor(int indexAndDistance) {
+    public static final int getDistanceFloor(int indexAndDistance) {
         return (indexAndDistance & DISTANCE_MASK) >> DISTANCE_SHIFT;
     }
 
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleExtensions.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleExtensions.java
index 6418cd9..ffc498a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleExtensions.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleExtensions.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleObjectCache.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleObjectCache.java
index 2604780..3204976 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleObjectCache.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleObjectCache.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleSyntaxException.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleSyntaxException.java
index d9fb69e..31e8055 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleSyntaxException.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleSyntaxException.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleValidityChecker.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleValidityChecker.java
index b327f5f..fc4e85b 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleValidityChecker.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/LocaleValidityChecker.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2015-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/ParseStatus.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/ParseStatus.java
index 3215472..16118c7 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/ParseStatus.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/ParseStatus.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2010, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/StringTokenIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/StringTokenIterator.java
index 2edfa7c..673064b 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/StringTokenIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/StringTokenIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/UnicodeLocaleExtension.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/UnicodeLocaleExtension.java
index c0e820f..f923c31 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/UnicodeLocaleExtension.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/UnicodeLocaleExtension.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XCldrStub.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XCldrStub.java
index d1f2739..518fd3e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XCldrStub.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XCldrStub.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.locale;
 
 import java.io.BufferedReader;
@@ -412,4 +412,4 @@
          */
         boolean test(T t);
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XLikelySubtags.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XLikelySubtags.java
index 332f035..e2f0a6b 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XLikelySubtags.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XLikelySubtags.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.locale;
 
 import java.nio.ByteBuffer;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/AdoptingModifierStore.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/AdoptingModifierStore.java
index 93da08b..9d67f46 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/AdoptingModifierStore.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/AdoptingModifierStore.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import com.ibm.icu.impl.StandardPlural;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/AffixPatternProvider.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/AffixPatternProvider.java
index e7519d5..1b805ae 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/AffixPatternProvider.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/AffixPatternProvider.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 public interface AffixPatternProvider {
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/AffixUtils.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/AffixUtils.java
index ca79325..607dea1 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/AffixUtils.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/AffixUtils.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import com.ibm.icu.impl.FormattedStringBuilder;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CompactData.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CompactData.java
index 23259df..b3e536a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CompactData.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CompactData.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import java.util.Arrays;
@@ -98,7 +98,12 @@
                 .entrySet()) {
             byte magnitude = (byte) (magnitudeEntry.getKey().length() - 1);
             for (Map.Entry<String, String> pluralEntry : magnitudeEntry.getValue().entrySet()) {
-                StandardPlural plural = StandardPlural.fromString(pluralEntry.getKey().toString());
+                String pluralString = pluralEntry.getKey().toString();
+                if ("0".equals(pluralString) || "1".equals(pluralString)) {
+                    // TODO(ICU-21258): Handle this case. For now, skip.
+                    continue;
+                }
+                StandardPlural plural = StandardPlural.fromString(pluralString);
                 String patternString = pluralEntry.getValue().toString();
                 patterns[getIndex(magnitude, plural)] = patternString;
                 int numZeros = countZeros(patternString);
@@ -177,6 +182,11 @@
                 UResource.Table pluralVariantsTable = value.getTable();
                 for (int i4 = 0; pluralVariantsTable.getKeyAndValue(i4, key, value); ++i4) {
 
+                    if ("0".equals(key.toString()) || "1".equals(key.toString())) {
+                        // TODO(ICU-21258): Handle this case. For now, skip.
+                        continue;
+                    }
+
                     // Skip this magnitude/plural if we already have it from a child locale.
                     // Note: This also skips USE_FALLBACK entries.
                     StandardPlural plural = StandardPlural.fromString(key.toString());
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/ConstantAffixModifier.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/ConstantAffixModifier.java
index 9249851..66e4915 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/ConstantAffixModifier.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/ConstantAffixModifier.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import java.text.Format.Field;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/ConstantMultiFieldModifier.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/ConstantMultiFieldModifier.java
index d1c0b48..f76f568 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/ConstantMultiFieldModifier.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/ConstantMultiFieldModifier.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import java.text.Format.Field;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CurrencyPluralInfoAffixProvider.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CurrencyPluralInfoAffixProvider.java
index a3aae56..8963608 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CurrencyPluralInfoAffixProvider.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CurrencyPluralInfoAffixProvider.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import com.ibm.icu.impl.StandardPlural;
@@ -68,4 +68,4 @@
     public boolean hasBody() {
         return affixesByPlural[StandardPlural.OTHER.ordinal()].hasBody();
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CurrencySpacingEnabledModifier.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CurrencySpacingEnabledModifier.java
index 50a812f..89bab96 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CurrencySpacingEnabledModifier.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CurrencySpacingEnabledModifier.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import com.ibm.icu.impl.FormattedStringBuilder;
@@ -14,7 +14,7 @@
     // Pre-compute them for performance.
     // The unit test testCurrencySpacingPatternStability() will start failing if these change in CLDR.
     private static final UnicodeSet UNISET_DIGIT = new UnicodeSet("[:digit:]").freeze();
-    private static final UnicodeSet UNISET_NOTS = new UnicodeSet("[:^S:]").freeze();
+    private static final UnicodeSet UNISET_NOTSZ = new UnicodeSet("[[:^S:]&[:^Z:]]").freeze();
 
     // Constants for better readability. Types are for compiler checking.
     static final byte PREFIX = 0;
@@ -157,8 +157,8 @@
                         affix == SUFFIX);
         if (pattern.equals("[:digit:]")) {
             return UNISET_DIGIT;
-        } else if (pattern.equals("[:^S:]")) {
-            return UNISET_NOTS;
+        } else if (pattern.equals("[[:^S:]&[:^Z:]]")) {
+            return UNISET_NOTSZ;
         } else {
             return new UnicodeSet(pattern);
         }
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CustomSymbolCurrency.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CustomSymbolCurrency.java
index 5e73c86..d1b99e5 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CustomSymbolCurrency.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CustomSymbolCurrency.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import com.ibm.icu.text.DecimalFormatSymbols;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalFormatProperties.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalFormatProperties.java
index 00a038f..10a3581 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalFormatProperties.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalFormatProperties.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import java.io.IOException;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalQuantity.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalQuantity.java
index 9d6fc34..d33f407 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalQuantity.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalQuantity.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import java.math.BigDecimal;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalQuantity_AbstractBCD.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalQuantity_AbstractBCD.java
index b1ead76..bce3400 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalQuantity_AbstractBCD.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalQuantity_AbstractBCD.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import java.math.BigDecimal;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalQuantity_DualStorageBCD.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalQuantity_DualStorageBCD.java
index 05612af..a10c033 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalQuantity_DualStorageBCD.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalQuantity_DualStorageBCD.java
@@ -1,9 +1,10 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
+import java.util.Arrays;
 
 /**
  * A DecimalQuantity with internal storage as a 64-bit BCD, with fallback to a byte array for numbers
@@ -123,13 +124,8 @@
         }
         if (usingBytes) {
             ensureCapacity(precision + numDigits);
-            int i = precision + numDigits - 1;
-            for (; i >= numDigits; i--) {
-                bcdBytes[i] = bcdBytes[i - numDigits];
-            }
-            for (; i >= 0; i--) {
-                bcdBytes[i] = 0;
-            }
+            System.arraycopy(bcdBytes, 0, bcdBytes, numDigits, precision);
+            Arrays.fill(bcdBytes, 0, numDigits, (byte) 0);
         } else {
             bcdLong <<= (numDigits * 4);
         }
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Grouper.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Grouper.java
index 816a7e3..47491ec 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Grouper.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Grouper.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import com.ibm.icu.impl.ICUData;
@@ -119,8 +119,20 @@
     }
 
     public Grouper withLocaleData(ULocale locale, ParsedPatternInfo patternInfo) {
-        if (this.grouping1 != -2 && this.grouping1 != -4) {
-            return this;
+        short minGrouping;
+        if (this.minGrouping == -2) {
+            minGrouping = getMinGroupingForLocale(locale);
+        } else if (this.minGrouping == -3) {
+            minGrouping = (short) Math.max(2, getMinGroupingForLocale(locale));
+        } else {
+            minGrouping = this.minGrouping;
+        }
+
+        if (this.grouping1 != -2 && this.grouping2 != -4) {
+            if (minGrouping == this.minGrouping) {
+              return this;
+            }
+            return getInstance(this.grouping1, this.grouping2, minGrouping);
         }
 
         short grouping1 = (short) (patternInfo.positive.groupingSizes & 0xffff);
@@ -133,15 +145,6 @@
             grouping2 = grouping1;
         }
 
-        short minGrouping;
-        if (this.minGrouping == -2) {
-            minGrouping = getMinGroupingForLocale(locale);
-        } else if (this.minGrouping == -3) {
-            minGrouping = (short) Math.max(2, getMinGroupingForLocale(locale));
-        } else {
-            minGrouping = this.minGrouping;
-        }
-
         return getInstance(grouping1, grouping2, minGrouping);
     }
 
@@ -164,4 +167,4 @@
     public short getSecondary() {
         return grouping2;
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/LocalizedNumberFormatterAsFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/LocalizedNumberFormatterAsFormat.java
index 437be95..3dd2ae6 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/LocalizedNumberFormatterAsFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/LocalizedNumberFormatterAsFormat.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import java.io.Externalizable;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/LongNameHandler.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/LongNameHandler.java
index 4f58c66..9d972e4 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/LongNameHandler.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/LongNameHandler.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import java.util.EnumMap;
@@ -22,11 +22,12 @@
 import com.ibm.icu.util.ULocale;
 import com.ibm.icu.util.UResourceBundle;
 
-public class LongNameHandler implements MicroPropsGenerator, ModifierStore {
+public class LongNameHandler
+    implements MicroPropsGenerator, ModifierStore, LongNameMultiplexer.ParentlessMicroPropsGenerator {
 
     private static final int DNAM_INDEX = StandardPlural.COUNT;
     private static final int PER_INDEX = StandardPlural.COUNT + 1;
-    private static final int ARRAY_LENGTH = StandardPlural.COUNT + 2;
+    static final int ARRAY_LENGTH = StandardPlural.COUNT + 2;
 
     private static int getIndex(String pluralKeyword) {
         // pluralKeyword can also be "dnam" or "per"
@@ -39,7 +40,7 @@
         }
     }
 
-    private static String getWithPlural(String[] strings, StandardPlural plural) {
+    static String getWithPlural(String[] strings, StandardPlural plural) {
         String result = strings[plural.ordinal()];
         if (result == null) {
             result = strings[StandardPlural.OTHER.ordinal()];
@@ -79,7 +80,7 @@
 
     // NOTE: outArray MUST have at least ARRAY_LENGTH entries. No bounds checking is performed.
 
-    private static void getMeasureData(
+    static void getMeasureData(
             ULocale locale,
             MeasureUnit unit,
             UnitWidth width,
@@ -101,7 +102,7 @@
 
         // Map duration-year-person, duration-week-person, etc. to duration-year, duration-week, ...
         // TODO(ICU-20400): Get duration-*-person data properly with aliases.
-        if (unit.getSubtype().endsWith("-person")) {
+        if (unit.getSubtype() != null && unit.getSubtype().endsWith("-person")) {
             key.append(unit.getSubtype(), 0, unit.getSubtype().length() - 7);
         } else {
             key.append(unit.getSubtype());
@@ -191,6 +192,22 @@
         return result;
     }
 
+    /**
+     * Construct a localized LongNameHandler for the specified MeasureUnit.
+     * <p>
+     * Compound units can be constructed via `unit` and `perUnit`. Both of these
+     * must then be built-in units.
+     * <p>
+     * Mixed units are not supported, use MixedUnitLongNameHandler.forMeasureUnit.
+     *
+     * @param locale The desired locale.
+     * @param unit The measure unit to construct a LongNameHandler for. If
+     *     `perUnit` is also defined, `unit` must not be a mixed unit.
+     * @param perUnit If `unit` is a mixed unit, `perUnit` must be null.
+     * @param width Specifies the desired unit rendering.
+     * @param rules Plural rules.
+     * @param parent Plural rules.
+     */
     public static LongNameHandler forMeasureUnit(
             ULocale locale,
             MeasureUnit unit,
@@ -200,8 +217,8 @@
             MicroPropsGenerator parent) {
         if (perUnit != null) {
             // Compound unit: first try to simplify (e.g., meters per second is its own unit).
-            MeasureUnit simplified = MeasureUnit.resolveUnitPerUnit(unit, perUnit);
-            if (simplified != null) {
+            MeasureUnit simplified = unit.product(perUnit.reciprocal());
+            if (simplified.getType() != null) {
                 unit = simplified;
             } else {
                 // No simplified form is available.
@@ -209,6 +226,12 @@
             }
         }
 
+        if (unit.getType() == null) {
+            // TODO(ICU-20941): Unsanctioned unit. Not yet fully supported.
+            throw new UnsupportedOperationException("Unsanctioned unit, not yet supported: " +
+                                                    unit.getIdentifier());
+        }
+
         String[] simpleFormats = new String[ARRAY_LENGTH];
         getMeasureData(locale, unit, width, simpleFormats);
         // TODO(ICU4J): Reduce the number of object creations here?
@@ -226,6 +249,13 @@
             UnitWidth width,
             PluralRules rules,
             MicroPropsGenerator parent) {
+        if (unit.getType() == null || perUnit.getType() == null) {
+            // TODO(ICU-20941): Unsanctioned unit. Not yet fully supported. Set an
+            // error code.
+            throw new UnsupportedOperationException(
+                "Unsanctioned units, not yet supported: " + unit.getIdentifier() + "/" +
+                perUnit.getIdentifier());
+        }
         String[] primaryData = new String[ARRAY_LENGTH];
         getMeasureData(locale, unit, width, primaryData);
         String[] secondaryData = new String[ARRAY_LENGTH];
@@ -298,6 +328,20 @@
         return micros;
     }
 
+    /**
+     * Produces a plural-appropriate Modifier for a unit: `quantity` is taken as
+     * the final smallest unit, while the larger unit values must be provided
+     * via `micros.mixedMeasures`.
+     *
+     * Does not call parent.processQuantity, so cannot get a MicroProps instance
+     * that way. Instead, the instance is passed in as a parameter.
+     */
+    public MicroProps processQuantityWithMicros(DecimalQuantity quantity, MicroProps micros) {
+        StandardPlural pluralForm = RoundingUtils.getPluralSafe(micros.rounder, rules, quantity);
+        micros.modOuter = modifiers.get(pluralForm);
+        return micros;
+    }
+
     @Override
     public Modifier getModifier(Signum signum, StandardPlural plural) {
         // Signum ignored
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/LongNameMultiplexer.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/LongNameMultiplexer.java
new file mode 100644
index 0000000..963f637
--- /dev/null
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/LongNameMultiplexer.java
@@ -0,0 +1,95 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package com.ibm.icu.impl.number;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.ibm.icu.number.NumberFormatter;
+import com.ibm.icu.text.PluralRules;
+import com.ibm.icu.util.MeasureUnit;
+import com.ibm.icu.util.NoUnit;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * A MicroPropsGenerator that multiplexes between different LongNameHandlers,
+ * depending on the outputUnit.
+ *
+ * See processQuantity() for the input requirements.
+ */
+public class LongNameMultiplexer implements MicroPropsGenerator {
+    /**
+     * LongNameMultiplexer calls the parent MicroPropsGenerator itself,
+     * receiving the MicroProps instance in use for this formatting pipeline.
+     * Next it multiplexes between name handlers (fHandlers) which are not given
+     * access to a parent. Consequently LongNameMultiplexer must give these
+     * handlers the MicroProps instance.
+     */
+    public static interface ParentlessMicroPropsGenerator {
+        public MicroProps processQuantityWithMicros(DecimalQuantity quantity, MicroProps micros);
+    }
+
+    private final MicroPropsGenerator fParent;
+
+    private List<ParentlessMicroPropsGenerator> fHandlers;
+
+    // Each MeasureUnit corresponds to the same-index MicroPropsGenerator
+    // pointed to in fHandlers.
+    private List<MeasureUnit> fMeasureUnits;
+
+    public LongNameMultiplexer(MicroPropsGenerator fParent) {
+        this.fParent = fParent;
+    }
+
+    // Produces a multiplexer for LongNameHandlers, one for each unit in
+    // `units`. An individual unit might be a mixed unit.
+    public static LongNameMultiplexer forMeasureUnits(ULocale locale,
+                                                      List<MeasureUnit> units,
+                                                      NumberFormatter.UnitWidth width,
+                                                      PluralRules rules,
+                                                      MicroPropsGenerator parent) {
+        LongNameMultiplexer result = new LongNameMultiplexer(parent);
+
+        assert (units.size() > 0);
+
+        result.fMeasureUnits = new ArrayList<>();
+        result.fHandlers = new ArrayList<>();
+
+
+        for (int i = 0; i < units.size(); i++) {
+            MeasureUnit unit = units.get(i);
+            result.fMeasureUnits.add(unit);
+            if (unit.getComplexity() == MeasureUnit.Complexity.MIXED) {
+                MixedUnitLongNameHandler mlnh = MixedUnitLongNameHandler
+                        .forMeasureUnit(locale, unit, width, rules, null);
+                result.fHandlers.add(mlnh);
+            } else {
+                LongNameHandler lnh = LongNameHandler
+                        .forMeasureUnit(locale, unit, NoUnit.BASE, width, rules, null);
+                result.fHandlers.add(lnh);
+            }
+        }
+
+        return result;
+    }
+
+    // The output unit must be provided via `micros.outputUnit`, it must match
+    // one of the units provided to the factory function.
+    @Override
+    public MicroProps processQuantity(DecimalQuantity quantity) {
+        // We call parent->processQuantity() from the Multiplexer, instead of
+        // letting LongNameHandler handle it: we don't know which LongNameHandler to
+        // call until we've called the parent!
+        MicroProps micros = this.fParent.processQuantity(quantity);
+
+        // Call the correct LongNameHandler based on outputUnit
+        for (int i = 0; i < this.fHandlers.size(); i++) {
+            if (fMeasureUnits.get(i).equals(micros.outputUnit)) {
+                ParentlessMicroPropsGenerator handler = fHandlers.get(i);
+                return handler.processQuantityWithMicros(quantity, micros);
+            }
+        }
+        throw new AssertionError
+                (" We shouldn't receive any outputUnit for which we haven't already got a LongNameHandler");
+    }
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MacroProps.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MacroProps.java
index e464d13..5f373b0 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MacroProps.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MacroProps.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import java.math.RoundingMode;
@@ -30,6 +30,7 @@
     public SignDisplay sign;
     public DecimalSeparatorDisplay decimal;
     public Scale scale;
+    public String usage;
     public AffixPatternProvider affixProvider; // not in API; for JDK compatibility mode only
     public PluralRules rules; // not in API; could be made public in the future
     public Long threshold; // not in API; controls internal self-regulation threshold
@@ -70,6 +71,8 @@
             affixProvider = fallback.affixProvider;
         if (scale == null)
             scale = fallback.scale;
+        if (usage == null)
+            usage = fallback.usage;
         if (rules == null)
             rules = fallback.rules;
         if (loc == null)
@@ -92,6 +95,7 @@
                 decimal,
                 affixProvider,
                 scale,
+                usage,
                 rules,
                 loc);
     }
@@ -119,6 +123,7 @@
                 && Objects.equals(decimal, other.decimal)
                 && Objects.equals(affixProvider, other.affixProvider)
                 && Objects.equals(scale, other.scale)
+                && Objects.equals(usage, other.usage)
                 && Objects.equals(rules, other.rules)
                 && Objects.equals(loc, other.loc);
     }
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MicroProps.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MicroProps.java
index 2fce201..a75ac6b 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MicroProps.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MicroProps.java
@@ -1,13 +1,22 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
+import java.util.List;
+
 import com.ibm.icu.number.IntegerWidth;
 import com.ibm.icu.number.NumberFormatter.DecimalSeparatorDisplay;
 import com.ibm.icu.number.NumberFormatter.SignDisplay;
 import com.ibm.icu.number.Precision;
 import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.util.Measure;
+import com.ibm.icu.util.MeasureUnit;
 
+/**
+ * MicroProps is the first MicroPropsGenerator that should be should be called,
+ * producing an initialized MicroProps instance that will be passed on and
+ * modified throughout the rest of the chain of MicroPropsGenerator instances.
+ */
 public class MicroProps implements Cloneable, MicroPropsGenerator {
     // Populated globally:
     public SignDisplay sign;
@@ -17,16 +26,37 @@
     public DecimalSeparatorDisplay decimal;
     public IntegerWidth integerWidth;
 
-    // Populated by notation/unit:
+    // Modifiers provided by the number formatting pipeline (when the value is known):
+
+    // A Modifier provided by LongNameHandler, used for currency long names and
+    // units. If there is no LongNameHandler needed, this should be an
+    // null. (This is typically the third modifier applied.)
     public Modifier modOuter;
+
+    // A Modifier for short currencies and compact notation. (This is typically
+    // the second modifier applied.)
     public Modifier modMiddle;
+
+    // A Modifier provided by ScientificHandler, used for scientific notation.
+    // This is typically the first modifier applied.
     public Modifier modInner;
+
     public Precision rounder;
     public Grouper grouping;
     public boolean useCurrency;
 
     // Internal fields:
     private final boolean immutable;
+
+    // The MeasureUnit with which the output is represented. May also have
+    // MeasureUnit.Complexity.MIXED complexity, in which case mixedMeasures comes into
+    // play.
+    public MeasureUnit outputUnit;
+
+    // In the case of mixed units, this is the set of integer-only units
+    // *preceding* the final unit.
+    public List<Measure> mixedMeasures;
+
     private volatile boolean exhausted;
 
     /**
@@ -38,6 +68,19 @@
         this.immutable = immutable;
     }
 
+    /**
+     * As MicroProps is the "base instance", this implementation of
+     * MircoPropsGenerator.processQuantity() just ensures that the output
+     * `micros` is correctly initialized.
+     * <p>
+     * For the "safe" invocation of this function, micros must not be *this,
+     * such that a copy of the base instance is made. For the "unsafe" path,
+     * this function can be used only once, because the base MicroProps instance
+     * will be modified and thus not be available for re-use.
+     *
+     * @param quantity The quantity for consideration and optional mutation.
+     * @return an initialized MicroProps instance.
+     */
     @Override
     public MicroProps processQuantity(DecimalQuantity quantity) {
         if (immutable) {
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MicroPropsGenerator.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MicroPropsGenerator.java
index 12ce18d..8580c54 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MicroPropsGenerator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MicroPropsGenerator.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 /**
@@ -20,6 +20,10 @@
  * calls {@link #processQuantity} on its "parent", then does its work, and then returns the result.
  *
  * <p>
+ * This chain of MicroPropsGenerators is typically constructed by NumberFormatterImpl::macrosToMicroGenerator() when
+ * constructing a NumberFormatter.
+ *
+ * <p>
  * A class implementing MicroPropsGenerator looks something like this:
  *
  * <pre>
@@ -52,4 +56,4 @@
      * @return A MicroProps instance resolved for the quantity.
      */
     public MicroProps processQuantity(DecimalQuantity quantity);
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MicroPropsMutator.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MicroPropsMutator.java
index 962f8d1..25ce530 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MicroPropsMutator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MicroPropsMutator.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 /**
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MixedUnitLongNameHandler.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MixedUnitLongNameHandler.java
new file mode 100644
index 0000000..d1b7965
--- /dev/null
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MixedUnitLongNameHandler.java
@@ -0,0 +1,216 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package com.ibm.icu.impl.number;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.ibm.icu.impl.FormattedStringBuilder;
+import com.ibm.icu.impl.SimpleFormatterImpl;
+import com.ibm.icu.impl.StandardPlural;
+import com.ibm.icu.number.LocalizedNumberFormatter;
+import com.ibm.icu.number.NumberFormatter;
+import com.ibm.icu.text.ListFormatter;
+import com.ibm.icu.text.PluralRules;
+import com.ibm.icu.text.SimpleFormatter;
+import com.ibm.icu.util.MeasureUnit;
+import com.ibm.icu.util.ULocale;
+
+/** Similar to LongNameHandler, but only for MIXED units. */
+public class MixedUnitLongNameHandler
+    implements MicroPropsGenerator, ModifierStore, LongNameMultiplexer.ParentlessMicroPropsGenerator {
+    private final PluralRules rules;
+    private final MicroPropsGenerator parent;
+
+    /**
+     * Stores unit data for each of the individual units. For each unit, it
+     * stores ARRAY_LENGTH strings, as returned by getMeasureData.
+     */
+    private List<String[]> fMixedUnitData;
+
+    /**
+     * A localized NumberFormatter used to format the integer-valued bigger
+     * units of Mixed Unit measurements.
+     */
+    private LocalizedNumberFormatter fIntegerFormatter;
+
+    /** A localised list formatter for joining mixed units together. */
+    private ListFormatter fListFormatter;
+
+    private MixedUnitLongNameHandler(PluralRules rules, MicroPropsGenerator parent) {
+        this.rules = rules;
+        this.parent = parent;
+    }
+
+    /**
+     * Construct a localized MixedUnitLongNameHandler for the specified
+     * MeasureUnit. It must be a MIXED unit.
+     * <p>
+     *
+     * @param locale    The desired locale.
+     * @param mixedUnit The mixed measure unit to construct a
+     *                  MixedUnitLongNameHandler for.
+     * @param width     Specifies the desired unit rendering.
+     * @param rules     PluralRules instance.
+     * @param parent    MicroPropsGenerator instance.
+     */
+    public static MixedUnitLongNameHandler forMeasureUnit(ULocale locale, MeasureUnit mixedUnit,
+                                                          NumberFormatter.UnitWidth width, PluralRules rules,
+                                                          MicroPropsGenerator parent) {
+        assert (mixedUnit.getComplexity() == MeasureUnit.Complexity.MIXED);
+
+        MixedUnitLongNameHandler result = new MixedUnitLongNameHandler(rules, parent);
+        List<MeasureUnit> individualUnits = mixedUnit.splitToSingleUnits();
+
+        result.fMixedUnitData = new ArrayList<>();
+        for (int i = 0; i < individualUnits.size(); i++) {
+            // Grab data for each of the components.
+            String[] unitData = new String[LongNameHandler.ARRAY_LENGTH];
+            LongNameHandler.getMeasureData(locale, individualUnits.get(i), width, unitData);
+            result.fMixedUnitData.add(unitData);
+        }
+
+        ListFormatter.Width listWidth = ListFormatter.Width.SHORT;
+        if (width == NumberFormatter.UnitWidth.NARROW) {
+            listWidth = ListFormatter.Width.NARROW;
+        } else if (width == NumberFormatter.UnitWidth.FULL_NAME) {
+            // This might be the same as SHORT in most languages:
+            listWidth = ListFormatter.Width.WIDE;
+        }
+
+        result.fListFormatter = ListFormatter.getInstance(locale, ListFormatter.Type.UNITS, listWidth);
+
+
+        // We need a localised NumberFormatter for the integers of the bigger units
+        // (providing Arabic numerals, for example).
+        result.fIntegerFormatter = NumberFormatter.withLocale(locale);
+
+        return result;
+    }
+
+    /**
+     * Produces a plural-appropriate Modifier for a mixed unit: `quantity` is
+     * taken as the final smallest unit, while the larger unit values must be
+     * provided by `micros.mixedMeasures`, micros being the MicroProps instance
+     * returned by the parent.
+     *
+     * This function must not be called if this instance has no parent: call
+     * processQuantityWithMicros() instead.
+     */
+    @Override
+    public MicroProps processQuantity(DecimalQuantity quantity) {
+        assert (fMixedUnitData.size() > 1);
+        MicroProps micros;
+        micros = parent.processQuantity(quantity);
+        micros.modOuter = getMixedUnitModifier(quantity, micros);
+        return micros;
+    }
+
+    /**
+     * Produces a plural-appropriate Modifier for a mixed unit: `quantity` is
+     * taken as the final smallest unit, while the larger unit values must be
+     * provided via `micros.mixedMeasures`.
+     *
+     * Does not call parent.processQuantity, so cannot get a MicroProps instance
+     * that way. Instead, the instance is passed in as a parameter.
+     */
+    public MicroProps processQuantityWithMicros(DecimalQuantity quantity, MicroProps micros) {
+        assert (fMixedUnitData.size() > 1);
+        micros.modOuter = getMixedUnitModifier(quantity, micros);
+        return micros;
+    }
+
+    /**
+     * Required for ModifierStore. And ModifierStore is required by
+     * SimpleModifier constructor's last parameter. We assert his will never get
+     * called though.
+     */
+    @Override
+    public Modifier getModifier(Modifier.Signum signum, StandardPlural plural) {
+        // TODO(units): investigate this method while investigating where
+        // LongNameHandler.getModifier() gets used. To be sure it remains
+        // unreachable:
+        assert false : "should be unreachable";
+        return null;
+    }
+
+    /**
+     * For a mixed unit, returns a Modifier that takes only one parameter: the
+     * smallest and final unit of the set. The bigger units' values and labels
+     * get baked into this Modifier, together with the unit label of the final
+     * unit.
+     */
+    private Modifier getMixedUnitModifier(DecimalQuantity quantity, MicroProps micros) {
+        // If we don't have at least one mixedMeasure, the LongNameHandler would be
+        // sufficient and we shouldn't be running MixedUnitLongNameHandler code:
+        if (micros.mixedMeasures.size() == 0) {
+            assert false : "Mixed unit: we must have more than one unit value";
+            throw new UnsupportedOperationException();
+        }
+
+        // Algorithm:
+        //
+        // For the mixed-units measurement of: "3 yard, 1 foot, 2.6 inch", we should
+        // find "3 yard" and "1 foot" in micros.mixedMeasures.
+        //
+        // Obtain long-names with plural forms corresponding to measure values:
+        //   * {0} yards, {0} foot, {0} inches
+        //
+        // Format the integer values appropriately and modify with the format
+        // strings:
+        //   - 3 yards, 1 foot
+        //
+        // Use ListFormatter to combine, with one placeholder:
+        //   - 3 yards, 1 foot and {0} inches /* TODO: how about the case of `1 inch` */
+        //
+        // Return a SimpleModifier for this pattern, letting the rest of the
+        // pipeline take care of the remaining inches.
+
+        List<String> outputMeasuresList = new ArrayList<>();
+
+        for (int i = 0; i < micros.mixedMeasures.size(); i++) {
+            DecimalQuantity fdec = new DecimalQuantity_DualStorageBCD(micros.mixedMeasures.get(i).getNumber());
+            if (i > 0 && fdec.isNegative()) {
+                // If numbers are negative, only the first number needs to have its
+                // negative sign formatted.
+                fdec.negate();
+            }
+            StandardPlural pluralForm = fdec.getStandardPlural(rules);
+
+            String simpleFormat = LongNameHandler.getWithPlural(this.fMixedUnitData.get(i), pluralForm);
+            SimpleFormatter compiledFormatter = SimpleFormatter.compileMinMaxArguments(simpleFormat, 0, 1);
+
+            FormattedStringBuilder appendable = new FormattedStringBuilder();
+            this.fIntegerFormatter.formatImpl(fdec, appendable);
+            outputMeasuresList.add(compiledFormatter.format(appendable.toString()));
+            // TODO(icu-units#67): fix field positions
+        }
+
+        // Reiterated: we have at least one mixedMeasure:
+        assert micros.mixedMeasures.size() > 0;
+        // Thus if negative, a negative has already been formatted:
+        if (quantity.isNegative()) {
+            quantity.negate();
+        }
+
+        String[] finalSimpleFormats = this.fMixedUnitData.get(this.fMixedUnitData.size() - 1);
+        StandardPlural finalPlural = RoundingUtils.getPluralSafe(micros.rounder, rules, quantity);
+        String finalSimpleFormat = LongNameHandler.getWithPlural(finalSimpleFormats, finalPlural);
+        SimpleFormatter finalFormatter = SimpleFormatter.compileMinMaxArguments(finalSimpleFormat, 0, 1);
+        outputMeasuresList.add(finalFormatter.format("{0}"));
+
+        // Combine list into a "premixed" pattern
+        String premixedFormatPattern = this.fListFormatter.format(outputMeasuresList);
+        StringBuilder sb = new StringBuilder();
+        String premixedCompiled =
+            SimpleFormatterImpl.compileToStringMinMaxArguments(premixedFormatPattern, sb, 0, 1);
+
+        // TODO(icu-units#67): fix field positions
+        Modifier.Parameters params = new Modifier.Parameters();
+        params.obj = this;
+        params.signum = Modifier.Signum.POS_ZERO;
+        params.plural = finalPlural;
+        // Return a SimpleModifier for the "premixed" pattern
+        return new SimpleModifier(premixedCompiled, null, false, params);
+    }
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Modifier.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Modifier.java
index 699ba3b..da2759f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Modifier.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Modifier.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import java.text.Format.Field;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/ModifierStore.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/ModifierStore.java
index 2546cf2..6a3b8ff 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/ModifierStore.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/ModifierStore.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import com.ibm.icu.impl.StandardPlural;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MultiplierFormatHandler.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MultiplierFormatHandler.java
index d75cbab..9167ea3 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MultiplierFormatHandler.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MultiplierFormatHandler.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import com.ibm.icu.number.Scale;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MultiplierProducer.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MultiplierProducer.java
index 708481d..f441f38 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MultiplierProducer.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MultiplierProducer.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 /**
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MutablePatternModifier.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MutablePatternModifier.java
index 3c01bad..4ec31f7 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MutablePatternModifier.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/MutablePatternModifier.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import com.ibm.icu.impl.FormattedStringBuilder;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Padder.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Padder.java
index ccbf871..ec6fa71 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Padder.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Padder.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import com.ibm.icu.impl.FormattedStringBuilder;
@@ -124,4 +124,4 @@
         }
         return paddingString.length() * requiredPadding;
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/PatternStringParser.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/PatternStringParser.java
index 3d6c25d..43c54db 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/PatternStringParser.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/PatternStringParser.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import com.ibm.icu.impl.number.Padder.PadPosition;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/PatternStringUtils.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/PatternStringUtils.java
index 1ef3781..7bf65ae 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/PatternStringUtils.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/PatternStringUtils.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import java.math.BigDecimal;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Properties.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Properties.java
index 59197b6..b0f4bad 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Properties.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Properties.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import java.io.IOException;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/PropertiesAffixPatternProvider.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/PropertiesAffixPatternProvider.java
index 115d1b9..870007a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/PropertiesAffixPatternProvider.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/PropertiesAffixPatternProvider.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 public class PropertiesAffixPatternProvider implements AffixPatternProvider {
@@ -163,4 +163,4 @@
                 + negSuffix
                 + "}";
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/RoundingUtils.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/RoundingUtils.java
index 7452929..fc02afc 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/RoundingUtils.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/RoundingUtils.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import java.math.BigDecimal;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/SimpleModifier.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/SimpleModifier.java
index b80ef77..ca77e48 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/SimpleModifier.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/SimpleModifier.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number;
 
 import java.text.Format.Field;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/UnitConversionHandler.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/UnitConversionHandler.java
new file mode 100644
index 0000000..424a58a
--- /dev/null
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/UnitConversionHandler.java
@@ -0,0 +1,58 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package com.ibm.icu.impl.number;
+
+import java.util.List;
+
+import com.ibm.icu.impl.units.ComplexUnitsConverter;
+import com.ibm.icu.impl.units.MeasureUnitImpl;
+import com.ibm.icu.impl.units.UnitsData;
+import com.ibm.icu.util.Measure;
+import com.ibm.icu.util.MeasureUnit;
+
+/**
+ * A MicroPropsGenerator which converts a measurement from one MeasureUnit to
+ * another. In particular, the output MeasureUnit may be a mixed unit. (The
+ * input unit may not be a mixed unit.)
+ */
+public class UnitConversionHandler implements MicroPropsGenerator {
+
+    private final MicroPropsGenerator fParent;
+    private MeasureUnit fOutputUnit;
+    private ComplexUnitsConverter fComplexUnitConverter;
+
+    /**
+     * Constructor.
+     *
+     * @param inputUnit Specifies the input MeasureUnit. Mixed units are not
+     *     supported as input (because input is just a single decimal quantity).
+     * @param outputUnit Specifies the output MeasureUnit.
+     * @param parent The parent MicroPropsGenerator.
+     */
+    public UnitConversionHandler(MeasureUnit inputUnit,
+                                 MeasureUnit outputUnit,
+                                 MicroPropsGenerator parent) {
+        this.fOutputUnit = outputUnit;
+        this.fParent = parent;
+        MeasureUnitImpl inputUnitImpl = MeasureUnitImpl.forIdentifier(inputUnit.getIdentifier());
+        MeasureUnitImpl outputUnitImpl = MeasureUnitImpl.forIdentifier(outputUnit.getIdentifier());
+        this.fComplexUnitConverter = new ComplexUnitsConverter(inputUnitImpl, outputUnitImpl,
+                                                               new UnitsData().getConversionRates());
+    }
+
+    /**
+     * Obtains the appropriate output values from the Unit Converter.
+     */
+    @Override
+    public MicroProps processQuantity(DecimalQuantity quantity) {
+        MicroProps result = this.fParent.processQuantity(quantity);
+
+        quantity.roundToInfinity(); // Enables toDouble
+        List<Measure> measures = this.fComplexUnitConverter.convert(quantity.toBigDecimal(), result.rounder);
+
+        result.outputUnit = this.fOutputUnit;
+        UsagePrefsHandler.mixedMeasuresToMicros(measures, quantity, result);
+
+        return result;
+    }
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/UsagePrefsHandler.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/UsagePrefsHandler.java
new file mode 100644
index 0000000..b490204
--- /dev/null
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/UsagePrefsHandler.java
@@ -0,0 +1,84 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package com.ibm.icu.impl.number;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.ibm.icu.impl.units.MeasureUnitImpl;
+import com.ibm.icu.impl.units.UnitsRouter;
+import com.ibm.icu.util.Measure;
+import com.ibm.icu.util.MeasureUnit;
+import com.ibm.icu.util.ULocale;
+
+public class UsagePrefsHandler implements MicroPropsGenerator {
+
+    private final MicroPropsGenerator fParent;
+    private UnitsRouter fUnitsRouter;
+
+    public UsagePrefsHandler(ULocale locale, MeasureUnit inputUnit, String usage, MicroPropsGenerator parent) {
+        assert parent != null;
+
+        this.fParent = parent;
+        this.fUnitsRouter =
+                new UnitsRouter(MeasureUnitImpl.forIdentifier(inputUnit.getIdentifier()), locale.getCountry(), usage);
+    }
+
+    /**
+     * Populates micros.mixedMeasures and modifies quantity, based on the values
+     * in measures.
+     */
+    protected static void
+    mixedMeasuresToMicros(List<Measure> measures, DecimalQuantity outQuantity, MicroProps outMicros) {
+        outMicros.mixedMeasures = new ArrayList<>();
+        if (measures.size() > 1) {
+            // For debugging
+            assert (outMicros.outputUnit.getComplexity() == MeasureUnit.Complexity.MIXED);
+
+            // Check that we received the expected number of measurements:
+            assert measures.size() == outMicros.outputUnit.splitToSingleUnits().size();
+
+            // Mixed units: except for the last value, we pass all values to the
+            // LongNameHandler via micros->mixedMeasures.
+            for (int i = 0, n = measures.size() - 1; i < n; i++) {
+                outMicros.mixedMeasures.add(measures.get(i));
+            }
+        }
+
+        // The last value (potentially the only value) gets passed on via quantity.
+        outQuantity.setToBigDecimal((BigDecimal) measures.get(measures.size()- 1).getNumber());
+    }
+
+    /**
+     * Returns the list of possible output units, i.e. the full set of
+     * preferences, for the localized, usage-specific unit preferences.
+     * <p>
+     * The returned pointer should be valid for the lifetime of the
+     * UsagePrefsHandler instance.
+     */
+    public List<MeasureUnit> getOutputUnits() {
+        return fUnitsRouter.getOutputUnits();
+    }
+
+    /**
+     * Obtains the appropriate output value, MeasureUnit and
+     * rounding/precision behaviour from the UnitsRouter.
+     * <p>
+     * The output unit is passed on to the LongNameHandler via
+     * micros.outputUnit.
+     */
+    @Override
+    public MicroProps processQuantity(DecimalQuantity quantity) {
+        MicroProps micros = this.fParent.processQuantity(quantity);
+
+        quantity.roundToInfinity(); // Enables toDouble
+        final UnitsRouter.RouteResult routed = fUnitsRouter.route(quantity.toBigDecimal(), micros);
+
+        final List<Measure> routedMeasures = routed.measures;
+        micros.outputUnit = routed.outputUnit.build();
+
+        UsagePrefsHandler.mixedMeasuresToMicros(routedMeasures, quantity, micros);
+        return micros;
+    }
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/AffixMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/AffixMatcher.java
index 51b8df0..2dfa370 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/AffixMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/AffixMatcher.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import java.util.ArrayList;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/AffixPatternMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/AffixPatternMatcher.java
index 7702015..48bb867 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/AffixPatternMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/AffixPatternMatcher.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import com.ibm.icu.impl.number.AffixUtils;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/AffixTokenMatcherFactory.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/AffixTokenMatcherFactory.java
index 07ddf64..b4613db 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/AffixTokenMatcherFactory.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/AffixTokenMatcherFactory.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import com.ibm.icu.text.DecimalFormatSymbols;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/CodePointMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/CodePointMatcher.java
index 8e0fc60..628f31d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/CodePointMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/CodePointMatcher.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import com.ibm.icu.impl.StringSegment;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/CombinedCurrencyMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/CombinedCurrencyMatcher.java
index 0cb3cb2..6bba99c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/CombinedCurrencyMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/CombinedCurrencyMatcher.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import java.util.Iterator;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/DecimalMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/DecimalMatcher.java
index 4825b1a..095ff55 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/DecimalMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/DecimalMatcher.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import com.ibm.icu.impl.StaticUnicodeSets;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/IgnorablesMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/IgnorablesMatcher.java
index 9bbb289..4d4e9d6 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/IgnorablesMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/IgnorablesMatcher.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import com.ibm.icu.impl.StaticUnicodeSets;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/InfinityMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/InfinityMatcher.java
index 54d683a..022a9a5 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/InfinityMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/InfinityMatcher.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import static com.ibm.icu.impl.number.parse.ParsingUtils.safeContains;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/MinusSignMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/MinusSignMatcher.java
index 126b9b4..3d6c66c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/MinusSignMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/MinusSignMatcher.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import static com.ibm.icu.impl.number.parse.ParsingUtils.safeContains;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/MultiplierParseHandler.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/MultiplierParseHandler.java
index f0a98ae..14c3c48 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/MultiplierParseHandler.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/MultiplierParseHandler.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import com.ibm.icu.number.Scale;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/NanMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/NanMatcher.java
index 46a6773..314d1a5 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/NanMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/NanMatcher.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import com.ibm.icu.impl.StringSegment;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/NumberParseMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/NumberParseMatcher.java
index 14e9c7e..982de01 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/NumberParseMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/NumberParseMatcher.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import com.ibm.icu.impl.StringSegment;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/NumberParserImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/NumberParserImpl.java
index 86755c2..2afb04e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/NumberParserImpl.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/NumberParserImpl.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import java.text.ParsePosition;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/PaddingMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/PaddingMatcher.java
index 51c36b1..963a74f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/PaddingMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/PaddingMatcher.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import com.ibm.icu.impl.StringSegment;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/ParsedNumber.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/ParsedNumber.java
index 72f737f..4f9884d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/ParsedNumber.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/ParsedNumber.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import java.util.Comparator;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/ParsingUtils.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/ParsingUtils.java
index c15b02f..430ebc4 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/ParsingUtils.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/ParsingUtils.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import com.ibm.icu.text.UnicodeSet;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/PercentMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/PercentMatcher.java
index 8d31875..fd3a744 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/PercentMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/PercentMatcher.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import com.ibm.icu.impl.StaticUnicodeSets;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/PermilleMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/PermilleMatcher.java
index 85fc515..532df8e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/PermilleMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/PermilleMatcher.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import com.ibm.icu.impl.StaticUnicodeSets;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/PlusSignMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/PlusSignMatcher.java
index 7887f04..54dbf11 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/PlusSignMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/PlusSignMatcher.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import static com.ibm.icu.impl.number.parse.ParsingUtils.safeContains;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/RequireAffixValidator.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/RequireAffixValidator.java
index d2c89c8..0b3061f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/RequireAffixValidator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/RequireAffixValidator.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 /**
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/RequireCurrencyValidator.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/RequireCurrencyValidator.java
index 27966b9..fec6457 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/RequireCurrencyValidator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/RequireCurrencyValidator.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 /**
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/RequireDecimalSeparatorValidator.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/RequireDecimalSeparatorValidator.java
index bdda99a..d9301b2 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/RequireDecimalSeparatorValidator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/RequireDecimalSeparatorValidator.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 /**
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/RequireNumberValidator.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/RequireNumberValidator.java
index 5e588e8..0b9d877 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/RequireNumberValidator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/RequireNumberValidator.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 /**
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/ScientificMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/ScientificMatcher.java
index 84db6cd..80fee9a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/ScientificMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/ScientificMatcher.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import static com.ibm.icu.impl.number.parse.ParsingUtils.safeContains;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/SeriesMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/SeriesMatcher.java
index 6d2147f..9e34165 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/SeriesMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/SeriesMatcher.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import java.util.ArrayList;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/SymbolMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/SymbolMatcher.java
index 0e1513b..bcdf20b 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/SymbolMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/SymbolMatcher.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import com.ibm.icu.impl.StaticUnicodeSets;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/ValidationMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/ValidationMatcher.java
index 399e156..7621fda 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/ValidationMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/parse/ValidationMatcher.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.parse;
 
 import com.ibm.icu.impl.StringSegment;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/range/PrefixInfixSuffixLengthHelper.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/range/PrefixInfixSuffixLengthHelper.java
index 696f3f0..c88cb2a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/range/PrefixInfixSuffixLengthHelper.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/range/PrefixInfixSuffixLengthHelper.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.range;
 
 /**
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/range/RangeMacroProps.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/range/RangeMacroProps.java
index e287251..a2433b0 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/range/RangeMacroProps.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/range/RangeMacroProps.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.range;
 
 import java.util.Objects;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/range/StandardPluralRanges.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/range/StandardPluralRanges.java
index 8a9819a..78c5e7a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/range/StandardPluralRanges.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/range/StandardPluralRanges.java
@@ -1,8 +1,10 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.impl.number.range;
 
-import java.util.MissingResourceException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
 
 import com.ibm.icu.impl.ICUData;
 import com.ibm.icu.impl.ICUResourceBundle;
@@ -10,6 +12,7 @@
 import com.ibm.icu.impl.UResource;
 import com.ibm.icu.util.ULocale;
 import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceTypeMismatchException;
 
 /**
  * @author sffc
@@ -20,8 +23,54 @@
     StandardPlural[] flatTriples;
     int numTriples = 0;
 
+    /**
+     * An immutable map from language codes to set IDs.
+     * Pre-computed and cached in Java since it is used as a cache key for PluralRules.
+     */
+    private static volatile Map<String, String> languageToSet;
+
+    /** An empty StandardPluralRanges instance. */
+    public static final StandardPluralRanges DEFAULT = new StandardPluralRanges();
+
     ////////////////////
 
+    private static final class PluralRangeSetsDataSink extends UResource.Sink {
+
+        Map<String, String> output;
+
+        PluralRangeSetsDataSink(Map<String, String> output) {
+            this.output = output;
+        }
+
+        @Override
+        public void put(UResource.Key key, UResource.Value value, boolean noFallback) {
+            UResource.Table table = value.getTable();
+            for (int i = 0; table.getKeyAndValue(i, key, value); ++i) {
+                // The data has only languages; no regions/scripts. If this changes, this
+                // code and languageToSet will need to change.
+                assert key.toString().equals(new ULocale(key.toString()).getLanguage());
+                output.put(key.toString(), value.toString());
+            }
+        }
+    }
+
+    private static Map<String, String> getLanguageToSet() {
+        Map<String, String> candidate = languageToSet;
+        if (candidate == null) {
+            Map<String, String> map = new HashMap<String, String>();
+            PluralRangeSetsDataSink sink = new PluralRangeSetsDataSink(map);
+            ICUResourceBundle resource = (ICUResourceBundle)
+                UResourceBundle.getBundleInstance(ICUData.ICU_BASE_NAME, "pluralRanges");
+            resource.getAllItemsWithFallback("locales", sink);
+            candidate = Collections.unmodifiableMap(map);
+        }
+        // Check if another thread set languageToSet in the mean time
+        if (languageToSet == null) {
+            languageToSet = candidate;
+        }
+        return languageToSet;
+    }
+
     private static final class PluralRangesDataSink extends UResource.Sink {
 
         StandardPluralRanges output;
@@ -36,6 +85,10 @@
             output.setCapacity(entriesArray.getSize());
             for (int i = 0; entriesArray.getValue(i, value); ++i) {
                 UResource.Array pluralFormsArray = value.getArray();
+                if (pluralFormsArray.getSize() != 3) {
+                    throw new UResourceTypeMismatchException(
+                        "Expected 3 elements in pluralRanges.txt array");
+                }
                 pluralFormsArray.getValue(0, value);
                 StandardPlural first = StandardPlural.fromString(value.getString());
                 pluralFormsArray.getValue(1, value);
@@ -48,34 +101,43 @@
     }
 
     private static void getPluralRangesData(
-            ULocale locale,
+            String set,
             StandardPluralRanges out) {
         StringBuilder sb = new StringBuilder();
         ICUResourceBundle resource;
         resource = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUData.ICU_BASE_NAME, "pluralRanges");
-        sb.append("locales/");
-        sb.append(locale.getLanguage());
-        String key = sb.toString();
-        String set;
-        try {
-            set = resource.getStringWithFallback(key);
-        } catch (MissingResourceException e) {
-            // Not all languages are covered: fail gracefully
-            return;
-        }
-
         sb.setLength(0);
         sb.append("rules/");
         sb.append(set);
-        key = sb.toString();
+        String key = sb.toString();
         PluralRangesDataSink sink = new PluralRangesDataSink(out);
         resource.getAllItemsWithFallback(key, sink);
     }
 
     ////////////////////
 
-    public StandardPluralRanges(ULocale locale) {
-        getPluralRangesData(locale, this);
+    /** Create a StandardPluralRanges based on locale. */
+    public static StandardPluralRanges forLocale(ULocale locale) {
+        return forSet(getSetForLocale(locale));
+    }
+
+    /** Create a StandardPluralRanges based on set name. */
+    public static StandardPluralRanges forSet(String set) {
+        StandardPluralRanges result = new StandardPluralRanges();
+        if (set == null) {
+            // Not all languages are covered: fail gracefully
+            return DEFAULT;
+        }
+        getPluralRangesData(set, result);
+        return result;
+    }
+
+    /** Get the set name from the locale. */
+    public static String getSetForLocale(ULocale locale) {
+        return getLanguageToSet().get(locale.getLanguage());
+    }
+
+    private StandardPluralRanges() {
     }
 
     /** Used for data loading. */
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/units/ComplexUnitsConverter.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/units/ComplexUnitsConverter.java
new file mode 100644
index 0000000..96e8810
--- /dev/null
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/units/ComplexUnitsConverter.java
@@ -0,0 +1,213 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package com.ibm.icu.impl.units;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import com.ibm.icu.impl.number.DecimalQuantity;
+import com.ibm.icu.impl.number.DecimalQuantity_DualStorageBCD;
+import com.ibm.icu.number.Precision;
+import com.ibm.icu.util.Measure;
+import com.ibm.icu.util.MeasureUnit;
+
+/**
+ * Converts from single or compound unit to single, compound or mixed units.
+ * For example, from `meter` to `foot+inch`.
+ * <p>
+ * DESIGN:
+ * This class uses `UnitConverter` in order to perform the single converter (i.e. converters from a
+ * single unit to another single unit). Therefore, `ComplexUnitsConverter` class contains multiple
+ * instances of the `UnitConverter` to perform the conversion.
+ */
+public class ComplexUnitsConverter {
+    public static final BigDecimal EPSILON = BigDecimal.valueOf(Math.ulp(1.0));
+    public static final BigDecimal EPSILON_MULTIPLIER = BigDecimal.valueOf(1).add(EPSILON);
+    private ArrayList<UnitConverter> unitConverters_;
+    // Individual units of mixed units, sorted big to small
+    private ArrayList<MeasureUnitImpl> units_;
+    // Individual units of mixed units, sorted in desired output order
+    private ArrayList<MeasureUnit> outputUnits_;
+
+    /**
+     * Constructor of `ComplexUnitsConverter`.
+     * NOTE:
+     * - inputUnit and outputUnits must be under the same category
+     * - e.g. meter to feet and inches --> all of them are length units.
+     *
+     * @param inputUnit   represents the source unit. (should be single or compound unit).
+     * @param outputUnits represents the output unit. could be any type. (single, compound or mixed).
+     */
+    public ComplexUnitsConverter(MeasureUnitImpl inputUnit, MeasureUnitImpl outputUnits,
+                                 ConversionRates conversionRates) {
+        units_ = outputUnits.extractIndividualUnits();
+        outputUnits_ = new ArrayList<>(units_.size());
+        for (MeasureUnitImpl itr : units_) {
+            outputUnits_.add(itr.build());
+        }
+        assert (!units_.isEmpty());
+
+        // Sort the units in a descending order.
+        Collections.sort(
+                this.units_,
+                Collections.reverseOrder(new MeasureUnitImpl.MeasureUnitImplComparator(conversionRates)));
+
+
+        // If the `outputUnits` is `UMEASURE_UNIT_MIXED` such as `foot+inch`. Thus means there is more than one unit
+        //  and In this case we need more converters to convert from the `inputUnit` to the first unit in the
+        //  `outputUnits`. Then, a converter from the first unit in the `outputUnits` to the second unit and so on.
+        //      For Example:
+        //          - inputUnit is `meter`
+        //          - outputUnits is `foot+inch`
+        //              - Therefore, we need to have two converters:
+        //                      1. a converter from `meter` to `foot`
+        //                      2. a converter from `foot` to `inch`
+        //          - Therefore, if the input is `2 meter`:
+        //              1. convert `meter` to `foot` --> 2 meter to 6.56168 feet
+        //              2. convert the residual of 6.56168 feet (0.56168) to inches, which will be (6.74016
+        //              inches)
+        //              3. then, the final result will be (6 feet and 6.74016 inches)
+        unitConverters_ = new ArrayList<>();
+        for (int i = 0, n = units_.size(); i < n; i++) {
+            if (i == 0) { // first element
+                unitConverters_.add(new UnitConverter(inputUnit, units_.get(i), conversionRates));
+            } else {
+                unitConverters_.add(new UnitConverter(units_.get(i - 1), units_.get(i), conversionRates));
+            }
+        }
+    }
+
+    /**
+     * Returns true if the specified `quantity` of the `inputUnit`, expressed in terms of the biggest
+     * unit in the MeasureUnit `outputUnit`, is greater than or equal to `limit`.
+     * <p>
+     * For example, if the input unit is `meter` and the target unit is `foot+inch`. Therefore, this
+     * function will convert the `quantity` from `meter` to `foot`, then, it will compare the value in
+     * `foot` with the `limit`.
+     */
+    public boolean greaterThanOrEqual(BigDecimal quantity, BigDecimal limit) {
+        assert !units_.isEmpty();
+
+        // NOTE: First converter converts to the biggest quantity.
+        return unitConverters_.get(0).convert(quantity).multiply(EPSILON_MULTIPLIER).compareTo(limit) >= 0;
+    }
+
+    /**
+     * Returns outputMeasures which is an array with the corresponding values.
+     * - E.g. converting meters to feet and inches.
+     * 1 meter --> 3 feet, 3.3701 inches
+     * NOTE:
+     * the smallest element is the only element that could have fractional values. And all
+     * other elements are floored to the nearest integer
+     */
+    public List<Measure> convert(BigDecimal quantity, Precision rounder) {
+        List<Measure> result = new ArrayList<>(unitConverters_.size());
+        BigDecimal sign = BigDecimal.ONE;
+        if (quantity.compareTo(BigDecimal.ZERO) < 0) {
+            quantity = quantity.abs();
+            sign = sign.negate();
+        }
+
+        // For N converters:
+        // - the first converter converts from the input unit to the largest
+        //   unit,
+        // - N-1 converters convert to bigger units for which we want integers,
+        // - the Nth converter (index N-1) converts to the smallest unit, which
+        //   isn't (necessarily) an integer.
+        List<BigDecimal> intValues = new ArrayList<>(unitConverters_.size() - 1);
+
+        for (int i = 0, n = unitConverters_.size(); i < n; ++i) {
+            quantity = (unitConverters_.get(i)).convert(quantity);
+
+            if (i < n - 1) {
+                // The double type has 15 decimal digits of precision. For choosing
+                // whether to use the current unit or the next smaller unit, we
+                // therefore nudge up the number with which the thresholding
+                // decision is made. However after the thresholding, we use the
+                // original values to ensure unbiased accuracy (to the extent of
+                // double's capabilities).
+                BigDecimal roundedQuantity =
+                    quantity.multiply(EPSILON_MULTIPLIER).setScale(0, RoundingMode.FLOOR);
+                intValues.add(roundedQuantity);
+
+                // Keep the residual of the quantity.
+                //   For example: `3.6 feet`, keep only `0.6 feet`
+                quantity = quantity.subtract(roundedQuantity);
+                if (quantity.compareTo(BigDecimal.ZERO) == -1) {
+                    quantity = BigDecimal.ZERO;
+                }
+            } else { // LAST ELEMENT
+                if (rounder == null) {
+                    // Nothing to do for the last element.
+                    break;
+                }
+
+                // Round the last value
+                // TODO(ICU-21288): get smarter about precision for mixed units.
+                DecimalQuantity quant = new DecimalQuantity_DualStorageBCD(quantity);
+                rounder.apply(quant);
+                quantity = quant.toBigDecimal();
+                if (i == 0) {
+                    // Last element is also the first element, so we're done
+                    break;
+                }
+
+                // Check if there's a carry, and bubble it back up the resulting intValues.
+                BigDecimal carry = unitConverters_.get(i)
+                                       .convertInverse(quantity)
+                                       .multiply(EPSILON_MULTIPLIER)
+                                       .setScale(0, RoundingMode.FLOOR);
+                if (carry.compareTo(BigDecimal.ZERO) <= 0) { // carry is not greater than zero
+                    break;
+                }
+                quantity = quantity.subtract(unitConverters_.get(i).convert(carry));
+                intValues.set(i - 1, intValues.get(i - 1).add(carry));
+
+                // We don't use the first converter: that one is for the input unit
+                for (int j = i - 1; j > 0; j--) {
+                    carry = unitConverters_.get(j)
+                                .convertInverse(intValues.get(j))
+                                .multiply(EPSILON_MULTIPLIER)
+                                .setScale(0, RoundingMode.FLOOR);
+                    if (carry.compareTo(BigDecimal.ZERO) <= 0) { // carry is not greater than zero
+                        break;
+                    }
+                    intValues.set(j, intValues.get(j).subtract(unitConverters_.get(j).convert(carry)));
+                    intValues.set(j - 1, intValues.get(j - 1).add(carry));
+                }
+            }
+        }
+
+        // Package values into Measure instances in result:
+        for (int i = 0, n = unitConverters_.size(); i < n; ++i) {
+            if (i < n - 1) {
+                result.add(new Measure(intValues.get(i).multiply(sign), units_.get(i).build()));
+            } else {
+                result.add(new Measure(quantity.multiply(sign), units_.get(i).build()));
+            }
+        }
+
+        for (int i = 0; i < result.size(); i++) {
+            for (int j = i; j < result.size(); j++) {
+                // Find the next expected unit, and swap it into place.
+                if (result.get(j).getUnit().equals(outputUnits_.get(i))) {
+                    if (j != i) {
+                        Measure tmp = result.get(j);
+                        result.set(j, result.get(i));
+                        result.set(i, tmp);
+                    }
+                }
+            }
+        }
+    
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "ComplexUnitsConverter [unitConverters_=" + unitConverters_ + ", units_=" + units_ + "]";
+    }
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/units/ConversionRates.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/units/ConversionRates.java
new file mode 100644
index 0000000..f5d1d28
--- /dev/null
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/units/ConversionRates.java
@@ -0,0 +1,235 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+
+package com.ibm.icu.impl.units;
+
+import java.math.BigDecimal;
+import java.math.MathContext;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.UResource;
+import com.ibm.icu.util.MeasureUnit;
+import com.ibm.icu.util.UResourceBundle;
+
+public class ConversionRates {
+
+    /**
+     * Map from any simple unit (i.e. "meter", "foot", "inch") to its basic/root conversion rate info.
+     */
+    private HashMap<String, ConversionRateInfo> mapToConversionRate;
+
+    public ConversionRates() {
+        // Read the conversion rates from the data (units.txt).
+        ICUResourceBundle resource;
+        resource = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUData.ICU_BASE_NAME, "units");
+        ConversionRatesSink sink = new ConversionRatesSink();
+        resource.getAllItemsWithFallback(UnitsData.Constants.CONVERSION_UNIT_TABLE_NAME, sink);
+        this.mapToConversionRate = sink.getMapToConversionRate();
+    }
+
+    /**
+     * Extracts the factor from a `SingleUnitImpl` to its Basic Unit.
+     *
+     * @param singleUnit
+     * @return
+     */
+    private UnitConverter.Factor getFactorToBase(SingleUnitImpl singleUnit) {
+        int power = singleUnit.getDimensionality();
+        MeasureUnit.SIPrefix siPrefix = singleUnit.getSiPrefix();
+        UnitConverter.Factor result = UnitConverter.Factor.processFactor(mapToConversionRate.get(singleUnit.getSimpleUnit()).getConversionRate());
+
+        return result.applySiPrefix(siPrefix).power(power); // NOTE: you must apply the SI prefixes before the power.
+    }
+
+    public UnitConverter.Factor getFactorToBase(MeasureUnitImpl measureUnit) {
+        UnitConverter.Factor result = new UnitConverter.Factor();
+        for (SingleUnitImpl singleUnit :
+                measureUnit.getSingleUnits()) {
+            result = result.multiply(getFactorToBase(singleUnit));
+        }
+
+        return result;
+    }
+
+    protected BigDecimal getOffset(MeasureUnitImpl source, MeasureUnitImpl target, UnitConverter.Factor
+            sourceToBase, UnitConverter.Factor targetToBase, UnitConverter.Convertibility convertibility) {
+        if (convertibility != UnitConverter.Convertibility.CONVERTIBLE) return BigDecimal.valueOf(0);
+        if (!(checkSimpleUnit(source) && checkSimpleUnit(target))) return BigDecimal.valueOf(0);
+
+        String sourceSimpleIdentifier = source.getSingleUnits().get(0).getSimpleUnit();
+        String targetSimpleIdentifier = target.getSingleUnits().get(0).getSimpleUnit();
+
+        BigDecimal sourceOffset = this.mapToConversionRate.get(sourceSimpleIdentifier).getOffset();
+        BigDecimal targetOffset = this.mapToConversionRate.get(targetSimpleIdentifier).getOffset();
+        return sourceOffset
+                .subtract(targetOffset)
+                .divide(targetToBase.getConversionRate(), MathContext.DECIMAL128);
+
+
+    }
+
+    public MeasureUnitImpl extractCompoundBaseUnit(MeasureUnitImpl measureUnit) {
+        ArrayList<SingleUnitImpl> baseUnits = this.extractBaseUnits(measureUnit);
+
+        MeasureUnitImpl result = new MeasureUnitImpl();
+        for (SingleUnitImpl baseUnit :
+                baseUnits) {
+            result.appendSingleUnit(baseUnit);
+        }
+
+        return result;
+    }
+
+    public ArrayList<SingleUnitImpl> extractBaseUnits(MeasureUnitImpl measureUnitImpl) {
+        ArrayList<SingleUnitImpl> result = new ArrayList<>();
+        ArrayList<SingleUnitImpl> singleUnits = measureUnitImpl.getSingleUnits();
+        for (SingleUnitImpl singleUnit :
+                singleUnits) {
+            result.addAll(extractBaseUnits(singleUnit));
+        }
+
+        return result;
+    }
+
+    /**
+     * @param singleUnit An instance of SingleUnitImpl.
+     * @return The base units in the `SingleUnitImpl` with applying the dimensionality only and not the SI prefix.
+     * <p>
+     * NOTE:
+     * This method is helpful when checking the convertibility because no need to check convertibility.
+     */
+    public ArrayList<SingleUnitImpl> extractBaseUnits(SingleUnitImpl singleUnit) {
+        String target = mapToConversionRate.get(singleUnit.getSimpleUnit()).getTarget();
+        MeasureUnitImpl targetImpl = MeasureUnitImpl.UnitsParser.parseForIdentifier(target);
+
+        // Each unit must be powered by the same dimension
+        targetImpl.applyDimensionality(singleUnit.getDimensionality());
+
+        // NOTE: we do not apply SI prefixes.
+
+        return targetImpl.getSingleUnits();
+    }
+
+    /**
+     * Checks if the `MeasureUnitImpl` is simple or not.
+     *
+     * @param measureUnitImpl
+     * @return true if the `MeasureUnitImpl` is simple, false otherwise.
+     */
+    private boolean checkSimpleUnit(MeasureUnitImpl measureUnitImpl) {
+        if (measureUnitImpl.getComplexity() != MeasureUnit.Complexity.SINGLE) return false;
+        SingleUnitImpl singleUnit = measureUnitImpl.getSingleUnits().get(0);
+
+        if (singleUnit.getSiPrefix() != MeasureUnit.SIPrefix.ONE) return false;
+        if (singleUnit.getDimensionality() != 1) return false;
+
+        return true;
+    }
+
+    public static class ConversionRatesSink extends UResource.Sink {
+        /**
+         * Map from any simple unit (i.e. "meter", "foot", "inch") to its basic/root conversion rate info.
+         */
+        private HashMap<String, ConversionRateInfo> mapToConversionRate = new HashMap<>();
+
+        @Override
+        public void put(UResource.Key key, UResource.Value value, boolean noFallback) {
+            assert (UnitsData.Constants.CONVERSION_UNIT_TABLE_NAME.equals(key.toString()));
+
+            UResource.Table conversionRateTable = value.getTable();
+            for (int i = 0; conversionRateTable.getKeyAndValue(i, key, value); i++) {
+                assert (value.getType() == UResourceBundle.TABLE);
+
+                String simpleUnit = key.toString();
+
+                UResource.Table simpleUnitConversionInfo = value.getTable();
+                String target = null;
+                String factor = null;
+                String offset = "0";
+                for (int j = 0; simpleUnitConversionInfo.getKeyAndValue(j, key, value); j++) {
+                    assert (value.getType() == UResourceBundle.STRING);
+
+
+                    String keyString = key.toString();
+                    String valueString = value.toString().replaceAll(" ", "");
+                    if ("target".equals(keyString)) {
+                        target = valueString;
+                    } else if ("factor".equals(keyString)) {
+                        factor = valueString;
+                    } else if ("offset".equals(keyString)) {
+                        offset = valueString;
+                    } else {
+                        assert false : "The key must be target, factor or offset";
+                    }
+                }
+
+                // HERE a single conversion rate data should be loaded
+                assert (target != null);
+                assert (factor != null);
+
+                mapToConversionRate.put(simpleUnit, new ConversionRateInfo(simpleUnit, target, factor, offset));
+            }
+
+
+        }
+
+        public HashMap<String, ConversionRateInfo> getMapToConversionRate() {
+            return mapToConversionRate;
+        }
+    }
+
+    public static class ConversionRateInfo {
+
+        @SuppressWarnings("unused")
+        private final String simpleUnit;
+        private final String target;
+        private final String conversionRate;
+        private final BigDecimal offset;
+
+        public ConversionRateInfo(String simpleUnit, String target, String conversionRate, String offset) {
+            this.simpleUnit = simpleUnit;
+            this.target = target;
+            this.conversionRate = conversionRate;
+            this.offset = forNumberWithDivision(offset);
+        }
+
+        private static BigDecimal forNumberWithDivision(String numberWithDivision) {
+            String[] numbers = numberWithDivision.split("/");
+            assert (numbers.length <= 2);
+
+            if (numbers.length == 1) {
+                return new BigDecimal(numbers[0]);
+            }
+
+            return new BigDecimal(numbers[0]).divide(new BigDecimal(numbers[1]), MathContext.DECIMAL128);
+        }
+
+        /**
+         * @return the base unit.
+         * <p>
+         * For example:
+         * ("meter", "foot", "inch", "mile" ... etc.) have "meter" as a base/root unit.
+         */
+        public String getTarget() {
+            return this.target;
+        }
+
+        /**
+         * @return The offset from this unit to the base unit.
+         */
+        public BigDecimal getOffset() {
+            return this.offset;
+        }
+
+        /**
+         * @return The conversion rate from this unit to the base unit.
+         */
+        public String getConversionRate() {
+            return conversionRate;
+        }
+    }
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/units/MeasureUnitImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/units/MeasureUnitImpl.java
new file mode 100644
index 0000000..ba1dae1
--- /dev/null
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/units/MeasureUnitImpl.java
@@ -0,0 +1,764 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package com.ibm.icu.impl.units;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+
+import com.ibm.icu.util.BytesTrie;
+import com.ibm.icu.util.CharsTrie;
+import com.ibm.icu.util.CharsTrieBuilder;
+import com.ibm.icu.util.ICUCloneNotSupportedException;
+import com.ibm.icu.util.MeasureUnit;
+import com.ibm.icu.util.StringTrieBuilder;
+
+public class MeasureUnitImpl {
+
+    /**
+     * The full unit identifier.  Null if not computed.
+     */
+    private String identifier = null;
+
+    /**
+     * The complexity, either SINGLE, COMPOUND, or MIXED.
+     */
+    private MeasureUnit.Complexity complexity = MeasureUnit.Complexity.SINGLE;
+
+    /**
+     * The list of simple units. These may be summed or multiplied, based on the
+     * value of the complexity field.
+     * <p>
+     * The "dimensionless" unit (SingleUnitImpl default constructor) must not be
+     * added to this list.
+     * <p>
+     * The "dimensionless" <code>MeasureUnitImpl</code> has an empty <code>singleUnits</code>.
+     */
+    private final ArrayList<SingleUnitImpl> singleUnits;
+
+    public MeasureUnitImpl() {
+        singleUnits = new ArrayList<>();
+    }
+
+    public MeasureUnitImpl(SingleUnitImpl singleUnit) {
+        this();
+        this.appendSingleUnit(singleUnit);
+    }
+
+    /**
+     * Parse a unit identifier into a MeasureUnitImpl.
+     *
+     * @param identifier The unit identifier string.
+     * @return A newly parsed object.
+     * @throws IllegalArgumentException in case of incorrect/non-parsed identifier.
+     */
+    public static MeasureUnitImpl forIdentifier(String identifier) {
+        return UnitsParser.parseForIdentifier(identifier);
+    }
+
+    /**
+     * Used for currency units.
+     */
+    public static MeasureUnitImpl forCurrencyCode(String currencyCode) {
+        MeasureUnitImpl result = new MeasureUnitImpl();
+        result.identifier = currencyCode;
+        return result;
+    }
+
+    public MeasureUnitImpl copy() {
+        MeasureUnitImpl result = new MeasureUnitImpl();
+        result.complexity = this.complexity;
+        result.identifier = this.identifier;
+        for (SingleUnitImpl single : this.singleUnits) {
+            result.singleUnits.add(single.copy());
+        }
+        return result;
+    }
+
+    /**
+     * Returns the list of simple units.
+     */
+    public ArrayList<SingleUnitImpl> getSingleUnits() {
+        return singleUnits;
+    }
+
+    /**
+     * Mutates this MeasureUnitImpl to take the reciprocal.
+     */
+    public void takeReciprocal() {
+        this.identifier = null;
+        for (SingleUnitImpl singleUnit :
+                this.singleUnits) {
+            singleUnit.setDimensionality(singleUnit.getDimensionality() * -1);
+        }
+    }
+
+    /**
+     * Extracts the list of all the individual units inside the `MeasureUnitImpl`.
+     * For example:
+     * -   if the <code>MeasureUnitImpl</code> is <code>foot-per-hour</code>
+     * it will return a list of 1 <code>{foot-per-hour}</code>
+     * -   if the <code>MeasureUnitImpl</code> is <code>foot-and-inch</code>
+     * it will return a list of 2 <code>{ foot, inch}</code>
+     *
+     * @return a list of <code>MeasureUnitImpl</code>
+     */
+    public ArrayList<MeasureUnitImpl> extractIndividualUnits() {
+        ArrayList<MeasureUnitImpl> result = new ArrayList<>();
+        if (this.getComplexity() == MeasureUnit.Complexity.MIXED) {
+            // In case of mixed units, each single unit can be considered as a stand alone MeasureUnitImpl.
+            for (SingleUnitImpl singleUnit :
+                    this.getSingleUnits()) {
+                result.add(new MeasureUnitImpl(singleUnit));
+            }
+
+            return result;
+        }
+
+        result.add(this.copy());
+        return result;
+    }
+
+    /**
+     * Applies dimensionality to all the internal single units.
+     * For example: <b>square-meter-per-second</b>, when we apply dimensionality -2, it will be <b>square-second-per-p4-meter</b>
+     */
+    public void applyDimensionality(int dimensionality) {
+        for (SingleUnitImpl singleUnit :
+                singleUnits) {
+            singleUnit.setDimensionality(singleUnit.getDimensionality() * dimensionality);
+        }
+    }
+
+    /**
+     * Mutates this MeasureUnitImpl to append a single unit.
+     *
+     * @return true if a new item was added. If unit is the dimensionless unit,
+     * it is never added: the return value will always be false.
+     */
+    public boolean appendSingleUnit(SingleUnitImpl singleUnit) {
+        identifier = null;
+
+        if (singleUnit == null) {
+            // We don't append dimensionless units.
+            return false;
+        }
+
+        // Find a similar unit that already exists, to attempt to coalesce
+        SingleUnitImpl oldUnit = null;
+        for (SingleUnitImpl candidate : this.singleUnits) {
+            if (candidate.isCompatibleWith(singleUnit)) {
+                oldUnit = candidate;
+                break;
+            }
+        }
+
+        if (oldUnit != null) {
+            // Both dimensionalities will be positive, or both will be negative, by
+            // virtue of isCompatibleWith().
+            oldUnit.setDimensionality(oldUnit.getDimensionality() + singleUnit.getDimensionality());
+
+            return false;
+        }
+
+        // Add a copy of singleUnit
+        this.singleUnits.add(singleUnit.copy());
+
+        // If the MeasureUnitImpl is `UMEASURE_UNIT_SINGLE` and after the appending a unit, the singleUnits are more
+        // than one singleUnit. thus means the complexity should be `UMEASURE_UNIT_COMPOUND`
+        if (this.singleUnits.size() > 1 && this.complexity == MeasureUnit.Complexity.SINGLE) {
+            this.setComplexity(MeasureUnit.Complexity.COMPOUND);
+        }
+
+        return true;
+    }
+
+    /**
+     * Transform this MeasureUnitImpl into a MeasureUnit, simplifying if possible.
+     * <p>
+     * NOTE: this function must be called from a thread-safe class
+     */
+    public MeasureUnit build() {
+        return MeasureUnit.fromMeasureUnitImpl(this);
+    }
+
+    /**
+     * @return SingleUnitImpl
+     * @throws UnsupportedOperationException if the object could not be converted to SingleUnitImpl.
+     */
+    public SingleUnitImpl getSingleUnitImpl() {
+        if (this.singleUnits.size() == 0) {
+            return new SingleUnitImpl();
+        }
+        if (this.singleUnits.size() == 1) {
+            return this.singleUnits.get(0).copy();
+        }
+
+        throw new UnsupportedOperationException();
+    }
+
+
+    /**
+     * Returns the CLDR unit identifier and null if not computed.
+     */
+    public String getIdentifier() {
+        return identifier;
+    }
+
+    public MeasureUnit.Complexity getComplexity() {
+        return complexity;
+    }
+
+    public void setComplexity(MeasureUnit.Complexity complexity) {
+        this.complexity = complexity;
+    }
+
+    /**
+     * Normalizes the MeasureUnitImpl and generates the identifier string in place.
+     */
+    public void serialize() {
+        if (this.getSingleUnits().size() == 0) {
+            // Dimensionless, constructed by the default constructor: no appending
+            // to this.result, we wish it to contain the zero-length string.
+            return;
+        }
+        if (this.complexity == MeasureUnit.Complexity.COMPOUND) {
+            // Note: don't sort a MIXED unit
+            Collections.sort(this.getSingleUnits(), new SingleUnitComparator());
+        }
+
+        StringBuilder result = new StringBuilder();
+        boolean beforePer = true;
+        boolean firstTimeNegativeDimension = false;
+        for (SingleUnitImpl singleUnit :
+                this.getSingleUnits()) {
+            if (beforePer && singleUnit.getDimensionality() < 0) {
+                beforePer = false;
+                firstTimeNegativeDimension = true;
+            } else if (singleUnit.getDimensionality() < 0) {
+                firstTimeNegativeDimension = false;
+            }
+
+            String singleUnitIdentifier = singleUnit.getNeutralIdentifier();
+            if (this.getComplexity() == MeasureUnit.Complexity.MIXED) {
+                if (result.length() != 0) {
+                    result.append("-and-");
+                }
+            } else {
+                if (firstTimeNegativeDimension) {
+                    if (result.length() == 0) {
+                        result.append("per-");
+                    } else {
+                        result.append("-per-");
+                    }
+                } else {
+                    if (result.length() != 0) {
+                        result.append("-");
+                    }
+                }
+            }
+
+            result.append(singleUnitIdentifier);
+        }
+
+        this.identifier = result.toString();
+    }
+
+    public enum CompoundPart {
+        // Represents "-per-"
+        PER(0),
+        // Represents "-"
+        TIMES(1),
+        // Represents "-and-"
+        AND(2);
+
+        private final int index;
+
+        CompoundPart(int index) {
+            this.index = index;
+        }
+
+        public static CompoundPart getCompoundPartFromTrieIndex(int trieIndex) {
+            int index = trieIndex - UnitsData.Constants.kCompoundPartOffset;
+            switch (index) {
+                case 0:
+                    return CompoundPart.PER;
+                case 1:
+                    return CompoundPart.TIMES;
+                case 2:
+                    return CompoundPart.AND;
+                default:
+                    throw new AssertionError("CompoundPart index must be 0, 1 or 2");
+            }
+        }
+
+        public int getTrieIndex() {
+            return this.index + UnitsData.Constants.kCompoundPartOffset;
+        }
+
+        public int getValue() {
+            return index;
+        }
+    }
+
+    public enum PowerPart {
+        P2(2),
+        P3(3),
+        P4(4),
+        P5(5),
+        P6(6),
+        P7(7),
+        P8(8),
+        P9(9),
+        P10(10),
+        P11(11),
+        P12(12),
+        P13(13),
+        P14(14),
+        P15(15);
+
+        private final int power;
+
+        PowerPart(int power) {
+            this.power = power;
+        }
+
+        public static int getPowerFromTrieIndex(int trieIndex) {
+            return trieIndex - UnitsData.Constants.kPowerPartOffset;
+        }
+
+        public int getTrieIndex() {
+            return this.power + UnitsData.Constants.kPowerPartOffset;
+        }
+
+        public int getValue() {
+            return power;
+        }
+    }
+
+    public enum InitialCompoundPart {
+
+        // Represents "per-", the only compound part that can appear at the start of
+        // an identifier.
+        INITIAL_COMPOUND_PART_PER(0);
+
+        private final int index;
+
+        InitialCompoundPart(int powerIndex) {
+            this.index = powerIndex;
+        }
+
+        public static InitialCompoundPart getInitialCompoundPartFromTrieIndex(int trieIndex) {
+            int index = trieIndex - UnitsData.Constants.kInitialCompoundPartOffset;
+            if (index == 0) {
+                return INITIAL_COMPOUND_PART_PER;
+            }
+
+            throw new IllegalArgumentException("Incorrect trieIndex");
+        }
+
+        public int getTrieIndex() {
+            return this.index + UnitsData.Constants.kInitialCompoundPartOffset;
+        }
+
+        public int getValue() {
+            return index;
+        }
+
+    }
+
+    public static class UnitsParser {
+        // This used only to not build the trie each time we use the parser
+        private volatile static CharsTrie savedTrie = null;
+
+        // This trie used in the parsing operation.
+        private final CharsTrie trie;
+        private final String fSource;
+        // Tracks parser progress: the offset into fSource.
+        private int fIndex = 0;
+        // Set to true when we've seen a "-per-" or a "per-", after which all units
+        // are in the denominator. Until we find an "-and-", at which point the
+        // identifier is invalid pending TODO(CLDR-13700).
+        private boolean fAfterPer = false;
+        // If an "-and-" was parsed prior to finding the "single
+        //     * unit", sawAnd is set to true. If not, it is left as is.
+        private boolean fSawAnd = false;
+
+        private UnitsParser(String identifier) {
+            this.fSource = identifier;
+
+            try {
+                this.trie = UnitsParser.savedTrie.clone();
+            } catch (CloneNotSupportedException e) {
+                throw new ICUCloneNotSupportedException();
+            }
+        }
+
+        static {
+            // Build Units trie.
+            CharsTrieBuilder trieBuilder;
+            trieBuilder = new CharsTrieBuilder();
+
+            // Add syntax parts (compound, power prefixes)
+            trieBuilder.add("-per-", CompoundPart.PER.getTrieIndex());
+            trieBuilder.add("-", CompoundPart.TIMES.getTrieIndex());
+            trieBuilder.add("-and-", CompoundPart.AND.getTrieIndex());
+            trieBuilder.add("per-", InitialCompoundPart.INITIAL_COMPOUND_PART_PER.getTrieIndex());
+            trieBuilder.add("square-", PowerPart.P2.getTrieIndex());
+            trieBuilder.add("cubic-", PowerPart.P3.getTrieIndex());
+            trieBuilder.add("pow2-", PowerPart.P2.getTrieIndex());
+            trieBuilder.add("pow3-", PowerPart.P3.getTrieIndex());
+            trieBuilder.add("pow4-", PowerPart.P4.getTrieIndex());
+            trieBuilder.add("pow5-", PowerPart.P5.getTrieIndex());
+            trieBuilder.add("pow6-", PowerPart.P6.getTrieIndex());
+            trieBuilder.add("pow7-", PowerPart.P7.getTrieIndex());
+            trieBuilder.add("pow8-", PowerPart.P8.getTrieIndex());
+            trieBuilder.add("pow9-", PowerPart.P9.getTrieIndex());
+            trieBuilder.add("pow10-", PowerPart.P10.getTrieIndex());
+            trieBuilder.add("pow11-", PowerPart.P11.getTrieIndex());
+            trieBuilder.add("pow12-", PowerPart.P12.getTrieIndex());
+            trieBuilder.add("pow13-", PowerPart.P13.getTrieIndex());
+            trieBuilder.add("pow14-", PowerPart.P14.getTrieIndex());
+            trieBuilder.add("pow15-", PowerPart.P15.getTrieIndex());
+
+            // Add SI prefixes
+            for (MeasureUnit.SIPrefix siPrefix :
+                    MeasureUnit.SIPrefix.values()) {
+                trieBuilder.add(siPrefix.getIdentifier(), getTrieIndex(siPrefix));
+            }
+
+            // Add simple units
+            String[] simpleUnits = UnitsData.getSimpleUnits();
+            for (int i = 0; i < simpleUnits.length; i++) {
+                trieBuilder.add(simpleUnits[i], i + UnitsData.Constants.kSimpleUnitOffset);
+
+            }
+
+            // TODO: Use SLOW or FAST here?
+            UnitsParser.savedTrie = trieBuilder.build(StringTrieBuilder.Option.FAST);
+        }
+
+        /**
+         * Construct a MeasureUnit from a CLDR Unit Identifier, defined in UTS 35.
+         * Validates and canonicalizes the identifier.
+         *
+         * @return MeasureUnitImpl object or null if the identifier is empty.
+         * @throws IllegalArgumentException in case of invalid identifier.
+         */
+        public static MeasureUnitImpl parseForIdentifier(String identifier) {
+            if (identifier == null || identifier.isEmpty()) {
+                return null;
+            }
+
+            UnitsParser parser = new UnitsParser(identifier);
+            return parser.parse();
+
+        }
+
+        private static MeasureUnit.SIPrefix getSiPrefixFromTrieIndex(int trieIndex) {
+            for (MeasureUnit.SIPrefix element :
+                    MeasureUnit.SIPrefix.values()) {
+                if (getTrieIndex(element) == trieIndex)
+                    return element;
+            }
+
+            throw new IllegalArgumentException("Incorrect trieIndex");
+        }
+
+        private static int getTrieIndex(MeasureUnit.SIPrefix prefix) {
+            return prefix.getPower() + UnitsData.Constants.kSIPrefixOffset;
+        }
+
+        private MeasureUnitImpl parse() {
+            MeasureUnitImpl result = new MeasureUnitImpl();
+
+            if (fSource.isEmpty()) {
+                // The dimensionless unit: nothing to parse. return null.
+                return null;
+            }
+
+            while (hasNext()) {
+                fSawAnd = false;
+                SingleUnitImpl singleUnit = nextSingleUnit();
+
+                boolean added = result.appendSingleUnit(singleUnit);
+                if (fSawAnd && !added) {
+                    throw new IllegalArgumentException("Two similar units are not allowed in a mixed unit.");
+                }
+
+                if ((result.singleUnits.size()) >= 2) {
+                    // nextSingleUnit fails appropriately for "per" and "and" in the
+                    // same identifier. It doesn't fail for other compound units
+                    // (COMPOUND_PART_TIMES). Consequently we take care of that
+                    // here.
+                    MeasureUnit.Complexity complexity =
+                            fSawAnd ? MeasureUnit.Complexity.MIXED : MeasureUnit.Complexity.COMPOUND;
+                    if (result.getSingleUnits().size() == 2) {
+                        // After appending two singleUnits, the complexity will be `UMEASURE_UNIT_COMPOUND`
+                        assert result.getComplexity() == MeasureUnit.Complexity.COMPOUND;
+                        result.setComplexity(complexity);
+                    } else if (result.getComplexity() != complexity) {
+                        throw new IllegalArgumentException("Can't have mixed compound units");
+                    }
+                }
+            }
+
+            return result;
+        }
+
+        /**
+         * Returns the next "single unit" via result.
+         * <p>
+         * If a "-per-" was parsed, the result will have appropriate negative
+         * dimensionality.
+         * <p>
+         *
+         * @throws IllegalArgumentException if we parse both compound units and "-and-", since mixed
+         *                                  compound units are not yet supported - TODO(CLDR-13700).
+         */
+        private SingleUnitImpl nextSingleUnit() {
+            SingleUnitImpl result = new SingleUnitImpl();
+
+            // state:
+            // 0 = no tokens seen yet (will accept power, SI prefix, or simple unit)
+            // 1 = power token seen (will not accept another power token)
+            // 2 = SI prefix token seen (will not accept a power or SI prefix token)
+            int state = 0;
+
+            boolean atStart = fIndex == 0;
+            Token token = nextToken();
+
+            if (atStart) {
+                // Identifiers optionally start with "per-".
+                if (token.getType() == Token.Type.TYPE_INITIAL_COMPOUND_PART) {
+                    assert token.getInitialCompoundPart() == InitialCompoundPart.INITIAL_COMPOUND_PART_PER;
+
+                    fAfterPer = true;
+                    result.setDimensionality(-1);
+
+                    token = nextToken();
+                }
+            } else {
+                // All other SingleUnit's are separated from previous SingleUnit's
+                // via a compound part:
+                if (token.getType() != Token.Type.TYPE_COMPOUND_PART) {
+                    throw new IllegalArgumentException("token type must be TYPE_COMPOUND_PART");
+                }
+
+                CompoundPart compoundPart = CompoundPart.getCompoundPartFromTrieIndex(token.getMatch());
+                switch (compoundPart) {
+                    case PER:
+                        if (fSawAnd) {
+                            throw new IllegalArgumentException("Mixed compound units not yet supported");
+                            // TODO(CLDR-13700).
+                        }
+
+                        fAfterPer = true;
+                        result.setDimensionality(-1);
+                        break;
+
+                    case TIMES:
+                        if (fAfterPer) {
+                            result.setDimensionality(-1);
+                        }
+                        break;
+
+                    case AND:
+                        if (fAfterPer) {
+                            // not yet supported, TODO(CLDR-13700).
+                            throw new IllegalArgumentException("Can't start with \"-and-\", and mixed compound units");
+                        }
+                        fSawAnd = true;
+                        break;
+                }
+
+                token = nextToken();
+            }
+
+            // Read tokens until we have a complete SingleUnit or we reach the end.
+            while (true) {
+                switch (token.getType()) {
+                    case TYPE_POWER_PART:
+                        if (state > 0) {
+                            throw new IllegalArgumentException();
+                        }
+
+                        result.setDimensionality(result.getDimensionality() * token.getPower());
+                        state = 1;
+                        break;
+
+                    case TYPE_SI_PREFIX:
+                        if (state > 1) {
+                            throw new IllegalArgumentException();
+                        }
+
+                        result.setSiPrefix(token.getSIPrefix());
+                        state = 2;
+                        break;
+
+                    case TYPE_SIMPLE_UNIT:
+                        result.setSimpleUnit(token.getSimpleUnitIndex(), UnitsData.getSimpleUnits());
+                        return result;
+
+                    default:
+                        throw new IllegalArgumentException();
+                }
+
+                if (!hasNext()) {
+                    throw new IllegalArgumentException("We ran out of tokens before finding a complete single unit.");
+                }
+
+                token = nextToken();
+            }
+        }
+
+        private boolean hasNext() {
+            return fIndex < fSource.length();
+        }
+
+        private Token nextToken() {
+            trie.reset();
+            int match = -1;
+            // Saves the position in the fSource string for the end of the most
+            // recent matching token.
+            int previ = -1;
+
+            // Find the longest token that matches a value in the trie:
+            while (fIndex < fSource.length()) {
+                BytesTrie.Result result = trie.next(fSource.charAt(fIndex++));
+                if (result == BytesTrie.Result.NO_MATCH) {
+                    break;
+                } else if (result == BytesTrie.Result.NO_VALUE) {
+                    continue;
+                }
+
+                match = trie.getValue();
+                previ = fIndex;
+
+                if (result == BytesTrie.Result.FINAL_VALUE) {
+                    break;
+                }
+
+                if (result != BytesTrie.Result.INTERMEDIATE_VALUE) {
+                    throw new IllegalArgumentException("result must has an intermediate value");
+                }
+
+                // continue;
+            }
+
+
+            if (match < 0) {
+                throw new IllegalArgumentException("Encountered unknown token starting at index " + previ);
+            } else {
+                fIndex = previ;
+            }
+
+            return new Token(match);
+        }
+
+        static class Token {
+
+            private final int fMatch;
+            private final Type type;
+
+            public Token(int fMatch) {
+                this.fMatch = fMatch;
+                type = calculateType(fMatch);
+            }
+
+            public Type getType() {
+                return this.type;
+            }
+
+            public MeasureUnit.SIPrefix getSIPrefix() {
+                assert this.type == Type.TYPE_SI_PREFIX;
+                return getSiPrefixFromTrieIndex(this.fMatch);
+            }
+
+            // Valid only for tokens with type TYPE_COMPOUND_PART.
+            public int getMatch() {
+                assert getType() == Type.TYPE_COMPOUND_PART;
+                return fMatch;
+            }
+
+            // Even if there is only one InitialCompoundPart value, we have this
+            // function for the simplicity of code consistency.
+            public InitialCompoundPart getInitialCompoundPart() {
+                assert (this.type == Type.TYPE_INITIAL_COMPOUND_PART
+                        &&
+                        fMatch == InitialCompoundPart.INITIAL_COMPOUND_PART_PER.getTrieIndex());
+                return InitialCompoundPart.getInitialCompoundPartFromTrieIndex(fMatch);
+            }
+
+            public int getPower() {
+                assert this.type == Type.TYPE_POWER_PART;
+                return PowerPart.getPowerFromTrieIndex(this.fMatch);
+            }
+
+            public int getSimpleUnitIndex() {
+                return this.fMatch - UnitsData.Constants.kSimpleUnitOffset;
+            }
+
+            // Calling calculateType() is invalid, resulting in an assertion failure, if Token
+            // value isn't positive.
+            private Type calculateType(int fMatch) {
+                if (fMatch <= 0) {
+                    throw new AssertionError("fMatch must have a positive value");
+                }
+
+                if (fMatch < UnitsData.Constants.kCompoundPartOffset) {
+                    return Type.TYPE_SI_PREFIX;
+                }
+                if (fMatch < UnitsData.Constants.kInitialCompoundPartOffset) {
+                    return Type.TYPE_COMPOUND_PART;
+                }
+                if (fMatch < UnitsData.Constants.kPowerPartOffset) {
+                    return Type.TYPE_INITIAL_COMPOUND_PART;
+                }
+                if (fMatch < UnitsData.Constants.kSimpleUnitOffset) {
+                    return Type.TYPE_POWER_PART;
+                }
+
+                return Type.TYPE_SIMPLE_UNIT;
+            }
+
+            enum Type {
+                TYPE_UNDEFINED,
+                TYPE_SI_PREFIX,
+                // Token type for "-per-", "-", and "-and-".
+                TYPE_COMPOUND_PART,
+                // Token type for "per-".
+                TYPE_INITIAL_COMPOUND_PART,
+                TYPE_POWER_PART,
+                TYPE_SIMPLE_UNIT,
+            }
+        }
+    }
+
+    static class MeasureUnitImplComparator implements Comparator<MeasureUnitImpl> {
+        private final ConversionRates conversionRates;
+
+        public MeasureUnitImplComparator(ConversionRates conversionRates) {
+            this.conversionRates = conversionRates;
+        }
+
+        @Override
+        public int compare(MeasureUnitImpl o1, MeasureUnitImpl o2) {
+            UnitConverter fromO1toO2 = new UnitConverter(o1, o2, conversionRates);
+            return fromO1toO2.convert(BigDecimal.valueOf(1)).compareTo(BigDecimal.valueOf(1));
+        }
+    }
+
+    static class SingleUnitComparator implements Comparator<SingleUnitImpl> {
+        @Override
+        public int compare(SingleUnitImpl o1, SingleUnitImpl o2) {
+            return o1.compareTo(o2);
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "MeasureUnitImpl [" + build().getIdentifier() + "]";
+    }
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/units/SingleUnitImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/units/SingleUnitImpl.java
new file mode 100644
index 0000000..1fd92ec
--- /dev/null
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/units/SingleUnitImpl.java
@@ -0,0 +1,155 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+package com.ibm.icu.impl.units;
+
+import com.ibm.icu.util.MeasureUnit;
+
+public class SingleUnitImpl {
+    /**
+     * Simple unit index, unique for every simple unit, -1 for the dimensionless
+     * unit. This is an index into a string list in unit.txt {ConversionUnits}.
+     * <p>
+     * The default value is -1, meaning the dimensionless unit:
+     * isDimensionless() will return true, until index is changed.
+     */
+    private int index = -1;
+    /**
+     * SimpleUnit is the simplest form of a Unit. For example, for "square-millimeter", the simple unit would be "meter"Ò
+     * <p>
+     * The default value is "", meaning the dimensionless unit:
+     * isDimensionless() will return true, until index is changed.
+     */
+    private String simpleUnit = "";
+    /**
+     * Determine the power of the `SingleUnit`. For example, for "square-meter", the dimensionality will be `2`.
+     * <p>
+     * NOTE:
+     * Default dimensionality is 1.
+     */
+    private int dimensionality = 1;
+    /**
+     * SI Prefix
+     */
+    private MeasureUnit.SIPrefix siPrefix = MeasureUnit.SIPrefix.ONE;
+
+    public SingleUnitImpl copy() {
+        SingleUnitImpl result = new SingleUnitImpl();
+        result.index = this.index;
+        result.dimensionality = this.dimensionality;
+        result.simpleUnit = this.simpleUnit;
+        result.siPrefix = this.siPrefix;
+
+        return result;
+    }
+
+    public MeasureUnit build() {
+        MeasureUnitImpl measureUnit = new MeasureUnitImpl(this);
+        return measureUnit.build();
+    }
+
+    /**
+     * Generates an neutral identifier string for a single unit which means we do not include the dimension signal.
+     */
+    public String getNeutralIdentifier() {
+        StringBuilder result = new StringBuilder();
+        int posPower = Math.abs(this.getDimensionality());
+
+        assert posPower > 0 : "getIdentifier does not support the dimensionless";
+
+        if (posPower == 1) {
+            // no-op
+        } else if (posPower == 2) {
+            result.append("square-");
+        } else if (posPower == 3) {
+            result.append("cubic-");
+        } else if (posPower <= 15) {
+            result.append("pow");
+            result.append(posPower);
+            result.append('-');
+        } else {
+            // TODO: IllegalArgumentException might not be appropriate here
+            throw new IllegalArgumentException("Unit Identifier Syntax Error");
+        }
+
+        result.append(this.getSiPrefix().getIdentifier());
+        result.append(this.getSimpleUnit());
+
+        return result.toString();
+    }
+
+    /**
+     * Compare this SingleUnitImpl to another SingleUnitImpl for the sake of
+     * sorting and coalescing.
+     * <p>
+     * Takes the sign of dimensionality into account, but not the absolute
+     * value: per-meter is not considered the same as meter, but meter is
+     * considered the same as square-meter.
+     * <p>
+     * The dimensionless unit generally does not get compared, but if it did, it
+     * would sort before other units by virtue of index being < 0 and
+     * dimensionality not being negative.
+     */
+    int compareTo(SingleUnitImpl other) {
+        if (dimensionality < 0 && other.dimensionality > 0) {
+            // Positive dimensions first
+            return 1;
+        }
+        if (dimensionality > 0 && other.dimensionality < 0) {
+            return -1;
+        }
+        if (index < other.index) {
+            return -1;
+        }
+        if (index > other.index) {
+            return 1;
+        }
+        if (this.getSiPrefix().getPower() < other.getSiPrefix().getPower()) {
+            return -1;
+        }
+        if (this.getSiPrefix().getPower() > other.getSiPrefix().getPower()) {
+            return 1;
+        }
+        return 0;
+    }
+
+    /**
+     * Checks whether this SingleUnitImpl is compatible with another for the purpose of coalescing.
+     * <p>
+     * Units with the same base unit and SI prefix should match, except that they must also have
+     * the same dimensionality sign, such that we don't merge numerator and denominator.
+     */
+    boolean isCompatibleWith(SingleUnitImpl other) {
+        return (compareTo(other) == 0);
+    }
+
+    public String getSimpleUnit() {
+        return simpleUnit;
+    }
+
+    public void setSimpleUnit(int simpleUnitIndex, String[] simpleUnits) {
+        this.index = simpleUnitIndex;
+        this.simpleUnit = simpleUnits[simpleUnitIndex];
+    }
+
+    public int getDimensionality() {
+        return dimensionality;
+    }
+
+    public void setDimensionality(int dimensionality) {
+        this.dimensionality = dimensionality;
+    }
+
+    public MeasureUnit.SIPrefix getSiPrefix() {
+        return siPrefix;
+    }
+
+    public void setSiPrefix(MeasureUnit.SIPrefix siPrefix) {
+        this.siPrefix = siPrefix;
+    }
+
+    public int getIndex() {
+        return index;
+    }
+
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/units/UnitConverter.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/units/UnitConverter.java
new file mode 100644
index 0000000..016282e
--- /dev/null
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/units/UnitConverter.java
@@ -0,0 +1,316 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package com.ibm.icu.impl.units;
+
+import static java.math.MathContext.DECIMAL128;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.regex.Pattern;
+
+import com.ibm.icu.util.MeasureUnit;
+
+public class UnitConverter {
+    private BigDecimal conversionRate;
+    private BigDecimal offset;
+
+    /**
+     * Constructor of `UnitConverter`.
+     * NOTE:
+     * - source and target must be under the same category
+     * - e.g. meter to mile --> both of them are length units.
+     *
+     * @param source          represents the source unit.
+     * @param target          represents the target unit.
+     * @param conversionRates contains all the needed conversion rates.
+     */
+    public UnitConverter(MeasureUnitImpl source, MeasureUnitImpl target, ConversionRates conversionRates) {
+        Convertibility convertibility = extractConvertibility(source, target, conversionRates);
+        assert (convertibility == Convertibility.CONVERTIBLE || convertibility == Convertibility.RECIPROCAL);
+
+        Factor sourceToBase = conversionRates.getFactorToBase(source);
+        Factor targetToBase = conversionRates.getFactorToBase(target);
+
+        if (convertibility == Convertibility.CONVERTIBLE) {
+            this.conversionRate = sourceToBase.divide(targetToBase).getConversionRate();
+        } else {
+            this.conversionRate = sourceToBase.multiply(targetToBase).getConversionRate();
+        }
+
+        // calculate the offset
+        this.offset = conversionRates.getOffset(source, target, sourceToBase, targetToBase, convertibility);
+    }
+
+    static public Convertibility extractConvertibility(MeasureUnitImpl source, MeasureUnitImpl target, ConversionRates conversionRates) {
+        ArrayList<SingleUnitImpl> sourceSingleUnits = conversionRates.extractBaseUnits(source);
+        ArrayList<SingleUnitImpl> targetSingleUnits = conversionRates.extractBaseUnits(target);
+
+        HashMap<String, Integer> dimensionMap = new HashMap<>();
+
+        insertInMap(dimensionMap, sourceSingleUnits, 1);
+        insertInMap(dimensionMap, targetSingleUnits, -1);
+
+        if (areDimensionsZeroes(dimensionMap)) return Convertibility.CONVERTIBLE;
+
+        insertInMap(dimensionMap, targetSingleUnits, 2);
+        if (areDimensionsZeroes(dimensionMap)) return Convertibility.RECIPROCAL;
+
+        return Convertibility.UNCONVERTIBLE;
+    }
+
+    /**
+     * Helpers
+     */
+    private static void insertInMap(HashMap<String, Integer> dimensionMap, ArrayList<SingleUnitImpl> singleUnits, int multiplier) {
+        for (SingleUnitImpl singleUnit :
+                singleUnits) {
+            if (dimensionMap.containsKey(singleUnit.getSimpleUnit())) {
+                dimensionMap.put(singleUnit.getSimpleUnit(), dimensionMap.get(singleUnit.getSimpleUnit()) + singleUnit.getDimensionality() * multiplier);
+            } else {
+                dimensionMap.put(singleUnit.getSimpleUnit(), singleUnit.getDimensionality() * multiplier);
+            }
+        }
+    }
+
+    private static boolean areDimensionsZeroes(HashMap<String, Integer> dimensionMap) {
+        for (Integer value :
+                dimensionMap.values()) {
+            if (!value.equals(0)) return false;
+        }
+
+        return true;
+    }
+
+    public BigDecimal convert(BigDecimal inputValue) {
+        return inputValue.multiply(this.conversionRate).add(offset);
+    }
+
+    public BigDecimal convertInverse(BigDecimal inputValue) {
+        return inputValue.subtract(offset).divide(this.conversionRate, DECIMAL128);
+    }
+
+    public enum Convertibility {
+        CONVERTIBLE,
+        RECIPROCAL,
+        UNCONVERTIBLE,
+    }
+
+    // TODO: improve documentation and Constant implementation
+
+    /**
+     * Responsible for all the Factor operation
+     * NOTE:
+     * This class is immutable
+     */
+    static class Factor {
+        private BigDecimal factorNum;
+        private BigDecimal factorDen;
+        /* FACTOR CONSTANTS */
+        private int
+                CONSTANT_FT2M = 0,    // ft2m stands for foot to meter.
+                CONSTANT_PI = 0,      // PI
+                CONSTANT_GRAVITY = 0, // Gravity
+                CONSTANT_G = 0,
+                CONSTANT_GAL_IMP2M3 = 0, // Gallon imp to m3
+                CONSTANT_LB2KG = 0;      // Pound to Kilogram
+
+
+        /**
+         * Creates Empty Factor
+         */
+        public Factor() {
+            this.factorNum = BigDecimal.valueOf(1);
+            this.factorDen = BigDecimal.valueOf(1);
+        }
+
+        public static Factor processFactor(String factor) {
+            assert (!factor.isEmpty());
+
+            // Remove all spaces in the factor
+            factor = factor.replaceAll("\\s+", "");
+
+            String[] fractions = factor.split("/");
+            assert (fractions.length == 1 || fractions.length == 2);
+
+            if (fractions.length == 1) {
+                return processFactorWithoutDivision(fractions[0]);
+            }
+
+            Factor num = processFactorWithoutDivision(fractions[0]);
+            Factor den = processFactorWithoutDivision(fractions[1]);
+            return num.divide(den);
+        }
+
+        private static Factor processFactorWithoutDivision(String factorWithoutDivision) {
+            Factor result = new Factor();
+            for (String poweredEntity :
+                    factorWithoutDivision.split(Pattern.quote("*"))) {
+                result.addPoweredEntity(poweredEntity);
+            }
+
+            return result;
+        }
+
+        /**
+         * Copy this <code>Factor</code>.
+         */
+        protected Factor copy() {
+            Factor result = new Factor();
+            result.factorNum = this.factorNum;
+            result.factorDen = this.factorDen;
+
+            result.CONSTANT_FT2M = this.CONSTANT_FT2M;
+            result.CONSTANT_PI = this.CONSTANT_PI;
+            result.CONSTANT_GRAVITY = this.CONSTANT_GRAVITY;
+            result.CONSTANT_G = this.CONSTANT_G;
+            result.CONSTANT_GAL_IMP2M3 = this.CONSTANT_GAL_IMP2M3;
+            result.CONSTANT_LB2KG = this.CONSTANT_LB2KG;
+
+            return result;
+        }
+
+        /**
+         * Returns a single `BigDecimal` that represent the conversion rate after substituting all the constants.
+         */
+        public BigDecimal getConversionRate() {
+            Factor resultCollector = this.copy();
+
+            resultCollector.substitute(new BigDecimal("0.3048"), this.CONSTANT_FT2M);
+            resultCollector.substitute(new BigDecimal("411557987.0").divide(new BigDecimal("131002976.0"), DECIMAL128), this.CONSTANT_PI);
+            resultCollector.substitute(new BigDecimal("9.80665"), this.CONSTANT_GRAVITY);
+            resultCollector.substitute(new BigDecimal("6.67408E-11"), this.CONSTANT_G);
+            resultCollector.substitute(new BigDecimal("0.00454609"), this.CONSTANT_GAL_IMP2M3);
+            resultCollector.substitute(new BigDecimal("0.45359237"), this.CONSTANT_LB2KG);
+
+            return resultCollector.factorNum.divide(resultCollector.factorDen, DECIMAL128);
+        }
+
+        private void substitute(BigDecimal value, int power) {
+            if (power == 0) return;
+
+            BigDecimal absPoweredValue = value.pow(Math.abs(power), DECIMAL128);
+            if (power > 0) {
+                this.factorNum = this.factorNum.multiply(absPoweredValue);
+            } else {
+                this.factorDen = this.factorDen.multiply(absPoweredValue);
+            }
+        }
+
+        public Factor applySiPrefix(MeasureUnit.SIPrefix siPrefix) {
+            Factor result = this.copy();
+            if (siPrefix == MeasureUnit.SIPrefix.ONE) {
+                return result;
+            }
+
+            BigDecimal siApplied = BigDecimal.valueOf(Math.pow(10.0, Math.abs(siPrefix.getPower())));
+
+            if (siPrefix.getPower() < 0) {
+                result.factorDen = this.factorDen.multiply(siApplied);
+                return result;
+            }
+
+            result.factorNum = this.factorNum.multiply(siApplied);
+            return result;
+        }
+
+        public Factor power(int power) {
+            Factor result = new Factor();
+            if (power == 0) return result;
+            if (power > 0) {
+                result.factorNum = this.factorNum.pow(power);
+                result.factorDen = this.factorDen.pow(power);
+            } else {
+                result.factorNum = this.factorDen.pow(power * -1);
+                result.factorDen = this.factorNum.pow(power * -1);
+            }
+
+            result.CONSTANT_FT2M = this.CONSTANT_FT2M * power;
+            result.CONSTANT_PI = this.CONSTANT_PI * power;
+            result.CONSTANT_GRAVITY = this.CONSTANT_GRAVITY * power;
+            result.CONSTANT_G = this.CONSTANT_G * power;
+            result.CONSTANT_GAL_IMP2M3 = this.CONSTANT_GAL_IMP2M3 * power;
+            result.CONSTANT_LB2KG = this.CONSTANT_LB2KG * power;
+
+            return result;
+        }
+
+        public Factor divide(Factor other) {
+            Factor result = new Factor();
+            result.factorNum = this.factorNum.multiply(other.factorDen);
+            result.factorDen = this.factorDen.multiply(other.factorNum);
+
+            result.CONSTANT_FT2M = this.CONSTANT_FT2M - other.CONSTANT_FT2M;
+            result.CONSTANT_PI = this.CONSTANT_PI - other.CONSTANT_PI;
+            result.CONSTANT_GRAVITY = this.CONSTANT_GRAVITY - other.CONSTANT_GRAVITY;
+            result.CONSTANT_G = this.CONSTANT_G - other.CONSTANT_G;
+            result.CONSTANT_GAL_IMP2M3 = this.CONSTANT_GAL_IMP2M3 - other.CONSTANT_GAL_IMP2M3;
+            result.CONSTANT_LB2KG = this.CONSTANT_LB2KG - other.CONSTANT_LB2KG;
+
+            return result;
+        }
+
+        public Factor multiply(Factor other) {
+            Factor result = new Factor();
+            result.factorNum = this.factorNum.multiply(other.factorNum);
+            result.factorDen = this.factorDen.multiply(other.factorDen);
+
+            result.CONSTANT_FT2M = this.CONSTANT_FT2M + other.CONSTANT_FT2M;
+            result.CONSTANT_PI = this.CONSTANT_PI + other.CONSTANT_PI;
+            result.CONSTANT_GRAVITY = this.CONSTANT_GRAVITY + other.CONSTANT_GRAVITY;
+            result.CONSTANT_G = this.CONSTANT_G + other.CONSTANT_G;
+            result.CONSTANT_GAL_IMP2M3 = this.CONSTANT_GAL_IMP2M3 + other.CONSTANT_GAL_IMP2M3;
+            result.CONSTANT_LB2KG = this.CONSTANT_LB2KG + other.CONSTANT_LB2KG;
+
+            return result;
+        }
+
+        /**
+         * Adds Entity with power or not. For example, `12 ^ 3` or `12`.
+         *
+         * @param poweredEntity
+         */
+        private void addPoweredEntity(String poweredEntity) {
+            String[] entities = poweredEntity.split(Pattern.quote("^"));
+            assert (entities.length == 1 || entities.length == 2);
+
+            int power = entities.length == 2 ? Integer.parseInt(entities[1]) : 1;
+            this.addEntity(entities[0], power);
+        }
+
+        private void addEntity(String entity, int power) {
+            if ("ft_to_m".equals(entity)) {
+                this.CONSTANT_FT2M += power;
+            } else if ("ft2_to_m2".equals(entity)) {
+                this.CONSTANT_FT2M += 2 * power;
+            } else if ("ft3_to_m3".equals(entity)) {
+                this.CONSTANT_FT2M += 3 * power;
+            } else if ("in3_to_m3".equals(entity)) {
+                this.CONSTANT_FT2M += 3 * power;
+                this.factorDen = this.factorDen.multiply(BigDecimal.valueOf(Math.pow(12, 3)));
+            } else if ("gal_to_m3".equals(entity)) {
+                this.factorNum = this.factorNum.multiply(BigDecimal.valueOf(231));
+                this.CONSTANT_FT2M += 3 * power;
+                this.factorDen = this.factorDen.multiply(BigDecimal.valueOf(12 * 12 * 12));
+            } else if ("gal_imp_to_m3".equals(entity)) {
+                this.CONSTANT_GAL_IMP2M3 += power;
+            } else if ("G".equals(entity)) {
+                this.CONSTANT_G += power;
+            } else if ("gravity".equals(entity)) {
+                this.CONSTANT_GRAVITY += power;
+            } else if ("lb_to_kg".equals(entity)) {
+                this.CONSTANT_LB2KG += power;
+            } else if ("PI".equals(entity)) {
+                this.CONSTANT_PI += power;
+            } else {
+                BigDecimal decimalEntity = new BigDecimal(entity).pow(power, DECIMAL128);
+                this.factorNum = this.factorNum.multiply(decimalEntity);
+            }
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "UnitConverter [conversionRate=" + conversionRate + ", offset=" + offset + "]";
+    }
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/units/UnitPreferences.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/units/UnitPreferences.java
new file mode 100644
index 0000000..92496e4
--- /dev/null
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/units/UnitPreferences.java
@@ -0,0 +1,208 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package com.ibm.icu.impl.units;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.UResource;
+import com.ibm.icu.util.UResourceBundle;
+
+public class UnitPreferences {
+
+    private HashMap<String, HashMap<String, UnitPreference[]>> mapToUnitPreferences = new HashMap<>();
+
+    public UnitPreferences() {
+        // Read unit preferences
+        ICUResourceBundle resource;
+        resource = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUData.ICU_BASE_NAME, "units");
+        UnitPreferencesSink sink = new UnitPreferencesSink();
+        resource.getAllItemsWithFallback(UnitsData.Constants.UNIT_PREFERENCE_TABLE_NAME, sink);
+        this.mapToUnitPreferences = sink.getMapToUnitPreferences();
+    }
+
+    public static String formMapKey(String category, String usage) {
+        return category + "++" + usage;
+    }
+
+    /**
+     * Extracts all the sub-usages from a usage including the default one in the end.
+     * The usages will be in order starting with the longest matching one.
+     * For example:
+     * if usage                :   "person-height-child"
+     * the function will return:   "person-height-child"
+     * "person-height"
+     * "person"
+     * "default"
+     *
+     * @param usage
+     * @return
+     */
+    private static String[] getAllUsages(String usage) {
+        ArrayList<String> result = new ArrayList<>();
+        result.add(usage);
+        for (int i = usage.length() - 1; i >= 0; --i) {
+            if (usage.charAt(i) == '-') {
+                result.add(usage.substring(0, i));
+            }
+        }
+
+        if (!usage.equals(UnitsData.Constants.DEFAULT_USAGE)) { // Do not add default usage twice.
+            result.add(UnitsData.Constants.DEFAULT_USAGE);
+        }
+        return result.toArray(new String[0]);
+    }
+
+    public UnitPreference[] getPreferencesFor(String category, String usage, String region) {
+        String[] subUsages = getAllUsages(usage);
+        UnitPreference[] result = null;
+        for (String subUsage :
+                subUsages) {
+            result = getUnitPreferences(category, subUsage, region);
+            if (result != null) break;
+        }
+
+        assert (result != null) : "At least the category must be exist";
+        return result;
+    }
+
+    /**
+     * @param category
+     * @param usage
+     * @param region
+     * @return null if there is no entry associated to the category and usage. O.W. returns the corresponding UnitPreference[]
+     */
+    private UnitPreference[] getUnitPreferences(String category, String usage, String region) {
+        String key = formMapKey(category, usage);
+        if (this.mapToUnitPreferences.containsKey(key)) {
+            HashMap<String, UnitPreference[]> unitPreferencesMap = this.mapToUnitPreferences.get(key);
+            UnitPreference[] result =
+                    unitPreferencesMap.containsKey(region) ?
+                            unitPreferencesMap.get(region) :
+                            unitPreferencesMap.get(UnitsData.Constants.DEFAULT_REGION);
+
+            assert (result != null);
+            return result;
+        }
+
+        return null;
+    }
+
+    public static class UnitPreference {
+        private final String unit;
+        private final BigDecimal geq;
+        private final String skeleton;
+
+
+        public UnitPreference(String unit, String geq, String skeleton) {
+            this.unit = unit;
+            this.geq = new BigDecimal(geq);
+            this.skeleton = skeleton;
+        }
+
+        public String getUnit() {
+            return this.unit;
+        }
+
+        public BigDecimal getGeq() {
+            return geq;
+        }
+
+        public String getSkeleton() {
+            return skeleton;
+        }
+    }
+
+    public static class UnitPreferencesSink extends UResource.Sink {
+
+        private HashMap<String, HashMap<String, UnitPreference[]>> mapToUnitPreferences;
+
+        public UnitPreferencesSink() {
+            this.mapToUnitPreferences = new HashMap<>();
+        }
+
+        public HashMap<String, HashMap<String, UnitPreference[]>> getMapToUnitPreferences() {
+            return mapToUnitPreferences;
+        }
+
+        /**
+         * The unitPreferenceData structure (see icu4c/source/data/misc/units.txt) contains a
+         * hierarchy of category/usage/region, within which are a set of
+         * preferences. Hence three for-loops and another loop for the
+         * preferences themselves.
+         */
+        @Override
+        public void put(UResource.Key key, UResource.Value value, boolean noFallback) {
+            assert (UnitsData.Constants.UNIT_PREFERENCE_TABLE_NAME.equals(key.toString()));
+
+            UResource.Table categoryTable = value.getTable();
+            for (int i = 0; categoryTable.getKeyAndValue(i, key, value); i++) {
+                assert (value.getType() == UResourceBundle.TABLE);
+
+                String category = key.toString();
+                UResource.Table usageTable = value.getTable();
+                for (int j = 0; usageTable.getKeyAndValue(j, key, value); j++) {
+                    assert (value.getType() == UResourceBundle.TABLE);
+
+                    String usage = key.toString();
+                    UResource.Table regionTable = value.getTable();
+                    for (int k = 0; regionTable.getKeyAndValue(k, key, value); k++) {
+                        assert (value.getType() == UResourceBundle.ARRAY);
+
+                        String region = key.toString();
+                        UResource.Array preferencesTable = value.getArray();
+                        ArrayList<UnitPreference> unitPreferences = new ArrayList<>();
+                        for (int l = 0; preferencesTable.getValue(l, value); l++) {
+                            assert (value.getType() == UResourceBundle.TABLE);
+
+                            UResource.Table singlePrefTable = value.getTable();
+                            // TODO collect the data
+                            String unit = null;
+                            String geq = "1";
+                            String skeleton = "";
+                            for (int m = 0; singlePrefTable.getKeyAndValue(m, key, value); m++) {
+                                assert (value.getType() == UResourceBundle.STRING);
+                                String keyString = key.toString();
+                                if ("unit".equals(keyString)) {
+                                    unit = value.getString();
+                                } else if ("geq".equals(keyString)) {
+                                    geq = value.getString();
+                                } else if ("skeleton".equals(keyString)) {
+                                    skeleton = value.getString();
+                                } else {
+                                    assert false : "key must be unit, geq or skeleton";
+                                }
+                            }
+                            assert (unit != null);
+                            unitPreferences.add(new UnitPreference(unit, geq, skeleton));
+                        }
+
+                        assert (!unitPreferences.isEmpty());
+                        this.insertUnitPreferences(
+                                category,
+                                usage,
+                                region,
+                                unitPreferences.toArray(new UnitPreference[0])
+                        );
+                    }
+                }
+            }
+        }
+
+        private void insertUnitPreferences(String category, String usage, String region, UnitPreference[] unitPreferences) {
+            String key = formMapKey(category, usage);
+            HashMap<String, UnitPreference[]> shouldInsert;
+            if (this.mapToUnitPreferences.containsKey(key)) {
+                shouldInsert = this.mapToUnitPreferences.get(key);
+            } else {
+                shouldInsert = new HashMap<>();
+                this.mapToUnitPreferences.put(key, shouldInsert);
+            }
+
+            shouldInsert.put(region, unitPreferences);
+        }
+    }
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/units/UnitsData.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/units/UnitsData.java
new file mode 100644
index 0000000..428fdaf
--- /dev/null
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/units/UnitsData.java
@@ -0,0 +1,185 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+
+package com.ibm.icu.impl.units;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.UResource;
+import com.ibm.icu.util.MeasureUnit;
+import com.ibm.icu.util.UResourceBundle;
+
+/**
+ * Responsible for all units data operations (retriever, analysis, extraction certain data ... etc.).
+ */
+public class UnitsData {
+    private volatile static String[] simpleUnits = null;
+    private ConversionRates conversionRates;
+    private UnitPreferences unitPreferences;
+    /**
+     * Pairs of categories and the corresponding base units.
+     */
+    private Categories categories;
+
+    public UnitsData() {
+        this.conversionRates = new ConversionRates();
+        this.unitPreferences = new UnitPreferences();
+        this.categories = new Categories();
+    }
+
+    public static String[] getSimpleUnits() {
+        if (simpleUnits != null) {
+            return simpleUnits;
+        }
+
+        // Read simple units
+        ICUResourceBundle resource;
+        resource = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUData.ICU_BASE_NAME, "units");
+        SimpleUnitIdentifiersSink sink = new SimpleUnitIdentifiersSink();
+        resource.getAllItemsWithFallback("convertUnits", sink);
+        simpleUnits = sink.simpleUnits;
+
+        return simpleUnits;
+    }
+
+    public ConversionRates getConversionRates() {
+        return conversionRates;
+    }
+
+    public UnitPreferences getUnitPreferences() {
+        return unitPreferences;
+    }
+
+    /**
+     * @param measureUnit An instance of MeasureUnitImpl.
+     * @return the corresponding category.
+     */
+    public String getCategory(MeasureUnitImpl measureUnit) {
+        MeasureUnitImpl baseMeasureUnit
+                = this.getConversionRates().extractCompoundBaseUnit(measureUnit);
+        String baseUnitIdentifier = MeasureUnit.fromMeasureUnitImpl(baseMeasureUnit).getIdentifier();
+
+        if (baseUnitIdentifier.equals("meter-per-cubic-meter")) {
+            // TODO(CLDR-13787,hugovdm): special-casing the consumption-inverse
+            // case. Once CLDR-13787 is clarified, this should be generalised (or
+            // possibly removed):
+
+            return "consumption-inverse";
+        }
+
+        return this.categories.mapFromUnitToCategory.get(baseUnitIdentifier);
+    }
+
+    public UnitPreferences.UnitPreference[] getPreferencesFor(String category, String usage, String region) {
+        return this.unitPreferences.getPreferencesFor(category, usage, region);
+    }
+
+    public static class SimpleUnitIdentifiersSink extends UResource.Sink {
+        String[] simpleUnits = null;
+
+        @Override
+        public void put(UResource.Key key, UResource.Value value, boolean noFallback) {
+            assert key.toString().equals(Constants.CONVERSION_UNIT_TABLE_NAME);
+            assert value.getType() == UResourceBundle.TABLE;
+
+            UResource.Table simpleUnitsTable = value.getTable();
+            ArrayList<String> simpleUnits = new ArrayList<>();
+            for (int i = 0; simpleUnitsTable.getKeyAndValue(i, key, value); i++) {
+                if (key.toString().equals("kilogram")) {
+
+                    // For parsing, we use "gram", the prefixless metric mass unit. We
+                    // thus ignore the SI Base Unit of Mass: it exists due to being the
+                    // mass conversion target unit, but not needed for MeasureUnit
+                    // parsing.
+                    continue;
+                }
+
+                simpleUnits.add(key.toString());
+            }
+
+            this.simpleUnits = simpleUnits.toArray(new String[0]);
+        }
+    }
+
+    /**
+     * Contains all the needed constants.
+     */
+    public static class Constants {
+        // Trie value offset for simple units, e.g. "gram", "nautical-mile",
+        // "fluid-ounce-imperial".
+        public static final int kSimpleUnitOffset = 512;
+
+        // Trie value offset for powers like "square-", "cubic-", "pow2-" etc.
+        public static final int kPowerPartOffset = 256;
+
+
+        // Trie value offset for "per-".
+        public final static int kInitialCompoundPartOffset = 192;
+
+        // Trie value offset for compound parts, e.g. "-per-", "-", "-and-".
+        public final static int kCompoundPartOffset = 128;
+
+        // Trie value offset for SI Prefixes. This is big enough to ensure we only
+        // insert positive integers into the trie.
+        public static final int kSIPrefixOffset = 64;
+
+
+        /* Tables Names*/
+        public static final String CONVERSION_UNIT_TABLE_NAME = "convertUnits";
+        public static final String UNIT_PREFERENCE_TABLE_NAME = "unitPreferenceData";
+        public static final String CATEGORY_TABLE_NAME = "unitQuantities";
+        public static final String DEFAULT_REGION = "001";
+        public static final String DEFAULT_USAGE = "default";
+    }
+
+    public static class Categories {
+
+        /**
+         * Contains the map between units in their base units into their category.
+         * For example:  meter-per-second --> "speed"
+         */
+        HashMap<String, String> mapFromUnitToCategory;
+
+
+        public Categories() {
+            // Read unit Categories
+            ICUResourceBundle resource;
+            resource = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUData.ICU_BASE_NAME, "units");
+            CategoriesSink sink = new CategoriesSink();
+            resource.getAllItemsWithFallback(Constants.CATEGORY_TABLE_NAME, sink);
+            this.mapFromUnitToCategory = sink.getMapFromUnitToCategory();
+        }
+    }
+
+    public static class CategoriesSink extends UResource.Sink {
+        /**
+         * Contains the map between units in their base units into their category.
+         * For example:  meter-per-second --> "speed"
+         */
+        HashMap<String, String> mapFromUnitToCategory;
+
+        public CategoriesSink() {
+            mapFromUnitToCategory = new HashMap<>();
+        }
+
+        @Override
+        public void put(UResource.Key key, UResource.Value value, boolean noFallback) {
+            assert (key.toString().equals(Constants.CATEGORY_TABLE_NAME));
+            assert (value.getType() == UResourceBundle.TABLE);
+
+            UResource.Table categoryTable = value.getTable();
+            for (int i = 0; categoryTable.getKeyAndValue(i, key, value); i++) {
+                assert (value.getType() == UResourceBundle.STRING);
+                mapFromUnitToCategory.put(key.toString(), value.toString());
+            }
+        }
+
+        public HashMap<String, String> getMapFromUnitToCategory() {
+            return mapFromUnitToCategory;
+        }
+    }
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/units/UnitsRouter.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/units/UnitsRouter.java
new file mode 100644
index 0000000..d344f3e
--- /dev/null
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/units/UnitsRouter.java
@@ -0,0 +1,195 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package com.ibm.icu.impl.units;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.ibm.icu.impl.IllegalIcuArgumentException;
+import com.ibm.icu.impl.number.MicroProps;
+import com.ibm.icu.number.Precision;
+import com.ibm.icu.util.Measure;
+import com.ibm.icu.util.MeasureUnit;
+
+/**
+ * `UnitsRouter` responsible for converting from a single unit (such as `meter` or `meter-per-second`) to
+ * one of the complex units based on the limits.
+ * For example:
+ * if the input is `meter` and the output as following
+ * {`foot+inch`, limit: 3.0}
+ * {`inch`     , limit: no value (-inf)}
+ * Thus means if the input in `meter` is greater than or equal to `3.0 feet`, the output will be in
+ * `foot+inch`, otherwise, the output will be in `inch`.
+ * <p>
+ * NOTE:
+ * the output units and the their limits MUST BE in order, for example, if the output units, from the
+ * previous example, are the following:
+ * {`inch`     , limit: no value (-inf)}
+ * {`foot+inch`, limit: 3.0}
+ * IN THIS CASE THE OUTPUT WILL BE ALWAYS IN `inch`.
+ * <p>
+ * NOTE:
+ * the output units  and their limits will be extracted from the units preferences database by knowing
+ * the followings:
+ * - input unit
+ * - locale
+ * - usage
+ * <p>
+ * DESIGN:
+ * `UnitRouter` uses internally `ComplexUnitConverter` in order to convert the input units to the
+ * desired complex units and to check the limit too.
+ */
+public class UnitsRouter {
+    // List of possible output units. TODO: converterPreferences_ now also has
+    // this data available. Maybe drop outputUnits_ and have getOutputUnits
+    // construct a the list from data in converterPreferences_ instead?
+    private ArrayList<MeasureUnit> outputUnits_ = new ArrayList<>();
+    private ArrayList<ConverterPreference> converterPreferences_ = new ArrayList<>();
+
+    public UnitsRouter(MeasureUnitImpl inputUnitImpl, String region, String usage) {
+        // TODO: do we want to pass in ConversionRates and UnitPreferences instead?
+        // of loading in each UnitsRouter instance? (Or make global?)
+        UnitsData data = new UnitsData();
+
+        //MeasureUnitImpl inputUnitImpl = MeasureUnitImpl.forMeasureUnitMaybeCopy(inputUnit);
+        String category = data.getCategory(inputUnitImpl);
+        UnitPreferences.UnitPreference[] unitPreferences = data.getPreferencesFor(category, usage, region);
+
+        for (int i = 0; i < unitPreferences.length; ++i) {
+            UnitPreferences.UnitPreference preference = unitPreferences[i];
+
+            MeasureUnitImpl complexTargetUnitImpl =
+                    MeasureUnitImpl.UnitsParser.parseForIdentifier(preference.getUnit());
+
+            String precision = preference.getSkeleton();
+
+            // For now, we only have "precision-increment" in Units Preferences skeleton.
+            // Therefore, we check if the skeleton starts with "precision-increment" and force the program to
+            // fail otherwise.
+            // NOTE:
+            //  It is allowed to have an empty precision.
+            if (!precision.isEmpty() && !precision.startsWith("precision-increment")) {
+                throw new AssertionError("Only `precision-increment` is allowed");
+            }
+
+            outputUnits_.add(complexTargetUnitImpl.build());
+            converterPreferences_.add(new ConverterPreference(inputUnitImpl, complexTargetUnitImpl,
+                    preference.getGeq(), precision,
+                    data.getConversionRates()));
+        }
+    }
+
+    /** If micros.rounder is a BogusRounder, this function replaces it with a valid one. */
+    public RouteResult route(BigDecimal quantity, MicroProps micros) {
+        Precision rounder = micros == null ? null : micros.rounder;
+        ConverterPreference converterPreference = null;
+        for (ConverterPreference itr : converterPreferences_) {
+            converterPreference = itr;
+            if (converterPreference.converter.greaterThanOrEqual(quantity.abs(),
+                                                                 converterPreference.limit)) {
+                break;
+            }
+        }
+        assert converterPreference != null;
+        assert converterPreference.precision != null;
+
+        // Set up the rounder for this preference's precision
+        if (rounder != null && rounder instanceof Precision.BogusRounder) {
+            Precision.BogusRounder bogus = (Precision.BogusRounder)rounder;
+            if (converterPreference.precision.length() > 0) {
+                rounder = bogus.into(parseSkeletonToPrecision(converterPreference.precision));
+            } else {
+                // We use the same rounding mode as COMPACT notation: known to be a
+                // human-friendly rounding mode: integers, but add a decimal digit
+                // as needed to ensure we have at least 2 significant digits.
+                rounder = bogus.into(Precision.integer().withMinDigits(2));
+            }
+        }
+
+        if (micros != null) {
+            micros.rounder = rounder;
+        }
+        return new RouteResult(
+                converterPreference.converter.convert(quantity, rounder),
+                converterPreference.targetUnit
+        );
+    }
+
+    private static Precision parseSkeletonToPrecision(String precisionSkeleton) {
+        final String kSkeletonPrefix = "precision-increment/";
+        if (!precisionSkeleton.startsWith(kSkeletonPrefix)) {
+            throw new IllegalIcuArgumentException("precisionSkeleton is only precision-increment");
+        }
+
+        // TODO(icu-units#104): the C++ code uses a more sophisticated
+        // parseIncrementOption which supports "withMinFraction" - e.g.
+        // "precision-increment/0.5". Test with a unit preference that uses
+        // this, and fix Java.
+        String incrementValue = precisionSkeleton.substring(kSkeletonPrefix.length());
+        return Precision.increment(new BigDecimal(incrementValue));
+    }
+
+    /**
+     * Returns the list of possible output units, i.e. the full set of
+     * preferences, for the localized, usage-specific unit preferences.
+     * <p>
+     * The returned pointer should be valid for the lifetime of the
+     * UnitsRouter instance.
+     */
+    public List<MeasureUnit> getOutputUnits() {
+        return this.outputUnits_;
+    }
+
+    /**
+     * Contains the complex unit converter and the limit which representing the smallest value that the
+     * converter should accept. For example, if the converter is converting to `foot+inch` and the limit
+     * equals 3.0, thus means the converter should not convert to a value less than `3.0 feet`.
+     * <p>
+     * NOTE:
+     * if the limit doest not has a value `i.e. (std::numeric_limits<double>::lowest())`, this mean there
+     * is no limit for the converter.
+     */
+    public static class ConverterPreference {
+        // The output unit for this ConverterPreference. This may be a MIXED unit -
+        // for example: "yard-and-foot-and-inch".
+        final MeasureUnitImpl targetUnit;
+        final ComplexUnitsConverter converter;
+        final BigDecimal limit;
+        final String precision;
+
+        // In case there is no limit, the limit will be -inf.
+        public ConverterPreference(MeasureUnitImpl source, MeasureUnitImpl targetUnit,
+                                   String precision, ConversionRates conversionRates) {
+            this(source, targetUnit, BigDecimal.valueOf(Double.MIN_VALUE), precision,
+                    conversionRates);
+        }
+
+        public ConverterPreference(MeasureUnitImpl source, MeasureUnitImpl targetUnit,
+                                   BigDecimal limit, String precision, ConversionRates conversionRates) {
+            this.converter = new ComplexUnitsConverter(source, targetUnit, conversionRates);
+            this.limit = limit;
+            this.precision = precision;
+            this.targetUnit = targetUnit;
+
+        }
+    }
+
+    public class RouteResult {
+        // A list of measures: a single measure for single units, multiple measures
+        // for mixed units.
+        //
+        // TODO(icu-units/icu#21): figure out the right mixed unit API.
+        public final List<Measure> measures;
+
+        // The output unit for this RouteResult. This may be a MIXED unit - for
+        // example: "yard-and-foot-and-inch", for which `measures` will have three
+        // elements.
+        public final MeasureUnitImpl outputUnit;
+
+        RouteResult(List<Measure> measures, MeasureUnitImpl outputUnit) {
+            this.measures = measures;
+            this.outputUnit = outputUnit;
+        }
+    }
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/lang/CharSequences.java b/icu4j/main/classes/core/src/com/ibm/icu/lang/CharSequences.java
index 1608905..dc8483d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/lang/CharSequences.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/lang/CharSequences.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
  * Copyright (C) 2010-2014, Google, International Business Machines Corporation *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/lang/CharacterProperties.java b/icu4j/main/classes/core/src/com/ibm/icu/lang/CharacterProperties.java
index 3e2e350..e6637b4 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/lang/CharacterProperties.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/lang/CharacterProperties.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 package com.ibm.icu.lang;
 
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacter.java b/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacter.java
index 0f5a1a2..fb18c9e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacterCategory.java b/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacterCategory.java
index 64e2106..bd2b232 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacterCategory.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacterCategory.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 1996-2004, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacterDirection.java b/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacterDirection.java
index 0633ba3..46928b2 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacterDirection.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacterDirection.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2013, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacterEnums.java b/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacterEnums.java
index c192da8..1af1caa 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacterEnums.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacterEnums.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2004-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacterNameIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacterNameIterator.java
index b38da26..db6587c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacterNameIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacterNameIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 1996-2011, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/lang/UProperty.java b/icu4j/main/classes/core/src/com/ibm/icu/lang/UProperty.java
index 8011db1..2843127 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/lang/UProperty.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/lang/UProperty.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/lang/UScript.java b/icu4j/main/classes/core/src/com/ibm/icu/lang/UScript.java
index cec64ac..43e3623 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/lang/UScript.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/lang/UScript.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2016 International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/lang/UScriptRun.java b/icu4j/main/classes/core/src/com/ibm/icu/lang/UScriptRun.java
index 6ed5728..e9cbed6 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/lang/UScriptRun.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/lang/UScriptRun.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/lang/package.html b/icu4j/main/classes/core/src/com/ibm/icu/lang/package.html
index 0038c3e..58a4756 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/lang/package.html
+++ b/icu4j/main/classes/core/src/com/ibm/icu/lang/package.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--  Copyright (C) 2016 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--  Copyright (C) 2002, International Business Machines Corporation and
   others. All Rights Reserved.
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/math/BigDecimal.java b/icu4j/main/classes/core/src/com/ibm/icu/math/BigDecimal.java
index b329300..48706cd 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/math/BigDecimal.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/math/BigDecimal.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /* Generated from 'BigDecimal.nrx' 8 Sep 2000 11:10:50 [v2.00] */
 /* Options: Binary Comments Crossref Format Java Logo Strictargs Strictcase Trace2 Verbose3 */
 package com.ibm.icu.math;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/math/MathContext.java b/icu4j/main/classes/core/src/com/ibm/icu/math/MathContext.java
index d777c4b..6753a58 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/math/MathContext.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/math/MathContext.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /* Generated from 'MathContext.nrx' 8 Sep 2000 11:07:48 [v2.00] */
 /* Options: Binary Comments Crossref Format Java Logo Strictargs Strictcase Trace2 Verbose3 */
 package com.ibm.icu.math;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/math/package.html b/icu4j/main/classes/core/src/com/ibm/icu/math/package.html
index bcfe68c..5b11e7f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/math/package.html
+++ b/icu4j/main/classes/core/src/com/ibm/icu/math/package.html
@@ -3,7 +3,7 @@
 
 <head>
 <!--  Copyright (C) 2016 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--  Copyright (C) 2000-2004, International Business Machines Corporation and
   others. All Rights Reserved.
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/CompactNotation.java b/icu4j/main/classes/core/src/com/ibm/icu/number/CompactNotation.java
index f2bffe7..3801143 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/CompactNotation.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/CompactNotation.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import java.util.HashMap;
@@ -168,4 +168,4 @@
             return micros;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/CurrencyPrecision.java b/icu4j/main/classes/core/src/com/ibm/icu/number/CurrencyPrecision.java
index 5861867..cdd3d99 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/CurrencyPrecision.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/CurrencyPrecision.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import com.ibm.icu.util.Currency;
@@ -45,4 +45,4 @@
             throw new IllegalArgumentException("Currency must not be null");
         }
     };
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumber.java b/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumber.java
index 41a5f41..34069a7 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumber.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumber.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import java.math.BigDecimal;
@@ -12,6 +12,7 @@
 import com.ibm.icu.text.ConstrainedFieldPosition;
 import com.ibm.icu.text.FormattedValue;
 import com.ibm.icu.text.PluralRules.IFixedDecimal;
+import com.ibm.icu.util.MeasureUnit;
 
 /**
  * The result of a number formatting operation. This class allows the result to be exported in several
@@ -25,10 +26,12 @@
 public class FormattedNumber implements FormattedValue {
     final FormattedStringBuilder string;
     final DecimalQuantity fq;
+    final MeasureUnit outputUnit;
 
-    FormattedNumber(FormattedStringBuilder nsb, DecimalQuantity fq) {
+    FormattedNumber(FormattedStringBuilder nsb, DecimalQuantity fq, MeasureUnit outputUnit) {
         this.string = nsb;
         this.fq = fq;
+        this.outputUnit = outputUnit;
     }
 
     /**
@@ -115,6 +118,22 @@
     }
 
     /**
+     * Gets the resolved output unit.
+     * <p>
+     * The output unit is dependent upon the localized preferences for the usage
+     * specified via NumberFormatterSettings.usage(), and may be a unit with
+     * MeasureUnit.Complexity.MIXED unit complexity (MeasureUnit.getComplexity()), such
+     * as "foot-and-inch" or "hour-and-minute-and-second".
+     *
+     * @return `MeasureUnit`.
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public MeasureUnit getOutputUnit() {
+        return this.outputUnit;
+    }
+
+    /**
      * @internal
      * @deprecated This API is ICU internal only.
      */
@@ -122,4 +141,4 @@
     public IFixedDecimal getFixedDecimal() {
         return fq;
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumberRange.java b/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumberRange.java
index 02c951f..90d23c3 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumberRange.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumberRange.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import java.io.IOException;
@@ -13,6 +13,7 @@
 import com.ibm.icu.number.NumberRangeFormatter.RangeIdentityResult;
 import com.ibm.icu.text.ConstrainedFieldPosition;
 import com.ibm.icu.text.FormattedValue;
+import com.ibm.icu.text.PluralRules.IFixedDecimal;
 import com.ibm.icu.util.ICUUncheckedIOException;
 
 /**
@@ -189,4 +190,22 @@
                 && quantity1.toBigDecimal().equals(_other.quantity1.toBigDecimal())
                 && quantity2.toBigDecimal().equals(_other.quantity2.toBigDecimal());
     }
+
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    @Deprecated
+    public IFixedDecimal getFirstFixedDecimal() {
+        return quantity1;
+    }
+
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    @Deprecated
+    public IFixedDecimal getSecondFixedDecimal() {
+        return quantity2;
+    }
 }
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/FractionPrecision.java b/icu4j/main/classes/core/src/com/ibm/icu/number/FractionPrecision.java
index 3727f1c..3752b1a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/FractionPrecision.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/FractionPrecision.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import com.ibm.icu.impl.number.RoundingUtils;
@@ -76,4 +76,4 @@
                     + " (inclusive)");
         }
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/IntegerWidth.java b/icu4j/main/classes/core/src/com/ibm/icu/number/IntegerWidth.java
index 4ba85bb..e96a596 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/IntegerWidth.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/IntegerWidth.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import com.ibm.icu.impl.number.RoundingUtils;
@@ -79,4 +79,4 @@
                     + " (inclusive)");
         }
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/LocalizedNumberFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/number/LocalizedNumberFormatter.java
index 85e2ceb..e6f714d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/LocalizedNumberFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/LocalizedNumberFormatter.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import java.math.BigInteger;
@@ -13,6 +13,7 @@
 import com.ibm.icu.impl.number.DecimalQuantity_DualStorageBCD;
 import com.ibm.icu.impl.number.LocalizedNumberFormatterAsFormat;
 import com.ibm.icu.impl.number.MacroProps;
+import com.ibm.icu.impl.number.MicroProps;
 import com.ibm.icu.math.BigDecimal;
 import com.ibm.icu.util.CurrencyAmount;
 import com.ibm.icu.util.Measure;
@@ -100,8 +101,8 @@
         DecimalQuantity fq = new DecimalQuantity_DualStorageBCD(input.getNumber());
         MeasureUnit unit = input.getUnit();
         FormattedStringBuilder string = new FormattedStringBuilder();
-        formatImpl(fq, unit, string);
-        return new FormattedNumber(string, fq);
+        MicroProps micros = formatImpl(fq, unit, string);
+        return new FormattedNumber(string, fq, micros.outputUnit);
     }
 
     /**
@@ -120,11 +121,13 @@
         return new LocalizedNumberFormatterAsFormat(this, resolve().loc);
     }
 
-    /** Helper method that creates a FormattedStringBuilder and formats. */
+    /**
+     *  Helper method that creates a FormattedStringBuilder and formats.
+     */
     private FormattedNumber format(DecimalQuantity fq) {
         FormattedStringBuilder string = new FormattedStringBuilder();
-        formatImpl(fq, string);
-        return new FormattedNumber(string, fq);
+        MicroProps micros = formatImpl(fq, string);
+        return new FormattedNumber(string, fq, micros.outputUnit);
     }
 
     /**
@@ -144,12 +147,11 @@
      * @deprecated ICU 60 This API is ICU internal only.
      */
     @Deprecated
-    public void formatImpl(DecimalQuantity fq, FormattedStringBuilder string) {
+    public MicroProps formatImpl(DecimalQuantity fq, FormattedStringBuilder string) {
         if (computeCompiled()) {
-            compiled.format(fq, string);
-        } else {
-            NumberFormatterImpl.formatStatic(resolve(), fq, string);
+            return compiled.format(fq, string);
         }
+        return NumberFormatterImpl.formatStatic(resolve(), fq, string);
     }
 
     /**
@@ -159,11 +161,11 @@
      * @deprecated ICU 67 This API is ICU internal only.
      */
     @Deprecated
-    public void formatImpl(DecimalQuantity fq, MeasureUnit unit, FormattedStringBuilder string) {
+    public MicroProps formatImpl(DecimalQuantity fq, MeasureUnit unit, FormattedStringBuilder string) {
         // Use this formatter if possible
         if (Objects.equals(resolve().unit, unit)) {
-            formatImpl(fq, string);
-            return;
+            return formatImpl(fq, string);
+
         }
         // This mechanism saves the previously used unit, so if the user calls this method with the
         // same unit multiple times in a row, they get a more efficient code path.
@@ -172,7 +174,7 @@
             withUnit = new LocalizedNumberFormatter(this, KEY_UNIT, unit);
             savedWithUnit = withUnit;
         }
-        withUnit.formatImpl(fq, string);
+        return withUnit.formatImpl(fq, string);
     }
 
     /**
@@ -219,4 +221,4 @@
     LocalizedNumberFormatter create(int key, Object value) {
         return new LocalizedNumberFormatter(this, key, value);
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/LocalizedNumberRangeFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/number/LocalizedNumberRangeFormatter.java
index aca413f..adec189 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/LocalizedNumberRangeFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/LocalizedNumberRangeFormatter.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import com.ibm.icu.impl.number.DecimalQuantity;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/Notation.java b/icu4j/main/classes/core/src/com/ibm/icu/number/Notation.java
index 4be9ec2..f89fe9c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/Notation.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/Notation.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import com.ibm.icu.number.NumberFormatter.SignDisplay;
@@ -188,4 +188,4 @@
     public static SimpleNotation simple() {
         return SIMPLE;
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatter.java
index e8a1fc4..5791e47 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatter.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import java.util.Locale;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatterImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatterImpl.java
index e0233f2..b639c8f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatterImpl.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatterImpl.java
@@ -1,8 +1,9 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import com.ibm.icu.impl.FormattedStringBuilder;
+import com.ibm.icu.impl.IllegalIcuArgumentException;
 import com.ibm.icu.impl.StandardPlural;
 import com.ibm.icu.impl.number.CompactData.CompactType;
 import com.ibm.icu.impl.number.ConstantAffixModifier;
@@ -10,9 +11,11 @@
 import com.ibm.icu.impl.number.DecimalQuantity_DualStorageBCD;
 import com.ibm.icu.impl.number.Grouper;
 import com.ibm.icu.impl.number.LongNameHandler;
+import com.ibm.icu.impl.number.LongNameMultiplexer;
 import com.ibm.icu.impl.number.MacroProps;
 import com.ibm.icu.impl.number.MicroProps;
 import com.ibm.icu.impl.number.MicroPropsGenerator;
+import com.ibm.icu.impl.number.MixedUnitLongNameHandler;
 import com.ibm.icu.impl.number.MultiplierFormatHandler;
 import com.ibm.icu.impl.number.MutablePatternModifier;
 import com.ibm.icu.impl.number.MutablePatternModifier.ImmutablePatternModifier;
@@ -20,6 +23,8 @@
 import com.ibm.icu.impl.number.PatternStringParser;
 import com.ibm.icu.impl.number.PatternStringParser.ParsedPatternInfo;
 import com.ibm.icu.impl.number.RoundingUtils;
+import com.ibm.icu.impl.number.UnitConversionHandler;
+import com.ibm.icu.impl.number.UsagePrefsHandler;
 import com.ibm.icu.number.NumberFormatter.DecimalSeparatorDisplay;
 import com.ibm.icu.number.NumberFormatter.GroupingStrategy;
 import com.ibm.icu.number.NumberFormatter.SignDisplay;
@@ -41,7 +46,9 @@
  */
 class NumberFormatterImpl {
 
-    /** Builds a "safe" MicroPropsGenerator, which is thread-safe and can be used repeatedly. */
+    /**
+     * Builds a "safe" MicroPropsGenerator, which is thread-safe and can be used repeatedly.
+     */
     public NumberFormatterImpl(MacroProps macros) {
         micros = new MicroProps(true);
         microPropsGenerator = macrosToMicroGenerator(macros, micros, true);
@@ -50,14 +57,14 @@
     /**
      * Builds and evaluates an "unsafe" MicroPropsGenerator, which is cheaper but can be used only once.
      */
-    public static int formatStatic(
+    public static MicroProps formatStatic(
             MacroProps macros,
             DecimalQuantity inValue,
             FormattedStringBuilder outString) {
         MicroProps micros = preProcessUnsafe(macros, inValue);
         int length = writeNumber(micros, inValue, outString, 0);
-        length += writeAffixes(micros, outString, 0, length);
-        return length;
+        writeAffixes(micros, outString, 0, length);
+        return micros;
     }
 
     /**
@@ -84,11 +91,11 @@
     /**
      * Evaluates the "safe" MicroPropsGenerator created by "fromMacros".
      */
-    public int format(DecimalQuantity inValue, FormattedStringBuilder outString) {
+    public MicroProps format(DecimalQuantity inValue, FormattedStringBuilder outString) {
         MicroProps micros = preProcess(inValue);
         int length = writeNumber(micros, inValue, outString, 0);
-        length += writeAffixes(micros, outString, 0, length);
-        return length;
+        writeAffixes(micros, outString, 0, length);
+        return micros;
     }
 
     /**
@@ -146,10 +153,8 @@
         return unit != null && "currency".equals(unit.getType());
     }
 
-    private static boolean unitIsNoUnit(MeasureUnit unit) {
-        // NOTE: In ICU4C, units cannot be null, and the default unit is a NoUnit.
-        // In ICU4J, return TRUE for a null unit from this method.
-        return unit == null || "none".equals(unit.getType());
+    private static boolean unitIsBaseUnit(MeasureUnit unit) {
+        return unit == null;
     }
 
     private static boolean unitIsPercent(MeasureUnit unit) {
@@ -181,9 +186,10 @@
 
         // Pre-compute a few values for efficiency.
         boolean isCurrency = unitIsCurrency(macros.unit);
-        boolean isNoUnit = unitIsNoUnit(macros.unit);
+        boolean isBaseUnit = unitIsBaseUnit(macros.unit);
         boolean isPercent = unitIsPercent(macros.unit);
         boolean isPermille = unitIsPermille(macros.unit);
+        boolean isCompactNotation = (macros.notation instanceof CompactNotation);
         boolean isAccounting = macros.sign == SignDisplay.ACCOUNTING
                 || macros.sign == SignDisplay.ACCOUNTING_ALWAYS
                 || macros.sign == SignDisplay.ACCOUNTING_EXCEPT_ZERO;
@@ -192,8 +198,21 @@
         if (macros.unitWidth != null) {
             unitWidth = macros.unitWidth;
         }
-        boolean isCldrUnit = !isCurrency && !isNoUnit &&
-            (unitWidth == UnitWidth.FULL_NAME || !(isPercent || isPermille));
+        // Use CLDR unit data for all MeasureUnits (not currency and not
+        // no-unit), except use the dedicated percent pattern for percent and
+        // permille. However, use the CLDR unit data for percent/permille if a
+        // long name was requested OR if compact notation is being used, since
+        // compact notation overrides the middle modifier (micros.modMiddle)
+        // normally used for the percent pattern.
+        boolean isCldrUnit = !isCurrency
+            && !isBaseUnit
+            && (unitWidth == UnitWidth.FULL_NAME
+                || !(isPercent || isPermille)
+                || isCompactNotation
+            );
+        boolean isMixedUnit = isCldrUnit && macros.unit.getType() == null &&
+                              macros.unit.getComplexity() == MeasureUnit.Complexity.MIXED;
+
         PluralRules rules = macros.rules;
 
         // Select the numbering system.
@@ -246,6 +265,20 @@
         /// START POPULATING THE DEFAULT MICROPROPS AND BUILDING THE MICROPROPS GENERATOR ///
         /////////////////////////////////////////////////////////////////////////////////////
 
+        // Unit Preferences and Conversions as our first step
+        UsagePrefsHandler usagePrefsHandler = null;
+        if (macros.usage != null) {
+            if (!isCldrUnit) {
+                throw new IllegalIcuArgumentException(
+                        "We only support \"usage\" when the input unit is specified, and is a CLDR Unit.");
+            }
+            chain = usagePrefsHandler = new UsagePrefsHandler(macros.loc, macros.unit, macros.usage, chain);
+        } else if (isMixedUnit) {
+            // TODO(icu-units#97): The input unit should be the largest unit, not the first unit, in the identifier.
+            MeasureUnit inputUnit = macros.unit.splitToSingleUnits().get(0);
+            chain = new UnitConversionHandler(inputUnit, macros.unit, chain);
+        }
+
         // Multiplier
         if (macros.scale != null) {
             chain = new MultiplierFormatHandler(macros.scale, chain);
@@ -254,10 +287,13 @@
         // Rounding strategy
         if (macros.precision != null) {
             micros.rounder = macros.precision;
-        } else if (macros.notation instanceof CompactNotation) {
+        } else if (isCompactNotation) {
             micros.rounder = Precision.COMPACT_STRATEGY;
         } else if (isCurrency) {
             micros.rounder = Precision.MONETARY_STANDARD;
+        } else if (macros.usage != null) {
+            // Bogus Precision - it will get set in the UsagePrefsHandler instead
+            micros.rounder = Precision.BOGUS_PRECISION;
         } else {
             micros.rounder = Precision.DEFAULT_MAX_FRAC_6;
         }
@@ -272,7 +308,7 @@
             micros.grouping = (Grouper) macros.grouping;
         } else if (macros.grouping instanceof GroupingStrategy) {
             micros.grouping = Grouper.forStrategy((GroupingStrategy) macros.grouping);
-        } else if (macros.notation instanceof CompactNotation) {
+        } else if (isCompactNotation) {
             // Compact notation uses minGrouping by default since ICU 59
             micros.grouping = Grouper.forStrategy(GroupingStrategy.MIN2);
         } else {
@@ -344,8 +380,33 @@
                 // Lazily create PluralRules
                 rules = PluralRules.forLocale(macros.loc);
             }
-            chain = LongNameHandler
-                    .forMeasureUnit(macros.loc, macros.unit, macros.perUnit, unitWidth, rules, chain);
+            PluralRules pluralRules = macros.rules != null ?
+                    macros.rules :
+                    PluralRules.forLocale(macros.loc);
+
+            if (macros.usage != null) {
+                assert usagePrefsHandler != null;
+                chain = LongNameMultiplexer.forMeasureUnits(
+                        macros.loc,
+                        usagePrefsHandler.getOutputUnits(),
+                        unitWidth,
+                        pluralRules,
+                        chain);
+            } else if (isMixedUnit) {
+                chain = MixedUnitLongNameHandler.forMeasureUnit(
+                        macros.loc,
+                        macros.unit,
+                        unitWidth,
+                        pluralRules,
+                        chain);
+            } else {
+                chain = LongNameHandler.forMeasureUnit(macros.loc,
+                        macros.unit,
+                        macros.perUnit,
+                        unitWidth,
+                        pluralRules,
+                        chain);
+            }
         } else if (isCurrency && unitWidth == UnitWidth.FULL_NAME) {
             if (rules == null) {
                 // Lazily create PluralRules
@@ -358,7 +419,7 @@
         }
 
         // Compact notation
-        if (macros.notation instanceof CompactNotation) {
+        if (isCompactNotation) {
             if (rules == null) {
                 // Lazily create PluralRules
                 rules = PluralRules.forLocale(macros.loc);
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatterSettings.java b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatterSettings.java
index fd510fa..33af7e0 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatterSettings.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatterSettings.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import java.math.RoundingMode;
@@ -44,7 +44,8 @@
     static final int KEY_SCALE = 13;
     static final int KEY_THRESHOLD = 14;
     static final int KEY_PER_UNIT = 15;
-    static final int KEY_MAX = 16;
+    static final int KEY_USAGE = 16;
+    static final int KEY_MAX = 17;
 
     private final NumberFormatterSettings<?> parent;
     private final int key;
@@ -133,6 +134,11 @@
      * <p>
      * The default is to render without units (equivalent to {@link NoUnit#BASE}).
      *
+     * <p>
+     * If the input usage is correctly set the output unit <b>will change</b>
+     * according to `usage`, `locale` and `unit` value.
+     * </p>
+     *
      * @param unit
      *            The unit to render.
      * @return The fluent chain.
@@ -219,7 +225,7 @@
      *
      * The default is HALF_EVEN. For more information on rounding mode, see the ICU userguide here:
      *
-     * http://userguide.icu-project.org/formatparse/numbers/rounding-modes
+     * https://unicode-org.github.io/icu/userguide/format_parse/numbers/rounding-modes
      *
      * @param roundingMode
      *            The rounding mode to use.
@@ -487,6 +493,62 @@
     }
 
     /**
+     * Specifies the usage for which numbers will be formatted ("person-height",
+     * "road", "rainfall", etc.)
+     *
+     * <p>
+     * When a `usage` is specified, the output unit will change depending on the
+     * `Locale` and the unit quantity. For example, formatting length
+     * measurements specified in meters:
+     *
+     * <pre>
+     * NumberFormatter.with().usage("person").unit(MeasureUnit.METER).locale(new ULocale("en-US"))
+     * </pre>
+     * <ul>
+     *   <li> When formatting 0.25, the output will be "10 inches".
+     *   <li> When formatting 1.50, the output will be "4 feet and 11 inches".
+     * </ul>
+     *
+     * <p>
+     * The input unit specified via unit() determines the type of measurement
+     * being formatted (e.g. "length" when the unit is "foot"). The usage
+     * requested will be looked for only within this category of measurement
+     * units.
+     *
+     * <p>
+     * The output unit can be found via FormattedNumber.getOutputUnit().
+     *
+     * <p>
+     * If the usage has multiple parts (e.g. "land-agriculture-grain") and does
+     * not match a known usage preference, the last part will be dropped
+     * repeatedly until a match is found (e.g. trying "land-agriculture", then
+     * "land"). If a match is still not found, usage will fall back to
+     * "default".
+     *
+     * <p>
+     * Setting usage to an empty string clears the usage (disables usage-based
+     * localized formatting).
+     *
+     * <p>
+     * Setting a usage string but not a correct input unit will result in an
+     * U_ILLEGAL_ARGUMENT_ERROR.
+     *
+     * <p>
+     * When using usage, specifying rounding or precision is unnecessary.
+     * Specifying a precision in some manner will override the default
+     * formatting.
+     *
+     * @param usage A usage parameter from the units resource.
+     * @return The fluent chain
+     * @throws IllegalArgumentException in case of Setting a usage string but not a correct input unit.
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public T usage(String usage) {
+        return create(KEY_USAGE, usage);
+    }
+
+    /**
      * Internal method to set a starting macros.
      *
      * @internal
@@ -551,86 +613,67 @@
         // of a MacroProps object at each step.
         // TODO: Remove the reference to the parent after the macros are resolved?
         MacroProps macros = new MacroProps();
+        // Bitmap: 1 if seen; 0 if unseen
+        long seen = 0;
         NumberFormatterSettings<?> current = this;
         while (current != null) {
+            long keyBitmask = (1L << current.key);
+            if (0 != (seen & keyBitmask)) {
+                current = current.parent;
+                continue;
+            }
+            seen |= keyBitmask;
             switch (current.key) {
             case KEY_MACROS:
                 macros.fallback((MacroProps) current.value);
                 break;
             case KEY_LOCALE:
-                if (macros.loc == null) {
-                    macros.loc = (ULocale) current.value;
-                }
+                macros.loc = (ULocale) current.value;
                 break;
             case KEY_NOTATION:
-                if (macros.notation == null) {
-                    macros.notation = (Notation) current.value;
-                }
+                macros.notation = (Notation) current.value;
                 break;
             case KEY_UNIT:
-                if (macros.unit == null) {
-                    macros.unit = (MeasureUnit) current.value;
-                }
+                macros.unit = (MeasureUnit) current.value;
                 break;
             case KEY_PRECISION:
-                if (macros.precision == null) {
-                    macros.precision = (Precision) current.value;
-                }
+                macros.precision = (Precision) current.value;
                 break;
             case KEY_ROUNDING_MODE:
-                if (macros.roundingMode == null) {
-                    macros.roundingMode = (RoundingMode) current.value;
-                }
+                macros.roundingMode = (RoundingMode) current.value;
                 break;
             case KEY_GROUPING:
-                if (macros.grouping == null) {
-                    macros.grouping = /* (Object) */ current.value;
-                }
+                macros.grouping = /* (Object) */ current.value;
                 break;
             case KEY_PADDER:
-                if (macros.padder == null) {
-                    macros.padder = (Padder) current.value;
-                }
+                macros.padder = (Padder) current.value;
                 break;
             case KEY_INTEGER:
-                if (macros.integerWidth == null) {
-                    macros.integerWidth = (IntegerWidth) current.value;
-                }
+                macros.integerWidth = (IntegerWidth) current.value;
                 break;
             case KEY_SYMBOLS:
-                if (macros.symbols == null) {
-                    macros.symbols = /* (Object) */ current.value;
-                }
+                macros.symbols = /* (Object) */ current.value;
                 break;
             case KEY_UNIT_WIDTH:
-                if (macros.unitWidth == null) {
-                    macros.unitWidth = (UnitWidth) current.value;
-                }
+                macros.unitWidth = (UnitWidth) current.value;
                 break;
             case KEY_SIGN:
-                if (macros.sign == null) {
-                    macros.sign = (SignDisplay) current.value;
-                }
+                macros.sign = (SignDisplay) current.value;
                 break;
             case KEY_DECIMAL:
-                if (macros.decimal == null) {
-                    macros.decimal = (DecimalSeparatorDisplay) current.value;
-                }
+                macros.decimal = (DecimalSeparatorDisplay) current.value;
                 break;
             case KEY_SCALE:
-                if (macros.scale == null) {
-                    macros.scale = (Scale) current.value;
-                }
+                macros.scale = (Scale) current.value;
                 break;
             case KEY_THRESHOLD:
-                if (macros.threshold == null) {
-                    macros.threshold = (Long) current.value;
-                }
+                macros.threshold = (Long) current.value;
                 break;
             case KEY_PER_UNIT:
-                if (macros.perUnit == null) {
-                    macros.perUnit = (MeasureUnit) current.value;
-                }
+                macros.perUnit = (MeasureUnit) current.value;
+                break;
+            case KEY_USAGE:
+                macros.usage = (String) current.value;
                 break;
             default:
                 throw new AssertionError("Unknown key: " + current.key);
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberPropertyMapper.java b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberPropertyMapper.java
index afe9679..a795ca7 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberPropertyMapper.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberPropertyMapper.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import java.math.BigDecimal;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberRangeFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberRangeFormatter.java
index 611f0b8..93d37bf 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberRangeFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberRangeFormatter.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import java.util.Locale;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberRangeFormatterImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberRangeFormatterImpl.java
index 9167c5a..503344a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberRangeFormatterImpl.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberRangeFormatterImpl.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import java.util.MissingResourceException;
@@ -148,7 +148,7 @@
         getNumberRangeData(macros.loc, nsName, this);
 
         // TODO: Get locale from PluralRules instead?
-        fPluralRanges = new StandardPluralRanges(macros.loc);
+        fPluralRanges = StandardPluralRanges.forLocale(macros.loc);
     }
 
     public FormattedNumberRange format(DecimalQuantity quantity1, DecimalQuantity quantity2, boolean equalBeforeRounding) {
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberRangeFormatterSettings.java b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberRangeFormatterSettings.java
index 642aec5..13734e1 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberRangeFormatterSettings.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberRangeFormatterSettings.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import com.ibm.icu.impl.number.range.RangeMacroProps;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberSkeletonImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberSkeletonImpl.java
index 33e60f7..9b0f1ed 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberSkeletonImpl.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberSkeletonImpl.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import java.math.BigDecimal;
@@ -12,6 +12,8 @@
 import com.ibm.icu.impl.StringSegment;
 import com.ibm.icu.impl.number.MacroProps;
 import com.ibm.icu.impl.number.RoundingUtils;
+import com.ibm.icu.impl.units.MeasureUnitImpl;
+import com.ibm.icu.impl.units.SingleUnitImpl;
 import com.ibm.icu.number.NumberFormatter.DecimalSeparatorDisplay;
 import com.ibm.icu.number.NumberFormatter.GroupingStrategy;
 import com.ibm.icu.number.NumberFormatter.SignDisplay;
@@ -33,10 +35,12 @@
  */
 class NumberSkeletonImpl {
 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    // NOTE: For an example of how to add a new stem to the number skeleton parser, see: //
-    // http://bugs.icu-project.org/trac/changeset/41193                                  //
-    ///////////////////////////////////////////////////////////////////////////////////////
+    //////////////////////////////////////////////////////////////////////////////////////////
+    // NOTE: For examples of how to add a new stem to the number skeleton parser, see:      //
+    // https://github.com/unicode-org/icu/commit/a2a7982216b2348070dc71093775ac7195793d73   //
+    // and                                                                                  //
+    // https://github.com/unicode-org/icu/commit/6fe86f3934a8a5701034f648a8f7c5087e84aa28   //
+    //////////////////////////////////////////////////////////////////////////////////////////
 
     /**
      * While parsing a skeleton, this enum records what type of option we expect to find next.
@@ -54,6 +58,7 @@
         STATE_MEASURE_UNIT,
         STATE_PER_MEASURE_UNIT,
         STATE_IDENTIFIER_UNIT,
+        STATE_UNIT_USAGE,
         STATE_CURRENCY_UNIT,
         STATE_INTEGER_WIDTH,
         STATE_NUMBERING_SYSTEM,
@@ -118,6 +123,7 @@
         STEM_MEASURE_UNIT,
         STEM_PER_MEASURE_UNIT,
         STEM_UNIT,
+        STEM_UNIT_USAGE,
         STEM_CURRENCY,
         STEM_INTEGER_WIDTH,
         STEM_NUMBERING_SYSTEM,
@@ -193,6 +199,7 @@
         b.add("measure-unit", StemEnum.STEM_MEASURE_UNIT.ordinal());
         b.add("per-measure-unit", StemEnum.STEM_PER_MEASURE_UNIT.ordinal());
         b.add("unit", StemEnum.STEM_UNIT.ordinal());
+        b.add("usage", StemEnum.STEM_UNIT_USAGE.ordinal());
         b.add("currency", StemEnum.STEM_CURRENCY.ordinal());
         b.add("integer-width", StemEnum.STEM_INTEGER_WIDTH.ordinal());
         b.add("numbering-system", StemEnum.STEM_NUMBERING_SYSTEM.ordinal());
@@ -613,6 +620,8 @@
                 case STATE_INCREMENT_PRECISION:
                 case STATE_MEASURE_UNIT:
                 case STATE_PER_MEASURE_UNIT:
+                case STATE_IDENTIFIER_UNIT:
+                case STATE_UNIT_USAGE:
                 case STATE_CURRENCY_UNIT:
                 case STATE_INTEGER_WIDTH:
                 case STATE_NUMBERING_SYSTEM:
@@ -653,7 +662,7 @@
             BlueprintHelpers.parseScientificStem(segment, macros);
             return ParseState.STATE_NULL;
         case '0':
-            checkNull(macros.notation, segment);
+            checkNull(macros.integerWidth, segment);
             BlueprintHelpers.parseIntegerStem(segment, macros);
             return ParseState.STATE_NULL;
         }
@@ -778,6 +787,11 @@
             return ParseState.STATE_MEASURE_UNIT;
 
         case STEM_PER_MEASURE_UNIT:
+            // In C++, STEM_CURRENCY's checks mark perUnit as "seen". Here we do
+            // the inverse: checking that macros.unit is not set to a currency.
+            if (macros.unit instanceof Currency) {
+                throw new SkeletonSyntaxException("Duplicated setting", segment);
+            }
             checkNull(macros.perUnit, segment);
             return ParseState.STATE_PER_MEASURE_UNIT;
 
@@ -786,8 +800,13 @@
             checkNull(macros.perUnit, segment);
             return ParseState.STATE_IDENTIFIER_UNIT;
 
+        case STEM_UNIT_USAGE:
+            checkNull(macros.usage, segment);
+            return ParseState.STATE_UNIT_USAGE;
+
         case STEM_CURRENCY:
             checkNull(macros.unit, segment);
+            checkNull(macros.perUnit, segment);
             return ParseState.STATE_CURRENCY_UNIT;
 
         case STEM_INTEGER_WIDTH:
@@ -830,6 +849,9 @@
         case STATE_IDENTIFIER_UNIT:
             BlueprintHelpers.parseIdentifierUnitOption(segment, macros);
             return ParseState.STATE_NULL;
+        case STATE_UNIT_USAGE:
+            BlueprintHelpers.parseUnitUsageOption(segment, macros);
+            return ParseState.STATE_NULL;
         case STATE_INCREMENT_PRECISION:
             BlueprintHelpers.parseIncrementOption(segment, macros);
             return ParseState.STATE_NULL;
@@ -891,7 +913,7 @@
         if (macros.unit != null && GeneratorHelpers.unit(macros, sb)) {
             sb.append(' ');
         }
-        if (macros.perUnit != null && GeneratorHelpers.perUnit(macros, sb)) {
+        if (macros.usage != null && GeneratorHelpers.usage(macros, sb)) {
             sb.append(' ');
         }
         if (macros.precision != null && GeneratorHelpers.precision(macros, sb)) {
@@ -1010,6 +1032,7 @@
             sb.append(currency.getCurrencyCode());
         }
 
+        // "measure-unit/" is deprecated in favour of "unit/".
         private static void parseMeasureUnitOption(StringSegment segment, MacroProps macros) {
             // NOTE: The category (type) of the unit is guaranteed to be a valid subtag (alphanumeric)
             // http://unicode.org/reports/tr35/#Validity_Data
@@ -1032,12 +1055,7 @@
             throw new SkeletonSyntaxException("Unknown measure unit", segment);
         }
 
-        private static void generateMeasureUnitOption(MeasureUnit unit, StringBuilder sb) {
-            sb.append(unit.getType());
-            sb.append("-");
-            sb.append(unit.getSubtype());
-        }
-
+        // "per-measure-unit/" is deprecated in favour of "unit/".
         private static void parseMeasurePerUnitOption(StringSegment segment, MacroProps macros) {
             // A little bit of a hack: save the current unit (numerator), call the main measure unit
             // parsing code, put back the numerator unit, and put the new unit into per-unit.
@@ -1047,15 +1065,56 @@
             macros.unit = numerator;
         }
 
+        /**
+         * Parses unit identifiers like "meter-per-second" and "foot-and-inch", as
+         * specified via a "unit/" concise skeleton.
+         */
         private static void parseIdentifierUnitOption(StringSegment segment, MacroProps macros) {
-            MeasureUnit[] units = MeasureUnit.parseCoreUnitIdentifier(segment.asString());
-            if (units == null) {
-                throw new SkeletonSyntaxException("Invalid core unit identifier", segment);
+            MeasureUnitImpl fullUnit;
+            try {
+                fullUnit = MeasureUnitImpl.forIdentifier(segment.asString());
+            } catch (IllegalArgumentException e) {
+                throw new SkeletonSyntaxException("Invalid unit stem", segment);
             }
-            macros.unit = units[0];
-            if (units.length == 2) {
-                macros.perUnit = units[1];
+
+            // Mixed units can only be represented by full MeasureUnit instances, so we
+            // don't split the denominator into macros.perUnit.
+            if (fullUnit.getComplexity() == MeasureUnit.Complexity.MIXED) {
+                macros.unit = fullUnit.build();
+                return;
             }
+
+            // When we have a built-in unit (e.g. meter-per-second), we don't split it up
+            MeasureUnit testBuiltin = fullUnit.build();
+            if (testBuiltin.getType() != null) {
+                macros.unit = testBuiltin;
+                return;
+            }
+
+            // TODO(ICU-20941): Clean this up.
+            for (SingleUnitImpl subUnit : fullUnit.getSingleUnits()) {
+                if (subUnit.getDimensionality() > 0) {
+                    if (macros.unit == null) {
+                        macros.unit = subUnit.build();
+                    } else {
+                        macros.unit = macros.unit.product(subUnit.build());
+                    }
+                } else {
+                    // It's okay to mutate fullUnit, we're throwing it away after this:
+                    subUnit.setDimensionality(subUnit.getDimensionality() * -1);
+                    if (macros.perUnit == null) {
+                        macros.perUnit = subUnit.build();
+                    } else {
+                        macros.perUnit = macros.perUnit.product(subUnit.build());
+                    }
+                }
+            }
+        }
+
+        private static void parseUnitUsageOption(StringSegment segment, MacroProps macros) {
+            macros.usage = segment.asString();
+            // We do not do any validation of the usage string: it depends on the
+            // unitPreferenceData in the units resources.
         }
 
         private static void parseFractionStem(StringSegment segment, MacroProps macros) {
@@ -1432,39 +1491,39 @@
         }
 
         private static boolean unit(MacroProps macros, StringBuilder sb) {
-            if (macros.unit instanceof Currency) {
-                sb.append("currency/");
-                BlueprintHelpers.generateCurrencyOption((Currency) macros.unit, sb);
-                return true;
-            } else if (macros.unit instanceof NoUnit) {
-                if (macros.unit == NoUnit.PERCENT) {
-                    sb.append("percent");
-                    return true;
-                } else if (macros.unit == NoUnit.PERMILLE) {
-                    sb.append("permille");
-                    return true;
-                } else {
-                    assert macros.unit == NoUnit.BASE;
-                    // Default value is not shown in normalized form
-                    return false;
+            MeasureUnit unit = macros.unit;
+            if (macros.perUnit != null) {
+                if (macros.unit instanceof Currency || macros.perUnit instanceof Currency) {
+                    throw new UnsupportedOperationException(
+                        "Cannot generate number skeleton with currency unit and per-unit");
                 }
+                unit = unit.product(macros.perUnit.reciprocal());
+            }
+            if (unit instanceof Currency) {
+                sb.append("currency/");
+                BlueprintHelpers.generateCurrencyOption((Currency)unit, sb);
+                return true;
+            } else if (unit.equals(MeasureUnit.PERCENT)) {
+                sb.append("percent");
+                return true;
+            } else if (unit.equals(MeasureUnit.PERMILLE)) {
+                sb.append("permille");
+                return true;
             } else {
-                sb.append("measure-unit/");
-                BlueprintHelpers.generateMeasureUnitOption(macros.unit, sb);
+                sb.append("unit/");
+                sb.append(unit.getIdentifier());
                 return true;
             }
         }
 
-        private static boolean perUnit(MacroProps macros, StringBuilder sb) {
-            // Per-units are currently expected to be only MeasureUnits.
-            if (macros.perUnit instanceof Currency || macros.perUnit instanceof NoUnit) {
-                throw new UnsupportedOperationException(
-                        "Cannot generate number skeleton with per-unit that is not a standard measure unit");
-            } else {
-                sb.append("per-measure-unit/");
-                BlueprintHelpers.generateMeasureUnitOption(macros.perUnit, sb);
+        private static boolean usage(MacroProps macros, StringBuilder sb) {
+            if (macros.usage != null  && macros.usage.length() > 0) {
+                sb.append("usage/");
+                sb.append(macros.usage);
+
                 return true;
             }
+            return false;
         }
 
         private static boolean precision(MacroProps macros, StringBuilder sb) {
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/Precision.java b/icu4j/main/classes/core/src/com/ibm/icu/number/Precision.java
index aab4398..0b46cf6 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/Precision.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/Precision.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import java.math.BigDecimal;
@@ -365,6 +365,13 @@
     // PACKAGE-PRIVATE APIS //
     //////////////////////////
 
+    /**
+     * @internal
+     * @deprecated ICU internal only.
+     */
+    @Deprecated
+    public static final BogusRounder BOGUS_PRECISION = new BogusRounder();
+
     static final InfiniteRounderImpl NONE = new InfiniteRounderImpl();
 
     static final FractionRounderImpl FIXED_FRAC_0 = new FractionRounderImpl(0, 0);
@@ -544,6 +551,55 @@
     // INTERNALS //
     ///////////////
 
+    /**
+     * An BogusRounder's MathContext into precision.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    @Deprecated
+    public static class BogusRounder extends Precision {
+        /**
+         * Default constructor.
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        @Deprecated
+        public BogusRounder() {
+        }
+
+        /**
+         * {@inheritDoc}
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        @Override
+        @Deprecated
+        public void apply(DecimalQuantity value) {
+            throw new AssertionError("BogusRounder must not be applied");
+        }
+
+        @Override
+        BogusRounder createCopy() {
+            BogusRounder copy = new BogusRounder();
+            copy.mathContext = mathContext;
+            return copy;
+        }
+
+        /**
+         * Copies the BogusRounder's MathContext into precision.
+         *
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        @Deprecated
+        public Precision into(Precision precision) {
+            Precision copy = precision.createCopy();
+            copy.mathContext = mathContext;
+            return copy;
+        }
+    }
+
     static class InfiniteRounderImpl extends Precision {
 
         public InfiniteRounderImpl() {
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/Scale.java b/icu4j/main/classes/core/src/com/ibm/icu/number/Scale.java
index dceda2e..81e3d58 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/Scale.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/Scale.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import java.math.BigDecimal;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/ScientificNotation.java b/icu4j/main/classes/core/src/com/ibm/icu/number/ScientificNotation.java
index 49147f4..d5d9fad 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/ScientificNotation.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/ScientificNotation.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import java.text.Format.Field;
@@ -343,4 +343,4 @@
             return exponent == _other.exponent;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/SimpleNotation.java b/icu4j/main/classes/core/src/com/ibm/icu/number/SimpleNotation.java
index 85f1afe..0795ca6 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/SimpleNotation.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/SimpleNotation.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 /**
@@ -15,4 +15,4 @@
 public class SimpleNotation extends Notation {
     /* package-private */ SimpleNotation() {
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/SkeletonSyntaxException.java b/icu4j/main/classes/core/src/com/ibm/icu/number/SkeletonSyntaxException.java
index 53a9302..7751c36 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/SkeletonSyntaxException.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/SkeletonSyntaxException.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 /**
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/UnlocalizedNumberFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/number/UnlocalizedNumberFormatter.java
index f89f5ec..57c01be 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/UnlocalizedNumberFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/UnlocalizedNumberFormatter.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import java.util.Locale;
@@ -63,4 +63,4 @@
     UnlocalizedNumberFormatter create(int key, Object value) {
         return new UnlocalizedNumberFormatter(this, key, value);
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/UnlocalizedNumberRangeFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/number/UnlocalizedNumberRangeFormatter.java
index 14070d6..99ccc1b 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/UnlocalizedNumberRangeFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/UnlocalizedNumberRangeFormatter.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.number;
 
 import java.util.Locale;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/package.html b/icu4j/main/classes/core/src/com/ibm/icu/number/package.html
index d218412..bb868ff 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/package.html
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/package.html
@@ -3,7 +3,7 @@
 
 <head>
 <!--  Copyright (C) 2017 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--  Copyright (C) 2000-2004, International Business Machines Corporation and
   others. All Rights Reserved.
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/ArabicShaping.java b/icu4j/main/classes/core/src/com/ibm/icu/text/ArabicShaping.java
index 1944de6..7eb30e3 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/ArabicShaping.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/ArabicShaping.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2012, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/ArabicShapingException.java b/icu4j/main/classes/core/src/com/ibm/icu/text/ArabicShapingException.java
index c72f451..ee6b92f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/ArabicShapingException.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/ArabicShapingException.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  *   Copyright (C) 2001-2008, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/Bidi.java b/icu4j/main/classes/core/src/com/ibm/icu/text/Bidi.java
index 6da0d64..b3c11b2 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/Bidi.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/Bidi.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2016, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/BidiClassifier.java b/icu4j/main/classes/core/src/com/ibm/icu/text/BidiClassifier.java
index 9b15750..b82678d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/BidiClassifier.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/BidiClassifier.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2009, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/BidiLine.java b/icu4j/main/classes/core/src/com/ibm/icu/text/BidiLine.java
index 375f085..f9a1747 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/BidiLine.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/BidiLine.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2014, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/BidiRun.java b/icu4j/main/classes/core/src/com/ibm/icu/text/BidiRun.java
index 011d810..7a4958b 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/BidiRun.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/BidiRun.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2016, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/BidiTransform.java b/icu4j/main/classes/core/src/com/ibm/icu/text/BidiTransform.java
index e9318c3..f0c82a5 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/BidiTransform.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/BidiTransform.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 package com.ibm.icu.text;
 
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/BidiWriter.java b/icu4j/main/classes/core/src/com/ibm/icu/text/BidiWriter.java
index 5431688..3de9272 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/BidiWriter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/BidiWriter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2010, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/BreakIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/text/BreakIterator.java
index 3669868..5e67dfd 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/BreakIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/BreakIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/BreakIteratorFactory.java b/icu4j/main/classes/core/src/com/ibm/icu/text/BreakIteratorFactory.java
index a2817bc..2594c1b 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/BreakIteratorFactory.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/BreakIteratorFactory.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/BurmeseBreakEngine.java b/icu4j/main/classes/core/src/com/ibm/icu/text/BurmeseBreakEngine.java
index 6dc682a..1119cee 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/BurmeseBreakEngine.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/BurmeseBreakEngine.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/BytesDictionaryMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/text/BytesDictionaryMatcher.java
index b7c5f5c..f97016c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/BytesDictionaryMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/BytesDictionaryMatcher.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CanonicalIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CanonicalIterator.java
index 34a1560..c897af8 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/CanonicalIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CanonicalIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CaseMap.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CaseMap.java
index 80fc9ae..5113da0 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/CaseMap.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CaseMap.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.text;
 
 import java.util.Locale;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsDictionaryMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsDictionaryMatcher.java
index f1c2a91..bbf94d0 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsDictionaryMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsDictionaryMatcher.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetDetector.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetDetector.java
index f58a202..5b3d8bd 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetDetector.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetDetector.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2005-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetMatch.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetMatch.java
index c695233..a3d80e6 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetMatch.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetMatch.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2005-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_2022.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_2022.java
index 712d4f2..34b4e7c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_2022.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_2022.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2005 - 2012, International Business Machines Corporation and  *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_UTF8.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_UTF8.java
index 0d53253..facff32 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_UTF8.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_UTF8.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2005 - 2014, International Business Machines Corporation and  *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_Unicode.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_Unicode.java
index d467790..ce9827d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_Unicode.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_Unicode.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2013, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_mbcs.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_mbcs.java
index 034e4a8..c65a1a2 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_mbcs.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_mbcs.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ****************************************************************************
  * Copyright (C) 2005-2012, International Business Machines Corporation and *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_sbcs.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_sbcs.java
index ea42f5b..f352d5e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_sbcs.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_sbcs.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ****************************************************************************
  * Copyright (C) 2005-2013, International Business Machines Corporation and *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecognizer.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecognizer.java
index 3bacff1..d770403 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecognizer.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecognizer.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2005-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/ChineseDateFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/ChineseDateFormat.java
index a101504..00adef3 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/ChineseDateFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/ChineseDateFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*********************************************************************
  * Copyright (C) 2000-2014, International Business Machines Corporation and
  * others. All Rights Reserved.
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/ChineseDateFormatSymbols.java b/icu4j/main/classes/core/src/com/ibm/icu/text/ChineseDateFormatSymbols.java
index a4eddfe..7e25676 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/ChineseDateFormatSymbols.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/ChineseDateFormatSymbols.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /****************************************************************************
  * Copyright (C) 2000-2014, International Business Machines Corporation and
  * others. All Rights Reserved.
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CjkBreakEngine.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CjkBreakEngine.java
index 60ce286..a3c0479 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/CjkBreakEngine.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CjkBreakEngine.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012-2016, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CompactDecimalFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CompactDecimalFormat.java
index e185a54..c1b3101 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/CompactDecimalFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CompactDecimalFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, Google, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/ComposedCharIter.java b/icu4j/main/classes/core/src/com/ibm/icu/text/ComposedCharIter.java
index 5d6e35e..de60cfa 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/ComposedCharIter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/ComposedCharIter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/ConstrainedFieldPosition.java b/icu4j/main/classes/core/src/com/ibm/icu/text/ConstrainedFieldPosition.java
index b100e58..fac9453 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/ConstrainedFieldPosition.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/ConstrainedFieldPosition.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.text;
 
 import java.text.Format.Field;
@@ -295,7 +295,9 @@
      */
     public void setState(Field field, Object value, int start, int limit) {
         // Check matchesField only as an assertion (debug build)
-        assert matchesField(field, value);
+        if (field != null) {
+            assert matchesField(field, value);
+        }
 
         fField = field;
         fValue = value;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyDisplayNames.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyDisplayNames.java
index 63d73e0..289357d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyDisplayNames.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyDisplayNames.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyFormat.java
index c3cc937..7811cdc 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2004-2014, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyMetaInfo.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyMetaInfo.java
index 439e9f9..f722585 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyMetaInfo.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyMetaInfo.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyPluralInfo.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyPluralInfo.java
index 25c0e1c..9dd4334 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyPluralInfo.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyPluralInfo.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DateFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DateFormat.java
index bd42fbd..a9e41ea 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DateFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DateFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *   Copyright (C) 1996-2016, International Business Machines
  *   Corporation and others.  All Rights Reserved.
@@ -538,29 +538,34 @@
     /**
      * Hour Cycle
      * @draft ICU 67
+     * @provisional This API might change or be removed in a future release.
      */
     public enum HourCycle {
         /**
          * hour in am/pm (0~11)
          * @draft ICU 67
+         * @provisional This API might change or be removed in a future release.
          */
         HOUR_CYCLE_11,
 
         /**
          * hour in am/pm (1~12)
          * @draft ICU 67
+         * @provisional This API might change or be removed in a future release.
          */
         HOUR_CYCLE_12,
 
         /**
          * hour in day (0~23)
          * @draft ICU 67
+         * @provisional This API might change or be removed in a future release.
          */
         HOUR_CYCLE_23,
 
         /**
          * hour in day (1~24)
          * @draft ICU 67
+         * @provisional This API might change or be removed in a future release.
          */
         HOUR_CYCLE_24;
     };
@@ -2354,7 +2359,7 @@
             GregorianCalendar cal = new GregorianCalendar();
             CAL_FIELD_COUNT = cal.getFieldCount();
             CAL_FIELDS = new Field[CAL_FIELD_COUNT];
-            FIELD_NAME_MAP = new HashMap<String, Field>(CAL_FIELD_COUNT);
+            FIELD_NAME_MAP = new HashMap<>(CAL_FIELD_COUNT);
         }
 
         // Java fields -------------------
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DateFormatSymbols.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DateFormatSymbols.java
index 58dd22d..19ad51d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DateFormatSymbols.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DateFormatSymbols.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalFormat.java
index 62bccc4..4a59b01 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *   Copyright (C) 2008-2016, International Business Machines
 *   Corporation and others.  All Rights Reserved.
@@ -484,6 +484,10 @@
     private String fTimePattern = null;
     private String fDateTimeFormat = null;
 
+    /*
+     * Capitalization context, new in ICU 68
+     */
+    private DisplayContext fCapitalizationSetting = DisplayContext.CAPITALIZATION_NONE;
 
     /*
      * default constructor; private because we don't want anyone to use
@@ -722,6 +726,7 @@
         other.fDatePattern = fDatePattern;
         other.fTimePattern = fTimePattern;
         other.fDateTimeFormat = fDateTimeFormat;
+        other.fCapitalizationSetting = fCapitalizationSetting;
         return other;
     }
 
@@ -920,6 +925,10 @@
             throw new IllegalArgumentException("can not format on two different calendars");
         }
 
+        // Set up fDateFormat to handle the first or only part of the interval
+        // (override later for any second part).
+        fDateFormat.setContext(fCapitalizationSetting);
+
         // First, find the largest different calendar field.
         int field = -1; //init with an invalid value.
 
@@ -1008,6 +1017,8 @@
         }
         if ( intervalPattern.getSecondPart() != null ) {
             fDateFormat.applyPattern(intervalPattern.getSecondPart());
+            // No capitalization for second part of interval
+            fDateFormat.setContext(DisplayContext.CAPITALIZATION_NONE);
             fDateFormat.format(secondCal, appendTo, pos, attributes);
         }
         fDateFormat.applyPattern(originalPattern);
@@ -1045,6 +1056,8 @@
             if (pos.getEndIndex() > 0) {
                 pos = new FieldPosition(0);
             }
+            // No capitalization for second portion
+            fDateFormat.setContext(DisplayContext.CAPITALIZATION_NONE);
         }
     }
 
@@ -1099,6 +1112,8 @@
                 if (pos.getEndIndex() > 0) {
                     pos = new FieldPosition(0);
                 }
+                // No capitalization for second portion
+                fDateFormat.setContext(DisplayContext.CAPITALIZATION_NONE);
             }
 
             // restore full pattern
@@ -1234,7 +1249,7 @@
         if (fDateFormat != null) {
             fDateFormat.setTimeZone(zoneToSet);
         }
-        // fDateFormat has the master calendar for the DateIntervalFormat;
+        // fDateFormat has the primary calendar for the DateIntervalFormat;
         // fFromCalendar and fToCalendar are internal work clones of that calendar.
         if (fFromCalendar != null) {
             fFromCalendar.setTimeZone(zoneToSet);
@@ -1245,6 +1260,39 @@
     }
 
     /**
+     * {@icu} Set a particular DisplayContext value in the formatter,
+     * such as CAPITALIZATION_FOR_STANDALONE. This causes the formatted
+     * result to be capitalized appropriately for the context in which
+     * it is intended to be used, considering both the locale and the
+     * type of field at the beginning of the formatted result.
+     *
+     * @param context The DisplayContext value to set.
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setContext(DisplayContext context)
+    {
+        if (context.type() == DisplayContext.Type.CAPITALIZATION) {
+            fCapitalizationSetting = context;
+        }
+    }
+
+    /**
+     * {@icu} Get the formatter's DisplayContext value for the specified DisplayContext.Type,
+     * such as CAPITALIZATION.
+     *
+     * @param type the DisplayContext.Type whose value to return
+     * @return the current DisplayContext setting for the specified type
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public DisplayContext getContext(DisplayContext.Type type)
+    {
+        return (type == DisplayContext.Type.CAPITALIZATION && fCapitalizationSetting != null)?
+                fCapitalizationSetting: DisplayContext.CAPITALIZATION_NONE;
+    }
+
+    /**
      * Gets the date formatter
      * @return a copy of the date formatter associated with
      * this date interval formatter.
@@ -1331,7 +1379,7 @@
             // or by getInstance(String skeleton, .... )
             fSkeleton = dtpng.getSkeleton(fullPattern);
         }
-        String skeleton = fSkeleton;
+        String skeleton = normalizeHourMetacharacters(fSkeleton, locale);
 
         HashMap<String, PatternInfo> intervalPatterns = new HashMap<>();
 
@@ -1547,6 +1595,89 @@
     }
     */
 
+    private String normalizeHourMetacharacters(String skeleton, ULocale locale) {
+        StringBuilder result = new StringBuilder(skeleton);
+    
+        char hourMetachar = '\0';
+        int metacharStart = 0;
+        int metacharCount = 0;
+        for (int i = 0; i < result.length(); i++) {
+            char c = result.charAt(i);
+            if (c == 'j' || c == 'J' || c == 'C') {
+                if (hourMetachar == '\0') {
+                    hourMetachar = c;
+                    metacharStart = i;
+                }
+                ++metacharCount;
+            } else {
+                if (hourMetachar != '\0') {
+                    break;
+                }
+            }
+        }
+    
+        if (hourMetachar != '\0') {
+            char hourChar = 'H';
+            char dayPeriodChar = 'a';
+
+            DateTimePatternGenerator dtptng = DateTimePatternGenerator.getInstance(locale);
+            String convertedPattern = dtptng.getBestPattern(String.valueOf(hourMetachar));
+
+            // strip literal text from the pattern (so literal characters don't get mistaken for pattern
+            // characters-- such as the 'h' in 'Uhr' in German)
+            int firstQuotePos;
+            while ((firstQuotePos = convertedPattern.indexOf('\'')) != -1) {
+                int secondQuotePos = convertedPattern.indexOf('\'', firstQuotePos + 1);
+                if (secondQuotePos == -1) {
+                    secondQuotePos = firstQuotePos;
+                }
+                convertedPattern = convertedPattern.substring(0, firstQuotePos) + convertedPattern.substring(secondQuotePos + 1);
+            }
+    
+            if (convertedPattern.indexOf('h') != -1) {
+                hourChar = 'h';
+            } else if (convertedPattern.indexOf('K') != -1) {
+                hourChar = 'K';
+            } else if (convertedPattern.indexOf('k') != -1) {
+                hourChar = 'k';
+            }
+        
+            if (convertedPattern.indexOf('b') != -1) {
+                dayPeriodChar = 'b';
+            } else if (convertedPattern.indexOf('B') != -1) {
+                dayPeriodChar = 'B';
+            }
+        
+            if (hourChar == 'H' || hourChar == 'k') {
+                result.replace(metacharStart, metacharStart + metacharCount, String.valueOf(hourChar));
+            } else {
+                StringBuilder hourAndDayPeriod = new StringBuilder();
+                hourAndDayPeriod.append(hourChar);
+                switch (metacharCount) {
+                    case 1:
+                    case 2:
+                    default:
+                        hourAndDayPeriod.append(dayPeriodChar);
+                        break;
+                    case 3:
+                    case 4:
+                        for (int i = 0; i < 4; i++) {
+                            hourAndDayPeriod.append(dayPeriodChar);
+                        }
+                        break;
+                    case 5:
+                    case 6:
+                        for (int i = 0; i < 5; i++) {
+                            hourAndDayPeriod.append(dayPeriodChar);
+                        }
+                        break;
+                }
+                result.replace(metacharStart, metacharStart + metacharCount, hourAndDayPeriod.toString());
+            }
+        }
+        return result.toString();
+    }
+
     /*
      * get separated date and time skeleton from a combined skeleton.
      *
@@ -1583,11 +1714,10 @@
         int dCount = 0;
         int MCount = 0;
         int yCount = 0;
-        int hCount = 0;
-        int HCount = 0;
         int mCount = 0;
         int vCount = 0;
         int zCount = 0;
+        char hourChar = '\0';
 
         for (i = 0; i < skeleton.length(); ++i) {
             char ch = skeleton.charAt(i);
@@ -1627,17 +1757,14 @@
                 normalizedDateSkeleton.append(ch);
                 dateSkeleton.append(ch);
                 break;
-              case 'a':
-                // 'a' is implicitly handled
-                timeSkeleton.append(ch);
-                break;
               case 'h':
-                timeSkeleton.append(ch);
-                ++hCount;
-                break;
               case 'H':
+              case 'k':
+              case 'K':
                 timeSkeleton.append(ch);
-                ++HCount;
+                if (hourChar == '\0') {
+                    hourChar = ch;
+                }
                 break;
               case 'm':
                 timeSkeleton.append(ch);
@@ -1651,14 +1778,15 @@
                 ++vCount;
                 timeSkeleton.append(ch);
                 break;
+              case 'a':
               case 'V':
               case 'Z':
-              case 'k':
-              case 'K':
               case 'j':
               case 's':
               case 'S':
               case 'A':
+              case 'b':
+              case 'B':
                 timeSkeleton.append(ch);
                 normalizedTimeSkeleton.append(ch);
                 break;
@@ -1694,11 +1822,8 @@
         }
 
         /* generate normalized form for time */
-        if ( HCount != 0 ) {
-            normalizedTimeSkeleton.append('H');
-        }
-        else if ( hCount != 0 ) {
-            normalizedTimeSkeleton.append('h');
+        if ( hourChar != '\0' ) {
+            normalizedTimeSkeleton.append(hourChar);
         }
         if ( mCount != 0 ) {
             normalizedTimeSkeleton.append('m');
@@ -1857,6 +1982,14 @@
                  pattern = fInfo.getIntervalPattern(bestSkeleton,
                                                          Calendar.HOUR);
                  if ( pattern != null ) {
+                    boolean suppressDayPeriodField = fSkeleton.indexOf('J') != -1;
+                    String part1 = adjustFieldWidth(skeleton, bestSkeleton,
+                                       pattern.getFirstPart(), differenceInfo, suppressDayPeriodField);
+                    String part2 = adjustFieldWidth(skeleton, bestSkeleton,
+                                       pattern.getSecondPart(), differenceInfo, suppressDayPeriodField);
+                    pattern =  new PatternInfo(part1, part2,
+                                               pattern.firstDateInPtnIsLaterDate());
+                                               
                       // share
                       intervalPatterns.put(DateIntervalInfo.
                           CALENDAR_FIELD_TO_PATTERN_LETTER[field],
@@ -1894,10 +2027,11 @@
         }
         if ( pattern != null ) {
             if ( differenceInfo != 0 ) {
+                boolean suppressDayPeriodField = fSkeleton.indexOf('J') != -1;
                 String part1 = adjustFieldWidth(skeleton, bestSkeleton,
-                                   pattern.getFirstPart(), differenceInfo);
+                                   pattern.getFirstPart(), differenceInfo, suppressDayPeriodField);
                 String part2 = adjustFieldWidth(skeleton, bestSkeleton,
-                                   pattern.getSecondPart(), differenceInfo);
+                                   pattern.getSecondPart(), differenceInfo, suppressDayPeriodField);
                 pattern =  new PatternInfo(part1, part2,
                                            pattern.firstDateInPtnIsLaterDate());
             } else {
@@ -1936,12 +2070,14 @@
      * @param differenceInfo           the difference between 2 skeletons
      *                                 1 means only field width differs
      *                                 2 means v/z exchange
+     * @param suppressDayPeriodField   if true, remove the day period field from the result
      * @return the adjusted interval pattern
      */
     private static String adjustFieldWidth(String inputSkeleton,
                                     String bestMatchSkeleton,
                                     String bestMatchIntervalPattern,
-                                    int differenceInfo ) {
+                                    int differenceInfo,
+                                    boolean suppressDayPeriodField ) {
 
         if ( bestMatchIntervalPattern == null ) {
             return null; // the 2nd part could be null
@@ -1963,20 +2099,46 @@
         */
 
 
+        int PATTERN_CHAR_BASE = 0x41;
+
         DateIntervalInfo.parseSkeleton(inputSkeleton, inputSkeletonFieldWidth);
         DateIntervalInfo.parseSkeleton(bestMatchSkeleton, bestMatchSkeletonFieldWidth);
+        if (suppressDayPeriodField) {
+            if (bestMatchIntervalPattern.indexOf(" a") != -1) {
+                bestMatchIntervalPattern = findReplaceInPattern(bestMatchIntervalPattern, " a", "");
+            } else if (bestMatchIntervalPattern.indexOf("a ") != -1) {
+                bestMatchIntervalPattern = findReplaceInPattern(bestMatchIntervalPattern, "a ", "");
+            }
+            bestMatchIntervalPattern = findReplaceInPattern(bestMatchIntervalPattern, "a", "");
+        }
         if ( differenceInfo == 2 ) {
-            bestMatchIntervalPattern = bestMatchIntervalPattern.replace('v', 'z');
+            if (inputSkeleton.indexOf('z') != -1) {
+                bestMatchIntervalPattern = findReplaceInPattern(bestMatchIntervalPattern, "v", "z");
+            }
+            if (inputSkeleton.indexOf('K') != -1) {
+                bestMatchIntervalPattern = findReplaceInPattern(bestMatchIntervalPattern, "h", "K");
+            }
+            if (inputSkeleton.indexOf('k') != -1) {
+                bestMatchIntervalPattern = findReplaceInPattern(bestMatchIntervalPattern, "H", "k");
+            }
+            if (inputSkeleton.indexOf('b') != -1) {
+                bestMatchIntervalPattern = findReplaceInPattern(bestMatchIntervalPattern, "a", "b");
+            }
+        }
+        if (bestMatchIntervalPattern.indexOf('a') != -1 && bestMatchSkeletonFieldWidth['a' - PATTERN_CHAR_BASE] == 0) {
+            bestMatchSkeletonFieldWidth['a' - PATTERN_CHAR_BASE] = 1;
+        }
+        if (bestMatchIntervalPattern.indexOf('b') != -1 && bestMatchSkeletonFieldWidth['b' - PATTERN_CHAR_BASE] == 0) {
+            bestMatchSkeletonFieldWidth['b' - PATTERN_CHAR_BASE] = 1;
         }
 
         StringBuilder adjustedPtn = new StringBuilder(bestMatchIntervalPattern);
 
+
         boolean inQuote = false;
         char prevCh = 0;
         int count = 0;
 
-        int PATTERN_CHAR_BASE = 0x41;
-
         // loop through the pattern string character by character
         int adjustedPtnLength = adjustedPtn.length();
         for (int i = 0; i < adjustedPtnLength; ++i) {
@@ -2035,6 +2197,43 @@
         }
         return adjustedPtn.toString();
     }
+    
+    /**
+     * Does the same thing as String.replace(), except that it won't perform the
+     * substitution inside quoted literal text.
+     * @param targetString The string to perform the find-replace operation on.
+     * @param strToReplace The string to search for and replace in the target string.
+     * @param strToReplaceWith The string to substitute in wherever `stringToReplace` was found.
+     */
+    private static String findReplaceInPattern(String targetString,
+                                               String strToReplace,
+                                               String strToReplaceWith) {
+        int firstQuoteIndex = targetString.indexOf("\'");
+        if (firstQuoteIndex < 0) {
+            return targetString.replace(strToReplace, strToReplaceWith);
+        } else {
+            StringBuilder result = new StringBuilder();
+            String source = targetString;
+    
+            while (firstQuoteIndex >= 0) {
+                int secondQuoteIndex = source.indexOf("\'", firstQuoteIndex + 1);
+                if (secondQuoteIndex < 0) {
+                    secondQuoteIndex = source.length() - 1;
+                }
+        
+                String unquotedText = source.substring(0, firstQuoteIndex);
+                String quotedText = source.substring(firstQuoteIndex, secondQuoteIndex + 1);
+        
+                result.append(unquotedText.replace(strToReplace, strToReplaceWith));
+                result.append(quotedText);
+        
+                source = source.substring(secondQuoteIndex + 1);
+                firstQuoteIndex = source.indexOf("\'");
+            }
+            result.append(source.replace(strToReplace, strToReplaceWith));
+            return result.toString();
+        }
+  }
 
 
     /*
@@ -2091,6 +2290,10 @@
         throws IOException, ClassNotFoundException {
         stream.defaultReadObject();
         initializePattern(isDateIntervalInfoDefault ? LOCAL_PATTERN_CACHE : null);
+        // if deserialized from a release that didn't have fCapitalizationSetting, set it to default
+        if (fCapitalizationSetting == null) {
+            fCapitalizationSetting = DisplayContext.CAPITALIZATION_NONE;
+        }
     }
 
     /**
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java
index d042bb9..e095237 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2016, International Business Machines Corporation and
@@ -532,7 +532,7 @@
 
             // Check that the pattern letter is accepted
             char letter = patternLetter.charAt(0);
-            if (ACCEPTED_PATTERN_LETTERS.indexOf(letter) < 0) {
+            if (ACCEPTED_PATTERN_LETTERS.indexOf(letter) < 0 && letter != 'B') {
                 return null;
             }
 
@@ -540,6 +540,12 @@
             if (letter == CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.HOUR_OF_DAY].charAt(0)) {
                 patternLetter = CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.HOUR];
             }
+            
+            // Replace 'a' for 'B'
+            // TODO: Using AM/PM as a proxy for flexible day period isn’t really correct, but it’s close
+            if (letter == 'B') {
+                patternLetter = CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.AM_PM];
+            }
 
             return patternLetter;
         }
@@ -1081,20 +1087,25 @@
         final int STRING_NUMERIC_DIFFERENCE = 0x100;
         final int BASE = 0x41;
 
-        // TODO: this is a hack for 'v' and 'z'
-        // resource bundle only have time skeletons ending with 'v',
-        // but not for time skeletons ending with 'z'.
-        boolean replaceZWithV = false;
-        if ( inputSkeleton.indexOf('z') != -1 ) {
+        // hack for certain alternate characters
+        // resource bundles only have time skeletons containing 'v', 'h', and 'H'
+        // but not time skeletons containing 'z', 'K', or 'k'
+        // the skeleton may also include 'a' or 'b', which never occur in the resource bundles, so strip them out too
+        boolean replacedAlternateChars = false;
+        if ( inputSkeleton.indexOf('z') != -1 || inputSkeleton.indexOf('k') != -1 || inputSkeleton.indexOf('K') != -1 || inputSkeleton.indexOf('a') != -1 || inputSkeleton.indexOf('b') != -1 ) {
             inputSkeleton = inputSkeleton.replace('z', 'v');
-            replaceZWithV = true;
+            inputSkeleton = inputSkeleton.replace('k', 'H');
+            inputSkeleton = inputSkeleton.replace('K', 'h');
+            inputSkeleton = inputSkeleton.replace("a", "");
+            inputSkeleton = inputSkeleton.replace("b", "");
+            replacedAlternateChars = true;
         }
 
         parseSkeleton(inputSkeleton, inputSkeletonFieldWidth);
         int bestDistance = Integer.MAX_VALUE;
         // 0 means exact the same skeletons;
         // 1 means having the same field, but with different length,
-        // 2 means only z/v differs
+        // 2 means only z/v, h/K, or H/k differs
         // -1 means having different field.
         int bestFieldDifference = 0;
         for (String skeleton : fIntervalPatterns.keySet()) {
@@ -1135,7 +1146,7 @@
                 break;
             }
         }
-        if ( replaceZWithV && bestFieldDifference != -1 ) {
+        if ( replacedAlternateChars && bestFieldDifference != -1 ) {
             bestFieldDifference = 2;
         }
         return new DateIntervalFormat.BestMatchInfo(bestSkeleton, bestFieldDifference);
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java
index 301386a..8009792 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
  * Copyright (C) 2006-2016, Google, International Business Machines Corporation
@@ -125,7 +125,7 @@
         }
 
         result = new DateTimePatternGenerator();
-        result.initData(uLocale);
+        result.initData(uLocale, false);
 
         // freeze and cache
         result.freeze();
@@ -133,16 +133,39 @@
         return result;
     }
 
-    private void initData(ULocale uLocale) {
+    /**
+     * Construct a non-frozen instance of DateTimePatternGenerator for a
+     * given locale that skips using the standard date and time patterns.
+     * Because this is different than the normal instance for the locale,
+     * it does not set or use the cache.
+     * @param uLocale The locale to pass.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    @Deprecated
+    public static DateTimePatternGenerator getInstanceNoStdPat(ULocale uLocale) {
+        DateTimePatternGenerator result = new DateTimePatternGenerator();
+        result.initData(uLocale, true);
+        return result;
+    }
+
+    private void initData(ULocale uLocale, boolean skipStdPatterns) {
         // This instance of PatternInfo is required for calling some functions.  It is used for
         // passing additional information to the caller.  We won't use this extra information, but
         // we still need to make a temporary instance.
         PatternInfo returnInfo = new PatternInfo();
 
         addCanonicalItems();
-        addICUPatterns(returnInfo, uLocale);
+        if (!skipStdPatterns) { // skip to prevent circular dependency when used by Calendar
+            addICUPatterns(returnInfo, uLocale);
+        }
         addCLDRData(returnInfo, uLocale);
-        setDateTimeFromCalendar(uLocale);
+        if (!skipStdPatterns) { // also skip to prevent circular dependency from Calendar
+            setDateTimeFromCalendar(uLocale);
+        } else {
+            // instead, since from Calendar we do not care about dateTimePattern, use a fallback
+            setDateTimeFormat("{1} {0}");
+        }
         setDecimalSymbols(uLocale);
         getAllowedHourFormats(uLocale);
         fillInMissing();
@@ -1353,6 +1376,7 @@
     /**
      * Return the default hour cycle.
      * @draft ICU 67
+     * @provisional This API might change or be removed in a future release.
      */
     public DateFormat.HourCycle getDefaultHourCycle() {
       switch(getDefaultHourFormatChar()) {
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DecimalFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DecimalFormat.java
index c06531e..980b325 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DecimalFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DecimalFormat.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.text;
 
 import java.io.IOException;
@@ -131,8 +131,8 @@
  * <p>It is also possible to specify the <em>rounding mode</em> to use. The default rounding mode is
  * "half even", which rounds numbers to their closest increment, with ties broken in favor of
  * trailing numbers being even. For more information, see {@link #setRoundingMode} and <a
- * href="http://userguide.icu-project.org/formatparse/numbers/rounding-modes">the ICU User
- * Guide</a>.
+ * href="https://unicode-org.github.io/icu/userguide/format_parse/numbers/rounding-modes">the ICU
+ * User Guide</a>.
  *
  * <h3>Pattern Strings</h3>
  *
@@ -1272,8 +1272,8 @@
    * number, and rounds to the closest even number if at the midpoint.
    *
    * <p>For more detail on rounding modes, see <a
-   * href="http://userguide.icu-project.org/formatparse/numbers/rounding-modes">the ICU User
-   * Guide</a>.
+   * href="https://unicode-org.github.io/icu/userguide/format_parse/numbers/rounding-modes">the ICU
+   * User Guide</a>.
    *
    * <p>For backwards compatibility, the rounding mode is specified as an int argument, which can be
    * from either the constants in {@link BigDecimal} or the ordinal value of {@link RoundingMode}.
@@ -1995,6 +1995,16 @@
    * order for the grouping separator to be printed. For example, if minimum grouping digits is set
    * to 2, in <em>en-US</em>, 1234 will be printed as "1234" and 12345 will be printed as "12,345".
    *
+    * Set the value to:
+   * <ul>
+   * <li>1 to turn off minimum grouping digits.</li>
+   * <li>MINIMUM_GROUPING_DIGITS_AUTO to display grouping using the default
+   * strategy for all locales.</li>
+   * <li>MINIMUM_GROUPING_DIGITS_MIN2 to display grouping using locale defaults,
+   * except do not show grouping on values smaller than 10000 (such that there is a minimum of
+   * two digits before the first separator).</li>
+   * </ul>
+   *
    * @param number The minimum number of digits before grouping is triggered.
    * @category Separators
    * @stable ICU 64
@@ -2005,6 +2015,31 @@
   }
 
   /**
+   * {@icu} Constant for {@link #setMinimumGroupingDigits(int)} to specify display
+   * grouping using the default strategy for all locales.
+   *
+   * @see #setMinimumGroupingDigits(int)
+   * @see #MINIMUM_GROUPING_DIGITS_MIN2
+   * @category Separators
+   * @provisional This API might change or be removed in a future release.
+   * @draft ICU 68
+   */
+  public static final int MINIMUM_GROUPING_DIGITS_AUTO = -2;
+
+  /**
+   * {@icu} Constant for {@link #setMinimumGroupingDigits(int)} to specify display
+   * grouping using locale defaults, except do not show grouping on values smaller than
+   * 10000 (such that there is a minimum of two digits before the first separator).
+   *
+   * @see #setMinimumGroupingDigits(int)
+   * @see #MINIMUM_GROUPING_DIGITS_AUTO
+   * @category Separators
+   * @provisional This API might change or be removed in a future release.
+   * @draft ICU 68
+   */
+  public static final int MINIMUM_GROUPING_DIGITS_MIN2 = -3;
+
+  /**
    * Returns whether the decimal separator is shown on integers.
    *
    * @see #setDecimalSeparatorAlwaysShown
@@ -2212,6 +2247,16 @@
     refreshFormatter();
   }
 
+  // BEGIN android-added: Allow libcore to use java-compatible parsing mode
+  /**
+   * @param parseJavaCompatible true for java-compatible mode, and otherwise lenient mode.
+   * @internal
+   */
+  public void setParseJavaCompatible(boolean parseJavaCompatible) {
+    setParseStrictMode(parseJavaCompatible ? ParseMode.JAVA_COMPATIBILITY : ParseMode.LENIENT);
+  }
+  // END android-added: Allow libcore to use java-compatible parsing mode
+
   /**
    * Android libcore uses this internal method to set {@link ParseMode#JAVA_COMPATIBILITY}.
    * @internal
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DecimalFormatSymbols.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DecimalFormatSymbols.java
index 11933db..9bc567f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DecimalFormatSymbols.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DecimalFormatSymbols.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DictionaryBreakEngine.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DictionaryBreakEngine.java
index baee319..39603b2 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DictionaryBreakEngine.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DictionaryBreakEngine.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DictionaryData.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DictionaryData.java
index 3980e3b..22935c7 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DictionaryData.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DictionaryData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DictionaryMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DictionaryMatcher.java
index f8b6a4e..015de31 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DictionaryMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DictionaryMatcher.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DisplayContext.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DisplayContext.java
index fac0d70..c4ffb6c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DisplayContext.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DisplayContext.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DurationFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DurationFormat.java
index 3a0fcd2..1911784 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DurationFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DurationFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/Edits.java b/icu4j/main/classes/core/src/com/ibm/icu/text/Edits.java
index 2cd080a..ade3c8b 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/Edits.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/Edits.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.text;
 
 import java.nio.BufferOverflowException;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/FilteredBreakIteratorBuilder.java b/icu4j/main/classes/core/src/com/ibm/icu/text/FilteredBreakIteratorBuilder.java
index 7c6b374..4cb80f6 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/FilteredBreakIteratorBuilder.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/FilteredBreakIteratorBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2016, International Business Machines Corporation and
@@ -110,4 +110,4 @@
     @Deprecated
     protected FilteredBreakIteratorBuilder() {
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/FilteredNormalizer2.java b/icu4j/main/classes/core/src/com/ibm/icu/text/FilteredNormalizer2.java
index 419874d..4ca9016 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/FilteredNormalizer2.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/FilteredNormalizer2.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2009-2014, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/FormattedValue.java b/icu4j/main/classes/core/src/com/ibm/icu/text/FormattedValue.java
index 13c1424..6486b3d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/FormattedValue.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/FormattedValue.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.text;
 
 import java.text.AttributedCharacterIterator;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/IDNA.java b/icu4j/main/classes/core/src/com/ibm/icu/text/IDNA.java
index 831f026..03da296 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/IDNA.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/IDNA.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/KhmerBreakEngine.java b/icu4j/main/classes/core/src/com/ibm/icu/text/KhmerBreakEngine.java
index f2a3a46..53b6872 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/KhmerBreakEngine.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/KhmerBreakEngine.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/LanguageBreakEngine.java b/icu4j/main/classes/core/src/com/ibm/icu/text/LanguageBreakEngine.java
index 84db0c8..c3e7231 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/LanguageBreakEngine.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/LanguageBreakEngine.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/LaoBreakEngine.java b/icu4j/main/classes/core/src/com/ibm/icu/text/LaoBreakEngine.java
index d9f13fe..73d6a03 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/LaoBreakEngine.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/LaoBreakEngine.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/ListFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/text/ListFormatter.java
index aca1a94..3d58548 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/ListFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/ListFormatter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012-2016, Google, International Business Machines Corporation and
@@ -545,7 +545,7 @@
     }
 
     // A static handler just returns the pattern without considering the input text.
-    private class StaticHandler implements PatternHandler {
+    private static final class StaticHandler implements PatternHandler {
         StaticHandler(String two, String end) {
             twoPattern = two;
             endPattern = end;
@@ -562,7 +562,7 @@
     }
 
     // A contextual handler returns one of the two patterns depending on whether the text matched the regexp.
-    private class ContextualHandler implements PatternHandler {
+    private static final class ContextualHandler implements PatternHandler {
         ContextualHandler(Pattern regexp, String thenTwo, String elseTwo, String thenEnd, String elseEnd) {
             this.regexp = regexp;
             thenTwoPattern = thenTwo;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/LocaleDisplayNames.java b/icu4j/main/classes/core/src/com/ibm/icu/text/LocaleDisplayNames.java
index 005e52a..0374242 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/LocaleDisplayNames.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/LocaleDisplayNames.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/MeasureFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/MeasureFormat.java
index b9876f7..7998cf5 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/MeasureFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/MeasureFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2004-2016, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/MessageFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/MessageFormat.java
index 86e94e2..925576a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/MessageFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/MessageFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2004-2016, International Business Machines
@@ -280,7 +280,7 @@
  * or preformatted values, but not pattern strings or custom format objects.</p>
  *
  * <p>For more details, see the
- * <a href="http://userguide.icu-project.org/formatparse/messages">ICU User Guide</a>.</p>
+ * <a href="https://unicode-org.github.io/icu/userguide/format_parse/messages">ICU User Guide</a>.</p>
  *
  * <h4>Usage Information</h4>
  *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/MessagePattern.java b/icu4j/main/classes/core/src/com/ibm/icu/text/MessagePattern.java
index 1331672..75d51a0 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/MessagePattern.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/MessagePattern.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2010-2016, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/MessagePatternUtil.java b/icu4j/main/classes/core/src/com/ibm/icu/text/MessagePatternUtil.java
index 40c6670..d7d1c61 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/MessagePatternUtil.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/MessagePatternUtil.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011-2014, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/NFRule.java b/icu4j/main/classes/core/src/com/ibm/icu/text/NFRule.java
index b54fe8a..fe1b8f5 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/NFRule.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/NFRule.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
@@ -41,9 +41,9 @@
     static final int PROPER_FRACTION_RULE = -3;
 
     /**
-     * Special base value used to identify a master rule
+     * Special base value used to identify a default rule
      */
-    static final int MASTER_RULE = -4;
+    static final int DEFAULT_RULE = -4;
 
     /**
      * Special base value used to identify an infinity rule
@@ -169,7 +169,7 @@
             if ((rule1.baseValue > 0
                  && rule1.baseValue % (power(rule1.radix, rule1.exponent)) == 0)
                 || rule1.baseValue == IMPROPER_FRACTION_RULE
-                || rule1.baseValue == MASTER_RULE)
+                || rule1.baseValue == DEFAULT_RULE)
             {
 
                 // if it passes that test, new up the second rule.  If the
@@ -190,9 +190,9 @@
                     // the proper fraction rule
                     rule2.baseValue = PROPER_FRACTION_RULE;
                 }
-                else if (rule1.baseValue == MASTER_RULE) {
+                else if (rule1.baseValue == DEFAULT_RULE) {
                     // if the description began with "x.0" and contains bracketed
-                    // text, it describes both the master rule and the
+                    // text, it describes both the default rule and the
                     // improper fraction rule
                     rule2.baseValue = rule1.baseValue;
                     rule1.baseValue = IMPROPER_FRACTION_RULE;
@@ -378,7 +378,7 @@
                     decimalPoint = descriptor.charAt(1);
                 }
                 else if (firstChar == 'x' && lastChar == '0') {
-                    setBaseValue(MASTER_RULE);
+                    setBaseValue(DEFAULT_RULE);
                     decimalPoint = descriptor.charAt(1);
                 }
                 else if (descriptor.equals("NaN")) {
@@ -651,7 +651,7 @@
         else if (baseValue == PROPER_FRACTION_RULE) {
             result.append('0').append(decimalPoint == 0 ? '.' : decimalPoint).append("x: ");
         }
-        else if (baseValue == MASTER_RULE) {
+        else if (baseValue == DEFAULT_RULE) {
             result.append('x').append(decimalPoint == 0 ? '.' : decimalPoint).append("0: ");
         }
         else if (baseValue == INFINITY_RULE) {
@@ -1241,6 +1241,10 @@
 
         RbnfLenientScanner scanner = formatter.getLenientScanner();
         if (scanner != null) {
+            // Check if non-lenient rule finds the text before call lenient parsing
+            if (str.startsWith(prefix)) {
+                return prefix.length();
+            }
             return scanner.prefixLength(str, prefix);
         }
 
@@ -1290,9 +1294,14 @@
         }
 
         if (scanner != null) {
-            // if lenient parsing is turned ON, we've got some work
-            // ahead of us
-            return scanner.findText(str, key, startingAt);
+            // Check if non-lenient rule finds the text before call lenient parsing
+            int pos[] = new int[] { str.indexOf(key, startingAt), key.length() };
+            if (pos[0] >= 0) {
+                return pos;
+            } else {
+                // if lenient parsing is turned ON, we've got some work ahead of us
+                return scanner.findText(str, key, startingAt);
+            }
         }
         // if lenient parsing is turned off, this is easy. Just call
         // String.indexOf() and we're done
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/NFRuleSet.java b/icu4j/main/classes/core/src/com/ibm/icu/text/NFRuleSet.java
index 2a70ec5..c81e7cc 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/NFRuleSet.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/NFRuleSet.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
@@ -57,7 +57,7 @@
     /** 0.x */
     static final int PROPER_FRACTION_RULE_INDEX = 2;
     /** x.0 */
-    static final int MASTER_RULE_INDEX = 3;
+    static final int DEFAULT_RULE_INDEX = 3;
     /** Inf */
     static final int INFINITY_RULE_INDEX = 4;
     /** NaN */
@@ -243,8 +243,8 @@
         else if (baseValue == NFRule.PROPER_FRACTION_RULE) {
             setBestFractionRule(NFRuleSet.PROPER_FRACTION_RULE_INDEX, rule, true);
         }
-        else if (baseValue == NFRule.MASTER_RULE) {
-            setBestFractionRule(NFRuleSet.MASTER_RULE_INDEX, rule, true);
+        else if (baseValue == NFRule.DEFAULT_RULE) {
+            setBestFractionRule(NFRuleSet.DEFAULT_RULE_INDEX, rule, true);
         }
         else if (baseValue == NFRule.INFINITY_RULE) {
             nonNumericalRules[NFRuleSet.INFINITY_RULE_INDEX] = rule;
@@ -368,7 +368,7 @@
             if (rule != null) {
                 if (rule.getBaseValue() == NFRule.IMPROPER_FRACTION_RULE
                     || rule.getBaseValue() == NFRule.PROPER_FRACTION_RULE
-                    || rule.getBaseValue() == NFRule.MASTER_RULE)
+                    || rule.getBaseValue() == NFRule.DEFAULT_RULE)
                 {
                     for (NFRule fractionRule : fractionRules) {
                         if (fractionRule.getBaseValue() == rule.getBaseValue()) {
@@ -508,9 +508,9 @@
             }
         }
 
-        // if there's a master rule, use it to format the number
-        if (nonNumericalRules[MASTER_RULE_INDEX] != null) {
-            return nonNumericalRules[MASTER_RULE_INDEX];
+        // if there's a default rule, use it to format the number
+        if (nonNumericalRules[DEFAULT_RULE_INDEX] != null) {
+            return nonNumericalRules[DEFAULT_RULE_INDEX];
         }
         else {
             // and if we haven't yet returned a rule, use findNormalRule()
@@ -557,9 +557,9 @@
         // do them in findRule(), because the version of format() that
         // takes a long bypasses findRule() and goes straight to this
         // function.  This function does skip the fraction rules since
-        // we know the value is an integer (it also skips the master
+        // we know the value is an integer (it also skips the default
         // rule, since it's considered a fraction rule.  Skipping the
-        // master rule in this function is also how we avoid infinite
+        // default rule in this function is also how we avoid infinite
         // recursion)
 
         // binary-search the rule list for the applicable rule
@@ -600,8 +600,8 @@
             }
             return result;
         }
-        // else use the master rule
-        return nonNumericalRules[MASTER_RULE_INDEX];
+        // else use the default rule
+        return nonNumericalRules[DEFAULT_RULE_INDEX];
     }
 
     /**
@@ -829,7 +829,7 @@
         }
         // Switch the fraction rules to mirror the DecimalFormatSymbols.
         if (fractionRules != null) {
-            for (int nonNumericalIdx = IMPROPER_FRACTION_RULE_INDEX; nonNumericalIdx <= MASTER_RULE_INDEX; nonNumericalIdx++) {
+            for (int nonNumericalIdx = IMPROPER_FRACTION_RULE_INDEX; nonNumericalIdx <= DEFAULT_RULE_INDEX; nonNumericalIdx++) {
                 if (nonNumericalRules[nonNumericalIdx] != null) {
                     for (NFRule rule : fractionRules) {
                         if (nonNumericalRules[nonNumericalIdx].getBaseValue() == rule.getBaseValue()) {
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/NFSubstitution.java b/icu4j/main/classes/core/src/com/ibm/icu/text/NFSubstitution.java
index e2a992b..c701f38 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/NFSubstitution.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/NFSubstitution.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
@@ -90,7 +90,7 @@
             }
             else if (rule.getBaseValue() == NFRule.IMPROPER_FRACTION_RULE
                      || rule.getBaseValue() == NFRule.PROPER_FRACTION_RULE
-                     || rule.getBaseValue() == NFRule.MASTER_RULE)
+                     || rule.getBaseValue() == NFRule.DEFAULT_RULE)
             {
                 // if the rule is a fraction rule, return an IntegralPartSubstitution
                 return new IntegralPartSubstitution(pos, ruleSet, description);
@@ -115,7 +115,7 @@
             }
             else if (rule.getBaseValue() == NFRule.IMPROPER_FRACTION_RULE
                      || rule.getBaseValue() == NFRule.PROPER_FRACTION_RULE
-                     || rule.getBaseValue() == NFRule.MASTER_RULE)
+                     || rule.getBaseValue() == NFRule.DEFAULT_RULE)
             {
                 // if the rule is a fraction rule, return a
                 // FractionalPartSubstitution
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/Normalizer.java b/icu4j/main/classes/core/src/com/ibm/icu/text/Normalizer.java
index f4bd467..c5a0e19 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/Normalizer.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/Normalizer.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/Normalizer2.java b/icu4j/main/classes/core/src/com/ibm/icu/text/Normalizer2.java
index be11306..c5e72d2 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/Normalizer2.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/Normalizer2.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  *   Copyright (C) 2009-2016, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/NumberFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/NumberFormat.java
index 2183008..05065f2 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/NumberFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/NumberFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/NumberFormatServiceShim.java b/icu4j/main/classes/core/src/com/ibm/icu/text/NumberFormatServiceShim.java
index 9a657ce..6afd2ca 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/NumberFormatServiceShim.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/NumberFormatServiceShim.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/NumberingSystem.java b/icu4j/main/classes/core/src/com/ibm/icu/text/NumberingSystem.java
index 3adee1d..e035bad 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/NumberingSystem.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/NumberingSystem.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/PluralFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/PluralFormat.java
index dee6513..2036a26 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/PluralFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/PluralFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2016, International Business Machines Corporation and
@@ -760,9 +760,15 @@
 
             String currArg = pattern.substring(partStart.getLimit(), partLimit.getIndex());
             if (scanner != null) {
-                // If lenient parsing is turned ON, we've got some time consuming parsing ahead of us.
-                int[] scannerMatchResult = scanner.findText(source, currArg, startingAt);
-                currMatchIndex = scannerMatchResult[0];
+                // Check if non-lenient rule finds the text before call lenient parsing
+                int tempPos = source.indexOf(currArg, startingAt);
+                if (tempPos >= 0) {
+                    currMatchIndex = tempPos;
+                } else {
+                    // If lenient parsing is turned ON, we've got some time consuming parsing ahead of us.
+                    int[] scannerMatchResult = scanner.findText(source, currArg, startingAt);
+                    currMatchIndex = scannerMatchResult[0];
+                }
             }
             else {
                 currMatchIndex = source.indexOf(currArg, startingAt);
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/PluralRanges.java b/icu4j/main/classes/core/src/com/ibm/icu/text/PluralRanges.java
deleted file mode 100644
index b1b8e31..0000000
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/PluralRanges.java
+++ /dev/null
@@ -1,366 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
-/*
- *******************************************************************************
- * Copyright (C) 2008-2015, Google, International Business Machines Corporation and
- * others. All Rights Reserved.
- *******************************************************************************
- */
-package com.ibm.icu.text;
-
-import java.util.Arrays;
-import java.util.EnumSet;
-
-import com.ibm.icu.impl.StandardPlural;
-import com.ibm.icu.util.Freezable;
-import com.ibm.icu.util.Output;
-
-/**
- * Utility class for returning the plural category for a range of numbers, such as 1–5, so that appropriate messages can
- * be chosen. The rules for determining this value vary widely across locales.
- *
- * @author markdavis
- * @internal
- * @deprecated This API is ICU internal only.
- */
-@Deprecated
-public final class PluralRanges implements Freezable<PluralRanges>, Comparable<PluralRanges> {
-
-    private volatile boolean isFrozen;
-    private Matrix matrix = new Matrix();
-    private boolean[] explicit = new boolean[StandardPlural.COUNT];
-
-    /**
-     * Constructor
-     *
-     * @internal
-     * @deprecated This API is ICU internal only.
-     */
-    @Deprecated
-    public PluralRanges() {
-    }
-
-    /**
-     * Internal class for mapping from two StandardPluralCategories values to another.
-     */
-    private static final class Matrix implements Comparable<Matrix>, Cloneable {
-        private byte[] data = new byte[StandardPlural.COUNT * StandardPlural.COUNT];
-        {
-            for (int i = 0; i < data.length; ++i) {
-                data[i] = -1;
-            }
-        }
-
-        Matrix() {
-        }
-
-        /**
-         * Internal method for setting.
-         */
-        @SuppressWarnings("unused")
-        void set(StandardPlural start, StandardPlural end, StandardPlural result) {
-            data[start.ordinal() * StandardPlural.COUNT + end.ordinal()] = result == null ? (byte) -1
-                    : (byte) result.ordinal();
-        }
-
-        /**
-         * Internal method for setting; throws exception if already set.
-         */
-        void setIfNew(StandardPlural start, StandardPlural end,
-                StandardPlural result) {
-            byte old = data[start.ordinal() * StandardPlural.COUNT + end.ordinal()];
-            if (old >= 0) {
-                throw new IllegalArgumentException("Previously set value for <" + start + ", " + end + ", "
-                        + StandardPlural.VALUES.get(old) + ">");
-            }
-            data[start.ordinal() * StandardPlural.COUNT + end.ordinal()] = result == null ? (byte) -1
-                    : (byte) result.ordinal();
-        }
-
-        /**
-         * Internal method for getting.
-         */
-        StandardPlural get(StandardPlural start, StandardPlural end) {
-            byte result = data[start.ordinal() * StandardPlural.COUNT + end.ordinal()];
-            return result < 0 ? null : StandardPlural.VALUES.get(result);
-        }
-
-        /**
-         * Internal method to see if <*,end> values are all the same.
-         */
-        @SuppressWarnings("unused")
-        StandardPlural endSame(StandardPlural end) {
-            StandardPlural first = null;
-            for (StandardPlural start : StandardPlural.VALUES) {
-                StandardPlural item = get(start, end);
-                if (item == null) {
-                    continue;
-                }
-                if (first == null) {
-                    first = item;
-                    continue;
-                }
-                if (first != item) {
-                    return null;
-                }
-            }
-            return first;
-        }
-
-        /**
-         * Internal method to see if <start,*> values are all the same.
-         */
-        @SuppressWarnings("unused")
-        StandardPlural startSame(StandardPlural start,
-                EnumSet<StandardPlural> endDone, Output<Boolean> emit) {
-            emit.value = false;
-            StandardPlural first = null;
-            for (StandardPlural end : StandardPlural.VALUES) {
-                StandardPlural item = get(start, end);
-                if (item == null) {
-                    continue;
-                }
-                if (first == null) {
-                    first = item;
-                    continue;
-                }
-                if (first != item) {
-                    return null;
-                }
-                // only emit if we didn't cover with the 'end' values
-                if (!endDone.contains(end)) {
-                    emit.value = true;
-                }
-            }
-            return first;
-        }
-
-        @Override
-        public int hashCode() {
-            int result = 0;
-            for (int i = 0; i < data.length; ++i) {
-                result = result * 37 + data[i];
-            }
-            return result;
-        }
-
-        @Override
-        public boolean equals(Object other) {
-            if (!(other instanceof Matrix)) {
-                return false;
-            }
-            return 0 == compareTo((Matrix) other);
-        }
-
-        @Override
-        public int compareTo(Matrix o) {
-            for (int i = 0; i < data.length; ++i) {
-                int diff = data[i] - o.data[i];
-                if (diff != 0) {
-                    return diff;
-                }
-            }
-            return 0;
-        }
-
-        @Override
-        public Matrix clone() {
-            Matrix result = new Matrix();
-            result.data = data.clone();
-            return result;
-        }
-
-        @Override
-        public String toString() {
-            StringBuilder result = new StringBuilder();
-            for (StandardPlural i : StandardPlural.values()) {
-                for (StandardPlural j : StandardPlural.values()) {
-                    StandardPlural x = get(i, j);
-                    if (x != null) {
-                        result.append(i + " & " + j + " → " + x + ";\n");
-                    }
-                }
-            }
-            return result.toString();
-        }
-    }
-
-    /**
-     * Internal method for building. If the start or end are null, it means everything of that type.
-     *
-     * @param rangeStart
-     *            plural category for the start of the range
-     * @param rangeEnd
-     *            plural category for the end of the range
-     * @param result
-     *            the resulting plural category
-     * @internal
-     * @deprecated This API is ICU internal only.
-     */
-    @Deprecated
-    public void add(StandardPlural rangeStart, StandardPlural rangeEnd,
-            StandardPlural result) {
-        if (isFrozen) {
-            throw new UnsupportedOperationException();
-        }
-        explicit[result.ordinal()] = true;
-        if (rangeStart == null) {
-            for (StandardPlural rs : StandardPlural.values()) {
-                if (rangeEnd == null) {
-                    for (StandardPlural re : StandardPlural.values()) {
-                        matrix.setIfNew(rs, re, result);
-                    }
-                } else {
-                    explicit[rangeEnd.ordinal()] = true;
-                    matrix.setIfNew(rs, rangeEnd, result);
-                }
-            }
-        } else if (rangeEnd == null) {
-            explicit[rangeStart.ordinal()] = true;
-            for (StandardPlural re : StandardPlural.values()) {
-                matrix.setIfNew(rangeStart, re, result);
-            }
-        } else {
-            explicit[rangeStart.ordinal()] = true;
-            explicit[rangeEnd.ordinal()] = true;
-            matrix.setIfNew(rangeStart, rangeEnd, result);
-        }
-    }
-
-    /**
-     * Returns the appropriate plural category for a range from start to end. If there is no available data, then
-     * 'end' is returned as an implicit value. (Such an implicit value can be tested for with {@link #isExplicit}.)
-     *
-     * @param start
-     *            plural category for the start of the range
-     * @param end
-     *            plural category for the end of the range
-     * @return the resulting plural category, or 'end' if there is no data.
-     * @internal
-     * @deprecated This API is ICU internal only.
-     */
-    @Deprecated
-    public StandardPlural get(StandardPlural start, StandardPlural end) {
-        StandardPlural result = matrix.get(start, end);
-        return result == null ? end : result;
-    }
-
-    /**
-     * Returns whether the appropriate plural category for a range from start to end
-     * is explicitly in the data (vs given an implicit value). See also {@link #get}.
-     *
-     * @param start
-     *            plural category for the start of the range
-     * @param end
-     *            plural category for the end of the range
-     * @return whether the value for (start,end) is explicit or not.
-     * @internal
-     * @deprecated This API is ICU internal only.
-     */
-    @Deprecated
-    public boolean isExplicit(StandardPlural start, StandardPlural end) {
-        return matrix.get(start, end) != null;
-    }
-
-    /**
-     * Internal method to determines whether the StandardPluralCategories was explicitly used in any add statement.
-     *
-     * @param count
-     *            plural category to test
-     * @return true if set
-     * @internal
-     * @deprecated This API is ICU internal only.
-     */
-    @Deprecated
-    public boolean isExplicitlySet(StandardPlural count) {
-        return explicit[count.ordinal()];
-    }
-
-    /**
-     * {@inheritDoc}
-     * @internal
-     * @deprecated This API is ICU internal only.
-     */
-    @Deprecated
-    @Override
-    public boolean equals(Object other) {
-        if (this == other) {
-            return true;
-        }
-        if (!(other instanceof PluralRanges)) {
-            return false;
-        }
-        PluralRanges otherPR = (PluralRanges)other;
-        return matrix.equals(otherPR.matrix) && Arrays.equals(explicit, otherPR.explicit);
-    }
-
-    /**
-     * {@inheritDoc}
-     * @internal
-     * @deprecated This API is ICU internal only.
-     */
-    @Override
-    @Deprecated
-    public int hashCode() {
-        return matrix.hashCode();
-    }
-
-    /**
-     * {@inheritDoc}
-     * @internal
-     * @deprecated This API is ICU internal only.
-     */
-    @Override
-    @Deprecated
-    public int compareTo(PluralRanges that) {
-        return matrix.compareTo(that.matrix);
-    }
-
-    /**
-     * {@inheritDoc}
-     * @internal
-     * @deprecated This API is ICU internal only.
-     */
-    @Override
-    @Deprecated
-    public boolean isFrozen() {
-        return isFrozen;
-    }
-
-    /**
-     * {@inheritDoc}
-     * @internal
-     * @deprecated This API is ICU internal only.
-     */
-    @Override
-    @Deprecated
-    public PluralRanges freeze() {
-        isFrozen = true;
-        return this;
-    }
-
-    /**
-     * {@inheritDoc}
-     * @internal
-     * @deprecated This API is ICU internal only.
-     */
-    @Override
-    @Deprecated
-    public PluralRanges cloneAsThawed() {
-        PluralRanges result = new PluralRanges();
-        result.explicit = explicit.clone();
-        result.matrix = matrix.clone();
-        return result;
-    }
-
-    /**
-     * {@inheritDoc}
-     * @internal
-     * @deprecated This API is ICU internal only.
-     */
-    @Override
-    @Deprecated
-    public String toString() {
-        return matrix.toString();
-    }
-}
\ No newline at end of file
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/PluralRules.java b/icu4j/main/classes/core/src/com/ibm/icu/text/PluralRules.java
index 423a818..ac082e3 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/PluralRules.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/PluralRules.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2016, International Business Machines Corporation and
@@ -29,7 +29,10 @@
 import java.util.regex.Pattern;
 
 import com.ibm.icu.impl.PluralRulesLoader;
+import com.ibm.icu.impl.StandardPlural;
+import com.ibm.icu.impl.number.range.StandardPluralRanges;
 import com.ibm.icu.number.FormattedNumber;
+import com.ibm.icu.number.FormattedNumberRange;
 import com.ibm.icu.number.NumberFormatter;
 import com.ibm.icu.util.Output;
 import com.ibm.icu.util.ULocale;
@@ -181,6 +184,7 @@
 
     private final RuleList rules;
     private final transient Set<String> keywords;
+    private final transient StandardPluralRanges standardPluralRanges;
 
     /**
      * Provides a factory for returning plural rules
@@ -377,9 +381,7 @@
      */
     public static PluralRules parseDescription(String description)
             throws ParseException {
-
-        description = description.trim();
-        return description.length() == 0 ? DEFAULT : new PluralRules(parseRuleChain(description));
+        return newInternal(description, null);
     }
 
     /**
@@ -398,11 +400,25 @@
     }
 
     /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    @Deprecated
+    public static PluralRules newInternal(String description, StandardPluralRanges ranges)
+            throws ParseException {
+        description = description.trim();
+        return description.length() == 0
+            ? DEFAULT
+            : new PluralRules(parseRuleChain(description), ranges);
+    }
+
+    /**
      * The default rules that accept any number and return
      * {@link #KEYWORD_OTHER}.
      * @stable ICU 3.8
      */
-    public static final PluralRules DEFAULT = new PluralRules(new RuleList().addRule(DEFAULT_RULE));
+    public static final PluralRules DEFAULT = new PluralRules(
+        new RuleList().addRule(DEFAULT_RULE), StandardPluralRanges.DEFAULT);
 
     /**
      * @internal CLDR
@@ -547,6 +563,8 @@
 
         final boolean isNegative;
 
+        final int exponent;
+
         private final int baseFactor;
 
         /**
@@ -639,9 +657,10 @@
          * @param v number of digits to the right of the decimal place. e.g 1.00 = 2 25. = 0
          * @param f Corresponds to f in the plural rules grammar.
          *   The digits to the right of the decimal place as an integer. e.g 1.10 = 10
+         * @param e Suppressed exponent for scientific and compact notation
          */
         @Deprecated
-        public FixedDecimal(double n, int v, long f) {
+        public FixedDecimal(double n, int v, long f, int e) {
             isNegative = n < 0;
             source = isNegative ? -n : n;
             visibleDecimalDigitCount = v;
@@ -649,6 +668,7 @@
             integerValue = n > MAX
                     ? MAX
                             : (long)n;
+            exponent = e;
             hasIntegerValue = source == integerValue;
             // check values. TODO make into unit test.
             //
@@ -684,6 +704,24 @@
          * @deprecated This API is ICU internal only.
          */
         @Deprecated
+        public FixedDecimal(double n, int v, long f) {
+            this(n, v, f, 0);
+        }
+
+        /**
+         * @internal CLDR
+         * @deprecated This API is ICU internal only.
+         */
+        @Deprecated
+        public static FixedDecimal createWithExponent(double n, int v, int e) {
+            return new FixedDecimal(n,v,getFractionalDigits(n, v), e);
+        }
+
+        /**
+         * @internal CLDR
+         * @deprecated This API is ICU internal only.
+         */
+        @Deprecated
         public FixedDecimal(double n, int v) {
             this(n,v,getFractionalDigits(n, v));
         }
@@ -773,12 +811,56 @@
 
         /**
          * @internal CLDR
+         * @deprecated This API is ICU internal only
+         */
+        @Deprecated
+        private FixedDecimal (FixedDecimal other) {
+            // Ugly, but necessary, because constructors must only call other
+            // constructors in the first line of the body, and
+            // FixedDecimal(String) was refactored to support exponents.
+            this.source = other.source;
+            this.visibleDecimalDigitCount = other.visibleDecimalDigitCount;
+            this.visibleDecimalDigitCountWithoutTrailingZeros =
+                    other.visibleDecimalDigitCountWithoutTrailingZeros;
+            this.decimalDigits = other.decimalDigits;
+            this.decimalDigitsWithoutTrailingZeros =
+                    other.decimalDigitsWithoutTrailingZeros;
+            this.integerValue = other.integerValue;
+            this.hasIntegerValue = other.hasIntegerValue;
+            this.isNegative = other.isNegative;
+            this.exponent = other.exponent;
+            this.baseFactor = other.baseFactor;
+        }
+
+        /**
+         * @internal CLDR
          * @deprecated This API is ICU internal only.
          */
         @Deprecated
         public FixedDecimal (String n) {
             // Ugly, but for samples we don't care.
-            this(Double.parseDouble(n), getVisibleFractionCount(n));
+            this(parseDecimalSampleRangeNumString(n));
+        }
+
+        /**
+         * @internal CLDR
+         * @deprecated This API is ICU internal only
+         */
+        @Deprecated
+        private static FixedDecimal parseDecimalSampleRangeNumString(String num) {
+            if (num.contains("e")) {
+                int ePos = num.lastIndexOf('e');
+                int expNumPos = ePos + 1;
+                String exponentStr = num.substring(expNumPos);
+                int exponent = Integer.parseInt(exponentStr);
+                String fractionStr = num.substring(0, ePos);
+                return FixedDecimal.createWithExponent(
+                        Double.parseDouble(fractionStr),
+                        getVisibleFractionCount(fractionStr),
+                        exponent);
+            } else {
+                return new FixedDecimal(Double.parseDouble(num), getVisibleFractionCount(num));
+            }
         }
 
         private static int getVisibleFractionCount(String value) {
@@ -807,7 +889,7 @@
             case t: return decimalDigitsWithoutTrailingZeros;
             case v: return visibleDecimalDigitCount;
             case w: return visibleDecimalDigitCountWithoutTrailingZeros;
-            case e: return 0;
+            case e: return exponent;
             default: return source;
             }
         }
@@ -829,6 +911,9 @@
         @Override
         @Deprecated
         public int compareTo(FixedDecimal other) {
+            if (exponent != other.exponent) {
+                return doubleValue() < other.doubleValue() ? -1 : 1;
+            }
             if (integerValue != other.integerValue) {
                 return integerValue < other.integerValue ? -1 : 1;
             }
@@ -862,7 +947,8 @@
                 return false;
             }
             FixedDecimal other = (FixedDecimal)arg0;
-            return source == other.source && visibleDecimalDigitCount == other.visibleDecimalDigitCount && decimalDigits == other.decimalDigits;
+            return source == other.source && visibleDecimalDigitCount == other.visibleDecimalDigitCount && decimalDigits == other.decimalDigits
+                    && exponent == other.exponent;
         }
 
         /**
@@ -883,7 +969,12 @@
         @Deprecated
         @Override
         public String toString() {
-            return String.format(Locale.ROOT, "%." + visibleDecimalDigitCount + "f", source);
+            String baseString = String.format(Locale.ROOT, "%." + visibleDecimalDigitCount + "f", source);
+            if (exponent == 0) {
+                return baseString;
+            } else {
+                return baseString + "e" + exponent;
+            }
         }
 
         /**
@@ -903,7 +994,7 @@
         @Override
         public int intValue() {
             // TODO Auto-generated method stub
-            return (int)integerValue;
+            return (int) longValue();
         }
 
         /**
@@ -913,7 +1004,11 @@
         @Deprecated
         @Override
         public long longValue() {
-            return integerValue;
+            if (exponent == 0) {
+                return integerValue;
+            } else {
+                return (long) (Math.pow(10, exponent) * integerValue);
+            }
         }
 
         /**
@@ -923,7 +1018,7 @@
         @Deprecated
         @Override
         public float floatValue() {
-            return (float) source;
+            return (float) (source * Math.pow(10, exponent));
         }
 
         /**
@@ -933,7 +1028,7 @@
         @Deprecated
         @Override
         public double doubleValue() {
-            return isNegative ? -source : source;
+            return (isNegative ? -source : source) * Math.pow(10, exponent);
         }
 
         /**
@@ -2016,9 +2111,10 @@
     /*
      * Creates a new <code>PluralRules</code> object.  Immutable.
      */
-    private PluralRules(RuleList rules) {
+    private PluralRules(RuleList rules, StandardPluralRanges standardPluralRanges) {
         this.rules = rules;
         this.keywords = Collections.unmodifiableSet(rules.getKeywords());
+        this.standardPluralRanges = standardPluralRanges;
     }
 
     /**
@@ -2059,6 +2155,34 @@
     }
 
     /**
+     * Given a formatted number range, returns the overall plural form of the
+     * range. For example, "3-5" returns "other" in English.
+     *
+     * To get a FormattedNumberRange, see {@link com.ibm.icu.number.NumberRangeFormatter}.
+     *
+     * This method only works if PluralRules was created with a locale. If it was created
+     * from PluralRules.createRules(), or if it was deserialized, this method throws
+     * UnsupportedOperationException.
+     *
+     * @param range  The number range onto which the rules will be applied.
+     * @return       The keyword of the selected rule.
+     * @throws UnsupportedOperationException If called on an instance without plural ranges data.
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String select(FormattedNumberRange range) {
+        if (standardPluralRanges == null) {
+            throw new UnsupportedOperationException("Plural ranges are unavailable on this instance");
+        }
+        StandardPlural form1 = StandardPlural.fromString(
+            select(range.getFirstFixedDecimal()));
+        StandardPlural form2 = StandardPlural.fromString(
+            select(range.getSecondFixedDecimal()));
+        StandardPlural result = standardPluralRanges.resolve(form1, form2);
+        return result.getKeyword();
+    }
+
+    /**
      * Given a number, returns the keyword of the first rule that applies to
      * the number.
      *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/PluralRulesSerialProxy.java b/icu4j/main/classes/core/src/com/ibm/icu/text/PluralRulesSerialProxy.java
index daf43ff..cb759d6 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/PluralRulesSerialProxy.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/PluralRulesSerialProxy.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013, Google Inc, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/PluralSamples.java b/icu4j/main/classes/core/src/com/ibm/icu/text/PluralSamples.java
index fdef4f0..6b260c6 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/PluralSamples.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/PluralSamples.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/Quantifier.java b/icu4j/main/classes/core/src/com/ibm/icu/text/Quantifier.java
index de0a375..3c684c3 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/Quantifier.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/Quantifier.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/QuantityFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/text/QuantityFormatter.java
index b97066d..87aba54 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/QuantityFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/QuantityFormatter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/RBBINode.java b/icu4j/main/classes/core/src/com/ibm/icu/text/RBBINode.java
index d355faf..291ccea 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/RBBINode.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/RBBINode.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * COPYRIGHT:
  * Copyright (c) 2001-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/RBBIRuleBuilder.java b/icu4j/main/classes/core/src/com/ibm/icu/text/RBBIRuleBuilder.java
index 2938564..b086e32 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/RBBIRuleBuilder.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/RBBIRuleBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 //
 //    Copyright (C) 2002-2014, International Business Machines Corporation and others.
 //    All Rights Reserved.
@@ -11,6 +11,7 @@
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -66,7 +67,7 @@
     //
     // Status {tag} values.   These structures are common to all of the rule sets (Forward, Reverse, etc.).
     //
-    Map<Set<Integer>, Integer> fStatusSets = new HashMap<Set<Integer>, Integer>(); // Status value sets encountered so far.
+    Map<Set<Integer>, Integer> fStatusSets = new HashMap<>(); // Status value sets encountered so far.
                                                                                    //  Map Key is the set of values.
                                                                                    //  Map Value is the runtime array index.
 
@@ -145,8 +146,8 @@
                             ICUDebug.value("rbbi") : null;
         fRules          = rules;
         fStrippedRules  = new StringBuilder(rules);
-        fUSetNodes      = new ArrayList<RBBINode>();
-        fRuleStatusVals = new ArrayList<Integer>();
+        fUSetNodes      = new ArrayList<>();
+        fRuleStatusVals = new ArrayList<>();
         fScanner        = new RBBIRuleScanner(this);
         fSetBuilder     = new RBBISetBuilder(this);
     }
@@ -182,7 +183,9 @@
         int reverseTableSize = align8(fForwardTable.getSafeTableSize());
         int trieSize         = align8(fSetBuilder.getTrieSize());
         int statusTableSize  = align8(fRuleStatusVals.size() * 4);
-        int rulesSize        = align8((strippedRules.length()) * 2);
+
+        byte[] strippedRulesUTF8 = strippedRules.getBytes(StandardCharsets.UTF_8);
+        int rulesSize        = align8(strippedRulesUTF8.length + 1);
 
         int totalSize = headerSize
                 + forwardTableSize
@@ -202,7 +205,7 @@
         header[RBBIDataWrapper.DH_MAGIC]         = 0xb1a0;
         header[RBBIDataWrapper.DH_FORMATVERSION] = RBBIDataWrapper.FORMAT_VERSION;
         header[RBBIDataWrapper.DH_LENGTH]        = totalSize;            // fLength, the total size of all rule sections.
-        header[RBBIDataWrapper.DH_CATCOUNT]      = fSetBuilder.getNumCharCategories(); // fCatCount.
+        header[RBBIDataWrapper.DH_CATCOUNT]      = fSetBuilder.getNumCharCategories();
 
         header[RBBIDataWrapper.DH_FTABLE]        = headerSize;           // fFTable
         header[RBBIDataWrapper.DH_FTABLELEN]     = forwardTableSize;     // fTableLen
@@ -214,11 +217,11 @@
                                                      + header[RBBIDataWrapper.DH_RTABLELEN]; // fTrie
         header[RBBIDataWrapper.DH_TRIELEN]       = fSetBuilder.getTrieSize(); // fTrieLen
         header[RBBIDataWrapper.DH_STATUSTABLE]   = header[RBBIDataWrapper.DH_TRIE]
-                                                     + header[RBBIDataWrapper.DH_TRIELEN];
+                                                     + trieSize;
         header[RBBIDataWrapper.DH_STATUSTABLELEN] = statusTableSize; // fStatusTableLen
         header[RBBIDataWrapper.DH_RULESOURCE]    = header[RBBIDataWrapper.DH_STATUSTABLE]
                                                      + statusTableSize;
-        header[RBBIDataWrapper.DH_RULESOURCELEN] = strippedRules.length() * 2;
+        header[RBBIDataWrapper.DH_RULESOURCELEN] = strippedRulesUTF8.length;
         for (i = 0; i < header.length; i++) {
             dos.writeInt(header[i]);
             outputPos += 4;
@@ -257,8 +260,9 @@
         // Write out the stripped rules (rules with extra spaces removed
         //   These go last in the data area, even though they are not last in the header.
         Assert.assrt(outputPos == header[RBBIDataWrapper.DH_RULESOURCE]);
-        dos.writeChars(strippedRules);
-        outputPos += strippedRules.length() * 2;
+        dos.write(strippedRulesUTF8, 0, strippedRulesUTF8.length);
+        dos.write(0);  // Null termination
+        outputPos += strippedRulesUTF8.length + 1;
         while (outputPos % 8 != 0) { // pad to an 8 byte boundary
             dos.write(0);
             outputPos += 1;
@@ -290,9 +294,7 @@
 
         //
         // UnicodeSet processing.
-        //    Munge the Unicode Sets to create a set of character categories.
-        //    Generate the mapping tables (TRIE) from input code points to
-        //    the character categories.
+        //    Munge the Unicode Sets to create an initial set of character categories.
         //
         fSetBuilder.buildRanges();
 
@@ -301,6 +303,10 @@
         //
         fForwardTable = new RBBITableBuilder(this, fForwardTree);
         fForwardTable.buildForwardTable();
+        // State table and character category optimization.
+        // Merge equivalent rows and columns.
+        // Note that this process alters the the initial set of character categories,
+        // causing the representation of UnicodeSets in the parse tree to become invalid.
         optimizeTables();
         fForwardTable.buildSafeReverseTable();
 
@@ -311,7 +317,9 @@
             fForwardTable.printRuleStatusTable();
             fForwardTable.printReverseTable();
         }
-
+        //    Generate the mapping tables (TRIE) from input code points to
+        //    the character categories.
+        //
         fSetBuilder.buildTrie();
         //
         //   Package up the compiled data, writing it to an output stream
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/RBBIRuleParseTable.java b/icu4j/main/classes/core/src/com/ibm/icu/text/RBBIRuleParseTable.java
index f3869ea..6ab628e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/RBBIRuleParseTable.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/RBBIRuleParseTable.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (c) 2003-2016, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/RBBIRuleScanner.java b/icu4j/main/classes/core/src/com/ibm/icu/text/RBBIRuleScanner.java
index 3bcc30d..1893eb4 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/RBBIRuleScanner.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/RBBIRuleScanner.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2016, International Business Machines Corporation and others. All Rights Reserved.
@@ -697,16 +697,14 @@
     static String stripRules(String rules) {
         StringBuilder strippedRules = new StringBuilder();
         int rulesLength = rules.length();
-        boolean skippingSpaces = false;
 
         for (int idx = 0; idx < rulesLength; idx = rules.offsetByCodePoints(idx, 1)) {
             int cp = rules.codePointAt(idx);
             boolean whiteSpace = UCharacter.hasBinaryProperty(cp, UProperty.PATTERN_WHITE_SPACE);
-            if (skippingSpaces && whiteSpace) {
+            if (whiteSpace) {
                 continue;
             }
             strippedRules.appendCodePoint(cp);
-            skippingSpaces = whiteSpace;
         }
         return strippedRules.toString();
     }
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/RBBISetBuilder.java b/icu4j/main/classes/core/src/com/ibm/icu/text/RBBISetBuilder.java
index 17b0b10..d890a26 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/RBBISetBuilder.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/RBBISetBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2003-2011, International Business Machines Corporation and    *
@@ -8,15 +8,16 @@
 */
 package com.ibm.icu.text;
 
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.List;
 
 import com.ibm.icu.impl.Assert;
-import com.ibm.icu.impl.Trie2Writable;
-import com.ibm.icu.impl.Trie2_16;
 import com.ibm.icu.text.RBBIRuleBuilder.IntPair;
+import com.ibm.icu.util.CodePointTrie;
+import com.ibm.icu.util.MutableCodePointTrie;
 
 //
 //  RBBISetBuilder   Handles processing of Unicode Sets from RBBI rules
@@ -28,7 +29,7 @@
 //                      by the RBBI rules.
 //                   -  compute a set of non-overlapping character ranges
 //                      with all characters within a range belonging to the same
-//                      set of input uniocde sets.
+//                      set of input unicode sets.
 //                   -  Derive a set of non-overlapping UnicodeSet (like things)
 //                      that will correspond to columns in the state table for
 //                      the RBBI execution engine.  All characters within one
@@ -40,23 +41,27 @@
 //
 class RBBISetBuilder {
     static class RangeDescriptor  {
-           int                fStartChar;      // Start of range, unicode 32 bit value.
-           int                fEndChar;        // End of range, unicode 32 bit value.
-           int                fNum;            // runtime-mapped input value for this range.
-           List<RBBINode>     fIncludesSets;    // vector of the the original
-                                                 //   Unicode sets that include this range.
-                                                //    (Contains ptrs to uset nodes)
-            RangeDescriptor   fNext;           // Next RangeDescriptor in the linked list.
+           int                fStartChar = 0;         // Start of range, unicode 32 bit value.
+           int                fEndChar = 0;           // End of range, unicode 32 bit value.
+           int                fNum = 0;               // runtime-mapped input value for this range.
+           boolean            fIncludesDict = false;  // True if the range includes $dictionary.
+           boolean            fFirstInGroup = false;  // True if first range in a group with the same fNum.
+           List<RBBINode>     fIncludesSets;          // vector of the the original
+                                                      //   Unicode sets that include this range.
+                                                      //    (Contains ptrs to uset nodes)
+            RangeDescriptor   fNext;                  // Next RangeDescriptor in the linked list.
 
             RangeDescriptor() {
-                fIncludesSets = new ArrayList<RBBINode>();
+                fIncludesSets = new ArrayList<>();
             }
 
             RangeDescriptor(RangeDescriptor other) {
                 fStartChar = other.fStartChar;
                 fEndChar   = other.fEndChar;
                 fNum       = other.fNum;
-                fIncludesSets = new ArrayList<RBBINode>(other.fIncludesSets);
+                fIncludesDict = other.fIncludesDict;
+                fFirstInGroup = other.fFirstInGroup;
+                fIncludesSets = new ArrayList<>(other.fIncludesSets);
             }
 
             //-------------------------------------------------------------------------------------
@@ -81,28 +86,18 @@
             }
 
 
-            //-------------------------------------------------------------------------------------
-            //
-            //          RangeDescriptor::setDictionaryFlag
-            //
-            //          Character Category Numbers that include characters from
-            //          the original Unicode Set named "dictionary" have bit 14
-            //          set to 1.  The RBBI runtime engine uses this to trigger
-            //          use of the word dictionary.
-            //
-            //          This function looks through the Unicode Sets that it
-            //          (the range) includes, and sets the bit in fNum when
-            //          "dictionary" is among them.
-            //
+            /**
+             * Test whether this range includes characters from the original Unicode Set named "dictionary".
+             *
+             * This function looks through the Unicode Sets that
+             * the range includes, checking for one named "dictionary"
+             */
             //          TODO:  a faster way would be to find the set node for
             //          "dictionary" just once, rather than looking it
             //          up by name every time.
             //
-            // -------------------------------------------------------------------------------------
-            void setDictionaryFlag() {
-                int i;
-
-                for (i=0; i<this.fIncludesSets.size(); i++) {
+            boolean isDictionaryRange() {
+                for (int i=0; i<this.fIncludesSets.size(); i++) {
                     RBBINode        usetNode    = fIncludesSets.get(i);
                     String          setName = "";
                     RBBINode        setRef = usetNode.fParent;
@@ -113,11 +108,10 @@
                         }
                     }
                     if (setName.equals("dictionary")) {
-                        this.fNum |= DICT_BIT;
-                        break;
+                        return true;
                     }
                 }
-
+                return false;
         }
     }
 
@@ -125,22 +119,22 @@
     RBBIRuleBuilder       fRB;             // The RBBI Rule Compiler that owns us.
     RangeDescriptor       fRangeList;      // Head of the linked list of RangeDescriptors
 
-    Trie2Writable         fTrie;           // The mapping TRIE that is the end result of processing
+    MutableCodePointTrie  fTrie;           // The mapping TRIE that is the end result of processing
                                            //  the Unicode Sets.
-    Trie2_16              fFrozenTrie;
+    CodePointTrie         fFrozenTrie;
 
-    // Groups correspond to character categories -
-    //       groups of ranges that are in the same original UnicodeSets.
-    //       fGroupCount is the index of the last used group.
-    //       fGroupCount+1 is also the number of columns in the RBBI state table being compiled.
-    //       State table column 0 is not used.  Column 1 is for end-of-input.
-    //       column 2 is for group 0.  Funny counting.
+    /**
+     * Number of range groups, which are groups of ranges that are in the same original UnicodeSets.
+     */
     int                fGroupCount;
+    /**
+     * The number of the first dictionary char category.
+     * If there are no Dictionary categories, set to the last category + 1.
+     */
+    int                fDictCategoriesStart;
 
     boolean             fSawBOF;
 
-    static final int    DICT_BIT = 0x4000;
-
 
     //------------------------------------------------------------------------
     //
@@ -237,25 +231,49 @@
         //
         //    Numbering: # 0  (state table column 0) is unused.
         //               # 1  is reserved - table column 1 is for end-of-input
-        //               # 2  is reserved - table column 2 is for beginning-in-input
+        //               # 2  is reserved - table column 2 is for beginning-of-input
         //               # 3  is the first range list.
         //
         RangeDescriptor rlSearchRange;
+        int dictGroupCount = 0;
+
         for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
             for (rlSearchRange=fRangeList; rlSearchRange != rlRange; rlSearchRange=rlSearchRange.fNext) {
                 if (rlRange.fIncludesSets.equals(rlSearchRange.fIncludesSets)) {
                     rlRange.fNum = rlSearchRange.fNum;
+                    rlRange.fIncludesDict = rlSearchRange.fIncludesDict;
                     break;
                 }
             }
             if (rlRange.fNum == 0) {
-                fGroupCount ++;
-                rlRange.fNum = fGroupCount+2;
-                rlRange.setDictionaryFlag();
-                addValToSets(rlRange.fIncludesSets, fGroupCount+2);
+                rlRange.fFirstInGroup = true;
+                if (rlRange.isDictionaryRange()) {
+                    rlRange.fNum = ++dictGroupCount;
+                    rlRange.fIncludesDict = true;
+                } else {
+                    fGroupCount++;
+                    rlRange.fNum = fGroupCount + 2;
+                    addValToSets(rlRange.fIncludesSets, fGroupCount + 2);
+                }
             }
         }
 
+        // Move the character category numbers for any dictionary ranges up, so that they
+        // immediately follow the non-dictionary ranges.
+
+        fDictCategoriesStart = fGroupCount + 3;
+        for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
+            if (rlRange.fIncludesDict) {
+                rlRange.fNum += fDictCategoriesStart - 1;
+                if (rlRange.fFirstInGroup) {
+                    addValToSets(rlRange.fIncludesSets, rlRange.fNum);
+                }
+            }
+        }
+        fGroupCount += dictGroupCount;
+
+
+
         // Handle input sets that contain the special string {eof}.
         //   Column 1 of the state table is reserved for EOF on input.
         //   Column 2 is reserved for before-the-start-input.
@@ -286,23 +304,21 @@
     }
 
 
+    private static final int MAX_CHAR_CATEGORIES_FOR_8BITS_TRIE = 255;
+
     /**
      * Build the Trie table for mapping UChar32 values to the corresponding
      * range group number.
      */
     void buildTrie() {
-        RangeDescriptor rlRange;
+        fTrie = new MutableCodePointTrie(0,       //   Initial value for all code points.
+                                         0);      //   Error value for out-of-range input.
 
-        fTrie = new Trie2Writable(0,       //   Initial value for all code points.
-                                  0);      //   Error value for out-of-range input.
-
-        for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
-            fTrie.setRange(
-                    rlRange.fStartChar,     // Range start
-                    rlRange.fEndChar,       // Range end (inclusive)
-                    rlRange.fNum,           // value for range
-                    true                    // Overwrite previously written values
-                    );
+        for (RangeDescriptor rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
+            fTrie.setRange(rlRange.fStartChar,     // Range start
+                           rlRange.fEndChar,       // Range end (inclusive)
+                           rlRange.fNum            // value for range
+                          );
         }
     }
 
@@ -314,16 +330,37 @@
     void mergeCategories(IntPair categories) {
         assert(categories.first >= 1);
         assert(categories.second > categories.first);
+        assert((categories.first <  fDictCategoriesStart && categories.second <  fDictCategoriesStart) ||
+                (categories.first >= fDictCategoriesStart && categories.second >= fDictCategoriesStart));
         for (RangeDescriptor rd = fRangeList; rd != null; rd = rd.fNext) {
-            int rangeNum = rd.fNum & ~DICT_BIT;
-            int rangeDict = rd.fNum & DICT_BIT;
+            int rangeNum = rd.fNum;
             if (rangeNum == categories.second) {
-                rd.fNum = categories.first | rangeDict;
+                rd.fNum = categories.first;
             } else if (rangeNum > categories.second) {
                 rd.fNum--;
             }
         }
         --fGroupCount;
+        if (categories.second <= fDictCategoriesStart) {
+            --fDictCategoriesStart;
+        }
+    }
+
+    //-----------------------------------------------------------------------------------
+    //
+    //          freezeTrieIfNotYet()    Ensure the trie is frozen. Shared code by getTrieSize
+    //                                  and serializeTrie.
+    //
+    //-----------------------------------------------------------------------------------
+    void freezeTrieIfNotYet()  {
+        if (fFrozenTrie == null) {
+            boolean use8Bits = getNumCharCategories() <= MAX_CHAR_CATEGORIES_FOR_8BITS_TRIE;
+            fFrozenTrie = fTrie.buildImmutable(CodePointTrie.Type.FAST,
+                                               use8Bits ?
+                                               CodePointTrie.ValueWidth.BITS_8 :
+                                               CodePointTrie.ValueWidth.BITS_16);
+            fTrie = null;
+        }
     }
 
     //-----------------------------------------------------------------------------------
@@ -332,11 +369,8 @@
     //
     //-----------------------------------------------------------------------------------
     int getTrieSize()  {
-        if (fFrozenTrie == null) {
-            fFrozenTrie = fTrie.toTrie2_16();
-            fTrie = null;
-        }
-        return fFrozenTrie.getSerializedLength();
+        freezeTrieIfNotYet();
+        return fFrozenTrie.toBinary(new ByteArrayOutputStream());
     }
 
 
@@ -346,11 +380,8 @@
     //
     //-----------------------------------------------------------------------------------
     void serializeTrie(OutputStream os) throws IOException {
-        if (fFrozenTrie == null) {
-            fFrozenTrie = fTrie.toTrie2_16();
-            fTrie = null;
-        }
-        fFrozenTrie.serialize(os);
+        freezeTrieIfNotYet();
+        fFrozenTrie.toBinary(os);
    }
 
     //------------------------------------------------------------------------
@@ -406,6 +437,16 @@
 
     //------------------------------------------------------------------------
     //
+    //   getDictCategoriesStart
+    //
+    //------------------------------------------------------------------------
+    int  getDictCategoriesStart() {
+        return fDictCategoriesStart;
+    }
+
+
+    //------------------------------------------------------------------------
+    //
     //           sawBOF
     //
     //------------------------------------------------------------------------
@@ -433,7 +474,6 @@
     }
 
 
-
     //------------------------------------------------------------------------
     //
     //           printRanges        A debugging function.
@@ -447,7 +487,7 @@
 
         System.out.print("\n\n Nonoverlapping Ranges ...\n");
         for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
-            System.out.print(" " + rlRange.fNum + "   " + rlRange.fStartChar + "-" + rlRange.fEndChar);
+            System.out.printf("%04x-%04x ", rlRange.fStartChar, rlRange.fEndChar);
 
             for (i=0; i<rlRange.fIncludesSets.size(); i++) {
                 RBBINode       usetNode    = rlRange.fIncludesSets.get(i);
@@ -475,20 +515,16 @@
     //------------------------------------------------------------------------
     ///CLOVER:OFF
     void printRangeGroups() {
-        RangeDescriptor       rlRange;
-        RangeDescriptor       tRange;
         int                    i;
-        int                    lastPrintedGroupNum = 0;
 
         System.out.print("\nRanges grouped by Unicode Set Membership...\n");
-        for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
-            int groupNum = rlRange.fNum & 0xbfff;
-            if (groupNum > lastPrintedGroupNum) {
-                lastPrintedGroupNum = groupNum;
+        for (RangeDescriptor rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
+            if (rlRange.fFirstInGroup) {
+                int groupNum = rlRange.fNum;
                 if (groupNum<10) {System.out.print(" ");}
                 System.out.print(groupNum + " ");
 
-                if ((rlRange.fNum & DICT_BIT) != 0) { System.out.print(" <DICT> ");}
+                if (groupNum >= fDictCategoriesStart) { System.out.print(" <DICT> ");}
 
                 for (i=0; i<rlRange.fIncludesSets.size(); i++) {
                     RBBINode       usetNode    = rlRange.fIncludesSets.get(i);
@@ -504,7 +540,7 @@
                 }
 
                 i = 0;
-                for (tRange = rlRange; tRange != null; tRange = tRange.fNext) {
+                for (RangeDescriptor tRange = rlRange; tRange != null; tRange = tRange.fNext) {
                     if (tRange.fNum == rlRange.fNum) {
                         if (i++ % 5 == 0) {
                             System.out.print("\n    ");
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/RBBISymbolTable.java b/icu4j/main/classes/core/src/com/ibm/icu/text/RBBISymbolTable.java
index d9c931b..e8570de 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/RBBISymbolTable.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/RBBISymbolTable.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ***************************************************************************
 *   Copyright (C) 2002-2009 International Business Machines Corporation   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/RBBITableBuilder.java b/icu4j/main/classes/core/src/com/ibm/icu/text/RBBITableBuilder.java
index 4e1a1b7..3423190 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/RBBITableBuilder.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/RBBITableBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2002-2016, International Business Machines
@@ -74,9 +74,17 @@
     /** Synthesized safe table, a List of row arrays.  */
     private List<short[]>    fSafeTable;
 
+    private static final int MAX_STATE_FOR_8BITS_TABLE = 255;
+
     /** Map from rule number (fVal in look ahead nodes) to sequential lookahead index. */
     int[] fLookAheadRuleMap;
 
+    /** Counter used when assigning lookahead rule numbers.
+     * Contains the last look-ahead number already in use.
+     * The first look-ahead number is 2; Number 1 (ACCEPTING_UNCONDITIONAL) is reserved
+     * for non-lookahead accepting states. See the declarations of RBBIStateTableRowT.   */
+    int  fLASlotsInUse = RBBIDataWrapper.ACCEPTING_UNCONDITIONAL;
+
     //-----------------------------------------------------------------------------
     //
     //  Constructor    for RBBITableBuilder.
@@ -614,7 +622,6 @@
        */
       void mapLookAheadRules() {
           fLookAheadRuleMap =  new int[fRB.fScanner.numRules() + 1];
-          int laSlotsInUse = 0;
 
           for (RBBIStateDescriptor sd: fDStates) {
               int laSlotForState = 0;
@@ -649,7 +656,7 @@
               }
 
               if (laSlotForState == 0) {
-                  laSlotForState = ++laSlotsInUse;
+                  laSlotForState = ++fLASlotsInUse;
               }
 
               // For each look ahead node covered by this state,
@@ -690,27 +697,26 @@
                endMarker = endMarkerNodes.get(i);
                for (n=0; n<fDStates.size(); n++) {
                    RBBIStateDescriptor sd = fDStates.get(n);
-                   //if (sd.fPositions.indexOf(endMarker) >= 0) {
                    if (sd.fPositions.contains(endMarker)) {
                        // Any non-zero value for fAccepting means this is an accepting node.
                        // The value is what will be returned to the user as the break status.
-                       // If no other value was specified, force it to -1.
+                       // If no other value was specified, force it to ACCEPTING_UNCONDITIONAL (1).
 
                        if (sd.fAccepting==0) {
                            // State hasn't been marked as accepting yet.  Do it now.
                            sd.fAccepting = fLookAheadRuleMap[endMarker.fVal];
                            if (sd.fAccepting == 0) {
-                               sd.fAccepting = -1;
+                               sd.fAccepting = RBBIDataWrapper.ACCEPTING_UNCONDITIONAL;
                            }
                        }
-                       if (sd.fAccepting==-1 && endMarker.fVal != 0) {
+                       if (sd.fAccepting==RBBIDataWrapper.ACCEPTING_UNCONDITIONAL && endMarker.fVal != 0) {
                            // Both lookahead and non-lookahead accepting for this state.
                            // Favor the look-ahead, because a look-ahead match needs to
                            // immediately stop the run-time engine. First match, not longest.
                            sd.fAccepting = fLookAheadRuleMap[endMarker.fVal];
                        }
                        // implicit else:
-                       // if sd.fAccepting already had a value other than 0 or -1, leave it be.
+                       // if sd.fAccepting already had a value other than 0 or 1, leave it be.
                    }
                }
            }
@@ -899,7 +905,13 @@
            int table_base = 0;
            int table_dupl = 0;
            for (; categories.first < numCols-1; ++categories.first) {
-               for (categories.second=categories.first+1; categories.second < numCols; ++categories.second) {
+               // Note: dictionary & non-dictionary columns cannot be merged.
+               //       The limitSecond value prevents considering mixed pairs.
+               //       Dictionary categories are >= DictCategoriesStart.
+               //       Non dict categories are   <  DictCategoriesStart.
+               int limitSecond = categories.first < fRB.fSetBuilder.getDictCategoriesStart() ?
+                   fRB.fSetBuilder.getDictCategoriesStart() : numCols;
+               for (categories.second=categories.first+1; categories.second < limitSecond; ++categories.second) {
                    for (int state=0; state<numStates; state++) {
                        RBBIStateDescriptor sd = fDStates.get(state);
                        table_base = sd.fDtran[categories.first];
@@ -1097,10 +1109,11 @@
            if (fRB.fTreeRoots[fRootIx] == null) {
                return 0;
            }
-           int size    = 16;    // The header of 4 ints, with no rows to the table.
+           int size    = RBBIDataWrapper.RBBIStateTable.fHeaderSize;    // The header, with no rows to the table.
            int numRows = fDStates.size();
            int numCols = fRB.fSetBuilder.getNumCharCategories();
-           int rowSize = 8 + 2*numCols;
+           boolean use8Bits = numRows <= MAX_STATE_FOR_8BITS_TABLE;
+           int rowSize = (use8Bits ? 1 : 2 ) * (RBBIDataWrapper.NEXTSTATES + numCols);
            size   += numRows * rowSize;
            size = (size + 7) & ~7;   // round up to a multiple of 8 bytes
            return size;
@@ -1125,13 +1138,23 @@
            Assert.assrt(fRB.fSetBuilder.getNumCharCategories() < 0x7fff &&
                fDStates.size() < 0x7fff);
            table.fNumStates = fDStates.size();
+           table.fDictCategoriesStart = fRB.fSetBuilder.getDictCategoriesStart();
+           table.fLookAheadResultsSize =
+                   fLASlotsInUse == RBBIDataWrapper.ACCEPTING_UNCONDITIONAL ? 0 : fLASlotsInUse + 1;
+           boolean use8Bits = table.fNumStates <= MAX_STATE_FOR_8BITS_TABLE;
 
            // Size of table size in shorts.
-           //  the "4" is the size of struct RBBIStateTableRow, the row header part only.
-           int rowLen = 4 + fRB.fSetBuilder.getNumCharCategories();   // Row Length in shorts.
-           int tableSize = (getTableSize() - 16) / 2;       // fTable length in shorts.
-           table.fTable = new short[tableSize];
-           table.fRowLen = rowLen * 2;                      // Row length in bytes.
+           int rowLen = RBBIDataWrapper.NEXTSTATES + fRB.fSetBuilder.getNumCharCategories();   // Row Length in shorts.
+           int tableSize;
+           if (use8Bits) {
+               tableSize = (getTableSize() - RBBIDataWrapper.RBBIStateTable.fHeaderSize);       // fTable length in bytes.
+               table.fTable = new char[tableSize];
+               table.fRowLen = rowLen;                          // Row length in bytes.
+           } else {
+               tableSize = (getTableSize() - RBBIDataWrapper.RBBIStateTable.fHeaderSize) / 2;   // fTable length in shorts.
+               table.fTable = new char[tableSize];
+               table.fRowLen = rowLen * 2;                      // Row length in bytes.
+           }
 
            if (fRB.fLookAheadHardBreak) {
                table.fFlags  |= RBBIDataWrapper.RBBI_LOOKAHEAD_HARD_BREAK;
@@ -1139,18 +1162,29 @@
            if (fRB.fSetBuilder.sawBOF()) {
                table.fFlags  |= RBBIDataWrapper.RBBI_BOF_REQUIRED;
            }
+           if (use8Bits) {
+               table.fFlags  |= RBBIDataWrapper.RBBI_8BITS_ROWS;
+           }
 
            int numCharCategories = fRB.fSetBuilder.getNumCharCategories();
            for (state=0; state<table.fNumStates; state++) {
                RBBIStateDescriptor sd = fDStates.get(state);
                int row = state*rowLen;
-               Assert.assrt (-32768 < sd.fAccepting && sd.fAccepting <= 32767);
-               Assert.assrt (-32768 < sd.fLookAhead && sd.fLookAhead <= 32767);
-               table.fTable[row + RBBIDataWrapper.ACCEPTING] = (short)sd.fAccepting;
-               table.fTable[row + RBBIDataWrapper.LOOKAHEAD] = (short)sd.fLookAhead;
-               table.fTable[row + RBBIDataWrapper.TAGIDX]    = (short)sd.fTagsIdx;
+               if (use8Bits) {
+                   Assert.assrt (0 <= sd.fAccepting && sd.fAccepting <= 255);
+                   Assert.assrt (0 <= sd.fLookAhead && sd.fLookAhead <= 255);
+               } else {
+                   Assert.assrt (0 <= sd.fAccepting && sd.fAccepting <= 0xffff);
+                   Assert.assrt (0 <= sd.fLookAhead && sd.fLookAhead <= 0xffff);
+               }
+               table.fTable[row + RBBIDataWrapper.ACCEPTING] = (char)sd.fAccepting;
+               table.fTable[row + RBBIDataWrapper.LOOKAHEAD] = (char)sd.fLookAhead;
+               table.fTable[row + RBBIDataWrapper.TAGSIDX]   = (char)sd.fTagsIdx;
                for (col=0; col<numCharCategories; col++) {
-                   table.fTable[row + RBBIDataWrapper.NEXTSTATES + col] = (short)sd.fDtran[col];
+                   if (use8Bits) {
+                       Assert.assrt (0 <= sd.fDtran[col] && sd.fDtran[col] <= MAX_STATE_FOR_8BITS_TABLE);
+                   }
+                   table.fTable[row + RBBIDataWrapper.NEXTSTATES + col] = (char)sd.fDtran[col];
                }
            }
            return table;
@@ -1250,10 +1284,12 @@
            if (fSafeTable == null) {
                return 0;
            }
-           int size    = 16;    // The header of 4 ints, with no rows to the table.
+           int size    = RBBIDataWrapper.RBBIStateTable.fHeaderSize;    // The header, with no rows to the table.
            int numRows = fSafeTable.size();
            int numCols = fSafeTable.get(0).length;
-           int rowSize = 8 + 2*numCols;
+           boolean use8Bits = numRows <= MAX_STATE_FOR_8BITS_TABLE;
+
+           int rowSize = (use8Bits ? 1 : 2 ) * (RBBIDataWrapper.NEXTSTATES + numCols);
            size += numRows * rowSize;
            // TODO: there are redundant round-up. Figure out best place, get rid of the rest.
            size = (size + 7) & ~7;   // round up to a multiple of 8 bytes
@@ -1269,23 +1305,33 @@
        RBBIDataWrapper.RBBIStateTable exportSafeTable() {
            RBBIDataWrapper.RBBIStateTable table = new RBBIDataWrapper.RBBIStateTable();
            table.fNumStates = fSafeTable.size();
+           boolean use8Bits = table.fNumStates <= MAX_STATE_FOR_8BITS_TABLE;
            int numCharCategories = fSafeTable.get(0).length;
 
            // Size of table size in shorts.
-           //  the "4" is the size of struct RBBIStateTableRow, the row header part only.
-           int rowLen = 4 + numCharCategories;
+           int rowLen = RBBIDataWrapper.NEXTSTATES + numCharCategories;
            // TODO: tableSize is basically numStates * numCharCategories,
            //       except for alignment padding. Clean up here, and in main exportTable().
-           int tableSize = (getSafeTableSize() - 16) / 2;   // fTable length in shorts.
-           table.fTable = new short[tableSize];
-           table.fRowLen = rowLen * 2;                      // Row length in bytes.
+           int tableSize = (getSafeTableSize() - RBBIDataWrapper.RBBIStateTable.fHeaderSize);     // fTable length in bytes.
+           if (use8Bits) {
+               table.fFlags  |= RBBIDataWrapper.RBBI_8BITS_ROWS;
+               table.fTable = new char[tableSize];
+               table.fRowLen = rowLen;                          // Row length in bytes.
+           } else {
+               tableSize /= 2;   // fTable length in shorts.
+               table.fTable = new char[tableSize];
+               table.fRowLen = rowLen * 2;                      // Row length in bytes.
+           }
 
            for (int state=0; state<table.fNumStates; state++) {
                short[] rowArray = fSafeTable.get(state);
                int row = state * rowLen;
 
                for (int col=0; col<numCharCategories; col++) {
-                   table.fTable[row + RBBIDataWrapper.NEXTSTATES + col] = rowArray[col];
+                   if (use8Bits) {
+                       Assert.assrt (rowArray[col] <= MAX_STATE_FOR_8BITS_TABLE);
+                   }
+                   table.fTable[row + RBBIDataWrapper.NEXTSTATES + col] = (char)rowArray[col];
                }
            }
            return table;
@@ -1320,12 +1366,12 @@
            System.out.print("state |           i n p u t     s y m b o l s \n");
            System.out.print("      | Acc  LA    Tag");
            for (c=0; c<fRB.fSetBuilder.getNumCharCategories(); c++) {
-               RBBINode.printInt(c, 3);
+               RBBINode.printInt(c, 4);
            }
            System.out.print("\n");
            System.out.print("      |---------------");
            for (c=0; c<fRB.fSetBuilder.getNumCharCategories(); c++) {
-               System.out.print("---");
+               System.out.print("----");
            }
            System.out.print("\n");
 
@@ -1339,7 +1385,7 @@
                RBBINode.printInt(sd.fTagsIdx, 6);
                System.out.print(" ");
                for (c=0; c<fRB.fSetBuilder.getNumCharCategories(); c++) {
-                   RBBINode.printInt(sd.fDtran[c], 3);
+                   RBBINode.printInt(sd.fDtran[c], 4);
                }
                System.out.print("\n");
            }
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/RBNFChinesePostProcessor.java b/icu4j/main/classes/core/src/com/ibm/icu/text/RBNFChinesePostProcessor.java
index 3bfa013..e05d391 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/RBNFChinesePostProcessor.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/RBNFChinesePostProcessor.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2009, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/RBNFPostProcessor.java b/icu4j/main/classes/core/src/com/ibm/icu/text/RBNFPostProcessor.java
index a8970da..08f9080 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/RBNFPostProcessor.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/RBNFPostProcessor.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/RbnfLenientScanner.java b/icu4j/main/classes/core/src/com/ibm/icu/text/RbnfLenientScanner.java
index af91b51..4c0a60e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/RbnfLenientScanner.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/RbnfLenientScanner.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, International Business Machines Corporation and    *
@@ -57,4 +57,4 @@
      */
     @Deprecated
     int[] findText(String str, String key, int startingAt);
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/RbnfLenientScannerProvider.java b/icu4j/main/classes/core/src/com/ibm/icu/text/RbnfLenientScannerProvider.java
index ef334da..7199b9a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/RbnfLenientScannerProvider.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/RbnfLenientScannerProvider.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, International Business Machines Corporation and    *
@@ -29,4 +29,4 @@
      */
     @Deprecated
     RbnfLenientScanner get(ULocale locale, String extras);
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/RelativeDateTimeFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/text/RelativeDateTimeFormatter.java
index 4d578cd..5fa5dcb 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/RelativeDateTimeFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/RelativeDateTimeFormatter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2016, International Business Machines Corporation and
@@ -253,15 +253,13 @@
 
         /**
          * Hour
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         HOUR,
 
         /**
          * Minute
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         MINUTE,
     }
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/Replaceable.java b/icu4j/main/classes/core/src/com/ibm/icu/text/Replaceable.java
index 1f58027..cdeaad9 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/Replaceable.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/Replaceable.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/ReplaceableContextIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/text/ReplaceableContextIterator.java
index 2a2d4d2..c52f69b 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/ReplaceableContextIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/ReplaceableContextIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/ReplaceableString.java b/icu4j/main/classes/core/src/com/ibm/icu/text/ReplaceableString.java
index 61cf47e..d37e24e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/ReplaceableString.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/ReplaceableString.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/RuleBasedBreakIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/text/RuleBasedBreakIterator.java
index 8b0f525..cae7130 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/RuleBasedBreakIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/RuleBasedBreakIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2016 International Business Machines Corporation and
@@ -26,10 +26,10 @@
 import com.ibm.icu.impl.ICUBinary;
 import com.ibm.icu.impl.ICUDebug;
 import com.ibm.icu.impl.RBBIDataWrapper;
-import com.ibm.icu.impl.Trie2;
 import com.ibm.icu.lang.UCharacter;
 import com.ibm.icu.lang.UProperty;
 import com.ibm.icu.lang.UScript;
+import com.ibm.icu.util.CodePointTrie;
 
 /**
  * Rule Based Break Iterator
@@ -70,6 +70,7 @@
     public static RuleBasedBreakIterator getInstanceFromCompiledRules(InputStream is) throws IOException {
         RuleBasedBreakIterator  This = new RuleBasedBreakIterator();
         This.fRData = RBBIDataWrapper.get(ICUBinary.getByteBufferFromInputStreamAndCloseStream(is));
+        This.fLookAheadMatches = new int[This.fRData.fFTable.fLookAheadResultsSize];
         return This;
     }
 
@@ -93,6 +94,7 @@
     public static RuleBasedBreakIterator getInstanceFromCompiledRules(ByteBuffer bytes) throws IOException {
         RuleBasedBreakIterator  This = new RuleBasedBreakIterator();
         This.fRData = RBBIDataWrapper.get(bytes);
+        This.fLookAheadMatches = new int[This.fRData.fFTable.fLookAheadResultsSize];
         return This;
     }
 
@@ -107,6 +109,7 @@
             ByteArrayOutputStream ruleOS = new ByteArrayOutputStream();
             compileRules(rules, ruleOS);
             fRData = RBBIDataWrapper.get(ByteBuffer.wrap(ruleOS.toByteArray()));
+            fLookAheadMatches = new int[fRData.fFTable.fLookAheadResultsSize];
         } catch (IOException e) {
             ///CLOVER:OFF
             // An IO exception can only arrive here if there is a bug in the RBBI Rule compiler,
@@ -138,7 +141,7 @@
         synchronized (gAllBreakEngines)  {
             result.fBreakEngines = new ArrayList<>(gAllBreakEngines);
         }
-        result.fLookAheadMatches = new LookAheadResults();
+        result.fLookAheadMatches = new int[fRData.fFTable.fLookAheadResultsSize];
         result.fBreakCache = result.new BreakCache(fBreakCache);
         result.fDictionaryCache = result.new DictionaryCache(fDictionaryCache);
         return result;
@@ -252,6 +255,11 @@
     private boolean            fDone;
 
     /**
+     *  Array of look-ahead tentative results.
+     */
+    private int[]              fLookAheadMatches;
+
+    /**
      *   Cache of previously determined boundary positions.
      */
     private BreakCache         fBreakCache = new BreakCache();
@@ -740,53 +748,6 @@
         }   // end synchronized(gAllBreakEngines)
     }
 
-    private static final int kMaxLookaheads = 8;
-    private static class LookAheadResults {
-        int      fUsedSlotLimit;
-        int[]    fPositions;
-        int[]    fKeys;
-
-        LookAheadResults() {
-            fUsedSlotLimit= 0;
-            fPositions = new int[kMaxLookaheads];
-            fKeys = new int[kMaxLookaheads];
-        }
-
-        int getPosition(int key) {
-            for (int i=0; i<fUsedSlotLimit; ++i) {
-                if (fKeys[i] == key) {
-                    return fPositions[i];
-                }
-            }
-            assert(false);
-            return -1;
-        }
-
-        void setPosition(int key, int position) {
-            int i;
-            for (i=0; i<fUsedSlotLimit; ++i) {
-                if (fKeys[i] == key) {
-                    fPositions[i] = position;
-                    return;
-                }
-            }
-            if (i >= kMaxLookaheads) {
-                assert(false);
-                i = kMaxLookaheads - 1;
-            }
-            fKeys[i] = key;
-            fPositions[i] = position;
-            assert(fUsedSlotLimit == i);
-            fUsedSlotLimit = i + 1;
-        }
-
-        void reset() {
-            fUsedSlotLimit = 0;
-        }
-    };
-    private LookAheadResults fLookAheadMatches = new LookAheadResults();
-
-
     /**
      * The State Machine Engine for moving forward is here.
      * This function is the heart of the RBBI run time engine.
@@ -821,9 +782,9 @@
 
         // caches for quicker access
         CharacterIterator text = fText;
-        Trie2 trie = fRData.fTrie;
+        CodePointTrie trie = fRData.fTrie;
 
-        short[] stateTable  = fRData.fFTable.fTable;
+        char[] stateTable  = fRData.fFTable.fTable;
         int initialPosition = fPosition;
         text.setIndex(initialPosition);
         int result          = initialPosition;
@@ -843,6 +804,7 @@
         int row             = fRData.getRowIndex(state);
         short category      = 3;
         int flagsState      = fRData.fFTable.fFlags;
+        int dictStart       = fRData.fFTable.fDictCategoriesStart;
         int mode            = RBBI_RUN;
         if ((flagsState & RBBIDataWrapper.RBBI_BOF_REQUIRED) != 0) {
             category = 2;
@@ -853,7 +815,6 @@
                 System.out.println(RBBIDataWrapper.intToString(state,7) + RBBIDataWrapper.intToString(category,6));
             }
         }
-        fLookAheadMatches.reset();
 
         // loop until we reach the end of the text or transition to state 0
         while (state != STOP_STATE) {
@@ -880,15 +841,9 @@
                 //
                 category = (short) trie.get(c);
 
-                // Check the dictionary bit in the character's category.
-                //    Counter is only used by dictionary based iterators (subclasses).
-                //    Chars that need to be handled by a dictionary have a flag bit set
-                //    in their category values.
-                //
-                if ((category & 0x4000) != 0)  {
+                // Check for categories that require word dictionary handling.
+                if (category >= dictStart) {
                     fDictionaryCharCount++;
-                    //  And off the dictionary flag bit.
-                    category &= ~0x4000;
                 }
 
                 if (TRACE) {
@@ -912,8 +867,8 @@
             // look up a state transition in the state table
             state = stateTable[row + RBBIDataWrapper.NEXTSTATES + category];
             row   = fRData.getRowIndex(state);
-
-            if (stateTable[row + RBBIDataWrapper.ACCEPTING] == -1) {
+            int accepting = stateTable[row + RBBIDataWrapper.ACCEPTING];
+            if (accepting == RBBIDataWrapper.ACCEPTING_UNCONDITIONAL) {
                 // Match found, common case
                 result = text.getIndex();
                 if (c >= UTF16.SUPPLEMENTARY_MIN_VALUE && c <= UTF16.CODEPOINT_MAX_VALUE) {
@@ -923,27 +878,25 @@
                 }
 
                 //  Remember the break status (tag) values.
-                fRuleStatusIndex = stateTable[row + RBBIDataWrapper.TAGIDX];
-            }
-
-            int completedRule = stateTable[row + RBBIDataWrapper.ACCEPTING];
-            if (completedRule > 0) {
+                fRuleStatusIndex = stateTable[row + RBBIDataWrapper.TAGSIDX];
+            } else if (accepting > RBBIDataWrapper.ACCEPTING_UNCONDITIONAL) {
                 // Lookahead match is completed
-                int lookaheadResult = fLookAheadMatches.getPosition(completedRule);
+                int lookaheadResult = fLookAheadMatches[accepting];
                 if (lookaheadResult >= 0) {
-                    fRuleStatusIndex = stateTable[row + RBBIDataWrapper.TAGIDX];
+                    fRuleStatusIndex = stateTable[row + RBBIDataWrapper.TAGSIDX];
                     fPosition = lookaheadResult;
                     return lookaheadResult;
                 }
             }
 
+
             // If we are at the position of the '/' in a look-ahead (hard break) rule;
             // record the current position, to be returned later, if the full rule matches.
             // TODO: Move this check before the previous check of fAccepting.
             //       This would enable hard-break rules with no following context.
             //       But there are line break test failures when trying this. Investigate.
             //       Issue ICU-20837
-            int rule =  stateTable[row + RBBIDataWrapper.LOOKAHEAD];
+            int rule = stateTable[row + RBBIDataWrapper.LOOKAHEAD];
             if (rule != 0) {
                 int  pos = text.getIndex();
                 if (c >= UTF16.SUPPLEMENTARY_MIN_VALUE && c <= UTF16.CODEPOINT_MAX_VALUE) {
@@ -951,7 +904,7 @@
                     // We want the beginning  of it.
                     pos--;
                 }
-                fLookAheadMatches.setPosition(rule, pos);
+                fLookAheadMatches[rule] = pos;
             }
 
 
@@ -996,14 +949,14 @@
      * @internal
      */
     private int handleSafePrevious(int fromPosition) {
-        int             state;
+        char            state;
         short           category = 0;
         int             result = 0;
 
         // caches for quicker access
         CharacterIterator text = fText;
-        Trie2 trie = fRData.fTrie;
-        short[] stateTable  = fRData.fRTable.fTable;
+        CodePointTrie trie = fRData.fTrie;
+        char[] stateTable  = fRData.fRTable.fTable;
 
         CISetIndex32(text, fromPosition);
         if (TRACE) {
@@ -1029,7 +982,6 @@
             //
             //  And off the dictionary flag bit. For reverse iteration it is not used.
             category = (short) trie.get(c);
-            category &= ~0x4000;
             if (TRACE) {
                 System.out.print("            " +  RBBIDataWrapper.intToString(text.getIndex(), 5));
                 System.out.print(RBBIDataWrapper.intToHexString(c, 10));
@@ -1217,9 +1169,10 @@
             fText.setIndex(rangeStart);
             int     c = CharacterIteration.current32(fText);
             category = (short)fRData.fTrie.get(c);
+            int dictStart = fRData.fFTable.fDictCategoriesStart;
 
             while(true) {
-                while((current = fText.getIndex()) < rangeEnd && (category & 0x4000) == 0) {
+                while((current = fText.getIndex()) < rangeEnd && (category < dictStart)) {
                     c = CharacterIteration.next32(fText);    // pre-increment
                     category = (short)fRData.fTrie.get(c);
                 }
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/RuleBasedNumberFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/RuleBasedNumberFormat.java
index dbab314..cc4b820 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/RuleBasedNumberFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/RuleBasedNumberFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
@@ -275,7 +275,7 @@
  *   <tr>
  *     <td style="width: 5%; vertical-align: top;"></td>
  *     <td style="width: 8%; vertical-align: top;">x.0:</td>
- *     <td valign="top">The rule is a <em>master rule</em>. If the full stop in
+ *     <td valign="top">The rule is a <em>default rule</em>. If the full stop in
  *     the middle of the rule name is replaced with the decimal point
  *     that is used in the language or DecimalFormatSymbols, then that rule will
  *     have precedence when formatting and parsing this rule. For example, some
@@ -313,9 +313,9 @@
  * algorithms: If the rule set is a regular rule set, do the following:
  *
  * <ul>
- *   <li>If the rule set includes a master rule (and the number was passed in as a <tt>double</tt>),
- *     use the master rule.&nbsp; (If the number being formatted was passed in as a <tt>long</tt>,
- *     the master rule is ignored.)</li>
+ *   <li>If the rule set includes a default rule (and the number was passed in as a <tt>double</tt>),
+ *     use the default rule.&nbsp; (If the number being formatted was passed in as a <tt>long</tt>,
+ *     the default rule is ignored.)</li>
  *   <li>If the number is negative, use the negative-number rule.</li>
  *   <li>If the number has a fractional part and is greater than 1, use the improper fraction
  *     rule.</li>
@@ -377,7 +377,7 @@
  *   <tr>
  *     <td style="width: 37;"></td>
  *     <td style="width: 23;"></td>
- *     <td style="width: 165; vertical-align: top;">in fraction or master rule</td>
+ *     <td style="width: 165; vertical-align: top;">in fraction or default rule</td>
  *     <td>Isolate the number's fractional part and format it.</td>
  *   </tr>
  *   <tr>
@@ -415,7 +415,7 @@
  *   <tr>
  *     <td style="width: 37;"></td>
  *     <td style="width: 23;"></td>
- *     <td style="width: 165; vertical-align: top;">in fraction or master rule</td>
+ *     <td style="width: 165; vertical-align: top;">in fraction or default rule</td>
  *     <td>Isolate the number's integral part and format it.</td>
  *   </tr>
  *   <tr>
@@ -452,7 +452,7 @@
  *   <tr>
  *     <td style="width: 37;"></td>
  *     <td style="width: 23;"></td>
- *     <td style="width: 165; vertical-align: top;">in master rule</td>
+ *     <td style="width: 165; vertical-align: top;">in default rule</td>
  *     <td>Omit the optional text if the number is an integer (same as specifying both an x.x
  *     rule and an x.0 rule)</td>
  *   </tr>
@@ -1153,7 +1153,7 @@
 
     /**
      * Formats the specified number according to the specified rule set.
-     * (If the specified rule set specifies a master ["x.0"] rule, this function
+     * (If the specified rule set specifies a default ["x.0"] rule, this function
      * ignores it.  Convert the number to a double first if you ned it.)  This
      * function preserves all the precision in the long-- it doesn't convert it
      * to a double.
@@ -1199,7 +1199,7 @@
     /**
      * Formats the specified number using the formatter's default rule set.
      * (The default rule set is the last public rule set defined in the description.)
-     * (If the specified rule set specifies a master ["x.0"] rule, this function
+     * (If the specified rule set specifies a default ["x.0"] rule, this function
      * ignores it.  Convert the number to a double first if you ned it.)  This
      * function preserves all the precision in the long-- it doesn't convert it
      * to a double.
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/SCSU.java b/icu4j/main/classes/core/src/com/ibm/icu/text/SCSU.java
index 39196fe..3e3eab2 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/SCSU.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/SCSU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2007, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/ScientificNumberFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/text/ScientificNumberFormatter.java
index 0683cf9..607997f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/ScientificNumberFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/ScientificNumberFormatter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/SelectFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/SelectFormat.java
index 3e7c4c7..abb2fac 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/SelectFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/SelectFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/SimpleDateFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/SimpleDateFormat.java
index dcbc693..040258c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/SimpleDateFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/SimpleDateFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/SimpleFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/text/SimpleFormatter.java
index 3a20db7..10718aa 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/SimpleFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/SimpleFormatter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/SpoofChecker.java b/icu4j/main/classes/core/src/com/ibm/icu/text/SpoofChecker.java
index 5ea9e42..df50170 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/SpoofChecker.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/SpoofChecker.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ***************************************************************************
  * Copyright (C) 2008-2016 International Business Machines Corporation
@@ -618,8 +618,10 @@
          * Specify the bitmask of checks that will be performed by {@link SpoofChecker#failsChecks}. Calling this method
          * overwrites any checks that may have already been enabled. By default, all checks are enabled.
          *
-         * To enable specific checks and disable all others, the "whitelisted" checks should be ORed together. For
-         * example, to fail strings containing characters outside of the set specified by {@link #setAllowedChars} and
+         * To enable specific checks and disable all others,
+         * OR together only the bit constants for the desired checks.
+         * For example, to fail strings containing characters outside of
+         * the set specified by {@link #setAllowedChars} and
          * also strings that contain digits from mixed numbering systems:
          *
          * <pre>
@@ -628,8 +630,9 @@
          * }
          * </pre>
          *
-         * To disable specific checks and enable all others, the "blacklisted" checks should be ANDed away from
-         * ALL_CHECKS. For example, if you are not planning to use the {@link SpoofChecker#areConfusable} functionality,
+         * To disable specific checks and enable all others,
+         * start with ALL_CHECKS and "AND away" the not-desired checks.
+         * For example, if you are not planning to use the {@link SpoofChecker#areConfusable} functionality,
          * it is good practice to disable the CONFUSABLE check:
          *
          * <pre>
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/StringCharacterIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/text/StringCharacterIterator.java
index f9ce834..bea6d58 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/StringCharacterIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/StringCharacterIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/StringPrep.java b/icu4j/main/classes/core/src/com/ibm/icu/text/StringPrep.java
index bdb6ebc..04d234e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/StringPrep.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/StringPrep.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/StringPrepParseException.java b/icu4j/main/classes/core/src/com/ibm/icu/text/StringPrepParseException.java
index 2b2a911..f34cf4a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/StringPrepParseException.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/StringPrepParseException.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/StringTransform.java b/icu4j/main/classes/core/src/com/ibm/icu/text/StringTransform.java
index eb1c3a1..fad154e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/StringTransform.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/StringTransform.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2009, Google, International Business Machines Corporation and    *
@@ -24,4 +24,4 @@
      */
     @Override
     public String transform(String source);
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/SymbolTable.java b/icu4j/main/classes/core/src/com/ibm/icu/text/SymbolTable.java
index fc68965..b27d234 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/SymbolTable.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/SymbolTable.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/ThaiBreakEngine.java b/icu4j/main/classes/core/src/com/ibm/icu/text/ThaiBreakEngine.java
index 07855b1..8940739 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/ThaiBreakEngine.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/ThaiBreakEngine.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/TimeUnitFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/TimeUnitFormat.java
index 08c7dc4..32c7423 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/TimeUnitFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/TimeUnitFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **************************************************************************
  * Copyright (C) 2008-2014, Google, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/TimeZoneFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/TimeZoneFormat.java
index d64ad4d..5c4aa4a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/TimeZoneFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/TimeZoneFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/TimeZoneNames.java b/icu4j/main/classes/core/src/com/ibm/icu/text/TimeZoneNames.java
index a7bb189..8a173d7 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/TimeZoneNames.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/TimeZoneNames.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/Transform.java b/icu4j/main/classes/core/src/com/ibm/icu/text/Transform.java
index 297637e..ae16554 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/Transform.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/Transform.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
  * Copyright (C) 2009-2010, Google, International Business Machines Corporation *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/UCharacterIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/text/UCharacterIterator.java
index cfcf0a9..73e9fc5 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/UCharacterIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/UCharacterIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/UFieldPosition.java b/icu4j/main/classes/core/src/com/ibm/icu/text/UFieldPosition.java
index 537dd66..ce4e5e5 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/UFieldPosition.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/UFieldPosition.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/UFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/UFormat.java
index 2923815..e6a1824 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/UFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/UFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/UForwardCharacterIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/text/UForwardCharacterIterator.java
index d81ccb4..312dd4a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/UForwardCharacterIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/UForwardCharacterIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/UTF16.java b/icu4j/main/classes/core/src/com/ibm/icu/text/UTF16.java
index 39ec183..3e60b68 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/UTF16.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/UTF16.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/UnhandledBreakEngine.java b/icu4j/main/classes/core/src/com/ibm/icu/text/UnhandledBreakEngine.java
index fcd876e..ff51a38 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/UnhandledBreakEngine.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/UnhandledBreakEngine.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2016, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeCompressor.java b/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeCompressor.java
index 2f79285..6922a74 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeCompressor.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeCompressor.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeDecompressor.java b/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeDecompressor.java
index 6789469..75b8077 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeDecompressor.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeDecompressor.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeFilter.java b/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeFilter.java
index 3f88e68..87a3961 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeFilter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeFilter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeMatcher.java
index 1117a10..d781bd1 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeMatcher.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeReplacer.java b/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeReplacer.java
index 2a040e9..7d62c71 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeReplacer.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeReplacer.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2002, International Business Machines Corporation
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeSet.java b/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeSet.java
index b7e9027..db7c00e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeSet.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeSet.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeSetIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeSetIterator.java
index 854219a..2780104 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeSetIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeSetIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeSetSpanner.java b/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeSetSpanner.java
index f52dc3f..47cac42 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeSetSpanner.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/UnicodeSetSpanner.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/package.html b/icu4j/main/classes/core/src/com/ibm/icu/text/package.html
index 8238f4d..96bef4a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/package.html
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/package.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--  Copyright (C) 2016 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--  Copyright (C) 2000-2004, International Business Machines Corporation and
   others. All Rights Reserved.
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/AnnualTimeZoneRule.java b/icu4j/main/classes/core/src/com/ibm/icu/util/AnnualTimeZoneRule.java
index 5ae8516..c1bb6da 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/AnnualTimeZoneRule.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/AnnualTimeZoneRule.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/BasicTimeZone.java b/icu4j/main/classes/core/src/com/ibm/icu/util/BasicTimeZone.java
index 055c544..abef756 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/BasicTimeZone.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/BasicTimeZone.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/BuddhistCalendar.java b/icu4j/main/classes/core/src/com/ibm/icu/util/BuddhistCalendar.java
index 1c94639..2073860 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/BuddhistCalendar.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/BuddhistCalendar.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/ByteArrayWrapper.java b/icu4j/main/classes/core/src/com/ibm/icu/util/ByteArrayWrapper.java
index 1c2c75c..a70ed14 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/ByteArrayWrapper.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/ByteArrayWrapper.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/BytesTrie.java b/icu4j/main/classes/core/src/com/ibm/icu/util/BytesTrie.java
index cc88bb0..8bc778e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/BytesTrie.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/BytesTrie.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2010-2014, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/BytesTrieBuilder.java b/icu4j/main/classes/core/src/com/ibm/icu/util/BytesTrieBuilder.java
index 5e36cd3..5e3d473 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/BytesTrieBuilder.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/BytesTrieBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011-2014, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/CECalendar.java b/icu4j/main/classes/core/src/com/ibm/icu/util/CECalendar.java
index d327139..89548db 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/CECalendar.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/CECalendar.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2011, International Business Machines Corporation and    *
@@ -76,7 +76,7 @@
      * @param aLocale The locale for the new calendar.
      */
     protected CECalendar(Locale aLocale) {
-        this(TimeZone.getDefault(), aLocale);
+        this(TimeZone.forLocaleOrDefault(aLocale), aLocale);
     }
 
     /**
@@ -86,7 +86,7 @@
      * @param locale The locale for the new calendar.
      */
     protected CECalendar(ULocale locale) {
-        this(TimeZone.getDefault(), locale);
+        this(TimeZone.forULocaleOrDefault(locale), locale);
     }
 
     /**
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/Calendar.java b/icu4j/main/classes/core/src/com/ibm/icu/util/Calendar.java
index cae4918..41f8fa4 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/Calendar.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/Calendar.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *   Copyright (C) 1996-2016, International Business Machines
  *   Corporation and others.  All Rights Reserved.
@@ -27,6 +27,7 @@
 import com.ibm.icu.impl.SoftCache;
 import com.ibm.icu.text.DateFormat;
 import com.ibm.icu.text.DateFormatSymbols;
+import com.ibm.icu.text.DateTimePatternGenerator;
 import com.ibm.icu.text.SimpleDateFormat;
 import com.ibm.icu.util.ULocale.Category;
 
@@ -1764,7 +1765,7 @@
             locale = ULocale.getDefault(Category.FORMAT);
         }
         if (tz == null) {
-            tz = TimeZone.getDefault();
+            tz = TimeZone.forULocaleOrDefault(locale);
         }
 
         Calendar cal = createInstance(locale);
@@ -1796,7 +1797,7 @@
 
     private static Calendar createInstance(ULocale locale) {
         Calendar cal = null;
-        TimeZone zone = TimeZone.getDefault();
+        TimeZone zone = TimeZone.forULocaleOrDefault(locale);
         CalType calType = getCalendarTypeForLocale(locale);
         if (calType == CalType.UNKNOWN) {
             // fallback to Gregorian
@@ -3514,6 +3515,13 @@
         "{1} {0}",
         "{1} {0}"
     };
+    // final fallback patterns
+    private static final String[] TIME_SKELETONS = {
+        "jmmsszzzz",    // Full
+        "jmmssz",       // Long
+        "jmmss",        // Medium
+        "jmm"           // Short
+    };
 
     static private DateFormat formatHelper(Calendar cal, ULocale loc, int dateStyle,
             int timeStyle) {
@@ -3664,7 +3672,39 @@
         int patternsSize = dtPatternsRb.getSize();
         String[] dateTimePatterns = new String[patternsSize];
         String[] dateTimePatternsOverrides = new String[patternsSize];
-        for (int i = 0; i < patternsSize; i++) {
+        int i = 0; // index for dateTimePatterns, dateTimePatternsOverrides
+
+        String baseLocID = locale.getBaseName();
+        if (baseLocID.length() > 0 && !baseLocID.equals("und")) {
+            ULocale baseLoc = new ULocale(baseLocID);
+            // The following is different from ICU4C, where we can get the valid locale
+            // for the SimpleDateFormat object. Here we do not have a SimpleDateFormat and
+            // valid locale for the Calendar is a bit meaningless.
+            ULocale validLoc = ULocale.addLikelySubtags(dtPatternsRb.getULocale());
+            if (validLoc != baseLoc) {
+                String baseReg = baseLoc.getCountry();
+                if ((baseReg.length() > 0 && !baseReg.equals(validLoc.getCountry()))
+                        || !baseLoc.getLanguage().equals(validLoc.getLanguage())) {
+                    // use DTPG if the standard time formats may have the wrong time cycle,
+                    // because the valid locale differs in important ways (region, language)
+                    // from the base locale.
+                    // We could *also* check whether they do actually have a mismatch with
+                    // the time cycle preferences for the region, but that is a lot more
+                    // work for little or no additional benefit, since just going ahead
+                    // and always synthesizing the time format as per the following should
+                    // create a locale-appropriate pattern with cycle that matches the
+                    // region preferences anyway.
+                    // In this case we get the first 4 entries of dateTimePatterns using
+                    // DateTimePatternGenerator, not resource data.
+                    DateTimePatternGenerator dtpg = DateTimePatternGenerator.getInstanceNoStdPat(locale);
+                    for (; i < 4; i++) {
+                        dateTimePatterns[i] = dtpg.getBestPattern(TIME_SKELETONS[i]);
+                    }
+                }
+            }
+        }
+
+        for (; i < patternsSize; i++) { // get all or remaining dateTimePatterns entries
             ICUResourceBundle concatenationPatternRb = (ICUResourceBundle) dtPatternsRb.get(i);
             switch (concatenationPatternRb.getType()) {
                 case UResourceBundle.STRING:
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/CaseInsensitiveString.java b/icu4j/main/classes/core/src/com/ibm/icu/util/CaseInsensitiveString.java
index 8ecf7c3..0909560 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/CaseInsensitiveString.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/CaseInsensitiveString.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2013, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/CharsTrie.java b/icu4j/main/classes/core/src/com/ibm/icu/util/CharsTrie.java
index af33ffa..b6fc849 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/CharsTrie.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/CharsTrie.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011-2014, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/CharsTrieBuilder.java b/icu4j/main/classes/core/src/com/ibm/icu/util/CharsTrieBuilder.java
index 4dc0d37..9bf3883 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/CharsTrieBuilder.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/CharsTrieBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011-2014, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/ChineseCalendar.java b/icu4j/main/classes/core/src/com/ibm/icu/util/ChineseCalendar.java
index 605479c..4976451 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/ChineseCalendar.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/ChineseCalendar.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*********************************************************************
  * Copyright (C) 2000-2014, International Business Machines
  * Corporation and others. All Rights Reserved.
@@ -284,7 +284,7 @@
      * @stable ICU 4.0
      */
     public ChineseCalendar(Locale aLocale) {
-        this(TimeZone.getDefault(), ULocale.forLocale(aLocale), CHINESE_EPOCH_YEAR, CHINA_ZONE);
+        this(TimeZone.forLocaleOrDefault(aLocale), ULocale.forLocale(aLocale), CHINESE_EPOCH_YEAR, CHINA_ZONE);
     }
 
     /**
@@ -317,7 +317,7 @@
      * @stable ICU 4.0
      */
     public ChineseCalendar(ULocale locale) {
-        this(TimeZone.getDefault(), locale, CHINESE_EPOCH_YEAR, CHINA_ZONE);
+        this(TimeZone.forULocaleOrDefault(locale), locale, CHINESE_EPOCH_YEAR, CHINA_ZONE);
     }
 
     /**
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/CodePointMap.java b/icu4j/main/classes/core/src/com/ibm/icu/util/CodePointMap.java
index 856689a..657ce81 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/CodePointMap.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/CodePointMap.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // created: 2018may10 Markus W. Scherer
 
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/CodePointTrie.java b/icu4j/main/classes/core/src/com/ibm/icu/util/CodePointTrie.java
index d5ee8ab..3fd2e70 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/CodePointTrie.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/CodePointTrie.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // created: 2018may04 Markus W. Scherer
 
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/CompactByteArray.java b/icu4j/main/classes/core/src/com/ibm/icu/util/CompactByteArray.java
index fe135ab..187730f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/CompactByteArray.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/CompactByteArray.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/CompactCharArray.java b/icu4j/main/classes/core/src/com/ibm/icu/util/CompactCharArray.java
index 65b0a43..f610487 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/CompactCharArray.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/CompactCharArray.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/CopticCalendar.java b/icu4j/main/classes/core/src/com/ibm/icu/util/CopticCalendar.java
index fc86b38..847a21a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/CopticCalendar.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/CopticCalendar.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/Currency.java b/icu4j/main/classes/core/src/com/ibm/icu/util/Currency.java
index 3e3bdf5..592dc0a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/Currency.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/Currency.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/CurrencyAmount.java b/icu4j/main/classes/core/src/com/ibm/icu/util/CurrencyAmount.java
index 884c359..bdccc81 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/CurrencyAmount.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/CurrencyAmount.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2004-2010, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/CurrencyServiceShim.java b/icu4j/main/classes/core/src/com/ibm/icu/util/CurrencyServiceShim.java
index fa0771f..63c132f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/CurrencyServiceShim.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/CurrencyServiceShim.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/DangiCalendar.java b/icu4j/main/classes/core/src/com/ibm/icu/util/DangiCalendar.java
index e24824a..f87d4bd 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/DangiCalendar.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/DangiCalendar.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/DateInterval.java b/icu4j/main/classes/core/src/com/ibm/icu/util/DateInterval.java
index 8522297..e6dbd7e 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/DateInterval.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/DateInterval.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  *   Copyright (C) 2008-2009, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/DateRule.java b/icu4j/main/classes/core/src/com/ibm/icu/util/DateRule.java
index d049bba..b424cf6 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/DateRule.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/DateRule.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/DateTimeRule.java b/icu4j/main/classes/core/src/com/ibm/icu/util/DateTimeRule.java
index e609082..34556cc 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/DateTimeRule.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/DateTimeRule.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/EasterHoliday.java b/icu4j/main/classes/core/src/com/ibm/icu/util/EasterHoliday.java
index 702ce22..ef9d6ed 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/EasterHoliday.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/EasterHoliday.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/EthiopicCalendar.java b/icu4j/main/classes/core/src/com/ibm/icu/util/EthiopicCalendar.java
index 89e0835..2a895f4 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/EthiopicCalendar.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/EthiopicCalendar.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2016, International Business Machines Corporation and
@@ -177,7 +177,7 @@
      * @stable ICU 3.4
      */
     public EthiopicCalendar(Locale aLocale) {
-        this(TimeZone.getDefault(), aLocale);
+        this(TimeZone.forLocaleOrDefault(aLocale), aLocale);
     }
 
     /**
@@ -188,7 +188,7 @@
      * @stable ICU 3.4
      */
     public EthiopicCalendar(ULocale locale) {
-        this(TimeZone.getDefault(), locale);
+        this(TimeZone.forULocaleOrDefault(locale), locale);
     }
 
     /**
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/Freezable.java b/icu4j/main/classes/core/src/com/ibm/icu/util/Freezable.java
index b88ffe0..e00cd92 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/Freezable.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/Freezable.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2005-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/GenderInfo.java b/icu4j/main/classes/core/src/com/ibm/icu/util/GenderInfo.java
index 170061d..176ae69 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/GenderInfo.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/GenderInfo.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
  * Copyright (C) 2003-2016, Google, International Business Machines Corporation
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/GregorianCalendar.java b/icu4j/main/classes/core/src/com/ibm/icu/util/GregorianCalendar.java
index 9c0bf33..68ee21f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/GregorianCalendar.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/GregorianCalendar.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 1996-2016, International Business Machines
  * Corporation and others.  All Rights Reserved.
@@ -358,7 +358,7 @@
      * @stable ICU 2.0
      */
     public GregorianCalendar(Locale aLocale) {
-        this(TimeZone.getDefault(), aLocale);
+        this(TimeZone.forLocaleOrDefault(aLocale), aLocale);
     }
 
     /**
@@ -368,7 +368,7 @@
      * @stable ICU 3.2
      */
     public GregorianCalendar(ULocale locale) {
-        this(TimeZone.getDefault(), locale);
+        this(TimeZone.forULocaleOrDefault(locale), locale);
     }
 
     /**
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/HebrewCalendar.java b/icu4j/main/classes/core/src/com/ibm/icu/util/HebrewCalendar.java
index 9cdbe48..73322d1 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/HebrewCalendar.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/HebrewCalendar.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
@@ -62,7 +62,7 @@
  * <p>
  * This class should not be subclassed.</p>
  * <p>
- * HebrewCalendar usually should be instantiated using 
+ * HebrewCalendar usually should be instantiated using
  * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
  * with the tag <code>"@calendar=hebrew"</code>.</p>
  *
@@ -82,33 +82,33 @@
     //-------------------------------------------------------------------------
 
 
-    /** 
-     * Constant for Tishri, the 1st month of the Hebrew year. 
-     * @stable ICU 2.8 
+    /**
+     * Constant for Tishri, the 1st month of the Hebrew year.
+     * @stable ICU 2.8
      */
     public static final int TISHRI = 0;
 
     /**
-     * Constant for Heshvan, the 2nd month of the Hebrew year. 
-     * @stable ICU 2.8 
+     * Constant for Heshvan, the 2nd month of the Hebrew year.
+     * @stable ICU 2.8
      */
     public static final int HESHVAN = 1;
 
     /**
-     * Constant for Kislev, the 3rd month of the Hebrew year. 
-     * @stable ICU 2.8 
+     * Constant for Kislev, the 3rd month of the Hebrew year.
+     * @stable ICU 2.8
      */
     public static final int KISLEV = 2;
 
     /**
-     * Constant for Tevet, the 4th month of the Hebrew year. 
-     * @stable ICU 2.8 
+     * Constant for Tevet, the 4th month of the Hebrew year.
+     * @stable ICU 2.8
      */
     public static final int TEVET = 3;
 
     /**
-     * Constant for Shevat, the 5th month of the Hebrew year. 
-     * @stable ICU 2.8 
+     * Constant for Shevat, the 5th month of the Hebrew year.
+     * @stable ICU 2.8
      */
     public static final int SHEVAT = 4;
 
@@ -120,45 +120,45 @@
      */
     public static final int ADAR_1 = 5;
 
-    /** 
-     * Constant for the Adar, the 7th month of the Hebrew year. 
-     * @stable ICU 2.8 
+    /**
+     * Constant for the Adar, the 7th month of the Hebrew year.
+     * @stable ICU 2.8
      */
     public static final int ADAR = 6;
 
     /**
-     * Constant for Nisan, the 8th month of the Hebrew year. 
-     * @stable ICU 2.8 
+     * Constant for Nisan, the 8th month of the Hebrew year.
+     * @stable ICU 2.8
      */
     public static final int NISAN = 7;
 
     /**
-     * Constant for Iyar, the 9th month of the Hebrew year. 
-     * @stable ICU 2.8 
+     * Constant for Iyar, the 9th month of the Hebrew year.
+     * @stable ICU 2.8
      */
     public static final int IYAR = 8;
 
     /**
-     * Constant for Sivan, the 10th month of the Hebrew year. 
-     * @stable ICU 2.8 
+     * Constant for Sivan, the 10th month of the Hebrew year.
+     * @stable ICU 2.8
      */
     public static final int SIVAN = 9;
 
     /**
-     * Constant for Tammuz, the 11th month of the Hebrew year. 
-     * @stable ICU 2.8 
+     * Constant for Tammuz, the 11th month of the Hebrew year.
+     * @stable ICU 2.8
      */
     public static final int TAMUZ = 10;
 
     /**
-     * Constant for Av, the 12th month of the Hebrew year. 
-     * @stable ICU 2.8 
+     * Constant for Av, the 12th month of the Hebrew year.
+     * @stable ICU 2.8
      */
     public static final int AV = 11;
 
     /**
-     * Constant for Elul, the 13th month of the Hebrew year. 
-     * @stable ICU 2.8 
+     * Constant for Elul, the 13th month of the Hebrew year.
+     * @stable ICU 2.8
      */
     public static final int ELUL = 12;
 
@@ -270,7 +270,7 @@
     //-------------------------------------------------------------------------
 
     private static CalendarCache cache = new CalendarCache();
-    
+
     //-------------------------------------------------------------------------
     // Constructors...
     //-------------------------------------------------------------------------
@@ -305,7 +305,7 @@
      * @stable ICU 2.8
      */
     public HebrewCalendar(Locale aLocale) {
-        this(TimeZone.getDefault(), aLocale);
+        this(TimeZone.forLocaleOrDefault(aLocale), aLocale);
     }
 
     /**
@@ -316,7 +316,7 @@
      * @stable ICU 3.2
      */
     public HebrewCalendar(ULocale locale) {
-        this(TimeZone.getDefault(), locale);
+        this(TimeZone.forULocaleOrDefault(locale), locale);
     }
 
     /**
@@ -421,7 +421,7 @@
     /**
      * Add a signed amount to a specified field, using this calendar's rules.
      * For example, to add three days to the current date, you can call
-     * <code>add(Calendar.DATE, 3)</code>. 
+     * <code>add(Calendar.DATE, 3)</code>.
      * <p>
      * When adding to certain fields, the values of other fields may conflict and
      * need to be changed.  For example, when adding one to the {@link #MONTH MONTH} field
@@ -445,10 +445,11 @@
      *              to a field that cannot be handled by this method.
      * @stable ICU 2.8
      */
+    @Override
     public void add(int field, int amount)
     {
         switch (field) {
-        case MONTH: 
+        case MONTH:
             {
                 // We can't just do a set(MONTH, get(MONTH) + amount).  The
                 // reason is ADAR_1.  Suppose amount is +2 and we land in
@@ -492,7 +493,7 @@
                 pinField(DAY_OF_MONTH);
                 break;
             }
-            
+
         default:
             super.add(field, amount);
             break;
@@ -504,7 +505,7 @@
      * example, to roll the current date up by three days, you can call
      * <code>roll(Calendar.DATE, 3)</code>.  If the
      * field is rolled past its maximum allowable value, it will "wrap" back
-     * to its minimum and continue rolling.  
+     * to its minimum and continue rolling.
      * For example, calling <code>roll(Calendar.DATE, 10)</code>
      * on a Hebrew calendar set to "25 Av 5758" will result in the date "5 Av 5758".
      * <p>
@@ -531,6 +532,7 @@
      *              to a field that cannot be handled by this method.
      * @stable ICU 2.8
      */
+    @Override
     public void roll(int field, int amount)
     {
         switch (field) {
@@ -538,7 +540,7 @@
             {
                 int month = get(MONTH);
                 int year = get(YEAR);
-                
+
                 boolean leapYear = isLeapYear(year);
                 int yearLength = monthsInYear(year);
                 int newMonth = month + (amount % yearLength);
@@ -570,14 +572,14 @@
     // "parts" (or halakim), which are 1/1080 of an hour, or 3 1/3 seconds.
     private static final long HOUR_PARTS = 1080;
     private static final long DAY_PARTS  = 24*HOUR_PARTS;
-    
+
     // An approximate value for the length of a lunar month.
     // It is used to calculate the approximate year and month of a given
     // absolute date.
     static private final int  MONTH_DAYS = 29;
     static private final long MONTH_FRACT = 12*HOUR_PARTS + 793;
     static private final long MONTH_PARTS = MONTH_DAYS*DAY_PARTS + MONTH_FRACT;
-    
+
     // The time of the new moon (in parts) on 1 Tishri, year 1 (the epoch)
     // counting from noon on the day before.  BAHARAD is an abbreviation of
     // Bet (Monday), Hey (5 hours from sunset), Resh-Daled (204).
@@ -606,9 +608,10 @@
     private static long startOfYear(int year)
     {
         long day = cache.get(year);
-        
+
         if (day == CalendarCache.EMPTY) {
-            int months = (235 * year - 234) / 19;           // # of months before year
+            // # of months before year
+            int months = (int)floorDivide((235 * (long)year - 234), 19);
 
             long frac = months * MONTH_FRACT + BAHARAD;     // Fractional part of day #
             day  = months * 29 + (frac / DAY_PARTS);        // Whole # part of calculation
@@ -706,6 +709,7 @@
     /**
      * @stable ICU 2.8
      */
+    @Override
     protected int handleGetLimit(int field, int limitType) {
         return LIMITS[field][limitType];
     }
@@ -714,6 +718,7 @@
      * Returns the length of the given month in the given year
      * @stable ICU 2.8
      */
+    @Override
     protected int handleGetMonthLength(int extendedYear, int month) {
         // Resolve out-of-range months.  This is necessary in order to
         // obtain the correct year.  We correct to
@@ -734,7 +739,7 @@
             case KISLEV:
                 // These two month lengths can vary
                 return MONTH_LENGTH[month][yearType(extendedYear)];
-                
+
             default:
                 // The rest are a fixed length
                 return MONTH_LENGTH[month][0];
@@ -745,6 +750,7 @@
      * Returns the number of days in the given Hebrew year
      * @stable ICU 2.8
      */
+    @Override
     protected int handleGetYearLength(int eyear) {
         return (int)(startOfYear(eyear+1) - startOfYear(eyear));
     }
@@ -757,6 +763,7 @@
      * @internal
      * @deprecated This API is ICU internal only.
      */
+    @Override
     @Deprecated
     protected void validateField(int field) {
         if (field == MONTH && !isLeapYear(handleGetExtendedYear()) && internalGet(MONTH) == ADAR_1) {
@@ -780,7 +787,7 @@
      * <li>DAY_OF_MONTH
      * <li>DAY_OF_YEAR
      * <li>EXTENDED_YEAR</ul>
-     * 
+     *
      * Subclasses can refer to the DAY_OF_WEEK and DOW_LOCAL fields,
      * which will be set when this method is called.  Subclasses can
      * also call the getGregorianXxx() methods to obtain Gregorian
@@ -791,10 +798,11 @@
      * getFieldCount() - 1.
      * @stable ICU 2.8
      */
+    @Override
     protected void handleComputeFields(int julianDay) {
         long d = julianDay - 347997;
-        long m = (d * DAY_PARTS) / MONTH_PARTS;         // Months (approx)
-        int year = (int)((19 * m + 234) / 235) + 1;     // Years (approx)
+        long m = floorDivide((d * DAY_PARTS), MONTH_PARTS); // Months (approx)
+        int year = (int)(floorDivide((19 * m + 234), 235) + 1);   // Years (approx)
         long ys  = startOfYear(year);                   // 1st day of year
         int dayOfYear = (int)(d - ys);
 
@@ -821,7 +829,7 @@
         internalSet(EXTENDED_YEAR, year);
         internalSet(MONTH, month);
         internalSet(DAY_OF_MONTH, dayOfMonth);
-        internalSet(DAY_OF_YEAR, dayOfYear);       
+        internalSet(DAY_OF_YEAR, dayOfYear);
     }
 
     //-------------------------------------------------------------------------
@@ -831,6 +839,7 @@
     /**
      * @stable ICU 2.8
      */
+    @Override
     protected int handleGetExtendedYear() {
         int year;
         if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
@@ -845,6 +854,7 @@
      * Return JD of start of given month/year.
      * @stable ICU 2.8
      */
+    @Override
     protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
 
         // Resolve out-of-range months.  This is necessary in order to
@@ -878,6 +888,7 @@
      * {@inheritDoc}
      * @stable ICU 3.8
      */
+    @Override
     public String getType() {
         return "hebrew";
     }
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/HebrewHoliday.java b/icu4j/main/classes/core/src/com/ibm/icu/util/HebrewHoliday.java
index fe83b24..36de0bc 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/HebrewHoliday.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/HebrewHoliday.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/Holiday.java b/icu4j/main/classes/core/src/com/ibm/icu/util/Holiday.java
index 53e61c1..2d903ea 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/Holiday.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/Holiday.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/ICUCloneNotSupportedException.java b/icu4j/main/classes/core/src/com/ibm/icu/util/ICUCloneNotSupportedException.java
index 0ef2447..883deec 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/ICUCloneNotSupportedException.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/ICUCloneNotSupportedException.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/ICUException.java b/icu4j/main/classes/core/src/com/ibm/icu/util/ICUException.java
index 7e429c8..5fc513c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/ICUException.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/ICUException.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/ICUInputTooLongException.java b/icu4j/main/classes/core/src/com/ibm/icu/util/ICUInputTooLongException.java
new file mode 100644
index 0000000..194a1fd
--- /dev/null
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/ICUInputTooLongException.java
@@ -0,0 +1,58 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package com.ibm.icu.util;
+
+/**
+ * The input is impractically long for an operation.
+ * It is rejected because it may lead to problems such as excessive
+ * processing time, stack depth, or heap memory requirements.
+ *
+ * @draft ICU 68
+ * @provisional This API might change or be removed in a future release.
+ */
+public class ICUInputTooLongException extends ICUException {
+    private static final long serialVersionUID = -2602876786689338226L;
+
+    /**
+     * Default constructor.
+     *
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ICUInputTooLongException() {
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param message exception message string
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ICUInputTooLongException(String message) {
+        super(message);
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param cause original exception
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ICUInputTooLongException(Throwable cause) {
+        super(cause);
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param message exception message string
+     * @param cause original exception
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ICUInputTooLongException(String message, Throwable cause) {
+        super(message, cause);
+    }
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/ICUUncheckedIOException.java b/icu4j/main/classes/core/src/com/ibm/icu/util/ICUUncheckedIOException.java
index 044a5ee..6c7e583 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/ICUUncheckedIOException.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/ICUUncheckedIOException.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/IllformedLocaleException.java b/icu4j/main/classes/core/src/com/ibm/icu/util/IllformedLocaleException.java
index 36c8ac4..f7b1ff8 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/IllformedLocaleException.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/IllformedLocaleException.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/IndianCalendar.java b/icu4j/main/classes/core/src/com/ibm/icu/util/IndianCalendar.java
index 5116f5b..23e5be9 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/IndianCalendar.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/IndianCalendar.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2011, International Business Machines Corporation and    *
@@ -185,7 +185,7 @@
      * @stable ICU 3.8
      */
     public IndianCalendar(Locale aLocale) {
-        this(TimeZone.getDefault(), aLocale);
+        this(TimeZone.forLocaleOrDefault(aLocale), aLocale);
     }
 
     /**
@@ -196,7 +196,7 @@
      * @stable ICU 3.8
      */
     public IndianCalendar(ULocale locale) {
-       this(TimeZone.getDefault(), locale);
+        this(TimeZone.forULocaleOrDefault(locale), locale);
     }
 
     /**
@@ -341,7 +341,7 @@
             month = remainder[0];
         }
 
-        if(isGregorianLeap(extendedYear + INDIAN_ERA_START) && month == 0) {
+        if(isGregorianLeapYear(extendedYear + INDIAN_ERA_START) && month == 0) {
             return 31;
         }
 
@@ -359,20 +359,20 @@
     protected void handleComputeFields(int julianDay){
         double jdAtStartOfGregYear;
         int leapMonth, IndianYear, yday, IndianMonth, IndianDayOfMonth, mday;
-        int[] gregorianDay;          // Stores gregorian date corresponding to Julian day;
+        computeGregorianFields(julianDay);
+        int gregorianYear = getGregorianYear(); // Stores gregorian date corresponding to Julian day;
+        IndianYear = gregorianYear - INDIAN_ERA_START;            // Year in Saka era
 
-        gregorianDay = jdToGregorian(julianDay);                    // Gregorian date for Julian day
-        IndianYear = gregorianDay[0] - INDIAN_ERA_START;            // Year in Saka era
-        jdAtStartOfGregYear = gregorianToJD(gregorianDay[0], 1, 1); // JD at start of Gregorian year
+        jdAtStartOfGregYear = gregorianToJD(gregorianYear, 0 /* first month in 0 base */, 1); // JD at start of Gregorian year
         yday = (int)(julianDay - jdAtStartOfGregYear);              // Day number in Gregorian year (starting from 0)
 
         if (yday < INDIAN_YEAR_START) {
             //  Day is at the end of the preceding Saka year
             IndianYear -= 1;
-            leapMonth = isGregorianLeap(gregorianDay[0] - 1) ? 31 : 30; // Days in leapMonth this year, previous Gregorian year
+            leapMonth = isGregorianLeapYear(gregorianYear - 1) ? 31 : 30; // Days in leapMonth this year, previous Gregorian year
             yday += leapMonth + (31 * 5) + (30 * 3) + 10;
         } else {
-            leapMonth = isGregorianLeap(gregorianDay[0]) ? 31 : 30; // Days in leapMonth this year
+            leapMonth = isGregorianLeapYear(gregorianYear) ? 31 : 30; // Days in leapMonth this year
             yday -= INDIAN_YEAR_START;
         }
 
@@ -465,19 +465,19 @@
      * @param month  The month according to Indian calendar (between 1 to 12)
      * @param date   The date in month 
      */
-    private static double IndianToJD(int year, int month, int date) {
+    private double IndianToJD(int year, int month, int date) {
        int leapMonth, gyear, m;
        double start, jd;
 
        gyear = year + INDIAN_ERA_START;
 
 
-       if(isGregorianLeap(gyear)) {
+       if(isGregorianLeapYear(gyear)) {
           leapMonth = 31;
-          start = gregorianToJD(gyear, 3, 21);
+          start = gregorianToJD(gyear, 2 /* third month in 0 based */, 21);
        } else {
           leapMonth = 30;
-          start = gregorianToJD(gyear, 3, 22);
+          start = gregorianToJD(gyear, 2 /* third month in 0 based */, 22);
        }
 
        if (month == 1) {
@@ -504,74 +504,10 @@
      * @param month  The month according to Gregorian calendar (between 0 to 11)
      * @param date   The date in month 
      */
-    private static double gregorianToJD(int year, int month, int date) {
-       double JULIAN_EPOCH = 1721425.5;
-       int y = year - 1;
-       int result = (365 * y)
-                  + (y / 4)
-                  - (y / 100)
-                  + (y / 400)
-                  + (((367 * month) - 362) / 12)
-                  + ((month <= 2) ? 0 : (isGregorianLeap(year) ? -1 : -2))
-                  + date;
-       return result - 1 + JULIAN_EPOCH;
-    }
-    
-    /*
-     * The following function is not needed for basic calendar functioning.
-     * This routine converts a julian day (jd) to the corresponding date in Gregorian calendar"
-     * @param jd The Julian date in Julian Calendar which is to be converted to Indian date"
-     */
-    private static int[] jdToGregorian(double jd) {
-       double JULIAN_EPOCH = 1721425.5;
-       double wjd, depoch, quadricent, dqc, cent, dcent, quad, dquad, yindex, yearday, leapadj;
-       int year, month, day;
-       
-       wjd = Math.floor(jd - 0.5) + 0.5;
-       depoch = wjd - JULIAN_EPOCH;
-       quadricent = Math.floor(depoch / 146097);
-       dqc = depoch % 146097;
-       cent = Math.floor(dqc / 36524);
-       dcent = dqc % 36524;
-       quad = Math.floor(dcent / 1461);
-       dquad = dcent % 1461;
-       yindex = Math.floor(dquad / 365);
-       year = (int)((quadricent * 400) + (cent * 100) + (quad * 4) + yindex);
-       
-       if (!((cent == 4) || (yindex == 4))) {
-          year++;
-       }
-       
-       yearday = wjd - gregorianToJD(year, 1, 1);
-       leapadj = ((wjd < gregorianToJD(year, 3, 1)) ? 0
-             :
-             (isGregorianLeap(year) ? 1 : 2)
-             );
-       
-       month = (int)Math.floor((((yearday + leapadj) * 12) + 373) / 367);
-       day = (int)(wjd - gregorianToJD(year, month, 1)) + 1;
-
-       int[] julianDate = new int[3];
-       
-       julianDate[0] = year;
-       julianDate[1] = month;
-       julianDate[2] = day;
-       
-       return julianDate;
-    }
-    
-    /*
-     * The following function is not needed for basic calendar functioning.
-     * This routine checks if the Gregorian year is a leap year"
-     * @param year      The year in Gregorian Calendar
-     */
-    private static boolean isGregorianLeap(int year)
-    {
-       return ((year % 4) == 0) &&
-          (!(((year % 100) == 0) && ((year % 400) != 0)));
+    private double gregorianToJD(int year, int month, int date) {
+       return computeGregorianMonthStart(year, month) + date - 0.5;
     }
 
-    
     /**
      * {@inheritDoc}
      * @stable ICU 3.8
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/InitialTimeZoneRule.java b/icu4j/main/classes/core/src/com/ibm/icu/util/InitialTimeZoneRule.java
index acb482e..bc0abae 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/InitialTimeZoneRule.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/InitialTimeZoneRule.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2008, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/IslamicCalendar.java b/icu4j/main/classes/core/src/com/ibm/icu/util/IslamicCalendar.java
index f50d49e..e48e799 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/IslamicCalendar.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/IslamicCalendar.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
@@ -215,7 +215,7 @@
      */
     public IslamicCalendar(Locale aLocale)
     {
-        this(TimeZone.getDefault(), aLocale);
+        this(TimeZone.forLocaleOrDefault(aLocale), aLocale);
     }
 
     /**
@@ -227,7 +227,7 @@
      */
     public IslamicCalendar(ULocale locale)
     {
-        this(TimeZone.getDefault(), locale);
+        this(TimeZone.forULocaleOrDefault(locale), locale);
     }
 
     /**
@@ -872,8 +872,8 @@
                 months--;
             }
 
-            year = months / 12 + 1;
-            month = months % 12;
+            year = months >=  0 ? ((months / 12) + 1) : ((months + 1 ) / 12);
+            month = ((months % 12) + 12 ) % 12;
         } else if (cType == CalculationType.ISLAMIC_UMALQURA) {
             long umalquraStartdays = yearStart(UMALQURA_YEAR_START);
             if( days < umalquraStartdays) {
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/JapaneseCalendar.java b/icu4j/main/classes/core/src/com/ibm/icu/util/JapaneseCalendar.java
index 927e2a3..27fe2b3 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/JapaneseCalendar.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/JapaneseCalendar.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/LocaleData.java b/icu4j/main/classes/core/src/com/ibm/icu/util/LocaleData.java
index be06c10..97d5239 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/LocaleData.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/LocaleData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **************************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation,
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/LocaleMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/util/LocaleMatcher.java
index 73a9f4d..114e9ad 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/LocaleMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/LocaleMatcher.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ****************************************************************************************
  * Copyright (C) 2009-2016, Google, Inc.; International Business Machines Corporation
@@ -88,23 +88,20 @@
      * Builder option for whether the language subtag or the script subtag is most important.
      *
      * @see LocaleMatcher.Builder#setFavorSubtag(LocaleMatcher.FavorSubtag)
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public enum FavorSubtag {
         /**
          * Language differences are most important, then script differences, then region differences.
          * (This is the default behavior.)
          *
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         LANGUAGE,
         /**
          * Makes script differences matter relatively more than language differences.
          *
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         SCRIPT
     }
@@ -114,15 +111,13 @@
      * earlier ones are preferred.
      *
      * @see LocaleMatcher.Builder#setDemotionPerDesiredLocale(LocaleMatcher.Demotion)
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public enum Demotion {
         /**
          * All desired locales are treated equally.
          *
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         NONE,
         /**
@@ -149,8 +144,7 @@
          *        this is possible in future versions of the data.)
          * </ul>
          *
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         REGION
     }
@@ -194,8 +188,7 @@
     /**
      * Data for the best-matching pair of a desired and a supported locale.
      *
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public static final class Result {
         private final ULocale desiredULocale;
@@ -221,8 +214,7 @@
          * null if the list of desired locales is empty or if none matched well enough.
          *
          * @return the best-matching desired locale, or null.
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         public ULocale getDesiredULocale() {
             return desiredULocale == null && desiredLocale != null ?
@@ -233,8 +225,7 @@
          * null if the list of desired locales is empty or if none matched well enough.
          *
          * @return the best-matching desired locale, or null.
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         public Locale getDesiredLocale() {
             return desiredLocale == null && desiredULocale != null ?
@@ -244,23 +235,21 @@
         /**
          * Returns the best-matching supported locale.
          * If none matched well enough, this is the default locale.
-         * The default locale is null if the list of supported locales is empty and
-         * no explicit default locale is set.
+         * The default locale is null if {@link Builder#setNoDefaultLocale()} was called,
+         * or if the list of supported locales is empty and no explicit default locale is set.
          *
          * @return the best-matching supported locale, or null.
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         public ULocale getSupportedULocale() { return supportedULocale; }
         /**
          * Returns the best-matching supported locale.
          * If none matched well enough, this is the default locale.
-         * The default locale is null if the list of supported locales is empty and
-         * no explicit default locale is set.
+         * The default locale is null if {@link Builder#setNoDefaultLocale()} was called,
+         * or if the list of supported locales is empty and no explicit default locale is set.
          *
          * @return the best-matching supported locale, or null.
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         public Locale getSupportedLocale() { return supportedLocale; }
 
@@ -269,8 +258,7 @@
          * -1 if the list of desired locales is empty or if none matched well enough.
          *
          * @return the index of the best-matching desired locale, or -1.
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         public int getDesiredIndex() { return desiredIndex; }
 
@@ -282,8 +270,7 @@
          * -1 if the list of supported locales is empty or if none matched well enough.
          *
          * @return the index of the best-matching supported locale, or -1.
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         public int getSupportedIndex() { return supportedIndex; }
 
@@ -297,8 +284,7 @@
          * <p>Example: desired=ar-SA-u-nu-latn, supported=ar-EG, resolved locale=ar-SA-u-nu-latn
          *
          * @return a locale combining the best-matching desired and supported locales.
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         public ULocale makeResolvedULocale() {
             ULocale bestDesired = getDesiredULocale();
@@ -343,8 +329,7 @@
          * <p>Example: desired=ar-SA-u-nu-latn, supported=ar-EG, resolved locale=ar-SA-u-nu-latn
          *
          * @return a locale combining the best-matching desired and supported locales.
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         public Locale makeResolvedLocale() {
             ULocale resolved = makeResolvedULocale();
@@ -374,16 +359,18 @@
      * LocaleMatcher Builder.
      *
      * @see LocaleMatcher#builder()
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public static final class Builder {
         private List<ULocale> supportedLocales;
         private int thresholdDistance = -1;
         private Demotion demotion;
         private ULocale defaultLocale;
+        private boolean withDefault = true;
         private FavorSubtag favor;
         private Direction direction;
+        private ULocale maxDistanceDesired;
+        private ULocale maxDistanceSupported;
 
         private Builder() {}
 
@@ -394,8 +381,7 @@
          *
          * @param locales the string of locales to set, to be parsed like LocalePriorityList does
          * @return this Builder object
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         public Builder setSupportedLocales(String locales) {
             return setSupportedULocales(LocalePriorityList.add(locales).build().getULocales());
@@ -408,8 +394,7 @@
          *
          * @param locales the list of locales
          * @return this Builder object
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         public Builder setSupportedULocales(Collection<ULocale> locales) {
             supportedLocales = new ArrayList<>(locales);
@@ -423,8 +408,7 @@
          *
          * @param locales the list of locale
          * @return this Builder object
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         public Builder setSupportedLocales(Collection<Locale> locales) {
             supportedLocales = new ArrayList<>(locales.size());
@@ -440,8 +424,7 @@
          *
          * @param locale another locale
          * @return this Builder object
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         public Builder addSupportedULocale(ULocale locale) {
             if (supportedLocales == null) {
@@ -457,38 +440,56 @@
          *
          * @param locale another locale
          * @return this Builder object
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         public Builder addSupportedLocale(Locale locale) {
             return addSupportedULocale(ULocale.forLocale(locale));
         }
 
         /**
-         * Sets the default locale; if null, or if it is not set explicitly,
-         * then the first supported locale is used as the default locale.
+         * Sets no default locale.
+         * There will be no explicit or implicit default locale.
+         * If there is no good match, then the matcher will return null for the
+         * best supported locale.
          *
-         * @param defaultLocale the default locale
-         * @return this Builder object
-         * @draft ICU 65
+         * @draft ICU 68
          * @provisional This API might change or be removed in a future release.
          */
-        public Builder setDefaultULocale(ULocale defaultLocale) {
-            this.defaultLocale = defaultLocale;
+        public Builder setNoDefaultLocale() {
+            this.defaultLocale = null;
+            withDefault = false;
             return this;
         }
 
         /**
          * Sets the default locale; if null, or if it is not set explicitly,
          * then the first supported locale is used as the default locale.
+         * There is no default locale at all (null will be returned instead)
+         * if {@link #setNoDefaultLocale()} is called.
          *
          * @param defaultLocale the default locale
          * @return this Builder object
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
+         */
+        public Builder setDefaultULocale(ULocale defaultLocale) {
+            this.defaultLocale = defaultLocale;
+            withDefault = true;
+            return this;
+        }
+
+        /**
+         * Sets the default locale; if null, or if it is not set explicitly,
+         * then the first supported locale is used as the default locale.
+         * There is no default locale at all (null will be returned instead)
+         * if {@link #setNoDefaultLocale()} is called.
+         *
+         * @param defaultLocale the default locale
+         * @return this Builder object
+         * @stable ICU 65
          */
         public Builder setDefaultLocale(Locale defaultLocale) {
             this.defaultLocale = ULocale.forLocale(defaultLocale);
+            withDefault = true;
             return this;
         }
 
@@ -499,8 +500,7 @@
          *
          * @param subtag the subtag to favor
          * @return this Builder object
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         public Builder setFavorSubtag(FavorSubtag subtag) {
             this.favor = subtag;
@@ -513,8 +513,7 @@
          *
          * @param demotion the demotion per desired locale to set.
          * @return this Builder object
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         public Builder setDemotionPerDesiredLocale(Demotion demotion) {
             this.demotion = demotion;
@@ -536,6 +535,66 @@
         }
 
         /**
+         * Sets the maximum distance for an acceptable match.
+         * The matcher will return a match for a pair of locales only if
+         * they match at least as well as the pair given here.
+         *
+         * <p>For example, setMaxDistance(en-US, en-GB) limits matches to ones where the
+         * (desired, support) locales have a distance no greater than a region subtag difference.
+         * This is much stricter than the CLDR default.
+         *
+         * <p>The details of locale matching are subject to changes in
+         * CLDR data and in the algorithm.
+         * Specifying a maximum distance in relative terms via a sample pair of locales
+         * insulates from changes that affect all distance metrics similarly,
+         * but some changes will necessarily affect relative distances between
+         * different pairs of locales.
+         *
+         * @param desired the desired locale for distance comparison.
+         * @param supported the supported locale for distance comparison.
+         * @return this Builder object
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        public Builder setMaxDistance(Locale desired, Locale supported) {
+            if (desired == null || supported == null) {
+                throw new IllegalArgumentException("desired/supported locales must not be null");
+            }
+            return setMaxDistance(ULocale.forLocale(desired), ULocale.forLocale(supported));
+        }
+
+        /**
+         * Sets the maximum distance for an acceptable match.
+         * The matcher will return a match for a pair of locales only if
+         * they match at least as well as the pair given here.
+         *
+         * <p>For example, setMaxDistance(en-US, en-GB) limits matches to ones where the
+         * (desired, support) locales have a distance no greater than a region subtag difference.
+         * This is much stricter than the CLDR default.
+         *
+         * <p>The details of locale matching are subject to changes in
+         * CLDR data and in the algorithm.
+         * Specifying a maximum distance in relative terms via a sample pair of locales
+         * insulates from changes that affect all distance metrics similarly,
+         * but some changes will necessarily affect relative distances between
+         * different pairs of locales.
+         *
+         * @param desired the desired locale for distance comparison.
+         * @param supported the supported locale for distance comparison.
+         * @return this Builder object
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        public Builder setMaxDistance(ULocale desired, ULocale supported) {
+            if (desired == null || supported == null) {
+                throw new IllegalArgumentException("desired/supported locales must not be null");
+            }
+            maxDistanceDesired = desired;
+            maxDistanceSupported = supported;
+            return this;
+        }
+
+        /**
          * <i>Internal only!</i>
          *
          * @param thresholdDistance the thresholdDistance to set, with -1 = default
@@ -557,8 +616,7 @@
          * This builder can continue to be used.
          *
          * @return new LocaleMatcher.
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         public LocaleMatcher build() {
             return new LocaleMatcher(this);
@@ -566,8 +624,7 @@
 
         /**
          * {@inheritDoc}
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         @Override
         public String toString() {
@@ -595,8 +652,7 @@
      * Returns a builder used in chaining parameters for building a LocaleMatcher.
      *
      * @return a new Builder object
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public static Builder builder() {
         return new Builder();
@@ -628,8 +684,6 @@
     }
 
     private LocaleMatcher(Builder builder) {
-        thresholdDistance = builder.thresholdDistance < 0 ?
-                LocaleDistance.INSTANCE.getDefaultScriptDistance() : builder.thresholdDistance;
         ULocale udef = builder.defaultLocale;
         Locale def = null;
         LSR defLSR = null;
@@ -673,13 +727,14 @@
         i = 0;
         for (ULocale locale : supportedULocales) {
             LSR lsr = lsrs[i];
-            if (defLSR == null) {
+            if (defLSR == null && builder.withDefault) {
+                // Implicit default locale = first supported locale, if not turned off.
                 assert i == 0;
                 udef = locale;
                 def = supportedLocales[0];
                 defLSR = lsr;
                 suppLength = putIfAbsent(lsr, 0, suppLength);
-            } else if (lsr.isEquivalentTo(defLSR)) {
+            } else if (defLSR != null && lsr.isEquivalentTo(defLSR)) {
                 suppLength = putIfAbsent(lsr, i, suppLength);
             } else if (LocaleDistance.INSTANCE.isParadigmLSR(lsr)) {
                 order[i] = 2;
@@ -714,6 +769,22 @@
                     LocaleDistance.INSTANCE.getDefaultDemotionPerDesiredLocale();  // null or REGION
         favorSubtag = builder.favor;
         direction = builder.direction;
+
+        int threshold;
+        if (builder.thresholdDistance >= 0) {
+            threshold = builder.thresholdDistance;
+        } else if (builder.maxDistanceDesired != null) {
+            int indexAndDistance = LocaleDistance.INSTANCE.getBestIndexAndDistance(
+                    getMaximalLsrOrUnd(builder.maxDistanceDesired),
+                    new LSR[] { getMaximalLsrOrUnd(builder.maxDistanceSupported) }, 1,
+                    LocaleDistance.shiftDistance(100), favorSubtag, direction);
+            // +1 for an exclusive threshold from an inclusive max.
+            threshold = LocaleDistance.getDistanceFloor(indexAndDistance) + 1;
+        } else {
+            threshold = LocaleDistance.INSTANCE.getDefaultScriptDistance();
+        }
+        thresholdDistance = threshold;
+
         if (TRACE_MATCHER) {
             System.err.printf("new LocaleMatcher: %s\n", toString());
         }
@@ -846,8 +917,7 @@
      *
      * @param desiredLocale Typically a user's language.
      * @return the best-matching supported locale.
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public Locale getBestLocale(Locale desiredLocale) {
         LSR desiredLSR = getMaximalLsrOrUnd(desiredLocale);
@@ -860,8 +930,7 @@
      *
      * @param desiredLocales Typically a user's languages, in order of preference (descending).
      * @return the best-matching supported locale.
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public Locale getBestLocale(Iterable<Locale> desiredLocales) {
         Iterator<Locale> desiredIter = desiredLocales.iterator();
@@ -908,8 +977,7 @@
      *
      * @param desiredLocale Typically a user's language.
      * @return the best-matching pair of the desired and a supported locale.
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public Result getBestMatchResult(ULocale desiredLocale) {
         LSR desiredLSR = getMaximalLsrOrUnd(desiredLocale);
@@ -922,8 +990,7 @@
      *
      * @param desiredLocales Typically a user's languages, in order of preference (descending).
      * @return the best-matching pair of a desired and a supported locale.
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public Result getBestMatchResult(Iterable<ULocale> desiredLocales) {
         Iterator<ULocale> desiredIter = desiredLocales.iterator();
@@ -941,8 +1008,7 @@
      *
      * @param desiredLocale Typically a user's language.
      * @return the best-matching pair of the desired and a supported locale.
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public Result getBestLocaleResult(Locale desiredLocale) {
         LSR desiredLSR = getMaximalLsrOrUnd(desiredLocale);
@@ -955,8 +1021,7 @@
      *
      * @param desiredLocales Typically a user's languages, in order of preference (descending).
      * @return the best-matching pair of a desired and a supported locale.
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public Result getBestLocaleResult(Iterable<Locale> desiredLocales) {
         Iterator<Locale> desiredIter = desiredLocales.iterator();
@@ -1029,6 +1094,44 @@
     }
 
     /**
+     * Returns true if the pair of locales matches acceptably.
+     * This is influenced by Builder options such as setDirection(), setFavorSubtag(),
+     * and setMaxDistance().
+     *
+     * @param desired The desired locale.
+     * @param supported The supported locale.
+     * @return true if the pair of locales matches acceptably.
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isMatch(Locale desired, Locale supported) {
+        int indexAndDistance = LocaleDistance.INSTANCE.getBestIndexAndDistance(
+                getMaximalLsrOrUnd(desired),
+                new LSR[] { getMaximalLsrOrUnd(supported) }, 1,
+                LocaleDistance.shiftDistance(thresholdDistance), favorSubtag, direction);
+        return indexAndDistance >= 0;
+    }
+
+    /**
+     * Returns true if the pair of locales matches acceptably.
+     * This is influenced by Builder options such as setDirection(), setFavorSubtag(),
+     * and setMaxDistance().
+     *
+     * @param desired The desired locale.
+     * @param supported The supported locale.
+     * @return true if the pair of locales matches acceptably.
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isMatch(ULocale desired, ULocale supported) {
+        int indexAndDistance = LocaleDistance.INSTANCE.getBestIndexAndDistance(
+                getMaximalLsrOrUnd(desired),
+                new LSR[] { getMaximalLsrOrUnd(supported) }, 1,
+                LocaleDistance.shiftDistance(thresholdDistance), favorSubtag, direction);
+        return indexAndDistance >= 0;
+    }
+
+    /**
      * Returns a fraction between 0 and 1, where 1 means that the languages are a
      * perfect match, and 0 means that they are completely different.
      *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/LocalePriorityList.java b/icu4j/main/classes/core/src/com/ibm/icu/util/LocalePriorityList.java
index bce7a14..555f709 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/LocalePriorityList.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/LocalePriorityList.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2010-2016, Google, Inc.; International Business Machines      *
@@ -142,8 +142,7 @@
      * The set has the same iteration order as this object itself.
      *
      * @return the locales
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public Set<ULocale> getULocales() {
         return languagesAndWeights.keySet();
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/Measure.java b/icu4j/main/classes/core/src/com/ibm/icu/util/Measure.java
index 3e90a85..22b98f9 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/Measure.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/Measure.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2004-2013, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java b/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java
index 356ca99..e3de81b 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2016, Google Inc, International Business Machines
@@ -14,19 +14,23 @@
 import java.io.ObjectOutput;
 import java.io.ObjectStreamException;
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 import com.ibm.icu.impl.CollectionSet;
 import com.ibm.icu.impl.ICUData;
 import com.ibm.icu.impl.ICUResourceBundle;
-import com.ibm.icu.impl.Pair;
 import com.ibm.icu.impl.UResource;
+import com.ibm.icu.impl.units.MeasureUnitImpl;
+import com.ibm.icu.impl.units.SingleUnitImpl;
 import com.ibm.icu.text.UnicodeSet;
 
+
 /**
  * A unit such as length, mass, volume, currency, etc.  A unit is
  * coupled with a numeric amount to produce a Measure. MeasureUnit objects are immutable.
@@ -48,6 +52,7 @@
     private static boolean cacheIsPopulated = false;
 
     /**
+     * If type set to null, measureUnitImpl is in use instead of type and subType.
      * @internal
      * @deprecated This API is ICU internal only.
      */
@@ -55,6 +60,7 @@
     protected final String type;
 
     /**
+     * If subType set to null, measureUnitImpl is in use instead of type and subType.
      * @internal
      * @deprecated This API is ICU internal only.
      */
@@ -62,6 +68,261 @@
     protected final String subType;
 
     /**
+     * Used by new draft APIs in ICU 68.
+     *
+     * @internal
+     */
+    private MeasureUnitImpl measureUnitImpl;
+
+    /**
+     * Enumeration for unit complexity. There are three levels:
+     * <p>
+     * - SINGLE: A single unit, optionally with a power and/or SI prefix. Examples: hectare,
+     * square-kilometer, kilojoule, one-per-second.
+     * - COMPOUND: A unit composed of the product of multiple single units. Examples:
+     * meter-per-second, kilowatt-hour, kilogram-meter-per-square-second.
+     * - MIXED: A unit composed of the sum of multiple single units. Examples: foot-and-inch,
+     * hour-and-minute-and-second, degree-and-arcminute-and-arcsecond.
+     * <p>
+     * The complexity determines which operations are available. For example, you cannot set the power
+     * or SI prefix of a compound unit.
+     *
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public enum Complexity {
+        /**
+         * A single unit, like kilojoule.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        SINGLE,
+
+        /**
+         * A compound unit, like meter-per-second.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        COMPOUND,
+
+        /**
+         * A mixed unit, like hour-and-minute.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        MIXED
+    }
+
+    /**
+     * Enumeration for SI prefixes, such as "kilo".
+     *
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public enum SIPrefix {
+
+        /**
+         * SI prefix: yotta, 10^24.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        YOTTA(24, "yotta"),
+
+        /**
+         * SI prefix: zetta, 10^21.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        ZETTA(21, "zetta"),
+
+        /**
+         * SI prefix: exa, 10^18.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        EXA(18, "exa"),
+
+        /**
+         * SI prefix: peta, 10^15.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        PETA(15, "peta"),
+
+        /**
+         * SI prefix: tera, 10^12.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        TERA(12, "tera"),
+
+        /**
+         * SI prefix: giga, 10^9.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        GIGA(9, "giga"),
+
+        /**
+         * SI prefix: mega, 10^6.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        MEGA(6, "mega"),
+
+        /**
+         * SI prefix: kilo, 10^3.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        KILO(3, "kilo"),
+
+        /**
+         * SI prefix: hecto, 10^2.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        HECTO(2, "hecto"),
+
+        /**
+         * SI prefix: deka, 10^1.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        DEKA(1, "deka"),
+
+        /**
+         * The absence of an SI prefix.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        ONE(0, ""),
+
+        /**
+         * SI prefix: deci, 10^-1.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        DECI(-1, "deci"),
+
+        /**
+         * SI prefix: centi, 10^-2.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        CENTI(-2, "centi"),
+
+        /**
+         * SI prefix: milli, 10^-3.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        MILLI(-3, "milli"),
+
+        /**
+         * SI prefix: micro, 10^-6.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        MICRO(-6, "micro"),
+
+        /**
+         * SI prefix: nano, 10^-9.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        NANO(-9, "nano"),
+
+        /**
+         * SI prefix: pico, 10^-12.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        PICO(-12, "pico"),
+
+        /**
+         * SI prefix: femto, 10^-15.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        FEMTO(-15, "femto"),
+
+        /**
+         * SI prefix: atto, 10^-18.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        ATTO(-18, "atto"),
+
+        /**
+         * SI prefix: zepto, 10^-21.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        ZEPTO(-21, "zepto"),
+
+        /**
+         * SI prefix: yocto, 10^-24.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        YOCTO(-24, "yocto");
+
+        private final int power;
+        private final String identifier;
+
+        SIPrefix(int power, String identifier) {
+            this.power = power;
+            this.identifier = identifier;
+        }
+
+        /**
+         * Returns the identifier of the prefix.
+         *
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        @Deprecated
+        public String getIdentifier() {
+            return identifier;
+        }
+
+        /**
+         * Returns the power of 10 of the prefix. For example, if the prefix is "centi", the power will be -2.
+         *
+         * @draft ICU 68
+         * @provisional This API might change or be removed in a future release.
+         */
+        public int getPower() {
+            return power;
+        }
+    }
+
+    /**
      * @internal
      * @deprecated This API is ICU internal only.
      */
@@ -72,7 +333,54 @@
     }
 
     /**
-     * Get the type, such as "length"
+     * Construct a MeasureUnit from a CLDR Unit Identifier, defined in UTS 35.
+     * Validates and canonicalizes the identifier.
+     *
+     * Note: dimensionless <code>MeasureUnit</code> is <code>null</code>
+     *
+     * <pre>
+     * MeasureUnit example = MeasureUnit::forIdentifier("furlong-per-nanosecond")
+     * </pre>
+     *
+     * @param identifier The CLDR Sequence Unit Identifier
+     * @throws IllegalArgumentException if the identifier is invalid.
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static MeasureUnit forIdentifier(String identifier) {
+        if (identifier == null || identifier.isEmpty()) {
+            return NoUnit.BASE;
+        }
+
+        return MeasureUnitImpl.forIdentifier(identifier).build();
+    }
+
+    /**
+     * @internal
+     * @deprecated Internal API for ICU use only.
+     */
+    @Deprecated
+    public static MeasureUnit fromMeasureUnitImpl(MeasureUnitImpl measureUnitImpl) {
+        measureUnitImpl.serialize();
+        String identifier = measureUnitImpl.getIdentifier();
+        MeasureUnit result = MeasureUnit.findBySubType(identifier);
+        if (result != null) {
+            return result;
+        }
+
+        return new MeasureUnit(measureUnitImpl);
+    }
+
+    private MeasureUnit(MeasureUnitImpl measureUnitImpl) {
+        type = null;
+        subType = null;
+        this.measureUnitImpl = measureUnitImpl.copy();
+    }
+
+
+
+    /**
+     * Get the type, such as "length". May return null.
      *
      * @stable ICU 53
      */
@@ -82,7 +390,7 @@
 
 
     /**
-     * Get the subType, such as “foot”.
+     * Get the subType, such as “foot”. May return null.
      *
      * @stable ICU 53
      */
@@ -90,7 +398,187 @@
         return subType;
     }
 
+    /**
+     * Gets the CLDR Unit Identifier for this MeasureUnit, as defined in UTS 35.
+     *
+     * @return The string form of this unit.
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getIdentifier() {
+        String result = measureUnitImpl == null ? getSubtype() : measureUnitImpl.getIdentifier();
+        return result == null ? "" : result;
+    }
 
+    /**
+     * Compute the complexity of the unit. See Complexity for more information.
+     *
+     * @return The unit complexity.
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Complexity getComplexity() {
+        if (measureUnitImpl == null) {
+            return MeasureUnitImpl.forIdentifier(getIdentifier()).getComplexity();
+        }
+
+        return measureUnitImpl.getComplexity();
+    }
+
+    /**
+     * Creates a MeasureUnit which is this SINGLE unit augmented with the specified SI prefix.
+     * For example, SI_PREFIX_KILO for "kilo".
+     * May return this if this unit already has that prefix.
+     * <p>
+     * There is sufficient locale data to format all standard SI prefixes.
+     * <p>
+     * NOTE: Only works on SINGLE units. If this is a COMPOUND or MIXED unit, an error will
+     * occur. For more information, see `Complexity`.
+     *
+     * @param prefix The SI prefix, from SIPrefix.
+     * @return A new SINGLE unit.
+     * @throws UnsupportedOperationException if this unit is a COMPOUND or MIXED unit.
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public MeasureUnit withSIPrefix(SIPrefix prefix) {
+        SingleUnitImpl singleUnit = getSingleUnitImpl();
+        singleUnit.setSiPrefix(prefix);
+        return singleUnit.build();
+    }
+
+    /**
+     * Returns the current SI prefix of this SINGLE unit. For example, if the unit has the SI prefix
+     * "kilo", then SI_PREFIX_KILO is returned.
+     * <p>
+     * NOTE: Only works on SINGLE units. If this is a COMPOUND or MIXED unit, an error will
+     * occur. For more information, see `Complexity`.
+     *
+     * @return The SI prefix of this SINGLE unit, from SIPrefix.
+     * @throws UnsupportedOperationException if the unit is COMPOUND or MIXED.
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public SIPrefix getSIPrefix() {
+        return getSingleUnitImpl().getSiPrefix();
+    }
+
+    /**
+     * Returns the dimensionality (power) of this MeasureUnit. For example, if the unit is square,
+     * then 2 is returned.
+     * <p>
+     * NOTE: Only works on SINGLE units. If this is a COMPOUND or MIXED unit, an exception will be thrown.
+     * For more information, see `Complexity`.
+     *
+     * @return The dimensionality (power) of this simple unit.
+     * @throws UnsupportedOperationException if the unit is COMPOUND or MIXED.
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getDimensionality() {
+        return getSingleUnitImpl().getDimensionality();
+    }
+
+    /**
+     * Creates a MeasureUnit which is this SINGLE unit augmented with the specified dimensionality
+     * (power). For example, if dimensionality is 2, the unit will be squared.
+     * <p>
+     * NOTE: Only works on SINGLE units. If this is a COMPOUND or MIXED unit, an exception is thrown.
+     * For more information, see `Complexity`.
+     *
+     * @param dimensionality The dimensionality (power).
+     * @return A new SINGLE unit.
+     * @throws UnsupportedOperationException if the unit is COMPOUND or MIXED.
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public MeasureUnit withDimensionality(int dimensionality) {
+        SingleUnitImpl singleUnit = getSingleUnitImpl();
+        singleUnit.setDimensionality(dimensionality);
+        return singleUnit.build();
+    }
+
+    /**
+     * Computes the reciprocal of this MeasureUnit, with the numerator and denominator flipped.
+     * <p>
+     * For example, if the receiver is "meter-per-second", the unit "second-per-meter" is returned.
+     * <p>
+     * NOTE: Only works on SINGLE and COMPOUND units. If this is a MIXED unit, an error will
+     * occur. For more information, see `Complexity`.
+     *
+     * @return The reciprocal of the target unit.
+     * @throws UnsupportedOperationException if the unit is MIXED.
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public MeasureUnit reciprocal() {
+        MeasureUnitImpl measureUnit = getCopyOfMeasureUnitImpl();
+        measureUnit.takeReciprocal();
+        return measureUnit.build();
+    }
+
+    /**
+     * Computes the product of this unit with another unit. This is a way to build units from
+     * constituent parts.
+     * <p>
+     * The numerator and denominator are preserved through this operation.
+     * <p>
+     * For example, if the receiver is "kilowatt" and the argument is "hour-per-day", then the
+     * unit "kilowatt-hour-per-day" is returned.
+     * <p>
+     * NOTE: Only works on SINGLE and COMPOUND units. If either unit (receivee and argument) is a
+     * MIXED unit, an error will occur. For more information, see `Complexity`.
+     *
+     * @param other The MeasureUnit to multiply with the target.
+     * @return The product of the target unit with the provided unit.
+     * @throws UnsupportedOperationException if the unit is MIXED.
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public MeasureUnit product(MeasureUnit other) {
+        MeasureUnitImpl implCopy = getCopyOfMeasureUnitImpl();
+
+        if (other == null /* dimensionless */) {
+            return implCopy.build();
+        }
+
+        final MeasureUnitImpl otherImplRef = other.getMayBeReferenceOfMeasureUnitImpl();
+        if (implCopy.getComplexity() == Complexity.MIXED || otherImplRef.getComplexity() == Complexity.MIXED) {
+            throw new UnsupportedOperationException();
+        }
+
+        for (SingleUnitImpl singleUnit :
+                otherImplRef.getSingleUnits()) {
+            implCopy.appendSingleUnit(singleUnit);
+        }
+
+        return implCopy.build();
+    }
+
+    /**
+     * Returns the list of SINGLE units contained within a sequence of COMPOUND units.
+     * <p>
+     * Examples:
+     * - Given "meter-kilogram-per-second", three units will be returned: "meter",
+     * "kilogram", and "one-per-second".
+     * - Given "hour+minute+second", three units will be returned: "hour", "minute",
+     * and "second".
+     * <p>
+     * If this is a SINGLE unit, a list of length 1 will be returned.
+     *
+     * @return An unmodifiable list of single units
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+     */
+    public List<MeasureUnit> splitToSingleUnits() {
+        final ArrayList<SingleUnitImpl> singleUnits = getMayBeReferenceOfMeasureUnitImpl().getSingleUnits();
+        List<MeasureUnit> result = new ArrayList<>(singleUnits.size());
+        for (SingleUnitImpl singleUnit : singleUnits) {
+            result.add(singleUnit.build());
+        }
+
+        return result;
+    }
 
     /**
      * {@inheritDoc}
@@ -115,8 +603,8 @@
         if (!(rhs instanceof MeasureUnit)) {
             return false;
         }
-        MeasureUnit c = (MeasureUnit) rhs;
-        return type.equals(c.type) && subType.equals(c.subType);
+
+        return this.getIdentifier().equals(((MeasureUnit) rhs).getIdentifier());
     }
 
     /**
@@ -197,8 +685,6 @@
             factory = CURRENCY_FACTORY;
         } else if ("duration".equals(type)) {
             factory = TIMEUNIT_FACTORY;
-        } else if ("none".equals(type)) {
-            factory = NOUNIT_FACTORY;
         } else {
             factory = UNIT_FACTORY;
         }
@@ -215,47 +701,6 @@
         return null;
     }
 
-    /**
-     * For ICU use only.
-     * @internal
-     * @deprecated This API is ICU internal only.
-     */
-    @Deprecated
-    public static MeasureUnit[] parseCoreUnitIdentifier(String coreUnitIdentifier) {
-        // First search for the whole code unit identifier as a subType
-        MeasureUnit whole = findBySubType(coreUnitIdentifier);
-        if (whole != null) {
-            return new MeasureUnit[] { whole }; // found a numerator but not denominator
-        }
-
-        // If not found, try breaking apart numerator and denominator
-        int perIdx = coreUnitIdentifier.indexOf("-per-");
-        if (perIdx == -1) {
-            // String does not contain "-per-"
-            return null;
-        }
-        String numeratorStr = coreUnitIdentifier.substring(0, perIdx);
-        String denominatorStr = coreUnitIdentifier.substring(perIdx + 5);
-        MeasureUnit numerator = findBySubType(numeratorStr);
-        MeasureUnit denominator = findBySubType(denominatorStr);
-        if (numerator != null && denominator != null) {
-            return new MeasureUnit[] { numerator, denominator }; // found both a numerator and denominator
-        }
-
-        // The numerator or denominator were invalid
-        return null;
-    }
-
-    /**
-     * For ICU use only.
-     * @internal
-     * @deprecated This API is ICU internal only.
-     */
-    @Deprecated
-    public static MeasureUnit resolveUnitPerUnit(MeasureUnit unit, MeasureUnit perUnit) {
-        return unitPerUnitToSingleUnit.get(Pair.of(unit, perUnit));
-    }
-
     static final UnicodeSet ASCII = new UnicodeSet('a', 'z').freeze();
     static final UnicodeSet ASCII_HYPHEN_DIGITS = new UnicodeSet('-', '-', '0', '9', 'a', 'z').freeze();
 
@@ -294,13 +739,6 @@
         }
     };
 
-    static Factory NOUNIT_FACTORY = new Factory() {
-        @Override
-        public MeasureUnit create(String type, String subType) {
-           return new NoUnit(subType);
-        }
-    };
-
     /**
      * Sink for enumerating the available measure units.
      */
@@ -541,12 +979,6 @@
     public static final MeasureUnit MOLE = MeasureUnit.internalGetInstance("concentr", "mole");
 
     /**
-     * Constant for unit of concentr: permillion
-     * @stable ICU 57
-     */
-    public static final MeasureUnit PART_PER_MILLION = MeasureUnit.internalGetInstance("concentr", "permillion");
-
-    /**
      * Constant for unit of concentr: percent
      * @stable ICU 63
      */
@@ -559,6 +991,12 @@
     public static final MeasureUnit PERMILLE = MeasureUnit.internalGetInstance("concentr", "permille");
 
     /**
+     * Constant for unit of concentr: permillion
+     * @stable ICU 57
+     */
+    public static final MeasureUnit PART_PER_MILLION = MeasureUnit.internalGetInstance("concentr", "permillion");
+
+    /**
      * Constant for unit of concentr: permyriad
      * @stable ICU 64
      */
@@ -674,8 +1112,7 @@
 
     /**
      * Constant for unit of duration: decade
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public static final MeasureUnit DECADE = MeasureUnit.internalGetInstance("duration", "decade");
 
@@ -825,8 +1262,7 @@
 
     /**
      * Constant for unit of energy: therm-us
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public static final MeasureUnit THERM_US = MeasureUnit.internalGetInstance("energy", "therm-us");
 
@@ -867,51 +1303,51 @@
     public static final MeasureUnit MEGAHERTZ = MeasureUnit.internalGetInstance("frequency", "megahertz");
 
     /**
-     * Constant for unit of graphics: dot-per-centimeter
-     * @draft ICU 65
+     * Constant for unit of graphics: dot
+     * @draft ICU 68
      * @provisional This API might change or be removed in a future release.
+    */
+    public static final MeasureUnit DOT = MeasureUnit.internalGetInstance("graphics", "dot");
+
+    /**
+     * Constant for unit of graphics: dot-per-centimeter
+     * @stable ICU 65
      */
     public static final MeasureUnit DOT_PER_CENTIMETER = MeasureUnit.internalGetInstance("graphics", "dot-per-centimeter");
 
     /**
      * Constant for unit of graphics: dot-per-inch
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public static final MeasureUnit DOT_PER_INCH = MeasureUnit.internalGetInstance("graphics", "dot-per-inch");
 
     /**
      * Constant for unit of graphics: em
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public static final MeasureUnit EM = MeasureUnit.internalGetInstance("graphics", "em");
 
     /**
      * Constant for unit of graphics: megapixel
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public static final MeasureUnit MEGAPIXEL = MeasureUnit.internalGetInstance("graphics", "megapixel");
 
     /**
      * Constant for unit of graphics: pixel
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public static final MeasureUnit PIXEL = MeasureUnit.internalGetInstance("graphics", "pixel");
 
     /**
      * Constant for unit of graphics: pixel-per-centimeter
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public static final MeasureUnit PIXEL_PER_CENTIMETER = MeasureUnit.internalGetInstance("graphics", "pixel-per-centimeter");
 
     /**
      * Constant for unit of graphics: pixel-per-inch
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public static final MeasureUnit PIXEL_PER_INCH = MeasureUnit.internalGetInstance("graphics", "pixel-per-inch");
 
@@ -934,6 +1370,13 @@
     public static final MeasureUnit DECIMETER = MeasureUnit.internalGetInstance("length", "decimeter");
 
     /**
+     * Constant for unit of length: earth-radius
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+    */
+    public static final MeasureUnit EARTH_RADIUS = MeasureUnit.internalGetInstance("length", "earth-radius");
+
+    /**
      * Constant for unit of length: fathom
      * @stable ICU 54
      */
@@ -1042,6 +1485,20 @@
     public static final MeasureUnit YARD = MeasureUnit.internalGetInstance("length", "yard");
 
     /**
+     * Constant for unit of light: candela
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+    */
+    public static final MeasureUnit CANDELA = MeasureUnit.internalGetInstance("light", "candela");
+
+    /**
+     * Constant for unit of light: lumen
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+    */
+    public static final MeasureUnit LUMEN = MeasureUnit.internalGetInstance("light", "lumen");
+
+    /**
      * Constant for unit of light: lux
      * @stable ICU 54
      */
@@ -1072,6 +1529,13 @@
     public static final MeasureUnit EARTH_MASS = MeasureUnit.internalGetInstance("mass", "earth-mass");
 
     /**
+     * Constant for unit of mass: grain
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+    */
+    public static final MeasureUnit GRAIN = MeasureUnit.internalGetInstance("mass", "grain");
+
+    /**
      * Constant for unit of mass: gram
      * @stable ICU 53
      */
@@ -1181,8 +1645,7 @@
 
     /**
      * Constant for unit of pressure: bar
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public static final MeasureUnit BAR = MeasureUnit.internalGetInstance("pressure", "bar");
 
@@ -1224,8 +1687,7 @@
 
     /**
      * Constant for unit of pressure: pascal
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public static final MeasureUnit PASCAL = MeasureUnit.internalGetInstance("pressure", "pascal");
 
@@ -1380,6 +1842,34 @@
     public static final MeasureUnit DECILITER = MeasureUnit.internalGetInstance("volume", "deciliter");
 
     /**
+     * Constant for unit of volume: dessert-spoon
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+    */
+    public static final MeasureUnit DESSERT_SPOON = MeasureUnit.internalGetInstance("volume", "dessert-spoon");
+
+    /**
+     * Constant for unit of volume: dessert-spoon-imperial
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+    */
+    public static final MeasureUnit DESSERT_SPOON_IMPERIAL = MeasureUnit.internalGetInstance("volume", "dessert-spoon-imperial");
+
+    /**
+     * Constant for unit of volume: dram
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+    */
+    public static final MeasureUnit DRAM = MeasureUnit.internalGetInstance("volume", "dram");
+
+    /**
+     * Constant for unit of volume: drop
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+    */
+    public static final MeasureUnit DROP = MeasureUnit.internalGetInstance("volume", "drop");
+
+    /**
      * Constant for unit of volume: fluid-ounce
      * @stable ICU 54
      */
@@ -1410,6 +1900,13 @@
     public static final MeasureUnit HECTOLITER = MeasureUnit.internalGetInstance("volume", "hectoliter");
 
     /**
+     * Constant for unit of volume: jigger
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+    */
+    public static final MeasureUnit JIGGER = MeasureUnit.internalGetInstance("volume", "jigger");
+
+    /**
      * Constant for unit of volume: liter
      * @stable ICU 53
      */
@@ -1428,6 +1925,13 @@
     public static final MeasureUnit MILLILITER = MeasureUnit.internalGetInstance("volume", "milliliter");
 
     /**
+     * Constant for unit of volume: pinch
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+    */
+    public static final MeasureUnit PINCH = MeasureUnit.internalGetInstance("volume", "pinch");
+
+    /**
      * Constant for unit of volume: pint
      * @stable ICU 54
      */
@@ -1446,6 +1950,13 @@
     public static final MeasureUnit QUART = MeasureUnit.internalGetInstance("volume", "quart");
 
     /**
+     * Constant for unit of volume: quart-imperial
+     * @draft ICU 68
+     * @provisional This API might change or be removed in a future release.
+    */
+    public static final MeasureUnit QUART_IMPERIAL = MeasureUnit.internalGetInstance("volume", "quart-imperial");
+
+    /**
      * Constant for unit of volume: tablespoon
      * @stable ICU 54
      */
@@ -1457,21 +1968,7 @@
      */
     public static final MeasureUnit TEASPOON = MeasureUnit.internalGetInstance("volume", "teaspoon");
 
-    private static HashMap<Pair<MeasureUnit, MeasureUnit>, MeasureUnit>unitPerUnitToSingleUnit =
-            new HashMap<>();
-
-    static {
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.LITER, MeasureUnit.KILOMETER), MeasureUnit.LITER_PER_KILOMETER);
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.POUND, MeasureUnit.SQUARE_INCH), MeasureUnit.POUND_PER_SQUARE_INCH);
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.PIXEL, MeasureUnit.CENTIMETER), MeasureUnit.PIXEL_PER_CENTIMETER);
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.MILE, MeasureUnit.HOUR), MeasureUnit.MILE_PER_HOUR);
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.MILLIGRAM, MeasureUnit.DECILITER), MeasureUnit.MILLIGRAM_PER_DECILITER);
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.MILE, MeasureUnit.GALLON_IMPERIAL), MeasureUnit.MILE_PER_GALLON_IMPERIAL);
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.KILOMETER, MeasureUnit.HOUR), MeasureUnit.KILOMETER_PER_HOUR);
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.MILE, MeasureUnit.GALLON), MeasureUnit.MILE_PER_GALLON);
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.PIXEL, MeasureUnit.INCH), MeasureUnit.PIXEL_PER_INCH);
-        unitPerUnitToSingleUnit.put(Pair.<MeasureUnit, MeasureUnit>of(MeasureUnit.METER, MeasureUnit.SECOND), MeasureUnit.METER_PER_SECOND);
-    }
+    // unitPerUnitToSingleUnit no longer in use! TODO: remove from code-generation code.
 
     // End generated MeasureUnit constants
     /* Private */
@@ -1480,6 +1977,39 @@
         return new MeasureUnitProxy(type, subType);
     }
 
+    /**
+     *
+     * @return this object as a SingleUnitImpl.
+     * @throws UnsupportedOperationException if this object could not be converted to a single unit.
+     */
+    private SingleUnitImpl getSingleUnitImpl() {
+        if (measureUnitImpl == null) {
+            return MeasureUnitImpl.forIdentifier(getIdentifier()).getSingleUnitImpl();
+        }
+
+        return measureUnitImpl.getSingleUnitImpl();
+    }
+
+    /**
+     *
+     * @return this object in a MeasureUnitImpl form.
+     */
+    private MeasureUnitImpl getCopyOfMeasureUnitImpl() {
+        return this.measureUnitImpl == null ?
+                MeasureUnitImpl.forIdentifier(getIdentifier()) :
+                this.measureUnitImpl.copy();
+    }
+
+    /**
+     *
+     * @return this object in a MeasureUnitImpl form.
+     */
+    private MeasureUnitImpl getMayBeReferenceOfMeasureUnitImpl(){
+        return this.measureUnitImpl == null ?
+                MeasureUnitImpl.forIdentifier(getIdentifier()) :
+                this.measureUnitImpl;
+    }
+
     static final class MeasureUnitProxy implements Externalizable {
         private static final long serialVersionUID = -3910681415330989598L;
 
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/MutableCodePointTrie.java b/icu4j/main/classes/core/src/com/ibm/icu/util/MutableCodePointTrie.java
index 33262c0..9151124 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/MutableCodePointTrie.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/MutableCodePointTrie.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // created: 2018may04 Markus W. Scherer
 
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/NoUnit.java b/icu4j/main/classes/core/src/com/ibm/icu/util/NoUnit.java
index 7a0aba8..3450a2f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/NoUnit.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/NoUnit.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.util;
 
 import com.ibm.icu.number.NumberFormatter;
@@ -7,47 +7,46 @@
 /**
  * Dimensionless unit for percent and permille.
  * @see NumberFormatter
- * @draft ICU 60
+ * @draft ICU 68
  * @provisional This API might change or be removed in a future release.
  */
-public class NoUnit extends MeasureUnit {
-    private static final long serialVersionUID = 2467174286237024095L;
-
+public final class NoUnit {
     /**
      * Constant for the base unit (dimensionless and no scaling).
      *
-     * @draft ICU 60
+     * Prior to ICU 68, this constant equaled an instance of NoUnit.
+     *
+     * Since ICU 68, this constant equals null.
+     *
+     * @draft ICU 68
      * @provisional This API might change or be removed in a future release.
      */
-    public static final NoUnit BASE =
-        (NoUnit) MeasureUnit.internalGetInstance("none", "base");
+    public static final MeasureUnit BASE = null;
 
     /**
      * Constant for the percent unit, or 1/100 of a base unit.
      *
-     * @draft ICU 60
+     * Prior to ICU 68, this constant equaled an instance of NoUnit.
+     *
+     * Since ICU 68, this constant is equivalent to MeasureUnit.PERCENT.
+     *
+     * @draft ICU 68
      * @provisional This API might change or be removed in a future release.
      */
-    public static final NoUnit PERCENT =
-        (NoUnit) MeasureUnit.internalGetInstance("none", "percent");
+    public static final MeasureUnit PERCENT = MeasureUnit.PERCENT;
 
     /**
      * Constant for the permille unit, or 1/100 of a base unit.
      *
-     * @draft ICU 60
+     * Prior to ICU 68, this constant equaled an instance of NoUnit.
+     *
+     * Since ICU 68, this constant is equivalent to MeasureUnit.PERMILLE.
+     *
+     * @draft ICU 68
      * @provisional This API might change or be removed in a future release.
      */
-    public static final NoUnit PERMILLE =
-        (NoUnit) MeasureUnit.internalGetInstance("none", "permille");
+    public static final MeasureUnit PERMILLE = MeasureUnit.PERMILLE;
 
-
-    /**
-     * Package local constructor. This class is not designed for subclassing
-     * by ICU users.
-     *
-     * @param subType   The unit subtype.
-     */
-    NoUnit(String subType) {
-        super("none", subType);
-    }
+    // This class is a namespace not intended to be instantiated:
+    private NoUnit() {}
 }
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/Output.java b/icu4j/main/classes/core/src/com/ibm/icu/util/Output.java
index 85a5cc4..058d9f0 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/Output.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/Output.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/OutputInt.java b/icu4j/main/classes/core/src/com/ibm/icu/util/OutputInt.java
index 5abec5b..7880675 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/OutputInt.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/OutputInt.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/PersianCalendar.java b/icu4j/main/classes/core/src/com/ibm/icu/util/PersianCalendar.java
index aa8cb83..68919b5 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/PersianCalendar.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/PersianCalendar.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
@@ -138,7 +138,7 @@
     @Deprecated
     public PersianCalendar(Locale aLocale)
     {
-        this(TimeZone.getDefault(), aLocale);
+        this(TimeZone.forLocaleOrDefault(aLocale), aLocale);
     }
 
     /**
@@ -153,7 +153,7 @@
     @Deprecated
     public PersianCalendar(ULocale locale)
     {
-        this(TimeZone.getDefault(), locale);
+        this(TimeZone.forULocaleOrDefault(locale), locale);
     }
 
     /**
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/RangeDateRule.java b/icu4j/main/classes/core/src/com/ibm/icu/util/RangeDateRule.java
index cad5e4c..502490b 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/RangeDateRule.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/RangeDateRule.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/RangeValueIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/util/RangeValueIterator.java
index 54e4853..7525390 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/RangeValueIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/RangeValueIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 1996-2016, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/Region.java b/icu4j/main/classes/core/src/com/ibm/icu/util/Region.java
index 2fabbb0..8ba8aad 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/Region.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/Region.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011-2016, International Business Machines Corporation
@@ -215,7 +215,7 @@
 
         regions = new ArrayList<Region>(regionCodes.size());
 
-        // First process the region codes and create the master array of regions.
+        // First process the region codes and create the primary array of regions.
         for ( String id : regionCodes) {
             Region r = new Region();
             r.id = id;
@@ -244,7 +244,7 @@
                 Region r;
                 if ( regionIDMap.containsKey(aliasFrom) ) {  // This is a deprecated region
                     r = regionIDMap.get(aliasFrom);
-                } else { // Deprecated region code not in the master codes list - so need to create a deprecated region for it.
+                } else { // Deprecated region code not in the primary codes list - so need to create a deprecated region for it.
                     r = new Region();
                     r.id = aliasFrom;
                     regionIDMap.put(aliasFrom, r);
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/RuleBasedTimeZone.java b/icu4j/main/classes/core/src/com/ibm/icu/util/RuleBasedTimeZone.java
index e64c3a7..5e1d35a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/RuleBasedTimeZone.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/RuleBasedTimeZone.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/STZInfo.java b/icu4j/main/classes/core/src/com/ibm/icu/util/STZInfo.java
index 736e05a..2e623fd 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/STZInfo.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/STZInfo.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *   Copyright (C) 2005-2010, International Business Machines
  *   Corporation and others.  All Rights Reserved.
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/SimpleDateRule.java b/icu4j/main/classes/core/src/com/ibm/icu/util/SimpleDateRule.java
index 50106c4..ec00947 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/SimpleDateRule.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/SimpleDateRule.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/SimpleHoliday.java b/icu4j/main/classes/core/src/com/ibm/icu/util/SimpleHoliday.java
index 58a430d..3e3e3fe 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/SimpleHoliday.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/SimpleHoliday.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/SimpleTimeZone.java b/icu4j/main/classes/core/src/com/ibm/icu/util/SimpleTimeZone.java
index 09f47ff..e8b96f5 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/SimpleTimeZone.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/SimpleTimeZone.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
  /*
 *   Copyright (C) 1996-2016, International Business Machines
 *   Corporation and others.  All Rights Reserved.
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/StringTokenizer.java b/icu4j/main/classes/core/src/com/ibm/icu/util/StringTokenizer.java
index fb75977..8715cdb 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/StringTokenizer.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/StringTokenizer.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/StringTrieBuilder.java b/icu4j/main/classes/core/src/com/ibm/icu/util/StringTrieBuilder.java
index df3d74a..766fd54 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/StringTrieBuilder.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/StringTrieBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011-2014, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/TaiwanCalendar.java b/icu4j/main/classes/core/src/com/ibm/icu/util/TaiwanCalendar.java
index 30ec347..0e3087d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/TaiwanCalendar.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/TaiwanCalendar.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/TimeArrayTimeZoneRule.java b/icu4j/main/classes/core/src/com/ibm/icu/util/TimeArrayTimeZoneRule.java
index 9785c7a..2fd5c39 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/TimeArrayTimeZoneRule.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/TimeArrayTimeZoneRule.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/TimeUnit.java b/icu4j/main/classes/core/src/com/ibm/icu/util/TimeUnit.java
index 698d704..42f53d6 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/TimeUnit.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/TimeUnit.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **************************************************************************
  * Copyright (C) 2008-2014, Google, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/TimeUnitAmount.java b/icu4j/main/classes/core/src/com/ibm/icu/util/TimeUnitAmount.java
index 5c16cd3..066d9e7 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/TimeUnitAmount.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/TimeUnitAmount.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **************************************************************************
  * Copyright (C) 2008-2009, Google, International Business Machines
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/TimeZone.java b/icu4j/main/classes/core/src/com/ibm/icu/util/TimeZone.java
index cea2bab..5a46e22 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/TimeZone.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/TimeZone.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * @(#)TimeZone.java    1.51 00/01/19
  *
@@ -916,6 +916,37 @@
     }
 
     /**
+     * If the locale contains the timezone keyword, creates a copy of that
+     * <code>TimeZone</code>.
+     * Otherwise, create the default <code>TimeZone</code>.
+     * @param locale a locale which may contains 'timezone' keyword/value.
+     * @return A <code>TimeZone</code>. Clients are responsible for deleting the
+     *   <code>TimeZone</code> object returned.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    @Deprecated
+    public static TimeZone forULocaleOrDefault(ULocale locale) {
+        String tz = locale.getKeywordValue("timezone");
+        return (tz == null) ? getDefault() : getTimeZone(tz);
+    }
+
+    /**
+     * If the locale contains the timezone keyword, creates a copy of that
+     * <code>TimeZone</code>.
+     * Otherwise, create the default <code>TimeZone</code>.
+     * @param locale a locale which may contains 'timezone' keyword/value.
+     * @return A <code>TimeZone</code>. Clients are responsible for deleting the
+     *   <code>TimeZone</code> object returned.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    @Deprecated
+    public static TimeZone forLocaleOrDefault(Locale locale) {
+        return forULocaleOrDefault(ULocale.forLocale(locale));
+    }
+
+    /**
      * Gets the default <code>TimeZone</code> for this host.
      * The source of the default <code>TimeZone</code>
      * may vary with implementation.
@@ -1174,7 +1205,7 @@
      *
      * <p>This implementation utilizes <a href="http://unicode.org/cldr/charts/supplemental/zone_tzid.html">
      * Zone-Tzid mapping data</a>. The mapping data is updated time to time. To get the latest changes,
-     * please read the ICU user guide section <a href="http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data">
+     * please read the ICU user guide section <a href="https://unicode-org.github.io/icu/userguide/datetime/timezone#updating-the-time-zone-data">
      * Updating the Time Zone Data</a>.
      *
      * @param id A system time zone ID
@@ -1234,7 +1265,7 @@
      *
      * <p>This implementation utilizes <a href="http://unicode.org/cldr/charts/supplemental/zone_tzid.html">
      * Zone-Tzid mapping data</a>. The mapping data is updated time to time. To get the latest changes,
-     * please read the ICU user guide section <a href="http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data">
+     * please read the ICU user guide section <a href="https://unicode-org.github.io/icu/userguide/datetime/timezone#updating-the-time-zone-data">
      * Updating the Time Zone Data</a>.
      *
      * @param winid A Windows time zone ID
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/TimeZoneRule.java b/icu4j/main/classes/core/src/com/ibm/icu/util/TimeZoneRule.java
index 379d697..8d0fc57 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/TimeZoneRule.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/TimeZoneRule.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/TimeZoneTransition.java b/icu4j/main/classes/core/src/com/ibm/icu/util/TimeZoneTransition.java
index 6d8de3a..455b8c5 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/TimeZoneTransition.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/TimeZoneTransition.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java b/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java
index ac8746f..9faa3c4 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2003-2016, International Business Machines Corporation and
@@ -16,12 +16,15 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.MissingResourceException;
+import java.util.Objects;
 import java.util.Set;
 import java.util.TreeMap;
 import java.util.TreeSet;
@@ -34,6 +37,7 @@
 import com.ibm.icu.impl.LocaleIDParser;
 import com.ibm.icu.impl.LocaleIDs;
 import com.ibm.icu.impl.SoftCache;
+import com.ibm.icu.impl.Utility;
 import com.ibm.icu.impl.locale.AsciiUtil;
 import com.ibm.icu.impl.locale.BaseLocale;
 import com.ibm.icu.impl.locale.Extension;
@@ -80,7 +84,8 @@
  * Canonicalization additionally performs the following:
  * <ul>
  * <li>POSIX ids are converted to ICU format IDs</li>
- * <li>'grandfathered' 3066 ids are converted to ICU standard form</li>
+ * <li>Legacy language tags (marked as “Type: grandfathered” in BCP 47)
+ * are converted to ICU standard form</li>
  * </ul>
  * All ULocale constructors automatically normalize the locale id.  To handle
  * POSIX ids, <code>canonicalize</code> can be called to convert the id
@@ -126,16 +131,14 @@
     /**
      * Types for {@link ULocale#getAvailableLocalesByType}
      *
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public static enum AvailableType {
         /**
          * Locales that return data when passed to ICU APIs,
          * but not including legacy or alias locales.
          *
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         DEFAULT,
 
@@ -155,16 +158,14 @@
          * DEFAULT. To get both sets at the same time, use
          * WITH_LEGACY_ALIASES.
          *
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         ONLY_LEGACY_ALIASES,
 
         /**
          * The union of the locales in DEFAULT and ONLY_LEGACY_ALIASES.
          *
-         * @draft ICU 65
-         * @provisional This API might change or be removed in a future release.
+         * @stable ICU 65
          */
         WITH_LEGACY_ALIASES,
     }
@@ -501,6 +502,7 @@
      * @param locale the ULocale to canonicalize
      * @return the ULocale created from the canonical version of the ULocale.
      * @draft ICU 67
+     * @provisional This API might change or be removed in a future release.
      */
     public static ULocale createCanonical(ULocale locale) {
         return createCanonical(locale.getName());
@@ -850,8 +852,7 @@
     /**
      * Returns a list of all installed locales according to the specified type.
      *
-     * @draft ICU 65
-     * @provisional This API might change or be removed in a future release.
+     * @stable ICU 65
      */
     public static Collection<ULocale> getAvailableLocalesByType(AvailableType type) {
         if (type == null) {
@@ -1202,9 +1203,399 @@
         return new LocaleIDParser(localeID).getKeywordValue(keywordName);
     }
 
+    static private class AliasReplacer {
+        /**
+         * @param language language subtag to be replaced. Cannot be null but could be empty.
+         * @param script script subtag to be replaced. Cannot be null but could be empty.
+         * @param region region subtag to be replaced. Cannot be null but could be empty.
+         * @param variants variant subtags to be replaced. Cannot be null but could be empty.
+         * @param extensions extensions in string to be replaced. Cannot be null but could be empty.
+         */
+        public AliasReplacer(String language, String script, String region,
+                String variants, String extensions) {
+
+            assert language != null;
+            assert script != null;
+            assert region != null;
+            assert variants != null;
+            assert extensions != null;
+            this.language = language;
+            this.script = script;
+            this.region = region;
+            if (!variants.isEmpty()) {
+                this.variants =
+                    new ArrayList<>(Arrays.asList(variants.split("_")));
+            }
+            this.extensions = extensions;
+        }
+
+        private String language;
+        private String script;
+        private String region;
+        private List<String> variants;
+        private String extensions;
+
+        public String replace() {
+            boolean changed = false;
+            loadAliasData();
+            int count = 0;
+            while (true) {
+                if (count++ > 10) {
+                    // Throw exception when we loop through too many time
+                    // stop to avoid infinity loop cauesd by incorrect data
+                    // in resource.
+                    throw new IllegalArgumentException(
+                        "Have problem to resolve locale alias of " +
+                        lscvToID(language, script, region,
+                            ((variants == null) ? "" : Utility.joinStrings("_", variants))) +
+                        extensions);
+                }
+                // Anytime we replace something, we need to start over again.
+                //                      lang  REGION  variant
+                if (    replaceLanguage(true,  true,  true) ||
+                        replaceLanguage(true,  true,  false) ||
+                        replaceLanguage(true,  false, true) ||
+                        replaceLanguage(true,  false, false) ||
+                        replaceLanguage(false, false, true) ||
+                        replaceRegion() ||
+                        replaceScript() ||
+                        replaceVariant()) {
+                    // Some values in data is changed, try to match from the
+                    // beginning again.
+                    changed = true;
+                    continue;
+                }
+                // Nothing changed in this iteration, break out the loop
+                break;
+            }  // while(1)
+            if (changed) {
+                String result =  lscvToID(language, script, region,
+                    ((variants == null) ? "" : Utility.joinStrings("_", variants)));
+                if (extensions != null) {
+                    result += extensions;
+                }
+                return result;
+            }
+            // Nothing changed in any iteration of the loop.
+            return null;
+        };
+
+        private static boolean aliasDataIsLoaded = false;
+        private static Map<String, String> languageAliasMap = null;
+        private static Map<String, String> scriptAliasMap = null;
+        private static Map<String, List<String>> territoryAliasMap = null;
+        private static Map<String, String> variantAliasMap = null;
+
+        /*
+         * Initializes the alias data from the ICU resource bundles. The alias
+         * data contains alias of language, country, script and variants.
+         *
+         * If the alias data has already loaded, then this method simply
+         * returns without doing anything meaningful.
+         *
+         */
+        private static synchronized void loadAliasData() {
+            if (aliasDataIsLoaded) {
+                return;
+            }
+            languageAliasMap = new HashMap<>();
+            scriptAliasMap = new HashMap<>();
+            territoryAliasMap = new HashMap<>();
+            variantAliasMap = new HashMap<>();
+
+            UResourceBundle metadata = UResourceBundle.getBundleInstance(
+                ICUData.ICU_BASE_NAME, "metadata",
+                ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+            UResourceBundle metadataAlias = metadata.get("alias");
+            UResourceBundle languageAlias = metadataAlias.get("language");
+            UResourceBundle scriptAlias = metadataAlias.get("script");
+            UResourceBundle territoryAlias = metadataAlias.get("territory");
+            UResourceBundle variantAlias = metadataAlias.get("variant");
+
+            for (int i = 0 ; i < languageAlias.getSize(); i++) {
+                UResourceBundle res = languageAlias.get(i);
+                String aliasFrom = res.getKey();
+                String aliasTo = res.get("replacement").getString();
+                Locale testLocale = new Locale(aliasFrom);
+                // if there are script in the aliasFrom
+                // or we have both a und as language and a region code.
+                if (    ! testLocale.getScript().isEmpty() ||
+                        (aliasFrom.startsWith("und") && ! testLocale.getCountry().isEmpty())) {
+                    throw new IllegalArgumentException(
+                        "key [" + aliasFrom +
+                        "] in alias:language contains unsupported fields combination.");
+                }
+                languageAliasMap.put(aliasFrom, aliasTo);
+            }
+            for (int i = 0 ; i < scriptAlias.getSize(); i++) {
+                UResourceBundle res = scriptAlias.get(i);
+                String aliasFrom = res.getKey();
+                String aliasTo = res.get("replacement").getString();
+                if (aliasFrom.length() != 4) {
+                    throw new IllegalArgumentException(
+                        "Incorrect key [" + aliasFrom + "] in alias:script.");
+                }
+                scriptAliasMap.put(aliasFrom, aliasTo);
+            }
+            for (int i = 0 ; i < territoryAlias.getSize(); i++) {
+                UResourceBundle res = territoryAlias.get(i);
+                String aliasFrom = res.getKey();
+                String aliasTo = res.get("replacement").getString();
+                if (aliasFrom.length() < 2 || aliasFrom.length() > 3) {
+                    throw new IllegalArgumentException(
+                        "Incorrect key [" + aliasFrom + "] in alias:territory.");
+                }
+                territoryAliasMap.put(aliasFrom,
+                    new ArrayList<>(Arrays.asList(aliasTo.split(" "))));
+            }
+            for (int i = 0 ; i < variantAlias.getSize(); i++) {
+                UResourceBundle res = variantAlias.get(i);
+                String aliasFrom = res.getKey();
+                String aliasTo = res.get("replacement").getString();
+                if (    aliasFrom.length() < 4 ||
+                        aliasFrom.length() > 8 ||
+                        (aliasFrom.length() == 4 &&
+                         (aliasFrom.charAt(0) < '0' || aliasFrom.charAt(0) > '9'))) {
+                    throw new IllegalArgumentException(
+                        "Incorrect key [" + aliasFrom + "] in alias:variant.");
+                }
+                if (    aliasTo.length() < 4 ||
+                        aliasTo.length() > 8 ||
+                        (aliasTo.length() == 4 &&
+                         (aliasTo.charAt(0) < '0' || aliasTo.charAt(0) > '9'))) {
+                    throw new IllegalArgumentException(
+                        "Incorrect variant [" + aliasTo + "] for the key [" + aliasFrom +
+                        "] in alias:variant.");
+                }
+                variantAliasMap.put(aliasFrom, aliasTo);
+            }
+
+            aliasDataIsLoaded = true;
+        }
+
+        private static String generateKey(
+                String language, String region, String variant) {
+            assert variant == null || variant.length() >= 4;
+            StringBuilder buf = new StringBuilder();
+            buf.append(language);
+            if (region != null && !region.isEmpty()) {
+                buf.append(UNDERSCORE);
+                buf.append(region);
+            }
+            if (variant != null && !variant.isEmpty()) {
+                buf.append(UNDERSCORE);
+                buf.append(variant);
+            }
+            return buf.toString();
+        }
+
+        /**
+         * If replacement is neither null nor empty and input is either null or empty,
+         * return replacement.
+         * If replacement is neither null nor empty but input is not empty, return input.
+         * If replacement is either null or empty and type is either null or empty,
+         * return input.
+         * Otherwise return null.
+         *   replacement  input  type   return
+         *       AAA       ""     *      AAA
+         *       AAA       BBB    *      BBB
+         *       ""        CCC    ""     CCC
+         *       ""        *  i   DDD    ""
+         */
+        private static String deleteOrReplace(
+                String input, String type, String replacement) {
+            return (replacement != null && !replacement.isEmpty()) ?
+                    ((input == null || input.isEmpty()) ? replacement : input) :
+                    ((type == null || type.isEmpty()) ? input : null);
+        }
+
+        private boolean replaceLanguage(boolean checkLanguage,
+                boolean checkRegion, boolean checkVariants) {
+            if (    (checkRegion && (region == null || region.isEmpty())) ||
+                    (checkVariants && (variants == null))) {
+                // Nothing to search
+                return false;
+            }
+            int variantSize = checkVariants ? variants.size() : 1;
+            // Since we may have more than one variant, we need to loop through
+            // them.
+            String searchLanguage = checkLanguage ? language : UNDEFINED_LANGUAGE;
+            String searchRegion = checkRegion ? region : null;
+            String searchVariant = null;
+            for (int variantIndex = 0; variantIndex < variantSize; ++variantIndex) {
+                if (checkVariants) {
+                    searchVariant = variants.get(variantIndex);
+                }
+                if (searchVariant != null && searchVariant.length() < 4) {
+                    // Do not consider  ill-formed variant subtag.
+                    searchVariant = null;
+                }
+                String typeKey = generateKey(
+                    searchLanguage, searchRegion, searchVariant);
+                String replacement = languageAliasMap.get(typeKey);
+                if (replacement == null) {
+                    // Found no replacement data.
+                    continue;
+                }
+                String replacedScript = null;
+                String replacedRegion = null;
+                String replacedVariant = null;
+                String replacedExtensions = null;
+                String replacedLanguage = null;
+
+                if (replacement.indexOf('_') < 0) {
+                    replacedLanguage = replacement.equals(UNDEFINED_LANGUAGE) ?
+                        language : replacement;
+                } else {
+                    String[] replacementFields = replacement.split("_");
+                    replacedLanguage = replacementFields[0];
+                    int index = 1;
+
+                    if (replacedLanguage.equals(UNDEFINED_LANGUAGE)) {
+                        replacedLanguage = language;
+                    }
+                    int consumed = replacementFields[0].length() + 1;
+                    while (replacementFields.length > index) {
+                        String field = replacementFields[index];
+                        int len = field.length();
+                        if (1 == len) {
+                            replacedExtensions = replacement.substring(consumed);
+                            break;
+                        } else if (len >= 2 && len <= 3) {
+                            assert replacedRegion == null;
+                            replacedRegion = field;
+                        } else if (len >= 5 && len <= 8) {
+                            assert replacedVariant == null;
+                            replacedVariant = field;
+                        } else if (len == 4) {
+                            if (field.charAt(0) >= '0' && field.charAt(0) <= '9') {
+                                assert replacedVariant == null;
+                                replacedVariant = field;
+                            } else {
+                                assert replacedScript == null;
+                                replacedScript = field;
+                            }
+                        }
+                        index++;
+                        consumed += len + 1;
+                    }
+                }
+
+                replacedScript = deleteOrReplace(script, null, replacedScript);
+                replacedRegion = deleteOrReplace(region, searchRegion, replacedRegion);
+                replacedVariant = deleteOrReplace(searchVariant, searchVariant, replacedVariant);
+
+                if (    this.language.equals(replacedLanguage) &&
+                        this.script.equals(replacedScript) &&
+                        this.region.equals(replacedRegion) &&
+                        Objects.equals(searchVariant, replacedVariant) &&
+                        replacedExtensions == null) {
+                    // Replacement produce no changes on search.
+                    // For example, apply pa_IN=> pa_Guru_IN on pa_Guru_IN.
+                    continue;
+                }
+                this.language = replacedLanguage;
+                this.script = replacedScript;
+                this.region = replacedRegion;
+                if (searchVariant != null && !searchVariant.isEmpty()) {
+                    if (replacedVariant != null && !replacedVariant.isEmpty()) {
+                        this.variants.set(variantIndex, replacedVariant);
+                    } else {
+                        this.variants.remove(variantIndex);
+                        if (this.variants.isEmpty()) {
+                            this.variants = null;
+                        }
+                    }
+                }
+                if (replacedExtensions != null && !replacedExtensions.isEmpty()) {
+                    // TODO(ICU-21292)
+                    // DO NOTHING
+                    // UTS35 does not specifiy what should we do if we have extensions in the
+                    // replacement. Currently we know only the following 4 "BCP47 LegacyRules" have
+                    // extensions in them languageAlias:
+                    //  i_default => en_x_i_default
+                    //  i_enochian => und_x_i_enochian
+                    //  i_mingo => see_x_i_mingo
+                    //  zh_min => nan_x_zh_min
+                    // But all of them are already changed by code inside LanguageTag before
+                    // hitting this code.
+                }
+                // Something in search changed by language alias data.
+                return true;
+            }
+            // Nothing changed in search by language alias data.
+            return false;
+        }
+
+        private boolean replaceRegion() {
+            if (region == null || region.isEmpty()) return false;
+            List<String> replacement = territoryAliasMap.get(region);
+            if (replacement == null) {
+                // Found no replacement data for this region.
+                return false;
+            }
+            String replacedRegion;
+            if (replacement.size() > 1) {
+                String regionOfLanguageAndScript =
+                    ULocale.addLikelySubtags(
+                        new ULocale(this.language, this.script, null))
+                    .getCountry();
+                replacedRegion = replacement.contains(regionOfLanguageAndScript) ?
+                    regionOfLanguageAndScript : replacement.get(0);
+            } else {
+                replacedRegion = replacement.get(0);
+            }
+            assert !this.region.equals(replacedRegion);
+            this.region = replacedRegion;
+            // The region is changed by data in territory alias.
+            return true;
+        }
+
+        private boolean replaceScript() {
+            if (script == null || script.isEmpty()) return false;
+            String replacement = scriptAliasMap.get(script);
+            if (replacement == null) {
+                // Found no replacement data for this script.
+                return false;
+            }
+            assert !this.script.equals(replacement);
+            this.script = replacement;
+            // The script is changed by data in script alias.
+            return true;
+        }
+
+        private boolean replaceVariant() {
+            if (variants == null) return false;
+            for (int i = 0; i < variants.size(); i++) {
+                 String variant = variants.get(i);
+                 String replacement = variantAliasMap.get(variant);
+                 if (replacement == null) {
+                     // Found no replacement data for this variant.
+                     continue;
+                 }
+                 assert replacement.length() >= 4;
+                 assert replacement.length() <= 8;
+                 assert replacement.length() != 4 ||
+                     ( replacement.charAt(0) >= '0' && replacement.charAt(0) <= '9');
+                 if (!variant.equals(replacement)) {
+                     variants.set(i, replacement);
+                     // Special hack to handle hepburn-heploc => alalc97
+                     if (variant.equals("heploc")) {
+                         variants.remove("hepburn");
+                         if (variants.isEmpty()) {
+                             variants = null;
+                         }
+                     }
+                     return true;
+                 }
+            }
+            return false;
+        }
+    };
+
     /**
      * {@icu} Returns the canonical name according to CLDR for the specified locale ID.
-     * This is used to convert POSIX and other grandfathered IDs to standard ICU form.
+     * This is used to convert POSIX and other legacy IDs to standard ICU form.
      * @param localeID the locale id
      * @return the canonicalized id
      * @stable ICU 3.0
@@ -1238,147 +1629,54 @@
             }
         }
 
-        // If the BCP 47 primary language subtag matches the type attribute of a languageAlias
-        // element in Supplemental Data, replace the language subtag with the replacement value.
-        // If there are additional subtags in the replacement value, add them to the result, but
-        // only if there is no corresponding subtag already in the tag.
-        // Five special deprecated grandfathered codes (such as i-default) are in type attributes, and are also replaced.
-        try {
-            UResourceBundle languageAlias = UResourceBundle.getBundleInstance(ICUData.ICU_BASE_NAME,
-                "metadata", ICUResourceBundle.ICU_DATA_CLASS_LOADER)
-                .get("alias")
-                .get("language");
-            // language _ variant
-            if (!parser.getVariant().isEmpty()) {
-                String [] variants = parser.getVariant().split("_");
-                for (String variant : variants) {
-                    try {
-                        // Note the key in the metadata.txt is formatted as language_variant
-                        // instead of language__variant but lscvToID will generate
-                        // language__variant so we have to build the string ourselves.
-                        ULocale replaceLocale = new ULocale(languageAlias.get(
-                            (new StringBuilder(parser.getLanguage().length() + 1 + parser.getVariant().length()))
-                                .append(parser.getLanguage())
-                                .append("_")
-                                .append(variant)
-                                .toString())
-                            .get("replacement")
-                            .getString());
-                        StringBuilder replacedVariant = new StringBuilder(parser.getVariant().length());
-                        for (String current : variants) {
-                            if (current.equals(variant)) continue;
-                            if (replacedVariant.length() > 0) replacedVariant.append("_");
-                            replacedVariant.append(current);
-                        }
-                        parser = new LocaleIDParser(
-                            (new StringBuilder(localeID.length()))
-                                .append(lscvToID(replaceLocale.getLanguage(),
-                                    !parser.getScript().isEmpty() ? parser.getScript() : replaceLocale.getScript(),
-                                    !parser.getCountry().isEmpty() ? parser.getCountry() : replaceLocale.getCountry(),
-                                    replacedVariant.toString()))
-                                .append(parser.getName().substring(parser.getBaseName().length()))
-                                .toString());
-                    } catch (MissingResourceException e) {
-                    }
-                }
-            }
-
-            // language _ script _ country
-            // ug_Arab_CN -> ug_CN
-            if (!parser.getScript().isEmpty() && !parser.getCountry().isEmpty()) {
-                try {
-                    ULocale replaceLocale = new ULocale(languageAlias.get(
-                        lscvToID(parser.getLanguage(), parser.getScript(), parser.getCountry(), null))
-                        .get("replacement")
-                        .getString());
-                    parser = new LocaleIDParser((new StringBuilder(localeID.length()))
-                        .append(lscvToID(replaceLocale.getLanguage(),
-                            replaceLocale.getScript(),
-                            replaceLocale.getCountry(),
-                            parser.getVariant()))
-                        .append(parser.getName().substring(parser.getBaseName().length()))
-                        .toString());
-                } catch (MissingResourceException e) {
-                }
-            }
-            // language _ country
-            // eg. az_AZ -> az_Latn_AZ
-            if (!parser.getCountry().isEmpty()) {
-                try {
-                    ULocale replaceLocale = new ULocale(languageAlias.get(
-                        lscvToID(parser.getLanguage(), null, parser.getCountry(), null))
-                        .get("replacement")
-                        .getString());
-                    parser = new LocaleIDParser((new StringBuilder(localeID.length()))
-                        .append(lscvToID(replaceLocale.getLanguage(),
-                            parser.getScript().isEmpty() ? replaceLocale.getScript() : parser.getScript(),
-                            replaceLocale.getCountry(),
-                            parser.getVariant()))
-                        .append(parser.getName().substring(parser.getBaseName().length()))
-                        .toString());
-                } catch (MissingResourceException e) {
-                }
-            }
-            // only language
-            // e.g. twi -> ak
-            try {
-                ULocale replaceLocale = new ULocale(languageAlias.get(parser.getLanguage())
-                    .get("replacement")
-                    .getString());
-                parser = new LocaleIDParser((new StringBuilder(localeID.length()))
-                    .append(lscvToID(replaceLocale.getLanguage(),
-                        parser.getScript().isEmpty() ? replaceLocale.getScript() : parser.getScript() ,
-                        parser.getCountry().isEmpty() ? replaceLocale.getCountry() : parser.getCountry() ,
-                        parser.getVariant()))
-                    .append(parser.getName().substring(parser.getBaseName().length()))
-                    .toString());
-            } catch (MissingResourceException e) {
-            }
-        } catch (MissingResourceException e) {
-        }
-
-        // If the BCP 47 region subtag matches the type attribute of a
-        // territoryAlias element in Supplemental Data, replace the language
-        // subtag with the replacement value, as follows:
-        if (!parser.getCountry().isEmpty()) {
-            try {
-                String replacements[] = UResourceBundle.getBundleInstance(ICUData.ICU_BASE_NAME,
-                    "metadata", ICUResourceBundle.ICU_DATA_CLASS_LOADER)
-                    .get("alias")
-                    .get("territory")
-                    .get(parser.getCountry())
-                    .get("replacement")
-                    .getString()
-                    .split(" ");
-                String replacement = replacements[0];
-                // If there is a single territory in the replacement, use it.
-                // If there are multiple territories:
-                // Look up the most likely territory for the base language code (and script, if there is one).
-                // If that likely territory is in the list, use it.
-                // Otherwise, use the first territory in the list.
-                if (replacements.length > 1) {
-                    String likelyCountry = ULocale.addLikelySubtags(
-                        new ULocale(lscvToID(parser.getLanguage(), parser.getScript(), null, parser.getVariant())))
-                        .getCountry();
-                    for (String country : replacements) {
-                        if (country.equals(likelyCountry)) {
-                            replacement = likelyCountry;
-                            break;
-                        }
-                    }
-                }
-                parser = new LocaleIDParser(
-                    (new StringBuilder(localeID.length()))
-                    .append(lscvToID(parser.getLanguage(), parser.getScript(), replacement, parser.getVariant()))
-                    .append(parser.getName().substring(parser.getBaseName().length()))
-                    .toString());
-            } catch (MissingResourceException e) {
+        String name = parser.getName();
+        if (!isKnownCanonicalizedLocale(name)) {
+            AliasReplacer replacer = new AliasReplacer(
+                parser.getLanguage(), parser.getScript(), parser.getCountry(),
+                AsciiUtil.toLowerString(parser.getVariant()),
+                parser.getName().substring(parser.getBaseName().length()));
+            String replaced = replacer.replace();
+            if (replaced != null) {
+                parser =  new LocaleIDParser(replaced);
             }
         }
 
         return parser.getName();
     }
 
+    private static synchronized boolean isKnownCanonicalizedLocale(String name) {
+        if (name.equals("c") || name.equals("en") || name.equals("en_US")) {
+            return true;
+        }
+        if (gKnownCanonicalizedCases == null) {
+            List<String> items = Arrays.asList(
+                "af", "af_ZA", "am", "am_ET", "ar", "ar_001", "as", "as_IN", "az", "az_AZ",
+                "be", "be_BY", "bg", "bg_BG", "bn", "bn_IN", "bs", "bs_BA", "ca", "ca_ES",
+                "cs", "cs_CZ", "cy", "cy_GB", "da", "da_DK", "de", "de_DE", "el", "el_GR",
+                "en", "en_GB", "en_US", "es", "es_419", "es_ES", "et", "et_EE", "eu",
+                "eu_ES", "fa", "fa_IR", "fi", "fi_FI", "fil", "fil_PH", "fr", "fr_FR",
+                "ga", "ga_IE", "gl", "gl_ES", "gu", "gu_IN", "he", "he_IL", "hi", "hi_IN",
+                "hr", "hr_HR", "hu", "hu_HU", "hy", "hy_AM", "id", "id_ID", "is", "is_IS",
+                "it", "it_IT", "ja", "ja_JP", "jv", "jv_ID", "ka", "ka_GE", "kk", "kk_KZ",
+                "km", "km_KH", "kn", "kn_IN", "ko", "ko_KR", "ky", "ky_KG", "lo", "lo_LA",
+                "lt", "lt_LT", "lv", "lv_LV", "mk", "mk_MK", "ml", "ml_IN", "mn", "mn_MN",
+                "mr", "mr_IN", "ms", "ms_MY", "my", "my_MM", "nb", "nb_NO", "ne", "ne_NP",
+                "nl", "nl_NL", "or", "or_IN", "pa", "pa_IN", "pl", "pl_PL", "ps", "ps_AF",
+                "pt", "pt_BR", "pt_PT", "ro", "ro_RO", "ru", "ru_RU", "sd", "sd_IN", "si",
+                "si_LK", "sk", "sk_SK", "sl", "sl_SI", "so", "so_SO", "sq", "sq_AL", "sr",
+                "sr_Cyrl_RS", "sr_Latn", "sr_RS", "sv", "sv_SE", "sw", "sw_TZ", "ta",
+                "ta_IN", "te", "te_IN", "th", "th_TH", "tk", "tk_TM", "tr", "tr_TR", "uk",
+                "uk_UA", "ur", "ur_PK", "uz", "uz_UZ", "vi", "vi_VN", "yue", "yue_Hant",
+                "yue_Hant_HK", "yue_HK", "zh", "zh_CN", "zh_Hans", "zh_Hans_CN", "zh_Hant",
+                "zh_Hant_TW", "zh_TW", "zu", "zu_ZA");
+            gKnownCanonicalizedCases = new HashSet<>(items);
+
+        }
+        return gKnownCanonicalizedCases.contains(name);
+    }
+
+    private static Set<String> gKnownCanonicalizedCases = null;
+
     /**
      * {@icu} Given a keyword and a value, return a new locale with an updated
      * keyword and value.  If the keyword is null, this removes all keywords from the locale id.
@@ -3201,58 +3499,16 @@
      *
      * </ul>
      *
-     * <p>This implements the 'Language-Tag' production of BCP47, and
-     * so supports grandfathered (regular and irregular) as well as
-     * private use language tags.  Stand alone private use tags are
-     * represented as empty language and extension 'x-whatever',
-     * and grandfathered tags are converted to their canonical replacements
-     * where they exist.
+     * <p>This implements the 'Language-Tag' production of BCP 47, and so
+     * supports legacy language tags (marked as “Type: grandfathered” in BCP 47)
+     * (regular and irregular) as well as private use language tags.
      *
-     * <p>Grandfathered tags with canonical replacements are as follows:
+     * <p>Stand-alone private use tags are represented as empty language and extension 'x-whatever',
+     * and legacy tags are converted to their canonical replacements where they exist.
      *
-     * <table>
-     * <tbody align="center">
-     * <tr><th>grandfathered tag</th><th>&nbsp;</th><th>modern replacement</th></tr>
-     * <tr><td>art-lojban</td><td>&nbsp;</td><td>jbo</td></tr>
-     * <tr><td>i-ami</td><td>&nbsp;</td><td>ami</td></tr>
-     * <tr><td>i-bnn</td><td>&nbsp;</td><td>bnn</td></tr>
-     * <tr><td>i-hak</td><td>&nbsp;</td><td>hak</td></tr>
-     * <tr><td>i-klingon</td><td>&nbsp;</td><td>tlh</td></tr>
-     * <tr><td>i-lux</td><td>&nbsp;</td><td>lb</td></tr>
-     * <tr><td>i-navajo</td><td>&nbsp;</td><td>nv</td></tr>
-     * <tr><td>i-pwn</td><td>&nbsp;</td><td>pwn</td></tr>
-     * <tr><td>i-tao</td><td>&nbsp;</td><td>tao</td></tr>
-     * <tr><td>i-tay</td><td>&nbsp;</td><td>tay</td></tr>
-     * <tr><td>i-tsu</td><td>&nbsp;</td><td>tsu</td></tr>
-     * <tr><td>no-bok</td><td>&nbsp;</td><td>nb</td></tr>
-     * <tr><td>no-nyn</td><td>&nbsp;</td><td>nn</td></tr>
-     * <tr><td>sgn-BE-FR</td><td>&nbsp;</td><td>sfb</td></tr>
-     * <tr><td>sgn-BE-NL</td><td>&nbsp;</td><td>vgt</td></tr>
-     * <tr><td>sgn-CH-DE</td><td>&nbsp;</td><td>sgg</td></tr>
-     * <tr><td>zh-guoyu</td><td>&nbsp;</td><td>cmn</td></tr>
-     * <tr><td>zh-hakka</td><td>&nbsp;</td><td>hak</td></tr>
-     * <tr><td>zh-min-nan</td><td>&nbsp;</td><td>nan</td></tr>
-     * <tr><td>zh-xiang</td><td>&nbsp;</td><td>hsn</td></tr>
-     * </tbody>
-     * </table>
-     *
-     * <p>Grandfathered tags with no modern replacement will be
-     * converted as follows:
-     *
-     * <table>
-     * <tbody align="center">
-     * <tr><th>grandfathered tag</th><th>&nbsp;</th><th>converts to</th></tr>
-     * <tr><td>cel-gaulish</td><td>&nbsp;</td><td>xtg-x-cel-gaulish</td></tr>
-     * <tr><td>en-GB-oed</td><td>&nbsp;</td><td>en-GB-x-oed</td></tr>
-     * <tr><td>i-default</td><td>&nbsp;</td><td>en-x-i-default</td></tr>
-     * <tr><td>i-enochian</td><td>&nbsp;</td><td>und-x-i-enochian</td></tr>
-     * <tr><td>i-mingo</td><td>&nbsp;</td><td>see-x-i-mingo</td></tr>
-     * <tr><td>zh-min</td><td>&nbsp;</td><td>nan-x-zh-min</td></tr>
-     * </tbody>
-     * </table>
-     *
-     * <p>For a list of all grandfathered tags, see the
-     * IANA Language Subtag Registry (search for "Type: grandfathered").
+     * <p>Note that a few legacy tags have no modern replacement;
+     * these will be converted using the fallback described in
+     * the first paragraph, so some information might be lost.
      *
      * <p><b>Note</b>: there is no guarantee that <code>toLanguageTag</code>
      * and <code>forLanguageTag</code> will round-trip.
@@ -3491,7 +3747,7 @@
          * Resets the Builder to match the provided IETF BCP 47
          * language tag.  Discards the existing state.  Null and the
          * empty string cause the builder to be reset, like {@link
-         * #clear}.  Grandfathered tags (see {@link
+         * #clear}.  Legacy tags (see {@link
          * ULocale#forLanguageTag}) are converted to their canonical
          * form before being processed.  Otherwise, the language tag
          * must be well-formed (see {@link ULocale}) or an exception is
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/UResourceBundle.java b/icu4j/main/classes/core/src/com/ibm/icu/util/UResourceBundle.java
index 16a25d3..cec9fe9 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/UResourceBundle.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/UResourceBundle.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/UResourceBundleIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/util/UResourceBundleIterator.java
index 6cd1fc4..7aa0417 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/UResourceBundleIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/UResourceBundleIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2004-2009, International Business Machines Corporation and   *
@@ -94,4 +94,4 @@
     public boolean hasNext(){
         return index < size;   
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/UResourceTypeMismatchException.java b/icu4j/main/classes/core/src/com/ibm/icu/util/UResourceTypeMismatchException.java
index b0bd18c..4a9669c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/UResourceTypeMismatchException.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/UResourceTypeMismatchException.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2004-2006, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/UniversalTimeScale.java b/icu4j/main/classes/core/src/com/ibm/icu/util/UniversalTimeScale.java
index 777d597..d198de9 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/UniversalTimeScale.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/UniversalTimeScale.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *********************************************************************************
  * Copyright (C) 2004-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/VTimeZone.java b/icu4j/main/classes/core/src/com/ibm/icu/util/VTimeZone.java
index 9cf441e..0282754 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/VTimeZone.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/VTimeZone.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/ValueIterator.java b/icu4j/main/classes/core/src/com/ibm/icu/util/ValueIterator.java
index 751aacc..d42209d 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/ValueIterator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/ValueIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 1996-2016, International Business Machines Corporation and   *
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/VersionInfo.java b/icu4j/main/classes/core/src/com/ibm/icu/util/VersionInfo.java
index 8a418ae..158a47a 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/VersionInfo.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/VersionInfo.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
@@ -212,7 +212,7 @@
      * @deprecated This API is ICU internal only.
      */
     @Deprecated
-    public static final String ICU_DATA_VERSION_PATH = "67b";
+    public static final String ICU_DATA_VERSION_PATH = "68b";
 
     /**
      * Data version in ICU4J.
@@ -372,56 +372,6 @@
         return getInstance(major, 0, 0, 0);
     }
 
-    private static volatile VersionInfo javaVersion;
-
-    /**
-     * @internal
-     * @deprecated This API is ICU internal only.
-     */
-    @Deprecated
-    public static VersionInfo javaVersion() {
-        if (javaVersion == null) {
-            synchronized(VersionInfo.class) {
-                if (javaVersion == null) {
-                    String s = System.getProperty("java.version");
-                    // clean string
-                    // preserve only digits, separated by single '.'
-                    // ignore over 4 digit sequences
-                    // does not test < 255, very odd...
-
-                    char[] chars = s.toCharArray();
-                    int r = 0, w = 0, count = 0;
-                    boolean numeric = false; // ignore leading non-numerics
-                    while (r < chars.length) {
-                        char c = chars[r++];
-                        if (c < '0' || c > '9') {
-                            if (numeric) {
-                                if (count == 3) {
-                                    // only four digit strings allowed
-                                    break;
-                                }
-                                numeric = false;
-                                chars[w++] = '.';
-                                ++count;
-                            }
-                        } else {
-                            numeric = true;
-                            chars[w++] = c;
-                        }
-                    }
-                    while (w > 0 && chars[w-1] == '.') {
-                        --w;
-                    }
-
-                    String vs = new String(chars, 0, w);
-
-                    javaVersion = VersionInfo.getInstance(vs);
-                }
-            }
-        }
-        return javaVersion;
-    }
-
     /**
      * Returns the String representative of VersionInfo in the format of
      * "major.minor.milli.micro"
@@ -521,7 +471,15 @@
     @Override
     public int compareTo(VersionInfo other)
     {
-        return m_version_ - other.m_version_;
+        // m_version_ is an int, a signed 32-bit integer.
+        // When the major version is >=128, then the version int is negative.
+        // Compare it in two steps to simulate an unsigned-int comparison.
+        // (Alternatively we could turn each int into a long and reset the upper 32 bits.)
+        // Compare the upper bits first, using logical shift right (unsigned).
+        int diff = (m_version_ >>> 1) - (other.m_version_ >>> 1);
+        if (diff != 0) { return diff; }
+        // Compare the remaining bits.
+        return (m_version_ & 1) - (other.m_version_ & 1);
     }
 
     // private data members ----------------------------------------------
@@ -595,7 +553,7 @@
         UNICODE_12_1   = getInstance(12, 1, 0, 0);
         UNICODE_13_0   = getInstance(13, 0, 0, 0);
 
-        ICU_VERSION   = getInstance(67, 1, 0, 0);
+        ICU_VERSION   = getInstance(68, 2, 0, 0);
         ICU_DATA_VERSION = ICU_VERSION;
         UNICODE_VERSION = UNICODE_13_0;
 
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/package.html b/icu4j/main/classes/core/src/com/ibm/icu/util/package.html
index 8a6c19f..3dbf912 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/package.html
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/package.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--  Copyright (C) 2016 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--  Copyright (C) 2000-2004, International Business Machines Corporation and
   others. All Rights Reserved.
diff --git a/icu4j/main/classes/currdata/.settings/org.eclipse.jdt.ui.prefs b/icu4j/main/classes/currdata/.settings/org.eclipse.jdt.ui.prefs
index 3680fab..d733db1 100644
--- a/icu4j/main/classes/currdata/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/main/classes/currdata/.settings/org.eclipse.jdt.ui.prefs
@@ -7,7 +7,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/main/classes/currdata/build.xml b/icu4j/main/classes/currdata/build.xml
index 550daf5..cc92826 100644
--- a/icu4j/main/classes/currdata/build.xml
+++ b/icu4j/main/classes/currdata/build.xml
@@ -1,6 +1,6 @@
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *******************************************************************************
 * Copyright (C) 2009-2015, International Business Machines Corporation and
 * others. All Rights Reserved.
diff --git a/icu4j/main/classes/currdata/src/com/ibm/icu/impl/ICUCurrencyDisplayInfoProvider.java b/icu4j/main/classes/currdata/src/com/ibm/icu/impl/ICUCurrencyDisplayInfoProvider.java
index 8465ff1..7936774 100644
--- a/icu4j/main/classes/currdata/src/com/ibm/icu/impl/ICUCurrencyDisplayInfoProvider.java
+++ b/icu4j/main/classes/currdata/src/com/ibm/icu/impl/ICUCurrencyDisplayInfoProvider.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/currdata/src/com/ibm/icu/impl/ICUCurrencyMetaInfo.java b/icu4j/main/classes/currdata/src/com/ibm/icu/impl/ICUCurrencyMetaInfo.java
index 0bb4620..a7b57d6 100644
--- a/icu4j/main/classes/currdata/src/com/ibm/icu/impl/ICUCurrencyMetaInfo.java
+++ b/icu4j/main/classes/currdata/src/com/ibm/icu/impl/ICUCurrencyMetaInfo.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/langdata/.settings/org.eclipse.jdt.ui.prefs b/icu4j/main/classes/langdata/.settings/org.eclipse.jdt.ui.prefs
index 3680fab..d733db1 100644
--- a/icu4j/main/classes/langdata/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/main/classes/langdata/.settings/org.eclipse.jdt.ui.prefs
@@ -7,7 +7,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/main/classes/langdata/build.xml b/icu4j/main/classes/langdata/build.xml
index 35fb38e..ad09636 100644
--- a/icu4j/main/classes/langdata/build.xml
+++ b/icu4j/main/classes/langdata/build.xml
@@ -1,6 +1,6 @@
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *******************************************************************************
 * Copyright (C) 2009-2015, International Business Machines Corporation and
 * others. All Rights Reserved.
diff --git a/icu4j/main/classes/langdata/src/com/ibm/icu/impl/ICULangDataTables.java b/icu4j/main/classes/langdata/src/com/ibm/icu/impl/ICULangDataTables.java
index 6cacd57..dccfa5b 100644
--- a/icu4j/main/classes/langdata/src/com/ibm/icu/impl/ICULangDataTables.java
+++ b/icu4j/main/classes/langdata/src/com/ibm/icu/impl/ICULangDataTables.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/localespi/.settings/org.eclipse.jdt.ui.prefs b/icu4j/main/classes/localespi/.settings/org.eclipse.jdt.ui.prefs
index 3680fab..d733db1 100644
--- a/icu4j/main/classes/localespi/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/main/classes/localespi/.settings/org.eclipse.jdt.ui.prefs
@@ -7,7 +7,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/main/classes/localespi/build.xml b/icu4j/main/classes/localespi/build.xml
index f3c004e..d7057c0 100644
--- a/icu4j/main/classes/localespi/build.xml
+++ b/icu4j/main/classes/localespi/build.xml
@@ -1,6 +1,6 @@
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *******************************************************************************
 * Copyright (C) 2009-2011, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
diff --git a/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.BreakIteratorProvider b/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.BreakIteratorProvider
index 02117ab..07156ce 100644
--- a/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.BreakIteratorProvider
+++ b/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.BreakIteratorProvider
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
 # icu4j break iterator
diff --git a/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.CollatorProvider b/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.CollatorProvider
index 5c95c38..9ecc093 100644
--- a/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.CollatorProvider
+++ b/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.CollatorProvider
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
 # icu4j collator
diff --git a/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.DateFormatProvider b/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.DateFormatProvider
index 14a1c8e..bf67e65 100644
--- a/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.DateFormatProvider
+++ b/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.DateFormatProvider
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
 # icu4j date formatter
diff --git a/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.DateFormatSymbolsProvider b/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.DateFormatSymbolsProvider
index a1381a1..b1a9a6d 100644
--- a/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.DateFormatSymbolsProvider
+++ b/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.DateFormatSymbolsProvider
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
 # icu4j date format symbpols
diff --git a/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.DecimalFormatSymbolsProvider b/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.DecimalFormatSymbolsProvider
index ba50636..8c800c0 100644
--- a/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.DecimalFormatSymbolsProvider
+++ b/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.DecimalFormatSymbolsProvider
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
 # icu4j decimal format symbols
diff --git a/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.NumberFormatProvider b/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.NumberFormatProvider
index 074d932..4a10ab1 100644
--- a/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.NumberFormatProvider
+++ b/icu4j/main/classes/localespi/src/META-INF/services/java.text.spi.NumberFormatProvider
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
 # icu4j number formatter
diff --git a/icu4j/main/classes/localespi/src/META-INF/services/java.util.spi.CurrencyNameProvider b/icu4j/main/classes/localespi/src/META-INF/services/java.util.spi.CurrencyNameProvider
index b7c177b..3249e5e 100644
--- a/icu4j/main/classes/localespi/src/META-INF/services/java.util.spi.CurrencyNameProvider
+++ b/icu4j/main/classes/localespi/src/META-INF/services/java.util.spi.CurrencyNameProvider
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
 # icu4j currency name
diff --git a/icu4j/main/classes/localespi/src/META-INF/services/java.util.spi.LocaleNameProvider b/icu4j/main/classes/localespi/src/META-INF/services/java.util.spi.LocaleNameProvider
index 322df4e..1fd50c1 100644
--- a/icu4j/main/classes/localespi/src/META-INF/services/java.util.spi.LocaleNameProvider
+++ b/icu4j/main/classes/localespi/src/META-INF/services/java.util.spi.LocaleNameProvider
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
 # icu4j locale name
diff --git a/icu4j/main/classes/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider b/icu4j/main/classes/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider
index 7b36c40..e47af70 100644
--- a/icu4j/main/classes/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider
+++ b/icu4j/main/classes/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider
@@ -1,5 +1,5 @@
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
 # icu4j time zone name
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/icuadapter/NumberFormatJDK.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/icuadapter/NumberFormatJDK.java
index d5b91ad..2e9fb0f 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/icuadapter/NumberFormatJDK.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/icuadapter/NumberFormatJDK.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008, International Business Machines Corporation and         *
@@ -282,4 +282,4 @@
         }
         fJdkNfmt.setRoundingMode(mode);
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/icuadapter/TimeZoneJDK.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/icuadapter/TimeZoneJDK.java
index 9104dea..73984c9 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/icuadapter/TimeZoneJDK.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/icuadapter/TimeZoneJDK.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProvider.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProvider.java
index 6c5e091..52b0495 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProvider.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProvider.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties
index 997bc6e..dfbe21f 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties
@@ -1,7 +1,7 @@
 #*
 #*******************************************************************************
 # Copyright (C) 2016 and later: Unicode, Inc. and others.                      *
-# License & terms of use: http://www.unicode.org/copyright.html#License        *
+# License & terms of use: http://www.unicode.org/copyright.html        *
 #*******************************************************************************
 #*******************************************************************************
 #* Copyright (C) 2008-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/package.html b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/package.html
index e620fda..6e74908 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/package.html
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/package.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--  Copyright (C) 2017 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <title>ICU4J Locale Service Provider Overview</title>
 </head>
@@ -10,7 +10,7 @@
 <p>This package includes Java Locale Service Provider implementation.
 There are no public ICU4J consumer APIs provided in this package.
 See the ICU user guide section
-<a href="http://userguide.icu-project.org/icu4j-locale-service-provider">ICU4J Locale Service Provider</a>
+<a href="https://unicode-org.github.io/icu/userguide/icu4j-locale-service-provider">ICU4J Locale Service Provider</a>
 for the details.
 </p>
 </body>
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/BreakIteratorProviderICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/BreakIteratorProviderICU.java
index a2d35b6..7211500 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/BreakIteratorProviderICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/BreakIteratorProviderICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/CollatorProviderICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/CollatorProviderICU.java
index 84612a1..a1ba790 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/CollatorProviderICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/CollatorProviderICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatProviderICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatProviderICU.java
index 8da0b51..ba55de1 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatProviderICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatProviderICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatSymbolsProviderICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatSymbolsProviderICU.java
index 58c8d19..6956885 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatSymbolsProviderICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatSymbolsProviderICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DecimalFormatSymbolsProviderICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DecimalFormatSymbolsProviderICU.java
index f299e4e..ac98652 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DecimalFormatSymbolsProviderICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DecimalFormatSymbolsProviderICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/NumberFormatProviderICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/NumberFormatProviderICU.java
index 9a99a99..6cf5f49 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/NumberFormatProviderICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/NumberFormatProviderICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/util/CurrencyNameProviderICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/util/CurrencyNameProviderICU.java
index 8093b77..ee052f7 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/util/CurrencyNameProviderICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/util/CurrencyNameProviderICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/util/LocaleNameProviderICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/util/LocaleNameProviderICU.java
index ffa4478..d4652a8 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/util/LocaleNameProviderICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/util/LocaleNameProviderICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/util/TimeZoneNameProviderICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/util/TimeZoneNameProviderICU.java
index be74584..a30b3f4 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/util/TimeZoneNameProviderICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/javaspi/util/TimeZoneNameProviderICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/BreakIteratorICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/BreakIteratorICU.java
index 5c0d731..e738669 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/BreakIteratorICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/BreakIteratorICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/CalendarICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/CalendarICU.java
index 9e22108..c4ce868 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/CalendarICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/CalendarICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/CollationKeyICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/CollationKeyICU.java
index 8b8c9dd..c5206c5 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/CollationKeyICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/CollationKeyICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/CollatorICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/CollatorICU.java
index 3a92ccf..8879b1f 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/CollatorICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/CollatorICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/DateFormatSymbolsICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/DateFormatSymbolsICU.java
index fbe5c5c..d2f7a2e 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/DateFormatSymbolsICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/DateFormatSymbolsICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatICU.java
index 354920b..47d6dd9 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatSymbolsICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatSymbolsICU.java
index a5641d7..664cabb 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatSymbolsICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatSymbolsICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/NumberFormatICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/NumberFormatICU.java
index bcc2b8b..06bb6ef 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/NumberFormatICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/NumberFormatICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/SimpleDateFormatICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/SimpleDateFormatICU.java
index eaab633..af7b5c6 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/SimpleDateFormatICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/SimpleDateFormatICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/TimeZoneICU.java b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/TimeZoneICU.java
index f6a9609..28ccdb1 100644
--- a/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/TimeZoneICU.java
+++ b/icu4j/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/TimeZoneICU.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008, International Business Machines Corporation and         *
diff --git a/icu4j/main/classes/regiondata/.settings/org.eclipse.jdt.ui.prefs b/icu4j/main/classes/regiondata/.settings/org.eclipse.jdt.ui.prefs
index 3680fab..d733db1 100644
--- a/icu4j/main/classes/regiondata/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/main/classes/regiondata/.settings/org.eclipse.jdt.ui.prefs
@@ -7,7 +7,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/main/classes/regiondata/build.xml b/icu4j/main/classes/regiondata/build.xml
index d32c994..5e97dee 100644
--- a/icu4j/main/classes/regiondata/build.xml
+++ b/icu4j/main/classes/regiondata/build.xml
@@ -1,6 +1,6 @@
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *******************************************************************************
 * Copyright (C) 2009-2015, International Business Machines Corporation and
 * others. All Rights Reserved.
diff --git a/icu4j/main/classes/regiondata/src/com/ibm/icu/impl/ICURegionDataTables.java b/icu4j/main/classes/regiondata/src/com/ibm/icu/impl/ICURegionDataTables.java
index 94964f2..b86ea1b 100644
--- a/icu4j/main/classes/regiondata/src/com/ibm/icu/impl/ICURegionDataTables.java
+++ b/icu4j/main/classes/regiondata/src/com/ibm/icu/impl/ICURegionDataTables.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/translit/.settings/org.eclipse.jdt.ui.prefs b/icu4j/main/classes/translit/.settings/org.eclipse.jdt.ui.prefs
index 3680fab..d733db1 100644
--- a/icu4j/main/classes/translit/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/main/classes/translit/.settings/org.eclipse.jdt.ui.prefs
@@ -7,7 +7,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/main/classes/translit/build.xml b/icu4j/main/classes/translit/build.xml
index 7b02570..6d8ccf9 100644
--- a/icu4j/main/classes/translit/build.xml
+++ b/icu4j/main/classes/translit/build.xml
@@ -1,6 +1,6 @@
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *******************************************************************************
 * Copyright (C) 2009-2015, International Business Machines Corporation and
 * others. All Rights Reserved.
diff --git a/icu4j/main/classes/translit/findbugs-exclude.xml b/icu4j/main/classes/translit/findbugs-exclude.xml
index dc5f7c3..718a060 100644
--- a/icu4j/main/classes/translit/findbugs-exclude.xml
+++ b/icu4j/main/classes/translit/findbugs-exclude.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *******************************************************************************
 * Copyright (C) 2013, International Business Machines Corporation and         *
 * others. All Rights Reserved.                                                *
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/impl/UtilityExtensions.java b/icu4j/main/classes/translit/src/com/ibm/icu/impl/UtilityExtensions.java
index 511fdd5..6b1d10f 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/impl/UtilityExtensions.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/impl/UtilityExtensions.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2010, International Business Machines Corporation and    *
@@ -112,4 +112,4 @@
     }
 
 }
-//CLOVER:ON
\ No newline at end of file
+//CLOVER:ON
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/AnyTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/AnyTransliterator.java
index bc2bc2d..fcca7e2 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/AnyTransliterator.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/AnyTransliterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *****************************************************************
 * Copyright (c) 2002-2014, International Business Machines Corporation
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/BreakTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/BreakTransliterator.java
index 3c9ed7d..cb91fa7 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/BreakTransliterator.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/BreakTransliterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/CaseFoldTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/CaseFoldTransliterator.java
index c7b936e..c91fc33 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/CaseFoldTransliterator.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/CaseFoldTransliterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2011, Google, International Business Machines Corporation
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/CompoundTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/CompoundTransliterator.java
index 709e6a1..3defa7e 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/CompoundTransliterator.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/CompoundTransliterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/EscapeTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/EscapeTransliterator.java
index 2ceec92..0d7d91b 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/EscapeTransliterator.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/EscapeTransliterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2001-2011, International Business Machines
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/FunctionReplacer.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/FunctionReplacer.java
index a11f453..886d85e 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/FunctionReplacer.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/FunctionReplacer.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2002-2010, International Business Machines Corporation
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/LowercaseTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/LowercaseTransliterator.java
index dfed352..d75cb2a 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/LowercaseTransliterator.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/LowercaseTransliterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/NameUnicodeTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/NameUnicodeTransliterator.java
index 8c4383b..4da2c10 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/NameUnicodeTransliterator.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/NameUnicodeTransliterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 1996-2011, International Business Machines Corporation and
  * others. All Rights Reserved.
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/NormalizationTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/NormalizationTransliterator.java
index 8877882..b76a0fc 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/NormalizationTransliterator.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/NormalizationTransliterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  *   Copyright (C) 2001-2014, International Business Machines
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/NullTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/NullTransliterator.java
index c95386e..82ff56e 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/NullTransliterator.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/NullTransliterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/RemoveTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/RemoveTransliterator.java
index e9b38d6..a8b931a 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/RemoveTransliterator.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/RemoveTransliterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/RuleBasedTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/RuleBasedTransliterator.java
index be3beb6..33c9588 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/RuleBasedTransliterator.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/RuleBasedTransliterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/SourceTargetUtility.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/SourceTargetUtility.java
index f4aa52a..8a47ca8 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/SourceTargetUtility.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/SourceTargetUtility.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2010-2011, Google, International Business Machines            *
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/StringMatcher.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/StringMatcher.java
index fb56884..d34b99b 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/StringMatcher.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/StringMatcher.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2004, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/StringReplacer.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/StringReplacer.java
index 3bd8d0e..f761e47 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/StringReplacer.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/StringReplacer.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2002-2007, International Business Machines Corporation
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/TitlecaseTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/TitlecaseTransliterator.java
index 96f11c8..c3986b8 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/TitlecaseTransliterator.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/TitlecaseTransliterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 1996-2011, International Business Machines Corporation and
  * others. All Rights Reserved.
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliterationRule.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliterationRule.java
index 270a8a7..33821d7 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliterationRule.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliterationRule.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliterationRuleSet.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliterationRuleSet.java
index 3dbfa35..c269b7f 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliterationRuleSet.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliterationRuleSet.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/Transliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/Transliterator.java
index 01be8a9..6966a7c 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/Transliterator.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/Transliterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliteratorIDParser.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliteratorIDParser.java
index 54487c5..4652712 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliteratorIDParser.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliteratorIDParser.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2002-2011, International Business Machines Corporation
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliteratorParser.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliteratorParser.java
index 5398021..8ed20d3 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliteratorParser.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliteratorParser.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2001-2011, International Business Machines
@@ -1493,7 +1493,7 @@
                 throw new RuntimeException("Variable range exhausted");
             }
             c = variableNext++;
-            // Set a placeholder in the master variables vector that will be
+            // Set a placeholder in the primary variables vector that will be
             // filled in later by setSegmentObject().  We know that we will get
             // called first because setSegmentObject() will call us.
             variablesVector.add(null);
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliteratorRegistry.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliteratorRegistry.java
index 2960310..9d5ae19 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliteratorRegistry.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/TransliteratorRegistry.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2001-2016, International Business Machines
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/UnescapeTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/UnescapeTransliterator.java
index 15b00f5..4b8995f 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/UnescapeTransliterator.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/UnescapeTransliterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2001-2011, International Business Machines
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/UnicodeNameTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/UnicodeNameTransliterator.java
index 6a7d16e..472d1b3 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/UnicodeNameTransliterator.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/UnicodeNameTransliterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 1996-2010, International Business Machines Corporation and
  * others. All Rights Reserved.
diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/UppercaseTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/UppercaseTransliterator.java
index bd9e3fe..cbfae32 100644
--- a/icu4j/main/classes/translit/src/com/ibm/icu/text/UppercaseTransliterator.java
+++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/UppercaseTransliterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/shared/build/common-targets.xml b/icu4j/main/shared/build/common-targets.xml
index 6f85a99..f007dc4 100644
--- a/icu4j/main/shared/build/common-targets.xml
+++ b/icu4j/main/shared/build/common-targets.xml
@@ -1,6 +1,6 @@
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *******************************************************************************
 * Copyright (C) 2009-2016, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
diff --git a/icu4j/main/shared/build/common.properties b/icu4j/main/shared/build/common.properties
index 851a8ad..c448fed 100644
--- a/icu4j/main/shared/build/common.properties
+++ b/icu4j/main/shared/build/common.properties
@@ -6,12 +6,12 @@
 #*******************************************************************************
 
 # Version numbers, etc.
-icu4j.spec.version = 67
-icu4j.impl.version = 67.1
-icu4j.data.version = 67
+icu4j.spec.version = 68
+icu4j.impl.version = 68.2
+icu4j.data.version = 68
 default.exec.env = JavaSE-1.7
 
-copyright = \u00A9 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html#License
+copyright = \u00A9 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html
 
 # Standard directory structure
 src.dir = src
diff --git a/icu4j/main/shared/data/Transliterator_Han_Latin_Definition.txt b/icu4j/main/shared/data/Transliterator_Han_Latin_Definition.txt
index 54bfa3d..1d25c0d 100644
--- a/icu4j/main/shared/data/Transliterator_Han_Latin_Definition.txt
+++ b/icu4j/main/shared/data/Transliterator_Han_Latin_Definition.txt
@@ -1,5 +1,5 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #--------------------------------------------------------------------
 # Copyright (c) 1999-2004, International Business Machines
 # Corporation and others. All Rights Reserved.
diff --git a/icu4j/main/shared/data/Transliterator_Han_Latin_EDICT.txt b/icu4j/main/shared/data/Transliterator_Han_Latin_EDICT.txt
index 633c19d..159d073 100644
--- a/icu4j/main/shared/data/Transliterator_Han_Latin_EDICT.txt
+++ b/icu4j/main/shared/data/Transliterator_Han_Latin_EDICT.txt
@@ -1,5 +1,5 @@
 # © 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #--------------------------------------------------------------------
 # Copyright (c) 1999-2004, International Business Machines
 # Corporation and others. All Rights Reserved.
diff --git a/icu4j/main/shared/data/icudata.jar b/icu4j/main/shared/data/icudata.jar
index 2df5e23..5b961df 100644
--- a/icu4j/main/shared/data/icudata.jar
+++ b/icu4j/main/shared/data/icudata.jar
Binary files differ
diff --git a/icu4j/main/shared/data/icutzdata.jar b/icu4j/main/shared/data/icutzdata.jar
index b3e010e..63536fa 100644
--- a/icu4j/main/shared/data/icutzdata.jar
+++ b/icu4j/main/shared/data/icutzdata.jar
Binary files differ
diff --git a/icu4j/main/shared/data/security.policy b/icu4j/main/shared/data/security.policy
index b857c34..1fe8118 100644
--- a/icu4j/main/shared/data/security.policy
+++ b/icu4j/main/shared/data/security.policy
@@ -1,5 +1,5 @@
 //#* © 2016 and later: Unicode, Inc. and others.
-//#* License & terms of use: http://www.unicode.org/copyright.html#License
+//#* License & terms of use: http://www.unicode.org/copyright.html
 //#
 //#*******************************************************************************
 //#* Copyright (C) 1997-2015, International Business Machines Corporation and    *
@@ -57,4 +57,4 @@
 grant codebase "file:${user.dir}/icu4jtests.jar"
 {
     permission java.io.FilePermission "${/}${user.dir}${/}icu4j.jar", "read";
-};
\ No newline at end of file
+};
diff --git a/icu4j/main/shared/data/testdata.jar b/icu4j/main/shared/data/testdata.jar
index c19602c..659b1e8 100644
--- a/icu4j/main/shared/data/testdata.jar
+++ b/icu4j/main/shared/data/testdata.jar
Binary files differ
diff --git a/icu4j/main/shared/licenses/LICENSE b/icu4j/main/shared/licenses/LICENSE
index e7f98ed..5d664a0 100644
--- a/icu4j/main/shared/licenses/LICENSE
+++ b/icu4j/main/shared/licenses/LICENSE
@@ -284,9 +284,9 @@
  #  Copyright (c) 2013 International Business Machines Corporation
  #  and others. All Rights Reserved.
  #
- # Project: http://code.google.com/p/lao-dictionary/
- # Dictionary: http://lao-dictionary.googlecode.com/git/Lao-Dictionary.txt
- # License: http://lao-dictionary.googlecode.com/git/Lao-Dictionary-LICENSE.txt
+ # Project: https://github.com/veer66/lao-dictionary
+ # Dictionary: https://github.com/veer66/lao-dictionary/blob/master/Lao-Dictionary.txt
+ # License: https://github.com/veer66/lao-dictionary/blob/master/Lao-Dictionary-LICENSE.txt
  #              (copied below)
  #
  #  This file is derived from the above dictionary, with slight
diff --git a/icu4j/main/shared/licenses/license.html b/icu4j/main/shared/licenses/license.html
index 25d9c01..e049d42 100644
--- a/icu4j/main/shared/licenses/license.html
+++ b/icu4j/main/shared/licenses/license.html
@@ -11,7 +11,7 @@
     The ICU license is now in plain text format, see <a href="./LICENSE">LICENSE</a>.
 Update links and software appropriately.
   </p>
-  <i>© 2016 and later: Unicode, Inc. and others. License &amp; terms of use: http://www.unicode.org/copyright.html#License</i>
+  <i>© 2016 and later: Unicode, Inc. and others. License &amp; terms of use: http://www.unicode.org/copyright.html</i>
   <!-- i>Copyright (c) 1995-2016 International Business Machines Corporation and others</i -->
 
 </body>
diff --git a/icu4j/main/tests/charset/.settings/org.eclipse.jdt.ui.prefs b/icu4j/main/tests/charset/.settings/org.eclipse.jdt.ui.prefs
index 3680fab..d733db1 100644
--- a/icu4j/main/tests/charset/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/main/tests/charset/.settings/org.eclipse.jdt.ui.prefs
@@ -7,7 +7,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/main/tests/charset/build.properties b/icu4j/main/tests/charset/build.properties
index a9d9bc6..0d6234a 100644
--- a/icu4j/main/tests/charset/build.properties
+++ b/icu4j/main/tests/charset/build.properties
@@ -1,6 +1,6 @@
 #*******************************************************************************
 # Copyright (C) 2016 and later: Unicode, Inc. and others.                      *
-# License & terms of use: http://www.unicode.org/copyright.html#License        *
+# License & terms of use: http://www.unicode.org/copyright.html        *
 #*******************************************************************************
 #*******************************************************************************
 #* Copyright (C) 2009, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/charset/build.xml b/icu4j/main/tests/charset/build.xml
index 10b8876..8b5a6a1 100644
--- a/icu4j/main/tests/charset/build.xml
+++ b/icu4j/main/tests/charset/build.xml
@@ -1,7 +1,7 @@
 <!--
 *******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                     *
-* License & terms of use: http://www.unicode.org/copyright.html#License       *
+* License & terms of use: http://www.unicode.org/copyright.html       *
 *******************************************************************************
 *******************************************************************************
 * Copyright (C) 2009-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestCharset.java b/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestCharset.java
index 0eaba89..6ddd4cb 100644
--- a/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestCharset.java
+++ b/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestCharset.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2006-2015, International Business Machines Corporation and
diff --git a/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestConversion.java b/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestConversion.java
index 8e6fd4b..0b50850 100644
--- a/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestConversion.java
+++ b/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestConversion.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestSelection.java b/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestSelection.java
index f259bdb..4ba80fe 100644
--- a/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestSelection.java
+++ b/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestSelection.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 1996-2013, International Business Machines Corporation and   *
diff --git a/icu4j/main/tests/collate/.settings/org.eclipse.jdt.ui.prefs b/icu4j/main/tests/collate/.settings/org.eclipse.jdt.ui.prefs
index 3680fab..d733db1 100644
--- a/icu4j/main/tests/collate/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/main/tests/collate/.settings/org.eclipse.jdt.ui.prefs
@@ -7,7 +7,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/main/tests/collate/build.properties b/icu4j/main/tests/collate/build.properties
index a9d9bc6..0d6234a 100644
--- a/icu4j/main/tests/collate/build.properties
+++ b/icu4j/main/tests/collate/build.properties
@@ -1,6 +1,6 @@
 #*******************************************************************************
 # Copyright (C) 2016 and later: Unicode, Inc. and others.                      *
-# License & terms of use: http://www.unicode.org/copyright.html#License        *
+# License & terms of use: http://www.unicode.org/copyright.html        *
 #*******************************************************************************
 #*******************************************************************************
 #* Copyright (C) 2009, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/collate/build.xml b/icu4j/main/tests/collate/build.xml
index 707ad8d..130987f 100644
--- a/icu4j/main/tests/collate/build.xml
+++ b/icu4j/main/tests/collate/build.xml
@@ -1,7 +1,7 @@
 <!--
 ********************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                      *
-* License & terms of use: http://www.unicode.org/copyright.html#License        *
+* License & terms of use: http://www.unicode.org/copyright.html        *
 ********************************************************************************
 ********************************************************************************
 * Copyright (C) 2009-2014, International Business Machines Corporation and     *
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/data/riwords.txt b/icu4j/main/tests/collate/src/com/ibm/icu/dev/data/riwords.txt
index 446a1df..2bb6ecd 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/data/riwords.txt
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/data/riwords.txt
@@ -1,6 +1,6 @@
 #*******************************************************************************
 # © 2016 and later: Unicode, Inc. and others.                                  *
-# License & terms of use: http://www.unicode.org/copyright.html#License        *
+# License & terms of use: http://www.unicode.org/copyright.html        *
 #*******************************************************************************
 #* Copyright (C) 2003-2012, International Business Machines Corporation and    *
 #* others. All Rights Reserved.                                                *
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/AlphabeticIndexTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/AlphabeticIndexTest.java
index db75f59..6f07585 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/AlphabeticIndexTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/AlphabeticIndexTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and
@@ -84,7 +84,7 @@
             /* Latvian*/    {"lv", "A:B:C:\u010C:D:E:F:G:\u0122:H:I:J:K:\u0136:L:\u013B:M:N:\u0145:O:P:Q:R:S:\u0160:T:U:V:W:X:Z:\u017D"},
             /* Norwegian Bokm\u00E5l*/  {"nb", "A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:\u00C6:\u00D8:\u00C5"},
             /* Dutch*/  {"nl", "A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z"},
-            /* Polish*/ {"pl", "A:\u0104:B:C:\u0106:D:E:\u0118:F:G:H:I:J:K:L:\u0141:M:N:\u0143:O:\u00D3:P:Q:R:S:\u015A:T:U:V:W:X:Y:Z:\u0179:\u017B"},
+            /* Polish*/ {"pl", "A:B:C:\u0106:D:E:F:G:H:I:J:K:L:\u0141:M:N:O:\u00D3:P:Q:R:S:\u015A:T:U:V:W:X:Y:Z:\u0179:\u017B"},
             /* Portuguese*/ {"pt", "A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z"},
             /* Romanian*/   {"ro", "A:\u0102:\u00C2:B:C:D:E:F:G:H:I:\u00CE:J:K:L:M:N:O:P:Q:R:S:\u0218:T:\u021A:U:V:W:X:Y:Z"},
             /* Russian*/    {"ru", "\u0410:\u0411:\u0412:\u0413:\u0414:\u0415:\u0416:\u0417:\u0418:\u0419:\u041A:\u041B:\u041C:\u041D:\u041E:\u041F:\u0420:\u0421:\u0422:\u0423:\u0424:\u0425:\u0426:\u0427:\u0428:\u0429:\u042B:\u042D:\u042E:\u042F"},
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationAPITest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationAPITest.java
index 3b595f9..8fccf66 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationAPITest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationAPITest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationChineseTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationChineseTest.java
index 4c6de0c..0c42830 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationChineseTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationChineseTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2010, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationCreationMethodTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationCreationMethodTest.java
index 1c248de..82ef660 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationCreationMethodTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationCreationMethodTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationCurrencyTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationCurrencyTest.java
index b1366b0..e94f7ea 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationCurrencyTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationCurrencyTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationDummyTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationDummyTest.java
index c785d3e..03dca26 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationDummyTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationDummyTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationEnglishTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationEnglishTest.java
index 8f4608b..582db02 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationEnglishTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationEnglishTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationFinnishTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationFinnishTest.java
index 7e4023c..0b89f8f 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationFinnishTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationFinnishTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationFrenchTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationFrenchTest.java
index d3d77f9..c229b83 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationFrenchTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationFrenchTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationFrozenMonkeyTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationFrozenMonkeyTest.java
index bb001e6..62c7a49 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationFrozenMonkeyTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationFrozenMonkeyTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationGermanTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationGermanTest.java
index 8b97d13..bc64c5e 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationGermanTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationGermanTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java
index 15ff81d..36a25bd 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationKanaTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationKanaTest.java
index b9745ec..140649f 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationKanaTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationKanaTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationMiscTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationMiscTest.java
index ac78e49..4d27f6f 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationMiscTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationMiscTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2016, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationMonkeyTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationMonkeyTest.java
index e2bb9f4..fdde805 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationMonkeyTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationMonkeyTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationRegressionTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationRegressionTest.java
index 40250eb..966e974 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationRegressionTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationRegressionTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationServiceTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationServiceTest.java
index 4be8e1c..c308123 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationServiceTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationServiceTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationSpanishTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationSpanishTest.java
index 11b55a9..1221574 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationSpanishTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationSpanishTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationTest.java
index 1a4b2fa..c0136d7 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2015, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationThaiTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationThaiTest.java
index 07ad77b..fbb3516 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationThaiTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationThaiTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2015, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationThreadTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationThreadTest.java
index 27c04c7..dbccd2b 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationThreadTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationThreadTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationTurkishTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationTurkishTest.java
index aa39111..9af7d09 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationTurkishTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationTurkishTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/Counter.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/Counter.java
index 4617283..d606598 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/Counter.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/Counter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/G7CollationTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/G7CollationTest.java
index cd45c2d..abeebdc 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/G7CollationTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/G7CollationTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/LotusCollationKoreanTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/LotusCollationKoreanTest.java
index 06280bb..bd0c27b 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/LotusCollationKoreanTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/LotusCollationKoreanTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/UCAConformanceTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/UCAConformanceTest.java
index f2ea024..60aa2bc 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/UCAConformanceTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/collator/UCAConformanceTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
  * Copyright (c) 2002-2014, International Business Machines Corporation and
  * others. All Rights Reserved.
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java
index cd5c746..2c5219c 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2016, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/format/RbnfLenientScannerTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/format/RbnfLenientScannerTest.java
index ad8dfa3..fcc6d78 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/format/RbnfLenientScannerTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/format/RbnfLenientScannerTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/search/SearchTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/search/SearchTest.java
index 7b1bab3..a669f8c 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/search/SearchTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/search/SearchTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/search/package.html b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/search/package.html
index 10d358b..31e46fd 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/search/package.html
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/search/package.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--  Copyright (C) 2016 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--  Copyright (C) 2000-2010, International Business Machines Corporation and
   others. All Rights Reserved.
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/util/ICUResourceBundleCollationTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/util/ICUResourceBundleCollationTest.java
index 52f6f93..03d4f0b 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/util/ICUResourceBundleCollationTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/util/ICUResourceBundleCollationTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2009-2016, International Business Machines Corporation and
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/util/LocaleAliasCollationTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/util/LocaleAliasCollationTest.java
index ce1dafd..8f1f43f 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/util/LocaleAliasCollationTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/util/LocaleAliasCollationTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/util/ULocaleCollationTest.java b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/util/ULocaleCollationTest.java
index 0562e1f..d92e8b8 100644
--- a/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/util/ULocaleCollationTest.java
+++ b/icu4j/main/tests/collate/src/com/ibm/icu/dev/test/util/ULocaleCollationTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2015, International Business Machines
diff --git a/icu4j/main/tests/core/.settings/org.eclipse.jdt.ui.prefs b/icu4j/main/tests/core/.settings/org.eclipse.jdt.ui.prefs
index 3680fab..d733db1 100644
--- a/icu4j/main/tests/core/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/main/tests/core/.settings/org.eclipse.jdt.ui.prefs
@@ -7,7 +7,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/main/tests/core/build.properties b/icu4j/main/tests/core/build.properties
index a9d9bc6..0d6234a 100644
--- a/icu4j/main/tests/core/build.properties
+++ b/icu4j/main/tests/core/build.properties
@@ -1,6 +1,6 @@
 #*******************************************************************************
 # Copyright (C) 2016 and later: Unicode, Inc. and others.                      *
-# License & terms of use: http://www.unicode.org/copyright.html#License        *
+# License & terms of use: http://www.unicode.org/copyright.html        *
 #*******************************************************************************
 #*******************************************************************************
 #* Copyright (C) 2009, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/build.xml b/icu4j/main/tests/core/build.xml
index 11cb9b9..89724e1 100644
--- a/icu4j/main/tests/core/build.xml
+++ b/icu4j/main/tests/core/build.xml
@@ -1,7 +1,7 @@
 <!--
 *******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                     *
-* License & terms of use: http://www.unicode.org/copyright.html#License       *
+* License & terms of use: http://www.unicode.org/copyright.html       *
 *******************************************************************************
 *******************************************************************************
 * Copyright (C) 2009-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/TestDataElements_testtypes.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/TestDataElements_testtypes.java
index 166d138..51edd38 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/TestDataElements_testtypes.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/TestDataElements_testtypes.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2008, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/cldr/units/_readme.txt b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/cldr/units/_readme.txt
new file mode 100644
index 0000000..323c53f
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/cldr/units/_readme.txt
@@ -0,0 +1,6 @@
+# Test data for units: conversions and preferences
+#  Copyright © 1991-2020 Unicode, Inc.
+#  For terms of use, see http://www.unicode.org/copyright.html
+#  Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+#  CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+# The format may vary between folders or files.
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/cldr/units/unitPreferencesTest.txt b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/cldr/units/unitPreferencesTest.txt
new file mode 100644
index 0000000..b0dabe0
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/cldr/units/unitPreferencesTest.txt
@@ -0,0 +1,454 @@
+# Test data for unit preferences
+#  Copyright © 1991-2020 Unicode, Inc.
+#  For terms of use, see http://www.unicode.org/copyright.html
+#  Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+#  CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# Format:
+#	Quantity;	Usage;	Region;	Input (r);	Input (d);	Input Unit;	Output (r);	Output (d);	Output Unit
+#
+# Use: Convert the Input amount & unit according to the Usage and Region.
+#	 The result should match the Output amount and unit.
+#	 Both rational (r) and double64 (d) forms of the input and output amounts are supplied so that implementations
+#	 have two options for testing based on the precision in their implementations. For example:
+#	   3429 / 12500; 0.27432; meter;
+#	 The Output amount and Unit are repeated for mixed units. In such a case, only the smallest unit will have
+#	 both a rational and decimal amount; the others will have a single integer value, such as:
+#	   length; person-height; CA; 3429 / 12500; 0.27432; meter; 2; foot; 54 / 5; 10.8; inch
+#	 The input and output units are unit identifers; in particular, the output does not have further processing:
+#		 • no localization
+#		 • no adjustment for pluralization
+#		 • no formatted with the skeleton
+#		 • no suppression of zero values (for secondary -and- units such as pound in stone-and-pound)
+#
+# Generation: Set GENERATE_TESTS in TestUnits.java, and look at TestUnitPreferences results.
+
+area;	default;	001;	1100000;	1100000.0;	square-meter;	11 / 10;	1.1;	square-kilometer
+area;	default;	001;	1000000;	1000000.0;	square-meter;	1;	1.0;	square-kilometer
+area;	default;	001;	900000;	900000.0;	square-meter;	90;	90.0;	hectare
+area;	default;	001;	10000;	10000.0;	square-meter;	1;	1.0;	hectare
+area;	default;	001;	9000;	9000.0;	square-meter;	9000;	9000.0;	square-meter
+area;	default;	001;	1;	1.0;	square-meter;	1;	1.0;	square-meter
+area;	default;	001;	9 / 10;	0.9;	square-meter;	9000;	9000.0;	square-centimeter
+area;	default;	001;	1 / 10000;	1.0E-4;	square-meter;	1;	1.0;	square-centimeter
+area;	default;	001;	9 / 100000;	9.0E-5;	square-meter;	9 / 10;	0.9;	square-centimeter
+
+area;	default;	GB;	222577103232 / 78125;	2848986.9213696;	square-meter;	11 / 10;	1.1;	square-mile
+area;	default;	GB;	40468564224 / 15625;	2589988.110336;	square-meter;	1;	1.0;	square-mile
+area;	default;	GB;	182108539008 / 78125;	2330989.2993024;	square-meter;	576;	576.0;	acre
+area;	default;	GB;	316160658 / 78125;	4046.8564224;	square-meter;	1;	1.0;	acre
+area;	default;	GB;	1422722961 / 390625;	3642.17078016;	square-meter;	39204;	39204.0;	square-foot
+area;	default;	GB;	145161 / 1562500;	0.09290304;	square-meter;	1;	1.0;	square-foot
+area;	default;	GB;	1306449 / 15625000;	0.083612736;	square-meter;	648 / 5;	129.6;	square-inch
+area;	default;	GB;	16129 / 25000000;	6.4516E-4;	square-meter;	1;	1.0;	square-inch
+area;	default;	GB;	145161 / 250000000;	5.80644E-4;	square-meter;	9 / 10;	0.9;	square-inch
+
+area;	geograph;	001;	1100000;	1100000.0;	square-meter;	11 / 10;	1.1;	square-kilometer
+area;	geograph;	001;	1000000;	1000000.0;	square-meter;	1;	1.0;	square-kilometer
+area;	geograph;	001;	900000;	900000.0;	square-meter;	9 / 10;	0.9;	square-kilometer
+
+area;	geograph;	GB;	222577103232 / 78125;	2848986.9213696;	square-meter;	11 / 10;	1.1;	square-mile
+area;	geograph;	GB;	40468564224 / 15625;	2589988.110336;	square-meter;	1;	1.0;	square-mile
+area;	geograph;	GB;	182108539008 / 78125;	2330989.2993024;	square-meter;	9 / 10;	0.9;	square-mile
+
+area;	land;	001;	11000;	11000.0;	square-meter;	11 / 10;	1.1;	hectare
+area;	land;	001;	10000;	10000.0;	square-meter;	1;	1.0;	hectare
+area;	land;	001;	9000;	9000.0;	square-meter;	9 / 10;	0.9;	hectare
+
+area;	land;	GB;	1738883619 / 390625;	4451.54206464;	square-meter;	11 / 10;	1.1;	acre
+area;	land;	GB;	316160658 / 78125;	4046.8564224;	square-meter;	1;	1.0;	acre
+area;	land;	GB;	1422722961 / 390625;	3642.17078016;	square-meter;	9 / 10;	0.9;	acre
+
+concentration;	blood-glucose;	AG;	662435483600000000000000;	6.624354836E23;	item-per-cubic-meter;	11 / 10;	1.1;	millimole-per-liter
+concentration;	blood-glucose;	AG;	602214076000000000000000;	6.02214076E23;	item-per-cubic-meter;	1;	1.0;	millimole-per-liter
+concentration;	blood-glucose;	AG;	541992668400000000000000;	5.419926684E23;	item-per-cubic-meter;	9 / 10;	0.9;	millimole-per-liter
+
+concentration;	default;	001;	11 / 10;	1.1;	item-per-cubic-meter;	11 / 10;	1.1;	item-per-cubic-meter
+concentration;	default;	001;	1;	1.0;	item-per-cubic-meter;	1;	1.0;	item-per-cubic-meter
+concentration;	default;	001;	9 / 10;	0.9;	item-per-cubic-meter;	9 / 10;	0.9;	item-per-cubic-meter
+
+consumption;	default;	001;	11 / 1000000000;	1.1E-8;	cubic-meter-per-meter;	11 / 10;	1.1;	liter-per-100-kilometer
+consumption;	default;	001;	1 / 100000000;	1.0E-8;	cubic-meter-per-meter;	1;	1.0;	liter-per-100-kilometer
+consumption;	default;	001;	9 / 1000000000;	9.0E-9;	cubic-meter-per-meter;	9 / 10;	0.9;	liter-per-100-kilometer
+
+consumption;	vehicle-fuel;	001;	11 / 1000000000;	1.1E-8;	cubic-meter-per-meter;	11 / 10;	1.1;	liter-per-100-kilometer
+consumption;	vehicle-fuel;	001;	1 / 100000000;	1.0E-8;	cubic-meter-per-meter;	1;	1.0;	liter-per-100-kilometer
+consumption;	vehicle-fuel;	001;	9 / 1000000000;	9.0E-9;	cubic-meter-per-meter;	9 / 10;	0.9;	liter-per-100-kilometer
+
+consumption;	vehicle-fuel;	BR;	11 / 10000000;	1.1E-6;	cubic-meter-per-meter;	11 / 10;	1.1;	liter-per-kilometer
+consumption;	vehicle-fuel;	BR;	1 / 1000000;	1.0E-6;	cubic-meter-per-meter;	1;	1.0;	liter-per-kilometer
+consumption;	vehicle-fuel;	BR;	9 / 10000000;	9.0E-7;	cubic-meter-per-meter;	9 / 10;	0.9;	liter-per-kilometer
+
+consumption-inverse;	default;	001;	110000000;	1.1E8;	meter-per-cubic-meter;	11 / 10;	1.1;	kilometer-per-centiliter
+consumption-inverse;	default;	001;	100000000;	1.0E8;	meter-per-cubic-meter;	1;	1.0;	kilometer-per-centiliter
+consumption-inverse;	default;	001;	90000000;	9.0E7;	meter-per-cubic-meter;	9 / 10;	0.9;	kilometer-per-centiliter
+
+consumption-inverse;	vehicle-fuel;	001;	110000000;	1.1E8;	meter-per-cubic-meter;	11 / 10;	1.1;	kilometer-per-centiliter
+consumption-inverse;	vehicle-fuel;	001;	100000000;	1.0E8;	meter-per-cubic-meter;	1;	1.0;	kilometer-per-centiliter
+consumption-inverse;	vehicle-fuel;	001;	90000000;	9.0E7;	meter-per-cubic-meter;	9 / 10;	0.9;	kilometer-per-centiliter
+
+consumption-inverse;	vehicle-fuel;	US;	52800000000 / 112903;	467658.0781732992;	meter-per-cubic-meter;	11 / 10;	1.1;	mile-per-gallon
+consumption-inverse;	vehicle-fuel;	US;	48000000000 / 112903;	425143.707430272;	meter-per-cubic-meter;	1;	1.0;	mile-per-gallon
+consumption-inverse;	vehicle-fuel;	US;	43200000000 / 112903;	382629.3366872448;	meter-per-cubic-meter;	9 / 10;	0.9;	mile-per-gallon
+
+consumption-inverse;	vehicle-fuel;	CA;	177027840000 / 454609;	389406.8089281118;	meter-per-cubic-meter;	11 / 10;	1.1;	mile-per-gallon-imperial
+consumption-inverse;	vehicle-fuel;	CA;	160934400000 / 454609;	354006.1899346471;	meter-per-cubic-meter;	1;	1.0;	mile-per-gallon-imperial
+consumption-inverse;	vehicle-fuel;	CA;	144840960000 / 454609;	318605.5709411824;	meter-per-cubic-meter;	9 / 10;	0.9;	mile-per-gallon-imperial
+
+duration;	default;	001;	95040;	95040.0;	second;	11 / 10;	1.1;	day
+duration;	default;	001;	86400;	86400.0;	second;	1;	1.0;	day
+duration;	default;	001;	77760;	77760.0;	second;	108 / 5;	21.6;	hour
+duration;	default;	001;	3600;	3600.0;	second;	1;	1.0;	hour
+duration;	default;	001;	3240;	3240.0;	second;	54;	54.0;	minute
+duration;	default;	001;	60;	60.0;	second;	1;	1.0;	minute
+duration;	default;	001;	54;	54.0;	second;	54;	54.0;	second
+duration;	default;	001;	1;	1.0;	second;	1;	1.0;	second
+duration;	default;	001;	9 / 10;	0.9;	second;	900;	900.0;	millisecond
+duration;	default;	001;	1 / 1000;	0.001;	second;	1;	1.0;	millisecond
+duration;	default;	001;	9 / 10000;	9.0E-4;	second;	900;	900.0;	microsecond
+duration;	default;	001;	1 / 1000000;	1.0E-6;	second;	1;	1.0;	microsecond
+duration;	default;	001;	9 / 10000000;	9.0E-7;	second;	900;	900.0;	nanosecond
+duration;	default;	001;	1 / 1000000000;	1.0E-9;	second;	1;	1.0;	nanosecond
+duration;	default;	001;	9 / 10000000000;	9.0E-10;	second;	9 / 10;	0.9;	nanosecond
+
+duration;	media;	001;	66;	66.0;	second;	1;	minute;	6;	6.0;	second
+duration;	media;	001;	60;	60.0;	second;	1;	minute;	0;	0.0;	second
+duration;	media;	001;	54;	54.0;	second;	54;	54.0;	second
+duration;	media;	001;	1;	1.0;	second;	1;	1.0;	second
+duration;	media;	001;	9 / 10;	0.9;	second;	9 / 10;	0.9;	second
+
+energy;	default;	001;	3960000;	3960000.0;	kilogram-square-meter-per-square-second;	11 / 10;	1.1;	kilowatt-hour
+energy;	default;	001;	3600000;	3600000.0;	kilogram-square-meter-per-square-second;	1;	1.0;	kilowatt-hour
+energy;	default;	001;	3240000;	3240000.0;	kilogram-square-meter-per-square-second;	9 / 10;	0.9;	kilowatt-hour
+
+energy;	food;	US;	23012 / 5;	4602.4;	kilogram-square-meter-per-square-second;	11 / 10;	1.1;	foodcalorie
+energy;	food;	US;	4184;	4184.0;	kilogram-square-meter-per-square-second;	1;	1.0;	foodcalorie
+energy;	food;	US;	18828 / 5;	3765.6;	kilogram-square-meter-per-square-second;	9 / 10;	0.9;	foodcalorie
+
+energy;	food;	001;	23012 / 5;	4602.4;	kilogram-square-meter-per-square-second;	11 / 10;	1.1;	kilocalorie
+energy;	food;	001;	4184;	4184.0;	kilogram-square-meter-per-square-second;	1;	1.0;	kilocalorie
+energy;	food;	001;	18828 / 5;	3765.6;	kilogram-square-meter-per-square-second;	9 / 10;	0.9;	kilocalorie
+
+length;	default;	001;	1100;	1100.0;	meter;	11 / 10;	1.1;	kilometer
+length;	default;	001;	1000;	1000.0;	meter;	1;	1.0;	kilometer
+length;	default;	001;	900;	900.0;	meter;	900;	900.0;	meter
+length;	default;	001;	1;	1.0;	meter;	1;	1.0;	meter
+length;	default;	001;	9 / 10;	0.9;	meter;	90;	90.0;	centimeter
+length;	default;	001;	1 / 100;	0.01;	meter;	1;	1.0;	centimeter
+length;	default;	001;	9 / 1000;	0.009;	meter;	9 / 10;	0.9;	centimeter
+
+length;	default;	GB;	1106424 / 625;	1770.2784;	meter;	11 / 10;	1.1;	mile
+length;	default;	GB;	201168 / 125;	1609.344;	meter;	1;	1.0;	mile
+length;	default;	GB;	905256 / 625;	1448.4096;	meter;	4752;	4752.0;	foot
+length;	default;	GB;	381 / 1250;	0.3048;	meter;	1;	1.0;	foot
+length;	default;	GB;	3429 / 12500;	0.27432;	meter;	54 / 5;	10.8;	inch
+length;	default;	GB;	127 / 5000;	0.0254;	meter;	1;	1.0;	inch
+length;	default;	GB;	1143 / 50000;	0.02286;	meter;	9 / 10;	0.9;	inch
+
+length;	focal-length;	001;	11 / 10000;	0.0011;	meter;	11 / 10;	1.1;	millimeter
+length;	focal-length;	001;	1 / 1000;	0.001;	meter;	1;	1.0;	millimeter
+length;	focal-length;	001;	9 / 10000;	9.0E-4;	meter;	9 / 10;	0.9;	millimeter
+
+length;	person;	001;	11 / 1000;	0.011;	meter;	11 / 10;	1.1;	centimeter
+length;	person;	001;	1 / 100;	0.01;	meter;	1;	1.0;	centimeter
+length;	person;	001;	9 / 1000;	0.009;	meter;	9 / 10;	0.9;	centimeter
+
+length;	person;	CA;	1397 / 50000;	0.02794;	meter;	11 / 10;	1.1;	inch
+length;	person;	CA;	127 / 5000;	0.0254;	meter;	1;	1.0;	inch
+length;	person;	CA;	1143 / 50000;	0.02286;	meter;	9 / 10;	0.9;	inch
+
+length;	person-height;	001;	11 / 1000;	0.011;	meter;	11 / 10;	1.1;	centimeter
+length;	person-height;	001;	1 / 100;	0.01;	meter;	1;	1.0;	centimeter
+length;	person-height;	001;	9 / 1000;	0.009;	meter;	9 / 10;	0.9;	centimeter
+
+length;	person-height;	CA;	11811 / 12500;	0.94488;	meter;	3;	foot;	6 / 5;	1.2;	inch
+length;	person-height;	CA;	1143 / 1250;	0.9144;	meter;	3;	foot;	0;	0.0;	inch
+length;	person-height;	CA;	11049 / 12500;	0.88392;	meter;	174 / 5;	34.8;	inch
+length;	person-height;	CA;	127 / 5000;	0.0254;	meter;	1;	1.0;	inch
+length;	person-height;	CA;	1143 / 50000;	0.02286;	meter;	9 / 10;	0.9;	inch
+
+length;	person-height;	AT;	11 / 10;	1.1;	meter;	1;	meter;	10;	10.0;	centimeter
+length;	person-height;	AT;	1;	1.0;	meter;	1;	meter;	0;	0.0;	centimeter
+length;	person-height;	AT;	9 / 10;	0.9;	meter;	0;	meter;	90;	90.0;	centimeter
+
+length;	rainfall;	BR;	11 / 1000;	0.011;	meter;	11 / 10;	1.1;	centimeter
+length;	rainfall;	BR;	1 / 100;	0.01;	meter;	1;	1.0;	centimeter
+length;	rainfall;	BR;	9 / 1000;	0.009;	meter;	9 / 10;	0.9;	centimeter
+
+length;	rainfall;	US;	1397 / 50000;	0.02794;	meter;	11 / 10;	1.1;	inch
+length;	rainfall;	US;	127 / 5000;	0.0254;	meter;	1;	1.0;	inch
+length;	rainfall;	US;	1143 / 50000;	0.02286;	meter;	9 / 10;	0.9;	inch
+
+length;	rainfall;	001;	11 / 10000;	0.0011;	meter;	11 / 10;	1.1;	millimeter
+length;	rainfall;	001;	1 / 1000;	0.001;	meter;	1;	1.0;	millimeter
+length;	rainfall;	001;	9 / 10000;	9.0E-4;	meter;	9 / 10;	0.9;	millimeter
+
+length;	road;	001;	1000;	1000.0;	meter;	1;	1.0;	kilometer
+length;	road;	001;	900;	900.0;	meter;	9 / 10;	0.9;	kilometer
+length;	road;	001;	800;	800.0;	meter;	800;	800.0;	meter
+length;	road;	001;	300;	300.0;	meter;	300;	300.0;	meter
+length;	road;	001;	2999 / 10;	299.9;	meter;	2999 / 10;	299.9;	meter
+length;	road;	001;	1;	1.0;	meter;	1;	1.0;	meter
+length;	road;	001;	9 / 10;	0.9;	meter;	9 / 10;	0.9;	meter
+
+length;	road;	US;	603504 / 625;	965.6064;	meter;	3 / 5;	0.6;	mile
+length;	road;	US;	100584 / 125;	804.672;	meter;	1 / 2;	0.5;	mile
+length;	road;	US;	402336 / 625;	643.7376;	meter;	2112;	2112.0;	foot
+length;	road;	US;	762 / 25;	30.48;	meter;	100;	100.0;	foot
+length;	road;	US;	380619 / 12500;	30.44952;	meter;	999 / 10;	99.9;	foot
+length;	road;	US;	381 / 1250;	0.3048;	meter;	1;	1.0;	foot
+length;	road;	US;	3429 / 12500;	0.27432;	meter;	9 / 10;	0.9;	foot
+
+length;	road;	GB;	603504 / 625;	965.6064;	meter;	3 / 5;	0.6;	mile
+length;	road;	GB;	100584 / 125;	804.672;	meter;	1 / 2;	0.5;	mile
+length;	road;	GB;	402336 / 625;	643.7376;	meter;	704;	704.0;	yard
+length;	road;	GB;	2286 / 25;	91.44;	meter;	100;	100.0;	yard
+length;	road;	GB;	1141857 / 12500;	91.34856;	meter;	999 / 10;	99.9;	yard
+length;	road;	GB;	1143 / 1250;	0.9144;	meter;	1;	1.0;	yard
+length;	road;	GB;	10287 / 12500;	0.82296;	meter;	9 / 10;	0.9;	yard
+
+length;	road;	SE;	11000;	11000.0;	meter;	11 / 10;	1.1;	mile-scandinavian
+length;	road;	SE;	10000;	10000.0;	meter;	1;	1.0;	mile-scandinavian
+length;	road;	SE;	9000;	9000.0;	meter;	9;	9.0;	kilometer
+length;	road;	SE;	1000;	1000.0;	meter;	1;	1.0;	kilometer
+length;	road;	SE;	900;	900.0;	meter;	900;	900.0;	meter
+length;	road;	SE;	300;	300.0;	meter;	300;	300.0;	meter
+length;	road;	SE;	2999 / 10;	299.9;	meter;	2999 / 10;	299.9;	meter
+length;	road;	SE;	1;	1.0;	meter;	1;	1.0;	meter
+length;	road;	SE;	9 / 10;	0.9;	meter;	9 / 10;	0.9;	meter
+
+length;	snowfall;	001;	11 / 1000;	0.011;	meter;	11 / 10;	1.1;	centimeter
+length;	snowfall;	001;	1 / 100;	0.01;	meter;	1;	1.0;	centimeter
+length;	snowfall;	001;	9 / 1000;	0.009;	meter;	9 / 10;	0.9;	centimeter
+
+length;	snowfall;	US;	1397 / 50000;	0.02794;	meter;	11 / 10;	1.1;	inch
+length;	snowfall;	US;	127 / 5000;	0.0254;	meter;	1;	1.0;	inch
+length;	snowfall;	US;	1143 / 50000;	0.02286;	meter;	9 / 10;	0.9;	inch
+
+length;	vehicle;	GB;	4191 / 12500;	0.33528;	meter;	1;	foot;	6 / 5;	1.2;	inch
+length;	vehicle;	GB;	381 / 1250;	0.3048;	meter;	1;	foot;	0;	0.0;	inch
+length;	vehicle;	GB;	3429 / 12500;	0.27432;	meter;	0;	foot;	54 / 5;	10.8;	inch
+
+length;	vehicle;	001;	11 / 10;	1.1;	meter;	11 / 10;	1.1;	meter
+length;	vehicle;	001;	1;	1.0;	meter;	1;	1.0;	meter
+length;	vehicle;	001;	9 / 10;	0.9;	meter;	9 / 10;	0.9;	meter
+
+length;	vehicle;	MX;	11 / 10;	1.1;	meter;	1;	meter;	10;	10.0;	centimeter
+length;	vehicle;	MX;	1;	1.0;	meter;	1;	meter;	0;	0.0;	centimeter
+length;	vehicle;	MX;	9 / 10;	0.9;	meter;	0;	meter;	90;	90.0;	centimeter
+
+length;	visiblty;	001;	200;	200.0;	meter;	1 / 5;	0.2;	kilometer
+length;	visiblty;	001;	100;	100.0;	meter;	1 / 10;	0.1;	kilometer
+length;	visiblty;	001;	1;	1.0;	meter;	1;	1.0;	meter
+length;	visiblty;	001;	9 / 10;	0.9;	meter;	9 / 10;	0.9;	meter
+length;	visiblty;	001;	0;	0.0;	meter;	0;	0.0;	meter
+
+length;	visiblty;	DE;	11 / 10;	1.1;	meter;	11 / 10;	1.1;	meter
+length;	visiblty;	DE;	1;	1.0;	meter;	1;	1.0;	meter
+length;	visiblty;	DE;	9 / 10;	0.9;	meter;	9 / 10;	0.9;	meter
+
+length;	visiblty;	GB;	1106424 / 625;	1770.2784;	meter;	11 / 10;	1.1;	mile
+length;	visiblty;	GB;	201168 / 125;	1609.344;	meter;	1;	1.0;	mile
+length;	visiblty;	GB;	905256 / 625;	1448.4096;	meter;	4752;	4752.0;	foot
+length;	visiblty;	GB;	381 / 1250;	0.3048;	meter;	1;	1.0;	foot
+length;	visiblty;	GB;	3429 / 12500;	0.27432;	meter;	9 / 10;	0.9;	foot
+
+mass;	default;	001;	1100;	1100.0;	kilogram;	11 / 10;	1.1;	metric-ton
+mass;	default;	001;	1000;	1000.0;	kilogram;	1;	1.0;	metric-ton
+mass;	default;	001;	900;	900.0;	kilogram;	900;	900.0;	kilogram
+mass;	default;	001;	1;	1.0;	kilogram;	1;	1.0;	kilogram
+mass;	default;	001;	9 / 10;	0.9;	kilogram;	900;	900.0;	gram
+mass;	default;	001;	1 / 1000;	0.001;	kilogram;	1;	1.0;	gram
+mass;	default;	001;	9 / 10000;	9.0E-4;	kilogram;	900;	900.0;	milligram
+mass;	default;	001;	1 / 1000000;	1.0E-6;	kilogram;	1;	1.0;	milligram
+mass;	default;	001;	9 / 10000000;	9.0E-7;	kilogram;	900;	900.0;	microgram
+mass;	default;	001;	1 / 1000000000;	1.0E-9;	kilogram;	1;	1.0;	microgram
+mass;	default;	001;	9 / 10000000000;	9.0E-10;	kilogram;	9 / 10;	0.9;	microgram
+
+mass;	default;	GB;	498951607 / 500000;	997.903214;	kilogram;	11 / 10;	1.1;	ton
+mass;	default;	GB;	45359237 / 50000;	907.18474;	kilogram;	1;	1.0;	ton
+mass;	default;	GB;	408233133 / 500000;	816.466266;	kilogram;	1800;	1800.0;	pound
+mass;	default;	GB;	45359237 / 100000000;	0.45359237;	kilogram;	1;	1.0;	pound
+mass;	default;	GB;	408233133 / 1000000000;	0.408233133;	kilogram;	72 / 5;	14.4;	ounce
+mass;	default;	GB;	45359237 / 1600000000;	0.028349523125;	kilogram;	1;	1.0;	ounce
+mass;	default;	GB;	408233133 / 16000000000;	0.0255145708125;	kilogram;	9 / 10;	0.9;	ounce
+
+mass;	person;	001;	11 / 10;	1.1;	kilogram;	11 / 10;	1.1;	kilogram
+mass;	person;	001;	1;	1.0;	kilogram;	1;	1.0;	kilogram
+mass;	person;	001;	9 / 10;	0.9;	kilogram;	900;	900.0;	gram
+mass;	person;	001;	1 / 1000;	0.001;	kilogram;	1;	1.0;	gram
+mass;	person;	001;	9 / 10000;	9.0E-4;	kilogram;	9 / 10;	0.9;	gram
+
+mass;	person;	DZ;	11 / 10;	1.1;	kilogram;	1;	kilogram;	100;	100.0;	gram
+mass;	person;	DZ;	1;	1.0;	kilogram;	1;	kilogram;	0;	0.0;	gram
+mass;	person;	DZ;	9 / 10;	0.9;	kilogram;	0;	kilogram;	900;	900.0;	gram
+
+mass;	person;	US;	498951607 / 1000000000;	0.498951607;	kilogram;	11 / 10;	1.1;	pound
+mass;	person;	US;	45359237 / 100000000;	0.45359237;	kilogram;	1;	1.0;	pound
+mass;	person;	US;	408233133 / 1000000000;	0.408233133;	kilogram;	0;	pound;	72 / 5;	14.4;	ounce
+
+mass;	person;	GB;	3492661249 / 500000000;	6.985322498;	kilogram;	1;	stone;	7 / 5;	1.4;	pound
+mass;	person;	GB;	317514659 / 50000000;	6.35029318;	kilogram;	1;	stone;	0;	0.0;	pound
+mass;	person;	GB;	2857631931 / 500000000;	5.715263862;	kilogram;	12;	pound;	48 / 5;	9.6;	ounce
+mass;	person;	GB;	45359237 / 100000000;	0.45359237;	kilogram;	1;	pound;	0;	0.0;	ounce
+mass;	person;	GB;	408233133 / 1000000000;	0.408233133;	kilogram;	0;	pound;	72 / 5;	14.4;	ounce
+
+mass;	person;	HK;	498951607 / 1000000000;	0.498951607;	kilogram;	1;	pound;	8 / 5;	1.6;	ounce
+mass;	person;	HK;	45359237 / 100000000;	0.45359237;	kilogram;	1;	pound;	0;	0.0;	ounce
+mass;	person;	HK;	408233133 / 1000000000;	0.408233133;	kilogram;	0;	pound;	72 / 5;	14.4;	ounce
+
+mass-density;	blood-glucose;	001;	11 / 1000;	0.011;	kilogram-per-cubic-meter;	11 / 10;	1.1;	milligram-per-deciliter
+mass-density;	blood-glucose;	001;	1 / 100;	0.01;	kilogram-per-cubic-meter;	1;	1.0;	milligram-per-deciliter
+mass-density;	blood-glucose;	001;	9 / 1000;	0.009;	kilogram-per-cubic-meter;	9 / 10;	0.9;	milligram-per-deciliter
+
+mass-density;	default;	001;	11 / 10;	1.1;	kilogram-per-cubic-meter;	11 / 10;	1.1;	kilogram-per-cubic-meter
+mass-density;	default;	001;	1;	1.0;	kilogram-per-cubic-meter;	1;	1.0;	kilogram-per-cubic-meter
+mass-density;	default;	001;	9 / 10;	0.9;	kilogram-per-cubic-meter;	9 / 10;	0.9;	kilogram-per-cubic-meter
+
+power;	default;	001;	1100000000;	1.1E9;	kilogram-square-meter-per-cubic-second;	11 / 10;	1.1;	gigawatt
+power;	default;	001;	1000000000;	1.0E9;	kilogram-square-meter-per-cubic-second;	1;	1.0;	gigawatt
+power;	default;	001;	900000000;	9.0E8;	kilogram-square-meter-per-cubic-second;	900;	900.0;	megawatt
+power;	default;	001;	1000000;	1000000.0;	kilogram-square-meter-per-cubic-second;	1;	1.0;	megawatt
+power;	default;	001;	900000;	900000.0;	kilogram-square-meter-per-cubic-second;	900;	900.0;	kilowatt
+power;	default;	001;	1000;	1000.0;	kilogram-square-meter-per-cubic-second;	1;	1.0;	kilowatt
+power;	default;	001;	900;	900.0;	kilogram-square-meter-per-cubic-second;	900;	900.0;	watt
+power;	default;	001;	1;	1.0;	kilogram-square-meter-per-cubic-second;	1;	1.0;	watt
+power;	default;	001;	9 / 10;	0.9;	kilogram-square-meter-per-cubic-second;	900;	900.0;	milliwatt
+power;	default;	001;	1 / 1000;	0.001;	kilogram-square-meter-per-cubic-second;	1;	1.0;	milliwatt
+power;	default;	001;	9 / 10000;	9.0E-4;	kilogram-square-meter-per-cubic-second;	9 / 10;	0.9;	milliwatt
+
+power;	engine;	001;	1100;	1100.0;	kilogram-square-meter-per-cubic-second;	11 / 10;	1.1;	kilowatt
+power;	engine;	001;	1000;	1000.0;	kilogram-square-meter-per-cubic-second;	1;	1.0;	kilowatt
+power;	engine;	001;	900;	900.0;	kilogram-square-meter-per-cubic-second;	9 / 10;	0.9;	kilowatt
+
+power;	engine;	GB;	410134929370248621 / 500000000000000;	820.2698587404972;	kilogram-square-meter-per-cubic-second;	11 / 10;	1.1;	horsepower
+power;	engine;	GB;	37284993579113511 / 50000000000000;	745.6998715822702;	kilogram-square-meter-per-cubic-second;	1;	1.0;	horsepower
+power;	engine;	GB;	335564942212021599 / 500000000000000;	671.1298844240432;	kilogram-square-meter-per-cubic-second;	9 / 10;	0.9;	horsepower
+
+pressure;	baromtrc;	001;	110;	110.0;	kilogram-per-meter-square-second;	11 / 10;	1.1;	hectopascal
+pressure;	baromtrc;	001;	100;	100.0;	kilogram-per-meter-square-second;	1;	1.0;	hectopascal
+pressure;	baromtrc;	001;	90;	90.0;	kilogram-per-meter-square-second;	9 / 10;	0.9;	hectopascal
+
+pressure;	baromtrc;	IN;	37250275043751 / 10000000000;	3725.0275043751;	kilogram-per-meter-square-second;	11 / 10;	1.1;	inch-ofhg
+pressure;	baromtrc;	IN;	3386388640341 / 1000000000;	3386.388640341;	kilogram-per-meter-square-second;	1;	1.0;	inch-ofhg
+pressure;	baromtrc;	IN;	30477497763069 / 10000000000;	3047.7497763069;	kilogram-per-meter-square-second;	9 / 10;	0.9;	inch-ofhg
+
+pressure;	baromtrc;	BR;	110;	110.0;	kilogram-per-meter-square-second;	11 / 10;	1.1;	millibar
+pressure;	baromtrc;	BR;	100;	100.0;	kilogram-per-meter-square-second;	1;	1.0;	millibar
+pressure;	baromtrc;	BR;	90;	90.0;	kilogram-per-meter-square-second;	9 / 10;	0.9;	millibar
+
+pressure;	baromtrc;	MX;	293309252313 / 2000000000;	146.6546261565;	kilogram-per-meter-square-second;	11 / 10;	1.1;	millimeter-ofhg
+pressure;	baromtrc;	MX;	26664477483 / 200000000;	133.322387415;	kilogram-per-meter-square-second;	1;	1.0;	millimeter-ofhg
+pressure;	baromtrc;	MX;	239980297347 / 2000000000;	119.9901486735;	kilogram-per-meter-square-second;	9 / 10;	0.9;	millimeter-ofhg
+
+pressure;	default;	001;	1100000;	1100000.0;	kilogram-per-meter-square-second;	11 / 10;	1.1;	megapascal
+pressure;	default;	001;	1000000;	1000000.0;	kilogram-per-meter-square-second;	1;	1.0;	megapascal
+pressure;	default;	001;	900000;	900000.0;	kilogram-per-meter-square-second;	900000;	900000.0;	pascal
+pressure;	default;	001;	1;	1.0;	kilogram-per-meter-square-second;	1;	1.0;	pascal
+pressure;	default;	001;	9 / 10;	0.9;	kilogram-per-meter-square-second;	9 / 10;	0.9;	pascal
+
+pressure;	default;	GB;	97860875535731 / 12903200000;	7584.233022485197;	kilogram-per-meter-square-second;	11 / 10;	1.1;	pound-force-per-square-inch
+pressure;	default;	GB;	8896443230521 / 1290320000;	6894.757293168361;	kilogram-per-meter-square-second;	1;	1.0;	pound-force-per-square-inch
+pressure;	default;	GB;	80067989074689 / 12903200000;	6205.281563851525;	kilogram-per-meter-square-second;	9 / 10;	0.9;	pound-force-per-square-inch
+
+speed;	default;	001;	11 / 36;	0.3055555555555556;	meter-per-second;	11 / 10;	1.1;	kilometer-per-hour
+speed;	default;	001;	5 / 18;	0.2777777777777778;	meter-per-second;	1;	1.0;	kilometer-per-hour
+speed;	default;	001;	1 / 4;	0.25;	meter-per-second;	9 / 10;	0.9;	kilometer-per-hour
+
+speed;	default;	GB;	15367 / 31250;	0.491744;	meter-per-second;	11 / 10;	1.1;	mile-per-hour
+speed;	default;	GB;	1397 / 3125;	0.44704;	meter-per-second;	1;	1.0;	mile-per-hour
+speed;	default;	GB;	12573 / 31250;	0.402336;	meter-per-second;	9 / 10;	0.9;	mile-per-hour
+
+speed;	wind;	001;	11 / 36;	0.3055555555555556;	meter-per-second;	11 / 10;	1.1;	kilometer-per-hour
+speed;	wind;	001;	5 / 18;	0.2777777777777778;	meter-per-second;	1;	1.0;	kilometer-per-hour
+speed;	wind;	001;	1 / 4;	0.25;	meter-per-second;	9 / 10;	0.9;	kilometer-per-hour
+
+speed;	wind;	FI;	11 / 10;	1.1;	meter-per-second;	11 / 10;	1.1;	meter-per-second
+speed;	wind;	FI;	1;	1.0;	meter-per-second;	1;	1.0;	meter-per-second
+speed;	wind;	FI;	9 / 10;	0.9;	meter-per-second;	9 / 10;	0.9;	meter-per-second
+
+speed;	wind;	US;	15367 / 31250;	0.491744;	meter-per-second;	11 / 10;	1.1;	mile-per-hour
+speed;	wind;	US;	1397 / 3125;	0.44704;	meter-per-second;	1;	1.0;	mile-per-hour
+speed;	wind;	US;	12573 / 31250;	0.402336;	meter-per-second;	9 / 10;	0.9;	mile-per-hour
+
+temperature;	default;	001;	1097 / 4;	274.25;	kelvin;	11 / 10;	1.1;	celsius
+temperature;	default;	001;	5483 / 20;	274.15;	kelvin;	1;	1.0;	celsius
+temperature;	default;	001;	5481 / 20;	274.05;	kelvin;	9 / 10;	0.9;	celsius
+
+temperature;	default;	US;	15359 / 60;	255.9833333333333;	kelvin;	11 / 10;	1.1;	fahrenheit
+temperature;	default;	US;	46067 / 180;	255.9277777777778;	kelvin;	1;	1.0;	fahrenheit
+temperature;	default;	US;	46057 / 180;	255.8722222222222;	kelvin;	9 / 10;	0.9;	fahrenheit
+
+temperature;	weather;	001;	1097 / 4;	274.25;	kelvin;	11 / 10;	1.1;	celsius
+temperature;	weather;	001;	5483 / 20;	274.15;	kelvin;	1;	1.0;	celsius
+temperature;	weather;	001;	5481 / 20;	274.05;	kelvin;	9 / 10;	0.9;	celsius
+
+temperature;	weather;	BS;	15359 / 60;	255.9833333333333;	kelvin;	11 / 10;	1.1;	fahrenheit
+temperature;	weather;	BS;	46067 / 180;	255.9277777777778;	kelvin;	1;	1.0;	fahrenheit
+temperature;	weather;	BS;	46057 / 180;	255.8722222222222;	kelvin;	9 / 10;	0.9;	fahrenheit
+
+volume;	default;	001;	11 / 10;	1.1;	cubic-meter;	11 / 10;	1.1;	cubic-meter
+volume;	default;	001;	1;	1.0;	cubic-meter;	1;	1.0;	cubic-meter
+volume;	default;	001;	9 / 10;	0.9;	cubic-meter;	900000;	900000.0;	cubic-centimeter
+volume;	default;	001;	1 / 1000000;	1.0E-6;	cubic-meter;	1;	1.0;	cubic-centimeter
+volume;	default;	001;	9 / 10000000;	9.0E-7;	cubic-meter;	9 / 10;	0.9;	cubic-centimeter
+
+volume;	default;	GB;	608369751 / 19531250000;	0.0311485312512;	cubic-meter;	11 / 10;	1.1;	cubic-foot
+volume;	default;	GB;	55306341 / 1953125000;	0.028316846592;	cubic-meter;	1;	1.0;	cubic-foot
+volume;	default;	GB;	497757069 / 19531250000;	0.0254851619328;	cubic-meter;	7776 / 5;	1555.2;	cubic-inch
+volume;	default;	GB;	2048383 / 125000000000;	1.6387064E-5;	cubic-meter;	1;	1.0;	cubic-inch
+volume;	default;	GB;	18435447 / 1250000000000;	1.47483576E-5;	cubic-meter;	9 / 10;	0.9;	cubic-inch
+
+volume;	fluid;	001;	11 / 10000;	0.0011;	cubic-meter;	11 / 10;	1.1;	liter
+volume;	fluid;	001;	1 / 1000;	0.001;	cubic-meter;	1;	1.0;	liter
+volume;	fluid;	001;	9 / 10000;	9.0E-4;	cubic-meter;	900;	900.0;	milliliter
+volume;	fluid;	001;	1 / 1000000;	1.0E-6;	cubic-meter;	1;	1.0;	milliliter
+volume;	fluid;	001;	9 / 10000000;	9.0E-7;	cubic-meter;	9 / 10;	0.9;	milliliter
+
+volume;	fluid;	US;	5204941203 / 1250000000000;	0.0041639529624;	cubic-meter;	11 / 10;	1.1;	gallon
+volume;	fluid;	US;	473176473 / 125000000000;	0.003785411784;	cubic-meter;	1;	1.0;	gallon
+volume;	fluid;	US;	4258588257 / 1250000000000;	0.0034068706056;	cubic-meter;	18 / 5;	3.6;	quart
+volume;	fluid;	US;	473176473 / 500000000000;	9.46352946E-4;	cubic-meter;	1;	1.0;	quart
+volume;	fluid;	US;	4258588257 / 5000000000000;	8.517176514E-4;	cubic-meter;	9 / 5;	1.8;	pint
+volume;	fluid;	US;	473176473 / 1000000000000;	4.73176473E-4;	cubic-meter;	1;	1.0;	pint
+volume;	fluid;	US;	4258588257 / 10000000000000;	4.258588257E-4;	cubic-meter;	9 / 5;	1.8;	cup
+volume;	fluid;	US;	473176473 / 2000000000000;	2.365882365E-4;	cubic-meter;	1;	1.0;	cup
+volume;	fluid;	US;	4258588257 / 20000000000000;	2.1292941285E-4;	cubic-meter;	36 / 5;	7.2;	fluid-ounce
+volume;	fluid;	US;	473176473 / 16000000000000;	2.95735295625E-5;	cubic-meter;	1;	1.0;	fluid-ounce
+volume;	fluid;	US;	4258588257 / 160000000000000;	2.661617660625E-5;	cubic-meter;	9 / 5;	1.8;	tablespoon
+volume;	fluid;	US;	473176473 / 32000000000000;	1.478676478125E-5;	cubic-meter;	1;	1.0;	tablespoon
+volume;	fluid;	US;	4258588257 / 320000000000000;	1.3308088303125E-5;	cubic-meter;	27 / 10;	2.7;	teaspoon
+volume;	fluid;	US;	157725491 / 32000000000000;	4.92892159375E-6;	cubic-meter;	1;	1.0;	teaspoon
+volume;	fluid;	US;	1419529419 / 320000000000000;	4.436029434375E-6;	cubic-meter;	9 / 10;	0.9;	teaspoon
+
+volume;	fluid;	GB;	5000699 / 1000000000;	0.005000699;	cubic-meter;	11 / 10;	1.1;	gallon-imperial
+volume;	fluid;	GB;	454609 / 100000000;	0.00454609;	cubic-meter;	1;	1.0;	gallon-imperial
+volume;	fluid;	GB;	4091481 / 1000000000;	0.004091481;	cubic-meter;	144;	144.0;	fluid-ounce-imperial
+volume;	fluid;	GB;	454609 / 16000000000;	2.84130625E-5;	cubic-meter;	1;	1.0;	fluid-ounce-imperial
+volume;	fluid;	GB;	4091481 / 160000000000;	2.557175625E-5;	cubic-meter;	9 / 10;	0.9;	fluid-ounce-imperial
+
+volume;	oil;	001;	109303765263 / 625000000000;	0.1748860244208;	cubic-meter;	11 / 10;	1.1;	barrel
+volume;	oil;	001;	9936705933 / 62500000000;	0.158987294928;	cubic-meter;	1;	1.0;	barrel
+volume;	oil;	001;	89430353397 / 625000000000;	0.1430885654352;	cubic-meter;	9 / 10;	0.9;	barrel
+
+volume;	vehicle;	US;	5204941203 / 1250000000000;	0.0041639529624;	cubic-meter;	11 / 10;	1.1;	gallon
+volume;	vehicle;	US;	473176473 / 125000000000;	0.003785411784;	cubic-meter;	1;	1.0;	gallon
+volume;	vehicle;	US;	4258588257 / 1250000000000;	0.0034068706056;	cubic-meter;	9 / 10;	0.9;	gallon
+
+volume;	vehicle;	001;	11 / 10000;	0.0011;	cubic-meter;	11 / 10;	1.1;	liter
+volume;	vehicle;	001;	1 / 1000;	0.001;	cubic-meter;	1;	1.0;	liter
+volume;	vehicle;	001;	9 / 10000;	9.0E-4;	cubic-meter;	9 / 10;	0.9;	liter
+
+year-duration;	default;	001;	11 / 10;	1.1;	year;	11 / 10;	1.1;	year
+year-duration;	default;	001;	1;	1.0;	year;	1;	1.0;	year
+year-duration;	default;	001;	9 / 10;	0.9;	year;	54 / 5;	10.8;	month
+year-duration;	default;	001;	1 / 12;	0.08333333333333333;	year;	1;	1.0;	month
+year-duration;	default;	001;	3 / 40;	0.075;	year;	9 / 10;	0.9;	month
+
+year-duration;	person-age;	001;	13 / 5;	2.6;	year;	13 / 5;	2.6;	year-person
+year-duration;	person-age;	001;	5 / 2;	2.5;	year;	5 / 2;	2.5;	year-person
+year-duration;	person-age;	001;	12 / 5;	2.4;	year;	2;	year-person;	24 / 5;	4.8;	month-person
+year-duration;	person-age;	001;	1;	1.0;	year;	1;	year-person;	0;	0.0;	month-person
+year-duration;	person-age;	001;	9 / 10;	0.9;	year;	54 / 5;	10.8;	month-person
+year-duration;	person-age;	001;	1 / 12;	0.08333333333333333;	year;	1;	1.0;	month-person
+year-duration;	person-age;	001;	3 / 40;	0.075;	year;	9 / 10;	0.9;	month-person
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/cldr/units/unitsTest.txt b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/cldr/units/unitsTest.txt
new file mode 100644
index 0000000..d2facef
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/cldr/units/unitsTest.txt
@@ -0,0 +1,203 @@
+# Test data for unit conversions
+#  Copyright © 1991-2020 Unicode, Inc.
+#  For terms of use, see http://www.unicode.org/copyright.html
+#  Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+#  CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# Format:
+#	Quantity	;	x	;	y	;	conversion to y (rational)	;	test: 1000 x ⟹ y
+#
+# Use: convert 1000 x units to the y unit; the result should match the final column,
+#   at the given precision. For example, when the last column is 159.1549,
+#   round to 4 decimal digits before comparing.
+# Note that certain conversions are approximate, such as degrees to radians
+#
+# Generation: Set GENERATE_TESTS in TestUnits.java, and look at TestParseUnit results.
+
+acceleration	;	meter-per-square-second	;	meter-per-square-second	;	1 * x	;	1,000.00
+acceleration	;	g-force	;	meter-per-square-second	;	9.80665 * x	;	9806.65
+angle	;	arc-second	;	revolution	;	0.0000625/81 * x	;	7.716049E-4
+angle	;	arc-minute	;	revolution	;	0.00125/27 * x	;	0.0462963
+angle	;	degree	;	revolution	;	0.025/9 * x	;	2.777778
+angle	;	radian	;	revolution	;	65,501,488/411,557,987 * x	;	159.1549
+angle	;	revolution	;	revolution	;	1 * x	;	1,000.00
+area	;	square-centimeter	;	square-meter	;	0.0001 * x	;	0.1
+area	;	square-inch	;	square-meter	;	0.00064516 * x	;	0.64516
+area	;	square-foot	;	square-meter	;	0.09290304 * x	;	92.90304
+area	;	square-yard	;	square-meter	;	0.83612736 * x	;	836.1274
+area	;	square-meter	;	square-meter	;	1 * x	;	1,000.00
+area	;	dunam	;	square-meter	;	1,000 * x	;	1000000.0
+area	;	acre	;	square-meter	;	4,046.8564224 * x	;	4046856.0
+area	;	hectare	;	square-meter	;	10,000 * x	;	1.0E7
+area	;	square-kilometer	;	square-meter	;	1,000,000 * x	;	1.0E9
+area	;	square-mile	;	square-meter	;	2,589,988.110336 * x	;	2.589988E9
+concentration	;	millimole-per-liter	;	item-per-cubic-meter	;	602,214,076,000,000,000,000,000 * x	;	6.022141E26
+consumption	;	liter-per-100-kilometer	;	cubic-meter-per-meter	;	0.00000001 * x	;	1.0E-5
+consumption	;	liter-per-kilometer	;	cubic-meter-per-meter	;	0.000001 * x	;	0.001
+consumption-inverse	;	mile-per-gallon-imperial	;	meter-per-cubic-meter	;	160,934,400,000/454,609 * x	;	3.540062E8
+consumption-inverse	;	mile-per-gallon	;	meter-per-cubic-meter	;	48,000,000,000/112,903 * x	;	4.251437E8
+digital	;	bit	;	bit	;	1 * x	;	1,000.00
+digital	;	byte	;	bit	;	8 * x	;	8000.0
+digital	;	kilobit	;	bit	;	1,000 * x	;	1000000.0
+digital	;	kilobyte	;	bit	;	8,000 * x	;	8000000.0
+digital	;	megabit	;	bit	;	1,000,000 * x	;	1.0E9
+digital	;	megabyte	;	bit	;	8,000,000 * x	;	8.0E9
+digital	;	gigabit	;	bit	;	1,000,000,000 * x	;	1.0E12
+digital	;	gigabyte	;	bit	;	8,000,000,000 * x	;	8.0E12
+digital	;	terabit	;	bit	;	1,000,000,000,000 * x	;	1.0E15
+digital	;	terabyte	;	bit	;	8,000,000,000,000 * x	;	8.0E15
+digital	;	petabyte	;	bit	;	8,000,000,000,000,000 * x	;	8.0E18
+duration	;	nanosecond	;	second	;	0.000000001 * x	;	1.0E-6
+duration	;	microsecond	;	second	;	0.000001 * x	;	0.001
+duration	;	millisecond	;	second	;	0.001 * x	;	1.0
+duration	;	second	;	second	;	1 * x	;	1,000.00
+duration	;	minute	;	second	;	60 * x	;	60000.0
+duration	;	hour	;	second	;	3,600 * x	;	3600000.0
+duration	;	day	;	second	;	86,400 * x	;	8.64E7
+duration	;	day-person	;	second	;	86,400 * x	;	8.64E7
+duration	;	week	;	second	;	604,800 * x	;	6.048E8
+duration	;	week-person	;	second	;	604,800 * x	;	6.048E8
+electric-current	;	milliampere	;	ampere	;	0.001 * x	;	1.0
+electric-current	;	ampere	;	ampere	;	1 * x	;	1,000.00
+electric-resistance	;	ohm	;	kilogram-square-meter-per-cubic-second-square-ampere	;	1 * x	;	1000.0
+energy	;	electronvolt	;	kilogram-square-meter-per-square-second	;	0.0000000000000000001602177 * x	;	1.602177E-16
+energy	;	dalton	;	kilogram-square-meter-per-square-second	;	0.00000000014924180856 * x	;	1.492418E-7
+energy	;	joule	;	kilogram-square-meter-per-square-second	;	1 * x	;	1000.0
+energy	;	newton-meter	;	kilogram-square-meter-per-square-second	;	1 * x	;	1000.0
+energy	;	pound-force-foot	;	kilogram-square-meter-per-square-second	;	1.3558179483314004 * x	;	1355.818
+energy	;	calorie	;	kilogram-square-meter-per-square-second	;	4.184 * x	;	4184.0
+energy	;	kilojoule	;	kilogram-square-meter-per-square-second	;	1,000 * x	;	1000000.0
+energy	;	british-thermal-unit	;	kilogram-square-meter-per-square-second	;	9,489.1523804/9 * x	;	1054350.0
+energy	;	foodcalorie	;	kilogram-square-meter-per-square-second	;	4,184 * x	;	4184000.0
+energy	;	kilocalorie	;	kilogram-square-meter-per-square-second	;	4,184 * x	;	4184000.0
+energy	;	kilowatt-hour	;	kilogram-square-meter-second-per-cubic-second	;	3,600,000 * x	;	3.6E9
+energy	;	therm-us	;	kilogram-square-meter-per-square-second	;	105,480,400 * x	;	1.054804E11
+force	;	newton	;	kilogram-meter-per-square-second	;	1 * x	;	1000.0
+force	;	pound-force	;	kilogram-meter-per-square-second	;	4.4482216152605 * x	;	4448.222
+frequency	;	hertz	;	revolution-per-second	;	1 * x	;	1000.0
+frequency	;	kilohertz	;	revolution-per-second	;	1,000 * x	;	1000000.0
+frequency	;	megahertz	;	revolution-per-second	;	1,000,000 * x	;	1.0E9
+frequency	;	gigahertz	;	revolution-per-second	;	1,000,000,000 * x	;	1.0E12
+graphics	;	dot	;	pixel	;	1 * x	;	1000.0
+graphics	;	pixel	;	pixel	;	1 * x	;	1,000.00
+graphics	;	megapixel	;	pixel	;	1,000,000 * x	;	1.0E9
+illuminance	;	lux	;	candela-per-square-meter	;	1 * x	;	1000.0
+length	;	picometer	;	meter	;	0.000000000001 * x	;	1.0E-9
+length	;	nanometer	;	meter	;	0.000000001 * x	;	1.0E-6
+length	;	micrometer	;	meter	;	0.000001 * x	;	0.001
+length	;	point	;	meter	;	0.003175/9 * x	;	0.3527778
+length	;	millimeter	;	meter	;	0.001 * x	;	1.0
+length	;	centimeter	;	meter	;	0.01 * x	;	10.0
+length	;	inch	;	meter	;	0.0254 * x	;	25.4
+length	;	decimeter	;	meter	;	0.1 * x	;	100.0
+length	;	foot	;	meter	;	0.3048 * x	;	304.8
+length	;	yard	;	meter	;	0.9144 * x	;	914.4
+length	;	meter	;	meter	;	1 * x	;	1,000.00
+length	;	fathom	;	meter	;	1.8288 * x	;	1828.8
+length	;	furlong	;	meter	;	201.168 * x	;	201168.0
+length	;	kilometer	;	meter	;	1,000 * x	;	1000000.0
+length	;	mile	;	meter	;	1,609.344 * x	;	1609344.0
+length	;	nautical-mile	;	meter	;	1,852 * x	;	1852000.0
+length	;	mile-scandinavian	;	meter	;	10,000 * x	;	1.0E7
+length	;	100-kilometer	;	meter	;	100,000 * x	;	1.0E8
+length	;	earth-radius	;	meter	;	6,378,100 * x	;	6.3781E9
+length	;	solar-radius	;	meter	;	695,700,000 * x	;	6.957E11
+length	;	astronomical-unit	;	meter	;	149,597,900,000 * x	;	1.495979E14
+length	;	light-year	;	meter	;	9,460,730,000,000,000 * x	;	9.46073E18
+length	;	parsec	;	meter	;	30,856,780,000,000,000 * x	;	3.085678E19
+luminous-flux	;	lumen	;	candela-square-meter-per-square-meter	;	1 * x	;	1000.0
+luminous-intensity	;	candela	;	candela	;	1 * x	;	1,000.00
+mass	;	microgram	;	kilogram	;	0.000000001 * x	;	1.0E-6
+mass	;	milligram	;	kilogram	;	0.000001 * x	;	0.001
+mass	;	grain	;	kilogram	;	0.00006479891 * x	;	0.06479891
+mass	;	carat	;	kilogram	;	0.0002 * x	;	0.2
+mass	;	gram	;	kilogram	;	0.001 * x	;	1.0
+mass	;	ounce	;	kilogram	;	0.028349523125 * x	;	28.34952
+mass	;	ounce-troy	;	kilogram	;	0.03110348 * x	;	31.10348
+mass	;	pound	;	kilogram	;	0.45359237 * x	;	453.5924
+mass	;	kilogram	;	kilogram	;	1 * x	;	1,000.00
+mass	;	stone	;	kilogram	;	6.35029318 * x	;	6350.293
+mass	;	ton	;	kilogram	;	907.18474 * x	;	907184.7
+mass	;	metric-ton	;	kilogram	;	1,000 * x	;	1000000.0
+mass	;	earth-mass	;	kilogram	;	5,972,200,000,000,000,000,000,000 * x	;	5.9722E27
+mass	;	solar-mass	;	kilogram	;	1,988,470,000,000,000,000,000,000,000,000 * x	;	1.98847E33
+mass-density	;	milligram-per-deciliter	;	kilogram-per-cubic-meter	;	0.01 * x	;	10.0
+portion	;	permillion	;	portion	;	0.000001 * x	;	0.001
+portion	;	permyriad	;	portion	;	0.0001 * x	;	0.1
+portion	;	permille	;	portion	;	0.001 * x	;	1.0
+portion	;	percent	;	portion	;	0.01 * x	;	10.0
+portion	;	karat	;	portion	;	0.125/3 * x	;	41.66667
+portion	;	portion	;	portion	;	1 * x	;	1,000.00
+power	;	milliwatt	;	kilogram-square-meter-per-cubic-second	;	0.001 * x	;	1.0
+power	;	watt	;	kilogram-square-meter-per-cubic-second	;	1 * x	;	1000.0
+power	;	horsepower	;	kilogram-square-meter-per-cubic-second	;	745.69987158227022 * x	;	745699.9
+power	;	kilowatt	;	kilogram-square-meter-per-cubic-second	;	1,000 * x	;	1000000.0
+power	;	megawatt	;	kilogram-square-meter-per-cubic-second	;	1,000,000 * x	;	1.0E9
+power	;	gigawatt	;	kilogram-square-meter-per-cubic-second	;	1,000,000,000 * x	;	1.0E12
+power	;	solar-luminosity	;	kilogram-square-meter-per-cubic-second	;	382,800,000,000,000,000,000,000,000 * x	;	3.828E29
+pressure	;	pascal	;	kilogram-per-meter-square-second	;	1 * x	;	1000.0
+pressure	;	hectopascal	;	kilogram-per-meter-square-second	;	100 * x	;	100000.0
+pressure	;	millibar	;	kilogram-per-meter-square-second	;	100 * x	;	100000.0
+pressure	;	millimeter-ofhg	;	kilogram-meter-per-square-meter-square-second	;	133.322387415 * x	;	133322.4
+pressure	;	kilopascal	;	kilogram-per-meter-square-second	;	1,000 * x	;	1000000.0
+pressure	;	inch-ofhg	;	kilogram-meter-per-square-meter-square-second	;	3,386.388640341 * x	;	3386389.0
+pressure	;	pound-force-per-square-inch	;	kilogram-meter-per-square-meter-square-second	;	111,205,540.3815125/16,129 * x	;	6894757.0
+pressure	;	bar	;	kilogram-per-meter-square-second	;	100,000 * x	;	1.0E8
+pressure	;	atmosphere	;	kilogram-per-meter-square-second	;	101,325 * x	;	1.01325E8
+pressure	;	megapascal	;	kilogram-per-meter-square-second	;	1,000,000 * x	;	1.0E9
+pressure-per-length	;	ofhg	;	kilogram-per-square-meter-square-second	;	133,322.387415 * x	;	1.333224E8
+resolution	;	dot-per-inch	;	pixel-per-meter	;	5,000/127 * x	;	39370.08
+resolution	;	pixel-per-inch	;	pixel-per-meter	;	5,000/127 * x	;	39370.08
+resolution	;	dot-per-centimeter	;	pixel-per-meter	;	100 * x	;	100000.0
+resolution	;	pixel-per-centimeter	;	pixel-per-meter	;	100 * x	;	100000.0
+speed	;	kilometer-per-hour	;	meter-per-second	;	2.5/9 * x	;	277.7778
+speed	;	mile-per-hour	;	meter-per-second	;	0.44704 * x	;	447.04
+speed	;	knot	;	meter-per-second	;	4.63/9 * x	;	514.4444
+speed	;	meter-per-second	;	meter-per-second	;	1 * x	;	1,000.00
+substance-amount	;	item	;	item	;	1 * x	;	1,000.00
+substance-amount	;	mole	;	item	;	602,214,076,000,000,000,000,000 * x	;	6.022141E26
+temperature	;	fahrenheit	;	kelvin	;	5/9 * x - 2,298.35/9	;	810.9278
+temperature	;	kelvin	;	kelvin	;	1 * x	;	1,000.00
+temperature	;	celsius	;	kelvin	;	1 * x - 273.15	;	1273.15
+typewidth	;	em	;	em	;	1 * x	;	1,000.00
+voltage	;	volt	;	kilogram-square-meter-per-cubic-second-ampere	;	1 * x	;	1000.0
+volume	;	drop	;	cubic-meter	;	0.0000001540287998046875/3 * x	;	5.134293E-5
+volume	;	pinch	;	cubic-meter	;	0.00000023104319970703125 * x	;	2.310432E-4
+volume	;	cubic-centimeter	;	cubic-meter	;	0.000001 * x	;	0.001
+volume	;	milliliter	;	cubic-meter	;	0.000001 * x	;	0.001
+volume	;	dessert-spoon	;	cubic-meter	;	0.00000184834559765625 * x	;	0.001848346
+volume	;	dessert-spoon-imperial	;	cubic-meter	;	0.0000022197705078125 * x	;	0.002219771
+volume	;	dram	;	cubic-meter	;	0.0000036966911953125 * x	;	0.003696691
+volume	;	teaspoon	;	cubic-meter	;	0.00000492892159375 * x	;	0.004928922
+volume	;	centiliter	;	cubic-meter	;	0.00001 * x	;	0.01
+volume	;	tablespoon	;	cubic-meter	;	0.00001478676478125 * x	;	0.01478676
+volume	;	cubic-inch	;	cubic-meter	;	0.000016387064 * x	;	0.01638706
+volume	;	fluid-ounce-imperial	;	cubic-meter	;	0.0000284130625 * x	;	0.02841306
+volume	;	fluid-ounce	;	cubic-meter	;	0.0000295735295625 * x	;	0.02957353
+volume	;	jigger	;	cubic-meter	;	0.00004436029434375 * x	;	0.04436029
+volume	;	deciliter	;	cubic-meter	;	0.0001 * x	;	0.1
+volume	;	cup	;	cubic-meter	;	0.0002365882365 * x	;	0.2365882
+volume	;	cup-metric	;	cubic-meter	;	0.00025 * x	;	0.25
+volume	;	pint	;	cubic-meter	;	0.000473176473 * x	;	0.4731765
+volume	;	pint-metric	;	cubic-meter	;	0.0005 * x	;	0.5
+volume	;	quart	;	cubic-meter	;	0.000946352946 * x	;	0.9463529
+volume	;	liter	;	cubic-meter	;	0.001 * x	;	1.0
+volume	;	quart-imperial	;	cubic-meter	;	0.0011365225 * x	;	1.136522
+volume	;	gallon	;	cubic-meter	;	0.003785411784 * x	;	3.785412
+volume	;	gallon-imperial	;	cubic-meter	;	0.00454609 * x	;	4.54609
+volume	;	cubic-foot	;	cubic-meter	;	0.028316846592 * x	;	28.31685
+volume	;	bushel	;	cubic-meter	;	0.03523907016688 * x	;	35.23907
+volume	;	hectoliter	;	cubic-meter	;	0.1 * x	;	100.0
+volume	;	barrel	;	cubic-meter	;	0.158987294928 * x	;	158.9873
+volume	;	cubic-yard	;	cubic-meter	;	0.764554857984 * x	;	764.5549
+volume	;	cubic-meter	;	cubic-meter	;	1 * x	;	1,000.00
+volume	;	megaliter	;	cubic-meter	;	1,000 * x	;	1000000.0
+volume	;	acre-foot	;	cubic-meter	;	1,233.48183754752 * x	;	1233482.0
+volume	;	cubic-kilometer	;	cubic-meter	;	1,000,000,000 * x	;	1.0E12
+volume	;	cubic-mile	;	cubic-meter	;	4,168,181,825.440579584 * x	;	4.168182E12
+year-duration	;	month	;	year	;	0.25/3 * x	;	83.33333
+year-duration	;	month-person	;	year	;	0.25/3 * x	;	83.33333
+year-duration	;	year	;	year	;	1 * x	;	1,000.00
+year-duration	;	year-person	;	year	;	1 * x	;	1000.0
+year-duration	;	decade	;	year	;	10 * x	;	10000.0
+year-duration	;	century	;	year	;	100 * x	;	100000.0
\ No newline at end of file
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/numberpermutationtest.txt b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/numberpermutationtest.txt
index 24136ad..9767baa 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/numberpermutationtest.txt
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/numberpermutationtest.txt
@@ -3,31 +3,31 @@
 
 compact-short percent unit-width-narrow
   es-MX
-    0 %
-    92 k
-    -0.22 %
+    0%
+    92 k%
+    -0.22%
   zh-TW
     0%
-    9.2萬
+    9.2萬%
     -0.22%
   bn-BD
     ০%
-    ৯২ হা
+    ৯২ হা%
     -০.২২%
 
 compact-short percent unit-width-full-name
   es-MX
-    0 %
-    92 k
-    -0.22 %
+    0 por ciento
+    92 k por ciento
+    -0.22 por ciento
   zh-TW
     0%
-    9.2萬
+    9.2萬%
     -0.22%
   bn-BD
-    ০%
-    ৯২ হা
-    -০.২২%
+    ০শতাংশ
+    ৯২ হাশতাংশ
+    -০.২২শতাংশ
 
 compact-short currency/EUR unit-width-narrow
   es-MX
@@ -73,9 +73,9 @@
 
 compact-short measure-unit/length-furlong unit-width-full-name
   es-MX
-    0 fur
-    92 k fur
-    -0.22 fur
+    0 furlongs
+    92 k furlongs
+    -0.22 furlongs
   zh-TW
     0 化朗
     9.2萬 化朗
@@ -101,17 +101,17 @@
 
 scientific/+ee/sign-always percent unit-width-full-name
   es-MX
-    0E+00 %
-    9.182736E+04 %
-    -2.2222E-01 %
+    0E+00 por ciento
+    9.182736E+04 por ciento
+    -2.2222E-01 por ciento
   zh-TW
     0E+00%
     9.182736E+04%
     -2.2222E-01%
   bn-BD
-    ০E+০০%
-    ৯.১৮২৭৩৬E+০৪%
-    -২.২২২২E-০১%
+    ০E+০০শতাংশ
+    ৯.১৮২৭৩৬E+০৪শতাংশ
+    -২.২২২২E-০১শতাংশ
 
 scientific/+ee/sign-always currency/EUR unit-width-narrow
   es-MX
@@ -157,9 +157,9 @@
 
 scientific/+ee/sign-always measure-unit/length-furlong unit-width-full-name
   es-MX
-    0E+00 fur
-    9.182736E+04 fur
-    -2.2222E-01 fur
+    0E+00 furlongs
+    9.182736E+04 furlongs
+    -2.2222E-01 furlongs
   zh-TW
     0E+00 化朗
     9.182736E+04 化朗
@@ -172,57 +172,57 @@
 compact-short percent precision-integer
   es-MX
     0 %
-    92 k
+    92 k %
     -0 %
   zh-TW
     0%
-    9萬
+    9萬%
     -0%
   bn-BD
     ০%
-    ৯২ হা
+    ৯২ হা%
     -০%
 
 compact-short percent .000
   es-MX
     0.000 %
-    91.827 k
+    91.827 k %
     -0.222 %
   zh-TW
     0.000%
-    9.183萬
+    9.183萬%
     -0.222%
   bn-BD
     ০.০০০%
-    ৯১.৮২৭ হা
+    ৯১.৮২৭ হা%
     -০.২২২%
 
 compact-short percent .##/@@@+
   es-MX
     0 %
-    91.83 k
+    91.83 k %
     -0.222 %
   zh-TW
     0%
-    9.18萬
+    9.18萬%
     -0.222%
   bn-BD
     ০%
-    ৯১.৮৩ হা
+    ৯১.৮৩ হা%
     -০.২২২%
 
 compact-short percent @@
   es-MX
     0.0 %
-    92 k
+    92 k %
     -0.22 %
   zh-TW
     0.0%
-    9.2萬
+    9.2萬%
     -0.22%
   bn-BD
     ০.০%
-    ৯২ হা
+    ৯২ হা%
     -০.২২%
 
 compact-short currency/EUR precision-integer
@@ -508,15 +508,15 @@
 compact-short percent rounding-mode-floor
   es-MX
     0 %
-    91 k
+    91 k %
     -0.23 %
   zh-TW
     0%
-    9.1萬
+    9.1萬%
     -0.23%
   bn-BD
     ০%
-    ৯১ হা
+    ৯১ হা%
     -০.২৩%
 
 compact-short currency/EUR rounding-mode-floor
@@ -592,15 +592,15 @@
 compact-short percent integer-width/##00
   es-MX
     00 %
-    92 k
+    92 k %
     -00.22 %
   zh-TW
     00%
-    09.2萬
+    09.2萬%
     -00.22%
   bn-BD
     ০০%
-    ৯২ হা
+    ৯২ হা%
     -০০.২২%
 
 compact-short currency/EUR integer-width/##00
@@ -676,15 +676,15 @@
 compact-short percent scale/0.5
   es-MX
     0 %
-    46 k
+    46 k %
     -0.11 %
   zh-TW
     0%
-    4.6萬
+    4.6萬%
     -0.11%
   bn-BD
     ০%
-    ৪৬ হা
+    ৪৬ হা%
     -০.১১%
 
 compact-short currency/EUR scale/0.5
@@ -760,15 +760,15 @@
 compact-short percent group-on-aligned
   es-MX
     0 %
-    92 k
+    92 k %
     -0.22 %
   zh-TW
     0%
-    9.2萬
+    9.2萬%
     -0.22%
   bn-BD
     ০%
-    ৯২ হা
+    ৯২ হা%
     -০.২২%
 
 compact-short currency/EUR group-on-aligned
@@ -844,15 +844,15 @@
 compact-short percent latin
   es-MX
     0 %
-    92 k
+    92 k %
     -0.22 %
   zh-TW
     0%
-    9.2萬
+    9.2萬%
     -0.22%
   bn-BD
     0%
-    92 হা
+    92 হা%
     -0.22%
 
 compact-short currency/EUR latin
@@ -928,15 +928,15 @@
 compact-short percent sign-accounting-except-zero
   es-MX
     0 %
-    +92 k
+    +92 k %
     -0.22 %
   zh-TW
     0%
-    +9.2萬
+    +9.2萬%
     -0.22%
   bn-BD
     ০%
-    +৯২ হা
+    +৯২ হা%
     -০.২২%
 
 compact-short currency/EUR sign-accounting-except-zero
@@ -1012,15 +1012,15 @@
 compact-short percent decimal-always
   es-MX
     0. %
-    92. k
+    92. k %
     -0.22 %
   zh-TW
     0.%
-    9.2萬
+    9.2萬%
     -0.22%
   bn-BD
     ০.%
-    ৯২. হা
+    ৯২. হা%
     -০.২২%
 
 compact-short currency/EUR decimal-always
@@ -3139,59 +3139,59 @@
 
 percent unit-width-full-name precision-integer
   es-MX
-    0 %
-    91,827 %
-    -0 %
+    0 por ciento
+    91,827 por ciento
+    -0 por ciento
   zh-TW
     0%
     91,827%
     -0%
   bn-BD
-    ০%
-    ৯১,৮২৭%
-    -০%
+    ০শতাংশ
+    ৯১,৮২৭শতাংশ
+    -০শতাংশ
 
 percent unit-width-full-name .000
   es-MX
-    0.000 %
-    91,827.364 %
-    -0.222 %
+    0.000 por ciento
+    91,827.364 por ciento
+    -0.222 por ciento
   zh-TW
     0.000%
     91,827.364%
     -0.222%
   bn-BD
-    ০.০০০%
-    ৯১,৮২৭.৩৬৪%
-    -০.২২২%
+    ০.০০০শতাংশ
+    ৯১,৮২৭.৩৬৪শতাংশ
+    -০.২২২শতাংশ
 
 percent unit-width-full-name .##/@@@+
   es-MX
-    0 %
-    91,827.36 %
-    -0.222 %
+    0 por ciento
+    91,827.36 por ciento
+    -0.222 por ciento
   zh-TW
     0%
     91,827.36%
     -0.222%
   bn-BD
-    ০%
-    ৯১,৮২৭.৩৬%
-    -০.২২২%
+    ০শতাংশ
+    ৯১,৮২৭.৩৬শতাংশ
+    -০.২২২শতাংশ
 
 percent unit-width-full-name @@
   es-MX
-    0.0 %
-    92,000 %
-    -0.22 %
+    0.0 por ciento
+    92,000 por ciento
+    -0.22 por ciento
   zh-TW
     0.0%
     92,000%
     -0.22%
   bn-BD
-    ০.০%
-    ৯২,০০০%
-    -০.২২%
+    ০.০শতাংশ
+    ৯২,০০০শতাংশ
+    -০.২২শতাংশ
 
 currency/EUR unit-width-narrow precision-integer
   es-MX
@@ -3363,9 +3363,9 @@
 
 measure-unit/length-furlong unit-width-full-name precision-integer
   es-MX
-    0 fur
-    91,827 fur
-    -0 fur
+    0 furlongs
+    91,827 furlongs
+    -0 furlongs
   zh-TW
     0 化朗
     91,827 化朗
@@ -3377,9 +3377,9 @@
 
 measure-unit/length-furlong unit-width-full-name .000
   es-MX
-    0.000 fur
-    91,827.364 fur
-    -0.222 fur
+    0.000 furlongs
+    91,827.364 furlongs
+    -0.222 furlongs
   zh-TW
     0.000 化朗
     91,827.364 化朗
@@ -3391,9 +3391,9 @@
 
 measure-unit/length-furlong unit-width-full-name .##/@@@+
   es-MX
-    0 fur
-    91,827.36 fur
-    -0.222 fur
+    0 furlongs
+    91,827.36 furlongs
+    -0.222 furlongs
   zh-TW
     0 化朗
     91,827.36 化朗
@@ -3405,9 +3405,9 @@
 
 measure-unit/length-furlong unit-width-full-name @@
   es-MX
-    0.0 fur
-    92,000 fur
-    -0.22 fur
+    0.0 furlongs
+    92,000 furlongs
+    -0.22 furlongs
   zh-TW
     0.0 化朗
     92,000 化朗
@@ -3433,17 +3433,17 @@
 
 percent unit-width-full-name rounding-mode-floor
   es-MX
-    0 %
-    91,827.3645 %
-    -0.22222 %
+    0 por ciento
+    91,827.3645 por ciento
+    -0.22222 por ciento
   zh-TW
     0%
     91,827.3645%
     -0.22222%
   bn-BD
-    ০%
-    ৯১,৮২৭.৩৬৪৫%
-    -০.২২২২২%
+    ০শতাংশ
+    ৯১,৮২৭.৩৬৪৫শতাংশ
+    -০.২২২২২শতাংশ
 
 currency/EUR unit-width-narrow rounding-mode-floor
   es-MX
@@ -3489,9 +3489,9 @@
 
 measure-unit/length-furlong unit-width-full-name rounding-mode-floor
   es-MX
-    0 fur
-    91,827.3645 fur
-    -0.22222 fur
+    0 furlongs
+    91,827.3645 furlongs
+    -0.22222 furlongs
   zh-TW
     0 化朗
     91,827.3645 化朗
@@ -3517,17 +3517,17 @@
 
 percent unit-width-full-name integer-width/##00
   es-MX
-    00 %
-    1827.3645 %
-    -00.22222 %
+    00 por ciento
+    1827.3645 por ciento
+    -00.22222 por ciento
   zh-TW
     00%
     1,827.3645%
     -00.22222%
   bn-BD
-    ০০%
-    ১,৮২৭.৩৬৪৫%
-    -০০.২২২২২%
+    ০০শতাংশ
+    ১,৮২৭.৩৬৪৫শতাংশ
+    -০০.২২২২২শতাংশ
 
 currency/EUR unit-width-narrow integer-width/##00
   es-MX
@@ -3573,9 +3573,9 @@
 
 measure-unit/length-furlong unit-width-full-name integer-width/##00
   es-MX
-    00 fur
-    1827.3645 fur
-    -00.22222 fur
+    00 furlongs
+    1827.3645 furlongs
+    -00.22222 furlongs
   zh-TW
     00 化朗
     1,827.3645 化朗
@@ -3601,17 +3601,17 @@
 
 percent unit-width-full-name scale/0.5
   es-MX
-    0 %
-    45,913.68225 %
-    -0.11111 %
+    0 por ciento
+    45,913.68225 por ciento
+    -0.11111 por ciento
   zh-TW
     0%
     45,913.68225%
     -0.11111%
   bn-BD
-    ০%
-    ৪৫,৯১৩.৬৮২২৫%
-    -০.১১১১১%
+    ০শতাংশ
+    ৪৫,৯১৩.৬৮২২৫শতাংশ
+    -০.১১১১১শতাংশ
 
 currency/EUR unit-width-narrow scale/0.5
   es-MX
@@ -3657,9 +3657,9 @@
 
 measure-unit/length-furlong unit-width-full-name scale/0.5
   es-MX
-    0 fur
-    45,913.68225 fur
-    -0.11111 fur
+    0 furlongs
+    45,913.68225 furlongs
+    -0.11111 furlongs
   zh-TW
     0 化朗
     45,913.68225 化朗
@@ -3685,17 +3685,17 @@
 
 percent unit-width-full-name group-on-aligned
   es-MX
-    0 %
-    91,827.3645 %
-    -0.22222 %
+    0 por ciento
+    91,827.3645 por ciento
+    -0.22222 por ciento
   zh-TW
     0%
     91,827.3645%
     -0.22222%
   bn-BD
-    ০%
-    ৯১,৮২৭.৩৬৪৫%
-    -০.২২২২২%
+    ০শতাংশ
+    ৯১,৮২৭.৩৬৪৫শতাংশ
+    -০.২২২২২শতাংশ
 
 currency/EUR unit-width-narrow group-on-aligned
   es-MX
@@ -3741,9 +3741,9 @@
 
 measure-unit/length-furlong unit-width-full-name group-on-aligned
   es-MX
-    0 fur
-    91,827.3645 fur
-    -0.22222 fur
+    0 furlongs
+    91,827.3645 furlongs
+    -0.22222 furlongs
   zh-TW
     0 化朗
     91,827.3645 化朗
@@ -3769,17 +3769,17 @@
 
 percent unit-width-full-name latin
   es-MX
-    0 %
-    91,827.3645 %
-    -0.22222 %
+    0 por ciento
+    91,827.3645 por ciento
+    -0.22222 por ciento
   zh-TW
     0%
     91,827.3645%
     -0.22222%
   bn-BD
-    0%
-    91,827.3645%
-    -0.22222%
+    0শতাংশ
+    91,827.3645শতাংশ
+    -0.22222শতাংশ
 
 currency/EUR unit-width-narrow latin
   es-MX
@@ -3825,9 +3825,9 @@
 
 measure-unit/length-furlong unit-width-full-name latin
   es-MX
-    0 fur
-    91,827.3645 fur
-    -0.22222 fur
+    0 furlongs
+    91,827.3645 furlongs
+    -0.22222 furlongs
   zh-TW
     0 化朗
     91,827.3645 化朗
@@ -3853,17 +3853,17 @@
 
 percent unit-width-full-name sign-accounting-except-zero
   es-MX
-    0 %
-    +91,827.3645 %
-    -0.22222 %
+    0 por ciento
+    +91,827.3645 por ciento
+    -0.22222 por ciento
   zh-TW
     0%
     +91,827.3645%
     -0.22222%
   bn-BD
-    ০%
-    +৯১,৮২৭.৩৬৪৫%
-    -০.২২২২২%
+    ০শতাংশ
+    +৯১,৮২৭.৩৬৪৫শতাংশ
+    -০.২২২২২শতাংশ
 
 currency/EUR unit-width-narrow sign-accounting-except-zero
   es-MX
@@ -3909,9 +3909,9 @@
 
 measure-unit/length-furlong unit-width-full-name sign-accounting-except-zero
   es-MX
-    0 fur
-    +91,827.3645 fur
-    -0.22222 fur
+    0 furlongs
+    +91,827.3645 furlongs
+    -0.22222 furlongs
   zh-TW
     0 化朗
     +91,827.3645 化朗
@@ -3937,17 +3937,17 @@
 
 percent unit-width-full-name decimal-always
   es-MX
-    0. %
-    91,827.3645 %
-    -0.22222 %
+    0. por ciento
+    91,827.3645 por ciento
+    -0.22222 por ciento
   zh-TW
     0.%
     91,827.3645%
     -0.22222%
   bn-BD
-    ০.%
-    ৯১,৮২৭.৩৬৪৫%
-    -০.২২২২২%
+    ০.শতাংশ
+    ৯১,৮২৭.৩৬৪৫শতাংশ
+    -০.২২২২২শতাংশ
 
 currency/EUR unit-width-narrow decimal-always
   es-MX
@@ -3993,9 +3993,9 @@
 
 measure-unit/length-furlong unit-width-full-name decimal-always
   es-MX
-    0. fur
-    91,827.3645 fur
-    -0.22222 fur
+    0. furlongs
+    91,827.3645 furlongs
+    -0.22222 furlongs
   zh-TW
     0. 化朗
     91,827.3645 化朗
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements.java
index 2ee3e16..4472191 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
  /*
   *******************************************************************************
   * Copyright (C) 2005-2008, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en.properties b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en.properties
index d81f8fc..e6f015f 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en.properties
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en.properties
@@ -1,7 +1,7 @@
 # *
 # *******************************************************************************
 # * Copyright (C) 2016 and later: Unicode, Inc. and others.                     *
-# * License & terms of use: http://www.unicode.org/copyright.html#License       *
+# * License & terms of use: http://www.unicode.org/copyright.html       *
 # *******************************************************************************
 # *******************************************************************************
 # * Copyright (C) 2005-2006, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn.properties b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn.properties
index 10fb156..1bc964b 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn.properties
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn.properties
@@ -1,7 +1,7 @@
 # *
 # *******************************************************************************
 # * Copyright (C) 2016 and later: Unicode, Inc. and others.                     *
-# * License & terms of use: http://www.unicode.org/copyright.html#License       *
+# * License & terms of use: http://www.unicode.org/copyright.html       *
 # *******************************************************************************
 # *******************************************************************************
 # * Copyright (C) 2005-2006, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn_US.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn_US.java
index cf3bb9b..c089a05 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn_US.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn_US.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
  /*
   *******************************************************************************
   * Copyright (C) 2005-2008, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en_US.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en_US.java
index c9e92e6..eed9614 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en_US.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en_US.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
  /*
   *******************************************************************************
   * Copyright (C) 2005, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_fr_Latn_FR.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_fr_Latn_FR.java
index 37cd8a2..7534b87 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_fr_Latn_FR.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_fr_Latn_FR.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
  /*
   *******************************************************************************
   * Copyright (C) 2005-2009, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_te.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_te.java
index 5eed626..8c75887 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_te.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_te.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
  /*
   *******************************************************************************
   * Copyright (C) 2006-2008, International Business Machines Corporation and    *
@@ -20,4 +20,4 @@
     protected Object[][] getContents() {
         return data;
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestMessages.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestMessages.java
index 4c9811e..977d7d3 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestMessages.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/TestMessages.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2010, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/testmessages.properties b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/testmessages.properties
index 1b271a2..6e0bff0 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/testmessages.properties
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/resources/testmessages.properties
@@ -1,6 +1,6 @@
 # *******************************************************************************
 # * Copyright (C) 2016 and later: Unicode, Inc. and others.                     *
-# * License & terms of use: http://www.unicode.org/copyright.html#License       *
+# * License & terms of use: http://www.unicode.org/copyright.html       *
 # *******************************************************************************
 # *******************************************************************************
 # * Copyright (C) 2010, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode/NormalizationTest-3.2.0.txt b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode/NormalizationTest-3.2.0.txt
index c269dcb..73f4e3c 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode/NormalizationTest-3.2.0.txt
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode/NormalizationTest-3.2.0.txt
@@ -1,5 +1,5 @@
 # © 2002 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # NormalizationTest-3.2.0.txt
 # Date: 2002-03-19,23:31:18 GMT [MD]
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode/localeCanonicalization.txt b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode/localeCanonicalization.txt
new file mode 100644
index 0000000..ce0e191
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode/localeCanonicalization.txt
@@ -0,0 +1,1647 @@
+# Test data for locale identifier canonicalization
+#  Copyright © 1991-2020 Unicode, Inc.
+#  For terms of use, see http://www.unicode.org/copyright.html
+#  Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+#  CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# Format:
+# <source locale identifier>	;	<expected canonicalized locale identifier>
+#
+# The data lines are divided into 4 sets:
+#   explicit:    a short list of explicit test cases.
+#   fromAliases: test cases generated from the alias data.
+#   decanonicalized: test cases generated by reversing the normalization process.
+#   withIrrelevants: test cases generated from the others by adding irrelevant fields where possible,
+#                           to ensure that the canonicalization implementation is not sensitive to irrelevant fields. These include:
+#     Language: aaa
+#     Script:   Adlm
+#     Region:   AC
+#     Variant:  fonipa
+######
+
+
+
+# explicit
+
+art_lojban	;	jbo
+en_US_aaland	;	en_US
+en_US_heploc	;	en_US_alalc97
+en_US_polytoni	;	en_US_polyton
+en_aaland	;	en_AX
+en_arevela	;	en
+en_arevmda_arevela	;	en
+en_lojban	;	en
+hy_arevela	;	hy
+hy_arevmda	;	hyw
+hy_arevmda_arevela	;	hyw
+hye_arevmda	;	hyw
+no_bokmal_nynorsk	;	nb
+no_nynorsk_bokmal	;	nb
+zh_guoyu_hakka_xiang	;	hak
+zh_hakka_xiang	;	hak
+
+# fromAliases
+
+aa_saaho	;	ssy
+aam	;	aas
+aar	;	aa
+abk	;	ab
+adp	;	dz
+afr	;	af
+aju	;	jrb
+aka	;	ak
+alb	;	sq
+als	;	sq
+amh	;	am
+ara	;	ar
+arb	;	ar
+arg	;	an
+arm	;	hy
+asd	;	snz
+asm	;	as
+aue	;	ktz
+ava	;	av
+ave	;	ae
+aym	;	ay
+ayr	;	ay
+ayx	;	nun
+aze	;	az
+azj	;	az
+bak	;	ba
+bam	;	bm
+baq	;	eu
+bcc	;	bal
+bcl	;	bik
+bel	;	be
+ben	;	bn
+bgm	;	bcg
+bh	;	bho
+bih	;	bho
+bis	;	bi
+bjd	;	drl
+bod	;	bo
+bos	;	bs
+bre	;	br
+bul	;	bg
+bur	;	my
+bxk	;	luy
+bxr	;	bua
+cat	;	ca
+ccq	;	rki
+cel_gaulish	;	xtg
+ces	;	cs
+cha	;	ch
+che	;	ce
+chi	;	zh
+chu	;	cu
+chv	;	cv
+cjr	;	mom
+cka	;	cmr
+cld	;	syr
+cmk	;	xch
+cmn	;	zh
+cnr	;	sr_ME
+cor	;	kw
+cos	;	co
+coy	;	pij
+cqu	;	quh
+cre	;	cr
+cwd	;	cr
+cym	;	cy
+cze	;	cs
+dan	;	da
+deu	;	de
+dgo	;	doi
+dhd	;	mwr
+dik	;	din
+diq	;	zza
+dit	;	dif
+div	;	dv
+drh	;	mn
+drw	;	fa_AF
+dut	;	nl
+dzo	;	dz
+ekk	;	et
+ell	;	el
+emk	;	man
+eng	;	en
+epo	;	eo
+esk	;	ik
+est	;	et
+eus	;	eu
+ewe	;	ee
+fao	;	fo
+fas	;	fa
+fat	;	ak
+fij	;	fj
+fin	;	fi
+fra	;	fr
+fre	;	fr
+fry	;	fy
+fuc	;	ff
+ful	;	ff
+gav	;	dev
+gaz	;	om
+gbo	;	grb
+geo	;	ka
+ger	;	de
+gfx	;	vaj
+ggn	;	gvr
+gla	;	gd
+gle	;	ga
+glg	;	gl
+glv	;	gv
+gno	;	gon
+gre	;	el
+grn	;	gn
+gti	;	nyc
+gug	;	gn
+guj	;	gu
+guv	;	duz
+gya	;	gba
+hat	;	ht
+hau	;	ha
+hbs	;	sr_Latn
+hdn	;	hai
+hea	;	hmn
+heb	;	he
+her	;	hz
+him	;	srx
+hin	;	hi
+hmo	;	ho
+hrr	;	jal
+hrv	;	hr
+hun	;	hu
+hye	;	hy
+ibi	;	opa
+ibo	;	ig
+ice	;	is
+ido	;	io
+iii	;	ii
+ike	;	iu
+iku	;	iu
+ile	;	ie
+ilw	;	gal
+in	;	id
+ina	;	ia
+ind	;	id
+ipk	;	ik
+isl	;	is
+ita	;	it
+iw	;	he
+jav	;	jv
+jeg	;	oyb
+ji	;	yi
+jpn	;	ja
+jw	;	jv
+kal	;	kl
+kan	;	kn
+kas	;	ks
+kat	;	ka
+kau	;	kr
+kaz	;	kk
+kgc	;	tdf
+kgh	;	kml
+khk	;	mn
+khm	;	km
+kik	;	ki
+kin	;	rw
+kir	;	ky
+kmr	;	ku
+knc	;	kr
+kng	;	kg
+knn	;	kok
+koj	;	kwv
+kom	;	kv
+kon	;	kg
+kor	;	ko
+kpv	;	kv
+krm	;	bmf
+ktr	;	dtp
+kua	;	kj
+kur	;	ku
+kvs	;	gdj
+kwq	;	yam
+kxe	;	tvd
+kzj	;	dtp
+kzt	;	dtp
+lao	;	lo
+lat	;	la
+lav	;	lv
+lbk	;	bnc
+lii	;	raq
+lim	;	li
+lin	;	ln
+lit	;	lt
+llo	;	ngt
+lmm	;	rmx
+ltz	;	lb
+lub	;	lu
+lug	;	lg
+lvs	;	lv
+mac	;	mk
+mah	;	mh
+mal	;	ml
+mao	;	mi
+mar	;	mr
+may	;	ms
+meg	;	cir
+mhr	;	chm
+mkd	;	mk
+mlg	;	mg
+mlt	;	mt
+mnk	;	man
+mo	;	ro
+mol	;	ro
+mon	;	mn
+mri	;	mi
+msa	;	ms
+mst	;	mry
+mup	;	raj
+mwj	;	vaj
+mya	;	my
+myd	;	aog
+myt	;	mry
+nad	;	xny
+nau	;	na
+nav	;	nv
+nbl	;	nr
+ncp	;	kdz
+nde	;	nd
+ndo	;	ng
+nep	;	ne
+nld	;	nl
+nno	;	nn
+nns	;	nbr
+nnx	;	ngv
+no	;	nb
+no_bokmal	;	nb
+no_nynorsk	;	nn
+nob	;	nb
+nor	;	nb
+npi	;	ne
+nts	;	pij
+nya	;	ny
+oci	;	oc
+ojg	;	oj
+oji	;	oj
+ori	;	or
+orm	;	om
+ory	;	or
+oss	;	os
+oun	;	vaj
+pan	;	pa
+pbu	;	ps
+pcr	;	adx
+per	;	fa
+pes	;	fa
+pli	;	pi
+plt	;	mg
+pmc	;	huw
+pmu	;	phr
+pnb	;	lah
+pol	;	pl
+por	;	pt
+ppa	;	bfy
+ppr	;	lcq
+prs	;	fa_AF
+pry	;	prt
+pus	;	ps
+puz	;	pub
+que	;	qu
+quz	;	qu
+rmy	;	rom
+roh	;	rm
+ron	;	ro
+rum	;	ro
+run	;	rn
+rus	;	ru
+sag	;	sg
+san	;	sa
+sca	;	hle
+scc	;	sr
+scr	;	hr
+sgn_BR	;	bzs
+sgn_CO	;	csn
+sgn_DE	;	gsg
+sgn_DK	;	dsl
+sgn_FR	;	fsl
+sgn_GB	;	bfi
+sgn_GR	;	gss
+sgn_IE	;	isg
+sgn_IT	;	ise
+sgn_JP	;	jsl
+sgn_MX	;	mfs
+sgn_NI	;	ncs
+sgn_NL	;	dse
+sgn_NO	;	nsi
+sgn_PT	;	psr
+sgn_SE	;	swl
+sgn_US	;	ase
+sgn_ZA	;	sfs
+sh	;	sr_Latn
+sin	;	si
+skk	;	oyb
+slk	;	sk
+slo	;	sk
+slv	;	sl
+sme	;	se
+smo	;	sm
+sna	;	sn
+snd	;	sd
+som	;	so
+sot	;	st
+spa	;	es
+spy	;	kln
+sqi	;	sq
+src	;	sc
+srd	;	sc
+srp	;	sr
+ssw	;	ss
+sun	;	su
+swa	;	sw
+swc	;	sw_CD
+swe	;	sv
+swh	;	sw
+tah	;	ty
+tam	;	ta
+tat	;	tt
+tdu	;	dtp
+tel	;	te
+tgk	;	tg
+tgl	;	fil
+tha	;	th
+thc	;	tpo
+thx	;	oyb
+tib	;	bo
+tie	;	ras
+tir	;	ti
+tkk	;	twm
+tl	;	fil
+tlw	;	weo
+tmp	;	tyj
+tne	;	kak
+tnf	;	fa_AF
+ton	;	to
+tsf	;	taj
+tsn	;	tn
+tso	;	ts
+ttq	;	tmh
+tuk	;	tk
+tur	;	tr
+tw	;	ak
+twi	;	ak
+uig	;	ug
+ukr	;	uk
+umu	;	del
+und_004	;	und_AF
+und_008	;	und_AL
+und_010	;	und_AQ
+und_012	;	und_DZ
+und_016	;	und_AS
+und_020	;	und_AD
+und_024	;	und_AO
+und_028	;	und_AG
+und_031	;	und_AZ
+und_032	;	und_AR
+und_036	;	und_AU
+und_040	;	und_AT
+und_044	;	und_BS
+und_048	;	und_BH
+und_050	;	und_BD
+und_051	;	und_AM
+und_052	;	und_BB
+und_056	;	und_BE
+und_060	;	und_BM
+und_062	;	und_034
+und_064	;	und_BT
+und_068	;	und_BO
+und_070	;	und_BA
+und_072	;	und_BW
+und_074	;	und_BV
+und_076	;	und_BR
+und_084	;	und_BZ
+und_086	;	und_IO
+und_090	;	und_SB
+und_092	;	und_VG
+und_096	;	und_BN
+und_100	;	und_BG
+und_104	;	und_MM
+und_108	;	und_BI
+und_112	;	und_BY
+und_116	;	und_KH
+und_120	;	und_CM
+und_124	;	und_CA
+und_132	;	und_CV
+und_136	;	und_KY
+und_140	;	und_CF
+und_144	;	und_LK
+und_148	;	und_TD
+und_152	;	und_CL
+und_156	;	und_CN
+und_158	;	und_TW
+und_162	;	und_CX
+und_166	;	und_CC
+und_170	;	und_CO
+und_172	;	und_RU
+und_174	;	und_KM
+und_175	;	und_YT
+und_178	;	und_CG
+und_180	;	und_CD
+und_184	;	und_CK
+und_188	;	und_CR
+und_191	;	und_HR
+und_192	;	und_CU
+und_196	;	und_CY
+und_200	;	und_CZ
+und_203	;	und_CZ
+und_204	;	und_BJ
+und_208	;	und_DK
+und_212	;	und_DM
+und_214	;	und_DO
+und_218	;	und_EC
+und_222	;	und_SV
+und_226	;	und_GQ
+und_230	;	und_ET
+und_231	;	und_ET
+und_232	;	und_ER
+und_233	;	und_EE
+und_234	;	und_FO
+und_238	;	und_FK
+und_239	;	und_GS
+und_242	;	und_FJ
+und_246	;	und_FI
+und_248	;	und_AX
+und_249	;	und_FR
+und_250	;	und_FR
+und_254	;	und_GF
+und_258	;	und_PF
+und_260	;	und_TF
+und_262	;	und_DJ
+und_266	;	und_GA
+und_268	;	und_GE
+und_270	;	und_GM
+und_275	;	und_PS
+und_276	;	und_DE
+und_278	;	und_DE
+und_280	;	und_DE
+und_288	;	und_GH
+und_292	;	und_GI
+und_296	;	und_KI
+und_300	;	und_GR
+und_304	;	und_GL
+und_308	;	und_GD
+und_312	;	und_GP
+und_316	;	und_GU
+und_320	;	und_GT
+und_324	;	und_GN
+und_328	;	und_GY
+und_332	;	und_HT
+und_334	;	und_HM
+und_336	;	und_VA
+und_340	;	und_HN
+und_344	;	und_HK
+und_348	;	und_HU
+und_352	;	und_IS
+und_356	;	und_IN
+und_360	;	und_ID
+und_364	;	und_IR
+und_368	;	und_IQ
+und_372	;	und_IE
+und_376	;	und_IL
+und_380	;	und_IT
+und_384	;	und_CI
+und_388	;	und_JM
+und_392	;	und_JP
+und_398	;	und_KZ
+und_400	;	und_JO
+und_404	;	und_KE
+und_408	;	und_KP
+und_410	;	und_KR
+und_414	;	und_KW
+und_417	;	und_KG
+und_418	;	und_LA
+und_422	;	und_LB
+und_426	;	und_LS
+und_428	;	und_LV
+und_430	;	und_LR
+und_434	;	und_LY
+und_438	;	und_LI
+und_440	;	und_LT
+und_442	;	und_LU
+und_446	;	und_MO
+und_450	;	und_MG
+und_454	;	und_MW
+und_458	;	und_MY
+und_462	;	und_MV
+und_466	;	und_ML
+und_470	;	und_MT
+und_474	;	und_MQ
+und_478	;	und_MR
+und_480	;	und_MU
+und_484	;	und_MX
+und_492	;	und_MC
+und_496	;	und_MN
+und_498	;	und_MD
+und_499	;	und_ME
+und_500	;	und_MS
+und_504	;	und_MA
+und_508	;	und_MZ
+und_512	;	und_OM
+und_516	;	und_NA
+und_520	;	und_NR
+und_524	;	und_NP
+und_528	;	und_NL
+und_530	;	und_CW
+und_531	;	und_CW
+und_532	;	und_CW
+und_533	;	und_AW
+und_534	;	und_SX
+und_535	;	und_BQ
+und_536	;	und_SA
+und_540	;	und_NC
+und_548	;	und_VU
+und_554	;	und_NZ
+und_558	;	und_NI
+und_562	;	und_NE
+und_566	;	und_NG
+und_570	;	und_NU
+und_574	;	und_NF
+und_578	;	und_NO
+und_580	;	und_MP
+und_581	;	und_UM
+und_582	;	und_FM
+und_583	;	und_FM
+und_584	;	und_MH
+und_585	;	und_PW
+und_586	;	und_PK
+und_591	;	und_PA
+und_598	;	und_PG
+und_600	;	und_PY
+und_604	;	und_PE
+und_608	;	und_PH
+und_612	;	und_PN
+und_616	;	und_PL
+und_620	;	und_PT
+und_624	;	und_GW
+und_626	;	und_TL
+und_630	;	und_PR
+und_634	;	und_QA
+und_638	;	und_RE
+und_642	;	und_RO
+und_643	;	und_RU
+und_646	;	und_RW
+und_652	;	und_BL
+und_654	;	und_SH
+und_659	;	und_KN
+und_660	;	und_AI
+und_662	;	und_LC
+und_663	;	und_MF
+und_666	;	und_PM
+und_670	;	und_VC
+und_674	;	und_SM
+und_678	;	und_ST
+und_682	;	und_SA
+und_686	;	und_SN
+und_688	;	und_RS
+und_690	;	und_SC
+und_694	;	und_SL
+und_702	;	und_SG
+und_703	;	und_SK
+und_704	;	und_VN
+und_705	;	und_SI
+und_706	;	und_SO
+und_710	;	und_ZA
+und_716	;	und_ZW
+und_720	;	und_YE
+und_724	;	und_ES
+und_728	;	und_SS
+und_729	;	und_SD
+und_732	;	und_EH
+und_736	;	und_SD
+und_740	;	und_SR
+und_744	;	und_SJ
+und_748	;	und_SZ
+und_752	;	und_SE
+und_756	;	und_CH
+und_760	;	und_SY
+und_762	;	und_TJ
+und_764	;	und_TH
+und_768	;	und_TG
+und_772	;	und_TK
+und_776	;	und_TO
+und_780	;	und_TT
+und_784	;	und_AE
+und_788	;	und_TN
+und_792	;	und_TR
+und_795	;	und_TM
+und_796	;	und_TC
+und_798	;	und_TV
+und_800	;	und_UG
+und_804	;	und_UA
+und_807	;	und_MK
+und_810	;	und_RU
+und_818	;	und_EG
+und_826	;	und_GB
+und_830	;	und_JE
+und_831	;	und_GG
+und_832	;	und_JE
+und_833	;	und_IM
+und_834	;	und_TZ
+und_840	;	und_US
+und_850	;	und_VI
+und_854	;	und_BF
+und_858	;	und_UY
+und_860	;	und_UZ
+und_862	;	und_VE
+und_876	;	und_WF
+und_882	;	und_WS
+und_886	;	und_YE
+und_887	;	und_YE
+und_890	;	und_RS
+und_891	;	und_RS
+und_894	;	und_ZM
+und_958	;	und_AA
+und_959	;	und_QM
+und_960	;	und_QN
+und_962	;	und_QP
+und_963	;	und_QQ
+und_964	;	und_QR
+und_965	;	und_QS
+und_966	;	und_QT
+und_967	;	und_EU
+und_968	;	und_QV
+und_969	;	und_QW
+und_970	;	und_QX
+und_971	;	und_QY
+und_972	;	und_QZ
+und_973	;	und_XA
+und_974	;	und_XB
+und_975	;	und_XC
+und_976	;	und_XD
+und_977	;	und_XE
+und_978	;	und_XF
+und_979	;	und_XG
+und_980	;	und_XH
+und_981	;	und_XI
+und_982	;	und_XJ
+und_983	;	und_XK
+und_984	;	und_XL
+und_985	;	und_XM
+und_986	;	und_XN
+und_987	;	und_XO
+und_988	;	und_XP
+und_989	;	und_XQ
+und_990	;	und_XR
+und_991	;	und_XS
+und_992	;	und_XT
+und_993	;	und_XU
+und_994	;	und_XV
+und_995	;	und_XW
+und_996	;	und_XX
+und_997	;	und_XY
+und_998	;	und_XZ
+und_999	;	und_ZZ
+und_AN	;	und_CW
+und_BU	;	und_MM
+und_CS	;	und_RS
+und_CT	;	und_KI
+und_DD	;	und_DE
+und_DY	;	und_BJ
+und_FQ	;	und_AQ
+und_FX	;	und_FR
+und_HV	;	und_BF
+und_JT	;	und_UM
+und_MI	;	und_UM
+und_NH	;	und_VU
+und_NQ	;	und_AQ
+und_NT	;	und_SA
+und_PC	;	und_FM
+und_PU	;	und_UM
+und_PZ	;	und_PA
+und_QU	;	und_EU
+und_Qaai	;	und_Zinh
+und_RH	;	und_ZW
+und_SU	;	und_RU
+und_TP	;	und_TL
+und_UK	;	und_GB
+und_VD	;	und_VN
+und_WK	;	und_UM
+und_YD	;	und_YE
+und_YU	;	und_RS
+und_ZR	;	und_CD
+und_aaland	;	und_AX
+und_arevela	;	und
+und_arevmda	;	und
+und_bokmal	;	und
+und_hakka	;	und
+und_heploc	;	und_alalc97
+und_lojban	;	und
+und_nynorsk	;	und
+und_polytoni	;	und_polyton
+und_saaho	;	und
+und_xiang	;	und
+uok	;	ema
+urd	;	ur
+uzb	;	uz
+uzn	;	uz
+ven	;	ve
+vie	;	vi
+vol	;	vo
+wel	;	cy
+wln	;	wa
+wol	;	wo
+xba	;	cax
+xho	;	xh
+xia	;	acn
+xkh	;	waw
+xpe	;	kpe
+xsj	;	suj
+xsl	;	den
+ybd	;	rki
+ydd	;	yi
+yid	;	yi
+yma	;	lrr
+ymt	;	mtm
+yor	;	yo
+yos	;	zom
+yuu	;	yug
+zai	;	zap
+zh_guoyu	;	zh
+zh_hakka	;	hak
+zh_xiang	;	hsn
+zha	;	za
+zho	;	zh
+zsm	;	ms
+zul	;	zu
+zyb	;	za
+
+# decanonicalized
+
+aar_saaho	;	ssy
+arm_arevela	;	hy
+arm_arevela_arevmda	;	hyw
+arm_arevmda	;	hyw
+chi_guoyu	;	zh
+chi_guoyu_hakka_xiang	;	hak
+chi_hakka	;	hak
+chi_hakka_xiang	;	hak
+chi_xiang	;	hsn
+cmn_guoyu	;	zh
+cmn_guoyu_hakka_xiang	;	hak
+cmn_hakka	;	hak
+cmn_hakka_xiang	;	hak
+cmn_xiang	;	hsn
+en_840_aaland	;	en_US
+en_840_heploc	;	en_US_alalc97
+en_840_polytoni	;	en_US_polyton
+eng_840_aaland	;	en_US
+eng_840_heploc	;	en_US_alalc97
+eng_840_polytoni	;	en_US_polyton
+eng_US_aaland	;	en_US
+eng_US_heploc	;	en_US_alalc97
+eng_US_polytoni	;	en_US_polyton
+eng_aaland	;	en_AX
+eng_arevela	;	en
+eng_arevela_arevmda	;	en
+eng_lojban	;	en
+hye_arevela	;	hy
+hye_arevela_arevmda	;	hyw
+sgn_076	;	bzs
+sgn_170	;	csn
+sgn_208	;	dsl
+sgn_249	;	fsl
+sgn_250	;	fsl
+sgn_276	;	gsg
+sgn_278	;	gsg
+sgn_280	;	gsg
+sgn_300	;	gss
+sgn_372	;	isg
+sgn_380	;	ise
+sgn_392	;	jsl
+sgn_484	;	mfs
+sgn_528	;	dse
+sgn_558	;	ncs
+sgn_578	;	nsi
+sgn_620	;	psr
+sgn_710	;	sfs
+sgn_752	;	swl
+sgn_826	;	bfi
+sgn_840	;	ase
+sgn_DD	;	gsg
+sgn_FX	;	fsl
+sgn_UK	;	bfi
+zho_guoyu	;	zh
+zho_guoyu_hakka_xiang	;	hak
+zho_hakka	;	hak
+zho_hakka_xiang	;	hak
+zho_xiang	;	hsn
+
+# withIrrelevants
+
+aa_Adlm_AC_fonipa_saaho	;	ssy_Adlm_AC_fonipa
+aaa_Adlm_004_fonipa	;	aaa_Adlm_AF_fonipa
+aaa_Adlm_008_fonipa	;	aaa_Adlm_AL_fonipa
+aaa_Adlm_010_fonipa	;	aaa_Adlm_AQ_fonipa
+aaa_Adlm_012_fonipa	;	aaa_Adlm_DZ_fonipa
+aaa_Adlm_016_fonipa	;	aaa_Adlm_AS_fonipa
+aaa_Adlm_020_fonipa	;	aaa_Adlm_AD_fonipa
+aaa_Adlm_024_fonipa	;	aaa_Adlm_AO_fonipa
+aaa_Adlm_028_fonipa	;	aaa_Adlm_AG_fonipa
+aaa_Adlm_031_fonipa	;	aaa_Adlm_AZ_fonipa
+aaa_Adlm_032_fonipa	;	aaa_Adlm_AR_fonipa
+aaa_Adlm_036_fonipa	;	aaa_Adlm_AU_fonipa
+aaa_Adlm_040_fonipa	;	aaa_Adlm_AT_fonipa
+aaa_Adlm_044_fonipa	;	aaa_Adlm_BS_fonipa
+aaa_Adlm_048_fonipa	;	aaa_Adlm_BH_fonipa
+aaa_Adlm_050_fonipa	;	aaa_Adlm_BD_fonipa
+aaa_Adlm_051_fonipa	;	aaa_Adlm_AM_fonipa
+aaa_Adlm_052_fonipa	;	aaa_Adlm_BB_fonipa
+aaa_Adlm_056_fonipa	;	aaa_Adlm_BE_fonipa
+aaa_Adlm_060_fonipa	;	aaa_Adlm_BM_fonipa
+aaa_Adlm_062_fonipa	;	aaa_Adlm_034_fonipa
+aaa_Adlm_064_fonipa	;	aaa_Adlm_BT_fonipa
+aaa_Adlm_068_fonipa	;	aaa_Adlm_BO_fonipa
+aaa_Adlm_070_fonipa	;	aaa_Adlm_BA_fonipa
+aaa_Adlm_072_fonipa	;	aaa_Adlm_BW_fonipa
+aaa_Adlm_074_fonipa	;	aaa_Adlm_BV_fonipa
+aaa_Adlm_076_fonipa	;	aaa_Adlm_BR_fonipa
+aaa_Adlm_084_fonipa	;	aaa_Adlm_BZ_fonipa
+aaa_Adlm_086_fonipa	;	aaa_Adlm_IO_fonipa
+aaa_Adlm_090_fonipa	;	aaa_Adlm_SB_fonipa
+aaa_Adlm_092_fonipa	;	aaa_Adlm_VG_fonipa
+aaa_Adlm_096_fonipa	;	aaa_Adlm_BN_fonipa
+aaa_Adlm_100_fonipa	;	aaa_Adlm_BG_fonipa
+aaa_Adlm_104_fonipa	;	aaa_Adlm_MM_fonipa
+aaa_Adlm_108_fonipa	;	aaa_Adlm_BI_fonipa
+aaa_Adlm_112_fonipa	;	aaa_Adlm_BY_fonipa
+aaa_Adlm_116_fonipa	;	aaa_Adlm_KH_fonipa
+aaa_Adlm_120_fonipa	;	aaa_Adlm_CM_fonipa
+aaa_Adlm_124_fonipa	;	aaa_Adlm_CA_fonipa
+aaa_Adlm_132_fonipa	;	aaa_Adlm_CV_fonipa
+aaa_Adlm_136_fonipa	;	aaa_Adlm_KY_fonipa
+aaa_Adlm_140_fonipa	;	aaa_Adlm_CF_fonipa
+aaa_Adlm_144_fonipa	;	aaa_Adlm_LK_fonipa
+aaa_Adlm_148_fonipa	;	aaa_Adlm_TD_fonipa
+aaa_Adlm_152_fonipa	;	aaa_Adlm_CL_fonipa
+aaa_Adlm_156_fonipa	;	aaa_Adlm_CN_fonipa
+aaa_Adlm_158_fonipa	;	aaa_Adlm_TW_fonipa
+aaa_Adlm_162_fonipa	;	aaa_Adlm_CX_fonipa
+aaa_Adlm_166_fonipa	;	aaa_Adlm_CC_fonipa
+aaa_Adlm_170_fonipa	;	aaa_Adlm_CO_fonipa
+aaa_Adlm_172_fonipa	;	aaa_Adlm_RU_fonipa
+aaa_Adlm_174_fonipa	;	aaa_Adlm_KM_fonipa
+aaa_Adlm_175_fonipa	;	aaa_Adlm_YT_fonipa
+aaa_Adlm_178_fonipa	;	aaa_Adlm_CG_fonipa
+aaa_Adlm_180_fonipa	;	aaa_Adlm_CD_fonipa
+aaa_Adlm_184_fonipa	;	aaa_Adlm_CK_fonipa
+aaa_Adlm_188_fonipa	;	aaa_Adlm_CR_fonipa
+aaa_Adlm_191_fonipa	;	aaa_Adlm_HR_fonipa
+aaa_Adlm_192_fonipa	;	aaa_Adlm_CU_fonipa
+aaa_Adlm_196_fonipa	;	aaa_Adlm_CY_fonipa
+aaa_Adlm_200_fonipa	;	aaa_Adlm_CZ_fonipa
+aaa_Adlm_203_fonipa	;	aaa_Adlm_CZ_fonipa
+aaa_Adlm_204_fonipa	;	aaa_Adlm_BJ_fonipa
+aaa_Adlm_208_fonipa	;	aaa_Adlm_DK_fonipa
+aaa_Adlm_212_fonipa	;	aaa_Adlm_DM_fonipa
+aaa_Adlm_214_fonipa	;	aaa_Adlm_DO_fonipa
+aaa_Adlm_218_fonipa	;	aaa_Adlm_EC_fonipa
+aaa_Adlm_222_fonipa	;	aaa_Adlm_SV_fonipa
+aaa_Adlm_226_fonipa	;	aaa_Adlm_GQ_fonipa
+aaa_Adlm_230_fonipa	;	aaa_Adlm_ET_fonipa
+aaa_Adlm_231_fonipa	;	aaa_Adlm_ET_fonipa
+aaa_Adlm_232_fonipa	;	aaa_Adlm_ER_fonipa
+aaa_Adlm_233_fonipa	;	aaa_Adlm_EE_fonipa
+aaa_Adlm_234_fonipa	;	aaa_Adlm_FO_fonipa
+aaa_Adlm_238_fonipa	;	aaa_Adlm_FK_fonipa
+aaa_Adlm_239_fonipa	;	aaa_Adlm_GS_fonipa
+aaa_Adlm_242_fonipa	;	aaa_Adlm_FJ_fonipa
+aaa_Adlm_246_fonipa	;	aaa_Adlm_FI_fonipa
+aaa_Adlm_248_fonipa	;	aaa_Adlm_AX_fonipa
+aaa_Adlm_249_fonipa	;	aaa_Adlm_FR_fonipa
+aaa_Adlm_250_fonipa	;	aaa_Adlm_FR_fonipa
+aaa_Adlm_254_fonipa	;	aaa_Adlm_GF_fonipa
+aaa_Adlm_258_fonipa	;	aaa_Adlm_PF_fonipa
+aaa_Adlm_260_fonipa	;	aaa_Adlm_TF_fonipa
+aaa_Adlm_262_fonipa	;	aaa_Adlm_DJ_fonipa
+aaa_Adlm_266_fonipa	;	aaa_Adlm_GA_fonipa
+aaa_Adlm_268_fonipa	;	aaa_Adlm_GE_fonipa
+aaa_Adlm_270_fonipa	;	aaa_Adlm_GM_fonipa
+aaa_Adlm_275_fonipa	;	aaa_Adlm_PS_fonipa
+aaa_Adlm_276_fonipa	;	aaa_Adlm_DE_fonipa
+aaa_Adlm_278_fonipa	;	aaa_Adlm_DE_fonipa
+aaa_Adlm_280_fonipa	;	aaa_Adlm_DE_fonipa
+aaa_Adlm_288_fonipa	;	aaa_Adlm_GH_fonipa
+aaa_Adlm_292_fonipa	;	aaa_Adlm_GI_fonipa
+aaa_Adlm_296_fonipa	;	aaa_Adlm_KI_fonipa
+aaa_Adlm_300_fonipa	;	aaa_Adlm_GR_fonipa
+aaa_Adlm_304_fonipa	;	aaa_Adlm_GL_fonipa
+aaa_Adlm_308_fonipa	;	aaa_Adlm_GD_fonipa
+aaa_Adlm_312_fonipa	;	aaa_Adlm_GP_fonipa
+aaa_Adlm_316_fonipa	;	aaa_Adlm_GU_fonipa
+aaa_Adlm_320_fonipa	;	aaa_Adlm_GT_fonipa
+aaa_Adlm_324_fonipa	;	aaa_Adlm_GN_fonipa
+aaa_Adlm_328_fonipa	;	aaa_Adlm_GY_fonipa
+aaa_Adlm_332_fonipa	;	aaa_Adlm_HT_fonipa
+aaa_Adlm_334_fonipa	;	aaa_Adlm_HM_fonipa
+aaa_Adlm_336_fonipa	;	aaa_Adlm_VA_fonipa
+aaa_Adlm_340_fonipa	;	aaa_Adlm_HN_fonipa
+aaa_Adlm_344_fonipa	;	aaa_Adlm_HK_fonipa
+aaa_Adlm_348_fonipa	;	aaa_Adlm_HU_fonipa
+aaa_Adlm_352_fonipa	;	aaa_Adlm_IS_fonipa
+aaa_Adlm_356_fonipa	;	aaa_Adlm_IN_fonipa
+aaa_Adlm_360_fonipa	;	aaa_Adlm_ID_fonipa
+aaa_Adlm_364_fonipa	;	aaa_Adlm_IR_fonipa
+aaa_Adlm_368_fonipa	;	aaa_Adlm_IQ_fonipa
+aaa_Adlm_372_fonipa	;	aaa_Adlm_IE_fonipa
+aaa_Adlm_376_fonipa	;	aaa_Adlm_IL_fonipa
+aaa_Adlm_380_fonipa	;	aaa_Adlm_IT_fonipa
+aaa_Adlm_384_fonipa	;	aaa_Adlm_CI_fonipa
+aaa_Adlm_388_fonipa	;	aaa_Adlm_JM_fonipa
+aaa_Adlm_392_fonipa	;	aaa_Adlm_JP_fonipa
+aaa_Adlm_398_fonipa	;	aaa_Adlm_KZ_fonipa
+aaa_Adlm_400_fonipa	;	aaa_Adlm_JO_fonipa
+aaa_Adlm_404_fonipa	;	aaa_Adlm_KE_fonipa
+aaa_Adlm_408_fonipa	;	aaa_Adlm_KP_fonipa
+aaa_Adlm_410_fonipa	;	aaa_Adlm_KR_fonipa
+aaa_Adlm_414_fonipa	;	aaa_Adlm_KW_fonipa
+aaa_Adlm_417_fonipa	;	aaa_Adlm_KG_fonipa
+aaa_Adlm_418_fonipa	;	aaa_Adlm_LA_fonipa
+aaa_Adlm_422_fonipa	;	aaa_Adlm_LB_fonipa
+aaa_Adlm_426_fonipa	;	aaa_Adlm_LS_fonipa
+aaa_Adlm_428_fonipa	;	aaa_Adlm_LV_fonipa
+aaa_Adlm_430_fonipa	;	aaa_Adlm_LR_fonipa
+aaa_Adlm_434_fonipa	;	aaa_Adlm_LY_fonipa
+aaa_Adlm_438_fonipa	;	aaa_Adlm_LI_fonipa
+aaa_Adlm_440_fonipa	;	aaa_Adlm_LT_fonipa
+aaa_Adlm_442_fonipa	;	aaa_Adlm_LU_fonipa
+aaa_Adlm_446_fonipa	;	aaa_Adlm_MO_fonipa
+aaa_Adlm_450_fonipa	;	aaa_Adlm_MG_fonipa
+aaa_Adlm_454_fonipa	;	aaa_Adlm_MW_fonipa
+aaa_Adlm_458_fonipa	;	aaa_Adlm_MY_fonipa
+aaa_Adlm_462_fonipa	;	aaa_Adlm_MV_fonipa
+aaa_Adlm_466_fonipa	;	aaa_Adlm_ML_fonipa
+aaa_Adlm_470_fonipa	;	aaa_Adlm_MT_fonipa
+aaa_Adlm_474_fonipa	;	aaa_Adlm_MQ_fonipa
+aaa_Adlm_478_fonipa	;	aaa_Adlm_MR_fonipa
+aaa_Adlm_480_fonipa	;	aaa_Adlm_MU_fonipa
+aaa_Adlm_484_fonipa	;	aaa_Adlm_MX_fonipa
+aaa_Adlm_492_fonipa	;	aaa_Adlm_MC_fonipa
+aaa_Adlm_496_fonipa	;	aaa_Adlm_MN_fonipa
+aaa_Adlm_498_fonipa	;	aaa_Adlm_MD_fonipa
+aaa_Adlm_499_fonipa	;	aaa_Adlm_ME_fonipa
+aaa_Adlm_500_fonipa	;	aaa_Adlm_MS_fonipa
+aaa_Adlm_504_fonipa	;	aaa_Adlm_MA_fonipa
+aaa_Adlm_508_fonipa	;	aaa_Adlm_MZ_fonipa
+aaa_Adlm_512_fonipa	;	aaa_Adlm_OM_fonipa
+aaa_Adlm_516_fonipa	;	aaa_Adlm_NA_fonipa
+aaa_Adlm_520_fonipa	;	aaa_Adlm_NR_fonipa
+aaa_Adlm_524_fonipa	;	aaa_Adlm_NP_fonipa
+aaa_Adlm_528_fonipa	;	aaa_Adlm_NL_fonipa
+aaa_Adlm_530_fonipa	;	aaa_Adlm_CW_fonipa
+aaa_Adlm_531_fonipa	;	aaa_Adlm_CW_fonipa
+aaa_Adlm_532_fonipa	;	aaa_Adlm_CW_fonipa
+aaa_Adlm_533_fonipa	;	aaa_Adlm_AW_fonipa
+aaa_Adlm_534_fonipa	;	aaa_Adlm_SX_fonipa
+aaa_Adlm_535_fonipa	;	aaa_Adlm_BQ_fonipa
+aaa_Adlm_536_fonipa	;	aaa_Adlm_SA_fonipa
+aaa_Adlm_540_fonipa	;	aaa_Adlm_NC_fonipa
+aaa_Adlm_548_fonipa	;	aaa_Adlm_VU_fonipa
+aaa_Adlm_554_fonipa	;	aaa_Adlm_NZ_fonipa
+aaa_Adlm_558_fonipa	;	aaa_Adlm_NI_fonipa
+aaa_Adlm_562_fonipa	;	aaa_Adlm_NE_fonipa
+aaa_Adlm_566_fonipa	;	aaa_Adlm_NG_fonipa
+aaa_Adlm_570_fonipa	;	aaa_Adlm_NU_fonipa
+aaa_Adlm_574_fonipa	;	aaa_Adlm_NF_fonipa
+aaa_Adlm_578_fonipa	;	aaa_Adlm_NO_fonipa
+aaa_Adlm_580_fonipa	;	aaa_Adlm_MP_fonipa
+aaa_Adlm_581_fonipa	;	aaa_Adlm_UM_fonipa
+aaa_Adlm_582_fonipa	;	aaa_Adlm_FM_fonipa
+aaa_Adlm_583_fonipa	;	aaa_Adlm_FM_fonipa
+aaa_Adlm_584_fonipa	;	aaa_Adlm_MH_fonipa
+aaa_Adlm_585_fonipa	;	aaa_Adlm_PW_fonipa
+aaa_Adlm_586_fonipa	;	aaa_Adlm_PK_fonipa
+aaa_Adlm_591_fonipa	;	aaa_Adlm_PA_fonipa
+aaa_Adlm_598_fonipa	;	aaa_Adlm_PG_fonipa
+aaa_Adlm_600_fonipa	;	aaa_Adlm_PY_fonipa
+aaa_Adlm_604_fonipa	;	aaa_Adlm_PE_fonipa
+aaa_Adlm_608_fonipa	;	aaa_Adlm_PH_fonipa
+aaa_Adlm_612_fonipa	;	aaa_Adlm_PN_fonipa
+aaa_Adlm_616_fonipa	;	aaa_Adlm_PL_fonipa
+aaa_Adlm_620_fonipa	;	aaa_Adlm_PT_fonipa
+aaa_Adlm_624_fonipa	;	aaa_Adlm_GW_fonipa
+aaa_Adlm_626_fonipa	;	aaa_Adlm_TL_fonipa
+aaa_Adlm_630_fonipa	;	aaa_Adlm_PR_fonipa
+aaa_Adlm_634_fonipa	;	aaa_Adlm_QA_fonipa
+aaa_Adlm_638_fonipa	;	aaa_Adlm_RE_fonipa
+aaa_Adlm_642_fonipa	;	aaa_Adlm_RO_fonipa
+aaa_Adlm_643_fonipa	;	aaa_Adlm_RU_fonipa
+aaa_Adlm_646_fonipa	;	aaa_Adlm_RW_fonipa
+aaa_Adlm_652_fonipa	;	aaa_Adlm_BL_fonipa
+aaa_Adlm_654_fonipa	;	aaa_Adlm_SH_fonipa
+aaa_Adlm_659_fonipa	;	aaa_Adlm_KN_fonipa
+aaa_Adlm_660_fonipa	;	aaa_Adlm_AI_fonipa
+aaa_Adlm_662_fonipa	;	aaa_Adlm_LC_fonipa
+aaa_Adlm_663_fonipa	;	aaa_Adlm_MF_fonipa
+aaa_Adlm_666_fonipa	;	aaa_Adlm_PM_fonipa
+aaa_Adlm_670_fonipa	;	aaa_Adlm_VC_fonipa
+aaa_Adlm_674_fonipa	;	aaa_Adlm_SM_fonipa
+aaa_Adlm_678_fonipa	;	aaa_Adlm_ST_fonipa
+aaa_Adlm_682_fonipa	;	aaa_Adlm_SA_fonipa
+aaa_Adlm_686_fonipa	;	aaa_Adlm_SN_fonipa
+aaa_Adlm_688_fonipa	;	aaa_Adlm_RS_fonipa
+aaa_Adlm_690_fonipa	;	aaa_Adlm_SC_fonipa
+aaa_Adlm_694_fonipa	;	aaa_Adlm_SL_fonipa
+aaa_Adlm_702_fonipa	;	aaa_Adlm_SG_fonipa
+aaa_Adlm_703_fonipa	;	aaa_Adlm_SK_fonipa
+aaa_Adlm_704_fonipa	;	aaa_Adlm_VN_fonipa
+aaa_Adlm_705_fonipa	;	aaa_Adlm_SI_fonipa
+aaa_Adlm_706_fonipa	;	aaa_Adlm_SO_fonipa
+aaa_Adlm_710_fonipa	;	aaa_Adlm_ZA_fonipa
+aaa_Adlm_716_fonipa	;	aaa_Adlm_ZW_fonipa
+aaa_Adlm_720_fonipa	;	aaa_Adlm_YE_fonipa
+aaa_Adlm_724_fonipa	;	aaa_Adlm_ES_fonipa
+aaa_Adlm_728_fonipa	;	aaa_Adlm_SS_fonipa
+aaa_Adlm_729_fonipa	;	aaa_Adlm_SD_fonipa
+aaa_Adlm_732_fonipa	;	aaa_Adlm_EH_fonipa
+aaa_Adlm_736_fonipa	;	aaa_Adlm_SD_fonipa
+aaa_Adlm_740_fonipa	;	aaa_Adlm_SR_fonipa
+aaa_Adlm_744_fonipa	;	aaa_Adlm_SJ_fonipa
+aaa_Adlm_748_fonipa	;	aaa_Adlm_SZ_fonipa
+aaa_Adlm_752_fonipa	;	aaa_Adlm_SE_fonipa
+aaa_Adlm_756_fonipa	;	aaa_Adlm_CH_fonipa
+aaa_Adlm_760_fonipa	;	aaa_Adlm_SY_fonipa
+aaa_Adlm_762_fonipa	;	aaa_Adlm_TJ_fonipa
+aaa_Adlm_764_fonipa	;	aaa_Adlm_TH_fonipa
+aaa_Adlm_768_fonipa	;	aaa_Adlm_TG_fonipa
+aaa_Adlm_772_fonipa	;	aaa_Adlm_TK_fonipa
+aaa_Adlm_776_fonipa	;	aaa_Adlm_TO_fonipa
+aaa_Adlm_780_fonipa	;	aaa_Adlm_TT_fonipa
+aaa_Adlm_784_fonipa	;	aaa_Adlm_AE_fonipa
+aaa_Adlm_788_fonipa	;	aaa_Adlm_TN_fonipa
+aaa_Adlm_792_fonipa	;	aaa_Adlm_TR_fonipa
+aaa_Adlm_795_fonipa	;	aaa_Adlm_TM_fonipa
+aaa_Adlm_796_fonipa	;	aaa_Adlm_TC_fonipa
+aaa_Adlm_798_fonipa	;	aaa_Adlm_TV_fonipa
+aaa_Adlm_800_fonipa	;	aaa_Adlm_UG_fonipa
+aaa_Adlm_804_fonipa	;	aaa_Adlm_UA_fonipa
+aaa_Adlm_807_fonipa	;	aaa_Adlm_MK_fonipa
+aaa_Adlm_810_fonipa	;	aaa_Adlm_RU_fonipa
+aaa_Adlm_818_fonipa	;	aaa_Adlm_EG_fonipa
+aaa_Adlm_826_fonipa	;	aaa_Adlm_GB_fonipa
+aaa_Adlm_830_fonipa	;	aaa_Adlm_JE_fonipa
+aaa_Adlm_831_fonipa	;	aaa_Adlm_GG_fonipa
+aaa_Adlm_832_fonipa	;	aaa_Adlm_JE_fonipa
+aaa_Adlm_833_fonipa	;	aaa_Adlm_IM_fonipa
+aaa_Adlm_834_fonipa	;	aaa_Adlm_TZ_fonipa
+aaa_Adlm_840_fonipa	;	aaa_Adlm_US_fonipa
+aaa_Adlm_850_fonipa	;	aaa_Adlm_VI_fonipa
+aaa_Adlm_854_fonipa	;	aaa_Adlm_BF_fonipa
+aaa_Adlm_858_fonipa	;	aaa_Adlm_UY_fonipa
+aaa_Adlm_860_fonipa	;	aaa_Adlm_UZ_fonipa
+aaa_Adlm_862_fonipa	;	aaa_Adlm_VE_fonipa
+aaa_Adlm_876_fonipa	;	aaa_Adlm_WF_fonipa
+aaa_Adlm_882_fonipa	;	aaa_Adlm_WS_fonipa
+aaa_Adlm_886_fonipa	;	aaa_Adlm_YE_fonipa
+aaa_Adlm_887_fonipa	;	aaa_Adlm_YE_fonipa
+aaa_Adlm_890_fonipa	;	aaa_Adlm_RS_fonipa
+aaa_Adlm_891_fonipa	;	aaa_Adlm_RS_fonipa
+aaa_Adlm_894_fonipa	;	aaa_Adlm_ZM_fonipa
+aaa_Adlm_958_fonipa	;	aaa_Adlm_AA_fonipa
+aaa_Adlm_959_fonipa	;	aaa_Adlm_QM_fonipa
+aaa_Adlm_960_fonipa	;	aaa_Adlm_QN_fonipa
+aaa_Adlm_962_fonipa	;	aaa_Adlm_QP_fonipa
+aaa_Adlm_963_fonipa	;	aaa_Adlm_QQ_fonipa
+aaa_Adlm_964_fonipa	;	aaa_Adlm_QR_fonipa
+aaa_Adlm_965_fonipa	;	aaa_Adlm_QS_fonipa
+aaa_Adlm_966_fonipa	;	aaa_Adlm_QT_fonipa
+aaa_Adlm_967_fonipa	;	aaa_Adlm_EU_fonipa
+aaa_Adlm_968_fonipa	;	aaa_Adlm_QV_fonipa
+aaa_Adlm_969_fonipa	;	aaa_Adlm_QW_fonipa
+aaa_Adlm_970_fonipa	;	aaa_Adlm_QX_fonipa
+aaa_Adlm_971_fonipa	;	aaa_Adlm_QY_fonipa
+aaa_Adlm_972_fonipa	;	aaa_Adlm_QZ_fonipa
+aaa_Adlm_973_fonipa	;	aaa_Adlm_XA_fonipa
+aaa_Adlm_974_fonipa	;	aaa_Adlm_XB_fonipa
+aaa_Adlm_975_fonipa	;	aaa_Adlm_XC_fonipa
+aaa_Adlm_976_fonipa	;	aaa_Adlm_XD_fonipa
+aaa_Adlm_977_fonipa	;	aaa_Adlm_XE_fonipa
+aaa_Adlm_978_fonipa	;	aaa_Adlm_XF_fonipa
+aaa_Adlm_979_fonipa	;	aaa_Adlm_XG_fonipa
+aaa_Adlm_980_fonipa	;	aaa_Adlm_XH_fonipa
+aaa_Adlm_981_fonipa	;	aaa_Adlm_XI_fonipa
+aaa_Adlm_982_fonipa	;	aaa_Adlm_XJ_fonipa
+aaa_Adlm_983_fonipa	;	aaa_Adlm_XK_fonipa
+aaa_Adlm_984_fonipa	;	aaa_Adlm_XL_fonipa
+aaa_Adlm_985_fonipa	;	aaa_Adlm_XM_fonipa
+aaa_Adlm_986_fonipa	;	aaa_Adlm_XN_fonipa
+aaa_Adlm_987_fonipa	;	aaa_Adlm_XO_fonipa
+aaa_Adlm_988_fonipa	;	aaa_Adlm_XP_fonipa
+aaa_Adlm_989_fonipa	;	aaa_Adlm_XQ_fonipa
+aaa_Adlm_990_fonipa	;	aaa_Adlm_XR_fonipa
+aaa_Adlm_991_fonipa	;	aaa_Adlm_XS_fonipa
+aaa_Adlm_992_fonipa	;	aaa_Adlm_XT_fonipa
+aaa_Adlm_993_fonipa	;	aaa_Adlm_XU_fonipa
+aaa_Adlm_994_fonipa	;	aaa_Adlm_XV_fonipa
+aaa_Adlm_995_fonipa	;	aaa_Adlm_XW_fonipa
+aaa_Adlm_996_fonipa	;	aaa_Adlm_XX_fonipa
+aaa_Adlm_997_fonipa	;	aaa_Adlm_XY_fonipa
+aaa_Adlm_998_fonipa	;	aaa_Adlm_XZ_fonipa
+aaa_Adlm_999_fonipa	;	aaa_Adlm_ZZ_fonipa
+aaa_Adlm_AC_aaland_fonipa	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_arevela_fonipa	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_arevmda_fonipa	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_bokmal_fonipa	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_fonipa_hakka	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_fonipa_heploc	;	aaa_Adlm_AC_alalc97_fonipa
+aaa_Adlm_AC_fonipa_lojban	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_fonipa_nynorsk	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_fonipa_polytoni	;	aaa_Adlm_AC_fonipa_polyton
+aaa_Adlm_AC_fonipa_saaho	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_fonipa_xiang	;	aaa_Adlm_AC_fonipa
+aaa_Adlm_AN_fonipa	;	aaa_Adlm_CW_fonipa
+aaa_Adlm_BU_fonipa	;	aaa_Adlm_MM_fonipa
+aaa_Adlm_CS_fonipa	;	aaa_Adlm_RS_fonipa
+aaa_Adlm_CT_fonipa	;	aaa_Adlm_KI_fonipa
+aaa_Adlm_DD_fonipa	;	aaa_Adlm_DE_fonipa
+aaa_Adlm_DY_fonipa	;	aaa_Adlm_BJ_fonipa
+aaa_Adlm_FQ_fonipa	;	aaa_Adlm_AQ_fonipa
+aaa_Adlm_FX_fonipa	;	aaa_Adlm_FR_fonipa
+aaa_Adlm_HV_fonipa	;	aaa_Adlm_BF_fonipa
+aaa_Adlm_JT_fonipa	;	aaa_Adlm_UM_fonipa
+aaa_Adlm_MI_fonipa	;	aaa_Adlm_UM_fonipa
+aaa_Adlm_NH_fonipa	;	aaa_Adlm_VU_fonipa
+aaa_Adlm_NQ_fonipa	;	aaa_Adlm_AQ_fonipa
+aaa_Adlm_NT_fonipa	;	aaa_Adlm_SA_fonipa
+aaa_Adlm_PC_fonipa	;	aaa_Adlm_FM_fonipa
+aaa_Adlm_PU_fonipa	;	aaa_Adlm_UM_fonipa
+aaa_Adlm_PZ_fonipa	;	aaa_Adlm_PA_fonipa
+aaa_Adlm_QU_fonipa	;	aaa_Adlm_EU_fonipa
+aaa_Adlm_RH_fonipa	;	aaa_Adlm_ZW_fonipa
+aaa_Adlm_SU_fonipa	;	aaa_Adlm_RU_fonipa
+aaa_Adlm_TP_fonipa	;	aaa_Adlm_TL_fonipa
+aaa_Adlm_UK_fonipa	;	aaa_Adlm_GB_fonipa
+aaa_Adlm_VD_fonipa	;	aaa_Adlm_VN_fonipa
+aaa_Adlm_WK_fonipa	;	aaa_Adlm_UM_fonipa
+aaa_Adlm_YD_fonipa	;	aaa_Adlm_YE_fonipa
+aaa_Adlm_YU_fonipa	;	aaa_Adlm_RS_fonipa
+aaa_Adlm_ZR_fonipa	;	aaa_Adlm_CD_fonipa
+aaa_Qaai_AC_fonipa	;	aaa_Zinh_AC_fonipa
+aam_Adlm_AC_fonipa	;	aas_Adlm_AC_fonipa
+aar_Adlm_AC_fonipa	;	aa_Adlm_AC_fonipa
+aar_Adlm_AC_fonipa_saaho	;	ssy_Adlm_AC_fonipa
+abk_Adlm_AC_fonipa	;	ab_Adlm_AC_fonipa
+adp_Adlm_AC_fonipa	;	dz_Adlm_AC_fonipa
+afr_Adlm_AC_fonipa	;	af_Adlm_AC_fonipa
+aju_Adlm_AC_fonipa	;	jrb_Adlm_AC_fonipa
+aka_Adlm_AC_fonipa	;	ak_Adlm_AC_fonipa
+alb_Adlm_AC_fonipa	;	sq_Adlm_AC_fonipa
+als_Adlm_AC_fonipa	;	sq_Adlm_AC_fonipa
+amh_Adlm_AC_fonipa	;	am_Adlm_AC_fonipa
+ara_Adlm_AC_fonipa	;	ar_Adlm_AC_fonipa
+arb_Adlm_AC_fonipa	;	ar_Adlm_AC_fonipa
+arg_Adlm_AC_fonipa	;	an_Adlm_AC_fonipa
+arm_Adlm_AC_arevela_arevmda_fonipa	;	hyw_Adlm_AC_fonipa
+arm_Adlm_AC_arevela_fonipa	;	hy_Adlm_AC_fonipa
+arm_Adlm_AC_arevmda_fonipa	;	hyw_Adlm_AC_fonipa
+arm_Adlm_AC_fonipa	;	hy_Adlm_AC_fonipa
+art_Adlm_AC_fonipa_lojban	;	jbo_Adlm_AC_fonipa
+asd_Adlm_AC_fonipa	;	snz_Adlm_AC_fonipa
+asm_Adlm_AC_fonipa	;	as_Adlm_AC_fonipa
+aue_Adlm_AC_fonipa	;	ktz_Adlm_AC_fonipa
+ava_Adlm_AC_fonipa	;	av_Adlm_AC_fonipa
+ave_Adlm_AC_fonipa	;	ae_Adlm_AC_fonipa
+aym_Adlm_AC_fonipa	;	ay_Adlm_AC_fonipa
+ayr_Adlm_AC_fonipa	;	ay_Adlm_AC_fonipa
+ayx_Adlm_AC_fonipa	;	nun_Adlm_AC_fonipa
+aze_Adlm_AC_fonipa	;	az_Adlm_AC_fonipa
+azj_Adlm_AC_fonipa	;	az_Adlm_AC_fonipa
+bak_Adlm_AC_fonipa	;	ba_Adlm_AC_fonipa
+bam_Adlm_AC_fonipa	;	bm_Adlm_AC_fonipa
+baq_Adlm_AC_fonipa	;	eu_Adlm_AC_fonipa
+bcc_Adlm_AC_fonipa	;	bal_Adlm_AC_fonipa
+bcl_Adlm_AC_fonipa	;	bik_Adlm_AC_fonipa
+bel_Adlm_AC_fonipa	;	be_Adlm_AC_fonipa
+ben_Adlm_AC_fonipa	;	bn_Adlm_AC_fonipa
+bgm_Adlm_AC_fonipa	;	bcg_Adlm_AC_fonipa
+bh_Adlm_AC_fonipa	;	bho_Adlm_AC_fonipa
+bih_Adlm_AC_fonipa	;	bho_Adlm_AC_fonipa
+bis_Adlm_AC_fonipa	;	bi_Adlm_AC_fonipa
+bjd_Adlm_AC_fonipa	;	drl_Adlm_AC_fonipa
+bod_Adlm_AC_fonipa	;	bo_Adlm_AC_fonipa
+bos_Adlm_AC_fonipa	;	bs_Adlm_AC_fonipa
+bre_Adlm_AC_fonipa	;	br_Adlm_AC_fonipa
+bul_Adlm_AC_fonipa	;	bg_Adlm_AC_fonipa
+bur_Adlm_AC_fonipa	;	my_Adlm_AC_fonipa
+bxk_Adlm_AC_fonipa	;	luy_Adlm_AC_fonipa
+bxr_Adlm_AC_fonipa	;	bua_Adlm_AC_fonipa
+cat_Adlm_AC_fonipa	;	ca_Adlm_AC_fonipa
+ccq_Adlm_AC_fonipa	;	rki_Adlm_AC_fonipa
+cel_Adlm_AC_fonipa_gaulish	;	xtg_Adlm_AC_fonipa
+ces_Adlm_AC_fonipa	;	cs_Adlm_AC_fonipa
+cha_Adlm_AC_fonipa	;	ch_Adlm_AC_fonipa
+che_Adlm_AC_fonipa	;	ce_Adlm_AC_fonipa
+chi_Adlm_AC_fonipa	;	zh_Adlm_AC_fonipa
+chi_Adlm_AC_fonipa_guoyu	;	zh_Adlm_AC_fonipa
+chi_Adlm_AC_fonipa_guoyu_hakka_xiang	;	hak_Adlm_AC_fonipa
+chi_Adlm_AC_fonipa_hakka	;	hak_Adlm_AC_fonipa
+chi_Adlm_AC_fonipa_hakka_xiang	;	hak_Adlm_AC_fonipa
+chi_Adlm_AC_fonipa_xiang	;	hsn_Adlm_AC_fonipa
+chu_Adlm_AC_fonipa	;	cu_Adlm_AC_fonipa
+chv_Adlm_AC_fonipa	;	cv_Adlm_AC_fonipa
+cjr_Adlm_AC_fonipa	;	mom_Adlm_AC_fonipa
+cka_Adlm_AC_fonipa	;	cmr_Adlm_AC_fonipa
+cld_Adlm_AC_fonipa	;	syr_Adlm_AC_fonipa
+cmk_Adlm_AC_fonipa	;	xch_Adlm_AC_fonipa
+cmn_Adlm_AC_fonipa	;	zh_Adlm_AC_fonipa
+cmn_Adlm_AC_fonipa_guoyu	;	zh_Adlm_AC_fonipa
+cmn_Adlm_AC_fonipa_guoyu_hakka_xiang	;	hak_Adlm_AC_fonipa
+cmn_Adlm_AC_fonipa_hakka	;	hak_Adlm_AC_fonipa
+cmn_Adlm_AC_fonipa_hakka_xiang	;	hak_Adlm_AC_fonipa
+cmn_Adlm_AC_fonipa_xiang	;	hsn_Adlm_AC_fonipa
+cnr_Adlm_AC_fonipa	;	sr_Adlm_AC_fonipa
+cor_Adlm_AC_fonipa	;	kw_Adlm_AC_fonipa
+cos_Adlm_AC_fonipa	;	co_Adlm_AC_fonipa
+coy_Adlm_AC_fonipa	;	pij_Adlm_AC_fonipa
+cqu_Adlm_AC_fonipa	;	quh_Adlm_AC_fonipa
+cre_Adlm_AC_fonipa	;	cr_Adlm_AC_fonipa
+cwd_Adlm_AC_fonipa	;	cr_Adlm_AC_fonipa
+cym_Adlm_AC_fonipa	;	cy_Adlm_AC_fonipa
+cze_Adlm_AC_fonipa	;	cs_Adlm_AC_fonipa
+dan_Adlm_AC_fonipa	;	da_Adlm_AC_fonipa
+deu_Adlm_AC_fonipa	;	de_Adlm_AC_fonipa
+dgo_Adlm_AC_fonipa	;	doi_Adlm_AC_fonipa
+dhd_Adlm_AC_fonipa	;	mwr_Adlm_AC_fonipa
+dik_Adlm_AC_fonipa	;	din_Adlm_AC_fonipa
+diq_Adlm_AC_fonipa	;	zza_Adlm_AC_fonipa
+dit_Adlm_AC_fonipa	;	dif_Adlm_AC_fonipa
+div_Adlm_AC_fonipa	;	dv_Adlm_AC_fonipa
+drh_Adlm_AC_fonipa	;	mn_Adlm_AC_fonipa
+drw_Adlm_AC_fonipa	;	fa_Adlm_AC_fonipa
+dut_Adlm_AC_fonipa	;	nl_Adlm_AC_fonipa
+dzo_Adlm_AC_fonipa	;	dz_Adlm_AC_fonipa
+ekk_Adlm_AC_fonipa	;	et_Adlm_AC_fonipa
+ell_Adlm_AC_fonipa	;	el_Adlm_AC_fonipa
+emk_Adlm_AC_fonipa	;	man_Adlm_AC_fonipa
+en_Adlm_840_aaland_fonipa	;	en_Adlm_US_fonipa
+en_Adlm_840_fonipa_heploc	;	en_Adlm_US_alalc97_fonipa
+en_Adlm_840_fonipa_polytoni	;	en_Adlm_US_fonipa_polyton
+en_Adlm_AC_aaland_fonipa	;	en_Adlm_AC_fonipa
+en_Adlm_AC_arevela_arevmda_fonipa	;	en_Adlm_AC_fonipa
+en_Adlm_AC_arevela_fonipa	;	en_Adlm_AC_fonipa
+en_Adlm_AC_fonipa_lojban	;	en_Adlm_AC_fonipa
+en_Adlm_US_aaland_fonipa	;	en_Adlm_US_fonipa
+en_Adlm_US_fonipa_heploc	;	en_Adlm_US_alalc97_fonipa
+en_Adlm_US_fonipa_polytoni	;	en_Adlm_US_fonipa_polyton
+eng_Adlm_840_aaland_fonipa	;	en_Adlm_US_fonipa
+eng_Adlm_840_fonipa_heploc	;	en_Adlm_US_alalc97_fonipa
+eng_Adlm_840_fonipa_polytoni	;	en_Adlm_US_fonipa_polyton
+eng_Adlm_AC_aaland_fonipa	;	en_Adlm_AC_fonipa
+eng_Adlm_AC_arevela_arevmda_fonipa	;	en_Adlm_AC_fonipa
+eng_Adlm_AC_arevela_fonipa	;	en_Adlm_AC_fonipa
+eng_Adlm_AC_fonipa	;	en_Adlm_AC_fonipa
+eng_Adlm_AC_fonipa_lojban	;	en_Adlm_AC_fonipa
+eng_Adlm_US_aaland_fonipa	;	en_Adlm_US_fonipa
+eng_Adlm_US_fonipa_heploc	;	en_Adlm_US_alalc97_fonipa
+eng_Adlm_US_fonipa_polytoni	;	en_Adlm_US_fonipa_polyton
+epo_Adlm_AC_fonipa	;	eo_Adlm_AC_fonipa
+esk_Adlm_AC_fonipa	;	ik_Adlm_AC_fonipa
+est_Adlm_AC_fonipa	;	et_Adlm_AC_fonipa
+eus_Adlm_AC_fonipa	;	eu_Adlm_AC_fonipa
+ewe_Adlm_AC_fonipa	;	ee_Adlm_AC_fonipa
+fao_Adlm_AC_fonipa	;	fo_Adlm_AC_fonipa
+fas_Adlm_AC_fonipa	;	fa_Adlm_AC_fonipa
+fat_Adlm_AC_fonipa	;	ak_Adlm_AC_fonipa
+fij_Adlm_AC_fonipa	;	fj_Adlm_AC_fonipa
+fin_Adlm_AC_fonipa	;	fi_Adlm_AC_fonipa
+fra_Adlm_AC_fonipa	;	fr_Adlm_AC_fonipa
+fre_Adlm_AC_fonipa	;	fr_Adlm_AC_fonipa
+fry_Adlm_AC_fonipa	;	fy_Adlm_AC_fonipa
+fuc_Adlm_AC_fonipa	;	ff_Adlm_AC_fonipa
+ful_Adlm_AC_fonipa	;	ff_Adlm_AC_fonipa
+gav_Adlm_AC_fonipa	;	dev_Adlm_AC_fonipa
+gaz_Adlm_AC_fonipa	;	om_Adlm_AC_fonipa
+gbo_Adlm_AC_fonipa	;	grb_Adlm_AC_fonipa
+geo_Adlm_AC_fonipa	;	ka_Adlm_AC_fonipa
+ger_Adlm_AC_fonipa	;	de_Adlm_AC_fonipa
+gfx_Adlm_AC_fonipa	;	vaj_Adlm_AC_fonipa
+ggn_Adlm_AC_fonipa	;	gvr_Adlm_AC_fonipa
+gla_Adlm_AC_fonipa	;	gd_Adlm_AC_fonipa
+gle_Adlm_AC_fonipa	;	ga_Adlm_AC_fonipa
+glg_Adlm_AC_fonipa	;	gl_Adlm_AC_fonipa
+glv_Adlm_AC_fonipa	;	gv_Adlm_AC_fonipa
+gno_Adlm_AC_fonipa	;	gon_Adlm_AC_fonipa
+gre_Adlm_AC_fonipa	;	el_Adlm_AC_fonipa
+grn_Adlm_AC_fonipa	;	gn_Adlm_AC_fonipa
+gti_Adlm_AC_fonipa	;	nyc_Adlm_AC_fonipa
+gug_Adlm_AC_fonipa	;	gn_Adlm_AC_fonipa
+guj_Adlm_AC_fonipa	;	gu_Adlm_AC_fonipa
+guv_Adlm_AC_fonipa	;	duz_Adlm_AC_fonipa
+gya_Adlm_AC_fonipa	;	gba_Adlm_AC_fonipa
+hat_Adlm_AC_fonipa	;	ht_Adlm_AC_fonipa
+hau_Adlm_AC_fonipa	;	ha_Adlm_AC_fonipa
+hbs_Adlm_AC_fonipa	;	sr_Adlm_AC_fonipa
+hdn_Adlm_AC_fonipa	;	hai_Adlm_AC_fonipa
+hea_Adlm_AC_fonipa	;	hmn_Adlm_AC_fonipa
+heb_Adlm_AC_fonipa	;	he_Adlm_AC_fonipa
+her_Adlm_AC_fonipa	;	hz_Adlm_AC_fonipa
+him_Adlm_AC_fonipa	;	srx_Adlm_AC_fonipa
+hin_Adlm_AC_fonipa	;	hi_Adlm_AC_fonipa
+hmo_Adlm_AC_fonipa	;	ho_Adlm_AC_fonipa
+hrr_Adlm_AC_fonipa	;	jal_Adlm_AC_fonipa
+hrv_Adlm_AC_fonipa	;	hr_Adlm_AC_fonipa
+hun_Adlm_AC_fonipa	;	hu_Adlm_AC_fonipa
+hy_Adlm_AC_arevela_arevmda_fonipa	;	hyw_Adlm_AC_fonipa
+hy_Adlm_AC_arevela_fonipa	;	hy_Adlm_AC_fonipa
+hy_Adlm_AC_arevmda_fonipa	;	hyw_Adlm_AC_fonipa
+hye_Adlm_AC_arevela_arevmda_fonipa	;	hyw_Adlm_AC_fonipa
+hye_Adlm_AC_arevela_fonipa	;	hy_Adlm_AC_fonipa
+hye_Adlm_AC_arevmda_fonipa	;	hyw_Adlm_AC_fonipa
+hye_Adlm_AC_fonipa	;	hy_Adlm_AC_fonipa
+ibi_Adlm_AC_fonipa	;	opa_Adlm_AC_fonipa
+ibo_Adlm_AC_fonipa	;	ig_Adlm_AC_fonipa
+ice_Adlm_AC_fonipa	;	is_Adlm_AC_fonipa
+ido_Adlm_AC_fonipa	;	io_Adlm_AC_fonipa
+iii_Adlm_AC_fonipa	;	ii_Adlm_AC_fonipa
+ike_Adlm_AC_fonipa	;	iu_Adlm_AC_fonipa
+iku_Adlm_AC_fonipa	;	iu_Adlm_AC_fonipa
+ile_Adlm_AC_fonipa	;	ie_Adlm_AC_fonipa
+ilw_Adlm_AC_fonipa	;	gal_Adlm_AC_fonipa
+in_Adlm_AC_fonipa	;	id_Adlm_AC_fonipa
+ina_Adlm_AC_fonipa	;	ia_Adlm_AC_fonipa
+ind_Adlm_AC_fonipa	;	id_Adlm_AC_fonipa
+ipk_Adlm_AC_fonipa	;	ik_Adlm_AC_fonipa
+isl_Adlm_AC_fonipa	;	is_Adlm_AC_fonipa
+ita_Adlm_AC_fonipa	;	it_Adlm_AC_fonipa
+iw_Adlm_AC_fonipa	;	he_Adlm_AC_fonipa
+jav_Adlm_AC_fonipa	;	jv_Adlm_AC_fonipa
+jeg_Adlm_AC_fonipa	;	oyb_Adlm_AC_fonipa
+ji_Adlm_AC_fonipa	;	yi_Adlm_AC_fonipa
+jpn_Adlm_AC_fonipa	;	ja_Adlm_AC_fonipa
+jw_Adlm_AC_fonipa	;	jv_Adlm_AC_fonipa
+kal_Adlm_AC_fonipa	;	kl_Adlm_AC_fonipa
+kan_Adlm_AC_fonipa	;	kn_Adlm_AC_fonipa
+kas_Adlm_AC_fonipa	;	ks_Adlm_AC_fonipa
+kat_Adlm_AC_fonipa	;	ka_Adlm_AC_fonipa
+kau_Adlm_AC_fonipa	;	kr_Adlm_AC_fonipa
+kaz_Adlm_AC_fonipa	;	kk_Adlm_AC_fonipa
+kgc_Adlm_AC_fonipa	;	tdf_Adlm_AC_fonipa
+kgh_Adlm_AC_fonipa	;	kml_Adlm_AC_fonipa
+khk_Adlm_AC_fonipa	;	mn_Adlm_AC_fonipa
+khm_Adlm_AC_fonipa	;	km_Adlm_AC_fonipa
+kik_Adlm_AC_fonipa	;	ki_Adlm_AC_fonipa
+kin_Adlm_AC_fonipa	;	rw_Adlm_AC_fonipa
+kir_Adlm_AC_fonipa	;	ky_Adlm_AC_fonipa
+kmr_Adlm_AC_fonipa	;	ku_Adlm_AC_fonipa
+knc_Adlm_AC_fonipa	;	kr_Adlm_AC_fonipa
+kng_Adlm_AC_fonipa	;	kg_Adlm_AC_fonipa
+knn_Adlm_AC_fonipa	;	kok_Adlm_AC_fonipa
+koj_Adlm_AC_fonipa	;	kwv_Adlm_AC_fonipa
+kom_Adlm_AC_fonipa	;	kv_Adlm_AC_fonipa
+kon_Adlm_AC_fonipa	;	kg_Adlm_AC_fonipa
+kor_Adlm_AC_fonipa	;	ko_Adlm_AC_fonipa
+kpv_Adlm_AC_fonipa	;	kv_Adlm_AC_fonipa
+krm_Adlm_AC_fonipa	;	bmf_Adlm_AC_fonipa
+ktr_Adlm_AC_fonipa	;	dtp_Adlm_AC_fonipa
+kua_Adlm_AC_fonipa	;	kj_Adlm_AC_fonipa
+kur_Adlm_AC_fonipa	;	ku_Adlm_AC_fonipa
+kvs_Adlm_AC_fonipa	;	gdj_Adlm_AC_fonipa
+kwq_Adlm_AC_fonipa	;	yam_Adlm_AC_fonipa
+kxe_Adlm_AC_fonipa	;	tvd_Adlm_AC_fonipa
+kzj_Adlm_AC_fonipa	;	dtp_Adlm_AC_fonipa
+kzt_Adlm_AC_fonipa	;	dtp_Adlm_AC_fonipa
+lao_Adlm_AC_fonipa	;	lo_Adlm_AC_fonipa
+lat_Adlm_AC_fonipa	;	la_Adlm_AC_fonipa
+lav_Adlm_AC_fonipa	;	lv_Adlm_AC_fonipa
+lbk_Adlm_AC_fonipa	;	bnc_Adlm_AC_fonipa
+lii_Adlm_AC_fonipa	;	raq_Adlm_AC_fonipa
+lim_Adlm_AC_fonipa	;	li_Adlm_AC_fonipa
+lin_Adlm_AC_fonipa	;	ln_Adlm_AC_fonipa
+lit_Adlm_AC_fonipa	;	lt_Adlm_AC_fonipa
+llo_Adlm_AC_fonipa	;	ngt_Adlm_AC_fonipa
+lmm_Adlm_AC_fonipa	;	rmx_Adlm_AC_fonipa
+ltz_Adlm_AC_fonipa	;	lb_Adlm_AC_fonipa
+lub_Adlm_AC_fonipa	;	lu_Adlm_AC_fonipa
+lug_Adlm_AC_fonipa	;	lg_Adlm_AC_fonipa
+lvs_Adlm_AC_fonipa	;	lv_Adlm_AC_fonipa
+mac_Adlm_AC_fonipa	;	mk_Adlm_AC_fonipa
+mah_Adlm_AC_fonipa	;	mh_Adlm_AC_fonipa
+mal_Adlm_AC_fonipa	;	ml_Adlm_AC_fonipa
+mao_Adlm_AC_fonipa	;	mi_Adlm_AC_fonipa
+mar_Adlm_AC_fonipa	;	mr_Adlm_AC_fonipa
+may_Adlm_AC_fonipa	;	ms_Adlm_AC_fonipa
+meg_Adlm_AC_fonipa	;	cir_Adlm_AC_fonipa
+mhr_Adlm_AC_fonipa	;	chm_Adlm_AC_fonipa
+mkd_Adlm_AC_fonipa	;	mk_Adlm_AC_fonipa
+mlg_Adlm_AC_fonipa	;	mg_Adlm_AC_fonipa
+mlt_Adlm_AC_fonipa	;	mt_Adlm_AC_fonipa
+mnk_Adlm_AC_fonipa	;	man_Adlm_AC_fonipa
+mo_Adlm_AC_fonipa	;	ro_Adlm_AC_fonipa
+mol_Adlm_AC_fonipa	;	ro_Adlm_AC_fonipa
+mon_Adlm_AC_fonipa	;	mn_Adlm_AC_fonipa
+mri_Adlm_AC_fonipa	;	mi_Adlm_AC_fonipa
+msa_Adlm_AC_fonipa	;	ms_Adlm_AC_fonipa
+mst_Adlm_AC_fonipa	;	mry_Adlm_AC_fonipa
+mup_Adlm_AC_fonipa	;	raj_Adlm_AC_fonipa
+mwj_Adlm_AC_fonipa	;	vaj_Adlm_AC_fonipa
+mya_Adlm_AC_fonipa	;	my_Adlm_AC_fonipa
+myd_Adlm_AC_fonipa	;	aog_Adlm_AC_fonipa
+myt_Adlm_AC_fonipa	;	mry_Adlm_AC_fonipa
+nad_Adlm_AC_fonipa	;	xny_Adlm_AC_fonipa
+nau_Adlm_AC_fonipa	;	na_Adlm_AC_fonipa
+nav_Adlm_AC_fonipa	;	nv_Adlm_AC_fonipa
+nbl_Adlm_AC_fonipa	;	nr_Adlm_AC_fonipa
+ncp_Adlm_AC_fonipa	;	kdz_Adlm_AC_fonipa
+nde_Adlm_AC_fonipa	;	nd_Adlm_AC_fonipa
+ndo_Adlm_AC_fonipa	;	ng_Adlm_AC_fonipa
+nep_Adlm_AC_fonipa	;	ne_Adlm_AC_fonipa
+nld_Adlm_AC_fonipa	;	nl_Adlm_AC_fonipa
+nno_Adlm_AC_fonipa	;	nn_Adlm_AC_fonipa
+nns_Adlm_AC_fonipa	;	nbr_Adlm_AC_fonipa
+nnx_Adlm_AC_fonipa	;	ngv_Adlm_AC_fonipa
+no_Adlm_AC_bokmal_fonipa	;	nb_Adlm_AC_fonipa
+no_Adlm_AC_bokmal_fonipa_nynorsk	;	nb_Adlm_AC_fonipa
+no_Adlm_AC_fonipa	;	nb_Adlm_AC_fonipa
+no_Adlm_AC_fonipa_nynorsk	;	nn_Adlm_AC_fonipa
+nob_Adlm_AC_fonipa	;	nb_Adlm_AC_fonipa
+nor_Adlm_AC_fonipa	;	nb_Adlm_AC_fonipa
+npi_Adlm_AC_fonipa	;	ne_Adlm_AC_fonipa
+nts_Adlm_AC_fonipa	;	pij_Adlm_AC_fonipa
+nya_Adlm_AC_fonipa	;	ny_Adlm_AC_fonipa
+oci_Adlm_AC_fonipa	;	oc_Adlm_AC_fonipa
+ojg_Adlm_AC_fonipa	;	oj_Adlm_AC_fonipa
+oji_Adlm_AC_fonipa	;	oj_Adlm_AC_fonipa
+ori_Adlm_AC_fonipa	;	or_Adlm_AC_fonipa
+orm_Adlm_AC_fonipa	;	om_Adlm_AC_fonipa
+ory_Adlm_AC_fonipa	;	or_Adlm_AC_fonipa
+oss_Adlm_AC_fonipa	;	os_Adlm_AC_fonipa
+oun_Adlm_AC_fonipa	;	vaj_Adlm_AC_fonipa
+pan_Adlm_AC_fonipa	;	pa_Adlm_AC_fonipa
+pbu_Adlm_AC_fonipa	;	ps_Adlm_AC_fonipa
+pcr_Adlm_AC_fonipa	;	adx_Adlm_AC_fonipa
+per_Adlm_AC_fonipa	;	fa_Adlm_AC_fonipa
+pes_Adlm_AC_fonipa	;	fa_Adlm_AC_fonipa
+pli_Adlm_AC_fonipa	;	pi_Adlm_AC_fonipa
+plt_Adlm_AC_fonipa	;	mg_Adlm_AC_fonipa
+pmc_Adlm_AC_fonipa	;	huw_Adlm_AC_fonipa
+pmu_Adlm_AC_fonipa	;	phr_Adlm_AC_fonipa
+pnb_Adlm_AC_fonipa	;	lah_Adlm_AC_fonipa
+pol_Adlm_AC_fonipa	;	pl_Adlm_AC_fonipa
+por_Adlm_AC_fonipa	;	pt_Adlm_AC_fonipa
+ppa_Adlm_AC_fonipa	;	bfy_Adlm_AC_fonipa
+ppr_Adlm_AC_fonipa	;	lcq_Adlm_AC_fonipa
+prs_Adlm_AC_fonipa	;	fa_Adlm_AC_fonipa
+pry_Adlm_AC_fonipa	;	prt_Adlm_AC_fonipa
+pus_Adlm_AC_fonipa	;	ps_Adlm_AC_fonipa
+puz_Adlm_AC_fonipa	;	pub_Adlm_AC_fonipa
+que_Adlm_AC_fonipa	;	qu_Adlm_AC_fonipa
+quz_Adlm_AC_fonipa	;	qu_Adlm_AC_fonipa
+rmy_Adlm_AC_fonipa	;	rom_Adlm_AC_fonipa
+roh_Adlm_AC_fonipa	;	rm_Adlm_AC_fonipa
+ron_Adlm_AC_fonipa	;	ro_Adlm_AC_fonipa
+rum_Adlm_AC_fonipa	;	ro_Adlm_AC_fonipa
+run_Adlm_AC_fonipa	;	rn_Adlm_AC_fonipa
+rus_Adlm_AC_fonipa	;	ru_Adlm_AC_fonipa
+sag_Adlm_AC_fonipa	;	sg_Adlm_AC_fonipa
+san_Adlm_AC_fonipa	;	sa_Adlm_AC_fonipa
+sca_Adlm_AC_fonipa	;	hle_Adlm_AC_fonipa
+scc_Adlm_AC_fonipa	;	sr_Adlm_AC_fonipa
+scr_Adlm_AC_fonipa	;	hr_Adlm_AC_fonipa
+sgn_Adlm_076_fonipa	;	bzs_Adlm_fonipa
+sgn_Adlm_170_fonipa	;	csn_Adlm_fonipa
+sgn_Adlm_208_fonipa	;	dsl_Adlm_fonipa
+sgn_Adlm_249_fonipa	;	fsl_Adlm_fonipa
+sgn_Adlm_250_fonipa	;	fsl_Adlm_fonipa
+sgn_Adlm_276_fonipa	;	gsg_Adlm_fonipa
+sgn_Adlm_278_fonipa	;	gsg_Adlm_fonipa
+sgn_Adlm_280_fonipa	;	gsg_Adlm_fonipa
+sgn_Adlm_300_fonipa	;	gss_Adlm_fonipa
+sgn_Adlm_372_fonipa	;	isg_Adlm_fonipa
+sgn_Adlm_380_fonipa	;	ise_Adlm_fonipa
+sgn_Adlm_392_fonipa	;	jsl_Adlm_fonipa
+sgn_Adlm_484_fonipa	;	mfs_Adlm_fonipa
+sgn_Adlm_528_fonipa	;	dse_Adlm_fonipa
+sgn_Adlm_558_fonipa	;	ncs_Adlm_fonipa
+sgn_Adlm_578_fonipa	;	nsi_Adlm_fonipa
+sgn_Adlm_620_fonipa	;	psr_Adlm_fonipa
+sgn_Adlm_710_fonipa	;	sfs_Adlm_fonipa
+sgn_Adlm_752_fonipa	;	swl_Adlm_fonipa
+sgn_Adlm_826_fonipa	;	bfi_Adlm_fonipa
+sgn_Adlm_840_fonipa	;	ase_Adlm_fonipa
+sgn_Adlm_BR_fonipa	;	bzs_Adlm_fonipa
+sgn_Adlm_CO_fonipa	;	csn_Adlm_fonipa
+sgn_Adlm_DD_fonipa	;	gsg_Adlm_fonipa
+sgn_Adlm_DE_fonipa	;	gsg_Adlm_fonipa
+sgn_Adlm_DK_fonipa	;	dsl_Adlm_fonipa
+sgn_Adlm_FR_fonipa	;	fsl_Adlm_fonipa
+sgn_Adlm_FX_fonipa	;	fsl_Adlm_fonipa
+sgn_Adlm_GB_fonipa	;	bfi_Adlm_fonipa
+sgn_Adlm_GR_fonipa	;	gss_Adlm_fonipa
+sgn_Adlm_IE_fonipa	;	isg_Adlm_fonipa
+sgn_Adlm_IT_fonipa	;	ise_Adlm_fonipa
+sgn_Adlm_JP_fonipa	;	jsl_Adlm_fonipa
+sgn_Adlm_MX_fonipa	;	mfs_Adlm_fonipa
+sgn_Adlm_NI_fonipa	;	ncs_Adlm_fonipa
+sgn_Adlm_NL_fonipa	;	dse_Adlm_fonipa
+sgn_Adlm_NO_fonipa	;	nsi_Adlm_fonipa
+sgn_Adlm_PT_fonipa	;	psr_Adlm_fonipa
+sgn_Adlm_SE_fonipa	;	swl_Adlm_fonipa
+sgn_Adlm_UK_fonipa	;	bfi_Adlm_fonipa
+sgn_Adlm_US_fonipa	;	ase_Adlm_fonipa
+sgn_Adlm_ZA_fonipa	;	sfs_Adlm_fonipa
+sh_Adlm_AC_fonipa	;	sr_Adlm_AC_fonipa
+sin_Adlm_AC_fonipa	;	si_Adlm_AC_fonipa
+skk_Adlm_AC_fonipa	;	oyb_Adlm_AC_fonipa
+slk_Adlm_AC_fonipa	;	sk_Adlm_AC_fonipa
+slo_Adlm_AC_fonipa	;	sk_Adlm_AC_fonipa
+slv_Adlm_AC_fonipa	;	sl_Adlm_AC_fonipa
+sme_Adlm_AC_fonipa	;	se_Adlm_AC_fonipa
+smo_Adlm_AC_fonipa	;	sm_Adlm_AC_fonipa
+sna_Adlm_AC_fonipa	;	sn_Adlm_AC_fonipa
+snd_Adlm_AC_fonipa	;	sd_Adlm_AC_fonipa
+som_Adlm_AC_fonipa	;	so_Adlm_AC_fonipa
+sot_Adlm_AC_fonipa	;	st_Adlm_AC_fonipa
+spa_Adlm_AC_fonipa	;	es_Adlm_AC_fonipa
+spy_Adlm_AC_fonipa	;	kln_Adlm_AC_fonipa
+sqi_Adlm_AC_fonipa	;	sq_Adlm_AC_fonipa
+src_Adlm_AC_fonipa	;	sc_Adlm_AC_fonipa
+srd_Adlm_AC_fonipa	;	sc_Adlm_AC_fonipa
+srp_Adlm_AC_fonipa	;	sr_Adlm_AC_fonipa
+ssw_Adlm_AC_fonipa	;	ss_Adlm_AC_fonipa
+sun_Adlm_AC_fonipa	;	su_Adlm_AC_fonipa
+swa_Adlm_AC_fonipa	;	sw_Adlm_AC_fonipa
+swc_Adlm_AC_fonipa	;	sw_Adlm_AC_fonipa
+swe_Adlm_AC_fonipa	;	sv_Adlm_AC_fonipa
+swh_Adlm_AC_fonipa	;	sw_Adlm_AC_fonipa
+tah_Adlm_AC_fonipa	;	ty_Adlm_AC_fonipa
+tam_Adlm_AC_fonipa	;	ta_Adlm_AC_fonipa
+tat_Adlm_AC_fonipa	;	tt_Adlm_AC_fonipa
+tdu_Adlm_AC_fonipa	;	dtp_Adlm_AC_fonipa
+tel_Adlm_AC_fonipa	;	te_Adlm_AC_fonipa
+tgk_Adlm_AC_fonipa	;	tg_Adlm_AC_fonipa
+tgl_Adlm_AC_fonipa	;	fil_Adlm_AC_fonipa
+tha_Adlm_AC_fonipa	;	th_Adlm_AC_fonipa
+thc_Adlm_AC_fonipa	;	tpo_Adlm_AC_fonipa
+thx_Adlm_AC_fonipa	;	oyb_Adlm_AC_fonipa
+tib_Adlm_AC_fonipa	;	bo_Adlm_AC_fonipa
+tie_Adlm_AC_fonipa	;	ras_Adlm_AC_fonipa
+tir_Adlm_AC_fonipa	;	ti_Adlm_AC_fonipa
+tkk_Adlm_AC_fonipa	;	twm_Adlm_AC_fonipa
+tl_Adlm_AC_fonipa	;	fil_Adlm_AC_fonipa
+tlw_Adlm_AC_fonipa	;	weo_Adlm_AC_fonipa
+tmp_Adlm_AC_fonipa	;	tyj_Adlm_AC_fonipa
+tne_Adlm_AC_fonipa	;	kak_Adlm_AC_fonipa
+tnf_Adlm_AC_fonipa	;	fa_Adlm_AC_fonipa
+ton_Adlm_AC_fonipa	;	to_Adlm_AC_fonipa
+tsf_Adlm_AC_fonipa	;	taj_Adlm_AC_fonipa
+tsn_Adlm_AC_fonipa	;	tn_Adlm_AC_fonipa
+tso_Adlm_AC_fonipa	;	ts_Adlm_AC_fonipa
+ttq_Adlm_AC_fonipa	;	tmh_Adlm_AC_fonipa
+tuk_Adlm_AC_fonipa	;	tk_Adlm_AC_fonipa
+tur_Adlm_AC_fonipa	;	tr_Adlm_AC_fonipa
+tw_Adlm_AC_fonipa	;	ak_Adlm_AC_fonipa
+twi_Adlm_AC_fonipa	;	ak_Adlm_AC_fonipa
+uig_Adlm_AC_fonipa	;	ug_Adlm_AC_fonipa
+ukr_Adlm_AC_fonipa	;	uk_Adlm_AC_fonipa
+umu_Adlm_AC_fonipa	;	del_Adlm_AC_fonipa
+uok_Adlm_AC_fonipa	;	ema_Adlm_AC_fonipa
+urd_Adlm_AC_fonipa	;	ur_Adlm_AC_fonipa
+uzb_Adlm_AC_fonipa	;	uz_Adlm_AC_fonipa
+uzn_Adlm_AC_fonipa	;	uz_Adlm_AC_fonipa
+ven_Adlm_AC_fonipa	;	ve_Adlm_AC_fonipa
+vie_Adlm_AC_fonipa	;	vi_Adlm_AC_fonipa
+vol_Adlm_AC_fonipa	;	vo_Adlm_AC_fonipa
+wel_Adlm_AC_fonipa	;	cy_Adlm_AC_fonipa
+wln_Adlm_AC_fonipa	;	wa_Adlm_AC_fonipa
+wol_Adlm_AC_fonipa	;	wo_Adlm_AC_fonipa
+xba_Adlm_AC_fonipa	;	cax_Adlm_AC_fonipa
+xho_Adlm_AC_fonipa	;	xh_Adlm_AC_fonipa
+xia_Adlm_AC_fonipa	;	acn_Adlm_AC_fonipa
+xkh_Adlm_AC_fonipa	;	waw_Adlm_AC_fonipa
+xpe_Adlm_AC_fonipa	;	kpe_Adlm_AC_fonipa
+xsj_Adlm_AC_fonipa	;	suj_Adlm_AC_fonipa
+xsl_Adlm_AC_fonipa	;	den_Adlm_AC_fonipa
+ybd_Adlm_AC_fonipa	;	rki_Adlm_AC_fonipa
+ydd_Adlm_AC_fonipa	;	yi_Adlm_AC_fonipa
+yid_Adlm_AC_fonipa	;	yi_Adlm_AC_fonipa
+yma_Adlm_AC_fonipa	;	lrr_Adlm_AC_fonipa
+ymt_Adlm_AC_fonipa	;	mtm_Adlm_AC_fonipa
+yor_Adlm_AC_fonipa	;	yo_Adlm_AC_fonipa
+yos_Adlm_AC_fonipa	;	zom_Adlm_AC_fonipa
+yuu_Adlm_AC_fonipa	;	yug_Adlm_AC_fonipa
+zai_Adlm_AC_fonipa	;	zap_Adlm_AC_fonipa
+zh_Adlm_AC_fonipa_guoyu	;	zh_Adlm_AC_fonipa
+zh_Adlm_AC_fonipa_guoyu_hakka_xiang	;	hak_Adlm_AC_fonipa
+zh_Adlm_AC_fonipa_hakka	;	hak_Adlm_AC_fonipa
+zh_Adlm_AC_fonipa_hakka_xiang	;	hak_Adlm_AC_fonipa
+zh_Adlm_AC_fonipa_xiang	;	hsn_Adlm_AC_fonipa
+zha_Adlm_AC_fonipa	;	za_Adlm_AC_fonipa
+zho_Adlm_AC_fonipa	;	zh_Adlm_AC_fonipa
+zho_Adlm_AC_fonipa_guoyu	;	zh_Adlm_AC_fonipa
+zho_Adlm_AC_fonipa_guoyu_hakka_xiang	;	hak_Adlm_AC_fonipa
+zho_Adlm_AC_fonipa_hakka	;	hak_Adlm_AC_fonipa
+zho_Adlm_AC_fonipa_hakka_xiang	;	hak_Adlm_AC_fonipa
+zho_Adlm_AC_fonipa_xiang	;	hsn_Adlm_AC_fonipa
+zsm_Adlm_AC_fonipa	;	ms_Adlm_AC_fonipa
+zul_Adlm_AC_fonipa	;	zu_Adlm_AC_fonipa
+zyb_Adlm_AC_fonipa	;	za_Adlm_AC_fonipa
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/impl/number/DecimalQuantity_64BitBCD.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/impl/number/DecimalQuantity_64BitBCD.java
index 22f6e20..93c05fe 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/impl/number/DecimalQuantity_64BitBCD.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/impl/number/DecimalQuantity_64BitBCD.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.impl.number;
 
 import java.math.BigDecimal;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/impl/number/DecimalQuantity_ByteArrayBCD.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/impl/number/DecimalQuantity_ByteArrayBCD.java
index 92b40b0..775f179 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/impl/number/DecimalQuantity_ByteArrayBCD.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/impl/number/DecimalQuantity_ByteArrayBCD.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.impl.number;
 
 import java.math.BigDecimal;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/impl/number/DecimalQuantity_SimpleStorage.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/impl/number/DecimalQuantity_SimpleStorage.java
index bfce769..afc73dc 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/impl/number/DecimalQuantity_SimpleStorage.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/impl/number/DecimalQuantity_SimpleStorage.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.impl.number;
 
 import java.math.BigDecimal;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/BiDiConformanceTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/BiDiConformanceTest.java
index e0ce5ae..7b2c7fd 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/BiDiConformanceTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/BiDiConformanceTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2010-2015, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/BidiFmwk.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/BidiFmwk.java
index 442a06e..a2d0137 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/BidiFmwk.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/BidiFmwk.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2013, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestBidi.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestBidi.java
index af155ed..89dd0c4 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestBidi.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestBidi.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2007-2013, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestBidiTransform.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestBidiTransform.java
index 1790c52..a864995 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestBidiTransform.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestBidiTransform.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 package com.ibm.icu.dev.test.bidi;
 
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestCharFromDirProp.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestCharFromDirProp.java
index e35b608..fbe00c9 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestCharFromDirProp.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestCharFromDirProp.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2007-2010, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestClassOverride.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestClassOverride.java
index c9759f8..a044abc 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestClassOverride.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestClassOverride.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2007-2013, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestCompatibility.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestCompatibility.java
index ce9b5f4..d7c1cc4 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestCompatibility.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestCompatibility.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2007-2010, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestContext.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestContext.java
index 70da9c2..b80707d 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestContext.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestContext.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2007-2011, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestData.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestData.java
index a70f00d..1a3d90e 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestData.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2013, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestFailureRecovery.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestFailureRecovery.java
index babdc7c..32a7b54 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestFailureRecovery.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestFailureRecovery.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2007-2013, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestInverse.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestInverse.java
index cb500d5..2ed0d60 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestInverse.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestInverse.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2013, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestMultipleParagraphs.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestMultipleParagraphs.java
index 9ef43e2..3a2acb9 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestMultipleParagraphs.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestMultipleParagraphs.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2008-2010, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorder.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorder.java
index 2c695da..f98ed47 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorder.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2013, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorderArabicMathSymbols.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorderArabicMathSymbols.java
index 49f1fc2..21a3ffd 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorderArabicMathSymbols.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorderArabicMathSymbols.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorderRunsOnly.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorderRunsOnly.java
index b32e4e3..aa41566 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorderRunsOnly.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorderRunsOnly.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2007, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorderingMode.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorderingMode.java
index 4107abb..f0bf1be 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorderingMode.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorderingMode.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2010, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestStreaming.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestStreaming.java
index d849f51..3a05696 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestStreaming.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestStreaming.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2013, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimalTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimalTest.java
index 46e57e3..cad9220 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimalTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimalTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2015, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/AstroTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/AstroTest.java
index 7ae7c03..ced8577 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/AstroTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/AstroTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/CalendarRegressionTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/CalendarRegressionTest.java
index af4ed61..18ebfe3 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/CalendarRegressionTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/CalendarRegressionTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2000-2016, International Business Machines Corporation and    *
@@ -2559,5 +2559,69 @@
             errln("Fail: Expected year=" + year + ", actual=" + resultYear);
         }
     }
+
+    @Test
+    public void TestTimeZoneInLocale20465() {
+        String TESTS[][] = {
+            { "en-u-tz-usden",                     "America/Denver",             "gregorian" },
+            { "es-u-tz-usden",                     "America/Denver",             "gregorian" },
+            { "ms-u-tz-mykul",                     "Asia/Kuala_Lumpur",          "gregorian" },
+            { "zh-u-tz-mykul",                     "Asia/Kuala_Lumpur",          "gregorian" },
+            { "fr-u-ca-buddhist-tz-phmnl",         "Asia/Manila",                "buddhist" },
+            { "th-u-ca-chinese-tz-gblon",          "Europe/London",              "chinese" },
+            { "de-u-ca-coptic-tz-ciabj",           "Africa/Abidjan",             "coptic" },
+            { "ja-u-ca-dangi-tz-hkhkg",            "Asia/Hong_Kong",             "dangi" },
+            { "da-u-ca-ethioaa-tz-ruunera",        "Asia/Ust-Nera",              "ethiopic-amete-alem" },
+            { "ko-u-ca-ethiopic-tz-cvrai",         "Atlantic/Cape_Verde",        "ethiopic" },
+            { "fil-u-ca-gregory-tz-aubne",         "Australia/Brisbane",         "gregorian" },
+            { "fa-u-ca-hebrew-tz-brrbr",           "America/Rio_Branco",         "hebrew" },
+            { "gr-u-ca-indian-tz-lccas",           "America/St_Lucia",           "indian" },
+            { "or-u-ca-islamic-tz-cayyn",          "America/Swift_Current",      "islamic" },
+            { "my-u-ca-islamic-umalqura-tz-kzala", "Asia/Almaty",                "islamic-umalqura" },
+            { "lo-u-ca-islamic-tbla-tz-bmbda",     "Atlantic/Bermuda",           "islamic-tbla" },
+            { "km-u-ca-islamic-civil-tz-aqplm",    "Antarctica/Palmer",          "islamic-civil" },
+            { "kk-u-ca-islamic-rgsa-tz-usanc",     "America/Anchorage",          "islamic" },
+            { "ar-u-ca-iso8601-tz-bjptn",          "Africa/Porto-Novo",          "gregorian" },
+            { "he-u-ca-japanese-tz-tzdar",         "Africa/Dar_es_Salaam",       "japanese" },
+            { "bs-u-ca-persian-tz-etadd",          "Africa/Addis_Ababa",         "persian" },
+            { "it-u-ca-roc-tz-aruaq",              "America/Argentina/San_Juan", "roc" },
+        };
+        TimeZone other = TimeZone.getTimeZone("America/Louisville");
+        for (int i = 0; i < TESTS.length; ++i) {
+            ULocale ulocale = new ULocale(TESTS[i][0]);
+            Locale locale = new Locale(TESTS[i][0]);
+            Calendar cal = Calendar.getInstance(locale);
+            assertEquals(
+                "TimeZone from Calendar.getInstance(Locale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][1], cal.getTimeZone().getID());
+            assertEquals(
+                "Calendar from Calendar.getInstance(Locale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], cal.getType());
+
+            cal = Calendar.getInstance(ulocale);
+            assertEquals(
+                "TimeZone from Calendar.getInstance(ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][1], cal.getTimeZone().getID());
+            assertEquals(
+                "Calendar from Calendar.getInstance(ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], cal.getType());
+
+            cal = Calendar.getInstance(other, locale);
+            assertEquals(
+                "TimeZone from Calendar.getInstance(TimeZone zone=\"uslui\", Locale loc=\"" + TESTS[i][0] + "\")",
+                         other.getID(), cal.getTimeZone().getID());
+            assertEquals(
+                "Calendar from Calendar.getInstance(TimeZone zone=\"uslui\", Locale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], cal.getType());
+
+            cal = Calendar.getInstance(other, ulocale);
+            assertEquals(
+                "TimeZone from Calendar.getInstance(TimeZone zone=\"uslui\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         other.getID(), cal.getTimeZone().getID());
+            assertEquals(
+                "Calendar from Calendar.getInstance(TimeZone zone=\"uslui\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], cal.getType());
+        }
+    }
 }
 //eof
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/CalendarTestFmwk.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/CalendarTestFmwk.java
index de43dc2..d055644 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/CalendarTestFmwk.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/CalendarTestFmwk.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/ChineseTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/ChineseTest.java
index 44529e4..b952e00 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/ChineseTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/ChineseTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*********************************************************************
  * Copyright (C) 2000-2016, International Business Machines Corporation and
  * others. All Rights Reserved.
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/ChineseTestCase.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/ChineseTestCase.java
index df430f9..44b24ba 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/ChineseTestCase.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/ChineseTestCase.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java
index 7b4a808..418f017 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2000-2009,2011 International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/CopticTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/CopticTest.java
index d4a73b0..f915677 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/CopticTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/CopticTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/DangiTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/DangiTest.java
index 3b696e0..9c21701 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/DangiTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/DangiTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/DataDrivenCalendarTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/DataDrivenCalendarTest.java
index de3e68b..bbf75b5 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/DataDrivenCalendarTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/DataDrivenCalendarTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2013, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/EraRulesTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/EraRulesTest.java
index 40cdbef..796d1b7 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/EraRulesTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/EraRulesTest.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.calendar;
 
 import org.junit.Test;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/EthiopicTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/EthiopicTest.java
index 2544a49..9e9364b 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/EthiopicTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/EthiopicTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/HebrewTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/HebrewTest.java
index 6507fa2..668f41a 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/HebrewTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/HebrewTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2013, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/HolidayTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/HolidayTest.java
index d76b644..d6feac1 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/HolidayTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/HolidayTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java
index 306a3f8..f3e3bb8 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2016, International Business Machines Corporation and
@@ -28,6 +28,9 @@
 import com.ibm.icu.util.Calendar;
 import com.ibm.icu.util.ChineseCalendar;
 import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.HebrewCalendar;
+import com.ibm.icu.util.IndianCalendar;
+import com.ibm.icu.util.IslamicCalendar;
 import com.ibm.icu.util.JapaneseCalendar;
 import com.ibm.icu.util.TaiwanCalendar;
 import com.ibm.icu.util.TimeZone;
@@ -2017,4 +2020,221 @@
         StubSimpleDateFormat stub = new StubSimpleDateFormat("EEE MMM dd yyyy G HH:mm:ss.SSS", Locale.US);
         stub.run();
     }
+
+    @Test
+    public void TestConsistencyGregorian() {
+        checkConsistency("en@calendar=gregorian");
+    }
+
+    @Test
+    public void TestConsistencyIndian() {
+        checkConsistency("en@calendar=indian");
+    }
+
+    @Test
+    public void TestConsistencyHebrew() {
+        checkConsistency("en@calendar=hebrew");
+    }
+
+    @Test
+    public void TestConsistencyIslamic() {
+        checkConsistency("en@calendar=islamic");
+    }
+
+    @Test
+    public void TestConsistencyIslamicRGSA() {
+        checkConsistency("en@calendar=islamic-rgsa");
+    }
+
+    @Test
+    public void TestConsistencyIslamicTBLA() {
+        checkConsistency("en@calendar=islamic-tbla");
+    }
+
+    @Test
+    public void TestConsistencyIslamicUmalqura() {
+        checkConsistency("en@calendar=islamic-umalqura");
+    }
+
+    @Test
+    public void TestConsistencyIslamicCivil() {
+        checkConsistency("en@calendar=islamic-civil");
+    }
+
+    @Test
+    public void TestConsistencyCoptic() {
+        checkConsistency("en@calendar=coptic");
+    }
+
+    @Test
+    public void TestConsistencyEthiopic() {
+        checkConsistency("en@calendar=ethiopic");
+    }
+
+    @Test
+    public void TestConsistencyROC() {
+        checkConsistency("en@calendar=roc");
+    }
+
+    @Test
+    public void TestConsistencyChinese() {
+        checkConsistency("en@calendar=chinese");
+    }
+
+    @Test
+    public void TestConsistencyDangi() {
+        checkConsistency("en@calendar=dangi");
+    }
+
+    @Test
+    public void TestConsistencyPersian() {
+        checkConsistency("en@calendar=persian");
+    }
+
+    @Test
+    public void TestConsistencyBuddhist() {
+        checkConsistency("en@calendar=buddhist");
+    }
+
+    @Test
+    public void TestConsistencyJapanese() {
+        checkConsistency("en@calendar=japanese");
+    }
+
+    @Test
+    public void TestConsistencyEthiopicAmeteAlem() {
+        checkConsistency("en@calendar=ethiopic-amete-alem");
+    }
+
+    public void checkConsistency(String locale) {
+        boolean quick = getExhaustiveness() <= 5;
+        // Check 3 years in quick mode and 8000 years in exhaustive mode.
+        int numOfDaysToTest = (quick ? 3 * 365 : 8000 * 365);
+        int msInADay = 1000*60*60*24;
+
+        // g is just for debugging messages.
+        Calendar g = new GregorianCalendar(TimeZone.GMT_ZONE, ULocale.ENGLISH);
+        Calendar base = Calendar.getInstance(TimeZone.GMT_ZONE, new ULocale(locale));
+        Date test = Calendar.getInstance().getTime();
+
+        Calendar r = (Calendar)base.clone();
+        int lastDay = 1;
+        for (int j = 0; j < numOfDaysToTest; j++, test.setTime(test.getTime() - msInADay)) {
+            g.setTime(test);
+            base.clear();
+            base.setTime(test);
+            // First, we verify the date from base is decrease one day from the
+            // last day unless the last day is 1.
+            int cday = base.get(Calendar.DAY_OF_MONTH);
+            if (lastDay == 1) {
+                lastDay = cday;
+            } else {
+                if (cday != lastDay-1) {
+                    // Ignore if it is the last day before Gregorian Calendar switch on
+                    // 1582 Oct 4
+                    if (    g.get(Calendar.YEAR) == 1582 && (g.get(Calendar.MONTH) + 1) == 10 &&
+                            g.get(Calendar.DAY_OF_MONTH) == 4) {
+                        lastDay = 5;
+                    } else {
+                        errln("Day is not one less from previous date for Gregorian(e=" +
+                            g.get(Calendar.ERA) + " " + g.get(Calendar.YEAR) + "/" +
+                            (g.get(Calendar.MONTH) + 1) + "/" + g.get(Calendar.DAY_OF_MONTH) +
+                            ") " + locale + "(" +
+                            base.get(Calendar.ERA) + " " + base.get(Calendar.YEAR) + "/" +
+                            (base.get(Calendar.MONTH) + 1 ) + "/" + base.get(Calendar.DAY_OF_MONTH) +
+                            ")");
+                    }
+                }
+                lastDay--;
+            }
+            // Second, we verify the month is in reasonale range.
+            int cmonth = base.get(Calendar.MONTH);
+            if (cmonth < 0 || cmonth > 13) {
+                errln("Month is out of range Gregorian(e=" + g.get(Calendar.ERA) + " " +
+                    g.get(Calendar.YEAR) + "/" + (g.get(Calendar.MONTH) + 1) + "/" +
+                    g.get(Calendar.DAY_OF_MONTH) + ") " + locale + "(" + base.get(Calendar.ERA) +
+                    " " + base.get(Calendar.YEAR) + "/" + (base.get(Calendar.MONTH) + 1 ) + "/" +
+                    base.get(Calendar.DAY_OF_MONTH) + ")");
+            }
+            // Third, we verify the set function can round trip the time back.
+            r.clear();
+            for (int f = 0; f < base.getFieldCount(); f++) {
+                r.set(f, base.get(f));
+            }
+            Date result = r.getTime();
+            if (!test.equals(result)) {
+                errln("Round trip conversion produces different time from " + test + " to  " +
+                    result + " delta: " + (result.getTime() - test.getTime()) +
+                    " Gregorian(e=" + g.get(Calendar.ERA) + " " + g.get(Calendar.YEAR) + "/" +
+                    (g.get(Calendar.MONTH) + 1) + "/" + g.get(Calendar.DAY_OF_MONTH) + ") ");
+            }
+        }
+    }
+
+    @Test
+    public void TestBug21043Indian() {
+        Calendar cal = new IndianCalendar(ULocale.ENGLISH);
+        Calendar g = new GregorianCalendar(ULocale.ENGLISH);
+        // set to 10 BC
+        g.set(Calendar.ERA, GregorianCalendar.BC);
+        g.set(10, 1, 1);
+        cal.setTime(g.getTime());
+        int m = cal.get(Calendar.MONTH);
+        if (m < 0 || m > 11) {
+            errln("Month (" + m + ") should be between 0 and 11 in India calendar");
+        }
+    }
+
+    @Test
+    public void TestBug21044Hebrew() {
+        Calendar cal = new HebrewCalendar(ULocale.ENGLISH);
+        Calendar g = new GregorianCalendar(ULocale.ENGLISH);
+        // set to 3771/10/27 BC which is before 3760 BC.
+        g.set(Calendar.ERA, GregorianCalendar.BC);
+        g.set(3771, 9, 27);
+        cal.setTime(g.getTime());
+        int y = cal.get(Calendar.YEAR);
+        int m = cal.get(Calendar.MONTH);
+        int d = cal.get(Calendar.DATE);
+        if (y > 0 || m < 0 || m > 12 || d < 0 || d > 32) {
+            errln("Out of rage!\nYear " +  y + " should be " +
+              "negative number before 1AD.\nMonth " + m + " should " +
+              "be between 0 and 12 in Hebrew calendar.\nDate " + d +
+              " should be between 0 and 32 in Islamic calendar.");
+        }
+    }
+
+    @Test
+    public void TestBug21045Islamic() {
+        Calendar cal = new IslamicCalendar(ULocale.ENGLISH);
+        Calendar g = new GregorianCalendar(ULocale.ENGLISH);
+        // set to 500 AD before 622 AD.
+        g.set(Calendar.ERA, GregorianCalendar.AD);
+        g.set(500, 1, 1);
+        cal.setTime(g.getTime());
+        int m = cal.get(Calendar.MONTH);
+        if (m < 0 || m > 11) {
+            errln("Month (" + m + ") should be between 0 and 11 in Islamic calendar");
+        }
+    }
+
+    @Test
+    public void TestBug21046IslamicUmalqura() {
+        IslamicCalendar cal = new IslamicCalendar(ULocale.ENGLISH);
+        cal.setCalculationType(IslamicCalendar.CalculationType.ISLAMIC_UMALQURA);
+        Calendar g = new GregorianCalendar(ULocale.ENGLISH);
+        // set to 195366 BC
+        g.set(Calendar.ERA, GregorianCalendar.BC);
+        g.set(195366, 1, 1);
+        cal.setTime(g.getTime());
+        int y = cal.get(Calendar.YEAR);
+        int m = cal.get(Calendar.MONTH);
+        int d = cal.get(Calendar.DATE);
+        if (y > 0 || m < 0 || m > 11 || d < 0 || d > 32) {
+            errln("Out of rage!\nYear " +  y + " should be " +
+              "negative number before 1AD.\nMonth " + m + " should " +
+              "be between 0 and 11 in Islamic calendar.\nDate " + d +
+              " should be between 0 and 32 in Islamic calendar.");
+        }
+    }
 }
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/IndianTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/IndianTest.java
index 8854f8b..c3dcb7c 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/IndianTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/IndianTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2016, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/IslamicTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/IslamicTest.java
index 0b7de19..500dc08 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/IslamicTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/IslamicTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java
index 26d204d..1f98d38 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2010, International Business Machines Corporation and    *
@@ -234,10 +234,10 @@
 
     @Test
     public void TestForceGannenNumbering() {
-        final String jCalShortPattern = "y/M/d"; // Note: just 'y' doesn't work here.
-        final String jCalGannenDate = "1/5/9"; // A date in the above format after the accession date for Heisei [1989-] era (Heisei year 1 Jan 8)
-                                               // or Reiwa [2019-] era (Reiwa year 1 May 1). If before the accession date,
-                                               // the year will be in the previous era.
+//        final String jCalShortPattern = "y/M/d"; // Note: just 'y' doesn't work here.
+//        final String jCalGannenDate = "1/5/9"; // A date in the above format after the accession date for Heisei [1989-] era (Heisei year 1 Jan 8)
+//                                               // or Reiwa [2019-] era (Reiwa year 1 May 1). If before the accession date,
+//                                               // the year will be in the previous era.
         ULocale loc = new ULocale("ja_JP@calendar=japanese");
         Date refDate = new Date(600336000000L); // 1989 Jan 9 Monday = Heisei 1
         final String patText = "Gy年M月d日";
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/PersianTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/PersianTest.java
index 7a51f1d..3333349 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/PersianTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/PersianTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012-2016, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/TestCase.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/TestCase.java
index 71bb2a8..fb80e31 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/TestCase.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/TestCase.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/package.html b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/package.html
index 5acf0b6..baaf1ca 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/package.html
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/package.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--  Copyright (C) 2016 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--  Copyright (C) 2000-2004, International Business Machines Corporation and
   others. All Rights Reserved.
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/charsetdet/CharsetDetectionTests.xml b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/charsetdet/CharsetDetectionTests.xml
index fc88012..0782fb4 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/charsetdet/CharsetDetectionTests.xml
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/charsetdet/CharsetDetectionTests.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!-- Copyright (C) 2016 and later: Unicode, Inc. and others. -->
-<!-- License & terms of use: http://www.unicode.org/copyright.html#License -->
+<!-- License & terms of use: http://www.unicode.org/copyright.html -->
 <!-- Copyright (c) 2005-2015 IBM Corporation and others. All rights reserved -->
 <!-- See individual test cases for their specific copyright. -->
 
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/charsetdet/TestCharsetDetector.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/charsetdet/TestCharsetDetector.java
index 765c31a..948434f 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/charsetdet/TestCharsetDetector.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/charsetdet/TestCharsetDetector.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2005-2015, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/compression/DecompressionTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/compression/DecompressionTest.java
index 05ecb4b..da02271 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/compression/DecompressionTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/compression/DecompressionTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/compression/ExhaustiveTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/compression/ExhaustiveTest.java
index c21d786..244a454 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/compression/ExhaustiveTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/compression/ExhaustiveTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/compression/package.html b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/compression/package.html
index b8f3a63..b311ba4 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/compression/package.html
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/compression/package.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--  Copyright (C) 2016 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--  Copyright (C) 2000-2004, International Business Machines Corporation and
   others. All Rights Reserved.
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/DataReadWriteTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/DataReadWriteTest.java
index 762028e..19bbc4e 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/DataReadWriteTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/DataReadWriteTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/ICUDurationTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/ICUDurationTest.java
index b3cf867..459c12a 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/ICUDurationTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/ICUDurationTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2015, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/LanguageTestFmwk.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/LanguageTestFmwk.java
index bccb00d..e7190a2 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/LanguageTestFmwk.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/LanguageTestFmwk.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2007-2015, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/PeriodBuilderFactoryTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/PeriodBuilderFactoryTest.java
index fa98ad5..7f5cbdf 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/PeriodBuilderFactoryTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/PeriodBuilderFactoryTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2011, International Business Machines Corporation and   *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/PeriodTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/PeriodTest.java
index bf9d3f7..32f67f6 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/PeriodTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/PeriodTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/RegressionTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/RegressionTest.java
index 973845b..e8cedb7 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/RegressionTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/RegressionTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/ResourceBasedPeriodFormatterDataServiceTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/ResourceBasedPeriodFormatterDataServiceTest.java
index 59dc9c2..e6ccea8 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/ResourceBasedPeriodFormatterDataServiceTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/ResourceBasedPeriodFormatterDataServiceTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ar_EG.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ar_EG.java
index 35b76d6..534f458 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ar_EG.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ar_EG.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_en.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_en.java
index d1059d9..8b7ad61 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_en.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_en.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_es.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_es.java
index b30400b..cf225ad 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_es.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_es.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_fr.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_fr.java
index 32f8f6e..b40465f 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_fr.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_fr.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_he_IL.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_he_IL.java
index 6f854e6..efefa78 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_he_IL.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_he_IL.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_hi.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_hi.java
index 958329c..d1c370c 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_hi.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_hi.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_it.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_it.java
index d40782e..3b9684e 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_it.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_it.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ja.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ja.java
index 875cbda..d6cff4c 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ja.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ja.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007-2010, International Business Machines Corporation and   *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ko.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ko.java
index 2ca86d0..2ee4ef9 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ko.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ko.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ru.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ru.java
index 3381f73..bce59a8 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ru.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ru.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans.java
index 9d5ef82..9ef7d4d 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans_SG.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans_SG.java
index 9f9bc5f..39e519b 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans_SG.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans_SG.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant.java
index ed792ad..0a839bc 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant_HK.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant_HK.java
index 3daf922..de7d6f2 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant_HK.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant_HK.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2007, International Business Machines Corporation and        *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java
index 649b7b5..6ff6d7c 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2009, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/CompactDecimalFormatTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/CompactDecimalFormatTest.java
index 7ded6f4..1e2d55d 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/CompactDecimalFormatTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/CompactDecimalFormatTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, Google, International Business Machines Corporation and
@@ -698,9 +698,9 @@
         // Check currency formatting as well
         cdf = CompactDecimalFormat.getInstance(new ULocale("ar-EG"), CompactDecimalFormat.CompactStyle.SHORT);
         result = cdf.format(new CurrencyAmount(43000f, Currency.getInstance("USD")));
-        assertEquals("CDF should correctly format 43000 with currency in 'ar-EG'", "US$ ٤٣ ألف", result);
+        assertEquals("CDF should correctly format 43000 with currency in 'ar-EG'", "٤٣ ألف US$", result);
         result = cdf.format(new CurrencyAmount(-43000f, Currency.getInstance("USD")));
-        assertEquals("CDF should correctly format -43000 with currency in 'ar-EG'", "؜-US$ ٤٣ ألف", result);
+        assertEquals("CDF should correctly format -43000 with currency in 'ar-EG'", "؜-٤٣ ألف US$", result);
 
         // Extra locale with different positive/negative formats
         cdf = CompactDecimalFormat.getInstance(new ULocale("fi"), CompactDecimalFormat.CompactStyle.SHORT);
@@ -713,45 +713,33 @@
 
     @Test
     public void TestBug12689() {
-        if (logKnownIssue("12689", "CDF fails for numbers less than 1 thousand in most locales")) {
-            return;
-        }
-
         CompactDecimalFormat cdf;
         String result;
 
         cdf = CompactDecimalFormat.getInstance(ULocale.forLanguageTag("en"), CompactStyle.SHORT);
         result = cdf.format(new CurrencyAmount(123, Currency.getInstance("USD")));
-        assertEquals("CDF should correctly format 123 with currency in 'en'", "$120", result);
+        assertEquals("CDF should correctly format 123 with currency in 'en'", "$123", result);
 
         cdf = CompactDecimalFormat.getInstance(ULocale.forLanguageTag("it"), CompactStyle.SHORT);
         result = cdf.format(new CurrencyAmount(123, Currency.getInstance("EUR")));
-        assertEquals("CDF should correctly format 123 with currency in 'it'", "120 €", result);
+        assertEquals("CDF should correctly format 123 with currency in 'it'", "123\u00A0€", result);
     }
 
     @Test
     public void TestBug12688() {
-        if (logKnownIssue("12688", "CDF fails for numbers less than 1 million in 'it'")) {
-            return;
-        }
-
         CompactDecimalFormat cdf;
         String result;
 
         cdf = CompactDecimalFormat.getInstance(ULocale.forLanguageTag("it"), CompactStyle.SHORT);
         result = cdf.format(new CurrencyAmount(123000, Currency.getInstance("EUR")));
-        assertEquals("CDF should correctly format 123000 with currency in 'it'", "120000 €", result);
+        assertEquals("CDF should correctly format 123000 with currency in 'it'", "123.000\u00A0€", result);
     }
 
     @Test
     public void TestBug11319() {
-        if (logKnownIssue("11319", "CDF does not fall back from zh-Hant-HK to zh-Hant")) {
-            return;
-        }
-
-        CompactDecimalFormat cdf = CompactDecimalFormat.getInstance(new ULocale("zh-Hant-HK"), CompactStyle.SHORT);
+        CompactDecimalFormat cdf = CompactDecimalFormat.getInstance(new ULocale("yue-HK"), CompactStyle.SHORT);
         String result = cdf.format(958000000L);
-        assertEquals("CDF should correctly format 958 million in zh-Hant-HK", "9.6億", result);
+        assertEquals("CDF should correctly format 958 million in yue-HK", "9.6億", result);
     }
 
     @Test
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DataDrivenFormatTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DataDrivenFormatTest.java
index 91cf2ee..5622b39 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DataDrivenFormatTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DataDrivenFormatTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2012, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DataDrivenNumberFormatTestData.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DataDrivenNumberFormatTestData.java
index 3aed2e3..e9e3faf 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DataDrivenNumberFormatTestData.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DataDrivenNumberFormatTestData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2015, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DataDrivenNumberFormatTestUtility.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DataDrivenNumberFormatTestUtility.java
index 6af3e83..4e79e71 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DataDrivenNumberFormatTestUtility.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DataDrivenNumberFormatTestUtility.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2015, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatMiscTests.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatMiscTests.java
index 0e02ab8..5ac7caf 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatMiscTests.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatMiscTests.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java
index 83826ec..4932c60 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRegressionTestJ.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRegressionTestJ.java
index a797a87..d1749d5 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRegressionTestJ.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRegressionTestJ.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRoundTripTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRoundTripTest.java
index 35044f5..bdee761 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRoundTripTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRoundTripTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatTest.java
index 15cca60..99826cf 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2016, International Business Machines Corporation and
@@ -779,6 +779,93 @@
         }
     }
 
+    @Test
+    public void TestTimeZoneInLocale() {
+        String TESTS[][] = {
+            { "en-u-tz-usden",                     "America/Denver",             "gregorian" },
+            { "es-u-tz-usden",                     "America/Denver",             "gregorian" },
+            { "ms-u-tz-mykul",                     "Asia/Kuala_Lumpur",          "gregorian" },
+            { "zh-u-tz-mykul",                     "Asia/Kuala_Lumpur",          "gregorian" },
+            { "fr-u-ca-buddhist-tz-phmnl",         "Asia/Manila",                "buddhist" },
+            { "th-u-ca-chinese-tz-gblon",          "Europe/London",              "chinese" },
+            { "de-u-ca-coptic-tz-ciabj",           "Africa/Abidjan",             "coptic" },
+            { "ja-u-ca-dangi-tz-hkhkg",            "Asia/Hong_Kong",             "dangi" },
+            { "da-u-ca-ethioaa-tz-ruunera",        "Asia/Ust-Nera",              "ethiopic-amete-alem" },
+            { "ko-u-ca-ethiopic-tz-cvrai",         "Atlantic/Cape_Verde",        "ethiopic" },
+            { "fil-u-ca-gregory-tz-aubne",         "Australia/Brisbane",         "gregorian" },
+            { "fa-u-ca-hebrew-tz-brrbr",           "America/Rio_Branco",         "hebrew" },
+            { "gr-u-ca-indian-tz-lccas",           "America/St_Lucia",           "indian" },
+            { "or-u-ca-islamic-tz-cayyn",          "America/Swift_Current",      "islamic" },
+            { "my-u-ca-islamic-umalqura-tz-kzala", "Asia/Almaty",                "islamic-umalqura" },
+            { "lo-u-ca-islamic-tbla-tz-bmbda",     "Atlantic/Bermuda",           "islamic-tbla" },
+            { "km-u-ca-islamic-civil-tz-aqplm",    "Antarctica/Palmer",          "islamic-civil" },
+            { "kk-u-ca-islamic-rgsa-tz-usanc",     "America/Anchorage",          "islamic" },
+            { "ar-u-ca-iso8601-tz-bjptn",          "Africa/Porto-Novo",          "gregorian" },
+            { "he-u-ca-japanese-tz-tzdar",         "Africa/Dar_es_Salaam",       "japanese" },
+            { "bs-u-ca-persian-tz-etadd",          "Africa/Addis_Ababa",         "persian" },
+            { "it-u-ca-roc-tz-aruaq",              "America/Argentina/San_Juan", "roc" },
+        };
+        for (int i = 0; i < TESTS.length; ++i) {
+            ULocale ulocale = new ULocale(TESTS[i][0]);
+            Locale locale = new Locale(TESTS[i][0]);
+            SimpleDateFormat smptfmt = new SimpleDateFormat("Z", locale);
+            assertEquals(
+                "TimeZone from SimpleDateFormat(\"Z\", Locale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][1], smptfmt.getTimeZone().getID());
+            assertEquals(
+                "Calendar from SimpleDateFormat(\"Z\", Locale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], smptfmt.getCalendar().getType());
+
+            smptfmt = new SimpleDateFormat("Z", "", ulocale);
+            assertEquals(
+                "TimeZone from SimpleDateFormat(\"Z\", \"\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][1], smptfmt.getTimeZone().getID());
+            assertEquals(
+                "Calendar from SimpleDateFormat(\"Z\", \"\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], smptfmt.getCalendar().getType());
+
+            smptfmt = new SimpleDateFormat("Z", ulocale);
+            assertEquals(
+                "TimeZone from SimpleDateFormat(\"Z\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][1], smptfmt.getTimeZone().getID());
+            assertEquals(
+                "Calendar from SimpleDateFormat(\"Z\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], smptfmt.getCalendar().getType());
+
+            DateFormat dfmt = DateFormat.getInstanceForSkeleton("Z", locale);
+            assertEquals(
+                "TimeZone from DateFormat.getInstanceForSkeleton(\"Z\", Locale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][1], dfmt.getTimeZone().getID());
+            assertEquals(
+                "Calendar from DateFormat.getInstanceForSkeleton(\"Z\", Locale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], dfmt.getCalendar().getType());
+
+            dfmt = DateFormat.getInstanceForSkeleton("Z", ulocale);
+            assertEquals(
+                "TimeZone from DateFormat.getInstanceForSkeleton(\"Z\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][1], dfmt.getTimeZone().getID());
+            assertEquals(
+                "Calendar from DateFormat.getInstanceForSkeleton(\"Z\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], dfmt.getCalendar().getType());
+
+            dfmt = DateFormat.getPatternInstance("Z", locale);
+            assertEquals(
+                "TimeZone from DateFormat.getPatternInstance(\"Z\", Locale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][1], dfmt.getTimeZone().getID());
+            assertEquals(
+                "Calendar from DateFormat.getPatternInstance(\"Z\", Locale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], dfmt.getCalendar().getType());
+
+            dfmt = DateFormat.getPatternInstance("Z", ulocale);
+            assertEquals(
+                "TimeZone from DateFormat.getPatternInstance(\"Z\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][1], dfmt.getTimeZone().getID());
+            assertEquals(
+                "Calendar from DateFormat.getPatternInstance(\"Z\", ULocale loc=\"" + TESTS[i][0] + "\")",
+                         TESTS[i][2], dfmt.getCalendar().getType());
+        }
+    }
+
     private static final String GMT_BG = "\u0413\u0440\u0438\u043D\u0443\u0438\u0447";
     private static final String GMT_ZH = "GMT";
     //private static final String GMT_ZH = "\u683C\u6797\u5C3C\u6CBB\u6807\u51C6\u65F6\u95F4";
@@ -1007,13 +1094,13 @@
         { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" },
         { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
         { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+5:30", "+5:30" },
-        { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "Indische Zeit", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "Indische Normalzeit", "+5:30" },
         { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" },
         { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
         { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+5:30", "+05:30" },
-        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "Indische Zeit", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "Indische Normalzeit", "+5:30" },
         { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "Indien Zeit", "Asia/Calcutta" },
-        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "Indische Zeit", "Asia/Calcutta" },
+        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "Indische Normalzeit", "Asia/Calcutta" },
 
         // ==========
 
@@ -1512,7 +1599,7 @@
         { "ti", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" },
         { "ti", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" },
         { "ti", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+1", "+1:00" },
-        { "ti", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" },
+        { "ti", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "British Summer Time", "+1:00" },
         { "ti", "Europe/London", "2004-07-15T00:00:00Z", "v", "\u12A5\u1295\u130D\u120A\u12DD", "Europe/London" },
         { "ti", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\u12A5\u1295\u130D\u120A\u12DD", "Europe/London" },
 
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java
index 6dfd3ae..f832d8a 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java
@@ -1,6 +1,6 @@
 
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2016, International Business Machines Corporation and    *
@@ -36,6 +36,7 @@
 import com.ibm.icu.text.DateIntervalFormat.FormattedDateInterval;
 import com.ibm.icu.text.DateIntervalInfo;
 import com.ibm.icu.text.DateIntervalInfo.PatternInfo;
+import com.ibm.icu.text.DisplayContext;
 import com.ibm.icu.text.SimpleDateFormat;
 import com.ibm.icu.util.Calendar;
 import com.ibm.icu.util.DateInterval;
@@ -429,7 +430,7 @@
 
                 "zh", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "EEEEdMMMMy", "2007\\u5e7410\\u670810\\u65e5\\u661f\\u671f\\u4e09\\u81f32008\\u5e7410\\u670810\\u65e5\\u661f\\u671f\\u4e94",
 
-                "zh", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "hm", "2007/10/10 \\u4e0a\\u534810:10 \\u2013 2008/10/10 \\u4e0a\\u534810:10",
+                "zh", "CE 2007 10 10 10:10:10", "CE 2008 10 10 10:10:10", "hm", "2007/10/10\\u4e0a\\u534810:10 \\u2013 2008/10/10\\u4e0a\\u534810:10",
 
                 "zh", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "dMMMMy", "2007\\u5e7410\\u670810\\u65e5\\u81f311\\u670810\\u65e5",
 
@@ -439,7 +440,7 @@
 
                 "zh", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "EEEEdMMMM", "10\\u670810\\u65e5\\u661f\\u671f\\u4e09\\u81f311\\u670810\\u65e5\\u661f\\u671f\\u516d",
 
-                "zh", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "hmv", "2007/10/10 \\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10 \\u2013 2007/11/10 \\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10",
+                "zh", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "hmv", "2007/10/10\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10 \\u2013 2007/11/10\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10",
 
                 "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EEEEdMMMMy", "2007\\u5e7411\\u670810\\u65e5\\u661f\\u671f\\u516d\\u81f320\\u65e5\\u661f\\u671f\\u4e8c",
 
@@ -472,29 +473,29 @@
 
                 "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "MMMM", "\\u5341\\u4E00\\u6708", // (fixed expected result per ticket 6872<-6626 and others)
 
-                "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "hmz", "2007/11/10 GMT-8 \\u4e0a\\u534810:10 \\u2013 2007/11/20 GMT-8 \\u4e0a\\u534810:10",
+                "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "hmz", "2007/11/10GMT-8 \\u4e0a\\u534810:10 \\u2013 2007/11/20GMT-8 \\u4e0a\\u534810:10",
 
-                "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "h", "2007/11/10 \\u4e0a\\u534810\\u65f6 \\u2013 2007/11/20 \\u4e0a\\u534810\\u65f6",
+                "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "h", "2007/11/10\\u4e0a\\u534810\\u65f6 \\u2013 2007/11/20\\u4e0a\\u534810\\u65f6",
 
                 "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "EEEEdMMMMy", "2007\\u5e741\\u670810\\u65e5\\u661f\\u671f\\u4e09", // (fixed expected result per ticket 6872<-6626)
 
                 "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hm", "\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10",
 
-                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hmv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4\\u4E0A\\u534810:00\\u81F3\\u4E0B\\u53482:10",
+                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hmv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:00\\u81F3\\u4E0B\\u53482:10",
 
-                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hmz", "GMT-8\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10",
+                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hmz", "GMT-8 \\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10",
 
                 "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "h", "\\u4e0a\\u534810\\u65F6\\u81f3\\u4e0b\\u53482\\u65f6",
 
-                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4\\u4E0A\\u534810\\u65F6\\u81F3\\u4E0B\\u53482\\u65F6",
+                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810\\u65F6\\u81F3\\u4E0B\\u53482\\u65F6",
 
-                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hz", "GMT-8\\u4e0a\\u534810\\u65F6\\u81f3\\u4e0b\\u53482\\u65f6",
+                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hz", "GMT-8 \\u4e0a\\u534810\\u65F6\\u81f3\\u4e0b\\u53482\\u65f6",
 
                 "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "dMMMM", "1\\u670810\\u65e5", // (fixed expected result per ticket 6872<-6626)
 
                 "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hm", "\\u4e0a\\u534810:00\\u81f310:20",
 
-                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hmv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4\\u4E0A\\u534810:00\\u81F310:20",
+                "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hmv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:00\\u81F310:20",
 
                 "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "h", "\\u4e0a\\u534810\\u65f6",
 
@@ -728,6 +729,103 @@
     }
 
 
+    /**
+     * Test handling of hour and day period metacharacters
+     */
+    @Test
+    public void TestHourMetacharacters() {
+        // first item is date pattern
+        // followed by a group of locale/from_data/to_data/skeleton/interval_data
+        // Note that from_data/to_data are specified using era names from root, for the calendar specified by locale.
+        String[] DATA = {
+            "GGGGG y MM dd HH:mm:ss", // pattern for from_data/to_data
+
+            // This test is for tickets ICU-21154, ICU-21155, and ICU-21156 and is intended to verify
+            // that all of the special skeleton characters for hours and day periods work as expected
+            // with date intervals:
+            // - If a, b, or B is included in the skeleton, it correctly sets the length of the day-period field
+            // - If k or K is included, it behaves the same as H or h, except for the difference in the actual
+            //   number used for the hour.
+            // - If j is included, it behaves the same as either h or H as appropriate, and multiple j's have the
+            //   intended effect on the length of the day period field (if there is one)
+            // - If J is included, it correctly suppresses the day period field if j would include it
+            // - If C is included, it behaves the same as j and brings up the correct day period field
+            // - In all cases, if the day period of both ends of the range is the same, you only see it once
+
+            // baseline (h and H)
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "hh", "12 \\u2013 1 AM",
+            "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "HH", "00\\u201301 Uhr",
+
+            // k and K (ICU-21154 and ICU-21156)
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "KK", "0 \\u2013 1 AM",
+            "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "kk", "24\\u201301 Uhr",
+
+            // different lengths of the 'a' field
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "ha", "10 AM \\u2013 1 PM",
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "ha", "12 \\u2013 1 AM",
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 12:00:00", "haaaaa", "10 a \\u2013 12 p",
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "haaaaa", "12 \\u2013 1 a",
+
+            // j (ICU-21155)
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jj", "10 AM \\u2013 1 PM",
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jj", "12 \\u2013 1 AM",
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jjjjj", "10 a \\u2013 1 p",
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jjjjj", "12 \\u2013 1 a",
+            "de", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jj", "10\\u201313 Uhr",
+            "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jj", "00\\u201301 Uhr",
+            "de", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jjjjj", "10\\u201313 Uhr",
+            "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jjjjj", "00\\u201301 Uhr",
+
+            // b and B
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 12:00:00", "hb", "10 AM \\u2013 12 noon",
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 12:00:00", "hbbbbb", "10 a \\u2013 12 n",
+            "en", "CE 2010 09 27 13:00:00", "CE 2010 09 27 14:00:00", "hb", "1 \\u2013 2 PM",
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "hB", "10 in the morning \\u2013 1 in the afternoon",
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "hB", "12 \\u2013 1 at night",
+
+            // J
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "J", "10 \\u2013 1",
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "J", "12 \\u2013 1",
+            "de", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "J", "10\\u201313 Uhr",
+            "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "J", "00\\u201301 Uhr",
+
+            // C
+            // (for English and German, C should do the same thing as j)
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CC", "10 AM \\u2013 1 PM",
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CC", "12 \\u2013 1 AM",
+            "en", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CCCCC", "10 a \\u2013 1 p",
+            "en", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CCCCC", "12 \\u2013 1 a",
+            "de", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CC", "10\\u201313 Uhr",
+            "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CC", "00\\u201301 Uhr",
+            "de", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CCCCC", "10\\u201313 Uhr",
+            "de", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CCCCC", "00\\u201301 Uhr",
+            // (for zh_HK and hi_IN, j maps to ha, but C maps to hB)
+        "zh_HK", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jj", "\\u4E0A\\u534810\\u6642\\u81F3\\u4E0B\\u53481\\u6642",
+        "zh_HK", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jj", "\\u4E0A\\u534812\\u6642\\u81F31\\u6642",
+        "zh_HK", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "hB", "\\u4E0A\\u534810\\u6642 \\u2013 \\u4E0B\\u53481\\u6642",
+        "zh_HK", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "hB", "\\u51CC\\u666812\\u20131\\u6642",
+        "zh_HK", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CC", "\\u4E0A\\u534810\\u6642 \\u2013 \\u4E0B\\u53481\\u6642",
+        "zh_HK", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CC", "\\u51CC\\u666812\\u20131\\u6642",
+        "hi_IN", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "jj", "10 am \\u2013 1 pm",
+        "hi_IN", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "jj", "12\\u20131 am",
+        "hi_IN", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "hB", "\\u0938\\u0941\\u092C\\u0939 10 \\u2013 \\u0926\\u094B\\u092A\\u0939\\u0930 1",
+        "hi_IN", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "hB", "\\u0930\\u093E\\u0924 12\\u20131",
+        "hi_IN", "CE 2010 09 27 10:00:00", "CE 2010 09 27 13:00:00", "CC", "\\u0938\\u0941\\u092C\\u0939 10 \\u2013 \\u0926\\u094B\\u092A\\u0939\\u0930 1",
+        "hi_IN", "CE 2010 09 27 00:00:00", "CE 2010 09 27 01:00:00", "CC", "\\u0930\\u093E\\u0924 12\\u20131",
+
+         // regression test for ICU-21342
+         "en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 10:00:00", "kk", "24\\u201310",
+         "en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 11:00:00", "kk", "24\\u201311",
+         "en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 12:00:00", "kk", "24\\u201312",
+         "en_GB", "CE 2010 09 27 00:00:00", "CE 2010 09 27 13:00:00", "kk", "24\\u201313",
+
+         // regression test for ICU-21343
+         "de", "CE 2010 09 27 01:00:00", "CE 2010 09 27 10:00:00", "KK", "1 \\u2013 10 Uhr AM",
+        };
+        expect(DATA, DATA.length);
+    }
+
+
     private void expect(String[] data, int data_length) {
         int i = 0;
         String pattern = data[i++];
@@ -811,17 +909,17 @@
 
                 "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "10. Jan. 2007",
 
-                "es", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "10 oct. 2007 --- 10 oct. 2008",
+                "es", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "10 oct 2007 --- 10 oct 2008",
 
-                "es", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 oct. 10 - nov. 2007",
+                "es", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 oct 10 - nov 2007",
 
-                "es", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "10 nov. 2007 --- 20 nov. 2007",
+                "es", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "10 nov 2007 --- 20 nov 2007",
 
-                "es", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "10 ene. 2007",
+                "es", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "10 ene 2007",
 
-                "es", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "10 ene. 2007",
+                "es", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "10 ene 2007",
 
-                "es", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "10 ene. 2007",
+                "es", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "10 ene 2007",
         };
         expectUserDII(DATA, DATA.length);
     }
@@ -862,7 +960,65 @@
         }
     }
 
+    /*
+     * Test format using DisplayContext
+     */
+    @Test
+    public void TestContext() {
+        final long startDate = 1285599629000L; // 2010-Sep-27 0800 in America/Los_Angeles
+        final long day = 24*60*60*1000; // milliseconds in a day
 
+        class DateIntervalContextItem {
+            public String locale;
+            public String skeleton;
+            public DisplayContext context;
+            public long deltaDate;
+            public String expectResult;
+             // Simple constructor
+            public DateIntervalContextItem(String loc, String skel, DisplayContext ctxt, long delta, String expect) {
+                locale = loc;
+                skeleton = skel;
+                context = ctxt;
+                deltaDate = delta;
+                expectResult = expect;
+            }
+        };
+
+        final DateIntervalContextItem[] testItems = {
+           new DateIntervalContextItem( "cs", "MMMEd", DisplayContext.CAPITALIZATION_NONE,                      60*day, "po 27. 9. – pá 26. 11." ),
+           new DateIntervalContextItem( "cs", "yMMMM", DisplayContext.CAPITALIZATION_NONE,                      60*day, "září–listopad 2010" ),
+           new DateIntervalContextItem( "cs", "yMMMM", DisplayContext.CAPITALIZATION_NONE,                       1*day, "září 2010" ),
+           new DateIntervalContextItem( "cs", "MMMEd", DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, 60*day, "Po 27. 9. – pá 26. 11." ),
+           new DateIntervalContextItem( "cs", "yMMMM", DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, 60*day, "Září–listopad 2010" ),
+           new DateIntervalContextItem( "cs", "yMMMM", DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE,  1*day, "Září 2010" ),
+           new DateIntervalContextItem( "cs", "MMMEd", DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU,       60*day, "Po 27. 9. – pá 26. 11." ),
+           new DateIntervalContextItem( "cs", "yMMMM", DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU,       60*day, "Září–listopad 2010" ),
+           new DateIntervalContextItem( "cs", "yMMMM", DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU,        1*day, "Září 2010" ),
+           new DateIntervalContextItem( "cs", "MMMEd", DisplayContext.CAPITALIZATION_FOR_STANDALONE,            60*day, "po 27. 9. – pá 26. 11." ),
+           new DateIntervalContextItem( "cs", "yMMMM", DisplayContext.CAPITALIZATION_FOR_STANDALONE,            60*day, "září–listopad 2010" ),
+           new DateIntervalContextItem( "cs", "yMMMM", DisplayContext.CAPITALIZATION_FOR_STANDALONE,             1*day, "září 2010" ),
+        };
+
+        for (DateIntervalContextItem item: testItems) {
+            DateIntervalFormat difmt = DateIntervalFormat.getInstance(item.skeleton, new ULocale(item.locale));
+            difmt.setTimeZone(TimeZone.getFrozenTimeZone("America/Los_Angeles"));
+
+            difmt.setContext(item.context);
+            DisplayContext getContext = difmt.getContext(DisplayContext.Type.CAPITALIZATION);
+            if (getContext != item.context) {
+                errln("For locale "  + item.locale + ", skeleton " + item.skeleton + ", context " + item.context +
+                        ": getContext returned " + getContext);
+            }
+            DateInterval interval = new DateInterval(startDate, startDate + item.deltaDate);
+            FieldPosition pos = new FieldPosition(0);
+            StringBuffer getResult = new StringBuffer();
+            difmt.format(interval, getResult, pos);
+            if (!getResult.toString().equals(item.expectResult)) {
+                errln("For locale "  + item.locale + ", skeleton " + item.skeleton + ", context " + item.context +
+                       ": expected " + item.expectResult + ", got " + getResult.toString());
+            }
+        }
+    }
 
     /*
      * Test format using user defined DateIntervalInfo
@@ -2047,6 +2203,7 @@
                 ULocale.AvailableType.WITH_LEGACY_ALIASES)) {
             // Only test 1/5 of the locale in quick mode.
             if (quick && (count++ % 5 > 0)) continue;
+            @SuppressWarnings("unused")
             DateIntervalFormat fmt = DateIntervalFormat.getInstance("dMMMMy", locale);
             for (String calendar : Calendar.getKeywordValuesForLocale(
                     "calendar", locale, false)) {
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java
index 5b70892..1965085 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2006-2016, Google, International Business Machines Corporation
@@ -446,11 +446,11 @@
 
         new ULocale("es"),
         new String[] {"yM", "1/1999"},
-        new String[] {"yMMM", "ene. 1999"},
+        new String[] {"yMMM", "ene 1999"},
         new String[] {"yMd", "13/1/1999"},
-        new String[] {"yMMMd", "13 ene. 1999"},
+        new String[] {"yMMMd", "13 ene 1999"},
         new String[] {"Md", "13/1"},
-        new String[] {"MMMd", "13 ene."},
+        new String[] {"MMMd", "13 ene"},
         new String[] {"MMMMd", "13 de enero"},
         new String[] {"yQQQ", "T1 1999"},
         new String[] {"hhmm", "11:58 p.\u00A0m."},
@@ -458,8 +458,8 @@
         new String[] {"jjmm", "23:58"},
         new String[] {"mmss", "58:59"},
         new String[] {"yyyyMMMM", "enero de 1999"},
-        new String[] {"MMMEd", "mi\u00E9., 13 ene."},
-        new String[] {"Ed", "mi\u00E9. 13"},
+        new String[] {"MMMEd", "mi\u00E9, 13 ene"},
+        new String[] {"Ed", "mi\u00E9 13"},
         new String[] {"jmmssSSS", "23:58:59,123"},
         new String[] {"JJmm", "23:58"},
 
@@ -1743,8 +1743,7 @@
             // en_NH is interesting because NH is a depregated region code.
             {"en_NH", "h a", "h:mm a", "HOUR_CYCLE_12"},
             // ch_ZH is a typo (should be zh_CN), but we should fail gracefully.
-            // {"cn_ZH", "HH", "H:mm"}, // TODO(ICU-20653): Desired behavior
-            {"cn_ZH", "HH", "h:mm a", "HOUR_CYCLE_23"}, // Actual behavior
+            {"cn_ZH", "HH", "HH:mm", "HOUR_CYCLE_23"}, // Desired & now actual behavior (does this fix ICU-20653?)
             // a non-BCP47 locale without a country code should not fail
             {"ja_TRADITIONAL", "H時", "H:mm", "HOUR_CYCLE_23"},
         };
@@ -1765,4 +1764,39 @@
                 cas[3], dtpg.getDefaultHourCycle().toString());
         }
     }
+
+    @Test
+    public void test_jConsistencyOddLocales() { // ICU-20590
+        String[] localeIDs = {
+            "en", "ro", // known languages 12h / 24h
+            "en-RO", "ro-US",  // known languages with known regions, hour conflict language vs region
+            "en-XZ", "ro-XZ", // known languages 12h / 24h, unknown region
+            "xz-RO", "xz-US",  // unknown language with known regions
+            "xz", // unknown language
+            "xz-ZX",  // unknown language with unknown country
+            "ars", "wuu" // aliased locales
+        };
+        final String skeleton = "jm";
+        for (String localeID : localeIDs) {
+            ULocale locale = new ULocale(localeID);
+
+            DateFormat dtfShort = DateFormat.getTimeInstance(DateFormat.SHORT, locale);
+            String dtfShortPattern = ((SimpleDateFormat)dtfShort).toPattern();
+
+            DateFormat dtfSkel = DateFormat.getInstanceForSkeleton(skeleton, locale);
+            String dtfSkelPattern = ((SimpleDateFormat)dtfSkel).toPattern();
+
+            DateTimePatternGenerator dtpg = DateTimePatternGenerator.getInstance(locale);
+            String dtpgPattern = dtpg.getBestPattern(skeleton);
+
+            if (!dtfShortPattern.equals(dtfSkelPattern) || !dtfSkelPattern.equals(dtpgPattern)) {
+                String dtfShortValidLoc = dtfShort.getLocale(ULocale.VALID_LOCALE).getName();
+                String dtfShortActualLoc = dtfShort.getLocale(ULocale.ACTUAL_LOCALE).getName();
+                errln("For locale " + localeID +
+                        " expected same pattern from DateTimePatGen: " + dtpgPattern +
+                        ", DateFmt-forSkel: " + dtfSkelPattern + ", DateFmt-short: "  + dtfShortPattern +
+                        "; latter has validLoc " + dtfShortValidLoc + ", actualLoc " + dtfShortActualLoc);
+            }
+        }
+    }
 }
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/FormattedStringBuilderTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/FormattedStringBuilderTest.java
index 095a6d0..a05b64e 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/FormattedStringBuilderTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/FormattedStringBuilderTest.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.format;
 
 import static org.junit.Assert.assertEquals;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/FormattedValueTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/FormattedValueTest.java
index 57ed86d..51a39f4 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/FormattedValueTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/FormattedValueTest.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.format;
 
 import static org.junit.Assert.assertEquals;
@@ -215,6 +215,8 @@
         }
         boolean afterLoopResult = fv.nextPosition(cfpos);
         assertFalse(baseMessage + "after loop: " + cfpos, afterLoopResult);
+        afterLoopResult = fv.nextPosition(cfpos);
+        assertFalse(baseMessage + "after loop again: " + cfpos, afterLoopResult);
 
         // Check nextPosition constrained over each class one at a time
         for (Class<?> classConstraint : uniqueFieldClasses) {
@@ -238,6 +240,8 @@
             }
             afterLoopResult = fv.nextPosition(cfpos);
             assertFalse(baseMessage + "after loop: " + cfpos, afterLoopResult);
+            afterLoopResult = fv.nextPosition(cfpos);
+            assertFalse(baseMessage + "after loop again: " + cfpos, afterLoopResult);
         }
 
         // Check nextPosition constrained over an unrelated class
@@ -267,6 +271,8 @@
             }
             afterLoopResult = fv.nextPosition(cfpos);
             assertFalse(baseMessage + "after loop: " + cfpos, afterLoopResult);
+            afterLoopResult = fv.nextPosition(cfpos);
+            assertFalse(baseMessage + "after loop again: " + cfpos, afterLoopResult);
         }
     }
 
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormat.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormat.java
index 8dc9c32..d1c3ee0 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormat.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /***************************************************************************************
  *
  *   Copyright (C) 1996-2010, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPI.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPI.java
index eb263df..d91bcbf 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPI.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPI.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*****************************************************************************************
  *
  *   Copyright (C) 1996-2015, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java
index 91e5e8d..948ee63 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
@@ -161,4 +161,4 @@
         }
         */
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatSymbols.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatSymbols.java
index bce4c8d..00f10e0 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatSymbols.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatSymbols.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*****************************************************************************************
  *
  *   Copyright (C) 1996-2014, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java
index a2d14ea..748d295 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*****************************************************************************************
  *
  *   Copyright (C) 1996-2012, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
index 19ef298..f2cc1d0 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2016, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbols.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbols.java
index 012946f..c9e9ee8 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbols.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbols.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*****************************************************************************************
  *
  *   Copyright (C) 1996-2016, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java
index 8b8a051..dd44833 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
@@ -144,4 +144,4 @@
                 expected + ", Got " + buffer);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestNumberFormat.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestNumberFormat.java
index 59624df..ab9fae5 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestNumberFormat.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestNumberFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java
index a4aa716..64c9f53 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*****************************************************************************************
  *
  *   Copyright (C) 1996-2009, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java
index afa0634..9cc0b63 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*****************************************************************************************
  * (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
  * (C) Copyright IBM Corp. 1996-2012 - All Rights Reserved
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/ListFormatterTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/ListFormatterTest.java
index 186a419..9297752 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/ListFormatterTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/ListFormatterTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2012-2013, Google, International Business Machines Corporation and
@@ -217,9 +217,8 @@
 
     @Test
     public void TestFormattedValue() {
-        ListFormatter fmt = ListFormatter.getInstance(ULocale.ENGLISH);
-
         {
+            ListFormatter fmt = ListFormatter.getInstance(ULocale.ENGLISH);
             String message = "Field position test 1";
             String expectedString = "hello, wonderful, and world";
             String[] inputs = {
@@ -244,6 +243,85 @@
                 expectedString,
                 expectedFieldPositions);
         }
+
+        {
+            ListFormatter fmt = ListFormatter.getInstance(ULocale.CHINESE, Type.UNITS, Width.SHORT);
+            String message = "Field position test 2 (ICU-21340)";
+            String expectedString = "aabbbbbbbccc";
+            String inputs[] = {
+                "aa",
+                "bbbbbbb",
+                "ccc"
+            };
+            FormattedList result = fmt.formatToValue(Arrays.asList(inputs));
+            Object[][] expectedFieldPositions = {
+                // field, begin index, end index
+                {ListFormatter.SpanField.LIST_SPAN, 0, 2, 0},
+                {ListFormatter.Field.ELEMENT, 0, 2},
+                {ListFormatter.SpanField.LIST_SPAN, 2, 9, 1},
+                {ListFormatter.Field.ELEMENT, 2, 9},
+                {ListFormatter.SpanField.LIST_SPAN, 9, 12, 2},
+                {ListFormatter.Field.ELEMENT, 9, 12}};
+            if (!logKnownIssue("21351", "Java still coalesces adjacent elements")) {
+                FormattedValueTest.checkFormattedValue(
+                    message,
+                    result,
+                    expectedString,
+                    expectedFieldPositions);
+            }
+        }
+    
+        {
+            ListFormatter fmt = ListFormatter.getInstance(ULocale.ENGLISH, Type.UNITS, Width.SHORT);
+            String message = "ICU-21383 Long list";
+            String expectedString = "a, b, c, d, e, f, g, h, i";
+            String inputs[] = {
+                "a",
+                "b",
+                "c",
+                "d",
+                "e",
+                "f",
+                "g",
+                "h",
+                "i",
+            };
+            FormattedList result = fmt.formatToValue(Arrays.asList(inputs));
+            Object[][] expectedFieldPositions = {
+                // field, begin index, end index
+                {ListFormatter.SpanField.LIST_SPAN, 0, 1, 0},
+                {ListFormatter.Field.ELEMENT, 0, 1},
+                {ListFormatter.Field.LITERAL, 1, 3},
+                {ListFormatter.SpanField.LIST_SPAN, 3, 4, 1},
+                {ListFormatter.Field.ELEMENT, 3, 4},
+                {ListFormatter.Field.LITERAL, 4, 6},
+                {ListFormatter.SpanField.LIST_SPAN, 6, 7, 2},
+                {ListFormatter.Field.ELEMENT, 6, 7},
+                {ListFormatter.Field.LITERAL, 7, 9},
+                {ListFormatter.SpanField.LIST_SPAN, 9, 10, 3},
+                {ListFormatter.Field.ELEMENT, 9, 10},
+                {ListFormatter.Field.LITERAL, 10, 12},
+                {ListFormatter.SpanField.LIST_SPAN, 12, 13, 4},
+                {ListFormatter.Field.ELEMENT, 12, 13},
+                {ListFormatter.Field.LITERAL, 13, 15},
+                {ListFormatter.SpanField.LIST_SPAN, 15, 16, 5},
+                {ListFormatter.Field.ELEMENT, 15, 16},
+                {ListFormatter.Field.LITERAL, 16, 18},
+                {ListFormatter.SpanField.LIST_SPAN, 18, 19, 6},
+                {ListFormatter.Field.ELEMENT, 18, 19},
+                {ListFormatter.Field.LITERAL, 19, 21},
+                {ListFormatter.SpanField.LIST_SPAN, 21, 22, 7},
+                {ListFormatter.Field.ELEMENT, 21, 22},
+                {ListFormatter.Field.LITERAL, 22, 24},
+                {ListFormatter.SpanField.LIST_SPAN, 24, 25, 8},
+                {ListFormatter.Field.ELEMENT, 24, 25},
+                };
+            FormattedValueTest.checkFormattedValue(
+                message,
+                result,
+                expectedString,
+                expectedFieldPositions);
+        }
     }
 
     @Test
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitTest.java
index b4604c2..a7f706c 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2016, International Business Machines Corporation and
@@ -84,7 +84,7 @@
         }
     }
 
-    private static final String[] DRAFT_VERSIONS = {"64", "65", "66", "67"};
+    private static final String[] DRAFT_VERSIONS = {"66", "67", "68"};
 
     private static final HashSet<String> DRAFT_VERSION_SET = new HashSet<>();
 
@@ -263,6 +263,18 @@
         {"PIXEL_PER_INCH", "65"},
         {"BAR", "65"},
         {"PASCAL", "65"},
+        {"DOT", "68"},
+        {"EARTH_RADIUS", "68"},
+        {"CANDELA", "68"},
+        {"LUMEN", "68"},
+        {"GRAIN", "68"},
+        {"DESSERT_SPOON", "68"},
+        {"DESSERT_SPOON_IMPERIAL", "68"},
+        {"DRAM", "68"},
+        {"DROP", "68"},
+        {"JIGGER", "68"},
+        {"PINCH", "68"},
+        {"QUART_IMPERIAL", "68"},
     };
 
     private static final HashMap<String, String> JAVA_VERSION_MAP = new HashMap<>();
@@ -306,12 +318,12 @@
         // various generateXXX calls go here, see
         // http://site.icu-project.org/design/formatting/measureformat/updating-measure-unit
         // use this test to run each of the ollowing in succession
-        //generateConstants("67"); // for MeasureUnit.java, update generated MeasureUnit constants
-        //generateBackwardCompatibilityTest("67"); // for MeasureUnitTest.java, create TestCompatible65
-        //generateCXXHConstants("67"); // for measunit.h, update generated createXXX methods
+        //generateConstants("68"); // for MeasureUnit.java, update generated MeasureUnit constants
+        //generateBackwardCompatibilityTest("68"); // for MeasureUnitTest.java, create TestCompatible65
+        //generateCXXHConstants("68"); // for measunit.h, update generated createXXX methods
         //generateCXXConstants(); // for measunit.cpp, update generated code
-        //generateCXXBackwardCompatibilityTest("67"); // for measfmttest.cpp, create TestCompatible65
-        //updateJAVAVersions("67"); // for MeasureUnitTest.java, JAVA_VERSIONS
+        //generateCXXBackwardCompatibilityTest("68"); // for measfmttest.cpp, create TestCompatible65
+        //updateJAVAVersions("68"); // for MeasureUnitTest.java, JAVA_VERSIONS
     }
 
     @Test
@@ -1685,6 +1697,197 @@
     }
 
     @Test
+    public void TestCompatible68() {
+        MeasureUnit[] units = {
+                MeasureUnit.G_FORCE,
+                MeasureUnit.METER_PER_SECOND_SQUARED,
+                MeasureUnit.ARC_MINUTE,
+                MeasureUnit.ARC_SECOND,
+                MeasureUnit.DEGREE,
+                MeasureUnit.RADIAN,
+                MeasureUnit.REVOLUTION_ANGLE,
+                MeasureUnit.ACRE,
+                MeasureUnit.DUNAM,
+                MeasureUnit.HECTARE,
+                MeasureUnit.SQUARE_CENTIMETER,
+                MeasureUnit.SQUARE_FOOT,
+                MeasureUnit.SQUARE_INCH,
+                MeasureUnit.SQUARE_KILOMETER,
+                MeasureUnit.SQUARE_METER,
+                MeasureUnit.SQUARE_MILE,
+                MeasureUnit.SQUARE_YARD,
+                MeasureUnit.KARAT,
+                MeasureUnit.MILLIGRAM_PER_DECILITER,
+                MeasureUnit.MILLIMOLE_PER_LITER,
+                MeasureUnit.MOLE,
+                MeasureUnit.PERCENT,
+                MeasureUnit.PERMILLE,
+                MeasureUnit.PART_PER_MILLION,
+                MeasureUnit.PERMYRIAD,
+                MeasureUnit.LITER_PER_100KILOMETERS,
+                MeasureUnit.LITER_PER_KILOMETER,
+                MeasureUnit.MILE_PER_GALLON,
+                MeasureUnit.MILE_PER_GALLON_IMPERIAL,
+                MeasureUnit.BIT,
+                MeasureUnit.BYTE,
+                MeasureUnit.GIGABIT,
+                MeasureUnit.GIGABYTE,
+                MeasureUnit.KILOBIT,
+                MeasureUnit.KILOBYTE,
+                MeasureUnit.MEGABIT,
+                MeasureUnit.MEGABYTE,
+                MeasureUnit.PETABYTE,
+                MeasureUnit.TERABIT,
+                MeasureUnit.TERABYTE,
+                MeasureUnit.CENTURY,
+                MeasureUnit.DAY,
+                MeasureUnit.DAY_PERSON,
+                MeasureUnit.DECADE,
+                MeasureUnit.HOUR,
+                MeasureUnit.MICROSECOND,
+                MeasureUnit.MILLISECOND,
+                MeasureUnit.MINUTE,
+                MeasureUnit.MONTH,
+                MeasureUnit.MONTH_PERSON,
+                MeasureUnit.NANOSECOND,
+                MeasureUnit.SECOND,
+                MeasureUnit.WEEK,
+                MeasureUnit.WEEK_PERSON,
+                MeasureUnit.YEAR,
+                MeasureUnit.YEAR_PERSON,
+                MeasureUnit.AMPERE,
+                MeasureUnit.MILLIAMPERE,
+                MeasureUnit.OHM,
+                MeasureUnit.VOLT,
+                MeasureUnit.BRITISH_THERMAL_UNIT,
+                MeasureUnit.CALORIE,
+                MeasureUnit.ELECTRONVOLT,
+                MeasureUnit.FOODCALORIE,
+                MeasureUnit.JOULE,
+                MeasureUnit.KILOCALORIE,
+                MeasureUnit.KILOJOULE,
+                MeasureUnit.KILOWATT_HOUR,
+                MeasureUnit.THERM_US,
+                MeasureUnit.NEWTON,
+                MeasureUnit.POUND_FORCE,
+                MeasureUnit.GIGAHERTZ,
+                MeasureUnit.HERTZ,
+                MeasureUnit.KILOHERTZ,
+                MeasureUnit.MEGAHERTZ,
+                MeasureUnit.DOT,
+                MeasureUnit.DOT_PER_CENTIMETER,
+                MeasureUnit.DOT_PER_INCH,
+                MeasureUnit.EM,
+                MeasureUnit.MEGAPIXEL,
+                MeasureUnit.PIXEL,
+                MeasureUnit.PIXEL_PER_CENTIMETER,
+                MeasureUnit.PIXEL_PER_INCH,
+                MeasureUnit.ASTRONOMICAL_UNIT,
+                MeasureUnit.CENTIMETER,
+                MeasureUnit.DECIMETER,
+                MeasureUnit.EARTH_RADIUS,
+                MeasureUnit.FATHOM,
+                MeasureUnit.FOOT,
+                MeasureUnit.FURLONG,
+                MeasureUnit.INCH,
+                MeasureUnit.KILOMETER,
+                MeasureUnit.LIGHT_YEAR,
+                MeasureUnit.METER,
+                MeasureUnit.MICROMETER,
+                MeasureUnit.MILE,
+                MeasureUnit.MILE_SCANDINAVIAN,
+                MeasureUnit.MILLIMETER,
+                MeasureUnit.NANOMETER,
+                MeasureUnit.NAUTICAL_MILE,
+                MeasureUnit.PARSEC,
+                MeasureUnit.PICOMETER,
+                MeasureUnit.POINT,
+                MeasureUnit.SOLAR_RADIUS,
+                MeasureUnit.YARD,
+                MeasureUnit.CANDELA,
+                MeasureUnit.LUMEN,
+                MeasureUnit.LUX,
+                MeasureUnit.SOLAR_LUMINOSITY,
+                MeasureUnit.CARAT,
+                MeasureUnit.DALTON,
+                MeasureUnit.EARTH_MASS,
+                MeasureUnit.GRAIN,
+                MeasureUnit.GRAM,
+                MeasureUnit.KILOGRAM,
+                MeasureUnit.METRIC_TON,
+                MeasureUnit.MICROGRAM,
+                MeasureUnit.MILLIGRAM,
+                MeasureUnit.OUNCE,
+                MeasureUnit.OUNCE_TROY,
+                MeasureUnit.POUND,
+                MeasureUnit.SOLAR_MASS,
+                MeasureUnit.STONE,
+                MeasureUnit.TON,
+                MeasureUnit.GIGAWATT,
+                MeasureUnit.HORSEPOWER,
+                MeasureUnit.KILOWATT,
+                MeasureUnit.MEGAWATT,
+                MeasureUnit.MILLIWATT,
+                MeasureUnit.WATT,
+                MeasureUnit.ATMOSPHERE,
+                MeasureUnit.BAR,
+                MeasureUnit.HECTOPASCAL,
+                MeasureUnit.INCH_HG,
+                MeasureUnit.KILOPASCAL,
+                MeasureUnit.MEGAPASCAL,
+                MeasureUnit.MILLIBAR,
+                MeasureUnit.MILLIMETER_OF_MERCURY,
+                MeasureUnit.PASCAL,
+                MeasureUnit.POUND_PER_SQUARE_INCH,
+                MeasureUnit.KILOMETER_PER_HOUR,
+                MeasureUnit.KNOT,
+                MeasureUnit.METER_PER_SECOND,
+                MeasureUnit.MILE_PER_HOUR,
+                MeasureUnit.CELSIUS,
+                MeasureUnit.FAHRENHEIT,
+                MeasureUnit.GENERIC_TEMPERATURE,
+                MeasureUnit.KELVIN,
+                MeasureUnit.NEWTON_METER,
+                MeasureUnit.POUND_FOOT,
+                MeasureUnit.ACRE_FOOT,
+                MeasureUnit.BARREL,
+                MeasureUnit.BUSHEL,
+                MeasureUnit.CENTILITER,
+                MeasureUnit.CUBIC_CENTIMETER,
+                MeasureUnit.CUBIC_FOOT,
+                MeasureUnit.CUBIC_INCH,
+                MeasureUnit.CUBIC_KILOMETER,
+                MeasureUnit.CUBIC_METER,
+                MeasureUnit.CUBIC_MILE,
+                MeasureUnit.CUBIC_YARD,
+                MeasureUnit.CUP,
+                MeasureUnit.CUP_METRIC,
+                MeasureUnit.DECILITER,
+                MeasureUnit.DESSERT_SPOON,
+                MeasureUnit.DESSERT_SPOON_IMPERIAL,
+                MeasureUnit.DRAM,
+                MeasureUnit.DROP,
+                MeasureUnit.FLUID_OUNCE,
+                MeasureUnit.FLUID_OUNCE_IMPERIAL,
+                MeasureUnit.GALLON,
+                MeasureUnit.GALLON_IMPERIAL,
+                MeasureUnit.HECTOLITER,
+                MeasureUnit.JIGGER,
+                MeasureUnit.LITER,
+                MeasureUnit.MEGALITER,
+                MeasureUnit.MILLILITER,
+                MeasureUnit.PINCH,
+                MeasureUnit.PINT,
+                MeasureUnit.PINT_METRIC,
+                MeasureUnit.QUART,
+                MeasureUnit.QUART_IMPERIAL,
+                MeasureUnit.TABLESPOON,
+                MeasureUnit.TEASPOON,
+        };
+        assertEquals("",  184, units.length);
+    }
+
+    @Test
     public void TestExamplesInDocs() {
         MeasureFormat fmtFr = MeasureFormat.getInstance(
                 ULocale.FRENCH, FormatWidth.SHORT);
@@ -2083,7 +2286,7 @@
                 {ULocale.ENGLISH, FormatWidth.SHORT, "2 mi, 1 ft, 2.3 in"},
                 {ULocale.ENGLISH, FormatWidth.NARROW, "2mi 1\u2032 2.3\u2033"},
                 {russia, FormatWidth.WIDE,   "2 \u043C\u0438\u043B\u0438 1 \u0444\u0443\u0442 2,3 \u0434\u044E\u0439\u043C\u0430"},
-                {russia, FormatWidth.SHORT,  "2 \u043C\u0438\u043B\u0438 1 \u0444\u0442 2,3 \u0434\u044E\u0439\u043C."},
+                {russia, FormatWidth.SHORT,  "2 \u043C\u0438 1 \u0444\u0442 2,3 \u0434\u044E\u0439\u043C."},
                 {russia, FormatWidth.NARROW, "2 \u043C\u0438\u043B\u044C 1 \u0444\u0442 2,3 \u0434\u044E\u0439\u043C\u0430"},
    };
         for (Object[] row : data) {
@@ -2118,7 +2321,7 @@
             { ULocale.GERMAN,   FormatWidth.NUMERIC, "5:37" },
             { ULocale.ENGLISH,  FormatWidth.NARROW,  "5h 37m" },
             { ULocale.ENGLISH,  FormatWidth.NUMERIC, "5:37" },
-            { ulocSpanish,      FormatWidth.NARROW,  "5 h 37 min" },
+            { ulocSpanish,      FormatWidth.NARROW,  "5h 37min" },
             { ulocSpanish,      FormatWidth.NUMERIC, "5:37" },
             { ulocFinnish,      FormatWidth.NARROW,  "5t 37min" },
             { ulocFinnish,      FormatWidth.NUMERIC, "5.37" },
@@ -2132,7 +2335,7 @@
             { ulocNorwegianBok, FormatWidth.NUMERIC, "5:37" },
             { ulocDutch,        FormatWidth.NARROW,  "5 u, 37 m" },
             { ulocDutch,        FormatWidth.NUMERIC, "5:37" },
-            { ulocNorwegianNyn, FormatWidth.NARROW,  "5t og 37m" },
+            { ulocNorwegianNyn, FormatWidth.NARROW,  "5t 37m" },
             { ulocNorwegianNyn, FormatWidth.NUMERIC, "5:37" },
             { ulocSwedish,      FormatWidth.NARROW,  "5h 37m" },
             { ulocSwedish,      FormatWidth.NUMERIC, "5:37" },
@@ -2449,7 +2652,7 @@
         // This fails unless we resolve to MeasureUnit.POUND_PER_SQUARE_INCH
         assertEquals("", "50 psi",
                 fmt.formatMeasurePerUnit(
-                        new Measure(50, MeasureUnit.POUND),
+                        new Measure(50, MeasureUnit.POUND_FORCE),
                         MeasureUnit.SQUARE_INCH,
                         new StringBuilder(),
                         new FieldPosition(0)).toString());
@@ -3136,7 +3339,7 @@
      * @return
      */
     private String showBytes(byte[] contents) {
-      StringBuilder b = new StringBuilder('[');
+      StringBuilder b = new StringBuilder("[");
       for (int i = 0; i < contents.length; ++i) {
         int item = contents[i] & 0xFF;
         if (item >= 0x20 && item <= 0x7F) {
@@ -3282,4 +3485,405 @@
         fmt = MeasureFormat.getInstance(ULocale.forLanguageTag("da"), FormatWidth.NUMERIC);
         Assert.assertEquals("2.03,877", fmt.formatMeasures(fhours, fminutes));
     }
+
+    @Test
+    public void TestIdentifiers() {
+        class TestCase {
+            final String id;
+            final String normalized;
+
+            TestCase(String id, String normalized) {
+                this.id = id;
+                this.normalized = normalized;
+            }
+        }
+
+        TestCase cases[] = {
+                // Correctly normalized identifiers should not change
+                new TestCase("square-meter-per-square-meter", "square-meter-per-square-meter"),
+                new TestCase("kilogram-meter-per-square-meter-square-second",
+                        "kilogram-meter-per-square-meter-square-second"),
+                new TestCase("square-mile-and-square-foot", "square-mile-and-square-foot"),
+                new TestCase("square-foot-and-square-mile", "square-foot-and-square-mile"),
+                new TestCase("per-cubic-centimeter", "per-cubic-centimeter"),
+                new TestCase("per-kilometer", "per-kilometer"),
+
+                // Normalization of power and per
+                new TestCase(
+                        "pow2-foot-and-pow2-mile", "square-foot-and-square-mile"),
+                new TestCase(
+                        "gram-square-gram-per-dekagram", "cubic-gram-per-dekagram"),
+                new TestCase(
+                        "kilogram-per-meter-per-second", "kilogram-per-meter-second"),
+
+                // TODO(ICU-21284): Add more test cases once the proper ranking is available.
+        };
+
+
+        for (TestCase testCase : cases) {
+            MeasureUnit unit = MeasureUnit.forIdentifier(testCase.id);
+
+            final String actual = unit.getIdentifier();
+            assertEquals(testCase.id, testCase.normalized, actual);
+        }
+
+        assertEquals("for empty identifiers, the MeasureUnit will be null",
+                null, MeasureUnit.forIdentifier(""));
+    }
+
+    @Test
+    public void TestInvalidIdentifiers() {
+        final String inputs[] = {
+                "kilo",
+                "kilokilo",
+                "onekilo",
+                "meterkilo",
+                "meter-kilo",
+                "k",
+                "meter-",
+                "meter+",
+                "-meter",
+                "+meter",
+                "-kilometer",
+                "+kilometer",
+                "-pow2-meter",
+                "+pow2-meter",
+                "p2-meter",
+                "p4-meter",
+                "+",
+                "-",
+                "-mile",
+                "-and-mile",
+                "-per-mile",
+                "one",
+                "one-one",
+                "one-per-mile",
+                "one-per-cubic-centimeter",
+                "square--per-meter",
+                "metersecond", // Must have compound part in between single units
+
+                // Negative powers not supported in mixed units yet. TODO(CLDR-13701).
+                "per-hour-and-hertz",
+                "hertz-and-per-hour",
+
+                // Compound units not supported in mixed units yet. TODO(CLDR-13700).
+                "kilonewton-meter-and-newton-meter",
+        };
+
+        for (String input : inputs) {
+            try {
+                MeasureUnit.forIdentifier(input);
+                Assert.fail("An IllegalArgumentException must be thrown");
+            } catch (IllegalArgumentException e) {
+                continue;
+            }
+        }
+    }
+
+    @Test
+    public void TestCompoundUnitOperations() {
+        MeasureUnit.forIdentifier("kilometer-per-second-joule");
+
+        MeasureUnit kilometer = MeasureUnit.KILOMETER;
+        MeasureUnit cubicMeter = MeasureUnit.CUBIC_METER;
+        MeasureUnit meter = kilometer.withSIPrefix(MeasureUnit.SIPrefix.ONE);
+        MeasureUnit centimeter1 = kilometer.withSIPrefix(MeasureUnit.SIPrefix.CENTI);
+        MeasureUnit centimeter2 = meter.withSIPrefix(MeasureUnit.SIPrefix.CENTI);
+        MeasureUnit cubicDecimeter = cubicMeter.withSIPrefix(MeasureUnit.SIPrefix.DECI);
+
+        verifySingleUnit(kilometer, MeasureUnit.SIPrefix.KILO, 1, "kilometer");
+        verifySingleUnit(meter, MeasureUnit.SIPrefix.ONE, 1, "meter");
+        verifySingleUnit(centimeter1, MeasureUnit.SIPrefix.CENTI, 1, "centimeter");
+        verifySingleUnit(centimeter2, MeasureUnit.SIPrefix.CENTI, 1, "centimeter");
+        verifySingleUnit(cubicDecimeter, MeasureUnit.SIPrefix.DECI, 3, "cubic-decimeter");
+
+        assertTrue("centimeter equality", centimeter1.equals( centimeter2));
+        assertTrue("kilometer inequality", !centimeter1.equals( kilometer));
+
+        MeasureUnit squareMeter = meter.withDimensionality(2);
+        MeasureUnit overCubicCentimeter = centimeter1.withDimensionality(-3);
+        MeasureUnit quarticKilometer = kilometer.withDimensionality(4);
+        MeasureUnit overQuarticKilometer1 = kilometer.withDimensionality(-4);
+
+        verifySingleUnit(squareMeter, MeasureUnit.SIPrefix.ONE, 2, "square-meter");
+        verifySingleUnit(overCubicCentimeter, MeasureUnit.SIPrefix.CENTI, -3, "per-cubic-centimeter");
+        verifySingleUnit(quarticKilometer, MeasureUnit.SIPrefix.KILO, 4, "pow4-kilometer");
+        verifySingleUnit(overQuarticKilometer1, MeasureUnit.SIPrefix.KILO, -4, "per-pow4-kilometer");
+
+        assertTrue("power inequality", quarticKilometer != overQuarticKilometer1);
+
+        MeasureUnit overQuarticKilometer2 = quarticKilometer.reciprocal();
+        MeasureUnit overQuarticKilometer3 = kilometer.product(kilometer)
+                .product(kilometer)
+                .product(kilometer)
+                .reciprocal();
+        MeasureUnit overQuarticKilometer4 = meter.withDimensionality(4)
+                .reciprocal()
+                .withSIPrefix(MeasureUnit.SIPrefix.KILO);
+
+        verifySingleUnit(overQuarticKilometer2, MeasureUnit.SIPrefix.KILO, -4, "per-pow4-kilometer");
+        verifySingleUnit(overQuarticKilometer3, MeasureUnit.SIPrefix.KILO, -4, "per-pow4-kilometer");
+        verifySingleUnit(overQuarticKilometer4, MeasureUnit.SIPrefix.KILO, -4, "per-pow4-kilometer");
+
+        assertTrue("reciprocal equality", overQuarticKilometer1.equals(overQuarticKilometer2));
+        assertTrue("reciprocal equality", overQuarticKilometer1.equals(overQuarticKilometer3));
+        assertTrue("reciprocal equality", overQuarticKilometer1.equals(overQuarticKilometer4));
+
+        MeasureUnit kiloSquareSecond = MeasureUnit.SECOND
+                .withDimensionality(2).withSIPrefix(MeasureUnit.SIPrefix.KILO);
+        MeasureUnit meterSecond = meter.product(kiloSquareSecond);
+        MeasureUnit cubicMeterSecond1 = meter.withDimensionality(3).product(kiloSquareSecond);
+        MeasureUnit centimeterSecond1 = meter.withSIPrefix(MeasureUnit.SIPrefix.CENTI).product(kiloSquareSecond);
+        MeasureUnit secondCubicMeter = kiloSquareSecond.product(meter.withDimensionality(3));
+        MeasureUnit secondCentimeter = kiloSquareSecond.product(meter.withSIPrefix(MeasureUnit.SIPrefix.CENTI));
+        MeasureUnit secondCentimeterPerKilometer = secondCentimeter.product(kilometer.reciprocal());
+
+        verifySingleUnit(kiloSquareSecond, MeasureUnit.SIPrefix.KILO, 2, "square-kilosecond");
+        String meterSecondSub[] = {
+                "meter", "square-kilosecond"
+        };
+        verifyCompoundUnit(meterSecond, "meter-square-kilosecond",
+                meterSecondSub, meterSecondSub.length);
+        String cubicMeterSecond1Sub[] = {
+                "cubic-meter", "square-kilosecond"
+        };
+        verifyCompoundUnit(cubicMeterSecond1, "cubic-meter-square-kilosecond",
+                cubicMeterSecond1Sub, cubicMeterSecond1Sub.length);
+        String centimeterSecond1Sub[] = {
+                "centimeter", "square-kilosecond"
+        };
+        verifyCompoundUnit(centimeterSecond1, "centimeter-square-kilosecond",
+                centimeterSecond1Sub, centimeterSecond1Sub.length);
+        String secondCubicMeterSub[] = {
+                "cubic-meter", "square-kilosecond"
+        };
+        verifyCompoundUnit(secondCubicMeter, "cubic-meter-square-kilosecond",
+                secondCubicMeterSub, secondCubicMeterSub.length);
+        String secondCentimeterSub[] = {
+                "centimeter", "square-kilosecond"
+        };
+        verifyCompoundUnit(secondCentimeter, "centimeter-square-kilosecond",
+                secondCentimeterSub, secondCentimeterSub.length);
+        String secondCentimeterPerKilometerSub[] = {
+                "centimeter", "square-kilosecond", "per-kilometer"
+        };
+        verifyCompoundUnit(secondCentimeterPerKilometer, "centimeter-square-kilosecond-per-kilometer",
+                secondCentimeterPerKilometerSub, secondCentimeterPerKilometerSub.length);
+
+        assertTrue("reordering equality", cubicMeterSecond1.equals(secondCubicMeter));
+        assertTrue("additional simple units inequality", !secondCubicMeter.equals(secondCentimeter));
+
+        // Don't allow get/set power or SI prefix on compound units
+        try {
+            meterSecond.getDimensionality();
+            fail("UnsupportedOperationException must be thrown");
+        } catch (UnsupportedOperationException e) {
+            // Expecting an exception to be thrown
+        }
+
+        try {
+            meterSecond.withDimensionality(3);
+            fail("UnsupportedOperationException must be thrown");
+        } catch (UnsupportedOperationException e) {
+            // Expecting an exception to be thrown
+        }
+
+        try {
+            meterSecond.getSIPrefix();
+            fail("UnsupportedOperationException must be thrown");
+        } catch (UnsupportedOperationException e) {
+            // Expecting an exception to be thrown
+        }
+
+        try {
+            meterSecond.withSIPrefix(MeasureUnit.SIPrefix.CENTI);
+            fail("UnsupportedOperationException must be thrown");
+        } catch (UnsupportedOperationException e) {
+            // Expecting an exception to be thrown
+        }
+
+        MeasureUnit footInch = MeasureUnit.forIdentifier("foot-and-inch");
+        MeasureUnit inchFoot = MeasureUnit.forIdentifier("inch-and-foot");
+
+        String footInchSub[] = {
+                "foot", "inch"
+        };
+        verifyMixedUnit(footInch, "foot-and-inch",
+                footInchSub, footInchSub.length);
+        String inchFootSub[] = {
+                "inch", "foot"
+        };
+        verifyMixedUnit(inchFoot, "inch-and-foot",
+                inchFootSub, inchFootSub.length);
+
+        assertTrue("order matters inequality", !footInch.equals(inchFoot));
+
+
+        MeasureUnit dimensionless  = NoUnit.BASE;
+        MeasureUnit dimensionless2 = MeasureUnit.forIdentifier("");
+        assertEquals("dimensionless equality", dimensionless, dimensionless2);
+
+        // We support starting from an "identity" MeasureUnit and then combining it
+        // with others via product:
+        MeasureUnit kilometer2 = kilometer.product(dimensionless);
+
+        verifySingleUnit(kilometer2, MeasureUnit.SIPrefix.KILO, 1, "kilometer");
+        assertTrue("kilometer equality", kilometer.equals(kilometer2));
+
+        // Test out-of-range powers
+        MeasureUnit power15 = MeasureUnit.forIdentifier("pow15-kilometer");
+        verifySingleUnit(power15, MeasureUnit.SIPrefix.KILO, 15, "pow15-kilometer");
+
+        try {
+            MeasureUnit.forIdentifier("pow16-kilometer");
+            fail("An IllegalArgumentException must be thrown");
+        } catch (IllegalArgumentException e) {
+            // Expecting an exception to be thrown
+        }
+
+        try {
+            power15.product(kilometer);
+            fail("An IllegalArgumentException must be thrown");
+        } catch (IllegalArgumentException e) {
+            // Expecting an exception to be thrown
+        }
+
+        MeasureUnit powerN15 = MeasureUnit.forIdentifier("per-pow15-kilometer");
+        verifySingleUnit(powerN15, MeasureUnit.SIPrefix.KILO, -15, "per-pow15-kilometer");
+
+        try {
+            MeasureUnit.forIdentifier("per-pow16-kilometer");
+            fail("An IllegalArgumentException must be thrown");
+        } catch (IllegalArgumentException e) {
+            // Expecting an exception to be thrown
+        }
+
+        try {
+            powerN15.product(overQuarticKilometer1);
+            fail("An IllegalArgumentException must be thrown");
+        } catch (IllegalArgumentException e) {
+            // Expecting an exception to be thrown
+        }
+    }
+
+    @Test
+    public void TestDimensionlessBehaviour() {
+        MeasureUnit dimensionless = MeasureUnit.forIdentifier("");
+        MeasureUnit dimensionless2 = NoUnit.BASE;
+        MeasureUnit dimensionless3 = null;
+        MeasureUnit dimensionless4 = MeasureUnit.forIdentifier(null);
+
+        assertEquals("dimensionless must be equals", dimensionless, dimensionless2);
+        assertEquals("dimensionless must be equals", dimensionless2, dimensionless3);
+        assertEquals("dimensionless must be equals", dimensionless3, dimensionless4);
+
+        // product(dimensionless)
+        MeasureUnit mile = MeasureUnit.MILE;
+        mile = mile.product(dimensionless);
+        verifySingleUnit(mile, MeasureUnit.SIPrefix.ONE, 1, "mile");
+    }
+
+    private void verifySingleUnit(MeasureUnit singleMeasureUnit, MeasureUnit.SIPrefix prefix, int power, String identifier) {
+        assertEquals(identifier + ": SI prefix", prefix, singleMeasureUnit.getSIPrefix());
+
+        assertEquals(identifier + ": Power", power, singleMeasureUnit.getDimensionality());
+
+        assertEquals(identifier + ": Identifier", identifier, singleMeasureUnit.getIdentifier());
+
+        assertTrue(identifier + ": Constructor", singleMeasureUnit.equals(MeasureUnit.forIdentifier(identifier)));
+
+        assertEquals(identifier + ": Complexity", MeasureUnit.Complexity.SINGLE, singleMeasureUnit.getComplexity());
+    }
+
+
+    // Kilogram is a "base unit", although it's also "gram" with a kilo- prefix.
+    // This tests that it is handled in the preferred manner.
+    @Test
+    public void TestKilogramIdentifier() {
+        // SI unit of mass
+        MeasureUnit kilogram = MeasureUnit.forIdentifier("kilogram");
+        // Metric mass unit
+        MeasureUnit gram = MeasureUnit.forIdentifier("gram");
+        // Microgram: still a built-in type
+        MeasureUnit microgram = MeasureUnit.forIdentifier("microgram");
+        // Nanogram: not a built-in type at this time
+        MeasureUnit nanogram = MeasureUnit.forIdentifier("nanogram");
+
+        assertEquals("parsed kilogram equals built-in kilogram", MeasureUnit.KILOGRAM.getType(),
+                kilogram.getType());
+        assertEquals("parsed kilogram equals built-in kilogram", MeasureUnit.KILOGRAM.getSubtype(),
+                kilogram.getSubtype());
+        assertEquals("parsed gram equals built-in gram", MeasureUnit.GRAM.getType(), gram.getType());
+        assertEquals("parsed gram equals built-in gram", MeasureUnit.GRAM.getSubtype(),
+                gram.getSubtype());
+        assertEquals("parsed microgram equals built-in microgram", MeasureUnit.MICROGRAM.getType(),
+                microgram.getType());
+        assertEquals("parsed microgram equals built-in microgram", MeasureUnit.MICROGRAM.getSubtype(),
+                microgram.getSubtype());
+        assertEquals("nanogram", null, nanogram.getType());
+        assertEquals("nanogram", "nanogram", nanogram.getIdentifier());
+
+        assertEquals("prefix of kilogram", MeasureUnit.SIPrefix.KILO, kilogram.getSIPrefix());
+        assertEquals("prefix of gram", MeasureUnit.SIPrefix.ONE, gram.getSIPrefix());
+        assertEquals("prefix of microgram", MeasureUnit.SIPrefix.MICRO, microgram.getSIPrefix());
+        assertEquals("prefix of nanogram", MeasureUnit.SIPrefix.NANO, nanogram.getSIPrefix());
+
+        MeasureUnit tmp = kilogram.withSIPrefix(MeasureUnit.SIPrefix.MILLI);
+        assertEquals("Kilogram + milli should be milligram, got: " + tmp.getIdentifier(),
+                MeasureUnit.MILLIGRAM.getIdentifier(), tmp.getIdentifier());
+    }
+
+    private void verifyCompoundUnit(
+            MeasureUnit unit,
+            String identifier,
+            String subIdentifiers[],
+            int subIdentifierCount) {
+        assertEquals(identifier + ": Identifier",
+                identifier,
+                unit.getIdentifier());
+
+        assertTrue(identifier + ": Constructor",
+                unit.equals(MeasureUnit.forIdentifier(identifier)));
+
+        assertEquals(identifier + ": Complexity",
+                MeasureUnit.Complexity.COMPOUND,
+                unit.getComplexity());
+
+        List<MeasureUnit> subUnits = unit.splitToSingleUnits();
+        assertEquals(identifier + ": Length", subIdentifierCount, subUnits.size());
+        for (int i = 0; ; i++) {
+            if (i >= subIdentifierCount || i >= subUnits.size()) break;
+            assertEquals(identifier + ": Sub-unit #" + i,
+                    subIdentifiers[i],
+                    subUnits.get(i).getIdentifier());
+            assertEquals(identifier + ": Sub-unit Complexity",
+                    MeasureUnit.Complexity.SINGLE,
+                    subUnits.get(i).getComplexity());
+        }
+    }
+
+    private void verifyMixedUnit(
+            MeasureUnit unit,
+            String identifier,
+            String subIdentifiers[],
+            int subIdentifierCount) {
+        assertEquals(identifier + ": Identifier",
+                identifier,
+                unit.getIdentifier());
+        assertTrue(identifier + ": Constructor",
+                unit.equals(MeasureUnit.forIdentifier(identifier)));
+
+        assertEquals(identifier + ": Complexity",
+                MeasureUnit.Complexity.MIXED,
+                unit.getComplexity());
+
+        List<MeasureUnit> subUnits = unit.splitToSingleUnits();
+        assertEquals(identifier + ": Length", subIdentifierCount, subUnits.size());
+        for (int i = 0; ; i++) {
+            if (i >= subIdentifierCount || i >= subUnits.size()) break;
+            assertEquals(identifier + ": Sub-unit #" + i,
+                    subIdentifiers[i],
+                    subUnits.get(i).getIdentifier());
+        }
+    }
 }
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitThreadTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitThreadTest.java
index 6869734..a20f620 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitThreadTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitThreadTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 package com.ibm.icu.dev.test.format;
 
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MessagePatternUtilTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MessagePatternUtilTest.java
index 42e4c34..2dd092f 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MessagePatternUtilTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MessagePatternUtilTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011-2012, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MessageRegressionTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MessageRegressionTest.java
index db2b40c..ad67203 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MessageRegressionTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MessageRegressionTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2005-2011, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatDataDrivenTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatDataDrivenTest.java
index 4674e2c..7e4f2fa 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatDataDrivenTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatDataDrivenTest.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.format;
 
 import java.math.BigDecimal;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatJavaCompatilityTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatJavaCompatilityTest.java
index 5b99167..65233c5 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatJavaCompatilityTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatJavaCompatilityTest.java
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.format;
 
 import static org.junit.Assert.assertEquals;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRegistrationTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRegistrationTest.java
index 54feb3b..7f20cb4 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRegistrationTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRegistrationTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java
index 705f5c0..e8b6418 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java
index c4bf06f..fc1a67c 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatSerialTestData.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatSerialTestData.java
index 6461cc2..04ea17a 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatSerialTestData.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatSerialTestData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2004, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatSpecificationTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatSpecificationTest.java
index ca88831..7b0d313 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatSpecificationTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatSpecificationTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
@@ -130,9 +130,7 @@
             DecimalFormatSymbols sym = new DecimalFormatSymbols(ULocale.FRANCE);
             DecimalFormat fmt = new DecimalFormat("¤¤ **#######0", sym);
             fmt.setCurrency(Currency.getInstance("JPY"));
-            if (!logKnownIssue("11025", "Padding broken when used with currencies")) {
-                assertEquals("", "JPY ****433", fmt.format(433.22));
-            }
+            assertEquals("", "JPY ****433", fmt.format(433.22));
         }
         {
             DecimalFormatSymbols sym = new DecimalFormatSymbols(ULocale.US);
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java
index 5d35226..e658c4d 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2016, International Business Machines Corporation and
@@ -679,7 +679,7 @@
     @Test
     public void TestCurrency() {
         String[] DATA = {
-                "fr_CA", "1,50\u00a0$",
+                "fr_CA", "1,50\u00a0$\u00a0CA",
                 "de_DE", "1,50\u00a0\u20AC",
                 "de_DE@currency=DEM", "1,50\u00a0DM",
                 "fr_FR", "1,50\u00a0\u20AC",
@@ -6136,6 +6136,41 @@
             actual = df.format(l);
             assertEquals("Output is wrong for 2, "+i, allExpected[i][1], actual);
         }
+
+        String[] locales = {"en-US", "es"};
+        int[] groupingDigits = {
+          1,
+          DecimalFormat.MINIMUM_GROUPING_DIGITS_AUTO,
+          DecimalFormat.MINIMUM_GROUPING_DIGITS_MIN2
+        };
+        int[] values = {1000, 10000};
+        String[] allExpected2 = {
+          // locale: en-US
+          "1,000", "10,000",  // minimumGroupingDigits = 1
+          "1,000", "10,000",  // minimumGroupingDigits = MINIMUM_GROUPING_DIGITS_AUTO
+          "1000" , "10,000",  // minimumGroupingDigits = MINIMUM_GROUPING_DIGITS_MIN2
+          // locale: es
+          "1.000", "10.000",  // minimumGroupingDigits = 1
+          "1000",  "10.000",  // minimumGroupingDigits = MINIMUM_GROUPING_DIGITS_AUTO
+          "1000",  "10.000"   // minimumGroupingDigits = MINIMUM_GROUPING_DIGITS_MIN2
+        };
+
+        int i = 0;
+        for (String locale : locales) {
+          for (int minimumGroupingDigits : groupingDigits) {
+            for (int value : values) {
+              NumberFormat f = NumberFormat.getInstance(new ULocale(locale));
+              df = (DecimalFormat) f;
+              df.setMinimumGroupingDigits(minimumGroupingDigits);
+              String actual = df.format(value);
+              String expected = allExpected2[i++];
+              assertEquals("Output is wrong for " + value +
+                  " locale=" + locale + " minimumGroupingDigits=" + minimumGroupingDigits,
+                  expected, actual);
+            }
+          }
+        }
+
     }
 
     @Test
@@ -6794,4 +6829,94 @@
         DecimalFormat decimalFormat = (DecimalFormat) NumberFormat.getInstance(ULocale.US, NumberFormat.PLURALCURRENCYSTYLE);
         assertEquals("Currency pattern", "#,##0.00 ¤¤¤", decimalFormat.toPattern());
     }
+
+    @Test
+    public void test13733_StrictAndLenient() {
+        Object[][] cases = { {"CA$ 12", "¤ 0", 12, 12},
+                {"CA$12", "¤0", 12, 12},
+                {"CAD 12", "¤¤ 0", 12, 12},
+                {"12 CAD", "0 ¤¤", 12, 12},
+                {"12 Canadian dollars", "0 ¤¤¤", 12, 12},
+                {"$12 ", "¤¤¤¤0", 12, 12},
+                {"12$", "0¤¤¤¤", 12, 12},
+                {"CA$ 12", "¤0", 0, 12},
+                {"CA$ 12", "0 ¤¤", 0, 12},
+                {"CA$ 12", "0 ¤¤¤", 0, 12},
+                {"CA$ 12", "¤¤¤¤0", 0, 12},
+                {"CA$ 12", "0¤¤¤¤", 0, 12},
+                {"CA$12", "¤ 0", 0, 12},
+                {"CA$12", "¤¤ 0", 0, 12},
+                {"CA$12", "0 ¤¤", 0, 12},
+                {"CA$12", "0 ¤¤¤", 0, 12},
+                {"CA$12", "0¤¤¤¤", 0, 12},
+                {"CAD 12", "¤0", 0, 12},
+                {"CAD 12", "0 ¤¤", 0, 12},
+                {"CAD 12", "0 ¤¤¤", 0, 12},
+                {"CAD 12", "¤¤¤¤0", 0, 12},
+                {"CAD 12", "0¤¤¤¤", 0, 12},
+                {"12 CAD", "¤ 0", 0, 12},
+                {"12 CAD", "¤0", 0, 12},
+                {"12 CAD", "¤¤ 0", 0, 12},
+                {"12 CAD", "¤¤¤¤0", 0, 12},
+                {"12 CAD", "0¤¤¤¤", 0, 12},
+                {"12 Canadian dollars", "¤ 0", 0, 12},
+                {"12 Canadian dollars", "¤0", 0, 12},
+                {"12 Canadian dollars", "¤¤ 0", 0, 12},
+                {"12 Canadian dollars", "¤¤¤¤0", 0, 12},
+                {"12 Canadian dollars", "0¤¤¤¤", 0, 12},
+                {"$12 ", "¤ 0", 0, 12},
+                {"$12 ", "¤¤ 0", 0, 12},
+                {"$12 ", "0 ¤¤", 0, 12},
+                {"$12 ", "0 ¤¤¤", 0, 12},
+                {"$12 ", "0¤¤¤¤", 0, 12},
+                {"12$", "¤ 0", 0, 12},
+                {"12$", "¤0", 0, 12},
+                {"12$", "¤¤ 0", 0, 12},
+                {"12$", "0 ¤¤", 0, 12},
+                {"12$", "0 ¤¤¤", 0, 12},
+                {"12$", "¤¤¤¤0", 0, 12} };
+
+        for (Object[] cas : cases) {
+            String inputString = (String) cas[0];
+            String patternString = (String) cas[1];
+            int expectedStrictParse = (int) cas[2];
+            int expectedLenientParse = (int) cas[3];
+
+            int parsedStrictValue = 0;
+            int parsedLenientValue = 0;
+            ParsePosition ppos = new ParsePosition(0);
+            DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(ULocale.ENGLISH);
+            DecimalFormat df = new DecimalFormat(patternString, dfs);
+
+            df.setParseStrict(true);
+            CurrencyAmount ca_strict = df.parseCurrency(inputString, ppos);
+            if (null != ca_strict) {
+                parsedStrictValue = ca_strict.getNumber().intValue();
+            }
+            assertEquals("Strict parse of " + inputString + " using " + patternString,
+                    parsedStrictValue, expectedStrictParse);
+
+            ppos.setIndex(0);
+            df.setParseStrict(false);
+            CurrencyAmount ca_lenient = df.parseCurrency(inputString, ppos);
+            if (null != ca_lenient) {
+                parsedLenientValue = ca_lenient.getNumber().intValue();
+            }
+            assertEquals("Strict parse of " + inputString + " using " + patternString,
+                    parsedLenientValue, expectedLenientParse);
+        }
+    }
+
+    @Test
+    public void Test21232_ParseTimeout() throws ParseException {
+        DecimalFormat df = new DecimalFormat();
+        StringBuilder input = new StringBuilder();
+        input.append("4444444444444444444444444444444444444444");
+        for (int i = 0; i < 8; i++) {
+            input.append(input);
+        }
+        assertEquals("Long input of digits", 10240, input.length());
+        df.parse(input.toString());
+        // Should not hang
+    }
 }
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt
index 18cb765..25eeb91 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt
@@ -1,6 +1,6 @@
 #######################################################################
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #######################################################################
 #######################################################################
 # Copyright (c) 2004, 2012 International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberRegressionTests.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberRegressionTests.java
index e9e89fd..ad8cfde 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberRegressionTests.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberRegressionTests.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*****************************************************************************************
  *
  * Copyright (C) 1996-2016, International Business Machines
@@ -552,7 +552,7 @@
         String expectedPercent = "-578 998%";
     */
         String expectedDefault = "-5\u00a0789,988";
-        String expectedCurrency = "5\u00a0789,99\u00a0$";
+        String expectedCurrency = "5\u00a0789,99\u00a0$\u00a0CA";
         String expectedPercent = "-578\u00a0999\u00A0%";
 
         formatter = NumberFormat.getNumberInstance(Locale.CANADA_FRENCH);
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralFormatTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralFormatTest.java
index 5c9c660..943cbff 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralFormatTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralFormatTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralFormatUnitTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralFormatUnitTest.java
index 3cb3a04..0b22c8e 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralFormatUnitTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralFormatUnitTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2016, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralRangesTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralRangesTest.java
index 8b05de3..2d6d667 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralRangesTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralRangesTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2016, International Business Machines Corporation and
@@ -10,7 +10,6 @@
 
 import java.util.Arrays;
 
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -18,12 +17,14 @@
 import com.ibm.icu.dev.test.TestFmwk;
 import com.ibm.icu.impl.SimpleFormatterImpl;
 import com.ibm.icu.impl.StandardPlural;
+import com.ibm.icu.impl.number.range.StandardPluralRanges;
+import com.ibm.icu.number.FormattedNumberRange;
+import com.ibm.icu.number.NumberFormatter;
+import com.ibm.icu.number.NumberFormatter.UnitWidth;
+import com.ibm.icu.number.NumberRangeFormatter;
 import com.ibm.icu.text.MeasureFormat;
 import com.ibm.icu.text.MeasureFormat.FormatWidth;
-import com.ibm.icu.text.PluralRanges;
-import com.ibm.icu.text.PluralRules.Factory;
 import com.ibm.icu.util.Currency;
-import com.ibm.icu.util.Measure;
 import com.ibm.icu.util.MeasureUnit;
 import com.ibm.icu.util.ULocale;
 
@@ -37,7 +38,7 @@
     public void TestLocaleData() {
         String[][] tests = {
                 {"de", "other", "one", "one"},
-                {"xxx", "few", "few", "few" },
+                {"xxx", "other", "other", "other" },
                 {"de", "one", "other", "other"},
                 {"de", "other", "one", "one"},
                 {"de", "other", "other", "other"},
@@ -50,9 +51,9 @@
             final StandardPlural start = StandardPlural.fromString(test[1]);
             final StandardPlural end = StandardPlural.fromString(test[2]);
             final StandardPlural expected = StandardPlural.fromString(test[3]);
-            final PluralRanges pluralRanges = Factory.getDefaultFactory().getPluralRanges(locale);
+            final StandardPluralRanges pluralRanges = StandardPluralRanges.forLocale(locale);
 
-            StandardPlural actual = pluralRanges.get(start, end);
+            StandardPlural actual = pluralRanges.resolve(start, end);
             assertEquals("Deriving range category", expected, actual);
         }
     }
@@ -73,30 +74,28 @@
         }
     }
 
-    // TODO: Re-enable this test when #12454 is fixed.
-    @Ignore("http://bugs.icu-project.org/trac/ticket/12454")
     @Test
     public void TestFormatting() {
         Object[][] tests = {
-                {0.0, 1.0, ULocale.FRANCE, FormatWidth.WIDE, MeasureUnit.FAHRENHEIT, "0–1 degré Fahrenheit"},
-                {1.0, 2.0, ULocale.FRANCE, FormatWidth.WIDE, MeasureUnit.FAHRENHEIT, "1–2 degrés Fahrenheit"},
-                {3.1, 4.25, ULocale.FRANCE, FormatWidth.SHORT, MeasureUnit.FAHRENHEIT, "3,1–4,25 °F"},
-                {3.1, 4.25, ULocale.ENGLISH, FormatWidth.SHORT, MeasureUnit.FAHRENHEIT, "3.1–4.25°F"},
-                {3.1, 4.25, ULocale.CHINESE, FormatWidth.WIDE, MeasureUnit.INCH, "3.1-4.25英寸"},
-                {0.0, 1.0, ULocale.ENGLISH, FormatWidth.WIDE, MeasureUnit.INCH, "0–1 inches"},
+                {0.0, 1.0, ULocale.FRANCE, UnitWidth.FULL_NAME, MeasureUnit.FAHRENHEIT, "0–1\u00A0degré Fahrenheit"},
+                {1.0, 2.0, ULocale.FRANCE, UnitWidth.FULL_NAME, MeasureUnit.FAHRENHEIT, "1–2\u00A0degrés Fahrenheit"},
+                {3.1, 4.25, ULocale.FRANCE, UnitWidth.SHORT, MeasureUnit.FAHRENHEIT, "3,1–4,25\u202F°F"},
+                {3.1, 4.25, ULocale.ENGLISH, UnitWidth.SHORT, MeasureUnit.FAHRENHEIT, "3.1–4.25°F"},
+                {3.1, 4.25, ULocale.CHINESE, UnitWidth.FULL_NAME, MeasureUnit.INCH, "3.1-4.25英寸"},
+                {0.0, 1.0, ULocale.ENGLISH, UnitWidth.FULL_NAME, MeasureUnit.INCH, "0–1 inches"},
 
-                {0.0, 1.0, ULocale.ENGLISH, FormatWidth.NARROW, Currency.getInstance("EUR"), "€0.00–1.00"},
-                {0.0, 1.0, ULocale.FRENCH, FormatWidth.NARROW, Currency.getInstance("EUR"), "0,00–1,00 €"},
-                {0.0, 100.0, ULocale.FRENCH, FormatWidth.NARROW, Currency.getInstance("JPY"), "0–100\u00a0JPY"},
+                {0.0, 1.0, ULocale.ENGLISH, UnitWidth.NARROW, Currency.getInstance("EUR"), "€0.00 – €1.00"},
+                {0.0, 1.0, ULocale.FRENCH, UnitWidth.NARROW, Currency.getInstance("EUR"), "0,00–1,00 €"},
+                {0.0, 100.0, ULocale.FRENCH, UnitWidth.NARROW, Currency.getInstance("JPY"), "0–100\u00a0¥"},
 
-                {0.0, 1.0, ULocale.ENGLISH, FormatWidth.SHORT, Currency.getInstance("EUR"), "EUR0.00–1.00"},
-                {0.0, 1.0, ULocale.FRENCH, FormatWidth.SHORT, Currency.getInstance("EUR"), "0,00–1,00\u00a0EUR"},
-                {0.0, 100.0, ULocale.FRENCH, FormatWidth.SHORT, Currency.getInstance("JPY"), "0–100\u00a0JPY"},
+                {0.0, 1.0, ULocale.ENGLISH, UnitWidth.SHORT, Currency.getInstance("EUR"), "€0.00 – €1.00"},
+                {0.0, 1.0, ULocale.FRENCH, UnitWidth.SHORT, Currency.getInstance("EUR"), "0,00–1,00\u00a0€"},
+                {0.0, 100.0, ULocale.FRENCH, UnitWidth.SHORT, Currency.getInstance("JPY"), "0–100\u00a0JPY"},
 
-                {0.0, 1.0, ULocale.ENGLISH, FormatWidth.WIDE, Currency.getInstance("EUR"), "0.00–1.00 euros"},
-                {0.0, 1.0, ULocale.FRENCH, FormatWidth.WIDE, Currency.getInstance("EUR"), "0,00–1,00 euro"},
-                {0.0, 2.0, ULocale.FRENCH, FormatWidth.WIDE, Currency.getInstance("EUR"), "0,00–2,00 euros"},
-                {0.0, 100.0, ULocale.FRENCH, FormatWidth.WIDE, Currency.getInstance("JPY"), "0–100 yens japonais"},
+                {0.0, 1.0, ULocale.ENGLISH, UnitWidth.FULL_NAME, Currency.getInstance("EUR"), "0.00–1.00 euros"},
+                {0.0, 1.0, ULocale.FRENCH, UnitWidth.FULL_NAME, Currency.getInstance("EUR"), "0,00–1,00 euro"},
+                {0.0, 2.0, ULocale.FRENCH, UnitWidth.FULL_NAME, Currency.getInstance("EUR"), "0,00–2,00 euros"},
+                {0.0, 100.0, ULocale.FRENCH, UnitWidth.FULL_NAME, Currency.getInstance("JPY"), "0–100 yens japonais"},
         };
         int i = 0;
         for (Object[] test : tests) {
@@ -104,34 +103,15 @@
             double low = (Double) test[0];
             double high = (Double) test[1];
             final ULocale locale = (ULocale) test[2];
-            final FormatWidth width = (FormatWidth) test[3];
+            final UnitWidth unitWidth = (UnitWidth) test[3];
             final MeasureUnit unit = (MeasureUnit) test[4];
-            final Object expected = test[5];
+            final String expected = (String) test[5];
 
-            MeasureFormat mf = MeasureFormat.getInstance(locale, width);
-            Object actual;
-            try {
-                // TODO: Fix this when range formatting is added again.
-                // To let the code compile, the following line does list formatting.
-                actual = mf.formatMeasures(new Measure(low, unit), new Measure(high, unit));
-            } catch (Exception e) {
-                actual = e.getClass();
-            }
-            assertEquals(i + " Formatting unit", expected, actual);
-        }
-    }
-
-    @Test
-    public void TestBasic() {
-        PluralRanges a = new PluralRanges();
-        a.add(StandardPlural.ONE, StandardPlural.OTHER, StandardPlural.ONE);
-        StandardPlural actual = a.get(StandardPlural.ONE, StandardPlural.OTHER);
-        assertEquals("range", StandardPlural.ONE, actual);
-        a.freeze();
-        try {
-            a.add(StandardPlural.ONE, StandardPlural.ONE, StandardPlural.ONE);
-            errln("Failed to cause exception on frozen instance");
-        } catch (UnsupportedOperationException e) {
+            FormattedNumberRange actual = NumberRangeFormatter.with()
+                .numberFormatterBoth(NumberFormatter.with().unit(unit).unitWidth(unitWidth))
+                .locale(locale)
+                .formatRange(low, high);
+            assertEquals(i + " Formatting unit", expected, actual.toString());
         }
     }
 }
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralRulesFactory.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralRulesFactory.java
index 99ae42f..ca112e8 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralRulesFactory.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralRulesFactory.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013, Google Inc, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralRulesTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralRulesTest.java
index b67000e..bca6fc9 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralRulesTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralRulesTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2015, International Business Machines Corporation and
@@ -42,8 +42,10 @@
 import com.ibm.icu.impl.Relation;
 import com.ibm.icu.impl.Utility;
 import com.ibm.icu.number.FormattedNumber;
+import com.ibm.icu.number.FormattedNumberRange;
 import com.ibm.icu.number.LocalizedNumberFormatter;
 import com.ibm.icu.number.NumberFormatter;
+import com.ibm.icu.number.NumberRangeFormatter;
 import com.ibm.icu.number.Precision;
 import com.ibm.icu.number.UnlocalizedNumberFormatter;
 import com.ibm.icu.text.NumberFormat;
@@ -188,6 +190,35 @@
         checkOldSamples(description, test, "other", SampleType.DECIMAL, 99d, 99.1, 99.2d, 999d);
     }
 
+    /**
+     * This test is for the support of X.YeZ scientific notation of numbers in
+     * the plural sample string.
+     */
+    @Test
+    public void testSamplesWithExponent() {
+        String description = "one: i = 0,1 @integer 0, 1, 1e5 @decimal 0.0~1.5, 1.1e5; "
+                + "many: e = 0 and i != 0 and i % 1000000 = 0 and v = 0 or e != 0..5"
+                + " @integer 1000000, 2e6, 3e6, 4e6, 5e6, 6e6, 7e6, … @decimal 2.1e6, 3.1e6, 4.1e6, 5.1e6, 6.1e6, 7.1e6, …; "
+                + "other:  @integer 2~17, 100, 1000, 10000, 100000, 2e5, 3e5, 4e5, 5e5, 6e5, 7e5, …"
+                + " @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 2.1e5, 3.1e5, 4.1e5, 5.1e5, 6.1e5, 7.1e5, …"
+                ;
+        // Creating the PluralRules object means being able to parse numbers
+        // like 1e5 and 1.1e5
+        PluralRules test = PluralRules.createRules(description);
+        checkNewSamples(description, test, "one", PluralRules.SampleType.INTEGER, "@integer 0, 1, 1e5", true,
+                new FixedDecimal(0));
+        checkNewSamples(description, test, "one", PluralRules.SampleType.DECIMAL, "@decimal 0.0~1.5, 1.1e5", true,
+                new FixedDecimal(0, 1));
+        checkNewSamples(description, test, "many", PluralRules.SampleType.INTEGER, "@integer 1000000, 2e6, 3e6, 4e6, 5e6, 6e6, 7e6, …", false,
+                new FixedDecimal(1000000));
+        checkNewSamples(description, test, "many", PluralRules.SampleType.DECIMAL, "@decimal 2.1e6, 3.1e6, 4.1e6, 5.1e6, 6.1e6, 7.1e6, …", false,
+                FixedDecimal.createWithExponent(2.1, 1, 6));
+        checkNewSamples(description, test, "other", PluralRules.SampleType.INTEGER, "@integer 2~17, 100, 1000, 10000, 100000, 2e5, 3e5, 4e5, 5e5, 6e5, 7e5, …", false,
+                new FixedDecimal(2));
+        checkNewSamples(description, test, "other", PluralRules.SampleType.DECIMAL, "@decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 2.1e5, 3.1e5, 4.1e5, 5.1e5, 6.1e5, 7.1e5, …", false,
+                new FixedDecimal(2.0, 1));
+    }
+
     public void checkOldSamples(String description, PluralRules rules, String keyword, SampleType sampleType,
             Double... expected) {
         Collection<Double> oldSamples = rules.getSamples(keyword, sampleType);
@@ -368,7 +399,10 @@
                             }
                             String old = collisionTest.get(item);
                             if (old != null) {
-                                errln(locale + "\tNon-unique rules: " + item + " => " + old + " & " + foundKeyword);
+                                if (!locale.getLanguage().equals("fr") ||
+                                        !logKnownIssue("21328", "fr Non-unique rules: 1e6 => one & many")) {
+                                    errln(locale + "\tNon-unique rules: " + item + " => " + old + " & " + foundKeyword);
+                                }
                                 rule.select(item);
                             } else {
                                 collisionTest.put(item, foundKeyword);
@@ -678,6 +712,10 @@
             uniqueRuleSet.add(PluralRules.getFunctionalEquivalent(locale, null));
         }
         for (ULocale locale : uniqueRuleSet) {
+            if (locale.getLanguage().equals("fr") &&
+                    logKnownIssue("21299", "PluralRules::getSamples cannot distinguish 1e5 from 100000")) {
+                continue;
+            }
             PluralRules rules = factory.forLocale(locale);
             logln("\nlocale: " + (locale == ULocale.ROOT ? "root" : locale.toString()) + ", rules: " + rules);
             Set<String> keywords = rules.getKeywords();
@@ -866,7 +904,7 @@
                     for (String keyword : rules.getKeywords()) {
                         boolean isLimited = rules.isLimited(keyword, sampleType);
                         boolean computeLimited = rules.computeLimited(keyword, sampleType);
-                        if (!keyword.equals("other")) {
+                        if (!keyword.equals("other") && !(locale.getLanguage().equals("fr") && logKnownIssue("ICU-21270", "fr plurals many case computeLimited == isLimited"))) {
                             assertEquals(getAssertMessage("computeLimited == isLimited", locale, rules, keyword),
                                     computeLimited, isLimited);
                         }
@@ -968,7 +1006,7 @@
         for (Object[] caseDatum : casesData) {
             String skeleton = (String) caseDatum[0];
             int input = (int) caseDatum[1];
-            String expectedString = (String) caseDatum[2];
+            // String expectedString = (String) caseDatum[2];
             String expectPluralRuleKeyword = (String) caseDatum[3];
 
             String actualPluralRuleKeyword =
@@ -1112,7 +1150,7 @@
 
             // [one, other]
             "am,bn,fa,gu,hi,kn,mr,zu; one: @integer 0, 1; other: @integer 2~17, 100, 1000, 10000, 100000, 1000000, …",
-            "ff,fr,hy,kab; one: @integer 0, 1; other: @integer 2~17, 100, 1000, 10000, 100000, 1000000, …",
+            "ff,hy,kab; one: @integer 0, 1; other: @integer 2~17, 100, 1000, 10000, 100000, 1000000, …",
             "ast,ca,de,en,et,fi,fy,gl,it,ji,nl,sv,sw,ur,yi; one: @integer 1; other: @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, …",
             "pt; one: @integer 1; other: @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, …",
             "si; one: @integer 0, 1; other: @integer 2~17, 100, 1000, 10000, 100000, 1000000, …",
@@ -1133,6 +1171,9 @@
             // [one, two, other]
             "iu,naq,se,sma,smi,smj,smn,sms; one: @integer 1; two: @integer 2; other: @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, …",
 
+            // [one, many, other]
+            "fr; one: @integer 0, 1; many: @integer 1000000; other: @integer 2~17, 100, 1000, 10000, 100000, …",
+
             // [one, few, other]
             "shi; one: @integer 0, 1; few: @integer 2~10; other: @integer 11~26, 100, 1000, 10000, 100000, 1000000, …",
             "mo,ro; one: @integer 1; few: @integer 0, 2~16, 102, 1002, …; other: @integer 20~35, 100, 1000, 10000, 100000, 1000000, …",
@@ -1243,7 +1284,7 @@
      * @return
      */
     private String showBytes(byte[] contents) {
-        StringBuilder b = new StringBuilder('[');
+        StringBuilder b = new StringBuilder("[");
         for (int i = 0; i < contents.length; ++i) {
             int item = contents[i] & 0xFF;
             if (item >= 0x20 && item <= 0x7F) {
@@ -1276,4 +1317,37 @@
         Locale.setDefault(Locale.GERMAN);
         assertEquals("FixedDecimal toString", expected, fd.toString());
     }
+
+    @Test
+    public void testSelectRange() {
+        int d1 = 102;
+        int d2 = 201;
+        ULocale locale = new ULocale("sl");
+
+        // Locale sl has interesting data: one + two => few
+        FormattedNumberRange range = NumberRangeFormatter.withLocale(locale).formatRange(d1, d2);
+        PluralRules rules = PluralRules.forLocale(locale);
+
+        // For testing: get plural form of first and second numbers
+        FormattedNumber a = NumberFormatter.withLocale(locale).format(d1);
+        FormattedNumber b = NumberFormatter.withLocale(locale).format(d2);
+        assertEquals("First plural", "two", rules.select(a));
+        assertEquals("Second plural", "one", rules.select(b));
+
+        // Check the range plural now:
+        String form = rules.select(range);
+        assertEquals("Range plural", "few", form);
+
+        // Test when plural ranges data is unavailable:
+        PluralRules bare = PluralRules.createRules("a: i = 0,1");
+        try {
+            form = bare.select(range);
+            fail("Expected exception");
+        } catch (UnsupportedOperationException e) {}
+
+        // However, they should not throw when no data is available for a language.
+        PluralRules xyz = PluralRules.forLocale(new ULocale("xyz"));
+        form = xyz.select(range);
+        assertEquals("Fallback form", "other", form);
+    }
 }
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RBNFParseTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RBNFParseTest.java
index cef569a..564a69e 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RBNFParseTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RBNFParseTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2013, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RbnfRoundTripTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RbnfRoundTripTest.java
index 5ba07e0..964fd8d 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RbnfRoundTripTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RbnfRoundTripTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RbnfTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RbnfTest.java
index 0dbe81e..c062f5e 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RbnfTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RbnfTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
@@ -296,6 +296,17 @@
         };
 
         doTest(formatter, testData, true);
+
+        String[][] testDataLenient = {
+                { "fifty-7", "57" },
+                { " fifty-7", "57" },
+                { "  fifty-7", "57" },
+                { "2 thousand six    HUNDRED fifty-7", "2,657" },
+                { "fifteen hundred and zero", "1,500" },
+                { "FOurhundred     thiRTY six", "436" }
+        };
+
+        doParsingTest(formatter, testDataLenient, true);
     }
 
     /**
@@ -350,6 +361,12 @@
         };
 
         doTest(formatter, testData, true);
+
+        String[][] testDataLenient = {
+                { "2-51-33", "10,293" },
+        };
+
+        doParsingTest(formatter, testDataLenient, true);
     }
 
     /**
@@ -425,6 +442,13 @@
         };
 
         doTest(formatter, testData, true);
+
+        String[][] testDataLenient = {
+                { "trente-et-un", "31" },
+                { "un cent quatre vingt dix huit", "198" },
+        };
+
+        doParsingTest(formatter, testDataLenient, true);
     }
 
     /**
@@ -529,6 +553,12 @@
         };
 
         doTest(formatter, testData, true);
+
+        String[][] testDataLenient = {
+                { "ein Tausend sechs Hundert fuenfunddreissig", "1,635" },
+        };
+
+        doParsingTest(formatter, testDataLenient, true);
     }
 
     /**
@@ -1117,6 +1147,10 @@
                 " (ordinal) "
                 //" (duration) " // English only
         };
+        boolean[] lenientMode = {
+                false, // non-lenient mode
+                true // lenient mode
+        };
         double[] numbers = {45.678, 1, 2, 10, 11, 100, 110, 200, 1000, 1111, -1111};
         int count = numbers.length;
         Random r = (count <= numbers.length ? null : createRandom());
@@ -1142,25 +1176,25 @@
                         logln(loc.getName() + names[j] + "success format: " + n + " -> " + s);
                     }
 
-                    try {
-                        // RBNF parse is extremely slow when lenient option is enabled.
-                        // non-lenient parse
-                        fmt.setLenientParseMode(false);
-                        Number num = fmt.parse(s);
-                        if (isVerbose()) {
-                            logln(loc.getName() + names[j] + "success parse: " + s + " -> " + num);
+                    for (int k = 0; k < lenientMode.length; k++) {
+                        try {
+                            fmt.setLenientParseMode(lenientMode[k]);
+                            Number num = fmt.parse(s);
+                            if (isVerbose()) {
+                                logln(loc.getName() + names[j] + "success parse: " + s + " -> " + num);
+                            }
+                            if (j != 0) {
+                                // TODO: Fix the ordinal rules.
+                                continue;
+                            }
+                            if (n != num.doubleValue()) {
+                                errors.append("\n" + loc + names[j] + "got " + num + " expected " + n);
+                            }
+                        } catch (ParseException pe) {
+                            String msg = loc.getName() + names[j] + "ERROR:" + pe.getMessage();
+                            logln(msg);
+                            errors.append("\n" + msg);
                         }
-                        if (j != 0) {
-                            // TODO: Fix the ordinal rules.
-                            continue;
-                        }
-                        if (n != num.doubleValue()) {
-                            errors.append("\n" + loc + names[j] + "got " + num + " expected " + n);
-                        }
-                    } catch (ParseException pe) {
-                        String msg = loc.getName() + names[j] + "ERROR:" + pe.getMessage();
-                        logln(msg);
-                        errors.append("\n" + msg);
                     }
                 }
             }
@@ -1170,10 +1204,12 @@
         }
     }
 
-    void doTest(RuleBasedNumberFormat formatter, String[][] testData,
-                boolean testParsing) {
-        //        NumberFormat decFmt = NumberFormat.getInstance(Locale.US);
-        NumberFormat decFmt = new DecimalFormat("#,###.################");
+    NumberFormat createDecimalFormatter() {
+        return new DecimalFormat("#,###.################");
+    }
+
+    void doTest(RuleBasedNumberFormat formatter, String[][] testData, boolean testParsing) {
+        NumberFormat decFmt = createDecimalFormatter();
         try {
             for (int i = 0; i < testData.length; i++) {
                 String number = testData[i][0];
@@ -1207,6 +1243,35 @@
         }
     }
 
+    void doParsingTest(RuleBasedNumberFormat formatter, String[][] testData, boolean lenient) {
+        NumberFormat decFmt = createDecimalFormatter();
+
+        if (lenient) {
+            formatter.setLenientParseMode(true);
+        }
+        for (int i = 0; i < testData.length; i++) {
+            try {
+                String s = testData[i][0];
+                Number expectedNumber = decFmt.parse(testData[i][1]);
+                if (isVerbose()) {
+                    logln("test[" + i + "] spellout value: (" + s + ") target: " + expectedNumber);
+                }
+
+                Number num = formatter.parse(s);
+                if (isVerbose()) {
+                    logln("success parse: (" + s + ") -> " + num);
+                }
+
+                if (expectedNumber.doubleValue() != num.doubleValue()) {
+                    errln("\nParsing (" + s + ") failed: got " + num + " expected " + expectedNumber);
+                }
+            } catch (Throwable e) {
+                e.printStackTrace();
+                errln("Test failed with exception: " + e.toString());
+            }
+        }
+    }
+
     /* Tests the method
      *      public boolean equals(Object that)
      */
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RelativeDateTimeFormatterTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RelativeDateTimeFormatterTest.java
index 63f0732..2080f01 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RelativeDateTimeFormatterTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/RelativeDateTimeFormatterTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2016, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/ScientificNumberFormatterTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/ScientificNumberFormatterTest.java
index 02357e4..005079e 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/ScientificNumberFormatterTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/ScientificNumberFormatterTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/SelectFormatAPITest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/SelectFormatAPITest.java
index 55cb178..78c9c69 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/SelectFormatAPITest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/SelectFormatAPITest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (c) 2004-2011, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/SelectFormatUnitTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/SelectFormatUnitTest.java
index e8b770c..fb983a9 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/SelectFormatUnitTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/SelectFormatUnitTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (c) 2004-2011, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/TestMessageFormat.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/TestMessageFormat.java
index 10d6500..daaca18 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/TestMessageFormat.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/TestMessageFormat.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2004-2016, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/TimeUnitTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/TimeUnitTest.java
index 1e392ff..2fd013a 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/TimeUnitTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/TimeUnitTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/TimeZoneAliases.txt b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/TimeZoneAliases.txt
index d8efec5..c7a8432 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/TimeZoneAliases.txt
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/TimeZoneAliases.txt
@@ -1,6 +1,6 @@
 #----------------------------------------------------------------------
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #----------------------------------------------------------------------
 #----------------------------------------------------------------------
 # Copyright (c) 2004, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java
index f1a13fd..71a33cd 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ********************************************************************************
  * Copyright (C) 2007-2016, Google, International Business Machines Corporation
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/WriteNumberFormatSerialTestData.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/WriteNumberFormatSerialTestData.java
index 7c6500b..0ea3c99 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/WriteNumberFormatSerialTestData.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/WriteNumberFormatSerialTestData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/plurals.txt b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/plurals.txt
index d450c83..e33c1ab 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/plurals.txt
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/plurals.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html#License
+# Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html
 # Copyright (C) 2013, Google Inc, International Business Machines Corporation and others
 af	0 dae
 af	0.00 dae
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/CSCharacterIteratorTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/CSCharacterIteratorTest.java
index 56523bd..4f1059a 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/CSCharacterIteratorTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/CSCharacterIteratorTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 package com.ibm.icu.dev.test.impl;
 
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/CacheTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/CacheTest.java
index 7f8fa1f..8e0bed7 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/CacheTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/CacheTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2016, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/StringSegmentTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/StringSegmentTest.java
index 179e093..1a2baf6 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/StringSegmentTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/StringSegmentTest.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.impl;
 
 import static org.junit.Assert.assertEquals;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/UnitsTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/UnitsTest.java
new file mode 100644
index 0000000..564debe
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/UnitsTest.java
@@ -0,0 +1,386 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package com.ibm.icu.dev.test.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.MathContext;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.impl.Pair;
+import com.ibm.icu.impl.units.ComplexUnitsConverter;
+import com.ibm.icu.impl.units.ConversionRates;
+import com.ibm.icu.impl.units.MeasureUnitImpl;
+import com.ibm.icu.impl.units.UnitConverter;
+import com.ibm.icu.impl.units.UnitsRouter;
+import com.ibm.icu.util.Measure;
+import com.ibm.icu.util.MeasureUnit;
+
+
+public class UnitsTest {
+
+    public static boolean compareTwoBigDecimal(BigDecimal expected, BigDecimal actual, BigDecimal delta) {
+        BigDecimal diff =
+                expected.abs().compareTo(BigDecimal.ZERO) < 1 ?
+                        expected.subtract(actual).abs() :
+                        (expected.subtract(actual).divide(expected, MathContext.DECIMAL128)).abs();
+
+        if (diff.compareTo(delta) == -1) return true;
+        return false;
+    }
+
+    @Test
+    public void testComplexUnitsConverter() {
+        ConversionRates rates = new ConversionRates();
+        MeasureUnit input = MeasureUnit.FOOT;
+        MeasureUnit output = MeasureUnit.forIdentifier("foot-and-inch");
+        final MeasureUnitImpl inputImpl = MeasureUnitImpl.forIdentifier(input.getIdentifier());
+        final MeasureUnitImpl outputImpl = MeasureUnitImpl.forIdentifier(output.getIdentifier());
+        ComplexUnitsConverter converter = new ComplexUnitsConverter(inputImpl, outputImpl, rates);
+
+        // Significantly less than 2.0.
+        List<Measure> measures = converter.convert(BigDecimal.valueOf(1.9999), null);
+        assertEquals("measures length", 2, measures.size());
+        assertEquals("1.9999: measures[0] value", BigDecimal.valueOf(1), measures.get(0).getNumber());
+        assertEquals("1.9999: measures[0] unit", MeasureUnit.FOOT.getIdentifier(),
+                measures.get(0).getUnit().getIdentifier());
+
+        assertTrue("1.9999: measures[1] value", compareTwoBigDecimal(BigDecimal.valueOf(11.9988),
+                BigDecimal.valueOf(measures.get(1).getNumber().doubleValue()), BigDecimal.valueOf(0.0001)));
+        assertEquals("1.9999: measures[1] unit", MeasureUnit.INCH.getIdentifier(),
+                measures.get(1).getUnit().getIdentifier());
+
+        // TODO(icu-units#100): consider factoring out the set of tests to make
+        // this function more data-driven, *after* dealing appropriately with
+        // the C++ memory leaks that can be demonstrated by the C++ version of
+        // this code.
+
+        // A minimal nudge under 2.0.
+        List<Measure> measures2 =
+            converter.convert(BigDecimal.valueOf(2.0).subtract(ComplexUnitsConverter.EPSILON), null);
+        assertEquals("measures length", 2, measures2.size());
+        assertEquals("1 - eps: measures[0] value", BigDecimal.valueOf(2), measures2.get(0).getNumber());
+        assertEquals("1 - eps: measures[0] unit", MeasureUnit.FOOT.getIdentifier(),
+                measures2.get(0).getUnit().getIdentifier());
+        assertEquals("1 - eps: measures[1] value", BigDecimal.ZERO, measures2.get(1).getNumber());
+        assertEquals("1 - eps: measures[1] unit", MeasureUnit.INCH.getIdentifier(),
+                measures2.get(1).getUnit().getIdentifier());
+
+        // Testing precision with meter and light-year. 1e-16 light years is
+        // 0.946073 meters, and double precision can provide only ~15 decimal
+        // digits, so we don't expect to get anything less than 1 meter.
+
+        // An epsilon's nudge under one light-year: should give 1 ly, 0 m.
+        input = MeasureUnit.LIGHT_YEAR;
+        output = MeasureUnit.forIdentifier("light-year-and-meter");
+        final MeasureUnitImpl inputImpl3 = MeasureUnitImpl.forIdentifier(input.getIdentifier());
+        final MeasureUnitImpl outputImpl3 = MeasureUnitImpl.forIdentifier(output.getIdentifier());
+
+        ComplexUnitsConverter converter3 = new ComplexUnitsConverter(inputImpl3, outputImpl3, rates);
+
+        List<Measure> measures3 =
+            converter3.convert(BigDecimal.valueOf(2.0).subtract(ComplexUnitsConverter.EPSILON), null);
+        assertEquals("measures length", 2, measures3.size());
+        assertEquals("light-year test: measures[0] value", BigDecimal.valueOf(2), measures3.get(0).getNumber());
+        assertEquals("light-year test: measures[0] unit", MeasureUnit.LIGHT_YEAR.getIdentifier(),
+                measures3.get(0).getUnit().getIdentifier());
+        assertEquals("light-year test: measures[1] value", BigDecimal.ZERO, measures3.get(1).getNumber());
+        assertEquals("light-year test: measures[1] unit", MeasureUnit.METER.getIdentifier(),
+                measures3.get(1).getUnit().getIdentifier());
+
+        // 1e-15 light years is 9.46073 meters (calculated using "bc" and the CLDR
+        // conversion factor). With double-precision maths, we get 10.5. In this
+        // case, we're off by almost 1 meter.
+        List<Measure> measures4 = converter3.convert(BigDecimal.valueOf(1.0 + 1e-15), null);
+        assertEquals("measures length", 2, measures4.size());
+        assertEquals("light-year test: measures[0] value", BigDecimal.ONE, measures4.get(0).getNumber());
+        assertEquals("light-year test: measures[0] unit", MeasureUnit.LIGHT_YEAR.getIdentifier(),
+                measures4.get(0).getUnit().getIdentifier());
+        assertTrue("light-year test: measures[1] value", compareTwoBigDecimal(BigDecimal.valueOf(10),
+                BigDecimal.valueOf(measures4.get(1).getNumber().doubleValue()),
+                BigDecimal.valueOf(1)));
+        assertEquals("light-year test: measures[1] unit", MeasureUnit.METER.getIdentifier(),
+                measures4.get(1).getUnit().getIdentifier());
+
+        // 2e-16 light years is 1.892146 meters. We consider this in the noise, and
+        // thus expect a 0. (This test fails when 2e-16 is increased to 4e-16.)
+        List<Measure> measures5 = converter3.convert(BigDecimal.valueOf(1.0 + 2e-17), null);
+        assertEquals("measures length", 2, measures5.size());
+        assertEquals("light-year test: measures[0] value", BigDecimal.ONE, measures5.get(0).getNumber());
+        assertEquals("light-year test: measures[0] unit", MeasureUnit.LIGHT_YEAR.getIdentifier(),
+                measures5.get(0).getUnit().getIdentifier());
+        assertEquals("light-year test: measures[1] value", BigDecimal.valueOf(0.0),
+                measures5.get(1).getNumber());
+        assertEquals("light-year test: measures[1] unit", MeasureUnit.METER.getIdentifier(),
+                measures5.get(1).getUnit().getIdentifier());
+
+        // TODO(icu-units#63): test negative numbers!
+    }
+
+
+    @Test
+    public void testComplexUnitConverterSorting() {
+
+        MeasureUnitImpl source = MeasureUnitImpl.forIdentifier("meter");
+        MeasureUnitImpl target = MeasureUnitImpl.forIdentifier("inch-and-foot");
+        ConversionRates conversionRates = new ConversionRates();
+
+        ComplexUnitsConverter complexConverter = new ComplexUnitsConverter(source, target, conversionRates);
+        List<Measure> measures = complexConverter.convert(BigDecimal.valueOf(10.0), null);
+
+        assertEquals(measures.size(), 2);
+        assertEquals("inch-and-foot unit 0", "inch", measures.get(0).getUnit().getIdentifier());
+        assertEquals("inch-and-foot unit 1", "foot", measures.get(1).getUnit().getIdentifier());
+
+        assertEquals("inch-and-foot value 0", 9.7008, measures.get(0).getNumber().doubleValue(), 0.0001);
+        assertEquals("inch-and-foot value 1", 32, measures.get(1).getNumber().doubleValue(), 0.0001);
+    }
+
+
+    @Test
+    public void testExtractConvertibility() {
+        class TestData {
+            MeasureUnitImpl source;
+            MeasureUnitImpl target;
+            UnitConverter.Convertibility expected;
+
+            TestData(String source, String target, UnitConverter.Convertibility convertibility) {
+                this.source = MeasureUnitImpl.UnitsParser.parseForIdentifier(source);
+                this.target = MeasureUnitImpl.UnitsParser.parseForIdentifier(target);
+                this.expected = convertibility;
+            }
+        }
+
+        TestData[] tests = {
+                new TestData("meter", "foot", UnitConverter.Convertibility.CONVERTIBLE),
+                new TestData("square-meter-per-square-hour", "hectare-per-square-second", UnitConverter.Convertibility.CONVERTIBLE),
+                new TestData("hertz", "revolution-per-second", UnitConverter.Convertibility.CONVERTIBLE),
+                new TestData("millimeter", "meter", UnitConverter.Convertibility.CONVERTIBLE),
+                new TestData("yard", "meter", UnitConverter.Convertibility.CONVERTIBLE),
+                new TestData("ounce-troy", "kilogram", UnitConverter.Convertibility.CONVERTIBLE),
+                new TestData("percent", "portion", UnitConverter.Convertibility.CONVERTIBLE),
+                new TestData("ofhg", "kilogram-per-square-meter-square-second", UnitConverter.Convertibility.CONVERTIBLE),
+
+                new TestData("second-per-meter", "meter-per-second", UnitConverter.Convertibility.RECIPROCAL),
+        };
+        ConversionRates conversionRates = new ConversionRates();
+
+        for (TestData test :
+                tests) {
+            assertEquals(test.expected, UnitConverter.extractConvertibility(test.source, test.target, conversionRates));
+        }
+    }
+
+    @Test
+    public void testConverterForTemperature() {
+        class TestData {
+            MeasureUnitImpl source;
+            MeasureUnitImpl target;
+            BigDecimal input;
+            BigDecimal expected;
+
+            TestData(String source, String target, double input, double expected) {
+                this.source = MeasureUnitImpl.UnitsParser.parseForIdentifier(source);
+                this.target = MeasureUnitImpl.UnitsParser.parseForIdentifier(target);
+                this.input = BigDecimal.valueOf(input);
+                this.expected = BigDecimal.valueOf(expected);
+            }
+
+        }
+
+        TestData[] tests = {
+                new TestData("celsius", "fahrenheit", 1000, 1832),
+                new TestData("fahrenheit", "fahrenheit", 1000, 1000),
+        };
+
+        ConversionRates conversionRates = new ConversionRates();
+
+        for (TestData test :
+                tests) {
+            UnitConverter converter = new UnitConverter(test.source, test.target, conversionRates);
+            assertEquals(test.expected.doubleValue(), converter.convert(test.input).doubleValue(), (0.001));
+        }
+
+    }
+
+    @Test
+    public void testConverterFromUnitTests() throws IOException {
+        class TestCase {
+            String category;
+            String sourceString;
+            String targetString;
+            MeasureUnitImpl source;
+            MeasureUnitImpl target;
+            BigDecimal input;
+            BigDecimal expected;
+
+            TestCase(String line) {
+                String[] fields = line
+                        .replaceAll(" ", "") // Remove all the spaces.
+                        .replaceAll(",", "") // Remove all the commas.
+                        .replaceAll("\t", "")
+                        .split(";");
+
+                this.category = fields[0].replaceAll(" ", "");
+                this.sourceString = fields[1];
+                this.targetString = fields[2];
+                this.source = MeasureUnitImpl.UnitsParser.parseForIdentifier(fields[1]);
+                this.target = MeasureUnitImpl.UnitsParser.parseForIdentifier(fields[2]);
+                this.input = BigDecimal.valueOf(1000);
+                this.expected = new BigDecimal(fields[4]);
+            }
+        }
+
+        String codePage = "UTF-8";
+        ArrayList<TestCase> tests = new ArrayList<>();
+        try (BufferedReader f = TestUtil.getDataReader("cldr/units/unitsTest.txt", codePage)) {
+            while (true) {
+                String line = f.readLine();
+                if (line == null) break;
+                if (line.isEmpty() || line.startsWith("#")) continue;
+                tests.add(new TestCase(line));
+            }
+        }
+
+        ConversionRates conversionRates = new ConversionRates();
+
+        for (TestCase testCase :
+                tests) {
+            UnitConverter converter = new UnitConverter(testCase.source, testCase.target, conversionRates);
+            BigDecimal got = converter.convert(testCase.input);
+            if (compareTwoBigDecimal(testCase.expected, got, BigDecimal.valueOf(0.000001))) {
+                continue;
+            } else {
+                fail(new StringBuilder()
+                        .append(testCase.category)
+                        .append(": Converting 1000 ")
+                        .append(testCase.sourceString)
+                        .append(" to ")
+                        .append(testCase.targetString)
+                        .append(", got ")
+                        .append(got)
+                        .append(", expected ")
+                        .append(testCase.expected.toString())
+                        .toString());
+            }
+            BigDecimal inverted = converter.convertInverse(testCase.input);
+            if (compareTwoBigDecimal(BigDecimal.valueOf(1000), inverted, BigDecimal.valueOf(0.000001))) {
+                continue;
+            } else {
+                fail(new StringBuilder()
+                .append("Converting back to ")
+                .append(testCase.sourceString)
+                .append(" from ")
+                .append(testCase.targetString)
+                .append(": got ")
+                .append(inverted)
+                .append(", expected 1000")
+                .toString());
+            }
+        }
+    }
+
+    @Test
+    public void testUnitPreferencesFromUnitTests() throws IOException {
+        class TestCase {
+
+            final ArrayList<Pair<String, MeasureUnitImpl>> outputUnitInOrder = new ArrayList<>();
+            final ArrayList<BigDecimal> expectedInOrder = new ArrayList<>();
+            /**
+             * Test Case Data
+             */
+            @SuppressWarnings("unused")
+            String category;
+            String usage;
+            String region;
+            Pair<String, MeasureUnitImpl> inputUnit;
+            BigDecimal input;
+
+            TestCase(String line) {
+                String[] fields = line
+                        .replaceAll(" ", "") // Remove all the spaces.
+                        .replaceAll(",", "") // Remove all the commas.
+                        .replaceAll("\t", "")
+                        .split(";");
+
+                String category = fields[0];
+                String usage = fields[1];
+                String region = fields[2];
+                String inputValue = fields[4];
+                String inputUnit = fields[5];
+                ArrayList<Pair<String, String>> outputs = new ArrayList<>();
+
+                for (int i = 6; i < fields.length - 2; i += 2) {
+                    if (i == fields.length - 3) { // last field
+                        outputs.add(Pair.of(fields[i + 2], fields[i + 1]));
+                    } else {
+                        outputs.add(Pair.of(fields[i + 1], fields[i]));
+                    }
+                }
+
+                this.insertData(category, usage, region, inputUnit, inputValue, outputs);
+            }
+
+            private void insertData(String category,
+                                    String usage,
+                                    String region,
+                                    String inputUnitString,
+                                    String inputValue,
+                                    ArrayList<Pair<String, String>> outputs /* Unit Identifier, expected value */) {
+                this.category = category;
+                this.usage = usage;
+                this.region = region;
+                this.inputUnit = Pair.of(inputUnitString, MeasureUnitImpl.UnitsParser.parseForIdentifier(inputUnitString));
+                this.input = new BigDecimal(inputValue);
+                for (Pair<String, String> output :
+                        outputs) {
+                    outputUnitInOrder.add(Pair.of(output.first, MeasureUnitImpl.UnitsParser.parseForIdentifier(output.first)));
+                    expectedInOrder.add(new BigDecimal(output.second));
+                }
+            }
+        }
+
+        // Read Test data from the unitPreferencesTest
+        String codePage = "UTF-8";
+        ArrayList<TestCase> tests = new ArrayList<>();
+
+        try (BufferedReader f = TestUtil.getDataReader("cldr/units/unitPreferencesTest.txt", codePage)) {
+            while (true) {
+                String line = f.readLine();
+                if (line == null) break;
+                if (line.isEmpty() || line.startsWith("#")) continue;
+                tests.add(new TestCase(line));
+            }
+        }
+
+        for (TestCase testCase :
+                tests) {
+            UnitsRouter router = new UnitsRouter(testCase.inputUnit.second, testCase.region, testCase.usage);
+            List<Measure> measures = router.route(testCase.input, null).measures;
+
+            assertEquals("Measures size must be the same as expected units",
+                    measures.size(), testCase.expectedInOrder.size());
+            assertEquals("Measures size must be the same as output units",
+                    measures.size(), testCase.outputUnitInOrder.size());
+
+
+            for (int i = 0; i < measures.size(); i++) {
+                if (!UnitsTest
+                        .compareTwoBigDecimal(testCase.expectedInOrder.get(i),
+                                BigDecimal.valueOf(measures.get(i).getNumber().doubleValue()),
+                                BigDecimal.valueOf(0.00001))) {
+                    fail(testCase.toString() + measures.toString());
+                }
+            }
+        }
+    }
+}
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/iterator/TestUCharacterIterator.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/iterator/TestUCharacterIterator.java
index a6b456e..56eb449 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/iterator/TestUCharacterIterator.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/iterator/TestUCharacterIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/DataDrivenUScriptTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/DataDrivenUScriptTest.java
index 3c435b5..27dc2ac 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/DataDrivenUScriptTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/DataDrivenUScriptTest.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 package com.ibm.icu.dev.test.lang;
 
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/TestUScript.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/TestUScript.java
index 3368159..78c925b 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/TestUScript.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/TestUScript.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/TestUScriptRun.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/TestUScriptRun.java
index b874c25..e8ab437 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/TestUScriptRun.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/TestUScriptRun.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1999-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java
index 077a1a1..04c935d 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2014, International Business Machines Corporation and
@@ -804,6 +804,26 @@
         assertGreekUpper("ή.", "Ή.");
     }
 
+    @Test
+    public void TestArmenian() {
+        Locale hy = new Locale("hy");  // Eastern Armenian
+        Locale hyw = new Locale("hyw");  // Western Armenian
+        Locale root = Locale.ROOT;
+        // See ICU-13416:
+        // և ligature ech-yiwn
+        // uppercases to ԵՒ=ech+yiwn by default and in Western Armenian,
+        // but to ԵՎ=ech+vew in Eastern Armenian.
+        String s = "և Երևանի";
+
+        assertEquals("upper root", "ԵՒ ԵՐԵՒԱՆԻ", CaseMap.toUpper().apply(root, s));
+        assertEquals("upper hy", "ԵՎ ԵՐԵՎԱՆԻ", CaseMap.toUpper().apply(hy, s));
+        assertEquals("upper hyw", "ԵՒ ԵՐԵՒԱՆԻ", CaseMap.toUpper().apply(hyw, s));
+
+        assertEquals("title root", "Եւ Երևանի", CaseMap.toTitle().apply(root, null, s));
+        assertEquals("title hy", "Եվ Երևանի", CaseMap.toTitle().apply(hy, null, s));
+        assertEquals("title hyw", "Եւ Երևանի", CaseMap.toTitle().apply(hyw, null, s));
+    }
+
     private static final class EditChange {
         private boolean change;
         private int oldLength, newLength;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCategoryTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCategoryTest.java
index 04c8973..eb4f055 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCategoryTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCategoryTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2006, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java
index d7ef082..db4be1b 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterDirectionTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterDirectionTest.java
index 5224326..fe765a4 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterDirectionTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterDirectionTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2013, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterSurrogateTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterSurrogateTest.java
index d8441cd..80e9b3e 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterSurrogateTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterSurrogateTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2004-2008, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterTest.java
index 7943013..91c6bb3 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterThreadTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterThreadTest.java
index be9224f..115bc40 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterThreadTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterThreadTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UPropertyAliasesTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UPropertyAliasesTest.java
index 9aab31b..95c3436 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UPropertyAliasesTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UPropertyAliasesTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2002-2010, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UTF16Test.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UTF16Test.java
index 18d8a07..1c68496 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UTF16Test.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UTF16Test.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 1996-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UnicodeSetStringSpanTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UnicodeSetStringSpanTest.java
index d6313c8..8605e31 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UnicodeSetStringSpanTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UnicodeSetStringSpanTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UnicodeSetTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UnicodeSetTest.java
index ecb6767..a33dfe8 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UnicodeSetTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UnicodeSetTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/BasicTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/BasicTest.java
index 26c4191..310bc1f 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/BasicTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/BasicTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/ConformanceTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/ConformanceTest.java
index 7513cb0..d8388ce 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/ConformanceTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/ConformanceTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/IntHashtable.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/IntHashtable.java
index 039b3ce..63d90ef 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/IntHashtable.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/IntHashtable.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.normalizer;
 
 import java.util.HashMap;
@@ -38,4 +38,4 @@
 
     private int defaultValue;
     private Map<Integer, Integer> table = new HashMap<Integer, Integer>();
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/IntStringHashtable.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/IntStringHashtable.java
index 74a2d6b..dc8f678 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/IntStringHashtable.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/IntStringHashtable.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.normalizer;
 
 import java.util.HashMap;
@@ -38,4 +38,4 @@
 
     private String defaultValue;
     private Map<Integer, String> table = new HashMap<Integer, String>();
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/LongHashtable.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/LongHashtable.java
index 45c6f9a..9ccfacb 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/LongHashtable.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/LongHashtable.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.normalizer;
 
 import java.util.HashMap;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizationMonkeyTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizationMonkeyTest.java
index 17b6caa..b22e5e1 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizationMonkeyTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizationMonkeyTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2004, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizerBuilder.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizerBuilder.java
index 44b54f1..c9ffc43 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizerBuilder.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizerBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  * Builds the normalization tables. This is a separate class so that it
  * can be unloaded once not needed.<br>
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizerData.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizerData.java
index b9b3cc4..59ab316 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizerData.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizerData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 1998-2007 International Business Machines Corporation and
  * Unicode, Inc. All Rights Reserved.<br>
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizerRegressionTests.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizerRegressionTests.java
index fea4363..0addad8 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizerRegressionTests.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizerRegressionTests.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/TestCanonicalIterator.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/TestCanonicalIterator.java
index 2c484e0..3515229 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/TestCanonicalIterator.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/TestCanonicalIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and
@@ -272,4 +272,4 @@
         }
         return result.toString();
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java
index 43ba1b3..6199d5d 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/UTS46Test.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/UTS46Test.java
index 0401e16..0211de2 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/UTS46Test.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/UTS46Test.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 2010-2014, International Business Machines
@@ -24,8 +24,11 @@
 import com.ibm.icu.dev.test.TestFmwk;
 import com.ibm.icu.dev.test.TestUtil;
 import com.ibm.icu.impl.Normalizer2Impl.UTF16Plus;
+import com.ibm.icu.impl.Punycode;
 import com.ibm.icu.impl.Utility;
 import com.ibm.icu.text.IDNA;
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.util.ICUInputTooLongException;
 
 /**
  * UTS #46 (IDNA2008) test.
@@ -105,9 +108,103 @@
         }
     }
 
+    @Test
+    public void TestInvalidPunycodeDigits() {
+        IDNA idna=IDNA.getUTS46Instance(0);
+        StringBuilder result=new StringBuilder();
+        IDNA.Info info=new IDNA.Info();
+        idna.nameToUnicode("xn--pleP", result, info);  // P=U+0050
+        assertFalse("nameToUnicode() should succeed",
+                info.getErrors().contains(IDNA.Error.PUNYCODE));
+        assertEquals("normal result", "ᔼᔴ", result.toString());
+
+        info=new IDNA.Info();
+        idna.nameToUnicode("xn--pleѐ", result, info);  // ends with non-ASCII U+0450
+        assertTrue("nameToUnicode() should detect non-ASCII",
+                info.getErrors().contains(IDNA.Error.PUNYCODE));
+
+        // Test with ASCII characters adjacent to LDH.
+        info=new IDNA.Info();
+        idna.nameToUnicode("xn--PLE/", result, info);
+        assertTrue("nameToUnicode() should detect '/'",
+                info.getErrors().contains(IDNA.Error.PUNYCODE));
+
+        info=new IDNA.Info();
+        idna.nameToUnicode("xn--ple:", result, info);
+        assertTrue("nameToUnicode() should detect ':'",
+                info.getErrors().contains(IDNA.Error.PUNYCODE));
+
+        info=new IDNA.Info();
+        idna.nameToUnicode("xn--ple@", result, info);
+        assertTrue("nameToUnicode() should detect '@'",
+                info.getErrors().contains(IDNA.Error.PUNYCODE));
+
+        info=new IDNA.Info();
+        idna.nameToUnicode("xn--ple[", result, info);
+        assertTrue("nameToUnicode() should detect '['",
+                info.getErrors().contains(IDNA.Error.PUNYCODE));
+
+        info=new IDNA.Info();
+        idna.nameToUnicode("xn--ple`", result, info);
+        assertTrue("nameToUnicode() should detect '`'",
+                info.getErrors().contains(IDNA.Error.PUNYCODE));
+
+        info=new IDNA.Info();
+        idna.nameToUnicode("xn--ple{", result, info);
+        assertTrue("nameToUnicode() should detect '{'",
+                info.getErrors().contains(IDNA.Error.PUNYCODE));
+    }
+
+    @Test
+    public void TestACELabelEdgeCases() {
+        // In IDNA2008, these labels fail the round-trip validation from comparing
+        // the ToUnicode input with the back-to-ToASCII output.
+        IDNA idna=IDNA.getUTS46Instance(0);
+        StringBuilder result=new StringBuilder();
+        IDNA.Info info=new IDNA.Info();
+        idna.labelToUnicode("xn--", result, info);
+        assertTrue("empty xn--", info.getErrors().contains(IDNA.Error.INVALID_ACE_LABEL));
+
+        info=new IDNA.Info();
+        idna.labelToUnicode("xN--ASCII-", result, info);
+        assertTrue("nothing but ASCII", info.getErrors().contains(IDNA.Error.INVALID_ACE_LABEL));
+
+        // Different error: The Punycode decoding procedure does not consume the last delimiter
+        // if it is right after the xn-- so the main decoding loop fails because the hyphen
+        // is not a valid Punycode digit.
+        info=new IDNA.Info();
+        idna.labelToUnicode("Xn---", result, info);
+        assertTrue("empty Xn---", info.getErrors().contains(IDNA.Error.PUNYCODE));
+    }
+
+    @Test
+    public void TestTooLong() {
+        // ICU-13727: Limit input length for n^2 algorithm
+        // where well-formed strings are at most 59 characters long.
+        int count = 50000;
+        StringBuilder sb = new StringBuilder(count);
+        for (int i = 0; i < count; ++i) {
+            sb.append('a');
+        }
+        try {
+            Punycode.encode(sb, null);
+            fail("encode: expected an exception for too-long input");
+        } catch(ICUInputTooLongException expected) {
+        } catch(StringPrepParseException e) {
+            fail("encode: unexpected StringPrepParseException for too-long input: " + e);
+        }
+        try {
+            Punycode.decode(sb, null);
+            fail("decode: expected an exception for too-long input");
+        } catch(ICUInputTooLongException expected) {
+        } catch(StringPrepParseException e) {
+            fail("decode: unexpected StringPrepParseException for too-long input: " + e);
+        }
+    }
+
     private static final Map<String, IDNA.Error> errorNamesToErrors;
     static {
-        errorNamesToErrors=new TreeMap<String, IDNA.Error>();
+        errorNamesToErrors=new TreeMap<>();
         errorNamesToErrors.put("UIDNA_ERROR_EMPTY_LABEL", IDNA.Error.EMPTY_LABEL);
         errorNamesToErrors.put("UIDNA_ERROR_LABEL_TOO_LONG", IDNA.Error.LABEL_TOO_LONG);
         errorNamesToErrors.put("UIDNA_ERROR_DOMAIN_NAME_TOO_LONG", IDNA.Error.DOMAIN_NAME_TOO_LONG);
@@ -385,13 +482,13 @@
           "UIDNA_ERROR_EMPTY_LABEL|UIDNA_ERROR_LEADING_HYPHEN|UIDNA_ERROR_TRAILING_HYPHEN|"+
           "UIDNA_ERROR_HYPHEN_3_4" },
         { "a..c", "B", "a..c", "UIDNA_ERROR_EMPTY_LABEL" },
-        { "a.xn--.c", "B", "a..c", "UIDNA_ERROR_EMPTY_LABEL" },
+        { "a.xn--.c", "B", "a.xn--\uFFFD.c", "UIDNA_ERROR_INVALID_ACE_LABEL" },
         { "a.-b.", "B", "a.-b.", "UIDNA_ERROR_LEADING_HYPHEN" },
         { "a.b-.c", "B", "a.b-.c", "UIDNA_ERROR_TRAILING_HYPHEN" },
         { "a.-.c", "B", "a.-.c", "UIDNA_ERROR_LEADING_HYPHEN|UIDNA_ERROR_TRAILING_HYPHEN" },
         { "a.bc--de.f", "B", "a.bc--de.f", "UIDNA_ERROR_HYPHEN_3_4" },
         { "\u00E4.\u00AD.c", "B", "\u00E4..c", "UIDNA_ERROR_EMPTY_LABEL" },
-        { "\u00E4.xn--.c", "B", "\u00E4..c", "UIDNA_ERROR_EMPTY_LABEL" },
+        { "\u00E4.xn--.c", "B", "\u00E4.xn--\uFFFD.c", "UIDNA_ERROR_INVALID_ACE_LABEL" },
         { "\u00E4.-b.", "B", "\u00E4.-b.", "UIDNA_ERROR_LEADING_HYPHEN" },
         { "\u00E4.b-.c", "B", "\u00E4.b-.c", "UIDNA_ERROR_TRAILING_HYPHEN" },
         { "\u00E4.-.c", "B", "\u00E4.-.c", "UIDNA_ERROR_LEADING_HYPHEN|UIDNA_ERROR_TRAILING_HYPHEN" },
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizer.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizer.java
index 8c0d350..25de41a 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizer.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizer.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Copyright (C) 1998-2007 International Business Machines Corporation and
  * Unicode, Inc. All Rights Reserved.<br>
@@ -186,4 +186,4 @@
     String getRawDecompositionMapping (char ch) {
         return data.getRawDecompositionMapping(ch);
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizerConformanceTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizerConformanceTest.java
index 62bc0a6..87269bd 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizerConformanceTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizerConformanceTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/package.html b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/package.html
index 7e43409..e5eacad 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/package.html
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/normalizer/package.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--  Copyright (C) 2016 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--  Copyright (C) 2000-2004, International Business Machines Corporation and
   others. All Rights Reserved.
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/AffixUtilsTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/AffixUtilsTest.java
index e778170..a04abda 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/AffixUtilsTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/AffixUtilsTest.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.number;
 
 import static org.junit.Assert.assertEquals;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/DecimalQuantityTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/DecimalQuantityTest.java
index f57f11f..9131382 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/DecimalQuantityTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/DecimalQuantityTest.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.number;
 
 import java.math.BigDecimal;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/ExhaustiveNumberTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/ExhaustiveNumberTest.java
index 20e5549..4ce7c94 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/ExhaustiveNumberTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/ExhaustiveNumberTest.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.number;
 
 import static com.ibm.icu.impl.StaticUnicodeSets.get;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/ModifierTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/ModifierTest.java
index 2d4d33c..f2ba2f9 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/ModifierTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/ModifierTest.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.number;
 
 import static org.junit.Assert.assertEquals;
@@ -127,10 +127,10 @@
         // If this test starts failing, please update the method #getUnicodeSet() in
         // BOTH CurrencySpacingEnabledModifier.java AND in C++.
         DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(new ULocale("en-US"));
-        assertEquals("[:^S:]",
+        assertEquals("[[:^S:]&[:^Z:]]",
                 dfs.getPatternForCurrencySpacing(DecimalFormatSymbols.CURRENCY_SPC_CURRENCY_MATCH,
                         true));
-        assertEquals("[:^S:]",
+        assertEquals("[[:^S:]&[:^Z:]]",
                 dfs.getPatternForCurrencySpacing(DecimalFormatSymbols.CURRENCY_SPC_CURRENCY_MATCH,
                         false));
         assertEquals("[:digit:]",
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/MutablePatternModifierTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/MutablePatternModifierTest.java
index 180919c..795f01f 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/MutablePatternModifierTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/MutablePatternModifierTest.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.number;
 
 import static org.junit.Assert.assertEquals;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberFormatterApiTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberFormatterApiTest.java
index 3056545..1b2c54d 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberFormatterApiTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberFormatterApiTest.java
@@ -1,13 +1,7 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.number;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.math.BigDecimal;
@@ -20,11 +14,14 @@
 import java.util.Map;
 import java.util.Set;
 
+import org.junit.Assert;
 import org.junit.Ignore;
 import org.junit.Test;
 
+import com.ibm.icu.dev.test.TestFmwk;
 import com.ibm.icu.dev.test.format.FormattedValueTest;
 import com.ibm.icu.dev.test.serializable.SerializableTestUtility;
+import com.ibm.icu.impl.IllegalIcuArgumentException;
 import com.ibm.icu.impl.number.Grouper;
 import com.ibm.icu.impl.number.LocalizedNumberFormatterAsFormat;
 import com.ibm.icu.impl.number.MacroProps;
@@ -45,6 +42,7 @@
 import com.ibm.icu.number.Precision;
 import com.ibm.icu.number.Scale;
 import com.ibm.icu.number.ScientificNotation;
+import com.ibm.icu.number.SkeletonSyntaxException;
 import com.ibm.icu.number.UnlocalizedNumberFormatter;
 import com.ibm.icu.text.ConstrainedFieldPosition;
 import com.ibm.icu.text.DecimalFormatSymbols;
@@ -58,7 +56,7 @@
 import com.ibm.icu.util.NoUnit;
 import com.ibm.icu.util.ULocale;
 
-public class NumberFormatterApiTest {
+public class NumberFormatterApiTest extends TestFmwk {
 
     private static final Currency USD = Currency.getInstance("USD");
     private static final Currency GBP = Currency.getInstance("GBP");
@@ -443,6 +441,17 @@
                 1e7,
                 "1000\u842C");
 
+        if (!logKnownIssue("21258", "StandardPlural cannot handle keywords 1, 0")) {
+            assertFormatSingle(
+                    "Compact with plural form =1 (ICU-21258)",
+                    "compact-long",
+                    "K",
+                    NumberFormatter.with().notation(Notation.compactLong()),
+                    ULocale.FRANCE,
+                    1e3,
+                    "mille");
+        }
+
         assertFormatSingle(
                 "Compact Infinity",
                 "compact-short",
@@ -527,6 +536,23 @@
                 "0.0088 meters",
                 "0 meters");
 
+        // // TODO(ICU-20941): Support formatting for not-built-in units
+        // assertFormatDescending(
+        //         "Hectometers",
+        //         "measure-unit/length-hectometer",
+        //         "unit/hectometer",
+        //         NumberFormatter.with().unit(MeasureUnit.forIdentifier("hectometer")),
+        //         ULocale.ENGLISH,
+        //         "87,650 hm",
+        //         "8,765 ham",
+        //         "876.5 hm",
+        //         "87.65 hm",
+        //         "8.765 hm",
+        //         "0.8765 hm",
+        //         "0.08765 hm",
+        //         "0.008765 hm",
+        //         "0 hm");
+
         assertFormatSingleMeasure(
                 "Meters with Measure Input",
                 "unit-width-full-name",
@@ -635,6 +661,110 @@
                 ULocale.forLanguageTag("es-MX"),
                 1,
                 "kelvin");
+
+        assertFormatSingle(
+                "Person unit not in short form",
+                "measure-unit/duration-year-person unit-width-full-name",
+                "unit/year-person unit-width-full-name",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.YEAR_PERSON)
+                        .unitWidth(UnitWidth.FULL_NAME),
+                ULocale.forLanguageTag("es-MX"),
+                5,
+                "5 a\u00F1os");
+
+        assertFormatSingle(
+                "Mixed unit",
+                "unit/yard-and-foot-and-inch",
+                "unit/yard-and-foot-and-inch",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.forIdentifier("yard-and-foot-and-inch")),
+                new ULocale("en-US"),
+                3.65,
+                "3 yd, 1 ft, 11.4 in");
+
+        assertFormatSingle(
+                "Mixed unit, Scientific",
+                "unit/yard-and-foot-and-inch E0",
+                "unit/yard-and-foot-and-inch E0",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.forIdentifier("yard-and-foot-and-inch"))
+                        .notation(Notation.scientific()),
+                new ULocale("en-US"),
+                3.65,
+                "3 yd, 1 ft, 1.14E1 in");
+
+        assertFormatSingle(
+                "Mixed Unit (Narrow Version)",
+                "unit/metric-ton-and-kilogram-and-gram unit-width-narrow",
+                "unit/metric-ton-and-kilogram-and-gram unit-width-narrow",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.forIdentifier("metric-ton-and-kilogram-and-gram"))
+                        .unitWidth(UnitWidth.NARROW),
+                new ULocale("en-US"),
+                4.28571,
+                "4t 285kg 710g");
+
+        assertFormatSingle(
+                "Mixed Unit (Short Version)",
+                "unit/metric-ton-and-kilogram-and-gram unit-width-short",
+                "unit/metric-ton-and-kilogram-and-gram unit-width-short",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.forIdentifier("metric-ton-and-kilogram-and-gram"))
+                        .unitWidth(UnitWidth.SHORT),
+                new ULocale("en-US"),
+                4.28571,
+                "4 t, 285 kg, 710 g");
+
+        assertFormatSingle(
+                "Mixed Unit (Full Name Version)",
+                "unit/metric-ton-and-kilogram-and-gram unit-width-full-name",
+                "unit/metric-ton-and-kilogram-and-gram unit-width-full-name",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.forIdentifier("metric-ton-and-kilogram-and-gram"))
+                        .unitWidth(UnitWidth.FULL_NAME),
+                new ULocale("en-US"),
+                4.28571,
+                "4 metric tons, 285 kilograms, 710 grams");
+
+        assertFormatSingle(
+                "Testing \"1 foot 12 inches\"",
+                "unit/foot-and-inch @### unit-width-full-name",
+                "unit/foot-and-inch @### unit-width-full-name",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.forIdentifier("foot-and-inch"))
+                        .precision(Precision.maxSignificantDigits(4))
+                        .unitWidth(UnitWidth.FULL_NAME),
+                new ULocale("en-US"),
+                1.9999,
+                "2 feet, 0 inches");
+
+        assertFormatSingle(
+                "Negative numbers: temperature",
+                "measure-unit/temperature-celsius",
+                "unit/celsius",
+                NumberFormatter.with().unit(MeasureUnit.forIdentifier("celsius")),
+                new ULocale("nl-NL"),
+                -6.5,
+                "-6,5\u00B0C");
+
+        assertFormatSingle(
+                "Negative numbers: time",
+                "unit/hour-and-minute-and-second",
+                "unit/hour-and-minute-and-second",
+                NumberFormatter.with().unit(MeasureUnit.forIdentifier("hour-and-minute-and-second")),
+                new ULocale("de-DE"),
+                -1.24,
+                "-1 Std., 14 Min. und 24 Sek.");
+
+        assertFormatSingle(
+                "Zero out the unit field",
+                "",
+                "",
+                NumberFormatter.with().unit(MeasureUnit.KELVIN).unit(NoUnit.BASE),
+                new ULocale("en"),
+                100,
+                "100");
     }
 
     @Test
@@ -642,7 +772,7 @@
         assertFormatDescending(
                 "Meters Per Second Short (unit that simplifies) and perUnit method",
                 "measure-unit/length-meter per-measure-unit/duration-second",
-                "~unit/meter-per-second", // does not round-trip to the full skeleton above
+                "unit/meter-per-second",
                 NumberFormatter.with().unit(MeasureUnit.METER).perUnit(MeasureUnit.SECOND),
                 ULocale.ENGLISH,
                 "87,650 m/s",
@@ -656,6 +786,22 @@
                 "0 m/s");
 
         assertFormatDescending(
+                "Meters Per Second Short, built-in m/s",
+                "measure-unit/speed-meter-per-second",
+                "unit/meter-per-second",
+                NumberFormatter.with().unit(MeasureUnit.METER_PER_SECOND),
+                ULocale.ENGLISH,
+                "87,650 m/s",
+                "8,765 m/s",
+                "876.5 m/s",
+                "87.65 m/s",
+                "8.765 m/s",
+                "0.8765 m/s",
+                "0.08765 m/s",
+                "0.008765 m/s",
+                "0 m/s");
+
+        assertFormatDescending(
                 "Pounds Per Square Mile Short (secondary unit has per-format)",
                 "measure-unit/mass-pound per-measure-unit/area-square-mile",
                 "unit/pound-per-square-mile",
@@ -686,8 +832,697 @@
                 "0.08765 J/fur",
                 "0.008765 J/fur",
                 "0 J/fur");
+
+        // // TODO(ICU-20941): Support constructions such as this one.
+        // assertFormatDescending(
+        //         "Joules Per Furlong Short with unit identifier via API",
+        //         "measure-unit/energy-joule per-measure-unit/length-furlong",
+        //         "unit/joule-per-furlong",
+        //         NumberFormatter.with().unit(MeasureUnit.forIdentifier("joule-per-furlong")),
+        //         ULocale.ENGLISH,
+        //         "87,650 J/fur",
+        //         "8,765 J/fur",
+        //         "876.5 J/fur",
+        //         "87.65 J/fur",
+        //         "8.765 J/fur",
+        //         "0.8765 J/fur",
+        //         "0.08765 J/fur",
+        //         "0.008765 J/fur",
+        //         "0 J/fur");
+
+        assertFormatDescending(
+                "Pounds per Square Inch: composed",
+                "measure-unit/force-pound-force per-measure-unit/area-square-inch",
+                "unit/pound-force-per-square-inch",
+                NumberFormatter.with().unit(MeasureUnit.POUND_FORCE).perUnit(MeasureUnit.SQUARE_INCH),
+                ULocale.ENGLISH,
+                "87,650 psi",
+                "8,765 psi",
+                "876.5 psi",
+                "87.65 psi",
+                "8.765 psi",
+                "0.8765 psi",
+                "0.08765 psi",
+                "0.008765 psi",
+                "0 psi");
+
+        assertFormatDescending(
+                "Pounds per Square Inch: built-in",
+                "measure-unit/force-pound-force per-measure-unit/area-square-inch",
+                "unit/pound-force-per-square-inch",
+                NumberFormatter.with().unit(MeasureUnit.POUND_PER_SQUARE_INCH),
+                ULocale.ENGLISH,
+                "87,650 psi",
+                "8,765 psi",
+                "876.5 psi",
+                "87.65 psi",
+                "8.765 psi",
+                "0.8765 psi",
+                "0.08765 psi",
+                "0.008765 psi",
+                "0 psi");
+
+        assertFormatSingle(
+                "m/s/s simplifies to m/s^2",
+                "measure-unit/speed-meter-per-second per-measure-unit/duration-second",
+                "unit/meter-per-square-second",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER_PER_SECOND)
+                        .perUnit(MeasureUnit.SECOND),
+                new ULocale("en-GB"),
+                2.4,
+                "2.4 m/s\u00B2");
+
+        assertFormatSingle(
+                "Negative numbers: acceleration",
+                "measure-unit/acceleration-meter-per-square-second",
+                "unit/meter-per-second-second",
+                NumberFormatter.with().unit(MeasureUnit.forIdentifier("meter-per-pow2-second")),
+                new ULocale("af-ZA"),
+                -9.81,
+                "-9,81 m/s\u00B2");
+
+        // Testing the rejection of invalid specifications
+
+        // If .unit() is not given a built-in type, .perUnit() is not allowed
+        // (because .unit is now flexible enough to handle compound units,
+        // .perUnit() is supported for backward compatibility).
+        LocalizedNumberFormatter nf = NumberFormatter.with()
+                .unit(MeasureUnit.forIdentifier("furlong-pascal"))
+                .perUnit(MeasureUnit.METER)
+                .locale(new ULocale("en-GB"));
+
+        try {
+            nf.format(2.4d);
+            fail("Expected failure, got: " + nf.format(2.4d) + ".");
+        } catch (UnsupportedOperationException e) {
+            // Pass
+        }
+
+        // .perUnit() may only be passed a built-in type, or something that
+        // combines to a built-in type together with .unit().
+        nf = NumberFormatter.with()
+                .unit(MeasureUnit.FURLONG)
+                .perUnit(MeasureUnit.forIdentifier("square-second"))
+                .locale(new ULocale("en-GB"));
+        try {
+            nf.format(2.4d);
+            fail("Expected failure, got: " + nf.format(2.4d) + ".");
+        } catch (UnsupportedOperationException e) {
+            // pass
+        }
+        // As above, "square-second" is not a built-in type, however this time,
+        // meter-per-square-second is a built-in type.
+        assertFormatSingle(
+                "meter per square-second works as a composed unit",
+                "measure-unit/speed-meter-per-second per-measure-unit/duration-second",
+                "unit/meter-per-square-second",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER)
+                        .perUnit(MeasureUnit.forIdentifier("square-second")),
+                new ULocale("en-GB"),
+                2.4,
+                "2.4 m/s\u00B2");
     }
 
+    // TODO: merge these tests into NumberSkeletonTest.java instead of here:
+    @Test
+    public void unitSkeletons() {
+        Object[][] cases = {
+            {"old-form built-in compound unit",     //
+             "measure-unit/speed-meter-per-second", //
+             "unit/meter-per-second"},
+
+            {"old-form compound construction, converts to built-in",       //
+             "measure-unit/length-meter per-measure-unit/duration-second", //
+             "unit/meter-per-second"},
+
+            {"old-form compound construction which does not simplify to a built-in", //
+             "measure-unit/energy-joule per-measure-unit/length-meter",              //
+             "unit/joule-per-meter"},
+
+            {"old-form compound-compound ugliness resolves neatly",                  //
+             "measure-unit/speed-meter-per-second per-measure-unit/duration-second", //
+             "unit/meter-per-square-second"},
+
+            {"short-form built-in units stick with the built-in", //
+             "unit/meter-per-second",                             //
+             "unit/meter-per-second"},
+
+            {"short-form compound units stay as is", //
+             "unit/square-meter-per-square-meter",   //
+             "unit/square-meter-per-square-meter"},
+
+            {"short-form compound units stay as is", //
+             "unit/joule-per-furlong",               //
+             "unit/joule-per-furlong"},
+
+            {"short-form that doesn't consist of built-in units", //
+             "unit/hectometer-per-second",                        //
+             "unit/hectometer-per-second"},
+
+            {"short-form that doesn't consist of built-in units", //
+             "unit/meter-per-hectosecond",                        //
+             "unit/meter-per-hectosecond"},
+
+            {"percent compound skeletons handled correctly", //
+             "unit/percent-per-meter",                       //
+             "unit/percent-per-meter"},
+
+            {"permille compound skeletons handled correctly",                //
+             "measure-unit/concentr-permille per-measure-unit/length-meter", //
+             "unit/permille-per-meter"},
+
+            {"percent simple unit is not actually considered a unit", //
+             "unit/percent",                                          //
+             "percent"},
+
+            {"permille simple unit is not actually considered a unit", //
+             "measure-unit/concentr-permille",                         //
+             "permille"},
+
+            // // TODO: binary prefixes not supported yet!
+            // {"Round-trip example from icu-units#35", //
+            //  "unit/kibijoule-per-furlong",           //
+            //  "unit/kibijoule-per-furlong"},
+        };
+        for (Object[] cas : cases) {
+            String msg = (String)cas[0];
+            String inputSkeleton = (String)cas[1];
+            String normalizedSkeleton = (String)cas[2];
+            UnlocalizedNumberFormatter nf = NumberFormatter.forSkeleton(inputSkeleton);
+            assertEquals(msg, normalizedSkeleton, nf.toSkeleton());
+        }
+
+        Object[][] failCases = {
+            {"Parsing measure-unit/* results in failure if not built-in unit",
+             "measure-unit/hectometer", //
+             true,                      //
+             false},
+
+            {"Parsing per-measure-unit/* results in failure if not built-in unit",
+             "measure-unit/meter per-measure-unit/hectosecond", //
+             true,                                              //
+             false},
+
+            {"\"currency/EUR measure-unit/length-meter\" fails, conflicting skeleton.",
+             "currency/EUR measure-unit/length-meter", //
+             true,                                     //
+             false},
+
+            {"\"measure-unit/length-meter currency/EUR\" fails, conflicting skeleton.",
+             "measure-unit/length-meter currency/EUR", //
+             true,                                     //
+             false},
+
+            {"\"currency/EUR per-measure-unit/meter\" fails, conflicting skeleton.",
+             "currency/EUR per-measure-unit/length-meter", //
+             true,                                         //
+             false},
+        };
+        for (Object[] cas : failCases) {
+            String msg = (String)cas[0];
+            String inputSkeleton = (String)cas[1];
+            boolean forSkeletonExpectFailure = (boolean)cas[2];
+            boolean toSkeletonExpectFailure = (boolean)cas[3];
+            UnlocalizedNumberFormatter nf = null;
+            try {
+                nf = NumberFormatter.forSkeleton(inputSkeleton);
+                if (forSkeletonExpectFailure) {
+                    fail("forSkeleton() should have failed: " + msg);
+                }
+            } catch (Exception e) {
+                if (!forSkeletonExpectFailure) {
+                    fail("forSkeleton() should not have failed: " + msg);
+                }
+                continue;
+            }
+            try {
+                nf.toSkeleton();
+                if (toSkeletonExpectFailure) {
+                    fail("toSkeleton() should have failed: " + msg);
+                }
+            } catch (Exception e) {
+                if (!toSkeletonExpectFailure) {
+                    fail("toSkeleton() should not have failed: " + msg);
+                }
+            }
+        }
+
+        assertEquals(                                //
+            ".unit(METER_PER_SECOND) normalization", //
+            "unit/meter-per-second",                 //
+            NumberFormatter.with().unit(MeasureUnit.METER_PER_SECOND).toSkeleton());
+        assertEquals(                                     //
+            ".unit(METER).perUnit(SECOND) normalization", //
+            "unit/meter-per-second",
+            NumberFormatter.with().unit(MeasureUnit.METER).perUnit(MeasureUnit.SECOND).toSkeleton());
+        assertEquals(                                                         //
+            ".unit(MeasureUnit.forIdentifier(\"hectometer\")) normalization", //
+            "unit/hectometer",
+            NumberFormatter.with().unit(MeasureUnit.forIdentifier("hectometer")).toSkeleton());
+        assertEquals(                                                         //
+            ".unit(MeasureUnit.forIdentifier(\"hectometer\")) normalization", //
+            "unit/meter-per-hectosecond",
+            NumberFormatter.with()
+                .unit(MeasureUnit.METER)
+                .perUnit(MeasureUnit.forIdentifier("hectosecond"))
+                .toSkeleton());
+
+        assertEquals(                                                //
+            ".unit(CURRENCY) produces a currency/CURRENCY skeleton", //
+            "currency/GBP",                                          //
+            NumberFormatter.with().unit(GBP).toSkeleton());
+
+        // .unit(CURRENCY).perUnit(ANYTHING) is not supported.
+        try {
+            NumberFormatter.with().unit(GBP).perUnit(MeasureUnit.METER).toSkeleton();
+            fail("should give an error, unit(currency) with perUnit() is invalid.");
+        } catch (UnsupportedOperationException e) {
+            // Pass
+        }
+    }
+
+    @Test
+    public void unitUsage() {
+        UnlocalizedNumberFormatter unloc_formatter;
+        LocalizedNumberFormatter formatter;
+        FormattedNumber formattedNum;
+        String uTestCase;
+
+        try {
+            NumberFormatter.with().usage("road").locale(ULocale.ENGLISH).format(1);
+            fail("should give an error, usage() without unit() is invalid");
+        } catch (IllegalIcuArgumentException e) {
+            // Pass
+        }
+
+        unloc_formatter = NumberFormatter.with().usage("road").unit(MeasureUnit.METER);
+
+        uTestCase = "unitUsage() en-ZA road";
+        formatter = unloc_formatter.locale(new ULocale("en-ZA"));
+        formattedNum = formatter.format(321d);
+
+
+        assertTrue(
+                uTestCase + ", got outputUnit: \"" + formattedNum.getOutputUnit().getIdentifier() + "\"",
+                MeasureUnit.METER.equals(formattedNum.getOutputUnit()));
+        assertEquals(uTestCase, "300 m", formattedNum.toString());
+        {
+            final Object[][] expectedFieldPositions = {
+                    {NumberFormat.Field.INTEGER, 0, 3},
+                    {NumberFormat.Field.MEASURE_UNIT, 4, 5}
+            };
+
+            assertNumberFieldPositions(
+                    uTestCase + " field positions",
+                    formattedNum,
+                    expectedFieldPositions);
+        }
+
+        assertFormatDescendingBig(
+                uTestCase,
+                "measure-unit/length-meter usage/road",
+                "unit/meter usage/road",
+                unloc_formatter,
+                new ULocale("en-ZA"),
+                "87\u00A0650 km",
+                "8\u00A0765 km",
+                "876 km", // 6.5 rounds down, 7.5 rounds up.
+                "88 km",
+                "8,8 km",
+                "900 m",
+                "90 m",
+                "10 m",
+                "0 m");
+
+        uTestCase = "unitUsage() en-GB road";
+        formatter = unloc_formatter.locale(new ULocale("en-GB"));
+        formattedNum = formatter.format(321d);
+        assertTrue(
+                uTestCase + ", got outputUnit: \"" + formattedNum.getOutputUnit().getIdentifier() + "\"",
+                MeasureUnit.YARD.equals(formattedNum.getOutputUnit()));
+        assertEquals(uTestCase, "350 yd", formattedNum.toString());
+        {
+            final Object[][] expectedFieldPositions = {
+                    {NumberFormat.Field.INTEGER, 0, 3},
+                    {NumberFormat.Field.MEASURE_UNIT, 4, 6}};
+            assertNumberFieldPositions(
+                    (uTestCase + " field positions"),
+                    formattedNum,
+                    expectedFieldPositions);
+        }
+
+        assertFormatDescendingBig(
+                uTestCase,
+                "measure-unit/length-meter usage/road",
+                "unit/meter usage/road",
+                unloc_formatter,
+                new ULocale("en-GB"),
+                "54,463 mi",
+                "5,446 mi",
+                "545 mi",
+                "54 mi",
+                "5.4 mi",
+                "0.54 mi",
+                "96 yd",
+                "9.6 yd",
+                "0 yd");
+
+        uTestCase = "unitUsage() en-US road";
+        formatter = unloc_formatter.locale(new ULocale("en-US"));
+        formattedNum = formatter.format(321d);
+        assertTrue(
+                uTestCase + ", got outputUnit: \"" + formattedNum.getOutputUnit().getIdentifier() + "\"",
+                MeasureUnit.FOOT == formattedNum.getOutputUnit());
+        assertEquals(uTestCase, "1,050 ft", formattedNum.toString());
+        {
+            final Object[][] expectedFieldPositions = {
+                    {NumberFormat.Field.GROUPING_SEPARATOR, 1, 2},
+                    {NumberFormat.Field.INTEGER, 0, 5},
+                    {NumberFormat.Field.MEASURE_UNIT, 6, 8}};
+            assertNumberFieldPositions(
+                    uTestCase + " field positions",
+                    formattedNum,
+                    expectedFieldPositions);
+        }
+        assertFormatDescendingBig(
+                uTestCase,
+                "measure-unit/length-meter usage/road",
+                "unit/meter usage/road",
+                unloc_formatter,
+                new ULocale("en-US"),
+                "54,463 mi",
+                "5,446 mi",
+                "545 mi",
+                "54 mi",
+                "5.4 mi",
+                "0.54 mi",
+                "300 ft",
+                "30 ft",
+                "0 ft");
+
+        unloc_formatter = NumberFormatter.with().usage("person").unit(MeasureUnit.KILOGRAM);
+        uTestCase = "unitUsage() en-GB person";
+        formatter = unloc_formatter.locale(new ULocale("en-GB"));
+        formattedNum = formatter.format(80d);
+        assertTrue(
+                uTestCase + ", got outputUnit: \"" + formattedNum.getOutputUnit().getIdentifier() + "\"",
+                MeasureUnit.forIdentifier("stone-and-pound").equals(formattedNum.getOutputUnit()));
+        assertEquals(uTestCase, "12 st, 8.4 lb", formattedNum.toString());
+        {
+            final Object[][] expectedFieldPositions = {
+                    // // Desired output: TODO(icu-units#67)
+                    // {NumberFormat.Field.INTEGER, 0, 2},
+                    // {NumberFormat.Field.MEASURE_UNIT, 3, 5},
+                    // {NumberFormat.ULISTFMT_LITERAL_FIELD, 5, 6},
+                    // {NumberFormat.Field.INTEGER, 7, 8},
+                    // {NumberFormat.DECIMAL_SEPARATOR_FIELD, 8, 9},
+                    // {NumberFormat.FRACTION_FIELD, 9, 10},
+                    // {NumberFormat.Field.MEASURE_UNIT, 11, 13}};
+
+                    // Current output: rather no fields than wrong fields
+                    {NumberFormat.Field.INTEGER, 7, 8},
+                    {NumberFormat.Field.DECIMAL_SEPARATOR, 8, 9},
+                    {NumberFormat.Field.FRACTION, 9, 10},
+            };
+
+            assertNumberFieldPositions(
+                    uTestCase + " field positions",
+                    formattedNum,
+                    expectedFieldPositions);
+        }
+        assertFormatDescending(
+                uTestCase,
+                "measure-unit/mass-kilogram usage/person",
+                "unit/kilogram usage/person",
+                unloc_formatter,
+                new ULocale("en-GB"),
+                "13,802 st, 7.2 lb",
+                "1,380 st, 3.5 lb",
+                "138 st, 0.35 lb",
+                "13 st, 11 lb",
+                "1 st, 5.3 lb",
+                "1 lb, 15 oz",
+                "0 lb, 3.1 oz",
+                "0 lb, 0.31 oz",
+                "0 lb, 0 oz");
+
+        assertFormatDescending(
+                uTestCase,
+                "usage/person unit-width-narrow measure-unit/mass-kilogram",
+                "usage/person unit-width-narrow unit/kilogram",
+                unloc_formatter.unitWidth(UnitWidth.NARROW),
+                new ULocale("en-GB"),
+                "13,802st 7.2lb",
+                "1,380st 3.5lb",
+                "138st 0.35lb",
+                "13st 11lb",
+                "1st 5.3lb",
+                "1lb 15oz",
+                "0lb 3.1oz",
+                "0lb 0.31oz",
+                "0lb 0oz");
+
+        assertFormatDescending(
+                uTestCase,
+                "usage/person unit-width-short measure-unit/mass-kilogram",
+                "usage/person unit-width-short unit/kilogram",
+                unloc_formatter.unitWidth(UnitWidth.SHORT),
+                new ULocale("en-GB"),
+                "13,802 st, 7.2 lb",
+                "1,380 st, 3.5 lb",
+                "138 st, 0.35 lb",
+                "13 st, 11 lb",
+                "1 st, 5.3 lb",
+                "1 lb, 15 oz",
+                "0 lb, 3.1 oz",
+                "0 lb, 0.31 oz",
+                "0 lb, 0 oz");
+
+        assertFormatDescending(
+                uTestCase,
+                "usage/person unit-width-full-name measure-unit/mass-kilogram",
+                "usage/person unit-width-full-name unit/kilogram",
+                unloc_formatter.unitWidth(UnitWidth.FULL_NAME),
+                new ULocale("en-GB"),
+                "13,802 stone, 7.2 pounds",
+                "1,380 stone, 3.5 pounds",
+                "138 stone, 0.35 pounds",
+                "13 stone, 11 pounds",
+                "1 stone, 5.3 pounds",
+                "1 pound, 15 ounces",
+                "0 pounds, 3.1 ounces",
+                "0 pounds, 0.31 ounces",
+                "0 pounds, 0 ounces");
+
+       assertFormatDescendingBig(
+               "Scientific notation with Usage: possible when using a reasonable Precision",
+               "scientific @### usage/default measure-unit/area-square-meter unit-width-full-name",
+               "scientific @### usage/default unit/square-meter unit-width-full-name",
+               NumberFormatter.with()
+                       .unit(MeasureUnit.SQUARE_METER)
+                       .usage("default")
+                       .notation(Notation.scientific())
+                       .precision(Precision.minMaxSignificantDigits(1, 4))
+                       .unitWidth(UnitWidth.FULL_NAME),
+               new ULocale("en-ZA"),
+               "8,765E1 square kilometres",
+               "8,765E0 square kilometres",
+               "8,765E1 hectares",
+               "8,765E0 hectares",
+               "8,765E3 square metres",
+               "8,765E2 square metres",
+               "8,765E1 square metres",
+               "8,765E0 square metres",
+               "0E0 square centimetres");
+
+        assertFormatSingle(
+                "Negative numbers: minute-and-second",
+                "measure-unit/duration-second usage/media",
+                "unit/second usage/media",
+                NumberFormatter.with().unit(MeasureUnit.SECOND).usage("media"),
+                new ULocale("nl-NL"),
+                -77.7,
+                "-1 min, 18 sec");
+
+        assertFormatSingle(
+                "Rounding Mode propagates: rounding down",
+                "usage/road measure-unit/length-centimeter rounding-mode-floor",
+                "usage/road unit/centimeter rounding-mode-floor",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.forIdentifier("centimeter"))
+                        .usage("road")
+                        .roundingMode(RoundingMode.FLOOR),
+                new ULocale("en-ZA"),
+                34500,
+                "300 m");
+
+        assertFormatSingle(
+                "Rounding Mode propagates: rounding up",
+                "usage/road measure-unit/length-centimeter rounding-mode-ceiling",
+                "usage/road unit/centimeter rounding-mode-ceiling",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.forIdentifier("centimeter"))
+                        .usage("road")
+                        .roundingMode(RoundingMode.CEILING),
+                new ULocale("en-ZA"),
+                30500,
+                "350 m");
+
+        // TODO(icu-units#38): improve unit testing coverage. E.g. add
+        // vehicle-fuel triggering inversion conversion code. Test with 0 too,
+        // to see divide-by-zero behaviour.
+    }
+
+    @Test
+    public void unitUsageErrorCodes() {
+        UnlocalizedNumberFormatter unloc_formatter;
+
+        try {
+            NumberFormatter.forSkeleton("unit/foobar");
+            fail("should give an error, because foobar is an invalid unit");
+        } catch (SkeletonSyntaxException e) {
+            // Pass
+        }
+
+        unloc_formatter = NumberFormatter.forSkeleton("usage/foobar");
+        // This does not give an error, because usage is not looked up yet.
+        //status.errIfFailureAndReset("Expected behaviour: no immediate error for invalid usage");
+
+        try {
+            // Lacking a unit results in a failure. The skeleton is "incomplete", but we
+            // support adding the unit via the fluent API, so it is not an error until
+            // we build the formatting pipeline itself.
+            unloc_formatter.locale(new ULocale("en-GB")).format(1);
+            fail("should throw IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // Pass
+        }
+
+        // Adding the unit as part of the fluent chain leads to success.
+        unloc_formatter.unit(MeasureUnit.METER).locale(new ULocale("en-GB")).format(1); /* No Exception should be thrown */
+
+    }
+
+
+    // Tests for the "skeletons" field in unitPreferenceData, as well as precision
+    // and notation overrides.
+    @Test
+    public void unitUsageSkeletons() {
+        assertFormatSingle(
+                "Default >300m road preference skeletons round to 50m",
+                "usage/road measure-unit/length-meter",
+                "usage/road unit/meter",
+                NumberFormatter.with().unit(MeasureUnit.METER).usage("road"),
+                new ULocale("en-ZA"),
+                321,
+                "300 m");
+
+        assertFormatSingle(
+                "Precision can be overridden: override takes precedence",
+                "usage/road measure-unit/length-meter @#",
+                "usage/road unit/meter @#",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER)
+                        .usage("road")
+                        .precision(Precision.maxSignificantDigits(2)),
+                new ULocale("en-ZA"),
+                321,
+                "320 m");
+
+        assertFormatSingle(
+                "Compact notation with Usage: bizarre, but possible (short)",
+                "compact-short usage/road measure-unit/length-meter",
+                "compact-short usage/road unit/meter",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER)
+                        .usage("road")
+                        .notation(Notation.compactShort()),
+                new ULocale("en-ZA"),
+                987654321L,
+                "988K km");
+
+        assertFormatSingle(
+                "Compact notation with Usage: bizarre, but possible (short, precision override)",
+                "compact-short usage/road measure-unit/length-meter @#",
+                "compact-short usage/road unit/meter @#",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER)
+                        .usage("road")
+                        .notation(Notation.compactShort())
+                        .precision(Precision.maxSignificantDigits(2)),
+                new ULocale("en-ZA"),
+                987654321L,
+                "990K km");
+
+        assertFormatSingle(
+                "Compact notation with Usage: unusual but possible (long)",
+                "compact-long usage/road measure-unit/length-meter @#",
+                "compact-long usage/road unit/meter @#",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER)
+                        .usage("road")
+                        .notation(Notation.compactLong())
+                        .precision(Precision.maxSignificantDigits(2)),
+                new ULocale("en-ZA"),
+                987654321,
+                "990 thousand km");
+
+        assertFormatSingle(
+                "Compact notation with Usage: unusual but possible (long, precision override)",
+                "compact-long usage/road measure-unit/length-meter @#",
+                "compact-long usage/road unit/meter @#",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER)
+                        .usage("road")
+                        .notation(Notation.compactLong())
+                        .precision(Precision.maxSignificantDigits(2)),
+                new ULocale("en-ZA"),
+                987654321,
+                "990 thousand km");
+
+        assertFormatSingle(
+                "Scientific notation, not recommended, requires precision override for road",
+                "scientific usage/road measure-unit/length-meter",
+                "scientific usage/road unit/meter",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER)
+                        .usage("road")
+                        .notation(Notation.scientific()),
+                new ULocale("en-ZA"),
+                321.45,
+                // Rounding to the nearest "50" is not exponent-adjusted in scientific notation:
+                "0E2 m");
+
+        assertFormatSingle(
+                "Scientific notation with Usage: possible when using a reasonable Precision",
+                "scientific usage/road measure-unit/length-meter @###",
+                "scientific usage/road unit/meter @###",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER)
+                        .usage("road")
+                        .notation(Notation.scientific())
+                        .precision(Precision.maxSignificantDigits(4)),
+                new ULocale("en-ZA"),
+                321.45, // 0.45 rounds down, 0.55 rounds up.
+                "3,214E2 m");
+
+        assertFormatSingle(
+                "Scientific notation with Usage: possible when using a reasonable Precision",
+                "scientific usage/default measure-unit/length-astronomical-unit unit-width-full-name",
+                "scientific usage/default unit/astronomical-unit unit-width-full-name",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.forIdentifier("astronomical-unit"))
+                        .usage("default")
+                        .notation(Notation.scientific())
+                        .unitWidth(UnitWidth.FULL_NAME),
+                new ULocale("en-ZA"),
+                1e20,
+                "1,5E28 kilometres");
+    }
+
+
     @Test
     public void unitCurrency() {
         assertFormatDescending(
@@ -966,6 +1801,78 @@
                 ULocale.ENGLISH,
                 -98.7654321,
                 "-98.765432%");
+
+        // ICU-20923
+        assertFormatDescendingBig(
+                "Compact Percent",
+                "compact-short percent",
+                "K %",
+                NumberFormatter.with()
+                        .notation(Notation.compactShort())
+                        .unit(NoUnit.PERCENT),
+                ULocale.ENGLISH,
+                "88M%",
+                "8.8M%",
+                "876K%",
+                "88K%",
+                "8.8K%",
+                "876%",
+                "88%",
+                "8.8%",
+                "0%");
+
+        // ICU-20923
+        assertFormatDescendingBig(
+                "Compact Percent with Scale",
+                "compact-short percent scale/100",
+                "K %x100",
+                NumberFormatter.with()
+                        .notation(Notation.compactShort())
+                        .unit(NoUnit.PERCENT)
+                        .scale(Scale.powerOfTen(2)),
+                ULocale.ENGLISH,
+                "8.8B%",
+                "876M%",
+                "88M%",
+                "8.8M%",
+                "876K%",
+                "88K%",
+                "8.8K%",
+                "876%",
+                "0%");
+
+        // ICU-20923
+        assertFormatDescendingBig(
+                "Compact Percent Long Name",
+                "compact-short percent unit-width-full-name",
+                "K % unit-width-full-name",
+                NumberFormatter.with()
+                        .notation(Notation.compactShort())
+                        .unit(NoUnit.PERCENT)
+                        .unitWidth(UnitWidth.FULL_NAME),
+                ULocale.ENGLISH,
+                "88M percent",
+                "8.8M percent",
+                "876K percent",
+                "88K percent",
+                "8.8K percent",
+                "876 percent",
+                "88 percent",
+                "8.8 percent",
+                "0 percent");
+
+        assertFormatSingle(
+                "Per Percent",
+                "measure-unit/length-meter per-measure-unit/concentr-percent unit-width-full-name",
+                "measure-unit/length-meter per-measure-unit/concentr-percent unit-width-full-name",
+                NumberFormatter.with()
+                        .unit(MeasureUnit.METER)
+                        .perUnit(MeasureUnit.PERCENT)
+                        .unitWidth(UnitWidth.FULL_NAME),
+                ULocale.ENGLISH,
+                50,
+                "50 meters per percent");
+
     }
 
     @Test
@@ -2570,10 +3477,10 @@
     @Test
     public void locale() {
         // Coverage for the locale setters.
-        assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.with().locale(Locale.ENGLISH));
-        assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.withLocale(ULocale.ENGLISH));
-        assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.withLocale(Locale.ENGLISH));
-        assertNotEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.with().locale(Locale.FRENCH));
+        Assert.assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.with().locale(Locale.ENGLISH));
+        Assert.assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.withLocale(ULocale.ENGLISH));
+        Assert.assertEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.withLocale(Locale.ENGLISH));
+        Assert.assertNotEquals(NumberFormatter.with().locale(ULocale.ENGLISH), NumberFormatter.with().locale(Locale.FRENCH));
     }
 
     @Test
@@ -2581,19 +3488,19 @@
         LocalizedNumberFormatter formatter = NumberFormatter.withLocale(ULocale.ENGLISH);
 
         // Double
-        assertEquals("514.23", formatter.format(514.23).toString());
+        Assert.assertEquals("514.23", formatter.format(514.23).toString());
 
         // Int64
-        assertEquals("51,423", formatter.format(51423L).toString());
+        Assert.assertEquals("51,423", formatter.format(51423L).toString());
 
         // BigDecimal
-        assertEquals("987,654,321,234,567,890",
+        Assert.assertEquals("987,654,321,234,567,890",
                 formatter.format(new BigDecimal("98765432123456789E1")).toString());
 
         // Also test proper DecimalQuantity bytes storage when all digits are in the fraction.
         // The number needs to have exactly 40 digits, which is the size of the default buffer.
         // (issue discovered by the address sanitizer in C++)
-        assertEquals("0.009876543210987654321098765432109876543211",
+        Assert.assertEquals("0.009876543210987654321098765432109876543211",
                 formatter.precision(Precision.unlimited())
                         .format(new BigDecimal("0.009876543210987654321098765432109876543211"))
                         .toString());
@@ -2719,11 +3626,11 @@
         }
 
         {
-            String message = "Measure unit field position with prefix and suffix";
+            String message = "Measure unit field position with prefix and suffix, composed m/s";
             FormattedNumber result = assertFormatSingle(
                     message,
                     "measure-unit/length-meter per-measure-unit/duration-second unit-width-full-name",
-                    "~unit/meter-per-second unit-width-full-name", // does not round-trip to the full skeleton above
+                    "measure-unit/length-meter per-measure-unit/duration-second unit-width-full-name",
                     NumberFormatter.with().unit(MeasureUnit.METER).perUnit(MeasureUnit.SECOND).unitWidth(UnitWidth.FULL_NAME),
                     new ULocale("ky"), // locale with the interesting data
                     68,
@@ -2740,6 +3647,27 @@
         }
 
         {
+            String message = "Measure unit field position with prefix and suffix, built-in m/s";
+            FormattedNumber result = assertFormatSingle(
+                    message,
+                    "measure-unit/speed-meter-per-second unit-width-full-name",
+                    "unit/meter-per-second unit-width-full-name",
+                    NumberFormatter.with().unit(MeasureUnit.METER_PER_SECOND).unitWidth(UnitWidth.FULL_NAME),
+                    new ULocale("ky"), // locale with the interesting data
+                    68,
+                    "секундасына 68 метр");
+            Object[][] expectedFieldPositions = new Object[][] {
+                    // field, begin index, end index
+                    {NumberFormat.Field.MEASURE_UNIT, 0, 11},
+                    {NumberFormat.Field.INTEGER, 12, 14},
+                    {NumberFormat.Field.MEASURE_UNIT, 15, 19}};
+            assertNumberFieldPositions(
+                    message,
+                    result,
+                    expectedFieldPositions);
+        }
+
+        {
             String message = "Measure unit field position with inner spaces";
             FormattedNumber result = assertFormatSingle(
                     message,
@@ -3253,6 +4181,7 @@
                 conciseSkeleton = conciseSkeleton.substring(1);
                 shouldRoundTrip = false;
             }
+
             LocalizedNumberFormatter l4 = NumberFormatter.forSkeleton(conciseSkeleton).locale(locale);
             if (shouldRoundTrip) {
                 assertEquals(message + ": Concise Skeleton:", normalized, l4.toSkeleton());
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberParserTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberParserTest.java
index 18a72c8..265aeec 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberParserTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberParserTest.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.number;
 
 import static org.junit.Assert.assertEquals;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberPermutationTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberPermutationTest.java
index d7056b9..a592b52 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberPermutationTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberPermutationTest.java
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.number;
 
 import java.io.BufferedReader;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberRangeFormatterTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberRangeFormatterTest.java
index e9a55fa..6a636c6 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberRangeFormatterTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberRangeFormatterTest.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.number;
 
 import static org.junit.Assert.assertEquals;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberSkeletonTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberSkeletonTest.java
index db6ee5e..bda900b 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberSkeletonTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberSkeletonTest.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.number;
 
 import static org.junit.Assert.assertEquals;
@@ -326,11 +326,11 @@
             { "scientific/*ee", "scientific/+ee" },
             { "integer-width/*00", "integer-width/+00" },
         };
-    
+
         for (String[] cas : cases) {
             String star = cas[0];
             String plus = cas[1];
-    
+
             String normalized = NumberFormatter.forSkeleton(plus)
                 .toSkeleton();
             assertEquals("Plus should normalize to star", star, normalized);
@@ -404,10 +404,44 @@
                 String skeleton = "measure-unit/";
                 skeleton += cas1[0] + "-" + cas1[1] + " per-measure-unit/" + cas2[0] + "-" + cas2[1];
 
+                @SuppressWarnings("unused")
                 String actual = NumberFormatter.forSkeleton(skeleton).locale(arabic).format(5142.3)
                         .toString();
                 // Just make sure it won't throw exception
             }
         }
     }
+
+    @Test
+    public void perUnitToSkeleton() {
+        String[][] cases = {
+            {"area", "acre"},
+            {"concentr", "percent"},
+            {"concentr", "permille"},
+            {"concentr", "permillion"},
+            {"concentr", "permyriad"},
+            {"digital", "bit"},
+            {"length", "yard"},
+        };
+
+        for (String[] cas1 : cases) {
+            for (String[] cas2 : cases) {
+                String skeleton = "measure-unit/" + cas1[0] + "-" + cas1[1] + " per-measure-unit/" +
+                                  cas2[0] + "-" + cas2[1];
+
+                if (cas1[0] != cas2[0] && cas1[1] != cas2[1]) {
+                    String toSkeleton = NumberFormatter.forSkeleton(skeleton).toSkeleton();
+
+                    // Ensure both subtype are in the toSkeleton.
+                    String msg;
+                    msg = toSkeleton + " should contain '" + cas1[1] + "' when constructed from " +
+                          skeleton;
+                    assertTrue(msg, toSkeleton.indexOf(cas1[1]) >= 0);
+                    msg = toSkeleton + " should contain '" + cas2[1] + "' when constructed from " +
+                          skeleton;
+                    assertTrue(msg, toSkeleton.indexOf(cas2[1]) >= 0);
+                }
+            }
+        }
+    }
 }
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/PatternStringTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/PatternStringTest.java
index aaf2d8f..ffd3283 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/PatternStringTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/PatternStringTest.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.number;
 
 import static org.junit.Assert.assertEquals;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/PropertiesTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/PropertiesTest.java
index 4529f6b..3d45dda 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/PropertiesTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/PropertiesTest.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.number;
 
 import static org.junit.Assert.assertEquals;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/AbstractBreakIteratorTests.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/AbstractBreakIteratorTests.java
index 5f471cb..65d75a3 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/AbstractBreakIteratorTests.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/AbstractBreakIteratorTests.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.rbbi;
 
 import java.text.CharacterIterator;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRegTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRegTest.java
index 3b88602..e8e643f 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRegTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRegTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java
index ca0fb5e..dc7b59d 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2004, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorTest.java
index bd29e7c..3e6413f 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java
index 2bcb32a..5152291 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2001-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBIMonkeyTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBIMonkeyTest.java
index 7549823..1a21886 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBIMonkeyTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBIMonkeyTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 package com.ibm.icu.dev.test.rbbi;
 
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITest.java
index 353d515..268f6c0 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
@@ -29,8 +29,10 @@
 import com.ibm.icu.impl.RBBIDataWrapper;
 import com.ibm.icu.text.BreakIterator;
 import com.ibm.icu.text.RuleBasedBreakIterator;
+import com.ibm.icu.util.CodePointTrie;
 import com.ibm.icu.util.ULocale;
 
+
 @RunWith(JUnit4.class)
 public class RBBITest extends TestFmwk {
     public RBBITest() {
@@ -406,7 +408,7 @@
             }
         }
 
-        List<Thread> threads = new ArrayList<Thread>();
+        List<Thread> threads = new ArrayList<>();
         for (int n = 0; n<4; ++n) {
             threads.add(new Thread(new WorkerThread()));
         }
@@ -511,7 +513,7 @@
         }
         private static final BreakIterator BREAK_ITERATOR_CACHE = BreakIterator.getWordInstance(ULocale.ROOT);
         public static List<Integer> getBoundary(String toParse) {
-            List<Integer> retVal = new ArrayList<Integer>();
+            List<Integer> retVal = new ArrayList<>();
             BreakIterator bi = (BreakIterator) BREAK_ITERATOR_CACHE.clone();
             bi.setText(toParse);
             for (int boundary=bi.first(); boundary != BreakIterator.DONE; boundary = bi.next()) {
@@ -562,7 +564,7 @@
 
         RuleBasedBreakIterator bi  = new RuleBasedBreakIterator(rules);
         String rtRules = bi.toString();        // getRules() in C++
-        assertEquals("Break Iterator rule stripping test", "!!forward; $x = [ab#]; '#' '?'; ",  rtRules);
+        assertEquals("Break Iterator rule stripping test", "!!forward;$x=[ab#];'#''?';",  rtRules);
     }
 
     @Test
@@ -577,19 +579,20 @@
         int numCharClasses = dw.fHeader.fCatCount;
 
         // Check for duplicate columns (character categories)
-        List<String> columns = new ArrayList<String>();
+        List<String> columns = new ArrayList<>();
         for (int column=0; column<numCharClasses; column++) {
             StringBuilder s = new StringBuilder();
             for (int r = 1; r < fwtbl.fNumStates; r++) {
                 int row = dw.getRowIndex(r);
-                short tableVal = fwtbl.fTable[row + RBBIDataWrapper.NEXTSTATES + column];
-                s.append((char)tableVal);
+                char tableVal = fwtbl.fTable[row + RBBIDataWrapper.NEXTSTATES + column];
+                s.append(tableVal);
             }
             columns.add(s.toString());
         }
         // Ignore column (char class) 0 while checking; it's special, and may have duplicates.
         for (int c1=1; c1<numCharClasses; c1++) {
-            for (int c2 = c1+1; c2 < numCharClasses; c2++) {
+            int limit = c1 < fwtbl.fDictCategoriesStart ? fwtbl.fDictCategoriesStart : numCharClasses;
+            for (int c2 = c1+1; c2 < limit; c2++) {
                 assertFalse(String.format("Duplicate columns (%d, %d)", c1, c2), columns.get(c1).equals(columns.get(c2)));
                 // if (columns.get(c1).equals(columns.get(c2))) {
                 //    System.out.printf("Duplicate columns (%d, %d)\n", c1, c2);
@@ -598,17 +601,16 @@
         }
 
         // Check for duplicate states.
-        List<String> rows = new ArrayList<String>();
+        List<String> rows = new ArrayList<>();
         for (int r=0; r<fwtbl.fNumStates; r++) {
             StringBuilder s = new StringBuilder();
             int row = dw.getRowIndex(r);
-            assertTrue("Accepting < -1", fwtbl.fTable[row + RBBIDataWrapper.ACCEPTING] >= -1);
             s.append(fwtbl.fTable[row + RBBIDataWrapper.ACCEPTING]);
             s.append(fwtbl.fTable[row + RBBIDataWrapper.LOOKAHEAD]);
-            s.append(fwtbl.fTable[row + RBBIDataWrapper.TAGIDX]);
+            s.append(fwtbl.fTable[row + RBBIDataWrapper.TAGSIDX]);
             for (int column=0; column<numCharClasses; column++) {
-                short tableVal = fwtbl.fTable[row + RBBIDataWrapper.NEXTSTATES + column];
-                s.append((char)tableVal);
+                char tableVal = fwtbl.fTable[row + RBBIDataWrapper.NEXTSTATES + column];
+                s.append(tableVal);
             }
             rows.add(s.toString());
         }
@@ -642,7 +644,7 @@
     public void TestTableRebuild() {
         // Test to verify that rebuilding the state tables from rule source for the standard
         // break iterator types yields the same tables as are imported from ICU4C as part of the default data.
-        List<RuleBasedBreakIterator> breakIterators = new ArrayList<RuleBasedBreakIterator>();
+        List<RuleBasedBreakIterator> breakIterators = new ArrayList<>();
         breakIterators.add((RuleBasedBreakIterator)BreakIterator.getCharacterInstance(Locale.ENGLISH));
         breakIterators.add((RuleBasedBreakIterator)BreakIterator.getWordInstance(Locale.ENGLISH));
         breakIterators.add((RuleBasedBreakIterator)BreakIterator.getSentenceInstance(Locale.ENGLISH));
@@ -655,4 +657,252 @@
             assertTrue("Reverse Table",      RBBIDataWrapper.equals(bi.fRData.fRTable, bi2.fRData.fRTable));
         }
     }
+
+    // Helper function to test 8/16 bits of trie and 8/16 bits of state table.
+    private void testTrieStateTable(int numChar, boolean expectUCPTrieValueWidthIn8Bits,
+        boolean expectStateRowIn8Bits) {
+        // Text are duplicate characters from U+4E00 to U+4FFF
+        StringBuilder builder = new StringBuilder(2 * (0x5000 - 0x4e00));
+        for (char c = 0x4e00; c < 0x5000; c++) {
+            builder.append(c).append(c);
+        }
+        String text = builder.toString();
+
+        // Generate rule which will caused length+4 character classes and
+        // length+3 states
+
+        builder = new StringBuilder(100 + 6 * numChar);
+        builder.append("!!quoted_literals_only;");
+        for (char c = 0x4e00; c < 0x4e00 + numChar; c++) {
+            builder.append("\'").append(c).append(c).append("';");
+        }
+        builder.append(".;");
+        String rules = builder.toString();
+
+        RuleBasedBreakIterator bi = new RuleBasedBreakIterator(rules);
+
+        RBBIDataWrapper dw = bi.fRData;
+        RBBIDataWrapper.RBBIStateTable fwtbl = dw.fFTable;
+        RBBIDataWrapper.RBBIStateTable rvtbl = dw.fRTable;
+
+        boolean has8BitRowDataForwardTable = (fwtbl.fFlags & RBBIDataWrapper.RBBI_8BITS_ROWS) != 0;
+        boolean has8BitRowDataReverseTable = (rvtbl.fFlags & RBBIDataWrapper.RBBI_8BITS_ROWS) != 0;
+        boolean has8BitsTrie = dw.fTrie.getValueWidth() == CodePointTrie.ValueWidth.BITS_8;
+
+        assertEquals("Number of char classes mismatch numChar=" + numChar, numChar + 4, dw.fHeader.fCatCount);
+        assertEquals("Number of states in Forward Table mismatch numChar=" + numChar, numChar + 3, fwtbl.fNumStates);
+        assertEquals("Number of states in Reverse Table mismatch numChar=" + numChar, numChar + 3, rvtbl.fNumStates);
+        assertEquals("Trie width mismatch numChar=" + numChar, expectUCPTrieValueWidthIn8Bits, has8BitsTrie);
+        assertEquals("Bits of Forward State table mismatch numChar=" + numChar,
+                     expectStateRowIn8Bits, has8BitRowDataForwardTable);
+        assertEquals("Bits of Reverse State table mismatch numChar=" + numChar,
+                     expectStateRowIn8Bits, has8BitRowDataReverseTable);
+
+        bi.setText(text);
+
+        int pos;
+        int i = 0;
+        while ((pos = bi.next()) > 0) {
+            // The first numChar should not break between the pair
+            if (i++ < numChar) {
+                assertEquals("next() mismatch numChar=" + numChar, i * 2, pos);
+            } else {
+                // After the first numChar next(), break on each character.
+                assertEquals("next() mismatch numChar=" + numChar, i + numChar, pos);
+            }
+        }
+        while ((pos = bi.previous()) > 0) {
+            // The first numChar should not break between the pair
+            if (--i < numChar) {
+                assertEquals("previous() mismatch numChar=" + numChar, i * 2, pos);
+            } else {
+                // After the first numChar next(), break on each character.
+                assertEquals("previous() mismatch numChar=" + numChar, i + numChar, pos);
+            }
+        }
+    }
+
+    @Test
+    public void Test8BitsTrieWith8BitStateTable() {
+        testTrieStateTable(251,  true /* expectUCPTrieValueWidthIn8Bits */,  true /* expectStateRowIn8Bits */);
+    }
+
+    @Test
+    public void Test16BitsTrieWith8BitStateTable() {
+        testTrieStateTable(252, false /* expectUCPTrieValueWidthIn8Bits */,  true /* expectStateRowIn8Bits */);
+    }
+
+    @Test
+    public void Test16BitsTrieWith16BitStateTable() {
+        testTrieStateTable(253, false /* expectUCPTrieValueWidthIn8Bits */, false /* expectStateRowIn8Bits */);
+    }
+
+    @Test
+    public void Test8BitsTrieWith16BitStateTable() {
+        // Test UCPTRIE_VALUE_BITS_8 with 16 bits rows. Use a different approach to
+        // create state table in 16 bits.
+
+        // Generate 510 'a' as text
+        StringBuilder builder = new StringBuilder(510);
+        for (int i = 0; i < 510; i++) {
+            builder.append('a');
+        }
+        String text = builder.toString();
+
+        builder = new StringBuilder(550);
+        builder.append("!!quoted_literals_only;'");
+        // 254 'a' in the rule will cause 256 states
+        for (int i = 0; i < 254; i++) {
+            builder.append('a');
+        }
+        builder.append("';.;");
+        String rules = builder.toString();
+
+        RuleBasedBreakIterator bi = new RuleBasedBreakIterator(rules);
+
+        RBBIDataWrapper dw = bi.fRData;
+        RBBIDataWrapper.RBBIStateTable fwtbl = dw.fFTable;
+
+        boolean has8BitRowData = (fwtbl.fFlags & RBBIDataWrapper.RBBI_8BITS_ROWS) != 0;
+        boolean has8BitsTrie = dw.fTrie.getValueWidth() == CodePointTrie.ValueWidth.BITS_8;
+        assertFalse("State table should be in 16 bits", has8BitRowData);
+        assertTrue("Trie should be in 8 bits", has8BitsTrie);
+
+        bi.setText(text);
+
+        // break positions:
+        // 254, 508, 509, 510
+        assertEquals("next()", 254, bi.next());
+        int i = 0;
+        int pos;
+        while ((pos = bi.next()) > 0) {
+            assertEquals("next()", 508 + i , pos);
+            i++;
+        }
+        i = 0;
+        while ((pos = bi.previous()) > 0) {
+             i++;
+            if (pos >= 508) {
+                assertEquals("previous()", 510 - i , pos);
+            } else {
+                assertEquals("previous()", 254 , pos);
+            }
+        }
+    }
+
+    /**
+     * Test that both compact (8 bit) and full sized (16 bit) rbbi tables work, and
+     * that there are no problems with rules at the size that transitions between the two.
+     *
+     * A rule that matches a literal string, like 'abcdefghij', will require one state and
+     * one character class per character in the string. So we can make a rule to tickle the
+     * boundaries by using literal strings of various lengths.
+     *
+     * For both the number of states and the number of character classes, the eight bit format
+     * only has 7 bits available, allowing for 128 values. For both, a few values are reserved,
+     * leaving 120 something available. This test runs the string over the range of 120 - 130,
+     * which allows some margin for changes to the number of values reserved by the rule builder
+     * without breaking the test.
+     */
+    @Test
+    public void TestTable_8_16_Bits() {
+        // testStr serves as both the source of the rule string (truncated to the desired length)
+        // and as test data to check matching behavior. A break rule consisting of the first 120
+        // characters of testStr will match the first 120 chars of the full-length testStr.
+        StringBuilder builder = new StringBuilder(0x200);
+        for (char c=0x3000; c<0x3200; ++c) {
+            builder.append(c);
+        }
+        String testStr = builder.toString();
+
+        int startLength = 120;   // The shortest rule string to test.
+        int endLength = 260;     // The longest rule string to test
+        int increment = 1;
+        for (int ruleLen=startLength; ruleLen <= endLength; ruleLen += increment) {
+            String ruleString = (new String("!!quoted_literals_only; '#';"))
+                .replace("#", testStr.substring(0, ruleLen));
+            RuleBasedBreakIterator bi = new RuleBasedBreakIterator(ruleString);
+
+            // Verify that the break iterator is functioning - that the first boundary found
+            // in testStr is at the length of the rule string.
+            bi.setText(testStr);
+            assertEquals("The first boundary found in testStr should be at the length of the rule string",
+                ruleLen, bi.next());
+
+            // Reverse iteration. Do a setText() first, to flush the break iterator's internal cache
+            // of previously detected boundaries, thus forcing the engine to run the safe reverse rules.
+            bi.setText(testStr);
+            int result = bi.preceding(ruleLen);
+            assertEquals("Reverse iteration should find the boundary at 0", 0, result);
+
+            // Verify that the range of rule lengths being tested cover the transations
+            // from 8 to 16 bit data.
+            RBBIDataWrapper dw = bi.fRData;
+            RBBIDataWrapper.RBBIStateTable fwtbl = dw.fFTable;
+
+            boolean has8BitRowData = (fwtbl.fFlags & RBBIDataWrapper.RBBI_8BITS_ROWS) != 0;
+            boolean has8BitsTrie = dw.fTrie.getValueWidth() == CodePointTrie.ValueWidth.BITS_8;
+            if (ruleLen == startLength) {
+                assertTrue("State table should be in 8 bits", has8BitRowData);
+                assertTrue("Trie should be in 8 bits", has8BitsTrie);
+            }
+            if (ruleLen == endLength) {
+                assertFalse("State table should be in 16 bits", has8BitRowData);
+                assertFalse("Trie should be in 16 bits", has8BitsTrie);
+            }
+        }
+    }
+
+    /* Test handling of a large number of look-ahead rules.
+     * The number of rules in the test exceeds the implementation limits prior to the
+     * improvements introduced with #13590.
+     *
+     * The test look-ahead rules have the form "AB / CE"; "CD / EG"; ...
+     * The text being matched is sequential, "ABCDEFGHI..."
+     *
+     * The upshot is that the look-ahead rules all match on their preceding context,
+     * and consequently must save a potential result, but then fail to match on their
+     * trailing context, so that they don't actually cause a boundary.
+     *
+     * Additionally, add a ".*" rule, so there are no boundaries unless a
+     * look-ahead hard-break rule forces one.
+     */
+    @Test
+    public void TestBug13590() {
+        StringBuilder rules = new StringBuilder("!!quoted_literals_only; !!chain; .*;\n");
+
+        int NUM_LOOKAHEAD_RULES = 50;
+        char STARTING_CHAR = '\u5000';
+        char firstChar = 0;
+        for (int ruleNum = 0; ruleNum < NUM_LOOKAHEAD_RULES; ++ruleNum) {
+            firstChar = (char) (STARTING_CHAR + ruleNum*2);
+            rules.append('\'') .append(firstChar) .append((char)(firstChar+1)) .append('\'')
+                 .append(' ') .append('/') .append(' ')
+                 .append('\'') .append((char)(firstChar+2)) .append((char)(firstChar+4)) .append('\'')
+                 .append(';') .append('\n');
+        }
+
+        // Change the last rule added from the form "UV / WY" to "UV / WX".
+        // Changes the rule so that it will match - all 4 chars are in ascending sequence.
+        String rulesStr = rules.toString().replace((char)(firstChar+4), (char)(firstChar+3));
+
+        RuleBasedBreakIterator bi = new RuleBasedBreakIterator(rulesStr);
+        // bi.dump(System.out);
+
+        StringBuilder testString = new StringBuilder();
+        for (char c = (char) (STARTING_CHAR-200); c < STARTING_CHAR + NUM_LOOKAHEAD_RULES*4; ++c) {
+            testString.append(c);
+        }
+        bi.setText(testString);
+
+        int breaksFound = 0;
+        while (bi.next() != BreakIterator.DONE) {
+            ++breaksFound;
+        }
+
+        // Two matches are expected, one from the last rule that was explicitly modified,
+        // and one at the end of the text.
+        assertEquals("Wrong number of breaks found", 2, breaksFound);
+    }
+
 }
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITestExtended.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITestExtended.java
index a24d4ee..c809da8 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITestExtended.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITestExtended.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * Created on May 5, 2004
  *
@@ -245,6 +245,11 @@
         case PARSE_DATA:
             if (c == '•') {
                 int  breakIdx = tp.dataToBreak.length();
+                if (tp.expectedBreaks[breakIdx] != 0) {
+                    errln(String.format(
+                            "rbbitst.txt:%d:%d adjacent expected breaks with no intervening test text",
+                            lineNum, column));
+                }
                 tp.expectedBreaks[breakIdx] = -1;
                 tp.srcLine[breakIdx]        = lineNum;
                 tp.srcCol[breakIdx]         = column;
@@ -388,6 +393,11 @@
                     tagValue = -1;
                 }
                 int  breakIdx = tp.dataToBreak.length();
+                if (tp.expectedBreaks[breakIdx] != 0) {
+                    errln(String.format(
+                            "rbbitst.txt:%d:%d adjacent expected breaks with no intervening test text",
+                            lineNum, column));
+                }
                 tp.expectedBreaks[breakIdx] = tagValue;
                 tp.srcLine[breakIdx]        = lineNum;
                 tp.srcCol[breakIdx]         = column;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITestMonkey.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITestMonkey.java
index 10e0522..9499b19 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITestMonkey.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITestMonkey.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2016 International Business Machines Corporation and
@@ -1895,6 +1895,7 @@
 
     // Helper function for formatting error output.
     // Display a code point in "\\uxxxx" or "\Uxxxxxxxx" format
+    @SuppressWarnings("unused")
     private static void appendCharToBuf(StringBuffer dest, int c, int fieldLen) {
         String hexChars = "0123456789abcdef";
         if (c < 0x10000) {
@@ -1927,6 +1928,7 @@
         StringBuffer     testText         = new StringBuffer();
         int              numCharClasses;
         List             chClasses;
+        @SuppressWarnings("unused")
         int              expectedCount    = 0;
         boolean[]        expectedBreaks   = new boolean[TESTSTRINGLEN*2 + 1];
         boolean[]        forwardBreaks    = new boolean[TESTSTRINGLEN*2 + 1];
@@ -2201,13 +2203,13 @@
 
                         // BMP or SMP character in hex
                         if (c >= 0x10000) {
-                            buffer.append("\\U").append(String.format("%08x", (int) c));
+                            buffer.append("\\U").append(String.format("%08x", c));
                         } else {
-                            buffer.append("    \\u").append(String.format("%04x", (int) c));
+                            buffer.append("    \\u").append(String.format("%04x", c));
                         }
 
                         buffer.append(
-                            String.format(String.format(" %%-%ds", (int) classNameSize),
+                            String.format(String.format(" %%-%ds", classNameSize),
                               mk.classNameFromCodepoint(c)))
                             .append(String.format(" %-40s", mk.getAppliedRule(ci)))
                             .append(String.format(" %-40s\n", UCharacter.getExtendedName(c)));
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/break_rules/readme.txt b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/break_rules/readme.txt
index 33da959..34b1b27 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/break_rules/readme.txt
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/break_rules/readme.txt
@@ -1,6 +1,6 @@
 file: main/tests/core/src/com/ibm/icu/dev/test/rbbi/break_rules/readme.txt
 Copyright (C) 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 
 Copyright (c) 2015-2016, International Business Machines Corporation and others. All Rights Reserved.
 
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/break_rules/sentence.txt b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/break_rules/sentence.txt
index ed0918f..5f6843c 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/break_rules/sentence.txt
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/break_rules/sentence.txt
@@ -1,6 +1,6 @@
 #
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 
 # Copyright (c) 2016, International Business Machines Corporation and others. All Rights Reserved.
 # file: sentence.txt
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/package.html b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/package.html
index 9a53110..cebe86e 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/package.html
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/package.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--  Copyright (C) 2016 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--  Copyright (C) 2000-2004, International Business Machines Corporation and
   others. All Rights Reserved.
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt
index 9962f94..98cf688 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt
@@ -289,7 +289,7 @@
 # वृद्धिसँग ;
 <data>•वृ•द्धि•सँ•ग•</data>
 # अंतःज्ञानी  ;
-<data>•अं•तः•ज्ञा•नी••</data>
+<data>•अं•तः•ज्ञा•नी• •</data>
 # गन्नदी॑धिम ;
 <data>•ग•न्न•दी॑•धि•म•</data>
 # प्प्रप॑द्ये॒ ;
@@ -319,7 +319,7 @@
 # भर्तुर्भोगः ;
 <data>•भ•र्तु•र्भो•गः•</data>
 # शॆत्युल  ;
-<data>•शॆ•त्यु•ल••</data>
+<data>•शॆ•त्यु•ल• •</data>
 # महारॆन्य ;
 <data>•म•हा•रॆ•न्य•</data>
 # सॆक्युल ;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/CalendarHandler.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/CalendarHandler.java
index 8d07172..03844a4 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/CalendarHandler.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/CalendarHandler.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/CompatibilityTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/CompatibilityTest.java
index 1320dfe..cc6cd27 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/CompatibilityTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/CompatibilityTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/CoverageTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/CoverageTest.java
index ffe623d..a96f9b2 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/CoverageTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/CoverageTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2016, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/ExceptionHandler.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/ExceptionHandler.java
index 34c3c58..4c1cd4b 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/ExceptionHandler.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/ExceptionHandler.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2013, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/FormatHandler.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/FormatHandler.java
index 1ddf239..5bfdaac 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/FormatHandler.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/FormatHandler.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (c) 2004-2014, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/SerializableChecker.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/SerializableChecker.java
index b6b66a6..f4fe5a8 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/SerializableChecker.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/SerializableChecker.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/SerializableTestUtility.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/SerializableTestUtility.java
index 5d4ef83..f4f27e1 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/SerializableTestUtility.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/SerializableTestUtility.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and
@@ -47,6 +47,7 @@
 import com.ibm.icu.util.GregorianCalendar;
 import com.ibm.icu.util.ICUCloneNotSupportedException;
 import com.ibm.icu.util.ICUException;
+import com.ibm.icu.util.ICUInputTooLongException;
 import com.ibm.icu.util.ICUUncheckedIOException;
 import com.ibm.icu.util.InitialTimeZoneRule;
 import com.ibm.icu.util.RuleBasedTimeZone;
@@ -749,6 +750,18 @@
         }
     }
 
+    private static class ICUInputTooLongExceptionHandler extends ExceptionHandlerBase {
+        @Override
+        public Object[] getTestObjects() {
+            return new ICUInputTooLongException[] {
+                    new ICUInputTooLongException(),
+                    new ICUInputTooLongException("msg1"),
+                    new ICUInputTooLongException(new RuntimeException("rte1")),
+                    new ICUInputTooLongException("msg2", new RuntimeException("rte2"))
+            };
+        }
+    }
+
     private static HashMap map = new HashMap();
 
     static {
@@ -843,6 +856,7 @@
         map.put("com.ibm.icu.util.ICUException", new ICUExceptionHandler());
         map.put("com.ibm.icu.util.ICUUncheckedIOException", new ICUUncheckedIOExceptionHandler());
         map.put("com.ibm.icu.util.ICUCloneNotSupportedException", new ICUCloneNotSupportedExceptionHandler());
+        map.put("com.ibm.icu.util.ICUInputTooLongException", new ICUInputTooLongExceptionHandler());
     }
 
     /*
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/SerializableWriter.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/SerializableWriter.java
index c7c8775..fd620fc 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/SerializableWriter.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/SerializableWriter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.ChineseDateFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.ChineseDateFormat.dat
deleted file mode 100644
index 20eb17f..0000000
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.ChineseDateFormat.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat
deleted file mode 100644
index 2083dae..0000000
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DateFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DateFormat.dat
deleted file mode 100644
index 739e41d..0000000
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DateFormat.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DateFormatSymbols.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DateFormatSymbols.dat
deleted file mode 100644
index 88a2a02..0000000
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DateFormatSymbols.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DateIntervalFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DateIntervalFormat.dat
deleted file mode 100644
index 27a4a18..0000000
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DateIntervalFormat.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.SimpleDateFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.SimpleDateFormat.dat
deleted file mode 100644
index 53ff352..0000000
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.SimpleDateFormat.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.BuddhistCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.BuddhistCalendar.dat
deleted file mode 100644
index 03d1cc2..0000000
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.BuddhistCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.ChineseCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.ChineseCalendar.dat
deleted file mode 100644
index c313d5e..0000000
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.ChineseCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.CopticCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.CopticCalendar.dat
deleted file mode 100644
index 1eb78e6..0000000
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.CopticCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.DangiCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.DangiCalendar.dat
deleted file mode 100644
index 4228f3e..0000000
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.DangiCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.EthiopicCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.EthiopicCalendar.dat
deleted file mode 100644
index d01c6fc..0000000
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.EthiopicCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.HebrewCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.HebrewCalendar.dat
deleted file mode 100644
index 6adf440..0000000
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.HebrewCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.IndianCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.IndianCalendar.dat
deleted file mode 100644
index 7b10da7..0000000
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.IndianCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.JapaneseCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.JapaneseCalendar.dat
deleted file mode 100644
index a6002d9..0000000
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.JapaneseCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.NoUnit.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.NoUnit.dat
deleted file mode 100644
index 9f01834..0000000
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.NoUnit.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.PersianCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.PersianCalendar.dat
deleted file mode 100644
index 4ea12c1..0000000
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.PersianCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.TaiwanCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.TaiwanCalendar.dat
deleted file mode 100644
index 181ac0f..0000000
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.TaiwanCalendar.dat
+++ /dev/null
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.DateNumberFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.DateNumberFormat.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.DateNumberFormat.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.DateNumberFormat.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.IllegalIcuArgumentException.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.IllegalIcuArgumentException.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.IllegalIcuArgumentException.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.IllegalIcuArgumentException.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.InvalidFormatException.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.InvalidFormatException.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.InvalidFormatException.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.InvalidFormatException.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.JavaTimeZone.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.JavaTimeZone.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.JavaTimeZone.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.JavaTimeZone.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.OlsonTimeZone.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.OlsonTimeZone.dat
similarity index 91%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.OlsonTimeZone.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.OlsonTimeZone.dat
index 6d4fd1c..7b59dea 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.OlsonTimeZone.dat
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.OlsonTimeZone.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.RelativeDateFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.RelativeDateFormat.dat
similarity index 88%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.RelativeDateFormat.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.RelativeDateFormat.dat
index 6a4194b..7a405de 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.RelativeDateFormat.dat
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.RelativeDateFormat.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.TZDBTimeZoneNames.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.TZDBTimeZoneNames.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.TZDBTimeZoneNames.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.TZDBTimeZoneNames.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.TimeZoneAdapter.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.TimeZoneAdapter.dat
similarity index 91%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.TimeZoneAdapter.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.TimeZoneAdapter.dat
index 93a59c8..c8f7cc8 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.TimeZoneAdapter.dat
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.TimeZoneAdapter.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.TimeZoneGenericNames.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.TimeZoneGenericNames.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.TimeZoneGenericNames.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.TimeZoneGenericNames.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.TimeZoneNamesImpl.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.TimeZoneNamesImpl.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.TimeZoneNamesImpl.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.TimeZoneNamesImpl.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.locale.LocaleSyntaxException.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.locale.LocaleSyntaxException.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.locale.LocaleSyntaxException.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.locale.LocaleSyntaxException.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.number.CustomSymbolCurrency.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.number.CustomSymbolCurrency.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.number.CustomSymbolCurrency.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.number.CustomSymbolCurrency.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.number.DecimalFormatProperties.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.number.DecimalFormatProperties.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.number.DecimalFormatProperties.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.number.DecimalFormatProperties.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.number.LocalizedNumberFormatterAsFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.number.LocalizedNumberFormatterAsFormat.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.number.LocalizedNumberFormatterAsFormat.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.number.LocalizedNumberFormatterAsFormat.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.number.Properties.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.number.Properties.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.impl.number.Properties.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.impl.number.Properties.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.math.BigDecimal.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.math.BigDecimal.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.math.BigDecimal.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.math.BigDecimal.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.math.MathContext.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.math.MathContext.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.math.MathContext.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.math.MathContext.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.number.SkeletonSyntaxException.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.number.SkeletonSyntaxException.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.number.SkeletonSyntaxException.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.number.SkeletonSyntaxException.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.ArabicShapingException.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.ArabicShapingException.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.ArabicShapingException.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.ArabicShapingException.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.ChineseDateFormat$Field.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.ChineseDateFormat$Field.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.ChineseDateFormat$Field.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.ChineseDateFormat$Field.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.ChineseDateFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.ChineseDateFormat.dat
new file mode 100644
index 0000000..4834483
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.ChineseDateFormat.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat
new file mode 100644
index 0000000..d6968d8
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.CompactDecimalFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.CompactDecimalFormat.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.CompactDecimalFormat.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.CompactDecimalFormat.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.CurrencyPluralInfo.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.CurrencyPluralInfo.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.CurrencyPluralInfo.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.CurrencyPluralInfo.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DateFormat$Field.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DateFormat$Field.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DateFormat$Field.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DateFormat$Field.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DateFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DateFormat.dat
new file mode 100644
index 0000000..d6e9bad
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DateFormat.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DateFormatSymbols.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DateFormatSymbols.dat
new file mode 100644
index 0000000..dd24e54
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DateFormatSymbols.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DateIntervalFormat$SpanField.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DateIntervalFormat$SpanField.dat
new file mode 100644
index 0000000..14859f7
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DateIntervalFormat$SpanField.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DateIntervalFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DateIntervalFormat.dat
new file mode 100644
index 0000000..9c8b782
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DateIntervalFormat.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DateIntervalInfo.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DateIntervalInfo.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DateIntervalInfo.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DateIntervalInfo.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DecimalFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DecimalFormat.dat
similarity index 98%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DecimalFormat.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DecimalFormat.dat
index 16db749..290b550 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DecimalFormat.dat
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DecimalFormat.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DecimalFormatSymbols.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DecimalFormatSymbols.dat
similarity index 98%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DecimalFormatSymbols.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DecimalFormatSymbols.dat
index c079d0e..9f759c9 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.DecimalFormatSymbols.dat
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.DecimalFormatSymbols.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.ListFormatter$Field.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.ListFormatter$Field.dat
new file mode 100644
index 0000000..bf31c62
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.ListFormatter$Field.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.ListFormatter$SpanField.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.ListFormatter$SpanField.dat
new file mode 100644
index 0000000..1ccfe3f
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.ListFormatter$SpanField.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.MeasureFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.MeasureFormat.dat
similarity index 94%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.MeasureFormat.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.MeasureFormat.dat
index 8354bc9..1fa3f84 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.MeasureFormat.dat
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.MeasureFormat.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.MessageFormat$Field.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.MessageFormat$Field.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.MessageFormat$Field.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.MessageFormat$Field.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.MessageFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.MessageFormat.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.MessageFormat.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.MessageFormat.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.NumberFormat$Field.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.NumberFormat$Field.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.NumberFormat$Field.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.NumberFormat$Field.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.NumberFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.NumberFormat.dat
similarity index 96%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.NumberFormat.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.NumberFormat.dat
index 2bf1de7..a8845c6 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.NumberFormat.dat
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.NumberFormat.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.PluralFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.PluralFormat.dat
similarity index 95%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.PluralFormat.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.PluralFormat.dat
index 6fbc975..5a60bec 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.PluralFormat.dat
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.PluralFormat.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.PluralRules.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.PluralRules.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.PluralRules.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.PluralRules.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.RelativeDateTimeFormatter$Field.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.RelativeDateTimeFormatter$Field.dat
new file mode 100644
index 0000000..1977b04
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.RelativeDateTimeFormatter$Field.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.RuleBasedNumberFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.RuleBasedNumberFormat.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.RuleBasedNumberFormat.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.RuleBasedNumberFormat.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.SelectFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.SelectFormat.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.SelectFormat.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.SelectFormat.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.SimpleDateFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.SimpleDateFormat.dat
new file mode 100644
index 0000000..a8f0de5
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.SimpleDateFormat.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.StringPrepParseException.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.StringPrepParseException.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.StringPrepParseException.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.StringPrepParseException.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.TimeUnitFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.TimeUnitFormat.dat
similarity index 94%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.TimeUnitFormat.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.TimeUnitFormat.dat
index 2787749..2eb975f 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.TimeUnitFormat.dat
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.TimeUnitFormat.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.TimeZoneFormat.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.TimeZoneFormat.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.text.TimeZoneFormat.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.text.TimeZoneFormat.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.AnnualTimeZoneRule.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.AnnualTimeZoneRule.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.AnnualTimeZoneRule.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.AnnualTimeZoneRule.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.BuddhistCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.BuddhistCalendar.dat
new file mode 100644
index 0000000..620b43b
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.BuddhistCalendar.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.Calendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.Calendar.dat
similarity index 65%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.Calendar.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.Calendar.dat
index 2092fa7..ca2d0d5 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.Calendar.dat
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.Calendar.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.ChineseCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.ChineseCalendar.dat
new file mode 100644
index 0000000..dfed999
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.ChineseCalendar.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.CopticCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.CopticCalendar.dat
new file mode 100644
index 0000000..ccb2f4c
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.CopticCalendar.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.Currency.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.Currency.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.Currency.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.Currency.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.DangiCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.DangiCalendar.dat
new file mode 100644
index 0000000..47437cd
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.DangiCalendar.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.DateInterval.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.DateInterval.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.DateInterval.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.DateInterval.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.DateTimeRule.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.DateTimeRule.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.DateTimeRule.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.DateTimeRule.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.EthiopicCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.EthiopicCalendar.dat
new file mode 100644
index 0000000..57488be
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.EthiopicCalendar.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.GregorianCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.GregorianCalendar.dat
similarity index 65%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.GregorianCalendar.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.GregorianCalendar.dat
index 029aef1..35d6281 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.GregorianCalendar.dat
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.GregorianCalendar.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.HebrewCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.HebrewCalendar.dat
new file mode 100644
index 0000000..4cbb5a7
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.HebrewCalendar.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.ICUCloneNotSupportedException.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.ICUCloneNotSupportedException.dat
similarity index 77%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.ICUCloneNotSupportedException.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.ICUCloneNotSupportedException.dat
index f412155..b3ab0bc 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.ICUCloneNotSupportedException.dat
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.ICUCloneNotSupportedException.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.ICUException.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.ICUException.dat
similarity index 75%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.ICUException.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.ICUException.dat
index 031c360..d131d32 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.ICUException.dat
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.ICUException.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.ICUInputTooLongException.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.ICUInputTooLongException.dat
new file mode 100644
index 0000000..8ee2224
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.ICUInputTooLongException.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.ICUUncheckedIOException.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.ICUUncheckedIOException.dat
similarity index 76%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.ICUUncheckedIOException.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.ICUUncheckedIOException.dat
index 9daa6d1..9ee30d4 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.ICUUncheckedIOException.dat
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.ICUUncheckedIOException.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.IllformedLocaleException.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.IllformedLocaleException.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.IllformedLocaleException.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.IllformedLocaleException.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.IndianCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.IndianCalendar.dat
new file mode 100644
index 0000000..e126eb3
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.IndianCalendar.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.InitialTimeZoneRule.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.InitialTimeZoneRule.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.InitialTimeZoneRule.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.InitialTimeZoneRule.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.IslamicCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.IslamicCalendar.dat
similarity index 63%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.IslamicCalendar.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.IslamicCalendar.dat
index 1978d6c..cd4ad97 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.IslamicCalendar.dat
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.IslamicCalendar.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.JapaneseCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.JapaneseCalendar.dat
new file mode 100644
index 0000000..bc5fb6c
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.JapaneseCalendar.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.MeasureUnit.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.MeasureUnit.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.MeasureUnit.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.MeasureUnit.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.PersianCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.PersianCalendar.dat
new file mode 100644
index 0000000..dc80d63
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.PersianCalendar.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.RuleBasedTimeZone.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.RuleBasedTimeZone.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.RuleBasedTimeZone.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.RuleBasedTimeZone.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.SimpleTimeZone.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.SimpleTimeZone.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.SimpleTimeZone.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.SimpleTimeZone.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.TaiwanCalendar.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.TaiwanCalendar.dat
new file mode 100644
index 0000000..20e76da
--- /dev/null
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.TaiwanCalendar.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.TimeUnit.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.TimeUnit.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.TimeUnit.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.TimeUnit.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.TimeZone.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.TimeZone.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.TimeZone.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.TimeZone.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.ULocale.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.ULocale.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.ULocale.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.ULocale.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.UResourceTypeMismatchException.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.UResourceTypeMismatchException.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.UResourceTypeMismatchException.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.UResourceTypeMismatchException.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.VTimeZone.dat b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.VTimeZone.dat
similarity index 100%
rename from icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_63.1/com.ibm.icu.util.VTimeZone.dat
rename to icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_68.1/com.ibm.icu.util.VTimeZone.dat
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/shaping/ArabicShapingRegTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/shaping/ArabicShapingRegTest.java
index a71aaba..f8d81e4 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/shaping/ArabicShapingRegTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/shaping/ArabicShapingRegTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2012, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/shaping/DataDrivenArabicShapingRegTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/shaping/DataDrivenArabicShapingRegTest.java
index b4736b7..406e4f0 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/shaping/DataDrivenArabicShapingRegTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/shaping/DataDrivenArabicShapingRegTest.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 package com.ibm.icu.dev.test.shaping;
 
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/IDNAConformanceTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/IDNAConformanceTest.java
index 5dcd8d9..3319a79 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/IDNAConformanceTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/IDNAConformanceTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2015, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/IDNAReference.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/IDNAReference.java
index f290c77..e4a2c0c 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/IDNAReference.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/IDNAReference.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/NFS4StringPrep.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/NFS4StringPrep.java
index b1077f5..e49ab20 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/NFS4StringPrep.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/NFS4StringPrep.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/NamePrepTransform.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/NamePrepTransform.java
index f76f2a6..4870d94 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/NamePrepTransform.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/NamePrepTransform.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/PunycodeReference.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/PunycodeReference.java
index f07a328..29906b5 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/PunycodeReference.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/PunycodeReference.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2007, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestData.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestData.java
index ac8decc..7d4df5a 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestData.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestIDNA.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestIDNA.java
index 3b67c79..a06da26 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestIDNA.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestIDNA.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestIDNARef.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestIDNARef.java
index 40260e8..24c41fc 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestIDNARef.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestIDNARef.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestInputDataStructure.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestInputDataStructure.java
index fe3bce7..a599e23 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestInputDataStructure.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestInputDataStructure.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 
  *******************************************************************************
@@ -148,4 +148,4 @@
     public void setType(String type) {
         this.type = type;
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestStringPrep.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestStringPrep.java
index f4fbfb9..31770b4 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestStringPrep.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestStringPrep.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2009, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestStringPrepProfiles.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestStringPrepProfiles.java
index 9186ec3..aec93be 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestStringPrepProfiles.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestStringPrepProfiles.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/text/SpoofCheckerTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/text/SpoofCheckerTest.java
index 7a5c3f7..d76e01d 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/text/SpoofCheckerTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/text/SpoofCheckerTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2015, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timescale/TimeScaleAPITest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timescale/TimeScaleAPITest.java
index 8116f0f..7c1c593 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timescale/TimeScaleAPITest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timescale/TimeScaleAPITest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timescale/TimeScaleDataTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timescale/TimeScaleDataTest.java
index de8d697..048d303 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timescale/TimeScaleDataTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timescale/TimeScaleDataTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timescale/TimeScaleMonkeyTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timescale/TimeScaleMonkeyTest.java
index 5f4b241..5574bd7 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timescale/TimeScaleMonkeyTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timescale/TimeScaleMonkeyTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ****************************************************************************
  * Copyright (C) 2004-2010, International Business Machines Corporation and *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java
index becd08f..b3a856a 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneBoundaryTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneBoundaryTest.java
index a5fa09d..9f29c25 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneBoundaryTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneBoundaryTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2000-2015, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneOffsetLocalTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneOffsetLocalTest.java
index 05c4c9b..6b8d981 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneOffsetLocalTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneOffsetLocalTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2008, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneRegressionTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneRegressionTest.java
index 4f18c38..be774fa 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneRegressionTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneRegressionTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2000-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneRuleTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneRuleTest.java
index 70f5d90..34c4e3b 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneRuleTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneRuleTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007-2011, International Business Machines Corporation and    *
@@ -1847,4 +1847,4 @@
             errln("Fail: Exception thrown - " + e.getMessage());
         }
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
index 5d75995..180894d 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2000-2016, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/BytesTrieTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/BytesTrieTest.java
index 8efea3a..da16f83 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/BytesTrieTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/BytesTrieTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CalendarFieldsSet.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CalendarFieldsSet.java
index e1ae033..a647ea2 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CalendarFieldsSet.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CalendarFieldsSet.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CharsTrieTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CharsTrieTest.java
index 3fdc2ed..b7c3e98 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CharsTrieTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CharsTrieTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CodePointTrieTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CodePointTrieTest.java
index 86f156d..eed78c4 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CodePointTrieTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CodePointTrieTest.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // created: 2018jul10 Markus W. Scherer
 
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CompactArrayTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CompactArrayTest.java
index fbe27c3..4f2289c 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CompactArrayTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CompactArrayTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CurrencyTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CurrencyTest.java
index bb024e9..45a477f 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CurrencyTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/CurrencyTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2002-2016, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DataDrivenTestHelper.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DataDrivenTestHelper.java
index 58426bb..274dd15 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DataDrivenTestHelper.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DataDrivenTestHelper.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.util;
 
 import java.io.BufferedReader;
@@ -184,4 +184,4 @@
     public List<List<String>> getLines() {
         return lines;
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DateTimeStyleSet.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DateTimeStyleSet.java
index a8870cc..dbdbbc8 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DateTimeStyleSet.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DateTimeStyleSet.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilities.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilities.java
index 86c2ce7..3b931f8 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilities.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilities.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilitiesData.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilitiesData.java
index 0cf8604..44d3221 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilitiesData.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilitiesData.java
@@ -10,7 +10,7 @@
 package com.ibm.icu.dev.test.util;
 
 public class DebugUtilitiesData extends Object {
-    public static final String ICU4C_VERSION="67.1";
+    public static final String ICU4C_VERSION="68.2";
     public static final int UDebugEnumType = 0;
     public static final int UCalendarDateFields = 1;
     public static final int UCalendarMonths = 2;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilitiesTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilitiesTest.java
index b666502..451e7c5 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilitiesTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilitiesTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DisplayNameTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DisplayNameTest.java
index 483875d..031d327 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DisplayNameTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/DisplayNameTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2008, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/Equator.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/Equator.java
index 22ae399..c7db3fc 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/Equator.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/Equator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2004, International Business Machines Corporation and    *
@@ -26,4 +26,4 @@
      * @return a hash code for the object
      */
     public int getHashCode(Object object);
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/FieldsSet.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/FieldsSet.java
index 343d695..16b997b 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/FieldsSet.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/FieldsSet.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/GenderInfoTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/GenderInfoTest.java
index cd1ca03..3dd1d72 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/GenderInfoTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/GenderInfoTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2012, Google, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUBinaryTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUBinaryTest.java
index 645a672..1ecf03f 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUBinaryTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUBinaryTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2014, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java
index c40b7f0..8462e64 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2016, International Business Machines Corporation and
@@ -699,7 +699,7 @@
     public void TestLocaleDisplayNames() {
         ULocale[] locales = ULocale.getAvailableLocales();
 
-        Set<String> localCountryExceptions = new HashSet<String>();
+        Set<String> localCountryExceptions = new HashSet<>();
         if (logKnownIssue("cldrbug:8903",
                 "No localized region name for lrc_IQ, lrc_IR, nus_SS, nds_DE, su_Latn_ID")) {
             localCountryExceptions.add("lrc_IQ");
@@ -710,7 +710,7 @@
             localCountryExceptions.add("su_Latn_ID");
         }
 
-        Set<String> localLangExceptions = new HashSet<String>();
+        Set<String> localLangExceptions = new HashSet<>();
         if (logKnownIssue("cldrbug:8903", "No localized language name for nmg, nds")) {
             localLangExceptions.add("nmg");
             localLangExceptions.add("nds");
@@ -988,7 +988,7 @@
         }
     }
     private Set<String> setFromEnumeration(Enumeration<String> e) {
-        TreeSet<String> set = new TreeSet<String>();
+        TreeSet<String> set = new TreeSet<>();
         while (e.hasMoreElements()) {
             set.add(e.nextElement());
         }
@@ -1119,7 +1119,10 @@
         if (rb7.getKey() != null) {
             errln("getKey() call should have returned null.");
         }
-        if (((ICUResourceBundle)rb1).findTopLevel(0) == null) {
+        // The following test may no longer be exercised if
+        // rb1 is for a locale like en_US with an empty resource bundle.
+        // (Before ICU-21028 such a bundle would have contained at least a Version string.)
+        if (rb1.getSize() != 0 && ((ICUResourceBundle)rb1).findTopLevel(0) == null) {
             errln("Error calling findTopLevel().");
         }
         if (ICUResourceBundle.getFullLocaleNameSet() == null) {
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceTest.java
index cd00d29..5d8f9c6 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2013, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceTestSample.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceTestSample.java
index 81f6d9b..c81b7df 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceTestSample.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceTestSample.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java
index c5405e2..d5a4aa7 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2013, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleAliasTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleAliasTest.java
index 2c79349..997fd29 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleAliasTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleAliasTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2016, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleBuilderTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleBuilderTest.java
index c0da0ae..4d5dde6 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleBuilderTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleBuilderTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleDataTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleDataTest.java
index 7c2c147..4f4840c 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleDataTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleDataTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2003-2016, International Business Machines Corporation and    *
@@ -92,13 +92,13 @@
                 continue;
             }
             ULocale fullLoc = ULocale.addLikelySubtags(locale);
-            if(fullLoc.toString().indexOf("_US") >= 0 || fullLoc.toString().indexOf("_MM") >= 0 || fullLoc.toString().indexOf("_LR") >= 0){
+            if(fullLoc.toString().indexOf("_US") >= 0 || fullLoc.toString().indexOf("_LR") >= 0){
                 if(ms == LocaleData.MeasurementSystem.US){
                     logln("Got the expected measurement system for locale: " + locale);
                 }else{
                     errln("Did not get the expected measurement system for locale: "+ locale);
                 }
-            } else if(fullLoc.toString().indexOf("_GB") >= 0){
+            } else if(fullLoc.toString().indexOf("_GB") >= 0 || fullLoc.toString().indexOf("_MM") >= 0){
                 if(ms == LocaleData.MeasurementSystem.UK){
                     logln("Got the expected measurement system for locale: " + locale);
                 }else{
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleDistanceTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleDistanceTest.java
index 39388fc..f75bdff 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleDistanceTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleDistanceTest.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.util;
 
 import java.io.IOException;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleMatcherTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleMatcherTest.java
index 8ee44ae..f1dad9e 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleMatcherTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleMatcherTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************************
  * Copyright (C) 2009-2015, Google, Inc.; International Business Machines Corporation and *
@@ -222,6 +222,30 @@
     }
 
     @Test
+    public void testNoDefault() {
+        // We want null instead of any default locale.
+        List<ULocale> locales = Arrays.asList(
+                new ULocale("fr"), new ULocale("en_GB"), new ULocale("en"));
+        LocaleMatcher matcher = LocaleMatcher.builder().
+            setSupportedULocales(locales).
+            setNoDefaultLocale().
+            build();
+        ULocale best = matcher.getBestMatch("en_GB");
+        assertEquals("getBestMatch(en_GB)", "en_GB", locString(best));
+        best = matcher.getBestMatch("en_US");
+        assertEquals("getBestMatch(en_US)", "en", locString(best));
+        best = matcher.getBestMatch("fr_FR");
+        assertEquals("getBestMatch(fr_FR)", "fr", locString(best));
+        best = matcher.getBestMatch("ja_JP");
+        assertEquals("getBestMatch(ja_JP)", "(null)", locString(best));
+        LocaleMatcher.Result result = matcher.getBestMatchResult(new ULocale("ja_JP"));
+        assertEquals("getBestMatchResult(ja_JP).supp",
+                     "(null)", locString(result.getSupportedULocale()));
+        assertEquals("getBestMatchResult(ja_JP).suppIndex",
+                     -1, result.getSupportedIndex());
+    }
+
+    @Test
     public void testFallback() {
         // check that script fallbacks are handled right
         final LocaleMatcher matcher = newLocaleMatcher("zh_CN, zh_TW, iw");
@@ -341,7 +365,7 @@
     }
 
     @Test
-    public void testMatchGrandfatheredCode() {
+    public void testMatchLegacyCode() {
         final LocaleMatcher matcher = newLocaleMatcher("fr, i_klingon, en_Latn_US");
         assertEquals("en_Latn_US", matcher.getBestMatch("en_GB_oed").toString());
         // assertEquals("tlh", matcher.getBestMatch("i_klingon").toString());
@@ -654,6 +678,29 @@
     }
 
     @Test
+    public void testMaxDistanceAndIsMatch() {
+        LocaleMatcher.Builder builder = LocaleMatcher.builder();
+        LocaleMatcher standard = builder.build();
+        ULocale germanLux = new ULocale("de-LU");
+        ULocale germanPhoenician = new ULocale("de-Phnx-AT");
+        ULocale greek = new ULocale("el");
+        assertTrue("standard de-LU / de", standard.isMatch(germanLux, ULocale.GERMAN));
+        assertFalse("standard de-Phnx-AT / de", standard.isMatch(germanPhoenician, ULocale.GERMAN));
+
+        // Allow a script difference to still match.
+        LocaleMatcher loose = builder.setMaxDistance(germanPhoenician, ULocale.GERMAN).build();
+        assertTrue("loose de-LU / de", loose.isMatch(germanLux, ULocale.GERMAN));
+        assertTrue("loose de-Phnx-AT / de", loose.isMatch(germanPhoenician, ULocale.GERMAN));
+        assertFalse("loose el / de", loose.isMatch(greek, ULocale.GERMAN));
+
+        // Allow at most a regional difference.
+        LocaleMatcher regional = builder.setMaxDistance(new Locale("de", "AT"), Locale.GERMAN).build();
+        assertTrue("regional de-LU / de", regional.isMatch(new Locale("de", "LU"), Locale.GERMAN));
+        assertFalse("regional da / no", regional.isMatch(new Locale("da"), new Locale("no")));
+        assertFalse("regional zh-Hant / zh", regional.isMatch(Locale.CHINESE, Locale.TRADITIONAL_CHINESE));
+    }
+
+    @Test
     public void testCanonicalize() {
         LocaleMatcher matcher = LocaleMatcher.builder().build();
         assertEquals("bh --> bho", new ULocale("bho"), matcher.canonicalize(new ULocale("bh")));
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocalePriorityListTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocalePriorityListTest.java
index bc1e3ab..a0453ae 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocalePriorityListTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocalePriorityListTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************************
  * Copyright (C) 2009-2010, Google, Inc.; International Business Machines Corporation and *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/RegionTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/RegionTest.java
index 6d68fcf..794fe0b 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/RegionTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/RegionTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2011-2016, International Business Machines
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/SimpleFormatterTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/SimpleFormatterTest.java
index 23a525c..2d4b564 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/SimpleFormatterTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/SimpleFormatterTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014-2016, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/StaticUnicodeSetsTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/StaticUnicodeSetsTest.java
index aa4a7db..25aebfb 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/StaticUnicodeSetsTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/StaticUnicodeSetsTest.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.util;
 
 import static com.ibm.icu.impl.StaticUnicodeSets.get;
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/StringTokenizerTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/StringTokenizerTest.java
index 30cd5ad..f246581 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/StringTokenizerTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/StringTokenizerTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 1996-2010, International Business Machines Corporation and    *
@@ -1070,4 +1070,4 @@
                           "an exception.");
               }
           }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TestLocaleValidity.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TestLocaleValidity.java
index 553cbd8..d299eb5 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TestLocaleValidity.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TestLocaleValidity.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2015-2016, International Business Machines Corporation and    *
@@ -60,6 +60,7 @@
                 {"OK", "en-u-co-big5han"},
                 {"OK", "en-u-cu-adp"},
                 {"OK", "en-u-fw-fri"},
+                {"OK", "en-u-dx-thai"},
                 {"OK", "en-u-hc-h11"},
                 {"OK", "en-u-ka-noignore"},
                 {"OK", "en-u-kb-false"},
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TextTrieMapTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TextTrieMapTest.java
index 4bd8fe1..0ce33df 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TextTrieMapTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TextTrieMapTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2007, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.java
index 843272a..fa3ffc8 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2015, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TrieMap.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TrieMap.java
index 1f145db..606630f 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TrieMap.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TrieMap.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011, Google, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TrieMapTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TrieMapTest.java
index 2b1476e..166c11e 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TrieMapTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TrieMapTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011-2012, Google, International Business Machines Corporation and
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TrieTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TrieTest.java
index 5fefdb3..248b29f 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TrieTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TrieTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ULocaleTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ULocaleTest.java
index d0fce7e..d108d68 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ULocaleTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ULocaleTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2004-2016, International Business Machines
@@ -12,6 +12,8 @@
  */
 package com.ibm.icu.dev.test.util;
 
+import java.io.BufferedReader;
+import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Arrays;
@@ -892,8 +894,8 @@
     public void TestCanonicalization(){
         final String[][]testCases = new String[][]{
                 { "zh@collation=pinyin", "zh@collation=pinyin", "zh@collation=pinyin" },
-                { "zh_CN@collation=pinyin", "zh_CN@collation=pinyin", "zh_Hans_CN@collation=pinyin" },
-                { "zh_CN_CA@collation=pinyin", "zh_CN_CA@collation=pinyin", "zh_Hans_CN_CA@collation=pinyin" },
+                { "zh_CN@collation=pinyin", "zh_CN@collation=pinyin", "zh_CN@collation=pinyin" },
+                { "zh_CN_CA@collation=pinyin", "zh_CN_CA@collation=pinyin", "zh_CN_CA@collation=pinyin" },
                 { "en_US_POSIX", "en_US_POSIX", "en_US_POSIX" },
                 { "hy_AM_REVISED", "hy_AM_REVISED", "hy_AM_REVISED" },
                 { "no_NO_NY", "no_NO_NY", "nb_NO_NY" /* not: "nn_NO" [alan ICU3.0] */ },
@@ -956,14 +958,14 @@
                 { "hi__DIRECT", "hi__DIRECT", "hi__DIRECT" },
                 { "ja_JP_TRADITIONAL", "ja_JP_TRADITIONAL", "ja_JP_TRADITIONAL" },
                 { "th_TH_TRADITIONAL", "th_TH_TRADITIONAL", "th_TH_TRADITIONAL" },
-                { "zh_TW_STROKE", "zh_TW_STROKE", "zh_Hant_TW_STROKE" },
+                { "zh_TW_STROKE", "zh_TW_STROKE", "zh_TW_STROKE" },
                 { "zh__PINYIN", "zh__PINYIN", "zh__PINYIN" },
                 { "qz-qz@Euro", null, "qz_QZ_EURO" }, /* qz-qz uses private use iso codes */
                 { "sr-SP-Cyrl", "sr_SP_CYRL", "sr_SP_CYRL" }, /* .NET name */
                 { "sr-SP-Latn", "sr_SP_LATN", "sr_SP_LATN" }, /* .NET name */
                 { "sr_YU_CYRILLIC", "sr_YU_CYRILLIC", "sr_RS_CYRILLIC" }, /* Linux name */
-                { "uz-UZ-Cyrl", "uz_UZ_CYRL", "uz_Latn_UZ_CYRL" }, /* .NET name */
-                { "uz-UZ-Latn", "uz_UZ_LATN", "uz_Latn_UZ_LATN" }, /* .NET name */
+                { "uz-UZ-Cyrl", "uz_UZ_CYRL", "uz_UZ_CYRL" }, /* .NET name */
+                { "uz-UZ-Latn", "uz_UZ_LATN", "uz_UZ_LATN" }, /* .NET name */
                 { "zh-CHS", "zh_CHS", "zh_CHS" }, /* .NET name */
                 { "zh-CHT", "zh_CHT", "zh_CHT" }, /* .NET name This may change back to zh_Hant */
                 /* PRE_EURO and EURO conversions don't affect other keywords */
@@ -997,6 +999,11 @@
             }
 
             if (level2Expected != null) {
+                if (logKnownIssue("21236", "skip some canonicalization tests until code fixed")) {
+                    if (source.startsWith("zh_CN") || source.startsWith("zh_TW") || source.startsWith("uz-UZ")) {
+                        continue;
+                    }
+                }
                 String level2 = ULocale.canonicalize(source);
                 if(!level2.equals(level2Expected)){
                     errln("ULocale.getName error for: '" + source +
@@ -1174,10 +1181,10 @@
                 new Item("da", NM_STD, CAP_BEG, LEN_FU, SUB_SU, "en_GB", "Engelsk (Storbritannien)"),
                 new Item("da", NM_STD, CAP_UIL, LEN_FU, SUB_SU, "en_GB", "Engelsk (Storbritannien)"),
                 new Item("da", NM_STD, CAP_STA, LEN_FU, SUB_SU, "en_GB", "engelsk (Storbritannien)"),
-                new Item("da", NM_STD, CAP_MID, LEN_SH, SUB_SU, "en_GB", "engelsk (UK)"),
-                new Item("da", NM_STD, CAP_BEG, LEN_SH, SUB_SU, "en_GB", "Engelsk (UK)"),
-                new Item("da", NM_STD, CAP_UIL, LEN_SH, SUB_SU, "en_GB", "Engelsk (UK)"),
-                new Item("da", NM_STD, CAP_STA, LEN_SH, SUB_SU, "en_GB", "engelsk (UK)"),
+                new Item("da", NM_STD, CAP_MID, LEN_SH, SUB_SU, "en_GB", "engelsk (Storbritannien)"),
+                new Item("da", NM_STD, CAP_BEG, LEN_SH, SUB_SU, "en_GB", "Engelsk (Storbritannien)"),
+                new Item("da", NM_STD, CAP_UIL, LEN_SH, SUB_SU, "en_GB", "Engelsk (Storbritannien)"),
+                new Item("da", NM_STD, CAP_STA, LEN_SH, SUB_SU, "en_GB", "engelsk (Storbritannien)"),
                 new Item("da", NM_DIA, CAP_MID, LEN_FU, SUB_SU, "en_GB", "britisk engelsk"),
                 new Item("da", NM_DIA, CAP_BEG, LEN_FU, SUB_SU, "en_GB", "Britisk engelsk"),
                 new Item("da", NM_DIA, CAP_UIL, LEN_FU, SUB_SU, "en_GB", "Britisk engelsk"),
@@ -3932,6 +3939,50 @@
                     "art_Moon_AQ",
                     "",
                     ""
+                }, {
+                    "aae_Latn_IT",
+                    "aae_Latn_IT",
+                    "aae_Latn_IT"
+                }, {
+                    "aae_Thai_CO",
+                    "aae_Thai_CO",
+                    "aae_Thai_CO"
+                }, {
+                    "und_CW",
+                    "pap_Latn_CW",
+                    "pap_CW"
+                }, {
+                    "zh_Hant",
+                    "zh_Hant_TW",
+                    "zh_TW"
+                }, {
+                    "zh_Hani",
+                    "zh_Hani_CN",
+                    "zh_Hani"
+                }, {
+                    "und",
+                    "en_Latn_US",
+                    "en"
+                }, {
+                    "und_Thai",
+                    "th_Thai_TH",
+                    "th"
+                }, {
+                    "und_419",
+                    "es_Latn_419",
+                    "es_419"
+                }, {
+                    "und_150",
+                    "ru_Cyrl_RU",
+                    "ru"
+                }, {
+                    "und_AT",
+                    "de_Latn_AT",
+                    "de_AT"
+                }, {
+                    "und_US",
+                    "en_Latn_US",
+                    "en"
                 }
         };
 
@@ -5085,25 +5136,27 @@
     public void TestCanonical() {
         // Test replacement of languageAlias
 
-        // language _ variant -> language
-        Assert.assertEquals("nb", canonicalTag("no-BOKMAL"));
-        // also test with script, country and extensions
-        Assert.assertEquals("nb-Cyrl-ID-u-ca-japanese", canonicalTag("no-Cyrl-ID-BOKMAL-u-ca-japanese"));
-        // also test with other variants, script, country and extensions
-        Assert.assertEquals("nb-Cyrl-ID-1901-xsistemo-u-ca-japanese",
-            canonicalTag("no-Cyrl-ID-1901-BOKMAL-xsistemo-u-ca-japanese"));
-        Assert.assertEquals("nb-Cyrl-ID-1901-u-ca-japanese",
-            canonicalTag("no-Cyrl-ID-1901-BOKMAL-u-ca-japanese"));
-        Assert.assertEquals("nb-Cyrl-ID-xsistemo-u-ca-japanese",
-            canonicalTag("no-Cyrl-ID-BOKMAL-xsistemo-u-ca-japanese"));
+        if (!logKnownIssue("21236", "skip some canonicalization tests until code fixed")) {
+            // language _ variant -> language
+            Assert.assertEquals("nb", canonicalTag("no-BOKMAL"));
+            // also test with script, country and extensions
+            Assert.assertEquals("nb-Cyrl-ID-u-ca-japanese", canonicalTag("no-Cyrl-ID-BOKMAL-u-ca-japanese"));
+            // also test with other variants, script, country and extensions
+            Assert.assertEquals("nb-Cyrl-ID-1901-xsistemo-u-ca-japanese",
+                canonicalTag("no-Cyrl-ID-1901-BOKMAL-xsistemo-u-ca-japanese"));
+            Assert.assertEquals("nb-Cyrl-ID-1901-u-ca-japanese",
+                canonicalTag("no-Cyrl-ID-1901-BOKMAL-u-ca-japanese"));
+            Assert.assertEquals("nb-Cyrl-ID-xsistemo-u-ca-japanese",
+                canonicalTag("no-Cyrl-ID-BOKMAL-xsistemo-u-ca-japanese"));
 
-        Assert.assertEquals("nn", canonicalTag("no-NYNORSK"));
-        // also test with script, country and extensions
-        Assert.assertEquals("nn-Cyrl-ID-u-ca-japanese", canonicalTag("no-Cyrl-ID-NYNORSK-u-ca-japanese"));
+            Assert.assertEquals("nn", canonicalTag("no-NYNORSK"));
+            // also test with script, country and extensions
+            Assert.assertEquals("nn-Cyrl-ID-u-ca-japanese", canonicalTag("no-Cyrl-ID-NYNORSK-u-ca-japanese"));
 
-        Assert.assertEquals("ssy", canonicalTag("aa-SAAHO"));
-        // also test with script, country and extensions
-        Assert.assertEquals("ssy-Devn-IN-u-ca-japanese", canonicalTag("aa-Devn-IN-SAAHO-u-ca-japanese"));
+            Assert.assertEquals("ssy", canonicalTag("aa-SAAHO"));
+            // also test with script, country and extensions
+            Assert.assertEquals("ssy-Devn-IN-u-ca-japanese", canonicalTag("aa-Devn-IN-SAAHO-u-ca-japanese"));
+        }
 
         // language -> language
         Assert.assertEquals("aas", canonicalTag("aam"));
@@ -5124,17 +5177,18 @@
         // also test with script, variants and extensions
         Assert.assertEquals("fa-Cyrl-AF-1009-u-ca-roc", canonicalTag("prs-Cyrl-1009-u-ca-roc"));
 
-        //  language _ country -> language _ script _ country
-        Assert.assertEquals("pa-Guru-IN", canonicalTag("pa-IN"));
+        Assert.assertEquals("pa-IN", canonicalTag("pa-IN"));
         // also test with script
         Assert.assertEquals("pa-Latn-IN", canonicalTag("pa-Latn-IN"));
         // also test with variants and extensions
-        Assert.assertEquals("pa-Guru-IN-5678-u-ca-hindi", canonicalTag("pa-IN-5678-u-ca-hindi"));
+        Assert.assertEquals("pa-IN-5678-u-ca-hindi", canonicalTag("pa-IN-5678-u-ca-hindi"));
 
-        //  language _ script _ country -> language _ country
-        Assert.assertEquals("ky-KG", canonicalTag("ky-Cyrl-KG"));
+        Assert.assertEquals("ky-Cyrl-KG", canonicalTag("ky-Cyrl-KG"));
         // also test with variants and extensions
-        Assert.assertEquals("ky-KG-3456-u-ca-roc", canonicalTag("ky-Cyrl-KG-3456-u-ca-roc"));
+        Assert.assertEquals("ky-Cyrl-KG-3456-u-ca-roc", canonicalTag("ky-Cyrl-KG-3456-u-ca-roc"));
+
+        // Test replacement of scriptAlias
+        Assert.assertEquals("en-Zinh", canonicalTag("en-Qaai"));
 
         // Test replacement of territoryAlias
         // 554 has one replacement
@@ -5154,5 +5208,38 @@
         Assert.assertEquals("uz-Cyrl-UZ-5678-u-nu-latn", canonicalTag("uz-Cyrl-172-5678-u-nu-latn"));
         // a language not used in this region
         Assert.assertEquals("fr-RU", canonicalTag("fr-172"));
+
+        Assert.assertEquals("ja-Latn-alalc97", canonicalTag("ja-Latn-hepburn-heploc"));
+
+        Assert.assertEquals("aaa-Fooo-RU", canonicalTag("aaa-Fooo-SU"));
+
+        // ICU-21344
+        Assert.assertEquals("ku-Arab-IQ", canonicalTag("ku-Arab-NT"));
+    }
+
+    @Test
+    public void TestLocaleCanonicalizationFromFile() throws IOException {
+        BufferedReader testFile = TestUtil.getDataReader("unicode/localeCanonicalization.txt");
+        try {
+            String line;
+            while ((line = testFile.readLine()) != null) {
+                if (line.startsWith("#")) {
+                    // ignore any lines start with #
+                    continue;
+                }
+                String[] fields = line.split("\t;\t");
+                if (fields.length != 2) {
+                    // ignore any lines without TAB ; TAB
+                    continue;
+                }
+                String from = fields[0].replace("_", "-");
+                String to = fields[1].replace("_", "-");
+                Assert.assertEquals("canonicalTag(" + from + ")",
+                    to, canonicalTag(from));
+            }
+        } finally {
+            testFile.close();
+        }
+
     }
 }
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/UtilityTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/UtilityTest.java
index 0613c2d..15aebdf 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/UtilityTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/UtilityTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2003-2015, International Business Machines
@@ -12,6 +12,7 @@
 */
 package com.ibm.icu.dev.test.util;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
@@ -291,4 +292,30 @@
         }
         return sb;
     }
+
+    @Test
+    public void TestJoinStrings() {
+        final String data[][] = {
+            //  {"<expected>", "<delimiter>", "<element1>", "<element2>", ...}
+                {"abc-def", "-", "abc", "def"},
+                {"abc-def-ghi", "-", "abc", "def", "ghi"},
+                {"abc--def", "--", "abc", "def"},
+                {"abc", "-", "abc"},
+                {"def", "_", null, "def"},
+                {"abc_def", "_", null, "abc", null, "def", null},
+                {"", "-", null},
+        };
+
+        for (int i = 0; i < data.length; i++) {
+            String expected = data[i][0];
+            String delim = data[i][1];
+            List<String> elements = new ArrayList<>(data.length - 2);
+            for (int j = 2; j < data[i].length; j++) {
+                elements.add(data[i][j]);
+            }
+
+            String actual = Utility.joinStrings(delim, elements);
+            assertEquals("data[" + i + "]", expected, actual);
+        }
+    }
 }
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/VersionInfoTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/VersionInfoTest.java
index 4041015..1577793 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/VersionInfoTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/VersionInfoTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 * Copyright (C) 1996-2014, International Business Machines Corporation and    *
@@ -138,6 +138,18 @@
         }
     }
 
+    @Test
+    public void TestCompareLarge() {
+        // One version with major<128, one >=128.
+        VersionInfo small = VersionInfo.getInstance(13);
+        VersionInfo large = VersionInfo.getInstance(222);  // >=128
+        assertTrue(small + " < " + large, small.compareTo(large) < 0);
+        // Difference only in the last bit.
+        small = VersionInfo.getInstance(222, 0, 1, 2);
+        large = VersionInfo.getInstance(222, 0, 1, 3);
+        assertTrue(small + " < " + large, small.compareTo(large) < 0);
+    }
+
     /**
      * Test that the getter function works
      */
@@ -414,4 +426,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/data/localeDistanceTest.txt b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/data/localeDistanceTest.txt
index a6926da..57adea3 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/data/localeDistanceTest.txt
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/data/localeDistanceTest.txt
@@ -1,5 +1,5 @@
 # © 2017 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Data-driven test for XLocaleDistance.
 # Format
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/data/localeMatcherTest.txt b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/data/localeMatcherTest.txt
index 7a10986..6d21303 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/data/localeMatcherTest.txt
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/data/localeMatcherTest.txt
@@ -1,5 +1,5 @@
 # © 2017 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 #
 # Data-driven test for the language/locale matcher.
 # Format:
@@ -279,7 +279,7 @@
 zh-Hant >> und-TW
 zh >> und-TW
 
-** test: testMatchGrandfatheredCode
+** test: testMatchLegacyCode
 
 @supported=fr, i-klingon, en-Latn-US
 en-GB-oed >> en-Latn-US
@@ -984,7 +984,7 @@
 x-piglatin >> x-bork
 x-bork >> x-bork
 
-** test: MatchGrandfatheredCode
+** test: MatchLegacyCode
 @supported=fr, i-klingon, en-Latn-US
 en-GB-oed >> en-Latn-US
 i-klingon >> tlh
@@ -1525,7 +1525,7 @@
 x-piglatin >> fr
 x-bork >> x-bork
 
-** test: grandfathered codes
+** test: legacy codes
 @supported=fr, i-klingon, en-Latn-US
 en-GB-oed >> en-Latn-US
 i-klingon >> tlh
diff --git a/icu4j/main/tests/framework/.settings/org.eclipse.jdt.ui.prefs b/icu4j/main/tests/framework/.settings/org.eclipse.jdt.ui.prefs
index 3680fab..d733db1 100644
--- a/icu4j/main/tests/framework/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/main/tests/framework/.settings/org.eclipse.jdt.ui.prefs
@@ -7,7 +7,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/main/tests/framework/build.properties b/icu4j/main/tests/framework/build.properties
index a9d9bc6..0d6234a 100644
--- a/icu4j/main/tests/framework/build.properties
+++ b/icu4j/main/tests/framework/build.properties
@@ -1,6 +1,6 @@
 #*******************************************************************************
 # Copyright (C) 2016 and later: Unicode, Inc. and others.                      *
-# License & terms of use: http://www.unicode.org/copyright.html#License        *
+# License & terms of use: http://www.unicode.org/copyright.html        *
 #*******************************************************************************
 #*******************************************************************************
 #* Copyright (C) 2009, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/framework/build.xml b/icu4j/main/tests/framework/build.xml
index b59764b..6ba3a31 100644
--- a/icu4j/main/tests/framework/build.xml
+++ b/icu4j/main/tests/framework/build.xml
@@ -1,7 +1,7 @@
 <!--
 *******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                     *
-* License & terms of use: http://www.unicode.org/copyright.html#License       *
+* License & terms of use: http://www.unicode.org/copyright.html       *
 *******************************************************************************
 *******************************************************************************
 * Copyright (C) 2009-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/AbstractTestLog.java b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/AbstractTestLog.java
index 109c1e8..e6dc664 100644
--- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/AbstractTestLog.java
+++ b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/AbstractTestLog.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2003-2011, International Business Machines Corporation and
diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/ModuleTest.java b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/ModuleTest.java
index 0522ed0..a229fe4 100644
--- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/ModuleTest.java
+++ b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/ModuleTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2007, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/ResourceModule.java b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/ResourceModule.java
index 2056f3c..ef952f4 100644
--- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/ResourceModule.java
+++ b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/ResourceModule.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2006-2016, International Business Machines
diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestBoilerplate.java b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestBoilerplate.java
index 5f098c8..730c9f3 100644
--- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestBoilerplate.java
+++ b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestBoilerplate.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2016, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestDataModule.java b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestDataModule.java
index 0471b9c..6042bc2 100644
--- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestDataModule.java
+++ b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestDataModule.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2009, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestFmwk.java b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestFmwk.java
index 5871b6a..57bbe40 100644
--- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestFmwk.java
+++ b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestFmwk.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestLog.java b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestLog.java
index f0e40d2..795237c 100644
--- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestLog.java
+++ b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestLog.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2000-2004, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestUtil.java b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestUtil.java
index e8950c4..354723c 100644
--- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestUtil.java
+++ b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/TestUtil.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2015, International Business Machines Corporation and
diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/UTF16Util.java b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/UTF16Util.java
index f47364c..d109da6 100644
--- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/UTF16Util.java
+++ b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/UTF16Util.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2002-2004, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/package.html b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/package.html
index bdb09f1..f54b9bf 100644
--- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/package.html
+++ b/icu4j/main/tests/framework/src/com/ibm/icu/dev/test/package.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--  Copyright (C) 2016 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--  Copyright (C) 2000-2004, International Business Machines Corporation and
   others. All Rights Reserved.
diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/CollectionUtilities.java b/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/CollectionUtilities.java
index 94dd2b3..7a6c15d 100644
--- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/CollectionUtilities.java
+++ b/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/CollectionUtilities.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/ElapsedTimer.java b/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/ElapsedTimer.java
index b2e9d29..855d798 100644
--- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/ElapsedTimer.java
+++ b/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/ElapsedTimer.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 //
 //  ElapsedTimer.java
 //
diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/ImmutableEntry.java b/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/ImmutableEntry.java
index 8f67aac..d760f8c 100644
--- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/ImmutableEntry.java
+++ b/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/ImmutableEntry.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2012, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/Timer.java b/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/Timer.java
index cd523ec..11f7ebe 100644
--- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/Timer.java
+++ b/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/Timer.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011-2012, Google, International Business Machines Corporation and
@@ -121,4 +121,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/UnicodeMap.java b/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/UnicodeMap.java
index 73ab1e3..0b0cf1a 100644
--- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/UnicodeMap.java
+++ b/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/UnicodeMap.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/UnicodeMapIterator.java b/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/UnicodeMapIterator.java
index 3b9b25e..ba32ab0 100644
--- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/UnicodeMapIterator.java
+++ b/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/UnicodeMapIterator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/localespi/.settings/org.eclipse.jdt.ui.prefs b/icu4j/main/tests/localespi/.settings/org.eclipse.jdt.ui.prefs
index 3680fab..d733db1 100644
--- a/icu4j/main/tests/localespi/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/main/tests/localespi/.settings/org.eclipse.jdt.ui.prefs
@@ -7,7 +7,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/main/tests/localespi/build.properties b/icu4j/main/tests/localespi/build.properties
index 1621c5d..30fbb95 100644
--- a/icu4j/main/tests/localespi/build.properties
+++ b/icu4j/main/tests/localespi/build.properties
@@ -1,6 +1,6 @@
 #*******************************************************************************
 # Copyright (C) 2016 and later: Unicode, Inc. and others.                      *
-# License & terms of use: http://www.unicode.org/copyright.html#License        *
+# License & terms of use: http://www.unicode.org/copyright.html        *
 #*******************************************************************************
 #*******************************************************************************
 #* Copyright (C) 2009-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/localespi/build.xml b/icu4j/main/tests/localespi/build.xml
index d40f096..7549f14 100644
--- a/icu4j/main/tests/localespi/build.xml
+++ b/icu4j/main/tests/localespi/build.xml
@@ -1,7 +1,7 @@
 <!--
 *******************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                     *
-* License & terms of use: http://www.unicode.org/copyright.html#License       *
+* License & terms of use: http://www.unicode.org/copyright.html       *
 *******************************************************************************
 *******************************************************************************
 * Copyright (C) 2009-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/BreakIteratorTest.java b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/BreakIteratorTest.java
index f2c04cb..3d3240b 100644
--- a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/BreakIteratorTest.java
+++ b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/BreakIteratorTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/CollatorTest.java b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/CollatorTest.java
index 2b7a2f2..d6d4e80 100644
--- a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/CollatorTest.java
+++ b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/CollatorTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/CurrencyNameTest.java b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/CurrencyNameTest.java
index d7f0bd2..1218958 100644
--- a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/CurrencyNameTest.java
+++ b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/CurrencyNameTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatSymbolsTest.java b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatSymbolsTest.java
index c36159b..94f3946 100644
--- a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatSymbolsTest.java
+++ b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatSymbolsTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatTest.java b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatTest.java
index b9cd2f8..1e2f253 100644
--- a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatTest.java
+++ b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/DecimalFormatSymbolsTest.java b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/DecimalFormatSymbolsTest.java
index e5c1a71..0ad6c6f 100644
--- a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/DecimalFormatSymbolsTest.java
+++ b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/DecimalFormatSymbolsTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/LocaleNameTest.java b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/LocaleNameTest.java
index c13bc0c..7084119 100644
--- a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/LocaleNameTest.java
+++ b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/LocaleNameTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/NumberFormatTest.java b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/NumberFormatTest.java
index de3dbd4..0967fd8 100644
--- a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/NumberFormatTest.java
+++ b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/NumberFormatTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/TestUtil.java b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/TestUtil.java
index fd40528..b8e9b9d 100644
--- a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/TestUtil.java
+++ b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/TestUtil.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/TimeZoneNameTest.java b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/TimeZoneNameTest.java
index 0db2c26..fbfd277 100644
--- a/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/TimeZoneNameTest.java
+++ b/icu4j/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/TimeZoneNameTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2008-2015, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/packaging/.settings/org.eclipse.jdt.ui.prefs b/icu4j/main/tests/packaging/.settings/org.eclipse.jdt.ui.prefs
index 3680fab..d733db1 100644
--- a/icu4j/main/tests/packaging/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/main/tests/packaging/.settings/org.eclipse.jdt.ui.prefs
@@ -7,7 +7,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/main/tests/packaging/build.properties b/icu4j/main/tests/packaging/build.properties
index a9d9bc6..0d6234a 100644
--- a/icu4j/main/tests/packaging/build.properties
+++ b/icu4j/main/tests/packaging/build.properties
@@ -1,6 +1,6 @@
 #*******************************************************************************
 # Copyright (C) 2016 and later: Unicode, Inc. and others.                      *
-# License & terms of use: http://www.unicode.org/copyright.html#License        *
+# License & terms of use: http://www.unicode.org/copyright.html        *
 #*******************************************************************************
 #*******************************************************************************
 #* Copyright (C) 2009, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/packaging/build.xml b/icu4j/main/tests/packaging/build.xml
index 99fdad2..bd930c8 100644
--- a/icu4j/main/tests/packaging/build.xml
+++ b/icu4j/main/tests/packaging/build.xml
@@ -1,7 +1,7 @@
 <!--
 ********************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                      *
-* License & terms of use: http://www.unicode.org/copyright.html#License        *
+* License & terms of use: http://www.unicode.org/copyright.html        *
 ********************************************************************************
 *******************************************************************************
 * Copyright (C) 2009-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/packaging/src/com/ibm/icu/dev/test/TestLocaleNamePackaging.java b/icu4j/main/tests/packaging/src/com/ibm/icu/dev/test/TestLocaleNamePackaging.java
index 9905eed..24596b7 100644
--- a/icu4j/main/tests/packaging/src/com/ibm/icu/dev/test/TestLocaleNamePackaging.java
+++ b/icu4j/main/tests/packaging/src/com/ibm/icu/dev/test/TestLocaleNamePackaging.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/translit/.settings/org.eclipse.jdt.ui.prefs b/icu4j/main/tests/translit/.settings/org.eclipse.jdt.ui.prefs
index 3680fab..d733db1 100644
--- a/icu4j/main/tests/translit/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/main/tests/translit/.settings/org.eclipse.jdt.ui.prefs
@@ -7,7 +7,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/main/tests/translit/build.properties b/icu4j/main/tests/translit/build.properties
index a9d9bc6..0d6234a 100644
--- a/icu4j/main/tests/translit/build.properties
+++ b/icu4j/main/tests/translit/build.properties
@@ -1,6 +1,6 @@
 #*******************************************************************************
 # Copyright (C) 2016 and later: Unicode, Inc. and others.                      *
-# License & terms of use: http://www.unicode.org/copyright.html#License        *
+# License & terms of use: http://www.unicode.org/copyright.html        *
 #*******************************************************************************
 #*******************************************************************************
 #* Copyright (C) 2009, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/translit/build.xml b/icu4j/main/tests/translit/build.xml
index 1668be5..3a6b0df 100644
--- a/icu4j/main/tests/translit/build.xml
+++ b/icu4j/main/tests/translit/build.xml
@@ -1,7 +1,7 @@
 <!--
 ********************************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.                      *
-* License & terms of use: http://www.unicode.org/copyright.html#License        *
+* License & terms of use: http://www.unicode.org/copyright.html        *
 ********************************************************************************
 *******************************************************************************
 * Copyright (C) 2009-2011, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/AnyScriptTest.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/AnyScriptTest.java
index 37b5384..6d48e56 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/AnyScriptTest.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/AnyScriptTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2014, Google, International Business Machines Corporation and
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/CompoundTransliteratorTest.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/CompoundTransliteratorTest.java
index 3450f21..ec7db4d 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/CompoundTransliteratorTest.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/CompoundTransliteratorTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/ErrorTest.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/ErrorTest.java
index ec13d5b..d71c77f 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/ErrorTest.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/ErrorTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/IncrementalProgressTest.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/IncrementalProgressTest.java
index a58401a..285de0b 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/IncrementalProgressTest.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/IncrementalProgressTest.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.translit;
 
 import java.util.Enumeration;
@@ -90,4 +90,4 @@
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/JamoTest.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/JamoTest.java
index 7a8d409..16cf392 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/JamoTest.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/JamoTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/RegexUtilitiesTest.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/RegexUtilitiesTest.java
index 4290869..4131fd4 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/RegexUtilitiesTest.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/RegexUtilitiesTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2009-2015, International Business Machines Corporation and
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/ReplaceableTest.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/ReplaceableTest.java
index 901bf36..a740429 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/ReplaceableTest.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/ReplaceableTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/RoundTripTest.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/RoundTripTest.java
index a6305ab..2cbf173 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/RoundTripTest.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/RoundTripTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2000-2013, International Business Machines Corporation and
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/StringBoilerplateTest.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/StringBoilerplateTest.java
index d85038f..f697bdb 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/StringBoilerplateTest.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/StringBoilerplateTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2016, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TestUtility.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TestUtility.java
index d56d2d6..a592be6 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TestUtility.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TestUtility.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2000-2010, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/ThreadTest.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/ThreadTest.java
index 5441c20..d290cce 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/ThreadTest.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/ThreadTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorDisorderedMarksTest.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorDisorderedMarksTest.java
index ae7fe29..d220e7a 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorDisorderedMarksTest.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorDisorderedMarksTest.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 package com.ibm.icu.dev.test.translit;
 
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorInstantiateAllTest.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorInstantiateAllTest.java
index 3cb566e..c914c31 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorInstantiateAllTest.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorInstantiateAllTest.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.test.translit;
 
 import java.util.ArrayList;
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java
index 86ee5e2..0808f75 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2012, International Business Machines Corporation and    *
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/UnicodeMapBoilerplateTest.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/UnicodeMapBoilerplateTest.java
index 7f54a42..162df2f 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/UnicodeMapBoilerplateTest.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/UnicodeMapBoilerplateTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2016, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/UnicodeMapTest.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/UnicodeMapTest.java
index 0038304..e3e809d 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/UnicodeMapTest.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/UnicodeMapTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/UnicodeSetBoilerplateTest.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/UnicodeSetBoilerplateTest.java
index f8337ae..4a7f6b9 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/UnicodeSetBoilerplateTest.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/UnicodeSetBoilerplateTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2016, International Business Machines Corporation and         *
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/WriteCharts.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/WriteCharts.java
index f2df811..7102395 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/WriteCharts.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/WriteCharts.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
@@ -392,4 +392,4 @@
     */
     
 }
-  
\ No newline at end of file
+  
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/langtagRegex.txt b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/langtagRegex.txt
index 696750a..4a1f2ae 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/langtagRegex.txt
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/langtagRegex.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html#License
+# Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html
 #
 # Copyright (C) 2006-2009, Google, International Business Machines Corporation and others. All Rights Reserved.
 # Regex for recognizing RFC 4646 well-formed tags
@@ -38,14 +38,15 @@
 
 $privateUse = $x (?: $s $alphanum{1,8} )+ ; # "x" 1*("-" (1*8alphanum))
 
-# Define certain grandfathered codes, since otherwise the regex is pretty useless.
+# Define certain legacy language tags (marked as “Type: grandfathered” in BCP 47),
+# since otherwise the regex is pretty useless.
 # Since these are limited, this is safe even later changes to the registry --
 # the only oddity is that it might change the type of the tag, and thus
 # the results from the capturing groups.
 # http://www.iana.org/assignments/language-subtag-registry
 # Note that these have to be compared case insensitively, requiring (?i) below.
 
-$grandfathered  = en $s GB $s oed
+$legacy  = en $s GB $s oed
       | i $s (?: ami | bnn | default | enochian | hak | klingon | lux | mingo | navajo | pwn | tao | tay | tsu )
       | no $s (?: bok | nyn )
       | sgn $s (?: BE $s (?: fr | nl) | CH $s de )
@@ -55,7 +56,7 @@
 # For well-formedness, we don't need the ones that would otherwise pass.
 # For validity, they need to be checked.
 
-# $grandfatheredWellFormed = (?:
+# $legacyWellFormed = (?:
 #         art $s lojban
 #     | cel $s gaulish
 #     | zh $s (?: guoyu | hakka | xiang )
@@ -78,12 +79,12 @@
       (?: $s ( $privateUse ) )? 5%);
 
 # Here is the final breakdown, with capturing groups for each of these components
-# The variants, extensions, grandfathered, and private-use may have interior '-'
+# The variants, extensions, legacy, and private-use may have interior '-'
  
 $root = (?i) # case-insensitive
   (?:
       $langtag 90%
     | ( $privateUse ) 5%
-    | ( $grandfathered ) 5%)
+    | ( $legacy ) 5%)
 #    (?: \@ $keywords )? 5%
     ;
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/package.html b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/package.html
index 58d4ff1..3565866 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/package.html
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/translit/package.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--  Copyright (C) 2016 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--  Copyright (C) 2000-2004, International Business Machines Corporation and
   others. All Rights Reserved.
diff --git a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/util/TestUtilities.java b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/util/TestUtilities.java
index 08fb32d..feaa938 100644
--- a/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/util/TestUtilities.java
+++ b/icu4j/main/tests/translit/src/com/ibm/icu/dev/test/util/TestUtilities.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2016, International Business Machines Corporation and    *
diff --git a/icu4j/maven/icu4j-charset/pom.xml b/icu4j/maven/icu4j-charset/pom.xml
index 9faf633..d4e3a9b 100644
--- a/icu4j/maven/icu4j-charset/pom.xml
+++ b/icu4j/maven/icu4j-charset/pom.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!--
 * © 2017 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/icu4j/maven/icu4j-localespi/pom.xml b/icu4j/maven/icu4j-localespi/pom.xml
index 0a0d5e8..605e68e 100644
--- a/icu4j/maven/icu4j-localespi/pom.xml
+++ b/icu4j/maven/icu4j-localespi/pom.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!--
 * © 2017 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/icu4j/maven/icu4j/pom.xml b/icu4j/maven/icu4j/pom.xml
index 8017d81..92a06a2 100644
--- a/icu4j/maven/icu4j/pom.xml
+++ b/icu4j/maven/icu4j/pom.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *******************************************************************************
 * Copyright (C) 2010-2016, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/Dataset.pm b/icu4j/perf-tests/Dataset.pm
index 39cbc70..69cc2a8 100644
--- a/icu4j/perf-tests/Dataset.pm
+++ b/icu4j/perf-tests/Dataset.pm
@@ -1,6 +1,6 @@
 #/**
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2004, International Business Machines Corporation and    *
 # * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/README.txt b/icu4j/perf-tests/README.txt
index d2c7f15..e20444d 100644
--- a/icu4j/perf-tests/README.txt
+++ b/icu4j/perf-tests/README.txt
@@ -1,5 +1,5 @@
 © 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
 Copyright (C) 2012, International Business Machines Corporation and others.  All Rights Reserved.
 
 README for ICU4J Performance Test
diff --git a/icu4j/perf-tests/build.xml b/icu4j/perf-tests/build.xml
index 48b9e14..3a70e79 100644
--- a/icu4j/perf-tests/build.xml
+++ b/icu4j/perf-tests/build.xml
@@ -1,6 +1,6 @@
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *******************************************************************************
 * Copyright (C) 2012-2014, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/collationperf.pl b/icu4j/perf-tests/collationperf.pl
index e247cab..8af6fbb 100755
--- a/icu4j/perf-tests/collationperf.pl
+++ b/icu4j/perf-tests/collationperf.pl
@@ -1,6 +1,6 @@
 #/**
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2014, International Business Machines Corporation and    *
 # * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/converterperf.pl b/icu4j/perf-tests/converterperf.pl
index d6af413..27e03c9 100755
--- a/icu4j/perf-tests/converterperf.pl
+++ b/icu4j/perf-tests/converterperf.pl
@@ -1,6 +1,6 @@
 #!/usr/local/bin/perl
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2007 International Business Machines Corporation and     *
 # * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/data/collation/TestNames_Asian.txt b/icu4j/perf-tests/data/collation/TestNames_Asian.txt
index 336b68a..f3f5951 100644
--- a/icu4j/perf-tests/data/collation/TestNames_Asian.txt
+++ b/icu4j/perf-tests/data/collation/TestNames_Asian.txt
@@ -1,6 +1,6 @@
 #/**
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2008, International Business Machines Corporation and    *
 # * others. All Rights Reserved.                                                *
@@ -10007,4 +10007,4 @@
 オオバヤシ,コウキチ
 サトウ,ケイコ
 ヤマ,フミコ
-ミヤタ,タカテル
\ No newline at end of file
+ミヤタ,タカテル
diff --git a/icu4j/perf-tests/data/collation/TestNames_Chinese.txt b/icu4j/perf-tests/data/collation/TestNames_Chinese.txt
index 03f5782..e650a0a 100644
--- a/icu4j/perf-tests/data/collation/TestNames_Chinese.txt
+++ b/icu4j/perf-tests/data/collation/TestNames_Chinese.txt
@@ -1,6 +1,6 @@
 #/**
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2008, International Business Machines Corporation and    *
 # * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/data/collation/TestNames_Japanese.txt b/icu4j/perf-tests/data/collation/TestNames_Japanese.txt
index 882395a..19ffd48 100644
--- a/icu4j/perf-tests/data/collation/TestNames_Japanese.txt
+++ b/icu4j/perf-tests/data/collation/TestNames_Japanese.txt
@@ -1,6 +1,6 @@
 #/**
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2008, International Business Machines Corporation and    *
 # * others. All Rights Reserved.                                                *
@@ -22832,4 +22832,4 @@
 きのした,よしかず
 たなか,ひろあき
 さくま,たかてる
-じょうこう,きみのり
\ No newline at end of file
+じょうこう,きみのり
diff --git a/icu4j/perf-tests/data/collation/TestNames_Japanese_h.txt b/icu4j/perf-tests/data/collation/TestNames_Japanese_h.txt
index b4cb12f..1eaf318 100644
--- a/icu4j/perf-tests/data/collation/TestNames_Japanese_h.txt
+++ b/icu4j/perf-tests/data/collation/TestNames_Japanese_h.txt
@@ -1,6 +1,6 @@
 #/**
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2008, International Business Machines Corporation and    *
 # * others. All Rights Reserved.                                                *
@@ -22748,4 +22748,4 @@
 みかみ,こういち
 たきがわ,よしかず
 たなか,ひろあき
-みやた,たかてる
\ No newline at end of file
+みやた,たかてる
diff --git a/icu4j/perf-tests/data/collation/TestNames_Japanese_k.txt b/icu4j/perf-tests/data/collation/TestNames_Japanese_k.txt
index afaec31..0e8fc27 100644
--- a/icu4j/perf-tests/data/collation/TestNames_Japanese_k.txt
+++ b/icu4j/perf-tests/data/collation/TestNames_Japanese_k.txt
@@ -1,6 +1,6 @@
 #/**
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2008, International Business Machines Corporation and    *
 # * others. All Rights Reserved.                                                *
@@ -22748,4 +22748,4 @@
 ミカミ,コウイチ
 タキガワ,ヨシカズ
 タナカ,ヒロアキ
-ミヤタ,タカテル
\ No newline at end of file
+ミヤタ,タカテル
diff --git a/icu4j/perf-tests/data/collation/TestNames_Korean.txt b/icu4j/perf-tests/data/collation/TestNames_Korean.txt
index af973fa..cf223bb 100644
--- a/icu4j/perf-tests/data/collation/TestNames_Korean.txt
+++ b/icu4j/perf-tests/data/collation/TestNames_Korean.txt
@@ -1,6 +1,6 @@
 #/**
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2008, International Business Machines Corporation and    *
 # * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/data/collation/TestNames_Latin.txt b/icu4j/perf-tests/data/collation/TestNames_Latin.txt
index 024e288..755eee3 100644
--- a/icu4j/perf-tests/data/collation/TestNames_Latin.txt
+++ b/icu4j/perf-tests/data/collation/TestNames_Latin.txt
@@ -1,6 +1,6 @@
 #/**
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2008, International Business Machines Corporation and    *
 # * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/data/collation/TestNames_Russian.txt b/icu4j/perf-tests/data/collation/TestNames_Russian.txt
index 0e9985e..d1799c4 100644
--- a/icu4j/perf-tests/data/collation/TestNames_Russian.txt
+++ b/icu4j/perf-tests/data/collation/TestNames_Russian.txt
@@ -1,6 +1,6 @@
 #/**
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2008, International Business Machines Corporation and    *
 # * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/data/collation/TestNames_SerbianSH.txt b/icu4j/perf-tests/data/collation/TestNames_SerbianSH.txt
index dde1aca..f4e1678 100644
--- a/icu4j/perf-tests/data/collation/TestNames_SerbianSH.txt
+++ b/icu4j/perf-tests/data/collation/TestNames_SerbianSH.txt
@@ -1,6 +1,6 @@
 #/**
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2006, International Business Machines Corporation and    *
 # * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/data/collation/TestNames_SerbianSR.txt b/icu4j/perf-tests/data/collation/TestNames_SerbianSR.txt
index bac0a6d..d4eefb2 100644
--- a/icu4j/perf-tests/data/collation/TestNames_SerbianSR.txt
+++ b/icu4j/perf-tests/data/collation/TestNames_SerbianSR.txt
@@ -1,6 +1,6 @@
 #/**
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2006, International Business Machines Corporation and    *
 # * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/data/collation/TestNames_Simplified_Chinese.txt b/icu4j/perf-tests/data/collation/TestNames_Simplified_Chinese.txt
index 0aa7571..5758217 100644
--- a/icu4j/perf-tests/data/collation/TestNames_Simplified_Chinese.txt
+++ b/icu4j/perf-tests/data/collation/TestNames_Simplified_Chinese.txt
@@ -1,6 +1,6 @@
 #/**
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2008, International Business Machines Corporation and    *
 # * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/data/collation/TestNames_Thai.txt b/icu4j/perf-tests/data/collation/TestNames_Thai.txt
index 503d592..ea16f4d 100644
--- a/icu4j/perf-tests/data/collation/TestNames_Thai.txt
+++ b/icu4j/perf-tests/data/collation/TestNames_Thai.txt
@@ -1,6 +1,6 @@
 #/**
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2008, International Business Machines Corporation and    *
 # * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/data/icuperf2report.xsl b/icu4j/perf-tests/data/icuperf2report.xsl
index 824222d..8ed20b1 100644
--- a/icu4j/perf-tests/data/icuperf2report.xsl
+++ b/icu4j/perf-tests/data/icuperf2report.xsl
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 
-<!-- © 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html#License -->
+<!-- © 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html -->
 <!-- Copyright (C) 2012 IBM Corporation and Others. All Rights Reserved. -->
 
 <xsl:stylesheet version="1.0"
@@ -27,4 +27,4 @@
       </xsl:for-each>
     </report>
   </xsl:template>
-</xsl:stylesheet>
\ No newline at end of file
+</xsl:stylesheet>
diff --git a/icu4j/perf-tests/dateformatperf.pl b/icu4j/perf-tests/dateformatperf.pl
index 6f2a2d4..b4ebe68 100755
--- a/icu4j/perf-tests/dateformatperf.pl
+++ b/icu4j/perf-tests/dateformatperf.pl
@@ -1,6 +1,6 @@
 #!/usr/local/bin/perl
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2007 International Business Machines Corporation and     *
 # * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/decimalformatperf.pl b/icu4j/perf-tests/decimalformatperf.pl
index 92dad63..a9852cd 100755
--- a/icu4j/perf-tests/decimalformatperf.pl
+++ b/icu4j/perf-tests/decimalformatperf.pl
@@ -1,6 +1,6 @@
 #!/usr/local/bin/perl
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2007 International Business Machines Corporation and     *
 # * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/normalizationperf_r_b.pl b/icu4j/perf-tests/normalizationperf_r_b.pl
index 0a126ec..67fba9c 100755
--- a/icu4j/perf-tests/normalizationperf_r_b.pl
+++ b/icu4j/perf-tests/normalizationperf_r_b.pl
@@ -2,7 +2,7 @@
 #  ********************************************************************
 #  * COPYRIGHT:
 #  * © 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  * Copyright (c) 2002-2007, International Business Machines
 #  * Corporation and others. All Rights Reserved.
 #  ********************************************************************
diff --git a/icu4j/perf-tests/normalizationperf_r_l.pl b/icu4j/perf-tests/normalizationperf_r_l.pl
index f2b189b..c5c51a8 100755
--- a/icu4j/perf-tests/normalizationperf_r_l.pl
+++ b/icu4j/perf-tests/normalizationperf_r_l.pl
@@ -2,7 +2,7 @@
 #  ********************************************************************
 #  * COPYRIGHT:
 #  * © 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  * Copyright (c) 2002-2007, International Business Machines
 #  * Corporation and others. All Rights Reserved.
 #  ********************************************************************
diff --git a/icu4j/perf-tests/normperf.pl b/icu4j/perf-tests/normperf.pl
index a4f8faa..3bfba5f 100755
--- a/icu4j/perf-tests/normperf.pl
+++ b/icu4j/perf-tests/normperf.pl
@@ -1,6 +1,6 @@
 #!/usr/local/bin/perl
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2007 International Business Machines Corporation and     *
 # * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/perftests.pl b/icu4j/perf-tests/perftests.pl
index 1e30786..0028a8b 100755
--- a/icu4j/perf-tests/perftests.pl
+++ b/icu4j/perf-tests/perftests.pl
@@ -1,6 +1,6 @@
 #!/usr/local/bin/perl
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2012 International Business Machines Corporation and     *
 # * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/perldriver/Dataset.pm b/icu4j/perf-tests/perldriver/Dataset.pm
index 095a701..8188ec9 100644
--- a/icu4j/perf-tests/perldriver/Dataset.pm
+++ b/icu4j/perf-tests/perldriver/Dataset.pm
@@ -2,7 +2,7 @@
 #  ********************************************************************
 #  * COPYRIGHT:
 #  * © 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  * Copyright (c) 2006, International Business Machines Corporation and
 #  * others. All Rights Reserved.
 #  ********************************************************************
diff --git a/icu4j/perf-tests/perldriver/Format.pm b/icu4j/perf-tests/perldriver/Format.pm
index 7faab59..e521a1c 100644
--- a/icu4j/perf-tests/perldriver/Format.pm
+++ b/icu4j/perf-tests/perldriver/Format.pm
@@ -2,7 +2,7 @@
 #  ********************************************************************
 #  * COPYRIGHT:
 #  * © 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  * Copyright (c) 2006, International Business Machines Corporation and
 #  * others. All Rights Reserved.
 #  ********************************************************************
diff --git a/icu4j/perf-tests/perldriver/Output.pm b/icu4j/perf-tests/perldriver/Output.pm
index b26ed26..c2f7e32 100644
--- a/icu4j/perf-tests/perldriver/Output.pm
+++ b/icu4j/perf-tests/perldriver/Output.pm
@@ -3,7 +3,7 @@
 #  ********************************************************************
 #  * COPYRIGHT:
 #  * © 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  * Copyright (c) 2006, International Business Machines Corporation and
 #  * others. All Rights Reserved.
 #  ********************************************************************
diff --git a/icu4j/perf-tests/perldriver/PerfFramework4j.pm b/icu4j/perf-tests/perldriver/PerfFramework4j.pm
index 33a7710..a5bb092 100644
--- a/icu4j/perf-tests/perldriver/PerfFramework4j.pm
+++ b/icu4j/perf-tests/perldriver/PerfFramework4j.pm
@@ -2,7 +2,7 @@
 #  ***********************************************************************
 #  * COPYRIGHT:
 #  * © 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  * Copyright (c) 2002-2006, International Business Machines Corporation
 #  * and others. All Rights Reserved.
 #  ***********************************************************************
diff --git a/icu4j/perf-tests/rbbiperf_r.pl b/icu4j/perf-tests/rbbiperf_r.pl
index dd595d9..62329e2 100755
--- a/icu4j/perf-tests/rbbiperf_r.pl
+++ b/icu4j/perf-tests/rbbiperf_r.pl
@@ -2,7 +2,7 @@
 #  ********************************************************************
 #  * COPYRIGHT:
 #  * © 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  * Copyright (c) 2002-2007, International Business Machines
 #  * Corporation and others. All Rights Reserved.
 #  ********************************************************************
diff --git a/icu4j/perf-tests/resourcebundleperf.pl b/icu4j/perf-tests/resourcebundleperf.pl
index 90068f8..417f5ac 100755
--- a/icu4j/perf-tests/resourcebundleperf.pl
+++ b/icu4j/perf-tests/resourcebundleperf.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #/**
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2006-2008, International Business Machines Corporation and    *
 # * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/BreakIteratorPerformanceTest.java b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/BreakIteratorPerformanceTest.java
index 3925326..ee45303 100644
--- a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/BreakIteratorPerformanceTest.java
+++ b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/BreakIteratorPerformanceTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2002-2008, International Business Machines           *
diff --git a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/CollationPerformanceTest.java b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/CollationPerformanceTest.java
index 7fcdcb3..450a550 100644
--- a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/CollationPerformanceTest.java
+++ b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/CollationPerformanceTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2002-2007, International Business Machines Corporation and    *
@@ -1270,4 +1270,4 @@
             this.value = value;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/ConverterPerformanceTest.java b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/ConverterPerformanceTest.java
index 0aad2c0..dade682 100644
--- a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/ConverterPerformanceTest.java
+++ b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/ConverterPerformanceTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2008, International Business Machines Corporation and    *
diff --git a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/DateFormatPerformanceTest.java b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/DateFormatPerformanceTest.java
index 5d70c20..16dba7a 100644
--- a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/DateFormatPerformanceTest.java
+++ b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/DateFormatPerformanceTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * ******************************************************************************
  * Copyright (C) 2007, International Business Machines Corporation and others.  * 
diff --git a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/DecimalFormatPerformanceTest.java b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/DecimalFormatPerformanceTest.java
index 99bcbab..d41b128 100644
--- a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/DecimalFormatPerformanceTest.java
+++ b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/DecimalFormatPerformanceTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  * ******************************************************************************
  * Copyright (C) 2007, International Business Machines Corporation and * others.
diff --git a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java
index 7e36256..9d083f9 100644
--- a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java
+++ b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2002-2009, International Business Machines           *
diff --git a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/PerfTest.java b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/PerfTest.java
index ec89cc0..4a8068d 100644
--- a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/PerfTest.java
+++ b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/PerfTest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
  * Copyright (c) 2002-2008, International Business Machines
diff --git a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/RBBIPerf.java b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/RBBIPerf.java
index 60c6227..342f7a5 100644
--- a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/RBBIPerf.java
+++ b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/RBBIPerf.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2002-2004, International Business Machines
diff --git a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/ResourceBundlePerf.java b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/ResourceBundlePerf.java
index a97ec79..24ebd4f 100644
--- a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/ResourceBundlePerf.java
+++ b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/ResourceBundlePerf.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2006-2008, International Business Machines
diff --git a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/ServiceObjectCreationPerf.java b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/ServiceObjectCreationPerf.java
index ec80f93..0db4ad1 100644
--- a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/ServiceObjectCreationPerf.java
+++ b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/ServiceObjectCreationPerf.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/UCharacterPerf.java b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/UCharacterPerf.java
index 2aeb24b..4379fda 100644
--- a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/UCharacterPerf.java
+++ b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/UCharacterPerf.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2004, International Business Machines Corporation and    *
diff --git a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/UnicodeSetPerf.java b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/UnicodeSetPerf.java
index 70af3e2..a8e95e1 100644
--- a/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/UnicodeSetPerf.java
+++ b/icu4j/perf-tests/src/com/ibm/icu/dev/test/perf/UnicodeSetPerf.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2002-2007, International Business Machines
diff --git a/icu4j/perf-tests/ucharacterperf.pl b/icu4j/perf-tests/ucharacterperf.pl
index 1f4ca3b..b3a0461 100755
--- a/icu4j/perf-tests/ucharacterperf.pl
+++ b/icu4j/perf-tests/ucharacterperf.pl
@@ -1,6 +1,6 @@
 #!/usr/local/bin/perl
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2007 International Business Machines Corporation and     *
 # * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/ucharacterperf_r.pl b/icu4j/perf-tests/ucharacterperf_r.pl
index 7e6e76b..91579a4 100755
--- a/icu4j/perf-tests/ucharacterperf_r.pl
+++ b/icu4j/perf-tests/ucharacterperf_r.pl
@@ -2,7 +2,7 @@
 #  ********************************************************************
 #  * COPYRIGHT:
 #  * © 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  * Copyright (c) 2002-2007, International Business Machines
 #  * Corporation and others. All Rights Reserved.
 #  ********************************************************************
diff --git a/icu4j/perf-tests/unicodesetperf.pl b/icu4j/perf-tests/unicodesetperf.pl
index 69a6028..165cb5f 100755
--- a/icu4j/perf-tests/unicodesetperf.pl
+++ b/icu4j/perf-tests/unicodesetperf.pl
@@ -1,6 +1,6 @@
 #!/usr/local/bin/perl
 # * © 2016 and later: Unicode, Inc. and others.
-# * License & terms of use: http://www.unicode.org/copyright.html#License
+# * License & terms of use: http://www.unicode.org/copyright.html
 # *******************************************************************************
 # * Copyright (C) 2002-2007 International Business Machines Corporation and     *
 # * others. All Rights Reserved.                                                *
diff --git a/icu4j/perf-tests/unicodesetperf_r.pl b/icu4j/perf-tests/unicodesetperf_r.pl
index 13c0ad7..701491d 100755
--- a/icu4j/perf-tests/unicodesetperf_r.pl
+++ b/icu4j/perf-tests/unicodesetperf_r.pl
@@ -2,7 +2,7 @@
 #  ********************************************************************
 #  * COPYRIGHT:
 #  * © 2016 and later: Unicode, Inc. and others.
-#  * License & terms of use: http://www.unicode.org/copyright.html#License
+#  * License & terms of use: http://www.unicode.org/copyright.html
 #  * Copyright (c) 2002-2007, International Business Machines
 #  * Corporation and others. All Rights Reserved.
 #  ********************************************************************
diff --git a/icu4j/readme.html b/icu4j/readme.html
index 496864b..281fdcb 100644
--- a/icu4j/readme.html
+++ b/icu4j/readme.html
@@ -5,7 +5,7 @@
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   <meta http-equiv="Content-Style-Type" content="text/css2">
   <title>ReadMe for ICU4J</title>
-  <meta name="COPYRIGHT" content="© 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html#License">
+  <meta name="COPYRIGHT" content="© 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html">
   <style type="text/css">
 h2.doc { background: #CCCCFF }
 h3.doc { text-decoration: underline }
@@ -14,23 +14,23 @@
 <body style="background-color: rgb(255, 255, 255);" lang="EN-US"
  link="#0000ff" vlink="#800080">
 <h1>International Components for Unicode for Java (ICU4J)</h1>
-<h2>Read Me for ICU4J 67.1</h2>
-(Last Update: 2020-Apr-1)
+<h2>Read Me for ICU4J 68.2</h2>
+(Last Update: 2020-Dec-02)
 <hr size="2" width="100%">
 
 <p>
-<b>Note:</b> This is major release of ICU4J. It contains bug fixes and adds implementations
+<b>Note:</b> This is a major release of ICU4J. It contains bug fixes and adds implementations
 of inherited API and introduces new API or functionality.
-<!-- <b>Note:</b> This is a preview release of ICU4J 67.
+<!-- <b>Note:</b> This is a preview release of ICU4J 68.
 The contents of this document may not reflect the recent changes done
-for ICU 67 development. It is not recommended for production use. -->
-<!-- <b>Note:</b> This is a development milestone of ICU4J 67.
+for ICU 68 development. It is not recommended for production use. -->
+<!-- <b>Note:</b> This is a development milestone of ICU4J 68.
 The contents of this document may not reflect the recent changes done
-for ICU 67 development. It is not recommended for production use. -->
-<!-- <b>Note:</b> This is a release candidate of ICU4J 67.
+for ICU 68 development. It is not recommended for production use. -->
+<!-- <b>Note:</b> This is a release candidate of ICU4J 68.
 The contents of this document may not reflect the recent changes done
-for ICU 67 development. This release candidate is intended for those
-wishing to verify ICU 67 integration before final release. It is not
+for ICU 68 development. This release candidate is intended for those
+wishing to verify ICU 68 integration before final release. It is not
 recommended for production use. -->
 </p>
 <p>For the most recent release, see the <a
@@ -76,60 +76,60 @@
 </p>
 <ul>
   <li><a
- href="http://userguide.icu-project.org/collation"><b>Collation</b></a>
+ href="https://unicode-org.github.io/icu/userguide/collation"><b>Collation</b></a>
 &#8211; rule-based, up-to-date Unicode Collation Algorithm (UCA) sorting order<br>
 &nbsp;&nbsp;&nbsp;&nbsp;For fast multilingual string comparison; faster
 and more complete than
 the J2SE implementation</li>
-  <li><a href="http://userguide.icu-project.org/conversion/detection"><b>Charset
+  <li><a href="https://unicode-org.github.io/icu/userguide/conversion/detection"><b>Charset
 Detection</b></a> &#8211; Recognition of various single and multibyte charsets<br>
 &nbsp;&nbsp;&nbsp;&nbsp;Useful for recognizing untagged text data</li>
   <li><a
- href="http://userguide.icu-project.org/strings/unicodeset"><b>UnicodeSet</b></a>
+ href="https://unicode-org.github.io/icu/userguide/strings/unicodeset"><b>UnicodeSet</b></a>
 &#8211; standard set operations optimized for sets of Unicode characters<br>
 &nbsp;&nbsp;&nbsp;&nbsp;UnicodeSets can be built from string patterns
 using any Unicode properties.</li>
-  <li><a href="http://userguide.icu-project.org/transforms"><b>Transforms</b></a>
+  <li><a href="https://unicode-org.github.io/icu/userguide/transforms"><b>Transforms</b></a>
 &#8211; a flexible mechanism for Unicode text conversions<br>
 &nbsp;&nbsp;&nbsp;&nbsp;Including Full/Halfwidth conversions,
 Normalization, Case conversions, Hex
 conversions, and transliterations between scripts (50+ pairs)</li>
   <li><a
- href="http://userguide.icu-project.org/transforms/normalization"><b>Unicode
+ href="https://unicode-org.github.io/icu/userguide/transforms/normalization"><b>Unicode
 Normalization</b></a> &#8211; NFC, NFD, NFKD, NFKC<br>
 &nbsp;&nbsp;&nbsp;&nbsp;For canonical text representations, needed for
 XML and the net</li>
   <li><a
- href="http://userguide.icu-project.org/datetime/calendar"><b>International
+ href="https://unicode-org.github.io/icu/userguide/datetime/calendar"><b>International
 Calendars</b></a> &#8211; Arabic, Buddhist, Chinese, Hebrew, Japanese, Ethiopic, Islamic, Coptic and other calendars<br>
 &nbsp;&nbsp;&nbsp;&nbsp;Required for correct presentation of dates in
 certain countries</li>
   <li><a
- href="http://userguide.icu-project.org/formatparse/datetime"><b>Date
+ href="https://unicode-org.github.io/icu/userguide/format_parse/datetime"><b>Date
 Format
 Enhancements</b></a> &#8211; Date/time pattern generator, Relative date formatting, etc.<br>
 &nbsp;&nbsp;&nbsp;&nbsp;Enhancements to the normal Java date
 formatting.</li>
   <li><a
- href="http://userguide.icu-project.org/formatparse/numbers"><b>Number
+ href="https://unicode-org.github.io/icu/userguide/format_parse/numbers"><b>Number
 Format
 Enhancements</b></a> &#8211; Scientific Notation, Spelled-out, Compact decimal format, etc.<br>
 &nbsp;&nbsp;&nbsp;&nbsp;Enhancements to the normal Java number
 formatting. The spell-out format is
 used for checks and similar documents</li>
   <li><a
- href="http://userguide.icu-project.org/boundaryanalysis"><b>Enhanced
+ href="https://unicode-org.github.io/icu/userguide/boundaryanalysis"><b>Enhanced
 Word-Break Detection</b></a> &#8211; Rule-based, supports Thai, Khmer, Chinese, etc.<br>
 &nbsp;&nbsp;&nbsp;&nbsp;Required for correct support of Thai</li>
   <li><a
- href="http://userguide.icu-project.org/conversion/compression"><b>Unicode
+ href="https://unicode-org.github.io/icu/userguide/conversion/compression"><b>Unicode
 Text
 Compression</b></a> &#8211; Standard compression of Unicode text<br>
 &nbsp;&nbsp;&nbsp;&nbsp;Suitable for large numbers of small fields,
 where LZW and similar schemes
 do not apply</li>
   <li><a
- href="http://userguide.icu-project.org/conversion"><b>Charset Conversion</b></a> &#8211; Conversion to and from different charsets.<br>
+ href="https://unicode-org.github.io/icu/userguide/conversion"><b>Charset Conversion</b></a> &#8211; Conversion to and from different charsets.<br>
 &nbsp;&nbsp;&nbsp;&nbsp;Plugs into Java CharsetProvider Service Provider Interface (SPI)</li>
 
 </ul>
@@ -143,7 +143,7 @@
 
 <h2 class="doc"><a name="changes"></a>Changes In This Release</h2>
 
-<p>See the <a href="http://site.icu-project.org/download/67">ICU 67 download page</a>
+<p>See the <a href="http://site.icu-project.org/download/68">ICU 68 download page</a>
 for more informantion about changes in this release.</p>
 <p>The list of API changes since the previous ICU4J release is available
 <a href="APIChangeReport.html">here</a>.</p>
@@ -153,18 +153,18 @@
 The ICU projects (ICU4C and ICU4J) are hosted by the
 <a href="http://www.unicode.org/">Unicode Consortium</a>. The ICU binary
 and source files are distributed under the
-<a href="http://www.unicode.org/copyright.html#License">UNICODE DATA FILES
+<a href="http://www.unicode.org/copyright.html">UNICODE DATA FILES
 AND SOFTWARE LICENSE</a>. The full copy of the license and third party
 software licenses are available in <a href="./main/shared/licenses/LICENSE">LICENSE</a>
 file included in this package.
 </p>
 <h2 class="doc"><a name="PlatformDependencies"></a>Platform Dependencies</h2>
 <p>
-The minimum Java runtime version supported by ICU4J 67 is version 7. Java runtime version 6 is not supported.
+The minimum Java runtime version supported by ICU4J 68 is version 7. Java runtime version 6 is not supported.
 </p>
 <p>
 ICU4J since version 63 depend on J2SE 7 functionality. Therefore, ICU4J only runs on
-JRE version 7 or later. ICU4J 67 is tested on JRE 7, 8, 9, 10 and 11.
+JRE version 7 or later. ICU4J 68 is tested on JRE 7, 8, 9, 10 and 11.
 </p>
 
 <h2 class="doc"><a name="download"></a>How to Download ICU4J</h2>
@@ -183,19 +183,19 @@
 &lt;dependency&gt;
     &lt;groupId&gt;com.ibm.icu&lt;/groupId&gt;
     &lt;artifactId&gt;icu4j&lt;/artifactId&gt;
-    &lt;version&gt;67.1&lt;/version&gt;
+    &lt;version&gt;68.2&lt;/version&gt;
 &lt;/dependency&gt;
 
 &lt;dependency&gt;
     &lt;groupId&gt;com.ibm.icu&lt;/groupId&gt;
     &lt;artifactId&gt;icu4j-charset&lt;/artifactId&gt;
-    &lt;version&gt;67.1&lt;/version&gt;
+    &lt;version&gt;68.2&lt;/version&gt;
 &lt;/dependency&gt;
 
 &lt;dependency&gt;
     &lt;groupId&gt;com.ibm.icu&lt;/groupId&gt;
     &lt;artifactId&gt;icu4j-localespi&lt;/artifactId&gt;
-    &lt;version&gt;67.1&lt;/version&gt;
+    &lt;version&gt;68.2&lt;/version&gt;
 &lt;/dependency&gt;
 </pre>
   </ul>
@@ -440,7 +440,7 @@
 </table>
 
 <h2 class="doc"><a name="API"></a>Where to get Documentation</h2>
-<p>The <a href="http://userguide.icu-project.org/">ICU user's
+<p>The <a href="https://unicode-org.github.io/icu/userguide/">ICU user's
 guide</a> contains lots of general information about ICU, in its C,
 C++, and Java incarnations.</p>
 <p>The complete API documentation for ICU4J (javadoc) is available on
@@ -692,7 +692,7 @@
 how to configure Eclipse</a> to build and develop ICU4J on Eclipse IDE.</p>
 
 <p><b>Note:</b> To install and configure ICU4J Locale Service Provider, please refer the user guide
-page <a href="http://userguide.icu-project.org/icu4j-locale-service-provider">ICU4J Locale
+page <a href="https://unicode-org.github.io/icu/userguide/icu4j-locale-service-provider">ICU4J Locale
 Service Provider</a>.</p>
 
 <h2 class="doc"><a name="tryingout"></a>Trying Out ICU4J</h2>
@@ -730,54 +730,54 @@
 organization
 of the data in ICU4J.</p>
 <ul>
-  <li>The primary <b>locale data</b> is under the directory <tt>icudt67b</tt>,
+  <li>The primary <b>locale data</b> is under the directory <tt>icudt68b</tt>,
   as a set of <tt>".res"</tt> files whose names are the locale identifiers. 
   Locale naming is documented the <code>com.ibm.icu.util.ULocale</code>
   class, and the use of these names in searching for resources is documented 
   in <code>com.ibm.icu.util.UResourceBundle</code>.</li>
 
-  <li>The <b>break iterator data</b> is under the directory <tt>icudt67b/brkitr</tt>,
+  <li>The <b>break iterator data</b> is under the directory <tt>icudt68b/brkitr</tt>,
   as a set of <tt>".res"</tt>, <tt>".brk"</tt> and <tt>".dict"</tt> files.</li>
 
-  <li>The <b>collation data</b> is under the directory <tt>icudt67b/coll</tt>,
+  <li>The <b>collation data</b> is under the directory <tt>icudt68b/coll</tt>,
   as a set of <tt>".res"</tt> files.</li>
 
-  <li>The <b>currency display name data</b> is under the directory <tt>icudt67b/curr</tt>,
+  <li>The <b>currency display name data</b> is under the directory <tt>icudt68b/curr</tt>,
   as a set of <tt>".res"</tt> files.</li>
 
-  <li>The <b>language display name data</b> is under the directory <tt>icudt67b/lang</tt>,
+  <li>The <b>language display name data</b> is under the directory <tt>icudt68b/lang</tt>,
   as a set of <tt>".res"</tt> files.</li>
 
   <li>The <b>rule-based number format data</b> is under the directory
-  <tt>icudt67b/rbnf</tt>, as a set of <tt>".res"</tt> files.
+  <tt>icudt68b/rbnf</tt>, as a set of <tt>".res"</tt> files.
 
-  <li>The <b>region display name data</b> is under the directory <tt>icudt67b/region</tt>,
+  <li>The <b>region display name data</b> is under the directory <tt>icudt68b/region</tt>,
   as a set of <tt>".res"</tt> files.</li>
 
   <li>The <b>rule-based transliterator data</b> is under the directory
-  <tt>icudt67b/translit</tt>, as a set of <tt>".res"</tt> files.</li>
+  <tt>icudt68b/translit</tt>, as a set of <tt>".res"</tt> files.</li>
 
-  <li>The <b>measurement unit data</b> is under the directory <tt>icudt67b/unit</tt>,
+  <li>The <b>measurement unit data</b> is under the directory <tt>icudt68b/unit</tt>,
   as a set of <tt>".res"</tt> files.</li>
 
   <li>The <b>time zone display name data</b> is under the directory
-  <tt>icudt67b/zone</tt>, as a set of <tt>".res"</tt> files.</li>
+  <tt>icudt68b/zone</tt>, as a set of <tt>".res"</tt> files.</li>
 
   <li>The <b>character property data</b> and default <b>unicode collation algorithm
-  (UCA) data</b> is found under the directory <tt>icudt67b</tt>, as a set of
+  (UCA) data</b> is found under the directory <tt>icudt68b</tt>, as a set of
   <tt>".icu"</tt> files. </li>
 
-  <li>The <b>normalization data</b> is found under the directory <tt>icudt67b</tt>,
+  <li>The <b>normalization data</b> is found under the directory <tt>icudt68b</tt>,
   as a set of <tt>".nrm"</tt> files. </li>
 
   <li>The <b>character set converter data</b> is under the directory
-  <tt>icudt67b</tt>, as a set of <tt>".cnv"</tt> files.  These files are
+  <tt>icudt68b</tt>, as a set of <tt>".cnv"</tt> files.  These files are
   currently included only in icu-charset.jar.</li>
 
   <li>The <b>time zone rule data</b> is under the directory 
-  <tt>icudt67b</tt>, as <tt>zoneinfo64.res</tt>.</li>
+  <tt>icudt68b</tt>, as <tt>zoneinfo64.res</tt>.</li>
 
-  <li>The <b>holiday data</b> is under the directory <tt>icudt67b</tt>,
+  <li>The <b>holiday data</b> is under the directory <tt>icudt68b</tt>,
   as a set of <tt>".class"</tt> files, named <tt>"HolidayBundle_"</tt>
   followed by the locale ID.</li>
 
@@ -875,8 +875,8 @@
 <h5> Generating Data from CLDR </h5>
 <I> Note: This procedure assumes that all 3 sources are present</I>
 <ol>
-    <li>Checkout or download CLDR version 'release-37'</li>
-    <li>Checkout ICU with tag 'release-67-1'</li>
+    <li>Checkout or download CLDR version 'release-38'</li>
+    <li>Checkout ICU with tag 'release-68-2'</li>
     <li>cd to icu4c/source/data directory</li>
     <li>Follow the instructions in icu4c/source/data/cldr-icu-readme.txt</li>
     <li>Rebuild ICU4C with the newly generated data.</li>
@@ -891,7 +891,7 @@
 However, time zone data is frequently updated in response
 to changes made by local governments around the world.  If you need to update
 the time zone data, please refer the ICU user guide topic
-<a href="http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data">Updating the Time Zone Data</a>.</p>
+<a href="https://unicode-org.github.io/icu/userguide/datetime/timezone#updating-the-time-zone-data">Updating the Time Zone Data</a>.</p>
 <p>You can optionally configure ICU4J date and time
 service classes to use underlying JDK TimeZone implementation (see the ICU4J API reference
 <a href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/TimeZone.html">TimeZone</a>
@@ -921,7 +921,7 @@
 <br>
 <hr align="center" size="2" width="100%">
 <p><I><font size="-1">© 2016 and later: Unicode, Inc. and others.<br>
-License & terms of use: <a href="http://www.unicode.org/copyright.html#License">http://www.unicode.org/copyright.html#License</a>
+License & terms of use: <a href="http://www.unicode.org/copyright.html">http://www.unicode.org/copyright.html</a>
 </font></I></p>
 </body>
 </html>
diff --git a/icu4j/samples/.settings/org.eclipse.jdt.ui.prefs b/icu4j/samples/.settings/org.eclipse.jdt.ui.prefs
index 3680fab..d733db1 100644
--- a/icu4j/samples/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/samples/.settings/org.eclipse.jdt.ui.prefs
@@ -7,7 +7,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/samples/build.xml b/icu4j/samples/build.xml
index 1618c75..7266629 100644
--- a/icu4j/samples/build.xml
+++ b/icu4j/samples/build.xml
@@ -1,6 +1,6 @@
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *******************************************************************************
 * Copyright (C) 2011-2014, International Business Machines Corporation and         *
 * others. All Rights Reserved.                                                *
diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/PopulationData.java b/icu4j/samples/src/com/ibm/icu/samples/iuc/PopulationData.java
index f08da41..0710966 100644
--- a/icu4j/samples/src/com/ibm/icu/samples/iuc/PopulationData.java
+++ b/icu4j/samples/src/com/ibm/icu/samples/iuc/PopulationData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2014, International Business Machines Corporation and         *
diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample13_Hello.java b/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample13_Hello.java
index df9b6f3..dfb7509 100644
--- a/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample13_Hello.java
+++ b/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample13_Hello.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2014, International Business Machines Corporation and         *
diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample30_ResHello.java b/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample30_ResHello.java
index 85a71cc..8d91a94 100644
--- a/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample30_ResHello.java
+++ b/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample30_ResHello.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2014, International Business Machines Corporation and         *
diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample40_PopMsg.java b/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample40_PopMsg.java
index 53cb02c..2de8989 100644
--- a/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample40_PopMsg.java
+++ b/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample40_PopMsg.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2014, International Business Machines Corporation and         *
diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample50_PopSort.java b/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample50_PopSort.java
index 1450f15..97a14a1 100644
--- a/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample50_PopSort.java
+++ b/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample50_PopSort.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2014, International Business Machines Corporation and         *
diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/SupplementalUtilities.java b/icu4j/samples/src/com/ibm/icu/samples/iuc/SupplementalUtilities.java
index 9f52f27..f6674b8 100644
--- a/icu4j/samples/src/com/ibm/icu/samples/iuc/SupplementalUtilities.java
+++ b/icu4j/samples/src/com/ibm/icu/samples/iuc/SupplementalUtilities.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2016, International Business Machines Corporation and
diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/package-info.java b/icu4j/samples/src/com/ibm/icu/samples/iuc/package-info.java
index 407e4b3..6fc3b44 100644
--- a/icu4j/samples/src/com/ibm/icu/samples/iuc/package-info.java
+++ b/icu4j/samples/src/com/ibm/icu/samples/iuc/package-info.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013, International Business Machines Corporation and         *
@@ -12,4 +12,4 @@
  *  This package contains samples for the IUC ICU workshops.
  *
  */
-package com.ibm.icu.samples.iuc;
\ No newline at end of file
+package com.ibm.icu.samples.iuc;
diff --git a/icu4j/samples/src/com/ibm/icu/samples/shaping/ArabicShapingSample.java b/icu4j/samples/src/com/ibm/icu/samples/shaping/ArabicShapingSample.java
index 78f5c69..4dff694 100644
--- a/icu4j/samples/src/com/ibm/icu/samples/shaping/ArabicShapingSample.java
+++ b/icu4j/samples/src/com/ibm/icu/samples/shaping/ArabicShapingSample.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2001-2009, International Business Machines
diff --git a/icu4j/samples/src/com/ibm/icu/samples/text/dateintervalformat/DateIntervalFormatSample.java b/icu4j/samples/src/com/ibm/icu/samples/text/dateintervalformat/DateIntervalFormatSample.java
index fd47af5..0778d7e 100644
--- a/icu4j/samples/src/com/ibm/icu/samples/text/dateintervalformat/DateIntervalFormatSample.java
+++ b/icu4j/samples/src/com/ibm/icu/samples/text/dateintervalformat/DateIntervalFormatSample.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013, International Business Machines Corporation and         *
diff --git a/icu4j/samples/src/com/ibm/icu/samples/text/datetimepatterngenerator/DateTimePatternGeneratorSample.java b/icu4j/samples/src/com/ibm/icu/samples/text/datetimepatterngenerator/DateTimePatternGeneratorSample.java
index 49b83b1..4066263 100644
--- a/icu4j/samples/src/com/ibm/icu/samples/text/datetimepatterngenerator/DateTimePatternGeneratorSample.java
+++ b/icu4j/samples/src/com/ibm/icu/samples/text/datetimepatterngenerator/DateTimePatternGeneratorSample.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013, International Business Machines Corporation and         *
@@ -182,4 +182,4 @@
         **************************************************************************************************/
  // ---replaceFieldTypesExample
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/samples/src/com/ibm/icu/samples/text/messagepattern/MessagePatternDemo.java b/icu4j/samples/src/com/ibm/icu/samples/text/messagepattern/MessagePatternDemo.java
index 6123c42..16adb45 100644
--- a/icu4j/samples/src/com/ibm/icu/samples/text/messagepattern/MessagePatternDemo.java
+++ b/icu4j/samples/src/com/ibm/icu/samples/text/messagepattern/MessagePatternDemo.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2010-2011, International Business Machines
diff --git a/icu4j/samples/src/com/ibm/icu/samples/text/messagepattern/MessagePatternUtilDemo.java b/icu4j/samples/src/com/ibm/icu/samples/text/messagepattern/MessagePatternUtilDemo.java
index 33161e9..da525ef 100644
--- a/icu4j/samples/src/com/ibm/icu/samples/text/messagepattern/MessagePatternUtilDemo.java
+++ b/icu4j/samples/src/com/ibm/icu/samples/text/messagepattern/MessagePatternUtilDemo.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2011, International Business Machines
diff --git a/icu4j/samples/src/com/ibm/icu/samples/text/messagepattern/MiniMessageFormatter.java b/icu4j/samples/src/com/ibm/icu/samples/text/messagepattern/MiniMessageFormatter.java
index b4b2839..aedcac1 100644
--- a/icu4j/samples/src/com/ibm/icu/samples/text/messagepattern/MiniMessageFormatter.java
+++ b/icu4j/samples/src/com/ibm/icu/samples/text/messagepattern/MiniMessageFormatter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2010-2011, International Business Machines
diff --git a/icu4j/samples/src/com/ibm/icu/samples/text/pluralformat/PluralFormatSample.java b/icu4j/samples/src/com/ibm/icu/samples/text/pluralformat/PluralFormatSample.java
index 3e04713..c40b35c 100644
--- a/icu4j/samples/src/com/ibm/icu/samples/text/pluralformat/PluralFormatSample.java
+++ b/icu4j/samples/src/com/ibm/icu/samples/text/pluralformat/PluralFormatSample.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2013-2014, International Business Machines Corporation and    *
@@ -94,4 +94,4 @@
        *******************************************************************/
       // ---PluralFormatExample
   }
-}
\ No newline at end of file
+}
diff --git a/icu4j/samples/src/com/ibm/icu/samples/util/timescale/PivotDemo.java b/icu4j/samples/src/com/ibm/icu/samples/util/timescale/PivotDemo.java
index cf220ab..976b51b 100644
--- a/icu4j/samples/src/com/ibm/icu/samples/util/timescale/PivotDemo.java
+++ b/icu4j/samples/src/com/ibm/icu/samples/util/timescale/PivotDemo.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2011, International Business Machines Corporation and    *
diff --git a/icu4j/samples/src/com/ibm/icu/samples/util/timezone/BasicTimeZoneExample.java b/icu4j/samples/src/com/ibm/icu/samples/util/timezone/BasicTimeZoneExample.java
index 822bc08..6008463 100644
--- a/icu4j/samples/src/com/ibm/icu/samples/util/timezone/BasicTimeZoneExample.java
+++ b/icu4j/samples/src/com/ibm/icu/samples/util/timezone/BasicTimeZoneExample.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2011, International Business Machines Corporation and         *
diff --git a/icu4j/stylesheet7.css b/icu4j/stylesheet7.css
index 9c19ee4..393e542 100644
--- a/icu4j/stylesheet7.css
+++ b/icu4j/stylesheet7.css
@@ -1,6 +1,6 @@
 /*
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *******************************************************************************
  * Copyright (C) 2012, International Business Machines Corporation and         *
  * others. All Rights Reserved.                                                *
diff --git a/icu4j/stylesheet8.css b/icu4j/stylesheet8.css
index e88d2bb..9f43c66 100644
--- a/icu4j/stylesheet8.css
+++ b/icu4j/stylesheet8.css
@@ -1,6 +1,6 @@
 /*
  * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  */
 /* Javadoc style sheet */
 /*
diff --git a/icu4j/tools/build/.settings/org.eclipse.jdt.ui.prefs b/icu4j/tools/build/.settings/org.eclipse.jdt.ui.prefs
index 3680fab..d733db1 100644
--- a/icu4j/tools/build/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/tools/build/.settings/org.eclipse.jdt.ui.prefs
@@ -7,7 +7,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/tools/build/README.txt b/icu4j/tools/build/README.txt
index ccb6b9c..7ab66bf 100644
--- a/icu4j/tools/build/README.txt
+++ b/icu4j/tools/build/README.txt
@@ -1,4 +1,4 @@
-© 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html#License
+© 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html
 Copyright (C) 1996-2004, International Business Machines Corporation and
 others. All Rights Reserved.
 
diff --git a/icu4j/tools/build/build.xml b/icu4j/tools/build/build.xml
index 70e3154..496694e 100644
--- a/icu4j/tools/build/build.xml
+++ b/icu4j/tools/build/build.xml
@@ -1,6 +1,6 @@
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *******************************************************************************
 * Copyright (C) 2009-2015, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
@@ -56,4 +56,4 @@
             <fileset dir="src-pre8"/>
         </copy>
     </target>
-</project>
\ No newline at end of file
+</project>
diff --git a/icu4j/tools/build/icu4j58.api3.gz b/icu4j/tools/build/icu4j58.api3.gz
deleted file mode 100644
index 746986a..0000000
--- a/icu4j/tools/build/icu4j58.api3.gz
+++ /dev/null
Binary files differ
diff --git a/icu4j/tools/build/icu4j68.api3.gz b/icu4j/tools/build/icu4j68.api3.gz
new file mode 100644
index 0000000..07ea62f
--- /dev/null
+++ b/icu4j/tools/build/icu4j68.api3.gz
Binary files differ
diff --git a/icu4j/tools/build/src-pre8/com/ibm/icu/dev/tool/docs/ICUTagletAdapter.java b/icu4j/tools/build/src-pre8/com/ibm/icu/dev/tool/docs/ICUTagletAdapter.java
index c7ad01a..3607522 100644
--- a/icu4j/tools/build/src-pre8/com/ibm/icu/dev/tool/docs/ICUTagletAdapter.java
+++ b/icu4j/tools/build/src-pre8/com/ibm/icu/dev/tool/docs/ICUTagletAdapter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2015, International Business Machines Corporation and         *
diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/coverage/JacocoReportCheck.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/coverage/JacocoReportCheck.java
index 7ae7ada..1c9eb9d 100644
--- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/coverage/JacocoReportCheck.java
+++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/coverage/JacocoReportCheck.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2016, International Business Machines Corporation and         *
diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/APIData.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/APIData.java
index d14b0cd..700f53c 100644
--- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/APIData.java
+++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/APIData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2004-2015, International Business Machines Corporation and    *
diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/APIInfo.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/APIInfo.java
index 80f450e..9dadd6f 100644
--- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/APIInfo.java
+++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/APIInfo.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2005-2013, International Business Machines Corporation and    *
diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/APIStatusConsistencyChecker.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/APIStatusConsistencyChecker.java
index d6d850a..3a15a40 100644
--- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/APIStatusConsistencyChecker.java
+++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/APIStatusConsistencyChecker.java
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.tool.docs;
 
 import java.io.File;
diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/CheckAPI.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/CheckAPI.java
index 0f11388..0670235 100644
--- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/CheckAPI.java
+++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/CheckAPI.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2004-2010, International Business Machines Corporation and         *
diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/CheckTags.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/CheckTags.java
index d0d3515..3e2121c 100644
--- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/CheckTags.java
+++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/CheckTags.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2002-2010, International Business Machines Corporation and    *
diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/CodeMangler.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/CodeMangler.java
index ff9b48d..6f7e545 100644
--- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/CodeMangler.java
+++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/CodeMangler.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2004-2012, International Business Machines Corporation and    *
diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/CollectAPI.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/CollectAPI.java
index 2bcbbcd..015030c 100644
--- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/CollectAPI.java
+++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/CollectAPI.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2010-2013, International Business Machines Corporation and    *
diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/DeprecatedAPIChecker.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/DeprecatedAPIChecker.java
index 46aca45..f89763f 100644
--- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/DeprecatedAPIChecker.java
+++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/DeprecatedAPIChecker.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2014, International Business Machines Corporation and         *
diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/Deprecator.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/Deprecator.java
index 251eb58..af29da1 100644
--- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/Deprecator.java
+++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/Deprecator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2005-2010, International Business Machines Corporation and    *
diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/GatherAPIData.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/GatherAPIData.java
index a78c6a2..ca4707e 100644
--- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/GatherAPIData.java
+++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/GatherAPIData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2004-2014, International Business Machines Corporation and    *
diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/GatherAPIDataOld.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/GatherAPIDataOld.java
index 1952485..8115a87 100644
--- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/GatherAPIDataOld.java
+++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/GatherAPIDataOld.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2004-2012, International Business Machines Corporation and    *
diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/ICUJDKCompare.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/ICUJDKCompare.java
index 5d7cb8c..a40a04e 100644
--- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/ICUJDKCompare.java
+++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/ICUJDKCompare.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2005-2012, International Business Machines Corporation and    *
diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/ICUTaglet.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/ICUTaglet.java
index 45a601f..7b1d33e 100644
--- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/ICUTaglet.java
+++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/ICUTaglet.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2002-2016 International Business Machines Corporation   *
diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/ICUTagletAdapter.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/ICUTagletAdapter.java
index 94ed1bb..b415d69 100644
--- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/ICUTagletAdapter.java
+++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/ICUTagletAdapter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2015, International Business Machines Corporation and         *
diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/ReportAPI.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/ReportAPI.java
index 1ba891d..8e8938e 100644
--- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/ReportAPI.java
+++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/ReportAPI.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2004-2013, International Business Machines Corporation and    *
@@ -289,8 +289,8 @@
         String title = "ICU4J API Comparison: " + oldData.name + " with " + newData.name;
         String info = "Contents generated by ReportAPI tool on " + new Date().toString();
         String copyright = "© " + year + " and later: Unicode, Inc. and others."
-                + " License & terms of use: <a href=\"http://www.unicode.org/copyright.html#License\">"
-                + "http://www.unicode.org/copyright.html#License</a>";
+                + " License & terms of use: <a href=\"http://www.unicode.org/copyright.html\">"
+                + "http://www.unicode.org/copyright.html</a>";
 
         if (html) {
             pw.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
@@ -298,7 +298,7 @@
             pw.println("<head>");
             pw.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">");
             pw.println("<!-- © " + year + " and later: Unicode, Inc. and others. -->");
-            pw.println("<!-- License & terms of use: http://www.unicode.org/copyright.html#License -->");
+            pw.println("<!-- License & terms of use: http://www.unicode.org/copyright.html -->");
             pw.println("<title>" + title + "</title>");
             pw.println("</head>");
             pw.println("<body>");
diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/SwatDeprecated.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/SwatDeprecated.java
index 3415f89..af0d892 100644
--- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/SwatDeprecated.java
+++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/SwatDeprecated.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2006-2010, International Business Machines Corporation and    *
diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/index/IndexGenerator.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/index/IndexGenerator.java
index 7f9b881..e1c03ee 100644
--- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/index/IndexGenerator.java
+++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/index/IndexGenerator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2005-2010, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/.settings/org.eclipse.jdt.ui.prefs b/icu4j/tools/misc/.settings/org.eclipse.jdt.ui.prefs
index 3680fab..d733db1 100644
--- a/icu4j/tools/misc/.settings/org.eclipse.jdt.ui.prefs
+++ b/icu4j/tools/misc/.settings/org.eclipse.jdt.ui.prefs
@@ -7,7 +7,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html\#License</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// \u00A9 ${year} and later\: Unicode, Inc. and others.\r\n// License &amp; terms of use\: http\://www.unicode.org/copyright.html</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/icu4j/tools/misc/build.xml b/icu4j/tools/misc/build.xml
index 17b7dfc..bf0ed08 100644
--- a/icu4j/tools/misc/build.xml
+++ b/icu4j/tools/misc/build.xml
@@ -1,6 +1,6 @@
 <!--
 * © 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 *******************************************************************************
 * Copyright (C) 2009-2011, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
@@ -30,4 +30,4 @@
     <target name="jar" depends="compile, copy, @jar" description="Create the project's jar file"/>
 
     <target name="src-jar" depends="@src-jar" description="Create the project's source jar file"/>
-</project>
\ No newline at end of file
+</project>
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/UOption.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/UOption.java
index b870b26..8844ab3 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/UOption.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/UOption.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2002-2004, International Business Machines
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/mbcs/BIG5Tool.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/mbcs/BIG5Tool.java
index 72d5019..9919827 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/mbcs/BIG5Tool.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/mbcs/BIG5Tool.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ***********************************************************************
  *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/mbcs/EUCTool.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/mbcs/EUCTool.java
index 07eafdc..a2c15a1 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/mbcs/EUCTool.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/mbcs/EUCTool.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ***********************************************************************
  *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/Checker.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/Checker.java
index f83984b..ef068c1 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/Checker.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/Checker.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ***********************************************************************
  * Copyright (C) 2005-2006, International Business Machines            *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/InputFile.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/InputFile.java
index 83ae463..a26b80f 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/InputFile.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/InputFile.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ***********************************************************************
  * Copyright (C) 2005-2007, International Business Machines Corporation and *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramList.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramList.java
index e5b1db4..1b72dd3 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramList.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramList.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ***********************************************************************
  * Copyright (C) 2005-2006, International Business Machines            *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramParser.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramParser.java
index c51235a..ff4d28d 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramParser.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramParser.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ***********************************************************************
  * Copyright (C) 2005, International Business Machines Corporation and *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/StatisticsTool.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/StatisticsTool.java
index 2e06d54..6d51dd3 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/StatisticsTool.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/StatisticsTool.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ***********************************************************************
  * Copyright (C) 2005-2012, International Business Machines            *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/compression/CompressionTableGenerator.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/compression/CompressionTableGenerator.java
index de078f1..ee8da7e 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/compression/CompressionTableGenerator.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/compression/CompressionTableGenerator.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/compression/package.html b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/compression/package.html
index e13371c..c42b863 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/compression/package.html
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/compression/package.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--  Copyright (C) 2016 and later: Unicode, Inc. and others.
-  License & terms of use: http://www.unicode.org/copyright.html#License
+  License & terms of use: http://www.unicode.org/copyright.html
 -->
 <!--  Copyright (C) 2000-2004, International Business Machines Corporation and
   others. All Rights Reserved.
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/IMETest.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/IMETest.java
index 8af95fd..1641754 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/IMETest.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/IMETest.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2010, International Business Machines Corporation and         *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/BengaliInputMethodDescriptor.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/BengaliInputMethodDescriptor.java
index ae50f9d..9025505 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/BengaliInputMethodDescriptor.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/BengaliInputMethodDescriptor.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/DevanagariInputMethodDescriptor.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/DevanagariInputMethodDescriptor.java
index 26ebdf9..54d996a 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/DevanagariInputMethodDescriptor.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/DevanagariInputMethodDescriptor.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/DisplayNames.properties b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/DisplayNames.properties
index bc27744..c573869 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/DisplayNames.properties
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/DisplayNames.properties
@@ -1,7 +1,7 @@
 #
 #*******************************************************************************
 # Copyright (C) 2016 and later: Unicode, Inc. and others.                      *
-# License & terms of use: http://www.unicode.org/copyright.html#License        *
+# License & terms of use: http://www.unicode.org/copyright.html        *
 #*******************************************************************************
 #*******************************************************************************
 #* Copyright (C) 1996-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/GujaratiInputMethodDescriptor.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/GujaratiInputMethodDescriptor.java
index 7c61deb..f008ae6 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/GujaratiInputMethodDescriptor.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/GujaratiInputMethodDescriptor.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/GurmukhiInputMethodDescriptor.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/GurmukhiInputMethodDescriptor.java
index f5579f3..9a6617b 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/GurmukhiInputMethodDescriptor.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/GurmukhiInputMethodDescriptor.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/IndicIMDescriptor.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/IndicIMDescriptor.java
index 09cacfb..4626066 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/IndicIMDescriptor.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/IndicIMDescriptor.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004, International Business Machines Corporation and         *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethod.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethod.java
index 7b1531f..e2fcd2e 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethod.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethod.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethodImpl.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethodImpl.java
index efb7f1b..1bcf47b 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethodImpl.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethodImpl.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2010, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/KannadaInputMethodDescriptor.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/KannadaInputMethodDescriptor.java
index a9ff423..79a6b6b 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/KannadaInputMethodDescriptor.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/KannadaInputMethodDescriptor.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/MalayalamInputMethodDescriptor.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/MalayalamInputMethodDescriptor.java
index 7c3741d..821c5a9 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/MalayalamInputMethodDescriptor.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/MalayalamInputMethodDescriptor.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/OriyaInputMethodDescriptor.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/OriyaInputMethodDescriptor.java
index 0019876..225e000 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/OriyaInputMethodDescriptor.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/OriyaInputMethodDescriptor.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/TamilInputMethodDescriptor.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/TamilInputMethodDescriptor.java
index 8c08a13..3aa3926 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/TamilInputMethodDescriptor.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/TamilInputMethodDescriptor.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/TeluguInputMethodDescriptor.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/TeluguInputMethodDescriptor.java
index a0b1e63..2d0e9e3 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/TeluguInputMethodDescriptor.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/TeluguInputMethodDescriptor.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2000-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/Transliterator.properties b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/Transliterator.properties
index 92d3fff..6628010 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/Transliterator.properties
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/Transliterator.properties
@@ -1,7 +1,7 @@
 #
 #*******************************************************************************
 # Copyright (C) 2016 and later: Unicode, Inc. and others.                      *
-# License & terms of use: http://www.unicode.org/copyright.html#License        *
+# License & terms of use: http://www.unicode.org/copyright.html        *
 #*******************************************************************************
 #*******************************************************************************
 #* Copyright (C) 1996-2004, International Business Machines Corporation and    *
@@ -21,4 +21,4 @@
 deactivateError=IME is already deactivated
 hideError=Cannot hide IME while active
 disposeError=Cannot dispose IME while active
-multipleDisposeError=IME is already disposed
\ No newline at end of file
+multipleDisposeError=IME is already disposed
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethod.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethod.java
index 1b26999..5181f66 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethod.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethod.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2011, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethodDescriptor.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethodDescriptor.java
index 172f89d..7334be3 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethodDescriptor.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethodDescriptor.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2010, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ArabicCharacterData.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ArabicCharacterData.java
index 2e9f3fb..e5d0eb2 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ArabicCharacterData.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ArabicCharacterData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ArabicShaping.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ArabicShaping.java
index 2cebb5b..a780d58 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ArabicShaping.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ArabicShaping.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/BuildMirroringTables.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/BuildMirroringTables.java
index 84d081c..5aa9aca 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/BuildMirroringTables.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/BuildMirroringTables.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/CanonGSUBBuilder.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/CanonGSUBBuilder.java
index 1dc7ffd..f0933fd 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/CanonGSUBBuilder.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/CanonGSUBBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2002-2010, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/CanonicalCharacterData.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/CanonicalCharacterData.java
index 0095da1..5c6c3c1 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/CanonicalCharacterData.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/CanonicalCharacterData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2002-2010, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ClassTable.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ClassTable.java
index 1313837..71ed231 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ClassTable.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ClassTable.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2010, International Business Machines Corporation and    *
@@ -236,4 +236,4 @@
     }
 }
     
-    
\ No newline at end of file
+    
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/DecompTable.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/DecompTable.java
index 8bc1e6d..5e63699 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/DecompTable.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/DecompTable.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2002-2010, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/Feature.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/Feature.java
index 5d40f14..f8a32d3 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/Feature.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/Feature.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2002-2004, International Business Machines Corporation and    *
@@ -58,4 +58,4 @@
     {
         featureIndex = index;
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/FeatureList.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/FeatureList.java
index 90f285e..ba91f9c 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/FeatureList.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/FeatureList.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
@@ -76,4 +76,4 @@
         
         System.out.println();
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/GDEFWriter.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/GDEFWriter.java
index e49c2f2..04cb45a 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/GDEFWriter.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/GDEFWriter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2005, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/GSUBWriter.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/GSUBWriter.java
index b98cf15..21c390d 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/GSUBWriter.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/GSUBWriter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
@@ -63,4 +63,4 @@
         dumpTable(output, 8);
         output.println("};\n");
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LanguageData.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LanguageData.java
index 1b29b4e..32575e0 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LanguageData.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LanguageData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2008, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureEntry.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureEntry.java
index 988c108..d75f5b9 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureEntry.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureEntry.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureModuleWriter.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureModuleWriter.java
index b799d68..00758e3 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureModuleWriter.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureModuleWriter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
@@ -24,4 +24,4 @@
     {
         tableWriter.writeTable(output);
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureTree.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureTree.java
index 59b4369..129d5b7 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureTree.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureTree.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2010, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureTreeWalker.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureTreeWalker.java
index 03b0fe2..35e07df 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureTreeWalker.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureTreeWalker.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2007, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/Lookup.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/Lookup.java
index 5e615a2..d110bff 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/Lookup.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/Lookup.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
@@ -88,4 +88,4 @@
             subtables[i].writeLookupSubtable(writer);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LookupList.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LookupList.java
index 2680cf1..8244716 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LookupList.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LookupList.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
@@ -56,4 +56,4 @@
             lookups[i].writeLookup(writer);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LookupSubtable.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LookupSubtable.java
index 5035255..bcd5077 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LookupSubtable.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/LookupSubtable.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
@@ -15,4 +15,4 @@
 public interface LookupSubtable
 {
     void writeLookupSubtable(OpenTypeTableWriter writer);
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ModuleWriter.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ModuleWriter.java
index 4ce871f..941679c 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ModuleWriter.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ModuleWriter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2008, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/OpenTypeTableWriter.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/OpenTypeTableWriter.java
index 133d9d6..56ef9cb 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/OpenTypeTableWriter.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/OpenTypeTableWriter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/OpenTypeTagBuilder.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/OpenTypeTagBuilder.java
index f241817..635c573 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/OpenTypeTagBuilder.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/OpenTypeTagBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptAndLanguages b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptAndLanguages
index b05e2f6..bf656b0 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptAndLanguages
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptAndLanguages
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
+ * License & terms of use: http://www.unicode.org/copyright.html
  *
  * (C) Copyright IBM Corp. 1998-2016. All Rights Reserved.
  *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptData.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptData.java
index bd1ff3f..b4faca5 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptData.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2010, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptIDModuleWriter.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptIDModuleWriter.java
index c04e56e..1677672 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptIDModuleWriter.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptIDModuleWriter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2015, International Business Machines Corporation and
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptList.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptList.java
index 13e4ad7..8c541cc 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptList.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptList.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
@@ -199,4 +199,4 @@
         }
     }
 }
-        
\ No newline at end of file
+        
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptModuleWriter.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptModuleWriter.java
index 9e2e209..57665d0 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptModuleWriter.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptModuleWriter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
@@ -21,4 +21,4 @@
 
     protected ScriptData scriptData;
     protected LanguageData languageData;
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptNameBuilder.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptNameBuilder.java
index b6d9117..96213ae 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptNameBuilder.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptNameBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2008, International Business Machines Corporation and    *
@@ -36,4 +36,4 @@
         
         scriptRunModuleWriter.writeScriptRuns("ScriptRunData.cpp");
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptRunModuleWriter.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptRunModuleWriter.java
index 75d965e..ff11e6c 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptRunModuleWriter.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptRunModuleWriter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2010, International Business Machines Corporation and    *
@@ -114,4 +114,4 @@
     
     private static final String postamble =
     "};\n";
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptTagModuleWriter.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptTagModuleWriter.java
index f6cd58f..99e624b 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptTagModuleWriter.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptTagModuleWriter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2015, International Business Machines Corporation and
@@ -160,4 +160,4 @@
     
     private static final String cppPostamble =
     "};\n";
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ShapingTypeBuilder.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ShapingTypeBuilder.java
index 86ce080..f6fae4f 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ShapingTypeBuilder.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ShapingTypeBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2005, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/TagUtilities.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/TagUtilities.java
index ba91513..a3b03de 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/TagUtilities.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/TagUtilities.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/TagValueData.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/TagValueData.java
index 822f176..7c063a1 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/TagValueData.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/TagValueData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2005, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/TaggedRecord.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/TaggedRecord.java
index a6acad5..6b08299 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/TaggedRecord.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/TaggedRecord.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiCharacterClasses.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiCharacterClasses.java
index eff12a6..bcc0c88 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiCharacterClasses.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiCharacterClasses.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2010, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTable.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTable.java
index 4637d05..ff7f7f2 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTable.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTable.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2008, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTableBuilder.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTableBuilder.java
index 0afcbae..919072d 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTableBuilder.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTableBuilder.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTableModuleWriter.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTableModuleWriter.java
index 32d5a71..360a86c 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTableModuleWriter.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTableModuleWriter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
@@ -30,4 +30,4 @@
     }
 
     private static final String[] includeFiles = {"LETypes.h", "ThaiShaping.h"};
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTransition.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTransition.java
index 2c82442..6afc614 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTransition.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTransition.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/TreeWalker.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/TreeWalker.java
index 367bfeb..90184a7 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/TreeWalker.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/layout/TreeWalker.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1998-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/locale/LikelySubtagsBuilder.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/locale/LikelySubtagsBuilder.java
index 6a7f6b8..fdba09b 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/locale/LikelySubtagsBuilder.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/locale/LikelySubtagsBuilder.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.tool.locale;
 
 import java.nio.ByteBuffer;
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/locale/LocaleDistanceBuilder.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/locale/LocaleDistanceBuilder.java
index 1db8119..0a70709 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/locale/LocaleDistanceBuilder.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/locale/LocaleDistanceBuilder.java
@@ -1,5 +1,5 @@
 // © 2017 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 package com.ibm.icu.dev.tool.locale;
 
 import java.io.BufferedWriter;
@@ -892,7 +892,7 @@
         System.out.println("Writing LocaleDistance.Data to " + TXT_PATH + '/' + TXT_FILE_NAME);
         try (PrintWriter out = openWriter()) {
             out.println("// © 2019 and later: Unicode, Inc. and others.\n" +
-                    "// License & terms of use: http://www.unicode.org/copyright.html#License\n" +
+                    "// License & terms of use: http://www.unicode.org/copyright.html\n" +
                     "// Generated by ICU4J LocaleDistanceBuilder.\n" +
                     TXT_FILE_BASE_NAME + ":table(nofallback){");
             out.println("    likely{");
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java
index 4d532eb..528a916 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 * Copyright (C) 2003-2010, International Business Machines Corporation and   *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java
index c491a05..f44992c 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ******************************************************************************
  * Copyright (C) 2003-2013, International Business Machines Corporation and   *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/timescale/CalculateLimits.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/timescale/CalculateLimits.java
index 1a222fd..021aedd 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/timescale/CalculateLimits.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/timescale/CalculateLimits.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2008, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/timescale/EpochOffsets.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/timescale/EpochOffsets.java
index e077e7e..e80f02b 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/timescale/EpochOffsets.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/timescale/EpochOffsets.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 2004-2008, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/timescale/GenerateCTimeScaleData.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/timescale/GenerateCTimeScaleData.java
index 073da8b..13691c3 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/timescale/GenerateCTimeScaleData.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/timescale/GenerateCTimeScaleData.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2008, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/timezone/ICUZDump.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/timezone/ICUZDump.java
index f2a0c1a..3c8d6af 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/timezone/ICUZDump.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/timezone/ICUZDump.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  ***********************************************************************
  * Copyright (C) 2007, International Business Machines                 *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/SourceSet.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/SourceSet.java
index 145f811..c5f2688 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/SourceSet.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/SourceSet.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2001-2010, International Business Machines
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/Trans.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/Trans.java
index 5764bb5..ca662c7 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/Trans.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/Trans.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
  *******************************************************************************
  * Copyright (C) 2001-2010, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/UnicodeSetCloseOver.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/UnicodeSetCloseOver.java
index b464575..8d7fddc 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/UnicodeSetCloseOver.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/UnicodeSetCloseOver.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 * Copyright (c) 2003-2012, International Business Machines
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/UnicodeSetClosure.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/UnicodeSetClosure.java
index ad2f2f8..bbcfa03 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/UnicodeSetClosure.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/UnicodeSetClosure.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  *******************************************************************************
  * Copyright (C) 1996-2010, International Business Machines Corporation and    *
@@ -305,4 +305,4 @@
         }
         return false;
     }
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/WriteIndicCharts.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/WriteIndicCharts.java
index 9132c55..359a2b5 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/WriteIndicCharts.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/WriteIndicCharts.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /**
 *******************************************************************************
 * Copyright (C) 2002-2010, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat
index 01e7c39..ecebfe3 100755
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat
@@ -1,6 +1,6 @@
 # ************************************************************************
 # Copyright (C) 2016 and later: Unicode, Inc. and others.
-# License & terms of use: http://www.unicode.org/copyright.html#License
+# License & terms of use: http://www.unicode.org/copyright.html
 # ************************************************************************
 @rem = '--*-Perl-*--
 @echo off
@@ -253,7 +253,7 @@
     print C_INDEX <<END;
 //--------------------------------------------------------------------
 // N.B.: This file has been generated mechanically from the
-// corresponding ICU4J file, which is the master file that receives
+// corresponding ICU4J file, which is the primary file that receives
 // primary updates.  The colon-delimited fields have been split into
 // separate strings.  For 'file' and 'internal' lines, the encoding
 // field has been deleted, since the encoding is processed at build
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/genIndexFilters.bat b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/genIndexFilters.bat
index 3e5801c..d489495 100755
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/genIndexFilters.bat
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/genIndexFilters.bat
@@ -1,7 +1,7 @@
 #/**
 # *******************************************************************************
 # * Copyright (C) 2016 and later: Unicode, Inc. and others.                     *
-# * License & terms of use: http://www.unicode.org/copyright.html#License       *
+# * License & terms of use: http://www.unicode.org/copyright.html       *
 # *******************************************************************************
 # *******************************************************************************
 # * Copyright (C) 2002-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/genIndexFilters.java b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/genIndexFilters.java
index 5e284f7..4fccbfd 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/genIndexFilters.java
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/genIndexFilters.java
@@ -1,5 +1,5 @@
 // © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
 *   Copyright (c) 2001-2010, International Business Machines
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/indic.bat b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/indic.bat
index 58e99c2..9802f43 100755
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/indic.bat
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/indic.bat
@@ -1,7 +1,7 @@
 REM /**
 REM *******************************************************************************
 REM * Copyright (C) 2016 and later: Unicode, Inc. and others.                     *
-REM * License & terms of use: http://www.unicode.org/copyright.html#License       *
+REM * License & terms of use: http://www.unicode.org/copyright.html       *
 REM *******************************************************************************
 REM *******************************************************************************
 REM * Copyright (C) 2002-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/indic.pl b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/indic.pl
index d4ec738..1ad72f8 100755
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/indic.pl
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/indic.pl
@@ -1,7 +1,7 @@
 #/**
 # *******************************************************************************
 # * Copyright (C) 2016 and later: Unicode, Inc. and others.                     *
-# * License & terms of use: http://www.unicode.org/copyright.html#License       *
+# * License & terms of use: http://www.unicode.org/copyright.html       *
 # *******************************************************************************
 # *******************************************************************************
 # * Copyright (C) 2000-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/indicExceptions.txt b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/indicExceptions.txt
index 35ba6fd..bcab1c5 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/indicExceptions.txt
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/indicExceptions.txt
@@ -1,7 +1,7 @@
 /**
  *******************************************************************************
  * Copyright (C) 2016 and later: Unicode, Inc. and others.                     *
- * License & terms of use: http://www.unicode.org/copyright.html#License       *
+ * License & terms of use: http://www.unicode.org/copyright.html       *
  *******************************************************************************
  *******************************************************************************
  * Copyright (C) 2002-2004, International Business Machines Corporation and    *
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/rbtTemplate.txt b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/rbtTemplate.txt
index cf5df63..6464159 100644
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/rbtTemplate.txt
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/rbtTemplate.txt
@@ -1,6 +1,6 @@
 /**********************************************************************
 * Copyright (C) 2016 and later: Unicode, Inc. and others.
-* License & terms of use: http://www.unicode.org/copyright.html#License
+* License & terms of use: http://www.unicode.org/copyright.html
 ***********************************************************************
 ***********************************************************************
 * Copyright (c) 2000, International Business Machines Corporation
diff --git a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/varsub.bat b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/varsub.bat
index 9950e97..fb8fa8a 100755
--- a/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/varsub.bat
+++ b/icu4j/tools/misc/src/com/ibm/icu/dev/tool/translit/varsub.bat
@@ -1,7 +1,7 @@
 #/**
 # *******************************************************************************
 # * Copyright (C) 2016 and later: Unicode, Inc. and others.                     *
-# * License & terms of use: http://www.unicode.org/copyright.html#License       *
+# * License & terms of use: http://www.unicode.org/copyright.html       *
 # *******************************************************************************
 # *******************************************************************************
 # * Copyright (C) 2001-2004, International Business Machines Corporation and    *
diff --git a/libandroidicu/include/unicode/icudataver.h b/libandroidicu/include/unicode/icudataver.h
index 1cb202e..f218ed8 100644
--- a/libandroidicu/include/unicode/icudataver.h
+++ b/libandroidicu/include/unicode/icudataver.h
@@ -38,6 +38,6 @@
  * 
  * @stable ICU 49
  */
-U_STABLE void U_EXPORT2 u_getDataVersion(UVersionInfo dataVersionFillin, UErrorCode *status);
+U_CAPI void U_EXPORT2 u_getDataVersion(UVersionInfo dataVersionFillin, UErrorCode *status);
 
 #endif
diff --git a/libandroidicu/include/unicode/putil.h b/libandroidicu/include/unicode/putil.h
index 759b136..500c212 100644
--- a/libandroidicu/include/unicode/putil.h
+++ b/libandroidicu/include/unicode/putil.h
@@ -66,7 +66,7 @@
  *   
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2 u_getDataDirectory(void);
+U_CAPI const char* U_EXPORT2 u_getDataDirectory(void);
 
 
 /** 
@@ -88,7 +88,7 @@
  * @see u_init
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 u_setDataDirectory(const char *directory);
+U_CAPI void U_EXPORT2 u_setDataDirectory(const char *directory);
 
 #ifndef U_HIDE_INTERNAL_API
 /**
@@ -99,7 +99,7 @@
   * @return the time zone data override directory.
   * @internal
   */ 
-U_INTERNAL const char * U_EXPORT2 u_getTimeZoneFilesDirectory(UErrorCode *status);
+U_CAPI const char * U_EXPORT2 u_getTimeZoneFilesDirectory(UErrorCode *status);
 
 /**
   * Set the time zone files override directory.
@@ -109,7 +109,7 @@
   *   will access the time zone data.
   * @internal
   */
-U_INTERNAL void U_EXPORT2 u_setTimeZoneFilesDirectory(const char *path, UErrorCode *status);
+U_CAPI void U_EXPORT2 u_setTimeZoneFilesDirectory(const char *path, UErrorCode *status);
 #endif  /* U_HIDE_INTERNAL_API */
 
 
@@ -155,7 +155,7 @@
  * @see U_CHARSET_FAMILY
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_charsToUChars(const char *cs, UChar *us, int32_t length);
 
 /**
@@ -177,7 +177,7 @@
  * @see U_CHARSET_FAMILY
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_UCharsToChars(const UChar *us, char *cs, int32_t length);
 
 #endif
diff --git a/libandroidicu/include/unicode/ubidi.h b/libandroidicu/include/unicode/ubidi.h
index 9b048b5..63d0e45 100644
--- a/libandroidicu/include/unicode/ubidi.h
+++ b/libandroidicu/include/unicode/ubidi.h
@@ -499,7 +499,7 @@
  * @return An empty <code>UBiDi</code> object.
  * @stable ICU 2.0
  */
-U_STABLE UBiDi * U_EXPORT2
+U_CAPI UBiDi * U_EXPORT2
 ubidi_open(void);
 
 /**
@@ -536,7 +536,7 @@
  * @return An empty <code>UBiDi</code> object with preallocated memory.
  * @stable ICU 2.0
  */
-U_STABLE UBiDi * U_EXPORT2
+U_CAPI UBiDi * U_EXPORT2
 ubidi_openSized(int32_t maxLength, int32_t maxRunCount, UErrorCode *pErrorCode);
 
 /**
@@ -559,7 +559,7 @@
  * @see ubidi_setLine
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_close(UBiDi *pBiDi);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -597,7 +597,7 @@
  * this "inverse Bidi" and that the current implementation provides only an
  * approximation of "inverse Bidi".</p>
  *
- * <p>With <code>isInverse</code> set to <code>TRUE</code>,
+ * <p>With <code>isInverse</code> set to <code>true</code>,
  * this function changes the behavior of some of the subsequent functions
  * in a way that they can be used for the inverse Bidi algorithm.
  * Specifically, runs of text with numeric characters will be treated in a
@@ -610,12 +610,12 @@
  * the runs of the logically ordered output.</p>
  *
  * <p>Calling this function with argument <code>isInverse</code> set to
- * <code>TRUE</code> is equivalent to calling
+ * <code>true</code> is equivalent to calling
  * <code>ubidi_setReorderingMode</code> with argument
  * <code>reorderingMode</code>
  * set to <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>.<br>
  * Calling this function with argument <code>isInverse</code> set to
- * <code>FALSE</code> is equivalent to calling
+ * <code>false</code> is equivalent to calling
  * <code>ubidi_setReorderingMode</code> with argument
  * <code>reorderingMode</code>
  * set to <code>#UBIDI_REORDER_DEFAULT</code>.
@@ -629,18 +629,18 @@
  * @see ubidi_setReorderingMode
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setInverse(UBiDi *pBiDi, UBool isInverse);
 
 /**
  * Is this Bidi object set to perform the inverse Bidi algorithm?
  * <p>Note: calling this function after setting the reordering mode with
- * <code>ubidi_setReorderingMode</code> will return <code>TRUE</code> if the
+ * <code>ubidi_setReorderingMode</code> will return <code>true</code> if the
  * reordering mode was set to <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>,
- * <code>FALSE</code> for all other values.</p>
+ * <code>false</code> for all other values.</p>
  *
  * @param pBiDi is a <code>UBiDi</code> object.
- * @return TRUE if the Bidi object is set to perform the inverse Bidi algorithm
+ * @return true if the Bidi object is set to perform the inverse Bidi algorithm
  * by handling numbers as L.
  *
  * @see ubidi_setInverse
@@ -648,7 +648,7 @@
  * @stable ICU 2.0
  */
 
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ubidi_isInverse(UBiDi *pBiDi);
 
 /**
@@ -671,7 +671,7 @@
  * @see ubidi_setPara
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_orderParagraphsLTR(UBiDi *pBiDi, UBool orderParagraphsLTR);
 
 /**
@@ -679,13 +679,13 @@
  * successive paragraphs progress from left to right?
  *
  * @param pBiDi is a <code>UBiDi</code> object.
- * @return TRUE if the Bidi object is set to allocate level 0 to block
+ * @return true if the Bidi object is set to allocate level 0 to block
  *         separators.
  *
  * @see ubidi_orderParagraphsLTR
  * @stable ICU 3.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ubidi_isOrderParagraphsLTR(UBiDi *pBiDi);
 
 /**
@@ -717,7 +717,7 @@
       * @stable ICU 3.6 */
     UBIDI_REORDER_RUNS_ONLY,
     /** Visual to Logical algorithm which handles numbers like L
-      * (same algorithm as selected by <code>ubidi_setInverse(TRUE)</code>.
+      * (same algorithm as selected by <code>ubidi_setInverse(true)</code>.
       * @see ubidi_setInverse
       * @stable ICU 3.6 */
     UBIDI_REORDER_INVERSE_NUMBERS_AS_L,
@@ -836,7 +836,7 @@
  * reordered sequence (the option <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code> can
  * be used with function <code>ubidi_writeReordered</code> to this end. This
  * mode is equivalent to calling <code>ubidi_setInverse()</code> with
- * argument <code>isInverse</code> set to <code>TRUE</code>.</li>
+ * argument <code>isInverse</code> set to <code>true</code>.</li>
  *
  * <li>When the reordering mode is set to
  * <code>#UBIDI_REORDER_INVERSE_LIKE_DIRECT</code>, the "direct" Logical to Visual
@@ -889,7 +889,7 @@
  * @see ubidi_writeReordered
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setReorderingMode(UBiDi *pBiDi, UBiDiReorderingMode reorderingMode);
 
 /**
@@ -900,7 +900,7 @@
  * @see ubidi_setReorderingMode
  * @stable ICU 3.6
  */
-U_STABLE UBiDiReorderingMode U_EXPORT2
+U_CAPI UBiDiReorderingMode U_EXPORT2
 ubidi_getReorderingMode(UBiDi *pBiDi);
 
 /**
@@ -938,7 +938,7 @@
      *
      * <p>If this option is set in conjunction with reordering mode
      * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code> or with calling
-     * <code>ubidi_setInverse(TRUE)</code>, it implies
+     * <code>ubidi_setInverse(true)</code>, it implies
      * option <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code>
      * in calls to function <code>ubidi_writeReordered()</code>.</p>
      *
@@ -1019,7 +1019,7 @@
      *
      * <p>When the <code>UBIDI_OPTION_STREAMING</code> option is used,
      * it is recommended to call <code>ubidi_orderParagraphsLTR()</code> with
-     * argument <code>orderParagraphsLTR</code> set to <code>TRUE</code> before
+     * argument <code>orderParagraphsLTR</code> set to <code>true</code> before
      * calling <code>ubidi_setPara</code> so that later paragraphs may be
      * concatenated to previous paragraphs on the right.</p>
      *
@@ -1045,7 +1045,7 @@
  * @see ubidi_getReorderingOptions
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setReorderingOptions(UBiDi *pBiDi, uint32_t reorderingOptions);
 
 /**
@@ -1056,7 +1056,7 @@
  * @see ubidi_setReorderingOptions
  * @stable ICU 3.6
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 ubidi_getReorderingOptions(UBiDi *pBiDi);
 
 /**
@@ -1143,7 +1143,7 @@
  * @see ubidi_setPara
  * @stable ICU 4.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setContext(UBiDi *pBiDi,
                  const UChar *prologue, int32_t proLength,
                  const UChar *epilogue, int32_t epiLength,
@@ -1231,7 +1231,7 @@
  * @param pErrorCode must be a valid pointer to an error code value.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setPara(UBiDi *pBiDi, const UChar *text, int32_t length,
               UBiDiLevel paraLevel, UBiDiLevel *embeddingLevels,
               UErrorCode *pErrorCode);
@@ -1282,7 +1282,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setLine(const UBiDi *pParaBiDi,
               int32_t start, int32_t limit,
               UBiDi *pLineBiDi,
@@ -1303,7 +1303,7 @@
  * @see UBiDiDirection
  * @stable ICU 2.0
  */
-U_STABLE UBiDiDirection U_EXPORT2
+U_CAPI UBiDiDirection U_EXPORT2
 ubidi_getDirection(const UBiDi *pBiDi);
 
 /**
@@ -1333,7 +1333,7 @@
  * @see UBiDiDirection
  * @stable ICU 4.6
  */
-U_STABLE UBiDiDirection U_EXPORT2
+U_CAPI UBiDiDirection U_EXPORT2
 ubidi_getBaseDirection(const UChar *text,  int32_t length );
 
 /**
@@ -1347,7 +1347,7 @@
  * @see ubidi_setLine
  * @stable ICU 2.0
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 ubidi_getText(const UBiDi *pBiDi);
 
 /**
@@ -1358,7 +1358,7 @@
  * @return The length of the text that the UBiDi object was created for.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getLength(const UBiDi *pBiDi);
 
 /**
@@ -1376,7 +1376,7 @@
  * @see ubidi_getParagraphByIndex
  * @stable ICU 2.0
  */
-U_STABLE UBiDiLevel U_EXPORT2
+U_CAPI UBiDiLevel U_EXPORT2
 ubidi_getParaLevel(const UBiDi *pBiDi);
 
 /**
@@ -1387,7 +1387,7 @@
  * @return The number of paragraphs.
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_countParagraphs(UBiDi *pBiDi);
 
 /**
@@ -1424,7 +1424,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getParagraph(const UBiDi *pBiDi, int32_t charIndex, int32_t *pParaStart,
                    int32_t *pParaLimit, UBiDiLevel *pParaLevel,
                    UErrorCode *pErrorCode);
@@ -1456,7 +1456,7 @@
  *
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getParagraphByIndex(const UBiDi *pBiDi, int32_t paraIndex,
                           int32_t *pParaStart, int32_t *pParaLimit,
                           UBiDiLevel *pParaLevel, UErrorCode *pErrorCode);
@@ -1476,7 +1476,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE UBiDiLevel U_EXPORT2
+U_CAPI UBiDiLevel U_EXPORT2
 ubidi_getLevelAt(const UBiDi *pBiDi, int32_t charIndex);
 
 /**
@@ -1497,7 +1497,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE const UBiDiLevel * U_EXPORT2
+U_CAPI const UBiDiLevel * U_EXPORT2
 ubidi_getLevels(UBiDi *pBiDi, UErrorCode *pErrorCode);
 
 /**
@@ -1524,7 +1524,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getLogicalRun(const UBiDi *pBiDi, int32_t logicalPosition,
                     int32_t *pLogicalLimit, UBiDiLevel *pLevel);
 
@@ -1543,7 +1543,7 @@
  * @return The number of runs.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_countRuns(UBiDi *pBiDi, UErrorCode *pErrorCode);
 
 /**
@@ -1602,7 +1602,7 @@
  * to avoid these issues.
  * @stable ICU 2.0
  */
-U_STABLE UBiDiDirection U_EXPORT2
+U_CAPI UBiDiDirection U_EXPORT2
 ubidi_getVisualRun(UBiDi *pBiDi, int32_t runIndex,
                    int32_t *pLogicalStart, int32_t *pLength);
 
@@ -1643,7 +1643,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getVisualIndex(UBiDi *pBiDi, int32_t logicalIndex, UErrorCode *pErrorCode);
 
 /**
@@ -1678,7 +1678,7 @@
  * @see ubidi_getResultLength
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getLogicalIndex(UBiDi *pBiDi, int32_t visualIndex, UErrorCode *pErrorCode);
 
 /**
@@ -1721,7 +1721,7 @@
  * @see ubidi_getResultLength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getLogicalMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode);
 
 /**
@@ -1757,7 +1757,7 @@
  * @see ubidi_getResultLength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getVisualMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode);
 
 /**
@@ -1780,7 +1780,7 @@
  *        The index map will result in <code>indexMap[logicalIndex]==visualIndex</code>.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_reorderLogical(const UBiDiLevel *levels, int32_t length, int32_t *indexMap);
 
 /**
@@ -1803,7 +1803,7 @@
  *        The index map will result in <code>indexMap[visualIndex]==logicalIndex</code>.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_reorderVisual(const UBiDiLevel *levels, int32_t length, int32_t *indexMap);
 
 /**
@@ -1838,7 +1838,7 @@
  * @see UBIDI_MAP_NOWHERE
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_invertMap(const int32_t *srcMap, int32_t *destMap, int32_t length);
 
 /** option flags for ubidi_writeReordered() */
@@ -1943,7 +1943,7 @@
  * @see UBIDI_OPTION_STREAMING
  * @stable ICU 3.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getProcessedLength(const UBiDi *pBiDi);
 
 /**
@@ -1973,7 +1973,7 @@
  * @see UBIDI_OPTION_REMOVE_CONTROLS
  * @stable ICU 3.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getResultLength(const UBiDi *pBiDi);
 
 U_CDECL_BEGIN
@@ -2031,7 +2031,7 @@
  * @see UBiDiClassCallback
  * @stable ICU 3.6
  */
-U_STABLE UCharDirection U_EXPORT2
+U_CAPI UCharDirection U_EXPORT2
 ubidi_getCustomizedClass(UBiDi *pBiDi, UChar32 c);
 
 /**
@@ -2061,7 +2061,7 @@
  * @see ubidi_getClassCallback
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setClassCallback(UBiDi *pBiDi, UBiDiClassCallback *newFn,
                        const void *newContext, UBiDiClassCallback **oldFn,
                        const void **oldContext, UErrorCode *pErrorCode);
@@ -2078,7 +2078,7 @@
  * @see ubidi_setClassCallback
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getClassCallback(UBiDi *pBiDi, UBiDiClassCallback **fn, const void **context);
 
 /**
@@ -2146,7 +2146,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_writeReordered(UBiDi *pBiDi,
                      UChar *dest, int32_t destSize,
                      uint16_t options,
@@ -2198,7 +2198,7 @@
  * @return The length of the output string.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_writeReverse(const UChar *src, int32_t srcLength,
                    UChar *dest, int32_t destSize,
                    uint16_t options,
diff --git a/libandroidicu/include/unicode/ubiditransform.h b/libandroidicu/include/unicode/ubiditransform.h
index 79e22c0..2dd7564 100644
--- a/libandroidicu/include/unicode/ubiditransform.h
+++ b/libandroidicu/include/unicode/ubiditransform.h
@@ -150,10 +150,10 @@
  * calling <code>ubidi_setPara</code> with
  * <code>paraLevel == UBIDI_DEFAULT_RTL</code>,</li>
  * <li><Visual LTR, Logical LTR>: this is equivalent to
- * calling <code>ubidi_setInverse(UBiDi*, TRUE)</code> and then
+ * calling <code>ubidi_setInverse(UBiDi*, true)</code> and then
  * <code>ubidi_setPara</code> with <code>paraLevel == UBIDI_LTR</code>,</li>
  * <li><Visual LTR, Logical RTL>: this is equivalent to
- * calling <code>ubidi_setInverse(UBiDi*, TRUE)</code> and then
+ * calling <code>ubidi_setInverse(UBiDi*, true)</code> and then
  * <code>ubidi_setPara</code> with <code>paraLevel == UBIDI_RTL</code>.</li>
  * </ul>
  * All combinations that involve the Visual RTL scheme are unsupported by
@@ -248,7 +248,7 @@
  * @see u_shapeArabic
  * @stable ICU 58
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 ubiditransform_transform(UBiDiTransform *pBiDiTransform,
             const UChar *src, int32_t srcLength,
             UChar *dest, int32_t destSize,
@@ -294,14 +294,14 @@
  * @return An empty <code>UBiDiTransform</code> object.
  * @stable ICU 58
  */
-U_STABLE UBiDiTransform* U_EXPORT2
+U_CAPI UBiDiTransform* U_EXPORT2
 ubiditransform_open(UErrorCode *pErrorCode);
 
 /**
  * Deallocates the given <code>UBiDiTransform</code> object.
  * @stable ICU 58
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubiditransform_close(UBiDiTransform *pBidiTransform);
 
 #if U_SHOW_CPLUSPLUS_API
diff --git a/libandroidicu/include/unicode/ubrk.h b/libandroidicu/include/unicode/ubrk.h
index da204eb..37189a8 100644
--- a/libandroidicu/include/unicode/ubrk.h
+++ b/libandroidicu/include/unicode/ubrk.h
@@ -241,7 +241,7 @@
  * @see ubrk_openRules
  * @stable ICU 2.0
  */
-U_STABLE UBreakIterator* U_EXPORT2
+U_CAPI UBreakIterator* U_EXPORT2
 ubrk_open(UBreakIteratorType type,
       const char *locale,
       const UChar *text,
@@ -263,7 +263,7 @@
  * @see ubrk_open
  * @stable ICU 2.2
  */
-U_STABLE UBreakIterator* U_EXPORT2
+U_CAPI UBreakIterator* U_EXPORT2
 ubrk_openRules(const UChar     *rules,
                int32_t         rulesLength,
                const UChar     *text,
@@ -291,7 +291,7 @@
  * @see ubrk_getBinaryRules
  * @stable ICU 59
  */
-U_STABLE UBreakIterator* U_EXPORT2
+U_CAPI UBreakIterator* U_EXPORT2
 ubrk_openBinaryRules(const uint8_t *binaryRules, int32_t rulesLength,
                      const UChar *  text, int32_t textLength,
                      UErrorCode *   status);
@@ -314,7 +314,7 @@
  * @return pointer to the new clone
  * @stable ICU 2.0
  */
-U_STABLE UBreakIterator * U_EXPORT2
+U_CAPI UBreakIterator * U_EXPORT2
 ubrk_safeClone(
           const UBreakIterator *bi,
           void *stackBuffer,
@@ -337,7 +337,7 @@
 * @param bi The break iterator to close.
  * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubrk_close(UBreakIterator *bi);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -371,7 +371,7 @@
  * @param status The error code
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubrk_setText(UBreakIterator* bi,
              const UChar*    text,
              int32_t         textLength,
@@ -395,7 +395,7 @@
  * @param status The error code
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubrk_setUText(UBreakIterator* bi,
              UText*          text,
              UErrorCode*     status);
@@ -410,7 +410,7 @@
  * \ref ubrk_first, or \ref ubrk_last.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_current(const UBreakIterator *bi);
 
 /**
@@ -422,7 +422,7 @@
  * @see ubrk_previous
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_next(UBreakIterator *bi);
 
 /**
@@ -434,7 +434,7 @@
  * @see ubrk_next
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_previous(UBreakIterator *bi);
 
 /**
@@ -444,7 +444,7 @@
  * @see ubrk_last
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_first(UBreakIterator *bi);
 
 /**
@@ -456,7 +456,7 @@
  * @see ubrk_first
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_last(UBreakIterator *bi);
 
 /**
@@ -468,7 +468,7 @@
  * @see ubrk_following
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_preceding(UBreakIterator *bi,
            int32_t offset);
 
@@ -481,7 +481,7 @@
  * @see ubrk_preceding
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_following(UBreakIterator *bi,
            int32_t offset);
 
@@ -494,7 +494,7 @@
 * @see ubrk_countAvailable
 * @stable ICU 2.0
 */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 ubrk_getAvailable(int32_t index);
 
 /**
@@ -505,7 +505,7 @@
 * @see ubrk_getAvailable
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_countAvailable(void);
 
 
@@ -518,7 +518,7 @@
 * @return True if "offset" is a boundary position.
 * @stable ICU 2.0
 */
-U_STABLE  UBool U_EXPORT2
+U_CAPI  UBool U_EXPORT2
 ubrk_isBoundary(UBreakIterator *bi, int32_t offset);
 
 /**
@@ -530,7 +530,7 @@
  * For word break iterators, the possible values are defined in enum UWordBreak.
  * @stable ICU 2.2
  */
-U_STABLE  int32_t U_EXPORT2
+U_CAPI  int32_t U_EXPORT2
 ubrk_getRuleStatus(UBreakIterator *bi);
 
 /**
@@ -550,7 +550,7 @@
  *                  the most recent boundary returned by the break iterator.
  * @stable ICU 3.0
  */
-U_STABLE  int32_t U_EXPORT2
+U_CAPI  int32_t U_EXPORT2
 ubrk_getRuleStatusVec(UBreakIterator *bi, int32_t *fillInVec, int32_t capacity, UErrorCode *status);
 
 /**
@@ -562,7 +562,7 @@
  * @return locale string
  * @stable ICU 2.8
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 ubrk_getLocaleByType(const UBreakIterator *bi, ULocDataLocaleType type, UErrorCode* status);
 
 /**
@@ -590,7 +590,7 @@
   *
   * @stable ICU 49
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubrk_refreshUText(UBreakIterator *bi,
                        UText          *text,
                        UErrorCode     *status);
@@ -621,7 +621,7 @@
  * @see ubrk_openBinaryRules
  * @stable ICU 59
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_getBinaryRules(UBreakIterator *bi,
                     uint8_t *       binaryRules, int32_t rulesCapacity,
                     UErrorCode *    status);
diff --git a/libandroidicu/include/unicode/ucal.h b/libandroidicu/include/unicode/ucal.h
index 4e6f026..89b1604 100644
--- a/libandroidicu/include/unicode/ucal.h
+++ b/libandroidicu/include/unicode/ucal.h
@@ -35,7 +35,7 @@
  *
  * <p>
  * Types of <code>UCalendar</code> interpret a <code>UDate</code>
- * according to the rules of a specific calendar system. The U_STABLE
+ * according to the rules of a specific calendar system. The C API
  * provides the enum UCalendarType with UCAL_TRADITIONAL and
  * UCAL_GREGORIAN.
  * <p>
@@ -587,7 +587,7 @@
  *          *ec will indicate the error.
  * @stable ICU 4.8
  */ 
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucal_openTimeZoneIDEnumeration(USystemTimeZoneType zoneType, const char* region,
                                 const int32_t* rawOffset, UErrorCode* ec);
 
@@ -602,7 +602,7 @@
  *
  * @stable ICU 2.6
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucal_openTimeZones(UErrorCode* ec);
 
 /**
@@ -621,7 +621,7 @@
  *
  * @stable ICU 2.6
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucal_openCountryTimeZones(const char* country, UErrorCode* ec);
 
 /**
@@ -647,7 +647,7 @@
  * 
  * @stable ICU 2.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getDefaultTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec);
 
 /**
@@ -659,11 +659,9 @@
  *
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucal_setDefaultTimeZone(const UChar* zoneID, UErrorCode* ec);
 
-#ifndef U_HIDE_DRAFT_API
-
 /**
  * Return the current host time zone. The host time zone is detected from
  * the current host system configuration by querying the host operating
@@ -691,13 +689,11 @@
  * 
  * @see #UCAL_UNKNOWN_ZONE_ID
  * 
- * @draft ICU 65
+ * @stable ICU 65
  */
-U_DRAFT int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getHostTimeZone(UChar *result, int32_t resultCapacity, UErrorCode *ec);
 
-#endif // U_HIDE_DRAFT_API
-
 /**
  * Return the amount of time in milliseconds that the clock is
  * advanced during daylight savings time for the given time zone, or
@@ -714,7 +710,7 @@
  *
  * @stable ICU 2.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getDSTSavings(const UChar* zoneID, UErrorCode* ec);
 
 /**
@@ -723,7 +719,7 @@
  * @return The current date and time.
  * @stable ICU 2.0
  */
-U_STABLE UDate U_EXPORT2 
+U_CAPI UDate U_EXPORT2 
 ucal_getNow(void);
 
 /**
@@ -749,7 +745,7 @@
  * @see #UCAL_UNKNOWN_ZONE_ID
  * @stable ICU 2.0
  */
-U_STABLE UCalendar* U_EXPORT2 
+U_CAPI UCalendar* U_EXPORT2 
 ucal_open(const UChar*   zoneID,
           int32_t        len,
           const char*    locale,
@@ -762,7 +758,7 @@
  * @param cal The UCalendar to close.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_close(UCalendar *cal);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -792,7 +788,7 @@
  * @return A pointer to a UCalendar identical to cal.
  * @stable ICU 4.0
  */
-U_STABLE UCalendar* U_EXPORT2 
+U_CAPI UCalendar* U_EXPORT2 
 ucal_clone(const UCalendar* cal,
            UErrorCode*      status);
 
@@ -805,7 +801,7 @@
  * @param status A pointer to an UErrorCode to receive any errors.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_setTimeZone(UCalendar*    cal,
                  const UChar*  zoneID,
                  int32_t       len,
@@ -821,7 +817,7 @@
  * @return              The total buffer size needed; if greater than resultLength, the output was truncated. 
  * @stable ICU 51 
  */ 
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_getTimeZoneID(const UCalendar *cal,
                    UChar *result,
                    int32_t resultLength,
@@ -858,7 +854,7 @@
  * @return             The total buffer size needed; if greater than resultLength, the output was truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_getTimeZoneDisplayName(const UCalendar*          cal,
                             UCalendarDisplayNameType  type,
                             const char*               locale,
@@ -871,10 +867,10 @@
  * Daylight savings time is not used in all parts of the world.
  * @param cal The UCalendar to query.
  * @param status A pointer to an UErrorCode to receive any errors
- * @return TRUE if cal is currently in daylight savings time, FALSE otherwise
+ * @return true if cal is currently in daylight savings time, false otherwise
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucal_inDaylightTime(const UCalendar*  cal,
                     UErrorCode*       status );
 
@@ -898,7 +894,7 @@
  * @see ucal_getGregorianChange
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucal_setGregorianChange(UCalendar *cal, UDate date, UErrorCode *pErrorCode);
 
 /**
@@ -921,7 +917,7 @@
  * @see ucal_setGregorianChange
  * @stable ICU 3.6
  */
-U_STABLE UDate U_EXPORT2
+U_CAPI UDate U_EXPORT2
 ucal_getGregorianChange(const UCalendar *cal, UErrorCode *pErrorCode);
 
 /**
@@ -1002,7 +998,7 @@
  * @see ucal_setAttribute
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_getAttribute(const UCalendar*    cal,
                   UCalendarAttribute  attr);
 
@@ -1017,7 +1013,7 @@
  * @see ucal_getAttribute
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_setAttribute(UCalendar*          cal,
                   UCalendarAttribute  attr,
                   int32_t             newValue);
@@ -1031,7 +1027,7 @@
  * @see ucal_countAvailable
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2 
+U_CAPI const char* U_EXPORT2 
 ucal_getAvailable(int32_t localeIndex);
 
 /**
@@ -1042,7 +1038,7 @@
  * @see ucal_getAvailable
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_countAvailable(void);
 
 /**
@@ -1056,7 +1052,7 @@
  * @see ucal_setDateTime
  * @stable ICU 2.0
  */
-U_STABLE UDate U_EXPORT2 
+U_CAPI UDate U_EXPORT2 
 ucal_getMillis(const UCalendar*  cal,
                UErrorCode*       status);
 
@@ -1071,7 +1067,7 @@
  * @see ucal_setDateTime
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_setMillis(UCalendar*   cal,
                UDate        dateTime,
                UErrorCode*  status );
@@ -1090,7 +1086,7 @@
  * @see ucal_setDateTime
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_setDate(UCalendar*   cal,
              int32_t      year,
              int32_t      month,
@@ -1114,7 +1110,7 @@
  * @see ucal_setDate
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_setDateTime(UCalendar*   cal,
                  int32_t      year,
                  int32_t      month,
@@ -1125,15 +1121,15 @@
                  UErrorCode*  status);
 
 /**
- * Returns TRUE if two UCalendars are equivalent.  Equivalent
+ * Returns true if two UCalendars are equivalent.  Equivalent
  * UCalendars will behave identically, but they may be set to
  * different times.
  * @param cal1 The first of the UCalendars to compare.
  * @param cal2 The second of the UCalendars to compare.
- * @return TRUE if cal1 and cal2 are equivalent, FALSE otherwise.
+ * @return true if cal1 and cal2 are equivalent, false otherwise.
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucal_equivalentTo(const UCalendar*  cal1,
                   const UCalendar*  cal2);
 
@@ -1155,7 +1151,7 @@
  * @see ucal_roll
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_add(UCalendar*           cal,
          UCalendarDateFields  field,
          int32_t              amount,
@@ -1185,7 +1181,7 @@
  * @see ucal_add
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_roll(UCalendar*           cal,
           UCalendarDateFields  field,
           int32_t              amount,
@@ -1207,7 +1203,7 @@
  * @see ucal_clear
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_get(const UCalendar*     cal,
          UCalendarDateFields  field,
          UErrorCode*          status );
@@ -1227,7 +1223,7 @@
  * @see ucal_clear
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_set(UCalendar*           cal,
          UCalendarDateFields  field,
          int32_t              value);
@@ -1240,14 +1236,14 @@
  * UCAL_WEEK_OF_YEAR, UCAL_WEEK_OF_MONTH, UCAL_DATE, UCAL_DAY_OF_YEAR, UCAL_DAY_OF_WEEK,
  * UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_AM_PM, UCAL_HOUR, UCAL_HOUR_OF_DAY, UCAL_MINUTE, UCAL_SECOND,
  * UCAL_MILLISECOND, UCAL_ZONE_OFFSET, UCAL_DST_OFFSET.
- * @return TRUE if field is set, FALSE otherwise.
+ * @return true if field is set, false otherwise.
  * @see ucal_get
  * @see ucal_set
  * @see ucal_clearField
  * @see ucal_clear
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucal_isSet(const UCalendar*     cal,
            UCalendarDateFields  field);
 
@@ -1265,7 +1261,7 @@
  * @see ucal_clear
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_clearField(UCalendar*           cal,
                 UCalendarDateFields  field);
 
@@ -1279,7 +1275,7 @@
  * @see ucal_clearField
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_clear(UCalendar* calendar);
 
 /**
@@ -1318,7 +1314,7 @@
  * @return The requested value.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_getLimit(const UCalendar*     cal,
               UCalendarDateFields  field,
               UCalendarLimitType   type,
@@ -1331,7 +1327,7 @@
  *  @return the locale name
  *  @stable ICU 2.8
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucal_getLocaleByType(const UCalendar *cal, ULocDataLocaleType type, UErrorCode* status);
 
 /**
@@ -1340,7 +1336,7 @@
  * @return the version string, such as "2007f"
  * @stable ICU 3.8
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucal_getTZDataVersion(UErrorCode* status);
 
 /**
@@ -1361,7 +1357,7 @@
  *                  null.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getCanonicalTimeZoneID(const UChar* id, int32_t len,
                             UChar* result, int32_t resultCapacity, UBool *isSystemID, UErrorCode* status);
 /**
@@ -1371,7 +1367,7 @@
  * @return The resource keyword value string.
  * @stable ICU 4.2
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucal_getType(const UCalendar *cal, UErrorCode* status);
 
 /**
@@ -1390,7 +1386,7 @@
  * @return a string enumeration over keyword values for the given key and the locale.
  * @stable ICU 4.2
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucal_getKeywordValuesForLocale(const char* key,
                                const char* locale,
                                UBool commonlyUsed,
@@ -1445,7 +1441,7 @@
  * @return The UCalendarWeekdayType for the day of the week.
  * @stable ICU 4.4
  */
-U_STABLE UCalendarWeekdayType U_EXPORT2
+U_CAPI UCalendarWeekdayType U_EXPORT2
 ucal_getDayOfWeekType(const UCalendar *cal, UCalendarDaysOfWeek dayOfWeek, UErrorCode* status);
 
 /**
@@ -1463,20 +1459,20 @@
  * @return The milliseconds after midnight at which the weekend begins or ends.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getWeekendTransition(const UCalendar *cal, UCalendarDaysOfWeek dayOfWeek, UErrorCode *status);
 
 /**
- * Returns TRUE if the given UDate is in the weekend in
+ * Returns true if the given UDate is in the weekend in
  * this calendar system.
  * @param cal The UCalendar to query.
  * @param date The UDate in question.
  * @param status The error code for the operation.
- * @return TRUE if the given UDate is in the weekend in
- * this calendar system, FALSE otherwise.
+ * @return true if the given UDate is in the weekend in
+ * this calendar system, false otherwise.
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucal_isWeekend(const UCalendar *cal, UDate date, UErrorCode *status);
 
 /**
@@ -1503,7 +1499,7 @@
  * @return The date difference for the specified field.
  * @stable ICU 4.8
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_getFieldDifference(UCalendar* cal,
                         UDate target,
                         UCalendarDateFields field,
@@ -1547,17 +1543,17 @@
 * the calendar's current date, in the time zone to which the calendar
 * is currently set. If there is no known time zone transition of the
 * requested type relative to the calendar's date, the function returns
-* FALSE.
+* false.
 * @param cal The UCalendar to query.
 * @param type The type of transition desired.
 * @param transition A pointer to a UDate to be set to the transition time.
-*         If the function returns FALSE, the value set is unspecified.
+*         If the function returns false, the value set is unspecified.
 * @param status A pointer to a UErrorCode to receive any errors.
-* @return TRUE if a valid transition time is set in *transition, FALSE
+* @return true if a valid transition time is set in *transition, false
 *         otherwise.
 * @stable ICU 50
 */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucal_getTimeZoneTransitionDate(const UCalendar* cal, UTimeZoneTransitionType type,
                                UDate* transition, UErrorCode* status);
 
@@ -1572,7 +1568,7 @@
 *
 * <p>This implementation utilizes <a href="http://unicode.org/cldr/charts/supplemental/zone_tzid.html">
 * Zone-Tzid mapping data</a>. The mapping data is updated time to time. To get the latest changes,
-* please read the ICU user guide section <a href="http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data">
+* please read the ICU user guide section <a href="https://unicode-org.github.io/icu/userguide/datetime/timezone#updating-the-time-zone-data">
 * Updating the Time Zone Data</a>.
 *
 * @param id            A system time zone ID.
@@ -1585,7 +1581,7 @@
 *
 * @stable ICU 52
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getWindowsTimeZoneID(const UChar* id, int32_t len,
                             UChar* winid, int32_t winidCapacity, UErrorCode* status);
 
@@ -1603,7 +1599,7 @@
 *
 * <p>This implementation utilizes <a href="http://unicode.org/cldr/charts/supplemental/zone_tzid.html">
 * Zone-Tzid mapping data</a>. The mapping data is updated time to time. To get the latest changes,
-* please read the ICU user guide section <a href="http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data">
+* please read the ICU user guide section <a href="https://unicode-org.github.io/icu/userguide/datetime/timezone#updating-the-time-zone-data">
 * Updating the Time Zone Data</a>.
 *
 * @param winid         A Windows time zone ID.
@@ -1617,7 +1613,7 @@
 *
 * @stable ICU 52
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getTimeZoneIDForWindowsID(const UChar* winid, int32_t len, const char* region,
                                 UChar* id, int32_t idCapacity, UErrorCode* status);
 
diff --git a/libandroidicu/include/unicode/ucasemap.h b/libandroidicu/include/unicode/ucasemap.h
index 06c09a6..d1c1b48 100644
--- a/libandroidicu/include/unicode/ucasemap.h
+++ b/libandroidicu/include/unicode/ucasemap.h
@@ -72,7 +72,7 @@
  * @see U_TITLECASE_NO_BREAK_ADJUSTMENT
  * @stable ICU 3.4
  */
-U_STABLE UCaseMap * U_EXPORT2
+U_CAPI UCaseMap * U_EXPORT2
 ucasemap_open(const char *locale, uint32_t options, UErrorCode *pErrorCode);
 
 /**
@@ -80,7 +80,7 @@
  * @param csm Object to be closed.
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucasemap_close(UCaseMap *csm);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -108,7 +108,7 @@
  * @return locale ID
  * @stable ICU 3.4
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucasemap_getLocale(const UCaseMap *csm);
 
 /**
@@ -117,7 +117,7 @@
  * @return options bit set
  * @stable ICU 3.4
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 ucasemap_getOptions(const UCaseMap *csm);
 
 /**
@@ -131,7 +131,7 @@
  * @see ucasemap_open
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucasemap_setLocale(UCaseMap *csm, const char *locale, UErrorCode *pErrorCode);
 
 /**
@@ -145,7 +145,7 @@
  * @see ucasemap_open
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucasemap_setOptions(UCaseMap *csm, uint32_t options, UErrorCode *pErrorCode);
 
 #if !UCONFIG_NO_BREAK_ITERATION
@@ -157,7 +157,7 @@
  * @return titlecasing break iterator
  * @stable ICU 3.8
  */
-U_STABLE const UBreakIterator * U_EXPORT2
+U_CAPI const UBreakIterator * U_EXPORT2
 ucasemap_getBreakIterator(const UCaseMap *csm);
 
 /**
@@ -180,7 +180,7 @@
  * @see ucasemap_utf8ToTitle
  * @stable ICU 3.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucasemap_setBreakIterator(UCaseMap *csm, UBreakIterator *iterToAdopt, UErrorCode *pErrorCode);
 
 /**
@@ -229,7 +229,7 @@
  * @see u_strToTitle
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucasemap_toTitle(UCaseMap *csm,
                  UChar *dest, int32_t destCapacity,
                  const UChar *src, int32_t srcLength,
@@ -260,7 +260,7 @@
  * @see u_strToLower
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucasemap_utf8ToLower(const UCaseMap *csm,
                      char *dest, int32_t destCapacity,
                      const char *src, int32_t srcLength,
@@ -289,7 +289,7 @@
  * @see u_strToUpper
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucasemap_utf8ToUpper(const UCaseMap *csm,
                      char *dest, int32_t destCapacity,
                      const char *src, int32_t srcLength,
@@ -341,7 +341,7 @@
  * @see U_TITLECASE_NO_BREAK_ADJUSTMENT
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucasemap_utf8ToTitle(UCaseMap *csm,
                     char *dest, int32_t destCapacity,
                     const char *src, int32_t srcLength,
@@ -379,7 +379,7 @@
  * @see U_FOLD_CASE_EXCLUDE_SPECIAL_I
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucasemap_utf8FoldCase(const UCaseMap *csm,
                       char *dest, int32_t destCapacity,
                       const char *src, int32_t srcLength,
diff --git a/libandroidicu/include/unicode/ucat.h b/libandroidicu/include/unicode/ucat.h
index 4d1ff3f..9385034 100644
--- a/libandroidicu/include/unicode/ucat.h
+++ b/libandroidicu/include/unicode/ucat.h
@@ -103,7 +103,7 @@
  * 
  * @stable ICU 2.6
  */
-U_STABLE u_nl_catd U_EXPORT2
+U_CAPI u_nl_catd U_EXPORT2
 u_catopen(const char* name, const char* locale, UErrorCode* ec);
 
 /**
@@ -114,7 +114,7 @@
  * 
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_catclose(u_nl_catd catd);
 
 /**
@@ -149,7 +149,7 @@
  * 
  * @stable ICU 2.6
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 u_catgets(u_nl_catd catd, int32_t set_num, int32_t msg_num,
           const UChar* s,
           int32_t* len, UErrorCode* ec);
diff --git a/libandroidicu/include/unicode/uchar.h b/libandroidicu/include/unicode/uchar.h
index 3b55b23..1e0f82e 100644
--- a/libandroidicu/include/unicode/uchar.h
+++ b/libandroidicu/include/unicode/uchar.h
@@ -80,7 +80,7 @@
  * and the ICU User Guide chapter on Properties (http://icu-project.org/userguide/properties.html).
  *
  * Many properties are accessible via generic functions that take a UProperty selector.
- * - u_hasBinaryProperty() returns a binary value (TRUE/FALSE) per property and code point.
+ * - u_hasBinaryProperty() returns a binary value (true/false) per property and code point.
  * - u_getIntPropertyValue() returns an integer value per property and code point.
  *   For each supported enumerated or catalog property, there is
  *   an enum type for all of the property's values, and
@@ -2586,8 +2586,8 @@
  * @param c Code point to test.
  * @param which UProperty selector constant, identifies which binary property to check.
  *        Must be UCHAR_BINARY_START<=which<UCHAR_BINARY_LIMIT.
- * @return TRUE or FALSE according to the binary Unicode property value for c.
- *         Also FALSE if 'which' is out of bounds or if the Unicode version
+ * @return true or false according to the binary Unicode property value for c.
+ *         Also false if 'which' is out of bounds or if the Unicode version
  *         does not have data for the property at all, or not for this code point.
  *
  * @see UProperty
@@ -2596,7 +2596,7 @@
  * @see u_getUnicodeVersion
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_hasBinaryProperty(UChar32 c, UProperty which);
 
 /**
@@ -2629,7 +2629,7 @@
  * @see u_hasBinaryProperty
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isUAlphabetic(UChar32 c);
 
 /**
@@ -2644,7 +2644,7 @@
  * @see u_hasBinaryProperty
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isULowercase(UChar32 c);
 
 /**
@@ -2659,7 +2659,7 @@
  * @see u_hasBinaryProperty
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isUUppercase(UChar32 c);
 
 /**
@@ -2680,7 +2680,7 @@
  * @see u_hasBinaryProperty
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isUWhiteSpace(UChar32 c);
 
 /**
@@ -2708,7 +2708,7 @@
  *         for enumerated properties, corresponds to the numeric value of the enumerated
  *         constant of the respective property value enumeration type
  *         (cast to enum type if necessary).
- *         Returns 0 or 1 (for FALSE/TRUE) for binary Unicode properties.
+ *         Returns 0 or 1 (for false/true) for binary Unicode properties.
  *         Returns a bit-mask for mask properties.
  *         Returns 0 if 'which' is out of bounds or if the Unicode version
  *         does not have data for the property at all, or not for this code point.
@@ -2721,7 +2721,7 @@
  * @see u_getUnicodeVersion
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getIntPropertyValue(UChar32 c, UProperty which);
 
 /**
@@ -2742,7 +2742,7 @@
  * @see u_getIntPropertyValue
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getIntPropertyMinValue(UProperty which);
 
 /**
@@ -2754,7 +2754,7 @@
  *
  * - UCHAR_BIDI_CLASS:    0/18 (U_LEFT_TO_RIGHT/U_BOUNDARY_NEUTRAL)
  * - UCHAR_SCRIPT:        0/45 (USCRIPT_COMMON/USCRIPT_TAGBANWA)
- * - UCHAR_IDEOGRAPHIC:   0/1  (FALSE/TRUE)
+ * - UCHAR_IDEOGRAPHIC:   0/1  (false/true)
  *
  * For undefined UProperty constant values, min/max values will be 0/-1.
  *
@@ -2771,7 +2771,7 @@
  * @see u_getIntPropertyValue
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getIntPropertyMaxValue(UProperty which);
 
 /**
@@ -2814,7 +2814,7 @@
  * @see U_NO_NUMERIC_VALUE
  * @stable ICU 2.2
  */
-U_STABLE double U_EXPORT2
+U_CAPI double U_EXPORT2
 u_getNumericValue(UChar32 c);
 
 /**
@@ -2842,14 +2842,14 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an Ll lowercase letter
+ * @return true if the code point is an Ll lowercase letter
  *
  * @see UCHAR_LOWERCASE
  * @see u_isupper
  * @see u_istitle
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_islower(UChar32 c);
 
 /**
@@ -2868,7 +2868,7 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an Lu uppercase letter
+ * @return true if the code point is an Lu uppercase letter
  *
  * @see UCHAR_UPPERCASE
  * @see u_islower
@@ -2876,7 +2876,7 @@
  * @see u_tolower
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isupper(UChar32 c);
 
 /**
@@ -2886,14 +2886,14 @@
  * Same as java.lang.Character.isTitleCase().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an Lt titlecase letter
+ * @return true if the code point is an Lt titlecase letter
  *
  * @see u_isupper
  * @see u_islower
  * @see u_totitle
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_istitle(UChar32 c);
 
 /**
@@ -2910,11 +2910,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a digit character according to Character.isDigit()
+ * @return true if the code point is a digit character according to Character.isDigit()
  *
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isdigit(UChar32 c);
 
 /**
@@ -2929,13 +2929,13 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a letter character
+ * @return true if the code point is a letter character
  *
  * @see u_isdigit
  * @see u_isalnum
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isalpha(UChar32 c);
 
 /**
@@ -2952,11 +2952,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an alphanumeric character according to Character.isLetterOrDigit()
+ * @return true if the code point is an alphanumeric character according to Character.isLetterOrDigit()
  *
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isalnum(UChar32 c);
 
 /**
@@ -2975,11 +2975,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a hexadecimal digit
+ * @return true if the code point is a hexadecimal digit
  *
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isxdigit(UChar32 c);
 
 /**
@@ -2991,17 +2991,17 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a punctuation character
+ * @return true if the code point is a punctuation character
  *
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_ispunct(UChar32 c);
 
 /**
  * Determines whether the specified code point is a "graphic" character
  * (printable, excluding spaces).
- * TRUE for all characters except those with general categories
+ * true for all characters except those with general categories
  * "Cc" (control codes), "Cf" (format controls), "Cs" (surrogates),
  * "Cn" (unassigned), and "Z" (separators).
  *
@@ -3010,11 +3010,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a "graphic" character
+ * @return true if the code point is a "graphic" character
  *
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isgraph(UChar32 c);
 
 /**
@@ -3022,13 +3022,13 @@
  * a character that visibly separates words on a line.
  * The following are equivalent definitions:
  *
- * TRUE for Unicode White_Space characters except for "vertical space controls"
+ * true for Unicode White_Space characters except for "vertical space controls"
  * where "vertical space controls" are the following characters:
  * U+000A (LF) U+000B (VT) U+000C (FF) U+000D (CR) U+0085 (NEL) U+2028 (LS) U+2029 (PS)
  *
  * same as
  *
- * TRUE for U+0009 (TAB) and characters with general category "Zs" (space separators).
+ * true for U+0009 (TAB) and characters with general category "Zs" (space separators).
  *
  * Note: There are several ICU whitespace functions; please see the uchar.h
  * file documentation for a detailed comparison.
@@ -3038,11 +3038,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a "blank"
+ * @return true if the code point is a "blank"
  *
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isblank(UChar32 c);
 
 /**
@@ -3057,7 +3057,7 @@
  * Same as java.lang.Character.isDefined().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is assigned a character
+ * @return true if the code point is assigned a character
  *
  * @see u_isdigit
  * @see u_isalpha
@@ -3067,7 +3067,7 @@
  * @see u_istitle
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isdefined(UChar32 c);
 
 /**
@@ -3088,7 +3088,7 @@
  * @see u_isUWhiteSpace
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isspace(UChar32 c);
 
 /**
@@ -3102,14 +3102,14 @@
  * file documentation for a detailed comparison.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a space character according to Character.isSpaceChar()
+ * @return true if the code point is a space character according to Character.isSpaceChar()
  *
  * @see u_isspace
  * @see u_isWhitespace
  * @see u_isUWhiteSpace
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isJavaSpaceChar(UChar32 c);
 
 /**
@@ -3142,14 +3142,14 @@
  * file documentation for a detailed comparison.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a whitespace character according to Java/ICU
+ * @return true if the code point is a whitespace character according to Java/ICU
  *
  * @see u_isspace
  * @see u_isJavaSpaceChar
  * @see u_isUWhiteSpace
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isWhitespace(UChar32 c);
 
 /**
@@ -3167,13 +3167,13 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a control character
+ * @return true if the code point is a control character
  *
  * @see UCHAR_DEFAULT_IGNORABLE_CODE_POINT
  * @see u_isprint
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_iscntrl(UChar32 c);
 
 /**
@@ -3183,12 +3183,12 @@
  * Same as java.lang.Character.isISOControl().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an ISO control code
+ * @return true if the code point is an ISO control code
  *
  * @see u_iscntrl
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isISOControl(UChar32 c);
 
 /**
@@ -3200,13 +3200,13 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a printable character
+ * @return true if the code point is a printable character
  *
  * @see UCHAR_DEFAULT_IGNORABLE_CODE_POINT
  * @see u_iscntrl
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isprint(UChar32 c);
 
 /**
@@ -3220,13 +3220,13 @@
  * Letter (L), Number (N), Punctuation (P), Symbol (S), or Space Separator (Zs).
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a base character according to this function
+ * @return true if the code point is a base character according to this function
  *
  * @see u_isalpha
  * @see u_isdigit
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isbase(UChar32 c);
 
 /**
@@ -3245,7 +3245,7 @@
  * @see UCharDirection
  * @stable ICU 2.0
  */
-U_STABLE UCharDirection U_EXPORT2
+U_CAPI UCharDirection U_EXPORT2
 u_charDirection(UChar32 c);
 
 /**
@@ -3258,12 +3258,12 @@
  * Same as UCHAR_BIDI_MIRRORED
  *
  * @param c the code point to be tested
- * @return TRUE if the character has the Bidi_Mirrored property
+ * @return true if the character has the Bidi_Mirrored property
  *
  * @see UCHAR_BIDI_MIRRORED
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isMirrored(UChar32 c);
 
 /**
@@ -3285,7 +3285,7 @@
  * @see u_isMirrored
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_charMirror(UChar32 c);
 
 /**
@@ -3304,7 +3304,7 @@
  * @see u_charMirror
  * @stable ICU 52
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_getBidiPairedBracket(UChar32 c);
 
 /**
@@ -3318,7 +3318,7 @@
  * @see UCharCategory
  * @stable ICU 2.0
  */
-U_STABLE int8_t U_EXPORT2
+U_CAPI int8_t U_EXPORT2
 u_charType(UChar32 c);
 
 /**
@@ -3341,13 +3341,13 @@
  * of code points c (where start<=c<limit)
  * with the same Unicode general category ("character type").
  *
- * The callback function can stop the enumeration by returning FALSE.
+ * The callback function can stop the enumeration by returning false.
  *
  * @param context an opaque pointer, as passed into utrie_enum()
  * @param start the first code point in a contiguous range with value
  * @param limit one past the last code point in a contiguous range with value
  * @param type the general category for all code points in [start..limit[
- * @return FALSE to stop the enumeration
+ * @return false to stop the enumeration
  *
  * @stable ICU 2.1
  * @see UCharCategory
@@ -3375,7 +3375,7 @@
  * @see UCharCategory
  * @see UCharEnumTypeRange
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_enumCharTypes(UCharEnumTypeRange *enumRange, const void *context);
 
 #if !UCONFIG_NO_NORMALIZATION
@@ -3387,7 +3387,7 @@
  * @return the combining class of the character
  * @stable ICU 2.0
  */
-U_STABLE uint8_t U_EXPORT2
+U_CAPI uint8_t U_EXPORT2
 u_getCombiningClass(UChar32 c);
 
 #endif
@@ -3415,7 +3415,7 @@
  * @see u_getNumericValue
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_charDigitValue(UChar32 c);
 
 /**
@@ -3427,7 +3427,7 @@
  * @see UBlockCode
  * @stable ICU 2.0
  */
-U_STABLE UBlockCode U_EXPORT2
+U_CAPI UBlockCode U_EXPORT2
 ublock_getCode(UChar32 c);
 
 /**
@@ -3462,7 +3462,7 @@
  * @see u_enumCharNames
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_charName(UChar32 code, UCharNameChoice nameChoice,
            char *buffer, int32_t bufferLength,
            UErrorCode *pErrorCode);
@@ -3512,7 +3512,7 @@
  * @see u_enumCharNames
  * @stable ICU 1.7
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_charFromName(UCharNameChoice nameChoice,
                const char *name,
                UErrorCode *pErrorCode);
@@ -3521,14 +3521,14 @@
  * Type of a callback function for u_enumCharNames() that gets called
  * for each Unicode character with the code point value and
  * the character name.
- * If such a function returns FALSE, then the enumeration is stopped.
+ * If such a function returns false, then the enumeration is stopped.
  *
  * @param context The context pointer that was passed to u_enumCharNames().
  * @param code The Unicode code point for the character with this name.
  * @param nameChoice Selector for which kind of names is enumerated.
  * @param name The character's name, zero-terminated.
  * @param length The length of the name.
- * @return TRUE if the enumeration should continue, FALSE to stop it.
+ * @return true if the enumeration should continue, false to stop it.
  *
  * @see UCharNameChoice
  * @see u_enumCharNames
@@ -3561,7 +3561,7 @@
  * @see u_charFromName
  * @stable ICU 1.7
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_enumCharNames(UChar32 start, UChar32 limit,
                 UEnumCharNamesFn *fn,
                 void *context,
@@ -3599,7 +3599,7 @@
  * @see UPropertyNameChoice
  * @stable ICU 2.4
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 u_getPropertyName(UProperty property,
                   UPropertyNameChoice nameChoice);
 
@@ -3622,7 +3622,7 @@
  * @see UProperty
  * @stable ICU 2.4
  */
-U_STABLE UProperty U_EXPORT2
+U_CAPI UProperty U_EXPORT2
 u_getPropertyEnum(const char* alias);
 
 /**
@@ -3672,7 +3672,7 @@
  * @see UPropertyNameChoice
  * @stable ICU 2.4
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 u_getPropertyValueName(UProperty property,
                        int32_t value,
                        UPropertyNameChoice nameChoice);
@@ -3708,7 +3708,7 @@
  * @see UProperty
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getPropertyValueEnum(UProperty property,
                        const char* alias);
 
@@ -3722,14 +3722,14 @@
  * Same as UCHAR_ID_START
  *
  * @param c the code point to be tested
- * @return TRUE if the code point may start an identifier
+ * @return true if the code point may start an identifier
  *
  * @see UCHAR_ID_START
  * @see u_isalpha
  * @see u_isIDPart
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isIDStart(UChar32 c);
 
 /**
@@ -3746,14 +3746,14 @@
  * u_isIDIgnorable(c).
  *
  * @param c the code point to be tested
- * @return TRUE if the code point may occur in an identifier according to Java
+ * @return true if the code point may occur in an identifier according to Java
  *
  * @see UCHAR_ID_CONTINUE
  * @see u_isIDStart
  * @see u_isIDIgnorable
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isIDPart(UChar32 c);
 
 /**
@@ -3769,14 +3769,14 @@
  * Note that Unicode just recommends to ignore Cf (format controls).
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is ignorable in identifiers according to Java
+ * @return true if the code point is ignorable in identifiers according to Java
  *
  * @see UCHAR_DEFAULT_IGNORABLE_CODE_POINT
  * @see u_isIDStart
  * @see u_isIDPart
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isIDIgnorable(UChar32 c);
 
 /**
@@ -3788,14 +3788,14 @@
  * Same as java.lang.Character.isJavaIdentifierStart().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point may start a Java identifier
+ * @return true if the code point may start a Java identifier
  *
  * @see     u_isJavaIDPart
  * @see     u_isalpha
  * @see     u_isIDStart
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isJavaIDStart(UChar32 c);
 
 /**
@@ -3807,7 +3807,7 @@
  * Same as java.lang.Character.isJavaIdentifierPart().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point may occur in a Java identifier
+ * @return true if the code point may occur in a Java identifier
  *
  * @see     u_isIDIgnorable
  * @see     u_isJavaIDStart
@@ -3816,7 +3816,7 @@
  * @see     u_isIDPart
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isJavaIDPart(UChar32 c);
 
 /**
@@ -3841,7 +3841,7 @@
  *         otherwise the code point itself.
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_tolower(UChar32 c);
 
 /**
@@ -3866,7 +3866,7 @@
  *         otherwise the code point itself.
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_toupper(UChar32 c);
 
 /**
@@ -3891,7 +3891,7 @@
  *         otherwise the code point itself.
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_totitle(UChar32 c);
 
 /**
@@ -3916,7 +3916,7 @@
  *         otherwise the code point itself.
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_foldCase(UChar32 c, uint32_t options);
 
 /**
@@ -3957,7 +3957,7 @@
  * @see     u_isdigit
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_digit(UChar32 ch, int8_t radix);
 
 /**
@@ -3988,7 +3988,7 @@
  * @see     u_isdigit
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_forDigit(int32_t digit, int8_t radix);
 
 /**
@@ -4005,7 +4005,7 @@
  *
  * @stable ICU 2.1
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_charAge(UChar32 c, UVersionInfo versionArray);
 
 /**
@@ -4019,7 +4019,7 @@
  *                     the Unicode version number
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_getUnicodeVersion(UVersionInfo versionArray);
 
 #if !UCONFIG_NO_NORMALIZATION
@@ -4044,7 +4044,7 @@
  *
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getFC_NFKC_Closure(UChar32 c, UChar *dest, int32_t destCapacity, UErrorCode *pErrorCode);
 
 #endif
diff --git a/libandroidicu/include/unicode/uclean.h b/libandroidicu/include/unicode/uclean.h
index 7cef6db..c2d920a 100644
--- a/libandroidicu/include/unicode/uclean.h
+++ b/libandroidicu/include/unicode/uclean.h
@@ -49,7 +49,7 @@
  *
  * @stable ICU 2.6
  */  
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_init(UErrorCode *status);
 
 #ifndef U_HIDE_SYSTEM_API
@@ -98,7 +98,7 @@
  * @stable ICU 2.0
  * @system
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_cleanup(void);
 
 U_CDECL_BEGIN
@@ -148,7 +148,7 @@
  *  @stable ICU 2.8
  *  @system
  */  
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_setMemoryFunctions(const void *context, UMemAllocFn * U_CALLCONV_FPTR a, UMemReallocFn * U_CALLCONV_FPTR r, UMemFreeFn * U_CALLCONV_FPTR f, 
                     UErrorCode *status);
 
diff --git a/libandroidicu/include/unicode/ucnv.h b/libandroidicu/include/unicode/ucnv.h
index e0cfe94..58f271c 100644
--- a/libandroidicu/include/unicode/ucnv.h
+++ b/libandroidicu/include/unicode/ucnv.h
@@ -311,7 +311,7 @@
  * lexically follows name2.
  * @stable ICU 2.0
  */
-U_STABLE int U_EXPORT2
+U_CAPI int U_EXPORT2
 ucnv_compareNames(const char *name1, const char *name2);
 
 
@@ -365,7 +365,7 @@
  * @see ucnv_compareNames
  * @stable ICU 2.0
  */
-U_STABLE UConverter* U_EXPORT2
+U_CAPI UConverter* U_EXPORT2
 ucnv_open(const char *converterName, UErrorCode *err);
 
 
@@ -395,7 +395,7 @@
  * @see ucnv_compareNames
  * @stable ICU 2.0
  */
-U_STABLE UConverter* U_EXPORT2
+U_CAPI UConverter* U_EXPORT2
 ucnv_openU(const UChar *name,
            UErrorCode *err);
 
@@ -463,7 +463,7 @@
  * @see UConverterPlatform
  * @stable ICU 2.0
  */
-U_STABLE UConverter* U_EXPORT2
+U_CAPI UConverter* U_EXPORT2
 ucnv_openCCSID(int32_t codepage,
                UConverterPlatform platform,
                UErrorCode * err);
@@ -479,7 +479,7 @@
  * <p>The name will NOT be looked up in the alias mechanism, nor will the converter be
  * stored in the converter cache or the alias table. The only way to open further converters
  * is call this function multiple times, or use the ucnv_safeClone() function to clone a
- * 'master' converter.</p>
+ * 'primary' converter.</p>
  *
  * <p>A future version of ICU may add alias table lookups and/or caching
  * to this function.</p>
@@ -498,7 +498,7 @@
  * @see ucnv_close
  * @stable ICU 2.2
  */
-U_STABLE UConverter* U_EXPORT2
+U_CAPI UConverter* U_EXPORT2
 ucnv_openPackage(const char *packageName, const char *converterName, UErrorCode *err);
 
 /**
@@ -540,7 +540,7 @@
  * @return pointer to the new clone
  * @stable ICU 2.0
  */
-U_STABLE UConverter * U_EXPORT2
+U_CAPI UConverter * U_EXPORT2
 ucnv_safeClone(const UConverter *cnv,
                void             *stackBuffer,
                int32_t          *pBufferSize,
@@ -569,7 +569,7 @@
  * @see ucnv_openCCSID
  * @stable ICU 2.0
  */
-U_STABLE void  U_EXPORT2
+U_CAPI void  U_EXPORT2
 ucnv_close(UConverter * converter);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -608,7 +608,7 @@
  * @see ucnv_setSubstChars
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getSubstChars(const UConverter *converter,
                    char *subChars,
                    int8_t *len,
@@ -633,7 +633,7 @@
  * @see ucnv_getSubstChars
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_setSubstChars(UConverter *converter,
                    const char *subChars,
                    int8_t len,
@@ -666,7 +666,7 @@
  * @see ucnv_getSubstChars
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_setSubstString(UConverter *cnv,
                     const UChar *s,
                     int32_t length,
@@ -685,7 +685,7 @@
  * <TT>U_INDEX_OUTOFBOUNDS_ERROR</TT> will be returned.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getInvalidChars(const UConverter *converter,
                      char *errBytes,
                      int8_t *len,
@@ -704,7 +704,7 @@
  * <TT>U_INDEX_OUTOFBOUNDS_ERROR</TT> will be returned.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getInvalidUChars(const UConverter *converter,
                       UChar *errUChars,
                       int8_t *len,
@@ -717,7 +717,7 @@
  * @param converter the Unicode converter
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_reset(UConverter *converter);
 
 /**
@@ -728,7 +728,7 @@
  * @param converter the Unicode converter
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_resetToUnicode(UConverter *converter);
 
 /**
@@ -739,7 +739,7 @@
  * @param converter the Unicode converter
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_resetFromUnicode(UConverter *converter);
 
 /**
@@ -792,7 +792,7 @@
  * @see ucnv_getMinCharSize
  * @stable ICU 2.0
  */
-U_STABLE int8_t U_EXPORT2
+U_CAPI int8_t U_EXPORT2
 ucnv_getMaxCharSize(const UConverter *converter);
 
 /**
@@ -825,7 +825,7 @@
  * @see ucnv_getMaxCharSize
  * @stable ICU 2.0
  */
-U_STABLE int8_t U_EXPORT2
+U_CAPI int8_t U_EXPORT2
 ucnv_getMinCharSize(const UConverter *converter);
 
 /**
@@ -842,7 +842,7 @@
  * @see ucnv_getName
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_getDisplayName(const UConverter *converter,
                     const char *displayLocale,
                     UChar *displayName,
@@ -859,7 +859,7 @@
  * @see ucnv_getDisplayName
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucnv_getName(const UConverter *converter, UErrorCode *err);
 
 /**
@@ -885,7 +885,7 @@
  * @see ucnv_getPlatform
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_getCCSID(const UConverter *converter,
               UErrorCode *err);
 
@@ -899,7 +899,7 @@
  * @return The codepage platform
  * @stable ICU 2.0
  */
-U_STABLE UConverterPlatform U_EXPORT2
+U_CAPI UConverterPlatform U_EXPORT2
 ucnv_getPlatform(const UConverter *converter,
                  UErrorCode *err);
 
@@ -911,14 +911,14 @@
  * @return the type of the converter
  * @stable ICU 2.0
  */
-U_STABLE UConverterType U_EXPORT2
+U_CAPI UConverterType U_EXPORT2
 ucnv_getType(const UConverter * converter);
 
 /**
  * Gets the "starter" (lead) bytes for converters of type MBCS.
  * Will fill in an <TT>U_ILLEGAL_ARGUMENT_ERROR</TT> if converter passed in
  * is not MBCS. Fills in an array of type UBool, with the value of the byte
- * as offset to the array. For example, if (starters[0x20] == TRUE) at return,
+ * as offset to the array. For example, if (starters[0x20] == true) at return,
  * it means that the byte 0x20 is a starter byte in this converter.
  * Context pointers are always owned by the caller.
  *
@@ -929,7 +929,7 @@
  * @see ucnv_getType
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getStarters(const UConverter* converter,
                  UBool starters[256],
                  UErrorCode* err);
@@ -1000,7 +1000,7 @@
  * @see uset_close
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getUnicodeSet(const UConverter *cnv,
                    USet *setFillIn,
                    UConverterUnicodeSet whichSet,
@@ -1017,7 +1017,7 @@
  * @see ucnv_setToUCallBack
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getToUCallBack (const UConverter * converter,
                      UConverterToUCallback *action,
                      const void **context);
@@ -1033,7 +1033,7 @@
  * @see ucnv_setFromUCallBack
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getFromUCallBack (const UConverter * converter,
                        UConverterFromUCallback *action,
                        const void **context);
@@ -1053,7 +1053,7 @@
  * @see ucnv_getToUCallBack
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_setToUCallBack (UConverter * converter,
                      UConverterToUCallback newAction,
                      const void* newContext,
@@ -1076,7 +1076,7 @@
  * @see ucnv_getFromUCallBack
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_setFromUCallBack (UConverter * converter,
                        UConverterFromUCallback newAction,
                        const void *newContext,
@@ -1103,7 +1103,7 @@
  *  consumed. At that point, the caller should reset the source and
  *  sourceLimit pointers to point to the next chunk.
  *
- * At the end of the stream (flush==TRUE), the input is completely consumed
+ * At the end of the stream (flush==true), the input is completely consumed
  * when *source==sourceLimit and no error code is set.
  * The converter object is then automatically reset by this function.
  * (This means that a converter need not be reset explicitly between data
@@ -1128,9 +1128,9 @@
  * e.g: <TT>offsets[3]</TT> is equal to 6, it means that the <TT>target[3]</TT> was a result of transcoding <TT>source[6]</TT>
  * For output data carried across calls, and other data without a specific source character
  * (such as from escape sequences or callbacks)  -1 will be placed for offsets.
- * @param flush set to <TT>TRUE</TT> if the current source buffer is the last available
- * chunk of the source, <TT>FALSE</TT> otherwise. Note that if a failing status is returned,
- * this function may have to be called multiple times with flush set to <TT>TRUE</TT> until
+ * @param flush set to <TT>true</TT> if the current source buffer is the last available
+ * chunk of the source, <TT>false</TT> otherwise. Note that if a failing status is returned,
+ * this function may have to be called multiple times with flush set to <TT>true</TT> until
  * the source buffer is consumed.
  * @param err the error status.  <TT>U_ILLEGAL_ARGUMENT_ERROR</TT> will be set if the
  * converter is <TT>NULL</TT>.
@@ -1142,7 +1142,7 @@
  * @see ucnv_setToUCallBack
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_fromUnicode (UConverter * converter,
                   char **target,
                   const char *targetLimit,
@@ -1172,7 +1172,7 @@
  *  consumed. At that point, the caller should reset the source and
  *  sourceLimit pointers to point to the next chunk.
  *
- * At the end of the stream (flush==TRUE), the input is completely consumed
+ * At the end of the stream (flush==true), the input is completely consumed
  * when *source==sourceLimit and no error code is set
  * The converter object is then automatically reset by this function.
  * (This means that a converter need not be reset explicitly between data
@@ -1196,9 +1196,9 @@
  * e.g: <TT>offsets[3]</TT> is equal to 6, it means that the <TT>target[3]</TT> was a result of transcoding <TT>source[6]</TT>
  * For output data carried across calls, and other data without a specific source character
  * (such as from escape sequences or callbacks)  -1 will be placed for offsets.
- * @param flush set to <TT>TRUE</TT> if the current source buffer is the last available
- * chunk of the source, <TT>FALSE</TT> otherwise. Note that if a failing status is returned,
- * this function may have to be called multiple times with flush set to <TT>TRUE</TT> until
+ * @param flush set to <TT>true</TT> if the current source buffer is the last available
+ * chunk of the source, <TT>false</TT> otherwise. Note that if a failing status is returned,
+ * this function may have to be called multiple times with flush set to <TT>true</TT> until
  * the source buffer is consumed.
  * @param err the error status.  <TT>U_ILLEGAL_ARGUMENT_ERROR</TT> will be set if the
  * converter is <TT>NULL</TT>.
@@ -1211,7 +1211,7 @@
  * @see ucnv_getNextUChar
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_toUnicode(UConverter *converter,
                UChar **target,
                const UChar *targetLimit,
@@ -1248,7 +1248,7 @@
  * @see UCNV_GET_MAX_BYTES_FOR_STRING
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_fromUChars(UConverter *cnv,
                 char *dest, int32_t destCapacity,
                 const UChar *src, int32_t srcLength,
@@ -1280,7 +1280,7 @@
  * @see ucnv_convert
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_toUChars(UConverter *cnv,
               UChar *dest, int32_t destCapacity,
               const char *src, int32_t srcLength,
@@ -1298,7 +1298,7 @@
  * - Convenient.
  *
  * Limitations compared to ucnv_toUnicode():
- * - Always assumes flush=TRUE.
+ * - Always assumes flush=true.
  *   This makes ucnv_getNextUChar() unsuitable for "streaming" conversion,
  *   that is, for where the input is supplied in multiple buffers,
  *   because ucnv_getNextUChar() will assume the end of the input at the end
@@ -1309,7 +1309,7 @@
  * ucnv_getNextUChar() uses the current state of the converter
  * (unlike ucnv_toUChars() which always resets first).
  * However, if ucnv_getNextUChar() is called after ucnv_toUnicode()
- * stopped in the middle of a character sequence (with flush=FALSE),
+ * stopped in the middle of a character sequence (with flush=false),
  * then ucnv_getNextUChar() will always use the slower ucnv_toUnicode()
  * internally until the next character boundary.
  * (This is new in ICU 2.6. In earlier releases, ucnv_getNextUChar() had to
@@ -1356,7 +1356,7 @@
  * @see ucnv_convert
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 ucnv_getNextUChar(UConverter * converter,
                   const char **source,
                   const char * sourceLimit,
@@ -1388,7 +1388,7 @@
  *
  * ucnv_convertEx() also provides further convenience:
  * - an option to reset the converters at the beginning
- *   (if reset==TRUE, see parameters;
+ *   (if reset==true, see parameters;
  *    also sets *pivotTarget=*pivotSource=pivotStart)
  * - allow NUL-terminated input
  *   (only a single NUL byte, will not work for charsets with multi-byte NULs)
@@ -1445,7 +1445,7 @@
  *                    &target, u8+capacity,
  *                    &s, s+length,
  *                    NULL, NULL, NULL, NULL,
- *                    TRUE, TRUE,
+ *                    true, true,
  *                    pErrorCode);
  *
  *     myReleaseCachedUTF8Converter(utf8Cnv);
@@ -1477,7 +1477,7 @@
  *                      It must be pivotStart<=*pivotSource<=*pivotTarget<=pivotLimit
  *                      and pivotStart<pivotLimit (unless pivotStart==NULL).
  * @param pivotLimit    Pointer to the first unit after the pivot buffer.
- * @param reset         If TRUE, then ucnv_resetToUnicode(sourceCnv) and
+ * @param reset         If true, then ucnv_resetToUnicode(sourceCnv) and
  *                      ucnv_resetFromUnicode(targetCnv) are called, and the
  *                      pivot pointers are reset (*pivotTarget=*pivotSource=pivotStart).
  * @param flush         If true, indicates the end of the input.
@@ -1500,7 +1500,7 @@
  * @see ucnv_toUChars
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
                char **target, const char *targetLimit,
                const char **source, const char *sourceLimit,
@@ -1564,7 +1564,7 @@
  * @see ucnv_getNextUChar
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_convert(const char *toConverterName,
              const char *fromConverterName,
              char *target,
@@ -1618,7 +1618,7 @@
  * @see ucnv_toUChars
  * @stable ICU 2.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_toAlgorithmic(UConverterType algorithmicType,
                    UConverter *cnv,
                    char *target, int32_t targetCapacity,
@@ -1670,7 +1670,7 @@
  * @see ucnv_toUChars
  * @stable ICU 2.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_fromAlgorithmic(UConverter *cnv,
                      UConverterType algorithmicType,
                      char *target, int32_t targetCapacity,
@@ -1684,7 +1684,7 @@
  * @see ucnv_close
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_flushCache(void);
 
 /**
@@ -1694,7 +1694,7 @@
  * @see ucnv_getAvailableName
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_countAvailable(void);
 
 /**
@@ -1707,7 +1707,7 @@
  * @see ucnv_countAvailable
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 ucnv_getAvailableName(int32_t n);
 
 /**
@@ -1722,7 +1722,7 @@
  * @see uenum_next
  * @stable ICU 2.4
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucnv_openAllNames(UErrorCode *pErrorCode);
 
 /**
@@ -1735,7 +1735,7 @@
  * @return number of names on alias list for given alias
  * @stable ICU 2.0
  */
-U_STABLE uint16_t U_EXPORT2
+U_CAPI uint16_t U_EXPORT2
 ucnv_countAliases(const char *alias, UErrorCode *pErrorCode);
 
 /**
@@ -1750,7 +1750,7 @@
  * @see ucnv_countAliases
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucnv_getAlias(const char *alias, uint16_t n, UErrorCode *pErrorCode);
 
 /**
@@ -1766,7 +1766,7 @@
  * @param pErrorCode result of operation
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getAliases(const char *alias, const char **aliases, UErrorCode *pErrorCode);
 
 /**
@@ -1792,7 +1792,7 @@
  * @see uenum_next
  * @stable ICU 2.2
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucnv_openStandardNames(const char *convName,
                        const char *standard,
                        UErrorCode *pErrorCode);
@@ -1802,7 +1802,7 @@
  * @return number of standards
  * @stable ICU 2.0
  */
-U_STABLE uint16_t U_EXPORT2
+U_CAPI uint16_t U_EXPORT2
 ucnv_countStandards(void);
 
 /**
@@ -1812,7 +1812,7 @@
  * @return returns the name of the standard at given index. Owned by the library.
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucnv_getStandard(uint16_t n, UErrorCode *pErrorCode);
 
 /**
@@ -1834,7 +1834,7 @@
  *         then <code>NULL</code> is returned. Owned by the library.
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucnv_getStandardName(const char *name, const char *standard, UErrorCode *pErrorCode);
 
 /**
@@ -1856,7 +1856,7 @@
  * @see ucnv_getStandardName
  * @stable ICU 2.4
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucnv_getCanonicalName(const char *alias, const char *standard, UErrorCode *pErrorCode);
 
 /**
@@ -1873,7 +1873,7 @@
  * @see ucnv_setDefaultName
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucnv_getDefaultName(void);
 
 #ifndef U_HIDE_SYSTEM_API
@@ -1893,7 +1893,7 @@
  * @system
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_setDefaultName(const char *name);
 #endif  /* U_HIDE_SYSTEM_API */
 
@@ -1914,18 +1914,18 @@
  * @see ucnv_isAmbiguous
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_fixFileSeparator(const UConverter *cnv, UChar *source, int32_t sourceLen);
 
 /**
  * Determines if the converter contains ambiguous mappings of the same
  * character or not.
  * @param cnv the converter to be tested
- * @return TRUE if the converter contains ambiguous mapping of the same
- * character, FALSE otherwise.
+ * @return true if the converter contains ambiguous mapping of the same
+ * character, false otherwise.
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucnv_isAmbiguous(const UConverter *cnv);
 
 /**
@@ -1938,12 +1938,12 @@
  * http://www.icu-project.org/userguide/conversion-data.html#ucmformat
  *
  * @param cnv The converter to set the fallback mapping usage on.
- * @param usesFallback TRUE if the user wants the converter to take advantage of the fallback
- * mapping, FALSE otherwise.
+ * @param usesFallback true if the user wants the converter to take advantage of the fallback
+ * mapping, false otherwise.
  * @stable ICU 2.0
  * @see ucnv_usesFallback
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_setFallback(UConverter *cnv, UBool usesFallback);
 
 /**
@@ -1951,11 +1951,11 @@
  * This flag has restrictions, see ucnv_setFallback().
  *
  * @param cnv The converter to be tested
- * @return TRUE if the converter uses fallback, FALSE otherwise.
+ * @return true if the converter uses fallback, false otherwise.
  * @stable ICU 2.0
  * @see ucnv_setFallback
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucnv_usesFallback(const UConverter *cnv);
 
 /**
@@ -1987,7 +1987,7 @@
  * @return The name of the encoding detected. NULL if encoding is not detected.
  * @stable ICU 2.4
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 ucnv_detectUnicodeSignature(const char* source,
                             int32_t sourceLength,
                             int32_t *signatureLength,
@@ -2004,7 +2004,7 @@
  * @return The number of UChars in the state. -1 if an error is encountered.
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_fromUCountPending(const UConverter* cnv, UErrorCode* status);
 
 /**
@@ -2018,7 +2018,7 @@
  * @return The number of chars in the state. -1 if an error is encountered.
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_toUCountPending(const UConverter* cnv, UErrorCode* status);
 
 /**
@@ -2030,13 +2030,13 @@
  * but a UTF-32 converter encodes each code point with 4 bytes.
  * Note: This method is not intended to be used to determine whether the charset has a
  * fixed ratio of bytes to Unicode codes <i>units</i> for any particular Unicode encoding form.
- * FALSE is returned with the UErrorCode if error occurs or cnv is NULL.
+ * false is returned with the UErrorCode if error occurs or cnv is NULL.
  * @param cnv       The converter to be tested
  * @param status    ICU error code in/out paramter
- * @return TRUE if the converter is fixed-width
+ * @return true if the converter is fixed-width
  * @stable ICU 4.8
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucnv_isFixedWidth(UConverter *cnv, UErrorCode *status);
 
 #endif
diff --git a/libandroidicu/include/unicode/ucnv_cb.h b/libandroidicu/include/unicode/ucnv_cb.h
index 14169ed..41845d1 100644
--- a/libandroidicu/include/unicode/ucnv_cb.h
+++ b/libandroidicu/include/unicode/ucnv_cb.h
@@ -84,7 +84,7 @@
  * @see ucnv_cbFromUWriteSub
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_cbFromUWriteBytes (UConverterFromUnicodeArgs *args,
                         const char* source,
                         int32_t length,
@@ -104,7 +104,7 @@
  * @see ucnv_cbFromUWriteBytes
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucnv_cbFromUWriteSub (UConverterFromUnicodeArgs *args,
                       int32_t offsetIndex,
                       UErrorCode * err);
@@ -121,7 +121,7 @@
  * @see ucnv_cbToUWriteSub
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 ucnv_cbFromUWriteUChars(UConverterFromUnicodeArgs *args,
+U_CAPI void U_EXPORT2 ucnv_cbFromUWriteUChars(UConverterFromUnicodeArgs *args,
                              const UChar** source,
                              const UChar*  sourceLimit,
                              int32_t offsetIndex,
@@ -140,7 +140,7 @@
  * @see ucnv_cbToUWriteSub
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 ucnv_cbToUWriteUChars (UConverterToUnicodeArgs *args,
+U_CAPI void U_EXPORT2 ucnv_cbToUWriteUChars (UConverterToUnicodeArgs *args,
                                              const UChar* source,
                                              int32_t length,
                                              int32_t offsetIndex,
@@ -156,7 +156,7 @@
  * @see ucnv_cbToUWriteUChars
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 ucnv_cbToUWriteSub (UConverterToUnicodeArgs *args,
+U_CAPI void U_EXPORT2 ucnv_cbToUWriteSub (UConverterToUnicodeArgs *args,
                        int32_t offsetIndex,
                        UErrorCode * err);
 #endif
diff --git a/libandroidicu/include/unicode/ucnv_err.h b/libandroidicu/include/unicode/ucnv_err.h
index d234710..7209ba5 100644
--- a/libandroidicu/include/unicode/ucnv_err.h
+++ b/libandroidicu/include/unicode/ucnv_err.h
@@ -193,7 +193,7 @@
  */
 typedef struct {
     uint16_t size;              /**< The size of this struct. @stable ICU 2.0 */
-    UBool flush;                /**< The internal state of converter will be reset and data flushed if set to TRUE. @stable ICU 2.0    */
+    UBool flush;                /**< The internal state of converter will be reset and data flushed if set to true. @stable ICU 2.0    */
     UConverter *converter;      /**< Pointer to the converter that is opened and to which this struct is passed as an argument. @stable ICU 2.0  */
     const UChar *source;        /**< Pointer to the source source buffer. @stable ICU 2.0    */
     const UChar *sourceLimit;   /**< Pointer to the limit (end + 1) of source buffer. @stable ICU 2.0    */
@@ -209,7 +209,7 @@
  */
 typedef struct {
     uint16_t size;              /**< The size of this struct   @stable ICU 2.0 */
-    UBool flush;                /**< The internal state of converter will be reset and data flushed if set to TRUE. @stable ICU 2.0   */
+    UBool flush;                /**< The internal state of converter will be reset and data flushed if set to true. @stable ICU 2.0   */
     UConverter *converter;      /**< Pointer to the converter that is opened and to which this struct is passed as an argument. @stable ICU 2.0 */
     const char *source;         /**< Pointer to the source source buffer. @stable ICU 2.0    */
     const char *sourceLimit;    /**< Pointer to the limit (end + 1) of source buffer. @stable ICU 2.0    */
@@ -233,7 +233,7 @@
  * @param err This should always be set to a failure status prior to calling.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_STOP (
+U_CAPI void U_EXPORT2 UCNV_FROM_U_CALLBACK_STOP (
                   const void *context,
                   UConverterFromUnicodeArgs *fromUArgs,
                   const UChar* codeUnits,
@@ -257,7 +257,7 @@
  * @param err This should always be set to a failure status prior to calling.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_STOP (
+U_CAPI void U_EXPORT2 UCNV_TO_U_CALLBACK_STOP (
                   const void *context,
                   UConverterToUnicodeArgs *toUArgs,
                   const char* codeUnits,
@@ -284,7 +284,7 @@
  *      otherwise this value will be set to a failure status.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_SKIP (
+U_CAPI void U_EXPORT2 UCNV_FROM_U_CALLBACK_SKIP (
                   const void *context,
                   UConverterFromUnicodeArgs *fromUArgs,
                   const UChar* codeUnits,
@@ -314,7 +314,7 @@
  * @see ucnv_setSubstChars
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_SUBSTITUTE (
+U_CAPI void U_EXPORT2 UCNV_FROM_U_CALLBACK_SUBSTITUTE (
                   const void *context,
                   UConverterFromUnicodeArgs *fromUArgs,
                   const UChar* codeUnits,
@@ -370,7 +370,7 @@
  *      otherwise this value will be set to a failure status.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_ESCAPE (
+U_CAPI void U_EXPORT2 UCNV_FROM_U_CALLBACK_ESCAPE (
                   const void *context,
                   UConverterFromUnicodeArgs *fromUArgs,
                   const UChar* codeUnits,
@@ -398,7 +398,7 @@
  *      otherwise this value will be set to a failure status.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_SKIP (
+U_CAPI void U_EXPORT2 UCNV_TO_U_CALLBACK_SKIP (
                   const void *context,
                   UConverterToUnicodeArgs *toUArgs,
                   const char* codeUnits,
@@ -424,7 +424,7 @@
  *      otherwise this value will be set to a failure status.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_SUBSTITUTE (
+U_CAPI void U_EXPORT2 UCNV_TO_U_CALLBACK_SUBSTITUTE (
                   const void *context,
                   UConverterToUnicodeArgs *toUArgs,
                   const char* codeUnits,
@@ -450,7 +450,7 @@
  * @stable ICU 2.0
  */
 
-U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_ESCAPE (
+U_CAPI void U_EXPORT2 UCNV_TO_U_CALLBACK_ESCAPE (
                   const void *context,
                   UConverterToUnicodeArgs *toUArgs,
                   const char* codeUnits,
diff --git a/libandroidicu/include/unicode/ucnvsel.h b/libandroidicu/include/unicode/ucnvsel.h
index f33440d..5e0a71c 100644
--- a/libandroidicu/include/unicode/ucnvsel.h
+++ b/libandroidicu/include/unicode/ucnvsel.h
@@ -75,7 +75,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE UConverterSelector* U_EXPORT2
+U_CAPI UConverterSelector* U_EXPORT2
 ucnvsel_open(const char* const*  converterList, int32_t converterListSize,
              const USet* excludedCodePoints,
              const UConverterUnicodeSet whichSet, UErrorCode* status);
@@ -93,7 +93,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnvsel_close(UConverterSelector *sel);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -130,7 +130,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE UConverterSelector* U_EXPORT2
+U_CAPI UConverterSelector* U_EXPORT2
 ucnvsel_openFromSerialized(const void* buffer, int32_t length, UErrorCode* status);
 
 /**
@@ -147,7 +147,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnvsel_serialize(const UConverterSelector* sel,
                   void* buffer, int32_t bufferCapacity, UErrorCode* status);
 
@@ -165,7 +165,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucnvsel_selectForString(const UConverterSelector* sel,
                         const UChar *s, int32_t length, UErrorCode *status);
 
@@ -183,7 +183,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucnvsel_selectForUTF8(const UConverterSelector* sel,
                       const char *s, int32_t length, UErrorCode *status);
 
diff --git a/libandroidicu/include/unicode/ucol.h b/libandroidicu/include/unicode/ucol.h
index f7e6919..a01d0ae 100644
--- a/libandroidicu/include/unicode/ucol.h
+++ b/libandroidicu/include/unicode/ucol.h
@@ -35,14 +35,14 @@
  * searching and sorting routines for natural language text.
  * <p>
  * For more information about the collation service see 
- * <a href="http://userguide.icu-project.org/collation">the User Guide</a>.
+ * <a href="https://unicode-org.github.io/icu/userguide/collation">the User Guide</a>.
  * <p>
  * Collation service provides correct sorting orders for most locales supported in ICU. 
  * If specific data for a locale is not available, the orders eventually falls back
  * to the <a href="http://www.unicode.org/reports/tr35/tr35-collation.html#Root_Collation">CLDR root sort order</a>. 
  * <p>
  * Sort ordering may be customized by providing your own set of rules. For more on
- * this subject see the <a href="http://userguide.icu-project.org/collation/customization">
+ * this subject see the <a href="https://unicode-org.github.io/icu/userguide/collation/customization">
  * Collation Customization</a> section of the User Guide.
  * <p>
  * @see         UCollationResult
@@ -370,7 +370,7 @@
    * Retrieves the "UCA rules" concatenated with the tailoring rules.
    * The "UCA rules" are an <i>approximation</i> of the root collator's sort order.
    * They are almost never used or useful at runtime and can be removed from the data.
-   * See http://userguide.icu-project.org/collation/customization#TOC-Building-on-Existing-Locales
+   * See https://unicode-org.github.io/icu/userguide/collation/customization#building-on-existing-locales
    * @stable ICU 2.0
    */
   UCOL_FULL_RULES 
@@ -384,7 +384,7 @@
  * Starting with ICU 54, collation attributes can be specified via locale keywords as well,
  * in the old locale extension syntax ("el@colCaseFirst=upper")
  * or in language tag syntax ("el-u-kf-upper").
- * See <a href="http://userguide.icu-project.org/collation/api">User Guide: Collation API</a>.
+ * See <a href="https://unicode-org.github.io/icu/userguide/collation/api">User Guide: Collation API</a>.
  *
  * The UCollator pointer is used in all the calls to the Collation 
  * service. After finished, collator must be disposed of by calling
@@ -401,7 +401,7 @@
  * @see ucol_close
  * @stable ICU 2.0
  */
-U_STABLE UCollator* U_EXPORT2 
+U_CAPI UCollator* U_EXPORT2 
 ucol_open(const char *loc, UErrorCode *status);
 
 /**
@@ -429,7 +429,7 @@
  * @see ucol_close
  * @stable ICU 2.0
  */
-U_STABLE UCollator* U_EXPORT2 
+U_CAPI UCollator* U_EXPORT2 
 ucol_openRules( const UChar        *rules,
                 int32_t            rulesLength,
                 UColAttributeValue normalizationMode,
@@ -442,7 +442,7 @@
  * Open a collator defined by a short form string.
  * The structure and the syntax of the string is defined in the "Naming collators"
  * section of the users guide: 
- * http://userguide.icu-project.org/collation/concepts#TOC-Collator-naming-scheme
+ * https://unicode-org.github.io/icu/userguide/collation/concepts#collator-naming-scheme
  * Attributes are overriden by the subsequent attributes. So, for "S2_S3", final
  * strength will be 3. 3066bis locale overrides individual locale parts.
  * The call to this function is equivalent to a call to ucol_open, followed by a 
@@ -452,12 +452,12 @@
  *                   state for a locale.
  * @param parseError if not NULL, structure that will get filled with error's pre
  *                   and post context in case of error.
- * @param forceDefaults if FALSE, the settings that are the same as the collator 
+ * @param forceDefaults if false, the settings that are the same as the collator 
  *                   default settings will not be applied (for example, setting
  *                   French secondary on a French collator would not be executed). 
- *                   If TRUE, all the settings will be applied regardless of the 
+ *                   If true, all the settings will be applied regardless of the 
  *                   collator default value. If the definition
- *                   strings are to be cached, should be set to FALSE.
+ *                   strings are to be cached, should be set to false.
  * @param status     Error code. Apart from regular error conditions connected to 
  *                   instantiating collators (like out of memory or similar), this
  *                   API will return an error if an invalid attribute or attribute/value
@@ -509,7 +509,7 @@
  *
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucol_getContractionsAndExpansions( const UCollator *coll,
                   USet *contractions, USet *expansions,
                   UBool addPrefixes, UErrorCode *status);
@@ -524,7 +524,7 @@
  * @see ucol_safeClone
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_close(UCollator *coll);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -561,7 +561,7 @@
  * @see ucol_equal
  * @stable ICU 2.0
  */
-U_STABLE UCollationResult U_EXPORT2 
+U_CAPI UCollationResult U_EXPORT2 
 ucol_strcoll(    const    UCollator    *coll,
         const    UChar        *source,
         int32_t            sourceLength,
@@ -586,7 +586,7 @@
 * @see ucol_equal 
 * @stable ICU 50 
 */ 
-U_STABLE UCollationResult U_EXPORT2
+U_CAPI UCollationResult U_EXPORT2
 ucol_strcollUTF8(
         const UCollator *coll,
         const char      *source,
@@ -603,13 +603,13 @@
  * @param sourceLength The length of source, or -1 if null-terminated.
  * @param target The target string.
  * @param targetLength The length of target, or -1 if null-terminated.
- * @return TRUE if source is greater than target, FALSE otherwise.
+ * @return true if source is greater than target, false otherwise.
  * @see ucol_strcoll
  * @see ucol_greaterOrEqual
  * @see ucol_equal
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucol_greater(const UCollator *coll,
              const UChar     *source, int32_t sourceLength,
              const UChar     *target, int32_t targetLength);
@@ -622,13 +622,13 @@
  * @param sourceLength The length of source, or -1 if null-terminated.
  * @param target The target string.
  * @param targetLength The length of target, or -1 if null-terminated.
- * @return TRUE if source is greater than or equal to target, FALSE otherwise.
+ * @return true if source is greater than or equal to target, false otherwise.
  * @see ucol_strcoll
  * @see ucol_greater
  * @see ucol_equal
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucol_greaterOrEqual(const UCollator *coll,
                     const UChar     *source, int32_t sourceLength,
                     const UChar     *target, int32_t targetLength);
@@ -641,13 +641,13 @@
  * @param sourceLength The length of source, or -1 if null-terminated.
  * @param target The target string.
  * @param targetLength The length of target, or -1 if null-terminated.
- * @return TRUE if source is equal to target, FALSE otherwise
+ * @return true if source is equal to target, false otherwise
  * @see ucol_strcoll
  * @see ucol_greater
  * @see ucol_greaterOrEqual
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucol_equal(const UCollator *coll,
            const UChar     *source, int32_t sourceLength,
            const UChar     *target, int32_t targetLength);
@@ -664,7 +664,7 @@
  * @see ucol_strcoll
  * @stable ICU 2.6
  */
-U_STABLE UCollationResult U_EXPORT2 
+U_CAPI UCollationResult U_EXPORT2 
 ucol_strcollIter(  const    UCollator    *coll,
                   UCharIterator *sIter,
                   UCharIterator *tIter,
@@ -679,7 +679,7 @@
  * @see ucol_setStrength
  * @stable ICU 2.0
  */
-U_STABLE UCollationStrength U_EXPORT2 
+U_CAPI UCollationStrength U_EXPORT2 
 ucol_getStrength(const UCollator *coll);
 
 /**
@@ -691,7 +691,7 @@
  * @see ucol_getStrength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_setStrength(UCollator *coll,
                  UCollationStrength strength);
 
@@ -711,7 +711,7 @@
  * @see UColReorderCode
  * @stable ICU 4.8
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getReorderCodes(const UCollator* coll,
                     int32_t* dest,
                     int32_t destCapacity,
@@ -756,7 +756,7 @@
  * @see UColReorderCode
  * @stable ICU 4.8
  */ 
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_setReorderCodes(UCollator* coll,
                     const int32_t* reorderCodes,
                     int32_t reorderCodesLength,
@@ -781,7 +781,7 @@
  * @see UColReorderCode
  * @stable ICU 4.8
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getEquivalentReorderCodes(int32_t reorderCode,
                     int32_t* dest,
                     int32_t destCapacity,
@@ -799,7 +799,7 @@
  * the output was truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getDisplayName(    const    char        *objLoc,
             const    char        *dispLoc,
             UChar             *result,
@@ -815,7 +815,7 @@
  * @see ucol_countAvailable
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2 
+U_CAPI const char* U_EXPORT2 
 ucol_getAvailable(int32_t localeIndex);
 
 /**
@@ -826,7 +826,7 @@
  * @see ucol_getAvailable
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_countAvailable(void);
 
 #if !UCONFIG_NO_SERVICE
@@ -838,7 +838,7 @@
  * responsible for closing the result.
  * @stable ICU 3.0
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucol_openAvailableLocales(UErrorCode *status);
 #endif
 
@@ -851,7 +851,7 @@
  * responsible for closing the result.
  * @stable ICU 3.0
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucol_getKeywords(UErrorCode *status);
 
 /**
@@ -865,7 +865,7 @@
  * upon error. The caller is responsible for closing the result.
  * @stable ICU 3.0
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucol_getKeywordValues(const char *keyword, UErrorCode *status);
 
 /**
@@ -884,7 +884,7 @@
  * @return a string enumeration over keyword values for the given key and the locale.
  * @stable ICU 4.2
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucol_getKeywordValuesForLocale(const char* key,
                                const char* locale,
                                UBool commonlyUsed,
@@ -904,7 +904,7 @@
  * applications who wish to cache collators, or otherwise reuse
  * collators when possible. The functional equivalent may change
  * over time. For more information, please see the <a
- * href="http://userguide.icu-project.org/locale#TOC-Locales-and-Services">
+ * href="https://unicode-org.github.io/icu/userguide/locale#locales-and-services">
  * Locales and Services</a> section of the ICU User Guide.
  * @param result fillin for the functionally equivalent result locale
  * @param resultCapacity capacity of the fillin buffer
@@ -921,7 +921,7 @@
  * an error code will be returned.
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_getFunctionalEquivalent(char* result, int32_t resultCapacity,
                              const char* keyword, const char* locale,
                              UBool* isAvailable, UErrorCode* status);
@@ -934,7 +934,7 @@
  * @return The collation tailoring rules.
  * @stable ICU 2.0
  */
-U_STABLE const UChar* U_EXPORT2 
+U_CAPI const UChar* U_EXPORT2 
 ucol_getRules(    const    UCollator    *coll, 
         int32_t            *length);
 
@@ -945,7 +945,7 @@
  *  This string will be normalized.
  *  The structure and the syntax of the string is defined in the "Naming collators"
  *  section of the users guide: 
- *  http://userguide.icu-project.org/collation/concepts#TOC-Collator-naming-scheme
+ *  https://unicode-org.github.io/icu/userguide/collation/concepts#collator-naming-scheme
  *  This API supports preflighting.
  *  @param coll a collator
  *  @param locale a locale that will appear as a collators locale in the resulting
@@ -1017,7 +1017,7 @@
  * @see ucol_keyHashCode
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getSortKey(const    UCollator    *coll,
         const    UChar        *source,
         int32_t        sourceLength,
@@ -1045,7 +1045,7 @@
  *          the sort key.
  *  @stable ICU 2.6
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_nextSortKeyPart(const UCollator *coll,
                      UCharIterator *iter,
                      uint32_t state[2],
@@ -1112,7 +1112,7 @@
  * @see ucol_keyHashCode
  * @stable ICU 2.1
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getBound(const uint8_t       *source,
         int32_t             sourceLength,
         UColBoundMode       boundType,
@@ -1129,7 +1129,7 @@
  * @param info the version # information, the result will be filled in
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucol_getVersion(const UCollator* coll, UVersionInfo info);
 
 /**
@@ -1139,7 +1139,7 @@
  * @param info the version # information, the result will be filled in
  * @stable ICU 2.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucol_getUCAVersion(const UCollator* coll, UVersionInfo info);
 
 /**
@@ -1158,7 +1158,7 @@
  * Using strings with U+FFFE may yield shorter sort keys.
  *
  * For details about Sort Key Features see
- * http://userguide.icu-project.org/collation/api#TOC-Sort-Key-Features
+ * https://unicode-org.github.io/icu/userguide/collation/api#sort-key-features
  *
  * It is possible to merge multiple sort keys by consecutively merging
  * another one with the intermediate result.
@@ -1189,7 +1189,7 @@
  *         in which cases the contents of dest is undefined
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_mergeSortkeys(const uint8_t *src1, int32_t src1Length,
                    const uint8_t *src2, int32_t src2Length,
                    uint8_t *dest, int32_t destCapacity);
@@ -1205,7 +1205,7 @@
  * @see ucol_getAttribute
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_setAttribute(UCollator *coll, UColAttribute attr, UColAttributeValue value, UErrorCode *status);
 
 /**
@@ -1219,7 +1219,7 @@
  * @see ucol_setAttribute
  * @stable ICU 2.0
  */
-U_STABLE UColAttributeValue  U_EXPORT2 
+U_CAPI UColAttributeValue  U_EXPORT2 
 ucol_getAttribute(const UCollator *coll, UColAttribute attr, UErrorCode *status);
 
 /**
@@ -1238,7 +1238,7 @@
  * @see ucol_getMaxVariable
  * @stable ICU 53
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucol_setMaxVariable(UCollator *coll, UColReorderCode group, UErrorCode *pErrorCode);
 
 /**
@@ -1248,7 +1248,7 @@
  * @see ucol_setMaxVariable
  * @stable ICU 53
  */
-U_STABLE UColReorderCode U_EXPORT2
+U_CAPI UColReorderCode U_EXPORT2
 ucol_getMaxVariable(const UCollator *coll);
 
 #ifndef U_HIDE_DEPRECATED_API
@@ -1289,7 +1289,7 @@
  * @see ucol_restoreVariableTop
  * @stable ICU 2.0
  */
-U_STABLE uint32_t U_EXPORT2 ucol_getVariableTop(const UCollator *coll, UErrorCode *status);
+U_CAPI uint32_t U_EXPORT2 ucol_getVariableTop(const UCollator *coll, UErrorCode *status);
 
 #ifndef U_HIDE_DEPRECATED_API
 /**
@@ -1333,7 +1333,7 @@
  * @see ucol_close
  * @stable ICU 2.0
  */
-U_STABLE UCollator* U_EXPORT2 
+U_CAPI UCollator* U_EXPORT2 
 ucol_safeClone(const UCollator *coll,
                void            *stackBuffer,
                int32_t         *pBufferSize,
@@ -1354,7 +1354,7 @@
  * to store rules, will store up to available space.
  *
  * ucol_getRules() should normally be used instead.
- * See http://userguide.icu-project.org/collation/customization#TOC-Building-on-Existing-Locales
+ * See https://unicode-org.github.io/icu/userguide/collation/customization#building-on-existing-locales
  * @param coll collator to get the rules from
  * @param delta one of UCOL_TAILORING_ONLY, UCOL_FULL_RULES. 
  * @param buffer buffer to store the result in. If NULL, you'll get no rules.
@@ -1363,7 +1363,7 @@
  * @stable ICU 2.0
  * @see UCOL_FULL_RULES
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getRulesEx(const UCollator *coll, UColRuleOption delta, UChar *buffer, int32_t bufferLen);
 
 #ifndef U_HIDE_DEPRECATED_API
@@ -1399,7 +1399,7 @@
  *         NULL.
  * @stable ICU 2.8
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucol_getLocaleByType(const UCollator *coll, ULocDataLocaleType type, UErrorCode *status);
 
 /**
@@ -1412,7 +1412,7 @@
  * @see uset_close
  * @stable ICU 2.4
  */
-U_STABLE USet * U_EXPORT2
+U_CAPI USet * U_EXPORT2
 ucol_getTailoredSet(const UCollator *coll, UErrorCode *status);
 
 #ifndef U_HIDE_INTERNAL_API
@@ -1427,7 +1427,7 @@
  *  @return number of elements in the set
  *  @internal ICU 3.0
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_getUnsafeSet( const UCollator *coll,
                   USet *unsafe,
                   UErrorCode *status);
@@ -1439,12 +1439,12 @@
  *                   state for a locale.
  * @param parseError if not NULL, structure that will get filled with error's pre
  *                   and post context in case of error.
- * @param forceDefaults if FALSE, the settings that are the same as the collator 
+ * @param forceDefaults if false, the settings that are the same as the collator 
  *                   default settings will not be applied (for example, setting
  *                   French secondary on a French collator would not be executed). 
- *                   If TRUE, all the settings will be applied regardless of the 
+ *                   If true, all the settings will be applied regardless of the 
  *                   collator default value. If the definition
- *                   strings are to be cached, should be set to FALSE.
+ *                   strings are to be cached, should be set to false.
  * @param status     Error code. Apart from regular error conditions connected to 
  *                   instantiating collators (like out of memory or similar), this
  *                   API will return an error if an invalid attribute or attribute/value
@@ -1452,7 +1452,7 @@
  * @see ucol_openFromShortString
  * @internal ICU 3.2.1
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucol_prepareShortStringOpen( const char *definition,
                           UBool forceDefaults,
                           UParseError *parseError,
@@ -1470,7 +1470,7 @@
  *  @see ucol_openBinary
  *  @stable ICU 3.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_cloneBinary(const UCollator *coll,
                  uint8_t *buffer, int32_t capacity,
                  UErrorCode *status);
@@ -1492,7 +1492,7 @@
  *  @see ucol_cloneBinary
  *  @stable ICU 3.2
  */
-U_STABLE UCollator* U_EXPORT2
+U_CAPI UCollator* U_EXPORT2
 ucol_openBinary(const uint8_t *bin, int32_t length, 
                 const UCollator *base, 
                 UErrorCode *status);
diff --git a/libandroidicu/include/unicode/ucoleitr.h b/libandroidicu/include/unicode/ucoleitr.h
index 85ec838..d500036 100644
--- a/libandroidicu/include/unicode/ucoleitr.h
+++ b/libandroidicu/include/unicode/ucoleitr.h
@@ -23,7 +23,7 @@
 #if !UCONFIG_NO_COLLATION
 
 /**  
- * This indicates an error has occured during processing or if no more CEs is 
+ * This indicates an error has occurred during processing or if no more CEs is 
  * to be returned.
  * @stable ICU 2.0
  */
@@ -66,14 +66,14 @@
  * .      UCollationElements *c;
  * .      UCollatorOld *coll;
  * .      UErrorCode success = U_ZERO_ERROR;
- * .      s=(UChar*)malloc(sizeof(UChar) * (strlen("This is a test")+1) );
- * .      u_uastrcpy(s, "This is a test");
+ * .      str=(UChar*)malloc(sizeof(UChar) * (strlen("This is a test")+1) );
+ * .      u_uastrcpy(str, "This is a test");
  * .      coll = ucol_open(NULL, &success);
  * .      c = ucol_openElements(coll, str, u_strlen(str), &status);
  * .      order = ucol_next(c, &success);
  * .      ucol_reset(c);
  * .      order = ucol_prev(c, &success);
- * .      free(s);
+ * .      free(str);
  * .      ucol_close(coll);
  * .      ucol_closeElements(c);
  * .  }
@@ -102,6 +102,10 @@
 /**
  * Open the collation elements for a string.
  *
+ * The UCollationElements retains a pointer to the supplied text.
+ * The caller must not modify or delete the text while the UCollationElements
+ * object is used to iterate over this text.
+ *
  * @param coll The collator containing the desired collation rules.
  * @param text The text to iterate over.
  * @param textLength The number of characters in text, or -1 if null-terminated
@@ -109,13 +113,12 @@
  * @return a struct containing collation element information
  * @stable ICU 2.0
  */
-U_STABLE UCollationElements* U_EXPORT2 
+U_CAPI UCollationElements* U_EXPORT2 
 ucol_openElements(const UCollator  *coll,
                   const UChar      *text,
                         int32_t    textLength,
                         UErrorCode *status);
 
-
 /**
  * get a hash code for a key... Not very useful!
  * @param key    the given key.
@@ -123,7 +126,7 @@
  * @return       the hash code.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_keyHashCode(const uint8_t* key, int32_t length);
 
 /**
@@ -132,7 +135,7 @@
  * @param elems The UCollationElements to close.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_closeElements(UCollationElements *elems);
 
 /**
@@ -144,7 +147,7 @@
  * @see ucol_previous
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_reset(UCollationElements *elems);
 
 /**
@@ -153,10 +156,10 @@
  * @param elems The UCollationElements containing the text.
  * @param status A pointer to a UErrorCode to receive any errors.
  * @return The next collation elements ordering, otherwise returns UCOL_NULLORDER 
- *         if an error has occured or if the end of string has been reached
+ *         if an error has occurred or if the end of string has been reached
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_next(UCollationElements *elems, UErrorCode *status);
 
 /**
@@ -168,11 +171,11 @@
  *               a U_BUFFER_OVERFLOW_ERROR is returned if the internal stack
  *               buffer has been exhausted.
  * @return The previous collation elements ordering, otherwise returns 
- *         UCOL_NULLORDER if an error has occured or if the start of string has 
+ *         UCOL_NULLORDER if an error has occurred or if the start of string has 
  *         been reached.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_previous(UCollationElements *elems, UErrorCode *status);
 
 /**
@@ -186,7 +189,7 @@
  *         expansion sequence
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getMaxExpansion(const UCollationElements *elems, int32_t order);
 
 /**
@@ -194,6 +197,11 @@
  * Property settings for collation will remain the same.
  * In order to reset the iterator to the current collation property settings,
  * the API reset() has to be called.
+ *
+ * The UCollationElements retains a pointer to the supplied text.
+ * The caller must not modify or delete the text while the UCollationElements
+ * object is used to iterate over this text.
+ *
  * @param elems The UCollationElements to set.
  * @param text The source text containing the collation elements.
  * @param textLength The length of text, or -1 if null-terminated.
@@ -201,8 +209,8 @@
  * @see ucol_getText
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
-ucol_setText(      UCollationElements *elems, 
+U_CAPI void U_EXPORT2 
+ucol_setText(      UCollationElements *elems,
              const UChar              *text,
                    int32_t            textLength,
                    UErrorCode         *status);
@@ -216,7 +224,7 @@
  * @see ucol_setOffset
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getOffset(const UCollationElements *elems);
 
 /**
@@ -231,9 +239,9 @@
  * @see ucol_getOffset
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_setOffset(UCollationElements *elems,
-               int32_t        offset,
+               int32_t             offset,
                UErrorCode         *status);
 
 /**
@@ -242,7 +250,7 @@
 * @return the primary order of a collation order.
 * @stable ICU 2.6
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_primaryOrder (int32_t order); 
 
 /**
@@ -251,7 +259,7 @@
 * @return the secondary order of a collation order.
 * @stable ICU 2.6
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_secondaryOrder (int32_t order); 
 
 /**
@@ -260,7 +268,7 @@
 * @return the tertiary order of a collation order.
 * @stable ICU 2.6
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_tertiaryOrder (int32_t order); 
 
 #endif /* #if !UCONFIG_NO_COLLATION */
diff --git a/libandroidicu/include/unicode/ucptrie.h b/libandroidicu/include/unicode/ucptrie.h
index d736fbc..b95491b 100644
--- a/libandroidicu/include/unicode/ucptrie.h
+++ b/libandroidicu/include/unicode/ucptrie.h
@@ -582,11 +582,11 @@
 // Do not conditionalize with #ifndef U_HIDE_INTERNAL_API, needed for public API
 
 /** @internal */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucptrie_internalSmallIndex(const UCPTrie *trie, UChar32 c);
 
 /** @internal */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucptrie_internalSmallU8Index(const UCPTrie *trie, int32_t lt1, uint8_t t2, uint8_t t3);
 
 /**
@@ -594,7 +594,7 @@
  * Do not call directly.
  * @internal
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucptrie_internalU8PrevIndex(const UCPTrie *trie, UChar32 c,
                             const uint8_t *start, const uint8_t *src);
 
diff --git a/libandroidicu/include/unicode/ucsdet.h b/libandroidicu/include/unicode/ucsdet.h
index d28da50..8c62fde 100644
--- a/libandroidicu/include/unicode/ucsdet.h
+++ b/libandroidicu/include/unicode/ucsdet.h
@@ -78,7 +78,7 @@
   *  @return the newly opened charset detector.
   *  @stable ICU 3.6
   */
-U_STABLE UCharsetDetector * U_EXPORT2
+U_CAPI UCharsetDetector * U_EXPORT2
 ucsdet_open(UErrorCode   *status);
 
 /**
@@ -90,7 +90,7 @@
   *  @param ucsd  The charset detector to be closed.
   *  @stable ICU 3.6
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucsdet_close(UCharsetDetector *ucsd);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -127,7 +127,7 @@
   *
   * @stable ICU 3.6
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucsdet_setText(UCharsetDetector *ucsd, const char *textIn, int32_t len, UErrorCode *status);
 
 
@@ -149,7 +149,7 @@
  *
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucsdet_setDeclaredEncoding(UCharsetDetector *ucsd, const char *encoding, int32_t length, UErrorCode *status);
 
 
@@ -178,7 +178,7 @@
  *
  * @stable ICU 3.6
  */
-U_STABLE const UCharsetMatch * U_EXPORT2
+U_CAPI const UCharsetMatch * U_EXPORT2
 ucsdet_detect(UCharsetDetector *ucsd, UErrorCode *status);
     
 
@@ -212,7 +212,7 @@
  *                      the detector is closed or modified.
  * @stable ICU 3.6
  */
-U_STABLE const UCharsetMatch ** U_EXPORT2
+U_CAPI const UCharsetMatch ** U_EXPORT2
 ucsdet_detectAll(UCharsetDetector *ucsd, int32_t *matchesFound, UErrorCode *status);
 
 
@@ -232,7 +232,7 @@
  *
  *  @stable ICU 3.6
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucsdet_getName(const UCharsetMatch *ucsm, UErrorCode *status);
 
 /**
@@ -258,7 +258,7 @@
  *
  *  @stable ICU 3.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucsdet_getConfidence(const UCharsetMatch *ucsm, UErrorCode *status);
 
 /**
@@ -290,7 +290,7 @@
  *
  *  @stable ICU 3.6
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucsdet_getLanguage(const UCharsetMatch *ucsm, UErrorCode *status);
 
 
@@ -316,7 +316,7 @@
   *
   * @stable ICU 3.6
   */
-U_STABLE  int32_t U_EXPORT2
+U_CAPI  int32_t U_EXPORT2
 ucsdet_getUChars(const UCharsetMatch *ucsm,
                  UChar *buf, int32_t cap, UErrorCode *status);
 
@@ -350,7 +350,7 @@
   *  @return an iterator providing access to the detectable charset names.
   *  @stable ICU 3.6
   */
-U_STABLE  UEnumeration * U_EXPORT2
+U_CAPI  UEnumeration * U_EXPORT2
 ucsdet_getAllDetectableCharsets(const UCharsetDetector *ucsd,  UErrorCode *status);
 
 /**
@@ -360,11 +360,11 @@
   *  heuristics.
   *
   *  @param ucsd  The charset detector to check.
-  *  @return TRUE if filtering is enabled.
+  *  @return true if filtering is enabled.
   *  @stable ICU 3.6
   */
 
-U_STABLE  UBool U_EXPORT2
+U_CAPI  UBool U_EXPORT2
 ucsdet_isInputFilterEnabled(const UCharsetDetector *ucsd);
 
 
@@ -379,7 +379,7 @@
  *
  * @stable ICU 3.6
  */
-U_STABLE  UBool U_EXPORT2
+U_CAPI  UBool U_EXPORT2
 ucsdet_enableInputFilter(UCharsetDetector *ucsd, UBool filter);
 
 #ifndef U_HIDE_INTERNAL_API
@@ -396,7 +396,7 @@
   *  the specified charset detector.
   *  @internal
   */
-U_INTERNAL UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucsdet_getDetectableCharsets(const UCharsetDetector *ucsd,  UErrorCode *status);
 
 /**
@@ -406,13 +406,13 @@
   *
   * @param ucsd a Charset detector.
   * @param encoding encoding the name of charset encoding.
-  * @param enabled <code>TRUE</code> to enable, or <code>FALSE</code> to disable the
+  * @param enabled <code>true</code> to enable, or <code>false</code> to disable the
   *   charset encoding.
   * @param status receives the return status. When the name of charset encoding
   *   is not supported, U_ILLEGAL_ARGUMENT_ERROR is set.
   * @internal
   */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucsdet_setDetectableCharset(UCharsetDetector *ucsd, const char *encoding, UBool enabled, UErrorCode *status);
 #endif  /* U_HIDE_INTERNAL_API */
 
diff --git a/libandroidicu/include/unicode/ucurr.h b/libandroidicu/include/unicode/ucurr.h
index f91cc0d..35c2a39 100644
--- a/libandroidicu/include/unicode/ucurr.h
+++ b/libandroidicu/include/unicode/ucurr.h
@@ -78,7 +78,7 @@
  *                invalid. 
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucurr_forLocale(const char* locale,
                 UChar* buff,
                 int32_t buffCapacity,
@@ -113,7 +113,29 @@
      *
      * @stable ICU 61
      */
-    UCURR_NARROW_SYMBOL_NAME
+    UCURR_NARROW_SYMBOL_NAME,
+
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Selector for getName() indicating the formal currency symbol.
+     * The formal currency symbol is similar to the regular currency
+     * symbol, but it always takes the form used in formal settings
+     * such as banking; for example, "NT$" instead of "$" for TWD in zh-TW.
+     *
+     * @draft ICU 68
+     */
+    UCURR_FORMAL_SYMBOL_NAME,
+
+    /**
+     * Selector for getName() indicating the variant currency symbol.
+     * The variant symbol for a currency is an alternative symbol
+     * that is not necessarily as widely used as the regular symbol.
+     *
+     * @draft ICU 68
+     */
+    UCURR_VARIANT_SYMBOL_NAME
+#endif  // U_HIDE_DRAFT_API
+    
 } UCurrNameStyle;
 
 #if !UCONFIG_NO_SERVICE
@@ -133,7 +155,7 @@
  * if there was an error.
  * @stable ICU 2.6
  */
-U_STABLE UCurrRegistryKey U_EXPORT2
+U_CAPI UCurrRegistryKey U_EXPORT2
 ucurr_register(const UChar* isoCode, 
                    const char* locale,  
                    UErrorCode* status);
@@ -145,10 +167,10 @@
  * restored.
  * @param key the registry key returned by a previous call to ucurr_register
  * @param status the in/out status code, no special meanings are assigned
- * @return TRUE if the currency for this key was successfully unregistered
+ * @return true if the currency for this key was successfully unregistered
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucurr_unregister(UCurrRegistryKey key, UErrorCode* status);
 #endif /* UCONFIG_NO_SERVICE */
 
@@ -159,7 +181,7 @@
  * @param currency null-terminated 3-letter ISO 4217 code
  * @param locale locale in which to display currency
  * @param nameStyle selector for which kind of name to return
- * @param isChoiceFormat always set to FALSE, or can be NULL;
+ * @param isChoiceFormat always set to false, or can be NULL;
  *     display names are static strings;
  *     since ICU 4.4, ChoiceFormat patterns are no longer supported
  * @param len fill-in parameter to receive length of result
@@ -169,7 +191,7 @@
  * returned.
  * @stable ICU 2.6
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ucurr_getName(const UChar* currency,
               const char* locale,
               UCurrNameStyle nameStyle,
@@ -183,7 +205,7 @@
  * currency object in the en_US locale is "US dollar" or "US dollars".
  * @param currency null-terminated 3-letter ISO 4217 code
  * @param locale locale in which to display currency
- * @param isChoiceFormat always set to FALSE, or can be NULL;
+ * @param isChoiceFormat always set to false, or can be NULL;
  *     display names are static strings;
  *     since ICU 4.4, ChoiceFormat patterns are no longer supported
  * @param pluralCount plural count
@@ -194,7 +216,7 @@
  * returned.
  * @stable ICU 4.2
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ucurr_getPluralName(const UChar* currency,
                     const char* locale,
                     UBool* isChoiceFormat,
@@ -219,7 +241,7 @@
  * displayed, or 0 if there is an error
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucurr_getDefaultFractionDigits(const UChar* currency,
                                UErrorCode* ec);
 
@@ -240,7 +262,7 @@
  * displayed, or 0 if there is an error
  * @stable ICU 54
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucurr_getDefaultFractionDigitsForUsage(const UChar* currency, 
                                        const UCurrencyUsage usage,
                                        UErrorCode* ec);
@@ -255,7 +277,7 @@
  * or 0.0 if there is an error
  * @stable ICU 3.0
  */
-U_STABLE double U_EXPORT2
+U_CAPI double U_EXPORT2
 ucurr_getRoundingIncrement(const UChar* currency,
                            UErrorCode* ec);
 
@@ -269,7 +291,7 @@
  * or 0.0 if there is an error
  * @stable ICU 54
  */
-U_STABLE double U_EXPORT2
+U_CAPI double U_EXPORT2
 ucurr_getRoundingIncrementForUsage(const UChar* currency,
                                    const UCurrencyUsage usage,
                                    UErrorCode* ec);
@@ -326,7 +348,7 @@
  * @param pErrorCode Error code
  * @stable ICU 3.2
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucurr_openISOCurrencies(uint32_t currType, UErrorCode *pErrorCode);
 
 /**
@@ -351,11 +373,11 @@
   * @param errorCode 
   *            ICU error code 
    * 
-  * @return TRUE if the given ISO 4217 3-letter code is supported on the specified date range. 
+  * @return true if the given ISO 4217 3-letter code is supported on the specified date range. 
   * 
   * @stable ICU 4.8 
   */ 
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucurr_isAvailable(const UChar* isoCode, 
              UDate from, 
              UDate to, 
@@ -375,7 +397,7 @@
  *               values are invalid.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucurr_countCurrencies(const char* locale, 
                  UDate date, 
                  UErrorCode* ec); 
@@ -399,7 +421,7 @@
  *               invalid.  
  * @stable ICU 4.0 
  */ 
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucurr_forLocaleAndDate(const char* locale, 
                 UDate date, 
                 int32_t index,
@@ -423,7 +445,7 @@
  * @return a string enumeration over keyword values for the given key and the locale.
  * @stable ICU 4.2
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucurr_getKeywordValuesForLocale(const char* key,
                                 const char* locale,
                                 UBool commonlyUsed,
@@ -438,7 +460,7 @@
  * @return The ISO 4217 numeric code of the currency
  * @stable ICU 49
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucurr_getNumericCode(const UChar* currency);
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/libandroidicu/include/unicode/udat.h b/libandroidicu/include/unicode/udat.h
index a0855c3..ec25eba 100644
--- a/libandroidicu/include/unicode/udat.h
+++ b/libandroidicu/include/unicode/udat.h
@@ -146,7 +146,7 @@
  * the date and time formatting algorithm and pattern letters defined by
  * <a href="http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table">UTS#35
  * Unicode Locale Data Markup Language (LDML)</a> and further documented for ICU in the
- * <a href="https://sites.google.com/site/icuprojectuserguide/formatparse/datetime?pli=1#TOC-Date-Field-Symbol-Table">ICU
+ * <a href="https://unicode-org.github.io/icu/userguide/format_parse/datetime#date-field-symbol-table">ICU
  * User Guide</a>.</p>
  */
 
@@ -836,10 +836,24 @@
 
 /**
  * Maps from a UDateFormatField to the corresponding UCalendarDateFields.
- * Note: since the mapping is many-to-one, there is no inverse mapping.
+ *
+ * Note 1: Since the mapping is many-to-one, there is no inverse mapping.
+ *
+ * Note 2: There is no UErrorCode parameter, so in case of error (UDateFormatField is
+ * unknown or has no corresponding UCalendarDateFields value), the function returns the
+ * current value of UCAL_FIELD_COUNT. However, that value may change from release to
+ * release and is consequently deprecated. For a future-proof runtime way of checking
+ * for errors:
+ * a) First save the value returned by the function when it is passed an invalid value
+ *    such as "(UDateFormatField)-1".
+ * b) Then, to test for errors when passing some other UDateFormatField value, check
+ *     whether the function returns that saved value.
+ *
  * @param field the UDateFormatField.
- * @return the UCalendarDateField.  This will be UCAL_FIELD_COUNT in case
- * of error (e.g., the input field is UDAT_FIELD_COUNT).
+ * @return the UCalendarDateField. In case of error (UDateFormatField is unknown or has
+ *   no corresponding UCalendarDateFields value) this will be the current value of
+ *   UCAL_FIELD_COUNT, but that value may change from release to release.
+ *   See Note 2 above.
  * @stable ICU 4.4
  */
 U_CAPI UCalendarDateFields U_EXPORT2
@@ -1221,7 +1235,7 @@
 * With lenient parsing, the parser may use heuristics to interpret inputs that do not
 * precisely match the pattern. With strict parsing, inputs must match the pattern.
 * @param fmt The formatter to query
-* @return TRUE if fmt is set to perform lenient parsing, FALSE otherwise.
+* @return true if fmt is set to perform lenient parsing, false otherwise.
 * @see udat_setLenient
 * @stable ICU 2.0
 */
@@ -1233,7 +1247,7 @@
 * With lenient parsing, the parser may use heuristics to interpret inputs that do not
 * precisely match the pattern. With strict parsing, inputs must match the pattern.
 * @param fmt The formatter to set
-* @param isLenient TRUE if fmt should perform lenient parsing, FALSE otherwise.
+* @param isLenient true if fmt should perform lenient parsing, false otherwise.
 * @see dat_isLenient
 * @stable ICU 2.0
 */
@@ -1393,7 +1407,7 @@
 * Extract the pattern from a UDateFormat.
 * The pattern will follow the pattern syntax rules.
 * @param fmt The formatter to query.
-* @param localized TRUE if the pattern should be localized, FALSE otherwise.
+* @param localized true if the pattern should be localized, false otherwise.
 * @param result A pointer to a buffer to receive the pattern.
 * @param resultLength The maximum size of result.
 * @param status A pointer to an UErrorCode to receive any errors
@@ -1412,7 +1426,7 @@
 * Set the pattern used by an UDateFormat.
 * The pattern should follow the pattern syntax rules.
 * @param format The formatter to set.
-* @param localized TRUE if the pattern is localized, FALSE otherwise.
+* @param localized true if the pattern is localized, false otherwise.
 * @param pattern The new pattern
 * @param patternLength The length of pattern, or -1 if null-terminated.
 * @see udat_toPattern
@@ -1640,7 +1654,7 @@
 * @see udat_applyPatternRelative
 * @internal ICU 4.2 technology preview
 */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udat_toPatternRelativeDate(const UDateFormat *fmt,
                            UChar             *result,
                            int32_t           resultLength,
@@ -1657,7 +1671,7 @@
 * @see udat_applyPatternRelative
 * @internal ICU 4.2 technology preview
 */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udat_toPatternRelativeTime(const UDateFormat *fmt,
                            UChar             *result,
                            int32_t           resultLength,
@@ -1675,7 +1689,7 @@
 * @see udat_toPatternRelativeDate, udat_toPatternRelativeTime
 * @internal ICU 4.2 technology preview
 */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_applyPatternRelative(UDateFormat *format,
                           const UChar *datePattern,
                           int32_t     datePatternLength,
@@ -1700,14 +1714,14 @@
  * Register a provider factory
  * @internal ICU 49
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_registerOpener(UDateFormatOpener opener, UErrorCode *status);
 
 /**
  * Un-Register a provider factory
  * @internal ICU 49
  */
-U_INTERNAL UDateFormatOpener U_EXPORT2
+U_CAPI UDateFormatOpener U_EXPORT2
 udat_unregisterOpener(UDateFormatOpener opener, UErrorCode *status);
 #endif  /* U_HIDE_INTERNAL_API */
 
diff --git a/libandroidicu/include/unicode/udata.h b/libandroidicu/include/unicode/udata.h
index c2fc6c2..6caa849 100644
--- a/libandroidicu/include/unicode/udata.h
+++ b/libandroidicu/include/unicode/udata.h
@@ -169,8 +169,8 @@
  * @param pInfo A pointer to the <code>UDataInfo</code> structure
  *              of data that has been loaded and will be returned
  *              by <code>udata_openChoice()</code> if this function
- *              returns <code>TRUE</code>.
- * @return TRUE if the current data memory is acceptable
+ *              returns <code>true</code>.
+ * @return true if the current data memory is acceptable
  * @stable ICU 2.0
  */
 typedef UBool U_CALLCONV
@@ -200,7 +200,7 @@
  * @see udata_openChoice
  * @stable ICU 2.0
  */
-U_STABLE UDataMemory * U_EXPORT2
+U_CAPI UDataMemory * U_EXPORT2
 udata_open(const char *path, const char *type, const char *name,
            UErrorCode *pErrorCode);
 
@@ -242,7 +242,7 @@
  *             This may be <code>NULL</code> or empty.
  * @param name A string that specifies the name of the data.
  * @param isAcceptable This function is called to verify that loaded data
- *                     is useful for the client code. If it returns FALSE
+ *                     is useful for the client code. If it returns false
  *                     for all data items, then <code>udata_openChoice()</code>
  *                     will return with an error.
  * @param context Arbitrary parameter to be passed into isAcceptable.
@@ -252,7 +252,7 @@
  *         to get a pointer to the actual data.
  * @stable ICU 2.0
  */
-U_STABLE UDataMemory * U_EXPORT2
+U_CAPI UDataMemory * U_EXPORT2
 udata_openChoice(const char *path, const char *type, const char *name,
                  UDataMemoryIsAcceptable *isAcceptable, void *context,
                  UErrorCode *pErrorCode);
@@ -264,7 +264,7 @@
  * @param pData The pointer to data memory object
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udata_close(UDataMemory *pData);
 
 /**
@@ -276,7 +276,7 @@
  * @param pData The pointer to data memory object
  * @stable ICU 2.0
  */
-U_STABLE const void * U_EXPORT2
+U_CAPI const void * U_EXPORT2
 udata_getMemory(UDataMemory *pData);
 
 /**
@@ -297,7 +297,7 @@
  * adjusted and only part of the structure will be filled.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udata_getInfo(UDataMemory *pData, UDataInfo *pInfo);
 
 /**
@@ -306,7 +306,7 @@
  * area in memory.
  *
  * ICU data must be at least 8-aligned, and should be 16-aligned.
- * See http://userguide.icu-project.org/icudata
+ * See https://unicode-org.github.io/icu/userguide/icudata
  *
  * The format of this data is that of the icu common data file, as is
  * generated by the pkgdata tool with mode=common or mode=dll.
@@ -343,7 +343,7 @@
  * @param err outgoing error status <code>U_USING_DEFAULT_WARNING, U_UNSUPPORTED_ERROR</code>
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udata_setCommonData(const void *data, UErrorCode *err);
 
 
@@ -353,7 +353,7 @@
  * pointer.
  *
  * ICU data must be at least 8-aligned, and should be 16-aligned.
- * See http://userguide.icu-project.org/icudata
+ * See https://unicode-org.github.io/icu/userguide/icudata
  *
  * The format of this data is that of the icu common data file, like 'icudt26l.dat'
  * or the corresponding shared library (DLL) file.
@@ -374,7 +374,7 @@
  * @see udata_setCommonData
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udata_setAppData(const char *packageName, const void *data, UErrorCode *err);
 
 /**
@@ -413,7 +413,7 @@
  * @see UDataFileAccess
  * @stable ICU 3.4 
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udata_setFileAccess(UDataFileAccess access, UErrorCode *status);
 
 U_CDECL_END
diff --git a/libandroidicu/include/unicode/udateintervalformat.h b/libandroidicu/include/unicode/udateintervalformat.h
index 90fab08..b100ea6 100644
--- a/libandroidicu/include/unicode/udateintervalformat.h
+++ b/libandroidicu/include/unicode/udateintervalformat.h
@@ -17,6 +17,7 @@
 #include "unicode/ucal.h"
 #include "unicode/umisc.h"
 #include "unicode/uformattedvalue.h"
+#include "unicode/udisplaycontext.h"
 
 #if U_SHOW_CPLUSPLUS_API
 #include "unicode/localpointer.h"
@@ -117,7 +118,7 @@
  *            or NULL if an error occurred.
  * @stable ICU 4.8
  */
-U_STABLE UDateIntervalFormat* U_EXPORT2
+U_CAPI UDateIntervalFormat* U_EXPORT2
 udtitvfmt_open(const char*  locale,
               const UChar* skeleton,
               int32_t      skeletonLength,
@@ -131,7 +132,7 @@
  *            The UDateIntervalFormat object to close.
  * @stable ICU 4.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udtitvfmt_close(UDateIntervalFormat *formatter);
 
 /**
@@ -241,7 +242,7 @@
  *            output was truncated.
  * @stable ICU 4.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udtitvfmt_format(const UDateIntervalFormat* formatter,
                 UDate           fromDate,
                 UDate           toDate,
@@ -268,7 +269,7 @@
  *            A pointer to a UErrorCode to receive any errors.
  * @draft ICU 67
  */
-U_DRAFT void U_EXPORT2
+U_CAPI void U_EXPORT2
 udtitvfmt_formatToResult(
                 const UDateIntervalFormat* formatter,
                 UDate           fromDate,
@@ -293,7 +294,7 @@
  * @draft ICU 67
  */
 
-U_DRAFT void U_EXPORT2
+U_CAPI void U_EXPORT2
 udtitvfmt_formatCalendarToResult(
                 const UDateIntervalFormat* formatter,
                 UCalendar*      fromCalendar,
@@ -302,6 +303,34 @@
                 UErrorCode*     status);
 #endif /* U_HIDE_DRAFT_API */
 
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Set a particular UDisplayContext value in the formatter, such as
+ * UDISPCTX_CAPITALIZATION_FOR_STANDALONE. This causes the formatted
+ * result to be capitalized appropriately for the context in which
+ * it is intended to be used, considering both the locale and the
+ * type of field at the beginning of the formatted result.
+ * @param formatter The formatter for which to set a UDisplayContext value.
+ * @param value The UDisplayContext value to set.
+ * @param status A pointer to an UErrorCode to receive any errors
+ * @draft ICU 68
+ */
+U_CAPI void U_EXPORT2
+udtitvfmt_setContext(UDateIntervalFormat* formatter, UDisplayContext value, UErrorCode* status);
+
+/**
+ * Get the formatter's UDisplayContext value for the specified UDisplayContextType,
+ * such as UDISPCTX_TYPE_CAPITALIZATION.
+ * @param formatter The formatter to query.
+ * @param type The UDisplayContextType whose value to return
+ * @param status A pointer to an UErrorCode to receive any errors
+ * @return The UDisplayContextValue for the specified type.
+ * @draft ICU 68
+ */
+U_CAPI UDisplayContext U_EXPORT2
+udtitvfmt_getContext(const UDateIntervalFormat* formatter, UDisplayContextType type, UErrorCode* status);
+
+#endif /* U_HIDE_DRAFT_API */
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
 
diff --git a/libandroidicu/include/unicode/udatpg.h b/libandroidicu/include/unicode/udatpg.h
index 0c9eed7..5e44cd8 100644
--- a/libandroidicu/include/unicode/udatpg.h
+++ b/libandroidicu/include/unicode/udatpg.h
@@ -164,7 +164,7 @@
   * @return a pointer to UDateTimePatternGenerator.
   * @stable ICU 3.8
   */
-U_STABLE UDateTimePatternGenerator * U_EXPORT2
+U_CAPI UDateTimePatternGenerator * U_EXPORT2
 udatpg_open(const char *locale, UErrorCode *pErrorCode);
 
 /**
@@ -174,7 +174,7 @@
   * @return a pointer to UDateTimePatternGenerator.
   * @stable ICU 3.8
   */
-U_STABLE UDateTimePatternGenerator * U_EXPORT2
+U_CAPI UDateTimePatternGenerator * U_EXPORT2
 udatpg_openEmpty(UErrorCode *pErrorCode);
 
 /**
@@ -182,7 +182,7 @@
   * @param dtpg a pointer to UDateTimePatternGenerator.
   * @stable ICU 3.8
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udatpg_close(UDateTimePatternGenerator *dtpg);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -212,7 +212,7 @@
   * @return a pointer to a new UDateTimePatternGenerator.
   * @stable ICU 3.8
  */
-U_STABLE UDateTimePatternGenerator * U_EXPORT2
+U_CAPI UDateTimePatternGenerator * U_EXPORT2
 udatpg_clone(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode);
 
 /**
@@ -238,7 +238,7 @@
  * @return the length of bestPattern.
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_getBestPattern(UDateTimePatternGenerator *dtpg,
                       const UChar *skeleton, int32_t length,
                       UChar *bestPattern, int32_t capacity,
@@ -274,7 +274,7 @@
  * @return the length of bestPattern.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_getBestPatternWithOptions(UDateTimePatternGenerator *dtpg,
                                  const UChar *skeleton, int32_t length,
                                  UDateTimePatternMatchOptions options,
@@ -302,7 +302,7 @@
   * @return the length of skeleton.
   * @stable ICU 3.8
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_getSkeleton(UDateTimePatternGenerator *unusedDtpg,
                    const UChar *pattern, int32_t length,
                    UChar *skeleton, int32_t capacity,
@@ -332,7 +332,7 @@
  * @return the length of baseSkeleton.
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_getBaseSkeleton(UDateTimePatternGenerator *unusedDtpg,
                        const UChar *pattern, int32_t length,
                        UChar *baseSkeleton, int32_t capacity,
@@ -362,7 +362,7 @@
  *                  UDATPG_BASE_CONFLICT or UDATPG_CONFLICT.
  * @stable ICU 3.8
  */
-U_STABLE UDateTimePatternConflict U_EXPORT2
+U_CAPI UDateTimePatternConflict U_EXPORT2
 udatpg_addPattern(UDateTimePatternGenerator *dtpg,
                   const UChar *pattern, int32_t patternLength,
                   UBool override,
@@ -389,7 +389,7 @@
   * @param length the length of value.
   * @stable ICU 3.8
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udatpg_setAppendItemFormat(UDateTimePatternGenerator *dtpg,
                            UDateTimePatternField field,
                            const UChar *value, int32_t length);
@@ -404,7 +404,7 @@
  * @return appendItemFormat for field.
  * @stable ICU 3.8
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 udatpg_getAppendItemFormat(const UDateTimePatternGenerator *dtpg,
                            UDateTimePatternField field,
                            int32_t *pLength);
@@ -422,7 +422,7 @@
    * @param length the length of value.
    * @stable ICU 3.8
    */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udatpg_setAppendItemName(UDateTimePatternGenerator *dtpg,
                          UDateTimePatternField field,
                          const UChar *value, int32_t length);
@@ -439,7 +439,7 @@
  * @see udatpg_getFieldDisplayName
  * @stable ICU 3.8
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 udatpg_getAppendItemName(const UDateTimePatternGenerator *dtpg,
                          UDateTimePatternField field,
                          int32_t *pLength);
@@ -469,7 +469,7 @@
  *         truncated result.
  * @stable ICU 61
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_getFieldDisplayName(const UDateTimePatternGenerator *dtpg,
                            UDateTimePatternField field,
                            UDateTimePGDisplayWidth width,
@@ -499,7 +499,7 @@
  * @param length the length of dtFormat.
  * @stable ICU 3.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udatpg_setDateTimeFormat(const UDateTimePatternGenerator *dtpg,
                          const UChar *dtFormat, int32_t length);
 
@@ -510,7 +510,7 @@
  * @return dateTimeFormat.
  * @stable ICU 3.8
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 udatpg_getDateTimeFormat(const UDateTimePatternGenerator *dtpg,
                          int32_t *pLength);
 
@@ -527,7 +527,7 @@
  * @param length the length of decimal.
  * @stable ICU 3.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udatpg_setDecimal(UDateTimePatternGenerator *dtpg,
                   const UChar *decimal, int32_t length);
 
@@ -539,7 +539,7 @@
  * @return corresponding to the decimal point.
  * @stable ICU 3.8
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 udatpg_getDecimal(const UDateTimePatternGenerator *dtpg,
                   int32_t *pLength);
 
@@ -568,7 +568,7 @@
  * @return the length of dest.
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_replaceFieldTypes(UDateTimePatternGenerator *dtpg,
                          const UChar *pattern, int32_t patternLength,
                          const UChar *skeleton, int32_t skeletonLength,
@@ -605,7 +605,7 @@
  * @return the length of dest.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_replaceFieldTypesWithOptions(UDateTimePatternGenerator *dtpg,
                                     const UChar *pattern, int32_t patternLength,
                                     const UChar *skeleton, int32_t skeletonLength,
@@ -624,7 +624,7 @@
  *         The caller must close the object.
  * @stable ICU 3.8
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 udatpg_openSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode);
 
 /**
@@ -637,7 +637,7 @@
  *             The caller must close the object.
  * @stable ICU 3.8
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 udatpg_openBaseSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode);
 
 /**
@@ -650,7 +650,7 @@
  * @return pattern corresponding to a given skeleton.
  * @stable ICU 3.8
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 udatpg_getPatternForSkeleton(const UDateTimePatternGenerator *dtpg,
                              const UChar *skeleton, int32_t skeletonLength,
                              int32_t *pLength);
@@ -671,7 +671,7 @@
  * @return the default hour cycle.
  * @draft ICU 67
  */
-U_DRAFT UDateFormatHourCycle U_EXPORT2
+U_CAPI UDateFormatHourCycle U_EXPORT2
 udatpg_getDefaultHourCycle(const UDateTimePatternGenerator *dtpg, UErrorCode* pErrorCode);
 #endif  /* U_HIDE_DRAFT_API */
 
diff --git a/libandroidicu/include/unicode/udisplaycontext.h b/libandroidicu/include/unicode/udisplaycontext.h
index 398481c..6e14217 100644
--- a/libandroidicu/include/unicode/udisplaycontext.h
+++ b/libandroidicu/include/unicode/udisplaycontext.h
@@ -156,7 +156,8 @@
     UDISPCTX_SUBSTITUTE = (UDISPCTX_TYPE_SUBSTITUTE_HANDLING<<8) + 0,
     /**
      * A possible setting for SUBSTITUTE_HANDLING:
-     * Returns a null value when no data is available.
+     * Returns a null value with error code set to U_ILLEGAL_ARGUMENT_ERROR when no
+     * data is available.
      * @stable ICU 58
      */
     UDISPCTX_NO_SUBSTITUTE = (UDISPCTX_TYPE_SUBSTITUTE_HANDLING<<8) + 1
diff --git a/libandroidicu/include/unicode/uenum.h b/libandroidicu/include/unicode/uenum.h
index f6191d9..d9c893e 100644
--- a/libandroidicu/include/unicode/uenum.h
+++ b/libandroidicu/include/unicode/uenum.h
@@ -50,7 +50,7 @@
  * @param en UEnumeration structure pointer
  * @stable ICU 2.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uenum_close(UEnumeration* en);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -86,7 +86,7 @@
  * @return number of elements in the iterator
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uenum_count(UEnumeration* en, UErrorCode* status);
 
 /**
@@ -110,7 +110,7 @@
  *         traversed, returns NULL.
  * @stable ICU 2.2
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 uenum_unext(UEnumeration* en,
             int32_t* resultLength,
             UErrorCode* status);
@@ -143,7 +143,7 @@
  *         traversed, returns NULL.
  * @stable ICU 2.2
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uenum_next(UEnumeration* en,
            int32_t* resultLength,
            UErrorCode* status);
@@ -157,7 +157,7 @@
  *               the iterator is out of sync with its service.  
  * @stable ICU 2.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uenum_reset(UEnumeration* en, UErrorCode* status);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -171,7 +171,7 @@
  * @return a UEnumeration wrapping the adopted StringEnumeration.
  * @stable ICU 4.2
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uenum_openFromStringEnumeration(icu::StringEnumeration* adopted, UErrorCode* ec);
 
 #endif
@@ -187,7 +187,7 @@
  * @see uenum_close
  * @stable ICU 50
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uenum_openUCharStringsEnumeration(const UChar* const strings[], int32_t count,
                                  UErrorCode* ec);
 
@@ -202,7 +202,7 @@
  * @see uenum_close
  * @stable ICU 50
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uenum_openCharStringsEnumeration(const char* const strings[], int32_t count,
                                  UErrorCode* ec);
 
diff --git a/libandroidicu/include/unicode/ufieldpositer.h b/libandroidicu/include/unicode/ufieldpositer.h
index ba795a1..83df184 100644
--- a/libandroidicu/include/unicode/ufieldpositer.h
+++ b/libandroidicu/include/unicode/ufieldpositer.h
@@ -54,7 +54,7 @@
  *          or NULL if an error occurred.
  * @stable ICU 55
  */
-U_STABLE UFieldPositionIterator* U_EXPORT2
+U_CAPI UFieldPositionIterator* U_EXPORT2
 ufieldpositer_open(UErrorCode* status);
 
 /**
@@ -63,7 +63,7 @@
  *          A pointer to the UFieldPositionIterator object to close.
  * @stable ICU 55
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ufieldpositer_close(UFieldPositionIterator *fpositer);
 
 
@@ -114,7 +114,7 @@
  *
  * @stable ICU 55
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ufieldpositer_next(UFieldPositionIterator *fpositer,
                    int32_t *beginIndex, int32_t *endIndex);
 
diff --git a/libandroidicu/include/unicode/uformattable.h b/libandroidicu/include/unicode/uformattable.h
index 6afd949..6b8bee1 100644
--- a/libandroidicu/include/unicode/uformattable.h
+++ b/libandroidicu/include/unicode/uformattable.h
@@ -81,7 +81,7 @@
  * @see ufmt_close
  * @see icu::Formattable::Formattable()
  */
-U_STABLE UFormattable* U_EXPORT2
+U_CAPI UFormattable* U_EXPORT2
 ufmt_open(UErrorCode* status);
 
 /**
@@ -90,7 +90,7 @@
  * @stable ICU 52
  * @see ufmt_open
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ufmt_close(UFormattable* fmt);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -122,7 +122,7 @@
  * @see icu::Formattable::getType() const
  * @stable ICU 52
  */
-U_STABLE UFormattableType U_EXPORT2
+U_CAPI UFormattableType U_EXPORT2
 ufmt_getType(const UFormattable* fmt, UErrorCode *status);
 
 /**
@@ -133,7 +133,7 @@
  * @see icu::Formattable::isNumeric() const
  * @stable ICU 52
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ufmt_isNumeric(const UFormattable* fmt);
 
 /**
@@ -146,7 +146,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getDate(UErrorCode&) const
  */
-U_STABLE UDate U_EXPORT2
+U_CAPI UDate U_EXPORT2
 ufmt_getDate(const UFormattable* fmt, UErrorCode *status);
 
 /**
@@ -164,7 +164,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getDouble(UErrorCode&) const
  */
-U_STABLE double U_EXPORT2
+U_CAPI double U_EXPORT2
 ufmt_getDouble(UFormattable* fmt, UErrorCode *status);
 
 /**
@@ -185,7 +185,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getLong(UErrorCode&) const
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ufmt_getLong(UFormattable* fmt, UErrorCode *status);
 
 
@@ -206,7 +206,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getInt64(UErrorCode&) const
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 ufmt_getInt64(UFormattable* fmt, UErrorCode *status);
 
 /**
@@ -219,7 +219,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getObject() const
  */
-U_STABLE const void *U_EXPORT2
+U_CAPI const void *U_EXPORT2
 ufmt_getObject(const UFormattable* fmt, UErrorCode *status);
 
 /**
@@ -234,7 +234,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getString(UnicodeString&)const
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ufmt_getUChars(UFormattable* fmt, int32_t *len, UErrorCode *status);
 
 /**
@@ -245,7 +245,7 @@
  * @stable ICU 52
  * @see ufmt_getArrayItemByIndex
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ufmt_getArrayLength(const UFormattable* fmt, UErrorCode *status);
 
 /**
@@ -257,7 +257,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getArray(int32_t&, UErrorCode&) const
  */
-U_STABLE UFormattable * U_EXPORT2
+U_CAPI UFormattable * U_EXPORT2
 ufmt_getArrayItemByIndex(UFormattable* fmt, int32_t n, UErrorCode *status);
 
 /**
@@ -282,7 +282,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getDecimalNumber(UErrorCode&)
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ufmt_getDecNumChars(UFormattable *fmt, int32_t *len, UErrorCode *status);
 
 #endif
diff --git a/libandroidicu/include/unicode/uformattedvalue.h b/libandroidicu/include/unicode/uformattedvalue.h
index 07f4281..c358629 100644
--- a/libandroidicu/include/unicode/uformattedvalue.h
+++ b/libandroidicu/include/unicode/uformattedvalue.h
@@ -120,7 +120,7 @@
  * @return The new object, or NULL if an error occurs.
  * @stable ICU 64
  */
-U_STABLE UConstrainedFieldPosition* U_EXPORT2
+U_CAPI UConstrainedFieldPosition* U_EXPORT2
 ucfpos_open(UErrorCode* ec);
 
 
@@ -133,7 +133,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_reset(
     UConstrainedFieldPosition* ucfpos,
     UErrorCode* ec);
@@ -145,7 +145,7 @@
  * @param ucfpos The instance of UConstrainedFieldPosition.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_close(UConstrainedFieldPosition* ucfpos);
 
 
@@ -174,7 +174,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_constrainCategory(
     UConstrainedFieldPosition* ucfpos,
     int32_t category,
@@ -207,7 +207,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_constrainField(
     UConstrainedFieldPosition* ucfpos,
     int32_t category,
@@ -220,14 +220,14 @@
  *
  * If a category or field constraint was set, this function returns the constrained
  * category. Otherwise, the return value is well-defined only after
- * ufmtval_nextPosition returns TRUE.
+ * ufmtval_nextPosition returns true.
  *
  * @param ucfpos The instance of UConstrainedFieldPosition.
  * @param ec Set if an error occurs.
  * @return The field category saved in the instance.
  * @stable ICU 64
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucfpos_getCategory(
     const UConstrainedFieldPosition* ucfpos,
     UErrorCode* ec);
@@ -238,14 +238,14 @@
  *
  * If a field constraint was set, this function returns the constrained
  * field. Otherwise, the return value is well-defined only after
- * ufmtval_nextPosition returns TRUE.
+ * ufmtval_nextPosition returns true.
  *
  * @param ucfpos The instance of UConstrainedFieldPosition.
  * @param ec Set if an error occurs.
  * @return The field saved in the instance.
  * @stable ICU 64
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucfpos_getField(
     const UConstrainedFieldPosition* ucfpos,
     UErrorCode* ec);
@@ -254,7 +254,7 @@
 /**
  * Gets the INCLUSIVE start and EXCLUSIVE end index stored for the current position.
  *
- * The output values are well-defined only after ufmtval_nextPosition returns TRUE.
+ * The output values are well-defined only after ufmtval_nextPosition returns true.
  *
  * @param ucfpos The instance of UConstrainedFieldPosition.
  * @param pStart Set to the start index saved in the instance. Ignored if nullptr.
@@ -262,7 +262,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_getIndexes(
     const UConstrainedFieldPosition* ucfpos,
     int32_t* pStart,
@@ -282,7 +282,7 @@
  * @return The current iteration context from ucfpos_setInt64IterationContext.
  * @stable ICU 64
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 ucfpos_getInt64IterationContext(
     const UConstrainedFieldPosition* ucfpos,
     UErrorCode* ec);
@@ -298,7 +298,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_setInt64IterationContext(
     UConstrainedFieldPosition* ucfpos,
     int64_t context,
@@ -317,7 +317,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucfpos_matchesField(
     const UConstrainedFieldPosition* ucfpos,
     int32_t category,
@@ -341,7 +341,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_setState(
     UConstrainedFieldPosition* ucfpos,
     int32_t category,
@@ -374,7 +374,7 @@
  * @return A NUL-terminated char16 string owned by the UFormattedValue.
  * @stable ICU 64
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ufmtval_getString(
     const UFormattedValue* ufmtval,
     int32_t* pLength,
@@ -401,10 +401,10 @@
  *         see ucfpos_constrainCategory
  *         and ucfpos_constrainField.
  * @param ec Set if an error occurs.
- * @return TRUE if another position was found; FALSE otherwise.
+ * @return true if another position was found; false otherwise.
  * @stable ICU 64
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ufmtval_nextPosition(
     const UFormattedValue* ufmtval,
     UConstrainedFieldPosition* ucfpos,
diff --git a/libandroidicu/include/unicode/ugender.h b/libandroidicu/include/unicode/ugender.h
index 6ce006e..7093686 100644
--- a/libandroidicu/include/unicode/ugender.h
+++ b/libandroidicu/include/unicode/ugender.h
@@ -65,7 +65,7 @@
  * @return A UGenderInfo for the specified locale, or NULL if an error occurred.
  * @stable ICU 50
  */
-U_STABLE const UGenderInfo* U_EXPORT2
+U_CAPI const UGenderInfo* U_EXPORT2
 ugender_getInstance(const char *locale, UErrorCode *status);
 
 
@@ -78,7 +78,7 @@
  * @return The gender of the list.
  * @stable ICU 50
  */
-U_STABLE UGender U_EXPORT2
+U_CAPI UGender U_EXPORT2
 ugender_getListGender(const UGenderInfo* genderInfo, const UGender *genders, int32_t size, UErrorCode *status);
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/libandroidicu/include/unicode/uidna.h b/libandroidicu/include/unicode/uidna.h
index e789dca..24a81ce 100644
--- a/libandroidicu/include/unicode/uidna.h
+++ b/libandroidicu/include/unicode/uidna.h
@@ -23,6 +23,7 @@
 
 #if !UCONFIG_NO_IDNA
 
+#include <stdbool.h>
 #include "unicode/parseerr.h"
 
 #if U_SHOW_CPLUSPLUS_API
@@ -141,7 +142,7 @@
  * @return the UTS #46 UIDNA instance, if successful
  * @stable ICU 4.6
  */
-U_STABLE UIDNA * U_EXPORT2
+U_CAPI UIDNA * U_EXPORT2
 uidna_openUTS46(uint32_t options, UErrorCode *pErrorCode);
 
 /**
@@ -149,7 +150,7 @@
  * @param idna UIDNA instance to be closed
  * @stable ICU 4.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uidna_close(UIDNA *idna);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -185,7 +186,7 @@
     /** sizeof(UIDNAInfo) @stable ICU 4.6 */
     int16_t size;
     /**
-     * Set to TRUE if transitional and nontransitional processing produce different results.
+     * Set to true if transitional and nontransitional processing produce different results.
      * For details see C++ IDNAInfo::isTransitionalDifferent().
      * @stable ICU 4.6
      */
@@ -207,7 +208,7 @@
  */
 #define UIDNA_INFO_INITIALIZER { \
     (int16_t)sizeof(UIDNAInfo), \
-    FALSE, FALSE, \
+    false, false, \
     0, 0, 0 }
 
 /**
@@ -233,7 +234,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_labelToASCII(const UIDNA *idna,
                    const UChar *label, int32_t length,
                    UChar *dest, int32_t capacity,
@@ -260,7 +261,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_labelToUnicode(const UIDNA *idna,
                      const UChar *label, int32_t length,
                      UChar *dest, int32_t capacity,
@@ -289,7 +290,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_nameToASCII(const UIDNA *idna,
                   const UChar *name, int32_t length,
                   UChar *dest, int32_t capacity,
@@ -316,7 +317,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_nameToUnicode(const UIDNA *idna,
                     const UChar *name, int32_t length,
                     UChar *dest, int32_t capacity,
@@ -341,7 +342,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_labelToASCII_UTF8(const UIDNA *idna,
                         const char *label, int32_t length,
                         char *dest, int32_t capacity,
@@ -364,7 +365,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_labelToUnicodeUTF8(const UIDNA *idna,
                          const char *label, int32_t length,
                          char *dest, int32_t capacity,
@@ -387,7 +388,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_nameToASCII_UTF8(const UIDNA *idna,
                        const char *name, int32_t length,
                        char *dest, int32_t capacity,
@@ -410,7 +411,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_nameToUnicodeUTF8(const UIDNA *idna,
                         const char *name, int32_t length,
                         char *dest, int32_t capacity,
diff --git a/libandroidicu/include/unicode/uiter.h b/libandroidicu/include/unicode/uiter.h
index 11ad75a..be232c7 100644
--- a/libandroidicu/include/unicode/uiter.h
+++ b/libandroidicu/include/unicode/uiter.h
@@ -492,7 +492,7 @@
  * @see UnicodeString::char32At()
  * @stable ICU 2.1
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 uiter_current32(UCharIterator *iter);
 
 /**
@@ -509,7 +509,7 @@
  * @see U16_NEXT
  * @stable ICU 2.1
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 uiter_next32(UCharIterator *iter);
 
 /**
@@ -526,7 +526,7 @@
  * @see U16_PREV
  * @stable ICU 2.1
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 uiter_previous32(UCharIterator *iter);
 
 /**
@@ -547,7 +547,7 @@
  * @see UITER_NO_STATE
  * @stable ICU 2.6
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 uiter_getState(const UCharIterator *iter);
 
 /**
@@ -565,7 +565,7 @@
  * @see UCharIteratorSetState
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uiter_setState(UCharIterator *iter, uint32_t state, UErrorCode *pErrorCode);
 
 /**
@@ -590,7 +590,7 @@
  * @see UCharIterator
  * @stable ICU 2.1
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uiter_setString(UCharIterator *iter, const UChar *s, int32_t length);
 
 /**
@@ -613,7 +613,7 @@
  * @see uiter_setString
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uiter_setUTF16BE(UCharIterator *iter, const char *s, int32_t length);
 
 /**
@@ -649,7 +649,7 @@
  * @see UCharIterator
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uiter_setUTF8(UCharIterator *iter, const char *s, int32_t length);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -674,7 +674,7 @@
  * @see UCharIterator
  * @stable ICU 2.1
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uiter_setCharacterIterator(UCharIterator *iter, icu::CharacterIterator *charIter);
 
 /**
@@ -699,7 +699,7 @@
  * @see UCharIterator
  * @stable ICU 2.1
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uiter_setReplaceable(UCharIterator *iter, const icu::Replaceable *rep);
 
 #endif
diff --git a/libandroidicu/include/unicode/uldnames.h b/libandroidicu/include/unicode/uldnames.h
index 498668e..47b047e 100644
--- a/libandroidicu/include/unicode/uldnames.h
+++ b/libandroidicu/include/unicode/uldnames.h
@@ -68,7 +68,7 @@
  * @param pErrorCode the status code
  * @stable ICU 4.4
  */
-U_STABLE ULocaleDisplayNames * U_EXPORT2
+U_CAPI ULocaleDisplayNames * U_EXPORT2
 uldn_open(const char * locale,
           UDialectHandling dialectHandling,
           UErrorCode *pErrorCode);
@@ -78,7 +78,7 @@
  * @param ldn the ULocaleDisplayNames instance to be closed
  * @stable ICU 4.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uldn_close(ULocaleDisplayNames *ldn);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -109,7 +109,7 @@
  * @return the display locale 
  * @stable ICU 4.4
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 uldn_getLocale(const ULocaleDisplayNames *ldn);
 
 /**
@@ -118,7 +118,7 @@
  * @return the dialect handling enum
  * @stable ICU 4.4
  */
-U_STABLE UDialectHandling U_EXPORT2
+U_CAPI UDialectHandling U_EXPORT2
 uldn_getDialectHandling(const ULocaleDisplayNames *ldn);
 
 /* names for entire locales */
@@ -134,7 +134,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_localeDisplayName(const ULocaleDisplayNames *ldn,
                        const char *locale,
                        UChar *result,
@@ -154,7 +154,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_languageDisplayName(const ULocaleDisplayNames *ldn,
                          const char *lang,
                          UChar *result,
@@ -172,7 +172,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_scriptDisplayName(const ULocaleDisplayNames *ldn,
                        const char *script,
                        UChar *result,
@@ -190,7 +190,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_scriptCodeDisplayName(const ULocaleDisplayNames *ldn,
                            UScriptCode scriptCode,
                            UChar *result,
@@ -208,7 +208,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_regionDisplayName(const ULocaleDisplayNames *ldn,
                        const char *region,
                        UChar *result,
@@ -226,7 +226,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_variantDisplayName(const ULocaleDisplayNames *ldn,
                         const char *variant,
                         UChar *result,
@@ -244,7 +244,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_keyDisplayName(const ULocaleDisplayNames *ldn,
                     const char *key,
                     UChar *result,
@@ -263,7 +263,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_keyValueDisplayName(const ULocaleDisplayNames *ldn,
                          const char *key,
                          const char *value,
@@ -285,7 +285,7 @@
 * @return a ULocaleDisplayNames instance 
 * @stable ICU 51
 */
-U_STABLE ULocaleDisplayNames * U_EXPORT2
+U_CAPI ULocaleDisplayNames * U_EXPORT2
 uldn_openForContext(const char * locale, UDisplayContext *contexts,
                     int32_t length, UErrorCode *pErrorCode);
 
@@ -299,7 +299,7 @@
 * @return the UDisplayContextValue for the specified type.
 * @stable ICU 51
 */
-U_STABLE UDisplayContext U_EXPORT2
+U_CAPI UDisplayContext U_EXPORT2
 uldn_getContext(const ULocaleDisplayNames *ldn, UDisplayContextType type,
                 UErrorCode *pErrorCode);
 
diff --git a/libandroidicu/include/unicode/ulistformatter.h b/libandroidicu/include/unicode/ulistformatter.h
index 1431753..8334c78 100644
--- a/libandroidicu/include/unicode/ulistformatter.h
+++ b/libandroidicu/include/unicode/ulistformatter.h
@@ -62,17 +62,16 @@
     ULISTFMT_ELEMENT_FIELD
 } UListFormatterField;
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * Type of meaning expressed by the list.
  *
- * @draft ICU 67
+ * @stable ICU 67
  */
 typedef enum UListFormatterType {
     /**
      * Conjunction formatting, e.g. "Alice, Bob, Charlie, and Delta".
      *
-     * @draft ICU 67
+     * @stable ICU 67
      */
     ULISTFMT_TYPE_AND,
 
@@ -80,14 +79,14 @@
      * Disjunction (or alternative, or simply one of) formatting, e.g.
      * "Alice, Bob, Charlie, or Delta".
      *
-     * @draft ICU 67
+     * @stable ICU 67
      */
     ULISTFMT_TYPE_OR,
 
     /**
      * Formatting of a list of values with units, e.g. "5 pounds, 12 ounces".
      *
-     * @draft ICU 67
+     * @stable ICU 67
      */
     ULISTFMT_TYPE_UNITS
 } UListFormatterType;
@@ -95,29 +94,28 @@
 /**
  * Verbosity level of the list patterns.
  *
- * @draft ICU 67
+ * @stable ICU 67
  */
 typedef enum UListFormatterWidth {
     /**
      * Use list formatting with full words (no abbreviations) when possible.
      *
-     * @draft ICU 67
+     * @stable ICU 67
      */
     ULISTFMT_WIDTH_WIDE,
 
     /**
      * Use list formatting of typical length.
-     * @draft ICU 67
+     * @stable ICU 67
      */
     ULISTFMT_WIDTH_SHORT,
 
     /**
      * Use list formatting of the shortest possible length.
-     * @draft ICU 67
+     * @stable ICU 67
      */
     ULISTFMT_WIDTH_NARROW,
 } UListFormatterWidth;
-#endif /* U_HIDE_DRAFT_API */
 
 /**
  * Open a new UListFormatter object using the rules for a given locale.
@@ -141,7 +139,6 @@
 ulistfmt_open(const char*  locale,
               UErrorCode*  status);
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * Open a new UListFormatter object appropriate for the given locale, list type,
  * and style.
@@ -162,12 +159,11 @@
  * @return
  *            A pointer to a UListFormatter object for the specified locale,
  *            or NULL if an error occurred.
- * @draft ICU 67
+ * @stable ICU 67
  */
-U_DRAFT UListFormatter* U_EXPORT2
+U_CAPI UListFormatter* U_EXPORT2
 ulistfmt_openForType(const char*  locale, UListFormatterType type,
                      UListFormatterWidth width, UErrorCode*  status);
-#endif /* U_HIDE_DRAFT_API */
 
 /**
  * Close a UListFormatter object. Once closed it may no longer be used.
diff --git a/libandroidicu/include/unicode/uloc.h b/libandroidicu/include/unicode/uloc.h
index d877ce4..3addb84 100644
--- a/libandroidicu/include/unicode/uloc.h
+++ b/libandroidicu/include/unicode/uloc.h
@@ -371,7 +371,7 @@
  * @system
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_getDefault(void);
 
 /**
@@ -391,7 +391,7 @@
  * @system
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uloc_setDefault(const char* localeID,
         UErrorCode*       status);
 #endif  /* U_HIDE_SYSTEM_API */
@@ -408,7 +408,7 @@
  * than languageCapacity, the returned language code will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getLanguage(const char*    localeID,
          char* language,
          int32_t languageCapacity,
@@ -426,7 +426,7 @@
  * than scriptCapacity, the returned language code will be truncated.  
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getScript(const char*    localeID,
          char* script,
          int32_t scriptCapacity,
@@ -444,7 +444,7 @@
  * than countryCapacity, the returned country code will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getCountry(const char*    localeID,
         char* country,
         int32_t countryCapacity,
@@ -462,7 +462,7 @@
  * than variantCapacity, the returned variant code will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getVariant(const char*    localeID,
         char* variant,
         int32_t variantCapacity,
@@ -485,7 +485,7 @@
  * than nameCapacity, the returned full name will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getName(const char*    localeID,
          char* name,
          int32_t nameCapacity,
@@ -508,7 +508,7 @@
  * than nameCapacity, the returned full name will be truncated.  
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_canonicalize(const char*    localeID,
          char* name,
          int32_t nameCapacity,
@@ -521,7 +521,7 @@
  * @return language the ISO language code for localeID
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_getISO3Language(const char* localeID);
 
 
@@ -532,7 +532,7 @@
  * @return country the ISO country code for localeID
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_getISO3Country(const char* localeID);
 
 /**
@@ -546,26 +546,31 @@
  * @return country the Win32 LCID for localeID
  * @stable ICU 2.0
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 uloc_getLCID(const char* localeID);
 
 /**
  * Gets the language name suitable for display for the specified locale.
  *
  * @param locale the locale to get the ISO language code with
- * @param displayLocale Specifies the locale to be used to display the name.  In other words,
- *                 if the locale's language code is "en", passing Locale::getFrench() for
- *                 inLocale would result in "Anglais", while passing Locale::getGerman()
- *                 for inLocale would result in "Englisch".
+ * @param displayLocale Specifies the locale to be used to display the name. In
+ *                 other words, if the locale's language code is "en", passing
+ *                 Locale::getFrench() for inLocale would result in "Anglais",
+ *                 while passing Locale::getGerman() for inLocale would result
+ *                 in "Englisch".
  * @param language the displayable language code for localeID
- * @param languageCapacity the size of the language buffer to store the  
- * displayable language code with
- * @param status error information if retrieving the displayable language code failed
- * @return the actual buffer size needed for the displayable language code.  If it's greater 
- * than languageCapacity, the returned language code will be truncated.  
+ * @param languageCapacity the size of the language buffer to store the
+ *                 displayable language code with.
+ * @param status error information if retrieving the displayable language code
+ *                 failed. U_USING_DEFAULT_WARNING indicates that no data was
+ *                 found from the locale resources and a case canonicalized
+ *                 language code is placed into language as fallback.
+ * @return the actual buffer size needed for the displayable language code. If
+ *                 it's greater than languageCapacity, the returned language
+ *                 code will be truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayLanguage(const char* locale,
             const char* displayLocale,
             UChar* language,
@@ -575,20 +580,26 @@
 /**
  * Gets the script name suitable for display for the specified locale.
  *
- * @param locale the locale to get the displayable script code with. NULL may be used to specify the default.
- * @param displayLocale Specifies the locale to be used to display the name.  In other words,
- *                 if the locale's language code is "en", passing Locale::getFrench() for
- *                 inLocale would result in "", while passing Locale::getGerman()
- *                 for inLocale would result in "". NULL may be used to specify the default.
- * @param script the displayable script for the localeID
- * @param scriptCapacity the size of the script buffer to store the  
- * displayable script code with
- * @param status error information if retrieving the displayable script code failed
- * @return the actual buffer size needed for the displayable script code.  If it's greater 
- * than scriptCapacity, the returned displayable script code will be truncated.  
+ * @param locale the locale to get the displayable script code with. NULL may be
+ *                 used to specify the default.
+ * @param displayLocale Specifies the locale to be used to display the name. In
+ *                 other words, if the locale's language code is "en", passing
+ *                 Locale::getFrench() for inLocale would result in "", while
+ *                 passing Locale::getGerman() for inLocale would result in "".
+ *                 NULL may be used to specify the default.
+ * @param script the displayable script for the localeID.
+ * @param scriptCapacity the size of the script buffer to store the displayable
+ *                 script code with.
+ * @param status error information if retrieving the displayable script code
+ *                 failed. U_USING_DEFAULT_WARNING indicates that no data was
+ *                 found from the locale resources and a case canonicalized
+ *                 script code is placed into script as fallback.
+ * @return the actual buffer size needed for the displayable script code. If
+ *                 it's greater than scriptCapacity, the returned displayable
+ *                 script code will be truncated.
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayScript(const char* locale,
             const char* displayLocale,
             UChar* script,
@@ -597,23 +608,30 @@
 
 /**
  * Gets the country name suitable for display for the specified locale.
- * Warning: this is for the region part of a valid locale ID; it cannot just be the region code (like "FR").
- * To get the display name for a region alone, or for other options, use ULocaleDisplayNames instead.
+ * Warning: this is for the region part of a valid locale ID; it cannot just be
+ * the region code (like "FR"). To get the display name for a region alone, or
+ * for other options, use ULocaleDisplayNames instead.
  *
- * @param locale the locale to get the displayable country code with. NULL may be used to specify the default.
- * @param displayLocale Specifies the locale to be used to display the name.  In other words,
- *                 if the locale's language code is "en", passing Locale::getFrench() for
- *                 inLocale would result in "Anglais", while passing Locale::getGerman()
- *                 for inLocale would result in "Englisch". NULL may be used to specify the default.
- * @param country the displayable country code for localeID
- * @param countryCapacity the size of the country buffer to store the  
- * displayable country code with
- * @param status error information if retrieving the displayable country code failed
- * @return the actual buffer size needed for the displayable country code.  If it's greater 
- * than countryCapacity, the returned displayable country code will be truncated.  
+ * @param locale the locale to get the displayable country code with. NULL may
+ *                 be used to specify the default.
+ * @param displayLocale Specifies the locale to be used to display the name. In
+ *                 other words, if the locale's language code is "en", passing
+ *                 Locale::getFrench() for inLocale would result in "Anglais",
+ *                 while passing Locale::getGerman() for inLocale would result
+ *                 in "Englisch". NULL may be used to specify the default.
+ * @param country the displayable country code for localeID.
+ * @param countryCapacity the size of the country buffer to store the
+ *                 displayable country code with.
+ * @param status error information if retrieving the displayable country code
+ *                 failed. U_USING_DEFAULT_WARNING indicates that no data was
+ *                 found from the locale resources and a case canonicalized
+ *                 country code is placed into country as fallback.
+ * @return the actual buffer size needed for the displayable country code. If
+ *                 it's greater than countryCapacity, the returned displayable
+ *                 country code will be truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayCountry(const char* locale,
                        const char* displayLocale,
                        UChar* country,
@@ -624,20 +642,26 @@
 /**
  * Gets the variant name suitable for display for the specified locale.
  *
- * @param locale the locale to get the displayable variant code with. NULL may be used to specify the default.
- * @param displayLocale Specifies the locale to be used to display the name.  In other words,
- *                 if the locale's language code is "en", passing Locale::getFrench() for
- *                 inLocale would result in "Anglais", while passing Locale::getGerman()
- *                 for inLocale would result in "Englisch". NULL may be used to specify the default.
- * @param variant the displayable variant code for localeID
- * @param variantCapacity the size of the variant buffer to store the 
- * displayable variant code with
- * @param status error information if retrieving the displayable variant code failed
- * @return the actual buffer size needed for the displayable variant code.  If it's greater 
- * than variantCapacity, the returned displayable variant code will be truncated.  
+ * @param locale the locale to get the displayable variant code with. NULL may
+ *                 be used to specify the default.
+ * @param displayLocale Specifies the locale to be used to display the name. In
+ *                 other words, if the locale's language code is "en", passing
+ *                 Locale::getFrench() for inLocale would result in "Anglais",
+ *                 while passing Locale::getGerman() for inLocale would result
+ *                 in "Englisch". NULL may be used to specify the default.
+ * @param variant the displayable variant code for localeID.
+ * @param variantCapacity the size of the variant buffer to store the
+ *                 displayable variant code with.
+ * @param status error information if retrieving the displayable variant code
+ *                 failed. U_USING_DEFAULT_WARNING indicates that no data was
+ *                 found from the locale resources and a case canonicalized
+ *                 variant code is placed into variant as fallback.
+ * @return the actual buffer size needed for the displayable variant code. If
+ *                 it's greater than variantCapacity, the returned displayable
+ *                 variant code will be truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayVariant(const char* locale,
                        const char* displayLocale,
                        UChar* variant,
@@ -645,9 +669,9 @@
                        UErrorCode* status);
 
 /**
- * Gets the keyword name suitable for display for the specified locale.
- * E.g: for the locale string de_DE\@collation=PHONEBOOK, this API gets the display 
- * string for the keyword collation. 
+ * Gets the keyword name suitable for display for the specified locale. E.g:
+ * for the locale string de_DE\@collation=PHONEBOOK, this API gets the display
+ * string for the keyword collation.
  * Usage:
  * <code>
  *    UErrorCode status = U_ZERO_ERROR;
@@ -676,15 +700,17 @@
  *                          for inLocale would result in "Englisch". NULL may be used to specify the default.
  * @param dest              the buffer to which the displayable keyword should be written.
  * @param destCapacity      The size of the buffer (number of UChars). If it is 0, then
- *                          dest may be NULL and the function will only return the length of the 
+ *                          dest may be NULL and the function will only return the length of the
  *                          result without writing any of the result string (pre-flighting).
- * @param status            error information if retrieving the displayable string failed. 
+ * @param status            error information if retrieving the displayable string failed.
  *                          Should not be NULL and should not indicate failure on entry.
- * @return the actual buffer size needed for the displayable variant code.  
+ *                          U_USING_DEFAULT_WARNING indicates that no data was found from the locale
+ *                          resources and the keyword is placed into dest as fallback.
+ * @return the actual buffer size needed for the displayable variant code.
  * @see #uloc_openKeywords
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayKeyword(const char* keyword,
                        const char* displayLocale,
                        UChar* dest,
@@ -692,7 +718,7 @@
                        UErrorCode* status);
 /**
  * Gets the value of the keyword suitable for display for the specified locale.
- * E.g: for the locale string de_DE\@collation=PHONEBOOK, this API gets the display 
+ * E.g: for the locale string de_DE\@collation=PHONEBOOK, this API gets the display
  * string for PHONEBOOK, in the display locale, when "collation" is specified as the keyword.
  *
  * @param locale            The locale to get the displayable variant code with. NULL may be used to specify the default.
@@ -703,14 +729,16 @@
  *                          for inLocale would result in "Englisch". NULL may be used to specify the default.
  * @param dest              the buffer to which the displayable keyword should be written.
  * @param destCapacity      The size of the buffer (number of UChars). If it is 0, then
- *                          dest may be NULL and the function will only return the length of the 
+ *                          dest may be NULL and the function will only return the length of the
  *                          result without writing any of the result string (pre-flighting).
- * @param status            error information if retrieving the displayable string failed. 
+ * @param status            error information if retrieving the displayable string failed.
  *                          Should not be NULL and must not indicate failure on entry.
- * @return the actual buffer size needed for the displayable variant code.  
+ *                          U_USING_DEFAULT_WARNING indicates that no data was found from the locale
+ *                          resources and the value of the keyword is placed into dest as fallback.
+ * @return the actual buffer size needed for the displayable variant code.
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayKeywordValue(   const char* locale,
                                const char* keyword,
                                const char* displayLocale,
@@ -733,7 +761,7 @@
  * than maxResultSize, the returned displayable name will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayName(const char* localeID,
             const char* inLocaleID,
             UChar* result,
@@ -757,7 +785,7 @@
  * @return a specified locale name of all available locales
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_getAvailable(int32_t n);
 
 /**
@@ -766,21 +794,19 @@
  * @return the size of the locale list
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 uloc_countAvailable(void);
-
-#ifndef U_HIDE_DRAFT_API
+U_CAPI int32_t U_EXPORT2 uloc_countAvailable(void);
 
 /**
  * Types for uloc_getAvailableByType and uloc_countAvailableByType.
  *
- * @draft ICU 65
+ * @stable ICU 65
  */
 typedef enum ULocAvailableType {
   /**
    * Locales that return data when passed to ICU APIs,
    * but not including legacy or alias locales.
    *
-   * @draft ICU 65
+   * @stable ICU 65
    */
   ULOC_AVAILABLE_DEFAULT,
 
@@ -798,7 +824,7 @@
    * ULOC_AVAILABLE_DEFAULT. To get both sets at the same time, use
    * ULOC_AVAILABLE_WITH_LEGACY_ALIASES.
    *
-   * @draft ICU 65
+   * @stable ICU 65
    */
   ULOC_AVAILABLE_ONLY_LEGACY_ALIASES,
 
@@ -806,7 +832,7 @@
    * The union of the locales in ULOC_AVAILABLE_DEFAULT and
    * ULOC_AVAILABLE_ONLY_LEGACY_ALIAS.
    *
-   * @draft ICU 65
+   * @stable ICU 65
    */
   ULOC_AVAILABLE_WITH_LEGACY_ALIASES,
 
@@ -827,13 +853,11 @@
  * @param type Type choice from ULocAvailableType.
  * @param status Set if an error occurred.
  * @return a UEnumeration owned by the caller, or nullptr on failure.
- * @draft ICU 65
+ * @stable ICU 65
  */
-U_DRAFT UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uloc_openAvailableByType(ULocAvailableType type, UErrorCode* status);
 
-#endif // U_HIDE_DRAFT_API
-
 /**
  *
  * Gets a list of all available 2-letter language codes defined in ISO 639,
@@ -845,7 +869,7 @@
  * @return a list of all available language codes
  * @stable ICU 2.0
  */
-U_STABLE const char* const* U_EXPORT2
+U_CAPI const char* const* U_EXPORT2
 uloc_getISOLanguages(void);
 
 /**
@@ -857,7 +881,7 @@
  * @return a list of all available country codes
  * @stable ICU 2.0
  */
-U_STABLE const char* const* U_EXPORT2
+U_CAPI const char* const* U_EXPORT2
 uloc_getISOCountries(void);
 
 /**
@@ -873,7 +897,7 @@
  * @return The length of the parent locale ID.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getParent(const char*    localeID,
                  char* parent,
                  int32_t parentCapacity,
@@ -904,7 +928,7 @@
  * than nameCapacity, the returned full name will be truncated.  
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getBaseName(const char*    localeID,
          char* name,
          int32_t nameCapacity,
@@ -919,7 +943,7 @@
  * @return enumeration of keywords or NULL if there are no keywords.
  * @stable ICU 2.8
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uloc_openKeywords(const char* localeID,
                         UErrorCode* status);
 
@@ -936,7 +960,7 @@
  * @return the length of keyword value
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getKeywordValue(const char* localeID,
                      const char* keywordName,
                      char* buffer, int32_t bufferCapacity,
@@ -973,7 +997,7 @@
  * @see uloc_getKeywordValue
  * @stable ICU 3.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_setKeywordValue(const char* keywordName,
                      const char* keywordValue,
                      char* buffer, int32_t bufferCapacity,
@@ -982,18 +1006,18 @@
 /**
  * Returns whether the locale's script is written right-to-left.
  * If there is no script subtag, then the likely script is used, see uloc_addLikelySubtags().
- * If no likely script is known, then FALSE is returned.
+ * If no likely script is known, then false is returned.
  *
  * A script is right-to-left according to the CLDR script metadata
  * which corresponds to whether the script's letters have Bidi_Class=R or AL.
  *
- * Returns TRUE for "ar" and "en-Hebr", FALSE for "zh" and "fa-Cyrl".
+ * Returns true for "ar" and "en-Hebr", false for "zh" and "fa-Cyrl".
  *
  * @param locale input locale ID
- * @return TRUE if the locale's script is written right-to-left
+ * @return true if the locale's script is written right-to-left
  * @stable ICU 54
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uloc_isRightToLeft(const char *locale);
 
 /**
@@ -1017,7 +1041,7 @@
  * @return an enum indicating the layout orientation for characters.
  * @stable ICU 4.0
  */
-U_STABLE ULayoutType U_EXPORT2
+U_CAPI ULayoutType U_EXPORT2
 uloc_getCharacterOrientation(const char* localeId,
                              UErrorCode *status);
 
@@ -1029,7 +1053,7 @@
  * @return an enum indicating the layout orientation for lines.
  * @stable ICU 4.0
  */
-U_STABLE ULayoutType U_EXPORT2
+U_CAPI ULayoutType U_EXPORT2
 uloc_getLineOrientation(const char* localeId,
                         UErrorCode *status);
 
@@ -1076,7 +1100,7 @@
  * @return length needed for the locale.
  * @stable ICU 3.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_acceptLanguageFromHTTP(char *result, int32_t resultAvailable,
                             UAcceptResult *outResult,
                             const char *httpAcceptLanguage,
@@ -1101,7 +1125,7 @@
  * @return length needed for the locale.
  * @stable ICU 3.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_acceptLanguage(char *result, int32_t resultAvailable, 
                     UAcceptResult *outResult, const char **acceptList,
                     int32_t acceptListCount,
@@ -1121,7 +1145,7 @@
  * @return actual the actual size of the locale ID, not including NUL-termination 
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getLocaleForLCID(uint32_t hostID, char *locale, int32_t localeCapacity,
                     UErrorCode *status);
 
@@ -1159,7 +1183,7 @@
  * On error, the return value is -1.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_addLikelySubtags(const char*    localeID,
          char* maximizedLocaleID,
          int32_t maximizedLocaleIDCapacity,
@@ -1199,7 +1223,7 @@
  * On error, the return value is -1.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_minimizeSubtags(const char*    localeID,
          char* minimizedLocaleID,
          int32_t minimizedLocaleIDCapacity,
@@ -1209,14 +1233,18 @@
  * Returns a locale ID for the specified BCP47 language tag string.
  * If the specified language tag contains any ill-formed subtags,
  * the first such subtag and all following subtags are ignored.
- * <p> 
- * This implements the 'Language-Tag' production of BCP47, and so
- * supports grandfathered (regular and irregular) as well as private
- * use language tags.  Private use tags are represented as 'x-whatever',
- * and grandfathered tags are converted to their canonical replacements
- * where they exist.  Note that a few grandfathered tags have no modern
- * replacement, these will be converted using the fallback described in
+ * <p>
+ * This implements the 'Language-Tag' production of BCP 47, and so
+ * supports legacy language tags (marked as “Type: grandfathered” in BCP 47)
+ * (regular and irregular) as well as private use language tags.
+ *
+ * Private use tags are represented as 'x-whatever',
+ * and legacy tags are converted to their canonical replacements where they exist.
+ *
+ * Note that a few legacy tags have no modern replacement;
+ * these will be converted using the fallback described in
  * the first paragraph, so some information might be lost.
+ *
  * @param langtag   the input BCP47 language tag.
  * @param localeID  the output buffer receiving a locale ID for the
  *                  specified BCP47 language tag.
@@ -1228,7 +1256,7 @@
  * @return          the length of the locale ID.
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_forLanguageTag(const char* langtag,
                     char* localeID,
                     int32_t localeIDCapacity,
@@ -1238,10 +1266,10 @@
 /**
  * Returns a well-formed language tag for this locale ID. 
  * <p> 
- * <b>Note</b>: When <code>strict</code> is FALSE, any locale
+ * <b>Note</b>: When <code>strict</code> is false, any locale
  * fields which do not satisfy the BCP47 syntax requirement will
  * be omitted from the result.  When <code>strict</code> is
- * TRUE, this function sets U_ILLEGAL_ARGUMENT_ERROR to the
+ * true, this function sets U_ILLEGAL_ARGUMENT_ERROR to the
  * <code>err</code> if any locale fields do not satisfy the
  * BCP47 syntax requirement.
  * @param localeID  the input locale ID
@@ -1256,7 +1284,7 @@
  * @return          The length of the BCP47 language tag.
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_toLanguageTag(const char* localeID,
                    char* langtag,
                    int32_t langtagCapacity,
@@ -1284,7 +1312,7 @@
  * @see uloc_toLegacyKey
  * @stable ICU 54
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_toUnicodeLocaleKey(const char* keyword);
 
 /**
@@ -1315,7 +1343,7 @@
  * @see uloc_toLegacyType
  * @stable ICU 54
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_toUnicodeLocaleType(const char* keyword, const char* value);
 
 /**
@@ -1330,7 +1358,7 @@
  * @see toUnicodeLocaleKey
  * @stable ICU 54
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_toLegacyKey(const char* keyword);
 
 /**
@@ -1359,7 +1387,7 @@
  * @see toUnicodeLocaleType
  * @stable ICU 54
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_toLegacyType(const char* keyword, const char* value);
 
 #endif /*_ULOC*/
diff --git a/libandroidicu/include/unicode/ulocdata.h b/libandroidicu/include/unicode/ulocdata.h
index 834be98..3977743 100644
--- a/libandroidicu/include/unicode/ulocdata.h
+++ b/libandroidicu/include/unicode/ulocdata.h
@@ -90,7 +90,7 @@
  * @param status    Pointer to error status code.
  * @stable ICU 3.4
  */
-U_STABLE ULocaleData* U_EXPORT2
+U_CAPI ULocaleData* U_EXPORT2
 ulocdata_open(const char *localeID, UErrorCode *status);
 
 /**
@@ -99,7 +99,7 @@
  * @param uld       The locale data object to close
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocdata_close(ULocaleData *uld);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -132,7 +132,7 @@
  * @param setting   Value of the "no substitute" attribute.
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocdata_setNoSubstitute(ULocaleData *uld, UBool setting);
 
 /**
@@ -146,7 +146,7 @@
  * @return UBool    Value of the "no substitute" attribute.
  * @stable ICU 3.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ulocdata_getNoSubstitute(ULocaleData *uld);
 
 /**
@@ -176,7 +176,7 @@
  *                  In case of error, NULL is returned.
  * @stable ICU 3.4
  */
-U_STABLE USet* U_EXPORT2
+U_CAPI USet* U_EXPORT2
 ulocdata_getExemplarSet(ULocaleData *uld, USet *fillIn,
                         uint32_t options, ULocaleDataExemplarSetType extype, UErrorCode *status);
 
@@ -193,7 +193,7 @@
  *                      the output was truncated.
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ulocdata_getDelimiter(ULocaleData *uld, ULocaleDataDelimiterType type, UChar *result, int32_t resultLength, UErrorCode *status);
 
 /**
@@ -223,7 +223,7 @@
  * @return UMeasurementSystem the measurement system used in the locale.
  * @stable ICU 2.8
  */
-U_STABLE UMeasurementSystem U_EXPORT2
+U_CAPI UMeasurementSystem U_EXPORT2
 ulocdata_getMeasurementSystem(const char *localeID, UErrorCode *status);
 
 /**
@@ -242,7 +242,7 @@
  *                      which must not indicate a failure before the function call.
  * @stable ICU 2.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocdata_getPaperSize(const char *localeID, int32_t *height, int32_t *width, UErrorCode *status);
 
 /**
@@ -251,7 +251,7 @@
  * @param status error code - could be U_MISSING_RESOURCE_ERROR if the version was not found.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocdata_getCLDRVersion(UVersionInfo versionArray, UErrorCode *status);
 
 /**
@@ -269,7 +269,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ulocdata_getLocaleDisplayPattern(ULocaleData *uld,
                                  UChar *pattern,
                                  int32_t patternCapacity,
@@ -291,7 +291,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ulocdata_getLocaleSeparator(ULocaleData *uld,
                             UChar *separator,
                             int32_t separatorCapacity,
diff --git a/libandroidicu/include/unicode/umachine.h b/libandroidicu/include/unicode/umachine.h
index 1d85855..09c887c 100644
--- a/libandroidicu/include/unicode/umachine.h
+++ b/libandroidicu/include/unicode/umachine.h
@@ -49,12 +49,13 @@
  * ANSI C headers:
  * stddef.h defines wchar_t
  */
+#include <stdbool.h>
 #include <stddef.h>
 
 /*==========================================================================*/
-/* For C wrappers, we use the symbol U_STABLE.                                */
+/* For C wrappers, we use the symbol U_CAPI.                                */
 /* This works properly if the includer is C or C++.                         */
-/* Functions are declared   U_STABLE return-type U_EXPORT2 function-name()... */
+/* Functions are declared   U_CAPI return-type U_EXPORT2 function-name()... */
 /*==========================================================================*/
 
 /**
@@ -107,15 +108,15 @@
 
 /** This is used to declare a function as a public ICU C API @stable ICU 2.0*/
 #define U_CAPI U_CFUNC U_EXPORT
-/** This is used to declare a function as a stable public ICU C API*/
+/** Obsolete/same as U_CAPI; was used to declare a function as a stable public ICU C API*/
 #define U_STABLE U_CAPI
-/** This is used to declare a function as a draft public ICU C API  */
+/** Obsolete/same as U_CAPI; was used to declare a function as a draft public ICU C API  */
 #define U_DRAFT  U_CAPI
 /** This is used to declare a function as a deprecated public ICU C API  */
 #define U_DEPRECATED U_CAPI U_ATTRIBUTE_DEPRECATED
-/** This is used to declare a function as an obsolete public ICU C API  */
+/** Obsolete/same as U_CAPI; was used to declare a function as an obsolete public ICU C API  */
 #define U_OBSOLETE U_CAPI
-/** This is used to declare a function as an internal ICU C API  */
+/** Obsolete/same as U_CAPI; was used to declare a function as an internal ICU C API  */
 #define U_INTERNAL U_CAPI
 
 /**
@@ -170,11 +171,11 @@
 
 /**
  * \def UPRV_BLOCK_MACRO_END
- * Defined as "while (FALSE)" by default.
+ * Defined as "while (false)" by default.
  * @internal
  */
 #ifndef UPRV_BLOCK_MACRO_END
-#define UPRV_BLOCK_MACRO_END while (FALSE)
+#define UPRV_BLOCK_MACRO_END while (false)
 #endif
 
 /*==========================================================================*/
@@ -257,18 +258,59 @@
 /* Boolean data type                                                        */
 /*==========================================================================*/
 
-/** The ICU boolean type @stable ICU 2.0 */
+/**
+ * The ICU boolean type, a signed-byte integer.
+ * ICU-specific for historical reasons: The C and C++ standards used to not define type bool.
+ * Also provides a fixed type definition, as opposed to
+ * type bool whose details (e.g., sizeof) may vary by compiler and between C and C++.
+ *
+ * @stable ICU 2.0
+ */
 typedef int8_t UBool;
 
+/**
+ * \def U_DEFINE_FALSE_AND_TRUE
+ * Normally turns off defining macros FALSE=0 & TRUE=1 in public ICU headers.
+ * These obsolete macros sometimes break compilation of other code that
+ * defines enum constants or similar with these names.
+ * C++ has long defined bool/false/true.
+ * C99 also added definitions for these, although as macros; see stdbool.h.
+ *
+ * You may transitionally define U_DEFINE_FALSE_AND_TRUE=1 if you need time to migrate code.
+ *
+ * @internal ICU 68
+ */
+#ifdef U_DEFINE_FALSE_AND_TRUE
+    // Use the predefined value.
+#elif defined(U_COMBINED_IMPLEMENTATION) || \
+        defined(U_COMMON_IMPLEMENTATION) || defined(U_I18N_IMPLEMENTATION) || \
+        defined(U_IO_IMPLEMENTATION) || defined(U_LAYOUTEX_IMPLEMENTATION) || \
+        defined(U_TOOLUTIL_IMPLEMENTATION)
+    // Inside ICU: Keep FALSE & TRUE available.
+#   define U_DEFINE_FALSE_AND_TRUE 1
+#else
+    // Outside ICU: Avoid collision with non-macro definitions of FALSE & TRUE.
+#   define U_DEFINE_FALSE_AND_TRUE 0
+#endif
+
+#if U_DEFINE_FALSE_AND_TRUE || defined(U_IN_DOXYGEN)
 #ifndef TRUE
-/** The TRUE value of a UBool @stable ICU 2.0 */
+/**
+ * The TRUE value of a UBool.
+ *
+ * @deprecated ICU 68 Use standard "true" instead.
+ */
 #   define TRUE  1
 #endif
 #ifndef FALSE
-/** The FALSE value of a UBool @stable ICU 2.0 */
+/**
+ * The FALSE value of a UBool.
+ *
+ * @deprecated ICU 68 Use standard "false" instead.
+ */
 #   define FALSE 0
 #endif
-
+#endif  // U_DEFINE_FALSE_AND_TRUE
 
 /*==========================================================================*/
 /* Unicode data types                                                       */
diff --git a/libandroidicu/include/unicode/umsg.h b/libandroidicu/include/unicode/umsg.h
index 3668234..db660db 100644
--- a/libandroidicu/include/unicode/umsg.h
+++ b/libandroidicu/include/unicode/umsg.h
@@ -178,7 +178,7 @@
  * @see u_parseMessage
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 u_formatMessage(const char  *locale,
                  const UChar *pattern,
                 int32_t     patternLength,
@@ -205,7 +205,7 @@
  * @see u_parseMessage
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 u_vformatMessage(   const char  *locale,
                     const UChar *pattern,
                     int32_t     patternLength,
@@ -230,7 +230,7 @@
  * @see u_formatMessage
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_parseMessage( const char   *locale,
                 const UChar  *pattern,
                 int32_t      patternLength,
@@ -255,7 +255,7 @@
  * @see u_formatMessage
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_vparseMessage(const char  *locale,
                 const UChar *pattern,
                 int32_t     patternLength,
@@ -284,7 +284,7 @@
  * @see u_parseMessage
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 u_formatMessageWithError(   const char    *locale,
                             const UChar   *pattern,
                             int32_t       patternLength,
@@ -313,7 +313,7 @@
  * output was truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 u_vformatMessageWithError(  const char   *locale,
                             const UChar  *pattern,
                             int32_t      patternLength,
@@ -341,7 +341,7 @@
  * @see u_formatMessage
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_parseMessageWithError(const char  *locale,
                         const UChar *pattern,
                         int32_t     patternLength,
@@ -369,7 +369,7 @@
  * @see u_formatMessage
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_vparseMessageWithError(const char  *locale,
                          const UChar *pattern,
                          int32_t     patternLength,
@@ -399,7 +399,7 @@
  *                      messages, or 0 if an error occurred. 
  * @stable ICU 2.0
  */
-U_STABLE UMessageFormat* U_EXPORT2 
+U_CAPI UMessageFormat* U_EXPORT2 
 umsg_open(  const UChar     *pattern,
             int32_t         patternLength,
             const  char     *locale,
@@ -412,7 +412,7 @@
  * @param format The formatter to close.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 umsg_close(UMessageFormat* format);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -442,7 +442,7 @@
  * @return A pointer to a UDateFormat identical to fmt.
  * @stable ICU 2.0
  */
-U_STABLE UMessageFormat U_EXPORT2 
+U_CAPI UMessageFormat U_EXPORT2 
 umsg_clone(const UMessageFormat *fmt,
            UErrorCode *status);
 
@@ -453,7 +453,7 @@
  * @param locale The locale the formatter should use.
  * @stable ICU 2.0
  */
-U_STABLE void  U_EXPORT2 
+U_CAPI void  U_EXPORT2 
 umsg_setLocale(UMessageFormat *fmt,
                const char* locale);
 
@@ -464,7 +464,7 @@
  * @return the locale.
  * @stable ICU 2.0
  */
-U_STABLE const char*  U_EXPORT2 
+U_CAPI const char*  U_EXPORT2 
 umsg_getLocale(const UMessageFormat *fmt);
 
 /**
@@ -479,7 +479,7 @@
  *                      set to a failure result.
  * @stable ICU 2.0
  */
-U_STABLE void  U_EXPORT2 
+U_CAPI void  U_EXPORT2 
 umsg_applyPattern( UMessageFormat *fmt,
                    const UChar* pattern,
                    int32_t patternLength,
@@ -497,7 +497,7 @@
  * @return the pattern of the format
  * @stable ICU 2.0
  */
-U_STABLE int32_t  U_EXPORT2 
+U_CAPI int32_t  U_EXPORT2 
 umsg_toPattern(const UMessageFormat *fmt,
                UChar* result, 
                int32_t resultLength,
@@ -518,7 +518,7 @@
  *                      the output was truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 umsg_format(    const UMessageFormat *fmt,
                 UChar          *result,
                 int32_t        resultLength,
@@ -540,7 +540,7 @@
  *                     the output was truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 umsg_vformat(   const UMessageFormat *fmt,
                 UChar          *result,
                 int32_t        resultLength,
@@ -561,7 +561,7 @@
  *                      specified in pattern.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 umsg_parse( const UMessageFormat *fmt,
             const UChar    *source,
             int32_t        sourceLength,
@@ -584,7 +584,7 @@
  * @see u_formatMessage
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 umsg_vparse(const UMessageFormat *fmt,
             const UChar    *source,
             int32_t        sourceLength,
@@ -616,7 +616,7 @@
  *        not
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 umsg_autoQuoteApostrophe(const UChar* pattern, 
                          int32_t patternLength,
                          UChar* dest,
diff --git a/libandroidicu/include/unicode/unorm.h b/libandroidicu/include/unicode/unorm.h
index 09dd366..c3c5758 100644
--- a/libandroidicu/include/unicode/unorm.h
+++ b/libandroidicu/include/unicode/unorm.h
@@ -274,7 +274,7 @@
  * never a "maybe".
  * For NFD, NFKD, and FCD, both functions work exactly the same.
  * For NFC and NFKC where quickCheck may return "maybe", this function will
- * perform further tests to arrive at a TRUE/FALSE result.
+ * perform further tests to arrive at a true/false result.
  *
  * @param src        String that is to be tested if it is in a normalization format.
  * @param srcLength  Length of source to test, or -1 if NUL-terminated.
@@ -358,10 +358,10 @@
  * It is useful for operations like a normalizing transliterator, where one would
  * not want to replace a piece of text if it is not modified.
  *
- * If doNormalize==TRUE and pNeededToNormalize!=NULL then *pNeeded... is set TRUE
+ * If doNormalize==true and pNeededToNormalize!=NULL then *pNeeded... is set true
  * if the normalization was necessary.
  *
- * If doNormalize==FALSE then *pNeededToNormalize will be set to FALSE.
+ * If doNormalize==false then *pNeededToNormalize will be set to false.
  *
  * If the buffer overflows, then *pNeededToNormalize will be undefined;
  * essentially, whenever U_FAILURE is true (like in buffer overflows), this result
@@ -373,11 +373,11 @@
  * @param mode The normalization mode.
  * @param options The normalization options, ORed together (0 for no options).
  * @param doNormalize Indicates if the source text up to the next boundary
- *                    is to be normalized (TRUE) or just copied (FALSE).
+ *                    is to be normalized (true) or just copied (false).
  * @param pNeededToNormalize Output flag indicating if the normalization resulted in
  *                           different text from the input.
  *                           Not defined if an error occurs including buffer overflow.
- *                           Always FALSE if !doNormalize.
+ *                           Always false if !doNormalize.
  * @param pErrorCode ICU error code in/out parameter.
  *                   Must fulfill U_SUCCESS before the function call.
  * @return Length of output (number of UChars) when successful or buffer overflow.
@@ -406,11 +406,11 @@
  * @param mode The normalization mode.
  * @param options The normalization options, ORed together (0 for no options).
  * @param doNormalize Indicates if the source text up to the next boundary
- *                    is to be normalized (TRUE) or just copied (FALSE).
+ *                    is to be normalized (true) or just copied (false).
  * @param pNeededToNormalize Output flag indicating if the normalization resulted in
  *                           different text from the input.
  *                           Not defined if an error occurs including buffer overflow.
- *                           Always FALSE if !doNormalize.
+ *                           Always false if !doNormalize.
  * @param pErrorCode ICU error code in/out parameter.
  *                   Must fulfill U_SUCCESS before the function call.
  * @return Length of output (number of UChars) when successful or buffer overflow.
diff --git a/libandroidicu/include/unicode/unorm2.h b/libandroidicu/include/unicode/unorm2.h
index d18d039..24417b7 100644
--- a/libandroidicu/include/unicode/unorm2.h
+++ b/libandroidicu/include/unicode/unorm2.h
@@ -135,7 +135,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFCInstance(UErrorCode *pErrorCode);
 
 /**
@@ -149,7 +149,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFDInstance(UErrorCode *pErrorCode);
 
 /**
@@ -163,7 +163,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFKCInstance(UErrorCode *pErrorCode);
 
 /**
@@ -177,7 +177,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFKDInstance(UErrorCode *pErrorCode);
 
 /**
@@ -191,7 +191,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFKCCasefoldInstance(UErrorCode *pErrorCode);
 
 /**
@@ -215,7 +215,7 @@
  * @return the requested UNormalizer2, if successful
  * @stable ICU 4.4
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getInstance(const char *packageName,
                    const char *name,
                    UNormalization2Mode mode,
@@ -236,7 +236,7 @@
  * @return the requested UNormalizer2, if successful
  * @stable ICU 4.4
  */
-U_STABLE UNormalizer2 * U_EXPORT2
+U_CAPI UNormalizer2 * U_EXPORT2
 unorm2_openFiltered(const UNormalizer2 *norm2, const USet *filterSet, UErrorCode *pErrorCode);
 
 /**
@@ -245,7 +245,7 @@
  * @param norm2 UNormalizer2 instance to be closed
  * @stable ICU 4.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unorm2_close(UNormalizer2 *norm2);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -283,7 +283,7 @@
  * @return dest
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_normalize(const UNormalizer2 *norm2,
                  const UChar *src, int32_t length,
                  UChar *dest, int32_t capacity,
@@ -306,7 +306,7 @@
  * @return first
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_normalizeSecondAndAppend(const UNormalizer2 *norm2,
                                 UChar *first, int32_t firstLength, int32_t firstCapacity,
                                 const UChar *second, int32_t secondLength,
@@ -329,7 +329,7 @@
  * @return first
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_append(const UNormalizer2 *norm2,
               UChar *first, int32_t firstLength, int32_t firstCapacity,
               const UChar *second, int32_t secondLength,
@@ -354,7 +354,7 @@
  * @return the non-negative length of c's decomposition, if there is one; otherwise a negative value
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_getDecomposition(const UNormalizer2 *norm2,
                         UChar32 c, UChar *decomposition, int32_t capacity,
                         UErrorCode *pErrorCode);
@@ -388,7 +388,7 @@
  * @return the non-negative length of c's raw decomposition, if there is one; otherwise a negative value
  * @stable ICU 49
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_getRawDecomposition(const UNormalizer2 *norm2,
                            UChar32 c, UChar *decomposition, int32_t capacity,
                            UErrorCode *pErrorCode);
@@ -408,7 +408,7 @@
  * @return The non-negative composite code point if there is one; otherwise a negative value.
  * @stable ICU 49
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 unorm2_composePair(const UNormalizer2 *norm2, UChar32 a, UChar32 b);
 
 /**
@@ -420,7 +420,7 @@
  * @return c's combining class
  * @stable ICU 49
  */
-U_STABLE uint8_t U_EXPORT2
+U_CAPI uint8_t U_EXPORT2
 unorm2_getCombiningClass(const UNormalizer2 *norm2, UChar32 c);
 
 /**
@@ -436,10 +436,10 @@
  *                   pass the U_SUCCESS() test, or else the function returns
  *                   immediately. Check for U_FAILURE() on output or use with
  *                   function chaining. (See User Guide for details.)
- * @return TRUE if s is normalized
+ * @return true if s is normalized
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unorm2_isNormalized(const UNormalizer2 *norm2,
                     const UChar *s, int32_t length,
                     UErrorCode *pErrorCode);
@@ -461,7 +461,7 @@
  * @return UNormalizationCheckResult
  * @stable ICU 4.4
  */
-U_STABLE UNormalizationCheckResult U_EXPORT2
+U_CAPI UNormalizationCheckResult U_EXPORT2
 unorm2_quickCheck(const UNormalizer2 *norm2,
                   const UChar *s, int32_t length,
                   UErrorCode *pErrorCode);
@@ -490,7 +490,7 @@
  * @return "yes" span end index
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_spanQuickCheckYes(const UNormalizer2 *norm2,
                          const UChar *s, int32_t length,
                          UErrorCode *pErrorCode);
@@ -501,10 +501,10 @@
  * For details see the Normalizer2 base class documentation.
  * @param norm2 UNormalizer2 instance
  * @param c character to test
- * @return TRUE if c has a normalization boundary before it
+ * @return true if c has a normalization boundary before it
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unorm2_hasBoundaryBefore(const UNormalizer2 *norm2, UChar32 c);
 
 /**
@@ -513,10 +513,10 @@
  * For details see the Normalizer2 base class documentation.
  * @param norm2 UNormalizer2 instance
  * @param c character to test
- * @return TRUE if c has a normalization boundary after it
+ * @return true if c has a normalization boundary after it
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unorm2_hasBoundaryAfter(const UNormalizer2 *norm2, UChar32 c);
 
 /**
@@ -524,10 +524,10 @@
  * For details see the Normalizer2 base class documentation.
  * @param norm2 UNormalizer2 instance
  * @param c character to test
- * @return TRUE if c is normalization-inert
+ * @return true if c is normalization-inert
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unorm2_isInert(const UNormalizer2 *norm2, UChar32 c);
 
 /**
@@ -596,7 +596,7 @@
  *
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm_compare(const UChar *s1, int32_t length1,
               const UChar *s2, int32_t length2,
               uint32_t options,
diff --git a/libandroidicu/include/unicode/unum.h b/libandroidicu/include/unicode/unum.h
index b03e846..68207a9 100644
--- a/libandroidicu/include/unicode/unum.h
+++ b/libandroidicu/include/unicode/unum.h
@@ -275,7 +275,7 @@
  *
  * <p>
  * For more detail on rounding modes, see:
- * http://userguide.icu-project.org/formatparse/numbers/rounding-modes
+ * https://unicode-org.github.io/icu/userguide/format_parse/numbers/rounding-modes
  *
  * @stable ICU 2.0
  */
@@ -395,6 +395,30 @@
 } UNumberFormatFields;
 
 
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Selectors with special numeric values to use locale default minimum grouping
+ * digits for the DecimalFormat/UNumberFormat setMinimumGroupingDigits method.
+ * Do not use these constants with the [U]NumberFormatter API.
+ *
+ * @draft ICU 68
+ */
+typedef enum UNumberFormatMinimumGroupingDigits {
+    /**
+     * Display grouping using the default strategy for all locales.
+     * @draft ICU 68
+     */
+    UNUM_MINIMUM_GROUPING_DIGITS_AUTO = -2,
+    /**
+     * Display grouping using locale defaults, except do not show grouping on
+     * values smaller than 10000 (such that there is a minimum of two digits
+     * before the first separator).
+     * @draft ICU 68
+     */
+    UNUM_MINIMUM_GROUPING_DIGITS_MIN2 = -3,
+} UNumberFormatMinimumGroupingDigits;
+#endif  // U_HIDE_DRAFT_API
+
 /**
  * Create and return a new UNumberFormat for formatting and parsing
  * numbers.  A UNumberFormat may be used to format numbers by calling
@@ -432,7 +456,7 @@
  * @see DecimalFormat
  * @stable ICU 2.0
  */
-U_STABLE UNumberFormat* U_EXPORT2 
+U_CAPI UNumberFormat* U_EXPORT2 
 unum_open(  UNumberFormatStyle    style,
             const    UChar*    pattern,
             int32_t            patternLength,
@@ -447,7 +471,7 @@
 * @param fmt The formatter to close.
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 unum_close(UNumberFormat* fmt);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -477,7 +501,7 @@
  * @return A pointer to a UNumberFormat identical to fmt.
  * @stable ICU 2.0
  */
-U_STABLE UNumberFormat* U_EXPORT2 
+U_CAPI UNumberFormat* U_EXPORT2 
 unum_clone(const UNumberFormat *fmt,
        UErrorCode *status);
 
@@ -505,7 +529,7 @@
 * @see UFieldPosition
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_format(    const    UNumberFormat*    fmt,
         int32_t            number,
         UChar*            result,
@@ -537,7 +561,7 @@
 * @see UFieldPosition
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_formatInt64(const UNumberFormat *fmt,
         int64_t         number,
         UChar*          result,
@@ -569,7 +593,7 @@
 * @see UFieldPosition
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_formatDouble(    const    UNumberFormat*  fmt,
             double          number,
             UChar*          result,
@@ -619,7 +643,7 @@
 * @see UNumberFormatFields
 * @stable ICU 59
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unum_formatDoubleForFields(const UNumberFormat* format,
                            double number,
                            UChar* result,
@@ -656,7 +680,7 @@
 * @see UFieldPosition
 * @stable ICU 4.4 
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_formatDecimal(    const    UNumberFormat*  fmt,
             const char *    number,
             int32_t         length,
@@ -689,7 +713,7 @@
  * @see UFieldPosition
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unum_formatDoubleCurrency(const UNumberFormat* fmt,
                           double number,
                           UChar* currency,
@@ -718,7 +742,7 @@
  * @see unum_parseToUFormattable
  * @stable ICU 52
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unum_formatUFormattable(const UNumberFormat* fmt,
                         const UFormattable *number,
                         UChar *result,
@@ -745,7 +769,7 @@
 * @see unum_formatDouble
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_parse(    const   UNumberFormat*  fmt,
         const   UChar*          text,
         int32_t         textLength,
@@ -771,7 +795,7 @@
 * @see unum_formatDouble
 * @stable ICU 2.8
 */
-U_STABLE int64_t U_EXPORT2 
+U_CAPI int64_t U_EXPORT2 
 unum_parseInt64(const UNumberFormat*  fmt,
         const UChar*  text,
         int32_t       textLength,
@@ -797,7 +821,7 @@
 * @see unum_formatDouble
 * @stable ICU 2.0
 */
-U_STABLE double U_EXPORT2 
+U_CAPI double U_EXPORT2 
 unum_parseDouble(    const   UNumberFormat*  fmt,
             const   UChar*          text,
             int32_t         textLength,
@@ -832,7 +856,7 @@
 * @see unum_formatDouble
 * @stable ICU 4.4
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_parseDecimal(const   UNumberFormat*  fmt,
                  const   UChar*          text,
                          int32_t         textLength,
@@ -860,7 +884,7 @@
  * @see unum_formatDoubleCurrency
  * @stable ICU 3.0
  */
-U_STABLE double U_EXPORT2
+U_CAPI double U_EXPORT2
 unum_parseDoubleCurrency(const UNumberFormat* fmt,
                          const UChar* text,
                          int32_t textLength,
@@ -888,7 +912,7 @@
  * @see ufmt_close
  * @stable ICU 52
  */
-U_STABLE UFormattable* U_EXPORT2
+U_CAPI UFormattable* U_EXPORT2
 unum_parseToUFormattable(const UNumberFormat* fmt,
                          UFormattable *result,
                          const UChar* text,
@@ -901,7 +925,7 @@
  * on a DecimalFormat, other formats return U_UNSUPPORTED_ERROR
  * in the status.
  * @param format The formatter to set.
- * @param localized TRUE if the pattern is localized, FALSE otherwise.
+ * @param localized true if the pattern is localized, false otherwise.
  * @param pattern The new pattern
  * @param patternLength The length of pattern, or -1 if null-terminated.
  * @param parseError A pointer to UParseError to receive information
@@ -912,7 +936,7 @@
  * @see DecimalFormat
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 unum_applyPattern(          UNumberFormat  *format,
                             UBool          localized,
                     const   UChar          *pattern,
@@ -931,7 +955,7 @@
 * @see unum_countAvailable
 * @stable ICU 2.0
 */
-U_STABLE const char* U_EXPORT2 
+U_CAPI const char* U_EXPORT2 
 unum_getAvailable(int32_t localeIndex);
 
 /**
@@ -943,7 +967,7 @@
 * @see unum_getAvailable
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_countAvailable(void);
 
 #if UCONFIG_HAVE_PARSEALLINPUT
@@ -1124,7 +1148,7 @@
 * @see unum_setTextAttribute
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_getAttribute(const UNumberFormat*          fmt,
           UNumberFormatAttribute  attr);
 
@@ -1147,7 +1171,7 @@
 * @see unum_setTextAttribute
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 unum_setAttribute(    UNumberFormat*          fmt,
             UNumberFormatAttribute  attr,
             int32_t                 newValue);
@@ -1167,7 +1191,7 @@
 * @see unum_setTextAttribute
 * @stable ICU 2.0
 */
-U_STABLE double U_EXPORT2 
+U_CAPI double U_EXPORT2 
 unum_getDoubleAttribute(const UNumberFormat*          fmt,
           UNumberFormatAttribute  attr);
 
@@ -1185,7 +1209,7 @@
 * @see unum_setTextAttribute
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 unum_setDoubleAttribute(    UNumberFormat*          fmt,
             UNumberFormatAttribute  attr,
             double                 newValue);
@@ -1242,7 +1266,7 @@
 * @see unum_setAttribute
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_getTextAttribute(    const    UNumberFormat*                    fmt,
             UNumberFormatTextAttribute      tag,
             UChar*                            result,
@@ -1265,7 +1289,7 @@
 * @see unum_setAttribute
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 unum_setTextAttribute(    UNumberFormat*                    fmt,
             UNumberFormatTextAttribute      tag,
             const    UChar*                            newValue,
@@ -1276,8 +1300,8 @@
  * Extract the pattern from a UNumberFormat.  The pattern will follow
  * the DecimalFormat pattern syntax.
  * @param fmt The formatter to query.
- * @param isPatternLocalized TRUE if the pattern should be localized,
- * FALSE otherwise.  This is ignored if the formatter is a rule-based
+ * @param isPatternLocalized true if the pattern should be localized,
+ * false otherwise.  This is ignored if the formatter is a rule-based
  * formatter.
  * @param result A pointer to a buffer to receive the pattern.
  * @param resultLength The maximum size of result.
@@ -1288,7 +1312,7 @@
  * @see DecimalFormat
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_toPattern(    const    UNumberFormat*          fmt,
         UBool                  isPatternLocalized,
         UChar*                  result,
@@ -1407,7 +1431,7 @@
 * @see unum_setSymbol
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unum_getSymbol(const UNumberFormat *fmt,
                UNumberFormatSymbol symbol,
                UChar *buffer,
@@ -1427,7 +1451,7 @@
 * @see unum_getSymbol
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unum_setSymbol(UNumberFormat *fmt,
                UNumberFormatSymbol symbol,
                const UChar *value,
@@ -1444,7 +1468,7 @@
  * @return the locale name
  * @stable ICU 2.8
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 unum_getLocaleByType(const UNumberFormat *fmt,
                      ULocDataLocaleType type,
                      UErrorCode* status); 
@@ -1457,7 +1481,7 @@
  * @param status A pointer to an UErrorCode to receive any errors
  * @stable ICU 53
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unum_setContext(UNumberFormat* fmt, UDisplayContext value, UErrorCode* status);
 
 /**
@@ -1469,7 +1493,7 @@
  * @return The UDisplayContextValue for the specified type.
  * @stable ICU 53
  */
-U_STABLE UDisplayContext U_EXPORT2
+U_CAPI UDisplayContext U_EXPORT2
 unum_getContext(const UNumberFormat *fmt, UDisplayContextType type, UErrorCode* status);
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/libandroidicu/include/unicode/unumberformatter.h b/libandroidicu/include/unicode/unumberformatter.h
index af98ba0..754987a 100644
--- a/libandroidicu/include/unicode/unumberformatter.h
+++ b/libandroidicu/include/unicode/unumberformatter.h
@@ -1,11 +1,12 @@
 // © 2018 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
+#ifndef __UNUMBERFORMATTER_H__
+#define __UNUMBERFORMATTER_H__
+
 #include "unicode/utypes.h"
 
 #if !UCONFIG_NO_FORMATTING
-#ifndef __UNUMBERFORMATTER_H__
-#define __UNUMBERFORMATTER_H__
 
 #include "unicode/parseerr.h"
 #include "unicode/ufieldpositer.h"
@@ -147,6 +148,30 @@
      */
             UNUM_UNIT_WIDTH_ISO_CODE,
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Use the formal variant of the currency symbol; for example, "NT$" for the New Taiwan
+     * dollar in zh-TW.
+     *
+     * <p>
+     * Behavior of this option with non-currency units is not defined at this time.
+     *
+     * @draft ICU 68
+     */
+            UNUM_UNIT_WIDTH_FORMAL,
+
+    /**
+     * Use the alternate variant of the currency symbol; for example, "TL" for the Turkish
+     * lira (TRY).
+     *
+     * <p>
+     * Behavior of this option with non-currency units is not defined at this time.
+     *
+     * @draft ICU 68
+     */
+            UNUM_UNIT_WIDTH_VARIANT,
+#endif  // U_HIDE_DRAFT_API
+
     /**
      * Format the number according to the specified unit, but do not display the unit. For currencies, apply
      * monetary symbols and formats as with SHORT, but omit the currency symbol. For measure units, the behavior is
@@ -432,7 +457,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE UNumberFormatter* U_EXPORT2
+U_CAPI UNumberFormatter* U_EXPORT2
 unumf_openForSkeletonAndLocale(const UChar* skeleton, int32_t skeletonLen, const char* locale,
                                UErrorCode* ec);
 
@@ -449,7 +474,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE UNumberFormatter* U_EXPORT2
+U_CAPI UNumberFormatter* U_EXPORT2
 unumf_openForSkeletonAndLocaleWithError(
        const UChar* skeleton, int32_t skeletonLen, const char* locale, UParseError* perror, UErrorCode* ec);
 
@@ -462,7 +487,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE UFormattedNumber* U_EXPORT2
+U_CAPI UFormattedNumber* U_EXPORT2
 unumf_openResult(UErrorCode* ec);
 
 
@@ -481,7 +506,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumf_formatInt(const UNumberFormatter* uformatter, int64_t value, UFormattedNumber* uresult,
                 UErrorCode* ec);
 
@@ -501,7 +526,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumf_formatDouble(const UNumberFormatter* uformatter, double value, UFormattedNumber* uresult,
                    UErrorCode* ec);
 
@@ -525,7 +550,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumf_formatDecimal(const UNumberFormatter* uformatter, const char* value, int32_t valueLen,
                     UFormattedNumber* uresult, UErrorCode* ec);
 
@@ -543,7 +568,7 @@
  * @return A UFormattedValue owned by the input object.
  * @stable ICU 64
  */
-U_STABLE const UFormattedValue* U_EXPORT2
+U_CAPI const UFormattedValue* U_EXPORT2
 unumf_resultAsValue(const UFormattedNumber* uresult, UErrorCode* ec);
 
 
@@ -566,7 +591,7 @@
  * @return The required length.
  * @stable ICU 62
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unumf_resultToString(const UFormattedNumber* uresult, UChar* buffer, int32_t bufferCapacity,
                      UErrorCode* ec);
 
@@ -600,11 +625,11 @@
  *            "beginIndex" field is set to the beginning of the first occurrence of the field after the
  *            input "endIndex", and "endIndex" is set to the end of that occurrence of the field
  *            (exclusive index). If a field position is not found, the FieldPosition is not changed and
- *            the method returns FALSE.
+ *            the method returns false.
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unumf_resultNextFieldPosition(const UFormattedNumber* uresult, UFieldPosition* ufpos, UErrorCode* ec);
 
 
@@ -629,16 +654,37 @@
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumf_resultGetAllFieldPositions(const UFormattedNumber* uresult, UFieldPositionIterator* ufpositer,
                                  UErrorCode* ec);
 
 
-// TODO(ICU-20775): Propose this as API.
-// NOTE: This is not currently implemented.
-// U_DRAFT int32_t U_EXPORT2
-// unumf_resultToDecimalNumber(const UFormattedNumber* uresult, char* buffer, int32_t bufferCapacity,
-//                             UErrorCode* ec);
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Extracts the formatted number as a "numeric string" conforming to the
+ * syntax defined in the Decimal Arithmetic Specification, available at
+ * http://speleotrove.com/decimal
+ *
+ * This endpoint is useful for obtaining the exact number being printed
+ * after scaling and rounding have been applied by the number formatter.
+ *
+ * @param uresult        The input object containing the formatted number.
+ * @param  dest          the 8-bit char buffer into which the decimal number is placed
+ * @param  destCapacity  The size, in chars, of the destination buffer.  May be zero
+ *                       for precomputing the required size.
+ * @param  ec            receives any error status.
+ *                       If U_BUFFER_OVERFLOW_ERROR: Returns number of chars for
+ *                       preflighting.
+ * @return Number of chars in the data.  Does not include a trailing NUL.
+ * @draft ICU 68
+ */
+U_CAPI int32_t U_EXPORT2
+unumf_resultToDecimalNumber(
+       const UFormattedNumber* uresult,
+       char* dest,
+       int32_t destCapacity,
+       UErrorCode* ec);
+#endif // U_HIDE_DRAFT_API
 
 
 /**
@@ -647,7 +693,7 @@
  * @param uformatter An object created by unumf_openForSkeletonAndLocale().
  * @stable ICU 62
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumf_close(UNumberFormatter* uformatter);
 
 
@@ -657,7 +703,7 @@
  * @param uresult An object created by unumf_openResult().
  * @stable ICU 62
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumf_closeResult(UFormattedNumber* uresult);
 
 
@@ -701,5 +747,5 @@
 U_NAMESPACE_END
 #endif // U_SHOW_CPLUSPLUS_API
 
-#endif //__UNUMBERFORMATTER_H__
 #endif /* #if !UCONFIG_NO_FORMATTING */
+#endif //__UNUMBERFORMATTER_H__
diff --git a/libandroidicu/include/unicode/unumsys.h b/libandroidicu/include/unicode/unumsys.h
index d459e80..fe713ea 100644
--- a/libandroidicu/include/unicode/unumsys.h
+++ b/libandroidicu/include/unicode/unumsys.h
@@ -57,7 +57,7 @@
  *                  occurred.
  * @stable ICU 52
  */
-U_STABLE UNumberingSystem * U_EXPORT2
+U_CAPI UNumberingSystem * U_EXPORT2
 unumsys_open(const char *locale, UErrorCode *status);
 
 /**
@@ -78,7 +78,7 @@
  *                  occurred.
  * @stable ICU 52
  */
-U_STABLE UNumberingSystem * U_EXPORT2
+U_CAPI UNumberingSystem * U_EXPORT2
 unumsys_openByName(const char *name, UErrorCode *status);
 
 /**
@@ -86,7 +86,7 @@
  * @param unumsys   The UNumberingSystem object to close.
  * @stable ICU 52
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumsys_close(UNumberingSystem *unumsys);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -114,7 +114,7 @@
  *                  or NULL if an error occurred.
  * @stable ICU 52
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 unumsys_openAvailableNames(UErrorCode *status);
 
 /**
@@ -126,18 +126,18 @@
  *                  is only valid for the lifetime of the UNumberingSystem object.
  * @stable ICU 52
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 unumsys_getName(const UNumberingSystem *unumsys);
 
 /**
  * Returns whether the given UNumberingSystem object is for an algorithmic (not purely
  * positional) system.
  * @param unumsys   The UNumberingSystem whose algorithmic status is desired.
- * @return          TRUE if the specified UNumberingSystem object is for an algorithmic
+ * @return          true if the specified UNumberingSystem object is for an algorithmic
  *                  system.
  * @stable ICU 52
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unumsys_isAlgorithmic(const UNumberingSystem *unumsys);
 
 /**
@@ -148,7 +148,7 @@
  * @return          The radix of the specified UNumberingSystem object.
  * @stable ICU 52
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unumsys_getRadix(const UNumberingSystem *unumsys);
 
 /**
@@ -167,7 +167,7 @@
  *                  output was truncated.
  * @stable ICU 52
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unumsys_getDescription(const UNumberingSystem *unumsys, UChar *result,
                        int32_t resultLength, UErrorCode *status);
 
diff --git a/libandroidicu/include/unicode/upluralrules.h b/libandroidicu/include/unicode/upluralrules.h
index ec8cc81..71a45dd 100644
--- a/libandroidicu/include/unicode/upluralrules.h
+++ b/libandroidicu/include/unicode/upluralrules.h
@@ -26,6 +26,7 @@
 
 // Forward-declaration
 struct UFormattedNumber;
+struct UFormattedNumberRange;
 
 /**
  * \file
@@ -167,7 +168,7 @@
  * @param uplrules The UPluralRules object specifying the rules.
  * @param number The formatted number for which the rule has to be determined.
  * @param keyword The destination buffer for the keyword of the rule that
- *         applies to number.
+ *         applies to the number.
  * @param capacity The capacity of the keyword buffer.
  * @param status A pointer to a UErrorCode to receive any errors.
  * @return The length of the keyword.
@@ -179,6 +180,29 @@
                UChar *keyword, int32_t capacity,
                UErrorCode *status);
 
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Given a formatted number range, returns the overall plural form of the
+ * range. For example, "3-5" returns "other" in English.
+ *
+ * To get a UFormattedNumberRange, see UNumberRangeFormatter.
+ *
+ * @param uplrules The UPluralRules object specifying the rules.
+ * @param urange The number range onto which the rules will be applied.
+ * @param keyword The destination buffer for the keyword of the rule that
+ *         applies to the number range.
+ * @param capacity The capacity of the keyword buffer.
+ * @param status A pointer to a UErrorCode to receive any errors.
+ * @return The length of the keyword.
+ * @draft ICU 68
+ */
+U_CAPI int32_t U_EXPORT2
+uplrules_selectForRange(const UPluralRules *uplrules,
+               const struct UFormattedNumberRange* urange,
+               UChar *keyword, int32_t capacity,
+               UErrorCode *status);
+#endif // U_HIDE_DRAFT_API
+
 #ifndef U_HIDE_INTERNAL_API
 /**
  * Given a number, returns the keyword of the first rule that applies to the
@@ -198,7 +222,7 @@
  * @return The length of keyword.
  * @internal ICU 59 technology preview, may be removed in the future
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uplrules_selectWithFormat(const UPluralRules *uplrules,
                           double number,
                           const UNumberFormat *fmt,
@@ -217,7 +241,7 @@
  * upon error. The caller is responsible for closing the result.
  * @stable ICU 59
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uplrules_getKeywords(const UPluralRules *uplrules,
                      UErrorCode *status);
 
diff --git a/libandroidicu/include/unicode/uregex.h b/libandroidicu/include/unicode/uregex.h
index dab172d..e946e63 100644
--- a/libandroidicu/include/unicode/uregex.h
+++ b/libandroidicu/include/unicode/uregex.h
@@ -134,7 +134,7 @@
   * @stable ICU 3.0
   *
   */
-U_STABLE URegularExpression * U_EXPORT2
+U_CAPI URegularExpression * U_EXPORT2
 uregex_open( const  UChar          *pattern,
                     int32_t         patternLength,
                     uint32_t        flags,
@@ -164,7 +164,7 @@
   *
   * @stable ICU 4.6
   */
-U_STABLE URegularExpression *  U_EXPORT2
+U_CAPI URegularExpression *  U_EXPORT2
 uregex_openUText(UText          *pattern,
                  uint32_t        flags,
                  UParseError    *pe,
@@ -194,7 +194,7 @@
   *
   * @stable ICU 3.0
   */
-U_STABLE URegularExpression * U_EXPORT2
+U_CAPI URegularExpression * U_EXPORT2
 uregex_openC( const char           *pattern,
                     uint32_t        flags,
                     UParseError    *pe,
@@ -210,7 +210,7 @@
   * @param regexp   The regular expression to be closed.
   * @stable ICU 3.0
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_close(URegularExpression *regexp);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -250,7 +250,7 @@
  * @return the cloned copy of the compiled regular expression.
  * @stable ICU 3.0
  */
-U_STABLE URegularExpression * U_EXPORT2 
+U_CAPI URegularExpression * U_EXPORT2 
 uregex_clone(const URegularExpression *regexp, UErrorCode *status);
 
 /**
@@ -270,7 +270,7 @@
  *                   will remain valid until the regular expression is closed.
  * @stable ICU 3.0
  */
-U_STABLE const UChar * U_EXPORT2 
+U_CAPI const UChar * U_EXPORT2 
 uregex_pattern(const URegularExpression *regexp,
                      int32_t            *patLength,
                      UErrorCode         *status);
@@ -286,7 +286,7 @@
  *
  * @stable ICU 4.6
  */
-U_STABLE UText * U_EXPORT2 
+U_CAPI UText * U_EXPORT2 
 uregex_patternUText(const URegularExpression *regexp,
                           UErrorCode         *status);
 
@@ -298,7 +298,7 @@
   * @see URegexpFlag
   * @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_flags(const  URegularExpression   *regexp,
                     UErrorCode           *status);
 
@@ -323,7 +323,7 @@
   * @param status     Receives errors detected by this function.
   * @stable ICU 3.0
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_setText(URegularExpression *regexp,
                const UChar        *text,
                int32_t             textLength,
@@ -346,7 +346,7 @@
   *
   * @stable ICU 4.6
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_setUText(URegularExpression *regexp,
                 UText              *text,
                 UErrorCode         *status);
@@ -371,7 +371,7 @@
   *                    this regular expression.
   * @stable ICU 3.0
   */
-U_STABLE const UChar * U_EXPORT2 
+U_CAPI const UChar * U_EXPORT2 
 uregex_getText(URegularExpression *regexp,
                int32_t            *textLength,
                UErrorCode         *status);
@@ -392,7 +392,7 @@
   *
   * @stable ICU 4.6
   */
-U_STABLE UText * U_EXPORT2 
+U_CAPI UText * U_EXPORT2 
 uregex_getUText(URegularExpression *regexp,
                 UText              *dest,
                 UErrorCode         *status);
@@ -422,7 +422,7 @@
   *
   * @stable ICU 4.8
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_refreshUText(URegularExpression *regexp,
                     UText              *text,
                     UErrorCode         *status);
@@ -444,10 +444,10 @@
   *    @param  startIndex  The input string (native) index at which to begin matching, or -1
   *                        to match the input Region.
   *    @param  status      Receives errors detected by this function.
-  *    @return             TRUE if there is a match
+  *    @return             true if there is a match
   *    @stable ICU 3.0
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_matches(URegularExpression *regexp,
                 int32_t            startIndex,
                 UErrorCode        *status);
@@ -470,10 +470,10 @@
   *    @param  startIndex  The input string (native) index at which to begin matching, or -1
   *                        to match the input Region.
   *    @param  status      Receives errors detected by this function.
-  *    @return             TRUE if there is a match
+  *    @return             true if there is a match
   *   @stable ICU 4.6
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_matches64(URegularExpression *regexp,
                  int64_t            startIndex,
                  UErrorCode        *status);
@@ -498,10 +498,10 @@
   *    @param   startIndex  The input string (native) index at which to begin matching, or
   *                         -1 to match the Input Region
   *    @param   status      A reference to a UErrorCode to receive any errors.
-  *    @return  TRUE if there is a match.
+  *    @return  true if there is a match.
   *    @stable ICU 3.0
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_lookingAt(URegularExpression *regexp,
                  int32_t             startIndex,
                  UErrorCode         *status);
@@ -527,10 +527,10 @@
   *    @param   startIndex  The input string (native) index at which to begin matching, or
   *                         -1 to match the Input Region
   *    @param   status      A reference to a UErrorCode to receive any errors.
-  *    @return  TRUE if there is a match.
+  *    @return  true if there is a match.
   *    @stable ICU 4.6
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_lookingAt64(URegularExpression *regexp,
                    int64_t             startIndex,
                    UErrorCode         *status);
@@ -551,10 +551,10 @@
   *   @param   startIndex  The position (native) in the input string to begin the search, or
   *                        -1 to search within the Input Region.
   *   @param   status      A reference to a UErrorCode to receive any errors.
-  *   @return              TRUE if a match is found.
+  *   @return              true if a match is found.
   *   @stable ICU 3.0
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_find(URegularExpression *regexp,
             int32_t             startIndex, 
             UErrorCode         *status);
@@ -576,10 +576,10 @@
   *   @param   startIndex  The position (native) in the input string to begin the search, or
   *                        -1 to search within the Input Region.
   *   @param   status      A reference to a UErrorCode to receive any errors.
-  *   @return              TRUE if a match is found.
+  *   @return              true if a match is found.
   *   @stable ICU 4.6
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_find64(URegularExpression *regexp,
               int64_t             startIndex, 
               UErrorCode         *status);
@@ -593,11 +593,11 @@
   *
   *  @param   regexp      The compiled regular expression.
   *  @param   status      A reference to a UErrorCode to receive any errors.
-  *  @return              TRUE if a match is found.
+  *  @return              true if a match is found.
   *  @see uregex_reset
   *  @stable ICU 3.0
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_findNext(URegularExpression *regexp,
                 UErrorCode         *status);
 
@@ -608,7 +608,7 @@
   *   @return the number of capture groups
   *   @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_groupCount(URegularExpression *regexp,
                   UErrorCode         *status);
 
@@ -628,7 +628,7 @@
   *
   * @stable ICU 55
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregex_groupNumberFromName(URegularExpression *regexp,
                            const UChar        *groupName,
                            int32_t             nameLength,
@@ -652,7 +652,7 @@
   *
   * @stable ICU 55
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregex_groupNumberFromCName(URegularExpression *regexp,
                             const char         *groupName,
                             int32_t             nameLength,
@@ -674,7 +674,7 @@
   *                         or -1 if no applicable match.
   *   @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_group(URegularExpression *regexp,
              int32_t             groupNum,
              UChar              *dest,
@@ -703,7 +703,7 @@
   *
   *   @stable ICU 4.6
   */
-U_STABLE UText * U_EXPORT2 
+U_CAPI UText * U_EXPORT2 
 uregex_groupUText(URegularExpression *regexp,
                   int32_t             groupNum,
                   UText              *dest,
@@ -724,7 +724,7 @@
   *                         by the specified group.
   *    @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_start(URegularExpression *regexp,
              int32_t             groupNum,
              UErrorCode          *status);
@@ -744,7 +744,7 @@
   *                         by the specified group.
   *   @stable ICU 4.6
   */
-U_STABLE int64_t U_EXPORT2 
+U_CAPI int64_t U_EXPORT2 
 uregex_start64(URegularExpression *regexp,
                int32_t             groupNum,
                UErrorCode          *status);
@@ -762,7 +762,7 @@
   *    @return              the (native) index of the position following the last matched character.
   *    @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_end(URegularExpression   *regexp,
            int32_t               groupNum,
            UErrorCode           *status);
@@ -781,7 +781,7 @@
   *    @return              the (native) index of the position following the last matched character.
   *   @stable ICU 4.6
   */
-U_STABLE int64_t U_EXPORT2 
+U_CAPI int64_t U_EXPORT2 
 uregex_end64(URegularExpression *regexp,
              int32_t               groupNum,
              UErrorCode           *status);
@@ -799,7 +799,7 @@
   *    @param   status      A reference to a UErrorCode to receive any errors.
   *    @stable ICU 3.0
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_reset(URegularExpression    *regexp,
              int32_t               index,
              UErrorCode            *status);
@@ -818,7 +818,7 @@
   *    @param   status      A reference to a UErrorCode to receive any errors.
   *    @stable ICU 4.6
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_reset64(URegularExpression  *regexp,
                int64_t               index,
                UErrorCode            *status);
@@ -843,7 +843,7 @@
   * @param status A pointer to a UErrorCode to receive any errors.
   * @stable ICU 4.0
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_setRegion(URegularExpression   *regexp,
                  int32_t               regionStart,
                  int32_t               regionLimit,
@@ -870,7 +870,7 @@
   * @param status A pointer to a UErrorCode to receive any errors.
   * @stable ICU 4.6
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_setRegion64(URegularExpression *regexp,
                  int64_t               regionStart,
                  int64_t               regionLimit,
@@ -890,7 +890,7 @@
   * @param status A pointer to a UErrorCode to receive any errors.
   * @stable ICU 4.6
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_setRegionAndStart(URegularExpression *regexp,
                  int64_t               regionStart,
                  int64_t               regionLimit,
@@ -906,7 +906,7 @@
   * @return The starting (native) index of this matcher's region.
   * @stable ICU 4.0
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregex_regionStart(const  URegularExpression   *regexp,
                           UErrorCode           *status);
 
@@ -920,7 +920,7 @@
   * @return The starting (native) index of this matcher's region.
   * @stable ICU 4.6
   */
-U_STABLE int64_t U_EXPORT2 
+U_CAPI int64_t U_EXPORT2 
 uregex_regionStart64(const  URegularExpression   *regexp,
                             UErrorCode           *status);
 
@@ -934,7 +934,7 @@
   * @return The ending point (native) of this matcher's region.
   * @stable ICU 4.0
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregex_regionEnd(const  URegularExpression   *regexp,
                         UErrorCode           *status);
 
@@ -949,7 +949,7 @@
   * @return The ending point (native) of this matcher's region.
   * @stable ICU 4.6
   */
-U_STABLE int64_t U_EXPORT2 
+U_CAPI int64_t U_EXPORT2 
 uregex_regionEnd64(const  URegularExpression   *regexp,
                           UErrorCode           *status);
 
@@ -960,18 +960,18 @@
   *
   * @param regexp The compiled regular expression.
   * @param status A pointer to a UErrorCode to receive any errors.
-  * @return TRUE if this matcher is using opaque bounds, false if it is not.
+  * @return true if this matcher is using opaque bounds, false if it is not.
   * @stable ICU 4.0
   */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uregex_hasTransparentBounds(const  URegularExpression   *regexp,
                                    UErrorCode           *status);
 
 
 /**
   * Sets the transparency of region bounds for this URegularExpression.
-  * Invoking this function with an argument of TRUE will set matches to use transparent bounds.
-  * If the boolean argument is FALSE, then opaque bounds will be used.
+  * Invoking this function with an argument of true will set matches to use transparent bounds.
+  * If the boolean argument is false, then opaque bounds will be used.
   *
   * Using transparent bounds, the boundaries of the matching region are transparent
   * to lookahead, lookbehind, and boundary matching constructs. Those constructs can
@@ -983,11 +983,11 @@
   * By default, opaque bounds are used.
   *
   * @param   regexp The compiled regular expression.
-  * @param   b      TRUE for transparent bounds; FALSE for opaque bounds
+  * @param   b      true for transparent bounds; false for opaque bounds
   * @param   status A pointer to a UErrorCode to receive any errors.
   * @stable ICU 4.0
   **/
-U_STABLE void U_EXPORT2  
+U_CAPI void U_EXPORT2  
 uregex_useTransparentBounds(URegularExpression   *regexp, 
                             UBool                b,
                             UErrorCode           *status);
@@ -999,10 +999,10 @@
   *
   * @param  regexp The compiled regular expression.
   * @param  status A pointer to a UErrorCode to receive any errors.
-  * @return TRUE if this matcher is using anchoring bounds.
+  * @return true if this matcher is using anchoring bounds.
   * @stable ICU 4.0
   */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uregex_hasAnchoringBounds(const  URegularExpression   *regexp,
                                  UErrorCode           *status);
 
@@ -1016,41 +1016,41 @@
   * Anchoring Bounds are the default for regions.
   *
   * @param regexp The compiled regular expression.
-  * @param b      TRUE if to enable anchoring bounds; FALSE to disable them.
+  * @param b      true if to enable anchoring bounds; false to disable them.
   * @param status A pointer to a UErrorCode to receive any errors.
   * @stable ICU 4.0
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_useAnchoringBounds(URegularExpression   *regexp,
                           UBool                 b,
                           UErrorCode           *status);
 
 /**
-  * Return TRUE if the most recent matching operation touched the
+  * Return true if the most recent matching operation touched the
   *  end of the text being processed.  In this case, additional input text could
   *  change the results of that match.
   *
   *  @param regexp The compiled regular expression.
   *  @param status A pointer to a UErrorCode to receive any errors.
-  *  @return  TRUE if the most recent match hit the end of input
+  *  @return  true if the most recent match hit the end of input
   *  @stable ICU 4.0
   */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uregex_hitEnd(const  URegularExpression   *regexp,
                      UErrorCode           *status);
 
 /**
-  * Return TRUE the most recent match succeeded and additional input could cause
+  * Return true the most recent match succeeded and additional input could cause
   * it to fail. If this function returns false and a match was found, then more input
   * might change the match but the match won't be lost. If a match was not found,
   * then requireEnd has no meaning.
   *
   * @param regexp The compiled regular expression.
   * @param status A pointer to a UErrorCode to receive any errors.
-  * @return TRUE  if more input could cause the most recent match to no longer match.
+  * @return true  if more input could cause the most recent match to no longer match.
   * @stable ICU 4.0
   */
-U_STABLE UBool U_EXPORT2   
+U_CAPI UBool U_EXPORT2   
 uregex_requireEnd(const  URegularExpression   *regexp,
                          UErrorCode           *status);
 
@@ -1082,7 +1082,7 @@
   *                                is still the full length of the untruncated string.
   *    @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_replaceAll(URegularExpression    *regexp,
                   const UChar           *replacementText,
                   int32_t                replacementLength,
@@ -1111,7 +1111,7 @@
   *
   *    @stable ICU 4.6
   */
-U_STABLE UText * U_EXPORT2 
+U_CAPI UText * U_EXPORT2 
 uregex_replaceAllUText(URegularExpression *regexp,
                        UText              *replacement,
                        UText              *dest,
@@ -1141,7 +1141,7 @@
   *                                is still the full length of the untruncated string.
   *    @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_replaceFirst(URegularExpression  *regexp,
                     const UChar         *replacementText,
                     int32_t              replacementLength,
@@ -1170,7 +1170,7 @@
   *
   *    @stable ICU 4.6
   */
-U_STABLE UText * U_EXPORT2 
+U_CAPI UText * U_EXPORT2 
 uregex_replaceFirstUText(URegularExpression *regexp,
                          UText              *replacement,
                          UText              *dest,
@@ -1222,7 +1222,7 @@
   *   @stable ICU 3.0
   *
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_appendReplacement(URegularExpression    *regexp,
                          const UChar           *replacementText,
                          int32_t                replacementLength,
@@ -1252,7 +1252,7 @@
   *
   *   @stable ICU 4.6
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_appendReplacementUText(URegularExpression    *regexp,
                               UText                 *replacementText,
                               UText                 *dest,
@@ -1282,7 +1282,7 @@
   *
   *   @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_appendTail(URegularExpression    *regexp,
                   UChar                **destBuf,
                   int32_t               *destCapacity,
@@ -1306,7 +1306,7 @@
   *
   *   @stable ICU 4.6
   */
-U_STABLE UText * U_EXPORT2 
+U_CAPI UText * U_EXPORT2 
 uregex_appendTailUText(URegularExpression    *regexp,
                        UText                 *dest,
                        UErrorCode            *status);
@@ -1362,7 +1362,7 @@
    * @return        The number of fields into which the input string was split.
    * @stable ICU 3.0
    */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_split(   URegularExpression      *regexp,
                   UChar                 *destBuf,
                   int32_t                destCapacity,
@@ -1397,7 +1397,7 @@
    *
    * @stable ICU 4.6
    */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_splitUText(URegularExpression    *regexp,
                   UText                 *destFields[],
                   int32_t                destFieldsCapacity,
@@ -1425,7 +1425,7 @@
  * @param   status      A reference to a UErrorCode to receive any errors.
  * @stable ICU 4.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_setTimeLimit(URegularExpression      *regexp,
                     int32_t                  limit,
                     UErrorCode              *status);
@@ -1439,7 +1439,7 @@
  * @return the maximum allowed time for a match, in units of processing steps.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregex_getTimeLimit(const URegularExpression      *regexp,
                           UErrorCode              *status);
 
@@ -1463,7 +1463,7 @@
  *
  * @stable ICU 4.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_setStackLimit(URegularExpression      *regexp,
                      int32_t                  limit,
                      UErrorCode              *status);
@@ -1475,7 +1475,7 @@
  *          stack size is unlimited.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregex_getStackLimit(const URegularExpression      *regexp,
                            UErrorCode              *status);
 
@@ -1483,7 +1483,7 @@
 /**
  * Function pointer for a regular expression matching callback function.
  * When set, a callback function will be called periodically during matching
- * operations.  If the call back function returns FALSE, the matching
+ * operations.  If the call back function returns false, the matching
  * operation will be terminated early.
  *
  * Note:  the callback function must not call other functions on this
@@ -1494,8 +1494,8 @@
  *                 uregex_setMatchCallback() is called.
  * @param steps    the accumulated processing time, in match steps, 
  *                 for this matching operation.
- * @return         TRUE to continue the matching operation.
- *                 FALSE to terminate the matching operation.
+ * @return         true to continue the matching operation.
+ *                 false to terminate the matching operation.
  * @stable ICU 4.0
  */
 U_CDECL_BEGIN
@@ -1518,7 +1518,7 @@
  * @param   status      A reference to a UErrorCode to receive any errors.
  * @stable ICU 4.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_setMatchCallback(URegularExpression      *regexp,
                         URegexMatchCallback     *callback,
                         const void              *context,
@@ -1536,7 +1536,7 @@
  * @param   status      A reference to a UErrorCode to receive any errors.
  * @stable ICU 4.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_getMatchCallback(const URegularExpression    *regexp,
                         URegexMatchCallback        **callback,
                         const void                 **context,
@@ -1557,7 +1557,7 @@
  * to be attempted, giving the application the opportunity to terminate a long-running
  * find operation.
  * 
- * If the call back function returns FALSE, the find operation will be terminated early.
+ * If the call back function returns false, the find operation will be terminated early.
  *
  * Note:  the callback function must not call other functions on this
  *        URegularExpression
@@ -1568,8 +1568,8 @@
  * @param matchIndex  the next index at which a match attempt will be attempted for this
  *                 find operation.  If this callback interrupts the search, this is the
  *                 index at which a find/findNext operation may be re-initiated.
- * @return         TRUE to continue the matching operation.
- *                 FALSE to terminate the matching operation.
+ * @return         true to continue the matching operation.
+ *                 false to terminate the matching operation.
  * @stable ICU 4.6
  */
 U_CDECL_BEGIN
@@ -1590,7 +1590,7 @@
  * @param   status      A reference to a UErrorCode to receive any errors.
  * @stable ICU 4.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_setFindProgressCallback(URegularExpression              *regexp,
                                 URegexFindProgressCallback      *callback,
                                 const void                      *context,
@@ -1607,7 +1607,7 @@
  * @param   status      A reference to a UErrorCode to receive any errors.
  * @stable ICU 4.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_getFindProgressCallback(const URegularExpression          *regexp,
                                 URegexFindProgressCallback        **callback,
                                 const void                        **context,
diff --git a/libandroidicu/include/unicode/uregion.h b/libandroidicu/include/unicode/uregion.h
index a5de496..25472ae 100644
--- a/libandroidicu/include/unicode/uregion.h
+++ b/libandroidicu/include/unicode/uregion.h
@@ -133,7 +133,7 @@
  * (U_ILLEGAL_ARGUMENT_ERROR).
  * @stable ICU 52
  */
-U_STABLE const URegion* U_EXPORT2
+U_CAPI const URegion* U_EXPORT2
 uregion_getRegionFromCode(const char *regionCode, UErrorCode *status);
 
 /**
@@ -141,7 +141,7 @@
  * code is not recognized, the appropriate error code will be set (U_ILLEGAL_ARGUMENT_ERROR).
  * @stable ICU 52
  */
-U_STABLE const URegion* U_EXPORT2
+U_CAPI const URegion* U_EXPORT2
 uregion_getRegionFromNumericCode (int32_t code, UErrorCode *status);
 
 /**
@@ -149,14 +149,14 @@
  * The enumeration must be closed with with uenum_close().
  * @stable ICU 52
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uregion_getAvailable(URegionType type, UErrorCode *status);
 
 /**
  * Returns true if the specified uregion is equal to the specified otherRegion.
  * @stable ICU 52
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uregion_areEqual(const URegion* uregion, const URegion* otherRegion);
 
 /**
@@ -165,7 +165,7 @@
  * this method with region "IT" (Italy) returns the URegion for "039" (Southern Europe).
  * @stable ICU 52
  */
-U_STABLE const URegion* U_EXPORT2
+U_CAPI const URegion* U_EXPORT2
 uregion_getContainingRegion(const URegion* uregion);
 
 /**
@@ -177,7 +177,7 @@
  * URegion "150" (Europe).
  * @stable ICU 52
  */
-U_STABLE const URegion* U_EXPORT2
+U_CAPI const URegion* U_EXPORT2
 uregion_getContainingRegionOfType(const URegion* uregion, URegionType type);
 
 /**
@@ -190,7 +190,7 @@
  * and "155" (Western Europe). The enumeration must be closed with with uenum_close().
  * @stable ICU 52
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uregion_getContainedRegions(const URegion* uregion, UErrorCode *status);
 
 /**
@@ -202,7 +202,7 @@
  * etc. The enumeration must be closed with with uenum_close().
  * @stable ICU 52
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uregion_getContainedRegionsOfType(const URegion* uregion, URegionType type, UErrorCode *status);
 
 /**
@@ -210,7 +210,7 @@
  * hierarchy.
  * @stable ICU 52
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uregion_contains(const URegion* uregion, const URegion* otherRegion);
 
 /**
@@ -221,14 +221,14 @@
  * "AZ" (Azerbaijan), etc... The enumeration must be closed with with uenum_close().
  * @stable ICU 52
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uregion_getPreferredValues(const URegion* uregion, UErrorCode *status);
 
 /**
  * Returns the specified uregion's canonical code.
  * @stable ICU 52
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uregion_getRegionCode(const URegion* uregion);
 
 /**
@@ -236,14 +236,14 @@
  * for the specified uregion.
  * @stable ICU 52
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregion_getNumericCode(const URegion* uregion);
 
 /**
  * Returns the URegionType of the specified uregion.
  * @stable ICU 52
  */
-U_STABLE URegionType U_EXPORT2
+U_CAPI URegionType U_EXPORT2
 uregion_getType(const URegion* uregion);
 
 
diff --git a/libandroidicu/include/unicode/ureldatefmt.h b/libandroidicu/include/unicode/ureldatefmt.h
index 3afc24b..3c44890 100644
--- a/libandroidicu/include/unicode/ureldatefmt.h
+++ b/libandroidicu/include/unicode/ureldatefmt.h
@@ -237,7 +237,7 @@
  *          or NULL if an error occurred.
  * @stable ICU 57
  */
-U_STABLE URelativeDateTimeFormatter* U_EXPORT2
+U_CAPI URelativeDateTimeFormatter* U_EXPORT2
 ureldatefmt_open( const char*          locale,
                   UNumberFormat*       nfToAdopt,
                   UDateRelativeDateTimeFormatterStyle width,
@@ -250,7 +250,7 @@
  *            The URelativeDateTimeFormatter object to close.
  * @stable ICU 57
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ureldatefmt_close(URelativeDateTimeFormatter *reldatefmt);
 
 struct UFormattedRelativeDateTime;
@@ -269,7 +269,7 @@
  * @return A pointer needing ownership.
  * @stable ICU 64
  */
-U_STABLE UFormattedRelativeDateTime* U_EXPORT2
+U_CAPI UFormattedRelativeDateTime* U_EXPORT2
 ureldatefmt_openResult(UErrorCode* ec);
 
 /**
@@ -286,7 +286,7 @@
  * @return A UFormattedValue owned by the input object.
  * @stable ICU 64
  */
-U_STABLE const UFormattedValue* U_EXPORT2
+U_CAPI const UFormattedValue* U_EXPORT2
 ureldatefmt_resultAsValue(const UFormattedRelativeDateTime* ufrdt, UErrorCode* ec);
 
 /**
@@ -295,7 +295,7 @@
  * @param ufrdt The object to release.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ureldatefmt_closeResult(UFormattedRelativeDateTime* ufrdt);
 
 
@@ -357,7 +357,7 @@
  *          than resultCapacity, in which case an error is returned.
  * @stable ICU 57
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ureldatefmt_formatNumeric( const URelativeDateTimeFormatter* reldatefmt,
                     double                offset,
                     URelativeDateTimeUnit unit,
@@ -388,7 +388,7 @@
  *          undefined.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ureldatefmt_formatNumericToResult(
     const URelativeDateTimeFormatter* reldatefmt,
     double                            offset,
@@ -424,7 +424,7 @@
  *          than resultCapacity, in which case an error is returned.
  * @stable ICU 57
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ureldatefmt_format( const URelativeDateTimeFormatter* reldatefmt,
                     double                offset,
                     URelativeDateTimeUnit unit,
@@ -458,7 +458,7 @@
  *          undefined.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ureldatefmt_formatToResult(
     const URelativeDateTimeFormatter* reldatefmt,
     double                            offset,
@@ -495,7 +495,7 @@
  *          in which case an error is returned.
  * @stable ICU 57
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ureldatefmt_combineDateAndTime( const URelativeDateTimeFormatter* reldatefmt,
                     const UChar *     relativeDateString,
                     int32_t           relativeDateStringLen,
diff --git a/libandroidicu/include/unicode/urename.h b/libandroidicu/include/unicode/urename.h
index 30f4b7a..fe59fdd 100644
--- a/libandroidicu/include/unicode/urename.h
+++ b/libandroidicu/include/unicode/urename.h
@@ -130,7 +130,6 @@
 #define izrule_getStaticClassID U_ICU_ENTRY_POINT_RENAME(izrule_getStaticClassID)
 #define izrule_isEquivalentTo U_ICU_ENTRY_POINT_RENAME(izrule_isEquivalentTo)
 #define izrule_open U_ICU_ENTRY_POINT_RENAME(izrule_open)
-#define locale_getKeywords U_ICU_ENTRY_POINT_RENAME(locale_getKeywords)
 #define locale_getKeywordsStart U_ICU_ENTRY_POINT_RENAME(locale_getKeywordsStart)
 #define locale_get_default U_ICU_ENTRY_POINT_RENAME(locale_get_default)
 #define locale_set_default U_ICU_ENTRY_POINT_RENAME(locale_set_default)
@@ -918,9 +917,11 @@
 #define udtitvfmt_format U_ICU_ENTRY_POINT_RENAME(udtitvfmt_format)
 #define udtitvfmt_formatCalendarToResult U_ICU_ENTRY_POINT_RENAME(udtitvfmt_formatCalendarToResult)
 #define udtitvfmt_formatToResult U_ICU_ENTRY_POINT_RENAME(udtitvfmt_formatToResult)
+#define udtitvfmt_getContext U_ICU_ENTRY_POINT_RENAME(udtitvfmt_getContext)
 #define udtitvfmt_open U_ICU_ENTRY_POINT_RENAME(udtitvfmt_open)
 #define udtitvfmt_openResult U_ICU_ENTRY_POINT_RENAME(udtitvfmt_openResult)
 #define udtitvfmt_resultAsValue U_ICU_ENTRY_POINT_RENAME(udtitvfmt_resultAsValue)
+#define udtitvfmt_setContext U_ICU_ENTRY_POINT_RENAME(udtitvfmt_setContext)
 #define uenum_close U_ICU_ENTRY_POINT_RENAME(uenum_close)
 #define uenum_count U_ICU_ENTRY_POINT_RENAME(uenum_count)
 #define uenum_next U_ICU_ENTRY_POINT_RENAME(uenum_next)
@@ -1079,7 +1080,6 @@
 #define uloc_getDisplayLanguage U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayLanguage)
 #define uloc_getDisplayName U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayName)
 #define uloc_getDisplayScript U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayScript)
-#define uloc_getDisplayScriptInContext U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayScriptInContext)
 #define uloc_getDisplayVariant U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayVariant)
 #define uloc_getISO3Country U_ICU_ENTRY_POINT_RENAME(uloc_getISO3Country)
 #define uloc_getISO3Language U_ICU_ENTRY_POINT_RENAME(uloc_getISO3Language)
@@ -1123,16 +1123,21 @@
 #define ulocimp_forLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocimp_forLanguageTag)
 #define ulocimp_getBaseName U_ICU_ENTRY_POINT_RENAME(ulocimp_getBaseName)
 #define ulocimp_getCountry U_ICU_ENTRY_POINT_RENAME(ulocimp_getCountry)
+#define ulocimp_getKeywordValue U_ICU_ENTRY_POINT_RENAME(ulocimp_getKeywordValue)
+#define ulocimp_getKeywords U_ICU_ENTRY_POINT_RENAME(ulocimp_getKeywords)
+#define ulocimp_getKnownCanonicalizedLocaleForTest U_ICU_ENTRY_POINT_RENAME(ulocimp_getKnownCanonicalizedLocaleForTest)
 #define ulocimp_getLanguage U_ICU_ENTRY_POINT_RENAME(ulocimp_getLanguage)
 #define ulocimp_getName U_ICU_ENTRY_POINT_RENAME(ulocimp_getName)
 #define ulocimp_getRegionForSupplementalData U_ICU_ENTRY_POINT_RENAME(ulocimp_getRegionForSupplementalData)
 #define ulocimp_getScript U_ICU_ENTRY_POINT_RENAME(ulocimp_getScript)
+#define ulocimp_isCanonicalizedLocaleForTest U_ICU_ENTRY_POINT_RENAME(ulocimp_isCanonicalizedLocaleForTest)
 #define ulocimp_minimizeSubtags U_ICU_ENTRY_POINT_RENAME(ulocimp_minimizeSubtags)
 #define ulocimp_toBcpKey U_ICU_ENTRY_POINT_RENAME(ulocimp_toBcpKey)
 #define ulocimp_toBcpType U_ICU_ENTRY_POINT_RENAME(ulocimp_toBcpType)
 #define ulocimp_toLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocimp_toLanguageTag)
 #define ulocimp_toLegacyKey U_ICU_ENTRY_POINT_RENAME(ulocimp_toLegacyKey)
 #define ulocimp_toLegacyType U_ICU_ENTRY_POINT_RENAME(ulocimp_toLegacyType)
+#define ultag_getTKeyStart U_ICU_ENTRY_POINT_RENAME(ultag_getTKeyStart)
 #define ultag_isExtensionSubtags U_ICU_ENTRY_POINT_RENAME(ultag_isExtensionSubtags)
 #define ultag_isLanguageSubtag U_ICU_ENTRY_POINT_RENAME(ultag_isLanguageSubtag)
 #define ultag_isPrivateuseValueSubtags U_ICU_ENTRY_POINT_RENAME(ultag_isPrivateuseValueSubtags)
@@ -1245,7 +1250,18 @@
 #define unumf_resultAsValue U_ICU_ENTRY_POINT_RENAME(unumf_resultAsValue)
 #define unumf_resultGetAllFieldPositions U_ICU_ENTRY_POINT_RENAME(unumf_resultGetAllFieldPositions)
 #define unumf_resultNextFieldPosition U_ICU_ENTRY_POINT_RENAME(unumf_resultNextFieldPosition)
+#define unumf_resultToDecimalNumber U_ICU_ENTRY_POINT_RENAME(unumf_resultToDecimalNumber)
 #define unumf_resultToString U_ICU_ENTRY_POINT_RENAME(unumf_resultToString)
+#define unumrf_close U_ICU_ENTRY_POINT_RENAME(unumrf_close)
+#define unumrf_closeResult U_ICU_ENTRY_POINT_RENAME(unumrf_closeResult)
+#define unumrf_formatDecimalRange U_ICU_ENTRY_POINT_RENAME(unumrf_formatDecimalRange)
+#define unumrf_formatDoubleRange U_ICU_ENTRY_POINT_RENAME(unumrf_formatDoubleRange)
+#define unumrf_openForSkeletonWithCollapseAndIdentityFallback U_ICU_ENTRY_POINT_RENAME(unumrf_openForSkeletonWithCollapseAndIdentityFallback)
+#define unumrf_openResult U_ICU_ENTRY_POINT_RENAME(unumrf_openResult)
+#define unumrf_resultAsValue U_ICU_ENTRY_POINT_RENAME(unumrf_resultAsValue)
+#define unumrf_resultGetFirstDecimalNumber U_ICU_ENTRY_POINT_RENAME(unumrf_resultGetFirstDecimalNumber)
+#define unumrf_resultGetIdentityResult U_ICU_ENTRY_POINT_RENAME(unumrf_resultGetIdentityResult)
+#define unumrf_resultGetSecondDecimalNumber U_ICU_ENTRY_POINT_RENAME(unumrf_resultGetSecondDecimalNumber)
 #define unumsys_close U_ICU_ENTRY_POINT_RENAME(unumsys_close)
 #define unumsys_getDescription U_ICU_ENTRY_POINT_RENAME(unumsys_getDescription)
 #define unumsys_getName U_ICU_ENTRY_POINT_RENAME(unumsys_getName)
@@ -1259,6 +1275,7 @@
 #define uplrules_open U_ICU_ENTRY_POINT_RENAME(uplrules_open)
 #define uplrules_openForType U_ICU_ENTRY_POINT_RENAME(uplrules_openForType)
 #define uplrules_select U_ICU_ENTRY_POINT_RENAME(uplrules_select)
+#define uplrules_selectForRange U_ICU_ENTRY_POINT_RENAME(uplrules_selectForRange)
 #define uplrules_selectFormatted U_ICU_ENTRY_POINT_RENAME(uplrules_selectFormatted)
 #define uplrules_selectWithFormat U_ICU_ENTRY_POINT_RENAME(uplrules_selectWithFormat)
 #define uplug_closeLibrary U_ICU_ENTRY_POINT_RENAME(uplug_closeLibrary)
diff --git a/libandroidicu/include/unicode/ures.h b/libandroidicu/include/unicode/ures.h
index c9dfc2d..fff8404 100644
--- a/libandroidicu/include/unicode/ures.h
+++ b/libandroidicu/include/unicode/ures.h
@@ -166,7 +166,7 @@
  * @see ures_close
  * @stable ICU 2.0
  */
-U_STABLE UResourceBundle*  U_EXPORT2
+U_CAPI UResourceBundle*  U_EXPORT2
 ures_open(const char*    packageName,
           const char*  locale,
           UErrorCode*     status);
@@ -189,7 +189,7 @@
  * @see ures_close
  * @stable ICU 2.0
  */
-U_STABLE UResourceBundle* U_EXPORT2
+U_CAPI UResourceBundle* U_EXPORT2
 ures_openDirect(const char* packageName,
                 const char* locale,
                 UErrorCode* status);
@@ -212,7 +212,7 @@
  * @see ures_open
  * @stable ICU 2.0
  */
-U_STABLE UResourceBundle* U_EXPORT2
+U_CAPI UResourceBundle* U_EXPORT2
 ures_openU(const UChar* packageName,
            const char* locale,
            UErrorCode* status);
@@ -248,7 +248,7 @@
  * @see ures_open
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ures_close(UResourceBundle* resourceBundle);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -294,7 +294,7 @@
  *                    as specified in the resource bundle or its parent.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ures_getVersion(const UResourceBundle* resB,
                 UVersionInfo versionInfo);
 
@@ -328,7 +328,7 @@
  * @return  A Locale name
  * @stable ICU 2.8
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 ures_getLocaleByType(const UResourceBundle* resourceBundle,
                      ULocDataLocaleType type,
                      UErrorCode* status);
@@ -351,7 +351,7 @@
  * @param status The error code.
  * @internal
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 ures_openFillIn(UResourceBundle *r,
                 const char* packageName,
                 const char* localeID,
@@ -375,7 +375,7 @@
  * @see ures_getUInt
  * @stable ICU 2.0
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ures_getString(const UResourceBundle* resourceBundle,
                int32_t* len,
                UErrorCode* status);
@@ -386,10 +386,10 @@
  * it may need to be copied, or transformed from UTF-16 using u_strToUTF8()
  * or equivalent.
  *
- * If forceCopy==TRUE, then the string is always written to the dest buffer
+ * If forceCopy==true, then the string is always written to the dest buffer
  * and dest is returned.
  *
- * If forceCopy==FALSE, then the string is returned as a pointer if possible,
+ * If forceCopy==false, then the string is returned as a pointer if possible,
  * without needing a dest buffer (it can be NULL). If the string needs to be
  * copied or transformed, then it may be placed into dest at an arbitrary offset.
  *
@@ -407,10 +407,10 @@
  *               terminating NUL, even in case of U_BUFFER_OVERFLOW_ERROR.
  *               Can be NULL, meaning capacity=0 and the string length is not
  *               returned to the caller.
- * @param forceCopy If TRUE, then the output string will always be written to
+ * @param forceCopy If true, then the output string will always be written to
  *                  dest, with U_BUFFER_OVERFLOW_ERROR and
  *                  U_STRING_NOT_TERMINATED_WARNING set if appropriate.
- *                  If FALSE, then the dest buffer may or may not contain a
+ *                  If false, then the dest buffer may or may not contain a
  *                  copy of the string. dest may or may not be modified.
  *                  If a copy needs to be written, then the UErrorCode parameter
  *                  indicates overflow etc. as usual.
@@ -427,7 +427,7 @@
  * @see u_strToUTF8
  * @stable ICU 3.6
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ures_getUTF8String(const UResourceBundle *resB,
                    char *dest, int32_t *length,
                    UBool forceCopy,
@@ -450,7 +450,7 @@
  * @see ures_getUInt
  * @stable ICU 2.0
  */
-U_STABLE const uint8_t* U_EXPORT2
+U_CAPI const uint8_t* U_EXPORT2
 ures_getBinary(const UResourceBundle* resourceBundle,
                int32_t* len,
                UErrorCode* status);
@@ -472,7 +472,7 @@
  * @see ures_getUInt
  * @stable ICU 2.0
  */
-U_STABLE const int32_t* U_EXPORT2
+U_CAPI const int32_t* U_EXPORT2
 ures_getIntVector(const UResourceBundle* resourceBundle,
                   int32_t* len,
                   UErrorCode* status);
@@ -493,7 +493,7 @@
  * @see ures_getString
  * @stable ICU 2.0
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 ures_getUInt(const UResourceBundle* resourceBundle,
              UErrorCode *status);
 
@@ -513,7 +513,7 @@
  * @see ures_getString
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ures_getInt(const UResourceBundle* resourceBundle,
             UErrorCode *status);
 
@@ -527,7 +527,7 @@
  * @return number of resources in a given resource.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ures_getSize(const UResourceBundle *resourceBundle);
 
 /**
@@ -538,7 +538,7 @@
  * @see UResType
  * @stable ICU 2.0
  */
-U_STABLE UResType U_EXPORT2
+U_CAPI UResType U_EXPORT2
 ures_getType(const UResourceBundle *resourceBundle);
 
 /**
@@ -549,7 +549,7 @@
  * @return a key associated to this resource, or NULL if it doesn't have a key
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ures_getKey(const UResourceBundle *resourceBundle);
 
 /* ITERATION API
@@ -562,17 +562,17 @@
  * @param resourceBundle a resource
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ures_resetIterator(UResourceBundle *resourceBundle);
 
 /**
  * Checks whether the given resource has another element to iterate over.
  *
  * @param resourceBundle a resource
- * @return TRUE if there are more elements, FALSE if there is no more elements
+ * @return true if there are more elements, false if there is no more elements
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ures_hasNext(const UResourceBundle *resourceBundle);
 
 /**
@@ -587,7 +587,7 @@
  * @return                  a pointer to a UResourceBundle struct. If fill in param was NULL, caller must close it
  * @stable ICU 2.0
  */
-U_STABLE UResourceBundle* U_EXPORT2
+U_CAPI UResourceBundle* U_EXPORT2
 ures_getNextResource(UResourceBundle *resourceBundle,
                      UResourceBundle *fillIn,
                      UErrorCode *status);
@@ -604,7 +604,7 @@
  * @return a pointer to a zero-terminated UChar array which lives in a memory mapped/DLL file.
  * @stable ICU 2.0
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ures_getNextString(UResourceBundle *resourceBundle,
                    int32_t* len,
                    const char ** key,
@@ -622,7 +622,7 @@
  * @return                  a pointer to a UResourceBundle struct. If fill in param was NULL, caller must close it
  * @stable ICU 2.0
  */
-U_STABLE UResourceBundle* U_EXPORT2
+U_CAPI UResourceBundle* U_EXPORT2
 ures_getByIndex(const UResourceBundle *resourceBundle,
                 int32_t indexR,
                 UResourceBundle *fillIn,
@@ -639,7 +639,7 @@
  * @return                  a pointer to a zero-terminated UChar array which lives in a memory mapped/DLL file.
  * @stable ICU 2.0
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ures_getStringByIndex(const UResourceBundle *resourceBundle,
                       int32_t indexS,
                       int32_t* len,
@@ -651,10 +651,10 @@
  * it may need to be copied, or transformed from UTF-16 using u_strToUTF8()
  * or equivalent.
  *
- * If forceCopy==TRUE, then the string is always written to the dest buffer
+ * If forceCopy==true, then the string is always written to the dest buffer
  * and dest is returned.
  *
- * If forceCopy==FALSE, then the string is returned as a pointer if possible,
+ * If forceCopy==false, then the string is returned as a pointer if possible,
  * without needing a dest buffer (it can be NULL). If the string needs to be
  * copied or transformed, then it may be placed into dest at an arbitrary offset.
  *
@@ -673,10 +673,10 @@
  *               terminating NUL, even in case of U_BUFFER_OVERFLOW_ERROR.
  *               Can be NULL, meaning capacity=0 and the string length is not
  *               returned to the caller.
- * @param forceCopy If TRUE, then the output string will always be written to
+ * @param forceCopy If true, then the output string will always be written to
  *                  dest, with U_BUFFER_OVERFLOW_ERROR and
  *                  U_STRING_NOT_TERMINATED_WARNING set if appropriate.
- *                  If FALSE, then the dest buffer may or may not contain a
+ *                  If false, then the dest buffer may or may not contain a
  *                  copy of the string. dest may or may not be modified.
  *                  If a copy needs to be written, then the UErrorCode parameter
  *                  indicates overflow etc. as usual.
@@ -693,7 +693,7 @@
  * @see u_strToUTF8
  * @stable ICU 3.6
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ures_getUTF8StringByIndex(const UResourceBundle *resB,
                           int32_t stringIndex,
                           char *dest, int32_t *pLength,
@@ -712,7 +712,7 @@
  * @return                  a pointer to a UResourceBundle struct. If fill in param was NULL, caller must close it
  * @stable ICU 2.0
  */
-U_STABLE UResourceBundle* U_EXPORT2
+U_CAPI UResourceBundle* U_EXPORT2
 ures_getByKey(const UResourceBundle *resourceBundle,
               const char* key,
               UResourceBundle *fillIn,
@@ -730,7 +730,7 @@
  * @return                  a pointer to a zero-terminated UChar array which lives in a memory mapped/DLL file.
  * @stable ICU 2.0
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ures_getStringByKey(const UResourceBundle *resB,
                     const char* key,
                     int32_t* len,
@@ -744,10 +744,10 @@
  * it may need to be copied, or transformed from UTF-16 using u_strToUTF8()
  * or equivalent.
  *
- * If forceCopy==TRUE, then the string is always written to the dest buffer
+ * If forceCopy==true, then the string is always written to the dest buffer
  * and dest is returned.
  *
- * If forceCopy==FALSE, then the string is returned as a pointer if possible,
+ * If forceCopy==false, then the string is returned as a pointer if possible,
  * without needing a dest buffer (it can be NULL). If the string needs to be
  * copied or transformed, then it may be placed into dest at an arbitrary offset.
  *
@@ -766,10 +766,10 @@
  *               terminating NUL, even in case of U_BUFFER_OVERFLOW_ERROR.
  *               Can be NULL, meaning capacity=0 and the string length is not
  *               returned to the caller.
- * @param forceCopy If TRUE, then the output string will always be written to
+ * @param forceCopy If true, then the output string will always be written to
  *                  dest, with U_BUFFER_OVERFLOW_ERROR and
  *                  U_STRING_NOT_TERMINATED_WARNING set if appropriate.
- *                  If FALSE, then the dest buffer may or may not contain a
+ *                  If false, then the dest buffer may or may not contain a
  *                  copy of the string. dest may or may not be modified.
  *                  If a copy needs to be written, then the UErrorCode parameter
  *                  indicates overflow etc. as usual.
@@ -786,7 +786,7 @@
  * @see u_strToUTF8
  * @stable ICU 3.6
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ures_getUTF8StringByKey(const UResourceBundle *resB,
                         const char *key,
                         char *dest, int32_t *pLength,
@@ -814,7 +814,7 @@
     int32_t len = 0;
     const UChar *r = ures_getString(resB, &len, status);
     if(U_SUCCESS(*status)) {
-        result.setTo(TRUE, r, len);
+        result.setTo(true, r, len);
     } else {
         result.setToBogus();
     }
@@ -839,7 +839,7 @@
     int32_t len = 0;
     const UChar* r = ures_getNextString(resB, &len, key, status);
     if(U_SUCCESS(*status)) {
-        result.setTo(TRUE, r, len);
+        result.setTo(true, r, len);
     } else {
         result.setToBogus();
     }
@@ -861,7 +861,7 @@
     int32_t len = 0;
     const UChar* r = ures_getStringByIndex(resB, indexS, &len, status);
     if(U_SUCCESS(*status)) {
-        result.setTo(TRUE, r, len);
+        result.setTo(true, r, len);
     } else {
         result.setToBogus();
     }
@@ -884,7 +884,7 @@
     int32_t len = 0;
     const UChar* r = ures_getStringByKey(resB, key, &len, status);
     if(U_SUCCESS(*status)) {
-        result.setTo(TRUE, r, len);
+        result.setTo(true, r, len);
     } else {
         result.setToBogus();
     }
@@ -903,7 +903,7 @@
  * @param status error code
  * @stable ICU 3.2
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ures_openAvailableLocales(const char *packageName, UErrorCode *status);
 
 
diff --git a/libandroidicu/include/unicode/uscript.h b/libandroidicu/include/unicode/uscript.h
index 53d57ab..8448afd 100644
--- a/libandroidicu/include/unicode/uscript.h
+++ b/libandroidicu/include/unicode/uscript.h
@@ -514,7 +514,7 @@
  * @return The number of script codes filled in the buffer passed in
  * @stable ICU 2.4
  */
-U_STABLE int32_t  U_EXPORT2
+U_CAPI int32_t  U_EXPORT2
 uscript_getCode(const char* nameOrAbbrOrLocale,UScriptCode* fillIn,int32_t capacity,UErrorCode *err);
 
 /**
@@ -527,7 +527,7 @@
  * or NULL if scriptCode is invalid
  * @stable ICU 2.4
  */
-U_STABLE const char*  U_EXPORT2
+U_CAPI const char*  U_EXPORT2
 uscript_getName(UScriptCode scriptCode);
 
 /**
@@ -539,7 +539,7 @@
  * @return short script name (4-letter code), or NULL if scriptCode is invalid
  * @stable ICU 2.4
  */
-U_STABLE const char*  U_EXPORT2
+U_CAPI const char*  U_EXPORT2
 uscript_getShortName(UScriptCode scriptCode);
 
 /**
@@ -550,7 +550,7 @@
  * @return The UScriptCode, or 0 if codepoint is invalid
  * @stable ICU 2.4
  */
-U_STABLE UScriptCode  U_EXPORT2
+U_CAPI UScriptCode  U_EXPORT2
 uscript_getScript(UChar32 codepoint, UErrorCode *err);
 
 /**
@@ -562,10 +562,10 @@
  * For more information, see UAX #24: http://www.unicode.org/reports/tr24/.
  * @param c code point
  * @param sc script code
- * @return TRUE if sc is in Script_Extensions(c)
+ * @return true if sc is in Script_Extensions(c)
  * @stable ICU 49
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uscript_hasScript(UChar32 c, UScriptCode sc);
 
 /**
@@ -597,7 +597,7 @@
  *         written to scripts unless U_BUFFER_OVERFLOW_ERROR indicates insufficient capacity
  * @stable ICU 49
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uscript_getScriptExtensions(UChar32 c,
                             UScriptCode *scripts, int32_t capacity,
                             UErrorCode *errorCode);
@@ -636,7 +636,7 @@
  * @return the string length, even if U_BUFFER_OVERFLOW_ERROR
  * @stable ICU 51
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uscript_getSampleString(UScriptCode script, UChar *dest, int32_t capacity, UErrorCode *pErrorCode);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -668,41 +668,41 @@
  * @see UScriptUsage
  * @stable ICU 51
  */
-U_STABLE UScriptUsage U_EXPORT2
+U_CAPI UScriptUsage U_EXPORT2
 uscript_getUsage(UScriptCode script);
 
 /**
- * Returns TRUE if the script is written right-to-left.
+ * Returns true if the script is written right-to-left.
  * For example, Arab and Hebr.
  *
  * @param script script code
- * @return TRUE if the script is right-to-left
+ * @return true if the script is right-to-left
  * @stable ICU 51
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uscript_isRightToLeft(UScriptCode script);
 
 /**
- * Returns TRUE if the script allows line breaks between letters (excluding hyphenation).
+ * Returns true if the script allows line breaks between letters (excluding hyphenation).
  * Such a script typically requires dictionary-based line breaking.
  * For example, Hani and Thai.
  *
  * @param script script code
- * @return TRUE if the script allows line breaks between letters
+ * @return true if the script allows line breaks between letters
  * @stable ICU 51
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uscript_breaksBetweenLetters(UScriptCode script);
 
 /**
- * Returns TRUE if in modern (or most recent) usage of the script case distinctions are customary.
+ * Returns true if in modern (or most recent) usage of the script case distinctions are customary.
  * For example, Latn and Cyrl.
  *
  * @param script script code
- * @return TRUE if the script is cased
+ * @return true if the script is cased
  * @stable ICU 51
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uscript_isCased(UScriptCode script);
 
 #endif
diff --git a/libandroidicu/include/unicode/usearch.h b/libandroidicu/include/unicode/usearch.h
index 3b64c7b..65747cb 100644
--- a/libandroidicu/include/unicode/usearch.h
+++ b/libandroidicu/include/unicode/usearch.h
@@ -28,8 +28,8 @@
  * \brief C API: StringSearch
  *
  * C APIs for an engine that provides language-sensitive text searching based 
- * on the comparison rules defined in a <tt>UCollator</tt> data struct,
- * see <tt>ucol.h</tt>. This ensures that language eccentricity can be 
+ * on the comparison rules defined in a <code>UCollator</code> data struct,
+ * see <code>ucol.h</code>. This ensures that language eccentricity can be 
  * handled, e.g. for the German collator, characters &szlig; and SS will be matched 
  * if case is chosen to be ignored. 
  * See the <a href="http://source.icu-project.org/repos/icu/icuhtml/trunk/design/collation/ICU_collation_design.htm">
@@ -57,18 +57,18 @@
  * Option 2. will be the default.
  * <p>
  * This search has APIs similar to that of other text iteration mechanisms 
- * such as the break iterators in <tt>ubrk.h</tt>. Using these 
+ * such as the break iterators in <code>ubrk.h</code>. Using these 
  * APIs, it is easy to scan through text looking for all occurrences of 
  * a given pattern. This search iterator allows changing of direction by 
- * calling a <tt>reset</tt> followed by a <tt>next</tt> or <tt>previous</tt>. 
- * Though a direction change can occur without calling <tt>reset</tt> first,  
+ * calling a <code>reset</code> followed by a <code>next</code> or <code>previous</code>. 
+ * Though a direction change can occur without calling <code>reset</code> first,  
  * this operation comes with some speed penalty.
  * Generally, match results in the forward direction will match the result 
  * matches in the backwards direction in the reverse order
  * <p>
- * <tt>usearch.h</tt> provides APIs to specify the starting position 
- * within the text string to be searched, e.g. <tt>usearch_setOffset</tt>,
- * <tt>usearch_preceding</tt> and <tt>usearch_following</tt>. Since the 
+ * <code>usearch.h</code> provides APIs to specify the starting position 
+ * within the text string to be searched, e.g. <code>usearch_setOffset</code>,
+ * <code>usearch_preceding</code> and <code>usearch_following</code>. Since the 
  * starting position will be set as it is specified, please take note that 
  * there are some dangerous positions which the search may render incorrect 
  * results:
@@ -104,7 +104,7 @@
  * Though collator attributes will be taken into consideration while 
  * performing matches, there are no APIs here for setting and getting the 
  * attributes. These attributes can be set by getting the collator
- * from <tt>usearch_getCollator</tt> and using the APIs in <tt>ucol.h</tt>.
+ * from <code>usearch_getCollator</code> and using the APIs in <code>ucol.h</code>.
  * Lastly to update String Search to the new collator attributes, 
  * usearch_reset() has to be called.
  * <p> 
@@ -280,9 +280,13 @@
 /* open and close ------------------------------------------------------ */
 
 /**
-* Creating a search iterator data struct using the argument locale language
+* Creates a String Search iterator data struct using the argument locale language
 * rule set. A collator will be created in the process, which will be owned by
-* this search and will be deleted in <tt>usearch_close</tt>.
+* this String Search and will be deleted in <code>usearch_close</code>.
+*
+* The UStringSearch retains a pointer to both the pattern and text strings.
+* The caller must not modify or delete them while using the UStringSearch.
+*
 * @param pattern for matching
 * @param patternlength length of the pattern, -1 for null-termination
 * @param text text string
@@ -291,9 +295,9 @@
 * @param breakiter A BreakIterator that will be used to restrict the points
 *                  at which matches are detected. If a match is found, but 
 *                  the match's start or end index is not a boundary as 
-*                  determined by the <tt>BreakIterator</tt>, the match will 
+*                  determined by the <code>BreakIterator</code>, the match will 
 *                  be rejected and another will be searched for. 
-*                  If this parameter is <tt>NULL</tt>, no break detection is 
+*                  If this parameter is <code>NULL</code>, no break detection is 
 *                  attempted.
 * @param status for errors if it occurs. If pattern or text is NULL, or if
 *               patternlength or textlength is 0 then an 
@@ -301,54 +305,59 @@
 * @return search iterator data structure, or NULL if there is an error.
 * @stable ICU 2.4
 */
-U_STABLE UStringSearch * U_EXPORT2 usearch_open(const UChar          *pattern, 
-                                              int32_t         patternlength, 
-                                        const UChar          *text, 
+U_CAPI UStringSearch * U_EXPORT2 usearch_open(const UChar    *pattern,
+                                              int32_t         patternlength,
+                                        const UChar          *text,
                                               int32_t         textlength,
                                         const char           *locale,
                                               UBreakIterator *breakiter,
                                               UErrorCode     *status);
 
 /**
-* Creating a search iterator data struct using the argument collator language
-* rule set. Note, user retains the ownership of this collator, thus the 
+* Creates a String Search iterator data struct using the argument collator language
+* rule set. Note, user retains the ownership of this collator, thus the
 * responsibility of deletion lies with the user.
-* NOTE: string search cannot be instantiated from a collator that has 
-* collate digits as numbers (CODAN) turned on.
+
+* NOTE: String Search cannot be instantiated from a collator that has
+* collate digits as numbers (CODAN) turned on (UCOL_NUMERIC_COLLATION).
+*
+* The UStringSearch retains a pointer to both the pattern and text strings.
+* The caller must not modify or delete them while using the UStringSearch.
+*
 * @param pattern for matching
 * @param patternlength length of the pattern, -1 for null-termination
 * @param text text string
 * @param textlength length of the text string, -1 for null-termination
 * @param collator used for the language rules
 * @param breakiter A BreakIterator that will be used to restrict the points
-*                  at which matches are detected. If a match is found, but 
-*                  the match's start or end index is not a boundary as 
-*                  determined by the <tt>BreakIterator</tt>, the match will 
-*                  be rejected and another will be searched for. 
-*                  If this parameter is <tt>NULL</tt>, no break detection is 
+*                  at which matches are detected. If a match is found, but
+*                  the match's start or end index is not a boundary as
+*                  determined by the <code>BreakIterator</code>, the match will
+*                  be rejected and another will be searched for.
+*                  If this parameter is <code>NULL</code>, no break detection is
 *                  attempted.
-* @param status for errors if it occurs. If collator, pattern or text is NULL, 
-*               or if patternlength or textlength is 0 then an 
+* @param status for errors if it occurs. If collator, pattern or text is NULL,
+*               or if patternlength or textlength is 0 then an
 *               U_ILLEGAL_ARGUMENT_ERROR is returned.
 * @return search iterator data structure, or NULL if there is an error.
 * @stable ICU 2.4
 */
-U_STABLE UStringSearch * U_EXPORT2 usearch_openFromCollator(
-                                         const UChar *pattern, 
+U_CAPI UStringSearch * U_EXPORT2 usearch_openFromCollator(
+                                         const UChar          *pattern,
                                                int32_t         patternlength,
-                                         const UChar          *text, 
+                                         const UChar          *text,
                                                int32_t         textlength,
                                          const UCollator      *collator,
                                                UBreakIterator *breakiter,
                                                UErrorCode     *status);
 
 /**
-* Destroying and cleaning up the search iterator data struct.
-* If a collator is created in <tt>usearch_open</tt>, it will be destroyed here.
-* @param searchiter data struct to clean up
-* @stable ICU 2.4
-*/
-U_STABLE void U_EXPORT2 usearch_close(UStringSearch *searchiter);
+ * Destroys and cleans up the String Search iterator data struct.
+ * If a collator was created in <code>usearch_open</code>, then it will be destroyed here.
+ * @param searchiter The UStringSearch to clean up
+ * @stable ICU 2.4
+ */
+U_CAPI void U_EXPORT2 usearch_close(UStringSearch *searchiter);
 
 #if U_SHOW_CPLUSPLUS_API
 
@@ -386,24 +395,24 @@
 * @param status error status if any.
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_setOffset(UStringSearch *strsrch, 
-                                        int32_t    position,
+U_CAPI void U_EXPORT2 usearch_setOffset(UStringSearch *strsrch,
+                                        int32_t        position,
                                         UErrorCode    *status);
 
 /**
 * Return the current index in the string text being searched.
 * If the iteration has gone past the end of the text (or past the beginning 
-* for a backwards search), <tt>USEARCH_DONE</tt> is returned.
+* for a backwards search), <code>USEARCH_DONE</code> is returned.
 * @param strsrch search iterator data struct
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_getOffset(const UStringSearch *strsrch);
+U_CAPI int32_t U_EXPORT2 usearch_getOffset(const UStringSearch *strsrch);
     
 /**
 * Sets the text searching attributes located in the enum USearchAttribute
 * with values from the enum USearchAttributeValue.
-* <tt>USEARCH_DEFAULT</tt> can be used for all attributes for resetting.
+* <code>USEARCH_DEFAULT</code> can be used for all attributes for resetting.
 * @param strsrch search iterator data struct
 * @param attribute text attribute to be set
 * @param value text attribute value
@@ -411,7 +420,7 @@
 * @see #usearch_getAttribute
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_setAttribute(UStringSearch         *strsrch, 
+U_CAPI void U_EXPORT2 usearch_setAttribute(UStringSearch         *strsrch,
                                            USearchAttribute       attribute,
                                            USearchAttributeValue  value,
                                            UErrorCode            *status);
@@ -424,19 +433,19 @@
 * @see #usearch_setAttribute
 * @stable ICU 2.4
 */
-U_STABLE USearchAttributeValue U_EXPORT2 usearch_getAttribute(
+U_CAPI USearchAttributeValue U_EXPORT2 usearch_getAttribute(
                                          const UStringSearch    *strsrch,
                                                USearchAttribute  attribute);
 
 /**
 * Returns the index to the match in the text string that was searched.
 * This call returns a valid result only after a successful call to 
-* <tt>usearch_first</tt>, <tt>usearch_next</tt>, <tt>usearch_previous</tt>, 
-* or <tt>usearch_last</tt>.
+* <code>usearch_first</code>, <code>usearch_next</code>, <code>usearch_previous</code>, 
+* or <code>usearch_last</code>.
 * Just after construction, or after a searching method returns 
-* <tt>USEARCH_DONE</tt>, this method will return <tt>USEARCH_DONE</tt>.
+* <code>USEARCH_DONE</code>, this method will return <code>USEARCH_DONE</code>.
 * <p>
-* Use <tt>usearch_getMatchedLength</tt> to get the matched string length.
+* Use <code>usearch_getMatchedLength</code> to get the matched string length.
 * @param strsrch search iterator data struct
 * @return index to a substring within the text string that is being 
 *         searched.
@@ -447,16 +456,16 @@
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_getMatchedStart(
+U_CAPI int32_t U_EXPORT2 usearch_getMatchedStart(
                                                const UStringSearch *strsrch);
     
 /**
 * Returns the length of text in the string which matches the search pattern. 
 * This call returns a valid result only after a successful call to 
-* <tt>usearch_first</tt>, <tt>usearch_next</tt>, <tt>usearch_previous</tt>, 
-* or <tt>usearch_last</tt>.
+* <code>usearch_first</code>, <code>usearch_next</code>, <code>usearch_previous</code>, 
+* or <code>usearch_last</code>.
 * Just after construction, or after a searching method returns 
-* <tt>USEARCH_DONE</tt>, this method will return 0.
+* <code>USEARCH_DONE</code>, this method will return 0.
 * @param strsrch search iterator data struct
 * @return The length of the match in the string text, or 0 if there is no 
 *         match currently.
@@ -467,22 +476,22 @@
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_getMatchedLength(
+U_CAPI int32_t U_EXPORT2 usearch_getMatchedLength(
                                                const UStringSearch *strsrch);
 
 /**
 * Returns the text that was matched by the most recent call to 
-* <tt>usearch_first</tt>, <tt>usearch_next</tt>, <tt>usearch_previous</tt>, 
-* or <tt>usearch_last</tt>.
+* <code>usearch_first</code>, <code>usearch_next</code>, <code>usearch_previous</code>, 
+* or <code>usearch_last</code>.
 * If the iterator is not pointing at a valid match (e.g. just after 
-* construction or after <tt>USEARCH_DONE</tt> has been returned, returns
+* construction or after <code>USEARCH_DONE</code> has been returned, returns
 * an empty string. If result is not large enough to store the matched text,
 * result will be filled with the partial text and an U_BUFFER_OVERFLOW_ERROR 
 * will be returned in status. result will be null-terminated whenever 
 * possible. If the buffer fits the matched text exactly, a null-termination 
 * is not possible, then a U_STRING_NOT_TERMINATED_ERROR set in status.
 * Pre-flighting can be either done with length = 0 or the API 
-* <tt>usearch_getMatchedLength</tt>.
+* <code>usearch_getMatchedLength</code>.
 * @param strsrch search iterator data struct
 * @param result UChar buffer to store the matched string
 * @param resultCapacity length of the result buffer
@@ -495,7 +504,7 @@
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_getMatchedText(const UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_getMatchedText(const UStringSearch *strsrch, 
                                             UChar         *result, 
                                             int32_t        resultCapacity, 
                                             UErrorCode    *status);
@@ -509,38 +518,42 @@
 * @param breakiter A BreakIterator that will be used to restrict the points
 *                  at which matches are detected. If a match is found, but 
 *                  the match's start or end index is not a boundary as 
-*                  determined by the <tt>BreakIterator</tt>, the match will 
+*                  determined by the <code>BreakIterator</code>, the match will 
 *                  be rejected and another will be searched for. 
-*                  If this parameter is <tt>NULL</tt>, no break detection is 
+*                  If this parameter is <code>NULL</code>, no break detection is 
 *                  attempted.
 * @param status for errors if it occurs
 * @see #usearch_getBreakIterator
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_setBreakIterator(UStringSearch  *strsrch, 
+U_CAPI void U_EXPORT2 usearch_setBreakIterator(UStringSearch  *strsrch, 
                                                UBreakIterator *breakiter,
                                                UErrorCode     *status);
 
 /**
 * Returns the BreakIterator that is used to restrict the points at which 
 * matches are detected. This will be the same object that was passed to the 
-* constructor or to <tt>usearch_setBreakIterator</tt>. Note that 
-* <tt>NULL</tt> 
+* constructor or to <code>usearch_setBreakIterator</code>. Note that 
+* <code>NULL</code> 
 * is a legal value; it means that break detection should not be attempted.
 * @param strsrch search iterator data struct
 * @return break iterator used
 * @see #usearch_setBreakIterator
 * @stable ICU 2.4
 */
-U_STABLE const UBreakIterator * U_EXPORT2 usearch_getBreakIterator(
+U_CAPI const UBreakIterator * U_EXPORT2 usearch_getBreakIterator(
                                               const UStringSearch *strsrch);
     
 #endif
-    
+
 /**
 * Set the string text to be searched. Text iteration will hence begin at the 
 * start of the text string. This method is useful if you want to re-use an 
 * iterator to search for the same pattern within a different body of text.
+*
+* The UStringSearch retains a pointer to the text string. The caller must not
+* modify or delete the string while using the UStringSearch.
+*
 * @param strsrch search iterator data struct
 * @param text new string to look for match
 * @param textlength length of the new string, -1 for null-termination
@@ -550,7 +563,7 @@
 * @see #usearch_getText
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_setText(      UStringSearch *strsrch, 
+U_CAPI void U_EXPORT2 usearch_setText(      UStringSearch *strsrch, 
                                       const UChar         *text,
                                             int32_t        textlength,
                                             UErrorCode    *status);
@@ -563,20 +576,20 @@
 * @see #usearch_setText
 * @stable ICU 2.4
 */
-U_STABLE const UChar * U_EXPORT2 usearch_getText(const UStringSearch *strsrch, 
+U_CAPI const UChar * U_EXPORT2 usearch_getText(const UStringSearch *strsrch, 
                                                int32_t       *length);
 
 /**
 * Gets the collator used for the language rules. 
 * <p>
-* Deleting the returned <tt>UCollator</tt> before calling 
-* <tt>usearch_close</tt> would cause the string search to fail.
-* <tt>usearch_close</tt> will delete the collator if this search owns it.
+* Deleting the returned <code>UCollator</code> before calling 
+* <code>usearch_close</code> would cause the string search to fail.
+* <code>usearch_close</code> will delete the collator if this search owns it.
 * @param strsrch search iterator data struct
 * @return collator
 * @stable ICU 2.4
 */
-U_STABLE UCollator * U_EXPORT2 usearch_getCollator(
+U_CAPI UCollator * U_EXPORT2 usearch_getCollator(
                                                const UStringSearch *strsrch);
 
 /**
@@ -589,7 +602,7 @@
 * @param status for errors if it occurs
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_setCollator(      UStringSearch *strsrch, 
+U_CAPI void U_EXPORT2 usearch_setCollator(      UStringSearch *strsrch, 
                                           const UCollator     *collator,
                                                 UErrorCode    *status);
 
@@ -597,6 +610,10 @@
 * Sets the pattern used for matching.
 * Internal data like the Boyer Moore table will be recalculated, but the 
 * iterator's position is unchanged.
+*
+* The UStringSearch retains a pointer to the pattern string. The caller must not
+* modify or delete the string while using the UStringSearch.
+*
 * @param strsrch search iterator data struct
 * @param pattern string
 * @param patternlength pattern length, -1 for null-terminated string
@@ -605,7 +622,7 @@
 *               done to strsrch.
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_setPattern(      UStringSearch *strsrch, 
+U_CAPI void U_EXPORT2 usearch_setPattern(      UStringSearch *strsrch, 
                                          const UChar         *pattern,
                                                int32_t        patternlength,
                                                UErrorCode    *status);
@@ -618,7 +635,7 @@
 * @return pattern string
 * @stable ICU 2.4
 */
-U_STABLE const UChar * U_EXPORT2 usearch_getPattern(
+U_CAPI const UChar * U_EXPORT2 usearch_getPattern(
                                                const UStringSearch *strsrch, 
                                                      int32_t       *length);
 
@@ -628,28 +645,28 @@
 * Returns the first index at which the string text matches the search 
 * pattern.  
 * The iterator is adjusted so that its current index (as returned by 
-* <tt>usearch_getOffset</tt>) is the match position if one was found.
-* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and
-* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>.
+* <code>usearch_getOffset</code>) is the match position if one was found.
+* If a match is not found, <code>USEARCH_DONE</code> will be returned and
+* the iterator will be adjusted to the index <code>USEARCH_DONE</code>.
 * @param strsrch search iterator data struct
 * @param status for errors if it occurs
 * @return The character index of the first match, or 
-* <tt>USEARCH_DONE</tt> if there are no matches.
+* <code>USEARCH_DONE</code> if there are no matches.
 * @see #usearch_getOffset
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_first(UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_first(UStringSearch *strsrch, 
                                            UErrorCode    *status);
 
 /**
-* Returns the first index equal or greater than <tt>position</tt> at which
+* Returns the first index equal or greater than <code>position</code> at which
 * the string text
 * matches the search pattern. The iterator is adjusted so that its current 
-* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 
+* index (as returned by <code>usearch_getOffset</code>) is the match position if 
 * one was found.
-* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and
-* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>
+* If a match is not found, <code>USEARCH_DONE</code> will be returned and
+* the iterator will be adjusted to the index <code>USEARCH_DONE</code>
 * <p>
 * Search positions that may render incorrect results are highlighted in the
 * header comments. If position is less than or greater than the text range 
@@ -657,60 +674,60 @@
 * @param strsrch search iterator data struct
 * @param position to start the search at
 * @param status for errors if it occurs
-* @return The character index of the first match following <tt>pos</tt>,
-*         or <tt>USEARCH_DONE</tt> if there are no matches.
+* @return The character index of the first match following <code>pos</code>,
+*         or <code>USEARCH_DONE</code> if there are no matches.
 * @see #usearch_getOffset
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_following(UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_following(UStringSearch *strsrch, 
                                                int32_t    position, 
                                                UErrorCode    *status);
     
 /**
 * Returns the last index in the target text at which it matches the search 
 * pattern. The iterator is adjusted so that its current 
-* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 
+* index (as returned by <code>usearch_getOffset</code>) is the match position if 
 * one was found.
-* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and
-* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>.
+* If a match is not found, <code>USEARCH_DONE</code> will be returned and
+* the iterator will be adjusted to the index <code>USEARCH_DONE</code>.
 * @param strsrch search iterator data struct
 * @param status for errors if it occurs
-* @return The index of the first match, or <tt>USEARCH_DONE</tt> if there 
+* @return The index of the first match, or <code>USEARCH_DONE</code> if there 
 *         are no matches.
 * @see #usearch_getOffset
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_last(UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_last(UStringSearch *strsrch, 
                                           UErrorCode    *status);
 
 /**
-* Returns the first index less than <tt>position</tt> at which the string text 
+* Returns the first index less than <code>position</code> at which the string text 
 * matches the search pattern. The iterator is adjusted so that its current 
-* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 
+* index (as returned by <code>usearch_getOffset</code>) is the match position if 
 * one was found.
-* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and
-* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>
+* If a match is not found, <code>USEARCH_DONE</code> will be returned and
+* the iterator will be adjusted to the index <code>USEARCH_DONE</code>
 * <p>
 * Search positions that may render incorrect results are highlighted in the
 * header comments. If position is less than or greater than the text range 
 * for searching, an U_INDEX_OUTOFBOUNDS_ERROR will be returned.
 * <p>
-* When <tt>USEARCH_OVERLAP</tt> option is off, the last index of the
-* result match is always less than <tt>position</tt>.
-* When <tt>USERARCH_OVERLAP</tt> is on, the result match may span across
-* <tt>position</tt>.
+* When <code>USEARCH_OVERLAP</code> option is off, the last index of the
+* result match is always less than <code>position</code>.
+* When <code>USERARCH_OVERLAP</code> is on, the result match may span across
+* <code>position</code>.
 * @param strsrch search iterator data struct
 * @param position index position the search is to begin at
 * @param status for errors if it occurs
-* @return The character index of the first match preceding <tt>pos</tt>,
-*         or <tt>USEARCH_DONE</tt> if there are no matches.
+* @return The character index of the first match preceding <code>pos</code>,
+*         or <code>USEARCH_DONE</code> if there are no matches.
 * @see #usearch_getOffset
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_preceding(UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_preceding(UStringSearch *strsrch, 
                                                int32_t    position, 
                                                UErrorCode    *status);
     
@@ -718,40 +735,40 @@
 * Returns the index of the next point at which the string text matches the
 * search pattern, starting from the current position.
 * The iterator is adjusted so that its current 
-* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 
+* index (as returned by <code>usearch_getOffset</code>) is the match position if 
 * one was found.
-* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and
-* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>
+* If a match is not found, <code>USEARCH_DONE</code> will be returned and
+* the iterator will be adjusted to the index <code>USEARCH_DONE</code>
 * @param strsrch search iterator data struct
 * @param status for errors if it occurs
 * @return The index of the next match after the current position, or 
-*         <tt>USEARCH_DONE</tt> if there are no more matches.
+*         <code>USEARCH_DONE</code> if there are no more matches.
 * @see #usearch_first
 * @see #usearch_getOffset
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, 
                                           UErrorCode    *status);
 
 /**
 * Returns the index of the previous point at which the string text matches
 * the search pattern, starting at the current position.
 * The iterator is adjusted so that its current 
-* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 
+* index (as returned by <code>usearch_getOffset</code>) is the match position if 
 * one was found.
-* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and
-* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>
+* If a match is not found, <code>USEARCH_DONE</code> will be returned and
+* the iterator will be adjusted to the index <code>USEARCH_DONE</code>
 * @param strsrch search iterator data struct
 * @param status for errors if it occurs
 * @return The index of the previous match before the current position,
-*         or <tt>USEARCH_DONE</tt> if there are no more matches.
+*         or <code>USEARCH_DONE</code> if there are no more matches.
 * @see #usearch_last
 * @see #usearch_getOffset
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_previous(UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_previous(UStringSearch *strsrch, 
                                               UErrorCode    *status);
     
 /** 
@@ -764,7 +781,7 @@
 * @see #usearch_first
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_reset(UStringSearch *strsrch);
+U_CAPI void U_EXPORT2 usearch_reset(UStringSearch *strsrch);
 
 #ifndef U_HIDE_INTERNAL_API
 /**
@@ -817,11 +834,11 @@
   *                    A value of -1 will be returned if no match was found.
   *          
   *  @param status     Report any errors.  Note that no match found is not an error.
-  *  @return           TRUE if a match was found, FALSE otherwise.
+  *  @return           true if a match was found, false otherwise.
   *
   *  @internal
   */
-U_INTERNAL UBool U_EXPORT2 usearch_search(UStringSearch *strsrch,
+U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch,
                                           int32_t        startIdx,
                                           int32_t        *matchStart,
                                           int32_t        *matchLimit,
@@ -877,11 +894,11 @@
   *                    A value of -1 will be returned if no match was found.
   *          
   *  @param status     Report any errors.  Note that no match found is not an error.
-  *  @return           TRUE if a match was found, FALSE otherwise.
+  *  @return           true if a match was found, false otherwise.
   *
   *  @internal
   */
-U_INTERNAL UBool U_EXPORT2 usearch_searchBackwards(UStringSearch *strsrch,
+U_CAPI UBool U_EXPORT2 usearch_searchBackwards(UStringSearch *strsrch,
                                                    int32_t        startIdx,
                                                    int32_t        *matchStart,
                                                    int32_t        *matchLimit,
diff --git a/libandroidicu/include/unicode/uset.h b/libandroidicu/include/unicode/uset.h
index 92496fe..502ea8d 100644
--- a/libandroidicu/include/unicode/uset.h
+++ b/libandroidicu/include/unicode/uset.h
@@ -161,7 +161,7 @@
      * Continues a span() while there is no set element at the current position.
      * Increments by one code point at a time.
      * Stops before the first set element (character or string).
-     * (For code points only, this is like while contains(current)==FALSE).
+     * (For code points only, this is like while contains(current)==false).
      *
      * When span() returns, the substring between where it started and the position
      * it returned consists only of characters that are not in the set,
@@ -172,7 +172,7 @@
     USET_SPAN_NOT_CONTAINED = 0,
     /**
      * Spans the longest substring that is a concatenation of set elements (characters or strings).
-     * (For characters only, this is like while contains(current)==TRUE).
+     * (For characters only, this is like while contains(current)==true).
      *
      * When span() returns, the substring between where it started and the position
      * it returned consists only of set elements (characters or strings) that are in the set.
@@ -188,7 +188,7 @@
     /**
      * Continues a span() while there is a set element at the current position.
      * Increments by the longest matching element at each position.
-     * (For characters only, this is like while contains(current)==TRUE).
+     * (For characters only, this is like while contains(current)==true).
      *
      * When span() returns, the substring between where it started and the position
      * it returned consists only of set elements (characters or strings) that are in the set.
@@ -263,7 +263,7 @@
  * it when done.
  * @stable ICU 4.2
  */
-U_STABLE USet* U_EXPORT2
+U_CAPI USet* U_EXPORT2
 uset_openEmpty(void);
 
 /**
@@ -276,7 +276,7 @@
  * it when done.
  * @stable ICU 2.4
  */
-U_STABLE USet* U_EXPORT2
+U_CAPI USet* U_EXPORT2
 uset_open(UChar32 start, UChar32 end);
 
 /**
@@ -288,7 +288,7 @@
  * @param ec the error code
  * @stable ICU 2.4
  */
-U_STABLE USet* U_EXPORT2
+U_CAPI USet* U_EXPORT2
 uset_openPattern(const UChar* pattern, int32_t patternLength,
                  UErrorCode* ec);
 
@@ -303,7 +303,7 @@
  * @param ec the error code
  * @stable ICU 2.4
  */
-U_STABLE USet* U_EXPORT2
+U_CAPI USet* U_EXPORT2
 uset_openPatternOptions(const UChar* pattern, int32_t patternLength,
                  uint32_t options,
                  UErrorCode* ec);
@@ -314,7 +314,7 @@
  * @param set the object to dispose of
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_close(USet* set);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -345,19 +345,19 @@
  * @see uset_cloneAsThawed
  * @stable ICU 3.8
  */
-U_STABLE USet * U_EXPORT2
+U_CAPI USet * U_EXPORT2
 uset_clone(const USet *set);
 
 /**
  * Determines whether the set has been frozen (made immutable) or not.
  * See the ICU4J Freezable interface for details.
  * @param set the set
- * @return TRUE/FALSE for whether the set has been frozen
+ * @return true/false for whether the set has been frozen
  * @see uset_freeze
  * @see uset_cloneAsThawed
  * @stable ICU 3.8
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_isFrozen(const USet *set);
 
 /**
@@ -374,7 +374,7 @@
  * @see uset_cloneAsThawed
  * @stable ICU 3.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_freeze(USet *set);
 
 /**
@@ -387,7 +387,7 @@
  * @see uset_clone
  * @stable ICU 3.8
  */
-U_STABLE USet * U_EXPORT2
+U_CAPI USet * U_EXPORT2
 uset_cloneAsThawed(const USet *set);
 
 /**
@@ -399,7 +399,7 @@
  * @param end last character in the set, inclusive
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_set(USet* set,
          UChar32 start, UChar32 end);
 
@@ -424,7 +424,7 @@
  *
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uset_applyPattern(USet *set,
                   const UChar *pattern, int32_t patternLength,
                   uint32_t options,
@@ -452,7 +452,7 @@
  *
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_applyIntPropertyValue(USet* set,
                            UProperty prop, int32_t value, UErrorCode* ec);
 
@@ -491,7 +491,7 @@
  *
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_applyPropertyAlias(USet* set,
                         const UChar *prop, int32_t propLength,
                         const UChar *value, int32_t valueLength,
@@ -506,7 +506,7 @@
  * @param pos the given position
  * @stable ICU 3.2
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_resemblesPattern(const UChar *pattern, int32_t patternLength,
                       int32_t pos);
 
@@ -517,7 +517,7 @@
  * @param set the set
  * @param result the string to receive the rules, may be NULL
  * @param resultCapacity the capacity of result, may be 0 if result is NULL
- * @param escapeUnprintable if TRUE then convert unprintable
+ * @param escapeUnprintable if true then convert unprintable
  * character to their hex escape representations, \\uxxxx or
  * \\Uxxxxxxxx.  Unprintable characters are those other than
  * U+000A, U+0020..U+007E.
@@ -525,7 +525,7 @@
  * @return length of string, possibly larger than resultCapacity
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_toPattern(const USet* set,
                UChar* result, int32_t resultCapacity,
                UBool escapeUnprintable,
@@ -533,13 +533,13 @@
 
 /**
  * Adds the given character to the given USet.  After this call,
- * uset_contains(set, c) will return TRUE.
+ * uset_contains(set, c) will return true.
  * A frozen set will not be modified.
  * @param set the object to which to add the character
  * @param c the character to add
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_add(USet* set, UChar32 c);
 
 /**
@@ -554,31 +554,31 @@
  * @param additionalSet the source set whose elements are to be added to this set.
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_addAll(USet* set, const USet *additionalSet);
 
 /**
  * Adds the given range of characters to the given USet.  After this call,
- * uset_contains(set, start, end) will return TRUE.
+ * uset_contains(set, start, end) will return true.
  * A frozen set will not be modified.
  * @param set the object to which to add the character
  * @param start the first character of the range to add, inclusive
  * @param end the last character of the range to add, inclusive
  * @stable ICU 2.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_addRange(USet* set, UChar32 start, UChar32 end);
 
 /**
  * Adds the given string to the given USet.  After this call,
- * uset_containsString(set, str, strLen) will return TRUE.
+ * uset_containsString(set, str, strLen) will return true.
  * A frozen set will not be modified.
  * @param set the object to which to add the character
  * @param str the string to add
  * @param strLen the length of the string or -1 if null terminated.
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_addString(USet* set, const UChar* str, int32_t strLen);
 
 /**
@@ -590,42 +590,42 @@
  * @param strLen the length of the string or -1 if null terminated.
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_addAllCodePoints(USet* set, const UChar *str, int32_t strLen);
 
 /**
  * Removes the given character from the given USet.  After this call,
- * uset_contains(set, c) will return FALSE.
+ * uset_contains(set, c) will return false.
  * A frozen set will not be modified.
  * @param set the object from which to remove the character
  * @param c the character to remove
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_remove(USet* set, UChar32 c);
 
 /**
  * Removes the given range of characters from the given USet.  After this call,
- * uset_contains(set, start, end) will return FALSE.
+ * uset_contains(set, start, end) will return false.
  * A frozen set will not be modified.
  * @param set the object to which to add the character
  * @param start the first character of the range to remove, inclusive
  * @param end the last character of the range to remove, inclusive
  * @stable ICU 2.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_removeRange(USet* set, UChar32 start, UChar32 end);
 
 /**
  * Removes the given string to the given USet.  After this call,
- * uset_containsString(set, str, strLen) will return FALSE.
+ * uset_containsString(set, str, strLen) will return false.
  * A frozen set will not be modified.
  * @param set the object to which to add the character
  * @param str the string to remove
  * @param strLen the length of the string or -1 if null terminated.
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_removeString(USet* set, const UChar* str, int32_t strLen);
 
 /**
@@ -639,7 +639,7 @@
  * removed from this set
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_removeAll(USet* set, const USet* removeSet);
 
 /**
@@ -656,7 +656,7 @@
  * to this set.
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_retain(USet* set, UChar32 start, UChar32 end);
 
 /**
@@ -671,7 +671,7 @@
  * @param retain set that defines which elements this set will retain
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_retainAll(USet* set, const USet* retain);
 
 /**
@@ -682,7 +682,7 @@
  * @param set the object on which to perfrom the compact
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_compact(USet* set);
 
 /**
@@ -693,7 +693,7 @@
  * @param set the set
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_complement(USet* set);
 
 /**
@@ -707,7 +707,7 @@
  * from this set.
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_complementAll(USet* set, const USet* complement);
 
 /**
@@ -717,7 +717,7 @@
  * @param set the set
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_clear(USet* set);
 
 /**
@@ -746,7 +746,7 @@
  * are ignored.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_closeOver(USet* set, int32_t attributes);
 
 /**
@@ -755,51 +755,51 @@
  * @param set the set
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_removeAllStrings(USet* set);
 
 /**
- * Returns TRUE if the given USet contains no characters and no
+ * Returns true if the given USet contains no characters and no
  * strings.
  * @param set the set
  * @return true if set is empty
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_isEmpty(const USet* set);
 
 /**
- * Returns TRUE if the given USet contains the given character.
+ * Returns true if the given USet contains the given character.
  * This function works faster with a frozen set.
  * @param set the set
  * @param c The codepoint to check for within the set
  * @return true if set contains c
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_contains(const USet* set, UChar32 c);
 
 /**
- * Returns TRUE if the given USet contains all characters c
+ * Returns true if the given USet contains all characters c
  * where start <= c && c <= end.
  * @param set the set
  * @param start the first character of the range to test, inclusive
  * @param end the last character of the range to test, inclusive
- * @return TRUE if set contains the range
+ * @return true if set contains the range
  * @stable ICU 2.2
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_containsRange(const USet* set, UChar32 start, UChar32 end);
 
 /**
- * Returns TRUE if the given USet contains the given string.
+ * Returns true if the given USet contains the given string.
  * @param set the set
  * @param str the string
  * @param strLen the length of the string or -1 if null terminated.
  * @return true if set contains str
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_containsString(const USet* set, const UChar* str, int32_t strLen);
 
 /**
@@ -812,7 +812,7 @@
  * @return an index from 0..size()-1, or -1
  * @stable ICU 3.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_indexOf(const USet* set, UChar32 c);
 
 /**
@@ -825,7 +825,7 @@
  * @return the character at the given index, or (UChar32)-1.
  * @stable ICU 3.2
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 uset_charAt(const USet* set, int32_t charIndex);
 
 /**
@@ -836,7 +836,7 @@
  * contained in set
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_size(const USet* set);
 
 /**
@@ -847,7 +847,7 @@
  * and/or strings contained in set
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_getItemCount(const USet* set);
 
 /**
@@ -868,7 +868,7 @@
  * itemIndex is out of range
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_getItem(const USet* set, int32_t itemIndex,
              UChar32* start, UChar32* end,
              UChar* str, int32_t strCapacity,
@@ -882,7 +882,7 @@
  * @return true if the test condition is met
  * @stable ICU 3.2
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_containsAll(const USet* set1, const USet* set2);
 
 /**
@@ -895,7 +895,7 @@
  * @return true if the test condition is met
  * @stable ICU 3.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_containsAllCodePoints(const USet* set, const UChar *str, int32_t strLen);
 
 /**
@@ -906,7 +906,7 @@
  * @return true if the test condition is met
  * @stable ICU 3.2
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_containsNone(const USet* set1, const USet* set2);
 
 /**
@@ -917,7 +917,7 @@
  * @return true if the test condition is met
  * @stable ICU 3.2
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_containsSome(const USet* set1, const USet* set2);
 
 /**
@@ -939,7 +939,7 @@
  * @stable ICU 3.8
  * @see USetSpanCondition
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_span(const USet *set, const UChar *s, int32_t length, USetSpanCondition spanCondition);
 
 /**
@@ -960,7 +960,7 @@
  * @stable ICU 3.8
  * @see USetSpanCondition
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_spanBack(const USet *set, const UChar *s, int32_t length, USetSpanCondition spanCondition);
 
 /**
@@ -982,7 +982,7 @@
  * @stable ICU 3.8
  * @see USetSpanCondition
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_spanUTF8(const USet *set, const char *s, int32_t length, USetSpanCondition spanCondition);
 
 /**
@@ -1003,7 +1003,7 @@
  * @stable ICU 3.8
  * @see USetSpanCondition
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_spanBackUTF8(const USet *set, const char *s, int32_t length, USetSpanCondition spanCondition);
 
 /**
@@ -1014,7 +1014,7 @@
  * @return true if the test condition is met
  * @stable ICU 3.2
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_equals(const USet* set1, const USet* set2);
 
 /*********************************************************************
@@ -1070,7 +1070,7 @@
  * than U_BUFFER_OVERFLOW_ERROR.
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_serialize(const USet* set, uint16_t* dest, int32_t destCapacity, UErrorCode* pErrorCode);
 
 /**
@@ -1081,7 +1081,7 @@
  * @return true if the given array is valid, otherwise false
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_getSerializedSet(USerializedSet* fillSet, const uint16_t* src, int32_t srcLength);
 
 /**
@@ -1091,18 +1091,18 @@
  * @param c The codepoint to set
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_setSerializedToOne(USerializedSet* fillSet, UChar32 c);
 
 /**
- * Returns TRUE if the given USerializedSet contains the given
+ * Returns true if the given USerializedSet contains the given
  * character.
  * @param set the serialized set
  * @param c The codepoint to check for within the set
  * @return true if set contains c
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_serializedContains(const USerializedSet* set, UChar32 c);
 
 /**
@@ -1114,7 +1114,7 @@
  * contained in set
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_getSerializedRangeCount(const USerializedSet* set);
 
 /**
@@ -1130,7 +1130,7 @@
  * @return true if rangeIndex is valid, otherwise false
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_getSerializedRange(const USerializedSet* set, int32_t rangeIndex,
                         UChar32* pStart, UChar32* pEnd);
 
diff --git a/libandroidicu/include/unicode/ushape.h b/libandroidicu/include/unicode/ushape.h
index 78b4d02..fed4869 100644
--- a/libandroidicu/include/unicode/ushape.h
+++ b/libandroidicu/include/unicode/ushape.h
@@ -98,7 +98,7 @@
  *         the return value indicates the necessary destination buffer size.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_shapeArabic(const UChar *source, int32_t sourceLength,
               UChar *dest, int32_t destSize,
               uint32_t options,
diff --git a/libandroidicu/include/unicode/uspoof.h b/libandroidicu/include/unicode/uspoof.h
index 8e846e1..7680c68 100644
--- a/libandroidicu/include/unicode/uspoof.h
+++ b/libandroidicu/include/unicode/uspoof.h
@@ -154,10 +154,10 @@
  *     UChar* skel = (UChar*) malloc(++len * sizeof(UChar));
  *     status = U_ZERO_ERROR;
  *     uspoof_getSkeleton(sc, 0, str, -1, skel, len, &status);
- *     UBool result = FALSE;
+ *     UBool result = false;
  *     for (size_t i=0; i<DICTIONARY_LENGTH; i++) {
  *         result = u_strcmp(skel, skeletons[i]) == 0;
- *         if (result == TRUE) { break; }
+ *         if (result == true) { break; }
  *     }
  *     // Has confusable in dictionary: 1 (status: U_ZERO_ERROR)
  *     printf("Has confusable in dictionary: %d (status: %s)\n", result, u_errorName(status));
@@ -601,7 +601,7 @@
  *  @return        the newly created Spoof Checker
  *  @stable ICU 4.2
  */
-U_STABLE USpoofChecker * U_EXPORT2
+U_CAPI USpoofChecker * U_EXPORT2
 uspoof_open(UErrorCode *status);
 
 
@@ -626,7 +626,7 @@
  * @see uspoof_serialize
  * @stable ICU 4.2
  */
-U_STABLE USpoofChecker * U_EXPORT2
+U_CAPI USpoofChecker * U_EXPORT2
 uspoof_openFromSerialized(const void *data, int32_t length, int32_t *pActualLength,
                           UErrorCode *pErrorCode);
 
@@ -660,7 +660,7 @@
   * @return            A spoof checker that uses the rules from the input files.
   * @stable ICU 4.2
   */
-U_STABLE USpoofChecker * U_EXPORT2
+U_CAPI USpoofChecker * U_EXPORT2
 uspoof_openFromSource(const char *confusables,  int32_t confusablesLen,
                       const char *confusablesWholeScript, int32_t confusablesWholeScriptLen,
                       int32_t *errType, UParseError *pe, UErrorCode *status);
@@ -671,7 +671,7 @@
   *   its implementation.
   * @stable ICU 4.2
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_close(USpoofChecker *sc);
 
 /**
@@ -683,7 +683,7 @@
  * @return
  * @stable ICU 4.2
  */
-U_STABLE USpoofChecker * U_EXPORT2
+U_CAPI USpoofChecker * U_EXPORT2
 uspoof_clone(const USpoofChecker *sc, UErrorCode *status);
 
 
@@ -691,8 +691,10 @@
  * Specify the bitmask of checks that will be performed by {@link uspoof_check}. Calling this method
  * overwrites any checks that may have already been enabled. By default, all checks are enabled.
  *
- * To enable specific checks and disable all others, the "whitelisted" checks should be ORed together. For
- * example, to fail strings containing characters outside of the set specified by {@link uspoof_setAllowedChars} and
+ * To enable specific checks and disable all others,
+ * OR together only the bit constants for the desired checks.
+ * For example, to fail strings containing characters outside of
+ * the set specified by {@link uspoof_setAllowedChars} and
  * also strings that contain digits from mixed numbering systems:
  *
  * <pre>
@@ -701,8 +703,9 @@
  * }
  * </pre>
  *
- * To disable specific checks and enable all others, the "blacklisted" checks should be ANDed away from
- * ALL_CHECKS. For example, if you are not planning to use the {@link uspoof_areConfusable} functionality,
+ * To disable specific checks and enable all others,
+ * start with ALL_CHECKS and "AND away" the not-desired checks.
+ * For example, if you are not planning to use the {@link uspoof_areConfusable} functionality,
  * it is good practice to disable the CONFUSABLE check:
  *
  * <pre>
@@ -724,7 +727,7 @@
  * @stable ICU 4.2
  *
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_setChecks(USpoofChecker *sc, int32_t checks, UErrorCode *status);
 
 /**
@@ -738,7 +741,7 @@
  * @stable ICU 4.2
  *
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_getChecks(const USpoofChecker *sc, UErrorCode *status);
 
 /**
@@ -752,7 +755,7 @@
  * @see URestrictionLevel
  * @stable ICU 51
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_setRestrictionLevel(USpoofChecker *sc, URestrictionLevel restrictionLevel);
 
 
@@ -763,7 +766,7 @@
   * @see URestrictionLevel
   * @stable ICU 51
   */
-U_STABLE URestrictionLevel U_EXPORT2
+U_CAPI URestrictionLevel U_EXPORT2
 uspoof_getRestrictionLevel(const USpoofChecker *sc);
 
 /**
@@ -808,7 +811,7 @@
  * @param status       The error code, set if this function encounters a problem.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_setAllowedLocales(USpoofChecker *sc, const char *localesList, UErrorCode *status);
 
 /**
@@ -832,7 +835,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 uspoof_getAllowedLocales(USpoofChecker *sc, UErrorCode *status);
 
 
@@ -854,7 +857,7 @@
  * @param status   The error code, set if this function encounters a problem.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_setAllowedChars(USpoofChecker *sc, const USet *chars, UErrorCode *status);
 
 
@@ -878,7 +881,7 @@
  *                 the USPOOF_CHAR_LIMIT test.
  * @stable ICU 4.2
  */
-U_STABLE const USet * U_EXPORT2
+U_CAPI const USet * U_EXPORT2
 uspoof_getAllowedChars(const USpoofChecker *sc, UErrorCode *status);
 
 
@@ -914,7 +917,7 @@
  * @see uspoof_check2
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_check(const USpoofChecker *sc,
                          const UChar *id, int32_t length,
                          int32_t *position,
@@ -953,7 +956,7 @@
  * @see uspoof_check2UTF8
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_checkUTF8(const USpoofChecker *sc,
                  const char *id, int32_t length,
                  int32_t *position,
@@ -988,7 +991,7 @@
  * @see uspoof_check2UnicodeString
  * @stable ICU 58
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_check2(const USpoofChecker *sc,
     const UChar* id, int32_t length,
     USpoofCheckResult* checkResult,
@@ -1025,7 +1028,7 @@
  * @see uspoof_check2UnicodeString
  * @stable ICU 58
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_check2UTF8(const USpoofChecker *sc,
     const char *id, int32_t length,
     USpoofCheckResult* checkResult,
@@ -1049,7 +1052,7 @@
  * @see uspoof_check2UnicodeString
  * @stable ICU 58
  */
-U_STABLE USpoofCheckResult* U_EXPORT2
+U_CAPI USpoofCheckResult* U_EXPORT2
 uspoof_openCheckResult(UErrorCode *status);
 
 /**
@@ -1059,7 +1062,7 @@
  * @param checkResult  The instance of USpoofCheckResult to close
  * @stable ICU 58
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_closeCheckResult(USpoofCheckResult *checkResult);
 
 /**
@@ -1076,7 +1079,7 @@
  * @see uspoof_setChecks
  * @stable ICU 58
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_getCheckResultChecks(const USpoofCheckResult *checkResult, UErrorCode *status);
 
 /**
@@ -1089,7 +1092,7 @@
  * @see uspoof_setRestrictionLevel
  * @stable ICU 58
  */
-U_STABLE URestrictionLevel U_EXPORT2
+U_CAPI URestrictionLevel U_EXPORT2
 uspoof_getCheckResultRestrictionLevel(const USpoofCheckResult *checkResult, UErrorCode *status);
 
 /**
@@ -1103,7 +1106,7 @@
  * @param status       The error code, set if an error occurred.
  * @stable ICU 58
  */
-U_STABLE const USet* U_EXPORT2
+U_CAPI const USet* U_EXPORT2
 uspoof_getCheckResultNumerics(const USpoofCheckResult *checkResult, UErrorCode *status);
 
 
@@ -1150,7 +1153,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_areConfusable(const USpoofChecker *sc,
                      const UChar *id1, int32_t length1,
                      const UChar *id2, int32_t length2,
@@ -1183,7 +1186,7 @@
  *
  * @see uspoof_areConfusable
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_areConfusableUTF8(const USpoofChecker *sc,
                          const char *id1, int32_t length1,
                          const char *id2, int32_t length2,
@@ -1223,7 +1226,7 @@
  * @stable ICU 4.2
  * @see uspoof_areConfusable
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_getSkeleton(const USpoofChecker *sc,
                    uint32_t type,
                    const UChar *id,  int32_t length,
@@ -1263,7 +1266,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_getSkeletonUTF8(const USpoofChecker *sc,
                        uint32_t type,
                        const char *id,  int32_t length,
@@ -1282,7 +1285,7 @@
   *
   * @stable ICU 51
   */
-U_STABLE const USet * U_EXPORT2
+U_CAPI const USet * U_EXPORT2
 uspoof_getInclusionSet(UErrorCode *status);
 
 /**
@@ -1297,7 +1300,7 @@
   *
   * @stable ICU 51
   */
-U_STABLE const USet * U_EXPORT2
+U_CAPI const USet * U_EXPORT2
 uspoof_getRecommendedSet(UErrorCode *status);
 
 /**
@@ -1322,7 +1325,7 @@
  * @see utrie2_openFromSerialized()
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_serialize(USpoofChecker *sc,
                  void *data, int32_t capacity,
                  UErrorCode *status);
@@ -1388,7 +1391,7 @@
  * @param status   The error code, set if this function encounters a problem.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_setAllowedUnicodeSet(USpoofChecker *sc, const icu::UnicodeSet *chars, UErrorCode *status);
 
 
@@ -1412,7 +1415,7 @@
  *                 the USPOOF_CHAR_LIMIT test.
  * @stable ICU 4.2
  */
-U_STABLE const icu::UnicodeSet * U_EXPORT2
+U_CAPI const icu::UnicodeSet * U_EXPORT2
 uspoof_getAllowedUnicodeSet(const USpoofChecker *sc, UErrorCode *status);
 
 /**
@@ -1443,7 +1446,7 @@
  * @see uspoof_check2UnicodeString
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_checkUnicodeString(const USpoofChecker *sc,
                           const icu::UnicodeString &id,
                           int32_t *position,
@@ -1474,7 +1477,7 @@
  * @see uspoof_check2UTF8
  * @stable ICU 58
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_check2UnicodeString(const USpoofChecker *sc,
     const icu::UnicodeString &id,
     USpoofCheckResult* checkResult,
@@ -1501,7 +1504,7 @@
  *
  * @see uspoof_areConfusable
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_areConfusableUnicodeString(const USpoofChecker *sc,
                                   const icu::UnicodeString &s1,
                                   const icu::UnicodeString &s2,
@@ -1549,7 +1552,7 @@
   *
   * @stable ICU 51
   */
-U_STABLE const icu::UnicodeSet * U_EXPORT2
+U_CAPI const icu::UnicodeSet * U_EXPORT2
 uspoof_getInclusionUnicodeSet(UErrorCode *status);
 
 /**
@@ -1564,7 +1567,7 @@
   *
   * @stable ICU 51
   */
-U_STABLE const icu::UnicodeSet * U_EXPORT2
+U_CAPI const icu::UnicodeSet * U_EXPORT2
 uspoof_getRecommendedUnicodeSet(UErrorCode *status);
 
 #endif /* U_SHOW_CPLUSPLUS_API */
diff --git a/libandroidicu/include/unicode/usprep.h b/libandroidicu/include/unicode/usprep.h
index cc1eca1..f8a0f58 100644
--- a/libandroidicu/include/unicode/usprep.h
+++ b/libandroidicu/include/unicode/usprep.h
@@ -184,7 +184,7 @@
  * @see usprep_close()
  * @stable ICU 2.8
  */
-U_STABLE UStringPrepProfile* U_EXPORT2
+U_CAPI UStringPrepProfile* U_EXPORT2
 usprep_open(const char* path, 
             const char* fileName,
             UErrorCode* status);
@@ -200,7 +200,7 @@
  * @see usprep_close()
  * @stable ICU 4.2
  */
-U_STABLE UStringPrepProfile* U_EXPORT2
+U_CAPI UStringPrepProfile* U_EXPORT2
 usprep_openByType(UStringPrepProfileType type,
 				  UErrorCode* status);
 
@@ -209,7 +209,7 @@
  * @param profile The profile to close
  * @stable ICU 2.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 usprep_close(UStringPrepProfile* profile);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -260,7 +260,7 @@
  * @stable ICU 2.8
  */
 
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 usprep_prepare(   const UStringPrepProfile* prep,
                   const UChar* src, int32_t srcLength, 
                   UChar* dest, int32_t destCapacity,
diff --git a/libandroidicu/include/unicode/ustring.h b/libandroidicu/include/unicode/ustring.h
index 245b766..10ea45e 100644
--- a/libandroidicu/include/unicode/ustring.h
+++ b/libandroidicu/include/unicode/ustring.h
@@ -89,7 +89,7 @@
  * @return The number of UChars in <code>chars</code>, minus the terminator.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strlen(const UChar *s);
 /*@}*/
 
@@ -106,7 +106,7 @@
  * @return The number of code points in the specified code units.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_countChar32(const UChar *s, int32_t length);
 
 /**
@@ -127,7 +127,7 @@
  *         than 'number'. Same as (u_countChar32(s, length)>number).
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_strHasMoreChar32Than(const UChar *s, int32_t length, int32_t number);
 
 /**
@@ -140,7 +140,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strcat(UChar     *dst, 
     const UChar     *src);
 
@@ -158,7 +158,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strncat(UChar     *dst, 
      const UChar     *src, 
      int32_t     n);
@@ -183,7 +183,7 @@
  * @see u_strFindFirst
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strstr(const UChar *s, const UChar *substring);
 
 /**
@@ -207,7 +207,7 @@
  * @see u_strstr
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strFindFirst(const UChar *s, int32_t length, const UChar *substring, int32_t subLength);
 
 /**
@@ -227,7 +227,7 @@
  * @see u_strstr
  * @see u_strFindFirst
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strchr(const UChar *s, UChar c);
 
 /**
@@ -247,7 +247,7 @@
  * @see u_strstr
  * @see u_strFindFirst
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strchr32(const UChar *s, UChar32 c);
 
 /**
@@ -270,7 +270,7 @@
  * @see u_strFindFirst
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strrstr(const UChar *s, const UChar *substring);
 
 /**
@@ -294,7 +294,7 @@
  * @see u_strstr
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strFindLast(const UChar *s, int32_t length, const UChar *substring, int32_t subLength);
 
 /**
@@ -314,7 +314,7 @@
  * @see u_strrstr
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strrchr(const UChar *s, UChar c);
 
 /**
@@ -334,7 +334,7 @@
  * @see u_strrstr
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strrchr32(const UChar *s, UChar32 c);
 
 /**
@@ -349,7 +349,7 @@
  *         characters in <code>matchSet</code>, or NULL if no such character is found.
  * @stable ICU 2.0
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strpbrk(const UChar *string, const UChar *matchSet);
 
 /**
@@ -365,7 +365,7 @@
  * @see u_strspn
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strcspn(const UChar *string, const UChar *matchSet);
 
 /**
@@ -381,7 +381,7 @@
  * @see u_strcspn
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strspn(const UChar *string, const UChar *matchSet);
 
 /**
@@ -409,7 +409,7 @@
  *         when there are no more tokens.
  * @stable ICU 2.0
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strtok_r(UChar    *src, 
      const UChar    *delim,
            UChar   **saveState);
@@ -424,7 +424,7 @@
  * value if <code>s1</code> is bitwise greater than <code>s2</code>.
  * @stable ICU 2.0
  */
-U_STABLE int32_t  U_EXPORT2
+U_CAPI int32_t  U_EXPORT2
 u_strcmp(const UChar     *s1, 
          const UChar     *s2);
 
@@ -439,7 +439,7 @@
  * in code point order
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strcmpCodePointOrder(const UChar *s1, const UChar *s2);
 
 /**
@@ -462,14 +462,14 @@
  * @param s2 Second source string.
  * @param length2 Length of second source string, or -1 if NUL-terminated.
  *
- * @param codePointOrder Choose between code unit order (FALSE)
- *                       and code point order (TRUE).
+ * @param codePointOrder Choose between code unit order (false)
+ *                       and code point order (true).
  *
  * @return <0 or 0 or >0 as usual for string comparisons
  *
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strCompare(const UChar *s1, int32_t length1,
              const UChar *s2, int32_t length2,
              UBool codePointOrder);
@@ -485,8 +485,8 @@
  *
  * @param iter1 First source string iterator.
  * @param iter2 Second source string iterator.
- * @param codePointOrder Choose between code unit order (FALSE)
- *                       and code point order (TRUE).
+ * @param codePointOrder Choose between code unit order (false)
+ *                       and code point order (true).
  *
  * @return <0 or 0 or >0 as usual for string comparisons
  *
@@ -494,7 +494,7 @@
  *
  * @stable ICU 2.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strCompareIter(UCharIterator *iter1, UCharIterator *iter2, UBool codePointOrder);
 
 /**
@@ -537,7 +537,7 @@
  *
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strCaseCompare(const UChar *s1, int32_t length1,
                  const UChar *s2, int32_t length2,
                  uint32_t options,
@@ -555,7 +555,7 @@
  * value if <code>s1</code> is bitwise greater than <code>s2</code>.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strncmp(const UChar     *ucs1, 
      const UChar     *ucs2, 
      int32_t     n);
@@ -573,7 +573,7 @@
  * in code point order
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strncmpCodePointOrder(const UChar *s1, const UChar *s2, int32_t n);
 
 /**
@@ -595,7 +595,7 @@
  * @return A negative, zero, or positive integer indicating the comparison result.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strcasecmp(const UChar *s1, const UChar *s2, uint32_t options);
 
 /**
@@ -619,7 +619,7 @@
  * @return A negative, zero, or positive integer indicating the comparison result.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strncasecmp(const UChar *s1, const UChar *s2, int32_t n, uint32_t options);
 
 /**
@@ -643,7 +643,7 @@
  * @return A negative, zero, or positive integer indicating the comparison result.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_memcasecmp(const UChar *s1, const UChar *s2, int32_t length, uint32_t options);
 
 /**
@@ -654,7 +654,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strcpy(UChar     *dst, 
     const UChar     *src);
 
@@ -669,7 +669,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strncpy(UChar     *dst, 
      const UChar     *src, 
      int32_t     n);
@@ -686,7 +686,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2 u_uastrcpy(UChar *dst,
+U_CAPI UChar* U_EXPORT2 u_uastrcpy(UChar *dst,
                const char *src );
 
 /**
@@ -701,7 +701,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2 u_uastrncpy(UChar *dst,
+U_CAPI UChar* U_EXPORT2 u_uastrncpy(UChar *dst,
             const char *src,
             int32_t n);
 
@@ -715,7 +715,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE char* U_EXPORT2 u_austrcpy(char *dst,
+U_CAPI char* U_EXPORT2 u_austrcpy(char *dst,
             const UChar *src );
 
 /**
@@ -730,7 +730,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE char* U_EXPORT2 u_austrncpy(char *dst,
+U_CAPI char* U_EXPORT2 u_austrncpy(char *dst,
             const UChar *src,
             int32_t n );
 
@@ -744,7 +744,7 @@
  * @return A pointer to <code>dest</code>
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memcpy(UChar *dest, const UChar *src, int32_t count);
 
 /**
@@ -755,7 +755,7 @@
  * @return A pointer to <code>dest</code>
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memmove(UChar *dest, const UChar *src, int32_t count);
 
 /**
@@ -767,7 +767,7 @@
  * @return A pointer to <code>dest</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memset(UChar *dest, UChar c, int32_t count);
 
 /**
@@ -781,7 +781,7 @@
  *      When buf1 > buf2, a positive number is returned.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_memcmp(const UChar *buf1, const UChar *buf2, int32_t count);
 
 /**
@@ -797,7 +797,7 @@
  * in code point order
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_memcmpCodePointOrder(const UChar *s1, const UChar *s2, int32_t count);
 
 /**
@@ -817,7 +817,7 @@
  * @see u_memchr32
  * @see u_strFindFirst
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memchr(const UChar *s, UChar c, int32_t count);
 
 /**
@@ -837,7 +837,7 @@
  * @see u_memchr
  * @see u_strFindFirst
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memchr32(const UChar *s, UChar32 c, int32_t count);
 
 /**
@@ -857,7 +857,7 @@
  * @see u_memrchr32
  * @see u_strFindLast
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memrchr(const UChar *s, UChar c, int32_t count);
 
 /**
@@ -877,7 +877,7 @@
  * @see u_memrchr
  * @see u_strFindLast
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memrchr32(const UChar *s, UChar32 c, int32_t count);
 
 /**
@@ -903,13 +903,13 @@
  *
  *     U_STRING_DECL(ustringVar1, "Quick-Fox 2", 11);
  *     U_STRING_DECL(ustringVar2, "jumps 5%", 8);
- *     static UBool didInit=FALSE;
+ *     static UBool didInit=false;
  *
  *     int32_t function() {
  *         if(!didInit) {
  *             U_STRING_INIT(ustringVar1, "Quick-Fox 2", 11);
  *             U_STRING_INIT(ustringVar2, "jumps 5%", 8);
- *             didInit=TRUE;
+ *             didInit=true;
  *         }
  *         return u_strcmp(ustringVar1, ustringVar2);
  *     }
@@ -992,7 +992,7 @@
  * @see UnicodeString#unescapeAt()
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_unescape(const char *src,
            UChar *dest, int32_t destCapacity);
 
@@ -1040,7 +1040,7 @@
  * @see UnicodeString#unescapeAt()
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_unescapeAt(UNESCAPE_CHAR_AT charAt,
              int32_t *offset,
              int32_t length,
@@ -1066,7 +1066,7 @@
  *         only some of the result was written to the destination buffer.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strToUpper(UChar *dest, int32_t destCapacity,
              const UChar *src, int32_t srcLength,
              const char *locale,
@@ -1092,7 +1092,7 @@
  *         only some of the result was written to the destination buffer.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strToLower(UChar *dest, int32_t destCapacity,
              const UChar *src, int32_t srcLength,
              const char *locale,
@@ -1138,7 +1138,7 @@
  *         only some of the result was written to the destination buffer.
  * @stable ICU 2.1
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strToTitle(UChar *dest, int32_t destCapacity,
              const UChar *src, int32_t srcLength,
              UBreakIterator *titleIter,
@@ -1171,7 +1171,7 @@
  *         only some of the result was written to the destination buffer.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strFoldCase(UChar *dest, int32_t destCapacity,
               const UChar *src, int32_t srcLength,
               uint32_t options,
@@ -1200,7 +1200,7 @@
  * @return The pointer to destination buffer.
  * @stable ICU 2.0
  */
-U_STABLE wchar_t* U_EXPORT2
+U_CAPI wchar_t* U_EXPORT2
 u_strToWCS(wchar_t *dest, 
            int32_t destCapacity,
            int32_t *pDestLength,
@@ -1229,7 +1229,7 @@
  * @return The pointer to destination buffer.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strFromWCS(UChar   *dest,
              int32_t destCapacity, 
              int32_t *pDestLength,
@@ -1260,7 +1260,7 @@
  * @see u_strToUTF8WithSub
  * @see u_strFromUTF8
  */
-U_STABLE char* U_EXPORT2 
+U_CAPI char* U_EXPORT2 
 u_strToUTF8(char *dest,           
             int32_t destCapacity,
             int32_t *pDestLength,
@@ -1290,7 +1290,7 @@
  * @see u_strFromUTF8WithSub
  * @see u_strFromUTF8Lenient
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strFromUTF8(UChar *dest,             
               int32_t destCapacity,
               int32_t *pDestLength,
@@ -1333,7 +1333,7 @@
  * @see u_strFromUTF8WithSub
  * @stable ICU 3.6
  */
-U_STABLE char* U_EXPORT2
+U_CAPI char* U_EXPORT2
 u_strToUTF8WithSub(char *dest,
             int32_t destCapacity,
             int32_t *pDestLength,
@@ -1378,7 +1378,7 @@
  * @see u_strToUTF8WithSub
  * @stable ICU 3.6
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strFromUTF8WithSub(UChar *dest,
               int32_t destCapacity,
               int32_t *pDestLength,
@@ -1438,7 +1438,7 @@
  * @see u_strToUTF8WithSub
  * @stable ICU 3.6
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strFromUTF8Lenient(UChar *dest,
                      int32_t destCapacity,
                      int32_t *pDestLength,
@@ -1468,7 +1468,7 @@
  * @see u_strFromUTF32
  * @stable ICU 2.0
  */
-U_STABLE UChar32* U_EXPORT2 
+U_CAPI UChar32* U_EXPORT2 
 u_strToUTF32(UChar32 *dest, 
              int32_t  destCapacity,
              int32_t  *pDestLength,
@@ -1498,7 +1498,7 @@
  * @see u_strToUTF32
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2 
+U_CAPI UChar* U_EXPORT2 
 u_strFromUTF32(UChar   *dest,
                int32_t destCapacity, 
                int32_t *pDestLength,
@@ -1541,7 +1541,7 @@
  * @see u_strFromUTF32WithSub
  * @stable ICU 4.2
  */
-U_STABLE UChar32* U_EXPORT2
+U_CAPI UChar32* U_EXPORT2
 u_strToUTF32WithSub(UChar32 *dest,
              int32_t destCapacity,
              int32_t *pDestLength,
@@ -1585,7 +1585,7 @@
  * @see u_strToUTF32WithSub
  * @stable ICU 4.2
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strFromUTF32WithSub(UChar *dest,
                int32_t destCapacity,
                int32_t *pDestLength,
@@ -1626,7 +1626,7 @@
  * @see u_strToUTF8WithSub
  * @see u_strFromJavaModifiedUTF8WithSub
  */
-U_STABLE char* U_EXPORT2 
+U_CAPI char* U_EXPORT2 
 u_strToJavaModifiedUTF8(
         char *dest,
         int32_t destCapacity,
@@ -1676,7 +1676,7 @@
  * @see u_strToJavaModifiedUTF8
  * @stable ICU 4.4
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strFromJavaModifiedUTF8WithSub(
         UChar *dest,
         int32_t destCapacity,
diff --git a/libandroidicu/include/unicode/utext.h b/libandroidicu/include/unicode/utext.h
index 37d71a3..c6d1e53 100644
--- a/libandroidicu/include/unicode/utext.h
+++ b/libandroidicu/include/unicode/utext.h
@@ -180,7 +180,7 @@
   *
   * @stable ICU 3.4
   */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_close(UText *ut);
 
 /**
@@ -204,7 +204,7 @@
  *               will always be used and returned.
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openUTF8(UText *ut, const char *s, int64_t length, UErrorCode *status);
 
 
@@ -222,7 +222,7 @@
  *               will always be used and returned.
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openUChars(UText *ut, const UChar *s, int64_t length, UErrorCode *status);
 
 
@@ -239,7 +239,7 @@
  *                 will always be used and returned.
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openUnicodeString(UText *ut, icu::UnicodeString *s, UErrorCode *status);
 
 
@@ -255,7 +255,7 @@
  *               will always be used and returned.
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openConstUnicodeString(UText *ut, const icu::UnicodeString *s, UErrorCode *status);
 
 
@@ -271,7 +271,7 @@
  * @see Replaceable
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openReplaceable(UText *ut, icu::Replaceable *rep, UErrorCode *status);
 
 /**
@@ -286,7 +286,7 @@
  * @see Replaceable
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openCharacterIterator(UText *ut, icu::CharacterIterator *ci, UErrorCode *status);
 
 #endif
@@ -323,7 +323,7 @@
   *  shallow clones provide some protection against errors of this type by
   *  disabling text modification via the cloned UText.
   *
-  *  A shallow clone made with the readOnly parameter == FALSE will preserve the 
+  *  A shallow clone made with the readOnly parameter == false will preserve the 
   *  utext_isWritable() state of the source object.  Note, however, that
   *  write operations must be avoided while more than one UText exists that refer
   *  to the same underlying text.
@@ -339,8 +339,8 @@
   *                If non-NULL, must refer to an already existing UText, which will then
   *                be reset to become the clone.
   *  @param src    The UText to be cloned.
-  *  @param deep   TRUE to request a deep clone, FALSE for a shallow clone.
-  *  @param readOnly TRUE to request that the cloned UText have read only access to the 
+  *  @param deep   true to request a deep clone, false for a shallow clone.
+  *  @param readOnly true to request that the cloned UText have read only access to the 
   *                underlying text.  
 
   *  @param status Errors are returned here.  For deep clones, U_UNSUPPORTED_ERROR
@@ -349,7 +349,7 @@
   *  @return       The newly created clone, or NULL if the clone operation failed.
   *  @stable ICU 3.4
   */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_clone(UText *dest, const UText *src, UBool deep, UBool readOnly, UErrorCode *status);
 
 
@@ -357,14 +357,14 @@
   *  Compare two UText objects for equality.
   *  UTexts are equal if they are iterating over the same text, and
   *    have the same iteration position within the text.
-  *    If either or both of the parameters are NULL, the comparison is FALSE.
+  *    If either or both of the parameters are NULL, the comparison is false.
   *
   *  @param a   The first of the two UTexts to compare.
   *  @param b   The other UText to be compared.
-  *  @return    TRUE if the two UTexts are equal.
+  *  @return    true if the two UTexts are equal.
   *  @stable ICU 3.6
   */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 utext_equals(const UText *a, const UText *b);
 
 
@@ -385,11 +385,11 @@
   *
   * @stable ICU 3.4
   */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 utext_nativeLength(UText *ut);
 
 /**
- *  Return TRUE if calculating the length of the text could be expensive.
+ *  Return true if calculating the length of the text could be expensive.
  *  Finding the length of NUL terminated strings is considered to be expensive.
  *
  *  Note that the value of this function may change
@@ -398,10 +398,10 @@
  *  be expensive to report it.
  *
  * @param ut the text to be accessed.
- * @return TRUE if determining the length of the text could be time consuming.
+ * @return true if determining the length of the text could be time consuming.
  * @stable ICU 3.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 utext_isLengthExpensive(const UText *ut);
 
 /**
@@ -429,7 +429,7 @@
  * @return the code point at the specified index.
  * @stable ICU 3.4
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_char32At(UText *ut, int64_t nativeIndex);
 
 
@@ -443,7 +443,7 @@
  * @return the Unicode code point at the current iterator position.
  * @stable ICU 3.4
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_current32(UText *ut);
 
 
@@ -465,7 +465,7 @@
  * @see UTEXT_NEXT32
  * @stable ICU 3.4
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_next32(UText *ut);
 
 
@@ -486,7 +486,7 @@
  *  @see UTEXT_PREVIOUS32
  *  @stable ICU 3.4
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_previous32(UText *ut);
 
 
@@ -508,7 +508,7 @@
   *         or U_SENTINEL (-1) if it is out of bounds.
   * @stable ICU 3.4
   */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_next32From(UText *ut, int64_t nativeIndex);
 
 
@@ -528,7 +528,7 @@
   *
   * @stable ICU 3.4
   */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_previous32From(UText *ut, int64_t nativeIndex);
 
 /**
@@ -543,7 +543,7 @@
   * @return the current index position, in the native units of the text provider.
   * @stable ICU 3.4
   */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 utext_getNativeIndex(const UText *ut);
 
 /**
@@ -569,7 +569,7 @@
  * @param nativeIndex the native unit index of the new iteration position.
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utext_setNativeIndex(UText *ut, int64_t nativeIndex);
 
 /**
@@ -584,11 +584,11 @@
  *
  * @param ut the text to be accessed.
  * @param delta the signed number of code points to move the iteration position.
- * @return TRUE if the position could be moved the requested number of positions while
+ * @return true if the position could be moved the requested number of positions while
  *              staying within the range [0 - text length].
  * @stable ICU 3.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 utext_moveIndex32(UText *ut, int32_t delta);
 
 /**
@@ -613,7 +613,7 @@
  *         or zero if the current position is at the start of the text.
  * @stable ICU 3.6
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 utext_getPreviousNativeIndex(UText *ut); 
 
 
@@ -651,7 +651,7 @@
  *
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utext_extract(UText *ut,
              int64_t nativeStart, int64_t nativeLimit,
              UChar *dest, int32_t destCapacity,
@@ -768,16 +768,16 @@
 
 
 /**
- *  Return TRUE if the text can be written (modified) with utext_replace() or
+ *  Return true if the text can be written (modified) with utext_replace() or
  *  utext_copy().  For the text to be writable, the text provider must
  *  be of a type that supports writing and the UText must not be frozen.
  *
- *  Attempting to modify text when utext_isWriteable() is FALSE will fail -
+ *  Attempting to modify text when utext_isWriteable() is false will fail -
  *  the text will not be modified, and an error will be returned from the function
  *  that attempted the modification.
  *
  * @param  ut   the UText to be tested.
- * @return TRUE if the text is modifiable.
+ * @return true if the text is modifiable.
  *
  * @see    utext_freeze()
  * @see    utext_replace()
@@ -785,7 +785,7 @@
  * @stable ICU 3.4
  *
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 utext_isWritable(const UText *ut);
 
 
@@ -794,10 +794,10 @@
   * @see Replaceable::hasMetaData()
   *
   * @param ut The UText to be tested
-  * @return TRUE if the underlying text includes meta data.
+  * @return true if the underlying text includes meta data.
   * @stable ICU 3.4
   */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 utext_hasMetaData(const UText *ut);
 
 
@@ -808,7 +808,7 @@
  *  newly inserted replacement text.
  *
  * This function is only available on UText types that support writing,
- * that is, ones where utext_isWritable() returns TRUE.
+ * that is, ones where utext_isWritable() returns true.
  *
  * When using this function, there should be only a single UText opened onto the
  * underlying native text string.  Behavior after a replace operation
@@ -828,7 +828,7 @@
  *
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utext_replace(UText *ut,
              int64_t nativeStart, int64_t nativeLimit,
              const UChar *replacementText, int32_t replacementLength,
@@ -850,7 +850,7 @@
  * at the destination position.
  *
  * This function is only available on UText types that support writing,
- * that is, ones where utext_isWritable() returns TRUE.
+ * that is, ones where utext_isWritable() returns true.
  *
  * When using this function, there should be only a single UText opened onto the
  * underlying native text string.  Behavior after a copy operation
@@ -863,12 +863,12 @@
  *                     to be copied.
  * @param destIndex    The native destination index to which the source substring is
  *                     copied or moved.
- * @param move         If TRUE, then the substring is moved, not copied/duplicated.
+ * @param move         If true, then the substring is moved, not copied/duplicated.
  * @param status       receives any error status.  Possible errors include U_NO_WRITE_PERMISSION
  *                       
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utext_copy(UText *ut,
           int64_t nativeStart, int64_t nativeLimit,
           int64_t destIndex,
@@ -897,7 +897,7 @@
   *  @see   utext_isWritable()
   *  @stable ICU 3.6
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utext_freeze(UText *ut);
 
 
@@ -972,7 +972,7 @@
   *  @param dest   A UText struct to be filled in with the result of the clone operation,
   *                or NULL if the clone function should heap-allocate a new UText struct.
   *  @param src    The UText to be cloned.
-  *  @param deep   TRUE to request a deep clone, FALSE for a shallow clone.
+  *  @param deep   true to request a deep clone, false for a shallow clone.
   *  @param status Errors are returned here.  For deep clones, U_UNSUPPORTED_ERROR
   *                should be returned if the text provider is unable to clone the
   *                original text.
@@ -1008,9 +1008,9 @@
  *
  * @param ut          the UText being accessed.
  * @param nativeIndex Requested index of the text to be accessed.
- * @param forward     If TRUE, then the returned chunk must contain text
+ * @param forward     If true, then the returned chunk must contain text
  *                    starting from the index, so that start<=index<limit.
- *                    If FALSE, then the returned chunk must contain text
+ *                    If false, then the returned chunk must contain text
  *                    before the index, so that start<index<=limit.
  * @return            True if the requested index could be accessed.  The chunk
  *                    will contain the requested text.
@@ -1114,7 +1114,7 @@
  * @param nativeStart  The index of the start of the region to be copied or moved
  * @param nativeLimit  The index of the character following the region to be replaced.
  * @param nativeDest   The destination index to which the source substring is copied or moved.
- * @param move         If TRUE, then the substring is moved, not copied/duplicated.
+ * @param move         If true, then the substring is moved, not copied/duplicated.
  * @param status       receives any error status.  Possible errors include U_NO_WRITE_PERMISSION
  *
  * @stable ICU 3.4
@@ -1535,7 +1535,7 @@
  * @return pointer to the UText, allocated if necessary, with extra space set up if requested.
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_setup(UText *ut, int32_t extraSpace, UErrorCode *status);
 
 // do not use #ifndef U_HIDE_INTERNAL_API around the following!
diff --git a/libandroidicu/include/unicode/utf.h b/libandroidicu/include/unicode/utf.h
index ef51299..c9d5f57 100644
--- a/libandroidicu/include/unicode/utf.h
+++ b/libandroidicu/include/unicode/utf.h
@@ -103,7 +103,7 @@
  * code point values (0..U+10ffff). They are indicated with negative values instead.
  *
  * For more information see the ICU User Guide Strings chapter
- * (http://userguide.icu-project.org/strings).
+ * (https://unicode-org.github.io/icu/userguide/strings).
  *
  * <em>Usage:</em>
  * ICU coding guidelines for if() statements should be followed when using these macros.
@@ -124,7 +124,7 @@
 /**
  * Is this code point a Unicode noncharacter?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_UNICODE_NONCHAR(c) \
@@ -145,7 +145,7 @@
  * and that boundary is tested first for performance.
  *
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_UNICODE_CHAR(c) \
@@ -155,7 +155,7 @@
 /**
  * Is this code point a BMP code point (U+0000..U+ffff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.8
  */
 #define U_IS_BMP(c) ((uint32_t)(c)<=0xffff)
@@ -163,7 +163,7 @@
 /**
  * Is this code point a supplementary code point (U+10000..U+10ffff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.8
  */
 #define U_IS_SUPPLEMENTARY(c) ((uint32_t)((c)-0x10000)<=0xfffff)
@@ -171,7 +171,7 @@
 /**
  * Is this code point a lead surrogate (U+d800..U+dbff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_LEAD(c) (((c)&0xfffffc00)==0xd800)
@@ -179,7 +179,7 @@
 /**
  * Is this code point a trail surrogate (U+dc00..U+dfff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_TRAIL(c) (((c)&0xfffffc00)==0xdc00)
@@ -187,7 +187,7 @@
 /**
  * Is this code point a surrogate (U+d800..U+dfff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_SURROGATE(c) (((c)&0xfffff800)==0xd800)
@@ -196,7 +196,7 @@
  * Assuming c is a surrogate code point (U_IS_SURROGATE(c)),
  * is it a lead surrogate?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_SURROGATE_LEAD(c) (((c)&0x400)==0)
@@ -205,7 +205,7 @@
  * Assuming c is a surrogate code point (U_IS_SURROGATE(c)),
  * is it a trail surrogate?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 4.2
  */
 #define U_IS_SURROGATE_TRAIL(c) (((c)&0x400)!=0)
diff --git a/libandroidicu/include/unicode/utf16.h b/libandroidicu/include/unicode/utf16.h
index 9fd7d5c..3902c60 100644
--- a/libandroidicu/include/unicode/utf16.h
+++ b/libandroidicu/include/unicode/utf16.h
@@ -23,7 +23,7 @@
  * This file defines macros to deal with 16-bit Unicode (UTF-16) code units and strings.
  *
  * For more information see utf.h and the ICU User Guide Strings chapter
- * (http://userguide.icu-project.org/strings).
+ * (https://unicode-org.github.io/icu/userguide/strings).
  *
  * <em>Usage:</em>
  * ICU coding guidelines for if() statements should be followed when using these macros.
@@ -34,6 +34,7 @@
 #ifndef __UTF16_H__
 #define __UTF16_H__
 
+#include <stdbool.h>
 #include "unicode/umachine.h"
 #ifndef __UTF_H__
 #   include "unicode/utf.h"
@@ -44,7 +45,7 @@
 /**
  * Does this code unit alone encode a code point (BMP, not a surrogate)?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_SINGLE(c) !U_IS_SURROGATE(c)
@@ -52,7 +53,7 @@
 /**
  * Is this code unit a lead surrogate (U+d800..U+dbff)?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_LEAD(c) (((c)&0xfffffc00)==0xd800)
@@ -60,7 +61,7 @@
 /**
  * Is this code unit a trail surrogate (U+dc00..U+dfff)?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_TRAIL(c) (((c)&0xfffffc00)==0xdc00)
@@ -68,7 +69,7 @@
 /**
  * Is this code unit a surrogate (U+d800..U+dfff)?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_SURROGATE(c) U_IS_SURROGATE(c)
@@ -77,7 +78,7 @@
  * Assuming c is a surrogate code point (U16_IS_SURROGATE(c)),
  * is it a lead surrogate?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_SURROGATE_LEAD(c) (((c)&0x400)==0)
@@ -86,7 +87,7 @@
  * Assuming c is a surrogate code point (U16_IS_SURROGATE(c)),
  * is it a trail surrogate?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 4.2
  */
 #define U16_IS_SURROGATE_TRAIL(c) (((c)&0x400)!=0)
@@ -379,13 +380,13 @@
  * "Safe" macro, checks for a valid code point.
  * If a surrogate pair is written, checks for sufficient space in the string.
  * If the code point is not valid or a trail surrogate does not fit,
- * then isError is set to TRUE.
+ * then isError is set to true.
  *
  * @param s const UChar * string buffer
  * @param i string offset, must be i<capacity
  * @param capacity size of the string buffer
  * @param c code point to append
- * @param isError output UBool set to TRUE if an error occurs, otherwise not modified
+ * @param isError output UBool set to true if an error occurs, otherwise not modified
  * @see U16_APPEND_UNSAFE
  * @stable ICU 2.4
  */
@@ -396,7 +397,7 @@
         (s)[(i)++]=(uint16_t)(((c)>>10)+0xd7c0); \
         (s)[(i)++]=(uint16_t)(((c)&0x3ff)|0xdc00); \
     } else /* c>0x10ffff or not enough space */ { \
-        (isError)=TRUE; \
+        (isError)=true; \
     } \
 } UPRV_BLOCK_MACRO_END
 
diff --git a/libandroidicu/include/unicode/utf8.h b/libandroidicu/include/unicode/utf8.h
index 4987a00..5a07435 100644
--- a/libandroidicu/include/unicode/utf8.h
+++ b/libandroidicu/include/unicode/utf8.h
@@ -23,7 +23,7 @@
  * This file defines macros to deal with 8-bit Unicode (UTF-8) code units (bytes) and strings.
  *
  * For more information see utf.h and the ICU User Guide Strings chapter
- * (http://userguide.icu-project.org/strings).
+ * (https://unicode-org.github.io/icu/userguide/strings).
  *
  * <em>Usage:</em>
  * ICU coding guidelines for if() statements should be followed when using these macros.
@@ -34,6 +34,7 @@
 #ifndef __UTF8_H__
 #define __UTF8_H__
 
+#include <stdbool.h>
 #include "unicode/umachine.h"
 #ifndef __UTF_H__
 #   include "unicode/utf.h"
@@ -117,48 +118,48 @@
  * Function for handling "next code point" with error-checking.
  *
  * This is internal since it is not meant to be called directly by external clients;
- * however it is U_STABLE (not U_INTERNAL) since it is called by public macros in this
+ * however it is called by public macros in this
  * file and thus must remain stable, and should not be hidden when other internal
  * functions are hidden (otherwise public macros would fail to compile).
  * @internal
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utf8_nextCharSafeBody(const uint8_t *s, int32_t *pi, int32_t length, UChar32 c, UBool strict);
 
 /**
  * Function for handling "append code point" with error-checking.
  *
  * This is internal since it is not meant to be called directly by external clients;
- * however it is U_STABLE (not U_INTERNAL) since it is called by public macros in this
+ * however it is called by public macros in this
  * file and thus must remain stable, and should not be hidden when other internal
  * functions are hidden (otherwise public macros would fail to compile).
  * @internal
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utf8_appendCharSafeBody(uint8_t *s, int32_t i, int32_t length, UChar32 c, UBool *pIsError);
 
 /**
  * Function for handling "previous code point" with error-checking.
  *
  * This is internal since it is not meant to be called directly by external clients;
- * however it is U_STABLE (not U_INTERNAL) since it is called by public macros in this
+ * however it is called by public macros in this
  * file and thus must remain stable, and should not be hidden when other internal
  * functions are hidden (otherwise public macros would fail to compile).
  * @internal
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utf8_prevCharSafeBody(const uint8_t *s, int32_t start, int32_t *pi, UChar32 c, UBool strict);
 
 /**
  * Function for handling "skip backward one code point" with error-checking.
  *
  * This is internal since it is not meant to be called directly by external clients;
- * however it is U_STABLE (not U_INTERNAL) since it is called by public macros in this
+ * however it is called by public macros in this
  * file and thus must remain stable, and should not be hidden when other internal
  * functions are hidden (otherwise public macros would fail to compile).
  * @internal
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i);
 
 /* single-code point definitions -------------------------------------------- */
@@ -166,7 +167,7 @@
 /**
  * Does this code unit (byte) encode a code point by itself (US-ASCII 0..0x7f)?
  * @param c 8-bit code unit (byte)
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U8_IS_SINGLE(c) (((c)&0x80)==0)
@@ -174,7 +175,7 @@
 /**
  * Is this code unit (byte) a UTF-8 lead byte? (0xC2..0xF4)
  * @param c 8-bit code unit (byte)
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U8_IS_LEAD(c) ((uint8_t)((c)-0xc2)<=0x32)
@@ -183,7 +184,7 @@
 /**
  * Is this code unit (byte) a UTF-8 trail byte? (0x80..0xBF)
  * @param c 8-bit code unit (byte)
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U8_IS_TRAIL(c) ((int8_t)(c)<-0x40)
@@ -445,13 +446,13 @@
  * "Safe" macro, checks for a valid code point.
  * If a non-ASCII code point is written, checks for sufficient space in the string.
  * If the code point is not valid or trail bytes do not fit,
- * then isError is set to TRUE.
+ * then isError is set to true.
  *
  * @param s const uint8_t * string buffer
  * @param i int32_t string offset, must be i<capacity
  * @param capacity int32_t size of the string buffer
  * @param c UChar32 code point to append
- * @param isError output UBool set to TRUE if an error occurs, otherwise not modified
+ * @param isError output UBool set to true if an error occurs, otherwise not modified
  * @see U8_APPEND_UNSAFE
  * @stable ICU 2.4
  */
@@ -472,7 +473,7 @@
         (s)[(i)++]=(uint8_t)(((__uc>>6)&0x3f)|0x80); \
         (s)[(i)++]=(uint8_t)((__uc&0x3f)|0x80); \
     } else { \
-        (isError)=TRUE; \
+        (isError)=true; \
     } \
 } UPRV_BLOCK_MACRO_END
 
diff --git a/libandroidicu/include/unicode/utf_old.h b/libandroidicu/include/unicode/utf_old.h
index b2428e6..160f5ad 100644
--- a/libandroidicu/include/unicode/utf_old.h
+++ b/libandroidicu/include/unicode/utf_old.h
@@ -109,7 +109,7 @@
  * Where such a distinction is useful, there are two versions of the macros, "unsafe" and "safe"
  * ones with ..._UNSAFE and ..._SAFE suffixes. The unsafe macros are fast but may cause
  * program failures if the strings are not well-formed. The safe macros have an additional, boolean
- * parameter "strict". If strict is FALSE, then only illegal sequences are detected.
+ * parameter "strict". If strict is false, then only illegal sequences are detected.
  * Otherwise, irregular sequences and non-characters are detected as well (like single surrogates).
  * Safe macros return special error code points for illegal/irregular sequences:
  * Typically, U+ffff, or values that would result in a code unit sequence of the same length
@@ -181,7 +181,7 @@
 
 /**
  * The default choice for general Unicode string macros is to use the ..._SAFE macro implementations
- * with strict=FALSE.
+ * with strict=false.
  *
  * @deprecated ICU 2.4. Obsolete, see utf_old.h.
  */
diff --git a/libandroidicu/include/unicode/utmscale.h b/libandroidicu/include/unicode/utmscale.h
index d8b8a2e..5a0bdc6 100644
--- a/libandroidicu/include/unicode/utmscale.h
+++ b/libandroidicu/include/unicode/utmscale.h
@@ -449,7 +449,7 @@
  * 
  * @stable ICU 3.2
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
     utmscale_getTimeScaleValue(UDateTimeScale timeScale, UTimeScaleValue value, UErrorCode *status);
 
 /* Conversion to 'universal time scale' */
@@ -465,7 +465,7 @@
  *
  * @stable ICU 3.2
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
     utmscale_fromInt64(int64_t otherTime, UDateTimeScale timeScale, UErrorCode *status);
 
 /* Conversion from 'universal time scale' */
@@ -481,7 +481,7 @@
  *
  * @stable ICU 3.2
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
     utmscale_toInt64(int64_t universalTime, UDateTimeScale timeScale, UErrorCode *status);
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/libandroidicu/include/unicode/utrace.h b/libandroidicu/include/unicode/utrace.h
index 5b4a049..28c313c 100644
--- a/libandroidicu/include/unicode/utrace.h
+++ b/libandroidicu/include/unicode/utrace.h
@@ -112,11 +112,9 @@
     UTRACE_COLLATION_LIMIT,
 #endif  // U_HIDE_DEPRECATED_API
 
-#ifndef U_HIDE_DRAFT_API
-
     /**
      * The lowest resource/data location.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UTRACE_UDATA_START=0x3000,
 
@@ -133,7 +131,7 @@
      * - "get" (a path was loaded, but the value was not accessed)
      * - "getalias" (a path was loaded, and an alias was resolved)
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UTRACE_UDATA_RESOURCE=UTRACE_UDATA_START,
 
@@ -141,7 +139,7 @@
      * Indicates that a resource bundle was opened.
      *
      * Provides one C-style string to UTraceData: file name.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UTRACE_UDATA_BUNDLE,
 
@@ -150,7 +148,7 @@
      *
      * Provides one C-style string to UTraceData: file name.
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UTRACE_UDATA_DATA_FILE,
 
@@ -163,12 +161,10 @@
      *
      * Provides one C-style string to UTraceData: file name.
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UTRACE_UDATA_RES_FILE,
 
-#endif  // U_HIDE_DRAFT_API
-
 #ifndef U_HIDE_INTERNAL_API
     /**
      * One more than the highest normal resource/data trace location.
@@ -249,7 +245,7 @@
  * @param traceLevel A UTraceLevel value.
  * @stable ICU 2.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utrace_setLevel(int32_t traceLevel);
 
 /**
@@ -257,7 +253,7 @@
  * @return The UTraceLevel value being used by ICU.
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utrace_getLevel(void);
 
 /* Trace function pointers types  ----------------------------- */
@@ -331,7 +327,7 @@
   *
   *  @stable ICU 2.8
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utrace_setFunctions(const void *context,
                     UTraceEntry *e, UTraceExit *x, UTraceData *d);
 
@@ -345,7 +341,7 @@
   * @param d        The currently installed UTraceData function.
   * @stable ICU 2.8
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utrace_getFunctions(const void **context,
                     UTraceEntry **e, UTraceExit **x, UTraceData **d);
 
@@ -467,7 +463,7 @@
   *                 If buffer capacity is insufficient, the required capacity is returned. 
   *  @stable ICU 2.8
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utrace_vformat(char *outBuf, int32_t capacity,
               int32_t indent, const char *fmt,  va_list args);
 
@@ -488,7 +484,7 @@
   *                 If buffer capacity is insufficient, the required capacity is returned. 
   *  @stable ICU 2.8
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utrace_format(char *outBuf, int32_t capacity,
               int32_t indent, const char *fmt,  ...);
 
@@ -505,7 +501,7 @@
  * @see UTraceFunctionNumber
  * @stable ICU 2.8
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 utrace_functionName(int32_t fnNumber);
 
 U_CDECL_END
diff --git a/libandroidicu/include/unicode/utrans.h b/libandroidicu/include/unicode/utrans.h
index 9134e37..1ad7dbd 100644
--- a/libandroidicu/include/unicode/utrans.h
+++ b/libandroidicu/include/unicode/utrans.h
@@ -191,7 +191,7 @@
  *         utrans_xxx() functions, or NULL if the open call fails.
  * @stable ICU 2.8
  */
-U_STABLE UTransliterator* U_EXPORT2
+U_CAPI UTransliterator* U_EXPORT2
 utrans_openU(const UChar *id,
              int32_t idLength,
              UTransDirection dir,
@@ -215,7 +215,7 @@
  * inverse of trans, or NULL if the open call fails.
  * @stable ICU 2.0
  */
-U_STABLE UTransliterator* U_EXPORT2 
+U_CAPI UTransliterator* U_EXPORT2 
 utrans_openInverse(const UTransliterator* trans,
                    UErrorCode* status);
 
@@ -229,7 +229,7 @@
  * utrans_xxx() functions, or NULL if the clone call fails.
  * @stable ICU 2.0
  */
-U_STABLE UTransliterator* U_EXPORT2 
+U_CAPI UTransliterator* U_EXPORT2 
 utrans_clone(const UTransliterator* trans,
              UErrorCode* status);
 
@@ -239,7 +239,7 @@
  * @param trans the transliterator to be closed.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_close(UTransliterator* trans);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -275,7 +275,7 @@
  *
  * @stable ICU 2.8
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 utrans_getUnicodeID(const UTransliterator *trans,
                     int32_t *resultLength);
 
@@ -293,7 +293,7 @@
  * @param status a pointer to the UErrorCode
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_register(UTransliterator* adoptedTrans,
                 UErrorCode* status);
 
@@ -306,7 +306,7 @@
  * @param idLength the length of id, or -1 if id is zero-terminated
  * @stable ICU 2.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utrans_unregisterID(const UChar* id, int32_t idLength);
 
 /**
@@ -327,7 +327,7 @@
  * @see UnicodeSet
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_setFilter(UTransliterator* trans,
                  const UChar* filterPattern,
                  int32_t filterPatternLen,
@@ -340,7 +340,7 @@
  * @return the number of system transliterators.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 utrans_countAvailableIDs(void);
 
 /**
@@ -352,7 +352,7 @@
  *
  * @stable ICU 2.8
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 utrans_openIDs(UErrorCode *pErrorCode);
 
 /********************************************************************
@@ -382,7 +382,7 @@
  * @param status a pointer to the UErrorCode
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_trans(const UTransliterator* trans,
              UReplaceable* rep,
              const UReplaceableCallbacks* repFunc,
@@ -433,7 +433,7 @@
  * @param status a pointer to the UErrorCode
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_transIncremental(const UTransliterator* trans,
                         UReplaceable* rep,
                         const UReplaceableCallbacks* repFunc,
@@ -470,7 +470,7 @@
  * @param status a pointer to the UErrorCode
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_transUChars(const UTransliterator* trans,
                    UChar* text,
                    int32_t* textLength,
@@ -505,7 +505,7 @@
  * @see utrans_transIncremental
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_transIncrementalUChars(const UTransliterator* trans,
                               UChar* text,
                               int32_t* textLength,
@@ -518,7 +518,7 @@
  * transliterator.
  *
  * @param trans     The transliterator
- * @param escapeUnprintable if TRUE then convert unprintable characters to their
+ * @param escapeUnprintable if true then convert unprintable characters to their
  *                  hex escape representations, \\uxxxx or \\Uxxxxxxxx.
  *                  Unprintable characters are those other than
  *                  U+000A, U+0020..U+007E.
@@ -530,7 +530,7 @@
  *                  in which case an error is returned).
  * @stable ICU 53
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utrans_toRules(     const UTransliterator* trans,
                     UBool escapeUnprintable,
                     UChar* result, int32_t resultLength,
@@ -540,9 +540,9 @@
  * Returns the set of all characters that may be modified in the input text by
  * this UTransliterator, optionally ignoring the transliterator's current filter.
  * @param trans     The transliterator.
- * @param ignoreFilter If FALSE, the returned set incorporates the
+ * @param ignoreFilter If false, the returned set incorporates the
  *                  UTransliterator's current filter; if the filter is changed,
- *                  the return value of this function will change. If TRUE, the
+ *                  the return value of this function will change. If true, the
  *                  returned set ignores the effect of the UTransliterator's
  *                  current filter.
  * @param fillIn    Pointer to a USet object to receive the modifiable characters
@@ -555,7 +555,7 @@
  *                  error, NULL is returned.
  * @stable ICU 53
  */
-U_STABLE USet* U_EXPORT2
+U_CAPI USet* U_EXPORT2
 utrans_getSourceSet(const UTransliterator* trans,
                     UBool ignoreFilter,
                     USet* fillIn,
diff --git a/libandroidicu/include/unicode/utypes.h b/libandroidicu/include/unicode/utypes.h
index 8d8f547..7c4ea7a 100644
--- a/libandroidicu/include/unicode/utypes.h
+++ b/libandroidicu/include/unicode/utypes.h
@@ -479,13 +479,23 @@
     U_COLLATOR_VERSION_MISMATCH = 28,   /**< Collator version is not compatible with the base version */
     U_USELESS_COLLATOR_ERROR  = 29,     /**< Collator is options only and no base is specified */
     U_NO_WRITE_PERMISSION     = 30,     /**< Attempt to modify read-only or constant data. */
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * The input is impractically long for an operation.
+     * It is rejected because it may lead to problems such as excessive
+     * processing time, stack depth, or heap memory requirements.
+     *
+     * @draft ICU 68
+     */
+    U_INPUT_TOO_LONG_ERROR = 31,
+#endif  // U_HIDE_DRAFT_API
 
 #ifndef U_HIDE_DEPRECATED_API
     /**
      * One more than the highest standard error code.
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
-    U_STANDARD_ERROR_LIMIT,
+    U_STANDARD_ERROR_LIMIT = 32,
 #endif  // U_HIDE_DEPRECATED_API
 
     /*
@@ -715,7 +725,7 @@
  * in the UErrorCode enum above.
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 u_errorName(UErrorCode code);
 
 
diff --git a/libandroidicu/include/unicode/uvernum.h b/libandroidicu/include/unicode/uvernum.h
index c66776d..a46481a 100644
--- a/libandroidicu/include/unicode/uvernum.h
+++ b/libandroidicu/include/unicode/uvernum.h
@@ -60,13 +60,13 @@
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.4
  */
-#define U_ICU_VERSION_MAJOR_NUM 67
+#define U_ICU_VERSION_MAJOR_NUM 68
 
 /** The current ICU minor version as an integer.
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.6
  */
-#define U_ICU_VERSION_MINOR_NUM 1
+#define U_ICU_VERSION_MINOR_NUM 2
 
 /** The current ICU patchlevel version as an integer.
  *  This value will change in the subsequent releases of ICU
@@ -86,7 +86,7 @@
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.6
  */
-#define U_ICU_VERSION_SUFFIX _67
+#define U_ICU_VERSION_SUFFIX _68
 
 /**
  * \def U_DEF2_ICU_ENTRY_POINT_RENAME
@@ -139,7 +139,7 @@
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.4
  */
-#define U_ICU_VERSION "67.1"
+#define U_ICU_VERSION "68.2"
 
 /**
  * The current ICU library major version number as a string, for library name suffixes.
@@ -148,17 +148,17 @@
  * Until ICU 4.8, this was the combination of the single-digit major and minor ICU version numbers
  * into one string without dots ("48").
  * Since ICU 49, it is the double-digit major ICU version number.
- * See http://userguide.icu-project.org/design#TOC-Version-Numbers-in-ICU
+ * See https://unicode-org.github.io/icu/userguide/design#version-numbers-in-icu
  *
  * @stable ICU 2.6
  */
-#define U_ICU_VERSION_SHORT "67"
+#define U_ICU_VERSION_SHORT "68"
 
 #ifndef U_HIDE_INTERNAL_API
 /** Data version in ICU4C.
  * @internal ICU 4.4 Internal Use Only
  **/
-#define U_ICU_DATA_VERSION "67.1"
+#define U_ICU_DATA_VERSION "68.2"
 #endif  /* U_HIDE_INTERNAL_API */
 
 /*===========================================================================
diff --git a/libandroidicu/include/unicode/uversion.h b/libandroidicu/include/unicode/uversion.h
index 5700f62..113568d 100644
--- a/libandroidicu/include/unicode/uversion.h
+++ b/libandroidicu/include/unicode/uversion.h
@@ -141,7 +141,7 @@
  *                      values of up to 255 each.
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_versionFromString(UVersionInfo versionArray, const char *versionString);
 
 /**
@@ -155,7 +155,7 @@
  *                      fields with values of up to 255 each.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_versionFromUString(UVersionInfo versionArray, const UChar *versionString);
 
 
@@ -171,7 +171,7 @@
  *                      The buffer size must be at least U_MAX_VERSION_STRING_LENGTH.
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_versionToString(const UVersionInfo versionArray, char *versionString);
 
 /**
@@ -182,6 +182,6 @@
  * @param versionArray the version # information, the result will be filled in
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_getVersion(UVersionInfo versionArray);
 #endif
diff --git a/libicu/cts_headers/bmpset.h b/libicu/cts_headers/bmpset.h
index 018aeb7..e1982ac 100644
--- a/libicu/cts_headers/bmpset.h
+++ b/libicu/cts_headers/bmpset.h
@@ -101,7 +101,7 @@
      */
     UBool latin1Contains[0x100];
 
-    /* TRUE if contains(U+FFFD). */
+    /* true if contains(U+FFFD). */
     UBool containsFFFD;
 
     /*
diff --git a/libicu/cts_headers/brkeng.h b/libicu/cts_headers/brkeng.h
index e40fce1..155433b 100644
--- a/libicu/cts_headers/brkeng.h
+++ b/libicu/cts_headers/brkeng.h
@@ -54,7 +54,7 @@
   * a particular kind of break.</p>
   *
   * @param c A character which begins a run that the engine might handle
-  * @return TRUE if this engine handles the particular character and break
+  * @return true if this engine handles the particular character and break
   * type.
   */
   virtual UBool handles(UChar32 c) const = 0;
@@ -171,7 +171,7 @@
   * a particular kind of break.</p>
   *
   * @param c A character which begins a run that the engine might handle
-  * @return TRUE if this engine handles the particular character and break
+  * @return true if this engine handles the particular character and break
   * type.
   */
   virtual UBool handles(UChar32 c) const;
diff --git a/libicu/cts_headers/buddhcal.h b/libicu/cts_headers/buddhcal.h
index 0ad0886..7fc686d 100644
--- a/libicu/cts_headers/buddhcal.h
+++ b/libicu/cts_headers/buddhcal.h
@@ -174,7 +174,7 @@
                                             UBool useMonth) const;
 
     /**
-     * Returns TRUE because the Buddhist Calendar does have a default century
+     * Returns true because the Buddhist Calendar does have a default century
      * @internal
      */
     virtual UBool haveDefaultCentury() const;
diff --git a/libicu/cts_headers/bytesinkutil.h b/libicu/cts_headers/bytesinkutil.h
index 6808fbe..ab25164 100644
--- a/libicu/cts_headers/bytesinkutil.h
+++ b/libicu/cts_headers/bytesinkutil.h
@@ -45,9 +45,9 @@
     static UBool appendUnchanged(const uint8_t *s, int32_t length,
                                  ByteSink &sink, uint32_t options, Edits *edits,
                                  UErrorCode &errorCode) {
-        if (U_FAILURE(errorCode)) { return FALSE; }
+        if (U_FAILURE(errorCode)) { return false; }
         if (length > 0) { appendNonEmptyUnchanged(s, length, sink, options, edits); }
-        return TRUE;
+        return true;
     }
 
     static UBool appendUnchanged(const uint8_t *s, const uint8_t *limit,
diff --git a/libicu/cts_headers/cecal.h b/libicu/cts_headers/cecal.h
index c380f0b..80dab70 100644
--- a/libicu/cts_headers/cecal.h
+++ b/libicu/cts_headers/cecal.h
@@ -88,7 +88,7 @@
     virtual UBool inDaylightTime(UErrorCode&) const;
 
     /**
-     * Returns TRUE because Coptic/Ethiopic Calendar does have a default century
+     * Returns true because Coptic/Ethiopic Calendar does have a default century
      * @internal
      */
     virtual UBool haveDefaultCentury() const;
diff --git a/libicu/cts_headers/charstr.h b/libicu/cts_headers/charstr.h
index 23b950e..6619faa 100644
--- a/libicu/cts_headers/charstr.h
+++ b/libicu/cts_headers/charstr.h
@@ -87,6 +87,22 @@
      * The caller must uprv_free() the result.
      */
     char *cloneData(UErrorCode &errorCode) const;
+    /**
+     * Copies the contents of the string into dest.
+     * Checks if there is enough space in dest, extracts the entire string if possible,
+     * and NUL-terminates dest if possible.
+     *
+     * If the string fits into dest but cannot be NUL-terminated (length()==capacity),
+     * then the error code is set to U_STRING_NOT_TERMINATED_WARNING.
+     * If the string itself does not fit into dest (length()>capacity),
+     * then the error code is set to U_BUFFER_OVERFLOW_ERROR.
+     *
+     * @param dest Destination string buffer.
+     * @param capacity Size of the dest buffer (number of chars).
+     * @param errorCode ICU error code.
+     * @return length()
+     */
+    int32_t extract(char *dest, int32_t capacity, UErrorCode &errorCode) const;
 
     bool operator==(StringPiece other) const {
         return len == other.length() && (len == 0 || uprv_memcmp(data(), other.data(), len) == 0);
@@ -141,13 +157,13 @@
 
     /**
      * Appends a filename/path part, e.g., a directory name.
-     * First appends a U_FILE_SEP_CHAR if necessary.
+     * First appends a U_FILE_SEP_CHAR or U_FILE_ALT_SEP_CHAR if necessary.
      * Does nothing if s is empty.
      */
     CharString &appendPathPart(StringPiece s, UErrorCode &errorCode);
 
     /**
-     * Appends a U_FILE_SEP_CHAR if this string is not empty
+     * Appends a U_FILE_SEP_CHAR or U_FILE_ALT_SEP_CHAR if this string is not empty
      * and does not already end with a U_FILE_SEP_CHAR or U_FILE_ALT_SEP_CHAR.
      */
     CharString &ensureEndsWithFileSeparator(UErrorCode &errorCode);
@@ -160,6 +176,12 @@
 
     CharString(const CharString &other); // forbid copying of this class
     CharString &operator=(const CharString &other); // forbid copying of this class
+
+    /**
+     * Returns U_FILE_ALT_SEP_CHAR if found in string, and U_FILE_SEP_CHAR is not found.
+     * Otherwise returns U_FILE_SEP_CHAR.
+     */
+    char getDirSepChar() const;
 };
 
 U_NAMESPACE_END
diff --git a/libicu/cts_headers/charstrmap.h b/libicu/cts_headers/charstrmap.h
new file mode 100644
index 0000000..3320a46
--- /dev/null
+++ b/libicu/cts_headers/charstrmap.h
@@ -0,0 +1,55 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+// charstrmap.h
+// created: 2020sep01 Frank Yung-Fong Tang
+
+#ifndef __CHARSTRMAP_H__
+#define __CHARSTRMAP_H__
+
+#include <utility>
+#include "unicode/utypes.h"
+#include "unicode/uobject.h"
+#include "uhash.h"
+
+U_NAMESPACE_BEGIN
+
+/**
+ * Map of const char * keys & values.
+ * Stores pointers as is: Does not own/copy/adopt/release strings.
+ */
+class CharStringMap final : public UMemory {
+public:
+    /** Constructs an unusable non-map. */
+    CharStringMap() : map(nullptr) {}
+    CharStringMap(int32_t size, UErrorCode &errorCode) {
+        map = uhash_openSize(uhash_hashChars, uhash_compareChars, uhash_compareChars,
+                             size, &errorCode);
+    }
+    CharStringMap(CharStringMap &&other) U_NOEXCEPT : map(other.map) {
+        other.map = nullptr;
+    }
+    CharStringMap(const CharStringMap &other) = delete;
+    ~CharStringMap() {
+        uhash_close(map);
+    }
+
+    CharStringMap &operator=(CharStringMap &&other) U_NOEXCEPT {
+        map = other.map;
+        other.map = nullptr;
+        return *this;
+    }
+    CharStringMap &operator=(const CharStringMap &other) = delete;
+
+    const char *get(const char *key) const { return static_cast<const char *>(uhash_get(map, key)); }
+    void put(const char *key, const char *value, UErrorCode &errorCode) {
+        uhash_put(map, const_cast<char *>(key), const_cast<char *>(value), &errorCode);
+    }
+
+private:
+    UHashtable *map;
+};
+
+U_NAMESPACE_END
+
+#endif  //  __CHARSTRMAP_H__
diff --git a/libicu/cts_headers/chnsecal.h b/libicu/cts_headers/chnsecal.h
index a0c21b6..910afd2 100644
--- a/libicu/cts_headers/chnsecal.h
+++ b/libicu/cts_headers/chnsecal.h
@@ -242,7 +242,7 @@
 
 
   /**
-   * Returns TRUE because the Islamic Calendar does have a default century
+   * Returns true because the Islamic Calendar does have a default century
    * @internal
    */
   virtual UBool haveDefaultCentury() const;
diff --git a/libicu/cts_headers/cmemory.h b/libicu/cts_headers/cmemory.h
index 8d60442..a9d9424 100644
--- a/libicu/cts_headers/cmemory.h
+++ b/libicu/cts_headers/cmemory.h
@@ -292,14 +292,21 @@
     /**
      * Default constructor initializes with internal T[stackCapacity] buffer.
      */
-    MaybeStackArray() : ptr(stackArray), capacity(stackCapacity), needToRelease(FALSE) {}
+    MaybeStackArray() : ptr(stackArray), capacity(stackCapacity), needToRelease(false) {}
     /**
      * Automatically allocates the heap array if the argument is larger than the stack capacity.
      * Intended for use when an approximate capacity is known at compile time but the true
      * capacity is not known until runtime.
      */
-    MaybeStackArray(int32_t newCapacity) : MaybeStackArray() {
-        if (capacity < newCapacity) { resize(newCapacity); }
+    MaybeStackArray(int32_t newCapacity, UErrorCode status) : MaybeStackArray() {
+        if (U_FAILURE(status)) {
+            return;
+        }
+        if (capacity < newCapacity) {
+            if (resize(newCapacity) == nullptr) {
+                status = U_MEMORY_ALLOCATION_ERROR;
+            }
+        }
     }
     /**
      * Destructor deletes the array (if owned).
@@ -355,7 +362,7 @@
             releaseArray();
             ptr=otherArray;
             capacity=otherCapacity;
-            needToRelease=FALSE;
+            needToRelease=false;
         }
     }
     /**
@@ -380,6 +387,20 @@
      *         caller becomes responsible for deleting the array
      */
     inline T *orphanOrClone(int32_t length, int32_t &resultCapacity);
+
+protected:
+    // Resizes the array to the size of src, then copies the contents of src.
+    void copyFrom(const MaybeStackArray &src, UErrorCode &status) {
+        if (U_FAILURE(status)) {
+            return;
+        }
+        if (this->resize(src.capacity, 0) == NULL) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+            return;
+        }
+        uprv_memcpy(this->ptr, src.ptr, (size_t)capacity * sizeof(T));
+    }
+
 private:
     T *ptr;
     int32_t capacity;
@@ -393,14 +414,14 @@
     void resetToStackArray() {
         ptr=stackArray;
         capacity=stackCapacity;
-        needToRelease=FALSE;
+        needToRelease=false;
     }
     /* No comparison operators with other MaybeStackArray's. */
-    bool operator==(const MaybeStackArray & /*other*/) {return FALSE;}
-    bool operator!=(const MaybeStackArray & /*other*/) {return TRUE;}
+    bool operator==(const MaybeStackArray & /*other*/) = delete;
+    bool operator!=(const MaybeStackArray & /*other*/) = delete;
     /* No ownership transfer: No copy constructor, no assignment operator. */
-    MaybeStackArray(const MaybeStackArray & /*other*/) {}
-    void operator=(const MaybeStackArray & /*other*/) {}
+    MaybeStackArray(const MaybeStackArray & /*other*/) = delete;
+    void operator=(const MaybeStackArray & /*other*/) = delete;
 };
 
 template<typename T, int32_t stackCapacity>
@@ -435,7 +456,7 @@
 inline T *MaybeStackArray<T, stackCapacity>::resize(int32_t newCapacity, int32_t length) {
     if(newCapacity>0) {
 #if U_DEBUG && defined(UPRV_MALLOC_COUNT)
-      ::fprintf(::stderr,"MaybeStacArray (resize) alloc %d * %lu\n", newCapacity,sizeof(T));
+        ::fprintf(::stderr, "MaybeStackArray (resize) alloc %d * %lu\n", newCapacity, sizeof(T));
 #endif
         T *p=(T *)uprv_malloc(newCapacity*sizeof(T));
         if(p!=NULL) {
@@ -451,7 +472,7 @@
             releaseArray();
             ptr=p;
             capacity=newCapacity;
-            needToRelease=TRUE;
+            needToRelease=true;
         }
         return p;
     } else {
@@ -507,7 +528,7 @@
     /**
      * Default constructor initializes with internal H+T[stackCapacity] buffer.
      */
-    MaybeStackHeaderAndArray() : ptr(&stackHeader), capacity(stackCapacity), needToRelease(FALSE) {}
+    MaybeStackHeaderAndArray() : ptr(&stackHeader), capacity(stackCapacity), needToRelease(false) {}
     /**
      * Destructor deletes the memory (if owned).
      */
@@ -556,7 +577,7 @@
             releaseMemory();
             ptr=otherMemory;
             capacity=otherCapacity;
-            needToRelease=FALSE;
+            needToRelease=false;
         }
     }
     /**
@@ -595,8 +616,8 @@
         }
     }
     /* No comparison operators with other MaybeStackHeaderAndArray's. */
-    bool operator==(const MaybeStackHeaderAndArray & /*other*/) {return FALSE;}
-    bool operator!=(const MaybeStackHeaderAndArray & /*other*/) {return TRUE;}
+    bool operator==(const MaybeStackHeaderAndArray & /*other*/) {return false;}
+    bool operator!=(const MaybeStackHeaderAndArray & /*other*/) {return true;}
     /* No ownership transfer: No copy constructor, no assignment operator. */
     MaybeStackHeaderAndArray(const MaybeStackHeaderAndArray & /*other*/) {}
     void operator=(const MaybeStackHeaderAndArray & /*other*/) {}
@@ -625,7 +646,7 @@
             releaseMemory();
             ptr=p;
             capacity=newCapacity;
-            needToRelease=TRUE;
+            needToRelease=true;
         }
         return p;
     } else {
@@ -657,7 +678,7 @@
     resultCapacity=length;
     ptr=&stackHeader;
     capacity=stackCapacity;
-    needToRelease=FALSE;
+    needToRelease=false;
     return p;
 }
 
@@ -704,9 +725,14 @@
     }
 
     MemoryPool& operator=(MemoryPool&& other) U_NOEXCEPT {
-        fCount = other.fCount;
-        fPool = std::move(other.fPool);
-        other.fCount = 0;
+        // Since `this` may contain instances that need to be deleted, we can't
+        // just throw them away and replace them with `other`. The normal way of
+        // dealing with this in C++ is to swap `this` and `other`, rather than
+        // simply overwrite: the destruction of `other` can then take care of
+        // running MemoryPool::~MemoryPool() over the still-to-be-deallocated
+        // instances.
+        std::swap(fCount, other.fCount);
+        std::swap(fPool, other.fPool);
         return *this;
     }
 
@@ -728,6 +754,18 @@
         return fPool[fCount++] = new T(std::forward<Args>(args)...);
     }
 
+    template <typename... Args>
+    T* createAndCheckErrorCode(UErrorCode &status, Args &&... args) {
+        if (U_FAILURE(status)) {
+            return nullptr;
+        }
+        T *pointer = this->create(args...);
+        if (U_SUCCESS(status) && pointer == nullptr) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+        }
+        return pointer;
+    }
+
     /**
      * @return Number of elements that have been allocated.
      */
@@ -763,14 +801,16 @@
 template<typename T, int32_t stackCapacity = 8>
 class MaybeStackVector : protected MemoryPool<T, stackCapacity> {
 public:
-    using MemoryPool<T, stackCapacity>::MemoryPool;
-    using MemoryPool<T, stackCapacity>::operator=;
-
     template<typename... Args>
     T* emplaceBack(Args&&... args) {
         return this->create(args...);
     }
 
+    template <typename... Args>
+    T *emplaceBackAndCheckErrorCode(UErrorCode &status, Args &&... args) {
+        return this->createAndCheckErrorCode(status, args...);
+    }
+
     int32_t length() const {
         return this->fCount;
     }
@@ -779,6 +819,10 @@
         return this->fPool.getAlias();
     }
 
+    const T *const *getAlias() const {
+        return this->fPool.getAlias();
+    }
+
     /**
      * Array item access (read-only).
      * No index bounds check.
@@ -798,19 +842,6 @@
     T* operator[](ptrdiff_t i) {
         return this->fPool[i];
     }
-
-    /**
-     * Append all the items from another MaybeStackVector to this one.
-     */
-    void appendAll(const MaybeStackVector& other, UErrorCode& status) {
-        for (int32_t i = 0; i < other.fCount; i++) {
-            T* item = emplaceBack(*other[i]);
-            if (!item) {
-                status = U_MEMORY_ALLOCATION_ERROR;
-                return;
-            }
-        }
-    }
 };
 
 
diff --git a/libicu/cts_headers/collation.h b/libicu/cts_headers/collation.h
index e9256c9..ecbba29 100644
--- a/libicu/cts_headers/collation.h
+++ b/libicu/cts_headers/collation.h
@@ -356,7 +356,7 @@
     }
 
     /**
-     * @return TRUE if the ce32 yields one or more CEs without further data lookups
+     * @return true if the ce32 yields one or more CEs without further data lookups
      */
     static UBool isSelfContainedCE32(uint32_t ce32) {
         return !isSpecialCE32(ce32) ||
diff --git a/libicu/cts_headers/collationbuilder.h b/libicu/cts_headers/collationbuilder.h
index 2f20050..82f0459 100644
--- a/libicu/cts_headers/collationbuilder.h
+++ b/libicu/cts_headers/collationbuilder.h
@@ -42,7 +42,7 @@
     CollationBuilder(const CollationTailoring *base, UErrorCode &errorCode);
     virtual ~CollationBuilder();
 
-    void disableFastLatin() { fastLatinEnabled = FALSE; }
+    void disableFastLatin() { fastLatinEnabled = false; }
 
     CollationTailoring *parseAndBuild(const UnicodeString &ruleString,
                                       const UVersionInfo rulesVersion,
diff --git a/libicu/cts_headers/collationdatabuilder.h b/libicu/cts_headers/collationdatabuilder.h
index fee444d..6ae7777 100644
--- a/libicu/cts_headers/collationdatabuilder.h
+++ b/libicu/cts_headers/collationdatabuilder.h
@@ -73,12 +73,12 @@
     }
 
     /**
-     * @return TRUE if this builder has mappings (e.g., add() has been called)
+     * @return true if this builder has mappings (e.g., add() has been called)
      */
     UBool hasMappings() const { return modified; }
 
     /**
-     * @return TRUE if c has CEs in this builder
+     * @return true if c has CEs in this builder
      */
     UBool isAssigned(UChar32 c) const;
 
@@ -118,7 +118,7 @@
      * @param primary primary weight for 'start'
      * @param step per-code point primary-weight increment
      * @param errorCode ICU in/out error code
-     * @return TRUE if an OFFSET_TAG range was used for start..end
+     * @return true if an OFFSET_TAG range was used for start..end
      */
     UBool maybeSetPrimaryRange(UChar32 start, UChar32 end,
                                uint32_t primary, int32_t step,
@@ -150,7 +150,7 @@
     void optimize(const UnicodeSet &set, UErrorCode &errorCode);
     void suppressContractions(const UnicodeSet &set, UErrorCode &errorCode);
 
-    void enableFastLatin() { fastLatinEnabled = TRUE; }
+    void enableFastLatin() { fastLatinEnabled = true; }
     virtual void build(CollationData &data, UErrorCode &errorCode);
 
     /**
diff --git a/libicu/cts_headers/collationfcd.h b/libicu/cts_headers/collationfcd.h
index ec7167d..3a5738e 100644
--- a/libicu/cts_headers/collationfcd.h
+++ b/libicu/cts_headers/collationfcd.h
@@ -84,7 +84,7 @@
         // Handles all of Unicode 0..10FFFF.
         // c can be negative, e.g., U_SENTINEL.
         // U+0300 is the first character with lccc!=0.
-        if(c < 0x300) { return FALSE; }
+        if(c < 0x300) { return false; }
         if(c > 0xffff) { c = U16_LEAD(c); }
         int32_t i;
         return
@@ -101,7 +101,7 @@
      * This is a fast and imprecise test.
      *
      * @param c a code point
-     * @return TRUE if c is U+0F73, U+0F75 or U+0F81 or one of several other Tibetan characters
+     * @return true if c is U+0F73, U+0F75 or U+0F81 or one of several other Tibetan characters
      */
     static inline UBool maybeTibetanCompositeVowel(UChar32 c) {
         return (c & 0x1fff01) == 0xf01;
@@ -116,7 +116,7 @@
      * They have distinct lccc/tccc combinations: 129/130 or 129/132.
      *
      * @param fcd16 the FCD value (lccc/tccc combination) of a code point
-     * @return TRUE if fcd16 is from U+0F73, U+0F75 or U+0F81
+     * @return true if fcd16 is from U+0F73, U+0F75 or U+0F81
      */
     static inline UBool isFCD16OfTibetanCompositeVowel(uint16_t fcd16) {
         return fcd16 == 0x8182 || fcd16 == 0x8184;
diff --git a/libicu/cts_headers/collationiterator.h b/libicu/cts_headers/collationiterator.h
index 12e05b4..869f095 100644
--- a/libicu/cts_headers/collationiterator.h
+++ b/libicu/cts_headers/collationiterator.h
@@ -76,9 +76,9 @@
             // (Rather than buffer.getCapacity().)
             if(length < INITIAL_CAPACITY || ensureAppendCapacity(1, errorCode)) {
                 ++length;
-                return TRUE;
+                return true;
             } else {
-                return FALSE;
+                return false;
             }
         }
 
@@ -251,9 +251,9 @@
     virtual UBool foundNULTerminator();
 
     /**
-     * @return FALSE if surrogate code points U+D800..U+DFFF
+     * @return false if surrogate code points U+D800..U+DFFF
      *         map to their own implicit primary weights (for UTF-16),
-     *         or TRUE if they map to CE(U+FFFD) (for UTF-8)
+     *         or true if they map to CE(U+FFFD) (for UTF-8)
      */
     virtual UBool forbidSurrogateCodePoints() const;
 
diff --git a/libicu/cts_headers/collationkeys.h b/libicu/cts_headers/collationkeys.h
index 60d9e50..c526a4f 100644
--- a/libicu/cts_headers/collationkeys.h
+++ b/libicu/cts_headers/collationkeys.h
@@ -65,7 +65,7 @@
     }
 
     UBool Overflowed() const { return appended_ > capacity_; }
-    /** @return FALSE if memory allocation failed */
+    /** @return false if memory allocation failed */
     UBool IsOk() const { return buffer_ != NULL; }
 
 protected:
@@ -94,8 +94,8 @@
         virtual ~LevelCallback();
         /**
          * @param level The next level about to be written to the ByteSink.
-         * @return TRUE if the level is to be written
-         *         (the base class implementation always returns TRUE)
+         * @return true if the level is to be written
+         *         (the base class implementation always returns true)
          */
         virtual UBool needToWrite(Collation::Level level);
     };
@@ -103,7 +103,7 @@
     /**
      * Writes the sort key bytes for minLevel up to the iterator data's strength.
      * Optionally writes the case level.
-     * Stops writing levels when callback.needToWrite(level) returns FALSE.
+     * Stops writing levels when callback.needToWrite(level) returns false.
      * Separates levels with the LEVEL_SEPARATOR_BYTE
      * but does not write a TERMINATOR_BYTE.
      */
diff --git a/libicu/cts_headers/collationtailoring.h b/libicu/cts_headers/collationtailoring.h
index e1bc34c..5fc2bac 100644
--- a/libicu/cts_headers/collationtailoring.h
+++ b/libicu/cts_headers/collationtailoring.h
@@ -50,7 +50,7 @@
     virtual ~CollationTailoring();
 
     /**
-     * Returns TRUE if the constructor could not initialize properly.
+     * Returns true if the constructor could not initialize properly.
      */
     UBool isBogus() { return settings == NULL; }
 
diff --git a/libicu/cts_headers/collationweights.h b/libicu/cts_headers/collationweights.h
index b415882..0d20b92 100644
--- a/libicu/cts_headers/collationweights.h
+++ b/libicu/cts_headers/collationweights.h
@@ -62,7 +62,7 @@
      *                   weights less than this one.
      * @param n          The number of collation element weights w necessary such that
      *                   lowerLimit<w<upperLimit in lexical order.
-     * @return TRUE if it is possible to fit n elements between the limits
+     * @return true if it is possible to fit n elements between the limits
      */
     UBool allocWeights(uint32_t lowerLimit, uint32_t upperLimit, int32_t n);
 
diff --git a/libicu/cts_headers/cpdtrans.h b/libicu/cts_headers/cpdtrans.h
index a2c7abb..5ed74fc 100644
--- a/libicu/cts_headers/cpdtrans.h
+++ b/libicu/cts_headers/cpdtrans.h
@@ -131,7 +131,7 @@
      * to recreate this transliterator.
      * @param result the string to receive the rules.  Previous
      * contents will be deleted.
-     * @param escapeUnprintable if TRUE then convert unprintable
+     * @param escapeUnprintable if true then convert unprintable
      * character to their hex escape representations, \uxxxx or
      * \Uxxxxxxxx.  Unprintable characters are those other than
      * U+000A, U+0020..U+007E.
diff --git a/libicu/cts_headers/csrecog.h b/libicu/cts_headers/csrecog.h
index 713fd4e..944a500 100644
--- a/libicu/cts_headers/csrecog.h
+++ b/libicu/cts_headers/csrecog.h
@@ -43,8 +43,8 @@
      * Try the given input text against this Charset, and fill in the results object
      * with the quality of the match plus other information related to the match.
      *
-     * Return TRUE if the the input bytes are a potential match, and
-     * FALSE if the input data is not compatible with, or illegal in this charset.
+     * Return true if the the input bytes are a potential match, and
+     * false if the input data is not compatible with, or illegal in this charset.
      */
     virtual UBool match(InputText *textIn, CharsetMatch *results) const = 0;
 
diff --git a/libicu/cts_headers/dayperiodrules.h b/libicu/cts_headers/dayperiodrules.h
index 610c617..4bfca76 100644
--- a/libicu/cts_headers/dayperiodrules.h
+++ b/libicu/cts_headers/dayperiodrules.h
@@ -66,7 +66,7 @@
     // Sets period type for all hours in [startHour, limitHour).
     void add(int32_t startHour, int32_t limitHour, DayPeriod period);
 
-    // Returns TRUE if for all i, DayPeriodForHour[i] has a type other than UNKNOWN.
+    // Returns true if for all i, DayPeriodForHour[i] has a type other than UNKNOWN.
     // Values of HasNoon and HasMidnight do not affect the return value.
     UBool allHoursAreSet();
 
diff --git a/libicu/cts_headers/decContext.h b/libicu/cts_headers/decContext.h
index e145777..59ab65e 100644
--- a/libicu/cts_headers/decContext.h
+++ b/libicu/cts_headers/decContext.h
@@ -250,21 +250,21 @@
   #define DEC_INIT_DECQUAD    DEC_INIT_DECIMAL128
 
   /* decContext routines                                              */
-  U_INTERNAL decContext  * U_EXPORT2 uprv_decContextClearStatus(decContext *, uint32_t);
-  U_INTERNAL decContext  * U_EXPORT2 uprv_decContextDefault(decContext *, int32_t);
-  U_INTERNAL enum rounding U_EXPORT2 uprv_decContextGetRounding(decContext *);
-  U_INTERNAL uint32_t      U_EXPORT2 uprv_decContextGetStatus(decContext *);
-  U_INTERNAL decContext  * U_EXPORT2 uprv_decContextRestoreStatus(decContext *, uint32_t, uint32_t);
-  U_INTERNAL uint32_t      U_EXPORT2 uprv_decContextSaveStatus(decContext *, uint32_t);
-  U_INTERNAL decContext  * U_EXPORT2 uprv_decContextSetRounding(decContext *, enum rounding);
-  U_INTERNAL decContext  * U_EXPORT2 uprv_decContextSetStatus(decContext *, uint32_t);
-  U_INTERNAL decContext  * U_EXPORT2 uprv_decContextSetStatusFromString(decContext *, const char *);
-  U_INTERNAL decContext  * U_EXPORT2 uprv_decContextSetStatusFromStringQuiet(decContext *, const char *);
-  U_INTERNAL decContext  * U_EXPORT2 uprv_decContextSetStatusQuiet(decContext *, uint32_t);
-  U_INTERNAL const char  * U_EXPORT2 uprv_decContextStatusToString(const decContext *);
-  U_INTERNAL int32_t       U_EXPORT2 uprv_decContextTestEndian(uint8_t);
-  U_INTERNAL uint32_t      U_EXPORT2 uprv_decContextTestSavedStatus(uint32_t, uint32_t);
-  U_INTERNAL uint32_t      U_EXPORT2 uprv_decContextTestStatus(decContext *, uint32_t);
-  U_INTERNAL decContext  * U_EXPORT2 uprv_decContextZeroStatus(decContext *);
+  U_CAPI decContext  * U_EXPORT2 uprv_decContextClearStatus(decContext *, uint32_t);
+  U_CAPI decContext  * U_EXPORT2 uprv_decContextDefault(decContext *, int32_t);
+  U_CAPI enum rounding U_EXPORT2 uprv_decContextGetRounding(decContext *);
+  U_CAPI uint32_t      U_EXPORT2 uprv_decContextGetStatus(decContext *);
+  U_CAPI decContext  * U_EXPORT2 uprv_decContextRestoreStatus(decContext *, uint32_t, uint32_t);
+  U_CAPI uint32_t      U_EXPORT2 uprv_decContextSaveStatus(decContext *, uint32_t);
+  U_CAPI decContext  * U_EXPORT2 uprv_decContextSetRounding(decContext *, enum rounding);
+  U_CAPI decContext  * U_EXPORT2 uprv_decContextSetStatus(decContext *, uint32_t);
+  U_CAPI decContext  * U_EXPORT2 uprv_decContextSetStatusFromString(decContext *, const char *);
+  U_CAPI decContext  * U_EXPORT2 uprv_decContextSetStatusFromStringQuiet(decContext *, const char *);
+  U_CAPI decContext  * U_EXPORT2 uprv_decContextSetStatusQuiet(decContext *, uint32_t);
+  U_CAPI const char  * U_EXPORT2 uprv_decContextStatusToString(const decContext *);
+  U_CAPI int32_t       U_EXPORT2 uprv_decContextTestEndian(uint8_t);
+  U_CAPI uint32_t      U_EXPORT2 uprv_decContextTestSavedStatus(uint32_t, uint32_t);
+  U_CAPI uint32_t      U_EXPORT2 uprv_decContextTestStatus(decContext *, uint32_t);
+  U_CAPI decContext  * U_EXPORT2 uprv_decContextZeroStatus(decContext *);
 
 #endif
diff --git a/libicu/cts_headers/decNumber.h b/libicu/cts_headers/decNumber.h
index 7182e78..ddcc50e 100644
--- a/libicu/cts_headers/decNumber.h
+++ b/libicu/cts_headers/decNumber.h
@@ -112,74 +112,74 @@
   /* decNumber public functions and macros                            */
   /* ---------------------------------------------------------------- */
   /* Conversions                                                      */
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberFromInt32(decNumber *, int32_t);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberFromUInt32(decNumber *, uint32_t);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberFromString(decNumber *, const char *, decContext *);
-  U_INTERNAL char      * U_EXPORT2 uprv_decNumberToString(const decNumber *, char *);
-  U_INTERNAL char      * U_EXPORT2 uprv_decNumberToEngString(const decNumber *, char *);
-  U_INTERNAL uint32_t    U_EXPORT2 uprv_decNumberToUInt32(const decNumber *, decContext *);
-  U_INTERNAL int32_t     U_EXPORT2 uprv_decNumberToInt32(const decNumber *, decContext *);
-  U_INTERNAL uint8_t   * U_EXPORT2 uprv_decNumberGetBCD(const decNumber *, uint8_t *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberSetBCD(decNumber *, const uint8_t *, uint32_t);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromInt32(decNumber *, int32_t);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromUInt32(decNumber *, uint32_t);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromString(decNumber *, const char *, decContext *);
+  U_CAPI char      * U_EXPORT2 uprv_decNumberToString(const decNumber *, char *);
+  U_CAPI char      * U_EXPORT2 uprv_decNumberToEngString(const decNumber *, char *);
+  U_CAPI uint32_t    U_EXPORT2 uprv_decNumberToUInt32(const decNumber *, decContext *);
+  U_CAPI int32_t     U_EXPORT2 uprv_decNumberToInt32(const decNumber *, decContext *);
+  U_CAPI uint8_t   * U_EXPORT2 uprv_decNumberGetBCD(const decNumber *, uint8_t *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberSetBCD(decNumber *, const uint8_t *, uint32_t);
 
   /* Operators and elementary functions                               */
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberAbs(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberAdd(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberAnd(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberCompare(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberCompareSignal(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberCompareTotal(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberCompareTotalMag(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberDivide(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberDivideInteger(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberExp(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberFMA(decNumber *, const decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberInvert(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberLn(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberLogB(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberLog10(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberMax(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberMaxMag(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberMin(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberMinMag(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberMinus(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberMultiply(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberNormalize(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberOr(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberPlus(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberPower(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberQuantize(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberReduce(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberRemainder(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberRemainderNear(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberRescale(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberRotate(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberSameQuantum(decNumber *, const decNumber *, const decNumber *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberScaleB(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberShift(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberSquareRoot(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberSubtract(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberToIntegralExact(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberToIntegralValue(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber * U_EXPORT2 uprv_decNumberXor(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberAbs(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberAdd(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberAnd(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompare(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompareSignal(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompareTotal(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompareTotalMag(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberDivide(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberDivideInteger(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberExp(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberFMA(decNumber *, const decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberInvert(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberLn(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberLogB(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberLog10(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberMax(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberMaxMag(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberMin(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberMinMag(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberMinus(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberMultiply(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberNormalize(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberOr(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberPlus(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberPower(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberQuantize(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberReduce(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberRemainder(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberRemainderNear(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberRescale(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberRotate(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberSameQuantum(decNumber *, const decNumber *, const decNumber *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberScaleB(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberShift(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberSquareRoot(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberSubtract(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberToIntegralExact(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberToIntegralValue(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber * U_EXPORT2 uprv_decNumberXor(decNumber *, const decNumber *, const decNumber *, decContext *);
 
   /* Utilities                                                        */
   enum decClass uprv_decNumberClass(const decNumber *, decContext *);
-  U_INTERNAL const char * U_EXPORT2 uprv_decNumberClassToString(enum decClass);
-  U_INTERNAL decNumber  * U_EXPORT2 uprv_decNumberCopy(decNumber *, const decNumber *);
-  U_INTERNAL decNumber  * U_EXPORT2 uprv_decNumberCopyAbs(decNumber *, const decNumber *);
-  U_INTERNAL decNumber  * U_EXPORT2 uprv_decNumberCopyNegate(decNumber *, const decNumber *);
-  U_INTERNAL decNumber  * U_EXPORT2 uprv_decNumberCopySign(decNumber *, const decNumber *, const decNumber *);
-  U_INTERNAL decNumber  * U_EXPORT2 uprv_decNumberNextMinus(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber  * U_EXPORT2 uprv_decNumberNextPlus(decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber  * U_EXPORT2 uprv_decNumberNextToward(decNumber *, const decNumber *, const decNumber *, decContext *);
-  U_INTERNAL decNumber  * U_EXPORT2 uprv_decNumberTrim(decNumber *);
-  U_INTERNAL const char * U_EXPORT2 uprv_decNumberVersion(void);
-  U_INTERNAL decNumber  * U_EXPORT2 uprv_decNumberZero(decNumber *);
+  U_CAPI const char * U_EXPORT2 uprv_decNumberClassToString(enum decClass);
+  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberCopy(decNumber *, const decNumber *);
+  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberCopyAbs(decNumber *, const decNumber *);
+  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberCopyNegate(decNumber *, const decNumber *);
+  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberCopySign(decNumber *, const decNumber *, const decNumber *);
+  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberNextMinus(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberNextPlus(decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberNextToward(decNumber *, const decNumber *, const decNumber *, decContext *);
+  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberTrim(decNumber *);
+  U_CAPI const char * U_EXPORT2 uprv_decNumberVersion(void);
+  U_CAPI decNumber  * U_EXPORT2 uprv_decNumberZero(decNumber *);
 
   /* Functions for testing decNumbers (normality depends on context)  */
-  U_INTERNAL int32_t U_EXPORT2 uprv_decNumberIsNormal(const decNumber *, decContext *);
-  U_INTERNAL int32_t U_EXPORT2 uprv_decNumberIsSubnormal(const decNumber *, decContext *);
+  U_CAPI int32_t U_EXPORT2 uprv_decNumberIsNormal(const decNumber *, decContext *);
+  U_CAPI int32_t U_EXPORT2 uprv_decNumberIsSubnormal(const decNumber *, decContext *);
 
   /* Macros for testing decNumber *dn                                 */
   #define decNumberIsCanonical(dn) (1)  /* All decNumbers are saintly */
diff --git a/libicu/cts_headers/dictbe.h b/libicu/cts_headers/dictbe.h
index 731bfdf..4ea676f 100644
--- a/libicu/cts_headers/dictbe.h
+++ b/libicu/cts_headers/dictbe.h
@@ -59,7 +59,7 @@
    * a particular kind of break.</p>
    *
    * @param c A character which begins a run that the engine might handle
-   * @return TRUE if this engine handles the particular character and break
+   * @return true if this engine handles the particular character and break
    * type.
    */
   virtual UBool handles(UChar32 c) const;
diff --git a/libicu/cts_headers/dtitv_impl.h b/libicu/cts_headers/dtitv_impl.h
index c7addf3..6fc16bb 100644
--- a/libicu/cts_headers/dtitv_impl.h
+++ b/libicu/cts_headers/dtitv_impl.h
@@ -64,11 +64,13 @@
 #define LOW_Z             ((UChar)0x007A)
 
 #define CAP_A             ((UChar)0x0041)
+#define CAP_B             ((UChar)0x0042)
 #define CAP_C             ((UChar)0x0043)
 #define CAP_D             ((UChar)0x0044)
 #define CAP_E             ((UChar)0x0045)
 #define CAP_F             ((UChar)0x0046)
 #define CAP_G             ((UChar)0x0047)
+#define CAP_J             ((UChar)0x004A)
 #define CAP_H             ((UChar)0x0048)
 #define CAP_K             ((UChar)0x004B)
 #define CAP_L             ((UChar)0x004C)
diff --git a/libicu/cts_headers/dtptngen_impl.h b/libicu/cts_headers/dtptngen_impl.h
index ade9f57..9b9442d 100644
--- a/libicu/cts_headers/dtptngen_impl.h
+++ b/libicu/cts_headers/dtptngen_impl.h
@@ -195,7 +195,7 @@
     void getQuoteLiteral(UnicodeString& quote, int32_t *itemIndex);
     UBool isPatternSeparator(const UnicodeString& field) const;
     static UBool isQuoteLiteral(const UnicodeString& s);
-    static int32_t getCanonicalIndex(const UnicodeString& s) { return getCanonicalIndex(s, TRUE); }
+    static int32_t getCanonicalIndex(const UnicodeString& s) { return getCanonicalIndex(s, true); }
     static int32_t getCanonicalIndex(const UnicodeString& s, UBool strict);
 
 private:
diff --git a/libicu/cts_headers/formatted_string_builder.h b/libicu/cts_headers/formatted_string_builder.h
index 4567dc1..92bcf07 100644
--- a/libicu/cts_headers/formatted_string_builder.h
+++ b/libicu/cts_headers/formatted_string_builder.h
@@ -25,7 +25,7 @@
  *
  * <ol>
  * <li>Efficient prepend as well as append.
- * <li>Keeps tracks of Fields in an efficient manner.
+ * <li>Keeps track of Fields in an efficient manner.
  * </ol>
  *
  * See also FormattedValueStringBuilderImpl.
@@ -55,7 +55,6 @@
     // Convention: bottom 4 bits for field, top 4 bits for field category.
     // Field category 0 implies the number category so that the number field
     // literals can be directly passed as a Field type.
-    // See the helper functions in "StringBuilderFieldUtils" below.
     // Exported as U_I18N_API so it can be used by other exports on Windows.
     struct U_I18N_API Field {
         uint8_t bits;
diff --git a/libicu/cts_headers/formattedval_impl.h b/libicu/cts_headers/formattedval_impl.h
index 7bee374..c0dec83 100644
--- a/libicu/cts_headers/formattedval_impl.h
+++ b/libicu/cts_headers/formattedval_impl.h
@@ -69,6 +69,9 @@
 
 /**
  * Implementation of FormattedValue using FieldPositionHandler to accept fields.
+ *
+ * TODO(ICU-20897): This class is unused. If it is not needed when fixing ICU-20897,
+ * it should be deleted.
  */
 class FormattedValueFieldPositionIteratorImpl : public UMemory, public FormattedValue {
 public:
@@ -114,6 +117,24 @@
 };
 
 
+// Internal struct that must be exported for MSVC
+struct U_I18N_API SpanInfo {
+    int32_t spanValue;
+    int32_t length;
+};
+
+// Export an explicit template instantiation of the MaybeStackArray that
+//    is used as a data member of CEBuffer.
+//
+//    When building DLLs for Windows this is required even though
+//    no direct access to the MaybeStackArray leaks out of the i18n library.
+//
+// See digitlst.h, pluralaffix.h, datefmt.h, and others for similar examples.
+//
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API MaybeStackArray<SpanInfo, 8>;
+#endif
+
 /**
  * Implementation of FormattedValue based on FormattedStringBuilder.
  *
@@ -147,12 +168,23 @@
         return fString;
     }
 
+    /**
+     * Adds additional metadata used for span fields.
+     * 
+     * spanValue: the index of the list item, for example.
+     * length: the length of the span, used to split adjacent fields.
+     */
+    void appendSpanInfo(int32_t spanValue, int32_t length, UErrorCode& status);
+    void prependSpanInfo(int32_t spanValue, int32_t length, UErrorCode& status);
+
 private:
     FormattedStringBuilder fString;
     FormattedStringBuilder::Field fNumericField;
+    MaybeStackArray<SpanInfo, 8> spanIndices;
 
     bool nextPositionImpl(ConstrainedFieldPosition& cfpos, FormattedStringBuilder::Field numericField, UErrorCode& status) const;
     static bool isIntOrGroup(FormattedStringBuilder::Field field);
+    static bool isTrimmable(FormattedStringBuilder::Field field);
     int32_t trimBack(int32_t limit) const;
     int32_t trimFront(int32_t start) const;
 };
@@ -211,7 +243,7 @@
         return fData->appendTo(appendable, status); \
     } \
     UBool Name::nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const { \
-        UPRV_FORMATTED_VALUE_METHOD_GUARD(FALSE) \
+        UPRV_FORMATTED_VALUE_METHOD_GUARD(false) \
         return fData->nextPosition(cfpos, status); \
     }
 
@@ -230,7 +262,7 @@
         } \
         return static_cast<HelperType*>(impl)->exportForC(); \
     } \
-    U_DRAFT const UFormattedValue* U_EXPORT2 \
+    U_CAPI const UFormattedValue* U_EXPORT2 \
     Prefix ## _resultAsValue (const CType* uresult, UErrorCode* ec) { \
         const ImplType* result = HelperType::validate(uresult, *ec); \
         if (U_FAILURE(*ec)) { return nullptr; } \
diff --git a/libicu/cts_headers/fphdlimp.h b/libicu/cts_headers/fphdlimp.h
index b9fa9b2..4fb0c7b 100644
--- a/libicu/cts_headers/fphdlimp.h
+++ b/libicu/cts_headers/fphdlimp.h
@@ -41,8 +41,8 @@
 
 class FieldPositionOnlyHandler : public FieldPositionHandler {
   FieldPosition& pos;
-  UBool acceptFirstOnly = FALSE;
-  UBool seenFirst = FALSE;
+  UBool acceptFirstOnly = false;
+  UBool seenFirst = false;
 
  public:
   FieldPositionOnlyHandler(FieldPosition& pos);
diff --git a/libicu/cts_headers/gregoimp.h b/libicu/cts_headers/gregoimp.h
index 06eb323..aec33c4 100644
--- a/libicu/cts_headers/gregoimp.h
+++ b/libicu/cts_headers/gregoimp.h
@@ -148,9 +148,9 @@
 class Grego {
  public:
     /**
-     * Return TRUE if the given year is a leap year.
+     * Return true if the given year is a leap year.
      * @param year Gregorian year, with 0 == 1 BCE, -1 == 2 BCE, etc.
-     * @return TRUE if the year is a leap year
+     * @return true if the year is a leap year
      */
     static inline UBool isLeapYear(int32_t year);
 
diff --git a/libicu/cts_headers/hebrwcal.h b/libicu/cts_headers/hebrwcal.h
index 08136de..d27e6b8 100644
--- a/libicu/cts_headers/hebrwcal.h
+++ b/libicu/cts_headers/hebrwcal.h
@@ -386,7 +386,7 @@
   virtual UBool inDaylightTime(UErrorCode& status) const;
 
     /**
-     * Returns TRUE because the Hebrew Calendar does have a default century
+     * Returns true because the Hebrew Calendar does have a default century
      * @internal
      */
     virtual UBool haveDefaultCentury() const;
diff --git a/libicu/cts_headers/icuplugimp.h b/libicu/cts_headers/icuplugimp.h
index 3cad8f8..9df3092 100644
--- a/libicu/cts_headers/icuplugimp.h
+++ b/libicu/cts_headers/icuplugimp.h
@@ -36,7 +36,7 @@
  * @return the library pointer, or NULL
  * @internal internal use only
  */
-U_INTERNAL void * U_EXPORT2
+U_CAPI void * U_EXPORT2
 uplug_openLibrary(const char *libName, UErrorCode *status);
 
 /**
@@ -45,7 +45,7 @@
  * @param status error code
  * @internal internal use only
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 uplug_closeLibrary(void *lib, UErrorCode *status);
 
 /**
@@ -55,7 +55,7 @@
  * @return the library name, or NULL if not found.
  * @internal internal use only
  */
-U_INTERNAL  char * U_EXPORT2
+U_CAPI  char * U_EXPORT2
 uplug_findLibrary(void *lib, UErrorCode *status);
 
 /** @} */
@@ -69,21 +69,21 @@
  * @param status error result
  * @internal - Internal use only.
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 uplug_init(UErrorCode *status);
 
 /**
  * Get raw plug N
  * @internal - Internal use only
  */ 
-U_INTERNAL UPlugData* U_EXPORT2
+U_CAPI UPlugData* U_EXPORT2
 uplug_getPlugInternal(int32_t n);
 
 /**
  * Get the name of the plugin file. 
  * @internal - Internal use only.
  */
-U_INTERNAL const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uplug_getPluginFile(void);
 
 /** @} */
diff --git a/libicu/cts_headers/indiancal.h b/libicu/cts_headers/indiancal.h
index e259d9b..3981ea5 100644
--- a/libicu/cts_headers/indiancal.h
+++ b/libicu/cts_headers/indiancal.h
@@ -147,7 +147,7 @@
    * @param aLocale  The given locale.
    * @param success  Indicates the status of IndianCalendar object construction.
    *                 Returns U_ZERO_ERROR if constructed successfully.
-   * @param beCivil  Whether the calendar should be civil (default-TRUE) or religious (FALSE)
+   * @param beCivil  Whether the calendar should be civil (default-true) or religious (false)
    * @internal
    */
   IndianCalendar(const Locale& aLocale, UErrorCode &success);
@@ -303,7 +303,7 @@
 
 
   /**
-   * Returns TRUE because the Indian Calendar does have a default century
+   * Returns true because the Indian Calendar does have a default century
    * @internal
    */
   virtual UBool haveDefaultCentury() const;
diff --git a/libicu/cts_headers/islamcal.h b/libicu/cts_headers/islamcal.h
index fde5847..d324c6e 100644
--- a/libicu/cts_headers/islamcal.h
+++ b/libicu/cts_headers/islamcal.h
@@ -395,7 +395,7 @@
 
 
   /**
-   * Returns TRUE because the Islamic Calendar does have a default century
+   * Returns true because the Islamic Calendar does have a default century
    * @internal
    */
   virtual UBool haveDefaultCentury() const;
diff --git a/libicu/cts_headers/japancal.h b/libicu/cts_headers/japancal.h
index 03e6361..e5b95d7 100644
--- a/libicu/cts_headers/japancal.h
+++ b/libicu/cts_headers/japancal.h
@@ -167,7 +167,7 @@
     virtual const char * getType() const;
 
     /**
-     * @return FALSE - no default century in Japanese
+     * @return false - no default century in Japanese
      * @internal 
      */
     virtual UBool haveDefaultCentury() const;
diff --git a/libicu/cts_headers/localeprioritylist.h b/libicu/cts_headers/localeprioritylist.h
index 80ca38a..41e9d3e 100644
--- a/libicu/cts_headers/localeprioritylist.h
+++ b/libicu/cts_headers/localeprioritylist.h
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // localeprioritylist.h
 // created: 2019jul11 Markus W. Scherer
diff --git a/libicu/cts_headers/locdistance.h b/libicu/cts_headers/locdistance.h
index ad84151..51b777e 100644
--- a/libicu/cts_headers/locdistance.h
+++ b/libicu/cts_headers/locdistance.h
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // locdistance.h
 // created: 2019may08 Markus W. Scherer
@@ -39,6 +39,10 @@
         return shiftedDistance / (1 << DISTANCE_SHIFT);
     }
 
+    static int32_t getDistanceFloor(int32_t indexAndDistance) {
+        return (indexAndDistance & DISTANCE_MASK) >> DISTANCE_SHIFT;
+    }
+
     static int32_t getIndex(int32_t indexAndDistance) {
         // assert indexAndDistance >= 0;
         return indexAndDistance >> INDEX_SHIFT;
@@ -79,10 +83,6 @@
     // tic constexpr int32_t MAX_INDEX = 0x1fffff;  // avoids sign bit
     static constexpr int32_t INDEX_NEG_1 = 0xfffffc00;
 
-    static int32_t getDistanceFloor(int32_t indexAndDistance) {
-        return (indexAndDistance & DISTANCE_MASK) >> DISTANCE_SHIFT;
-    }
-
     LocaleDistance(const LocaleDistanceData &data, const XLikelySubtags &likely);
     LocaleDistance(const LocaleDistance &other) = delete;
     LocaleDistance &operator=(const LocaleDistance &other) = delete;
diff --git a/libicu/cts_headers/loclikelysubtags.h b/libicu/cts_headers/loclikelysubtags.h
index 90ddfff..14a01a5 100644
--- a/libicu/cts_headers/loclikelysubtags.h
+++ b/libicu/cts_headers/loclikelysubtags.h
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // loclikelysubtags.h
 // created: 2019may08 Markus W. Scherer
@@ -13,49 +13,13 @@
 #include "unicode/locid.h"
 #include "unicode/uobject.h"
 #include "unicode/ures.h"
+#include "charstrmap.h"
 #include "lsr.h"
-#include "uhash.h"
 
 U_NAMESPACE_BEGIN
 
 struct XLikelySubtagsData;
 
-/**
- * Map of const char * keys & values.
- * Stores pointers as is: Does not own/copy/adopt/release strings.
- */
-class CharStringMap final : public UMemory {
-public:
-    /** Constructs an unusable non-map. */
-    CharStringMap() : map(nullptr) {}
-    CharStringMap(int32_t size, UErrorCode &errorCode) {
-        map = uhash_openSize(uhash_hashChars, uhash_compareChars, uhash_compareChars,
-                             size, &errorCode);
-    }
-    CharStringMap(CharStringMap &&other) U_NOEXCEPT : map(other.map) {
-        other.map = nullptr;
-    }
-    CharStringMap(const CharStringMap &other) = delete;
-    ~CharStringMap() {
-        uhash_close(map);
-    }
-
-    CharStringMap &operator=(CharStringMap &&other) U_NOEXCEPT {
-        map = other.map;
-        other.map = nullptr;
-        return *this;
-    }
-    CharStringMap &operator=(const CharStringMap &other) = delete;
-
-    const char *get(const char *key) const { return static_cast<const char *>(uhash_get(map, key)); }
-    void put(const char *key, const char *value, UErrorCode &errorCode) {
-        uhash_put(map, const_cast<char *>(key), const_cast<char *>(value), &errorCode);
-    }
-
-private:
-    UHashtable *map;
-};
-
 struct LocaleDistanceData {
     LocaleDistanceData() = default;
     LocaleDistanceData(LocaleDistanceData &&data);
diff --git a/libicu/cts_headers/lsr.h b/libicu/cts_headers/lsr.h
index d535e5b..a33f855 100644
--- a/libicu/cts_headers/lsr.h
+++ b/libicu/cts_headers/lsr.h
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // lsr.h
 // created: 2019may08 Markus W. Scherer
diff --git a/libicu/cts_headers/measunit_impl.h b/libicu/cts_headers/measunit_impl.h
index c69d243..3cc2cd0 100644
--- a/libicu/cts_headers/measunit_impl.h
+++ b/libicu/cts_headers/measunit_impl.h
@@ -22,7 +22,7 @@
 /**
  * A struct representing a single unit (optional SI prefix and dimensionality).
  */
-struct SingleUnitImpl : public UMemory {
+struct U_I18N_API SingleUnitImpl : public UMemory {
     /**
      * Gets a single unit from the MeasureUnit. If there are multiple single units, sets an error
      * code and returns the base dimensionless unit. Parses if necessary.
@@ -33,6 +33,16 @@
     MeasureUnit build(UErrorCode& status) const;
 
     /**
+     * Returns the "simple unit ID", without SI or dimensionality prefix: this
+     * instance may represent a square-kilometer, but only "meter" will be
+     * returned.
+     *
+     * The returned pointer points at memory that exists for the duration of the
+     * program's running.
+     */
+    const char *getSimpleUnitID() const;
+
+    /**
      * Compare this SingleUnitImpl to another SingleUnitImpl for the sake of
      * sorting and coalescing.
      *
@@ -110,12 +120,27 @@
     int32_t dimensionality = 1;
 };
 
+// Export explicit template instantiations of MaybeStackArray, MemoryPool and
+// MaybeStackVector. This is required when building DLLs for Windows. (See
+// datefmt.h, collationiterator.h, erarules.h and others for similar examples.)
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API MaybeStackArray<SingleUnitImpl*, 8>;
+template class U_I18N_API MemoryPool<SingleUnitImpl, 8>;
+template class U_I18N_API MaybeStackVector<SingleUnitImpl, 8>;
+#endif
 
 /**
  * Internal representation of measurement units. Capable of representing all complexities of units,
  * including mixed and compound units.
  */
-struct MeasureUnitImpl : public UMemory {
+struct U_I18N_API MeasureUnitImpl : public UMemory {
+    MeasureUnitImpl() = default;
+    MeasureUnitImpl(MeasureUnitImpl &&other) = default;
+    MeasureUnitImpl(const MeasureUnitImpl &other, UErrorCode &status);
+    MeasureUnitImpl(const SingleUnitImpl &singleUnit, UErrorCode &status);
+
+    MeasureUnitImpl &operator=(MeasureUnitImpl &&other) noexcept = default;
+
     /** Extract the MeasureUnitImpl from a MeasureUnit. */
     static inline const MeasureUnitImpl* get(const MeasureUnit& measureUnit) {
         return measureUnit.fImpl;
@@ -169,13 +194,17 @@
     /**
      * Create a copy of this MeasureUnitImpl. Don't use copy constructor to make this explicit.
      */
-    inline MeasureUnitImpl copy(UErrorCode& status) const {
-        MeasureUnitImpl result;
-        result.complexity = complexity;
-        result.units.appendAll(units, status);
-        result.identifier.append(identifier, status);
-        return result;
-    }
+    MeasureUnitImpl copy(UErrorCode& status) const;
+
+    /**
+     * Extracts the list of all the individual units inside the `MeasureUnitImpl`.
+     *      For example:    
+     *          -   if the `MeasureUnitImpl` is `foot-per-hour`
+     *                  it will return a list of 1 {`foot-per-hour`} 
+     *          -   if the `MeasureUnitImpl` is `foot-and-inch` 
+     *                  it will return a list of 2 { `foot`, `inch`}
+     */
+    MaybeStackVector<MeasureUnitImpl> extractIndividualUnits(UErrorCode &status) const;
 
     /** Mutates this MeasureUnitImpl to take the reciprocal. */
     void takeReciprocal(UErrorCode& status);
@@ -206,7 +235,6 @@
     CharString identifier;
 };
 
-
 U_NAMESPACE_END
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/libicu/cts_headers/messageimpl.h b/libicu/cts_headers/messageimpl.h
index dc7a6ed..a564790 100644
--- a/libicu/cts_headers/messageimpl.h
+++ b/libicu/cts_headers/messageimpl.h
@@ -33,7 +33,7 @@
 class U_COMMON_API MessageImpl {
 public:
     /**
-     * @return TRUE if getApostropheMode()==UMSGPAT_APOS_DOUBLE_REQUIRED
+     * @return true if getApostropheMode()==UMSGPAT_APOS_DOUBLE_REQUIRED
      */
     static UBool jdkAposMode(const MessagePattern &msgPattern) {
         return msgPattern.getApostropheMode()==UMSGPAT_APOS_DOUBLE_REQUIRED;
diff --git a/libicu/cts_headers/nfrs.h b/libicu/cts_headers/nfrs.h
index db03c90..3232ab2 100644
--- a/libicu/cts_headers/nfrs.h
+++ b/libicu/cts_headers/nfrs.h
@@ -36,7 +36,7 @@
     void parseRules(UnicodeString& rules, UErrorCode& status);
     void setNonNumericalRule(NFRule *rule);
     void setBestFractionRule(int32_t originalIndex, NFRule *newRule, UBool rememberRule);
-    void makeIntoFractionRuleSet() { fIsFractionRuleSet = TRUE; }
+    void makeIntoFractionRuleSet() { fIsFractionRuleSet = true; }
 
     ~NFRuleSet();
 
@@ -93,11 +93,11 @@
 uint64_t util64_pow(uint32_t radix, uint16_t exponent);
 
 // convert n to digit string in buffer, return length of string
-uint32_t util64_tou(int64_t n, UChar* buffer, uint32_t buflen, uint32_t radix = 10, UBool raw = FALSE);
+uint32_t util64_tou(int64_t n, UChar* buffer, uint32_t buflen, uint32_t radix = 10, UBool raw = false);
 
 #ifdef RBNF_DEBUG
 int64_t util64_utoi(const UChar* str, uint32_t radix = 10);
-uint32_t util64_toa(int64_t n, char* buffer, uint32_t buflen, uint32_t radix = 10, UBool raw = FALSE);
+uint32_t util64_toa(int64_t n, char* buffer, uint32_t buflen, uint32_t radix = 10, UBool raw = false);
 int64_t util64_atoi(const char* str, uint32_t radix);
 #endif
 
diff --git a/libicu/cts_headers/nfrule.h b/libicu/cts_headers/nfrule.h
index ed33eaa..989fbaa 100644
--- a/libicu/cts_headers/nfrule.h
+++ b/libicu/cts_headers/nfrule.h
@@ -38,7 +38,7 @@
         kNegativeNumberRule = -1,
         kImproperFractionRule = -2,
         kProperFractionRule = -3,
-        kMasterRule = -4,
+        kDefaultRule = -4,
         kInfinityRule = -5,
         kNaNRule = -6,
         kOtherRule = -7
diff --git a/libicu/cts_headers/norm2allmodes.h b/libicu/cts_headers/norm2allmodes.h
index 682ece2..e8bd52c 100644
--- a/libicu/cts_headers/norm2allmodes.h
+++ b/libicu/cts_headers/norm2allmodes.h
@@ -65,13 +65,13 @@
     normalizeSecondAndAppend(UnicodeString &first,
                              const UnicodeString &second,
                              UErrorCode &errorCode) const {
-        return normalizeSecondAndAppend(first, second, TRUE, errorCode);
+        return normalizeSecondAndAppend(first, second, true, errorCode);
     }
     virtual UnicodeString &
     append(UnicodeString &first,
            const UnicodeString &second,
            UErrorCode &errorCode) const {
-        return normalizeSecondAndAppend(first, second, FALSE, errorCode);
+        return normalizeSecondAndAppend(first, second, false, errorCode);
     }
     UnicodeString &
     normalizeSecondAndAppend(UnicodeString &first,
@@ -112,14 +112,14 @@
         int32_t length;
         const UChar *d=impl.getDecomposition(c, buffer, length);
         if(d==NULL) {
-            return FALSE;
+            return false;
         }
         if(d==buffer) {
             decomposition.setTo(buffer, length);  // copy the string (Jamos from Hangul syllable c)
         } else {
-            decomposition.setTo(FALSE, d, length);  // read-only alias
+            decomposition.setTo(false, d, length);  // read-only alias
         }
-        return TRUE;
+        return true;
     }
     virtual UBool
     getRawDecomposition(UChar32 c, UnicodeString &decomposition) const {
@@ -127,14 +127,14 @@
         int32_t length;
         const UChar *d=impl.getRawDecomposition(c, buffer, length);
         if(d==NULL) {
-            return FALSE;
+            return false;
         }
         if(d==buffer) {
             decomposition.setTo(buffer, length);  // copy the string (algorithmic decomposition)
         } else {
-            decomposition.setTo(FALSE, d, length);  // read-only alias
+            decomposition.setTo(false, d, length);  // read-only alias
         }
-        return TRUE;
+        return true;
     }
     virtual UChar32
     composePair(UChar32 a, UChar32 b) const {
@@ -150,12 +150,12 @@
     virtual UBool
     isNormalized(const UnicodeString &s, UErrorCode &errorCode) const {
         if(U_FAILURE(errorCode)) {
-            return FALSE;
+            return false;
         }
         const UChar *sArray=s.getBuffer();
         if(sArray==NULL) {
             errorCode=U_ILLEGAL_ARGUMENT_ERROR;
-            return FALSE;
+            return false;
         }
         const UChar *sLimit=sArray+s.length();
         return sLimit==spanQuickCheckYes(sArray, sLimit, errorCode);
@@ -227,7 +227,7 @@
     virtual void
     normalize(const UChar *src, const UChar *limit,
               ReorderingBuffer &buffer, UErrorCode &errorCode) const U_OVERRIDE {
-        impl.compose(src, limit, onlyContiguous, TRUE, buffer, errorCode);
+        impl.compose(src, limit, onlyContiguous, true, buffer, errorCode);
     }
     using Normalizer2WithImpl::normalize;  // Avoid warning about hiding base class function.
 
@@ -256,24 +256,24 @@
     virtual UBool
     isNormalized(const UnicodeString &s, UErrorCode &errorCode) const U_OVERRIDE {
         if(U_FAILURE(errorCode)) {
-            return FALSE;
+            return false;
         }
         const UChar *sArray=s.getBuffer();
         if(sArray==NULL) {
             errorCode=U_ILLEGAL_ARGUMENT_ERROR;
-            return FALSE;
+            return false;
         }
         UnicodeString temp;
         ReorderingBuffer buffer(impl, temp);
         if(!buffer.init(5, errorCode)) {  // small destCapacity for substring normalization
-            return FALSE;
+            return false;
         }
-        return impl.compose(sArray, sArray+s.length(), onlyContiguous, FALSE, buffer, errorCode);
+        return impl.compose(sArray, sArray+s.length(), onlyContiguous, false, buffer, errorCode);
     }
     virtual UBool
     isNormalizedUTF8(StringPiece sp, UErrorCode &errorCode) const U_OVERRIDE {
         if(U_FAILURE(errorCode)) {
-            return FALSE;
+            return false;
         }
         const uint8_t *s = reinterpret_cast<const uint8_t *>(sp.data());
         return impl.composeUTF8(0, onlyContiguous, s, s + sp.length(), nullptr, nullptr, errorCode);
@@ -343,7 +343,7 @@
 
 struct Norm2AllModes : public UMemory {
     Norm2AllModes(Normalizer2Impl *i)
-            : impl(i), comp(*i, FALSE), decomp(*i), fcd(*i), fcc(*i, TRUE) {}
+            : impl(i), comp(*i, false), decomp(*i), fcd(*i), fcc(*i, true) {}
     ~Norm2AllModes();
 
     static Norm2AllModes *createInstance(Normalizer2Impl *impl, UErrorCode &errorCode);
diff --git a/libicu/cts_headers/normalizer2impl.h b/libicu/cts_headers/normalizer2impl.h
index cf3015e..4218a30 100644
--- a/libicu/cts_headers/normalizer2impl.h
+++ b/libicu/cts_headers/normalizer2impl.h
@@ -171,7 +171,7 @@
                  UErrorCode &errorCode);
     UBool appendBMP(UChar c, uint8_t cc, UErrorCode &errorCode) {
         if(remainingCapacity==0 && !resize(1, errorCode)) {
-            return FALSE;
+            return false;
         }
         if(lastCC<=cc || cc==0) {
             *limit++=c;
@@ -183,7 +183,7 @@
             insert(c, cc);
         }
         --remainingCapacity;
-        return TRUE;
+        return true;
     }
     UBool appendZeroCC(UChar32 c, UErrorCode &errorCode);
     UBool appendZeroCC(const UChar *s, const UChar *sLimit, UErrorCode &errorCode);
@@ -359,7 +359,7 @@
         return getFCD16FromNormData(c);
     }
 
-    /** Returns TRUE if the single-or-lead code unit c might have non-zero FCD data. */
+    /** Returns true if the single-or-lead code unit c might have non-zero FCD data. */
     UBool singleLeadMightHaveNonZeroFCD16(UChar32 lead) const {
         // 0<=lead<=0xffff
         uint8_t bits=smallFCD[lead>>8];
@@ -397,8 +397,8 @@
         MIN_YES_YES_WITH_CC=0xfe02,
         JAMO_VT=0xfe00,
         MIN_NORMAL_MAYBE_YES=0xfc00,
-        JAMO_L=2,  // offset=1 hasCompBoundaryAfter=FALSE
-        INERT=1,  // offset=0 hasCompBoundaryAfter=TRUE
+        JAMO_L=2,  // offset=1 hasCompBoundaryAfter=false
+        INERT=1,  // offset=0 hasCompBoundaryAfter=true
 
         // norm16 bit 0 is comp-boundary-after.
         HAS_COMP_BOUNDARY_AFTER=1,
diff --git a/libicu/cts_headers/number_asformat.h b/libicu/cts_headers/number_asformat.h
index 7b0a1de..3a2fe31 100644
--- a/libicu/cts_headers/number_asformat.h
+++ b/libicu/cts_headers/number_asformat.h
@@ -25,7 +25,6 @@
  * A wrapper around LocalizedNumberFormatter implementing the Format interface, enabling improved
  * compatibility with other APIs.
  *
- * @draft ICU 62
  * @see NumberFormatter
  */
 class U_I18N_API LocalizedNumberFormatterAsFormat : public Format {
diff --git a/libicu/cts_headers/number_currencysymbols.h b/libicu/cts_headers/number_currencysymbols.h
index 9996bf9..7e38fdf 100644
--- a/libicu/cts_headers/number_currencysymbols.h
+++ b/libicu/cts_headers/number_currencysymbols.h
@@ -31,6 +31,10 @@
 
     UnicodeString getNarrowCurrencySymbol(UErrorCode& status) const;
 
+    UnicodeString getFormalCurrencySymbol(UErrorCode& status) const;
+
+    UnicodeString getVariantCurrencySymbol(UErrorCode& status) const;
+
     UnicodeString getCurrencySymbol(UErrorCode& status) const;
 
     UnicodeString getIntlCurrencySymbol(UErrorCode& status) const;
diff --git a/libicu/cts_headers/number_decimalquantity.h b/libicu/cts_headers/number_decimalquantity.h
index d9b35c0..5ab680e 100644
--- a/libicu/cts_headers/number_decimalquantity.h
+++ b/libicu/cts_headers/number_decimalquantity.h
@@ -20,7 +20,7 @@
 class DecNum;
 
 /**
- * An class for representing a number to be processed by the decimal formatting pipeline. Includes
+ * A class for representing a number to be processed by the decimal formatting pipeline. Includes
  * methods for rounding, plural rules, and decimal digit extraction.
  *
  * <p>By design, this is NOT IMMUTABLE and NOT THREAD SAFE. It is intended to be an intermediate
@@ -209,7 +209,7 @@
     double toDouble() const;
 
     /** Computes a DecNum representation of this DecimalQuantity, saving it to the output parameter. */
-    void toDecNum(DecNum& output, UErrorCode& status) const;
+    DecNum& toDecNum(DecNum& output, UErrorCode& status) const;
 
     DecimalQuantity &setToInt(int32_t n);
 
@@ -217,7 +217,13 @@
 
     DecimalQuantity &setToDouble(double n);
 
-    /** decNumber is similar to BigDecimal in Java. */
+    /**
+     * Produces a DecimalQuantity that was parsed from a string by the decNumber
+     * C Library.
+     *
+     * decNumber is similar to BigDecimal in Java, and supports parsing strings
+     * such as "123.456621E+40".
+     */
     DecimalQuantity &setToDecNumber(StringPiece n, UErrorCode& status);
 
     /** Internal method if the caller already has a DecNum. */
diff --git a/libicu/cts_headers/number_decnum.h b/libicu/cts_headers/number_decnum.h
index 0c7399d..3bb8d10 100644
--- a/libicu/cts_headers/number_decnum.h
+++ b/libicu/cts_headers/number_decnum.h
@@ -9,6 +9,7 @@
 
 #include "decNumber.h"
 #include "charstr.h"
+#include "bytesinkutil.h"
 
 U_NAMESPACE_BEGIN
 
@@ -57,6 +58,13 @@
 
     void toString(ByteSink& output, UErrorCode& status) const;
 
+    inline CharString toCharString(UErrorCode& status) const {
+      CharString cstr;
+      CharStringByteSink sink(&cstr);
+      toString(sink, status);
+      return cstr;
+    }
+
     inline const decNumber* getRawDecNumber() const {
         return fData.getAlias();
     }
diff --git a/libicu/cts_headers/number_formatimpl.h b/libicu/cts_headers/number_formatimpl.h
index 084bc4a..5cd549e 100644
--- a/libicu/cts_headers/number_formatimpl.h
+++ b/libicu/cts_headers/number_formatimpl.h
@@ -10,11 +10,13 @@
 #include "number_types.h"
 #include "formatted_string_builder.h"
 #include "number_patternstring.h"
+#include "number_usageprefs.h"
 #include "number_utils.h"
 #include "number_patternmodifier.h"
 #include "number_longnames.h"
 #include "number_compact.h"
 #include "number_microprops.h"
+#include "number_utypes.h"
 
 U_NAMESPACE_BEGIN namespace number {
 namespace impl {
@@ -34,9 +36,8 @@
     /**
      * Builds and evaluates an "unsafe" MicroPropsGenerator, which is cheaper but can be used only once.
      */
-    static int32_t
-    formatStatic(const MacroProps &macros, DecimalQuantity &inValue, FormattedStringBuilder &outString,
-                 UErrorCode &status);
+    static int32_t formatStatic(const MacroProps &macros, UFormattedNumberData *results,
+                                UErrorCode &status);
 
     /**
      * Prints only the prefix and suffix; used for DecimalFormat getters.
@@ -51,7 +52,7 @@
     /**
      * Evaluates the "safe" MicroPropsGenerator created by "fromMacros".
      */
-    int32_t format(DecimalQuantity& inValue, FormattedStringBuilder& outString, UErrorCode& status) const;
+    int32_t format(UFormattedNumberData *results, UErrorCode &status) const;
 
     /**
      * Like format(), but saves the result into an output MicroProps without additional processing.
@@ -82,7 +83,9 @@
                                 int32_t end, UErrorCode& status);
 
   private:
-    // Head of the MicroPropsGenerator linked list:
+    // Head of the MicroPropsGenerator linked list. Subclasses' processQuantity
+    // methods process this list in a parent-first order, such that the last
+    // item added, which this points to, typically has its logic executed last.
     const MicroPropsGenerator *fMicroPropsGenerator = nullptr;
 
     // Tail of the list:
@@ -90,13 +93,20 @@
 
     // Other fields possibly used by the number formatting pipeline:
     // TODO: Convert more of these LocalPointers to value objects to reduce the number of news?
+    LocalPointer<const UsagePrefsHandler> fUsagePrefsHandler;
+    LocalPointer<const UnitConversionHandler> fUnitConversionHandler;
     LocalPointer<const DecimalFormatSymbols> fSymbols;
     LocalPointer<const PluralRules> fRules;
     LocalPointer<const ParsedPatternInfo> fPatternInfo;
     LocalPointer<const ScientificHandler> fScientificHandler;
     LocalPointer<MutablePatternModifier> fPatternModifier;
     LocalPointer<ImmutablePatternModifier> fImmutablePatternModifier;
-    LocalPointer<const LongNameHandler> fLongNameHandler;
+    LocalPointer<LongNameHandler> fLongNameHandler;
+    // TODO: use a common base class that enables fLongNameHandler,
+    // fLongNameMultiplexer, and fMixedUnitLongNameHandler to be merged into one
+    // member?
+    LocalPointer<MixedUnitLongNameHandler> fMixedUnitLongNameHandler;
+    LocalPointer<const LongNameMultiplexer> fLongNameMultiplexer;
     LocalPointer<const CompactHandler> fCompactHandler;
 
     // Value objects possibly used by the number formatting pipeline:
diff --git a/libicu/cts_headers/number_longnames.h b/libicu/cts_headers/number_longnames.h
index a19425a..67f2316 100644
--- a/libicu/cts_headers/number_longnames.h
+++ b/libicu/cts_headers/number_longnames.h
@@ -7,6 +7,8 @@
 #ifndef __NUMBER_LONGNAMES_H__
 #define __NUMBER_LONGNAMES_H__
 
+#include "cmemory.h"
+#include "unicode/listformatter.h"
 #include "unicode/uversion.h"
 #include "number_utils.h"
 #include "number_modifiers.h"
@@ -33,34 +35,206 @@
     forCurrencyLongNames(const Locale &loc, const CurrencyUnit &currency, const PluralRules *rules,
                          const MicroPropsGenerator *parent, UErrorCode &status);
 
-    static LongNameHandler*
-    forMeasureUnit(const Locale &loc, const MeasureUnit &unit, const MeasureUnit &perUnit,
-                   const UNumberUnitWidth &width, const PluralRules *rules,
-                   const MicroPropsGenerator *parent, UErrorCode &status);
+    /**
+     * Construct a localized LongNameHandler for the specified MeasureUnit.
+     *
+     * Compound units can be constructed via `unit` and `perUnit`. Both of these
+     * must then be built-in units.
+     *
+     * Mixed units are not supported, use MixedUnitLongNameHandler::forMeasureUnit.
+     *
+     * This function uses a fillIn intead of returning a pointer, because we
+     * want to fill in instances in a MemoryPool (which cannot adopt pointers it
+     * didn't create itself).
+     *
+     * @param loc The desired locale.
+     * @param unit The measure unit to construct a LongNameHandler for. If
+     *     `perUnit` is also defined, `unit` must not be a mixed unit.
+     * @param perUnit If `unit` is a mixed unit, `perUnit` must be "none".
+     * @param width Specifies the desired unit rendering.
+     * @param rules Does not take ownership.
+     * @param parent Does not take ownership.
+     * @param fillIn Required.
+     */
+    static void forMeasureUnit(const Locale &loc, const MeasureUnit &unit, const MeasureUnit &perUnit,
+                               const UNumberUnitWidth &width, const PluralRules *rules,
+                               const MicroPropsGenerator *parent, LongNameHandler *fillIn,
+                               UErrorCode &status);
 
+    /**
+     * Selects the plural-appropriate Modifier from the set of fModifiers based
+     * on the plural form.
+     */
     void
     processQuantity(DecimalQuantity &quantity, MicroProps &micros, UErrorCode &status) const U_OVERRIDE;
 
+    // TODO(units): investigate whether we might run into Mixed Unit trouble
+    // with this. This override for ModifierStore::getModifier does not support
+    // mixed units: investigate under which circumstances it gets called (check
+    // both ImmutablePatternModifier and in NumberRangeFormatterImpl).
     const Modifier* getModifier(Signum signum, StandardPlural::Form plural) const U_OVERRIDE;
 
   private:
+    // A set of pre-computed modifiers, one for each plural form.
     SimpleModifier fModifiers[StandardPlural::Form::COUNT];
+    // Not owned
     const PluralRules *rules;
+    // Not owned
     const MicroPropsGenerator *parent;
 
     LongNameHandler(const PluralRules *rules, const MicroPropsGenerator *parent)
-            : rules(rules), parent(parent) {}
+        : rules(rules), parent(parent) {
+    }
 
-    static LongNameHandler*
-    forCompoundUnit(const Locale &loc, const MeasureUnit &unit, const MeasureUnit &perUnit,
-                    const UNumberUnitWidth &width, const PluralRules *rules,
-                    const MicroPropsGenerator *parent, UErrorCode &status);
+    LongNameHandler() : rules(nullptr), parent(nullptr) {
+    }
 
+    // Enables MemoryPool<LongNameHandler>::emplaceBack(): requires access to
+    // the private constructors.
+    friend class MemoryPool<LongNameHandler>;
+
+    // Allow macrosToMicroGenerator to call the private default constructor.
+    friend class NumberFormatterImpl;
+
+    // Fills in LongNameHandler fields for formatting compound units identified
+    // via `unit` and `perUnit`. Both `unit` and `perUnit` need to be built-in
+    // units (for which data exists).
+    static void forCompoundUnit(const Locale &loc, const MeasureUnit &unit, const MeasureUnit &perUnit,
+                                const UNumberUnitWidth &width, const PluralRules *rules,
+                                const MicroPropsGenerator *parent, LongNameHandler *fillIn,
+                                UErrorCode &status);
+
+    // Sets fModifiers to use the patterns from `simpleFormats`.
     void simpleFormatsToModifiers(const UnicodeString *simpleFormats, Field field, UErrorCode &status);
+
+    // Sets fModifiers to a combination of `leadFormats` (one per plural form)
+    // and `trailFormat` appended to each.
+    //
+    // With a leadFormat of "{0}m" and a trailFormat of "{0}/s", it produces a
+    // pattern of "{0}m/s" by inserting the leadFormat pattern into trailFormat.
     void multiSimpleFormatsToModifiers(const UnicodeString *leadFormats, UnicodeString trailFormat,
                                        Field field, UErrorCode &status);
 };
 
+// Similar to LongNameHandler, but only for MIXED units.
+class MixedUnitLongNameHandler : public MicroPropsGenerator, public ModifierStore, public UMemory {
+  public:
+    /**
+     * Construct a localized MixedUnitLongNameHandler for the specified
+     * MeasureUnit. It must be a MIXED unit.
+     *
+     * This function uses a fillIn intead of returning a pointer, because we
+     * want to fill in instances in a MemoryPool (which cannot adopt pointers it
+     * didn't create itself).
+     *
+     * @param loc The desired locale.
+     * @param mixedUnit The mixed measure unit to construct a
+     *     MixedUnitLongNameHandler for.
+     * @param width Specifies the desired unit rendering.
+     * @param rules Does not take ownership.
+     * @param parent Does not take ownership.
+     * @param fillIn Required.
+     */
+    static void forMeasureUnit(const Locale &loc, const MeasureUnit &mixedUnit,
+                               const UNumberUnitWidth &width, const PluralRules *rules,
+                               const MicroPropsGenerator *parent, MixedUnitLongNameHandler *fillIn,
+                               UErrorCode &status);
+
+    /**
+     * Produces a plural-appropriate Modifier for a mixed unit: `quantity` is
+     * taken as the final smallest unit, while the larger unit values must be
+     * provided via `micros.mixedMeasures`.
+     */
+    void processQuantity(DecimalQuantity &quantity, MicroProps &micros,
+                         UErrorCode &status) const U_OVERRIDE;
+
+    // Required for ModifierStore. And ModifierStore is required by
+    // SimpleModifier constructor's last parameter. We assert his will never get
+    // called though.
+    const Modifier *getModifier(Signum signum, StandardPlural::Form plural) const U_OVERRIDE;
+
+  private:
+    // Not owned
+    const PluralRules *rules;
+    // Not owned
+    const MicroPropsGenerator *parent;
+
+    // Total number of units in the MeasureUnit this handler was configured for:
+    // for "foot-and-inch", this will be 2.
+    int32_t fMixedUnitCount = 1;
+    // Stores unit data for each of the individual units. For each unit, it
+    // stores ARRAY_LENGTH strings, as returned by getMeasureData. (Each unit
+    // with index `i` has ARRAY_LENGTH strings starting at index
+    // `i*ARRAY_LENGTH` in this array.)
+    LocalArray<UnicodeString> fMixedUnitData;
+    // A localized NumberFormatter used to format the integer-valued bigger
+    // units of Mixed Unit measurements.
+    LocalizedNumberFormatter fIntegerFormatter;
+    // A localised list formatter for joining mixed units together.
+    LocalPointer<ListFormatter> fListFormatter;
+
+    MixedUnitLongNameHandler(const PluralRules *rules, const MicroPropsGenerator *parent)
+        : rules(rules), parent(parent) {
+    }
+
+    MixedUnitLongNameHandler() : rules(nullptr), parent(nullptr) {
+    }
+
+    // Allow macrosToMicroGenerator to call the private default constructor.
+    friend class NumberFormatterImpl;
+
+    // Enables MemoryPool<LongNameHandler>::emplaceBack(): requires access to
+    // the private constructors.
+    friend class MemoryPool<MixedUnitLongNameHandler>;
+
+    // For a mixed unit, returns a Modifier that takes only one parameter: the
+    // smallest and final unit of the set. The bigger units' values and labels
+    // get baked into this Modifier, together with the unit label of the final
+    // unit.
+    const Modifier *getMixedUnitModifier(DecimalQuantity &quantity, MicroProps &micros,
+                                         UErrorCode &status) const;
+};
+
+/**
+ * A MicroPropsGenerator that multiplexes between different LongNameHandlers,
+ * depending on the outputUnit.
+ *
+ * See processQuantity() for the input requirements.
+ */
+class LongNameMultiplexer : public MicroPropsGenerator, public UMemory {
+  public:
+    // Produces a multiplexer for LongNameHandlers, one for each unit in
+    // `units`. An individual unit might be a mixed unit.
+    static LongNameMultiplexer *forMeasureUnits(const Locale &loc,
+                                                const MaybeStackVector<MeasureUnit> &units,
+                                                const UNumberUnitWidth &width, const PluralRules *rules,
+                                                const MicroPropsGenerator *parent, UErrorCode &status);
+
+    // The output unit must be provided via `micros.outputUnit`, it must match
+    // one of the units provided to the factory function.
+    void processQuantity(DecimalQuantity &quantity, MicroProps &micros,
+                         UErrorCode &status) const U_OVERRIDE;
+
+  private:
+    /**
+     * Because we only know which LongNameHandler we wish to call after calling
+     * earlier MicroPropsGenerators in the chain, LongNameMultiplexer keeps the
+     * parent link, while the LongNameHandlers are given no parents.
+     */
+    MemoryPool<LongNameHandler> fLongNameHandlers;
+    MemoryPool<MixedUnitLongNameHandler> fMixedUnitHandlers;
+    // Unowned pointers to instances owned by MaybeStackVectors.
+    MaybeStackArray<MicroPropsGenerator *, 8> fHandlers;
+    // Each MeasureUnit corresponds to the same-index MicroPropsGenerator
+    // pointed to in fHandlers.
+    LocalArray<MeasureUnit> fMeasureUnits;
+
+    const MicroPropsGenerator *fParent;
+
+    LongNameMultiplexer(const MicroPropsGenerator *parent) : fParent(parent) {
+    }
+};
+
 }  // namespace impl
 }  // namespace number
 U_NAMESPACE_END
diff --git a/libicu/cts_headers/number_mapper.h b/libicu/cts_headers/number_mapper.h
index d18b8b3..9ecd776 100644
--- a/libicu/cts_headers/number_mapper.h
+++ b/libicu/cts_headers/number_mapper.h
@@ -136,6 +136,16 @@
         }
     }
 
+    inline void setTo(const AffixPatternProvider* provider, UErrorCode& status) {
+        if (auto ptr = dynamic_cast<const PropertiesAffixPatternProvider*>(provider)) {
+            propertiesAPP = *ptr;
+        } else if (auto ptr = dynamic_cast<const CurrencyPluralInfoAffixProvider*>(provider)) {
+            currencyPluralInfoAPP = *ptr;
+        } else {
+            status = U_INTERNAL_PROGRAM_ERROR;
+        }
+    }
+
     inline const AffixPatternProvider& get() const {
       if (!currencyPluralInfoAPP.isBogus()) {
         return currencyPluralInfoAPP;
@@ -153,9 +163,9 @@
 /**
  * A struct for ownership of a few objects needed for formatting.
  */
-struct DecimalFormatWarehouse {
+struct DecimalFormatWarehouse : public UMemory {
     AutoAffixPatternProvider affixProvider;
-
+    LocalPointer<PluralRules> rules;
 };
 
 
diff --git a/libicu/cts_headers/number_microprops.h b/libicu/cts_headers/number_microprops.h
index 56512f5..058c592 100644
--- a/libicu/cts_headers/number_microprops.h
+++ b/libicu/cts_headers/number_microprops.h
@@ -22,6 +22,56 @@
 U_NAMESPACE_BEGIN namespace number {
 namespace impl {
 
+/**
+ * A copyable container for the integer values of mixed unit measurements.
+ *
+ * If memory allocation fails during copying, no values are copied and status is
+ * set to U_MEMORY_ALLOCATION_ERROR.
+ */
+class IntMeasures : public MaybeStackArray<int64_t, 2> {
+  public:
+    /**
+     * Default constructor initializes with internal T[stackCapacity] buffer.
+     *
+     * Stack Capacity: most mixed units are expected to consist of two or three
+     * subunits, so one or two integer measures should be enough.
+     */
+    IntMeasures() : MaybeStackArray<int64_t, 2>() {
+    }
+
+    /**
+     * Copy constructor.
+     *
+     * If memory allocation fails during copying, no values are copied and
+     * status is set to U_MEMORY_ALLOCATION_ERROR.
+     */
+    IntMeasures(const IntMeasures &other) : MaybeStackArray<int64_t, 2>() {
+        this->operator=(other);
+    }
+
+    // Assignment operator
+    IntMeasures &operator=(const IntMeasures &rhs) {
+        if (this == &rhs) {
+            return *this;
+        }
+        copyFrom(rhs, status);
+        return *this;
+    }
+
+    /** Move constructor */
+    IntMeasures(IntMeasures &&src) = default;
+
+    /** Move assignment */
+    IntMeasures &operator=(IntMeasures &&src) = default;
+
+    UErrorCode status = U_ZERO_ERROR;
+};
+
+/**
+ * MicroProps is the first MicroPropsGenerator that should be should be called,
+ * producing an initialized MicroProps instance that will be passed on and
+ * modified throughout the rest of the chain of MicroPropsGenerator instances.
+ */
 struct MicroProps : public MicroPropsGenerator {
 
     // NOTE: All of these fields are properly initialized in NumberFormatterImpl.
@@ -36,19 +86,47 @@
 
     // Note: This struct has no direct ownership of the following pointers.
     const DecimalFormatSymbols* symbols;
+
+    // Pointers to Modifiers provided by the number formatting pipeline (when
+    // the value is known):
+
+    // A Modifier provided by LongNameHandler, used for currency long names and
+    // units. If there is no LongNameHandler needed, this should be an
+    // EmptyModifier. (This is typically the third modifier applied.)
     const Modifier* modOuter;
+    // A Modifier for short currencies and compact notation. (This is typically
+    // the second modifier applied.)
     const Modifier* modMiddle = nullptr;
+    // A Modifier provided by ScientificHandler, used for scientific notation.
+    // This is typically the first modifier applied.
     const Modifier* modInner;
 
     // The following "helper" fields may optionally be used during the MicroPropsGenerator.
     // They live here to retain memory.
     struct {
+        // The ScientificModifier for which ScientificHandler is responsible.
+        // ScientificHandler::processQuantity() modifies this Modifier.
         ScientificModifier scientificModifier;
+        // EmptyModifier used for modOuter
         EmptyModifier emptyWeakModifier{false};
+        // EmptyModifier used for modInner
         EmptyModifier emptyStrongModifier{true};
         MultiplierFormatHandler multiplier;
+        // A Modifier used for Mixed Units. When formatting mixed units,
+        // LongNameHandler assigns this Modifier.
+        SimpleModifier mixedUnitModifier;
     } helpers;
 
+    // The MeasureUnit with which the output is represented. May also have
+    // UMEASURE_UNIT_MIXED complexity, in which case mixedMeasures comes into
+    // play.
+    MeasureUnit outputUnit;
+
+    // In the case of mixed units, this is the set of integer-only units
+    // *preceding* the final unit.
+    IntMeasures mixedMeasures;
+    // Number of mixedMeasures that have been populated
+    int32_t mixedMeasuresCount = 0;
 
     MicroProps() = default;
 
@@ -56,7 +134,23 @@
 
     MicroProps& operator=(const MicroProps& other) = default;
 
-    void processQuantity(DecimalQuantity&, MicroProps& micros, UErrorCode& status) const U_OVERRIDE {
+    /**
+     * As MicroProps is the "base instance", this implementation of
+     * MicroPropsGenerator::processQuantity() just ensures that the output
+     * `micros` is correctly initialized.
+     *
+     * For the "safe" invocation of this function, micros must not be *this,
+     * such that a copy of the base instance is made. For the "unsafe" path,
+     * this function can be used only once, because the base MicroProps instance
+     * will be modified and thus not be available for re-use.
+     *
+     * @param quantity The quantity for consideration and optional mutation.
+     * @param micros The MicroProps instance to populate. If this parameter is
+     * not already `*this`, it will be overwritten with a copy of `*this`.
+     */
+    void processQuantity(DecimalQuantity &quantity, MicroProps &micros,
+                         UErrorCode &status) const U_OVERRIDE {
+        (void) quantity;
         (void) status;
         if (this == &micros) {
             // Unsafe path: no need to perform a copy.
@@ -65,6 +159,7 @@
             U_ASSERT(exhausted);
         } else {
             // Safe path: copy self into the output micros.
+            U_ASSERT(!exhausted);
             micros = *this;
         }
     }
diff --git a/libicu/cts_headers/number_roundingutils.h b/libicu/cts_headers/number_roundingutils.h
index 3e37f31..e85cbae 100644
--- a/libicu/cts_headers/number_roundingutils.h
+++ b/libicu/cts_headers/number_roundingutils.h
@@ -8,6 +8,7 @@
 #define __NUMBER_ROUNDINGUTILS_H__
 
 #include "number_types.h"
+#include "string_segment.h"
 
 U_NAMESPACE_BEGIN
 namespace number {
@@ -44,6 +45,9 @@
 inline bool
 getRoundingDirection(bool isEven, bool isNegative, Section section, RoundingMode roundingMode,
                      UErrorCode &status) {
+    if (U_FAILURE(status)) {
+        return false;
+    }
     switch (roundingMode) {
         case RoundingMode::UNUM_ROUND_UP:
             // round away from zero
@@ -187,8 +191,22 @@
     Precision fPrecision;
     UNumberFormatRoundingMode fRoundingMode;
     bool fPassThrough = true;  // default value
+
+    // Permits access to fPrecision.
+    friend class units::UnitsRouter;
+
+    // Permits access to fPrecision.
+    friend class UnitConversionHandler;
 };
 
+/**
+ * Parses Precision-related skeleton strings without knowledge of MacroProps
+ * - see blueprint_helpers::parseIncrementOption().
+ *
+ * Referencing MacroProps means needing to pull in the .o files that have the
+ * destructors for the SymbolsWrapper, Usage, and Scale classes.
+ */
+void parseIncrementOption(const StringSegment &segment, Precision &outPrecision, UErrorCode &status);
 
 } // namespace impl
 } // namespace number
diff --git a/libicu/cts_headers/number_skeletons.h b/libicu/cts_headers/number_skeletons.h
index d9b2c0e..201267e 100644
--- a/libicu/cts_headers/number_skeletons.h
+++ b/libicu/cts_headers/number_skeletons.h
@@ -22,10 +22,12 @@
 // namespace for enums and entrypoint functions
 namespace skeleton {
 
-///////////////////////////////////////////////////////////////////////////////////////
-// NOTE: For an example of how to add a new stem to the number skeleton parser, see: //
-// http://bugs.icu-project.org/trac/changeset/41193                                  //
-///////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////
+// NOTE: For examples of how to add a new stem to the number skeleton parser, see:    //
+// https://github.com/unicode-org/icu/commit/a2a7982216b2348070dc71093775ac7195793d73 //
+// and                                                                                //
+// https://github.com/unicode-org/icu/commit/6fe86f3934a8a5701034f648a8f7c5087e84aa28 //
+////////////////////////////////////////////////////////////////////////////////////////
 
 /**
  * While parsing a skeleton, this enum records what type of option we expect to find next.
@@ -47,6 +49,7 @@
     STATE_MEASURE_UNIT,
     STATE_PER_MEASURE_UNIT,
     STATE_IDENTIFIER_UNIT,
+    STATE_UNIT_USAGE,
     STATE_CURRENCY_UNIT,
     STATE_INTEGER_WIDTH,
     STATE_NUMBERING_SYSTEM,
@@ -95,6 +98,8 @@
     STEM_UNIT_WIDTH_SHORT,
     STEM_UNIT_WIDTH_FULL_NAME,
     STEM_UNIT_WIDTH_ISO_CODE,
+    STEM_UNIT_WIDTH_FORMAL,
+    STEM_UNIT_WIDTH_VARIANT,
     STEM_UNIT_WIDTH_HIDDEN,
     STEM_SIGN_AUTO,
     STEM_SIGN_ALWAYS,
@@ -112,6 +117,7 @@
     STEM_MEASURE_UNIT,
     STEM_PER_MEASURE_UNIT,
     STEM_UNIT,
+    STEM_UNIT_USAGE,
     STEM_CURRENCY,
     STEM_INTEGER_WIDTH,
     STEM_NUMBERING_SYSTEM,
@@ -234,14 +240,20 @@
 
 void generateCurrencyOption(const CurrencyUnit& currency, UnicodeString& sb, UErrorCode& status);
 
+// "measure-unit/" is deprecated in favour of "unit/".
 void parseMeasureUnitOption(const StringSegment& segment, MacroProps& macros, UErrorCode& status);
 
-void generateMeasureUnitOption(const MeasureUnit& measureUnit, UnicodeString& sb, UErrorCode& status);
-
+// "per-measure-unit/" is deprecated in favour of "unit/".
 void parseMeasurePerUnitOption(const StringSegment& segment, MacroProps& macros, UErrorCode& status);
 
+/**
+ * Parses unit identifiers like "meter-per-second" and "foot-and-inch", as
+ * specified via a "unit/" concise skeleton.
+ */
 void parseIdentifierUnitOption(const StringSegment& segment, MacroProps& macros, UErrorCode& status);
 
+void parseUnitUsageOption(const StringSegment& segment, MacroProps& macros, UErrorCode& status);
+
 void parseFractionStem(const StringSegment& segment, MacroProps& macros, UErrorCode& status);
 
 void generateFractionStem(int32_t minFrac, int32_t maxFrac, UnicodeString& sb, UErrorCode& status);
@@ -302,7 +314,7 @@
 
     static bool unit(const MacroProps& macros, UnicodeString& sb, UErrorCode& status);
 
-    static bool perUnit(const MacroProps& macros, UnicodeString& sb, UErrorCode& status);
+    static bool usage(const MacroProps& macros, UnicodeString& sb, UErrorCode& status);
 
     static bool precision(const MacroProps& macros, UnicodeString& sb, UErrorCode& status);
 
@@ -332,6 +344,7 @@
     bool notation = false;
     bool unit = false;
     bool perUnit = false;
+    bool usage = false;
     bool precision = false;
     bool roundingMode = false;
     bool grouper = false;
@@ -344,6 +357,24 @@
     bool scale = false;
 };
 
+namespace {
+
+#define SKELETON_UCHAR_TO_CHAR(dest, src, start, end, status) (void)(dest); \
+UPRV_BLOCK_MACRO_BEGIN { \
+    UErrorCode conversionStatus = U_ZERO_ERROR; \
+    (dest).appendInvariantChars({false, (src).getBuffer() + (start), (end) - (start)}, conversionStatus); \
+    if (conversionStatus == U_INVARIANT_CONVERSION_ERROR) { \
+        /* Don't propagate the invariant conversion error; it is a skeleton syntax error */ \
+        (status) = U_NUMBER_SKELETON_SYNTAX_ERROR; \
+        return; \
+    } else if (U_FAILURE(conversionStatus)) { \
+        (status) = conversionStatus; \
+        return; \
+    } \
+} UPRV_BLOCK_MACRO_END
+
+} // namespace
+
 } // namespace impl
 } // namespace number
 U_NAMESPACE_END
diff --git a/libicu/cts_headers/number_types.h b/libicu/cts_headers/number_types.h
index 5c2b8cf..8078851 100644
--- a/libicu/cts_headers/number_types.h
+++ b/libicu/cts_headers/number_types.h
@@ -246,31 +246,31 @@
  * itself. The {@link #processQuantity} method performs the final step in the number processing pipeline: it uses the
  * quantity to generate a finalized {@link MicroProps}, which can be used to render the number to output.
  *
- * <p>
  * In other words, this interface is used for the parts of number processing that are <em>quantity-dependent</em>.
  *
- * <p>
  * In order to allow for multiple different objects to all mutate the same MicroProps, a "chain" of MicroPropsGenerators
  * are linked together, and each one is responsible for manipulating a certain quantity-dependent part of the
  * MicroProps. At the tail of the linked list is a base instance of {@link MicroProps} with properties that are not
  * quantity-dependent. Each element in the linked list calls {@link #processQuantity} on its "parent", then does its
  * work, and then returns the result.
  *
+ * This chain of MicroPropsGenerators is typically constructed by NumberFormatterImpl::macrosToMicroGenerator() when
+ * constructing a NumberFormatter.
+ *
  * Exported as U_I18N_API because it is a base class for other exported types
  *
  */
 class U_I18N_API MicroPropsGenerator {
   public:
-    virtual ~MicroPropsGenerator();
+    virtual ~MicroPropsGenerator() = default;
 
     /**
-     * Considers the given {@link DecimalQuantity}, optionally mutates it, and returns a {@link MicroProps}.
+     * Considers the given {@link DecimalQuantity}, optionally mutates it, and
+     * populates a {@link MicroProps} instance.
      *
-     * @param quantity
-     *            The quantity for consideration and optional mutation.
-     * @param micros
-     *            The MicroProps instance to populate.
-     * @return A MicroProps instance resolved for the quantity.
+     * @param quantity The quantity for consideration and optional mutation.
+     * @param micros The MicroProps instance to populate. It will be modified as
+     *   needed for the given quantity.
      */
     virtual void processQuantity(DecimalQuantity& quantity, MicroProps& micros,
                                  UErrorCode& status) const = 0;
diff --git a/libicu/cts_headers/number_usageprefs.h b/libicu/cts_headers/number_usageprefs.h
new file mode 100644
index 0000000..9e8bd93
--- /dev/null
+++ b/libicu/cts_headers/number_usageprefs.h
@@ -0,0 +1,125 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+#ifndef __NUMBER_USAGEPREFS_H__
+#define __NUMBER_USAGEPREFS_H__
+
+#include "cmemory.h"
+#include "number_types.h"
+#include "unicode/listformatter.h"
+#include "unicode/localpointer.h"
+#include "unicode/locid.h"
+#include "unicode/measunit.h"
+#include "unicode/stringpiece.h"
+#include "unicode/uobject.h"
+#include "units_converter.h"
+#include "units_router.h"
+
+U_NAMESPACE_BEGIN
+
+using ::icu::units::ComplexUnitsConverter;
+using ::icu::units::UnitsRouter;
+
+namespace number {
+namespace impl {
+
+/**
+ * A MicroPropsGenerator which uses UnitsRouter to produce output converted to a
+ * MeasureUnit appropriate for a particular localized usage: see
+ * NumberFormatterSettings::usage().
+ */
+class U_I18N_API UsagePrefsHandler : public MicroPropsGenerator, public UMemory {
+  public:
+    UsagePrefsHandler(const Locale &locale, const MeasureUnit &inputUnit, const StringPiece usage,
+                      const MicroPropsGenerator *parent, UErrorCode &status);
+
+    /**
+     * Obtains the appropriate output value, MeasureUnit and
+     * rounding/precision behaviour from the UnitsRouter.
+     *
+     * The output unit is passed on to the LongNameHandler via
+     * micros.outputUnit.
+     */
+    void processQuantity(DecimalQuantity &quantity, MicroProps &micros,
+                         UErrorCode &status) const U_OVERRIDE;
+
+    /**
+     * Returns the list of possible output units, i.e. the full set of
+     * preferences, for the localized, usage-specific unit preferences.
+     *
+     * The returned pointer should be valid for the lifetime of the
+     * UsagePrefsHandler instance.
+     */
+    const MaybeStackVector<MeasureUnit> *getOutputUnits() const {
+        return fUnitsRouter.getOutputUnits();
+    }
+
+  private:
+    UnitsRouter fUnitsRouter;
+    const MicroPropsGenerator *fParent;
+};
+
+} // namespace impl
+} // namespace number
+
+// Export explicit template instantiations of LocalPointerBase and LocalPointer.
+// This is required when building DLLs for Windows. (See datefmt.h,
+// collationiterator.h, erarules.h and others for similar examples.)
+//
+// Note: These need to be outside of the number::impl namespace, or Clang will
+// generate a compile error.
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+#if defined(_MSC_VER)
+// Ignore warning 4661 as LocalPointerBase does not use operator== or operator!=
+#pragma warning(push)
+#pragma warning(disable: 4661)
+#endif
+template class U_I18N_API LocalPointerBase<ComplexUnitsConverter>;
+template class U_I18N_API LocalPointer<ComplexUnitsConverter>;
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+#endif
+
+namespace number {
+namespace impl {
+
+/**
+ * A MicroPropsGenerator which converts a measurement from one MeasureUnit to
+ * another. In particular, the output MeasureUnit may be a mixed unit. (The
+ * input unit may not be a mixed unit.)
+ */
+class U_I18N_API UnitConversionHandler : public MicroPropsGenerator, public UMemory {
+  public:
+    /**
+     * Constructor.
+     *
+     * @param inputUnit Specifies the input MeasureUnit. Mixed units are not
+     *     supported as input (because input is just a single decimal quantity).
+     * @param outputUnit Specifies the output MeasureUnit.
+     * @param parent The parent MicroPropsGenerator.
+     * @param status Receives status.
+     */
+    UnitConversionHandler(const MeasureUnit &inputUnit, const MeasureUnit &outputUnit,
+                          const MicroPropsGenerator *parent, UErrorCode &status);
+
+    /**
+     * Obtains the appropriate output values from the Unit Converter.
+     */
+    void processQuantity(DecimalQuantity &quantity, MicroProps &micros,
+                         UErrorCode &status) const U_OVERRIDE;
+  private:
+    MeasureUnit fOutputUnit;
+    LocalPointer<ComplexUnitsConverter> fUnitConverter;
+    const MicroPropsGenerator *fParent;
+};
+
+} // namespace impl
+} // namespace number
+U_NAMESPACE_END
+
+#endif // __NUMBER_USAGEPREFS_H__
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/libicu/cts_headers/number_utils.h b/libicu/cts_headers/number_utils.h
index 93195f0..bc369c9 100644
--- a/libicu/cts_headers/number_utils.h
+++ b/libicu/cts_headers/number_utils.h
@@ -49,8 +49,8 @@
     return uprv_strcmp("currency", unit.getType()) == 0;
 }
 
-inline bool unitIsNoUnit(const MeasureUnit& unit) {
-    return uprv_strcmp("none", unit.getType()) == 0;
+inline bool unitIsBaseUnit(const MeasureUnit& unit) {
+    return unit == MeasureUnit();
 }
 
 inline bool unitIsPercent(const MeasureUnit& unit) {
diff --git a/libicu/cts_headers/number_utypes.h b/libicu/cts_headers/number_utypes.h
index 7a1b7a4..d97eadc 100644
--- a/libicu/cts_headers/number_utypes.h
+++ b/libicu/cts_headers/number_utypes.h
@@ -28,9 +28,6 @@
  * This struct is held internally by the C++ version FormattedNumber since the member types are not
  * declared in the public header file.
  *
- * The DecimalQuantity is not currently being used by FormattedNumber, but at some point it could be used
- * to add a toDecNumber() or similar method.
- *
  * Exported as U_I18N_API for tests
  */
 class U_I18N_API UFormattedNumberData : public FormattedValueStringBuilderImpl {
@@ -38,7 +35,13 @@
     UFormattedNumberData() : FormattedValueStringBuilderImpl(kUndefinedField) {}
     virtual ~UFormattedNumberData();
 
+    // The formatted quantity.
     DecimalQuantity quantity;
+
+    // The output unit for the formatted quantity.
+    // TODO(units,hugovdm): populate this correctly for the general case - it's
+    // currently only implemented for the .usage() use case.
+    MeasureUnit outputUnit;
 };
 
 
diff --git a/libicu/cts_headers/numparse_affixes.h b/libicu/cts_headers/numparse_affixes.h
index 97a17f4..a82b731 100644
--- a/libicu/cts_headers/numparse_affixes.h
+++ b/libicu/cts_headers/numparse_affixes.h
@@ -128,7 +128,7 @@
     void consumeToken(::icu::number::impl::AffixPatternType type, UChar32 cp, UErrorCode& status) override;
 
     /** NOTE: You can build only once! */
-    AffixPatternMatcher build();
+    AffixPatternMatcher build(UErrorCode& status);
 
   private:
     ArraySeriesMatcher::MatcherArray fMatchers;
@@ -160,7 +160,8 @@
   private:
     CompactUnicodeString<4> fPattern;
 
-    AffixPatternMatcher(MatcherArray& matchers, int32_t matchersLen, const UnicodeString& pattern);
+    AffixPatternMatcher(MatcherArray& matchers, int32_t matchersLen, const UnicodeString& pattern,
+                        UErrorCode& status);
 
     friend class AffixPatternMatcherBuilder;
 };
diff --git a/libicu/cts_headers/numparse_types.h b/libicu/cts_headers/numparse_types.h
index b4007c2..623f0e8 100644
--- a/libicu/cts_headers/numparse_types.h
+++ b/libicu/cts_headers/numparse_types.h
@@ -64,14 +64,15 @@
         fBuffer[0] = 0;
     }
 
-    CompactUnicodeString(const UnicodeString& text)
-            : fBuffer(text.length() + 1) {
+    CompactUnicodeString(const UnicodeString& text, UErrorCode& status)
+            : fBuffer(text.length() + 1, status) {
+        if (U_FAILURE(status)) { return; }
         uprv_memcpy(fBuffer.getAlias(), text.getBuffer(), sizeof(UChar) * text.length());
         fBuffer[text.length()] = 0;
     }
 
     inline UnicodeString toAliasedUnicodeString() const {
-        return UnicodeString(TRUE, fBuffer.getAlias(), -1);
+        return UnicodeString(true, fBuffer.getAlias(), -1);
     }
 
     bool operator==(const CompactUnicodeString& other) const {
diff --git a/libicu/cts_headers/numrange_impl.h b/libicu/cts_headers/numrange_impl.h
index 8f4c8a4..b81a311 100644
--- a/libicu/cts_headers/numrange_impl.h
+++ b/libicu/cts_headers/numrange_impl.h
@@ -15,6 +15,7 @@
 #include "number_formatimpl.h"
 #include "formatted_string_builder.h"
 #include "formattedval_impl.h"
+#include "pluralranges.h"
 
 U_NAMESPACE_BEGIN namespace number {
 namespace impl {
@@ -40,36 +41,6 @@
 };
 
 
-class StandardPluralRanges : public UMemory {
-  public:
-    void initialize(const Locale& locale, UErrorCode& status);
-    StandardPlural::Form resolve(StandardPlural::Form first, StandardPlural::Form second) const;
-
-    /** Used for data loading. */
-    void addPluralRange(
-        StandardPlural::Form first,
-        StandardPlural::Form second,
-        StandardPlural::Form result);
-
-    /** Used for data loading. */
-    void setCapacity(int32_t length);
-
-  private:
-    struct StandardPluralRangeTriple {
-        StandardPlural::Form first;
-        StandardPlural::Form second;
-        StandardPlural::Form result;
-    };
-
-    // TODO: An array is simple here, but it results in linear lookup time.
-    // Certain locales have 20-30 entries in this list.
-    // Consider changing to a smarter data structure.
-    typedef MaybeStackArray<StandardPluralRangeTriple, 3> PluralRangeTriples;
-    PluralRangeTriples fTriples;
-    int32_t fTriplesLen = 0;
-};
-
-
 class NumberRangeFormatterImpl : public UMemory {
   public:
     NumberRangeFormatterImpl(const RangeMacroProps& macros, UErrorCode& status);
@@ -105,6 +76,11 @@
 };
 
 
+/** Helper function used in upluralrules.cpp */
+const UFormattedNumberRangeData* validateUFormattedNumberRange(
+    const UFormattedNumberRange* uresult, UErrorCode& status);
+
+
 } // namespace impl
 } // namespace number
 U_NAMESPACE_END
diff --git a/libicu/cts_headers/olsontz.h b/libicu/cts_headers/olsontz.h
index a3b7dcc..275b1b4 100644
--- a/libicu/cts_headers/olsontz.h
+++ b/libicu/cts_headers/olsontz.h
@@ -208,7 +208,7 @@
     /**
      * TimeZone API.  For a historical zone, whether DST is used or
      * not varies over time.  In order to approximate expected
-     * behavior, this method returns TRUE if DST is observed at any
+     * behavior, this method returns true if DST is observed at any
      * point in the current year.
      */
     virtual UBool useDaylightTime() const;
@@ -234,7 +234,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the first transition after the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      */
     virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
 
@@ -244,7 +244,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the most recent transition before the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      */
     virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
 
diff --git a/libicu/cts_headers/patternprops.h b/libicu/cts_headers/patternprops.h
index b57cdeb..95898d5 100644
--- a/libicu/cts_headers/patternprops.h
+++ b/libicu/cts_headers/patternprops.h
@@ -44,17 +44,17 @@
 class U_COMMON_API PatternProps {
 public:
     /**
-     * @return TRUE if c is a Pattern_Syntax code point.
+     * @return true if c is a Pattern_Syntax code point.
      */
     static UBool isSyntax(UChar32 c);
 
     /**
-     * @return TRUE if c is a Pattern_Syntax or Pattern_White_Space code point.
+     * @return true if c is a Pattern_Syntax or Pattern_White_Space code point.
      */
     static UBool isSyntaxOrWhiteSpace(UChar32 c);
 
     /**
-     * @return TRUE if c is a Pattern_White_Space character.
+     * @return true if c is a Pattern_White_Space character.
      */
     static UBool isWhiteSpace(UChar32 c);
 
@@ -78,7 +78,7 @@
     /**
      * Tests whether the string contains a "pattern identifier", that is,
      * whether it contains only non-Pattern_White_Space, non-Pattern_Syntax characters.
-     * @return TRUE if there are no Pattern_White_Space or Pattern_Syntax characters in s.
+     * @return true if there are no Pattern_White_Space or Pattern_Syntax characters in s.
      */
     static UBool isIdentifier(const UChar *s, int32_t length);
 
diff --git a/libicu/cts_headers/persncal.h b/libicu/cts_headers/persncal.h
index ce6d739..c9eff1c 100644
--- a/libicu/cts_headers/persncal.h
+++ b/libicu/cts_headers/persncal.h
@@ -295,7 +295,7 @@
   virtual UBool inDaylightTime(UErrorCode& status) const;
 
   /**
-   * Returns TRUE because the Persian Calendar does have a default century
+   * Returns true because the Persian Calendar does have a default century
    * @internal
    */
   virtual UBool haveDefaultCentury() const;
diff --git a/libicu/cts_headers/pluralmap.h b/libicu/cts_headers/pluralmap.h
index db64409..d898ac4 100644
--- a/libicu/cts_headers/pluralmap.h
+++ b/libicu/cts_headers/pluralmap.h
@@ -234,7 +234,7 @@
     }
 
     /**
-     * Returns TRUE if this object equals rhs.
+     * Returns true if this object equals rhs.
      */
     UBool equals(
             const PluralMap<T> &rhs,
@@ -244,13 +244,13 @@
                 continue;
             }
             if (fVariants[i] == NULL || rhs.fVariants[i] == NULL) {
-                return FALSE;
+                return false;
             }
             if (!eqFunc(*fVariants[i], *rhs.fVariants[i])) {
-                return FALSE;
+                return false;
             }
         }
-        return TRUE;
+        return true;
     }
 
 private:
diff --git a/libicu/cts_headers/pluralranges.h b/libicu/cts_headers/pluralranges.h
new file mode 100644
index 0000000..eba59c7
--- /dev/null
+++ b/libicu/cts_headers/pluralranges.h
@@ -0,0 +1,67 @@
+// © 2018 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#ifndef __PLURALRANGES_H__
+#define __PLURALRANGES_H__
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "unicode/uobject.h"
+#include "unicode/locid.h"
+#include "unicode/plurrule.h"
+#include "standardplural.h"
+#include "cmemory.h"
+
+U_NAMESPACE_BEGIN
+
+// Forward declarations
+namespace number {
+namespace impl {
+class UFormattedNumberRangeData;
+}
+}
+
+class StandardPluralRanges : public UMemory {
+  public:
+    /** Create a new StandardPluralRanges for the given locale */
+    static StandardPluralRanges forLocale(const Locale& locale, UErrorCode& status);
+
+    /** Explicit copy constructor */
+    StandardPluralRanges copy(UErrorCode& status) const;
+
+    /** Create an object (called on an rvalue) */
+    LocalPointer<StandardPluralRanges> toPointer(UErrorCode& status) && noexcept;
+
+    /** Select rule based on the first and second forms */
+    StandardPlural::Form resolve(StandardPlural::Form first, StandardPlural::Form second) const;
+
+    /** Used for data loading. */
+    void addPluralRange(
+        StandardPlural::Form first,
+        StandardPlural::Form second,
+        StandardPlural::Form result);
+
+    /** Used for data loading. */
+    void setCapacity(int32_t length, UErrorCode& status);
+
+  private:
+    struct StandardPluralRangeTriple {
+        StandardPlural::Form first;
+        StandardPlural::Form second;
+        StandardPlural::Form result;
+    };
+
+    // TODO: An array is simple here, but it results in linear lookup time.
+    // Certain locales have 20-30 entries in this list.
+    // Consider changing to a smarter data structure.
+    typedef MaybeStackArray<StandardPluralRangeTriple, 3> PluralRangeTriples;
+    PluralRangeTriples fTriples;
+    int32_t fTriplesLen = 0;
+};
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+#endif //__PLURALRANGES_H__
diff --git a/libicu/cts_headers/plurrule_impl.h b/libicu/cts_headers/plurrule_impl.h
index 0dc44fb..52af3a7 100644
--- a/libicu/cts_headers/plurrule_impl.h
+++ b/libicu/cts_headers/plurrule_impl.h
@@ -30,6 +30,12 @@
 #include "hash.h"
 #include "uassert.h"
 
+/**
+ * A FixedDecimal version of UPLRULES_NO_UNIQUE_VALUE used in PluralRulesTest
+ * for parsing of samples.
+ */
+#define UPLRULES_NO_UNIQUE_VALUE_DECIMAL (FixedDecimal((double)-0.00123456777))
+
 class PluralRulesTest;
 
 U_NAMESPACE_BEGIN
@@ -138,6 +144,7 @@
   tVariableF,
   tVariableV,
   tVariableT,
+  tVariableE,
   tDecimal,
   tInteger,
   tEOF
@@ -273,7 +280,9 @@
       * @param n   the number, e.g. 12.345
       * @param v   The number of visible fraction digits, e.g. 3
       * @param f   The fraction digits, e.g. 345
+      * @param e   The exponent, e.g. 7 in 1.2e7 (for compact/scientific)
       */
+    FixedDecimal(double  n, int32_t v, int64_t f, int32_t e);
     FixedDecimal(double  n, int32_t v, int64_t f);
     FixedDecimal(double n, int32_t);
     explicit FixedDecimal(double n);
@@ -282,6 +291,8 @@
     FixedDecimal(const UnicodeString &s, UErrorCode &ec);
     FixedDecimal(const FixedDecimal &other);
 
+    static FixedDecimal createWithExponent(double n, int32_t v, int32_t e);
+
     double getPluralOperand(PluralOperand operand) const U_OVERRIDE;
     bool isNaN() const U_OVERRIDE;
     bool isInfinite() const U_OVERRIDE;
@@ -291,19 +302,25 @@
 
     int32_t getVisibleFractionDigitCount() const;
 
+    void init(double n, int32_t v, int64_t f, int32_t e);
     void init(double n, int32_t v, int64_t f);
     void init(double n);
     UBool quickInit(double n);  // Try a fast-path only initialization,
-                                //    return TRUE if successful.
+                                //    return true if successful.
     void adjustForMinFractionDigits(int32_t min);
     static int64_t getFractionalDigits(double n, int32_t v);
     static int32_t decimals(double n);
 
+    bool operator==(const FixedDecimal &other) const;
+
+    UnicodeString toString() const;
+
     double      source;
     int32_t     visibleDecimalDigitCount;
     int64_t     decimalDigits;
     int64_t     decimalDigitsWithoutTrailingZeros;
     int64_t     intValue;
+    int32_t     exponent;
     UBool       _hasIntegerValue;
     UBool       isNegative;
     UBool       _isNaN;
@@ -320,8 +337,8 @@
     int32_t opNum = -1;             // for mod expressions, the right operand of the mod.
     int32_t value = -1;             // valid for 'is' rules only.
     UVector32 *rangeList = nullptr; // for 'in', 'within' rules. Null otherwise.
-    UBool negated = FALSE;          // TRUE for negated rules.
-    UBool integerOnly = FALSE;      // TRUE for 'within' rules.
+    UBool negated = false;          // true for negated rules.
+    UBool integerOnly = false;      // true for 'within' rules.
     tokenType digitsType = none;    // n | i | v | f constraint.
     AndConstraint *next = nullptr;
     // Internal error status, used for errors that occur during the copy constructor.
@@ -357,8 +374,8 @@
     OrConstraint   *ruleHeader = nullptr;
     UnicodeString   fDecimalSamples;  // Samples strings from rule source
     UnicodeString   fIntegerSamples;  //   without @decimal or @integer, otherwise unprocessed.
-    UBool           fDecimalSamplesUnbounded = FALSE;
-    UBool           fIntegerSamplesUnbounded = FALSE;
+    UBool           fDecimalSamplesUnbounded = false;
+    UBool           fIntegerSamplesUnbounded = false;
     // Internal error status, used for errors that occur during the copy constructor.
     UErrorCode      fInternalStatus = U_ZERO_ERROR;
 
diff --git a/libicu/cts_headers/punycode.h b/libicu/cts_headers/punycode.h
index 5d8a243..9e28f77 100644
--- a/libicu/cts_headers/punycode.h
+++ b/libicu/cts_headers/punycode.h
@@ -50,7 +50,7 @@
  * @param caseFlags Vector of boolean values, one per input UChar,
  *                  indicating that the corresponding character is to be
  *                  marked for the decoder optionally
- *                  uppercasing (TRUE) or lowercasing (FALSE)
+ *                  uppercasing (true) or lowercasing (false)
  *                  the character.
  *                  ASCII characters are output directly in the case as marked.
  *                  Flags corresponding to trail surrogates are ignored.
@@ -65,7 +65,7 @@
  *
  * @see u_strFromPunycode
  */
-U_CFUNC int32_t
+U_CAPI int32_t
 u_strToPunycode(const UChar *src, int32_t srcLength,
                 UChar *dest, int32_t destCapacity,
                 const UBool *caseFlags,
@@ -83,10 +83,10 @@
  *                     and of caseFlags in numbers of UBools.
  * @param caseFlags Output array for case flags as
  *                  defined by the Punycode string.
- *                  The caller should uppercase (TRUE) or lowercase (FASLE)
+ *                  The caller should uppercase (true) or lowercase (FASLE)
  *                  the corresponding character in dest.
  *                  For supplementary characters, only the lead surrogate
- *                  is marked, and FALSE is stored for the trail surrogate.
+ *                  is marked, and false is stored for the trail surrogate.
  *                  This is redundant and not necessary for ASCII characters
  *                  because they are already in the case indicated.
  *                  Can be NULL if the case flags are not needed.
@@ -100,7 +100,7 @@
  *
  * @see u_strToPunycode
  */
-U_CFUNC int32_t
+U_CAPI int32_t
 u_strFromPunycode(const UChar *src, int32_t srcLength,
                   UChar *dest, int32_t destCapacity,
                   UBool *caseFlags,
diff --git a/libicu/cts_headers/putilimp.h b/libicu/cts_headers/putilimp.h
index d9c90cf..a325c6c 100644
--- a/libicu/cts_headers/putilimp.h
+++ b/libicu/cts_headers/putilimp.h
@@ -210,93 +210,93 @@
  * Floating point utility to determine if a double is Not a Number (NaN).
  * @internal
  */
-U_INTERNAL UBool   U_EXPORT2 uprv_isNaN(double d);
+U_CAPI UBool   U_EXPORT2 uprv_isNaN(double d);
 /**
  * Floating point utility to determine if a double has an infinite value.
  * @internal
  */
-U_INTERNAL UBool   U_EXPORT2 uprv_isInfinite(double d);
+U_CAPI UBool   U_EXPORT2 uprv_isInfinite(double d);
 /**
  * Floating point utility to determine if a double has a positive infinite value.
  * @internal
  */
-U_INTERNAL UBool   U_EXPORT2 uprv_isPositiveInfinity(double d);
+U_CAPI UBool   U_EXPORT2 uprv_isPositiveInfinity(double d);
 /**
  * Floating point utility to determine if a double has a negative infinite value.
  * @internal
  */
-U_INTERNAL UBool   U_EXPORT2 uprv_isNegativeInfinity(double d);
+U_CAPI UBool   U_EXPORT2 uprv_isNegativeInfinity(double d);
 /**
  * Floating point utility that returns a Not a Number (NaN) value.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_getNaN(void);
+U_CAPI double  U_EXPORT2 uprv_getNaN(void);
 /**
  * Floating point utility that returns an infinite value.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_getInfinity(void);
+U_CAPI double  U_EXPORT2 uprv_getInfinity(void);
 
 /**
  * Floating point utility to truncate a double.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_trunc(double d);
+U_CAPI double  U_EXPORT2 uprv_trunc(double d);
 /**
  * Floating point utility to calculate the floor of a double.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_floor(double d);
+U_CAPI double  U_EXPORT2 uprv_floor(double d);
 /**
  * Floating point utility to calculate the ceiling of a double.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_ceil(double d);
+U_CAPI double  U_EXPORT2 uprv_ceil(double d);
 /**
  * Floating point utility to calculate the absolute value of a double.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_fabs(double d);
+U_CAPI double  U_EXPORT2 uprv_fabs(double d);
 /**
  * Floating point utility to calculate the fractional and integer parts of a double.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_modf(double d, double* pinteger);
+U_CAPI double  U_EXPORT2 uprv_modf(double d, double* pinteger);
 /**
  * Floating point utility to calculate the remainder of a double divided by another double.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_fmod(double d, double y);
+U_CAPI double  U_EXPORT2 uprv_fmod(double d, double y);
 /**
  * Floating point utility to calculate d to the power of exponent (d^exponent).
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_pow(double d, double exponent);
+U_CAPI double  U_EXPORT2 uprv_pow(double d, double exponent);
 /**
  * Floating point utility to calculate 10 to the power of exponent (10^exponent).
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_pow10(int32_t exponent);
+U_CAPI double  U_EXPORT2 uprv_pow10(int32_t exponent);
 /**
  * Floating point utility to calculate the maximum value of two doubles.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_fmax(double d, double y);
+U_CAPI double  U_EXPORT2 uprv_fmax(double d, double y);
 /**
  * Floating point utility to calculate the minimum value of two doubles.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_fmin(double d, double y);
+U_CAPI double  U_EXPORT2 uprv_fmin(double d, double y);
 /**
  * Private utility to calculate the maximum value of two integers.
  * @internal
  */
-U_INTERNAL int32_t U_EXPORT2 uprv_max(int32_t d, int32_t y);
+U_CAPI int32_t U_EXPORT2 uprv_max(int32_t d, int32_t y);
 /**
  * Private utility to calculate the minimum value of two integers.
  * @internal
  */
-U_INTERNAL int32_t U_EXPORT2 uprv_min(int32_t d, int32_t y);
+U_CAPI int32_t U_EXPORT2 uprv_min(int32_t d, int32_t y);
 
 #if U_IS_BIG_ENDIAN
 #   define uprv_isNegative(number) (*((signed char *)&(number))<0)
@@ -309,13 +309,13 @@
  * type of arbitrary bit length.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_maxMantissa(void);
+U_CAPI double  U_EXPORT2 uprv_maxMantissa(void);
 
 /**
  * Floating point utility to calculate the logarithm of a double.
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_log(double d);
+U_CAPI double  U_EXPORT2 uprv_log(double d);
 
 /**
  * Does common notion of rounding e.g. uprv_floor(x + 0.5);
@@ -323,7 +323,7 @@
  * @return the rounded double
  * @internal
  */
-U_INTERNAL double  U_EXPORT2 uprv_round(double x);
+U_CAPI double  U_EXPORT2 uprv_round(double x);
 
 /**
  * Adds the signed integers a and b, storing the result in res.
@@ -336,7 +336,7 @@
  * @return true if overflow occurred; false if no overflow occurred.
  * @internal
  */
-U_INTERNAL UBool U_EXPORT2 uprv_add32_overflow(int32_t a, int32_t b, int32_t* res);
+U_CAPI UBool U_EXPORT2 uprv_add32_overflow(int32_t a, int32_t b, int32_t* res);
 
 /**
  * Multiplies the signed integers a and b, storing the result in res.
@@ -349,7 +349,7 @@
  * @return true if overflow occurred; false if no overflow occurred.
  * @internal
  */
-U_INTERNAL UBool U_EXPORT2 uprv_mul32_overflow(int32_t a, int32_t b, int32_t* res);
+U_CAPI UBool U_EXPORT2 uprv_mul32_overflow(int32_t a, int32_t b, int32_t* res);
 
 #if 0
 /**
@@ -359,7 +359,7 @@
  * @return the number of digits after the decimal point in a double number x.
  * @internal
  */
-/*U_INTERNAL int32_t  U_EXPORT2 uprv_digitsAfterDecimal(double x);*/
+/*U_CAPI int32_t  U_EXPORT2 uprv_digitsAfterDecimal(double x);*/
 #endif
 
 #if !U_CHARSET_IS_UTF8
@@ -368,22 +368,22 @@
  * Return the default codepage for this platform and locale.
  * This function can call setlocale() on Unix platforms. Please read the
  * platform documentation on setlocale() before calling this function.
- * @return the default codepage for this platform 
+ * @return the default codepage for this platform
  * @internal
  */
-U_INTERNAL const char*  U_EXPORT2 uprv_getDefaultCodepage(void);
+U_CAPI const char*  U_EXPORT2 uprv_getDefaultCodepage(void);
 #endif
 
 /**
  * Please use uloc_getDefault() instead.
  * Return the default locale ID string by querying the system, or
- *     zero if one cannot be found. 
+ *     zero if one cannot be found.
  * This function can call setlocale() on Unix platforms. Please read the
  * platform documentation on setlocale() before calling this function.
  * @return the default locale ID string
  * @internal
  */
-U_INTERNAL const char*  U_EXPORT2 uprv_getDefaultLocaleID(void);
+U_CAPI const char*  U_EXPORT2 uprv_getDefaultLocaleID(void);
 
 /**
  * Time zone utilities
@@ -417,7 +417,7 @@
  * Date/Time application.
  * @internal
  */
-U_INTERNAL void     U_EXPORT2 uprv_tzset(void);
+U_CAPI void     U_EXPORT2 uprv_tzset(void);
 
 /**
  * Difference in seconds between coordinated universal
@@ -425,7 +425,7 @@
  * @return the difference in seconds between coordinated universal time and local time.
  * @internal
  */
-U_INTERNAL int32_t  U_EXPORT2 uprv_timezone(void);
+U_CAPI int32_t  U_EXPORT2 uprv_timezone(void);
 
 /**
  *   tzname(0)  Three-letter time-zone name derived from TZ environment
@@ -435,13 +435,13 @@
  *              tzname(1) is an empty string.
  * @internal
  */
-U_INTERNAL const char* U_EXPORT2 uprv_tzname(int n);
+U_CAPI const char* U_EXPORT2 uprv_tzname(int n);
 
 /**
  * Reset the global tzname cache.
  * @internal
  */
-U_INTERNAL void uprv_tzname_clear_cache();
+U_CAPI void uprv_tzname_clear_cache(void);
 
 /**
  * Get UTC (GMT) time measured in milliseconds since 0:00 on 1/1/1970.
@@ -449,7 +449,7 @@
  * @return the UTC time measured in milliseconds
  * @internal
  */
-U_INTERNAL UDate U_EXPORT2 uprv_getUTCtime(void);
+U_CAPI UDate U_EXPORT2 uprv_getUTCtime(void);
 
 /**
  * Get UTC (GMT) time measured in milliseconds since 0:00 on 1/1/1970.
@@ -458,15 +458,15 @@
  * @return the UTC time measured in milliseconds
  * @internal
  */
-U_INTERNAL UDate U_EXPORT2 uprv_getRawUTCtime(void);
+U_CAPI UDate U_EXPORT2 uprv_getRawUTCtime(void);
 
 /**
  * Determine whether a pathname is absolute or not, as defined by the platform.
  * @param path Pathname to test
- * @return TRUE if the path is absolute
+ * @return true if the path is absolute
  * @internal (ICU 3.0)
  */
-U_INTERNAL UBool U_EXPORT2 uprv_pathIsAbsolute(const char *path);
+U_CAPI UBool U_EXPORT2 uprv_pathIsAbsolute(const char *path);
 
 /**
  * Use U_MAX_PTR instead of this function.
@@ -474,7 +474,7 @@
  * @return the largest possible pointer greater than the base
  * @internal (ICU 3.8)
  */
-U_INTERNAL void * U_EXPORT2 uprv_maximumPtr(void *base);
+U_CAPI void * U_EXPORT2 uprv_maximumPtr(void *base);
 
 /**
  * Maximum value of a (void*) - use to indicate the limit of an 'infinite' buffer.
@@ -572,26 +572,26 @@
  * Load a library
  * @internal (ICU 4.4)
  */
-U_INTERNAL void * U_EXPORT2 uprv_dl_open(const char *libName, UErrorCode *status);
+U_CAPI void * U_EXPORT2 uprv_dl_open(const char *libName, UErrorCode *status);
 
 /**
  * Close a library
  * @internal (ICU 4.4)
  */
-U_INTERNAL void U_EXPORT2 uprv_dl_close( void *lib, UErrorCode *status);
+U_CAPI void U_EXPORT2 uprv_dl_close( void *lib, UErrorCode *status);
 
 /**
  * Extract a symbol from a library (function)
  * @internal (ICU 4.8)
  */
-U_INTERNAL UVoidFunction* U_EXPORT2 uprv_dlsym_func( void *lib, const char *symbolName, UErrorCode *status);
+U_CAPI UVoidFunction* U_EXPORT2 uprv_dlsym_func( void *lib, const char *symbolName, UErrorCode *status);
 
 /**
  * Extract a symbol from a library (function)
  * Not implemented, no clients.
  * @internal
  */
-/* U_INTERNAL void * U_EXPORT2 uprv_dlsym_data( void *lib, const char *symbolName, UErrorCode *status); */
+/* U_CAPI void * U_EXPORT2 uprv_dlsym_data( void *lib, const char *symbolName, UErrorCode *status); */
 
 #endif
 
diff --git a/libicu/cts_headers/quant.h b/libicu/cts_headers/quant.h
index d5aa8e5..df6924c 100644
--- a/libicu/cts_headers/quant.h
+++ b/libicu/cts_headers/quant.h
@@ -62,11 +62,11 @@
      * considered for matching will be text.charAt(limit-1) in the
      * forward direction or text.charAt(limit+1) in the backward
      * direction.
-     * @param incremental  if TRUE, then assume further characters may
+     * @param incremental  if true, then assume further characters may
      * be inserted at limit and check for partial matching.  Otherwise
      * assume the text as given is complete.
      * @return a match degree value indicating a full match, a partial
-     * match, or a mismatch.  If incremental is FALSE then
+     * match, or a mismatch.  If incremental is false then
      * U_PARTIAL_MATCH should never be returned.
      */
     virtual UMatchDegree matches(const Replaceable& text,
@@ -81,7 +81,7 @@
      * @return                  A reference to 'result'.
      */
     virtual UnicodeString& toPattern(UnicodeString& result,
-                                     UBool escapeUnprintable = FALSE) const;
+                                     UBool escapeUnprintable = false) const;
 
     /**
      * Implement UnicodeMatcher
diff --git a/libicu/cts_headers/quantityformatter.h b/libicu/cts_headers/quantityformatter.h
index daaef4f..841798c 100644
--- a/libicu/cts_headers/quantityformatter.h
+++ b/libicu/cts_headers/quantityformatter.h
@@ -74,18 +74,18 @@
      * @param variant "zero", "one", "two", "few", "many", "other"
      * @param rawPattern the pattern for the variant e.g "{0} meters"
      * @param status any error returned here.
-     * @return TRUE on success; FALSE if status was set to a non zero error.
+     * @return true on success; false if status was set to a non zero error.
      */
     UBool addIfAbsent(const char *variant, const UnicodeString &rawPattern, UErrorCode &status);
 
     /**
-     * returns TRUE if this object has at least the "other" variant.
+     * returns true if this object has at least the "other" variant.
      */
     UBool isValid() const;
 
     /**
      * Gets the pattern formatter that would be used for a particular variant.
-     * If isValid() returns TRUE, this method is guaranteed to return a
+     * If isValid() returns true, this method is guaranteed to return a
      * non-NULL value.
      */
     const SimpleFormatter *getByVariant(const char *variant) const;
@@ -112,7 +112,7 @@
 
     /**
      * Selects the standard plural form for the number/formatter/rules.
-     * TODO(13591): Remove this method.
+     * Used in MeasureFormat for backwards compatibility with NumberFormat.
      */
     static StandardPlural::Form selectPlural(
             const Formattable &number,
diff --git a/libicu/cts_headers/rbbi_cache.h b/libicu/cts_headers/rbbi_cache.h
index 7991d6c..597312e 100644
--- a/libicu/cts_headers/rbbi_cache.h
+++ b/libicu/cts_headers/rbbi_cache.h
@@ -126,13 +126,13 @@
      * Additional boundaries, either preceding or following, may be added
      * to the cache as a side effect.
      *
-     * Return FALSE if the operation failed.
+     * Return false if the operation failed.
      */
     UBool populateNear(int32_t position, UErrorCode &status);
 
     /**
      *  Add boundary(s) to the cache following the current last boundary.
-     *  Return FALSE if at the end of the text, and no more boundaries can be added.
+     *  Return false if at the end of the text, and no more boundaries can be added.
      *  Leave iteration position at the first newly added boundary, or unchanged if no boundary was added.
      */
     UBool populateFollowing();
@@ -170,7 +170,7 @@
      *  Fails if the requested position is outside of the range of boundaries currently held by the cache.
      *  The startPosition must be on a code point boundary.
      *
-     *  Return TRUE if successful, FALSE if the specified position is after
+     *  Return true if successful, false if the specified position is after
      *  the last cached boundary or before the first.
      */
     UBool                   seek(int32_t startPosition);
diff --git a/libicu/cts_headers/rbbidata.h b/libicu/cts_headers/rbbidata.h
index 7b9b8d8..3749f16 100644
--- a/libicu/cts_headers/rbbidata.h
+++ b/libicu/cts_headers/rbbidata.h
@@ -49,16 +49,17 @@
 
 #ifdef __cplusplus
 
+#include "unicode/ucptrie.h"
 #include "unicode/uobject.h"
 #include "unicode/unistr.h"
 #include "unicode/uversion.h"
 #include "umutex.h"
-#include "utrie2.h"
+
 
 U_NAMESPACE_BEGIN
 
 // The current RBBI data format version.
-static const uint8_t RBBI_DATA_FORMAT_VERSION[] = {5, 0, 0, 0};
+static const uint8_t RBBI_DATA_FORMAT_VERSION[] = {6, 0, 0, 0};
 
 /*  
  *   The following structs map exactly onto the raw data from ICU common data file. 
@@ -94,49 +95,61 @@
 
 
 
-struct  RBBIStateTableRow {
-    int16_t          fAccepting;    /*  Non-zero if this row is for an accepting state.   */
-                                    /*  Value 0: not an accepting state.                  */
-                                    /*       -1: Unconditional Accepting state.           */
-                                    /*    positive:  Look-ahead match has completed.      */
-                                    /*           Actual boundary position happened earlier */
-                                    /*           Value here == fLookAhead in earlier      */
-                                    /*              state, at actual boundary pos.        */
-    int16_t          fLookAhead;    /*  Non-zero if this row is for a state that          */
-                                    /*    corresponds to a '/' in the rule source.        */
-                                    /*    Value is the same as the fAccepting             */
-                                    /*      value for the rule (which will appear         */
-                                    /*      in a different state.                         */
-    int16_t          fTagIdx;       /*  Non-zero if this row covers a {tagged} position   */
-                                    /*     from a rule.  Value is the index in the        */
-                                    /*     StatusTable of the set of matching             */
-                                    /*     tags (rule status values)                      */
-    int16_t          fReserved;
-    uint16_t         fNextState[1]; /*  Next State, indexed by char category.             */
-                                    /*    Variable-length array declared with length 1    */
-                                    /*    to disable bounds checkers.                     */
-                                    /*    Array Size is actually fData->fHeader->fCatCount*/
-                                    /*    CAUTION:  see RBBITableBuilder::getTableSize()  */
-                                    /*              before changing anything here.        */
+template <typename T>
+struct RBBIStateTableRowT {
+    T               fAccepting;    //  Non-zero if this row is for an accepting state.
+                                   //  Value 0: not an accepting state.
+                                   //        1: (ACCEPTING_UNCONDITIONAL) Unconditional Accepting state.
+                                   //       >1: Look-ahead match has completed.
+                                   //           Actual boundary position happened earlier.
+                                   //           Value here == fLookAhead in earlier
+                                   //           state, at actual boundary pos.
+    T               fLookAhead;    //  Non-zero if this row is for a state that
+                                   //    corresponds to a '/' in the rule source.
+                                   //    Value is the same as the fAccepting
+                                   //    value for the rule (which will appear
+                                   //    in a different state.
+    T               fTagsIdx;      //  Non-zero if this row covers a {tagged} position
+                                   //    from a rule.  Value is the index in the
+                                   //    StatusTable of the set of matching
+                                   //    tags (rule status values)
+    T               fNextState[1]; //  Next State, indexed by char category.
+                                   //    Variable-length array declared with length 1
+                                   //    to disable bounds checkers.
+                                   //    Array Size is actually fData->fHeader->fCatCount
+                                   //    CAUTION:  see RBBITableBuilder::getTableSize()
+                                   //              before changing anything here.
 };
 
+typedef RBBIStateTableRowT<uint8_t> RBBIStateTableRow8;
+typedef RBBIStateTableRowT<uint16_t> RBBIStateTableRow16;
+
+constexpr uint16_t ACCEPTING_UNCONDITIONAL = 1;   // Value constant for RBBIStateTableRow::fAccepting
+
+union RBBIStateTableRow {
+  RBBIStateTableRow16 r16;
+  RBBIStateTableRow8 r8;
+};
 
 struct RBBIStateTable {
-    uint32_t         fNumStates;    /*  Number of states.                                 */
-    uint32_t         fRowLen;       /*  Length of a state table row, in bytes.            */
-    uint32_t         fFlags;        /*  Option Flags for this state table                 */
-    uint32_t         fReserved;     /*  reserved                                          */
-    char             fTableData[1]; /*  First RBBIStateTableRow begins here.              */
-                                    /*    Variable-length array declared with length 1    */
-                                    /*    to disable bounds checkers.                     */
-                                    /*    (making it char[] simplifies ugly address       */
-                                    /*     arithmetic for indexing variable length rows.) */
+    uint32_t         fNumStates;            // Number of states.
+    uint32_t         fRowLen;               // Length of a state table row, in bytes.
+    uint32_t         fDictCategoriesStart;  // Char category number of the first dictionary
+                                            //   char class, or the the largest category number + 1
+                                            //   if there are no dictionary categories.
+    uint32_t         fLookAheadResultsSize; // Size of run-time array required for holding
+                                            //   look-ahead results. Indexed by row.fLookAhead.
+    uint32_t         fFlags;                // Option Flags for this state table.
+    char             fTableData[1];         // First RBBIStateTableRow begins here.
+                                            //   Variable-length array declared with length 1
+                                            //   to disable bounds checkers.
+                                            //   (making it char[] simplifies ugly address
+                                            //   arithmetic for indexing variable length rows.)
 };
 
-typedef enum {
-    RBBI_LOOKAHEAD_HARD_BREAK = 1,
-    RBBI_BOF_REQUIRED = 2
-} RBBIStateTableFlags;
+constexpr uint32_t RBBI_LOOKAHEAD_HARD_BREAK = 1;
+constexpr uint32_t RBBI_BOF_REQUIRED = 2;
+constexpr uint32_t RBBI_8BITS_ROWS = 4;
 
 
 /*                                        */
@@ -170,13 +183,13 @@
     const RBBIDataHeader     *fHeader;
     const RBBIStateTable     *fForwardTable;
     const RBBIStateTable     *fReverseTable;
-    const UChar              *fRuleSource;
+    const char               *fRuleSource;
     const int32_t            *fRuleStatusTable; 
 
     /* number of int32_t values in the rule status table.   Used to sanity check indexing */
     int32_t             fStatusMaxIdx;
 
-    UTrie2             *fTrie;
+    UCPTrie             *fTrie;
 
 private:
     u_atomic_int32_t    fRefCount;
@@ -184,8 +197,8 @@
     UnicodeString       fRuleString;
     UBool               fDontFreeData;
 
-    RBBIDataWrapper(const RBBIDataWrapper &other); /*  forbid copying of this class */
-    RBBIDataWrapper &operator=(const RBBIDataWrapper &other); /*  forbid copying of this class */
+    RBBIDataWrapper(const RBBIDataWrapper &other) = delete; /*  forbid copying of this class */
+    RBBIDataWrapper &operator=(const RBBIDataWrapper &other) = delete; /*  forbid copying of this class */
 };
 
 
diff --git a/libicu/cts_headers/rbbinode.h b/libicu/cts_headers/rbbinode.h
index f352596..cff3ba7 100644
--- a/libicu/cts_headers/rbbinode.h
+++ b/libicu/cts_headers/rbbinode.h
@@ -79,7 +79,7 @@
                                             //   corresponds to columns in the final
                                             //   state transition table.
 
-        UBool         fLookAheadEnd;        // For endMark nodes, set TRUE if
+        UBool         fLookAheadEnd;        // For endMark nodes, set true if
                                             //   marking the end of a look-ahead rule.
 
         UBool         fRuleRoot;            // True if this node is the root of a rule.
diff --git a/libicu/cts_headers/rbbiscan.h b/libicu/cts_headers/rbbiscan.h
index 6828ba3..5802200 100644
--- a/libicu/cts_headers/rbbiscan.h
+++ b/libicu/cts_headers/rbbiscan.h
@@ -54,7 +54,7 @@
     struct RBBIRuleChar {
         UChar32             fChar;
         UBool               fEscaped;
-        RBBIRuleChar() : fChar(0), fEscaped(FALSE) {}
+        RBBIRuleChar() : fChar(0), fEscaped(false) {}
     };
 
     RBBIRuleScanner(RBBIRuleBuilder  *rb);
diff --git a/libicu/cts_headers/rbbisetb.h b/libicu/cts_headers/rbbisetb.h
index ed6a76b..6409a4e 100644
--- a/libicu/cts_headers/rbbisetb.h
+++ b/libicu/cts_headers/rbbisetb.h
@@ -16,9 +16,10 @@
 
 #if !UCONFIG_NO_BREAK_ITERATION
 
+#include "unicode/ucptrie.h"
+#include "unicode/umutablecptrie.h"
 #include "unicode/uobject.h"
 #include "rbbirb.h"
-#include "utrie2.h"
 #include "uvector.h"
 
 U_NAMESPACE_BEGIN
@@ -40,25 +41,26 @@
 //
 class RangeDescriptor : public UMemory {
 public:
-    UChar32            fStartChar;      // Start of range, unicode 32 bit value.
-    UChar32            fEndChar;        // End of range, unicode 32 bit value.
-    int32_t            fNum;            // runtime-mapped input value for this range.
-    UVector           *fIncludesSets;   // vector of the the original
-                                        //   Unicode sets that include this range.
-                                        //    (Contains ptrs to uset nodes)
-    RangeDescriptor   *fNext;           // Next RangeDescriptor in the linked list.
+    UChar32            fStartChar {};            // Start of range, unicode 32 bit value.
+    UChar32            fEndChar {};              // End of range, unicode 32 bit value.
+    int32_t            fNum {0};                 // runtime-mapped input value for this range.
+    bool               fIncludesDict {false};    // True if the range includes $dictionary.
+    bool               fFirstInGroup {false};    // True if first range in a group with the same fNum.
+    UVector           *fIncludesSets {nullptr};  // vector of the the original
+                                                 //   Unicode sets that include this range.
+                                                 //    (Contains ptrs to uset nodes)
+    RangeDescriptor   *fNext {nullptr};          // Next RangeDescriptor in the linked list.
 
     RangeDescriptor(UErrorCode &status);
     RangeDescriptor(const RangeDescriptor &other, UErrorCode &status);
     ~RangeDescriptor();
     void split(UChar32 where, UErrorCode &status);   // Spit this range in two at "where", with
                                         //   where appearing in the second (higher) part.
-    void setDictionaryFlag();           // Check whether this range appears as part of
+    bool isDictionaryRange();           // Check whether this range appears as part of
                                         //   the Unicode set named "dictionary"
 
-private:
-    RangeDescriptor(const RangeDescriptor &other); // forbid copying of this class
-    RangeDescriptor &operator=(const RangeDescriptor &other); // forbid copying of this class
+    RangeDescriptor(const RangeDescriptor &other) = delete; // forbid default copying of this class
+    RangeDescriptor &operator=(const RangeDescriptor &other) = delete; // forbid assigning of this class
 };
 
 
@@ -89,6 +91,8 @@
     int32_t  getNumCharCategories() const;   // CharCategories are the same as input symbol set to the
                                              //    runtime state machine, which are the same as
                                              //    columns in the DFA state table
+    int32_t  getDictCategoriesStart() const; // First char category that includes $dictionary, or
+                                             // last category + 1 if there are no dictionary categories.
     int32_t  getTrieSize() /*const*/;        // Size in bytes of the serialized Trie.
     void     serializeTrie(uint8_t *where);  // write out the serialized Trie.
     UChar32  getFirstChar(int32_t  val) const;
@@ -101,8 +105,6 @@
      */
     void     mergeCategories(IntPair categories);
 
-    static constexpr int32_t DICT_BIT = 0x4000;
-
 #ifdef RBBI_DEBUG
     void     printSets();
     void     printRanges();
@@ -114,24 +116,22 @@
 #endif
 
 private:
-    void           numberSets();
-
     RBBIRuleBuilder       *fRB;             // The RBBI Rule Compiler that owns us.
     UErrorCode            *fStatus;
 
     RangeDescriptor       *fRangeList;      // Head of the linked list of RangeDescriptors
 
-    UTrie2                *fTrie;           // The mapping TRIE that is the end result of processing
-    uint32_t               fTrieSize;       //  the Unicode Sets.
+    UMutableCPTrie        *fMutableTrie;    // The mapping TRIE that is the end result of processing
+    UCPTrie               *fTrie;           //  the Unicode Sets.
+    uint32_t               fTrieSize;
 
-    // Groups correspond to character categories -
-    //       groups of ranges that are in the same original UnicodeSets.
-    //       fGroupCount is the index of the last used group.
-    //       fGroupCount+1 is also the number of columns in the RBBI state table being compiled.
-    //       State table column 0 is not used.  Column 1 is for end-of-input.
-    //       column 2 is for group 0.  Funny counting.
+    // Number of range groups, which are groups of ranges that are in the same original UnicodeSets.
     int32_t               fGroupCount;
 
+    // The number of the first dictionary char category.
+    // If there are no Dictionary categories, set to the last category + 1.
+    int32_t               fDictCategoriesStart;
+
     UBool                 fSawBOF;
 
     RBBISetBuilder(const RBBISetBuilder &other); // forbid copying of this class
diff --git a/libicu/cts_headers/rbbitblb.h b/libicu/cts_headers/rbbitblb.h
index c2b574f..fe3db8d 100644
--- a/libicu/cts_headers/rbbitblb.h
+++ b/libicu/cts_headers/rbbitblb.h
@@ -20,6 +20,7 @@
 
 #include "unicode/uobject.h"
 #include "unicode/rbbi.h"
+#include "rbbidata.h"
 #include "rbbirb.h"
 #include "rbbinode.h"
 
@@ -53,6 +54,9 @@
      */
     void     exportTable(void *where);
 
+    /** Use 8 bits to encode the forward table */
+    bool     use8BitsForTable() const;
+
     /**
      *  Find duplicate (redundant) character classes. Begin looking with categories.first.
      *  Duplicate, if found are returned in the categories parameter.
@@ -85,6 +89,8 @@
      */
     void     exportSafeTable(void *where);
 
+    /** Use 8 bits to encode the safe reverse table */
+    bool     use8BitsForSafeTable() const;
 
 private:
     void     calcNullable(RBBINode *n);
@@ -179,9 +185,15 @@
     /** Map from rule number (fVal in look ahead nodes) to sequential lookahead index. */
     UVector32        *fLookAheadRuleMap = nullptr;
 
+    /* Counter used when assigning lookahead rule numbers.
+     * Contains the last look-ahead number already in use.
+     * The first look-ahead number is 2; Number 1 (ACCEPTING_UNCONDITIONAL) is reserved
+     * for non-lookahead accepting states. See the declarations of RBBIStateTableRowT.   */
+    int32_t          fLASlotsInUse = ACCEPTING_UNCONDITIONAL;
 
-    RBBITableBuilder(const RBBITableBuilder &other); // forbid copying of this class
-    RBBITableBuilder &operator=(const RBBITableBuilder &other); // forbid copying of this class
+
+    RBBITableBuilder(const RBBITableBuilder &other) = delete; // forbid copying of this class
+    RBBITableBuilder &operator=(const RBBITableBuilder &other) = delete; // forbid copying of this class
 };
 
 //
@@ -190,8 +202,8 @@
 class RBBIStateDescriptor : public UMemory {
 public:
     UBool            fMarked;
-    int32_t          fAccepting;
-    int32_t          fLookAhead;
+    uint32_t         fAccepting;
+    uint32_t         fLookAhead;
     UVector          *fTagVals;
     int32_t          fTagsIdx;
     UVector          *fPositions;          // Set of parse tree positions associated
diff --git a/libicu/cts_headers/rbt.h b/libicu/cts_headers/rbt.h
index 97ef01e..61d3b6b 100644
--- a/libicu/cts_headers/rbt.h
+++ b/libicu/cts_headers/rbt.h
@@ -161,7 +161,7 @@
      * to construct a new transliterator.
      * @param result the string to receive the rules.  Previous
      * contents will be deleted.
-     * @param escapeUnprintable if TRUE then convert unprintable
+     * @param escapeUnprintable if true then convert unprintable
      * character to their hex escape representations, \uxxxx or
      * \Uxxxxxxxx.  Unprintable characters are those other than
      * U+000A, U+0020..U+007E.
diff --git a/libicu/cts_headers/rbt_pars.h b/libicu/cts_headers/rbt_pars.h
index 61ce972..2a972e1 100644
--- a/libicu/cts_headers/rbt_pars.h
+++ b/libicu/cts_headers/rbt_pars.h
@@ -210,7 +210,7 @@
 
     /**
      * Assert that the given character is NOT within the variable range.
-     * If it is, return FALSE.  This is neccesary to ensure that the
+     * If it is, return false.  This is neccesary to ensure that the
      * variable range does not overlap characters used in a rule.
      * @param ch     the given character.
      * @return       True, if the given character is NOT within the variable range.
diff --git a/libicu/cts_headers/rbt_rule.h b/libicu/cts_headers/rbt_rule.h
index 5501981..b927f5d 100644
--- a/libicu/cts_headers/rbt_rule.h
+++ b/libicu/cts_headers/rbt_rule.h
@@ -172,9 +172,9 @@
      *                       segments, or null if there are none.  The array itself is adopted,
      *                       but the pointers within it are not.
      * @param segsCount      number of elements in segs[].
-     * @param anchorStart    TRUE if the the rule is anchored on the left to
+     * @param anchorStart    true if the the rule is anchored on the left to
      *                       the context start.
-     * @param anchorEnd      TRUE if the rule is anchored on the right to the
+     * @param anchorEnd      true if the rule is anchored on the right to the
      *                       context limit.
      * @param data           the rule data.
      * @param status         Output parameter filled in with success or failure status.
@@ -267,11 +267,11 @@
      * 
      * @param text the text
      * @param pos the position indices
-     * @param incremental if TRUE, test for partial matches that may
+     * @param incremental if true, test for partial matches that may
      * be completed by additional text inserted at pos.limit.
      * @return one of <code>U_MISMATCH</code>,
      * <code>U_PARTIAL_MATCH</code>, or <code>U_MATCH</code>.  If
-     * incremental is FALSE then U_PARTIAL_MATCH will not be returned.
+     * incremental is false then U_PARTIAL_MATCH will not be returned.
      */
     UMatchDegree matchAndReplace(Replaceable& text,
                                  UTransPosition& pos,
diff --git a/libicu/cts_headers/rbt_set.h b/libicu/cts_headers/rbt_set.h
index b4b4678..35ae3fb 100644
--- a/libicu/cts_headers/rbt_set.h
+++ b/libicu/cts_headers/rbt_set.h
@@ -123,14 +123,14 @@
     
     /**
      * Transliterate the given text with the given UTransPosition
-     * indices.  Return TRUE if the transliteration should continue
-     * or FALSE if it should halt (because of a U_PARTIAL_MATCH match).
-     * Note that FALSE is only ever returned if isIncremental is TRUE.
+     * indices.  Return true if the transliteration should continue
+     * or false if it should halt (because of a U_PARTIAL_MATCH match).
+     * Note that false is only ever returned if isIncremental is true.
      * @param text the text to be transliterated
      * @param index the position indices, which will be updated
-     * @param isIncremental if TRUE, assume new text may be inserted
-     * at index.limit, and return FALSE if thre is a partial match.
-     * @return TRUE unless a U_PARTIAL_MATCH has been obtained,
+     * @param isIncremental if true, assume new text may be inserted
+     * at index.limit, and return false if thre is a partial match.
+     * @return true unless a U_PARTIAL_MATCH has been obtained,
      * indicating that transliteration should stop until more text
      * arrives.
      */
diff --git a/libicu/cts_headers/regexcmp.h b/libicu/cts_headers/regexcmp.h
index f2aeea9..f3cfa6e 100644
--- a/libicu/cts_headers/regexcmp.h
+++ b/libicu/cts_headers/regexcmp.h
@@ -104,7 +104,7 @@
                                int32_t LoopOp);
     UBool       compileInlineInterval();             // Generate inline code for a {min,max} quantifier
     void        literalChar(UChar32 c);              // Compile a literal char
-    void        fixLiterals(UBool split=FALSE);      // Generate code for pending literal characters.
+    void        fixLiterals(UBool split=false);      // Generate code for pending literal characters.
     void        insertOp(int32_t where);             // Open up a slot for a new op in the
                                                      //   generated code at the specified location.
     void        appendOp(int32_t op);                // Append a new op to the compiled pattern.
diff --git a/libicu/cts_headers/regextxt.h b/libicu/cts_headers/regextxt.h
index 9cfabbe..0f64b84 100644
--- a/libicu/cts_headers/regextxt.h
+++ b/libicu/cts_headers/regextxt.h
@@ -29,7 +29,7 @@
 #endif
 
 #ifdef REGEX_DISABLE_CHUNK_MODE
-#  define UTEXT_FULL_TEXT_IN_CHUNK(ut,len) (FALSE)
+#  define UTEXT_FULL_TEXT_IN_CHUNK(ut,len) (false)
 #else
 #  define UTEXT_FULL_TEXT_IN_CHUNK(ut,len) ((0==((ut)->chunkNativeStart))&&((len)==((ut)->chunkNativeLimit))&&((len)==((ut)->nativeIndexingLimit)))
 #endif
diff --git a/libicu/cts_headers/resource.h b/libicu/cts_headers/resource.h
index 5199b85..3795694 100644
--- a/libicu/cts_headers/resource.h
+++ b/libicu/cts_headers/resource.h
@@ -60,7 +60,7 @@
     /**
      * @param i Array item index.
      * @param value Output-only, receives the value of the i'th item.
-     * @return TRUE if i is non-negative and less than getSize().
+     * @return true if i is non-negative and less than getSize().
      */
     UBool getValue(int32_t i, ResourceValue &value) const;
 
@@ -97,14 +97,14 @@
      * @param i Table item index.
      * @param key Output-only, receives the key of the i'th item.
      * @param value Output-only, receives the value of the i'th item.
-     * @return TRUE if i is non-negative and less than getSize().
+     * @return true if i is non-negative and less than getSize().
      */
     UBool getKeyAndValue(int32_t i, const char *&key, ResourceValue &value) const;
 
     /**
      * @param key Key string to find in the table.
      * @param value Output-only, receives the value of the item with that key.
-     * @return TRUE if the table contains the key.
+     * @return true if the table contains the key.
      */
     UBool findValue(const char *key, ResourceValue &value) const;
 
@@ -141,7 +141,7 @@
     inline UnicodeString getUnicodeString(UErrorCode &errorCode) const {
         int32_t len = 0;
         const UChar *r = getString(len, errorCode);
-        return UnicodeString(TRUE, r, len);
+        return UnicodeString(true, r, len);
     }
 
     /**
@@ -152,7 +152,7 @@
     inline UnicodeString getAliasUnicodeString(UErrorCode &errorCode) const {
         int32_t len = 0;
         const UChar *r = getAliasString(len, errorCode);
-        return UnicodeString(TRUE, r, len);
+        return UnicodeString(true, r, len);
     }
 
     /**
@@ -199,7 +199,7 @@
      * CLDR no-fallback data values of (three empty-set symbols)=={2205, 2205, 2205}
      * when enumerating tables with fallback from the specific resource bundle to root.
      *
-     * @return TRUE if this is a no-inheritance marker string
+     * @return true if this is a no-inheritance marker string
      */
     virtual UBool isNoInheritanceMarker() const = 0;
 
diff --git a/libicu/cts_headers/ruleiter.h b/libicu/cts_headers/ruleiter.h
index 4e1be53..28e2ca5 100644
--- a/libicu/cts_headers/ruleiter.h
+++ b/libicu/cts_headers/ruleiter.h
@@ -114,7 +114,7 @@
      * character.
      * @param options one or more of the following options, bitwise-OR-ed
      * together: PARSE_VARIABLES, PARSE_ESCAPES, SKIP_WHITESPACE.
-     * @param isEscaped output parameter set to TRUE if the character
+     * @param isEscaped output parameter set to true if the character
      * was escaped
      * @param ec input-output error code.  An error will only be set by
      * this routing if options includes PARSE_VARIABLES and an unknown
diff --git a/libicu/cts_headers/serv.h b/libicu/cts_headers/serv.h
index e1f69cd..ca070b6 100644
--- a/libicu/cts_headers/serv.h
+++ b/libicu/cts_headers/serv.h
@@ -138,16 +138,16 @@
   * must eventually return false.  This implementation has no fallbacks
   * and always returns false.</p>
   *
-  * @return TRUE if the ICUServiceKey changed to a valid fallback value.
+  * @return true if the ICUServiceKey changed to a valid fallback value.
   */
   virtual UBool fallback();
 
  /**
-  * <p>Return TRUE if a key created from id matches, or would eventually
+  * <p>Return true if a key created from id matches, or would eventually
   * fallback to match, the canonical ID of this ICUServiceKey.</p>
   *
   * @param id the id to test.
-  * @return TRUE if this ICUServiceKey's canonical ID is a fallback of id.
+  * @return true if this ICUServiceKey's canonical ID is a fallback of id.
   */
   virtual UBool isFallbackOf(const UnicodeString& id) const;
 
@@ -291,15 +291,15 @@
  public:
   /**
    * <p>Construct a SimpleFactory that maps a single ID to a single 
-   * service instance.  If visible is TRUE, the ID will be visible.
+   * service instance.  If visible is true, the ID will be visible.
    * The instance must not be NULL.  The SimpleFactory will adopt
    * the instance, which must not be changed subsequent to this call.</p>
    *
    * @param instanceToAdopt the service instance to adopt.
    * @param id the ID to assign to this service instance.
-   * @param visible if TRUE, the ID will be visible.
+   * @param visible if true, the ID will be visible.
    */
-  SimpleFactory(UObject* instanceToAdopt, const UnicodeString& id, UBool visible = TRUE);
+  SimpleFactory(UObject* instanceToAdopt, const UnicodeString& id, UBool visible = true);
 
   /**
    * <p>Destructor.</p>
@@ -318,7 +318,7 @@
   virtual UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const;
 
   /**
-   * <p>This implementation adds a mapping from ID -> this to result if visible is TRUE, 
+   * <p>This implementation adds a mapping from ID -> this to result if visible is true, 
    * otherwise it removes ID from result.</p>
    *
    * @param result the mapping table to update.
@@ -327,7 +327,7 @@
   virtual void updateVisibleIDs(Hashtable& result, UErrorCode& status) const;
 
   /**
-   * <p>This implementation returns the factory ID if it equals id and visible is TRUE,
+   * <p>This implementation returns the factory ID if it equals id and visible is true,
    * otherwise it returns the empty string.  (This implementation provides
    * no localized id information.)</p>
    *
@@ -427,8 +427,8 @@
                             UErrorCode& status);
 
   /**
-   * <p>Return TRUE if either string of the pair is bogus.</p>
-   * @return TRUE if either string of the pair is bogus.
+   * <p>Return true if either string of the pair is bogus.</p>
+   * @return true if either string of the pair is bogus.
    */
   UBool isBogus() const;
 
@@ -761,7 +761,7 @@
 
     /**
      * <p>A convenience override of registerInstance(UObject*, const UnicodeString&, UBool)
-     * that defaults visible to TRUE.</p>
+     * that defaults visible to true.</p>
      *
      * @param objToAdopt the object to register and adopt.
      * @param id the ID to assign to this object.
@@ -774,7 +774,7 @@
     /**
      * <p>Register a service instance with the provided ID.  The ID will be 
      * canonicalized.  The canonicalized ID will be returned by
-     * getVisibleIDs if visible is TRUE.  The service instance will be adopted and
+     * getVisibleIDs if visible is true.  The service instance will be adopted and
      * must not be modified subsequent to this call.</p>
      *
      * <p>This issues a serviceChanged notification to registered listeners.</p>
@@ -784,7 +784,7 @@
      *
      * @param objToAdopt the object to register and adopt.
      * @param id the ID to assign to this object.
-     * @param visible TRUE if getVisibleIDs is to return this ID.
+     * @param visible true if getVisibleIDs is to return this ID.
      * @param status the error code status.
      * @return a registry key that can be passed to unregister() to unregister
      * (and discard) this instance.
@@ -820,7 +820,7 @@
      *
      * @param rkey the registry key.
      * @param status the error code status.  
-     * @return TRUE if the call successfully unregistered the factory.
+     * @return true if the call successfully unregistered the factory.
      */
     virtual UBool unregister(URegistryKey rkey, UErrorCode& status);
 
@@ -833,9 +833,9 @@
     virtual void reset(void);
 
     /**
-     * <p>Return TRUE if the service is in its default state.</p>
+     * <p>Return true if the service is in its default state.</p>
      *
-     * <p>The default implementation returns TRUE if there are no 
+     * <p>The default implementation returns true if there are no 
      * factories registered.</p>
      */
     virtual UBool isDefault(void) const;
@@ -877,7 +877,7 @@
      *
      * @param instanceToAdopt the service instance to adopt.
      * @param id the ID to assign to this service instance.
-     * @param visible if TRUE, the ID will be visible.
+     * @param visible if true, the ID will be visible.
      * @param status the error code status.
      * @return an instance of ICUServiceFactory that maps this instance to the provided ID.
      */
@@ -885,7 +885,7 @@
 
     /**
      * <p>Reinitialize the factory list to its default state.  After this call, isDefault()
-     * must return TRUE.</p>
+     * must return true.</p>
      *
      * <p>This issues a serviceChanged notification to registered listeners.</p>
      *
@@ -928,7 +928,7 @@
      * different listeners.</p>
      *
      * @param l the listener to test.
-     * @return TRUE if the service accepts the listener.
+     * @return true if the service accepts the listener.
      */
     virtual UBool acceptsListener(const EventListener& l) const;
 
diff --git a/libicu/cts_headers/servnotf.h b/libicu/cts_headers/servnotf.h
index dba7a0f..305570c 100644
--- a/libicu/cts_headers/servnotf.h
+++ b/libicu/cts_headers/servnotf.h
@@ -105,7 +105,7 @@
     
 protected: 
     /**
-     * Subclasses implement this to return TRUE if the listener is
+     * Subclasses implement this to return true if the listener is
      * of the appropriate type.
      */
     virtual UBool acceptsListener(const EventListener& l) const = 0;
diff --git a/libicu/cts_headers/sharedobject.h b/libicu/cts_headers/sharedobject.h
index c0a5aba..6ccfb27 100644
--- a/libicu/cts_headers/sharedobject.h
+++ b/libicu/cts_headers/sharedobject.h
@@ -90,13 +90,13 @@
     int32_t getRefCount() const;
 
     /**
-     * If noHardReferences() == TRUE then this object has no hard references.
+     * If noHardReferences() == true then this object has no hard references.
      * Must be called only from within the internals of UnifiedCache.
      */
     inline UBool noHardReferences() const { return getRefCount() == 0; }
 
     /**
-     * If hasHardReferences() == TRUE then this object has hard references.
+     * If hasHardReferences() == true then this object has hard references.
      * Must be called only from within the internals of UnifiedCache.
      */
     inline UBool hasHardReferences() const { return getRefCount() != 0; }
diff --git a/libicu/cts_headers/strmatch.h b/libicu/cts_headers/strmatch.h
index 71ae984..4ee5cbd 100644
--- a/libicu/cts_headers/strmatch.h
+++ b/libicu/cts_headers/strmatch.h
@@ -109,11 +109,11 @@
      * considered for matching will be text.charAt(limit-1) in the
      * forward direction or text.charAt(limit+1) in the backward
      * direction.
-     * @param incremental  if TRUE, then assume further characters may
+     * @param incremental  if true, then assume further characters may
      * be inserted at limit and check for partial matching.  Otherwise
      * assume the text as given is complete.
      * @return a match degree value indicating a full match, a partial
-     * match, or a mismatch.  If incremental is FALSE then
+     * match, or a mismatch.  If incremental is false then
      * U_PARTIAL_MATCH should never be returned.
      */
     virtual UMatchDegree matches(const Replaceable& text,
@@ -128,16 +128,16 @@
      * @return                  A reference to 'result'.
      */
     virtual UnicodeString& toPattern(UnicodeString& result,
-                                     UBool escapeUnprintable = FALSE) const;
+                                     UBool escapeUnprintable = false) const;
 
     /**
      * Implement UnicodeMatcher
-     * Returns TRUE if this matcher will match a character c, where c
+     * Returns true if this matcher will match a character c, where c
      * & 0xFF == v, at offset, in the forward direction (with limit >
      * offset).  This is used by <tt>RuleBasedTransliterator</tt> for
      * indexing.
      * @param v    the given value
-     * @return     TRUE if this matcher will match a character c, 
+     * @return     true if this matcher will match a character c, 
      *             where c & 0xFF == v
      */
     virtual UBool matchesIndexValue(uint8_t v) const;
@@ -181,7 +181,7 @@
      * replacer that is equal to this one.
      * @param result the string to receive the pattern.  Previous
      * contents will be deleted.
-     * @param escapeUnprintable if TRUE then convert unprintable
+     * @param escapeUnprintable if true then convert unprintable
      * character to their hex escape representations, \\uxxxx or
      * \\Uxxxxxxxx.  Unprintable characters are defined by
      * Utility.isUnprintable().
diff --git a/libicu/cts_headers/taiwncal.h b/libicu/cts_headers/taiwncal.h
index 01d4d31..5fec78d 100644
--- a/libicu/cts_headers/taiwncal.h
+++ b/libicu/cts_headers/taiwncal.h
@@ -156,7 +156,7 @@
     virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const;
 
     /**
-     * Returns TRUE because the Taiwan Calendar does have a default century
+     * Returns true because the Taiwan Calendar does have a default century
      * @internal
      */
     virtual UBool haveDefaultCentury() const;
diff --git a/libicu/cts_headers/transreg.h b/libicu/cts_headers/transreg.h
index 041244e..04ed3fb 100644
--- a/libicu/cts_headers/transreg.h
+++ b/libicu/cts_headers/transreg.h
@@ -69,7 +69,7 @@
      * it when the registry mutex is NOT held, to prevent deadlock.
      * It may only be called once.
      *
-     * Note: Only call create() if isRuleBased() returns FALSE.
+     * Note: Only call create() if isRuleBased() returns false.
      *
      * This method must be called *outside* of the TransliteratorRegistry
      * mutex.
@@ -77,17 +77,17 @@
     Transliterator* create(UParseError&, UErrorCode&);
 
     /**
-     * Return TRUE if this alias is rule-based.  If so, the caller
+     * Return true if this alias is rule-based.  If so, the caller
      * must call parse() on it, then call TransliteratorRegistry::reget().
      */
     UBool isRuleBased() const;
 
     /**
-     * If isRuleBased() returns TRUE, then the caller must call this
+     * If isRuleBased() returns true, then the caller must call this
      * method, followed by TransliteratorRegistry::reget().  The latter
      * method must be called inside the TransliteratorRegistry mutex.
      *
-     * Note: Only call parse() if isRuleBased() returns TRUE.
+     * Note: Only call parse() if isRuleBased() returns true.
      *
      * This method must be called *outside* of the TransliteratorRegistry
      * mutex, because it can instantiate Transliterators embedded in
diff --git a/libicu/cts_headers/tridpars.h b/libicu/cts_headers/tridpars.h
index 5e42f06..03d68cc 100644
--- a/libicu/cts_headers/tridpars.h
+++ b/libicu/cts_headers/tridpars.h
@@ -222,7 +222,7 @@
      * @param source          the given source.
      * @param target          the given target.
      * @param variant         the given variant
-     * @param isSourcePresent If TRUE then the source is present. 
+     * @param isSourcePresent If true then the source is present. 
      *                        If the source is not present, ANY will be
      *                        given as the source, and isSourcePresent will be null
      * @return an array of 4 strings: source, target, variant, and
diff --git a/libicu/cts_headers/tznames_impl.h b/libicu/cts_headers/tznames_impl.h
index 1286eeb..417c051 100644
--- a/libicu/cts_headers/tznames_impl.h
+++ b/libicu/cts_headers/tznames_impl.h
@@ -92,9 +92,9 @@
     UBool    fHasValuesVector;
     UBool    fPadding;
 
-    // No value:   fValues == NULL               and  fHasValuesVector == FALSE
-    // One value:  fValues == value              and  fHasValuesVector == FALSE
-    // >=2 values: fValues == UVector of values  and  fHasValuesVector == TRUE
+    // No value:   fValues == NULL               and  fHasValuesVector == false
+    // One value:  fValues == value              and  fHasValuesVector == false
+    // >=2 values: fValues == UVector of values  and  fHasValuesVector == true
 };
 
 inline UBool CharacterNode::hasValues() const {
diff --git a/libicu/cts_headers/uassert.h b/libicu/cts_headers/uassert.h
index 15cd55c..afd31ee 100644
--- a/libicu/cts_headers/uassert.h
+++ b/libicu/cts_headers/uassert.h
@@ -32,7 +32,7 @@
 #   include <assert.h>
 #   define U_ASSERT(exp) assert(exp)
 #elif U_CPLUSPLUS_VERSION
-#   define U_ASSERT(exp) void()
+#   define U_ASSERT(exp) (void)0
 #else
 #   define U_ASSERT(exp)
 #endif
diff --git a/libicu/cts_headers/ubidiimp.h b/libicu/cts_headers/ubidiimp.h
index 9746b2b..e48fc6f 100644
--- a/libicu/cts_headers/ubidiimp.h
+++ b/libicu/cts_headers/ubidiimp.h
@@ -26,6 +26,14 @@
 
 /* miscellaneous definitions ---------------------------------------------- */
 
+// ICU-20853=ICU-20935 Solaris #defines CS and ES in sys/regset.h
+#ifdef CS
+#   undef CS
+#endif
+#ifdef ES
+#   undef ES
+#endif
+
 typedef uint8_t DirProp;
 typedef uint32_t Flags;
 
@@ -451,26 +459,26 @@
 /* additional macros used by ubidi_open() - always allow allocation */
 #define getInitialDirPropsMemory(pBiDi, length) \
         ubidi_getMemory((BidiMemoryForAllocation *)&(pBiDi)->dirPropsMemory, &(pBiDi)->dirPropsSize, \
-                        TRUE, (length))
+                        true, (length))
 
 #define getInitialLevelsMemory(pBiDi, length) \
         ubidi_getMemory((BidiMemoryForAllocation *)&(pBiDi)->levelsMemory, &(pBiDi)->levelsSize, \
-                        TRUE, (length))
+                        true, (length))
 
 #define getInitialOpeningsMemory(pBiDi, length) \
         ubidi_getMemory((BidiMemoryForAllocation *)&(pBiDi)->openingsMemory, &(pBiDi)->openingsSize, \
-                        TRUE, (length)*sizeof(Opening))
+                        true, (length)*sizeof(Opening))
 
 #define getInitialParasMemory(pBiDi, length) \
         ubidi_getMemory((BidiMemoryForAllocation *)&(pBiDi)->parasMemory, &(pBiDi)->parasSize, \
-                        TRUE, (length)*sizeof(Para))
+                        true, (length)*sizeof(Para))
 
 #define getInitialRunsMemory(pBiDi, length) \
         ubidi_getMemory((BidiMemoryForAllocation *)&(pBiDi)->runsMemory, &(pBiDi)->runsSize, \
-                        TRUE, (length)*sizeof(Run))
+                        true, (length)*sizeof(Run))
 
 #define getInitialIsolatesMemory(pBiDi, length) \
         ubidi_getMemory((BidiMemoryForAllocation *)&(pBiDi)->isolatesMemory, &(pBiDi)->isolatesSize, \
-                        TRUE, (length)*sizeof(Isolate))
+                        true, (length)*sizeof(Isolate))
 
 #endif
diff --git a/libicu/cts_headers/ucase.h b/libicu/cts_headers/ucase.h
index b0a453b..a018f82 100644
--- a/libicu/cts_headers/ucase.h
+++ b/libicu/cts_headers/ucase.h
@@ -56,7 +56,8 @@
     UCASE_LOC_TURKISH,
     UCASE_LOC_LITHUANIAN,
     UCASE_LOC_GREEK,
-    UCASE_LOC_DUTCH
+    UCASE_LOC_DUTCH,
+    UCASE_LOC_ARMENIAN
 };
 
 /**
@@ -117,7 +118,7 @@
  * the string itself is added as well as part of its code points' closure.
  * It must be length>=0.
  *
- * @return TRUE if the string was found
+ * @return true if the string was found
  */
 U_CFUNC UBool U_EXPORT2
 ucase_addStringCaseClosure(const UChar *s, int32_t length, const USetAdder *sa);
diff --git a/libicu/cts_headers/ucase_props_data.h b/libicu/cts_headers/ucase_props_data.h
index 7c97230..aead6d5 100644
--- a/libicu/cts_headers/ucase_props_data.h
+++ b/libicu/cts_headers/ucase_props_data.h
@@ -13,7 +13,7 @@
 
 static const UVersionInfo ucase_props_dataVersion={0xd,0,0,0};
 
-static const int32_t ucase_props_indexes[UCASE_IX_TOP]={0x10,0x70ca,0x6098,0x687,0x172,0,0,0,0,0,0,0,0,0,0,3};
+static const int32_t ucase_props_indexes[UCASE_IX_TOP]={0x10,0x70c2,0x6098,0x683,0x172,0,0,0,0,0,0,0,0,0,0,3};
 
 static const uint16_t ucase_props_trieIndex[12356]={
 0x336,0x33e,0x346,0x34e,0x35c,0x364,0x36c,0x374,0x37c,0x384,0x38b,0x393,0x39b,0x3a3,0x3ab,0x3b3,
@@ -411,18 +411,18 @@
 0,0,0,0,0,4,4,4,4,0,0,0,0,0,0,0,
 0,0,0,0,0,0,4,0,0,4,4,0,0,0,0,0,
 0,0x64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,4,0,0,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,
-0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,
-0x179a,0x179a,0x179a,0x179a,0x179a,0x179a,0,0x179a,0,0,0,0,0,0x179a,0,0,
-0x17b9,0x17e9,0x1819,0x1849,0x1879,0x18a9,0x18d9,0x1909,0x1939,0x1969,0x1999,0x19c9,0x19f9,0x1a29,0x1a59,0x1a89,
-0x1ab9,0x1ae9,0x1b19,0x1b49,0x1b79,0x1ba9,0x1bd9,0x1c09,0x1c39,0x1c69,0x1c99,0x1cc9,0x1cf9,0x1d29,0x1d59,0x1d89,
-0x1db9,0x1de9,0x1e19,0x1e49,0x1e79,0x1ea9,0x1ed9,0x1f09,0x1f39,0x1f69,0x1f99,0,4,0x1fc9,0x1ff9,0x2029,
+0,4,0,0,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,
+0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,
+0x175a,0x175a,0x175a,0x175a,0x175a,0x175a,0,0x175a,0,0,0,0,0,0x175a,0,0,
+0x1779,0x17a9,0x17d9,0x1809,0x1839,0x1869,0x1899,0x18c9,0x18f9,0x1929,0x1959,0x1989,0x19b9,0x19e9,0x1a19,0x1a49,
+0x1a79,0x1aa9,0x1ad9,0x1b09,0x1b39,0x1b69,0x1b99,0x1bc9,0x1bf9,0x1c29,0x1c59,0x1c89,0x1cb9,0x1ce9,0x1d19,0x1d49,
+0x1d79,0x1da9,0x1dd9,0x1e09,0x1e39,0x1e69,0x1e99,0x1ec9,0x1ef9,0x1f29,0x1f59,0,4,0x1f89,0x1fb9,0x1fe9,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0x44,0x44,0x44,
-0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,
-0x207a,0x207a,0x207a,0x207a,0x207a,0x207a,0,0,0x2099,0x20c9,0x20f9,0x2129,0x2159,0x2189,0,0,
-0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,
-0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,0x205a,
+0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,
+0x203a,0x203a,0x203a,0x203a,0x203a,0x203a,0,0,0x2059,0x2089,0x20b9,0x20e9,0x2119,0x2149,0,0,
+0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,
+0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,4,4,0x64,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,4,
@@ -458,9 +458,9 @@
 0,0,0,0,4,4,4,4,4,4,4,4,0,0,4,0x64,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,4,4,4,4,4,4,0,0,
-0x21b9,0x21e9,0x2219,0x2249,0x2279,0x22c9,0x2319,0x2349,0x2379,0,0,0,0,0,0,0,
-0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,
-0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0x23aa,0,0,0x23aa,0x23aa,0x23aa,
+0x2179,0x21a9,0x21d9,0x2209,0x2239,0x2289,0x22d9,0x2309,0x2339,0,0,0,0,0,0,0,
+0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,
+0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0,0,0x236a,0x236a,0x236a,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0x44,0x44,0x44,0,0x64,0x64,0x64,0x64,0x64,0x64,0x44,0x44,0x64,0x64,0x64,0x64,
 0x44,0,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0,0,0,0,0x64,0,0,
@@ -470,10 +470,10 @@
 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
 5,5,0x25,5,5,5,5,5,5,5,5,1,1,1,1,1,
-1,1,1,1,1,1,1,1,5,0x23c9,1,1,1,0x23e9,1,1,
+1,1,1,1,1,1,1,1,5,0x2389,1,1,1,0x23a9,1,1,
 5,5,5,5,0x25,5,5,5,0x25,5,5,5,5,5,5,5,
 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x2409,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x23c9,1,
 1,1,1,1,1,1,0x21,1,1,1,1,5,5,5,5,5,
 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
 0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x64,0x64,0x64,0,0x44,0x64,0x64,0x44,0x64,
@@ -481,27 +481,27 @@
 0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xffb1,0x92,0xff91,
 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
-0x242a,0x2469,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
+0x23ea,0x2429,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
-0x92,0xff91,0x24a9,0x2529,0x25a9,0x2629,0x26a9,0x2729,1,1,0x275a,1,0x92,0xff91,0x92,0xff91,
+0x92,0xff91,0x2469,0x24e9,0x2569,0x25e9,0x2669,0x26e9,1,1,0x271a,1,0x92,0xff91,0x92,0xff91,
 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xffb1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x411,0x411,0x411,0x411,
 0x411,0x411,0x411,0x411,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0x411,0x411,0x411,0x411,
 0x411,0x411,0,0,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0,0,0x411,0x411,0x411,0x411,
 0x411,0x411,0x411,0x411,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0x411,0x411,0x411,0x411,
 0x411,0x411,0x411,0x411,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0x411,0x411,0x411,0x411,
-0x411,0x411,0,0,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0,0,0x27a9,0x411,0x2829,0x411,
-0x28d9,0x411,0x2989,0x411,0,0xfc12,0,0xfc12,0,0xfc12,0,0xfc12,0x411,0x411,0x411,0x411,
+0x411,0x411,0,0,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0,0,0x2769,0x411,0x27e9,0x411,
+0x2899,0x411,0x2949,0x411,0,0xfc12,0,0xfc12,0,0xfc12,0,0xfc12,0x411,0x411,0x411,0x411,
 0x411,0x411,0x411,0x411,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0x2511,0x2511,0x2b11,0x2b11,
-0x2b11,0x2b11,0x3211,0x3211,0x4011,0x4011,0x3811,0x3811,0x3f11,0x3f11,0,0,0x2a39,0x2aa9,0x2b19,0x2b89,
-0x2bf9,0x2c69,0x2cd9,0x2d49,0x2dbb,0x2e2b,0x2e9b,0x2f0b,0x2f7b,0x2feb,0x305b,0x30cb,0x3139,0x31a9,0x3219,0x3289,
-0x32f9,0x3369,0x33d9,0x3449,0x34bb,0x352b,0x359b,0x360b,0x367b,0x36eb,0x375b,0x37cb,0x3839,0x38a9,0x3919,0x3989,
-0x39f9,0x3a69,0x3ad9,0x3b49,0x3bbb,0x3c2b,0x3c9b,0x3d0b,0x3d7b,0x3deb,0x3e5b,0x3ecb,0x411,0x411,0x3f39,0x3fb9,
-0x4029,0,0x40a9,0x4129,0xfc12,0xfc12,0xdb12,0xdb12,0x41db,4,0x4249,4,4,4,0x4299,0x4319,
-0x4389,0,0x4409,0x4489,0xd512,0xd512,0xd512,0xd512,0x453b,4,4,4,0x411,0x411,0x45a9,0x4659,
-0,0,0x4729,0x47a9,0xfc12,0xfc12,0xce12,0xce12,0,4,4,4,0x411,0x411,0x4859,0x4909,
-0x49d9,0x391,0x4a59,0x4ad9,0xfc12,0xfc12,0xc812,0xc812,0xfc92,4,4,4,0,0,0x4b89,0x4c09,
-0x4c79,0,0x4cf9,0x4d79,0xc012,0xc012,0xc112,0xc112,0x4e2b,4,4,0,0,0,0,0,
+0x2b11,0x2b11,0x3211,0x3211,0x4011,0x4011,0x3811,0x3811,0x3f11,0x3f11,0,0,0x29f9,0x2a69,0x2ad9,0x2b49,
+0x2bb9,0x2c29,0x2c99,0x2d09,0x2d7b,0x2deb,0x2e5b,0x2ecb,0x2f3b,0x2fab,0x301b,0x308b,0x30f9,0x3169,0x31d9,0x3249,
+0x32b9,0x3329,0x3399,0x3409,0x347b,0x34eb,0x355b,0x35cb,0x363b,0x36ab,0x371b,0x378b,0x37f9,0x3869,0x38d9,0x3949,
+0x39b9,0x3a29,0x3a99,0x3b09,0x3b7b,0x3beb,0x3c5b,0x3ccb,0x3d3b,0x3dab,0x3e1b,0x3e8b,0x411,0x411,0x3ef9,0x3f79,
+0x3fe9,0,0x4069,0x40e9,0xfc12,0xfc12,0xdb12,0xdb12,0x419b,4,0x4209,4,4,4,0x4259,0x42d9,
+0x4349,0,0x43c9,0x4449,0xd512,0xd512,0xd512,0xd512,0x44fb,4,4,4,0x411,0x411,0x4569,0x4619,
+0,0,0x46e9,0x4769,0xfc12,0xfc12,0xce12,0xce12,0,4,4,4,0x411,0x411,0x4819,0x48c9,
+0x4999,0x391,0x4a19,0x4a99,0xfc12,0xfc12,0xc812,0xc812,0xfc92,4,4,4,0,0,0x4b49,0x4bc9,
+0x4c39,0,0x4cb9,0x4d39,0xc012,0xc012,0xc112,0xc112,0x4deb,4,4,0,0,0,0,0,
 0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,
 0,0,0,0,4,4,0,0,0,0,0,0,4,0,0,4,
 0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,
@@ -515,8 +515,8 @@
 0x64,0x44,0x64,0x64,0x64,0x64,0x64,0x64,0x44,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,
 0,0,1,2,2,2,1,1,2,2,2,1,0,2,0,0,
-0,2,2,2,2,2,0,0,0,0,0,0,2,0,0x4e9a,0,
-2,0,0x4eda,0x4f1a,2,2,0,1,2,2,0xe12,2,1,0,0,0,
+0,2,2,2,2,2,0,0,0,0,0,0,2,0,0x4e5a,0,
+2,0,0x4e9a,0x4eda,2,2,0,1,2,2,0xe12,2,1,0,0,0,
 0,1,0,0,1,1,2,2,0,0,0,0,0,2,1,1,
 0x21,0x21,0,0,0,0,0xf211,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0x812,0x812,0x812,0x812,0x812,0x812,0x812,0x812,
@@ -531,14 +531,14 @@
 0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,
 0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,
 0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,
-0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0,0x92,0xff91,0x4f5a,0x4f7a,0x4f9a,0x4fb9,0x4fd9,0x92,
-0xff91,0x92,0xff91,0x92,0xff91,0x4ffa,0x501a,0x503a,0x505a,1,0x92,0xff91,1,0x92,0xff91,1,
-1,1,1,1,0x25,5,0x507a,0x507a,0x92,0xff91,0x92,0xff91,1,0,0,0,
+0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0,0x92,0xff91,0x4f1a,0x4f3a,0x4f5a,0x4f79,0x4f99,0x92,
+0xff91,0x92,0xff91,0x92,0xff91,0x4fba,0x4fda,0x4ffa,0x501a,1,0x92,0xff91,1,0x92,0xff91,1,
+1,1,1,1,0x25,5,0x503a,0x503a,0x92,0xff91,0x92,0xff91,1,0,0,0,
 0,0,0,0x92,0xff91,0x92,0xff91,0x44,0x44,0x44,0x92,0xff91,0,0,0,0,
-0,0,0,0,0,0,0,0,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,
-0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,
-0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0x5099,0,0x5099,0,0,0,0,
-0,0x5099,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,
+0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,
+0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0,0x5059,0,0,0,0,
+0,0x5059,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
@@ -552,7 +552,7 @@
 0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0x92,0xff91,0x92,0xff91,
-0x92,0xff91,0x92,0xff91,0x92,0xff91,0x50ba,0x50f9,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
+0x92,0xff91,0x92,0xff91,0x92,0xff91,0x507a,0x50b9,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0,0x44,
 4,4,4,0,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0,4,
 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
@@ -564,11 +564,11 @@
 4,4,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
 1,1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
 0x92,0xff91,0x92,0xff91,5,1,1,1,1,1,1,1,1,0x92,0xff91,0x92,
-0xff91,0x513a,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,4,4,4,0x92,
-0xff91,0x515a,1,0,0x92,0xff91,0x92,0xff91,0x1811,1,0x92,0xff91,0x92,0xff91,0x92,0xff91,
-0x92,0xff91,0x92,0xff91,0x92,0xff91,0x517a,0x519a,0x51ba,0x51da,0x517a,1,0x51fa,0x521a,0x523a,0x525a,
+0xff91,0x50fa,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,4,4,4,0x92,
+0xff91,0x511a,1,0,0x92,0xff91,0x92,0xff91,0x1811,1,0x92,0xff91,0x92,0xff91,0x92,0xff91,
+0x92,0xff91,0x92,0xff91,0x92,0xff91,0x513a,0x515a,0x517a,0x519a,0x513a,1,0x51ba,0x51da,0x51fa,0x521a,
 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0,0,0x92,0xff91,
-0xe812,0x527a,0x529a,0x92,0xff91,0x92,0xff91,0,0,0,0,0,0,0,0,0,
+0xe812,0x523a,0x525a,0x92,0xff91,0x92,0xff91,0,0,0,0,0,0,0,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0x92,0xff91,0,
 5,5,1,0,0,0,0,0,0,0,4,0,0,0,0x64,0,
 0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -597,17 +597,17 @@
 0,0,0,0,4,4,0,0,0,0,0,4,4,0,0x64,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,0x52b9,1,1,1,1,1,1,1,4,5,5,5,5,
+1,1,1,0x5279,1,1,1,1,1,1,1,4,5,5,5,5,
 1,1,1,1,1,1,1,1,1,4,4,4,0,0,0,0,
-0x52d9,0x5309,0x5339,0x5369,0x5399,0x53c9,0x53f9,0x5429,0x5459,0x5489,0x54b9,0x54e9,0x5519,0x5549,0x5579,0x55a9,
-0x5bd9,0x5c09,0x5c39,0x5c69,0x5c99,0x5cc9,0x5cf9,0x5d29,0x5d59,0x5d89,0x5db9,0x5de9,0x5e19,0x5e49,0x5e79,0x5ea9,
-0x5ed9,0x5f09,0x5f39,0x5f69,0x5f99,0x5fc9,0x5ff9,0x6029,0x6059,0x6089,0x60b9,0x60e9,0x6119,0x6149,0x6179,0x61a9,
-0x55d9,0x5609,0x5639,0x5669,0x5699,0x56c9,0x56f9,0x5729,0x5759,0x5789,0x57b9,0x57e9,0x5819,0x5849,0x5879,0x58a9,
-0x58d9,0x5909,0x5939,0x5969,0x5999,0x59c9,0x59f9,0x5a29,0x5a59,0x5a89,0x5ab9,0x5ae9,0x5b19,0x5b49,0x5b79,0x5ba9,
+0x5299,0x52c9,0x52f9,0x5329,0x5359,0x5389,0x53b9,0x53e9,0x5419,0x5449,0x5479,0x54a9,0x54d9,0x5509,0x5539,0x5569,
+0x5b99,0x5bc9,0x5bf9,0x5c29,0x5c59,0x5c89,0x5cb9,0x5ce9,0x5d19,0x5d49,0x5d79,0x5da9,0x5dd9,0x5e09,0x5e39,0x5e69,
+0x5e99,0x5ec9,0x5ef9,0x5f29,0x5f59,0x5f89,0x5fb9,0x5fe9,0x6019,0x6049,0x6079,0x60a9,0x60d9,0x6109,0x6139,0x6169,
+0x5599,0x55c9,0x55f9,0x5629,0x5659,0x5689,0x56b9,0x56e9,0x5719,0x5749,0x5779,0x57a9,0x57d9,0x5809,0x5839,0x5869,
+0x5899,0x58c9,0x58f9,0x5929,0x5959,0x5989,0x59b9,0x59e9,0x5a19,0x5a49,0x5a79,0x5aa9,0x5ad9,0x5b09,0x5b39,0x5b69,
 0,0,0,0,0,4,0,0,4,0,0,0,0,0x64,0,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0x61d9,0x6259,0x62d9,0x6359,0x6409,0x64b9,0x6559,0,0,0,0,0,0,0,0,0,
-0,0,0,0x65f9,0x6679,0x66f9,0x6779,0x67f9,0,0,0,0,0,0,0x64,0,
+0x6199,0x6219,0x6299,0x6319,0x63c9,0x6479,0x6519,0,0,0,0,0,0,0,0,0,
+0,0,0,0x65b9,0x6639,0x66b9,0x6739,0x67b9,0,0,0,0,0,0,0x64,0,
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
 4,4,4,4,0,0,0,4,0,0,0,0,0,0,0,0,
@@ -791,7 +791,7 @@
 0,0,0,0
 };
 
-static const uint16_t ucase_props_exceptions[1671]={
+static const uint16_t ucase_props_exceptions[1667]={
 0xc850,0x20,2,0x130,0x131,0x4810,0x20,0x841,0x6b,1,0x212a,0x841,0x73,1,0x17f,0x5c50,
 0x20,2,0x130,0x131,0x844,0x4b,1,0x212a,0x844,0x53,1,0x17f,0x806,0x3bc,0x39c,0x841,
 0xe5,1,0x212b,0x8c0,1,0x2220,0x73,0x73,0x53,0x53,0x53,0x73,0x1e9e,0x844,0xc5,1,
@@ -815,88 +815,88 @@
 0x43e,1,0x1c82,0x841,0x441,1,0x1c83,0x841,0x442,2,0x1c84,0x1c85,0x841,0x44a,1,0x1c86,
 0x844,0x412,1,0x1c80,0x844,0x414,1,0x1c81,0x844,0x41e,1,0x1c82,0x844,0x421,1,0x1c83,
 0x844,0x422,2,0x1c84,0x1c85,0x844,0x42a,1,0x1c86,0x841,0x463,1,0x1c87,0x844,0x462,1,
-0x1c87,0x880,0x2220,0x565,0x582,0x535,0x552,0x535,0x582,0x810,0x1c60,0x80c,0x1c90,0x10d0,0x80c,0x1c91,
-0x10d1,0x80c,0x1c92,0x10d2,0x80c,0x1c93,0x10d3,0x80c,0x1c94,0x10d4,0x80c,0x1c95,0x10d5,0x80c,0x1c96,0x10d6,
-0x80c,0x1c97,0x10d7,0x80c,0x1c98,0x10d8,0x80c,0x1c99,0x10d9,0x80c,0x1c9a,0x10da,0x80c,0x1c9b,0x10db,0x80c,
-0x1c9c,0x10dc,0x80c,0x1c9d,0x10dd,0x80c,0x1c9e,0x10de,0x80c,0x1c9f,0x10df,0x80c,0x1ca0,0x10e0,0x80c,0x1ca1,
-0x10e1,0x80c,0x1ca2,0x10e2,0x80c,0x1ca3,0x10e3,0x80c,0x1ca4,0x10e4,0x80c,0x1ca5,0x10e5,0x80c,0x1ca6,0x10e6,
-0x80c,0x1ca7,0x10e7,0x80c,0x1ca8,0x10e8,0x80c,0x1ca9,0x10e9,0x80c,0x1caa,0x10ea,0x80c,0x1cab,0x10eb,0x80c,
-0x1cac,0x10ec,0x80c,0x1cad,0x10ed,0x80c,0x1cae,0x10ee,0x80c,0x1caf,0x10ef,0x80c,0x1cb0,0x10f0,0x80c,0x1cb1,
-0x10f1,0x80c,0x1cb2,0x10f2,0x80c,0x1cb3,0x10f3,0x80c,0x1cb4,0x10f4,0x80c,0x1cb5,0x10f5,0x80c,0x1cb6,0x10f6,
-0x80c,0x1cb7,0x10f7,0x80c,0x1cb8,0x10f8,0x80c,0x1cb9,0x10f9,0x80c,0x1cba,0x10fa,0x80c,0x1cbd,0x10fd,0x80c,
-0x1cbe,0x10fe,0x80c,0x1cbf,0x10ff,0xa10,0x97d0,0xa10,8,0x806,0x13f0,0x13f0,0x806,0x13f1,0x13f1,0x806,
-0x13f2,0x13f2,0x806,0x13f3,0x13f3,0x806,0x13f4,0x13f4,0x806,0x13f5,0x13f5,0x806,0x432,0x412,0x806,0x434,
-0x414,0x806,0x43e,0x41e,0x806,0x441,0x421,0x846,0x442,0x422,1,0x1c85,0x846,0x442,0x422,1,
-0x1c84,0x806,0x44a,0x42a,0x806,0x463,0x462,0x806,0xa64b,0xa64a,0xc10,0xbc0,0x810,0x8a04,0x810,0xee6,
-0x810,0x8a38,0x841,0x1e61,1,0x1e9b,0x844,0x1e60,1,0x1e9b,0x880,0x2220,0x68,0x331,0x48,0x331,
-0x48,0x331,0x880,0x2220,0x74,0x308,0x54,0x308,0x54,0x308,0x880,0x2220,0x77,0x30a,0x57,0x30a,
-0x57,0x30a,0x880,0x2220,0x79,0x30a,0x59,0x30a,0x59,0x30a,0x880,0x2220,0x61,0x2be,0x41,0x2be,
-0x41,0x2be,0x806,0x1e61,0x1e60,0xc90,0x1dbf,0x20,0x73,0x73,0x880,0x2220,0x3c5,0x313,0x3a5,0x313,
-0x3a5,0x313,0x880,0x3330,0x3c5,0x313,0x300,0x3a5,0x313,0x300,0x3a5,0x313,0x300,0x880,0x3330,0x3c5,
-0x313,0x301,0x3a5,0x313,0x301,0x3a5,0x313,0x301,0x880,0x3330,0x3c5,0x313,0x342,0x3a5,0x313,0x342,
-0x3a5,0x313,0x342,0x890,8,0x220,0x1f00,0x3b9,0x1f08,0x399,0x890,8,0x220,0x1f01,0x3b9,0x1f09,
-0x399,0x890,8,0x220,0x1f02,0x3b9,0x1f0a,0x399,0x890,8,0x220,0x1f03,0x3b9,0x1f0b,0x399,0x890,
-8,0x220,0x1f04,0x3b9,0x1f0c,0x399,0x890,8,0x220,0x1f05,0x3b9,0x1f0d,0x399,0x890,8,0x220,
-0x1f06,0x3b9,0x1f0e,0x399,0x890,8,0x220,0x1f07,0x3b9,0x1f0f,0x399,0xc90,8,0x220,0x1f00,0x3b9,
-0x1f08,0x399,0xc90,8,0x220,0x1f01,0x3b9,0x1f09,0x399,0xc90,8,0x220,0x1f02,0x3b9,0x1f0a,0x399,
-0xc90,8,0x220,0x1f03,0x3b9,0x1f0b,0x399,0xc90,8,0x220,0x1f04,0x3b9,0x1f0c,0x399,0xc90,8,
-0x220,0x1f05,0x3b9,0x1f0d,0x399,0xc90,8,0x220,0x1f06,0x3b9,0x1f0e,0x399,0xc90,8,0x220,0x1f07,
-0x3b9,0x1f0f,0x399,0x890,8,0x220,0x1f20,0x3b9,0x1f28,0x399,0x890,8,0x220,0x1f21,0x3b9,0x1f29,
-0x399,0x890,8,0x220,0x1f22,0x3b9,0x1f2a,0x399,0x890,8,0x220,0x1f23,0x3b9,0x1f2b,0x399,0x890,
-8,0x220,0x1f24,0x3b9,0x1f2c,0x399,0x890,8,0x220,0x1f25,0x3b9,0x1f2d,0x399,0x890,8,0x220,
-0x1f26,0x3b9,0x1f2e,0x399,0x890,8,0x220,0x1f27,0x3b9,0x1f2f,0x399,0xc90,8,0x220,0x1f20,0x3b9,
-0x1f28,0x399,0xc90,8,0x220,0x1f21,0x3b9,0x1f29,0x399,0xc90,8,0x220,0x1f22,0x3b9,0x1f2a,0x399,
-0xc90,8,0x220,0x1f23,0x3b9,0x1f2b,0x399,0xc90,8,0x220,0x1f24,0x3b9,0x1f2c,0x399,0xc90,8,
-0x220,0x1f25,0x3b9,0x1f2d,0x399,0xc90,8,0x220,0x1f26,0x3b9,0x1f2e,0x399,0xc90,8,0x220,0x1f27,
-0x3b9,0x1f2f,0x399,0x890,8,0x220,0x1f60,0x3b9,0x1f68,0x399,0x890,8,0x220,0x1f61,0x3b9,0x1f69,
-0x399,0x890,8,0x220,0x1f62,0x3b9,0x1f6a,0x399,0x890,8,0x220,0x1f63,0x3b9,0x1f6b,0x399,0x890,
-8,0x220,0x1f64,0x3b9,0x1f6c,0x399,0x890,8,0x220,0x1f65,0x3b9,0x1f6d,0x399,0x890,8,0x220,
-0x1f66,0x3b9,0x1f6e,0x399,0x890,8,0x220,0x1f67,0x3b9,0x1f6f,0x399,0xc90,8,0x220,0x1f60,0x3b9,
-0x1f68,0x399,0xc90,8,0x220,0x1f61,0x3b9,0x1f69,0x399,0xc90,8,0x220,0x1f62,0x3b9,0x1f6a,0x399,
-0xc90,8,0x220,0x1f63,0x3b9,0x1f6b,0x399,0xc90,8,0x220,0x1f64,0x3b9,0x1f6c,0x399,0xc90,8,
-0x220,0x1f65,0x3b9,0x1f6d,0x399,0xc90,8,0x220,0x1f66,0x3b9,0x1f6e,0x399,0xc90,8,0x220,0x1f67,
-0x3b9,0x1f6f,0x399,0x880,0x2220,0x1f70,0x3b9,0x1fba,0x399,0x1fba,0x345,0x890,9,0x220,0x3b1,0x3b9,
-0x391,0x399,0x880,0x2220,0x3ac,0x3b9,0x386,0x399,0x386,0x345,0x880,0x2220,0x3b1,0x342,0x391,0x342,
-0x391,0x342,0x880,0x3330,0x3b1,0x342,0x3b9,0x391,0x342,0x399,0x391,0x342,0x345,0xc90,9,0x220,
-0x3b1,0x3b9,0x391,0x399,0x846,0x3b9,0x399,1,0x345,0x880,0x2220,0x1f74,0x3b9,0x1fca,0x399,0x1fca,
-0x345,0x890,9,0x220,0x3b7,0x3b9,0x397,0x399,0x880,0x2220,0x3ae,0x3b9,0x389,0x399,0x389,0x345,
-0x880,0x2220,0x3b7,0x342,0x397,0x342,0x397,0x342,0x880,0x3330,0x3b7,0x342,0x3b9,0x397,0x342,0x399,
-0x397,0x342,0x345,0xc90,9,0x220,0x3b7,0x3b9,0x397,0x399,0x880,0x3330,0x3b9,0x308,0x300,0x399,
-0x308,0x300,0x399,0x308,0x300,0x8c0,1,0x3330,0x3b9,0x308,0x301,0x399,0x308,0x301,0x399,0x308,
-0x301,0x390,0x880,0x2220,0x3b9,0x342,0x399,0x342,0x399,0x342,0x880,0x3330,0x3b9,0x308,0x342,0x399,
-0x308,0x342,0x399,0x308,0x342,0x880,0x3330,0x3c5,0x308,0x300,0x3a5,0x308,0x300,0x3a5,0x308,0x300,
-0x8c0,1,0x3330,0x3c5,0x308,0x301,0x3a5,0x308,0x301,0x3a5,0x308,0x301,0x3b0,0x880,0x2220,0x3c1,
-0x313,0x3a1,0x313,0x3a1,0x313,0x880,0x2220,0x3c5,0x342,0x3a5,0x342,0x3a5,0x342,0x880,0x3330,0x3c5,
-0x308,0x342,0x3a5,0x308,0x342,0x3a5,0x308,0x342,0x880,0x2220,0x1f7c,0x3b9,0x1ffa,0x399,0x1ffa,0x345,
-0x890,9,0x220,0x3c9,0x3b9,0x3a9,0x399,0x880,0x2220,0x3ce,0x3b9,0x38f,0x399,0x38f,0x345,0x880,
-0x2220,0x3c9,0x342,0x3a9,0x342,0x3a9,0x342,0x880,0x3330,0x3c9,0x342,0x3b9,0x3a9,0x342,0x399,0x3a9,
-0x342,0x345,0xc90,9,0x220,0x3c9,0x3b9,0x3a9,0x399,0xc50,0x1d5d,1,0x3a9,0xc50,0x20bf,1,
-0x4b,0xc50,0x2046,1,0xc5,0xc10,0x29f7,0xc10,0xee6,0xc10,0x29e7,0xc10,0x2a2b,0xc10,0x2a28,0xc10,
-0x2a1c,0xc10,0x29fd,0xc10,0x2a1f,0xc10,0x2a1e,0xc10,0x2a3f,0xc10,0x1c60,0x841,0xa64b,1,0x1c88,0x844,
-0xa64a,1,0x1c88,0xc10,0x8a04,0xc10,0xa528,0xc10,0xa544,0xc10,0xa54f,0xc10,0xa54b,0xc10,0xa541,0xc10,
-0xa512,0xc10,0xa52a,0xc10,0xa515,0x810,0x3a0,0xc10,0xa543,0xc10,0x8a38,0xc10,0x3a0,0x806,0x13a0,0x13a0,
-0x806,0x13a1,0x13a1,0x806,0x13a2,0x13a2,0x806,0x13a3,0x13a3,0x806,0x13a4,0x13a4,0x806,0x13a5,0x13a5,0x806,
-0x13a6,0x13a6,0x806,0x13a7,0x13a7,0x806,0x13a8,0x13a8,0x806,0x13a9,0x13a9,0x806,0x13aa,0x13aa,0x806,0x13ab,
-0x13ab,0x806,0x13ac,0x13ac,0x806,0x13ad,0x13ad,0x806,0x13ae,0x13ae,0x806,0x13af,0x13af,0x806,0x13b0,0x13b0,
-0x806,0x13b1,0x13b1,0x806,0x13b2,0x13b2,0x806,0x13b3,0x13b3,0x806,0x13b4,0x13b4,0x806,0x13b5,0x13b5,0x806,
-0x13b6,0x13b6,0x806,0x13b7,0x13b7,0x806,0x13b8,0x13b8,0x806,0x13b9,0x13b9,0x806,0x13ba,0x13ba,0x806,0x13bb,
-0x13bb,0x806,0x13bc,0x13bc,0x806,0x13bd,0x13bd,0x806,0x13be,0x13be,0x806,0x13bf,0x13bf,0x806,0x13c0,0x13c0,
-0x806,0x13c1,0x13c1,0x806,0x13c2,0x13c2,0x806,0x13c3,0x13c3,0x806,0x13c4,0x13c4,0x806,0x13c5,0x13c5,0x806,
-0x13c6,0x13c6,0x806,0x13c7,0x13c7,0x806,0x13c8,0x13c8,0x806,0x13c9,0x13c9,0x806,0x13ca,0x13ca,0x806,0x13cb,
-0x13cb,0x806,0x13cc,0x13cc,0x806,0x13cd,0x13cd,0x806,0x13ce,0x13ce,0x806,0x13cf,0x13cf,0x806,0x13d0,0x13d0,
-0x806,0x13d1,0x13d1,0x806,0x13d2,0x13d2,0x806,0x13d3,0x13d3,0x806,0x13d4,0x13d4,0x806,0x13d5,0x13d5,0x806,
-0x13d6,0x13d6,0x806,0x13d7,0x13d7,0x806,0x13d8,0x13d8,0x806,0x13d9,0x13d9,0x806,0x13da,0x13da,0x806,0x13db,
-0x13db,0x806,0x13dc,0x13dc,0x806,0x13dd,0x13dd,0x806,0x13de,0x13de,0x806,0x13df,0x13df,0x806,0x13e0,0x13e0,
-0x806,0x13e1,0x13e1,0x806,0x13e2,0x13e2,0x806,0x13e3,0x13e3,0x806,0x13e4,0x13e4,0x806,0x13e5,0x13e5,0x806,
-0x13e6,0x13e6,0x806,0x13e7,0x13e7,0x806,0x13e8,0x13e8,0x806,0x13e9,0x13e9,0x806,0x13ea,0x13ea,0x806,0x13eb,
-0x13eb,0x806,0x13ec,0x13ec,0x806,0x13ed,0x13ed,0x806,0x13ee,0x13ee,0x806,0x13ef,0x13ef,0x880,0x2220,0x66,
-0x66,0x46,0x46,0x46,0x66,0x880,0x2220,0x66,0x69,0x46,0x49,0x46,0x69,0x880,0x2220,0x66,
-0x6c,0x46,0x4c,0x46,0x6c,0x880,0x3330,0x66,0x66,0x69,0x46,0x46,0x49,0x46,0x66,0x69,
-0x880,0x3330,0x66,0x66,0x6c,0x46,0x46,0x4c,0x46,0x66,0x6c,0x8c0,1,0x2220,0x73,0x74,
-0x53,0x54,0x53,0x74,0xfb06,0x8c0,1,0x2220,0x73,0x74,0x53,0x54,0x53,0x74,0xfb05,0x880,
-0x2220,0x574,0x576,0x544,0x546,0x544,0x576,0x880,0x2220,0x574,0x565,0x544,0x535,0x544,0x565,0x880,
-0x2220,0x574,0x56b,0x544,0x53b,0x544,0x56b,0x880,0x2220,0x57e,0x576,0x54e,0x546,0x54e,0x576,0x880,
-0x2220,0x574,0x56d,0x544,0x53d,0x544,0x56d
+0x1c87,0x4880,0x20,0x565,0x582,0x810,0x1c60,0x80c,0x1c90,0x10d0,0x80c,0x1c91,0x10d1,0x80c,0x1c92,0x10d2,
+0x80c,0x1c93,0x10d3,0x80c,0x1c94,0x10d4,0x80c,0x1c95,0x10d5,0x80c,0x1c96,0x10d6,0x80c,0x1c97,0x10d7,0x80c,
+0x1c98,0x10d8,0x80c,0x1c99,0x10d9,0x80c,0x1c9a,0x10da,0x80c,0x1c9b,0x10db,0x80c,0x1c9c,0x10dc,0x80c,0x1c9d,
+0x10dd,0x80c,0x1c9e,0x10de,0x80c,0x1c9f,0x10df,0x80c,0x1ca0,0x10e0,0x80c,0x1ca1,0x10e1,0x80c,0x1ca2,0x10e2,
+0x80c,0x1ca3,0x10e3,0x80c,0x1ca4,0x10e4,0x80c,0x1ca5,0x10e5,0x80c,0x1ca6,0x10e6,0x80c,0x1ca7,0x10e7,0x80c,
+0x1ca8,0x10e8,0x80c,0x1ca9,0x10e9,0x80c,0x1caa,0x10ea,0x80c,0x1cab,0x10eb,0x80c,0x1cac,0x10ec,0x80c,0x1cad,
+0x10ed,0x80c,0x1cae,0x10ee,0x80c,0x1caf,0x10ef,0x80c,0x1cb0,0x10f0,0x80c,0x1cb1,0x10f1,0x80c,0x1cb2,0x10f2,
+0x80c,0x1cb3,0x10f3,0x80c,0x1cb4,0x10f4,0x80c,0x1cb5,0x10f5,0x80c,0x1cb6,0x10f6,0x80c,0x1cb7,0x10f7,0x80c,
+0x1cb8,0x10f8,0x80c,0x1cb9,0x10f9,0x80c,0x1cba,0x10fa,0x80c,0x1cbd,0x10fd,0x80c,0x1cbe,0x10fe,0x80c,0x1cbf,
+0x10ff,0xa10,0x97d0,0xa10,8,0x806,0x13f0,0x13f0,0x806,0x13f1,0x13f1,0x806,0x13f2,0x13f2,0x806,0x13f3,
+0x13f3,0x806,0x13f4,0x13f4,0x806,0x13f5,0x13f5,0x806,0x432,0x412,0x806,0x434,0x414,0x806,0x43e,0x41e,
+0x806,0x441,0x421,0x846,0x442,0x422,1,0x1c85,0x846,0x442,0x422,1,0x1c84,0x806,0x44a,0x42a,
+0x806,0x463,0x462,0x806,0xa64b,0xa64a,0xc10,0xbc0,0x810,0x8a04,0x810,0xee6,0x810,0x8a38,0x841,0x1e61,
+1,0x1e9b,0x844,0x1e60,1,0x1e9b,0x880,0x2220,0x68,0x331,0x48,0x331,0x48,0x331,0x880,0x2220,
+0x74,0x308,0x54,0x308,0x54,0x308,0x880,0x2220,0x77,0x30a,0x57,0x30a,0x57,0x30a,0x880,0x2220,
+0x79,0x30a,0x59,0x30a,0x59,0x30a,0x880,0x2220,0x61,0x2be,0x41,0x2be,0x41,0x2be,0x806,0x1e61,
+0x1e60,0xc90,0x1dbf,0x20,0x73,0x73,0x880,0x2220,0x3c5,0x313,0x3a5,0x313,0x3a5,0x313,0x880,0x3330,
+0x3c5,0x313,0x300,0x3a5,0x313,0x300,0x3a5,0x313,0x300,0x880,0x3330,0x3c5,0x313,0x301,0x3a5,0x313,
+0x301,0x3a5,0x313,0x301,0x880,0x3330,0x3c5,0x313,0x342,0x3a5,0x313,0x342,0x3a5,0x313,0x342,0x890,
+8,0x220,0x1f00,0x3b9,0x1f08,0x399,0x890,8,0x220,0x1f01,0x3b9,0x1f09,0x399,0x890,8,0x220,
+0x1f02,0x3b9,0x1f0a,0x399,0x890,8,0x220,0x1f03,0x3b9,0x1f0b,0x399,0x890,8,0x220,0x1f04,0x3b9,
+0x1f0c,0x399,0x890,8,0x220,0x1f05,0x3b9,0x1f0d,0x399,0x890,8,0x220,0x1f06,0x3b9,0x1f0e,0x399,
+0x890,8,0x220,0x1f07,0x3b9,0x1f0f,0x399,0xc90,8,0x220,0x1f00,0x3b9,0x1f08,0x399,0xc90,8,
+0x220,0x1f01,0x3b9,0x1f09,0x399,0xc90,8,0x220,0x1f02,0x3b9,0x1f0a,0x399,0xc90,8,0x220,0x1f03,
+0x3b9,0x1f0b,0x399,0xc90,8,0x220,0x1f04,0x3b9,0x1f0c,0x399,0xc90,8,0x220,0x1f05,0x3b9,0x1f0d,
+0x399,0xc90,8,0x220,0x1f06,0x3b9,0x1f0e,0x399,0xc90,8,0x220,0x1f07,0x3b9,0x1f0f,0x399,0x890,
+8,0x220,0x1f20,0x3b9,0x1f28,0x399,0x890,8,0x220,0x1f21,0x3b9,0x1f29,0x399,0x890,8,0x220,
+0x1f22,0x3b9,0x1f2a,0x399,0x890,8,0x220,0x1f23,0x3b9,0x1f2b,0x399,0x890,8,0x220,0x1f24,0x3b9,
+0x1f2c,0x399,0x890,8,0x220,0x1f25,0x3b9,0x1f2d,0x399,0x890,8,0x220,0x1f26,0x3b9,0x1f2e,0x399,
+0x890,8,0x220,0x1f27,0x3b9,0x1f2f,0x399,0xc90,8,0x220,0x1f20,0x3b9,0x1f28,0x399,0xc90,8,
+0x220,0x1f21,0x3b9,0x1f29,0x399,0xc90,8,0x220,0x1f22,0x3b9,0x1f2a,0x399,0xc90,8,0x220,0x1f23,
+0x3b9,0x1f2b,0x399,0xc90,8,0x220,0x1f24,0x3b9,0x1f2c,0x399,0xc90,8,0x220,0x1f25,0x3b9,0x1f2d,
+0x399,0xc90,8,0x220,0x1f26,0x3b9,0x1f2e,0x399,0xc90,8,0x220,0x1f27,0x3b9,0x1f2f,0x399,0x890,
+8,0x220,0x1f60,0x3b9,0x1f68,0x399,0x890,8,0x220,0x1f61,0x3b9,0x1f69,0x399,0x890,8,0x220,
+0x1f62,0x3b9,0x1f6a,0x399,0x890,8,0x220,0x1f63,0x3b9,0x1f6b,0x399,0x890,8,0x220,0x1f64,0x3b9,
+0x1f6c,0x399,0x890,8,0x220,0x1f65,0x3b9,0x1f6d,0x399,0x890,8,0x220,0x1f66,0x3b9,0x1f6e,0x399,
+0x890,8,0x220,0x1f67,0x3b9,0x1f6f,0x399,0xc90,8,0x220,0x1f60,0x3b9,0x1f68,0x399,0xc90,8,
+0x220,0x1f61,0x3b9,0x1f69,0x399,0xc90,8,0x220,0x1f62,0x3b9,0x1f6a,0x399,0xc90,8,0x220,0x1f63,
+0x3b9,0x1f6b,0x399,0xc90,8,0x220,0x1f64,0x3b9,0x1f6c,0x399,0xc90,8,0x220,0x1f65,0x3b9,0x1f6d,
+0x399,0xc90,8,0x220,0x1f66,0x3b9,0x1f6e,0x399,0xc90,8,0x220,0x1f67,0x3b9,0x1f6f,0x399,0x880,
+0x2220,0x1f70,0x3b9,0x1fba,0x399,0x1fba,0x345,0x890,9,0x220,0x3b1,0x3b9,0x391,0x399,0x880,0x2220,
+0x3ac,0x3b9,0x386,0x399,0x386,0x345,0x880,0x2220,0x3b1,0x342,0x391,0x342,0x391,0x342,0x880,0x3330,
+0x3b1,0x342,0x3b9,0x391,0x342,0x399,0x391,0x342,0x345,0xc90,9,0x220,0x3b1,0x3b9,0x391,0x399,
+0x846,0x3b9,0x399,1,0x345,0x880,0x2220,0x1f74,0x3b9,0x1fca,0x399,0x1fca,0x345,0x890,9,0x220,
+0x3b7,0x3b9,0x397,0x399,0x880,0x2220,0x3ae,0x3b9,0x389,0x399,0x389,0x345,0x880,0x2220,0x3b7,0x342,
+0x397,0x342,0x397,0x342,0x880,0x3330,0x3b7,0x342,0x3b9,0x397,0x342,0x399,0x397,0x342,0x345,0xc90,
+9,0x220,0x3b7,0x3b9,0x397,0x399,0x880,0x3330,0x3b9,0x308,0x300,0x399,0x308,0x300,0x399,0x308,
+0x300,0x8c0,1,0x3330,0x3b9,0x308,0x301,0x399,0x308,0x301,0x399,0x308,0x301,0x390,0x880,0x2220,
+0x3b9,0x342,0x399,0x342,0x399,0x342,0x880,0x3330,0x3b9,0x308,0x342,0x399,0x308,0x342,0x399,0x308,
+0x342,0x880,0x3330,0x3c5,0x308,0x300,0x3a5,0x308,0x300,0x3a5,0x308,0x300,0x8c0,1,0x3330,0x3c5,
+0x308,0x301,0x3a5,0x308,0x301,0x3a5,0x308,0x301,0x3b0,0x880,0x2220,0x3c1,0x313,0x3a1,0x313,0x3a1,
+0x313,0x880,0x2220,0x3c5,0x342,0x3a5,0x342,0x3a5,0x342,0x880,0x3330,0x3c5,0x308,0x342,0x3a5,0x308,
+0x342,0x3a5,0x308,0x342,0x880,0x2220,0x1f7c,0x3b9,0x1ffa,0x399,0x1ffa,0x345,0x890,9,0x220,0x3c9,
+0x3b9,0x3a9,0x399,0x880,0x2220,0x3ce,0x3b9,0x38f,0x399,0x38f,0x345,0x880,0x2220,0x3c9,0x342,0x3a9,
+0x342,0x3a9,0x342,0x880,0x3330,0x3c9,0x342,0x3b9,0x3a9,0x342,0x399,0x3a9,0x342,0x345,0xc90,9,
+0x220,0x3c9,0x3b9,0x3a9,0x399,0xc50,0x1d5d,1,0x3a9,0xc50,0x20bf,1,0x4b,0xc50,0x2046,1,
+0xc5,0xc10,0x29f7,0xc10,0xee6,0xc10,0x29e7,0xc10,0x2a2b,0xc10,0x2a28,0xc10,0x2a1c,0xc10,0x29fd,0xc10,
+0x2a1f,0xc10,0x2a1e,0xc10,0x2a3f,0xc10,0x1c60,0x841,0xa64b,1,0x1c88,0x844,0xa64a,1,0x1c88,0xc10,
+0x8a04,0xc10,0xa528,0xc10,0xa544,0xc10,0xa54f,0xc10,0xa54b,0xc10,0xa541,0xc10,0xa512,0xc10,0xa52a,0xc10,
+0xa515,0x810,0x3a0,0xc10,0xa543,0xc10,0x8a38,0xc10,0x3a0,0x806,0x13a0,0x13a0,0x806,0x13a1,0x13a1,0x806,
+0x13a2,0x13a2,0x806,0x13a3,0x13a3,0x806,0x13a4,0x13a4,0x806,0x13a5,0x13a5,0x806,0x13a6,0x13a6,0x806,0x13a7,
+0x13a7,0x806,0x13a8,0x13a8,0x806,0x13a9,0x13a9,0x806,0x13aa,0x13aa,0x806,0x13ab,0x13ab,0x806,0x13ac,0x13ac,
+0x806,0x13ad,0x13ad,0x806,0x13ae,0x13ae,0x806,0x13af,0x13af,0x806,0x13b0,0x13b0,0x806,0x13b1,0x13b1,0x806,
+0x13b2,0x13b2,0x806,0x13b3,0x13b3,0x806,0x13b4,0x13b4,0x806,0x13b5,0x13b5,0x806,0x13b6,0x13b6,0x806,0x13b7,
+0x13b7,0x806,0x13b8,0x13b8,0x806,0x13b9,0x13b9,0x806,0x13ba,0x13ba,0x806,0x13bb,0x13bb,0x806,0x13bc,0x13bc,
+0x806,0x13bd,0x13bd,0x806,0x13be,0x13be,0x806,0x13bf,0x13bf,0x806,0x13c0,0x13c0,0x806,0x13c1,0x13c1,0x806,
+0x13c2,0x13c2,0x806,0x13c3,0x13c3,0x806,0x13c4,0x13c4,0x806,0x13c5,0x13c5,0x806,0x13c6,0x13c6,0x806,0x13c7,
+0x13c7,0x806,0x13c8,0x13c8,0x806,0x13c9,0x13c9,0x806,0x13ca,0x13ca,0x806,0x13cb,0x13cb,0x806,0x13cc,0x13cc,
+0x806,0x13cd,0x13cd,0x806,0x13ce,0x13ce,0x806,0x13cf,0x13cf,0x806,0x13d0,0x13d0,0x806,0x13d1,0x13d1,0x806,
+0x13d2,0x13d2,0x806,0x13d3,0x13d3,0x806,0x13d4,0x13d4,0x806,0x13d5,0x13d5,0x806,0x13d6,0x13d6,0x806,0x13d7,
+0x13d7,0x806,0x13d8,0x13d8,0x806,0x13d9,0x13d9,0x806,0x13da,0x13da,0x806,0x13db,0x13db,0x806,0x13dc,0x13dc,
+0x806,0x13dd,0x13dd,0x806,0x13de,0x13de,0x806,0x13df,0x13df,0x806,0x13e0,0x13e0,0x806,0x13e1,0x13e1,0x806,
+0x13e2,0x13e2,0x806,0x13e3,0x13e3,0x806,0x13e4,0x13e4,0x806,0x13e5,0x13e5,0x806,0x13e6,0x13e6,0x806,0x13e7,
+0x13e7,0x806,0x13e8,0x13e8,0x806,0x13e9,0x13e9,0x806,0x13ea,0x13ea,0x806,0x13eb,0x13eb,0x806,0x13ec,0x13ec,
+0x806,0x13ed,0x13ed,0x806,0x13ee,0x13ee,0x806,0x13ef,0x13ef,0x880,0x2220,0x66,0x66,0x46,0x46,0x46,
+0x66,0x880,0x2220,0x66,0x69,0x46,0x49,0x46,0x69,0x880,0x2220,0x66,0x6c,0x46,0x4c,0x46,
+0x6c,0x880,0x3330,0x66,0x66,0x69,0x46,0x46,0x49,0x46,0x66,0x69,0x880,0x3330,0x66,0x66,
+0x6c,0x46,0x46,0x4c,0x46,0x66,0x6c,0x8c0,1,0x2220,0x73,0x74,0x53,0x54,0x53,0x74,
+0xfb06,0x8c0,1,0x2220,0x73,0x74,0x53,0x54,0x53,0x74,0xfb05,0x880,0x2220,0x574,0x576,0x544,
+0x546,0x544,0x576,0x880,0x2220,0x574,0x565,0x544,0x535,0x544,0x565,0x880,0x2220,0x574,0x56b,0x544,
+0x53b,0x544,0x56b,0x880,0x2220,0x57e,0x576,0x54e,0x546,0x54e,0x576,0x880,0x2220,0x574,0x56d,0x544,
+0x53d,0x544,0x56d
 };
 
 static const uint16_t ucase_props_unfold[370]={
diff --git a/libicu/cts_headers/ucasemap_imp.h b/libicu/cts_headers/ucasemap_imp.h
index 7788fd9..e17a0ae 100644
--- a/libicu/cts_headers/ucasemap_imp.h
+++ b/libicu/cts_headers/ucasemap_imp.h
@@ -68,15 +68,15 @@
 class ByteSink;
 class Locale;               // unicode/locid.h
 
-/** Returns TRUE if the options are valid. Otherwise FALSE, and sets an error. */
+/** Returns true if the options are valid. Otherwise false, and sets an error. */
 inline UBool ustrcase_checkTitleAdjustmentOptions(uint32_t options, UErrorCode &errorCode) {
-    if (U_FAILURE(errorCode)) { return FALSE; }
+    if (U_FAILURE(errorCode)) { return false; }
     if ((options & U_TITLECASE_ADJUSTMENT_MASK) == U_TITLECASE_ADJUSTMENT_MASK) {
         // Both options together.
         errorCode = U_ILLEGAL_ARGUMENT_ERROR;
-        return FALSE;
+        return false;
     }
-    return TRUE;
+    return true;
 }
 
 inline UBool ustrcase_isLNS(UChar32 c) {
diff --git a/libicu/cts_headers/ucln_cmn.h b/libicu/cts_headers/ucln_cmn.h
index b837fb9..44b73e9 100644
--- a/libicu/cts_headers/ucln_cmn.h
+++ b/libicu/cts_headers/ucln_cmn.h
@@ -38,6 +38,8 @@
     UCLN_COMMON_SERVICE,
     UCLN_COMMON_LOCALE_KEY_TYPE,
     UCLN_COMMON_LOCALE,
+    UCLN_COMMON_LOCALE_ALIAS,
+    UCLN_COMMON_LOCALE_KNOWN_CANONICALIZED,
     UCLN_COMMON_LOCALE_AVAILABLE,
     UCLN_COMMON_LIKELY_SUBTAGS,
     UCLN_COMMON_LOCALE_DISTANCE,
diff --git a/libicu/cts_headers/ucln_imp.h b/libicu/cts_headers/ucln_imp.h
index 1bfcde0..63a54c8 100644
--- a/libicu/cts_headers/ucln_imp.h
+++ b/libicu/cts_headers/ucln_imp.h
@@ -78,7 +78,7 @@
  * Use the ANSI C 'atexit' function. Note that this mechanism does not
  * guarantee the order of cleanup relative to other users of ICU!
  */
-static UBool gAutoCleanRegistered = FALSE;
+static UBool gAutoCleanRegistered = false;
 
 static void ucln_atexit_handler()
 {
@@ -88,7 +88,7 @@
 static void ucln_registerAutomaticCleanup()
 {
     if(!gAutoCleanRegistered) {
-        gAutoCleanRegistered = TRUE;
+        gAutoCleanRegistered = true;
         atexit(&ucln_atexit_handler);
     }
 }
@@ -135,7 +135,7 @@
  */
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 {
-    BOOL status = TRUE;
+    BOOL status = true;
 
     switch(fdwReason) {
         case DLL_PROCESS_ATTACH:
diff --git a/libicu/cts_headers/ucnv_bld.h b/libicu/cts_headers/ucnv_bld.h
index 18b3795..43e6c09 100644
--- a/libicu/cts_headers/ucnv_bld.h
+++ b/libicu/cts_headers/ucnv_bld.h
@@ -66,8 +66,8 @@
 
 typedef struct UConverterStaticData {   /* +offset: size */
     uint32_t structSize;                /* +0: 4 Size of this structure */
-    
-    char name 
+
+    char name
       [UCNV_MAX_CONVERTER_NAME_LENGTH]; /* +4: 60  internal name of the converter- invariant chars */
 
     int32_t codepage;               /* +64: 4 codepage # (now IBM-$codepage) */
@@ -80,7 +80,7 @@
 
     uint8_t subChar[UCNV_MAX_SUBCHAR_LEN]; /* +72: 4  [note:  4 and 8 byte boundary] */
     int8_t subCharLen;              /* +76: 1 */
-    
+
     uint8_t hasToUnicodeFallback;   /* +77: 1 UBool needs to be changed to UBool to be consistent across platform */
     uint8_t hasFromUnicodeFallback; /* +78: 1 */
     uint8_t unicodeMask;            /* +79: 1  bit 0: has supplementary  bit 1: has single surrogates */
@@ -101,8 +101,8 @@
 
     const UConverterStaticData *staticData; /* pointer to the static (non changing) data. */
 
-    UBool                sharedDataCached;   /* TRUE:  shared data is in cache, don't destroy on ucnv_close() if 0 ref.  FALSE: shared data isn't in the cache, do attempt to clean it up if the ref is 0 */
-    /** If FALSE, then referenceCounter is not used. Must not change after initialization. */
+    UBool                sharedDataCached;   /* true:  shared data is in cache, don't destroy on ucnv_close() if 0 ref.  false: shared data isn't in the cache, do attempt to clean it up if the ref is 0 */
+    /** If false, then referenceCounter is not used. Must not change after initialization. */
     UBool isReferenceCounted;
 
     const UConverterImpl *impl;     /* vtable-style struct of mostly function pointers */
@@ -128,7 +128,7 @@
 #define UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(pStaticData, pImpl) \
     { \
         sizeof(UConverterSharedData), ~((uint32_t)0), \
-        NULL, pStaticData, FALSE, FALSE, pImpl, \
+        NULL, pStaticData, false, false, pImpl, \
         0, UCNV_MBCS_TABLE_INITIALIZER \
     }
 
@@ -181,9 +181,9 @@
 
     uint32_t options; /* options flags from UConverterOpen, may contain additional bits */
 
-    UBool sharedDataIsCached;  /* TRUE:  shared data is in cache, don't destroy on ucnv_close() if 0 ref.  FALSE: shared data isn't in the cache, do attempt to clean it up if the ref is 0 */
-    UBool isCopyLocal;  /* TRUE if UConverter is not owned and not released in ucnv_close() (stack-allocated, safeClone(), etc.) */
-    UBool isExtraLocal; /* TRUE if extraInfo is not owned and not released in ucnv_close() (stack-allocated, safeClone(), etc.) */
+    UBool sharedDataIsCached;  /* true:  shared data is in cache, don't destroy on ucnv_close() if 0 ref.  false: shared data isn't in the cache, do attempt to clean it up if the ref is 0 */
+    UBool isCopyLocal;  /* true if UConverter is not owned and not released in ucnv_close() (stack-allocated, safeClone(), etc.) */
+    UBool isExtraLocal; /* true if extraInfo is not owned and not released in ucnv_close() (stack-allocated, safeClone(), etc.) */
 
     UBool  useFallback;
     int8_t toULength;                   /* number of bytes in toUBytes */
@@ -289,7 +289,7 @@
           UErrorCode *pErrorCode);
 
 U_CAPI void U_EXPORT2
-ucnv_enableCleanup();
+ucnv_enableCleanup(void);
 
 #endif
 
diff --git a/libicu/cts_headers/ucnv_cnv.h b/libicu/cts_headers/ucnv_cnv.h
index 2eed2c6..59be8bd 100644
--- a/libicu/cts_headers/ucnv_cnv.h
+++ b/libicu/cts_headers/ucnv_cnv.h
@@ -59,7 +59,7 @@
 } UConverterLoadArgs;
 
 #define UCNV_LOAD_ARGS_INITIALIZER \
-    { (int32_t)sizeof(UConverterLoadArgs), 0, FALSE, FALSE, 0, 0, NULL, NULL, NULL }
+    { (int32_t)sizeof(UConverterLoadArgs), 0, false, false, 0, 0, NULL, NULL, NULL }
 
 typedef void (*UConverterLoad) (UConverterSharedData *sharedData,
                                 UConverterLoadArgs *pArgs,
@@ -267,8 +267,8 @@
 U_CDECL_END
 
 /** Always use fallbacks from codepage to Unicode */
-#define TO_U_USE_FALLBACK(useFallback) TRUE
-#define UCNV_TO_U_USE_FALLBACK(cnv) TRUE
+#define TO_U_USE_FALLBACK(useFallback) true
+#define UCNV_TO_U_USE_FALLBACK(cnv) true
 
 /** Use fallbacks from Unicode to codepage when cnv->useFallback or for private-use code points */
 #define IS_PRIVATE_USE(c) ((uint32_t)((c)-0xe000)<0x1900 || (uint32_t)((c)-0xf0000)<0x20000)
diff --git a/libicu/cts_headers/ucnvmbcs.h b/libicu/cts_headers/ucnvmbcs.h
index 209cdc5..c8f3b89 100644
--- a/libicu/cts_headers/ucnvmbcs.h
+++ b/libicu/cts_headers/ucnvmbcs.h
@@ -420,7 +420,7 @@
     NULL, \
     0, \
     0, 0, \
-    FALSE, \
+    false, \
     0, \
      \
     /* roundtrips */ \
diff --git a/libicu/cts_headers/ucol_imp.h b/libicu/cts_headers/ucol_imp.h
index a251fc4..f463957 100644
--- a/libicu/cts_headers/ucol_imp.h
+++ b/libicu/cts_headers/ucol_imp.h
@@ -41,10 +41,10 @@
  *  rules must be equivalent.
  *  @param source first collator
  *  @param target second collator
- *  @return TRUE or FALSE
+ *  @return true or false
  *  @internal ICU 3.0
  */
-U_INTERNAL UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucol_equals(const UCollator *source, const UCollator *target);
 
 /**
diff --git a/libicu/cts_headers/ucol_swp.h b/libicu/cts_headers/ucol_swp.h
index fd8be9a..0c2990a 100644
--- a/libicu/cts_headers/ucol_swp.h
+++ b/libicu/cts_headers/ucol_swp.h
@@ -31,7 +31,7 @@
  * Does the data look like a collation binary?
  * @internal
  */
-U_INTERNAL UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucol_looksLikeCollationBinary(const UDataSwapper *ds,
                               const void *inData, int32_t length);
 
diff --git a/libicu/cts_headers/uelement.h b/libicu/cts_headers/uelement.h
index 05f36a0..88dd4d6 100644
--- a/libicu/cts_headers/uelement.h
+++ b/libicu/cts_headers/uelement.h
@@ -46,7 +46,7 @@
  * An element-equality (boolean) comparison function.
  * @param e1 An element (object or integer)
  * @param e2 An element (object or integer)
- * @return TRUE if the two elements are equal.
+ * @return true if the two elements are equal.
  */
 typedef UBool U_CALLCONV UElementsAreEqual(const UElement e1, const UElement e2);
 
diff --git a/libicu/cts_headers/uinvchar.h b/libicu/cts_headers/uinvchar.h
index a43cfcd..9b7a9bd 100644
--- a/libicu/cts_headers/uinvchar.h
+++ b/libicu/cts_headers/uinvchar.h
@@ -33,11 +33,11 @@
  *
  * @param s Input string pointer.
  * @param length Length of the string, can be -1 if NUL-terminated.
- * @return TRUE if s contains only invariant characters.
+ * @return true if s contains only invariant characters.
  *
  * @internal (ICU 2.8)
  */
-U_INTERNAL UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uprv_isInvariantString(const char *s, int32_t length);
 
 /**
@@ -46,11 +46,11 @@
  *
  * @param s Input string pointer.
  * @param length Length of the string, can be -1 if NUL-terminated.
- * @return TRUE if s contains only invariant characters.
+ * @return true if s contains only invariant characters.
  *
  * @internal (ICU 2.8)
  */
-U_INTERNAL UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uprv_isInvariantUString(const UChar *s, int32_t length);
 
 /**
@@ -141,7 +141,7 @@
  * Compare two EBCDIC invariant-character strings in ASCII order.
  * @internal
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uprv_compareInvEbcdicAsAscii(const char *s1, const char *s2);
 
 /**
@@ -161,7 +161,7 @@
  * Converts an EBCDIC invariant character to ASCII.
  * @internal
  */
-U_INTERNAL char U_EXPORT2
+U_CAPI char U_EXPORT2
 uprv_ebcdicToAscii(char c);
 
 /**
@@ -181,7 +181,7 @@
  * Converts an EBCDIC invariant character to lowercase ASCII.
  * @internal
  */
-U_INTERNAL char U_EXPORT2
+U_CAPI char U_EXPORT2
 uprv_ebcdicToLowercaseAscii(char c);
 
 /**
@@ -202,7 +202,7 @@
  * @internal
  * @see uprv_strncpy
  */
-U_INTERNAL uint8_t* U_EXPORT2
+U_CAPI uint8_t* U_EXPORT2
 uprv_aestrncpy(uint8_t *dst, const uint8_t *src, int32_t n);
 
 
@@ -211,7 +211,7 @@
  * @internal
  * @see uprv_strncpy
  */
-U_INTERNAL uint8_t* U_EXPORT2
+U_CAPI uint8_t* U_EXPORT2
 uprv_eastrncpy(uint8_t *dst, const uint8_t *src, int32_t n);
 
 
diff --git a/libicu/cts_headers/uitercollationiterator.h b/libicu/cts_headers/uitercollationiterator.h
index 62b6f83..3a7b1a0 100644
--- a/libicu/cts_headers/uitercollationiterator.h
+++ b/libicu/cts_headers/uitercollationiterator.h
@@ -96,7 +96,7 @@
 
     /**
      * Extends the FCD text segment forward or normalizes around pos.
-     * @return TRUE if success
+     * @return true if success
      */
     UBool nextSegment(UErrorCode &errorCode);
 
@@ -107,7 +107,7 @@
 
     /**
      * Extends the FCD text segment backward or normalizes around pos.
-     * @return TRUE if success
+     * @return true if success
      */
     UBool previousSegment(UErrorCode &errorCode);
 
diff --git a/libicu/cts_headers/ulocimp.h b/libicu/cts_headers/ulocimp.h
index b9e2eb4..5691fe9 100644
--- a/libicu/cts_headers/ulocimp.h
+++ b/libicu/cts_headers/ulocimp.h
@@ -13,6 +13,8 @@
 #include "unicode/bytestream.h"
 #include "unicode/uloc.h"
 
+#include "charstr.h"
+
 /**
  * Create an iterator over the specified keywords list
  * @param keywordList double-null terminated list. Will be copied.
@@ -38,7 +40,7 @@
     int32_t *pLength,
     UErrorCode *pErrorCode);
 
-/*returns TRUE if a is an ID separator FALSE otherwise*/
+/*returns true if a is an ID separator false otherwise*/
 #define _isIDSeparator(a) (a == '_' || a == '-')
 
 U_CFUNC const char* 
@@ -47,42 +49,55 @@
 U_CFUNC const char* 
 uloc_getCurrentLanguageID(const char* oldID);
 
-U_CFUNC int32_t
+U_CFUNC void
+ulocimp_getKeywords(const char *localeID,
+             char prev,
+             icu::ByteSink& sink,
+             UBool valuesToo,
+             UErrorCode *status);
+
+icu::CharString U_EXPORT2
 ulocimp_getLanguage(const char *localeID,
-                    char *language, int32_t languageCapacity,
-                    const char **pEnd);
+                    const char **pEnd,
+                    UErrorCode &status);
 
-U_CFUNC int32_t
+icu::CharString U_EXPORT2
 ulocimp_getScript(const char *localeID,
-                   char *script, int32_t scriptCapacity,
-                   const char **pEnd);
+                  const char **pEnd,
+                  UErrorCode &status);
 
-U_CFUNC int32_t
+icu::CharString U_EXPORT2
 ulocimp_getCountry(const char *localeID,
-                   char *country, int32_t countryCapacity,
-                   const char **pEnd);
+                   const char **pEnd,
+                   UErrorCode &status);
 
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocimp_getName(const char* localeID,
                 icu::ByteSink& sink,
                 UErrorCode* err);
 
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocimp_getBaseName(const char* localeID,
                     icu::ByteSink& sink,
                     UErrorCode* err);
 
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocimp_canonicalize(const char* localeID,
                      icu::ByteSink& sink,
                      UErrorCode* err);
 
+U_CAPI void U_EXPORT2
+ulocimp_getKeywordValue(const char* localeID,
+                        const char* keywordName,
+                        icu::ByteSink& sink,
+                        UErrorCode* status);
+
 /**
  * Writes a well-formed language tag for this locale ID.
  *
- * **Note**: When `strict` is FALSE, any locale fields which do not satisfy the
+ * **Note**: When `strict` is false, any locale fields which do not satisfy the
  * BCP47 syntax requirement will be omitted from the result.  When `strict` is
- * TRUE, this function sets U_ILLEGAL_ARGUMENT_ERROR to the `err` if any locale
+ * true, this function sets U_ILLEGAL_ARGUMENT_ERROR to the `err` if any locale
  * fields do not satisfy the BCP47 syntax requirement.
  *
  * @param localeID  the input locale ID
@@ -96,7 +111,7 @@
  *
  * @internal ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocimp_toLanguageTag(const char* localeID,
                       icu::ByteSink& sink,
                       UBool strict,
@@ -107,13 +122,17 @@
  * If the specified language tag contains any ill-formed subtags,
  * the first such subtag and all following subtags are ignored.
  * <p>
- * This implements the 'Language-Tag' production of BCP47, and so
- * supports grandfathered (regular and irregular) as well as private
- * use language tags.  Private use tags are represented as 'x-whatever',
- * and grandfathered tags are converted to their canonical replacements
- * where they exist.  Note that a few grandfathered tags have no modern
- * replacement, these will be converted using the fallback described in
+ * This implements the 'Language-Tag' production of BCP 47, and so
+ * supports legacy language tags (marked as “Type: grandfathered” in BCP 47)
+ * (regular and irregular) as well as private use language tags.
+ *
+ * Private use tags are represented as 'x-whatever',
+ * and legacy tags are converted to their canonical replacements where they exist.
+ *
+ * Note that a few legacy tags have no modern replacement;
+ * these will be converted using the fallback described in
  * the first paragraph, so some information might be lost.
+ *
  * @param langtag   the input BCP47 language tag.
  * @param tagLen    the length of langtag, or -1 to call uprv_strlen().
  * @param sink      the output sink receiving a locale ID for the
@@ -135,7 +154,7 @@
  * Get the region to use for supplemental data lookup. Uses
  * (1) any region specified by locale tag "rg"; if none then
  * (2) any unicode_region_tag in the locale ID; if none then
- * (3) if inferRegion is TRUE, the region suggested by
+ * (3) if inferRegion is true, the region suggested by
  * getLikelySubtags on the localeID.
  * If no region is found, returns length 0.
  * 
@@ -143,7 +162,7 @@
  *     The complete locale ID (with keywords) from which
  *     to get the region to use for supplemental data.
  * @param inferRegion
- *     If TRUE, will try to infer region from localeID if
+ *     If true, will try to infer region from localeID if
  *     no other region is found.
  * @param region
  *     Buffer in which to put the region ID found; should
@@ -189,7 +208,7 @@
  * or the localeId is not well-formed, the error code is U_ILLEGAL_ARGUMENT_ERROR.
  * @internal ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocimp_addLikelySubtags(const char* localeID,
                          icu::ByteSink& sink,
                          UErrorCode* err);
@@ -223,7 +242,7 @@
  * or the localeId is not well-formed, the error code is U_ILLEGAL_ARGUMENT_ERROR.
  * @internal ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocimp_minimizeSubtags(const char* localeID,
                         icu::ByteSink& sink,
                         UErrorCode* err);
@@ -279,4 +298,10 @@
 U_CFUNC const char*
 ulocimp_toLegacyType(const char* key, const char* type, UBool* isKnownKey, UBool* isSpecialType);
 
+/* Function for testing purpose */
+U_CAPI const char* const* ulocimp_getKnownCanonicalizedLocaleForTest(int32_t* length);
+
+// Return true if the value is already canonicalized.
+U_CAPI bool ulocimp_isCanonicalizedLocaleForTest(const char* localeName);
+
 #endif
diff --git a/libicu/cts_headers/umutex.h b/libicu/cts_headers/umutex.h
index 2503aa4..8d76b3f 100644
--- a/libicu/cts_headers/umutex.h
+++ b/libicu/cts_headers/umutex.h
@@ -262,13 +262,13 @@
  *              the global ICU mutex.  Recursive locks are an error
  *              and may cause a deadlock on some platforms.
  */
-U_INTERNAL void U_EXPORT2 umtx_lock(UMutex* mutex);
+U_CAPI void U_EXPORT2 umtx_lock(UMutex* mutex);
 
 /* Unlock a mutex.
  * @param mutex The given mutex to be unlocked.  Pass NULL to specify
  *              the global ICU mutex.
  */
-U_INTERNAL void U_EXPORT2 umtx_unlock (UMutex* mutex);
+U_CAPI void U_EXPORT2 umtx_unlock (UMutex* mutex);
 
 
 U_NAMESPACE_END
diff --git a/libicu/cts_headers/unicode/alphaindex.h b/libicu/cts_headers/unicode/alphaindex.h
index e3c68ea..edab16b 100644
--- a/libicu/cts_headers/unicode/alphaindex.h
+++ b/libicu/cts_headers/unicode/alphaindex.h
@@ -549,14 +549,14 @@
 
 
     /**
-     *   Advance the iteration over the Buckets of this index.  Return FALSE if
+     *   Advance the iteration over the Buckets of this index.  Return false if
      *   there are no more Buckets.
      *
      *   @param status  Error code, will be set with the reason if the operation fails.
      *   U_ENUM_OUT_OF_SYNC_ERROR will be reported if the index is modified while
      *   an enumeration of its contents are in process.
      *
-     *   @return TRUE if success, FALSE if at end of iteration
+     *   @return true if success, false if at end of iteration
      *   @stable ICU 4.8
      */
     virtual UBool nextBucket(UErrorCode &status);
@@ -609,7 +609,7 @@
      *   @param status  Error code, will be set with the reason if the operation fails.
      *   U_ENUM_OUT_OF_SYNC_ERROR will be reported if the index is modified while
      *   an enumeration of its contents are in process.
-     *   @return TRUE if successful, FALSE when the iteration advances past the last item.
+     *   @return true if successful, false when the iteration advances past the last item.
      *   @stable ICU 4.8
      */
     virtual UBool nextRecord(UErrorCode &status);
diff --git a/libicu/cts_headers/unicode/appendable.h b/libicu/cts_headers/unicode/appendable.h
index 4beacaf..fc99254 100644
--- a/libicu/cts_headers/unicode/appendable.h
+++ b/libicu/cts_headers/unicode/appendable.h
@@ -45,7 +45,7 @@
  *
  * The methods do not take UErrorCode parameters.
  * If an error occurs (e.g., out-of-memory),
- * in addition to returning FALSE from failing operations,
+ * in addition to returning false from failing operations,
  * the implementation must prevent unexpected behavior (e.g., crashes)
  * from further calls and should make the error condition available separately
  * (e.g., store a UErrorCode, make/keep a UnicodeString bogus).
@@ -62,7 +62,7 @@
     /**
      * Appends a 16-bit code unit.
      * @param c code unit
-     * @return TRUE if the operation succeeded
+     * @return true if the operation succeeded
      * @stable ICU 4.8
      */
     virtual UBool appendCodeUnit(char16_t c) = 0;
@@ -71,7 +71,7 @@
      * Appends a code point.
      * The default implementation calls appendCodeUnit(char16_t) once or twice.
      * @param c code point 0..0x10ffff
-     * @return TRUE if the operation succeeded
+     * @return true if the operation succeeded
      * @stable ICU 4.8
      */
     virtual UBool appendCodePoint(UChar32 c);
@@ -81,7 +81,7 @@
      * The default implementation calls appendCodeUnit(char16_t) for each code unit.
      * @param s string, must not be NULL if length!=0
      * @param length string length, or -1 if NUL-terminated
-     * @return TRUE if the operation succeeded
+     * @return true if the operation succeeded
      * @stable ICU 4.8
      */
     virtual UBool appendString(const char16_t *s, int32_t length);
@@ -90,9 +90,9 @@
      * Tells the object that the caller is going to append roughly
      * appendCapacity char16_ts. A subclass might use this to pre-allocate
      * a larger buffer if necessary.
-     * The default implementation does nothing. (It always returns TRUE.)
+     * The default implementation does nothing. (It always returns true.)
      * @param appendCapacity estimated number of char16_ts that will be appended
-     * @return TRUE if the operation succeeded
+     * @return true if the operation succeeded
      * @stable ICU 4.8
      */
     virtual UBool reserveAppendCapacity(int32_t appendCapacity);
@@ -171,7 +171,7 @@
     /**
      * Appends a 16-bit code unit to the string.
      * @param c code unit
-     * @return TRUE if the operation succeeded
+     * @return true if the operation succeeded
      * @stable ICU 4.8
      */
     virtual UBool appendCodeUnit(char16_t c);
@@ -179,7 +179,7 @@
     /**
      * Appends a code point to the string.
      * @param c code point 0..0x10ffff
-     * @return TRUE if the operation succeeded
+     * @return true if the operation succeeded
      * @stable ICU 4.8
      */
     virtual UBool appendCodePoint(UChar32 c);
@@ -188,7 +188,7 @@
      * Appends a string to the UnicodeString.
      * @param s string, must not be NULL if length!=0
      * @param length string length, or -1 if NUL-terminated
-     * @return TRUE if the operation succeeded
+     * @return true if the operation succeeded
      * @stable ICU 4.8
      */
     virtual UBool appendString(const char16_t *s, int32_t length);
@@ -197,7 +197,7 @@
      * Tells the UnicodeString that the caller is going to append roughly
      * appendCapacity char16_ts.
      * @param appendCapacity estimated number of char16_ts that will be appended
-     * @return TRUE if the operation succeeded
+     * @return true if the operation succeeded
      * @stable ICU 4.8
      */
     virtual UBool reserveAppendCapacity(int32_t appendCapacity);
diff --git a/libicu/cts_headers/unicode/basictz.h b/libicu/cts_headers/unicode/basictz.h
index fc2cb8e..7dd981a 100644
--- a/libicu/cts_headers/unicode/basictz.h
+++ b/libicu/cts_headers/unicode/basictz.h
@@ -56,7 +56,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the first transition after the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      * @stable ICU 3.8
      */
     virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const = 0;
@@ -66,7 +66,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the most recent transition before the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      * @stable ICU 3.8
      */
     virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const = 0;
diff --git a/libicu/cts_headers/unicode/brkiter.h b/libicu/cts_headers/unicode/brkiter.h
index b944497..9bba5fc 100644
--- a/libicu/cts_headers/unicode/brkiter.h
+++ b/libicu/cts_headers/unicode/brkiter.h
@@ -564,7 +564,7 @@
      * BreakIterator::createXXXInstance to avoid undefined behavior.
      * @param key the registry key returned by a previous call to registerInstance
      * @param status the in/out status code, no special meanings are assigned
-     * @return TRUE if the iterator for the key was successfully unregistered
+     * @return true if the iterator for the key was successfully unregistered
      * @stable ICU 2.4
      */
     static UBool U_EXPORT2 unregister(URegistryKey key, UErrorCode& status);
@@ -655,7 +655,7 @@
 
 inline UBool BreakIterator::isBufferClone()
 {
-    return FALSE;
+    return false;
 }
 
 #endif /* U_HIDE_DEPRECATED_API */
diff --git a/libicu/cts_headers/unicode/bytestream.h b/libicu/cts_headers/unicode/bytestream.h
index 7fe2406..044f7a7 100644
--- a/libicu/cts_headers/unicode/bytestream.h
+++ b/libicu/cts_headers/unicode/bytestream.h
@@ -197,7 +197,7 @@
    * Returns the sink to its original state, without modifying the buffer.
    * Useful for reusing both the buffer and the sink for multiple streams.
    * Resets the state to NumberOfBytesWritten()=NumberOfBytesAppended()=0
-   * and Overflowed()=FALSE.
+   * and Overflowed()=false.
    * @return *this
    * @stable ICU 4.6
    */
@@ -236,7 +236,7 @@
   /**
    * Returns true if any bytes were discarded, i.e., if there was an
    * attempt to write more than 'capacity' bytes.
-   * @return TRUE if more than 'capacity' bytes were Append()ed
+   * @return true if more than 'capacity' bytes were Append()ed
    * @stable ICU 4.2
    */
   UBool Overflowed() const { return overflowed_; }
diff --git a/libicu/cts_headers/unicode/bytestrie.h b/libicu/cts_headers/unicode/bytestrie.h
index 51405f6..85f802d 100644
--- a/libicu/cts_headers/unicode/bytestrie.h
+++ b/libicu/cts_headers/unicode/bytestrie.h
@@ -97,14 +97,13 @@
         return *this;
     }
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns the state of this trie as a 64-bit integer.
      * The state value is never 0.
      *
      * @return opaque state value
      * @see resetToState64
-     * @draft ICU 65
+     * @stable ICU 65
      */
     uint64_t getState64() const {
         return (static_cast<uint64_t>(remainingMatchLength_ + 2) << kState64RemainingShift) |
@@ -123,14 +122,13 @@
      * @see getState64
      * @see resetToState
      * @see reset
-     * @draft ICU 65
+     * @stable ICU 65
      */
     BytesTrie &resetToState64(uint64_t state) {
         remainingMatchLength_ = static_cast<int32_t>(state >> kState64RemainingShift) - 2;
         pos_ = bytes_ + (state & kState64PosMask);
         return *this;
     }
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * BytesTrie state object, for saving a trie's current state
@@ -253,16 +251,16 @@
     /**
      * Determines whether all byte sequences reachable from the current state
      * map to the same value.
-     * @param uniqueValue Receives the unique value, if this function returns TRUE.
+     * @param uniqueValue Receives the unique value, if this function returns true.
      *                    (output-only)
-     * @return TRUE if all byte sequences reachable from the current state
+     * @return true if all byte sequences reachable from the current state
      *         map to the same value.
      * @stable ICU 4.8
      */
     inline UBool hasUniqueValue(int32_t &uniqueValue) const {
         const uint8_t *pos=pos_;
         // Skip the rest of a pending linear-match node.
-        return pos!=NULL && findUniqueValue(pos+remainingMatchLength_+1, FALSE, uniqueValue);
+        return pos!=NULL && findUniqueValue(pos+remainingMatchLength_+1, false, uniqueValue);
     }
 
     /**
@@ -321,7 +319,7 @@
         Iterator &reset();
 
         /**
-         * @return TRUE if there are more elements.
+         * @return true if there are more elements.
          * @stable ICU 4.8
          */
         UBool hasNext() const;
@@ -337,7 +335,7 @@
          *                  pass the U_SUCCESS() test, or else the function returns
          *                  immediately. Check for U_FAILURE() on output or use with
          *                  function chaining. (See User Guide for details.)
-         * @return TRUE if there is another element.
+         * @return true if there is another element.
          * @stable ICU 4.8
          */
         UBool next(UErrorCode &errorCode);
diff --git a/libicu/cts_headers/unicode/bytestriebuilder.h b/libicu/cts_headers/unicode/bytestriebuilder.h
index b98374b..cae16e4 100644
--- a/libicu/cts_headers/unicode/bytestriebuilder.h
+++ b/libicu/cts_headers/unicode/bytestriebuilder.h
@@ -101,9 +101,10 @@
      * Multiple calls to buildStringPiece() return StringPieces referring to the
      * builder's same byte array, without rebuilding.
      * If buildStringPiece() is called after build(), the trie will be
-     * re-serialized into a new array.
-     * If build() is called after buildStringPiece(), the trie object will become
-     * the owner of the previously returned array.
+     * re-serialized into a new array (because build() passes on ownership).
+     * If build() is called after buildStringPiece(), the trie object returned
+     * by build() will become the owner of the underlying string for the
+     * previously returned StringPiece.
      * After clear() has been called, a new array will be used as well.
      * @param buildOption Build option, see UStringTrieBuildOption.
      * @param errorCode Standard ICU error code. Its input value must
@@ -139,7 +140,7 @@
     virtual int32_t skipElementsBySomeUnits(int32_t i, int32_t byteIndex, int32_t count) const;
     virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t byteIndex, char16_t byte) const;
 
-    virtual UBool matchNodesCanHaveValues() const { return FALSE; }
+    virtual UBool matchNodesCanHaveValues() const { return false; }
 
     virtual int32_t getMaxBranchLinearSubNodeLength() const { return BytesTrie::kMaxBranchLinearSubNodeLength; }
     virtual int32_t getMinLinearMatch() const { return BytesTrie::kMinLinearMatch; }
diff --git a/libicu/cts_headers/unicode/calendar.h b/libicu/cts_headers/unicode/calendar.h
index 2a8c293..cc84bb2 100644
--- a/libicu/cts_headers/unicode/calendar.h
+++ b/libicu/cts_headers/unicode/calendar.h
@@ -464,10 +464,10 @@
     UBool operator!=(const Calendar& that) const {return !operator==(that);}
 
     /**
-     * Returns TRUE if the given Calendar object is equivalent to this
+     * Returns true if the given Calendar object is equivalent to this
      * one.  An equivalent Calendar will behave exactly as this one
      * does, but it may be set to a different time.  By contrast, for
-     * the operator==() method to return TRUE, the other Calendar must
+     * the operator==() method to return true, the other Calendar must
      * be set to the same time.
      *
      * @param other the Calendar to be compared with this Calendar
@@ -1359,7 +1359,7 @@
      *     localeID.append(calType);
      *     char langTag[100];
      *     UErrorCode errorCode = U_ZERO_ERROR;
-     *     int32_t length = uloc_toLanguageTag(localeID.c_str(), langTag, (int32_t)sizeof(langTag), TRUE, &errorCode);
+     *     int32_t length = uloc_toLanguageTag(localeID.c_str(), langTag, (int32_t)sizeof(langTag), true, &errorCode);
      *     if (U_FAILURE(errorCode)) {
      *         // deal with errors & overflow
      *     }
@@ -1410,21 +1410,21 @@
     virtual int32_t getWeekendTransition(UCalendarDaysOfWeek dayOfWeek, UErrorCode &status) const;
 
     /**
-     * Returns TRUE if the given UDate is in the weekend in
+     * Returns true if the given UDate is in the weekend in
      * this calendar system.
      * @param date The UDate in question.
      * @param status The error code for the operation.
-     * @return TRUE if the given UDate is in the weekend in
-     * this calendar system, FALSE otherwise.
+     * @return true if the given UDate is in the weekend in
+     * this calendar system, false otherwise.
      * @stable ICU 4.4
      */
     virtual UBool isWeekend(UDate date, UErrorCode &status) const;
 
     /**
-     * Returns TRUE if this Calendar's current date-time is in the weekend in
+     * Returns true if this Calendar's current date-time is in the weekend in
      * this calendar system.
-     * @return TRUE if this Calendar's current date-time is in the weekend in
-     * this calendar system, FALSE otherwise.
+     * @return true if this Calendar's current date-time is in the weekend in
+     * this calendar system, false otherwise.
      * @stable ICU 4.4
      */
     virtual UBool isWeekend(void) const;
@@ -2372,7 +2372,7 @@
      *
      * @param key the registry key returned by a previous call to registerFactory
      * @param status the in/out status code, no special meanings are assigned
-     * @return TRUE if the factory for the key was successfully unregistered
+     * @return true if the factory for the key was successfully unregistered
      * @internal
      */
     static UBool unregister(URegistryKey key, UErrorCode& status);
@@ -2398,7 +2398,7 @@
 #endif /* !UCONFIG_NO_SERVICE */
 
     /**
-     * @return TRUE if this calendar has a default century (i.e. 03 -> 2003)
+     * @return true if this calendar has a default century (i.e. 03 -> 2003)
      * @internal
      */
     virtual UBool haveDefaultCentury() const = 0;
@@ -2458,7 +2458,7 @@
      * @param base The base time, inclusive
      * @param transitionTime Receives the result time
      * @param status The error status
-     * @return TRUE if a transition is found.
+     * @return true if a transition is found.
      */
     UBool getImmediatePreviousZoneTransition(UDate base, UDate *transitionTime, UErrorCode& status) const;
 
@@ -2531,7 +2531,7 @@
 {
     fFields[field] = value;
     fStamp[field] = kInternallySet;
-    fIsSet[field]     = TRUE; // Remove later
+    fIsSet[field]     = true; // Remove later
 }
 
 
diff --git a/libicu/cts_headers/unicode/caniter.h b/libicu/cts_headers/unicode/caniter.h
index 13e524f..4ed2b74 100644
--- a/libicu/cts_headers/unicode/caniter.h
+++ b/libicu/cts_headers/unicode/caniter.h
@@ -25,11 +25,11 @@
  */
  
 /** Should permutation skip characters with combining class zero
- *  Should be either TRUE or FALSE. This is a compile time option
+ *  Should be either true or false. This is a compile time option
  *  @stable ICU 2.4
  */
 #ifndef CANITER_SKIP_ZEROES
-#define CANITER_SKIP_ZEROES TRUE
+#define CANITER_SKIP_ZEROES true
 #endif
 
 U_NAMESPACE_BEGIN
diff --git a/libicu/cts_headers/unicode/chariter.h b/libicu/cts_headers/unicode/chariter.h
index db86f79..96dc5db 100644
--- a/libicu/cts_headers/unicode/chariter.h
+++ b/libicu/cts_headers/unicode/chariter.h
@@ -65,7 +65,7 @@
  * check for the end of the iteration. When there are no more
  * characters in the text object:
  * <ul>
- * <li>The hasNext() function returns FALSE.</li>
+ * <li>The hasNext() function returns false.</li>
  * <li>nextPostInc() and next32PostInc() return DONE
  *     when one attempts to read beyond the end of the text object.</li>
  * </ul>
@@ -165,11 +165,11 @@
     virtual UChar32       next32PostInc(void) = 0;
     
     /**
-     * Returns FALSE if there are no more code units or code points
+     * Returns false if there are no more code units or code points
      * at or after the current position in the iteration range.
      * This is used with nextPostInc() or next32PostInc() in forward
      * iteration.
-     * @returns FALSE if there are no more code units or code points
+     * @returns false if there are no more code units or code points
      * at or after the current position in the iteration range.
      * @stable ICU 2.0
      */
@@ -535,12 +535,12 @@
     virtual UChar32       previous32(void) = 0;
 
     /**
-     * Returns FALSE if there are no more code units or code points
+     * Returns false if there are no more code units or code points
      * before the current position in the iteration range.
      * This is used with previous() or previous32() in backward
      * iteration.
-     * @return FALSE if there are no more code units or code points
-     * before the current position in the iteration range, return TRUE otherwise.
+     * @return false if there are no more code units or code points
+     * before the current position in the iteration range, return true otherwise.
      * @stable ICU 2.0
      */
     virtual UBool        hasPrevious() = 0;
diff --git a/libicu/cts_headers/unicode/choicfmt.h b/libicu/cts_headers/unicode/choicfmt.h
index 3b2f48c..cb01fca 100644
--- a/libicu/cts_headers/unicode/choicfmt.h
+++ b/libicu/cts_headers/unicode/choicfmt.h
@@ -106,7 +106,7 @@
  * arrays of numbers, closure flags and strings,
  * they are interpreted just like
  * the sequence of <code>(number separator string)</code> in an equivalent pattern string.
- * <code>closure[i]==TRUE</code> corresponds to a <code>less_than</code> separator sign.
+ * <code>closure[i]==true</code> corresponds to a <code>less_than</code> separator sign.
  * The equivalent pattern string will be constructed automatically.</p>
  *
  * <p>During formatting, a number is mapped to the first range
@@ -126,7 +126,7 @@
  * <p>Here is an example of two arrays that map the number
  * <code>1..7</code> to the English day of the week abbreviations
  * <code>Sun..Sat</code>. No closures array is given; this is the same as
- * specifying all closures to be <code>FALSE</code>.</p>
+ * specifying all closures to be <code>false</code>.</p>
  *
  * <pre>    {1,2,3,4,5,6,7},
  *     {&quot;Sun&quot;,&quot;Mon&quot;,&quot;Tue&quot;,&quot;Wed&quot;,&quot;Thur&quot;,&quot;Fri&quot;,&quot;Sat&quot;}</pre>
@@ -138,7 +138,7 @@
  * like the turned bracket in European notation: [-Inf, 1) == [-Inf, 1[  )</p>
  *
  * <pre>    {0, 1, 1},
- *     {FALSE, FALSE, TRUE},
+ *     {false, false, true},
  *     {&quot;no files&quot;, &quot;one file&quot;, &quot;many files&quot;}</pre>
  *
  * <p>Here is an example that shows formatting and parsing: </p>
@@ -189,7 +189,7 @@
 
     /**
      * Constructs a new ChoiceFormat with the given limits and message strings.
-     * All closure flags default to <code>FALSE</code>,
+     * All closure flags default to <code>false</code>,
      * equivalent to <code>less_than_or_equal</code> separators.
      *
      * Copies the limits and formats instead of adopting them.
@@ -210,9 +210,9 @@
      *
      * @param limits Array of limit values
      * @param closures Array of booleans specifying whether each
-     * element of 'limits' is open or closed.  If FALSE, then the
+     * element of 'limits' is open or closed.  If false, then the
      * corresponding limit number is a member of its range.
-     * If TRUE, then the limit number belongs to the previous range it.
+     * If true, then the limit number belongs to the previous range it.
      * @param formats Array of formats
      * @param count Size of 'limits', 'closures', and 'formats' arrays
      * @deprecated ICU 49 Use MessageFormat instead, with plural and select arguments.
@@ -568,13 +568,13 @@
      * The intervals may be closed, half open, or open.  This affects
      * formatting but does not affect parsing.  Interval i is affected
      * by fClosures[i] and fClosures[i+1].  If fClosures[i]
-     * is FALSE, then the value fChoiceLimits[i] is in interval i.
+     * is false, then the value fChoiceLimits[i] is in interval i.
      * That is, intervals i and i are:
      *
      *  i-1:                 ... x < fChoiceLimits[i]
      *    i: fChoiceLimits[i] <= x ...
      *
-     * If fClosures[i] is TRUE, then the value fChoiceLimits[i] is
+     * If fClosures[i] is true, then the value fChoiceLimits[i] is
      * in interval i-1.  That is, intervals i-1 and i are:
      *
      *  i-1:                ... x <= fChoiceLimits[i]
diff --git a/libicu/cts_headers/unicode/coleitr.h b/libicu/cts_headers/unicode/coleitr.h
index e3ec0e0..aa0b08f 100644
--- a/libicu/cts_headers/unicode/coleitr.h
+++ b/libicu/cts_headers/unicode/coleitr.h
@@ -253,7 +253,7 @@
     /**
     * Checks if a comparison order is ignorable.
     * @param order the collation order.
-    * @return TRUE if a character is ignorable, FALSE otherwise.
+    * @return true if a character is ignorable, false otherwise.
     * @stable ICU 2.0
     */
     static inline UBool isIgnorable(int32_t order);
diff --git a/libicu/cts_headers/unicode/coll.h b/libicu/cts_headers/unicode/coll.h
index f5564c7..c750711 100644
--- a/libicu/cts_headers/unicode/coll.h
+++ b/libicu/cts_headers/unicode/coll.h
@@ -236,21 +236,21 @@
     // Collator public methods --------------------------------------------
 
     /**
-     * Returns TRUE if "other" is the same as "this".
+     * Returns true if "other" is the same as "this".
      *
-     * The base class implementation returns TRUE if "other" has the same type/class as "this":
+     * The base class implementation returns true if "other" has the same type/class as "this":
      * `typeid(*this) == typeid(other)`.
      *
      * Subclass implementations should do something like the following:
      *
-     *     if (this == &other) { return TRUE; }
-     *     if (!Collator::operator==(other)) { return FALSE; }  // not the same class
+     *     if (this == &other) { return true; }
+     *     if (!Collator::operator==(other)) { return false; }  // not the same class
      *
      *     const MyCollator &o = (const MyCollator&)other;
      *     (compare this vs. o's subclass fields)
      *
      * @param other Collator object to be compared
-     * @return TRUE if other is the same as this.
+     * @return true if other is the same as this.
      * @stable ICU 2.0
      */
     virtual UBool operator==(const Collator& other) const;
@@ -259,7 +259,7 @@
      * Returns true if "other" is not the same as "this".
      * Calls ! operator==(const Collator&) const which works for all subclasses.
      * @param other Collator object to be compared
-     * @return TRUE if other is not the same as this.
+     * @return true if other is not the same as this.
      * @stable ICU 2.0
      */
     virtual UBool operator!=(const Collator& other) const;
@@ -304,7 +304,7 @@
      * Starting with ICU 54, collation attributes can be specified via locale keywords as well,
      * in the old locale extension syntax ("el@colCaseFirst=upper")
      * or in language tag syntax ("el-u-kf-upper").
-     * See <a href="http://userguide.icu-project.org/collation/api">User Guide: Collation API</a>.
+     * See <a href="https://unicode-org.github.io/icu/userguide/collation/api">User Guide: Collation API</a>.
      *
      * The UErrorCode& err parameter is used to return status information to the user.
      * To check whether the construction succeeded or not, you should check
@@ -788,7 +788,7 @@
      * applications who wish to cache collators, or otherwise reuse
      * collators when possible.  The functional equivalent may change
      * over time.  For more information, please see the <a
-     * href="http://userguide.icu-project.org/locale#TOC-Locales-and-Services">
+     * href="https://unicode-org.github.io/icu/userguide/locale#locales-and-services">
      * Locales and Services</a> section of the ICU User Guide.
      * @param keyword a particular keyword as enumerated by
      * ucol_getKeywords.
@@ -841,7 +841,7 @@
      * Collator::createInstance to avoid undefined behavior.
      * @param key the registry key returned by a previous call to registerInstance
      * @param status the in/out status code, no special meanings are assigned
-     * @return TRUE if the collator for the key was successfully unregistered
+     * @return true if the collator for the key was successfully unregistered
      * @stable ICU 2.6
      */
     static UBool U_EXPORT2 unregister(URegistryKey key, UErrorCode& status);
@@ -1139,7 +1139,7 @@
      *  This string will be normalized.
      *  The structure and the syntax of the string is defined in the "Naming collators"
      *  section of the users guide:
-     *  http://userguide.icu-project.org/collation/concepts#TOC-Collator-naming-scheme
+     *  https://unicode-org.github.io/icu/userguide/collation/concepts#collator-naming-scheme
      *  This function supports preflighting.
      *
      *  This is internal, and intended to be used with delegate converters.
diff --git a/libicu/cts_headers/unicode/curramt.h b/libicu/cts_headers/unicode/curramt.h
index 5cfe1cf..e4c35c1 100644
--- a/libicu/cts_headers/unicode/curramt.h
+++ b/libicu/cts_headers/unicode/curramt.h
@@ -41,7 +41,7 @@
     /**
      * Construct an object with the given numeric amount and the given
      * ISO currency code.
-     * @param amount a numeric object; amount.isNumeric() must be TRUE
+     * @param amount a numeric object; amount.isNumeric() must be true
      * @param isoCode the 3-letter ISO 4217 currency code; must not be
      * NULL and must have length 3
      * @param ec input-output error code. If the amount or the isoCode
diff --git a/libicu/cts_headers/unicode/dcfmtsym.h b/libicu/cts_headers/unicode/dcfmtsym.h
index 582e753..b2c39a0 100644
--- a/libicu/cts_headers/unicode/dcfmtsym.h
+++ b/libicu/cts_headers/unicode/dcfmtsym.h
@@ -378,7 +378,7 @@
      *                             back to the locale.
      */
     void initialize(const Locale& locale, UErrorCode& success,
-        UBool useLastResortData = FALSE, const NumberingSystem* ns = nullptr);
+                    UBool useLastResortData = false, const NumberingSystem* ns = nullptr);
 
     /**
      * Initialize the symbols with default values.
@@ -543,12 +543,12 @@
 // -------------------------------------
 
 inline void
-DecimalFormatSymbols::setSymbol(ENumberFormatSymbol symbol, const UnicodeString &value, const UBool propogateDigits = TRUE) {
+DecimalFormatSymbols::setSymbol(ENumberFormatSymbol symbol, const UnicodeString &value, const UBool propagateDigits = true) {
     if (symbol == kCurrencySymbol) {
-        fIsCustomCurrencySymbol = TRUE;
+        fIsCustomCurrencySymbol = true;
     }
     else if (symbol == kIntlCurrencySymbol) {
-        fIsCustomIntlCurrencySymbol = TRUE;
+        fIsCustomIntlCurrencySymbol = true;
     }
     if(symbol<kFormatSymbolCount) {
         fSymbols[symbol]=value;
@@ -559,7 +559,7 @@
     // Also record updates to fCodePointZero. Be conservative if in doubt.
     if (symbol == kZeroDigitSymbol) {
         UChar32 sym = value.char32At(0);
-        if ( propogateDigits && u_charDigitValue(sym) == 0 && value.countChar32() == 1 ) {
+        if ( propagateDigits && u_charDigitValue(sym) == 0 && value.countChar32() == 1 ) {
             fCodePointZero = sym;
             for ( int8_t i = 1 ; i<= 9 ; i++ ) {
                 sym++;
diff --git a/libicu/cts_headers/unicode/decimfmt.h b/libicu/cts_headers/unicode/decimfmt.h
index 8dba9b2..b9be18f 100644
--- a/libicu/cts_headers/unicode/decimfmt.h
+++ b/libicu/cts_headers/unicode/decimfmt.h
@@ -564,11 +564,11 @@
  *
  * <li>In order to enable significant digits formatting, use a pattern
  * containing the <code>'@'</code> pattern character.  Alternatively,
- * call setSignificantDigitsUsed(TRUE).
+ * call setSignificantDigitsUsed(true).
  *
  * <li>In order to disable significant digits formatting, use a
  * pattern that does not contain the <code>'@'</code> pattern
- * character. Alternatively, call setSignificantDigitsUsed(FALSE).
+ * character. Alternatively, call setSignificantDigitsUsed(false).
  *
  * <li>The number of significant digits has no effect on parsing.
  *
@@ -817,8 +817,8 @@
     /**
      * Sets whether lenient parsing should be enabled (it is off by default).
      *
-     * @param enable \c TRUE if lenient parsing should be used,
-     *               \c FALSE otherwise.
+     * @param enable \c true if lenient parsing should be used,
+     *               \c false otherwise.
      * @stable ICU 4.8
      */
     void setLenient(UBool enable) U_OVERRIDE;
@@ -1507,7 +1507,7 @@
 
     /**
      * Return whether or not scientific notation is used.
-     * @return TRUE if this object formats and parses scientific notation
+     * @return true if this object formats and parses scientific notation
      * @see #setScientificNotation
      * @see #getMinimumExponentDigits
      * @see #setMinimumExponentDigits
@@ -1523,7 +1523,7 @@
      * maximum number of integer digits is set to more than 8, the effective
      * maximum will be 1.  This allows this call to generate a 'default' scientific
      * number format without additional changes.
-     * @param useScientific TRUE if this object formats and parses scientific
+     * @param useScientific true if this object formats and parses scientific
      * notation
      * @see #isScientificNotation
      * @see #getMinimumExponentDigits
@@ -1562,7 +1562,7 @@
 
     /**
      * Return whether the exponent sign is always shown.
-     * @return TRUE if the exponent is always prefixed with either the
+     * @return true if the exponent is always prefixed with either the
      * localized minus sign or the localized plus sign, false if only negative
      * exponents are prefixed with the localized minus sign.
      * @see #setScientificNotation
@@ -1577,7 +1577,7 @@
     /**
      * Set whether the exponent sign is always shown.  This has no effect
      * unless scientific notation is in use.
-     * @param expSignAlways TRUE if the exponent is always prefixed with either
+     * @param expSignAlways true if the exponent is always prefixed with either
      * the localized minus sign or the localized plus sign, false if only
      * negative exponents are prefixed with the localized minus sign.
      * @see #setScientificNotation
@@ -1674,8 +1674,15 @@
     int32_t getMinimumGroupingDigits() const;
 
     /**
-     * Sets the minimum grouping digits. Setting to a value less than or
-     * equal to 1 turns off minimum grouping digits.
+     * Sets the minimum grouping digits. Setting the value to
+     *  - 1: Turns off minimum grouping digits.
+     *  - 0 or -1: The behavior is undefined.
+     *  - UNUM_MINIMUM_GROUPING_DIGITS_AUTO: Display grouping using the default
+     *      strategy for all locales.
+     *  - UNUM_MINIMUM_GROUPING_DIGITS_MIN2: Display grouping using locale
+     *      defaults, except do not show grouping on values smaller than 10000
+     *      (such that there is a minimum of two digits before the first
+     *      separator).
      *
      * For more control over grouping strategies, use NumberFormatter.
      *
@@ -1689,7 +1696,7 @@
      * Allows you to get the behavior of the decimal separator with integers.
      * (The decimal separator will always appear with decimals.)
      *
-     * @return    TRUE if the decimal separator always appear with decimals.
+     * @return    true if the decimal separator always appear with decimals.
      * Example: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
      * @stable ICU 2.0
      */
@@ -1699,7 +1706,7 @@
      * Allows you to set the behavior of the decimal separator with integers.
      * (The decimal separator will always appear with decimals.)
      *
-     * @param newValue    set TRUE if the decimal separator will always appear with decimals.
+     * @param newValue    set true if the decimal separator will always appear with decimals.
      * Example: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
      * @stable ICU 2.0
      */
@@ -1708,7 +1715,7 @@
     /**
      * Allows you to get the parse behavior of the pattern decimal mark.
      *
-     * @return    TRUE if input must contain a match to decimal mark in pattern
+     * @return    true if input must contain a match to decimal mark in pattern
      * @stable ICU 54
      */
     UBool isDecimalPatternMatchRequired(void) const;
@@ -1716,10 +1723,10 @@
     /**
      * Allows you to set the parse behavior of the pattern decimal mark.
      *
-     * if TRUE, the input must have a decimal mark if one was specified in the pattern. When
-     * FALSE the decimal mark may be omitted from the input.
+     * if true, the input must have a decimal mark if one was specified in the pattern. When
+     * false the decimal mark may be omitted from the input.
      *
-     * @param newValue    set TRUE if input must contain a match to decimal mark in pattern
+     * @param newValue    set true if input must contain a match to decimal mark in pattern
      * @stable ICU 54
      */
     virtual void setDecimalPatternMatchRequired(UBool newValue);
@@ -1962,7 +1969,7 @@
      * to one.  If the maximum significant digits count is less than
      * <code>min</code>, then it is set to <code>min</code>.
      * This function also enables the use of significant digits
-     * by this formatter - areSignificantDigitsUsed() will return TRUE.
+     * by this formatter - areSignificantDigitsUsed() will return true.
      * @see #areSignificantDigitsUsed
      * @param min the fewest significant digits to be shown
      * @stable ICU 3.0
@@ -1975,7 +1982,7 @@
      * to one.  If the minimum significant digits count is greater
      * than <code>max</code>, then it is set to <code>max</code>.
      * This function also enables the use of significant digits
-     * by this formatter - areSignificantDigitsUsed() will return TRUE.
+     * by this formatter - areSignificantDigitsUsed() will return true.
      * @see #areSignificantDigitsUsed
      * @param max the most significant digits to be shown
      * @stable ICU 3.0
diff --git a/libicu/cts_headers/unicode/docmain.h b/libicu/cts_headers/unicode/docmain.h
index 704139a..edcb5d4 100644
--- a/libicu/cts_headers/unicode/docmain.h
+++ b/libicu/cts_headers/unicode/docmain.h
@@ -53,10 +53,10 @@
  *
  * <h2>Architecture (User's Guide)</h2>
  * <ul>
- *   <li><a href="http://userguide.icu-project.org/">Introduction</a></li>
- *   <li><a href="http://userguide.icu-project.org/i18n">Internationalization</a></li>
- *   <li><a href="http://userguide.icu-project.org/design">Locale Model, Multithreading, Error Handling, etc.</a></li>
- *   <li><a href="http://userguide.icu-project.org/conversion">Conversion</a></li>
+ *   <li><a href="https://unicode-org.github.io/icu/userguide/">Introduction</a></li>
+ *   <li><a href="https://unicode-org.github.io/icu/userguide/i18n">Internationalization</a></li>
+ *   <li><a href="https://unicode-org.github.io/icu/userguide/design">Locale Model, Multithreading, Error Handling, etc.</a></li>
+ *   <li><a href="https://unicode-org.github.io/icu/userguide/conversion">Conversion</a></li>
  * </ul>
  *
  * <hr>
@@ -143,13 +143,18 @@
  *     <td>icu::MessageFormat</td>
  *   </tr>
  *   <tr>
+ *     <td>List Formatting</td>
+ *     <td>ulistformatter.h</td>
+ *     <td>icu::ListFormatter</td>
+ *   </tr>
+ *   <tr>
  *     <td>Number Formatting<br/>(includes currency and unit formatting)</td>
  *     <td>unumberformatter.h, unum.h</td>
  *     <td>icu::number::NumberFormatter (ICU 60+) or icu::NumberFormat (older versions)</td>
  *   </tr>
  *   <tr>
  *     <td>Number Range Formatting<br />(includes currency and unit ranges)</td>
- *     <td>(no C API)</td>
+ *     <td>unumberrangeformatter.h</td>
  *     <td>icu::number::NumberRangeFormatter</td>
  *   </tr>
  *   <tr>
diff --git a/libicu/cts_headers/unicode/dtfmtsym.h b/libicu/cts_headers/unicode/dtfmtsym.h
index c6d76fe..69f9f97 100644
--- a/libicu/cts_headers/unicode/dtfmtsym.h
+++ b/libicu/cts_headers/unicode/dtfmtsym.h
@@ -919,7 +919,8 @@
      *                             failure code upon return.
      * @param useLastResortData    determine if use last resort data
      */
-    void initializeData(const Locale& locale, const char *type, UErrorCode& status, UBool useLastResortData = FALSE);
+    void initializeData(const Locale& locale, const char *type,
+                        UErrorCode& status, UBool useLastResortData = false);
 
     /**
      * Copy or alias an array in another object, as appropriate.
@@ -983,12 +984,12 @@
     static UDateFormatField U_EXPORT2 getPatternCharIndex(char16_t c);
 
     /**
-     * Returns TRUE if f (with its pattern character repeated count times) is a numeric field.
+     * Returns true if f (with its pattern character repeated count times) is a numeric field.
      */
     static UBool U_EXPORT2 isNumericField(UDateFormatField f, int32_t count);
 
     /**
-     * Returns TRUE if c (repeated count times) is the pattern character for a numeric field.
+     * Returns true if c (repeated count times) is the pattern character for a numeric field.
      */
     static UBool U_EXPORT2 isNumericPatternChar(char16_t c, int32_t count);
 public:
diff --git a/libicu/cts_headers/unicode/dtintrv.h b/libicu/cts_headers/unicode/dtintrv.h
index 15e15c9..4f4b6bf 100644
--- a/libicu/cts_headers/unicode/dtintrv.h
+++ b/libicu/cts_headers/unicode/dtintrv.h
@@ -106,14 +106,14 @@
 
     /**
      * Equality operator.
-     * @return TRUE if the two DateIntervals are the same
+     * @return true if the two DateIntervals are the same
      * @stable ICU 4.0
      */
     virtual UBool operator==(const DateInterval& other) const;
 
     /**
      * Non-equality operator
-     * @return TRUE if the two DateIntervals are not the same
+     * @return true if the two DateIntervals are not the same
      * @stable ICU 4.0
      */
     inline UBool operator!=(const DateInterval& other) const;
diff --git a/libicu/cts_headers/unicode/dtitvfmt.h b/libicu/cts_headers/unicode/dtitvfmt.h
index 4e4d712..f45e680 100644
--- a/libicu/cts_headers/unicode/dtitvfmt.h
+++ b/libicu/cts_headers/unicode/dtitvfmt.h
@@ -31,6 +31,7 @@
 #include "unicode/dtitvinf.h"
 #include "unicode/dtptngen.h"
 #include "unicode/formattedvalue.h"
+#include "unicode/udisplaycontext.h"
 
 U_NAMESPACE_BEGIN
 
@@ -651,6 +652,34 @@
      */
     virtual void setTimeZone(const TimeZone& zone);
 
+#ifndef U_FORCE_HIDE_DRAFT_API
+    /**
+     * Set a particular UDisplayContext value in the formatter, such as
+     * UDISPCTX_CAPITALIZATION_FOR_STANDALONE. This causes the formatted
+     * result to be capitalized appropriately for the context in which
+     * it is intended to be used, considering both the locale and the
+     * type of field at the beginning of the formatted result.
+     * @param value The UDisplayContext value to set.
+     * @param status Input/output status. If at entry this indicates a failure
+     *               status, the function will do nothing; otherwise this will be
+     *               updated with any new status from the function.
+     * @draft ICU 68
+     */
+    virtual void setContext(UDisplayContext value, UErrorCode& status);
+
+    /**
+     * Get the formatter's UDisplayContext value for the specified UDisplayContextType,
+     * such as UDISPCTX_TYPE_CAPITALIZATION.
+     * @param type The UDisplayContextType whose value to return
+     * @param status Input/output status. If at entry this indicates a failure
+     *               status, the function will do nothing; otherwise this will be
+     *               updated with any new status from the function.
+     * @return The UDisplayContextValue for the specified type.
+     * @draft ICU 68
+     */
+    virtual UDisplayContext getContext(UDisplayContextType type, UErrorCode& status) const;
+#endif  // U_FORCE_HIDE_DRAFT_API
+
     /**
      * Return the class ID for this class. This is useful only for comparing to
      * a return value from getDynamicClassID(). For example:
@@ -796,7 +825,7 @@
      *                          to be formatted into date interval string
      * @param toCalendar        calendar set to the to date in date interval
      *                          to be formatted into date interval string
-     * @param fromToOnSameDay   TRUE iff from and to dates are on the same day
+     * @param fromToOnSameDay   true iff from and to dates are on the same day
      *                          (any difference is in ampm/hours or below)
      * @param appendTo          Output parameter to receive result.
      *                          Result is appended to existing contents.
@@ -864,6 +893,19 @@
     void setFallbackPattern(UCalendarDateFields field,
                             const UnicodeString& skeleton,
                             UErrorCode& status);
+    
+
+
+    /**
+     * Converts special hour metacharacters (such as 'j') in the skeleton into locale-appropriate
+     * pattern characters.
+     *
+     *
+     *  @param skeleton               The skeleton to convert
+     *  @return A copy of the skeleton, which "j" and any other special hour metacharacters converted to the regular ones.
+     *
+     */
+    UnicodeString normalizeHourMetacharacters(const UnicodeString& skeleton) const;
 
 
 
@@ -919,8 +961,8 @@
      * @param dateSkeleton   normalized date skeleton
      * @param timeSkeleton   normalized time skeleton
      * @return               whether the resource is found for the skeleton.
-     *                       TRUE if interval pattern found for the skeleton,
-     *                       FALSE otherwise.
+     *                       true if interval pattern found for the skeleton,
+     *                       false otherwise.
      */
     UBool setSeparateDateTimePtn(const UnicodeString& dateSkeleton,
                                  const UnicodeString& timeSkeleton);
@@ -948,8 +990,8 @@
      * @param extendedBestSkeleton  extended best match skeleton
      * @return                      whether the interval pattern is found
      *                              through extending skeleton or not.
-     *                              TRUE if interval pattern is found by
-     *                              extending skeleton, FALSE otherwise.
+     *                              true if interval pattern is found by
+     *                              extending skeleton, false otherwise.
      */
     UBool setIntervalPattern(UCalendarDateFields field,
                              const UnicodeString* skeleton,
@@ -984,6 +1026,7 @@
      * @param differenceInfo           the difference between 2 skeletons
      *                                 1 means only field width differs
      *                                 2 means v/z exchange
+     * @param suppressDayPeriodField if true, remove the day period field from the pattern, if there is one
      * @param adjustedIntervalPattern  adjusted interval pattern
      */
     static void U_EXPORT2 adjustFieldWidth(
@@ -991,9 +1034,21 @@
                             const UnicodeString& bestMatchSkeleton,
                             const UnicodeString& bestMatchIntervalPattern,
                             int8_t differenceInfo,
+                            UBool suppressDayPeriodField,
                             UnicodeString& adjustedIntervalPattern);
 
     /**
+     * Does the same thing as UnicodeString::findAndReplace(), except that it won't perform
+     * the substitution inside quoted literal text.
+     * @param targetString The string to perform the find-replace operation on.
+     * @param strToReplace The string to search for and replace in the target string.
+     * @param strToReplaceWith The string to substitute in wherever `stringToReplace` was found.
+     */
+    static void U_EXPORT2 findReplaceInPattern(UnicodeString& targetString,
+                                               const UnicodeString& strToReplace,
+                                               const UnicodeString& strToReplaceWith);
+
+    /**
      * Concat a single date pattern with a time interval pattern,
      * set it into the intervalPatterns, while field is time field.
      * This is used to handle time interval patterns on skeleton with
@@ -1137,6 +1192,11 @@
     UnicodeString* fDatePattern;
     UnicodeString* fTimePattern;
     UnicodeString* fDateTimeFormat;
+
+    /**
+     * Other formatting information
+     */
+    UDisplayContext fCapitalizationContext;
 };
 
 inline UBool
diff --git a/libicu/cts_headers/unicode/dtitvinf.h b/libicu/cts_headers/unicode/dtitvinf.h
index 68bfa43..3b26085 100644
--- a/libicu/cts_headers/unicode/dtitvinf.h
+++ b/libicu/cts_headers/unicode/dtitvinf.h
@@ -307,8 +307,8 @@
 
     /** Get default order -- whether the first date in pattern is later date
                              or not.
-     * return default date ordering in interval pattern. TRUE if the first date
-     *        in pattern is later date, FALSE otherwise.
+     * return default date ordering in interval pattern. true if the first date
+     *        in pattern is later date, false otherwise.
      * @stable ICU 4.0
      */
     UBool getDefaultOrder() const;
diff --git a/libicu/cts_headers/unicode/dtptngen.h b/libicu/cts_headers/unicode/dtptngen.h
index dd99d58..828c0a9 100644
--- a/libicu/cts_headers/unicode/dtptngen.h
+++ b/libicu/cts_headers/unicode/dtptngen.h
@@ -77,6 +77,13 @@
 #ifndef U_HIDE_INTERNAL_API
 
     /**
+     * For ICU use only. Skips loading the standard date/time patterns (which is done via DateFormat).
+     *
+     * @internal
+     */
+    static DateTimePatternGenerator* U_EXPORT2 createInstanceNoStdPat(const Locale& uLocale, UErrorCode& status);
+
+    /**
      * For ICU use only
      *
      * @internal
@@ -526,7 +533,7 @@
     /**
      * Constructor.
      */
-    DateTimePatternGenerator(const Locale& locale, UErrorCode & status);
+    DateTimePatternGenerator(const Locale& locale, UErrorCode & status, UBool skipStdPatterns = false);
 
     /**
      * Copy constructor.
@@ -573,7 +580,7 @@
         // with #13183, no longer need flags for b, B
     };
 
-    void initData(const Locale &locale, UErrorCode &status);
+    void initData(const Locale &locale, UErrorCode &status, UBool skipStdPatterns = false);
     void addCanonicalItems(UErrorCode &status);
     void addICUPatterns(const Locale& locale, UErrorCode& status);
     void hackTimes(const UnicodeString& hackPattern, UErrorCode& status);
diff --git a/libicu/cts_headers/unicode/edits.h b/libicu/cts_headers/unicode/edits.h
index c3ceacc..bfa07fa 100644
--- a/libicu/cts_headers/unicode/edits.h
+++ b/libicu/cts_headers/unicode/edits.h
@@ -159,7 +159,7 @@
      * @param outErrorCode Set to an error code if it does not contain one already
      *                  and an error occurred while recording edits.
      *                  Otherwise unchanged.
-     * @return TRUE if U_FAILURE(outErrorCode)
+     * @return true if U_FAILURE(outErrorCode)
      * @stable ICU 59
      */
     UBool copyErrorTo(UErrorCode &outErrorCode) const;
@@ -171,7 +171,7 @@
      */
     int32_t lengthDelta() const { return delta; }
     /**
-     * @return TRUE if there are any change edits
+     * @return true if there are any change edits
      * @stable ICU 59
      */
     UBool hasChanges() const { return numChanges != 0; }
@@ -207,8 +207,8 @@
          */
         Iterator() :
                 array(nullptr), index(0), length(0),
-                remaining(0), onlyChanges_(FALSE), coarse(FALSE),
-                dir(0), changed(FALSE), oldLength_(0), newLength_(0),
+                remaining(0), onlyChanges_(false), coarse(false),
+                dir(0), changed(false), oldLength_(0), newLength_(0),
                 srcIndex(0), replIndex(0), destIndex(0) {}
         /**
          * Copy constructor.
@@ -226,7 +226,7 @@
          * @param errorCode ICU error code. Its input value must pass the U_SUCCESS() test,
          *                  or else the function returns immediately. Check for U_FAILURE()
          *                  on output or use with function chaining. (See User Guide for details.)
-         * @return TRUE if there is another edit
+         * @return true if there is another edit
          * @stable ICU 59
          */
         UBool next(UErrorCode &errorCode) { return next(onlyChanges_, errorCode); }
@@ -247,11 +247,11 @@
          * @param errorCode ICU error code. Its input value must pass the U_SUCCESS() test,
          *                  or else the function returns immediately. Check for U_FAILURE()
          *                  on output or use with function chaining. (See User Guide for details.)
-         * @return TRUE if the edit for the source index was found
+         * @return true if the edit for the source index was found
          * @stable ICU 59
          */
         UBool findSourceIndex(int32_t i, UErrorCode &errorCode) {
-            return findIndex(i, TRUE, errorCode) == 0;
+            return findIndex(i, true, errorCode) == 0;
         }
 
         /**
@@ -270,11 +270,11 @@
          * @param errorCode ICU error code. Its input value must pass the U_SUCCESS() test,
          *                  or else the function returns immediately. Check for U_FAILURE()
          *                  on output or use with function chaining. (See User Guide for details.)
-         * @return TRUE if the edit for the destination index was found
+         * @return true if the edit for the destination index was found
          * @stable ICU 60
          */
         UBool findDestinationIndex(int32_t i, UErrorCode &errorCode) {
-            return findIndex(i, FALSE, errorCode) == 0;
+            return findIndex(i, false, errorCode) == 0;
         }
 
         /**
@@ -328,8 +328,8 @@
         /**
          * Returns whether the edit currently represented by the iterator is a change edit.
          *
-         * @return TRUE if this edit replaces oldLength() units with newLength() different ones.
-         *         FALSE if oldLength units remain unchanged.
+         * @return true if this edit replaces oldLength() units with newLength() different ones.
+         *         false if oldLength units remain unchanged.
          * @stable ICU 59
          */
         UBool hasChange() const { return changed; }
@@ -347,8 +347,8 @@
          * {@link #destinationIndex}, or in the replacement string, which starts at
          * {@link #replacementIndex}.
          *
-         * @return the number of units in the modified string, if hasChange() is TRUE.
-         *         Same as oldLength if hasChange() is FALSE.
+         * @return the number of units in the modified string, if hasChange() is true.
+         *         Same as oldLength if hasChange() is false.
          * @stable ICU 59
          */
         int32_t newLength() const { return newLength_; }
@@ -436,7 +436,7 @@
      * @stable ICU 59
      */
     Iterator getCoarseChangesIterator() const {
-        return Iterator(array, length, TRUE, TRUE);
+        return Iterator(array, length, true, true);
     }
 
     /**
@@ -448,7 +448,7 @@
      * @stable ICU 59
      */
     Iterator getCoarseIterator() const {
-        return Iterator(array, length, FALSE, TRUE);
+        return Iterator(array, length, false, true);
     }
 
     /**
@@ -460,7 +460,7 @@
      * @stable ICU 59
      */
     Iterator getFineChangesIterator() const {
-        return Iterator(array, length, TRUE, FALSE);
+        return Iterator(array, length, true, false);
     }
 
     /**
@@ -471,7 +471,7 @@
      * @stable ICU 59
      */
     Iterator getFineIterator() const {
-        return Iterator(array, length, FALSE, FALSE);
+        return Iterator(array, length, false, false);
     }
 
     /**
diff --git a/libicu/cts_headers/unicode/fieldpos.h b/libicu/cts_headers/unicode/fieldpos.h
index 23ee386..ea0a23b 100644
--- a/libicu/cts_headers/unicode/fieldpos.h
+++ b/libicu/cts_headers/unicode/fieldpos.h
@@ -161,7 +161,7 @@
     /** 
      * Equality operator.
      * @param that    the object to be compared with.
-     * @return        TRUE if the two field positions are equal, FALSE otherwise.
+     * @return        true if the two field positions are equal, false otherwise.
      * @stable ICU 2.0
      */
     UBool              operator==(const FieldPosition& that) const;
@@ -169,7 +169,7 @@
     /** 
      * Equality operator.
      * @param that    the object to be compared with.
-     * @return        TRUE if the two field positions are not equal, FALSE otherwise.
+     * @return        true if the two field positions are not equal, false otherwise.
      * @stable ICU 2.0
      */
     UBool              operator!=(const FieldPosition& that) const;
diff --git a/libicu/cts_headers/unicode/filteredbrk.h b/libicu/cts_headers/unicode/filteredbrk.h
index 4293676..8b07e39 100644
--- a/libicu/cts_headers/unicode/filteredbrk.h
+++ b/libicu/cts_headers/unicode/filteredbrk.h
@@ -85,8 +85,8 @@
    * by the iterator.
    * @param string the string to suppress, such as "Mr."
    * @param status error code
-   * @return returns TRUE if the string was not present and now added,
-   * FALSE if the call was a no-op because the string was already being suppressed.
+   * @return returns true if the string was not present and now added,
+   * false if the call was a no-op because the string was already being suppressed.
    * @stable ICU 56
    */
   virtual UBool suppressBreakAfter(const UnicodeString& string, UErrorCode& status) = 0;
@@ -98,8 +98,8 @@
    * locale data which may be suppressing certain strings.
    * @param string the exception to remove
    * @param status error code
-   * @return returns TRUE if the string was present and now removed,
-   * FALSE if the call was a no-op because the string was not being suppressed.
+   * @return returns true if the string was present and now removed,
+   * false if the call was a no-op because the string was not being suppressed.
    * @stable ICU 56
    */
   virtual UBool unsuppressBreakAfter(const UnicodeString& string, UErrorCode& status) = 0;
diff --git a/libicu/cts_headers/unicode/fmtable.h b/libicu/cts_headers/unicode/fmtable.h
index 7bec4f6..3a09039 100644
--- a/libicu/cts_headers/unicode/fmtable.h
+++ b/libicu/cts_headers/unicode/fmtable.h
@@ -179,7 +179,7 @@
     /**
      * Equality comparison.
      * @param other    the object to be compared with.
-     * @return        TRUE if other are equal to this, FALSE otherwise.
+     * @return        true if other are equal to this, false otherwise.
      * @stable ICU 2.0
      */
     UBool          operator==(const Formattable &other) const;
@@ -187,7 +187,7 @@
     /**
      * Equality operator.
      * @param other    the object to be compared with.
-     * @return        TRUE if other are unequal to this, FALSE otherwise.
+     * @return        true if other are unequal to this, false otherwise.
      * @stable ICU 2.0
      */
     UBool          operator!=(const Formattable& other) const
@@ -277,9 +277,9 @@
     Type            getType(void) const;
 
     /**
-     * Returns TRUE if the data type of this Formattable object
+     * Returns true if the data type of this Formattable object
      * is kDouble, kLong, or kInt64
-     * @return TRUE if this is a pure numeric object
+     * @return true if this is a pure numeric object
      * @stable ICU 3.0
      */
     UBool           isNumeric() const;
diff --git a/libicu/cts_headers/unicode/formattedvalue.h b/libicu/cts_headers/unicode/formattedvalue.h
index e7ba4ec..5febea0 100644
--- a/libicu/cts_headers/unicode/formattedvalue.h
+++ b/libicu/cts_headers/unicode/formattedvalue.h
@@ -116,7 +116,7 @@
      * Gets the field category for the current position.
      *
      * The return value is well-defined only after
-     * FormattedValue#nextPosition returns TRUE.
+     * FormattedValue#nextPosition returns true.
      *
      * @return The field category saved in the instance.
      * @stable ICU 64
@@ -129,7 +129,7 @@
      * Gets the field for the current position.
      *
      * The return value is well-defined only after
-     * FormattedValue#nextPosition returns TRUE.
+     * FormattedValue#nextPosition returns true.
      *
      * @return The field saved in the instance.
      * @stable ICU 64
@@ -141,7 +141,7 @@
     /**
      * Gets the INCLUSIVE start index for the current position.
      *
-     * The return value is well-defined only after FormattedValue#nextPosition returns TRUE.
+     * The return value is well-defined only after FormattedValue#nextPosition returns true.
      *
      * @return The start index saved in the instance.
      * @stable ICU 64
@@ -153,7 +153,7 @@
     /**
      * Gets the EXCLUSIVE end index stored for the current position.
      *
-     * The return value is well-defined only after FormattedValue#nextPosition returns TRUE.
+     * The return value is well-defined only after FormattedValue#nextPosition returns true.
      *
      * @return The end index saved in the instance.
      * @stable ICU 64
@@ -301,8 +301,8 @@
      *         see ConstrainedFieldPosition#constrainCategory
      *         and ConstrainedFieldPosition#constrainField.
      * @param status Set if an error occurs.
-     * @return TRUE if a new occurrence of the field was found;
-     *         FALSE otherwise or if an error was set.
+     * @return true if a new occurrence of the field was found;
+     *         false otherwise or if an error was set.
      *
      * @stable ICU 64
      */
diff --git a/libicu/cts_headers/unicode/fpositer.h b/libicu/cts_headers/unicode/fpositer.h
index 3e8a010..87e811e 100644
--- a/libicu/cts_headers/unicode/fpositer.h
+++ b/libicu/cts_headers/unicode/fpositer.h
@@ -96,7 +96,7 @@
 
     /**
      * If the current position is valid, updates the FieldPosition values, advances the iterator,
-     * and returns TRUE, otherwise returns FALSE.
+     * and returns true, otherwise returns false.
      * @stable ICU 4.4
      */
     UBool next(FieldPosition& fp);
diff --git a/libicu/cts_headers/unicode/gregocal.h b/libicu/cts_headers/unicode/gregocal.h
index 4ce40da..e5e6df1 100644
--- a/libicu/cts_headers/unicode/gregocal.h
+++ b/libicu/cts_headers/unicode/gregocal.h
@@ -344,7 +344,7 @@
     UBool isLeapYear(int32_t year) const;
 
     /**
-     * Returns TRUE if the given Calendar object is equivalent to this
+     * Returns true if the given Calendar object is equivalent to this
      * one.  Calendar override.
      *
      * @param other the Calendar to be compared with this Calendar   
@@ -756,7 +756,7 @@
  public: // internal implementation
 
     /**
-     * @return TRUE if this calendar has the notion of a default century
+     * @return true if this calendar has the notion of a default century
      * @internal 
      */
     virtual UBool haveDefaultCentury() const;
diff --git a/libicu/cts_headers/unicode/icudataver.h b/libicu/cts_headers/unicode/icudataver.h
index 1cb202e..f218ed8 100644
--- a/libicu/cts_headers/unicode/icudataver.h
+++ b/libicu/cts_headers/unicode/icudataver.h
@@ -38,6 +38,6 @@
  * 
  * @stable ICU 49
  */
-U_STABLE void U_EXPORT2 u_getDataVersion(UVersionInfo dataVersionFillin, UErrorCode *status);
+U_CAPI void U_EXPORT2 u_getDataVersion(UVersionInfo dataVersionFillin, UErrorCode *status);
 
 #endif
diff --git a/libicu/cts_headers/unicode/icuplug.h b/libicu/cts_headers/unicode/icuplug.h
index 2e57b14..52f810d 100644
--- a/libicu/cts_headers/unicode/icuplug.h
+++ b/libicu/cts_headers/unicode/icuplug.h
@@ -208,7 +208,7 @@
  * @param dontUnload  set true if this plugin can't be unloaded
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uplug_setPlugNoUnload(UPlugData *plug, UBool dontUnload);
 
 /**
@@ -217,7 +217,7 @@
  * @param level the level of this plugin
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 uplug_setPlugLevel(UPlugData *plug, UPlugLevel level);
 
 /**
@@ -226,7 +226,7 @@
  * @return the level of this plugin
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL UPlugLevel U_EXPORT2
+U_CAPI UPlugLevel U_EXPORT2
 uplug_getPlugLevel(UPlugData *plug);
 
 /**
@@ -236,7 +236,7 @@
  * @return the lowest level of plug which can currently load
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL UPlugLevel U_EXPORT2
+U_CAPI UPlugLevel U_EXPORT2
 uplug_getCurrentLevel(void);
 
 
@@ -245,7 +245,7 @@
  * @return The error code of this plugin's load attempt.
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL UErrorCode U_EXPORT2
+U_CAPI UErrorCode U_EXPORT2
 uplug_getPlugLoadStatus(UPlugData *plug); 
 
 /**
@@ -254,7 +254,7 @@
  * @param name the name of this plugin. The first UPLUG_NAME_MAX characters willi be copied into a new buffer.
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 uplug_setPlugName(UPlugData *plug, const char *name);
 
 /**
@@ -263,7 +263,7 @@
  * @return the name of this plugin
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 uplug_getPlugName(UPlugData *plug);
 
 /**
@@ -272,7 +272,7 @@
  * @return the symbol name, or NULL
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 uplug_getSymbolName(UPlugData *plug);
 
 /**
@@ -282,7 +282,7 @@
  * @return the library name, or NULL
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 uplug_getLibraryName(UPlugData *plug, UErrorCode *status);
 
 /**
@@ -292,7 +292,7 @@
  * @return the library, or NULL
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL void * U_EXPORT2
+U_CAPI void * U_EXPORT2
 uplug_getLibrary(UPlugData *plug);
 
 /**
@@ -301,7 +301,7 @@
  * @return the context, or NULL if not set
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL void * U_EXPORT2
+U_CAPI void * U_EXPORT2
 uplug_getContext(UPlugData *plug);
 
 /**
@@ -310,7 +310,7 @@
  * @param context new context to set
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 uplug_setContext(UPlugData *plug, void *context);
 
 
@@ -321,7 +321,7 @@
  * @return configuration string, or else null.
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 uplug_getConfiguration(UPlugData *plug);
 
 /**
@@ -339,7 +339,7 @@
  * @return the next oldest plugin, or NULL if no more.
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL UPlugData* U_EXPORT2
+U_CAPI UPlugData* U_EXPORT2
 uplug_nextPlug(UPlugData *prior);
 
 /**
@@ -354,7 +354,7 @@
  * @return the new UPlugData associated with this plugin, or NULL if error.
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL UPlugData* U_EXPORT2
+U_CAPI UPlugData* U_EXPORT2
 uplug_loadPlugFromEntrypoint(UPlugEntrypoint *entrypoint, const char *config, UErrorCode *status);
 
 
@@ -368,7 +368,7 @@
  * @return the new UPlugData associated with this plugin, or NULL if error.
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL UPlugData* U_EXPORT2
+U_CAPI UPlugData* U_EXPORT2
 uplug_loadPlugFromLibrary(const char *libName, const char *sym, const char *config, UErrorCode *status);
 
 /**
@@ -378,7 +378,7 @@
  * @param status error result
  * @internal ICU 4.4 Technology Preview
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 uplug_removePlug(UPlugData *plug, UErrorCode *status);
 #endif  /* U_HIDE_INTERNAL_API */
 
diff --git a/libicu/cts_headers/unicode/idna.h b/libicu/cts_headers/unicode/idna.h
index 6dfcfe4..1305dc6 100644
--- a/libicu/cts_headers/unicode/idna.h
+++ b/libicu/cts_headers/unicode/idna.h
@@ -95,7 +95,7 @@
 
     /**
      * Converts a single domain name label into its ASCII form for DNS lookup.
-     * If any processing step fails, then info.hasErrors() will be TRUE and
+     * If any processing step fails, then info.hasErrors() will be true and
      * the result might not be an ASCII string.
      * The label might be modified according to the types of errors.
      * Labels with severe errors will be left in (or turned into) their Unicode form.
@@ -119,7 +119,7 @@
 
     /**
      * Converts a single domain name label into its Unicode form for human-readable display.
-     * If any processing step fails, then info.hasErrors() will be TRUE.
+     * If any processing step fails, then info.hasErrors() will be true.
      * The label might be modified according to the types of errors.
      *
      * The UErrorCode indicates an error only in exceptional cases,
@@ -141,7 +141,7 @@
 
     /**
      * Converts a whole domain name into its ASCII form for DNS lookup.
-     * If any processing step fails, then info.hasErrors() will be TRUE and
+     * If any processing step fails, then info.hasErrors() will be true and
      * the result might not be an ASCII string.
      * The domain name might be modified according to the types of errors.
      * Labels with severe errors will be left in (or turned into) their Unicode form.
@@ -165,7 +165,7 @@
 
     /**
      * Converts a whole domain name into its Unicode form for human-readable display.
-     * If any processing step fails, then info.hasErrors() will be TRUE.
+     * If any processing step fails, then info.hasErrors() will be true.
      * The domain name might be modified according to the types of errors.
      *
      * The UErrorCode indicates an error only in exceptional cases,
@@ -273,10 +273,10 @@
      * Constructor for stack allocation.
      * @stable ICU 4.6
      */
-    IDNAInfo() : errors(0), labelErrors(0), isTransDiff(FALSE), isBiDi(FALSE), isOkBiDi(TRUE) {}
+    IDNAInfo() : errors(0), labelErrors(0), isTransDiff(false), isBiDi(false), isOkBiDi(true) {}
     /**
      * Were there IDNA processing errors?
-     * @return TRUE if there were processing errors
+     * @return true if there were processing errors
      * @stable ICU 4.6
      */
     UBool hasErrors() const { return errors!=0; }
@@ -288,7 +288,7 @@
      */
     uint32_t getErrors() const { return errors; }
     /**
-     * Returns TRUE if transitional and nontransitional processing produce different results.
+     * Returns true if transitional and nontransitional processing produce different results.
      * This is the case when the input label or domain name contains
      * one or more deviation characters outside a Punycode label (see UTS #46).
      * <ul>
@@ -297,7 +297,7 @@
      * <li>With transitional processing, such characters are
      * mapped (sharp s/sigma) or removed (joiner/nonjoiner).
      * </ul>
-     * @return TRUE if transitional and nontransitional processing produce different results
+     * @return true if transitional and nontransitional processing produce different results
      * @stable ICU 4.6
      */
     UBool isTransitionalDifferent() const { return isTransDiff; }
@@ -310,9 +310,9 @@
 
     void reset() {
         errors=labelErrors=0;
-        isTransDiff=FALSE;
-        isBiDi=FALSE;
-        isOkBiDi=TRUE;
+        isTransDiff=false;
+        isBiDi=false;
+        isOkBiDi=true;
     }
 
     uint32_t errors, labelErrors;
diff --git a/libicu/cts_headers/unicode/listformatter.h b/libicu/cts_headers/unicode/listformatter.h
index 211055d..76a7289 100644
--- a/libicu/cts_headers/unicode/listformatter.h
+++ b/libicu/cts_headers/unicode/listformatter.h
@@ -23,6 +23,8 @@
 
 #if U_SHOW_CPLUSPLUS_API
 
+#if !UCONFIG_NO_FORMATTING
+
 #include "unicode/unistr.h"
 #include "unicode/locid.h"
 #include "unicode/formattedvalue.h"
@@ -65,7 +67,6 @@
  */
 
 
-#if !UCONFIG_NO_FORMATTING
 /**
  * An immutable class containing the result of a list formatting operation.
  *
@@ -135,7 +136,6 @@
         : fData(nullptr), fErrorCode(errorCode) {}
     friend class ListFormatter;
 };
-#endif // !UCONFIG_NO_FORMATTING
 
 
 /**
@@ -185,8 +185,6 @@
      */
     static ListFormatter* createInstance(const Locale& locale, UErrorCode& errorCode);
 
-#ifndef U_HIDE_DRAFT_API
-#if !UCONFIG_NO_FORMATTING
     /**
      * Creates a ListFormatter for the given locale, list type, and style.
      *
@@ -195,12 +193,10 @@
      * @param width The width of formatting to use.
      * @param errorCode ICU error code, set if no data available for the given locale.
      * @return A ListFormatter object created from internal data derived from CLDR data.
-     * @draft ICU 67
+     * @stable ICU 67
      */
     static ListFormatter* createInstance(
       const Locale& locale, UListFormatterType type, UListFormatterWidth width, UErrorCode& errorCode);
-#endif  /* !UCONFIG_NO_FORMATTING */
-#endif  /* U_HIDE_DRAFT_API */
   
 #ifndef U_HIDE_INTERNAL_API
     /**
@@ -239,7 +235,6 @@
     UnicodeString& format(const UnicodeString items[], int32_t n_items,
         UnicodeString& appendTo, UErrorCode& errorCode) const;
 
-#if !UCONFIG_NO_FORMATTING
     /**
      * Formats a list of strings to a FormattedList, which exposes field
      * position information. The FormattedList contains more information than
@@ -255,7 +250,6 @@
         const UnicodeString items[],
         int32_t n_items,
         UErrorCode& errorCode) const;
-#endif // !UCONFIG_NO_FORMATTING
 
 #ifndef U_HIDE_INTERNAL_API
     /**
@@ -296,6 +290,8 @@
 
 U_NAMESPACE_END
 
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
 #endif /* U_SHOW_CPLUSPLUS_API */
 
 #endif // __LISTFORMATTER_H__
diff --git a/libicu/cts_headers/unicode/localebuilder.h b/libicu/cts_headers/unicode/localebuilder.h
index c5836fe..27a894d 100644
--- a/libicu/cts_headers/unicode/localebuilder.h
+++ b/libicu/cts_headers/unicode/localebuilder.h
@@ -1,5 +1,5 @@
 // © 2018 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 #ifndef __LOCALEBUILDER_H__
 #define __LOCALEBUILDER_H__
 
@@ -92,11 +92,12 @@
     /**
      * Resets the LocaleBuilder to match the provided
      * [Unicode Locale Identifier](http://www.unicode.org/reports/tr35/tr35.html#unicode_locale_id) .
-     * Discards the existing state. the empty string cause the builder to be
-     * reset, like {@link #clear}.  Grandfathered tags are converted to their
-     * canonical form before being processed.  Otherwise, the <code>language
-     * tag</code> must be well-formed, or else the build() method will later
-     * report an U_ILLEGAL_ARGUMENT_ERROR.
+     * Discards the existing state.
+     * The empty string causes the builder to be reset, like {@link #clear}.
+     * Legacy language tags (marked as “Type: grandfathered” in BCP 47)
+     * are converted to their canonical form before being processed.
+     * Otherwise, the <code>language tag</code> must be well-formed,
+     * or else the build() method will later report an U_ILLEGAL_ARGUMENT_ERROR.
      *
      * <p>This method clears the internal UErrorCode.
      *
@@ -278,18 +279,16 @@
      */
     Locale build(UErrorCode& status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Sets the UErrorCode if an error occurred while recording sets.
      * Preserves older error codes in the outErrorCode.
      * @param outErrorCode Set to an error code that occurred while setting subtags.
      *                  Unchanged if there is no such error or if outErrorCode
      *                  already contained an error.
-     * @return TRUE if U_FAILURE(outErrorCode)
-     * @draft ICU 65
+     * @return true if U_FAILURE(outErrorCode)
+     * @stable ICU 65
      */
     UBool copyErrorTo(UErrorCode &outErrorCode) const;
-#endif  /* U_HIDE_DRAFT_API */
 
 private:
     friend class LocaleMatcher::Result;
diff --git a/libicu/cts_headers/unicode/localematcher.h b/libicu/cts_headers/unicode/localematcher.h
index 2e1a7a3..63a68b0 100644
--- a/libicu/cts_headers/unicode/localematcher.h
+++ b/libicu/cts_headers/unicode/localematcher.h
@@ -1,5 +1,5 @@
 // © 2019 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html#License
+// License & terms of use: http://www.unicode.org/copyright.html
 
 // localematcher.h
 // created: 2019may08 Markus W. Scherer
@@ -20,26 +20,24 @@
  * \brief C++ API: Locale matcher: User's desired locales vs. application's supported locales.
  */
 
-#ifndef U_FORCE_HIDE_DRAFT_API
-
 /**
  * Builder option for whether the language subtag or the script subtag is most important.
  *
- * @see Builder#setFavorSubtag(ULocMatchFavorSubtag)
- * @draft ICU 65
+ * @see LocaleMatcher::Builder#setFavorSubtag(ULocMatchFavorSubtag)
+ * @stable ICU 65
  */
 enum ULocMatchFavorSubtag {
     /**
      * Language differences are most important, then script differences, then region differences.
      * (This is the default behavior.)
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     ULOCMATCH_FAVOR_LANGUAGE,
     /**
      * Makes script differences matter relatively more than language differences.
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     ULOCMATCH_FAVOR_SCRIPT
 };
@@ -51,14 +49,14 @@
  * Builder option for whether all desired locales are treated equally or
  * earlier ones are preferred.
  *
- * @see Builder#setDemotionPerDesiredLocale(ULocMatchDemotion)
- * @draft ICU 65
+ * @see LocaleMatcher::Builder#setDemotionPerDesiredLocale(ULocMatchDemotion)
+ * @stable ICU 65
  */
 enum ULocMatchDemotion {
     /**
      * All desired locales are treated equally.
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     ULOCMATCH_DEMOTION_NONE,
     /**
@@ -85,7 +83,7 @@
      *        this is possible in future versions of the data.)
      * </ul>
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     ULOCMATCH_DEMOTION_REGION
 };
@@ -93,6 +91,8 @@
 typedef enum ULocMatchDemotion ULocMatchDemotion;
 #endif
 
+#ifndef U_FORCE_HIDE_DRAFT_API
+
 /**
  * Builder option for whether to include or ignore one-way (fallback) match data.
  * The LocaleMatcher uses CLDR languageMatch data which includes fallback (oneway=true) entries.
@@ -107,7 +107,7 @@
  * if there is a decent match for the original UI language, we want to use it,
  * but not if it is merely a fallback.
  *
- * @see Builder#setDirection(ULocMatchDirection)
+ * @see LocaleMatcher::Builder#setDirection(ULocMatchDirection)
  * @draft ICU 67
  */
 enum ULocMatchDirection {
@@ -129,6 +129,8 @@
 typedef enum ULocMatchDirection ULocMatchDirection;
 #endif
 
+#endif  // U_FORCE_HIDE_DRAFT_API
+
 struct UHashtable;
 
 U_NAMESPACE_BEGIN
@@ -181,7 +183,7 @@
  *
  * <p>This class is not intended for public subclassing.
  *
- * @draft ICU 65
+ * @stable ICU 65
  */
 class U_COMMON_API LocaleMatcher : public UMemory {
 public:
@@ -189,7 +191,7 @@
      * Data for the best-matching pair of a desired and a supported locale.
      * Movable but not copyable.
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     class U_COMMON_API Result : public UMemory {
     public:
@@ -198,14 +200,14 @@
          * This object will have the same contents that the source object had.
          *
          * @param src Result to move contents from.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Result(Result &&src) U_NOEXCEPT;
 
         /**
          * Destructor.
          *
-         * @draft ICU 65
+         * @stable ICU 65
          */
         ~Result();
 
@@ -214,28 +216,27 @@
          * This object will have the same contents that the source object had.
          *
          * @param src Result to move contents from.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Result &operator=(Result &&src) U_NOEXCEPT;
 
-#ifndef U_HIDE_DRAFT_API
         /**
          * Returns the best-matching desired locale.
          * nullptr if the list of desired locales is empty or if none matched well enough.
          *
          * @return the best-matching desired locale, or nullptr.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         inline const Locale *getDesiredLocale() const { return desiredLocale; }
 
         /**
          * Returns the best-matching supported locale.
          * If none matched well enough, this is the default locale.
-         * The default locale is nullptr if the list of supported locales is empty and
-         * no explicit default locale is set.
+         * The default locale is nullptr if Builder::setNoDefaultLocale() was called,
+         * or if the list of supported locales is empty and no explicit default locale is set.
          *
          * @return the best-matching supported locale, or nullptr.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         inline const Locale *getSupportedLocale() const { return supportedLocale; }
 
@@ -244,7 +245,7 @@
          * -1 if the list of desired locales is empty or if none matched well enough.
          *
          * @return the index of the best-matching desired locale, or -1.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         inline int32_t getDesiredIndex() const { return desiredIndex; }
 
@@ -256,7 +257,7 @@
          * -1 if the list of supported locales is empty or if none matched well enough.
          *
          * @return the index of the best-matching supported locale, or -1.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         inline int32_t getSupportedIndex() const { return supportedIndex; }
 
@@ -270,10 +271,9 @@
          * <p>Example: desired=ar-SA-u-nu-latn, supported=ar-EG, resolved locale=ar-SA-u-nu-latn
          *
          * @return a locale combining the best-matching desired and supported locales.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Locale makeResolvedLocale(UErrorCode &errorCode) const;
-#endif  // U_HIDE_DRAFT_API
 
     private:
         Result(const Locale *desired, const Locale *supported,
@@ -298,8 +298,7 @@
      * LocaleMatcher builder.
      * Movable but not copyable.
      *
-     * @see LocaleMatcher#builder()
-     * @draft ICU 65
+     * @stable ICU 65
      */
     class U_COMMON_API Builder : public UMemory {
     public:
@@ -307,7 +306,7 @@
          * Constructs a builder used in chaining parameters for building a LocaleMatcher.
          *
          * @return a new Builder object
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Builder() {}
 
@@ -316,14 +315,14 @@
          * This builder will have the same contents that the source builder had.
          *
          * @param src Builder to move contents from.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Builder(Builder &&src) U_NOEXCEPT;
 
         /**
          * Destructor.
          *
-         * @draft ICU 65
+         * @stable ICU 65
          */
         ~Builder();
 
@@ -332,11 +331,10 @@
          * This builder will have the same contents that the source builder had.
          *
          * @param src Builder to move contents from.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Builder &operator=(Builder &&src) U_NOEXCEPT;
 
-#ifndef U_HIDE_DRAFT_API
         /**
          * Parses an Accept-Language string
          * (<a href="https://tools.ietf.org/html/rfc2616#section-14.4">RFC 2616 Section 14.4</a>),
@@ -346,7 +344,7 @@
          *
          * @param locales the Accept-Language string of locales to set
          * @return this Builder object
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Builder &setSupportedLocalesFromListString(StringPiece locales);
 
@@ -357,7 +355,7 @@
          *
          * @param locales the list of locale
          * @return this Builder object
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Builder &setSupportedLocales(Locale::Iterator &locales);
 
@@ -372,7 +370,7 @@
          * @param begin Start of range.
          * @param end Exclusive end of range.
          * @return this Builder object
-         * @draft ICU 65
+         * @stable ICU 65
          */
         template<typename Iter>
         Builder &setSupportedLocales(Iter begin, Iter end) {
@@ -397,7 +395,7 @@
          * @param end Exclusive end of range.
          * @param converter Converter from *begin to const Locale & or compatible.
          * @return this Builder object
-         * @draft ICU 65
+         * @stable ICU 65
          */
         template<typename Iter, typename Conv>
         Builder &setSupportedLocalesViaConverter(Iter begin, Iter end, Conv converter) {
@@ -415,17 +413,31 @@
          *
          * @param locale another locale
          * @return this Builder object
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Builder &addSupportedLocale(const Locale &locale);
 
+#ifndef U_HIDE_DRAFT_API
+        /**
+         * Sets no default locale.
+         * There will be no explicit or implicit default locale.
+         * If there is no good match, then the matcher will return nullptr for the
+         * best supported locale.
+         *
+         * @draft ICU 68
+         */
+        Builder &setNoDefaultLocale();
+#endif  // U_HIDE_DRAFT_API
+
         /**
          * Sets the default locale; if nullptr, or if it is not set explicitly,
          * then the first supported locale is used as the default locale.
+         * There is no default locale at all (nullptr will be returned instead)
+         * if setNoDefaultLocale() is called.
          *
          * @param defaultLocale the default locale (will be copied)
          * @return this Builder object
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Builder &setDefaultLocale(const Locale *defaultLocale);
 
@@ -437,7 +449,7 @@
          *
          * @param subtag the subtag to favor
          * @return this Builder object
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Builder &setFavorSubtag(ULocMatchFavorSubtag subtag);
 
@@ -447,10 +459,11 @@
          *
          * @param demotion the demotion per desired locale to set.
          * @return this Builder object
-         * @draft ICU 65
+         * @stable ICU 65
          */
         Builder &setDemotionPerDesiredLocale(ULocMatchDemotion demotion);
 
+#ifndef U_HIDE_DRAFT_API
         /**
          * Option for whether to include or ignore one-way (fallback) match data.
          * By default, they are included.
@@ -465,6 +478,32 @@
             }
             return *this;
         }
+#endif  // U_HIDE_DRAFT_API
+
+#ifndef U_HIDE_DRAFT_API
+        /**
+         * Sets the maximum distance for an acceptable match.
+         * The matcher will return a match for a pair of locales only if
+         * they match at least as well as the pair given here.
+         *
+         * For example, setMaxDistance(en-US, en-GB) limits matches to ones where the
+         * (desired, support) locales have a distance no greater than a region subtag difference.
+         * This is much stricter than the CLDR default.
+         *
+         * The details of locale matching are subject to changes in
+         * CLDR data and in the algorithm.
+         * Specifying a maximum distance in relative terms via a sample pair of locales
+         * insulates from changes that affect all distance metrics similarly,
+         * but some changes will necessarily affect relative distances between
+         * different pairs of locales.
+         *
+         * @param desired the desired locale for distance comparison.
+         * @param supported the supported locale for distance comparison.
+         * @return this Builder object
+         * @draft ICU 68
+         */
+        Builder &setMaxDistance(const Locale &desired, const Locale &supported);
+#endif  // U_HIDE_DRAFT_API
 
         /**
          * Sets the UErrorCode if an error occurred while setting parameters.
@@ -473,8 +512,8 @@
          * @param outErrorCode Set to an error code if it does not contain one already
          *                  and an error occurred while setting parameters.
          *                  Otherwise unchanged.
-         * @return TRUE if U_FAILURE(outErrorCode)
-         * @draft ICU 65
+         * @return true if U_FAILURE(outErrorCode)
+         * @stable ICU 65
          */
         UBool copyErrorTo(UErrorCode &outErrorCode) const;
 
@@ -485,11 +524,10 @@
          * @param errorCode ICU error code. Its input value must pass the U_SUCCESS() test,
          *                  or else the function returns immediately. Check for U_FAILURE()
          *                  on output or use with function chaining. (See User Guide for details.)
-         * @return new LocaleMatcher.
-         * @draft ICU 65
+         * @return LocaleMatcher
+         * @stable ICU 65
          */
         LocaleMatcher build(UErrorCode &errorCode) const;
-#endif  // U_HIDE_DRAFT_API
 
     private:
         friend class LocaleMatcher;
@@ -505,8 +543,11 @@
         int32_t thresholdDistance_ = -1;
         ULocMatchDemotion demotion_ = ULOCMATCH_DEMOTION_REGION;
         Locale *defaultLocale_ = nullptr;
+        bool withDefault_ = true;
         ULocMatchFavorSubtag favor_ = ULOCMATCH_FAVOR_LANGUAGE;
         ULocMatchDirection direction_ = ULOCMATCH_DIRECTION_WITH_ONE_WAY;
+        Locale *maxDistanceDesired_ = nullptr;
+        Locale *maxDistanceSupported_ = nullptr;
     };
 
     // FYI No public LocaleMatcher constructors in C++; use the Builder.
@@ -515,13 +556,13 @@
      * Move copy constructor; might modify the source.
      * This matcher will have the same settings that the source matcher had.
      * @param src source matcher
-     * @draft ICU 65
+     * @stable ICU 65
      */
     LocaleMatcher(LocaleMatcher &&src) U_NOEXCEPT;
 
     /**
      * Destructor.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     ~LocaleMatcher();
 
@@ -531,11 +572,10 @@
      * The behavior is undefined if *this and src are the same object.
      * @param src source matcher
      * @return *this
-     * @draft ICU 65
+     * @stable ICU 65
      */
     LocaleMatcher &operator=(LocaleMatcher &&src) U_NOEXCEPT;
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns the supported locale which best matches the desired locale.
      *
@@ -544,7 +584,7 @@
      *                  or else the function returns immediately. Check for U_FAILURE()
      *                  on output or use with function chaining. (See User Guide for details.)
      * @return the best-matching supported locale.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     const Locale *getBestMatch(const Locale &desiredLocale, UErrorCode &errorCode) const;
 
@@ -556,7 +596,7 @@
      *                  or else the function returns immediately. Check for U_FAILURE()
      *                  on output or use with function chaining. (See User Guide for details.)
      * @return the best-matching supported locale.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     const Locale *getBestMatch(Locale::Iterator &desiredLocales, UErrorCode &errorCode) const;
 
@@ -572,7 +612,7 @@
      *                  or else the function returns immediately. Check for U_FAILURE()
      *                  on output or use with function chaining. (See User Guide for details.)
      * @return the best-matching supported locale.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     const Locale *getBestMatchForListString(StringPiece desiredLocaleList, UErrorCode &errorCode) const;
 
@@ -586,7 +626,7 @@
      *                  or else the function returns immediately. Check for U_FAILURE()
      *                  on output or use with function chaining. (See User Guide for details.)
      * @return the best-matching pair of the desired and a supported locale.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     Result getBestMatchResult(const Locale &desiredLocale, UErrorCode &errorCode) const;
 
@@ -600,9 +640,25 @@
      *                  or else the function returns immediately. Check for U_FAILURE()
      *                  on output or use with function chaining. (See User Guide for details.)
      * @return the best-matching pair of a desired and a supported locale.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     Result getBestMatchResult(Locale::Iterator &desiredLocales, UErrorCode &errorCode) const;
+
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns true if the pair of locales matches acceptably.
+     * This is influenced by Builder options such as setDirection(), setFavorSubtag(),
+     * and setMaxDistance().
+     *
+     * @param desired The desired locale.
+     * @param supported The supported locale.
+     * @param errorCode ICU error code. Its input value must pass the U_SUCCESS() test,
+     *                  or else the function returns immediately. Check for U_FAILURE()
+     *                  on output or use with function chaining. (See User Guide for details.)
+     * @return true if the pair of locales matches acceptably.
+     * @draft ICU 68
+     */
+    UBool isMatch(const Locale &desired, const Locale &supported, UErrorCode &errorCode) const;
 #endif  // U_HIDE_DRAFT_API
 
 #ifndef U_HIDE_INTERNAL_API
@@ -660,6 +716,5 @@
 
 U_NAMESPACE_END
 
-#endif  // U_FORCE_HIDE_DRAFT_API
 #endif  // U_SHOW_CPLUSPLUS_API
 #endif  // __LOCALEMATCHER_H__
diff --git a/libicu/cts_headers/unicode/localpointer.h b/libicu/cts_headers/unicode/localpointer.h
index 61c3020..2a65f2d 100644
--- a/libicu/cts_headers/unicode/localpointer.h
+++ b/libicu/cts_headers/unicode/localpointer.h
@@ -88,13 +88,13 @@
     ~LocalPointerBase() { /* delete ptr; */ }
     /**
      * NULL check.
-     * @return TRUE if ==NULL
+     * @return true if ==NULL
      * @stable ICU 4.4
      */
     UBool isNull() const { return ptr==NULL; }
     /**
      * NULL check.
-     * @return TRUE if !=NULL
+     * @return true if !=NULL
      * @stable ICU 4.4
      */
     UBool isValid() const { return ptr!=NULL; }
diff --git a/libicu/cts_headers/unicode/locid.h b/libicu/cts_headers/unicode/locid.h
index 1d031da..ba858d7 100644
--- a/libicu/cts_headers/unicode/locid.h
+++ b/libicu/cts_headers/unicode/locid.h
@@ -253,7 +253,7 @@
     /**
      * Construct a locale from language, country, variant.
      * If an error occurs, then the constructed object will be "bogus"
-     * (isBogus() will return TRUE).
+     * (isBogus() will return true).
      *
      * @param language Lowercase two-letter or three-letter ISO-639 code.
      *  This parameter can instead be an ICU style C locale (e.g. "en_US"),
@@ -393,13 +393,17 @@
      * If the specified language tag contains any ill-formed subtags,
      * the first such subtag and all following subtags are ignored.
      * <p>
-     * This implements the 'Language-Tag' production of BCP47, and so
-     * supports grandfathered (regular and irregular) as well as private
-     * use language tags.  Private use tags are represented as 'x-whatever',
-     * and grandfathered tags are converted to their canonical replacements
-     * where they exist.  Note that a few grandfathered tags have no modern
-     * replacement, these will be converted using the fallback described in
+     * This implements the 'Language-Tag' production of BCP 47, and so
+     * supports legacy language tags (marked as “Type: grandfathered” in BCP 47)
+     * (regular and irregular) as well as private use language tags.
+     *
+     * Private use tags are represented as 'x-whatever',
+     * and legacy tags are converted to their canonical replacements where they exist.
+     *
+     * Note that a few legacy tags have no modern replacement;
+     * these will be converted using the fallback described in
      * the first paragraph, so some information might be lost.
+     *
      * @param tag     the input BCP47 language tag.
      * @param status  error information if creating the Locale failed.
      * @return        the Locale for the specified BCP47 language tag.
@@ -795,14 +799,14 @@
     /**
      * Returns whether this locale's script is written right-to-left.
      * If there is no script subtag, then the likely script is used, see uloc_addLikelySubtags().
-     * If no likely script is known, then FALSE is returned.
+     * If no likely script is known, then false is returned.
      *
      * A script is right-to-left according to the CLDR script metadata
      * which corresponds to whether the script's letters have Bidi_Class=R or AL.
      *
-     * Returns TRUE for "ar" and "en-Hebr", FALSE for "zh" and "fa-Cyrl".
+     * Returns true for "ar" and "en-Hebr", false for "zh" and "fa-Cyrl".
      *
-     * @return TRUE if the locale's script is written right-to-left
+     * @return true if the locale's script is written right-to-left
      * @stable ICU 54
      */
     UBool isRightToLeft() const;
@@ -956,7 +960,7 @@
 
     /**
      * Gets the bogus state. Locale object can be bogus if it doesn't exist
-     * @return FALSE if it is a real locale, TRUE if it is a bogus locale
+     * @return false if it is a real locale, true if it is a bogus locale
      * @stable ICU 2.1
      */
     inline UBool isBogus(void) const;
@@ -1005,32 +1009,31 @@
      */
     virtual UClassID getDynamicClassID() const;
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * A Locale iterator interface similar to a Java Iterator<Locale>.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     class U_COMMON_API Iterator /* not : public UObject because this is an interface/mixin class */ {
     public:
-        /** @draft ICU 65 */
+        /** @stable ICU 65 */
         virtual ~Iterator();
 
         /**
-         * @return TRUE if next() can be called again.
-         * @draft ICU 65
+         * @return true if next() can be called again.
+         * @stable ICU 65
          */
         virtual UBool hasNext() const = 0;
 
         /**
          * @return the next locale.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         virtual const Locale &next() = 0;
     };
 
     /**
      * A generic Locale iterator implementation over Locale input iterators.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     template<typename Iter>
     class RangeIterator : public Iterator, public UMemory {
@@ -1042,19 +1045,19 @@
          *
          * @param begin Start of range.
          * @param end Exclusive end of range.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         RangeIterator(Iter begin, Iter end) : it_(begin), end_(end) {}
 
         /**
-         * @return TRUE if next() can be called again.
-         * @draft ICU 65
+         * @return true if next() can be called again.
+         * @stable ICU 65
          */
         UBool hasNext() const override { return it_ != end_; }
 
         /**
          * @return the next locale.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         const Locale &next() override { return *it_++; }
 
@@ -1066,7 +1069,7 @@
     /**
      * A generic Locale iterator implementation over Locale input iterators.
      * Calls the converter to convert each *begin to a const Locale &.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     template<typename Iter, typename Conv>
     class ConvertingIterator : public Iterator, public UMemory {
@@ -1079,20 +1082,20 @@
          * @param begin Start of range.
          * @param end Exclusive end of range.
          * @param converter Converter from *begin to const Locale & or compatible.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         ConvertingIterator(Iter begin, Iter end, Conv converter) :
                 it_(begin), end_(end), converter_(converter) {}
 
         /**
-         * @return TRUE if next() can be called again.
-         * @draft ICU 65
+         * @return true if next() can be called again.
+         * @stable ICU 65
          */
         UBool hasNext() const override { return it_ != end_; }
 
         /**
          * @return the next locale.
-         * @draft ICU 65
+         * @stable ICU 65
          */
         const Locale &next() override { return converter_(*it_++); }
 
@@ -1101,7 +1104,6 @@
         const Iter end_;
         Conv converter_;
     };
-#endif  // U_HIDE_DRAFT_API
 
 protected: /* only protected for testing purposes. DO NOT USE. */
 #ifndef U_HIDE_INTERNAL_API
diff --git a/libicu/cts_headers/unicode/measfmt.h b/libicu/cts_headers/unicode/measfmt.h
index b4f9048..2155ad5 100644
--- a/libicu/cts_headers/unicode/measfmt.h
+++ b/libicu/cts_headers/unicode/measfmt.h
@@ -309,7 +309,7 @@
     /**
      * ICU use only.
      * Allows subclass to change locale. Note that this method also changes
-     * the NumberFormat object. Returns TRUE if locale changed; FALSE if no
+     * the NumberFormat object. Returns true if locale changed; false if no
      * change was made.
      * @internal.
      */
diff --git a/libicu/cts_headers/unicode/measunit.h b/libicu/cts_headers/unicode/measunit.h
index e240092..d86bab3 100644
--- a/libicu/cts_headers/unicode/measunit.h
+++ b/libicu/cts_headers/unicode/measunit.h
@@ -434,7 +434,7 @@
      * For example, if the receiver is "kilowatt" and the argument is "hour-per-day", then the
      * unit "kilowatt-hour-per-day" is returned.
      *
-     * NOTE: Only works on SINGLE and COMPOUND units. If either unit (receivee and argument) is a
+     * NOTE: Only works on SINGLE and COMPOUND units. If either unit (receiver and argument) is a
      * MIXED unit, an error will occur. For more information, see UMeasureUnitComplexity.
      *
      * @param other The MeasureUnit to multiply with the target.
@@ -445,9 +445,9 @@
     MeasureUnit product(const MeasureUnit& other, UErrorCode& status) const;
 #endif // U_HIDE_DRAFT_API
 
-#ifndef U_HIDE_INTERNAL_API
+#ifndef U_HIDE_DRAFT_API
     /**
-     * Gets the list of SINGLE units contained within a MIXED of COMPOUND unit.
+     * Gets the list of SINGLE units contained within a MIXED or COMPOUND unit.
      *
      * Examples:
      * - Given "meter-kilogram-per-second", three units will be returned: "meter",
@@ -457,15 +457,12 @@
      *
      * If this is a SINGLE unit, an array of length 1 will be returned.
      *
-     * TODO(ICU-21021): Finalize this API and propose it as draft.
-     *
-     * @param outCount The number of elements in the return array.
      * @param status Set if an error occurs.
-     * @return An array of single units, owned by the caller.
-     * @internal ICU 67 Technical Preview
+     * @return A pair with the list of units as a LocalArray and the number of units in the list.
+     * @draft ICU 68
      */
-    LocalArray<MeasureUnit> splitToSingleUnits(int32_t& outCount, UErrorCode& status) const;
-#endif // U_HIDE_INTERNAL_API
+    inline std::pair<LocalArray<MeasureUnit>, int32_t> splitToSingleUnits(UErrorCode& status) const;
+#endif // U_HIDE_DRAFT_API
 
     /**
      * getAvailable gets all of the available units.
@@ -540,33 +537,10 @@
 #ifndef U_HIDE_INTERNAL_API
     /**
      * ICU use only.
-     * Returns associated array index for this measure unit. Only valid for
-     * non-currency measure units.
+     * Returns associated array index for this measure unit.
      * @internal
      */
-    int32_t getIndex() const;
-
-    /**
-     * ICU use only.
-     * Returns maximum value from getIndex plus 1.
-     * @internal
-     */
-    static int32_t getIndexCount();
-
-    /**
-     * ICU use only.
-     * @return the unit.getIndex() of the unit which has this unit.getType() and unit.getSubtype(),
-     *         or a negative value if there is no such unit
-     * @internal
-     */
-    static int32_t internalGetIndexForTypeAndSubtype(const char *type, const char *subtype);
-
-    /**
-     * ICU use only.
-     * @internal
-     */
-    static MeasureUnit resolveUnitPerUnit(
-            const MeasureUnit &unit, const MeasureUnit &perUnit, bool* isResolved);
+    int32_t getOffset() const;
 #endif /* U_HIDE_INTERNAL_API */
 
 // All code between the "Start generated createXXX methods" comment and
@@ -914,22 +888,6 @@
     static MeasureUnit getMole();
 
     /**
-     * Returns by pointer, unit of concentr: permillion.
-     * Caller owns returned value and must free it.
-     * Also see {@link #getPartPerMillion()}.
-     * @param status ICU error code.
-     * @stable ICU 57
-     */
-    static MeasureUnit *createPartPerMillion(UErrorCode &status);
-
-    /**
-     * Returns by value, unit of concentr: permillion.
-     * Also see {@link #createPartPerMillion()}.
-     * @stable ICU 64
-     */
-    static MeasureUnit getPartPerMillion();
-
-    /**
      * Returns by pointer, unit of concentr: percent.
      * Caller owns returned value and must free it.
      * Also see {@link #getPercent()}.
@@ -962,6 +920,22 @@
     static MeasureUnit getPermille();
 
     /**
+     * Returns by pointer, unit of concentr: permillion.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getPartPerMillion()}.
+     * @param status ICU error code.
+     * @stable ICU 57
+     */
+    static MeasureUnit *createPartPerMillion(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of concentr: permillion.
+     * Also see {@link #createPartPerMillion()}.
+     * @stable ICU 64
+     */
+    static MeasureUnit getPartPerMillion();
+
+    /**
      * Returns by pointer, unit of concentr: permyriad.
      * Caller owns returned value and must free it.
      * Also see {@link #getPermyriad()}.
@@ -1265,23 +1239,21 @@
      */
     static MeasureUnit getDayPerson();
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of duration: decade.
      * Caller owns returned value and must free it.
      * Also see {@link #getDecade()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createDecade(UErrorCode &status);
 
     /**
      * Returns by value, unit of duration: decade.
      * Also see {@link #createDecade()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getDecade();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of duration: hour.
@@ -1667,23 +1639,21 @@
      */
     static MeasureUnit getKilowattHour();
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of energy: therm-us.
      * Caller owns returned value and must free it.
      * Also see {@link #getThermUs()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createThermUs(UErrorCode &status);
 
     /**
      * Returns by value, unit of energy: therm-us.
      * Also see {@link #createThermUs()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getThermUs();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of force: newton.
@@ -1783,129 +1753,133 @@
 
 #ifndef U_HIDE_DRAFT_API
     /**
+     * Returns by pointer, unit of graphics: dot.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getDot()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createDot(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of graphics: dot.
+     * Also see {@link #createDot()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getDot();
+#endif /* U_HIDE_DRAFT_API */
+
+    /**
      * Returns by pointer, unit of graphics: dot-per-centimeter.
      * Caller owns returned value and must free it.
      * Also see {@link #getDotPerCentimeter()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createDotPerCentimeter(UErrorCode &status);
 
     /**
      * Returns by value, unit of graphics: dot-per-centimeter.
      * Also see {@link #createDotPerCentimeter()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getDotPerCentimeter();
-#endif /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of graphics: dot-per-inch.
      * Caller owns returned value and must free it.
      * Also see {@link #getDotPerInch()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createDotPerInch(UErrorCode &status);
 
     /**
      * Returns by value, unit of graphics: dot-per-inch.
      * Also see {@link #createDotPerInch()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getDotPerInch();
-#endif /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of graphics: em.
      * Caller owns returned value and must free it.
      * Also see {@link #getEm()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createEm(UErrorCode &status);
 
     /**
      * Returns by value, unit of graphics: em.
      * Also see {@link #createEm()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getEm();
-#endif /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of graphics: megapixel.
      * Caller owns returned value and must free it.
      * Also see {@link #getMegapixel()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createMegapixel(UErrorCode &status);
 
     /**
      * Returns by value, unit of graphics: megapixel.
      * Also see {@link #createMegapixel()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getMegapixel();
-#endif /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of graphics: pixel.
      * Caller owns returned value and must free it.
      * Also see {@link #getPixel()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createPixel(UErrorCode &status);
 
     /**
      * Returns by value, unit of graphics: pixel.
      * Also see {@link #createPixel()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getPixel();
-#endif /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of graphics: pixel-per-centimeter.
      * Caller owns returned value and must free it.
      * Also see {@link #getPixelPerCentimeter()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createPixelPerCentimeter(UErrorCode &status);
 
     /**
      * Returns by value, unit of graphics: pixel-per-centimeter.
      * Also see {@link #createPixelPerCentimeter()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getPixelPerCentimeter();
-#endif /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of graphics: pixel-per-inch.
      * Caller owns returned value and must free it.
      * Also see {@link #getPixelPerInch()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createPixelPerInch(UErrorCode &status);
 
     /**
      * Returns by value, unit of graphics: pixel-per-inch.
      * Also see {@link #createPixelPerInch()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getPixelPerInch();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: astronomical-unit.
@@ -1955,6 +1929,24 @@
      */
     static MeasureUnit getDecimeter();
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of length: earth-radius.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getEarthRadius()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createEarthRadius(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of length: earth-radius.
+     * Also see {@link #createEarthRadius()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getEarthRadius();
+#endif /* U_HIDE_DRAFT_API */
+
     /**
      * Returns by pointer, unit of length: fathom.
      * Caller owns returned value and must free it.
@@ -2243,6 +2235,42 @@
      */
     static MeasureUnit getYard();
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of light: candela.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getCandela()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createCandela(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of light: candela.
+     * Also see {@link #createCandela()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getCandela();
+#endif /* U_HIDE_DRAFT_API */
+
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of light: lumen.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getLumen()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createLumen(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of light: lumen.
+     * Also see {@link #createLumen()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getLumen();
+#endif /* U_HIDE_DRAFT_API */
+
     /**
      * Returns by pointer, unit of light: lux.
      * Caller owns returned value and must free it.
@@ -2323,6 +2351,24 @@
      */
     static MeasureUnit getEarthMass();
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of mass: grain.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getGrain()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createGrain(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of mass: grain.
+     * Also see {@link #createGrain()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getGrain();
+#endif /* U_HIDE_DRAFT_API */
+
     /**
      * Returns by pointer, unit of mass: gram.
      * Caller owns returned value and must free it.
@@ -2611,23 +2657,21 @@
      */
     static MeasureUnit getAtmosphere();
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of pressure: bar.
      * Caller owns returned value and must free it.
      * Also see {@link #getBar()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createBar(UErrorCode &status);
 
     /**
      * Returns by value, unit of pressure: bar.
      * Also see {@link #createBar()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getBar();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of pressure: hectopascal.
@@ -2725,23 +2769,21 @@
      */
     static MeasureUnit getMillimeterOfMercury();
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of pressure: pascal.
      * Caller owns returned value and must free it.
      * Also see {@link #getPascal()}.
      * @param status ICU error code.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit *createPascal(UErrorCode &status);
 
     /**
      * Returns by value, unit of pressure: pascal.
      * Also see {@link #createPascal()}.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     static MeasureUnit getPascal();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of pressure: pound-force-per-square-inch.
@@ -3143,6 +3185,78 @@
      */
     static MeasureUnit getDeciliter();
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of volume: dessert-spoon.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getDessertSpoon()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createDessertSpoon(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of volume: dessert-spoon.
+     * Also see {@link #createDessertSpoon()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getDessertSpoon();
+#endif /* U_HIDE_DRAFT_API */
+
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of volume: dessert-spoon-imperial.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getDessertSpoonImperial()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createDessertSpoonImperial(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of volume: dessert-spoon-imperial.
+     * Also see {@link #createDessertSpoonImperial()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getDessertSpoonImperial();
+#endif /* U_HIDE_DRAFT_API */
+
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of volume: dram.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getDram()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createDram(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of volume: dram.
+     * Also see {@link #createDram()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getDram();
+#endif /* U_HIDE_DRAFT_API */
+
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of volume: drop.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getDrop()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createDrop(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of volume: drop.
+     * Also see {@link #createDrop()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getDrop();
+#endif /* U_HIDE_DRAFT_API */
+
     /**
      * Returns by pointer, unit of volume: fluid-ounce.
      * Caller owns returned value and must free it.
@@ -3223,6 +3337,24 @@
      */
     static MeasureUnit getHectoliter();
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of volume: jigger.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getJigger()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createJigger(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of volume: jigger.
+     * Also see {@link #createJigger()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getJigger();
+#endif /* U_HIDE_DRAFT_API */
+
     /**
      * Returns by pointer, unit of volume: liter.
      * Caller owns returned value and must free it.
@@ -3271,6 +3403,24 @@
      */
     static MeasureUnit getMilliliter();
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of volume: pinch.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getPinch()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createPinch(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of volume: pinch.
+     * Also see {@link #createPinch()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getPinch();
+#endif /* U_HIDE_DRAFT_API */
+
     /**
      * Returns by pointer, unit of volume: pint.
      * Caller owns returned value and must free it.
@@ -3319,6 +3469,24 @@
      */
     static MeasureUnit getQuart();
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Returns by pointer, unit of volume: quart-imperial.
+     * Caller owns returned value and must free it.
+     * Also see {@link #getQuartImperial()}.
+     * @param status ICU error code.
+     * @draft ICU 68
+     */
+    static MeasureUnit *createQuartImperial(UErrorCode &status);
+
+    /**
+     * Returns by value, unit of volume: quart-imperial.
+     * Also see {@link #createQuartImperial()}.
+     * @draft ICU 68
+     */
+    static MeasureUnit getQuartImperial();
+#endif /* U_HIDE_DRAFT_API */
+
     /**
      * Returns by pointer, unit of volume: tablespoon.
      * Caller owns returned value and must free it.
@@ -3369,12 +3537,6 @@
      */
     void initCurrency(StringPiece isoCurrency);
 
-    /**
-     * For ICU use only.
-     * @internal
-     */
-    void initNoUnit(const char *subtype);
-
 #endif  /* U_HIDE_INTERNAL_API */
 
 private:
@@ -3393,7 +3555,6 @@
     MeasureUnit(int32_t typeId, int32_t subTypeId);
     MeasureUnit(MeasureUnitImpl&& impl);
     void setTo(int32_t typeId, int32_t subTypeId);
-    int32_t getOffset() const;
     static MeasureUnit *create(int typeId, int subTypeId, UErrorCode &status);
 
     /**
@@ -3405,9 +3566,21 @@
      */
     static bool findBySubType(StringPiece subType, MeasureUnit* output);
 
+    /** Internal version of public API */
+    LocalArray<MeasureUnit> splitToSingleUnitsImpl(int32_t& outCount, UErrorCode& status) const;
+
     friend struct MeasureUnitImpl;
 };
 
+#ifndef U_HIDE_DRAFT_API  // @draft ICU 68
+inline std::pair<LocalArray<MeasureUnit>, int32_t>
+MeasureUnit::splitToSingleUnits(UErrorCode& status) const {
+    int32_t length;
+    auto array = splitToSingleUnitsImpl(length, status);
+    return std::make_pair(std::move(array), length);
+}
+#endif // U_HIDE_DRAFT_API
+
 U_NAMESPACE_END
 
 #endif // !UNCONFIG_NO_FORMATTING
diff --git a/libicu/cts_headers/unicode/measure.h b/libicu/cts_headers/unicode/measure.h
index fa9c293..aeb1dac 100644
--- a/libicu/cts_headers/unicode/measure.h
+++ b/libicu/cts_headers/unicode/measure.h
@@ -48,7 +48,7 @@
      * Construct an object with the given numeric amount and the given
      * unit.  After this call, the caller must not delete the given
      * unit object.
-     * @param number a numeric object; amount.isNumeric() must be TRUE
+     * @param number a numeric object; amount.isNumeric() must be true
      * @param adoptedUnit the unit object, which must not be NULL
      * @param ec input-output error code. If the amount or the unit
      * is invalid, then this will be set to a failing value.
diff --git a/libicu/cts_headers/unicode/messagepattern.h b/libicu/cts_headers/unicode/messagepattern.h
index 04f00a8..98e7b70 100644
--- a/libicu/cts_headers/unicode/messagepattern.h
+++ b/libicu/cts_headers/unicode/messagepattern.h
@@ -265,7 +265,7 @@
 
 /**
  * \def UMSGPAT_ARG_TYPE_HAS_PLURAL_STYLE
- * Returns TRUE if the argument type has a plural style part sequence and semantics,
+ * Returns true if the argument type has a plural style part sequence and semantics,
  * for example UMSGPAT_ARG_TYPE_PLURAL and UMSGPAT_ARG_TYPE_SELECTORDINAL.
  * @stable ICU 50
  */
@@ -523,14 +523,14 @@
 
     /**
      * @param other another object to compare with.
-     * @return TRUE if this object is equivalent to the other one.
+     * @return true if this object is equivalent to the other one.
      * @stable ICU 4.8
      */
     UBool operator==(const MessagePattern &other) const;
 
     /**
      * @param other another object to compare with.
-     * @return FALSE if this object is equivalent to the other one.
+     * @return false if this object is equivalent to the other one.
      * @stable ICU 4.8
      */
     inline UBool operator!=(const MessagePattern &other) const {
@@ -564,7 +564,7 @@
 
     /**
      * Does the parsed pattern have named arguments like {first_name}?
-     * @return TRUE if the parsed pattern has at least one named argument.
+     * @return true if the parsed pattern has at least one named argument.
      * @stable ICU 4.8
      */
     UBool hasNamedArguments() const {
@@ -573,7 +573,7 @@
 
     /**
      * Does the parsed pattern have numbered arguments like {2}?
-     * @return TRUE if the parsed pattern has at least one numbered argument.
+     * @return true if the parsed pattern has at least one numbered argument.
      * @stable ICU 4.8
      */
     UBool hasNumberedArguments() const {
@@ -664,7 +664,7 @@
      * Compares the part's substring with the input string s.
      * @param part a part of this MessagePattern.
      * @param s a string.
-     * @return TRUE if getSubstring(part).equals(s).
+     * @return true if getSubstring(part).equals(s).
      * @stable ICU 4.8
      */
     UBool partSubstringMatches(const Part &part, const UnicodeString &s) const {
@@ -785,7 +785,7 @@
          * Indicates whether the Part type has a numeric value.
          * If so, then that numeric value can be retrieved via MessagePattern.getNumericValue().
          * @param type The Part type to be tested.
-         * @return TRUE if the Part type has a numeric value.
+         * @return true if the Part type has a numeric value.
          * @stable ICU 4.8
          */
         static UBool hasNumericValue(UMessagePatternPartType type) {
@@ -794,14 +794,14 @@
 
         /**
          * @param other another object to compare with.
-         * @return TRUE if this object is equivalent to the other one.
+         * @return true if this object is equivalent to the other one.
          * @stable ICU 4.8
          */
         UBool operator==(const Part &other) const;
 
         /**
          * @param other another object to compare with.
-         * @return FALSE if this object is equivalent to the other one.
+         * @return false if this object is equivalent to the other one.
          * @stable ICU 4.8
          */
         inline UBool operator!=(const Part &other) const {
@@ -869,7 +869,7 @@
      * Parses a number from the specified message substring.
      * @param start start index into the message string
      * @param limit limit index into the message string, must be start<limit
-     * @param allowInfinity TRUE if U+221E is allowed (for ChoiceFormat)
+     * @param allowInfinity true if U+221E is allowed (for ChoiceFormat)
      * @param parseError
      * @param errorCode
      */
@@ -900,13 +900,13 @@
     UBool isOrdinal(int32_t index);
 
     /**
-     * @return TRUE if we are inside a MessageFormat (sub-)pattern,
+     * @return true if we are inside a MessageFormat (sub-)pattern,
      *         as opposed to inside a top-level choice/plural/select pattern.
      */
     UBool inMessageFormatPattern(int32_t nestingLevel);
 
     /**
-     * @return TRUE if we are in a MessageFormat sub-pattern
+     * @return true if we are in a MessageFormat sub-pattern
      *         of a top-level ChoiceFormat pattern.
      */
     UBool inTopLevelChoiceMessage(int32_t nestingLevel, UMessagePatternArgType parentType);
diff --git a/libicu/cts_headers/unicode/msgfmt.h b/libicu/cts_headers/unicode/msgfmt.h
index 99b0eae..2d9bc8f 100644
--- a/libicu/cts_headers/unicode/msgfmt.h
+++ b/libicu/cts_headers/unicode/msgfmt.h
@@ -255,7 +255,7 @@
  * or preformatted values, but not pattern strings or custom format objects.</p>
  *
  * <p>For more details, see the
- * <a href="http://userguide.icu-project.org/formatparse/messages">ICU User Guide</a>.</p>
+ * <a href="https://unicode-org.github.io/icu/userguide/format_parse/messages">ICU User Guide</a>.</p>
  *
  * <h4>Usage Information</h4>
  *
@@ -920,7 +920,7 @@
     int32_t            argTypeCapacity;
 
     /**
-     * TRUE if there are different argTypes for the same argument.
+     * true if there are different argTypes for the same argument.
      * This only matters when the MessageFormat is used in the plain C (umsg_xxx) API
      * where the pattern argTypes determine how the va_arg list is read.
      */
diff --git a/libicu/cts_headers/unicode/normalizer2.h b/libicu/cts_headers/unicode/normalizer2.h
index 4aeb3bb..5eb1d95 100644
--- a/libicu/cts_headers/unicode/normalizer2.h
+++ b/libicu/cts_headers/unicode/normalizer2.h
@@ -290,13 +290,13 @@
      * Gets the decomposition mapping of c.
      * Roughly equivalent to normalizing the String form of c
      * on a UNORM2_DECOMPOSE Normalizer2 instance, but much faster, and except that this function
-     * returns FALSE and does not write a string
+     * returns false and does not write a string
      * if c does not have a decomposition mapping in this instance's data.
      * This function is independent of the mode of the Normalizer2.
      * @param c code point
      * @param decomposition String object which will be set to c's
      *                      decomposition mapping, if there is one.
-     * @return TRUE if c has a decomposition, otherwise FALSE
+     * @return true if c has a decomposition, otherwise false
      * @stable ICU 4.6
      */
     virtual UBool
@@ -319,11 +319,11 @@
      * in this case, the result contains either one or two code points (=1..4 char16_ts).
      *
      * This function is independent of the mode of the Normalizer2.
-     * The default implementation returns FALSE.
+     * The default implementation returns false.
      * @param c code point
      * @param decomposition String object which will be set to c's
      *                      raw decomposition mapping, if there is one.
-     * @return TRUE if c has a decomposition, otherwise FALSE
+     * @return true if c has a decomposition, otherwise false
      * @stable ICU 49
      */
     virtual UBool
@@ -369,7 +369,7 @@
      *                  pass the U_SUCCESS() test, or else the function returns
      *                  immediately. Check for U_FAILURE() on output or use with
      *                  function chaining. (See User Guide for details.)
-     * @return TRUE if s is normalized
+     * @return true if s is normalized
      * @stable ICU 4.4
      */
     virtual UBool
@@ -392,7 +392,7 @@
      *                  pass the U_SUCCESS() test, or else the function returns
      *                  immediately. Check for U_FAILURE() on output or use with
      *                  function chaining. (See User Guide for details.)
-     * @return TRUE if s is normalized
+     * @return true if s is normalized
      * @stable ICU 60
      */
     virtual UBool
@@ -452,7 +452,7 @@
      * character independently.
      * This is used for iterative normalization. See the class documentation for details.
      * @param c character to test
-     * @return TRUE if c has a normalization boundary before it
+     * @return true if c has a normalization boundary before it
      * @stable ICU 4.4
      */
     virtual UBool hasBoundaryBefore(UChar32 c) const = 0;
@@ -468,7 +468,7 @@
      * This is used for iterative normalization. See the class documentation for details.
      * Note that this operation may be significantly slower than hasBoundaryBefore().
      * @param c character to test
-     * @return TRUE if c has a normalization boundary after it
+     * @return true if c has a normalization boundary after it
      * @stable ICU 4.4
      */
     virtual UBool hasBoundaryAfter(UChar32 c) const = 0;
@@ -483,7 +483,7 @@
      * This is used for iterative normalization. See the class documentation for details.
      * Note that this operation may be significantly slower than hasBoundaryBefore().
      * @param c character to test
-     * @return TRUE if c is normalization-inert
+     * @return true if c is normalization-inert
      * @stable ICU 4.4
      */
     virtual UBool isInert(UChar32 c) const = 0;
@@ -612,7 +612,7 @@
      * @param c code point
      * @param decomposition String object which will be set to c's
      *                      decomposition mapping, if there is one.
-     * @return TRUE if c has a decomposition, otherwise FALSE
+     * @return true if c has a decomposition, otherwise false
      * @stable ICU 4.6
      */
     virtual UBool
@@ -626,7 +626,7 @@
      * @param c code point
      * @param decomposition String object which will be set to c's
      *                      raw decomposition mapping, if there is one.
-     * @return TRUE if c has a decomposition, otherwise FALSE
+     * @return true if c has a decomposition, otherwise false
      * @stable ICU 49
      */
     virtual UBool
@@ -664,7 +664,7 @@
      *                  pass the U_SUCCESS() test, or else the function returns
      *                  immediately. Check for U_FAILURE() on output or use with
      *                  function chaining. (See User Guide for details.)
-     * @return TRUE if s is normalized
+     * @return true if s is normalized
      * @stable ICU 4.4
      */
     virtual UBool
@@ -687,7 +687,7 @@
      *                  pass the U_SUCCESS() test, or else the function returns
      *                  immediately. Check for U_FAILURE() on output or use with
      *                  function chaining. (See User Guide for details.)
-     * @return TRUE if s is normalized
+     * @return true if s is normalized
      * @stable ICU 60
      */
     virtual UBool
@@ -724,7 +724,7 @@
      * regardless of context.
      * For details see the Normalizer2 base class documentation.
      * @param c character to test
-     * @return TRUE if c has a normalization boundary before it
+     * @return true if c has a normalization boundary before it
      * @stable ICU 4.4
      */
     virtual UBool hasBoundaryBefore(UChar32 c) const U_OVERRIDE;
@@ -734,7 +734,7 @@
      * regardless of context.
      * For details see the Normalizer2 base class documentation.
      * @param c character to test
-     * @return TRUE if c has a normalization boundary after it
+     * @return true if c has a normalization boundary after it
      * @stable ICU 4.4
      */
     virtual UBool hasBoundaryAfter(UChar32 c) const U_OVERRIDE;
@@ -743,7 +743,7 @@
      * Tests if the character is normalization-inert.
      * For details see the Normalizer2 base class documentation.
      * @param c character to test
-     * @return TRUE if c is normalization-inert
+     * @return true if c is normalization-inert
      * @stable ICU 4.4
      */
     virtual UBool isInert(UChar32 c) const U_OVERRIDE;
diff --git a/libicu/cts_headers/unicode/normlzr.h b/libicu/cts_headers/unicode/normlzr.h
index 07a596b..3352983 100644
--- a/libicu/cts_headers/unicode/normlzr.h
+++ b/libicu/cts_headers/unicode/normlzr.h
@@ -234,7 +234,7 @@
    *
    * @param source    the string to be composed.
    * @param compat    Perform compatibility decomposition before composition.
-   *                  If this argument is <code>FALSE</code>, only canonical
+   *                  If this argument is <code>false</code>, only canonical
    *                  decomposition will be performed.
    * @param options   the optional features to be enabled (0 for no options)
    * @param result    The composed string (on output).
@@ -256,7 +256,7 @@
    *
    * @param source    the string to be decomposed.
    * @param compat    Perform compatibility decomposition.
-   *                  If this argument is <code>FALSE</code>, only canonical
+   *                  If this argument is <code>false</code>, only canonical
    *                  decomposition will be performed.
    * @param options   the optional features to be enabled (0 for no options)
    * @param result    The decomposed string (on output).
@@ -315,7 +315,7 @@
    * never a "maybe".
    * For NFD, NFKD, and FCD, both functions work exactly the same.
    * For NFC and NFKC where quickCheck may return "maybe", this function will
-   * perform further tests to arrive at a TRUE/FALSE result.
+   * perform further tests to arrive at a true/false result.
    *
    * @param src        String that is to be tested if it is in a normalization format.
    * @param mode       Which normalization form to test for.
@@ -577,7 +577,7 @@
   int32_t            endIndex(void) const;
 
   /**
-   * Returns TRUE when both iterators refer to the same character in the same
+   * Returns true when both iterators refer to the same character in the same
    * input text.
    *
    * @param that a Normalizer object to compare this one to
@@ -587,7 +587,7 @@
   UBool        operator==(const Normalizer& that) const;
 
   /**
-   * Returns FALSE when both iterators refer to the same character in the same
+   * Returns false when both iterators refer to the same character in the same
    * input text.
    *
    * @param that a Normalizer object to compare this one to
@@ -655,8 +655,8 @@
    * It is possible to specify multiple options that are all turned on or off.
    *
    * @param   option  the option(s) whose value is/are to be set.
-   * @param   value   the new setting for the option.  Use <code>TRUE</code> to
-   *                  turn the option(s) on and <code>FALSE</code> to turn it/them off.
+   * @param   value   the new setting for the option.  Use <code>true</code> to
+   *                  turn the option(s) on and <code>false</code> to turn it/them off.
    *
    * @see #getOption
    * @deprecated ICU 56 Use Normalizer2 instead.
@@ -666,11 +666,11 @@
 
   /**
    * Determine whether an option is turned on or off.
-   * If multiple options are specified, then the result is TRUE if any
+   * If multiple options are specified, then the result is true if any
    * of them are set.
    * <p>
    * @param option the option(s) that are to be checked
-   * @return TRUE if any of the option(s) are set
+   * @return true if any of the option(s) are set
    * @see #setOption
    * @deprecated ICU 56 Use Normalizer2 instead.
    */
diff --git a/libicu/cts_headers/unicode/nounit.h b/libicu/cts_headers/unicode/nounit.h
index 61b5c16..cee45e3 100644
--- a/libicu/cts_headers/unicode/nounit.h
+++ b/libicu/cts_headers/unicode/nounit.h
@@ -29,80 +29,53 @@
 
 /**
  * Dimensionless unit for percent and permille.
+ * Prior to ICU 68, this namespace was a class with the same name.
  * @see NumberFormatter
- * @draft ICU 60
+ * @draft ICU 68
  */
-class U_I18N_API NoUnit: public MeasureUnit {
-public:
+namespace NoUnit {
     /**
      * Returns an instance for the base unit (dimensionless and no scaling).
      *
-     * @return               a NoUnit instance
-     * @draft ICU 60
+     * Prior to ICU 68, this function returned a NoUnit by value.
+     *
+     * Since ICU 68, this function returns the same value as the default MeasureUnit constructor.
+     *
+     * @return               a MeasureUnit instance
+     * @draft ICU 68
      */
-    static NoUnit U_EXPORT2 base();
+    static inline MeasureUnit U_EXPORT2 base() {
+        return MeasureUnit();
+    }
 
     /**
      * Returns an instance for percent, or 1/100 of a base unit.
      *
-     * @return               a NoUnit instance
-     * @draft ICU 60
+     * Prior to ICU 68, this function returned a NoUnit by value.
+     *
+     * Since ICU 68, this function returns the same value as MeasureUnit::getPercent().
+     *
+     * @return               a MeasureUnit instance
+     * @draft ICU 68
      */
-    static NoUnit U_EXPORT2 percent();
+    static inline MeasureUnit U_EXPORT2 percent() {
+        return MeasureUnit::getPercent();
+    }
 
     /**
      * Returns an instance for permille, or 1/1000 of a base unit.
      *
-     * @return               a NoUnit instance
-     * @draft ICU 60
+     * Prior to ICU 68, this function returned a NoUnit by value.
+     *
+     * Since ICU 68, this function returns the same value as MeasureUnit::getPermille().
+     *
+     * @return               a MeasureUnit instance
+     * @draft ICU 68
      */
-    static NoUnit U_EXPORT2 permille();
-
-    /**
-     * Copy operator.
-     * @draft ICU 60
-     */
-    NoUnit(const NoUnit& other);
-
-    /**
-     * Destructor.
-     * @draft ICU 60
-     */
-    virtual ~NoUnit();
-
-    /**
-     * Return a polymorphic clone of this object.  The result will
-     * have the same class as returned by getDynamicClassID().
-     * @draft ICU 60
-     */
-    virtual NoUnit* clone() const;
-
-    /**
-     * Returns a unique class ID for this object POLYMORPHICALLY.
-     * This method implements a simple form of RTTI used by ICU.
-     * @return The class ID for this object. All objects of a given
-     * class have the same class ID.  Objects of other classes have
-     * different class IDs.
-     * @draft ICU 60
-     */
-    virtual UClassID getDynamicClassID() const;
-
-    /**
-     * Returns the class ID for this class. This is used to compare to
-     * the return value of getDynamicClassID().
-     * @return The class ID for all objects of this class.
-     * @draft ICU 60
-     */
-    static UClassID U_EXPORT2 getStaticClassID();
-
-private:
-    /**
-     * Constructor
-     * @internal (private)
-     */
-    NoUnit(const char* subtype);
-
-};
+    static inline MeasureUnit U_EXPORT2 permille() {
+        return MeasureUnit::getPermille();
+    }
+}
 
 U_NAMESPACE_END
 
diff --git a/libicu/cts_headers/unicode/numberformatter.h b/libicu/cts_headers/unicode/numberformatter.h
index 615cf49..06329b8 100644
--- a/libicu/cts_headers/unicode/numberformatter.h
+++ b/libicu/cts_headers/unicode/numberformatter.h
@@ -99,6 +99,13 @@
 }
 }
 
+namespace units {
+
+// Forward declarations:
+class UnitsRouter;
+
+} // namespace units
+
 namespace number {  // icu::number
 
 // Forward declarations:
@@ -157,6 +164,7 @@
 struct UFormattedNumberImpl;
 class MutablePatternModifier;
 class ImmutablePatternModifier;
+struct DecimalFormatWarehouse;
 
 /**
  * Used for NumberRangeFormatter and implemented in numrange_fluent.cpp.
@@ -371,9 +379,9 @@
     UBool copyErrorTo(UErrorCode &status) const {
         if (fType == NTN_ERROR) {
             status = fUnion.errorCode;
-            return TRUE;
+            return true;
         }
-        return FALSE;
+        return false;
     }
 
     // To allow MacroProps to initialize empty instances:
@@ -705,12 +713,8 @@
     typedef PrecisionUnion::FractionSignificantSettings FractionSignificantSettings;
     typedef PrecisionUnion::IncrementSettings IncrementSettings;
 
-    /** The Precision encapsulates the RoundingMode when used within the implementation. */
-    UNumberFormatRoundingMode fRoundingMode;
-
-    Precision(const PrecisionType& type, const PrecisionUnion& union_,
-              UNumberFormatRoundingMode roundingMode)
-            : fType(type), fUnion(union_), fRoundingMode(roundingMode) {}
+    Precision(const PrecisionType& type, const PrecisionUnion& union_)
+            : fType(type), fUnion(union_) {}
 
     Precision(UErrorCode errorCode) : fType(RND_ERROR) {
         fUnion.errorCode = errorCode;
@@ -725,9 +729,9 @@
     UBool copyErrorTo(UErrorCode &status) const {
         if (fType == RND_ERROR) {
             status = fUnion.errorCode;
-            return TRUE;
+            return true;
         }
-        return FALSE;
+        return false;
     }
 
     // On the parent type so that this method can be called internally on Precision instances.
@@ -744,8 +748,6 @@
 
     static CurrencyPrecision constructCurrency(UCurrencyUsage usage);
 
-    static Precision constructPassThrough();
-
     // To allow MacroProps/MicroProps to initialize bogus instances:
     friend struct impl::MacroProps;
     friend struct impl::MicroProps;
@@ -766,6 +768,9 @@
 
     // To allow access to the skeleton generation code:
     friend class impl::GeneratorHelpers;
+
+    // To allow access to isBogus and the default (bogus) constructor:
+    friend class units::UnitsRouter;
 };
 
 /**
@@ -969,9 +974,9 @@
     UBool copyErrorTo(UErrorCode &status) const {
         if (fHasError) {
             status = fUnion.errorCode;
-            return TRUE;
+            return true;
         }
-        return FALSE;
+        return false;
     }
 
     void apply(impl::DecimalQuantity &quantity, UErrorCode &status) const;
@@ -1095,11 +1100,11 @@
     }
 
     UBool copyErrorTo(UErrorCode &status) const {
-        if (fError != U_ZERO_ERROR) {
+        if (U_FAILURE(fError)) {
             status = fError;
-            return TRUE;
+            return true;
         }
-        return FALSE;
+        return false;
     }
 
     void applyTo(impl::DecimalQuantity& quantity) const;
@@ -1126,6 +1131,71 @@
 
 namespace impl {
 
+// Do not enclose entire Usage with #ifndef U_HIDE_INTERNAL_API, needed for a protected field
+/**
+ * Manages NumberFormatterSettings::usage()'s char* instance on the heap.
+ * @internal
+ */
+class U_I18N_API Usage : public UMemory {
+
+#ifndef U_HIDE_INTERNAL_API
+
+  public:
+    /** @internal */
+    Usage(const Usage& other);
+
+    /** @internal */
+    Usage& operator=(const Usage& other);
+
+    /** @internal */
+    Usage(Usage &&src) U_NOEXCEPT;
+
+    /** @internal */
+    Usage& operator=(Usage&& src) U_NOEXCEPT;
+
+    /** @internal */
+    ~Usage();
+
+    /** @internal */
+    int16_t length() const { return fLength; }
+
+    /** @internal
+     * Makes a copy of value. Set to "" to unset.
+     */
+    void set(StringPiece value);
+
+    /** @internal */
+    bool isSet() const { return fLength > 0; }
+
+#endif // U_HIDE_INTERNAL_API
+
+  private:
+    char *fUsage;
+    int16_t fLength;
+    UErrorCode fError;
+
+    Usage() : fUsage(nullptr), fLength(0), fError(U_ZERO_ERROR) {}
+
+    /** @internal */
+    UBool copyErrorTo(UErrorCode &status) const {
+        if (U_FAILURE(fError)) {
+            status = fError;
+            return true;
+        }
+        return false;
+    }
+
+    // Allow NumberFormatterImpl to access fUsage.
+    friend class impl::NumberFormatterImpl;
+
+    // Allow skeleton generation code to access private members.
+    friend class impl::GeneratorHelpers;
+
+    // Allow MacroProps/MicroProps to initialize empty instances and to call
+    // copyErrorTo().
+    friend struct impl::MacroProps;
+};
+
 // Do not enclose entire SymbolsWrapper with #ifndef U_HIDE_INTERNAL_API, needed for a protected field
 /** @internal */
 class U_I18N_API SymbolsWrapper : public UMemory {
@@ -1192,12 +1262,12 @@
     UBool copyErrorTo(UErrorCode &status) const {
         if (fType == SYMPTR_DFS && fPtr.dfs == nullptr) {
             status = U_MEMORY_ALLOCATION_ERROR;
-            return TRUE;
+            return true;
         } else if (fType == SYMPTR_NS && fPtr.ns == nullptr) {
             status = U_MEMORY_ALLOCATION_ERROR;
-            return TRUE;
+            return true;
         }
-        return FALSE;
+        return false;
     }
 
   private:
@@ -1239,13 +1309,13 @@
               fGrouping2(grouping2),
               fMinGrouping(minGrouping),
               fStrategy(strategy) {}
-#endif  // U_HIDE_INTERNAL_API
 
     /** @internal */
     int16_t getPrimary() const;
 
     /** @internal */
     int16_t getSecondary() const;
+#endif  // U_HIDE_INTERNAL_API
 
   private:
     /**
@@ -1309,10 +1379,10 @@
 
     /** @internal */
     static Padder codePoints(UChar32 cp, int32_t targetWidth, UNumberFormatPadPosition position);
-#endif  // U_HIDE_INTERNAL_API
 
     /** @internal */
     static Padder forProperties(const DecimalFormatProperties& properties);
+#endif  // U_HIDE_INTERNAL_API
 
   private:
     UChar32 fWidth;  // -3 = error; -2 = bogus; -1 = no padding
@@ -1341,9 +1411,9 @@
     UBool copyErrorTo(UErrorCode &status) const {
         if (fWidth == -3) {
             status = fUnion.errorCode;
-            return TRUE;
+            return true;
         }
-        return FALSE;
+        return false;
     }
 
     bool isValid() const {
@@ -1372,10 +1442,10 @@
     Notation notation;
 
     /** @internal */
-    MeasureUnit unit; // = NoUnit::base();
+    MeasureUnit unit;  // = MeasureUnit();  (the base dimensionless unit)
 
     /** @internal */
-    MeasureUnit perUnit; // = NoUnit::base();
+    MeasureUnit perUnit;  // = MeasureUnit();  (the base dimensionless unit)
 
     /** @internal */
     Precision precision;  // = Precision();  (bogus)
@@ -1410,6 +1480,9 @@
     Scale scale;  // = Scale();  (benign value)
 
     /** @internal */
+    Usage usage;  // = Usage();  (no usage)
+
+    /** @internal */
     const AffixPatternProvider* affixProvider = nullptr;  // no ownership
 
     /** @internal */
@@ -1430,7 +1503,7 @@
     bool copyErrorTo(UErrorCode &status) const {
         return notation.copyErrorTo(status) || precision.copyErrorTo(status) ||
                padder.copyErrorTo(status) || integerWidth.copyErrorTo(status) ||
-               symbols.copyErrorTo(status) || scale.copyErrorTo(status);
+               symbols.copyErrorTo(status) || scale.copyErrorTo(status) || usage.copyErrorTo(status);
     }
 };
 
@@ -1507,10 +1580,15 @@
      * All units will be properly localized with locale data, and all units are compatible with notation styles,
      * rounding precisions, and other number formatter settings.
      *
+     * \note If the usage() is set, the output unit **will be changed** to
+     *       produce localised units, according to usage, locale and unit. See
+     *       FormattedNumber::getOutputUnit().
+     *
      * Pass this method any instance of {@link MeasureUnit}. For units of measure:
      *
      * <pre>
      * NumberFormatter::with().unit(MeasureUnit::getMeter())
+     * NumberFormatter::with().unit(MeasureUnit::forIdentifier("foot-per-second", status))
      * </pre>
      *
      * Currency:
@@ -1693,7 +1771,7 @@
      *
      * The default is HALF_EVEN. For more information on rounding mode, see the ICU userguide here:
      *
-     * http://userguide.icu-project.org/formatparse/numbers/rounding-modes
+     * https://unicode-org.github.io/icu/userguide/format_parse/numbers/rounding-modes
      *
      * @param roundingMode The rounding mode to use.
      * @return The fluent chain.
@@ -2038,6 +2116,61 @@
      */
     Derived scale(const Scale &scale) &&;
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Specifies the usage for which numbers will be formatted ("person-height",
+     * "road", "rainfall", etc.)
+     *
+     * When a `usage` is specified, the output unit will change depending on the
+     * `Locale` and the unit quantity. For example, formatting length
+     * measurements specified in meters:
+     *
+     * `NumberFormatter::with().usage("person").unit(MeasureUnit::getMeter()).locale("en-US")`
+     *   * When formatting 0.25, the output will be "10 inches".
+     *   * When formatting 1.50, the output will be "4 feet and 11 inches".
+     *
+     * The input unit specified via unit() determines the type of measurement
+     * being formatted (e.g. "length" when the unit is "foot"). The usage
+     * requested will be looked for only within this category of measurement
+     * units.
+     *
+     * The output unit can be found via FormattedNumber::getOutputUnit().
+     *
+     * If the usage has multiple parts (e.g. "land-agriculture-grain") and does
+     * not match a known usage preference, the last part will be dropped
+     * repeatedly until a match is found (e.g. trying "land-agriculture", then
+     * "land"). If a match is still not found, usage will fall back to
+     * "default".
+     *
+     * Setting usage to an empty string clears the usage (disables usage-based
+     * localized formatting).
+     *
+     * Setting a usage string but not a correct input unit will result in an
+     * U_ILLEGAL_ARGUMENT_ERROR.
+     *
+     * When using usage, specifying rounding or precision is unnecessary.
+     * Specifying a precision in some manner will override the default
+     * formatting.
+     *
+     * @param usage A `usage` parameter from the units resource. See the
+     * unitPreferenceData in *source/data/misc/units.txt*, generated from
+     * `unitPreferenceData` in [CLDR's
+     * supplemental/units.xml](https://github.com/unicode-org/cldr/blob/master/common/supplemental/units.xml).
+     * @return The fluent chain.
+     * @draft ICU 68
+     */
+    Derived usage(StringPiece usage) const &;
+
+    /**
+     * Overload of usage() for use on an rvalue reference.
+     *
+     * @param usage The unit `usage`.
+     * @return The fluent chain.
+     * @draft ICU 68
+     */
+    Derived usage(StringPiece usage) &&;
+#endif // U_HIDE_DRAFT_API
+
 #ifndef U_HIDE_INTERNAL_API
 
     /**
@@ -2120,13 +2253,13 @@
     /**
      * Sets the UErrorCode if an error occurred in the fluent chain.
      * Preserves older error codes in the outErrorCode.
-     * @return TRUE if U_FAILURE(outErrorCode)
+     * @return true if U_FAILURE(outErrorCode)
      * @stable ICU 60
      */
     UBool copyErrorTo(UErrorCode &outErrorCode) const {
         if (U_FAILURE(outErrorCode)) {
             // Do not overwrite the older error code
-            return TRUE;
+            return true;
         }
         fMacros.copyErrorTo(outErrorCode);
         return U_FAILURE(outErrorCode);
@@ -2385,6 +2518,10 @@
     const impl::NumberFormatterImpl* fCompiled {nullptr};
     char fUnsafeCallCount[8] {};  // internally cast to u_atomic_int32_t
 
+    // Owned pointer to a DecimalFormatWarehouse, used when copying a LocalizedNumberFormatter
+    // from a DecimalFormat.
+    const impl::DecimalFormatWarehouse* fWarehouse {nullptr};
+
     explicit LocalizedNumberFormatter(const NumberFormatterSettings<LocalizedNumberFormatter>& other);
 
     explicit LocalizedNumberFormatter(NumberFormatterSettings<LocalizedNumberFormatter>&& src) U_NOEXCEPT;
@@ -2393,10 +2530,12 @@
 
     LocalizedNumberFormatter(impl::MacroProps &&macros, const Locale &locale);
 
-    void clear();
+    void resetCompiled();
 
     void lnfMoveHelper(LocalizedNumberFormatter&& src);
 
+    void lnfCopyHelper(const LocalizedNumberFormatter& src, UErrorCode& status);
+
     /**
      * @return true if the compiled formatter is available.
      */
@@ -2485,7 +2624,6 @@
     /** @copydoc FormattedValue::nextPosition() */
     UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const U_OVERRIDE;
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Export the formatted number as a "numeric string" conforming to the
      * syntax defined in the Decimal Arithmetic Specification, available at
@@ -2502,10 +2640,24 @@
      *         for example, std::string.
      * @param status Set if an error occurs.
      * @return A StringClass containing the numeric string.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     template<typename StringClass>
     inline StringClass toDecimalNumber(UErrorCode& status) const;
+
+#ifndef U_HIDE_DRAFT_API
+	/**
+     * Gets the resolved output unit.
+     *
+     * The output unit is dependent upon the localized preferences for the usage
+     * specified via NumberFormatterSettings::usage(), and may be a unit with
+     * UMEASURE_UNIT_MIXED unit complexity (MeasureUnit::getComplexity()), such
+     * as "foot-and-inch" or "hour-and-minute-and-second".
+     *
+     * @return `MeasureUnit`.
+     * @draft ICU 68
+     */
+    MeasureUnit getOutputUnit(UErrorCode& status) const;
 #endif // U_HIDE_DRAFT_API
 
 #ifndef U_HIDE_INTERNAL_API
@@ -2541,7 +2693,6 @@
     explicit FormattedNumber(UErrorCode errorCode)
         : fData(nullptr), fErrorCode(errorCode) {}
 
-    // TODO(ICU-20775): Propose this as API.
     void toDecimalNumber(ByteSink& sink, UErrorCode& status) const;
 
     // To give LocalizedNumberFormatter format methods access to this class's constructor:
@@ -2639,4 +2790,3 @@
 #endif /* U_SHOW_CPLUSPLUS_API */
 
 #endif // __NUMBERFORMATTER_H__
-
diff --git a/libicu/cts_headers/unicode/numberrangeformatter.h b/libicu/cts_headers/unicode/numberrangeformatter.h
index 4d436a7..4e0a15b 100644
--- a/libicu/cts_headers/unicode/numberrangeformatter.h
+++ b/libicu/cts_headers/unicode/numberrangeformatter.h
@@ -16,6 +16,7 @@
 #include "unicode/formattedvalue.h"
 #include "unicode/fpositer.h"
 #include "unicode/numberformatter.h"
+#include "unicode/unumberrangeformatter.h"
 
 /**
  * \file
@@ -31,7 +32,7 @@
  *     .numberFormatterFirst(NumberFormatter::with().adoptUnit(MeasureUnit::createMeter()))
  *     .numberFormatterSecond(NumberFormatter::with().adoptUnit(MeasureUnit::createKilometer()))
  *     .locale("en-GB")
- *     .formatRange(750, 1.2, status)
+ *     .formatFormattableRange(750, 1.2, status)
  *     .toString(status);
  * // => "750 m - 1.2 km"
  * </pre>
@@ -44,130 +45,11 @@
  */
 
 
-/**
- * Defines how to merge fields that are identical across the range sign.
- *
- * @stable ICU 63
- */
-typedef enum UNumberRangeCollapse {
-    /**
-     * Use locale data and heuristics to determine how much of the string to collapse. Could end up collapsing none,
-     * some, or all repeated pieces in a locale-sensitive way.
-     *
-     * The heuristics used for this option are subject to change over time.
-     *
-     * @stable ICU 63
-     */
-    UNUM_RANGE_COLLAPSE_AUTO,
-
-    /**
-     * Do not collapse any part of the number. Example: "3.2 thousand kilograms – 5.3 thousand kilograms"
-     *
-     * @stable ICU 63
-     */
-    UNUM_RANGE_COLLAPSE_NONE,
-
-    /**
-     * Collapse the unit part of the number, but not the notation, if present. Example: "3.2 thousand – 5.3 thousand
-     * kilograms"
-     *
-     * @stable ICU 63
-     */
-    UNUM_RANGE_COLLAPSE_UNIT,
-
-    /**
-     * Collapse any field that is equal across the range sign. May introduce ambiguity on the magnitude of the
-     * number. Example: "3.2 – 5.3 thousand kilograms"
-     *
-     * @stable ICU 63
-     */
-    UNUM_RANGE_COLLAPSE_ALL
-} UNumberRangeCollapse;
-
-/**
- * Defines the behavior when the two numbers in the range are identical after rounding. To programmatically detect
- * when the identity fallback is used, compare the lower and upper BigDecimals via FormattedNumber.
- *
- * @stable ICU 63
- * @see NumberRangeFormatter
- */
-typedef enum UNumberRangeIdentityFallback {
-    /**
-     * Show the number as a single value rather than a range. Example: "$5"
-     *
-     * @stable ICU 63
-     */
-    UNUM_IDENTITY_FALLBACK_SINGLE_VALUE,
-
-    /**
-     * Show the number using a locale-sensitive approximation pattern. If the numbers were the same before rounding,
-     * show the single value. Example: "~$5" or "$5"
-     *
-     * @stable ICU 63
-     */
-    UNUM_IDENTITY_FALLBACK_APPROXIMATELY_OR_SINGLE_VALUE,
-
-    /**
-     * Show the number using a locale-sensitive approximation pattern. Use the range pattern always, even if the
-     * inputs are the same. Example: "~$5"
-     *
-     * @stable ICU 63
-     */
-    UNUM_IDENTITY_FALLBACK_APPROXIMATELY,
-
-    /**
-     * Show the number as the range of two equal values. Use the range pattern always, even if the inputs are the
-     * same. Example (with RangeCollapse.NONE): "$5 – $5"
-     *
-     * @stable ICU 63
-     */
-    UNUM_IDENTITY_FALLBACK_RANGE
-} UNumberRangeIdentityFallback;
-
-/**
- * Used in the result class FormattedNumberRange to indicate to the user whether the numbers formatted in the range
- * were equal or not, and whether or not the identity fallback was applied.
- *
- * @stable ICU 63
- * @see NumberRangeFormatter
- */
-typedef enum UNumberRangeIdentityResult {
-    /**
-     * Used to indicate that the two numbers in the range were equal, even before any rounding rules were applied.
-     *
-     * @stable ICU 63
-     * @see NumberRangeFormatter
-     */
-    UNUM_IDENTITY_RESULT_EQUAL_BEFORE_ROUNDING,
-
-    /**
-     * Used to indicate that the two numbers in the range were equal, but only after rounding rules were applied.
-     *
-     * @stable ICU 63
-     * @see NumberRangeFormatter
-     */
-    UNUM_IDENTITY_RESULT_EQUAL_AFTER_ROUNDING,
-
-    /**
-     * Used to indicate that the two numbers in the range were not equal, even after rounding rules were applied.
-     *
-     * @stable ICU 63
-     * @see NumberRangeFormatter
-     */
-    UNUM_IDENTITY_RESULT_NOT_EQUAL,
-
-#ifndef U_HIDE_INTERNAL_API
-    /**
-     * The number of entries in this enum.
-     * @internal
-     */
-    UNUM_IDENTITY_RESULT_COUNT
-#endif
-
-} UNumberRangeIdentityResult;
-
 U_NAMESPACE_BEGIN
 
+// Forward declarations:
+class PluralRules;
+
 namespace number {  // icu::number
 
 // Forward declarations:
@@ -182,6 +64,7 @@
 class DecimalQuantity;
 class UFormattedNumberRangeData;
 class NumberRangeFormatterImpl;
+struct UFormattedNumberRangeImpl;
 
 } // namespace impl
 
@@ -418,8 +301,8 @@
 
     /**
      * Sets the behavior when the two sides of the range are the same. This could happen if the same two numbers are
-     * passed to the formatRange function, or if different numbers are passed to the function but they become the same
-     * after rounding rules are applied. Possible values:
+     * passed to the formatFormattableRange function, or if different numbers are passed to the function but they
+     * become the same after rounding rules are applied. Possible values:
      * <p>
      * <ul>
      * <li>SINGLE_VALUE: "5 miles"</li>
@@ -474,13 +357,13 @@
     /**
      * Sets the UErrorCode if an error occurred in the fluent chain.
      * Preserves older error codes in the outErrorCode.
-     * @return TRUE if U_FAILURE(outErrorCode)
+     * @return true if U_FAILURE(outErrorCode)
      * @stable ICU 63
      */
     UBool copyErrorTo(UErrorCode &outErrorCode) const {
         if (U_FAILURE(outErrorCode)) {
             // Do not overwrite the older error code
-            return TRUE;
+            return true;
         }
         fMacros.copyErrorTo(outErrorCode);
         return U_FAILURE(outErrorCode);
@@ -725,18 +608,22 @@
     /** @copydoc FormattedValue::nextPosition() */
     UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const U_OVERRIDE;
 
-#ifndef U_HIDE_DRAFT_API
+#ifndef U_HIDE_DEPRECATED_API
     /**
      * Export the first formatted number as a decimal number. This endpoint
      * is useful for obtaining the exact number being printed after scaling
      * and rounding have been applied by the number range formatting pipeline.
-     * 
+     *
      * The syntax of the unformatted number is a "numeric string"
      * as defined in the Decimal Arithmetic Specification, available at
      * http://speleotrove.com/decimal
      *
+     * TODO(ICU-21275): This function will be removed in ICU 69.
+     * Use getDecimalNumbers() instead.
+     *
+     * @param status Set if an error occurs.
      * @return A decimal representation of the first formatted number.
-     * @draft ICU 63
+     * @deprecated ICU 68 Use getDecimalNumbers instead.
      * @see NumberRangeFormatter
      * @see #getSecondDecimal
      */
@@ -746,17 +633,46 @@
      * Export the second formatted number as a decimal number. This endpoint
      * is useful for obtaining the exact number being printed after scaling
      * and rounding have been applied by the number range formatting pipeline.
-     * 
+     *
      * The syntax of the unformatted number is a "numeric string"
      * as defined in the Decimal Arithmetic Specification, available at
      * http://speleotrove.com/decimal
      *
+     * TODO(ICU-21275): This function will be removed in ICU 69.
+     * Use getDecimalNumbers() instead.
+     *
+     * @param status Set if an error occurs.
      * @return A decimal representation of the second formatted number.
-     * @draft ICU 63
+     * @deprecated ICU 68 Use getDecimalNumbers instead.
      * @see NumberRangeFormatter
      * @see #getFirstDecimal
      */
     UnicodeString getSecondDecimal(UErrorCode& status) const;
+#endif // U_HIDE_DEPRECATED_API
+
+
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Extracts the formatted range as a pair of decimal numbers. This endpoint
+     * is useful for obtaining the exact number being printed after scaling
+     * and rounding have been applied by the number range formatting pipeline.
+     * 
+     * The syntax of the unformatted numbers is a "numeric string"
+     * as defined in the Decimal Arithmetic Specification, available at
+     * http://speleotrove.com/decimal
+     *
+     * Example C++17 call site:
+     *
+     *     auto [ first, second ] = range.getDecimalNumbers<std::string>(status);
+     *
+     * @tparam StringClass A string class compatible with StringByteSink;
+     *         for example, std::string.
+     * @param status Set if an error occurs.
+     * @return A pair of StringClasses containing the numeric strings.
+     * @draft ICU 68
+     */
+    template<typename StringClass>
+    inline std::pair<StringClass, StringClass> getDecimalNumbers(UErrorCode& status) const;
 #endif // U_HIDE_DRAFT_API
 
     /**
@@ -818,10 +734,33 @@
 
     void getAllFieldPositionsImpl(FieldPositionIteratorHandler& fpih, UErrorCode& status) const;
 
+    void getDecimalNumbers(ByteSink& sink1, ByteSink& sink2, UErrorCode& status) const;
+
+    const impl::UFormattedNumberRangeData* getData(UErrorCode& status) const;
+
+    // To allow PluralRules to access the underlying data
+    friend class ::icu::PluralRules;
+
     // To give LocalizedNumberRangeFormatter format methods access to this class's constructor:
     friend class LocalizedNumberRangeFormatter;
+
+    // To give C API access to internals
+    friend struct impl::UFormattedNumberRangeImpl;
 };
 
+#ifndef U_HIDE_DRAFT_API
+// Note: This is draft ICU 68
+template<typename StringClass>
+std::pair<StringClass, StringClass> FormattedNumberRange::getDecimalNumbers(UErrorCode& status) const {
+    StringClass str1;
+    StringClass str2;
+    StringByteSink<StringClass> sink1(&str1);
+    StringByteSink<StringClass> sink2(&str2);
+    getDecimalNumbers(sink1, sink2, status);
+    return std::make_pair(str1, str2);
+}
+#endif // U_HIDE_DRAFT_API
+
 /**
  * See the main description in numberrangeformatter.h for documentation and examples.
  *
diff --git a/libicu/cts_headers/unicode/numfmt.h b/libicu/cts_headers/unicode/numfmt.h
index 48a69de..61fb59d 100644
--- a/libicu/cts_headers/unicode/numfmt.h
+++ b/libicu/cts_headers/unicode/numfmt.h
@@ -179,7 +179,7 @@
      *
      * <p>
      * For more detail on rounding modes, see:
-     * http://userguide.icu-project.org/formatparse/numbers/rounding-modes
+     * https://unicode-org.github.io/icu/userguide/format_parse/numbers/rounding-modes
      *
      * @stable ICU 2.4
      */
@@ -704,8 +704,8 @@
     /**
      * Sets whether lenient parsing should be enabled (it is off by default).
      *
-     * @param enable \c TRUE if lenient parsing should be used,
-     *               \c FALSE otherwise.
+     * @param enable \c true if lenient parsing should be used,
+     *               \c false otherwise.
      * @stable ICU 4.8
      */
     virtual void setLenient(UBool enable);
@@ -713,8 +713,8 @@
     /**
      * Returns whether lenient parsing is enabled (it is off by default).
      *
-     * @return \c TRUE if lenient parsing is enabled,
-     *         \c FALSE otherwise.
+     * @return \c true if lenient parsing is enabled,
+     *         \c false otherwise.
      * @see #setLenient
      * @stable ICU 4.8
      */
@@ -870,7 +870,7 @@
      * NumberFormat::createInstance to avoid undefined behavior.
      * @param key the registry key returned by a previous call to registerFactory
      * @param status the in/out status code, no special meanings are assigned
-     * @return TRUE if the factory for the key was successfully unregistered
+     * @return true if the factory for the key was successfully unregistered
      * @stable ICU 2.6
      */
     static UBool U_EXPORT2 unregister(URegistryKey key, UErrorCode& status);
@@ -1112,7 +1112,7 @@
 #ifndef U_HIDE_INTERNAL_API
     /**
      * Creates the specified number format style of the desired locale.
-     * If mustBeDecimalFormat is TRUE, then the returned pointer is
+     * If mustBeDecimalFormat is true, then the returned pointer is
      * either a DecimalFormat or it is NULL.
      * @internal
      */
@@ -1151,7 +1151,7 @@
 
   private:
     UBool      fParseIntegerOnly;
-    UBool      fLenient; // TRUE => lenient parse is enabled
+    UBool      fLenient; // true => lenient parse is enabled
 
     // ISO currency code
     char16_t      fCurrency[4];
@@ -1228,7 +1228,7 @@
     /**
      * @stable ICU 2.6
      */
-    SimpleNumberFormatFactory(const Locale& locale, UBool visible = TRUE);
+    SimpleNumberFormatFactory(const Locale& locale, UBool visible = true);
 
     /**
      * @stable ICU 3.0
diff --git a/libicu/cts_headers/unicode/numsys.h b/libicu/cts_headers/unicode/numsys.h
index 7def703..1646729 100644
--- a/libicu/cts_headers/unicode/numsys.h
+++ b/libicu/cts_headers/unicode/numsys.h
@@ -102,7 +102,7 @@
     /**
      * Create a numbering system using the specified radix, type, and description. 
      * @param radix         The radix (base) for this numbering system.
-     * @param isAlgorithmic TRUE if the numbering system is algorithmic rather than numeric.
+     * @param isAlgorithmic true if the numbering system is algorithmic rather than numeric.
      * @param description   The string representing the set of digits used in a numeric system, or the name of the RBNF
      *                      ruleset to be used in an algorithmic system.
      * @param status ICU status
@@ -171,10 +171,10 @@
 
 
     /**
-     * Returns TRUE if the given numbering system is algorithmic
+     * Returns true if the given numbering system is algorithmic
      *
-     * @return         TRUE if the numbering system is algorithmic.
-     *                 Otherwise, return FALSE.
+     * @return         true if the numbering system is algorithmic.
+     *                 Otherwise, return false.
      * @stable ICU 4.2
      */
     UBool isAlgorithmic() const;
diff --git a/libicu/cts_headers/unicode/parsepos.h b/libicu/cts_headers/unicode/parsepos.h
index 909d288..260ed4c 100644
--- a/libicu/cts_headers/unicode/parsepos.h
+++ b/libicu/cts_headers/unicode/parsepos.h
@@ -97,14 +97,14 @@
 
     /**
      * Equality operator.
-     * @return TRUE if the two parse positions are equal, FALSE otherwise.
+     * @return true if the two parse positions are equal, false otherwise.
      * @stable ICU 2.0
      */
     inline UBool              operator==(const ParsePosition& that) const;
 
     /**
      * Equality operator.
-     * @return TRUE if the two parse positions are not equal, FALSE otherwise.
+     * @return true if the two parse positions are not equal, false otherwise.
      * @stable ICU 2.0
      */
     inline UBool              operator!=(const ParsePosition& that) const;
@@ -196,9 +196,9 @@
 ParsePosition::operator==(const ParsePosition& copy) const
 {
   if(index != copy.index || errorIndex != copy.errorIndex)
-  return FALSE;
+  return false;
   else
-  return TRUE;
+  return true;
 }
 
 inline UBool
diff --git a/libicu/cts_headers/unicode/plurfmt.h b/libicu/cts_headers/unicode/plurfmt.h
index 2c21165..fd60857 100644
--- a/libicu/cts_headers/unicode/plurfmt.h
+++ b/libicu/cts_headers/unicode/plurfmt.h
@@ -587,7 +587,7 @@
      */
     static int32_t findSubMessage(
          const MessagePattern& pattern, int32_t partIndex,
-         const PluralSelector& selector, void *context, double number, UErrorCode& ec); /**< @internal */
+         const PluralSelector& selector, void *context, double number, UErrorCode& ec);
 
     void parseType(const UnicodeString& source, const NFRule *rbnfLenientScanner,
         Formattable& result, FieldPosition& pos) const;
diff --git a/libicu/cts_headers/unicode/plurrule.h b/libicu/cts_headers/unicode/plurrule.h
index 408efbc..7b30f69 100644
--- a/libicu/cts_headers/unicode/plurrule.h
+++ b/libicu/cts_headers/unicode/plurrule.h
@@ -46,14 +46,20 @@
 
 class Hashtable;
 class IFixedDecimal;
+class FixedDecimal;
 class RuleChain;
 class PluralRuleParser;
 class PluralKeywordEnumeration;
 class AndConstraint;
 class SharedPluralRules;
+class StandardPluralRanges;
 
 namespace number {
 class FormattedNumber;
+class FormattedNumberRange;
+namespace impl {
+class UFormattedNumberRangeData;
+}
 }
 
 /**
@@ -367,11 +373,35 @@
      */
     UnicodeString select(const number::FormattedNumber& number, UErrorCode& status) const;
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Given a formatted number range, returns the overall plural form of the
+     * range. For example, "3-5" returns "other" in English.
+     *
+     * To get a FormattedNumberRange, see NumberRangeFormatter.
+     * 
+     * This method only works if PluralRules was created with a locale. If it was created
+     * from PluralRules::createRules(), this method sets status code U_UNSUPPORTED_ERROR.
+     * 
+     * @param range  The number range onto which the rules will be applied.
+     * @param status Set if an error occurs while selecting plural keyword.
+     *               This could happen if the FormattedNumberRange is invalid,
+     *               or if plural ranges data is unavailable.
+     * @return       The keyword of the selected rule.
+     * @draft ICU 68
+     */
+    UnicodeString select(const number::FormattedNumberRange& range, UErrorCode& status) const;
+#endif // U_HIDE_DRAFT_API
+
 #ifndef U_HIDE_INTERNAL_API
     /**
-      * @internal
-      */
+     * @internal
+     */
     UnicodeString select(const IFixedDecimal &number) const;
+    /**
+     * @internal
+     */
+    UnicodeString select(const number::impl::UFormattedNumberRangeData* urange, UErrorCode& status) const;
 #endif  /* U_HIDE_INTERNAL_API */
 
     /**
@@ -446,13 +476,39 @@
                        double *dest, int32_t destCapacity,
                        UErrorCode& status);
 
+#ifndef U_HIDE_INTERNAL_API
     /**
-     * Returns TRUE if the given keyword is defined in this
+     * Internal-only function that returns FixedDecimals instead of doubles.
+     *
+     * Returns sample values for which select() would return the keyword.  If
+     * the keyword is unknown, returns no values, but this is not an error.
+     *
+     * The number of returned values is typically small.
+     *
+     * @param keyword      The keyword.
+     * @param dest         Array into which to put the returned values.  May
+     *                     be NULL if destCapacity is 0.
+     * @param destCapacity The capacity of the array, must be at least 0.
+     * @param status       The error code.
+     * @return             The count of values written.
+     *                     If more than destCapacity samples are available, then
+     *                     only destCapacity are written, and destCapacity is returned as the count,
+     *                     rather than setting a U_BUFFER_OVERFLOW_ERROR.
+     *                     (The actual number of keyword values could be unlimited.)
+     * @internal
+     */
+    int32_t getSamples(const UnicodeString &keyword,
+                       FixedDecimal *dest, int32_t destCapacity,
+                       UErrorCode& status);
+#endif  /* U_HIDE_INTERNAL_API */
+
+    /**
+     * Returns true if the given keyword is defined in this
      * <code>PluralRules</code> object.
      *
      * @param keyword  the input keyword.
-     * @return         TRUE if the input keyword is defined.
-     *                 Otherwise, return FALSE.
+     * @return         true if the input keyword is defined.
+     *                 Otherwise, return false.
      * @stable ICU 4.0
      */
     UBool isKeyword(const UnicodeString& keyword) const;
@@ -513,12 +569,14 @@
 
 private:
     RuleChain  *mRules;
+    StandardPluralRanges *mStandardPluralRanges;
 
     PluralRules();   // default constructor not implemented
     void            parseDescription(const UnicodeString& ruleData, UErrorCode &status);
     int32_t         getNumberValue(const UnicodeString& token) const;
     UnicodeString   getRuleFromResource(const Locale& locale, UPluralType type, UErrorCode& status);
     RuleChain      *rulesForKeyword(const UnicodeString &keyword) const;
+    PluralRules    *clone(UErrorCode& status) const;
 
     /**
     * An internal status variable used to indicate that the object is in an 'invalid' state.
diff --git a/libicu/cts_headers/unicode/putil.h b/libicu/cts_headers/unicode/putil.h
index 759b136..500c212 100644
--- a/libicu/cts_headers/unicode/putil.h
+++ b/libicu/cts_headers/unicode/putil.h
@@ -66,7 +66,7 @@
  *   
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2 u_getDataDirectory(void);
+U_CAPI const char* U_EXPORT2 u_getDataDirectory(void);
 
 
 /** 
@@ -88,7 +88,7 @@
  * @see u_init
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 u_setDataDirectory(const char *directory);
+U_CAPI void U_EXPORT2 u_setDataDirectory(const char *directory);
 
 #ifndef U_HIDE_INTERNAL_API
 /**
@@ -99,7 +99,7 @@
   * @return the time zone data override directory.
   * @internal
   */ 
-U_INTERNAL const char * U_EXPORT2 u_getTimeZoneFilesDirectory(UErrorCode *status);
+U_CAPI const char * U_EXPORT2 u_getTimeZoneFilesDirectory(UErrorCode *status);
 
 /**
   * Set the time zone files override directory.
@@ -109,7 +109,7 @@
   *   will access the time zone data.
   * @internal
   */
-U_INTERNAL void U_EXPORT2 u_setTimeZoneFilesDirectory(const char *path, UErrorCode *status);
+U_CAPI void U_EXPORT2 u_setTimeZoneFilesDirectory(const char *path, UErrorCode *status);
 #endif  /* U_HIDE_INTERNAL_API */
 
 
@@ -155,7 +155,7 @@
  * @see U_CHARSET_FAMILY
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_charsToUChars(const char *cs, UChar *us, int32_t length);
 
 /**
@@ -177,7 +177,7 @@
  * @see U_CHARSET_FAMILY
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_UCharsToChars(const UChar *us, char *cs, int32_t length);
 
 #endif
diff --git a/libicu/cts_headers/unicode/rbbi.h b/libicu/cts_headers/unicode/rbbi.h
index 7825f60..65117f6 100644
--- a/libicu/cts_headers/unicode/rbbi.h
+++ b/libicu/cts_headers/unicode/rbbi.h
@@ -32,6 +32,8 @@
 #include "unicode/parseerr.h"
 #include "unicode/schriter.h"
 
+struct UCPTrie;
+
 U_NAMESPACE_BEGIN
 
 /** @internal */
@@ -140,6 +142,11 @@
       */
     UBool           fDone;
 
+    /**
+     *  Array of look-ahead tentative results.
+     */
+    int32_t *fLookAheadMatches;
+
     //=======================================================================
     // constructors
     //=======================================================================
@@ -246,20 +253,20 @@
     RuleBasedBreakIterator& operator=(const RuleBasedBreakIterator& that);
 
     /**
-     * Equality operator.  Returns TRUE if both BreakIterators are of the
+     * Equality operator.  Returns true if both BreakIterators are of the
      * same class, have the same behavior, and iterate over the same text.
      * @param that The BreakIterator to be compared for equality
-     * @return TRUE if both BreakIterators are of the
+     * @return true if both BreakIterators are of the
      * same class, have the same behavior, and iterate over the same text.
      *  @stable ICU 2.0
      */
     virtual UBool operator==(const BreakIterator& that) const;
 
     /**
-     * Not-equal operator.  If operator== returns TRUE, this returns FALSE,
+     * Not-equal operator.  If operator== returns true, this returns false,
      * and vice versa.
      * @param that The BreakIterator to be compared for inequality
-     * @return TRUE if both BreakIterators are not same.
+     * @return true if both BreakIterators are not same.
      *  @stable ICU 2.0
      */
     inline UBool operator!=(const BreakIterator& that) const;
@@ -659,6 +666,28 @@
      */
     int32_t handleNext();
 
+    /*
+     * Templatized version of handleNext() and handleSafePrevious().
+     *
+     * There will be exactly four instantiations, two each for 8 and 16 bit tables,
+     * two each for 8 and 16 bit trie.
+     * Having separate instantiations for the table types keeps conditional tests of
+     * the table type out of the inner loops, at the expense of replicated code.
+     *
+     * The template parameter for the Trie access function is a value, not a type.
+     * Doing it this way, the compiler will inline the Trie function in the
+     * expanded functions. (Both the 8 and 16 bit access functions have the same type
+     * signature)
+     */
+
+    typedef uint16_t (*PTrieFunc)(const UCPTrie *, UChar32);
+
+    template<typename RowType, PTrieFunc trieFunc>
+    int32_t handleSafePrevious(int32_t fromPosition);
+
+    template<typename RowType, PTrieFunc trieFunc>
+    int32_t handleNext();
+
 
     /**
      * This function returns the appropriate LanguageBreakEngine for a
@@ -681,7 +710,6 @@
      * @internal
      */
     void dumpTables();
-
 #endif  /* U_HIDE_INTERNAL_API */
 };
 
diff --git a/libicu/cts_headers/unicode/rbnf.h b/libicu/cts_headers/unicode/rbnf.h
index 62b0232..283e969 100644
--- a/libicu/cts_headers/unicode/rbnf.h
+++ b/libicu/cts_headers/unicode/rbnf.h
@@ -297,7 +297,7 @@
  *   </tr>
  *   <tr>
  *     <td>x.0:</td>
- *     <td>The rule is a <em>master rule</em>. If the full stop in
+ *     <td>The rule is a <em>default rule</em>. If the full stop in
  *     the middle of the rule name is replaced with the decimal point
  *     that is used in the language or DecimalFormatSymbols, then that rule will
  *     have precedence when formatting and parsing this rule. For example, some
@@ -332,9 +332,9 @@
  * algorithms: If the rule set is a regular rule set, do the following:
  *
  * <ul>
- *   <li>If the rule set includes a master rule (and the number was passed in as a <tt>double</tt>),
- *     use the master rule.&nbsp; (If the number being formatted was passed in as a <tt>long</tt>,
- *     the master rule is ignored.)</li>
+ *   <li>If the rule set includes a default rule (and the number was passed in as a <tt>double</tt>),
+ *     use the default rule.&nbsp; (If the number being formatted was passed in as a <tt>long</tt>,
+ *     the default rule is ignored.)</li>
  *   <li>If the number is negative, use the negative-number rule.</li>
  *   <li>If the number has a fractional part and is greater than 1, use the improper fraction
  *     rule.</li>
@@ -393,7 +393,7 @@
  *   </tr>
  *   <tr>
  *     <td></td>
- *     <td>in fraction or master rule</td>
+ *     <td>in fraction or default rule</td>
  *     <td>Isolate the number's fractional part and format it.</td>
  *   </tr>
  *   <tr>
@@ -425,7 +425,7 @@
  *   </tr>
  *   <tr>
  *     <td></td>
- *     <td>in fraction or master rule</td>
+ *     <td>in fraction or default rule</td>
  *     <td>Isolate the number's integral part and format it.</td>
  *   </tr>
  *   <tr>
@@ -456,7 +456,7 @@
  *   </tr>
  *   <tr>
  *     <td></td>
- *     <td>in master rule</td>
+ *     <td>in default rule</td>
  *     <td>Omit the optional text if the number is an integer (same as specifying both an x.x
  *     rule and an x.0 rule)</td>
  *   </tr>
diff --git a/libicu/cts_headers/unicode/rbtz.h b/libicu/cts_headers/unicode/rbtz.h
index d66e1f0..d481e9b 100644
--- a/libicu/cts_headers/unicode/rbtz.h
+++ b/libicu/cts_headers/unicode/rbtz.h
@@ -258,7 +258,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the first transition after the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      * @stable ICU 3.8
      */
     virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
@@ -268,7 +268,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the most recent transition before the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      * @stable ICU 3.8
      */
     virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
diff --git a/libicu/cts_headers/unicode/regex.h b/libicu/cts_headers/unicode/regex.h
index 7f7d152..98ef6a7 100644
--- a/libicu/cts_headers/unicode/regex.h
+++ b/libicu/cts_headers/unicode/regex.h
@@ -116,7 +116,7 @@
      * were constructed from identical source patterns using the same #URegexpFlag
      * settings.
      * @param that a RegexPattern object to compare with "this".
-     * @return TRUE if the objects are equivalent.
+     * @return true if the objects are equivalent.
      * @stable ICU 2.4
      */
     UBool           operator==(const RegexPattern& that) const;
@@ -126,7 +126,7 @@
      * were constructed from identical source patterns using the same #URegexpFlag
      * settings.
      * @param that a RegexPattern object to compare with "this".
-     * @return TRUE if the objects are different.
+     * @return true if the objects are different.
      * @stable ICU 2.4
      */
     inline UBool    operator!=(const RegexPattern& that) const {return ! operator ==(that);}
@@ -764,7 +764,7 @@
    /**
     *   Attempts to match the entire input region against the pattern.
     *    @param   status     A reference to a UErrorCode to receive any errors.
-    *    @return TRUE if there is a match
+    *    @return true if there is a match
     *    @stable ICU 2.4
     */
     virtual UBool matches(UErrorCode &status);
@@ -777,7 +777,7 @@
     *   A successful match must extend to the end of the input.
     *    @param   startIndex The input string (native) index at which to begin matching.
     *    @param   status     A reference to a UErrorCode to receive any errors.
-    *    @return TRUE if there is a match
+    *    @return true if there is a match
     *    @stable ICU 2.8
     */
     virtual UBool matches(int64_t startIndex, UErrorCode &status);
@@ -793,7 +793,7 @@
     *   end(), and group() functions.
     *
     *    @param   status     A reference to a UErrorCode to receive any errors.
-    *    @return  TRUE if there is a match at the start of the input string.
+    *    @return  true if there is a match at the start of the input string.
     *    @stable ICU 2.4
     */
     virtual UBool lookingAt(UErrorCode &status);
@@ -809,7 +809,7 @@
     *
     *    @param   startIndex The input string (native) index at which to begin matching.
     *    @param   status     A reference to a UErrorCode to receive any errors.
-    *    @return  TRUE if there is a match.
+    *    @return  true if there is a match.
     *    @stable ICU 2.8
     */
     virtual UBool lookingAt(int64_t startIndex, UErrorCode &status);
@@ -824,7 +824,7 @@
     *  Note that if the input string is changed by the application,
     *     use find(startPos, status) instead of find(), because the saved starting
     *     position may not be valid with the altered input string.
-    *  @return  TRUE if a match is found.
+    *  @return  true if a match is found.
     *  @stable ICU 2.4
     */
     virtual UBool find();
@@ -841,7 +841,7 @@
     *  use find(startPos, status) instead of find(), because the saved starting
     *  position may not be valid with the altered input string.
     *  @param   status  A reference to a UErrorCode to receive any errors.
-    *  @return  TRUE if a match is found.
+    *  @return  true if a match is found.
     * @stable ICU 55
     */
     virtual UBool find(UErrorCode &status);
@@ -852,7 +852,7 @@
     *
     *   @param   start     The (native) index in the input string to begin the search.
     *   @param   status    A reference to a UErrorCode to receive any errors.
-    *   @return  TRUE if a match is found.
+    *   @return  true if a match is found.
     *   @stable ICU 2.4
     */
     virtual UBool find(int64_t start, UErrorCode &status);
@@ -1271,7 +1271,7 @@
       * See useTransparentBounds for a description of transparent and opaque bounds.
       * By default, a matcher uses opaque region boundaries.
       *
-      * @return TRUE if this matcher is using opaque bounds, false if it is not.
+      * @return true if this matcher is using opaque bounds, false if it is not.
       * @stable ICU 4.0
       */
       virtual UBool hasTransparentBounds() const;
@@ -1290,7 +1290,7 @@
       *
       * By default, a matcher uses opaque bounds.
       *
-      * @param   b TRUE for transparent bounds; FALSE for opaque bounds
+      * @param   b true for transparent bounds; false for opaque bounds
       * @return  This Matcher;
       * @stable ICU 4.0
       **/
@@ -1301,7 +1301,7 @@
       * Return true if this matcher is using anchoring bounds.
       * By default, matchers use anchoring region bounds.
       *
-      * @return TRUE if this matcher is using anchoring bounds.
+      * @return true if this matcher is using anchoring bounds.
       * @stable ICU 4.0
       */    
       virtual UBool hasAnchoringBounds() const;
@@ -1315,7 +1315,7 @@
       *
       * Anchoring Bounds are the default for regions.
       *
-      * @param b TRUE if to enable anchoring bounds; FALSE to disable them.
+      * @param b true if to enable anchoring bounds; false to disable them.
       * @return  This Matcher
       * @stable ICU 4.0
       */
@@ -1323,26 +1323,26 @@
 
 
     /**
-      * Return TRUE if the most recent matching operation attempted to access
+      * Return true if the most recent matching operation attempted to access
       *  additional input beyond the available input text.
       *  In this case, additional input text could change the results of the match.
       *
       *  hitEnd() is defined for both successful and unsuccessful matches.
-      *  In either case hitEnd() will return TRUE if if the end of the text was
+      *  In either case hitEnd() will return true if if the end of the text was
       *  reached at any point during the matching process.
       *
-      *  @return  TRUE if the most recent match hit the end of input
+      *  @return  true if the most recent match hit the end of input
       *  @stable ICU 4.0
       */
       virtual UBool hitEnd() const;
 
     /**
-      * Return TRUE the most recent match succeeded and additional input could cause
+      * Return true the most recent match succeeded and additional input could cause
       * it to fail. If this method returns false and a match was found, then more input
       * might change the match but the match won't be lost. If a match was not found,
       * then requireEnd has no meaning.
       *
-      * @return TRUE if more input could cause the most recent match to no longer match.
+      * @return true if more input could cause the most recent match to no longer match.
       * @stable ICU 4.0
       */
       virtual UBool requireEnd() const;
@@ -1781,7 +1781,7 @@
     inline REStackFrame *StateSave(REStackFrame *fp, int64_t savePatIdx, UErrorCode &status);
     void                 IncrementTime(UErrorCode &status);
 
-    // Call user find callback function, if set. Return TRUE if operation should be interrupted.
+    // Call user find callback function, if set. Return true if operation should be interrupted.
     inline UBool         findProgressInterrupt(int64_t matchIndex, UErrorCode &status);
     
     int64_t              appendGroup(int32_t groupNum, UText *dest, UErrorCode &status) const;
diff --git a/libicu/cts_headers/unicode/reldatefmt.h b/libicu/cts_headers/unicode/reldatefmt.h
index d5533bb..2a3742f 100644
--- a/libicu/cts_headers/unicode/reldatefmt.h
+++ b/libicu/cts_headers/unicode/reldatefmt.h
@@ -175,19 +175,17 @@
      */
     UDAT_ABSOLUTE_QUARTER,
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Hour
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UDAT_ABSOLUTE_HOUR,
 
     /**
      * Minute
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UDAT_ABSOLUTE_MINUTE,
-#endif // U_HIDE_DRAFT_API
 
 #ifndef U_HIDE_DEPRECATED_API
     /**
diff --git a/libicu/cts_headers/unicode/resbund.h b/libicu/cts_headers/unicode/resbund.h
index 2894067..37738e2 100644
--- a/libicu/cts_headers/unicode/resbund.h
+++ b/libicu/cts_headers/unicode/resbund.h
@@ -286,7 +286,7 @@
     /**
      * Checks whether the resource has another element to iterate over.
      *
-     * @return TRUE if there are more elements, FALSE if there is no more elements
+     * @return true if there are more elements, false if there is no more elements
      * @stable ICU 2.0
      */
     UBool
diff --git a/libicu/cts_headers/unicode/search.h b/libicu/cts_headers/unicode/search.h
index 2865366..f1c4b2b 100644
--- a/libicu/cts_headers/unicode/search.h
+++ b/libicu/cts_headers/unicode/search.h
@@ -267,9 +267,9 @@
     /**
      * Equality operator. 
      * @param that SearchIterator instance to be compared.
-     * @return TRUE if both BreakIterators are of the same class, have the 
+     * @return true if both BreakIterators are of the same class, have the 
      *         same behavior, terates over the same text and have the same
-     *         attributes. FALSE otherwise.
+     *         attributes. false otherwise.
      * @stable ICU 2.0
      */
     virtual UBool operator==(const SearchIterator &that) const;
@@ -277,7 +277,7 @@
     /**
      * Not-equal operator. 
      * @param that SearchIterator instance to be compared.
-     * @return FALSE if operator== returns TRUE, and vice versa.
+     * @return false if operator== returns true, and vice versa.
      * @stable ICU 2.0
      */
     UBool operator!=(const SearchIterator &that) const;
diff --git a/libicu/cts_headers/unicode/simpleformatter.h b/libicu/cts_headers/unicode/simpleformatter.h
index 9414bca..6d9c04a 100644
--- a/libicu/cts_headers/unicode/simpleformatter.h
+++ b/libicu/cts_headers/unicode/simpleformatter.h
@@ -125,7 +125,7 @@
      * @param errorCode ICU error code in/out parameter.
      *                  Must fulfill U_SUCCESS before the function call.
      *                  Set to U_ILLEGAL_ARGUMENT_ERROR for bad argument syntax.
-     * @return TRUE if U_SUCCESS(errorCode).
+     * @return true if U_SUCCESS(errorCode).
      * @stable ICU 57
      */
     UBool applyPattern(const UnicodeString &pattern, UErrorCode &errorCode) {
@@ -144,7 +144,7 @@
      *                  Must fulfill U_SUCCESS before the function call.
      *                  Set to U_ILLEGAL_ARGUMENT_ERROR for bad argument syntax and
      *                  too few or too many arguments.
-     * @return TRUE if U_SUCCESS(errorCode).
+     * @return true if U_SUCCESS(errorCode).
      * @stable ICU 57
      */
     UBool applyPatternMinMaxArguments(const UnicodeString &pattern,
diff --git a/libicu/cts_headers/unicode/simpletz.h b/libicu/cts_headers/unicode/simpletz.h
index 980a1b8..792fddb 100644
--- a/libicu/cts_headers/unicode/simpletz.h
+++ b/libicu/cts_headers/unicode/simpletz.h
@@ -714,7 +714,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the first transition after the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      * @stable ICU 3.8
      */
     virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
@@ -724,7 +724,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the most recent transition before the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      * @stable ICU 3.8
      */
     virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
diff --git a/libicu/cts_headers/unicode/smpdtfmt.h b/libicu/cts_headers/unicode/smpdtfmt.h
index b4b0e5f..3296c6b 100644
--- a/libicu/cts_headers/unicode/smpdtfmt.h
+++ b/libicu/cts_headers/unicode/smpdtfmt.h
@@ -81,7 +81,7 @@
  * the date and time formatting algorithm and pattern letters defined by
  * <a href="http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table">UTS#35
  * Unicode Locale Data Markup Language (LDML)</a> and further documented for ICU in the
- * <a href="https://sites.google.com/site/icuprojectuserguide/formatparse/datetime?pli=1#TOC-Date-Field-Symbol-Table">ICU
+ * <a href="https://unicode-org.github.io/icu/userguide/format_parse/datetime/#date-field-symbol-table">ICU
  * User Guide</a>. The following pattern letters are currently available (note that the actual
  * values depend on CLDR and may change from the examples shown here):</p>
  *
@@ -1183,11 +1183,11 @@
     /**
      * This is for ICU internal use only. Please do not use.
      * Check whether the 'field' is smaller than all the fields covered in
-     * pattern, return TRUE if it is. The sequence of calendar field,
+     * pattern, return true if it is. The sequence of calendar field,
      * from large to small is: ERA, YEAR, MONTH, DATE, AM_PM, HOUR, MINUTE,...
      * @param field    the calendar field need to check against
-     * @return         TRUE if the 'field' is smaller than all the fields
-     *                 covered in pattern. FALSE otherwise.
+     * @return         true if the 'field' is smaller than all the fields
+     *                 covered in pattern. false otherwise.
      * @internal ICU 4.0
      */
     UBool isFieldUnitIgnored(UCalendarDateFields field) const;
@@ -1196,12 +1196,12 @@
     /**
      * This is for ICU internal use only. Please do not use.
      * Check whether the 'field' is smaller than all the fields covered in
-     * pattern, return TRUE if it is. The sequence of calendar field,
+     * pattern, return true if it is. The sequence of calendar field,
      * from large to small is: ERA, YEAR, MONTH, DATE, AM_PM, HOUR, MINUTE,...
      * @param pattern  the pattern to check against
      * @param field    the calendar field need to check against
-     * @return         TRUE if the 'field' is smaller than all the fields
-     *                 covered in pattern. FALSE otherwise.
+     * @return         true if the 'field' is smaller than all the fields
+     *                 covered in pattern. false otherwise.
      * @internal ICU 4.0
      */
     static UBool isFieldUnitIgnored(const UnicodeString& pattern,
@@ -1305,12 +1305,12 @@
     static UBool isNumeric(char16_t formatChar, int32_t count);
 
     /**
-     * Returns TRUE if the patternOffset is at the start of a numeric field.
+     * Returns true if the patternOffset is at the start of a numeric field.
      */
     static UBool isAtNumericField(const UnicodeString &pattern, int32_t patternOffset);
 
     /**
-     * Returns TRUE if the patternOffset is right after a non-numeric field.
+     * Returns true if the patternOffset is right after a non-numeric field.
      */
     static UBool isAfterNonNumericField(const UnicodeString &pattern, int32_t patternOffset);
 
@@ -1390,11 +1390,11 @@
      * @param text the text being parsed
      * @param textOffset the starting offset into the text. On output
      *                   will be set to the offset of the character after the match
-     * @param whitespaceLenient <code>TRUE</code> if whitespace parse is lenient, <code>FALSE</code> otherwise.
-     * @param partialMatchLenient <code>TRUE</code> if partial match parse is lenient, <code>FALSE</code> otherwise.
-     * @param oldLeniency <code>TRUE</code> if old leniency control is lenient, <code>FALSE</code> otherwise.
+     * @param whitespaceLenient <code>true</code> if whitespace parse is lenient, <code>false</code> otherwise.
+     * @param partialMatchLenient <code>true</code> if partial match parse is lenient, <code>false</code> otherwise.
+     * @param oldLeniency <code>true</code> if old leniency control is lenient, <code>false</code> otherwise.
      *
-     * @return <code>TRUE</code> if the literal text could be matched, <code>FALSE</code> otherwise.
+     * @return <code>true</code> if the literal text could be matched, <code>false</code> otherwise.
      */
     static UBool matchLiterals(const UnicodeString &pattern, int32_t &patternOffset,
                                const UnicodeString &text, int32_t &textOffset,
diff --git a/libicu/cts_headers/unicode/sortkey.h b/libicu/cts_headers/unicode/sortkey.h
index 34ed7ee..1ca0744 100644
--- a/libicu/cts_headers/unicode/sortkey.h
+++ b/libicu/cts_headers/unicode/sortkey.h
@@ -150,7 +150,7 @@
     /**
     * Compare if two collation keys are not the same.
     * @param source the collation key to compare to.
-    * @return Returns TRUE if two collation keys are different, FALSE otherwise.
+    * @return Returns true if two collation keys are different, false otherwise.
     * @stable ICU 2.0
     */
     UBool                   operator!=(const CollationKey& source) const;
@@ -159,7 +159,7 @@
     /**
     * Test to see if the key is in an invalid state. The key will be in an
     * invalid state if it couldn't allocate memory for some operation.
-    * @return Returns TRUE if the key is in an invalid, FALSE otherwise.
+    * @return Returns true if the key is in an invalid, false otherwise.
     * @stable ICU 2.0
     */
     UBool                   isBogus(void) const;
diff --git a/libicu/cts_headers/unicode/strenum.h b/libicu/cts_headers/unicode/strenum.h
index 8601f1f..df72b4b 100644
--- a/libicu/cts_headers/unicode/strenum.h
+++ b/libicu/cts_headers/unicode/strenum.h
@@ -196,7 +196,7 @@
      * Compares this enumeration to other to check if both are equal
      *
      * @param that The other string enumeration to compare this object to
-     * @return TRUE if the enumerations are equal. FALSE if not.
+     * @return true if the enumerations are equal. false if not.
      * @stable ICU 3.6 
      */
     virtual UBool operator==(const StringEnumeration& that)const;
@@ -204,7 +204,7 @@
      * Compares this enumeration to other to check if both are not equal
      *
      * @param that The other string enumeration to compare this object to
-     * @return TRUE if the enumerations are equal. FALSE if not.
+     * @return true if the enumerations are equal. false if not.
      * @stable ICU 3.6 
      */
     virtual UBool operator!=(const StringEnumeration& that)const;
diff --git a/libicu/cts_headers/unicode/stringpiece.h b/libicu/cts_headers/unicode/stringpiece.h
index 52c1e9e..7d7d871 100644
--- a/libicu/cts_headers/unicode/stringpiece.h
+++ b/libicu/cts_headers/unicode/stringpiece.h
@@ -111,7 +111,6 @@
 #endif
 #endif  // U_HIDE_DRAFT_API
 
-#ifndef U_HIDE_DRAFT_API
   /**
    * Constructs from some other implementation of a string piece class, from any
    * C++ record type that has these two methods:
@@ -132,7 +131,7 @@
    * as from std::u8string_view.
    *
    * @param str the other string piece
-   * @draft ICU 65
+   * @stable ICU 65
    */
   template <typename T,
             typename = typename std::enable_if<
@@ -145,7 +144,6 @@
   StringPiece(T str)
       : ptr_(reinterpret_cast<const char*>(str.data())),
         length_(static_cast<int32_t>(str.size())) {}
-#endif  // U_HIDE_DRAFT_API
 
   /**
    * Constructs from a const char * pointer and a specified length.
@@ -209,7 +207,7 @@
   int32_t length() const { return length_; }
   /**
    * Returns whether the string is empty.
-   * @return TRUE if the string is empty
+   * @return true if the string is empty
    * @stable ICU 4.2
    */
   UBool empty() const { return length_ == 0; }
@@ -331,7 +329,7 @@
  * Global operator == for StringPiece
  * @param x The first StringPiece to compare.
  * @param y The second StringPiece to compare.
- * @return TRUE if the string data is equal
+ * @return true if the string data is equal
  * @stable ICU 4.8
  */
 U_EXPORT UBool U_EXPORT2 
@@ -341,7 +339,7 @@
  * Global operator != for StringPiece
  * @param x The first StringPiece to compare.
  * @param y The second StringPiece to compare.
- * @return TRUE if the string data is not equal
+ * @return true if the string data is not equal
  * @stable ICU 4.8
  */
 inline UBool operator!=(const StringPiece& x, const StringPiece& y) {
diff --git a/libicu/cts_headers/unicode/stringtriebuilder.h b/libicu/cts_headers/unicode/stringtriebuilder.h
index 2c47dd4..fe471bb 100644
--- a/libicu/cts_headers/unicode/stringtriebuilder.h
+++ b/libicu/cts_headers/unicode/stringtriebuilder.h
@@ -279,10 +279,10 @@
      */
     class ValueNode : public Node {
     public:
-        ValueNode(int32_t initialHash) : Node(initialHash), hasValue(FALSE), value(0) {}
+        ValueNode(int32_t initialHash) : Node(initialHash), hasValue(false), value(0) {}
         virtual UBool operator==(const Node &other) const;
         void setValue(int32_t v) {
-            hasValue=TRUE;
+            hasValue=true;
             value=v;
             hash=hash*37u+v;
         }
diff --git a/libicu/cts_headers/unicode/stsearch.h b/libicu/cts_headers/unicode/stsearch.h
index fcb5dbf..9bf3df0 100644
--- a/libicu/cts_headers/unicode/stsearch.h
+++ b/libicu/cts_headers/unicode/stsearch.h
@@ -292,7 +292,7 @@
     /**
      * Equality operator. 
      * @param that instance to be compared.
-     * @return TRUE if both instances have the same attributes, 
+     * @return true if both instances have the same attributes, 
      *         breakiterators, collators and iterate over the same text 
      *         while looking for the same pattern.
      * @stable ICU 2.0
diff --git a/libicu/cts_headers/unicode/tblcoll.h b/libicu/cts_headers/unicode/tblcoll.h
index f5dc135..a004dd6 100644
--- a/libicu/cts_headers/unicode/tblcoll.h
+++ b/libicu/cts_headers/unicode/tblcoll.h
@@ -99,14 +99,14 @@
  * table-based collation.
  * <p>
  * For more information about the collation service see
- * <a href="http://userguide.icu-project.org/collation">the User Guide</a>.
+ * <a href="https://unicode-org.github.io/icu/userguide/collation">the User Guide</a>.
  * <p>
  * Collation service provides correct sorting orders for most locales supported in ICU.
  * If specific data for a locale is not available, the orders eventually falls back
  * to the <a href="http://www.unicode.org/reports/tr35/tr35-collation.html#Root_Collation">CLDR root sort order</a>.
  * <p>
  * Sort ordering may be customized by providing your own set of rules. For more on
- * this subject see the <a href="http://userguide.icu-project.org/collation/customization">
+ * this subject see the <a href="https://unicode-org.github.io/icu/userguide/collation/customization">
  * Collation Customization</a> section of the User Guide.
  * <p>
  * Note, RuleBasedCollator is not to be subclassed.
@@ -495,7 +495,7 @@
      * just the tailoring.
      *
      * getRules(void) should normally be used instead.
-     * See http://userguide.icu-project.org/collation/customization#TOC-Building-on-Existing-Locales
+     * See https://unicode-org.github.io/icu/userguide/collation/customization#building-on-existing-locales
      * @param delta one of UCOL_TAILORING_ONLY, UCOL_FULL_RULES.
      * @param buffer UnicodeString to store the result rules
      * @stable ICU 2.2
@@ -702,7 +702,7 @@
      *  This string will be normalized.
      *  The structure and the syntax of the string is defined in the "Naming collators"
      *  section of the users guide:
-     *  http://userguide.icu-project.org/collation/concepts#TOC-Collator-naming-scheme
+     *  https://unicode-org.github.io/icu/userguide/collation/concepts#collator-naming-scheme
      *  This function supports preflighting.
      *
      *  This is internal, and intended to be used with delegate converters.
@@ -752,7 +752,7 @@
      * Implements ucol_getContractionsAndExpansions().
      * Gets this collator's sets of contraction strings and/or
      * characters and strings that map to multiple collation elements (expansions).
-     * If addPrefixes is TRUE, then contractions that are expressed as
+     * If addPrefixes is true, then contractions that are expressed as
      * prefix/pre-context rules are included.
      * @param contractions if not NULL, the set to hold the contractions
      * @param expansions if not NULL, the set to hold the expansions
@@ -857,7 +857,7 @@
      * Tests whether a character is "unsafe" for use as a collation starting point.
      *
      * @param c code point or code unit
-     * @return TRUE if c is unsafe
+     * @return true if c is unsafe
      * @see CollationElementIterator#setOffset(int)
      */
     UBool isUnsafe(UChar32 c) const;
diff --git a/libicu/cts_headers/unicode/timezone.h b/libicu/cts_headers/unicode/timezone.h
index 433e3b5..90e5f25 100644
--- a/libicu/cts_headers/unicode/timezone.h
+++ b/libicu/cts_headers/unicode/timezone.h
@@ -317,6 +317,19 @@
      */
     static TimeZone* U_EXPORT2 createDefault(void);
 
+#ifndef U_HIDE_INTERNAL_API
+    /**
+     * If the locale contains the timezone keyword, creates a copy of that TimeZone.
+     * Otherwise, create the default timezone.
+     *
+     * @param locale a locale which may contains 'timezone' keyword/value.
+     * @return   A TimeZone. Clients are responsible for deleting the time zone
+     *           object returned.
+     * @internal
+     */
+    static TimeZone* U_EXPORT2 forLocaleOrDefault(const Locale& locale);
+#endif  /* U_HIDE_INTERNAL_API */
+
     /**
      * Sets the default time zone (i.e., what's returned by createDefault()) to be the
      * specified time zone.  If NULL is specified for the time zone, the default time
@@ -392,7 +405,7 @@
     *
     * <p>This implementation utilizes <a href="http://unicode.org/cldr/charts/supplemental/zone_tzid.html">
     * Zone-Tzid mapping data</a>. The mapping data is updated time to time. To get the latest changes,
-    * please read the ICU user guide section <a href="http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data">
+    * please read the ICU user guide section <a href="https://unicode-org.github.io/icu/userguide/datetime/timezone#updating-the-time-zone-data">
     * Updating the Time Zone Data</a>.
     *
     * @param id        A system time zone ID.
@@ -420,7 +433,7 @@
     *
     * <p>This implementation utilizes <a href="http://unicode.org/cldr/charts/supplemental/zone_tzid.html">
     * Zone-Tzid mapping data</a>. The mapping data is updated time to time. To get the latest changes,
-    * please read the ICU user guide section <a href="http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data">
+    * please read the ICU user guide section <a href="https://unicode-org.github.io/icu/userguide/datetime/timezone#updating-the-time-zone-data">
     * Updating the Time Zone Data</a>.
     *
     * @param winid     A Windows time zone ID.
@@ -696,8 +709,8 @@
      * there are time zones that used daylight savings time in the
      * past, but no longer used currently. For example, Asia/Tokyo has
      * never used daylight savings time since 1951. Most clients would
-     * expect that this method to return <code>FALSE</code> for such case.
-     * The default implementation of this method returns <code>TRUE</code>
+     * expect that this method to return <code>false</code> for such case.
+     * The default implementation of this method returns <code>true</code>
      * when the time zone uses daylight savings time in the current
      * (Gregorian) calendar year.
      * <p>In Java 7, <code>observesDaylightTime()</code> was added in
@@ -914,7 +927,7 @@
      * @param hour Receives parsed hour field
      * @param minute Receives parsed minute field
      * @param second Receives parsed second field
-     * @return Returns TRUE when the given custom id is valid.
+     * @return Returns true when the given custom id is valid.
      */
     static UBool parseCustomID(const UnicodeString& id, int32_t& sign, int32_t& hour,
         int32_t& minute, int32_t& second);
@@ -937,7 +950,7 @@
      * @param hour offset hours
      * @param min offset minutes
      * @param sec offset seconds
-     * @param negative sign of the offset, TRUE for negative offset.
+     * @param negative sign of the offset, true for negative offset.
      * @param id Receves the format result (normalized custom ID)
      * @return The reference to id
      */
diff --git a/libicu/cts_headers/unicode/tmutamt.h b/libicu/cts_headers/unicode/tmutamt.h
index 8bcc684..d5972e7 100644
--- a/libicu/cts_headers/unicode/tmutamt.h
+++ b/libicu/cts_headers/unicode/tmutamt.h
@@ -39,7 +39,7 @@
     /**
      * Construct TimeUnitAmount object with the given number and the
      * given time unit. 
-     * @param number        a numeric object; number.isNumeric() must be TRUE
+     * @param number        a numeric object; number.isNumeric() must be true
      * @param timeUnitField the time unit field of a time unit
      * @param status        the input-output error code. 
      *                      If the number is not numeric or the timeUnitField
diff --git a/libicu/cts_headers/unicode/translit.h b/libicu/cts_headers/unicode/translit.h
index fe2568d..2aa02c3 100644
--- a/libicu/cts_headers/unicode/translit.h
+++ b/libicu/cts_headers/unicode/translit.h
@@ -882,7 +882,7 @@
      * another transliterator.
      * @param text the text to be transliterated
      * @param index the position indices
-     * @param incremental if TRUE, then assume more characters may be inserted
+     * @param incremental if true, then assume more characters may be inserted
      * at index.limit, and postpone processing to accomodate future incoming
      * characters
      * @stable ICU 2.4
@@ -897,14 +897,14 @@
      * Top-level transliteration method, handling filtering, incremental and
      * non-incremental transliteration, and rollback.  All transliteration
      * public API methods eventually call this method with a rollback argument
-     * of TRUE.  Other entities may call this method but rollback should be
-     * FALSE.
+     * of true.  Other entities may call this method but rollback should be
+     * false.
      *
      * <p>If this transliterator has a filter, break up the input text into runs
      * of unfiltered characters.  Pass each run to
      * subclass.handleTransliterate().
      *
-     * <p>In incremental mode, if rollback is TRUE, perform a special
+     * <p>In incremental mode, if rollback is true, perform a special
      * incremental procedure in which several passes are made over the input
      * text, adding one character at a time, and committing successful
      * transliterations as they occur.  Unsuccessful transliterations are rolled
@@ -912,12 +912,12 @@
      *
      * @param text the text to be transliterated
      * @param index the position indices
-     * @param incremental if TRUE, then assume more characters may be inserted
+     * @param incremental if true, then assume more characters may be inserted
      * at index.limit, and postpone processing to accomodate future incoming
      * characters
-     * @param rollback if TRUE and if incremental is TRUE, then perform special
+     * @param rollback if true and if incremental is true, then perform special
      * incremental processing, as described above, and undo partial
-     * transliterations where necessary.  If incremental is FALSE then this
+     * transliterations where necessary.  If incremental is false then this
      * parameter is ignored.
      */
     virtual void filteredTransliterate(Replaceable& text,
@@ -1119,7 +1119,7 @@
      * to recreate this transliterator.
      * @param result the string to receive the rules.  Previous
      * contents will be deleted.
-     * @param escapeUnprintable if TRUE then convert unprintable
+     * @param escapeUnprintable if true then convert unprintable
      * character to their hex escape representations, \\uxxxx or
      * \\Uxxxxxxxx.  Unprintable characters are those other than
      * U+000A, U+0020..U+007E.
diff --git a/libicu/cts_headers/unicode/tzfmt.h b/libicu/cts_headers/unicode/tzfmt.h
index 6d3863b..4411865 100644
--- a/libicu/cts_headers/unicode/tzfmt.h
+++ b/libicu/cts_headers/unicode/tzfmt.h
@@ -295,7 +295,7 @@
      * Return true if the given Format objects are semantically equal.
      * Objects of different subclasses are considered unequal.
      * @param other The object to be compared with.
-     * @return Return TRUE if the given Format objects are semantically equal.
+     * @return Return true if the given Format objects are semantically equal.
      *                Objects of different subclasses are considered unequal.
      * @stable ICU 50
      */
@@ -814,7 +814,7 @@
      * @param str the string
      * @param codeArray receives the result
      * @param capacity the capacity of codeArray
-     * @return TRUE when the specified code array is fully filled with code points
+     * @return true when the specified code array is fully filled with code points
      *         (no under/overflow).
      */
     static UBool toCodePoints(const UnicodeString& str, UChar32* codeArray, int32_t capacity);
@@ -849,8 +849,8 @@
      * @param text the text contains ISO 8601 style time zone string (e.g. "-08:00", "Z")
      *      at the position.
      * @param pos the position, non-negative error index will be set on failure.
-     * @param extendedOnly TRUE if parsing the text as ISO 8601 extended offset format (e.g. "-08:00"),
-     *      or FALSE to evaluate the text as basic format.
+     * @param extendedOnly true if parsing the text as ISO 8601 extended offset format (e.g. "-08:00"),
+     *      or false to evaluate the text as basic format.
      * @param hasDigitOffset receiving if the parsed zone string contains offset digits.
      * @return the offset from GMT(UTC) in milliseconds for the given ISO 8601 style
      *      time zone string.
diff --git a/libicu/cts_headers/unicode/tznames.h b/libicu/cts_headers/unicode/tznames.h
index 8604942..2e20eff 100644
--- a/libicu/cts_headers/unicode/tznames.h
+++ b/libicu/cts_headers/unicode/tznames.h
@@ -139,7 +139,7 @@
     /**
      * Return true if the given TimeZoneNames objects are semantically equal.
      * @param other the object to be compared with.
-     * @return Return TRUE if the given Format objects are semantically equal.
+     * @return Return true if the given Format objects are semantically equal.
      * @stable ICU 50
      */
     virtual UBool operator==(const TimeZoneNames& other) const = 0;
@@ -148,7 +148,7 @@
      * Return true if the given TimeZoneNames objects are not semantically
      * equal.
      * @param other the object to be compared with.
-     * @return Return TRUE if the given Format objects are not semantically equal.
+     * @return Return true if the given Format objects are not semantically equal.
      * @stable ICU 50
      */
     UBool operator!=(const TimeZoneNames& other) const { return !operator==(other); }
@@ -373,7 +373,7 @@
          * Gets the zone ID of a match at the specified index.
          * @param idx The index
          * @param tzID Receives the zone ID.
-         * @return TRUE if the zone ID was set to tzID.
+         * @return true if the zone ID was set to tzID.
          * @internal
          */
         UBool getTimeZoneIDAt(int32_t idx, UnicodeString& tzID) const;
@@ -382,7 +382,7 @@
          * Gets the metazone ID of a match at the specified index.
          * @param idx The index
          * @param mzID Receives the metazone ID
-         * @return TRUE if the meta zone ID was set to mzID.
+         * @return true if the meta zone ID was set to mzID.
          * @internal
          */
         UBool getMetaZoneIDAt(int32_t idx, UnicodeString& mzID) const;
diff --git a/libicu/cts_headers/unicode/ubidi.h b/libicu/cts_headers/unicode/ubidi.h
index 9b048b5..63d0e45 100644
--- a/libicu/cts_headers/unicode/ubidi.h
+++ b/libicu/cts_headers/unicode/ubidi.h
@@ -499,7 +499,7 @@
  * @return An empty <code>UBiDi</code> object.
  * @stable ICU 2.0
  */
-U_STABLE UBiDi * U_EXPORT2
+U_CAPI UBiDi * U_EXPORT2
 ubidi_open(void);
 
 /**
@@ -536,7 +536,7 @@
  * @return An empty <code>UBiDi</code> object with preallocated memory.
  * @stable ICU 2.0
  */
-U_STABLE UBiDi * U_EXPORT2
+U_CAPI UBiDi * U_EXPORT2
 ubidi_openSized(int32_t maxLength, int32_t maxRunCount, UErrorCode *pErrorCode);
 
 /**
@@ -559,7 +559,7 @@
  * @see ubidi_setLine
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_close(UBiDi *pBiDi);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -597,7 +597,7 @@
  * this "inverse Bidi" and that the current implementation provides only an
  * approximation of "inverse Bidi".</p>
  *
- * <p>With <code>isInverse</code> set to <code>TRUE</code>,
+ * <p>With <code>isInverse</code> set to <code>true</code>,
  * this function changes the behavior of some of the subsequent functions
  * in a way that they can be used for the inverse Bidi algorithm.
  * Specifically, runs of text with numeric characters will be treated in a
@@ -610,12 +610,12 @@
  * the runs of the logically ordered output.</p>
  *
  * <p>Calling this function with argument <code>isInverse</code> set to
- * <code>TRUE</code> is equivalent to calling
+ * <code>true</code> is equivalent to calling
  * <code>ubidi_setReorderingMode</code> with argument
  * <code>reorderingMode</code>
  * set to <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>.<br>
  * Calling this function with argument <code>isInverse</code> set to
- * <code>FALSE</code> is equivalent to calling
+ * <code>false</code> is equivalent to calling
  * <code>ubidi_setReorderingMode</code> with argument
  * <code>reorderingMode</code>
  * set to <code>#UBIDI_REORDER_DEFAULT</code>.
@@ -629,18 +629,18 @@
  * @see ubidi_setReorderingMode
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setInverse(UBiDi *pBiDi, UBool isInverse);
 
 /**
  * Is this Bidi object set to perform the inverse Bidi algorithm?
  * <p>Note: calling this function after setting the reordering mode with
- * <code>ubidi_setReorderingMode</code> will return <code>TRUE</code> if the
+ * <code>ubidi_setReorderingMode</code> will return <code>true</code> if the
  * reordering mode was set to <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>,
- * <code>FALSE</code> for all other values.</p>
+ * <code>false</code> for all other values.</p>
  *
  * @param pBiDi is a <code>UBiDi</code> object.
- * @return TRUE if the Bidi object is set to perform the inverse Bidi algorithm
+ * @return true if the Bidi object is set to perform the inverse Bidi algorithm
  * by handling numbers as L.
  *
  * @see ubidi_setInverse
@@ -648,7 +648,7 @@
  * @stable ICU 2.0
  */
 
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ubidi_isInverse(UBiDi *pBiDi);
 
 /**
@@ -671,7 +671,7 @@
  * @see ubidi_setPara
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_orderParagraphsLTR(UBiDi *pBiDi, UBool orderParagraphsLTR);
 
 /**
@@ -679,13 +679,13 @@
  * successive paragraphs progress from left to right?
  *
  * @param pBiDi is a <code>UBiDi</code> object.
- * @return TRUE if the Bidi object is set to allocate level 0 to block
+ * @return true if the Bidi object is set to allocate level 0 to block
  *         separators.
  *
  * @see ubidi_orderParagraphsLTR
  * @stable ICU 3.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ubidi_isOrderParagraphsLTR(UBiDi *pBiDi);
 
 /**
@@ -717,7 +717,7 @@
       * @stable ICU 3.6 */
     UBIDI_REORDER_RUNS_ONLY,
     /** Visual to Logical algorithm which handles numbers like L
-      * (same algorithm as selected by <code>ubidi_setInverse(TRUE)</code>.
+      * (same algorithm as selected by <code>ubidi_setInverse(true)</code>.
       * @see ubidi_setInverse
       * @stable ICU 3.6 */
     UBIDI_REORDER_INVERSE_NUMBERS_AS_L,
@@ -836,7 +836,7 @@
  * reordered sequence (the option <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code> can
  * be used with function <code>ubidi_writeReordered</code> to this end. This
  * mode is equivalent to calling <code>ubidi_setInverse()</code> with
- * argument <code>isInverse</code> set to <code>TRUE</code>.</li>
+ * argument <code>isInverse</code> set to <code>true</code>.</li>
  *
  * <li>When the reordering mode is set to
  * <code>#UBIDI_REORDER_INVERSE_LIKE_DIRECT</code>, the "direct" Logical to Visual
@@ -889,7 +889,7 @@
  * @see ubidi_writeReordered
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setReorderingMode(UBiDi *pBiDi, UBiDiReorderingMode reorderingMode);
 
 /**
@@ -900,7 +900,7 @@
  * @see ubidi_setReorderingMode
  * @stable ICU 3.6
  */
-U_STABLE UBiDiReorderingMode U_EXPORT2
+U_CAPI UBiDiReorderingMode U_EXPORT2
 ubidi_getReorderingMode(UBiDi *pBiDi);
 
 /**
@@ -938,7 +938,7 @@
      *
      * <p>If this option is set in conjunction with reordering mode
      * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code> or with calling
-     * <code>ubidi_setInverse(TRUE)</code>, it implies
+     * <code>ubidi_setInverse(true)</code>, it implies
      * option <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code>
      * in calls to function <code>ubidi_writeReordered()</code>.</p>
      *
@@ -1019,7 +1019,7 @@
      *
      * <p>When the <code>UBIDI_OPTION_STREAMING</code> option is used,
      * it is recommended to call <code>ubidi_orderParagraphsLTR()</code> with
-     * argument <code>orderParagraphsLTR</code> set to <code>TRUE</code> before
+     * argument <code>orderParagraphsLTR</code> set to <code>true</code> before
      * calling <code>ubidi_setPara</code> so that later paragraphs may be
      * concatenated to previous paragraphs on the right.</p>
      *
@@ -1045,7 +1045,7 @@
  * @see ubidi_getReorderingOptions
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setReorderingOptions(UBiDi *pBiDi, uint32_t reorderingOptions);
 
 /**
@@ -1056,7 +1056,7 @@
  * @see ubidi_setReorderingOptions
  * @stable ICU 3.6
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 ubidi_getReorderingOptions(UBiDi *pBiDi);
 
 /**
@@ -1143,7 +1143,7 @@
  * @see ubidi_setPara
  * @stable ICU 4.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setContext(UBiDi *pBiDi,
                  const UChar *prologue, int32_t proLength,
                  const UChar *epilogue, int32_t epiLength,
@@ -1231,7 +1231,7 @@
  * @param pErrorCode must be a valid pointer to an error code value.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setPara(UBiDi *pBiDi, const UChar *text, int32_t length,
               UBiDiLevel paraLevel, UBiDiLevel *embeddingLevels,
               UErrorCode *pErrorCode);
@@ -1282,7 +1282,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setLine(const UBiDi *pParaBiDi,
               int32_t start, int32_t limit,
               UBiDi *pLineBiDi,
@@ -1303,7 +1303,7 @@
  * @see UBiDiDirection
  * @stable ICU 2.0
  */
-U_STABLE UBiDiDirection U_EXPORT2
+U_CAPI UBiDiDirection U_EXPORT2
 ubidi_getDirection(const UBiDi *pBiDi);
 
 /**
@@ -1333,7 +1333,7 @@
  * @see UBiDiDirection
  * @stable ICU 4.6
  */
-U_STABLE UBiDiDirection U_EXPORT2
+U_CAPI UBiDiDirection U_EXPORT2
 ubidi_getBaseDirection(const UChar *text,  int32_t length );
 
 /**
@@ -1347,7 +1347,7 @@
  * @see ubidi_setLine
  * @stable ICU 2.0
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 ubidi_getText(const UBiDi *pBiDi);
 
 /**
@@ -1358,7 +1358,7 @@
  * @return The length of the text that the UBiDi object was created for.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getLength(const UBiDi *pBiDi);
 
 /**
@@ -1376,7 +1376,7 @@
  * @see ubidi_getParagraphByIndex
  * @stable ICU 2.0
  */
-U_STABLE UBiDiLevel U_EXPORT2
+U_CAPI UBiDiLevel U_EXPORT2
 ubidi_getParaLevel(const UBiDi *pBiDi);
 
 /**
@@ -1387,7 +1387,7 @@
  * @return The number of paragraphs.
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_countParagraphs(UBiDi *pBiDi);
 
 /**
@@ -1424,7 +1424,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getParagraph(const UBiDi *pBiDi, int32_t charIndex, int32_t *pParaStart,
                    int32_t *pParaLimit, UBiDiLevel *pParaLevel,
                    UErrorCode *pErrorCode);
@@ -1456,7 +1456,7 @@
  *
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getParagraphByIndex(const UBiDi *pBiDi, int32_t paraIndex,
                           int32_t *pParaStart, int32_t *pParaLimit,
                           UBiDiLevel *pParaLevel, UErrorCode *pErrorCode);
@@ -1476,7 +1476,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE UBiDiLevel U_EXPORT2
+U_CAPI UBiDiLevel U_EXPORT2
 ubidi_getLevelAt(const UBiDi *pBiDi, int32_t charIndex);
 
 /**
@@ -1497,7 +1497,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE const UBiDiLevel * U_EXPORT2
+U_CAPI const UBiDiLevel * U_EXPORT2
 ubidi_getLevels(UBiDi *pBiDi, UErrorCode *pErrorCode);
 
 /**
@@ -1524,7 +1524,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getLogicalRun(const UBiDi *pBiDi, int32_t logicalPosition,
                     int32_t *pLogicalLimit, UBiDiLevel *pLevel);
 
@@ -1543,7 +1543,7 @@
  * @return The number of runs.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_countRuns(UBiDi *pBiDi, UErrorCode *pErrorCode);
 
 /**
@@ -1602,7 +1602,7 @@
  * to avoid these issues.
  * @stable ICU 2.0
  */
-U_STABLE UBiDiDirection U_EXPORT2
+U_CAPI UBiDiDirection U_EXPORT2
 ubidi_getVisualRun(UBiDi *pBiDi, int32_t runIndex,
                    int32_t *pLogicalStart, int32_t *pLength);
 
@@ -1643,7 +1643,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getVisualIndex(UBiDi *pBiDi, int32_t logicalIndex, UErrorCode *pErrorCode);
 
 /**
@@ -1678,7 +1678,7 @@
  * @see ubidi_getResultLength
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getLogicalIndex(UBiDi *pBiDi, int32_t visualIndex, UErrorCode *pErrorCode);
 
 /**
@@ -1721,7 +1721,7 @@
  * @see ubidi_getResultLength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getLogicalMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode);
 
 /**
@@ -1757,7 +1757,7 @@
  * @see ubidi_getResultLength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getVisualMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode);
 
 /**
@@ -1780,7 +1780,7 @@
  *        The index map will result in <code>indexMap[logicalIndex]==visualIndex</code>.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_reorderLogical(const UBiDiLevel *levels, int32_t length, int32_t *indexMap);
 
 /**
@@ -1803,7 +1803,7 @@
  *        The index map will result in <code>indexMap[visualIndex]==logicalIndex</code>.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_reorderVisual(const UBiDiLevel *levels, int32_t length, int32_t *indexMap);
 
 /**
@@ -1838,7 +1838,7 @@
  * @see UBIDI_MAP_NOWHERE
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_invertMap(const int32_t *srcMap, int32_t *destMap, int32_t length);
 
 /** option flags for ubidi_writeReordered() */
@@ -1943,7 +1943,7 @@
  * @see UBIDI_OPTION_STREAMING
  * @stable ICU 3.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getProcessedLength(const UBiDi *pBiDi);
 
 /**
@@ -1973,7 +1973,7 @@
  * @see UBIDI_OPTION_REMOVE_CONTROLS
  * @stable ICU 3.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getResultLength(const UBiDi *pBiDi);
 
 U_CDECL_BEGIN
@@ -2031,7 +2031,7 @@
  * @see UBiDiClassCallback
  * @stable ICU 3.6
  */
-U_STABLE UCharDirection U_EXPORT2
+U_CAPI UCharDirection U_EXPORT2
 ubidi_getCustomizedClass(UBiDi *pBiDi, UChar32 c);
 
 /**
@@ -2061,7 +2061,7 @@
  * @see ubidi_getClassCallback
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setClassCallback(UBiDi *pBiDi, UBiDiClassCallback *newFn,
                        const void *newContext, UBiDiClassCallback **oldFn,
                        const void **oldContext, UErrorCode *pErrorCode);
@@ -2078,7 +2078,7 @@
  * @see ubidi_setClassCallback
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getClassCallback(UBiDi *pBiDi, UBiDiClassCallback **fn, const void **context);
 
 /**
@@ -2146,7 +2146,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_writeReordered(UBiDi *pBiDi,
                      UChar *dest, int32_t destSize,
                      uint16_t options,
@@ -2198,7 +2198,7 @@
  * @return The length of the output string.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_writeReverse(const UChar *src, int32_t srcLength,
                    UChar *dest, int32_t destSize,
                    uint16_t options,
diff --git a/libicu/cts_headers/unicode/ubiditransform.h b/libicu/cts_headers/unicode/ubiditransform.h
index 79e22c0..2dd7564 100644
--- a/libicu/cts_headers/unicode/ubiditransform.h
+++ b/libicu/cts_headers/unicode/ubiditransform.h
@@ -150,10 +150,10 @@
  * calling <code>ubidi_setPara</code> with
  * <code>paraLevel == UBIDI_DEFAULT_RTL</code>,</li>
  * <li><Visual LTR, Logical LTR>: this is equivalent to
- * calling <code>ubidi_setInverse(UBiDi*, TRUE)</code> and then
+ * calling <code>ubidi_setInverse(UBiDi*, true)</code> and then
  * <code>ubidi_setPara</code> with <code>paraLevel == UBIDI_LTR</code>,</li>
  * <li><Visual LTR, Logical RTL>: this is equivalent to
- * calling <code>ubidi_setInverse(UBiDi*, TRUE)</code> and then
+ * calling <code>ubidi_setInverse(UBiDi*, true)</code> and then
  * <code>ubidi_setPara</code> with <code>paraLevel == UBIDI_RTL</code>.</li>
  * </ul>
  * All combinations that involve the Visual RTL scheme are unsupported by
@@ -248,7 +248,7 @@
  * @see u_shapeArabic
  * @stable ICU 58
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 ubiditransform_transform(UBiDiTransform *pBiDiTransform,
             const UChar *src, int32_t srcLength,
             UChar *dest, int32_t destSize,
@@ -294,14 +294,14 @@
  * @return An empty <code>UBiDiTransform</code> object.
  * @stable ICU 58
  */
-U_STABLE UBiDiTransform* U_EXPORT2
+U_CAPI UBiDiTransform* U_EXPORT2
 ubiditransform_open(UErrorCode *pErrorCode);
 
 /**
  * Deallocates the given <code>UBiDiTransform</code> object.
  * @stable ICU 58
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubiditransform_close(UBiDiTransform *pBidiTransform);
 
 #if U_SHOW_CPLUSPLUS_API
diff --git a/libicu/cts_headers/unicode/ubrk.h b/libicu/cts_headers/unicode/ubrk.h
index da204eb..37189a8 100644
--- a/libicu/cts_headers/unicode/ubrk.h
+++ b/libicu/cts_headers/unicode/ubrk.h
@@ -241,7 +241,7 @@
  * @see ubrk_openRules
  * @stable ICU 2.0
  */
-U_STABLE UBreakIterator* U_EXPORT2
+U_CAPI UBreakIterator* U_EXPORT2
 ubrk_open(UBreakIteratorType type,
       const char *locale,
       const UChar *text,
@@ -263,7 +263,7 @@
  * @see ubrk_open
  * @stable ICU 2.2
  */
-U_STABLE UBreakIterator* U_EXPORT2
+U_CAPI UBreakIterator* U_EXPORT2
 ubrk_openRules(const UChar     *rules,
                int32_t         rulesLength,
                const UChar     *text,
@@ -291,7 +291,7 @@
  * @see ubrk_getBinaryRules
  * @stable ICU 59
  */
-U_STABLE UBreakIterator* U_EXPORT2
+U_CAPI UBreakIterator* U_EXPORT2
 ubrk_openBinaryRules(const uint8_t *binaryRules, int32_t rulesLength,
                      const UChar *  text, int32_t textLength,
                      UErrorCode *   status);
@@ -314,7 +314,7 @@
  * @return pointer to the new clone
  * @stable ICU 2.0
  */
-U_STABLE UBreakIterator * U_EXPORT2
+U_CAPI UBreakIterator * U_EXPORT2
 ubrk_safeClone(
           const UBreakIterator *bi,
           void *stackBuffer,
@@ -337,7 +337,7 @@
 * @param bi The break iterator to close.
  * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubrk_close(UBreakIterator *bi);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -371,7 +371,7 @@
  * @param status The error code
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubrk_setText(UBreakIterator* bi,
              const UChar*    text,
              int32_t         textLength,
@@ -395,7 +395,7 @@
  * @param status The error code
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubrk_setUText(UBreakIterator* bi,
              UText*          text,
              UErrorCode*     status);
@@ -410,7 +410,7 @@
  * \ref ubrk_first, or \ref ubrk_last.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_current(const UBreakIterator *bi);
 
 /**
@@ -422,7 +422,7 @@
  * @see ubrk_previous
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_next(UBreakIterator *bi);
 
 /**
@@ -434,7 +434,7 @@
  * @see ubrk_next
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_previous(UBreakIterator *bi);
 
 /**
@@ -444,7 +444,7 @@
  * @see ubrk_last
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_first(UBreakIterator *bi);
 
 /**
@@ -456,7 +456,7 @@
  * @see ubrk_first
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_last(UBreakIterator *bi);
 
 /**
@@ -468,7 +468,7 @@
  * @see ubrk_following
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_preceding(UBreakIterator *bi,
            int32_t offset);
 
@@ -481,7 +481,7 @@
  * @see ubrk_preceding
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_following(UBreakIterator *bi,
            int32_t offset);
 
@@ -494,7 +494,7 @@
 * @see ubrk_countAvailable
 * @stable ICU 2.0
 */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 ubrk_getAvailable(int32_t index);
 
 /**
@@ -505,7 +505,7 @@
 * @see ubrk_getAvailable
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_countAvailable(void);
 
 
@@ -518,7 +518,7 @@
 * @return True if "offset" is a boundary position.
 * @stable ICU 2.0
 */
-U_STABLE  UBool U_EXPORT2
+U_CAPI  UBool U_EXPORT2
 ubrk_isBoundary(UBreakIterator *bi, int32_t offset);
 
 /**
@@ -530,7 +530,7 @@
  * For word break iterators, the possible values are defined in enum UWordBreak.
  * @stable ICU 2.2
  */
-U_STABLE  int32_t U_EXPORT2
+U_CAPI  int32_t U_EXPORT2
 ubrk_getRuleStatus(UBreakIterator *bi);
 
 /**
@@ -550,7 +550,7 @@
  *                  the most recent boundary returned by the break iterator.
  * @stable ICU 3.0
  */
-U_STABLE  int32_t U_EXPORT2
+U_CAPI  int32_t U_EXPORT2
 ubrk_getRuleStatusVec(UBreakIterator *bi, int32_t *fillInVec, int32_t capacity, UErrorCode *status);
 
 /**
@@ -562,7 +562,7 @@
  * @return locale string
  * @stable ICU 2.8
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 ubrk_getLocaleByType(const UBreakIterator *bi, ULocDataLocaleType type, UErrorCode* status);
 
 /**
@@ -590,7 +590,7 @@
   *
   * @stable ICU 49
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubrk_refreshUText(UBreakIterator *bi,
                        UText          *text,
                        UErrorCode     *status);
@@ -621,7 +621,7 @@
  * @see ubrk_openBinaryRules
  * @stable ICU 59
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_getBinaryRules(UBreakIterator *bi,
                     uint8_t *       binaryRules, int32_t rulesCapacity,
                     UErrorCode *    status);
diff --git a/libicu/cts_headers/unicode/ucal.h b/libicu/cts_headers/unicode/ucal.h
index 4e6f026..89b1604 100644
--- a/libicu/cts_headers/unicode/ucal.h
+++ b/libicu/cts_headers/unicode/ucal.h
@@ -35,7 +35,7 @@
  *
  * <p>
  * Types of <code>UCalendar</code> interpret a <code>UDate</code>
- * according to the rules of a specific calendar system. The U_STABLE
+ * according to the rules of a specific calendar system. The C API
  * provides the enum UCalendarType with UCAL_TRADITIONAL and
  * UCAL_GREGORIAN.
  * <p>
@@ -587,7 +587,7 @@
  *          *ec will indicate the error.
  * @stable ICU 4.8
  */ 
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucal_openTimeZoneIDEnumeration(USystemTimeZoneType zoneType, const char* region,
                                 const int32_t* rawOffset, UErrorCode* ec);
 
@@ -602,7 +602,7 @@
  *
  * @stable ICU 2.6
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucal_openTimeZones(UErrorCode* ec);
 
 /**
@@ -621,7 +621,7 @@
  *
  * @stable ICU 2.6
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucal_openCountryTimeZones(const char* country, UErrorCode* ec);
 
 /**
@@ -647,7 +647,7 @@
  * 
  * @stable ICU 2.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getDefaultTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec);
 
 /**
@@ -659,11 +659,9 @@
  *
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucal_setDefaultTimeZone(const UChar* zoneID, UErrorCode* ec);
 
-#ifndef U_HIDE_DRAFT_API
-
 /**
  * Return the current host time zone. The host time zone is detected from
  * the current host system configuration by querying the host operating
@@ -691,13 +689,11 @@
  * 
  * @see #UCAL_UNKNOWN_ZONE_ID
  * 
- * @draft ICU 65
+ * @stable ICU 65
  */
-U_DRAFT int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getHostTimeZone(UChar *result, int32_t resultCapacity, UErrorCode *ec);
 
-#endif // U_HIDE_DRAFT_API
-
 /**
  * Return the amount of time in milliseconds that the clock is
  * advanced during daylight savings time for the given time zone, or
@@ -714,7 +710,7 @@
  *
  * @stable ICU 2.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getDSTSavings(const UChar* zoneID, UErrorCode* ec);
 
 /**
@@ -723,7 +719,7 @@
  * @return The current date and time.
  * @stable ICU 2.0
  */
-U_STABLE UDate U_EXPORT2 
+U_CAPI UDate U_EXPORT2 
 ucal_getNow(void);
 
 /**
@@ -749,7 +745,7 @@
  * @see #UCAL_UNKNOWN_ZONE_ID
  * @stable ICU 2.0
  */
-U_STABLE UCalendar* U_EXPORT2 
+U_CAPI UCalendar* U_EXPORT2 
 ucal_open(const UChar*   zoneID,
           int32_t        len,
           const char*    locale,
@@ -762,7 +758,7 @@
  * @param cal The UCalendar to close.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_close(UCalendar *cal);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -792,7 +788,7 @@
  * @return A pointer to a UCalendar identical to cal.
  * @stable ICU 4.0
  */
-U_STABLE UCalendar* U_EXPORT2 
+U_CAPI UCalendar* U_EXPORT2 
 ucal_clone(const UCalendar* cal,
            UErrorCode*      status);
 
@@ -805,7 +801,7 @@
  * @param status A pointer to an UErrorCode to receive any errors.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_setTimeZone(UCalendar*    cal,
                  const UChar*  zoneID,
                  int32_t       len,
@@ -821,7 +817,7 @@
  * @return              The total buffer size needed; if greater than resultLength, the output was truncated. 
  * @stable ICU 51 
  */ 
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_getTimeZoneID(const UCalendar *cal,
                    UChar *result,
                    int32_t resultLength,
@@ -858,7 +854,7 @@
  * @return             The total buffer size needed; if greater than resultLength, the output was truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_getTimeZoneDisplayName(const UCalendar*          cal,
                             UCalendarDisplayNameType  type,
                             const char*               locale,
@@ -871,10 +867,10 @@
  * Daylight savings time is not used in all parts of the world.
  * @param cal The UCalendar to query.
  * @param status A pointer to an UErrorCode to receive any errors
- * @return TRUE if cal is currently in daylight savings time, FALSE otherwise
+ * @return true if cal is currently in daylight savings time, false otherwise
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucal_inDaylightTime(const UCalendar*  cal,
                     UErrorCode*       status );
 
@@ -898,7 +894,7 @@
  * @see ucal_getGregorianChange
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucal_setGregorianChange(UCalendar *cal, UDate date, UErrorCode *pErrorCode);
 
 /**
@@ -921,7 +917,7 @@
  * @see ucal_setGregorianChange
  * @stable ICU 3.6
  */
-U_STABLE UDate U_EXPORT2
+U_CAPI UDate U_EXPORT2
 ucal_getGregorianChange(const UCalendar *cal, UErrorCode *pErrorCode);
 
 /**
@@ -1002,7 +998,7 @@
  * @see ucal_setAttribute
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_getAttribute(const UCalendar*    cal,
                   UCalendarAttribute  attr);
 
@@ -1017,7 +1013,7 @@
  * @see ucal_getAttribute
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_setAttribute(UCalendar*          cal,
                   UCalendarAttribute  attr,
                   int32_t             newValue);
@@ -1031,7 +1027,7 @@
  * @see ucal_countAvailable
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2 
+U_CAPI const char* U_EXPORT2 
 ucal_getAvailable(int32_t localeIndex);
 
 /**
@@ -1042,7 +1038,7 @@
  * @see ucal_getAvailable
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_countAvailable(void);
 
 /**
@@ -1056,7 +1052,7 @@
  * @see ucal_setDateTime
  * @stable ICU 2.0
  */
-U_STABLE UDate U_EXPORT2 
+U_CAPI UDate U_EXPORT2 
 ucal_getMillis(const UCalendar*  cal,
                UErrorCode*       status);
 
@@ -1071,7 +1067,7 @@
  * @see ucal_setDateTime
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_setMillis(UCalendar*   cal,
                UDate        dateTime,
                UErrorCode*  status );
@@ -1090,7 +1086,7 @@
  * @see ucal_setDateTime
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_setDate(UCalendar*   cal,
              int32_t      year,
              int32_t      month,
@@ -1114,7 +1110,7 @@
  * @see ucal_setDate
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_setDateTime(UCalendar*   cal,
                  int32_t      year,
                  int32_t      month,
@@ -1125,15 +1121,15 @@
                  UErrorCode*  status);
 
 /**
- * Returns TRUE if two UCalendars are equivalent.  Equivalent
+ * Returns true if two UCalendars are equivalent.  Equivalent
  * UCalendars will behave identically, but they may be set to
  * different times.
  * @param cal1 The first of the UCalendars to compare.
  * @param cal2 The second of the UCalendars to compare.
- * @return TRUE if cal1 and cal2 are equivalent, FALSE otherwise.
+ * @return true if cal1 and cal2 are equivalent, false otherwise.
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucal_equivalentTo(const UCalendar*  cal1,
                   const UCalendar*  cal2);
 
@@ -1155,7 +1151,7 @@
  * @see ucal_roll
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_add(UCalendar*           cal,
          UCalendarDateFields  field,
          int32_t              amount,
@@ -1185,7 +1181,7 @@
  * @see ucal_add
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_roll(UCalendar*           cal,
           UCalendarDateFields  field,
           int32_t              amount,
@@ -1207,7 +1203,7 @@
  * @see ucal_clear
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_get(const UCalendar*     cal,
          UCalendarDateFields  field,
          UErrorCode*          status );
@@ -1227,7 +1223,7 @@
  * @see ucal_clear
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_set(UCalendar*           cal,
          UCalendarDateFields  field,
          int32_t              value);
@@ -1240,14 +1236,14 @@
  * UCAL_WEEK_OF_YEAR, UCAL_WEEK_OF_MONTH, UCAL_DATE, UCAL_DAY_OF_YEAR, UCAL_DAY_OF_WEEK,
  * UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_AM_PM, UCAL_HOUR, UCAL_HOUR_OF_DAY, UCAL_MINUTE, UCAL_SECOND,
  * UCAL_MILLISECOND, UCAL_ZONE_OFFSET, UCAL_DST_OFFSET.
- * @return TRUE if field is set, FALSE otherwise.
+ * @return true if field is set, false otherwise.
  * @see ucal_get
  * @see ucal_set
  * @see ucal_clearField
  * @see ucal_clear
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucal_isSet(const UCalendar*     cal,
            UCalendarDateFields  field);
 
@@ -1265,7 +1261,7 @@
  * @see ucal_clear
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_clearField(UCalendar*           cal,
                 UCalendarDateFields  field);
 
@@ -1279,7 +1275,7 @@
  * @see ucal_clearField
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucal_clear(UCalendar* calendar);
 
 /**
@@ -1318,7 +1314,7 @@
  * @return The requested value.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_getLimit(const UCalendar*     cal,
               UCalendarDateFields  field,
               UCalendarLimitType   type,
@@ -1331,7 +1327,7 @@
  *  @return the locale name
  *  @stable ICU 2.8
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucal_getLocaleByType(const UCalendar *cal, ULocDataLocaleType type, UErrorCode* status);
 
 /**
@@ -1340,7 +1336,7 @@
  * @return the version string, such as "2007f"
  * @stable ICU 3.8
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucal_getTZDataVersion(UErrorCode* status);
 
 /**
@@ -1361,7 +1357,7 @@
  *                  null.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getCanonicalTimeZoneID(const UChar* id, int32_t len,
                             UChar* result, int32_t resultCapacity, UBool *isSystemID, UErrorCode* status);
 /**
@@ -1371,7 +1367,7 @@
  * @return The resource keyword value string.
  * @stable ICU 4.2
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucal_getType(const UCalendar *cal, UErrorCode* status);
 
 /**
@@ -1390,7 +1386,7 @@
  * @return a string enumeration over keyword values for the given key and the locale.
  * @stable ICU 4.2
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucal_getKeywordValuesForLocale(const char* key,
                                const char* locale,
                                UBool commonlyUsed,
@@ -1445,7 +1441,7 @@
  * @return The UCalendarWeekdayType for the day of the week.
  * @stable ICU 4.4
  */
-U_STABLE UCalendarWeekdayType U_EXPORT2
+U_CAPI UCalendarWeekdayType U_EXPORT2
 ucal_getDayOfWeekType(const UCalendar *cal, UCalendarDaysOfWeek dayOfWeek, UErrorCode* status);
 
 /**
@@ -1463,20 +1459,20 @@
  * @return The milliseconds after midnight at which the weekend begins or ends.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getWeekendTransition(const UCalendar *cal, UCalendarDaysOfWeek dayOfWeek, UErrorCode *status);
 
 /**
- * Returns TRUE if the given UDate is in the weekend in
+ * Returns true if the given UDate is in the weekend in
  * this calendar system.
  * @param cal The UCalendar to query.
  * @param date The UDate in question.
  * @param status The error code for the operation.
- * @return TRUE if the given UDate is in the weekend in
- * this calendar system, FALSE otherwise.
+ * @return true if the given UDate is in the weekend in
+ * this calendar system, false otherwise.
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucal_isWeekend(const UCalendar *cal, UDate date, UErrorCode *status);
 
 /**
@@ -1503,7 +1499,7 @@
  * @return The date difference for the specified field.
  * @stable ICU 4.8
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucal_getFieldDifference(UCalendar* cal,
                         UDate target,
                         UCalendarDateFields field,
@@ -1547,17 +1543,17 @@
 * the calendar's current date, in the time zone to which the calendar
 * is currently set. If there is no known time zone transition of the
 * requested type relative to the calendar's date, the function returns
-* FALSE.
+* false.
 * @param cal The UCalendar to query.
 * @param type The type of transition desired.
 * @param transition A pointer to a UDate to be set to the transition time.
-*         If the function returns FALSE, the value set is unspecified.
+*         If the function returns false, the value set is unspecified.
 * @param status A pointer to a UErrorCode to receive any errors.
-* @return TRUE if a valid transition time is set in *transition, FALSE
+* @return true if a valid transition time is set in *transition, false
 *         otherwise.
 * @stable ICU 50
 */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucal_getTimeZoneTransitionDate(const UCalendar* cal, UTimeZoneTransitionType type,
                                UDate* transition, UErrorCode* status);
 
@@ -1572,7 +1568,7 @@
 *
 * <p>This implementation utilizes <a href="http://unicode.org/cldr/charts/supplemental/zone_tzid.html">
 * Zone-Tzid mapping data</a>. The mapping data is updated time to time. To get the latest changes,
-* please read the ICU user guide section <a href="http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data">
+* please read the ICU user guide section <a href="https://unicode-org.github.io/icu/userguide/datetime/timezone#updating-the-time-zone-data">
 * Updating the Time Zone Data</a>.
 *
 * @param id            A system time zone ID.
@@ -1585,7 +1581,7 @@
 *
 * @stable ICU 52
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getWindowsTimeZoneID(const UChar* id, int32_t len,
                             UChar* winid, int32_t winidCapacity, UErrorCode* status);
 
@@ -1603,7 +1599,7 @@
 *
 * <p>This implementation utilizes <a href="http://unicode.org/cldr/charts/supplemental/zone_tzid.html">
 * Zone-Tzid mapping data</a>. The mapping data is updated time to time. To get the latest changes,
-* please read the ICU user guide section <a href="http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data">
+* please read the ICU user guide section <a href="https://unicode-org.github.io/icu/userguide/datetime/timezone#updating-the-time-zone-data">
 * Updating the Time Zone Data</a>.
 *
 * @param winid         A Windows time zone ID.
@@ -1617,7 +1613,7 @@
 *
 * @stable ICU 52
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucal_getTimeZoneIDForWindowsID(const UChar* winid, int32_t len, const char* region,
                                 UChar* id, int32_t idCapacity, UErrorCode* status);
 
diff --git a/libicu/cts_headers/unicode/ucasemap.h b/libicu/cts_headers/unicode/ucasemap.h
index 06c09a6..d1c1b48 100644
--- a/libicu/cts_headers/unicode/ucasemap.h
+++ b/libicu/cts_headers/unicode/ucasemap.h
@@ -72,7 +72,7 @@
  * @see U_TITLECASE_NO_BREAK_ADJUSTMENT
  * @stable ICU 3.4
  */
-U_STABLE UCaseMap * U_EXPORT2
+U_CAPI UCaseMap * U_EXPORT2
 ucasemap_open(const char *locale, uint32_t options, UErrorCode *pErrorCode);
 
 /**
@@ -80,7 +80,7 @@
  * @param csm Object to be closed.
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucasemap_close(UCaseMap *csm);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -108,7 +108,7 @@
  * @return locale ID
  * @stable ICU 3.4
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucasemap_getLocale(const UCaseMap *csm);
 
 /**
@@ -117,7 +117,7 @@
  * @return options bit set
  * @stable ICU 3.4
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 ucasemap_getOptions(const UCaseMap *csm);
 
 /**
@@ -131,7 +131,7 @@
  * @see ucasemap_open
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucasemap_setLocale(UCaseMap *csm, const char *locale, UErrorCode *pErrorCode);
 
 /**
@@ -145,7 +145,7 @@
  * @see ucasemap_open
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucasemap_setOptions(UCaseMap *csm, uint32_t options, UErrorCode *pErrorCode);
 
 #if !UCONFIG_NO_BREAK_ITERATION
@@ -157,7 +157,7 @@
  * @return titlecasing break iterator
  * @stable ICU 3.8
  */
-U_STABLE const UBreakIterator * U_EXPORT2
+U_CAPI const UBreakIterator * U_EXPORT2
 ucasemap_getBreakIterator(const UCaseMap *csm);
 
 /**
@@ -180,7 +180,7 @@
  * @see ucasemap_utf8ToTitle
  * @stable ICU 3.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucasemap_setBreakIterator(UCaseMap *csm, UBreakIterator *iterToAdopt, UErrorCode *pErrorCode);
 
 /**
@@ -229,7 +229,7 @@
  * @see u_strToTitle
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucasemap_toTitle(UCaseMap *csm,
                  UChar *dest, int32_t destCapacity,
                  const UChar *src, int32_t srcLength,
@@ -260,7 +260,7 @@
  * @see u_strToLower
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucasemap_utf8ToLower(const UCaseMap *csm,
                      char *dest, int32_t destCapacity,
                      const char *src, int32_t srcLength,
@@ -289,7 +289,7 @@
  * @see u_strToUpper
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucasemap_utf8ToUpper(const UCaseMap *csm,
                      char *dest, int32_t destCapacity,
                      const char *src, int32_t srcLength,
@@ -341,7 +341,7 @@
  * @see U_TITLECASE_NO_BREAK_ADJUSTMENT
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucasemap_utf8ToTitle(UCaseMap *csm,
                     char *dest, int32_t destCapacity,
                     const char *src, int32_t srcLength,
@@ -379,7 +379,7 @@
  * @see U_FOLD_CASE_EXCLUDE_SPECIAL_I
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucasemap_utf8FoldCase(const UCaseMap *csm,
                       char *dest, int32_t destCapacity,
                       const char *src, int32_t srcLength,
diff --git a/libicu/cts_headers/unicode/ucat.h b/libicu/cts_headers/unicode/ucat.h
index 4d1ff3f..9385034 100644
--- a/libicu/cts_headers/unicode/ucat.h
+++ b/libicu/cts_headers/unicode/ucat.h
@@ -103,7 +103,7 @@
  * 
  * @stable ICU 2.6
  */
-U_STABLE u_nl_catd U_EXPORT2
+U_CAPI u_nl_catd U_EXPORT2
 u_catopen(const char* name, const char* locale, UErrorCode* ec);
 
 /**
@@ -114,7 +114,7 @@
  * 
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_catclose(u_nl_catd catd);
 
 /**
@@ -149,7 +149,7 @@
  * 
  * @stable ICU 2.6
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 u_catgets(u_nl_catd catd, int32_t set_num, int32_t msg_num,
           const UChar* s,
           int32_t* len, UErrorCode* ec);
diff --git a/libicu/cts_headers/unicode/uchar.h b/libicu/cts_headers/unicode/uchar.h
index 3b55b23..1e0f82e 100644
--- a/libicu/cts_headers/unicode/uchar.h
+++ b/libicu/cts_headers/unicode/uchar.h
@@ -80,7 +80,7 @@
  * and the ICU User Guide chapter on Properties (http://icu-project.org/userguide/properties.html).
  *
  * Many properties are accessible via generic functions that take a UProperty selector.
- * - u_hasBinaryProperty() returns a binary value (TRUE/FALSE) per property and code point.
+ * - u_hasBinaryProperty() returns a binary value (true/false) per property and code point.
  * - u_getIntPropertyValue() returns an integer value per property and code point.
  *   For each supported enumerated or catalog property, there is
  *   an enum type for all of the property's values, and
@@ -2586,8 +2586,8 @@
  * @param c Code point to test.
  * @param which UProperty selector constant, identifies which binary property to check.
  *        Must be UCHAR_BINARY_START<=which<UCHAR_BINARY_LIMIT.
- * @return TRUE or FALSE according to the binary Unicode property value for c.
- *         Also FALSE if 'which' is out of bounds or if the Unicode version
+ * @return true or false according to the binary Unicode property value for c.
+ *         Also false if 'which' is out of bounds or if the Unicode version
  *         does not have data for the property at all, or not for this code point.
  *
  * @see UProperty
@@ -2596,7 +2596,7 @@
  * @see u_getUnicodeVersion
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_hasBinaryProperty(UChar32 c, UProperty which);
 
 /**
@@ -2629,7 +2629,7 @@
  * @see u_hasBinaryProperty
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isUAlphabetic(UChar32 c);
 
 /**
@@ -2644,7 +2644,7 @@
  * @see u_hasBinaryProperty
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isULowercase(UChar32 c);
 
 /**
@@ -2659,7 +2659,7 @@
  * @see u_hasBinaryProperty
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isUUppercase(UChar32 c);
 
 /**
@@ -2680,7 +2680,7 @@
  * @see u_hasBinaryProperty
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isUWhiteSpace(UChar32 c);
 
 /**
@@ -2708,7 +2708,7 @@
  *         for enumerated properties, corresponds to the numeric value of the enumerated
  *         constant of the respective property value enumeration type
  *         (cast to enum type if necessary).
- *         Returns 0 or 1 (for FALSE/TRUE) for binary Unicode properties.
+ *         Returns 0 or 1 (for false/true) for binary Unicode properties.
  *         Returns a bit-mask for mask properties.
  *         Returns 0 if 'which' is out of bounds or if the Unicode version
  *         does not have data for the property at all, or not for this code point.
@@ -2721,7 +2721,7 @@
  * @see u_getUnicodeVersion
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getIntPropertyValue(UChar32 c, UProperty which);
 
 /**
@@ -2742,7 +2742,7 @@
  * @see u_getIntPropertyValue
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getIntPropertyMinValue(UProperty which);
 
 /**
@@ -2754,7 +2754,7 @@
  *
  * - UCHAR_BIDI_CLASS:    0/18 (U_LEFT_TO_RIGHT/U_BOUNDARY_NEUTRAL)
  * - UCHAR_SCRIPT:        0/45 (USCRIPT_COMMON/USCRIPT_TAGBANWA)
- * - UCHAR_IDEOGRAPHIC:   0/1  (FALSE/TRUE)
+ * - UCHAR_IDEOGRAPHIC:   0/1  (false/true)
  *
  * For undefined UProperty constant values, min/max values will be 0/-1.
  *
@@ -2771,7 +2771,7 @@
  * @see u_getIntPropertyValue
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getIntPropertyMaxValue(UProperty which);
 
 /**
@@ -2814,7 +2814,7 @@
  * @see U_NO_NUMERIC_VALUE
  * @stable ICU 2.2
  */
-U_STABLE double U_EXPORT2
+U_CAPI double U_EXPORT2
 u_getNumericValue(UChar32 c);
 
 /**
@@ -2842,14 +2842,14 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an Ll lowercase letter
+ * @return true if the code point is an Ll lowercase letter
  *
  * @see UCHAR_LOWERCASE
  * @see u_isupper
  * @see u_istitle
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_islower(UChar32 c);
 
 /**
@@ -2868,7 +2868,7 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an Lu uppercase letter
+ * @return true if the code point is an Lu uppercase letter
  *
  * @see UCHAR_UPPERCASE
  * @see u_islower
@@ -2876,7 +2876,7 @@
  * @see u_tolower
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isupper(UChar32 c);
 
 /**
@@ -2886,14 +2886,14 @@
  * Same as java.lang.Character.isTitleCase().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an Lt titlecase letter
+ * @return true if the code point is an Lt titlecase letter
  *
  * @see u_isupper
  * @see u_islower
  * @see u_totitle
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_istitle(UChar32 c);
 
 /**
@@ -2910,11 +2910,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a digit character according to Character.isDigit()
+ * @return true if the code point is a digit character according to Character.isDigit()
  *
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isdigit(UChar32 c);
 
 /**
@@ -2929,13 +2929,13 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a letter character
+ * @return true if the code point is a letter character
  *
  * @see u_isdigit
  * @see u_isalnum
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isalpha(UChar32 c);
 
 /**
@@ -2952,11 +2952,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an alphanumeric character according to Character.isLetterOrDigit()
+ * @return true if the code point is an alphanumeric character according to Character.isLetterOrDigit()
  *
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isalnum(UChar32 c);
 
 /**
@@ -2975,11 +2975,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a hexadecimal digit
+ * @return true if the code point is a hexadecimal digit
  *
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isxdigit(UChar32 c);
 
 /**
@@ -2991,17 +2991,17 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a punctuation character
+ * @return true if the code point is a punctuation character
  *
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_ispunct(UChar32 c);
 
 /**
  * Determines whether the specified code point is a "graphic" character
  * (printable, excluding spaces).
- * TRUE for all characters except those with general categories
+ * true for all characters except those with general categories
  * "Cc" (control codes), "Cf" (format controls), "Cs" (surrogates),
  * "Cn" (unassigned), and "Z" (separators).
  *
@@ -3010,11 +3010,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a "graphic" character
+ * @return true if the code point is a "graphic" character
  *
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isgraph(UChar32 c);
 
 /**
@@ -3022,13 +3022,13 @@
  * a character that visibly separates words on a line.
  * The following are equivalent definitions:
  *
- * TRUE for Unicode White_Space characters except for "vertical space controls"
+ * true for Unicode White_Space characters except for "vertical space controls"
  * where "vertical space controls" are the following characters:
  * U+000A (LF) U+000B (VT) U+000C (FF) U+000D (CR) U+0085 (NEL) U+2028 (LS) U+2029 (PS)
  *
  * same as
  *
- * TRUE for U+0009 (TAB) and characters with general category "Zs" (space separators).
+ * true for U+0009 (TAB) and characters with general category "Zs" (space separators).
  *
  * Note: There are several ICU whitespace functions; please see the uchar.h
  * file documentation for a detailed comparison.
@@ -3038,11 +3038,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a "blank"
+ * @return true if the code point is a "blank"
  *
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isblank(UChar32 c);
 
 /**
@@ -3057,7 +3057,7 @@
  * Same as java.lang.Character.isDefined().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is assigned a character
+ * @return true if the code point is assigned a character
  *
  * @see u_isdigit
  * @see u_isalpha
@@ -3067,7 +3067,7 @@
  * @see u_istitle
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isdefined(UChar32 c);
 
 /**
@@ -3088,7 +3088,7 @@
  * @see u_isUWhiteSpace
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isspace(UChar32 c);
 
 /**
@@ -3102,14 +3102,14 @@
  * file documentation for a detailed comparison.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a space character according to Character.isSpaceChar()
+ * @return true if the code point is a space character according to Character.isSpaceChar()
  *
  * @see u_isspace
  * @see u_isWhitespace
  * @see u_isUWhiteSpace
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isJavaSpaceChar(UChar32 c);
 
 /**
@@ -3142,14 +3142,14 @@
  * file documentation for a detailed comparison.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a whitespace character according to Java/ICU
+ * @return true if the code point is a whitespace character according to Java/ICU
  *
  * @see u_isspace
  * @see u_isJavaSpaceChar
  * @see u_isUWhiteSpace
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isWhitespace(UChar32 c);
 
 /**
@@ -3167,13 +3167,13 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a control character
+ * @return true if the code point is a control character
  *
  * @see UCHAR_DEFAULT_IGNORABLE_CODE_POINT
  * @see u_isprint
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_iscntrl(UChar32 c);
 
 /**
@@ -3183,12 +3183,12 @@
  * Same as java.lang.Character.isISOControl().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an ISO control code
+ * @return true if the code point is an ISO control code
  *
  * @see u_iscntrl
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isISOControl(UChar32 c);
 
 /**
@@ -3200,13 +3200,13 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a printable character
+ * @return true if the code point is a printable character
  *
  * @see UCHAR_DEFAULT_IGNORABLE_CODE_POINT
  * @see u_iscntrl
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isprint(UChar32 c);
 
 /**
@@ -3220,13 +3220,13 @@
  * Letter (L), Number (N), Punctuation (P), Symbol (S), or Space Separator (Zs).
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a base character according to this function
+ * @return true if the code point is a base character according to this function
  *
  * @see u_isalpha
  * @see u_isdigit
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isbase(UChar32 c);
 
 /**
@@ -3245,7 +3245,7 @@
  * @see UCharDirection
  * @stable ICU 2.0
  */
-U_STABLE UCharDirection U_EXPORT2
+U_CAPI UCharDirection U_EXPORT2
 u_charDirection(UChar32 c);
 
 /**
@@ -3258,12 +3258,12 @@
  * Same as UCHAR_BIDI_MIRRORED
  *
  * @param c the code point to be tested
- * @return TRUE if the character has the Bidi_Mirrored property
+ * @return true if the character has the Bidi_Mirrored property
  *
  * @see UCHAR_BIDI_MIRRORED
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isMirrored(UChar32 c);
 
 /**
@@ -3285,7 +3285,7 @@
  * @see u_isMirrored
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_charMirror(UChar32 c);
 
 /**
@@ -3304,7 +3304,7 @@
  * @see u_charMirror
  * @stable ICU 52
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_getBidiPairedBracket(UChar32 c);
 
 /**
@@ -3318,7 +3318,7 @@
  * @see UCharCategory
  * @stable ICU 2.0
  */
-U_STABLE int8_t U_EXPORT2
+U_CAPI int8_t U_EXPORT2
 u_charType(UChar32 c);
 
 /**
@@ -3341,13 +3341,13 @@
  * of code points c (where start<=c<limit)
  * with the same Unicode general category ("character type").
  *
- * The callback function can stop the enumeration by returning FALSE.
+ * The callback function can stop the enumeration by returning false.
  *
  * @param context an opaque pointer, as passed into utrie_enum()
  * @param start the first code point in a contiguous range with value
  * @param limit one past the last code point in a contiguous range with value
  * @param type the general category for all code points in [start..limit[
- * @return FALSE to stop the enumeration
+ * @return false to stop the enumeration
  *
  * @stable ICU 2.1
  * @see UCharCategory
@@ -3375,7 +3375,7 @@
  * @see UCharCategory
  * @see UCharEnumTypeRange
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_enumCharTypes(UCharEnumTypeRange *enumRange, const void *context);
 
 #if !UCONFIG_NO_NORMALIZATION
@@ -3387,7 +3387,7 @@
  * @return the combining class of the character
  * @stable ICU 2.0
  */
-U_STABLE uint8_t U_EXPORT2
+U_CAPI uint8_t U_EXPORT2
 u_getCombiningClass(UChar32 c);
 
 #endif
@@ -3415,7 +3415,7 @@
  * @see u_getNumericValue
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_charDigitValue(UChar32 c);
 
 /**
@@ -3427,7 +3427,7 @@
  * @see UBlockCode
  * @stable ICU 2.0
  */
-U_STABLE UBlockCode U_EXPORT2
+U_CAPI UBlockCode U_EXPORT2
 ublock_getCode(UChar32 c);
 
 /**
@@ -3462,7 +3462,7 @@
  * @see u_enumCharNames
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_charName(UChar32 code, UCharNameChoice nameChoice,
            char *buffer, int32_t bufferLength,
            UErrorCode *pErrorCode);
@@ -3512,7 +3512,7 @@
  * @see u_enumCharNames
  * @stable ICU 1.7
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_charFromName(UCharNameChoice nameChoice,
                const char *name,
                UErrorCode *pErrorCode);
@@ -3521,14 +3521,14 @@
  * Type of a callback function for u_enumCharNames() that gets called
  * for each Unicode character with the code point value and
  * the character name.
- * If such a function returns FALSE, then the enumeration is stopped.
+ * If such a function returns false, then the enumeration is stopped.
  *
  * @param context The context pointer that was passed to u_enumCharNames().
  * @param code The Unicode code point for the character with this name.
  * @param nameChoice Selector for which kind of names is enumerated.
  * @param name The character's name, zero-terminated.
  * @param length The length of the name.
- * @return TRUE if the enumeration should continue, FALSE to stop it.
+ * @return true if the enumeration should continue, false to stop it.
  *
  * @see UCharNameChoice
  * @see u_enumCharNames
@@ -3561,7 +3561,7 @@
  * @see u_charFromName
  * @stable ICU 1.7
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_enumCharNames(UChar32 start, UChar32 limit,
                 UEnumCharNamesFn *fn,
                 void *context,
@@ -3599,7 +3599,7 @@
  * @see UPropertyNameChoice
  * @stable ICU 2.4
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 u_getPropertyName(UProperty property,
                   UPropertyNameChoice nameChoice);
 
@@ -3622,7 +3622,7 @@
  * @see UProperty
  * @stable ICU 2.4
  */
-U_STABLE UProperty U_EXPORT2
+U_CAPI UProperty U_EXPORT2
 u_getPropertyEnum(const char* alias);
 
 /**
@@ -3672,7 +3672,7 @@
  * @see UPropertyNameChoice
  * @stable ICU 2.4
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 u_getPropertyValueName(UProperty property,
                        int32_t value,
                        UPropertyNameChoice nameChoice);
@@ -3708,7 +3708,7 @@
  * @see UProperty
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getPropertyValueEnum(UProperty property,
                        const char* alias);
 
@@ -3722,14 +3722,14 @@
  * Same as UCHAR_ID_START
  *
  * @param c the code point to be tested
- * @return TRUE if the code point may start an identifier
+ * @return true if the code point may start an identifier
  *
  * @see UCHAR_ID_START
  * @see u_isalpha
  * @see u_isIDPart
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isIDStart(UChar32 c);
 
 /**
@@ -3746,14 +3746,14 @@
  * u_isIDIgnorable(c).
  *
  * @param c the code point to be tested
- * @return TRUE if the code point may occur in an identifier according to Java
+ * @return true if the code point may occur in an identifier according to Java
  *
  * @see UCHAR_ID_CONTINUE
  * @see u_isIDStart
  * @see u_isIDIgnorable
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isIDPart(UChar32 c);
 
 /**
@@ -3769,14 +3769,14 @@
  * Note that Unicode just recommends to ignore Cf (format controls).
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is ignorable in identifiers according to Java
+ * @return true if the code point is ignorable in identifiers according to Java
  *
  * @see UCHAR_DEFAULT_IGNORABLE_CODE_POINT
  * @see u_isIDStart
  * @see u_isIDPart
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isIDIgnorable(UChar32 c);
 
 /**
@@ -3788,14 +3788,14 @@
  * Same as java.lang.Character.isJavaIdentifierStart().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point may start a Java identifier
+ * @return true if the code point may start a Java identifier
  *
  * @see     u_isJavaIDPart
  * @see     u_isalpha
  * @see     u_isIDStart
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isJavaIDStart(UChar32 c);
 
 /**
@@ -3807,7 +3807,7 @@
  * Same as java.lang.Character.isJavaIdentifierPart().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point may occur in a Java identifier
+ * @return true if the code point may occur in a Java identifier
  *
  * @see     u_isIDIgnorable
  * @see     u_isJavaIDStart
@@ -3816,7 +3816,7 @@
  * @see     u_isIDPart
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isJavaIDPart(UChar32 c);
 
 /**
@@ -3841,7 +3841,7 @@
  *         otherwise the code point itself.
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_tolower(UChar32 c);
 
 /**
@@ -3866,7 +3866,7 @@
  *         otherwise the code point itself.
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_toupper(UChar32 c);
 
 /**
@@ -3891,7 +3891,7 @@
  *         otherwise the code point itself.
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_totitle(UChar32 c);
 
 /**
@@ -3916,7 +3916,7 @@
  *         otherwise the code point itself.
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_foldCase(UChar32 c, uint32_t options);
 
 /**
@@ -3957,7 +3957,7 @@
  * @see     u_isdigit
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_digit(UChar32 ch, int8_t radix);
 
 /**
@@ -3988,7 +3988,7 @@
  * @see     u_isdigit
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_forDigit(int32_t digit, int8_t radix);
 
 /**
@@ -4005,7 +4005,7 @@
  *
  * @stable ICU 2.1
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_charAge(UChar32 c, UVersionInfo versionArray);
 
 /**
@@ -4019,7 +4019,7 @@
  *                     the Unicode version number
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_getUnicodeVersion(UVersionInfo versionArray);
 
 #if !UCONFIG_NO_NORMALIZATION
@@ -4044,7 +4044,7 @@
  *
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getFC_NFKC_Closure(UChar32 c, UChar *dest, int32_t destCapacity, UErrorCode *pErrorCode);
 
 #endif
diff --git a/libicu/cts_headers/unicode/ucharstrie.h b/libicu/cts_headers/unicode/ucharstrie.h
index d5729d9..b6f9e3e 100644
--- a/libicu/cts_headers/unicode/ucharstrie.h
+++ b/libicu/cts_headers/unicode/ucharstrie.h
@@ -97,14 +97,13 @@
         return *this;
     }
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns the state of this trie as a 64-bit integer.
      * The state value is never 0.
      *
      * @return opaque state value
      * @see resetToState64
-     * @draft ICU 65
+     * @stable ICU 65
      */
     uint64_t getState64() const {
         return (static_cast<uint64_t>(remainingMatchLength_ + 2) << kState64RemainingShift) |
@@ -123,14 +122,13 @@
      * @see getState64
      * @see resetToState
      * @see reset
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UCharsTrie &resetToState64(uint64_t state) {
         remainingMatchLength_ = static_cast<int32_t>(state >> kState64RemainingShift) - 2;
         pos_ = uchars_ + (state & kState64PosMask);
         return *this;
     }
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * UCharsTrie state object, for saving a trie's current state
@@ -268,16 +266,16 @@
     /**
      * Determines whether all strings reachable from the current state
      * map to the same value.
-     * @param uniqueValue Receives the unique value, if this function returns TRUE.
+     * @param uniqueValue Receives the unique value, if this function returns true.
      *                    (output-only)
-     * @return TRUE if all strings reachable from the current state
+     * @return true if all strings reachable from the current state
      *         map to the same value.
      * @stable ICU 4.8
      */
     inline UBool hasUniqueValue(int32_t &uniqueValue) const {
         const char16_t *pos=pos_;
         // Skip the rest of a pending linear-match node.
-        return pos!=NULL && findUniqueValue(pos+remainingMatchLength_+1, FALSE, uniqueValue);
+        return pos!=NULL && findUniqueValue(pos+remainingMatchLength_+1, false, uniqueValue);
     }
 
     /**
@@ -335,7 +333,7 @@
         Iterator &reset();
 
         /**
-         * @return TRUE if there are more elements.
+         * @return true if there are more elements.
          * @stable ICU 4.8
          */
         UBool hasNext() const;
@@ -351,7 +349,7 @@
          *                  pass the U_SUCCESS() test, or else the function returns
          *                  immediately. Check for U_FAILURE() on output or use with
          *                  function chaining. (See User Guide for details.)
-         * @return TRUE if there is another element.
+         * @return true if there is another element.
          * @stable ICU 4.8
          */
         UBool next(UErrorCode &errorCode);
@@ -371,7 +369,7 @@
         UBool truncateAndStop() {
             pos_=NULL;
             value_=-1;  // no real value for str
-            return TRUE;
+            return true;
         }
 
         const char16_t *branchNext(const char16_t *pos, int32_t length, UErrorCode &errorCode);
diff --git a/libicu/cts_headers/unicode/ucharstriebuilder.h b/libicu/cts_headers/unicode/ucharstriebuilder.h
index 540dcc0..1565770 100644
--- a/libicu/cts_headers/unicode/ucharstriebuilder.h
+++ b/libicu/cts_headers/unicode/ucharstriebuilder.h
@@ -101,9 +101,10 @@
      * Multiple calls to buildUnicodeString() set the UnicodeStrings to the
      * builder's same char16_t array, without rebuilding.
      * If buildUnicodeString() is called after build(), the trie will be
-     * re-serialized into a new array.
-     * If build() is called after buildUnicodeString(), the trie object will become
-     * the owner of the previously returned array.
+     * re-serialized into a new array (because build() passes on ownership).
+     * If build() is called after buildUnicodeString(), the trie object returned
+     * by build() will become the owner of the underlying data for the
+     * previously returned UnicodeString.
      * After clear() has been called, a new array will be used as well.
      * @param buildOption Build option, see UStringTrieBuildOption.
      * @param result A UnicodeString which will be set to the char16_t-serialized
@@ -147,7 +148,7 @@
     virtual int32_t skipElementsBySomeUnits(int32_t i, int32_t unitIndex, int32_t count) const;
     virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t unitIndex, char16_t unit) const;
 
-    virtual UBool matchNodesCanHaveValues() const { return TRUE; }
+    virtual UBool matchNodesCanHaveValues() const { return true; }
 
     virtual int32_t getMaxBranchLinearSubNodeLength() const { return UCharsTrie::kMaxBranchLinearSubNodeLength; }
     virtual int32_t getMinLinearMatch() const { return UCharsTrie::kMinLinearMatch; }
diff --git a/libicu/cts_headers/unicode/uchriter.h b/libicu/cts_headers/unicode/uchriter.h
index a485259..f508356 100644
--- a/libicu/cts_headers/unicode/uchriter.h
+++ b/libicu/cts_headers/unicode/uchriter.h
@@ -274,11 +274,11 @@
   virtual UChar32       next32PostInc(void);
 
   /**
-   * Returns FALSE if there are no more code units or code points
+   * Returns false if there are no more code units or code points
    * at or after the current position in the iteration range.
    * This is used with nextPostInc() or next32PostInc() in forward
    * iteration.
-   * @return FALSE if there are no more code units or code points
+   * @return false if there are no more code units or code points
    * at or after the current position in the iteration range.
    * @stable ICU 2.0
    */
@@ -303,11 +303,11 @@
   virtual UChar32       previous32(void);
 
   /**
-   * Returns FALSE if there are no more code units or code points
+   * Returns false if there are no more code units or code points
    * before the current position in the iteration range.
    * This is used with previous() or previous32() in backward
    * iteration.
-   * @return FALSE if there are no more code units or code points
+   * @return false if there are no more code units or code points
    * before the current position in the iteration range.
    * @stable ICU 2.0
    */
diff --git a/libicu/cts_headers/unicode/uclean.h b/libicu/cts_headers/unicode/uclean.h
index 7cef6db..c2d920a 100644
--- a/libicu/cts_headers/unicode/uclean.h
+++ b/libicu/cts_headers/unicode/uclean.h
@@ -49,7 +49,7 @@
  *
  * @stable ICU 2.6
  */  
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_init(UErrorCode *status);
 
 #ifndef U_HIDE_SYSTEM_API
@@ -98,7 +98,7 @@
  * @stable ICU 2.0
  * @system
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_cleanup(void);
 
 U_CDECL_BEGIN
@@ -148,7 +148,7 @@
  *  @stable ICU 2.8
  *  @system
  */  
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_setMemoryFunctions(const void *context, UMemAllocFn * U_CALLCONV_FPTR a, UMemReallocFn * U_CALLCONV_FPTR r, UMemFreeFn * U_CALLCONV_FPTR f, 
                     UErrorCode *status);
 
diff --git a/libicu/cts_headers/unicode/ucnv.h b/libicu/cts_headers/unicode/ucnv.h
index e0cfe94..58f271c 100644
--- a/libicu/cts_headers/unicode/ucnv.h
+++ b/libicu/cts_headers/unicode/ucnv.h
@@ -311,7 +311,7 @@
  * lexically follows name2.
  * @stable ICU 2.0
  */
-U_STABLE int U_EXPORT2
+U_CAPI int U_EXPORT2
 ucnv_compareNames(const char *name1, const char *name2);
 
 
@@ -365,7 +365,7 @@
  * @see ucnv_compareNames
  * @stable ICU 2.0
  */
-U_STABLE UConverter* U_EXPORT2
+U_CAPI UConverter* U_EXPORT2
 ucnv_open(const char *converterName, UErrorCode *err);
 
 
@@ -395,7 +395,7 @@
  * @see ucnv_compareNames
  * @stable ICU 2.0
  */
-U_STABLE UConverter* U_EXPORT2
+U_CAPI UConverter* U_EXPORT2
 ucnv_openU(const UChar *name,
            UErrorCode *err);
 
@@ -463,7 +463,7 @@
  * @see UConverterPlatform
  * @stable ICU 2.0
  */
-U_STABLE UConverter* U_EXPORT2
+U_CAPI UConverter* U_EXPORT2
 ucnv_openCCSID(int32_t codepage,
                UConverterPlatform platform,
                UErrorCode * err);
@@ -479,7 +479,7 @@
  * <p>The name will NOT be looked up in the alias mechanism, nor will the converter be
  * stored in the converter cache or the alias table. The only way to open further converters
  * is call this function multiple times, or use the ucnv_safeClone() function to clone a
- * 'master' converter.</p>
+ * 'primary' converter.</p>
  *
  * <p>A future version of ICU may add alias table lookups and/or caching
  * to this function.</p>
@@ -498,7 +498,7 @@
  * @see ucnv_close
  * @stable ICU 2.2
  */
-U_STABLE UConverter* U_EXPORT2
+U_CAPI UConverter* U_EXPORT2
 ucnv_openPackage(const char *packageName, const char *converterName, UErrorCode *err);
 
 /**
@@ -540,7 +540,7 @@
  * @return pointer to the new clone
  * @stable ICU 2.0
  */
-U_STABLE UConverter * U_EXPORT2
+U_CAPI UConverter * U_EXPORT2
 ucnv_safeClone(const UConverter *cnv,
                void             *stackBuffer,
                int32_t          *pBufferSize,
@@ -569,7 +569,7 @@
  * @see ucnv_openCCSID
  * @stable ICU 2.0
  */
-U_STABLE void  U_EXPORT2
+U_CAPI void  U_EXPORT2
 ucnv_close(UConverter * converter);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -608,7 +608,7 @@
  * @see ucnv_setSubstChars
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getSubstChars(const UConverter *converter,
                    char *subChars,
                    int8_t *len,
@@ -633,7 +633,7 @@
  * @see ucnv_getSubstChars
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_setSubstChars(UConverter *converter,
                    const char *subChars,
                    int8_t len,
@@ -666,7 +666,7 @@
  * @see ucnv_getSubstChars
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_setSubstString(UConverter *cnv,
                     const UChar *s,
                     int32_t length,
@@ -685,7 +685,7 @@
  * <TT>U_INDEX_OUTOFBOUNDS_ERROR</TT> will be returned.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getInvalidChars(const UConverter *converter,
                      char *errBytes,
                      int8_t *len,
@@ -704,7 +704,7 @@
  * <TT>U_INDEX_OUTOFBOUNDS_ERROR</TT> will be returned.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getInvalidUChars(const UConverter *converter,
                       UChar *errUChars,
                       int8_t *len,
@@ -717,7 +717,7 @@
  * @param converter the Unicode converter
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_reset(UConverter *converter);
 
 /**
@@ -728,7 +728,7 @@
  * @param converter the Unicode converter
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_resetToUnicode(UConverter *converter);
 
 /**
@@ -739,7 +739,7 @@
  * @param converter the Unicode converter
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_resetFromUnicode(UConverter *converter);
 
 /**
@@ -792,7 +792,7 @@
  * @see ucnv_getMinCharSize
  * @stable ICU 2.0
  */
-U_STABLE int8_t U_EXPORT2
+U_CAPI int8_t U_EXPORT2
 ucnv_getMaxCharSize(const UConverter *converter);
 
 /**
@@ -825,7 +825,7 @@
  * @see ucnv_getMaxCharSize
  * @stable ICU 2.0
  */
-U_STABLE int8_t U_EXPORT2
+U_CAPI int8_t U_EXPORT2
 ucnv_getMinCharSize(const UConverter *converter);
 
 /**
@@ -842,7 +842,7 @@
  * @see ucnv_getName
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_getDisplayName(const UConverter *converter,
                     const char *displayLocale,
                     UChar *displayName,
@@ -859,7 +859,7 @@
  * @see ucnv_getDisplayName
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucnv_getName(const UConverter *converter, UErrorCode *err);
 
 /**
@@ -885,7 +885,7 @@
  * @see ucnv_getPlatform
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_getCCSID(const UConverter *converter,
               UErrorCode *err);
 
@@ -899,7 +899,7 @@
  * @return The codepage platform
  * @stable ICU 2.0
  */
-U_STABLE UConverterPlatform U_EXPORT2
+U_CAPI UConverterPlatform U_EXPORT2
 ucnv_getPlatform(const UConverter *converter,
                  UErrorCode *err);
 
@@ -911,14 +911,14 @@
  * @return the type of the converter
  * @stable ICU 2.0
  */
-U_STABLE UConverterType U_EXPORT2
+U_CAPI UConverterType U_EXPORT2
 ucnv_getType(const UConverter * converter);
 
 /**
  * Gets the "starter" (lead) bytes for converters of type MBCS.
  * Will fill in an <TT>U_ILLEGAL_ARGUMENT_ERROR</TT> if converter passed in
  * is not MBCS. Fills in an array of type UBool, with the value of the byte
- * as offset to the array. For example, if (starters[0x20] == TRUE) at return,
+ * as offset to the array. For example, if (starters[0x20] == true) at return,
  * it means that the byte 0x20 is a starter byte in this converter.
  * Context pointers are always owned by the caller.
  *
@@ -929,7 +929,7 @@
  * @see ucnv_getType
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getStarters(const UConverter* converter,
                  UBool starters[256],
                  UErrorCode* err);
@@ -1000,7 +1000,7 @@
  * @see uset_close
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getUnicodeSet(const UConverter *cnv,
                    USet *setFillIn,
                    UConverterUnicodeSet whichSet,
@@ -1017,7 +1017,7 @@
  * @see ucnv_setToUCallBack
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getToUCallBack (const UConverter * converter,
                      UConverterToUCallback *action,
                      const void **context);
@@ -1033,7 +1033,7 @@
  * @see ucnv_setFromUCallBack
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getFromUCallBack (const UConverter * converter,
                        UConverterFromUCallback *action,
                        const void **context);
@@ -1053,7 +1053,7 @@
  * @see ucnv_getToUCallBack
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_setToUCallBack (UConverter * converter,
                      UConverterToUCallback newAction,
                      const void* newContext,
@@ -1076,7 +1076,7 @@
  * @see ucnv_getFromUCallBack
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_setFromUCallBack (UConverter * converter,
                        UConverterFromUCallback newAction,
                        const void *newContext,
@@ -1103,7 +1103,7 @@
  *  consumed. At that point, the caller should reset the source and
  *  sourceLimit pointers to point to the next chunk.
  *
- * At the end of the stream (flush==TRUE), the input is completely consumed
+ * At the end of the stream (flush==true), the input is completely consumed
  * when *source==sourceLimit and no error code is set.
  * The converter object is then automatically reset by this function.
  * (This means that a converter need not be reset explicitly between data
@@ -1128,9 +1128,9 @@
  * e.g: <TT>offsets[3]</TT> is equal to 6, it means that the <TT>target[3]</TT> was a result of transcoding <TT>source[6]</TT>
  * For output data carried across calls, and other data without a specific source character
  * (such as from escape sequences or callbacks)  -1 will be placed for offsets.
- * @param flush set to <TT>TRUE</TT> if the current source buffer is the last available
- * chunk of the source, <TT>FALSE</TT> otherwise. Note that if a failing status is returned,
- * this function may have to be called multiple times with flush set to <TT>TRUE</TT> until
+ * @param flush set to <TT>true</TT> if the current source buffer is the last available
+ * chunk of the source, <TT>false</TT> otherwise. Note that if a failing status is returned,
+ * this function may have to be called multiple times with flush set to <TT>true</TT> until
  * the source buffer is consumed.
  * @param err the error status.  <TT>U_ILLEGAL_ARGUMENT_ERROR</TT> will be set if the
  * converter is <TT>NULL</TT>.
@@ -1142,7 +1142,7 @@
  * @see ucnv_setToUCallBack
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_fromUnicode (UConverter * converter,
                   char **target,
                   const char *targetLimit,
@@ -1172,7 +1172,7 @@
  *  consumed. At that point, the caller should reset the source and
  *  sourceLimit pointers to point to the next chunk.
  *
- * At the end of the stream (flush==TRUE), the input is completely consumed
+ * At the end of the stream (flush==true), the input is completely consumed
  * when *source==sourceLimit and no error code is set
  * The converter object is then automatically reset by this function.
  * (This means that a converter need not be reset explicitly between data
@@ -1196,9 +1196,9 @@
  * e.g: <TT>offsets[3]</TT> is equal to 6, it means that the <TT>target[3]</TT> was a result of transcoding <TT>source[6]</TT>
  * For output data carried across calls, and other data without a specific source character
  * (such as from escape sequences or callbacks)  -1 will be placed for offsets.
- * @param flush set to <TT>TRUE</TT> if the current source buffer is the last available
- * chunk of the source, <TT>FALSE</TT> otherwise. Note that if a failing status is returned,
- * this function may have to be called multiple times with flush set to <TT>TRUE</TT> until
+ * @param flush set to <TT>true</TT> if the current source buffer is the last available
+ * chunk of the source, <TT>false</TT> otherwise. Note that if a failing status is returned,
+ * this function may have to be called multiple times with flush set to <TT>true</TT> until
  * the source buffer is consumed.
  * @param err the error status.  <TT>U_ILLEGAL_ARGUMENT_ERROR</TT> will be set if the
  * converter is <TT>NULL</TT>.
@@ -1211,7 +1211,7 @@
  * @see ucnv_getNextUChar
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_toUnicode(UConverter *converter,
                UChar **target,
                const UChar *targetLimit,
@@ -1248,7 +1248,7 @@
  * @see UCNV_GET_MAX_BYTES_FOR_STRING
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_fromUChars(UConverter *cnv,
                 char *dest, int32_t destCapacity,
                 const UChar *src, int32_t srcLength,
@@ -1280,7 +1280,7 @@
  * @see ucnv_convert
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_toUChars(UConverter *cnv,
               UChar *dest, int32_t destCapacity,
               const char *src, int32_t srcLength,
@@ -1298,7 +1298,7 @@
  * - Convenient.
  *
  * Limitations compared to ucnv_toUnicode():
- * - Always assumes flush=TRUE.
+ * - Always assumes flush=true.
  *   This makes ucnv_getNextUChar() unsuitable for "streaming" conversion,
  *   that is, for where the input is supplied in multiple buffers,
  *   because ucnv_getNextUChar() will assume the end of the input at the end
@@ -1309,7 +1309,7 @@
  * ucnv_getNextUChar() uses the current state of the converter
  * (unlike ucnv_toUChars() which always resets first).
  * However, if ucnv_getNextUChar() is called after ucnv_toUnicode()
- * stopped in the middle of a character sequence (with flush=FALSE),
+ * stopped in the middle of a character sequence (with flush=false),
  * then ucnv_getNextUChar() will always use the slower ucnv_toUnicode()
  * internally until the next character boundary.
  * (This is new in ICU 2.6. In earlier releases, ucnv_getNextUChar() had to
@@ -1356,7 +1356,7 @@
  * @see ucnv_convert
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 ucnv_getNextUChar(UConverter * converter,
                   const char **source,
                   const char * sourceLimit,
@@ -1388,7 +1388,7 @@
  *
  * ucnv_convertEx() also provides further convenience:
  * - an option to reset the converters at the beginning
- *   (if reset==TRUE, see parameters;
+ *   (if reset==true, see parameters;
  *    also sets *pivotTarget=*pivotSource=pivotStart)
  * - allow NUL-terminated input
  *   (only a single NUL byte, will not work for charsets with multi-byte NULs)
@@ -1445,7 +1445,7 @@
  *                    &target, u8+capacity,
  *                    &s, s+length,
  *                    NULL, NULL, NULL, NULL,
- *                    TRUE, TRUE,
+ *                    true, true,
  *                    pErrorCode);
  *
  *     myReleaseCachedUTF8Converter(utf8Cnv);
@@ -1477,7 +1477,7 @@
  *                      It must be pivotStart<=*pivotSource<=*pivotTarget<=pivotLimit
  *                      and pivotStart<pivotLimit (unless pivotStart==NULL).
  * @param pivotLimit    Pointer to the first unit after the pivot buffer.
- * @param reset         If TRUE, then ucnv_resetToUnicode(sourceCnv) and
+ * @param reset         If true, then ucnv_resetToUnicode(sourceCnv) and
  *                      ucnv_resetFromUnicode(targetCnv) are called, and the
  *                      pivot pointers are reset (*pivotTarget=*pivotSource=pivotStart).
  * @param flush         If true, indicates the end of the input.
@@ -1500,7 +1500,7 @@
  * @see ucnv_toUChars
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
                char **target, const char *targetLimit,
                const char **source, const char *sourceLimit,
@@ -1564,7 +1564,7 @@
  * @see ucnv_getNextUChar
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_convert(const char *toConverterName,
              const char *fromConverterName,
              char *target,
@@ -1618,7 +1618,7 @@
  * @see ucnv_toUChars
  * @stable ICU 2.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_toAlgorithmic(UConverterType algorithmicType,
                    UConverter *cnv,
                    char *target, int32_t targetCapacity,
@@ -1670,7 +1670,7 @@
  * @see ucnv_toUChars
  * @stable ICU 2.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_fromAlgorithmic(UConverter *cnv,
                      UConverterType algorithmicType,
                      char *target, int32_t targetCapacity,
@@ -1684,7 +1684,7 @@
  * @see ucnv_close
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_flushCache(void);
 
 /**
@@ -1694,7 +1694,7 @@
  * @see ucnv_getAvailableName
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_countAvailable(void);
 
 /**
@@ -1707,7 +1707,7 @@
  * @see ucnv_countAvailable
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 ucnv_getAvailableName(int32_t n);
 
 /**
@@ -1722,7 +1722,7 @@
  * @see uenum_next
  * @stable ICU 2.4
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucnv_openAllNames(UErrorCode *pErrorCode);
 
 /**
@@ -1735,7 +1735,7 @@
  * @return number of names on alias list for given alias
  * @stable ICU 2.0
  */
-U_STABLE uint16_t U_EXPORT2
+U_CAPI uint16_t U_EXPORT2
 ucnv_countAliases(const char *alias, UErrorCode *pErrorCode);
 
 /**
@@ -1750,7 +1750,7 @@
  * @see ucnv_countAliases
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucnv_getAlias(const char *alias, uint16_t n, UErrorCode *pErrorCode);
 
 /**
@@ -1766,7 +1766,7 @@
  * @param pErrorCode result of operation
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_getAliases(const char *alias, const char **aliases, UErrorCode *pErrorCode);
 
 /**
@@ -1792,7 +1792,7 @@
  * @see uenum_next
  * @stable ICU 2.2
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucnv_openStandardNames(const char *convName,
                        const char *standard,
                        UErrorCode *pErrorCode);
@@ -1802,7 +1802,7 @@
  * @return number of standards
  * @stable ICU 2.0
  */
-U_STABLE uint16_t U_EXPORT2
+U_CAPI uint16_t U_EXPORT2
 ucnv_countStandards(void);
 
 /**
@@ -1812,7 +1812,7 @@
  * @return returns the name of the standard at given index. Owned by the library.
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucnv_getStandard(uint16_t n, UErrorCode *pErrorCode);
 
 /**
@@ -1834,7 +1834,7 @@
  *         then <code>NULL</code> is returned. Owned by the library.
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucnv_getStandardName(const char *name, const char *standard, UErrorCode *pErrorCode);
 
 /**
@@ -1856,7 +1856,7 @@
  * @see ucnv_getStandardName
  * @stable ICU 2.4
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucnv_getCanonicalName(const char *alias, const char *standard, UErrorCode *pErrorCode);
 
 /**
@@ -1873,7 +1873,7 @@
  * @see ucnv_setDefaultName
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucnv_getDefaultName(void);
 
 #ifndef U_HIDE_SYSTEM_API
@@ -1893,7 +1893,7 @@
  * @system
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_setDefaultName(const char *name);
 #endif  /* U_HIDE_SYSTEM_API */
 
@@ -1914,18 +1914,18 @@
  * @see ucnv_isAmbiguous
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_fixFileSeparator(const UConverter *cnv, UChar *source, int32_t sourceLen);
 
 /**
  * Determines if the converter contains ambiguous mappings of the same
  * character or not.
  * @param cnv the converter to be tested
- * @return TRUE if the converter contains ambiguous mapping of the same
- * character, FALSE otherwise.
+ * @return true if the converter contains ambiguous mapping of the same
+ * character, false otherwise.
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucnv_isAmbiguous(const UConverter *cnv);
 
 /**
@@ -1938,12 +1938,12 @@
  * http://www.icu-project.org/userguide/conversion-data.html#ucmformat
  *
  * @param cnv The converter to set the fallback mapping usage on.
- * @param usesFallback TRUE if the user wants the converter to take advantage of the fallback
- * mapping, FALSE otherwise.
+ * @param usesFallback true if the user wants the converter to take advantage of the fallback
+ * mapping, false otherwise.
  * @stable ICU 2.0
  * @see ucnv_usesFallback
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_setFallback(UConverter *cnv, UBool usesFallback);
 
 /**
@@ -1951,11 +1951,11 @@
  * This flag has restrictions, see ucnv_setFallback().
  *
  * @param cnv The converter to be tested
- * @return TRUE if the converter uses fallback, FALSE otherwise.
+ * @return true if the converter uses fallback, false otherwise.
  * @stable ICU 2.0
  * @see ucnv_setFallback
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucnv_usesFallback(const UConverter *cnv);
 
 /**
@@ -1987,7 +1987,7 @@
  * @return The name of the encoding detected. NULL if encoding is not detected.
  * @stable ICU 2.4
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 ucnv_detectUnicodeSignature(const char* source,
                             int32_t sourceLength,
                             int32_t *signatureLength,
@@ -2004,7 +2004,7 @@
  * @return The number of UChars in the state. -1 if an error is encountered.
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_fromUCountPending(const UConverter* cnv, UErrorCode* status);
 
 /**
@@ -2018,7 +2018,7 @@
  * @return The number of chars in the state. -1 if an error is encountered.
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnv_toUCountPending(const UConverter* cnv, UErrorCode* status);
 
 /**
@@ -2030,13 +2030,13 @@
  * but a UTF-32 converter encodes each code point with 4 bytes.
  * Note: This method is not intended to be used to determine whether the charset has a
  * fixed ratio of bytes to Unicode codes <i>units</i> for any particular Unicode encoding form.
- * FALSE is returned with the UErrorCode if error occurs or cnv is NULL.
+ * false is returned with the UErrorCode if error occurs or cnv is NULL.
  * @param cnv       The converter to be tested
  * @param status    ICU error code in/out paramter
- * @return TRUE if the converter is fixed-width
+ * @return true if the converter is fixed-width
  * @stable ICU 4.8
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucnv_isFixedWidth(UConverter *cnv, UErrorCode *status);
 
 #endif
diff --git a/libicu/cts_headers/unicode/ucnv_cb.h b/libicu/cts_headers/unicode/ucnv_cb.h
index 14169ed..41845d1 100644
--- a/libicu/cts_headers/unicode/ucnv_cb.h
+++ b/libicu/cts_headers/unicode/ucnv_cb.h
@@ -84,7 +84,7 @@
  * @see ucnv_cbFromUWriteSub
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnv_cbFromUWriteBytes (UConverterFromUnicodeArgs *args,
                         const char* source,
                         int32_t length,
@@ -104,7 +104,7 @@
  * @see ucnv_cbFromUWriteBytes
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucnv_cbFromUWriteSub (UConverterFromUnicodeArgs *args,
                       int32_t offsetIndex,
                       UErrorCode * err);
@@ -121,7 +121,7 @@
  * @see ucnv_cbToUWriteSub
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 ucnv_cbFromUWriteUChars(UConverterFromUnicodeArgs *args,
+U_CAPI void U_EXPORT2 ucnv_cbFromUWriteUChars(UConverterFromUnicodeArgs *args,
                              const UChar** source,
                              const UChar*  sourceLimit,
                              int32_t offsetIndex,
@@ -140,7 +140,7 @@
  * @see ucnv_cbToUWriteSub
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 ucnv_cbToUWriteUChars (UConverterToUnicodeArgs *args,
+U_CAPI void U_EXPORT2 ucnv_cbToUWriteUChars (UConverterToUnicodeArgs *args,
                                              const UChar* source,
                                              int32_t length,
                                              int32_t offsetIndex,
@@ -156,7 +156,7 @@
  * @see ucnv_cbToUWriteUChars
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 ucnv_cbToUWriteSub (UConverterToUnicodeArgs *args,
+U_CAPI void U_EXPORT2 ucnv_cbToUWriteSub (UConverterToUnicodeArgs *args,
                        int32_t offsetIndex,
                        UErrorCode * err);
 #endif
diff --git a/libicu/cts_headers/unicode/ucnv_err.h b/libicu/cts_headers/unicode/ucnv_err.h
index d234710..7209ba5 100644
--- a/libicu/cts_headers/unicode/ucnv_err.h
+++ b/libicu/cts_headers/unicode/ucnv_err.h
@@ -193,7 +193,7 @@
  */
 typedef struct {
     uint16_t size;              /**< The size of this struct. @stable ICU 2.0 */
-    UBool flush;                /**< The internal state of converter will be reset and data flushed if set to TRUE. @stable ICU 2.0    */
+    UBool flush;                /**< The internal state of converter will be reset and data flushed if set to true. @stable ICU 2.0    */
     UConverter *converter;      /**< Pointer to the converter that is opened and to which this struct is passed as an argument. @stable ICU 2.0  */
     const UChar *source;        /**< Pointer to the source source buffer. @stable ICU 2.0    */
     const UChar *sourceLimit;   /**< Pointer to the limit (end + 1) of source buffer. @stable ICU 2.0    */
@@ -209,7 +209,7 @@
  */
 typedef struct {
     uint16_t size;              /**< The size of this struct   @stable ICU 2.0 */
-    UBool flush;                /**< The internal state of converter will be reset and data flushed if set to TRUE. @stable ICU 2.0   */
+    UBool flush;                /**< The internal state of converter will be reset and data flushed if set to true. @stable ICU 2.0   */
     UConverter *converter;      /**< Pointer to the converter that is opened and to which this struct is passed as an argument. @stable ICU 2.0 */
     const char *source;         /**< Pointer to the source source buffer. @stable ICU 2.0    */
     const char *sourceLimit;    /**< Pointer to the limit (end + 1) of source buffer. @stable ICU 2.0    */
@@ -233,7 +233,7 @@
  * @param err This should always be set to a failure status prior to calling.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_STOP (
+U_CAPI void U_EXPORT2 UCNV_FROM_U_CALLBACK_STOP (
                   const void *context,
                   UConverterFromUnicodeArgs *fromUArgs,
                   const UChar* codeUnits,
@@ -257,7 +257,7 @@
  * @param err This should always be set to a failure status prior to calling.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_STOP (
+U_CAPI void U_EXPORT2 UCNV_TO_U_CALLBACK_STOP (
                   const void *context,
                   UConverterToUnicodeArgs *toUArgs,
                   const char* codeUnits,
@@ -284,7 +284,7 @@
  *      otherwise this value will be set to a failure status.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_SKIP (
+U_CAPI void U_EXPORT2 UCNV_FROM_U_CALLBACK_SKIP (
                   const void *context,
                   UConverterFromUnicodeArgs *fromUArgs,
                   const UChar* codeUnits,
@@ -314,7 +314,7 @@
  * @see ucnv_setSubstChars
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_SUBSTITUTE (
+U_CAPI void U_EXPORT2 UCNV_FROM_U_CALLBACK_SUBSTITUTE (
                   const void *context,
                   UConverterFromUnicodeArgs *fromUArgs,
                   const UChar* codeUnits,
@@ -370,7 +370,7 @@
  *      otherwise this value will be set to a failure status.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_ESCAPE (
+U_CAPI void U_EXPORT2 UCNV_FROM_U_CALLBACK_ESCAPE (
                   const void *context,
                   UConverterFromUnicodeArgs *fromUArgs,
                   const UChar* codeUnits,
@@ -398,7 +398,7 @@
  *      otherwise this value will be set to a failure status.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_SKIP (
+U_CAPI void U_EXPORT2 UCNV_TO_U_CALLBACK_SKIP (
                   const void *context,
                   UConverterToUnicodeArgs *toUArgs,
                   const char* codeUnits,
@@ -424,7 +424,7 @@
  *      otherwise this value will be set to a failure status.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_SUBSTITUTE (
+U_CAPI void U_EXPORT2 UCNV_TO_U_CALLBACK_SUBSTITUTE (
                   const void *context,
                   UConverterToUnicodeArgs *toUArgs,
                   const char* codeUnits,
@@ -450,7 +450,7 @@
  * @stable ICU 2.0
  */
 
-U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_ESCAPE (
+U_CAPI void U_EXPORT2 UCNV_TO_U_CALLBACK_ESCAPE (
                   const void *context,
                   UConverterToUnicodeArgs *toUArgs,
                   const char* codeUnits,
diff --git a/libicu/cts_headers/unicode/ucnvsel.h b/libicu/cts_headers/unicode/ucnvsel.h
index f33440d..5e0a71c 100644
--- a/libicu/cts_headers/unicode/ucnvsel.h
+++ b/libicu/cts_headers/unicode/ucnvsel.h
@@ -75,7 +75,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE UConverterSelector* U_EXPORT2
+U_CAPI UConverterSelector* U_EXPORT2
 ucnvsel_open(const char* const*  converterList, int32_t converterListSize,
              const USet* excludedCodePoints,
              const UConverterUnicodeSet whichSet, UErrorCode* status);
@@ -93,7 +93,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucnvsel_close(UConverterSelector *sel);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -130,7 +130,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE UConverterSelector* U_EXPORT2
+U_CAPI UConverterSelector* U_EXPORT2
 ucnvsel_openFromSerialized(const void* buffer, int32_t length, UErrorCode* status);
 
 /**
@@ -147,7 +147,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucnvsel_serialize(const UConverterSelector* sel,
                   void* buffer, int32_t bufferCapacity, UErrorCode* status);
 
@@ -165,7 +165,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucnvsel_selectForString(const UConverterSelector* sel,
                         const UChar *s, int32_t length, UErrorCode *status);
 
@@ -183,7 +183,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucnvsel_selectForUTF8(const UConverterSelector* sel,
                       const char *s, int32_t length, UErrorCode *status);
 
diff --git a/libicu/cts_headers/unicode/ucol.h b/libicu/cts_headers/unicode/ucol.h
index f7e6919..a01d0ae 100644
--- a/libicu/cts_headers/unicode/ucol.h
+++ b/libicu/cts_headers/unicode/ucol.h
@@ -35,14 +35,14 @@
  * searching and sorting routines for natural language text.
  * <p>
  * For more information about the collation service see 
- * <a href="http://userguide.icu-project.org/collation">the User Guide</a>.
+ * <a href="https://unicode-org.github.io/icu/userguide/collation">the User Guide</a>.
  * <p>
  * Collation service provides correct sorting orders for most locales supported in ICU. 
  * If specific data for a locale is not available, the orders eventually falls back
  * to the <a href="http://www.unicode.org/reports/tr35/tr35-collation.html#Root_Collation">CLDR root sort order</a>. 
  * <p>
  * Sort ordering may be customized by providing your own set of rules. For more on
- * this subject see the <a href="http://userguide.icu-project.org/collation/customization">
+ * this subject see the <a href="https://unicode-org.github.io/icu/userguide/collation/customization">
  * Collation Customization</a> section of the User Guide.
  * <p>
  * @see         UCollationResult
@@ -370,7 +370,7 @@
    * Retrieves the "UCA rules" concatenated with the tailoring rules.
    * The "UCA rules" are an <i>approximation</i> of the root collator's sort order.
    * They are almost never used or useful at runtime and can be removed from the data.
-   * See http://userguide.icu-project.org/collation/customization#TOC-Building-on-Existing-Locales
+   * See https://unicode-org.github.io/icu/userguide/collation/customization#building-on-existing-locales
    * @stable ICU 2.0
    */
   UCOL_FULL_RULES 
@@ -384,7 +384,7 @@
  * Starting with ICU 54, collation attributes can be specified via locale keywords as well,
  * in the old locale extension syntax ("el@colCaseFirst=upper")
  * or in language tag syntax ("el-u-kf-upper").
- * See <a href="http://userguide.icu-project.org/collation/api">User Guide: Collation API</a>.
+ * See <a href="https://unicode-org.github.io/icu/userguide/collation/api">User Guide: Collation API</a>.
  *
  * The UCollator pointer is used in all the calls to the Collation 
  * service. After finished, collator must be disposed of by calling
@@ -401,7 +401,7 @@
  * @see ucol_close
  * @stable ICU 2.0
  */
-U_STABLE UCollator* U_EXPORT2 
+U_CAPI UCollator* U_EXPORT2 
 ucol_open(const char *loc, UErrorCode *status);
 
 /**
@@ -429,7 +429,7 @@
  * @see ucol_close
  * @stable ICU 2.0
  */
-U_STABLE UCollator* U_EXPORT2 
+U_CAPI UCollator* U_EXPORT2 
 ucol_openRules( const UChar        *rules,
                 int32_t            rulesLength,
                 UColAttributeValue normalizationMode,
@@ -442,7 +442,7 @@
  * Open a collator defined by a short form string.
  * The structure and the syntax of the string is defined in the "Naming collators"
  * section of the users guide: 
- * http://userguide.icu-project.org/collation/concepts#TOC-Collator-naming-scheme
+ * https://unicode-org.github.io/icu/userguide/collation/concepts#collator-naming-scheme
  * Attributes are overriden by the subsequent attributes. So, for "S2_S3", final
  * strength will be 3. 3066bis locale overrides individual locale parts.
  * The call to this function is equivalent to a call to ucol_open, followed by a 
@@ -452,12 +452,12 @@
  *                   state for a locale.
  * @param parseError if not NULL, structure that will get filled with error's pre
  *                   and post context in case of error.
- * @param forceDefaults if FALSE, the settings that are the same as the collator 
+ * @param forceDefaults if false, the settings that are the same as the collator 
  *                   default settings will not be applied (for example, setting
  *                   French secondary on a French collator would not be executed). 
- *                   If TRUE, all the settings will be applied regardless of the 
+ *                   If true, all the settings will be applied regardless of the 
  *                   collator default value. If the definition
- *                   strings are to be cached, should be set to FALSE.
+ *                   strings are to be cached, should be set to false.
  * @param status     Error code. Apart from regular error conditions connected to 
  *                   instantiating collators (like out of memory or similar), this
  *                   API will return an error if an invalid attribute or attribute/value
@@ -509,7 +509,7 @@
  *
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucol_getContractionsAndExpansions( const UCollator *coll,
                   USet *contractions, USet *expansions,
                   UBool addPrefixes, UErrorCode *status);
@@ -524,7 +524,7 @@
  * @see ucol_safeClone
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_close(UCollator *coll);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -561,7 +561,7 @@
  * @see ucol_equal
  * @stable ICU 2.0
  */
-U_STABLE UCollationResult U_EXPORT2 
+U_CAPI UCollationResult U_EXPORT2 
 ucol_strcoll(    const    UCollator    *coll,
         const    UChar        *source,
         int32_t            sourceLength,
@@ -586,7 +586,7 @@
 * @see ucol_equal 
 * @stable ICU 50 
 */ 
-U_STABLE UCollationResult U_EXPORT2
+U_CAPI UCollationResult U_EXPORT2
 ucol_strcollUTF8(
         const UCollator *coll,
         const char      *source,
@@ -603,13 +603,13 @@
  * @param sourceLength The length of source, or -1 if null-terminated.
  * @param target The target string.
  * @param targetLength The length of target, or -1 if null-terminated.
- * @return TRUE if source is greater than target, FALSE otherwise.
+ * @return true if source is greater than target, false otherwise.
  * @see ucol_strcoll
  * @see ucol_greaterOrEqual
  * @see ucol_equal
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucol_greater(const UCollator *coll,
              const UChar     *source, int32_t sourceLength,
              const UChar     *target, int32_t targetLength);
@@ -622,13 +622,13 @@
  * @param sourceLength The length of source, or -1 if null-terminated.
  * @param target The target string.
  * @param targetLength The length of target, or -1 if null-terminated.
- * @return TRUE if source is greater than or equal to target, FALSE otherwise.
+ * @return true if source is greater than or equal to target, false otherwise.
  * @see ucol_strcoll
  * @see ucol_greater
  * @see ucol_equal
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucol_greaterOrEqual(const UCollator *coll,
                     const UChar     *source, int32_t sourceLength,
                     const UChar     *target, int32_t targetLength);
@@ -641,13 +641,13 @@
  * @param sourceLength The length of source, or -1 if null-terminated.
  * @param target The target string.
  * @param targetLength The length of target, or -1 if null-terminated.
- * @return TRUE if source is equal to target, FALSE otherwise
+ * @return true if source is equal to target, false otherwise
  * @see ucol_strcoll
  * @see ucol_greater
  * @see ucol_greaterOrEqual
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 ucol_equal(const UCollator *coll,
            const UChar     *source, int32_t sourceLength,
            const UChar     *target, int32_t targetLength);
@@ -664,7 +664,7 @@
  * @see ucol_strcoll
  * @stable ICU 2.6
  */
-U_STABLE UCollationResult U_EXPORT2 
+U_CAPI UCollationResult U_EXPORT2 
 ucol_strcollIter(  const    UCollator    *coll,
                   UCharIterator *sIter,
                   UCharIterator *tIter,
@@ -679,7 +679,7 @@
  * @see ucol_setStrength
  * @stable ICU 2.0
  */
-U_STABLE UCollationStrength U_EXPORT2 
+U_CAPI UCollationStrength U_EXPORT2 
 ucol_getStrength(const UCollator *coll);
 
 /**
@@ -691,7 +691,7 @@
  * @see ucol_getStrength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_setStrength(UCollator *coll,
                  UCollationStrength strength);
 
@@ -711,7 +711,7 @@
  * @see UColReorderCode
  * @stable ICU 4.8
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getReorderCodes(const UCollator* coll,
                     int32_t* dest,
                     int32_t destCapacity,
@@ -756,7 +756,7 @@
  * @see UColReorderCode
  * @stable ICU 4.8
  */ 
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_setReorderCodes(UCollator* coll,
                     const int32_t* reorderCodes,
                     int32_t reorderCodesLength,
@@ -781,7 +781,7 @@
  * @see UColReorderCode
  * @stable ICU 4.8
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getEquivalentReorderCodes(int32_t reorderCode,
                     int32_t* dest,
                     int32_t destCapacity,
@@ -799,7 +799,7 @@
  * the output was truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getDisplayName(    const    char        *objLoc,
             const    char        *dispLoc,
             UChar             *result,
@@ -815,7 +815,7 @@
  * @see ucol_countAvailable
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2 
+U_CAPI const char* U_EXPORT2 
 ucol_getAvailable(int32_t localeIndex);
 
 /**
@@ -826,7 +826,7 @@
  * @see ucol_getAvailable
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_countAvailable(void);
 
 #if !UCONFIG_NO_SERVICE
@@ -838,7 +838,7 @@
  * responsible for closing the result.
  * @stable ICU 3.0
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucol_openAvailableLocales(UErrorCode *status);
 #endif
 
@@ -851,7 +851,7 @@
  * responsible for closing the result.
  * @stable ICU 3.0
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucol_getKeywords(UErrorCode *status);
 
 /**
@@ -865,7 +865,7 @@
  * upon error. The caller is responsible for closing the result.
  * @stable ICU 3.0
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucol_getKeywordValues(const char *keyword, UErrorCode *status);
 
 /**
@@ -884,7 +884,7 @@
  * @return a string enumeration over keyword values for the given key and the locale.
  * @stable ICU 4.2
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucol_getKeywordValuesForLocale(const char* key,
                                const char* locale,
                                UBool commonlyUsed,
@@ -904,7 +904,7 @@
  * applications who wish to cache collators, or otherwise reuse
  * collators when possible. The functional equivalent may change
  * over time. For more information, please see the <a
- * href="http://userguide.icu-project.org/locale#TOC-Locales-and-Services">
+ * href="https://unicode-org.github.io/icu/userguide/locale#locales-and-services">
  * Locales and Services</a> section of the ICU User Guide.
  * @param result fillin for the functionally equivalent result locale
  * @param resultCapacity capacity of the fillin buffer
@@ -921,7 +921,7 @@
  * an error code will be returned.
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_getFunctionalEquivalent(char* result, int32_t resultCapacity,
                              const char* keyword, const char* locale,
                              UBool* isAvailable, UErrorCode* status);
@@ -934,7 +934,7 @@
  * @return The collation tailoring rules.
  * @stable ICU 2.0
  */
-U_STABLE const UChar* U_EXPORT2 
+U_CAPI const UChar* U_EXPORT2 
 ucol_getRules(    const    UCollator    *coll, 
         int32_t            *length);
 
@@ -945,7 +945,7 @@
  *  This string will be normalized.
  *  The structure and the syntax of the string is defined in the "Naming collators"
  *  section of the users guide: 
- *  http://userguide.icu-project.org/collation/concepts#TOC-Collator-naming-scheme
+ *  https://unicode-org.github.io/icu/userguide/collation/concepts#collator-naming-scheme
  *  This API supports preflighting.
  *  @param coll a collator
  *  @param locale a locale that will appear as a collators locale in the resulting
@@ -1017,7 +1017,7 @@
  * @see ucol_keyHashCode
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getSortKey(const    UCollator    *coll,
         const    UChar        *source,
         int32_t        sourceLength,
@@ -1045,7 +1045,7 @@
  *          the sort key.
  *  @stable ICU 2.6
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_nextSortKeyPart(const UCollator *coll,
                      UCharIterator *iter,
                      uint32_t state[2],
@@ -1112,7 +1112,7 @@
  * @see ucol_keyHashCode
  * @stable ICU 2.1
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getBound(const uint8_t       *source,
         int32_t             sourceLength,
         UColBoundMode       boundType,
@@ -1129,7 +1129,7 @@
  * @param info the version # information, the result will be filled in
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucol_getVersion(const UCollator* coll, UVersionInfo info);
 
 /**
@@ -1139,7 +1139,7 @@
  * @param info the version # information, the result will be filled in
  * @stable ICU 2.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucol_getUCAVersion(const UCollator* coll, UVersionInfo info);
 
 /**
@@ -1158,7 +1158,7 @@
  * Using strings with U+FFFE may yield shorter sort keys.
  *
  * For details about Sort Key Features see
- * http://userguide.icu-project.org/collation/api#TOC-Sort-Key-Features
+ * https://unicode-org.github.io/icu/userguide/collation/api#sort-key-features
  *
  * It is possible to merge multiple sort keys by consecutively merging
  * another one with the intermediate result.
@@ -1189,7 +1189,7 @@
  *         in which cases the contents of dest is undefined
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_mergeSortkeys(const uint8_t *src1, int32_t src1Length,
                    const uint8_t *src2, int32_t src2Length,
                    uint8_t *dest, int32_t destCapacity);
@@ -1205,7 +1205,7 @@
  * @see ucol_getAttribute
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_setAttribute(UCollator *coll, UColAttribute attr, UColAttributeValue value, UErrorCode *status);
 
 /**
@@ -1219,7 +1219,7 @@
  * @see ucol_setAttribute
  * @stable ICU 2.0
  */
-U_STABLE UColAttributeValue  U_EXPORT2 
+U_CAPI UColAttributeValue  U_EXPORT2 
 ucol_getAttribute(const UCollator *coll, UColAttribute attr, UErrorCode *status);
 
 /**
@@ -1238,7 +1238,7 @@
  * @see ucol_getMaxVariable
  * @stable ICU 53
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucol_setMaxVariable(UCollator *coll, UColReorderCode group, UErrorCode *pErrorCode);
 
 /**
@@ -1248,7 +1248,7 @@
  * @see ucol_setMaxVariable
  * @stable ICU 53
  */
-U_STABLE UColReorderCode U_EXPORT2
+U_CAPI UColReorderCode U_EXPORT2
 ucol_getMaxVariable(const UCollator *coll);
 
 #ifndef U_HIDE_DEPRECATED_API
@@ -1289,7 +1289,7 @@
  * @see ucol_restoreVariableTop
  * @stable ICU 2.0
  */
-U_STABLE uint32_t U_EXPORT2 ucol_getVariableTop(const UCollator *coll, UErrorCode *status);
+U_CAPI uint32_t U_EXPORT2 ucol_getVariableTop(const UCollator *coll, UErrorCode *status);
 
 #ifndef U_HIDE_DEPRECATED_API
 /**
@@ -1333,7 +1333,7 @@
  * @see ucol_close
  * @stable ICU 2.0
  */
-U_STABLE UCollator* U_EXPORT2 
+U_CAPI UCollator* U_EXPORT2 
 ucol_safeClone(const UCollator *coll,
                void            *stackBuffer,
                int32_t         *pBufferSize,
@@ -1354,7 +1354,7 @@
  * to store rules, will store up to available space.
  *
  * ucol_getRules() should normally be used instead.
- * See http://userguide.icu-project.org/collation/customization#TOC-Building-on-Existing-Locales
+ * See https://unicode-org.github.io/icu/userguide/collation/customization#building-on-existing-locales
  * @param coll collator to get the rules from
  * @param delta one of UCOL_TAILORING_ONLY, UCOL_FULL_RULES. 
  * @param buffer buffer to store the result in. If NULL, you'll get no rules.
@@ -1363,7 +1363,7 @@
  * @stable ICU 2.0
  * @see UCOL_FULL_RULES
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getRulesEx(const UCollator *coll, UColRuleOption delta, UChar *buffer, int32_t bufferLen);
 
 #ifndef U_HIDE_DEPRECATED_API
@@ -1399,7 +1399,7 @@
  *         NULL.
  * @stable ICU 2.8
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucol_getLocaleByType(const UCollator *coll, ULocDataLocaleType type, UErrorCode *status);
 
 /**
@@ -1412,7 +1412,7 @@
  * @see uset_close
  * @stable ICU 2.4
  */
-U_STABLE USet * U_EXPORT2
+U_CAPI USet * U_EXPORT2
 ucol_getTailoredSet(const UCollator *coll, UErrorCode *status);
 
 #ifndef U_HIDE_INTERNAL_API
@@ -1427,7 +1427,7 @@
  *  @return number of elements in the set
  *  @internal ICU 3.0
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_getUnsafeSet( const UCollator *coll,
                   USet *unsafe,
                   UErrorCode *status);
@@ -1439,12 +1439,12 @@
  *                   state for a locale.
  * @param parseError if not NULL, structure that will get filled with error's pre
  *                   and post context in case of error.
- * @param forceDefaults if FALSE, the settings that are the same as the collator 
+ * @param forceDefaults if false, the settings that are the same as the collator 
  *                   default settings will not be applied (for example, setting
  *                   French secondary on a French collator would not be executed). 
- *                   If TRUE, all the settings will be applied regardless of the 
+ *                   If true, all the settings will be applied regardless of the 
  *                   collator default value. If the definition
- *                   strings are to be cached, should be set to FALSE.
+ *                   strings are to be cached, should be set to false.
  * @param status     Error code. Apart from regular error conditions connected to 
  *                   instantiating collators (like out of memory or similar), this
  *                   API will return an error if an invalid attribute or attribute/value
@@ -1452,7 +1452,7 @@
  * @see ucol_openFromShortString
  * @internal ICU 3.2.1
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucol_prepareShortStringOpen( const char *definition,
                           UBool forceDefaults,
                           UParseError *parseError,
@@ -1470,7 +1470,7 @@
  *  @see ucol_openBinary
  *  @stable ICU 3.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_cloneBinary(const UCollator *coll,
                  uint8_t *buffer, int32_t capacity,
                  UErrorCode *status);
@@ -1492,7 +1492,7 @@
  *  @see ucol_cloneBinary
  *  @stable ICU 3.2
  */
-U_STABLE UCollator* U_EXPORT2
+U_CAPI UCollator* U_EXPORT2
 ucol_openBinary(const uint8_t *bin, int32_t length, 
                 const UCollator *base, 
                 UErrorCode *status);
diff --git a/libicu/cts_headers/unicode/ucoleitr.h b/libicu/cts_headers/unicode/ucoleitr.h
index 85ec838..d500036 100644
--- a/libicu/cts_headers/unicode/ucoleitr.h
+++ b/libicu/cts_headers/unicode/ucoleitr.h
@@ -23,7 +23,7 @@
 #if !UCONFIG_NO_COLLATION
 
 /**  
- * This indicates an error has occured during processing or if no more CEs is 
+ * This indicates an error has occurred during processing or if no more CEs is 
  * to be returned.
  * @stable ICU 2.0
  */
@@ -66,14 +66,14 @@
  * .      UCollationElements *c;
  * .      UCollatorOld *coll;
  * .      UErrorCode success = U_ZERO_ERROR;
- * .      s=(UChar*)malloc(sizeof(UChar) * (strlen("This is a test")+1) );
- * .      u_uastrcpy(s, "This is a test");
+ * .      str=(UChar*)malloc(sizeof(UChar) * (strlen("This is a test")+1) );
+ * .      u_uastrcpy(str, "This is a test");
  * .      coll = ucol_open(NULL, &success);
  * .      c = ucol_openElements(coll, str, u_strlen(str), &status);
  * .      order = ucol_next(c, &success);
  * .      ucol_reset(c);
  * .      order = ucol_prev(c, &success);
- * .      free(s);
+ * .      free(str);
  * .      ucol_close(coll);
  * .      ucol_closeElements(c);
  * .  }
@@ -102,6 +102,10 @@
 /**
  * Open the collation elements for a string.
  *
+ * The UCollationElements retains a pointer to the supplied text.
+ * The caller must not modify or delete the text while the UCollationElements
+ * object is used to iterate over this text.
+ *
  * @param coll The collator containing the desired collation rules.
  * @param text The text to iterate over.
  * @param textLength The number of characters in text, or -1 if null-terminated
@@ -109,13 +113,12 @@
  * @return a struct containing collation element information
  * @stable ICU 2.0
  */
-U_STABLE UCollationElements* U_EXPORT2 
+U_CAPI UCollationElements* U_EXPORT2 
 ucol_openElements(const UCollator  *coll,
                   const UChar      *text,
                         int32_t    textLength,
                         UErrorCode *status);
 
-
 /**
  * get a hash code for a key... Not very useful!
  * @param key    the given key.
@@ -123,7 +126,7 @@
  * @return       the hash code.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_keyHashCode(const uint8_t* key, int32_t length);
 
 /**
@@ -132,7 +135,7 @@
  * @param elems The UCollationElements to close.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_closeElements(UCollationElements *elems);
 
 /**
@@ -144,7 +147,7 @@
  * @see ucol_previous
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_reset(UCollationElements *elems);
 
 /**
@@ -153,10 +156,10 @@
  * @param elems The UCollationElements containing the text.
  * @param status A pointer to a UErrorCode to receive any errors.
  * @return The next collation elements ordering, otherwise returns UCOL_NULLORDER 
- *         if an error has occured or if the end of string has been reached
+ *         if an error has occurred or if the end of string has been reached
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_next(UCollationElements *elems, UErrorCode *status);
 
 /**
@@ -168,11 +171,11 @@
  *               a U_BUFFER_OVERFLOW_ERROR is returned if the internal stack
  *               buffer has been exhausted.
  * @return The previous collation elements ordering, otherwise returns 
- *         UCOL_NULLORDER if an error has occured or if the start of string has 
+ *         UCOL_NULLORDER if an error has occurred or if the start of string has 
  *         been reached.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_previous(UCollationElements *elems, UErrorCode *status);
 
 /**
@@ -186,7 +189,7 @@
  *         expansion sequence
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getMaxExpansion(const UCollationElements *elems, int32_t order);
 
 /**
@@ -194,6 +197,11 @@
  * Property settings for collation will remain the same.
  * In order to reset the iterator to the current collation property settings,
  * the API reset() has to be called.
+ *
+ * The UCollationElements retains a pointer to the supplied text.
+ * The caller must not modify or delete the text while the UCollationElements
+ * object is used to iterate over this text.
+ *
  * @param elems The UCollationElements to set.
  * @param text The source text containing the collation elements.
  * @param textLength The length of text, or -1 if null-terminated.
@@ -201,8 +209,8 @@
  * @see ucol_getText
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
-ucol_setText(      UCollationElements *elems, 
+U_CAPI void U_EXPORT2 
+ucol_setText(      UCollationElements *elems,
              const UChar              *text,
                    int32_t            textLength,
                    UErrorCode         *status);
@@ -216,7 +224,7 @@
  * @see ucol_setOffset
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucol_getOffset(const UCollationElements *elems);
 
 /**
@@ -231,9 +239,9 @@
  * @see ucol_getOffset
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 ucol_setOffset(UCollationElements *elems,
-               int32_t        offset,
+               int32_t             offset,
                UErrorCode         *status);
 
 /**
@@ -242,7 +250,7 @@
 * @return the primary order of a collation order.
 * @stable ICU 2.6
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_primaryOrder (int32_t order); 
 
 /**
@@ -251,7 +259,7 @@
 * @return the secondary order of a collation order.
 * @stable ICU 2.6
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_secondaryOrder (int32_t order); 
 
 /**
@@ -260,7 +268,7 @@
 * @return the tertiary order of a collation order.
 * @stable ICU 2.6
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucol_tertiaryOrder (int32_t order); 
 
 #endif /* #if !UCONFIG_NO_COLLATION */
diff --git a/libicu/cts_headers/unicode/ucptrie.h b/libicu/cts_headers/unicode/ucptrie.h
index d736fbc..b95491b 100644
--- a/libicu/cts_headers/unicode/ucptrie.h
+++ b/libicu/cts_headers/unicode/ucptrie.h
@@ -582,11 +582,11 @@
 // Do not conditionalize with #ifndef U_HIDE_INTERNAL_API, needed for public API
 
 /** @internal */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucptrie_internalSmallIndex(const UCPTrie *trie, UChar32 c);
 
 /** @internal */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucptrie_internalSmallU8Index(const UCPTrie *trie, int32_t lt1, uint8_t t2, uint8_t t3);
 
 /**
@@ -594,7 +594,7 @@
  * Do not call directly.
  * @internal
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucptrie_internalU8PrevIndex(const UCPTrie *trie, UChar32 c,
                             const uint8_t *start, const uint8_t *src);
 
diff --git a/libicu/cts_headers/unicode/ucsdet.h b/libicu/cts_headers/unicode/ucsdet.h
index d28da50..8c62fde 100644
--- a/libicu/cts_headers/unicode/ucsdet.h
+++ b/libicu/cts_headers/unicode/ucsdet.h
@@ -78,7 +78,7 @@
   *  @return the newly opened charset detector.
   *  @stable ICU 3.6
   */
-U_STABLE UCharsetDetector * U_EXPORT2
+U_CAPI UCharsetDetector * U_EXPORT2
 ucsdet_open(UErrorCode   *status);
 
 /**
@@ -90,7 +90,7 @@
   *  @param ucsd  The charset detector to be closed.
   *  @stable ICU 3.6
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucsdet_close(UCharsetDetector *ucsd);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -127,7 +127,7 @@
   *
   * @stable ICU 3.6
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucsdet_setText(UCharsetDetector *ucsd, const char *textIn, int32_t len, UErrorCode *status);
 
 
@@ -149,7 +149,7 @@
  *
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucsdet_setDeclaredEncoding(UCharsetDetector *ucsd, const char *encoding, int32_t length, UErrorCode *status);
 
 
@@ -178,7 +178,7 @@
  *
  * @stable ICU 3.6
  */
-U_STABLE const UCharsetMatch * U_EXPORT2
+U_CAPI const UCharsetMatch * U_EXPORT2
 ucsdet_detect(UCharsetDetector *ucsd, UErrorCode *status);
     
 
@@ -212,7 +212,7 @@
  *                      the detector is closed or modified.
  * @stable ICU 3.6
  */
-U_STABLE const UCharsetMatch ** U_EXPORT2
+U_CAPI const UCharsetMatch ** U_EXPORT2
 ucsdet_detectAll(UCharsetDetector *ucsd, int32_t *matchesFound, UErrorCode *status);
 
 
@@ -232,7 +232,7 @@
  *
  *  @stable ICU 3.6
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucsdet_getName(const UCharsetMatch *ucsm, UErrorCode *status);
 
 /**
@@ -258,7 +258,7 @@
  *
  *  @stable ICU 3.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucsdet_getConfidence(const UCharsetMatch *ucsm, UErrorCode *status);
 
 /**
@@ -290,7 +290,7 @@
  *
  *  @stable ICU 3.6
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ucsdet_getLanguage(const UCharsetMatch *ucsm, UErrorCode *status);
 
 
@@ -316,7 +316,7 @@
   *
   * @stable ICU 3.6
   */
-U_STABLE  int32_t U_EXPORT2
+U_CAPI  int32_t U_EXPORT2
 ucsdet_getUChars(const UCharsetMatch *ucsm,
                  UChar *buf, int32_t cap, UErrorCode *status);
 
@@ -350,7 +350,7 @@
   *  @return an iterator providing access to the detectable charset names.
   *  @stable ICU 3.6
   */
-U_STABLE  UEnumeration * U_EXPORT2
+U_CAPI  UEnumeration * U_EXPORT2
 ucsdet_getAllDetectableCharsets(const UCharsetDetector *ucsd,  UErrorCode *status);
 
 /**
@@ -360,11 +360,11 @@
   *  heuristics.
   *
   *  @param ucsd  The charset detector to check.
-  *  @return TRUE if filtering is enabled.
+  *  @return true if filtering is enabled.
   *  @stable ICU 3.6
   */
 
-U_STABLE  UBool U_EXPORT2
+U_CAPI  UBool U_EXPORT2
 ucsdet_isInputFilterEnabled(const UCharsetDetector *ucsd);
 
 
@@ -379,7 +379,7 @@
  *
  * @stable ICU 3.6
  */
-U_STABLE  UBool U_EXPORT2
+U_CAPI  UBool U_EXPORT2
 ucsdet_enableInputFilter(UCharsetDetector *ucsd, UBool filter);
 
 #ifndef U_HIDE_INTERNAL_API
@@ -396,7 +396,7 @@
   *  the specified charset detector.
   *  @internal
   */
-U_INTERNAL UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucsdet_getDetectableCharsets(const UCharsetDetector *ucsd,  UErrorCode *status);
 
 /**
@@ -406,13 +406,13 @@
   *
   * @param ucsd a Charset detector.
   * @param encoding encoding the name of charset encoding.
-  * @param enabled <code>TRUE</code> to enable, or <code>FALSE</code> to disable the
+  * @param enabled <code>true</code> to enable, or <code>false</code> to disable the
   *   charset encoding.
   * @param status receives the return status. When the name of charset encoding
   *   is not supported, U_ILLEGAL_ARGUMENT_ERROR is set.
   * @internal
   */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucsdet_setDetectableCharset(UCharsetDetector *ucsd, const char *encoding, UBool enabled, UErrorCode *status);
 #endif  /* U_HIDE_INTERNAL_API */
 
diff --git a/libicu/cts_headers/unicode/ucurr.h b/libicu/cts_headers/unicode/ucurr.h
index f91cc0d..35c2a39 100644
--- a/libicu/cts_headers/unicode/ucurr.h
+++ b/libicu/cts_headers/unicode/ucurr.h
@@ -78,7 +78,7 @@
  *                invalid. 
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucurr_forLocale(const char* locale,
                 UChar* buff,
                 int32_t buffCapacity,
@@ -113,7 +113,29 @@
      *
      * @stable ICU 61
      */
-    UCURR_NARROW_SYMBOL_NAME
+    UCURR_NARROW_SYMBOL_NAME,
+
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Selector for getName() indicating the formal currency symbol.
+     * The formal currency symbol is similar to the regular currency
+     * symbol, but it always takes the form used in formal settings
+     * such as banking; for example, "NT$" instead of "$" for TWD in zh-TW.
+     *
+     * @draft ICU 68
+     */
+    UCURR_FORMAL_SYMBOL_NAME,
+
+    /**
+     * Selector for getName() indicating the variant currency symbol.
+     * The variant symbol for a currency is an alternative symbol
+     * that is not necessarily as widely used as the regular symbol.
+     *
+     * @draft ICU 68
+     */
+    UCURR_VARIANT_SYMBOL_NAME
+#endif  // U_HIDE_DRAFT_API
+    
 } UCurrNameStyle;
 
 #if !UCONFIG_NO_SERVICE
@@ -133,7 +155,7 @@
  * if there was an error.
  * @stable ICU 2.6
  */
-U_STABLE UCurrRegistryKey U_EXPORT2
+U_CAPI UCurrRegistryKey U_EXPORT2
 ucurr_register(const UChar* isoCode, 
                    const char* locale,  
                    UErrorCode* status);
@@ -145,10 +167,10 @@
  * restored.
  * @param key the registry key returned by a previous call to ucurr_register
  * @param status the in/out status code, no special meanings are assigned
- * @return TRUE if the currency for this key was successfully unregistered
+ * @return true if the currency for this key was successfully unregistered
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucurr_unregister(UCurrRegistryKey key, UErrorCode* status);
 #endif /* UCONFIG_NO_SERVICE */
 
@@ -159,7 +181,7 @@
  * @param currency null-terminated 3-letter ISO 4217 code
  * @param locale locale in which to display currency
  * @param nameStyle selector for which kind of name to return
- * @param isChoiceFormat always set to FALSE, or can be NULL;
+ * @param isChoiceFormat always set to false, or can be NULL;
  *     display names are static strings;
  *     since ICU 4.4, ChoiceFormat patterns are no longer supported
  * @param len fill-in parameter to receive length of result
@@ -169,7 +191,7 @@
  * returned.
  * @stable ICU 2.6
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ucurr_getName(const UChar* currency,
               const char* locale,
               UCurrNameStyle nameStyle,
@@ -183,7 +205,7 @@
  * currency object in the en_US locale is "US dollar" or "US dollars".
  * @param currency null-terminated 3-letter ISO 4217 code
  * @param locale locale in which to display currency
- * @param isChoiceFormat always set to FALSE, or can be NULL;
+ * @param isChoiceFormat always set to false, or can be NULL;
  *     display names are static strings;
  *     since ICU 4.4, ChoiceFormat patterns are no longer supported
  * @param pluralCount plural count
@@ -194,7 +216,7 @@
  * returned.
  * @stable ICU 4.2
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ucurr_getPluralName(const UChar* currency,
                     const char* locale,
                     UBool* isChoiceFormat,
@@ -219,7 +241,7 @@
  * displayed, or 0 if there is an error
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucurr_getDefaultFractionDigits(const UChar* currency,
                                UErrorCode* ec);
 
@@ -240,7 +262,7 @@
  * displayed, or 0 if there is an error
  * @stable ICU 54
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucurr_getDefaultFractionDigitsForUsage(const UChar* currency, 
                                        const UCurrencyUsage usage,
                                        UErrorCode* ec);
@@ -255,7 +277,7 @@
  * or 0.0 if there is an error
  * @stable ICU 3.0
  */
-U_STABLE double U_EXPORT2
+U_CAPI double U_EXPORT2
 ucurr_getRoundingIncrement(const UChar* currency,
                            UErrorCode* ec);
 
@@ -269,7 +291,7 @@
  * or 0.0 if there is an error
  * @stable ICU 54
  */
-U_STABLE double U_EXPORT2
+U_CAPI double U_EXPORT2
 ucurr_getRoundingIncrementForUsage(const UChar* currency,
                                    const UCurrencyUsage usage,
                                    UErrorCode* ec);
@@ -326,7 +348,7 @@
  * @param pErrorCode Error code
  * @stable ICU 3.2
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 ucurr_openISOCurrencies(uint32_t currType, UErrorCode *pErrorCode);
 
 /**
@@ -351,11 +373,11 @@
   * @param errorCode 
   *            ICU error code 
    * 
-  * @return TRUE if the given ISO 4217 3-letter code is supported on the specified date range. 
+  * @return true if the given ISO 4217 3-letter code is supported on the specified date range. 
   * 
   * @stable ICU 4.8 
   */ 
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucurr_isAvailable(const UChar* isoCode, 
              UDate from, 
              UDate to, 
@@ -375,7 +397,7 @@
  *               values are invalid.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucurr_countCurrencies(const char* locale, 
                  UDate date, 
                  UErrorCode* ec); 
@@ -399,7 +421,7 @@
  *               invalid.  
  * @stable ICU 4.0 
  */ 
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ucurr_forLocaleAndDate(const char* locale, 
                 UDate date, 
                 int32_t index,
@@ -423,7 +445,7 @@
  * @return a string enumeration over keyword values for the given key and the locale.
  * @stable ICU 4.2
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ucurr_getKeywordValuesForLocale(const char* key,
                                 const char* locale,
                                 UBool commonlyUsed,
@@ -438,7 +460,7 @@
  * @return The ISO 4217 numeric code of the currency
  * @stable ICU 49
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucurr_getNumericCode(const UChar* currency);
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/libicu/cts_headers/unicode/udat.h b/libicu/cts_headers/unicode/udat.h
index a0855c3..ec25eba 100644
--- a/libicu/cts_headers/unicode/udat.h
+++ b/libicu/cts_headers/unicode/udat.h
@@ -146,7 +146,7 @@
  * the date and time formatting algorithm and pattern letters defined by
  * <a href="http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table">UTS#35
  * Unicode Locale Data Markup Language (LDML)</a> and further documented for ICU in the
- * <a href="https://sites.google.com/site/icuprojectuserguide/formatparse/datetime?pli=1#TOC-Date-Field-Symbol-Table">ICU
+ * <a href="https://unicode-org.github.io/icu/userguide/format_parse/datetime#date-field-symbol-table">ICU
  * User Guide</a>.</p>
  */
 
@@ -836,10 +836,24 @@
 
 /**
  * Maps from a UDateFormatField to the corresponding UCalendarDateFields.
- * Note: since the mapping is many-to-one, there is no inverse mapping.
+ *
+ * Note 1: Since the mapping is many-to-one, there is no inverse mapping.
+ *
+ * Note 2: There is no UErrorCode parameter, so in case of error (UDateFormatField is
+ * unknown or has no corresponding UCalendarDateFields value), the function returns the
+ * current value of UCAL_FIELD_COUNT. However, that value may change from release to
+ * release and is consequently deprecated. For a future-proof runtime way of checking
+ * for errors:
+ * a) First save the value returned by the function when it is passed an invalid value
+ *    such as "(UDateFormatField)-1".
+ * b) Then, to test for errors when passing some other UDateFormatField value, check
+ *     whether the function returns that saved value.
+ *
  * @param field the UDateFormatField.
- * @return the UCalendarDateField.  This will be UCAL_FIELD_COUNT in case
- * of error (e.g., the input field is UDAT_FIELD_COUNT).
+ * @return the UCalendarDateField. In case of error (UDateFormatField is unknown or has
+ *   no corresponding UCalendarDateFields value) this will be the current value of
+ *   UCAL_FIELD_COUNT, but that value may change from release to release.
+ *   See Note 2 above.
  * @stable ICU 4.4
  */
 U_CAPI UCalendarDateFields U_EXPORT2
@@ -1221,7 +1235,7 @@
 * With lenient parsing, the parser may use heuristics to interpret inputs that do not
 * precisely match the pattern. With strict parsing, inputs must match the pattern.
 * @param fmt The formatter to query
-* @return TRUE if fmt is set to perform lenient parsing, FALSE otherwise.
+* @return true if fmt is set to perform lenient parsing, false otherwise.
 * @see udat_setLenient
 * @stable ICU 2.0
 */
@@ -1233,7 +1247,7 @@
 * With lenient parsing, the parser may use heuristics to interpret inputs that do not
 * precisely match the pattern. With strict parsing, inputs must match the pattern.
 * @param fmt The formatter to set
-* @param isLenient TRUE if fmt should perform lenient parsing, FALSE otherwise.
+* @param isLenient true if fmt should perform lenient parsing, false otherwise.
 * @see dat_isLenient
 * @stable ICU 2.0
 */
@@ -1393,7 +1407,7 @@
 * Extract the pattern from a UDateFormat.
 * The pattern will follow the pattern syntax rules.
 * @param fmt The formatter to query.
-* @param localized TRUE if the pattern should be localized, FALSE otherwise.
+* @param localized true if the pattern should be localized, false otherwise.
 * @param result A pointer to a buffer to receive the pattern.
 * @param resultLength The maximum size of result.
 * @param status A pointer to an UErrorCode to receive any errors
@@ -1412,7 +1426,7 @@
 * Set the pattern used by an UDateFormat.
 * The pattern should follow the pattern syntax rules.
 * @param format The formatter to set.
-* @param localized TRUE if the pattern is localized, FALSE otherwise.
+* @param localized true if the pattern is localized, false otherwise.
 * @param pattern The new pattern
 * @param patternLength The length of pattern, or -1 if null-terminated.
 * @see udat_toPattern
@@ -1640,7 +1654,7 @@
 * @see udat_applyPatternRelative
 * @internal ICU 4.2 technology preview
 */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udat_toPatternRelativeDate(const UDateFormat *fmt,
                            UChar             *result,
                            int32_t           resultLength,
@@ -1657,7 +1671,7 @@
 * @see udat_applyPatternRelative
 * @internal ICU 4.2 technology preview
 */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udat_toPatternRelativeTime(const UDateFormat *fmt,
                            UChar             *result,
                            int32_t           resultLength,
@@ -1675,7 +1689,7 @@
 * @see udat_toPatternRelativeDate, udat_toPatternRelativeTime
 * @internal ICU 4.2 technology preview
 */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_applyPatternRelative(UDateFormat *format,
                           const UChar *datePattern,
                           int32_t     datePatternLength,
@@ -1700,14 +1714,14 @@
  * Register a provider factory
  * @internal ICU 49
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 udat_registerOpener(UDateFormatOpener opener, UErrorCode *status);
 
 /**
  * Un-Register a provider factory
  * @internal ICU 49
  */
-U_INTERNAL UDateFormatOpener U_EXPORT2
+U_CAPI UDateFormatOpener U_EXPORT2
 udat_unregisterOpener(UDateFormatOpener opener, UErrorCode *status);
 #endif  /* U_HIDE_INTERNAL_API */
 
diff --git a/libicu/cts_headers/unicode/udata.h b/libicu/cts_headers/unicode/udata.h
index c2fc6c2..6caa849 100644
--- a/libicu/cts_headers/unicode/udata.h
+++ b/libicu/cts_headers/unicode/udata.h
@@ -169,8 +169,8 @@
  * @param pInfo A pointer to the <code>UDataInfo</code> structure
  *              of data that has been loaded and will be returned
  *              by <code>udata_openChoice()</code> if this function
- *              returns <code>TRUE</code>.
- * @return TRUE if the current data memory is acceptable
+ *              returns <code>true</code>.
+ * @return true if the current data memory is acceptable
  * @stable ICU 2.0
  */
 typedef UBool U_CALLCONV
@@ -200,7 +200,7 @@
  * @see udata_openChoice
  * @stable ICU 2.0
  */
-U_STABLE UDataMemory * U_EXPORT2
+U_CAPI UDataMemory * U_EXPORT2
 udata_open(const char *path, const char *type, const char *name,
            UErrorCode *pErrorCode);
 
@@ -242,7 +242,7 @@
  *             This may be <code>NULL</code> or empty.
  * @param name A string that specifies the name of the data.
  * @param isAcceptable This function is called to verify that loaded data
- *                     is useful for the client code. If it returns FALSE
+ *                     is useful for the client code. If it returns false
  *                     for all data items, then <code>udata_openChoice()</code>
  *                     will return with an error.
  * @param context Arbitrary parameter to be passed into isAcceptable.
@@ -252,7 +252,7 @@
  *         to get a pointer to the actual data.
  * @stable ICU 2.0
  */
-U_STABLE UDataMemory * U_EXPORT2
+U_CAPI UDataMemory * U_EXPORT2
 udata_openChoice(const char *path, const char *type, const char *name,
                  UDataMemoryIsAcceptable *isAcceptable, void *context,
                  UErrorCode *pErrorCode);
@@ -264,7 +264,7 @@
  * @param pData The pointer to data memory object
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udata_close(UDataMemory *pData);
 
 /**
@@ -276,7 +276,7 @@
  * @param pData The pointer to data memory object
  * @stable ICU 2.0
  */
-U_STABLE const void * U_EXPORT2
+U_CAPI const void * U_EXPORT2
 udata_getMemory(UDataMemory *pData);
 
 /**
@@ -297,7 +297,7 @@
  * adjusted and only part of the structure will be filled.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udata_getInfo(UDataMemory *pData, UDataInfo *pInfo);
 
 /**
@@ -306,7 +306,7 @@
  * area in memory.
  *
  * ICU data must be at least 8-aligned, and should be 16-aligned.
- * See http://userguide.icu-project.org/icudata
+ * See https://unicode-org.github.io/icu/userguide/icudata
  *
  * The format of this data is that of the icu common data file, as is
  * generated by the pkgdata tool with mode=common or mode=dll.
@@ -343,7 +343,7 @@
  * @param err outgoing error status <code>U_USING_DEFAULT_WARNING, U_UNSUPPORTED_ERROR</code>
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udata_setCommonData(const void *data, UErrorCode *err);
 
 
@@ -353,7 +353,7 @@
  * pointer.
  *
  * ICU data must be at least 8-aligned, and should be 16-aligned.
- * See http://userguide.icu-project.org/icudata
+ * See https://unicode-org.github.io/icu/userguide/icudata
  *
  * The format of this data is that of the icu common data file, like 'icudt26l.dat'
  * or the corresponding shared library (DLL) file.
@@ -374,7 +374,7 @@
  * @see udata_setCommonData
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udata_setAppData(const char *packageName, const void *data, UErrorCode *err);
 
 /**
@@ -413,7 +413,7 @@
  * @see UDataFileAccess
  * @stable ICU 3.4 
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udata_setFileAccess(UDataFileAccess access, UErrorCode *status);
 
 U_CDECL_END
diff --git a/libicu/cts_headers/unicode/udateintervalformat.h b/libicu/cts_headers/unicode/udateintervalformat.h
index 90fab08..b100ea6 100644
--- a/libicu/cts_headers/unicode/udateintervalformat.h
+++ b/libicu/cts_headers/unicode/udateintervalformat.h
@@ -17,6 +17,7 @@
 #include "unicode/ucal.h"
 #include "unicode/umisc.h"
 #include "unicode/uformattedvalue.h"
+#include "unicode/udisplaycontext.h"
 
 #if U_SHOW_CPLUSPLUS_API
 #include "unicode/localpointer.h"
@@ -117,7 +118,7 @@
  *            or NULL if an error occurred.
  * @stable ICU 4.8
  */
-U_STABLE UDateIntervalFormat* U_EXPORT2
+U_CAPI UDateIntervalFormat* U_EXPORT2
 udtitvfmt_open(const char*  locale,
               const UChar* skeleton,
               int32_t      skeletonLength,
@@ -131,7 +132,7 @@
  *            The UDateIntervalFormat object to close.
  * @stable ICU 4.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udtitvfmt_close(UDateIntervalFormat *formatter);
 
 /**
@@ -241,7 +242,7 @@
  *            output was truncated.
  * @stable ICU 4.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udtitvfmt_format(const UDateIntervalFormat* formatter,
                 UDate           fromDate,
                 UDate           toDate,
@@ -268,7 +269,7 @@
  *            A pointer to a UErrorCode to receive any errors.
  * @draft ICU 67
  */
-U_DRAFT void U_EXPORT2
+U_CAPI void U_EXPORT2
 udtitvfmt_formatToResult(
                 const UDateIntervalFormat* formatter,
                 UDate           fromDate,
@@ -293,7 +294,7 @@
  * @draft ICU 67
  */
 
-U_DRAFT void U_EXPORT2
+U_CAPI void U_EXPORT2
 udtitvfmt_formatCalendarToResult(
                 const UDateIntervalFormat* formatter,
                 UCalendar*      fromCalendar,
@@ -302,6 +303,34 @@
                 UErrorCode*     status);
 #endif /* U_HIDE_DRAFT_API */
 
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Set a particular UDisplayContext value in the formatter, such as
+ * UDISPCTX_CAPITALIZATION_FOR_STANDALONE. This causes the formatted
+ * result to be capitalized appropriately for the context in which
+ * it is intended to be used, considering both the locale and the
+ * type of field at the beginning of the formatted result.
+ * @param formatter The formatter for which to set a UDisplayContext value.
+ * @param value The UDisplayContext value to set.
+ * @param status A pointer to an UErrorCode to receive any errors
+ * @draft ICU 68
+ */
+U_CAPI void U_EXPORT2
+udtitvfmt_setContext(UDateIntervalFormat* formatter, UDisplayContext value, UErrorCode* status);
+
+/**
+ * Get the formatter's UDisplayContext value for the specified UDisplayContextType,
+ * such as UDISPCTX_TYPE_CAPITALIZATION.
+ * @param formatter The formatter to query.
+ * @param type The UDisplayContextType whose value to return
+ * @param status A pointer to an UErrorCode to receive any errors
+ * @return The UDisplayContextValue for the specified type.
+ * @draft ICU 68
+ */
+U_CAPI UDisplayContext U_EXPORT2
+udtitvfmt_getContext(const UDateIntervalFormat* formatter, UDisplayContextType type, UErrorCode* status);
+
+#endif /* U_HIDE_DRAFT_API */
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
 
diff --git a/libicu/cts_headers/unicode/udatpg.h b/libicu/cts_headers/unicode/udatpg.h
index 0c9eed7..5e44cd8 100644
--- a/libicu/cts_headers/unicode/udatpg.h
+++ b/libicu/cts_headers/unicode/udatpg.h
@@ -164,7 +164,7 @@
   * @return a pointer to UDateTimePatternGenerator.
   * @stable ICU 3.8
   */
-U_STABLE UDateTimePatternGenerator * U_EXPORT2
+U_CAPI UDateTimePatternGenerator * U_EXPORT2
 udatpg_open(const char *locale, UErrorCode *pErrorCode);
 
 /**
@@ -174,7 +174,7 @@
   * @return a pointer to UDateTimePatternGenerator.
   * @stable ICU 3.8
   */
-U_STABLE UDateTimePatternGenerator * U_EXPORT2
+U_CAPI UDateTimePatternGenerator * U_EXPORT2
 udatpg_openEmpty(UErrorCode *pErrorCode);
 
 /**
@@ -182,7 +182,7 @@
   * @param dtpg a pointer to UDateTimePatternGenerator.
   * @stable ICU 3.8
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udatpg_close(UDateTimePatternGenerator *dtpg);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -212,7 +212,7 @@
   * @return a pointer to a new UDateTimePatternGenerator.
   * @stable ICU 3.8
  */
-U_STABLE UDateTimePatternGenerator * U_EXPORT2
+U_CAPI UDateTimePatternGenerator * U_EXPORT2
 udatpg_clone(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode);
 
 /**
@@ -238,7 +238,7 @@
  * @return the length of bestPattern.
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_getBestPattern(UDateTimePatternGenerator *dtpg,
                       const UChar *skeleton, int32_t length,
                       UChar *bestPattern, int32_t capacity,
@@ -274,7 +274,7 @@
  * @return the length of bestPattern.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_getBestPatternWithOptions(UDateTimePatternGenerator *dtpg,
                                  const UChar *skeleton, int32_t length,
                                  UDateTimePatternMatchOptions options,
@@ -302,7 +302,7 @@
   * @return the length of skeleton.
   * @stable ICU 3.8
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_getSkeleton(UDateTimePatternGenerator *unusedDtpg,
                    const UChar *pattern, int32_t length,
                    UChar *skeleton, int32_t capacity,
@@ -332,7 +332,7 @@
  * @return the length of baseSkeleton.
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_getBaseSkeleton(UDateTimePatternGenerator *unusedDtpg,
                        const UChar *pattern, int32_t length,
                        UChar *baseSkeleton, int32_t capacity,
@@ -362,7 +362,7 @@
  *                  UDATPG_BASE_CONFLICT or UDATPG_CONFLICT.
  * @stable ICU 3.8
  */
-U_STABLE UDateTimePatternConflict U_EXPORT2
+U_CAPI UDateTimePatternConflict U_EXPORT2
 udatpg_addPattern(UDateTimePatternGenerator *dtpg,
                   const UChar *pattern, int32_t patternLength,
                   UBool override,
@@ -389,7 +389,7 @@
   * @param length the length of value.
   * @stable ICU 3.8
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udatpg_setAppendItemFormat(UDateTimePatternGenerator *dtpg,
                            UDateTimePatternField field,
                            const UChar *value, int32_t length);
@@ -404,7 +404,7 @@
  * @return appendItemFormat for field.
  * @stable ICU 3.8
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 udatpg_getAppendItemFormat(const UDateTimePatternGenerator *dtpg,
                            UDateTimePatternField field,
                            int32_t *pLength);
@@ -422,7 +422,7 @@
    * @param length the length of value.
    * @stable ICU 3.8
    */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udatpg_setAppendItemName(UDateTimePatternGenerator *dtpg,
                          UDateTimePatternField field,
                          const UChar *value, int32_t length);
@@ -439,7 +439,7 @@
  * @see udatpg_getFieldDisplayName
  * @stable ICU 3.8
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 udatpg_getAppendItemName(const UDateTimePatternGenerator *dtpg,
                          UDateTimePatternField field,
                          int32_t *pLength);
@@ -469,7 +469,7 @@
  *         truncated result.
  * @stable ICU 61
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_getFieldDisplayName(const UDateTimePatternGenerator *dtpg,
                            UDateTimePatternField field,
                            UDateTimePGDisplayWidth width,
@@ -499,7 +499,7 @@
  * @param length the length of dtFormat.
  * @stable ICU 3.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udatpg_setDateTimeFormat(const UDateTimePatternGenerator *dtpg,
                          const UChar *dtFormat, int32_t length);
 
@@ -510,7 +510,7 @@
  * @return dateTimeFormat.
  * @stable ICU 3.8
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 udatpg_getDateTimeFormat(const UDateTimePatternGenerator *dtpg,
                          int32_t *pLength);
 
@@ -527,7 +527,7 @@
  * @param length the length of decimal.
  * @stable ICU 3.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 udatpg_setDecimal(UDateTimePatternGenerator *dtpg,
                   const UChar *decimal, int32_t length);
 
@@ -539,7 +539,7 @@
  * @return corresponding to the decimal point.
  * @stable ICU 3.8
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 udatpg_getDecimal(const UDateTimePatternGenerator *dtpg,
                   int32_t *pLength);
 
@@ -568,7 +568,7 @@
  * @return the length of dest.
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_replaceFieldTypes(UDateTimePatternGenerator *dtpg,
                          const UChar *pattern, int32_t patternLength,
                          const UChar *skeleton, int32_t skeletonLength,
@@ -605,7 +605,7 @@
  * @return the length of dest.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 udatpg_replaceFieldTypesWithOptions(UDateTimePatternGenerator *dtpg,
                                     const UChar *pattern, int32_t patternLength,
                                     const UChar *skeleton, int32_t skeletonLength,
@@ -624,7 +624,7 @@
  *         The caller must close the object.
  * @stable ICU 3.8
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 udatpg_openSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode);
 
 /**
@@ -637,7 +637,7 @@
  *             The caller must close the object.
  * @stable ICU 3.8
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 udatpg_openBaseSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode);
 
 /**
@@ -650,7 +650,7 @@
  * @return pattern corresponding to a given skeleton.
  * @stable ICU 3.8
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 udatpg_getPatternForSkeleton(const UDateTimePatternGenerator *dtpg,
                              const UChar *skeleton, int32_t skeletonLength,
                              int32_t *pLength);
@@ -671,7 +671,7 @@
  * @return the default hour cycle.
  * @draft ICU 67
  */
-U_DRAFT UDateFormatHourCycle U_EXPORT2
+U_CAPI UDateFormatHourCycle U_EXPORT2
 udatpg_getDefaultHourCycle(const UDateTimePatternGenerator *dtpg, UErrorCode* pErrorCode);
 #endif  /* U_HIDE_DRAFT_API */
 
diff --git a/libicu/cts_headers/unicode/udisplaycontext.h b/libicu/cts_headers/unicode/udisplaycontext.h
index 398481c..6e14217 100644
--- a/libicu/cts_headers/unicode/udisplaycontext.h
+++ b/libicu/cts_headers/unicode/udisplaycontext.h
@@ -156,7 +156,8 @@
     UDISPCTX_SUBSTITUTE = (UDISPCTX_TYPE_SUBSTITUTE_HANDLING<<8) + 0,
     /**
      * A possible setting for SUBSTITUTE_HANDLING:
-     * Returns a null value when no data is available.
+     * Returns a null value with error code set to U_ILLEGAL_ARGUMENT_ERROR when no
+     * data is available.
      * @stable ICU 58
      */
     UDISPCTX_NO_SUBSTITUTE = (UDISPCTX_TYPE_SUBSTITUTE_HANDLING<<8) + 1
diff --git a/libicu/cts_headers/unicode/uenum.h b/libicu/cts_headers/unicode/uenum.h
index f6191d9..d9c893e 100644
--- a/libicu/cts_headers/unicode/uenum.h
+++ b/libicu/cts_headers/unicode/uenum.h
@@ -50,7 +50,7 @@
  * @param en UEnumeration structure pointer
  * @stable ICU 2.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uenum_close(UEnumeration* en);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -86,7 +86,7 @@
  * @return number of elements in the iterator
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uenum_count(UEnumeration* en, UErrorCode* status);
 
 /**
@@ -110,7 +110,7 @@
  *         traversed, returns NULL.
  * @stable ICU 2.2
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 uenum_unext(UEnumeration* en,
             int32_t* resultLength,
             UErrorCode* status);
@@ -143,7 +143,7 @@
  *         traversed, returns NULL.
  * @stable ICU 2.2
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uenum_next(UEnumeration* en,
            int32_t* resultLength,
            UErrorCode* status);
@@ -157,7 +157,7 @@
  *               the iterator is out of sync with its service.  
  * @stable ICU 2.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uenum_reset(UEnumeration* en, UErrorCode* status);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -171,7 +171,7 @@
  * @return a UEnumeration wrapping the adopted StringEnumeration.
  * @stable ICU 4.2
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uenum_openFromStringEnumeration(icu::StringEnumeration* adopted, UErrorCode* ec);
 
 #endif
@@ -187,7 +187,7 @@
  * @see uenum_close
  * @stable ICU 50
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uenum_openUCharStringsEnumeration(const UChar* const strings[], int32_t count,
                                  UErrorCode* ec);
 
@@ -202,7 +202,7 @@
  * @see uenum_close
  * @stable ICU 50
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uenum_openCharStringsEnumeration(const char* const strings[], int32_t count,
                                  UErrorCode* ec);
 
diff --git a/libicu/cts_headers/unicode/ufieldpositer.h b/libicu/cts_headers/unicode/ufieldpositer.h
index ba795a1..83df184 100644
--- a/libicu/cts_headers/unicode/ufieldpositer.h
+++ b/libicu/cts_headers/unicode/ufieldpositer.h
@@ -54,7 +54,7 @@
  *          or NULL if an error occurred.
  * @stable ICU 55
  */
-U_STABLE UFieldPositionIterator* U_EXPORT2
+U_CAPI UFieldPositionIterator* U_EXPORT2
 ufieldpositer_open(UErrorCode* status);
 
 /**
@@ -63,7 +63,7 @@
  *          A pointer to the UFieldPositionIterator object to close.
  * @stable ICU 55
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ufieldpositer_close(UFieldPositionIterator *fpositer);
 
 
@@ -114,7 +114,7 @@
  *
  * @stable ICU 55
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ufieldpositer_next(UFieldPositionIterator *fpositer,
                    int32_t *beginIndex, int32_t *endIndex);
 
diff --git a/libicu/cts_headers/unicode/uformattable.h b/libicu/cts_headers/unicode/uformattable.h
index 6afd949..6b8bee1 100644
--- a/libicu/cts_headers/unicode/uformattable.h
+++ b/libicu/cts_headers/unicode/uformattable.h
@@ -81,7 +81,7 @@
  * @see ufmt_close
  * @see icu::Formattable::Formattable()
  */
-U_STABLE UFormattable* U_EXPORT2
+U_CAPI UFormattable* U_EXPORT2
 ufmt_open(UErrorCode* status);
 
 /**
@@ -90,7 +90,7 @@
  * @stable ICU 52
  * @see ufmt_open
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ufmt_close(UFormattable* fmt);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -122,7 +122,7 @@
  * @see icu::Formattable::getType() const
  * @stable ICU 52
  */
-U_STABLE UFormattableType U_EXPORT2
+U_CAPI UFormattableType U_EXPORT2
 ufmt_getType(const UFormattable* fmt, UErrorCode *status);
 
 /**
@@ -133,7 +133,7 @@
  * @see icu::Formattable::isNumeric() const
  * @stable ICU 52
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ufmt_isNumeric(const UFormattable* fmt);
 
 /**
@@ -146,7 +146,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getDate(UErrorCode&) const
  */
-U_STABLE UDate U_EXPORT2
+U_CAPI UDate U_EXPORT2
 ufmt_getDate(const UFormattable* fmt, UErrorCode *status);
 
 /**
@@ -164,7 +164,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getDouble(UErrorCode&) const
  */
-U_STABLE double U_EXPORT2
+U_CAPI double U_EXPORT2
 ufmt_getDouble(UFormattable* fmt, UErrorCode *status);
 
 /**
@@ -185,7 +185,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getLong(UErrorCode&) const
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ufmt_getLong(UFormattable* fmt, UErrorCode *status);
 
 
@@ -206,7 +206,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getInt64(UErrorCode&) const
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 ufmt_getInt64(UFormattable* fmt, UErrorCode *status);
 
 /**
@@ -219,7 +219,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getObject() const
  */
-U_STABLE const void *U_EXPORT2
+U_CAPI const void *U_EXPORT2
 ufmt_getObject(const UFormattable* fmt, UErrorCode *status);
 
 /**
@@ -234,7 +234,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getString(UnicodeString&)const
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ufmt_getUChars(UFormattable* fmt, int32_t *len, UErrorCode *status);
 
 /**
@@ -245,7 +245,7 @@
  * @stable ICU 52
  * @see ufmt_getArrayItemByIndex
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ufmt_getArrayLength(const UFormattable* fmt, UErrorCode *status);
 
 /**
@@ -257,7 +257,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getArray(int32_t&, UErrorCode&) const
  */
-U_STABLE UFormattable * U_EXPORT2
+U_CAPI UFormattable * U_EXPORT2
 ufmt_getArrayItemByIndex(UFormattable* fmt, int32_t n, UErrorCode *status);
 
 /**
@@ -282,7 +282,7 @@
  * @stable ICU 52
  * @see icu::Formattable::getDecimalNumber(UErrorCode&)
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ufmt_getDecNumChars(UFormattable *fmt, int32_t *len, UErrorCode *status);
 
 #endif
diff --git a/libicu/cts_headers/unicode/uformattedvalue.h b/libicu/cts_headers/unicode/uformattedvalue.h
index 07f4281..c358629 100644
--- a/libicu/cts_headers/unicode/uformattedvalue.h
+++ b/libicu/cts_headers/unicode/uformattedvalue.h
@@ -120,7 +120,7 @@
  * @return The new object, or NULL if an error occurs.
  * @stable ICU 64
  */
-U_STABLE UConstrainedFieldPosition* U_EXPORT2
+U_CAPI UConstrainedFieldPosition* U_EXPORT2
 ucfpos_open(UErrorCode* ec);
 
 
@@ -133,7 +133,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_reset(
     UConstrainedFieldPosition* ucfpos,
     UErrorCode* ec);
@@ -145,7 +145,7 @@
  * @param ucfpos The instance of UConstrainedFieldPosition.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_close(UConstrainedFieldPosition* ucfpos);
 
 
@@ -174,7 +174,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_constrainCategory(
     UConstrainedFieldPosition* ucfpos,
     int32_t category,
@@ -207,7 +207,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_constrainField(
     UConstrainedFieldPosition* ucfpos,
     int32_t category,
@@ -220,14 +220,14 @@
  *
  * If a category or field constraint was set, this function returns the constrained
  * category. Otherwise, the return value is well-defined only after
- * ufmtval_nextPosition returns TRUE.
+ * ufmtval_nextPosition returns true.
  *
  * @param ucfpos The instance of UConstrainedFieldPosition.
  * @param ec Set if an error occurs.
  * @return The field category saved in the instance.
  * @stable ICU 64
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucfpos_getCategory(
     const UConstrainedFieldPosition* ucfpos,
     UErrorCode* ec);
@@ -238,14 +238,14 @@
  *
  * If a field constraint was set, this function returns the constrained
  * field. Otherwise, the return value is well-defined only after
- * ufmtval_nextPosition returns TRUE.
+ * ufmtval_nextPosition returns true.
  *
  * @param ucfpos The instance of UConstrainedFieldPosition.
  * @param ec Set if an error occurs.
  * @return The field saved in the instance.
  * @stable ICU 64
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ucfpos_getField(
     const UConstrainedFieldPosition* ucfpos,
     UErrorCode* ec);
@@ -254,7 +254,7 @@
 /**
  * Gets the INCLUSIVE start and EXCLUSIVE end index stored for the current position.
  *
- * The output values are well-defined only after ufmtval_nextPosition returns TRUE.
+ * The output values are well-defined only after ufmtval_nextPosition returns true.
  *
  * @param ucfpos The instance of UConstrainedFieldPosition.
  * @param pStart Set to the start index saved in the instance. Ignored if nullptr.
@@ -262,7 +262,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_getIndexes(
     const UConstrainedFieldPosition* ucfpos,
     int32_t* pStart,
@@ -282,7 +282,7 @@
  * @return The current iteration context from ucfpos_setInt64IterationContext.
  * @stable ICU 64
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 ucfpos_getInt64IterationContext(
     const UConstrainedFieldPosition* ucfpos,
     UErrorCode* ec);
@@ -298,7 +298,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_setInt64IterationContext(
     UConstrainedFieldPosition* ucfpos,
     int64_t context,
@@ -317,7 +317,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ucfpos_matchesField(
     const UConstrainedFieldPosition* ucfpos,
     int32_t category,
@@ -341,7 +341,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ucfpos_setState(
     UConstrainedFieldPosition* ucfpos,
     int32_t category,
@@ -374,7 +374,7 @@
  * @return A NUL-terminated char16 string owned by the UFormattedValue.
  * @stable ICU 64
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ufmtval_getString(
     const UFormattedValue* ufmtval,
     int32_t* pLength,
@@ -401,10 +401,10 @@
  *         see ucfpos_constrainCategory
  *         and ucfpos_constrainField.
  * @param ec Set if an error occurs.
- * @return TRUE if another position was found; FALSE otherwise.
+ * @return true if another position was found; false otherwise.
  * @stable ICU 64
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ufmtval_nextPosition(
     const UFormattedValue* ufmtval,
     UConstrainedFieldPosition* ucfpos,
diff --git a/libicu/cts_headers/unicode/ugender.h b/libicu/cts_headers/unicode/ugender.h
index 6ce006e..7093686 100644
--- a/libicu/cts_headers/unicode/ugender.h
+++ b/libicu/cts_headers/unicode/ugender.h
@@ -65,7 +65,7 @@
  * @return A UGenderInfo for the specified locale, or NULL if an error occurred.
  * @stable ICU 50
  */
-U_STABLE const UGenderInfo* U_EXPORT2
+U_CAPI const UGenderInfo* U_EXPORT2
 ugender_getInstance(const char *locale, UErrorCode *status);
 
 
@@ -78,7 +78,7 @@
  * @return The gender of the list.
  * @stable ICU 50
  */
-U_STABLE UGender U_EXPORT2
+U_CAPI UGender U_EXPORT2
 ugender_getListGender(const UGenderInfo* genderInfo, const UGender *genders, int32_t size, UErrorCode *status);
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/libicu/cts_headers/unicode/uidna.h b/libicu/cts_headers/unicode/uidna.h
index e789dca..24a81ce 100644
--- a/libicu/cts_headers/unicode/uidna.h
+++ b/libicu/cts_headers/unicode/uidna.h
@@ -23,6 +23,7 @@
 
 #if !UCONFIG_NO_IDNA
 
+#include <stdbool.h>
 #include "unicode/parseerr.h"
 
 #if U_SHOW_CPLUSPLUS_API
@@ -141,7 +142,7 @@
  * @return the UTS #46 UIDNA instance, if successful
  * @stable ICU 4.6
  */
-U_STABLE UIDNA * U_EXPORT2
+U_CAPI UIDNA * U_EXPORT2
 uidna_openUTS46(uint32_t options, UErrorCode *pErrorCode);
 
 /**
@@ -149,7 +150,7 @@
  * @param idna UIDNA instance to be closed
  * @stable ICU 4.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uidna_close(UIDNA *idna);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -185,7 +186,7 @@
     /** sizeof(UIDNAInfo) @stable ICU 4.6 */
     int16_t size;
     /**
-     * Set to TRUE if transitional and nontransitional processing produce different results.
+     * Set to true if transitional and nontransitional processing produce different results.
      * For details see C++ IDNAInfo::isTransitionalDifferent().
      * @stable ICU 4.6
      */
@@ -207,7 +208,7 @@
  */
 #define UIDNA_INFO_INITIALIZER { \
     (int16_t)sizeof(UIDNAInfo), \
-    FALSE, FALSE, \
+    false, false, \
     0, 0, 0 }
 
 /**
@@ -233,7 +234,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_labelToASCII(const UIDNA *idna,
                    const UChar *label, int32_t length,
                    UChar *dest, int32_t capacity,
@@ -260,7 +261,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_labelToUnicode(const UIDNA *idna,
                      const UChar *label, int32_t length,
                      UChar *dest, int32_t capacity,
@@ -289,7 +290,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_nameToASCII(const UIDNA *idna,
                   const UChar *name, int32_t length,
                   UChar *dest, int32_t capacity,
@@ -316,7 +317,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_nameToUnicode(const UIDNA *idna,
                     const UChar *name, int32_t length,
                     UChar *dest, int32_t capacity,
@@ -341,7 +342,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_labelToASCII_UTF8(const UIDNA *idna,
                         const char *label, int32_t length,
                         char *dest, int32_t capacity,
@@ -364,7 +365,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_labelToUnicodeUTF8(const UIDNA *idna,
                          const char *label, int32_t length,
                          char *dest, int32_t capacity,
@@ -387,7 +388,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_nameToASCII_UTF8(const UIDNA *idna,
                        const char *name, int32_t length,
                        char *dest, int32_t capacity,
@@ -410,7 +411,7 @@
  * @return destination string length
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uidna_nameToUnicodeUTF8(const UIDNA *idna,
                         const char *name, int32_t length,
                         char *dest, int32_t capacity,
diff --git a/libicu/cts_headers/unicode/uiter.h b/libicu/cts_headers/unicode/uiter.h
index 11ad75a..be232c7 100644
--- a/libicu/cts_headers/unicode/uiter.h
+++ b/libicu/cts_headers/unicode/uiter.h
@@ -492,7 +492,7 @@
  * @see UnicodeString::char32At()
  * @stable ICU 2.1
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 uiter_current32(UCharIterator *iter);
 
 /**
@@ -509,7 +509,7 @@
  * @see U16_NEXT
  * @stable ICU 2.1
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 uiter_next32(UCharIterator *iter);
 
 /**
@@ -526,7 +526,7 @@
  * @see U16_PREV
  * @stable ICU 2.1
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 uiter_previous32(UCharIterator *iter);
 
 /**
@@ -547,7 +547,7 @@
  * @see UITER_NO_STATE
  * @stable ICU 2.6
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 uiter_getState(const UCharIterator *iter);
 
 /**
@@ -565,7 +565,7 @@
  * @see UCharIteratorSetState
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uiter_setState(UCharIterator *iter, uint32_t state, UErrorCode *pErrorCode);
 
 /**
@@ -590,7 +590,7 @@
  * @see UCharIterator
  * @stable ICU 2.1
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uiter_setString(UCharIterator *iter, const UChar *s, int32_t length);
 
 /**
@@ -613,7 +613,7 @@
  * @see uiter_setString
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uiter_setUTF16BE(UCharIterator *iter, const char *s, int32_t length);
 
 /**
@@ -649,7 +649,7 @@
  * @see UCharIterator
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uiter_setUTF8(UCharIterator *iter, const char *s, int32_t length);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -674,7 +674,7 @@
  * @see UCharIterator
  * @stable ICU 2.1
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uiter_setCharacterIterator(UCharIterator *iter, icu::CharacterIterator *charIter);
 
 /**
@@ -699,7 +699,7 @@
  * @see UCharIterator
  * @stable ICU 2.1
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uiter_setReplaceable(UCharIterator *iter, const icu::Replaceable *rep);
 
 #endif
diff --git a/libicu/cts_headers/unicode/uldnames.h b/libicu/cts_headers/unicode/uldnames.h
index 498668e..47b047e 100644
--- a/libicu/cts_headers/unicode/uldnames.h
+++ b/libicu/cts_headers/unicode/uldnames.h
@@ -68,7 +68,7 @@
  * @param pErrorCode the status code
  * @stable ICU 4.4
  */
-U_STABLE ULocaleDisplayNames * U_EXPORT2
+U_CAPI ULocaleDisplayNames * U_EXPORT2
 uldn_open(const char * locale,
           UDialectHandling dialectHandling,
           UErrorCode *pErrorCode);
@@ -78,7 +78,7 @@
  * @param ldn the ULocaleDisplayNames instance to be closed
  * @stable ICU 4.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uldn_close(ULocaleDisplayNames *ldn);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -109,7 +109,7 @@
  * @return the display locale 
  * @stable ICU 4.4
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 uldn_getLocale(const ULocaleDisplayNames *ldn);
 
 /**
@@ -118,7 +118,7 @@
  * @return the dialect handling enum
  * @stable ICU 4.4
  */
-U_STABLE UDialectHandling U_EXPORT2
+U_CAPI UDialectHandling U_EXPORT2
 uldn_getDialectHandling(const ULocaleDisplayNames *ldn);
 
 /* names for entire locales */
@@ -134,7 +134,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_localeDisplayName(const ULocaleDisplayNames *ldn,
                        const char *locale,
                        UChar *result,
@@ -154,7 +154,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_languageDisplayName(const ULocaleDisplayNames *ldn,
                          const char *lang,
                          UChar *result,
@@ -172,7 +172,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_scriptDisplayName(const ULocaleDisplayNames *ldn,
                        const char *script,
                        UChar *result,
@@ -190,7 +190,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_scriptCodeDisplayName(const ULocaleDisplayNames *ldn,
                            UScriptCode scriptCode,
                            UChar *result,
@@ -208,7 +208,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_regionDisplayName(const ULocaleDisplayNames *ldn,
                        const char *region,
                        UChar *result,
@@ -226,7 +226,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_variantDisplayName(const ULocaleDisplayNames *ldn,
                         const char *variant,
                         UChar *result,
@@ -244,7 +244,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_keyDisplayName(const ULocaleDisplayNames *ldn,
                     const char *key,
                     UChar *result,
@@ -263,7 +263,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_keyValueDisplayName(const ULocaleDisplayNames *ldn,
                          const char *key,
                          const char *value,
@@ -285,7 +285,7 @@
 * @return a ULocaleDisplayNames instance 
 * @stable ICU 51
 */
-U_STABLE ULocaleDisplayNames * U_EXPORT2
+U_CAPI ULocaleDisplayNames * U_EXPORT2
 uldn_openForContext(const char * locale, UDisplayContext *contexts,
                     int32_t length, UErrorCode *pErrorCode);
 
@@ -299,7 +299,7 @@
 * @return the UDisplayContextValue for the specified type.
 * @stable ICU 51
 */
-U_STABLE UDisplayContext U_EXPORT2
+U_CAPI UDisplayContext U_EXPORT2
 uldn_getContext(const ULocaleDisplayNames *ldn, UDisplayContextType type,
                 UErrorCode *pErrorCode);
 
diff --git a/libicu/cts_headers/unicode/ulistformatter.h b/libicu/cts_headers/unicode/ulistformatter.h
index 1431753..8334c78 100644
--- a/libicu/cts_headers/unicode/ulistformatter.h
+++ b/libicu/cts_headers/unicode/ulistformatter.h
@@ -62,17 +62,16 @@
     ULISTFMT_ELEMENT_FIELD
 } UListFormatterField;
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * Type of meaning expressed by the list.
  *
- * @draft ICU 67
+ * @stable ICU 67
  */
 typedef enum UListFormatterType {
     /**
      * Conjunction formatting, e.g. "Alice, Bob, Charlie, and Delta".
      *
-     * @draft ICU 67
+     * @stable ICU 67
      */
     ULISTFMT_TYPE_AND,
 
@@ -80,14 +79,14 @@
      * Disjunction (or alternative, or simply one of) formatting, e.g.
      * "Alice, Bob, Charlie, or Delta".
      *
-     * @draft ICU 67
+     * @stable ICU 67
      */
     ULISTFMT_TYPE_OR,
 
     /**
      * Formatting of a list of values with units, e.g. "5 pounds, 12 ounces".
      *
-     * @draft ICU 67
+     * @stable ICU 67
      */
     ULISTFMT_TYPE_UNITS
 } UListFormatterType;
@@ -95,29 +94,28 @@
 /**
  * Verbosity level of the list patterns.
  *
- * @draft ICU 67
+ * @stable ICU 67
  */
 typedef enum UListFormatterWidth {
     /**
      * Use list formatting with full words (no abbreviations) when possible.
      *
-     * @draft ICU 67
+     * @stable ICU 67
      */
     ULISTFMT_WIDTH_WIDE,
 
     /**
      * Use list formatting of typical length.
-     * @draft ICU 67
+     * @stable ICU 67
      */
     ULISTFMT_WIDTH_SHORT,
 
     /**
      * Use list formatting of the shortest possible length.
-     * @draft ICU 67
+     * @stable ICU 67
      */
     ULISTFMT_WIDTH_NARROW,
 } UListFormatterWidth;
-#endif /* U_HIDE_DRAFT_API */
 
 /**
  * Open a new UListFormatter object using the rules for a given locale.
@@ -141,7 +139,6 @@
 ulistfmt_open(const char*  locale,
               UErrorCode*  status);
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * Open a new UListFormatter object appropriate for the given locale, list type,
  * and style.
@@ -162,12 +159,11 @@
  * @return
  *            A pointer to a UListFormatter object for the specified locale,
  *            or NULL if an error occurred.
- * @draft ICU 67
+ * @stable ICU 67
  */
-U_DRAFT UListFormatter* U_EXPORT2
+U_CAPI UListFormatter* U_EXPORT2
 ulistfmt_openForType(const char*  locale, UListFormatterType type,
                      UListFormatterWidth width, UErrorCode*  status);
-#endif /* U_HIDE_DRAFT_API */
 
 /**
  * Close a UListFormatter object. Once closed it may no longer be used.
diff --git a/libicu/cts_headers/unicode/uloc.h b/libicu/cts_headers/unicode/uloc.h
index d877ce4..3addb84 100644
--- a/libicu/cts_headers/unicode/uloc.h
+++ b/libicu/cts_headers/unicode/uloc.h
@@ -371,7 +371,7 @@
  * @system
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_getDefault(void);
 
 /**
@@ -391,7 +391,7 @@
  * @system
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uloc_setDefault(const char* localeID,
         UErrorCode*       status);
 #endif  /* U_HIDE_SYSTEM_API */
@@ -408,7 +408,7 @@
  * than languageCapacity, the returned language code will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getLanguage(const char*    localeID,
          char* language,
          int32_t languageCapacity,
@@ -426,7 +426,7 @@
  * than scriptCapacity, the returned language code will be truncated.  
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getScript(const char*    localeID,
          char* script,
          int32_t scriptCapacity,
@@ -444,7 +444,7 @@
  * than countryCapacity, the returned country code will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getCountry(const char*    localeID,
         char* country,
         int32_t countryCapacity,
@@ -462,7 +462,7 @@
  * than variantCapacity, the returned variant code will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getVariant(const char*    localeID,
         char* variant,
         int32_t variantCapacity,
@@ -485,7 +485,7 @@
  * than nameCapacity, the returned full name will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getName(const char*    localeID,
          char* name,
          int32_t nameCapacity,
@@ -508,7 +508,7 @@
  * than nameCapacity, the returned full name will be truncated.  
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_canonicalize(const char*    localeID,
          char* name,
          int32_t nameCapacity,
@@ -521,7 +521,7 @@
  * @return language the ISO language code for localeID
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_getISO3Language(const char* localeID);
 
 
@@ -532,7 +532,7 @@
  * @return country the ISO country code for localeID
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_getISO3Country(const char* localeID);
 
 /**
@@ -546,26 +546,31 @@
  * @return country the Win32 LCID for localeID
  * @stable ICU 2.0
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 uloc_getLCID(const char* localeID);
 
 /**
  * Gets the language name suitable for display for the specified locale.
  *
  * @param locale the locale to get the ISO language code with
- * @param displayLocale Specifies the locale to be used to display the name.  In other words,
- *                 if the locale's language code is "en", passing Locale::getFrench() for
- *                 inLocale would result in "Anglais", while passing Locale::getGerman()
- *                 for inLocale would result in "Englisch".
+ * @param displayLocale Specifies the locale to be used to display the name. In
+ *                 other words, if the locale's language code is "en", passing
+ *                 Locale::getFrench() for inLocale would result in "Anglais",
+ *                 while passing Locale::getGerman() for inLocale would result
+ *                 in "Englisch".
  * @param language the displayable language code for localeID
- * @param languageCapacity the size of the language buffer to store the  
- * displayable language code with
- * @param status error information if retrieving the displayable language code failed
- * @return the actual buffer size needed for the displayable language code.  If it's greater 
- * than languageCapacity, the returned language code will be truncated.  
+ * @param languageCapacity the size of the language buffer to store the
+ *                 displayable language code with.
+ * @param status error information if retrieving the displayable language code
+ *                 failed. U_USING_DEFAULT_WARNING indicates that no data was
+ *                 found from the locale resources and a case canonicalized
+ *                 language code is placed into language as fallback.
+ * @return the actual buffer size needed for the displayable language code. If
+ *                 it's greater than languageCapacity, the returned language
+ *                 code will be truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayLanguage(const char* locale,
             const char* displayLocale,
             UChar* language,
@@ -575,20 +580,26 @@
 /**
  * Gets the script name suitable for display for the specified locale.
  *
- * @param locale the locale to get the displayable script code with. NULL may be used to specify the default.
- * @param displayLocale Specifies the locale to be used to display the name.  In other words,
- *                 if the locale's language code is "en", passing Locale::getFrench() for
- *                 inLocale would result in "", while passing Locale::getGerman()
- *                 for inLocale would result in "". NULL may be used to specify the default.
- * @param script the displayable script for the localeID
- * @param scriptCapacity the size of the script buffer to store the  
- * displayable script code with
- * @param status error information if retrieving the displayable script code failed
- * @return the actual buffer size needed for the displayable script code.  If it's greater 
- * than scriptCapacity, the returned displayable script code will be truncated.  
+ * @param locale the locale to get the displayable script code with. NULL may be
+ *                 used to specify the default.
+ * @param displayLocale Specifies the locale to be used to display the name. In
+ *                 other words, if the locale's language code is "en", passing
+ *                 Locale::getFrench() for inLocale would result in "", while
+ *                 passing Locale::getGerman() for inLocale would result in "".
+ *                 NULL may be used to specify the default.
+ * @param script the displayable script for the localeID.
+ * @param scriptCapacity the size of the script buffer to store the displayable
+ *                 script code with.
+ * @param status error information if retrieving the displayable script code
+ *                 failed. U_USING_DEFAULT_WARNING indicates that no data was
+ *                 found from the locale resources and a case canonicalized
+ *                 script code is placed into script as fallback.
+ * @return the actual buffer size needed for the displayable script code. If
+ *                 it's greater than scriptCapacity, the returned displayable
+ *                 script code will be truncated.
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayScript(const char* locale,
             const char* displayLocale,
             UChar* script,
@@ -597,23 +608,30 @@
 
 /**
  * Gets the country name suitable for display for the specified locale.
- * Warning: this is for the region part of a valid locale ID; it cannot just be the region code (like "FR").
- * To get the display name for a region alone, or for other options, use ULocaleDisplayNames instead.
+ * Warning: this is for the region part of a valid locale ID; it cannot just be
+ * the region code (like "FR"). To get the display name for a region alone, or
+ * for other options, use ULocaleDisplayNames instead.
  *
- * @param locale the locale to get the displayable country code with. NULL may be used to specify the default.
- * @param displayLocale Specifies the locale to be used to display the name.  In other words,
- *                 if the locale's language code is "en", passing Locale::getFrench() for
- *                 inLocale would result in "Anglais", while passing Locale::getGerman()
- *                 for inLocale would result in "Englisch". NULL may be used to specify the default.
- * @param country the displayable country code for localeID
- * @param countryCapacity the size of the country buffer to store the  
- * displayable country code with
- * @param status error information if retrieving the displayable country code failed
- * @return the actual buffer size needed for the displayable country code.  If it's greater 
- * than countryCapacity, the returned displayable country code will be truncated.  
+ * @param locale the locale to get the displayable country code with. NULL may
+ *                 be used to specify the default.
+ * @param displayLocale Specifies the locale to be used to display the name. In
+ *                 other words, if the locale's language code is "en", passing
+ *                 Locale::getFrench() for inLocale would result in "Anglais",
+ *                 while passing Locale::getGerman() for inLocale would result
+ *                 in "Englisch". NULL may be used to specify the default.
+ * @param country the displayable country code for localeID.
+ * @param countryCapacity the size of the country buffer to store the
+ *                 displayable country code with.
+ * @param status error information if retrieving the displayable country code
+ *                 failed. U_USING_DEFAULT_WARNING indicates that no data was
+ *                 found from the locale resources and a case canonicalized
+ *                 country code is placed into country as fallback.
+ * @return the actual buffer size needed for the displayable country code. If
+ *                 it's greater than countryCapacity, the returned displayable
+ *                 country code will be truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayCountry(const char* locale,
                        const char* displayLocale,
                        UChar* country,
@@ -624,20 +642,26 @@
 /**
  * Gets the variant name suitable for display for the specified locale.
  *
- * @param locale the locale to get the displayable variant code with. NULL may be used to specify the default.
- * @param displayLocale Specifies the locale to be used to display the name.  In other words,
- *                 if the locale's language code is "en", passing Locale::getFrench() for
- *                 inLocale would result in "Anglais", while passing Locale::getGerman()
- *                 for inLocale would result in "Englisch". NULL may be used to specify the default.
- * @param variant the displayable variant code for localeID
- * @param variantCapacity the size of the variant buffer to store the 
- * displayable variant code with
- * @param status error information if retrieving the displayable variant code failed
- * @return the actual buffer size needed for the displayable variant code.  If it's greater 
- * than variantCapacity, the returned displayable variant code will be truncated.  
+ * @param locale the locale to get the displayable variant code with. NULL may
+ *                 be used to specify the default.
+ * @param displayLocale Specifies the locale to be used to display the name. In
+ *                 other words, if the locale's language code is "en", passing
+ *                 Locale::getFrench() for inLocale would result in "Anglais",
+ *                 while passing Locale::getGerman() for inLocale would result
+ *                 in "Englisch". NULL may be used to specify the default.
+ * @param variant the displayable variant code for localeID.
+ * @param variantCapacity the size of the variant buffer to store the
+ *                 displayable variant code with.
+ * @param status error information if retrieving the displayable variant code
+ *                 failed. U_USING_DEFAULT_WARNING indicates that no data was
+ *                 found from the locale resources and a case canonicalized
+ *                 variant code is placed into variant as fallback.
+ * @return the actual buffer size needed for the displayable variant code. If
+ *                 it's greater than variantCapacity, the returned displayable
+ *                 variant code will be truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayVariant(const char* locale,
                        const char* displayLocale,
                        UChar* variant,
@@ -645,9 +669,9 @@
                        UErrorCode* status);
 
 /**
- * Gets the keyword name suitable for display for the specified locale.
- * E.g: for the locale string de_DE\@collation=PHONEBOOK, this API gets the display 
- * string for the keyword collation. 
+ * Gets the keyword name suitable for display for the specified locale. E.g:
+ * for the locale string de_DE\@collation=PHONEBOOK, this API gets the display
+ * string for the keyword collation.
  * Usage:
  * <code>
  *    UErrorCode status = U_ZERO_ERROR;
@@ -676,15 +700,17 @@
  *                          for inLocale would result in "Englisch". NULL may be used to specify the default.
  * @param dest              the buffer to which the displayable keyword should be written.
  * @param destCapacity      The size of the buffer (number of UChars). If it is 0, then
- *                          dest may be NULL and the function will only return the length of the 
+ *                          dest may be NULL and the function will only return the length of the
  *                          result without writing any of the result string (pre-flighting).
- * @param status            error information if retrieving the displayable string failed. 
+ * @param status            error information if retrieving the displayable string failed.
  *                          Should not be NULL and should not indicate failure on entry.
- * @return the actual buffer size needed for the displayable variant code.  
+ *                          U_USING_DEFAULT_WARNING indicates that no data was found from the locale
+ *                          resources and the keyword is placed into dest as fallback.
+ * @return the actual buffer size needed for the displayable variant code.
  * @see #uloc_openKeywords
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayKeyword(const char* keyword,
                        const char* displayLocale,
                        UChar* dest,
@@ -692,7 +718,7 @@
                        UErrorCode* status);
 /**
  * Gets the value of the keyword suitable for display for the specified locale.
- * E.g: for the locale string de_DE\@collation=PHONEBOOK, this API gets the display 
+ * E.g: for the locale string de_DE\@collation=PHONEBOOK, this API gets the display
  * string for PHONEBOOK, in the display locale, when "collation" is specified as the keyword.
  *
  * @param locale            The locale to get the displayable variant code with. NULL may be used to specify the default.
@@ -703,14 +729,16 @@
  *                          for inLocale would result in "Englisch". NULL may be used to specify the default.
  * @param dest              the buffer to which the displayable keyword should be written.
  * @param destCapacity      The size of the buffer (number of UChars). If it is 0, then
- *                          dest may be NULL and the function will only return the length of the 
+ *                          dest may be NULL and the function will only return the length of the
  *                          result without writing any of the result string (pre-flighting).
- * @param status            error information if retrieving the displayable string failed. 
+ * @param status            error information if retrieving the displayable string failed.
  *                          Should not be NULL and must not indicate failure on entry.
- * @return the actual buffer size needed for the displayable variant code.  
+ *                          U_USING_DEFAULT_WARNING indicates that no data was found from the locale
+ *                          resources and the value of the keyword is placed into dest as fallback.
+ * @return the actual buffer size needed for the displayable variant code.
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayKeywordValue(   const char* locale,
                                const char* keyword,
                                const char* displayLocale,
@@ -733,7 +761,7 @@
  * than maxResultSize, the returned displayable name will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayName(const char* localeID,
             const char* inLocaleID,
             UChar* result,
@@ -757,7 +785,7 @@
  * @return a specified locale name of all available locales
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_getAvailable(int32_t n);
 
 /**
@@ -766,21 +794,19 @@
  * @return the size of the locale list
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 uloc_countAvailable(void);
-
-#ifndef U_HIDE_DRAFT_API
+U_CAPI int32_t U_EXPORT2 uloc_countAvailable(void);
 
 /**
  * Types for uloc_getAvailableByType and uloc_countAvailableByType.
  *
- * @draft ICU 65
+ * @stable ICU 65
  */
 typedef enum ULocAvailableType {
   /**
    * Locales that return data when passed to ICU APIs,
    * but not including legacy or alias locales.
    *
-   * @draft ICU 65
+   * @stable ICU 65
    */
   ULOC_AVAILABLE_DEFAULT,
 
@@ -798,7 +824,7 @@
    * ULOC_AVAILABLE_DEFAULT. To get both sets at the same time, use
    * ULOC_AVAILABLE_WITH_LEGACY_ALIASES.
    *
-   * @draft ICU 65
+   * @stable ICU 65
    */
   ULOC_AVAILABLE_ONLY_LEGACY_ALIASES,
 
@@ -806,7 +832,7 @@
    * The union of the locales in ULOC_AVAILABLE_DEFAULT and
    * ULOC_AVAILABLE_ONLY_LEGACY_ALIAS.
    *
-   * @draft ICU 65
+   * @stable ICU 65
    */
   ULOC_AVAILABLE_WITH_LEGACY_ALIASES,
 
@@ -827,13 +853,11 @@
  * @param type Type choice from ULocAvailableType.
  * @param status Set if an error occurred.
  * @return a UEnumeration owned by the caller, or nullptr on failure.
- * @draft ICU 65
+ * @stable ICU 65
  */
-U_DRAFT UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uloc_openAvailableByType(ULocAvailableType type, UErrorCode* status);
 
-#endif // U_HIDE_DRAFT_API
-
 /**
  *
  * Gets a list of all available 2-letter language codes defined in ISO 639,
@@ -845,7 +869,7 @@
  * @return a list of all available language codes
  * @stable ICU 2.0
  */
-U_STABLE const char* const* U_EXPORT2
+U_CAPI const char* const* U_EXPORT2
 uloc_getISOLanguages(void);
 
 /**
@@ -857,7 +881,7 @@
  * @return a list of all available country codes
  * @stable ICU 2.0
  */
-U_STABLE const char* const* U_EXPORT2
+U_CAPI const char* const* U_EXPORT2
 uloc_getISOCountries(void);
 
 /**
@@ -873,7 +897,7 @@
  * @return The length of the parent locale ID.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getParent(const char*    localeID,
                  char* parent,
                  int32_t parentCapacity,
@@ -904,7 +928,7 @@
  * than nameCapacity, the returned full name will be truncated.  
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getBaseName(const char*    localeID,
          char* name,
          int32_t nameCapacity,
@@ -919,7 +943,7 @@
  * @return enumeration of keywords or NULL if there are no keywords.
  * @stable ICU 2.8
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uloc_openKeywords(const char* localeID,
                         UErrorCode* status);
 
@@ -936,7 +960,7 @@
  * @return the length of keyword value
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getKeywordValue(const char* localeID,
                      const char* keywordName,
                      char* buffer, int32_t bufferCapacity,
@@ -973,7 +997,7 @@
  * @see uloc_getKeywordValue
  * @stable ICU 3.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_setKeywordValue(const char* keywordName,
                      const char* keywordValue,
                      char* buffer, int32_t bufferCapacity,
@@ -982,18 +1006,18 @@
 /**
  * Returns whether the locale's script is written right-to-left.
  * If there is no script subtag, then the likely script is used, see uloc_addLikelySubtags().
- * If no likely script is known, then FALSE is returned.
+ * If no likely script is known, then false is returned.
  *
  * A script is right-to-left according to the CLDR script metadata
  * which corresponds to whether the script's letters have Bidi_Class=R or AL.
  *
- * Returns TRUE for "ar" and "en-Hebr", FALSE for "zh" and "fa-Cyrl".
+ * Returns true for "ar" and "en-Hebr", false for "zh" and "fa-Cyrl".
  *
  * @param locale input locale ID
- * @return TRUE if the locale's script is written right-to-left
+ * @return true if the locale's script is written right-to-left
  * @stable ICU 54
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uloc_isRightToLeft(const char *locale);
 
 /**
@@ -1017,7 +1041,7 @@
  * @return an enum indicating the layout orientation for characters.
  * @stable ICU 4.0
  */
-U_STABLE ULayoutType U_EXPORT2
+U_CAPI ULayoutType U_EXPORT2
 uloc_getCharacterOrientation(const char* localeId,
                              UErrorCode *status);
 
@@ -1029,7 +1053,7 @@
  * @return an enum indicating the layout orientation for lines.
  * @stable ICU 4.0
  */
-U_STABLE ULayoutType U_EXPORT2
+U_CAPI ULayoutType U_EXPORT2
 uloc_getLineOrientation(const char* localeId,
                         UErrorCode *status);
 
@@ -1076,7 +1100,7 @@
  * @return length needed for the locale.
  * @stable ICU 3.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_acceptLanguageFromHTTP(char *result, int32_t resultAvailable,
                             UAcceptResult *outResult,
                             const char *httpAcceptLanguage,
@@ -1101,7 +1125,7 @@
  * @return length needed for the locale.
  * @stable ICU 3.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_acceptLanguage(char *result, int32_t resultAvailable, 
                     UAcceptResult *outResult, const char **acceptList,
                     int32_t acceptListCount,
@@ -1121,7 +1145,7 @@
  * @return actual the actual size of the locale ID, not including NUL-termination 
  * @stable ICU 3.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getLocaleForLCID(uint32_t hostID, char *locale, int32_t localeCapacity,
                     UErrorCode *status);
 
@@ -1159,7 +1183,7 @@
  * On error, the return value is -1.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_addLikelySubtags(const char*    localeID,
          char* maximizedLocaleID,
          int32_t maximizedLocaleIDCapacity,
@@ -1199,7 +1223,7 @@
  * On error, the return value is -1.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_minimizeSubtags(const char*    localeID,
          char* minimizedLocaleID,
          int32_t minimizedLocaleIDCapacity,
@@ -1209,14 +1233,18 @@
  * Returns a locale ID for the specified BCP47 language tag string.
  * If the specified language tag contains any ill-formed subtags,
  * the first such subtag and all following subtags are ignored.
- * <p> 
- * This implements the 'Language-Tag' production of BCP47, and so
- * supports grandfathered (regular and irregular) as well as private
- * use language tags.  Private use tags are represented as 'x-whatever',
- * and grandfathered tags are converted to their canonical replacements
- * where they exist.  Note that a few grandfathered tags have no modern
- * replacement, these will be converted using the fallback described in
+ * <p>
+ * This implements the 'Language-Tag' production of BCP 47, and so
+ * supports legacy language tags (marked as “Type: grandfathered” in BCP 47)
+ * (regular and irregular) as well as private use language tags.
+ *
+ * Private use tags are represented as 'x-whatever',
+ * and legacy tags are converted to their canonical replacements where they exist.
+ *
+ * Note that a few legacy tags have no modern replacement;
+ * these will be converted using the fallback described in
  * the first paragraph, so some information might be lost.
+ *
  * @param langtag   the input BCP47 language tag.
  * @param localeID  the output buffer receiving a locale ID for the
  *                  specified BCP47 language tag.
@@ -1228,7 +1256,7 @@
  * @return          the length of the locale ID.
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_forLanguageTag(const char* langtag,
                     char* localeID,
                     int32_t localeIDCapacity,
@@ -1238,10 +1266,10 @@
 /**
  * Returns a well-formed language tag for this locale ID. 
  * <p> 
- * <b>Note</b>: When <code>strict</code> is FALSE, any locale
+ * <b>Note</b>: When <code>strict</code> is false, any locale
  * fields which do not satisfy the BCP47 syntax requirement will
  * be omitted from the result.  When <code>strict</code> is
- * TRUE, this function sets U_ILLEGAL_ARGUMENT_ERROR to the
+ * true, this function sets U_ILLEGAL_ARGUMENT_ERROR to the
  * <code>err</code> if any locale fields do not satisfy the
  * BCP47 syntax requirement.
  * @param localeID  the input locale ID
@@ -1256,7 +1284,7 @@
  * @return          The length of the BCP47 language tag.
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_toLanguageTag(const char* localeID,
                    char* langtag,
                    int32_t langtagCapacity,
@@ -1284,7 +1312,7 @@
  * @see uloc_toLegacyKey
  * @stable ICU 54
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_toUnicodeLocaleKey(const char* keyword);
 
 /**
@@ -1315,7 +1343,7 @@
  * @see uloc_toLegacyType
  * @stable ICU 54
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_toUnicodeLocaleType(const char* keyword, const char* value);
 
 /**
@@ -1330,7 +1358,7 @@
  * @see toUnicodeLocaleKey
  * @stable ICU 54
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_toLegacyKey(const char* keyword);
 
 /**
@@ -1359,7 +1387,7 @@
  * @see toUnicodeLocaleType
  * @stable ICU 54
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_toLegacyType(const char* keyword, const char* value);
 
 #endif /*_ULOC*/
diff --git a/libicu/cts_headers/unicode/ulocdata.h b/libicu/cts_headers/unicode/ulocdata.h
index 834be98..3977743 100644
--- a/libicu/cts_headers/unicode/ulocdata.h
+++ b/libicu/cts_headers/unicode/ulocdata.h
@@ -90,7 +90,7 @@
  * @param status    Pointer to error status code.
  * @stable ICU 3.4
  */
-U_STABLE ULocaleData* U_EXPORT2
+U_CAPI ULocaleData* U_EXPORT2
 ulocdata_open(const char *localeID, UErrorCode *status);
 
 /**
@@ -99,7 +99,7 @@
  * @param uld       The locale data object to close
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocdata_close(ULocaleData *uld);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -132,7 +132,7 @@
  * @param setting   Value of the "no substitute" attribute.
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocdata_setNoSubstitute(ULocaleData *uld, UBool setting);
 
 /**
@@ -146,7 +146,7 @@
  * @return UBool    Value of the "no substitute" attribute.
  * @stable ICU 3.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ulocdata_getNoSubstitute(ULocaleData *uld);
 
 /**
@@ -176,7 +176,7 @@
  *                  In case of error, NULL is returned.
  * @stable ICU 3.4
  */
-U_STABLE USet* U_EXPORT2
+U_CAPI USet* U_EXPORT2
 ulocdata_getExemplarSet(ULocaleData *uld, USet *fillIn,
                         uint32_t options, ULocaleDataExemplarSetType extype, UErrorCode *status);
 
@@ -193,7 +193,7 @@
  *                      the output was truncated.
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ulocdata_getDelimiter(ULocaleData *uld, ULocaleDataDelimiterType type, UChar *result, int32_t resultLength, UErrorCode *status);
 
 /**
@@ -223,7 +223,7 @@
  * @return UMeasurementSystem the measurement system used in the locale.
  * @stable ICU 2.8
  */
-U_STABLE UMeasurementSystem U_EXPORT2
+U_CAPI UMeasurementSystem U_EXPORT2
 ulocdata_getMeasurementSystem(const char *localeID, UErrorCode *status);
 
 /**
@@ -242,7 +242,7 @@
  *                      which must not indicate a failure before the function call.
  * @stable ICU 2.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocdata_getPaperSize(const char *localeID, int32_t *height, int32_t *width, UErrorCode *status);
 
 /**
@@ -251,7 +251,7 @@
  * @param status error code - could be U_MISSING_RESOURCE_ERROR if the version was not found.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocdata_getCLDRVersion(UVersionInfo versionArray, UErrorCode *status);
 
 /**
@@ -269,7 +269,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ulocdata_getLocaleDisplayPattern(ULocaleData *uld,
                                  UChar *pattern,
                                  int32_t patternCapacity,
@@ -291,7 +291,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ulocdata_getLocaleSeparator(ULocaleData *uld,
                             UChar *separator,
                             int32_t separatorCapacity,
diff --git a/libicu/cts_headers/unicode/umachine.h b/libicu/cts_headers/unicode/umachine.h
index 1d85855..09c887c 100644
--- a/libicu/cts_headers/unicode/umachine.h
+++ b/libicu/cts_headers/unicode/umachine.h
@@ -49,12 +49,13 @@
  * ANSI C headers:
  * stddef.h defines wchar_t
  */
+#include <stdbool.h>
 #include <stddef.h>
 
 /*==========================================================================*/
-/* For C wrappers, we use the symbol U_STABLE.                                */
+/* For C wrappers, we use the symbol U_CAPI.                                */
 /* This works properly if the includer is C or C++.                         */
-/* Functions are declared   U_STABLE return-type U_EXPORT2 function-name()... */
+/* Functions are declared   U_CAPI return-type U_EXPORT2 function-name()... */
 /*==========================================================================*/
 
 /**
@@ -107,15 +108,15 @@
 
 /** This is used to declare a function as a public ICU C API @stable ICU 2.0*/
 #define U_CAPI U_CFUNC U_EXPORT
-/** This is used to declare a function as a stable public ICU C API*/
+/** Obsolete/same as U_CAPI; was used to declare a function as a stable public ICU C API*/
 #define U_STABLE U_CAPI
-/** This is used to declare a function as a draft public ICU C API  */
+/** Obsolete/same as U_CAPI; was used to declare a function as a draft public ICU C API  */
 #define U_DRAFT  U_CAPI
 /** This is used to declare a function as a deprecated public ICU C API  */
 #define U_DEPRECATED U_CAPI U_ATTRIBUTE_DEPRECATED
-/** This is used to declare a function as an obsolete public ICU C API  */
+/** Obsolete/same as U_CAPI; was used to declare a function as an obsolete public ICU C API  */
 #define U_OBSOLETE U_CAPI
-/** This is used to declare a function as an internal ICU C API  */
+/** Obsolete/same as U_CAPI; was used to declare a function as an internal ICU C API  */
 #define U_INTERNAL U_CAPI
 
 /**
@@ -170,11 +171,11 @@
 
 /**
  * \def UPRV_BLOCK_MACRO_END
- * Defined as "while (FALSE)" by default.
+ * Defined as "while (false)" by default.
  * @internal
  */
 #ifndef UPRV_BLOCK_MACRO_END
-#define UPRV_BLOCK_MACRO_END while (FALSE)
+#define UPRV_BLOCK_MACRO_END while (false)
 #endif
 
 /*==========================================================================*/
@@ -257,18 +258,59 @@
 /* Boolean data type                                                        */
 /*==========================================================================*/
 
-/** The ICU boolean type @stable ICU 2.0 */
+/**
+ * The ICU boolean type, a signed-byte integer.
+ * ICU-specific for historical reasons: The C and C++ standards used to not define type bool.
+ * Also provides a fixed type definition, as opposed to
+ * type bool whose details (e.g., sizeof) may vary by compiler and between C and C++.
+ *
+ * @stable ICU 2.0
+ */
 typedef int8_t UBool;
 
+/**
+ * \def U_DEFINE_FALSE_AND_TRUE
+ * Normally turns off defining macros FALSE=0 & TRUE=1 in public ICU headers.
+ * These obsolete macros sometimes break compilation of other code that
+ * defines enum constants or similar with these names.
+ * C++ has long defined bool/false/true.
+ * C99 also added definitions for these, although as macros; see stdbool.h.
+ *
+ * You may transitionally define U_DEFINE_FALSE_AND_TRUE=1 if you need time to migrate code.
+ *
+ * @internal ICU 68
+ */
+#ifdef U_DEFINE_FALSE_AND_TRUE
+    // Use the predefined value.
+#elif defined(U_COMBINED_IMPLEMENTATION) || \
+        defined(U_COMMON_IMPLEMENTATION) || defined(U_I18N_IMPLEMENTATION) || \
+        defined(U_IO_IMPLEMENTATION) || defined(U_LAYOUTEX_IMPLEMENTATION) || \
+        defined(U_TOOLUTIL_IMPLEMENTATION)
+    // Inside ICU: Keep FALSE & TRUE available.
+#   define U_DEFINE_FALSE_AND_TRUE 1
+#else
+    // Outside ICU: Avoid collision with non-macro definitions of FALSE & TRUE.
+#   define U_DEFINE_FALSE_AND_TRUE 0
+#endif
+
+#if U_DEFINE_FALSE_AND_TRUE || defined(U_IN_DOXYGEN)
 #ifndef TRUE
-/** The TRUE value of a UBool @stable ICU 2.0 */
+/**
+ * The TRUE value of a UBool.
+ *
+ * @deprecated ICU 68 Use standard "true" instead.
+ */
 #   define TRUE  1
 #endif
 #ifndef FALSE
-/** The FALSE value of a UBool @stable ICU 2.0 */
+/**
+ * The FALSE value of a UBool.
+ *
+ * @deprecated ICU 68 Use standard "false" instead.
+ */
 #   define FALSE 0
 #endif
-
+#endif  // U_DEFINE_FALSE_AND_TRUE
 
 /*==========================================================================*/
 /* Unicode data types                                                       */
diff --git a/libicu/cts_headers/unicode/umsg.h b/libicu/cts_headers/unicode/umsg.h
index 3668234..db660db 100644
--- a/libicu/cts_headers/unicode/umsg.h
+++ b/libicu/cts_headers/unicode/umsg.h
@@ -178,7 +178,7 @@
  * @see u_parseMessage
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 u_formatMessage(const char  *locale,
                  const UChar *pattern,
                 int32_t     patternLength,
@@ -205,7 +205,7 @@
  * @see u_parseMessage
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 u_vformatMessage(   const char  *locale,
                     const UChar *pattern,
                     int32_t     patternLength,
@@ -230,7 +230,7 @@
  * @see u_formatMessage
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_parseMessage( const char   *locale,
                 const UChar  *pattern,
                 int32_t      patternLength,
@@ -255,7 +255,7 @@
  * @see u_formatMessage
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_vparseMessage(const char  *locale,
                 const UChar *pattern,
                 int32_t     patternLength,
@@ -284,7 +284,7 @@
  * @see u_parseMessage
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 u_formatMessageWithError(   const char    *locale,
                             const UChar   *pattern,
                             int32_t       patternLength,
@@ -313,7 +313,7 @@
  * output was truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 u_vformatMessageWithError(  const char   *locale,
                             const UChar  *pattern,
                             int32_t      patternLength,
@@ -341,7 +341,7 @@
  * @see u_formatMessage
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_parseMessageWithError(const char  *locale,
                         const UChar *pattern,
                         int32_t     patternLength,
@@ -369,7 +369,7 @@
  * @see u_formatMessage
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 u_vparseMessageWithError(const char  *locale,
                          const UChar *pattern,
                          int32_t     patternLength,
@@ -399,7 +399,7 @@
  *                      messages, or 0 if an error occurred. 
  * @stable ICU 2.0
  */
-U_STABLE UMessageFormat* U_EXPORT2 
+U_CAPI UMessageFormat* U_EXPORT2 
 umsg_open(  const UChar     *pattern,
             int32_t         patternLength,
             const  char     *locale,
@@ -412,7 +412,7 @@
  * @param format The formatter to close.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 umsg_close(UMessageFormat* format);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -442,7 +442,7 @@
  * @return A pointer to a UDateFormat identical to fmt.
  * @stable ICU 2.0
  */
-U_STABLE UMessageFormat U_EXPORT2 
+U_CAPI UMessageFormat U_EXPORT2 
 umsg_clone(const UMessageFormat *fmt,
            UErrorCode *status);
 
@@ -453,7 +453,7 @@
  * @param locale The locale the formatter should use.
  * @stable ICU 2.0
  */
-U_STABLE void  U_EXPORT2 
+U_CAPI void  U_EXPORT2 
 umsg_setLocale(UMessageFormat *fmt,
                const char* locale);
 
@@ -464,7 +464,7 @@
  * @return the locale.
  * @stable ICU 2.0
  */
-U_STABLE const char*  U_EXPORT2 
+U_CAPI const char*  U_EXPORT2 
 umsg_getLocale(const UMessageFormat *fmt);
 
 /**
@@ -479,7 +479,7 @@
  *                      set to a failure result.
  * @stable ICU 2.0
  */
-U_STABLE void  U_EXPORT2 
+U_CAPI void  U_EXPORT2 
 umsg_applyPattern( UMessageFormat *fmt,
                    const UChar* pattern,
                    int32_t patternLength,
@@ -497,7 +497,7 @@
  * @return the pattern of the format
  * @stable ICU 2.0
  */
-U_STABLE int32_t  U_EXPORT2 
+U_CAPI int32_t  U_EXPORT2 
 umsg_toPattern(const UMessageFormat *fmt,
                UChar* result, 
                int32_t resultLength,
@@ -518,7 +518,7 @@
  *                      the output was truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 umsg_format(    const UMessageFormat *fmt,
                 UChar          *result,
                 int32_t        resultLength,
@@ -540,7 +540,7 @@
  *                     the output was truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 umsg_vformat(   const UMessageFormat *fmt,
                 UChar          *result,
                 int32_t        resultLength,
@@ -561,7 +561,7 @@
  *                      specified in pattern.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 umsg_parse( const UMessageFormat *fmt,
             const UChar    *source,
             int32_t        sourceLength,
@@ -584,7 +584,7 @@
  * @see u_formatMessage
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 umsg_vparse(const UMessageFormat *fmt,
             const UChar    *source,
             int32_t        sourceLength,
@@ -616,7 +616,7 @@
  *        not
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 umsg_autoQuoteApostrophe(const UChar* pattern, 
                          int32_t patternLength,
                          UChar* dest,
diff --git a/libicu/cts_headers/unicode/unimatch.h b/libicu/cts_headers/unicode/unimatch.h
index 5a192b1..302332f 100644
--- a/libicu/cts_headers/unicode/unimatch.h
+++ b/libicu/cts_headers/unicode/unimatch.h
@@ -115,11 +115,11 @@
      * considered for matching will be text.charAt(limit-1) in the
      * forward direction or text.charAt(limit+1) in the backward
      * direction.
-     * @param incremental if TRUE, then assume further characters may
+     * @param incremental if true, then assume further characters may
      * be inserted at limit and check for partial matching.  Otherwise
      * assume the text as given is complete.
      * @return a match degree value indicating a full match, a partial
-     * match, or a mismatch.  If incremental is FALSE then
+     * match, or a mismatch.  If incremental is false then
      * U_PARTIAL_MATCH should never be returned.
      * @stable ICU 2.4
      */
@@ -134,17 +134,17 @@
      * will produce another matcher that is equal to this one.
      * @param result the string to receive the pattern.  Previous
      * contents will be deleted.
-     * @param escapeUnprintable if TRUE then convert unprintable
+     * @param escapeUnprintable if true then convert unprintable
      * character to their hex escape representations, \\uxxxx or
      * \\Uxxxxxxxx.  Unprintable characters are those other than
      * U+000A, U+0020..U+007E.
      * @stable ICU 2.4
      */
     virtual UnicodeString& toPattern(UnicodeString& result,
-                                     UBool escapeUnprintable = FALSE) const = 0;
+                                     UBool escapeUnprintable = false) const = 0;
 
     /**
-     * Returns TRUE if this matcher will match a character c, where c
+     * Returns true if this matcher will match a character c, where c
      * & 0xFF == v, at offset, in the forward direction (with limit >
      * offset).  This is used by <tt>RuleBasedTransliterator</tt> for
      * indexing.
diff --git a/libicu/cts_headers/unicode/unirepl.h b/libicu/cts_headers/unicode/unirepl.h
index 1ec627a..7f6edcf 100644
--- a/libicu/cts_headers/unicode/unirepl.h
+++ b/libicu/cts_headers/unicode/unirepl.h
@@ -77,7 +77,7 @@
      * replacer that is equal to this one.
      * @param result the string to receive the pattern.  Previous
      * contents will be deleted.
-     * @param escapeUnprintable if TRUE then convert unprintable
+     * @param escapeUnprintable if true then convert unprintable
      * character to their hex escape representations, \\uxxxx or
      * \\Uxxxxxxxx.  Unprintable characters are defined by
      * Utility.isUnprintable().
diff --git a/libicu/cts_headers/unicode/uniset.h b/libicu/cts_headers/unicode/uniset.h
index 9742311..50b6360 100644
--- a/libicu/cts_headers/unicode/uniset.h
+++ b/libicu/cts_headers/unicode/uniset.h
@@ -325,7 +325,7 @@
      * A bogus set has no value. It is different from an empty set.
      * It can be used to indicate that no set value is available.
      *
-     * @return TRUE if the set is bogus/invalid, FALSE otherwise
+     * @return true if the set is bogus/invalid, false otherwise
      * @see setToBogus()
      * @stable ICU 4.0
      */
@@ -333,7 +333,7 @@
 
     /**
      * Make this UnicodeSet object invalid.
-     * The string will test TRUE with isBogus().
+     * The string will test true with isBogus().
      *
      * A bogus set has no value. It is different from an empty set.
      * It can be used to indicate that no set value is available.
@@ -563,7 +563,7 @@
     /**
      * Determines whether the set has been frozen (made immutable) or not.
      * See the ICU4J Freezable interface for details.
-     * @return TRUE/FALSE for whether the set has been frozen
+     * @return true/false for whether the set has been frozen
      * @see freeze
      * @see cloneAsThawed
      * @stable ICU 3.8
@@ -700,14 +700,14 @@
      * A frozen set will not be modified.
      * @param result the string to receive the rules.  Previous
      * contents will be deleted.
-     * @param escapeUnprintable if TRUE then convert unprintable
+     * @param escapeUnprintable if true then convert unprintable
      * character to their hex escape representations, \\uxxxx or
      * \\Uxxxxxxxx.  Unprintable characters are those other than
      * U+000A, U+0020..U+007E.
      * @stable ICU 2.0
      */
     virtual UnicodeString& toPattern(UnicodeString& result,
-                             UBool escapeUnprintable = FALSE) const;
+                                     UBool escapeUnprintable = false) const;
 
     /**
      * Modifies this set to contain those code points which have the given value
@@ -1636,7 +1636,7 @@
     static const UnicodeSet* getInclusions(int32_t src, UErrorCode &status);
 
     /**
-     * A filter that returns TRUE if the given code point should be
+     * A filter that returns true if the given code point should be
      * included in the UnicodeSet being constructed.
      */
     typedef UBool (*Filter)(UChar32 codePoint, void* context);
diff --git a/libicu/cts_headers/unicode/unistr.h b/libicu/cts_headers/unicode/unistr.h
index da79053..456389f 100644
--- a/libicu/cts_headers/unicode/unistr.h
+++ b/libicu/cts_headers/unicode/unistr.h
@@ -45,7 +45,7 @@
 /**
  * \ingroup ustring_ustrlen
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strlen(const UChar *s);
 #endif
 
@@ -113,9 +113,9 @@
  * @stable ICU 2.0
  */
 #if !U_CHAR16_IS_TYPEDEF
-# define UNICODE_STRING(cs, _length) icu::UnicodeString(TRUE, u ## cs, _length)
+# define UNICODE_STRING(cs, _length) icu::UnicodeString(true, u ## cs, _length)
 #else
-# define UNICODE_STRING(cs, _length) icu::UnicodeString(TRUE, (const char16_t*)u ## cs, _length)
+# define UNICODE_STRING(cs, _length) icu::UnicodeString(true, (const char16_t*)u ## cs, _length)
 #endif
 
 /**
@@ -227,7 +227,7 @@
  * The UnicodeString class is not suitable for subclassing.
  *
  * For an overview of Unicode strings in C and C++ see the
- * [User Guide Strings chapter](http://userguide.icu-project.org/strings#TOC-Strings-in-C-C-).
+ * [User Guide Strings chapter](https://unicode-org.github.io/icu/userguide/strings#strings-in-cc).
  *
  * In ICU, a Unicode string consists of 16-bit Unicode *code units*.
  * A Unicode character may be stored with either one code unit
@@ -285,7 +285,7 @@
  * significant performance improvements.
  * Also, the internal buffer is accessible via special functions.
  * For details see the
- * [User Guide Strings chapter](http://userguide.icu-project.org/strings#TOC-Maximizing-Performance-with-the-UnicodeString-Storage-Model).
+ * [User Guide Strings chapter](https://unicode-org.github.io/icu/userguide/strings#maximizing-performance-with-the-unicodestring-storage-model).
  *
  * @see utf.h
  * @see CharacterIterator
@@ -320,8 +320,8 @@
   /**
    * Equality operator. Performs only bitwise comparison.
    * @param text The UnicodeString to compare to this one.
-   * @return TRUE if `text` contains the same characters as this one,
-   * FALSE otherwise.
+   * @return true if `text` contains the same characters as this one,
+   * false otherwise.
    * @stable ICU 2.0
    */
   inline UBool operator== (const UnicodeString& text) const;
@@ -329,8 +329,8 @@
   /**
    * Inequality operator. Performs only bitwise comparison.
    * @param text The UnicodeString to compare to this one.
-   * @return FALSE if `text` contains the same characters as this one,
-   * TRUE otherwise.
+   * @return false if `text` contains the same characters as this one,
+   * true otherwise.
    * @stable ICU 2.0
    */
   inline UBool operator!= (const UnicodeString& text) const;
@@ -338,8 +338,8 @@
   /**
    * Greater than operator. Performs only bitwise comparison.
    * @param text The UnicodeString to compare to this one.
-   * @return TRUE if the characters in this are bitwise
-   * greater than the characters in `text`, FALSE otherwise
+   * @return true if the characters in this are bitwise
+   * greater than the characters in `text`, false otherwise
    * @stable ICU 2.0
    */
   inline UBool operator> (const UnicodeString& text) const;
@@ -347,8 +347,8 @@
   /**
    * Less than operator. Performs only bitwise comparison.
    * @param text The UnicodeString to compare to this one.
-   * @return TRUE if the characters in this are bitwise
-   * less than the characters in `text`, FALSE otherwise
+   * @return true if the characters in this are bitwise
+   * less than the characters in `text`, false otherwise
    * @stable ICU 2.0
    */
   inline UBool operator< (const UnicodeString& text) const;
@@ -356,8 +356,8 @@
   /**
    * Greater than or equal operator. Performs only bitwise comparison.
    * @param text The UnicodeString to compare to this one.
-   * @return TRUE if the characters in this are bitwise
-   * greater than or equal to the characters in `text`, FALSE otherwise
+   * @return true if the characters in this are bitwise
+   * greater than or equal to the characters in `text`, false otherwise
    * @stable ICU 2.0
    */
   inline UBool operator>= (const UnicodeString& text) const;
@@ -365,8 +365,8 @@
   /**
    * Less than or equal operator. Performs only bitwise comparison.
    * @param text The UnicodeString to compare to this one.
-   * @return TRUE if the characters in this are bitwise
-   * less than or equal to the characters in `text`, FALSE otherwise
+   * @return true if the characters in this are bitwise
+   * less than or equal to the characters in `text`, false otherwise
    * @stable ICU 2.0
    */
   inline UBool operator<= (const UnicodeString& text) const;
@@ -855,8 +855,8 @@
   /**
    * Determine if this starts with the characters in `text`
    * @param text The text to match.
-   * @return TRUE if this starts with the characters in `text`,
-   * FALSE otherwise
+   * @return true if this starts with the characters in `text`,
+   * false otherwise
    * @stable ICU 2.0
    */
   inline UBool startsWith(const UnicodeString& text) const;
@@ -867,8 +867,8 @@
    * @param srcText The text to match.
    * @param srcStart the offset into `srcText` to start matching
    * @param srcLength the number of characters in `srcText` to match
-   * @return TRUE if this starts with the characters in `text`,
-   * FALSE otherwise
+   * @return true if this starts with the characters in `text`,
+   * false otherwise
    * @stable ICU 2.0
    */
   inline UBool startsWith(const UnicodeString& srcText,
@@ -879,8 +879,8 @@
    * Determine if this starts with the characters in `srcChars`
    * @param srcChars The characters to match.
    * @param srcLength the number of characters in `srcChars`
-   * @return TRUE if this starts with the characters in `srcChars`,
-   * FALSE otherwise
+   * @return true if this starts with the characters in `srcChars`,
+   * false otherwise
    * @stable ICU 2.0
    */
   inline UBool startsWith(ConstChar16Ptr srcChars,
@@ -892,7 +892,7 @@
    * @param srcChars The characters to match.
    * @param srcStart the offset into `srcText` to start matching
    * @param srcLength the number of characters in `srcChars` to match
-   * @return TRUE if this ends with the characters in `srcChars`, FALSE otherwise
+   * @return true if this ends with the characters in `srcChars`, false otherwise
    * @stable ICU 2.0
    */
   inline UBool startsWith(const char16_t *srcChars,
@@ -902,8 +902,8 @@
   /**
    * Determine if this ends with the characters in `text`
    * @param text The text to match.
-   * @return TRUE if this ends with the characters in `text`,
-   * FALSE otherwise
+   * @return true if this ends with the characters in `text`,
+   * false otherwise
    * @stable ICU 2.0
    */
   inline UBool endsWith(const UnicodeString& text) const;
@@ -914,8 +914,8 @@
    * @param srcText The text to match.
    * @param srcStart the offset into `srcText` to start matching
    * @param srcLength the number of characters in `srcText` to match
-   * @return TRUE if this ends with the characters in `text`,
-   * FALSE otherwise
+   * @return true if this ends with the characters in `text`,
+   * false otherwise
    * @stable ICU 2.0
    */
   inline UBool endsWith(const UnicodeString& srcText,
@@ -926,8 +926,8 @@
    * Determine if this ends with the characters in `srcChars`
    * @param srcChars The characters to match.
    * @param srcLength the number of characters in `srcChars`
-   * @return TRUE if this ends with the characters in `srcChars`,
-   * FALSE otherwise
+   * @return true if this ends with the characters in `srcChars`,
+   * false otherwise
    * @stable ICU 2.0
    */
   inline UBool endsWith(ConstChar16Ptr srcChars,
@@ -939,8 +939,8 @@
    * @param srcChars The characters to match.
    * @param srcStart the offset into `srcText` to start matching
    * @param srcLength the number of characters in `srcChars` to match
-   * @return TRUE if this ends with the characters in `srcChars`,
-   * FALSE otherwise
+   * @return true if this ends with the characters in `srcChars`,
+   * false otherwise
    * @stable ICU 2.0
    */
   inline UBool endsWith(const char16_t *srcChars,
@@ -1804,7 +1804,7 @@
 
   /**
    * Determine if this string is empty.
-   * @return TRUE if this string contains 0 characters, FALSE otherwise.
+   * @return true if this string contains 0 characters, false otherwise.
    * @stable ICU 2.0
    */
   inline UBool isEmpty(void) const;
@@ -1832,12 +1832,12 @@
   /**
    * Determine if this object contains a valid string.
    * A bogus string has no value. It is different from an empty string,
-   * although in both cases isEmpty() returns TRUE and length() returns 0.
+   * although in both cases isEmpty() returns true and length() returns 0.
    * setToBogus() and isBogus() can be used to indicate that no string value is available.
    * For a bogus string, getBuffer() and getTerminatedBuffer() return NULL, and
    * length() returns 0.
    *
-   * @return TRUE if the string is bogus/invalid, FALSE otherwise
+   * @return true if the string is bogus/invalid, false otherwise
    * @see setToBogus()
    * @stable ICU 2.0
    */
@@ -2067,7 +2067,7 @@
 
   /**
    * Make this UnicodeString object invalid.
-   * The string will test TRUE with isBogus().
+   * The string will test true with isBogus().
    *
    * A bogus string has no value. It is different from an empty string.
    * It can be used to indicate that no string value is available.
@@ -2459,7 +2459,7 @@
 
   /**
    * Replaceable API
-   * @return TRUE if it has MetaData
+   * @return true if it has MetaData
    * @stable ICU 2.4
    */
   virtual UBool hasMetaData() const;
@@ -2590,7 +2590,7 @@
    * @param targetLength the desired length of the string
    * @param padChar the character to use for padding. Defaults to
    * space (U+0020)
-   * @return TRUE if the text was padded, FALSE otherwise.
+   * @return true if the text was padded, false otherwise.
    * @stable ICU 2.0
    */
   UBool padLeading(int32_t targetLength,
@@ -2604,7 +2604,7 @@
    * @param targetLength the desired length of the string
    * @param padChar the character to use for padding. Defaults to
    * space (U+0020)
-   * @return TRUE if the text was padded, FALSE otherwise.
+   * @return true if the text was padded, false otherwise.
    * @stable ICU 2.0
    */
   UBool padTrailing(int32_t targetLength,
@@ -2613,7 +2613,7 @@
   /**
    * Truncate this UnicodeString to the `targetLength`.
    * @param targetLength the desired length of this UnicodeString.
-   * @return TRUE if the text was truncated, FALSE otherwise
+   * @return true if the text was truncated, false otherwise
    * @stable ICU 2.0
    */
   inline UBool truncate(int32_t targetLength);
@@ -3615,7 +3615,7 @@
   void unBogus();
 
   // implements assigment operator, copy constructor, and fastCopyFrom()
-  UnicodeString &copyFrom(const UnicodeString &src, UBool fastCopy=FALSE);
+  UnicodeString &copyFrom(const UnicodeString &src, UBool fastCopy=false);
 
   // Copies just the fields without memory management.
   void copyFieldsFrom(UnicodeString &src, UBool setSrcToBogus) U_NOEXCEPT;
@@ -3668,13 +3668,13 @@
    * the buffer is refCounted (shared), and refCount>1, or
    * the buffer is too small.
    *
-   * Return FALSE if memory could not be allocated.
+   * Return false if memory could not be allocated.
    */
   UBool cloneArrayIfNeeded(int32_t newCapacity = -1,
                             int32_t growCapacity = -1,
-                            UBool doCopyArray = TRUE,
+                            UBool doCopyArray = true,
                             int32_t **pBufferToDelete = 0,
-                            UBool forceClone = FALSE);
+                            UBool forceClone = false);
 
   /**
    * Common function for UnicodeString case mappings.
@@ -4732,12 +4732,12 @@
   if(isBogus() && targetLength == 0) {
     // truncate(0) of a bogus string makes the string empty and non-bogus
     unBogus();
-    return FALSE;
+    return false;
   } else if((uint32_t)targetLength < (uint32_t)length()) {
     setLength(targetLength);
-    return TRUE;
+    return true;
   } else {
-    return FALSE;
+    return false;
   }
 }
 
diff --git a/libicu/cts_headers/unicode/unorm.h b/libicu/cts_headers/unicode/unorm.h
index 09dd366..c3c5758 100644
--- a/libicu/cts_headers/unicode/unorm.h
+++ b/libicu/cts_headers/unicode/unorm.h
@@ -274,7 +274,7 @@
  * never a "maybe".
  * For NFD, NFKD, and FCD, both functions work exactly the same.
  * For NFC and NFKC where quickCheck may return "maybe", this function will
- * perform further tests to arrive at a TRUE/FALSE result.
+ * perform further tests to arrive at a true/false result.
  *
  * @param src        String that is to be tested if it is in a normalization format.
  * @param srcLength  Length of source to test, or -1 if NUL-terminated.
@@ -358,10 +358,10 @@
  * It is useful for operations like a normalizing transliterator, where one would
  * not want to replace a piece of text if it is not modified.
  *
- * If doNormalize==TRUE and pNeededToNormalize!=NULL then *pNeeded... is set TRUE
+ * If doNormalize==true and pNeededToNormalize!=NULL then *pNeeded... is set true
  * if the normalization was necessary.
  *
- * If doNormalize==FALSE then *pNeededToNormalize will be set to FALSE.
+ * If doNormalize==false then *pNeededToNormalize will be set to false.
  *
  * If the buffer overflows, then *pNeededToNormalize will be undefined;
  * essentially, whenever U_FAILURE is true (like in buffer overflows), this result
@@ -373,11 +373,11 @@
  * @param mode The normalization mode.
  * @param options The normalization options, ORed together (0 for no options).
  * @param doNormalize Indicates if the source text up to the next boundary
- *                    is to be normalized (TRUE) or just copied (FALSE).
+ *                    is to be normalized (true) or just copied (false).
  * @param pNeededToNormalize Output flag indicating if the normalization resulted in
  *                           different text from the input.
  *                           Not defined if an error occurs including buffer overflow.
- *                           Always FALSE if !doNormalize.
+ *                           Always false if !doNormalize.
  * @param pErrorCode ICU error code in/out parameter.
  *                   Must fulfill U_SUCCESS before the function call.
  * @return Length of output (number of UChars) when successful or buffer overflow.
@@ -406,11 +406,11 @@
  * @param mode The normalization mode.
  * @param options The normalization options, ORed together (0 for no options).
  * @param doNormalize Indicates if the source text up to the next boundary
- *                    is to be normalized (TRUE) or just copied (FALSE).
+ *                    is to be normalized (true) or just copied (false).
  * @param pNeededToNormalize Output flag indicating if the normalization resulted in
  *                           different text from the input.
  *                           Not defined if an error occurs including buffer overflow.
- *                           Always FALSE if !doNormalize.
+ *                           Always false if !doNormalize.
  * @param pErrorCode ICU error code in/out parameter.
  *                   Must fulfill U_SUCCESS before the function call.
  * @return Length of output (number of UChars) when successful or buffer overflow.
diff --git a/libicu/cts_headers/unicode/unorm2.h b/libicu/cts_headers/unicode/unorm2.h
index d18d039..24417b7 100644
--- a/libicu/cts_headers/unicode/unorm2.h
+++ b/libicu/cts_headers/unicode/unorm2.h
@@ -135,7 +135,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFCInstance(UErrorCode *pErrorCode);
 
 /**
@@ -149,7 +149,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFDInstance(UErrorCode *pErrorCode);
 
 /**
@@ -163,7 +163,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFKCInstance(UErrorCode *pErrorCode);
 
 /**
@@ -177,7 +177,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFKDInstance(UErrorCode *pErrorCode);
 
 /**
@@ -191,7 +191,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFKCCasefoldInstance(UErrorCode *pErrorCode);
 
 /**
@@ -215,7 +215,7 @@
  * @return the requested UNormalizer2, if successful
  * @stable ICU 4.4
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getInstance(const char *packageName,
                    const char *name,
                    UNormalization2Mode mode,
@@ -236,7 +236,7 @@
  * @return the requested UNormalizer2, if successful
  * @stable ICU 4.4
  */
-U_STABLE UNormalizer2 * U_EXPORT2
+U_CAPI UNormalizer2 * U_EXPORT2
 unorm2_openFiltered(const UNormalizer2 *norm2, const USet *filterSet, UErrorCode *pErrorCode);
 
 /**
@@ -245,7 +245,7 @@
  * @param norm2 UNormalizer2 instance to be closed
  * @stable ICU 4.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unorm2_close(UNormalizer2 *norm2);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -283,7 +283,7 @@
  * @return dest
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_normalize(const UNormalizer2 *norm2,
                  const UChar *src, int32_t length,
                  UChar *dest, int32_t capacity,
@@ -306,7 +306,7 @@
  * @return first
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_normalizeSecondAndAppend(const UNormalizer2 *norm2,
                                 UChar *first, int32_t firstLength, int32_t firstCapacity,
                                 const UChar *second, int32_t secondLength,
@@ -329,7 +329,7 @@
  * @return first
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_append(const UNormalizer2 *norm2,
               UChar *first, int32_t firstLength, int32_t firstCapacity,
               const UChar *second, int32_t secondLength,
@@ -354,7 +354,7 @@
  * @return the non-negative length of c's decomposition, if there is one; otherwise a negative value
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_getDecomposition(const UNormalizer2 *norm2,
                         UChar32 c, UChar *decomposition, int32_t capacity,
                         UErrorCode *pErrorCode);
@@ -388,7 +388,7 @@
  * @return the non-negative length of c's raw decomposition, if there is one; otherwise a negative value
  * @stable ICU 49
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_getRawDecomposition(const UNormalizer2 *norm2,
                            UChar32 c, UChar *decomposition, int32_t capacity,
                            UErrorCode *pErrorCode);
@@ -408,7 +408,7 @@
  * @return The non-negative composite code point if there is one; otherwise a negative value.
  * @stable ICU 49
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 unorm2_composePair(const UNormalizer2 *norm2, UChar32 a, UChar32 b);
 
 /**
@@ -420,7 +420,7 @@
  * @return c's combining class
  * @stable ICU 49
  */
-U_STABLE uint8_t U_EXPORT2
+U_CAPI uint8_t U_EXPORT2
 unorm2_getCombiningClass(const UNormalizer2 *norm2, UChar32 c);
 
 /**
@@ -436,10 +436,10 @@
  *                   pass the U_SUCCESS() test, or else the function returns
  *                   immediately. Check for U_FAILURE() on output or use with
  *                   function chaining. (See User Guide for details.)
- * @return TRUE if s is normalized
+ * @return true if s is normalized
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unorm2_isNormalized(const UNormalizer2 *norm2,
                     const UChar *s, int32_t length,
                     UErrorCode *pErrorCode);
@@ -461,7 +461,7 @@
  * @return UNormalizationCheckResult
  * @stable ICU 4.4
  */
-U_STABLE UNormalizationCheckResult U_EXPORT2
+U_CAPI UNormalizationCheckResult U_EXPORT2
 unorm2_quickCheck(const UNormalizer2 *norm2,
                   const UChar *s, int32_t length,
                   UErrorCode *pErrorCode);
@@ -490,7 +490,7 @@
  * @return "yes" span end index
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_spanQuickCheckYes(const UNormalizer2 *norm2,
                          const UChar *s, int32_t length,
                          UErrorCode *pErrorCode);
@@ -501,10 +501,10 @@
  * For details see the Normalizer2 base class documentation.
  * @param norm2 UNormalizer2 instance
  * @param c character to test
- * @return TRUE if c has a normalization boundary before it
+ * @return true if c has a normalization boundary before it
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unorm2_hasBoundaryBefore(const UNormalizer2 *norm2, UChar32 c);
 
 /**
@@ -513,10 +513,10 @@
  * For details see the Normalizer2 base class documentation.
  * @param norm2 UNormalizer2 instance
  * @param c character to test
- * @return TRUE if c has a normalization boundary after it
+ * @return true if c has a normalization boundary after it
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unorm2_hasBoundaryAfter(const UNormalizer2 *norm2, UChar32 c);
 
 /**
@@ -524,10 +524,10 @@
  * For details see the Normalizer2 base class documentation.
  * @param norm2 UNormalizer2 instance
  * @param c character to test
- * @return TRUE if c is normalization-inert
+ * @return true if c is normalization-inert
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unorm2_isInert(const UNormalizer2 *norm2, UChar32 c);
 
 /**
@@ -596,7 +596,7 @@
  *
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm_compare(const UChar *s1, int32_t length1,
               const UChar *s2, int32_t length2,
               uint32_t options,
diff --git a/libicu/cts_headers/unicode/unum.h b/libicu/cts_headers/unicode/unum.h
index b03e846..68207a9 100644
--- a/libicu/cts_headers/unicode/unum.h
+++ b/libicu/cts_headers/unicode/unum.h
@@ -275,7 +275,7 @@
  *
  * <p>
  * For more detail on rounding modes, see:
- * http://userguide.icu-project.org/formatparse/numbers/rounding-modes
+ * https://unicode-org.github.io/icu/userguide/format_parse/numbers/rounding-modes
  *
  * @stable ICU 2.0
  */
@@ -395,6 +395,30 @@
 } UNumberFormatFields;
 
 
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Selectors with special numeric values to use locale default minimum grouping
+ * digits for the DecimalFormat/UNumberFormat setMinimumGroupingDigits method.
+ * Do not use these constants with the [U]NumberFormatter API.
+ *
+ * @draft ICU 68
+ */
+typedef enum UNumberFormatMinimumGroupingDigits {
+    /**
+     * Display grouping using the default strategy for all locales.
+     * @draft ICU 68
+     */
+    UNUM_MINIMUM_GROUPING_DIGITS_AUTO = -2,
+    /**
+     * Display grouping using locale defaults, except do not show grouping on
+     * values smaller than 10000 (such that there is a minimum of two digits
+     * before the first separator).
+     * @draft ICU 68
+     */
+    UNUM_MINIMUM_GROUPING_DIGITS_MIN2 = -3,
+} UNumberFormatMinimumGroupingDigits;
+#endif  // U_HIDE_DRAFT_API
+
 /**
  * Create and return a new UNumberFormat for formatting and parsing
  * numbers.  A UNumberFormat may be used to format numbers by calling
@@ -432,7 +456,7 @@
  * @see DecimalFormat
  * @stable ICU 2.0
  */
-U_STABLE UNumberFormat* U_EXPORT2 
+U_CAPI UNumberFormat* U_EXPORT2 
 unum_open(  UNumberFormatStyle    style,
             const    UChar*    pattern,
             int32_t            patternLength,
@@ -447,7 +471,7 @@
 * @param fmt The formatter to close.
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 unum_close(UNumberFormat* fmt);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -477,7 +501,7 @@
  * @return A pointer to a UNumberFormat identical to fmt.
  * @stable ICU 2.0
  */
-U_STABLE UNumberFormat* U_EXPORT2 
+U_CAPI UNumberFormat* U_EXPORT2 
 unum_clone(const UNumberFormat *fmt,
        UErrorCode *status);
 
@@ -505,7 +529,7 @@
 * @see UFieldPosition
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_format(    const    UNumberFormat*    fmt,
         int32_t            number,
         UChar*            result,
@@ -537,7 +561,7 @@
 * @see UFieldPosition
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_formatInt64(const UNumberFormat *fmt,
         int64_t         number,
         UChar*          result,
@@ -569,7 +593,7 @@
 * @see UFieldPosition
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_formatDouble(    const    UNumberFormat*  fmt,
             double          number,
             UChar*          result,
@@ -619,7 +643,7 @@
 * @see UNumberFormatFields
 * @stable ICU 59
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unum_formatDoubleForFields(const UNumberFormat* format,
                            double number,
                            UChar* result,
@@ -656,7 +680,7 @@
 * @see UFieldPosition
 * @stable ICU 4.4 
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_formatDecimal(    const    UNumberFormat*  fmt,
             const char *    number,
             int32_t         length,
@@ -689,7 +713,7 @@
  * @see UFieldPosition
  * @stable ICU 3.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unum_formatDoubleCurrency(const UNumberFormat* fmt,
                           double number,
                           UChar* currency,
@@ -718,7 +742,7 @@
  * @see unum_parseToUFormattable
  * @stable ICU 52
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unum_formatUFormattable(const UNumberFormat* fmt,
                         const UFormattable *number,
                         UChar *result,
@@ -745,7 +769,7 @@
 * @see unum_formatDouble
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_parse(    const   UNumberFormat*  fmt,
         const   UChar*          text,
         int32_t         textLength,
@@ -771,7 +795,7 @@
 * @see unum_formatDouble
 * @stable ICU 2.8
 */
-U_STABLE int64_t U_EXPORT2 
+U_CAPI int64_t U_EXPORT2 
 unum_parseInt64(const UNumberFormat*  fmt,
         const UChar*  text,
         int32_t       textLength,
@@ -797,7 +821,7 @@
 * @see unum_formatDouble
 * @stable ICU 2.0
 */
-U_STABLE double U_EXPORT2 
+U_CAPI double U_EXPORT2 
 unum_parseDouble(    const   UNumberFormat*  fmt,
             const   UChar*          text,
             int32_t         textLength,
@@ -832,7 +856,7 @@
 * @see unum_formatDouble
 * @stable ICU 4.4
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_parseDecimal(const   UNumberFormat*  fmt,
                  const   UChar*          text,
                          int32_t         textLength,
@@ -860,7 +884,7 @@
  * @see unum_formatDoubleCurrency
  * @stable ICU 3.0
  */
-U_STABLE double U_EXPORT2
+U_CAPI double U_EXPORT2
 unum_parseDoubleCurrency(const UNumberFormat* fmt,
                          const UChar* text,
                          int32_t textLength,
@@ -888,7 +912,7 @@
  * @see ufmt_close
  * @stable ICU 52
  */
-U_STABLE UFormattable* U_EXPORT2
+U_CAPI UFormattable* U_EXPORT2
 unum_parseToUFormattable(const UNumberFormat* fmt,
                          UFormattable *result,
                          const UChar* text,
@@ -901,7 +925,7 @@
  * on a DecimalFormat, other formats return U_UNSUPPORTED_ERROR
  * in the status.
  * @param format The formatter to set.
- * @param localized TRUE if the pattern is localized, FALSE otherwise.
+ * @param localized true if the pattern is localized, false otherwise.
  * @param pattern The new pattern
  * @param patternLength The length of pattern, or -1 if null-terminated.
  * @param parseError A pointer to UParseError to receive information
@@ -912,7 +936,7 @@
  * @see DecimalFormat
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 unum_applyPattern(          UNumberFormat  *format,
                             UBool          localized,
                     const   UChar          *pattern,
@@ -931,7 +955,7 @@
 * @see unum_countAvailable
 * @stable ICU 2.0
 */
-U_STABLE const char* U_EXPORT2 
+U_CAPI const char* U_EXPORT2 
 unum_getAvailable(int32_t localeIndex);
 
 /**
@@ -943,7 +967,7 @@
 * @see unum_getAvailable
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_countAvailable(void);
 
 #if UCONFIG_HAVE_PARSEALLINPUT
@@ -1124,7 +1148,7 @@
 * @see unum_setTextAttribute
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_getAttribute(const UNumberFormat*          fmt,
           UNumberFormatAttribute  attr);
 
@@ -1147,7 +1171,7 @@
 * @see unum_setTextAttribute
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 unum_setAttribute(    UNumberFormat*          fmt,
             UNumberFormatAttribute  attr,
             int32_t                 newValue);
@@ -1167,7 +1191,7 @@
 * @see unum_setTextAttribute
 * @stable ICU 2.0
 */
-U_STABLE double U_EXPORT2 
+U_CAPI double U_EXPORT2 
 unum_getDoubleAttribute(const UNumberFormat*          fmt,
           UNumberFormatAttribute  attr);
 
@@ -1185,7 +1209,7 @@
 * @see unum_setTextAttribute
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 unum_setDoubleAttribute(    UNumberFormat*          fmt,
             UNumberFormatAttribute  attr,
             double                 newValue);
@@ -1242,7 +1266,7 @@
 * @see unum_setAttribute
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_getTextAttribute(    const    UNumberFormat*                    fmt,
             UNumberFormatTextAttribute      tag,
             UChar*                            result,
@@ -1265,7 +1289,7 @@
 * @see unum_setAttribute
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 unum_setTextAttribute(    UNumberFormat*                    fmt,
             UNumberFormatTextAttribute      tag,
             const    UChar*                            newValue,
@@ -1276,8 +1300,8 @@
  * Extract the pattern from a UNumberFormat.  The pattern will follow
  * the DecimalFormat pattern syntax.
  * @param fmt The formatter to query.
- * @param isPatternLocalized TRUE if the pattern should be localized,
- * FALSE otherwise.  This is ignored if the formatter is a rule-based
+ * @param isPatternLocalized true if the pattern should be localized,
+ * false otherwise.  This is ignored if the formatter is a rule-based
  * formatter.
  * @param result A pointer to a buffer to receive the pattern.
  * @param resultLength The maximum size of result.
@@ -1288,7 +1312,7 @@
  * @see DecimalFormat
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 unum_toPattern(    const    UNumberFormat*          fmt,
         UBool                  isPatternLocalized,
         UChar*                  result,
@@ -1407,7 +1431,7 @@
 * @see unum_setSymbol
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unum_getSymbol(const UNumberFormat *fmt,
                UNumberFormatSymbol symbol,
                UChar *buffer,
@@ -1427,7 +1451,7 @@
 * @see unum_getSymbol
 * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unum_setSymbol(UNumberFormat *fmt,
                UNumberFormatSymbol symbol,
                const UChar *value,
@@ -1444,7 +1468,7 @@
  * @return the locale name
  * @stable ICU 2.8
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 unum_getLocaleByType(const UNumberFormat *fmt,
                      ULocDataLocaleType type,
                      UErrorCode* status); 
@@ -1457,7 +1481,7 @@
  * @param status A pointer to an UErrorCode to receive any errors
  * @stable ICU 53
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unum_setContext(UNumberFormat* fmt, UDisplayContext value, UErrorCode* status);
 
 /**
@@ -1469,7 +1493,7 @@
  * @return The UDisplayContextValue for the specified type.
  * @stable ICU 53
  */
-U_STABLE UDisplayContext U_EXPORT2
+U_CAPI UDisplayContext U_EXPORT2
 unum_getContext(const UNumberFormat *fmt, UDisplayContextType type, UErrorCode* status);
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/libicu/cts_headers/unicode/unumberformatter.h b/libicu/cts_headers/unicode/unumberformatter.h
index af98ba0..754987a 100644
--- a/libicu/cts_headers/unicode/unumberformatter.h
+++ b/libicu/cts_headers/unicode/unumberformatter.h
@@ -1,11 +1,12 @@
 // © 2018 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 
+#ifndef __UNUMBERFORMATTER_H__
+#define __UNUMBERFORMATTER_H__
+
 #include "unicode/utypes.h"
 
 #if !UCONFIG_NO_FORMATTING
-#ifndef __UNUMBERFORMATTER_H__
-#define __UNUMBERFORMATTER_H__
 
 #include "unicode/parseerr.h"
 #include "unicode/ufieldpositer.h"
@@ -147,6 +148,30 @@
      */
             UNUM_UNIT_WIDTH_ISO_CODE,
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Use the formal variant of the currency symbol; for example, "NT$" for the New Taiwan
+     * dollar in zh-TW.
+     *
+     * <p>
+     * Behavior of this option with non-currency units is not defined at this time.
+     *
+     * @draft ICU 68
+     */
+            UNUM_UNIT_WIDTH_FORMAL,
+
+    /**
+     * Use the alternate variant of the currency symbol; for example, "TL" for the Turkish
+     * lira (TRY).
+     *
+     * <p>
+     * Behavior of this option with non-currency units is not defined at this time.
+     *
+     * @draft ICU 68
+     */
+            UNUM_UNIT_WIDTH_VARIANT,
+#endif  // U_HIDE_DRAFT_API
+
     /**
      * Format the number according to the specified unit, but do not display the unit. For currencies, apply
      * monetary symbols and formats as with SHORT, but omit the currency symbol. For measure units, the behavior is
@@ -432,7 +457,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE UNumberFormatter* U_EXPORT2
+U_CAPI UNumberFormatter* U_EXPORT2
 unumf_openForSkeletonAndLocale(const UChar* skeleton, int32_t skeletonLen, const char* locale,
                                UErrorCode* ec);
 
@@ -449,7 +474,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 64
  */
-U_STABLE UNumberFormatter* U_EXPORT2
+U_CAPI UNumberFormatter* U_EXPORT2
 unumf_openForSkeletonAndLocaleWithError(
        const UChar* skeleton, int32_t skeletonLen, const char* locale, UParseError* perror, UErrorCode* ec);
 
@@ -462,7 +487,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE UFormattedNumber* U_EXPORT2
+U_CAPI UFormattedNumber* U_EXPORT2
 unumf_openResult(UErrorCode* ec);
 
 
@@ -481,7 +506,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumf_formatInt(const UNumberFormatter* uformatter, int64_t value, UFormattedNumber* uresult,
                 UErrorCode* ec);
 
@@ -501,7 +526,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumf_formatDouble(const UNumberFormatter* uformatter, double value, UFormattedNumber* uresult,
                    UErrorCode* ec);
 
@@ -525,7 +550,7 @@
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumf_formatDecimal(const UNumberFormatter* uformatter, const char* value, int32_t valueLen,
                     UFormattedNumber* uresult, UErrorCode* ec);
 
@@ -543,7 +568,7 @@
  * @return A UFormattedValue owned by the input object.
  * @stable ICU 64
  */
-U_STABLE const UFormattedValue* U_EXPORT2
+U_CAPI const UFormattedValue* U_EXPORT2
 unumf_resultAsValue(const UFormattedNumber* uresult, UErrorCode* ec);
 
 
@@ -566,7 +591,7 @@
  * @return The required length.
  * @stable ICU 62
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unumf_resultToString(const UFormattedNumber* uresult, UChar* buffer, int32_t bufferCapacity,
                      UErrorCode* ec);
 
@@ -600,11 +625,11 @@
  *            "beginIndex" field is set to the beginning of the first occurrence of the field after the
  *            input "endIndex", and "endIndex" is set to the end of that occurrence of the field
  *            (exclusive index). If a field position is not found, the FieldPosition is not changed and
- *            the method returns FALSE.
+ *            the method returns false.
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unumf_resultNextFieldPosition(const UFormattedNumber* uresult, UFieldPosition* ufpos, UErrorCode* ec);
 
 
@@ -629,16 +654,37 @@
  * @param ec Set if an error occurs.
  * @stable ICU 62
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumf_resultGetAllFieldPositions(const UFormattedNumber* uresult, UFieldPositionIterator* ufpositer,
                                  UErrorCode* ec);
 
 
-// TODO(ICU-20775): Propose this as API.
-// NOTE: This is not currently implemented.
-// U_DRAFT int32_t U_EXPORT2
-// unumf_resultToDecimalNumber(const UFormattedNumber* uresult, char* buffer, int32_t bufferCapacity,
-//                             UErrorCode* ec);
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Extracts the formatted number as a "numeric string" conforming to the
+ * syntax defined in the Decimal Arithmetic Specification, available at
+ * http://speleotrove.com/decimal
+ *
+ * This endpoint is useful for obtaining the exact number being printed
+ * after scaling and rounding have been applied by the number formatter.
+ *
+ * @param uresult        The input object containing the formatted number.
+ * @param  dest          the 8-bit char buffer into which the decimal number is placed
+ * @param  destCapacity  The size, in chars, of the destination buffer.  May be zero
+ *                       for precomputing the required size.
+ * @param  ec            receives any error status.
+ *                       If U_BUFFER_OVERFLOW_ERROR: Returns number of chars for
+ *                       preflighting.
+ * @return Number of chars in the data.  Does not include a trailing NUL.
+ * @draft ICU 68
+ */
+U_CAPI int32_t U_EXPORT2
+unumf_resultToDecimalNumber(
+       const UFormattedNumber* uresult,
+       char* dest,
+       int32_t destCapacity,
+       UErrorCode* ec);
+#endif // U_HIDE_DRAFT_API
 
 
 /**
@@ -647,7 +693,7 @@
  * @param uformatter An object created by unumf_openForSkeletonAndLocale().
  * @stable ICU 62
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumf_close(UNumberFormatter* uformatter);
 
 
@@ -657,7 +703,7 @@
  * @param uresult An object created by unumf_openResult().
  * @stable ICU 62
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumf_closeResult(UFormattedNumber* uresult);
 
 
@@ -701,5 +747,5 @@
 U_NAMESPACE_END
 #endif // U_SHOW_CPLUSPLUS_API
 
-#endif //__UNUMBERFORMATTER_H__
 #endif /* #if !UCONFIG_NO_FORMATTING */
+#endif //__UNUMBERFORMATTER_H__
diff --git a/libicu/cts_headers/unicode/unumberrangeformatter.h b/libicu/cts_headers/unicode/unumberrangeformatter.h
new file mode 100644
index 0000000..e28fe51
--- /dev/null
+++ b/libicu/cts_headers/unicode/unumberrangeformatter.h
@@ -0,0 +1,477 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#ifndef __UNUMBERRANGEFORMATTER_H__
+#define __UNUMBERRANGEFORMATTER_H__
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "unicode/parseerr.h"
+#include "unicode/ufieldpositer.h"
+#include "unicode/umisc.h"
+#include "unicode/uformattedvalue.h"
+#include "unicode/uformattable.h"
+
+
+/**
+ * \file
+ * \brief C-compatible API for localized number range formatting.
+ *
+ * This is the C-compatible version of the NumberRangeFormatter API. C++ users
+ * should include unicode/numberrangeformatter.h and use the proper C++ APIs.
+ *
+ * First create a UNumberRangeFormatter, which is immutable, and then format to
+ * a UFormattedNumberRange.
+ *
+ * Example code:
+ * <pre>
+ * // Setup:
+ * UErrorCode ec = U_ZERO_ERROR;
+ * UNumberRangeFormatter* uformatter = unumrf_openForSkeletonCollapseIdentityFallbackAndLocaleWithError(
+ *     u"currency/USD precision-integer",
+ *     -1,
+ *     UNUM_RANGE_COLLAPSE_AUTO,
+ *     UNUM_IDENTITY_FALLBACK_APPROXIMATELY,
+ *     "en-US",
+ *     NULL,
+ *     &ec);
+ * UFormattedNumberRange* uresult = unumrf_openResult(&ec);
+ * if (U_FAILURE(ec)) { return; }
+ *
+ * // Format a double range:
+ * unumrf_formatDoubleRange(uformatter, 3.0, 5.0, uresult, &ec);
+ * if (U_FAILURE(ec)) { return; }
+ *
+ * // Get the result string:
+ * int32_t len;
+ * const UChar* str = ufmtval_getString(unumrf_resultAsValue(uresult, &ec), &len, &ec);
+ * if (U_FAILURE(ec)) { return; }
+ * // str should equal "$3 – $5"
+ *
+ * // Cleanup:
+ * unumf_close(uformatter);
+ * unumf_closeResult(uresult);
+ * </pre>
+ *
+ * If you are a C++ user linking against the C libraries, you can use the LocalPointer versions of these
+ * APIs. The following example uses LocalPointer with the decimal number and field position APIs:
+ *
+ * <pre>
+ * // Setup:
+ * LocalUNumberRangeFormatterPointer uformatter(
+ *     unumrf_openForSkeletonCollapseIdentityFallbackAndLocaleWithError(...));
+ * LocalUFormattedNumberRangePointer uresult(unumrf_openResult(&ec));
+ * if (U_FAILURE(ec)) { return; }
+ *
+ * // Format a double number range:
+ * unumrf_formatDoubleRange(uformatter.getAlias(), 3.0, 5.0, uresult.getAlias(), &ec);
+ * if (U_FAILURE(ec)) { return; }
+ *
+ * // No need to do any cleanup since we are using LocalPointer.
+ * </pre>
+ *
+ * You can also get field positions. For more information, see uformattedvalue.h.
+ */
+
+/**
+ * Defines how to merge fields that are identical across the range sign.
+ *
+ * @stable ICU 63
+ */
+typedef enum UNumberRangeCollapse {
+    /**
+     * Use locale data and heuristics to determine how much of the string to collapse. Could end up collapsing none,
+     * some, or all repeated pieces in a locale-sensitive way.
+     *
+     * The heuristics used for this option are subject to change over time.
+     *
+     * @stable ICU 63
+     */
+    UNUM_RANGE_COLLAPSE_AUTO,
+
+    /**
+     * Do not collapse any part of the number. Example: "3.2 thousand kilograms – 5.3 thousand kilograms"
+     *
+     * @stable ICU 63
+     */
+    UNUM_RANGE_COLLAPSE_NONE,
+
+    /**
+     * Collapse the unit part of the number, but not the notation, if present. Example: "3.2 thousand – 5.3 thousand
+     * kilograms"
+     *
+     * @stable ICU 63
+     */
+    UNUM_RANGE_COLLAPSE_UNIT,
+
+    /**
+     * Collapse any field that is equal across the range sign. May introduce ambiguity on the magnitude of the
+     * number. Example: "3.2 – 5.3 thousand kilograms"
+     *
+     * @stable ICU 63
+     */
+    UNUM_RANGE_COLLAPSE_ALL
+} UNumberRangeCollapse;
+
+/**
+ * Defines the behavior when the two numbers in the range are identical after rounding. To programmatically detect
+ * when the identity fallback is used, compare the lower and upper BigDecimals via FormattedNumber.
+ *
+ * @stable ICU 63
+ * @see NumberRangeFormatter
+ */
+typedef enum UNumberRangeIdentityFallback {
+    /**
+     * Show the number as a single value rather than a range. Example: "$5"
+     *
+     * @stable ICU 63
+     */
+    UNUM_IDENTITY_FALLBACK_SINGLE_VALUE,
+
+    /**
+     * Show the number using a locale-sensitive approximation pattern. If the numbers were the same before rounding,
+     * show the single value. Example: "~$5" or "$5"
+     *
+     * @stable ICU 63
+     */
+    UNUM_IDENTITY_FALLBACK_APPROXIMATELY_OR_SINGLE_VALUE,
+
+    /**
+     * Show the number using a locale-sensitive approximation pattern. Use the range pattern always, even if the
+     * inputs are the same. Example: "~$5"
+     *
+     * @stable ICU 63
+     */
+    UNUM_IDENTITY_FALLBACK_APPROXIMATELY,
+
+    /**
+     * Show the number as the range of two equal values. Use the range pattern always, even if the inputs are the
+     * same. Example (with RangeCollapse.NONE): "$5 – $5"
+     *
+     * @stable ICU 63
+     */
+    UNUM_IDENTITY_FALLBACK_RANGE
+} UNumberRangeIdentityFallback;
+
+/**
+ * Used in the result class FormattedNumberRange to indicate to the user whether the numbers formatted in the range
+ * were equal or not, and whether or not the identity fallback was applied.
+ *
+ * @stable ICU 63
+ * @see NumberRangeFormatter
+ */
+typedef enum UNumberRangeIdentityResult {
+    /**
+     * Used to indicate that the two numbers in the range were equal, even before any rounding rules were applied.
+     *
+     * @stable ICU 63
+     * @see NumberRangeFormatter
+     */
+    UNUM_IDENTITY_RESULT_EQUAL_BEFORE_ROUNDING,
+
+    /**
+     * Used to indicate that the two numbers in the range were equal, but only after rounding rules were applied.
+     *
+     * @stable ICU 63
+     * @see NumberRangeFormatter
+     */
+    UNUM_IDENTITY_RESULT_EQUAL_AFTER_ROUNDING,
+
+    /**
+     * Used to indicate that the two numbers in the range were not equal, even after rounding rules were applied.
+     *
+     * @stable ICU 63
+     * @see NumberRangeFormatter
+     */
+    UNUM_IDENTITY_RESULT_NOT_EQUAL,
+
+#ifndef U_HIDE_INTERNAL_API
+    /**
+     * The number of entries in this enum.
+     * @internal
+     */
+    UNUM_IDENTITY_RESULT_COUNT
+#endif
+
+} UNumberRangeIdentityResult;
+
+
+#ifndef U_HIDE_DRAFT_API
+
+struct UNumberRangeFormatter;
+/**
+ * C-compatible version of icu::number::LocalizedNumberRangeFormatter.
+ *
+ * NOTE: This is a C-compatible API; C++ users should build against numberrangeformatter.h instead.
+ *
+ * @draft ICU 68
+ */
+typedef struct UNumberRangeFormatter UNumberRangeFormatter;
+
+
+struct UFormattedNumberRange;
+/**
+ * C-compatible version of icu::number::FormattedNumberRange.
+ *
+ * NOTE: This is a C-compatible API; C++ users should build against numberrangeformatter.h instead.
+ *
+ * @draft ICU 68
+ */
+typedef struct UFormattedNumberRange UFormattedNumberRange;
+
+
+/**
+ * Creates a new UNumberFormatter for the given skeleton string, collapse option, identity fallback
+ * option, and locale. This is currently the only method for creating a new UNumberRangeFormatter.
+ *
+ * Objects of type UNumberRangeFormatter returned by this method are threadsafe.
+ *
+ * For more details on skeleton strings, see the documentation in numberrangeformatter.h. For more
+ * details on the usage of this API, see the documentation at the top of unumberrangeformatter.h.
+ *
+ * NOTE: This is a C-compatible API; C++ users should build against numberrangeformatter.h instead.
+ *
+ * @param skeleton The skeleton string, like u"percent precision-integer"
+ * @param skeletonLen The number of UChars in the skeleton string, or -1 if it is NUL-terminated.
+ * @param collapse Option for how to merge affixes (if unsure, use UNUM_RANGE_COLLAPSE_AUTO)
+ * @param identityFallback Option for resolving when both sides of the range are equal.
+ * @param locale The NUL-terminated locale ID.
+ * @param perror A parse error struct populated if an error occurs when parsing. Can be NULL.
+ *               If no error occurs, perror->offset will be set to -1.
+ * @param ec Set if an error occurs.
+ * @draft ICU 68
+ */
+U_CAPI UNumberRangeFormatter* U_EXPORT2
+unumrf_openForSkeletonWithCollapseAndIdentityFallback(
+    const UChar* skeleton,
+    int32_t skeletonLen,
+    UNumberRangeCollapse collapse,
+    UNumberRangeIdentityFallback identityFallback,
+    const char* locale,
+    UParseError* perror,
+    UErrorCode* ec);
+
+
+/**
+ * Creates an object to hold the result of a UNumberRangeFormatter
+ * operation. The object can be used repeatedly; it is cleared whenever
+ * passed to a format function.
+ *
+ * @param ec Set if an error occurs.
+ * @draft ICU 68
+ */
+U_CAPI UFormattedNumberRange* U_EXPORT2
+unumrf_openResult(UErrorCode* ec);
+
+
+/**
+ * Uses a UNumberRangeFormatter to format a range of doubles.
+ *
+ * The UNumberRangeFormatter can be shared between threads. Each thread should have its own local
+ * UFormattedNumberRange, however, for storing the result of the formatting operation.
+ *
+ * NOTE: This is a C-compatible API; C++ users should build against numberrangeformatter.h instead.
+ *
+ * @param uformatter A formatter object; see unumberrangeformatter.h.
+ * @param first The first (usually smaller) number in the range.
+ * @param second The second (usually larger) number in the range.
+ * @param uresult The object that will be mutated to store the result; see unumrf_openResult.
+ * @param ec Set if an error occurs.
+ * @draft ICU 68
+ */
+U_CAPI void U_EXPORT2
+unumrf_formatDoubleRange(
+    const UNumberRangeFormatter* uformatter,
+    double first,
+    double second,
+    UFormattedNumberRange* uresult,
+    UErrorCode* ec);
+
+
+/**
+ * Uses a UNumberRangeFormatter to format a range of decimal numbers.
+ *
+ * With a decimal number string, you can specify an input with arbitrary precision.
+ *
+ * The UNumberRangeFormatter can be shared between threads. Each thread should have its own local
+ * UFormattedNumberRange, however, for storing the result of the formatting operation.
+ *
+ * NOTE: This is a C-compatible API; C++ users should build against numberrangeformatter.h instead.
+ *
+ * @param uformatter A formatter object; see unumberrangeformatter.h.
+ * @param first The first (usually smaller) number in the range.
+ * @param firstLen The length of the first decimal number string.
+ * @param second The second (usually larger) number in the range.
+ * @param secondLen The length of the second decimal number string.
+ * @param uresult The object that will be mutated to store the result; see unumrf_openResult.
+ * @param ec Set if an error occurs.
+ * @draft ICU 68
+ */
+U_CAPI void U_EXPORT2
+unumrf_formatDecimalRange(
+    const UNumberRangeFormatter* uformatter,
+    const char* first,
+    int32_t firstLen,
+    const char* second,
+    int32_t secondLen,
+    UFormattedNumberRange* uresult,
+    UErrorCode* ec);
+
+
+/**
+ * Returns a representation of a UFormattedNumberRange as a UFormattedValue,
+ * which can be subsequently passed to any API requiring that type.
+ *
+ * The returned object is owned by the UFormattedNumberRange and is valid
+ * only as long as the UFormattedNumber is present and unchanged in memory.
+ *
+ * You can think of this method as a cast between types.
+ *
+ * @param uresult The object containing the formatted number range.
+ * @param ec Set if an error occurs.
+ * @return A UFormattedValue owned by the input object.
+ * @draft ICU 68
+ */
+U_CAPI const UFormattedValue* U_EXPORT2
+unumrf_resultAsValue(const UFormattedNumberRange* uresult, UErrorCode* ec);
+
+
+/**
+ * Extracts the identity result from a UFormattedNumberRange.
+ *
+ * NOTE: This is a C-compatible API; C++ users should build against numberformatter.h instead.
+ *
+ * @param uresult The object containing the formatted number range.
+ * @param ec Set if an error occurs.
+ * @return The identity result; see UNumberRangeIdentityResult.
+ * @draft ICU 68
+ */
+U_CAPI UNumberRangeIdentityResult U_EXPORT2
+unumrf_resultGetIdentityResult(
+    const UFormattedNumberRange* uresult,
+    UErrorCode* ec);
+
+
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Extracts the first formatted number as a decimal number. This endpoint
+ * is useful for obtaining the exact number being printed after scaling
+ * and rounding have been applied by the number range formatting pipeline.
+ * 
+ * The syntax of the unformatted number is a "numeric string"
+ * as defined in the Decimal Arithmetic Specification, available at
+ * http://speleotrove.com/decimal
+ *
+ * @param  uresult       The input object containing the formatted number range.
+ * @param  dest          the 8-bit char buffer into which the decimal number is placed
+ * @param  destCapacity  The size, in chars, of the destination buffer.  May be zero
+ *                       for precomputing the required size.
+ * @param  ec            receives any error status.
+ *                       If U_BUFFER_OVERFLOW_ERROR: Returns number of chars for
+ *                       preflighting.
+ * @return Number of chars in the data.  Does not include a trailing NUL.
+ * @draft ICU 68
+ */
+U_CAPI int32_t U_EXPORT2
+unumrf_resultGetFirstDecimalNumber(
+    const UFormattedNumberRange* uresult,
+    char* dest,
+    int32_t destCapacity,
+    UErrorCode* ec);
+
+
+/**
+ * Extracts the second formatted number as a decimal number. This endpoint
+ * is useful for obtaining the exact number being printed after scaling
+ * and rounding have been applied by the number range formatting pipeline.
+ * 
+ * The syntax of the unformatted number is a "numeric string"
+ * as defined in the Decimal Arithmetic Specification, available at
+ * http://speleotrove.com/decimal
+ *
+ * @param  uresult       The input object containing the formatted number range.
+ * @param  dest          the 8-bit char buffer into which the decimal number is placed
+ * @param  destCapacity  The size, in chars, of the destination buffer.  May be zero
+ *                       for precomputing the required size.
+ * @param  ec            receives any error status.
+ *                       If U_BUFFER_OVERFLOW_ERROR: Returns number of chars for
+ *                       preflighting.
+ * @return Number of chars in the data.  Does not include a trailing NUL.
+ * @draft ICU 68
+ */
+U_CAPI int32_t U_EXPORT2
+unumrf_resultGetSecondDecimalNumber(
+    const UFormattedNumberRange* uresult,
+    char* dest,
+    int32_t destCapacity,
+    UErrorCode* ec);
+#endif // U_HIDE_DRAFT_API
+
+
+/**
+ * Releases the UNumberFormatter created by unumf_openForSkeletonAndLocale().
+ *
+ * @param uformatter An object created by unumf_openForSkeletonAndLocale().
+ * @draft ICU 68
+ */
+U_CAPI void U_EXPORT2
+unumrf_close(UNumberRangeFormatter* uformatter);
+
+
+/**
+ * Releases the UFormattedNumber created by unumf_openResult().
+ *
+ * @param uresult An object created by unumf_openResult().
+ * @draft ICU 68
+ */
+U_CAPI void U_EXPORT2
+unumrf_closeResult(UFormattedNumberRange* uresult);
+
+
+#if U_SHOW_CPLUSPLUS_API
+U_NAMESPACE_BEGIN
+
+/**
+ * \class LocalUNumberRangeFormatterPointer
+ * "Smart pointer" class; closes a UNumberFormatter via unumf_close().
+ * For most methods see the LocalPointerBase base class.
+ *
+ * Usage:
+ * <pre>
+ * LocalUNumberRangeFormatterPointer uformatter(
+ *     unumrf_openForSkeletonCollapseIdentityFallbackAndLocaleWithError(...));
+ * // no need to explicitly call unumrf_close()
+ * </pre>
+ *
+ * @see LocalPointerBase
+ * @see LocalPointer
+ * @draft ICU 68
+ */
+U_DEFINE_LOCAL_OPEN_POINTER(LocalUNumberRangeFormatterPointer, UNumberRangeFormatter, unumrf_close);
+
+/**
+ * \class LocalUFormattedNumberPointer
+ * "Smart pointer" class; closes a UFormattedNumber via unumf_closeResult().
+ * For most methods see the LocalPointerBase base class.
+ *
+ * Usage:
+ * <pre>
+ * LocalUFormattedNumberRangePointer uresult(unumrf_openResult(...));
+ * // no need to explicitly call unumrf_closeResult()
+ * </pre>
+ *
+ * @see LocalPointerBase
+ * @see LocalPointer
+ * @draft ICU 68
+ */
+U_DEFINE_LOCAL_OPEN_POINTER(LocalUFormattedNumberRangePointer, UFormattedNumberRange, unumrf_closeResult);
+
+U_NAMESPACE_END
+#endif // U_SHOW_CPLUSPLUS_API
+
+#endif // U_HIDE_DRAFT_API
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+#endif //__UNUMBERRANGEFORMATTER_H__
diff --git a/libicu/cts_headers/unicode/unumsys.h b/libicu/cts_headers/unicode/unumsys.h
index d459e80..fe713ea 100644
--- a/libicu/cts_headers/unicode/unumsys.h
+++ b/libicu/cts_headers/unicode/unumsys.h
@@ -57,7 +57,7 @@
  *                  occurred.
  * @stable ICU 52
  */
-U_STABLE UNumberingSystem * U_EXPORT2
+U_CAPI UNumberingSystem * U_EXPORT2
 unumsys_open(const char *locale, UErrorCode *status);
 
 /**
@@ -78,7 +78,7 @@
  *                  occurred.
  * @stable ICU 52
  */
-U_STABLE UNumberingSystem * U_EXPORT2
+U_CAPI UNumberingSystem * U_EXPORT2
 unumsys_openByName(const char *name, UErrorCode *status);
 
 /**
@@ -86,7 +86,7 @@
  * @param unumsys   The UNumberingSystem object to close.
  * @stable ICU 52
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unumsys_close(UNumberingSystem *unumsys);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -114,7 +114,7 @@
  *                  or NULL if an error occurred.
  * @stable ICU 52
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 unumsys_openAvailableNames(UErrorCode *status);
 
 /**
@@ -126,18 +126,18 @@
  *                  is only valid for the lifetime of the UNumberingSystem object.
  * @stable ICU 52
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 unumsys_getName(const UNumberingSystem *unumsys);
 
 /**
  * Returns whether the given UNumberingSystem object is for an algorithmic (not purely
  * positional) system.
  * @param unumsys   The UNumberingSystem whose algorithmic status is desired.
- * @return          TRUE if the specified UNumberingSystem object is for an algorithmic
+ * @return          true if the specified UNumberingSystem object is for an algorithmic
  *                  system.
  * @stable ICU 52
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unumsys_isAlgorithmic(const UNumberingSystem *unumsys);
 
 /**
@@ -148,7 +148,7 @@
  * @return          The radix of the specified UNumberingSystem object.
  * @stable ICU 52
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unumsys_getRadix(const UNumberingSystem *unumsys);
 
 /**
@@ -167,7 +167,7 @@
  *                  output was truncated.
  * @stable ICU 52
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unumsys_getDescription(const UNumberingSystem *unumsys, UChar *result,
                        int32_t resultLength, UErrorCode *status);
 
diff --git a/libicu/cts_headers/unicode/upluralrules.h b/libicu/cts_headers/unicode/upluralrules.h
index ec8cc81..71a45dd 100644
--- a/libicu/cts_headers/unicode/upluralrules.h
+++ b/libicu/cts_headers/unicode/upluralrules.h
@@ -26,6 +26,7 @@
 
 // Forward-declaration
 struct UFormattedNumber;
+struct UFormattedNumberRange;
 
 /**
  * \file
@@ -167,7 +168,7 @@
  * @param uplrules The UPluralRules object specifying the rules.
  * @param number The formatted number for which the rule has to be determined.
  * @param keyword The destination buffer for the keyword of the rule that
- *         applies to number.
+ *         applies to the number.
  * @param capacity The capacity of the keyword buffer.
  * @param status A pointer to a UErrorCode to receive any errors.
  * @return The length of the keyword.
@@ -179,6 +180,29 @@
                UChar *keyword, int32_t capacity,
                UErrorCode *status);
 
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Given a formatted number range, returns the overall plural form of the
+ * range. For example, "3-5" returns "other" in English.
+ *
+ * To get a UFormattedNumberRange, see UNumberRangeFormatter.
+ *
+ * @param uplrules The UPluralRules object specifying the rules.
+ * @param urange The number range onto which the rules will be applied.
+ * @param keyword The destination buffer for the keyword of the rule that
+ *         applies to the number range.
+ * @param capacity The capacity of the keyword buffer.
+ * @param status A pointer to a UErrorCode to receive any errors.
+ * @return The length of the keyword.
+ * @draft ICU 68
+ */
+U_CAPI int32_t U_EXPORT2
+uplrules_selectForRange(const UPluralRules *uplrules,
+               const struct UFormattedNumberRange* urange,
+               UChar *keyword, int32_t capacity,
+               UErrorCode *status);
+#endif // U_HIDE_DRAFT_API
+
 #ifndef U_HIDE_INTERNAL_API
 /**
  * Given a number, returns the keyword of the first rule that applies to the
@@ -198,7 +222,7 @@
  * @return The length of keyword.
  * @internal ICU 59 technology preview, may be removed in the future
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uplrules_selectWithFormat(const UPluralRules *uplrules,
                           double number,
                           const UNumberFormat *fmt,
@@ -217,7 +241,7 @@
  * upon error. The caller is responsible for closing the result.
  * @stable ICU 59
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uplrules_getKeywords(const UPluralRules *uplrules,
                      UErrorCode *status);
 
diff --git a/libicu/cts_headers/unicode/uregex.h b/libicu/cts_headers/unicode/uregex.h
index dab172d..e946e63 100644
--- a/libicu/cts_headers/unicode/uregex.h
+++ b/libicu/cts_headers/unicode/uregex.h
@@ -134,7 +134,7 @@
   * @stable ICU 3.0
   *
   */
-U_STABLE URegularExpression * U_EXPORT2
+U_CAPI URegularExpression * U_EXPORT2
 uregex_open( const  UChar          *pattern,
                     int32_t         patternLength,
                     uint32_t        flags,
@@ -164,7 +164,7 @@
   *
   * @stable ICU 4.6
   */
-U_STABLE URegularExpression *  U_EXPORT2
+U_CAPI URegularExpression *  U_EXPORT2
 uregex_openUText(UText          *pattern,
                  uint32_t        flags,
                  UParseError    *pe,
@@ -194,7 +194,7 @@
   *
   * @stable ICU 3.0
   */
-U_STABLE URegularExpression * U_EXPORT2
+U_CAPI URegularExpression * U_EXPORT2
 uregex_openC( const char           *pattern,
                     uint32_t        flags,
                     UParseError    *pe,
@@ -210,7 +210,7 @@
   * @param regexp   The regular expression to be closed.
   * @stable ICU 3.0
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_close(URegularExpression *regexp);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -250,7 +250,7 @@
  * @return the cloned copy of the compiled regular expression.
  * @stable ICU 3.0
  */
-U_STABLE URegularExpression * U_EXPORT2 
+U_CAPI URegularExpression * U_EXPORT2 
 uregex_clone(const URegularExpression *regexp, UErrorCode *status);
 
 /**
@@ -270,7 +270,7 @@
  *                   will remain valid until the regular expression is closed.
  * @stable ICU 3.0
  */
-U_STABLE const UChar * U_EXPORT2 
+U_CAPI const UChar * U_EXPORT2 
 uregex_pattern(const URegularExpression *regexp,
                      int32_t            *patLength,
                      UErrorCode         *status);
@@ -286,7 +286,7 @@
  *
  * @stable ICU 4.6
  */
-U_STABLE UText * U_EXPORT2 
+U_CAPI UText * U_EXPORT2 
 uregex_patternUText(const URegularExpression *regexp,
                           UErrorCode         *status);
 
@@ -298,7 +298,7 @@
   * @see URegexpFlag
   * @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_flags(const  URegularExpression   *regexp,
                     UErrorCode           *status);
 
@@ -323,7 +323,7 @@
   * @param status     Receives errors detected by this function.
   * @stable ICU 3.0
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_setText(URegularExpression *regexp,
                const UChar        *text,
                int32_t             textLength,
@@ -346,7 +346,7 @@
   *
   * @stable ICU 4.6
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_setUText(URegularExpression *regexp,
                 UText              *text,
                 UErrorCode         *status);
@@ -371,7 +371,7 @@
   *                    this regular expression.
   * @stable ICU 3.0
   */
-U_STABLE const UChar * U_EXPORT2 
+U_CAPI const UChar * U_EXPORT2 
 uregex_getText(URegularExpression *regexp,
                int32_t            *textLength,
                UErrorCode         *status);
@@ -392,7 +392,7 @@
   *
   * @stable ICU 4.6
   */
-U_STABLE UText * U_EXPORT2 
+U_CAPI UText * U_EXPORT2 
 uregex_getUText(URegularExpression *regexp,
                 UText              *dest,
                 UErrorCode         *status);
@@ -422,7 +422,7 @@
   *
   * @stable ICU 4.8
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_refreshUText(URegularExpression *regexp,
                     UText              *text,
                     UErrorCode         *status);
@@ -444,10 +444,10 @@
   *    @param  startIndex  The input string (native) index at which to begin matching, or -1
   *                        to match the input Region.
   *    @param  status      Receives errors detected by this function.
-  *    @return             TRUE if there is a match
+  *    @return             true if there is a match
   *    @stable ICU 3.0
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_matches(URegularExpression *regexp,
                 int32_t            startIndex,
                 UErrorCode        *status);
@@ -470,10 +470,10 @@
   *    @param  startIndex  The input string (native) index at which to begin matching, or -1
   *                        to match the input Region.
   *    @param  status      Receives errors detected by this function.
-  *    @return             TRUE if there is a match
+  *    @return             true if there is a match
   *   @stable ICU 4.6
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_matches64(URegularExpression *regexp,
                  int64_t            startIndex,
                  UErrorCode        *status);
@@ -498,10 +498,10 @@
   *    @param   startIndex  The input string (native) index at which to begin matching, or
   *                         -1 to match the Input Region
   *    @param   status      A reference to a UErrorCode to receive any errors.
-  *    @return  TRUE if there is a match.
+  *    @return  true if there is a match.
   *    @stable ICU 3.0
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_lookingAt(URegularExpression *regexp,
                  int32_t             startIndex,
                  UErrorCode         *status);
@@ -527,10 +527,10 @@
   *    @param   startIndex  The input string (native) index at which to begin matching, or
   *                         -1 to match the Input Region
   *    @param   status      A reference to a UErrorCode to receive any errors.
-  *    @return  TRUE if there is a match.
+  *    @return  true if there is a match.
   *    @stable ICU 4.6
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_lookingAt64(URegularExpression *regexp,
                    int64_t             startIndex,
                    UErrorCode         *status);
@@ -551,10 +551,10 @@
   *   @param   startIndex  The position (native) in the input string to begin the search, or
   *                        -1 to search within the Input Region.
   *   @param   status      A reference to a UErrorCode to receive any errors.
-  *   @return              TRUE if a match is found.
+  *   @return              true if a match is found.
   *   @stable ICU 3.0
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_find(URegularExpression *regexp,
             int32_t             startIndex, 
             UErrorCode         *status);
@@ -576,10 +576,10 @@
   *   @param   startIndex  The position (native) in the input string to begin the search, or
   *                        -1 to search within the Input Region.
   *   @param   status      A reference to a UErrorCode to receive any errors.
-  *   @return              TRUE if a match is found.
+  *   @return              true if a match is found.
   *   @stable ICU 4.6
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_find64(URegularExpression *regexp,
               int64_t             startIndex, 
               UErrorCode         *status);
@@ -593,11 +593,11 @@
   *
   *  @param   regexp      The compiled regular expression.
   *  @param   status      A reference to a UErrorCode to receive any errors.
-  *  @return              TRUE if a match is found.
+  *  @return              true if a match is found.
   *  @see uregex_reset
   *  @stable ICU 3.0
   */
-U_STABLE UBool U_EXPORT2 
+U_CAPI UBool U_EXPORT2 
 uregex_findNext(URegularExpression *regexp,
                 UErrorCode         *status);
 
@@ -608,7 +608,7 @@
   *   @return the number of capture groups
   *   @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_groupCount(URegularExpression *regexp,
                   UErrorCode         *status);
 
@@ -628,7 +628,7 @@
   *
   * @stable ICU 55
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregex_groupNumberFromName(URegularExpression *regexp,
                            const UChar        *groupName,
                            int32_t             nameLength,
@@ -652,7 +652,7 @@
   *
   * @stable ICU 55
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregex_groupNumberFromCName(URegularExpression *regexp,
                             const char         *groupName,
                             int32_t             nameLength,
@@ -674,7 +674,7 @@
   *                         or -1 if no applicable match.
   *   @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_group(URegularExpression *regexp,
              int32_t             groupNum,
              UChar              *dest,
@@ -703,7 +703,7 @@
   *
   *   @stable ICU 4.6
   */
-U_STABLE UText * U_EXPORT2 
+U_CAPI UText * U_EXPORT2 
 uregex_groupUText(URegularExpression *regexp,
                   int32_t             groupNum,
                   UText              *dest,
@@ -724,7 +724,7 @@
   *                         by the specified group.
   *    @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_start(URegularExpression *regexp,
              int32_t             groupNum,
              UErrorCode          *status);
@@ -744,7 +744,7 @@
   *                         by the specified group.
   *   @stable ICU 4.6
   */
-U_STABLE int64_t U_EXPORT2 
+U_CAPI int64_t U_EXPORT2 
 uregex_start64(URegularExpression *regexp,
                int32_t             groupNum,
                UErrorCode          *status);
@@ -762,7 +762,7 @@
   *    @return              the (native) index of the position following the last matched character.
   *    @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_end(URegularExpression   *regexp,
            int32_t               groupNum,
            UErrorCode           *status);
@@ -781,7 +781,7 @@
   *    @return              the (native) index of the position following the last matched character.
   *   @stable ICU 4.6
   */
-U_STABLE int64_t U_EXPORT2 
+U_CAPI int64_t U_EXPORT2 
 uregex_end64(URegularExpression *regexp,
              int32_t               groupNum,
              UErrorCode           *status);
@@ -799,7 +799,7 @@
   *    @param   status      A reference to a UErrorCode to receive any errors.
   *    @stable ICU 3.0
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_reset(URegularExpression    *regexp,
              int32_t               index,
              UErrorCode            *status);
@@ -818,7 +818,7 @@
   *    @param   status      A reference to a UErrorCode to receive any errors.
   *    @stable ICU 4.6
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_reset64(URegularExpression  *regexp,
                int64_t               index,
                UErrorCode            *status);
@@ -843,7 +843,7 @@
   * @param status A pointer to a UErrorCode to receive any errors.
   * @stable ICU 4.0
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_setRegion(URegularExpression   *regexp,
                  int32_t               regionStart,
                  int32_t               regionLimit,
@@ -870,7 +870,7 @@
   * @param status A pointer to a UErrorCode to receive any errors.
   * @stable ICU 4.6
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_setRegion64(URegularExpression *regexp,
                  int64_t               regionStart,
                  int64_t               regionLimit,
@@ -890,7 +890,7 @@
   * @param status A pointer to a UErrorCode to receive any errors.
   * @stable ICU 4.6
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_setRegionAndStart(URegularExpression *regexp,
                  int64_t               regionStart,
                  int64_t               regionLimit,
@@ -906,7 +906,7 @@
   * @return The starting (native) index of this matcher's region.
   * @stable ICU 4.0
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregex_regionStart(const  URegularExpression   *regexp,
                           UErrorCode           *status);
 
@@ -920,7 +920,7 @@
   * @return The starting (native) index of this matcher's region.
   * @stable ICU 4.6
   */
-U_STABLE int64_t U_EXPORT2 
+U_CAPI int64_t U_EXPORT2 
 uregex_regionStart64(const  URegularExpression   *regexp,
                             UErrorCode           *status);
 
@@ -934,7 +934,7 @@
   * @return The ending point (native) of this matcher's region.
   * @stable ICU 4.0
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregex_regionEnd(const  URegularExpression   *regexp,
                         UErrorCode           *status);
 
@@ -949,7 +949,7 @@
   * @return The ending point (native) of this matcher's region.
   * @stable ICU 4.6
   */
-U_STABLE int64_t U_EXPORT2 
+U_CAPI int64_t U_EXPORT2 
 uregex_regionEnd64(const  URegularExpression   *regexp,
                           UErrorCode           *status);
 
@@ -960,18 +960,18 @@
   *
   * @param regexp The compiled regular expression.
   * @param status A pointer to a UErrorCode to receive any errors.
-  * @return TRUE if this matcher is using opaque bounds, false if it is not.
+  * @return true if this matcher is using opaque bounds, false if it is not.
   * @stable ICU 4.0
   */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uregex_hasTransparentBounds(const  URegularExpression   *regexp,
                                    UErrorCode           *status);
 
 
 /**
   * Sets the transparency of region bounds for this URegularExpression.
-  * Invoking this function with an argument of TRUE will set matches to use transparent bounds.
-  * If the boolean argument is FALSE, then opaque bounds will be used.
+  * Invoking this function with an argument of true will set matches to use transparent bounds.
+  * If the boolean argument is false, then opaque bounds will be used.
   *
   * Using transparent bounds, the boundaries of the matching region are transparent
   * to lookahead, lookbehind, and boundary matching constructs. Those constructs can
@@ -983,11 +983,11 @@
   * By default, opaque bounds are used.
   *
   * @param   regexp The compiled regular expression.
-  * @param   b      TRUE for transparent bounds; FALSE for opaque bounds
+  * @param   b      true for transparent bounds; false for opaque bounds
   * @param   status A pointer to a UErrorCode to receive any errors.
   * @stable ICU 4.0
   **/
-U_STABLE void U_EXPORT2  
+U_CAPI void U_EXPORT2  
 uregex_useTransparentBounds(URegularExpression   *regexp, 
                             UBool                b,
                             UErrorCode           *status);
@@ -999,10 +999,10 @@
   *
   * @param  regexp The compiled regular expression.
   * @param  status A pointer to a UErrorCode to receive any errors.
-  * @return TRUE if this matcher is using anchoring bounds.
+  * @return true if this matcher is using anchoring bounds.
   * @stable ICU 4.0
   */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uregex_hasAnchoringBounds(const  URegularExpression   *regexp,
                                  UErrorCode           *status);
 
@@ -1016,41 +1016,41 @@
   * Anchoring Bounds are the default for regions.
   *
   * @param regexp The compiled regular expression.
-  * @param b      TRUE if to enable anchoring bounds; FALSE to disable them.
+  * @param b      true if to enable anchoring bounds; false to disable them.
   * @param status A pointer to a UErrorCode to receive any errors.
   * @stable ICU 4.0
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_useAnchoringBounds(URegularExpression   *regexp,
                           UBool                 b,
                           UErrorCode           *status);
 
 /**
-  * Return TRUE if the most recent matching operation touched the
+  * Return true if the most recent matching operation touched the
   *  end of the text being processed.  In this case, additional input text could
   *  change the results of that match.
   *
   *  @param regexp The compiled regular expression.
   *  @param status A pointer to a UErrorCode to receive any errors.
-  *  @return  TRUE if the most recent match hit the end of input
+  *  @return  true if the most recent match hit the end of input
   *  @stable ICU 4.0
   */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uregex_hitEnd(const  URegularExpression   *regexp,
                      UErrorCode           *status);
 
 /**
-  * Return TRUE the most recent match succeeded and additional input could cause
+  * Return true the most recent match succeeded and additional input could cause
   * it to fail. If this function returns false and a match was found, then more input
   * might change the match but the match won't be lost. If a match was not found,
   * then requireEnd has no meaning.
   *
   * @param regexp The compiled regular expression.
   * @param status A pointer to a UErrorCode to receive any errors.
-  * @return TRUE  if more input could cause the most recent match to no longer match.
+  * @return true  if more input could cause the most recent match to no longer match.
   * @stable ICU 4.0
   */
-U_STABLE UBool U_EXPORT2   
+U_CAPI UBool U_EXPORT2   
 uregex_requireEnd(const  URegularExpression   *regexp,
                          UErrorCode           *status);
 
@@ -1082,7 +1082,7 @@
   *                                is still the full length of the untruncated string.
   *    @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_replaceAll(URegularExpression    *regexp,
                   const UChar           *replacementText,
                   int32_t                replacementLength,
@@ -1111,7 +1111,7 @@
   *
   *    @stable ICU 4.6
   */
-U_STABLE UText * U_EXPORT2 
+U_CAPI UText * U_EXPORT2 
 uregex_replaceAllUText(URegularExpression *regexp,
                        UText              *replacement,
                        UText              *dest,
@@ -1141,7 +1141,7 @@
   *                                is still the full length of the untruncated string.
   *    @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_replaceFirst(URegularExpression  *regexp,
                     const UChar         *replacementText,
                     int32_t              replacementLength,
@@ -1170,7 +1170,7 @@
   *
   *    @stable ICU 4.6
   */
-U_STABLE UText * U_EXPORT2 
+U_CAPI UText * U_EXPORT2 
 uregex_replaceFirstUText(URegularExpression *regexp,
                          UText              *replacement,
                          UText              *dest,
@@ -1222,7 +1222,7 @@
   *   @stable ICU 3.0
   *
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_appendReplacement(URegularExpression    *regexp,
                          const UChar           *replacementText,
                          int32_t                replacementLength,
@@ -1252,7 +1252,7 @@
   *
   *   @stable ICU 4.6
   */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 uregex_appendReplacementUText(URegularExpression    *regexp,
                               UText                 *replacementText,
                               UText                 *dest,
@@ -1282,7 +1282,7 @@
   *
   *   @stable ICU 3.0
   */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_appendTail(URegularExpression    *regexp,
                   UChar                **destBuf,
                   int32_t               *destCapacity,
@@ -1306,7 +1306,7 @@
   *
   *   @stable ICU 4.6
   */
-U_STABLE UText * U_EXPORT2 
+U_CAPI UText * U_EXPORT2 
 uregex_appendTailUText(URegularExpression    *regexp,
                        UText                 *dest,
                        UErrorCode            *status);
@@ -1362,7 +1362,7 @@
    * @return        The number of fields into which the input string was split.
    * @stable ICU 3.0
    */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_split(   URegularExpression      *regexp,
                   UChar                 *destBuf,
                   int32_t                destCapacity,
@@ -1397,7 +1397,7 @@
    *
    * @stable ICU 4.6
    */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uregex_splitUText(URegularExpression    *regexp,
                   UText                 *destFields[],
                   int32_t                destFieldsCapacity,
@@ -1425,7 +1425,7 @@
  * @param   status      A reference to a UErrorCode to receive any errors.
  * @stable ICU 4.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_setTimeLimit(URegularExpression      *regexp,
                     int32_t                  limit,
                     UErrorCode              *status);
@@ -1439,7 +1439,7 @@
  * @return the maximum allowed time for a match, in units of processing steps.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregex_getTimeLimit(const URegularExpression      *regexp,
                           UErrorCode              *status);
 
@@ -1463,7 +1463,7 @@
  *
  * @stable ICU 4.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_setStackLimit(URegularExpression      *regexp,
                      int32_t                  limit,
                      UErrorCode              *status);
@@ -1475,7 +1475,7 @@
  *          stack size is unlimited.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregex_getStackLimit(const URegularExpression      *regexp,
                            UErrorCode              *status);
 
@@ -1483,7 +1483,7 @@
 /**
  * Function pointer for a regular expression matching callback function.
  * When set, a callback function will be called periodically during matching
- * operations.  If the call back function returns FALSE, the matching
+ * operations.  If the call back function returns false, the matching
  * operation will be terminated early.
  *
  * Note:  the callback function must not call other functions on this
@@ -1494,8 +1494,8 @@
  *                 uregex_setMatchCallback() is called.
  * @param steps    the accumulated processing time, in match steps, 
  *                 for this matching operation.
- * @return         TRUE to continue the matching operation.
- *                 FALSE to terminate the matching operation.
+ * @return         true to continue the matching operation.
+ *                 false to terminate the matching operation.
  * @stable ICU 4.0
  */
 U_CDECL_BEGIN
@@ -1518,7 +1518,7 @@
  * @param   status      A reference to a UErrorCode to receive any errors.
  * @stable ICU 4.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_setMatchCallback(URegularExpression      *regexp,
                         URegexMatchCallback     *callback,
                         const void              *context,
@@ -1536,7 +1536,7 @@
  * @param   status      A reference to a UErrorCode to receive any errors.
  * @stable ICU 4.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_getMatchCallback(const URegularExpression    *regexp,
                         URegexMatchCallback        **callback,
                         const void                 **context,
@@ -1557,7 +1557,7 @@
  * to be attempted, giving the application the opportunity to terminate a long-running
  * find operation.
  * 
- * If the call back function returns FALSE, the find operation will be terminated early.
+ * If the call back function returns false, the find operation will be terminated early.
  *
  * Note:  the callback function must not call other functions on this
  *        URegularExpression
@@ -1568,8 +1568,8 @@
  * @param matchIndex  the next index at which a match attempt will be attempted for this
  *                 find operation.  If this callback interrupts the search, this is the
  *                 index at which a find/findNext operation may be re-initiated.
- * @return         TRUE to continue the matching operation.
- *                 FALSE to terminate the matching operation.
+ * @return         true to continue the matching operation.
+ *                 false to terminate the matching operation.
  * @stable ICU 4.6
  */
 U_CDECL_BEGIN
@@ -1590,7 +1590,7 @@
  * @param   status      A reference to a UErrorCode to receive any errors.
  * @stable ICU 4.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_setFindProgressCallback(URegularExpression              *regexp,
                                 URegexFindProgressCallback      *callback,
                                 const void                      *context,
@@ -1607,7 +1607,7 @@
  * @param   status      A reference to a UErrorCode to receive any errors.
  * @stable ICU 4.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uregex_getFindProgressCallback(const URegularExpression          *regexp,
                                 URegexFindProgressCallback        **callback,
                                 const void                        **context,
diff --git a/libicu/cts_headers/unicode/uregion.h b/libicu/cts_headers/unicode/uregion.h
index a5de496..25472ae 100644
--- a/libicu/cts_headers/unicode/uregion.h
+++ b/libicu/cts_headers/unicode/uregion.h
@@ -133,7 +133,7 @@
  * (U_ILLEGAL_ARGUMENT_ERROR).
  * @stable ICU 52
  */
-U_STABLE const URegion* U_EXPORT2
+U_CAPI const URegion* U_EXPORT2
 uregion_getRegionFromCode(const char *regionCode, UErrorCode *status);
 
 /**
@@ -141,7 +141,7 @@
  * code is not recognized, the appropriate error code will be set (U_ILLEGAL_ARGUMENT_ERROR).
  * @stable ICU 52
  */
-U_STABLE const URegion* U_EXPORT2
+U_CAPI const URegion* U_EXPORT2
 uregion_getRegionFromNumericCode (int32_t code, UErrorCode *status);
 
 /**
@@ -149,14 +149,14 @@
  * The enumeration must be closed with with uenum_close().
  * @stable ICU 52
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uregion_getAvailable(URegionType type, UErrorCode *status);
 
 /**
  * Returns true if the specified uregion is equal to the specified otherRegion.
  * @stable ICU 52
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uregion_areEqual(const URegion* uregion, const URegion* otherRegion);
 
 /**
@@ -165,7 +165,7 @@
  * this method with region "IT" (Italy) returns the URegion for "039" (Southern Europe).
  * @stable ICU 52
  */
-U_STABLE const URegion* U_EXPORT2
+U_CAPI const URegion* U_EXPORT2
 uregion_getContainingRegion(const URegion* uregion);
 
 /**
@@ -177,7 +177,7 @@
  * URegion "150" (Europe).
  * @stable ICU 52
  */
-U_STABLE const URegion* U_EXPORT2
+U_CAPI const URegion* U_EXPORT2
 uregion_getContainingRegionOfType(const URegion* uregion, URegionType type);
 
 /**
@@ -190,7 +190,7 @@
  * and "155" (Western Europe). The enumeration must be closed with with uenum_close().
  * @stable ICU 52
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uregion_getContainedRegions(const URegion* uregion, UErrorCode *status);
 
 /**
@@ -202,7 +202,7 @@
  * etc. The enumeration must be closed with with uenum_close().
  * @stable ICU 52
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uregion_getContainedRegionsOfType(const URegion* uregion, URegionType type, UErrorCode *status);
 
 /**
@@ -210,7 +210,7 @@
  * hierarchy.
  * @stable ICU 52
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uregion_contains(const URegion* uregion, const URegion* otherRegion);
 
 /**
@@ -221,14 +221,14 @@
  * "AZ" (Azerbaijan), etc... The enumeration must be closed with with uenum_close().
  * @stable ICU 52
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uregion_getPreferredValues(const URegion* uregion, UErrorCode *status);
 
 /**
  * Returns the specified uregion's canonical code.
  * @stable ICU 52
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uregion_getRegionCode(const URegion* uregion);
 
 /**
@@ -236,14 +236,14 @@
  * for the specified uregion.
  * @stable ICU 52
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uregion_getNumericCode(const URegion* uregion);
 
 /**
  * Returns the URegionType of the specified uregion.
  * @stable ICU 52
  */
-U_STABLE URegionType U_EXPORT2
+U_CAPI URegionType U_EXPORT2
 uregion_getType(const URegion* uregion);
 
 
diff --git a/libicu/cts_headers/unicode/ureldatefmt.h b/libicu/cts_headers/unicode/ureldatefmt.h
index 3afc24b..3c44890 100644
--- a/libicu/cts_headers/unicode/ureldatefmt.h
+++ b/libicu/cts_headers/unicode/ureldatefmt.h
@@ -237,7 +237,7 @@
  *          or NULL if an error occurred.
  * @stable ICU 57
  */
-U_STABLE URelativeDateTimeFormatter* U_EXPORT2
+U_CAPI URelativeDateTimeFormatter* U_EXPORT2
 ureldatefmt_open( const char*          locale,
                   UNumberFormat*       nfToAdopt,
                   UDateRelativeDateTimeFormatterStyle width,
@@ -250,7 +250,7 @@
  *            The URelativeDateTimeFormatter object to close.
  * @stable ICU 57
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ureldatefmt_close(URelativeDateTimeFormatter *reldatefmt);
 
 struct UFormattedRelativeDateTime;
@@ -269,7 +269,7 @@
  * @return A pointer needing ownership.
  * @stable ICU 64
  */
-U_STABLE UFormattedRelativeDateTime* U_EXPORT2
+U_CAPI UFormattedRelativeDateTime* U_EXPORT2
 ureldatefmt_openResult(UErrorCode* ec);
 
 /**
@@ -286,7 +286,7 @@
  * @return A UFormattedValue owned by the input object.
  * @stable ICU 64
  */
-U_STABLE const UFormattedValue* U_EXPORT2
+U_CAPI const UFormattedValue* U_EXPORT2
 ureldatefmt_resultAsValue(const UFormattedRelativeDateTime* ufrdt, UErrorCode* ec);
 
 /**
@@ -295,7 +295,7 @@
  * @param ufrdt The object to release.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ureldatefmt_closeResult(UFormattedRelativeDateTime* ufrdt);
 
 
@@ -357,7 +357,7 @@
  *          than resultCapacity, in which case an error is returned.
  * @stable ICU 57
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ureldatefmt_formatNumeric( const URelativeDateTimeFormatter* reldatefmt,
                     double                offset,
                     URelativeDateTimeUnit unit,
@@ -388,7 +388,7 @@
  *          undefined.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ureldatefmt_formatNumericToResult(
     const URelativeDateTimeFormatter* reldatefmt,
     double                            offset,
@@ -424,7 +424,7 @@
  *          than resultCapacity, in which case an error is returned.
  * @stable ICU 57
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ureldatefmt_format( const URelativeDateTimeFormatter* reldatefmt,
                     double                offset,
                     URelativeDateTimeUnit unit,
@@ -458,7 +458,7 @@
  *          undefined.
  * @stable ICU 64
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ureldatefmt_formatToResult(
     const URelativeDateTimeFormatter* reldatefmt,
     double                            offset,
@@ -495,7 +495,7 @@
  *          in which case an error is returned.
  * @stable ICU 57
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ureldatefmt_combineDateAndTime( const URelativeDateTimeFormatter* reldatefmt,
                     const UChar *     relativeDateString,
                     int32_t           relativeDateStringLen,
diff --git a/libicu/cts_headers/unicode/urename.h b/libicu/cts_headers/unicode/urename.h
index 9837b71..7024728 100644
--- a/libicu/cts_headers/unicode/urename.h
+++ b/libicu/cts_headers/unicode/urename.h
@@ -130,7 +130,6 @@
 #define izrule_getStaticClassID U_ICU_ENTRY_POINT_RENAME(izrule_getStaticClassID)
 #define izrule_isEquivalentTo U_ICU_ENTRY_POINT_RENAME(izrule_isEquivalentTo)
 #define izrule_open U_ICU_ENTRY_POINT_RENAME(izrule_open)
-#define locale_getKeywords U_ICU_ENTRY_POINT_RENAME(locale_getKeywords)
 #define locale_getKeywordsStart U_ICU_ENTRY_POINT_RENAME(locale_getKeywordsStart)
 #define locale_get_default U_ICU_ENTRY_POINT_RENAME(locale_get_default)
 #define locale_set_default U_ICU_ENTRY_POINT_RENAME(locale_set_default)
@@ -918,9 +917,11 @@
 #define udtitvfmt_format U_ICU_ENTRY_POINT_RENAME(udtitvfmt_format)
 #define udtitvfmt_formatCalendarToResult U_ICU_ENTRY_POINT_RENAME(udtitvfmt_formatCalendarToResult)
 #define udtitvfmt_formatToResult U_ICU_ENTRY_POINT_RENAME(udtitvfmt_formatToResult)
+#define udtitvfmt_getContext U_ICU_ENTRY_POINT_RENAME(udtitvfmt_getContext)
 #define udtitvfmt_open U_ICU_ENTRY_POINT_RENAME(udtitvfmt_open)
 #define udtitvfmt_openResult U_ICU_ENTRY_POINT_RENAME(udtitvfmt_openResult)
 #define udtitvfmt_resultAsValue U_ICU_ENTRY_POINT_RENAME(udtitvfmt_resultAsValue)
+#define udtitvfmt_setContext U_ICU_ENTRY_POINT_RENAME(udtitvfmt_setContext)
 // #define uenum_close U_ICU_ENTRY_POINT_RENAME(uenum_close)
 // #define uenum_count U_ICU_ENTRY_POINT_RENAME(uenum_count)
 // #define uenum_next U_ICU_ENTRY_POINT_RENAME(uenum_next)
@@ -1079,7 +1080,6 @@
 // #define uloc_getDisplayLanguage U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayLanguage)
 // #define uloc_getDisplayName U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayName)
 // #define uloc_getDisplayScript U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayScript)
-#define uloc_getDisplayScriptInContext U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayScriptInContext)
 // #define uloc_getDisplayVariant U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayVariant)
 // #define uloc_getISO3Country U_ICU_ENTRY_POINT_RENAME(uloc_getISO3Country)
 // #define uloc_getISO3Language U_ICU_ENTRY_POINT_RENAME(uloc_getISO3Language)
@@ -1123,16 +1123,21 @@
 #define ulocimp_forLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocimp_forLanguageTag)
 #define ulocimp_getBaseName U_ICU_ENTRY_POINT_RENAME(ulocimp_getBaseName)
 #define ulocimp_getCountry U_ICU_ENTRY_POINT_RENAME(ulocimp_getCountry)
+#define ulocimp_getKeywordValue U_ICU_ENTRY_POINT_RENAME(ulocimp_getKeywordValue)
+#define ulocimp_getKeywords U_ICU_ENTRY_POINT_RENAME(ulocimp_getKeywords)
+#define ulocimp_getKnownCanonicalizedLocaleForTest U_ICU_ENTRY_POINT_RENAME(ulocimp_getKnownCanonicalizedLocaleForTest)
 #define ulocimp_getLanguage U_ICU_ENTRY_POINT_RENAME(ulocimp_getLanguage)
 #define ulocimp_getName U_ICU_ENTRY_POINT_RENAME(ulocimp_getName)
 #define ulocimp_getRegionForSupplementalData U_ICU_ENTRY_POINT_RENAME(ulocimp_getRegionForSupplementalData)
 #define ulocimp_getScript U_ICU_ENTRY_POINT_RENAME(ulocimp_getScript)
+#define ulocimp_isCanonicalizedLocaleForTest U_ICU_ENTRY_POINT_RENAME(ulocimp_isCanonicalizedLocaleForTest)
 #define ulocimp_minimizeSubtags U_ICU_ENTRY_POINT_RENAME(ulocimp_minimizeSubtags)
 #define ulocimp_toBcpKey U_ICU_ENTRY_POINT_RENAME(ulocimp_toBcpKey)
 #define ulocimp_toBcpType U_ICU_ENTRY_POINT_RENAME(ulocimp_toBcpType)
 #define ulocimp_toLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocimp_toLanguageTag)
 #define ulocimp_toLegacyKey U_ICU_ENTRY_POINT_RENAME(ulocimp_toLegacyKey)
 #define ulocimp_toLegacyType U_ICU_ENTRY_POINT_RENAME(ulocimp_toLegacyType)
+#define ultag_getTKeyStart U_ICU_ENTRY_POINT_RENAME(ultag_getTKeyStart)
 #define ultag_isExtensionSubtags U_ICU_ENTRY_POINT_RENAME(ultag_isExtensionSubtags)
 #define ultag_isLanguageSubtag U_ICU_ENTRY_POINT_RENAME(ultag_isLanguageSubtag)
 #define ultag_isPrivateuseValueSubtags U_ICU_ENTRY_POINT_RENAME(ultag_isPrivateuseValueSubtags)
@@ -1245,7 +1250,18 @@
 #define unumf_resultAsValue U_ICU_ENTRY_POINT_RENAME(unumf_resultAsValue)
 #define unumf_resultGetAllFieldPositions U_ICU_ENTRY_POINT_RENAME(unumf_resultGetAllFieldPositions)
 #define unumf_resultNextFieldPosition U_ICU_ENTRY_POINT_RENAME(unumf_resultNextFieldPosition)
+#define unumf_resultToDecimalNumber U_ICU_ENTRY_POINT_RENAME(unumf_resultToDecimalNumber)
 #define unumf_resultToString U_ICU_ENTRY_POINT_RENAME(unumf_resultToString)
+#define unumrf_close U_ICU_ENTRY_POINT_RENAME(unumrf_close)
+#define unumrf_closeResult U_ICU_ENTRY_POINT_RENAME(unumrf_closeResult)
+#define unumrf_formatDecimalRange U_ICU_ENTRY_POINT_RENAME(unumrf_formatDecimalRange)
+#define unumrf_formatDoubleRange U_ICU_ENTRY_POINT_RENAME(unumrf_formatDoubleRange)
+#define unumrf_openForSkeletonWithCollapseAndIdentityFallback U_ICU_ENTRY_POINT_RENAME(unumrf_openForSkeletonWithCollapseAndIdentityFallback)
+#define unumrf_openResult U_ICU_ENTRY_POINT_RENAME(unumrf_openResult)
+#define unumrf_resultAsValue U_ICU_ENTRY_POINT_RENAME(unumrf_resultAsValue)
+#define unumrf_resultGetFirstDecimalNumber U_ICU_ENTRY_POINT_RENAME(unumrf_resultGetFirstDecimalNumber)
+#define unumrf_resultGetIdentityResult U_ICU_ENTRY_POINT_RENAME(unumrf_resultGetIdentityResult)
+#define unumrf_resultGetSecondDecimalNumber U_ICU_ENTRY_POINT_RENAME(unumrf_resultGetSecondDecimalNumber)
 #define unumsys_close U_ICU_ENTRY_POINT_RENAME(unumsys_close)
 #define unumsys_getDescription U_ICU_ENTRY_POINT_RENAME(unumsys_getDescription)
 #define unumsys_getName U_ICU_ENTRY_POINT_RENAME(unumsys_getName)
@@ -1259,6 +1275,7 @@
 #define uplrules_open U_ICU_ENTRY_POINT_RENAME(uplrules_open)
 #define uplrules_openForType U_ICU_ENTRY_POINT_RENAME(uplrules_openForType)
 #define uplrules_select U_ICU_ENTRY_POINT_RENAME(uplrules_select)
+#define uplrules_selectForRange U_ICU_ENTRY_POINT_RENAME(uplrules_selectForRange)
 #define uplrules_selectFormatted U_ICU_ENTRY_POINT_RENAME(uplrules_selectFormatted)
 #define uplrules_selectWithFormat U_ICU_ENTRY_POINT_RENAME(uplrules_selectWithFormat)
 #define uplug_closeLibrary U_ICU_ENTRY_POINT_RENAME(uplug_closeLibrary)
diff --git a/libicu/cts_headers/unicode/ures.h b/libicu/cts_headers/unicode/ures.h
index c9dfc2d..fff8404 100644
--- a/libicu/cts_headers/unicode/ures.h
+++ b/libicu/cts_headers/unicode/ures.h
@@ -166,7 +166,7 @@
  * @see ures_close
  * @stable ICU 2.0
  */
-U_STABLE UResourceBundle*  U_EXPORT2
+U_CAPI UResourceBundle*  U_EXPORT2
 ures_open(const char*    packageName,
           const char*  locale,
           UErrorCode*     status);
@@ -189,7 +189,7 @@
  * @see ures_close
  * @stable ICU 2.0
  */
-U_STABLE UResourceBundle* U_EXPORT2
+U_CAPI UResourceBundle* U_EXPORT2
 ures_openDirect(const char* packageName,
                 const char* locale,
                 UErrorCode* status);
@@ -212,7 +212,7 @@
  * @see ures_open
  * @stable ICU 2.0
  */
-U_STABLE UResourceBundle* U_EXPORT2
+U_CAPI UResourceBundle* U_EXPORT2
 ures_openU(const UChar* packageName,
            const char* locale,
            UErrorCode* status);
@@ -248,7 +248,7 @@
  * @see ures_open
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ures_close(UResourceBundle* resourceBundle);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -294,7 +294,7 @@
  *                    as specified in the resource bundle or its parent.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ures_getVersion(const UResourceBundle* resB,
                 UVersionInfo versionInfo);
 
@@ -328,7 +328,7 @@
  * @return  A Locale name
  * @stable ICU 2.8
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 ures_getLocaleByType(const UResourceBundle* resourceBundle,
                      ULocDataLocaleType type,
                      UErrorCode* status);
@@ -351,7 +351,7 @@
  * @param status The error code.
  * @internal
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 ures_openFillIn(UResourceBundle *r,
                 const char* packageName,
                 const char* localeID,
@@ -375,7 +375,7 @@
  * @see ures_getUInt
  * @stable ICU 2.0
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ures_getString(const UResourceBundle* resourceBundle,
                int32_t* len,
                UErrorCode* status);
@@ -386,10 +386,10 @@
  * it may need to be copied, or transformed from UTF-16 using u_strToUTF8()
  * or equivalent.
  *
- * If forceCopy==TRUE, then the string is always written to the dest buffer
+ * If forceCopy==true, then the string is always written to the dest buffer
  * and dest is returned.
  *
- * If forceCopy==FALSE, then the string is returned as a pointer if possible,
+ * If forceCopy==false, then the string is returned as a pointer if possible,
  * without needing a dest buffer (it can be NULL). If the string needs to be
  * copied or transformed, then it may be placed into dest at an arbitrary offset.
  *
@@ -407,10 +407,10 @@
  *               terminating NUL, even in case of U_BUFFER_OVERFLOW_ERROR.
  *               Can be NULL, meaning capacity=0 and the string length is not
  *               returned to the caller.
- * @param forceCopy If TRUE, then the output string will always be written to
+ * @param forceCopy If true, then the output string will always be written to
  *                  dest, with U_BUFFER_OVERFLOW_ERROR and
  *                  U_STRING_NOT_TERMINATED_WARNING set if appropriate.
- *                  If FALSE, then the dest buffer may or may not contain a
+ *                  If false, then the dest buffer may or may not contain a
  *                  copy of the string. dest may or may not be modified.
  *                  If a copy needs to be written, then the UErrorCode parameter
  *                  indicates overflow etc. as usual.
@@ -427,7 +427,7 @@
  * @see u_strToUTF8
  * @stable ICU 3.6
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ures_getUTF8String(const UResourceBundle *resB,
                    char *dest, int32_t *length,
                    UBool forceCopy,
@@ -450,7 +450,7 @@
  * @see ures_getUInt
  * @stable ICU 2.0
  */
-U_STABLE const uint8_t* U_EXPORT2
+U_CAPI const uint8_t* U_EXPORT2
 ures_getBinary(const UResourceBundle* resourceBundle,
                int32_t* len,
                UErrorCode* status);
@@ -472,7 +472,7 @@
  * @see ures_getUInt
  * @stable ICU 2.0
  */
-U_STABLE const int32_t* U_EXPORT2
+U_CAPI const int32_t* U_EXPORT2
 ures_getIntVector(const UResourceBundle* resourceBundle,
                   int32_t* len,
                   UErrorCode* status);
@@ -493,7 +493,7 @@
  * @see ures_getString
  * @stable ICU 2.0
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 ures_getUInt(const UResourceBundle* resourceBundle,
              UErrorCode *status);
 
@@ -513,7 +513,7 @@
  * @see ures_getString
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ures_getInt(const UResourceBundle* resourceBundle,
             UErrorCode *status);
 
@@ -527,7 +527,7 @@
  * @return number of resources in a given resource.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ures_getSize(const UResourceBundle *resourceBundle);
 
 /**
@@ -538,7 +538,7 @@
  * @see UResType
  * @stable ICU 2.0
  */
-U_STABLE UResType U_EXPORT2
+U_CAPI UResType U_EXPORT2
 ures_getType(const UResourceBundle *resourceBundle);
 
 /**
@@ -549,7 +549,7 @@
  * @return a key associated to this resource, or NULL if it doesn't have a key
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ures_getKey(const UResourceBundle *resourceBundle);
 
 /* ITERATION API
@@ -562,17 +562,17 @@
  * @param resourceBundle a resource
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ures_resetIterator(UResourceBundle *resourceBundle);
 
 /**
  * Checks whether the given resource has another element to iterate over.
  *
  * @param resourceBundle a resource
- * @return TRUE if there are more elements, FALSE if there is no more elements
+ * @return true if there are more elements, false if there is no more elements
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ures_hasNext(const UResourceBundle *resourceBundle);
 
 /**
@@ -587,7 +587,7 @@
  * @return                  a pointer to a UResourceBundle struct. If fill in param was NULL, caller must close it
  * @stable ICU 2.0
  */
-U_STABLE UResourceBundle* U_EXPORT2
+U_CAPI UResourceBundle* U_EXPORT2
 ures_getNextResource(UResourceBundle *resourceBundle,
                      UResourceBundle *fillIn,
                      UErrorCode *status);
@@ -604,7 +604,7 @@
  * @return a pointer to a zero-terminated UChar array which lives in a memory mapped/DLL file.
  * @stable ICU 2.0
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ures_getNextString(UResourceBundle *resourceBundle,
                    int32_t* len,
                    const char ** key,
@@ -622,7 +622,7 @@
  * @return                  a pointer to a UResourceBundle struct. If fill in param was NULL, caller must close it
  * @stable ICU 2.0
  */
-U_STABLE UResourceBundle* U_EXPORT2
+U_CAPI UResourceBundle* U_EXPORT2
 ures_getByIndex(const UResourceBundle *resourceBundle,
                 int32_t indexR,
                 UResourceBundle *fillIn,
@@ -639,7 +639,7 @@
  * @return                  a pointer to a zero-terminated UChar array which lives in a memory mapped/DLL file.
  * @stable ICU 2.0
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ures_getStringByIndex(const UResourceBundle *resourceBundle,
                       int32_t indexS,
                       int32_t* len,
@@ -651,10 +651,10 @@
  * it may need to be copied, or transformed from UTF-16 using u_strToUTF8()
  * or equivalent.
  *
- * If forceCopy==TRUE, then the string is always written to the dest buffer
+ * If forceCopy==true, then the string is always written to the dest buffer
  * and dest is returned.
  *
- * If forceCopy==FALSE, then the string is returned as a pointer if possible,
+ * If forceCopy==false, then the string is returned as a pointer if possible,
  * without needing a dest buffer (it can be NULL). If the string needs to be
  * copied or transformed, then it may be placed into dest at an arbitrary offset.
  *
@@ -673,10 +673,10 @@
  *               terminating NUL, even in case of U_BUFFER_OVERFLOW_ERROR.
  *               Can be NULL, meaning capacity=0 and the string length is not
  *               returned to the caller.
- * @param forceCopy If TRUE, then the output string will always be written to
+ * @param forceCopy If true, then the output string will always be written to
  *                  dest, with U_BUFFER_OVERFLOW_ERROR and
  *                  U_STRING_NOT_TERMINATED_WARNING set if appropriate.
- *                  If FALSE, then the dest buffer may or may not contain a
+ *                  If false, then the dest buffer may or may not contain a
  *                  copy of the string. dest may or may not be modified.
  *                  If a copy needs to be written, then the UErrorCode parameter
  *                  indicates overflow etc. as usual.
@@ -693,7 +693,7 @@
  * @see u_strToUTF8
  * @stable ICU 3.6
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ures_getUTF8StringByIndex(const UResourceBundle *resB,
                           int32_t stringIndex,
                           char *dest, int32_t *pLength,
@@ -712,7 +712,7 @@
  * @return                  a pointer to a UResourceBundle struct. If fill in param was NULL, caller must close it
  * @stable ICU 2.0
  */
-U_STABLE UResourceBundle* U_EXPORT2
+U_CAPI UResourceBundle* U_EXPORT2
 ures_getByKey(const UResourceBundle *resourceBundle,
               const char* key,
               UResourceBundle *fillIn,
@@ -730,7 +730,7 @@
  * @return                  a pointer to a zero-terminated UChar array which lives in a memory mapped/DLL file.
  * @stable ICU 2.0
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 ures_getStringByKey(const UResourceBundle *resB,
                     const char* key,
                     int32_t* len,
@@ -744,10 +744,10 @@
  * it may need to be copied, or transformed from UTF-16 using u_strToUTF8()
  * or equivalent.
  *
- * If forceCopy==TRUE, then the string is always written to the dest buffer
+ * If forceCopy==true, then the string is always written to the dest buffer
  * and dest is returned.
  *
- * If forceCopy==FALSE, then the string is returned as a pointer if possible,
+ * If forceCopy==false, then the string is returned as a pointer if possible,
  * without needing a dest buffer (it can be NULL). If the string needs to be
  * copied or transformed, then it may be placed into dest at an arbitrary offset.
  *
@@ -766,10 +766,10 @@
  *               terminating NUL, even in case of U_BUFFER_OVERFLOW_ERROR.
  *               Can be NULL, meaning capacity=0 and the string length is not
  *               returned to the caller.
- * @param forceCopy If TRUE, then the output string will always be written to
+ * @param forceCopy If true, then the output string will always be written to
  *                  dest, with U_BUFFER_OVERFLOW_ERROR and
  *                  U_STRING_NOT_TERMINATED_WARNING set if appropriate.
- *                  If FALSE, then the dest buffer may or may not contain a
+ *                  If false, then the dest buffer may or may not contain a
  *                  copy of the string. dest may or may not be modified.
  *                  If a copy needs to be written, then the UErrorCode parameter
  *                  indicates overflow etc. as usual.
@@ -786,7 +786,7 @@
  * @see u_strToUTF8
  * @stable ICU 3.6
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 ures_getUTF8StringByKey(const UResourceBundle *resB,
                         const char *key,
                         char *dest, int32_t *pLength,
@@ -814,7 +814,7 @@
     int32_t len = 0;
     const UChar *r = ures_getString(resB, &len, status);
     if(U_SUCCESS(*status)) {
-        result.setTo(TRUE, r, len);
+        result.setTo(true, r, len);
     } else {
         result.setToBogus();
     }
@@ -839,7 +839,7 @@
     int32_t len = 0;
     const UChar* r = ures_getNextString(resB, &len, key, status);
     if(U_SUCCESS(*status)) {
-        result.setTo(TRUE, r, len);
+        result.setTo(true, r, len);
     } else {
         result.setToBogus();
     }
@@ -861,7 +861,7 @@
     int32_t len = 0;
     const UChar* r = ures_getStringByIndex(resB, indexS, &len, status);
     if(U_SUCCESS(*status)) {
-        result.setTo(TRUE, r, len);
+        result.setTo(true, r, len);
     } else {
         result.setToBogus();
     }
@@ -884,7 +884,7 @@
     int32_t len = 0;
     const UChar* r = ures_getStringByKey(resB, key, &len, status);
     if(U_SUCCESS(*status)) {
-        result.setTo(TRUE, r, len);
+        result.setTo(true, r, len);
     } else {
         result.setToBogus();
     }
@@ -903,7 +903,7 @@
  * @param status error code
  * @stable ICU 3.2
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 ures_openAvailableLocales(const char *packageName, UErrorCode *status);
 
 
diff --git a/libicu/cts_headers/unicode/uscript.h b/libicu/cts_headers/unicode/uscript.h
index 53d57ab..8448afd 100644
--- a/libicu/cts_headers/unicode/uscript.h
+++ b/libicu/cts_headers/unicode/uscript.h
@@ -514,7 +514,7 @@
  * @return The number of script codes filled in the buffer passed in
  * @stable ICU 2.4
  */
-U_STABLE int32_t  U_EXPORT2
+U_CAPI int32_t  U_EXPORT2
 uscript_getCode(const char* nameOrAbbrOrLocale,UScriptCode* fillIn,int32_t capacity,UErrorCode *err);
 
 /**
@@ -527,7 +527,7 @@
  * or NULL if scriptCode is invalid
  * @stable ICU 2.4
  */
-U_STABLE const char*  U_EXPORT2
+U_CAPI const char*  U_EXPORT2
 uscript_getName(UScriptCode scriptCode);
 
 /**
@@ -539,7 +539,7 @@
  * @return short script name (4-letter code), or NULL if scriptCode is invalid
  * @stable ICU 2.4
  */
-U_STABLE const char*  U_EXPORT2
+U_CAPI const char*  U_EXPORT2
 uscript_getShortName(UScriptCode scriptCode);
 
 /**
@@ -550,7 +550,7 @@
  * @return The UScriptCode, or 0 if codepoint is invalid
  * @stable ICU 2.4
  */
-U_STABLE UScriptCode  U_EXPORT2
+U_CAPI UScriptCode  U_EXPORT2
 uscript_getScript(UChar32 codepoint, UErrorCode *err);
 
 /**
@@ -562,10 +562,10 @@
  * For more information, see UAX #24: http://www.unicode.org/reports/tr24/.
  * @param c code point
  * @param sc script code
- * @return TRUE if sc is in Script_Extensions(c)
+ * @return true if sc is in Script_Extensions(c)
  * @stable ICU 49
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uscript_hasScript(UChar32 c, UScriptCode sc);
 
 /**
@@ -597,7 +597,7 @@
  *         written to scripts unless U_BUFFER_OVERFLOW_ERROR indicates insufficient capacity
  * @stable ICU 49
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uscript_getScriptExtensions(UChar32 c,
                             UScriptCode *scripts, int32_t capacity,
                             UErrorCode *errorCode);
@@ -636,7 +636,7 @@
  * @return the string length, even if U_BUFFER_OVERFLOW_ERROR
  * @stable ICU 51
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uscript_getSampleString(UScriptCode script, UChar *dest, int32_t capacity, UErrorCode *pErrorCode);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -668,41 +668,41 @@
  * @see UScriptUsage
  * @stable ICU 51
  */
-U_STABLE UScriptUsage U_EXPORT2
+U_CAPI UScriptUsage U_EXPORT2
 uscript_getUsage(UScriptCode script);
 
 /**
- * Returns TRUE if the script is written right-to-left.
+ * Returns true if the script is written right-to-left.
  * For example, Arab and Hebr.
  *
  * @param script script code
- * @return TRUE if the script is right-to-left
+ * @return true if the script is right-to-left
  * @stable ICU 51
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uscript_isRightToLeft(UScriptCode script);
 
 /**
- * Returns TRUE if the script allows line breaks between letters (excluding hyphenation).
+ * Returns true if the script allows line breaks between letters (excluding hyphenation).
  * Such a script typically requires dictionary-based line breaking.
  * For example, Hani and Thai.
  *
  * @param script script code
- * @return TRUE if the script allows line breaks between letters
+ * @return true if the script allows line breaks between letters
  * @stable ICU 51
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uscript_breaksBetweenLetters(UScriptCode script);
 
 /**
- * Returns TRUE if in modern (or most recent) usage of the script case distinctions are customary.
+ * Returns true if in modern (or most recent) usage of the script case distinctions are customary.
  * For example, Latn and Cyrl.
  *
  * @param script script code
- * @return TRUE if the script is cased
+ * @return true if the script is cased
  * @stable ICU 51
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uscript_isCased(UScriptCode script);
 
 #endif
diff --git a/libicu/cts_headers/unicode/usearch.h b/libicu/cts_headers/unicode/usearch.h
index 3b64c7b..65747cb 100644
--- a/libicu/cts_headers/unicode/usearch.h
+++ b/libicu/cts_headers/unicode/usearch.h
@@ -28,8 +28,8 @@
  * \brief C API: StringSearch
  *
  * C APIs for an engine that provides language-sensitive text searching based 
- * on the comparison rules defined in a <tt>UCollator</tt> data struct,
- * see <tt>ucol.h</tt>. This ensures that language eccentricity can be 
+ * on the comparison rules defined in a <code>UCollator</code> data struct,
+ * see <code>ucol.h</code>. This ensures that language eccentricity can be 
  * handled, e.g. for the German collator, characters &szlig; and SS will be matched 
  * if case is chosen to be ignored. 
  * See the <a href="http://source.icu-project.org/repos/icu/icuhtml/trunk/design/collation/ICU_collation_design.htm">
@@ -57,18 +57,18 @@
  * Option 2. will be the default.
  * <p>
  * This search has APIs similar to that of other text iteration mechanisms 
- * such as the break iterators in <tt>ubrk.h</tt>. Using these 
+ * such as the break iterators in <code>ubrk.h</code>. Using these 
  * APIs, it is easy to scan through text looking for all occurrences of 
  * a given pattern. This search iterator allows changing of direction by 
- * calling a <tt>reset</tt> followed by a <tt>next</tt> or <tt>previous</tt>. 
- * Though a direction change can occur without calling <tt>reset</tt> first,  
+ * calling a <code>reset</code> followed by a <code>next</code> or <code>previous</code>. 
+ * Though a direction change can occur without calling <code>reset</code> first,  
  * this operation comes with some speed penalty.
  * Generally, match results in the forward direction will match the result 
  * matches in the backwards direction in the reverse order
  * <p>
- * <tt>usearch.h</tt> provides APIs to specify the starting position 
- * within the text string to be searched, e.g. <tt>usearch_setOffset</tt>,
- * <tt>usearch_preceding</tt> and <tt>usearch_following</tt>. Since the 
+ * <code>usearch.h</code> provides APIs to specify the starting position 
+ * within the text string to be searched, e.g. <code>usearch_setOffset</code>,
+ * <code>usearch_preceding</code> and <code>usearch_following</code>. Since the 
  * starting position will be set as it is specified, please take note that 
  * there are some dangerous positions which the search may render incorrect 
  * results:
@@ -104,7 +104,7 @@
  * Though collator attributes will be taken into consideration while 
  * performing matches, there are no APIs here for setting and getting the 
  * attributes. These attributes can be set by getting the collator
- * from <tt>usearch_getCollator</tt> and using the APIs in <tt>ucol.h</tt>.
+ * from <code>usearch_getCollator</code> and using the APIs in <code>ucol.h</code>.
  * Lastly to update String Search to the new collator attributes, 
  * usearch_reset() has to be called.
  * <p> 
@@ -280,9 +280,13 @@
 /* open and close ------------------------------------------------------ */
 
 /**
-* Creating a search iterator data struct using the argument locale language
+* Creates a String Search iterator data struct using the argument locale language
 * rule set. A collator will be created in the process, which will be owned by
-* this search and will be deleted in <tt>usearch_close</tt>.
+* this String Search and will be deleted in <code>usearch_close</code>.
+*
+* The UStringSearch retains a pointer to both the pattern and text strings.
+* The caller must not modify or delete them while using the UStringSearch.
+*
 * @param pattern for matching
 * @param patternlength length of the pattern, -1 for null-termination
 * @param text text string
@@ -291,9 +295,9 @@
 * @param breakiter A BreakIterator that will be used to restrict the points
 *                  at which matches are detected. If a match is found, but 
 *                  the match's start or end index is not a boundary as 
-*                  determined by the <tt>BreakIterator</tt>, the match will 
+*                  determined by the <code>BreakIterator</code>, the match will 
 *                  be rejected and another will be searched for. 
-*                  If this parameter is <tt>NULL</tt>, no break detection is 
+*                  If this parameter is <code>NULL</code>, no break detection is 
 *                  attempted.
 * @param status for errors if it occurs. If pattern or text is NULL, or if
 *               patternlength or textlength is 0 then an 
@@ -301,54 +305,59 @@
 * @return search iterator data structure, or NULL if there is an error.
 * @stable ICU 2.4
 */
-U_STABLE UStringSearch * U_EXPORT2 usearch_open(const UChar          *pattern, 
-                                              int32_t         patternlength, 
-                                        const UChar          *text, 
+U_CAPI UStringSearch * U_EXPORT2 usearch_open(const UChar    *pattern,
+                                              int32_t         patternlength,
+                                        const UChar          *text,
                                               int32_t         textlength,
                                         const char           *locale,
                                               UBreakIterator *breakiter,
                                               UErrorCode     *status);
 
 /**
-* Creating a search iterator data struct using the argument collator language
-* rule set. Note, user retains the ownership of this collator, thus the 
+* Creates a String Search iterator data struct using the argument collator language
+* rule set. Note, user retains the ownership of this collator, thus the
 * responsibility of deletion lies with the user.
-* NOTE: string search cannot be instantiated from a collator that has 
-* collate digits as numbers (CODAN) turned on.
+
+* NOTE: String Search cannot be instantiated from a collator that has
+* collate digits as numbers (CODAN) turned on (UCOL_NUMERIC_COLLATION).
+*
+* The UStringSearch retains a pointer to both the pattern and text strings.
+* The caller must not modify or delete them while using the UStringSearch.
+*
 * @param pattern for matching
 * @param patternlength length of the pattern, -1 for null-termination
 * @param text text string
 * @param textlength length of the text string, -1 for null-termination
 * @param collator used for the language rules
 * @param breakiter A BreakIterator that will be used to restrict the points
-*                  at which matches are detected. If a match is found, but 
-*                  the match's start or end index is not a boundary as 
-*                  determined by the <tt>BreakIterator</tt>, the match will 
-*                  be rejected and another will be searched for. 
-*                  If this parameter is <tt>NULL</tt>, no break detection is 
+*                  at which matches are detected. If a match is found, but
+*                  the match's start or end index is not a boundary as
+*                  determined by the <code>BreakIterator</code>, the match will
+*                  be rejected and another will be searched for.
+*                  If this parameter is <code>NULL</code>, no break detection is
 *                  attempted.
-* @param status for errors if it occurs. If collator, pattern or text is NULL, 
-*               or if patternlength or textlength is 0 then an 
+* @param status for errors if it occurs. If collator, pattern or text is NULL,
+*               or if patternlength or textlength is 0 then an
 *               U_ILLEGAL_ARGUMENT_ERROR is returned.
 * @return search iterator data structure, or NULL if there is an error.
 * @stable ICU 2.4
 */
-U_STABLE UStringSearch * U_EXPORT2 usearch_openFromCollator(
-                                         const UChar *pattern, 
+U_CAPI UStringSearch * U_EXPORT2 usearch_openFromCollator(
+                                         const UChar          *pattern,
                                                int32_t         patternlength,
-                                         const UChar          *text, 
+                                         const UChar          *text,
                                                int32_t         textlength,
                                          const UCollator      *collator,
                                                UBreakIterator *breakiter,
                                                UErrorCode     *status);
 
 /**
-* Destroying and cleaning up the search iterator data struct.
-* If a collator is created in <tt>usearch_open</tt>, it will be destroyed here.
-* @param searchiter data struct to clean up
-* @stable ICU 2.4
-*/
-U_STABLE void U_EXPORT2 usearch_close(UStringSearch *searchiter);
+ * Destroys and cleans up the String Search iterator data struct.
+ * If a collator was created in <code>usearch_open</code>, then it will be destroyed here.
+ * @param searchiter The UStringSearch to clean up
+ * @stable ICU 2.4
+ */
+U_CAPI void U_EXPORT2 usearch_close(UStringSearch *searchiter);
 
 #if U_SHOW_CPLUSPLUS_API
 
@@ -386,24 +395,24 @@
 * @param status error status if any.
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_setOffset(UStringSearch *strsrch, 
-                                        int32_t    position,
+U_CAPI void U_EXPORT2 usearch_setOffset(UStringSearch *strsrch,
+                                        int32_t        position,
                                         UErrorCode    *status);
 
 /**
 * Return the current index in the string text being searched.
 * If the iteration has gone past the end of the text (or past the beginning 
-* for a backwards search), <tt>USEARCH_DONE</tt> is returned.
+* for a backwards search), <code>USEARCH_DONE</code> is returned.
 * @param strsrch search iterator data struct
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_getOffset(const UStringSearch *strsrch);
+U_CAPI int32_t U_EXPORT2 usearch_getOffset(const UStringSearch *strsrch);
     
 /**
 * Sets the text searching attributes located in the enum USearchAttribute
 * with values from the enum USearchAttributeValue.
-* <tt>USEARCH_DEFAULT</tt> can be used for all attributes for resetting.
+* <code>USEARCH_DEFAULT</code> can be used for all attributes for resetting.
 * @param strsrch search iterator data struct
 * @param attribute text attribute to be set
 * @param value text attribute value
@@ -411,7 +420,7 @@
 * @see #usearch_getAttribute
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_setAttribute(UStringSearch         *strsrch, 
+U_CAPI void U_EXPORT2 usearch_setAttribute(UStringSearch         *strsrch,
                                            USearchAttribute       attribute,
                                            USearchAttributeValue  value,
                                            UErrorCode            *status);
@@ -424,19 +433,19 @@
 * @see #usearch_setAttribute
 * @stable ICU 2.4
 */
-U_STABLE USearchAttributeValue U_EXPORT2 usearch_getAttribute(
+U_CAPI USearchAttributeValue U_EXPORT2 usearch_getAttribute(
                                          const UStringSearch    *strsrch,
                                                USearchAttribute  attribute);
 
 /**
 * Returns the index to the match in the text string that was searched.
 * This call returns a valid result only after a successful call to 
-* <tt>usearch_first</tt>, <tt>usearch_next</tt>, <tt>usearch_previous</tt>, 
-* or <tt>usearch_last</tt>.
+* <code>usearch_first</code>, <code>usearch_next</code>, <code>usearch_previous</code>, 
+* or <code>usearch_last</code>.
 * Just after construction, or after a searching method returns 
-* <tt>USEARCH_DONE</tt>, this method will return <tt>USEARCH_DONE</tt>.
+* <code>USEARCH_DONE</code>, this method will return <code>USEARCH_DONE</code>.
 * <p>
-* Use <tt>usearch_getMatchedLength</tt> to get the matched string length.
+* Use <code>usearch_getMatchedLength</code> to get the matched string length.
 * @param strsrch search iterator data struct
 * @return index to a substring within the text string that is being 
 *         searched.
@@ -447,16 +456,16 @@
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_getMatchedStart(
+U_CAPI int32_t U_EXPORT2 usearch_getMatchedStart(
                                                const UStringSearch *strsrch);
     
 /**
 * Returns the length of text in the string which matches the search pattern. 
 * This call returns a valid result only after a successful call to 
-* <tt>usearch_first</tt>, <tt>usearch_next</tt>, <tt>usearch_previous</tt>, 
-* or <tt>usearch_last</tt>.
+* <code>usearch_first</code>, <code>usearch_next</code>, <code>usearch_previous</code>, 
+* or <code>usearch_last</code>.
 * Just after construction, or after a searching method returns 
-* <tt>USEARCH_DONE</tt>, this method will return 0.
+* <code>USEARCH_DONE</code>, this method will return 0.
 * @param strsrch search iterator data struct
 * @return The length of the match in the string text, or 0 if there is no 
 *         match currently.
@@ -467,22 +476,22 @@
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_getMatchedLength(
+U_CAPI int32_t U_EXPORT2 usearch_getMatchedLength(
                                                const UStringSearch *strsrch);
 
 /**
 * Returns the text that was matched by the most recent call to 
-* <tt>usearch_first</tt>, <tt>usearch_next</tt>, <tt>usearch_previous</tt>, 
-* or <tt>usearch_last</tt>.
+* <code>usearch_first</code>, <code>usearch_next</code>, <code>usearch_previous</code>, 
+* or <code>usearch_last</code>.
 * If the iterator is not pointing at a valid match (e.g. just after 
-* construction or after <tt>USEARCH_DONE</tt> has been returned, returns
+* construction or after <code>USEARCH_DONE</code> has been returned, returns
 * an empty string. If result is not large enough to store the matched text,
 * result will be filled with the partial text and an U_BUFFER_OVERFLOW_ERROR 
 * will be returned in status. result will be null-terminated whenever 
 * possible. If the buffer fits the matched text exactly, a null-termination 
 * is not possible, then a U_STRING_NOT_TERMINATED_ERROR set in status.
 * Pre-flighting can be either done with length = 0 or the API 
-* <tt>usearch_getMatchedLength</tt>.
+* <code>usearch_getMatchedLength</code>.
 * @param strsrch search iterator data struct
 * @param result UChar buffer to store the matched string
 * @param resultCapacity length of the result buffer
@@ -495,7 +504,7 @@
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_getMatchedText(const UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_getMatchedText(const UStringSearch *strsrch, 
                                             UChar         *result, 
                                             int32_t        resultCapacity, 
                                             UErrorCode    *status);
@@ -509,38 +518,42 @@
 * @param breakiter A BreakIterator that will be used to restrict the points
 *                  at which matches are detected. If a match is found, but 
 *                  the match's start or end index is not a boundary as 
-*                  determined by the <tt>BreakIterator</tt>, the match will 
+*                  determined by the <code>BreakIterator</code>, the match will 
 *                  be rejected and another will be searched for. 
-*                  If this parameter is <tt>NULL</tt>, no break detection is 
+*                  If this parameter is <code>NULL</code>, no break detection is 
 *                  attempted.
 * @param status for errors if it occurs
 * @see #usearch_getBreakIterator
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_setBreakIterator(UStringSearch  *strsrch, 
+U_CAPI void U_EXPORT2 usearch_setBreakIterator(UStringSearch  *strsrch, 
                                                UBreakIterator *breakiter,
                                                UErrorCode     *status);
 
 /**
 * Returns the BreakIterator that is used to restrict the points at which 
 * matches are detected. This will be the same object that was passed to the 
-* constructor or to <tt>usearch_setBreakIterator</tt>. Note that 
-* <tt>NULL</tt> 
+* constructor or to <code>usearch_setBreakIterator</code>. Note that 
+* <code>NULL</code> 
 * is a legal value; it means that break detection should not be attempted.
 * @param strsrch search iterator data struct
 * @return break iterator used
 * @see #usearch_setBreakIterator
 * @stable ICU 2.4
 */
-U_STABLE const UBreakIterator * U_EXPORT2 usearch_getBreakIterator(
+U_CAPI const UBreakIterator * U_EXPORT2 usearch_getBreakIterator(
                                               const UStringSearch *strsrch);
     
 #endif
-    
+
 /**
 * Set the string text to be searched. Text iteration will hence begin at the 
 * start of the text string. This method is useful if you want to re-use an 
 * iterator to search for the same pattern within a different body of text.
+*
+* The UStringSearch retains a pointer to the text string. The caller must not
+* modify or delete the string while using the UStringSearch.
+*
 * @param strsrch search iterator data struct
 * @param text new string to look for match
 * @param textlength length of the new string, -1 for null-termination
@@ -550,7 +563,7 @@
 * @see #usearch_getText
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_setText(      UStringSearch *strsrch, 
+U_CAPI void U_EXPORT2 usearch_setText(      UStringSearch *strsrch, 
                                       const UChar         *text,
                                             int32_t        textlength,
                                             UErrorCode    *status);
@@ -563,20 +576,20 @@
 * @see #usearch_setText
 * @stable ICU 2.4
 */
-U_STABLE const UChar * U_EXPORT2 usearch_getText(const UStringSearch *strsrch, 
+U_CAPI const UChar * U_EXPORT2 usearch_getText(const UStringSearch *strsrch, 
                                                int32_t       *length);
 
 /**
 * Gets the collator used for the language rules. 
 * <p>
-* Deleting the returned <tt>UCollator</tt> before calling 
-* <tt>usearch_close</tt> would cause the string search to fail.
-* <tt>usearch_close</tt> will delete the collator if this search owns it.
+* Deleting the returned <code>UCollator</code> before calling 
+* <code>usearch_close</code> would cause the string search to fail.
+* <code>usearch_close</code> will delete the collator if this search owns it.
 * @param strsrch search iterator data struct
 * @return collator
 * @stable ICU 2.4
 */
-U_STABLE UCollator * U_EXPORT2 usearch_getCollator(
+U_CAPI UCollator * U_EXPORT2 usearch_getCollator(
                                                const UStringSearch *strsrch);
 
 /**
@@ -589,7 +602,7 @@
 * @param status for errors if it occurs
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_setCollator(      UStringSearch *strsrch, 
+U_CAPI void U_EXPORT2 usearch_setCollator(      UStringSearch *strsrch, 
                                           const UCollator     *collator,
                                                 UErrorCode    *status);
 
@@ -597,6 +610,10 @@
 * Sets the pattern used for matching.
 * Internal data like the Boyer Moore table will be recalculated, but the 
 * iterator's position is unchanged.
+*
+* The UStringSearch retains a pointer to the pattern string. The caller must not
+* modify or delete the string while using the UStringSearch.
+*
 * @param strsrch search iterator data struct
 * @param pattern string
 * @param patternlength pattern length, -1 for null-terminated string
@@ -605,7 +622,7 @@
 *               done to strsrch.
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_setPattern(      UStringSearch *strsrch, 
+U_CAPI void U_EXPORT2 usearch_setPattern(      UStringSearch *strsrch, 
                                          const UChar         *pattern,
                                                int32_t        patternlength,
                                                UErrorCode    *status);
@@ -618,7 +635,7 @@
 * @return pattern string
 * @stable ICU 2.4
 */
-U_STABLE const UChar * U_EXPORT2 usearch_getPattern(
+U_CAPI const UChar * U_EXPORT2 usearch_getPattern(
                                                const UStringSearch *strsrch, 
                                                      int32_t       *length);
 
@@ -628,28 +645,28 @@
 * Returns the first index at which the string text matches the search 
 * pattern.  
 * The iterator is adjusted so that its current index (as returned by 
-* <tt>usearch_getOffset</tt>) is the match position if one was found.
-* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and
-* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>.
+* <code>usearch_getOffset</code>) is the match position if one was found.
+* If a match is not found, <code>USEARCH_DONE</code> will be returned and
+* the iterator will be adjusted to the index <code>USEARCH_DONE</code>.
 * @param strsrch search iterator data struct
 * @param status for errors if it occurs
 * @return The character index of the first match, or 
-* <tt>USEARCH_DONE</tt> if there are no matches.
+* <code>USEARCH_DONE</code> if there are no matches.
 * @see #usearch_getOffset
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_first(UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_first(UStringSearch *strsrch, 
                                            UErrorCode    *status);
 
 /**
-* Returns the first index equal or greater than <tt>position</tt> at which
+* Returns the first index equal or greater than <code>position</code> at which
 * the string text
 * matches the search pattern. The iterator is adjusted so that its current 
-* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 
+* index (as returned by <code>usearch_getOffset</code>) is the match position if 
 * one was found.
-* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and
-* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>
+* If a match is not found, <code>USEARCH_DONE</code> will be returned and
+* the iterator will be adjusted to the index <code>USEARCH_DONE</code>
 * <p>
 * Search positions that may render incorrect results are highlighted in the
 * header comments. If position is less than or greater than the text range 
@@ -657,60 +674,60 @@
 * @param strsrch search iterator data struct
 * @param position to start the search at
 * @param status for errors if it occurs
-* @return The character index of the first match following <tt>pos</tt>,
-*         or <tt>USEARCH_DONE</tt> if there are no matches.
+* @return The character index of the first match following <code>pos</code>,
+*         or <code>USEARCH_DONE</code> if there are no matches.
 * @see #usearch_getOffset
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_following(UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_following(UStringSearch *strsrch, 
                                                int32_t    position, 
                                                UErrorCode    *status);
     
 /**
 * Returns the last index in the target text at which it matches the search 
 * pattern. The iterator is adjusted so that its current 
-* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 
+* index (as returned by <code>usearch_getOffset</code>) is the match position if 
 * one was found.
-* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and
-* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>.
+* If a match is not found, <code>USEARCH_DONE</code> will be returned and
+* the iterator will be adjusted to the index <code>USEARCH_DONE</code>.
 * @param strsrch search iterator data struct
 * @param status for errors if it occurs
-* @return The index of the first match, or <tt>USEARCH_DONE</tt> if there 
+* @return The index of the first match, or <code>USEARCH_DONE</code> if there 
 *         are no matches.
 * @see #usearch_getOffset
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_last(UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_last(UStringSearch *strsrch, 
                                           UErrorCode    *status);
 
 /**
-* Returns the first index less than <tt>position</tt> at which the string text 
+* Returns the first index less than <code>position</code> at which the string text 
 * matches the search pattern. The iterator is adjusted so that its current 
-* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 
+* index (as returned by <code>usearch_getOffset</code>) is the match position if 
 * one was found.
-* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and
-* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>
+* If a match is not found, <code>USEARCH_DONE</code> will be returned and
+* the iterator will be adjusted to the index <code>USEARCH_DONE</code>
 * <p>
 * Search positions that may render incorrect results are highlighted in the
 * header comments. If position is less than or greater than the text range 
 * for searching, an U_INDEX_OUTOFBOUNDS_ERROR will be returned.
 * <p>
-* When <tt>USEARCH_OVERLAP</tt> option is off, the last index of the
-* result match is always less than <tt>position</tt>.
-* When <tt>USERARCH_OVERLAP</tt> is on, the result match may span across
-* <tt>position</tt>.
+* When <code>USEARCH_OVERLAP</code> option is off, the last index of the
+* result match is always less than <code>position</code>.
+* When <code>USERARCH_OVERLAP</code> is on, the result match may span across
+* <code>position</code>.
 * @param strsrch search iterator data struct
 * @param position index position the search is to begin at
 * @param status for errors if it occurs
-* @return The character index of the first match preceding <tt>pos</tt>,
-*         or <tt>USEARCH_DONE</tt> if there are no matches.
+* @return The character index of the first match preceding <code>pos</code>,
+*         or <code>USEARCH_DONE</code> if there are no matches.
 * @see #usearch_getOffset
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_preceding(UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_preceding(UStringSearch *strsrch, 
                                                int32_t    position, 
                                                UErrorCode    *status);
     
@@ -718,40 +735,40 @@
 * Returns the index of the next point at which the string text matches the
 * search pattern, starting from the current position.
 * The iterator is adjusted so that its current 
-* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 
+* index (as returned by <code>usearch_getOffset</code>) is the match position if 
 * one was found.
-* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and
-* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>
+* If a match is not found, <code>USEARCH_DONE</code> will be returned and
+* the iterator will be adjusted to the index <code>USEARCH_DONE</code>
 * @param strsrch search iterator data struct
 * @param status for errors if it occurs
 * @return The index of the next match after the current position, or 
-*         <tt>USEARCH_DONE</tt> if there are no more matches.
+*         <code>USEARCH_DONE</code> if there are no more matches.
 * @see #usearch_first
 * @see #usearch_getOffset
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, 
                                           UErrorCode    *status);
 
 /**
 * Returns the index of the previous point at which the string text matches
 * the search pattern, starting at the current position.
 * The iterator is adjusted so that its current 
-* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 
+* index (as returned by <code>usearch_getOffset</code>) is the match position if 
 * one was found.
-* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and
-* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>
+* If a match is not found, <code>USEARCH_DONE</code> will be returned and
+* the iterator will be adjusted to the index <code>USEARCH_DONE</code>
 * @param strsrch search iterator data struct
 * @param status for errors if it occurs
 * @return The index of the previous match before the current position,
-*         or <tt>USEARCH_DONE</tt> if there are no more matches.
+*         or <code>USEARCH_DONE</code> if there are no more matches.
 * @see #usearch_last
 * @see #usearch_getOffset
 * @see #USEARCH_DONE
 * @stable ICU 2.4
 */
-U_STABLE int32_t U_EXPORT2 usearch_previous(UStringSearch *strsrch, 
+U_CAPI int32_t U_EXPORT2 usearch_previous(UStringSearch *strsrch, 
                                               UErrorCode    *status);
     
 /** 
@@ -764,7 +781,7 @@
 * @see #usearch_first
 * @stable ICU 2.4
 */
-U_STABLE void U_EXPORT2 usearch_reset(UStringSearch *strsrch);
+U_CAPI void U_EXPORT2 usearch_reset(UStringSearch *strsrch);
 
 #ifndef U_HIDE_INTERNAL_API
 /**
@@ -817,11 +834,11 @@
   *                    A value of -1 will be returned if no match was found.
   *          
   *  @param status     Report any errors.  Note that no match found is not an error.
-  *  @return           TRUE if a match was found, FALSE otherwise.
+  *  @return           true if a match was found, false otherwise.
   *
   *  @internal
   */
-U_INTERNAL UBool U_EXPORT2 usearch_search(UStringSearch *strsrch,
+U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch,
                                           int32_t        startIdx,
                                           int32_t        *matchStart,
                                           int32_t        *matchLimit,
@@ -877,11 +894,11 @@
   *                    A value of -1 will be returned if no match was found.
   *          
   *  @param status     Report any errors.  Note that no match found is not an error.
-  *  @return           TRUE if a match was found, FALSE otherwise.
+  *  @return           true if a match was found, false otherwise.
   *
   *  @internal
   */
-U_INTERNAL UBool U_EXPORT2 usearch_searchBackwards(UStringSearch *strsrch,
+U_CAPI UBool U_EXPORT2 usearch_searchBackwards(UStringSearch *strsrch,
                                                    int32_t        startIdx,
                                                    int32_t        *matchStart,
                                                    int32_t        *matchLimit,
diff --git a/libicu/cts_headers/unicode/uset.h b/libicu/cts_headers/unicode/uset.h
index 92496fe..502ea8d 100644
--- a/libicu/cts_headers/unicode/uset.h
+++ b/libicu/cts_headers/unicode/uset.h
@@ -161,7 +161,7 @@
      * Continues a span() while there is no set element at the current position.
      * Increments by one code point at a time.
      * Stops before the first set element (character or string).
-     * (For code points only, this is like while contains(current)==FALSE).
+     * (For code points only, this is like while contains(current)==false).
      *
      * When span() returns, the substring between where it started and the position
      * it returned consists only of characters that are not in the set,
@@ -172,7 +172,7 @@
     USET_SPAN_NOT_CONTAINED = 0,
     /**
      * Spans the longest substring that is a concatenation of set elements (characters or strings).
-     * (For characters only, this is like while contains(current)==TRUE).
+     * (For characters only, this is like while contains(current)==true).
      *
      * When span() returns, the substring between where it started and the position
      * it returned consists only of set elements (characters or strings) that are in the set.
@@ -188,7 +188,7 @@
     /**
      * Continues a span() while there is a set element at the current position.
      * Increments by the longest matching element at each position.
-     * (For characters only, this is like while contains(current)==TRUE).
+     * (For characters only, this is like while contains(current)==true).
      *
      * When span() returns, the substring between where it started and the position
      * it returned consists only of set elements (characters or strings) that are in the set.
@@ -263,7 +263,7 @@
  * it when done.
  * @stable ICU 4.2
  */
-U_STABLE USet* U_EXPORT2
+U_CAPI USet* U_EXPORT2
 uset_openEmpty(void);
 
 /**
@@ -276,7 +276,7 @@
  * it when done.
  * @stable ICU 2.4
  */
-U_STABLE USet* U_EXPORT2
+U_CAPI USet* U_EXPORT2
 uset_open(UChar32 start, UChar32 end);
 
 /**
@@ -288,7 +288,7 @@
  * @param ec the error code
  * @stable ICU 2.4
  */
-U_STABLE USet* U_EXPORT2
+U_CAPI USet* U_EXPORT2
 uset_openPattern(const UChar* pattern, int32_t patternLength,
                  UErrorCode* ec);
 
@@ -303,7 +303,7 @@
  * @param ec the error code
  * @stable ICU 2.4
  */
-U_STABLE USet* U_EXPORT2
+U_CAPI USet* U_EXPORT2
 uset_openPatternOptions(const UChar* pattern, int32_t patternLength,
                  uint32_t options,
                  UErrorCode* ec);
@@ -314,7 +314,7 @@
  * @param set the object to dispose of
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_close(USet* set);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -345,19 +345,19 @@
  * @see uset_cloneAsThawed
  * @stable ICU 3.8
  */
-U_STABLE USet * U_EXPORT2
+U_CAPI USet * U_EXPORT2
 uset_clone(const USet *set);
 
 /**
  * Determines whether the set has been frozen (made immutable) or not.
  * See the ICU4J Freezable interface for details.
  * @param set the set
- * @return TRUE/FALSE for whether the set has been frozen
+ * @return true/false for whether the set has been frozen
  * @see uset_freeze
  * @see uset_cloneAsThawed
  * @stable ICU 3.8
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_isFrozen(const USet *set);
 
 /**
@@ -374,7 +374,7 @@
  * @see uset_cloneAsThawed
  * @stable ICU 3.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_freeze(USet *set);
 
 /**
@@ -387,7 +387,7 @@
  * @see uset_clone
  * @stable ICU 3.8
  */
-U_STABLE USet * U_EXPORT2
+U_CAPI USet * U_EXPORT2
 uset_cloneAsThawed(const USet *set);
 
 /**
@@ -399,7 +399,7 @@
  * @param end last character in the set, inclusive
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_set(USet* set,
          UChar32 start, UChar32 end);
 
@@ -424,7 +424,7 @@
  *
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 uset_applyPattern(USet *set,
                   const UChar *pattern, int32_t patternLength,
                   uint32_t options,
@@ -452,7 +452,7 @@
  *
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_applyIntPropertyValue(USet* set,
                            UProperty prop, int32_t value, UErrorCode* ec);
 
@@ -491,7 +491,7 @@
  *
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_applyPropertyAlias(USet* set,
                         const UChar *prop, int32_t propLength,
                         const UChar *value, int32_t valueLength,
@@ -506,7 +506,7 @@
  * @param pos the given position
  * @stable ICU 3.2
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_resemblesPattern(const UChar *pattern, int32_t patternLength,
                       int32_t pos);
 
@@ -517,7 +517,7 @@
  * @param set the set
  * @param result the string to receive the rules, may be NULL
  * @param resultCapacity the capacity of result, may be 0 if result is NULL
- * @param escapeUnprintable if TRUE then convert unprintable
+ * @param escapeUnprintable if true then convert unprintable
  * character to their hex escape representations, \\uxxxx or
  * \\Uxxxxxxxx.  Unprintable characters are those other than
  * U+000A, U+0020..U+007E.
@@ -525,7 +525,7 @@
  * @return length of string, possibly larger than resultCapacity
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_toPattern(const USet* set,
                UChar* result, int32_t resultCapacity,
                UBool escapeUnprintable,
@@ -533,13 +533,13 @@
 
 /**
  * Adds the given character to the given USet.  After this call,
- * uset_contains(set, c) will return TRUE.
+ * uset_contains(set, c) will return true.
  * A frozen set will not be modified.
  * @param set the object to which to add the character
  * @param c the character to add
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_add(USet* set, UChar32 c);
 
 /**
@@ -554,31 +554,31 @@
  * @param additionalSet the source set whose elements are to be added to this set.
  * @stable ICU 2.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_addAll(USet* set, const USet *additionalSet);
 
 /**
  * Adds the given range of characters to the given USet.  After this call,
- * uset_contains(set, start, end) will return TRUE.
+ * uset_contains(set, start, end) will return true.
  * A frozen set will not be modified.
  * @param set the object to which to add the character
  * @param start the first character of the range to add, inclusive
  * @param end the last character of the range to add, inclusive
  * @stable ICU 2.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_addRange(USet* set, UChar32 start, UChar32 end);
 
 /**
  * Adds the given string to the given USet.  After this call,
- * uset_containsString(set, str, strLen) will return TRUE.
+ * uset_containsString(set, str, strLen) will return true.
  * A frozen set will not be modified.
  * @param set the object to which to add the character
  * @param str the string to add
  * @param strLen the length of the string or -1 if null terminated.
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_addString(USet* set, const UChar* str, int32_t strLen);
 
 /**
@@ -590,42 +590,42 @@
  * @param strLen the length of the string or -1 if null terminated.
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_addAllCodePoints(USet* set, const UChar *str, int32_t strLen);
 
 /**
  * Removes the given character from the given USet.  After this call,
- * uset_contains(set, c) will return FALSE.
+ * uset_contains(set, c) will return false.
  * A frozen set will not be modified.
  * @param set the object from which to remove the character
  * @param c the character to remove
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_remove(USet* set, UChar32 c);
 
 /**
  * Removes the given range of characters from the given USet.  After this call,
- * uset_contains(set, start, end) will return FALSE.
+ * uset_contains(set, start, end) will return false.
  * A frozen set will not be modified.
  * @param set the object to which to add the character
  * @param start the first character of the range to remove, inclusive
  * @param end the last character of the range to remove, inclusive
  * @stable ICU 2.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_removeRange(USet* set, UChar32 start, UChar32 end);
 
 /**
  * Removes the given string to the given USet.  After this call,
- * uset_containsString(set, str, strLen) will return FALSE.
+ * uset_containsString(set, str, strLen) will return false.
  * A frozen set will not be modified.
  * @param set the object to which to add the character
  * @param str the string to remove
  * @param strLen the length of the string or -1 if null terminated.
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_removeString(USet* set, const UChar* str, int32_t strLen);
 
 /**
@@ -639,7 +639,7 @@
  * removed from this set
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_removeAll(USet* set, const USet* removeSet);
 
 /**
@@ -656,7 +656,7 @@
  * to this set.
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_retain(USet* set, UChar32 start, UChar32 end);
 
 /**
@@ -671,7 +671,7 @@
  * @param retain set that defines which elements this set will retain
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_retainAll(USet* set, const USet* retain);
 
 /**
@@ -682,7 +682,7 @@
  * @param set the object on which to perfrom the compact
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_compact(USet* set);
 
 /**
@@ -693,7 +693,7 @@
  * @param set the set
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_complement(USet* set);
 
 /**
@@ -707,7 +707,7 @@
  * from this set.
  * @stable ICU 3.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_complementAll(USet* set, const USet* complement);
 
 /**
@@ -717,7 +717,7 @@
  * @param set the set
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_clear(USet* set);
 
 /**
@@ -746,7 +746,7 @@
  * are ignored.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_closeOver(USet* set, int32_t attributes);
 
 /**
@@ -755,51 +755,51 @@
  * @param set the set
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_removeAllStrings(USet* set);
 
 /**
- * Returns TRUE if the given USet contains no characters and no
+ * Returns true if the given USet contains no characters and no
  * strings.
  * @param set the set
  * @return true if set is empty
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_isEmpty(const USet* set);
 
 /**
- * Returns TRUE if the given USet contains the given character.
+ * Returns true if the given USet contains the given character.
  * This function works faster with a frozen set.
  * @param set the set
  * @param c The codepoint to check for within the set
  * @return true if set contains c
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_contains(const USet* set, UChar32 c);
 
 /**
- * Returns TRUE if the given USet contains all characters c
+ * Returns true if the given USet contains all characters c
  * where start <= c && c <= end.
  * @param set the set
  * @param start the first character of the range to test, inclusive
  * @param end the last character of the range to test, inclusive
- * @return TRUE if set contains the range
+ * @return true if set contains the range
  * @stable ICU 2.2
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_containsRange(const USet* set, UChar32 start, UChar32 end);
 
 /**
- * Returns TRUE if the given USet contains the given string.
+ * Returns true if the given USet contains the given string.
  * @param set the set
  * @param str the string
  * @param strLen the length of the string or -1 if null terminated.
  * @return true if set contains str
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_containsString(const USet* set, const UChar* str, int32_t strLen);
 
 /**
@@ -812,7 +812,7 @@
  * @return an index from 0..size()-1, or -1
  * @stable ICU 3.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_indexOf(const USet* set, UChar32 c);
 
 /**
@@ -825,7 +825,7 @@
  * @return the character at the given index, or (UChar32)-1.
  * @stable ICU 3.2
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 uset_charAt(const USet* set, int32_t charIndex);
 
 /**
@@ -836,7 +836,7 @@
  * contained in set
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_size(const USet* set);
 
 /**
@@ -847,7 +847,7 @@
  * and/or strings contained in set
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_getItemCount(const USet* set);
 
 /**
@@ -868,7 +868,7 @@
  * itemIndex is out of range
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_getItem(const USet* set, int32_t itemIndex,
              UChar32* start, UChar32* end,
              UChar* str, int32_t strCapacity,
@@ -882,7 +882,7 @@
  * @return true if the test condition is met
  * @stable ICU 3.2
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_containsAll(const USet* set1, const USet* set2);
 
 /**
@@ -895,7 +895,7 @@
  * @return true if the test condition is met
  * @stable ICU 3.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_containsAllCodePoints(const USet* set, const UChar *str, int32_t strLen);
 
 /**
@@ -906,7 +906,7 @@
  * @return true if the test condition is met
  * @stable ICU 3.2
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_containsNone(const USet* set1, const USet* set2);
 
 /**
@@ -917,7 +917,7 @@
  * @return true if the test condition is met
  * @stable ICU 3.2
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_containsSome(const USet* set1, const USet* set2);
 
 /**
@@ -939,7 +939,7 @@
  * @stable ICU 3.8
  * @see USetSpanCondition
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_span(const USet *set, const UChar *s, int32_t length, USetSpanCondition spanCondition);
 
 /**
@@ -960,7 +960,7 @@
  * @stable ICU 3.8
  * @see USetSpanCondition
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_spanBack(const USet *set, const UChar *s, int32_t length, USetSpanCondition spanCondition);
 
 /**
@@ -982,7 +982,7 @@
  * @stable ICU 3.8
  * @see USetSpanCondition
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_spanUTF8(const USet *set, const char *s, int32_t length, USetSpanCondition spanCondition);
 
 /**
@@ -1003,7 +1003,7 @@
  * @stable ICU 3.8
  * @see USetSpanCondition
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_spanBackUTF8(const USet *set, const char *s, int32_t length, USetSpanCondition spanCondition);
 
 /**
@@ -1014,7 +1014,7 @@
  * @return true if the test condition is met
  * @stable ICU 3.2
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_equals(const USet* set1, const USet* set2);
 
 /*********************************************************************
@@ -1070,7 +1070,7 @@
  * than U_BUFFER_OVERFLOW_ERROR.
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_serialize(const USet* set, uint16_t* dest, int32_t destCapacity, UErrorCode* pErrorCode);
 
 /**
@@ -1081,7 +1081,7 @@
  * @return true if the given array is valid, otherwise false
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_getSerializedSet(USerializedSet* fillSet, const uint16_t* src, int32_t srcLength);
 
 /**
@@ -1091,18 +1091,18 @@
  * @param c The codepoint to set
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uset_setSerializedToOne(USerializedSet* fillSet, UChar32 c);
 
 /**
- * Returns TRUE if the given USerializedSet contains the given
+ * Returns true if the given USerializedSet contains the given
  * character.
  * @param set the serialized set
  * @param c The codepoint to check for within the set
  * @return true if set contains c
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_serializedContains(const USerializedSet* set, UChar32 c);
 
 /**
@@ -1114,7 +1114,7 @@
  * contained in set
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uset_getSerializedRangeCount(const USerializedSet* set);
 
 /**
@@ -1130,7 +1130,7 @@
  * @return true if rangeIndex is valid, otherwise false
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uset_getSerializedRange(const USerializedSet* set, int32_t rangeIndex,
                         UChar32* pStart, UChar32* pEnd);
 
diff --git a/libicu/cts_headers/unicode/usetiter.h b/libicu/cts_headers/unicode/usetiter.h
index c6396fd..a817ef7 100644
--- a/libicu/cts_headers/unicode/usetiter.h
+++ b/libicu/cts_headers/unicode/usetiter.h
@@ -176,7 +176,7 @@
      * If there are no more elements in the set, return false.
      *
      * <p>
-     * If <tt>isString() == TRUE</tt>, the value is a
+     * If <tt>isString() == true</tt>, the value is a
      * string, otherwise the value is a
      * single code point.  Elements of either type can be retrieved
      * with the function <tt>getString()</tt>, while elements of
@@ -197,7 +197,7 @@
     /**
      * Returns the next element in the set, either a code point range
      * or a string.  If there are no more elements in the set, return
-     * false.  If <tt>isString() == TRUE</tt>, the value is a
+     * false.  If <tt>isString() == true</tt>, the value is a
      * string and can be accessed with <tt>getString()</tt>.  Otherwise the value is a
      * range of one or more code points from <tt>getCodepoint()</tt> to
      * <tt>getCodepointeEnd()</tt> inclusive.
@@ -205,7 +205,7 @@
      * <p>The order of iteration is all code points ranges in sorted
      * order, followed by all strings sorted order.  Ranges are
      * disjoint and non-contiguous.  The value returned from <tt>getString()</tt>
-     * is undefined unless <tt>isString() == TRUE</tt>.  Do not mix calls to
+     * is undefined unless <tt>isString() == true</tt>.  Do not mix calls to
      * <tt>next()</tt> and <tt>nextRange()</tt> without calling
      * <tt>reset()</tt> between them.  The results of doing so are
      * undefined.
diff --git a/libicu/cts_headers/unicode/ushape.h b/libicu/cts_headers/unicode/ushape.h
index 78b4d02..fed4869 100644
--- a/libicu/cts_headers/unicode/ushape.h
+++ b/libicu/cts_headers/unicode/ushape.h
@@ -98,7 +98,7 @@
  *         the return value indicates the necessary destination buffer size.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_shapeArabic(const UChar *source, int32_t sourceLength,
               UChar *dest, int32_t destSize,
               uint32_t options,
diff --git a/libicu/cts_headers/unicode/uspoof.h b/libicu/cts_headers/unicode/uspoof.h
index 8e846e1..7680c68 100644
--- a/libicu/cts_headers/unicode/uspoof.h
+++ b/libicu/cts_headers/unicode/uspoof.h
@@ -154,10 +154,10 @@
  *     UChar* skel = (UChar*) malloc(++len * sizeof(UChar));
  *     status = U_ZERO_ERROR;
  *     uspoof_getSkeleton(sc, 0, str, -1, skel, len, &status);
- *     UBool result = FALSE;
+ *     UBool result = false;
  *     for (size_t i=0; i<DICTIONARY_LENGTH; i++) {
  *         result = u_strcmp(skel, skeletons[i]) == 0;
- *         if (result == TRUE) { break; }
+ *         if (result == true) { break; }
  *     }
  *     // Has confusable in dictionary: 1 (status: U_ZERO_ERROR)
  *     printf("Has confusable in dictionary: %d (status: %s)\n", result, u_errorName(status));
@@ -601,7 +601,7 @@
  *  @return        the newly created Spoof Checker
  *  @stable ICU 4.2
  */
-U_STABLE USpoofChecker * U_EXPORT2
+U_CAPI USpoofChecker * U_EXPORT2
 uspoof_open(UErrorCode *status);
 
 
@@ -626,7 +626,7 @@
  * @see uspoof_serialize
  * @stable ICU 4.2
  */
-U_STABLE USpoofChecker * U_EXPORT2
+U_CAPI USpoofChecker * U_EXPORT2
 uspoof_openFromSerialized(const void *data, int32_t length, int32_t *pActualLength,
                           UErrorCode *pErrorCode);
 
@@ -660,7 +660,7 @@
   * @return            A spoof checker that uses the rules from the input files.
   * @stable ICU 4.2
   */
-U_STABLE USpoofChecker * U_EXPORT2
+U_CAPI USpoofChecker * U_EXPORT2
 uspoof_openFromSource(const char *confusables,  int32_t confusablesLen,
                       const char *confusablesWholeScript, int32_t confusablesWholeScriptLen,
                       int32_t *errType, UParseError *pe, UErrorCode *status);
@@ -671,7 +671,7 @@
   *   its implementation.
   * @stable ICU 4.2
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_close(USpoofChecker *sc);
 
 /**
@@ -683,7 +683,7 @@
  * @return
  * @stable ICU 4.2
  */
-U_STABLE USpoofChecker * U_EXPORT2
+U_CAPI USpoofChecker * U_EXPORT2
 uspoof_clone(const USpoofChecker *sc, UErrorCode *status);
 
 
@@ -691,8 +691,10 @@
  * Specify the bitmask of checks that will be performed by {@link uspoof_check}. Calling this method
  * overwrites any checks that may have already been enabled. By default, all checks are enabled.
  *
- * To enable specific checks and disable all others, the "whitelisted" checks should be ORed together. For
- * example, to fail strings containing characters outside of the set specified by {@link uspoof_setAllowedChars} and
+ * To enable specific checks and disable all others,
+ * OR together only the bit constants for the desired checks.
+ * For example, to fail strings containing characters outside of
+ * the set specified by {@link uspoof_setAllowedChars} and
  * also strings that contain digits from mixed numbering systems:
  *
  * <pre>
@@ -701,8 +703,9 @@
  * }
  * </pre>
  *
- * To disable specific checks and enable all others, the "blacklisted" checks should be ANDed away from
- * ALL_CHECKS. For example, if you are not planning to use the {@link uspoof_areConfusable} functionality,
+ * To disable specific checks and enable all others,
+ * start with ALL_CHECKS and "AND away" the not-desired checks.
+ * For example, if you are not planning to use the {@link uspoof_areConfusable} functionality,
  * it is good practice to disable the CONFUSABLE check:
  *
  * <pre>
@@ -724,7 +727,7 @@
  * @stable ICU 4.2
  *
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_setChecks(USpoofChecker *sc, int32_t checks, UErrorCode *status);
 
 /**
@@ -738,7 +741,7 @@
  * @stable ICU 4.2
  *
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_getChecks(const USpoofChecker *sc, UErrorCode *status);
 
 /**
@@ -752,7 +755,7 @@
  * @see URestrictionLevel
  * @stable ICU 51
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_setRestrictionLevel(USpoofChecker *sc, URestrictionLevel restrictionLevel);
 
 
@@ -763,7 +766,7 @@
   * @see URestrictionLevel
   * @stable ICU 51
   */
-U_STABLE URestrictionLevel U_EXPORT2
+U_CAPI URestrictionLevel U_EXPORT2
 uspoof_getRestrictionLevel(const USpoofChecker *sc);
 
 /**
@@ -808,7 +811,7 @@
  * @param status       The error code, set if this function encounters a problem.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_setAllowedLocales(USpoofChecker *sc, const char *localesList, UErrorCode *status);
 
 /**
@@ -832,7 +835,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 uspoof_getAllowedLocales(USpoofChecker *sc, UErrorCode *status);
 
 
@@ -854,7 +857,7 @@
  * @param status   The error code, set if this function encounters a problem.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_setAllowedChars(USpoofChecker *sc, const USet *chars, UErrorCode *status);
 
 
@@ -878,7 +881,7 @@
  *                 the USPOOF_CHAR_LIMIT test.
  * @stable ICU 4.2
  */
-U_STABLE const USet * U_EXPORT2
+U_CAPI const USet * U_EXPORT2
 uspoof_getAllowedChars(const USpoofChecker *sc, UErrorCode *status);
 
 
@@ -914,7 +917,7 @@
  * @see uspoof_check2
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_check(const USpoofChecker *sc,
                          const UChar *id, int32_t length,
                          int32_t *position,
@@ -953,7 +956,7 @@
  * @see uspoof_check2UTF8
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_checkUTF8(const USpoofChecker *sc,
                  const char *id, int32_t length,
                  int32_t *position,
@@ -988,7 +991,7 @@
  * @see uspoof_check2UnicodeString
  * @stable ICU 58
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_check2(const USpoofChecker *sc,
     const UChar* id, int32_t length,
     USpoofCheckResult* checkResult,
@@ -1025,7 +1028,7 @@
  * @see uspoof_check2UnicodeString
  * @stable ICU 58
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_check2UTF8(const USpoofChecker *sc,
     const char *id, int32_t length,
     USpoofCheckResult* checkResult,
@@ -1049,7 +1052,7 @@
  * @see uspoof_check2UnicodeString
  * @stable ICU 58
  */
-U_STABLE USpoofCheckResult* U_EXPORT2
+U_CAPI USpoofCheckResult* U_EXPORT2
 uspoof_openCheckResult(UErrorCode *status);
 
 /**
@@ -1059,7 +1062,7 @@
  * @param checkResult  The instance of USpoofCheckResult to close
  * @stable ICU 58
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_closeCheckResult(USpoofCheckResult *checkResult);
 
 /**
@@ -1076,7 +1079,7 @@
  * @see uspoof_setChecks
  * @stable ICU 58
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_getCheckResultChecks(const USpoofCheckResult *checkResult, UErrorCode *status);
 
 /**
@@ -1089,7 +1092,7 @@
  * @see uspoof_setRestrictionLevel
  * @stable ICU 58
  */
-U_STABLE URestrictionLevel U_EXPORT2
+U_CAPI URestrictionLevel U_EXPORT2
 uspoof_getCheckResultRestrictionLevel(const USpoofCheckResult *checkResult, UErrorCode *status);
 
 /**
@@ -1103,7 +1106,7 @@
  * @param status       The error code, set if an error occurred.
  * @stable ICU 58
  */
-U_STABLE const USet* U_EXPORT2
+U_CAPI const USet* U_EXPORT2
 uspoof_getCheckResultNumerics(const USpoofCheckResult *checkResult, UErrorCode *status);
 
 
@@ -1150,7 +1153,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_areConfusable(const USpoofChecker *sc,
                      const UChar *id1, int32_t length1,
                      const UChar *id2, int32_t length2,
@@ -1183,7 +1186,7 @@
  *
  * @see uspoof_areConfusable
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_areConfusableUTF8(const USpoofChecker *sc,
                          const char *id1, int32_t length1,
                          const char *id2, int32_t length2,
@@ -1223,7 +1226,7 @@
  * @stable ICU 4.2
  * @see uspoof_areConfusable
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_getSkeleton(const USpoofChecker *sc,
                    uint32_t type,
                    const UChar *id,  int32_t length,
@@ -1263,7 +1266,7 @@
  *
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_getSkeletonUTF8(const USpoofChecker *sc,
                        uint32_t type,
                        const char *id,  int32_t length,
@@ -1282,7 +1285,7 @@
   *
   * @stable ICU 51
   */
-U_STABLE const USet * U_EXPORT2
+U_CAPI const USet * U_EXPORT2
 uspoof_getInclusionSet(UErrorCode *status);
 
 /**
@@ -1297,7 +1300,7 @@
   *
   * @stable ICU 51
   */
-U_STABLE const USet * U_EXPORT2
+U_CAPI const USet * U_EXPORT2
 uspoof_getRecommendedSet(UErrorCode *status);
 
 /**
@@ -1322,7 +1325,7 @@
  * @see utrie2_openFromSerialized()
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_serialize(USpoofChecker *sc,
                  void *data, int32_t capacity,
                  UErrorCode *status);
@@ -1388,7 +1391,7 @@
  * @param status   The error code, set if this function encounters a problem.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uspoof_setAllowedUnicodeSet(USpoofChecker *sc, const icu::UnicodeSet *chars, UErrorCode *status);
 
 
@@ -1412,7 +1415,7 @@
  *                 the USPOOF_CHAR_LIMIT test.
  * @stable ICU 4.2
  */
-U_STABLE const icu::UnicodeSet * U_EXPORT2
+U_CAPI const icu::UnicodeSet * U_EXPORT2
 uspoof_getAllowedUnicodeSet(const USpoofChecker *sc, UErrorCode *status);
 
 /**
@@ -1443,7 +1446,7 @@
  * @see uspoof_check2UnicodeString
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_checkUnicodeString(const USpoofChecker *sc,
                           const icu::UnicodeString &id,
                           int32_t *position,
@@ -1474,7 +1477,7 @@
  * @see uspoof_check2UTF8
  * @stable ICU 58
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_check2UnicodeString(const USpoofChecker *sc,
     const icu::UnicodeString &id,
     USpoofCheckResult* checkResult,
@@ -1501,7 +1504,7 @@
  *
  * @see uspoof_areConfusable
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uspoof_areConfusableUnicodeString(const USpoofChecker *sc,
                                   const icu::UnicodeString &s1,
                                   const icu::UnicodeString &s2,
@@ -1549,7 +1552,7 @@
   *
   * @stable ICU 51
   */
-U_STABLE const icu::UnicodeSet * U_EXPORT2
+U_CAPI const icu::UnicodeSet * U_EXPORT2
 uspoof_getInclusionUnicodeSet(UErrorCode *status);
 
 /**
@@ -1564,7 +1567,7 @@
   *
   * @stable ICU 51
   */
-U_STABLE const icu::UnicodeSet * U_EXPORT2
+U_CAPI const icu::UnicodeSet * U_EXPORT2
 uspoof_getRecommendedUnicodeSet(UErrorCode *status);
 
 #endif /* U_SHOW_CPLUSPLUS_API */
diff --git a/libicu/cts_headers/unicode/usprep.h b/libicu/cts_headers/unicode/usprep.h
index cc1eca1..f8a0f58 100644
--- a/libicu/cts_headers/unicode/usprep.h
+++ b/libicu/cts_headers/unicode/usprep.h
@@ -184,7 +184,7 @@
  * @see usprep_close()
  * @stable ICU 2.8
  */
-U_STABLE UStringPrepProfile* U_EXPORT2
+U_CAPI UStringPrepProfile* U_EXPORT2
 usprep_open(const char* path, 
             const char* fileName,
             UErrorCode* status);
@@ -200,7 +200,7 @@
  * @see usprep_close()
  * @stable ICU 4.2
  */
-U_STABLE UStringPrepProfile* U_EXPORT2
+U_CAPI UStringPrepProfile* U_EXPORT2
 usprep_openByType(UStringPrepProfileType type,
 				  UErrorCode* status);
 
@@ -209,7 +209,7 @@
  * @param profile The profile to close
  * @stable ICU 2.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 usprep_close(UStringPrepProfile* profile);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -260,7 +260,7 @@
  * @stable ICU 2.8
  */
 
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 usprep_prepare(   const UStringPrepProfile* prep,
                   const UChar* src, int32_t srcLength, 
                   UChar* dest, int32_t destCapacity,
diff --git a/libicu/cts_headers/unicode/ustring.h b/libicu/cts_headers/unicode/ustring.h
index 245b766..10ea45e 100644
--- a/libicu/cts_headers/unicode/ustring.h
+++ b/libicu/cts_headers/unicode/ustring.h
@@ -89,7 +89,7 @@
  * @return The number of UChars in <code>chars</code>, minus the terminator.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strlen(const UChar *s);
 /*@}*/
 
@@ -106,7 +106,7 @@
  * @return The number of code points in the specified code units.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_countChar32(const UChar *s, int32_t length);
 
 /**
@@ -127,7 +127,7 @@
  *         than 'number'. Same as (u_countChar32(s, length)>number).
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_strHasMoreChar32Than(const UChar *s, int32_t length, int32_t number);
 
 /**
@@ -140,7 +140,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strcat(UChar     *dst, 
     const UChar     *src);
 
@@ -158,7 +158,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strncat(UChar     *dst, 
      const UChar     *src, 
      int32_t     n);
@@ -183,7 +183,7 @@
  * @see u_strFindFirst
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strstr(const UChar *s, const UChar *substring);
 
 /**
@@ -207,7 +207,7 @@
  * @see u_strstr
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strFindFirst(const UChar *s, int32_t length, const UChar *substring, int32_t subLength);
 
 /**
@@ -227,7 +227,7 @@
  * @see u_strstr
  * @see u_strFindFirst
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strchr(const UChar *s, UChar c);
 
 /**
@@ -247,7 +247,7 @@
  * @see u_strstr
  * @see u_strFindFirst
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strchr32(const UChar *s, UChar32 c);
 
 /**
@@ -270,7 +270,7 @@
  * @see u_strFindFirst
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strrstr(const UChar *s, const UChar *substring);
 
 /**
@@ -294,7 +294,7 @@
  * @see u_strstr
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strFindLast(const UChar *s, int32_t length, const UChar *substring, int32_t subLength);
 
 /**
@@ -314,7 +314,7 @@
  * @see u_strrstr
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strrchr(const UChar *s, UChar c);
 
 /**
@@ -334,7 +334,7 @@
  * @see u_strrstr
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strrchr32(const UChar *s, UChar32 c);
 
 /**
@@ -349,7 +349,7 @@
  *         characters in <code>matchSet</code>, or NULL if no such character is found.
  * @stable ICU 2.0
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strpbrk(const UChar *string, const UChar *matchSet);
 
 /**
@@ -365,7 +365,7 @@
  * @see u_strspn
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strcspn(const UChar *string, const UChar *matchSet);
 
 /**
@@ -381,7 +381,7 @@
  * @see u_strcspn
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strspn(const UChar *string, const UChar *matchSet);
 
 /**
@@ -409,7 +409,7 @@
  *         when there are no more tokens.
  * @stable ICU 2.0
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strtok_r(UChar    *src, 
      const UChar    *delim,
            UChar   **saveState);
@@ -424,7 +424,7 @@
  * value if <code>s1</code> is bitwise greater than <code>s2</code>.
  * @stable ICU 2.0
  */
-U_STABLE int32_t  U_EXPORT2
+U_CAPI int32_t  U_EXPORT2
 u_strcmp(const UChar     *s1, 
          const UChar     *s2);
 
@@ -439,7 +439,7 @@
  * in code point order
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strcmpCodePointOrder(const UChar *s1, const UChar *s2);
 
 /**
@@ -462,14 +462,14 @@
  * @param s2 Second source string.
  * @param length2 Length of second source string, or -1 if NUL-terminated.
  *
- * @param codePointOrder Choose between code unit order (FALSE)
- *                       and code point order (TRUE).
+ * @param codePointOrder Choose between code unit order (false)
+ *                       and code point order (true).
  *
  * @return <0 or 0 or >0 as usual for string comparisons
  *
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strCompare(const UChar *s1, int32_t length1,
              const UChar *s2, int32_t length2,
              UBool codePointOrder);
@@ -485,8 +485,8 @@
  *
  * @param iter1 First source string iterator.
  * @param iter2 Second source string iterator.
- * @param codePointOrder Choose between code unit order (FALSE)
- *                       and code point order (TRUE).
+ * @param codePointOrder Choose between code unit order (false)
+ *                       and code point order (true).
  *
  * @return <0 or 0 or >0 as usual for string comparisons
  *
@@ -494,7 +494,7 @@
  *
  * @stable ICU 2.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strCompareIter(UCharIterator *iter1, UCharIterator *iter2, UBool codePointOrder);
 
 /**
@@ -537,7 +537,7 @@
  *
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strCaseCompare(const UChar *s1, int32_t length1,
                  const UChar *s2, int32_t length2,
                  uint32_t options,
@@ -555,7 +555,7 @@
  * value if <code>s1</code> is bitwise greater than <code>s2</code>.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strncmp(const UChar     *ucs1, 
      const UChar     *ucs2, 
      int32_t     n);
@@ -573,7 +573,7 @@
  * in code point order
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strncmpCodePointOrder(const UChar *s1, const UChar *s2, int32_t n);
 
 /**
@@ -595,7 +595,7 @@
  * @return A negative, zero, or positive integer indicating the comparison result.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strcasecmp(const UChar *s1, const UChar *s2, uint32_t options);
 
 /**
@@ -619,7 +619,7 @@
  * @return A negative, zero, or positive integer indicating the comparison result.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strncasecmp(const UChar *s1, const UChar *s2, int32_t n, uint32_t options);
 
 /**
@@ -643,7 +643,7 @@
  * @return A negative, zero, or positive integer indicating the comparison result.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_memcasecmp(const UChar *s1, const UChar *s2, int32_t length, uint32_t options);
 
 /**
@@ -654,7 +654,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strcpy(UChar     *dst, 
     const UChar     *src);
 
@@ -669,7 +669,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strncpy(UChar     *dst, 
      const UChar     *src, 
      int32_t     n);
@@ -686,7 +686,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2 u_uastrcpy(UChar *dst,
+U_CAPI UChar* U_EXPORT2 u_uastrcpy(UChar *dst,
                const char *src );
 
 /**
@@ -701,7 +701,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2 u_uastrncpy(UChar *dst,
+U_CAPI UChar* U_EXPORT2 u_uastrncpy(UChar *dst,
             const char *src,
             int32_t n);
 
@@ -715,7 +715,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE char* U_EXPORT2 u_austrcpy(char *dst,
+U_CAPI char* U_EXPORT2 u_austrcpy(char *dst,
             const UChar *src );
 
 /**
@@ -730,7 +730,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE char* U_EXPORT2 u_austrncpy(char *dst,
+U_CAPI char* U_EXPORT2 u_austrncpy(char *dst,
             const UChar *src,
             int32_t n );
 
@@ -744,7 +744,7 @@
  * @return A pointer to <code>dest</code>
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memcpy(UChar *dest, const UChar *src, int32_t count);
 
 /**
@@ -755,7 +755,7 @@
  * @return A pointer to <code>dest</code>
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memmove(UChar *dest, const UChar *src, int32_t count);
 
 /**
@@ -767,7 +767,7 @@
  * @return A pointer to <code>dest</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memset(UChar *dest, UChar c, int32_t count);
 
 /**
@@ -781,7 +781,7 @@
  *      When buf1 > buf2, a positive number is returned.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_memcmp(const UChar *buf1, const UChar *buf2, int32_t count);
 
 /**
@@ -797,7 +797,7 @@
  * in code point order
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_memcmpCodePointOrder(const UChar *s1, const UChar *s2, int32_t count);
 
 /**
@@ -817,7 +817,7 @@
  * @see u_memchr32
  * @see u_strFindFirst
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memchr(const UChar *s, UChar c, int32_t count);
 
 /**
@@ -837,7 +837,7 @@
  * @see u_memchr
  * @see u_strFindFirst
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memchr32(const UChar *s, UChar32 c, int32_t count);
 
 /**
@@ -857,7 +857,7 @@
  * @see u_memrchr32
  * @see u_strFindLast
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memrchr(const UChar *s, UChar c, int32_t count);
 
 /**
@@ -877,7 +877,7 @@
  * @see u_memrchr
  * @see u_strFindLast
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memrchr32(const UChar *s, UChar32 c, int32_t count);
 
 /**
@@ -903,13 +903,13 @@
  *
  *     U_STRING_DECL(ustringVar1, "Quick-Fox 2", 11);
  *     U_STRING_DECL(ustringVar2, "jumps 5%", 8);
- *     static UBool didInit=FALSE;
+ *     static UBool didInit=false;
  *
  *     int32_t function() {
  *         if(!didInit) {
  *             U_STRING_INIT(ustringVar1, "Quick-Fox 2", 11);
  *             U_STRING_INIT(ustringVar2, "jumps 5%", 8);
- *             didInit=TRUE;
+ *             didInit=true;
  *         }
  *         return u_strcmp(ustringVar1, ustringVar2);
  *     }
@@ -992,7 +992,7 @@
  * @see UnicodeString#unescapeAt()
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_unescape(const char *src,
            UChar *dest, int32_t destCapacity);
 
@@ -1040,7 +1040,7 @@
  * @see UnicodeString#unescapeAt()
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_unescapeAt(UNESCAPE_CHAR_AT charAt,
              int32_t *offset,
              int32_t length,
@@ -1066,7 +1066,7 @@
  *         only some of the result was written to the destination buffer.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strToUpper(UChar *dest, int32_t destCapacity,
              const UChar *src, int32_t srcLength,
              const char *locale,
@@ -1092,7 +1092,7 @@
  *         only some of the result was written to the destination buffer.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strToLower(UChar *dest, int32_t destCapacity,
              const UChar *src, int32_t srcLength,
              const char *locale,
@@ -1138,7 +1138,7 @@
  *         only some of the result was written to the destination buffer.
  * @stable ICU 2.1
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strToTitle(UChar *dest, int32_t destCapacity,
              const UChar *src, int32_t srcLength,
              UBreakIterator *titleIter,
@@ -1171,7 +1171,7 @@
  *         only some of the result was written to the destination buffer.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strFoldCase(UChar *dest, int32_t destCapacity,
               const UChar *src, int32_t srcLength,
               uint32_t options,
@@ -1200,7 +1200,7 @@
  * @return The pointer to destination buffer.
  * @stable ICU 2.0
  */
-U_STABLE wchar_t* U_EXPORT2
+U_CAPI wchar_t* U_EXPORT2
 u_strToWCS(wchar_t *dest, 
            int32_t destCapacity,
            int32_t *pDestLength,
@@ -1229,7 +1229,7 @@
  * @return The pointer to destination buffer.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strFromWCS(UChar   *dest,
              int32_t destCapacity, 
              int32_t *pDestLength,
@@ -1260,7 +1260,7 @@
  * @see u_strToUTF8WithSub
  * @see u_strFromUTF8
  */
-U_STABLE char* U_EXPORT2 
+U_CAPI char* U_EXPORT2 
 u_strToUTF8(char *dest,           
             int32_t destCapacity,
             int32_t *pDestLength,
@@ -1290,7 +1290,7 @@
  * @see u_strFromUTF8WithSub
  * @see u_strFromUTF8Lenient
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strFromUTF8(UChar *dest,             
               int32_t destCapacity,
               int32_t *pDestLength,
@@ -1333,7 +1333,7 @@
  * @see u_strFromUTF8WithSub
  * @stable ICU 3.6
  */
-U_STABLE char* U_EXPORT2
+U_CAPI char* U_EXPORT2
 u_strToUTF8WithSub(char *dest,
             int32_t destCapacity,
             int32_t *pDestLength,
@@ -1378,7 +1378,7 @@
  * @see u_strToUTF8WithSub
  * @stable ICU 3.6
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strFromUTF8WithSub(UChar *dest,
               int32_t destCapacity,
               int32_t *pDestLength,
@@ -1438,7 +1438,7 @@
  * @see u_strToUTF8WithSub
  * @stable ICU 3.6
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strFromUTF8Lenient(UChar *dest,
                      int32_t destCapacity,
                      int32_t *pDestLength,
@@ -1468,7 +1468,7 @@
  * @see u_strFromUTF32
  * @stable ICU 2.0
  */
-U_STABLE UChar32* U_EXPORT2 
+U_CAPI UChar32* U_EXPORT2 
 u_strToUTF32(UChar32 *dest, 
              int32_t  destCapacity,
              int32_t  *pDestLength,
@@ -1498,7 +1498,7 @@
  * @see u_strToUTF32
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2 
+U_CAPI UChar* U_EXPORT2 
 u_strFromUTF32(UChar   *dest,
                int32_t destCapacity, 
                int32_t *pDestLength,
@@ -1541,7 +1541,7 @@
  * @see u_strFromUTF32WithSub
  * @stable ICU 4.2
  */
-U_STABLE UChar32* U_EXPORT2
+U_CAPI UChar32* U_EXPORT2
 u_strToUTF32WithSub(UChar32 *dest,
              int32_t destCapacity,
              int32_t *pDestLength,
@@ -1585,7 +1585,7 @@
  * @see u_strToUTF32WithSub
  * @stable ICU 4.2
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strFromUTF32WithSub(UChar *dest,
                int32_t destCapacity,
                int32_t *pDestLength,
@@ -1626,7 +1626,7 @@
  * @see u_strToUTF8WithSub
  * @see u_strFromJavaModifiedUTF8WithSub
  */
-U_STABLE char* U_EXPORT2 
+U_CAPI char* U_EXPORT2 
 u_strToJavaModifiedUTF8(
         char *dest,
         int32_t destCapacity,
@@ -1676,7 +1676,7 @@
  * @see u_strToJavaModifiedUTF8
  * @stable ICU 4.4
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strFromJavaModifiedUTF8WithSub(
         UChar *dest,
         int32_t destCapacity,
diff --git a/libicu/cts_headers/unicode/utext.h b/libicu/cts_headers/unicode/utext.h
index 37d71a3..c6d1e53 100644
--- a/libicu/cts_headers/unicode/utext.h
+++ b/libicu/cts_headers/unicode/utext.h
@@ -180,7 +180,7 @@
   *
   * @stable ICU 3.4
   */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_close(UText *ut);
 
 /**
@@ -204,7 +204,7 @@
  *               will always be used and returned.
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openUTF8(UText *ut, const char *s, int64_t length, UErrorCode *status);
 
 
@@ -222,7 +222,7 @@
  *               will always be used and returned.
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openUChars(UText *ut, const UChar *s, int64_t length, UErrorCode *status);
 
 
@@ -239,7 +239,7 @@
  *                 will always be used and returned.
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openUnicodeString(UText *ut, icu::UnicodeString *s, UErrorCode *status);
 
 
@@ -255,7 +255,7 @@
  *               will always be used and returned.
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openConstUnicodeString(UText *ut, const icu::UnicodeString *s, UErrorCode *status);
 
 
@@ -271,7 +271,7 @@
  * @see Replaceable
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openReplaceable(UText *ut, icu::Replaceable *rep, UErrorCode *status);
 
 /**
@@ -286,7 +286,7 @@
  * @see Replaceable
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openCharacterIterator(UText *ut, icu::CharacterIterator *ci, UErrorCode *status);
 
 #endif
@@ -323,7 +323,7 @@
   *  shallow clones provide some protection against errors of this type by
   *  disabling text modification via the cloned UText.
   *
-  *  A shallow clone made with the readOnly parameter == FALSE will preserve the 
+  *  A shallow clone made with the readOnly parameter == false will preserve the 
   *  utext_isWritable() state of the source object.  Note, however, that
   *  write operations must be avoided while more than one UText exists that refer
   *  to the same underlying text.
@@ -339,8 +339,8 @@
   *                If non-NULL, must refer to an already existing UText, which will then
   *                be reset to become the clone.
   *  @param src    The UText to be cloned.
-  *  @param deep   TRUE to request a deep clone, FALSE for a shallow clone.
-  *  @param readOnly TRUE to request that the cloned UText have read only access to the 
+  *  @param deep   true to request a deep clone, false for a shallow clone.
+  *  @param readOnly true to request that the cloned UText have read only access to the 
   *                underlying text.  
 
   *  @param status Errors are returned here.  For deep clones, U_UNSUPPORTED_ERROR
@@ -349,7 +349,7 @@
   *  @return       The newly created clone, or NULL if the clone operation failed.
   *  @stable ICU 3.4
   */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_clone(UText *dest, const UText *src, UBool deep, UBool readOnly, UErrorCode *status);
 
 
@@ -357,14 +357,14 @@
   *  Compare two UText objects for equality.
   *  UTexts are equal if they are iterating over the same text, and
   *    have the same iteration position within the text.
-  *    If either or both of the parameters are NULL, the comparison is FALSE.
+  *    If either or both of the parameters are NULL, the comparison is false.
   *
   *  @param a   The first of the two UTexts to compare.
   *  @param b   The other UText to be compared.
-  *  @return    TRUE if the two UTexts are equal.
+  *  @return    true if the two UTexts are equal.
   *  @stable ICU 3.6
   */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 utext_equals(const UText *a, const UText *b);
 
 
@@ -385,11 +385,11 @@
   *
   * @stable ICU 3.4
   */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 utext_nativeLength(UText *ut);
 
 /**
- *  Return TRUE if calculating the length of the text could be expensive.
+ *  Return true if calculating the length of the text could be expensive.
  *  Finding the length of NUL terminated strings is considered to be expensive.
  *
  *  Note that the value of this function may change
@@ -398,10 +398,10 @@
  *  be expensive to report it.
  *
  * @param ut the text to be accessed.
- * @return TRUE if determining the length of the text could be time consuming.
+ * @return true if determining the length of the text could be time consuming.
  * @stable ICU 3.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 utext_isLengthExpensive(const UText *ut);
 
 /**
@@ -429,7 +429,7 @@
  * @return the code point at the specified index.
  * @stable ICU 3.4
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_char32At(UText *ut, int64_t nativeIndex);
 
 
@@ -443,7 +443,7 @@
  * @return the Unicode code point at the current iterator position.
  * @stable ICU 3.4
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_current32(UText *ut);
 
 
@@ -465,7 +465,7 @@
  * @see UTEXT_NEXT32
  * @stable ICU 3.4
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_next32(UText *ut);
 
 
@@ -486,7 +486,7 @@
  *  @see UTEXT_PREVIOUS32
  *  @stable ICU 3.4
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_previous32(UText *ut);
 
 
@@ -508,7 +508,7 @@
   *         or U_SENTINEL (-1) if it is out of bounds.
   * @stable ICU 3.4
   */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_next32From(UText *ut, int64_t nativeIndex);
 
 
@@ -528,7 +528,7 @@
   *
   * @stable ICU 3.4
   */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_previous32From(UText *ut, int64_t nativeIndex);
 
 /**
@@ -543,7 +543,7 @@
   * @return the current index position, in the native units of the text provider.
   * @stable ICU 3.4
   */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 utext_getNativeIndex(const UText *ut);
 
 /**
@@ -569,7 +569,7 @@
  * @param nativeIndex the native unit index of the new iteration position.
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utext_setNativeIndex(UText *ut, int64_t nativeIndex);
 
 /**
@@ -584,11 +584,11 @@
  *
  * @param ut the text to be accessed.
  * @param delta the signed number of code points to move the iteration position.
- * @return TRUE if the position could be moved the requested number of positions while
+ * @return true if the position could be moved the requested number of positions while
  *              staying within the range [0 - text length].
  * @stable ICU 3.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 utext_moveIndex32(UText *ut, int32_t delta);
 
 /**
@@ -613,7 +613,7 @@
  *         or zero if the current position is at the start of the text.
  * @stable ICU 3.6
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 utext_getPreviousNativeIndex(UText *ut); 
 
 
@@ -651,7 +651,7 @@
  *
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utext_extract(UText *ut,
              int64_t nativeStart, int64_t nativeLimit,
              UChar *dest, int32_t destCapacity,
@@ -768,16 +768,16 @@
 
 
 /**
- *  Return TRUE if the text can be written (modified) with utext_replace() or
+ *  Return true if the text can be written (modified) with utext_replace() or
  *  utext_copy().  For the text to be writable, the text provider must
  *  be of a type that supports writing and the UText must not be frozen.
  *
- *  Attempting to modify text when utext_isWriteable() is FALSE will fail -
+ *  Attempting to modify text when utext_isWriteable() is false will fail -
  *  the text will not be modified, and an error will be returned from the function
  *  that attempted the modification.
  *
  * @param  ut   the UText to be tested.
- * @return TRUE if the text is modifiable.
+ * @return true if the text is modifiable.
  *
  * @see    utext_freeze()
  * @see    utext_replace()
@@ -785,7 +785,7 @@
  * @stable ICU 3.4
  *
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 utext_isWritable(const UText *ut);
 
 
@@ -794,10 +794,10 @@
   * @see Replaceable::hasMetaData()
   *
   * @param ut The UText to be tested
-  * @return TRUE if the underlying text includes meta data.
+  * @return true if the underlying text includes meta data.
   * @stable ICU 3.4
   */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 utext_hasMetaData(const UText *ut);
 
 
@@ -808,7 +808,7 @@
  *  newly inserted replacement text.
  *
  * This function is only available on UText types that support writing,
- * that is, ones where utext_isWritable() returns TRUE.
+ * that is, ones where utext_isWritable() returns true.
  *
  * When using this function, there should be only a single UText opened onto the
  * underlying native text string.  Behavior after a replace operation
@@ -828,7 +828,7 @@
  *
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utext_replace(UText *ut,
              int64_t nativeStart, int64_t nativeLimit,
              const UChar *replacementText, int32_t replacementLength,
@@ -850,7 +850,7 @@
  * at the destination position.
  *
  * This function is only available on UText types that support writing,
- * that is, ones where utext_isWritable() returns TRUE.
+ * that is, ones where utext_isWritable() returns true.
  *
  * When using this function, there should be only a single UText opened onto the
  * underlying native text string.  Behavior after a copy operation
@@ -863,12 +863,12 @@
  *                     to be copied.
  * @param destIndex    The native destination index to which the source substring is
  *                     copied or moved.
- * @param move         If TRUE, then the substring is moved, not copied/duplicated.
+ * @param move         If true, then the substring is moved, not copied/duplicated.
  * @param status       receives any error status.  Possible errors include U_NO_WRITE_PERMISSION
  *                       
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utext_copy(UText *ut,
           int64_t nativeStart, int64_t nativeLimit,
           int64_t destIndex,
@@ -897,7 +897,7 @@
   *  @see   utext_isWritable()
   *  @stable ICU 3.6
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utext_freeze(UText *ut);
 
 
@@ -972,7 +972,7 @@
   *  @param dest   A UText struct to be filled in with the result of the clone operation,
   *                or NULL if the clone function should heap-allocate a new UText struct.
   *  @param src    The UText to be cloned.
-  *  @param deep   TRUE to request a deep clone, FALSE for a shallow clone.
+  *  @param deep   true to request a deep clone, false for a shallow clone.
   *  @param status Errors are returned here.  For deep clones, U_UNSUPPORTED_ERROR
   *                should be returned if the text provider is unable to clone the
   *                original text.
@@ -1008,9 +1008,9 @@
  *
  * @param ut          the UText being accessed.
  * @param nativeIndex Requested index of the text to be accessed.
- * @param forward     If TRUE, then the returned chunk must contain text
+ * @param forward     If true, then the returned chunk must contain text
  *                    starting from the index, so that start<=index<limit.
- *                    If FALSE, then the returned chunk must contain text
+ *                    If false, then the returned chunk must contain text
  *                    before the index, so that start<index<=limit.
  * @return            True if the requested index could be accessed.  The chunk
  *                    will contain the requested text.
@@ -1114,7 +1114,7 @@
  * @param nativeStart  The index of the start of the region to be copied or moved
  * @param nativeLimit  The index of the character following the region to be replaced.
  * @param nativeDest   The destination index to which the source substring is copied or moved.
- * @param move         If TRUE, then the substring is moved, not copied/duplicated.
+ * @param move         If true, then the substring is moved, not copied/duplicated.
  * @param status       receives any error status.  Possible errors include U_NO_WRITE_PERMISSION
  *
  * @stable ICU 3.4
@@ -1535,7 +1535,7 @@
  * @return pointer to the UText, allocated if necessary, with extra space set up if requested.
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_setup(UText *ut, int32_t extraSpace, UErrorCode *status);
 
 // do not use #ifndef U_HIDE_INTERNAL_API around the following!
diff --git a/libicu/cts_headers/unicode/utf.h b/libicu/cts_headers/unicode/utf.h
index ef51299..c9d5f57 100644
--- a/libicu/cts_headers/unicode/utf.h
+++ b/libicu/cts_headers/unicode/utf.h
@@ -103,7 +103,7 @@
  * code point values (0..U+10ffff). They are indicated with negative values instead.
  *
  * For more information see the ICU User Guide Strings chapter
- * (http://userguide.icu-project.org/strings).
+ * (https://unicode-org.github.io/icu/userguide/strings).
  *
  * <em>Usage:</em>
  * ICU coding guidelines for if() statements should be followed when using these macros.
@@ -124,7 +124,7 @@
 /**
  * Is this code point a Unicode noncharacter?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_UNICODE_NONCHAR(c) \
@@ -145,7 +145,7 @@
  * and that boundary is tested first for performance.
  *
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_UNICODE_CHAR(c) \
@@ -155,7 +155,7 @@
 /**
  * Is this code point a BMP code point (U+0000..U+ffff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.8
  */
 #define U_IS_BMP(c) ((uint32_t)(c)<=0xffff)
@@ -163,7 +163,7 @@
 /**
  * Is this code point a supplementary code point (U+10000..U+10ffff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.8
  */
 #define U_IS_SUPPLEMENTARY(c) ((uint32_t)((c)-0x10000)<=0xfffff)
@@ -171,7 +171,7 @@
 /**
  * Is this code point a lead surrogate (U+d800..U+dbff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_LEAD(c) (((c)&0xfffffc00)==0xd800)
@@ -179,7 +179,7 @@
 /**
  * Is this code point a trail surrogate (U+dc00..U+dfff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_TRAIL(c) (((c)&0xfffffc00)==0xdc00)
@@ -187,7 +187,7 @@
 /**
  * Is this code point a surrogate (U+d800..U+dfff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_SURROGATE(c) (((c)&0xfffff800)==0xd800)
@@ -196,7 +196,7 @@
  * Assuming c is a surrogate code point (U_IS_SURROGATE(c)),
  * is it a lead surrogate?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_SURROGATE_LEAD(c) (((c)&0x400)==0)
@@ -205,7 +205,7 @@
  * Assuming c is a surrogate code point (U_IS_SURROGATE(c)),
  * is it a trail surrogate?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 4.2
  */
 #define U_IS_SURROGATE_TRAIL(c) (((c)&0x400)!=0)
diff --git a/libicu/cts_headers/unicode/utf16.h b/libicu/cts_headers/unicode/utf16.h
index 9fd7d5c..3902c60 100644
--- a/libicu/cts_headers/unicode/utf16.h
+++ b/libicu/cts_headers/unicode/utf16.h
@@ -23,7 +23,7 @@
  * This file defines macros to deal with 16-bit Unicode (UTF-16) code units and strings.
  *
  * For more information see utf.h and the ICU User Guide Strings chapter
- * (http://userguide.icu-project.org/strings).
+ * (https://unicode-org.github.io/icu/userguide/strings).
  *
  * <em>Usage:</em>
  * ICU coding guidelines for if() statements should be followed when using these macros.
@@ -34,6 +34,7 @@
 #ifndef __UTF16_H__
 #define __UTF16_H__
 
+#include <stdbool.h>
 #include "unicode/umachine.h"
 #ifndef __UTF_H__
 #   include "unicode/utf.h"
@@ -44,7 +45,7 @@
 /**
  * Does this code unit alone encode a code point (BMP, not a surrogate)?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_SINGLE(c) !U_IS_SURROGATE(c)
@@ -52,7 +53,7 @@
 /**
  * Is this code unit a lead surrogate (U+d800..U+dbff)?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_LEAD(c) (((c)&0xfffffc00)==0xd800)
@@ -60,7 +61,7 @@
 /**
  * Is this code unit a trail surrogate (U+dc00..U+dfff)?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_TRAIL(c) (((c)&0xfffffc00)==0xdc00)
@@ -68,7 +69,7 @@
 /**
  * Is this code unit a surrogate (U+d800..U+dfff)?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_SURROGATE(c) U_IS_SURROGATE(c)
@@ -77,7 +78,7 @@
  * Assuming c is a surrogate code point (U16_IS_SURROGATE(c)),
  * is it a lead surrogate?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_SURROGATE_LEAD(c) (((c)&0x400)==0)
@@ -86,7 +87,7 @@
  * Assuming c is a surrogate code point (U16_IS_SURROGATE(c)),
  * is it a trail surrogate?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 4.2
  */
 #define U16_IS_SURROGATE_TRAIL(c) (((c)&0x400)!=0)
@@ -379,13 +380,13 @@
  * "Safe" macro, checks for a valid code point.
  * If a surrogate pair is written, checks for sufficient space in the string.
  * If the code point is not valid or a trail surrogate does not fit,
- * then isError is set to TRUE.
+ * then isError is set to true.
  *
  * @param s const UChar * string buffer
  * @param i string offset, must be i<capacity
  * @param capacity size of the string buffer
  * @param c code point to append
- * @param isError output UBool set to TRUE if an error occurs, otherwise not modified
+ * @param isError output UBool set to true if an error occurs, otherwise not modified
  * @see U16_APPEND_UNSAFE
  * @stable ICU 2.4
  */
@@ -396,7 +397,7 @@
         (s)[(i)++]=(uint16_t)(((c)>>10)+0xd7c0); \
         (s)[(i)++]=(uint16_t)(((c)&0x3ff)|0xdc00); \
     } else /* c>0x10ffff or not enough space */ { \
-        (isError)=TRUE; \
+        (isError)=true; \
     } \
 } UPRV_BLOCK_MACRO_END
 
diff --git a/libicu/cts_headers/unicode/utf8.h b/libicu/cts_headers/unicode/utf8.h
index 4987a00..5a07435 100644
--- a/libicu/cts_headers/unicode/utf8.h
+++ b/libicu/cts_headers/unicode/utf8.h
@@ -23,7 +23,7 @@
  * This file defines macros to deal with 8-bit Unicode (UTF-8) code units (bytes) and strings.
  *
  * For more information see utf.h and the ICU User Guide Strings chapter
- * (http://userguide.icu-project.org/strings).
+ * (https://unicode-org.github.io/icu/userguide/strings).
  *
  * <em>Usage:</em>
  * ICU coding guidelines for if() statements should be followed when using these macros.
@@ -34,6 +34,7 @@
 #ifndef __UTF8_H__
 #define __UTF8_H__
 
+#include <stdbool.h>
 #include "unicode/umachine.h"
 #ifndef __UTF_H__
 #   include "unicode/utf.h"
@@ -117,48 +118,48 @@
  * Function for handling "next code point" with error-checking.
  *
  * This is internal since it is not meant to be called directly by external clients;
- * however it is U_STABLE (not U_INTERNAL) since it is called by public macros in this
+ * however it is called by public macros in this
  * file and thus must remain stable, and should not be hidden when other internal
  * functions are hidden (otherwise public macros would fail to compile).
  * @internal
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utf8_nextCharSafeBody(const uint8_t *s, int32_t *pi, int32_t length, UChar32 c, UBool strict);
 
 /**
  * Function for handling "append code point" with error-checking.
  *
  * This is internal since it is not meant to be called directly by external clients;
- * however it is U_STABLE (not U_INTERNAL) since it is called by public macros in this
+ * however it is called by public macros in this
  * file and thus must remain stable, and should not be hidden when other internal
  * functions are hidden (otherwise public macros would fail to compile).
  * @internal
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utf8_appendCharSafeBody(uint8_t *s, int32_t i, int32_t length, UChar32 c, UBool *pIsError);
 
 /**
  * Function for handling "previous code point" with error-checking.
  *
  * This is internal since it is not meant to be called directly by external clients;
- * however it is U_STABLE (not U_INTERNAL) since it is called by public macros in this
+ * however it is called by public macros in this
  * file and thus must remain stable, and should not be hidden when other internal
  * functions are hidden (otherwise public macros would fail to compile).
  * @internal
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utf8_prevCharSafeBody(const uint8_t *s, int32_t start, int32_t *pi, UChar32 c, UBool strict);
 
 /**
  * Function for handling "skip backward one code point" with error-checking.
  *
  * This is internal since it is not meant to be called directly by external clients;
- * however it is U_STABLE (not U_INTERNAL) since it is called by public macros in this
+ * however it is called by public macros in this
  * file and thus must remain stable, and should not be hidden when other internal
  * functions are hidden (otherwise public macros would fail to compile).
  * @internal
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i);
 
 /* single-code point definitions -------------------------------------------- */
@@ -166,7 +167,7 @@
 /**
  * Does this code unit (byte) encode a code point by itself (US-ASCII 0..0x7f)?
  * @param c 8-bit code unit (byte)
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U8_IS_SINGLE(c) (((c)&0x80)==0)
@@ -174,7 +175,7 @@
 /**
  * Is this code unit (byte) a UTF-8 lead byte? (0xC2..0xF4)
  * @param c 8-bit code unit (byte)
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U8_IS_LEAD(c) ((uint8_t)((c)-0xc2)<=0x32)
@@ -183,7 +184,7 @@
 /**
  * Is this code unit (byte) a UTF-8 trail byte? (0x80..0xBF)
  * @param c 8-bit code unit (byte)
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U8_IS_TRAIL(c) ((int8_t)(c)<-0x40)
@@ -445,13 +446,13 @@
  * "Safe" macro, checks for a valid code point.
  * If a non-ASCII code point is written, checks for sufficient space in the string.
  * If the code point is not valid or trail bytes do not fit,
- * then isError is set to TRUE.
+ * then isError is set to true.
  *
  * @param s const uint8_t * string buffer
  * @param i int32_t string offset, must be i<capacity
  * @param capacity int32_t size of the string buffer
  * @param c UChar32 code point to append
- * @param isError output UBool set to TRUE if an error occurs, otherwise not modified
+ * @param isError output UBool set to true if an error occurs, otherwise not modified
  * @see U8_APPEND_UNSAFE
  * @stable ICU 2.4
  */
@@ -472,7 +473,7 @@
         (s)[(i)++]=(uint8_t)(((__uc>>6)&0x3f)|0x80); \
         (s)[(i)++]=(uint8_t)((__uc&0x3f)|0x80); \
     } else { \
-        (isError)=TRUE; \
+        (isError)=true; \
     } \
 } UPRV_BLOCK_MACRO_END
 
diff --git a/libicu/cts_headers/unicode/utf_old.h b/libicu/cts_headers/unicode/utf_old.h
index b2428e6..160f5ad 100644
--- a/libicu/cts_headers/unicode/utf_old.h
+++ b/libicu/cts_headers/unicode/utf_old.h
@@ -109,7 +109,7 @@
  * Where such a distinction is useful, there are two versions of the macros, "unsafe" and "safe"
  * ones with ..._UNSAFE and ..._SAFE suffixes. The unsafe macros are fast but may cause
  * program failures if the strings are not well-formed. The safe macros have an additional, boolean
- * parameter "strict". If strict is FALSE, then only illegal sequences are detected.
+ * parameter "strict". If strict is false, then only illegal sequences are detected.
  * Otherwise, irregular sequences and non-characters are detected as well (like single surrogates).
  * Safe macros return special error code points for illegal/irregular sequences:
  * Typically, U+ffff, or values that would result in a code unit sequence of the same length
@@ -181,7 +181,7 @@
 
 /**
  * The default choice for general Unicode string macros is to use the ..._SAFE macro implementations
- * with strict=FALSE.
+ * with strict=false.
  *
  * @deprecated ICU 2.4. Obsolete, see utf_old.h.
  */
diff --git a/libicu/cts_headers/unicode/utmscale.h b/libicu/cts_headers/unicode/utmscale.h
index d8b8a2e..5a0bdc6 100644
--- a/libicu/cts_headers/unicode/utmscale.h
+++ b/libicu/cts_headers/unicode/utmscale.h
@@ -449,7 +449,7 @@
  * 
  * @stable ICU 3.2
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
     utmscale_getTimeScaleValue(UDateTimeScale timeScale, UTimeScaleValue value, UErrorCode *status);
 
 /* Conversion to 'universal time scale' */
@@ -465,7 +465,7 @@
  *
  * @stable ICU 3.2
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
     utmscale_fromInt64(int64_t otherTime, UDateTimeScale timeScale, UErrorCode *status);
 
 /* Conversion from 'universal time scale' */
@@ -481,7 +481,7 @@
  *
  * @stable ICU 3.2
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
     utmscale_toInt64(int64_t universalTime, UDateTimeScale timeScale, UErrorCode *status);
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/libicu/cts_headers/unicode/utrace.h b/libicu/cts_headers/unicode/utrace.h
index 5b4a049..28c313c 100644
--- a/libicu/cts_headers/unicode/utrace.h
+++ b/libicu/cts_headers/unicode/utrace.h
@@ -112,11 +112,9 @@
     UTRACE_COLLATION_LIMIT,
 #endif  // U_HIDE_DEPRECATED_API
 
-#ifndef U_HIDE_DRAFT_API
-
     /**
      * The lowest resource/data location.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UTRACE_UDATA_START=0x3000,
 
@@ -133,7 +131,7 @@
      * - "get" (a path was loaded, but the value was not accessed)
      * - "getalias" (a path was loaded, and an alias was resolved)
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UTRACE_UDATA_RESOURCE=UTRACE_UDATA_START,
 
@@ -141,7 +139,7 @@
      * Indicates that a resource bundle was opened.
      *
      * Provides one C-style string to UTraceData: file name.
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UTRACE_UDATA_BUNDLE,
 
@@ -150,7 +148,7 @@
      *
      * Provides one C-style string to UTraceData: file name.
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UTRACE_UDATA_DATA_FILE,
 
@@ -163,12 +161,10 @@
      *
      * Provides one C-style string to UTraceData: file name.
      *
-     * @draft ICU 65
+     * @stable ICU 65
      */
     UTRACE_UDATA_RES_FILE,
 
-#endif  // U_HIDE_DRAFT_API
-
 #ifndef U_HIDE_INTERNAL_API
     /**
      * One more than the highest normal resource/data trace location.
@@ -249,7 +245,7 @@
  * @param traceLevel A UTraceLevel value.
  * @stable ICU 2.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utrace_setLevel(int32_t traceLevel);
 
 /**
@@ -257,7 +253,7 @@
  * @return The UTraceLevel value being used by ICU.
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utrace_getLevel(void);
 
 /* Trace function pointers types  ----------------------------- */
@@ -331,7 +327,7 @@
   *
   *  @stable ICU 2.8
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utrace_setFunctions(const void *context,
                     UTraceEntry *e, UTraceExit *x, UTraceData *d);
 
@@ -345,7 +341,7 @@
   * @param d        The currently installed UTraceData function.
   * @stable ICU 2.8
   */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utrace_getFunctions(const void **context,
                     UTraceEntry **e, UTraceExit **x, UTraceData **d);
 
@@ -467,7 +463,7 @@
   *                 If buffer capacity is insufficient, the required capacity is returned. 
   *  @stable ICU 2.8
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utrace_vformat(char *outBuf, int32_t capacity,
               int32_t indent, const char *fmt,  va_list args);
 
@@ -488,7 +484,7 @@
   *                 If buffer capacity is insufficient, the required capacity is returned. 
   *  @stable ICU 2.8
   */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utrace_format(char *outBuf, int32_t capacity,
               int32_t indent, const char *fmt,  ...);
 
@@ -505,7 +501,7 @@
  * @see UTraceFunctionNumber
  * @stable ICU 2.8
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 utrace_functionName(int32_t fnNumber);
 
 U_CDECL_END
diff --git a/libicu/cts_headers/unicode/utrans.h b/libicu/cts_headers/unicode/utrans.h
index 9134e37..1ad7dbd 100644
--- a/libicu/cts_headers/unicode/utrans.h
+++ b/libicu/cts_headers/unicode/utrans.h
@@ -191,7 +191,7 @@
  *         utrans_xxx() functions, or NULL if the open call fails.
  * @stable ICU 2.8
  */
-U_STABLE UTransliterator* U_EXPORT2
+U_CAPI UTransliterator* U_EXPORT2
 utrans_openU(const UChar *id,
              int32_t idLength,
              UTransDirection dir,
@@ -215,7 +215,7 @@
  * inverse of trans, or NULL if the open call fails.
  * @stable ICU 2.0
  */
-U_STABLE UTransliterator* U_EXPORT2 
+U_CAPI UTransliterator* U_EXPORT2 
 utrans_openInverse(const UTransliterator* trans,
                    UErrorCode* status);
 
@@ -229,7 +229,7 @@
  * utrans_xxx() functions, or NULL if the clone call fails.
  * @stable ICU 2.0
  */
-U_STABLE UTransliterator* U_EXPORT2 
+U_CAPI UTransliterator* U_EXPORT2 
 utrans_clone(const UTransliterator* trans,
              UErrorCode* status);
 
@@ -239,7 +239,7 @@
  * @param trans the transliterator to be closed.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_close(UTransliterator* trans);
 
 #if U_SHOW_CPLUSPLUS_API
@@ -275,7 +275,7 @@
  *
  * @stable ICU 2.8
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 utrans_getUnicodeID(const UTransliterator *trans,
                     int32_t *resultLength);
 
@@ -293,7 +293,7 @@
  * @param status a pointer to the UErrorCode
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_register(UTransliterator* adoptedTrans,
                 UErrorCode* status);
 
@@ -306,7 +306,7 @@
  * @param idLength the length of id, or -1 if id is zero-terminated
  * @stable ICU 2.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utrans_unregisterID(const UChar* id, int32_t idLength);
 
 /**
@@ -327,7 +327,7 @@
  * @see UnicodeSet
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_setFilter(UTransliterator* trans,
                  const UChar* filterPattern,
                  int32_t filterPatternLen,
@@ -340,7 +340,7 @@
  * @return the number of system transliterators.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 utrans_countAvailableIDs(void);
 
 /**
@@ -352,7 +352,7 @@
  *
  * @stable ICU 2.8
  */
-U_STABLE UEnumeration * U_EXPORT2
+U_CAPI UEnumeration * U_EXPORT2
 utrans_openIDs(UErrorCode *pErrorCode);
 
 /********************************************************************
@@ -382,7 +382,7 @@
  * @param status a pointer to the UErrorCode
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_trans(const UTransliterator* trans,
              UReplaceable* rep,
              const UReplaceableCallbacks* repFunc,
@@ -433,7 +433,7 @@
  * @param status a pointer to the UErrorCode
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_transIncremental(const UTransliterator* trans,
                         UReplaceable* rep,
                         const UReplaceableCallbacks* repFunc,
@@ -470,7 +470,7 @@
  * @param status a pointer to the UErrorCode
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_transUChars(const UTransliterator* trans,
                    UChar* text,
                    int32_t* textLength,
@@ -505,7 +505,7 @@
  * @see utrans_transIncremental
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2 
+U_CAPI void U_EXPORT2 
 utrans_transIncrementalUChars(const UTransliterator* trans,
                               UChar* text,
                               int32_t* textLength,
@@ -518,7 +518,7 @@
  * transliterator.
  *
  * @param trans     The transliterator
- * @param escapeUnprintable if TRUE then convert unprintable characters to their
+ * @param escapeUnprintable if true then convert unprintable characters to their
  *                  hex escape representations, \\uxxxx or \\Uxxxxxxxx.
  *                  Unprintable characters are those other than
  *                  U+000A, U+0020..U+007E.
@@ -530,7 +530,7 @@
  *                  in which case an error is returned).
  * @stable ICU 53
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utrans_toRules(     const UTransliterator* trans,
                     UBool escapeUnprintable,
                     UChar* result, int32_t resultLength,
@@ -540,9 +540,9 @@
  * Returns the set of all characters that may be modified in the input text by
  * this UTransliterator, optionally ignoring the transliterator's current filter.
  * @param trans     The transliterator.
- * @param ignoreFilter If FALSE, the returned set incorporates the
+ * @param ignoreFilter If false, the returned set incorporates the
  *                  UTransliterator's current filter; if the filter is changed,
- *                  the return value of this function will change. If TRUE, the
+ *                  the return value of this function will change. If true, the
  *                  returned set ignores the effect of the UTransliterator's
  *                  current filter.
  * @param fillIn    Pointer to a USet object to receive the modifiable characters
@@ -555,7 +555,7 @@
  *                  error, NULL is returned.
  * @stable ICU 53
  */
-U_STABLE USet* U_EXPORT2
+U_CAPI USet* U_EXPORT2
 utrans_getSourceSet(const UTransliterator* trans,
                     UBool ignoreFilter,
                     USet* fillIn,
diff --git a/libicu/cts_headers/unicode/utypes.h b/libicu/cts_headers/unicode/utypes.h
index 8d8f547..7c4ea7a 100644
--- a/libicu/cts_headers/unicode/utypes.h
+++ b/libicu/cts_headers/unicode/utypes.h
@@ -479,13 +479,23 @@
     U_COLLATOR_VERSION_MISMATCH = 28,   /**< Collator version is not compatible with the base version */
     U_USELESS_COLLATOR_ERROR  = 29,     /**< Collator is options only and no base is specified */
     U_NO_WRITE_PERMISSION     = 30,     /**< Attempt to modify read-only or constant data. */
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * The input is impractically long for an operation.
+     * It is rejected because it may lead to problems such as excessive
+     * processing time, stack depth, or heap memory requirements.
+     *
+     * @draft ICU 68
+     */
+    U_INPUT_TOO_LONG_ERROR = 31,
+#endif  // U_HIDE_DRAFT_API
 
 #ifndef U_HIDE_DEPRECATED_API
     /**
      * One more than the highest standard error code.
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
-    U_STANDARD_ERROR_LIMIT,
+    U_STANDARD_ERROR_LIMIT = 32,
 #endif  // U_HIDE_DEPRECATED_API
 
     /*
@@ -715,7 +725,7 @@
  * in the UErrorCode enum above.
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 u_errorName(UErrorCode code);
 
 
diff --git a/libicu/cts_headers/unicode/uvernum.h b/libicu/cts_headers/unicode/uvernum.h
index c66776d..a46481a 100644
--- a/libicu/cts_headers/unicode/uvernum.h
+++ b/libicu/cts_headers/unicode/uvernum.h
@@ -60,13 +60,13 @@
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.4
  */
-#define U_ICU_VERSION_MAJOR_NUM 67
+#define U_ICU_VERSION_MAJOR_NUM 68
 
 /** The current ICU minor version as an integer.
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.6
  */
-#define U_ICU_VERSION_MINOR_NUM 1
+#define U_ICU_VERSION_MINOR_NUM 2
 
 /** The current ICU patchlevel version as an integer.
  *  This value will change in the subsequent releases of ICU
@@ -86,7 +86,7 @@
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.6
  */
-#define U_ICU_VERSION_SUFFIX _67
+#define U_ICU_VERSION_SUFFIX _68
 
 /**
  * \def U_DEF2_ICU_ENTRY_POINT_RENAME
@@ -139,7 +139,7 @@
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.4
  */
-#define U_ICU_VERSION "67.1"
+#define U_ICU_VERSION "68.2"
 
 /**
  * The current ICU library major version number as a string, for library name suffixes.
@@ -148,17 +148,17 @@
  * Until ICU 4.8, this was the combination of the single-digit major and minor ICU version numbers
  * into one string without dots ("48").
  * Since ICU 49, it is the double-digit major ICU version number.
- * See http://userguide.icu-project.org/design#TOC-Version-Numbers-in-ICU
+ * See https://unicode-org.github.io/icu/userguide/design#version-numbers-in-icu
  *
  * @stable ICU 2.6
  */
-#define U_ICU_VERSION_SHORT "67"
+#define U_ICU_VERSION_SHORT "68"
 
 #ifndef U_HIDE_INTERNAL_API
 /** Data version in ICU4C.
  * @internal ICU 4.4 Internal Use Only
  **/
-#define U_ICU_DATA_VERSION "67.1"
+#define U_ICU_DATA_VERSION "68.2"
 #endif  /* U_HIDE_INTERNAL_API */
 
 /*===========================================================================
diff --git a/libicu/cts_headers/unicode/uversion.h b/libicu/cts_headers/unicode/uversion.h
index 5700f62..113568d 100644
--- a/libicu/cts_headers/unicode/uversion.h
+++ b/libicu/cts_headers/unicode/uversion.h
@@ -141,7 +141,7 @@
  *                      values of up to 255 each.
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_versionFromString(UVersionInfo versionArray, const char *versionString);
 
 /**
@@ -155,7 +155,7 @@
  *                      fields with values of up to 255 each.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_versionFromUString(UVersionInfo versionArray, const UChar *versionString);
 
 
@@ -171,7 +171,7 @@
  *                      The buffer size must be at least U_MAX_VERSION_STRING_LENGTH.
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_versionToString(const UVersionInfo versionArray, char *versionString);
 
 /**
@@ -182,6 +182,6 @@
  * @param versionArray the version # information, the result will be filled in
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_getVersion(UVersionInfo versionArray);
 #endif
diff --git a/libicu/cts_headers/unicode/vtzone.h b/libicu/cts_headers/unicode/vtzone.h
index 2743b6c..34b371b 100644
--- a/libicu/cts_headers/unicode/vtzone.h
+++ b/libicu/cts_headers/unicode/vtzone.h
@@ -119,7 +119,7 @@
      * created from VTIMEZONE data, the initial value is set by the TZURL property value
      * in the data.  Otherwise, the initial value is not set.
      * @param url Receives the RFC2445 TZURL property value.
-     * @return TRUE if TZURL attribute is available and value is set.
+     * @return true if TZURL attribute is available and value is set.
      * @stable ICU 3.8
      */
     UBool getTZURL(UnicodeString& url) const;
@@ -136,7 +136,7 @@
      * was created from VTIMEZONE data, the initial value is set by the LAST-MODIFIED property
      * value in the data.  Otherwise, the initial value is not set.
      * @param lastModified Receives the last modified date.
-     * @return TRUE if lastModified attribute is available and value is set.
+     * @return true if lastModified attribute is available and value is set.
      * @stable ICU 3.8
      */
     UBool getLastModified(UDate& lastModified) const;
@@ -322,7 +322,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the first transition after the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      * @stable ICU 3.8
      */
     virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
@@ -332,7 +332,7 @@
      * @param base      The base time.
      * @param inclusive Whether the base time is inclusive or not.
      * @param result    Receives the most recent transition before the base time.
-     * @return  TRUE if the transition is found.
+     * @return  true if the transition is found.
      * @stable ICU 3.8
      */
     virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
diff --git a/libicu/cts_headers/unifiedcache.h b/libicu/cts_headers/unifiedcache.h
index d6c9945..a31998d 100644
--- a/libicu/cts_headers/unifiedcache.h
+++ b/libicu/cts_headers/unifiedcache.h
@@ -34,13 +34,13 @@
  */
 class U_COMMON_API CacheKeyBase : public UObject {
  public:
-   CacheKeyBase() : fCreationStatus(U_ZERO_ERROR), fIsMaster(FALSE) {}
+   CacheKeyBase() : fCreationStatus(U_ZERO_ERROR), fIsPrimary(false) {}
 
    /**
     * Copy constructor. Needed to support cloning.
     */
    CacheKeyBase(const CacheKeyBase &other) 
-           : UObject(other), fCreationStatus(other.fCreationStatus), fIsMaster(FALSE) { }
+           : UObject(other), fCreationStatus(other.fCreationStatus), fIsPrimary(false) { }
    virtual ~CacheKeyBase();
 
    /**
@@ -88,7 +88,7 @@
    }
  private:
    mutable UErrorCode fCreationStatus;
-   mutable UBool fIsMaster;
+   mutable UBool fIsPrimary;
    friend class UnifiedCache;
 };
 
@@ -147,10 +147,10 @@
    virtual UBool operator == (const CacheKeyBase &other) const {
        // reflexive
        if (this == &other) {
-           return TRUE;
+           return true;
        }
        if (!CacheKey<T>::operator == (other)) {
-           return FALSE;
+           return false;
        }
        // We know this and other are of same class because operator== on
        // CacheKey returned true.
@@ -359,7 +359,7 @@
    
    /**
     * Flushes the contents of the cache. If cache values hold references to other
-    * cache values then _flush should be called in a loop until it returns FALSE.
+    * cache values then _flush should be called in a loop until it returns false.
     * 
     * On entry, gCacheMutex must be held.
     * On exit, those values with are evictable are flushed.
@@ -370,7 +370,7 @@
     *                     hard (external) references are not deleted, but are detached from
     *                     the cache, so that a subsequent removeRefs can delete them.
     *                     _flush is not thread safe when all is true.
-    *   @return TRUE if any value in cache was flushed or FALSE otherwise.
+    *   @return true if any value in cache was flushed or false otherwise.
     */
    UBool _flush(UBool all) const;
    
@@ -395,11 +395,11 @@
      * Attempts to fetch value and status for key from cache.
      * On entry, gCacheMutex must not be held value must be NULL and status must
      * be U_ZERO_ERROR.
-     * On exit, either returns FALSE (In this
-     * case caller should try to create the object) or returns TRUE with value
+     * On exit, either returns false (In this
+     * case caller should try to create the object) or returns true with value
      * pointing to the fetched value and status set to fetched status. When
-     * FALSE is returned status may be set to failure if an in progress hash
-     * entry could not be made but value will remain unchanged. When TRUE is
+     * false is returned status may be set to failure if an in progress hash
+     * entry could not be made but value will remain unchanged. When true is
      * returned, caller must call removeRef() on value.
      */
     UBool _poll(
@@ -463,17 +463,17 @@
    void _runEvictionSlice() const;
  
    /**
-    * Register a master cache entry. A master key is the first key to create
+    * Register a primary cache entry. A primary key is the first key to create
     * a given  SharedObject value. Subsequent keys whose create function
-    * produce referneces to an already existing SharedObject are not masters -
+    * produce referneces to an already existing SharedObject are not primary -
     * they can be evicted and subsequently recreated.
     * 
     * On entry, gCacheMutex must be held.
-    * On exit, items in use count incremented, entry is marked as a master
+    * On exit, items in use count incremented, entry is marked as a primary
     * entry, and value registered with cache so that subsequent calls to
     * addRef() and removeRef() on it correctly interact with the cache.
     */
-   void _registerMaster(const CacheKeyBase *theKey, const SharedObject *value) const;
+   void _registerPrimary(const CacheKeyBase *theKey, const SharedObject *value) const;
         
    /**
     * Store a value and creation error status in given hash entry.
diff --git a/libicu/cts_headers/uniquecharstr.h b/libicu/cts_headers/uniquecharstr.h
new file mode 100644
index 0000000..10cc924
--- /dev/null
+++ b/libicu/cts_headers/uniquecharstr.h
@@ -0,0 +1,98 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+// uniquecharstr.h
+// created: 2020sep01 Frank Yung-Fong Tang
+
+#ifndef __UNIQUECHARSTR_H__
+#define __UNIQUECHARSTR_H__
+
+#include "charstr.h"
+#include "uassert.h"
+#include "uhash.h"
+
+U_NAMESPACE_BEGIN
+
+/**
+ * Stores NUL-terminated strings with duplicate elimination.
+ * Checks for unique UTF-16 string pointers and converts to invariant characters.
+ *
+ * Intended to be stack-allocated. Add strings, get a unique number for each,
+ * freeze the object, get a char * pointer for each string,
+ * call orphanCharStrings() to capture the string storage, and let this object go out of scope.
+ */
+class UniqueCharStrings {
+public:
+    UniqueCharStrings(UErrorCode &errorCode) : strings(nullptr) {
+        // Note: We hash on string contents but store stable char16_t * pointers.
+        // If the strings are stored in resource bundles which should be built with
+        // duplicate elimination, then we should be able to hash on just the pointer values.
+        uhash_init(&map, uhash_hashUChars, uhash_compareUChars, uhash_compareLong, &errorCode);
+        if (U_FAILURE(errorCode)) { return; }
+        strings = new CharString();
+        if (strings == nullptr) {
+            errorCode = U_MEMORY_ALLOCATION_ERROR;
+        }
+    }
+    ~UniqueCharStrings() {
+        uhash_close(&map);
+        delete strings;
+    }
+
+    /** Returns/orphans the CharString that contains all strings. */
+    CharString *orphanCharStrings() {
+        CharString *result = strings;
+        strings = nullptr;
+        return result;
+    }
+
+    /**
+     * Adds a string and returns a unique number for it.
+     * The string's buffer contents must not change, nor move around in memory,
+     * while this UniqueCharStrings is in use.
+     * The string contents must be NUL-terminated exactly at s.length().
+     *
+     * Best used with read-only-alias UnicodeString objects that point to
+     * stable storage, such as strings returned by resource bundle functions.
+     */
+    int32_t add(const UnicodeString &s, UErrorCode &errorCode) {
+        if (U_FAILURE(errorCode)) { return 0; }
+        if (isFrozen) {
+            errorCode = U_NO_WRITE_PERMISSION;
+            return 0;
+        }
+        // The string points into the resource bundle.
+        const char16_t *p = s.getBuffer();
+        int32_t oldIndex = uhash_geti(&map, p);
+        if (oldIndex != 0) {  // found duplicate
+            return oldIndex;
+        }
+        // Explicit NUL terminator for the previous string.
+        // The strings object is also terminated with one implicit NUL.
+        strings->append(0, errorCode);
+        int32_t newIndex = strings->length();
+        strings->appendInvariantChars(s, errorCode);
+        uhash_puti(&map, const_cast<char16_t *>(p), newIndex, &errorCode);
+        return newIndex;
+    }
+
+    void freeze() { isFrozen = true; }
+
+    /**
+     * Returns a string pointer for its unique number, if this object is frozen.
+     * Otherwise nullptr.
+     */
+    const char *get(int32_t i) const {
+        U_ASSERT(isFrozen);
+        return isFrozen && i > 0 ? strings->data() + i : nullptr;
+    }
+
+private:
+    UHashtable map;
+    CharString *strings;
+    bool isFrozen = false;
+};
+
+U_NAMESPACE_END
+
+#endif  // __UNIQUECHARSTR_H__
diff --git a/libicu/cts_headers/unisetspan.h b/libicu/cts_headers/unisetspan.h
index f1e78ff..9a1307a 100644
--- a/libicu/cts_headers/unisetspan.h
+++ b/libicu/cts_headers/unisetspan.h
@@ -65,8 +65,8 @@
 
     /*
      * Do the strings need to be checked in span() etc.?
-     * @return TRUE if strings need to be checked (call span() here),
-     *         FALSE if not (use a BMPSet for best performance).
+     * @return true if strings need to be checked (call span() here),
+     *         false if not (use a BMPSet for best performance).
      */
     inline UBool needsStringSpanUTF16();
     inline UBool needsStringSpanUTF8();
diff --git a/libicu/cts_headers/units_complexconverter.h b/libicu/cts_headers/units_complexconverter.h
new file mode 100644
index 0000000..83c5b94
--- /dev/null
+++ b/libicu/cts_headers/units_complexconverter.h
@@ -0,0 +1,93 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+#ifndef __UNITS_COMPLEXCONVERTER_H__
+#define __UNITS_COMPLEXCONVERTER_H__
+
+#include "cmemory.h"
+#include "measunit_impl.h"
+#include "number_roundingutils.h"
+#include "unicode/errorcode.h"
+#include "unicode/measure.h"
+#include "units_converter.h"
+#include "units_data.h"
+
+U_NAMESPACE_BEGIN
+
+// Export explicit template instantiations of MaybeStackArray, MemoryPool and
+// MaybeStackVector. This is required when building DLLs for Windows. (See
+// datefmt.h, collationiterator.h, erarules.h and others for similar examples.)
+//
+// Note: These need to be outside of the units namespace, or Clang will generate
+// a compile error.
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API MaybeStackArray<units::UnitConverter*, 8>;
+template class U_I18N_API MemoryPool<units::UnitConverter, 8>;
+template class U_I18N_API MaybeStackVector<units::UnitConverter, 8>;
+template class U_I18N_API MaybeStackArray<MeasureUnitImpl*, 8>;
+template class U_I18N_API MemoryPool<MeasureUnitImpl, 8>;
+template class U_I18N_API MaybeStackVector<MeasureUnitImpl, 8>;
+template class U_I18N_API MaybeStackArray<MeasureUnit*, 8>;
+template class U_I18N_API MemoryPool<MeasureUnit, 8>;
+template class U_I18N_API MaybeStackVector<MeasureUnit, 8>;
+#endif
+
+namespace units {
+
+/**
+ *  Converts from single or compound unit to single, compound or mixed units.
+ * For example, from `meter` to `foot+inch`.
+ *
+ *  DESIGN:
+ *    This class uses `UnitConverter` in order to perform the single converter (i.e. converters from a
+ *    single unit to another single unit). Therefore, `ComplexUnitsConverter` class contains multiple
+ *    instances of the `UnitConverter` to perform the conversion.
+ */
+class U_I18N_API ComplexUnitsConverter : public UMemory {
+  public:
+    /**
+     * Constructor of `ComplexUnitsConverter`.
+     * NOTE:
+     *   - inputUnit and outputUnits must be under the same category
+     *      - e.g. meter to feet and inches --> all of them are length units.
+     *
+     * @param inputUnit represents the source unit. (should be single or compound unit).
+     * @param outputUnits represents the output unit. could be any type. (single, compound or mixed).
+     * @param status
+     */
+    ComplexUnitsConverter(const MeasureUnitImpl &inputUnit, const MeasureUnitImpl &outputUnits,
+                          const ConversionRates &ratesInfo, UErrorCode &status);
+
+    // Returns true if the specified `quantity` of the `inputUnit`, expressed in terms of the biggest
+    // unit in the MeasureUnit `outputUnit`, is greater than or equal to `limit`.
+    //    For example, if the input unit is `meter` and the target unit is `foot+inch`. Therefore, this
+    //    function will convert the `quantity` from `meter` to `foot`, then, it will compare the value in
+    //    `foot` with the `limit`.
+    UBool greaterThanOrEqual(double quantity, double limit) const;
+
+    // Returns outputMeasures which is an array with the corresponding values.
+    //    - E.g. converting meters to feet and inches.
+    //                  1 meter --> 3 feet, 3.3701 inches
+    //         NOTE:
+    //           the smallest element is the only element that could have fractional values. And all
+    //           other elements are floored to the nearest integer
+    MaybeStackVector<Measure>
+    convert(double quantity, icu::number::impl::RoundingImpl *rounder, UErrorCode &status) const;
+
+  private:
+    MaybeStackVector<UnitConverter> unitConverters_;
+    // Individual units of mixed units, sorted big to small
+    MaybeStackVector<MeasureUnitImpl> units_;
+    // Individual units of mixed units, sorted in desired output order
+    MaybeStackVector<MeasureUnit> outputUnits_;
+};
+
+} // namespace units
+U_NAMESPACE_END
+
+#endif //__UNITS_COMPLEXCONVERTER_H__
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/libicu/cts_headers/units_converter.h b/libicu/cts_headers/units_converter.h
new file mode 100644
index 0000000..7650131
--- /dev/null
+++ b/libicu/cts_headers/units_converter.h
@@ -0,0 +1,173 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+#ifndef __UNITS_CONVERTER_H__
+#define __UNITS_CONVERTER_H__
+
+#include "cmemory.h"
+#include "measunit_impl.h"
+#include "unicode/errorcode.h"
+#include "unicode/stringpiece.h"
+#include "unicode/uobject.h"
+#include "units_converter.h"
+#include "units_data.h"
+
+U_NAMESPACE_BEGIN
+namespace units {
+
+/* Internal Structure */
+
+enum Constants {
+    CONSTANT_FT2M,    // ft2m stands for foot to meter.
+    CONSTANT_PI,      // PI
+    CONSTANT_GRAVITY, // Gravity
+    CONSTANT_G,
+    CONSTANT_GAL_IMP2M3, // Gallon imp to m3
+    CONSTANT_LB2KG,      // Pound to Kilogram
+
+    // Must be the last element.
+    CONSTANTS_COUNT
+};
+
+// These values are a hard-coded subset of unitConstants in the units
+// resources file. A unit test checks that all constants in the resource
+// file are at least recognised by the code. Derived constants' values or
+// hard-coded derivations are not checked.
+static const double constantsValues[CONSTANTS_COUNT] = {
+    0.3048,                    // CONSTANT_FT2M
+    411557987.0 / 131002976.0, // CONSTANT_PI
+    9.80665,                   // CONSTANT_GRAVITY
+    6.67408E-11,               // CONSTANT_G
+    0.00454609,                // CONSTANT_GAL_IMP2M3
+    0.45359237,                // CONSTANT_LB2KG
+};
+
+typedef enum Signum {
+    NEGATIVE = -1,
+    POSITIVE = 1,
+} Signum;
+
+/* Represents a conversion factor */
+struct U_I18N_API Factor {
+    double factorNum = 1;
+    double factorDen = 1;
+    double offset = 0;
+    bool reciprocal = false;
+    int32_t constants[CONSTANTS_COUNT] = {};
+
+    void multiplyBy(const Factor &rhs);
+    void divideBy(const Factor &rhs);
+
+    // Apply the power to the factor.
+    void power(int32_t power);
+
+    // Flip the `Factor`, for example, factor= 2/3, flippedFactor = 3/2
+    void flip();
+
+    // Apply SI prefix to the `Factor`
+    void applySiPrefix(UMeasureSIPrefix siPrefix);
+    void substituteConstants();
+};
+
+/*
+ * Adds a single factor element to the `Factor`. e.g "ft3m", "2.333" or "cup2m3". But not "cup2m3^3".
+ */
+void U_I18N_API addSingleFactorConstant(StringPiece baseStr, int32_t power, Signum sigNum,
+                                        Factor &factor, UErrorCode &status);
+
+/**
+ * Represents the conversion rate between `source` and `target`.
+ */
+struct U_I18N_API ConversionRate : public UMemory {
+    const MeasureUnitImpl source;
+    const MeasureUnitImpl target;
+    double factorNum = 1;
+    double factorDen = 1;
+    double sourceOffset = 0;
+    double targetOffset = 0;
+    bool reciprocal = false;
+
+    ConversionRate(MeasureUnitImpl &&source, MeasureUnitImpl &&target)
+        : source(std::move(source)), target(std::move(target)) {}
+};
+
+enum Convertibility {
+    RECIPROCAL,
+    CONVERTIBLE,
+    UNCONVERTIBLE,
+};
+
+MeasureUnitImpl U_I18N_API extractCompoundBaseUnit(const MeasureUnitImpl &source,
+                                                   const ConversionRates &conversionRates,
+                                                   UErrorCode &status);
+
+/**
+ * Check if the convertibility between `source` and `target`.
+ * For example:
+ *    `meter` and `foot` are `CONVERTIBLE`.
+ *    `meter-per-second` and `second-per-meter` are `RECIPROCAL`.
+ *    `meter` and `pound` are `UNCONVERTIBLE`.
+ *
+ * NOTE:
+ *    Only works with SINGLE and COMPOUND units. If one of the units is a
+ *    MIXED unit, an error will occur. For more information, see UMeasureUnitComplexity.
+ */
+Convertibility U_I18N_API extractConvertibility(const MeasureUnitImpl &source,
+                                                const MeasureUnitImpl &target,
+                                                const ConversionRates &conversionRates,
+                                                UErrorCode &status);
+
+/**
+ * Converts from a source `MeasureUnit` to a target `MeasureUnit`.
+ *
+ * NOTE:
+ *    Only works with SINGLE and COMPOUND units. If one of the units is a
+ *    MIXED unit, an error will occur. For more information, see UMeasureUnitComplexity.
+ */
+class U_I18N_API UnitConverter : public UMemory {
+  public:
+    /**
+     * Constructor of `UnitConverter`.
+     * NOTE:
+     *   - source and target must be under the same category
+     *      - e.g. meter to mile --> both of them are length units.
+     *
+     * @param source represents the source unit.
+     * @param target represents the target unit.
+     * @param ratesInfo Contains all the needed conversion rates.
+     * @param status
+     */
+    UnitConverter(const MeasureUnitImpl &source, const MeasureUnitImpl &target,
+                  const ConversionRates &ratesInfo, UErrorCode &status);
+
+    /**
+     * Convert a measurement expressed in the source unit to a measurement
+     * expressed in the target unit.
+     *
+     * @param inputValue the value to be converted.
+     * @return the converted value.
+     */
+    double convert(double inputValue) const;
+
+    /**
+     * The inverse of convert(): convert a measurement expressed in the target
+     * unit to a measurement expressed in the source unit.
+     *
+     * @param inputValue the value to be converted.
+     * @return the converted value.
+     */
+    double convertInverse(double inputValue) const;
+
+  private:
+    ConversionRate conversionRate_;
+};
+
+} // namespace units
+U_NAMESPACE_END
+
+#endif //__UNITS_CONVERTER_H__
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/libicu/cts_headers/units_data.h b/libicu/cts_headers/units_data.h
new file mode 100644
index 0000000..b6fe8e8
--- /dev/null
+++ b/libicu/cts_headers/units_data.h
@@ -0,0 +1,229 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+#ifndef __UNITS_DATA_H__
+#define __UNITS_DATA_H__
+
+#include <limits>
+
+#include "charstr.h"
+#include "cmemory.h"
+#include "unicode/stringpiece.h"
+#include "unicode/uobject.h"
+
+U_NAMESPACE_BEGIN
+namespace units {
+
+/**
+ * Looks up the unit category of a base unit identifier.
+ *
+ * Only supports base units, other units must be resolved to base units before
+ * passing to this function.
+ *
+ * Categories are found in `unitQuantities` in the `units` resource (see
+ * `units.txt`).
+ *
+ * TODO(hugovdm): if we give units_data.cpp access to the functionality of
+ * `extractCompoundBaseUnit` which is currently in units_converter.cpp, we could
+ * support all units for which there is a category. Does it make sense to move
+ * that function to units_data.cpp?
+ */
+CharString U_I18N_API getUnitCategory(const char *baseUnitIdentifier, UErrorCode &status);
+
+/**
+ * Encapsulates "convertUnits" information from units resources, specifying how
+ * to convert from one unit to another.
+ *
+ * Information in this class is still in the form of strings: symbolic constants
+ * need to be interpreted. Rationale: symbols can cancel out for higher
+ * precision conversion - going from feet to inches should cancel out the
+ * `ft_to_m` constant.
+ */
+class U_I18N_API ConversionRateInfo : public UMemory {
+  public:
+    ConversionRateInfo() {}
+    ConversionRateInfo(StringPiece sourceUnit, StringPiece baseUnit, StringPiece factor,
+                       StringPiece offset, UErrorCode &status)
+        : sourceUnit(), baseUnit(), factor(), offset() {
+        this->sourceUnit.append(sourceUnit, status);
+        this->baseUnit.append(baseUnit, status);
+        this->factor.append(factor, status);
+        this->offset.append(offset, status);
+    }
+    CharString sourceUnit;
+    CharString baseUnit;
+    CharString factor;
+    CharString offset;
+};
+
+} // namespace units
+
+// Export explicit template instantiations of MaybeStackArray, MemoryPool and
+// MaybeStackVector. This is required when building DLLs for Windows. (See
+// datefmt.h, collationiterator.h, erarules.h and others for similar examples.)
+//
+// Note: These need to be outside of the units namespace, or Clang will generate
+// a compile error.
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API MaybeStackArray<units::ConversionRateInfo*, 8>;
+template class U_I18N_API MemoryPool<units::ConversionRateInfo, 8>;
+template class U_I18N_API MaybeStackVector<units::ConversionRateInfo, 8>;
+#endif
+
+namespace units {
+
+/**
+ * Returns ConversionRateInfo for all supported conversions.
+ *
+ * @param result Receives the set of conversion rates.
+ * @param status Receives status.
+ */
+void U_I18N_API getAllConversionRates(MaybeStackVector<ConversionRateInfo> &result, UErrorCode &status);
+
+/**
+ * Contains all the supported conversion rates.
+ */
+class U_I18N_API ConversionRates {
+  public:
+    /**
+     * Constructor
+     *
+     * @param status Receives status.
+     */
+    ConversionRates(UErrorCode &status) { getAllConversionRates(conversionInfo_, status); }
+
+    /**
+     * Returns a pointer to the conversion rate info that match the `source`.
+     *
+     * @param source Contains the source.
+     * @param status Receives status.
+     */
+    const ConversionRateInfo *extractConversionInfo(StringPiece source, UErrorCode &status) const;
+
+  private:
+    MaybeStackVector<ConversionRateInfo> conversionInfo_;
+};
+
+// Encapsulates unitPreferenceData information from units resources, specifying
+// a sequence of output unit preferences.
+struct U_I18N_API UnitPreference : public UMemory {
+    // Set geq to 1.0 by default
+    UnitPreference() : geq(1.0) {}
+    CharString unit;
+    double geq;
+    UnicodeString skeleton;
+};
+
+/**
+ * Metadata about the preferences in UnitPreferences::unitPrefs_.
+ *
+ * This class owns all of its data.
+ *
+ * UnitPreferenceMetadata lives in the anonymous namespace, because it should
+ * only be useful to internal code and unit testing code.
+ */
+class U_I18N_API UnitPreferenceMetadata : public UMemory {
+  public:
+    UnitPreferenceMetadata() {}
+    // Constructor, makes copies of the parameters passed to it.
+    UnitPreferenceMetadata(StringPiece category, StringPiece usage, StringPiece region,
+                           int32_t prefsOffset, int32_t prefsCount, UErrorCode &status);
+
+    // Unit category (e.g. "length", "mass", "electric-capacitance").
+    CharString category;
+    // Usage (e.g. "road", "vehicle-fuel", "blood-glucose"). Every category
+    // should have an entry for "default" usage. TODO(hugovdm): add a test for
+    // this.
+    CharString usage;
+    // Region code (e.g. "US", "CZ", "001"). Every usage should have an entry
+    // for the "001" region ("world"). TODO(hugovdm): add a test for this.
+    CharString region;
+    // Offset into the UnitPreferences::unitPrefs_ list where the relevant
+    // preferences are found.
+    int32_t prefsOffset;
+    // The number of preferences that form this set.
+    int32_t prefsCount;
+
+    int32_t compareTo(const UnitPreferenceMetadata &other) const;
+    int32_t compareTo(const UnitPreferenceMetadata &other, bool *foundCategory, bool *foundUsage,
+                      bool *foundRegion) const;
+};
+
+} // namespace units
+
+// Export explicit template instantiations of MaybeStackArray, MemoryPool and
+// MaybeStackVector. This is required when building DLLs for Windows. (See
+// datefmt.h, collationiterator.h, erarules.h and others for similar examples.)
+//
+// Note: These need to be outside of the units namespace, or Clang will generate
+// a compile error.
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API MaybeStackArray<units::UnitPreferenceMetadata*, 8>;
+template class U_I18N_API MemoryPool<units::UnitPreferenceMetadata, 8>;
+template class U_I18N_API MaybeStackVector<units::UnitPreferenceMetadata, 8>;
+template class U_I18N_API MaybeStackArray<units::UnitPreference*, 8>;
+template class U_I18N_API MemoryPool<units::UnitPreference, 8>;
+template class U_I18N_API MaybeStackVector<units::UnitPreference, 8>;
+#endif
+
+namespace units {
+
+/**
+ * Unit Preferences information for various locales and usages.
+ */
+class U_I18N_API UnitPreferences {
+  public:
+    /**
+     * Constructor, loads all the preference data.
+     *
+     * @param status Receives status.
+     */
+    UnitPreferences(UErrorCode &status);
+
+    /**
+     * Returns the set of unit preferences in the particular category that best
+     * matches the specified usage and region.
+     *
+     * If region can't be found, falls back to global (001). If usage can't be
+     * found, falls back to "default".
+     *
+     * @param category The category within which to look up usage and region.
+     * (TODO(hugovdm): improve docs on how to find the category, once the lookup
+     * function is added.)
+     * @param usage The usage parameter. (TODO(hugovdm): improve this
+     * documentation. Add reference to some list of usages we support.) If the
+     * given usage is not found, the method automatically falls back to
+     * "default".
+     * @param region The region whose preferences are desired. If there are no
+     * specific preferences for the requested region, the method automatically
+     * falls back to region "001" ("world").
+     * @param outPreferences A pointer into an array of preferences: essentially
+     * an array slice in combination with preferenceCount.
+     * @param preferenceCount The number of unit preferences that belong to the
+     * result set.
+     * @param status Receives status.
+     *
+     * TODO(hugovdm): maybe replace `UnitPreference **&outPreferences` with a slice class?
+     */
+    void getPreferencesFor(StringPiece category, StringPiece usage, StringPiece region,
+                           const UnitPreference *const *&outPreferences, int32_t &preferenceCount,
+                           UErrorCode &status) const;
+
+  protected:
+    // Metadata about the sets of preferences, this is the index for looking up
+    // preferences in the unitPrefs_ list.
+    MaybeStackVector<UnitPreferenceMetadata> metadata_;
+    // All the preferences as a flat list: which usage and region preferences
+    // are associated with is stored in `metadata_`.
+    MaybeStackVector<UnitPreference> unitPrefs_;
+};
+
+} // namespace units
+U_NAMESPACE_END
+
+#endif //__UNITS_DATA_H__
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/libicu/cts_headers/units_router.h b/libicu/cts_headers/units_router.h
new file mode 100644
index 0000000..bd7a93d
--- /dev/null
+++ b/libicu/cts_headers/units_router.h
@@ -0,0 +1,162 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+#ifndef __UNITS_ROUTER_H__
+#define __UNITS_ROUTER_H__
+
+#include <limits>
+
+#include "cmemory.h"
+#include "measunit_impl.h"
+#include "unicode/measunit.h"
+#include "unicode/stringpiece.h"
+#include "unicode/uobject.h"
+#include "units_complexconverter.h"
+#include "units_data.h"
+
+U_NAMESPACE_BEGIN
+
+// Forward declarations
+class Measure;
+namespace number {
+class Precision;
+}
+
+namespace units {
+
+struct RouteResult : UMemory {
+    // A list of measures: a single measure for single units, multiple measures
+    // for mixed units.
+    //
+    // TODO(icu-units/icu#21): figure out the right mixed unit API.
+    MaybeStackVector<Measure> measures;
+
+    // The output unit for this RouteResult. This may be a MIXED unit - for
+    // example: "yard-and-foot-and-inch", for which `measures` will have three
+    // elements.
+    MeasureUnitImpl outputUnit;
+
+    RouteResult(MaybeStackVector<Measure> measures, MeasureUnitImpl outputUnit)
+        : measures(std::move(measures)), outputUnit(std::move(outputUnit)) {}
+};
+
+/**
+ * Contains the complex unit converter and the limit which representing the smallest value that the
+ * converter should accept. For example, if the converter is converting to `foot+inch` and the limit
+ * equals 3.0, thus means the converter should not convert to a value less than `3.0 feet`.
+ *
+ * NOTE:
+ *    if the limit doest not has a value `i.e. (std::numeric_limits<double>::lowest())`, this mean there
+ *    is no limit for the converter.
+ */
+struct ConverterPreference : UMemory {
+    ComplexUnitsConverter converter;
+    double limit;
+    UnicodeString precision;
+
+    // The output unit for this ConverterPreference. This may be a MIXED unit -
+    // for example: "yard-and-foot-and-inch".
+    MeasureUnitImpl targetUnit;
+
+    // In case there is no limit, the limit will be -inf.
+    ConverterPreference(const MeasureUnitImpl &source, const MeasureUnitImpl &complexTarget,
+                        UnicodeString precision, const ConversionRates &ratesInfo, UErrorCode &status)
+        : ConverterPreference(source, complexTarget, std::numeric_limits<double>::lowest(), precision,
+                              ratesInfo, status) {}
+
+    ConverterPreference(const MeasureUnitImpl &source, const MeasureUnitImpl &complexTarget,
+                        double limit, UnicodeString precision, const ConversionRates &ratesInfo,
+                        UErrorCode &status)
+        : converter(source, complexTarget, ratesInfo, status), limit(limit),
+          precision(std::move(precision)), targetUnit(complexTarget.copy(status)) {}
+};
+
+} // namespace units
+
+// Export explicit template instantiations of MaybeStackArray, MemoryPool and
+// MaybeStackVector. This is required when building DLLs for Windows. (See
+// datefmt.h, collationiterator.h, erarules.h and others for similar examples.)
+//
+// Note: These need to be outside of the units namespace, or Clang will generate
+// a compile error.
+#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
+template class U_I18N_API MaybeStackArray<units::ConverterPreference*, 8>;
+template class U_I18N_API MemoryPool<units::ConverterPreference, 8>;
+template class U_I18N_API MaybeStackVector<units::ConverterPreference, 8>;
+#endif
+
+namespace units {
+
+/**
+ * `UnitsRouter` responsible for converting from a single unit (such as `meter` or `meter-per-second`) to
+ * one of the complex units based on the limits.
+ * For example:
+ *    if the input is `meter` and the output as following
+ *    {`foot+inch`, limit: 3.0}
+ *    {`inch`     , limit: no value (-inf)}
+ *    Thus means if the input in `meter` is greater than or equal to `3.0 feet`, the output will be in
+ *    `foot+inch`, otherwise, the output will be in `inch`.
+ *
+ * NOTE:
+ *    the output units and the their limits MUST BE in order, for example, if the output units, from the
+ *    previous example, are the following:
+ *        {`inch`     , limit: no value (-inf)}
+ *        {`foot+inch`, limit: 3.0}
+ *     IN THIS CASE THE OUTPUT WILL BE ALWAYS IN `inch`.
+ *
+ * NOTE:
+ *    the output units  and their limits will be extracted from the units preferences database by knowing
+ *    the followings:
+ *        - input unit
+ *        - locale
+ *        - usage
+ *
+ * DESIGN:
+ *    `UnitRouter` uses internally `ComplexUnitConverter` in order to convert the input units to the
+ *    desired complex units and to check the limit too.
+ */
+class U_I18N_API UnitsRouter {
+  public:
+    UnitsRouter(MeasureUnit inputUnit, StringPiece locale, StringPiece usage, UErrorCode &status);
+
+    /**
+     * Performs locale and usage sensitive unit conversion.
+     * @param quantity The quantity to convert, expressed in terms of inputUnit.
+     * @param rounder If not null, this RoundingImpl will be used to do rounding
+     *     on the converted value. If the rounder lacks an fPrecision, the
+     *     rounder will be modified to use the preferred precision for the usage
+     *     and locale preference, alternatively with the default precision.
+     * @param status Receives status.
+     */
+    RouteResult route(double quantity, icu::number::impl::RoundingImpl *rounder, UErrorCode &status) const;
+
+    /**
+     * Returns the list of possible output units, i.e. the full set of
+     * preferences, for the localized, usage-specific unit preferences.
+     *
+     * The returned pointer should be valid for the lifetime of the
+     * UnitsRouter instance.
+     */
+    const MaybeStackVector<MeasureUnit> *getOutputUnits() const;
+
+  private:
+    // List of possible output units. TODO: converterPreferences_ now also has
+    // this data available. Maybe drop outputUnits_ and have getOutputUnits
+    // construct a the list from data in converterPreferences_ instead?
+    MaybeStackVector<MeasureUnit> outputUnits_;
+
+    MaybeStackVector<ConverterPreference> converterPreferences_;
+
+    static number::Precision parseSkeletonToPrecision(icu::UnicodeString precisionSkeleton,
+                                                      UErrorCode &status);
+};
+
+} // namespace units
+U_NAMESPACE_END
+
+#endif //__UNITS_ROUTER_H__
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/libicu/cts_headers/unormimp.h b/libicu/cts_headers/unormimp.h
index 88c7975..d2604ad 100644
--- a/libicu/cts_headers/unormimp.h
+++ b/libicu/cts_headers/unormimp.h
@@ -418,7 +418,7 @@
  * The same bit is used for NFC and NFKC; (c) differs for them.
  * As usual, we build the "not skippable" flags so that unassigned
  * code points get a 0 bit.
- * This bit is only valid after (a)..(e) test FALSE; test NFD_NO before (f) as well.
+ * This bit is only valid after (a)..(e) test false; test NFD_NO before (f) as well.
  * Test Hangul LV syllables entirely in code.
  *
  *
diff --git a/libicu/cts_headers/uresdata.h b/libicu/cts_headers/uresdata.h
index d1b67ba..7c2152e 100644
--- a/libicu/cts_headers/uresdata.h
+++ b/libicu/cts_headers/uresdata.h
@@ -402,7 +402,7 @@
 /*
  * Read a resource bundle from memory.
  */
-U_INTERNAL void U_EXPORT2
+U_CAPI void U_EXPORT2
 res_read(ResourceData *pResData,
          const UDataInfo *pInfo, const void *inBytes, int32_t length,
          UErrorCode *errorCode);
@@ -422,7 +422,7 @@
 U_CFUNC void
 res_unload(ResourceData *pResData);
 
-U_INTERNAL UResType U_EXPORT2
+U_CAPI UResType U_EXPORT2
 res_getPublicType(Resource res);
 
 ///////////////////////////////////////////////////////////////////////////
@@ -434,31 +434,31 @@
  * and set its length in *pLength.
  * Returns NULL if not found.
  */
-U_INTERNAL const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 res_getStringNoTrace(const ResourceData *pResData, Resource res, int32_t *pLength);
 
-U_INTERNAL const uint8_t * U_EXPORT2
+U_CAPI const uint8_t * U_EXPORT2
 res_getBinaryNoTrace(const ResourceData *pResData, Resource res, int32_t *pLength);
 
-U_INTERNAL const int32_t * U_EXPORT2
+U_CAPI const int32_t * U_EXPORT2
 res_getIntVectorNoTrace(const ResourceData *pResData, Resource res, int32_t *pLength);
 
-U_INTERNAL const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 res_getAlias(const ResourceData *pResData, Resource res, int32_t *pLength);
 
-U_INTERNAL Resource U_EXPORT2
+U_CAPI Resource U_EXPORT2
 res_getResource(const ResourceData *pResData, const char *key);
 
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 res_countArrayItems(const ResourceData *pResData, Resource res);
 
-U_INTERNAL Resource U_EXPORT2
+U_CAPI Resource U_EXPORT2
 res_getArrayItem(const ResourceData *pResData, Resource array, int32_t indexS);
 
-U_INTERNAL Resource U_EXPORT2
+U_CAPI Resource U_EXPORT2
 res_getTableItemByIndex(const ResourceData *pResData, Resource table, int32_t indexS, const char ** key);
 
-U_INTERNAL Resource U_EXPORT2
+U_CAPI Resource U_EXPORT2
 res_getTableItemByKey(const ResourceData *pResData, Resource table, int32_t *indexS, const char* * key);
 
 /**
diff --git a/libicu/cts_headers/uresimp.h b/libicu/cts_headers/uresimp.h
index f453ddc..69d8256 100644
--- a/libicu/cts_headers/uresimp.h
+++ b/libicu/cts_headers/uresimp.h
@@ -157,7 +157,7 @@
 U_CFUNC const char* ures_getPath(const UResourceBundle* resB);
 /**
  * If anything was in the RB cache, dump it to the screen.
- * @return TRUE if there was anything into the cache
+ * @return true if there was anything into the cache
  */
 U_CAPI UBool U_EXPORT2 ures_dumpCacheContents(void);
 #endif
@@ -218,7 +218,7 @@
  * @param isAvailable If non-null, pointer to fillin parameter that indicates whether the 
  * requested locale was available. The locale is defined as 'available' if it physically 
  * exists within the specified tree.
- * @param omitDefault if TRUE, omit keyword and value if default. 'de_DE\@collation=standard' -> 'de_DE'
+ * @param omitDefault if true, omit keyword and value if default. 'de_DE\@collation=standard' -> 'de_DE'
  * @param status error code
  * @return  the actual buffer size needed for the full locale.  If it's greater 
  * than resultCapacity, the returned full name will be truncated and an error code will be returned.
diff --git a/libicu/cts_headers/uspoof_impl.h b/libicu/cts_headers/uspoof_impl.h
index b111d4b..43b23a8 100644
--- a/libicu/cts_headers/uspoof_impl.h
+++ b/libicu/cts_headers/uspoof_impl.h
@@ -222,7 +222,7 @@
     SpoofData(const void *serializedData, int32_t length, UErrorCode &status);
 
     //  Check raw Spoof Data Version compatibility.
-    //  Return TRUE it looks good.
+    //  Return true it looks good.
     UBool validateDataVersion(UErrorCode &status) const;
 
     ~SpoofData();                    // Destructor not normally used.
diff --git a/libicu/cts_headers/usrchimp.h b/libicu/cts_headers/usrchimp.h
index 88b2e21..f118167 100644
--- a/libicu/cts_headers/usrchimp.h
+++ b/libicu/cts_headers/usrchimp.h
@@ -206,7 +206,7 @@
 * the text "\u00e6" 
 * @param strsrch string search data
 * @param status error status if any
-* @return TRUE if an exact match is found, FALSE otherwise
+* @return true if an exact match is found, false otherwise
 */
 U_CFUNC
 UBool usearch_handleNextExact(UStringSearch *strsrch, UErrorCode *status);
@@ -217,7 +217,7 @@
 * of beginning and ending accents if it overlaps that region.
 * @param strsrch string search data
 * @param status error status if any
-* @return TRUE if a canonical match is found, FALSE otherwise
+* @return true if a canonical match is found, false otherwise
 */
 U_CFUNC
 UBool usearch_handleNextCanonical(UStringSearch *strsrch, UErrorCode *status);
@@ -227,7 +227,7 @@
 * Comments follows from handleNextExact
 * @param strsrch string search data
 * @param status error status if any
-* @return True if a exact math is found, FALSE otherwise.
+* @return True if a exact math is found, false otherwise.
 */
 U_CFUNC
 UBool usearch_handlePreviousExact(UStringSearch *strsrch, UErrorCode *status);
@@ -238,7 +238,7 @@
 * of beginning and ending accents if it overlaps that region.
 * @param strsrch string search data
 * @param status error status if any
-* @return TRUE if a canonical match is found, FALSE otherwise
+* @return true if a canonical match is found, false otherwise
 */
 U_CFUNC
 UBool usearch_handlePreviousCanonical(UStringSearch *strsrch, 
diff --git a/libicu/cts_headers/ustr_imp.h b/libicu/cts_headers/ustr_imp.h
index 0717092..3c4b9cc 100644
--- a/libicu/cts_headers/ustr_imp.h
+++ b/libicu/cts_headers/ustr_imp.h
@@ -29,7 +29,7 @@
 /**
  * Compare two strings in code point order or code unit order.
  * Works in strcmp style (both lengths -1),
- * strncmp style (lengths equal and >=0, flag TRUE),
+ * strncmp style (lengths equal and >=0, flag true),
  * and memcmp/UnicodeString style (at least one length >=0).
  */
 U_CFUNC int32_t U_EXPORT2
@@ -37,13 +37,13 @@
                 const UChar *s2, int32_t length2,
                 UBool strncmpStyle, UBool codePointOrder);
 
-U_INTERNAL int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ustr_hashUCharsN(const UChar *str, int32_t length);
 
-U_INTERNAL int32_t U_EXPORT2 
+U_CAPI int32_t U_EXPORT2 
 ustr_hashCharsN(const char *str, int32_t length);
 
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ustr_hashICharsN(const char *str, int32_t length);
 
 /**
@@ -53,7 +53,7 @@
  * @return If UChar is a lowercase ASCII character, returns the uppercase version.
  *         Otherwise, returns the input character.
  */
-U_INTERNAL UChar U_EXPORT2
+U_CAPI UChar U_EXPORT2
 u_asciiToUpper(UChar c);
 
 // TODO: Add u_asciiToLower if/when there is a need for it.
@@ -70,28 +70,28 @@
  * @param pErrorCode ICU error code.
  * @return length
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_terminateUChars(UChar *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode);
 
 /**
  * NUL-terminate a char * string if possible.
  * Same as u_terminateUChars() but for a different string type.
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_terminateChars(char *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode);
 
 /**
  * NUL-terminate a UChar32 * string if possible.
  * Same as u_terminateUChars() but for a different string type.
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_terminateUChar32s(UChar32 *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode);
 
 /**
  * NUL-terminate a wchar_t * string if possible.
  * Same as u_terminateUChars() but for a different string type.
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_terminateWChars(wchar_t *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode);
 
 /**
@@ -133,7 +133,7 @@
      * @param t The i-th byte following the lead byte.
      * @param i The index (1..3) of byte t in the byte sequence. 0<i<length
      * @param length The length (2..4) of the byte sequence according to the lead byte.
-     * @return TRUE if t is a valid trail byte in this context.
+     * @return true if t is a valid trail byte in this context.
      */
     static inline UBool isValidTrail(int32_t prev, uint8_t t, int32_t i, int32_t length) {
         // The first trail byte after a 3- or 4-byte lead byte
diff --git a/libicu/cts_headers/utf16collationiterator.h b/libicu/cts_headers/utf16collationiterator.h
index fd3a05e..6305d81 100644
--- a/libicu/cts_headers/utf16collationiterator.h
+++ b/libicu/cts_headers/utf16collationiterator.h
@@ -125,7 +125,7 @@
     /**
      * Extend the FCD text segment forward or normalize around pos.
      * To be called when checkDir > 0 && pos != limit.
-     * @return TRUE if success, checkDir == 0 and pos != limit
+     * @return true if success, checkDir == 0 and pos != limit
      */
     UBool nextSegment(UErrorCode &errorCode);
 
@@ -139,7 +139,7 @@
     /**
      * Extend the FCD text segment backward or normalize around pos.
      * To be called when checkDir < 0 && pos != start.
-     * @return TRUE if success, checkDir == 0 and pos != start
+     * @return true if success, checkDir == 0 and pos != start
      */
     UBool previousSegment(UErrorCode &errorCode);
 
diff --git a/libicu/cts_headers/utf8collationiterator.h b/libicu/cts_headers/utf8collationiterator.h
index 9a3ec45..9059e72 100644
--- a/libicu/cts_headers/utf8collationiterator.h
+++ b/libicu/cts_headers/utf8collationiterator.h
@@ -54,7 +54,7 @@
      * together with a bogus code point. The caller will ignore that code point.
      *
      * Special values may be returned for surrogate code points, which are also illegal in UTF-8,
-     * but the caller will treat them like U+FFFD because forbidSurrogateCodePoints() returns TRUE.
+     * but the caller will treat them like U+FFFD because forbidSurrogateCodePoints() returns true.
      *
      * Valid lead surrogates are returned from inside a normalized text segment,
      * where handleGetTrailSurrogate() will return the matching trail surrogate.
@@ -117,7 +117,7 @@
 
     /**
      * Extends the FCD text segment forward or normalizes around pos.
-     * @return TRUE if success
+     * @return true if success
      */
     UBool nextSegment(UErrorCode &errorCode);
 
@@ -128,7 +128,7 @@
 
     /**
      * Extends the FCD text segment backward or normalizes around pos.
-     * @return TRUE if success
+     * @return true if success
      */
     UBool previousSegment(UErrorCode &errorCode);
 
diff --git a/libicu/cts_headers/util.h b/libicu/cts_headers/util.h
index f3f71dc..9c3b76d 100644
--- a/libicu/cts_headers/util.h
+++ b/libicu/cts_headers/util.h
@@ -64,8 +64,8 @@
     /**
      * Escape unprintable characters using \uxxxx notation for U+0000 to
      * U+FFFF and \Uxxxxxxxx for U+10000 and above.  If the character is
-     * printable ASCII, then do nothing and return FALSE.  Otherwise,
-     * append the escaped notation and return TRUE.
+     * printable ASCII, then do nothing and return false.  Otherwise,
+     * append the escaped notation and return true.
      */
     static UBool escapeUnprintable(UnicodeString& result, UChar32 c);
 
@@ -95,7 +95,7 @@
      * after pos, or str.length(), if there is none.
      */
     static int32_t skipWhitespace(const UnicodeString& str, int32_t& pos,
-                                  UBool advance = FALSE);
+                                  UBool advance = false);
 
     /**
      * Skip over Pattern_White_Space in a Replaceable.
diff --git a/libicu/cts_headers/utrie.h b/libicu/cts_headers/utrie.h
index 532ba77..2fd2c46 100644
--- a/libicu/cts_headers/utrie.h
+++ b/libicu/cts_headers/utrie.h
@@ -460,13 +460,13 @@
  * of code points with the same value as retrieved from the trie and
  * transformed by the UTrieEnumValue function.
  *
- * The callback function can stop the enumeration by returning FALSE.
+ * The callback function can stop the enumeration by returning false.
  *
  * @param context an opaque pointer, as passed into utrie_enum()
  * @param start the first code point in a contiguous range with value
  * @param limit one past the last code point in a contiguous range with value
  * @param value the value that is set for all code points in [start..limit[
- * @return FALSE to stop the enumeration
+ * @return false to stop the enumeration
  */
 typedef UBool U_CALLCONV
 UTrieEnumRange(const void *context, UChar32 start, UChar32 limit, uint32_t value);
@@ -667,7 +667,7 @@
  * @param trie the build-time trie
  * @param c the code point
  * @param value the value
- * @return FALSE if a failure occurred (illegal argument or data array overrun)
+ * @return false if a failure occurred (illegal argument or data array overrun)
  */
 U_CAPI UBool U_EXPORT2
 utrie_set32(UNewTrie *trie, UChar32 c, uint32_t value);
@@ -677,7 +677,7 @@
  *
  * @param trie the build-time trie
  * @param c the code point
- * @param pInBlockZero if not NULL, then *pInBlockZero is set to TRUE
+ * @param pInBlockZero if not NULL, then *pInBlockZero is set to true
  *                     iff the value is retrieved from block 0;
  *                     block 0 is the all-initial-value initial block
  * @return the value
@@ -688,14 +688,14 @@
 /**
  * Set a value in a range of code points [start..limit[.
  * All code points c with start<=c<limit will get the value if
- * overwrite is TRUE or if the old value is 0.
+ * overwrite is true or if the old value is 0.
  *
  * @param trie the build-time trie
  * @param start the first code point to get the value
  * @param limit one past the last code point to get the value
  * @param value the value
  * @param overwrite flag for whether old non-initial values are to be overwritten
- * @return FALSE if a failure occurred (illegal argument or data array overrun)
+ * @return false if a failure occurred (illegal argument or data array overrun)
  */
 U_CAPI UBool U_EXPORT2
 utrie_setRange32(UNewTrie *trie, UChar32 start, UChar32 limit, uint32_t value, UBool overwrite);
diff --git a/libicu/cts_headers/utrie2.h b/libicu/cts_headers/utrie2.h
index 671f44e..d1e1e15 100644
--- a/libicu/cts_headers/utrie2.h
+++ b/libicu/cts_headers/utrie2.h
@@ -161,13 +161,13 @@
  * of code points with the same value as retrieved from the trie and
  * transformed by the UTrie2EnumValue function.
  *
- * The callback function can stop the enumeration by returning FALSE.
+ * The callback function can stop the enumeration by returning false.
  *
  * @param context an opaque pointer, as passed into utrie2_enum()
  * @param start the first code point in a contiguous range with value
  * @param end the last code point in a contiguous range with value (inclusive)
  * @param value the value that is set for all code points in [start..end]
- * @return FALSE to stop the enumeration
+ * @return false to stop the enumeration
  */
 typedef UBool U_CALLCONV
 UTrie2EnumRange(const void *context, UChar32 start, UChar32 end, uint32_t value);
@@ -256,7 +256,7 @@
 /**
  * Set a value in a range of code points [start..end].
  * All code points c with start<=c<=end will get the value if
- * overwrite is TRUE or if the old value is the initial value.
+ * overwrite is true or if the old value is the initial value.
  *
  * @param trie the unfrozen trie
  * @param start the first code point to get the value
@@ -298,7 +298,7 @@
  * Test if the trie is frozen. (See utrie2_freeze().)
  *
  * @param trie the trie
- * @return TRUE if the trie is frozen, that is, immutable, ready for serialization
+ * @return true if the trie is frozen, that is, immutable, ready for serialization
  *         and for use with fast macros
  */
 U_CAPI UBool U_EXPORT2
@@ -670,7 +670,7 @@
     /* private: used by builder and unserialization functions */
     void *memory;           /* serialized bytes; NULL if not frozen yet */
     int32_t length;         /* number of serialized bytes at memory; 0 if not frozen yet */
-    UBool isMemoryOwned;    /* TRUE if the trie owns the memory */
+    UBool isMemoryOwned;    /* true if the trie owns the memory */
     UBool padding1;
     int16_t padding2;
     UNewTrie2 *newTrie;     /* builder object; NULL when frozen */
@@ -796,7 +796,7 @@
  * Do not call directly.
  * @internal
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utrie2_internalU8NextIndex(const UTrie2 *trie, UChar32 c,
                            const uint8_t *src, const uint8_t *limit);
 
@@ -805,7 +805,7 @@
  * Do not call directly.
  * @internal
  */
-U_INTERNAL int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utrie2_internalU8PrevIndex(const UTrie2 *trie, UChar32 c,
                            const uint8_t *start, const uint8_t *src);
 
diff --git a/libicu/cts_headers/uvector.h b/libicu/cts_headers/uvector.h
index 98318d1..a2bef92 100644
--- a/libicu/cts_headers/uvector.h
+++ b/libicu/cts_headers/uvector.h
@@ -64,7 +64,7 @@
  * uses a comparison function, or "comparer."  If the comparer is not
  * set, or is set to zero, then all such methods will act as if the
  * vector contains no element.  That is, indexOf() will always return
- * -1, contains() will always return FALSE, etc.
+ * -1, contains() will always return false, etc.
  *
  * <p><b>To do</b>
  *
diff --git a/libicu/cts_headers/uvectr32.h b/libicu/cts_headers/uvectr32.h
index ba47daa..0d81dfb 100644
--- a/libicu/cts_headers/uvectr32.h
+++ b/libicu/cts_headers/uvectr32.h
@@ -214,7 +214,7 @@
 
 inline UBool UVector32::ensureCapacity(int32_t minimumCapacity, UErrorCode &status) {
     if ((minimumCapacity >= 0) && (capacity >= minimumCapacity)) {
-        return TRUE;
+        return true;
     } else {
         return expandCapacity(minimumCapacity, status);
     }
@@ -233,7 +233,7 @@
 }
 
 inline int32_t *UVector32::reserveBlock(int32_t size, UErrorCode &status) {
-    if (ensureCapacity(count+size, status) == FALSE) {
+    if (ensureCapacity(count+size, status) == false) {
         return NULL;
     }
     int32_t  *rp = elements+count;
diff --git a/libicu/cts_headers/uvectr64.h b/libicu/cts_headers/uvectr64.h
index 1cc9a50..15c9b3f 100644
--- a/libicu/cts_headers/uvectr64.h
+++ b/libicu/cts_headers/uvectr64.h
@@ -203,7 +203,7 @@
 
 inline UBool UVector64::ensureCapacity(int32_t minimumCapacity, UErrorCode &status) {
     if ((minimumCapacity >= 0) && (capacity >= minimumCapacity)) {
-        return TRUE;
+        return true;
     } else {
         return expandCapacity(minimumCapacity, status);
     }
@@ -222,7 +222,7 @@
 }
 
 inline int64_t *UVector64::reserveBlock(int32_t size, UErrorCode &status) {
-    if (ensureCapacity(count+size, status) == FALSE) {
+    if (ensureCapacity(count+size, status) == false) {
         return NULL;
     }
     int64_t  *rp = elements+count;
diff --git a/libicu/cts_headers/vzone.h b/libicu/cts_headers/vzone.h
index 17df92e..96f5e85 100644
--- a/libicu/cts_headers/vzone.h
+++ b/libicu/cts_headers/vzone.h
@@ -91,7 +91,7 @@
  * @param zone, the vzone to use
  * @param url Receives the RFC2445 TZURL property value.
  * @param urlLength, length of the url
- * @return TRUE if TZURL attribute is available and value is set.
+ * @return true if TZURL attribute is available and value is set.
  */
 U_CAPI UBool U_EXPORT2
 vzone_getTZURL(VZone* zone, UChar* & url, int32_t & urlLength);
@@ -112,7 +112,7 @@
  * is not set.
  * @param zone, the vzone to use
  * @param lastModified Receives the last modified date.
- * @return TRUE if lastModified attribute is available and value is set.
+ * @return true if lastModified attribute is available and value is set.
  */
 U_CAPI UBool U_EXPORT2
 vzone_getLastModified(VZone* zone, UDate& lastModified);
@@ -283,7 +283,7 @@
  * @return true if the given date is in daylight savings time,
  * false, otherwise.
  */
-U_INTERNAL UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 vzone_inDaylightTime(VZone* zone, UDate date, UErrorCode& status);
 
 /**
@@ -303,7 +303,7 @@
  * @param base      The base time.
  * @param inclusive Whether the base time is inclusive or not.
  * @param result    Receives the first transition after the base time.
- * @return  TRUE if the transition is found.
+ * @return  true if the transition is found.
  */
 U_CAPI UBool U_EXPORT2
 vzone_getNextTransition(VZone* zone, UDate base, UBool inclusive, ZTrans* result);
@@ -314,7 +314,7 @@
  * @param base      The base time.
  * @param inclusive Whether the base time is inclusive or not.
  * @param result    Receives the most recent transition before the base time.
- * @return  TRUE if the transition is found.
+ * @return  true if the transition is found.
  */
 U_CAPI UBool U_EXPORT2
 vzone_getPreviousTransition(VZone* zone, UDate base, UBool inclusive, ZTrans* result);
diff --git a/libicu/cts_headers/wintz.h b/libicu/cts_headers/wintz.h
index cd8565e..ce9c1e9 100644
--- a/libicu/cts_headers/wintz.h
+++ b/libicu/cts_headers/wintz.h
@@ -28,7 +28,7 @@
 typedef struct _TIME_ZONE_INFORMATION TIME_ZONE_INFORMATION;
 U_CDECL_END
 
-U_INTERNAL const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uprv_detectWindowsTimeZone();
 
 #endif /* U_PLATFORM_USES_ONLY_WIN32_API  */
diff --git a/libicu/cts_headers/zonemeta.h b/libicu/cts_headers/zonemeta.h
index 9dbcc87..58724ea 100644
--- a/libicu/cts_headers/zonemeta.h
+++ b/libicu/cts_headers/zonemeta.h
@@ -59,7 +59,7 @@
      * is not associated with a country, return bogus string.
      * @param tzid Zone ID
      * @param country [output] Country code
-     * @param isPrimary [output] TRUE if the zone is the primary zone for the country
+     * @param isPrimary [output] true if the zone is the primary zone for the country
      * @return A reference to the result country
      */
     static UnicodeString& U_EXPORT2 getCanonicalCountry(const UnicodeString &tzid, UnicodeString &country, UBool *isPrimary = NULL);
diff --git a/libicu/ndk_headers/unicode/ubidi.h b/libicu/ndk_headers/unicode/ubidi.h
index 8e22053..106fa62 100644
--- a/libicu/ndk_headers/unicode/ubidi.h
+++ b/libicu/ndk_headers/unicode/ubidi.h
@@ -501,7 +501,7 @@
  * @return An empty <code>UBiDi</code> object.
  * @stable ICU 2.0
  */
-U_STABLE UBiDi * U_EXPORT2
+U_CAPI UBiDi * U_EXPORT2
 ubidi_open(void) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -542,7 +542,7 @@
  * @return An empty <code>UBiDi</code> object with preallocated memory.
  * @stable ICU 2.0
  */
-U_STABLE UBiDi * U_EXPORT2
+U_CAPI UBiDi * U_EXPORT2
 ubidi_openSized(int32_t maxLength, int32_t maxRunCount, UErrorCode *pErrorCode) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -569,7 +569,7 @@
  * @see ubidi_setLine
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_close(UBiDi *pBiDi) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -611,7 +611,7 @@
  * this "inverse Bidi" and that the current implementation provides only an
  * approximation of "inverse Bidi".</p>
  *
- * <p>With <code>isInverse</code> set to <code>TRUE</code>,
+ * <p>With <code>isInverse</code> set to <code>true</code>,
  * this function changes the behavior of some of the subsequent functions
  * in a way that they can be used for the inverse Bidi algorithm.
  * Specifically, runs of text with numeric characters will be treated in a
@@ -624,12 +624,12 @@
  * the runs of the logically ordered output.</p>
  *
  * <p>Calling this function with argument <code>isInverse</code> set to
- * <code>TRUE</code> is equivalent to calling
+ * <code>true</code> is equivalent to calling
  * <code>ubidi_setReorderingMode</code> with argument
  * <code>reorderingMode</code>
  * set to <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>.<br>
  * Calling this function with argument <code>isInverse</code> set to
- * <code>FALSE</code> is equivalent to calling
+ * <code>false</code> is equivalent to calling
  * <code>ubidi_setReorderingMode</code> with argument
  * <code>reorderingMode</code>
  * set to <code>#UBIDI_REORDER_DEFAULT</code>.
@@ -643,7 +643,7 @@
  * @see ubidi_setReorderingMode
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setInverse(UBiDi *pBiDi, UBool isInverse) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -651,12 +651,12 @@
 /**
  * Is this Bidi object set to perform the inverse Bidi algorithm?
  * <p>Note: calling this function after setting the reordering mode with
- * <code>ubidi_setReorderingMode</code> will return <code>TRUE</code> if the
+ * <code>ubidi_setReorderingMode</code> will return <code>true</code> if the
  * reordering mode was set to <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code>,
- * <code>FALSE</code> for all other values.</p>
+ * <code>false</code> for all other values.</p>
  *
  * @param pBiDi is a <code>UBiDi</code> object.
- * @return TRUE if the Bidi object is set to perform the inverse Bidi algorithm
+ * @return true if the Bidi object is set to perform the inverse Bidi algorithm
  * by handling numbers as L.
  *
  * @see ubidi_setInverse
@@ -664,7 +664,7 @@
  * @stable ICU 2.0
  */
 
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ubidi_isInverse(UBiDi *pBiDi);
 
 #if !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -689,7 +689,7 @@
  * @see ubidi_setPara
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_orderParagraphsLTR(UBiDi *pBiDi, UBool orderParagraphsLTR) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -701,13 +701,13 @@
  * successive paragraphs progress from left to right?
  *
  * @param pBiDi is a <code>UBiDi</code> object.
- * @return TRUE if the Bidi object is set to allocate level 0 to block
+ * @return true if the Bidi object is set to allocate level 0 to block
  *         separators.
  *
  * @see ubidi_orderParagraphsLTR
  * @stable ICU 3.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 ubidi_isOrderParagraphsLTR(UBiDi *pBiDi) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -741,7 +741,7 @@
       * @stable ICU 3.6 */
     UBIDI_REORDER_RUNS_ONLY,
     /** Visual to Logical algorithm which handles numbers like L
-      * (same algorithm as selected by <code>ubidi_setInverse(TRUE)</code>.
+      * (same algorithm as selected by <code>ubidi_setInverse(true)</code>.
       * @see ubidi_setInverse
       * @stable ICU 3.6 */
     UBIDI_REORDER_INVERSE_NUMBERS_AS_L,
@@ -862,7 +862,7 @@
  * reordered sequence (the option <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code> can
  * be used with function <code>ubidi_writeReordered</code> to this end. This
  * mode is equivalent to calling <code>ubidi_setInverse()</code> with
- * argument <code>isInverse</code> set to <code>TRUE</code>.</li>
+ * argument <code>isInverse</code> set to <code>true</code>.</li>
  *
  * <li>When the reordering mode is set to
  * <code>#UBIDI_REORDER_INVERSE_LIKE_DIRECT</code>, the "direct" Logical to Visual
@@ -915,7 +915,7 @@
  * @see ubidi_writeReordered
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setReorderingMode(UBiDi *pBiDi, UBiDiReorderingMode reorderingMode) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -930,7 +930,7 @@
  * @see ubidi_setReorderingMode
  * @stable ICU 3.6
  */
-U_STABLE UBiDiReorderingMode U_EXPORT2
+U_CAPI UBiDiReorderingMode U_EXPORT2
 ubidi_getReorderingMode(UBiDi *pBiDi) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -970,7 +970,7 @@
      *
      * <p>If this option is set in conjunction with reordering mode
      * <code>#UBIDI_REORDER_INVERSE_NUMBERS_AS_L</code> or with calling
-     * <code>ubidi_setInverse(TRUE)</code>, it implies
+     * <code>ubidi_setInverse(true)</code>, it implies
      * option <code>#UBIDI_INSERT_LRM_FOR_NUMERIC</code>
      * in calls to function <code>ubidi_writeReordered()</code>.</p>
      *
@@ -1051,7 +1051,7 @@
      *
      * <p>When the <code>UBIDI_OPTION_STREAMING</code> option is used,
      * it is recommended to call <code>ubidi_orderParagraphsLTR()</code> with
-     * argument <code>orderParagraphsLTR</code> set to <code>TRUE</code> before
+     * argument <code>orderParagraphsLTR</code> set to <code>true</code> before
      * calling <code>ubidi_setPara</code> so that later paragraphs may be
      * concatenated to previous paragraphs on the right.</p>
      *
@@ -1079,7 +1079,7 @@
  * @see ubidi_getReorderingOptions
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setReorderingOptions(UBiDi *pBiDi, uint32_t reorderingOptions) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1094,7 +1094,7 @@
  * @see ubidi_setReorderingOptions
  * @stable ICU 3.6
  */
-U_STABLE uint32_t U_EXPORT2
+U_CAPI uint32_t U_EXPORT2
 ubidi_getReorderingOptions(UBiDi *pBiDi) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1185,7 +1185,7 @@
  * @see ubidi_setPara
  * @stable ICU 4.8
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setContext(UBiDi *pBiDi,
                  const UChar *prologue, int32_t proLength,
                  const UChar *epilogue, int32_t epiLength,
@@ -1277,7 +1277,7 @@
  * @param pErrorCode must be a valid pointer to an error code value.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setPara(UBiDi *pBiDi, const UChar *text, int32_t length,
               UBiDiLevel paraLevel, UBiDiLevel *embeddingLevels,
               UErrorCode *pErrorCode) __INTRODUCED_IN(31);
@@ -1332,7 +1332,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setLine(const UBiDi *pParaBiDi,
               int32_t start, int32_t limit,
               UBiDi *pLineBiDi,
@@ -1357,7 +1357,7 @@
  * @see UBiDiDirection
  * @stable ICU 2.0
  */
-U_STABLE UBiDiDirection U_EXPORT2
+U_CAPI UBiDiDirection U_EXPORT2
 ubidi_getDirection(const UBiDi *pBiDi) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1391,7 +1391,7 @@
  * @see UBiDiDirection
  * @stable ICU 4.6
  */
-U_STABLE UBiDiDirection U_EXPORT2
+U_CAPI UBiDiDirection U_EXPORT2
 ubidi_getBaseDirection(const UChar *text,  int32_t length ) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1409,7 +1409,7 @@
  * @see ubidi_setLine
  * @stable ICU 2.0
  */
-U_STABLE const UChar * U_EXPORT2
+U_CAPI const UChar * U_EXPORT2
 ubidi_getText(const UBiDi *pBiDi) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1424,7 +1424,7 @@
  * @return The length of the text that the UBiDi object was created for.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getLength(const UBiDi *pBiDi) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1446,7 +1446,7 @@
  * @see ubidi_getParagraphByIndex
  * @stable ICU 2.0
  */
-U_STABLE UBiDiLevel U_EXPORT2
+U_CAPI UBiDiLevel U_EXPORT2
 ubidi_getParaLevel(const UBiDi *pBiDi) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1461,7 +1461,7 @@
  * @return The number of paragraphs.
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_countParagraphs(UBiDi *pBiDi) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1502,7 +1502,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getParagraph(const UBiDi *pBiDi, int32_t charIndex, int32_t *pParaStart,
                    int32_t *pParaLimit, UBiDiLevel *pParaLevel,
                    UErrorCode *pErrorCode) __INTRODUCED_IN(31);
@@ -1538,7 +1538,7 @@
  *
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getParagraphByIndex(const UBiDi *pBiDi, int32_t paraIndex,
                           int32_t *pParaStart, int32_t *pParaLimit,
                           UBiDiLevel *pParaLevel, UErrorCode *pErrorCode) __INTRODUCED_IN(31);
@@ -1562,7 +1562,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE UBiDiLevel U_EXPORT2
+U_CAPI UBiDiLevel U_EXPORT2
 ubidi_getLevelAt(const UBiDi *pBiDi, int32_t charIndex) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1587,7 +1587,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE const UBiDiLevel * U_EXPORT2
+U_CAPI const UBiDiLevel * U_EXPORT2
 ubidi_getLevels(UBiDi *pBiDi, UErrorCode *pErrorCode) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1618,7 +1618,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getLogicalRun(const UBiDi *pBiDi, int32_t logicalPosition,
                     int32_t *pLogicalLimit, UBiDiLevel *pLevel) __INTRODUCED_IN(31);
 
@@ -1641,7 +1641,7 @@
  * @return The number of runs.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_countRuns(UBiDi *pBiDi, UErrorCode *pErrorCode) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1704,7 +1704,7 @@
  * to avoid these issues.
  * @stable ICU 2.0
  */
-U_STABLE UBiDiDirection U_EXPORT2
+U_CAPI UBiDiDirection U_EXPORT2
 ubidi_getVisualRun(UBiDi *pBiDi, int32_t runIndex,
                    int32_t *pLogicalStart, int32_t *pLength) __INTRODUCED_IN(31);
 
@@ -1749,7 +1749,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getVisualIndex(UBiDi *pBiDi, int32_t logicalIndex, UErrorCode *pErrorCode) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1788,7 +1788,7 @@
  * @see ubidi_getResultLength
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getLogicalIndex(UBiDi *pBiDi, int32_t visualIndex, UErrorCode *pErrorCode) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1835,7 +1835,7 @@
  * @see ubidi_getResultLength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getLogicalMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1875,7 +1875,7 @@
  * @see ubidi_getResultLength
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getVisualMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1902,7 +1902,7 @@
  *        The index map will result in <code>indexMap[logicalIndex]==visualIndex</code>.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_reorderLogical(const UBiDiLevel *levels, int32_t length, int32_t *indexMap) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1929,7 +1929,7 @@
  *        The index map will result in <code>indexMap[visualIndex]==logicalIndex</code>.
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_reorderVisual(const UBiDiLevel *levels, int32_t length, int32_t *indexMap) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1968,7 +1968,7 @@
  * @see UBIDI_MAP_NOWHERE
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_invertMap(const int32_t *srcMap, int32_t *destMap, int32_t length) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2077,7 +2077,7 @@
  * @see UBIDI_OPTION_STREAMING
  * @stable ICU 3.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getProcessedLength(const UBiDi *pBiDi) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2111,7 +2111,7 @@
  * @see UBIDI_OPTION_REMOVE_CONTROLS
  * @stable ICU 3.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_getResultLength(const UBiDi *pBiDi) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2173,7 +2173,7 @@
  * @see UBiDiClassCallback
  * @stable ICU 3.6
  */
-U_STABLE UCharDirection U_EXPORT2
+U_CAPI UCharDirection U_EXPORT2
 ubidi_getCustomizedClass(UBiDi *pBiDi, UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2207,7 +2207,7 @@
  * @see ubidi_getClassCallback
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_setClassCallback(UBiDi *pBiDi, UBiDiClassCallback *newFn,
                        const void *newContext, UBiDiClassCallback **oldFn,
                        const void **oldContext, UErrorCode *pErrorCode) __INTRODUCED_IN(31);
@@ -2228,7 +2228,7 @@
  * @see ubidi_setClassCallback
  * @stable ICU 3.6
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubidi_getClassCallback(UBiDi *pBiDi, UBiDiClassCallback **fn, const void **context) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2300,7 +2300,7 @@
  * @see ubidi_getProcessedLength
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_writeReordered(UBiDi *pBiDi,
                      UChar *dest, int32_t destSize,
                      uint16_t options,
@@ -2356,7 +2356,7 @@
  * @return The length of the output string.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubidi_writeReverse(const UChar *src, int32_t srcLength,
                    UChar *dest, int32_t destSize,
                    uint16_t options,
diff --git a/libicu/ndk_headers/unicode/ubrk.h b/libicu/ndk_headers/unicode/ubrk.h
index 92cd9f0..ce3d1f1 100644
--- a/libicu/ndk_headers/unicode/ubrk.h
+++ b/libicu/ndk_headers/unicode/ubrk.h
@@ -242,7 +242,7 @@
  * @see ubrk_openRules
  * @stable ICU 2.0
  */
-U_STABLE UBreakIterator* U_EXPORT2
+U_CAPI UBreakIterator* U_EXPORT2
 ubrk_open(UBreakIteratorType type,
       const char *locale,
       const UChar *text,
@@ -275,7 +275,7 @@
 * @param bi The break iterator to close.
  * @stable ICU 2.0
 */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubrk_close(UBreakIterator *bi) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -313,7 +313,7 @@
  * @param status The error code
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubrk_setText(UBreakIterator* bi,
              const UChar*    text,
              int32_t         textLength,
@@ -341,7 +341,7 @@
  * @param status The error code
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ubrk_setUText(UBreakIterator* bi,
              UText*          text,
              UErrorCode*     status) __INTRODUCED_IN(31);
@@ -360,7 +360,7 @@
  * \ref ubrk_first, or \ref ubrk_last.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_current(const UBreakIterator *bi) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -376,7 +376,7 @@
  * @see ubrk_previous
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_next(UBreakIterator *bi) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -392,7 +392,7 @@
  * @see ubrk_next
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_previous(UBreakIterator *bi) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -406,7 +406,7 @@
  * @see ubrk_last
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_first(UBreakIterator *bi) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -422,7 +422,7 @@
  * @see ubrk_first
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_last(UBreakIterator *bi) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -438,7 +438,7 @@
  * @see ubrk_following
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_preceding(UBreakIterator *bi,
            int32_t offset) __INTRODUCED_IN(31);
 
@@ -455,7 +455,7 @@
  * @see ubrk_preceding
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_following(UBreakIterator *bi,
            int32_t offset) __INTRODUCED_IN(31);
 
@@ -472,7 +472,7 @@
 * @see ubrk_countAvailable
 * @stable ICU 2.0
 */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 ubrk_getAvailable(int32_t index) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -487,7 +487,7 @@
 * @see ubrk_getAvailable
 * @stable ICU 2.0
 */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 ubrk_countAvailable(void) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -504,7 +504,7 @@
 * @return True if "offset" is a boundary position.
 * @stable ICU 2.0
 */
-U_STABLE  UBool U_EXPORT2
+U_CAPI  UBool U_EXPORT2
 ubrk_isBoundary(UBreakIterator *bi, int32_t offset) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -520,7 +520,7 @@
  * For word break iterators, the possible values are defined in enum UWordBreak.
  * @stable ICU 2.2
  */
-U_STABLE  int32_t U_EXPORT2
+U_CAPI  int32_t U_EXPORT2
 ubrk_getRuleStatus(UBreakIterator *bi) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -544,7 +544,7 @@
  *                  the most recent boundary returned by the break iterator.
  * @stable ICU 3.0
  */
-U_STABLE  int32_t U_EXPORT2
+U_CAPI  int32_t U_EXPORT2
 ubrk_getRuleStatusVec(UBreakIterator *bi, int32_t *fillInVec, int32_t capacity, UErrorCode *status) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
diff --git a/libicu/ndk_headers/unicode/uchar.h b/libicu/ndk_headers/unicode/uchar.h
index f0c609d..e1c89f0 100644
--- a/libicu/ndk_headers/unicode/uchar.h
+++ b/libicu/ndk_headers/unicode/uchar.h
@@ -80,7 +80,7 @@
  * and the ICU User Guide chapter on Properties (http://icu-project.org/userguide/properties.html).
  *
  * Many properties are accessible via generic functions that take a UProperty selector.
- * - u_hasBinaryProperty() returns a binary value (TRUE/FALSE) per property and code point.
+ * - u_hasBinaryProperty() returns a binary value (true/false) per property and code point.
  * - u_getIntPropertyValue() returns an integer value per property and code point.
  *   For each supported enumerated or catalog property, there is
  *   an enum type for all of the property's values, and
@@ -2588,8 +2588,8 @@
  * @param c Code point to test.
  * @param which UProperty selector constant, identifies which binary property to check.
  *        Must be UCHAR_BINARY_START<=which<UCHAR_BINARY_LIMIT.
- * @return TRUE or FALSE according to the binary Unicode property value for c.
- *         Also FALSE if 'which' is out of bounds or if the Unicode version
+ * @return true or false according to the binary Unicode property value for c.
+ *         Also false if 'which' is out of bounds or if the Unicode version
  *         does not have data for the property at all, or not for this code point.
  *
  * @see UProperty
@@ -2598,7 +2598,7 @@
  * @see u_getUnicodeVersion
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_hasBinaryProperty(UChar32 c, UProperty which) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2619,7 +2619,7 @@
  * @see u_hasBinaryProperty
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isUAlphabetic(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2638,7 +2638,7 @@
  * @see u_hasBinaryProperty
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isULowercase(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2657,7 +2657,7 @@
  * @see u_hasBinaryProperty
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isUUppercase(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2682,7 +2682,7 @@
  * @see u_hasBinaryProperty
  * @stable ICU 2.1
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isUWhiteSpace(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2714,7 +2714,7 @@
  *         for enumerated properties, corresponds to the numeric value of the enumerated
  *         constant of the respective property value enumeration type
  *         (cast to enum type if necessary).
- *         Returns 0 or 1 (for FALSE/TRUE) for binary Unicode properties.
+ *         Returns 0 or 1 (for false/true) for binary Unicode properties.
  *         Returns a bit-mask for mask properties.
  *         Returns 0 if 'which' is out of bounds or if the Unicode version
  *         does not have data for the property at all, or not for this code point.
@@ -2727,7 +2727,7 @@
  * @see u_getUnicodeVersion
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getIntPropertyValue(UChar32 c, UProperty which) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2752,7 +2752,7 @@
  * @see u_getIntPropertyValue
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getIntPropertyMinValue(UProperty which) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2768,7 +2768,7 @@
  *
  * - UCHAR_BIDI_CLASS:    0/18 (U_LEFT_TO_RIGHT/U_BOUNDARY_NEUTRAL)
  * - UCHAR_SCRIPT:        0/45 (USCRIPT_COMMON/USCRIPT_TAGBANWA)
- * - UCHAR_IDEOGRAPHIC:   0/1  (FALSE/TRUE)
+ * - UCHAR_IDEOGRAPHIC:   0/1  (false/true)
  *
  * For undefined UProperty constant values, min/max values will be 0/-1.
  *
@@ -2785,7 +2785,7 @@
  * @see u_getIntPropertyValue
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getIntPropertyMaxValue(UProperty which) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2816,7 +2816,7 @@
  * @see U_NO_NUMERIC_VALUE
  * @stable ICU 2.2
  */
-U_STABLE double U_EXPORT2
+U_CAPI double U_EXPORT2
 u_getNumericValue(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2848,14 +2848,14 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an Ll lowercase letter
+ * @return true if the code point is an Ll lowercase letter
  *
  * @see UCHAR_LOWERCASE
  * @see u_isupper
  * @see u_istitle
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_islower(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2878,7 +2878,7 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an Lu uppercase letter
+ * @return true if the code point is an Lu uppercase letter
  *
  * @see UCHAR_UPPERCASE
  * @see u_islower
@@ -2886,7 +2886,7 @@
  * @see u_tolower
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isupper(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2900,14 +2900,14 @@
  * Same as java.lang.Character.isTitleCase().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an Lt titlecase letter
+ * @return true if the code point is an Lt titlecase letter
  *
  * @see u_isupper
  * @see u_islower
  * @see u_totitle
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_istitle(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2928,11 +2928,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a digit character according to Character.isDigit()
+ * @return true if the code point is a digit character according to Character.isDigit()
  *
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isdigit(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2951,13 +2951,13 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a letter character
+ * @return true if the code point is a letter character
  *
  * @see u_isdigit
  * @see u_isalnum
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isalpha(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -2978,11 +2978,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an alphanumeric character according to Character.isLetterOrDigit()
+ * @return true if the code point is an alphanumeric character according to Character.isLetterOrDigit()
  *
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isalnum(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3005,11 +3005,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a hexadecimal digit
+ * @return true if the code point is a hexadecimal digit
  *
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isxdigit(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3025,11 +3025,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a punctuation character
+ * @return true if the code point is a punctuation character
  *
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_ispunct(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3039,7 +3039,7 @@
 /**
  * Determines whether the specified code point is a "graphic" character
  * (printable, excluding spaces).
- * TRUE for all characters except those with general categories
+ * true for all characters except those with general categories
  * "Cc" (control codes), "Cf" (format controls), "Cs" (surrogates),
  * "Cn" (unassigned), and "Z" (separators).
  *
@@ -3048,11 +3048,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a "graphic" character
+ * @return true if the code point is a "graphic" character
  *
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isgraph(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3064,13 +3064,13 @@
  * a character that visibly separates words on a line.
  * The following are equivalent definitions:
  *
- * TRUE for Unicode White_Space characters except for "vertical space controls"
+ * true for Unicode White_Space characters except for "vertical space controls"
  * where "vertical space controls" are the following characters:
  * U+000A (LF) U+000B (VT) U+000C (FF) U+000D (CR) U+0085 (NEL) U+2028 (LS) U+2029 (PS)
  *
  * same as
  *
- * TRUE for U+0009 (TAB) and characters with general category "Zs" (space separators).
+ * true for U+0009 (TAB) and characters with general category "Zs" (space separators).
  *
  * Note: There are several ICU whitespace functions; please see the uchar.h
  * file documentation for a detailed comparison.
@@ -3080,11 +3080,11 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a "blank"
+ * @return true if the code point is a "blank"
  *
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isblank(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3103,7 +3103,7 @@
  * Same as java.lang.Character.isDefined().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is assigned a character
+ * @return true if the code point is assigned a character
  *
  * @see u_isdigit
  * @see u_isalpha
@@ -3113,7 +3113,7 @@
  * @see u_istitle
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isdefined(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3138,7 +3138,7 @@
  * @see u_isUWhiteSpace
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isspace(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3156,14 +3156,14 @@
  * file documentation for a detailed comparison.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a space character according to Character.isSpaceChar()
+ * @return true if the code point is a space character according to Character.isSpaceChar()
  *
  * @see u_isspace
  * @see u_isWhitespace
  * @see u_isUWhiteSpace
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isJavaSpaceChar(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3200,14 +3200,14 @@
  * file documentation for a detailed comparison.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a whitespace character according to Java/ICU
+ * @return true if the code point is a whitespace character according to Java/ICU
  *
  * @see u_isspace
  * @see u_isJavaSpaceChar
  * @see u_isUWhiteSpace
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isWhitespace(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3229,13 +3229,13 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a control character
+ * @return true if the code point is a control character
  *
  * @see UCHAR_DEFAULT_IGNORABLE_CODE_POINT
  * @see u_isprint
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_iscntrl(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3249,12 +3249,12 @@
  * Same as java.lang.Character.isISOControl().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is an ISO control code
+ * @return true if the code point is an ISO control code
  *
  * @see u_iscntrl
  * @stable ICU 2.6
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isISOControl(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3270,13 +3270,13 @@
  * documentation at the top of this header file.
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a printable character
+ * @return true if the code point is a printable character
  *
  * @see UCHAR_DEFAULT_IGNORABLE_CODE_POINT
  * @see u_iscntrl
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isprint(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3294,13 +3294,13 @@
  * Letter (L), Number (N), Punctuation (P), Symbol (S), or Space Separator (Zs).
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is a base character according to this function
+ * @return true if the code point is a base character according to this function
  *
  * @see u_isalpha
  * @see u_isdigit
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isbase(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3323,7 +3323,7 @@
  * @see UCharDirection
  * @stable ICU 2.0
  */
-U_STABLE UCharDirection U_EXPORT2
+U_CAPI UCharDirection U_EXPORT2
 u_charDirection(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3340,12 +3340,12 @@
  * Same as UCHAR_BIDI_MIRRORED
  *
  * @param c the code point to be tested
- * @return TRUE if the character has the Bidi_Mirrored property
+ * @return true if the character has the Bidi_Mirrored property
  *
  * @see UCHAR_BIDI_MIRRORED
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isMirrored(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3371,7 +3371,7 @@
  * @see u_isMirrored
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_charMirror(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3394,7 +3394,7 @@
  * @see u_charMirror
  * @stable ICU 52
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_getBidiPairedBracket(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3412,7 +3412,7 @@
  * @see UCharCategory
  * @stable ICU 2.0
  */
-U_STABLE int8_t U_EXPORT2
+U_CAPI int8_t U_EXPORT2
 u_charType(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3437,13 +3437,13 @@
  * of code points c (where start<=c<limit)
  * with the same Unicode general category ("character type").
  *
- * The callback function can stop the enumeration by returning FALSE.
+ * The callback function can stop the enumeration by returning false.
  *
  * @param context an opaque pointer, as passed into utrie_enum()
  * @param start the first code point in a contiguous range with value
  * @param limit one past the last code point in a contiguous range with value
  * @param type the general category for all code points in [start..limit[
- * @return FALSE to stop the enumeration
+ * @return false to stop the enumeration
  *
  * @stable ICU 2.1
  * @see UCharCategory
@@ -3473,7 +3473,7 @@
  * @see UCharCategory
  * @see UCharEnumTypeRange
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_enumCharTypes(UCharEnumTypeRange *enumRange, const void *context) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3489,7 +3489,7 @@
  * @return the combining class of the character
  * @stable ICU 2.0
  */
-U_STABLE uint8_t U_EXPORT2
+U_CAPI uint8_t U_EXPORT2
 u_getCombiningClass(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3521,7 +3521,7 @@
  * @see u_getNumericValue
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_charDigitValue(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3562,7 +3562,7 @@
  * @see u_enumCharNames
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_charName(UChar32 code, UCharNameChoice nameChoice,
            char *buffer, int32_t bufferLength,
            UErrorCode *pErrorCode) __INTRODUCED_IN(31);
@@ -3595,7 +3595,7 @@
  * @see u_enumCharNames
  * @stable ICU 1.7
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_charFromName(UCharNameChoice nameChoice,
                const char *name,
                UErrorCode *pErrorCode) __INTRODUCED_IN(31);
@@ -3606,14 +3606,14 @@
  * Type of a callback function for u_enumCharNames() that gets called
  * for each Unicode character with the code point value and
  * the character name.
- * If such a function returns FALSE, then the enumeration is stopped.
+ * If such a function returns false, then the enumeration is stopped.
  *
  * @param context The context pointer that was passed to u_enumCharNames().
  * @param code The Unicode code point for the character with this name.
  * @param nameChoice Selector for which kind of names is enumerated.
  * @param name The character's name, zero-terminated.
  * @param length The length of the name.
- * @return TRUE if the enumeration should continue, FALSE to stop it.
+ * @return true if the enumeration should continue, false to stop it.
  *
  * @see UCharNameChoice
  * @see u_enumCharNames
@@ -3648,7 +3648,7 @@
  * @see u_charFromName
  * @stable ICU 1.7
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_enumCharNames(UChar32 start, UChar32 limit,
                 UEnumCharNamesFn *fn,
                 void *context,
@@ -3690,7 +3690,7 @@
  * @see UPropertyNameChoice
  * @stable ICU 2.4
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 u_getPropertyName(UProperty property,
                   UPropertyNameChoice nameChoice) __INTRODUCED_IN(31);
 
@@ -3717,7 +3717,7 @@
  * @see UProperty
  * @stable ICU 2.4
  */
-U_STABLE UProperty U_EXPORT2
+U_CAPI UProperty U_EXPORT2
 u_getPropertyEnum(const char* alias) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3771,7 +3771,7 @@
  * @see UPropertyNameChoice
  * @stable ICU 2.4
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 u_getPropertyValueName(UProperty property,
                        int32_t value,
                        UPropertyNameChoice nameChoice) __INTRODUCED_IN(31);
@@ -3811,7 +3811,7 @@
  * @see UProperty
  * @stable ICU 2.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_getPropertyValueEnum(UProperty property,
                        const char* alias) __INTRODUCED_IN(31);
 
@@ -3829,14 +3829,14 @@
  * Same as UCHAR_ID_START
  *
  * @param c the code point to be tested
- * @return TRUE if the code point may start an identifier
+ * @return true if the code point may start an identifier
  *
  * @see UCHAR_ID_START
  * @see u_isalpha
  * @see u_isIDPart
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isIDStart(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3857,14 +3857,14 @@
  * u_isIDIgnorable(c).
  *
  * @param c the code point to be tested
- * @return TRUE if the code point may occur in an identifier according to Java
+ * @return true if the code point may occur in an identifier according to Java
  *
  * @see UCHAR_ID_CONTINUE
  * @see u_isIDStart
  * @see u_isIDIgnorable
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isIDPart(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3884,14 +3884,14 @@
  * Note that Unicode just recommends to ignore Cf (format controls).
  *
  * @param c the code point to be tested
- * @return TRUE if the code point is ignorable in identifiers according to Java
+ * @return true if the code point is ignorable in identifiers according to Java
  *
  * @see UCHAR_DEFAULT_IGNORABLE_CODE_POINT
  * @see u_isIDStart
  * @see u_isIDPart
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isIDIgnorable(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3907,14 +3907,14 @@
  * Same as java.lang.Character.isJavaIdentifierStart().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point may start a Java identifier
+ * @return true if the code point may start a Java identifier
  *
  * @see     u_isJavaIDPart
  * @see     u_isalpha
  * @see     u_isIDStart
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isJavaIDStart(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3930,7 +3930,7 @@
  * Same as java.lang.Character.isJavaIdentifierPart().
  *
  * @param c the code point to be tested
- * @return TRUE if the code point may occur in a Java identifier
+ * @return true if the code point may occur in a Java identifier
  *
  * @see     u_isIDIgnorable
  * @see     u_isJavaIDStart
@@ -3939,7 +3939,7 @@
  * @see     u_isIDPart
  * @stable ICU 2.0
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_isJavaIDPart(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3968,7 +3968,7 @@
  *         otherwise the code point itself.
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_tolower(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -3997,7 +3997,7 @@
  *         otherwise the code point itself.
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_toupper(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -4026,7 +4026,7 @@
  *         otherwise the code point itself.
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_totitle(UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -4055,7 +4055,7 @@
  *         otherwise the code point itself.
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_foldCase(UChar32 c, uint32_t options) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -4100,7 +4100,7 @@
  * @see     u_isdigit
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_digit(UChar32 ch, int8_t radix) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -4135,7 +4135,7 @@
  * @see     u_isdigit
  * @stable ICU 2.0
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 u_forDigit(int32_t digit, int8_t radix) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -4156,7 +4156,7 @@
  *
  * @stable ICU 2.1
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_charAge(UChar32 c, UVersionInfo versionArray) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -4174,7 +4174,7 @@
  *                     the Unicode version number
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_getUnicodeVersion(UVersionInfo versionArray) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
diff --git a/libicu/ndk_headers/unicode/udisplaycontext.h b/libicu/ndk_headers/unicode/udisplaycontext.h
index 398481c..6e14217 100644
--- a/libicu/ndk_headers/unicode/udisplaycontext.h
+++ b/libicu/ndk_headers/unicode/udisplaycontext.h
@@ -156,7 +156,8 @@
     UDISPCTX_SUBSTITUTE = (UDISPCTX_TYPE_SUBSTITUTE_HANDLING<<8) + 0,
     /**
      * A possible setting for SUBSTITUTE_HANDLING:
-     * Returns a null value when no data is available.
+     * Returns a null value with error code set to U_ILLEGAL_ARGUMENT_ERROR when no
+     * data is available.
      * @stable ICU 58
      */
     UDISPCTX_NO_SUBSTITUTE = (UDISPCTX_TYPE_SUBSTITUTE_HANDLING<<8) + 1
diff --git a/libicu/ndk_headers/unicode/uenum.h b/libicu/ndk_headers/unicode/uenum.h
index 64a9467..d94b011 100644
--- a/libicu/ndk_headers/unicode/uenum.h
+++ b/libicu/ndk_headers/unicode/uenum.h
@@ -52,7 +52,7 @@
  * @param en UEnumeration structure pointer
  * @stable ICU 2.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uenum_close(UEnumeration* en) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -92,7 +92,7 @@
  * @return number of elements in the iterator
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uenum_count(UEnumeration* en, UErrorCode* status) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -120,7 +120,7 @@
  *         traversed, returns NULL.
  * @stable ICU 2.2
  */
-U_STABLE const UChar* U_EXPORT2
+U_CAPI const UChar* U_EXPORT2
 uenum_unext(UEnumeration* en,
             int32_t* resultLength,
             UErrorCode* status) __INTRODUCED_IN(31);
@@ -157,7 +157,7 @@
  *         traversed, returns NULL.
  * @stable ICU 2.2
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uenum_next(UEnumeration* en,
            int32_t* resultLength,
            UErrorCode* status) __INTRODUCED_IN(31);
@@ -175,7 +175,7 @@
  *               the iterator is out of sync with its service.  
  * @stable ICU 2.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uenum_reset(UEnumeration* en, UErrorCode* status) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -199,7 +199,7 @@
  * @see uenum_close
  * @stable ICU 50
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uenum_openUCharStringsEnumeration(const UChar* const strings[], int32_t count,
                                  UErrorCode* ec) __INTRODUCED_IN(31);
 
@@ -218,7 +218,7 @@
  * @see uenum_close
  * @stable ICU 50
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uenum_openCharStringsEnumeration(const char* const strings[], int32_t count,
                                  UErrorCode* ec) __INTRODUCED_IN(31);
 
diff --git a/libicu/ndk_headers/unicode/uldnames.h b/libicu/ndk_headers/unicode/uldnames.h
index 68d2b8d..efb5e55 100644
--- a/libicu/ndk_headers/unicode/uldnames.h
+++ b/libicu/ndk_headers/unicode/uldnames.h
@@ -70,7 +70,7 @@
  * @param pErrorCode the status code
  * @stable ICU 4.4
  */
-U_STABLE ULocaleDisplayNames * U_EXPORT2
+U_CAPI ULocaleDisplayNames * U_EXPORT2
 uldn_open(const char * locale,
           UDialectHandling dialectHandling,
           UErrorCode *pErrorCode) __INTRODUCED_IN(31);
@@ -84,7 +84,7 @@
  * @param ldn the ULocaleDisplayNames instance to be closed
  * @stable ICU 4.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 uldn_close(ULocaleDisplayNames *ldn) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -119,7 +119,7 @@
  * @return the display locale 
  * @stable ICU 4.4
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 uldn_getLocale(const ULocaleDisplayNames *ldn) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -132,7 +132,7 @@
  * @return the dialect handling enum
  * @stable ICU 4.4
  */
-U_STABLE UDialectHandling U_EXPORT2
+U_CAPI UDialectHandling U_EXPORT2
 uldn_getDialectHandling(const ULocaleDisplayNames *ldn) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -152,7 +152,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_localeDisplayName(const ULocaleDisplayNames *ldn,
                        const char *locale,
                        UChar *result,
@@ -176,7 +176,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_languageDisplayName(const ULocaleDisplayNames *ldn,
                          const char *lang,
                          UChar *result,
@@ -198,7 +198,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_scriptDisplayName(const ULocaleDisplayNames *ldn,
                        const char *script,
                        UChar *result,
@@ -220,7 +220,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_scriptCodeDisplayName(const ULocaleDisplayNames *ldn,
                            UScriptCode scriptCode,
                            UChar *result,
@@ -242,7 +242,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_regionDisplayName(const ULocaleDisplayNames *ldn,
                        const char *region,
                        UChar *result,
@@ -264,7 +264,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_variantDisplayName(const ULocaleDisplayNames *ldn,
                         const char *variant,
                         UChar *result,
@@ -286,7 +286,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_keyDisplayName(const ULocaleDisplayNames *ldn,
                     const char *key,
                     UChar *result,
@@ -309,7 +309,7 @@
  * greater than maxResultSize, the returned name will be truncated.
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uldn_keyValueDisplayName(const ULocaleDisplayNames *ldn,
                          const char *key,
                          const char *value,
@@ -335,7 +335,7 @@
 * @return a ULocaleDisplayNames instance 
 * @stable ICU 51
 */
-U_STABLE ULocaleDisplayNames * U_EXPORT2
+U_CAPI ULocaleDisplayNames * U_EXPORT2
 uldn_openForContext(const char * locale, UDisplayContext *contexts,
                     int32_t length, UErrorCode *pErrorCode) __INTRODUCED_IN(31);
 
@@ -353,7 +353,7 @@
 * @return the UDisplayContextValue for the specified type.
 * @stable ICU 51
 */
-U_STABLE UDisplayContext U_EXPORT2
+U_CAPI UDisplayContext U_EXPORT2
 uldn_getContext(const ULocaleDisplayNames *ldn, UDisplayContextType type,
                 UErrorCode *pErrorCode) __INTRODUCED_IN(31);
 
diff --git a/libicu/ndk_headers/unicode/uloc.h b/libicu/ndk_headers/unicode/uloc.h
index 9aec981..6d54faf 100644
--- a/libicu/ndk_headers/unicode/uloc.h
+++ b/libicu/ndk_headers/unicode/uloc.h
@@ -376,7 +376,7 @@
  * @system
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_getDefault(void) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -398,7 +398,7 @@
  * than languageCapacity, the returned language code will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getLanguage(const char*    localeID,
          char* language,
          int32_t languageCapacity,
@@ -420,7 +420,7 @@
  * than scriptCapacity, the returned language code will be truncated.  
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getScript(const char*    localeID,
          char* script,
          int32_t scriptCapacity,
@@ -442,7 +442,7 @@
  * than countryCapacity, the returned country code will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getCountry(const char*    localeID,
         char* country,
         int32_t countryCapacity,
@@ -464,7 +464,7 @@
  * than variantCapacity, the returned variant code will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getVariant(const char*    localeID,
         char* variant,
         int32_t variantCapacity,
@@ -491,7 +491,7 @@
  * than nameCapacity, the returned full name will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getName(const char*    localeID,
          char* name,
          int32_t nameCapacity,
@@ -518,7 +518,7 @@
  * than nameCapacity, the returned full name will be truncated.  
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_canonicalize(const char*    localeID,
          char* name,
          int32_t nameCapacity,
@@ -535,7 +535,7 @@
  * @return language the ISO language code for localeID
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_getISO3Language(const char* localeID) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -550,7 +550,7 @@
  * @return country the ISO country code for localeID
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_getISO3Country(const char* localeID) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -563,19 +563,24 @@
  * Gets the language name suitable for display for the specified locale.
  *
  * @param locale the locale to get the ISO language code with
- * @param displayLocale Specifies the locale to be used to display the name.  In other words,
- *                 if the locale's language code is "en", passing Locale::getFrench() for
- *                 inLocale would result in "Anglais", while passing Locale::getGerman()
- *                 for inLocale would result in "Englisch".
+ * @param displayLocale Specifies the locale to be used to display the name. In
+ *                 other words, if the locale's language code is "en", passing
+ *                 Locale::getFrench() for inLocale would result in "Anglais",
+ *                 while passing Locale::getGerman() for inLocale would result
+ *                 in "Englisch".
  * @param language the displayable language code for localeID
- * @param languageCapacity the size of the language buffer to store the  
- * displayable language code with
- * @param status error information if retrieving the displayable language code failed
- * @return the actual buffer size needed for the displayable language code.  If it's greater 
- * than languageCapacity, the returned language code will be truncated.  
+ * @param languageCapacity the size of the language buffer to store the
+ *                 displayable language code with.
+ * @param status error information if retrieving the displayable language code
+ *                 failed. U_USING_DEFAULT_WARNING indicates that no data was
+ *                 found from the locale resources and a case canonicalized
+ *                 language code is placed into language as fallback.
+ * @return the actual buffer size needed for the displayable language code. If
+ *                 it's greater than languageCapacity, the returned language
+ *                 code will be truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayLanguage(const char* locale,
             const char* displayLocale,
             UChar* language,
@@ -589,20 +594,26 @@
 /**
  * Gets the script name suitable for display for the specified locale.
  *
- * @param locale the locale to get the displayable script code with. NULL may be used to specify the default.
- * @param displayLocale Specifies the locale to be used to display the name.  In other words,
- *                 if the locale's language code is "en", passing Locale::getFrench() for
- *                 inLocale would result in "", while passing Locale::getGerman()
- *                 for inLocale would result in "". NULL may be used to specify the default.
- * @param script the displayable script for the localeID
- * @param scriptCapacity the size of the script buffer to store the  
- * displayable script code with
- * @param status error information if retrieving the displayable script code failed
- * @return the actual buffer size needed for the displayable script code.  If it's greater 
- * than scriptCapacity, the returned displayable script code will be truncated.  
+ * @param locale the locale to get the displayable script code with. NULL may be
+ *                 used to specify the default.
+ * @param displayLocale Specifies the locale to be used to display the name. In
+ *                 other words, if the locale's language code is "en", passing
+ *                 Locale::getFrench() for inLocale would result in "", while
+ *                 passing Locale::getGerman() for inLocale would result in "".
+ *                 NULL may be used to specify the default.
+ * @param script the displayable script for the localeID.
+ * @param scriptCapacity the size of the script buffer to store the displayable
+ *                 script code with.
+ * @param status error information if retrieving the displayable script code
+ *                 failed. U_USING_DEFAULT_WARNING indicates that no data was
+ *                 found from the locale resources and a case canonicalized
+ *                 script code is placed into script as fallback.
+ * @return the actual buffer size needed for the displayable script code. If
+ *                 it's greater than scriptCapacity, the returned displayable
+ *                 script code will be truncated.
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayScript(const char* locale,
             const char* displayLocale,
             UChar* script,
@@ -615,23 +626,30 @@
 
 /**
  * Gets the country name suitable for display for the specified locale.
- * Warning: this is for the region part of a valid locale ID; it cannot just be the region code (like "FR").
- * To get the display name for a region alone, or for other options, use ULocaleDisplayNames instead.
+ * Warning: this is for the region part of a valid locale ID; it cannot just be
+ * the region code (like "FR"). To get the display name for a region alone, or
+ * for other options, use ULocaleDisplayNames instead.
  *
- * @param locale the locale to get the displayable country code with. NULL may be used to specify the default.
- * @param displayLocale Specifies the locale to be used to display the name.  In other words,
- *                 if the locale's language code is "en", passing Locale::getFrench() for
- *                 inLocale would result in "Anglais", while passing Locale::getGerman()
- *                 for inLocale would result in "Englisch". NULL may be used to specify the default.
- * @param country the displayable country code for localeID
- * @param countryCapacity the size of the country buffer to store the  
- * displayable country code with
- * @param status error information if retrieving the displayable country code failed
- * @return the actual buffer size needed for the displayable country code.  If it's greater 
- * than countryCapacity, the returned displayable country code will be truncated.  
+ * @param locale the locale to get the displayable country code with. NULL may
+ *                 be used to specify the default.
+ * @param displayLocale Specifies the locale to be used to display the name. In
+ *                 other words, if the locale's language code is "en", passing
+ *                 Locale::getFrench() for inLocale would result in "Anglais",
+ *                 while passing Locale::getGerman() for inLocale would result
+ *                 in "Englisch". NULL may be used to specify the default.
+ * @param country the displayable country code for localeID.
+ * @param countryCapacity the size of the country buffer to store the
+ *                 displayable country code with.
+ * @param status error information if retrieving the displayable country code
+ *                 failed. U_USING_DEFAULT_WARNING indicates that no data was
+ *                 found from the locale resources and a case canonicalized
+ *                 country code is placed into country as fallback.
+ * @return the actual buffer size needed for the displayable country code. If
+ *                 it's greater than countryCapacity, the returned displayable
+ *                 country code will be truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayCountry(const char* locale,
                        const char* displayLocale,
                        UChar* country,
@@ -646,20 +664,26 @@
 /**
  * Gets the variant name suitable for display for the specified locale.
  *
- * @param locale the locale to get the displayable variant code with. NULL may be used to specify the default.
- * @param displayLocale Specifies the locale to be used to display the name.  In other words,
- *                 if the locale's language code is "en", passing Locale::getFrench() for
- *                 inLocale would result in "Anglais", while passing Locale::getGerman()
- *                 for inLocale would result in "Englisch". NULL may be used to specify the default.
- * @param variant the displayable variant code for localeID
- * @param variantCapacity the size of the variant buffer to store the 
- * displayable variant code with
- * @param status error information if retrieving the displayable variant code failed
- * @return the actual buffer size needed for the displayable variant code.  If it's greater 
- * than variantCapacity, the returned displayable variant code will be truncated.  
+ * @param locale the locale to get the displayable variant code with. NULL may
+ *                 be used to specify the default.
+ * @param displayLocale Specifies the locale to be used to display the name. In
+ *                 other words, if the locale's language code is "en", passing
+ *                 Locale::getFrench() for inLocale would result in "Anglais",
+ *                 while passing Locale::getGerman() for inLocale would result
+ *                 in "Englisch". NULL may be used to specify the default.
+ * @param variant the displayable variant code for localeID.
+ * @param variantCapacity the size of the variant buffer to store the
+ *                 displayable variant code with.
+ * @param status error information if retrieving the displayable variant code
+ *                 failed. U_USING_DEFAULT_WARNING indicates that no data was
+ *                 found from the locale resources and a case canonicalized
+ *                 variant code is placed into variant as fallback.
+ * @return the actual buffer size needed for the displayable variant code. If
+ *                 it's greater than variantCapacity, the returned displayable
+ *                 variant code will be truncated.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayVariant(const char* locale,
                        const char* displayLocale,
                        UChar* variant,
@@ -671,9 +695,9 @@
 #if !defined(__ANDROID__) || __ANDROID_API__ >= 31
 
 /**
- * Gets the keyword name suitable for display for the specified locale.
- * E.g: for the locale string de_DE\@collation=PHONEBOOK, this API gets the display 
- * string for the keyword collation. 
+ * Gets the keyword name suitable for display for the specified locale. E.g:
+ * for the locale string de_DE\@collation=PHONEBOOK, this API gets the display
+ * string for the keyword collation.
  * Usage:
  * <code>
  *    UErrorCode status = U_ZERO_ERROR;
@@ -702,15 +726,17 @@
  *                          for inLocale would result in "Englisch". NULL may be used to specify the default.
  * @param dest              the buffer to which the displayable keyword should be written.
  * @param destCapacity      The size of the buffer (number of UChars). If it is 0, then
- *                          dest may be NULL and the function will only return the length of the 
+ *                          dest may be NULL and the function will only return the length of the
  *                          result without writing any of the result string (pre-flighting).
- * @param status            error information if retrieving the displayable string failed. 
+ * @param status            error information if retrieving the displayable string failed.
  *                          Should not be NULL and should not indicate failure on entry.
- * @return the actual buffer size needed for the displayable variant code.  
+ *                          U_USING_DEFAULT_WARNING indicates that no data was found from the locale
+ *                          resources and the keyword is placed into dest as fallback.
+ * @return the actual buffer size needed for the displayable variant code.
  * @see #uloc_openKeywords
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayKeyword(const char* keyword,
                        const char* displayLocale,
                        UChar* dest,
@@ -722,7 +748,7 @@
 
 /**
  * Gets the value of the keyword suitable for display for the specified locale.
- * E.g: for the locale string de_DE\@collation=PHONEBOOK, this API gets the display 
+ * E.g: for the locale string de_DE\@collation=PHONEBOOK, this API gets the display
  * string for PHONEBOOK, in the display locale, when "collation" is specified as the keyword.
  *
  * @param locale            The locale to get the displayable variant code with. NULL may be used to specify the default.
@@ -733,14 +759,16 @@
  *                          for inLocale would result in "Englisch". NULL may be used to specify the default.
  * @param dest              the buffer to which the displayable keyword should be written.
  * @param destCapacity      The size of the buffer (number of UChars). If it is 0, then
- *                          dest may be NULL and the function will only return the length of the 
+ *                          dest may be NULL and the function will only return the length of the
  *                          result without writing any of the result string (pre-flighting).
- * @param status            error information if retrieving the displayable string failed. 
+ * @param status            error information if retrieving the displayable string failed.
  *                          Should not be NULL and must not indicate failure on entry.
- * @return the actual buffer size needed for the displayable variant code.  
+ *                          U_USING_DEFAULT_WARNING indicates that no data was found from the locale
+ *                          resources and the value of the keyword is placed into dest as fallback.
+ * @return the actual buffer size needed for the displayable variant code.
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayKeywordValue(   const char* locale,
                                const char* keyword,
                                const char* displayLocale,
@@ -767,7 +795,7 @@
  * than maxResultSize, the returned displayable name will be truncated.  
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getDisplayName(const char* localeID,
             const char* inLocaleID,
             UChar* result,
@@ -795,7 +823,7 @@
  * @return a specified locale name of all available locales
  * @stable ICU 2.0
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_getAvailable(int32_t n) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -808,23 +836,21 @@
  * @return the size of the locale list
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2 uloc_countAvailable(void) __INTRODUCED_IN(31);
+U_CAPI int32_t U_EXPORT2 uloc_countAvailable(void) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
 
-#ifndef U_HIDE_DRAFT_API
-
 /**
  * Types for uloc_getAvailableByType and uloc_countAvailableByType.
  *
- * @draft ICU 65
+ * @stable ICU 65
  */
 typedef enum ULocAvailableType {
   /**
    * Locales that return data when passed to ICU APIs,
    * but not including legacy or alias locales.
    *
-   * @draft ICU 65
+   * @stable ICU 65
    */
   ULOC_AVAILABLE_DEFAULT,
 
@@ -842,7 +868,7 @@
    * ULOC_AVAILABLE_DEFAULT. To get both sets at the same time, use
    * ULOC_AVAILABLE_WITH_LEGACY_ALIASES.
    *
-   * @draft ICU 65
+   * @stable ICU 65
    */
   ULOC_AVAILABLE_ONLY_LEGACY_ALIASES,
 
@@ -850,7 +876,7 @@
    * The union of the locales in ULOC_AVAILABLE_DEFAULT and
    * ULOC_AVAILABLE_ONLY_LEGACY_ALIAS.
    *
-   * @draft ICU 65
+   * @stable ICU 65
    */
   ULOC_AVAILABLE_WITH_LEGACY_ALIASES,
 
@@ -864,8 +890,6 @@
 
 
 
-#endif // U_HIDE_DRAFT_API
-
 #if !defined(__ANDROID__) || __ANDROID_API__ >= 31
 
 /**
@@ -879,7 +903,7 @@
  * @return a list of all available language codes
  * @stable ICU 2.0
  */
-U_STABLE const char* const* U_EXPORT2
+U_CAPI const char* const* U_EXPORT2
 uloc_getISOLanguages(void) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -895,7 +919,7 @@
  * @return a list of all available country codes
  * @stable ICU 2.0
  */
-U_STABLE const char* const* U_EXPORT2
+U_CAPI const char* const* U_EXPORT2
 uloc_getISOCountries(void) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -929,7 +953,7 @@
  * than nameCapacity, the returned full name will be truncated.  
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getBaseName(const char*    localeID,
          char* name,
          int32_t nameCapacity,
@@ -948,7 +972,7 @@
  * @return enumeration of keywords or NULL if there are no keywords.
  * @stable ICU 2.8
  */
-U_STABLE UEnumeration* U_EXPORT2
+U_CAPI UEnumeration* U_EXPORT2
 uloc_openKeywords(const char* localeID,
                         UErrorCode* status) __INTRODUCED_IN(31);
 
@@ -969,7 +993,7 @@
  * @return the length of keyword value
  * @stable ICU 2.8
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_getKeywordValue(const char* localeID,
                      const char* keywordName,
                      char* buffer, int32_t bufferCapacity,
@@ -1010,7 +1034,7 @@
  * @see uloc_getKeywordValue
  * @stable ICU 3.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_setKeywordValue(const char* keywordName,
                      const char* keywordValue,
                      char* buffer, int32_t bufferCapacity,
@@ -1023,18 +1047,18 @@
 /**
  * Returns whether the locale's script is written right-to-left.
  * If there is no script subtag, then the likely script is used, see uloc_addLikelySubtags().
- * If no likely script is known, then FALSE is returned.
+ * If no likely script is known, then false is returned.
  *
  * A script is right-to-left according to the CLDR script metadata
  * which corresponds to whether the script's letters have Bidi_Class=R or AL.
  *
- * Returns TRUE for "ar" and "en-Hebr", FALSE for "zh" and "fa-Cyrl".
+ * Returns true for "ar" and "en-Hebr", false for "zh" and "fa-Cyrl".
  *
  * @param locale input locale ID
- * @return TRUE if the locale's script is written right-to-left
+ * @return true if the locale's script is written right-to-left
  * @stable ICU 54
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uloc_isRightToLeft(const char *locale) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1062,7 +1086,7 @@
  * @return an enum indicating the layout orientation for characters.
  * @stable ICU 4.0
  */
-U_STABLE ULayoutType U_EXPORT2
+U_CAPI ULayoutType U_EXPORT2
 uloc_getCharacterOrientation(const char* localeId,
                              UErrorCode *status) __INTRODUCED_IN(31);
 
@@ -1078,7 +1102,7 @@
  * @return an enum indicating the layout orientation for lines.
  * @stable ICU 4.0
  */
-U_STABLE ULayoutType U_EXPORT2
+U_CAPI ULayoutType U_EXPORT2
 uloc_getLineOrientation(const char* localeId,
                         UErrorCode *status) __INTRODUCED_IN(31);
 
@@ -1132,7 +1156,7 @@
  * @return length needed for the locale.
  * @stable ICU 3.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_acceptLanguage(char *result, int32_t resultAvailable, 
                     UAcceptResult *outResult, const char **acceptList,
                     int32_t acceptListCount,
@@ -1180,7 +1204,7 @@
  * On error, the return value is -1.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_addLikelySubtags(const char*    localeID,
          char* maximizedLocaleID,
          int32_t maximizedLocaleIDCapacity,
@@ -1224,7 +1248,7 @@
  * On error, the return value is -1.
  * @stable ICU 4.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_minimizeSubtags(const char*    localeID,
          char* minimizedLocaleID,
          int32_t minimizedLocaleIDCapacity,
@@ -1238,14 +1262,18 @@
  * Returns a locale ID for the specified BCP47 language tag string.
  * If the specified language tag contains any ill-formed subtags,
  * the first such subtag and all following subtags are ignored.
- * <p> 
- * This implements the 'Language-Tag' production of BCP47, and so
- * supports grandfathered (regular and irregular) as well as private
- * use language tags.  Private use tags are represented as 'x-whatever',
- * and grandfathered tags are converted to their canonical replacements
- * where they exist.  Note that a few grandfathered tags have no modern
- * replacement, these will be converted using the fallback described in
+ * <p>
+ * This implements the 'Language-Tag' production of BCP 47, and so
+ * supports legacy language tags (marked as “Type: grandfathered” in BCP 47)
+ * (regular and irregular) as well as private use language tags.
+ *
+ * Private use tags are represented as 'x-whatever',
+ * and legacy tags are converted to their canonical replacements where they exist.
+ *
+ * Note that a few legacy tags have no modern replacement;
+ * these will be converted using the fallback described in
  * the first paragraph, so some information might be lost.
+ *
  * @param langtag   the input BCP47 language tag.
  * @param localeID  the output buffer receiving a locale ID for the
  *                  specified BCP47 language tag.
@@ -1257,7 +1285,7 @@
  * @return          the length of the locale ID.
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_forLanguageTag(const char* langtag,
                     char* localeID,
                     int32_t localeIDCapacity,
@@ -1271,10 +1299,10 @@
 /**
  * Returns a well-formed language tag for this locale ID. 
  * <p> 
- * <b>Note</b>: When <code>strict</code> is FALSE, any locale
+ * <b>Note</b>: When <code>strict</code> is false, any locale
  * fields which do not satisfy the BCP47 syntax requirement will
  * be omitted from the result.  When <code>strict</code> is
- * TRUE, this function sets U_ILLEGAL_ARGUMENT_ERROR to the
+ * true, this function sets U_ILLEGAL_ARGUMENT_ERROR to the
  * <code>err</code> if any locale fields do not satisfy the
  * BCP47 syntax requirement.
  * @param localeID  the input locale ID
@@ -1289,7 +1317,7 @@
  * @return          The length of the BCP47 language tag.
  * @stable ICU 4.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uloc_toLanguageTag(const char* localeID,
                    char* langtag,
                    int32_t langtagCapacity,
@@ -1321,7 +1349,7 @@
  * @see uloc_toLegacyKey
  * @stable ICU 54
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_toUnicodeLocaleKey(const char* keyword) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1356,7 +1384,7 @@
  * @see uloc_toLegacyType
  * @stable ICU 54
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_toUnicodeLocaleType(const char* keyword, const char* value) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1375,7 +1403,7 @@
  * @see toUnicodeLocaleKey
  * @stable ICU 54
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_toLegacyKey(const char* keyword) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -1408,7 +1436,7 @@
  * @see toUnicodeLocaleType
  * @stable ICU 54
  */
-U_STABLE const char* U_EXPORT2
+U_CAPI const char* U_EXPORT2
 uloc_toLegacyType(const char* keyword, const char* value) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
diff --git a/libicu/ndk_headers/unicode/ulocdata.h b/libicu/ndk_headers/unicode/ulocdata.h
index 3015c11..9016e54 100644
--- a/libicu/ndk_headers/unicode/ulocdata.h
+++ b/libicu/ndk_headers/unicode/ulocdata.h
@@ -48,7 +48,7 @@
  * @param status error code - could be U_MISSING_RESOURCE_ERROR if the version was not found.
  * @stable ICU 4.2
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 ulocdata_getCLDRVersion(UVersionInfo versionArray, UErrorCode *status) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
diff --git a/libicu/ndk_headers/unicode/umachine.h b/libicu/ndk_headers/unicode/umachine.h
index 1d85855..09c887c 100644
--- a/libicu/ndk_headers/unicode/umachine.h
+++ b/libicu/ndk_headers/unicode/umachine.h
@@ -49,12 +49,13 @@
  * ANSI C headers:
  * stddef.h defines wchar_t
  */
+#include <stdbool.h>
 #include <stddef.h>
 
 /*==========================================================================*/
-/* For C wrappers, we use the symbol U_STABLE.                                */
+/* For C wrappers, we use the symbol U_CAPI.                                */
 /* This works properly if the includer is C or C++.                         */
-/* Functions are declared   U_STABLE return-type U_EXPORT2 function-name()... */
+/* Functions are declared   U_CAPI return-type U_EXPORT2 function-name()... */
 /*==========================================================================*/
 
 /**
@@ -107,15 +108,15 @@
 
 /** This is used to declare a function as a public ICU C API @stable ICU 2.0*/
 #define U_CAPI U_CFUNC U_EXPORT
-/** This is used to declare a function as a stable public ICU C API*/
+/** Obsolete/same as U_CAPI; was used to declare a function as a stable public ICU C API*/
 #define U_STABLE U_CAPI
-/** This is used to declare a function as a draft public ICU C API  */
+/** Obsolete/same as U_CAPI; was used to declare a function as a draft public ICU C API  */
 #define U_DRAFT  U_CAPI
 /** This is used to declare a function as a deprecated public ICU C API  */
 #define U_DEPRECATED U_CAPI U_ATTRIBUTE_DEPRECATED
-/** This is used to declare a function as an obsolete public ICU C API  */
+/** Obsolete/same as U_CAPI; was used to declare a function as an obsolete public ICU C API  */
 #define U_OBSOLETE U_CAPI
-/** This is used to declare a function as an internal ICU C API  */
+/** Obsolete/same as U_CAPI; was used to declare a function as an internal ICU C API  */
 #define U_INTERNAL U_CAPI
 
 /**
@@ -170,11 +171,11 @@
 
 /**
  * \def UPRV_BLOCK_MACRO_END
- * Defined as "while (FALSE)" by default.
+ * Defined as "while (false)" by default.
  * @internal
  */
 #ifndef UPRV_BLOCK_MACRO_END
-#define UPRV_BLOCK_MACRO_END while (FALSE)
+#define UPRV_BLOCK_MACRO_END while (false)
 #endif
 
 /*==========================================================================*/
@@ -257,18 +258,59 @@
 /* Boolean data type                                                        */
 /*==========================================================================*/
 
-/** The ICU boolean type @stable ICU 2.0 */
+/**
+ * The ICU boolean type, a signed-byte integer.
+ * ICU-specific for historical reasons: The C and C++ standards used to not define type bool.
+ * Also provides a fixed type definition, as opposed to
+ * type bool whose details (e.g., sizeof) may vary by compiler and between C and C++.
+ *
+ * @stable ICU 2.0
+ */
 typedef int8_t UBool;
 
+/**
+ * \def U_DEFINE_FALSE_AND_TRUE
+ * Normally turns off defining macros FALSE=0 & TRUE=1 in public ICU headers.
+ * These obsolete macros sometimes break compilation of other code that
+ * defines enum constants or similar with these names.
+ * C++ has long defined bool/false/true.
+ * C99 also added definitions for these, although as macros; see stdbool.h.
+ *
+ * You may transitionally define U_DEFINE_FALSE_AND_TRUE=1 if you need time to migrate code.
+ *
+ * @internal ICU 68
+ */
+#ifdef U_DEFINE_FALSE_AND_TRUE
+    // Use the predefined value.
+#elif defined(U_COMBINED_IMPLEMENTATION) || \
+        defined(U_COMMON_IMPLEMENTATION) || defined(U_I18N_IMPLEMENTATION) || \
+        defined(U_IO_IMPLEMENTATION) || defined(U_LAYOUTEX_IMPLEMENTATION) || \
+        defined(U_TOOLUTIL_IMPLEMENTATION)
+    // Inside ICU: Keep FALSE & TRUE available.
+#   define U_DEFINE_FALSE_AND_TRUE 1
+#else
+    // Outside ICU: Avoid collision with non-macro definitions of FALSE & TRUE.
+#   define U_DEFINE_FALSE_AND_TRUE 0
+#endif
+
+#if U_DEFINE_FALSE_AND_TRUE || defined(U_IN_DOXYGEN)
 #ifndef TRUE
-/** The TRUE value of a UBool @stable ICU 2.0 */
+/**
+ * The TRUE value of a UBool.
+ *
+ * @deprecated ICU 68 Use standard "true" instead.
+ */
 #   define TRUE  1
 #endif
 #ifndef FALSE
-/** The FALSE value of a UBool @stable ICU 2.0 */
+/**
+ * The FALSE value of a UBool.
+ *
+ * @deprecated ICU 68 Use standard "false" instead.
+ */
 #   define FALSE 0
 #endif
-
+#endif  // U_DEFINE_FALSE_AND_TRUE
 
 /*==========================================================================*/
 /* Unicode data types                                                       */
diff --git a/libicu/ndk_headers/unicode/unorm2.h b/libicu/ndk_headers/unicode/unorm2.h
index b2c8721..adec241 100644
--- a/libicu/ndk_headers/unicode/unorm2.h
+++ b/libicu/ndk_headers/unicode/unorm2.h
@@ -136,7 +136,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFCInstance(UErrorCode *pErrorCode) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -154,7 +154,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFDInstance(UErrorCode *pErrorCode) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -172,7 +172,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFKCInstance(UErrorCode *pErrorCode) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -190,7 +190,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFKDInstance(UErrorCode *pErrorCode) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -208,7 +208,7 @@
  * @return the requested Normalizer2, if successful
  * @stable ICU 49
  */
-U_STABLE const UNormalizer2 * U_EXPORT2
+U_CAPI const UNormalizer2 * U_EXPORT2
 unorm2_getNFKCCasefoldInstance(UErrorCode *pErrorCode) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -225,7 +225,7 @@
  * @param norm2 UNormalizer2 instance to be closed
  * @stable ICU 4.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 unorm2_close(UNormalizer2 *norm2) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -267,7 +267,7 @@
  * @return dest
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_normalize(const UNormalizer2 *norm2,
                  const UChar *src, int32_t length,
                  UChar *dest, int32_t capacity,
@@ -294,7 +294,7 @@
  * @return first
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_normalizeSecondAndAppend(const UNormalizer2 *norm2,
                                 UChar *first, int32_t firstLength, int32_t firstCapacity,
                                 const UChar *second, int32_t secondLength,
@@ -321,7 +321,7 @@
  * @return first
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_append(const UNormalizer2 *norm2,
               UChar *first, int32_t firstLength, int32_t firstCapacity,
               const UChar *second, int32_t secondLength,
@@ -350,7 +350,7 @@
  * @return the non-negative length of c's decomposition, if there is one; otherwise a negative value
  * @stable ICU 4.6
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_getDecomposition(const UNormalizer2 *norm2,
                         UChar32 c, UChar *decomposition, int32_t capacity,
                         UErrorCode *pErrorCode) __INTRODUCED_IN(31);
@@ -388,7 +388,7 @@
  * @return the non-negative length of c's raw decomposition, if there is one; otherwise a negative value
  * @stable ICU 49
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_getRawDecomposition(const UNormalizer2 *norm2,
                            UChar32 c, UChar *decomposition, int32_t capacity,
                            UErrorCode *pErrorCode) __INTRODUCED_IN(31);
@@ -412,7 +412,7 @@
  * @return The non-negative composite code point if there is one; otherwise a negative value.
  * @stable ICU 49
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 unorm2_composePair(const UNormalizer2 *norm2, UChar32 a, UChar32 b) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -428,7 +428,7 @@
  * @return c's combining class
  * @stable ICU 49
  */
-U_STABLE uint8_t U_EXPORT2
+U_CAPI uint8_t U_EXPORT2
 unorm2_getCombiningClass(const UNormalizer2 *norm2, UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -448,10 +448,10 @@
  *                   pass the U_SUCCESS() test, or else the function returns
  *                   immediately. Check for U_FAILURE() on output or use with
  *                   function chaining. (See User Guide for details.)
- * @return TRUE if s is normalized
+ * @return true if s is normalized
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unorm2_isNormalized(const UNormalizer2 *norm2,
                     const UChar *s, int32_t length,
                     UErrorCode *pErrorCode) __INTRODUCED_IN(31);
@@ -477,7 +477,7 @@
  * @return UNormalizationCheckResult
  * @stable ICU 4.4
  */
-U_STABLE UNormalizationCheckResult U_EXPORT2
+U_CAPI UNormalizationCheckResult U_EXPORT2
 unorm2_quickCheck(const UNormalizer2 *norm2,
                   const UChar *s, int32_t length,
                   UErrorCode *pErrorCode) __INTRODUCED_IN(31);
@@ -510,7 +510,7 @@
  * @return "yes" span end index
  * @stable ICU 4.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 unorm2_spanQuickCheckYes(const UNormalizer2 *norm2,
                          const UChar *s, int32_t length,
                          UErrorCode *pErrorCode) __INTRODUCED_IN(31);
@@ -525,10 +525,10 @@
  * For details see the Normalizer2 base class documentation.
  * @param norm2 UNormalizer2 instance
  * @param c character to test
- * @return TRUE if c has a normalization boundary before it
+ * @return true if c has a normalization boundary before it
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unorm2_hasBoundaryBefore(const UNormalizer2 *norm2, UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -541,10 +541,10 @@
  * For details see the Normalizer2 base class documentation.
  * @param norm2 UNormalizer2 instance
  * @param c character to test
- * @return TRUE if c has a normalization boundary after it
+ * @return true if c has a normalization boundary after it
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unorm2_hasBoundaryAfter(const UNormalizer2 *norm2, UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -556,10 +556,10 @@
  * For details see the Normalizer2 base class documentation.
  * @param norm2 UNormalizer2 instance
  * @param c character to test
- * @return TRUE if c is normalization-inert
+ * @return true if c is normalization-inert
  * @stable ICU 4.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 unorm2_isInert(const UNormalizer2 *norm2, UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
diff --git a/libicu/ndk_headers/unicode/urename.h b/libicu/ndk_headers/unicode/urename.h
index 30f4b7a..fe59fdd 100644
--- a/libicu/ndk_headers/unicode/urename.h
+++ b/libicu/ndk_headers/unicode/urename.h
@@ -130,7 +130,6 @@
 #define izrule_getStaticClassID U_ICU_ENTRY_POINT_RENAME(izrule_getStaticClassID)
 #define izrule_isEquivalentTo U_ICU_ENTRY_POINT_RENAME(izrule_isEquivalentTo)
 #define izrule_open U_ICU_ENTRY_POINT_RENAME(izrule_open)
-#define locale_getKeywords U_ICU_ENTRY_POINT_RENAME(locale_getKeywords)
 #define locale_getKeywordsStart U_ICU_ENTRY_POINT_RENAME(locale_getKeywordsStart)
 #define locale_get_default U_ICU_ENTRY_POINT_RENAME(locale_get_default)
 #define locale_set_default U_ICU_ENTRY_POINT_RENAME(locale_set_default)
@@ -918,9 +917,11 @@
 #define udtitvfmt_format U_ICU_ENTRY_POINT_RENAME(udtitvfmt_format)
 #define udtitvfmt_formatCalendarToResult U_ICU_ENTRY_POINT_RENAME(udtitvfmt_formatCalendarToResult)
 #define udtitvfmt_formatToResult U_ICU_ENTRY_POINT_RENAME(udtitvfmt_formatToResult)
+#define udtitvfmt_getContext U_ICU_ENTRY_POINT_RENAME(udtitvfmt_getContext)
 #define udtitvfmt_open U_ICU_ENTRY_POINT_RENAME(udtitvfmt_open)
 #define udtitvfmt_openResult U_ICU_ENTRY_POINT_RENAME(udtitvfmt_openResult)
 #define udtitvfmt_resultAsValue U_ICU_ENTRY_POINT_RENAME(udtitvfmt_resultAsValue)
+#define udtitvfmt_setContext U_ICU_ENTRY_POINT_RENAME(udtitvfmt_setContext)
 #define uenum_close U_ICU_ENTRY_POINT_RENAME(uenum_close)
 #define uenum_count U_ICU_ENTRY_POINT_RENAME(uenum_count)
 #define uenum_next U_ICU_ENTRY_POINT_RENAME(uenum_next)
@@ -1079,7 +1080,6 @@
 #define uloc_getDisplayLanguage U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayLanguage)
 #define uloc_getDisplayName U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayName)
 #define uloc_getDisplayScript U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayScript)
-#define uloc_getDisplayScriptInContext U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayScriptInContext)
 #define uloc_getDisplayVariant U_ICU_ENTRY_POINT_RENAME(uloc_getDisplayVariant)
 #define uloc_getISO3Country U_ICU_ENTRY_POINT_RENAME(uloc_getISO3Country)
 #define uloc_getISO3Language U_ICU_ENTRY_POINT_RENAME(uloc_getISO3Language)
@@ -1123,16 +1123,21 @@
 #define ulocimp_forLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocimp_forLanguageTag)
 #define ulocimp_getBaseName U_ICU_ENTRY_POINT_RENAME(ulocimp_getBaseName)
 #define ulocimp_getCountry U_ICU_ENTRY_POINT_RENAME(ulocimp_getCountry)
+#define ulocimp_getKeywordValue U_ICU_ENTRY_POINT_RENAME(ulocimp_getKeywordValue)
+#define ulocimp_getKeywords U_ICU_ENTRY_POINT_RENAME(ulocimp_getKeywords)
+#define ulocimp_getKnownCanonicalizedLocaleForTest U_ICU_ENTRY_POINT_RENAME(ulocimp_getKnownCanonicalizedLocaleForTest)
 #define ulocimp_getLanguage U_ICU_ENTRY_POINT_RENAME(ulocimp_getLanguage)
 #define ulocimp_getName U_ICU_ENTRY_POINT_RENAME(ulocimp_getName)
 #define ulocimp_getRegionForSupplementalData U_ICU_ENTRY_POINT_RENAME(ulocimp_getRegionForSupplementalData)
 #define ulocimp_getScript U_ICU_ENTRY_POINT_RENAME(ulocimp_getScript)
+#define ulocimp_isCanonicalizedLocaleForTest U_ICU_ENTRY_POINT_RENAME(ulocimp_isCanonicalizedLocaleForTest)
 #define ulocimp_minimizeSubtags U_ICU_ENTRY_POINT_RENAME(ulocimp_minimizeSubtags)
 #define ulocimp_toBcpKey U_ICU_ENTRY_POINT_RENAME(ulocimp_toBcpKey)
 #define ulocimp_toBcpType U_ICU_ENTRY_POINT_RENAME(ulocimp_toBcpType)
 #define ulocimp_toLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocimp_toLanguageTag)
 #define ulocimp_toLegacyKey U_ICU_ENTRY_POINT_RENAME(ulocimp_toLegacyKey)
 #define ulocimp_toLegacyType U_ICU_ENTRY_POINT_RENAME(ulocimp_toLegacyType)
+#define ultag_getTKeyStart U_ICU_ENTRY_POINT_RENAME(ultag_getTKeyStart)
 #define ultag_isExtensionSubtags U_ICU_ENTRY_POINT_RENAME(ultag_isExtensionSubtags)
 #define ultag_isLanguageSubtag U_ICU_ENTRY_POINT_RENAME(ultag_isLanguageSubtag)
 #define ultag_isPrivateuseValueSubtags U_ICU_ENTRY_POINT_RENAME(ultag_isPrivateuseValueSubtags)
@@ -1245,7 +1250,18 @@
 #define unumf_resultAsValue U_ICU_ENTRY_POINT_RENAME(unumf_resultAsValue)
 #define unumf_resultGetAllFieldPositions U_ICU_ENTRY_POINT_RENAME(unumf_resultGetAllFieldPositions)
 #define unumf_resultNextFieldPosition U_ICU_ENTRY_POINT_RENAME(unumf_resultNextFieldPosition)
+#define unumf_resultToDecimalNumber U_ICU_ENTRY_POINT_RENAME(unumf_resultToDecimalNumber)
 #define unumf_resultToString U_ICU_ENTRY_POINT_RENAME(unumf_resultToString)
+#define unumrf_close U_ICU_ENTRY_POINT_RENAME(unumrf_close)
+#define unumrf_closeResult U_ICU_ENTRY_POINT_RENAME(unumrf_closeResult)
+#define unumrf_formatDecimalRange U_ICU_ENTRY_POINT_RENAME(unumrf_formatDecimalRange)
+#define unumrf_formatDoubleRange U_ICU_ENTRY_POINT_RENAME(unumrf_formatDoubleRange)
+#define unumrf_openForSkeletonWithCollapseAndIdentityFallback U_ICU_ENTRY_POINT_RENAME(unumrf_openForSkeletonWithCollapseAndIdentityFallback)
+#define unumrf_openResult U_ICU_ENTRY_POINT_RENAME(unumrf_openResult)
+#define unumrf_resultAsValue U_ICU_ENTRY_POINT_RENAME(unumrf_resultAsValue)
+#define unumrf_resultGetFirstDecimalNumber U_ICU_ENTRY_POINT_RENAME(unumrf_resultGetFirstDecimalNumber)
+#define unumrf_resultGetIdentityResult U_ICU_ENTRY_POINT_RENAME(unumrf_resultGetIdentityResult)
+#define unumrf_resultGetSecondDecimalNumber U_ICU_ENTRY_POINT_RENAME(unumrf_resultGetSecondDecimalNumber)
 #define unumsys_close U_ICU_ENTRY_POINT_RENAME(unumsys_close)
 #define unumsys_getDescription U_ICU_ENTRY_POINT_RENAME(unumsys_getDescription)
 #define unumsys_getName U_ICU_ENTRY_POINT_RENAME(unumsys_getName)
@@ -1259,6 +1275,7 @@
 #define uplrules_open U_ICU_ENTRY_POINT_RENAME(uplrules_open)
 #define uplrules_openForType U_ICU_ENTRY_POINT_RENAME(uplrules_openForType)
 #define uplrules_select U_ICU_ENTRY_POINT_RENAME(uplrules_select)
+#define uplrules_selectForRange U_ICU_ENTRY_POINT_RENAME(uplrules_selectForRange)
 #define uplrules_selectFormatted U_ICU_ENTRY_POINT_RENAME(uplrules_selectFormatted)
 #define uplrules_selectWithFormat U_ICU_ENTRY_POINT_RENAME(uplrules_selectWithFormat)
 #define uplug_closeLibrary U_ICU_ENTRY_POINT_RENAME(uplug_closeLibrary)
diff --git a/libicu/ndk_headers/unicode/uscript.h b/libicu/ndk_headers/unicode/uscript.h
index 90c343e..55c77b4 100644
--- a/libicu/ndk_headers/unicode/uscript.h
+++ b/libicu/ndk_headers/unicode/uscript.h
@@ -516,7 +516,7 @@
  * @return The number of script codes filled in the buffer passed in
  * @stable ICU 2.4
  */
-U_STABLE int32_t  U_EXPORT2
+U_CAPI int32_t  U_EXPORT2
 uscript_getCode(const char* nameOrAbbrOrLocale,UScriptCode* fillIn,int32_t capacity,UErrorCode *err) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -533,7 +533,7 @@
  * or NULL if scriptCode is invalid
  * @stable ICU 2.4
  */
-U_STABLE const char*  U_EXPORT2
+U_CAPI const char*  U_EXPORT2
 uscript_getName(UScriptCode scriptCode) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -549,7 +549,7 @@
  * @return short script name (4-letter code), or NULL if scriptCode is invalid
  * @stable ICU 2.4
  */
-U_STABLE const char*  U_EXPORT2
+U_CAPI const char*  U_EXPORT2
 uscript_getShortName(UScriptCode scriptCode) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -564,7 +564,7 @@
  * @return The UScriptCode, or 0 if codepoint is invalid
  * @stable ICU 2.4
  */
-U_STABLE UScriptCode  U_EXPORT2
+U_CAPI UScriptCode  U_EXPORT2
 uscript_getScript(UChar32 codepoint, UErrorCode *err) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -580,10 +580,10 @@
  * For more information, see UAX #24: http://www.unicode.org/reports/tr24/.
  * @param c code point
  * @param sc script code
- * @return TRUE if sc is in Script_Extensions(c)
+ * @return true if sc is in Script_Extensions(c)
  * @stable ICU 49
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uscript_hasScript(UChar32 c, UScriptCode sc) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -619,7 +619,7 @@
  *         written to scripts unless U_BUFFER_OVERFLOW_ERROR indicates insufficient capacity
  * @stable ICU 49
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uscript_getScriptExtensions(UChar32 c,
                             UScriptCode *scripts, int32_t capacity,
                             UErrorCode *errorCode) __INTRODUCED_IN(31);
@@ -662,7 +662,7 @@
  * @return the string length, even if U_BUFFER_OVERFLOW_ERROR
  * @stable ICU 51
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 uscript_getSampleString(UScriptCode script, UChar *dest, int32_t capacity, UErrorCode *pErrorCode) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -698,7 +698,7 @@
  * @see UScriptUsage
  * @stable ICU 51
  */
-U_STABLE UScriptUsage U_EXPORT2
+U_CAPI UScriptUsage U_EXPORT2
 uscript_getUsage(UScriptCode script) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -706,14 +706,14 @@
 #if !defined(__ANDROID__) || __ANDROID_API__ >= 31
 
 /**
- * Returns TRUE if the script is written right-to-left.
+ * Returns true if the script is written right-to-left.
  * For example, Arab and Hebr.
  *
  * @param script script code
- * @return TRUE if the script is right-to-left
+ * @return true if the script is right-to-left
  * @stable ICU 51
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uscript_isRightToLeft(UScriptCode script) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -721,15 +721,15 @@
 #if !defined(__ANDROID__) || __ANDROID_API__ >= 31
 
 /**
- * Returns TRUE if the script allows line breaks between letters (excluding hyphenation).
+ * Returns true if the script allows line breaks between letters (excluding hyphenation).
  * Such a script typically requires dictionary-based line breaking.
  * For example, Hani and Thai.
  *
  * @param script script code
- * @return TRUE if the script allows line breaks between letters
+ * @return true if the script allows line breaks between letters
  * @stable ICU 51
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uscript_breaksBetweenLetters(UScriptCode script) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -737,14 +737,14 @@
 #if !defined(__ANDROID__) || __ANDROID_API__ >= 31
 
 /**
- * Returns TRUE if in modern (or most recent) usage of the script case distinctions are customary.
+ * Returns true if in modern (or most recent) usage of the script case distinctions are customary.
  * For example, Latn and Cyrl.
  *
  * @param script script code
- * @return TRUE if the script is cased
+ * @return true if the script is cased
  * @stable ICU 51
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 uscript_isCased(UScriptCode script) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
diff --git a/libicu/ndk_headers/unicode/ustring.h b/libicu/ndk_headers/unicode/ustring.h
index 560ebe0..2ea8355 100644
--- a/libicu/ndk_headers/unicode/ustring.h
+++ b/libicu/ndk_headers/unicode/ustring.h
@@ -90,7 +90,7 @@
  * @return The number of UChars in <code>chars</code>, minus the terminator.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strlen(const UChar *s) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -111,7 +111,7 @@
  * @return The number of code points in the specified code units.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_countChar32(const UChar *s, int32_t length) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -136,7 +136,7 @@
  *         than 'number'. Same as (u_countChar32(s, length)>number).
  * @stable ICU 2.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 u_strHasMoreChar32Than(const UChar *s, int32_t length, int32_t number) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -153,7 +153,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strcat(UChar     *dst, 
     const UChar     *src) __INTRODUCED_IN(31);
 
@@ -175,7 +175,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strncat(UChar     *dst, 
      const UChar     *src, 
      int32_t     n) __INTRODUCED_IN(31);
@@ -204,7 +204,7 @@
  * @see u_strFindFirst
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strstr(const UChar *s, const UChar *substring) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -232,7 +232,7 @@
  * @see u_strstr
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strFindFirst(const UChar *s, int32_t length, const UChar *substring, int32_t subLength) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -256,7 +256,7 @@
  * @see u_strstr
  * @see u_strFindFirst
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strchr(const UChar *s, UChar c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -280,7 +280,7 @@
  * @see u_strstr
  * @see u_strFindFirst
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strchr32(const UChar *s, UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -307,7 +307,7 @@
  * @see u_strFindFirst
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strrstr(const UChar *s, const UChar *substring) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -335,7 +335,7 @@
  * @see u_strstr
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strFindLast(const UChar *s, int32_t length, const UChar *substring, int32_t subLength) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -359,7 +359,7 @@
  * @see u_strrstr
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strrchr(const UChar *s, UChar c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -383,7 +383,7 @@
  * @see u_strrstr
  * @see u_strFindLast
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strrchr32(const UChar *s, UChar32 c) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -402,7 +402,7 @@
  *         characters in <code>matchSet</code>, or NULL if no such character is found.
  * @stable ICU 2.0
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strpbrk(const UChar *string, const UChar *matchSet) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -422,7 +422,7 @@
  * @see u_strspn
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strcspn(const UChar *string, const UChar *matchSet) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -442,7 +442,7 @@
  * @see u_strcspn
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strspn(const UChar *string, const UChar *matchSet) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -474,7 +474,7 @@
  *         when there are no more tokens.
  * @stable ICU 2.0
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strtok_r(UChar    *src, 
      const UChar    *delim,
            UChar   **saveState) __INTRODUCED_IN(31);
@@ -493,7 +493,7 @@
  * value if <code>s1</code> is bitwise greater than <code>s2</code>.
  * @stable ICU 2.0
  */
-U_STABLE int32_t  U_EXPORT2
+U_CAPI int32_t  U_EXPORT2
 u_strcmp(const UChar     *s1, 
          const UChar     *s2) __INTRODUCED_IN(31);
 
@@ -512,7 +512,7 @@
  * in code point order
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strcmpCodePointOrder(const UChar *s1, const UChar *s2) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -539,14 +539,14 @@
  * @param s2 Second source string.
  * @param length2 Length of second source string, or -1 if NUL-terminated.
  *
- * @param codePointOrder Choose between code unit order (FALSE)
- *                       and code point order (TRUE).
+ * @param codePointOrder Choose between code unit order (false)
+ *                       and code point order (true).
  *
  * @return <0 or 0 or >0 as usual for string comparisons
  *
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strCompare(const UChar *s1, int32_t length1,
              const UChar *s2, int32_t length2,
              UBool codePointOrder) __INTRODUCED_IN(31);
@@ -597,7 +597,7 @@
  *
  * @stable ICU 2.2
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strCaseCompare(const UChar *s1, int32_t length1,
                  const UChar *s2, int32_t length2,
                  uint32_t options,
@@ -619,7 +619,7 @@
  * value if <code>s1</code> is bitwise greater than <code>s2</code>.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strncmp(const UChar     *ucs1, 
      const UChar     *ucs2, 
      int32_t     n) __INTRODUCED_IN(31);
@@ -641,7 +641,7 @@
  * in code point order
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strncmpCodePointOrder(const UChar *s1, const UChar *s2, int32_t n) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -667,7 +667,7 @@
  * @return A negative, zero, or positive integer indicating the comparison result.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strcasecmp(const UChar *s1, const UChar *s2, uint32_t options) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -695,7 +695,7 @@
  * @return A negative, zero, or positive integer indicating the comparison result.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strncasecmp(const UChar *s1, const UChar *s2, int32_t n, uint32_t options) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -723,7 +723,7 @@
  * @return A negative, zero, or positive integer indicating the comparison result.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_memcasecmp(const UChar *s1, const UChar *s2, int32_t length, uint32_t options) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -738,7 +738,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strcpy(UChar     *dst, 
     const UChar     *src) __INTRODUCED_IN(31);
 
@@ -757,7 +757,7 @@
  * @return A pointer to <code>dst</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strncpy(UChar     *dst, 
      const UChar     *src, 
      int32_t     n) __INTRODUCED_IN(31);
@@ -786,7 +786,7 @@
  * @return A pointer to <code>dest</code>
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memcpy(UChar *dest, const UChar *src, int32_t count) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -801,7 +801,7 @@
  * @return A pointer to <code>dest</code>
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memmove(UChar *dest, const UChar *src, int32_t count) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -817,7 +817,7 @@
  * @return A pointer to <code>dest</code>.
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memset(UChar *dest, UChar c, int32_t count) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -835,7 +835,7 @@
  *      When buf1 > buf2, a positive number is returned.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_memcmp(const UChar *buf1, const UChar *buf2, int32_t count) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -855,7 +855,7 @@
  * in code point order
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_memcmpCodePointOrder(const UChar *s1, const UChar *s2, int32_t count) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -879,7 +879,7 @@
  * @see u_memchr32
  * @see u_strFindFirst
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memchr(const UChar *s, UChar c, int32_t count) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -903,7 +903,7 @@
  * @see u_memchr
  * @see u_strFindFirst
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memchr32(const UChar *s, UChar32 c, int32_t count) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -927,7 +927,7 @@
  * @see u_memrchr32
  * @see u_strFindLast
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memrchr(const UChar *s, UChar c, int32_t count) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -951,7 +951,7 @@
  * @see u_memrchr
  * @see u_strFindLast
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_memrchr32(const UChar *s, UChar32 c, int32_t count) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -979,13 +979,13 @@
  *
  *     U_STRING_DECL(ustringVar1, "Quick-Fox 2", 11);
  *     U_STRING_DECL(ustringVar2, "jumps 5%", 8);
- *     static UBool didInit=FALSE;
+ *     static UBool didInit=false;
  *
  *     int32_t function() {
  *         if(!didInit) {
  *             U_STRING_INIT(ustringVar1, "Quick-Fox 2", 11);
  *             U_STRING_INIT(ustringVar2, "jumps 5%", 8);
- *             didInit=TRUE;
+ *             didInit=true;
  *         }
  *         return u_strcmp(ustringVar1, ustringVar2);
  *     }
@@ -1063,7 +1063,7 @@
  *         only some of the result was written to the destination buffer.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strToUpper(UChar *dest, int32_t destCapacity,
              const UChar *src, int32_t srcLength,
              const char *locale,
@@ -1093,7 +1093,7 @@
  *         only some of the result was written to the destination buffer.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strToLower(UChar *dest, int32_t destCapacity,
              const UChar *src, int32_t srcLength,
              const char *locale,
@@ -1143,7 +1143,7 @@
  *         only some of the result was written to the destination buffer.
  * @stable ICU 2.1
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strToTitle(UChar *dest, int32_t destCapacity,
              const UChar *src, int32_t srcLength,
              UBreakIterator *titleIter,
@@ -1180,7 +1180,7 @@
  *         only some of the result was written to the destination buffer.
  * @stable ICU 2.0
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 u_strFoldCase(UChar *dest, int32_t destCapacity,
               const UChar *src, int32_t srcLength,
               uint32_t options,
@@ -1217,7 +1217,7 @@
  * @see u_strToUTF8WithSub
  * @see u_strFromUTF8
  */
-U_STABLE char* U_EXPORT2 
+U_CAPI char* U_EXPORT2 
 u_strToUTF8(char *dest,           
             int32_t destCapacity,
             int32_t *pDestLength,
@@ -1251,7 +1251,7 @@
  * @see u_strFromUTF8WithSub
  * @see u_strFromUTF8Lenient
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strFromUTF8(UChar *dest,             
               int32_t destCapacity,
               int32_t *pDestLength,
@@ -1298,7 +1298,7 @@
  * @see u_strFromUTF8WithSub
  * @stable ICU 3.6
  */
-U_STABLE char* U_EXPORT2
+U_CAPI char* U_EXPORT2
 u_strToUTF8WithSub(char *dest,
             int32_t destCapacity,
             int32_t *pDestLength,
@@ -1347,7 +1347,7 @@
  * @see u_strToUTF8WithSub
  * @stable ICU 3.6
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strFromUTF8WithSub(UChar *dest,
               int32_t destCapacity,
               int32_t *pDestLength,
@@ -1411,7 +1411,7 @@
  * @see u_strToUTF8WithSub
  * @stable ICU 3.6
  */
-U_STABLE UChar * U_EXPORT2
+U_CAPI UChar * U_EXPORT2
 u_strFromUTF8Lenient(UChar *dest,
                      int32_t destCapacity,
                      int32_t *pDestLength,
@@ -1445,7 +1445,7 @@
  * @see u_strFromUTF32
  * @stable ICU 2.0
  */
-U_STABLE UChar32* U_EXPORT2 
+U_CAPI UChar32* U_EXPORT2 
 u_strToUTF32(UChar32 *dest, 
              int32_t  destCapacity,
              int32_t  *pDestLength,
@@ -1479,7 +1479,7 @@
  * @see u_strToUTF32
  * @stable ICU 2.0
  */
-U_STABLE UChar* U_EXPORT2 
+U_CAPI UChar* U_EXPORT2 
 u_strFromUTF32(UChar   *dest,
                int32_t destCapacity, 
                int32_t *pDestLength,
@@ -1526,7 +1526,7 @@
  * @see u_strFromUTF32WithSub
  * @stable ICU 4.2
  */
-U_STABLE UChar32* U_EXPORT2
+U_CAPI UChar32* U_EXPORT2
 u_strToUTF32WithSub(UChar32 *dest,
              int32_t destCapacity,
              int32_t *pDestLength,
@@ -1574,7 +1574,7 @@
  * @see u_strToUTF32WithSub
  * @stable ICU 4.2
  */
-U_STABLE UChar* U_EXPORT2
+U_CAPI UChar* U_EXPORT2
 u_strFromUTF32WithSub(UChar *dest,
                int32_t destCapacity,
                int32_t *pDestLength,
diff --git a/libicu/ndk_headers/unicode/utext.h b/libicu/ndk_headers/unicode/utext.h
index f9763ce..41b2c98 100644
--- a/libicu/ndk_headers/unicode/utext.h
+++ b/libicu/ndk_headers/unicode/utext.h
@@ -182,7 +182,7 @@
   *
   * @stable ICU 3.4
   */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_close(UText *ut) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -210,7 +210,7 @@
  *               will always be used and returned.
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openUTF8(UText *ut, const char *s, int64_t length, UErrorCode *status) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -232,7 +232,7 @@
  *               will always be used and returned.
  * @stable ICU 3.4
  */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_openUChars(UText *ut, const UChar *s, int64_t length, UErrorCode *status) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -285,7 +285,7 @@
   *  shallow clones provide some protection against errors of this type by
   *  disabling text modification via the cloned UText.
   *
-  *  A shallow clone made with the readOnly parameter == FALSE will preserve the 
+  *  A shallow clone made with the readOnly parameter == false will preserve the 
   *  utext_isWritable() state of the source object.  Note, however, that
   *  write operations must be avoided while more than one UText exists that refer
   *  to the same underlying text.
@@ -301,8 +301,8 @@
   *                If non-NULL, must refer to an already existing UText, which will then
   *                be reset to become the clone.
   *  @param src    The UText to be cloned.
-  *  @param deep   TRUE to request a deep clone, FALSE for a shallow clone.
-  *  @param readOnly TRUE to request that the cloned UText have read only access to the 
+  *  @param deep   true to request a deep clone, false for a shallow clone.
+  *  @param readOnly true to request that the cloned UText have read only access to the 
   *                underlying text.  
 
   *  @param status Errors are returned here.  For deep clones, U_UNSUPPORTED_ERROR
@@ -311,7 +311,7 @@
   *  @return       The newly created clone, or NULL if the clone operation failed.
   *  @stable ICU 3.4
   */
-U_STABLE UText * U_EXPORT2
+U_CAPI UText * U_EXPORT2
 utext_clone(UText *dest, const UText *src, UBool deep, UBool readOnly, UErrorCode *status) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -323,14 +323,14 @@
   *  Compare two UText objects for equality.
   *  UTexts are equal if they are iterating over the same text, and
   *    have the same iteration position within the text.
-  *    If either or both of the parameters are NULL, the comparison is FALSE.
+  *    If either or both of the parameters are NULL, the comparison is false.
   *
   *  @param a   The first of the two UTexts to compare.
   *  @param b   The other UText to be compared.
-  *  @return    TRUE if the two UTexts are equal.
+  *  @return    true if the two UTexts are equal.
   *  @stable ICU 3.6
   */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 utext_equals(const UText *a, const UText *b) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -355,7 +355,7 @@
   *
   * @stable ICU 3.4
   */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 utext_nativeLength(UText *ut) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -389,7 +389,7 @@
  * @return the code point at the specified index.
  * @stable ICU 3.4
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_char32At(UText *ut, int64_t nativeIndex) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -407,7 +407,7 @@
  * @return the Unicode code point at the current iterator position.
  * @stable ICU 3.4
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_current32(UText *ut) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -433,7 +433,7 @@
  * @see UTEXT_NEXT32
  * @stable ICU 3.4
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_next32(UText *ut) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -458,7 +458,7 @@
  *  @see UTEXT_PREVIOUS32
  *  @stable ICU 3.4
  */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_previous32(UText *ut) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -484,7 +484,7 @@
   *         or U_SENTINEL (-1) if it is out of bounds.
   * @stable ICU 3.4
   */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_next32From(UText *ut, int64_t nativeIndex) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -508,7 +508,7 @@
   *
   * @stable ICU 3.4
   */
-U_STABLE UChar32 U_EXPORT2
+U_CAPI UChar32 U_EXPORT2
 utext_previous32From(UText *ut, int64_t nativeIndex) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -527,7 +527,7 @@
   * @return the current index position, in the native units of the text provider.
   * @stable ICU 3.4
   */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 utext_getNativeIndex(const UText *ut) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -557,7 +557,7 @@
  * @param nativeIndex the native unit index of the new iteration position.
  * @stable ICU 3.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 utext_setNativeIndex(UText *ut, int64_t nativeIndex) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -576,11 +576,11 @@
  *
  * @param ut the text to be accessed.
  * @param delta the signed number of code points to move the iteration position.
- * @return TRUE if the position could be moved the requested number of positions while
+ * @return true if the position could be moved the requested number of positions while
  *              staying within the range [0 - text length].
  * @stable ICU 3.4
  */
-U_STABLE UBool U_EXPORT2
+U_CAPI UBool U_EXPORT2
 utext_moveIndex32(UText *ut, int32_t delta) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -607,7 +607,7 @@
  *         or zero if the current position is at the start of the text.
  * @stable ICU 3.6
  */
-U_STABLE int64_t U_EXPORT2
+U_CAPI int64_t U_EXPORT2
 utext_getPreviousNativeIndex(UText *ut); 
 
 
@@ -647,7 +647,7 @@
  *
  * @stable ICU 3.4
  */
-U_STABLE int32_t U_EXPORT2
+U_CAPI int32_t U_EXPORT2
 utext_extract(UText *ut,
              int64_t nativeStart, int64_t nativeLimit,
              UChar *dest, int32_t destCapacity,
diff --git a/libicu/ndk_headers/unicode/utf.h b/libicu/ndk_headers/unicode/utf.h
index ef51299..c9d5f57 100644
--- a/libicu/ndk_headers/unicode/utf.h
+++ b/libicu/ndk_headers/unicode/utf.h
@@ -103,7 +103,7 @@
  * code point values (0..U+10ffff). They are indicated with negative values instead.
  *
  * For more information see the ICU User Guide Strings chapter
- * (http://userguide.icu-project.org/strings).
+ * (https://unicode-org.github.io/icu/userguide/strings).
  *
  * <em>Usage:</em>
  * ICU coding guidelines for if() statements should be followed when using these macros.
@@ -124,7 +124,7 @@
 /**
  * Is this code point a Unicode noncharacter?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_UNICODE_NONCHAR(c) \
@@ -145,7 +145,7 @@
  * and that boundary is tested first for performance.
  *
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_UNICODE_CHAR(c) \
@@ -155,7 +155,7 @@
 /**
  * Is this code point a BMP code point (U+0000..U+ffff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.8
  */
 #define U_IS_BMP(c) ((uint32_t)(c)<=0xffff)
@@ -163,7 +163,7 @@
 /**
  * Is this code point a supplementary code point (U+10000..U+10ffff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.8
  */
 #define U_IS_SUPPLEMENTARY(c) ((uint32_t)((c)-0x10000)<=0xfffff)
@@ -171,7 +171,7 @@
 /**
  * Is this code point a lead surrogate (U+d800..U+dbff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_LEAD(c) (((c)&0xfffffc00)==0xd800)
@@ -179,7 +179,7 @@
 /**
  * Is this code point a trail surrogate (U+dc00..U+dfff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_TRAIL(c) (((c)&0xfffffc00)==0xdc00)
@@ -187,7 +187,7 @@
 /**
  * Is this code point a surrogate (U+d800..U+dfff)?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_SURROGATE(c) (((c)&0xfffff800)==0xd800)
@@ -196,7 +196,7 @@
  * Assuming c is a surrogate code point (U_IS_SURROGATE(c)),
  * is it a lead surrogate?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U_IS_SURROGATE_LEAD(c) (((c)&0x400)==0)
@@ -205,7 +205,7 @@
  * Assuming c is a surrogate code point (U_IS_SURROGATE(c)),
  * is it a trail surrogate?
  * @param c 32-bit code point
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 4.2
  */
 #define U_IS_SURROGATE_TRAIL(c) (((c)&0x400)!=0)
diff --git a/libicu/ndk_headers/unicode/utf16.h b/libicu/ndk_headers/unicode/utf16.h
index 9fd7d5c..3902c60 100644
--- a/libicu/ndk_headers/unicode/utf16.h
+++ b/libicu/ndk_headers/unicode/utf16.h
@@ -23,7 +23,7 @@
  * This file defines macros to deal with 16-bit Unicode (UTF-16) code units and strings.
  *
  * For more information see utf.h and the ICU User Guide Strings chapter
- * (http://userguide.icu-project.org/strings).
+ * (https://unicode-org.github.io/icu/userguide/strings).
  *
  * <em>Usage:</em>
  * ICU coding guidelines for if() statements should be followed when using these macros.
@@ -34,6 +34,7 @@
 #ifndef __UTF16_H__
 #define __UTF16_H__
 
+#include <stdbool.h>
 #include "unicode/umachine.h"
 #ifndef __UTF_H__
 #   include "unicode/utf.h"
@@ -44,7 +45,7 @@
 /**
  * Does this code unit alone encode a code point (BMP, not a surrogate)?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_SINGLE(c) !U_IS_SURROGATE(c)
@@ -52,7 +53,7 @@
 /**
  * Is this code unit a lead surrogate (U+d800..U+dbff)?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_LEAD(c) (((c)&0xfffffc00)==0xd800)
@@ -60,7 +61,7 @@
 /**
  * Is this code unit a trail surrogate (U+dc00..U+dfff)?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_TRAIL(c) (((c)&0xfffffc00)==0xdc00)
@@ -68,7 +69,7 @@
 /**
  * Is this code unit a surrogate (U+d800..U+dfff)?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_SURROGATE(c) U_IS_SURROGATE(c)
@@ -77,7 +78,7 @@
  * Assuming c is a surrogate code point (U16_IS_SURROGATE(c)),
  * is it a lead surrogate?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U16_IS_SURROGATE_LEAD(c) (((c)&0x400)==0)
@@ -86,7 +87,7 @@
  * Assuming c is a surrogate code point (U16_IS_SURROGATE(c)),
  * is it a trail surrogate?
  * @param c 16-bit code unit
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 4.2
  */
 #define U16_IS_SURROGATE_TRAIL(c) (((c)&0x400)!=0)
@@ -379,13 +380,13 @@
  * "Safe" macro, checks for a valid code point.
  * If a surrogate pair is written, checks for sufficient space in the string.
  * If the code point is not valid or a trail surrogate does not fit,
- * then isError is set to TRUE.
+ * then isError is set to true.
  *
  * @param s const UChar * string buffer
  * @param i string offset, must be i<capacity
  * @param capacity size of the string buffer
  * @param c code point to append
- * @param isError output UBool set to TRUE if an error occurs, otherwise not modified
+ * @param isError output UBool set to true if an error occurs, otherwise not modified
  * @see U16_APPEND_UNSAFE
  * @stable ICU 2.4
  */
@@ -396,7 +397,7 @@
         (s)[(i)++]=(uint16_t)(((c)>>10)+0xd7c0); \
         (s)[(i)++]=(uint16_t)(((c)&0x3ff)|0xdc00); \
     } else /* c>0x10ffff or not enough space */ { \
-        (isError)=TRUE; \
+        (isError)=true; \
     } \
 } UPRV_BLOCK_MACRO_END
 
diff --git a/libicu/ndk_headers/unicode/utf8.h b/libicu/ndk_headers/unicode/utf8.h
index c622051..8c492e0 100644
--- a/libicu/ndk_headers/unicode/utf8.h
+++ b/libicu/ndk_headers/unicode/utf8.h
@@ -23,7 +23,7 @@
  * This file defines macros to deal with 8-bit Unicode (UTF-8) code units (bytes) and strings.
  *
  * For more information see utf.h and the ICU User Guide Strings chapter
- * (http://userguide.icu-project.org/strings).
+ * (https://unicode-org.github.io/icu/userguide/strings).
  *
  * <em>Usage:</em>
  * ICU coding guidelines for if() statements should be followed when using these macros.
@@ -34,6 +34,7 @@
 #ifndef __UTF8_H__
 #define __UTF8_H__
 
+#include <stdbool.h>
 #include "unicode/umachine.h"
 #ifndef __UTF_H__
 #   include "unicode/utf.h"
@@ -126,7 +127,7 @@
 /**
  * Does this code unit (byte) encode a code point by itself (US-ASCII 0..0x7f)?
  * @param c 8-bit code unit (byte)
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U8_IS_SINGLE(c) (((c)&0x80)==0)
@@ -134,7 +135,7 @@
 /**
  * Is this code unit (byte) a UTF-8 lead byte? (0xC2..0xF4)
  * @param c 8-bit code unit (byte)
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U8_IS_LEAD(c) ((uint8_t)((c)-0xc2)<=0x32)
@@ -143,7 +144,7 @@
 /**
  * Is this code unit (byte) a UTF-8 trail byte? (0x80..0xBF)
  * @param c 8-bit code unit (byte)
- * @return TRUE or FALSE
+ * @return true or false
  * @stable ICU 2.4
  */
 #define U8_IS_TRAIL(c) ((int8_t)(c)<-0x40)
@@ -405,13 +406,13 @@
  * "Safe" macro, checks for a valid code point.
  * If a non-ASCII code point is written, checks for sufficient space in the string.
  * If the code point is not valid or trail bytes do not fit,
- * then isError is set to TRUE.
+ * then isError is set to true.
  *
  * @param s const uint8_t * string buffer
  * @param i int32_t string offset, must be i<capacity
  * @param capacity int32_t size of the string buffer
  * @param c UChar32 code point to append
- * @param isError output UBool set to TRUE if an error occurs, otherwise not modified
+ * @param isError output UBool set to true if an error occurs, otherwise not modified
  * @see U8_APPEND_UNSAFE
  * @stable ICU 2.4
  */
@@ -432,7 +433,7 @@
         (s)[(i)++]=(uint8_t)(((__uc>>6)&0x3f)|0x80); \
         (s)[(i)++]=(uint8_t)((__uc&0x3f)|0x80); \
     } else { \
-        (isError)=TRUE; \
+        (isError)=true; \
     } \
 } UPRV_BLOCK_MACRO_END
 
diff --git a/libicu/ndk_headers/unicode/utf_old.h b/libicu/ndk_headers/unicode/utf_old.h
index b2428e6..160f5ad 100644
--- a/libicu/ndk_headers/unicode/utf_old.h
+++ b/libicu/ndk_headers/unicode/utf_old.h
@@ -109,7 +109,7 @@
  * Where such a distinction is useful, there are two versions of the macros, "unsafe" and "safe"
  * ones with ..._UNSAFE and ..._SAFE suffixes. The unsafe macros are fast but may cause
  * program failures if the strings are not well-formed. The safe macros have an additional, boolean
- * parameter "strict". If strict is FALSE, then only illegal sequences are detected.
+ * parameter "strict". If strict is false, then only illegal sequences are detected.
  * Otherwise, irregular sequences and non-characters are detected as well (like single surrogates).
  * Safe macros return special error code points for illegal/irregular sequences:
  * Typically, U+ffff, or values that would result in a code unit sequence of the same length
@@ -181,7 +181,7 @@
 
 /**
  * The default choice for general Unicode string macros is to use the ..._SAFE macro implementations
- * with strict=FALSE.
+ * with strict=false.
  *
  * @deprecated ICU 2.4. Obsolete, see utf_old.h.
  */
diff --git a/libicu/ndk_headers/unicode/utypes.h b/libicu/ndk_headers/unicode/utypes.h
index df995a8..14d3a06 100644
--- a/libicu/ndk_headers/unicode/utypes.h
+++ b/libicu/ndk_headers/unicode/utypes.h
@@ -479,13 +479,23 @@
     U_COLLATOR_VERSION_MISMATCH = 28,   /**< Collator version is not compatible with the base version */
     U_USELESS_COLLATOR_ERROR  = 29,     /**< Collator is options only and no base is specified */
     U_NO_WRITE_PERMISSION     = 30,     /**< Attempt to modify read-only or constant data. */
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * The input is impractically long for an operation.
+     * It is rejected because it may lead to problems such as excessive
+     * processing time, stack depth, or heap memory requirements.
+     *
+     * @draft ICU 68
+     */
+    U_INPUT_TOO_LONG_ERROR = 31,
+#endif  // U_HIDE_DRAFT_API
 
 #ifndef U_HIDE_DEPRECATED_API
     /**
      * One more than the highest standard error code.
      * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
      */
-    U_STANDARD_ERROR_LIMIT,
+    U_STANDARD_ERROR_LIMIT = 32,
 #endif  // U_HIDE_DEPRECATED_API
 
     /*
@@ -717,7 +727,7 @@
  * in the UErrorCode enum above.
  * @stable ICU 2.0
  */
-U_STABLE const char * U_EXPORT2
+U_CAPI const char * U_EXPORT2
 u_errorName(UErrorCode code) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
diff --git a/libicu/ndk_headers/unicode/uvernum.h b/libicu/ndk_headers/unicode/uvernum.h
index c66776d..a46481a 100644
--- a/libicu/ndk_headers/unicode/uvernum.h
+++ b/libicu/ndk_headers/unicode/uvernum.h
@@ -60,13 +60,13 @@
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.4
  */
-#define U_ICU_VERSION_MAJOR_NUM 67
+#define U_ICU_VERSION_MAJOR_NUM 68
 
 /** The current ICU minor version as an integer.
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.6
  */
-#define U_ICU_VERSION_MINOR_NUM 1
+#define U_ICU_VERSION_MINOR_NUM 2
 
 /** The current ICU patchlevel version as an integer.
  *  This value will change in the subsequent releases of ICU
@@ -86,7 +86,7 @@
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.6
  */
-#define U_ICU_VERSION_SUFFIX _67
+#define U_ICU_VERSION_SUFFIX _68
 
 /**
  * \def U_DEF2_ICU_ENTRY_POINT_RENAME
@@ -139,7 +139,7 @@
  *  This value will change in the subsequent releases of ICU
  *  @stable ICU 2.4
  */
-#define U_ICU_VERSION "67.1"
+#define U_ICU_VERSION "68.2"
 
 /**
  * The current ICU library major version number as a string, for library name suffixes.
@@ -148,17 +148,17 @@
  * Until ICU 4.8, this was the combination of the single-digit major and minor ICU version numbers
  * into one string without dots ("48").
  * Since ICU 49, it is the double-digit major ICU version number.
- * See http://userguide.icu-project.org/design#TOC-Version-Numbers-in-ICU
+ * See https://unicode-org.github.io/icu/userguide/design#version-numbers-in-icu
  *
  * @stable ICU 2.6
  */
-#define U_ICU_VERSION_SHORT "67"
+#define U_ICU_VERSION_SHORT "68"
 
 #ifndef U_HIDE_INTERNAL_API
 /** Data version in ICU4C.
  * @internal ICU 4.4 Internal Use Only
  **/
-#define U_ICU_DATA_VERSION "67.1"
+#define U_ICU_DATA_VERSION "68.2"
 #endif  /* U_HIDE_INTERNAL_API */
 
 /*===========================================================================
diff --git a/libicu/ndk_headers/unicode/uversion.h b/libicu/ndk_headers/unicode/uversion.h
index 89ad056..7f88660 100644
--- a/libicu/ndk_headers/unicode/uversion.h
+++ b/libicu/ndk_headers/unicode/uversion.h
@@ -149,7 +149,7 @@
  *                      The buffer size must be at least U_MAX_VERSION_STRING_LENGTH.
  * @stable ICU 2.4
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_versionToString(const UVersionInfo versionArray, char *versionString) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
@@ -164,7 +164,7 @@
  * @param versionArray the version # information, the result will be filled in
  * @stable ICU 2.0
  */
-U_STABLE void U_EXPORT2
+U_CAPI void U_EXPORT2
 u_getVersion(UVersionInfo versionArray) __INTRODUCED_IN(31);
 
 #endif // !defined(__ANDROID__) || __ANDROID_API__ >= 31
diff --git a/tools/cldr/cldr-to-icu/.gitignore b/tools/cldr/.gitignore
similarity index 88%
rename from tools/cldr/cldr-to-icu/.gitignore
rename to tools/cldr/.gitignore
index 8d31dd9..ed5b154 100644
--- a/tools/cldr/cldr-to-icu/.gitignore
+++ b/tools/cldr/.gitignore
@@ -3,5 +3,5 @@
 !/lib/README.txt
 
 # Ignore the default Maven target directory.
-/target
+/cldr-to-icu/target
 
diff --git a/tools/cldr/README.md b/tools/cldr/README.md
new file mode 100644
index 0000000..2117c58
--- /dev/null
+++ b/tools/cldr/README.md
@@ -0,0 +1,19 @@
+<!--- © 2020 and later: Unicode, Inc. and others. ---> 
+<!--- License & terms of use: http://www.unicode.org/copyright.html --->
+
+# Tools and build scripts for updating data originating from CLDR
+
+## CLDR test data
+
+The ant [build.xml](build.xml) file takes care of copying some CLDR
+test data directories to both the ICU4C and ICU4J source trees. To add
+more directories to the list, modify the `cldrTestData` fileset.
+
+## cldr-to-icu
+
+The cldr-to-icu directory contains tools to convert from CLDR's XML
+data to ICU resource files.
+
+See [cldr-to-icu/README.txt](cldr-to-icu/README.txt) and
+[cldr-icu-readme.txt](../../icu4c/source/data/cldr-icu-readme.txt) for
+more information.
diff --git a/tools/cldr/build.xml b/tools/cldr/build.xml
new file mode 100644
index 0000000..de2cdc6
--- /dev/null
+++ b/tools/cldr/build.xml
@@ -0,0 +1,79 @@
+<!-- © 2020 and later: Unicode, Inc. and others.
+     License & terms of use: http://www.unicode.org/copyright.html -->
+
+<!-- This build file is intended to become the single mechanism for working with CLDR
+     code and data when building ICU data.
+     
+     Eventually it will encompass:
+     * Building ICU data form CLDR data via cldr-to-icu.
+     * Building the CLDR libraries needed to support ICU data conversion.
+     * Copying CLDR test data for ICU regression tests.
+
+     It's not complete yet, so for now follow the instructions in:
+       icu4c/source/data/cldr-icu-readme.txt
+     -->
+
+<!-- Using the directory of this build.xml file as ${basedir}. -->
+<project name="CLDR" basedir=".">
+
+    <!-- Initialize any properties not already set on the command line. -->
+    <target name="init-args">
+        <property environment="env"/>
+        <!-- Inherit properties from environment variable unless specified. As usual
+             with Ant, this is messier than it should be. All we are saying here is:
+             "Use the property if explicitly set, otherwise use the environment variable."
+             We cannot just set the property to the environment variable, since expansion
+             fails for non existant properties, and you are left with a literal value of
+             "${env.CLDR_DIR}". -->
+        <condition property="cldrDir" value="${env.CLDR_DIR}">
+            <isset property="env.CLDR_DIR"/>
+        </condition>
+        <fail unless="cldrDir"
+             message="Set the CLDR_DIR environment variable (or cldrDir property) to the top level CLDR source directory (containing 'common')."/>
+        <property name="testDataDir4C" value="${basedir}/../../icu4c/source/test/testdata/cldr"/>
+        <property name="testDataDir4J" value="${basedir}/../../icu4j/main/tests/core/src/com/ibm/icu/dev/data/cldr"/>
+    </target>
+
+    <!-- Copies CLDR test data directories, after deleting previous
+         contents to prevent inconsistent state. -->
+    <target name="copy-cldr-testdata" depends="init-args, clean-cldr-testdata">
+        <!-- CLDR test data directories to be copied into ICU. -->
+        <fileset id="cldrTestData" dir="${cldrDir}/common/testData">
+            <!-- Add directories here to control which test data is installed. -->
+            <include name="units/**"/> <!-- Used in UnitsTest tests -->
+        </fileset>
+
+        <copy todir="${testDataDir4C}">
+            <fileset refid="cldrTestData"/>
+        </copy>
+        <copy todir="${testDataDir4J}">
+            <fileset refid="cldrTestData"/>
+        </copy>
+    </target>
+
+    <!-- Deletes CLDR test data -->
+    <target name="clean-cldr-testdata" depends="init-args">
+        <delete dir="${testDataDir4C}"/>
+        <delete dir="${testDataDir4J}"/>
+    </target>
+
+    <!-- Builds the ICU data, using the Ant build file in the cldr-to-icu directory and passing.
+         through any specified arguments for controlling the build. If you need more control when
+         building ICU data (such as incrementally building parts of the data), you should use the
+         build-icu-data.xml file directly. -->
+    <target name="build-icu-data">
+        <ant dir="cldr-to-icu" antfile="build-icu-data.xml" target="all" inheritAll="true"/>
+    </target>
+
+    <!-- Deletes generated ICU data by invoking "clean" in cldr-to-icu/build-icu-data.xml -->
+    <target name="clean-icu-data">
+        <ant dir="cldr-to-icu" antfile="build-icu-data.xml" target="clean" inheritAll="true"/>
+    </target>
+
+    <!-- Installs the CLDR library dependencies needed for building ICU data. -->
+    <target name="install-cldr-libs" depends="init-args">
+        <exec dir="lib" executable="install-cldr-jars.sh" resolveexecutable="true" failonerror="true">
+            <arg line="${cldrDir}"/>
+        </exec>
+    </target>
+</project>
diff --git a/tools/cldr/cldr-to-icu/README.txt b/tools/cldr/cldr-to-icu/README.txt
index ec9ce25..2329dd4 100644
--- a/tools/cldr/cldr-to-icu/README.txt
+++ b/tools/cldr/cldr-to-icu/README.txt
@@ -16,20 +16,23 @@
 Important directories
 ---------------------
 
-CLDR_ROOT = The top-level direcetory for the CLDR project, containing CLDR
-            code and non-production data. Usually obtained from:
-            https://github.com/unicode-org/cldr
+TOOLS_ROOT: Path to root of ICU tools directory, below which are (e.g.) the
+            cldr/ and unicodetools/ directories.
 
-CLDR_DIR  = The top-level directory for the CLDR production data (typically
-            the "production" directory in the staging repository). Usually
-            obtained from:
-            https://github.com/unicode-org/cldr-staging/tree/master/production
+CLDR_DIR:   This is the path to the to root of standard CLDR sources, below
+            which are the common/ and tools/ directories.
+
+CLDR_DATA_DIR: The top-level directory for the CLDR production data (typically
+               the "production" directory in the staging repository). Usually
+               generated locally or obtained from:
+               https://github.com/unicode-org/cldr-staging/tree/master/production
 
 In Posix systems, it's best to set these as exported shell variables, and any
 following instructions assume they have been set accordingly:
 
-$ export CLDR_ROOT=/path/to/cldr
-$ export CLDR_DIR=/path/to/cldr-staging/production
+$ export TOOLS_ROOT=/path/to/icu/tools
+$ export CLDR_DIR=/path/to/cldr
+$ export CLDR_DATA_DIR=/path/to/cldr-staging/production
 
 Note that you should not attempt to use data from the CLDR project directory
 (where the CLDR API code exists) for conversion into ICU data. The process now
@@ -47,18 +50,18 @@
 
 $ sudo apt-get install maven ant
 
-You also need to install two additional CLDR JAR files in a local Maven
-repository, which can be achieved by either running:
+You must also install an additional CLDR JAR file the local Maven repository at
+$TOOLS_ROOT/cldr/lib (see the README.txt in that directory for more
+information).
 
-$ install-cldr-jars.sh "$CLDR_ROOT"
+$ cd "$TOOLS_ROOT/cldr/lib"
+$ ./install-cldr-jars.sh "$CLDR_DIR"
 
-from this directory, or following the instructions in lib/README.txt. This
-step must be repeated if you update the code in the CLDR project you are
-using, or are using multiple versions of the CLDR code during development.
 
 Generating all ICU data
 -----------------------
 
+$ cd "$TOOLS_ROOT/cldr/cldr-to-icu"
 $ ant -f build-icu-data.xml
 
 
@@ -89,7 +92,7 @@
 Running unit tests
 ------------------
 
-$ mvn test -DCLDR_DIR="$CLDR_DIR"
+$ mvn test -DCLDR_DIR="$CLDR_DATA_DIR"
 
 
 Importing and running from an IDE
diff --git a/tools/cldr/cldr-to-icu/build-icu-data.xml b/tools/cldr/cldr-to-icu/build-icu-data.xml
index 46a12fa..22fcdea 100644
--- a/tools/cldr/cldr-to-icu/build-icu-data.xml
+++ b/tools/cldr/cldr-to-icu/build-icu-data.xml
@@ -2,6 +2,9 @@
      License & terms of use: http://www.unicode.org/copyright.html -->
 
 <!--================================================================================
+    Setup:
+    Follow the installation instructions in README.txt in this directory.
+
     To build ICU data files:
     1: Determine the CLDR base directory and set the CLDR_DIR environment variable.
     2: Determine the flags required (see the list of properties below).
@@ -17,18 +20,23 @@
     <!-- Initialize the properties which were not already set on the command line. -->
     <target name="init-args">
         <property environment="env"/>
-        <condition property="hascldrdir" >
-            <isset property="env.CLDR_DIR" />
+        <!-- Inherit properties from environment variable unless specified. As usual
+             with Ant, this is messier than it should be. All we are saying here is:
+             "Use the property if explicitly set, otherwise use the environment variable."
+             We cannot just set the property to the environment variable, since expansion
+             fails for non existant properties, and you are left with a literal value of
+             "${env.CLDR_DATA_DIR}". -->
+        <condition property="cldrDataDir" value="${env.CLDR_DATA_DIR}">
+            <isset property="env.CLDR_DATA_DIR"/>
         </condition>
-        <fail unless="hascldrdir"
-              message="Please set the CLDR_DIR environment variable to the top level CLDR source dir (containing 'common')."/>
+        <fail unless="cldrDataDir"
+              message="Set the CLDR_DATA_DIR environment variable (or cldrDataDir property) to the CLDR data directory (typically ending in '/production')"/>
 
-        <!-- The base directory of the CLDR release from which CLDR data is obtained. For
-             legacy reasons, this must also match an environment variable called CLDR_DIR,
-             which is read here, so it is best to set this via the environment variable for
-             now. -->
-        <!-- TODO: Update this when the CLDR_DIR environment variable is no longer needed. -->
-        <property name="cldrDir" value="${env.CLDR_DIR}"/>
+        <!-- Ant does not inherit this from the user's environment (and it can matter).
+             This is only needed because we have to "exec" a new Ant task below. -->
+        <condition property="javaHome" value="${env.JAVA_HOME}">
+            <isset property="env.JAVA_HOME"/>
+        </condition>
 
         <!-- The output directory into which to write the converted ICU data. By default
              this will overwrite (without deletion) the ICU data files in this ICU release,
@@ -38,7 +46,14 @@
         <!-- The directory in which the additional ICU XML data is stored. -->
         <property name="specialsDir" value="${basedir}/../../../icu4c/source/data/xml"/>
 
-        <!-- An override for the CLDR version string to be used in generated data. -->
+        <!-- Default value for ICU version (icuver.txt). Update this for each release. -->
+        <property name="icuVersion" value="68.2.0.0"/>
+
+        <!-- Default value for ICU data version (icuver.txt). Update this for each release. -->
+        <property name="icuDataVersion" value="68.2.0.0"/>
+
+        <!-- An override for the CLDR version string (icuver.txt and others). This will be
+             extracted from the CLDR library used for building the data if not set here. -->
         <property name="cldrVersion" value=""/>
 
         <!-- The minimum draft status for CLDR data to be used in the conversion. See
@@ -80,14 +95,41 @@
     <!-- Build a standalone JAR which is called by Ant (and which avoids needing to mess
          about making Ant know the Maven class-path). -->
     <target name="prepare-jar" depends="init-args">
-        <exec executable="mvn" searchpath="true">
+        <exec executable="mvn" searchpath="true" failonerror="true">
             <arg value="compile"/>
         </exec>
     </target>
 
+    <!-- Somewhat hacky wrapper target which invokes the real conversion task.
+         This is done so we can set the environment variable of the new process and
+         effectively overwrite the CLDR_DIR value. If ever the CLDR library doesn't
+         need to use CLDR_DIR at runtime to find the production data, this can all be
+         removed. -->
+    <target name="convert" depends="init-args, prepare-jar">
+        <exec executable="ant" searchpath="true" failonerror="true">
+            <!-- The CLDR library wants CLDR_DIR set, to the data directory. -->
+            <env key="CLDR_DIR" value="${cldrDataDir}" />
+            <!-- Force inherit JAVA_HOME (this can be important). -->
+            <env key="JAVA_HOME" value="${javaHome}" />
+            <!-- Initial Ant command line with all the "interesting" bit in. -->
+            <arg line="-f build-icu-data.xml convert-impl -DcldrDir=${cldrDataDir}"/>
+            <!-- List all properties in the "convert-impl" task (except cldrDir). -->
+            <arg value="-DoutDir=${outDir}"/>
+            <arg value="-DspecialsDir=${specialsDir}"/>
+            <arg value="-DoutputTypes=${outputTypes}"/>
+            <arg value="-DicuVersion=${icuVersion}"/>
+            <arg value="-DicuDataVersion=${icuDataVersion}"/>
+            <arg value="-DcldrVersion=${cldrVersion}"/>
+            <arg value="-DminDraftStatus=${minDraftStatus}"/>
+            <arg value="-DlocaleIdFilter=${localeIdFilter}"/>
+            <arg value="-DincludePseudoLocales=${includePseudoLocales}"/>
+            <arg value="-DemitReport=${emitReport}"/>
+        </exec>
+    </target>
+
     <!-- Do the actual CLDR data conversion, based on the command line arguments, built in
          default properties and the configuration in the "<convert>" element below. -->
-    <target name="convert" depends="init-args, prepare-jar">
+    <target name="convert-impl">
         <taskdef name="convert" classname="org.unicode.icu.tool.cldrtoicu.ant.ConvertIcuDataTask">
             <classpath>
                 <pathelement path="target/cldr-to-icu-1.0-SNAPSHOT-jar-with-dependencies.jar"/>
@@ -95,6 +137,7 @@
         </taskdef>
         <convert cldrDir="${cldrDir}" outputDir="${outDir}" specialsDir="${specialsDir}"
                  outputTypes="${outputTypes}" cldrVersion="${cldrVersion}"
+                 icuVersion="${icuVersion}" icuDataVersion="${icuDataVersion}"
                  minimalDraftStatus="${minDraftStatus}" localeIdFilter="${localeIdFilter}"
                  includePseudoLocales="${includePseudoLocales}" emitReport="${emitReport}">
 
@@ -122,7 +165,7 @@
                 ca, ccp, ce, ceb, cgg, chr, ckb, cs, cy
 
                 // D
-                da, dav, de, dje, dsb, dua, dyo, dz
+                da, dav, de, dje, doi, dsb, dua, dyo, dz
 
                 // E
                 ebu, ee, el, en, en_NH, en_RH, eo, es, et, eu, ewo
@@ -154,7 +197,7 @@
                 mt, mua, my, mzn
 
                 // N
-                naq, nb, nd, nds, ne, nl, nmg, nn, nnh, no, no_NO, no_NO_NY, nus, nyn
+                naq, nb, nd, ne, nl, nmg, nn, nnh, no, no_NO, no_NO_NY, nus, nyn
 
                 // O
                 om, or, os
@@ -169,7 +212,7 @@
                 rm, rn, ro, rof, ru, rw, rwk
 
                 // S
-                sah, saq, sat, sat_IN, sbp, sd, sd_Deva, sd_PK, se, seh, ses, sg, sh, sh_BA, sh_CS, sh_YU
+                sa, sah, saq, sat, sat_IN, sbp, sd, sd_Deva, sd_PK, se, seh, ses, sg, sh, sh_BA, sh_CS, sh_YU
                 shi, shi_Latn, shi_MA, si, sk, sl, smn, sn, so, sq, sr, sr_BA, sr_CS, sr_Cyrl_CS, sr_Cyrl_YU, sr_Latn
                 sr_Latn_CS, sr_Latn_YU, sr_ME, sr_RS, sr_XK, sr_YU, su, su_ID, sv, sw
 
@@ -235,7 +278,7 @@
                     root,
 
                     // A-B
-                    af, am, ars, ar, as, az, be, bg, bn, bo, bs_Cyrl, bs,
+                    af, am, ars, ar, as, az, be, bg, bn, bo, br, bs_Cyrl, bs,
 
                     // C-F
                     ca, ceb, chr, cs, cy, da, de_AT, de, dsb, dz, ee, el, en,
@@ -251,7 +294,7 @@
                     om, or, pa_IN, pa, pa_Guru, pl, ps, pt,
 
                     // R-T
-                    ro, ru, se, sh_BA, sh_CS, sh, sh_YU, si, sk, sl, smn, sq,
+                    ro, ru, sa, se, sh_BA, sh_CS, sh, sh_YU, si, sk, sl, smn, sq,
                     sr_BA, sr_Cyrl_ME, sr_Latn, sr_ME, sr_RS, sr, sv, sw,
                     ta, te, th, tk, to, tr,
 
@@ -354,12 +397,26 @@
             </classpath>
         </taskdef>
 
+        <!-- If a directory is listed here, then every file in it is assumed to be automatically
+             generated by the conversion tool, unless it is explicitly listed in a <retain> element.
+             The tool then checks every file to determine if it has the expected header present,
+             indiciating that it was automatically generated, before deleting it.
+             
+             If unexpected files are found, the "clean" task will fail without deleting anything
+             (unless'forceDelete' is set to override this). Note that even if 'forceDelete' is set,
+             the files listed explicitly below will never be deleted by this process.
+
+             This two-step approach minimizes the risk that the conversion process will ever
+             accidentally delete a manually maintained file.             
+             -->
         <outputDirectories root="${outDir}" forceDelete="${forceDelete}">
             <dir name="brkitr">
                 <retain path="dictionaries"/>
                 <retain path="rules"/>
             </dir>
             <dir name="coll">
+                <!-- Legacy files whose file names aren't supported for automatic generation.
+                     Simple to maintain manually and unlikely to ever change again. -->
                 <retain path="de__PHONEBOOK.txt"/>
                 <retain path="de_.txt"/>
                 <retain path="es__TRADITIONAL.txt"/>
@@ -369,25 +426,25 @@
             <dir name="lang"/>
             <dir name="locales"/>
             <dir name="misc">
+                <!-- Machine generated files produced by different tools.
+                     Possibly worth moving into the new LDML conversion tool one day. -->
                 <retain path="currencyNumericCodes.txt"/>
-                <retain path="icudata.rc"/>
-                <retain path="icustd.txt"/>
-                <retain path="icuver.txt"/>
-                <retain path="langInfo.txt"/>
                 <retain path="zoneinfo64.txt"/>
-                <!-- This file should be removed before the next release. -->
-                <retain path="miscfiles.mk"/>
+                <!-- Project file (not ICU data), unlikely to ever be auto-generated. -->
+                <retain path="icudata.rc"/>
+                <!-- Small high-level metadata file, stable and easy to maintain manually. -->
+                <retain path="icustd.txt"/>
             </dir>
             <dir name="rbnf"/>
             <dir name="region"/>
             <dir name="translit">
+                <!-- Small, easy to maintain, special case top-level files. -->
                 <retain path="en.txt"/>
                 <retain path="el.txt"/>
-                <!-- This file should be removed before the next release. -->
-                <retain path="trnsfiles.mk"/>
             </dir>
             <dir name="unit"/>
             <dir name="zone">
+                <!-- Manually edited to support TZ database name compatibility. -->
                 <retain path="tzdbNames.txt"/>
             </dir>
         </outputDirectories>
diff --git a/tools/cldr/cldr-to-icu/lib/README.txt b/tools/cldr/cldr-to-icu/lib/README.txt
deleted file mode 100644
index c41c27b..0000000
--- a/tools/cldr/cldr-to-icu/lib/README.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-*********************************************************************
-*** © 2019 and later: Unicode, Inc. and others.                   ***
-*** License & terms of use: http://www.unicode.org/copyright.html ***
-*********************************************************************
-
-What is this directory and why is it empty?
--------------------------------------------
-
-This is the root of a local Maven repository which needs to be populated before the
-code in this project can be executed.
-
-To do this, you need to have a local copy of the CLDR project configured on your
-computer and be able able to build the API jar file and copy an existing utility
-jar file. In the examples below it is assumed that <CLDR_ROOT> references this CLDR
-release.
-
-
-Regenerating the CLDR API jar
------------------------------
-
-To regenerate the CLDR API jar you need to build the "jar" target using the Ant
-build.xml file in the "tools/java" directory of the CLDR project:
-
-$ cd <CLDR_ROOT>/tools/java
-$ ant clean jar
-
-This should result in the cldr.jar file being built into that directory, which can then
-be installed as a Maven dependency as described above.
-
-
-Updating local Maven repository
--------------------------------
-
-To update the local Maven repository (e.g. to install the CLDR jar) then from this
-directory (lib/) you should run:
-
-$ mvn install:install-file \
-  -DgroupId=org.unicode.cldr \
-  -DartifactId=cldr-api \
-  -Dversion=0.1-SNAPSHOT \
-  -Dpackaging=jar \
-  -DgeneratePom=true \
-  -DlocalRepositoryPath=. \
-  -Dfile=<CLDR_ROOT>/tools/java/cldr.jar
-
-And also (for the utility jar):
-
-$ mvn install:install-file \
-  -DgroupId=com.ibm.icu \
-  -DartifactId=icu-utilities \
-  -Dversion=0.1-SNAPSHOT \
-  -Dpackaging=jar \
-  -DgeneratePom=true \
-  -DlocalRepositoryPath=. \
-  -Dfile=<CLDR_ROOT>/tools/java/libs/utilities.jar
-
-And if you have updated one of these libraries then from the main project directory
-(i.e. the parent of this directory) run:
-
-$ mvn dependency:purge-local-repository -DsnapshotsOnly=true
-
-After doing this, you should see something like the following list of files in this
-directory:
-
-README.txt   <-- this file
-org/unicode/cldr/cldr-api/maven-metadata-local.xml
-org/unicode/cldr/cldr-api/0.1-SNAPSHOT/maven-metadata-local.xml
-org/unicode/cldr/cldr-api/0.1-SNAPSHOT/cldr-api-0.1-SNAPSHOT.pom
-org/unicode/cldr/cldr-api/0.1-SNAPSHOT/cldr-api-0.1-SNAPSHOT.jar
-com/ibm/icu/icu-utilities/maven-metadata-local.xml
-com/ibm/icu/icu-utilities/0.1-SNAPSHOT/maven-metadata-local.xml
-com/ibm/icu/icu-utilities/0.1-SNAPSHOT/icu-utilities-0.1-SNAPSHOT.jar
-com/ibm/icu/icu-utilities/0.1-SNAPSHOT/icu-utilities-0.1-SNAPSHOT.pom
-
-Finally, if you choose to update the version number of the snapshot, then remember to
-update the root pom.xml, but this is unlikely to be necessary.
diff --git a/tools/cldr/cldr-to-icu/pom.xml b/tools/cldr/cldr-to-icu/pom.xml
index 40e3083..198095a 100644
--- a/tools/cldr/cldr-to-icu/pom.xml
+++ b/tools/cldr/cldr-to-icu/pom.xml
@@ -8,11 +8,19 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
+    <!-- Include the parent POM file to add the CLDR API dependency. -->
+    <parent>
+        <groupId>org.unicode.icu</groupId>
+        <artifactId>cldr-lib</artifactId>
+        <version>1.0</version>
+        <relativePath>../lib</relativePath>
+    </parent>
+
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
-    <groupId>org.unicode.icu</groupId>
+    <!-- No need for <groupId> here (it's defined by the parent POM). -->
     <artifactId>cldr-to-icu</artifactId>
     <version>1.0-SNAPSHOT</version>
     <build>
@@ -70,32 +78,12 @@
         </plugins>
     </build>
 
-    <!-- This is where the snapshots of the CLDR API and additional auxiliary JAR files are held. -->
-    <repositories>
-        <repository>
-            <id>local-maven-repo</id>
-            <url>file:///${project.basedir}/lib</url>
-        </repository>
-    </repositories>
-
     <dependencies>
-        <!-- Local dependencies (see lib/README.txt). -->
-        <dependency>
-            <groupId>org.unicode.cldr</groupId>
-            <artifactId>cldr-api</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>com.ibm.icu</groupId>
-            <artifactId>icu-utilities</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-
         <!-- ICU4J - which should be kept as up-to-date as possible. -->
         <dependency>
             <groupId>com.ibm.icu</groupId>
             <artifactId>icu4j</artifactId>
-            <version>64.2</version>
+            <version>67.1</version>
         </dependency>
 
         <!-- Useful common libraries. Note that some of the code in the CLDR library is also
@@ -111,7 +99,7 @@
         <dependency>
             <groupId>org.apache.ant</groupId>
             <artifactId>ant</artifactId>
-            <version>1.10.6</version>
+            <version>1.10.9</version>
         </dependency>
 
         <!-- Testing only dependencies. -->
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/DebugWriter.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/DebugWriter.java
new file mode 100644
index 0000000..72994e1
--- /dev/null
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/DebugWriter.java
@@ -0,0 +1,138 @@
+package org.unicode.icu.tool.cldrtoicu;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkState;
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Collection;
+import java.util.function.Function;
+import java.util.logging.Formatter;
+import java.util.logging.LogManager;
+import java.util.logging.LogRecord;
+
+import org.unicode.cldr.api.CldrDataSupplier;
+
+import com.google.common.base.CharMatcher;
+import com.google.common.base.Joiner;
+import com.google.common.collect.ImmutableList;
+import com.google.common.io.CharStreams;
+
+/**
+ * Utility to allow any "mapper" class to trivially support a main method and useful
+ * logging behaviour to help avoid the need for ad-hoc logging via {@code System.out}.
+ *
+ * <p>In most cases a mapping class can just have a {@code main} method like:
+ * <pre>{@code
+ *   // Arguments: <output-dir> [<log-level>]
+ *   public static void main(String[] args) throws IOException {
+ *       DebugWriter.writeForDebugging(args, MapperClass::process);
+ *   }
+ * }</pre>
+ *
+ * <p>Note however that running this still requires that the {@code CLDR_DIR} system
+ * property is set.
+ */
+public final class DebugWriter {
+    private static final String PACKAGE_ROOT = "org.unicode.icu.tool.cldrtoicu";
+    private static final String PACKAGE_PREFIX = PACKAGE_ROOT + ".";
+
+    /**
+     * Writes the IcuData generated by the given function using the default {@code CLDR_DIR}
+     * system property.
+     *
+     * <p>This is a helper method to make it easy for each mapper to have its own main
+     * method for debugging, and it should not be used directly by {@code LdmlConverter}.
+     */
+    public static void writeForDebugging(String[] args, Function<CldrDataSupplier, IcuData> fn)
+            throws IOException {
+        writeMultipleForDebugging(args, src -> ImmutableList.of(fn.apply(src)));
+    }
+
+    /**
+     * Writes the IcuData generated by the given function using the default {@code CLDR_DIR}
+     * system property.
+     *
+     * <p>This is a helper method to make it easy for each mapper to have its own main
+     * method for debugging, and it should not be used directly by {@code LdmlConverter}.
+     */
+    public static void writeMultipleForDebugging(
+            String[] args, Function<CldrDataSupplier, Collection<IcuData>> fn)
+            throws IOException {
+        String cldrPath = System.getProperty("CLDR_DIR", System.getenv("CLDR_DIR"));
+        checkState(cldrPath != null,
+                "required 'CLDR_DIR' system property or environment variable not set");
+        checkArgument(args.length >= 1, "expected output directory");
+        Path outDir = Paths.get(args[0]);
+        String logLevel = (args.length == 2) ? args[1] : "OFF";
+
+        String loggerConfig = Joiner.on("\n").join(
+                "handlers = java.util.logging.ConsoleHandler",
+                "java.util.logging.ConsoleHandler.level     = ALL",
+                "java.util.logging.ConsoleHandler.encoding  = UTF-8",
+                "java.util.logging.ConsoleHandler.formatter = " + LogFormatter.class.getName(),
+                "",
+                PACKAGE_ROOT + ".level  = " + logLevel);
+        LogManager.getLogManager()
+                .readConfiguration(new ByteArrayInputStream(loggerConfig.getBytes(UTF_8)));
+
+        Files.createDirectories(outDir);
+        CldrDataSupplier src = CldrDataSupplier.forCldrFilesIn(Paths.get(cldrPath));
+        ImmutableList<String> header = readLinesFromResource("/ldml2icu_header.txt");
+        for (IcuData icuData : fn.apply(src)) {
+            IcuTextWriter.writeToFile(icuData, outDir, header, true);
+        }
+    }
+
+    private static ImmutableList<String> readLinesFromResource(String name) {
+        try (InputStream in = DebugWriter.class.getResourceAsStream(name)) {
+            return ImmutableList.copyOf(CharStreams.readLines(new InputStreamReader(in, UTF_8)));
+        } catch (IOException e) {
+            throw new RuntimeException("cannot read resource: " + name, e);
+        }
+    }
+
+    // Format is "<localClass>#<plainMethod>: <message>" since this is a fairly
+    // small code base and keeping logs concise is helpful.
+    // This is only public because it has to be reflectively instantiated.
+    public static final class LogFormatter extends Formatter {
+        private static final CharMatcher SEPARATORS = CharMatcher.anyOf("$#");
+
+        @Override
+        public String format(LogRecord logRecord) {
+            String message = String.format("%s#%s: %s\n",
+                    localClassName(logRecord.getSourceClassName()),
+                    plainMethodName(logRecord.getSourceMethodName()),
+                    logRecord.getMessage());
+            if (logRecord.getThrown() != null) {
+                message += logRecord.getThrown() + "\n";
+            }
+            return message;
+        }
+
+        // Since everything is in the same base package, elide that (if present).
+        private String localClassName(String className) {
+            return className.startsWith(PACKAGE_PREFIX)
+                    ? className.substring(className.lastIndexOf(".") + 1)
+                    : className;
+        }
+
+        // Trim method names to remove things like lambda prefixes and anonymous
+        // class suffixes (these add noise to every log and aren't that useful).
+        private String plainMethodName(String methodName) {
+            if (methodName.startsWith("lambda$")) {
+                methodName = methodName.substring("lambda$".length());
+            }
+            if (SEPARATORS.matchesAnyOf(methodName)) {
+                methodName = methodName.substring(0, SEPARATORS.indexIn(methodName));
+            }
+            return methodName;
+        }
+    }
+}
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/IcuConverterConfig.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/IcuConverterConfig.java
index 5b6986b..a99ba70 100644
--- a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/IcuConverterConfig.java
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/IcuConverterConfig.java
@@ -44,6 +44,8 @@
         private Path specialsDir =
             DEFAULT_ICU_DIR.map(d -> d.resolve("icu4c/source/data/xml")).orElse(null);
         private ImmutableSet<OutputType> outputTypes = OutputType.ALL;
+        private Optional<String> icuVersion = Optional.empty();
+        private Optional<String> icuDataVersion = Optional.empty();
         private Optional<String> cldrVersion = Optional.empty();
         private CldrDraftStatus minimumDraftStatus = CldrDraftStatus.CONTRIBUTED;
         private boolean emitReport = false;
@@ -81,6 +83,20 @@
             return this;
         }
 
+        public Builder setIcuVersion(String version) {
+            if (!version.isEmpty()) {
+                this.icuVersion = Optional.of(version);
+            }
+            return this;
+        }
+
+        public Builder setIcuDataVersion(String version) {
+            if (!version.isEmpty()) {
+                this.icuDataVersion = Optional.of(version);
+            }
+            return this;
+        }
+
         public Builder setCldrVersion(String version) {
             if (!version.isEmpty()) {
                 this.cldrVersion = Optional.of(version);
@@ -121,7 +137,7 @@
     private final Path outputDir;
     private final Path specialsDir;
     private final ImmutableSet<OutputType> outputTypes;
-    private final String cldrVersion;
+    private final IcuVersionInfo versionInfo;
     private final CldrDraftStatus minimumDraftStatus;
     private final boolean emitReport;
     private final ImmutableSet<String> allLocaleIds;
@@ -141,8 +157,10 @@
         checkArgument(!this.outputTypes.isEmpty(),
             "must specify at least one output type to be generated (possible values are: %s)",
             Arrays.asList(OutputType.values()));
-        this.cldrVersion =
-            builder.cldrVersion.orElse(CldrDataSupplier.getCldrVersionString());
+        this.versionInfo = new IcuVersionInfo(
+            builder.icuVersion.orElseThrow(() -> new IllegalStateException("missing ICU version")),
+            builder.icuDataVersion.orElseThrow(() -> new IllegalStateException("missing ICU data version")),
+            builder.cldrVersion.orElse(CldrDataSupplier.getCldrVersionString()));
         this.minimumDraftStatus = checkNotNull(builder.minimumDraftStatus);
         this.emitReport = builder.emitReport;
         // getAllLocaleIds() returns the union of all the specified IDs in the map.
@@ -172,8 +190,8 @@
     }
 
     @Override
-    public String getCldrVersion() {
-        return cldrVersion;
+    public IcuVersionInfo getVersionInfo() {
+        return versionInfo;
     }
 
     @Override
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/IcuTextWriter.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/IcuTextWriter.java
index a91ad26..93f2352 100644
--- a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/IcuTextWriter.java
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/IcuTextWriter.java
@@ -2,7 +2,9 @@
 // License & terms of use: http://www.unicode.org/copyright.html
 package org.unicode.icu.tool.cldrtoicu;
 
+import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static java.nio.file.StandardOpenOption.CREATE;
 import static java.nio.file.StandardOpenOption.CREATE_NEW;
 import static java.nio.file.StandardOpenOption.TRUNCATE_EXISTING;
@@ -49,7 +51,7 @@
             Files.createDirectories(outDir);
             Path file = outDir.resolve(icuData.getName() + ".txt");
             OpenOption[] fileOptions = allowOverwrite ? OVERWRITE_FILES : ONLY_NEW_FILES;
-            try (Writer w = Files.newBufferedWriter(file, fileOptions);
+            try (Writer w = Files.newBufferedWriter(file, UTF_8, fileOptions);
                 PrintWriter out = new PrintWriter(w)) {
                 new IcuTextWriter(icuData).writeTo(out, header);
             }
@@ -131,7 +133,7 @@
     }
 
     private void open(String label, PrintWriter out) {
-        newLineAndIndent(out);
+        newLineAndIndent(out, FormatOptions.PATH_FORMAT);
         depth++;
         // This handles the "magic" pseudo indexing paths that are added by RegexTransformer.
         // These take the form of "<any-string>" and are used to ensure that path order can be
@@ -144,14 +146,16 @@
 
     private void close(PrintWriter out) {
         depth--;
-        newLineAndIndent(out);
+        newLineAndIndent(out, FormatOptions.PATH_FORMAT);
         out.print('}');
     }
 
-    private void newLineAndIndent(PrintWriter out) {
+    private void newLineAndIndent(PrintWriter out, FormatOptions format) {
         out.println();
-        for (int i = 0; i < depth; i++) {
-            out.print(INDENT);
+        if (format.shouldIndent) {
+            for (int i = 0; i < depth; i++) {
+                out.print(INDENT);
+            }
         }
     }
 
@@ -168,20 +172,42 @@
         }
     }
 
+    private static final class FormatOptions {
+        // Only the indent flag is used
+        final static FormatOptions PATH_FORMAT = new FormatOptions(true, true, true);
+
+        static FormatOptions forPath(RbPath rbPath) {
+            return new FormatOptions(
+                    !rbPath.isIntPath() && !rbPath.isBinPath(),
+                    !rbPath.endsWith(RB_SEQUENCE) && !rbPath.isBinPath(),
+                    !rbPath.isBinPath());
+        }
+
+        final boolean shouldQuote;
+        final boolean shouldUseComma;
+        final boolean shouldIndent;
+
+        private FormatOptions(boolean shouldQuote, boolean shouldUseComma, boolean shouldIndent) {
+            this.shouldQuote = shouldQuote;
+            this.shouldUseComma = shouldUseComma;
+            this.shouldIndent = shouldIndent;
+        }
+    }
+
     /** Inserts padding and values between braces. */
+    // TODO: Get rid of the need for icuDataName by adding type information to RbPath.
     private boolean appendValues(
-        String name, RbPath rbPath, List<RbValue> values, PrintWriter out) {
+        String icuDataName, RbPath rbPath, List<RbValue> values, PrintWriter out) {
 
         RbValue onlyValue;
         boolean wasSingular = false;
-        boolean quote = !rbPath.isIntPath();
-        boolean isSequence = rbPath.endsWith(RB_SEQUENCE);
-        if (values.size() == 1 && !mustBeArray(true, name, rbPath)) {
+        FormatOptions format = FormatOptions.forPath(rbPath);
+        if (values.size() == 1 && !mustBeArray(true, icuDataName, rbPath)) {
             onlyValue = values.get(0);
-            if (onlyValue.isSingleton() && !mustBeArray(false, name, rbPath)) {
+            if (onlyValue.isSingleton() && !mustBeArray(false, icuDataName, rbPath)) {
                 // Value has a single element and is not being forced to be an array.
                 String onlyElement = Iterables.getOnlyElement(onlyValue.getElements());
-                if (quote) {
+                if (format.shouldQuote) {
                     onlyElement = quoteInside(onlyElement);
                 }
                 // The numbers below are simply tuned to match the line wrapping in the original
@@ -191,7 +217,7 @@
                 int maxWidth = Math.max(68, 80 - Math.min(4, rbPath.length()) * INDENT.length());
                 if (onlyElement.length() <= maxWidth) {
                     // Single element for path: don't add newlines.
-                    printValue(out, onlyElement, quote);
+                    printValue(out, onlyElement, format);
                     wasSingular = true;
                 } else {
                     // Element too long to fit in one line, so wrap.
@@ -199,23 +225,23 @@
                     for (int i = 0; i < onlyElement.length(); i = end) {
                         end = goodBreak(onlyElement, i + maxWidth);
                         String part = onlyElement.substring(i, end);
-                        newLineAndIndent(out);
-                        printValue(out, part, quote);
+                        newLineAndIndent(out, format);
+                        printValue(out, part, format);
                     }
                 }
             } else {
                 // Only one array for the rbPath, so don't add an extra set of braces.
-                printArray(onlyValue, quote, isSequence, out);
+                printElements(out, onlyValue, format);
             }
         } else {
             for (RbValue value : values) {
                 if (value.isSingleton()) {
                     // Single-value array: print normally.
-                    printArray(value, quote, isSequence, out);
+                    printElements(out, value, format);
                 } else {
                     // Enclose this array in braces to separate it from other values.
                     open("", out);
-                    printArray(value, quote, isSequence, out);
+                    printElements(out, value, format);
                     close(out);
                 }
             }
@@ -251,18 +277,32 @@
             || rbPath.startsWith(RB_METAZONE_INFO);
     }
 
-    private void printArray(RbValue rbValue, boolean quote, boolean isSequence, PrintWriter out) {
-        for (String v : rbValue.getElements()) {
-            newLineAndIndent(out);
-            printValue(out, quoteInside(v), quote);
-            if (!isSequence) {
-                out.print(",");
+    private void printElements(PrintWriter out, RbValue rbValue, FormatOptions format) {
+        // TODO: If "shouldUseComma" is made obsolete, just use the "else" block always.
+        if (rbValue.getElementsPerLine() == 1) {
+            for (String v : rbValue.getElements()) {
+                newLineAndIndent(out, format);
+                printValue(out, quoteInside(v), format);
+                if (format.shouldUseComma) {
+                    out.print(",");
+                }
+            }
+        } else {
+            checkArgument(format.shouldUseComma, "cannot group non-sequence values");
+            Iterable<List<String>> partitions =
+                    Iterables.partition(rbValue.getElements(), rbValue.getElementsPerLine());
+            for (List<String> tuple : partitions) {
+                newLineAndIndent(out, format);
+                for (String v : tuple) {
+                    printValue(out, quoteInside(v), format);
+                    out.print(",");
+                }
             }
         }
     }
 
-    private static void printValue(PrintWriter out, String value, boolean quote) {
-        if (quote) {
+    private static void printValue(PrintWriter out, String value, FormatOptions format) {
+        if (format.shouldQuote) {
             out.append('"').append(value).append('"');
         } else {
             out.append(value);
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/LdmlConverter.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/LdmlConverter.java
index 7a5fe8d..0b842dc 100644
--- a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/LdmlConverter.java
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/LdmlConverter.java
@@ -28,15 +28,7 @@
 import java.io.PrintWriter;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.TreeSet;
+import java.util.*;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -47,6 +39,8 @@
 import org.unicode.cldr.api.CldrPath;
 import org.unicode.cldr.api.PathMatcher;
 import org.unicode.icu.tool.cldrtoicu.LdmlConverterConfig.IcuLocaleDir;
+import org.unicode.icu.tool.cldrtoicu.LdmlConverterConfig.IcuVersionInfo;
+import org.unicode.icu.tool.cldrtoicu.localedistance.LocaleDistanceMapper;
 import org.unicode.icu.tool.cldrtoicu.mapper.Bcp47Mapper;
 import org.unicode.icu.tool.cldrtoicu.mapper.BreakIteratorMapper;
 import org.unicode.icu.tool.cldrtoicu.mapper.CollationMapper;
@@ -109,11 +103,16 @@
             "territoryContainment",
             "territoryInfo",
             "timeData",
-            "unitPreferenceData",
             "weekData",
             "weekOfPreference");
     private static final Predicate<CldrPath> CURRENCY_DATA_PATHS =
         supplementalMatcher("currencyData");
+    private static final Predicate<CldrPath> UNITS_DATA_PATHS =
+        supplementalMatcher(
+            "convertUnits",
+            "unitConstants",
+            "unitQuantities",
+            "unitPreferenceData");
     private static final Predicate<CldrPath> NUMBERING_SYSTEMS_PATHS =
         supplementalMatcher("numberingSystems");
     private static final Predicate<CldrPath> WINDOWS_ZONES_PATHS =
@@ -153,6 +152,7 @@
         GENDER_LIST(SUPPLEMENTAL),
         LIKELY_SUBTAGS(SUPPLEMENTAL),
         SUPPLEMENTAL_DATA(SUPPLEMENTAL),
+        UNITS(SUPPLEMENTAL),
         CURRENCY_DATA(SUPPLEMENTAL),
         METADATA(SUPPLEMENTAL),
         META_ZONES(SUPPLEMENTAL),
@@ -161,6 +161,8 @@
         PLURAL_RANGES(SUPPLEMENTAL),
         WINDOWS_ZONES(SUPPLEMENTAL),
         TRANSFORMS(SUPPLEMENTAL),
+        LOCALE_DISTANCE(SUPPLEMENTAL),
+        VERSION(SUPPLEMENTAL),
         KEY_TYPE_DATA(BCP47);
 
         public static final ImmutableSet<OutputType> ALL = ImmutableSet.copyOf(OutputType.values());
@@ -242,7 +244,7 @@
 
     private static ImmutableList<String> readLinesFromResource(String name) {
         try (InputStream in = LdmlConverter.class.getResourceAsStream(name)) {
-            return ImmutableList.copyOf(CharStreams.readLines(new InputStreamReader(in)));
+            return ImmutableList.copyOf(CharStreams.readLines(new InputStreamReader(in, UTF_8)));
         } catch (IOException e) {
             throw new RuntimeException("cannot read resource: " + name, e);
         }
@@ -275,7 +277,7 @@
             return;
         }
 
-        String cldrVersion = config.getCldrVersion();
+        String cldrVersion = config.getVersionInfo().getCldrVersion();
 
         Map<IcuLocaleDir, DependencyGraph> graphMetadata = new HashMap<>();
         splitDirs.forEach(d -> graphMetadata.put(d, new DependencyGraph(cldrVersion)));
@@ -346,7 +348,9 @@
                 });
 
                 if (!splitData.getPaths().isEmpty() || isBaseLanguage || dir.includeEmpty()) {
-                    splitData.setVersion(cldrVersion);
+                    if (id.equals("root")) {
+                        splitData.setVersion(cldrVersion);
+                    }
                     write(splitData, outDir, false);
                     writtenLocaleIds.put(dir, id);
                 }
@@ -472,6 +476,10 @@
                 processSupplemental("supplementalData", SUPPLEMENTAL_DATA_PATHS, "misc", true);
                 break;
 
+            case UNITS:
+                processSupplemental("units", UNITS_DATA_PATHS, "misc", true);
+                break;
+
             case CURRENCY_DATA:
                 processSupplemental("supplementalData", CURRENCY_DATA_PATHS, "curr", false);
                 break;
@@ -496,6 +504,10 @@
                 write(PluralRangesMapper.process(src), "misc");
                 break;
 
+            case LOCALE_DISTANCE:
+                write(LocaleDistanceMapper.process(src), "misc");
+                break;
+
             case WINDOWS_ZONES:
                 processSupplemental("windowsZones", WINDOWS_ZONES_PATHS, "misc", false);
                 break;
@@ -505,6 +517,10 @@
                 write(TransformsMapper.process(src, transformDir, fileHeader), transformDir, false);
                 break;
 
+            case VERSION:
+                writeIcuVersionInfo();
+                break;
+
             case KEY_TYPE_DATA:
                 Bcp47Mapper.process(src).forEach(d -> write(d, "misc"));
                 break;
@@ -525,7 +541,7 @@
         // supplemental data XML files.
         if (addCldrVersion) {
             // Not the same path as used by "setVersion()"
-            icuData.add(RB_CLDR_VERSION, config.getCldrVersion());
+            icuData.add(RB_CLDR_VERSION, config.getVersionInfo().getCldrVersion());
         }
         write(icuData, dir);
     }
@@ -547,11 +563,34 @@
         } else {
             // These empty files only exist because the target of an alias has a parent locale
             // which is itself not in the set of written ICU files. An "indirect alias target".
-            icuData.setVersion(config.getCldrVersion());
+            // No need to add data: Just write a resource bundle with an empty top-level table.
         }
         write(icuData, dir, false);
     }
 
+    private void writeIcuVersionInfo() {
+        IcuVersionInfo versionInfo = config.getVersionInfo();
+        IcuData versionData = new IcuData("icuver", false);
+        versionData.add(RbPath.of("ICUVersion"), versionInfo.getIcuVersion());
+        versionData.add(RbPath.of("DataVersion"), versionInfo.getIcuDataVersion());
+        versionData.add(RbPath.of("CLDRVersion"), versionInfo.getCldrVersion());
+        // Write file via non-helper methods since we need to include a legacy copyright.
+        Path miscDir = config.getOutputDir().resolve("misc");
+        createDirectory(miscDir);
+        ImmutableList<String> versionHeader = ImmutableList.<String>builder()
+            .addAll(fileHeader)
+            .add(
+                "***************************************************************************",
+                "*",
+                "* Copyright (C) 2010-2016 International Business Machines",
+                "* Corporation and others.  All Rights Reserved.",
+                "*",
+                "***************************************************************************")
+            .build();
+        IcuTextWriter.writeToFile(versionData, miscDir, versionHeader, false);
+    }
+
+    // Commonest case for writing data files in "normal" directories.
     private void write(IcuData icuData, String dir) {
         write(icuData, config.getOutputDir().resolve(dir), false);
     }
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/LdmlConverterConfig.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/LdmlConverterConfig.java
index 047f46b..95ee673 100644
--- a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/LdmlConverterConfig.java
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/LdmlConverterConfig.java
@@ -6,11 +6,14 @@
 import java.util.Map;
 import java.util.Set;
 
+import com.google.common.base.Preconditions;
 import org.unicode.cldr.api.CldrDraftStatus;
 import org.unicode.icu.tool.cldrtoicu.LdmlConverter.OutputType;
 
 import com.google.common.base.Ascii;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+
 /** API for configuring the LDML converter. */
 public interface LdmlConverterConfig {
     /** Output directories for ICU locale data (this is not used for supplemental data). */
@@ -57,6 +60,30 @@
         }
     }
 
+    final class IcuVersionInfo {
+        private final String icuVersion;
+        private final String icuDataVersion;
+        private final String cldrVersion;
+
+        public IcuVersionInfo(String icuVersion, String icuDataVersion, String cldrVersion) {
+            this.icuVersion = checkNotNull(icuVersion);
+            this.icuDataVersion = checkNotNull(icuDataVersion);
+            this.cldrVersion = checkNotNull(cldrVersion);
+        }
+
+        public String getIcuVersion() {
+            return icuVersion;
+        }
+
+        public String getIcuDataVersion() {
+            return icuDataVersion;
+        }
+
+        public String getCldrVersion() {
+            return cldrVersion;
+        }
+    }
+
     /**
      * Returns the set of output types to be converted. Use {@link OutputType#ALL} to convert
      * everything.
@@ -80,7 +107,7 @@
      * Returns a CLDR version String (e.g. {@code "36.1"}) according to either the specified option
      * or (as a fallback) the version specified by the CLDR library against which this code is run.
      */
-    String getCldrVersion();
+    IcuVersionInfo getVersionInfo();
 
     /** Returns the minimal draft status for CLDR data to be converted. */
     CldrDraftStatus getMinimumDraftStatus();
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/PseudoLocales.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/PseudoLocales.java
index 36c14e2..886c014 100644
--- a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/PseudoLocales.java
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/PseudoLocales.java
@@ -60,8 +60,20 @@
  */
 // TODO(CLDR-13381): Move this all into the CLDR API once the dust has settled.
 public final class PseudoLocales {
+    // Right-to-left override character.
+    private static final String RLO = "\u202e";
+    // Arabic letter mark character.
+    private static final String ALM = "\u061C";
+    // Pop direction formatting character.
+    private static final String PDF = "\u202c";
+    // Prefix to add before each LTR word.
+    private static final String BIDI_PREFIX = ALM + RLO;
+    // Postfix to add after each LTR word.
+    private static final String BIDI_POSTFIX = PDF + ALM;
+
+    // See getExemplarValue() method for why we don't extract the exemplar list from "en".
     private enum PseudoType {
-        BIDI("ar_XB", PseudoLocales::bidi, "abcdefghijklmnopqrstuvwxyz"),
+        BIDI("ar_XB", PseudoLocales::bidi, "abcdefghijklmnopqrstuvwxyz" + ALM + RLO + PDF),
         EXPAND("en_XA", PseudoLocales::expanding,
             "a\u00e5b\u0180c\u00e7d\u00f0e\u00e9f\u0192g\u011dh\u0125i\u00eej\u0135k\u0137l\u013cm"
                 + "\u0271n\u00f1o\u00f6p\u00feq\u01ebr\u0155s\u0161t\u0163u\u00fbv\u1e7dw\u0175"
@@ -178,9 +190,11 @@
         private static final PathMatcher NUMBERING_SYSTEM =
             ldml("numbers/defaultNumberingSystem");
 
+        private static final PathMatcher GREGORIAN_SHORT_STANDARD_PATTERN =
+            ldml("dates/calendars/calendar[@type=\"gregorian\"]/timeFormats/timeFormatLength[@type=\"short\"]/timeFormat[@type=\"standard\"]/pattern[@type=\"standard\"]");
+
         // These paths were mostly derived from looking at the previous implementation's behaviour
-        // and can be modified as needed. Notably there are no "units" here (but they were also
-        // excluded in the original code).
+        // and can be modified as needed.
         private static final Predicate<CldrPath> IS_PSEUDO_PATH =
             matchAnyLdmlPrefix(
                 "localeDisplayNames",
@@ -191,7 +205,8 @@
                 "listPatterns",
                 "posix/messages",
                 "characterLabels",
-                "typographicNames")
+                "typographicNames",
+                "units")
                 .and(matchAnyLdmlPrefix(
                     "localeDisplayNames/localeDisplayPattern",
                     "dates/timeZoneNames/fallbackFormat")
@@ -271,7 +286,15 @@
             if (IS_NARROW.test(fullPath)) {
                 return defaultReturnValue;
             }
+            // Explicitly return 24 hrs format pattern for the Gregorian short standard pattern
+            // entry to be consistent with the time cycle specified in supplemental.xml for
+            // region 001. 001 is the region the pseudolocales en_XA/ar_XB default to.
+            // This prevents ICU unit test failure.
+            if (GREGORIAN_SHORT_STANDARD_PATTERN.matches(path)) {
+                return CldrValue.parseValue(fullPath, "[H:mm]");
+            }
             String text = createMessage(value.getValue(), IS_PATTERN_PATH.test(path));
+
             return CldrValue.parseValue(fullPath, text);
         }
 
@@ -284,11 +307,25 @@
         private CldrValue getExemplarValue(CldrPath path) {
             StringBuilder exemplarList = new StringBuilder("[");
             type.getExemplars().codePoints()
-                .forEach(cp -> exemplarList.appendCodePoint(cp).append(' '));
+                .forEach(cp -> appendExemplarCodePoint(exemplarList, cp).append(' '));
             exemplarList.setCharAt(exemplarList.length() - 1, ']');
             return CldrValue.parseValue(path.toString(), exemplarList.toString());
         }
 
+        // Append a (possibly escaped) representation of the exemaplar character.
+        private static StringBuilder appendExemplarCodePoint(StringBuilder out, int cp) {
+            // This could be fixed if needed, but for now it's safer to check.
+            checkArgument(
+                Character.isBmpCodePoint(cp),
+                "Only BMP code points are supported for exemplars: 0x%s", Integer.toHexString(cp));
+            if (Character.isAlphabetic(cp)) {
+                out.appendCodePoint(cp);
+            } else {
+                out.append(String.format("\\u%04X", cp));
+            }
+            return out;
+        }
+
         private String createMessage(String text, boolean isPattern) {
             // Pattern text is split by the quoted sections (which are localizable) whereas
             // non-pattern text is split by placeholder (e.g. {0}) which are not localizable.
@@ -372,17 +409,6 @@
 
     // ---- Bidi Pseudo-localizer (e.g. "November" --> "rebmevoN" using BiDi tags)----
 
-    // Right-to-left override character.
-    private static final String RLO = "\u202e";
-    // Arabic letter mark character.
-    private static final String ALM = "\u061C";
-    // Pop direction formatting character.
-    private static final String PDF = "\u202c";
-    // Prefix to add before each LTR word.
-    private static final String BIDI_PREFIX = ALM + RLO;
-    // Postfix to add after each LTR word.
-    private static final String BIDI_POSTFIX = PDF + ALM;
-
     // Bidi localization doesn't care if the fragment is a pattern or not.
     @SuppressWarnings("unused")
     private static PseudoText bidi(boolean isPattern) {
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/RbPath.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/RbPath.java
index 071b04f..832acb6 100644
--- a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/RbPath.java
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/RbPath.java
@@ -191,13 +191,26 @@
     }
 
     // TODO: Remove this and isAlias() in favour of having properly typed paths.
-    boolean isIntPath() {
-        String lastElement = segments.get(segments.size() - 1);
-        return lastElement.endsWith(":int") || lastElement.endsWith(":intvector");
+    public boolean isIntPath() {
+        return typeSuffixIsAnyOf(":int", ":intvector");
+    }
+
+    public boolean isBinPath() {
+        return typeSuffixIsAnyOf(":bin");
     }
 
     public boolean isAlias() {
-        return getSegment(length() - 1).endsWith(":alias");
+        return typeSuffixIsAnyOf(":alias");
+    }
+
+    private boolean typeSuffixIsAnyOf(String... types) {
+        String lastElement = getSegment(length() - 1);
+        for (String type : types) {
+            if (lastElement.endsWith(type)) {
+                return true;
+            }
+        }
+        return false;
     }
 
     @Override public int compareTo(RbPath other) {
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/RbValue.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/RbValue.java
index 886ff18..19ef778 100644
--- a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/RbValue.java
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/RbValue.java
@@ -3,9 +3,10 @@
 package org.unicode.icu.tool.cldrtoicu;
 
 import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.collect.ImmutableList.toImmutableList;
 
-import java.util.Arrays;
 import java.util.Objects;
+import java.util.stream.Stream;
 
 import com.google.common.collect.ImmutableList;
 
@@ -17,20 +18,32 @@
  */
 public final class RbValue {
     private final ImmutableList<String> elements;
+    private final int elementsPerLine;
 
     /** Returns a resource bundle value of the given elements. */
     public static RbValue of(String... elements) {
-        return of(Arrays.asList(elements));
+        return new RbValue(ImmutableList.copyOf(elements), 1);
     }
 
     /** Returns a resource bundle value of the given elements. */
     public static RbValue of(Iterable<String> elements) {
-        return new RbValue(elements);
+        return new RbValue(ImmutableList.copyOf(elements), 1);
     }
 
-    private RbValue(Iterable<String> elements) {
-        this.elements = ImmutableList.copyOf(elements);
-        checkArgument(!this.elements.isEmpty(), "Resource bundle values cannot be empty");
+    /** Returns a resource bundle value of the given elements by consuming the given stream. */
+    public static RbValue of(Stream<String> elements) {
+        return new RbValue(elements.collect(toImmutableList()), 1);
+    }
+
+    private RbValue(ImmutableList<String> elements, int elementsPerLine) {
+        checkArgument(!elements.isEmpty(), "Resource bundle values cannot be empty");
+        checkArgument(elementsPerLine > 0, "invalid elements per line: %s", elementsPerLine);
+        this.elements = elements;
+        this.elementsPerLine = elementsPerLine;
+    }
+
+    public RbValue elementsPerLine(int n) {
+        return new RbValue(elements, n);
     }
 
     /** Returns the non-empty list of value elements. */
@@ -42,10 +55,14 @@
      * Returns whether this is a single element value. Singleton values are treated different when
      * writing out ICU data files.
      */
-    public boolean isSingleton() {
+    boolean isSingleton() {
         return elements.size() == 1;
     }
 
+    int getElementsPerLine() {
+        return elementsPerLine;
+    }
+
     @Override public int hashCode() {
         return Objects.hashCode(elements);
     }
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/SupplementalData.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/SupplementalData.java
index ddc6478..57c6df8 100644
--- a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/SupplementalData.java
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/SupplementalData.java
@@ -527,7 +527,8 @@
     // ...
     // Remove the script code 'Zzzz' and the region code 'ZZ' if they occur.
     //
-    // Note that this implementation does not need to handle "grandfathered" tags.
+    // Note that this implementation does not need to handle
+    // legacy language tags (marked as “Type: grandfathered” in BCP 47).
     private Optional<LocaleId> addLikelySubtags(String localeId) {
         if (localeId.equals("root")) {
             return Optional.empty();
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/ant/CleanOutputDirectoryTask.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/ant/CleanOutputDirectoryTask.java
index ddd34ea..b2ef028 100644
--- a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/ant/CleanOutputDirectoryTask.java
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/ant/CleanOutputDirectoryTask.java
@@ -5,6 +5,7 @@
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.collect.ImmutableSet.toImmutableSet;
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static java.nio.file.LinkOption.NOFOLLOW_LINKS;
 import static java.util.stream.Collectors.joining;
 import static java.util.stream.Collectors.partitioningBy;
@@ -49,6 +50,21 @@
 
     private static final CharMatcher NOT_WHITESPACE = CharMatcher.whitespace().negate();
 
+    private static final String HEADER_FILE = "ldml2icu_header.txt";
+
+    // If present in the header of a file, this line is used to determine that the file was
+    // auto-generated. This allows us to change the rest of the header freely without issue.
+    // However if it's not present in the file, we fallback to comparing the rest of the
+    // header without it (since that's the old behaviour).
+    // Once there's been an ICU release with this line included in the headers of all data
+    // files, we can remove the fallback and just test for this line and nothing else.
+    private static final String WAS_GENERATED_LABEL =
+        "Generated using tools/cldr/cldr-to-icu/build-icu-data.xml";
+
+    // The number of header lines to check before giving up if we don't find the generated
+    // label.
+    private static final int MAX_HEADER_CHECK_LINES = 20;
+
     private Path root = null;
     private boolean forceDelete = false;
     private final List<Dir> outputDirs = new ArrayList<>();
@@ -56,7 +72,13 @@
 
     public CleanOutputDirectoryTask() {
         // TODO: Consider passing in header lines via Ant?
-        this.headerLines = readLinesFromResource("/ldml2icu_header.txt");
+        this.headerLines = readLinesFromResource("/" + HEADER_FILE);
+        // For now assume that the generated label is the last line of the header.
+        checkState(Iterables.getLast(headerLines).equals(WAS_GENERATED_LABEL),
+            "Expected last line of %s header file to be:\n\t%s", HEADER_FILE, WAS_GENERATED_LABEL);
+        // Make sure we check at least a few more lines than is in the current header.
+        checkState(MAX_HEADER_CHECK_LINES >= headerLines.size() + 5,
+            "Unexpectedly large header file; please increase MAX_HEADER_CHECK_LINES constant");
     }
 
     public static final class Retain extends Task {
@@ -100,8 +122,9 @@
     }
 
     @SuppressWarnings("unused")
-    public void setRoot(Path root) {
-        this.root = root;
+    public void setRoot(String root) {
+        // Use String here since on some systems Ant doesn't support automatically converting Path instances.
+        this.root = Paths.get(root);
     }
 
     @SuppressWarnings("unused")
@@ -211,32 +234,70 @@
             // Directories, symbolic links, devices etc.
             return false;
         }
-        try (BufferedReader r = Files.newBufferedReader(path)) {
-            // A byte-order-mark (BOM) is added to ICU data files, but not JSON deps files, so just
-            // treat it as optional everywhere (it's not the important thing we check here).
-            r.mark(1);
-            int maybeByteOrderMark = r.read();
-            if (maybeByteOrderMark != '\uFEFF') {
-                // Also reset if the file was empty, but that should be harmless.
-                r.reset();
-            }
-            for (String headerLine : headerLines) {
-                String line = r.readLine();
-                if (line == null) {
-                    return false;
-                }
-                int headerStart = skipComment(line);
-                if (headerStart < 0
-                    || !line.regionMatches(headerStart, headerLine, 0, headerLine.length())) {
-                    return false;
-                }
-            }
-            return true;
+        try (BufferedReader r = Files.newBufferedReader(path, UTF_8)) {
+            return wasFileAutoGenerated(r, headerLines);
         } catch (IOException e) {
             throw new UncheckedIOException(e);
         }
     }
 
+    // TODO: Once the WAS_GENERATED_LABEL is in all auto-generated ICU data files, simplify this.
+    // Static and non-private for testing.
+    static boolean wasFileAutoGenerated(BufferedReader fileReader, ImmutableList<String> headerLines)
+            throws IOException {
+        // A byte-order-mark (BOM) is added to ICU data files, but not JSON deps files, so just
+        // treat it as optional everywhere (it's not the important thing we check here).
+        fileReader.mark(1);
+        int maybeByteOrderMark = fileReader.read();
+        if (maybeByteOrderMark != '\uFEFF') {
+            // Also reset if the file was empty, but that should be harmless.
+            fileReader.reset();
+        }
+        boolean isLenientHeaderMatchSoFar = true;
+        for (int n = 0; n < MAX_HEADER_CHECK_LINES ; n++) {
+            String line = fileReader.readLine();
+            // True if we have processed the header, not including the trailing generated label.
+            boolean headerIsProcessed = n >= headerLines.size() - 1;
+            boolean isCompleteLenientMatch = isLenientHeaderMatchSoFar && headerIsProcessed;
+            if (line == null) {
+                // We ran off the end of the file, so we're done.
+                return isCompleteLenientMatch;
+            }
+            int headerStart = skipComment(line);
+            if (headerStart < 0) {
+                // We ran off the end of the expected comment section, so we're done.
+                return isCompleteLenientMatch;
+            }
+            if (matchesToEndOfLine(line, headerStart, WAS_GENERATED_LABEL)) {
+                // Finding the generated label trumps any lenient matching.
+                return true;
+            }
+            if (!isLenientHeaderMatchSoFar) {
+                // We already failed at lenient matching, so keep going in the hope of finding
+                // the generated label (we don't need to check the header any more).
+                continue;
+            }
+            if (headerIsProcessed) {
+                // We finishing processing the header and it matched (not including the
+                // generated label) but for older data files, that's fine.
+                return true;
+            }
+            // Check the next header line (not including the trailing generated label).
+            isLenientHeaderMatchSoFar = matchesToEndOfLine(line, headerStart, headerLines.get(n));
+        }
+        // This is actually an unusual case. It corresponds to a file which:
+        // * has a leading comment section at least as long as MAX_HEADER_CHECK_LINES
+        // * does not contain WAS_GENERATED_LABEL anywhere in the first MAX_HEADER_CHECK_LINES
+        // Most files checked are expected to match, and so will not get here, but instead
+        // return via one of the return statements above.
+        return false;
+    }
+
+    private static boolean matchesToEndOfLine(String line, int start, String expected) {
+        return line.length() - start == expected.length()
+                && line.regionMatches(start, expected, 0, expected.length());
+    }
+
     private static int skipComment(String line) {
         if (line.startsWith("#")) {
             return toCommentStart(line, 1);
@@ -273,7 +334,7 @@
 
     private static ImmutableList<String> readLinesFromResource(String name) {
         try (InputStream in = CleanOutputDirectoryTask.class.getResourceAsStream(name)) {
-            return ImmutableList.copyOf(CharStreams.readLines(new InputStreamReader(in)));
+            return ImmutableList.copyOf(CharStreams.readLines(new InputStreamReader(in, UTF_8)));
         } catch (IOException e) {
             throw new RuntimeException("cannot read resource: " + name, e);
         }
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/ant/ConvertIcuDataTask.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/ant/ConvertIcuDataTask.java
index 4fa66fc..d3e9f74 100644
--- a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/ant/ConvertIcuDataTask.java
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/ant/ConvertIcuDataTask.java
@@ -16,6 +16,7 @@
 import static org.unicode.cldr.api.CldrPath.parseDistinguishingPath;
 
 import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -76,13 +77,25 @@
     private Predicate<String> idFilter = id -> true;
 
     @SuppressWarnings("unused")
-    public void setOutputDir(Path path) {
-        config.setOutputDir(path);
+    public void setOutputDir(String path) {
+        // Use String here since on some systems Ant doesn't support automatically converting Path instances.
+        config.setOutputDir(Paths.get(path));
     }
 
     @SuppressWarnings("unused")
-    public void setCldrDir(Path path) {
-        this.cldrPath = checkNotNull(path);
+    public void setCldrDir(String path) {
+        // Use String here since on some systems Ant doesn't support automatically converting Path instances.
+        this.cldrPath = checkNotNull(Paths.get(path));
+    }
+
+    @SuppressWarnings("unused")
+    public void setIcuVersion(String icuVersion) {
+        config.setIcuVersion(icuVersion);
+    }
+
+    @SuppressWarnings("unused")
+    public void setIcuDataVersion(String icuDataVersion) {
+        config.setIcuDataVersion(icuDataVersion);
     }
 
     @SuppressWarnings("unused")
@@ -108,8 +121,9 @@
     }
 
     @SuppressWarnings("unused")
-    public void setSpecialsDir(Path path) {
-        config.setSpecialsDir(path);
+    public void setSpecialsDir(String path) {
+        // Use String here since on some systems Ant doesn't support automatically converting Path instances.
+        config.setSpecialsDir(Paths.get(path));
     }
 
     @SuppressWarnings("unused")
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/DistanceTable.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/DistanceTable.java
new file mode 100644
index 0000000..aa326ba
--- /dev/null
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/DistanceTable.java
@@ -0,0 +1,554 @@
+// © 2017 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package org.unicode.icu.tool.cldrtoicu.localedistance;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkState;
+import static com.ibm.icu.impl.locale.LocaleDistance.DISTANCE_SKIP_SCRIPT;
+import static com.ibm.icu.impl.locale.LocaleDistance.IX_DEF_LANG_DISTANCE;
+import static com.ibm.icu.impl.locale.LocaleDistance.IX_DEF_REGION_DISTANCE;
+import static com.ibm.icu.impl.locale.LocaleDistance.IX_DEF_SCRIPT_DISTANCE;
+import static com.ibm.icu.impl.locale.LocaleDistance.IX_LIMIT;
+import static com.ibm.icu.impl.locale.LocaleDistance.IX_MIN_REGION_DISTANCE;
+import static java.util.Arrays.asList;
+
+import java.util.Arrays;
+import java.util.Map;
+import java.util.logging.Logger;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Table;
+import com.google.common.collect.TreeBasedTable;
+
+/**
+ * Represents the conceptual distance between pairs of language specifications.
+ *
+ * <p>Mappings for {@code (desired, supported)} pairs are added at one of three
+ * levels in the table; language, script and region. Distances can be resolved at
+ * any level in the table (e.g. {@code ("en","fr")}, {@code ("en_Latn","ru_Cyrl")}
+ * or {@code ("en_Latn_GB", "en_Latn_AU")}).
+ *
+ * <p>However in reality the "regions" in the table are actually "partition IDs"
+ * representing groups of regions with the same language characteristics. For more
+ * information on partitions and how they are generated, see {@link PartitionInfo}.
+ *
+ * <p>This is mentioned here because anyone debugging this code might be surprised
+ * to see values like {@code "5"} for a "region" in the code. Using the term
+ * "region" matches the conceptual level of the data and is more familiar to most
+ * people, whereas "partition ID" would probably be jarring.
+ *
+ * <p>The builder class is not resuable, and once a table is built, the builder is
+ * invalid. Furthermore, since the table data itself is mutable, care must be taken
+ * to avoid modifying either the Trie or the returned distance array.
+ *
+ * <p>Note that internally the {@code '*'} character used as a wildcard for subtags
+ * is replaced by the {@code '�'} character (a.k.a ANY), whenever a subtag is
+ * passed into the API. This is because the underlying Trie structure generated by
+ * the distance table reserves {@code '*'} for a different purpose. This difference
+ * is encapsulated within this class and the {@link Trie} class only.
+ */
+final class DistanceTable {
+    private static final Logger logger = Logger.getLogger(DistanceTable.class.getName());
+
+    // Represents a wildcard match in the data table (the equivalent of '*' in
+    // <languageMatch> locale subtag). Any incoming subtags are normalized to
+    // convert '*' to this character by the builder.
+    private static final String ANY = "�";
+
+    // Distances must be in the range [0-127] because bit 7 of the distance value
+    // is used for a special flag (DISTANCE_SKIP_SCRIPT). Setting the explicit max
+    // to 100 is just a more human readable maximum that satisfies that constraint.
+    private static final int MAX_REGION_DISTANCE = 100;
+
+    static final class Builder {
+        private final Node rootNode = new Node(-1);
+        private int minRegionDistance = MAX_REGION_DISTANCE;
+
+        private Builder() {}
+
+        /**
+         * Adds a distance to the table between the specified and desired tuples.
+         * This method takes 1, 2 or 3 sequential {@code (desired, supported)} pairs
+         * of values corresponding to language subtags, script subtags and regions
+         * (partition IDs). All values can be the wildcard '*'.
+         */
+        public void addDistance(int distance, boolean oneway, String... args) {
+            MappingKey key = MappingKey.fromSubtags(args, distance);
+            logger.fine(key::toString);
+            // Minimum region distance needs to be tracked specially.
+            if (key.getDepth() == 3 && distance < minRegionDistance) {
+                minRegionDistance = distance;
+            }
+            addMapping(key);
+            if (!oneway && !key.isSymmetrical()) {
+                addMapping(key.reverse());
+            }
+        }
+
+        private void addMapping(MappingKey key) {
+            rootNode.addExplicitMapping(key);
+            if (key.hasWildcardMappings()) {
+                rootNode.addWildcardMappings(key);
+            }
+        }
+
+        /** Returns the final minimized distance table information. */
+        public DistanceTable build() {
+            Node defLangNode = rootNode.getAnyNode();
+            checkState(defLangNode != null, "missing default language mapping: %s", rootNode);
+            Node defScriptNode = defLangNode.getAnyNode();
+            checkState(defScriptNode != null, "missing default script mapping: %s", rootNode);
+            Node defRegionNode = defScriptNode.getAnyNode();
+            checkState(defRegionNode != null, "missing default region mapping: %s", rootNode);
+
+            // Because we prune the data table, it's important to store the default
+            // distance values separately.
+            int[] distances = new int[IX_LIMIT];
+            distances[IX_DEF_LANG_DISTANCE] = defLangNode.distance;
+            distances[IX_DEF_SCRIPT_DISTANCE] = defScriptNode.distance;
+            distances[IX_DEF_REGION_DISTANCE] = defRegionNode.distance;
+            distances[IX_MIN_REGION_DISTANCE] = minRegionDistance;
+
+            // Having determined the distances, prune the Trie to remove any sub-tables
+            // where distances could only be determined to be the default value (i.e.
+            // where the existence of that sub-table has no effect).
+            pruneDefaultDistances(defScriptNode.distance, defRegionNode.distance);
+            return new DistanceTable(rootNode, distances);
+        }
+
+        @Override
+        public String toString() {
+            return String.format("minimum region distance: %d\n%s\n", minRegionDistance, rootNode);
+        }
+
+        private void pruneDefaultDistances(int defScriptDistance, int defRegionDistance) {
+            logger.fine("==== pruning subtables ====");
+            rootNode.subtables.values().forEach(langNode -> {
+                langNode.subtables.values().forEach(scriptNode -> {
+                    if (scriptNode.subtables.size() == 1) {
+                        // If a script node *only* contains region data with the default
+                        // region distance, that region data can be removed. Since region
+                        // is the lowest level, there's no need to worry about "skipping"
+                        // anything during lookup (unlike the case below).
+                        Node defRegionNode = scriptNode.getAnyNode();
+                        checkState(defRegionNode != null,
+                                "missing default region node for script: %s", scriptNode);
+                        if (defRegionNode.distance == defRegionDistance) {
+                            scriptNode.subtables.clear();
+                        }
+                    }
+                });
+                // Do the pruning in the "upwards" phase of visitation (after recursion) so
+                // if script subtables are pruned, it's visible here.
+                if (langNode.subtables.size() == 1) {
+                    // If a language node *only* contains script data with the default
+                    // script distance, we can't just remove it (because it might contain
+                    // region data).
+                    Node defScriptNode = langNode.getAnyNode();
+                    if (defScriptNode.distance == defScriptDistance) {
+                        checkState(defScriptNode != null,
+                                "missing default script node for language: %s", langNode);
+                        if (defScriptNode.subtables.isEmpty()) {
+                            // If the default script node has no region data, remove it.
+                            langNode.subtables.clear();
+                        } else {
+                            // Otherwise mark script data as "skippable", which indicates
+                            // it should be written in a compact form in the Trie (while
+                            // retaining any region data as normal).
+                            langNode.distance |= DISTANCE_SKIP_SCRIPT;
+                        }
+                    }
+                }
+            });
+            // After pruning we don't expect any data in the top-level default table.
+            checkState(rootNode.getAnyNode().subtables.isEmpty(),
+                    "invalid table state: %s", rootNode.getAnyNode());
+            rootNode.subtables.rowMap().remove(ANY);
+        }
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    private final Node rootNode;
+    private final int[] distances;
+
+    private DistanceTable(Node rootNode, int[] distances) {
+        this.rootNode = rootNode;
+        this.distances = distances;
+    }
+
+    public Trie getTrie() {
+        Trie trie = new Trie();
+        rootNode.writeTo(trie.root());
+        return trie;
+    }
+
+    public int[] getDefaultDistances() {
+        return distances;
+    }
+
+    @Override
+    public String toString() {
+        return String.format("default distances: %s\n%s\n", Arrays.toString(distances), rootNode);
+    }
+
+    private static final class Node {
+        private final Table<String, String, Node> subtables = TreeBasedTable.create();
+        // Distance for the lookup so far (-1 for top level nodes).
+        private int distance;
+
+        Node(int distance) {
+            checkArgument(distance >= -1, "invalid distance: %s", distance);
+            this.distance = distance;
+        }
+
+        /** Returns the subtable node for the top-level mapping of a key. */
+        private Node getNode(MappingKey key) {
+            return subtables.get(key.getDesired(), key.getSupported());
+        }
+
+        /** Returns the subtable node for the {@code <ANY,ANY>} mapping. */
+        Node getAnyNode() {
+            return subtables.get(ANY, ANY);
+        }
+
+        void addExplicitMapping(MappingKey key) {
+            if (key.isLeaf()) {
+                if (!putIfAbsent(key)) {
+                    logger.fine(() -> String.format("Ignore existing mapping: %s", key));
+                }
+            } else {
+                getIntermediateNode(key).addExplicitMapping(key.getSuffix());
+            }
+        }
+
+        void addWildcardMappings(MappingKey key) {
+            if (key.isLeaf()) {
+                putIfAbsent(key);
+            } else if (key.isWildcard()) {
+                // An intermediate wildcard mapping is applied to all existing sub-nodes.
+                // NOTE: This will need to change if we want to support "mixed" wildcard mappings.
+                for (Node node : subtables.values()) {
+                    node.addWildcardMappings(key.getSuffix());
+                }
+            } else {
+                // An explicit intermediate mapping only affects an existing exact match.
+                Node node = getNode(key);
+                if (node != null) {
+                    node.addWildcardMappings(key.getSuffix());
+                }
+            }
+        }
+
+        /**
+         * Adds a new mapping to this node with the specified distance if it didn't already
+         * exist.
+         *
+         * <p>Note: If a mapping already exists, then this method has no effect (even if the
+         * existing distance differs from the given distance). This is necessary to for two
+         * reasons:
+         * <ol>
+         *     <li>An earlier match rule may have set an explicit value for the mapping,
+         *         and we subsequently try to set a default value (via a wildcard mapping).
+         *         This should be ignored, since we want the non-default value to win.
+         *         This means it's important to always have explicit {@code <languageMatch>}
+         *         rules before any related wildcard rules in the CLDR data.
+         *
+         *     <li>A preferential {@code <languageMatch>} rule appears earlier in CLDR data.
+         *         This occurs because of the way partitions are defined and allows for two
+         *         distinct {@code <languageMatch>} rules to generate the same mapping (with
+         *         different distances). This is because region variables reference sets of
+         *         partition IDs and these are not always disjoint (e.g. "en_*_$!enUS" and
+         *         "en_*_GB" both contain the partition ID for "GB").
+         * </ol>
+         *
+         * @return true if a new mapping was added, or if the distances were equal (i.e.
+         *         the operation was idempotent).
+         */
+        private boolean putIfAbsent(MappingKey key) {
+            Node node = getNode(key);
+            if (node == null) {
+                logger.fine(() -> String.format("add: %s", key));
+                subtables.put(key.getDesired(), key.getSupported(), new Node(key.getDistance()));
+                return true;
+            }
+            return (key.getDistance() == node.distance);
+        }
+
+        /**
+         * Returns a sub-node corresponding to the given {@code (desired, supported)} mapping.
+         * If the node already exists, it is simply returned, otherwise a new node is created
+         * and any existing wildcard mappings are copied into it.
+         */
+        private Node getIntermediateNode(MappingKey key) {
+            Node node = getNode(key);
+            if (node == null) {
+                // This is expected to succeed because match rules are given in length
+                // order (i.e. language only before language+script etc.) and we always
+                // expect each group to end with an <ANY,ANY> mapping for the default
+                // distance. Thus, for any longer match rule, we should find (at least)
+                // the <ANY,ANY> node when looking for intermediate nodes.
+                //
+                // NOTE: Currently (desired==ANY) if-and-only-if (supported=ANY), so the
+                // only non-exact match we can get here is the <ANY,ANY> node. If we ever
+                // allow a mix of wildcard/non-wildcard keys, replace the getAnyNode() call
+                // with something like the line below:
+                // ----
+                // Node wildcardMatch = Iterables.find(
+                //      asList(getNode(desired, ANY), getNode(ANY, supported), getNode(ANY,ANY)),
+                //      Objects::nonNull);
+                // ----
+                Node wildcardMatch = getAnyNode();
+                checkState(wildcardMatch != null, "missing <ANY,ANY> mapping: %s", this);
+                // Default distances are the distance between any two *different* unknown
+                // subtags (so if the subtags are the same, the distance is zero).
+                int distance = key.getDesired().equals(key.getSupported()) ? 0 : wildcardMatch.distance;
+                node = new Node(distance);
+                node.copySubtablesFrom(wildcardMatch);
+                subtables.put(key.getDesired(), key.getSupported(), node);
+            }
+            return node;
+        }
+
+        /** Copies all subtable mappings from the given node into this one. */
+        private void copySubtablesFrom(Node src) {
+            checkState(subtables.isEmpty());
+            src.subtables.cellSet().forEach(
+                    c -> subtables.put(c.getRowKey(), c.getColumnKey(), new Node(c.getValue().distance)));
+        }
+
+        /**
+         * Writes all the mappings in the distance table sequentially to given Trie in sorted
+         * table order.
+         *
+         * <p>Mappings are written in a top-down recursive visitation with sub-tables inheriting
+         * the current prefix from parent tables via the given Trie span. At each level any
+         * mapped distances are written before recursing into the sub-tables.
+         */
+        private void writeTo(Trie.Span trieSpan) {
+            if (distance >= 0 && (distance & DISTANCE_SKIP_SCRIPT) != 0) {
+                // If a node has a distance set and has been explicitly marked as "skippable",
+                // then write the "default" subtable using the current Trie prefix (effectively
+                // having an "empty" prefix for this case).
+                getAnyNode().writeTo(trieSpan);
+            } else {
+                // In the normal case, just write the mappings explicitly.
+                subtables.rowMap().forEach(
+                        (desired, supportedNodes) -> writeSupported(trieSpan, desired, supportedNodes));
+            }
+        }
+
+        private void writeSupported(Trie.Span trieSpan, String desired, Map<String, Node> supportedNodes) {
+            // Collapse any (desired=ANY, supported=ANY) mappings into a single '*' in the trie.
+            if (desired.equals(ANY)) {
+                // If desired is ANY, the only supported subtag must also be ANY.
+                Node node = supportedNodes.get(ANY);
+                checkState(node != null && supportedNodes.size() == 1,
+                        "invalid supported subtags for desired='ANY': %s", supportedNodes);
+                // Remember that ANY != "*", even though it corresponds to "*" in the original
+                // language match rules. Putting "*" in a Trie means something different (but
+                // similar enough to be a bit confusing).
+                trieSpan.with("*", node::writeDistancePlusSubtables);
+            } else {
+                // In the general case, just write the <desired,supported> distance mapping.
+                trieSpan.with(desired, withDesiredSpan ->
+                        supportedNodes.forEach((supported, node) -> {
+                            checkState(!supported.equals(ANY),
+                                    "unexpected supported='ANY' subtag: %s", supported);
+                            withDesiredSpan.with(supported, node::writeDistancePlusSubtables);
+                        })
+                );
+            }
+        }
+
+        // Writes the distance of this node to the given trie, then recursively writes any
+        // subtable information.
+        private void writeDistancePlusSubtables(Trie.Span trieSpan) {
+            trieSpan.putPrefixAndValue(distance);
+            writeTo(trieSpan);
+        }
+
+        @Override
+        public String toString() {
+            StringBuilder buffer = new StringBuilder("distance: ").append(distance).append('\n');
+            return appendToString("", buffer).toString();
+        }
+
+        private StringBuilder appendToString(String indent, StringBuilder buffer) {
+            // Top level values are not padded with tabs.
+            String rowIndent = indent.isEmpty() ? "" : "\t";
+            for (Map.Entry<String, Map<String, Node>> row : subtables.rowMap().entrySet()) {
+                buffer.append(rowIndent).append(row.getKey());
+                // First column extends the current row, so single tab indent.
+                String colIndent = "\t";
+                for (Map.Entry<String, Node> col : row.getValue().entrySet()) {
+                    buffer.append(colIndent).append(col.getKey());
+                    Node subnode = col.getValue();
+                    buffer.append('\t').append(subnode.distance);
+                    // Append any sub-nodes (starting on the same line).
+                    subnode.appendToString(indent + "\t\t\t", buffer).append('\n');
+                    // Later columns need full indent (including skipping row key).
+                    colIndent = indent + '\t';
+                }
+                // Later rows need full indent.
+                rowIndent = indent;
+            }
+            return buffer;
+        }
+    }
+
+    /**
+     * Excapsulates a sequence of {@code <desired,supported>} pairwise mappings over
+     * language, script and region, with an associated distance. This is an alternate
+     * way to represent a mapping of desired and supported language match rules.
+     *
+     * <p>For example:
+     * <pre>{@code
+     *   <languageMatch desired="en_*_$!enUS", supported="en_*_$GB", distance="3"/>
+     * }</pre>
+     * results in a set of keys of the form:
+     * <pre>{@code
+     *   <en,en> -> <ANY,ANY> -> <X,Y> = 3
+     * }</pre>
+     * where the "region" part {@code <X,Y>} is constructed from all the possible
+     * combinations of partition IDs associated with the original region variables.
+     *
+     * <p>Mapping keys have several useful properties:
+     * <ul>
+     *     <li>They can be reversed (e.g. {@code <A,B> -> <C,D> = N} becomes
+     *     {@code <B,A> -> <D,C> = N}).
+     *     <li>They can be symmetrical (e.g. {@code <X,X> -> <Y,Y> = N}), in which
+     *     case the reversed key is the same as the original.
+     *     <li>They can have wildcard mappings (i.e. {@code <ANY,ANY>}).
+     *     <li>They can produce "suffix" keys (e.g. the suffix of
+     *     {@code <A,B> -> <C,D> = N} is {@code <C,D> = N}).
+     * </ul>
+     */
+    private static final class MappingKey {
+        /**
+         * Returns a new key from the specified subtag pairs, converting {@code '*'}
+         * subtags to the special {@code ANY} string and performing consistency checks.
+         *
+         * @param subtagPairs a sequence of {@code <desired,suported>} pairs.
+         * @param distance the distance associated with the subtag mapping.
+         */
+        static MappingKey fromSubtags(String[] subtagPairs, int distance) {
+            int pairCount = subtagPairs.length;
+            checkArgument(pairCount == 2 || pairCount == 4 || pairCount == 6,
+                    "invalid number of arguments (expected 1, 2 or 3 pairs): %s", asList(subtagPairs));
+            ImmutableList.Builder<String> keyPairs = ImmutableList.builder();
+            for (String subtag : subtagPairs) {
+                keyPairs.add(fixAny(subtag));
+            }
+            return new MappingKey(keyPairs.build(), distance, false);
+        }
+
+        // Converts a '*' (from a subtag) into the wildcard match character used by the Trie.
+        // The Trie uses '*' to mean something else, so we convert it at the boundary.
+        private static String fixAny(String subtag) {
+            return subtag.equals("*") ? ANY : subtag;
+        }
+
+        private final ImmutableList<String> pairs;
+        private final int distance;
+        private final boolean isReversed;
+        private final boolean isSymmetrical;
+        private final boolean hasWildcardMappings;
+
+        private MappingKey(ImmutableList<String> pairs, int distance, boolean isReversed) {
+            this.pairs = pairs;
+            this.distance = distance;
+            this.isReversed = isReversed;
+            checkArgument(distance >= 0 && distance <= MAX_REGION_DISTANCE,
+                    "invalid mapping key distance: %s", distance);
+            // Check that if a key has "ANY" mappings, it is consistent. We expect to only
+            // get <ANY,ANY> pairs (e.g. not <X,ANY> or <ANY,X>).
+            boolean isSymmetrical = true;
+            boolean hasWildcardMappings = false;
+            for (int i = 0; i < pairs.size(); i += 2) {
+                String desired = pairs.get(i);
+                String supported = pairs.get(i + 1);
+                checkArgument(desired.equals(ANY) == supported.equals(ANY),
+                        "invalid mapping key pairs: %s", pairs);
+                hasWildcardMappings |= desired.equals(ANY);
+                isSymmetrical &= desired.equals(supported);
+            }
+            this.isSymmetrical = isSymmetrical;
+            this.hasWildcardMappings = hasWildcardMappings;
+        }
+
+        /** Returns the "desired" value of the current (top-level) mapping. */
+        String getDesired() {
+            return pairs.get(isReversed ? 1 : 0);
+        }
+
+        /** Returns the "supported" value of the current (top-level) mapping. */
+        String getSupported() {
+            return pairs.get(isReversed ? 0 : 1);
+        }
+
+        /** Returns the non-negative distance mapped to by this key. */
+        int getDistance() {
+            return distance;
+        }
+
+        /**
+         * Returns the number of {@code <desired,supported>} mappings in this key; this is
+         * either 1 (language-only), 2 (language & script) or 3 (language, script & region).
+         */
+        int getDepth() {
+            return pairs.size() / 2;
+        }
+
+        /** Returns true if this key does not have a suffix. */
+        boolean isLeaf() {
+            return getDepth() == 1;
+        }
+
+        /**
+         * Returns if any of the {@code <desired,supported>} mappings are {@code <ANY,ANY>}.
+         */
+        boolean hasWildcardMappings() {
+            return hasWildcardMappings;
+        }
+
+        /**
+         * Returns if the top-level {@code <desired,supported>} mapping is {@code <ANY,ANY>}.
+         */
+        boolean isWildcard() {
+            return getDesired().equals(ANY);
+        }
+
+        /**
+         * Returns if this key is pair-wise symmetrical (e.g. {@code "<X,X> -> <Y,Y> = N"}).
+         * Symmetrical mappings don't need to be added in reverse.
+         */
+        boolean isSymmetrical() {
+            return isSymmetrical;
+        }
+
+        /** Returns a new key where each {@code <desired,supported>} mapping is reversed. */
+        MappingKey reverse() {
+            checkState(!isReversed, "cannot revese a reversed key");
+            return new MappingKey(pairs, distance, true);
+        }
+
+        /**
+         * Returns the suffix of this non-leaf key with the top-level mapping removed. For
+         * example, the suffix of {@code "<A,B> -> <C,D> = N"} is {@code "<C,D> = N"}).
+         */
+        MappingKey getSuffix() {
+            checkState(!isLeaf(), "cannot get 'next' for an empty key");
+            return new MappingKey(pairs.subList(2, pairs.size()), distance, isReversed);
+        }
+
+        @Override
+        public String toString() {
+            return isLeaf()
+                    ? String.format("<%s, %s> = %d", getDesired(), getSupported(), getDistance())
+                    : String.format("<%s, %s> -> %s", getDesired(), getSupported(), getSuffix());
+        }
+    }
+}
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/Indexer.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/Indexer.java
new file mode 100644
index 0000000..2e4e8d4
--- /dev/null
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/Indexer.java
@@ -0,0 +1,46 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package org.unicode.icu.tool.cldrtoicu.localedistance;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Function;
+
+/**
+ * Returns a canonicalized value for each unique value encountered, the memoized value is
+ * created using the zero-based index of the value and the given transformation function.
+ */
+final class Indexer<T, R> implements Function<T, R> {
+    /** Returns a plain indexer which returns the index directly. */
+    public static <T> Indexer<T, Integer> create() {
+        return create(Function.identity());
+    }
+
+    /** Returns an indexer which transforms the returned index by the given function. */
+    public static <T, R> Indexer<T, R> create(Function<Integer, R> convertIndexFn) {
+        return new Indexer<>(convertIndexFn);
+    }
+
+    private final Map<T, Integer> indexMap = new LinkedHashMap<>();
+    private final Function<Integer, R> convertIndexFn;
+
+    private Indexer(Function<Integer, R> convertIndexFn) {
+        this.convertIndexFn = checkNotNull(convertIndexFn);
+    }
+
+    /** Memoizes the given value and returns the derived value. */
+    @Override
+    public R apply(T value) {
+        indexMap.putIfAbsent(checkNotNull(value), indexMap.size());
+        return convertIndexFn.apply(indexMap.get(value));
+    }
+
+    /** Returns a set of the indexed values, in the order they were first encountered. */
+    public Set<T> getValues() {
+        return Collections.unmodifiableSet(indexMap.keySet());
+    }
+}
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/LikelySubtagsBuilder.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/LikelySubtagsBuilder.java
new file mode 100644
index 0000000..30d1b73
--- /dev/null
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/LikelySubtagsBuilder.java
@@ -0,0 +1,343 @@
+// © 2017 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package org.unicode.icu.tool.cldrtoicu.localedistance;
+
+import com.google.common.base.CharMatcher;
+import com.google.common.base.Splitter;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.ImmutableSetMultimap;
+import com.google.common.collect.ImmutableSortedMap;
+import com.ibm.icu.impl.locale.LSR;
+import com.ibm.icu.impl.locale.XLikelySubtags;
+import org.unicode.cldr.api.AttributeKey;
+import org.unicode.cldr.api.CldrData;
+import org.unicode.cldr.api.CldrPath;
+import org.unicode.cldr.api.PathMatcher;
+
+import java.util.Comparator;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static com.google.common.base.Preconditions.*;
+import static com.google.common.base.Strings.nullToEmpty;
+import static org.unicode.cldr.api.CldrData.PathOrder.DTD;
+
+/**
+ * Generates likely subtag information from CLDR supplemental data.
+ *
+ * <p>Likely subtag information and language aliases are combined to produce a
+ * Trie table of lookup data to canonicalize any incoming language ID to its
+ * most likely fully qualified form.
+ */
+final class LikelySubtagsBuilder {
+    private static final Logger logger = Logger.getLogger(LikelySubtagsBuilder.class.getName());
+
+    private static final PathMatcher ALIAS =
+        PathMatcher.of("//supplementalData/metadata/alias/*[@type=*]");
+
+    private static final PathMatcher LIKELY_SUBTAG =
+        PathMatcher.of("//supplementalData/likelySubtags/likelySubtag[@from=*]");
+    private static final AttributeKey SUBTAG_FROM = AttributeKey.keyOf("likelySubtag", "from");
+    private static final AttributeKey SUBTAG_TO = AttributeKey.keyOf("likelySubtag", "to");
+
+    // NOTE: You must omit empty strings, since otherwise " foo " becomes ("", "foo", "").
+    private static final Splitter LIST_SPLITTER =
+            Splitter.on(' ').trimResults().omitEmptyStrings();
+
+    // A language identifier is "xx", "xx_Yyyy", "xx_ZZ" or "xx_Yyyy_ZZ".
+    private static final Pattern LOCALE_ID =
+            Pattern.compile("([a-z]{2,3})(?:_([A-Z][a-z]{3}))?(?:_([A-Z]{2}|[0-9]{3}))?");
+
+    // While likely subtags are only separated by '_', language aliases can use '-' for
+    // legacy values. E.g.:
+    //     <languageAlias type="zh-min" replacement="nan-x-zh-min" reason="legacy"/>
+    // Territory aliases never have a separator, so are always "simple".
+    private static final CharMatcher ALIAS_SEPARATOR = CharMatcher.anyOf("-_");
+
+    // This is a bit of a hack to let this newer implementation behave exactly like the original
+    // ICU4J version of the code. In particular, this version of the code normalizes the keys of
+    // the LSR table to "*" earlier than before (previously the "special" keys were "und" for
+    // the top-level language subtags and "" for script or region). By normalizing earlier,
+    // there's no longer any reason to have special case code in the Trie logic, but if we just
+    // do that, the table keys are now sorted differently.
+    //
+    // Normally sort order wouldn't matter, when writing the Trie, but in order to demonstrate
+    // that this code produces the same binary output as before, the old ordering is replicated.
+    //
+    // TODO: When the dust settles, consider moving this to a star-first or star-last ordering??
+    private static Comparator<String> sortingStarLike(String t) {
+        return Comparator.comparing(x -> x.equals("*") ? t : x);
+    }
+
+    private static final Comparator<String> LSR_TABLE_ORDER = sortingStarLike("und");
+    private static final Comparator<String> SUBTABLE_ORDER = sortingStarLike("");
+
+    /** Possible alias types. */
+    private enum AliasType {
+        LANGUAGE("languageAlias"),
+        TERRITORY("territoryAlias");
+
+        private final String elementName;
+        private final AttributeKey typeKey;
+        private final AttributeKey reasonKey;
+        private final AttributeKey replacementKey;
+
+        AliasType(String elementName) {
+            this.elementName = elementName;
+            this.typeKey = AttributeKey.keyOf(elementName, "type");
+            this.reasonKey = AttributeKey.keyOf(elementName, "reason");
+            this.replacementKey = AttributeKey.keyOf(elementName, "replacement");
+        }
+    }
+
+    /** Alias mappings for base languages and territories. */
+    private static final class Aliases {
+        /**
+         * Returns the alias mapping for the given type. Note that for language aliases,
+         * only "simple" aliases (between base languages) are mapped.
+         */
+        public static Aliases getAliases(CldrData supplementalData, AliasType type) {
+            ImmutableSortedMap.Builder<String, String> canonicalMap =
+                    ImmutableSortedMap.naturalOrder();
+            supplementalData.accept(DTD, v -> {
+                CldrPath path = v.getPath();
+                if (ALIAS.matches(path) && path.getName().equals(type.elementName)) {
+                    // TODO: Find out why we ignore "overlong" aliases?
+                    String aliasFrom = v.get(type.typeKey);
+                    if (isSimpleAlias(aliasFrom) && !v.get(type.reasonKey).equals("overlong")) {
+                        // Replacement locale IDs must be non-empty (but can be a list) and we
+                        // use only the first (default) mapping.
+                        String aliasTo = LIST_SPLITTER.splitToList(v.get(type.replacementKey)).get(0);
+                        if (isSimpleAlias(aliasTo)) {
+                            canonicalMap.put(aliasFrom, aliasTo);
+                        }
+                    }
+                }
+            });
+            return new Aliases(canonicalMap.build());
+        }
+
+        // A simple language alias references only a base language (territory alias are
+        // always "simple" so this check is harmless).
+        private static boolean isSimpleAlias(String localeId) {
+            return ALIAS_SEPARATOR.matchesNoneOf(localeId);
+        }
+
+        private final ImmutableSortedMap<String, String> toCanonical;
+        private final ImmutableSetMultimap<String, String> toAliases;
+
+        private Aliases(ImmutableSortedMap<String, String> toCanonical) {
+            this.toCanonical = checkNotNull(toCanonical);
+            this.toAliases = toCanonical.asMultimap().inverse();
+        }
+
+        /** Returns the alias-to-canonical-value mapping. */
+        public ImmutableSortedMap<String, String> getCanonicalMap() {
+            return toCanonical;
+        }
+
+        /**
+         * Returns the aliases for a given canonical value (if there are no aliases
+         * then a singleton set containing the given canonical value is returned).
+         */
+        public ImmutableSet<String> getAliases(String canonical) {
+            ImmutableSet<String> aliases = toAliases.get(canonical);
+            return aliases.isEmpty() ? ImmutableSet.of(canonical) : aliases;
+        }
+    }
+
+    public static XLikelySubtags.Data build(CldrData supplementalData) {
+        // Build the table of LSR data from CLDR aliases and likely subtag information.
+        Aliases languageAliases = Aliases.getAliases(supplementalData, AliasType.LANGUAGE);
+        Aliases regionAliases = Aliases.getAliases(supplementalData, AliasType.TERRITORY);
+        Map<String, Map<String, Map<String, LSR>>> lsrTable =
+            makeTable(languageAliases, regionAliases, supplementalData);
+
+        // In the output Trie we must reference LSR instance by their special index
+        // (which is calculated by client code in order to lookup values).
+        //
+        // Note: We could pre-load this indexer with common locales to give them small
+        // indices, and see if that improves performance a little.
+        Indexer<LSR, Integer> lsrToIndex = Indexer.create();
+
+        // Reserve index 0 as "no value":
+        // The runtime lookup returns 0 for an intermediate match with no value, so we
+        // need that index to be reserved by something (but the value is arbitrary).
+        lsrToIndex.apply(lsr("", "", ""));
+        // Reserve index 1 for SKIP_SCRIPT:
+        // The runtime lookup returns 1 for an intermediate match with a value.
+        // This value is also arbitrary so use a value that is easy to debug.
+        lsrToIndex.apply(lsr("skip", "script", ""));
+
+        // Build the Trie of the LSR table data.
+        Trie trie = writeLsrTable(lsrTable, lsrToIndex);
+
+        // Note: Using XLikelySubtags as a fairly "dumb" container for the return values
+        // requires us to do slightly awkward things like passing mutable arrays around, but
+        // the advantage it has is that this data structure is also what's used in client code,
+        // so if the likely subtags data changes, it will be a forcing function to change this
+        // code.
+        return new XLikelySubtags.Data(
+                languageAliases.getCanonicalMap(),
+                regionAliases.getCanonicalMap(),
+                trie.toByteArray(),
+                lsrToIndex.getValues().toArray(new LSR[0]));
+    }
+
+    private static Trie writeLsrTable(
+            Map<String, Map<String, Map<String, LSR>>> languages,
+            Indexer<LSR, Integer> lsrToIndex) {
+
+        Trie trie = new Trie();
+        Trie.Span rootSpan = trie.root();
+        languages.forEach(
+                (language, scripts) -> rootSpan.with(
+                        language,
+                        span -> writeScripts(span, scripts, lsrToIndex)));
+        return trie;
+    }
+
+    private static void writeScripts(
+            Trie.Span languageSpan, Map<String, Map<String, LSR>> scripts, Indexer<LSR, Integer> lsrToIndex) {
+        checkArgument(!scripts.isEmpty(), "invalid script table: %s", scripts);
+        // If we only have '*' for scripts, but there is more than one region then we can prune
+        // the Trie at the script level and just write "<language><region>:<value>". However in
+        // order to let the lookup code know that it should not expect a script prefix for the
+        // following entries, we must add the special "skip" value before writing the regions.
+        //
+        // However if there is also only one region, we can just write "<language>:<value>" and
+        // must avoid adding the "skip" value.
+        if (scripts.size() == 1) {
+            // We already checked '*' is in every scripts table.
+            Map<String, LSR> regions = scripts.get("*");
+            if (regions.size() > 1) {
+                languageSpan.putPrefixAndValue(XLikelySubtags.SKIP_SCRIPT);
+            }
+            writeRegions(languageSpan, regions, lsrToIndex);
+        } else {
+            scripts.forEach(
+                    (script, regions) -> languageSpan.with(
+                            script,
+                            span -> writeRegions(span, regions, lsrToIndex)));
+        }
+    }
+
+    private static void writeRegions(
+            Trie.Span languageOrScriptSpan, Map<String, LSR> regions, Indexer<LSR, Integer> lsrToIndex) {
+        checkArgument(!regions.isEmpty(), "invalid region table: %s", regions);
+        // Prune anything ending with '*' (either <language-*-*> or <language-script-*>)
+        // by writing the value immediately and omitting the '*' from the Trie.
+        if (regions.size() == 1) {
+            // We already checked '*' is in every region table.
+            languageOrScriptSpan.putPrefixAndValue(lsrToIndex.apply(regions.get("*")));
+        } else {
+            regions.forEach(
+                    (region, lsr) -> languageOrScriptSpan.with(
+                            region,
+                            span -> span.putPrefixAndValue(lsrToIndex.apply(lsr))));
+        }
+    }
+
+    private static Map<String, Map<String, Map<String, LSR>>> makeTable(
+        Aliases languageAliases, Aliases regionAliases, CldrData supplementalData) {
+
+        Map<String, Map<String, Map<String, LSR>>> lsrTable = new TreeMap<>(LSR_TABLE_ORDER);
+
+        // set the base data
+        supplementalData.accept(DTD, v -> {
+            CldrPath path = v.getPath();
+            if (LIKELY_SUBTAG.matches(path)) {
+                // Add the canonical subtag mapping.
+                LSR source = lsrFromLocaleID(v.get(SUBTAG_FROM));
+                LSR target = lsrFromLocaleID(v.get(SUBTAG_TO));
+                set(lsrTable, source, target);
+
+                // Add all combinations of language and region aliases. This lets the
+                // matcher process aliases in locales in a single step.
+                for (String languageAlias : languageAliases.getAliases(source.language)) {
+                    for (String regionAlias : regionAliases.getAliases(source.region)) {
+                        if (languageAlias.equals(source.language) && regionAlias.equals(source.region)) {
+                            continue;
+                        }
+                        set(lsrTable, languageAlias, source.script, regionAlias, target);
+                    }
+                }
+            }
+        });
+
+        // Add the special case for "und-Latn" => "en-Latn-US" (which is a bit of a
+        // hack for language matching).
+        // TODO: Find out the history of this line and document it better.
+        set(lsrTable, "und", "Latn", "", lsr("en", "Latn", "US"));
+        logger.fine(lsrTable::toString);
+
+        // Ensure that if "und-RR" => "ll-Ssss-RR", then we also add "Ssss" => "RR".
+        // For example, given:
+        //     <likelySubtag from="und_GH" to="ak_Latn_GH"/>
+        // we add an additional mapping for "und-Latn-GH" => "ak-Latn-GH" since there
+        // will be cases where the language subtag is just missing in data, but given
+        // the script and region we can at least make a best guess.
+        //
+        // Note: We can't move this code after the checks below because it might add
+        // more mappings which then need to be checked. However realistically, the only
+        // time the mapping "*" -> "*" would not appear is if the likely subtag data was
+        // completely broken (since it implies no region-only mappings).
+        checkState(lsrTable.containsKey("*") && lsrTable.get("*").containsKey("*"),
+                "missing likely subtag data (no default region mappings): %s", lsrTable);
+        lsrTable.get("*").get("*").forEach((key, lsr) -> set(lsrTable, "und", lsr.script, lsr.region, lsr));
+
+        // Check that every level has "*" (mapped from "und" or "").
+        lsrTable.forEach((lang, scripts) -> {
+            checkArgument(scripts.containsKey("*"), "missing likely subtag mapping for: %s", asLocale(lang));
+            scripts.forEach(
+                    (script, regions) -> checkArgument(regions.containsKey("*"),
+                            "missing likely subtag mapping for: %s", asLocale(lang, script)));
+        });
+        return lsrTable;
+    }
+
+    // Converts subtable key sequence into original locale ID (for debugging).
+    // asLocale("*", *", "GB") -> "und_GB"
+    private static String asLocale(String... parts) {
+        return String.format("%s%s%s",
+                !parts[0].equals("*") ? parts[0] : "und",
+                parts.length > 1 && !parts[1].equals("*") ? "_" + parts[1] : "",
+                parts.length > 2 && !parts[2].equals("*") ? "_" + parts[2] : "");
+    }
+
+    private static void set(
+            Map<String, Map<String, Map<String, LSR>>> langTable, LSR key, LSR newValue) {
+        set(langTable, key.language, key.script, key.region, newValue);
+    }
+
+    private static void set(Map<String, Map<String, Map<String, LSR>>> langTable,
+            String language, String script, String region, LSR lsr) {
+        Map<String, Map<String, LSR>> scriptTable = getSubtable(langTable, subtagOrStar(language));
+        Map<String, LSR> regionTable = getSubtable(scriptTable, subtagOrStar(script));
+        regionTable.put(subtagOrStar(region), lsr);
+    }
+
+    private static <T> Map<String, T> getSubtable(Map<String, Map<String, T>> table, String subtag) {
+        return table.computeIfAbsent(subtag, k -> new TreeMap<>(SUBTABLE_ORDER));
+    }
+
+    private static String subtagOrStar(String s) {
+        checkArgument(!s.equals("*"), "language subtags should not be '*'");
+        return s.equals("und") || s.isEmpty() ? "*" : s;
+    }
+
+    // Parses simple locale IDs in the <likelySubtags> data, not arbitrary language tags.
+    private static LSR lsrFromLocaleID(String languageIdentifier) {
+        Matcher m = LOCALE_ID.matcher(languageIdentifier);
+        checkArgument(m.matches(), "invalid language identifier: %s", languageIdentifier);
+        return lsr(m.group(1), m.group(2), m.group(3));
+    }
+
+    // Lenient factory method which accepts null for missing script or region (but not language).
+    private static LSR lsr(String language, String script, String region) {
+        return new LSR(checkNotNull(language), nullToEmpty(script), nullToEmpty(region), LSR.DONT_CARE_FLAGS);
+    }
+}
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/LocaleDistanceMapper.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/LocaleDistanceMapper.java
new file mode 100644
index 0000000..4824903
--- /dev/null
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/LocaleDistanceMapper.java
@@ -0,0 +1,491 @@
+// © 2017 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package org.unicode.icu.tool.cldrtoicu.localedistance;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.checkState;
+import static java.util.Arrays.asList;
+import static org.unicode.cldr.api.CldrData.PathOrder.DTD;
+import static org.unicode.cldr.api.CldrDataType.SUPPLEMENTAL;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.unicode.cldr.api.AttributeKey;
+import org.unicode.cldr.api.CldrData;
+import org.unicode.cldr.api.CldrDataSupplier;
+import org.unicode.cldr.api.CldrPath;
+import org.unicode.cldr.api.CldrValue;
+import org.unicode.cldr.api.PathMatcher;
+import org.unicode.icu.tool.cldrtoicu.DebugWriter;
+import org.unicode.icu.tool.cldrtoicu.IcuData;
+import org.unicode.icu.tool.cldrtoicu.RbPath;
+import org.unicode.icu.tool.cldrtoicu.RbValue;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Splitter;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
+import com.google.common.primitives.Bytes;
+import com.ibm.icu.impl.locale.LSR;
+import com.ibm.icu.impl.locale.LocaleDistance;
+import com.ibm.icu.impl.locale.XLikelySubtags;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Mapper for generating locale distance tables from CLDR language data.
+ *
+ * <p>Note that this is an atypical mapper which does a lot more processing than other
+ * ICU mapper classes and relies on several auxilliary classes (which is why it's in a
+ * different package). Conceptually it's still a "mapper" though, just not a simple one.
+ *
+ * <p>This mapper was converted from the LocaleDistanceBuilder code in the ICU4J project.
+ */
+public final class LocaleDistanceMapper {
+    private static final Logger logger = Logger.getLogger(LocaleDistanceMapper.class.getName());
+
+    // All the language matching data comes from the "written_new" language data in
+    // "common/supplemental/languageInfo.xml".
+    private static final PathMatcher WRITTEN_LANGUAGE_PREFIX =
+        PathMatcher.of("//supplementalData/languageMatching/languageMatches[@type=\"written_new\"]");
+
+    // Definitions of region containment variables used when expressing match distances. E.g.:
+    // <matchVariable id="$maghreb" value="MA+DZ+TN+LY+MR+EH"/>
+    private static final PathMatcher VARIABLE_PATH =
+        WRITTEN_LANGUAGE_PREFIX.withSuffix("matchVariable[@id=*]");
+    private static final AttributeKey VARIABLE_ID = AttributeKey.keyOf("matchVariable", "id");
+    private static final AttributeKey VARIABLE_VALUE = AttributeKey.keyOf("matchVariable", "value");
+
+    // Language distance data, including wildcards and variable references (possibly negated). E.g.:
+    // <languageMatch desired="ja_Latn"       supported="ja_Jpan"       distance="5" oneway="true"/>
+    // <languageMatch desired="ar_*_$maghreb" supported="ar_*_$maghreb" distance="4"/>
+    // <languageMatch desired="en_*_$!enUS"   supported="en_*_GB"       distance="3"/>
+    private static final PathMatcher LANGUAGE_MATCH_PATH =
+        WRITTEN_LANGUAGE_PREFIX.withSuffix("languageMatch[@desired=*][@supported=*]");
+    private static final AttributeKey MATCH_DESIRED =
+        AttributeKey.keyOf("languageMatch", "desired");
+    private static final AttributeKey MATCH_SUPPORTED =
+        AttributeKey.keyOf("languageMatch", "supported");
+    private static final AttributeKey MATCH_DISTANCE =
+        AttributeKey.keyOf("languageMatch", "distance");
+    // Optional, assume false if not present.
+    private static final AttributeKey MATCH_ONEWAY =
+        AttributeKey.keyOf("languageMatch", "oneway");
+
+    // Singleton element containing the list of special case "paradigm" locales, which should
+    // always be preferred if there is a tie. E.g.:
+    // <paradigmLocales locales="en en_GB es es_419 pt_BR pt_PT"/>
+    //
+    // Since there are no distinguishing attributes for this path, there can only be one
+    // instance which we can just lookup directly.
+    private static final CldrPath PARADIGM_LOCALES_PATH = CldrPath.parseDistinguishingPath(
+        "//supplementalData/languageMatching/languageMatches[@type=\"written_new\"]/paradigmLocales");
+    private static final AttributeKey PARADIGM_LOCALES =
+        AttributeKey.keyOf("paradigmLocales", "locales");
+
+    // NOTE: You must omit empty strings, since otherwise " foo " becomes ("", "foo", "").
+    private static final Splitter LIST_SPLITTER =
+            Splitter.on(' ').trimResults().omitEmptyStrings();
+
+    // Output resource bundle paths, split into two basic groups for likely locale mappings
+    // and match data.
+    private static final RbPath LIKELY_LANGUAGES = RbPath.of("likely", "languageAliases");
+    private static final RbPath LIKELY_REGIONS = RbPath.of("likely", "regionAliases");
+    private static final RbPath LIKELY_TRIE = RbPath.of("likely", "trie:bin");
+    private static final RbPath LIKELY_LSRS = RbPath.of("likely", "lsrs");
+
+    private static final RbPath MATCH_TRIE = RbPath.of("match", "trie:bin");
+    private static final RbPath MATCH_REGION_TO_PARTITIONS = RbPath.of("match", "regionToPartitions:bin");
+    private static final RbPath MATCH_PARTITIONS = RbPath.of("match", "partitions");
+    private static final RbPath MATCH_PARADIGMS = RbPath.of("match", "paradigms");
+    private static final RbPath MATCH_DISTANCES = RbPath.of("match", "distances:intvector");
+
+    // To split locale specifications (e.g. "ja_Latn" or "en_*_$!enUS").
+    private static final Splitter UNDERSCORE = Splitter.on('_');
+
+    /**
+     * Processes data from the given supplier to generate locale matcher ICU data.
+     *
+     * @param src the CLDR data supplier to process.
+     * @return the IcuData instance to be written to a file.
+     */
+    public static IcuData process(CldrDataSupplier src) {
+        return process(src.getDataForType(SUPPLEMENTAL));
+    }
+
+    @VisibleForTesting // It's easier to supply a fake data instance than a fake supplier.
+    static IcuData process(CldrData data) {
+        IcuData icuData = new IcuData("langInfo", false);
+
+        XLikelySubtags.Data likelyData = LikelySubtagsBuilder.build(data);
+        icuData.add(LIKELY_LANGUAGES, ofMapEntries(likelyData.languageAliases));
+        icuData.add(LIKELY_REGIONS, ofMapEntries(likelyData.regionAliases));
+        icuData.add(LIKELY_TRIE, ofBytes(likelyData.trie));
+        icuData.add(LIKELY_LSRS, ofLsrs(asList(likelyData.lsrs)));
+
+        LocaleDistance.Data distanceData = buildDistanceData(data);
+        icuData.add(MATCH_TRIE, ofBytes(distanceData.trie));
+        icuData.add(MATCH_REGION_TO_PARTITIONS, ofBytes(distanceData.regionToPartitionsIndex));
+        icuData.add(MATCH_PARTITIONS, RbValue.of(distanceData.partitionArrays));
+        icuData.add(MATCH_PARADIGMS, ofLsrs(distanceData.paradigmLSRs));
+        icuData.add(MATCH_DISTANCES, RbValue.of(Arrays.stream(distanceData.distances).mapToObj(Integer::toString)));
+        return icuData;
+    }
+
+    /**
+     * A simple holder for language, script and region which allows for wildcards (i.e. "*")
+     * and variables to represent partitions of regions (e.g. "$enUS"). Minimal additional
+     * validation is done on incoming fields as data is assumed to be correct.
+     */
+    private static final class LsrSpec {
+        /**
+         * Parse a raw specification string (e.g. "en", "ja_Latn", "*_*_*", "ar_*_$maghreb"
+         * or "en_*_GB") into a structured spec. Note that if the specification string
+         * contains a "bare" region (e.g. "en_*_GB") then it is registered as a variable in
+         * the given RegionMapper builder, so the returned {@code LsrSpec} will be
+         * {@code "en_*_$GB"}.
+         */
+        public static LsrSpec parse(String rawSpec, PartitionInfo.Builder rmb) {
+            List<String> parts = UNDERSCORE.splitToList(rawSpec);
+            checkArgument(parts.size() <= 3, "invalid raw LSR specification: %s", rawSpec);
+            String language = parts.get(0);
+            Optional<String> script = parts.size() > 1 ? Optional.of(parts.get(1)) : Optional.empty();
+            // While parsing the region part, ensure any "bare" region subtags are converted
+            // to variables (e.g. "GB" -> "$GB") and registered with the parition map.
+            Optional<String> region =
+                    parts.size() > 2 ? Optional.of(rmb.ensureVariable(parts.get(2))) : Optional.empty();
+            return new LsrSpec(language, script, region);
+        }
+
+        // A language subtag (e.g. "en") or "*".
+        private final String language;
+        // If present, a script subtag (e.g. "Latn") or "*".
+        private final Optional<String> script;
+        // If present, a registered variable with '$' prefix (e.g. "$foo" or "$GB") or "*".
+        private final Optional<String> regionVariable;
+
+        private LsrSpec(String language, Optional<String> script, Optional<String> regionVariable) {
+            this.language = language;
+            this.script = script;
+            this.regionVariable = regionVariable;
+            // Implementation shortcuts assume:
+            // - If the language subtags are '*', the other-level subtags must also be '*' (if present).
+            // If there are rules that do not fit these constraints, we need to revise the implementation.
+            if (isAny(language)) {
+                script.ifPresent(
+                        s -> checkArgument(isAny(s), "expected wildcard script, got: %s", script));
+                regionVariable.ifPresent(
+                        r -> checkArgument(isAny(r), "expected wildcard region, got: %s", regionVariable));
+            }
+        }
+
+        public String getLanguage() {
+            return language;
+        }
+
+        public String getScript() {
+            return script.orElseThrow(() -> new IllegalArgumentException("no script available: " + this));
+        }
+
+        public String getRegionVariable() {
+            return regionVariable.orElseThrow(() -> new IllegalArgumentException("no region available: " + this));
+        }
+
+        public int size() {
+            return regionVariable.isPresent() ? 3 : script.isPresent() ? 2 : 1;
+        }
+
+        @Override
+        public String toString() {
+            return language + script.map(s -> "_" + s).orElse("") + regionVariable.map(r -> "_" + r).orElse("");
+        }
+    }
+
+    /**
+     * Represents a {@code <languageMatch>} rule derived from supplemental data, such as:
+     * <pre>{@code
+     *   <languageMatch desired="zh_Hans" supported="zh_Hant" distance="15" oneway="true"/>
+     * }</pre>
+     * or:
+     * <pre>{@code
+     *   <languageMatch desired="ar_*_$maghreb" supported="ar_*_$maghreb" distance="4"/>
+     * }</pre>
+     *
+     * <p>The job of a {@code Rule} is to provide a mechanism for capturing the data in
+     * {@code <languageMatch>} elements and subsequently adding that information to a
+     * {@link DistanceTable.Builder} in a structured way.
+     */
+    private static final class LanguageMatchRule {
+        private final LsrSpec desired;
+        private final LsrSpec supported;
+        private final int distance;
+        private final boolean oneway;
+
+        public LanguageMatchRule(LsrSpec desired, LsrSpec supported, int distance, boolean oneway) {
+            this.desired = checkNotNull(desired);
+            this.supported = checkNotNull(supported);
+            this.distance = distance;
+            this.oneway = oneway;
+            // Implementation shortcuts assume:
+            // - At any level, either both or neither spec subtags are *.
+            // If there are rules that do not fit these constraints, we need to revise the implementation.
+            checkArgument(desired.size() == supported.size(),
+                    "mismatched rule specifications in: %s, %s", desired, supported);
+            checkArgument(isAny(desired.language) == isAny(supported.language),
+                    "wildcard mismatch for languages in: %s, %s", desired, supported);
+            checkArgument(isAny(desired.script) == isAny(supported.script),
+                    "wildcard mismatch for scripts in: %s, %s", desired, supported);
+            checkArgument(isAny(desired.regionVariable) == isAny(supported.regionVariable),
+                    "wildcard mismatch for languages in: %s, %s", desired, supported);
+        }
+
+        int size() {
+            return desired.size();
+        }
+
+        boolean isDefaultRule() {
+            // We already know that in LsrSpec, if the language is "*" then all subtags are too.
+            return isAny(desired.language);
+        }
+
+        /**
+         * Adds this rule to the given distance table, using the given partition map to
+         * resolve any region variables present in the desired or supported specs.
+         */
+        void addTo(DistanceTable.Builder distanceTable, PartitionInfo partitions) {
+            // Note that rather than using the rule's "size" to mediate the different
+            // cases, we could have had 3 distinct sub-types of a common rule API (e.g.
+            // "LanguageRule", "ScriptRule" and "RegionRule"), each with a different
+            // addTo() callback. However this would have been quite a lot more code
+            // for not much real gain.
+            switch (size()) {
+            case 1:  // Language only.
+                distanceTable.addDistance(distance, oneway,
+                        desired.getLanguage(), supported.getLanguage());
+                break;
+
+            case 2:  // Language and script present.
+                distanceTable.addDistance(distance, oneway,
+                        desired.getLanguage(), supported.getLanguage(),
+                        desired.getScript(), supported.getScript());
+                break;
+
+            case 3:  // Language, script and region variable present.
+                // Add the rule distance for every combination of desired/supported
+                // partition IDs for the region variables. This is important for
+                // variables like "$americas" which overlap with multiple paritions.
+                //
+                // Note that in this case (because region variables map to sets of
+                // partition IDs) we can get situations where "shouldReverse" is true,
+                // but the desired/supported pairs being passed in are identical (e.g.
+                // different region variables map to distinct partition groups which
+                // share some common elements).
+                //
+                // This is fine, providing that the distance table is going to ignore
+                // identical mappings (which it does). Alternatively we could just
+                // re-calculate "shouldReverse" inside this loop to account for partition
+                // IDs rather than region variables.
+                ImmutableSet<String> desiredPartitionIds =
+                        partitions.getPartitionIds(desired.getRegionVariable());
+                ImmutableSet<String> supportedPartitionIds =
+                        partitions.getPartitionIds(supported.getRegionVariable());
+                for (String desiredPartitionId : desiredPartitionIds) {
+                    for (String supportedPartitionId : supportedPartitionIds) {
+                        distanceTable.addDistance(distance, oneway,
+                                desired.getLanguage(), supported.getLanguage(),
+                                desired.getScript(), supported.getScript(),
+                                desiredPartitionId, supportedPartitionId);
+                    }
+                }
+                break;
+
+            default:
+                throw new IllegalStateException("invalid size for LsrSpec: " + this);
+            }
+        }
+
+        @Override
+        public String toString() {
+            return String.format(
+                    "Rule{ desired=%s, supported=%s, distance=%d, oneway=%b }",
+                    desired, supported, distance, oneway);
+        }
+    }
+
+    private static LocaleDistance.Data buildDistanceData(CldrData supplementalData) {
+        // Resolve any explicitly declared region variables into the partition map.
+        // Territory containment information is used to recursively resolve region
+        // variables (e.g. "$enUS") into a collection of non-macro regions.
+        PartitionInfo.Builder partitionBuilder =
+                PartitionInfo.builder(TerritoryContainment.getContainment(supplementalData));
+        supplementalData.accept(DTD, v -> {
+            CldrPath path = v.getPath();
+            if (VARIABLE_PATH.matches(path)) {
+                partitionBuilder.addVariableExpression(v.get(VARIABLE_ID), v.get(VARIABLE_VALUE));
+            }
+        });
+
+        // Parse the rules from <languageMatch> elements. Note that the <languageMatch>
+        // element is marked as "ORDERED" in the DTD, which means the elements always
+        // appear in the same order is in the CLDR XML file (even when using DTD order).
+        //
+        // This is one of the relatively rare situations in which using DTD order will
+        // not isolate the ICU data from reordering of the CLDR data. In particular this
+        // matters when specifying language matcher preferences (such as "en_*_GB" vs
+        // "en_*_!enUS").
+        //
+        // We could almost process the rules while reading them from the source data, but
+        // rules may contain region codes rather than variables, and we need to create a
+        // variable for each such region code before the RegionMapper is built, and
+        // before processing the rules (this happens when the LsrSpec is parsed).
+        List<LanguageMatchRule> rules = new ArrayList<>();
+        supplementalData.accept(DTD, v -> {
+            CldrPath path = v.getPath();
+            if (LANGUAGE_MATCH_PATH.matches(path)) {
+                int distance = Integer.parseInt(v.get(MATCH_DISTANCE));
+                // Lenient against there being no "oneway" attribute.
+                boolean oneway = "true".equalsIgnoreCase(v.get(MATCH_ONEWAY));
+                LsrSpec desired = LsrSpec.parse(v.get(MATCH_DESIRED), partitionBuilder);
+                LsrSpec supported = LsrSpec.parse(v.get(MATCH_SUPPORTED), partitionBuilder);
+                LanguageMatchRule rule = new LanguageMatchRule(desired, supported, distance, oneway);
+                logger.fine(() -> String.format("rule: %s", rule));
+                rules.add(rule);
+            }
+        });
+        // Check that the rules are in the expected order. Rule order is important in ensuring
+        // data correctness and incorrect order may violate business logic assumptions later.
+        // TODO: Consider what other ordering/sanity checks make sense here.
+        for (int n = 0, prevSize = 1; n < rules.size(); n++) {
+            LanguageMatchRule rule = rules.get(n);
+            checkArgument(rule.size() >= prevSize, "<languageMatch> elements out of order at: %s", rule);
+            checkArgument(rule.size() == prevSize || (n > 0 && rules.get(n - 1).isDefaultRule()),
+               "missing default rule before: %s", rule);
+            prevSize = rule.size();
+        }
+        checkState(rules.stream().distinct().count() == rules.size(), "duplicated rule in: %s", rules);
+
+        // Build region partition data after all the variables have been accounted for
+        // (including the implicit variables found while processing LsrSpecs).
+        PartitionInfo partitions = partitionBuilder.build();
+
+        // Add all the rules (in order) to the distance table.
+        DistanceTable.Builder distanceTableBuilder = DistanceTable.builder();
+        rules.forEach(r -> r.addTo(distanceTableBuilder, partitions));
+        DistanceTable distanceTable = distanceTableBuilder.build();
+
+        // Note: Using LocaleDistance.Data as a fairly "dumb" container for the return values
+        // requires us to do slightly awkward things, like passing mutable arrays and LSR
+        // instances around, but the advantage it has is that this data structure is also what's
+        // used in client code, so if the likely subtags data changes, it will be a forcing
+        // function to change this code.
+        return new LocaleDistance.Data(
+                distanceTable.getTrie().toByteArray(),
+                partitions.getPartitionLookupArray(),
+                partitions.getPartitionStrings(),
+                getParadigmLsrs(supplementalData),
+                distanceTable.getDefaultDistances());
+    }
+
+    private static Set<LSR> getParadigmLsrs(CldrData supplementalData) {
+        // LinkedHashSet for stable order; otherwise a unit test is flaky.
+        CldrValue cldrValue = supplementalData.get(PARADIGM_LOCALES_PATH);
+        checkState(cldrValue != null,
+                "<paradigmLocales> element was missing: %s", PARADIGM_LOCALES_PATH);
+        String localesList = cldrValue.get(PARADIGM_LOCALES);
+        checkState(localesList != null,
+                "<paradigmLocales> 'locales' attribute was missing: %s", cldrValue);
+
+        Set<LSR> paradigmLSRs = new LinkedHashSet<>();
+        for (String paradigm : LIST_SPLITTER.split(localesList)) {
+            LSR max = XLikelySubtags.INSTANCE.makeMaximizedLsrFrom(new ULocale(paradigm));
+            // Clear the LSR flags to make the data equality test in LocaleDistanceTest happy.
+            paradigmLSRs.add(new LSR(max.language, max.script, max.region, LSR.DONT_CARE_FLAGS));
+        }
+        checkArgument(paradigmLSRs.size() % 2 == 0, "unpaired paradigm locales: %s", paradigmLSRs);
+        return paradigmLSRs;
+    }
+
+    // Returns an RbValue serialized from a map as a sequence of alternating (key, value)
+    // pairs (formatted as one pair per line in the IcuData file).
+    //
+    // E.g.
+    // foo{
+    //     key1, value1,
+    //     ...
+    //     keyN, valueN,
+    // }
+    private static RbValue ofMapEntries(Map<String, String> map) {
+        return RbValue.of(
+                map.entrySet().stream()
+                        .flatMap(e -> Stream.of(e.getKey(), e.getValue()))
+                        .collect(Collectors.toList()))
+                .elementsPerLine(2);
+    }
+
+    // Returns an RbValue serialized from a sequence of LSR instance as a sequence of repeating
+    // (language, region, script) tuples (formatted as one tuple per line in the IcuData file).
+    //
+    // E.g.
+    // foo{
+    //     lang1, script1, region1,
+    //     ...
+    //     langN, scriptN, regionN,
+    // }
+    private static RbValue ofLsrs(Collection<LSR> lsrs) {
+        return RbValue.of(
+                lsrs.stream()
+                        .flatMap(lsr -> Stream.of(lsr.language, lsr.script, lsr.region))
+                        .collect(Collectors.toList()))
+                .elementsPerLine(3);
+    }
+
+    // Returns an RbValue serialized from a byte array, as a concatenated sequence of rows of
+    // hex values. This is intended only for RbPaths using the ":bin" suffix.
+    //
+    // E.g.
+    // foo{
+    // 0123456789abcdef0123456789abcdef
+    //     ...
+    // 1c0de4c0ffee
+    // }
+    //
+    // Note that typically no indentation is used when writting this binary "blob".
+    private static RbValue ofBytes(byte[] data) {
+        ImmutableList.Builder<String> hexValues = ImmutableList.builder();
+        List<Byte> bytes = Bytes.asList(data);
+        for (List<Byte> line : Iterables.partition(bytes, 16)) {
+            hexValues.add(line.stream().map(b -> String.format("%02x", b)).collect(Collectors.joining()));
+        }
+        return RbValue.of(hexValues.build());
+    }
+
+    // Returns if the subtag is the '*' wildcard. This is not to be confused with the
+    // "ANY" character used in DistanceTable.
+    private static boolean isAny(String subtag) {
+        return subtag.equals("*");
+    }
+
+    // Returns if the subtag exists and is the '*' wildcard.
+    private static boolean isAny(Optional<String> subtag) {
+        return subtag.map(LocaleDistanceMapper::isAny).orElse(false);
+    }
+
+    // Main method for running this mapper directly with logging enabled.
+    // CLDR_DIR is picked up from system properties or envirnment variables.
+    // Arguments: <output-file> [<log-level>]
+    public static void main(String[] args) throws IOException {
+        DebugWriter.writeForDebugging(args, LocaleDistanceMapper::process);
+    }
+}
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/PartitionInfo.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/PartitionInfo.java
new file mode 100644
index 0000000..3a5b685
--- /dev/null
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/PartitionInfo.java
@@ -0,0 +1,432 @@
+// © 2017 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package org.unicode.icu.tool.cldrtoicu.localedistance;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkState;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.function.BiConsumer;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.logging.Logger;
+
+import com.google.common.base.CharMatcher;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.ImmutableSetMultimap;
+import com.google.common.collect.SetMultimap;
+import com.google.common.collect.Sets;
+import com.google.common.collect.SortedSetMultimap;
+import com.google.common.collect.TreeMultimap;
+import com.ibm.icu.impl.locale.LSR;
+
+/**
+ * Provides mapping arrays to quickly lookup partition information for any region
+ * code in client libraries.
+ *
+ * <p>A region's partition is defined by the set of region variables (e.g. "$enUS")
+ * in the CLDR data. Each unique combination of variables forms a partition, and
+ * groups of partitions uniquely define language distance groupings. In slightly
+ * mathematical terms, partition groups form an "equivalence class" for regions
+ * with respect to language distance.
+ *
+ * <p>So by determining the minimum set of partitions and partition groups, and
+ * assigning short IDs to them, it's possibe to create data structures which
+ * support all region pairings while being small and fast to access in client code.
+ */
+final class PartitionInfo {
+    private static final Logger logger = Logger.getLogger(PartitionInfo.class.getName());
+
+    /**
+     * A builder, to which region variables are added in order to define partitions
+     * and partition groups based on territory containment.
+     */
+    static final class Builder {
+        // Possible operations to parse from a region expression (e.g. "US+005-BR").
+        private static final CharMatcher REGION_OPS = CharMatcher.anyOf("+-");
+
+        private final TerritoryContainment territories;
+        private final Set<String> variables = new HashSet<>();
+        private final SortedSetMultimap<String, String> regionToVariables = TreeMultimap.create();
+
+        private Builder(TerritoryContainment territories) {
+            this.territories = territories;
+        }
+
+        // Returns whether the given string is a known variable or the wildcard token.
+        // Non variable strings (e.g. plain region codes) can be passed in and simply
+        // return false.
+        private boolean isKnownVariableOrWildcard(String variable) {
+            return variables.contains(variable) || variable.equals("*");
+        }
+
+        /**
+         * Adds a variable expression (e.g. "$foo = "US+005-BR") from CLDR data and
+         * fully resolves all macro regions to their contained leaf regions.
+         *
+         * <p>The syntax is simple for now:
+         * <pre>
+         *     regionSet := region ([-+] region)*
+         * </pre>
+         * There is no precedence, so "x+y-y+z" is "(((x+y)-y)+z)", and <em>not</em>
+         * "(x+y)-(y+z)".
+         */
+        public void addVariableExpression(String variable, String expr) {
+            checkState(variable.startsWith("$") && !variable.startsWith("$!"),
+                    "invalid variable: %s", variable);
+            checkState(!isKnownVariableOrWildcard(variable),
+                    "duplicate variable: %s", variable);
+            // Parsing also flattens the list to the corresponding leaf regions,
+            // so there should be no macro regions here.
+            Set<String> regions = parseAndFlattenRegionExpression(expr, territories);
+            // Add the mappings ("$foo" -> X) and the inverse ("$!foo" -> not(X)).
+            //
+            // The reason that the inverse mapping is needed is because some rules use
+            // the negated form of a variable (e.g. "$!enUS") and we must be able to
+            // resolve the set of associated partition IDs for it.
+            //
+            // If we only wanted the set of regions for the negated variable, that
+            // would be trivial (and there would be no need to store the negated values)
+            // but because the set of partition IDs for a negated variable is NOT always
+            // the negated set of parition IDs for the original variable (due to the way
+            // partitions overlap) it's not straightforward.
+            //
+            // In other words:
+            //     regions-for("$!foo") == !regions-for("$foo))
+            // but:
+            //     partition-ids-for("$!foo") != !partition-ids-for("$foo")
+            addVariable(variable, regions);
+            addVariable(
+                    "$!" + variable.substring(1),
+                    Sets.difference(territories.getLeafRegions(), regions));
+        }
+
+        private void addVariable(String variable, Iterable<String> regions) {
+            checkArgument(variables.add(variable),
+                    "variable '%s' already present in: %s", variable, regions);
+            for (String region : regions) {
+                checkArgument(!region.isEmpty(), "%s", regions);
+                regionToVariables.put(region, variable);
+            }
+        }
+
+        // Parses a region expression (e.g. "US+005-BR") to a set of resolved "leaf"
+        // regions.
+        private static Set<String> parseAndFlattenRegionExpression(
+                String expr, TerritoryContainment territories) {
+            Set<String> regions = new TreeSet<>();
+            Consumer<String> operation = regions::add;
+            int last = 0;
+            for (int i = REGION_OPS.indexIn(expr); i != -1; i = REGION_OPS.indexIn(expr, last)) {
+                applyOperation(operation, expr.substring(last, i), territories);
+                // Set up the next operation based on the separator char ('+' or '-').
+                operation = (expr.charAt(i) == '+') ? regions::add : regions::remove;
+                last = i + 1;
+            }
+            applyOperation(operation, expr.substring(last), territories);
+            return regions;
+        }
+
+        private static void applyOperation(
+                Consumer<String> operation, String region, TerritoryContainment territories) {
+            checkArgument(!region.isEmpty(), "invalid region expresson (missing region)");
+            ImmutableSet<String> contained = territories.getLeafRegionsOf(region);
+            if (!contained.isEmpty()) {
+                // For macro regions, add all their contained leaf regions (direct or indirect).
+                contained.forEach(operation);
+            } else {
+                // Leaf regions are just added directly.
+                operation.accept(region);
+            }
+        }
+
+        /**
+         * Registers an implicit variable defined by a region code, and returns the new variable
+         * name.
+         *
+         * <p>This method exists because the {@code <languageMatch>} syntax supports referencing
+         * regions directly, rather than just as pre-defined variables (e.g. "en_*_GB"). We still
+         * want to track these variables however since they may interact with macro-regions.
+         *
+         * @param regionOrVariable a region or an existing variable reference.
+         * @return the name of the registered variable (including '$' prefix).
+         */
+        public String ensureVariable(String regionOrVariable) {
+            if (isKnownVariableOrWildcard(regionOrVariable)) {
+                return regionOrVariable;
+            }
+            // Here we either have a "raw" region (e.g. "GB") or an unknown variable (e.g. "$foo").
+            // However all explicit variables should have already been registered, so if this does
+            // start with '$', then it's an error.
+            checkArgument(!regionOrVariable.startsWith("$"), "unregistered variable: %s", regionOrVariable);
+
+            // This is an implicit variable, referenced by its region code, so we know that it
+            // can never be referenced in the negated form (i.e. "$!GB"), so we don't need to add
+            // the inverse mapping in the same way we do for explicitly defined variables.
+            //
+            // We also allow implicit variables to appear more than once in the list of match
+            // rules, so don't call addVariable() here, since that prohibits repeated addition.
+            // Since 'regionToVariables' is a _set_ multimap, adding implicit variables is an
+            // idempotent operation, so it's okay if it's done more than once.
+            String variable = "$" + regionOrVariable;
+            variables.add(variable);
+            regionToVariables.put(regionOrVariable, variable);
+            return variable;
+        }
+
+        public PartitionInfo build() {
+            // Step 1: Map regions to a unique "partition" ID.
+            //
+            // A region's partition is the set of variables which include it, and
+            // variables can be explicit (e.g. "$enUS"), implicit (e.g. "$GB") or
+            // negated (e.g. "$!enUS).
+            //
+            // For example, region "US" is included in the variables "$americas" and
+            // "$enUS", but is also referenced in the "negated" variables "$!cnsar"
+            // and "$!maghreb", so the "partition" of "US" is:
+            //     { $americas, $enUS, $!cnsar, $!maghreb }
+            //
+            // A partition ID is a token associated with each unique variable partition.
+            //
+            // Since other regions, such as "PR" (Puerto Rico) and "VI" (U.S. Virgin
+            // Islands), are also "in" the same partition as "US", they will share the
+            // same partition ID.
+            //
+            // However, while "CA" is also included in "$americas", it's NOT defined as
+            // an "$enUS" (American English) region, so its partition is:
+            //     { $americas, $!enUS, $!cnsar, $!maghreb }
+            // and it will have a different partition ID.
+
+            // Check that the region-to-partition map covers every leaf region (this
+            // is important to ensure partitions form a disjoint covering).
+            checkArgument(regionToVariables.keySet().equals(territories.getLeafRegions()),
+                    "unexpected variable grouping (should cover all leaf regions): %s",
+                    regionToVariables);
+            ImmutableMap<String, String> regionToPartitionId =
+                    mapLeafRegionsToPartitionIds(regionToVariables);
+            logger.fine(() -> String.format("region to partition ID: %s", regionToPartitionId));
+
+            // Step 2: Construct mappings to and from partition IDs, to group regions
+            // by the variables that define them.
+
+            // A sorted mapping from every variable ("$foo" or "$!foo") to the IDs of
+            // the partitions it exists in.
+            //
+            // For example, "$americas" exists in partitions for both "$enUS" (American
+            // English) and "$!enUS" (non-American English) regions, so will be mapped
+            // to (at least) two unique parition IDs (e.g. X & Y).
+            //   "$americas" -> { X, Y }
+            ImmutableSetMultimap<String, String> variableToPartitionIds =
+                    mapVariablesToPartitionIds(regionToPartitionId, regionToVariables);
+            logger.fine(() -> String.format("variable to partition IDs: %s", variableToPartitionIds));
+
+            // A sorted mapping of each macro region to the partitions it intersects
+            // with. Unlike leaf regions, macro regions can map to groups of partitions
+            // rather than just a single one.
+            //
+            // For example, the macro region "419" (Latin America) intersects with
+            // both partitions:
+            //     X = {$americas, $enUS, ...}  (i.e. "Americas + American English")
+            // and:
+            //     Y = {$americas, $!enUS, ...} (i.e. "Americas + non-American English")
+            // so this map would contain:
+            //     "419" -> { X, Y }
+            ImmutableSetMultimap<String, String> macroRegionToPartitionIds =
+                    mapMacroRegionsToPartitionIds(regionToPartitionId, territories);
+
+            // Step 3: Write the sparse "region index to partition group index" lookup
+            // array. This is the fast lookup array used to go from LSR region index to
+            // the partition group IDs for that region.
+            //
+            // Note that most entries in the array are zero, since the array maps from
+            // all possible regions, not just ones which exist. This is a space/time
+            // trade-off (and the array is compressed in the ICU data files anyway).
+            byte[] partitionLookupArray = new byte[LSR.REGION_INDEX_LIMIT];
+            String[] partitionStrings = writePartitionLookupTable(
+                    partitionLookupArray, regionToPartitionId, macroRegionToPartitionIds);
+
+            return new PartitionInfo(variableToPartitionIds, partitionLookupArray, partitionStrings);
+        }
+
+        private static ImmutableMap<String, String> mapLeafRegionsToPartitionIds(
+                SetMultimap<String, String> regionToVariables) {
+            // A generator for partition IDs which returns a single ASCII character for
+            // each unique partition.
+            //
+            // Partition IDs are emitted into the ICU data, so it's important they are
+            // small and compatible with the ICU data file format.
+            Function<Collection<String>, String> partitionToId =
+                    Indexer.create(i -> {
+                        // Must be a single 7-bit ASCII value and not '*'. This is NOT
+                        // used as a numeric value anywhere and could end up being a non
+                        // digit character if the number of unique partitions is > 10.
+                        // As of June 2020, there are only 7 unique paritions.
+                        char partitionChar = (char) ('0' + i);
+                        checkState(partitionChar < 0x7f, "too many partitions: %s", i);
+                        return String.valueOf(partitionChar);
+                    });
+
+            // For each region, find its partition ID (based on the unique combination
+            // of variables that define it).
+            ImmutableMap.Builder<String, String> regionToId = ImmutableMap.builder();
+            regionToVariables.asMap().forEach(
+                    (region, variables) -> regionToId.put(region, partitionToId.apply(variables)));
+            return regionToId.build();
+        }
+
+        private static ImmutableSetMultimap<String, String> mapVariablesToPartitionIds(
+                ImmutableMap<String, String> regionToPartitionId,
+                SortedSetMultimap<String, String> regionToVariables) {
+
+            // It's vital that this is a sorted multimap (of values as well as keys)
+            // since the values are later indexed and turned into partition strings
+            // (so stability of ID order in values is necessary).
+            SortedSetMultimap<String, String> variableToPartitionIds = TreeMultimap.create();
+            regionToVariables.asMap().forEach((region, variables) -> {
+                String partitionId = regionToPartitionId.get(region);
+                for (String variable : variables) {
+                    variableToPartitionIds.put(variable, partitionId);
+                }
+            });
+            return ImmutableSetMultimap.copyOf(variableToPartitionIds);
+        }
+
+        private static ImmutableSetMultimap<String, String> mapMacroRegionsToPartitionIds(
+                ImmutableMap<String, String> regionToPartitionId,
+                TerritoryContainment territories) {
+
+            // A mapping from each unique partition ID to the regions it contains.
+            // This mapping forms a disjoint covering of all (non-macro) regions and
+            // is just the "inverse" of the initial "region to partition ID" map.
+            //
+            // For example, following the examples above where:
+            //     X = {$americas, $enUS, ...}
+            // and:
+            //     Y = {$americas, $!enUS, ...}
+            //
+            // We would get something like:
+            //     X -> {"PR", "US", "VI", ...}
+            //     Y -> {"CA", ...}
+            Map<String, Collection<String>> partitionToRegions =
+                    regionToPartitionId.asMultimap().inverse().asMap();
+
+            // Each macro region can then be decomposed to a mapping to the unique set
+            // of partitions it overlaps with based on its leaf regions and the regions
+            // of all known partitions.
+            SortedSetMultimap<String, String> macroToPartitions = TreeMultimap.create();
+            for (String macro : territories.getMacroRegions()) {
+                ImmutableSet<String> leaves = territories.getLeafRegionsOf(macro);
+                partitionToRegions.forEach((partition, regions) -> {
+                    if (!Collections.disjoint(leaves, regions)) {
+                        macroToPartitions.put(macro, partition);
+                    }
+                });
+            }
+            return ImmutableSetMultimap.copyOf(macroToPartitions);
+        }
+
+        private static String[] writePartitionLookupTable(
+                byte[] partitionLookupArray,
+                ImmutableMap<String, String> regionToPartitionId,
+                ImmutableSetMultimap<String, String> macroRegionToPartitionIds) {
+
+            // A generator for indices of partition groups, based on partition IDs.
+            //
+            // For leaf regions this generates a one-to-one mapping with the single
+            // partition ID, but macro regions can overlap multiple partitions.
+            Indexer<Collection<String>, Byte> partitionGroupIndexer =
+                    Indexer.create(i -> {
+                        // The partition group index must fit in a byte.
+                        // For Java code simplicity, we want it to also be non-negative.
+                        // As of June 2020, there are 15 partition groups.
+                        checkState(i <= 0x7f, "too many partition groups: %s", i);
+                        return (byte) i.intValue();
+                    });
+
+            // The default value in the partition lookup array (index 0) is mapped to by
+            // any unsupported region (since "LSR.indexForRegion(<invalid region>)" is 0).
+            // We must therefore reserve a special parition group index for these cases
+            // before adding the rest of the partitions.
+            partitionGroupIndexer.apply(ImmutableSet.of("."));
+
+            // Populate the radix-based sparse index array, where each region is converted
+            // to the LSR region index (which must correspond to how regions are indexed in
+            // the client side code).
+            BiConsumer<String, Collection<String>> writePartitionIndex =
+                    (region, ids) -> partitionLookupArray[LSR.indexForRegion(region)] =
+                            partitionGroupIndexer.apply(ids);
+
+            // Write leaf regions first (mostly to match the original code behaviour)
+            // and then macro regions.
+            //
+            // Convert the Map<String, String> to a Map<String, Collection<String>>
+            // to match the macro regions (even though each collection is a singleton).
+            regionToPartitionId.asMultimap().asMap().forEach(writePartitionIndex);
+            macroRegionToPartitionIds.asMap().forEach(writePartitionIndex);
+
+            // Check invalid reigons will map to the special "missing partition" value.
+            checkState(partitionLookupArray[0] == 0);
+
+            // Return the unique partition groups (sets of partition IDs) as strings
+            // (as a sequence of single letter partition IDs). Leaf regions will always
+            // have a single partition ID, but macro regions can overlap with multiple
+            // partitions.
+            return partitionGroupIndexer.getValues().stream()
+                    .map(ids -> String.join("", ids)).toArray(String[]::new);
+        }
+    }
+
+    /**
+     * Returns a builder to which variable mappings are added, from which partition
+     * information is derived.
+     */
+    public static Builder builder(TerritoryContainment territories) {
+        return new Builder(territories);
+    }
+
+    private final ImmutableSetMultimap<String, String> variableToPartitionIds;
+    private final byte[] partitionLookupArray;
+    private final String[] partitionStrings;
+
+    private PartitionInfo(
+            ImmutableSetMultimap<String, String> variableToPartitionIds,
+            byte[] partitionLookupArray,
+            String[] partitionStrings) {
+        this.variableToPartitionIds = ImmutableSetMultimap.copyOf(variableToPartitionIds);
+        this.partitionLookupArray = partitionLookupArray;
+        this.partitionStrings = partitionStrings;
+    }
+
+    /**
+     * Returns the set of partition IDs for the given variable, or {@code {"*"}} if the
+     * speical '*' variable was given. The returned set must be non-empty because every
+     * variable includes at least one region, and all regions map to a partition ID.
+     */
+    public ImmutableSet<String> getPartitionIds(String variable) {
+        if (variable.equals("*")) {
+            return ImmutableSet.of("*");
+        }
+        ImmutableSet<String> result = variableToPartitionIds.get(variable);
+        checkArgument(!result.isEmpty(), "variable not defined: %s", variable);
+        return result;
+    }
+
+    /** Returns the sparse lookup array from LSR region index to partition group index. */
+    public byte[] getPartitionLookupArray() {
+        return partitionLookupArray;
+    }
+
+    /**
+     * Returns the partition group lookup array from partition group index to partition
+     * ID string.
+     */
+    public String[] getPartitionStrings() {
+        return partitionStrings;
+    }
+}
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/TerritoryContainment.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/TerritoryContainment.java
new file mode 100644
index 0000000..849808e
--- /dev/null
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/TerritoryContainment.java
@@ -0,0 +1,118 @@
+// © 2017 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package org.unicode.icu.tool.cldrtoicu.localedistance;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.collect.ImmutableSetMultimap.toImmutableSetMultimap;
+
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.regex.Pattern;
+
+import org.unicode.cldr.api.AttributeKey;
+import org.unicode.cldr.api.CldrData;
+import org.unicode.cldr.api.CldrPath;
+import org.unicode.cldr.api.PathMatcher;
+
+import com.google.common.base.Splitter;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.ImmutableSetMultimap;
+import com.google.common.collect.SetMultimap;
+import com.google.common.collect.Sets;
+import com.google.common.collect.SortedSetMultimap;
+import com.google.common.collect.TreeMultimap;
+
+/**
+ * Territory containment graph. This is built from CLDR supplemental data and
+ * represents all territories and their containment, including macro regions
+ * such as {@code "016"}. The root node of the graph is {@code "001"}.
+ */
+final class TerritoryContainment {
+    // CLDR paths for containment data.
+    private static final PathMatcher CONTAINMENT_PATH =
+        PathMatcher.of("//supplementalData/territoryContainment/group[@type=*]");
+    private static final AttributeKey TYPE = AttributeKey.keyOf("group", "type");
+    private static final AttributeKey CONTAINS = AttributeKey.keyOf("group", "contains");
+
+    // Standard CLDR list values are split by space.
+    // NOTE: You must omit empty strings, since otherwise " foo " becomes ("", "foo", "").
+    private static final Splitter LIST_SPLITTER =
+            Splitter.on(' ').trimResults().omitEmptyStrings();
+    // The world region must be the only root in the graph.
+    private static final String WORLD = "001";
+    private static final Pattern REGION = Pattern.compile("[A-Z]{2}|[0-9]{3}");
+
+    /**
+     * Returns the territory containment information described by the given CLDR
+     * supplemental data.
+     */
+    public static TerritoryContainment getContainment(CldrData supplementalData) {
+        // Directed, acyclic containment graph. Maps each territory to its direct contents.
+        // Note that since things like deprecated regions are included here, this allows
+        // sub-regions to have more than one parent.
+        SortedSetMultimap<String, String> graph = TreeMultimap.create();
+        supplementalData.accept(CldrData.PathOrder.DTD, v -> {
+            CldrPath path = v.getPath();
+            if (CONTAINMENT_PATH.matches(path)) {
+                graph.putAll(v.get(TYPE), LIST_SPLITTER.split(v.get(CONTAINS)));
+            }
+        });
+        return new TerritoryContainment(ImmutableSetMultimap.copyOf(graph));
+    }
+
+    /** Maps each macro-region to all its leaf contents (direct and indirect). */
+    private final ImmutableSetMultimap<String, String> macroToLeafRegions;
+
+    private TerritoryContainment(ImmutableSetMultimap<String, String> graph) {
+        // Do some double checking of the CLDR data.
+        graph.values().forEach(
+                r -> checkArgument(REGION.matcher(r).matches(), "bad region '%s' in: %s", r, graph));
+        checkArgument(graph.containsKey(WORLD), "missing world region '%s'", WORLD);
+        // There should be only one "root" in the graph, so every other region should be
+        // contained by something.
+        Set<String> allContained = ImmutableSet.copyOf(graph.values());
+        Set<String> roots = ImmutableSet.copyOf(Sets.difference(graph.keySet(), allContained));
+        checkArgument(roots.equals(ImmutableSet.of(WORLD)),
+            "world region '%s' must be the only containment graph root (was %s)", WORLD, roots);
+
+        // Start with a copy of the direct containment graph (but still pass in the direct
+        // graph to avoid issues with concurrent modification).
+        // If the graph is cyclic, this step will never terminate and run out of memory
+        // (and since this is a build-time tool, that's probably fine).
+        SortedSetMultimap<String, String> resolved = TreeMultimap.create(graph);
+        resolve(WORLD, graph, resolved);
+        // For leaf regions (direct or indirect) just retain any sub-regions which don't
+        // have child regions from the resolved graph.
+        this.macroToLeafRegions = resolved.entries().stream()
+            // Only keep macro regions (leaf regions don't have child regions by definition).
+            .filter(e -> !graph.get(e.getKey()).isEmpty())
+            // Only keep the single-region e.getValue() if it is a leaf region.
+            .filter(e -> graph.get(e.getValue()).isEmpty())
+            .collect(toImmutableSetMultimap(Entry::getKey, Entry::getValue));
+    }
+
+    // Recursively resolve the region and its child regions.
+    private static Set<String> resolve(
+        String region, SetMultimap<String, String> graph, SetMultimap<String, String> resolved) {
+        graph.get(region).forEach(sub -> resolved.putAll(region, resolve(sub, graph, resolved)));
+        return resolved.get(region);
+    }
+
+    /**
+     * Returns the leaf regions contained in the given region (if the given region is a
+     * leaf region, then the empty set is returned).
+     */
+    public ImmutableSet<String> getLeafRegionsOf(String region) {
+        return macroToLeafRegions.get(region);
+    }
+
+    /** Returns all leaf regions. */
+    public ImmutableSet<String> getLeafRegions() {
+        return macroToLeafRegions.get(WORLD);
+    }
+
+    /** Returns all macro regions. */
+    public ImmutableSet<String> getMacroRegions() {
+        return macroToLeafRegions.keySet();
+    }
+}
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/Trie.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/Trie.java
new file mode 100644
index 0000000..0571bdb
--- /dev/null
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/localedistance/Trie.java
@@ -0,0 +1,112 @@
+// © 2017 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package org.unicode.icu.tool.cldrtoicu.localedistance;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkState;
+
+import java.nio.ByteBuffer;
+import java.util.function.Consumer;
+
+import com.ibm.icu.impl.locale.LocaleDistance;
+import com.ibm.icu.util.BytesTrieBuilder;
+
+/**
+ * Trie constructed by adding "spans" of data representing prefix
+ * sequences with mapped values.
+ *
+ * <p>When a prefix needs to be added to a Trie, a new span is created to
+ * represents the additional data. If a final value is added to a span, then
+ * the current prefix data is committed to the underlying Trie as its key.
+ *
+ * <p>Typical use might look like:
+ * <pre>{@code
+ * Trie trie = new Trie();
+ * mappedData.forEach(
+ *     (prefix, subValues) -> trie.root().with(prefix, subSpan -> process(subSpan, subValues));
+ * byte[] bytes = trie.toByteArray();
+ * }
+ * }</pre>
+ * where the {@code process} method may create more sub-spans, and eventually
+ * calls {@link Span#putPrefixAndValue(int)} to commit the current sequence
+ * of prefixes and the given value to the Trie.
+ *
+ * <p>Since spans share a common buffer for prefix data, it is important
+ * that extended spans are consumed before the parent span is used again.
+ * This is one reason why the API requires a consumer to be passed when a
+ * span is extended.
+ */
+final class Trie {
+    private final BytesTrieBuilder trieBuilder = new BytesTrieBuilder();
+    private final byte[] spanBytes = new byte[24];
+
+    /**
+     * Represents a sequence of prefixes to be added to the underlying Trie
+     * when a value is specified.
+     *
+     * <p>The position of a span cannot be modified, but they are not thread
+     * safe (since they share the same underlying buffer).
+     */
+    final class Span {
+        // The index *after* the last prefix was added.
+        private final int index;
+
+        // The root span.
+        private Span() {
+            this.index = 0;
+        }
+
+        // An extended span with the given prefix included.
+        private Span(int index, String prefix) {
+            checkArgument(index >= 0, "bad index: %s", index);
+            checkState(!prefix.isEmpty(), "invalid subtag: %s", prefix);
+            checkState(index + prefix.length() <= spanBytes.length, "span too long");
+            if (prefix.equals("*")) {
+                spanBytes[index++] = '*';
+            } else {
+                checkArgument(!prefix.contains("*"), "prefix must not contain '*': %s", prefix);
+                for (int i = 0; i < prefix.length(); i++) {
+                    char c = prefix.charAt(i);
+                    checkArgument(c < LocaleDistance.END_OF_SUBTAG, "invalid trie character: %s", c);
+                    spanBytes[index++] = (byte) c;
+                }
+                // Mark the final character as a terminator to avoid overlap matches.
+                spanBytes[index - 1] |= (byte) LocaleDistance.END_OF_SUBTAG;
+            }
+            this.index = index;
+        }
+
+        /**
+         * Extends the current span by creating a new span with the given ASCII
+         * prefix data, and passing it to the given consumer. The original span is
+         * not modified, but must not be used again until the consumer is finished.
+         *
+         * <p>The prefix string must contain only 7-bit ASCII characters.
+         */
+        public void with(String prefix, Consumer<Span> withFn) {
+            withFn.accept(new Span(index, prefix));
+        }
+
+        /**
+         * Commits the current prefix data and the given value to the underlying Trie.
+         */
+        public void putPrefixAndValue(int value) {
+            checkArgument(value >= 0, "bad trie value: %s", value);
+            checkState(index > 0, "missing prefix for value: %s", value);
+            trieBuilder.add(spanBytes, index, value);
+        }
+    }
+
+    /** Returns the root span with no current prefix data. */
+    public Span root() {
+        return new Span();
+    }
+
+    /** Serializes the underlying Trie data to a byte array (see also {@link BytesTrieBuilder}). */
+    public byte[] toByteArray() {
+        ByteBuffer buffer = trieBuilder.buildByteBuffer(BytesTrieBuilder.Option.SMALL);
+        byte[] bytes = new byte[buffer.remaining()];
+        buffer.get(bytes);
+        return bytes;
+    }
+}
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/mapper/AbstractPathValueMapper.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/mapper/AbstractPathValueMapper.java
index b66b7d1..becf9d1 100644
--- a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/mapper/AbstractPathValueMapper.java
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/mapper/AbstractPathValueMapper.java
@@ -62,8 +62,8 @@
     final void addIcuData(IcuData icuData) {
         // This subclass mostly exists to control the fact that results need to be added in one go
         // to the IcuData because of how referenced paths are handled. If results could be added in
-        // multiple passes, you could have confusing situations in which values has path references
-        // in them but the referenced paths have not been transformed yet. Forcing the subclass to
+        // multiple passes, you could have confusing situations in which values have path references
+        // in them, but the referenced paths have not been transformed yet. Forcing the subclass to
         // implement a single method to generate all results at once ensures that we control the
         // lifecycle of the data and how results are processed as they are added to the IcuData.
         checkState(resultsByRbPath.isEmpty(),
diff --git a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/mapper/TransformsMapper.java b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/mapper/TransformsMapper.java
index f1ce048..b45fe77 100644
--- a/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/mapper/TransformsMapper.java
+++ b/tools/cldr/cldr-to-icu/src/main/java/org/unicode/icu/tool/cldrtoicu/mapper/TransformsMapper.java
@@ -4,6 +4,7 @@
 
 import static com.google.common.base.CharMatcher.whitespace;
 import static com.google.common.base.Preconditions.checkNotNull;
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static java.nio.file.StandardOpenOption.CREATE_NEW;
 import static org.unicode.cldr.api.AttributeKey.keyOf;
 import static org.unicode.cldr.api.CldrDataType.SUPPLEMENTAL;
@@ -91,7 +92,7 @@
             Path file = ruleFileOutputDir.resolve(p);
             try {
                 // Specify "CREATE_NEW" since we don't want to overwrite any existing files.
-                return new PrintWriter(Files.newBufferedWriter(file, CREATE_NEW));
+                return new PrintWriter(Files.newBufferedWriter(file, UTF_8, CREATE_NEW));
             } catch (IOException e) {
                 throw new RuntimeException("error opening file: " + file, e);
             }
diff --git a/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_header.txt b/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_header.txt
index 70f6b83..0902585 100644
--- a/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_header.txt
+++ b/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_header.txt
@@ -1,2 +1,3 @@
 © 2016 and later: Unicode, Inc. and others.
-License & terms of use: http://www.unicode.org/copyright.html#License
+License & terms of use: http://www.unicode.org/copyright.html
+Generated using tools/cldr/cldr-to-icu/build-icu-data.xml
diff --git a/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_supplemental.txt b/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_supplemental.txt
index be58239..5edbe70 100644
--- a/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_supplemental.txt
+++ b/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_supplemental.txt
@@ -98,11 +98,6 @@
 //supplementalData/measurementData/paperSize[@type="A4"][@territories="(%W)"] ; /measurementData/$1/PaperSize:intvector ; values=297 210
 //supplementalData/measurementData/paperSize[@type="US-Letter"][@territories="(%W)"] ; /measurementData/$1/PaperSize:intvector ; values=279 216
 
-//supplementalData/unitPreferenceData/unitPreferences[@category="(%W)"][@usage="(%A)"][@scope="small"]/unitPreference[@regions="(%A)"][@alt="informal"] ; /unitPreferenceData/$3/$1-$2-small-informal
-//supplementalData/unitPreferenceData/unitPreferences[@category="(%W)"][@usage="(%A)"][@scope="small"]/unitPreference[@regions="(%A)"] ; /unitPreferenceData/$3/$1-$2-small
-//supplementalData/unitPreferenceData/unitPreferences[@category="(%W)"][@usage="(%A)"]/unitPreference[@regions="(%A)"][@alt="informal"] ; /unitPreferenceData/$3/$1-$2-informal
-//supplementalData/unitPreferenceData/unitPreferences[@category="(%W)"][@usage="(%A)"]/unitPreference[@regions="(%A)"] ; /unitPreferenceData/$3/$1-$2
-
 //supplementalData/territoryInfo/territory[@type="(%W)"][@gdp="(%N)"][@literacyPercent="(%N)"][@population="(%N)"]/languagePopulation[@type="(%W)"][@writingPercent="(%N)"][@populationPercent="(%N)"][@officialStatus="(%W)"](?:[@references="%W"])?
     ; /territoryInfo/$1/territoryF:intvector ; values=&exp($2) &exp($3,-2) &exp($4) ; base_xpath=//supplementalData/territoryInfo/territory[@type="$1"]
     ; /territoryInfo/$1/$5/writingShareF:int ; values=&exp($6,-2)
@@ -145,6 +140,49 @@
 //supplementalData/calendarData/calendar[@type="(%W)"]/eras/era[@type="(%W)"][@(start|end)="(%A)"]
     ; /calendarData/$1/eras/$2/$3:intvector ; values=&ymd($4)
 
+# units.xml
+
+//supplementalData/unitConstants/unitConstant[@constant="(%W)"][@value="(%A)"](?:[@status="%W"])?
+    ; /unitConstants/$1 ; values="$2"
+
+//supplementalData/unitQuantities/unitQuantity[@baseUnit="(%W)"][@quantity="(%W)"](?:[@status="%W"])?
+    ; /unitQuantities/$1 ; values="$2"
+
+//supplementalData/convertUnits/convertUnit[@source="(%W)"][@baseUnit="(%W)"](?:[@systems="%W"])?
+    ; /convertUnits/$1/target ; values=$2
+    ; /convertUnits/$1/factor ; values=1
+
+//supplementalData/convertUnits/convertUnit[@source="(%W)"][@baseUnit="(%W)"][@factor="(%A)"](?:[@systems="%W"])?
+    ; /convertUnits/$1/target ; values=$2
+    ; /convertUnits/$1/factor ; values="$3"
+
+//supplementalData/convertUnits/convertUnit[@source="(%W)"][@baseUnit="(%W)"][@offset="(%A)"](?:[@systems="%W"])?
+    ; /convertUnits/$1/target ; values=$2
+    ; /convertUnits/$1/factor ; values=1
+    ; /convertUnits/$1/offset ; values=$3
+
+//supplementalData/convertUnits/convertUnit[@source="(%W)"][@baseUnit="(%W)"][@factor="(%A)"][@offset="(%A)"](?:[@systems="%W"])?
+    ; /convertUnits/$1/target ; values=$2
+    ; /convertUnits/$1/factor ; values="$3"
+    ; /convertUnits/$1/offset ; values=$4
+
+# Quoting "$1" and "$2" in the output lets $3 expand space-separated regions: only the first unquoted output supports such expansion.
+//supplementalData/unitPreferenceData/unitPreferences[@category="(%W)"][@usage="(%A)"]/unitPreference[@regions="(%A)"]
+    ; /unitPreferenceData/"$1"/"$2"/$3/<FIFO>/unit
+
+//supplementalData/unitPreferenceData/unitPreferences[@category="(%W)"][@usage="(%A)"]/unitPreference[@regions="(%A)"][@geq="(%A)"]
+    ; /unitPreferenceData/"$1"/"$2"/$3/<FIFO>/unit
+    ; /unitPreferenceData/"$1"/"$2"/$3/<FIFO>/geq ; values=$4
+
+//supplementalData/unitPreferenceData/unitPreferences[@category="(%W)"][@usage="(%A)"]/unitPreference[@regions="(%A)"][@skeleton="(%A)"]
+    ; /unitPreferenceData/"$1"/"$2"/$3/<FIFO>/unit
+    ; /unitPreferenceData/"$1"/"$2"/$3/<FIFO>/skeleton ; values=$4
+
+//supplementalData/unitPreferenceData/unitPreferences[@category="(%W)"][@usage="(%A)"]/unitPreference[@regions="(%A)"][@geq="(%A)"][@skeleton="(%A)"]
+    ; /unitPreferenceData/"$1"/"$2"/$3/<FIFO>/unit
+    ; /unitPreferenceData/"$1"/"$2"/$3/<FIFO>/geq ; values=$4
+    ; /unitPreferenceData/"$1"/"$2"/$3/<FIFO>/skeleton ; values=$5
+
 # languageInfo.xml
 
 //supplementalData/languageMatching/languageMatches[@type="(%B)_new"]/paradigmLocales[@locales="(%A)"] ; /languageMatchingInfo/$1/paradigmLocales ; values=$2
diff --git a/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/PseudoLocalesTest.java b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/PseudoLocalesTest.java
index 4ffd2f3..c72e67b 100644
--- a/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/PseudoLocalesTest.java
+++ b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/PseudoLocalesTest.java
@@ -122,7 +122,7 @@
         CldrDataSupplier pseudo = PseudoLocales.addPseudoLocalesTo(src);
 
         assertValuesUnordered(pseudo.getDataForLocale("ar_XB", UNRESOLVED),
-            value(exemplarsPath, "[a b c d e f g h i j k l m n o p q r s t u v w x y z]"));
+            value(exemplarsPath, "[a b c d e f g h i j k l m n o p q r s t u v w x y z \\u061C \\u202E \\u202C]"));
         assertValuesUnordered(pseudo.getDataForLocale("en_XA", UNRESOLVED),
             value(exemplarsPath,
                 "[a å b ƀ c ç d ð e é f ƒ g ĝ h ĥ i î j ĵ k ķ l ļ m ɱ"
diff --git a/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/SupplementalDataTest.java b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/SupplementalDataTest.java
index 5ea8b4c..6d53170 100644
--- a/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/SupplementalDataTest.java
+++ b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/SupplementalDataTest.java
@@ -41,9 +41,7 @@
     public static void loadRegressionData() {
         Path cldrRoot = Paths.get(System.getProperty("CLDR_DIR"));
         regressionData = SupplementalData.create(CldrDataSupplier.forCldrFilesIn(cldrRoot));
-        SupplementalDataInfo sdi =
-            SupplementalDataInfo.getInstance(cldrRoot.resolve("common/supplemental").toString());
-        likelySubtags = new LikelySubtags(sdi);
+        likelySubtags = new LikelySubtags();
     }
 
     @Test
diff --git a/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/ant/CleanOutputDirectoryTaskTest.java b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/ant/CleanOutputDirectoryTaskTest.java
new file mode 100644
index 0000000..08962fc
--- /dev/null
+++ b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/ant/CleanOutputDirectoryTaskTest.java
@@ -0,0 +1,86 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package org.unicode.icu.tool.cldrtoicu.ant;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.truth.BooleanSubject;
+import com.google.common.truth.Truth;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.Arrays;
+
+@RunWith(JUnit4.class)
+public class CleanOutputDirectoryTaskTest {
+    // Not using the original field since we want this test to fail if this changes unexpectedly.
+    private static final String WAS_GENERATED_LABEL =
+        "Generated using tools/cldr/cldr-to-icu/build-icu-data.xml";
+
+    // Commented version of the label for test data.
+    private static final String WAS_GENERATED_LINE = "// " + WAS_GENERATED_LABEL;
+
+    private final static ImmutableList<String> HEADER = ImmutableList.of(
+        "Header#1",
+        "Header#2",
+        WAS_GENERATED_LABEL);
+
+    @Test
+    public void testWasFileAutoGenerated_lenientMatching() throws IOException {
+        // Testing comment prefixes (// or # supported equally)
+        assertWasAutogenerated("// Header#1", "// Header#2").isTrue();
+        assertWasAutogenerated("# Header#1", "# Header#2").isTrue();
+        assertWasAutogenerated("# Header#1", "// Header#2").isTrue();
+        assertWasAutogenerated("//    Header#1", "//Header#2").isTrue();
+        // Extra lines
+        assertWasAutogenerated("// Header#1", "// Header#2", "// More comment", "Not a comment").isTrue();
+        // BOM is ignored on first line
+        assertWasAutogenerated("\uFEFF// Header#1", "// Header#2").isTrue();
+    }
+
+    @Test
+    public void testWasFileAutoGenerated_lenientMatching_fail() throws IOException {
+        // New blank line.
+        assertWasAutogenerated("", "// Header#1", "// Header#2").isFalse();
+        // Duplicated line.
+        assertWasAutogenerated("// Header#1", "// Header#1").isFalse();
+        // Reversed lines.
+        assertWasAutogenerated("// Header#2", "// Header#1").isFalse();
+        // Not commented.
+        assertWasAutogenerated("Header#1", "Header#2").isFalse();
+        // Extra blank line.
+        assertWasAutogenerated("// Header#1", "", "// Header#2").isFalse();
+        // Misplaced BOM.
+        assertWasAutogenerated("// Header#1", "\uFEFF// Header#2").isFalse();
+    }
+
+    @Test
+    public void testWasFileAutoGenerated_withLabel() throws IOException {
+        // With the label in the header comment section everything passes.
+        assertWasAutogenerated("// Header#1", "// Header#2", WAS_GENERATED_LINE).isTrue();
+        assertWasAutogenerated("// Hello", "// World", WAS_GENERATED_LINE).isTrue();
+        assertWasAutogenerated("// Shorter Header", WAS_GENERATED_LINE).isTrue();
+        assertWasAutogenerated("// This", "// Is", "// A", "// Longer", "// Header", WAS_GENERATED_LINE).isTrue();
+        assertWasAutogenerated("// Where the label is", WAS_GENERATED_LINE, "// Does not matter").isTrue();
+        assertWasAutogenerated(WAS_GENERATED_LINE).isTrue();
+    }
+
+    @Test
+    public void testWasFileAutoGenerated_matchingEndsAfterComments() throws IOException {
+        assertWasAutogenerated("// Header#1", "// Header#Changed", WAS_GENERATED_LINE).isTrue();
+        // Label outside the header comment section does not count.
+        assertWasAutogenerated("// Header#1", "// Header#Changed", "Not a comment", WAS_GENERATED_LINE).isFalse();
+    }
+
+    private static BooleanSubject assertWasAutogenerated(String... fileLines) throws IOException {
+        return Truth.assertWithMessage("wasAutogenerated: %s", Arrays.asList(fileLines))
+            .that(CleanOutputDirectoryTask.wasFileAutoGenerated(testFile(fileLines), HEADER));
+    }
+
+    private static BufferedReader testFile(String... lines) {
+        return new BufferedReader(new StringReader(String.join("\n", lines) + "\n"));
+    }
+}
diff --git a/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/DistanceTableTest.java b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/DistanceTableTest.java
new file mode 100644
index 0000000..b12bd0b
--- /dev/null
+++ b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/DistanceTableTest.java
@@ -0,0 +1,164 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package org.unicode.icu.tool.cldrtoicu.localedistance;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.unicode.icu.tool.cldrtoicu.testing.AssertUtils.assertThrows;
+
+import org.junit.Test;
+
+import com.google.common.collect.ImmutableMap;
+import com.ibm.icu.util.BytesTrie;
+
+// NOTE: Remember that here, "region" is synonymous with a "partition group ID".
+public class DistanceTableTest {
+    @Test
+    public void testSimpleMapping() {
+        DistanceTable.Builder builder = defaultTable();
+        // You need at least one non default mapping.
+        builder.addDistance(23, true, "en", "en");
+        DistanceTable table = builder.build();
+        assertThat(getTrieTable(table)).containsExactly("en-en", 23);
+        assertThat(table.getDefaultDistances()).asList().containsExactly(80, 50, 4, 4).inOrder();
+    }
+
+    @Test
+    public void testReverseMapping() {
+        DistanceTable.Builder builder = defaultTable();
+        // You need at least one non default mapping.
+        builder.addDistance(1, false, "no", "nb");
+        DistanceTable table = builder.build();
+        assertThat(getTrieTable(table))
+                .containsExactly(
+                        "nb-no", 1,
+                        "no-nb", 1)
+                .inOrder();
+    }
+
+    @Test
+    public void testMinRegionDistance() {
+        DistanceTable.Builder builder = defaultTable();
+        // You need at least one non default mapping.
+        builder.addDistance(2, true, "zh", "zh", "Hant", "Hant", "1", "1");
+        builder.addDistance(4, true, "zh", "zh", "Hant", "Hant", "2", "2");
+        builder.addDistance(6, true, "zh", "zh", "Hant", "Hant", "*", "*");
+        DistanceTable table = builder.build();
+        assertThat(getTrieTable(table))
+                .containsExactly(
+                        // Inferred mappings for "parent" locales.
+                        "zh-zh", 0,                 // Equal locales have zero distance.
+                        "zh-zh-*-*", 50,            // Default unknown script distance
+                        "zh-zh-Hant-Hant", 0,
+                        // Trie ordering prefers "*" mapping at the front.
+                        "zh-zh-Hant-Hant-*-*", 6,
+                        "zh-zh-Hant-Hant-1-1", 2,
+                        "zh-zh-Hant-Hant-2-2", 4)
+                .inOrder();
+        // Minimum region distance is recorded successfully (last value).
+        assertThat(table.getDefaultDistances()).asList().containsExactly(80, 50, 4, 2).inOrder();
+    }
+
+    @Test
+    public void testSkipScript() {
+        DistanceTable.Builder builder = defaultTable();
+        // You need at least one non default mapping.
+        builder.addDistance(2, true, "en", "en", "*", "*", "1", "1");
+        builder.addDistance(4, true, "en", "en", "*", "*", "*", "*");
+        DistanceTable table = builder.build();
+        assertThat(getTrieTable(table))
+                .containsExactly(
+                        // "en-en" is marked for "skip script" so the remaining "en-en-..."
+                        // mappings are correctly interpretted as "language-region".
+                        "en-en", 128,
+                        "en-en-*-*", 4,
+                        "en-en-1-1", 2)
+                .inOrder();
+    }
+
+    @Test
+    public void testFirstOneWins() {
+        DistanceTable.Builder builder = defaultTable();
+        // Duplicate mappings are only expected for "region" where different rules can
+        // produce duplicate mappings by virtue of having non-disjoint region partitions.
+        builder.addDistance(2, true, "en", "en", "*", "*", "1", "1");
+        builder.addDistance(4, true, "en", "en", "*", "*", "1", "1");  // ignored
+        builder.addDistance(6, true, "en", "en", "*", "*", "*", "*");
+        DistanceTable table = builder.build();
+        assertThat(getTrieTable(table))
+                .containsExactly(
+                        "en-en", 128,
+                        "en-en-*-*", 6,
+                        "en-en-1-1", 2)
+                .inOrder();
+    }
+
+    @Test
+    public void testBadDistance() {
+        IllegalArgumentException e = assertThrows(
+                IllegalArgumentException.class,
+                () -> defaultTable().addDistance(123, true, "en", "fr"));
+        assertThat(e).hasMessageThat().contains("distance");
+        assertThat(e).hasMessageThat().contains("123");
+    }
+
+    @Test
+    public void testBadParameters() {
+        IllegalArgumentException e = assertThrows(
+                IllegalArgumentException.class,
+                () -> defaultTable().addDistance(1, true, "en", "en", "*"));
+        assertThat(e).hasMessageThat().contains("invalid number of arguments");
+    }
+
+    @Test
+    public void testBadKeys() {
+        IllegalArgumentException e = assertThrows(
+                IllegalArgumentException.class,
+                () -> defaultTable().addDistance(1, true, "en", "*"));
+        assertThat(e).hasMessageThat().contains("invalid mapping key");
+        assertThat(e).hasMessageThat().contains("en");
+        assertThat(e).hasMessageThat().contains("�");
+    }
+
+    private static DistanceTable.Builder defaultTable() {
+        DistanceTable.Builder table = DistanceTable.builder();
+        // Defaults (which are necessary to add, but should always be trimmed from results).
+        // The actual distances don't matter (and are copied to the distance array).
+        table.addDistance(80, false, "*", "*");
+        table.addDistance(50, false, "*", "*", "*", "*");
+        table.addDistance(4, false, "*", "*", "*", "*", "*", "*");
+        return table;
+    }
+
+    @Test
+    public void testNoDefaultLanguage() {
+        // Don't get the default table, since we need to test without defaults.
+        DistanceTable.Builder builder = DistanceTable.builder();
+        IllegalStateException e = assertThrows(IllegalStateException.class, builder::build);
+        assertThat(e).hasMessageThat().contains("missing default language");
+    }
+
+    @Test
+    public void testNoDefaultScript() {
+        // Don't get the default table, since we need to test without defaults.
+        DistanceTable.Builder builder = DistanceTable.builder();
+        builder.addDistance(80, false, "*", "*");
+        IllegalStateException e = assertThrows(IllegalStateException.class, builder::build);
+        assertThat(e).hasMessageThat().contains("missing default script");
+    }
+
+    @Test
+    public void testNoDefaultRegion() {
+        // Don't get the default table, since we need to test without defaults.
+        DistanceTable.Builder builder = DistanceTable.builder();
+        builder.addDistance(80, false, "*", "*");
+        builder.addDistance(50, false, "*", "*", "*", "*");
+        IllegalStateException e = assertThrows(IllegalStateException.class, builder::build);
+        assertThat(e).hasMessageThat().contains("missing default region");
+    }
+
+    // VisibleForTesting
+    public ImmutableMap<String, Integer> getTrieTable(DistanceTable table) {
+        // We rebuild the Trie from the byte[] data.
+        return TestData.getTrieTable(new BytesTrie(table.getTrie().toByteArray(), 0), "*-*", i -> i);
+    }
+}
diff --git a/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/IndexerTest.java b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/IndexerTest.java
new file mode 100644
index 0000000..7b6636e
--- /dev/null
+++ b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/IndexerTest.java
@@ -0,0 +1,41 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package org.unicode.icu.tool.cldrtoicu.localedistance;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import org.junit.Test;
+
+import com.google.common.collect.ImmutableList;
+
+public class IndexerTest {
+    @Test
+    public void testSimple() {
+        Indexer<String, Integer> indexer = Indexer.create();
+        assertThat(indexer.apply("foo")).isEqualTo(0);
+        assertThat(indexer.apply("bar")).isEqualTo(1);
+        assertThat(indexer.apply("baz")).isEqualTo(2);
+        assertThat(indexer.apply("foo")).isEqualTo(0);
+    }
+
+    @Test
+    public void testWithTransform() {
+        ImmutableList<String> words = ImmutableList.of("ONE", "TWO", "THREE");
+        Indexer<String, String> indexer = Indexer.create(words::get);
+        assertThat(indexer.apply("foo")).isEqualTo("ONE");
+        assertThat(indexer.apply("bar")).isEqualTo("TWO");
+        assertThat(indexer.apply("baz")).isEqualTo("THREE");
+        assertThat(indexer.apply("foo")).isEqualTo("ONE");
+
+    }
+
+    @Test
+    public void getValues() {
+        Indexer<String, Integer> indexer = Indexer.create();
+        indexer.apply("foo");
+        indexer.apply("bar");
+        indexer.apply("baz");
+        indexer.apply("bar");
+        assertThat(indexer.getValues()).containsExactly("foo", "bar", "baz").inOrder();
+    }
+}
diff --git a/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/LikelySubtagsBuilderTest.java b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/LikelySubtagsBuilderTest.java
new file mode 100644
index 0000000..b16a1b1
--- /dev/null
+++ b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/LikelySubtagsBuilderTest.java
@@ -0,0 +1,110 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package org.unicode.icu.tool.cldrtoicu.localedistance;
+
+import static com.google.common.truth.Truth.assertThat;
+import static java.util.Arrays.asList;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.AliasReason.DEPRECATED;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.AliasReason.LEGACY;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.AliasReason.OVERLONG;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.AliasType.LANGUAGE;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.AliasType.TERRITORY;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.alias;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.likelySubtag;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.lsr;
+
+import org.junit.Test;
+import org.unicode.cldr.api.CldrData;
+import org.unicode.cldr.api.CldrDataSupplier;
+import org.unicode.cldr.api.CldrValue;
+
+import com.google.common.collect.ImmutableMap;
+import com.ibm.icu.impl.locale.LSR;
+import com.ibm.icu.impl.locale.XLikelySubtags;
+import com.ibm.icu.util.BytesTrie;
+
+public class LikelySubtagsBuilderTest {
+
+    @Test
+    public void testLanguageAliases() {
+        XLikelySubtags.Data subtags = LikelySubtagsBuilder.build(getTestData(
+                // Minimum mapping (or else code complains).
+                likelySubtag("und", "en_Latn_US"),
+
+                alias(LANGUAGE, DEPRECATED, "in", "id"),
+                alias(LANGUAGE, DEPRECATED, "mo", "ro"),
+                // Overlong languages are ignored.
+                alias(LANGUAGE, OVERLONG, "eng", "en"),
+                // Non-simple languages with script, region or other extensions are ignored.
+                alias(LANGUAGE, LEGACY, "zh_TW", "zh_Hant_TW"),
+                alias(LANGUAGE, LEGACY, "i-default", "en-x-i-default")));
+
+        assertThat(subtags.languageAliases).containsExactly("in", "id", "mo", "ro");
+    }
+
+    @Test
+    public void testTerritoryAliases() {
+        XLikelySubtags.Data subtags = LikelySubtagsBuilder.build(getTestData(
+                // Minimum mapping (or else code complains).
+                likelySubtag("und", "en_Latn_US"),
+
+                // When more than one replacement exists, take the first.
+                alias(TERRITORY, DEPRECATED, "CS", "RS ME"),
+                alias(TERRITORY, DEPRECATED, "UK", "GB"),
+                // Overlong territories are ignored.
+                alias(TERRITORY, OVERLONG, "eng", "en"),
+                alias(TERRITORY, OVERLONG, "999", "ZZ")));
+
+        assertThat(subtags.regionAliases).containsExactly("CS", "RS", "UK", "GB");
+    }
+
+    @Test
+    public void testLikelySubtags() {
+        XLikelySubtags.Data subtags = LikelySubtagsBuilder.build(getTestData(
+                likelySubtag("und", "en_Latn_US"),
+                likelySubtag("en", "en_Latn_US"),
+                likelySubtag("pt", "pt_Latn_BR"),
+                likelySubtag("und_BR", "pt_Latn_BR"),
+                likelySubtag("zh", "zh_Hans_CN"),
+                likelySubtag("zh_TW", "zh_Hant_TW"),
+                likelySubtag("zh_Hant", "zh_Hant_TW")));
+
+        assertThat(subtags.lsrs).asList()
+                .containsExactly(
+                        // Special cases (these should never change).
+                        lsr(""),
+                        lsr("skip-script"),
+                        // Locales mapped to by the likely subtags mappings (in order).
+                        lsr("en-Latn-US"),
+                        lsr("pt-Latn-BR"),
+                        lsr("zh-Hans-CN"),
+                        lsr("zh-Hant-TW"))
+                .inOrder();
+
+        // Order is by "subtag" (left-to-right) with lexicographical order of tags (other
+        // than '*' which is always sorted first).
+        // Results are mapped to their corresponding value in the LSRs list.
+        assertThat(getTrieTable(subtags))
+                .containsExactly(
+                        "*-*-*", lsr("en-Latn-US"),
+                        "*-*-BR", lsr("pt-Latn-BR"),
+                        "*-Latn-*", lsr("en-Latn-US"),
+                        "*-Latn-BR", lsr("pt-Latn-BR"),
+                        "*-Latn-US", lsr("en-Latn-US"),
+                        "en", lsr("en-Latn-US"),
+                        "pt", lsr("pt-Latn-BR"),
+                        "zh-*-*", lsr("zh-Hans-CN"),
+                        "zh-*-TW", lsr("zh-Hant-TW"),
+                        "zh-Hant", lsr("zh-Hant-TW"))
+                .inOrder();
+    }
+
+    private static ImmutableMap<String, LSR> getTrieTable(XLikelySubtags.Data subtags) {
+        // We rebuild the Trie from the byte[] data.
+        return TestData.getTrieTable(new BytesTrie(subtags.trie, 0), "*", i -> subtags.lsrs[i]);
+    }
+
+    private static CldrData getTestData(CldrValue... values) {
+        return CldrDataSupplier.forValues(asList(values));
+    }
+}
diff --git a/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/LocaleDistanceMapperTest.java b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/LocaleDistanceMapperTest.java
new file mode 100644
index 0000000..4e1fafe
--- /dev/null
+++ b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/LocaleDistanceMapperTest.java
@@ -0,0 +1,298 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package org.unicode.icu.tool.cldrtoicu.localedistance;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.truth.Truth.assertThat;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.AliasReason.DEPRECATED;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.AliasReason.LEGACY;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.AliasReason.MACRO;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.AliasType.LANGUAGE;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.AliasType.TERRITORY;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.alias;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.cldrData;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.deprecatedTerritory;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.languageMatch;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.likelySubtag;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.matchVariable;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.paradigms;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.territoryGroup;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.territoryGrouping;
+import static org.unicode.icu.tool.cldrtoicu.testing.IcuDataSubjectFactory.assertThat;
+
+import java.io.ByteArrayOutputStream;
+import java.util.List;
+
+import org.junit.Test;
+import org.unicode.cldr.api.CldrData;
+import org.unicode.icu.tool.cldrtoicu.IcuData;
+import org.unicode.icu.tool.cldrtoicu.RbPath;
+import org.unicode.icu.tool.cldrtoicu.RbValue;
+
+import com.google.common.base.CharMatcher;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSetMultimap;
+import com.ibm.icu.impl.locale.LSR;
+import com.ibm.icu.util.BytesTrie;
+
+/**
+ * Higher level tests for {@link LocaleDistanceMapper} to demonstrate that CLDR values
+ * are matched and processed, and the IcuData is written as expected.
+ *
+ * <p>Most of the separate parts which make up this mapper are already tested at a
+ * lower level in the other tests in this package.
+ */
+public class LocaleDistanceMapperTest {
+    @Test
+    public void testEndToEnd() {
+        // Language match elements are ordered, so need an incrementing sort index.
+        int idx = 0;
+
+        // A representative subset of CLDR data needed to generate the locale distance.
+        // This focuses on two distinct cases:
+        // 1: American vs non-American and British English
+        //    This demonstrates the way that special case mappings are handled.
+        // 2: Chinese, Simplified and Traditional
+        //    This demonstrates languages with multiple scripts.
+        CldrData testData = cldrData(
+                paradigms("en", "en_GB", "es", "es_419"),
+                matchVariable("$enUS", "PR+US+VI"),
+                matchVariable("$cnsar", "HK+MO"),
+
+                // The <languageMatch> element is marked "ORDERED" in the DTD, so
+                // ordering of match rules can can affect output (when paths are
+                // otherwise equal). DTD ordering will not re-order this data.
+                languageMatch("yue", "zh", 10, true, ++idx),
+                languageMatch("*", "*", 80, false, ++idx),
+
+                languageMatch("zh_Hans", "zh_Hant", 15, true, ++idx),
+                languageMatch("zh_Hant", "zh_Hans", 19, true, ++idx),
+                languageMatch("zh_Latn", "zh_Hans", 20, true, ++idx),
+                languageMatch("*_*", "*_*", 50, false, ++idx),
+
+                languageMatch("en_*_$enUS", "en_*_$enUS", 4, false, ++idx),
+                languageMatch("en_*_$!enUS", "en_*_GB", 3, false, ++idx),
+                languageMatch("en_*_$!enUS", "en_*_$!enUS", 4, false, ++idx),
+                languageMatch("en_*_*", "en_*_*", 5, false, ++idx),
+
+                languageMatch("zh_Hant_$cnsar", "zh_Hant_$cnsar", 4, false, ++idx),
+                languageMatch("zh_Hant_$!cnsar", "zh_Hant_$!cnsar", 4, false, ++idx),
+                languageMatch("zh_Hant_*", "zh_Hant_*", 5, false, ++idx),
+                languageMatch("*_*_*", "*_*_*", 4, false, ++idx),
+
+                // NOTE: This is deliberately NOT in DTD order to demonstrate that the
+                // mapper will reorder these (putting "und" last) which means that the
+                // ICU data here is NOT affected by changes in the likely subtag order).
+                likelySubtag("und", "en_Latn_US"),
+                likelySubtag("und_HK", "zh_Hant_HK"),
+                likelySubtag("und_MO", "zh_Hant_MO"),
+                likelySubtag("und_TW", "zh_Hant_TW"),
+                likelySubtag("und_030", "zh_Hans_CN"),
+                likelySubtag("und_142", "zh_Hans_CN"),
+                likelySubtag("und_CN", "zh_Hans_CN"),
+                likelySubtag("und_Hans", "zh_Hans_CN"),
+                likelySubtag("und_Hant", "zh_Hant_TW"),
+                likelySubtag("zh", "zh_Hans_CN"),
+                likelySubtag("zh_Hant", "zh_Hant_TW"),
+                likelySubtag("zh_TW", "zh_Hant_TW"),
+
+                // NOT in DTD order (to demonstrate order invariance later).
+                alias(LANGUAGE, LEGACY, "zh_SG", "zh_Hans_SG"),
+                alias(LANGUAGE, LEGACY, "zh_HK", "zh_Hant_HK"),
+                alias(LANGUAGE, LEGACY, "zh_TW", "zh_Hant_TW"),
+                alias(LANGUAGE, LEGACY, "zh_MO", "zh_Hant_MO"),
+                alias(LANGUAGE, LEGACY, "zh_CN", "zh_Hans_CN"),
+                alias(LANGUAGE, MACRO, "cmn", "zh"),
+
+                // NOT in DTD order (to demonstrate order invariance later).
+                alias(TERRITORY, DEPRECATED, "UK", "GB"),
+                alias(TERRITORY, DEPRECATED, "AN", "CW", "SX", "BQ"),
+
+                // Rather trimmed down containment hierarchy. It still retains macro
+                // regions and grouping to demonstrate that these work as expected.
+                territoryGroup("001", "019", "142", "150"),          // World
+                territoryGrouping("001", "EU"),
+                territoryGroup("019", "021", "419"),                 // Americas
+                territoryGroup("142", "030", "035"),                 // Asia
+                territoryGroup("150", "154", "155"),                 // Europe
+                territoryGrouping("EU", "DE", "FR", "IE"),           // European Union (no CH or GB)
+                territoryGroup("021", "CA", "PM", "US"),             // Northern America
+                territoryGroup("419", "013", "029"),                 // Latin America and the Caribbean
+                territoryGroup("030", "CN", "HK", "MO", "TW"),       // Eastern Asia
+                territoryGroup("035", "PH", "SG", "TH", "VN"),       // South-Eastern Asia
+                territoryGroup("154", "GB", "IE"),                   // Northern Europe
+                territoryGroup("155", "CH", "DE", "FR"),             // Western Europe
+                territoryGroup("013", "CR", "MX", "PA"),             // Central America
+                territoryGroup("029", "BQ", "CW", "PR", "SX", "VI"), // Caribbean
+                deprecatedTerritory("029", "AN"));                   // Antilles (=> BQ, CW, SX)
+
+        IcuData icuData = LocaleDistanceMapper.process(testData);
+        // Aliases come in (deprecated, replacement) pairs.
+        assertThat(icuData).hasValuesFor("likely/languageAliases", "cmn", "zh");
+        assertThat(icuData).hasValuesFor("likely/regionAliases", "AN", "CW", "UK", "GB");
+
+        // LSR values come in (language, script, region) tuples. They are the mapped-to
+        // values for the likely subtag mappings, ordered by the DTD order in which the
+        // mapping keys were encountered.
+        assertThat(icuData).hasValuesFor("likely/lsrs",
+                "", "", "",
+                "skip", "script", "",
+                "zh", "Hans", "CN",
+                "zh", "Hant", "TW",
+                "en", "Latn", "US",
+                "zh", "Hant", "HK",
+                "zh", "Hant", "MO");
+
+        // It's a bit easier to see how match keys are grouped against the partitions.
+        ImmutableSetMultimap<Integer, String> likelyTrie =
+                getTrieMap(icuData, "likely/trie:bin", "*").asMultimap().inverse();
+
+        // Special values in the lookup table don't map from any locales directly.
+        assertThat(likelyTrie).valuesForKey(0).isEmpty();
+        assertThat(likelyTrie).valuesForKey(1).isEmpty();
+
+        // Index 4: en-Latn-US (the general default and default for Latn).
+        assertThat(likelyTrie).valuesForKey(4).containsExactly("*-Latn-*", "*-Latn-US", "*-*-*");
+
+        // Index 2: zh-Hans-CN (default for zh, Hans and CN separately).
+        assertThat(likelyTrie).valuesForKey(2).containsExactly(
+                "*-*-030", "*-*-142",               // macro regions
+                "*-*-CN", "*-Hans-*", "*-Hans-CN",  // unknown language match
+                "cmn-*-*",                          // language alias
+                "zh-*-*");                          // default for language
+
+        // Index 2: zh-Hant-TW (default for zh if Hant or TW is given).
+        assertThat(likelyTrie).valuesForKey(3).containsExactly(
+                "*-*-TW", "*-Hant-*", "*-Hant-TW",  // unknown language match
+                "cmn-*-TW", "cmn-Hant",             // language alias with specific script/region
+                "zh-*-TW", "zh-Hant");              // default for script/region
+
+        // Other zh languages (zh-Hant-HK, zh-Hant-MO) require an explicit region match.
+        assertThat(likelyTrie).valuesForKey(5).containsExactly("*-*-HK", "*-Hant-HK");
+        assertThat(likelyTrie).valuesForKey(6).containsExactly("*-*-MO", "*-Hant-MO");
+
+        // Pairs of expanded paradigm locales (using LSR tuples) in declaration order.
+        // This is just the list from the CLDR data with no processing.
+        assertThat(icuData).hasValuesFor("match/paradigms",
+                "en", "Latn", "US",
+                "en", "Latn", "GB",
+                "es", "Latn", "ES",
+                "es", "Latn", "419");
+
+        // See PartitionInfoTest for a description of the ordering of these strings.
+        assertThat(icuData).hasValuesFor("match/partitions",
+                ".", "0", "1", "2", "3", "0123", "03", "02", "01");
+
+        ImmutableMap<String, Integer> matchTrie = getTrieMap(icuData, "match/trie:bin", "*-*");
+        byte[] regionLookup = getBytes(icuData, "match/regionToPartitions:bin");
+        ImmutableList<String> partitions =
+                icuData.get(RbPath.parse("match/partitions")).get(0).getElements();
+
+        // Test defaults have been trimmed.
+        assertThat(matchTrie).doesNotContainKey("*-*");
+        assertThat(matchTrie).doesNotContainKey("*-*-*-*");
+        assertThat(matchTrie).doesNotContainKey("*-*-*-*-*-*");
+
+        // Some zh specific tests.
+        assertThat(matchTrie).containsEntry("yue-zh", 10);  // Encapsulated language
+        assertThat(matchTrie).containsEntry("zh-zh-Hant-Hant-*-*", 5);
+
+        // Special marker that means "en-en" matches don't use script information.
+        // This is assumed in the distance tests below, so it's important to check.
+        assertThat(matchTrie).containsEntry("en-en", 128);
+
+        // British English is a slightly better match against non-American English.
+        assertEnDistanceForRegions(matchTrie, regionLookup, partitions, "CA", "GB", 3);
+        assertEnDistanceForRegions(matchTrie, regionLookup, partitions, "GB", "GB", 3);
+        // "EU" works here because while it's a macro region, in this data it only
+        // covers a single partition.
+        assertEnDistanceForRegions(matchTrie, regionLookup, partitions, "GB", "EU", 3);
+
+        // Pairs of non-American or American English languages get a larger distance.
+        assertEnDistanceForRegions(matchTrie, regionLookup, partitions, "CA", "DE", 4);
+        assertEnDistanceForRegions(matchTrie, regionLookup, partitions, "US", "PR", 4);
+        // Deprecated regions (AN) are still mapped to partitions and get real distances.
+        assertEnDistanceForRegions(matchTrie, regionLookup, partitions, "AN", "TW", 4);
+
+        // Mixing American and non-American English gets the default "en-en-*-*" distance.
+        assertEnDistanceForRegions(matchTrie, regionLookup, partitions, "GB", "US", 5);
+        assertEnDistanceForRegions(matchTrie, regionLookup, partitions, "CA", "US", 5);
+        assertEnDistanceForRegions(matchTrie, regionLookup, partitions, "US", "AN", 5);
+
+        // Default distances for language, script and region, plus minimum region distance.
+        // Minimum region distance is "en_*_$!enUS" -> "en_*_GB" (as seen above).
+        assertThat(icuData).hasValuesFor("match/distances:intvector", "80", "50", "4", "3");
+    }
+
+    // Helper to make assertions about language distance a bit more readable.
+    // PartitionInfoTest includes more low level tests for precise ordering etc.
+    private static void assertEnDistanceForRegions(
+            ImmutableMap<String, Integer> matchTrie,
+            byte[] regionLookup,
+            ImmutableList<String> paritions,
+            String regionA, String regionB,
+            int distance) {
+        // Three step lookup for each region:
+        // 1: Find LSR index from region string.
+        // 2: Lookup partition group index from region lookup table.
+        // 3: Lookup partition group string from partitions table.
+        String partitionA = paritions.get(regionLookup[LSR.indexForRegion(regionA)]);
+        String partitionB = paritions.get(regionLookup[LSR.indexForRegion(regionB)]);
+
+        // For now only support cases where there's a single partition ID associated
+        // with the region (this is all non-macro regions and *some* macro regions).
+        checkArgument(partitionA.length() == 1 && partitionB.length() == 1,
+                "multiple partitions unsupported in test: %s %s", regionA, regionB);
+
+        // This is a depth 2 key because we know that "en" skips scripts. This will
+        // not work the same for "zh" because that needs scripts information.
+        String key = String.format("en-en-%s-%s", partitionA, partitionB);
+        if (matchTrie.containsKey(key)) {
+            assertThat(matchTrie).containsEntry(key, distance);
+        } else {
+            assertThat(matchTrie).containsEntry("en-en-*-*", distance);
+        }
+    }
+
+    // Returns the mapping for a Trie from a ":bin" suffixed resource value.
+    // "star" defines what the Trie wildcard should be expanded to (for readability).
+    private static ImmutableMap<String, Integer> getTrieMap(IcuData icuData, String path, String star) {
+        return TestData.getTrieTable(getTrie(icuData, path), star, i -> i);
+    }
+
+    // Reads a Trie from a ":bin" suffixed resource value.
+    private static BytesTrie getTrie(IcuData icuData, String path) {
+        return new BytesTrie(getBytes(icuData, path), 0);
+    }
+
+    // Reads a byte array from a ":bin" suffixed resource value.
+    private static byte[] getBytes(IcuData icuData, String path) {
+        RbPath rbPath = RbPath.parse(path);
+        checkArgument(rbPath.isBinPath(), "only binary paths (:bin) should have binary data: %s", path);
+        List<RbValue> rbValues = icuData.get(rbPath);
+        checkArgument(rbValues != null, "missing value for: %s", rbPath);
+        checkArgument(rbValues.size() == 1, "expect single RbValue: %s", rbValues);
+        // Take a sequence of hex-strings, convert each to a byte[] and collect them.
+        return rbValues.get(0).getElements().stream()
+                .map(LocaleDistanceMapperTest::decodeHex)
+                .collect(
+                        ByteArrayOutputStream::new,
+                        (out, b) -> out.write(b, 0, b.length),
+                        (out, b) -> out.write(b.toByteArray(), 0, b.size()))
+                .toByteArray();
+    }
+
+    // Hex chars to byte array (2 chars per byte, little endian).
+    private static byte[] decodeHex(String s) {
+        checkArgument(s.length() % 2 == 0, "binary hex strings must have an even length: %s", s);
+        checkArgument(HEX.matchesAllOf(s), "invalid binary hex string: %s", s);
+        byte[] bytes = new byte[s.length() / 2];
+        for (int n = 0; n < bytes.length; n++) {
+            bytes[n] = (byte) Integer.parseUnsignedInt(s.substring(2 * n, 2 * (n + 1)), 16);
+        }
+        return bytes;
+    }
+
+    private static final CharMatcher HEX = CharMatcher.anyOf("0123456789abcdefABCDEF");
+}
diff --git a/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/PartitionInfoTest.java b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/PartitionInfoTest.java
new file mode 100644
index 0000000..bebc4bb
--- /dev/null
+++ b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/PartitionInfoTest.java
@@ -0,0 +1,91 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package org.unicode.icu.tool.cldrtoicu.localedistance;
+
+import static com.google.common.truth.Truth.assertThat;
+import static java.util.Arrays.asList;
+
+import org.junit.Test;
+import org.unicode.cldr.api.CldrDataSupplier;
+import org.unicode.cldr.api.CldrValue;
+
+import com.ibm.icu.impl.locale.LSR;
+
+public class PartitionInfoTest {
+    @Test
+    public void testPartitionInfo() {
+        TerritoryContainment territories = territories(
+                TestData.territoryGroup("001", "019", "150"),
+                // Americas (simplified): North America + Caribbean
+                TestData.territoryGroup("019", "003", "029"),
+                TestData.territoryGroup("003", "CA", "US"),
+                TestData.territoryGroup("029", "PR", "VI"),
+                // Sort of Europe
+                TestData.territoryGroup("150", "DE", "FR", "GB"));
+        PartitionInfo.Builder builder = PartitionInfo.builder(territories);
+        // "American English" associated with U.S.A and Puerto Rico.
+        builder.addVariableExpression("$enUS", "US+PR");
+        // The "Americas" form a different language grouping.
+        builder.addVariableExpression("$americas", "019");
+        // Also register a separate variable for just the GB region code.
+        builder.ensureVariable("GB");
+
+        // In terms of "partitions" (which are assigned in sorted region code order)
+        // we should now have:
+        //
+        // CA, VI -> { $americas, $!enUS } == "0"
+        // DE, FR -> { $!americas, $!enUS } == "1"
+        // GB     -> { $!americas, $!enUS, $GB } == "2"
+        // PR, US -> { $americas, $enUS } == "3"
+        //
+        // So reversing this to map variables to the partitions they overlap with:
+        // "$enUS"      -> { "3" }
+        // "$!enUS"     -> { "0", "1", "2" }
+        // "$americas"  -> { "0", "3" }
+        // "$!americas" -> { "1", "2" }
+        // "$GB"        -> { "2" }
+        PartitionInfo info = builder.build();
+        assertThat(info.getPartitionIds("$enUS")).containsExactly("3");
+        assertThat(info.getPartitionIds("$!enUS")).containsExactly("0", "1", "2");
+        assertThat(info.getPartitionIds("$americas")).containsExactly("0", "3");
+        assertThat(info.getPartitionIds("$!americas")).containsExactly("1", "2");
+        assertThat(info.getPartitionIds("$GB")).containsExactly("2");
+
+        // Partition strings are made up of the explicit partition IDs.
+        // Indices are also assigned in first encountered region code order.
+        assertThat(info.getPartitionStrings()).asList().containsExactly(
+                // Default (unmapped) special case must be first.
+                ".",      // ??            : index=0
+                // Partitions IDs for "leaf" regions (only one partition per region).
+                "0",      // CA, VI        : index=1
+                "1",      // DE, FR        : index=2
+                "2",      // GB            : index=3
+                "3",      // PR, US        : index=4
+                // Macros regions include paritions of all overlapping regions.
+                "0123",   // 001           : index=5
+                "03",     // 003, 019, 029 : index=6
+                "12")     // 150           : index=7
+            .inOrder();
+
+        // The partition lookup array maps regions to the index of their partition string.
+        byte[] lookup = info.getPartitionLookupArray();
+        assertThat(lookup[LSR.indexForRegion("CA")]).isEqualTo(1);
+        assertThat(lookup[LSR.indexForRegion("VI")]).isEqualTo(1);
+        assertThat(lookup[LSR.indexForRegion("DE")]).isEqualTo(2);
+        assertThat(lookup[LSR.indexForRegion("FR")]).isEqualTo(2);
+        assertThat(lookup[LSR.indexForRegion("GB")]).isEqualTo(3);
+        assertThat(lookup[LSR.indexForRegion("PR")]).isEqualTo(4);
+        assertThat(lookup[LSR.indexForRegion("US")]).isEqualTo(4);
+        assertThat(lookup[LSR.indexForRegion("001")]).isEqualTo(5);
+        assertThat(lookup[LSR.indexForRegion("003")]).isEqualTo(6);
+        assertThat(lookup[LSR.indexForRegion("019")]).isEqualTo(6);
+        assertThat(lookup[LSR.indexForRegion("029")]).isEqualTo(6);
+        assertThat(lookup[LSR.indexForRegion("150")]).isEqualTo(7);
+        // Unknown regions map to index 0.
+        assertThat(lookup[LSR.indexForRegion("JP")]).isEqualTo(0);
+    }
+
+    private static TerritoryContainment territories(CldrValue... tcs) {
+        return TerritoryContainment.getContainment(CldrDataSupplier.forValues(asList(tcs)));
+    }
+}
diff --git a/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/TerritoryContainmentTest.java b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/TerritoryContainmentTest.java
new file mode 100644
index 0000000..27c10c4
--- /dev/null
+++ b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/TerritoryContainmentTest.java
@@ -0,0 +1,70 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package org.unicode.icu.tool.cldrtoicu.localedistance;
+
+import static com.google.common.truth.Truth.assertThat;
+import static java.util.Arrays.asList;
+import static org.unicode.icu.tool.cldrtoicu.localedistance.TestData.territoryGroup;
+import static org.unicode.icu.tool.cldrtoicu.testing.AssertUtils.assertThrows;
+
+import org.junit.Test;
+import org.unicode.cldr.api.CldrData;
+import org.unicode.cldr.api.CldrDataSupplier;
+import org.unicode.cldr.api.CldrValue;
+
+public class TerritoryContainmentTest {
+
+    @Test
+    public void testSimple() {
+        CldrData testData = getTestData(
+                territoryGroup("001", "002", "003"),
+                territoryGroup("002", "GB", "FR"),
+                territoryGroup("003", "US", "CA"));
+        TerritoryContainment containment = TerritoryContainment.getContainment(testData);
+        assertThat(containment.getMacroRegions()).containsExactly("001", "002", "003").inOrder();
+        assertThat(containment.getLeafRegions()).containsExactly("CA", "FR", "GB", "US").inOrder();
+        assertThat(containment.getLeafRegionsOf("002")).containsExactly("FR", "GB").inOrder();
+        assertThat(containment.getLeafRegionsOf("GB")).isEmpty();
+    }
+
+    @Test
+    public void testOverlappingContainment() {
+        CldrData testData = getTestData(
+                territoryGroup("001", "002", "003", "004"),
+                territoryGroup("002", "GB", "FR"),
+                territoryGroup("003", "US", "CA"),
+                territoryGroup("004", "CA", "GB"));
+        TerritoryContainment containment = TerritoryContainment.getContainment(testData);
+        assertThat(containment.getLeafRegions()).containsExactly("CA", "FR", "GB", "US").inOrder();
+        assertThat(containment.getLeafRegionsOf("002")).containsExactly("FR", "GB").inOrder();
+        assertThat(containment.getLeafRegionsOf("004")).containsExactly("CA", "GB").inOrder();
+    }
+
+    @Test
+    public void testMultipleRootsFails() {
+        CldrData testData = getTestData(
+                territoryGroup("001", "002"),
+                territoryGroup("002", "GB", "FR"),
+                territoryGroup("003", "US", "CA"));
+        IllegalArgumentException err =
+                assertThrows(IllegalArgumentException.class, () -> TerritoryContainment.getContainment(testData));
+        assertThat(err).hasMessageThat().contains("001");
+        assertThat(err).hasMessageThat().contains("003");
+        assertThat(err).hasMessageThat().doesNotContain("002");
+    }
+
+    @Test
+    public void testCyclicGraphFails() {
+        CldrData testData = getTestData(
+                territoryGroup("001", "002"),
+                territoryGroup("002", "001"));
+        IllegalArgumentException err =
+                assertThrows(IllegalArgumentException.class, () -> TerritoryContainment.getContainment(testData));
+        assertThat(err).hasMessageThat().contains("world region");
+        assertThat(err).hasMessageThat().contains("001");
+    }
+
+    private static CldrData getTestData(CldrValue... values) {
+        return CldrDataSupplier.forValues(asList(values));
+    }
+}
diff --git a/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/TestData.java b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/TestData.java
new file mode 100644
index 0000000..e228a85
--- /dev/null
+++ b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/TestData.java
@@ -0,0 +1,158 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package org.unicode.icu.tool.cldrtoicu.localedistance;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static java.util.Arrays.asList;
+
+import java.util.List;
+
+import org.unicode.cldr.api.CldrData;
+import org.unicode.cldr.api.CldrDataSupplier;
+import org.unicode.cldr.api.CldrValue;
+
+import com.google.common.base.Ascii;
+import com.google.common.base.Function;
+import com.google.common.base.Splitter;
+import com.google.common.collect.ImmutableMap;
+import com.ibm.icu.impl.locale.LSR;
+import com.ibm.icu.util.BytesTrie;
+
+/**
+ * Utilities for easily generating test data for the LocaleDistanceMapper tests.
+ */
+final class TestData {
+    /**
+     * Returns an LSR from a locale ID pattern (e.g. "und", "zh-Hant", "en-*-GB").
+     * This is definitely not a general locale parser!
+     */
+    static LSR lsr(String s) {
+        List<String> parts = Splitter.on('-').splitToList(s);
+        checkArgument(parts.size() <= 3);
+        return new LSR(
+                parts.get(0),
+                parts.size() > 1 ? parts.get(1) : "",
+                parts.size() > 2 ? parts.get(2) : "",
+                LSR.DONT_CARE_FLAGS);
+    }
+
+    enum AliasType { LANGUAGE, TERRITORY }
+
+    enum AliasReason { DEPRECATED, OVERLONG, LEGACY, MACRO }
+
+    /** Returns CLDR data for the given values. */
+    static CldrData cldrData(CldrValue... values) {
+        return CldrDataSupplier.forValues(asList(values));
+    }
+
+    /** Returns a CldrValue for a {@code <paradigmLocales>} element. */
+    static CldrValue paradigms(String... values) {
+        return supplemental(
+                "languageMatching/languageMatches[@type=\"written_new\"]/"
+                        + "paradigmLocales[@locales=\"%s\"]",
+                String.join(" ", values));
+    }
+
+    /** Returns a CldrValue for a {@code <matchVariable>} element. */
+    static CldrValue matchVariable(String id, String value) {
+        return supplemental(
+                "languageMatching/languageMatches[@type=\"written_new\"]/"
+                        + "matchVariable[@id=\"%s\"][@value=\"%s\"]",
+                id, value);
+    }
+
+    /** Returns a CldrValue for a {@code <languageMatch>} element. */
+    static CldrValue languageMatch(
+            String desired, String supported, int distance, boolean oneway, int sort) {
+        return supplemental(
+                "languageMatching/languageMatches[@type=\"written_new\"]/"
+                        + "languageMatch[@_q=\"%d\"][@desired=\"%s\"][@supported=\"%s\"][@distance=\"%d\"]%s",
+                sort, desired, supported, distance, oneway ? "[@oneway=\"true\"]" : "");
+    }
+
+    /** Returns a CldrValue for either a {@code <languageAlias>} or {@code <territoryAlias>} element. */
+    static CldrValue alias(AliasType type, AliasReason reason, String value, String... replacement) {
+        return supplemental(
+                "metadata/alias/%sAlias[@type=\"%s\"][@replacement=\"%s\"][@reason=\"%s\"]",
+                lower(type), value, String.join(" ", replacement), lower(reason));
+    }
+
+    /** Returns a CldrValue for either a {@code <likelySubtags>} element. */
+    static CldrValue likelySubtag(String from, String to) {
+        return supplemental(
+                "likelySubtags/likelySubtag[@from=\"%s\"][@to=\"%s\"]",
+                from, to);
+    }
+
+    /** Returns a CldrValue for a {@code <territoryContainment>} group element. */
+    static CldrValue territoryGroup(String region, String... subregions) {
+        return supplemental(
+                "territoryContainment/group[@type=\"%s\"][@contains=\"%s\"]",
+                region, String.join(" ", subregions));
+    }
+
+    /**
+     * Returns a CldrValue for a {@code <territoryContainment>} group element where
+     * {@code @status="group"}.
+     */
+    static CldrValue territoryGrouping(String region, String... subregions) {
+        return supplemental(
+                "territoryContainment/group[@type=\"%s\"][@contains=\"%s\"][@status=\"group\"]",
+                region, String.join(" ", subregions));
+    }
+
+    /**
+     * Returns a CldrValue for a {@code <territoryContainment>} group element where
+     * {@code @status="deprecated"}.
+     */
+    static CldrValue deprecatedTerritory(String region, String... subregions) {
+        return supplemental(
+                "territoryContainment/group[@type=\"%s\"][@contains=\"%s\"][@status=\"deprecated\"]",
+                region, String.join(" ", subregions));
+    }
+
+    /**
+     * Returns a map from expanded Trie keys to mapped value. This is useful in allowing
+     * tests to use human readable data when testing Tries.
+     *
+     * @param star a string representing the Trie wildcard in the output keys, which for
+     *             readability differs between use cases (e.g. "*" for subtags and "*-*"
+     *             for match rules).
+     * @param fn a function to map the actual Trie value to a more readable value for
+     *           testing.
+     */
+    static <T> ImmutableMap<String, T> getTrieTable(BytesTrie trie, String star, Function<Integer, T> fn) {
+        // Mostly copied from LocaleDistance (since the necessary constructor is private).
+        // Main change is the this no longer uses a TreeMap, since we want to test order.
+        ImmutableMap.Builder<String, T> map = ImmutableMap.builder();
+        StringBuilder sb = new StringBuilder();
+        for (BytesTrie.Entry entry : trie) {
+            sb.setLength(0);
+            int length = entry.bytesLength();
+            for (int i = 0; i < length; ++i) {
+                byte b = entry.byteAt(i);
+                if (b == '*') {
+                    sb.append(star).append('-');
+                } else if (b >= 0) {
+                    sb.append((char) b);
+                } else {  // end of subtag (high bit set)
+                    sb.append((char) (b & 0x7f)).append('-');
+                }
+            }
+            assert sb.length() > 0 && sb.charAt(sb.length() - 1) == '-';
+            sb.setLength(sb.length() - 1);
+            map.put(sb.toString(), fn.apply(entry.value));
+        }
+        return map.build();
+    }
+
+    private static CldrValue supplemental(String path, Object... args) {
+        return CldrValue.parseValue(String.format("//supplementalData/" + path, args), "");
+    }
+
+    private static String lower(Enum<?> value) {
+        return Ascii.toLowerCase(value.name());
+    }
+
+    private TestData() {}
+}
diff --git a/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/TrieTest.java b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/TrieTest.java
new file mode 100644
index 0000000..e57981a
--- /dev/null
+++ b/tools/cldr/cldr-to-icu/src/test/java/org/unicode/icu/tool/cldrtoicu/localedistance/TrieTest.java
@@ -0,0 +1,163 @@
+// © 2020 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+package org.unicode.icu.tool.cldrtoicu.localedistance;
+
+import static com.google.common.base.Preconditions.checkState;
+import static com.google.common.truth.Truth.assertThat;
+import static org.unicode.icu.tool.cldrtoicu.testing.AssertUtils.assertThrows;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.junit.Test;
+
+import com.google.common.collect.ImmutableMap;
+import com.ibm.icu.util.BytesTrie;
+
+public class TrieTest {
+    @Test
+    public void testSimple() {
+        Trie trie = new Trie();
+        trie.root().with("answer", t -> t.putPrefixAndValue(42));
+        assertThat(getRawTrieTable(trie.toByteArray())).containsExactly("answer", 42);
+    }
+
+    @Test
+    public void testSubSpan() {
+        Trie trie = new Trie();
+        trie.root().with("foo", foo -> foo.with("bar", fooBar -> fooBar.putPrefixAndValue(42)));
+        assertThat(getRawTrieTable(trie.toByteArray())).containsExactly("foo-bar", 42);
+    }
+
+    @Test
+    public void testHierarchyAndOrdering() {
+        Trie trie = new Trie();
+        trie.root().with("foo", foo -> {
+            foo.with("two", sub -> sub.putPrefixAndValue(3));
+            foo.with("one", sub -> sub.putPrefixAndValue(2));
+            foo.with("*", sub -> sub.putPrefixAndValue(1));
+        });
+        trie.root().with("bar", bar -> bar.with("baz", baz -> baz.with("quux", quux -> quux.putPrefixAndValue(0))));
+
+        // Order is by "subtag" (left-to-right) with lexicographical order of tags (other
+        // than '*' which is always sorted first).
+        assertThat(getRawTrieTable(trie.toByteArray()))
+                .containsExactly(
+                        "bar-baz-quux", 0,
+                        "foo-*", 1,
+                        "foo-one", 2,
+                        "foo-two", 3)
+                .inOrder();
+    }
+
+    @Test
+    public void testStarOrdering() {
+        Trie trie = new Trie();
+        // Use '$' which has a lower byte value that '*' in ASCII, but when it terminates a prefix,
+        // it has bit-7 set which makes it sort higher than '*'.
+        // In other tests it's not clear that '*' is sorted specially since '*' < [a-z] anyway.
+        trie.root().with("$", foo -> {
+            // A single '$' sorts after '*' because '$' will have bit-7 set, and '*' will not.
+            foo.with("$", sub -> sub.putPrefixAndValue(5));
+            // '$$' sorts below * because the leading '$' won't have bit-7 set.
+            foo.with("$$", sub -> sub.putPrefixAndValue(3));
+            foo.with("*", sub -> sub.putPrefixAndValue(4));
+        });
+        trie.root().with("*", foo -> {
+            foo.with("$", sub -> sub.putPrefixAndValue(2));
+            foo.with("*", sub -> sub.putPrefixAndValue(1));
+        });
+        trie.root().with("*", sub -> sub.putPrefixAndValue(0));
+
+        // Star is definitely sorted before other entries.
+        assertThat(getRawTrieTable(trie.toByteArray()))
+                .containsExactly(
+                        "*", 0,
+                        "*-*", 1,
+                        "*-$", 2,
+                        "$-$$", 3,
+                        "$-*", 4,
+                        "$-$", 5)
+                .inOrder();
+    }
+
+    @Test
+    public void testBadTrie_BadValue() {
+        Trie trie = new Trie();
+        IllegalArgumentException e =
+                assertThrows(
+                        IllegalArgumentException.class,
+                        () -> trie.root().with("foo", t -> t.putPrefixAndValue(-1)));
+        assertThat(e).hasMessageThat().contains("bad trie value");
+        assertThat(e).hasMessageThat().contains("-1");
+    }
+
+    @Test
+    public void testBadTrie_NoPrefix() {
+        Trie trie = new Trie();
+        IllegalStateException e =
+                assertThrows(IllegalStateException.class, () -> trie.root().putPrefixAndValue(23));
+        assertThat(e).hasMessageThat().contains("missing prefix");
+        assertThat(e).hasMessageThat().contains("23");
+    }
+
+    @Test
+    public void testBadTrie_BadPrefix() {
+        Trie trie = new Trie();
+        IllegalArgumentException e =
+                assertThrows(
+                        IllegalArgumentException.class,
+                        () -> trie.root().with("ümlaut", t -> t.putPrefixAndValue(0)));
+        assertThat(e).hasMessageThat().contains("invalid trie character");
+        assertThat(e).hasMessageThat().contains("ü");
+    }
+
+    @Test
+    public void testBadTrie_NoStarInPrefix() {
+        Trie trie = new Trie();
+        IllegalArgumentException e =
+                assertThrows(
+                        IllegalArgumentException.class,
+                        () -> trie.root().with("foo*bar", t -> t.putPrefixAndValue(0)));
+        assertThat(e).hasMessageThat().contains("must not contain '*'");
+        assertThat(e).hasMessageThat().contains("foo*bar");
+    }
+
+    @Test
+    public void testBadTrie_TooLong() {
+        Trie trie = new Trie();
+        IllegalStateException e =
+                assertThrows(IllegalStateException.class, () -> infiniteRecursion(trie.root()));
+        assertThat(e).hasMessageThat().contains("span too long");
+    }
+
+    private static void infiniteRecursion(Trie.Span span) {
+        span.with("!", TrieTest::infiniteRecursion);
+    }
+
+    private static ImmutableMap<String, Integer> getRawTrieTable(byte[] data) {
+        // We rebuild the Trie from the byte[] data.
+        BytesTrie trie = new BytesTrie(data, 0);
+
+        // Mostly copied from XLikelySubtags (since the necessary constructor is private).
+        // Main change is the this no longer uses a TreeMap, since we want to test order.
+        Map<String, Integer> map = new LinkedHashMap<>();
+        StringBuilder sb = new StringBuilder();
+        for (BytesTrie.Entry entry : trie) {
+            sb.setLength(0);
+            int length = entry.bytesLength();
+            for (int i = 0; i < length; i++) {
+                byte b = entry.byteAt(i);
+                sb.append((char) (b & 0x7f));
+                if (b < 0 || b == '*') {
+                    // end of subtag (high bit set or special '*' wildcard)
+                    sb.append("-");
+                }
+            }
+            checkState(sb.length() > 0 && sb.charAt(sb.length() - 1) == '-');
+            sb.setLength(sb.length() - 1);
+            map.put(sb.toString(), entry.value);
+        }
+        return ImmutableMap.copyOf(map);
+    }
+}
diff --git a/tools/cldr/lib/README.txt b/tools/cldr/lib/README.txt
new file mode 100644
index 0000000..be0fcf3
--- /dev/null
+++ b/tools/cldr/lib/README.txt
@@ -0,0 +1,101 @@
+*********************************************************************
+*** © 2019 and later: Unicode, Inc. and others.                   ***
+*** License & terms of use: http://www.unicode.org/copyright.html ***
+*********************************************************************
+
+What is this directory and why is it empty?
+-------------------------------------------
+
+This is the root of a local Maven repository which needs to be populated before
+code which uses the CLDR data API can be executed.
+
+To do this, you need to have a local copy of the CLDR project configured on your
+computer and be able able to build the API jar file and copy an existing utility
+jar file. In the examples below it is assumed that $CLDR_ROOT references this
+CLDR release.
+
+Setup
+-----
+
+This project relies on the Maven build tool for managing dependencies and uses
+Ant for configuration purposes, so both will need to be installed. On a Debian
+based system, this should be as simple as:
+
+$ sudo apt-get install maven ant
+
+
+Installing the CLDR API jar
+---------------------------
+
+From this directory:
+
+$ ./install-cldr-jars.sh "$CLDR_DIR"
+
+
+Manually installing the CLDR API jar
+------------------------------------
+
+Only follow these remaining steps if the installation script isn't suitable or
+doesn't work on your system.
+
+To regenerate the CLDR API jar you need to build the "jar" target manually
+using the Ant build.xml file in the "tools/java" directory of the CLDR project:
+
+$ cd "$CLDR_ROOT/tools/java"
+$ ant clean jar
+
+This should result in the cldr.jar file being built into that directory, which
+can then be installed as a Maven dependency as described above.
+
+
+Updating local Maven repository
+-------------------------------
+
+To update the local Maven repository (e.g. to install the CLDR jar) then from
+this directory (lib/) you should run:
+
+$ mvn install:install-file \
+  -Dproject.parent.relativePath="" \
+  -DgroupId=org.unicode.cldr \
+  -DartifactId=cldr-api \
+  -Dversion=0.1-SNAPSHOT \
+  -Dpackaging=jar \
+  -DgeneratePom=true \
+  -DlocalRepositoryPath=. \
+  -Dfile="$CLDR_ROOT/tools/java/cldr.jar"
+
+And if you have updated one of these libraries then from this directory run:
+
+$ mvn dependency:purge-local-repository \
+  -Dproject.parent.relativePath="" \
+  -DmanualIncludes=org.unicode.cldr:cldr-api:jar
+
+After doing this, you should see something like the following list of files in
+this directory:
+
+README.txt   <-- this file
+org/unicode/cldr/cldr-api/maven-metadata-local.xml
+org/unicode/cldr/cldr-api/0.1-SNAPSHOT/maven-metadata-local.xml
+org/unicode/cldr/cldr-api/0.1-SNAPSHOT/cldr-api-0.1-SNAPSHOT.pom
+org/unicode/cldr/cldr-api/0.1-SNAPSHOT/cldr-api-0.1-SNAPSHOT.jar
+
+Finally, if you choose to update the version number of the snapshot, then also
+update all the the pom.xml files which reference it (but this is unlikely to be
+necessary).
+
+Troubleshooting
+---------------
+
+While the Maven system should keep the CLDR JAR up to date, there is a chance
+that you may have an out of date JAR installed elsewhere. If you have any
+issues with the JAR not being the expected version (e.g. after making changes)
+then run the above "purge" step again, from this directory.
+
+This should re-resolve the current JAR snapshot from the repository in this
+directory. Having purged the Maven cache, next time you build a project, you
+should see something like:
+
+[exec] Downloading from <xxx>: <url>/org/unicode/cldr/cldr-api/0.1-SNAPSHOT/maven-metadata.xml
+[exec] [INFO] Building jar: <path-to-icu-root>/tools/cldr/cldr-to-icu/target/cldr-to-icu-1.0-SNAPSHOT-jar-with-dependencies.jar
+
+This shows that it has had to re-fetch the JAR file.
diff --git a/tools/cldr/cldr-to-icu/install-cldr-jars.sh b/tools/cldr/lib/install-cldr-jars.sh
similarity index 60%
rename from tools/cldr/cldr-to-icu/install-cldr-jars.sh
rename to tools/cldr/lib/install-cldr-jars.sh
index aedcf9a..ab9501e 100755
--- a/tools/cldr/cldr-to-icu/install-cldr-jars.sh
+++ b/tools/cldr/lib/install-cldr-jars.sh
@@ -15,6 +15,12 @@
 # Usage (from the directory of this script):
 #
 # ./install-cldr-jars.sh <CLDR-root-directory>
+#
+# Note to maintainers: This script cannot be assumed to run on a Unix/Linux
+# based system, and while a Posix compliant bash shell is required, any
+# assumptions about auxiliary Unix tools should be minimized (e.g. things
+# like "dirname" or "tempfile" may not exist). Where bash-only alternatives
+# have to be used, they should be clearly documented.
 
 # Exit with a message for fatal errors.
 function die() {
@@ -28,49 +34,42 @@
 function run_with_logging() {
   echo >> "${LOG_FILE}"
   echo "Running: ${@}" >> "${LOG_FILE}"
-  echo "----------------------------------------------------------------" >> "${LOG_FILE}"
+  echo -- "----------------------------------------------------------------" >> "${LOG_FILE}"
   "${@}" >> "${LOG_FILE}" 2>&1
   if (( $? != 0 )) ; then
-    echo "---- Previous command failed ----" >> "${LOG_FILE}"
+    echo -- "---- Previous command failed ----" >> "${LOG_FILE}"
     echo "Error running: ${@}"
     read -p "Show log file? " -n 1 -r
     echo
     if [[ "${REPLY}" =~ ^[Yy]$ ]] ; then
       less -X "${LOG_FILE}"
     fi
-    mv -f "${LOG_FILE}" "${ROOT_DIR}/last_log.txt"
-    echo "Log file: ${ROOT_DIR}/last_log.txt"
+    echo "Log file: ${LOG_FILE}"
     exit 1
   fi
-  echo "---- Previous command succeeded ----" >> "${LOG_FILE}"
+  echo -- "---- Previous command succeeded ----" >> "${LOG_FILE}"
 }
 
 # First require that we are run from the same directory as the script.
-ROOT_DIR="$(realpath $(dirname $0))"
-if [[ "${ROOT_DIR}" != "$(realpath ${PWD})" ]] ; then
-  echo "WARNING: Shell script should be run from the project root directory"
-  echo "Current directory:"
-  echo "  ${PWD}"
-  echo "Project root direcory (where this script is):"
-  echo "  ${ROOT_DIR}"
-  read -p "Change to project root and continue? " -n 1 -r
-  echo
-  [[ "${REPLY}" =~ ^[Yy]$ ]] || die "Script must be run from the project root directory"
-  cd "$ROOT_DIR"
+# Can't assume users have "dirname" available so hack it a bit with shell
+# substitution (if no directory path was prepended, SCRIPT_DIR==$0).
+SCRIPT_DIR=${0%/*}
+if [[ "$SCRIPT_DIR" != "$0" ]] ; then
+  cd $SCRIPT_DIR
 fi
 
 # Check for some expected environmental things early.
 which ant > /dev/null || die "Cannot find Ant executable 'ant' in the current path."
 which mvn > /dev/null || die "Cannot find Maven executable 'mvn' in the current path."
-[[ -d "lib" ]] || die "Cannot find expected 'lib' directory in: $PWD"
 
 # Check there's one argument that points at a directory (or a symbolic link to a directory).
 (( $# == 1 )) && [[ -d "$1" ]] || die "Usage: ./install-cldr-jars.sh <CLDR-root-directory>"
 
 # Set up a log file (and be nice about tidying it up).
-LOG_FILE="$(tempfile)" || die "Cannot create temporary file!"
-trap "rm -f -- '${LOG_FILE}'" EXIT
-echo "---- LOG FILE ---- $(date '+%F %T') ----" >> "${LOG_FILE}"
+# Cannot assume "tempfile" exists so use a timestamp (we expect "date" to exist though).
+LOG_FILE="${TMPDIR:-/tmp}/cldr2icu_log_$(date '+%m%d_%H%M%S').txt"
+touch $LOG_FILE || die "Cannot create temporary file: ${LOG_FILE}"
+echo -- "---- LOG FILE ---- $(date '+%F %T') ----" >> "${LOG_FILE}"
 
 # Build the cldr.jar in the CLDR tools directory.
 CLDR_TOOLS_DIR="$1/tools/java"
@@ -79,16 +78,13 @@
 echo "Building CLDR JAR file..."
 run_with_logging ant -f ./build.xml clean jar
 [[ -f "cldr.jar" ]] || die "Error creating cldr.jar file"
-[[ -f "libs/utilities.jar" ]] || die "Cannot find libs/utilities.jar"
 
 popd > /dev/null
 
-# Install both required CLDR jars in the lib/ directory.
-pushd "${ROOT_DIR}/lib" > /dev/null || die "Cannot change to lib directory"
-
 # The -B flag is "batch" mode and won't mess about with escape codes in the log file.
 echo "Installing CLDR JAR file..."
 run_with_logging mvn -B install:install-file \
+  -Dproject.parent.relativePath="" \
   -DgroupId=org.unicode.cldr \
   -DartifactId=cldr-api \
   -Dversion=0.1-SNAPSHOT \
@@ -97,22 +93,10 @@
   -DlocalRepositoryPath=. \
   -Dfile="${CLDR_TOOLS_DIR}/cldr.jar"
 
-echo "Installing CLDR utilities JAR file..."
-run_with_logging mvn -B install:install-file \
-  -DgroupId=com.ibm.icu \
-  -DartifactId=icu-utilities \
-  -Dversion=0.1-SNAPSHOT \
-  -Dpackaging=jar \
-  -DgeneratePom=true \
-  -DlocalRepositoryPath=. \
-  -Dfile="${CLDR_TOOLS_DIR}/libs/utilities.jar"
-
-popd > /dev/null
-
-# We are back in the root directory now.
 echo "Syncing local Maven repository..."
-run_with_logging mvn -B dependency:purge-local-repository -DsnapshotsOnly=true
+run_with_logging mvn -B dependency:purge-local-repository \
+  -Dproject.parent.relativePath="" \
+  -DmanualIncludes=org.unicode.cldr:cldr-api:jar 
 
-mv -f "${LOG_FILE}" "last_log.txt"
-echo "All done! (log file: last_log.txt)"
-trap - EXIT
+echo "All done!"
+echo "Log file: ${LOG_FILE}"
diff --git a/tools/cldr/lib/pom.xml b/tools/cldr/lib/pom.xml
new file mode 100644
index 0000000..842e226
--- /dev/null
+++ b/tools/cldr/lib/pom.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- © 2020 and later: Unicode, Inc. and others.
+     License & terms of use: http://www.unicode.org/copyright.html
+     See README.txt for instructions on updating the local repository.
+     -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <!-- This POM file acts as a parent POM file for any tool which is built
+         via Maven and requires access to the CLDR data APIs. This POM file
+         and the other files in this directory encapsulate the somewhat messy
+         task of including the Ant-built CLDR JAR file in Maven projects. -->
+
+    <!-- Declares this to be a POM that's included by other POM files. -->
+    <packaging>pom</packaging>    
+    
+    <!-- This must match any child POM file's <parent> declaration. -->         
+    <groupId>org.unicode.icu</groupId>
+    <artifactId>cldr-lib</artifactId>
+    <version>1.0</version>
+    
+    <!-- Important: The "${project.basedir}" property is the directory of the
+         child POM file, not this directory (and there's no easy way in Maven
+         to identify the absolute path of a parent POM file). However since
+         child POM files should have a <parent> declaration with the relative
+         path in it, we can use that. Note however that this is a bit fragile
+         and relies on <relativePath> being a directory, not a POM file.
+         
+         In order to allow the local repository to work either when it is used
+         by a child POM file or when it's used directly (e.g. for installing
+         or purging the cache) when it is invoked from this directory, the
+           -Dproject.parent.relativePath=""
+         argument must be given. -->
+    <repositories>
+        <repository>
+            <id>local-maven-repo</id>
+            <url>file://${project.basedir}/${project.parent.relativePath}</url>
+        </repository>
+    </repositories>
+    
+    <!-- Ant-built JAR file(s) installed into the local Maven repository in this
+         directory by the 'install-cldr-jars.sh' script. -->
+    <dependencies>
+        <dependency>
+            <groupId>org.unicode.cldr</groupId>
+            <artifactId>cldr-api</artifactId>
+            <version>0.1-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+</project>
+
diff --git a/tools/icu4c_srcgen/doc_patches/patches/unicode/uloc.h.patch b/tools/icu4c_srcgen/doc_patches/patches/unicode/uloc.h.patch
index b2438e3..5c60e81 100644
--- a/tools/icu4c_srcgen/doc_patches/patches/unicode/uloc.h.patch
+++ b/tools/icu4c_srcgen/doc_patches/patches/unicode/uloc.h.patch
@@ -1,5 +1,5 @@
---- libicu/ndk_headers/unicode/uloc.h	2020-11-20 20:54:36.898730971 +0000
-+++ libicu/ndk_headers/unicode/uloc.h	2020-11-20 20:54:37.010731778 +0000
+--- libicu/ndk_headers/unicode/uloc.h	2021-01-19 16:37:46.343488297 +0000
++++ libicu/ndk_headers/unicode/uloc.h	2021-01-19 16:37:46.447489035 +0000
 @@ -368,6 +368,9 @@
   *   and unchanged even when uloc_setDefault() is called.
   *   The returned storage is owned by ICU, and must not be altered or deleted
diff --git a/tools/icu4c_srcgen/doc_patches/patches/unicode/ulocdata.h.patch b/tools/icu4c_srcgen/doc_patches/patches/unicode/ulocdata.h.patch
index c771dcb..3a53a2c 100644
--- a/tools/icu4c_srcgen/doc_patches/patches/unicode/ulocdata.h.patch
+++ b/tools/icu4c_srcgen/doc_patches/patches/unicode/ulocdata.h.patch
@@ -1,5 +1,5 @@
---- libicu/ndk_headers/unicode/ulocdata.h	2020-11-20 20:54:36.910731058 +0000
-+++ libicu/ndk_headers/unicode/ulocdata.h	2020-11-20 20:54:37.042732009 +0000
+--- libicu/ndk_headers/unicode/ulocdata.h	2021-01-19 16:37:46.243487587 +0000
++++ libicu/ndk_headers/unicode/ulocdata.h	2021-01-19 16:37:46.475489234 +0000
 @@ -21,87 +21,11 @@
  
  #include "unicode/uloc.h"
diff --git a/tools/icu4c_srcgen/doc_patches/patches/unicode/utext.h.patch b/tools/icu4c_srcgen/doc_patches/patches/unicode/utext.h.patch
index 285ecf2..affb309 100644
--- a/tools/icu4c_srcgen/doc_patches/patches/unicode/utext.h.patch
+++ b/tools/icu4c_srcgen/doc_patches/patches/unicode/utext.h.patch
@@ -1,5 +1,5 @@
---- libicu/ndk_headers/unicode/utext.h	2021-01-05 23:51:30.030377543 +0000
-+++ libicu/ndk_headers/unicode/utext.h	2021-01-05 23:51:30.242378962 +0000
+--- libicu/ndk_headers/unicode/utext.h	2021-01-19 16:37:46.283487871 +0000
++++ libicu/ndk_headers/unicode/utext.h	2021-01-19 16:37:46.503489433 +0000
 @@ -657,787 +657,6 @@
  
  
@@ -199,7 +199,7 @@
 -  *  @param dest   A UText struct to be filled in with the result of the clone operation,
 -  *                or NULL if the clone function should heap-allocate a new UText struct.
 -  *  @param src    The UText to be cloned.
--  *  @param deep   TRUE to request a deep clone, FALSE for a shallow clone.
+-  *  @param deep   true to request a deep clone, false for a shallow clone.
 -  *  @param status Errors are returned here.  For deep clones, U_UNSUPPORTED_ERROR
 -  *                should be returned if the text provider is unable to clone the
 -  *                original text.
@@ -235,9 +235,9 @@
 - *
 - * @param ut          the UText being accessed.
 - * @param nativeIndex Requested index of the text to be accessed.
-- * @param forward     If TRUE, then the returned chunk must contain text
+- * @param forward     If true, then the returned chunk must contain text
 - *                    starting from the index, so that start<=index<limit.
-- *                    If FALSE, then the returned chunk must contain text
+- *                    If false, then the returned chunk must contain text
 - *                    before the index, so that start<index<=limit.
 - * @return            True if the requested index could be accessed.  The chunk
 - *                    will contain the requested text.
@@ -341,7 +341,7 @@
 - * @param nativeStart  The index of the start of the region to be copied or moved
 - * @param nativeLimit  The index of the character following the region to be replaced.
 - * @param nativeDest   The destination index to which the source substring is copied or moved.
-- * @param move         If TRUE, then the substring is moved, not copied/duplicated.
+- * @param move         If true, then the substring is moved, not copied/duplicated.
 - * @param status       receives any error status.  Possible errors include U_NO_WRITE_PERMISSION
 - *
 - * @stable ICU 3.4
diff --git a/tools/icuutil.py b/tools/icuutil.py
index f44a086..7c84b26 100644
--- a/tools/icuutil.py
+++ b/tools/icuutil.py
@@ -18,6 +18,7 @@
 
 from __future__ import print_function
 
+import filecmp
 import glob
 import os
 import shutil
@@ -245,6 +246,36 @@
   # Switch back to the original working cwd.
   os.chdir(original_working_dir)
 
+def RequiredToMakeLangInfo():
+  """ Returns true if icu4c/source/data/misc/langInfo.txt has been re-generated.
+  Returns false if re-generation is not needed.
+  """
+
+  # Generate icu4c/source/data/misc/langInfo.txt by a ICU4J tool
+  langInfo_dst_path = os.path.join(icu4cDir(), 'data/misc/langInfo.txt')
+  print('Building %s' % langInfo_dst_path)
+  langInfo_out_path = '/tmp/langInfo.txt'  # path hardcoded in the LocaleDistanceBuilder tool
+  if os.path.exists(langInfo_out_path):
+    os.remove(langInfo_out_path)
+
+  icu4j_dir = icu4jDir()
+  os.chdir(icu4j_dir)
+  subprocess.check_call(['ant', 'icu4jJar'])
+  os.chdir(os.path.join(icu4j_dir, 'tools', 'misc'))
+  subprocess.check_call(['ant', 'jar'])
+  subprocess.check_call([
+    'java',
+    '-cp',
+    'out/lib/icu4j-tools.jar:../../icu4j.jar',
+    'com.ibm.icu.dev.tool.locale.LocaleDistanceBuilder',
+  ])
+  if (filecmp.cmp(langInfo_dst_path, langInfo_out_path)):
+    print('The files {src} and {dst} are the same'.format(src=langInfo_out_path, dst=langInfo_dst_path))
+    return False
+
+  print('Copying {src} to {dst}'.format(src=langInfo_out_path, dst=langInfo_dst_path))
+  shutil.copyfile(langInfo_out_path, langInfo_dst_path)
+  return True
 
 def CopyLicenseFiles(target_dir):
   """Copies ICU license files to the target_dir"""
diff --git a/tools/srcgen/allowlisted-public-api.txt b/tools/srcgen/allowlisted-public-api.txt
new file mode 100644
index 0000000..a9cd898
--- /dev/null
+++ b/tools/srcgen/allowlisted-public-api.txt
@@ -0,0 +1,4658 @@
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+type:android.icu.util.Output
+field:android.icu.util.Output#value
+method:android.icu.util.Output#toString()
+method:android.icu.util.Output#Output()
+method:android.icu.util.Output#Output(T)
+type:android.icu.util.Measure
+method:android.icu.util.Measure#Measure(Number,MeasureUnit)
+method:android.icu.util.Measure#equals(Object)
+method:android.icu.util.Measure#hashCode()
+method:android.icu.util.Measure#toString()
+method:android.icu.util.Measure#getNumber()
+method:android.icu.util.Measure#getUnit()
+type:android.icu.util.HebrewCalendar
+field:android.icu.util.HebrewCalendar#TISHRI
+field:android.icu.util.HebrewCalendar#HESHVAN
+field:android.icu.util.HebrewCalendar#KISLEV
+field:android.icu.util.HebrewCalendar#TEVET
+field:android.icu.util.HebrewCalendar#SHEVAT
+field:android.icu.util.HebrewCalendar#ADAR_1
+field:android.icu.util.HebrewCalendar#ADAR
+field:android.icu.util.HebrewCalendar#NISAN
+field:android.icu.util.HebrewCalendar#IYAR
+field:android.icu.util.HebrewCalendar#SIVAN
+field:android.icu.util.HebrewCalendar#TAMUZ
+field:android.icu.util.HebrewCalendar#AV
+field:android.icu.util.HebrewCalendar#ELUL
+method:android.icu.util.HebrewCalendar#HebrewCalendar()
+method:android.icu.util.HebrewCalendar#HebrewCalendar(TimeZone)
+method:android.icu.util.HebrewCalendar#HebrewCalendar(Locale)
+method:android.icu.util.HebrewCalendar#HebrewCalendar(ULocale)
+method:android.icu.util.HebrewCalendar#HebrewCalendar(TimeZone,Locale)
+method:android.icu.util.HebrewCalendar#HebrewCalendar(TimeZone,ULocale)
+method:android.icu.util.HebrewCalendar#HebrewCalendar(int,int,int)
+method:android.icu.util.HebrewCalendar#HebrewCalendar(Date)
+method:android.icu.util.HebrewCalendar#HebrewCalendar(int,int,int,int,int,int)
+method:android.icu.util.HebrewCalendar#add(int,int)
+method:android.icu.util.HebrewCalendar#roll(int,int)
+method:android.icu.util.HebrewCalendar#handleGetLimit(int,int)
+method:android.icu.util.HebrewCalendar#handleGetMonthLength(int,int)
+method:android.icu.util.HebrewCalendar#handleGetYearLength(int)
+method:android.icu.util.HebrewCalendar#handleComputeFields(int)
+method:android.icu.util.HebrewCalendar#handleGetExtendedYear()
+method:android.icu.util.HebrewCalendar#handleComputeMonthStart(int,int,boolean)
+method:android.icu.util.HebrewCalendar#getType()
+type:android.icu.util.Currency
+field:android.icu.util.Currency#SYMBOL_NAME
+field:android.icu.util.Currency#LONG_NAME
+field:android.icu.util.Currency#PLURAL_LONG_NAME
+field:android.icu.util.Currency#NARROW_SYMBOL_NAME
+type:android.icu.util.Currency$CurrencyUsage
+enumConstant:android.icu.util.Currency$CurrencyUsage#STANDARD
+enumConstant:android.icu.util.Currency$CurrencyUsage#CASH
+method:android.icu.util.Currency#getInstance(Locale)
+method:android.icu.util.Currency#getInstance(ULocale)
+method:android.icu.util.Currency#getAvailableCurrencyCodes(ULocale,Date)
+method:android.icu.util.Currency#getAvailableCurrencyCodes(Locale,Date)
+method:android.icu.util.Currency#getAvailableCurrencies()
+method:android.icu.util.Currency#getInstance(String)
+method:android.icu.util.Currency#fromJavaCurrency(java.util.Currency)
+method:android.icu.util.Currency#toJavaCurrency()
+method:android.icu.util.Currency#getAvailableLocales()
+method:android.icu.util.Currency#getAvailableULocales()
+method:android.icu.util.Currency#getKeywordValuesForLocale(String,ULocale,boolean)
+method:android.icu.util.Currency#getCurrencyCode()
+method:android.icu.util.Currency#getNumericCode()
+method:android.icu.util.Currency#getSymbol()
+method:android.icu.util.Currency#getSymbol(Locale)
+method:android.icu.util.Currency#getSymbol(ULocale)
+method:android.icu.util.Currency#getName(Locale,int,boolean[])
+method:android.icu.util.Currency#getName(ULocale,int,boolean[])
+method:android.icu.util.Currency#getName(Locale,int,String,boolean[])
+method:android.icu.util.Currency#getName(ULocale,int,String,boolean[])
+method:android.icu.util.Currency#getDisplayName()
+method:android.icu.util.Currency#getDisplayName(Locale)
+method:android.icu.util.Currency#getDefaultFractionDigits()
+method:android.icu.util.Currency#getDefaultFractionDigits(CurrencyUsage)
+method:android.icu.util.Currency#getRoundingIncrement()
+method:android.icu.util.Currency#getRoundingIncrement(CurrencyUsage)
+method:android.icu.util.Currency#toString()
+method:android.icu.util.Currency#Currency(String)
+method:android.icu.util.Currency#isAvailable(String,Date,Date)
+type:android.icu.util.JapaneseCalendar
+method:android.icu.util.JapaneseCalendar#JapaneseCalendar()
+method:android.icu.util.JapaneseCalendar#JapaneseCalendar(TimeZone)
+method:android.icu.util.JapaneseCalendar#JapaneseCalendar(Locale)
+method:android.icu.util.JapaneseCalendar#JapaneseCalendar(ULocale)
+method:android.icu.util.JapaneseCalendar#JapaneseCalendar(TimeZone,Locale)
+method:android.icu.util.JapaneseCalendar#JapaneseCalendar(TimeZone,ULocale)
+method:android.icu.util.JapaneseCalendar#JapaneseCalendar(Date)
+method:android.icu.util.JapaneseCalendar#JapaneseCalendar(int,int,int,int)
+method:android.icu.util.JapaneseCalendar#JapaneseCalendar(int,int,int)
+method:android.icu.util.JapaneseCalendar#JapaneseCalendar(int,int,int,int,int,int)
+method:android.icu.util.JapaneseCalendar#handleGetExtendedYear()
+method:android.icu.util.JapaneseCalendar#handleComputeFields(int)
+field:android.icu.util.JapaneseCalendar#CURRENT_ERA
+field:android.icu.util.JapaneseCalendar#MEIJI
+field:android.icu.util.JapaneseCalendar#TAISHO
+field:android.icu.util.JapaneseCalendar#SHOWA
+field:android.icu.util.JapaneseCalendar#HEISEI
+field:android.icu.util.JapaneseCalendar#REIWA
+method:android.icu.util.JapaneseCalendar#handleGetLimit(int,int)
+method:android.icu.util.JapaneseCalendar#getType()
+method:android.icu.util.JapaneseCalendar#getActualMaximum(int)
+type:android.icu.util.CopticCalendar
+field:android.icu.util.CopticCalendar#TOUT
+field:android.icu.util.CopticCalendar#BABA
+field:android.icu.util.CopticCalendar#HATOR
+field:android.icu.util.CopticCalendar#KIAHK
+field:android.icu.util.CopticCalendar#TOBA
+field:android.icu.util.CopticCalendar#AMSHIR
+field:android.icu.util.CopticCalendar#BARAMHAT
+field:android.icu.util.CopticCalendar#BARAMOUDA
+field:android.icu.util.CopticCalendar#BASHANS
+field:android.icu.util.CopticCalendar#PAONA
+field:android.icu.util.CopticCalendar#EPEP
+field:android.icu.util.CopticCalendar#MESRA
+field:android.icu.util.CopticCalendar#NASIE
+method:android.icu.util.CopticCalendar#CopticCalendar()
+method:android.icu.util.CopticCalendar#CopticCalendar(TimeZone)
+method:android.icu.util.CopticCalendar#CopticCalendar(Locale)
+method:android.icu.util.CopticCalendar#CopticCalendar(ULocale)
+method:android.icu.util.CopticCalendar#CopticCalendar(TimeZone,Locale)
+method:android.icu.util.CopticCalendar#CopticCalendar(TimeZone,ULocale)
+method:android.icu.util.CopticCalendar#CopticCalendar(int,int,int)
+method:android.icu.util.CopticCalendar#CopticCalendar(Date)
+method:android.icu.util.CopticCalendar#CopticCalendar(int,int,int,int,int,int)
+method:android.icu.util.CopticCalendar#getType()
+type:android.icu.util.TimeUnit
+method:android.icu.util.TimeUnit#values()
+type:android.icu.util.LocaleData
+field:android.icu.util.LocaleData#QUOTATION_START
+field:android.icu.util.LocaleData#QUOTATION_END
+field:android.icu.util.LocaleData#ALT_QUOTATION_START
+field:android.icu.util.LocaleData#ALT_QUOTATION_END
+method:android.icu.util.LocaleData#getInstance(ULocale)
+method:android.icu.util.LocaleData#getInstance()
+method:android.icu.util.LocaleData#setNoSubstitute(boolean)
+method:android.icu.util.LocaleData#getNoSubstitute()
+method:android.icu.util.LocaleData#getDelimiter(int)
+type:android.icu.util.LocaleData$MeasurementSystem
+field:android.icu.util.LocaleData$MeasurementSystem#SI
+field:android.icu.util.LocaleData$MeasurementSystem#US
+field:android.icu.util.LocaleData$MeasurementSystem#UK
+method:android.icu.util.LocaleData#getMeasurementSystem(ULocale)
+type:android.icu.util.LocaleData$PaperSize
+method:android.icu.util.LocaleData$PaperSize#getHeight()
+method:android.icu.util.LocaleData$PaperSize#getWidth()
+method:android.icu.util.LocaleData#getPaperSize(ULocale)
+method:android.icu.util.LocaleData#getCLDRVersion()
+type:android.icu.util.IndianCalendar
+field:android.icu.util.IndianCalendar#CHAITRA
+field:android.icu.util.IndianCalendar#VAISAKHA
+field:android.icu.util.IndianCalendar#JYAISTHA
+field:android.icu.util.IndianCalendar#ASADHA
+field:android.icu.util.IndianCalendar#SRAVANA
+field:android.icu.util.IndianCalendar#BHADRA
+field:android.icu.util.IndianCalendar#ASVINA
+field:android.icu.util.IndianCalendar#KARTIKA
+field:android.icu.util.IndianCalendar#AGRAHAYANA
+field:android.icu.util.IndianCalendar#PAUSA
+field:android.icu.util.IndianCalendar#MAGHA
+field:android.icu.util.IndianCalendar#PHALGUNA
+field:android.icu.util.IndianCalendar#IE
+method:android.icu.util.IndianCalendar#IndianCalendar()
+method:android.icu.util.IndianCalendar#IndianCalendar(TimeZone)
+method:android.icu.util.IndianCalendar#IndianCalendar(Locale)
+method:android.icu.util.IndianCalendar#IndianCalendar(ULocale)
+method:android.icu.util.IndianCalendar#IndianCalendar(TimeZone,Locale)
+method:android.icu.util.IndianCalendar#IndianCalendar(TimeZone,ULocale)
+method:android.icu.util.IndianCalendar#IndianCalendar(Date)
+method:android.icu.util.IndianCalendar#IndianCalendar(int,int,int)
+method:android.icu.util.IndianCalendar#IndianCalendar(int,int,int,int,int,int)
+method:android.icu.util.IndianCalendar#handleGetExtendedYear()
+method:android.icu.util.IndianCalendar#handleGetYearLength(int)
+method:android.icu.util.IndianCalendar#handleGetMonthLength(int,int)
+method:android.icu.util.IndianCalendar#handleComputeFields(int)
+method:android.icu.util.IndianCalendar#handleGetLimit(int,int)
+method:android.icu.util.IndianCalendar#handleComputeMonthStart(int,int,boolean)
+method:android.icu.util.IndianCalendar#getType()
+type:android.icu.util.BuddhistCalendar
+field:android.icu.util.BuddhistCalendar#BE
+method:android.icu.util.BuddhistCalendar#BuddhistCalendar()
+method:android.icu.util.BuddhistCalendar#BuddhistCalendar(TimeZone)
+method:android.icu.util.BuddhistCalendar#BuddhistCalendar(Locale)
+method:android.icu.util.BuddhistCalendar#BuddhistCalendar(ULocale)
+method:android.icu.util.BuddhistCalendar#BuddhistCalendar(TimeZone,Locale)
+method:android.icu.util.BuddhistCalendar#BuddhistCalendar(TimeZone,ULocale)
+method:android.icu.util.BuddhistCalendar#BuddhistCalendar(Date)
+method:android.icu.util.BuddhistCalendar#BuddhistCalendar(int,int,int)
+method:android.icu.util.BuddhistCalendar#BuddhistCalendar(int,int,int,int,int,int)
+method:android.icu.util.BuddhistCalendar#handleGetExtendedYear()
+method:android.icu.util.BuddhistCalendar#handleComputeMonthStart(int,int,boolean)
+method:android.icu.util.BuddhistCalendar#handleComputeFields(int)
+method:android.icu.util.BuddhistCalendar#handleGetLimit(int,int)
+method:android.icu.util.BuddhistCalendar#getType()
+type:android.icu.util.ICUUncheckedIOException
+method:android.icu.util.ICUUncheckedIOException#ICUUncheckedIOException()
+method:android.icu.util.ICUUncheckedIOException#ICUUncheckedIOException(String)
+method:android.icu.util.ICUUncheckedIOException#ICUUncheckedIOException(Throwable)
+method:android.icu.util.ICUUncheckedIOException#ICUUncheckedIOException(String,Throwable)
+type:android.icu.util.UniversalTimeScale
+field:android.icu.util.UniversalTimeScale#JAVA_TIME
+field:android.icu.util.UniversalTimeScale#UNIX_TIME
+field:android.icu.util.UniversalTimeScale#ICU4C_TIME
+field:android.icu.util.UniversalTimeScale#WINDOWS_FILE_TIME
+field:android.icu.util.UniversalTimeScale#DOTNET_DATE_TIME
+field:android.icu.util.UniversalTimeScale#MAC_OLD_TIME
+field:android.icu.util.UniversalTimeScale#MAC_TIME
+field:android.icu.util.UniversalTimeScale#EXCEL_TIME
+field:android.icu.util.UniversalTimeScale#DB2_TIME
+field:android.icu.util.UniversalTimeScale#UNIX_MICROSECONDS_TIME
+field:android.icu.util.UniversalTimeScale#MAX_SCALE
+field:android.icu.util.UniversalTimeScale#UNITS_VALUE
+field:android.icu.util.UniversalTimeScale#EPOCH_OFFSET_VALUE
+field:android.icu.util.UniversalTimeScale#FROM_MIN_VALUE
+field:android.icu.util.UniversalTimeScale#FROM_MAX_VALUE
+field:android.icu.util.UniversalTimeScale#TO_MIN_VALUE
+field:android.icu.util.UniversalTimeScale#TO_MAX_VALUE
+field:android.icu.util.UniversalTimeScale#EPOCH_OFFSET_PLUS_1_VALUE
+method:android.icu.util.UniversalTimeScale#from(long,int)
+method:android.icu.util.UniversalTimeScale#bigDecimalFrom(double,int)
+method:android.icu.util.UniversalTimeScale#bigDecimalFrom(long,int)
+method:android.icu.util.UniversalTimeScale#bigDecimalFrom(BigDecimal,int)
+method:android.icu.util.UniversalTimeScale#toLong(long,int)
+method:android.icu.util.UniversalTimeScale#toBigDecimal(long,int)
+method:android.icu.util.UniversalTimeScale#toBigDecimal(BigDecimal,int)
+method:android.icu.util.UniversalTimeScale#getTimeScaleValue(int,int)
+type:android.icu.util.Freezable
+method:android.icu.util.Freezable#isFrozen()
+method:android.icu.util.Freezable#freeze()
+method:android.icu.util.Freezable#cloneAsThawed()
+type:android.icu.util.Calendar
+field:android.icu.util.Calendar#ERA
+field:android.icu.util.Calendar#YEAR
+field:android.icu.util.Calendar#MONTH
+field:android.icu.util.Calendar#WEEK_OF_YEAR
+field:android.icu.util.Calendar#WEEK_OF_MONTH
+field:android.icu.util.Calendar#DATE
+field:android.icu.util.Calendar#DAY_OF_MONTH
+field:android.icu.util.Calendar#DAY_OF_YEAR
+field:android.icu.util.Calendar#DAY_OF_WEEK
+field:android.icu.util.Calendar#DAY_OF_WEEK_IN_MONTH
+field:android.icu.util.Calendar#AM_PM
+field:android.icu.util.Calendar#HOUR
+field:android.icu.util.Calendar#HOUR_OF_DAY
+field:android.icu.util.Calendar#MINUTE
+field:android.icu.util.Calendar#SECOND
+field:android.icu.util.Calendar#MILLISECOND
+field:android.icu.util.Calendar#ZONE_OFFSET
+field:android.icu.util.Calendar#DST_OFFSET
+field:android.icu.util.Calendar#YEAR_WOY
+field:android.icu.util.Calendar#DOW_LOCAL
+field:android.icu.util.Calendar#EXTENDED_YEAR
+field:android.icu.util.Calendar#JULIAN_DAY
+field:android.icu.util.Calendar#MILLISECONDS_IN_DAY
+field:android.icu.util.Calendar#IS_LEAP_MONTH
+field:android.icu.util.Calendar#BASE_FIELD_COUNT
+field:android.icu.util.Calendar#MAX_FIELD_COUNT
+field:android.icu.util.Calendar#SUNDAY
+field:android.icu.util.Calendar#MONDAY
+field:android.icu.util.Calendar#TUESDAY
+field:android.icu.util.Calendar#WEDNESDAY
+field:android.icu.util.Calendar#THURSDAY
+field:android.icu.util.Calendar#FRIDAY
+field:android.icu.util.Calendar#SATURDAY
+field:android.icu.util.Calendar#JANUARY
+field:android.icu.util.Calendar#FEBRUARY
+field:android.icu.util.Calendar#MARCH
+field:android.icu.util.Calendar#APRIL
+field:android.icu.util.Calendar#MAY
+field:android.icu.util.Calendar#JUNE
+field:android.icu.util.Calendar#JULY
+field:android.icu.util.Calendar#AUGUST
+field:android.icu.util.Calendar#SEPTEMBER
+field:android.icu.util.Calendar#OCTOBER
+field:android.icu.util.Calendar#NOVEMBER
+field:android.icu.util.Calendar#DECEMBER
+field:android.icu.util.Calendar#UNDECIMBER
+field:android.icu.util.Calendar#AM
+field:android.icu.util.Calendar#PM
+field:android.icu.util.Calendar#WALLTIME_LAST
+field:android.icu.util.Calendar#WALLTIME_FIRST
+field:android.icu.util.Calendar#WALLTIME_NEXT_VALID
+field:android.icu.util.Calendar#ONE_SECOND
+field:android.icu.util.Calendar#ONE_MINUTE
+field:android.icu.util.Calendar#ONE_HOUR
+field:android.icu.util.Calendar#ONE_DAY
+field:android.icu.util.Calendar#ONE_WEEK
+field:android.icu.util.Calendar#JAN_1_1_JULIAN_DAY
+field:android.icu.util.Calendar#EPOCH_JULIAN_DAY
+field:android.icu.util.Calendar#MIN_JULIAN
+field:android.icu.util.Calendar#MIN_MILLIS
+field:android.icu.util.Calendar#MIN_DATE
+field:android.icu.util.Calendar#MAX_JULIAN
+field:android.icu.util.Calendar#MAX_MILLIS
+field:android.icu.util.Calendar#MAX_DATE
+field:android.icu.util.Calendar#UNSET
+field:android.icu.util.Calendar#INTERNALLY_SET
+field:android.icu.util.Calendar#MINIMUM_USER_STAMP
+method:android.icu.util.Calendar#Calendar()
+method:android.icu.util.Calendar#Calendar(TimeZone,Locale)
+method:android.icu.util.Calendar#Calendar(TimeZone,ULocale)
+method:android.icu.util.Calendar#getInstance()
+method:android.icu.util.Calendar#getInstance(TimeZone)
+method:android.icu.util.Calendar#getInstance(Locale)
+method:android.icu.util.Calendar#getInstance(ULocale)
+method:android.icu.util.Calendar#getInstance(TimeZone,Locale)
+method:android.icu.util.Calendar#getInstance(TimeZone,ULocale)
+method:android.icu.util.Calendar#getAvailableLocales()
+method:android.icu.util.Calendar#getKeywordValuesForLocale(String,ULocale,boolean)
+method:android.icu.util.Calendar#getTime()
+method:android.icu.util.Calendar#setTime(Date)
+method:android.icu.util.Calendar#getTimeInMillis()
+method:android.icu.util.Calendar#setTimeInMillis(long)
+method:android.icu.util.Calendar#get(int)
+method:android.icu.util.Calendar#internalGet(int)
+method:android.icu.util.Calendar#internalGet(int,int)
+method:android.icu.util.Calendar#set(int,int)
+method:android.icu.util.Calendar#set(int,int,int)
+method:android.icu.util.Calendar#set(int,int,int,int,int)
+method:android.icu.util.Calendar#set(int,int,int,int,int,int)
+method:android.icu.util.Calendar#clear()
+method:android.icu.util.Calendar#clear(int)
+method:android.icu.util.Calendar#isSet(int)
+method:android.icu.util.Calendar#complete()
+method:android.icu.util.Calendar#equals(Object)
+method:android.icu.util.Calendar#isEquivalentTo(Calendar)
+method:android.icu.util.Calendar#hashCode()
+method:android.icu.util.Calendar#before(Object)
+method:android.icu.util.Calendar#after(Object)
+method:android.icu.util.Calendar#getActualMaximum(int)
+method:android.icu.util.Calendar#getActualMinimum(int)
+method:android.icu.util.Calendar#prepareGetActual(int,boolean)
+method:android.icu.util.Calendar#roll(int,boolean)
+method:android.icu.util.Calendar#roll(int,int)
+method:android.icu.util.Calendar#add(int,int)
+method:android.icu.util.Calendar#getDisplayName(Locale)
+method:android.icu.util.Calendar#getDisplayName(ULocale)
+method:android.icu.util.Calendar#compareTo(Calendar)
+method:android.icu.util.Calendar#getDateTimeFormat(int,int,Locale)
+method:android.icu.util.Calendar#getDateTimeFormat(int,int,ULocale)
+method:android.icu.util.Calendar#handleGetDateFormat(String,Locale)
+method:android.icu.util.Calendar#handleGetDateFormat(String,String,Locale)
+method:android.icu.util.Calendar#handleGetDateFormat(String,ULocale)
+method:android.icu.util.Calendar#pinField(int)
+method:android.icu.util.Calendar#weekNumber(int,int,int)
+method:android.icu.util.Calendar#weekNumber(int,int)
+method:android.icu.util.Calendar#fieldDifference(Date,int)
+method:android.icu.util.Calendar#setTimeZone(TimeZone)
+method:android.icu.util.Calendar#getTimeZone()
+method:android.icu.util.Calendar#setLenient(boolean)
+method:android.icu.util.Calendar#isLenient()
+method:android.icu.util.Calendar#setRepeatedWallTimeOption(int)
+method:android.icu.util.Calendar#getRepeatedWallTimeOption()
+method:android.icu.util.Calendar#setSkippedWallTimeOption(int)
+method:android.icu.util.Calendar#getSkippedWallTimeOption()
+method:android.icu.util.Calendar#setFirstDayOfWeek(int)
+method:android.icu.util.Calendar#getFirstDayOfWeek()
+method:android.icu.util.Calendar#setMinimalDaysInFirstWeek(int)
+method:android.icu.util.Calendar#getMinimalDaysInFirstWeek()
+method:android.icu.util.Calendar#handleGetLimit(int,int)
+method:android.icu.util.Calendar#getLimit(int,int)
+field:android.icu.util.Calendar#MINIMUM
+field:android.icu.util.Calendar#GREATEST_MINIMUM
+field:android.icu.util.Calendar#LEAST_MAXIMUM
+field:android.icu.util.Calendar#MAXIMUM
+method:android.icu.util.Calendar#getMinimum(int)
+method:android.icu.util.Calendar#getMaximum(int)
+method:android.icu.util.Calendar#getGreatestMinimum(int)
+method:android.icu.util.Calendar#getLeastMaximum(int)
+method:android.icu.util.Calendar#isWeekend(Date)
+method:android.icu.util.Calendar#isWeekend()
+method:android.icu.util.Calendar#clone()
+method:android.icu.util.Calendar#toString()
+type:android.icu.util.Calendar$WeekData
+field:android.icu.util.Calendar$WeekData#firstDayOfWeek
+field:android.icu.util.Calendar$WeekData#minimalDaysInFirstWeek
+field:android.icu.util.Calendar$WeekData#weekendOnset
+field:android.icu.util.Calendar$WeekData#weekendOnsetMillis
+field:android.icu.util.Calendar$WeekData#weekendCease
+field:android.icu.util.Calendar$WeekData#weekendCeaseMillis
+method:android.icu.util.Calendar$WeekData#WeekData(int,int,int,int,int,int)
+method:android.icu.util.Calendar$WeekData#hashCode()
+method:android.icu.util.Calendar$WeekData#equals(Object)
+method:android.icu.util.Calendar$WeekData#toString()
+method:android.icu.util.Calendar#getWeekDataForRegion(String)
+method:android.icu.util.Calendar#getWeekData()
+method:android.icu.util.Calendar#setWeekData(WeekData)
+method:android.icu.util.Calendar#computeFields()
+method:android.icu.util.Calendar#computeGregorianFields(int)
+field:android.icu.util.Calendar#RESOLVE_REMAP
+method:android.icu.util.Calendar#resolveFields(int[][][])
+method:android.icu.util.Calendar#newestStamp(int,int,int)
+method:android.icu.util.Calendar#getStamp(int)
+method:android.icu.util.Calendar#newerField(int,int)
+method:android.icu.util.Calendar#validateFields()
+method:android.icu.util.Calendar#validateField(int)
+method:android.icu.util.Calendar#validateField(int,int,int)
+method:android.icu.util.Calendar#computeTime()
+method:android.icu.util.Calendar#computeMillisInDay()
+method:android.icu.util.Calendar#computeZoneOffset(long,int)
+method:android.icu.util.Calendar#computeJulianDay()
+method:android.icu.util.Calendar#getFieldResolutionTable()
+method:android.icu.util.Calendar#handleComputeMonthStart(int,int,boolean)
+method:android.icu.util.Calendar#handleGetExtendedYear()
+method:android.icu.util.Calendar#handleGetMonthLength(int,int)
+method:android.icu.util.Calendar#handleGetYearLength(int)
+method:android.icu.util.Calendar#handleCreateFields()
+method:android.icu.util.Calendar#handleComputeJulianDay(int)
+method:android.icu.util.Calendar#computeGregorianMonthStart(int,int)
+method:android.icu.util.Calendar#handleComputeFields(int)
+method:android.icu.util.Calendar#getGregorianYear()
+method:android.icu.util.Calendar#getGregorianMonth()
+method:android.icu.util.Calendar#getGregorianDayOfYear()
+method:android.icu.util.Calendar#getGregorianDayOfMonth()
+method:android.icu.util.Calendar#getFieldCount()
+method:android.icu.util.Calendar#internalSet(int,int)
+method:android.icu.util.Calendar#isGregorianLeapYear(int)
+method:android.icu.util.Calendar#gregorianMonthLength(int,int)
+method:android.icu.util.Calendar#gregorianPreviousMonthLength(int,int)
+method:android.icu.util.Calendar#floorDivide(long,long)
+method:android.icu.util.Calendar#floorDivide(int,int)
+method:android.icu.util.Calendar#floorDivide(int,int,int[])
+method:android.icu.util.Calendar#floorDivide(long,int,int[])
+method:android.icu.util.Calendar#fieldName(int)
+method:android.icu.util.Calendar#millisToJulianDay(long)
+method:android.icu.util.Calendar#julianDayToMillis(int)
+method:android.icu.util.Calendar#julianDayToDayOfWeek(int)
+method:android.icu.util.Calendar#internalGetTimeInMillis()
+method:android.icu.util.Calendar#getType()
+type:android.icu.util.ValueIterator
+type:android.icu.util.ValueIterator$Element
+field:android.icu.util.ValueIterator$Element#integer
+field:android.icu.util.ValueIterator$Element#value
+method:android.icu.util.ValueIterator$Element#Element()
+method:android.icu.util.ValueIterator#next(Element)
+method:android.icu.util.ValueIterator#reset()
+method:android.icu.util.ValueIterator#setRange(int,int)
+type:android.icu.util.ULocale
+field:android.icu.util.ULocale#ENGLISH
+field:android.icu.util.ULocale#FRENCH
+field:android.icu.util.ULocale#GERMAN
+field:android.icu.util.ULocale#ITALIAN
+field:android.icu.util.ULocale#JAPANESE
+field:android.icu.util.ULocale#KOREAN
+field:android.icu.util.ULocale#CHINESE
+field:android.icu.util.ULocale#SIMPLIFIED_CHINESE
+field:android.icu.util.ULocale#TRADITIONAL_CHINESE
+field:android.icu.util.ULocale#FRANCE
+field:android.icu.util.ULocale#GERMANY
+field:android.icu.util.ULocale#ITALY
+field:android.icu.util.ULocale#JAPAN
+field:android.icu.util.ULocale#KOREA
+field:android.icu.util.ULocale#CHINA
+field:android.icu.util.ULocale#PRC
+field:android.icu.util.ULocale#TAIWAN
+field:android.icu.util.ULocale#UK
+field:android.icu.util.ULocale#US
+field:android.icu.util.ULocale#CANADA
+field:android.icu.util.ULocale#CANADA_FRENCH
+field:android.icu.util.ULocale#ROOT
+type:android.icu.util.ULocale$Category
+enumConstant:android.icu.util.ULocale$Category#DISPLAY
+enumConstant:android.icu.util.ULocale$Category#FORMAT
+method:android.icu.util.ULocale#forLocale(Locale)
+method:android.icu.util.ULocale#ULocale(String)
+method:android.icu.util.ULocale#ULocale(String,String)
+method:android.icu.util.ULocale#ULocale(String,String,String)
+method:android.icu.util.ULocale#createCanonical(String)
+method:android.icu.util.ULocale#toLocale()
+method:android.icu.util.ULocale#getDefault()
+method:android.icu.util.ULocale#getDefault(Category)
+method:android.icu.util.ULocale#clone()
+method:android.icu.util.ULocale#hashCode()
+method:android.icu.util.ULocale#equals(Object)
+method:android.icu.util.ULocale#compareTo(ULocale)
+method:android.icu.util.ULocale#getAvailableLocales()
+method:android.icu.util.ULocale#getISOCountries()
+method:android.icu.util.ULocale#getISOLanguages()
+method:android.icu.util.ULocale#getLanguage()
+method:android.icu.util.ULocale#getLanguage(String)
+method:android.icu.util.ULocale#getScript()
+method:android.icu.util.ULocale#getScript(String)
+method:android.icu.util.ULocale#getCountry()
+method:android.icu.util.ULocale#getCountry(String)
+method:android.icu.util.ULocale#getVariant()
+method:android.icu.util.ULocale#getVariant(String)
+method:android.icu.util.ULocale#getFallback(String)
+method:android.icu.util.ULocale#getFallback()
+method:android.icu.util.ULocale#getBaseName()
+method:android.icu.util.ULocale#getBaseName(String)
+method:android.icu.util.ULocale#getName()
+method:android.icu.util.ULocale#getName(String)
+method:android.icu.util.ULocale#toString()
+method:android.icu.util.ULocale#getKeywords()
+method:android.icu.util.ULocale#getKeywords(String)
+method:android.icu.util.ULocale#getKeywordValue(String)
+method:android.icu.util.ULocale#getKeywordValue(String,String)
+method:android.icu.util.ULocale#canonicalize(String)
+method:android.icu.util.ULocale#setKeywordValue(String,String)
+method:android.icu.util.ULocale#setKeywordValue(String,String,String)
+method:android.icu.util.ULocale#getISO3Language()
+method:android.icu.util.ULocale#getISO3Language(String)
+method:android.icu.util.ULocale#getISO3Country()
+method:android.icu.util.ULocale#getISO3Country(String)
+method:android.icu.util.ULocale#isRightToLeft()
+method:android.icu.util.ULocale#getDisplayLanguage()
+method:android.icu.util.ULocale#getDisplayLanguage(ULocale)
+method:android.icu.util.ULocale#getDisplayLanguage(String,String)
+method:android.icu.util.ULocale#getDisplayLanguage(String,ULocale)
+method:android.icu.util.ULocale#getDisplayLanguageWithDialect()
+method:android.icu.util.ULocale#getDisplayLanguageWithDialect(ULocale)
+method:android.icu.util.ULocale#getDisplayLanguageWithDialect(String,String)
+method:android.icu.util.ULocale#getDisplayLanguageWithDialect(String,ULocale)
+method:android.icu.util.ULocale#getDisplayScript()
+method:android.icu.util.ULocale#getDisplayScript(ULocale)
+method:android.icu.util.ULocale#getDisplayScript(String,String)
+method:android.icu.util.ULocale#getDisplayScript(String,ULocale)
+method:android.icu.util.ULocale#getDisplayCountry()
+method:android.icu.util.ULocale#getDisplayCountry(ULocale)
+method:android.icu.util.ULocale#getDisplayCountry(String,String)
+method:android.icu.util.ULocale#getDisplayCountry(String,ULocale)
+method:android.icu.util.ULocale#getDisplayVariant()
+method:android.icu.util.ULocale#getDisplayVariant(ULocale)
+method:android.icu.util.ULocale#getDisplayVariant(String,String)
+method:android.icu.util.ULocale#getDisplayVariant(String,ULocale)
+method:android.icu.util.ULocale#getDisplayKeyword(String)
+method:android.icu.util.ULocale#getDisplayKeyword(String,String)
+method:android.icu.util.ULocale#getDisplayKeyword(String,ULocale)
+method:android.icu.util.ULocale#getDisplayKeywordValue(String)
+method:android.icu.util.ULocale#getDisplayKeywordValue(String,ULocale)
+method:android.icu.util.ULocale#getDisplayKeywordValue(String,String,String)
+method:android.icu.util.ULocale#getDisplayKeywordValue(String,String,ULocale)
+method:android.icu.util.ULocale#getDisplayName()
+method:android.icu.util.ULocale#getDisplayName(ULocale)
+method:android.icu.util.ULocale#getDisplayName(String,String)
+method:android.icu.util.ULocale#getDisplayName(String,ULocale)
+method:android.icu.util.ULocale#getDisplayNameWithDialect()
+method:android.icu.util.ULocale#getDisplayNameWithDialect(ULocale)
+method:android.icu.util.ULocale#getDisplayNameWithDialect(String,String)
+method:android.icu.util.ULocale#getDisplayNameWithDialect(String,ULocale)
+method:android.icu.util.ULocale#getCharacterOrientation()
+method:android.icu.util.ULocale#getLineOrientation()
+method:android.icu.util.ULocale#acceptLanguage(String,ULocale[],boolean[])
+method:android.icu.util.ULocale#acceptLanguage(ULocale[],ULocale[],boolean[])
+method:android.icu.util.ULocale#acceptLanguage(String,boolean[])
+method:android.icu.util.ULocale#acceptLanguage(ULocale[],boolean[])
+method:android.icu.util.ULocale#addLikelySubtags(ULocale)
+method:android.icu.util.ULocale#minimizeSubtags(ULocale)
+field:android.icu.util.ULocale#PRIVATE_USE_EXTENSION
+field:android.icu.util.ULocale#UNICODE_LOCALE_EXTENSION
+method:android.icu.util.ULocale#getExtension(char)
+method:android.icu.util.ULocale#getExtensionKeys()
+method:android.icu.util.ULocale#getUnicodeLocaleAttributes()
+method:android.icu.util.ULocale#getUnicodeLocaleType(String)
+method:android.icu.util.ULocale#getUnicodeLocaleKeys()
+method:android.icu.util.ULocale#toLanguageTag()
+method:android.icu.util.ULocale#forLanguageTag(String)
+method:android.icu.util.ULocale#toUnicodeLocaleKey(String)
+method:android.icu.util.ULocale#toUnicodeLocaleType(String,String)
+method:android.icu.util.ULocale#toLegacyKey(String)
+method:android.icu.util.ULocale#toLegacyType(String,String)
+type:android.icu.util.ULocale$Builder
+method:android.icu.util.ULocale$Builder#Builder()
+method:android.icu.util.ULocale$Builder#setLocale(ULocale)
+method:android.icu.util.ULocale$Builder#setLanguageTag(String)
+method:android.icu.util.ULocale$Builder#setLanguage(String)
+method:android.icu.util.ULocale$Builder#setScript(String)
+method:android.icu.util.ULocale$Builder#setRegion(String)
+method:android.icu.util.ULocale$Builder#setVariant(String)
+method:android.icu.util.ULocale$Builder#setExtension(char,String)
+method:android.icu.util.ULocale$Builder#setUnicodeLocaleKeyword(String,String)
+method:android.icu.util.ULocale$Builder#addUnicodeLocaleAttribute(String)
+method:android.icu.util.ULocale$Builder#removeUnicodeLocaleAttribute(String)
+method:android.icu.util.ULocale$Builder#clear()
+method:android.icu.util.ULocale$Builder#clearExtensions()
+method:android.icu.util.ULocale$Builder#build()
+type:android.icu.util.VersionInfo
+field:android.icu.util.VersionInfo#UNICODE_1_0
+field:android.icu.util.VersionInfo#UNICODE_1_0_1
+field:android.icu.util.VersionInfo#UNICODE_1_1_0
+field:android.icu.util.VersionInfo#UNICODE_1_1_5
+field:android.icu.util.VersionInfo#UNICODE_2_0
+field:android.icu.util.VersionInfo#UNICODE_2_1_2
+field:android.icu.util.VersionInfo#UNICODE_2_1_5
+field:android.icu.util.VersionInfo#UNICODE_2_1_8
+field:android.icu.util.VersionInfo#UNICODE_2_1_9
+field:android.icu.util.VersionInfo#UNICODE_3_0
+field:android.icu.util.VersionInfo#UNICODE_3_0_1
+field:android.icu.util.VersionInfo#UNICODE_3_1_0
+field:android.icu.util.VersionInfo#UNICODE_3_1_1
+field:android.icu.util.VersionInfo#UNICODE_3_2
+field:android.icu.util.VersionInfo#UNICODE_4_0
+field:android.icu.util.VersionInfo#UNICODE_4_0_1
+field:android.icu.util.VersionInfo#UNICODE_4_1
+field:android.icu.util.VersionInfo#UNICODE_5_0
+field:android.icu.util.VersionInfo#UNICODE_5_1
+field:android.icu.util.VersionInfo#UNICODE_5_2
+field:android.icu.util.VersionInfo#UNICODE_6_0
+field:android.icu.util.VersionInfo#UNICODE_6_1
+field:android.icu.util.VersionInfo#UNICODE_6_2
+field:android.icu.util.VersionInfo#UNICODE_6_3
+field:android.icu.util.VersionInfo#UNICODE_7_0
+field:android.icu.util.VersionInfo#UNICODE_8_0
+field:android.icu.util.VersionInfo#UNICODE_9_0
+field:android.icu.util.VersionInfo#UNICODE_10_0
+field:android.icu.util.VersionInfo#UNICODE_11_0
+field:android.icu.util.VersionInfo#UNICODE_12_0
+field:android.icu.util.VersionInfo#UNICODE_12_1
+field:android.icu.util.VersionInfo#UNICODE_13_0
+field:android.icu.util.VersionInfo#ICU_VERSION
+field:android.icu.util.VersionInfo#UCOL_RUNTIME_VERSION
+field:android.icu.util.VersionInfo#UCOL_BUILDER_VERSION
+method:android.icu.util.VersionInfo#getInstance(String)
+method:android.icu.util.VersionInfo#getInstance(int,int,int,int)
+method:android.icu.util.VersionInfo#getInstance(int,int,int)
+method:android.icu.util.VersionInfo#getInstance(int,int)
+method:android.icu.util.VersionInfo#getInstance(int)
+method:android.icu.util.VersionInfo#toString()
+method:android.icu.util.VersionInfo#getMajor()
+method:android.icu.util.VersionInfo#getMinor()
+method:android.icu.util.VersionInfo#getMilli()
+method:android.icu.util.VersionInfo#getMicro()
+method:android.icu.util.VersionInfo#equals(Object)
+method:android.icu.util.VersionInfo#hashCode()
+method:android.icu.util.VersionInfo#compareTo(VersionInfo)
+type:android.icu.util.ChineseCalendar
+method:android.icu.util.ChineseCalendar#ChineseCalendar()
+method:android.icu.util.ChineseCalendar#ChineseCalendar(Date)
+method:android.icu.util.ChineseCalendar#ChineseCalendar(int,int,int,int)
+method:android.icu.util.ChineseCalendar#ChineseCalendar(int,int,int,int,int,int,int)
+method:android.icu.util.ChineseCalendar#ChineseCalendar(int,int,int,int,int)
+method:android.icu.util.ChineseCalendar#ChineseCalendar(int,int,int,int,int,int,int,int)
+method:android.icu.util.ChineseCalendar#ChineseCalendar(Locale)
+method:android.icu.util.ChineseCalendar#ChineseCalendar(TimeZone)
+method:android.icu.util.ChineseCalendar#ChineseCalendar(TimeZone,Locale)
+method:android.icu.util.ChineseCalendar#ChineseCalendar(ULocale)
+method:android.icu.util.ChineseCalendar#ChineseCalendar(TimeZone,ULocale)
+method:android.icu.util.ChineseCalendar#handleGetLimit(int,int)
+method:android.icu.util.ChineseCalendar#handleGetExtendedYear()
+method:android.icu.util.ChineseCalendar#handleGetMonthLength(int,int)
+method:android.icu.util.ChineseCalendar#handleGetDateFormat(String,String,ULocale)
+method:android.icu.util.ChineseCalendar#getFieldResolutionTable()
+method:android.icu.util.ChineseCalendar#add(int,int)
+method:android.icu.util.ChineseCalendar#roll(int,int)
+method:android.icu.util.ChineseCalendar#handleComputeFields(int)
+method:android.icu.util.ChineseCalendar#handleComputeMonthStart(int,int,boolean)
+method:android.icu.util.ChineseCalendar#getType()
+type:android.icu.util.TimeZone
+method:android.icu.util.TimeZone#TimeZone()
+field:android.icu.util.TimeZone#TIMEZONE_ICU
+field:android.icu.util.TimeZone#TIMEZONE_JDK
+field:android.icu.util.TimeZone#SHORT
+field:android.icu.util.TimeZone#LONG
+field:android.icu.util.TimeZone#SHORT_GENERIC
+field:android.icu.util.TimeZone#LONG_GENERIC
+field:android.icu.util.TimeZone#SHORT_GMT
+field:android.icu.util.TimeZone#LONG_GMT
+field:android.icu.util.TimeZone#SHORT_COMMONLY_USED
+field:android.icu.util.TimeZone#GENERIC_LOCATION
+field:android.icu.util.TimeZone#UNKNOWN_ZONE_ID
+field:android.icu.util.TimeZone#UNKNOWN_ZONE
+field:android.icu.util.TimeZone#GMT_ZONE
+type:android.icu.util.TimeZone$SystemTimeZoneType
+enumConstant:android.icu.util.TimeZone$SystemTimeZoneType#ANY
+enumConstant:android.icu.util.TimeZone$SystemTimeZoneType#CANONICAL
+enumConstant:android.icu.util.TimeZone$SystemTimeZoneType#CANONICAL_LOCATION
+method:android.icu.util.TimeZone#getOffset(int,int,int,int,int,int)
+method:android.icu.util.TimeZone#getOffset(long)
+method:android.icu.util.TimeZone#getOffset(long,boolean,int[])
+method:android.icu.util.TimeZone#setRawOffset(int)
+method:android.icu.util.TimeZone#getRawOffset()
+method:android.icu.util.TimeZone#getID()
+method:android.icu.util.TimeZone#setID(String)
+method:android.icu.util.TimeZone#getDisplayName()
+method:android.icu.util.TimeZone#getDisplayName(Locale)
+method:android.icu.util.TimeZone#getDisplayName(ULocale)
+method:android.icu.util.TimeZone#getDisplayName(boolean,int)
+method:android.icu.util.TimeZone#getDisplayName(boolean,int,Locale)
+method:android.icu.util.TimeZone#getDisplayName(boolean,int,ULocale)
+method:android.icu.util.TimeZone#getDSTSavings()
+method:android.icu.util.TimeZone#useDaylightTime()
+method:android.icu.util.TimeZone#observesDaylightTime()
+method:android.icu.util.TimeZone#inDaylightTime(Date)
+method:android.icu.util.TimeZone#getTimeZone(String)
+method:android.icu.util.TimeZone#getFrozenTimeZone(String)
+method:android.icu.util.TimeZone#getTimeZone(String,int)
+method:android.icu.util.TimeZone#getAvailableIDs(SystemTimeZoneType,String,Integer)
+method:android.icu.util.TimeZone#getAvailableIDs(int)
+method:android.icu.util.TimeZone#getAvailableIDs(String)
+method:android.icu.util.TimeZone#getAvailableIDs()
+method:android.icu.util.TimeZone#countEquivalentIDs(String)
+method:android.icu.util.TimeZone#getEquivalentID(String,int)
+method:android.icu.util.TimeZone#getDefault()
+method:android.icu.util.TimeZone#hasSameRules(TimeZone)
+method:android.icu.util.TimeZone#clone()
+method:android.icu.util.TimeZone#equals(Object)
+method:android.icu.util.TimeZone#hashCode()
+method:android.icu.util.TimeZone#getTZDataVersion()
+method:android.icu.util.TimeZone#getCanonicalID(String)
+method:android.icu.util.TimeZone#getCanonicalID(String,boolean[])
+method:android.icu.util.TimeZone#getRegion(String)
+method:android.icu.util.TimeZone#getWindowsID(String)
+method:android.icu.util.TimeZone#getIDForWindowsID(String,String)
+method:android.icu.util.TimeZone#isFrozen()
+method:android.icu.util.TimeZone#freeze()
+method:android.icu.util.TimeZone#cloneAsThawed()
+type:android.icu.util.GregorianCalendar
+field:android.icu.util.GregorianCalendar#BC
+field:android.icu.util.GregorianCalendar#AD
+method:android.icu.util.GregorianCalendar#handleGetLimit(int,int)
+field:android.icu.util.GregorianCalendar#isGregorian
+field:android.icu.util.GregorianCalendar#invertGregorian
+method:android.icu.util.GregorianCalendar#GregorianCalendar()
+method:android.icu.util.GregorianCalendar#GregorianCalendar(TimeZone)
+method:android.icu.util.GregorianCalendar#GregorianCalendar(Locale)
+method:android.icu.util.GregorianCalendar#GregorianCalendar(ULocale)
+method:android.icu.util.GregorianCalendar#GregorianCalendar(TimeZone,Locale)
+method:android.icu.util.GregorianCalendar#GregorianCalendar(TimeZone,ULocale)
+method:android.icu.util.GregorianCalendar#GregorianCalendar(int,int,int)
+method:android.icu.util.GregorianCalendar#GregorianCalendar(int,int,int,int,int)
+method:android.icu.util.GregorianCalendar#GregorianCalendar(int,int,int,int,int,int)
+method:android.icu.util.GregorianCalendar#setGregorianChange(Date)
+method:android.icu.util.GregorianCalendar#getGregorianChange()
+method:android.icu.util.GregorianCalendar#isLeapYear(int)
+method:android.icu.util.GregorianCalendar#isEquivalentTo(Calendar)
+method:android.icu.util.GregorianCalendar#hashCode()
+method:android.icu.util.GregorianCalendar#roll(int,int)
+method:android.icu.util.GregorianCalendar#getActualMinimum(int)
+method:android.icu.util.GregorianCalendar#getActualMaximum(int)
+method:android.icu.util.GregorianCalendar#handleGetMonthLength(int,int)
+method:android.icu.util.GregorianCalendar#handleGetYearLength(int)
+method:android.icu.util.GregorianCalendar#handleComputeFields(int)
+method:android.icu.util.GregorianCalendar#handleGetExtendedYear()
+method:android.icu.util.GregorianCalendar#handleComputeJulianDay(int)
+method:android.icu.util.GregorianCalendar#handleComputeMonthStart(int,int,boolean)
+method:android.icu.util.GregorianCalendar#getType()
+type:android.icu.util.TaiwanCalendar
+field:android.icu.util.TaiwanCalendar#BEFORE_MINGUO
+field:android.icu.util.TaiwanCalendar#MINGUO
+method:android.icu.util.TaiwanCalendar#TaiwanCalendar()
+method:android.icu.util.TaiwanCalendar#TaiwanCalendar(TimeZone)
+method:android.icu.util.TaiwanCalendar#TaiwanCalendar(Locale)
+method:android.icu.util.TaiwanCalendar#TaiwanCalendar(ULocale)
+method:android.icu.util.TaiwanCalendar#TaiwanCalendar(TimeZone,Locale)
+method:android.icu.util.TaiwanCalendar#TaiwanCalendar(TimeZone,ULocale)
+method:android.icu.util.TaiwanCalendar#TaiwanCalendar(Date)
+method:android.icu.util.TaiwanCalendar#TaiwanCalendar(int,int,int)
+method:android.icu.util.TaiwanCalendar#TaiwanCalendar(int,int,int,int,int,int)
+method:android.icu.util.TaiwanCalendar#handleGetExtendedYear()
+method:android.icu.util.TaiwanCalendar#handleComputeFields(int)
+method:android.icu.util.TaiwanCalendar#handleGetLimit(int,int)
+method:android.icu.util.TaiwanCalendar#getType()
+type:android.icu.util.RangeValueIterator
+type:android.icu.util.RangeValueIterator$Element
+field:android.icu.util.RangeValueIterator$Element#start
+field:android.icu.util.RangeValueIterator$Element#limit
+field:android.icu.util.RangeValueIterator$Element#value
+method:android.icu.util.RangeValueIterator$Element#Element()
+method:android.icu.util.RangeValueIterator#next(Element)
+method:android.icu.util.RangeValueIterator#reset()
+type:android.icu.util.IslamicCalendar
+field:android.icu.util.IslamicCalendar#MUHARRAM
+field:android.icu.util.IslamicCalendar#SAFAR
+field:android.icu.util.IslamicCalendar#RABI_1
+field:android.icu.util.IslamicCalendar#RABI_2
+field:android.icu.util.IslamicCalendar#JUMADA_1
+field:android.icu.util.IslamicCalendar#JUMADA_2
+field:android.icu.util.IslamicCalendar#RAJAB
+field:android.icu.util.IslamicCalendar#SHABAN
+field:android.icu.util.IslamicCalendar#RAMADAN
+field:android.icu.util.IslamicCalendar#SHAWWAL
+field:android.icu.util.IslamicCalendar#DHU_AL_QIDAH
+field:android.icu.util.IslamicCalendar#DHU_AL_HIJJAH
+method:android.icu.util.IslamicCalendar#IslamicCalendar()
+method:android.icu.util.IslamicCalendar#IslamicCalendar(TimeZone)
+method:android.icu.util.IslamicCalendar#IslamicCalendar(Locale)
+method:android.icu.util.IslamicCalendar#IslamicCalendar(ULocale)
+method:android.icu.util.IslamicCalendar#IslamicCalendar(TimeZone,Locale)
+method:android.icu.util.IslamicCalendar#IslamicCalendar(TimeZone,ULocale)
+method:android.icu.util.IslamicCalendar#IslamicCalendar(Date)
+method:android.icu.util.IslamicCalendar#IslamicCalendar(int,int,int)
+method:android.icu.util.IslamicCalendar#IslamicCalendar(int,int,int,int,int,int)
+method:android.icu.util.IslamicCalendar#handleGetLimit(int,int)
+method:android.icu.util.IslamicCalendar#handleGetMonthLength(int,int)
+method:android.icu.util.IslamicCalendar#handleGetYearLength(int)
+method:android.icu.util.IslamicCalendar#handleComputeMonthStart(int,int,boolean)
+method:android.icu.util.IslamicCalendar#handleGetExtendedYear()
+method:android.icu.util.IslamicCalendar#handleComputeFields(int)
+type:android.icu.util.IslamicCalendar$CalculationType
+enumConstant:android.icu.util.IslamicCalendar$CalculationType#ISLAMIC
+enumConstant:android.icu.util.IslamicCalendar$CalculationType#ISLAMIC_CIVIL
+enumConstant:android.icu.util.IslamicCalendar$CalculationType#ISLAMIC_UMALQURA
+enumConstant:android.icu.util.IslamicCalendar$CalculationType#ISLAMIC_TBLA
+method:android.icu.util.IslamicCalendar#setCalculationType(CalculationType)
+method:android.icu.util.IslamicCalendar#getCalculationType()
+method:android.icu.util.IslamicCalendar#getType()
+type:android.icu.util.CurrencyAmount
+method:android.icu.util.CurrencyAmount#CurrencyAmount(Number,Currency)
+method:android.icu.util.CurrencyAmount#CurrencyAmount(double,Currency)
+method:android.icu.util.CurrencyAmount#CurrencyAmount(Number,java.util.Currency)
+method:android.icu.util.CurrencyAmount#CurrencyAmount(double,java.util.Currency)
+method:android.icu.util.CurrencyAmount#getCurrency()
+type:android.icu.util.IllformedLocaleException
+method:android.icu.util.IllformedLocaleException#IllformedLocaleException()
+method:android.icu.util.IllformedLocaleException#IllformedLocaleException(String)
+method:android.icu.util.IllformedLocaleException#IllformedLocaleException(String,int)
+method:android.icu.util.IllformedLocaleException#getErrorIndex()
+type:android.icu.util.EthiopicCalendar
+field:android.icu.util.EthiopicCalendar#MESKEREM
+field:android.icu.util.EthiopicCalendar#TEKEMT
+field:android.icu.util.EthiopicCalendar#HEDAR
+field:android.icu.util.EthiopicCalendar#TAHSAS
+field:android.icu.util.EthiopicCalendar#TER
+field:android.icu.util.EthiopicCalendar#YEKATIT
+field:android.icu.util.EthiopicCalendar#MEGABIT
+field:android.icu.util.EthiopicCalendar#MIAZIA
+field:android.icu.util.EthiopicCalendar#GENBOT
+field:android.icu.util.EthiopicCalendar#SENE
+field:android.icu.util.EthiopicCalendar#HAMLE
+field:android.icu.util.EthiopicCalendar#NEHASSE
+field:android.icu.util.EthiopicCalendar#PAGUMEN
+method:android.icu.util.EthiopicCalendar#EthiopicCalendar()
+method:android.icu.util.EthiopicCalendar#EthiopicCalendar(TimeZone)
+method:android.icu.util.EthiopicCalendar#EthiopicCalendar(Locale)
+method:android.icu.util.EthiopicCalendar#EthiopicCalendar(ULocale)
+method:android.icu.util.EthiopicCalendar#EthiopicCalendar(TimeZone,Locale)
+method:android.icu.util.EthiopicCalendar#EthiopicCalendar(TimeZone,ULocale)
+method:android.icu.util.EthiopicCalendar#EthiopicCalendar(int,int,int)
+method:android.icu.util.EthiopicCalendar#EthiopicCalendar(Date)
+method:android.icu.util.EthiopicCalendar#EthiopicCalendar(int,int,int,int,int,int)
+method:android.icu.util.EthiopicCalendar#getType()
+method:android.icu.util.EthiopicCalendar#setAmeteAlemEra(boolean)
+method:android.icu.util.EthiopicCalendar#isAmeteAlemEra()
+type:android.icu.util.MeasureUnit
+method:android.icu.util.MeasureUnit#getType()
+method:android.icu.util.MeasureUnit#getSubtype()
+method:android.icu.util.MeasureUnit#hashCode()
+method:android.icu.util.MeasureUnit#equals(Object)
+method:android.icu.util.MeasureUnit#toString()
+method:android.icu.util.MeasureUnit#getAvailableTypes()
+method:android.icu.util.MeasureUnit#getAvailable(String)
+method:android.icu.util.MeasureUnit#getAvailable()
+field:android.icu.util.MeasureUnit#G_FORCE
+field:android.icu.util.MeasureUnit#METER_PER_SECOND_SQUARED
+field:android.icu.util.MeasureUnit#ARC_MINUTE
+field:android.icu.util.MeasureUnit#ARC_SECOND
+field:android.icu.util.MeasureUnit#DEGREE
+field:android.icu.util.MeasureUnit#RADIAN
+field:android.icu.util.MeasureUnit#REVOLUTION_ANGLE
+field:android.icu.util.MeasureUnit#ACRE
+field:android.icu.util.MeasureUnit#HECTARE
+field:android.icu.util.MeasureUnit#SQUARE_CENTIMETER
+field:android.icu.util.MeasureUnit#SQUARE_FOOT
+field:android.icu.util.MeasureUnit#SQUARE_INCH
+field:android.icu.util.MeasureUnit#SQUARE_KILOMETER
+field:android.icu.util.MeasureUnit#SQUARE_METER
+field:android.icu.util.MeasureUnit#SQUARE_MILE
+field:android.icu.util.MeasureUnit#SQUARE_YARD
+field:android.icu.util.MeasureUnit#KARAT
+field:android.icu.util.MeasureUnit#MILLIGRAM_PER_DECILITER
+field:android.icu.util.MeasureUnit#MILLIMOLE_PER_LITER
+field:android.icu.util.MeasureUnit#PART_PER_MILLION
+field:android.icu.util.MeasureUnit#PERCENT
+field:android.icu.util.MeasureUnit#PERMILLE
+field:android.icu.util.MeasureUnit#LITER_PER_100KILOMETERS
+field:android.icu.util.MeasureUnit#LITER_PER_KILOMETER
+field:android.icu.util.MeasureUnit#MILE_PER_GALLON
+field:android.icu.util.MeasureUnit#MILE_PER_GALLON_IMPERIAL
+field:android.icu.util.MeasureUnit#BIT
+field:android.icu.util.MeasureUnit#BYTE
+field:android.icu.util.MeasureUnit#GIGABIT
+field:android.icu.util.MeasureUnit#GIGABYTE
+field:android.icu.util.MeasureUnit#KILOBIT
+field:android.icu.util.MeasureUnit#KILOBYTE
+field:android.icu.util.MeasureUnit#MEGABIT
+field:android.icu.util.MeasureUnit#MEGABYTE
+field:android.icu.util.MeasureUnit#PETABYTE
+field:android.icu.util.MeasureUnit#TERABIT
+field:android.icu.util.MeasureUnit#TERABYTE
+field:android.icu.util.MeasureUnit#CENTURY
+field:android.icu.util.MeasureUnit#DAY
+field:android.icu.util.MeasureUnit#HOUR
+field:android.icu.util.MeasureUnit#MICROSECOND
+field:android.icu.util.MeasureUnit#MILLISECOND
+field:android.icu.util.MeasureUnit#MINUTE
+field:android.icu.util.MeasureUnit#MONTH
+field:android.icu.util.MeasureUnit#NANOSECOND
+field:android.icu.util.MeasureUnit#SECOND
+field:android.icu.util.MeasureUnit#WEEK
+field:android.icu.util.MeasureUnit#YEAR
+field:android.icu.util.MeasureUnit#AMPERE
+field:android.icu.util.MeasureUnit#MILLIAMPERE
+field:android.icu.util.MeasureUnit#OHM
+field:android.icu.util.MeasureUnit#VOLT
+field:android.icu.util.MeasureUnit#CALORIE
+field:android.icu.util.MeasureUnit#FOODCALORIE
+field:android.icu.util.MeasureUnit#JOULE
+field:android.icu.util.MeasureUnit#KILOCALORIE
+field:android.icu.util.MeasureUnit#KILOJOULE
+field:android.icu.util.MeasureUnit#KILOWATT_HOUR
+field:android.icu.util.MeasureUnit#GIGAHERTZ
+field:android.icu.util.MeasureUnit#HERTZ
+field:android.icu.util.MeasureUnit#KILOHERTZ
+field:android.icu.util.MeasureUnit#MEGAHERTZ
+field:android.icu.util.MeasureUnit#ASTRONOMICAL_UNIT
+field:android.icu.util.MeasureUnit#CENTIMETER
+field:android.icu.util.MeasureUnit#DECIMETER
+field:android.icu.util.MeasureUnit#FATHOM
+field:android.icu.util.MeasureUnit#FOOT
+field:android.icu.util.MeasureUnit#FURLONG
+field:android.icu.util.MeasureUnit#INCH
+field:android.icu.util.MeasureUnit#KILOMETER
+field:android.icu.util.MeasureUnit#LIGHT_YEAR
+field:android.icu.util.MeasureUnit#METER
+field:android.icu.util.MeasureUnit#MICROMETER
+field:android.icu.util.MeasureUnit#MILE
+field:android.icu.util.MeasureUnit#MILE_SCANDINAVIAN
+field:android.icu.util.MeasureUnit#MILLIMETER
+field:android.icu.util.MeasureUnit#NANOMETER
+field:android.icu.util.MeasureUnit#NAUTICAL_MILE
+field:android.icu.util.MeasureUnit#PARSEC
+field:android.icu.util.MeasureUnit#PICOMETER
+field:android.icu.util.MeasureUnit#POINT
+field:android.icu.util.MeasureUnit#YARD
+field:android.icu.util.MeasureUnit#LUX
+field:android.icu.util.MeasureUnit#CARAT
+field:android.icu.util.MeasureUnit#GRAM
+field:android.icu.util.MeasureUnit#KILOGRAM
+field:android.icu.util.MeasureUnit#METRIC_TON
+field:android.icu.util.MeasureUnit#MICROGRAM
+field:android.icu.util.MeasureUnit#MILLIGRAM
+field:android.icu.util.MeasureUnit#OUNCE
+field:android.icu.util.MeasureUnit#OUNCE_TROY
+field:android.icu.util.MeasureUnit#POUND
+field:android.icu.util.MeasureUnit#STONE
+field:android.icu.util.MeasureUnit#TON
+field:android.icu.util.MeasureUnit#GIGAWATT
+field:android.icu.util.MeasureUnit#HORSEPOWER
+field:android.icu.util.MeasureUnit#KILOWATT
+field:android.icu.util.MeasureUnit#MEGAWATT
+field:android.icu.util.MeasureUnit#MILLIWATT
+field:android.icu.util.MeasureUnit#WATT
+field:android.icu.util.MeasureUnit#ATMOSPHERE
+field:android.icu.util.MeasureUnit#HECTOPASCAL
+field:android.icu.util.MeasureUnit#INCH_HG
+field:android.icu.util.MeasureUnit#MILLIBAR
+field:android.icu.util.MeasureUnit#MILLIMETER_OF_MERCURY
+field:android.icu.util.MeasureUnit#POUND_PER_SQUARE_INCH
+field:android.icu.util.MeasureUnit#KILOMETER_PER_HOUR
+field:android.icu.util.MeasureUnit#KNOT
+field:android.icu.util.MeasureUnit#METER_PER_SECOND
+field:android.icu.util.MeasureUnit#MILE_PER_HOUR
+field:android.icu.util.MeasureUnit#CELSIUS
+field:android.icu.util.MeasureUnit#FAHRENHEIT
+field:android.icu.util.MeasureUnit#GENERIC_TEMPERATURE
+field:android.icu.util.MeasureUnit#KELVIN
+field:android.icu.util.MeasureUnit#ACRE_FOOT
+field:android.icu.util.MeasureUnit#BUSHEL
+field:android.icu.util.MeasureUnit#CENTILITER
+field:android.icu.util.MeasureUnit#CUBIC_CENTIMETER
+field:android.icu.util.MeasureUnit#CUBIC_FOOT
+field:android.icu.util.MeasureUnit#CUBIC_INCH
+field:android.icu.util.MeasureUnit#CUBIC_KILOMETER
+field:android.icu.util.MeasureUnit#CUBIC_METER
+field:android.icu.util.MeasureUnit#CUBIC_MILE
+field:android.icu.util.MeasureUnit#CUBIC_YARD
+field:android.icu.util.MeasureUnit#CUP
+field:android.icu.util.MeasureUnit#CUP_METRIC
+field:android.icu.util.MeasureUnit#DECILITER
+field:android.icu.util.MeasureUnit#FLUID_OUNCE
+field:android.icu.util.MeasureUnit#GALLON
+field:android.icu.util.MeasureUnit#GALLON_IMPERIAL
+field:android.icu.util.MeasureUnit#HECTOLITER
+field:android.icu.util.MeasureUnit#LITER
+field:android.icu.util.MeasureUnit#MEGALITER
+field:android.icu.util.MeasureUnit#MILLILITER
+field:android.icu.util.MeasureUnit#PINT
+field:android.icu.util.MeasureUnit#PINT_METRIC
+field:android.icu.util.MeasureUnit#QUART
+field:android.icu.util.MeasureUnit#TABLESPOON
+field:android.icu.util.MeasureUnit#TEASPOON
+type:android.icu.util.DateInterval
+method:android.icu.util.DateInterval#DateInterval(long,long)
+method:android.icu.util.DateInterval#getFromDate()
+method:android.icu.util.DateInterval#getToDate()
+method:android.icu.util.DateInterval#equals(Object)
+method:android.icu.util.DateInterval#hashCode()
+method:android.icu.util.DateInterval#toString()
+type:android.icu.lang.UCharacterCategory
+method:android.icu.lang.UCharacterCategory#toString(int)
+type:android.icu.lang.UScript
+field:android.icu.lang.UScript#INVALID_CODE
+field:android.icu.lang.UScript#COMMON
+field:android.icu.lang.UScript#INHERITED
+field:android.icu.lang.UScript#ARABIC
+field:android.icu.lang.UScript#ARMENIAN
+field:android.icu.lang.UScript#BENGALI
+field:android.icu.lang.UScript#BOPOMOFO
+field:android.icu.lang.UScript#CHEROKEE
+field:android.icu.lang.UScript#COPTIC
+field:android.icu.lang.UScript#CYRILLIC
+field:android.icu.lang.UScript#DESERET
+field:android.icu.lang.UScript#DEVANAGARI
+field:android.icu.lang.UScript#ETHIOPIC
+field:android.icu.lang.UScript#GEORGIAN
+field:android.icu.lang.UScript#GOTHIC
+field:android.icu.lang.UScript#GREEK
+field:android.icu.lang.UScript#GUJARATI
+field:android.icu.lang.UScript#GURMUKHI
+field:android.icu.lang.UScript#HAN
+field:android.icu.lang.UScript#HANGUL
+field:android.icu.lang.UScript#HEBREW
+field:android.icu.lang.UScript#HIRAGANA
+field:android.icu.lang.UScript#KANNADA
+field:android.icu.lang.UScript#KATAKANA
+field:android.icu.lang.UScript#KHMER
+field:android.icu.lang.UScript#LAO
+field:android.icu.lang.UScript#LATIN
+field:android.icu.lang.UScript#MALAYALAM
+field:android.icu.lang.UScript#MONGOLIAN
+field:android.icu.lang.UScript#MYANMAR
+field:android.icu.lang.UScript#OGHAM
+field:android.icu.lang.UScript#OLD_ITALIC
+field:android.icu.lang.UScript#ORIYA
+field:android.icu.lang.UScript#RUNIC
+field:android.icu.lang.UScript#SINHALA
+field:android.icu.lang.UScript#SYRIAC
+field:android.icu.lang.UScript#TAMIL
+field:android.icu.lang.UScript#TELUGU
+field:android.icu.lang.UScript#THAANA
+field:android.icu.lang.UScript#THAI
+field:android.icu.lang.UScript#TIBETAN
+field:android.icu.lang.UScript#CANADIAN_ABORIGINAL
+field:android.icu.lang.UScript#UCAS
+field:android.icu.lang.UScript#YI
+field:android.icu.lang.UScript#TAGALOG
+field:android.icu.lang.UScript#HANUNOO
+field:android.icu.lang.UScript#BUHID
+field:android.icu.lang.UScript#TAGBANWA
+field:android.icu.lang.UScript#BRAILLE
+field:android.icu.lang.UScript#CYPRIOT
+field:android.icu.lang.UScript#LIMBU
+field:android.icu.lang.UScript#LINEAR_B
+field:android.icu.lang.UScript#OSMANYA
+field:android.icu.lang.UScript#SHAVIAN
+field:android.icu.lang.UScript#TAI_LE
+field:android.icu.lang.UScript#UGARITIC
+field:android.icu.lang.UScript#KATAKANA_OR_HIRAGANA
+field:android.icu.lang.UScript#BUGINESE
+field:android.icu.lang.UScript#GLAGOLITIC
+field:android.icu.lang.UScript#KHAROSHTHI
+field:android.icu.lang.UScript#SYLOTI_NAGRI
+field:android.icu.lang.UScript#NEW_TAI_LUE
+field:android.icu.lang.UScript#TIFINAGH
+field:android.icu.lang.UScript#OLD_PERSIAN
+field:android.icu.lang.UScript#BALINESE
+field:android.icu.lang.UScript#BATAK
+field:android.icu.lang.UScript#BLISSYMBOLS
+field:android.icu.lang.UScript#BRAHMI
+field:android.icu.lang.UScript#CHAM
+field:android.icu.lang.UScript#CIRTH
+field:android.icu.lang.UScript#OLD_CHURCH_SLAVONIC_CYRILLIC
+field:android.icu.lang.UScript#DEMOTIC_EGYPTIAN
+field:android.icu.lang.UScript#HIERATIC_EGYPTIAN
+field:android.icu.lang.UScript#EGYPTIAN_HIEROGLYPHS
+field:android.icu.lang.UScript#KHUTSURI
+field:android.icu.lang.UScript#SIMPLIFIED_HAN
+field:android.icu.lang.UScript#TRADITIONAL_HAN
+field:android.icu.lang.UScript#PAHAWH_HMONG
+field:android.icu.lang.UScript#OLD_HUNGARIAN
+field:android.icu.lang.UScript#HARAPPAN_INDUS
+field:android.icu.lang.UScript#JAVANESE
+field:android.icu.lang.UScript#KAYAH_LI
+field:android.icu.lang.UScript#LATIN_FRAKTUR
+field:android.icu.lang.UScript#LATIN_GAELIC
+field:android.icu.lang.UScript#LEPCHA
+field:android.icu.lang.UScript#LINEAR_A
+field:android.icu.lang.UScript#MANDAIC
+field:android.icu.lang.UScript#MANDAEAN
+field:android.icu.lang.UScript#MAYAN_HIEROGLYPHS
+field:android.icu.lang.UScript#MEROITIC_HIEROGLYPHS
+field:android.icu.lang.UScript#MEROITIC
+field:android.icu.lang.UScript#NKO
+field:android.icu.lang.UScript#ORKHON
+field:android.icu.lang.UScript#OLD_PERMIC
+field:android.icu.lang.UScript#PHAGS_PA
+field:android.icu.lang.UScript#PHOENICIAN
+field:android.icu.lang.UScript#MIAO
+field:android.icu.lang.UScript#PHONETIC_POLLARD
+field:android.icu.lang.UScript#RONGORONGO
+field:android.icu.lang.UScript#SARATI
+field:android.icu.lang.UScript#ESTRANGELO_SYRIAC
+field:android.icu.lang.UScript#WESTERN_SYRIAC
+field:android.icu.lang.UScript#EASTERN_SYRIAC
+field:android.icu.lang.UScript#TENGWAR
+field:android.icu.lang.UScript#VAI
+field:android.icu.lang.UScript#VISIBLE_SPEECH
+field:android.icu.lang.UScript#CUNEIFORM
+field:android.icu.lang.UScript#UNWRITTEN_LANGUAGES
+field:android.icu.lang.UScript#UNKNOWN
+field:android.icu.lang.UScript#CARIAN
+field:android.icu.lang.UScript#JAPANESE
+field:android.icu.lang.UScript#LANNA
+field:android.icu.lang.UScript#LYCIAN
+field:android.icu.lang.UScript#LYDIAN
+field:android.icu.lang.UScript#OL_CHIKI
+field:android.icu.lang.UScript#REJANG
+field:android.icu.lang.UScript#SAURASHTRA
+field:android.icu.lang.UScript#SIGN_WRITING
+field:android.icu.lang.UScript#SUNDANESE
+field:android.icu.lang.UScript#MOON
+field:android.icu.lang.UScript#MEITEI_MAYEK
+field:android.icu.lang.UScript#IMPERIAL_ARAMAIC
+field:android.icu.lang.UScript#AVESTAN
+field:android.icu.lang.UScript#CHAKMA
+field:android.icu.lang.UScript#KOREAN
+field:android.icu.lang.UScript#KAITHI
+field:android.icu.lang.UScript#MANICHAEAN
+field:android.icu.lang.UScript#INSCRIPTIONAL_PAHLAVI
+field:android.icu.lang.UScript#PSALTER_PAHLAVI
+field:android.icu.lang.UScript#BOOK_PAHLAVI
+field:android.icu.lang.UScript#INSCRIPTIONAL_PARTHIAN
+field:android.icu.lang.UScript#SAMARITAN
+field:android.icu.lang.UScript#TAI_VIET
+field:android.icu.lang.UScript#MATHEMATICAL_NOTATION
+field:android.icu.lang.UScript#SYMBOLS
+field:android.icu.lang.UScript#BAMUM
+field:android.icu.lang.UScript#LISU
+field:android.icu.lang.UScript#NAKHI_GEBA
+field:android.icu.lang.UScript#OLD_SOUTH_ARABIAN
+field:android.icu.lang.UScript#BASSA_VAH
+field:android.icu.lang.UScript#DUPLOYAN
+field:android.icu.lang.UScript#ELBASAN
+field:android.icu.lang.UScript#GRANTHA
+field:android.icu.lang.UScript#KPELLE
+field:android.icu.lang.UScript#LOMA
+field:android.icu.lang.UScript#MENDE
+field:android.icu.lang.UScript#MEROITIC_CURSIVE
+field:android.icu.lang.UScript#OLD_NORTH_ARABIAN
+field:android.icu.lang.UScript#NABATAEAN
+field:android.icu.lang.UScript#PALMYRENE
+field:android.icu.lang.UScript#KHUDAWADI
+field:android.icu.lang.UScript#SINDHI
+field:android.icu.lang.UScript#WARANG_CITI
+field:android.icu.lang.UScript#AFAKA
+field:android.icu.lang.UScript#JURCHEN
+field:android.icu.lang.UScript#MRO
+field:android.icu.lang.UScript#NUSHU
+field:android.icu.lang.UScript#SHARADA
+field:android.icu.lang.UScript#SORA_SOMPENG
+field:android.icu.lang.UScript#TAKRI
+field:android.icu.lang.UScript#TANGUT
+field:android.icu.lang.UScript#WOLEAI
+field:android.icu.lang.UScript#ANATOLIAN_HIEROGLYPHS
+field:android.icu.lang.UScript#KHOJKI
+field:android.icu.lang.UScript#TIRHUTA
+field:android.icu.lang.UScript#CAUCASIAN_ALBANIAN
+field:android.icu.lang.UScript#MAHAJANI
+field:android.icu.lang.UScript#AHOM
+field:android.icu.lang.UScript#HATRAN
+field:android.icu.lang.UScript#MODI
+field:android.icu.lang.UScript#MULTANI
+field:android.icu.lang.UScript#PAU_CIN_HAU
+field:android.icu.lang.UScript#SIDDHAM
+field:android.icu.lang.UScript#ADLAM
+field:android.icu.lang.UScript#BHAIKSUKI
+field:android.icu.lang.UScript#MARCHEN
+field:android.icu.lang.UScript#NEWA
+field:android.icu.lang.UScript#OSAGE
+field:android.icu.lang.UScript#HAN_WITH_BOPOMOFO
+field:android.icu.lang.UScript#JAMO
+field:android.icu.lang.UScript#SYMBOLS_EMOJI
+field:android.icu.lang.UScript#MASARAM_GONDI
+field:android.icu.lang.UScript#SOYOMBO
+field:android.icu.lang.UScript#ZANABAZAR_SQUARE
+field:android.icu.lang.UScript#DOGRA
+field:android.icu.lang.UScript#GUNJALA_GONDI
+field:android.icu.lang.UScript#MAKASAR
+field:android.icu.lang.UScript#MEDEFAIDRIN
+field:android.icu.lang.UScript#HANIFI_ROHINGYA
+field:android.icu.lang.UScript#SOGDIAN
+field:android.icu.lang.UScript#OLD_SOGDIAN
+field:android.icu.lang.UScript#ELYMAIC
+field:android.icu.lang.UScript#NYIAKENG_PUACHUE_HMONG
+field:android.icu.lang.UScript#NANDINAGARI
+field:android.icu.lang.UScript#WANCHO
+field:android.icu.lang.UScript#CHORASMIAN
+field:android.icu.lang.UScript#DIVES_AKURU
+field:android.icu.lang.UScript#KHITAN_SMALL_SCRIPT
+field:android.icu.lang.UScript#YEZIDI
+method:android.icu.lang.UScript#getCode(Locale)
+method:android.icu.lang.UScript#getCode(ULocale)
+method:android.icu.lang.UScript#getCode(String)
+method:android.icu.lang.UScript#getCodeFromName(String)
+method:android.icu.lang.UScript#getScript(int)
+method:android.icu.lang.UScript#hasScript(int,int)
+method:android.icu.lang.UScript#getScriptExtensions(int,BitSet)
+method:android.icu.lang.UScript#getName(int)
+method:android.icu.lang.UScript#getShortName(int)
+type:android.icu.lang.UScript$ScriptUsage
+enumConstant:android.icu.lang.UScript$ScriptUsage#NOT_ENCODED
+enumConstant:android.icu.lang.UScript$ScriptUsage#UNKNOWN
+enumConstant:android.icu.lang.UScript$ScriptUsage#EXCLUDED
+enumConstant:android.icu.lang.UScript$ScriptUsage#LIMITED_USE
+enumConstant:android.icu.lang.UScript$ScriptUsage#ASPIRATIONAL
+enumConstant:android.icu.lang.UScript$ScriptUsage#RECOMMENDED
+method:android.icu.lang.UScript#getSampleString(int)
+method:android.icu.lang.UScript#getUsage(int)
+method:android.icu.lang.UScript#isRightToLeft(int)
+method:android.icu.lang.UScript#breaksBetweenLetters(int)
+method:android.icu.lang.UScript#isCased(int)
+type:android.icu.lang.UProperty
+field:android.icu.lang.UProperty#ALPHABETIC
+field:android.icu.lang.UProperty#BINARY_START
+field:android.icu.lang.UProperty#ASCII_HEX_DIGIT
+field:android.icu.lang.UProperty#BIDI_CONTROL
+field:android.icu.lang.UProperty#BIDI_MIRRORED
+field:android.icu.lang.UProperty#DASH
+field:android.icu.lang.UProperty#DEFAULT_IGNORABLE_CODE_POINT
+field:android.icu.lang.UProperty#DEPRECATED
+field:android.icu.lang.UProperty#DIACRITIC
+field:android.icu.lang.UProperty#EXTENDER
+field:android.icu.lang.UProperty#FULL_COMPOSITION_EXCLUSION
+field:android.icu.lang.UProperty#GRAPHEME_BASE
+field:android.icu.lang.UProperty#GRAPHEME_EXTEND
+field:android.icu.lang.UProperty#GRAPHEME_LINK
+field:android.icu.lang.UProperty#HEX_DIGIT
+field:android.icu.lang.UProperty#HYPHEN
+field:android.icu.lang.UProperty#ID_CONTINUE
+field:android.icu.lang.UProperty#ID_START
+field:android.icu.lang.UProperty#IDEOGRAPHIC
+field:android.icu.lang.UProperty#IDS_BINARY_OPERATOR
+field:android.icu.lang.UProperty#IDS_TRINARY_OPERATOR
+field:android.icu.lang.UProperty#JOIN_CONTROL
+field:android.icu.lang.UProperty#LOGICAL_ORDER_EXCEPTION
+field:android.icu.lang.UProperty#LOWERCASE
+field:android.icu.lang.UProperty#MATH
+field:android.icu.lang.UProperty#NONCHARACTER_CODE_POINT
+field:android.icu.lang.UProperty#QUOTATION_MARK
+field:android.icu.lang.UProperty#RADICAL
+field:android.icu.lang.UProperty#SOFT_DOTTED
+field:android.icu.lang.UProperty#TERMINAL_PUNCTUATION
+field:android.icu.lang.UProperty#UNIFIED_IDEOGRAPH
+field:android.icu.lang.UProperty#UPPERCASE
+field:android.icu.lang.UProperty#WHITE_SPACE
+field:android.icu.lang.UProperty#XID_CONTINUE
+field:android.icu.lang.UProperty#XID_START
+field:android.icu.lang.UProperty#CASE_SENSITIVE
+field:android.icu.lang.UProperty#S_TERM
+field:android.icu.lang.UProperty#VARIATION_SELECTOR
+field:android.icu.lang.UProperty#NFD_INERT
+field:android.icu.lang.UProperty#NFKD_INERT
+field:android.icu.lang.UProperty#NFC_INERT
+field:android.icu.lang.UProperty#NFKC_INERT
+field:android.icu.lang.UProperty#SEGMENT_STARTER
+field:android.icu.lang.UProperty#PATTERN_SYNTAX
+field:android.icu.lang.UProperty#PATTERN_WHITE_SPACE
+field:android.icu.lang.UProperty#POSIX_ALNUM
+field:android.icu.lang.UProperty#POSIX_BLANK
+field:android.icu.lang.UProperty#POSIX_GRAPH
+field:android.icu.lang.UProperty#POSIX_PRINT
+field:android.icu.lang.UProperty#POSIX_XDIGIT
+field:android.icu.lang.UProperty#CASED
+field:android.icu.lang.UProperty#CASE_IGNORABLE
+field:android.icu.lang.UProperty#CHANGES_WHEN_LOWERCASED
+field:android.icu.lang.UProperty#CHANGES_WHEN_UPPERCASED
+field:android.icu.lang.UProperty#CHANGES_WHEN_TITLECASED
+field:android.icu.lang.UProperty#CHANGES_WHEN_CASEFOLDED
+field:android.icu.lang.UProperty#CHANGES_WHEN_CASEMAPPED
+field:android.icu.lang.UProperty#CHANGES_WHEN_NFKC_CASEFOLDED
+field:android.icu.lang.UProperty#EMOJI
+field:android.icu.lang.UProperty#EMOJI_PRESENTATION
+field:android.icu.lang.UProperty#EMOJI_MODIFIER
+field:android.icu.lang.UProperty#EMOJI_MODIFIER_BASE
+field:android.icu.lang.UProperty#EMOJI_COMPONENT
+field:android.icu.lang.UProperty#REGIONAL_INDICATOR
+field:android.icu.lang.UProperty#PREPENDED_CONCATENATION_MARK
+field:android.icu.lang.UProperty#EXTENDED_PICTOGRAPHIC
+field:android.icu.lang.UProperty#BIDI_CLASS
+field:android.icu.lang.UProperty#INT_START
+field:android.icu.lang.UProperty#BLOCK
+field:android.icu.lang.UProperty#CANONICAL_COMBINING_CLASS
+field:android.icu.lang.UProperty#DECOMPOSITION_TYPE
+field:android.icu.lang.UProperty#EAST_ASIAN_WIDTH
+field:android.icu.lang.UProperty#GENERAL_CATEGORY
+field:android.icu.lang.UProperty#JOINING_GROUP
+field:android.icu.lang.UProperty#JOINING_TYPE
+field:android.icu.lang.UProperty#LINE_BREAK
+field:android.icu.lang.UProperty#NUMERIC_TYPE
+field:android.icu.lang.UProperty#SCRIPT
+field:android.icu.lang.UProperty#HANGUL_SYLLABLE_TYPE
+field:android.icu.lang.UProperty#NFD_QUICK_CHECK
+field:android.icu.lang.UProperty#NFKD_QUICK_CHECK
+field:android.icu.lang.UProperty#NFC_QUICK_CHECK
+field:android.icu.lang.UProperty#NFKC_QUICK_CHECK
+field:android.icu.lang.UProperty#LEAD_CANONICAL_COMBINING_CLASS
+field:android.icu.lang.UProperty#TRAIL_CANONICAL_COMBINING_CLASS
+field:android.icu.lang.UProperty#GRAPHEME_CLUSTER_BREAK
+field:android.icu.lang.UProperty#SENTENCE_BREAK
+field:android.icu.lang.UProperty#WORD_BREAK
+field:android.icu.lang.UProperty#BIDI_PAIRED_BRACKET_TYPE
+field:android.icu.lang.UProperty#INDIC_POSITIONAL_CATEGORY
+field:android.icu.lang.UProperty#INDIC_SYLLABIC_CATEGORY
+field:android.icu.lang.UProperty#VERTICAL_ORIENTATION
+field:android.icu.lang.UProperty#GENERAL_CATEGORY_MASK
+field:android.icu.lang.UProperty#MASK_START
+field:android.icu.lang.UProperty#NUMERIC_VALUE
+field:android.icu.lang.UProperty#DOUBLE_START
+field:android.icu.lang.UProperty#AGE
+field:android.icu.lang.UProperty#STRING_START
+field:android.icu.lang.UProperty#BIDI_MIRRORING_GLYPH
+field:android.icu.lang.UProperty#CASE_FOLDING
+field:android.icu.lang.UProperty#LOWERCASE_MAPPING
+field:android.icu.lang.UProperty#NAME
+field:android.icu.lang.UProperty#SIMPLE_CASE_FOLDING
+field:android.icu.lang.UProperty#SIMPLE_LOWERCASE_MAPPING
+field:android.icu.lang.UProperty#SIMPLE_TITLECASE_MAPPING
+field:android.icu.lang.UProperty#SIMPLE_UPPERCASE_MAPPING
+field:android.icu.lang.UProperty#TITLECASE_MAPPING
+field:android.icu.lang.UProperty#UPPERCASE_MAPPING
+field:android.icu.lang.UProperty#BIDI_PAIRED_BRACKET
+field:android.icu.lang.UProperty#SCRIPT_EXTENSIONS
+field:android.icu.lang.UProperty#OTHER_PROPERTY_START
+type:android.icu.lang.UProperty$NameChoice
+field:android.icu.lang.UProperty$NameChoice#SHORT
+field:android.icu.lang.UProperty$NameChoice#LONG
+type:android.icu.lang.UCharacter
+type:android.icu.lang.UCharacter$UnicodeBlock
+field:android.icu.lang.UCharacter$UnicodeBlock#INVALID_CODE_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#BASIC_LATIN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LATIN_1_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LATIN_EXTENDED_A_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LATIN_EXTENDED_B_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#IPA_EXTENSIONS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SPACING_MODIFIER_LETTERS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#COMBINING_DIACRITICAL_MARKS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#GREEK_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CYRILLIC_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ARMENIAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#HEBREW_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ARABIC_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SYRIAC_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#THAANA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#DEVANAGARI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#BENGALI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#GURMUKHI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#GUJARATI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ORIYA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#TAMIL_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#TELUGU_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#KANNADA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MALAYALAM_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SINHALA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#THAI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LAO_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#TIBETAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MYANMAR_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#GEORGIAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#HANGUL_JAMO_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ETHIOPIC_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CHEROKEE_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#OGHAM_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#RUNIC_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#KHMER_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MONGOLIAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LATIN_EXTENDED_ADDITIONAL_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#GREEK_EXTENDED_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#GENERAL_PUNCTUATION_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SUPERSCRIPTS_AND_SUBSCRIPTS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CURRENCY_SYMBOLS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#COMBINING_MARKS_FOR_SYMBOLS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LETTERLIKE_SYMBOLS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#NUMBER_FORMS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ARROWS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MATHEMATICAL_OPERATORS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MISCELLANEOUS_TECHNICAL_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CONTROL_PICTURES_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#OPTICAL_CHARACTER_RECOGNITION_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ENCLOSED_ALPHANUMERICS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#BOX_DRAWING_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#BLOCK_ELEMENTS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#GEOMETRIC_SHAPES_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MISCELLANEOUS_SYMBOLS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#DINGBATS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#BRAILLE_PATTERNS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_RADICALS_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#KANGXI_RADICALS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#IDEOGRAPHIC_DESCRIPTION_CHARACTERS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_SYMBOLS_AND_PUNCTUATION_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#HIRAGANA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#KATAKANA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#BOPOMOFO_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#HANGUL_COMPATIBILITY_JAMO_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#KANBUN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#BOPOMOFO_EXTENDED_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ENCLOSED_CJK_LETTERS_AND_MONTHS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_COMPATIBILITY_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#YI_SYLLABLES_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#YI_RADICALS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#HANGUL_SYLLABLES_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#HIGH_SURROGATES_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#HIGH_PRIVATE_USE_SURROGATES_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LOW_SURROGATES_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#PRIVATE_USE_AREA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#PRIVATE_USE_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_COMPATIBILITY_IDEOGRAPHS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ALPHABETIC_PRESENTATION_FORMS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ARABIC_PRESENTATION_FORMS_A_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#COMBINING_HALF_MARKS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_COMPATIBILITY_FORMS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SMALL_FORM_VARIANTS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ARABIC_PRESENTATION_FORMS_B_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SPECIALS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#HALFWIDTH_AND_FULLWIDTH_FORMS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#OLD_ITALIC_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#GOTHIC_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#DESERET_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#BYZANTINE_MUSICAL_SYMBOLS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MUSICAL_SYMBOLS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MATHEMATICAL_ALPHANUMERIC_SYMBOLS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#TAGS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CYRILLIC_SUPPLEMENTARY_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CYRILLIC_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#TAGALOG_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#HANUNOO_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#BUHID_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#TAGBANWA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SUPPLEMENTAL_ARROWS_A_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SUPPLEMENTAL_ARROWS_B_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SUPPLEMENTAL_MATHEMATICAL_OPERATORS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#KATAKANA_PHONETIC_EXTENSIONS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#VARIATION_SELECTORS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SUPPLEMENTARY_PRIVATE_USE_AREA_A_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SUPPLEMENTARY_PRIVATE_USE_AREA_B_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LIMBU_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#TAI_LE_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#KHMER_SYMBOLS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#PHONETIC_EXTENSIONS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MISCELLANEOUS_SYMBOLS_AND_ARROWS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#YIJING_HEXAGRAM_SYMBOLS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LINEAR_B_SYLLABARY_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LINEAR_B_IDEOGRAMS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#AEGEAN_NUMBERS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#UGARITIC_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SHAVIAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#OSMANYA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CYPRIOT_SYLLABARY_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#TAI_XUAN_JING_SYMBOLS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#VARIATION_SELECTORS_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ANCIENT_GREEK_MUSICAL_NOTATION_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ANCIENT_GREEK_NUMBERS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ARABIC_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#BUGINESE_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_STROKES_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#COPTIC_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ETHIOPIC_EXTENDED_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ETHIOPIC_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#GEORGIAN_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#GLAGOLITIC_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#KHAROSHTHI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MODIFIER_TONE_LETTERS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#NEW_TAI_LUE_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#OLD_PERSIAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#PHONETIC_EXTENSIONS_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SUPPLEMENTAL_PUNCTUATION_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SYLOTI_NAGRI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#TIFINAGH_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#VERTICAL_FORMS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#NKO_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#BALINESE_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LATIN_EXTENDED_C_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LATIN_EXTENDED_D_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#PHAGS_PA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#PHOENICIAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CUNEIFORM_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CUNEIFORM_NUMBERS_AND_PUNCTUATION_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#COUNTING_ROD_NUMERALS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SUNDANESE_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LEPCHA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#OL_CHIKI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CYRILLIC_EXTENDED_A_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#VAI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CYRILLIC_EXTENDED_B_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SAURASHTRA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#KAYAH_LI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#REJANG_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CHAM_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ANCIENT_SYMBOLS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#PHAISTOS_DISC_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LYCIAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CARIAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LYDIAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MAHJONG_TILES_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#DOMINO_TILES_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SAMARITAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#TAI_THAM_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#VEDIC_EXTENSIONS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LISU_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#BAMUM_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#COMMON_INDIC_NUMBER_FORMS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#DEVANAGARI_EXTENDED_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#HANGUL_JAMO_EXTENDED_A_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#JAVANESE_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MYANMAR_EXTENDED_A_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#TAI_VIET_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MEETEI_MAYEK_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#HANGUL_JAMO_EXTENDED_B_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#IMPERIAL_ARAMAIC_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#OLD_SOUTH_ARABIAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#AVESTAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#INSCRIPTIONAL_PARTHIAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#INSCRIPTIONAL_PAHLAVI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#OLD_TURKIC_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#RUMI_NUMERAL_SYMBOLS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#KAITHI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#EGYPTIAN_HIEROGLYPHS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ENCLOSED_ALPHANUMERIC_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ENCLOSED_IDEOGRAPHIC_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MANDAIC_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#BATAK_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ETHIOPIC_EXTENDED_A_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#BRAHMI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#BAMUM_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#KANA_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#PLAYING_CARDS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#EMOTICONS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#TRANSPORT_AND_MAP_SYMBOLS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ALCHEMICAL_SYMBOLS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ARABIC_EXTENDED_A_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CHAKMA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MEETEI_MAYEK_EXTENSIONS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MEROITIC_CURSIVE_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MEROITIC_HIEROGLYPHS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MIAO_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SHARADA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SORA_SOMPENG_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SUNDANESE_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#TAKRI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#BASSA_VAH_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CAUCASIAN_ALBANIAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#COPTIC_EPACT_NUMBERS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#COMBINING_DIACRITICAL_MARKS_EXTENDED_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#DUPLOYAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ELBASAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#GEOMETRIC_SHAPES_EXTENDED_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#GRANTHA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#KHOJKI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#KHUDAWADI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LATIN_EXTENDED_E_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LINEAR_A_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MAHAJANI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MANICHAEAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MENDE_KIKAKUI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MODI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MRO_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MYANMAR_EXTENDED_B_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#NABATAEAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#OLD_NORTH_ARABIAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#OLD_PERMIC_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ORNAMENTAL_DINGBATS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#PAHAWH_HMONG_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#PALMYRENE_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#PAU_CIN_HAU_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#PSALTER_PAHLAVI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SHORTHAND_FORMAT_CONTROLS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SIDDHAM_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SINHALA_ARCHAIC_NUMBERS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SUPPLEMENTAL_ARROWS_C_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#TIRHUTA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#WARANG_CITI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#AHOM_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ANATOLIAN_HIEROGLYPHS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CHEROKEE_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#EARLY_DYNASTIC_CUNEIFORM_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#HATRAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MULTANI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#OLD_HUNGARIAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SUTTON_SIGNWRITING_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ADLAM_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#BHAIKSUKI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CYRILLIC_EXTENDED_C_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#GLAGOLITIC_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MARCHEN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MONGOLIAN_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#NEWA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#OSAGE_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#TANGUT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#TANGUT_COMPONENTS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#KANA_EXTENDED_A_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MASARAM_GONDI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#NUSHU_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SOYOMBO_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SYRIAC_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ZANABAZAR_SQUARE_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CHESS_SYMBOLS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#DOGRA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#GEORGIAN_EXTENDED_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#GUNJALA_GONDI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#HANIFI_ROHINGYA_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#INDIC_SIYAQ_NUMBERS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MAKASAR_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MAYAN_NUMERALS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#MEDEFAIDRIN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#OLD_SOGDIAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SOGDIAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#ELYMAIC_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#NANDINAGARI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#NYIAKENG_PUACHUE_HMONG_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#OTTOMAN_SIYAQ_NUMBERS_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SMALL_KANA_EXTENSION_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#TAMIL_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#WANCHO_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CHORASMIAN_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#DIVES_AKURU_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#KHITAN_SMALL_SCRIPT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#LISU_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#SYMBOLS_FOR_LEGACY_COMPUTING_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#TANGUT_SUPPLEMENT_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#YEZIDI_ID
+field:android.icu.lang.UCharacter$UnicodeBlock#NO_BLOCK
+field:android.icu.lang.UCharacter$UnicodeBlock#BASIC_LATIN
+field:android.icu.lang.UCharacter$UnicodeBlock#LATIN_1_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#LATIN_EXTENDED_A
+field:android.icu.lang.UCharacter$UnicodeBlock#LATIN_EXTENDED_B
+field:android.icu.lang.UCharacter$UnicodeBlock#IPA_EXTENSIONS
+field:android.icu.lang.UCharacter$UnicodeBlock#SPACING_MODIFIER_LETTERS
+field:android.icu.lang.UCharacter$UnicodeBlock#COMBINING_DIACRITICAL_MARKS
+field:android.icu.lang.UCharacter$UnicodeBlock#GREEK
+field:android.icu.lang.UCharacter$UnicodeBlock#CYRILLIC
+field:android.icu.lang.UCharacter$UnicodeBlock#ARMENIAN
+field:android.icu.lang.UCharacter$UnicodeBlock#HEBREW
+field:android.icu.lang.UCharacter$UnicodeBlock#ARABIC
+field:android.icu.lang.UCharacter$UnicodeBlock#SYRIAC
+field:android.icu.lang.UCharacter$UnicodeBlock#THAANA
+field:android.icu.lang.UCharacter$UnicodeBlock#DEVANAGARI
+field:android.icu.lang.UCharacter$UnicodeBlock#BENGALI
+field:android.icu.lang.UCharacter$UnicodeBlock#GURMUKHI
+field:android.icu.lang.UCharacter$UnicodeBlock#GUJARATI
+field:android.icu.lang.UCharacter$UnicodeBlock#ORIYA
+field:android.icu.lang.UCharacter$UnicodeBlock#TAMIL
+field:android.icu.lang.UCharacter$UnicodeBlock#TELUGU
+field:android.icu.lang.UCharacter$UnicodeBlock#KANNADA
+field:android.icu.lang.UCharacter$UnicodeBlock#MALAYALAM
+field:android.icu.lang.UCharacter$UnicodeBlock#SINHALA
+field:android.icu.lang.UCharacter$UnicodeBlock#THAI
+field:android.icu.lang.UCharacter$UnicodeBlock#LAO
+field:android.icu.lang.UCharacter$UnicodeBlock#TIBETAN
+field:android.icu.lang.UCharacter$UnicodeBlock#MYANMAR
+field:android.icu.lang.UCharacter$UnicodeBlock#GEORGIAN
+field:android.icu.lang.UCharacter$UnicodeBlock#HANGUL_JAMO
+field:android.icu.lang.UCharacter$UnicodeBlock#ETHIOPIC
+field:android.icu.lang.UCharacter$UnicodeBlock#CHEROKEE
+field:android.icu.lang.UCharacter$UnicodeBlock#UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS
+field:android.icu.lang.UCharacter$UnicodeBlock#OGHAM
+field:android.icu.lang.UCharacter$UnicodeBlock#RUNIC
+field:android.icu.lang.UCharacter$UnicodeBlock#KHMER
+field:android.icu.lang.UCharacter$UnicodeBlock#MONGOLIAN
+field:android.icu.lang.UCharacter$UnicodeBlock#LATIN_EXTENDED_ADDITIONAL
+field:android.icu.lang.UCharacter$UnicodeBlock#GREEK_EXTENDED
+field:android.icu.lang.UCharacter$UnicodeBlock#GENERAL_PUNCTUATION
+field:android.icu.lang.UCharacter$UnicodeBlock#SUPERSCRIPTS_AND_SUBSCRIPTS
+field:android.icu.lang.UCharacter$UnicodeBlock#CURRENCY_SYMBOLS
+field:android.icu.lang.UCharacter$UnicodeBlock#COMBINING_MARKS_FOR_SYMBOLS
+field:android.icu.lang.UCharacter$UnicodeBlock#LETTERLIKE_SYMBOLS
+field:android.icu.lang.UCharacter$UnicodeBlock#NUMBER_FORMS
+field:android.icu.lang.UCharacter$UnicodeBlock#ARROWS
+field:android.icu.lang.UCharacter$UnicodeBlock#MATHEMATICAL_OPERATORS
+field:android.icu.lang.UCharacter$UnicodeBlock#MISCELLANEOUS_TECHNICAL
+field:android.icu.lang.UCharacter$UnicodeBlock#CONTROL_PICTURES
+field:android.icu.lang.UCharacter$UnicodeBlock#OPTICAL_CHARACTER_RECOGNITION
+field:android.icu.lang.UCharacter$UnicodeBlock#ENCLOSED_ALPHANUMERICS
+field:android.icu.lang.UCharacter$UnicodeBlock#BOX_DRAWING
+field:android.icu.lang.UCharacter$UnicodeBlock#BLOCK_ELEMENTS
+field:android.icu.lang.UCharacter$UnicodeBlock#GEOMETRIC_SHAPES
+field:android.icu.lang.UCharacter$UnicodeBlock#MISCELLANEOUS_SYMBOLS
+field:android.icu.lang.UCharacter$UnicodeBlock#DINGBATS
+field:android.icu.lang.UCharacter$UnicodeBlock#BRAILLE_PATTERNS
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_RADICALS_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#KANGXI_RADICALS
+field:android.icu.lang.UCharacter$UnicodeBlock#IDEOGRAPHIC_DESCRIPTION_CHARACTERS
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_SYMBOLS_AND_PUNCTUATION
+field:android.icu.lang.UCharacter$UnicodeBlock#HIRAGANA
+field:android.icu.lang.UCharacter$UnicodeBlock#KATAKANA
+field:android.icu.lang.UCharacter$UnicodeBlock#BOPOMOFO
+field:android.icu.lang.UCharacter$UnicodeBlock#HANGUL_COMPATIBILITY_JAMO
+field:android.icu.lang.UCharacter$UnicodeBlock#KANBUN
+field:android.icu.lang.UCharacter$UnicodeBlock#BOPOMOFO_EXTENDED
+field:android.icu.lang.UCharacter$UnicodeBlock#ENCLOSED_CJK_LETTERS_AND_MONTHS
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_COMPATIBILITY
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS
+field:android.icu.lang.UCharacter$UnicodeBlock#YI_SYLLABLES
+field:android.icu.lang.UCharacter$UnicodeBlock#YI_RADICALS
+field:android.icu.lang.UCharacter$UnicodeBlock#HANGUL_SYLLABLES
+field:android.icu.lang.UCharacter$UnicodeBlock#HIGH_SURROGATES
+field:android.icu.lang.UCharacter$UnicodeBlock#HIGH_PRIVATE_USE_SURROGATES
+field:android.icu.lang.UCharacter$UnicodeBlock#LOW_SURROGATES
+field:android.icu.lang.UCharacter$UnicodeBlock#PRIVATE_USE_AREA
+field:android.icu.lang.UCharacter$UnicodeBlock#PRIVATE_USE
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_COMPATIBILITY_IDEOGRAPHS
+field:android.icu.lang.UCharacter$UnicodeBlock#ALPHABETIC_PRESENTATION_FORMS
+field:android.icu.lang.UCharacter$UnicodeBlock#ARABIC_PRESENTATION_FORMS_A
+field:android.icu.lang.UCharacter$UnicodeBlock#COMBINING_HALF_MARKS
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_COMPATIBILITY_FORMS
+field:android.icu.lang.UCharacter$UnicodeBlock#SMALL_FORM_VARIANTS
+field:android.icu.lang.UCharacter$UnicodeBlock#ARABIC_PRESENTATION_FORMS_B
+field:android.icu.lang.UCharacter$UnicodeBlock#SPECIALS
+field:android.icu.lang.UCharacter$UnicodeBlock#HALFWIDTH_AND_FULLWIDTH_FORMS
+field:android.icu.lang.UCharacter$UnicodeBlock#OLD_ITALIC
+field:android.icu.lang.UCharacter$UnicodeBlock#GOTHIC
+field:android.icu.lang.UCharacter$UnicodeBlock#DESERET
+field:android.icu.lang.UCharacter$UnicodeBlock#BYZANTINE_MUSICAL_SYMBOLS
+field:android.icu.lang.UCharacter$UnicodeBlock#MUSICAL_SYMBOLS
+field:android.icu.lang.UCharacter$UnicodeBlock#MATHEMATICAL_ALPHANUMERIC_SYMBOLS
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#TAGS
+field:android.icu.lang.UCharacter$UnicodeBlock#CYRILLIC_SUPPLEMENTARY
+field:android.icu.lang.UCharacter$UnicodeBlock#CYRILLIC_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#TAGALOG
+field:android.icu.lang.UCharacter$UnicodeBlock#HANUNOO
+field:android.icu.lang.UCharacter$UnicodeBlock#BUHID
+field:android.icu.lang.UCharacter$UnicodeBlock#TAGBANWA
+field:android.icu.lang.UCharacter$UnicodeBlock#MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A
+field:android.icu.lang.UCharacter$UnicodeBlock#SUPPLEMENTAL_ARROWS_A
+field:android.icu.lang.UCharacter$UnicodeBlock#SUPPLEMENTAL_ARROWS_B
+field:android.icu.lang.UCharacter$UnicodeBlock#MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B
+field:android.icu.lang.UCharacter$UnicodeBlock#SUPPLEMENTAL_MATHEMATICAL_OPERATORS
+field:android.icu.lang.UCharacter$UnicodeBlock#KATAKANA_PHONETIC_EXTENSIONS
+field:android.icu.lang.UCharacter$UnicodeBlock#VARIATION_SELECTORS
+field:android.icu.lang.UCharacter$UnicodeBlock#SUPPLEMENTARY_PRIVATE_USE_AREA_A
+field:android.icu.lang.UCharacter$UnicodeBlock#SUPPLEMENTARY_PRIVATE_USE_AREA_B
+field:android.icu.lang.UCharacter$UnicodeBlock#LIMBU
+field:android.icu.lang.UCharacter$UnicodeBlock#TAI_LE
+field:android.icu.lang.UCharacter$UnicodeBlock#KHMER_SYMBOLS
+field:android.icu.lang.UCharacter$UnicodeBlock#PHONETIC_EXTENSIONS
+field:android.icu.lang.UCharacter$UnicodeBlock#MISCELLANEOUS_SYMBOLS_AND_ARROWS
+field:android.icu.lang.UCharacter$UnicodeBlock#YIJING_HEXAGRAM_SYMBOLS
+field:android.icu.lang.UCharacter$UnicodeBlock#LINEAR_B_SYLLABARY
+field:android.icu.lang.UCharacter$UnicodeBlock#LINEAR_B_IDEOGRAMS
+field:android.icu.lang.UCharacter$UnicodeBlock#AEGEAN_NUMBERS
+field:android.icu.lang.UCharacter$UnicodeBlock#UGARITIC
+field:android.icu.lang.UCharacter$UnicodeBlock#SHAVIAN
+field:android.icu.lang.UCharacter$UnicodeBlock#OSMANYA
+field:android.icu.lang.UCharacter$UnicodeBlock#CYPRIOT_SYLLABARY
+field:android.icu.lang.UCharacter$UnicodeBlock#TAI_XUAN_JING_SYMBOLS
+field:android.icu.lang.UCharacter$UnicodeBlock#VARIATION_SELECTORS_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#ANCIENT_GREEK_MUSICAL_NOTATION
+field:android.icu.lang.UCharacter$UnicodeBlock#ANCIENT_GREEK_NUMBERS
+field:android.icu.lang.UCharacter$UnicodeBlock#ARABIC_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#BUGINESE
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_STROKES
+field:android.icu.lang.UCharacter$UnicodeBlock#COMBINING_DIACRITICAL_MARKS_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#COPTIC
+field:android.icu.lang.UCharacter$UnicodeBlock#ETHIOPIC_EXTENDED
+field:android.icu.lang.UCharacter$UnicodeBlock#ETHIOPIC_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#GEORGIAN_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#GLAGOLITIC
+field:android.icu.lang.UCharacter$UnicodeBlock#KHAROSHTHI
+field:android.icu.lang.UCharacter$UnicodeBlock#MODIFIER_TONE_LETTERS
+field:android.icu.lang.UCharacter$UnicodeBlock#NEW_TAI_LUE
+field:android.icu.lang.UCharacter$UnicodeBlock#OLD_PERSIAN
+field:android.icu.lang.UCharacter$UnicodeBlock#PHONETIC_EXTENSIONS_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#SUPPLEMENTAL_PUNCTUATION
+field:android.icu.lang.UCharacter$UnicodeBlock#SYLOTI_NAGRI
+field:android.icu.lang.UCharacter$UnicodeBlock#TIFINAGH
+field:android.icu.lang.UCharacter$UnicodeBlock#VERTICAL_FORMS
+field:android.icu.lang.UCharacter$UnicodeBlock#NKO
+field:android.icu.lang.UCharacter$UnicodeBlock#BALINESE
+field:android.icu.lang.UCharacter$UnicodeBlock#LATIN_EXTENDED_C
+field:android.icu.lang.UCharacter$UnicodeBlock#LATIN_EXTENDED_D
+field:android.icu.lang.UCharacter$UnicodeBlock#PHAGS_PA
+field:android.icu.lang.UCharacter$UnicodeBlock#PHOENICIAN
+field:android.icu.lang.UCharacter$UnicodeBlock#CUNEIFORM
+field:android.icu.lang.UCharacter$UnicodeBlock#CUNEIFORM_NUMBERS_AND_PUNCTUATION
+field:android.icu.lang.UCharacter$UnicodeBlock#COUNTING_ROD_NUMERALS
+field:android.icu.lang.UCharacter$UnicodeBlock#SUNDANESE
+field:android.icu.lang.UCharacter$UnicodeBlock#LEPCHA
+field:android.icu.lang.UCharacter$UnicodeBlock#OL_CHIKI
+field:android.icu.lang.UCharacter$UnicodeBlock#CYRILLIC_EXTENDED_A
+field:android.icu.lang.UCharacter$UnicodeBlock#VAI
+field:android.icu.lang.UCharacter$UnicodeBlock#CYRILLIC_EXTENDED_B
+field:android.icu.lang.UCharacter$UnicodeBlock#SAURASHTRA
+field:android.icu.lang.UCharacter$UnicodeBlock#KAYAH_LI
+field:android.icu.lang.UCharacter$UnicodeBlock#REJANG
+field:android.icu.lang.UCharacter$UnicodeBlock#CHAM
+field:android.icu.lang.UCharacter$UnicodeBlock#ANCIENT_SYMBOLS
+field:android.icu.lang.UCharacter$UnicodeBlock#PHAISTOS_DISC
+field:android.icu.lang.UCharacter$UnicodeBlock#LYCIAN
+field:android.icu.lang.UCharacter$UnicodeBlock#CARIAN
+field:android.icu.lang.UCharacter$UnicodeBlock#LYDIAN
+field:android.icu.lang.UCharacter$UnicodeBlock#MAHJONG_TILES
+field:android.icu.lang.UCharacter$UnicodeBlock#DOMINO_TILES
+field:android.icu.lang.UCharacter$UnicodeBlock#SAMARITAN
+field:android.icu.lang.UCharacter$UnicodeBlock#UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED
+field:android.icu.lang.UCharacter$UnicodeBlock#TAI_THAM
+field:android.icu.lang.UCharacter$UnicodeBlock#VEDIC_EXTENSIONS
+field:android.icu.lang.UCharacter$UnicodeBlock#LISU
+field:android.icu.lang.UCharacter$UnicodeBlock#BAMUM
+field:android.icu.lang.UCharacter$UnicodeBlock#COMMON_INDIC_NUMBER_FORMS
+field:android.icu.lang.UCharacter$UnicodeBlock#DEVANAGARI_EXTENDED
+field:android.icu.lang.UCharacter$UnicodeBlock#HANGUL_JAMO_EXTENDED_A
+field:android.icu.lang.UCharacter$UnicodeBlock#JAVANESE
+field:android.icu.lang.UCharacter$UnicodeBlock#MYANMAR_EXTENDED_A
+field:android.icu.lang.UCharacter$UnicodeBlock#TAI_VIET
+field:android.icu.lang.UCharacter$UnicodeBlock#MEETEI_MAYEK
+field:android.icu.lang.UCharacter$UnicodeBlock#HANGUL_JAMO_EXTENDED_B
+field:android.icu.lang.UCharacter$UnicodeBlock#IMPERIAL_ARAMAIC
+field:android.icu.lang.UCharacter$UnicodeBlock#OLD_SOUTH_ARABIAN
+field:android.icu.lang.UCharacter$UnicodeBlock#AVESTAN
+field:android.icu.lang.UCharacter$UnicodeBlock#INSCRIPTIONAL_PARTHIAN
+field:android.icu.lang.UCharacter$UnicodeBlock#INSCRIPTIONAL_PAHLAVI
+field:android.icu.lang.UCharacter$UnicodeBlock#OLD_TURKIC
+field:android.icu.lang.UCharacter$UnicodeBlock#RUMI_NUMERAL_SYMBOLS
+field:android.icu.lang.UCharacter$UnicodeBlock#KAITHI
+field:android.icu.lang.UCharacter$UnicodeBlock#EGYPTIAN_HIEROGLYPHS
+field:android.icu.lang.UCharacter$UnicodeBlock#ENCLOSED_ALPHANUMERIC_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#ENCLOSED_IDEOGRAPHIC_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C
+field:android.icu.lang.UCharacter$UnicodeBlock#MANDAIC
+field:android.icu.lang.UCharacter$UnicodeBlock#BATAK
+field:android.icu.lang.UCharacter$UnicodeBlock#ETHIOPIC_EXTENDED_A
+field:android.icu.lang.UCharacter$UnicodeBlock#BRAHMI
+field:android.icu.lang.UCharacter$UnicodeBlock#BAMUM_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#KANA_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#PLAYING_CARDS
+field:android.icu.lang.UCharacter$UnicodeBlock#MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS
+field:android.icu.lang.UCharacter$UnicodeBlock#EMOTICONS
+field:android.icu.lang.UCharacter$UnicodeBlock#TRANSPORT_AND_MAP_SYMBOLS
+field:android.icu.lang.UCharacter$UnicodeBlock#ALCHEMICAL_SYMBOLS
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D
+field:android.icu.lang.UCharacter$UnicodeBlock#ARABIC_EXTENDED_A
+field:android.icu.lang.UCharacter$UnicodeBlock#ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS
+field:android.icu.lang.UCharacter$UnicodeBlock#CHAKMA
+field:android.icu.lang.UCharacter$UnicodeBlock#MEETEI_MAYEK_EXTENSIONS
+field:android.icu.lang.UCharacter$UnicodeBlock#MEROITIC_CURSIVE
+field:android.icu.lang.UCharacter$UnicodeBlock#MEROITIC_HIEROGLYPHS
+field:android.icu.lang.UCharacter$UnicodeBlock#MIAO
+field:android.icu.lang.UCharacter$UnicodeBlock#SHARADA
+field:android.icu.lang.UCharacter$UnicodeBlock#SORA_SOMPENG
+field:android.icu.lang.UCharacter$UnicodeBlock#SUNDANESE_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#TAKRI
+field:android.icu.lang.UCharacter$UnicodeBlock#BASSA_VAH
+field:android.icu.lang.UCharacter$UnicodeBlock#CAUCASIAN_ALBANIAN
+field:android.icu.lang.UCharacter$UnicodeBlock#COPTIC_EPACT_NUMBERS
+field:android.icu.lang.UCharacter$UnicodeBlock#COMBINING_DIACRITICAL_MARKS_EXTENDED
+field:android.icu.lang.UCharacter$UnicodeBlock#DUPLOYAN
+field:android.icu.lang.UCharacter$UnicodeBlock#ELBASAN
+field:android.icu.lang.UCharacter$UnicodeBlock#GEOMETRIC_SHAPES_EXTENDED
+field:android.icu.lang.UCharacter$UnicodeBlock#GRANTHA
+field:android.icu.lang.UCharacter$UnicodeBlock#KHOJKI
+field:android.icu.lang.UCharacter$UnicodeBlock#KHUDAWADI
+field:android.icu.lang.UCharacter$UnicodeBlock#LATIN_EXTENDED_E
+field:android.icu.lang.UCharacter$UnicodeBlock#LINEAR_A
+field:android.icu.lang.UCharacter$UnicodeBlock#MAHAJANI
+field:android.icu.lang.UCharacter$UnicodeBlock#MANICHAEAN
+field:android.icu.lang.UCharacter$UnicodeBlock#MENDE_KIKAKUI
+field:android.icu.lang.UCharacter$UnicodeBlock#MODI
+field:android.icu.lang.UCharacter$UnicodeBlock#MRO
+field:android.icu.lang.UCharacter$UnicodeBlock#MYANMAR_EXTENDED_B
+field:android.icu.lang.UCharacter$UnicodeBlock#NABATAEAN
+field:android.icu.lang.UCharacter$UnicodeBlock#OLD_NORTH_ARABIAN
+field:android.icu.lang.UCharacter$UnicodeBlock#OLD_PERMIC
+field:android.icu.lang.UCharacter$UnicodeBlock#ORNAMENTAL_DINGBATS
+field:android.icu.lang.UCharacter$UnicodeBlock#PAHAWH_HMONG
+field:android.icu.lang.UCharacter$UnicodeBlock#PALMYRENE
+field:android.icu.lang.UCharacter$UnicodeBlock#PAU_CIN_HAU
+field:android.icu.lang.UCharacter$UnicodeBlock#PSALTER_PAHLAVI
+field:android.icu.lang.UCharacter$UnicodeBlock#SHORTHAND_FORMAT_CONTROLS
+field:android.icu.lang.UCharacter$UnicodeBlock#SIDDHAM
+field:android.icu.lang.UCharacter$UnicodeBlock#SINHALA_ARCHAIC_NUMBERS
+field:android.icu.lang.UCharacter$UnicodeBlock#SUPPLEMENTAL_ARROWS_C
+field:android.icu.lang.UCharacter$UnicodeBlock#TIRHUTA
+field:android.icu.lang.UCharacter$UnicodeBlock#WARANG_CITI
+field:android.icu.lang.UCharacter$UnicodeBlock#AHOM
+field:android.icu.lang.UCharacter$UnicodeBlock#ANATOLIAN_HIEROGLYPHS
+field:android.icu.lang.UCharacter$UnicodeBlock#CHEROKEE_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E
+field:android.icu.lang.UCharacter$UnicodeBlock#EARLY_DYNASTIC_CUNEIFORM
+field:android.icu.lang.UCharacter$UnicodeBlock#HATRAN
+field:android.icu.lang.UCharacter$UnicodeBlock#MULTANI
+field:android.icu.lang.UCharacter$UnicodeBlock#OLD_HUNGARIAN
+field:android.icu.lang.UCharacter$UnicodeBlock#SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS
+field:android.icu.lang.UCharacter$UnicodeBlock#SUTTON_SIGNWRITING
+field:android.icu.lang.UCharacter$UnicodeBlock#ADLAM
+field:android.icu.lang.UCharacter$UnicodeBlock#BHAIKSUKI
+field:android.icu.lang.UCharacter$UnicodeBlock#CYRILLIC_EXTENDED_C
+field:android.icu.lang.UCharacter$UnicodeBlock#GLAGOLITIC_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION
+field:android.icu.lang.UCharacter$UnicodeBlock#MARCHEN
+field:android.icu.lang.UCharacter$UnicodeBlock#MONGOLIAN_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#NEWA
+field:android.icu.lang.UCharacter$UnicodeBlock#OSAGE
+field:android.icu.lang.UCharacter$UnicodeBlock#TANGUT
+field:android.icu.lang.UCharacter$UnicodeBlock#TANGUT_COMPONENTS
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F
+field:android.icu.lang.UCharacter$UnicodeBlock#KANA_EXTENDED_A
+field:android.icu.lang.UCharacter$UnicodeBlock#MASARAM_GONDI
+field:android.icu.lang.UCharacter$UnicodeBlock#NUSHU
+field:android.icu.lang.UCharacter$UnicodeBlock#SOYOMBO
+field:android.icu.lang.UCharacter$UnicodeBlock#SYRIAC_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#ZANABAZAR_SQUARE
+field:android.icu.lang.UCharacter$UnicodeBlock#CHESS_SYMBOLS
+field:android.icu.lang.UCharacter$UnicodeBlock#DOGRA
+field:android.icu.lang.UCharacter$UnicodeBlock#GEORGIAN_EXTENDED
+field:android.icu.lang.UCharacter$UnicodeBlock#GUNJALA_GONDI
+field:android.icu.lang.UCharacter$UnicodeBlock#HANIFI_ROHINGYA
+field:android.icu.lang.UCharacter$UnicodeBlock#INDIC_SIYAQ_NUMBERS
+field:android.icu.lang.UCharacter$UnicodeBlock#MAKASAR
+field:android.icu.lang.UCharacter$UnicodeBlock#MAYAN_NUMERALS
+field:android.icu.lang.UCharacter$UnicodeBlock#MEDEFAIDRIN
+field:android.icu.lang.UCharacter$UnicodeBlock#OLD_SOGDIAN
+field:android.icu.lang.UCharacter$UnicodeBlock#SOGDIAN
+field:android.icu.lang.UCharacter$UnicodeBlock#EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS
+field:android.icu.lang.UCharacter$UnicodeBlock#ELYMAIC
+field:android.icu.lang.UCharacter$UnicodeBlock#NANDINAGARI
+field:android.icu.lang.UCharacter$UnicodeBlock#NYIAKENG_PUACHUE_HMONG
+field:android.icu.lang.UCharacter$UnicodeBlock#OTTOMAN_SIYAQ_NUMBERS
+field:android.icu.lang.UCharacter$UnicodeBlock#SMALL_KANA_EXTENSION
+field:android.icu.lang.UCharacter$UnicodeBlock#SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A
+field:android.icu.lang.UCharacter$UnicodeBlock#TAMIL_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#WANCHO
+field:android.icu.lang.UCharacter$UnicodeBlock#CHORASMIAN
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G
+field:android.icu.lang.UCharacter$UnicodeBlock#DIVES_AKURU
+field:android.icu.lang.UCharacter$UnicodeBlock#KHITAN_SMALL_SCRIPT
+field:android.icu.lang.UCharacter$UnicodeBlock#LISU_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#SYMBOLS_FOR_LEGACY_COMPUTING
+field:android.icu.lang.UCharacter$UnicodeBlock#TANGUT_SUPPLEMENT
+field:android.icu.lang.UCharacter$UnicodeBlock#YEZIDI
+field:android.icu.lang.UCharacter$UnicodeBlock#INVALID_CODE
+method:android.icu.lang.UCharacter$UnicodeBlock#getInstance(int)
+method:android.icu.lang.UCharacter$UnicodeBlock#of(int)
+method:android.icu.lang.UCharacter$UnicodeBlock#forName(String)
+method:android.icu.lang.UCharacter$UnicodeBlock#getID()
+type:android.icu.lang.UCharacter$EastAsianWidth
+field:android.icu.lang.UCharacter$EastAsianWidth#NEUTRAL
+field:android.icu.lang.UCharacter$EastAsianWidth#AMBIGUOUS
+field:android.icu.lang.UCharacter$EastAsianWidth#HALFWIDTH
+field:android.icu.lang.UCharacter$EastAsianWidth#FULLWIDTH
+field:android.icu.lang.UCharacter$EastAsianWidth#NARROW
+field:android.icu.lang.UCharacter$EastAsianWidth#WIDE
+type:android.icu.lang.UCharacter$DecompositionType
+field:android.icu.lang.UCharacter$DecompositionType#NONE
+field:android.icu.lang.UCharacter$DecompositionType#CANONICAL
+field:android.icu.lang.UCharacter$DecompositionType#COMPAT
+field:android.icu.lang.UCharacter$DecompositionType#CIRCLE
+field:android.icu.lang.UCharacter$DecompositionType#FINAL
+field:android.icu.lang.UCharacter$DecompositionType#FONT
+field:android.icu.lang.UCharacter$DecompositionType#FRACTION
+field:android.icu.lang.UCharacter$DecompositionType#INITIAL
+field:android.icu.lang.UCharacter$DecompositionType#ISOLATED
+field:android.icu.lang.UCharacter$DecompositionType#MEDIAL
+field:android.icu.lang.UCharacter$DecompositionType#NARROW
+field:android.icu.lang.UCharacter$DecompositionType#NOBREAK
+field:android.icu.lang.UCharacter$DecompositionType#SMALL
+field:android.icu.lang.UCharacter$DecompositionType#SQUARE
+field:android.icu.lang.UCharacter$DecompositionType#SUB
+field:android.icu.lang.UCharacter$DecompositionType#SUPER
+field:android.icu.lang.UCharacter$DecompositionType#VERTICAL
+field:android.icu.lang.UCharacter$DecompositionType#WIDE
+type:android.icu.lang.UCharacter$JoiningType
+field:android.icu.lang.UCharacter$JoiningType#NON_JOINING
+field:android.icu.lang.UCharacter$JoiningType#JOIN_CAUSING
+field:android.icu.lang.UCharacter$JoiningType#DUAL_JOINING
+field:android.icu.lang.UCharacter$JoiningType#LEFT_JOINING
+field:android.icu.lang.UCharacter$JoiningType#RIGHT_JOINING
+field:android.icu.lang.UCharacter$JoiningType#TRANSPARENT
+type:android.icu.lang.UCharacter$JoiningGroup
+field:android.icu.lang.UCharacter$JoiningGroup#NO_JOINING_GROUP
+field:android.icu.lang.UCharacter$JoiningGroup#AIN
+field:android.icu.lang.UCharacter$JoiningGroup#ALAPH
+field:android.icu.lang.UCharacter$JoiningGroup#ALEF
+field:android.icu.lang.UCharacter$JoiningGroup#BEH
+field:android.icu.lang.UCharacter$JoiningGroup#BETH
+field:android.icu.lang.UCharacter$JoiningGroup#DAL
+field:android.icu.lang.UCharacter$JoiningGroup#DALATH_RISH
+field:android.icu.lang.UCharacter$JoiningGroup#E
+field:android.icu.lang.UCharacter$JoiningGroup#FEH
+field:android.icu.lang.UCharacter$JoiningGroup#FINAL_SEMKATH
+field:android.icu.lang.UCharacter$JoiningGroup#GAF
+field:android.icu.lang.UCharacter$JoiningGroup#GAMAL
+field:android.icu.lang.UCharacter$JoiningGroup#HAH
+field:android.icu.lang.UCharacter$JoiningGroup#TEH_MARBUTA_GOAL
+field:android.icu.lang.UCharacter$JoiningGroup#HAMZA_ON_HEH_GOAL
+field:android.icu.lang.UCharacter$JoiningGroup#HE
+field:android.icu.lang.UCharacter$JoiningGroup#HEH
+field:android.icu.lang.UCharacter$JoiningGroup#HEH_GOAL
+field:android.icu.lang.UCharacter$JoiningGroup#HETH
+field:android.icu.lang.UCharacter$JoiningGroup#KAF
+field:android.icu.lang.UCharacter$JoiningGroup#KAPH
+field:android.icu.lang.UCharacter$JoiningGroup#KNOTTED_HEH
+field:android.icu.lang.UCharacter$JoiningGroup#LAM
+field:android.icu.lang.UCharacter$JoiningGroup#LAMADH
+field:android.icu.lang.UCharacter$JoiningGroup#MEEM
+field:android.icu.lang.UCharacter$JoiningGroup#MIM
+field:android.icu.lang.UCharacter$JoiningGroup#NOON
+field:android.icu.lang.UCharacter$JoiningGroup#NUN
+field:android.icu.lang.UCharacter$JoiningGroup#PE
+field:android.icu.lang.UCharacter$JoiningGroup#QAF
+field:android.icu.lang.UCharacter$JoiningGroup#QAPH
+field:android.icu.lang.UCharacter$JoiningGroup#REH
+field:android.icu.lang.UCharacter$JoiningGroup#REVERSED_PE
+field:android.icu.lang.UCharacter$JoiningGroup#SAD
+field:android.icu.lang.UCharacter$JoiningGroup#SADHE
+field:android.icu.lang.UCharacter$JoiningGroup#SEEN
+field:android.icu.lang.UCharacter$JoiningGroup#SEMKATH
+field:android.icu.lang.UCharacter$JoiningGroup#SHIN
+field:android.icu.lang.UCharacter$JoiningGroup#SWASH_KAF
+field:android.icu.lang.UCharacter$JoiningGroup#SYRIAC_WAW
+field:android.icu.lang.UCharacter$JoiningGroup#TAH
+field:android.icu.lang.UCharacter$JoiningGroup#TAW
+field:android.icu.lang.UCharacter$JoiningGroup#TEH_MARBUTA
+field:android.icu.lang.UCharacter$JoiningGroup#TETH
+field:android.icu.lang.UCharacter$JoiningGroup#WAW
+field:android.icu.lang.UCharacter$JoiningGroup#YEH
+field:android.icu.lang.UCharacter$JoiningGroup#YEH_BARREE
+field:android.icu.lang.UCharacter$JoiningGroup#YEH_WITH_TAIL
+field:android.icu.lang.UCharacter$JoiningGroup#YUDH
+field:android.icu.lang.UCharacter$JoiningGroup#YUDH_HE
+field:android.icu.lang.UCharacter$JoiningGroup#ZAIN
+field:android.icu.lang.UCharacter$JoiningGroup#FE
+field:android.icu.lang.UCharacter$JoiningGroup#KHAPH
+field:android.icu.lang.UCharacter$JoiningGroup#ZHAIN
+field:android.icu.lang.UCharacter$JoiningGroup#BURUSHASKI_YEH_BARREE
+field:android.icu.lang.UCharacter$JoiningGroup#FARSI_YEH
+field:android.icu.lang.UCharacter$JoiningGroup#NYA
+field:android.icu.lang.UCharacter$JoiningGroup#ROHINGYA_YEH
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_ALEPH
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_AYIN
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_BETH
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_DALETH
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_DHAMEDH
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_FIVE
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_GIMEL
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_HETH
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_HUNDRED
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_KAPH
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_LAMEDH
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_MEM
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_NUN
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_ONE
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_PE
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_QOPH
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_RESH
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_SADHE
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_SAMEKH
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_TAW
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_TEN
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_TETH
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_THAMEDH
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_TWENTY
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_WAW
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_YODH
+field:android.icu.lang.UCharacter$JoiningGroup#MANICHAEAN_ZAYIN
+field:android.icu.lang.UCharacter$JoiningGroup#STRAIGHT_WAW
+field:android.icu.lang.UCharacter$JoiningGroup#AFRICAN_FEH
+field:android.icu.lang.UCharacter$JoiningGroup#AFRICAN_NOON
+field:android.icu.lang.UCharacter$JoiningGroup#AFRICAN_QAF
+field:android.icu.lang.UCharacter$JoiningGroup#MALAYALAM_BHA
+field:android.icu.lang.UCharacter$JoiningGroup#MALAYALAM_JA
+field:android.icu.lang.UCharacter$JoiningGroup#MALAYALAM_LLA
+field:android.icu.lang.UCharacter$JoiningGroup#MALAYALAM_LLLA
+field:android.icu.lang.UCharacter$JoiningGroup#MALAYALAM_NGA
+field:android.icu.lang.UCharacter$JoiningGroup#MALAYALAM_NNA
+field:android.icu.lang.UCharacter$JoiningGroup#MALAYALAM_NNNA
+field:android.icu.lang.UCharacter$JoiningGroup#MALAYALAM_NYA
+field:android.icu.lang.UCharacter$JoiningGroup#MALAYALAM_RA
+field:android.icu.lang.UCharacter$JoiningGroup#MALAYALAM_SSA
+field:android.icu.lang.UCharacter$JoiningGroup#MALAYALAM_TTA
+field:android.icu.lang.UCharacter$JoiningGroup#HANIFI_ROHINGYA_KINNA_YA
+field:android.icu.lang.UCharacter$JoiningGroup#HANIFI_ROHINGYA_PA
+type:android.icu.lang.UCharacter$GraphemeClusterBreak
+field:android.icu.lang.UCharacter$GraphemeClusterBreak#OTHER
+field:android.icu.lang.UCharacter$GraphemeClusterBreak#CONTROL
+field:android.icu.lang.UCharacter$GraphemeClusterBreak#CR
+field:android.icu.lang.UCharacter$GraphemeClusterBreak#EXTEND
+field:android.icu.lang.UCharacter$GraphemeClusterBreak#L
+field:android.icu.lang.UCharacter$GraphemeClusterBreak#LF
+field:android.icu.lang.UCharacter$GraphemeClusterBreak#LV
+field:android.icu.lang.UCharacter$GraphemeClusterBreak#LVT
+field:android.icu.lang.UCharacter$GraphemeClusterBreak#T
+field:android.icu.lang.UCharacter$GraphemeClusterBreak#V
+field:android.icu.lang.UCharacter$GraphemeClusterBreak#SPACING_MARK
+field:android.icu.lang.UCharacter$GraphemeClusterBreak#PREPEND
+field:android.icu.lang.UCharacter$GraphemeClusterBreak#REGIONAL_INDICATOR
+field:android.icu.lang.UCharacter$GraphemeClusterBreak#E_BASE
+field:android.icu.lang.UCharacter$GraphemeClusterBreak#E_BASE_GAZ
+field:android.icu.lang.UCharacter$GraphemeClusterBreak#E_MODIFIER
+field:android.icu.lang.UCharacter$GraphemeClusterBreak#GLUE_AFTER_ZWJ
+field:android.icu.lang.UCharacter$GraphemeClusterBreak#ZWJ
+type:android.icu.lang.UCharacter$WordBreak
+field:android.icu.lang.UCharacter$WordBreak#OTHER
+field:android.icu.lang.UCharacter$WordBreak#ALETTER
+field:android.icu.lang.UCharacter$WordBreak#FORMAT
+field:android.icu.lang.UCharacter$WordBreak#KATAKANA
+field:android.icu.lang.UCharacter$WordBreak#MIDLETTER
+field:android.icu.lang.UCharacter$WordBreak#MIDNUM
+field:android.icu.lang.UCharacter$WordBreak#NUMERIC
+field:android.icu.lang.UCharacter$WordBreak#EXTENDNUMLET
+field:android.icu.lang.UCharacter$WordBreak#CR
+field:android.icu.lang.UCharacter$WordBreak#EXTEND
+field:android.icu.lang.UCharacter$WordBreak#LF
+field:android.icu.lang.UCharacter$WordBreak#MIDNUMLET
+field:android.icu.lang.UCharacter$WordBreak#NEWLINE
+field:android.icu.lang.UCharacter$WordBreak#REGIONAL_INDICATOR
+field:android.icu.lang.UCharacter$WordBreak#HEBREW_LETTER
+field:android.icu.lang.UCharacter$WordBreak#SINGLE_QUOTE
+field:android.icu.lang.UCharacter$WordBreak#DOUBLE_QUOTE
+field:android.icu.lang.UCharacter$WordBreak#E_BASE
+field:android.icu.lang.UCharacter$WordBreak#E_BASE_GAZ
+field:android.icu.lang.UCharacter$WordBreak#E_MODIFIER
+field:android.icu.lang.UCharacter$WordBreak#GLUE_AFTER_ZWJ
+field:android.icu.lang.UCharacter$WordBreak#ZWJ
+field:android.icu.lang.UCharacter$WordBreak#WSEGSPACE
+type:android.icu.lang.UCharacter$SentenceBreak
+field:android.icu.lang.UCharacter$SentenceBreak#OTHER
+field:android.icu.lang.UCharacter$SentenceBreak#ATERM
+field:android.icu.lang.UCharacter$SentenceBreak#CLOSE
+field:android.icu.lang.UCharacter$SentenceBreak#FORMAT
+field:android.icu.lang.UCharacter$SentenceBreak#LOWER
+field:android.icu.lang.UCharacter$SentenceBreak#NUMERIC
+field:android.icu.lang.UCharacter$SentenceBreak#OLETTER
+field:android.icu.lang.UCharacter$SentenceBreak#SEP
+field:android.icu.lang.UCharacter$SentenceBreak#SP
+field:android.icu.lang.UCharacter$SentenceBreak#STERM
+field:android.icu.lang.UCharacter$SentenceBreak#UPPER
+field:android.icu.lang.UCharacter$SentenceBreak#CR
+field:android.icu.lang.UCharacter$SentenceBreak#EXTEND
+field:android.icu.lang.UCharacter$SentenceBreak#LF
+field:android.icu.lang.UCharacter$SentenceBreak#SCONTINUE
+type:android.icu.lang.UCharacter$LineBreak
+field:android.icu.lang.UCharacter$LineBreak#UNKNOWN
+field:android.icu.lang.UCharacter$LineBreak#AMBIGUOUS
+field:android.icu.lang.UCharacter$LineBreak#ALPHABETIC
+field:android.icu.lang.UCharacter$LineBreak#BREAK_BOTH
+field:android.icu.lang.UCharacter$LineBreak#BREAK_AFTER
+field:android.icu.lang.UCharacter$LineBreak#BREAK_BEFORE
+field:android.icu.lang.UCharacter$LineBreak#MANDATORY_BREAK
+field:android.icu.lang.UCharacter$LineBreak#CONTINGENT_BREAK
+field:android.icu.lang.UCharacter$LineBreak#CLOSE_PUNCTUATION
+field:android.icu.lang.UCharacter$LineBreak#COMBINING_MARK
+field:android.icu.lang.UCharacter$LineBreak#CARRIAGE_RETURN
+field:android.icu.lang.UCharacter$LineBreak#EXCLAMATION
+field:android.icu.lang.UCharacter$LineBreak#GLUE
+field:android.icu.lang.UCharacter$LineBreak#HYPHEN
+field:android.icu.lang.UCharacter$LineBreak#IDEOGRAPHIC
+field:android.icu.lang.UCharacter$LineBreak#INSEPERABLE
+field:android.icu.lang.UCharacter$LineBreak#INSEPARABLE
+field:android.icu.lang.UCharacter$LineBreak#INFIX_NUMERIC
+field:android.icu.lang.UCharacter$LineBreak#LINE_FEED
+field:android.icu.lang.UCharacter$LineBreak#NONSTARTER
+field:android.icu.lang.UCharacter$LineBreak#NUMERIC
+field:android.icu.lang.UCharacter$LineBreak#OPEN_PUNCTUATION
+field:android.icu.lang.UCharacter$LineBreak#POSTFIX_NUMERIC
+field:android.icu.lang.UCharacter$LineBreak#PREFIX_NUMERIC
+field:android.icu.lang.UCharacter$LineBreak#QUOTATION
+field:android.icu.lang.UCharacter$LineBreak#COMPLEX_CONTEXT
+field:android.icu.lang.UCharacter$LineBreak#SURROGATE
+field:android.icu.lang.UCharacter$LineBreak#SPACE
+field:android.icu.lang.UCharacter$LineBreak#BREAK_SYMBOLS
+field:android.icu.lang.UCharacter$LineBreak#ZWSPACE
+field:android.icu.lang.UCharacter$LineBreak#NEXT_LINE
+field:android.icu.lang.UCharacter$LineBreak#WORD_JOINER
+field:android.icu.lang.UCharacter$LineBreak#H2
+field:android.icu.lang.UCharacter$LineBreak#H3
+field:android.icu.lang.UCharacter$LineBreak#JL
+field:android.icu.lang.UCharacter$LineBreak#JT
+field:android.icu.lang.UCharacter$LineBreak#JV
+field:android.icu.lang.UCharacter$LineBreak#CLOSE_PARENTHESIS
+field:android.icu.lang.UCharacter$LineBreak#CONDITIONAL_JAPANESE_STARTER
+field:android.icu.lang.UCharacter$LineBreak#HEBREW_LETTER
+field:android.icu.lang.UCharacter$LineBreak#REGIONAL_INDICATOR
+field:android.icu.lang.UCharacter$LineBreak#E_BASE
+field:android.icu.lang.UCharacter$LineBreak#E_MODIFIER
+field:android.icu.lang.UCharacter$LineBreak#ZWJ
+type:android.icu.lang.UCharacter$NumericType
+field:android.icu.lang.UCharacter$NumericType#NONE
+field:android.icu.lang.UCharacter$NumericType#DECIMAL
+field:android.icu.lang.UCharacter$NumericType#DIGIT
+field:android.icu.lang.UCharacter$NumericType#NUMERIC
+type:android.icu.lang.UCharacter$HangulSyllableType
+field:android.icu.lang.UCharacter$HangulSyllableType#NOT_APPLICABLE
+field:android.icu.lang.UCharacter$HangulSyllableType#LEADING_JAMO
+field:android.icu.lang.UCharacter$HangulSyllableType#VOWEL_JAMO
+field:android.icu.lang.UCharacter$HangulSyllableType#TRAILING_JAMO
+field:android.icu.lang.UCharacter$HangulSyllableType#LV_SYLLABLE
+field:android.icu.lang.UCharacter$HangulSyllableType#LVT_SYLLABLE
+type:android.icu.lang.UCharacter$BidiPairedBracketType
+field:android.icu.lang.UCharacter$BidiPairedBracketType#NONE
+field:android.icu.lang.UCharacter$BidiPairedBracketType#OPEN
+field:android.icu.lang.UCharacter$BidiPairedBracketType#CLOSE
+type:android.icu.lang.UCharacter$IndicPositionalCategory
+field:android.icu.lang.UCharacter$IndicPositionalCategory#NA
+field:android.icu.lang.UCharacter$IndicPositionalCategory#BOTTOM
+field:android.icu.lang.UCharacter$IndicPositionalCategory#BOTTOM_AND_LEFT
+field:android.icu.lang.UCharacter$IndicPositionalCategory#BOTTOM_AND_RIGHT
+field:android.icu.lang.UCharacter$IndicPositionalCategory#LEFT
+field:android.icu.lang.UCharacter$IndicPositionalCategory#LEFT_AND_RIGHT
+field:android.icu.lang.UCharacter$IndicPositionalCategory#OVERSTRUCK
+field:android.icu.lang.UCharacter$IndicPositionalCategory#RIGHT
+field:android.icu.lang.UCharacter$IndicPositionalCategory#TOP
+field:android.icu.lang.UCharacter$IndicPositionalCategory#TOP_AND_BOTTOM
+field:android.icu.lang.UCharacter$IndicPositionalCategory#TOP_AND_BOTTOM_AND_RIGHT
+field:android.icu.lang.UCharacter$IndicPositionalCategory#TOP_AND_LEFT
+field:android.icu.lang.UCharacter$IndicPositionalCategory#TOP_AND_LEFT_AND_RIGHT
+field:android.icu.lang.UCharacter$IndicPositionalCategory#TOP_AND_RIGHT
+field:android.icu.lang.UCharacter$IndicPositionalCategory#VISUAL_ORDER_LEFT
+field:android.icu.lang.UCharacter$IndicPositionalCategory#TOP_AND_BOTTOM_AND_LEFT
+type:android.icu.lang.UCharacter$IndicSyllabicCategory
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#OTHER
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#AVAGRAHA
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#BINDU
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#BRAHMI_JOINING_NUMBER
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#CANTILLATION_MARK
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#CONSONANT
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#CONSONANT_DEAD
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#CONSONANT_FINAL
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#CONSONANT_HEAD_LETTER
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#CONSONANT_INITIAL_POSTFIXED
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#CONSONANT_KILLER
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#CONSONANT_MEDIAL
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#CONSONANT_PLACEHOLDER
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#CONSONANT_PRECEDING_REPHA
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#CONSONANT_PREFIXED
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#CONSONANT_SUBJOINED
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#CONSONANT_SUCCEEDING_REPHA
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#CONSONANT_WITH_STACKER
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#GEMINATION_MARK
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#INVISIBLE_STACKER
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#JOINER
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#MODIFYING_LETTER
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#NON_JOINER
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#NUKTA
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#NUMBER
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#NUMBER_JOINER
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#PURE_KILLER
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#REGISTER_SHIFTER
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#SYLLABLE_MODIFIER
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#TONE_LETTER
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#TONE_MARK
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#VIRAMA
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#VISARGA
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#VOWEL
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#VOWEL_DEPENDENT
+field:android.icu.lang.UCharacter$IndicSyllabicCategory#VOWEL_INDEPENDENT
+type:android.icu.lang.UCharacter$VerticalOrientation
+field:android.icu.lang.UCharacter$VerticalOrientation#ROTATED
+field:android.icu.lang.UCharacter$VerticalOrientation#TRANSFORMED_ROTATED
+field:android.icu.lang.UCharacter$VerticalOrientation#TRANSFORMED_UPRIGHT
+field:android.icu.lang.UCharacter$VerticalOrientation#UPRIGHT
+field:android.icu.lang.UCharacter#MIN_VALUE
+field:android.icu.lang.UCharacter#MAX_VALUE
+field:android.icu.lang.UCharacter#SUPPLEMENTARY_MIN_VALUE
+field:android.icu.lang.UCharacter#REPLACEMENT_CHAR
+field:android.icu.lang.UCharacter#NO_NUMERIC_VALUE
+field:android.icu.lang.UCharacter#MIN_RADIX
+field:android.icu.lang.UCharacter#MAX_RADIX
+field:android.icu.lang.UCharacter#TITLECASE_NO_LOWERCASE
+field:android.icu.lang.UCharacter#TITLECASE_NO_BREAK_ADJUSTMENT
+method:android.icu.lang.UCharacter#digit(int,int)
+method:android.icu.lang.UCharacter#digit(int)
+method:android.icu.lang.UCharacter#getNumericValue(int)
+method:android.icu.lang.UCharacter#getUnicodeNumericValue(int)
+method:android.icu.lang.UCharacter#getType(int)
+method:android.icu.lang.UCharacter#isDefined(int)
+method:android.icu.lang.UCharacter#isDigit(int)
+method:android.icu.lang.UCharacter#isISOControl(int)
+method:android.icu.lang.UCharacter#isLetter(int)
+method:android.icu.lang.UCharacter#isLetterOrDigit(int)
+method:android.icu.lang.UCharacter#isJavaIdentifierStart(int)
+method:android.icu.lang.UCharacter#isJavaIdentifierPart(int)
+method:android.icu.lang.UCharacter#isLowerCase(int)
+method:android.icu.lang.UCharacter#isWhitespace(int)
+method:android.icu.lang.UCharacter#isSpaceChar(int)
+method:android.icu.lang.UCharacter#isTitleCase(int)
+method:android.icu.lang.UCharacter#isUnicodeIdentifierPart(int)
+method:android.icu.lang.UCharacter#isUnicodeIdentifierStart(int)
+method:android.icu.lang.UCharacter#isIdentifierIgnorable(int)
+method:android.icu.lang.UCharacter#isUpperCase(int)
+method:android.icu.lang.UCharacter#toLowerCase(int)
+method:android.icu.lang.UCharacter#toString(int)
+method:android.icu.lang.UCharacter#toTitleCase(int)
+method:android.icu.lang.UCharacter#toUpperCase(int)
+method:android.icu.lang.UCharacter#isSupplementary(int)
+method:android.icu.lang.UCharacter#isBMP(int)
+method:android.icu.lang.UCharacter#isPrintable(int)
+method:android.icu.lang.UCharacter#isBaseForm(int)
+method:android.icu.lang.UCharacter#getDirection(int)
+method:android.icu.lang.UCharacter#isMirrored(int)
+method:android.icu.lang.UCharacter#getMirror(int)
+method:android.icu.lang.UCharacter#getBidiPairedBracket(int)
+method:android.icu.lang.UCharacter#getCombiningClass(int)
+method:android.icu.lang.UCharacter#isLegal(int)
+method:android.icu.lang.UCharacter#isLegal(String)
+method:android.icu.lang.UCharacter#getUnicodeVersion()
+method:android.icu.lang.UCharacter#getName(int)
+method:android.icu.lang.UCharacter#getName(String,String)
+method:android.icu.lang.UCharacter#getExtendedName(int)
+method:android.icu.lang.UCharacter#getNameAlias(int)
+method:android.icu.lang.UCharacter#getCharFromName(String)
+method:android.icu.lang.UCharacter#getCharFromExtendedName(String)
+method:android.icu.lang.UCharacter#getCharFromNameAlias(String)
+method:android.icu.lang.UCharacter#getPropertyName(int,int)
+method:android.icu.lang.UCharacter#getPropertyEnum(CharSequence)
+method:android.icu.lang.UCharacter#getPropertyValueName(int,int,int)
+method:android.icu.lang.UCharacter#getPropertyValueEnum(int,CharSequence)
+method:android.icu.lang.UCharacter#getCodePoint(char,char)
+method:android.icu.lang.UCharacter#getCodePoint(char)
+method:android.icu.lang.UCharacter#toUpperCase(String)
+method:android.icu.lang.UCharacter#toLowerCase(String)
+method:android.icu.lang.UCharacter#toTitleCase(String,BreakIterator)
+method:android.icu.lang.UCharacter#toUpperCase(Locale,String)
+method:android.icu.lang.UCharacter#toUpperCase(ULocale,String)
+method:android.icu.lang.UCharacter#toLowerCase(Locale,String)
+method:android.icu.lang.UCharacter#toLowerCase(ULocale,String)
+method:android.icu.lang.UCharacter#toTitleCase(Locale,String,BreakIterator)
+method:android.icu.lang.UCharacter#toTitleCase(ULocale,String,BreakIterator)
+method:android.icu.lang.UCharacter#toTitleCase(ULocale,String,BreakIterator,int)
+method:android.icu.lang.UCharacter#toTitleCase(Locale,String,BreakIterator,int)
+method:android.icu.lang.UCharacter#foldCase(int,boolean)
+method:android.icu.lang.UCharacter#foldCase(String,boolean)
+field:android.icu.lang.UCharacter#FOLD_CASE_DEFAULT
+field:android.icu.lang.UCharacter#FOLD_CASE_EXCLUDE_SPECIAL_I
+method:android.icu.lang.UCharacter#foldCase(int,int)
+method:android.icu.lang.UCharacter#foldCase(String,int)
+method:android.icu.lang.UCharacter#getHanNumericValue(int)
+method:android.icu.lang.UCharacter#getTypeIterator()
+method:android.icu.lang.UCharacter#getNameIterator()
+method:android.icu.lang.UCharacter#getExtendedNameIterator()
+method:android.icu.lang.UCharacter#getAge(int)
+method:android.icu.lang.UCharacter#hasBinaryProperty(int,int)
+method:android.icu.lang.UCharacter#isUAlphabetic(int)
+method:android.icu.lang.UCharacter#isULowercase(int)
+method:android.icu.lang.UCharacter#isUUppercase(int)
+method:android.icu.lang.UCharacter#isUWhiteSpace(int)
+method:android.icu.lang.UCharacter#getIntPropertyValue(int,int)
+method:android.icu.lang.UCharacter#getIntPropertyMinValue(int)
+method:android.icu.lang.UCharacter#getIntPropertyMaxValue(int)
+method:android.icu.lang.UCharacter#forDigit(int,int)
+field:android.icu.lang.UCharacter#MIN_HIGH_SURROGATE
+field:android.icu.lang.UCharacter#MAX_HIGH_SURROGATE
+field:android.icu.lang.UCharacter#MIN_LOW_SURROGATE
+field:android.icu.lang.UCharacter#MAX_LOW_SURROGATE
+field:android.icu.lang.UCharacter#MIN_SURROGATE
+field:android.icu.lang.UCharacter#MAX_SURROGATE
+field:android.icu.lang.UCharacter#MIN_SUPPLEMENTARY_CODE_POINT
+field:android.icu.lang.UCharacter#MAX_CODE_POINT
+field:android.icu.lang.UCharacter#MIN_CODE_POINT
+method:android.icu.lang.UCharacter#isValidCodePoint(int)
+method:android.icu.lang.UCharacter#isSupplementaryCodePoint(int)
+method:android.icu.lang.UCharacter#isHighSurrogate(char)
+method:android.icu.lang.UCharacter#isLowSurrogate(char)
+method:android.icu.lang.UCharacter#isSurrogatePair(char,char)
+method:android.icu.lang.UCharacter#charCount(int)
+method:android.icu.lang.UCharacter#toCodePoint(char,char)
+method:android.icu.lang.UCharacter#codePointAt(CharSequence,int)
+method:android.icu.lang.UCharacter#codePointAt(char[],int)
+method:android.icu.lang.UCharacter#codePointAt(char[],int,int)
+method:android.icu.lang.UCharacter#codePointBefore(CharSequence,int)
+method:android.icu.lang.UCharacter#codePointBefore(char[],int)
+method:android.icu.lang.UCharacter#codePointBefore(char[],int,int)
+method:android.icu.lang.UCharacter#toChars(int,char[],int)
+method:android.icu.lang.UCharacter#toChars(int)
+method:android.icu.lang.UCharacter#getDirectionality(int)
+method:android.icu.lang.UCharacter#codePointCount(CharSequence,int,int)
+method:android.icu.lang.UCharacter#codePointCount(char[],int,int)
+method:android.icu.lang.UCharacter#offsetByCodePoints(CharSequence,int,int)
+method:android.icu.lang.UCharacter#offsetByCodePoints(char[],int,int,int,int)
+type:android.icu.lang.UCharacterDirection
+method:android.icu.lang.UCharacterDirection#toString(int)
+type:android.icu.lang.UCharacterEnums
+type:android.icu.lang.UCharacterEnums$ECharacterCategory
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#UNASSIGNED
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#GENERAL_OTHER_TYPES
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#UPPERCASE_LETTER
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#LOWERCASE_LETTER
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#TITLECASE_LETTER
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#MODIFIER_LETTER
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#OTHER_LETTER
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#NON_SPACING_MARK
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#ENCLOSING_MARK
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#COMBINING_SPACING_MARK
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#DECIMAL_DIGIT_NUMBER
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#LETTER_NUMBER
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#OTHER_NUMBER
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#SPACE_SEPARATOR
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#LINE_SEPARATOR
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#PARAGRAPH_SEPARATOR
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#CONTROL
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#FORMAT
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#PRIVATE_USE
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#SURROGATE
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#DASH_PUNCTUATION
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#START_PUNCTUATION
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#END_PUNCTUATION
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#CONNECTOR_PUNCTUATION
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#OTHER_PUNCTUATION
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#MATH_SYMBOL
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#CURRENCY_SYMBOL
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#MODIFIER_SYMBOL
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#OTHER_SYMBOL
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#INITIAL_PUNCTUATION
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#INITIAL_QUOTE_PUNCTUATION
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#FINAL_PUNCTUATION
+field:android.icu.lang.UCharacterEnums$ECharacterCategory#FINAL_QUOTE_PUNCTUATION
+type:android.icu.lang.UCharacterEnums$ECharacterDirection
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#LEFT_TO_RIGHT
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_LEFT_TO_RIGHT
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#RIGHT_TO_LEFT
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_RIGHT_TO_LEFT
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#EUROPEAN_NUMBER
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_EUROPEAN_NUMBER
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#EUROPEAN_NUMBER_SEPARATOR
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#EUROPEAN_NUMBER_TERMINATOR
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#ARABIC_NUMBER
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_ARABIC_NUMBER
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#COMMON_NUMBER_SEPARATOR
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_COMMON_NUMBER_SEPARATOR
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#BLOCK_SEPARATOR
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_PARAGRAPH_SEPARATOR
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#SEGMENT_SEPARATOR
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_SEGMENT_SEPARATOR
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#WHITE_SPACE_NEUTRAL
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_WHITESPACE
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#OTHER_NEUTRAL
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_OTHER_NEUTRALS
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#LEFT_TO_RIGHT_EMBEDDING
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#LEFT_TO_RIGHT_OVERRIDE
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#RIGHT_TO_LEFT_ARABIC
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#RIGHT_TO_LEFT_EMBEDDING
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#RIGHT_TO_LEFT_OVERRIDE
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#POP_DIRECTIONAL_FORMAT
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_POP_DIRECTIONAL_FORMAT
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIR_NON_SPACING_MARK
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_NONSPACING_MARK
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#BOUNDARY_NEUTRAL
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_BOUNDARY_NEUTRAL
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#FIRST_STRONG_ISOLATE
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#LEFT_TO_RIGHT_ISOLATE
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#RIGHT_TO_LEFT_ISOLATE
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#POP_DIRECTIONAL_ISOLATE
+field:android.icu.lang.UCharacterEnums$ECharacterDirection#DIRECTIONALITY_UNDEFINED
+type:android.icu.math.MathContext
+field:android.icu.math.MathContext#PLAIN
+field:android.icu.math.MathContext#SCIENTIFIC
+field:android.icu.math.MathContext#ENGINEERING
+field:android.icu.math.MathContext#ROUND_CEILING
+field:android.icu.math.MathContext#ROUND_DOWN
+field:android.icu.math.MathContext#ROUND_FLOOR
+field:android.icu.math.MathContext#ROUND_HALF_DOWN
+field:android.icu.math.MathContext#ROUND_HALF_EVEN
+field:android.icu.math.MathContext#ROUND_HALF_UP
+field:android.icu.math.MathContext#ROUND_UNNECESSARY
+field:android.icu.math.MathContext#ROUND_UP
+field:android.icu.math.MathContext#DEFAULT
+method:android.icu.math.MathContext#MathContext(int)
+method:android.icu.math.MathContext#MathContext(int,int)
+method:android.icu.math.MathContext#MathContext(int,int,boolean)
+method:android.icu.math.MathContext#MathContext(int,int,boolean,int)
+method:android.icu.math.MathContext#getDigits()
+method:android.icu.math.MathContext#getForm()
+method:android.icu.math.MathContext#getLostDigits()
+method:android.icu.math.MathContext#getRoundingMode()
+method:android.icu.math.MathContext#toString()
+type:android.icu.math.BigDecimal
+field:android.icu.math.BigDecimal#ZERO
+field:android.icu.math.BigDecimal#ONE
+field:android.icu.math.BigDecimal#TEN
+field:android.icu.math.BigDecimal#ROUND_CEILING
+field:android.icu.math.BigDecimal#ROUND_DOWN
+field:android.icu.math.BigDecimal#ROUND_FLOOR
+field:android.icu.math.BigDecimal#ROUND_HALF_DOWN
+field:android.icu.math.BigDecimal#ROUND_HALF_EVEN
+field:android.icu.math.BigDecimal#ROUND_HALF_UP
+field:android.icu.math.BigDecimal#ROUND_UNNECESSARY
+field:android.icu.math.BigDecimal#ROUND_UP
+method:android.icu.math.BigDecimal#BigDecimal(java.math.BigDecimal)
+method:android.icu.math.BigDecimal#BigDecimal(java.math.BigInteger)
+method:android.icu.math.BigDecimal#BigDecimal(java.math.BigInteger,int)
+method:android.icu.math.BigDecimal#BigDecimal(char)
+method:android.icu.math.BigDecimal#BigDecimal(char,int,int)
+method:android.icu.math.BigDecimal#BigDecimal(double)
+method:android.icu.math.BigDecimal#BigDecimal(int)
+method:android.icu.math.BigDecimal#BigDecimal(long)
+method:android.icu.math.BigDecimal#BigDecimal(java.lang.String)
+method:android.icu.math.BigDecimal#abs()
+method:android.icu.math.BigDecimal#abs(android.icu.math.MathContext)
+method:android.icu.math.BigDecimal#add(android.icu.math.BigDecimal)
+method:android.icu.math.BigDecimal#add(android.icu.math.BigDecimal,android.icu.math.MathContext)
+method:android.icu.math.BigDecimal#compareTo(android.icu.math.BigDecimal)
+method:android.icu.math.BigDecimal#compareTo(android.icu.math.BigDecimal,android.icu.math.MathContext)
+method:android.icu.math.BigDecimal#divide(android.icu.math.BigDecimal)
+method:android.icu.math.BigDecimal#divide(android.icu.math.BigDecimal,int)
+method:android.icu.math.BigDecimal#divide(android.icu.math.BigDecimal,int,int)
+method:android.icu.math.BigDecimal#divide(android.icu.math.BigDecimal,android.icu.math.MathContext)
+method:android.icu.math.BigDecimal#divideInteger(android.icu.math.BigDecimal)
+method:android.icu.math.BigDecimal#divideInteger(android.icu.math.BigDecimal,android.icu.math.MathContext)
+method:android.icu.math.BigDecimal#max(android.icu.math.BigDecimal)
+method:android.icu.math.BigDecimal#max(android.icu.math.BigDecimal,android.icu.math.MathContext)
+method:android.icu.math.BigDecimal#min(android.icu.math.BigDecimal)
+method:android.icu.math.BigDecimal#min(android.icu.math.BigDecimal,android.icu.math.MathContext)
+method:android.icu.math.BigDecimal#multiply(android.icu.math.BigDecimal)
+method:android.icu.math.BigDecimal#multiply(android.icu.math.BigDecimal,android.icu.math.MathContext)
+method:android.icu.math.BigDecimal#negate()
+method:android.icu.math.BigDecimal#negate(android.icu.math.MathContext)
+method:android.icu.math.BigDecimal#plus()
+method:android.icu.math.BigDecimal#plus(android.icu.math.MathContext)
+method:android.icu.math.BigDecimal#pow(android.icu.math.BigDecimal)
+method:android.icu.math.BigDecimal#pow(android.icu.math.BigDecimal,android.icu.math.MathContext)
+method:android.icu.math.BigDecimal#remainder(android.icu.math.BigDecimal)
+method:android.icu.math.BigDecimal#remainder(android.icu.math.BigDecimal,android.icu.math.MathContext)
+method:android.icu.math.BigDecimal#subtract(android.icu.math.BigDecimal)
+method:android.icu.math.BigDecimal#subtract(android.icu.math.BigDecimal,android.icu.math.MathContext)
+method:android.icu.math.BigDecimal#byteValueExact()
+method:android.icu.math.BigDecimal#doubleValue()
+method:android.icu.math.BigDecimal#equals(java.lang.Object)
+method:android.icu.math.BigDecimal#floatValue()
+method:android.icu.math.BigDecimal#format(int,int)
+method:android.icu.math.BigDecimal#format(int,int,int,int,int,int)
+method:android.icu.math.BigDecimal#hashCode()
+method:android.icu.math.BigDecimal#intValue()
+method:android.icu.math.BigDecimal#intValueExact()
+method:android.icu.math.BigDecimal#longValue()
+method:android.icu.math.BigDecimal#longValueExact()
+method:android.icu.math.BigDecimal#movePointLeft(int)
+method:android.icu.math.BigDecimal#movePointRight(int)
+method:android.icu.math.BigDecimal#scale()
+method:android.icu.math.BigDecimal#setScale(int)
+method:android.icu.math.BigDecimal#setScale(int,int)
+method:android.icu.math.BigDecimal#shortValueExact()
+method:android.icu.math.BigDecimal#signum()
+method:android.icu.math.BigDecimal#toBigDecimal()
+method:android.icu.math.BigDecimal#toBigInteger()
+method:android.icu.math.BigDecimal#toBigIntegerExact()
+method:android.icu.math.BigDecimal#toCharArray()
+method:android.icu.math.BigDecimal#toString()
+method:android.icu.math.BigDecimal#unscaledValue()
+method:android.icu.math.BigDecimal#valueOf(double)
+method:android.icu.math.BigDecimal#valueOf(long)
+method:android.icu.math.BigDecimal#valueOf(long,int)
+type:android.icu.number.UnlocalizedNumberRangeFormatter
+method:android.icu.number.UnlocalizedNumberRangeFormatter#locale(Locale)
+method:android.icu.number.UnlocalizedNumberRangeFormatter#locale(ULocale)
+type:android.icu.number.LocalizedNumberFormatter
+method:android.icu.number.LocalizedNumberFormatter#format(long)
+method:android.icu.number.LocalizedNumberFormatter#format(double)
+method:android.icu.number.LocalizedNumberFormatter#format(Number)
+method:android.icu.number.LocalizedNumberFormatter#format(Measure)
+method:android.icu.number.LocalizedNumberFormatter#toFormat()
+type:android.icu.number.SimpleNotation
+type:android.icu.number.NumberRangeFormatter
+type:android.icu.number.NumberRangeFormatter$RangeCollapse
+enumConstant:android.icu.number.NumberRangeFormatter$RangeCollapse#AUTO
+enumConstant:android.icu.number.NumberRangeFormatter$RangeCollapse#NONE
+enumConstant:android.icu.number.NumberRangeFormatter$RangeCollapse#UNIT
+enumConstant:android.icu.number.NumberRangeFormatter$RangeCollapse#ALL
+type:android.icu.number.NumberRangeFormatter$RangeIdentityFallback
+enumConstant:android.icu.number.NumberRangeFormatter$RangeIdentityFallback#SINGLE_VALUE
+enumConstant:android.icu.number.NumberRangeFormatter$RangeIdentityFallback#APPROXIMATELY_OR_SINGLE_VALUE
+enumConstant:android.icu.number.NumberRangeFormatter$RangeIdentityFallback#APPROXIMATELY
+enumConstant:android.icu.number.NumberRangeFormatter$RangeIdentityFallback#RANGE
+type:android.icu.number.NumberRangeFormatter$RangeIdentityResult
+enumConstant:android.icu.number.NumberRangeFormatter$RangeIdentityResult#EQUAL_BEFORE_ROUNDING
+enumConstant:android.icu.number.NumberRangeFormatter$RangeIdentityResult#EQUAL_AFTER_ROUNDING
+enumConstant:android.icu.number.NumberRangeFormatter$RangeIdentityResult#NOT_EQUAL
+method:android.icu.number.NumberRangeFormatter#with()
+method:android.icu.number.NumberRangeFormatter#withLocale(Locale)
+method:android.icu.number.NumberRangeFormatter#withLocale(ULocale)
+type:android.icu.number.FractionPrecision
+method:android.icu.number.FractionPrecision#withMinDigits(int)
+method:android.icu.number.FractionPrecision#withMaxDigits(int)
+type:android.icu.number.Precision
+method:android.icu.number.Precision#unlimited()
+method:android.icu.number.Precision#integer()
+method:android.icu.number.Precision#fixedFraction(int)
+method:android.icu.number.Precision#minFraction(int)
+method:android.icu.number.Precision#maxFraction(int)
+method:android.icu.number.Precision#minMaxFraction(int,int)
+method:android.icu.number.Precision#fixedSignificantDigits(int)
+method:android.icu.number.Precision#minSignificantDigits(int)
+method:android.icu.number.Precision#maxSignificantDigits(int)
+method:android.icu.number.Precision#minMaxSignificantDigits(int,int)
+method:android.icu.number.Precision#increment(BigDecimal)
+method:android.icu.number.Precision#currency(CurrencyUsage)
+type:android.icu.number.NumberRangeFormatterSettings
+method:android.icu.number.NumberRangeFormatterSettings#numberFormatterBoth(UnlocalizedNumberFormatter)
+method:android.icu.number.NumberRangeFormatterSettings#numberFormatterFirst(UnlocalizedNumberFormatter)
+method:android.icu.number.NumberRangeFormatterSettings#numberFormatterSecond(UnlocalizedNumberFormatter)
+method:android.icu.number.NumberRangeFormatterSettings#collapse(RangeCollapse)
+method:android.icu.number.NumberRangeFormatterSettings#identityFallback(RangeIdentityFallback)
+method:android.icu.number.NumberRangeFormatterSettings#hashCode()
+method:android.icu.number.NumberRangeFormatterSettings#equals(Object)
+type:android.icu.number.FormattedNumber
+method:android.icu.number.FormattedNumber#toString()
+method:android.icu.number.FormattedNumber#length()
+method:android.icu.number.FormattedNumber#charAt(int)
+method:android.icu.number.FormattedNumber#subSequence(int,int)
+method:android.icu.number.FormattedNumber#appendTo(A)
+method:android.icu.number.FormattedNumber#nextPosition(ConstrainedFieldPosition)
+method:android.icu.number.FormattedNumber#toCharacterIterator()
+method:android.icu.number.FormattedNumber#toBigDecimal()
+type:android.icu.number.Scale
+method:android.icu.number.Scale#none()
+method:android.icu.number.Scale#powerOfTen(int)
+method:android.icu.number.Scale#byBigDecimal(BigDecimal)
+method:android.icu.number.Scale#byDouble(double)
+method:android.icu.number.Scale#byDoubleAndPowerOfTen(double,int)
+type:android.icu.number.NumberFormatter
+type:android.icu.number.NumberFormatter$UnitWidth
+enumConstant:android.icu.number.NumberFormatter$UnitWidth#NARROW
+enumConstant:android.icu.number.NumberFormatter$UnitWidth#SHORT
+enumConstant:android.icu.number.NumberFormatter$UnitWidth#FULL_NAME
+enumConstant:android.icu.number.NumberFormatter$UnitWidth#ISO_CODE
+enumConstant:android.icu.number.NumberFormatter$UnitWidth#HIDDEN
+type:android.icu.number.NumberFormatter$GroupingStrategy
+enumConstant:android.icu.number.NumberFormatter$GroupingStrategy#OFF
+enumConstant:android.icu.number.NumberFormatter$GroupingStrategy#MIN2
+enumConstant:android.icu.number.NumberFormatter$GroupingStrategy#AUTO
+enumConstant:android.icu.number.NumberFormatter$GroupingStrategy#ON_ALIGNED
+enumConstant:android.icu.number.NumberFormatter$GroupingStrategy#THOUSANDS
+type:android.icu.number.NumberFormatter$SignDisplay
+enumConstant:android.icu.number.NumberFormatter$SignDisplay#AUTO
+enumConstant:android.icu.number.NumberFormatter$SignDisplay#ALWAYS
+enumConstant:android.icu.number.NumberFormatter$SignDisplay#NEVER
+enumConstant:android.icu.number.NumberFormatter$SignDisplay#ACCOUNTING
+enumConstant:android.icu.number.NumberFormatter$SignDisplay#ACCOUNTING_ALWAYS
+enumConstant:android.icu.number.NumberFormatter$SignDisplay#EXCEPT_ZERO
+enumConstant:android.icu.number.NumberFormatter$SignDisplay#ACCOUNTING_EXCEPT_ZERO
+type:android.icu.number.NumberFormatter$DecimalSeparatorDisplay
+enumConstant:android.icu.number.NumberFormatter$DecimalSeparatorDisplay#AUTO
+enumConstant:android.icu.number.NumberFormatter$DecimalSeparatorDisplay#ALWAYS
+method:android.icu.number.NumberFormatter#with()
+method:android.icu.number.NumberFormatter#withLocale(Locale)
+method:android.icu.number.NumberFormatter#withLocale(ULocale)
+type:android.icu.number.LocalizedNumberRangeFormatter
+method:android.icu.number.LocalizedNumberRangeFormatter#formatRange(int,int)
+method:android.icu.number.LocalizedNumberRangeFormatter#formatRange(double,double)
+method:android.icu.number.LocalizedNumberRangeFormatter#formatRange(Number,Number)
+type:android.icu.number.ScientificNotation
+method:android.icu.number.ScientificNotation#withMinExponentDigits(int)
+method:android.icu.number.ScientificNotation#withExponentSignDisplay(SignDisplay)
+type:android.icu.number.NumberFormatterSettings
+method:android.icu.number.NumberFormatterSettings#notation(Notation)
+method:android.icu.number.NumberFormatterSettings#unit(MeasureUnit)
+method:android.icu.number.NumberFormatterSettings#perUnit(MeasureUnit)
+method:android.icu.number.NumberFormatterSettings#precision(Precision)
+method:android.icu.number.NumberFormatterSettings#roundingMode(RoundingMode)
+method:android.icu.number.NumberFormatterSettings#grouping(GroupingStrategy)
+method:android.icu.number.NumberFormatterSettings#integerWidth(IntegerWidth)
+method:android.icu.number.NumberFormatterSettings#symbols(DecimalFormatSymbols)
+method:android.icu.number.NumberFormatterSettings#symbols(NumberingSystem)
+method:android.icu.number.NumberFormatterSettings#unitWidth(UnitWidth)
+method:android.icu.number.NumberFormatterSettings#sign(SignDisplay)
+method:android.icu.number.NumberFormatterSettings#decimal(DecimalSeparatorDisplay)
+method:android.icu.number.NumberFormatterSettings#scale(Scale)
+method:android.icu.number.NumberFormatterSettings#hashCode()
+method:android.icu.number.NumberFormatterSettings#equals(Object)
+type:android.icu.number.CurrencyPrecision
+method:android.icu.number.CurrencyPrecision#withCurrency(Currency)
+type:android.icu.number.CompactNotation
+type:android.icu.number.IntegerWidth
+method:android.icu.number.IntegerWidth#zeroFillTo(int)
+method:android.icu.number.IntegerWidth#truncateAt(int)
+type:android.icu.number.FormattedNumberRange
+method:android.icu.number.FormattedNumberRange#toString()
+method:android.icu.number.FormattedNumberRange#appendTo(A)
+method:android.icu.number.FormattedNumberRange#charAt(int)
+method:android.icu.number.FormattedNumberRange#length()
+method:android.icu.number.FormattedNumberRange#subSequence(int,int)
+method:android.icu.number.FormattedNumberRange#nextPosition(ConstrainedFieldPosition)
+method:android.icu.number.FormattedNumberRange#toCharacterIterator()
+method:android.icu.number.FormattedNumberRange#getFirstBigDecimal()
+method:android.icu.number.FormattedNumberRange#getSecondBigDecimal()
+method:android.icu.number.FormattedNumberRange#getIdentityResult()
+method:android.icu.number.FormattedNumberRange#hashCode()
+method:android.icu.number.FormattedNumberRange#equals(Object)
+type:android.icu.number.Notation
+method:android.icu.number.Notation#scientific()
+method:android.icu.number.Notation#engineering()
+method:android.icu.number.Notation#compactShort()
+method:android.icu.number.Notation#compactLong()
+method:android.icu.number.Notation#simple()
+type:android.icu.number.UnlocalizedNumberFormatter
+method:android.icu.number.UnlocalizedNumberFormatter#locale(Locale)
+method:android.icu.number.UnlocalizedNumberFormatter#locale(ULocale)
+type:android.icu.text.DateFormat
+field:android.icu.text.DateFormat#calendar
+field:android.icu.text.DateFormat#numberFormat
+field:android.icu.text.DateFormat#ERA_FIELD
+field:android.icu.text.DateFormat#YEAR_FIELD
+field:android.icu.text.DateFormat#MONTH_FIELD
+field:android.icu.text.DateFormat#DATE_FIELD
+field:android.icu.text.DateFormat#HOUR_OF_DAY1_FIELD
+field:android.icu.text.DateFormat#HOUR_OF_DAY0_FIELD
+field:android.icu.text.DateFormat#MINUTE_FIELD
+field:android.icu.text.DateFormat#SECOND_FIELD
+field:android.icu.text.DateFormat#FRACTIONAL_SECOND_FIELD
+field:android.icu.text.DateFormat#MILLISECOND_FIELD
+field:android.icu.text.DateFormat#DAY_OF_WEEK_FIELD
+field:android.icu.text.DateFormat#DAY_OF_YEAR_FIELD
+field:android.icu.text.DateFormat#DAY_OF_WEEK_IN_MONTH_FIELD
+field:android.icu.text.DateFormat#WEEK_OF_YEAR_FIELD
+field:android.icu.text.DateFormat#WEEK_OF_MONTH_FIELD
+field:android.icu.text.DateFormat#AM_PM_FIELD
+field:android.icu.text.DateFormat#HOUR1_FIELD
+field:android.icu.text.DateFormat#HOUR0_FIELD
+field:android.icu.text.DateFormat#TIMEZONE_FIELD
+field:android.icu.text.DateFormat#YEAR_WOY_FIELD
+field:android.icu.text.DateFormat#DOW_LOCAL_FIELD
+field:android.icu.text.DateFormat#EXTENDED_YEAR_FIELD
+field:android.icu.text.DateFormat#JULIAN_DAY_FIELD
+field:android.icu.text.DateFormat#MILLISECONDS_IN_DAY_FIELD
+field:android.icu.text.DateFormat#TIMEZONE_RFC_FIELD
+field:android.icu.text.DateFormat#TIMEZONE_GENERIC_FIELD
+field:android.icu.text.DateFormat#STANDALONE_DAY_FIELD
+field:android.icu.text.DateFormat#STANDALONE_MONTH_FIELD
+field:android.icu.text.DateFormat#QUARTER_FIELD
+field:android.icu.text.DateFormat#STANDALONE_QUARTER_FIELD
+field:android.icu.text.DateFormat#TIMEZONE_SPECIAL_FIELD
+field:android.icu.text.DateFormat#YEAR_NAME_FIELD
+field:android.icu.text.DateFormat#TIMEZONE_LOCALIZED_GMT_OFFSET_FIELD
+field:android.icu.text.DateFormat#TIMEZONE_ISO_FIELD
+field:android.icu.text.DateFormat#TIMEZONE_ISO_LOCAL_FIELD
+field:android.icu.text.DateFormat#AM_PM_MIDNIGHT_NOON_FIELD
+field:android.icu.text.DateFormat#FLEXIBLE_DAY_PERIOD_FIELD
+type:android.icu.text.DateFormat$BooleanAttribute
+enumConstant:android.icu.text.DateFormat$BooleanAttribute#PARSE_ALLOW_WHITESPACE
+enumConstant:android.icu.text.DateFormat$BooleanAttribute#PARSE_ALLOW_NUMERIC
+enumConstant:android.icu.text.DateFormat$BooleanAttribute#PARSE_MULTIPLE_PATTERNS_FOR_MATCH
+enumConstant:android.icu.text.DateFormat$BooleanAttribute#PARSE_PARTIAL_LITERAL_MATCH
+method:android.icu.text.DateFormat#format(Object,StringBuffer,FieldPosition)
+method:android.icu.text.DateFormat#format(Calendar,StringBuffer,FieldPosition)
+method:android.icu.text.DateFormat#format(Date,StringBuffer,FieldPosition)
+method:android.icu.text.DateFormat#format(Date)
+method:android.icu.text.DateFormat#parse(String)
+method:android.icu.text.DateFormat#parse(String,Calendar,ParsePosition)
+method:android.icu.text.DateFormat#parse(String,ParsePosition)
+method:android.icu.text.DateFormat#parseObject(String,ParsePosition)
+field:android.icu.text.DateFormat#NONE
+field:android.icu.text.DateFormat#FULL
+field:android.icu.text.DateFormat#LONG
+field:android.icu.text.DateFormat#MEDIUM
+field:android.icu.text.DateFormat#SHORT
+field:android.icu.text.DateFormat#DEFAULT
+field:android.icu.text.DateFormat#RELATIVE
+field:android.icu.text.DateFormat#RELATIVE_FULL
+field:android.icu.text.DateFormat#RELATIVE_LONG
+field:android.icu.text.DateFormat#RELATIVE_MEDIUM
+field:android.icu.text.DateFormat#RELATIVE_SHORT
+field:android.icu.text.DateFormat#RELATIVE_DEFAULT
+field:android.icu.text.DateFormat#YEAR
+field:android.icu.text.DateFormat#QUARTER
+field:android.icu.text.DateFormat#ABBR_QUARTER
+field:android.icu.text.DateFormat#YEAR_QUARTER
+field:android.icu.text.DateFormat#YEAR_ABBR_QUARTER
+field:android.icu.text.DateFormat#MONTH
+field:android.icu.text.DateFormat#ABBR_MONTH
+field:android.icu.text.DateFormat#NUM_MONTH
+field:android.icu.text.DateFormat#YEAR_MONTH
+field:android.icu.text.DateFormat#YEAR_ABBR_MONTH
+field:android.icu.text.DateFormat#YEAR_NUM_MONTH
+field:android.icu.text.DateFormat#DAY
+field:android.icu.text.DateFormat#YEAR_MONTH_DAY
+field:android.icu.text.DateFormat#YEAR_ABBR_MONTH_DAY
+field:android.icu.text.DateFormat#YEAR_NUM_MONTH_DAY
+field:android.icu.text.DateFormat#WEEKDAY
+field:android.icu.text.DateFormat#ABBR_WEEKDAY
+field:android.icu.text.DateFormat#YEAR_MONTH_WEEKDAY_DAY
+field:android.icu.text.DateFormat#YEAR_ABBR_MONTH_WEEKDAY_DAY
+field:android.icu.text.DateFormat#YEAR_NUM_MONTH_WEEKDAY_DAY
+field:android.icu.text.DateFormat#MONTH_DAY
+field:android.icu.text.DateFormat#ABBR_MONTH_DAY
+field:android.icu.text.DateFormat#NUM_MONTH_DAY
+field:android.icu.text.DateFormat#MONTH_WEEKDAY_DAY
+field:android.icu.text.DateFormat#ABBR_MONTH_WEEKDAY_DAY
+field:android.icu.text.DateFormat#NUM_MONTH_WEEKDAY_DAY
+field:android.icu.text.DateFormat#HOUR
+field:android.icu.text.DateFormat#HOUR24
+field:android.icu.text.DateFormat#MINUTE
+field:android.icu.text.DateFormat#HOUR_MINUTE
+field:android.icu.text.DateFormat#HOUR24_MINUTE
+field:android.icu.text.DateFormat#SECOND
+field:android.icu.text.DateFormat#HOUR_MINUTE_SECOND
+field:android.icu.text.DateFormat#HOUR24_MINUTE_SECOND
+field:android.icu.text.DateFormat#MINUTE_SECOND
+field:android.icu.text.DateFormat#LOCATION_TZ
+field:android.icu.text.DateFormat#GENERIC_TZ
+field:android.icu.text.DateFormat#ABBR_GENERIC_TZ
+field:android.icu.text.DateFormat#SPECIFIC_TZ
+field:android.icu.text.DateFormat#ABBR_SPECIFIC_TZ
+field:android.icu.text.DateFormat#ABBR_UTC_TZ
+method:android.icu.text.DateFormat#getTimeInstance()
+method:android.icu.text.DateFormat#getTimeInstance(int)
+method:android.icu.text.DateFormat#getTimeInstance(int,Locale)
+method:android.icu.text.DateFormat#getTimeInstance(int,ULocale)
+method:android.icu.text.DateFormat#getDateInstance()
+method:android.icu.text.DateFormat#getDateInstance(int)
+method:android.icu.text.DateFormat#getDateInstance(int,Locale)
+method:android.icu.text.DateFormat#getDateInstance(int,ULocale)
+method:android.icu.text.DateFormat#getDateTimeInstance()
+method:android.icu.text.DateFormat#getDateTimeInstance(int,int)
+method:android.icu.text.DateFormat#getDateTimeInstance(int,int,Locale)
+method:android.icu.text.DateFormat#getDateTimeInstance(int,int,ULocale)
+method:android.icu.text.DateFormat#getInstance()
+method:android.icu.text.DateFormat#getAvailableLocales()
+method:android.icu.text.DateFormat#setCalendar(Calendar)
+method:android.icu.text.DateFormat#getCalendar()
+method:android.icu.text.DateFormat#setNumberFormat(NumberFormat)
+method:android.icu.text.DateFormat#getNumberFormat()
+method:android.icu.text.DateFormat#setTimeZone(TimeZone)
+method:android.icu.text.DateFormat#getTimeZone()
+method:android.icu.text.DateFormat#setLenient(boolean)
+method:android.icu.text.DateFormat#isLenient()
+method:android.icu.text.DateFormat#setCalendarLenient(boolean)
+method:android.icu.text.DateFormat#isCalendarLenient()
+method:android.icu.text.DateFormat#setBooleanAttribute(BooleanAttribute,boolean)
+method:android.icu.text.DateFormat#getBooleanAttribute(BooleanAttribute)
+method:android.icu.text.DateFormat#setContext(DisplayContext)
+method:android.icu.text.DateFormat#getContext(DisplayContext.Type)
+method:android.icu.text.DateFormat#hashCode()
+method:android.icu.text.DateFormat#equals(Object)
+method:android.icu.text.DateFormat#clone()
+method:android.icu.text.DateFormat#DateFormat()
+method:android.icu.text.DateFormat#getDateInstance(Calendar,int,Locale)
+method:android.icu.text.DateFormat#getDateInstance(Calendar,int,ULocale)
+method:android.icu.text.DateFormat#getTimeInstance(Calendar,int,Locale)
+method:android.icu.text.DateFormat#getTimeInstance(Calendar,int,ULocale)
+method:android.icu.text.DateFormat#getDateTimeInstance(Calendar,int,int,Locale)
+method:android.icu.text.DateFormat#getDateTimeInstance(Calendar,int,int,ULocale)
+method:android.icu.text.DateFormat#getInstance(Calendar,Locale)
+method:android.icu.text.DateFormat#getInstance(Calendar)
+method:android.icu.text.DateFormat#getDateInstance(Calendar,int)
+method:android.icu.text.DateFormat#getTimeInstance(Calendar,int)
+method:android.icu.text.DateFormat#getDateTimeInstance(Calendar,int,int)
+method:android.icu.text.DateFormat#getInstanceForSkeleton(String)
+method:android.icu.text.DateFormat#getInstanceForSkeleton(String,Locale)
+method:android.icu.text.DateFormat#getInstanceForSkeleton(String,ULocale)
+method:android.icu.text.DateFormat#getInstanceForSkeleton(Calendar,String,Locale)
+method:android.icu.text.DateFormat#getInstanceForSkeleton(Calendar,String,ULocale)
+method:android.icu.text.DateFormat#getPatternInstance(String)
+method:android.icu.text.DateFormat#getPatternInstance(String,Locale)
+method:android.icu.text.DateFormat#getPatternInstance(String,ULocale)
+method:android.icu.text.DateFormat#getPatternInstance(Calendar,String,Locale)
+method:android.icu.text.DateFormat#getPatternInstance(Calendar,String,ULocale)
+type:android.icu.text.DateFormat$Field
+field:android.icu.text.DateFormat$Field#AM_PM
+field:android.icu.text.DateFormat$Field#DAY_OF_MONTH
+field:android.icu.text.DateFormat$Field#DAY_OF_WEEK
+field:android.icu.text.DateFormat$Field#DAY_OF_WEEK_IN_MONTH
+field:android.icu.text.DateFormat$Field#DAY_OF_YEAR
+field:android.icu.text.DateFormat$Field#ERA
+field:android.icu.text.DateFormat$Field#HOUR_OF_DAY0
+field:android.icu.text.DateFormat$Field#HOUR_OF_DAY1
+field:android.icu.text.DateFormat$Field#HOUR0
+field:android.icu.text.DateFormat$Field#HOUR1
+field:android.icu.text.DateFormat$Field#MILLISECOND
+field:android.icu.text.DateFormat$Field#MINUTE
+field:android.icu.text.DateFormat$Field#MONTH
+field:android.icu.text.DateFormat$Field#SECOND
+field:android.icu.text.DateFormat$Field#TIME_ZONE
+field:android.icu.text.DateFormat$Field#WEEK_OF_MONTH
+field:android.icu.text.DateFormat$Field#WEEK_OF_YEAR
+field:android.icu.text.DateFormat$Field#YEAR
+field:android.icu.text.DateFormat$Field#DOW_LOCAL
+field:android.icu.text.DateFormat$Field#EXTENDED_YEAR
+field:android.icu.text.DateFormat$Field#JULIAN_DAY
+field:android.icu.text.DateFormat$Field#MILLISECONDS_IN_DAY
+field:android.icu.text.DateFormat$Field#YEAR_WOY
+field:android.icu.text.DateFormat$Field#QUARTER
+field:android.icu.text.DateFormat$Field#AM_PM_MIDNIGHT_NOON
+field:android.icu.text.DateFormat$Field#FLEXIBLE_DAY_PERIOD
+method:android.icu.text.DateFormat$Field#Field(String,int)
+method:android.icu.text.DateFormat$Field#ofCalendarField(int)
+method:android.icu.text.DateFormat$Field#getCalendarField()
+method:android.icu.text.DateFormat$Field#readResolve()
+type:android.icu.text.BreakIterator
+method:android.icu.text.BreakIterator#BreakIterator()
+method:android.icu.text.BreakIterator#clone()
+field:android.icu.text.BreakIterator#DONE
+method:android.icu.text.BreakIterator#first()
+method:android.icu.text.BreakIterator#last()
+method:android.icu.text.BreakIterator#next(int)
+method:android.icu.text.BreakIterator#next()
+method:android.icu.text.BreakIterator#previous()
+method:android.icu.text.BreakIterator#following(int)
+method:android.icu.text.BreakIterator#preceding(int)
+method:android.icu.text.BreakIterator#isBoundary(int)
+method:android.icu.text.BreakIterator#current()
+field:android.icu.text.BreakIterator#WORD_NONE
+field:android.icu.text.BreakIterator#WORD_NONE_LIMIT
+field:android.icu.text.BreakIterator#WORD_NUMBER
+field:android.icu.text.BreakIterator#WORD_NUMBER_LIMIT
+field:android.icu.text.BreakIterator#WORD_LETTER
+field:android.icu.text.BreakIterator#WORD_LETTER_LIMIT
+field:android.icu.text.BreakIterator#WORD_KANA
+field:android.icu.text.BreakIterator#WORD_KANA_LIMIT
+field:android.icu.text.BreakIterator#WORD_IDEO
+field:android.icu.text.BreakIterator#WORD_IDEO_LIMIT
+method:android.icu.text.BreakIterator#getRuleStatus()
+method:android.icu.text.BreakIterator#getRuleStatusVec(int[])
+method:android.icu.text.BreakIterator#getText()
+method:android.icu.text.BreakIterator#setText(String)
+method:android.icu.text.BreakIterator#setText(CharSequence)
+method:android.icu.text.BreakIterator#setText(CharacterIterator)
+field:android.icu.text.BreakIterator#KIND_CHARACTER
+field:android.icu.text.BreakIterator#KIND_WORD
+field:android.icu.text.BreakIterator#KIND_LINE
+field:android.icu.text.BreakIterator#KIND_SENTENCE
+field:android.icu.text.BreakIterator#KIND_TITLE
+method:android.icu.text.BreakIterator#getWordInstance()
+method:android.icu.text.BreakIterator#getWordInstance(Locale)
+method:android.icu.text.BreakIterator#getWordInstance(ULocale)
+method:android.icu.text.BreakIterator#getLineInstance()
+method:android.icu.text.BreakIterator#getLineInstance(Locale)
+method:android.icu.text.BreakIterator#getLineInstance(ULocale)
+method:android.icu.text.BreakIterator#getCharacterInstance()
+method:android.icu.text.BreakIterator#getCharacterInstance(Locale)
+method:android.icu.text.BreakIterator#getCharacterInstance(ULocale)
+method:android.icu.text.BreakIterator#getSentenceInstance()
+method:android.icu.text.BreakIterator#getSentenceInstance(Locale)
+method:android.icu.text.BreakIterator#getSentenceInstance(ULocale)
+method:android.icu.text.BreakIterator#getTitleInstance()
+method:android.icu.text.BreakIterator#getTitleInstance(Locale)
+method:android.icu.text.BreakIterator#getTitleInstance(ULocale)
+method:android.icu.text.BreakIterator#getAvailableLocales()
+type:android.icu.text.Transliterator
+field:android.icu.text.Transliterator#FORWARD
+field:android.icu.text.Transliterator#REVERSE
+type:android.icu.text.Transliterator$Position
+field:android.icu.text.Transliterator$Position#contextStart
+field:android.icu.text.Transliterator$Position#contextLimit
+field:android.icu.text.Transliterator$Position#start
+field:android.icu.text.Transliterator$Position#limit
+method:android.icu.text.Transliterator$Position#Position()
+method:android.icu.text.Transliterator$Position#Position(int,int,int)
+method:android.icu.text.Transliterator$Position#Position(int,int,int,int)
+method:android.icu.text.Transliterator$Position#Position(Position)
+method:android.icu.text.Transliterator$Position#set(Position)
+method:android.icu.text.Transliterator$Position#equals(Object)
+method:android.icu.text.Transliterator$Position#hashCode()
+method:android.icu.text.Transliterator$Position#toString()
+method:android.icu.text.Transliterator$Position#validate(int)
+method:android.icu.text.Transliterator#transliterate(Replaceable,int,int)
+method:android.icu.text.Transliterator#transliterate(Replaceable)
+method:android.icu.text.Transliterator#transliterate(String)
+method:android.icu.text.Transliterator#transliterate(Replaceable,Position,String)
+method:android.icu.text.Transliterator#transliterate(Replaceable,Position,int)
+method:android.icu.text.Transliterator#transliterate(Replaceable,Position)
+method:android.icu.text.Transliterator#finishTransliteration(Replaceable,Position)
+method:android.icu.text.Transliterator#filteredTransliterate(Replaceable,Position,boolean)
+method:android.icu.text.Transliterator#getMaximumContextLength()
+method:android.icu.text.Transliterator#getID()
+method:android.icu.text.Transliterator#getDisplayName(String)
+method:android.icu.text.Transliterator#getDisplayName(String,Locale)
+method:android.icu.text.Transliterator#getDisplayName(String,ULocale)
+method:android.icu.text.Transliterator#getFilter()
+method:android.icu.text.Transliterator#setFilter(UnicodeFilter)
+method:android.icu.text.Transliterator#getInstance(String)
+method:android.icu.text.Transliterator#getInstance(String,int)
+method:android.icu.text.Transliterator#createFromRules(String,String,int)
+method:android.icu.text.Transliterator#toRules(boolean)
+method:android.icu.text.Transliterator#getElements()
+method:android.icu.text.Transliterator#getSourceSet()
+method:android.icu.text.Transliterator#getTargetSet()
+method:android.icu.text.Transliterator#getInverse()
+method:android.icu.text.Transliterator#getAvailableIDs()
+method:android.icu.text.Transliterator#getAvailableSources()
+method:android.icu.text.Transliterator#getAvailableTargets(String)
+method:android.icu.text.Transliterator#getAvailableVariants(String,String)
+type:android.icu.text.IDNA
+field:android.icu.text.IDNA#DEFAULT
+field:android.icu.text.IDNA#USE_STD3_RULES
+field:android.icu.text.IDNA#CHECK_BIDI
+field:android.icu.text.IDNA#CHECK_CONTEXTJ
+field:android.icu.text.IDNA#NONTRANSITIONAL_TO_ASCII
+field:android.icu.text.IDNA#NONTRANSITIONAL_TO_UNICODE
+field:android.icu.text.IDNA#CHECK_CONTEXTO
+method:android.icu.text.IDNA#getUTS46Instance(int)
+method:android.icu.text.IDNA#labelToASCII(CharSequence,StringBuilder,Info)
+method:android.icu.text.IDNA#labelToUnicode(CharSequence,StringBuilder,Info)
+method:android.icu.text.IDNA#nameToASCII(CharSequence,StringBuilder,Info)
+method:android.icu.text.IDNA#nameToUnicode(CharSequence,StringBuilder,Info)
+type:android.icu.text.IDNA$Info
+method:android.icu.text.IDNA$Info#Info()
+method:android.icu.text.IDNA$Info#hasErrors()
+method:android.icu.text.IDNA$Info#getErrors()
+method:android.icu.text.IDNA$Info#isTransitionalDifferent()
+type:android.icu.text.IDNA$Error
+enumConstant:android.icu.text.IDNA$Error#EMPTY_LABEL
+enumConstant:android.icu.text.IDNA$Error#LABEL_TOO_LONG
+enumConstant:android.icu.text.IDNA$Error#DOMAIN_NAME_TOO_LONG
+enumConstant:android.icu.text.IDNA$Error#LEADING_HYPHEN
+enumConstant:android.icu.text.IDNA$Error#TRAILING_HYPHEN
+enumConstant:android.icu.text.IDNA$Error#HYPHEN_3_4
+enumConstant:android.icu.text.IDNA$Error#LEADING_COMBINING_MARK
+enumConstant:android.icu.text.IDNA$Error#DISALLOWED
+enumConstant:android.icu.text.IDNA$Error#PUNYCODE
+enumConstant:android.icu.text.IDNA$Error#LABEL_HAS_DOT
+enumConstant:android.icu.text.IDNA$Error#INVALID_ACE_LABEL
+enumConstant:android.icu.text.IDNA$Error#BIDI
+enumConstant:android.icu.text.IDNA$Error#CONTEXTJ
+enumConstant:android.icu.text.IDNA$Error#CONTEXTO_PUNCTUATION
+enumConstant:android.icu.text.IDNA$Error#CONTEXTO_DIGITS
+type:android.icu.text.SelectFormat
+method:android.icu.text.SelectFormat#SelectFormat(String)
+method:android.icu.text.SelectFormat#applyPattern(String)
+method:android.icu.text.SelectFormat#toPattern()
+method:android.icu.text.SelectFormat#format(String)
+method:android.icu.text.SelectFormat#format(Object,StringBuffer,FieldPosition)
+method:android.icu.text.SelectFormat#parseObject(String,ParsePosition)
+method:android.icu.text.SelectFormat#equals(Object)
+method:android.icu.text.SelectFormat#hashCode()
+method:android.icu.text.SelectFormat#toString()
+type:android.icu.text.PluralFormat
+method:android.icu.text.PluralFormat#PluralFormat()
+method:android.icu.text.PluralFormat#PluralFormat(ULocale)
+method:android.icu.text.PluralFormat#PluralFormat(Locale)
+method:android.icu.text.PluralFormat#PluralFormat(PluralRules)
+method:android.icu.text.PluralFormat#PluralFormat(ULocale,PluralRules)
+method:android.icu.text.PluralFormat#PluralFormat(Locale,PluralRules)
+method:android.icu.text.PluralFormat#PluralFormat(ULocale,PluralType)
+method:android.icu.text.PluralFormat#PluralFormat(Locale,PluralType)
+method:android.icu.text.PluralFormat#PluralFormat(String)
+method:android.icu.text.PluralFormat#PluralFormat(ULocale,String)
+method:android.icu.text.PluralFormat#PluralFormat(PluralRules,String)
+method:android.icu.text.PluralFormat#PluralFormat(ULocale,PluralRules,String)
+method:android.icu.text.PluralFormat#PluralFormat(ULocale,PluralType,String)
+method:android.icu.text.PluralFormat#applyPattern(String)
+method:android.icu.text.PluralFormat#toPattern()
+method:android.icu.text.PluralFormat#format(double)
+method:android.icu.text.PluralFormat#format(Object,StringBuffer,FieldPosition)
+method:android.icu.text.PluralFormat#parse(String,ParsePosition)
+method:android.icu.text.PluralFormat#parseObject(String,ParsePosition)
+method:android.icu.text.PluralFormat#setNumberFormat(NumberFormat)
+method:android.icu.text.PluralFormat#equals(Object)
+method:android.icu.text.PluralFormat#equals(PluralFormat)
+method:android.icu.text.PluralFormat#hashCode()
+method:android.icu.text.PluralFormat#toString()
+type:android.icu.text.StringSearch
+method:android.icu.text.StringSearch#StringSearch(String,CharacterIterator,RuleBasedCollator,BreakIterator)
+method:android.icu.text.StringSearch#StringSearch(String,CharacterIterator,RuleBasedCollator)
+method:android.icu.text.StringSearch#StringSearch(String,CharacterIterator,Locale)
+method:android.icu.text.StringSearch#StringSearch(String,CharacterIterator,ULocale)
+method:android.icu.text.StringSearch#StringSearch(String,String)
+method:android.icu.text.StringSearch#getCollator()
+method:android.icu.text.StringSearch#setCollator(RuleBasedCollator)
+method:android.icu.text.StringSearch#getPattern()
+method:android.icu.text.StringSearch#setPattern(String)
+method:android.icu.text.StringSearch#isCanonical()
+method:android.icu.text.StringSearch#setCanonical(boolean)
+method:android.icu.text.StringSearch#setTarget(CharacterIterator)
+method:android.icu.text.StringSearch#getIndex()
+method:android.icu.text.StringSearch#setIndex(int)
+method:android.icu.text.StringSearch#reset()
+method:android.icu.text.StringSearch#handleNext(int)
+method:android.icu.text.StringSearch#handlePrevious(int)
+type:android.icu.text.CaseMap
+method:android.icu.text.CaseMap#toLower()
+method:android.icu.text.CaseMap#toUpper()
+method:android.icu.text.CaseMap#toTitle()
+method:android.icu.text.CaseMap#fold()
+method:android.icu.text.CaseMap#omitUnchangedText()
+type:android.icu.text.CaseMap$Lower
+method:android.icu.text.CaseMap$Lower#omitUnchangedText()
+method:android.icu.text.CaseMap$Lower#apply(Locale,CharSequence)
+method:android.icu.text.CaseMap$Lower#apply(Locale,CharSequence,A,Edits)
+type:android.icu.text.CaseMap$Upper
+method:android.icu.text.CaseMap$Upper#omitUnchangedText()
+method:android.icu.text.CaseMap$Upper#apply(Locale,CharSequence)
+method:android.icu.text.CaseMap$Upper#apply(Locale,CharSequence,A,Edits)
+type:android.icu.text.CaseMap$Title
+method:android.icu.text.CaseMap$Title#wholeString()
+method:android.icu.text.CaseMap$Title#sentences()
+method:android.icu.text.CaseMap$Title#omitUnchangedText()
+method:android.icu.text.CaseMap$Title#noLowercase()
+method:android.icu.text.CaseMap$Title#noBreakAdjustment()
+method:android.icu.text.CaseMap$Title#adjustToCased()
+method:android.icu.text.CaseMap$Title#apply(Locale,BreakIterator,CharSequence)
+method:android.icu.text.CaseMap$Title#apply(Locale,BreakIterator,CharSequence,A,Edits)
+type:android.icu.text.CaseMap$Fold
+method:android.icu.text.CaseMap$Fold#omitUnchangedText()
+method:android.icu.text.CaseMap$Fold#turkic()
+method:android.icu.text.CaseMap$Fold#apply(CharSequence)
+method:android.icu.text.CaseMap$Fold#apply(CharSequence,A,Edits)
+type:android.icu.text.DateTimePatternGenerator
+method:android.icu.text.DateTimePatternGenerator#getEmptyInstance()
+method:android.icu.text.DateTimePatternGenerator#DateTimePatternGenerator()
+method:android.icu.text.DateTimePatternGenerator#getInstance()
+method:android.icu.text.DateTimePatternGenerator#getInstance(ULocale)
+method:android.icu.text.DateTimePatternGenerator#getInstance(Locale)
+method:android.icu.text.DateTimePatternGenerator#getBestPattern(String)
+method:android.icu.text.DateTimePatternGenerator#getBestPattern(String,int)
+type:android.icu.text.DateTimePatternGenerator$PatternInfo
+field:android.icu.text.DateTimePatternGenerator$PatternInfo#OK
+field:android.icu.text.DateTimePatternGenerator$PatternInfo#BASE_CONFLICT
+field:android.icu.text.DateTimePatternGenerator$PatternInfo#CONFLICT
+field:android.icu.text.DateTimePatternGenerator$PatternInfo#status
+field:android.icu.text.DateTimePatternGenerator$PatternInfo#conflictingPattern
+method:android.icu.text.DateTimePatternGenerator$PatternInfo#PatternInfo()
+method:android.icu.text.DateTimePatternGenerator#addPattern(String,boolean,PatternInfo)
+method:android.icu.text.DateTimePatternGenerator#getSkeleton(String)
+method:android.icu.text.DateTimePatternGenerator#getBaseSkeleton(String)
+method:android.icu.text.DateTimePatternGenerator#getSkeletons(Map<String,String>)
+method:android.icu.text.DateTimePatternGenerator#getBaseSkeletons(Set<String>)
+method:android.icu.text.DateTimePatternGenerator#replaceFieldTypes(String,String)
+method:android.icu.text.DateTimePatternGenerator#replaceFieldTypes(String,String,int)
+method:android.icu.text.DateTimePatternGenerator#setDateTimeFormat(String)
+method:android.icu.text.DateTimePatternGenerator#getDateTimeFormat()
+method:android.icu.text.DateTimePatternGenerator#setDecimal(String)
+method:android.icu.text.DateTimePatternGenerator#getDecimal()
+field:android.icu.text.DateTimePatternGenerator#ERA
+field:android.icu.text.DateTimePatternGenerator#YEAR
+field:android.icu.text.DateTimePatternGenerator#QUARTER
+field:android.icu.text.DateTimePatternGenerator#MONTH
+field:android.icu.text.DateTimePatternGenerator#WEEK_OF_YEAR
+field:android.icu.text.DateTimePatternGenerator#WEEK_OF_MONTH
+field:android.icu.text.DateTimePatternGenerator#WEEKDAY
+field:android.icu.text.DateTimePatternGenerator#DAY
+field:android.icu.text.DateTimePatternGenerator#DAY_OF_YEAR
+field:android.icu.text.DateTimePatternGenerator#DAY_OF_WEEK_IN_MONTH
+field:android.icu.text.DateTimePatternGenerator#DAYPERIOD
+field:android.icu.text.DateTimePatternGenerator#HOUR
+field:android.icu.text.DateTimePatternGenerator#MINUTE
+field:android.icu.text.DateTimePatternGenerator#SECOND
+field:android.icu.text.DateTimePatternGenerator#FRACTIONAL_SECOND
+field:android.icu.text.DateTimePatternGenerator#ZONE
+type:android.icu.text.DateTimePatternGenerator$DisplayWidth
+enumConstant:android.icu.text.DateTimePatternGenerator$DisplayWidth#WIDE
+enumConstant:android.icu.text.DateTimePatternGenerator$DisplayWidth#ABBREVIATED
+enumConstant:android.icu.text.DateTimePatternGenerator$DisplayWidth#NARROW
+field:android.icu.text.DateTimePatternGenerator#MATCH_NO_OPTIONS
+field:android.icu.text.DateTimePatternGenerator#MATCH_HOUR_FIELD_LENGTH
+field:android.icu.text.DateTimePatternGenerator#MATCH_ALL_FIELDS_LENGTH
+method:android.icu.text.DateTimePatternGenerator#setAppendItemFormat(int,String)
+method:android.icu.text.DateTimePatternGenerator#getAppendItemFormat(int)
+method:android.icu.text.DateTimePatternGenerator#setAppendItemName(int,String)
+method:android.icu.text.DateTimePatternGenerator#getAppendItemName(int)
+method:android.icu.text.DateTimePatternGenerator#getFieldDisplayName(int,DisplayWidth)
+method:android.icu.text.DateTimePatternGenerator#isFrozen()
+method:android.icu.text.DateTimePatternGenerator#freeze()
+method:android.icu.text.DateTimePatternGenerator#cloneAsThawed()
+method:android.icu.text.DateTimePatternGenerator#clone()
+type:android.icu.text.CollationElementIterator
+field:android.icu.text.CollationElementIterator#NULLORDER
+field:android.icu.text.CollationElementIterator#IGNORABLE
+method:android.icu.text.CollationElementIterator#primaryOrder(int)
+method:android.icu.text.CollationElementIterator#secondaryOrder(int)
+method:android.icu.text.CollationElementIterator#tertiaryOrder(int)
+method:android.icu.text.CollationElementIterator#getOffset()
+method:android.icu.text.CollationElementIterator#next()
+method:android.icu.text.CollationElementIterator#previous()
+method:android.icu.text.CollationElementIterator#reset()
+method:android.icu.text.CollationElementIterator#setOffset(int)
+method:android.icu.text.CollationElementIterator#setText(String)
+method:android.icu.text.CollationElementIterator#setText(UCharacterIterator)
+method:android.icu.text.CollationElementIterator#setText(CharacterIterator)
+method:android.icu.text.CollationElementIterator#getMaxExpansion(int)
+method:android.icu.text.CollationElementIterator#equals(Object)
+type:android.icu.text.UCharacterIterator
+method:android.icu.text.UCharacterIterator#UCharacterIterator()
+method:android.icu.text.UCharacterIterator#getInstance(Replaceable)
+method:android.icu.text.UCharacterIterator#getInstance(String)
+method:android.icu.text.UCharacterIterator#getInstance(char[])
+method:android.icu.text.UCharacterIterator#getInstance(char[],int,int)
+method:android.icu.text.UCharacterIterator#getInstance(StringBuffer)
+method:android.icu.text.UCharacterIterator#getInstance(CharacterIterator)
+method:android.icu.text.UCharacterIterator#getCharacterIterator()
+method:android.icu.text.UCharacterIterator#current()
+method:android.icu.text.UCharacterIterator#currentCodePoint()
+method:android.icu.text.UCharacterIterator#getLength()
+method:android.icu.text.UCharacterIterator#getIndex()
+method:android.icu.text.UCharacterIterator#next()
+method:android.icu.text.UCharacterIterator#nextCodePoint()
+method:android.icu.text.UCharacterIterator#previous()
+method:android.icu.text.UCharacterIterator#previousCodePoint()
+method:android.icu.text.UCharacterIterator#setIndex(int)
+method:android.icu.text.UCharacterIterator#setToLimit()
+method:android.icu.text.UCharacterIterator#setToStart()
+method:android.icu.text.UCharacterIterator#getText(char[],int)
+method:android.icu.text.UCharacterIterator#getText(char[])
+method:android.icu.text.UCharacterIterator#getText()
+method:android.icu.text.UCharacterIterator#moveIndex(int)
+method:android.icu.text.UCharacterIterator#moveCodePointIndex(int)
+method:android.icu.text.UCharacterIterator#clone()
+type:android.icu.text.ConstrainedFieldPosition
+method:android.icu.text.ConstrainedFieldPosition#ConstrainedFieldPosition()
+method:android.icu.text.ConstrainedFieldPosition#reset()
+method:android.icu.text.ConstrainedFieldPosition#constrainField(Field)
+method:android.icu.text.ConstrainedFieldPosition#constrainClass(Class<?>)
+method:android.icu.text.ConstrainedFieldPosition#getField()
+method:android.icu.text.ConstrainedFieldPosition#getStart()
+method:android.icu.text.ConstrainedFieldPosition#getLimit()
+method:android.icu.text.ConstrainedFieldPosition#getFieldValue()
+method:android.icu.text.ConstrainedFieldPosition#getInt64IterationContext()
+method:android.icu.text.ConstrainedFieldPosition#setInt64IterationContext(long)
+method:android.icu.text.ConstrainedFieldPosition#setState(Field,Object,int,int)
+method:android.icu.text.ConstrainedFieldPosition#matchesField(Field,Object)
+method:android.icu.text.ConstrainedFieldPosition#toString()
+type:android.icu.text.DateIntervalInfo
+type:android.icu.text.DateIntervalInfo$PatternInfo
+method:android.icu.text.DateIntervalInfo$PatternInfo#PatternInfo(String,String,boolean)
+method:android.icu.text.DateIntervalInfo$PatternInfo#getFirstPart()
+method:android.icu.text.DateIntervalInfo$PatternInfo#getSecondPart()
+method:android.icu.text.DateIntervalInfo$PatternInfo#firstDateInPtnIsLaterDate()
+method:android.icu.text.DateIntervalInfo$PatternInfo#equals(Object)
+method:android.icu.text.DateIntervalInfo$PatternInfo#hashCode()
+method:android.icu.text.DateIntervalInfo$PatternInfo#toString()
+method:android.icu.text.DateIntervalInfo#DateIntervalInfo(ULocale)
+method:android.icu.text.DateIntervalInfo#DateIntervalInfo(Locale)
+method:android.icu.text.DateIntervalInfo#setIntervalPattern(String,int,String)
+method:android.icu.text.DateIntervalInfo#getIntervalPattern(String,int)
+method:android.icu.text.DateIntervalInfo#getFallbackIntervalPattern()
+method:android.icu.text.DateIntervalInfo#setFallbackIntervalPattern(String)
+method:android.icu.text.DateIntervalInfo#getDefaultOrder()
+method:android.icu.text.DateIntervalInfo#clone()
+method:android.icu.text.DateIntervalInfo#isFrozen()
+method:android.icu.text.DateIntervalInfo#freeze()
+method:android.icu.text.DateIntervalInfo#cloneAsThawed()
+method:android.icu.text.DateIntervalInfo#equals(Object)
+method:android.icu.text.DateIntervalInfo#hashCode()
+type:android.icu.text.UnicodeSetSpanner
+method:android.icu.text.UnicodeSetSpanner#UnicodeSetSpanner(UnicodeSet)
+method:android.icu.text.UnicodeSetSpanner#getUnicodeSet()
+method:android.icu.text.UnicodeSetSpanner#equals(Object)
+method:android.icu.text.UnicodeSetSpanner#hashCode()
+type:android.icu.text.UnicodeSetSpanner$CountMethod
+enumConstant:android.icu.text.UnicodeSetSpanner$CountMethod#WHOLE_SPAN
+enumConstant:android.icu.text.UnicodeSetSpanner$CountMethod#MIN_ELEMENTS
+method:android.icu.text.UnicodeSetSpanner#countIn(CharSequence)
+method:android.icu.text.UnicodeSetSpanner#countIn(CharSequence,CountMethod)
+method:android.icu.text.UnicodeSetSpanner#countIn(CharSequence,CountMethod,SpanCondition)
+method:android.icu.text.UnicodeSetSpanner#deleteFrom(CharSequence)
+method:android.icu.text.UnicodeSetSpanner#deleteFrom(CharSequence,SpanCondition)
+method:android.icu.text.UnicodeSetSpanner#replaceFrom(CharSequence,CharSequence)
+method:android.icu.text.UnicodeSetSpanner#replaceFrom(CharSequence,CharSequence,CountMethod)
+method:android.icu.text.UnicodeSetSpanner#replaceFrom(CharSequence,CharSequence,CountMethod,SpanCondition)
+type:android.icu.text.UnicodeSetSpanner$TrimOption
+enumConstant:android.icu.text.UnicodeSetSpanner$TrimOption#LEADING
+enumConstant:android.icu.text.UnicodeSetSpanner$TrimOption#BOTH
+enumConstant:android.icu.text.UnicodeSetSpanner$TrimOption#TRAILING
+method:android.icu.text.UnicodeSetSpanner#trim(CharSequence)
+method:android.icu.text.UnicodeSetSpanner#trim(CharSequence,TrimOption)
+method:android.icu.text.UnicodeSetSpanner#trim(CharSequence,TrimOption,SpanCondition)
+type:android.icu.text.SymbolTable
+field:android.icu.text.SymbolTable#SYMBOL_REF
+method:android.icu.text.SymbolTable#lookup(String)
+method:android.icu.text.SymbolTable#lookupMatcher(int)
+method:android.icu.text.SymbolTable#parseReference(String,ParsePosition,int)
+type:android.icu.text.Normalizer2
+type:android.icu.text.Normalizer2$Mode
+enumConstant:android.icu.text.Normalizer2$Mode#COMPOSE
+enumConstant:android.icu.text.Normalizer2$Mode#DECOMPOSE
+enumConstant:android.icu.text.Normalizer2$Mode#FCD
+enumConstant:android.icu.text.Normalizer2$Mode#COMPOSE_CONTIGUOUS
+method:android.icu.text.Normalizer2#getNFCInstance()
+method:android.icu.text.Normalizer2#getNFDInstance()
+method:android.icu.text.Normalizer2#getNFKCInstance()
+method:android.icu.text.Normalizer2#getNFKDInstance()
+method:android.icu.text.Normalizer2#getNFKCCasefoldInstance()
+method:android.icu.text.Normalizer2#getInstance(InputStream,String,Mode)
+method:android.icu.text.Normalizer2#normalize(CharSequence)
+method:android.icu.text.Normalizer2#normalize(CharSequence,StringBuilder)
+method:android.icu.text.Normalizer2#normalize(CharSequence,Appendable)
+method:android.icu.text.Normalizer2#normalizeSecondAndAppend(StringBuilder,CharSequence)
+method:android.icu.text.Normalizer2#append(StringBuilder,CharSequence)
+method:android.icu.text.Normalizer2#getDecomposition(int)
+method:android.icu.text.Normalizer2#getRawDecomposition(int)
+method:android.icu.text.Normalizer2#composePair(int,int)
+method:android.icu.text.Normalizer2#getCombiningClass(int)
+method:android.icu.text.Normalizer2#isNormalized(CharSequence)
+method:android.icu.text.Normalizer2#quickCheck(CharSequence)
+method:android.icu.text.Normalizer2#spanQuickCheckYes(CharSequence)
+method:android.icu.text.Normalizer2#hasBoundaryBefore(int)
+method:android.icu.text.Normalizer2#hasBoundaryAfter(int)
+method:android.icu.text.Normalizer2#isInert(int)
+type:android.icu.text.NumberFormat
+field:android.icu.text.NumberFormat#NUMBERSTYLE
+field:android.icu.text.NumberFormat#CURRENCYSTYLE
+field:android.icu.text.NumberFormat#PERCENTSTYLE
+field:android.icu.text.NumberFormat#SCIENTIFICSTYLE
+field:android.icu.text.NumberFormat#INTEGERSTYLE
+field:android.icu.text.NumberFormat#ISOCURRENCYSTYLE
+field:android.icu.text.NumberFormat#PLURALCURRENCYSTYLE
+field:android.icu.text.NumberFormat#ACCOUNTINGCURRENCYSTYLE
+field:android.icu.text.NumberFormat#CASHCURRENCYSTYLE
+field:android.icu.text.NumberFormat#STANDARDCURRENCYSTYLE
+field:android.icu.text.NumberFormat#INTEGER_FIELD
+field:android.icu.text.NumberFormat#FRACTION_FIELD
+method:android.icu.text.NumberFormat#format(Object,StringBuffer,FieldPosition)
+method:android.icu.text.NumberFormat#parseObject(String,ParsePosition)
+method:android.icu.text.NumberFormat#format(double)
+method:android.icu.text.NumberFormat#format(long)
+method:android.icu.text.NumberFormat#format(BigInteger)
+method:android.icu.text.NumberFormat#format(java.math.BigDecimal)
+method:android.icu.text.NumberFormat#format(android.icu.math.BigDecimal)
+method:android.icu.text.NumberFormat#format(CurrencyAmount)
+method:android.icu.text.NumberFormat#format(double,StringBuffer,FieldPosition)
+method:android.icu.text.NumberFormat#format(long,StringBuffer,FieldPosition)
+method:android.icu.text.NumberFormat#format(BigInteger,StringBuffer,FieldPosition)
+method:android.icu.text.NumberFormat#format(java.math.BigDecimal,StringBuffer,FieldPosition)
+method:android.icu.text.NumberFormat#format(android.icu.math.BigDecimal,StringBuffer,FieldPosition)
+method:android.icu.text.NumberFormat#format(CurrencyAmount,StringBuffer,FieldPosition)
+method:android.icu.text.NumberFormat#parse(String,ParsePosition)
+method:android.icu.text.NumberFormat#parse(String)
+method:android.icu.text.NumberFormat#parseCurrency(CharSequence,ParsePosition)
+method:android.icu.text.NumberFormat#isParseIntegerOnly()
+method:android.icu.text.NumberFormat#setParseIntegerOnly(boolean)
+method:android.icu.text.NumberFormat#setParseStrict(boolean)
+method:android.icu.text.NumberFormat#isParseStrict()
+method:android.icu.text.NumberFormat#setContext(DisplayContext)
+method:android.icu.text.NumberFormat#getContext(DisplayContext.Type)
+method:android.icu.text.NumberFormat#getInstance()
+method:android.icu.text.NumberFormat#getInstance(Locale)
+method:android.icu.text.NumberFormat#getInstance(ULocale)
+method:android.icu.text.NumberFormat#getInstance(int)
+method:android.icu.text.NumberFormat#getInstance(Locale,int)
+method:android.icu.text.NumberFormat#getNumberInstance()
+method:android.icu.text.NumberFormat#getNumberInstance(Locale)
+method:android.icu.text.NumberFormat#getNumberInstance(ULocale)
+method:android.icu.text.NumberFormat#getIntegerInstance()
+method:android.icu.text.NumberFormat#getIntegerInstance(Locale)
+method:android.icu.text.NumberFormat#getIntegerInstance(ULocale)
+method:android.icu.text.NumberFormat#getCurrencyInstance()
+method:android.icu.text.NumberFormat#getCurrencyInstance(Locale)
+method:android.icu.text.NumberFormat#getCurrencyInstance(ULocale)
+method:android.icu.text.NumberFormat#getPercentInstance()
+method:android.icu.text.NumberFormat#getPercentInstance(Locale)
+method:android.icu.text.NumberFormat#getPercentInstance(ULocale)
+method:android.icu.text.NumberFormat#getScientificInstance()
+method:android.icu.text.NumberFormat#getScientificInstance(Locale)
+method:android.icu.text.NumberFormat#getScientificInstance(ULocale)
+method:android.icu.text.NumberFormat#getAvailableLocales()
+method:android.icu.text.NumberFormat#hashCode()
+method:android.icu.text.NumberFormat#equals(Object)
+method:android.icu.text.NumberFormat#clone()
+method:android.icu.text.NumberFormat#isGroupingUsed()
+method:android.icu.text.NumberFormat#setGroupingUsed(boolean)
+method:android.icu.text.NumberFormat#getMaximumIntegerDigits()
+method:android.icu.text.NumberFormat#setMaximumIntegerDigits(int)
+method:android.icu.text.NumberFormat#getMinimumIntegerDigits()
+method:android.icu.text.NumberFormat#setMinimumIntegerDigits(int)
+method:android.icu.text.NumberFormat#getMaximumFractionDigits()
+method:android.icu.text.NumberFormat#setMaximumFractionDigits(int)
+method:android.icu.text.NumberFormat#getMinimumFractionDigits()
+method:android.icu.text.NumberFormat#setMinimumFractionDigits(int)
+method:android.icu.text.NumberFormat#setCurrency(Currency)
+method:android.icu.text.NumberFormat#getCurrency()
+method:android.icu.text.NumberFormat#getRoundingMode()
+method:android.icu.text.NumberFormat#setRoundingMode(int)
+method:android.icu.text.NumberFormat#getInstance(ULocale,int)
+method:android.icu.text.NumberFormat#getPattern(ULocale,int)
+method:android.icu.text.NumberFormat#NumberFormat()
+type:android.icu.text.NumberFormat$Field
+field:android.icu.text.NumberFormat$Field#SIGN
+field:android.icu.text.NumberFormat$Field#INTEGER
+field:android.icu.text.NumberFormat$Field#FRACTION
+field:android.icu.text.NumberFormat$Field#EXPONENT
+field:android.icu.text.NumberFormat$Field#EXPONENT_SIGN
+field:android.icu.text.NumberFormat$Field#EXPONENT_SYMBOL
+field:android.icu.text.NumberFormat$Field#DECIMAL_SEPARATOR
+field:android.icu.text.NumberFormat$Field#GROUPING_SEPARATOR
+field:android.icu.text.NumberFormat$Field#PERCENT
+field:android.icu.text.NumberFormat$Field#PERMILLE
+field:android.icu.text.NumberFormat$Field#CURRENCY
+field:android.icu.text.NumberFormat$Field#MEASURE_UNIT
+field:android.icu.text.NumberFormat$Field#COMPACT
+method:android.icu.text.NumberFormat$Field#Field(String)
+method:android.icu.text.NumberFormat$Field#readResolve()
+type:android.icu.text.UnicodeFilter
+method:android.icu.text.UnicodeFilter#contains(int)
+method:android.icu.text.UnicodeFilter#matches(Replaceable,int[],int,boolean)
+type:android.icu.text.UFormat
+method:android.icu.text.UFormat#UFormat()
+type:android.icu.text.CollationKey
+type:android.icu.text.CollationKey$BoundMode
+field:android.icu.text.CollationKey$BoundMode#LOWER
+field:android.icu.text.CollationKey$BoundMode#UPPER
+field:android.icu.text.CollationKey$BoundMode#UPPER_LONG
+method:android.icu.text.CollationKey#CollationKey(String,byte)
+method:android.icu.text.CollationKey#getSourceString()
+method:android.icu.text.CollationKey#toByteArray()
+method:android.icu.text.CollationKey#compareTo(CollationKey)
+method:android.icu.text.CollationKey#equals(Object)
+method:android.icu.text.CollationKey#equals(CollationKey)
+method:android.icu.text.CollationKey#hashCode()
+method:android.icu.text.CollationKey#getBound(int,int)
+method:android.icu.text.CollationKey#merge(CollationKey)
+type:android.icu.text.BidiClassifier
+method:android.icu.text.BidiClassifier#BidiClassifier(Object)
+method:android.icu.text.BidiClassifier#setContext(Object)
+method:android.icu.text.BidiClassifier#getContext()
+method:android.icu.text.BidiClassifier#classify(int)
+type:android.icu.text.PluralRules
+field:android.icu.text.PluralRules#KEYWORD_ZERO
+field:android.icu.text.PluralRules#KEYWORD_ONE
+field:android.icu.text.PluralRules#KEYWORD_TWO
+field:android.icu.text.PluralRules#KEYWORD_FEW
+field:android.icu.text.PluralRules#KEYWORD_MANY
+field:android.icu.text.PluralRules#KEYWORD_OTHER
+field:android.icu.text.PluralRules#NO_UNIQUE_VALUE
+type:android.icu.text.PluralRules$PluralType
+enumConstant:android.icu.text.PluralRules$PluralType#CARDINAL
+enumConstant:android.icu.text.PluralRules$PluralType#ORDINAL
+method:android.icu.text.PluralRules#parseDescription(String)
+method:android.icu.text.PluralRules#createRules(String)
+field:android.icu.text.PluralRules#DEFAULT
+method:android.icu.text.PluralRules#forLocale(ULocale)
+method:android.icu.text.PluralRules#forLocale(Locale)
+method:android.icu.text.PluralRules#forLocale(ULocale,PluralType)
+method:android.icu.text.PluralRules#forLocale(Locale,PluralType)
+method:android.icu.text.PluralRules#select(double)
+method:android.icu.text.PluralRules#select(FormattedNumber)
+method:android.icu.text.PluralRules#getKeywords()
+method:android.icu.text.PluralRules#getUniqueKeywordValue(String)
+method:android.icu.text.PluralRules#getAllKeywordValues(String)
+method:android.icu.text.PluralRules#getSamples(String)
+method:android.icu.text.PluralRules#toString()
+method:android.icu.text.PluralRules#equals(Object)
+method:android.icu.text.PluralRules#equals(PluralRules)
+type:android.icu.text.Edits
+method:android.icu.text.Edits#Edits()
+method:android.icu.text.Edits#reset()
+method:android.icu.text.Edits#addUnchanged(int)
+method:android.icu.text.Edits#addReplace(int,int)
+method:android.icu.text.Edits#lengthDelta()
+method:android.icu.text.Edits#hasChanges()
+method:android.icu.text.Edits#numberOfChanges()
+type:android.icu.text.Edits$Iterator
+method:android.icu.text.Edits$Iterator#next()
+method:android.icu.text.Edits$Iterator#findSourceIndex(int)
+method:android.icu.text.Edits$Iterator#findDestinationIndex(int)
+method:android.icu.text.Edits$Iterator#destinationIndexFromSourceIndex(int)
+method:android.icu.text.Edits$Iterator#sourceIndexFromDestinationIndex(int)
+method:android.icu.text.Edits$Iterator#hasChange()
+method:android.icu.text.Edits$Iterator#oldLength()
+method:android.icu.text.Edits$Iterator#newLength()
+method:android.icu.text.Edits$Iterator#sourceIndex()
+method:android.icu.text.Edits$Iterator#replacementIndex()
+method:android.icu.text.Edits$Iterator#destinationIndex()
+method:android.icu.text.Edits$Iterator#toString()
+method:android.icu.text.Edits#getCoarseChangesIterator()
+method:android.icu.text.Edits#getCoarseIterator()
+method:android.icu.text.Edits#getFineChangesIterator()
+method:android.icu.text.Edits#getFineIterator()
+method:android.icu.text.Edits#mergeAndAppend(Edits,Edits)
+type:android.icu.text.RelativeDateTimeFormatter
+type:android.icu.text.RelativeDateTimeFormatter$Style
+enumConstant:android.icu.text.RelativeDateTimeFormatter$Style#LONG
+enumConstant:android.icu.text.RelativeDateTimeFormatter$Style#SHORT
+enumConstant:android.icu.text.RelativeDateTimeFormatter$Style#NARROW
+type:android.icu.text.RelativeDateTimeFormatter$RelativeUnit
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeUnit#SECONDS
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeUnit#MINUTES
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeUnit#HOURS
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeUnit#DAYS
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeUnit#WEEKS
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeUnit#MONTHS
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeUnit#YEARS
+type:android.icu.text.RelativeDateTimeFormatter$AbsoluteUnit
+enumConstant:android.icu.text.RelativeDateTimeFormatter$AbsoluteUnit#SUNDAY
+enumConstant:android.icu.text.RelativeDateTimeFormatter$AbsoluteUnit#MONDAY
+enumConstant:android.icu.text.RelativeDateTimeFormatter$AbsoluteUnit#TUESDAY
+enumConstant:android.icu.text.RelativeDateTimeFormatter$AbsoluteUnit#WEDNESDAY
+enumConstant:android.icu.text.RelativeDateTimeFormatter$AbsoluteUnit#THURSDAY
+enumConstant:android.icu.text.RelativeDateTimeFormatter$AbsoluteUnit#FRIDAY
+enumConstant:android.icu.text.RelativeDateTimeFormatter$AbsoluteUnit#SATURDAY
+enumConstant:android.icu.text.RelativeDateTimeFormatter$AbsoluteUnit#DAY
+enumConstant:android.icu.text.RelativeDateTimeFormatter$AbsoluteUnit#WEEK
+enumConstant:android.icu.text.RelativeDateTimeFormatter$AbsoluteUnit#MONTH
+enumConstant:android.icu.text.RelativeDateTimeFormatter$AbsoluteUnit#YEAR
+enumConstant:android.icu.text.RelativeDateTimeFormatter$AbsoluteUnit#NOW
+enumConstant:android.icu.text.RelativeDateTimeFormatter$AbsoluteUnit#QUARTER
+type:android.icu.text.RelativeDateTimeFormatter$Direction
+enumConstant:android.icu.text.RelativeDateTimeFormatter$Direction#LAST_2
+enumConstant:android.icu.text.RelativeDateTimeFormatter$Direction#LAST
+enumConstant:android.icu.text.RelativeDateTimeFormatter$Direction#THIS
+enumConstant:android.icu.text.RelativeDateTimeFormatter$Direction#NEXT
+enumConstant:android.icu.text.RelativeDateTimeFormatter$Direction#NEXT_2
+enumConstant:android.icu.text.RelativeDateTimeFormatter$Direction#PLAIN
+type:android.icu.text.RelativeDateTimeFormatter$RelativeDateTimeUnit
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeDateTimeUnit#YEAR
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeDateTimeUnit#QUARTER
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeDateTimeUnit#MONTH
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeDateTimeUnit#WEEK
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeDateTimeUnit#DAY
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeDateTimeUnit#HOUR
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeDateTimeUnit#MINUTE
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeDateTimeUnit#SECOND
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeDateTimeUnit#SUNDAY
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeDateTimeUnit#MONDAY
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeDateTimeUnit#TUESDAY
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeDateTimeUnit#WEDNESDAY
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeDateTimeUnit#THURSDAY
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeDateTimeUnit#FRIDAY
+enumConstant:android.icu.text.RelativeDateTimeFormatter$RelativeDateTimeUnit#SATURDAY
+type:android.icu.text.RelativeDateTimeFormatter$FormattedRelativeDateTime
+method:android.icu.text.RelativeDateTimeFormatter$FormattedRelativeDateTime#toString()
+method:android.icu.text.RelativeDateTimeFormatter$FormattedRelativeDateTime#length()
+method:android.icu.text.RelativeDateTimeFormatter$FormattedRelativeDateTime#charAt(int)
+method:android.icu.text.RelativeDateTimeFormatter$FormattedRelativeDateTime#subSequence(int,int)
+method:android.icu.text.RelativeDateTimeFormatter$FormattedRelativeDateTime#appendTo(A)
+method:android.icu.text.RelativeDateTimeFormatter$FormattedRelativeDateTime#nextPosition(ConstrainedFieldPosition)
+method:android.icu.text.RelativeDateTimeFormatter$FormattedRelativeDateTime#toCharacterIterator()
+method:android.icu.text.RelativeDateTimeFormatter#getInstance()
+method:android.icu.text.RelativeDateTimeFormatter#getInstance(ULocale)
+method:android.icu.text.RelativeDateTimeFormatter#getInstance(Locale)
+method:android.icu.text.RelativeDateTimeFormatter#getInstance(ULocale,NumberFormat)
+method:android.icu.text.RelativeDateTimeFormatter#getInstance(ULocale,NumberFormat,Style,DisplayContext)
+method:android.icu.text.RelativeDateTimeFormatter#getInstance(Locale,NumberFormat)
+method:android.icu.text.RelativeDateTimeFormatter#format(double,Direction,RelativeUnit)
+method:android.icu.text.RelativeDateTimeFormatter#formatToValue(double,Direction,RelativeUnit)
+method:android.icu.text.RelativeDateTimeFormatter#formatNumeric(double,RelativeDateTimeUnit)
+method:android.icu.text.RelativeDateTimeFormatter#formatNumericToValue(double,RelativeDateTimeUnit)
+method:android.icu.text.RelativeDateTimeFormatter#format(Direction,AbsoluteUnit)
+method:android.icu.text.RelativeDateTimeFormatter#formatToValue(Direction,AbsoluteUnit)
+method:android.icu.text.RelativeDateTimeFormatter#format(double,RelativeDateTimeUnit)
+method:android.icu.text.RelativeDateTimeFormatter#formatToValue(double,RelativeDateTimeUnit)
+method:android.icu.text.RelativeDateTimeFormatter#combineDateAndTime(String,String)
+method:android.icu.text.RelativeDateTimeFormatter#getNumberFormat()
+method:android.icu.text.RelativeDateTimeFormatter#getCapitalizationContext()
+method:android.icu.text.RelativeDateTimeFormatter#getFormatStyle()
+type:android.icu.text.UnicodeSet
+field:android.icu.text.UnicodeSet#EMPTY
+field:android.icu.text.UnicodeSet#ALL_CODE_POINTS
+field:android.icu.text.UnicodeSet#MIN_VALUE
+field:android.icu.text.UnicodeSet#MAX_VALUE
+method:android.icu.text.UnicodeSet#UnicodeSet()
+method:android.icu.text.UnicodeSet#UnicodeSet(UnicodeSet)
+method:android.icu.text.UnicodeSet#UnicodeSet(int,int)
+method:android.icu.text.UnicodeSet#UnicodeSet(int...)
+method:android.icu.text.UnicodeSet#UnicodeSet(String)
+method:android.icu.text.UnicodeSet#UnicodeSet(String,boolean)
+method:android.icu.text.UnicodeSet#UnicodeSet(String,int)
+method:android.icu.text.UnicodeSet#UnicodeSet(String,ParsePosition,SymbolTable)
+method:android.icu.text.UnicodeSet#UnicodeSet(String,ParsePosition,SymbolTable,int)
+method:android.icu.text.UnicodeSet#clone()
+method:android.icu.text.UnicodeSet#set(int,int)
+method:android.icu.text.UnicodeSet#set(UnicodeSet)
+method:android.icu.text.UnicodeSet#applyPattern(String)
+method:android.icu.text.UnicodeSet#applyPattern(String,boolean)
+method:android.icu.text.UnicodeSet#applyPattern(String,int)
+method:android.icu.text.UnicodeSet#toPattern(boolean)
+method:android.icu.text.UnicodeSet#_generatePattern(StringBuffer,boolean)
+method:android.icu.text.UnicodeSet#_generatePattern(StringBuffer,boolean,boolean)
+method:android.icu.text.UnicodeSet#size()
+method:android.icu.text.UnicodeSet#isEmpty()
+method:android.icu.text.UnicodeSet#matchesIndexValue(int)
+method:android.icu.text.UnicodeSet#matches(Replaceable,int[],int,boolean)
+method:android.icu.text.UnicodeSet#addMatchSetTo(UnicodeSet)
+method:android.icu.text.UnicodeSet#indexOf(int)
+method:android.icu.text.UnicodeSet#charAt(int)
+method:android.icu.text.UnicodeSet#add(int,int)
+method:android.icu.text.UnicodeSet#addAll(int,int)
+method:android.icu.text.UnicodeSet#add(int)
+method:android.icu.text.UnicodeSet#add(CharSequence)
+method:android.icu.text.UnicodeSet#addAll(CharSequence)
+method:android.icu.text.UnicodeSet#retainAll(CharSequence)
+method:android.icu.text.UnicodeSet#complementAll(CharSequence)
+method:android.icu.text.UnicodeSet#removeAll(CharSequence)
+method:android.icu.text.UnicodeSet#removeAllStrings()
+method:android.icu.text.UnicodeSet#from(CharSequence)
+method:android.icu.text.UnicodeSet#fromAll(CharSequence)
+method:android.icu.text.UnicodeSet#retain(int,int)
+method:android.icu.text.UnicodeSet#retain(int)
+method:android.icu.text.UnicodeSet#retain(CharSequence)
+method:android.icu.text.UnicodeSet#remove(int,int)
+method:android.icu.text.UnicodeSet#remove(int)
+method:android.icu.text.UnicodeSet#remove(CharSequence)
+method:android.icu.text.UnicodeSet#complement(int,int)
+method:android.icu.text.UnicodeSet#complement(int)
+method:android.icu.text.UnicodeSet#complement()
+method:android.icu.text.UnicodeSet#complement(CharSequence)
+method:android.icu.text.UnicodeSet#contains(int)
+method:android.icu.text.UnicodeSet#contains(int,int)
+method:android.icu.text.UnicodeSet#contains(CharSequence)
+method:android.icu.text.UnicodeSet#containsAll(UnicodeSet)
+method:android.icu.text.UnicodeSet#containsAll(String)
+method:android.icu.text.UnicodeSet#containsNone(int,int)
+method:android.icu.text.UnicodeSet#containsNone(UnicodeSet)
+method:android.icu.text.UnicodeSet#containsNone(CharSequence)
+method:android.icu.text.UnicodeSet#containsSome(int,int)
+method:android.icu.text.UnicodeSet#containsSome(UnicodeSet)
+method:android.icu.text.UnicodeSet#containsSome(CharSequence)
+method:android.icu.text.UnicodeSet#addAll(UnicodeSet)
+method:android.icu.text.UnicodeSet#retainAll(UnicodeSet)
+method:android.icu.text.UnicodeSet#removeAll(UnicodeSet)
+method:android.icu.text.UnicodeSet#complementAll(UnicodeSet)
+method:android.icu.text.UnicodeSet#clear()
+method:android.icu.text.UnicodeSet#getRangeCount()
+method:android.icu.text.UnicodeSet#getRangeStart(int)
+method:android.icu.text.UnicodeSet#getRangeEnd(int)
+method:android.icu.text.UnicodeSet#compact()
+method:android.icu.text.UnicodeSet#equals(Object)
+method:android.icu.text.UnicodeSet#hashCode()
+method:android.icu.text.UnicodeSet#toString()
+method:android.icu.text.UnicodeSet#addAllTo(T)
+method:android.icu.text.UnicodeSet#add(Iterable<?>)
+method:android.icu.text.UnicodeSet#addAll(Iterable<?>)
+method:android.icu.text.UnicodeSet#applyIntPropertyValue(int,int)
+method:android.icu.text.UnicodeSet#applyPropertyAlias(String,String)
+method:android.icu.text.UnicodeSet#applyPropertyAlias(String,String,SymbolTable)
+field:android.icu.text.UnicodeSet#IGNORE_SPACE
+field:android.icu.text.UnicodeSet#CASE
+field:android.icu.text.UnicodeSet#CASE_INSENSITIVE
+field:android.icu.text.UnicodeSet#ADD_CASE_MAPPINGS
+method:android.icu.text.UnicodeSet#closeOver(int)
+method:android.icu.text.UnicodeSet#isFrozen()
+method:android.icu.text.UnicodeSet#freeze()
+method:android.icu.text.UnicodeSet#span(CharSequence,SpanCondition)
+method:android.icu.text.UnicodeSet#span(CharSequence,int,SpanCondition)
+method:android.icu.text.UnicodeSet#spanBack(CharSequence,SpanCondition)
+method:android.icu.text.UnicodeSet#spanBack(CharSequence,int,SpanCondition)
+method:android.icu.text.UnicodeSet#cloneAsThawed()
+type:android.icu.text.UnicodeSet$EntryRange
+field:android.icu.text.UnicodeSet$EntryRange#codepoint
+field:android.icu.text.UnicodeSet$EntryRange#codepointEnd
+method:android.icu.text.UnicodeSet$EntryRange#toString()
+method:android.icu.text.UnicodeSet#ranges()
+method:android.icu.text.UnicodeSet#iterator()
+method:android.icu.text.UnicodeSet#containsAll(Iterable<T>)
+method:android.icu.text.UnicodeSet#containsNone(Iterable<T>)
+method:android.icu.text.UnicodeSet#containsSome(Iterable<T>)
+method:android.icu.text.UnicodeSet#addAll(T...)
+method:android.icu.text.UnicodeSet#removeAll(Iterable<T>)
+method:android.icu.text.UnicodeSet#retainAll(Iterable<T>)
+type:android.icu.text.UnicodeSet$ComparisonStyle
+enumConstant:android.icu.text.UnicodeSet$ComparisonStyle#SHORTER_FIRST
+enumConstant:android.icu.text.UnicodeSet$ComparisonStyle#LEXICOGRAPHIC
+enumConstant:android.icu.text.UnicodeSet$ComparisonStyle#LONGER_FIRST
+method:android.icu.text.UnicodeSet#compareTo(UnicodeSet)
+method:android.icu.text.UnicodeSet#compareTo(UnicodeSet,ComparisonStyle)
+method:android.icu.text.UnicodeSet#compareTo(Iterable<String>)
+method:android.icu.text.UnicodeSet#strings()
+type:android.icu.text.UnicodeSet$SpanCondition
+enumConstant:android.icu.text.UnicodeSet$SpanCondition#NOT_CONTAINED
+enumConstant:android.icu.text.UnicodeSet$SpanCondition#CONTAINED
+enumConstant:android.icu.text.UnicodeSet$SpanCondition#SIMPLE
+enumConstant:android.icu.text.UnicodeSet$SpanCondition#CONDITION_COUNT
+type:android.icu.text.MessagePattern
+type:android.icu.text.MessagePattern$ApostropheMode
+enumConstant:android.icu.text.MessagePattern$ApostropheMode#DOUBLE_OPTIONAL
+enumConstant:android.icu.text.MessagePattern$ApostropheMode#DOUBLE_REQUIRED
+method:android.icu.text.MessagePattern#MessagePattern()
+method:android.icu.text.MessagePattern#MessagePattern(ApostropheMode)
+method:android.icu.text.MessagePattern#MessagePattern(String)
+method:android.icu.text.MessagePattern#parse(String)
+method:android.icu.text.MessagePattern#parseChoiceStyle(String)
+method:android.icu.text.MessagePattern#parsePluralStyle(String)
+method:android.icu.text.MessagePattern#parseSelectStyle(String)
+method:android.icu.text.MessagePattern#clear()
+method:android.icu.text.MessagePattern#clearPatternAndSetApostropheMode(ApostropheMode)
+method:android.icu.text.MessagePattern#equals(Object)
+method:android.icu.text.MessagePattern#hashCode()
+method:android.icu.text.MessagePattern#getApostropheMode()
+method:android.icu.text.MessagePattern#getPatternString()
+method:android.icu.text.MessagePattern#hasNamedArguments()
+method:android.icu.text.MessagePattern#hasNumberedArguments()
+method:android.icu.text.MessagePattern#toString()
+method:android.icu.text.MessagePattern#validateArgumentName(String)
+field:android.icu.text.MessagePattern#ARG_NAME_NOT_NUMBER
+field:android.icu.text.MessagePattern#ARG_NAME_NOT_VALID
+method:android.icu.text.MessagePattern#autoQuoteApostropheDeep()
+method:android.icu.text.MessagePattern#countParts()
+method:android.icu.text.MessagePattern#getPart(int)
+method:android.icu.text.MessagePattern#getPartType(int)
+method:android.icu.text.MessagePattern#getPatternIndex(int)
+method:android.icu.text.MessagePattern#getSubstring(Part)
+method:android.icu.text.MessagePattern#partSubstringMatches(Part,String)
+method:android.icu.text.MessagePattern#getNumericValue(Part)
+field:android.icu.text.MessagePattern#NO_NUMERIC_VALUE
+method:android.icu.text.MessagePattern#getPluralOffset(int)
+method:android.icu.text.MessagePattern#getLimitPartIndex(int)
+type:android.icu.text.MessagePattern$Part
+method:android.icu.text.MessagePattern$Part#getType()
+method:android.icu.text.MessagePattern$Part#getIndex()
+method:android.icu.text.MessagePattern$Part#getLength()
+method:android.icu.text.MessagePattern$Part#getLimit()
+method:android.icu.text.MessagePattern$Part#getValue()
+method:android.icu.text.MessagePattern$Part#getArgType()
+type:android.icu.text.MessagePattern$Part$Type
+enumConstant:android.icu.text.MessagePattern$Part$Type#MSG_START
+enumConstant:android.icu.text.MessagePattern$Part$Type#MSG_LIMIT
+enumConstant:android.icu.text.MessagePattern$Part$Type#SKIP_SYNTAX
+enumConstant:android.icu.text.MessagePattern$Part$Type#INSERT_CHAR
+enumConstant:android.icu.text.MessagePattern$Part$Type#REPLACE_NUMBER
+enumConstant:android.icu.text.MessagePattern$Part$Type#ARG_START
+enumConstant:android.icu.text.MessagePattern$Part$Type#ARG_LIMIT
+enumConstant:android.icu.text.MessagePattern$Part$Type#ARG_NUMBER
+enumConstant:android.icu.text.MessagePattern$Part$Type#ARG_NAME
+enumConstant:android.icu.text.MessagePattern$Part$Type#ARG_TYPE
+enumConstant:android.icu.text.MessagePattern$Part$Type#ARG_STYLE
+enumConstant:android.icu.text.MessagePattern$Part$Type#ARG_SELECTOR
+enumConstant:android.icu.text.MessagePattern$Part$Type#ARG_INT
+enumConstant:android.icu.text.MessagePattern$Part$Type#ARG_DOUBLE
+method:android.icu.text.MessagePattern$Part$Type#hasNumericValue()
+method:android.icu.text.MessagePattern$Part#toString()
+method:android.icu.text.MessagePattern$Part#equals(Object)
+method:android.icu.text.MessagePattern$Part#hashCode()
+type:android.icu.text.MessagePattern$ArgType
+enumConstant:android.icu.text.MessagePattern$ArgType#NONE
+enumConstant:android.icu.text.MessagePattern$ArgType#SIMPLE
+enumConstant:android.icu.text.MessagePattern$ArgType#CHOICE
+enumConstant:android.icu.text.MessagePattern$ArgType#PLURAL
+enumConstant:android.icu.text.MessagePattern$ArgType#SELECT
+enumConstant:android.icu.text.MessagePattern$ArgType#SELECTORDINAL
+method:android.icu.text.MessagePattern$ArgType#hasPluralStyle()
+method:android.icu.text.MessagePattern#clone()
+method:android.icu.text.MessagePattern#cloneAsThawed()
+method:android.icu.text.MessagePattern#freeze()
+method:android.icu.text.MessagePattern#isFrozen()
+type:android.icu.text.SimpleDateFormat
+method:android.icu.text.SimpleDateFormat#SimpleDateFormat()
+method:android.icu.text.SimpleDateFormat#SimpleDateFormat(String)
+method:android.icu.text.SimpleDateFormat#SimpleDateFormat(String,Locale)
+method:android.icu.text.SimpleDateFormat#SimpleDateFormat(String,ULocale)
+method:android.icu.text.SimpleDateFormat#SimpleDateFormat(String,String,ULocale)
+method:android.icu.text.SimpleDateFormat#SimpleDateFormat(String,DateFormatSymbols)
+method:android.icu.text.SimpleDateFormat#set2DigitYearStart(Date)
+method:android.icu.text.SimpleDateFormat#get2DigitYearStart()
+method:android.icu.text.SimpleDateFormat#setContext(DisplayContext)
+method:android.icu.text.SimpleDateFormat#format(Calendar,StringBuffer,FieldPosition)
+method:android.icu.text.SimpleDateFormat#patternCharToDateFormatField(char)
+method:android.icu.text.SimpleDateFormat#subFormat(char,int,int,FieldPosition,DateFormatSymbols,Calendar)
+method:android.icu.text.SimpleDateFormat#setNumberFormat(NumberFormat)
+method:android.icu.text.SimpleDateFormat#zeroPaddingNumber(long,int,int)
+method:android.icu.text.SimpleDateFormat#parse(String,Calendar,ParsePosition)
+method:android.icu.text.SimpleDateFormat#matchString(String,int,int,String[],Calendar)
+method:android.icu.text.SimpleDateFormat#matchQuarterString(String,int,int,String[],Calendar)
+method:android.icu.text.SimpleDateFormat#subParse(String,int,char,int,boolean,boolean,boolean[],Calendar)
+method:android.icu.text.SimpleDateFormat#toPattern()
+method:android.icu.text.SimpleDateFormat#toLocalizedPattern()
+method:android.icu.text.SimpleDateFormat#applyPattern(String)
+method:android.icu.text.SimpleDateFormat#applyLocalizedPattern(String)
+method:android.icu.text.SimpleDateFormat#getDateFormatSymbols()
+method:android.icu.text.SimpleDateFormat#setDateFormatSymbols(DateFormatSymbols)
+method:android.icu.text.SimpleDateFormat#getSymbols()
+method:android.icu.text.SimpleDateFormat#getTimeZoneFormat()
+method:android.icu.text.SimpleDateFormat#setTimeZoneFormat(TimeZoneFormat)
+method:android.icu.text.SimpleDateFormat#clone()
+method:android.icu.text.SimpleDateFormat#hashCode()
+method:android.icu.text.SimpleDateFormat#equals(Object)
+method:android.icu.text.SimpleDateFormat#formatToCharacterIterator(Object)
+method:android.icu.text.SimpleDateFormat#setNumberFormat(String,NumberFormat)
+method:android.icu.text.SimpleDateFormat#getNumberFormat(char)
+type:android.icu.text.Replaceable
+method:android.icu.text.Replaceable#length()
+method:android.icu.text.Replaceable#charAt(int)
+method:android.icu.text.Replaceable#char32At(int)
+method:android.icu.text.Replaceable#getChars(int,int,char,int)
+method:android.icu.text.Replaceable#replace(int,int,String)
+method:android.icu.text.Replaceable#replace(int,int,char[],int,int)
+method:android.icu.text.Replaceable#copy(int,int,int)
+method:android.icu.text.Replaceable#hasMetaData()
+type:android.icu.text.ScientificNumberFormatter
+method:android.icu.text.ScientificNumberFormatter#getSuperscriptInstance(ULocale)
+method:android.icu.text.ScientificNumberFormatter#getSuperscriptInstance(DecimalFormat)
+method:android.icu.text.ScientificNumberFormatter#getMarkupInstance(ULocale,String,String)
+method:android.icu.text.ScientificNumberFormatter#getMarkupInstance(DecimalFormat,String,String)
+method:android.icu.text.ScientificNumberFormatter#format(Object)
+type:android.icu.text.RuleBasedCollator
+method:android.icu.text.RuleBasedCollator#RuleBasedCollator(String)
+method:android.icu.text.RuleBasedCollator#clone()
+method:android.icu.text.RuleBasedCollator#getCollationElementIterator(String)
+method:android.icu.text.RuleBasedCollator#getCollationElementIterator(CharacterIterator)
+method:android.icu.text.RuleBasedCollator#getCollationElementIterator(UCharacterIterator)
+method:android.icu.text.RuleBasedCollator#isFrozen()
+method:android.icu.text.RuleBasedCollator#freeze()
+method:android.icu.text.RuleBasedCollator#cloneAsThawed()
+method:android.icu.text.RuleBasedCollator#setUpperCaseFirst(boolean)
+method:android.icu.text.RuleBasedCollator#setLowerCaseFirst(boolean)
+method:android.icu.text.RuleBasedCollator#setCaseFirstDefault()
+method:android.icu.text.RuleBasedCollator#setAlternateHandlingDefault()
+method:android.icu.text.RuleBasedCollator#setCaseLevelDefault()
+method:android.icu.text.RuleBasedCollator#setDecompositionDefault()
+method:android.icu.text.RuleBasedCollator#setFrenchCollationDefault()
+method:android.icu.text.RuleBasedCollator#setStrengthDefault()
+method:android.icu.text.RuleBasedCollator#setNumericCollationDefault()
+method:android.icu.text.RuleBasedCollator#setFrenchCollation(boolean)
+method:android.icu.text.RuleBasedCollator#setAlternateHandlingShifted(boolean)
+method:android.icu.text.RuleBasedCollator#setCaseLevel(boolean)
+method:android.icu.text.RuleBasedCollator#setDecomposition(int)
+method:android.icu.text.RuleBasedCollator#setStrength(int)
+method:android.icu.text.RuleBasedCollator#setMaxVariable(int)
+method:android.icu.text.RuleBasedCollator#getMaxVariable()
+method:android.icu.text.RuleBasedCollator#setNumericCollation(boolean)
+method:android.icu.text.RuleBasedCollator#setReorderCodes(int...)
+method:android.icu.text.RuleBasedCollator#getRules()
+method:android.icu.text.RuleBasedCollator#getRules(boolean)
+method:android.icu.text.RuleBasedCollator#getTailoredSet()
+method:android.icu.text.RuleBasedCollator#getContractionsAndExpansions(UnicodeSet,UnicodeSet,boolean)
+method:android.icu.text.RuleBasedCollator#getCollationKey(String)
+method:android.icu.text.RuleBasedCollator#getStrength()
+method:android.icu.text.RuleBasedCollator#getDecomposition()
+method:android.icu.text.RuleBasedCollator#isUpperCaseFirst()
+method:android.icu.text.RuleBasedCollator#isLowerCaseFirst()
+method:android.icu.text.RuleBasedCollator#isAlternateHandlingShifted()
+method:android.icu.text.RuleBasedCollator#isCaseLevel()
+method:android.icu.text.RuleBasedCollator#isFrenchCollation()
+method:android.icu.text.RuleBasedCollator#getVariableTop()
+method:android.icu.text.RuleBasedCollator#getNumericCollation()
+method:android.icu.text.RuleBasedCollator#getReorderCodes()
+method:android.icu.text.RuleBasedCollator#equals(Object)
+method:android.icu.text.RuleBasedCollator#hashCode()
+method:android.icu.text.RuleBasedCollator#compare(String,String)
+method:android.icu.text.RuleBasedCollator#getVersion()
+method:android.icu.text.RuleBasedCollator#getUCAVersion()
+type:android.icu.text.TimeZoneFormat
+type:android.icu.text.TimeZoneFormat$Style
+enumConstant:android.icu.text.TimeZoneFormat$Style#GENERIC_LOCATION
+enumConstant:android.icu.text.TimeZoneFormat$Style#GENERIC_LONG
+enumConstant:android.icu.text.TimeZoneFormat$Style#GENERIC_SHORT
+enumConstant:android.icu.text.TimeZoneFormat$Style#SPECIFIC_LONG
+enumConstant:android.icu.text.TimeZoneFormat$Style#SPECIFIC_SHORT
+enumConstant:android.icu.text.TimeZoneFormat$Style#LOCALIZED_GMT
+enumConstant:android.icu.text.TimeZoneFormat$Style#LOCALIZED_GMT_SHORT
+enumConstant:android.icu.text.TimeZoneFormat$Style#ISO_BASIC_SHORT
+enumConstant:android.icu.text.TimeZoneFormat$Style#ISO_BASIC_LOCAL_SHORT
+enumConstant:android.icu.text.TimeZoneFormat$Style#ISO_BASIC_FIXED
+enumConstant:android.icu.text.TimeZoneFormat$Style#ISO_BASIC_LOCAL_FIXED
+enumConstant:android.icu.text.TimeZoneFormat$Style#ISO_BASIC_FULL
+enumConstant:android.icu.text.TimeZoneFormat$Style#ISO_BASIC_LOCAL_FULL
+enumConstant:android.icu.text.TimeZoneFormat$Style#ISO_EXTENDED_FIXED
+enumConstant:android.icu.text.TimeZoneFormat$Style#ISO_EXTENDED_LOCAL_FIXED
+enumConstant:android.icu.text.TimeZoneFormat$Style#ISO_EXTENDED_FULL
+enumConstant:android.icu.text.TimeZoneFormat$Style#ISO_EXTENDED_LOCAL_FULL
+enumConstant:android.icu.text.TimeZoneFormat$Style#ZONE_ID
+enumConstant:android.icu.text.TimeZoneFormat$Style#ZONE_ID_SHORT
+enumConstant:android.icu.text.TimeZoneFormat$Style#EXEMPLAR_LOCATION
+type:android.icu.text.TimeZoneFormat$GMTOffsetPatternType
+enumConstant:android.icu.text.TimeZoneFormat$GMTOffsetPatternType#POSITIVE_HM
+enumConstant:android.icu.text.TimeZoneFormat$GMTOffsetPatternType#POSITIVE_HMS
+enumConstant:android.icu.text.TimeZoneFormat$GMTOffsetPatternType#NEGATIVE_HM
+enumConstant:android.icu.text.TimeZoneFormat$GMTOffsetPatternType#NEGATIVE_HMS
+enumConstant:android.icu.text.TimeZoneFormat$GMTOffsetPatternType#POSITIVE_H
+enumConstant:android.icu.text.TimeZoneFormat$GMTOffsetPatternType#NEGATIVE_H
+type:android.icu.text.TimeZoneFormat$TimeType
+enumConstant:android.icu.text.TimeZoneFormat$TimeType#UNKNOWN
+enumConstant:android.icu.text.TimeZoneFormat$TimeType#STANDARD
+enumConstant:android.icu.text.TimeZoneFormat$TimeType#DAYLIGHT
+type:android.icu.text.TimeZoneFormat$ParseOption
+enumConstant:android.icu.text.TimeZoneFormat$ParseOption#ALL_STYLES
+enumConstant:android.icu.text.TimeZoneFormat$ParseOption#TZ_DATABASE_ABBREVIATIONS
+method:android.icu.text.TimeZoneFormat#TimeZoneFormat(ULocale)
+method:android.icu.text.TimeZoneFormat#getInstance(ULocale)
+method:android.icu.text.TimeZoneFormat#getInstance(Locale)
+method:android.icu.text.TimeZoneFormat#getTimeZoneNames()
+method:android.icu.text.TimeZoneFormat#setTimeZoneNames(TimeZoneNames)
+method:android.icu.text.TimeZoneFormat#getGMTPattern()
+method:android.icu.text.TimeZoneFormat#setGMTPattern(String)
+method:android.icu.text.TimeZoneFormat#getGMTOffsetPattern(GMTOffsetPatternType)
+method:android.icu.text.TimeZoneFormat#setGMTOffsetPattern(GMTOffsetPatternType,String)
+method:android.icu.text.TimeZoneFormat#getGMTOffsetDigits()
+method:android.icu.text.TimeZoneFormat#setGMTOffsetDigits(String)
+method:android.icu.text.TimeZoneFormat#getGMTZeroFormat()
+method:android.icu.text.TimeZoneFormat#setGMTZeroFormat(String)
+method:android.icu.text.TimeZoneFormat#setDefaultParseOptions(EnumSet<ParseOption>)
+method:android.icu.text.TimeZoneFormat#getDefaultParseOptions()
+method:android.icu.text.TimeZoneFormat#formatOffsetISO8601Basic(int,boolean,boolean,boolean)
+method:android.icu.text.TimeZoneFormat#formatOffsetISO8601Extended(int,boolean,boolean,boolean)
+method:android.icu.text.TimeZoneFormat#formatOffsetLocalizedGMT(int)
+method:android.icu.text.TimeZoneFormat#formatOffsetShortLocalizedGMT(int)
+method:android.icu.text.TimeZoneFormat#format(Style,TimeZone,long)
+method:android.icu.text.TimeZoneFormat#format(Style,TimeZone,long,Output<TimeType>)
+method:android.icu.text.TimeZoneFormat#parseOffsetISO8601(String,ParsePosition)
+method:android.icu.text.TimeZoneFormat#parseOffsetLocalizedGMT(String,ParsePosition)
+method:android.icu.text.TimeZoneFormat#parseOffsetShortLocalizedGMT(String,ParsePosition)
+method:android.icu.text.TimeZoneFormat#parse(Style,String,ParsePosition,EnumSet<ParseOption>,Output<TimeType>)
+method:android.icu.text.TimeZoneFormat#parse(Style,String,ParsePosition,Output<TimeType>)
+method:android.icu.text.TimeZoneFormat#parse(String,ParsePosition)
+method:android.icu.text.TimeZoneFormat#parse(String)
+method:android.icu.text.TimeZoneFormat#format(Object,StringBuffer,FieldPosition)
+method:android.icu.text.TimeZoneFormat#formatToCharacterIterator(Object)
+method:android.icu.text.TimeZoneFormat#parseObject(String,ParsePosition)
+method:android.icu.text.TimeZoneFormat#isFrozen()
+method:android.icu.text.TimeZoneFormat#freeze()
+method:android.icu.text.TimeZoneFormat#cloneAsThawed()
+type:android.icu.text.CompactDecimalFormat
+type:android.icu.text.CompactDecimalFormat$CompactStyle
+enumConstant:android.icu.text.CompactDecimalFormat$CompactStyle#SHORT
+enumConstant:android.icu.text.CompactDecimalFormat$CompactStyle#LONG
+method:android.icu.text.CompactDecimalFormat#getInstance(ULocale,CompactStyle)
+method:android.icu.text.CompactDecimalFormat#getInstance(Locale,CompactStyle)
+method:android.icu.text.CompactDecimalFormat#parse(String,ParsePosition)
+method:android.icu.text.CompactDecimalFormat#parseCurrency(CharSequence,ParsePosition)
+type:android.icu.text.DateFormatSymbols
+field:android.icu.text.DateFormatSymbols#FORMAT
+field:android.icu.text.DateFormatSymbols#STANDALONE
+field:android.icu.text.DateFormatSymbols#ABBREVIATED
+field:android.icu.text.DateFormatSymbols#WIDE
+field:android.icu.text.DateFormatSymbols#NARROW
+field:android.icu.text.DateFormatSymbols#SHORT
+method:android.icu.text.DateFormatSymbols#DateFormatSymbols()
+method:android.icu.text.DateFormatSymbols#DateFormatSymbols(Locale)
+method:android.icu.text.DateFormatSymbols#DateFormatSymbols(ULocale)
+method:android.icu.text.DateFormatSymbols#getInstance()
+method:android.icu.text.DateFormatSymbols#getInstance(Locale)
+method:android.icu.text.DateFormatSymbols#getInstance(ULocale)
+method:android.icu.text.DateFormatSymbols#getAvailableLocales()
+method:android.icu.text.DateFormatSymbols#getEras()
+method:android.icu.text.DateFormatSymbols#setEras(String[])
+method:android.icu.text.DateFormatSymbols#getEraNames()
+method:android.icu.text.DateFormatSymbols#setEraNames(String[])
+method:android.icu.text.DateFormatSymbols#getNarrowEras()
+method:android.icu.text.DateFormatSymbols#setNarrowEras(String[])
+method:android.icu.text.DateFormatSymbols#getMonths()
+method:android.icu.text.DateFormatSymbols#getMonths(int,int)
+method:android.icu.text.DateFormatSymbols#setMonths(String[])
+method:android.icu.text.DateFormatSymbols#setMonths(String[],int,int)
+method:android.icu.text.DateFormatSymbols#getShortMonths()
+method:android.icu.text.DateFormatSymbols#setShortMonths(String[])
+method:android.icu.text.DateFormatSymbols#getWeekdays()
+method:android.icu.text.DateFormatSymbols#getWeekdays(int,int)
+method:android.icu.text.DateFormatSymbols#setWeekdays(String[],int,int)
+method:android.icu.text.DateFormatSymbols#setWeekdays(String[])
+method:android.icu.text.DateFormatSymbols#getShortWeekdays()
+method:android.icu.text.DateFormatSymbols#setShortWeekdays(String[])
+method:android.icu.text.DateFormatSymbols#getQuarters(int,int)
+method:android.icu.text.DateFormatSymbols#setQuarters(String[],int,int)
+method:android.icu.text.DateFormatSymbols#getYearNames(int,int)
+method:android.icu.text.DateFormatSymbols#setYearNames(String[],int,int)
+method:android.icu.text.DateFormatSymbols#getZodiacNames(int,int)
+method:android.icu.text.DateFormatSymbols#setZodiacNames(String[],int,int)
+method:android.icu.text.DateFormatSymbols#getAmPmStrings()
+method:android.icu.text.DateFormatSymbols#setAmPmStrings(String[])
+method:android.icu.text.DateFormatSymbols#getZoneStrings()
+method:android.icu.text.DateFormatSymbols#setZoneStrings(String[][])
+method:android.icu.text.DateFormatSymbols#getLocalPatternChars()
+method:android.icu.text.DateFormatSymbols#setLocalPatternChars(String)
+method:android.icu.text.DateFormatSymbols#clone()
+method:android.icu.text.DateFormatSymbols#hashCode()
+method:android.icu.text.DateFormatSymbols#equals(Object)
+method:android.icu.text.DateFormatSymbols#initializeData(ULocale,String)
+method:android.icu.text.DateFormatSymbols#DateFormatSymbols(Calendar,Locale)
+method:android.icu.text.DateFormatSymbols#DateFormatSymbols(Calendar,ULocale)
+method:android.icu.text.DateFormatSymbols#DateFormatSymbols(Class<? extends Calendar>,Locale)
+method:android.icu.text.DateFormatSymbols#DateFormatSymbols(Class<? extends Calendar>,ULocale)
+method:android.icu.text.DateFormatSymbols#DateFormatSymbols(ResourceBundle,Locale)
+method:android.icu.text.DateFormatSymbols#DateFormatSymbols(ResourceBundle,ULocale)
+type:android.icu.text.DecimalFormat
+method:android.icu.text.DecimalFormat#DecimalFormat()
+method:android.icu.text.DecimalFormat#DecimalFormat(String)
+method:android.icu.text.DecimalFormat#DecimalFormat(String,DecimalFormatSymbols)
+method:android.icu.text.DecimalFormat#DecimalFormat(String,DecimalFormatSymbols,CurrencyPluralInfo,int)
+method:android.icu.text.DecimalFormat#applyPattern(String)
+method:android.icu.text.DecimalFormat#applyLocalizedPattern(String)
+method:android.icu.text.DecimalFormat#clone()
+method:android.icu.text.DecimalFormat#format(double,StringBuffer,FieldPosition)
+method:android.icu.text.DecimalFormat#format(long,StringBuffer,FieldPosition)
+method:android.icu.text.DecimalFormat#format(BigInteger,StringBuffer,FieldPosition)
+method:android.icu.text.DecimalFormat#format(java.math.BigDecimal,StringBuffer,FieldPosition)
+method:android.icu.text.DecimalFormat#format(BigDecimal,StringBuffer,FieldPosition)
+method:android.icu.text.DecimalFormat#formatToCharacterIterator(Object)
+method:android.icu.text.DecimalFormat#format(CurrencyAmount,StringBuffer,FieldPosition)
+method:android.icu.text.DecimalFormat#parse(String,ParsePosition)
+method:android.icu.text.DecimalFormat#parseCurrency(CharSequence,ParsePosition)
+method:android.icu.text.DecimalFormat#getDecimalFormatSymbols()
+method:android.icu.text.DecimalFormat#setDecimalFormatSymbols(DecimalFormatSymbols)
+method:android.icu.text.DecimalFormat#getPositivePrefix()
+method:android.icu.text.DecimalFormat#setPositivePrefix(String)
+method:android.icu.text.DecimalFormat#getNegativePrefix()
+method:android.icu.text.DecimalFormat#setNegativePrefix(String)
+method:android.icu.text.DecimalFormat#getPositiveSuffix()
+method:android.icu.text.DecimalFormat#setPositiveSuffix(String)
+method:android.icu.text.DecimalFormat#getNegativeSuffix()
+method:android.icu.text.DecimalFormat#setNegativeSuffix(String)
+method:android.icu.text.DecimalFormat#isSignAlwaysShown()
+method:android.icu.text.DecimalFormat#setSignAlwaysShown(boolean)
+method:android.icu.text.DecimalFormat#getMultiplier()
+method:android.icu.text.DecimalFormat#setMultiplier(int)
+method:android.icu.text.DecimalFormat#getRoundingIncrement()
+method:android.icu.text.DecimalFormat#setRoundingIncrement(java.math.BigDecimal)
+method:android.icu.text.DecimalFormat#setRoundingIncrement(BigDecimal)
+method:android.icu.text.DecimalFormat#setRoundingIncrement(double)
+method:android.icu.text.DecimalFormat#getRoundingMode()
+method:android.icu.text.DecimalFormat#setRoundingMode(int)
+method:android.icu.text.DecimalFormat#getMathContext()
+method:android.icu.text.DecimalFormat#setMathContext(java.math.MathContext)
+method:android.icu.text.DecimalFormat#getMathContextICU()
+method:android.icu.text.DecimalFormat#setMathContextICU(MathContext)
+method:android.icu.text.DecimalFormat#getMinimumIntegerDigits()
+method:android.icu.text.DecimalFormat#setMinimumIntegerDigits(int)
+method:android.icu.text.DecimalFormat#getMaximumIntegerDigits()
+method:android.icu.text.DecimalFormat#setMaximumIntegerDigits(int)
+method:android.icu.text.DecimalFormat#getMinimumFractionDigits()
+method:android.icu.text.DecimalFormat#setMinimumFractionDigits(int)
+method:android.icu.text.DecimalFormat#getMaximumFractionDigits()
+method:android.icu.text.DecimalFormat#setMaximumFractionDigits(int)
+method:android.icu.text.DecimalFormat#areSignificantDigitsUsed()
+method:android.icu.text.DecimalFormat#setSignificantDigitsUsed(boolean)
+method:android.icu.text.DecimalFormat#getMinimumSignificantDigits()
+method:android.icu.text.DecimalFormat#setMinimumSignificantDigits(int)
+method:android.icu.text.DecimalFormat#getMaximumSignificantDigits()
+method:android.icu.text.DecimalFormat#setMaximumSignificantDigits(int)
+method:android.icu.text.DecimalFormat#getFormatWidth()
+method:android.icu.text.DecimalFormat#setFormatWidth(int)
+method:android.icu.text.DecimalFormat#getPadCharacter()
+method:android.icu.text.DecimalFormat#setPadCharacter(char)
+method:android.icu.text.DecimalFormat#getPadPosition()
+method:android.icu.text.DecimalFormat#setPadPosition(int)
+method:android.icu.text.DecimalFormat#isScientificNotation()
+method:android.icu.text.DecimalFormat#setScientificNotation(boolean)
+method:android.icu.text.DecimalFormat#getMinimumExponentDigits()
+method:android.icu.text.DecimalFormat#setMinimumExponentDigits(byte)
+method:android.icu.text.DecimalFormat#isExponentSignAlwaysShown()
+method:android.icu.text.DecimalFormat#setExponentSignAlwaysShown(boolean)
+method:android.icu.text.DecimalFormat#isGroupingUsed()
+method:android.icu.text.DecimalFormat#setGroupingUsed(boolean)
+method:android.icu.text.DecimalFormat#getGroupingSize()
+method:android.icu.text.DecimalFormat#setGroupingSize(int)
+method:android.icu.text.DecimalFormat#getSecondaryGroupingSize()
+method:android.icu.text.DecimalFormat#setSecondaryGroupingSize(int)
+method:android.icu.text.DecimalFormat#getMinimumGroupingDigits()
+method:android.icu.text.DecimalFormat#setMinimumGroupingDigits(int)
+method:android.icu.text.DecimalFormat#isDecimalSeparatorAlwaysShown()
+method:android.icu.text.DecimalFormat#setDecimalSeparatorAlwaysShown(boolean)
+method:android.icu.text.DecimalFormat#getCurrency()
+method:android.icu.text.DecimalFormat#setCurrency(Currency)
+method:android.icu.text.DecimalFormat#getCurrencyUsage()
+method:android.icu.text.DecimalFormat#setCurrencyUsage(CurrencyUsage)
+method:android.icu.text.DecimalFormat#getCurrencyPluralInfo()
+method:android.icu.text.DecimalFormat#setCurrencyPluralInfo(CurrencyPluralInfo)
+method:android.icu.text.DecimalFormat#isParseBigDecimal()
+method:android.icu.text.DecimalFormat#setParseBigDecimal(boolean)
+method:android.icu.text.DecimalFormat#getParseMaxDigits()
+method:android.icu.text.DecimalFormat#setParseMaxDigits(int)
+method:android.icu.text.DecimalFormat#isParseStrict()
+method:android.icu.text.DecimalFormat#setParseStrict(boolean)
+method:android.icu.text.DecimalFormat#isParseIntegerOnly()
+method:android.icu.text.DecimalFormat#setParseIntegerOnly(boolean)
+method:android.icu.text.DecimalFormat#isDecimalPatternMatchRequired()
+method:android.icu.text.DecimalFormat#setDecimalPatternMatchRequired(boolean)
+method:android.icu.text.DecimalFormat#isParseNoExponent()
+method:android.icu.text.DecimalFormat#setParseNoExponent(boolean)
+method:android.icu.text.DecimalFormat#isParseCaseSensitive()
+method:android.icu.text.DecimalFormat#setParseCaseSensitive(boolean)
+method:android.icu.text.DecimalFormat#equals(Object)
+method:android.icu.text.DecimalFormat#hashCode()
+method:android.icu.text.DecimalFormat#toString()
+method:android.icu.text.DecimalFormat#toPattern()
+method:android.icu.text.DecimalFormat#toLocalizedPattern()
+field:android.icu.text.DecimalFormat#PAD_BEFORE_PREFIX
+field:android.icu.text.DecimalFormat#PAD_AFTER_PREFIX
+field:android.icu.text.DecimalFormat#PAD_BEFORE_SUFFIX
+field:android.icu.text.DecimalFormat#PAD_AFTER_SUFFIX
+type:android.icu.text.TimeZoneNames
+type:android.icu.text.TimeZoneNames$NameType
+enumConstant:android.icu.text.TimeZoneNames$NameType#LONG_GENERIC
+enumConstant:android.icu.text.TimeZoneNames$NameType#LONG_STANDARD
+enumConstant:android.icu.text.TimeZoneNames$NameType#LONG_DAYLIGHT
+enumConstant:android.icu.text.TimeZoneNames$NameType#SHORT_GENERIC
+enumConstant:android.icu.text.TimeZoneNames$NameType#SHORT_STANDARD
+enumConstant:android.icu.text.TimeZoneNames$NameType#SHORT_DAYLIGHT
+enumConstant:android.icu.text.TimeZoneNames$NameType#EXEMPLAR_LOCATION
+method:android.icu.text.TimeZoneNames#getInstance(ULocale)
+method:android.icu.text.TimeZoneNames#getInstance(Locale)
+method:android.icu.text.TimeZoneNames#getTZDBInstance(ULocale)
+method:android.icu.text.TimeZoneNames#getAvailableMetaZoneIDs()
+method:android.icu.text.TimeZoneNames#getAvailableMetaZoneIDs(String)
+method:android.icu.text.TimeZoneNames#getMetaZoneID(String,long)
+method:android.icu.text.TimeZoneNames#getReferenceZoneID(String,String)
+method:android.icu.text.TimeZoneNames#getMetaZoneDisplayName(String,NameType)
+method:android.icu.text.TimeZoneNames#getDisplayName(String,NameType,long)
+method:android.icu.text.TimeZoneNames#getTimeZoneDisplayName(String,NameType)
+method:android.icu.text.TimeZoneNames#getExemplarLocationName(String)
+type:android.icu.text.AlphabeticIndex
+type:android.icu.text.AlphabeticIndex$ImmutableIndex
+method:android.icu.text.AlphabeticIndex$ImmutableIndex#getBucketCount()
+method:android.icu.text.AlphabeticIndex$ImmutableIndex#getBucketIndex(CharSequence)
+method:android.icu.text.AlphabeticIndex$ImmutableIndex#getBucket(int)
+method:android.icu.text.AlphabeticIndex$ImmutableIndex#iterator()
+method:android.icu.text.AlphabeticIndex#AlphabeticIndex(ULocale)
+method:android.icu.text.AlphabeticIndex#AlphabeticIndex(Locale)
+method:android.icu.text.AlphabeticIndex#AlphabeticIndex(RuleBasedCollator)
+method:android.icu.text.AlphabeticIndex#addLabels(UnicodeSet)
+method:android.icu.text.AlphabeticIndex#addLabels(ULocale...)
+method:android.icu.text.AlphabeticIndex#addLabels(Locale...)
+method:android.icu.text.AlphabeticIndex#setOverflowLabel(String)
+method:android.icu.text.AlphabeticIndex#getUnderflowLabel()
+method:android.icu.text.AlphabeticIndex#setUnderflowLabel(String)
+method:android.icu.text.AlphabeticIndex#getOverflowLabel()
+method:android.icu.text.AlphabeticIndex#setInflowLabel(String)
+method:android.icu.text.AlphabeticIndex#getInflowLabel()
+method:android.icu.text.AlphabeticIndex#getMaxLabelCount()
+method:android.icu.text.AlphabeticIndex#setMaxLabelCount(int)
+method:android.icu.text.AlphabeticIndex#buildImmutableIndex()
+method:android.icu.text.AlphabeticIndex#getBucketLabels()
+method:android.icu.text.AlphabeticIndex#getCollator()
+method:android.icu.text.AlphabeticIndex#addRecord(CharSequence,V)
+method:android.icu.text.AlphabeticIndex#getBucketIndex(CharSequence)
+method:android.icu.text.AlphabeticIndex#clearRecords()
+method:android.icu.text.AlphabeticIndex#getBucketCount()
+method:android.icu.text.AlphabeticIndex#getRecordCount()
+method:android.icu.text.AlphabeticIndex#iterator()
+type:android.icu.text.AlphabeticIndex$Record
+method:android.icu.text.AlphabeticIndex$Record#getName()
+method:android.icu.text.AlphabeticIndex$Record#getData()
+method:android.icu.text.AlphabeticIndex$Record#toString()
+type:android.icu.text.AlphabeticIndex$Bucket
+type:android.icu.text.AlphabeticIndex$Bucket$LabelType
+enumConstant:android.icu.text.AlphabeticIndex$Bucket$LabelType#NORMAL
+enumConstant:android.icu.text.AlphabeticIndex$Bucket$LabelType#UNDERFLOW
+enumConstant:android.icu.text.AlphabeticIndex$Bucket$LabelType#INFLOW
+enumConstant:android.icu.text.AlphabeticIndex$Bucket$LabelType#OVERFLOW
+method:android.icu.text.AlphabeticIndex$Bucket#getLabel()
+method:android.icu.text.AlphabeticIndex$Bucket#getLabelType()
+method:android.icu.text.AlphabeticIndex$Bucket#size()
+method:android.icu.text.AlphabeticIndex$Bucket#iterator()
+method:android.icu.text.AlphabeticIndex$Bucket#toString()
+type:android.icu.text.Bidi
+field:android.icu.text.Bidi#LEVEL_DEFAULT_LTR
+field:android.icu.text.Bidi#LEVEL_DEFAULT_RTL
+field:android.icu.text.Bidi#MAX_EXPLICIT_LEVEL
+field:android.icu.text.Bidi#LEVEL_OVERRIDE
+field:android.icu.text.Bidi#MAP_NOWHERE
+field:android.icu.text.Bidi#LTR
+field:android.icu.text.Bidi#RTL
+field:android.icu.text.Bidi#MIXED
+field:android.icu.text.Bidi#NEUTRAL
+field:android.icu.text.Bidi#KEEP_BASE_COMBINING
+field:android.icu.text.Bidi#DO_MIRRORING
+field:android.icu.text.Bidi#INSERT_LRM_FOR_NUMERIC
+field:android.icu.text.Bidi#REMOVE_BIDI_CONTROLS
+field:android.icu.text.Bidi#OUTPUT_REVERSE
+field:android.icu.text.Bidi#REORDER_DEFAULT
+field:android.icu.text.Bidi#REORDER_NUMBERS_SPECIAL
+field:android.icu.text.Bidi#REORDER_GROUP_NUMBERS_WITH_R
+field:android.icu.text.Bidi#REORDER_RUNS_ONLY
+field:android.icu.text.Bidi#REORDER_INVERSE_NUMBERS_AS_L
+field:android.icu.text.Bidi#REORDER_INVERSE_LIKE_DIRECT
+field:android.icu.text.Bidi#REORDER_INVERSE_FOR_NUMBERS_SPECIAL
+field:android.icu.text.Bidi#OPTION_DEFAULT
+field:android.icu.text.Bidi#OPTION_INSERT_MARKS
+field:android.icu.text.Bidi#OPTION_REMOVE_CONTROLS
+field:android.icu.text.Bidi#OPTION_STREAMING
+method:android.icu.text.Bidi#Bidi()
+method:android.icu.text.Bidi#Bidi(int,int)
+method:android.icu.text.Bidi#setInverse(boolean)
+method:android.icu.text.Bidi#isInverse()
+method:android.icu.text.Bidi#setReorderingMode(int)
+method:android.icu.text.Bidi#getReorderingMode()
+method:android.icu.text.Bidi#setReorderingOptions(int)
+method:android.icu.text.Bidi#getReorderingOptions()
+method:android.icu.text.Bidi#getBaseDirection(CharSequence)
+method:android.icu.text.Bidi#setContext(String,String)
+method:android.icu.text.Bidi#setPara(String,byte,byte[])
+method:android.icu.text.Bidi#setPara(char[],byte,byte[])
+method:android.icu.text.Bidi#setPara(AttributedCharacterIterator)
+method:android.icu.text.Bidi#orderParagraphsLTR(boolean)
+method:android.icu.text.Bidi#isOrderParagraphsLTR()
+method:android.icu.text.Bidi#getDirection()
+method:android.icu.text.Bidi#getTextAsString()
+method:android.icu.text.Bidi#getText()
+method:android.icu.text.Bidi#getLength()
+method:android.icu.text.Bidi#getProcessedLength()
+method:android.icu.text.Bidi#getResultLength()
+method:android.icu.text.Bidi#getParaLevel()
+method:android.icu.text.Bidi#countParagraphs()
+method:android.icu.text.Bidi#getParagraphByIndex(int)
+method:android.icu.text.Bidi#getParagraph(int)
+method:android.icu.text.Bidi#getParagraphIndex(int)
+method:android.icu.text.Bidi#setCustomClassifier(BidiClassifier)
+method:android.icu.text.Bidi#getCustomClassifier()
+method:android.icu.text.Bidi#getCustomizedClass(int)
+method:android.icu.text.Bidi#setLine(int,int)
+method:android.icu.text.Bidi#getLevelAt(int)
+method:android.icu.text.Bidi#getLevels()
+method:android.icu.text.Bidi#getLogicalRun(int)
+method:android.icu.text.Bidi#countRuns()
+method:android.icu.text.Bidi#getVisualRun(int)
+method:android.icu.text.Bidi#getVisualIndex(int)
+method:android.icu.text.Bidi#getLogicalIndex(int)
+method:android.icu.text.Bidi#getLogicalMap()
+method:android.icu.text.Bidi#getVisualMap()
+method:android.icu.text.Bidi#reorderLogical(byte[])
+method:android.icu.text.Bidi#reorderVisual(byte[])
+method:android.icu.text.Bidi#invertMap(int[])
+field:android.icu.text.Bidi#DIRECTION_LEFT_TO_RIGHT
+field:android.icu.text.Bidi#DIRECTION_RIGHT_TO_LEFT
+field:android.icu.text.Bidi#DIRECTION_DEFAULT_LEFT_TO_RIGHT
+field:android.icu.text.Bidi#DIRECTION_DEFAULT_RIGHT_TO_LEFT
+method:android.icu.text.Bidi#Bidi(String,int)
+method:android.icu.text.Bidi#Bidi(AttributedCharacterIterator)
+method:android.icu.text.Bidi#Bidi(char[],int,byte[],int,int,int)
+method:android.icu.text.Bidi#createLineBidi(int,int)
+method:android.icu.text.Bidi#isMixed()
+method:android.icu.text.Bidi#isLeftToRight()
+method:android.icu.text.Bidi#isRightToLeft()
+method:android.icu.text.Bidi#baseIsLeftToRight()
+method:android.icu.text.Bidi#getBaseLevel()
+method:android.icu.text.Bidi#getRunCount()
+method:android.icu.text.Bidi#getRunLevel(int)
+method:android.icu.text.Bidi#getRunStart(int)
+method:android.icu.text.Bidi#getRunLimit(int)
+method:android.icu.text.Bidi#requiresBidi(char[],int,int)
+method:android.icu.text.Bidi#reorderVisually(byte[],int,Object[],int,int)
+method:android.icu.text.Bidi#writeReordered(int)
+method:android.icu.text.Bidi#writeReverse(String,int)
+type:android.icu.text.LocaleDisplayNames
+type:android.icu.text.LocaleDisplayNames$DialectHandling
+enumConstant:android.icu.text.LocaleDisplayNames$DialectHandling#STANDARD_NAMES
+enumConstant:android.icu.text.LocaleDisplayNames$DialectHandling#DIALECT_NAMES
+method:android.icu.text.LocaleDisplayNames#getInstance(ULocale)
+method:android.icu.text.LocaleDisplayNames#getInstance(Locale)
+method:android.icu.text.LocaleDisplayNames#getInstance(ULocale,DialectHandling)
+method:android.icu.text.LocaleDisplayNames#getInstance(ULocale,DisplayContext...)
+method:android.icu.text.LocaleDisplayNames#getInstance(Locale,DisplayContext...)
+method:android.icu.text.LocaleDisplayNames#getLocale()
+method:android.icu.text.LocaleDisplayNames#getDialectHandling()
+method:android.icu.text.LocaleDisplayNames#getContext(DisplayContext.Type)
+method:android.icu.text.LocaleDisplayNames#localeDisplayName(ULocale)
+method:android.icu.text.LocaleDisplayNames#localeDisplayName(Locale)
+method:android.icu.text.LocaleDisplayNames#localeDisplayName(String)
+method:android.icu.text.LocaleDisplayNames#languageDisplayName(String)
+method:android.icu.text.LocaleDisplayNames#scriptDisplayName(String)
+method:android.icu.text.LocaleDisplayNames#scriptDisplayName(int)
+method:android.icu.text.LocaleDisplayNames#regionDisplayName(String)
+method:android.icu.text.LocaleDisplayNames#variantDisplayName(String)
+method:android.icu.text.LocaleDisplayNames#keyDisplayName(String)
+method:android.icu.text.LocaleDisplayNames#keyValueDisplayName(String,String)
+method:android.icu.text.LocaleDisplayNames#getUiList(Set<ULocale>,boolean,Comparator<Object>)
+method:android.icu.text.LocaleDisplayNames#getUiListCompareWholeItems(Set<ULocale>,Comparator<UiListItem>)
+type:android.icu.text.LocaleDisplayNames$UiListItem
+field:android.icu.text.LocaleDisplayNames$UiListItem#minimized
+field:android.icu.text.LocaleDisplayNames$UiListItem#modified
+field:android.icu.text.LocaleDisplayNames$UiListItem#nameInDisplayLocale
+field:android.icu.text.LocaleDisplayNames$UiListItem#nameInSelf
+method:android.icu.text.LocaleDisplayNames$UiListItem#UiListItem(ULocale,ULocale,String,String)
+method:android.icu.text.LocaleDisplayNames$UiListItem#equals(Object)
+method:android.icu.text.LocaleDisplayNames$UiListItem#hashCode()
+method:android.icu.text.LocaleDisplayNames$UiListItem#toString()
+method:android.icu.text.LocaleDisplayNames$UiListItem#getComparator(Comparator<Object>,boolean)
+type:android.icu.text.DateIntervalFormat
+type:android.icu.text.DateIntervalFormat$FormattedDateInterval
+method:android.icu.text.DateIntervalFormat$FormattedDateInterval#toString()
+method:android.icu.text.DateIntervalFormat$FormattedDateInterval#length()
+method:android.icu.text.DateIntervalFormat$FormattedDateInterval#charAt(int)
+method:android.icu.text.DateIntervalFormat$FormattedDateInterval#subSequence(int,int)
+method:android.icu.text.DateIntervalFormat$FormattedDateInterval#appendTo(A)
+method:android.icu.text.DateIntervalFormat$FormattedDateInterval#nextPosition(ConstrainedFieldPosition)
+method:android.icu.text.DateIntervalFormat$FormattedDateInterval#toCharacterIterator()
+method:android.icu.text.DateIntervalFormat#getInstance(String)
+method:android.icu.text.DateIntervalFormat#getInstance(String,Locale)
+method:android.icu.text.DateIntervalFormat#getInstance(String,ULocale)
+method:android.icu.text.DateIntervalFormat#getInstance(String,DateIntervalInfo)
+method:android.icu.text.DateIntervalFormat#getInstance(String,Locale,DateIntervalInfo)
+method:android.icu.text.DateIntervalFormat#getInstance(String,ULocale,DateIntervalInfo)
+method:android.icu.text.DateIntervalFormat#clone()
+method:android.icu.text.DateIntervalFormat#format(Object,StringBuffer,FieldPosition)
+method:android.icu.text.DateIntervalFormat#format(DateInterval,StringBuffer,FieldPosition)
+method:android.icu.text.DateIntervalFormat#formatToValue(DateInterval)
+method:android.icu.text.DateIntervalFormat#format(Calendar,Calendar,StringBuffer,FieldPosition)
+method:android.icu.text.DateIntervalFormat#formatToValue(Calendar,Calendar)
+method:android.icu.text.DateIntervalFormat#getDateIntervalInfo()
+method:android.icu.text.DateIntervalFormat#setDateIntervalInfo(DateIntervalInfo)
+method:android.icu.text.DateIntervalFormat#getTimeZone()
+method:android.icu.text.DateIntervalFormat#setTimeZone(TimeZone)
+method:android.icu.text.DateIntervalFormat#getDateFormat()
+type:android.icu.text.Collator
+field:android.icu.text.Collator#PRIMARY
+field:android.icu.text.Collator#SECONDARY
+field:android.icu.text.Collator#TERTIARY
+field:android.icu.text.Collator#QUATERNARY
+field:android.icu.text.Collator#IDENTICAL
+field:android.icu.text.Collator#FULL_DECOMPOSITION
+field:android.icu.text.Collator#NO_DECOMPOSITION
+field:android.icu.text.Collator#CANONICAL_DECOMPOSITION
+type:android.icu.text.Collator$ReorderCodes
+field:android.icu.text.Collator$ReorderCodes#DEFAULT
+field:android.icu.text.Collator$ReorderCodes#NONE
+field:android.icu.text.Collator$ReorderCodes#OTHERS
+field:android.icu.text.Collator$ReorderCodes#SPACE
+field:android.icu.text.Collator$ReorderCodes#FIRST
+field:android.icu.text.Collator$ReorderCodes#PUNCTUATION
+field:android.icu.text.Collator$ReorderCodes#SYMBOL
+field:android.icu.text.Collator$ReorderCodes#CURRENCY
+field:android.icu.text.Collator$ReorderCodes#DIGIT
+method:android.icu.text.Collator#equals(Object)
+method:android.icu.text.Collator#hashCode()
+method:android.icu.text.Collator#setStrength(int)
+method:android.icu.text.Collator#setDecomposition(int)
+method:android.icu.text.Collator#setReorderCodes(int...)
+method:android.icu.text.Collator#getInstance()
+method:android.icu.text.Collator#clone()
+method:android.icu.text.Collator#getInstance(ULocale)
+method:android.icu.text.Collator#getInstance(Locale)
+method:android.icu.text.Collator#getAvailableLocales()
+method:android.icu.text.Collator#getAvailableULocales()
+method:android.icu.text.Collator#getKeywords()
+method:android.icu.text.Collator#getKeywordValues(String)
+method:android.icu.text.Collator#getKeywordValuesForLocale(String,ULocale,boolean)
+method:android.icu.text.Collator#getFunctionalEquivalent(String,ULocale,boolean)
+method:android.icu.text.Collator#getFunctionalEquivalent(String,ULocale)
+method:android.icu.text.Collator#getDisplayName(Locale,Locale)
+method:android.icu.text.Collator#getDisplayName(ULocale,ULocale)
+method:android.icu.text.Collator#getDisplayName(Locale)
+method:android.icu.text.Collator#getDisplayName(ULocale)
+method:android.icu.text.Collator#getStrength()
+method:android.icu.text.Collator#getDecomposition()
+method:android.icu.text.Collator#equals(String,String)
+method:android.icu.text.Collator#getTailoredSet()
+method:android.icu.text.Collator#compare(String,String)
+method:android.icu.text.Collator#compare(Object,Object)
+method:android.icu.text.Collator#getCollationKey(String)
+method:android.icu.text.Collator#setMaxVariable(int)
+method:android.icu.text.Collator#getMaxVariable()
+method:android.icu.text.Collator#getVariableTop()
+method:android.icu.text.Collator#getVersion()
+method:android.icu.text.Collator#getUCAVersion()
+method:android.icu.text.Collator#getReorderCodes()
+method:android.icu.text.Collator#getEquivalentReorderCodes(int)
+method:android.icu.text.Collator#isFrozen()
+method:android.icu.text.Collator#freeze()
+method:android.icu.text.Collator#cloneAsThawed()
+method:android.icu.text.Collator#Collator()
+type:android.icu.text.MeasureFormat
+type:android.icu.text.MeasureFormat$FormatWidth
+enumConstant:android.icu.text.MeasureFormat$FormatWidth#WIDE
+enumConstant:android.icu.text.MeasureFormat$FormatWidth#SHORT
+enumConstant:android.icu.text.MeasureFormat$FormatWidth#NARROW
+enumConstant:android.icu.text.MeasureFormat$FormatWidth#NUMERIC
+method:android.icu.text.MeasureFormat#getInstance(ULocale,FormatWidth)
+method:android.icu.text.MeasureFormat#getInstance(Locale,FormatWidth)
+method:android.icu.text.MeasureFormat#getInstance(ULocale,FormatWidth,NumberFormat)
+method:android.icu.text.MeasureFormat#getInstance(Locale,FormatWidth,NumberFormat)
+method:android.icu.text.MeasureFormat#format(Object,StringBuffer,FieldPosition)
+method:android.icu.text.MeasureFormat#formatMeasures(Measure...)
+method:android.icu.text.MeasureFormat#formatMeasurePerUnit(Measure,MeasureUnit,StringBuilder,FieldPosition)
+method:android.icu.text.MeasureFormat#formatMeasures(StringBuilder,FieldPosition,Measure...)
+method:android.icu.text.MeasureFormat#getUnitDisplayName(MeasureUnit)
+method:android.icu.text.MeasureFormat#equals(Object)
+method:android.icu.text.MeasureFormat#hashCode()
+method:android.icu.text.MeasureFormat#getWidth()
+method:android.icu.text.MeasureFormat#getLocale()
+method:android.icu.text.MeasureFormat#getNumberFormat()
+method:android.icu.text.MeasureFormat#getCurrencyFormat(ULocale)
+method:android.icu.text.MeasureFormat#getCurrencyFormat(Locale)
+method:android.icu.text.MeasureFormat#getCurrencyFormat()
+type:android.icu.text.DisplayContext
+enumConstant:android.icu.text.DisplayContext#STANDARD_NAMES
+enumConstant:android.icu.text.DisplayContext#DIALECT_NAMES
+enumConstant:android.icu.text.DisplayContext#CAPITALIZATION_NONE
+enumConstant:android.icu.text.DisplayContext#CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE
+enumConstant:android.icu.text.DisplayContext#CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE
+enumConstant:android.icu.text.DisplayContext#CAPITALIZATION_FOR_UI_LIST_OR_MENU
+enumConstant:android.icu.text.DisplayContext#CAPITALIZATION_FOR_STANDALONE
+enumConstant:android.icu.text.DisplayContext#LENGTH_FULL
+enumConstant:android.icu.text.DisplayContext#LENGTH_SHORT
+enumConstant:android.icu.text.DisplayContext#SUBSTITUTE
+enumConstant:android.icu.text.DisplayContext#NO_SUBSTITUTE
+type:android.icu.text.DisplayContext$Type
+enumConstant:android.icu.text.DisplayContext$Type#DIALECT_HANDLING
+enumConstant:android.icu.text.DisplayContext$Type#CAPITALIZATION
+enumConstant:android.icu.text.DisplayContext$Type#DISPLAY_LENGTH
+enumConstant:android.icu.text.DisplayContext$Type#SUBSTITUTE_HANDLING
+method:android.icu.text.DisplayContext#type()
+method:android.icu.text.DisplayContext#value()
+type:android.icu.text.NumberingSystem
+field:android.icu.text.NumberingSystem#LATIN
+method:android.icu.text.NumberingSystem#NumberingSystem()
+method:android.icu.text.NumberingSystem#getInstance(int,boolean,String)
+method:android.icu.text.NumberingSystem#getInstance(Locale)
+method:android.icu.text.NumberingSystem#getInstance(ULocale)
+method:android.icu.text.NumberingSystem#getInstance()
+method:android.icu.text.NumberingSystem#getInstanceByName(String)
+method:android.icu.text.NumberingSystem#getAvailableNames()
+method:android.icu.text.NumberingSystem#isValidDigitString(String)
+method:android.icu.text.NumberingSystem#getRadix()
+method:android.icu.text.NumberingSystem#getDescription()
+method:android.icu.text.NumberingSystem#getName()
+method:android.icu.text.NumberingSystem#isAlgorithmic()
+type:android.icu.text.MessageFormat
+method:android.icu.text.MessageFormat#MessageFormat(String)
+method:android.icu.text.MessageFormat#MessageFormat(String,Locale)
+method:android.icu.text.MessageFormat#MessageFormat(String,ULocale)
+method:android.icu.text.MessageFormat#setLocale(Locale)
+method:android.icu.text.MessageFormat#setLocale(ULocale)
+method:android.icu.text.MessageFormat#getLocale()
+method:android.icu.text.MessageFormat#getULocale()
+method:android.icu.text.MessageFormat#applyPattern(String)
+method:android.icu.text.MessageFormat#applyPattern(String,MessagePattern.ApostropheMode)
+method:android.icu.text.MessageFormat#getApostropheMode()
+method:android.icu.text.MessageFormat#toPattern()
+method:android.icu.text.MessageFormat#setFormatsByArgumentIndex(Format[])
+method:android.icu.text.MessageFormat#setFormatsByArgumentName(Map<String,Format>)
+method:android.icu.text.MessageFormat#setFormats(Format[])
+method:android.icu.text.MessageFormat#setFormatByArgumentIndex(int,Format)
+method:android.icu.text.MessageFormat#setFormatByArgumentName(String,Format)
+method:android.icu.text.MessageFormat#setFormat(int,Format)
+method:android.icu.text.MessageFormat#getFormatsByArgumentIndex()
+method:android.icu.text.MessageFormat#getFormats()
+method:android.icu.text.MessageFormat#getArgumentNames()
+method:android.icu.text.MessageFormat#getFormatByArgumentName(String)
+method:android.icu.text.MessageFormat#format(Object[],StringBuffer,FieldPosition)
+method:android.icu.text.MessageFormat#format(Map<String,Object>,StringBuffer,FieldPosition)
+method:android.icu.text.MessageFormat#format(String,Object...)
+method:android.icu.text.MessageFormat#format(String,Map<String,Object>)
+method:android.icu.text.MessageFormat#usesNamedArguments()
+method:android.icu.text.MessageFormat#format(Object,StringBuffer,FieldPosition)
+method:android.icu.text.MessageFormat#formatToCharacterIterator(Object)
+method:android.icu.text.MessageFormat#parse(String,ParsePosition)
+method:android.icu.text.MessageFormat#parseToMap(String,ParsePosition)
+method:android.icu.text.MessageFormat#parse(String)
+method:android.icu.text.MessageFormat#parseToMap(String)
+method:android.icu.text.MessageFormat#parseObject(String,ParsePosition)
+method:android.icu.text.MessageFormat#clone()
+method:android.icu.text.MessageFormat#equals(Object)
+method:android.icu.text.MessageFormat#hashCode()
+type:android.icu.text.MessageFormat$Field
+method:android.icu.text.MessageFormat$Field#Field(String)
+method:android.icu.text.MessageFormat$Field#readResolve()
+field:android.icu.text.MessageFormat$Field#ARGUMENT
+method:android.icu.text.MessageFormat#autoQuoteApostrophe(String)
+type:android.icu.text.DecimalFormatSymbols
+method:android.icu.text.DecimalFormatSymbols#DecimalFormatSymbols()
+method:android.icu.text.DecimalFormatSymbols#DecimalFormatSymbols(Locale)
+method:android.icu.text.DecimalFormatSymbols#DecimalFormatSymbols(ULocale)
+method:android.icu.text.DecimalFormatSymbols#getInstance()
+method:android.icu.text.DecimalFormatSymbols#getInstance(Locale)
+method:android.icu.text.DecimalFormatSymbols#getInstance(ULocale)
+method:android.icu.text.DecimalFormatSymbols#forNumberingSystem(Locale,NumberingSystem)
+method:android.icu.text.DecimalFormatSymbols#forNumberingSystem(ULocale,NumberingSystem)
+method:android.icu.text.DecimalFormatSymbols#getAvailableLocales()
+method:android.icu.text.DecimalFormatSymbols#getZeroDigit()
+method:android.icu.text.DecimalFormatSymbols#getDigits()
+method:android.icu.text.DecimalFormatSymbols#setZeroDigit(char)
+method:android.icu.text.DecimalFormatSymbols#getDigitStrings()
+method:android.icu.text.DecimalFormatSymbols#setDigitStrings(String[])
+method:android.icu.text.DecimalFormatSymbols#getSignificantDigit()
+method:android.icu.text.DecimalFormatSymbols#setSignificantDigit(char)
+method:android.icu.text.DecimalFormatSymbols#getGroupingSeparator()
+method:android.icu.text.DecimalFormatSymbols#setGroupingSeparator(char)
+method:android.icu.text.DecimalFormatSymbols#getGroupingSeparatorString()
+method:android.icu.text.DecimalFormatSymbols#setGroupingSeparatorString(String)
+method:android.icu.text.DecimalFormatSymbols#getDecimalSeparator()
+method:android.icu.text.DecimalFormatSymbols#setDecimalSeparator(char)
+method:android.icu.text.DecimalFormatSymbols#getDecimalSeparatorString()
+method:android.icu.text.DecimalFormatSymbols#setDecimalSeparatorString(String)
+method:android.icu.text.DecimalFormatSymbols#getPerMill()
+method:android.icu.text.DecimalFormatSymbols#setPerMill(char)
+method:android.icu.text.DecimalFormatSymbols#getPerMillString()
+method:android.icu.text.DecimalFormatSymbols#setPerMillString(String)
+method:android.icu.text.DecimalFormatSymbols#getPercent()
+method:android.icu.text.DecimalFormatSymbols#setPercent(char)
+method:android.icu.text.DecimalFormatSymbols#getPercentString()
+method:android.icu.text.DecimalFormatSymbols#setPercentString(String)
+method:android.icu.text.DecimalFormatSymbols#getDigit()
+method:android.icu.text.DecimalFormatSymbols#setDigit(char)
+method:android.icu.text.DecimalFormatSymbols#getPatternSeparator()
+method:android.icu.text.DecimalFormatSymbols#setPatternSeparator(char)
+method:android.icu.text.DecimalFormatSymbols#getInfinity()
+method:android.icu.text.DecimalFormatSymbols#setInfinity(String)
+method:android.icu.text.DecimalFormatSymbols#getNaN()
+method:android.icu.text.DecimalFormatSymbols#setNaN(String)
+method:android.icu.text.DecimalFormatSymbols#getMinusSign()
+method:android.icu.text.DecimalFormatSymbols#setMinusSign(char)
+method:android.icu.text.DecimalFormatSymbols#getMinusSignString()
+method:android.icu.text.DecimalFormatSymbols#setMinusSignString(String)
+method:android.icu.text.DecimalFormatSymbols#getPlusSign()
+method:android.icu.text.DecimalFormatSymbols#setPlusSign(char)
+method:android.icu.text.DecimalFormatSymbols#getPlusSignString()
+method:android.icu.text.DecimalFormatSymbols#setPlusSignString(String)
+method:android.icu.text.DecimalFormatSymbols#getCurrencySymbol()
+method:android.icu.text.DecimalFormatSymbols#setCurrencySymbol(String)
+method:android.icu.text.DecimalFormatSymbols#getInternationalCurrencySymbol()
+method:android.icu.text.DecimalFormatSymbols#setInternationalCurrencySymbol(String)
+method:android.icu.text.DecimalFormatSymbols#getCurrency()
+method:android.icu.text.DecimalFormatSymbols#setCurrency(Currency)
+method:android.icu.text.DecimalFormatSymbols#getMonetaryDecimalSeparator()
+method:android.icu.text.DecimalFormatSymbols#setMonetaryDecimalSeparator(char)
+method:android.icu.text.DecimalFormatSymbols#getMonetaryDecimalSeparatorString()
+method:android.icu.text.DecimalFormatSymbols#setMonetaryDecimalSeparatorString(String)
+method:android.icu.text.DecimalFormatSymbols#getMonetaryGroupingSeparator()
+method:android.icu.text.DecimalFormatSymbols#setMonetaryGroupingSeparator(char)
+method:android.icu.text.DecimalFormatSymbols#getMonetaryGroupingSeparatorString()
+method:android.icu.text.DecimalFormatSymbols#setMonetaryGroupingSeparatorString(String)
+method:android.icu.text.DecimalFormatSymbols#getExponentMultiplicationSign()
+method:android.icu.text.DecimalFormatSymbols#setExponentMultiplicationSign(String)
+method:android.icu.text.DecimalFormatSymbols#getExponentSeparator()
+method:android.icu.text.DecimalFormatSymbols#setExponentSeparator(String)
+method:android.icu.text.DecimalFormatSymbols#getPadEscape()
+method:android.icu.text.DecimalFormatSymbols#setPadEscape(char)
+field:android.icu.text.DecimalFormatSymbols#CURRENCY_SPC_CURRENCY_MATCH
+field:android.icu.text.DecimalFormatSymbols#CURRENCY_SPC_SURROUNDING_MATCH
+field:android.icu.text.DecimalFormatSymbols#CURRENCY_SPC_INSERT
+method:android.icu.text.DecimalFormatSymbols#getPatternForCurrencySpacing(int,boolean)
+method:android.icu.text.DecimalFormatSymbols#setPatternForCurrencySpacing(int,boolean,String)
+method:android.icu.text.DecimalFormatSymbols#getLocale()
+method:android.icu.text.DecimalFormatSymbols#getULocale()
+method:android.icu.text.DecimalFormatSymbols#clone()
+method:android.icu.text.DecimalFormatSymbols#equals(Object)
+method:android.icu.text.DecimalFormatSymbols#hashCode()
+type:android.icu.text.UnicodeMatcher
+field:android.icu.text.UnicodeMatcher#U_MISMATCH
+field:android.icu.text.UnicodeMatcher#U_PARTIAL_MATCH
+field:android.icu.text.UnicodeMatcher#U_MATCH
+field:android.icu.text.UnicodeMatcher#ETHER
+method:android.icu.text.UnicodeMatcher#matches(Replaceable,int[],int,boolean)
+method:android.icu.text.UnicodeMatcher#toPattern(boolean)
+method:android.icu.text.UnicodeMatcher#matchesIndexValue(int)
+method:android.icu.text.UnicodeMatcher#addMatchSetTo(UnicodeSet)
+type:android.icu.text.BidiRun
+method:android.icu.text.BidiRun#getStart()
+method:android.icu.text.BidiRun#getLimit()
+method:android.icu.text.BidiRun#getLength()
+method:android.icu.text.BidiRun#getEmbeddingLevel()
+method:android.icu.text.BidiRun#isOddRun()
+method:android.icu.text.BidiRun#isEvenRun()
+method:android.icu.text.BidiRun#getDirection()
+method:android.icu.text.BidiRun#toString()
+type:android.icu.text.ListFormatter
+method:android.icu.text.ListFormatter#getInstance(ULocale)
+method:android.icu.text.ListFormatter#getInstance(Locale)
+method:android.icu.text.ListFormatter#getInstance()
+method:android.icu.text.ListFormatter#format(Object...)
+method:android.icu.text.ListFormatter#format(Collection<?>)
+method:android.icu.text.ListFormatter#getPatternForNumItems(int)
+type:android.icu.text.FormattedValue
+method:android.icu.text.FormattedValue#toString()
+method:android.icu.text.FormattedValue#appendTo(A)
+method:android.icu.text.FormattedValue#nextPosition(ConstrainedFieldPosition)
+method:android.icu.text.FormattedValue#toCharacterIterator()
+type:android.icu.text.UnicodeSetIterator
+field:android.icu.text.UnicodeSetIterator#IS_STRING
+field:android.icu.text.UnicodeSetIterator#codepoint
+field:android.icu.text.UnicodeSetIterator#codepointEnd
+field:android.icu.text.UnicodeSetIterator#string
+method:android.icu.text.UnicodeSetIterator#UnicodeSetIterator(UnicodeSet)
+method:android.icu.text.UnicodeSetIterator#UnicodeSetIterator()
+method:android.icu.text.UnicodeSetIterator#next()
+method:android.icu.text.UnicodeSetIterator#nextRange()
+method:android.icu.text.UnicodeSetIterator#reset(UnicodeSet)
+method:android.icu.text.UnicodeSetIterator#reset()
+method:android.icu.text.UnicodeSetIterator#getString()
+type:android.icu.text.SearchIterator
+field:android.icu.text.SearchIterator#breakIterator
+field:android.icu.text.SearchIterator#targetText
+field:android.icu.text.SearchIterator#matchLength
+field:android.icu.text.SearchIterator#DONE
+method:android.icu.text.SearchIterator#setIndex(int)
+method:android.icu.text.SearchIterator#setOverlapping(boolean)
+method:android.icu.text.SearchIterator#setBreakIterator(BreakIterator)
+method:android.icu.text.SearchIterator#setTarget(CharacterIterator)
+method:android.icu.text.SearchIterator#getMatchStart()
+method:android.icu.text.SearchIterator#getIndex()
+method:android.icu.text.SearchIterator#getMatchLength()
+method:android.icu.text.SearchIterator#getBreakIterator()
+method:android.icu.text.SearchIterator#getTarget()
+method:android.icu.text.SearchIterator#getMatchedText()
+method:android.icu.text.SearchIterator#next()
+method:android.icu.text.SearchIterator#previous()
+method:android.icu.text.SearchIterator#isOverlapping()
+method:android.icu.text.SearchIterator#reset()
+method:android.icu.text.SearchIterator#first()
+method:android.icu.text.SearchIterator#following(int)
+method:android.icu.text.SearchIterator#last()
+method:android.icu.text.SearchIterator#preceding(int)
+method:android.icu.text.SearchIterator#SearchIterator(CharacterIterator,BreakIterator)
+method:android.icu.text.SearchIterator#setMatchLength(int)
+method:android.icu.text.SearchIterator#handleNext(int)
+method:android.icu.text.SearchIterator#handlePrevious(int)
+type:android.icu.text.SearchIterator$ElementComparisonType
+enumConstant:android.icu.text.SearchIterator$ElementComparisonType#STANDARD_ELEMENT_COMPARISON
+enumConstant:android.icu.text.SearchIterator$ElementComparisonType#PATTERN_BASE_WEIGHT_IS_WILDCARD
+enumConstant:android.icu.text.SearchIterator$ElementComparisonType#ANY_BASE_WEIGHT_IS_WILDCARD
+method:android.icu.text.SearchIterator#setElementComparisonType(ElementComparisonType)
+method:android.icu.text.SearchIterator#getElementComparisonType()
+type:android.icu.text.Normalizer
+type:android.icu.text.Normalizer$QuickCheckResult
+field:android.icu.text.Normalizer#NO
+field:android.icu.text.Normalizer#YES
+field:android.icu.text.Normalizer#MAYBE
+field:android.icu.text.Normalizer#FOLD_CASE_DEFAULT
+field:android.icu.text.Normalizer#INPUT_IS_FCD
+field:android.icu.text.Normalizer#COMPARE_IGNORE_CASE
+field:android.icu.text.Normalizer#COMPARE_CODE_POINT_ORDER
+field:android.icu.text.Normalizer#FOLD_CASE_EXCLUDE_SPECIAL_I
+method:android.icu.text.Normalizer#compare(char[],int,int,char[],int,int,int)
+method:android.icu.text.Normalizer#compare(String,String,int)
+method:android.icu.text.Normalizer#compare(char[],char[],int)
+method:android.icu.text.Normalizer#compare(int,int,int)
+method:android.icu.text.Normalizer#compare(int,String,int)
+type:android.icu.text.StringPrepParseException
+field:android.icu.text.StringPrepParseException#INVALID_CHAR_FOUND
+field:android.icu.text.StringPrepParseException#ILLEGAL_CHAR_FOUND
+field:android.icu.text.StringPrepParseException#PROHIBITED_ERROR
+field:android.icu.text.StringPrepParseException#UNASSIGNED_ERROR
+field:android.icu.text.StringPrepParseException#CHECK_BIDI_ERROR
+field:android.icu.text.StringPrepParseException#STD3_ASCII_RULES_ERROR
+field:android.icu.text.StringPrepParseException#ACE_PREFIX_ERROR
+field:android.icu.text.StringPrepParseException#VERIFICATION_ERROR
+field:android.icu.text.StringPrepParseException#LABEL_TOO_LONG_ERROR
+field:android.icu.text.StringPrepParseException#BUFFER_OVERFLOW_ERROR
+field:android.icu.text.StringPrepParseException#ZERO_LENGTH_LABEL
+field:android.icu.text.StringPrepParseException#DOMAIN_NAME_TOO_LONG_ERROR
+method:android.icu.text.StringPrepParseException#StringPrepParseException(String,int)
+method:android.icu.text.StringPrepParseException#StringPrepParseException(String,int,String,int)
+method:android.icu.text.StringPrepParseException#StringPrepParseException(String,int,String,int,int)
+method:android.icu.text.StringPrepParseException#equals(Object)
+method:android.icu.text.StringPrepParseException#toString()
+method:android.icu.text.StringPrepParseException#getError()
+type:android.icu.text.CurrencyPluralInfo
+method:android.icu.text.CurrencyPluralInfo#CurrencyPluralInfo()
+method:android.icu.text.CurrencyPluralInfo#CurrencyPluralInfo(Locale)
+method:android.icu.text.CurrencyPluralInfo#CurrencyPluralInfo(ULocale)
+method:android.icu.text.CurrencyPluralInfo#getInstance()
+method:android.icu.text.CurrencyPluralInfo#getInstance(Locale)
+method:android.icu.text.CurrencyPluralInfo#getInstance(ULocale)
+method:android.icu.text.CurrencyPluralInfo#getPluralRules()
+method:android.icu.text.CurrencyPluralInfo#getCurrencyPluralPattern(String)
+method:android.icu.text.CurrencyPluralInfo#getLocale()
+method:android.icu.text.CurrencyPluralInfo#setPluralRules(String)
+method:android.icu.text.CurrencyPluralInfo#setCurrencyPluralPattern(String,String)
+method:android.icu.text.CurrencyPluralInfo#setLocale(ULocale)
+method:android.icu.text.CurrencyPluralInfo#clone()
+method:android.icu.text.CurrencyPluralInfo#equals(Object)
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/lang/UCharacter.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/lang/UCharacter.java.patch
index d7d9b7b..443861c 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/lang/UCharacter.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/lang/UCharacter.java.patch
@@ -1,5 +1,5 @@
---- android_icu4j/src/main/java/android/icu/lang/UCharacter.java	2020-04-30 14:29:35.324601232 +0100
-+++ android_icu4j/src/main/java/android/icu/lang/UCharacter.java	2020-04-30 14:30:04.016811269 +0100
+--- android_icu4j/src/main/java/android/icu/lang/UCharacter.java	2021-01-19 16:26:24.362648532 +0000
++++ android_icu4j/src/main/java/android/icu/lang/UCharacter.java	2021-01-19 16:26:50.790836134 +0000
 @@ -53,16 +53,6 @@
   * more convenient in Java to have a separate primitive datatype for them,
   * ints suffice in the meantime.
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/number/NumberFormatterSettings.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/number/NumberFormatterSettings.java.patch
index 6d2b0d8..249379e 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/number/NumberFormatterSettings.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/number/NumberFormatterSettings.java.patch
@@ -1,14 +1,26 @@
---- android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java	2020-04-30 14:29:38.736626213 +0100
-+++ android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java	2020-04-30 14:30:04.056811563 +0100
-@@ -129,15 +129,11 @@
+--- android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java	2021-01-19 16:26:27.166668436 +0000
++++ android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java	2021-01-19 16:26:50.834836446 +0000
+@@ -121,19 +121,10 @@
+      * NumberFormatter.with().unit(Currency.getInstance("USD"))
+      * </pre>
+      *
+-     * Percent:
+-     *
+-     * <pre>
+-     * NumberFormatter.with().unit(NoUnit.PERCENT)
+-     * </pre>
+-     *
       * <p>
       * See {@link #perUnit} for information on how to format strings like "5 meters per second".
       *
--     * <p>
+      * <p>
 -     * The default is to render without units (equivalent to {@link NoUnit#BASE}).
 -     *
-      * @param unit
-      *            The unit to render.
+-     * <p>
+      * If the input usage is correctly set the output unit <b>will change</b>
+      * according to `usage`, `locale` and `unit` value.
+      * </p>
+@@ -143,7 +134,6 @@
       * @return The fluent chain.
       * @see MeasureUnit
       * @see Currency
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/Collator.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/Collator.java.patch
index 869d7ab..3dd7eac 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/Collator.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/Collator.java.patch
@@ -1,5 +1,5 @@
---- android_icu4j/src/main/java/android/icu/text/Collator.java	2017-08-25 08:53:42.293862454 +0100
-+++ android_icu4j/src/main/java/android/icu/text/Collator.java	2017-08-25 08:54:12.293920887 +0100
+--- android_icu4j/src/main/java/android/icu/text/Collator.java	2021-01-19 16:26:21.858630757 +0000
++++ android_icu4j/src/main/java/android/icu/text/Collator.java	2021-01-19 16:26:50.870836702 +0000
 @@ -1228,7 +1228,6 @@
       *         CollationKey is returned.
       * @see CollationKey
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/CompactDecimalFormat.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/CompactDecimalFormat.java.patch
index b059215..3bb65a5 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/CompactDecimalFormat.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/CompactDecimalFormat.java.patch
@@ -1,5 +1,5 @@
---- android_icu4j/src/main/java/android/icu/text/CompactDecimalFormat.java	2018-08-21 18:04:13.950636392 +0100
-+++ android_icu4j/src/main/java/android/icu/text/CompactDecimalFormat.java	2018-08-21 18:03:41.790480466 +0100
+--- android_icu4j/src/main/java/android/icu/text/CompactDecimalFormat.java	2021-01-19 16:26:29.358683997 +0000
++++ android_icu4j/src/main/java/android/icu/text/CompactDecimalFormat.java	2021-01-19 16:26:50.898836901 +0000
 @@ -21,12 +21,6 @@
  /**
   * Formats numbers in compact (abbreviated) notation, like "1.2K" instead of "1200".
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/DateFormatSymbols.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/DateFormatSymbols.java.patch
index d7825b4..2384399 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/DateFormatSymbols.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/DateFormatSymbols.java.patch
@@ -1,5 +1,5 @@
---- android_icu4j/src/main/java/android/icu/text/DateFormatSymbols.java	2020-10-12 21:27:50.716531274 +0100
-+++ android_icu4j/src/main/java/android/icu/text/DateFormatSymbols.java	2020-10-12 21:28:12.040685336 +0100
+--- android_icu4j/src/main/java/android/icu/text/DateFormatSymbols.java	2021-01-19 16:26:29.486684905 +0000
++++ android_icu4j/src/main/java/android/icu/text/DateFormatSymbols.java	2021-01-19 16:26:50.926837099 +0000
 @@ -81,7 +81,6 @@
   *
   * @see          DateFormat
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/DateTimePatternGenerator.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/DateTimePatternGenerator.java.patch
index e828da1..50eb639 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/DateTimePatternGenerator.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/DateTimePatternGenerator.java.patch
@@ -1,6 +1,6 @@
---- android_icu4j/src/main/java/android/icu/text/DateTimePatternGenerator.java	2021-01-05 17:00:09.445888443 +0000
-+++ android_icu4j/src/main/java/android/icu/text/DateTimePatternGenerator.java	2021-01-05 17:00:31.878035651 +0000
-@@ -1303,7 +1303,6 @@
+--- android_icu4j/src/main/java/android/icu/text/DateTimePatternGenerator.java	2021-01-19 16:26:28.130675279 +0000
++++ android_icu4j/src/main/java/android/icu/text/DateTimePatternGenerator.java	2021-01-19 16:26:50.958837327 +0000
+@@ -1326,7 +1326,6 @@
       *
       * @param field The index to get the append item name.
       * @return name for field
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/DecimalFormat.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/DecimalFormat.java.patch
index 18f186e..1126f74 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/DecimalFormat.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/DecimalFormat.java.patch
@@ -1,5 +1,5 @@
---- android_icu4j/src/main/java/android/icu/text/DecimalFormat.java	2021-01-05 16:28:13.777295016 +0000
-+++ android_icu4j/src/main/java/android/icu/text/DecimalFormat.java	2021-01-05 16:28:33.737426208 +0000
+--- android_icu4j/src/main/java/android/icu/text/DecimalFormat.java	2021-01-19 16:26:29.614685814 +0000
++++ android_icu4j/src/main/java/android/icu/text/DecimalFormat.java	2021-01-19 16:26:50.998837611 +0000
 @@ -43,12 +43,6 @@
  /**
   * <strong>[icu enhancement]</strong> ICU's replacement for {@link java.text.DecimalFormat}.&nbsp;Methods, fields, and other functionality specific to ICU are labeled '<strong>[icu]</strong>'.
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/DecimalFormatSymbols.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/DecimalFormatSymbols.java.patch
index 44489e7..11acaff 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/DecimalFormatSymbols.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/DecimalFormatSymbols.java.patch
@@ -1,5 +1,5 @@
---- android_icu4j/src/main/java/android/icu/text/DecimalFormatSymbols.java	2021-01-05 16:28:14.449299433 +0000
-+++ android_icu4j/src/main/java/android/icu/text/DecimalFormatSymbols.java	2021-01-05 16:28:33.769426418 +0000
+--- android_icu4j/src/main/java/android/icu/text/DecimalFormatSymbols.java	2021-01-19 16:26:30.314690782 +0000
++++ android_icu4j/src/main/java/android/icu/text/DecimalFormatSymbols.java	2021-01-19 16:26:51.034837866 +0000
 @@ -200,7 +200,6 @@
      /**
       * Returns the character used for zero. Different for Arabic, etc.
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/Edits.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/Edits.java.patch
index 3264441..10ae219 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/Edits.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/Edits.java.patch
@@ -1,5 +1,5 @@
---- android_icu4j/src/main/java/android/icu/text/Edits.java	2018-10-22 05:12:27.128614515 +0100
-+++ android_icu4j/src/main/java/android/icu/text/Edits.java	2018-10-22 05:12:45.632675685 +0100
+--- android_icu4j/src/main/java/android/icu/text/Edits.java	2021-01-19 16:26:28.618678744 +0000
++++ android_icu4j/src/main/java/android/icu/text/Edits.java	2021-01-19 16:26:51.066838093 +0000
 @@ -49,8 +49,7 @@
   * <p>
   * The "fine changes" and "coarse changes" iterators will step through only the change edits when their
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/MeasureFormat.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/MeasureFormat.java.patch
index dab957a..962d469 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/MeasureFormat.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/MeasureFormat.java.patch
@@ -1,5 +1,5 @@
---- android_icu4j/src/main/java/android/icu/text/MeasureFormat.java	2021-01-05 16:28:14.205297829 +0000
-+++ android_icu4j/src/main/java/android/icu/text/MeasureFormat.java	2021-01-05 16:28:33.829426812 +0000
+--- android_icu4j/src/main/java/android/icu/text/MeasureFormat.java	2021-01-19 16:26:30.074689079 +0000
++++ android_icu4j/src/main/java/android/icu/text/MeasureFormat.java	2021-01-19 16:26:51.098838321 +0000
 @@ -61,12 +61,6 @@
   * A formatter for Measure objects.
   *
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/MessageFormat.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/MessageFormat.java.patch
index c117e39..42f169d 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/MessageFormat.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/MessageFormat.java.patch
@@ -1,5 +1,5 @@
---- android_icu4j/src/main/java/android/icu/text/MessageFormat.java	2019-12-18 23:17:58.070206945 +0000
-+++ android_icu4j/src/main/java/android/icu/text/MessageFormat.java	2019-12-18 23:18:19.478279221 +0000
+--- android_icu4j/src/main/java/android/icu/text/MessageFormat.java	2021-01-19 16:26:30.210690045 +0000
++++ android_icu4j/src/main/java/android/icu/text/MessageFormat.java	2021-01-19 16:26:51.134838576 +0000
 @@ -124,7 +124,7 @@
   * argNumber = '0' | ('1'..'9' ('0'..'9')*)
   *
@@ -65,7 +65,7 @@
 - * or preformatted values, but not pattern strings or custom format objects.</p>
 - *
 - * <p>For more details, see the
-- * <a href="http://userguide.icu-project.org/formatparse/messages">ICU User Guide</a>.</p>
+- * <a href="https://unicode-org.github.io/icu/userguide/format_parse/messages">ICU User Guide</a>.</p>
   *
   * <h4>Usage Information</h4>
   *
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/Normalizer.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/Normalizer.java.patch
index 8a00a9f..babd5da 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/Normalizer.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/Normalizer.java.patch
@@ -1,5 +1,5 @@
---- android_icu4j/src/main/java/android/icu/text/Normalizer.java	2021-01-05 16:28:14.721301221 +0000
-+++ android_icu4j/src/main/java/android/icu/text/Normalizer.java	2021-01-05 16:28:33.893427233 +0000
+--- android_icu4j/src/main/java/android/icu/text/Normalizer.java	2021-01-19 16:26:30.646693139 +0000
++++ android_icu4j/src/main/java/android/icu/text/Normalizer.java	2021-01-19 16:26:51.170838831 +0000
 @@ -1178,9 +1178,6 @@
       *
       *
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/NumberFormat.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/NumberFormat.java.patch
index 5cc04b8..d658344 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/NumberFormat.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/NumberFormat.java.patch
@@ -1,5 +1,5 @@
---- android_icu4j/src/main/java/android/icu/text/NumberFormat.java	2018-10-19 11:01:09.353895065 +0100
-+++ android_icu4j/src/main/java/android/icu/text/NumberFormat.java	2018-10-19 11:01:28.681998885 +0100
+--- android_icu4j/src/main/java/android/icu/text/NumberFormat.java	2021-01-19 16:26:28.450677551 +0000
++++ android_icu4j/src/main/java/android/icu/text/NumberFormat.java	2021-01-19 16:26:51.202839058 +0000
 @@ -39,7 +39,7 @@
   *
   * <p>
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/RuleBasedCollator.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/RuleBasedCollator.java.patch
index 15be380..293095a 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/RuleBasedCollator.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/RuleBasedCollator.java.patch
@@ -1,5 +1,5 @@
---- android_icu4j/src/main/java/android/icu/text/RuleBasedCollator.java	2018-10-22 05:12:21.640596372 +0100
-+++ android_icu4j/src/main/java/android/icu/text/RuleBasedCollator.java	2018-10-22 05:12:45.764676121 +0100
+--- android_icu4j/src/main/java/android/icu/text/RuleBasedCollator.java	2021-01-19 16:26:21.610628997 +0000
++++ android_icu4j/src/main/java/android/icu/text/RuleBasedCollator.java	2021-01-19 16:26:51.238839314 +0000
 @@ -925,6 +925,9 @@
       * Gets the collation tailoring rules for this RuleBasedCollator.
       * Equivalent to String getRules(false).
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/Transliterator.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/Transliterator.java.patch
index 173abb2..83e8a22 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/Transliterator.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/Transliterator.java.patch
@@ -1,5 +1,5 @@
---- android_icu4j/src/main/java/android/icu/text/Transliterator.java	2018-11-09 19:42:31.006222883 +0000
-+++ android_icu4j/src/main/java/android/icu/text/Transliterator.java	2018-11-09 19:42:48.586308127 +0000
+--- android_icu4j/src/main/java/android/icu/text/Transliterator.java	2021-01-19 16:26:30.934695184 +0000
++++ android_icu4j/src/main/java/android/icu/text/Transliterator.java	2021-01-19 16:26:51.270839541 +0000
 @@ -181,19 +181,6 @@
   * returned by {@link #getDisplayName}.
   *
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/UnicodeFilter.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/UnicodeFilter.java.patch
index 73bdb79..370a0cf 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/UnicodeFilter.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/text/UnicodeFilter.java.patch
@@ -1,5 +1,5 @@
---- android_icu4j/src/main/java/android/icu/text/UnicodeFilter.java	2017-08-25 08:53:49.789877053 +0100
-+++ android_icu4j/src/main/java/android/icu/text/UnicodeFilter.java	2017-08-25 08:54:12.409921113 +0100
+--- android_icu4j/src/main/java/android/icu/text/UnicodeFilter.java	2021-01-19 16:26:28.466677664 +0000
++++ android_icu4j/src/main/java/android/icu/text/UnicodeFilter.java	2021-01-19 16:26:51.298839740 +0000
 @@ -12,10 +12,6 @@
  /**
   * <code>UnicodeFilter</code> defines a protocol for selecting a
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/Calendar.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/Calendar.java.patch
index 3dc1ebb..7f9ebe2 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/Calendar.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/Calendar.java.patch
@@ -1,6 +1,6 @@
---- android_icu4j/src/main/java/android/icu/util/Calendar.java	2019-09-13 12:40:42.633490639 +0100
-+++ android_icu4j/src/main/java/android/icu/util/Calendar.java	2019-09-13 12:41:03.625568074 +0100
-@@ -4477,8 +4477,6 @@
+--- android_icu4j/src/main/java/android/icu/util/Calendar.java	2021-01-19 16:26:22.958638565 +0000
++++ android_icu4j/src/main/java/android/icu/util/Calendar.java	2021-01-19 16:26:51.334839996 +0000
+@@ -4516,8 +4516,6 @@
       * @param date the date and time
       * @return true if the given date and time is part of the
       * weekend
@@ -9,7 +9,7 @@
       * @see #isWeekend()
       */
      public boolean isWeekend(Date date) {
-@@ -4491,8 +4489,6 @@
+@@ -4530,8 +4528,6 @@
       * this calendar system.
       * @return true if the given date and time is part of the
       * weekend
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/IslamicCalendar.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/IslamicCalendar.java.patch
index c908cd3..1d9e334 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/IslamicCalendar.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/IslamicCalendar.java.patch
@@ -1,5 +1,5 @@
---- android_icu4j/src/main/java/android/icu/util/IslamicCalendar.java	2017-08-25 08:53:44.225866216 +0100
-+++ android_icu4j/src/main/java/android/icu/util/IslamicCalendar.java	2017-08-25 08:54:12.453921200 +0100
+--- android_icu4j/src/main/java/android/icu/util/IslamicCalendar.java	2021-01-19 16:26:23.566642882 +0000
++++ android_icu4j/src/main/java/android/icu/util/IslamicCalendar.java	2021-01-19 16:26:51.374840280 +0000
 @@ -67,12 +67,7 @@
   * Like the Islamic religious calendar, <em>Umm al-Qura</em> is also based
   * on the sighting method of the crescent moon but is standardized by Saudi Arabia.
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/TimeUnit.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/TimeUnit.java.patch
index 1f36499..2894692 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/TimeUnit.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/TimeUnit.java.patch
@@ -1,5 +1,5 @@
---- android_icu4j/src/main/java/android/icu/util/TimeUnit.java	2017-08-25 08:53:42.697863240 +0100
-+++ android_icu4j/src/main/java/android/icu/util/TimeUnit.java	2017-08-25 08:54:12.473921238 +0100
+--- android_icu4j/src/main/java/android/icu/util/TimeUnit.java	2021-01-19 16:26:22.286633795 +0000
++++ android_icu4j/src/main/java/android/icu/util/TimeUnit.java	2021-01-19 16:26:51.406840507 +0000
 @@ -15,7 +15,6 @@
  
  /**
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/TimeZone.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/TimeZone.java.patch
index b26cea2..20302c2 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/TimeZone.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/TimeZone.java.patch
@@ -1,5 +1,5 @@
---- android_icu4j/src/main/java/android/icu/util/TimeZone.java	2019-09-13 12:40:44.041495833 +0100
-+++ android_icu4j/src/main/java/android/icu/util/TimeZone.java	2019-09-13 12:41:03.733568473 +0100
+--- android_icu4j/src/main/java/android/icu/util/TimeZone.java	2021-01-19 16:26:23.434641944 +0000
++++ android_icu4j/src/main/java/android/icu/util/TimeZone.java	2021-01-19 16:26:51.434840706 +0000
 @@ -83,35 +83,8 @@
   * Time" and "China Standard Time"), and the Java platform can then only
   * recognize one of them.
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/ULocale.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/ULocale.java.patch
index 7e6cc8e..d998b91 100644
--- a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/ULocale.java.patch
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/util/ULocale.java.patch
@@ -1,6 +1,6 @@
---- android_icu4j/src/main/java/android/icu/util/ULocale.java	2021-01-15 00:55:05.517299805 +0000
-+++ android_icu4j/src/main/java/android/icu/util/ULocale.java	2021-01-15 00:55:35.677492769 +0000
-@@ -88,19 +88,6 @@
+--- android_icu4j/src/main/java/android/icu/util/ULocale.java	2021-01-19 16:26:23.266640752 +0000
++++ android_icu4j/src/main/java/android/icu/util/ULocale.java	2021-01-19 16:26:51.470840961 +0000
+@@ -93,19 +93,6 @@
   * to canonical form, or the <code>canonicalInstance</code> factory method
   * can be called.
   *
@@ -20,7 +20,7 @@
   * <p>Note: The <i>actual</i> locale is returned correctly, but the <i>valid</i>
   * locale is not, in most cases.
   *
-@@ -797,8 +784,7 @@
+@@ -795,8 +782,7 @@
       * <strong>[icu] Note:</strong> Unlike the Locale API, this returns an array of <code>ULocale</code>,
       * not <code>Locale</code>.
       *
@@ -30,7 +30,7 @@
       */
      public static ULocale[] getAvailableLocales() {
          return ICUResourceBundle.getAvailableULocales().clone();
-@@ -2012,15 +1998,11 @@
+@@ -2307,15 +2293,11 @@
       * availableLocales matched).  No ULocale array element should be null; behavior is
       * undefined if this is the case.
       *
@@ -46,7 +46,7 @@
       */
      public static ULocale acceptLanguage(String acceptLanguageList, ULocale[] availableLocales,
              boolean[] fallback) {
-@@ -2057,14 +2039,11 @@
+@@ -2352,14 +2334,11 @@
       * locale was used as a fallback (because nothing else in availableLocales matched).
       * No ULocale array element should be null; behavior is undefined if this is the case.
       *
@@ -61,7 +61,7 @@
       */
  
      public static ULocale acceptLanguage(ULocale[] acceptLanguageList, ULocale[] availableLocales,
-@@ -2103,15 +2082,11 @@
+@@ -2398,15 +2377,11 @@
       * undefined if this is the case.  This function will choose a locale from the
       * ULocale.getAvailableLocales() list as available.
       *
@@ -77,7 +77,7 @@
       */
      public static ULocale acceptLanguage(String acceptLanguageList, boolean[] fallback) {
          return acceptLanguage(acceptLanguageList, ULocale.getAvailableLocales(),
-@@ -2129,13 +2104,10 @@
+@@ -2424,13 +2399,10 @@
       * undefined if this is the case.  This function will choose a locale from the
       * ULocale.getAvailableLocales() list as available.
       *
diff --git a/tools/updatecldrdata.py b/tools/updatecldrdata.py
index 6212aad..10b169d 100755
--- a/tools/updatecldrdata.py
+++ b/tools/updatecldrdata.py
@@ -16,6 +16,10 @@
 # Run with no arguments from any directory, with no special setup required.
 # See icu4c/source/data/cldr-icu-readme.txt for the upstream ICU instructions.
 def main():
+  if subprocess.call(["which", "mvn"]) != 0 or subprocess.call(["which", "ant"]) != 0:
+    print("Can't find the required tools. Run `sudo apt-get install maven ant` to install")
+    exit(1)
+
   cldr_dir = icuutil.cldrDir()
   print('Found cldr in %s ...' % cldr_dir)
   icu_dir = icuutil.icuDir()
@@ -45,111 +49,70 @@
 
   # This is the location of the original CLDR source tree (not the temporary
   # copy of the tools source code) from where the data files are to be read:
-  os.environ['CLDR_DIR'] = cldr_build_dir #os.path.join(os.getcwd(), 'cldr')
+  os.environ['CLDR_DIR'] = cldr_build_dir  # os.path.join(os.getcwd(), 'cldr')
 
   os.environ['ICU4C_ROOT'] = icu4c_build_dir
   os.environ['ICU4J_ROOT'] = icu4j_build_dir
-  os.environ['TOOLS_ROOT'] = os.path.join(icu_dir, 'tools')
+  os.environ['TOOLS_ROOT'] = icu_tools_build_dir
   cldr_tmp_dir = os.path.join(build_dir, 'cldr-staging')
   os.environ['CLDR_TMP_DIR'] = cldr_tmp_dir
 
-  print('Building CLDR tools ...')
-  os.chdir(os.path.join(cldr_build_dir, 'tools', 'java'))
-  subprocess.check_call(['ant', 'clean'])
-  subprocess.check_call(['ant', 'all'])
-  subprocess.check_call(['ant', 'jar'])
+  icu_tools_cldr_dir = os.path.join(icu_tools_build_dir, 'cldr')
+  print('Installing CLDR tools ...')
+  os.chdir(icu_tools_cldr_dir)
+  subprocess.check_call(['ant', 'install-cldr-libs'])
 
-  # As per tools/cldr/cldr-to-icu/lib/README.txt we need to ensure local maven
-  # repository contains both cldr.jar and utilities.jar
-  icu_tools_lib_dir = os.path.join(icu_tools_build_dir, 'cldr', 'cldr-to-icu', 'lib')
-  cldr_jar = os.path.join(cldr_build_dir, 'tools', 'java', 'cldr.jar')
-  utilities_jar = os.path.join(cldr_build_dir, 'tools', 'java', 'libs', 'utilities.jar')
-
-  os.chdir(icu_tools_lib_dir)
-  subprocess.check_call([
-    'mvn',
-    'install:install-file',
-    '-DgroupId=org.unicode.cldr',
-    '-DartifactId=cldr-api',
-    '-Dversion=0.1-SNAPSHOT',
-    '-Dpackaging=jar',
-    '-DgeneratePom=true',
-    '-DlocalRepositoryPath=.',
-    '-Dfile={cldr_jar}'.format(cldr_jar=cldr_jar)
-  ])
-
-  subprocess.check_call([
-      'mvn',
-      'install:install-file',
-      '-DgroupId=com.ibm.icu',
-      '-DartifactId=icu-utilities',
-      '-Dversion=0.1-SNAPSHOT',
-      '-Dpackaging=jar',
-      '-DgeneratePom=true',
-      '-DlocalRepositoryPath=.',
-      '-Dfile={utilities_jar}'.format(utilities_jar=utilities_jar)
-  ])
-
-  os.chdir(os.path.join(icu_tools_build_dir, 'cldr', 'cldr-to-icu'))
-  subprocess.check_call([
-      'mvn',
-      'dependency:purge-local-repository',
-      '-DsnapshotsOnly=true'
-  ])
-
+  print('Building ICU data...')
   icu4c_data_build_dir = os.path.join(icu4c_build_dir, 'source/data')
   os.chdir(icu4c_data_build_dir)
   subprocess.check_call(['ant', 'cleanprod'])
   subprocess.check_call(['ant', 'setup'])
   subprocess.check_call(['ant', 'proddata'])
 
-  os.chdir(os.path.join(icu_tools_build_dir, 'cldr', 'cldr-to-icu'))
-
-  cldr_production_data_build_dir = os.path.join(build_dir, 'proddata')
-  os.mkdir(cldr_production_data_build_dir)
-
   # Finally we "compile" CLDR-data to a "production" form and place it in ICU
-  # Temporarily redefining CLDR_DIR per cldr-icu-readme.txt
-  build_production_data_env = os.environ.copy()
-  build_production_data_env["CLDR_DIR"] = os.path.join(cldr_tmp_dir, 'production')
+  os.chdir(os.path.join(icu_tools_build_dir, 'cldr', 'cldr-to-icu'))
+  cldr_production_tmp_dir = os.path.join(cldr_tmp_dir, 'production')
   subprocess.check_call([
-      'ant',
-      '-f',
-      'build-icu-data.xml',
-      '-DoutDir=' + cldr_production_data_build_dir,
-      '-DincludePseudoLocales=true'
-  ], env=build_production_data_env)
+    'ant',
+    '-f',
+    'build-icu-data.xml',
+    '-DcldrDataDir=' + cldr_production_tmp_dir,
+    '-DforceDelete=true',
+    '-DincludePseudoLocales=true'
+  ])
 
+  os.chdir(icu_tools_cldr_dir)
+  subprocess.check_call([
+    'ant',
+    'copy-cldr-testdata',
+  ])
+
+  # Copy the generated data files from the temporary directory into AOSP.
   icu4c_data_source_dir = os.path.join(icu_dir, 'icu4c/source/data')
-  subprocess.check_call([
-      'rsync',
-      '-a',
-      '{src}/'.format(src=cldr_production_data_build_dir),
-      '{dst}'.format(dst=icu4c_data_source_dir)
-  ])
+  rmAndCopyTree(icu4c_data_build_dir, icu4c_data_source_dir)
+  rmAndCopyTree(
+    os.path.join(icu4c_build_dir, 'source/test/testdata/cldr'),
+    os.path.join(icu_dir, 'icu4c/source/test/testdata/cldr'))
+  rmAndCopyTree(
+    os.path.join(icu4j_build_dir, 'main/tests/core/src/com/ibm/icu/dev/data/cldr'),
+    os.path.join(icu_dir, 'icu4j/main/tests/core/src/com/ibm/icu/dev/data/cldr'))
 
-  # Generate icu4c/source/data/misc/langInfo.txt by a ICU4J tool
-  langInfo_dst_path =  os.path.join(icu4c_data_source_dir, 'misc', 'langInfo.txt')
-  print('Building %s' % langInfo_dst_path)
-  langInfo_out_path = '/tmp/langInfo.txt' # path hardcoded in the LocaleDistanceBuilder tool
-  if os.path.exists(langInfo_out_path):
-    os.remove(langInfo_out_path)
-
-  os.chdir(icu4j_build_dir)
-  subprocess.check_call(['ant', 'icu4jJar'])
-  os.chdir(os.path.join(icu4j_build_dir, 'tools', 'misc'))
-  subprocess.check_call(['ant', 'jar'])
-  subprocess.check_call([
-      'java',
-      '-cp',
-      'out/lib/icu4j-tools.jar:../../icu4j.jar',
-      'com.ibm.icu.dev.tool.locale.LocaleDistanceBuilder',
-  ])
-  print('Copying {src} to {dst}'.format(src=langInfo_out_path, dst=langInfo_dst_path))
-  shutil.copyfile(langInfo_out_path, langInfo_dst_path)
+  localeCanonicalization_src = os.path.join(
+    cldr_production_tmp_dir, 'common/testData/localeIdentifiers/localeCanonicalization.txt')
+  shutil.copy(localeCanonicalization_src, os.path.join(
+    icu_dir, 'icu4c/source/test/testdata/localeCanonicalization.txt'))
+  shutil.copy(localeCanonicalization_src, os.path.join(
+    icu_dir, 'icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode/localeCanonicalization.txt'))
 
   print('Look in %s for new data source files' % icu4c_data_source_dir)
   sys.exit(0)
 
+
+def rmAndCopyTree(src, dst):
+  if os.path.exists(dst):
+    shutil.rmtree(dst)
+  shutil.copytree(src, dst)
+
+
 if __name__ == '__main__':
   main()
diff --git a/tools/updateicudata.py b/tools/updateicudata.py
index 01122c1..1757619 100755
--- a/tools/updateicudata.py
+++ b/tools/updateicudata.py
@@ -13,18 +13,29 @@
 
 # Run with no arguments from any directory, with no special setup required.
 def main():
-  i18nutil.SwitchToNewTemporaryDirectory()
-  icu_build_dir = '%s/icu' % os.getcwd()
-
   icu_dir = icuutil.icuDir()
   print('Found icu in %s ...' % icu_dir)
 
+  makeIcuDataFiles()
+
+  # if icu4c/source/data/misc/langInfo.txt is re-generated, the binary data files need to be
+  # re-generated. makeIcuDataFiles() are called until it coverages because the re-generation
+  # depends icu4j, and icu4j depends on the bigit nary data files.
+  while (icuutil.RequiredToMakeLangInfo()):
+    makeIcuDataFiles()
+
+
+  print('Look in %s for new data files' % icu_dir)
+  sys.exit(0)
+
+def makeIcuDataFiles():
+  i18nutil.SwitchToNewTemporaryDirectory()
+  icu_build_dir = '%s/icu' % os.getcwd()
+
   icuutil.PrepareIcuBuild(icu_build_dir)
 
   icuutil.MakeAndCopyIcuDataFiles(icu_build_dir)
 
-  print('Look in %s for new data files' % icu_dir)
-  sys.exit(0)
 
 if __name__ == '__main__':
   main()